diff --git a/.github/workflows/snapshot-build.yml b/.github/workflows/snapshot-build.yml index 077d93ff6e..713802c4ad 100644 --- a/.github/workflows/snapshot-build.yml +++ b/.github/workflows/snapshot-build.yml @@ -161,30 +161,11 @@ jobs: - name: AArch64 cross-compile packages run: | - FLAVOR="$(lsb_release -sc)" - - sudo tee /etc/apt/sources.list.d/arm64.list <> $GITHUB_ENV if: matrix.build.target == 'aarch64-unknown-linux-gnu' @@ -231,35 +212,23 @@ jobs: security unlock-keychain -p "${{ secrets.MACOS_CERTIFICATE_PW }}" build.keychain security import certificate.p12 -k build.keychain -P "${{ secrets.MACOS_CERTIFICATE_PW }}" -T /usr/bin/codesign security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "${{ secrets.MACOS_CERTIFICATE_PW }}" build.keychain + echo "Signing farmer" codesign --force --options=runtime --entitlements .github/workflows/Entitlements.plist -s "${{ secrets.MACOS_IDENTITY }}" --timestamp ${{ env.PRODUCTION_TARGET }}/subspace-farmer + echo "Signing node" codesign --force --options=runtime --entitlements .github/workflows/Entitlements.plist -s "${{ secrets.MACOS_IDENTITY }}" --timestamp ${{ env.PRODUCTION_TARGET }}/subspace-node - echo "Creating an archive" - mkdir ${{ env.PRODUCTION_TARGET }}/macos-binaries + + echo "Creating a ZIP archive" + mkdir -p ${{ env.PRODUCTION_TARGET }}/macos-binaries cp ${{ env.PRODUCTION_TARGET }}/subspace-farmer ${{ env.PRODUCTION_TARGET }}/subspace-node ${{ env.PRODUCTION_TARGET }}/macos-binaries ditto -c -k --rsrc ${{ env.PRODUCTION_TARGET }}/macos-binaries subspace-binaries.zip - echo "Notarizing" - brew update - brew install mitchellh/gon/gon - cat << EOF > gon.hcl - source = ["subspace-binaries.zip"] - bundle_id = "${{ secrets.MACOS_BUNDLE_ID }}" - sign { - application_identity = "${{ secrets.MACOS_IDENTITY }}" - } - apple_id { - username = "${{ secrets.MACOS_APPLE_ID }}" - password = "${{ secrets.MACOS_APP_PW }}" - } - EOF - gon -log-level=info -log-json gon.hcl - - # Notarize the ZIP using notarytool + + echo "Notarizing ZIP archive file" xcrun notarytool submit subspace-binaries.zip --apple-id "${{ secrets.MACOS_APPLE_ID }}" --password "${{ secrets.MACOS_APP_PW }}" --team-id "${{ secrets.MACOS_TEAM_ID }}" --wait - # // todo stapling for macOS artifacts - # Staple the zip package + # stapling does not work for .zip archives only .app bundles and .dmg files. Commenting this for now! + # echo "Stapling notarization to ZIP file" # xcrun stapler staple subspace-binaries.zip echo "Done!" @@ -267,6 +236,7 @@ jobs: continue-on-error: ${{ github.repository_owner != 'autonomys' || github.event_name != 'push' || github.ref_type != 'tag' }} if: runner.os == 'macOS' + - name: Sign Application (Windows) run: | AzureSignTool sign --azure-key-vault-url "${{ secrets.AZURE_KEY_VAULT_URI }}" --azure-key-vault-client-id "${{ secrets.AZURE_CLIENT_ID }}" --azure-key-vault-client-secret "${{ secrets.AZURE_CLIENT_SECRET }}" --azure-key-vault-tenant-id "${{ secrets.AZURE_TENANT_ID }}" --azure-key-vault-certificate "${{ secrets.AZURE_CERT_NAME }}" --file-digest sha512 --timestamp-rfc3161 http://timestamp.digicert.com -v "${{ env.PRODUCTION_TARGET }}/subspace-farmer.exe" diff --git a/Cargo.lock b/Cargo.lock index 19094d168a..4a5eeeaa69 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -75,7 +75,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -192,7 +192,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -206,18 +206,18 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ - "gimli 0.29.0", + "gimli 0.31.0", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aead" @@ -242,12 +242,12 @@ dependencies = [ [[package]] name = "aes" -version = "0.9.0-pre.1" +version = "0.9.0-pre.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3b4639f8f7237857117abb74f3dc8648b77e67ff78d9cb6959fd7e76f387" +checksum = "e7856582c758ade85d71daf27ec6bcea6c1c73913692b07b8dffea2dc03531c9" dependencies = [ "cfg-if", - "cipher 0.5.0-pre.6", + "cipher 0.5.0-pre.7", "cpufeatures", ] @@ -329,15 +329,6 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - [[package]] name = "anstream" version = "0.6.15" @@ -389,9 +380,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "approx" @@ -413,7 +404,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -553,15 +544,15 @@ checksum = "5d5dde061bd34119e902bbb2d9b90c5692635cf59fb91d582c2b68043f1b8293" [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "asn1-rs" @@ -615,7 +606,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", "synstructure 0.13.1", ] @@ -638,7 +629,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -666,13 +657,13 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.1.0", + "fastrand 2.1.1", "futures-lite 2.3.0", "slab", ] @@ -737,7 +728,7 @@ dependencies = [ "futures-lite 2.3.0", "parking", "polling 3.7.3", - "rustix 0.38.34", + "rustix 0.38.37", "slab", "tracing", "windows-sys 0.59.0", @@ -774,9 +765,9 @@ dependencies = [ [[package]] name = "async-nats" -version = "0.35.1" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8df97cb8fc4a884af29ab383e9292ea0939cfcdd7d2a17179086dc6c427e7f" +checksum = "fd3bdd6ea595b2ea504500a3566071beb81125fc15d40a6f6bffa43575f64152" dependencies = [ "base64 0.22.1", "bytes", @@ -789,9 +780,9 @@ dependencies = [ "rand", "regex", "ring 0.17.8", - "rustls-native-certs 0.7.1", - "rustls-pemfile 2.1.3", - "rustls-webpki 0.102.6", + "rustls-native-certs 0.7.3", + "rustls-pemfile 2.2.0", + "rustls-webpki 0.102.8", "serde", "serde_json", "serde_nanos", @@ -800,6 +791,7 @@ dependencies = [ "time", "tokio", "tokio-rustls 0.26.0", + "tokio-util", "tracing", "tryhard", "url", @@ -838,7 +830,7 @@ dependencies = [ "cfg-if", "event-listener 3.1.0", "futures-lite 1.13.0", - "rustix 0.38.34", + "rustix 0.38.37", "windows-sys 0.48.0", ] @@ -854,7 +846,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 0.38.34", + "rustix 0.38.37", "signal-hook-registry", "slab", "windows-sys 0.59.0", @@ -862,19 +854,19 @@ dependencies = [ [[package]] name = "async-std" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" dependencies = [ "async-channel 1.9.0", "async-global-executor", - "async-io 1.13.0", - "async-lock 2.8.0", + "async-io 2.3.4", + "async-lock 3.4.0", "crossbeam-utils", "futures-channel", "futures-core", "futures-io", - "futures-lite 1.13.0", + "futures-lite 2.3.0", "gloo-timers", "kv-log-macro", "log", @@ -894,13 +886,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -929,12 +921,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "atomic" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" - [[package]] name = "atomic-waker" version = "1.1.2" @@ -963,7 +949,7 @@ dependencies = [ "log", "rustls 0.22.4", "url", - "webpki-roots 0.26.3", + "webpki-roots 0.26.6", ] [[package]] @@ -1068,14 +1054,14 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "autotools" @@ -1102,17 +1088,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "addr2line 0.22.0", - "cc", + "addr2line 0.24.1", "cfg-if", "libc", "miniz_oxide", - "object 0.36.3", + "object 0.36.4", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -1157,15 +1143,6 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" -[[package]] -name = "beef" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" -dependencies = [ - "serde", -] - [[package]] name = "bincode" version = "1.3.3" @@ -1279,9 +1256,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.3" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9ec96fe9a81b5e365f9db71fe00edc4fe4ca2cc7dcb7861f0603012a7caa210" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" dependencies = [ "arrayref", "arrayvec", @@ -1420,9 +1397,9 @@ checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "bytemuck" -version = "1.16.3" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" [[package]] name = "byteorder" @@ -1432,9 +1409,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" dependencies = [ "serde", ] @@ -1466,9 +1443,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ec6b951b160caa93cc0c7b209e5a3bff7aae9062213451ac99493cd844c239" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ "serde", ] @@ -1504,9 +1481,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.1.15" +version = "1.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" +checksum = "812acba72f0a070b003d3697490d2b55b837230ae7c6c6497f05cc2ddbb8d938" dependencies = [ "jobserver", "libc", @@ -1663,19 +1640,19 @@ dependencies = [ [[package]] name = "cipher" -version = "0.5.0-pre.6" +version = "0.5.0-pre.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71c893d5a1e8257048dbb29954d2e1f85f091a150304f1defe4ca2806da5d3f" +checksum = "5b1425e6ce000f05a73096556cabcfb6a10a3ffe3bb4d75416ca8f00819c0b6a" dependencies = [ - "crypto-common 0.2.0-rc.0", - "inout 0.2.0-rc.0", + "crypto-common 0.2.0-rc.1", + "inout 0.2.0-rc.1", ] [[package]] name = "clap" -version = "4.5.15" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d8838454fda655dafd3accb2b6e2bea645b9e4078abe84a22ceb947235c5cc" +checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3" dependencies = [ "clap_builder", "clap_derive", @@ -1683,9 +1660,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b" dependencies = [ "anstream", "anstyle", @@ -1696,14 +1673,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.13" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -1714,9 +1691,9 @@ checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "cmake" -version = "0.1.50" +version = "0.1.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a" dependencies = [ "cc", ] @@ -1814,9 +1791,9 @@ dependencies = [ [[package]] name = "constant_time_eq" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "constcat" @@ -1897,9 +1874,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -2050,9 +2027,9 @@ dependencies = [ [[package]] name = "critical-section" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" +checksum = "f64009896348fc5af4222e9cf7d7d82a95a256c634ebcf61c53e4ea461422242" [[package]] name = "cross-domain-message-gossip" @@ -2137,9 +2114,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.2.0-rc.0" +version = "0.2.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c070b79a496dccd931229780ad5bbedd535ceff6c3565605a8e440e18e1aa2b" +checksum = "b0b8ce8218c97789f16356e7896b3714f26c2ee1079b79c0b7ae7064bb9089fa" dependencies = [ "hybrid-array", ] @@ -2197,14 +2174,14 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "cxx" -version = "1.0.124" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "273dcfd3acd4e1e276af13ed2a43eea7001318823e7a726a6b3ed39b4acc0b82" +checksum = "54ccead7d199d584d139148b04b4a368d1ec7556a1d9ea2548febb1b9d49f9a4" dependencies = [ "cc", "cxxbridge-flags", @@ -2214,9 +2191,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.124" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b2766fbd92be34e9ed143898fce6c572dc009de39506ed6903e5a05b68914e" +checksum = "c77953e99f01508f89f55c494bfa867171ef3a6c8cea03d26975368f2121a5c1" dependencies = [ "cc", "codespan-reporting", @@ -2224,24 +2201,24 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "cxxbridge-flags" -version = "1.0.124" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "839fcd5e43464614ffaa989eaf1c139ef1f0c51672a1ed08023307fa1b909ccd" +checksum = "65777e06cc48f0cb0152024c77d6cf9e4bdb4408e7b48bea993d42fa0f5b02b6" [[package]] name = "cxxbridge-macro" -version = "1.0.124" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2c1c1776b986979be68bb2285da855f8d8a35851a769fca8740df7c3d07877" +checksum = "98532a60dedaebc4848cb2cba5023337cc9ea3af16a5b062633fabfd9f18fb60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -2351,7 +2328,7 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -2364,7 +2341,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -2385,7 +2362,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", "unicode-xid", ] @@ -2484,7 +2461,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -2508,7 +2485,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.74", + "syn 2.0.79", "termcolor", "toml 0.8.19", "walkdir", @@ -2569,11 +2546,7 @@ version = "0.1.0" dependencies = [ "async-trait", "sc-consensus", - "sp-blockchain", - "sp-consensus", - "sp-core", "sp-runtime", - "substrate-prometheus-endpoint", ] [[package]] @@ -2681,12 +2654,13 @@ dependencies = [ "fc-storage", "fp-rpc", "futures", - "jsonrpsee 0.23.2", + "jsonrpsee", "pallet-transaction-payment-rpc", "parity-scale-codec", "sc-client-api", "sc-network-sync", "sc-rpc", + "sc-rpc-server", "sc-service", "sc-transaction-pool", "sc-transaction-pool-api", @@ -2726,7 +2700,6 @@ dependencies = [ name = "domain-runtime-primitives" version = "0.1.0" dependencies = [ - "fixed-hash", "fp-account", "frame-support", "frame-system", @@ -2754,7 +2727,7 @@ dependencies = [ "domain-runtime-primitives", "frame-benchmarking", "futures", - "jsonrpsee 0.23.2", + "jsonrpsee", "log", "pallet-transaction-payment-rpc", "parity-scale-codec", @@ -2769,8 +2742,7 @@ dependencies = [ "sc-network-sync", "sc-network-transactions", "sc-rpc", - "sc-rpc-api", - "sc-rpc-spec-v2", + "sc-rpc-server", "sc-service", "sc-telemetry", "sc-transaction-pool", @@ -3012,14 +2984,14 @@ dependencies = [ [[package]] name = "enum-as-inner" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -3039,7 +3011,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -3146,7 +3118,7 @@ dependencies = [ "impl-serde", "primitive-types", "scale-info", - "uint", + "uint 0.9.5", ] [[package]] @@ -3385,10 +3357,10 @@ dependencies = [ "blake2 0.10.6", "file-guard", "fs-err", - "prettyplease 0.2.20", + "prettyplease 0.2.22", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -3414,14 +3386,14 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fc-api" version = "1.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "async-trait", "fp-storage", @@ -3433,7 +3405,7 @@ dependencies = [ [[package]] name = "fc-consensus" version = "2.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "async-trait", "fp-consensus", @@ -3449,7 +3421,7 @@ dependencies = [ [[package]] name = "fc-db" version = "2.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "async-trait", "fc-api", @@ -3468,7 +3440,7 @@ dependencies = [ [[package]] name = "fc-mapping-sync" version = "2.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "fc-db", "fc-storage", @@ -3489,7 +3461,7 @@ dependencies = [ [[package]] name = "fc-rpc" version = "2.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "ethereum", "ethereum-types", @@ -3503,7 +3475,7 @@ dependencies = [ "fp-storage", "futures", "hex", - "jsonrpsee 0.23.2", + "jsonrpsee", "libsecp256k1", "log", "pallet-evm", @@ -3543,11 +3515,11 @@ dependencies = [ [[package]] name = "fc-rpc-core" version = "1.1.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "ethereum", "ethereum-types", - "jsonrpsee 0.23.2", + "jsonrpsee", "rlp", "rustc-hex", "serde", @@ -3558,7 +3530,7 @@ dependencies = [ [[package]] name = "fc-storage" version = "1.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "ethereum", "ethereum-types", @@ -3620,9 +3592,9 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.24" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf401df4a4e3872c4fe8151134cf483738e74b67fc934d6532c882b3d24a4550" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", @@ -3666,9 +3638,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.31" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", "miniz_oxide", @@ -3692,7 +3664,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "13.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "parity-scale-codec", ] @@ -3719,7 +3691,7 @@ dependencies = [ [[package]] name = "fp-account" version = "1.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "hex", "impl-serde", @@ -3738,7 +3710,7 @@ dependencies = [ [[package]] name = "fp-consensus" version = "2.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "ethereum", "parity-scale-codec", @@ -3749,7 +3721,7 @@ dependencies = [ [[package]] name = "fp-ethereum" version = "1.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "ethereum", "ethereum-types", @@ -3761,7 +3733,7 @@ dependencies = [ [[package]] name = "fp-evm" version = "3.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "evm", "frame-support", @@ -3776,7 +3748,7 @@ dependencies = [ [[package]] name = "fp-rpc" version = "3.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "ethereum", "ethereum-types", @@ -3792,7 +3764,7 @@ dependencies = [ [[package]] name = "fp-self-contained" version = "1.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "frame-support", "parity-scale-codec", @@ -3804,7 +3776,7 @@ dependencies = [ [[package]] name = "fp-storage" version = "2.0.0" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "parity-scale-codec", "serde", @@ -3818,8 +3790,8 @@ checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] name = "frame-benchmarking" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "frame-support", "frame-support-procedural", @@ -3842,8 +3814,8 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" -version = "42.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "43.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "Inflector", "array-bytes", @@ -3892,8 +3864,8 @@ dependencies = [ [[package]] name = "frame-executive" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "aquamarine", "frame-support", @@ -3922,8 +3894,8 @@ dependencies = [ [[package]] name = "frame-support" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "aquamarine", "array-bytes", @@ -3963,12 +3935,13 @@ dependencies = [ [[package]] name = "frame-support-procedural" -version = "30.0.2" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "30.0.3" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "Inflector", "cfg-expr", "derive-syn-parse", + "docify", "expander", "frame-support-procedural-tools", "itertools 0.11.0", @@ -3977,35 +3950,35 @@ dependencies = [ "proc-macro2", "quote", "sp-crypto-hashing", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "frame-support-procedural-tools" version = "13.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "frame-support-procedural-tools-derive", - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "frame-support-procedural-tools-derive" version = "12.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "frame-system" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "cfg-if", "docify", @@ -4024,8 +3997,8 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "frame-benchmarking", "frame-support", @@ -4039,7 +4012,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "34.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "docify", "parity-scale-codec", @@ -4048,8 +4021,8 @@ dependencies = [ [[package]] name = "frame-try-runtime" -version = "0.43.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.44.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "frame-support", "parity-scale-codec", @@ -4082,17 +4055,17 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29f9df8a11882c4e3335eb2d18a0137c505d9ca927470b0cac9c6f0ae07d28f7" dependencies = [ - "rustix 0.38.34", + "rustix 0.38.37", "windows-sys 0.48.0", ] [[package]] name = "fs4" -version = "0.8.4" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e180ac76c23b45e767bd7ae9579bc0bb458618c4bc71835926e098e61d15f8" +checksum = "e8c6b3bd49c37d2aa3f3f2220233b29a7cd23f79d1fe70e5337d25fb390793de" dependencies = [ - "rustix 0.38.34", + "rustix 0.38.37", "windows-sys 0.52.0", ] @@ -4192,7 +4165,7 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.1.0", + "fastrand 2.1.1", "futures-core", "futures-io", "parking", @@ -4207,7 +4180,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -4236,7 +4209,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" dependencies = [ "futures-io", - "rustls 0.23.12", + "rustls 0.23.13", "rustls-pki-types", ] @@ -4382,9 +4355,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "glob" @@ -4394,9 +4367,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "gloo-timers" -version = "0.2.6" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" dependencies = [ "futures-channel", "futures-core", @@ -4447,7 +4420,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.3.0", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -4456,9 +4429,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -4466,7 +4439,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.3.0", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -4612,7 +4585,7 @@ dependencies = [ "async-trait", "cfg-if", "data-encoding", - "enum-as-inner 0.6.0", + "enum-as-inner 0.6.1", "futures-channel", "futures-io", "futures-util", @@ -4766,9 +4739,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -4820,9 +4793,9 @@ dependencies = [ [[package]] name = "hybrid-array" -version = "0.2.0-rc.9" +version = "0.2.0-rc.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d306b679262030ad8813a82d4915fc04efff97776e4db7f8eb5137039d56400" +checksum = "a5a41e5b0754cae5aaf7915f1df1147ba8d316fc6e019cfcc00fbaba96d5e030" dependencies = [ "typenum", ] @@ -4860,7 +4833,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.5", + "h2 0.4.6", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -4889,9 +4862,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes", "futures-util", @@ -4900,15 +4873,14 @@ dependencies = [ "hyper 1.4.1", "pin-project-lite", "tokio", - "tower", "tower-service", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -5083,9 +5055,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -5103,9 +5075,9 @@ dependencies = [ [[package]] name = "inout" -version = "0.2.0-rc.0" +version = "0.2.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbc33218cf9ce7b927426ee4ad3501bcc5d8c26bf5fb4a82849a083715aca427" +checksum = "161ac07241f4d11c21b6d82f1fef1c05aec030c0bf568b35281efe453ea450a7" dependencies = [ "hybrid-array", ] @@ -5159,17 +5131,17 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" [[package]] name = "is-terminal" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.4.0", "libc", "windows-sys 0.52.0", ] @@ -5250,50 +5222,40 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] [[package]] name = "jsonrpsee" -version = "0.23.2" +version = "0.24.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b089779ad7f80768693755a031cc14a7766aba707cbe886674e3f79e9b7e47" +checksum = "126b48a5acc3c52fbd5381a77898cb60e145123179588a29e7ac48f9c06e401b" dependencies = [ - "jsonrpsee-core 0.23.2", + "jsonrpsee-core", "jsonrpsee-proc-macros", "jsonrpsee-server", - "jsonrpsee-types 0.23.2", + "jsonrpsee-types", + "jsonrpsee-ws-client", "tokio", "tracing", ] -[[package]] -name = "jsonrpsee" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a1d83ae9ed70d8e3440db663e343a82f93913104744cd543bbcdd1dbc0e35d3" -dependencies = [ - "jsonrpsee-core 0.24.2", - "jsonrpsee-types 0.24.2", - "jsonrpsee-ws-client", -] - [[package]] name = "jsonrpsee-client-transport" -version = "0.24.2" +version = "0.24.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be764c8b96cdcd2974655560a1c6542a366440d47c88114894cc20c24317815" +checksum = "bf679a8e0e083c77997f7c4bb4ca826577105906027ae462aac70ff348d02c6a" dependencies = [ "base64 0.22.1", "futures-util", "http 1.1.0", - "jsonrpsee-core 0.24.2", + "jsonrpsee-core", "pin-project", - "rustls 0.23.12", + "rustls 0.23.13", "rustls-pki-types", "rustls-platform-verifier", "soketto", @@ -5307,40 +5269,21 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.23.2" +version = "0.24.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79712302e737d23ca0daa178e752c9334846b08321d439fd89af9a384f8c830b" +checksum = "b0e503369a76e195b65af35058add0e6900b794a4e9a9316900ddd3a87a80477" dependencies = [ - "anyhow", "async-trait", - "beef", "bytes", + "futures-timer", "futures-util", "http 1.1.0", "http-body 1.0.1", "http-body-util", - "jsonrpsee-types 0.23.2", + "jsonrpsee-types", "parking_lot 0.12.3", - "rand", - "rustc-hash 1.1.0", - "serde", - "serde_json", - "thiserror", - "tokio", - "tracing", -] - -[[package]] -name = "jsonrpsee-core" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b772fb8aa2b511eeed75f7e19d8e5fa57be7e8202249470bf26210727399c7" -dependencies = [ - "async-trait", - "futures-timer", - "futures-util", - "jsonrpsee-types 0.24.2", "pin-project", + "rand", "rustc-hash 2.0.0", "serde", "serde_json", @@ -5352,32 +5295,31 @@ dependencies = [ [[package]] name = "jsonrpsee-proc-macros" -version = "0.23.2" +version = "0.24.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7895f186d5921065d96e16bd795e5ca89ac8356ec423fafc6e3d7cf8ec11aee4" +checksum = "fc660a9389e2748e794a40673a4155d501f32db667757cdb80edeff0306b489b" dependencies = [ "heck 0.5.0", - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "jsonrpsee-server" -version = "0.23.2" +version = "0.24.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "654afab2e92e5d88ebd8a39d6074483f3f2bfdf91c5ac57fe285e7127cdd4f51" +checksum = "af6e6c9b6d975edcb443565d648b605f3e85a04ec63aa6941811a8894cc9cded" dependencies = [ - "anyhow", "futures-util", "http 1.1.0", "http-body 1.0.1", "http-body-util", "hyper 1.4.1", "hyper-util", - "jsonrpsee-core 0.23.2", - "jsonrpsee-types 0.23.2", + "jsonrpsee-core", + "jsonrpsee-types", "pin-project", "route-recognizer", "serde", @@ -5393,22 +5335,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.23.2" +version = "0.24.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c465fbe385238e861fdc4d1c85e04ada6c1fd246161d26385c1b311724d2af" -dependencies = [ - "beef", - "http 1.1.0", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "jsonrpsee-types" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98deeee954567f75632fa40666ac93a66d4f9f4ed4ca15bd6b7ed0720b53e761" +checksum = "d8fb16314327cbc94fdf7965ef7e4422509cd5597f76d137bd104eb34aeede67" dependencies = [ "http 1.1.0", "serde", @@ -5418,22 +5347,22 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.24.2" +version = "0.24.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "385cf0a6103a9f64987cdf0f7c9d0b08e1d7183dd952820beffb3676e7df7787" +checksum = "39aabf5d6c6f22da8d5b808eea1fab0736059f11fb42f71f141b14f404e5046a" dependencies = [ "http 1.1.0", "jsonrpsee-client-transport", - "jsonrpsee-core 0.24.2", - "jsonrpsee-types 0.24.2", + "jsonrpsee-core", + "jsonrpsee-types", "url", ] [[package]] name = "k256" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa", @@ -5513,9 +5442,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libm" @@ -5564,7 +5493,7 @@ dependencies = [ "libp2p-wasm-ext", "libp2p-websocket", "libp2p-yamux 0.44.1", - "multiaddr 0.18.1", + "multiaddr 0.18.2", "pin-project", "rw-stream-sink", "thiserror", @@ -5572,9 +5501,9 @@ dependencies = [ [[package]] name = "libp2p" -version = "0.54.0" +version = "0.54.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b06a2ceb55591d19a194956ce541329007b4e4ee87c5fdd59d64dc439286a36" +checksum = "bbbe80f9c7e00526cd6b838075b9c171919404a4732cb2fa8ece0a093223bfc4" dependencies = [ "bytes", "either", @@ -5589,9 +5518,9 @@ dependencies = [ "libp2p-gossipsub", "libp2p-identify 0.45.0", "libp2p-identity", - "libp2p-kad 0.46.0", + "libp2p-kad 0.46.2", "libp2p-mdns 0.46.0", - "libp2p-metrics 0.14.2", + "libp2p-metrics 0.15.0", "libp2p-noise 0.45.0", "libp2p-ping 0.45.0", "libp2p-plaintext", @@ -5601,7 +5530,7 @@ dependencies = [ "libp2p-tcp 0.42.0", "libp2p-upnp 0.3.0", "libp2p-yamux 0.46.0", - "multiaddr 0.18.1", + "multiaddr 0.18.2", "pin-project", "rw-stream-sink", "thiserror", @@ -5695,7 +5624,7 @@ dependencies = [ "instant", "libp2p-identity", "log", - "multiaddr 0.18.1", + "multiaddr 0.18.2", "multihash 0.19.1", "multistream-select", "once_cell", @@ -5721,7 +5650,7 @@ dependencies = [ "futures", "futures-timer", "libp2p-identity", - "multiaddr 0.18.1", + "multiaddr 0.18.2", "multihash 0.19.1", "multistream-select", "once_cell", @@ -5892,16 +5821,16 @@ dependencies = [ "sha2 0.10.8", "smallvec", "thiserror", - "uint", + "uint 0.9.5", "unsigned-varint 0.7.2", "void", ] [[package]] name = "libp2p-kad" -version = "0.46.0" +version = "0.46.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3fd4d149f0539e608d178b7cd1cfb0c1c6a8dc367eda2bc1cc81a28a1552161" +checksum = "ced237d0bd84bbebb7c2cad4c073160dacb4fe40534963c32ed6d4c6bb7702a3" dependencies = [ "arrayvec", "asynchronous-codec 0.7.0", @@ -5922,7 +5851,7 @@ dependencies = [ "smallvec", "thiserror", "tracing", - "uint", + "uint 0.9.5", "void", "web-time", ] @@ -5988,16 +5917,16 @@ dependencies = [ [[package]] name = "libp2p-metrics" -version = "0.14.2" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a70afa7692c81ee03e89c40d1e8638d634f18baef6aeeea30fd245edfae4d3fd" +checksum = "77ebafa94a717c8442d8db8d3ae5d1c6a15e30f2d347e0cd31d057ca72e42566" dependencies = [ "futures", "libp2p-core 0.42.0", "libp2p-gossipsub", "libp2p-identify 0.45.0", "libp2p-identity", - "libp2p-kad 0.46.0", + "libp2p-kad 0.46.2", "libp2p-ping 0.45.0", "libp2p-swarm 0.45.1", "pin-project", @@ -6017,7 +5946,7 @@ dependencies = [ "libp2p-core 0.40.1", "libp2p-identity", "log", - "multiaddr 0.18.1", + "multiaddr 0.18.2", "multihash 0.19.1", "once_cell", "quick-protobuf", @@ -6042,7 +5971,7 @@ dependencies = [ "futures", "libp2p-core 0.42.0", "libp2p-identity", - "multiaddr 0.18.1", + "multiaddr 0.18.2", "multihash 0.19.1", "once_cell", "quick-protobuf", @@ -6146,10 +6075,10 @@ dependencies = [ "libp2p-identity", "libp2p-tls 0.5.0", "parking_lot 0.12.3", - "quinn 0.11.3", + "quinn 0.11.5", "rand", "ring 0.17.8", - "rustls 0.23.12", + "rustls 0.23.13", "socket2 0.5.7", "thiserror", "tokio", @@ -6252,7 +6181,7 @@ dependencies = [ "proc-macro-warning 0.4.2", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -6264,7 +6193,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -6352,7 +6281,7 @@ dependencies = [ "libp2p-identity", "rcgen 0.11.3", "ring 0.17.8", - "rustls 0.23.12", + "rustls 0.23.13", "rustls-webpki 0.101.7", "thiserror", "x509-parser 0.16.0", @@ -6462,7 +6391,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.6.0", "libc", - "redox_syscall 0.5.3", + "redox_syscall 0.5.7", ] [[package]] @@ -6589,7 +6518,7 @@ dependencies = [ "futures", "futures-timer", "hex-literal", - "indexmap 2.3.0", + "indexmap 2.5.0", "libc", "mockall 0.12.1", "multiaddr 0.17.1", @@ -6619,7 +6548,7 @@ dependencies = [ "tokio-util", "tracing", "trust-dns-resolver", - "uint", + "uint 0.9.5", "unsigned-varint 0.8.0", "url", "webpki", @@ -6685,19 +6614,18 @@ dependencies = [ [[package]] name = "lz4" -version = "1.26.0" +version = "1.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958b4caa893816eea05507c20cfe47574a43d9a697138a7872990bba8a0ece68" +checksum = "4d1febb2b4a79ddd1980eede06a8f7902197960aa0383ffcfdd62fe723036725" dependencies = [ - "libc", "lz4-sys", ] [[package]] name = "lz4-sys" -version = "1.10.0" +version = "1.11.1+lz4-1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" dependencies = [ "cc", "libc", @@ -6721,7 +6649,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -6735,7 +6663,7 @@ dependencies = [ "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -6746,7 +6674,7 @@ checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -6757,7 +6685,7 @@ checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -6803,7 +6731,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix 0.38.34", + "rustix 0.38.37", ] [[package]] @@ -6817,9 +6745,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" dependencies = [ "libc", ] @@ -6877,11 +6805,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] @@ -6924,8 +6852,8 @@ dependencies = [ [[package]] name = "mmr-gadget" -version = "39.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "40.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "futures", "log", @@ -6944,9 +6872,9 @@ dependencies = [ [[package]] name = "mmr-rpc" version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ - "jsonrpsee 0.23.2", + "jsonrpsee", "parity-scale-codec", "serde", "sp-api", @@ -7007,7 +6935,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -7031,9 +6959,9 @@ dependencies = [ [[package]] name = "multiaddr" -version = "0.18.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b852bc02a2da5feed68cd14fa50d0774b92790a5bdbfa932a813926c8472070" +checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" dependencies = [ "arrayref", "byteorder", @@ -7044,7 +6972,7 @@ dependencies = [ "percent-encoding", "serde", "static_assertions", - "unsigned-varint 0.7.2", + "unsigned-varint 0.8.0", "url", ] @@ -7168,7 +7096,7 @@ checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -7272,9 +7200,9 @@ dependencies = [ [[package]] name = "nkeys" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2de02c883c178998da8d0c9816a88ef7ef5c58314dd1585c97a4a5679f3ab337" +checksum = "9f49e787f4c61cbd0f9320b31cc26e58719f6aa5068e34697dd3aea361412fe3" dependencies = [ "data-encoding", "ed25519", @@ -7459,10 +7387,10 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -7488,9 +7416,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.3" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] @@ -7506,18 +7434,18 @@ dependencies = [ [[package]] name = "oid-registry" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c958dd45046245b9c3c2547369bb634eb461670b2e7e0de552905801a648d1d" +checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" dependencies = [ "asn1-rs 0.6.2", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" dependencies = [ "critical-section", "portable-atomic", @@ -7553,22 +7481,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" -[[package]] -name = "orml-vesting" -version = "0.9.1" -dependencies = [ - "frame-support", - "frame-system", - "pallet-balances", - "parity-scale-codec", - "scale-info", - "serde", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", -] - [[package]] name = "overload" version = "0.1.1" @@ -7597,8 +7509,8 @@ dependencies = [ [[package]] name = "pallet-balances" -version = "38.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "39.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "docify", "frame-benchmarking", @@ -7613,7 +7525,7 @@ dependencies = [ [[package]] name = "pallet-base-fee" version = "1.0.0" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "fp-evm", "frame-support", @@ -7642,8 +7554,8 @@ dependencies = [ [[package]] name = "pallet-collective" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "frame-benchmarking", "frame-support", @@ -7658,8 +7570,8 @@ dependencies = [ [[package]] name = "pallet-democracy" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "frame-benchmarking", "frame-support", @@ -7734,7 +7646,7 @@ dependencies = [ [[package]] name = "pallet-ethereum" version = "4.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "ethereum", "ethereum-types", @@ -7756,7 +7668,7 @@ dependencies = [ [[package]] name = "pallet-evm" version = "6.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "environmental", "evm", @@ -7779,7 +7691,7 @@ dependencies = [ [[package]] name = "pallet-evm-chain-id" version = "1.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "frame-support", "frame-system", @@ -7802,7 +7714,7 @@ dependencies = [ [[package]] name = "pallet-evm-precompile-modexp" version = "2.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "fp-evm", "num", @@ -7811,7 +7723,7 @@ dependencies = [ [[package]] name = "pallet-evm-precompile-sha3fips" version = "2.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "fp-evm", "tiny-keccak", @@ -7820,48 +7732,13 @@ dependencies = [ [[package]] name = "pallet-evm-precompile-simple" version = "2.0.0-dev" -source = "git+https://github.com/polkadot-evm/frontier?rev=2e219e17a526125da003e64ef22ec037917083fa#2e219e17a526125da003e64ef22ec037917083fa" +source = "git+https://github.com/autonomys/frontier?rev=f80f9e2bad338f3bf3854b256b3c4edea23e5968#f80f9e2bad338f3bf3854b256b3c4edea23e5968" dependencies = [ "fp-evm", "ripemd", "sp-io", ] -[[package]] -name = "pallet-feeds" -version = "0.1.0" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "sp-core", - "sp-io", - "sp-runtime", - "subspace-core-primitives", -] - -[[package]] -name = "pallet-grandpa-finality-verifier" -version = "0.1.0" -dependencies = [ - "ed25519-dalek", - "finality-grandpa", - "frame-support", - "frame-system", - "log", - "num-traits", - "parity-scale-codec", - "scale-info", - "serde", - "sp-application-crypto", - "sp-consensus-grandpa", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", -] - [[package]] name = "pallet-history-seeding" version = "0.1.0" @@ -7903,8 +7780,8 @@ dependencies = [ [[package]] name = "pallet-mmr" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "frame-benchmarking", "frame-support", @@ -7918,42 +7795,10 @@ dependencies = [ "sp-runtime", ] -[[package]] -name = "pallet-object-store" -version = "0.1.0" -dependencies = [ - "frame-support", - "frame-system", - "hex", - "log", - "parity-scale-codec", - "scale-info", - "sp-core", - "sp-io", - "sp-runtime", - "subspace-core-primitives", -] - -[[package]] -name = "pallet-offences-subspace" -version = "0.1.0" -dependencies = [ - "frame-support", - "frame-system", - "parity-scale-codec", - "scale-info", - "schnorrkel", - "sp-consensus-subspace", - "sp-core", - "sp-io", - "sp-runtime", - "sp-std", -] - [[package]] name = "pallet-preimage" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "frame-benchmarking", "frame-support", @@ -8001,8 +7846,8 @@ dependencies = [ [[package]] name = "pallet-scheduler" -version = "38.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "39.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "docify", "frame-benchmarking", @@ -8027,7 +7872,6 @@ dependencies = [ "futures", "log", "pallet-balances", - "pallet-offences-subspace", "parity-scale-codec", "rand", "scale-info", @@ -8035,7 +7879,6 @@ dependencies = [ "serde", "sp-consensus-slots", "sp-consensus-subspace", - "sp-core", "sp-io", "sp-runtime", "sp-std", @@ -8065,8 +7908,8 @@ dependencies = [ [[package]] name = "pallet-sudo" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "docify", "frame-benchmarking", @@ -8080,8 +7923,8 @@ dependencies = [ [[package]] name = "pallet-timestamp" -version = "36.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "37.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "docify", "frame-benchmarking", @@ -8110,8 +7953,8 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "frame-support", "frame-system", @@ -8125,10 +7968,10 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" -version = "40.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "41.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ - "jsonrpsee 0.23.2", + "jsonrpsee", "pallet-transaction-payment-rpc-runtime-api", "parity-scale-codec", "sp-api", @@ -8141,8 +7984,8 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -8173,8 +8016,8 @@ dependencies = [ [[package]] name = "pallet-utility" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "frame-benchmarking", "frame-support", @@ -8241,7 +8084,7 @@ version = "3.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", "syn 1.0.109", @@ -8255,9 +8098,9 @@ checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -8302,7 +8145,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.3", + "redox_syscall 0.5.7", "smallvec", "windows-targets 0.52.6", ] @@ -8376,9 +8219,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" dependencies = [ "memchr", "thiserror", @@ -8387,9 +8230,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" +checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" dependencies = [ "pest", "pest_generator", @@ -8397,22 +8240,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" +checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "pest_meta" -version = "2.7.11" +version = "2.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" +checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" dependencies = [ "once_cell", "pest", @@ -8426,7 +8269,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.3.0", + "indexmap 2.5.0", ] [[package]] @@ -8446,7 +8289,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -8468,7 +8311,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.1.0", + "fastrand 2.1.1", "futures-io", ] @@ -8484,15 +8327,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plotters" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "num-traits", "plotters-backend", @@ -8503,15 +8346,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-svg" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] @@ -8575,7 +8418,7 @@ dependencies = [ "polkavm-common", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -8585,7 +8428,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ba81f7b5faac81e528eb6158a6f3c9e0bb1008e0ffa19653bc8dea925ecb429" dependencies = [ "polkavm-derive-impl", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -8635,7 +8478,7 @@ dependencies = [ "concurrent-queue", "hermit-abi 0.4.0", "pin-project-lite", - "rustix 0.38.34", + "rustix 0.38.37", "tracing", "windows-sys 0.59.0", ] @@ -8665,9 +8508,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "powerfmt" @@ -8736,12 +8579,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.20" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -8755,7 +8598,7 @@ dependencies = [ "impl-rlp", "impl-serde", "scale-info", - "uint", + "uint 0.9.5", ] [[package]] @@ -8770,11 +8613,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.21.1", + "toml_edit", ] [[package]] @@ -8809,7 +8652,7 @@ checksum = "3d1eaa7fa0aa1929ffdf7eeb6eac234dde6268914a14ad44d23521ab6a9b258e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -8820,7 +8663,7 @@ checksum = "834da187cfe638ae8abb0203f0b33e5ccdb02a28e7199f2f47b3e2754f50edca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -8878,7 +8721,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -8936,11 +8779,11 @@ dependencies = [ "multimap 0.10.0", "once_cell", "petgraph", - "prettyplease 0.2.20", + "prettyplease 0.2.22", "prost 0.12.6", "prost-types 0.12.6", "regex", - "syn 2.0.74", + "syn 2.0.79", "tempfile", ] @@ -8967,7 +8810,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -8990,9 +8833,9 @@ dependencies = [ [[package]] name = "psm" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" dependencies = [ "cc", ] @@ -9091,17 +8934,17 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" dependencies = [ "bytes", "futures-io", "pin-project-lite", - "quinn-proto 0.11.6", - "quinn-udp 0.5.4", + "quinn-proto 0.11.8", + "quinn-udp 0.5.5", "rustc-hash 2.0.0", - "rustls 0.23.12", + "rustls 0.23.13", "socket2 0.5.7", "thiserror", "tokio", @@ -9145,15 +8988,15 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" +checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" dependencies = [ "bytes", "rand", "ring 0.17.8", "rustc-hash 2.0.0", - "rustls 0.23.12", + "rustls 0.23.13", "slab", "thiserror", "tinyvec", @@ -9188,22 +9031,22 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" dependencies = [ "libc", "once_cell", "socket2 0.5.7", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -9333,18 +9176,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", @@ -9368,7 +9211,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -9398,14 +9241,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -9419,13 +9262,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -9442,9 +9285,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "resolv-conf" @@ -9620,9 +9463,9 @@ checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver 1.0.23", ] @@ -9666,9 +9509,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ "bitflags 2.6.0", "errno", @@ -9709,22 +9552,22 @@ dependencies = [ "log", "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.6", + "rustls-webpki 0.102.8", "subtle 2.6.1", "zeroize", ] [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" dependencies = [ "log", "once_cell", "ring 0.17.8", "rustls-pki-types", - "rustls-webpki 0.102.6", + "rustls-webpki 0.102.8", "subtle 2.6.1", "zeroize", ] @@ -9743,12 +9586,12 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "rustls-pki-types", "schannel", "security-framework", @@ -9765,38 +9608,37 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" [[package]] name = "rustls-platform-verifier" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93bda3f493b9abe5b93b3e7e3ecde0df292f2bd28c0296b90586ee0055ff5123" +checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490" dependencies = [ "core-foundation", "core-foundation-sys", "jni", "log", "once_cell", - "rustls 0.23.12", - "rustls-native-certs 0.7.1", + "rustls 0.23.13", + "rustls-native-certs 0.7.3", "rustls-platform-verifier-android", - "rustls-webpki 0.102.6", + "rustls-webpki 0.102.8", "security-framework", "security-framework-sys", - "webpki-roots 0.26.3", + "webpki-roots 0.26.6", "winapi", ] @@ -9818,9 +9660,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring 0.17.8", "rustls-pki-types", @@ -9871,7 +9713,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "29.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "log", "sp-core", @@ -9881,8 +9723,8 @@ dependencies = [ [[package]] name = "sc-basic-authorship" -version = "0.44.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.45.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "futures", "futures-timer", @@ -9904,7 +9746,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.42.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "parity-scale-codec", "sp-api", @@ -9918,13 +9760,13 @@ dependencies = [ [[package]] name = "sc-chain-spec" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "array-bytes", "docify", "log", - "memmap2 0.9.4", + "memmap2 0.9.5", "parity-scale-codec", "sc-chain-spec-derive", "sc-client-api", @@ -9946,18 +9788,18 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "12.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "sc-cli" -version = "0.46.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.47.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "array-bytes", "chrono", @@ -9998,7 +9840,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "fnv", "futures", @@ -10025,7 +9867,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.44.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "hash-db", "kvdb", @@ -10049,10 +9891,9 @@ dependencies = [ [[package]] name = "sc-consensus" -version = "0.43.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.44.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ - "async-lock 3.4.0", "async-trait", "futures", "log", @@ -10070,13 +9911,12 @@ dependencies = [ "sp-state-machine", "substrate-prometheus-endpoint", "thiserror", - "tokio", ] [[package]] name = "sc-consensus-aura" -version = "0.44.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.45.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "async-trait", "futures", @@ -10104,8 +9944,8 @@ dependencies = [ [[package]] name = "sc-consensus-slots" -version = "0.43.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.44.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "async-trait", "futures", @@ -10172,8 +10012,7 @@ dependencies = [ "async-oneshot", "futures", "futures-timer", - "jsonrpsee 0.23.2", - "parity-scale-codec", + "jsonrpsee", "parking_lot 0.12.3", "sc-client-api", "sc-consensus-subspace", @@ -10220,8 +10059,8 @@ dependencies = [ [[package]] name = "sc-executor" -version = "0.40.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.40.1" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", @@ -10244,7 +10083,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.35.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "polkavm", "sc-allocator", @@ -10257,7 +10096,7 @@ dependencies = [ [[package]] name = "sc-executor-polkavm" version = "0.32.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "log", "polkavm", @@ -10268,7 +10107,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.35.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "anyhow", "cfg-if", @@ -10285,10 +10124,10 @@ dependencies = [ [[package]] name = "sc-informant" -version = "0.43.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.44.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ - "ansi_term", + "console", "futures", "futures-timer", "log", @@ -10303,7 +10142,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "33.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "array-bytes", "parking_lot 0.12.3", @@ -10316,8 +10155,8 @@ dependencies = [ [[package]] name = "sc-mixnet" -version = "0.14.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.15.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "array-bytes", "arrayvec", @@ -10327,7 +10166,7 @@ dependencies = [ "futures-timer", "log", "mixnet", - "multiaddr 0.18.1", + "multiaddr 0.18.2", "parity-scale-codec", "parking_lot 0.12.3", "sc-client-api", @@ -10345,8 +10184,8 @@ dependencies = [ [[package]] name = "sc-network" -version = "0.44.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.45.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "array-bytes", "async-channel 1.9.0", @@ -10396,8 +10235,8 @@ dependencies = [ [[package]] name = "sc-network-common" -version = "0.43.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.44.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "async-trait", "bitflags 1.3.2", @@ -10414,8 +10253,8 @@ dependencies = [ [[package]] name = "sc-network-gossip" -version = "0.44.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.45.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "ahash", "futures", @@ -10433,8 +10272,8 @@ dependencies = [ [[package]] name = "sc-network-light" -version = "0.43.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.44.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "array-bytes", "async-channel 1.9.0", @@ -10454,8 +10293,8 @@ dependencies = [ [[package]] name = "sc-network-sync" -version = "0.43.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.44.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "array-bytes", "async-channel 1.9.0", @@ -10491,8 +10330,8 @@ dependencies = [ [[package]] name = "sc-network-transactions" -version = "0.43.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.44.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "array-bytes", "futures", @@ -10511,14 +10350,14 @@ dependencies = [ [[package]] name = "sc-network-types" version = "0.12.1" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "bs58 0.5.1", "ed25519-dalek", "libp2p-identity", "litep2p", "log", - "multiaddr 0.18.1", + "multiaddr 0.18.2", "multihash 0.19.1", "rand", "thiserror", @@ -10527,8 +10366,8 @@ dependencies = [ [[package]] name = "sc-offchain" -version = "39.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "40.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "array-bytes", "bytes", @@ -10563,7 +10402,6 @@ dependencies = [ name = "sc-proof-of-time" version = "0.1.0" dependencies = [ - "atomic", "core_affinity", "derive_more 1.0.0", "futures", @@ -10592,7 +10430,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.18.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -10600,11 +10438,11 @@ dependencies = [ [[package]] name = "sc-rpc" -version = "39.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "40.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "futures", - "jsonrpsee 0.23.2", + "jsonrpsee", "log", "parity-scale-codec", "parking_lot 0.12.3", @@ -10632,10 +10470,10 @@ dependencies = [ [[package]] name = "sc-rpc-api" -version = "0.43.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.44.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ - "jsonrpsee 0.23.2", + "jsonrpsee", "parity-scale-codec", "sc-chain-spec", "sc-mixnet", @@ -10652,9 +10490,10 @@ dependencies = [ [[package]] name = "sc-rpc-server" -version = "16.0.2" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "17.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ + "dyn-clone", "forwarded-header-value", "futures", "governor", @@ -10662,8 +10501,9 @@ dependencies = [ "http-body-util", "hyper 1.4.1", "ip_network", - "jsonrpsee 0.23.2", + "jsonrpsee", "log", + "sc-rpc-api", "serde", "serde_json", "substrate-prometheus-endpoint", @@ -10674,14 +10514,14 @@ dependencies = [ [[package]] name = "sc-rpc-spec-v2" -version = "0.44.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.45.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "array-bytes", "futures", "futures-util", "hex", - "jsonrpsee 0.23.2", + "jsonrpsee", "log", "parity-scale-codec", "parking_lot 0.12.3", @@ -10706,15 +10546,15 @@ dependencies = [ [[package]] name = "sc-service" -version = "0.45.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.46.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "async-trait", "directories", "exit-future", "futures", "futures-timer", - "jsonrpsee 0.23.2", + "jsonrpsee", "log", "parity-scale-codec", "parking_lot 0.12.3", @@ -10771,7 +10611,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.36.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "log", "parity-scale-codec", @@ -10782,7 +10622,7 @@ dependencies = [ [[package]] name = "sc-storage-monitor" version = "0.22.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "clap", "fs4 0.7.0", @@ -10811,6 +10651,7 @@ dependencies = [ "sp-consensus-subspace", "sp-runtime", "strum_macros 0.26.4", + "subspace-core-primitives", "substrate-prometheus-endpoint", "thiserror", "tracing", @@ -10822,8 +10663,8 @@ version = "0.1.0" [[package]] name = "sc-sysinfo" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "38.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "derive_more 0.99.18", "futures", @@ -10843,8 +10684,8 @@ dependencies = [ [[package]] name = "sc-telemetry" -version = "24.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "25.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "chrono", "futures", @@ -10863,18 +10704,17 @@ dependencies = [ [[package]] name = "sc-tracing" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "37.0.1" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ - "ansi_term", "chrono", + "console", "is-terminal", "lazy_static", "libc", "log", "parity-scale-codec", "parking_lot 0.12.3", - "regex", "rustc-hash 1.1.0", "sc-client-api", "sc-tracing-proc-macro", @@ -10894,18 +10734,18 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "11.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "sc-transaction-pool" version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "async-trait", "futures", @@ -10932,7 +10772,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "async-trait", "futures", @@ -10948,7 +10788,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "17.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "async-channel 1.9.0", "futures", @@ -10980,7 +10820,7 @@ version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", "syn 1.0.109", @@ -10988,11 +10828,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -11105,9 +10945,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -11151,22 +10991,13 @@ checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" [[package]] name = "serde" -version = "1.0.206" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b3e4cd94123dd520a128bcd11e34d9e9e423e7e3e50425cb1b4b1e3549d0284" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] -[[package]] -name = "serde_arrays" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38636132857f68ec3d5f3eb121166d2af33cb55174c4d5ff645db6165cbef0fd" -dependencies = [ - "serde", -] - [[package]] name = "serde_bytes" version = "0.11.15" @@ -11178,20 +11009,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.206" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabfb6138d2383ea8208cf98ccf69cdfb1aff4088460681d84189aa259762f97" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "serde_json" -version = "1.0.124" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66ad62847a56b3dba58cc891acd13884b9c61138d330c0d7b6181713d4fce38d" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", "memchr", @@ -11216,14 +11047,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -11481,7 +11312,7 @@ dependencies = [ [[package]] name = "sp-api" version = "34.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "docify", "hash-db", @@ -11503,21 +11334,21 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "20.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "Inflector", "blake2 0.10.6", "expander", - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "sp-application-crypto" version = "38.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "parity-scale-codec", "scale-info", @@ -11529,7 +11360,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "26.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "docify", "integer-sqrt", @@ -11556,7 +11387,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "34.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "sp-api", "sp-inherents", @@ -11576,8 +11407,8 @@ dependencies = [ [[package]] name = "sp-blockchain" -version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "37.0.1" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "futures", "parity-scale-codec", @@ -11596,7 +11427,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.40.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "async-trait", "futures", @@ -11611,7 +11442,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.40.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "async-trait", "parity-scale-codec", @@ -11626,8 +11457,8 @@ dependencies = [ [[package]] name = "sp-consensus-beefy" -version = "22.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "22.1.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "lazy_static", "parity-scale-codec", @@ -11641,13 +11472,14 @@ dependencies = [ "sp-keystore", "sp-mmr-primitives", "sp-runtime", + "sp-weights", "strum 0.26.3", ] [[package]] name = "sp-consensus-grandpa" version = "21.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "finality-grandpa", "log", @@ -11663,8 +11495,8 @@ dependencies = [ [[package]] name = "sp-consensus-slots" -version = "0.40.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.40.1" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "parity-scale-codec", "scale-info", @@ -11701,7 +11533,7 @@ dependencies = [ [[package]] name = "sp-core" version = "34.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "array-bytes", "bitflags 1.3.2", @@ -11737,7 +11569,7 @@ dependencies = [ "sp-std", "sp-storage", "ss58-registry", - "substrate-bip39 0.6.0 (git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631)", + "substrate-bip39", "thiserror", "tracing", "w3f-bls", @@ -11747,7 +11579,7 @@ dependencies = [ [[package]] name = "sp-crypto-hashing" version = "0.1.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "blake2b_simd", "byteorder", @@ -11760,17 +11592,17 @@ dependencies = [ [[package]] name = "sp-crypto-hashing-proc-macro" version = "0.1.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "quote", "sp-crypto-hashing", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "sp-database" version = "10.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "kvdb", "parking_lot 0.12.3", @@ -11779,11 +11611,11 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "14.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -11902,7 +11734,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.29.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "environmental", "parity-scale-codec", @@ -11911,8 +11743,8 @@ dependencies = [ [[package]] name = "sp-genesis-builder" -version = "0.15.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "0.15.1" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "parity-scale-codec", "scale-info", @@ -11924,7 +11756,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "34.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -11937,7 +11769,7 @@ dependencies = [ [[package]] name = "sp-io" version = "38.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "bytes", "docify", @@ -11963,7 +11795,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "39.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "sp-core", "sp-runtime", @@ -11973,7 +11805,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.40.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", @@ -11984,7 +11816,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "11.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "thiserror", "zstd 0.12.4", @@ -12032,7 +11864,7 @@ dependencies = [ [[package]] name = "sp-metadata-ir" version = "0.7.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "frame-metadata", "parity-scale-codec", @@ -12042,7 +11874,7 @@ dependencies = [ [[package]] name = "sp-mixnet" version = "0.12.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "parity-scale-codec", "scale-info", @@ -12052,8 +11884,8 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" -version = "34.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "34.1.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "log", "parity-scale-codec", @@ -12079,7 +11911,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "34.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "sp-api", "sp-core", @@ -12089,7 +11921,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "13.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "backtrace", "lazy_static", @@ -12099,7 +11931,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "32.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "rustc-hash 1.1.0", "serde", @@ -12108,8 +11940,8 @@ dependencies = [ [[package]] name = "sp-runtime" -version = "39.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "39.0.1" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "docify", "either", @@ -12135,7 +11967,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "28.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "bytes", "impl-trait-for-tuples", @@ -12154,20 +11986,20 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "18.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "Inflector", "expander", - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "sp-session" -version = "35.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "36.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "parity-scale-codec", "scale-info", @@ -12180,8 +12012,8 @@ dependencies = [ [[package]] name = "sp-staking" -version = "34.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "36.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -12194,7 +12026,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.43.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "hash-db", "log", @@ -12214,7 +12046,7 @@ dependencies = [ [[package]] name = "sp-statement-store" version = "18.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "aes-gcm", "curve25519-dalek", @@ -12238,12 +12070,12 @@ dependencies = [ [[package]] name = "sp-std" version = "14.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" [[package]] name = "sp-storage" version = "21.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "impl-serde", "parity-scale-codec", @@ -12271,7 +12103,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "34.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "async-trait", "parity-scale-codec", @@ -12282,8 +12114,8 @@ dependencies = [ [[package]] name = "sp-tracing" -version = "17.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "17.0.1" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "parity-scale-codec", "tracing", @@ -12294,7 +12126,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "34.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "sp-api", "sp-runtime", @@ -12303,7 +12135,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "34.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "async-trait", "parity-scale-codec", @@ -12317,7 +12149,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "ahash", "hash-db", @@ -12340,7 +12172,7 @@ dependencies = [ [[package]] name = "sp-version" version = "37.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "impl-serde", "parity-scale-codec", @@ -12357,18 +12189,19 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "14.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "parity-scale-codec", + "proc-macro-warning 1.0.2", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "sp-wasm-interface" -version = "21.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "21.0.1" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "anyhow", "impl-trait-for-tuples", @@ -12380,7 +12213,7 @@ dependencies = [ [[package]] name = "sp-weights" version = "31.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "bounded-collections", "parity-scale-codec", @@ -12437,9 +12270,9 @@ dependencies = [ [[package]] name = "ss58-registry" -version = "1.47.0" +version = "1.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4743ce898933fbff7bbf414f497c459a782d496269644b3d650a398ae6a487ba" +checksum = "43fce22ed1df64d04b262351c8f9d5c6da4f76f79f25ad15529792f893fad25d" dependencies = [ "Inflector", "num-format", @@ -12458,8 +12291,8 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "staging-xcm" -version = "14.1.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "14.2.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "array-bytes", "bounded-collections", @@ -12470,6 +12303,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "serde", + "sp-runtime", "sp-weights", "xcm-procedural", ] @@ -12552,7 +12386,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -12569,21 +12403,11 @@ dependencies = [ "thiserror", ] -[[package]] -name = "subspace-chiapos" -version = "0.1.0" -source = "git+https://github.com/subspace/chiapos?rev=3b1ab3ca24764d25da30e0c8243e0bf304b776a5#3b1ab3ca24764d25da30e0c8243e0bf304b776a5" -dependencies = [ - "cc", - "zstd-sys", -] - [[package]] name = "subspace-core-primitives" version = "0.1.0" dependencies = [ "blake3", - "blst", "bytes", "criterion", "derive_more 1.0.0", @@ -12598,11 +12422,26 @@ dependencies = [ "rust-kzg-blst", "scale-info", "serde", - "serde_arrays", "spin 0.9.8", "static_assertions", "tracing", - "uint", + "uint 0.10.0", +] + +[[package]] +name = "subspace-data-retrieval" +version = "0.1.0" +dependencies = [ + "async-lock 3.4.0", + "async-trait", + "futures", + "parity-scale-codec", + "subspace-archiving", + "subspace-core-primitives", + "subspace-erasure-coding", + "thiserror", + "tokio", + "tracing", ] [[package]] @@ -12667,11 +12506,11 @@ dependencies = [ "event-listener 5.3.1", "event-listener-primitives", "fdlimit", - "fs4 0.8.4", + "fs4 0.9.1", "futures", "hex", "hwlocality", - "jsonrpsee 0.24.2", + "jsonrpsee", "mimalloc", "num_cpus", "parity-scale-codec", @@ -12695,7 +12534,7 @@ dependencies = [ "subspace-proof-of-space", "subspace-proof-of-space-gpu", "subspace-rpc-primitives", - "substrate-bip39 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-bip39", "supports-color", "tempfile", "thiserror", @@ -12831,9 +12670,9 @@ dependencies = [ "futures", "futures-timer", "hex", - "libp2p 0.54.0", + "libp2p 0.54.1", "libp2p-swarm-test", - "memmap2 0.9.4", + "memmap2 0.9.5", "nohash-hasher", "parity-scale-codec", "parking_lot 0.12.3", @@ -12885,7 +12724,6 @@ dependencies = [ "sc-consensus-slots", "sc-consensus-subspace", "sc-domains", - "sc-informant", "sc-keystore", "sc-network", "sc-network-sync", @@ -12940,7 +12778,6 @@ dependencies = [ "sha2 0.10.8", "spin 0.9.8", "static_assertions", - "subspace-chiapos", "subspace-core-primitives", ] @@ -12962,7 +12799,7 @@ dependencies = [ name = "subspace-proof-of-time" version = "0.1.0" dependencies = [ - "aes 0.9.0-pre.1", + "aes 0.9.0-pre.2", "core_affinity", "criterion", "rand", @@ -12994,7 +12831,6 @@ dependencies = [ "frame-system-benchmarking", "frame-system-rpc-runtime-api", "hex-literal", - "orml-vesting", "pallet-balances", "pallet-collective", "pallet-democracy", @@ -13002,7 +12838,6 @@ dependencies = [ "pallet-history-seeding", "pallet-messenger", "pallet-mmr", - "pallet-offences-subspace", "pallet-preimage", "pallet-rewards", "pallet-runtime-configs", @@ -13074,7 +12909,7 @@ dependencies = [ "frame-system-rpc-runtime-api", "futures", "hex", - "jsonrpsee 0.23.2", + "jsonrpsee", "mmr-gadget", "mmr-rpc", "pallet-transaction-payment-rpc", @@ -13082,7 +12917,6 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.12.3", "prometheus-client 0.22.3", - "prost 0.12.6", "rayon", "sc-basic-authorship", "sc-chain-spec", @@ -13102,7 +12936,6 @@ dependencies = [ "sc-proof-of-time", "sc-rpc", "sc-rpc-api", - "sc-rpc-spec-v2", "sc-service", "sc-subspace-block-relay", "sc-sysinfo", @@ -13203,12 +13036,11 @@ dependencies = [ "frame-support", "frame-system", "frame-system-rpc-runtime-api", - "orml-vesting", "pallet-balances", "pallet-domains", + "pallet-history-seeding", "pallet-messenger", "pallet-mmr", - "pallet-offences-subspace", "pallet-rewards", "pallet-runtime-configs", "pallet-subspace", @@ -13259,7 +13091,7 @@ dependencies = [ "domain-runtime-primitives", "frame-system", "futures", - "jsonrpsee 0.23.2", + "jsonrpsee", "mmr-gadget", "pallet-domains", "pallet-transaction-payment", @@ -13279,7 +13111,6 @@ dependencies = [ "sc-transaction-pool-api", "sc-utils", "sp-api", - "sp-application-crypto", "sp-blockchain", "sp-consensus", "sp-consensus-slots", @@ -13333,32 +13164,20 @@ dependencies = [ "zeroize", ] -[[package]] -name = "substrate-bip39" -version = "0.6.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" -dependencies = [ - "hmac 0.12.1", - "pbkdf2", - "schnorrkel", - "sha2 0.10.8", - "zeroize", -] - [[package]] name = "substrate-build-script-utils" version = "11.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" [[package]] name = "substrate-frame-rpc-system" -version = "38.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "39.0.0" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "docify", "frame-system-rpc-runtime-api", "futures", - "jsonrpsee 0.23.2", + "jsonrpsee", "log", "parity-scale-codec", "sc-rpc-api", @@ -13373,7 +13192,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.17.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "http-body-util", "hyper 1.4.1", @@ -13387,7 +13206,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "array-bytes", "async-trait", @@ -13413,13 +13232,14 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" -version = "24.0.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +version = "24.0.1" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "build-helper", "cargo_metadata", "console", "filetime", + "jobserver", "parity-wasm", "polkavm-linker", "sp-maybe-compressed-blob", @@ -13444,9 +13264,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "supports-color" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9829b314621dfc575df4e409e79f9d6a66a3bd707ab73f23cb4aa3a854ac854f" +checksum = "8775305acf21c96926c900ad056abeef436701108518cf890020387236ac5a77" dependencies = [ "is_ci", ] @@ -13464,9 +13284,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.74" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -13493,7 +13313,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -13525,9 +13345,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" dependencies = [ "filetime", "libc", @@ -13542,14 +13362,14 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", - "fastrand 2.1.0", + "fastrand 2.1.1", "once_cell", - "rustix 0.38.34", + "rustix 0.38.37", "windows-sys 0.59.0", ] @@ -13568,7 +13388,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.38.34", + "rustix 0.38.37", "windows-sys 0.48.0", ] @@ -13580,22 +13400,22 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -13704,9 +13524,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.2" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", @@ -13728,7 +13548,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -13747,16 +13567,16 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.12", + "rustls 0.23.13", "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -13781,9 +13601,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -13811,7 +13631,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit", ] [[package]] @@ -13825,26 +13645,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap 2.3.0", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.3.0", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow", ] [[package]] @@ -13857,7 +13666,6 @@ dependencies = [ "futures-util", "pin-project", "pin-project-lite", - "tokio", "tower-layer", "tower-service", "tracing", @@ -13881,15 +13689,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -13911,7 +13719,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -13959,6 +13767,7 @@ dependencies = [ "sharded-slab", "smallvec", "thread_local", + "time", "tracing", "tracing-core", "tracing-log", @@ -14020,7 +13829,7 @@ dependencies = [ "async-trait", "cfg-if", "data-encoding", - "enum-as-inner 0.6.0", + "enum-as-inner 0.6.1", "futures-channel", "futures-io", "futures-util", @@ -14120,9 +13929,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uint" @@ -14136,6 +13945,18 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "uint" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909988d098b2f738727b161a106cfc7cab00c539c2687a8836f8e565976fb53e" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + [[package]] name = "ulid" version = "1.1.3" @@ -14156,9 +13977,9 @@ checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" @@ -14171,21 +13992,21 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" @@ -14338,34 +14159,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -14375,9 +14197,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -14385,22 +14207,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wasm-instrument" @@ -14673,9 +14495,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -14709,9 +14531,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.3" +version = "0.26.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" dependencies = [ "rustls-pki-types", ] @@ -14725,7 +14547,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.34", + "rustix 0.38.37", ] [[package]] @@ -15034,18 +14856,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -15109,7 +14922,7 @@ dependencies = [ "der-parser 9.0.0", "lazy_static", "nom", - "oid-registry 0.7.0", + "oid-registry 0.7.1", "ring 0.17.8", "rusticata-macros", "thiserror", @@ -15124,25 +14937,25 @@ checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", "linux-raw-sys 0.4.14", - "rustix 0.38.34", + "rustix 0.38.37", ] [[package]] name = "xcm-procedural" version = "10.1.0" -source = "git+https://github.com/subspace/polkadot-sdk?rev=5626154d0781ac9a6ffd5a6207ed237f425ae631#5626154d0781ac9a6ffd5a6207ed237f425ae631" +source = "git+https://github.com/subspace/polkadot-sdk?rev=5871818e1d736f1843eb9078f886290695165c42#5871818e1d736f1843eb9078f886290695165c42" dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] name = "xml-rs" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "539a77ee7c0de333dcc6da69b177380a0b81e0dacfa4f7344c465a36871ee601" +checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" [[package]] name = "xmltree" @@ -15211,7 +15024,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] @@ -15231,7 +15044,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.79", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index f982230963..b0b82e9944 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,10 +14,6 @@ members = [ "test/subspace-test-runtime", "test/subspace-test-service", ] -exclude = [ - # TODO: We need to figure out what to do with sp-lightclient before unlocking it again - "crates/sp-lightclient", -] # The list of dependencies below (which can be both direct and indirect dependencies) are crates # that are suspected to be CPU-intensive, and that are unlikely to require debugging (as some of @@ -67,7 +63,6 @@ sha3 = { opt-level = 3 } smallvec = { opt-level = 3 } snow = { opt-level = 3 } subspace-archiving = { opt-level = 3 } -subspace-chiapos = { opt-level = 3 } subspace-core-primitives = { opt-level = 3 } subspace-erasure-coding = { opt-level = 3 } subspace-farmer-components = { opt-level = 3 } @@ -96,48 +91,52 @@ litep2p = { git = "https://github.com/subspace/litep2p", rev = "1ea540c6af3ed85a # Reason: We need to patch substrate dependency of frontier to our fork # TODO: Remove if/when we are using upstream substrate instead of fork [patch."https://github.com/paritytech/polkadot-sdk.git"] -frame-benchmarking = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-support = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-client-db = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-consensus-aura = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-common = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-telemetry = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-application-crypto = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-arithmetic = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus-aura = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-crypto-hashing = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-database = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-debug-derive = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-externalities = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-keystore = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime-interface = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-storage = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-trie = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-weights = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -staging-xcm = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -substrate-prometheus-endpoint = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -xcm-procedural = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-benchmarking = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-support = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-client-db = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-consensus-aura = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-common = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-telemetry = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-application-crypto = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-arithmetic = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus-aura = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-crypto-hashing = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-database = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-debug-derive = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-externalities = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-keystore = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime-interface = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-storage = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-trie = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-weights = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +staging-xcm = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +substrate-prometheus-endpoint = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +xcm-procedural = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } + +# De-duplicate extra copy that comes from Substrate repo +[patch."https://github.com/subspace/polkadot-sdk.git"] +substrate-bip39 = "0.6.0" diff --git a/Dockerfile-bootstrap-node b/Dockerfile-bootstrap-node index 088ee5af07..d7972a2d6d 100644 --- a/Dockerfile-bootstrap-node +++ b/Dockerfile-bootstrap-node @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -ARG RUSTC_VERSION=nightly-2024-08-01 +ARG RUSTC_VERSION=nightly-2024-09-26 ARG PROFILE=production ARG RUSTFLAGS # Workaround for https://github.com/rust-lang/cargo/issues/10583 @@ -33,7 +33,6 @@ COPY rust-toolchain.toml /code/rust-toolchain.toml COPY crates /code/crates COPY domains /code/domains -COPY orml /code/orml COPY shared /code/shared COPY test /code/test diff --git a/Dockerfile-bootstrap-node.aarch64 b/Dockerfile-bootstrap-node.aarch64 index 9b715e14ab..ce28fd967a 100644 --- a/Dockerfile-bootstrap-node.aarch64 +++ b/Dockerfile-bootstrap-node.aarch64 @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -ARG RUSTC_VERSION=nightly-2024-08-01 +ARG RUSTC_VERSION=nightly-2024-09-26 ARG PROFILE=production ARG RUSTFLAGS # Workaround for https://github.com/rust-lang/cargo/issues/10583 @@ -33,7 +33,6 @@ COPY rust-toolchain.toml /code/rust-toolchain.toml COPY crates /code/crates COPY domains /code/domains -COPY orml /code/orml COPY shared /code/shared COPY test /code/test diff --git a/Dockerfile-farmer b/Dockerfile-farmer index 81c554f9c6..112f5b1db4 100644 --- a/Dockerfile-farmer +++ b/Dockerfile-farmer @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -ARG RUSTC_VERSION=nightly-2024-08-01 +ARG RUSTC_VERSION=nightly-2024-09-26 ARG PROFILE=production ARG RUSTFLAGS # Workaround for https://github.com/rust-lang/cargo/issues/10583 @@ -33,7 +33,6 @@ COPY rust-toolchain.toml /code/rust-toolchain.toml COPY crates /code/crates COPY domains /code/domains -COPY orml /code/orml COPY shared /code/shared COPY test /code/test diff --git a/Dockerfile-farmer.aarch64 b/Dockerfile-farmer.aarch64 index 0fc6d467cb..c4138a1c73 100644 --- a/Dockerfile-farmer.aarch64 +++ b/Dockerfile-farmer.aarch64 @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -ARG RUSTC_VERSION=nightly-2024-08-01 +ARG RUSTC_VERSION=nightly-2024-09-26 ARG PROFILE=production ARG RUSTFLAGS # Workaround for https://github.com/rust-lang/cargo/issues/10583 @@ -33,7 +33,6 @@ COPY rust-toolchain.toml /code/rust-toolchain.toml COPY crates /code/crates COPY domains /code/domains -COPY orml /code/orml COPY shared /code/shared COPY test /code/test diff --git a/Dockerfile-node b/Dockerfile-node index a72596b940..b051488fdc 100644 --- a/Dockerfile-node +++ b/Dockerfile-node @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -ARG RUSTC_VERSION=nightly-2024-08-01 +ARG RUSTC_VERSION=nightly-2024-09-26 ARG PROFILE=production ARG RUSTFLAGS # Workaround for https://github.com/rust-lang/cargo/issues/10583 @@ -33,7 +33,6 @@ COPY rust-toolchain.toml /code/rust-toolchain.toml COPY crates /code/crates COPY domains /code/domains -COPY orml /code/orml COPY shared /code/shared COPY test /code/test diff --git a/Dockerfile-node.aarch64 b/Dockerfile-node.aarch64 index 620e955d36..4166286eab 100644 --- a/Dockerfile-node.aarch64 +++ b/Dockerfile-node.aarch64 @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -ARG RUSTC_VERSION=nightly-2024-08-01 +ARG RUSTC_VERSION=nightly-2024-09-26 ARG PROFILE=production ARG RUSTFLAGS # Workaround for https://github.com/rust-lang/cargo/issues/10583 @@ -33,7 +33,6 @@ COPY rust-toolchain.toml /code/rust-toolchain.toml COPY crates /code/crates COPY domains /code/domains -COPY orml /code/orml COPY shared /code/shared COPY test /code/test diff --git a/Dockerfile-runtime b/Dockerfile-runtime index b0afc621fa..e6ca1d2377 100644 --- a/Dockerfile-runtime +++ b/Dockerfile-runtime @@ -1,6 +1,6 @@ FROM ubuntu:20.04 -ARG RUSTC_VERSION=nightly-2024-08-01 +ARG RUSTC_VERSION=nightly-2024-09-26 ARG PROFILE=production ARG RUSTFLAGS # Workaround for https://github.com/rust-lang/cargo/issues/10583 @@ -33,7 +33,6 @@ COPY rust-toolchain.toml /code/rust-toolchain.toml COPY crates /code/crates COPY domains /code/domains -COPY orml /code/orml COPY shared /code/shared COPY test /code/test diff --git a/README.md b/README.md index 5a75a79c8c..0a21038b52 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ The structure of this repository is the following: - `subspace-node` is an implementation of the node for Subspace protocol - `subspace-farmer` is a CLI farmer app - `domains` contains client and runtime code for decoupled execution and domains -- `orml` contains a fork of orml vesting pallet with modified dependencies +- `shared` contains low-level primitives used by the node, farmer, and other applications ## How to run diff --git a/crates/pallet-domains/Cargo.toml b/crates/pallet-domains/Cargo.toml index 0f5731138f..9f58a57b6c 100644 --- a/crates/pallet-domains/Cargo.toml +++ b/crates/pallet-domains/Cargo.toml @@ -14,31 +14,31 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } domain-runtime-primitives = { version = "0.1.0", default-features = false, path = "../../domains/primitives/runtime" } -frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } log = { version = "0.4.22", default-features = false } -pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-consensus-subspace = { version = "0.1.0", default-features = false, path = "../sp-consensus-subspace" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", default-features = false, path = "../sp-domains" } sp-domains-fraud-proof = { version = "0.1.0", default-features = false, path = "../sp-domains-fraud-proof" } -sp-io = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-io = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { version = "0.1.0", default-features = false, path = "../sp-subspace-mmr" } -sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", features = ["serde"] } +sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", features = ["serde"] } subspace-core-primitives = { version = "0.1.0", default-features = false, path = "../subspace-core-primitives" } subspace-runtime-primitives = { version = "0.1.0", default-features = false, path = "../subspace-runtime-primitives" } [dev-dependencies] domain-pallet-executive = { version = "0.1.0", default-features = false, path = "../../domains/pallets/executive" } hex-literal = "0.4.1" -pallet-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-block-fees = { version = "0.1.0", default-features = false, path = "../../domains/pallets/block-fees" } -sp-externalities = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-externalities = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/crates/pallet-domains/src/benchmarking.rs b/crates/pallet-domains/src/benchmarking.rs index fb92dd58b1..f0afbb6ef4 100644 --- a/crates/pallet-domains/src/benchmarking.rs +++ b/crates/pallet-domains/src/benchmarking.rs @@ -7,8 +7,8 @@ use crate::block_tree::{prune_receipt, BlockTreeNode}; use crate::bundle_storage_fund::refund_storage_fee; use crate::domain_registry::DomainConfig; use crate::staking::{ - do_convert_previous_epoch_deposits, do_mark_operators_as_slashed, do_reward_operators, - OperatorConfig, OperatorStatus, WithdrawStake, + do_convert_previous_epoch_withdrawal, do_mark_operators_as_slashed, do_reward_operators, + Error as StakingError, OperatorConfig, OperatorStatus, WithdrawStake, }; use crate::staking_epoch::{ do_finalize_domain_current_epoch, do_finalize_domain_epoch_staking, do_slash_operator, @@ -725,10 +725,10 @@ mod benchmarks { /// Benchmark `unlock_funds` extrinsic with the worst possible conditions: /// - Unlock a full withdrawal which also remove the deposit storage for the nominator #[benchmark] - fn unlock_funds() { + fn unlock_funds(w: Linear<1, { T::WithdrawalLimit::get() }>) { let nominator = account("nominator", 1, SEED); let minimum_nominator_stake = T::MinNominatorStake::get(); - let staking_amount = T::MinOperatorStake::get(); + let staking_amount = T::MinOperatorStake::get() * 3u32.into(); T::Currency::set_balance(&nominator, staking_amount + T::MinNominatorStake::get()); let domain_id = register_domain::(); @@ -741,22 +741,32 @@ mod benchmarks { do_finalize_domain_epoch_staking::(domain_id) .expect("finalize domain staking should success"); - // Withdraw all deposit - let withdraw_amount = { - let mut deposit = - Deposits::::get(operator_id, nominator.clone()).expect("deposit must exist"); - do_convert_previous_epoch_deposits::(operator_id, &mut deposit) - .expect("convert must success"); - deposit.known.shares - }; + // Request `w` number of withdrawal in different epoch and withdraw all the stake in the last one + for _ in 1..w { + assert_ok!(Domains::::withdraw_stake( + RawOrigin::Signed(nominator.clone()).into(), + operator_id, + WithdrawStake::Stake(T::MinOperatorStake::get() / w.into()), + )); + do_finalize_domain_epoch_staking::(domain_id) + .expect("finalize domain staking should success"); + } assert_ok!(Domains::::withdraw_stake( RawOrigin::Signed(nominator.clone()).into(), operator_id, - WithdrawStake::Share(withdraw_amount), + WithdrawStake::All, )); do_finalize_domain_epoch_staking::(domain_id) .expect("finalize domain staking should success"); + Withdrawals::::try_mutate(operator_id, nominator.clone(), |maybe_withdrawal| { + let withdrawal = maybe_withdrawal.as_mut().unwrap(); + do_convert_previous_epoch_withdrawal::(operator_id, withdrawal)?; + assert_eq!(withdrawal.withdrawals.len() as u32, w); + Ok::<(), StakingError>(()) + }) + .unwrap(); + // Update the `LatestConfirmedDomainExecutionReceipt` so unlock can success let confirmed_domain_block_number = Pallet::::latest_confirmed_domain_block_number(domain_id) @@ -1013,11 +1023,11 @@ mod benchmarks { fn run_to_block(block_number: BlockNumberFor, parent_hash: T::Hash) { if let Some(parent_block_number) = block_number.checked_sub(&One::one()) { - as Hooks>>::on_finalize(parent_block_number); + Domains::::on_finalize(parent_block_number); } System::::set_block_number(block_number); System::::initialize(&block_number, &parent_hash, &Default::default()); - as Hooks>>::on_initialize(block_number); + Domains::::on_initialize(block_number); System::::finalize(); } diff --git a/crates/pallet-domains/src/bundle_storage_fund.rs b/crates/pallet-domains/src/bundle_storage_fund.rs index 2cf2c1f7d2..76376668e3 100644 --- a/crates/pallet-domains/src/bundle_storage_fund.rs +++ b/crates/pallet-domains/src/bundle_storage_fund.rs @@ -27,6 +27,7 @@ pub enum Error { FailToDeposit, WithdrawAndHold, BalanceTransfer, + FailToWithdraw, } /// The type of system account being created. @@ -184,7 +185,7 @@ pub fn withdraw_and_hold( } let storage_fund_acc = storage_fund_account::(operator_id); - let storage_fund_hold_id = T::HoldIdentifier::storage_fund_withdrawal(operator_id); + let storage_fund_hold_id = T::HoldIdentifier::storage_fund_withdrawal(); T::Currency::transfer_and_hold( &storage_fund_hold_id, &storage_fund_acc, @@ -197,6 +198,27 @@ pub fn withdraw_and_hold( .map_err(|_| Error::WithdrawAndHold) } +/// Transfer the given `withdraw_amount` of balance from the bundle storage fund to the +/// given `dest_account` +pub fn withdraw_to( + operator_id: OperatorId, + dest_account: &T::AccountId, + withdraw_amount: BalanceOf, +) -> Result, Error> { + if withdraw_amount.is_zero() { + return Ok(Zero::zero()); + } + + let storage_fund_acc = storage_fund_account::(operator_id); + T::Currency::transfer( + &storage_fund_acc, + dest_account, + withdraw_amount, + Preservation::Expendable, + ) + .map_err(|_| Error::FailToWithdraw) +} + /// Return the total balance of the bundle storage fund the given `operator_id` pub fn total_balance(operator_id: OperatorId) -> BalanceOf { let storage_fund_acc = storage_fund_account::(operator_id); diff --git a/crates/pallet-domains/src/domain_registry.rs b/crates/pallet-domains/src/domain_registry.rs index 6a8b60b3a4..f0d8c8eaf9 100644 --- a/crates/pallet-domains/src/domain_registry.rs +++ b/crates/pallet-domains/src/domain_registry.rs @@ -147,6 +147,8 @@ pub struct DomainObject { pub domain_config: DomainConfig, /// Domain runtime specific information. pub domain_runtime_info: DomainRuntimeInfo, + /// The amount of balance hold on the domain owner account + pub domain_instantiation_deposit: Balance, } pub(crate) fn can_instantiate_domain( @@ -205,6 +207,7 @@ pub(crate) fn do_instantiate_domain( ) -> Result { can_instantiate_domain::(&owner_account_id, &domain_config)?; + let domain_instantiation_deposit = T::DomainInstantiationDeposit::get(); let domain_id = NextDomainId::::get(); let runtime_obj = RuntimeRegistry::::mutate(domain_config.runtime_id, |maybe_runtime_obj| { let mut runtime_object = maybe_runtime_obj @@ -277,17 +280,18 @@ pub(crate) fn do_instantiate_domain( genesis_receipt_hash, domain_config, domain_runtime_info, + domain_instantiation_deposit, }; DomainRegistry::::insert(domain_id, domain_obj); let next_domain_id = domain_id.checked_add(&1.into()).ok_or(Error::MaxDomainId)?; NextDomainId::::set(next_domain_id); - // Lock up fund of the domain instance creator + // Lock up `domain_instantiation_deposit` amount of fund of the domain instance creator T::Currency::hold( - &T::HoldIdentifier::domain_instantiation_id(domain_id), + &T::HoldIdentifier::domain_instantiation_id(), &owner_account_id, - T::DomainInstantiationDeposit::get(), + domain_instantiation_deposit, ) .map_err(|_| Error::BalanceFreeze)?; diff --git a/crates/pallet-domains/src/lib.rs b/crates/pallet-domains/src/lib.rs index 47681d3360..6fabde4473 100644 --- a/crates/pallet-domains/src/lib.rs +++ b/crates/pallet-domains/src/lib.rs @@ -64,9 +64,9 @@ use sp_consensus_subspace::WrappedPotOutput; use sp_core::H256; use sp_domains::bundle_producer_election::BundleProducerElectionParams; use sp_domains::{ - DomainBlockLimit, DomainBundleLimit, DomainId, DomainInstanceData, ExecutionReceipt, - OpaqueBundle, OperatorId, OperatorPublicKey, OperatorSignature, ProofOfElection, RuntimeId, - SealedSingletonReceipt, DOMAIN_EXTRINSICS_SHUFFLING_SEED_SUBJECT, EMPTY_EXTRINSIC_ROOT, + DomainBundleLimit, DomainId, DomainInstanceData, ExecutionReceipt, OpaqueBundle, OperatorId, + OperatorPublicKey, OperatorSignature, ProofOfElection, RuntimeId, SealedSingletonReceipt, + DOMAIN_EXTRINSICS_SHUFFLING_SEED_SUBJECT, EMPTY_EXTRINSIC_ROOT, }; use sp_domains_fraud_proof::fraud_proof::{ DomainRuntimeCodeAt, FraudProof, FraudProofVariant, InvalidBlockFeesProof, @@ -84,7 +84,8 @@ use sp_runtime::transaction_validity::TransactionPriority; use sp_runtime::{RuntimeAppPublic, SaturatedConversion, Saturating}; use sp_subspace_mmr::{ConsensusChainMmrLeafProof, MmrProofVerifier}; pub use staking::OperatorConfig; -use subspace_core_primitives::{BlockHash, PotOutput, SlotNumber, U256}; +use subspace_core_primitives::pot::PotOutput; +use subspace_core_primitives::{BlockHash, SlotNumber, U256}; /// Maximum number of nominators to slash within a give operator at a time. pub const MAX_NOMINATORS_TO_SLASH: u32 = 10; @@ -97,9 +98,9 @@ pub(crate) type FungibleHoldId = pub(crate) type NominatorId = ::AccountId; pub trait HoldIdentifier { - fn staking_staked(operator_id: OperatorId) -> FungibleHoldId; - fn domain_instantiation_id(domain_id: DomainId) -> FungibleHoldId; - fn storage_fund_withdrawal(operator_id: OperatorId) -> FungibleHoldId; + fn staking_staked() -> FungibleHoldId; + fn domain_instantiation_id() -> FungibleHoldId; + fn storage_fund_withdrawal() -> FungibleHoldId; } pub trait BlockSlot { @@ -171,8 +172,6 @@ pub(crate) type StateRootOf = <::Hashing as Hash>: #[frame_support::pallet] mod pallet { - #![allow(clippy::large_enum_variant)] - #[cfg(not(feature = "runtime-benchmarks"))] use crate::block_tree::AcceptedReceiptType; use crate::block_tree::{ @@ -431,6 +430,12 @@ mod pallet { /// Hook to handle chain rewards. type OnChainRewards: OnChainRewards>; + + /// The max number of withdrawals per nominator that may exist at any time, + /// once this limit is reached, the nominator need to unlock the withdrawal + /// before requesting new withdrawal. + #[pallet::constant] + type WithdrawalLimit: Get; } #[pallet::pallet] @@ -545,6 +550,11 @@ mod pallet { OptionQuery, >; + /// The amount of balance the nominator hold for a given operator + #[pallet::storage] + pub(super) type DepositOnHold = + StorageMap<_, Identity, (OperatorId, NominatorId), BalanceOf, ValueQuery>; + /// Tracks the nominator count under given operator. /// This storage is necessary since CountedStorageNMap does not support prefix key count, so /// cannot use that storage type for `Nominators` storage. @@ -613,13 +623,11 @@ mod pallet { pub(super) type NewAddedHeadReceipt = StorageMap<_, Identity, DomainId, T::DomainHash, OptionQuery>; - /// The consensus block hash used to verify ER, - /// only store the consensus block hash for a domain + /// Map of consensus block hashes. + /// + /// The consensus block hash used to verify ER, only store the consensus block hash for a domain /// if that consensus block contains bundle of the domain, the hash will be pruned when the ER /// that point to the consensus block is pruned. - /// - /// TODO: this storage is unbounded in some cases, see https://github.com/autonomys/subspace/issues/1673 - /// for more details, this will be fixed once https://github.com/autonomys/subspace/issues/1731 is implemented. #[pallet::storage] #[pallet::getter(fn consensus_block_info)] pub type ConsensusBlockHash = @@ -713,6 +721,7 @@ mod pallet { pub type DomainRuntimeUpgrades = StorageValue<_, Vec, ValueQuery>; /// Temporary storage to hold the sudo calls meant for the Domains. + /// /// Storage is cleared when there are any successful bundles in the next block. /// Only one sudo call is allowed per domain per consensus block. #[pallet::storage] @@ -720,6 +729,7 @@ mod pallet { StorageMap<_, Identity, DomainId, DomainSudoCall, ValueQuery>; /// Storage that hold a list of all frozen domains. + /// /// A frozen domain does not accept the bundles but does accept a fraud proof. #[pallet::storage] pub type FrozenDomains = StorageValue<_, BTreeSet, ValueQuery>; @@ -2229,7 +2239,7 @@ impl Pallet { fn validate_eligibility( to_sign: &[u8], signature: &OperatorSignature, - proof_of_election: &ProofOfElection, + proof_of_election: &ProofOfElection, domain_config: &DomainConfig>, pre_dispatch: bool, ) -> Result<(), BundleError> { @@ -2678,14 +2688,6 @@ impl Pallet { .map(|er| (er.domain_block_number, er.domain_block_hash)) } - /// Returns the domain block limit of the given domain. - pub fn domain_block_limit(domain_id: DomainId) -> Option { - DomainRegistry::::get(domain_id).map(|domain_obj| DomainBlockLimit { - max_block_size: domain_obj.domain_config.max_block_size, - max_block_weight: domain_obj.domain_config.max_block_weight, - }) - } - /// Returns the domain bundle limit of the given domain pub fn domain_bundle_limit( domain_id: DomainId, diff --git a/crates/pallet-domains/src/runtime_registry.rs b/crates/pallet-domains/src/runtime_registry.rs index 3956c23d76..f1e22056b2 100644 --- a/crates/pallet-domains/src/runtime_registry.rs +++ b/crates/pallet-domains/src/runtime_registry.rs @@ -342,8 +342,7 @@ mod tests { impl_version: 1, apis: Default::default(), transaction_version: 1, - state_version: 0, - extrinsic_state_version: 0, + system_version: 0, }; let read_runtime_version = ReadRuntimeVersion(version.encode()); @@ -511,8 +510,7 @@ mod tests { impl_version: 1, apis: Default::default(), transaction_version: 1, - state_version: 0, - extrinsic_state_version: 0, + system_version: 0, }; ext.execute_with(|| { diff --git a/crates/pallet-domains/src/staking.rs b/crates/pallet-domains/src/staking.rs index 0fea28948c..8f733e3643 100644 --- a/crates/pallet-domains/src/staking.rs +++ b/crates/pallet-domains/src/staking.rs @@ -11,11 +11,11 @@ use crate::pallet::{ }; use crate::staking_epoch::{mint_funds, mint_into_treasury}; use crate::{ - BalanceOf, Config, DomainBlockNumberFor, Event, HoldIdentifier, NominatorId, + BalanceOf, Config, DepositOnHold, DomainBlockNumberFor, Event, HoldIdentifier, NominatorId, OperatorEpochSharePrice, Pallet, ReceiptHashFor, SlashedReason, }; use codec::{Decode, Encode}; -use frame_support::traits::fungible::{Inspect, InspectHold, MutateHold}; +use frame_support::traits::fungible::{Inspect, MutateHold}; use frame_support::traits::tokens::{Fortitude, Precision, Preservation}; use frame_support::{ensure, PalletError}; use scale_info::TypeInfo; @@ -122,6 +122,8 @@ pub(crate) struct Withdrawal { /// Total withdrawal amount requested by the nominator that are in unlocking state excluding withdrawal /// in shares and the storage fee pub(crate) total_withdrawal_amount: Balance, + /// Total amount of storage fee on withdraw (including withdrawal in shares) + pub(crate) total_storage_fee_withdrawal: Balance, /// Individual withdrawal amounts with their unlocking block for a given domain pub(crate) withdrawals: VecDeque>, /// Withdrawal that was initiated by nominator and not converted to balance due to @@ -131,7 +133,6 @@ pub(crate) struct Withdrawal { #[derive(TypeInfo, Debug, Encode, Decode, Clone, PartialEq, Eq)] pub(crate) struct WithdrawalInBalance { - pub(crate) domain_id: DomainId, pub(crate) unlock_at_confirmed_domain_block_number: DomainBlockNumber, pub(crate) amount_to_unlock: Balance, pub(crate) storage_fee_refund: Balance, @@ -189,8 +190,7 @@ pub struct Operator { /// The status of the operator, it may be stale due to the `OperatorStatus::PendingSlash` is /// not assigned to this field directly, thus MUST use the `status()` method to query the status /// instead. - /// TODO: update the filed to `_status` to avoid accidental access in next network reset - status: OperatorStatus, + partial_status: OperatorStatus, /// Total deposits during the previous epoch pub deposits_in_epoch: Balance, /// Total withdrew shares during the previous epoch @@ -201,17 +201,17 @@ pub struct Operator { impl Operator { pub fn status(&self, operator_id: OperatorId) -> &OperatorStatus { - if matches!(self.status, OperatorStatus::Slashed) { + if matches!(self.partial_status, OperatorStatus::Slashed) { &OperatorStatus::Slashed } else if Pallet::::is_operator_pending_to_slash(self.current_domain_id, operator_id) { &OperatorStatus::PendingSlash } else { - &self.status + &self.partial_status } } pub fn update_status(&mut self, new_status: OperatorStatus) { - self.status = new_status; + self.partial_status = new_status; } } @@ -231,7 +231,7 @@ impl Operator( current_total_stake: Zero::zero(), current_epoch_rewards: Zero::zero(), current_total_shares: Zero::zero(), - status: OperatorStatus::Registered, + partial_status: OperatorStatus::Registered, // sum total deposits added during this epoch. deposits_in_epoch: new_deposit.staking, withdrawals_in_epoch: Zero::zero(), @@ -541,10 +542,10 @@ pub(crate) fn do_convert_previous_epoch_withdrawal( }; if let Some(WithdrawalInShares { - domain_epoch, unlock_at_confirmed_domain_block_number, shares, storage_fee_refund, + domain_epoch: _, }) = withdrawal.withdrawal_in_shares.take() { let withdrawal_amount = epoch_share_price.shares_to_stake::(shares); @@ -552,10 +553,8 @@ pub(crate) fn do_convert_previous_epoch_withdrawal( .total_withdrawal_amount .checked_add(&withdrawal_amount) .ok_or(Error::BalanceOverflow)?; - let (domain_id, _) = domain_epoch.deconstruct(); let withdraw_in_balance = WithdrawalInBalance { - domain_id, unlock_at_confirmed_domain_block_number, amount_to_unlock: withdrawal_amount, storage_fee_refund, @@ -660,7 +659,14 @@ pub(crate) fn hold_deposit( Error::InsufficientBalance ); - let pending_deposit_hold_id = T::HoldIdentifier::staking_staked(operator_id); + DepositOnHold::::try_mutate((operator_id, who), |deposit_on_hold| { + *deposit_on_hold = deposit_on_hold + .checked_add(&amount) + .ok_or(Error::BalanceOverflow)?; + Ok(()) + })?; + + let pending_deposit_hold_id = T::HoldIdentifier::staking_staked(); T::Currency::hold(&pending_deposit_hold_id, who, amount).map_err(|_| Error::BalanceFreeze)?; Ok(()) @@ -801,8 +807,10 @@ pub(crate) fn do_withdraw_stake( Withdrawals::::try_mutate(operator_id, nominator_id.clone(), |maybe_withdrawal| { if let Some(withdrawal) = maybe_withdrawal { do_convert_previous_epoch_withdrawal::(operator_id, withdrawal)?; + if withdrawal.withdrawals.len() as u32 >= T::WithdrawalLimit::get() { + return Err(Error::TooManyWithdrawals); + } } - Ok(()) })?; @@ -952,6 +960,10 @@ pub(crate) fn do_withdraw_stake( }, }; withdrawal.withdrawal_in_shares = Some(new_withdrawal_in_shares); + withdrawal.total_storage_fee_withdrawal = withdrawal + .total_storage_fee_withdrawal + .checked_add(&withdraw_storage_fee) + .ok_or(Error::BalanceOverflow)?; *maybe_withdrawal = Some(withdrawal); Ok(()) @@ -974,64 +986,102 @@ pub(crate) fn do_unlock_funds( Withdrawals::::try_mutate_exists(operator_id, nominator_id.clone(), |maybe_withdrawal| { let withdrawal = maybe_withdrawal.as_mut().ok_or(Error::MissingWithdrawal)?; do_convert_previous_epoch_withdrawal::(operator_id, withdrawal)?; - let WithdrawalInBalance { - domain_id, - unlock_at_confirmed_domain_block_number, - amount_to_unlock, - storage_fee_refund, - } = withdrawal - .withdrawals - .pop_front() - .ok_or(Error::MissingWithdrawal)?; + + ensure!(!withdrawal.withdrawals.is_empty(), Error::MissingWithdrawal); let latest_confirmed_block_number = - Pallet::::latest_confirmed_domain_block_number(domain_id); + Pallet::::latest_confirmed_domain_block_number(operator.current_domain_id); + + let mut total_unlocked_amount = BalanceOf::::zero(); + let mut total_storage_fee_refund = BalanceOf::::zero(); + loop { + if withdrawal + .withdrawals + .front() + .map(|w| w.unlock_at_confirmed_domain_block_number > latest_confirmed_block_number) + .unwrap_or(true) + { + break; + } + + let WithdrawalInBalance { + amount_to_unlock, + storage_fee_refund, + .. + } = withdrawal + .withdrawals + .pop_front() + .expect("Must not empty as checked above; qed"); + + total_unlocked_amount = total_unlocked_amount + .checked_add(&amount_to_unlock) + .ok_or(Error::BalanceOverflow)?; + + total_storage_fee_refund = total_storage_fee_refund + .checked_add(&storage_fee_refund) + .ok_or(Error::BalanceOverflow)?; + } + + // There is withdrawal but none being processed meaning the first withdrawal's unlock period has + // not completed yet ensure!( - unlock_at_confirmed_domain_block_number <= latest_confirmed_block_number, + !total_unlocked_amount.is_zero() || !total_storage_fee_refund.is_zero(), Error::UnlockPeriodNotComplete ); // deduct the amount unlocked from total withdrawal.total_withdrawal_amount = withdrawal .total_withdrawal_amount - .checked_sub(&amount_to_unlock) + .checked_sub(&total_unlocked_amount) .ok_or(Error::BalanceUnderflow)?; - let staked_hold_id = T::HoldIdentifier::staking_staked(operator_id); - let locked_amount = T::Currency::balance_on_hold(&staked_hold_id, &nominator_id); - let amount_to_release: BalanceOf = { - // if the amount to release is more than currently locked, - // mint the diff and release the rest - if let Some(amount_to_mint) = amount_to_unlock.checked_sub(&locked_amount) { - // mint any gains - mint_funds::(&nominator_id, amount_to_mint)?; - locked_amount - } else { - amount_to_unlock - } - }; + withdrawal.total_storage_fee_withdrawal = withdrawal + .total_storage_fee_withdrawal + .checked_sub(&total_storage_fee_refund) + .ok_or(Error::BalanceUnderflow)?; + + // If the amount to release is more than currently locked, + // mint the diff and release the rest + let (amount_to_mint, amount_to_release) = DepositOnHold::::try_mutate( + (operator_id, nominator_id.clone()), + |deposit_on_hold| { + let amount_to_release = total_unlocked_amount.min(*deposit_on_hold); + let amount_to_mint = total_unlocked_amount.saturating_sub(*deposit_on_hold); + + *deposit_on_hold = deposit_on_hold.saturating_sub(amount_to_release); + + Ok((amount_to_mint, amount_to_release)) + }, + )?; + // Mint any gains + if !amount_to_mint.is_zero() { + mint_funds::(&nominator_id, amount_to_mint)?; + } // Release staking fund - T::Currency::release( - &staked_hold_id, - &nominator_id, - amount_to_release, - Precision::Exact, - ) - .map_err(|_| Error::RemoveLock)?; + if !amount_to_release.is_zero() { + let staked_hold_id = T::HoldIdentifier::staking_staked(); + T::Currency::release( + &staked_hold_id, + &nominator_id, + amount_to_release, + Precision::Exact, + ) + .map_err(|_| Error::RemoveLock)?; + } Pallet::::deposit_event(Event::NominatedStakedUnlocked { operator_id, nominator_id: nominator_id.clone(), - unlocked_amount: amount_to_unlock, + unlocked_amount: total_unlocked_amount, }); // Release storage fund - let storage_fund_hold_id = T::HoldIdentifier::storage_fund_withdrawal(operator_id); + let storage_fund_hold_id = T::HoldIdentifier::storage_fund_withdrawal(); T::Currency::release( &storage_fund_hold_id, &nominator_id, - storage_fee_refund, + total_storage_fee_refund, Precision::Exact, ) .map_err(|_| Error::RemoveLock)?; @@ -1039,7 +1089,7 @@ pub(crate) fn do_unlock_funds( Pallet::::deposit_event(Event::StorageFeeUnlocked { operator_id, nominator_id: nominator_id.clone(), - storage_fee: storage_fee_refund, + storage_fee: total_storage_fee_refund, }); // if there are no withdrawals, then delete the storage as well @@ -1097,39 +1147,38 @@ pub(crate) fn do_unlock_nominator( let share_price = SharePrice::new::(total_shares, total_stake); - let staked_hold_id = T::HoldIdentifier::staking_staked(operator_id); - let mut total_storage_fee_deposit = operator.total_storage_fee_deposit; let storage_fund_redeem_price = bundle_storage_fund::storage_fund_redeem_price::( operator_id, total_storage_fee_deposit, ); - let storage_fund_hold_id = T::HoldIdentifier::storage_fund_withdrawal(operator_id); let mut deposit = Deposits::::take(operator_id, nominator_id.clone()) .ok_or(Error::UnknownNominator)?; // convert any deposits from the previous epoch to shares do_convert_previous_epoch_deposits::(operator_id, &mut deposit)?; - let current_locked_amount = T::Currency::balance_on_hold(&staked_hold_id, &nominator_id); - // if there are any withdrawals from this operator, account for them // if the withdrawals has share price noted, then convert them to SSC // if no share price, then it must be intitated in the epoch before operator de-registered, // so get the shares as is and include them in the total staked shares. - let (amount_ready_to_withdraw, shares_withdrew_in_current_epoch) = - Withdrawals::::take(operator_id, nominator_id.clone()) - .map(|mut withdrawal| { - do_convert_previous_epoch_withdrawal::(operator_id, &mut withdrawal)?; - Ok(( - withdrawal.total_withdrawal_amount, - withdrawal - .withdrawal_in_shares - .map(|WithdrawalInShares { shares, .. }| shares) - .unwrap_or_default(), - )) - }) - .unwrap_or(Ok((Zero::zero(), Zero::zero())))?; + let ( + amount_ready_to_withdraw, + total_storage_fee_withdrawal, + shares_withdrew_in_current_epoch, + ) = Withdrawals::::take(operator_id, nominator_id.clone()) + .map(|mut withdrawal| { + do_convert_previous_epoch_withdrawal::(operator_id, &mut withdrawal)?; + Ok(( + withdrawal.total_withdrawal_amount, + withdrawal.total_storage_fee_withdrawal, + withdrawal + .withdrawal_in_shares + .map(|WithdrawalInShares { shares, .. }| shares) + .unwrap_or_default(), + )) + }) + .unwrap_or(Ok((Zero::zero(), Zero::zero(), Zero::zero())))?; // include all the known shares and shares that were withdrawn in the current epoch let nominator_shares = deposit @@ -1152,20 +1201,21 @@ pub(crate) fn do_unlock_nominator( .and_then(|amount| amount.checked_add(&amount_deposited_in_epoch)) .ok_or(Error::BalanceOverflow)?; - let amount_to_mint = total_amount_to_unlock - .checked_sub(¤t_locked_amount) - .unwrap_or(Zero::zero()); - - // remove the lock and mint any gains - mint_funds::(&nominator_id, amount_to_mint)?; - - T::Currency::release( - &staked_hold_id, - &nominator_id, - current_locked_amount, - Precision::Exact, - ) - .map_err(|_| Error::RemoveLock)?; + // Remove the lock and mint any gains + let current_locked_amount = DepositOnHold::::take((operator_id, nominator_id.clone())); + if let Some(amount_to_mint) = total_amount_to_unlock.checked_sub(¤t_locked_amount) { + mint_funds::(&nominator_id, amount_to_mint)?; + } + if !current_locked_amount.is_zero() { + let staked_hold_id = T::HoldIdentifier::staking_staked(); + T::Currency::release( + &staked_hold_id, + &nominator_id, + current_locked_amount, + Precision::Exact, + ) + .map_err(|_| Error::RemoveLock)?; + } Pallet::::deposit_event(Event::NominatedStakedUnlocked { operator_id, @@ -1184,22 +1234,27 @@ pub(crate) fn do_unlock_nominator( .checked_add(&deposit.known.storage_fee_deposit) .ok_or(Error::BalanceOverflow)?; - bundle_storage_fund::withdraw_and_hold::( + bundle_storage_fund::withdraw_to::( operator_id, &nominator_id, storage_fund_redeem_price.redeem(nominator_total_storage_fee_deposit), ) .map_err(Error::BundleStorageFund)?; - // Release all storage fee that of the nominator. - let storage_fee_refund = - T::Currency::release_all(&storage_fund_hold_id, &nominator_id, Precision::Exact) - .map_err(|_| Error::RemoveLock)?; + // Release all storage fee on withdraw of the nominator + let storage_fund_hold_id = T::HoldIdentifier::storage_fund_withdrawal(); + T::Currency::release( + &storage_fund_hold_id, + &nominator_id, + total_storage_fee_withdrawal, + Precision::Exact, + ) + .map_err(|_| Error::RemoveLock)?; Pallet::::deposit_event(Event::StorageFeeUnlocked { operator_id, nominator_id: nominator_id.clone(), - storage_fee: storage_fee_refund, + storage_fee: total_storage_fee_withdrawal, }); // reduce total storage fee deposit with nominator total fee deposit @@ -1403,8 +1458,8 @@ pub(crate) mod tests { use crate::staking_epoch::{do_finalize_domain_current_epoch, do_slash_operator}; use crate::tests::{new_test_ext, ExistentialDeposit, RuntimeOrigin, Test}; use crate::{ - bundle_storage_fund, BalanceOf, Error, ExecutionReceiptOf, NominatorId, SlashedReason, - MAX_NOMINATORS_TO_SLASH, + bundle_storage_fund, BalanceOf, DomainBlockNumberFor, Error, ExecutionReceiptOf, + NominatorId, SlashedReason, MAX_NOMINATORS_TO_SLASH, }; use codec::Encode; use frame_support::traits::fungible::Mutate; @@ -1464,6 +1519,7 @@ pub(crate) mod tests { genesis_receipt_hash: Default::default(), domain_config, domain_runtime_info: Default::default(), + domain_instantiation_deposit: Default::default(), }; DomainRegistry::::insert(domain_id, domain_obj); @@ -1623,7 +1679,7 @@ pub(crate) mod tests { current_total_stake: operator_stake, current_epoch_rewards: 0, current_total_shares: operator_stake, - status: OperatorStatus::Registered, + partial_status: OperatorStatus::Registered, deposits_in_epoch: 0, withdrawals_in_epoch: 0, total_storage_fee_deposit: operator_storage_fee_deposit, @@ -1860,6 +1916,7 @@ pub(crate) mod tests { genesis_receipt_hash: Default::default(), domain_config, domain_runtime_info: Default::default(), + domain_instantiation_deposit: Default::default(), }; DomainRegistry::::insert(new_domain_id, domain_obj); @@ -2592,6 +2649,162 @@ pub(crate) mod tests { }) } + fn dummy_receipt(domain_block_number: DomainBlockNumberFor) -> ExecutionReceiptOf { + ExecutionReceiptOf:: { + domain_block_number, + domain_block_hash: Default::default(), + domain_block_extrinsic_root: Default::default(), + parent_domain_block_receipt_hash: Default::default(), + consensus_block_number: Default::default(), + consensus_block_hash: Default::default(), + inboxed_bundles: vec![], + final_state_root: Default::default(), + execution_trace: vec![], + execution_trace_root: Default::default(), + block_fees: BlockFees::default(), + transfers: Transfers::default(), + } + } + + #[test] + fn unlock_multiple_withdrawals() { + let domain_id = DomainId::new(0); + let operator_account = 1; + let operator_free_balance = 250 * SSC; + let operator_stake = 200 * SSC; + let pair = OperatorPair::from_seed(&U256::from(0u32).into()); + let data = OperatorSigningKeyProofOfOwnershipData { + operator_owner: operator_account, + }; + let signature = pair.sign(&data.encode()); + let nominator_account = 2; + let nominator_free_balance = 150 * SSC; + let nominator_stake = 100 * SSC; + + let nominators = vec![ + (operator_account, (operator_free_balance, operator_stake)), + (nominator_account, (nominator_free_balance, nominator_stake)), + ]; + + let total_deposit = 300 * SSC; + let init_total_stake = STORAGE_FEE_RESERVE.left_from_one() * total_deposit; + let init_total_storage_fund = STORAGE_FEE_RESERVE * total_deposit; + + let mut ext = new_test_ext(); + ext.execute_with(|| { + let (operator_id, _) = register_operator( + domain_id, + operator_account, + operator_free_balance, + operator_stake, + 10 * SSC, + pair.public(), + signature, + BTreeMap::from_iter(nominators), + ); + + do_finalize_domain_current_epoch::(domain_id).unwrap(); + let domain_stake_summary = DomainStakingSummary::::get(domain_id).unwrap(); + assert_eq!(domain_stake_summary.current_total_stake, init_total_stake); + + let operator = Operators::::get(operator_id).unwrap(); + assert_eq!(operator.current_total_stake, init_total_stake); + assert_eq!(operator.total_storage_fee_deposit, init_total_storage_fund); + assert_eq!( + operator.total_storage_fee_deposit, + bundle_storage_fund::total_balance::(operator_id) + ); + + let amount_per_withdraw = init_total_stake / 100; + let latest_confirmed_block_number = + Domains::latest_confirmed_domain_block_number(domain_id); + + // Request `WithdrawalLimit - 1` number of withdrawal + for _ in 1..::WithdrawalLimit::get() { + do_withdraw_stake::( + operator_id, + nominator_account, + WithdrawStake::Stake(amount_per_withdraw), + ) + .unwrap(); + do_finalize_domain_current_epoch::(domain_id).unwrap(); + } + // Increase the latest confirmed domain block by 1 + LatestConfirmedDomainExecutionReceipt::::insert( + domain_id, + dummy_receipt(latest_confirmed_block_number + 1), + ); + + // All withdrawals of a given nominator submitted in the same epoch will merge into one, + // so we submit can submit as many as we want even though the withdrawal limit is met + for _ in 0..5 { + do_withdraw_stake::( + operator_id, + nominator_account, + WithdrawStake::Stake(amount_per_withdraw), + ) + .unwrap(); + } + do_finalize_domain_current_epoch::(domain_id).unwrap(); + + // After the withdrawal limit is met, any new withdraw will be rejected in the next epoch + assert_err!( + do_withdraw_stake::( + operator_id, + nominator_account, + WithdrawStake::Stake(amount_per_withdraw), + ), + StakingError::TooManyWithdrawals + ); + Withdrawals::::try_mutate(operator_id, nominator_account, |maybe_withdrawal| { + let withdrawal = maybe_withdrawal.as_mut().unwrap(); + do_convert_previous_epoch_withdrawal::(operator_id, withdrawal).unwrap(); + assert_eq!( + withdrawal.withdrawals.len() as u32, + ::WithdrawalLimit::get() + ); + Ok::<(), StakingError>(()) + }) + .unwrap(); + + // Make the first set of withdrawals pass the unlock period then unlock fund + LatestConfirmedDomainExecutionReceipt::::insert( + domain_id, + dummy_receipt( + latest_confirmed_block_number + + ::StakeWithdrawalLockingPeriod::get(), + ), + ); + let total_balance = Balances::usable_balance(nominator_account); + assert_ok!(do_unlock_funds::(operator_id, nominator_account)); + assert_eq!( + Balances::usable_balance(nominator_account) + 60246126106, // `60246126106` is a minior rounding dust + total_balance + + (::WithdrawalLimit::get() as u128 - 1) * total_deposit + / 100 + ); + let withdrawal = Withdrawals::::get(operator_id, nominator_account).unwrap(); + assert_eq!(withdrawal.withdrawals.len(), 1); + + // Make the second set of withdrawals pass the unlock period then unlock funds + LatestConfirmedDomainExecutionReceipt::::insert( + domain_id, + dummy_receipt( + latest_confirmed_block_number + + ::StakeWithdrawalLockingPeriod::get() + + 1, + ), + ); + let total_balance = Balances::usable_balance(nominator_account); + assert_ok!(do_unlock_funds::(operator_id, nominator_account)); + assert_eq!( + Balances::usable_balance(nominator_account) + 18473897451, // `18473897451` is a minor rounding dust + total_balance + 5 * total_deposit / 100 + ); + assert!(Withdrawals::::get(operator_id, nominator_account).is_none()); + }); + } + #[test] fn slash_operator() { let domain_id = DomainId::new(0); diff --git a/crates/pallet-domains/src/staking_epoch.rs b/crates/pallet-domains/src/staking_epoch.rs index aef345087e..072c5a6238 100644 --- a/crates/pallet-domains/src/staking_epoch.rs +++ b/crates/pallet-domains/src/staking_epoch.rs @@ -10,13 +10,11 @@ use crate::staking::{ DomainEpoch, Error as TransitionError, OperatorStatus, SharePrice, WithdrawalInShares, }; use crate::{ - bundle_storage_fund, BalanceOf, Config, ElectionVerificationParams, Event, HoldIdentifier, - OperatorEpochSharePrice, Pallet, + bundle_storage_fund, BalanceOf, Config, DepositOnHold, ElectionVerificationParams, Event, + HoldIdentifier, OperatorEpochSharePrice, Pallet, }; -#[cfg(not(feature = "std"))] -use alloc::vec; use codec::{Decode, Encode}; -use frame_support::traits::fungible::{Inspect, InspectHold, Mutate, MutateHold}; +use frame_support::traits::fungible::{Inspect, Mutate, MutateHold}; use frame_support::traits::tokens::{ DepositConsequence, Fortitude, Precision, Provenance, Restriction, }; @@ -333,7 +331,7 @@ pub(crate) fn do_slash_operator( domain_id: DomainId, max_nominator_count: u32, ) -> Result { - let mut slashed_nominators = vec![]; + let mut slashed_nominator_count = 0u32; let (operator_id, slashed_operators) = match PendingSlashes::::get(domain_id) { None => return Ok(0), Some(mut slashed_operators) => match slashed_operators.pop_first() { @@ -354,7 +352,7 @@ pub(crate) fn do_slash_operator( let operator_owner = OperatorIdOwner::::get(operator_id).ok_or(TransitionError::UnknownOperator)?; - let staked_hold_id = T::HoldIdentifier::staking_staked(operator_id); + let staked_hold_id = T::HoldIdentifier::staking_staked(); let mut total_stake = operator .current_total_stake @@ -366,31 +364,34 @@ pub(crate) fn do_slash_operator( let share_price = SharePrice::new::(total_shares, total_stake); let mut total_storage_fee_deposit = operator.total_storage_fee_deposit; - let storage_fund_hold_id = T::HoldIdentifier::storage_fund_withdrawal(operator_id); // transfer all the staked funds to the treasury account // any gains will be minted to treasury account - for (nominator_id, mut deposit) in Deposits::::iter_prefix(operator_id) { - let locked_amount = T::Currency::balance_on_hold(&staked_hold_id, &nominator_id); + for (nominator_id, mut deposit) in Deposits::::drain_prefix(operator_id) { + let locked_amount = DepositOnHold::::take((operator_id, nominator_id.clone())); // convert any previous epoch deposits do_convert_previous_epoch_deposits::(operator_id, &mut deposit)?; // there maybe some withdrawals that are initiated in this epoch where operator was slashed // then collect and include them to find the final stake amount - let (amount_ready_to_withdraw, shares_withdrew_in_current_epoch) = - Withdrawals::::take(operator_id, nominator_id.clone()) - .map(|mut withdrawal| { - do_convert_previous_epoch_withdrawal::(operator_id, &mut withdrawal)?; - Ok(( - withdrawal.total_withdrawal_amount, - withdrawal - .withdrawal_in_shares - .map(|WithdrawalInShares { shares, .. }| shares) - .unwrap_or_default(), - )) - }) - .unwrap_or(Ok((Zero::zero(), Zero::zero())))?; + let ( + amount_ready_to_withdraw, + withdraw_storage_fee_on_hold, + shares_withdrew_in_current_epoch, + ) = Withdrawals::::take(operator_id, nominator_id.clone()) + .map(|mut withdrawal| { + do_convert_previous_epoch_withdrawal::(operator_id, &mut withdrawal)?; + Ok(( + withdrawal.total_withdrawal_amount, + withdrawal.total_storage_fee_withdrawal, + withdrawal + .withdrawal_in_shares + .map(|WithdrawalInShares { shares, .. }| shares) + .unwrap_or_default(), + )) + }) + .unwrap_or(Ok((Zero::zero(), Zero::zero(), Zero::zero())))?; // include all the known shares and shares that were withdrawn in the current epoch let nominator_shares = deposit @@ -402,14 +403,14 @@ pub(crate) fn do_slash_operator( // current staked amount let nominator_staked_amount = share_price.shares_to_stake::(nominator_shares); + let pending_deposit = deposit + .pending + .map(|pending_deposit| pending_deposit.amount) + .unwrap_or_default(); + // do not slash the deposit that is not staked yet let amount_to_slash_in_holding = locked_amount - .checked_sub( - &deposit - .pending - .map(|pending_deposit| pending_deposit.amount) - .unwrap_or_default(), - ) + .checked_sub(&pending_deposit) .ok_or(TransitionError::BalanceUnderflow)?; T::Currency::transfer_on_hold( @@ -423,6 +424,15 @@ pub(crate) fn do_slash_operator( ) .map_err(|_| TransitionError::RemoveLock)?; + // release rest of the deposited un staked amount back to nominator + T::Currency::release( + &staked_hold_id, + &nominator_id, + pending_deposit, + Precision::BestEffort, + ) + .map_err(|_| TransitionError::RemoveLock)?; + // these are nominator rewards that will be minted to treasury // include amount ready to be withdrawn to calculate the final reward let nominator_reward = nominator_staked_amount @@ -436,10 +446,6 @@ pub(crate) fn do_slash_operator( total_stake = total_stake.saturating_sub(nominator_staked_amount); total_shares = total_shares.saturating_sub(nominator_shares); - // release rest of the deposited un staked amount back to nominator - T::Currency::release_all(&staked_hold_id, &nominator_id, Precision::BestEffort) - .map_err(|_| TransitionError::RemoveLock)?; - // Transfer the deposited non-staked storage fee back to nominator if let Some(pending_deposit) = deposit.pending { let storage_fund_redeem_price = bundle_storage_fund::storage_fund_redeem_price::( @@ -447,31 +453,20 @@ pub(crate) fn do_slash_operator( total_storage_fee_deposit, ); - let storage_fee_deposit = bundle_storage_fund::withdraw_and_hold::( + bundle_storage_fund::withdraw_to::( operator_id, &nominator_id, storage_fund_redeem_price.redeem(pending_deposit.storage_fee_deposit), ) .map_err(TransitionError::BundleStorageFund)?; - T::Currency::release( - &storage_fund_hold_id, - &nominator_id, - storage_fee_deposit, - Precision::Exact, - ) - .map_err(|_| TransitionError::RemoveLock)?; - total_storage_fee_deposit = total_storage_fee_deposit.saturating_sub(pending_deposit.storage_fee_deposit); } // Transfer all the storage fee on withdraw to the treasury - let withdraw_storage_fee_on_hold = - T::Currency::balance_on_hold(&storage_fund_hold_id, &nominator_id); - T::Currency::transfer_on_hold( - &storage_fund_hold_id, + &T::HoldIdentifier::storage_fund_withdrawal(), &nominator_id, &T::TreasuryAccount::get(), withdraw_storage_fee_on_hold, @@ -487,18 +482,12 @@ pub(crate) fn do_slash_operator( NominatorCount::::set(operator_id, nominator_count - 1); } - slashed_nominators.push(nominator_id); - if slashed_nominators.len() as u32 >= max_nominator_count { + slashed_nominator_count += 1; + if slashed_nominator_count >= max_nominator_count { break; } } - // for all slashed nominators, remove their deposits - let slashed_nominator_count = slashed_nominators.len() as u32; - slashed_nominators.into_iter().for_each(|nominator_id| { - Deposits::::remove(operator_id, nominator_id); - }); - let nominator_count = NominatorCount::::get(operator_id); let cleanup_operator = nominator_count == 0 && !Deposits::::contains_key(operator_id, operator_owner); @@ -540,6 +529,8 @@ mod tests { }; use crate::tests::{new_test_ext, Test}; use crate::{BalanceOf, Config, ExecutionReceiptOf, HoldIdentifier, NominatorId}; + #[cfg(not(feature = "std"))] + use alloc::vec; use codec::Encode; use frame_support::assert_ok; use frame_support::traits::fungible::InspectHold; @@ -669,7 +660,7 @@ mod tests { assert_ok!(do_unlock_nominator::(operator_id, operator_account)); - let hold_id = crate::tests::HoldIdentifier::staking_staked(operator_id); + let hold_id = crate::tests::HoldIdentifierWrapper::staking_staked(); for (nominator_id, mut expected_usable_balance) in expected_usable_balances { expected_usable_balance += minimum_free_balance; assert_eq!(Deposits::::get(operator_id, nominator_id), None); diff --git a/crates/pallet-domains/src/tests.rs b/crates/pallet-domains/src/tests.rs index 38271fa854..f3848f3927 100644 --- a/crates/pallet-domains/src/tests.rs +++ b/crates/pallet-domains/src/tests.rs @@ -11,6 +11,7 @@ use crate::{ RuntimeRegistry, ScheduledRuntimeUpgrades, }; use codec::{Decode, Encode, MaxEncodedLen}; +use core::mem; use domain_runtime_primitives::opaque::Header as DomainHeader; use domain_runtime_primitives::BlockNumber as DomainBlockNumber; use frame_support::dispatch::{DispatchInfo, RawOrigin}; @@ -26,9 +27,9 @@ use sp_core::{Get, H256, U256}; use sp_domains::merkle_tree::MerkleTree; use sp_domains::storage::RawGenesis; use sp_domains::{ - BundleHeader, ChainId, DomainId, DomainsHoldIdentifier, ExecutionReceipt, InboxedBundle, - OpaqueBundle, OperatorAllowList, OperatorId, OperatorPair, ProofOfElection, RuntimeId, - RuntimeType, SealedBundleHeader, StakingHoldIdentifier, + BundleHeader, ChainId, DomainId, ExecutionReceipt, InboxedBundle, OpaqueBundle, + OperatorAllowList, OperatorId, OperatorPair, ProofOfElection, RuntimeId, RuntimeType, + SealedBundleHeader, }; use sp_domains_fraud_proof::fraud_proof::FraudProof; use sp_runtime::traits::{ @@ -38,7 +39,7 @@ use sp_runtime::transaction_validity::TransactionValidityError; use sp_runtime::{BuildStorage, OpaqueExtrinsic, Saturating}; use sp_version::RuntimeVersion; use subspace_core_primitives::U256 as P256; -use subspace_runtime_primitives::{Moment, StorageFee, SSC}; +use subspace_runtime_primitives::{HoldIdentifier, Moment, StorageFee, SSC}; type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; type Block = frame_system::mocking::MockBlock; @@ -100,31 +101,24 @@ impl Get for ConfirmationDepthK { #[derive( PartialEq, Eq, Clone, Encode, Decode, TypeInfo, MaxEncodedLen, Ord, PartialOrd, Copy, Debug, )] -pub enum HoldIdentifier { - Domains(DomainsHoldIdentifier), -} +pub struct HoldIdentifierWrapper(HoldIdentifier); -impl pallet_domains::HoldIdentifier for HoldIdentifier { - fn staking_staked(operator_id: OperatorId) -> FungibleHoldId { - Self::Domains(DomainsHoldIdentifier::Staking( - StakingHoldIdentifier::Staked(operator_id), - )) +impl pallet_domains::HoldIdentifier for HoldIdentifierWrapper { + fn staking_staked() -> FungibleHoldId { + Self(HoldIdentifier::DomainStaking) } - fn domain_instantiation_id(domain_id: DomainId) -> FungibleHoldId { - Self::Domains(DomainsHoldIdentifier::DomainInstantiation(domain_id)) + fn domain_instantiation_id() -> FungibleHoldId { + Self(HoldIdentifier::DomainInstantiation) } - fn storage_fund_withdrawal(operator_id: OperatorId) -> Self { - Self::Domains(DomainsHoldIdentifier::StorageFund(operator_id)) + fn storage_fund_withdrawal() -> Self { + Self(HoldIdentifier::DomainStorageFund) } } -impl VariantCount for HoldIdentifier { - // TODO: HACK this is not the actual variant count but it is required see - // https://github.com/autonomys/subspace/issues/2674 for more details. It - // will be resolved as https://github.com/paritytech/polkadot-sdk/issues/4033. - const VARIANT_COUNT: u32 = 10; +impl VariantCount for HoldIdentifierWrapper { + const VARIANT_COUNT: u32 = mem::variant_count::() as u32; } parameter_types! { @@ -136,7 +130,7 @@ impl pallet_balances::Config for Test { type Balance = Balance; type ExistentialDeposit = ExistentialDeposit; type AccountStore = System; - type RuntimeHoldReason = HoldIdentifier; + type RuntimeHoldReason = HoldIdentifierWrapper; type DustRemoval = (); } @@ -153,6 +147,7 @@ parameter_types! { pub const MaxInitialDomainAccounts: u32 = 5; pub const MinInitialDomainAccountBalance: Balance = SSC; pub const BundleLongevity: u32 = 5; + pub const WithdrawalLimit: u32 = 10; } pub struct MockRandomness; @@ -250,7 +245,7 @@ impl pallet_domains::Config for Test { type ConfirmationDepthK = ConfirmationDepthK; type DomainRuntimeUpgradeDelay = DomainRuntimeUpgradeDelay; type Currency = Balances; - type HoldIdentifier = HoldIdentifier; + type HoldIdentifier = HoldIdentifierWrapper; type WeightInfo = pallet_domains::weights::SubstrateWeight; type InitialDomainTxRange = InitialDomainTxRange; type DomainTxRangeAdjustmentInterval = DomainTxRangeAdjustmentInterval; @@ -283,6 +278,7 @@ impl pallet_domains::Config for Test { type MmrProofVerifier = (); type FraudProofStorageKeyProvider = (); type OnChainRewards = (); + type WithdrawalLimit = WithdrawalLimit; } pub struct ExtrinsicStorageFees; @@ -330,8 +326,7 @@ pub(crate) fn new_test_ext_with_extensions() -> sp_io::TestExternalities { impl_version: 1, apis: Default::default(), transaction_version: 1, - state_version: 0, - extrinsic_state_version: 0, + system_version: 2, }; let mut ext = new_test_ext(); @@ -437,15 +432,13 @@ impl sp_core::traits::ReadRuntimeVersion for ReadRuntimeVersion { pub(crate) fn run_to_block(block_number: BlockNumberFor, parent_hash: T::Hash) { // Finalize previous block - as Hooks>>::on_finalize( - block_number.saturating_sub(One::one()), - ); + crate::Pallet::::on_finalize(block_number.saturating_sub(One::one())); frame_system::Pallet::::finalize(); // Initialize current block frame_system::Pallet::::set_block_number(block_number); frame_system::Pallet::::initialize(&block_number, &parent_hash, &Default::default()); - as Hooks>>::on_initialize(block_number); + crate::Pallet::::on_initialize(block_number); } pub(crate) fn register_genesis_domain(creator: u128, operator_ids: Vec) -> DomainId { @@ -645,6 +638,7 @@ fn test_bundle_fromat_verification() { genesis_receipt_hash: Default::default(), domain_config, domain_runtime_info: Default::default(), + domain_instantiation_deposit: Default::default(), }; DomainRegistry::::insert(domain_id, domain_obj); diff --git a/crates/pallet-feeds/Cargo.toml b/crates/pallet-feeds/Cargo.toml deleted file mode 100644 index cee72d276b..0000000000 --- a/crates/pallet-feeds/Cargo.toml +++ /dev/null @@ -1,38 +0,0 @@ -[package] -name = "pallet-feeds" -version = "0.1.0" -authors = ["Serge Kovbasiuk "] -edition = "2021" -license = "Apache-2.0" -homepage = "https://subspace.network" -repository = "https://github.com/autonomys/subspace" -description = "Subspace node pallet for interacting with storage" -readme = "README.md" - -[package.metadata.docs.rs] -targets = ["x86_64-unknown-linux-gnu"] - -[dependencies] -codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -subspace-core-primitives = { version = "0.1.0", default-features = false, path = "../subspace-core-primitives" } - -[dev-dependencies] -sp-io = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } - -[features] -default = ["std"] -std = [ - "codec/std", - "frame-support/std", - "frame-system/std", - "scale-info/std", - "sp-core/std", - "sp-runtime/std", - "subspace-core-primitives/std", -] -try-runtime = ["frame-support/try-runtime"] diff --git a/crates/pallet-feeds/README.md b/crates/pallet-feeds/README.md deleted file mode 100644 index 28288eeed2..0000000000 --- a/crates/pallet-feeds/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Pallet Feeds - -License: Apache-2.0 - -Pallet feeds provides the interactions with Subspace storage. The main design goal for Feeds is not only to push objects -to the Storage but also to provide a way for the feed owners to inject some verification logic through `FeedProcessor` -impls. - -## Calls - -The pallet provides following calls. -1. Create(permissionless): Creates a new Feed for the caller -2. Update: Updates the Feeds with some initial data. All the underlying FeedProcessors -will be reinitialized. -3. Transfer: Transfers a feed from one owner to another -4. Close: Closes the feed and doesn't accept any new objects -5. Put: Puts a new object in the Feed. The object is passed to FeedProcessor for verification if any. - diff --git a/crates/pallet-feeds/src/feed_processor.rs b/crates/pallet-feeds/src/feed_processor.rs deleted file mode 100644 index 7ee2a0ff77..0000000000 --- a/crates/pallet-feeds/src/feed_processor.rs +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright (C) 2021 Subspace Labs, Inc. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! Defines FeedProcessor and its types - -#[cfg(not(feature = "std"))] -extern crate alloc; - -use crate::CallObject; -#[cfg(not(feature = "std"))] -use alloc::vec; -#[cfg(not(feature = "std"))] -use alloc::vec::Vec; -use codec::{Compact, CompactLen, Decode, Encode}; -use sp_runtime::{DispatchError, DispatchResult}; -use subspace_core_primitives::Blake3Hash; - -/// Holds the offset to some portion of data within/or the object -#[derive(Debug)] -pub enum FeedObjectMapping { - /// Maps the object or some data within the object at the specific offset. - /// The key is derived from the content. - Content { offset: u32 }, - - /// Maps the object or some data within the object at the specific offset. - /// The key provided is namespaced to feed to avoid collisions - Custom { key: Vec, offset: u32 }, -} - -impl FeedObjectMapping { - pub(crate) fn try_into_call_object Blake3Hash>( - self, - feed_id: FeedID, - object: &[u8], - hasher: Hasher, - ) -> Option { - match self { - // If this is a custom key, then name space the key. - FeedObjectMapping::Custom { key, offset } => { - let mut data = feed_id.encode(); - data.extend_from_slice(&key); - Some(CallObject { - key: hasher(&data), - offset, - }) - } - // For content, we try to extract the content to derive the key - FeedObjectMapping::Content { offset } => { - // If offset is 0, then we want to map the entire object. - // Since the object is already decoded, no need to decode it further - let key = if offset == 0 { - hasher(object) - } else { - // This is referring to some content within the object that is encoded. - // Move the offset back by the encoded bytes of object to get the right offset since the object is already decoded. - let offset = offset - .saturating_sub(Compact::::compact_len(&(object.len() as u32)) as u32); - hasher(&Vec::decode(&mut &object[offset as usize..]).ok()?) - }; - - Some(CallObject { key, offset }) - } - } - } -} - -/// Metadata of a feed object as raw bytes. -pub type FeedMetadata = Vec; - -/// # Feed Processor -/// Feed Processor defines some useful abstractions that are used during the life cycle of the Feed and its objects. -/// We can provide some custom logic specific to the Feed by implementing a Custom Feed Processor. -/// -/// ## Feed Metadata -/// -/// Before an object is added to Subspace storage, `put` on Feed processor to give the impl an opportunity to run the object -/// through their custom logic and returns some metadata about the object. Metadata is then stored in the runtime overwriting -/// any metadata of the previous object. The default implementation of Feed processor gives empty metadata about the object. -/// -/// ## Feed object mapping -/// Feed indexes the objects in the DSN using offsets within the Block the object is present in. `object_mappings` is the -/// only that must be implemented by the Feed processor. Since DSN is a key value store, there are two different ways keys -/// are derived for given data at the offset within the block -/// - Key derived from content. Feeds use BLAKE2b-256 to derive the key for the data at the offset. -/// - Key provided by the feed processor. Feed processor implementations can instead provide a key for object at the offset. -/// -/// ## Examples -/// ### Content based addressing with default hasher -/// ```rust -/// use pallet_feeds::feed_processor::{FeedProcessor, FeedObjectMapping}; -/// struct IPFSLike; -/// impl FeedProcessor for IPFSLike { /// -/// fn object_mappings(&self, _feed_id: FeedId, _object: &[u8]) -> Vec { -/// vec![FeedObjectMapping::Content { offset: 0 }] -/// } -/// } -/// ``` -/// This implements a Content addressable Feed using default Hasher. The entire object is treated as data and hence the offset is zero. -/// -/// ### Content based addressing using custom Hasher -/// ```rust -/// use sp_runtime::traits::{BlakeTwo256, Hash}; -/// use pallet_feeds::feed_processor::{FeedProcessor, FeedObjectMapping}; -/// struct IPFSLike; -/// impl FeedProcessor for IPFSLike { /// -/// fn object_mappings(&self, _feed_id: FeedId, object: &[u8]) -> Vec { -/// vec![FeedObjectMapping::Custom { key: BlakeTwo256::hash(object).as_bytes().to_vec(), offset: 0 }] -/// } -/// } -/// ``` -/// This implements a Content addressable Feed using BlakeTwo256 hasher. The entire object is treated as data and hence the offset is zero. -pub trait FeedProcessor { - /// Initiates a specific Feed with data transparent to FeedProcessor - /// Can be called when re-initializing the feed. - fn init(&self, _feed_id: FeedId, _data: &[u8]) -> DispatchResult { - Ok(()) - } - - /// Puts a feed and returns the Metadata if any. - /// This is called once per extrinsic that puts a feed into a given feed stream. - fn put(&self, _feed_id: FeedId, _object: &[u8]) -> Result, DispatchError> { - Ok(None) - } - - /// Returns any object mappings inside the given object - fn object_mappings(&self, _feed_id: FeedId, object: &[u8]) -> Vec; - - /// Signals a delete to any underlying feed data. - fn delete(&self, _feed_id: FeedId) -> DispatchResult { - Ok(()) - } -} - -/// Content addressable feed processor impl -/// Offsets the whole object as content thereby signalling to derive `key = hash(object)` -/// Put do not provide any metadata. -impl FeedProcessor for () { - /// Maps the entire object as content. - fn object_mappings(&self, _feed_id: FeedId, _object: &[u8]) -> Vec { - vec![FeedObjectMapping::Content { offset: 0 }] - } -} diff --git a/crates/pallet-feeds/src/lib.rs b/crates/pallet-feeds/src/lib.rs deleted file mode 100644 index 68bf6254af..0000000000 --- a/crates/pallet-feeds/src/lib.rs +++ /dev/null @@ -1,415 +0,0 @@ -// Copyright (C) 2021 Subspace Labs, Inc. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! Pallet feeds, used for storing arbitrary user-provided data combined into feeds. - -#![cfg_attr(not(feature = "std"), no_std)] -#![forbid(unsafe_code)] -#![warn(rust_2018_idioms, missing_debug_implementations)] - -#[cfg(not(feature = "std"))] -extern crate alloc; - -#[cfg(not(feature = "std"))] -use alloc::vec; -#[cfg(not(feature = "std"))] -use alloc::vec::Vec; -use core::mem; -pub use pallet::*; -use subspace_core_primitives::{crypto, Blake3Hash}; - -pub mod feed_processor; -#[cfg(all(feature = "std", test))] -mod mock; -#[cfg(all(feature = "std", test))] -mod tests; - -#[frame_support::pallet] -mod pallet { - use crate::feed_processor::{FeedMetadata, FeedProcessor as FeedProcessorT}; - use frame_support::pallet_prelude::*; - use frame_system::pallet_prelude::*; - use sp_runtime::traits::{CheckedAdd, Hash, One, StaticLookup}; - use sp_runtime::ArithmeticError; - - #[pallet::config] - pub trait Config: frame_system::Config { - /// `pallet-feeds` events - type RuntimeEvent: From> + IsType<::RuntimeEvent>; - - // Feed ID uniquely identifies a Feed - type FeedId: Parameter + Member + Default + Copy + PartialOrd + CheckedAdd + One; - - // Type that references to a particular impl of feed processor - type FeedProcessorKind: Parameter + Member + Default + Copy; - - #[pallet::constant] - type MaxFeeds: Get; - - fn feed_processor( - feed_processor_kind: Self::FeedProcessorKind, - ) -> Box>; - } - - /// Pallet feeds, used for storing arbitrary user-provided data combined into feeds. - #[pallet::pallet] - #[pallet::without_storage_info] - pub struct Pallet(_); - - /// User-provided object to store - pub(super) type Object = Vec; - /// User provided initial data for validation - pub(super) type InitData = Vec; - - /// Total amount of data and number of objects stored in a feed - #[derive(Debug, Decode, Encode, TypeInfo, Default, PartialEq, Eq)] - pub struct TotalObjectsAndSize { - /// Total size of objects in bytes - pub size: u64, - /// Total number of objects - pub count: u64, - } - - #[derive(Debug, Decode, Encode, TypeInfo, Default)] - pub struct FeedConfig { - pub active: bool, - pub feed_processor_id: FeedProcessorId, - pub owner: AccountId, - } - - #[pallet::storage] - #[pallet::getter(fn metadata)] - pub(super) type Metadata = - StorageMap<_, Identity, T::FeedId, FeedMetadata, OptionQuery>; - - #[pallet::storage] - #[pallet::getter(fn feed_configs)] - pub(super) type FeedConfigs = StorageMap< - _, - Identity, - T::FeedId, - FeedConfig, - OptionQuery, - >; - - #[pallet::storage] - #[pallet::getter(fn feeds)] - pub(super) type Feeds = - StorageMap<_, Identity, T::AccountId, BoundedVec, OptionQuery>; - - #[pallet::storage] - #[pallet::getter(fn totals)] - pub(super) type Totals = - StorageMap<_, Identity, T::FeedId, TotalObjectsAndSize, ValueQuery>; - - #[pallet::storage] - #[pallet::getter(fn next_feed_id)] - pub(super) type NextFeedId = StorageValue<_, T::FeedId, ValueQuery>; - - #[pallet::storage] - pub(super) type SuccessfulPuts = StorageValue<_, Vec, ValueQuery>; - - /// `pallet-feeds` events - #[pallet::event] - #[pallet::generate_deposit(pub (super) fn deposit_event)] - pub enum Event { - /// New object was added. - ObjectSubmitted { - feed_id: T::FeedId, - who: T::AccountId, - metadata: FeedMetadata, - object_size: u64, - }, - /// New feed was created. - FeedCreated { - feed_id: T::FeedId, - who: T::AccountId, - }, - - /// An existing feed was updated. - FeedUpdated { - feed_id: T::FeedId, - who: T::AccountId, - }, - - /// Feed was closed. - FeedClosed { - feed_id: T::FeedId, - who: T::AccountId, - }, - - /// Feed was deleted. - FeedDeleted { - feed_id: T::FeedId, - who: T::AccountId, - }, - - /// feed ownership transferred - OwnershipTransferred { - feed_id: T::FeedId, - old_owner: T::AccountId, - new_owner: T::AccountId, - }, - } - - /// `pallet-feeds` errors - #[pallet::error] - pub enum Error { - /// `FeedId` doesn't exist - UnknownFeedId, - - /// Feed was closed - FeedClosed, - - /// Not a feed owner - NotFeedOwner, - - /// Maximum feeds created by the caller - MaxFeedsReached, - } - - macro_rules! ensure_owner { - ( $origin:expr, $feed_id:expr ) => {{ - let sender = ensure_signed($origin)?; - let feed_config = FeedConfigs::::get($feed_id).ok_or(Error::::UnknownFeedId)?; - ensure!(feed_config.owner == sender, Error::::NotFeedOwner); - (sender, feed_config) - }}; - } - - #[pallet::hooks] - impl Hooks> for Pallet { - fn on_initialize(_now: BlockNumberFor) -> Weight { - SuccessfulPuts::::kill(); - T::DbWeight::get().writes(1) - } - } - - #[pallet::call] - impl Pallet { - // TODO: add proper weights - /// Create a new feed - #[pallet::call_index(0)] - #[pallet::weight((10_000, Pays::No))] - pub fn create( - origin: OriginFor, - feed_processor_id: T::FeedProcessorKind, - init_data: Option, - ) -> DispatchResult { - let who = ensure_signed(origin)?; - let feed_id = NextFeedId::::get(); - let next_feed_id = feed_id - .checked_add(&One::one()) - .ok_or(ArithmeticError::Overflow)?; - let feed_processor = T::feed_processor(feed_processor_id); - if let Some(init_data) = init_data { - feed_processor.init(feed_id, init_data.as_slice())?; - } - - // check if max feeds are reached - let mut owned_feeds = Feeds::::get(who.clone()).unwrap_or_default(); - owned_feeds - .try_push(feed_id) - .map_err(|_| Error::::MaxFeedsReached)?; - - NextFeedId::::set(next_feed_id); - FeedConfigs::::insert( - feed_id, - FeedConfig { - active: true, - feed_processor_id, - owner: who.clone(), - }, - ); - Feeds::::insert(who.clone(), owned_feeds); - Totals::::insert(feed_id, TotalObjectsAndSize::default()); - - Self::deposit_event(Event::FeedCreated { feed_id, who }); - - Ok(()) - } - - /// Updates the feed with init data provided. - #[pallet::call_index(1)] - #[pallet::weight((10_000, Pays::No))] - pub fn update( - origin: OriginFor, - feed_id: T::FeedId, - feed_processor_id: T::FeedProcessorKind, - init_data: Option, - ) -> DispatchResult { - let (owner, feed_config) = ensure_owner!(origin, feed_id); - let feed_processor = T::feed_processor(feed_processor_id); - if let Some(init_data) = init_data { - feed_processor.init(feed_id, init_data.as_slice())?; - } - - FeedConfigs::::insert( - feed_id, - FeedConfig { - active: feed_config.active, - feed_processor_id, - owner: owner.clone(), - }, - ); - - Self::deposit_event(Event::FeedUpdated { - feed_id, - who: owner, - }); - - Ok(()) - } - - // TODO: add proper weights - // TODO: For now we don't have fees, but we will have them in the future - /// Put a new object into a feed - #[pallet::call_index(2)] - #[pallet::weight((10_000, Pays::No))] - pub fn put(origin: OriginFor, feed_id: T::FeedId, object: Object) -> DispatchResult { - let (owner, feed_config) = ensure_owner!(origin, feed_id); - // ensure feed is active - ensure!(feed_config.active, Error::::FeedClosed); - - let object_size = object.len() as u64; - let feed_processor = T::feed_processor(feed_config.feed_processor_id); - - let metadata = feed_processor - .put(feed_id, object.as_slice())? - .unwrap_or_default(); - Metadata::::insert(feed_id, metadata.clone()); - - Totals::::mutate(feed_id, |feed_totals| { - feed_totals.size += object_size; - feed_totals.count += 1; - }); - - Self::deposit_event(Event::ObjectSubmitted { - feed_id, - who: owner, - metadata, - object_size, - }); - - // store the call - // there could be multiple calls with same hash and that is fine - // since we assume the same order - let uniq = T::Hashing::hash(Call::::put { feed_id, object }.encode().as_slice()); - SuccessfulPuts::::append(uniq); - Ok(()) - } - - /// Closes the feed and stops accepting new feed. - #[pallet::call_index(3)] - #[pallet::weight((T::DbWeight::get().reads_writes(1, 1), Pays::No))] - pub fn close(origin: OriginFor, feed_id: T::FeedId) -> DispatchResult { - let (owner, mut feed_config) = ensure_owner!(origin, feed_id); - feed_config.active = false; - FeedConfigs::::insert(feed_id, feed_config); - Self::deposit_event(Event::FeedClosed { - feed_id, - who: owner, - }); - Ok(()) - } - - /// Transfers feed from current owner to new owner - #[pallet::call_index(4)] - #[pallet::weight((T::DbWeight::get().reads_writes(3, 3), Pays::No))] - pub fn transfer( - origin: OriginFor, - feed_id: T::FeedId, - new_owner: ::Source, - ) -> DispatchResult { - let (owner, mut feed_config) = ensure_owner!(origin, feed_id); - let new_owner = T::Lookup::lookup(new_owner)?; - - // remove current owner details - let mut current_owner_feeds = Feeds::::get(owner.clone()).unwrap_or_default(); - current_owner_feeds.retain(|x| *x != feed_id); - - // update new owner details - feed_config.owner = new_owner.clone(); - let mut new_owner_feeds = Feeds::::get(new_owner.clone()).unwrap_or_default(); - new_owner_feeds - .try_push(feed_id) - .map_err(|_| Error::::MaxFeedsReached)?; - - // if the owner doesn't own any feed, then reclaim empty storage - if current_owner_feeds.is_empty() { - Feeds::::remove(owner.clone()); - } else { - Feeds::::insert(owner.clone(), current_owner_feeds); - } - - Feeds::::insert(new_owner.clone(), new_owner_feeds); - FeedConfigs::::insert(feed_id, feed_config); - Self::deposit_event(Event::OwnershipTransferred { - feed_id, - old_owner: owner, - new_owner, - }); - Ok(()) - } - } -} - -/// Mapping to the object offset within an extrinsic associated with given key -#[derive(Debug)] -pub struct CallObject { - /// Key to the object located at the offset. - pub key: Blake3Hash, - /// Offset of object in the encoded call. - pub offset: u32, -} - -impl Pallet { - pub fn successful_puts() -> Vec { - SuccessfulPuts::::get() - } -} - -impl Call { - /// Extract the call objects if an extrinsic corresponds to `put` call - pub fn extract_call_objects(&self) -> Vec { - match self { - Self::put { feed_id, object } => { - let feed_processor_id = match FeedConfigs::::get(feed_id) { - Some(config) => config.feed_processor_id, - // return if this was a invalid extrinsic - None => return vec![], - }; - let feed_processor = T::feed_processor(feed_processor_id); - let objects_mappings = feed_processor.object_mappings(*feed_id, object); - // +1 for the Call::put enum variant - // Since first arg is feed_id, we bump the offset by its encoded size - let base_offset = 1 + mem::size_of::() as u32; - objects_mappings - .into_iter() - .filter_map(|object_mapping| { - let mut co = object_mapping.try_into_call_object( - feed_id, - object.as_slice(), - crypto::blake3_hash, - )?; - co.offset += base_offset; - Some(co) - }) - .collect() - } - _ => Default::default(), - } - } -} diff --git a/crates/pallet-feeds/src/mock.rs b/crates/pallet-feeds/src/mock.rs deleted file mode 100644 index 28949989f1..0000000000 --- a/crates/pallet-feeds/src/mock.rs +++ /dev/null @@ -1,108 +0,0 @@ -// Silence a rust-analyzer warning in `construct_runtime!`. This warning isn't present in rustc output. -// TODO: remove when upstream issue is fixed: -#![allow(non_camel_case_types)] - -use crate::feed_processor::{FeedObjectMapping, FeedProcessor, FeedProcessor as FeedProcessorT}; -use crate::{self as pallet_feeds}; -use codec::{Compact, CompactLen, Decode, Encode}; -use frame_support::{derive_impl, parameter_types}; -use scale_info::TypeInfo; -use sp_runtime::BuildStorage; - -type Block = frame_system::mocking::MockBlock; -type FeedId = u64; - -frame_support::construct_runtime!( - pub struct Test { - System: frame_system, - Feeds: pallet_feeds, - } -); - -#[derive_impl(frame_system::config_preludes::TestDefaultConfig)] -impl frame_system::Config for Test { - type Block = Block; -} - -parameter_types! { - pub const ExistentialDeposit: u64 = 1; - pub const MaxFeeds: u32 = 1; -} - -#[derive(Default, Debug, Copy, Clone, Encode, Decode, TypeInfo, Eq, PartialEq)] -pub enum MockFeedProcessorKind { - #[default] - Content, - ContentWithin, - Custom([u8; 32]), -} - -impl pallet_feeds::Config for Test { - type RuntimeEvent = RuntimeEvent; - type FeedId = FeedId; - type FeedProcessorKind = MockFeedProcessorKind; - type MaxFeeds = MaxFeeds; - - fn feed_processor( - feed_processor_kind: Self::FeedProcessorKind, - ) -> Box> { - match feed_processor_kind { - MockFeedProcessorKind::Content => Box::new(()), - MockFeedProcessorKind::ContentWithin => Box::new(ContentEnumFeedProcessor), - MockFeedProcessorKind::Custom(key) => { - Box::new(CustomContentFeedProcessor(key.to_vec())) - } - } - } -} - -pub fn new_test_ext() -> sp_io::TestExternalities { - let t = frame_system::GenesisConfig::::default() - .build_storage() - .unwrap(); - - let mut t: sp_io::TestExternalities = t.into(); - - t.execute_with(|| System::set_block_number(1)); - - t -} - -/// Same as default except key is not derived from object -struct CustomContentFeedProcessor(Vec); - -impl FeedProcessor for CustomContentFeedProcessor { - fn object_mappings(&self, _feed_id: FeedId, _object: &[u8]) -> Vec { - vec![FeedObjectMapping::Custom { - key: self.0.clone(), - offset: 0, - }] - } -} - -// this is the content enum encoded as object for the put call -// we want to index content_a or content_b by an index either content addressable or name spaced key -#[derive(Debug, Clone, Encode, Decode)] -pub(crate) enum ContentEnum { - ContentA(Vec), - ContentB(Vec), -} - -struct ContentEnumFeedProcessor; - -impl FeedProcessor for ContentEnumFeedProcessor { - fn object_mappings(&self, _feed_id: FeedId, object: &[u8]) -> Vec { - let content = - ContentEnum::decode(&mut object.to_vec().as_slice()).expect("must decode to content"); - - match content { - ContentEnum::ContentA(_) | ContentEnum::ContentB(_) => { - vec![FeedObjectMapping::Content { - // also need to consider the encoded length of the object - // encoded content_a or content_b starts at offset 1 due to enum variant - offset: 1 + Compact::::compact_len(&(object.len() as u32)) as u32, - }] - } - } - } -} diff --git a/crates/pallet-feeds/src/tests.rs b/crates/pallet-feeds/src/tests.rs deleted file mode 100644 index be4f6e44a5..0000000000 --- a/crates/pallet-feeds/src/tests.rs +++ /dev/null @@ -1,346 +0,0 @@ -use crate::mock::{ - new_test_ext, ContentEnum, Feeds, MockFeedProcessorKind, RuntimeEvent, RuntimeOrigin, System, - Test, -}; -use crate::{Call as FeedsCall, Error, Object, SuccessfulPuts, TotalObjectsAndSize}; -use codec::{Decode, Encode}; -use frame_support::{assert_noop, assert_ok}; -use sp_core::Hasher; -use sp_runtime::traits::BlakeTwo256; -use subspace_core_primitives::crypto; - -const FEED_ID: u64 = 0; -const OWNER: u64 = 100; -const NOT_OWNER: u64 = 101; - -#[test] -fn create_feed() { - new_test_ext().execute_with(|| { - assert_ok!(Feeds::create( - RuntimeOrigin::signed(OWNER), - Default::default(), - None - )); - - assert_eq!(Feeds::totals(0), TotalObjectsAndSize::default()); - - System::assert_last_event(RuntimeEvent::Feeds(crate::Event::::FeedCreated { - feed_id: FEED_ID, - who: OWNER, - })); - assert_eq!(Feeds::next_feed_id(), 1); - assert_eq!(Feeds::feeds(OWNER).unwrap().to_vec(), vec![FEED_ID]); - }); -} - -#[test] -fn can_do_put() { - new_test_ext().execute_with(|| { - let object: Object = vec![1, 2, 3, 4, 5]; - let object_size = object.len() as u64; - // create feed before putting any data - assert_ok!(Feeds::create( - RuntimeOrigin::signed(OWNER), - Default::default(), - None - )); - - assert_ok!(Feeds::put( - RuntimeOrigin::signed(OWNER), - FEED_ID, - object.clone() - )); - - // check Metadata hashmap for updated metadata - assert_eq!(Feeds::metadata(FEED_ID), Some(vec![])); - - // check Totals hashmap - assert_eq!( - Feeds::totals(FEED_ID), - TotalObjectsAndSize { - count: 1, - size: object_size, - } - ); - - assert_eq!( - SuccessfulPuts::::get()[0], - BlakeTwo256::hash( - FeedsCall::::put { - feed_id: FEED_ID, - object: object.clone() - } - .encode() - .as_slice() - ) - ); - - System::assert_last_event(RuntimeEvent::Feeds(crate::Event::::ObjectSubmitted { - feed_id: FEED_ID, - who: OWNER, - metadata: vec![], - object_size, - })); - - // only owner can put - assert_noop!( - Feeds::put(RuntimeOrigin::signed(NOT_OWNER), FEED_ID, object), - Error::::NotFeedOwner - ); - }); -} - -#[test] -fn cannot_do_put_without_creating_feed() { - new_test_ext().execute_with(|| { - let object: Object = vec![1, 2, 3, 4, 5]; - assert_noop!( - Feeds::put(RuntimeOrigin::signed(OWNER), FEED_ID, object), - Error::::UnknownFeedId - ); - - assert_eq!(System::events().len(), 0); - }); -} - -#[test] -fn can_close_open_feed() { - new_test_ext().execute_with(|| { - let object: Object = vec![1, 2, 3, 4, 5]; - // create feed before putting any data - assert_ok!(Feeds::create( - RuntimeOrigin::signed(OWNER), - Default::default(), - None - )); - - assert_ok!(Feeds::put( - RuntimeOrigin::signed(OWNER), - FEED_ID, - object.clone() - )); - - // only owner can close - assert_noop!( - Feeds::close(RuntimeOrigin::signed(NOT_OWNER), FEED_ID), - Error::::NotFeedOwner - ); - - assert_ok!(Feeds::close(RuntimeOrigin::signed(OWNER), FEED_ID)); - - System::assert_last_event(RuntimeEvent::Feeds(crate::Event::::FeedClosed { - feed_id: FEED_ID, - who: OWNER, - })); - - // cannot put a closed feed - assert_noop!( - Feeds::put(RuntimeOrigin::signed(OWNER), FEED_ID, object), - Error::::FeedClosed - ); - }); -} - -#[test] -fn cannot_close_invalid_feed() { - new_test_ext().execute_with(|| { - let feed_id = 10; // invalid - assert_noop!( - Feeds::close(RuntimeOrigin::signed(OWNER), feed_id), - Error::::UnknownFeedId - ); - }); -} - -#[test] -fn can_update_existing_feed() { - new_test_ext().execute_with(|| { - assert_ok!(Feeds::create( - RuntimeOrigin::signed(OWNER), - Default::default(), - None - )); - // only owner can update - assert_noop!( - Feeds::update( - RuntimeOrigin::signed(NOT_OWNER), - FEED_ID, - Default::default(), - None - ), - Error::::NotFeedOwner - ); - - assert_ok!(Feeds::update( - RuntimeOrigin::signed(OWNER), - FEED_ID, - Default::default(), - None - )); - System::assert_last_event(RuntimeEvent::Feeds(crate::Event::::FeedUpdated { - feed_id: FEED_ID, - who: OWNER, - })); - }); -} - -#[test] -fn cannot_update_unknown_feed() { - new_test_ext().execute_with(|| { - assert_noop!( - Feeds::update( - RuntimeOrigin::signed(OWNER), - FEED_ID, - Default::default(), - None - ), - Error::::UnknownFeedId - ); - }); -} - -#[test] -fn transfer_feed_ownership() { - new_test_ext().execute_with(|| { - assert_ok!(Feeds::create( - RuntimeOrigin::signed(OWNER), - Default::default(), - None - )); - assert_eq!(Feeds::feeds(OWNER).unwrap().to_vec(), vec![FEED_ID]); - - let new_owner = 102u64; - // only owner can transfer - assert_noop!( - Feeds::transfer(RuntimeOrigin::signed(NOT_OWNER), FEED_ID, new_owner), - Error::::NotFeedOwner - ); - assert_ok!(Feeds::transfer( - RuntimeOrigin::signed(OWNER), - FEED_ID, - new_owner - )); - assert_eq!(Feeds::feeds(OWNER), None); - assert_eq!(Feeds::feeds(new_owner).unwrap().to_vec(), vec![FEED_ID]); - }); -} - -#[test] -fn cannot_create_after_max_feeds() { - new_test_ext().execute_with(|| { - assert_ok!(Feeds::create( - RuntimeOrigin::signed(OWNER), - Default::default(), - None - )); - assert_eq!(Feeds::feeds(OWNER).unwrap().to_vec(), vec![FEED_ID]); - - // mock limits one feed per user - assert_noop!( - Feeds::create(RuntimeOrigin::signed(OWNER), Default::default(), None), - Error::::MaxFeedsReached - ); - }); -} - -fn create_content_feed(object: Object, kind: MockFeedProcessorKind, contents: Vec>) { - new_test_ext().execute_with(|| { - assert_ok!(Feeds::create(RuntimeOrigin::signed(OWNER), kind, None)); - - let call = FeedsCall::::put { - feed_id: FEED_ID, - object: object.clone(), - }; - let mappings = call.extract_call_objects(); - assert_eq!(mappings.len(), contents.len()); - let encoded_call = call.encode(); - contents.into_iter().enumerate().for_each(|(i, content)| { - assert_eq!( - Vec::::decode(&mut &encoded_call[mappings[i].offset as usize..]).unwrap(), - content - ); - - assert_eq!(mappings[i].key, crypto::blake3_hash(&content)); - }) - }); -} - -fn create_custom_content_feed( - object: Object, - feed_processor_kind: MockFeedProcessorKind, - keys: Vec>, - contents: Vec>, -) { - new_test_ext().execute_with(|| { - assert_ok!(Feeds::create( - RuntimeOrigin::signed(OWNER), - feed_processor_kind, - None - )); - - let call = FeedsCall::::put { - feed_id: FEED_ID, - object: object.clone(), - }; - let mappings = call.extract_call_objects(); - assert_eq!(mappings.len(), keys.len()); - - // keys should match - keys.into_iter().enumerate().for_each(|(i, key)| { - // key should match the feed name spaced key - assert_eq!( - mappings[i].key, - crypto::blake3_hash_list(&[&FEED_ID.encode(), key.as_slice()]) - ); - }); - - // contents should match - let encoded_call = call.encode(); - contents.into_iter().enumerate().for_each(|(i, content)| { - assert_eq!( - Vec::::decode(&mut &encoded_call[mappings[i].offset as usize..]).unwrap(), - content - ); - }) - }); -} - -#[test] -fn create_full_object_feed() { - let object: Object = (1..255).collect(); - create_content_feed(object.clone(), MockFeedProcessorKind::Content, vec![object]) -} - -#[test] -fn create_full_object_feed_with_key_override() { - let object: Object = (1..255).collect(); - let key = (0..32) - .collect::>() - .try_into() - .expect("must be 32 bytes"); - create_custom_content_feed( - object.clone(), - MockFeedProcessorKind::Custom(key), - vec![key.to_vec()], - vec![object], - ); -} - -#[test] -fn create_content_within_object_feed() { - let content_a = (1..128).collect::>(); - let object = ContentEnum::ContentA(content_a.clone()).encode(); - create_content_feed( - object, - MockFeedProcessorKind::ContentWithin, - vec![content_a], - ); - - let content_b = (129..255).collect::>(); - let object = ContentEnum::ContentB(content_b.clone()).encode(); - create_content_feed( - object, - MockFeedProcessorKind::ContentWithin, - vec![content_b], - ) -} diff --git a/crates/pallet-grandpa-finality-verifier/Cargo.toml b/crates/pallet-grandpa-finality-verifier/Cargo.toml deleted file mode 100644 index 038ea5f20c..0000000000 --- a/crates/pallet-grandpa-finality-verifier/Cargo.toml +++ /dev/null @@ -1,54 +0,0 @@ -[package] -name = "pallet-grandpa-finality-verifier" -version = "0.1.0" -authors = ["Vedhavyas Singareddi "] -edition = "2021" -license = "Apache-2.0" -homepage = "https://subspace.network" -repository = "https://github.com/autonomys/subspace" -description = "Pallet to verify GRANDPA finality proofs for Substrate based chains" -readme = "README.md" - -[dependencies] -codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false } -finality-grandpa = { version = "0.16.1", default-features = false } -log = { version = "0.4.22", default-features = false } -num-traits = { version = "0.2.18", default-features = false } -scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -serde = { version = "1.0.206", optional = true } - -# Substrate Dependencies - -frame-support = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -frame-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-consensus-grandpa = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-std = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } - -[dev-dependencies] -ed25519-dalek = { version = "2.1.1", default-features = false } -sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-application-crypto = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } - -[features] -default = ["std"] -std = [ - "codec/std", - "finality-grandpa/std", - "frame-support/std", - "frame-system/std", - "log/std", - "num-traits/std", - "scale-info/std", - "serde", - "sp-consensus-grandpa/std", - "sp-core/std", - "sp-runtime/std", - "sp-std/std", -] -try-runtime = [ - "frame-support/try-runtime", - "frame-system/try-runtime", - "sp-runtime/try-runtime", -] diff --git a/crates/pallet-grandpa-finality-verifier/README.md b/crates/pallet-grandpa-finality-verifier/README.md deleted file mode 100644 index 1f258e20e2..0000000000 --- a/crates/pallet-grandpa-finality-verifier/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# pallet-grandpa-finality-verifier -License: Apache-2.0 - -GRANDPA finality verifier is used to verify the justifications provided within the substrate based blocks indexing them on our DSN. - -The pallet is responsible for: -- providing a basic abstraction over any substrate based chains through `Chain` trait. -- decoding the block and its components. -- verifying the blocks and its justifications using the current authority set the block was produced in. -- importing any authority set changes from the header after the verification. - -This pallet is not responsible for: -- verifying or recognizing the forks. So this is left for the admin to reinitialize the chain state after the fork. diff --git a/crates/pallet-grandpa-finality-verifier/src/chain.rs b/crates/pallet-grandpa-finality-verifier/src/chain.rs deleted file mode 100644 index 1e74225588..0000000000 --- a/crates/pallet-grandpa-finality-verifier/src/chain.rs +++ /dev/null @@ -1,118 +0,0 @@ -#[cfg(not(feature = "std"))] -extern crate alloc; - -use crate::grandpa::GrandpaJustification; -use crate::{Config, EncodedBlockHash, EncodedBlockNumber, Error}; -#[cfg(not(feature = "std"))] -use alloc::vec::Vec; -use codec::Decode; -use frame_support::Parameter; -use num_traits::AsPrimitive; -use sp_runtime::generic; -use sp_runtime::traits::{ - AtLeast32BitUnsigned, Hash as HashT, Header as HeaderT, MaybeDisplay, - MaybeSerializeDeserialize, Member, Saturating, SimpleBitOps, -}; -use sp_std::hash::Hash; -use sp_std::str::FromStr; - -pub(crate) type OpaqueExtrinsic = Vec; -pub type SignedBlock
= generic::SignedBlock>; - -/// Minimal Substrate-based chain representation that may be used from no_std environment. -pub trait Chain { - /// A type that fulfills the abstract idea of what a Substrate block number is. - // Constraints come from the associated Number type of `sp_runtime::traits::Header` - // See here for more info: - // https://crates.parity.io/sp_runtime/traits/trait.Header.html#associatedtype.Number - // - // Note that the `AsPrimitive` trait is required by the GRANDPA justification - // verifier, and is not usually part of a Substrate Header's Number type. - type BlockNumber: Parameter - + Member - + MaybeSerializeDeserialize - + Hash - + Copy - + Default - + MaybeDisplay - + AtLeast32BitUnsigned - + FromStr - + AsPrimitive - + Default - + Saturating; - - /// A type that fulfills the abstract idea of what a Substrate hash is. - // Constraints come from the associated Hash type of `sp_runtime::traits::Header` - // See here for more info: - // https://crates.parity.io/sp_runtime/traits/trait.Header.html#associatedtype.Hash - type Hash: Parameter - + Member - + MaybeSerializeDeserialize - + Hash - + Ord - + Copy - + MaybeDisplay - + Default - + SimpleBitOps - + AsRef<[u8]> - + AsMut<[u8]>; - - /// A type that fulfills the abstract idea of what a Substrate header is. - // See here for more info: - // https://crates.parity.io/sp_runtime/traits/trait.Header.html - type Header: Parameter - + HeaderT - + MaybeSerializeDeserialize; - - /// A type that fulfills the abstract idea of what a Substrate hasher (a type - /// that produces hashes) is. - // Constraints come from the associated Hashing type of `sp_runtime::traits::Header` - // See here for more info: - // https://crates.parity.io/sp_runtime/traits/trait.Header.html#associatedtype.Hashing - type Hasher: HashT; - - fn decode_block(block: &[u8]) -> Result, Error> { - SignedBlock::::decode(&mut &*block).map_err(|error| { - log::error!("Cannot decode block, error: {:?}", error); - Error::::FailedDecodingBlock - }) - } - - fn decode_header(header: &[u8]) -> Result> { - Self::Header::decode(&mut &*header).map_err(|error| { - log::error!("Cannot decode header, error: {:?}", error); - Error::::FailedDecodingHeader - }) - } - - fn decode_grandpa_justifications( - justifications: &[u8], - ) -> Result, Error> { - GrandpaJustification::::decode(&mut &*justifications).map_err(|error| { - log::error!("Cannot decode justifications, error: {:?}", error); - Error::::FailedDecodingJustifications - }) - } - - fn decode_block_number_and_hash( - pair: (EncodedBlockNumber, EncodedBlockHash), - ) -> Result<(Self::BlockNumber, Self::Hash), Error> { - let number = Self::decode_block_number::(pair.0.as_slice())?; - let hash = Self::decode_block_hash::(pair.1.as_slice())?; - Ok((number, hash)) - } - - fn decode_block_number(number: &[u8]) -> Result> { - Self::BlockNumber::decode(&mut &*number).map_err(|error| { - log::error!("Cannot decode block number, error: {:?}", error); - Error::::FailedDecodingBlockNumber - }) - } - - fn decode_block_hash(hash: &[u8]) -> Result> { - Self::Hash::decode(&mut &*hash).map_err(|error| { - log::error!("Cannot decode block hash, error: {:?}", error); - Error::::FailedDecodingBlockHash - }) - } -} diff --git a/crates/pallet-grandpa-finality-verifier/src/grandpa.rs b/crates/pallet-grandpa-finality-verifier/src/grandpa.rs deleted file mode 100644 index cf62d4c2fd..0000000000 --- a/crates/pallet-grandpa-finality-verifier/src/grandpa.rs +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright (C) 2022 Subspace Labs, Inc. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#[cfg(not(feature = "std"))] -extern crate alloc; - -// GRANDPA verification is mostly taken from Parity's bridges https://github.com/paritytech/parity-bridges-common/tree/master/primitives/header-chain -#[cfg(not(feature = "std"))] -use alloc::vec::Vec; -use codec::{Decode, Encode}; -use finality_grandpa::voter_set::VoterSet; -use scale_info::TypeInfo; -#[cfg(feature = "std")] -use serde::{Deserialize, Serialize}; -use sp_consensus_grandpa::{ - AuthorityId, AuthorityList, AuthoritySignature, ConsensusLog, SetId, GRANDPA_ENGINE_ID, -}; -use sp_runtime::traits::Header as HeaderT; -use sp_std::collections::btree_map::BTreeMap; -use sp_std::collections::btree_set::BTreeSet; -use sp_std::prelude::*; - -/// A GRANDPA Justification is a proof that a given header was finalized -/// at a certain height and with a certain set of authorities. -/// -/// This particular proof is used to prove that headers on a bridged chain -/// (so not our chain) have been finalized correctly. -#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)] -pub struct GrandpaJustification { - /// The round (voting period) this justification is valid for. - pub round: u64, - /// The set of votes for the chain which is to be finalized. - pub commit: - finality_grandpa::Commit, - /// A proof that the chain of blocks in the commit are related to each other. - pub votes_ancestries: Vec
, -} - -/// A GRANDPA Authority List and ID. -#[derive(Debug, Default, Encode, Decode, Eq, PartialEq, Clone, TypeInfo)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub struct AuthoritySet { - /// List of GRANDPA authorities for the current round. - pub authorities: AuthorityList, - /// Monotonic identifier of the current GRANDPA authority set. - pub set_id: SetId, -} - -/// Votes ancestries with useful methods. -#[derive(Debug)] -struct AncestryChain { - /// Header hash => parent header hash mapping. - parents: BTreeMap, - /// Hashes of headers that were not visited by `is_ancestor` method. - unvisited: BTreeSet, -} - -impl AncestryChain
{ - /// Create new ancestry chain. - fn new(ancestry: &[Header]) -> AncestryChain
{ - let mut parents = BTreeMap::new(); - let mut unvisited = BTreeSet::new(); - for ancestor in ancestry { - let hash = ancestor.hash(); - let parent_hash = *ancestor.parent_hash(); - parents.insert(hash, parent_hash); - unvisited.insert(hash); - } - AncestryChain { parents, unvisited } - } - - /// Returns `Ok(_)` if `precommit_target` is a descendant of the `commit_target` block and - /// `Err(_)` otherwise. - fn ensure_descendant( - mut self, - commit_target: &Header::Hash, - precommit_target: &Header::Hash, - ) -> Result { - let mut current_hash = *precommit_target; - while current_hash != *commit_target { - let is_visited_before = !self.unvisited.remove(¤t_hash); - current_hash = match self.parents.get(¤t_hash) { - Some(parent_hash) => { - if is_visited_before { - // `Some(parent_hash)` means that the `current_hash` is in the `parents` - // container `is_visited_before` means that it has been visited before in - // some of previous calls => since we assume that previous call has finished - // with `true`, this also will be finished with `true` - return Ok(self); - } - - *parent_hash - } - None => return Err(Error::PrecommitIsNotCommitDescendant), - }; - } - - Ok(self) - } -} - -/// Justification verification error. -#[derive(Debug, Eq, PartialEq)] -pub enum Error { - /// Justification is finalizing unexpected header. - InvalidJustificationTarget, - /// The authority has provided an invalid signature. - InvalidAuthoritySignature, - /// The justification contains precommit for header that is not a descendant of the commit - /// header. - PrecommitIsNotCommitDescendant, - /// The cumulative weight of all votes in the justification is not enough to justify commit - /// header finalization. - TooLowCumulativeWeight, - /// The justification contains extra (unused) headers in its `votes_ancestries` field. - ExtraHeadersInVotesAncestries, - /// Arithematic overflow - ArithematicOverflow, -} - -/// Verify that justification, that is generated by given authority set, finalizes given header. -pub(crate) fn verify_justification( - finalized_target: (Header::Hash, Header::Number), - authorities_set_id: SetId, - authorities_set: &VoterSet, - justification: &GrandpaJustification
, -) -> Result<(), Error> -where - Header::Number: finality_grandpa::BlockNumberOps, -{ - // always ensure the justification belongs to either current target or its descendent - let (_finalized_hash, finalized_number) = finalized_target; - if justification.commit.target_number < finalized_number { - return Err(Error::InvalidJustificationTarget); - } - - let mut chain = AncestryChain::new(&justification.votes_ancestries); - let mut signature_buffer = Vec::new(); - let mut votes = BTreeSet::new(); - let mut cumulative_weight = 0u64; - for signed in &justification.commit.precommits { - // authority must be in the set - let authority_info = match authorities_set.get(&signed.id) { - Some(authority_info) => authority_info, - None => { - // just ignore precommit from unknown authority as - // `finality_grandpa::import_precommit` does - continue; - } - }; - - // check if authority has already voted in the same round. - // - // there's a lot of code in `validate_commit` and `import_precommit` functions inside - // `finality-grandpa` crate (mostly related to reporting equivocations). But the only thing - // that we care about is that only first vote from the authority is accepted - if !votes.insert(signed.id.clone()) { - continue; - } - - // everything below this line can't just `continue`, because state is already altered - - // precommits aren't allowed for block lower than the target - if signed.precommit.target_number < justification.commit.target_number { - return Err(Error::PrecommitIsNotCommitDescendant); - } - // all precommits must be descendants of target block - chain = chain.ensure_descendant( - &justification.commit.target_hash, - &signed.precommit.target_hash, - )?; - // since we know now that the precommit target is the descendant of the justification - // target, we may increase 'weight' of the justification target - // - // there's a lot of code in the `VoteGraph::insert` method inside `finality-grandpa` crate, - // but in the end it is only used to find GHOST, which we don't care about. The only thing - // that we care about is that the justification target has enough weight - cumulative_weight = cumulative_weight - .checked_add(authority_info.weight().0.into()) - .ok_or(Error::ArithematicOverflow)?; - // verify authority signature - if !sp_consensus_grandpa::check_message_signature_with_buffer( - &finality_grandpa::Message::Precommit(signed.precommit.clone()), - &signed.id, - &signed.signature, - justification.round, - authorities_set_id, - &mut signature_buffer, - ) { - return Err(Error::InvalidAuthoritySignature); - } - } - - // check that there are no extra headers in the justification - if !chain.unvisited.is_empty() { - return Err(Error::ExtraHeadersInVotesAncestries); - } - - // check that the cumulative weight of validators voted for the justification target (or one - // of its descendents) is larger than required threshold. - let threshold = authorities_set.threshold().0.into(); - if cumulative_weight >= threshold { - Ok(()) - } else { - Err(Error::TooLowCumulativeWeight) - } -} - -pub(crate) fn find_scheduled_change( - header: &H, -) -> Option> { - use sp_runtime::generic::OpaqueDigestItemId; - - let id = OpaqueDigestItemId::Consensus(&GRANDPA_ENGINE_ID); - - let filter_log = |log: ConsensusLog| match log { - ConsensusLog::ScheduledChange(change) => Some(change), - _ => None, - }; - - // find the first consensus digest with the right ID which converts to - // the right kind of consensus log. - header - .digest() - .convert_first(|l| l.try_to(id).and_then(filter_log)) -} - -/// Checks the given header for a consensus digest signaling a **forced** scheduled change and -/// extracts it. -pub(crate) fn find_forced_change( - header: &H, -) -> Option<(H::Number, sp_consensus_grandpa::ScheduledChange)> { - use sp_runtime::generic::OpaqueDigestItemId; - - let id = OpaqueDigestItemId::Consensus(&GRANDPA_ENGINE_ID); - - let filter_log = |log: ConsensusLog| match log { - ConsensusLog::ForcedChange(delay, change) => Some((delay, change)), - _ => None, - }; - - // find the first consensus digest with the right ID which converts to - // the right kind of consensus log. - header - .digest() - .convert_first(|l| l.try_to(id).and_then(filter_log)) -} diff --git a/crates/pallet-grandpa-finality-verifier/src/lib.rs b/crates/pallet-grandpa-finality-verifier/src/lib.rs deleted file mode 100644 index 177d3f230f..0000000000 --- a/crates/pallet-grandpa-finality-verifier/src/lib.rs +++ /dev/null @@ -1,354 +0,0 @@ -// Copyright (C) 2022 Subspace Labs, Inc. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! Substrate GRANDPA finality verifier -//! -//! This pallet is an on-chain GRANDPA finality verifier for Substrate based chains. -//! -//! The pallet is responsible for tracking GRANDPA validator set hand-offs. We only accept headers -//! with justifications signed by the current validator set we know of. The header is inspected for -//! a `ScheduledChanges` digest item, which is then used to update to next validator set. -//! -//! Since this pallet only tracks finalized headers it does not deal with forks. Forks can only -//! occur if the GRANDPA validator set on the bridged chain is either colluding or there is a severe -//! bug causing resulting in an equivocation. Such events are outside the scope of this pallet. -//! Shall the fork occur on the bridged chain governance intervention will be required to -//! re-initialize the bridge and track the right fork. - -#![cfg_attr(not(feature = "std"), no_std)] - -pub mod chain; -mod grandpa; -#[cfg(test)] -mod tests; - -#[cfg(not(feature = "std"))] -extern crate alloc; - -#[cfg(not(feature = "std"))] -use alloc::vec::Vec; -use codec::{Decode, Encode}; -use scale_info::TypeInfo; -#[cfg(feature = "std")] -use serde::{Deserialize, Serialize}; -use sp_consensus_grandpa::SetId; -use sp_std::fmt::Debug; - -// Re-export in crate namespace for `construct_runtime!` -pub use pallet::*; - -/// Data required to initialize a Chain -#[derive(Default, Debug, Encode, Decode, Clone, Eq, PartialEq, TypeInfo)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub struct InitializationData { - /// Scale encoded best finalized header we know. - pub best_known_finalized_header: Vec, - /// The ID of the current authority set - pub set_id: SetId, -} - -// Scale encoded block number, hash, and header of the target chain -type EncodedBlockNumber = Vec; -type EncodedBlockHash = Vec; -type EncodedHeader = Vec; - -#[frame_support::pallet] -pub mod pallet { - use crate::chain::Chain; - use crate::grandpa::{ - find_forced_change, find_scheduled_change, verify_justification, AuthoritySet, - }; - use crate::{EncodedBlockHash, EncodedBlockNumber, EncodedHeader, InitializationData}; - use finality_grandpa::voter_set::VoterSet; - use frame_support::pallet_prelude::*; - use sp_consensus_grandpa::GRANDPA_ENGINE_ID; - use sp_runtime::traits::{CheckedAdd, CheckedSub, Hash, Header, One, Zero}; - use sp_runtime::ArithmeticError; - use sp_std::fmt::Debug; - - #[pallet::config] - pub trait Config: frame_system::Config { - // Chain ID uniquely identifies a substrate based chain - type ChainId: Parameter + Member + Debug + Default + Copy; - } - - #[pallet::pallet] - #[pallet::without_storage_info] - pub struct Pallet(PhantomData); - - /// The point after which the block validation begins - #[pallet::storage] - pub(super) type ValidationCheckPoint = - StorageMap<_, Identity, T::ChainId, (EncodedBlockNumber, EncodedHeader), ValueQuery>; - - /// Oldest known parent - #[pallet::storage] - pub(super) type OldestKnownParent = - StorageMap<_, Identity, T::ChainId, (EncodedBlockNumber, EncodedBlockHash), ValueQuery>; - - /// Known tip of the chain - #[pallet::storage] - pub(super) type ChainTip = - StorageMap<_, Identity, T::ChainId, (EncodedBlockNumber, EncodedBlockHash), ValueQuery>; - - /// The current GRANDPA Authority set for a given Chain - #[pallet::storage] - pub(super) type CurrentAuthoritySet = - StorageMap<_, Identity, T::ChainId, AuthoritySet, ValueQuery>; - - #[pallet::error] - pub enum Error { - /// The block and its contents are not valid - InvalidBlock, - /// The authority set from the underlying header chain is invalid. - InvalidAuthoritySet, - /// Justification is missing.. - MissingJustification, - /// The given justification is invalid for the given header. - InvalidJustification, - /// Failed to decode initialization data - FailedDecodingInitData, - /// Failed to Decode header - FailedDecodingHeader, - /// Failed to Decode block number - FailedDecodingBlockNumber, - /// Failed to Decode block hash - FailedDecodingBlockHash, - /// Failed to Decode block - FailedDecodingBlock, - /// Failed to decode justifications - FailedDecodingJustifications, - /// The header is already finalized - InvalidHeader, - /// The scheduled authority set change found in the header is unsupported by the pallet. - /// - /// This is the case for non-standard (e.g forced) authority set changes. - UnsupportedScheduledChange, - } - - /// Initializes the chain by extracting the Authority set and best known parent of the chain. - /// After the initialization the import of blocks can happen in forward and reverse direction based on the parent stored - /// If Genesis is the validation point, then parent is set to Genesis. - /// Else parent is set to the parent of the best finalized header - pub(crate) fn initialize_chain( - chain_id: T::ChainId, - init_params: InitializationData, - ) -> DispatchResult { - let InitializationData { - best_known_finalized_header: encoded_header, - set_id, - } = init_params; - let header = C::decode_header::(encoded_header.as_slice())?; - let change = - find_scheduled_change(&header).ok_or(Error::::UnsupportedScheduledChange)?; - - // Set the validation point - let encoded_number = header.number().encode(); - ValidationCheckPoint::::insert(chain_id, (encoded_number.clone(), encoded_header)); - - // Set authority set - let authority_set = AuthoritySet { - authorities: change.next_authorities, - set_id, - }; - CurrentAuthoritySet::::insert(chain_id, authority_set); - - // set the oldest known parent - let (parent_number, parent_hash) = header - .number() - .checked_sub(&One::one()) - .map(|number| (number.encode(), header.parent_hash().encode())) - .unwrap_or((encoded_number, header.hash().encode())); - - OldestKnownParent::::insert(chain_id, (parent_number.clone(), parent_hash.clone())); - // we also set the chain tip to parent so that we sequentially import blocks from parent + 1 - ChainTip::::insert(chain_id, (parent_number, parent_hash)); - Ok(()) - } - - pub fn validate_finalized_block( - chain_id: T::ChainId, - object: &[u8], - ) -> Result<(C::Hash, C::BlockNumber), DispatchError> { - // basic block validation - let block = C::decode_block::(object)?; - let number = *block.block.header.number(); - let hash = block.block.header.hash(); - - let extrinsics_root = C::Hasher::ordered_trie_root( - block.block.extrinsics.iter().map(Encode::encode).collect(), - sp_runtime::StateVersion::V0, - ); - ensure!( - extrinsics_root == *block.block.header.extrinsics_root(), - Error::::InvalidBlock - ); - - let (oldest_known_parent_height, oldest_known_parent_hash) = - C::decode_block_number_and_hash::(OldestKnownParent::::get(chain_id))?; - - // if the target is the known oldest parent, we import the block and progress backward - if oldest_known_parent_height == number { - ensure!(oldest_known_parent_hash == hash, Error::::InvalidBlock); - - OldestKnownParent::::insert( - chain_id, - ( - number.checked_sub(&One::one()).unwrap_or(number).encode(), - block.block.header.parent_hash().encode(), - ), - ); - - return Ok((hash, number)); - } - - // get last imported block height and hash - let (parent_number, parent_hash) = - C::decode_block_number_and_hash::(ChainTip::::get(chain_id))?; - - // block height must be always increasing - ensure!( - number - == parent_number - .checked_add(&One::one()) - .ok_or(ArithmeticError::Overflow)?, - Error::::InvalidBlock - ); - ensure!( - *block.block.header.parent_hash() == parent_hash, - Error::::InvalidBlock - ); - - // double check the validation header before importing the block - let (encoded_number, encoded_validation_header) = ValidationCheckPoint::::get(chain_id); - let validation_number = C::decode_block_number::(encoded_number.as_slice())?; - if number == validation_number { - ensure!( - encoded_validation_header == block.block.header.encode(), - Error::::InvalidHeader - ); - } - - // if the target header is a descendent of validation block, validate the justification - if number > validation_number { - let justification = block - .justifications - .ok_or(Error::::MissingJustification)? - .into_justification(GRANDPA_ENGINE_ID) - .ok_or(Error::::MissingJustification)?; - let justification = C::decode_grandpa_justifications::(justification.as_slice())?; - - // fetch current authority set - let authority_set = >::get(chain_id); - let voter_set = - VoterSet::new(authority_set.authorities).ok_or(Error::::InvalidAuthoritySet)?; - let set_id = authority_set.set_id; - - // verify justification - verify_justification::((hash, number), set_id, &voter_set, &justification) - .map_err(|e| { - log::error!( - target: "runtime::grandpa-finality-verifier", - "Received invalid justification for {:?}: {:?}", - hash, - e, - ); - Error::::InvalidJustification - })?; - - // Update any next authority set if any - try_enact_authority_change::(chain_id, &block.block.header, set_id)?; - } - - // update the latest descendant - ChainTip::::insert(chain_id, (number.encode(), hash.encode())); - Ok((hash, number)) - } - - /// Check the given header for a GRANDPA scheduled authority set change. If a change - /// is found it will be enacted immediately. - /// - /// This function does not support forced changes, or scheduled changes with delays - /// since these types of changes are indicative of abnormal behavior from GRANDPA. - pub(crate) fn try_enact_authority_change( - chain_id: T::ChainId, - header: &C::Header, - current_set_id: sp_consensus_grandpa::SetId, - ) -> DispatchResult { - // We don't support forced changes - at that point governance intervention is required. - ensure!( - find_forced_change(header).is_none(), - Error::::UnsupportedScheduledChange - ); - - if let Some(change) = find_scheduled_change(header) { - // GRANDPA only includes a `delay` for forced changes, so this isn't valid. - ensure!( - change.delay == Zero::zero(), - Error::::UnsupportedScheduledChange - ); - - let next_authorities = AuthoritySet { - authorities: change.next_authorities, - set_id: current_set_id + 1, - }; - - // Since our header schedules a change and we know the delay is 0, it must also enact - // the change. - CurrentAuthoritySet::::insert(chain_id, &next_authorities); - - log::info!( - target: "runtime::grandpa-finality-verifier", - "Transitioned from authority set {} to {}! New authorities are: {:?}", - current_set_id, - current_set_id + 1, - next_authorities, - ); - }; - - Ok(()) - } - - /// Bootstrap the chain to start importing valid finalized blocks - /// - /// The initial configuration provided does not need to be the genesis header of the bridged - /// chain, it can be any arbitrary header. You can also provide the next scheduled set - /// change if it is already know. - /// - /// This function is only allowed to be called from a trusted origin and writes to storage - /// with practically no checks in terms of the validity of the data. It is important that - /// you ensure that valid data is being passed in. - pub fn initialize( - chain_id: T::ChainId, - init_data: &[u8], - ) -> DispatchResult { - let data = InitializationData::decode(&mut &*init_data).map_err(|error| { - log::error!("Cannot decode init data, error: {:?}", error); - Error::::FailedDecodingInitData - })?; - - initialize_chain::(chain_id, data)?; - Ok(()) - } - - /// purges the on chain state of a given chain - pub fn purge(chain_id: T::ChainId) -> DispatchResult { - ValidationCheckPoint::::remove(chain_id); - CurrentAuthoritySet::::remove(chain_id); - ChainTip::::remove(chain_id); - OldestKnownParent::::remove(chain_id); - Ok(()) - } -} diff --git a/crates/pallet-grandpa-finality-verifier/src/tests/justification.rs b/crates/pallet-grandpa-finality-verifier/src/tests/justification.rs deleted file mode 100644 index ccc065d7a7..0000000000 --- a/crates/pallet-grandpa-finality-verifier/src/tests/justification.rs +++ /dev/null @@ -1,220 +0,0 @@ -//! Utilities for testing runtime code. - -use crate::grandpa::GrandpaJustification; -use crate::tests::keyring::{test_keyring, Account}; -use crate::tests::valid_extrinsics_root; -use codec::Encode; -use sp_consensus_grandpa::{AuthorityId, AuthoritySignature, AuthorityWeight, SetId}; -use sp_runtime::traits::{Header as HeaderT, One, Zero}; -use sp_std::prelude::*; - -pub(crate) const TEST_GRANDPA_ROUND: u64 = 1; -pub(crate) const TEST_GRANDPA_SET_ID: SetId = 1; - -/// Configuration parameters when generating test GRANDPA justifications. -#[derive(Clone)] -pub(crate) struct JustificationGeneratorParams { - /// The header which we want to finalize. - pub header: H, - /// The GRANDPA round number for the current authority set. - pub round: u64, - /// The current authority set ID. - pub set_id: SetId, - /// The current GRANDPA authority set. - /// - /// The size of the set will determine the number of pre-commits in our justification. - pub authorities: Vec<(Account, AuthorityWeight)>, - /// The total number of precommit ancestors in the `votes_ancestries` field our justification. - /// - /// These may be distributed among many forks. - pub ancestors: u32, - /// The number of forks. - /// - /// Useful for creating a "worst-case" scenario in which each authority is on its own fork. - pub forks: u32, -} - -impl Default for JustificationGeneratorParams { - #[inline] - fn default() -> Self { - Self { - header: test_header(One::one()), - round: TEST_GRANDPA_ROUND, - set_id: TEST_GRANDPA_SET_ID, - authorities: test_keyring(), - ancestors: 2, - forks: 1, - } - } -} - -/// Make a valid GRANDPA justification with sensible defaults -pub(crate) fn make_default_justification(header: &H) -> GrandpaJustification { - let params = JustificationGeneratorParams:: { - header: header.clone(), - ..Default::default() - }; - - make_justification_for_header(params) -} - -/// Generate justifications in a way where we are able to tune the number of pre-commits -/// and vote ancestries which are included in the justification. -/// -/// This is useful for benchmarkings where we want to generate valid justifications with -/// a specific number of pre-commits (tuned with the number of "authorities") and/or a specific -/// number of vote ancestries (tuned with the "votes" parameter). -/// -/// Note: This needs at least three authorities or else the verifier will complain about -/// being given an invalid commit. -pub(crate) fn make_justification_for_header( - params: JustificationGeneratorParams, -) -> GrandpaJustification { - let JustificationGeneratorParams { - header, - round, - set_id, - authorities, - mut ancestors, - forks, - } = params; - let (target_hash, target_number) = (header.hash(), *header.number()); - let mut votes_ancestries = vec![]; - let mut precommits = vec![]; - - assert!(forks != 0, "Need at least one fork to have a chain.."); - assert!( - forks as usize <= authorities.len(), - "If we have more forks than authorities we can't create valid pre-commits for all the forks." - ); - - // Roughly, how many vote ancestries do we want per fork - let target_depth = (ancestors + forks - 1) / forks; - - let mut unsigned_precommits = vec![]; - for i in 0..forks { - let depth = if ancestors >= target_depth { - ancestors -= target_depth; - target_depth - } else { - ancestors - }; - - // Note: Adding 1 to account for the target header - let chain = generate_chain(i, depth + 1, &header); - - // We don't include our finality target header in the vote ancestries - for child in &chain[1..] { - votes_ancestries.push(child.clone()); - } - - // The header we need to use when pre-commiting is the one at the highest height - // on our chain. - let precommit_candidate = chain.last().map(|h| (h.hash(), *h.number())).unwrap(); - unsigned_precommits.push(precommit_candidate); - } - - for (i, (id, _weight)) in authorities.iter().enumerate() { - // Assign authorities to sign pre-commits in a round-robin fashion - let target = unsigned_precommits[i % forks as usize]; - let precommit = signed_precommit::(id, target, round, set_id); - - precommits.push(precommit); - } - - GrandpaJustification { - round, - commit: finality_grandpa::Commit { - target_hash, - target_number, - precommits, - }, - votes_ancestries, - } -} - -fn generate_chain(fork_id: u32, depth: u32, ancestor: &H) -> Vec { - let mut headers = vec![ancestor.clone()]; - - for i in 1..depth { - let parent = &headers[(i - 1) as usize]; - let (hash, num) = (parent.hash(), *parent.number()); - - let mut header = test_header::(num + One::one()); - header.set_parent_hash(hash); - - // Modifying the digest so headers at the same height but in different forks have different - // hashes - header - .digest_mut() - .logs - .push(sp_runtime::DigestItem::Other(fork_id.encode())); - - headers.push(header); - } - - headers -} - -/// Create signed precommit with given target. -pub(crate) fn signed_precommit( - signer: &Account, - target: (H::Hash, H::Number), - round: u64, - set_id: SetId, -) -> finality_grandpa::SignedPrecommit { - let precommit = finality_grandpa::Precommit { - target_hash: target.0, - target_number: target.1, - }; - - let encoded = sp_consensus_grandpa::localized_payload( - round, - set_id, - &finality_grandpa::Message::Precommit(precommit.clone()), - ); - - let signature = signer.sign(&encoded); - let raw_signature: Vec = signature.to_bytes().into(); - - // Need to wrap our signature and id types that they match what our `SignedPrecommit` is - // expecting - let signature = AuthoritySignature::try_from(raw_signature).expect( - "We know our Keypair is good, - so our signature must also be good.", - ); - let id = (*signer).into(); - - finality_grandpa::SignedPrecommit { - precommit, - signature, - id, - } -} - -/// Get a header for testing. -/// -/// The correct parent hash will be used if given a non-zero header. -pub(crate) fn test_header(number: H::Number) -> H { - let default = |num| { - H::new( - num, - valid_extrinsics_root::(), - Default::default(), - Default::default(), - Default::default(), - ) - }; - - let mut header = default(number); - if number != Zero::zero() { - let parent_hash = test_header::(number - One::one()).hash(); - header.set_parent_hash(parent_hash); - } - header -} - -/// Convenience function for generating a Header ID at a given block number. -pub(crate) fn header_id(index: u8) -> (H::Hash, H::Number) { - (test_header::(index.into()).hash(), index.into()) -} diff --git a/crates/pallet-grandpa-finality-verifier/src/tests/keyring.rs b/crates/pallet-grandpa-finality-verifier/src/tests/keyring.rs deleted file mode 100644 index 857d008fb3..0000000000 --- a/crates/pallet-grandpa-finality-verifier/src/tests/keyring.rs +++ /dev/null @@ -1,70 +0,0 @@ -//! Utilities for working with test accounts. - -use codec::Encode; -use ed25519_dalek::{ - SecretKey, Signature, Signer, SigningKey, PUBLIC_KEY_LENGTH, SECRET_KEY_LENGTH, -}; -use finality_grandpa::voter_set::VoterSet; -use sp_consensus_grandpa::{AuthorityId, AuthorityList, AuthorityWeight}; -use sp_std::prelude::*; - -/// Set of test accounts with friendly names. -pub(crate) const ALICE: Account = Account(0); -pub(crate) const BOB: Account = Account(1); -pub(crate) const CHARLIE: Account = Account(2); -pub(crate) const DAVE: Account = Account(3); -pub(crate) const EVE: Account = Account(4); - -/// A test account which can be used to sign messages. -#[derive(Debug, Clone, Copy)] -pub(crate) struct Account(pub u16); - -impl Account { - pub(crate) fn public(&self) -> [u8; PUBLIC_KEY_LENGTH] { - self.signing_key().to_keypair_bytes()[SECRET_KEY_LENGTH..][..PUBLIC_KEY_LENGTH] - .try_into() - .unwrap() - } - - pub(crate) fn signing_key(&self) -> SigningKey { - let data = self.0.encode(); - let mut secret_key: SecretKey = [0_u8; 32]; - secret_key[0..data.len()].copy_from_slice(&data); - - SigningKey::from_bytes(&secret_key) - } - - pub(crate) fn sign(&self, msg: &[u8]) -> Signature { - self.signing_key().sign(msg) - } -} - -impl From for AuthorityId { - #[inline] - fn from(p: Account) -> Self { - sp_application_crypto::UncheckedFrom::unchecked_from(p.public()) - } -} - -/// Get a valid set of voters for a Grandpa round. -pub(crate) fn voter_set() -> VoterSet { - VoterSet::new(authority_list()).unwrap() -} - -/// Convenience function to get a list of Grandpa authorities. -pub(crate) fn authority_list() -> AuthorityList { - test_keyring() - .iter() - .map(|(id, w)| (AuthorityId::from(*id), *w)) - .collect() -} - -/// Get the corresponding identities from the keyring for the "standard" authority set. -pub(crate) fn test_keyring() -> Vec<(Account, AuthorityWeight)> { - vec![(ALICE, 1), (BOB, 1), (CHARLIE, 1)] -} - -/// Get a list of "unique" accounts. -pub(crate) fn accounts(len: u16) -> Vec { - (0..len).map(Account).collect() -} diff --git a/crates/pallet-grandpa-finality-verifier/src/tests/mock.rs b/crates/pallet-grandpa-finality-verifier/src/tests/mock.rs deleted file mode 100644 index 56a1ce23c2..0000000000 --- a/crates/pallet-grandpa-finality-verifier/src/tests/mock.rs +++ /dev/null @@ -1,35 +0,0 @@ -use frame_support::weights::Weight; -use frame_support::{construct_runtime, derive_impl, parameter_types}; -use sp_runtime::Perbill; - -pub(crate) type ChainId = u64; -type Block = frame_system::mocking::MockBlock; - -use crate as grandpa; - -construct_runtime! { - pub struct TestRuntime { - System: frame_system, - Grandpa: grandpa, - } -} - -parameter_types! { - pub const BlockHashCount: u64 = 250; - pub const MaximumBlockWeight: Weight = Weight::from_parts(1024, 0); - pub const MaximumBlockLength: u32 = 2 * 1024; - pub const AvailableBlockRatio: Perbill = Perbill::one(); -} - -#[derive_impl(frame_system::config_preludes::TestDefaultConfig)] -impl frame_system::Config for TestRuntime { - type Block = Block; -} - -impl grandpa::Config for TestRuntime { - type ChainId = ChainId; -} - -pub fn run_test(test: impl FnOnce() -> T) -> T { - sp_io::TestExternalities::new(Default::default()).execute_with(test) -} diff --git a/crates/pallet-grandpa-finality-verifier/src/tests/mod.rs b/crates/pallet-grandpa-finality-verifier/src/tests/mod.rs deleted file mode 100644 index 8f10df64d0..0000000000 --- a/crates/pallet-grandpa-finality-verifier/src/tests/mod.rs +++ /dev/null @@ -1,640 +0,0 @@ -mod justification; -mod keyring; -mod mock; - -use crate::chain::{Chain, OpaqueExtrinsic}; -use crate::grandpa::{verify_justification, AuthoritySet, Error, GrandpaJustification}; -use crate::{ - initialize, validate_finalized_block, ChainTip, CurrentAuthoritySet, Error as ErrorP, - InitializationData, OldestKnownParent, ValidationCheckPoint, -}; -use codec::Encode; -use frame_support::dispatch::DispatchResult; -use frame_support::{assert_err, assert_ok}; -use justification::*; -use keyring::*; -use mock::{run_test, ChainId, TestRuntime}; -use sp_consensus_grandpa::{ConsensusLog, ScheduledChange, GRANDPA_ENGINE_ID}; -use sp_core::Hasher as HasherT; -use sp_runtime::generic::SignedBlock; -use sp_runtime::traits::{BlakeTwo256, Hash, Header}; -use sp_runtime::{generic, Digest, DigestItem, DispatchError}; - -type TestHeader = generic::Header; - -struct TestFeedChain; - -impl Chain for TestFeedChain { - type BlockNumber = u32; - type Hash = ::Out; - type Header = generic::Header; - type Hasher = BlakeTwo256; -} - -#[test] -fn valid_justification_accepted() { - let authorities = vec![(ALICE, 1), (BOB, 1), (CHARLIE, 1), (DAVE, 1)]; - let params = JustificationGeneratorParams { - header: test_header(1), - round: TEST_GRANDPA_ROUND, - set_id: TEST_GRANDPA_SET_ID, - authorities: authorities.clone(), - ancestors: 7, - forks: 3, - }; - - let justification = make_justification_for_header::(params.clone()); - assert_eq!( - verify_justification::( - header_id::(1), - TEST_GRANDPA_SET_ID, - &voter_set(), - &justification, - ), - Ok(()), - ); - - assert_eq!(justification.commit.precommits.len(), authorities.len()); - assert_eq!( - justification.votes_ancestries.len(), - params.ancestors as usize - ); -} - -#[test] -fn valid_justification_accepted_with_single_fork() { - let params = JustificationGeneratorParams { - header: test_header(1), - round: TEST_GRANDPA_ROUND, - set_id: TEST_GRANDPA_SET_ID, - authorities: vec![(ALICE, 1), (BOB, 1), (CHARLIE, 1), (DAVE, 1), (EVE, 1)], - ancestors: 5, - forks: 1, - }; - - assert_eq!( - verify_justification::( - header_id::(1), - TEST_GRANDPA_SET_ID, - &voter_set(), - &make_justification_for_header::(params) - ), - Ok(()), - ); -} - -#[test] -fn valid_justification_accepted_with_arbitrary_number_of_authorities() { - use finality_grandpa::voter_set::VoterSet; - use sp_consensus_grandpa::AuthorityId; - - let n = 15; - let authorities = accounts(n).iter().map(|k| (*k, 1)).collect::>(); - - let params = JustificationGeneratorParams { - header: test_header(1), - round: TEST_GRANDPA_ROUND, - set_id: TEST_GRANDPA_SET_ID, - authorities: authorities.clone(), - ancestors: n.into(), - forks: n.into(), - }; - - let authorities = authorities - .iter() - .map(|(id, w)| (AuthorityId::from(*id), *w)) - .collect::>(); - let voter_set = VoterSet::new(authorities).unwrap(); - - assert_eq!( - verify_justification::( - header_id::(1), - TEST_GRANDPA_SET_ID, - &voter_set, - &make_justification_for_header::(params) - ), - Ok(()), - ); -} - -#[test] -fn justification_with_invalid_target_rejected() { - assert_eq!( - verify_justification::( - header_id::(2), - TEST_GRANDPA_SET_ID, - &voter_set(), - &make_default_justification::(&test_header(1)), - ), - Err(Error::InvalidJustificationTarget), - ); -} - -#[test] -fn justification_with_invalid_commit_rejected() { - let mut justification = make_default_justification::(&test_header(1)); - justification.commit.precommits.clear(); - - assert_eq!( - verify_justification::( - header_id::(1), - TEST_GRANDPA_SET_ID, - &voter_set(), - &justification, - ), - Err(Error::ExtraHeadersInVotesAncestries), - ); -} - -#[test] -fn justification_with_invalid_authority_signature_rejected() { - let mut justification = make_default_justification::(&test_header(1)); - justification.commit.precommits[0].signature = - sp_core::crypto::UncheckedFrom::unchecked_from([1u8; 64]); - - assert_eq!( - verify_justification::( - header_id::(1), - TEST_GRANDPA_SET_ID, - &voter_set(), - &justification, - ), - Err(Error::InvalidAuthoritySignature), - ); -} - -#[test] -fn justification_with_invalid_precommit_ancestry() { - let mut justification = make_default_justification::(&test_header(1)); - justification.votes_ancestries.push(test_header(10)); - - assert_eq!( - verify_justification::( - header_id::(1), - TEST_GRANDPA_SET_ID, - &voter_set(), - &justification, - ), - Err(Error::ExtraHeadersInVotesAncestries), - ); -} - -#[test] -fn justification_is_invalid_if_we_dont_meet_threshold() { - // Need at least three authorities to sign off or else the voter set threshold can't be reached - let authorities = vec![(ALICE, 1), (BOB, 1)]; - - let params = JustificationGeneratorParams { - header: test_header(1), - round: TEST_GRANDPA_ROUND, - set_id: TEST_GRANDPA_SET_ID, - authorities: authorities.clone(), - ancestors: 2 * authorities.len() as u32, - forks: 2, - }; - - assert_eq!( - verify_justification::( - header_id::(1), - TEST_GRANDPA_SET_ID, - &voter_set(), - &make_justification_for_header::(params) - ), - Err(Error::TooLowCumulativeWeight), - ); -} - -fn valid_digests() -> Vec { - vec![DigestItem::Consensus( - GRANDPA_ENGINE_ID, - ConsensusLog::ScheduledChange::(ScheduledChange { - next_authorities: authority_list(), - delay: 0, - }) - .encode(), - )] -} - -fn init_with_origin(chain_id: ChainId, number: u32) -> Result { - let mut best_finalized = test_header::(number); - valid_digests() - .into_iter() - .for_each(|digest| best_finalized.digest_mut().push(digest)); - let init_data = InitializationData { - best_known_finalized_header: best_finalized.encode(), - set_id: 1, - }; - - initialize::(chain_id, init_data.encode().as_slice())?; - // import block - assert_ok!(submit_finality_proof( - chain_id, - best_finalized.clone(), - Some(make_default_justification(&best_finalized)) - )); - Ok(best_finalized) -} - -fn valid_extrinsics() -> Vec { - vec![(0..255).collect()] -} - -fn invalid_extrinsics() -> Vec { - vec![(128..255).collect()] -} - -fn valid_extrinsics_root() -> H::Hash { - H::Hashing::ordered_trie_root( - valid_extrinsics().iter().map(Encode::encode).collect(), - sp_runtime::StateVersion::V0, - ) -} - -fn submit_valid_finality_proof(chain_id: ChainId, header: u8) -> Result { - let header = test_header::(header.into()); - let justification = make_default_justification(&header); - submit_finality_proof(chain_id, header.clone(), Some(justification))?; - Ok(header) -} - -fn submit_finality_proof( - chain_id: ChainId, - header: TestHeader, - maybe_justification: Option>, -) -> DispatchResult { - let justification = - maybe_justification.map(|justification| (GRANDPA_ENGINE_ID, justification.encode()).into()); - let block = SignedBlock { - block: generic::Block:: { - header, - extrinsics: valid_extrinsics(), - }, - justifications: justification, - }; - - validate_finalized_block::(chain_id, block.encode().as_slice())?; - Ok(()) -} - -#[test] -fn test_init_storage_entries_are_correctly_initialized_with_genesis() { - run_test(|| { - let chain_id: ChainId = 1; - let validation_header = init_with_origin(chain_id, 0).unwrap(); - assert_eq!( - CurrentAuthoritySet::::get(chain_id).authorities, - authority_list() - ); - assert_eq!( - >::get(chain_id), - (0u32.encode(), validation_header.encode()) - ); - assert_eq!( - >::get(chain_id), - (0u32.encode(), validation_header.hash().encode()) - ); - - // since the block 0 is imported already - // the oldest know parent will be 00000.... with so that block 0 is not imported again - assert_eq!( - >::get(chain_id), - (0u32.encode(), [0u8; 32].encode()) - ); - }) -} - -#[test] -fn test_init_storage_entries_are_correctly_initialized() { - run_test(|| { - let chain_id: ChainId = 1; - let validation_header = init_with_origin(chain_id, 10).unwrap(); - assert_eq!( - CurrentAuthoritySet::::get(chain_id).authorities, - authority_list() - ); - assert_eq!( - >::get(chain_id), - (10u32.encode(), validation_header.encode()) - ); - assert_eq!( - >::get(chain_id), - (9u32.encode(), test_header::(9).hash().encode()) - ); - assert_eq!( - >::get(chain_id), - (10u32.encode(), validation_header.hash().encode()) - ); - }) -} - -#[test] -fn successfully_imports_header_in_forward_direction() { - run_test(|| { - let chain_id: ChainId = 1; - let validation_header = init_with_origin(chain_id, 0).expect("must not fail to init chain"); - - // cannot import block 0 twice - assert_err!( - submit_finality_proof( - chain_id, - validation_header.clone(), - Some(make_default_justification(&validation_header)) - ), - ErrorP::::InvalidBlock - ); - - let mut parent_header = validation_header; - for tip in 1..10 { - let mut header = test_header::(tip); - header.set_parent_hash(parent_header.hash()); - assert_ok!(submit_finality_proof( - chain_id, - header.clone(), - Some(make_default_justification(&header)) - )); - assert_eq!( - >::get(chain_id), - (tip.encode(), header.hash().encode()) - ); - parent_header = header; - } - }) -} - -#[test] -fn successfully_imports_parent_headers_in_reverse_and_forward() { - run_test(|| { - let chain_id: ChainId = 1; - let validation_header = init_with_origin(chain_id, 5).expect("must not fail to init chain"); - - for parent in (1..=4).rev() { - assert_ok!(submit_valid_finality_proof(chain_id, parent)); - assert_eq!( - >::get(chain_id), - ( - ((parent - 1) as u32).encode(), - test_header::((parent - 1) as u32) - .hash() - .encode() - ) - ); - assert_eq!( - >::get(chain_id), - (5u32.encode(), validation_header.hash().encode()) - ); - } - - // import block 0 - assert_ok!(submit_valid_finality_proof(chain_id, 0)); - - // cannot import block 0 twice - assert_err!( - submit_valid_finality_proof(chain_id, 0), - ErrorP::::InvalidBlock - ); - - let mut parent_header = validation_header; - for tip in 6..10 { - let mut header = test_header::(tip); - header.set_parent_hash(parent_header.hash()); - assert_ok!(submit_finality_proof( - chain_id, - header.clone(), - Some(make_default_justification(&header)) - )); - assert_eq!( - >::get(chain_id), - (tip.encode(), header.hash().encode()) - ); - parent_header = header; - } - }) -} - -#[test] -fn rejects_justification_that_skips_authority_set_transition() { - run_test(|| { - let chain_id: ChainId = 1; - let validation_header = init_with_origin(chain_id, 0).unwrap(); - - let mut header = test_header::(1); - header.set_parent_hash(validation_header.hash()); - - let params = JustificationGeneratorParams:: { - set_id: 2, - ..Default::default() - }; - let justification = make_justification_for_header(params); - - assert_err!( - submit_finality_proof(chain_id, header, Some(justification)), - >::InvalidJustification - ); - }) -} - -#[test] -fn does_not_import_header_with_invalid_finality_proof() { - run_test(|| { - let chain_id: ChainId = 1; - let validation_header = init_with_origin(chain_id, 0).unwrap(); - - let mut header = test_header::(1); - header.set_parent_hash(validation_header.hash()); - let mut justification = make_default_justification(&header); - justification.round = 42; - - assert_err!( - submit_finality_proof(chain_id, header, Some(justification)), - >::InvalidJustification - ); - }) -} - -#[test] -fn does_not_import_header_with_invalid_extrinsics() { - run_test(|| { - let chain_id: ChainId = 1; - let validation_header = init_with_origin(chain_id, 0).unwrap(); - - let mut header = test_header::(1); - header.set_parent_hash(validation_header.hash()); - let block = SignedBlock { - block: generic::Block:: { - header: header.clone(), - extrinsics: invalid_extrinsics(), - }, - justifications: Some( - ( - GRANDPA_ENGINE_ID, - make_default_justification(&header).encode(), - ) - .into(), - ), - }; - - assert_err!( - validate_finalized_block::( - chain_id, - block.encode().as_slice(), - ), - >::InvalidBlock - ); - }) -} - -#[test] -fn disallows_invalid_authority_set() { - run_test(|| { - let chain_id: ChainId = 1; - let invalid_authority_list = vec![(ALICE.into(), u64::MAX), (BOB.into(), u64::MAX)]; - let mut genesis = test_header::(0); - let mut digest: Digest = Default::default(); - digest.push(DigestItem::Consensus( - GRANDPA_ENGINE_ID, - ConsensusLog::ScheduledChange::(ScheduledChange { - next_authorities: invalid_authority_list, - delay: 0, - }) - .encode(), - )); - genesis.digest = digest; - let init_data = InitializationData { - best_known_finalized_header: genesis.encode(), - set_id: 1, - }; - - assert_ok!(initialize::( - chain_id, - init_data.encode().as_slice() - )); - - let mut header = test_header::(1); - header.set_parent_hash(genesis.hash()); - let justification = make_default_justification(&header); - - assert_err!( - submit_finality_proof(chain_id, header, Some(justification)), - >::InvalidAuthoritySet - ); - }) -} - -fn change_log(delay: u32) -> Digest { - let consensus_log = ConsensusLog::::ScheduledChange(ScheduledChange { - next_authorities: vec![(ALICE.into(), 1), (BOB.into(), 1)], - delay, - }); - - Digest { - logs: vec![DigestItem::Consensus( - GRANDPA_ENGINE_ID, - consensus_log.encode(), - )], - } -} - -#[test] -fn importing_header_enacts_new_authority_set() { - run_test(|| { - let chain_id: ChainId = 1; - let validation_header = init_with_origin(chain_id, 0).unwrap(); - - let next_set_id = 2; - let next_authorities = vec![(ALICE.into(), 1), (BOB.into(), 1)]; - - // Need to update the header digest to indicate that our header signals an authority set - // change. The change will be enacted when we import our header. - let mut header = test_header::(1); - header.set_parent_hash(validation_header.hash()); - header.digest = change_log(0); - - // Create a valid justification for the header - let justification = make_default_justification(&header); - - // Let's import our test header - assert_ok!(submit_finality_proof( - chain_id, - header.clone(), - Some(justification) - )); - - // Make sure that our header is the best finalized - assert_eq!( - >::get(chain_id), - (1u32.encode(), header.hash().encode()) - ); - - // Make sure that the authority set actually changed upon importing our header - assert_eq!( - >::get(chain_id), - AuthoritySet { - authorities: next_authorities, - set_id: next_set_id - }, - ); - }) -} - -#[test] -fn importing_header_rejects_header_with_scheduled_change_delay() { - run_test(|| { - let chain_id: ChainId = 1; - let validation_header = init_with_origin(chain_id, 0).unwrap(); - - // Need to update the header digest to indicate that our header signals an authority set - // change. However, the change doesn't happen until the next block. - let mut header = test_header::(1); - header.set_parent_hash(validation_header.hash()); - header.digest = change_log(1); - - // Create a valid justification for the header - let justification = make_default_justification(&header); - - // Should not be allowed to import this header - assert_err!( - submit_finality_proof(chain_id, header, Some(justification)), - >::UnsupportedScheduledChange - ); - }) -} - -fn forced_change_log(delay: u32) -> Digest { - let consensus_log = ConsensusLog::::ForcedChange( - delay, - ScheduledChange { - next_authorities: vec![(ALICE.into(), 1), (BOB.into(), 1)], - delay, - }, - ); - - Digest { - logs: vec![DigestItem::Consensus( - GRANDPA_ENGINE_ID, - consensus_log.encode(), - )], - } -} - -#[test] -fn importing_header_rejects_header_with_forced_changes() { - run_test(|| { - let chain_id: ChainId = 1; - let validation_header = init_with_origin(chain_id, 0).unwrap(); - - // Need to update the header digest to indicate that it signals a forced authority set - // change. - let mut header = test_header::(1); - header.set_parent_hash(validation_header.hash()); - header.digest = forced_change_log(0); - - // Create a valid justification for the header - let justification = make_default_justification(&header); - - // Should not be allowed to import this header - assert_err!( - submit_finality_proof(chain_id, header, Some(justification)), - >::UnsupportedScheduledChange - ); - }) -} diff --git a/crates/pallet-history-seeding/Cargo.toml b/crates/pallet-history-seeding/Cargo.toml index 86cd70421e..e5dbeab17b 100644 --- a/crates/pallet-history-seeding/Cargo.toml +++ b/crates/pallet-history-seeding/Cargo.toml @@ -15,17 +15,17 @@ include = [ [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [dev-dependencies] -pallet-sudo = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", features = ["std"] } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-io = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-sudo = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", features = ["std"] } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-io = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/crates/pallet-history-seeding/src/lib.rs b/crates/pallet-history-seeding/src/lib.rs index c265500193..5760d460a6 100644 --- a/crates/pallet-history-seeding/src/lib.rs +++ b/crates/pallet-history-seeding/src/lib.rs @@ -25,12 +25,6 @@ pub mod pallet { #[pallet::pallet] pub struct Pallet(_); - #[pallet::error] - pub enum Error { - /// The sender is not authorized to seed history - NotAuthorized, - } - #[pallet::storage] #[pallet::getter(fn history_seeder)] pub(super) type HistorySeeder = StorageValue<_, T::AccountId, OptionQuery>; @@ -40,14 +34,7 @@ pub mod pallet { /// Seed history with a remark #[pallet::call_index(0)] #[pallet::weight((T::WeightInfo::seed_history(remark.len() as u32), Pays::No))] - pub fn seed_history(origin: OriginFor, remark: Vec) -> DispatchResult { - let who = ensure_signed(origin.clone())?; - - ensure!( - Some(who.clone()) == Self::history_seeder(), - Error::::NotAuthorized - ); - + pub fn seed_history(_origin: OriginFor, remark: Vec) -> DispatchResult { let _ = remark; Ok(()) diff --git a/crates/pallet-history-seeding/src/tests.rs b/crates/pallet-history-seeding/src/tests.rs index e32a082b56..32f82a2111 100644 --- a/crates/pallet-history-seeding/src/tests.rs +++ b/crates/pallet-history-seeding/src/tests.rs @@ -1,4 +1,4 @@ -use crate::{self as pallet_history_seeding, Error}; +use crate::{self as pallet_history_seeding}; use frame_support::traits::BuildGenesisConfig; use frame_support::{assert_noop, assert_ok, construct_runtime, derive_impl}; use frame_system as system; @@ -68,26 +68,5 @@ fn seed_history_works() { RuntimeOrigin::signed(1), remark.clone() )); - - // Ensure unauthorized account cannot seed history - assert_noop!( - HistorySeeding::seed_history(RuntimeOrigin::signed(2), remark), - Error::::NotAuthorized - ); - }); -} - -#[test] -fn seed_history_fails_when_no_seeder_set() { - new_test_ext().execute_with(|| { - let remark = vec![1, 2, 3]; - assert_noop!( - HistorySeeding::seed_history(RuntimeOrigin::signed(1), remark.clone()), - Error::::NotAuthorized - ); - assert_noop!( - HistorySeeding::seed_history(RuntimeOrigin::root(), remark), - sp_runtime::DispatchError::BadOrigin - ); }); } diff --git a/crates/pallet-object-store/Cargo.toml b/crates/pallet-object-store/Cargo.toml deleted file mode 100644 index 6d9476f8eb..0000000000 --- a/crates/pallet-object-store/Cargo.toml +++ /dev/null @@ -1,40 +0,0 @@ -[package] -name = "pallet-object-store" -version = "0.1.0" -authors = ["Nazar Mokrynskyi "] -edition = "2021" -license = "Apache-2.0" -homepage = "https://subspace.network" -repository = "https://github.com/autonomys/subspace" -description = "Subspace node pallet for simple objects storage" -readme = "README.md" - -[package.metadata.docs.rs] -targets = ["x86_64-unknown-linux-gnu"] - -[dependencies] -codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -hex = { version = "0.4.3", default-features = false, features = ["alloc"] } -log = { version = "0.4.22", default-features = false } -scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -subspace-core-primitives = { version = "0.1.0", default-features = false, path = "../subspace-core-primitives" } - -[dev-dependencies] -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } - -[features] -default = ["std"] -std = [ - "codec/std", - "frame-support/std", - "frame-system/std", - "hex/std", - "log/std", - "scale-info/std", - "subspace-core-primitives/std", -] -try-runtime = ["frame-support/try-runtime"] diff --git a/crates/pallet-object-store/README.md b/crates/pallet-object-store/README.md deleted file mode 100644 index 0304d824de..0000000000 --- a/crates/pallet-object-store/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Pallet Object Store - -Subspace node pallet for simple objects storage - -License: Apache-2.0 diff --git a/crates/pallet-object-store/src/lib.rs b/crates/pallet-object-store/src/lib.rs deleted file mode 100644 index d6eec38eab..0000000000 --- a/crates/pallet-object-store/src/lib.rs +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (C) 2021 Subspace Labs, Inc. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! Pallet object store, used for simple object storage on the network. - -#![cfg_attr(not(feature = "std"), no_std)] -#![forbid(unsafe_code)] -#![warn(rust_2018_idioms, missing_debug_implementations)] - -#[cfg(all(feature = "std", test))] -mod mock; -#[cfg(all(feature = "std", test))] -mod tests; - -pub use pallet::*; -use subspace_core_primitives::{crypto, Blake3Hash}; - -#[frame_support::pallet] -mod pallet { - use frame_support::pallet_prelude::*; - use frame_system::pallet_prelude::*; - use log::debug; - use subspace_core_primitives::{crypto, Blake3Hash}; - - #[pallet::config] - pub trait Config: frame_system::Config { - /// `pallet-object-store` events - type RuntimeEvent: From> + IsType<::RuntimeEvent>; - } - - /// Pallet object-store, used for storing arbitrary user-provided data combined into object-store. - #[pallet::pallet] - pub struct Pallet(_); - - /// `pallet-object-store` events - #[pallet::event] - #[pallet::generate_deposit(pub (super) fn deposit_event)] - pub enum Event { - /// New object was added. - ObjectSubmitted { - who: T::AccountId, - object_id: Blake3Hash, - object_size: u32, - }, - } - - #[pallet::call] - impl Pallet { - // TODO: add proper weights - // TODO: For now we don't have fees, but we will have them in the future - /// Put a new object into a feed - #[pallet::call_index(0)] - #[pallet::weight((10_000, Pays::No))] - pub fn put(origin: OriginFor, object: Vec) -> DispatchResult { - let who = ensure_signed(origin)?; - - let object_size = object.len() as u32; - - let object_id = crypto::blake3_hash(&object); - - debug!( - target: "runtime:object-store", - "New object {}, size {} bytes", - hex::encode(object_id), - object_size - ); - - Self::deposit_event(Event::ObjectSubmitted { - who, - object_id, - object_size, - }); - - Ok(()) - } - } -} - -/// Mapping to the object offset and size within an extrinsic -#[derive(Debug)] -pub struct CallObject { - /// Object hash - pub hash: Blake3Hash, - /// Offset of object in the encoded call. - pub offset: u32, -} - -impl Call { - /// Extract object location if an extrinsic corresponds to `put` call - pub fn extract_call_object(&self) -> Option { - match self { - Self::put { object } => { - // `1` corresponds to `Call::put {}` enum variant encoding. - Some(CallObject { - hash: crypto::blake3_hash(object), - offset: 1, - }) - } - _ => None, - } - } -} diff --git a/crates/pallet-object-store/src/mock.rs b/crates/pallet-object-store/src/mock.rs deleted file mode 100644 index a55ab71851..0000000000 --- a/crates/pallet-object-store/src/mock.rs +++ /dev/null @@ -1,32 +0,0 @@ -use frame_support::derive_impl; -use sp_runtime::BuildStorage; - -type Block = frame_system::mocking::MockBlock; - -frame_support::construct_runtime!( - pub struct Test { - System: frame_system, - ObjectStore: crate, - } -); - -#[derive_impl(frame_system::config_preludes::TestDefaultConfig)] -impl frame_system::Config for Test { - type Block = Block; -} - -impl crate::Config for Test { - type RuntimeEvent = RuntimeEvent; -} - -pub fn new_test_ext() -> sp_io::TestExternalities { - let t = frame_system::GenesisConfig::::default() - .build_storage() - .unwrap(); - - let mut t: sp_io::TestExternalities = t.into(); - - t.execute_with(|| System::set_block_number(1)); - - t -} diff --git a/crates/pallet-object-store/src/tests.rs b/crates/pallet-object-store/src/tests.rs deleted file mode 100644 index 9a1a7c7e65..0000000000 --- a/crates/pallet-object-store/src/tests.rs +++ /dev/null @@ -1,24 +0,0 @@ -use crate::mock::{new_test_ext, ObjectStore, RuntimeEvent, RuntimeOrigin, System, Test}; -use frame_support::assert_ok; -use subspace_core_primitives::crypto; - -const ACCOUNT_ID: u64 = 100; - -#[test] -fn can_do_put() { - new_test_ext().execute_with(|| { - let object = vec![1, 2, 3, 4, 5]; - let object_id = crypto::blake3_hash(&object); - let object_size = object.len() as u32; - - assert_ok!(ObjectStore::put(RuntimeOrigin::signed(ACCOUNT_ID), object)); - - System::assert_last_event(RuntimeEvent::ObjectStore( - crate::Event::::ObjectSubmitted { - who: ACCOUNT_ID, - object_id, - object_size, - }, - )); - }); -} diff --git a/crates/pallet-offences-subspace/Cargo.toml b/crates/pallet-offences-subspace/Cargo.toml deleted file mode 100644 index 06db1f72c9..0000000000 --- a/crates/pallet-offences-subspace/Cargo.toml +++ /dev/null @@ -1,40 +0,0 @@ -[package] -name = "pallet-offences-subspace" -version = "0.1.0" -authors = ["Parity Technologies ", "Subspace Labs "] -edition = "2021" -license = "Apache-2.0" -homepage = "https://subspace.network" -repository = "https://github.com/autonomys/subspace" -description = "offences-subspace pallet" -readme = "README.md" - -[package.metadata.docs.rs] -targets = ["x86_64-unknown-linux-gnu"] - -[dependencies] -codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-consensus-subspace = { version = "0.1.0", default-features = false, path = "../sp-consensus-subspace" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } - -[dev-dependencies] -sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -schnorrkel = "0.11.4" - -[features] -default = ["std"] -std = [ - "codec/std", - "frame-support/std", - "frame-system/std", - "scale-info/std", - "sp-consensus-subspace/std", - "sp-runtime/std", - "sp-std/std", -] -try-runtime = ["frame-support/try-runtime"] diff --git a/crates/pallet-offences-subspace/README.md b/crates/pallet-offences-subspace/README.md deleted file mode 100644 index 9c3f93b824..0000000000 --- a/crates/pallet-offences-subspace/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Offences Module (Subspace variant) - -Tracks reported offences - -License: Apache-2.0 diff --git a/crates/pallet-offences-subspace/src/lib.rs b/crates/pallet-offences-subspace/src/lib.rs deleted file mode 100644 index a4eab6d98c..0000000000 --- a/crates/pallet-offences-subspace/src/lib.rs +++ /dev/null @@ -1,255 +0,0 @@ -// Copyright (C) 2019-2021 Parity Technologies (UK) Ltd. -// Copyright (C) 2021 Subspace Labs, Inc. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! # Offences Subspace Pallet -//! -//! Tracks reported offences - -// Ensure we're `no_std` when compiling for Wasm. -#![cfg_attr(not(feature = "std"), no_std)] - -mod mock; -mod tests; - -use codec::{Decode, Encode}; -pub use pallet::*; -use sp_consensus_subspace::offence::{ - Offence, OffenceDetails, OffenceError, OnOffenceHandler, ReportOffence, -}; -use sp_consensus_subspace::FarmerPublicKey; -use sp_runtime::traits::Hash; -use sp_std::prelude::*; - -/// A binary blob which represents a SCALE codec-encoded `O::TimeSlot`. -type OpaqueTimeSlot = Vec; - -/// A type alias for a report identifier. -type ReportIdOf = ::Hash; - -#[frame_support::pallet] -mod pallet { - use super::{OpaqueTimeSlot, ReportIdOf}; - use frame_support::pallet_prelude::*; - use sp_consensus_subspace::offence::{Kind, OffenceDetails, OnOffenceHandler}; - use sp_consensus_subspace::FarmerPublicKey; - use sp_std::prelude::*; - - #[pallet::pallet] - #[pallet::without_storage_info] - pub struct Pallet(_); - - /// The pallet's config trait. - #[pallet::config] - pub trait Config: frame_system::Config { - /// The overarching event type. - type RuntimeEvent: From + IsType<::RuntimeEvent>; - /// A handler called for every offence report. - type OnOffenceHandler: OnOffenceHandler; - } - - /// The primary structure that holds all offence records keyed by report identifiers. - #[pallet::storage] - #[pallet::getter(fn reports)] - pub type Reports = - StorageMap<_, Twox64Concat, ReportIdOf, OffenceDetails>; - - /// A vector of reports of the same kind that happened at the same time slot. - #[pallet::storage] - pub type ConcurrentReportsIndex = StorageDoubleMap< - _, - Twox64Concat, - Kind, - Twox64Concat, - OpaqueTimeSlot, - Vec>, - ValueQuery, - >; - - /// Enumerates all reports of a kind along with the time they happened. - /// - /// All reports are sorted by the time of offence. - /// - /// Note that the actual type of this mapping is `Vec`, this is because values of - /// different types are not supported at the moment so we are doing the manual serialization. - #[pallet::storage] - pub type ReportsByKindIndex = StorageMap< - _, - Twox64Concat, - Kind, - Vec, // (O::TimeSlot, ReportIdOf) - ValueQuery, - >; - - /// Events type. - #[pallet::event] - #[pallet::generate_deposit(pub(super) fn deposit_event)] - pub enum Event { - /// There is an offence reported of the given `kind` happened at the `session_index` and - /// (kind-specific) time slot. This event is not deposited for duplicate slashes. - /// \[kind, timeslot\]. - Offence { - kind: Kind, - timeslot: OpaqueTimeSlot, - }, - } -} - -impl> ReportOffence for Pallet { - fn report_offence(offence: O) -> Result<(), OffenceError> { - let offenders = offence.offenders(); - let time_slot = offence.time_slot(); - - // Go through all offenders in the offence report and find all offenders that were spotted - // in unique reports. - let TriageOutcome { - concurrent_offenders, - } = match Self::triage_offence_report::(&time_slot, offenders) { - Some(triage) => triage, - // The report contained only duplicates, so there is no need to slash again. - None => return Err(OffenceError::DuplicateReport), - }; - - T::OnOffenceHandler::on_offence(&concurrent_offenders); - - // Deposit the event. - Self::deposit_event(Event::Offence { - kind: O::ID, - timeslot: time_slot.encode(), - }); - - Ok(()) - } - - fn is_known_offence(offenders: &[FarmerPublicKey], time_slot: &O::TimeSlot) -> bool { - let any_unknown = offenders.iter().any(|offender| { - let report_id = Self::report_id::(time_slot, offender); - !>::contains_key(report_id) - }); - - !any_unknown - } -} - -impl Pallet { - /// Compute the ID for the given report properties. - /// - /// The report id depends on the offence kind, time slot and the id of offender. - fn report_id>( - time_slot: &O::TimeSlot, - offender: &FarmerPublicKey, - ) -> ReportIdOf { - (O::ID, time_slot.encode(), offender).using_encoded(T::Hashing::hash) - } - - /// Triages the offence report and returns the set of offenders that was involved in unique - /// reports along with the list of the concurrent offences. - fn triage_offence_report>( - time_slot: &O::TimeSlot, - offenders: Vec, - ) -> Option { - let mut storage = ReportIndexStorage::::load(time_slot); - - let mut any_new = false; - for offender in offenders { - let report_id = Self::report_id::(time_slot, &offender); - - if !>::contains_key(report_id) { - any_new = true; - >::insert(report_id, OffenceDetails { offender }); - - storage.insert(time_slot, report_id); - } - } - - if any_new { - // Load report details for the all reports happened at the same time. - let concurrent_offenders = storage - .concurrent_reports - .iter() - .filter_map(>::get) - .collect::>(); - - storage.save(); - - Some(TriageOutcome { - concurrent_offenders, - }) - } else { - None - } - } -} - -struct TriageOutcome { - /// Other reports for the same report kinds. - concurrent_offenders: Vec>, -} - -/// An auxiliary struct for working with storage of indexes localized for a specific offence -/// kind (specified by the `O` type parameter). -/// -/// This struct is responsible for aggregating storage writes and the underlying storage should not -/// accessed directly meanwhile. -#[must_use = "The changes are not saved without called `save`"] -struct ReportIndexStorage> { - opaque_time_slot: OpaqueTimeSlot, - concurrent_reports: Vec>, - same_kind_reports: Vec<(O::TimeSlot, ReportIdOf)>, -} - -impl> ReportIndexStorage { - /// Preload indexes from the storage for the specific `time_slot` and the kind of the offence. - fn load(time_slot: &O::TimeSlot) -> Self { - let opaque_time_slot = time_slot.encode(); - - let same_kind_reports = ReportsByKindIndex::::get(O::ID); - let same_kind_reports = - Vec::<(O::TimeSlot, ReportIdOf)>::decode(&mut &same_kind_reports[..]) - .unwrap_or_default(); - - let concurrent_reports = >::get(O::ID, &opaque_time_slot); - - Self { - opaque_time_slot, - concurrent_reports, - same_kind_reports, - } - } - - /// Insert a new report to the index. - fn insert(&mut self, time_slot: &O::TimeSlot, report_id: ReportIdOf) { - // Insert the report id into the list while maintaining the ordering by the time - // slot. - let pos = self - .same_kind_reports - .partition_point(|(when, _)| when <= time_slot); - self.same_kind_reports - .insert(pos, (time_slot.clone(), report_id)); - - // Update the list of concurrent reports. - self.concurrent_reports.push(report_id); - } - - /// Dump the indexes to the storage. - fn save(self) { - ReportsByKindIndex::::insert(O::ID, self.same_kind_reports.encode()); - >::insert( - O::ID, - &self.opaque_time_slot, - &self.concurrent_reports, - ); - } -} diff --git a/crates/pallet-offences-subspace/src/mock.rs b/crates/pallet-offences-subspace/src/mock.rs deleted file mode 100644 index 6700c4f098..0000000000 --- a/crates/pallet-offences-subspace/src/mock.rs +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright (C) 2018-2021 Parity Technologies (UK) Ltd. -// Copyright (C) 2021 Subspace Labs, Inc. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! Test utilities - -#![cfg(test)] - -use crate as pallet_offences_subspace; -use crate::Config; -use codec::Encode; -use frame_support::derive_impl; -use frame_support::weights::constants::ParityDbWeight; -use frame_support::weights::Weight; -use sp_consensus_subspace::offence::{self, Kind, OffenceDetails}; -use sp_consensus_subspace::FarmerPublicKey; -use sp_core::H256; -use sp_runtime::{BuildStorage, Perbill}; -use std::cell::RefCell; - -pub struct OnOffenceHandler; - -thread_local! { - pub static ON_OFFENCE_PERBILL: RefCell> = RefCell::new(Default::default()); - pub static OFFENCE_WEIGHT: RefCell = RefCell::new(Default::default()); -} - -impl offence::OnOffenceHandler for OnOffenceHandler { - fn on_offence(_offenders: &[OffenceDetails]) { - ON_OFFENCE_PERBILL.with(|f| { - *f.borrow_mut() = vec![Perbill::from_percent(25)]; - }); - } -} - -pub fn with_on_offence_fractions) -> R>(f: F) -> R { - ON_OFFENCE_PERBILL.with(|fractions| f(fractions.borrow_mut().as_mut())) -} - -type Block = frame_system::mocking::MockBlock; - -frame_support::construct_runtime!( - pub struct Runtime { - System: frame_system, - OffencesSubspace: pallet_offences_subspace, - } -); - -#[derive_impl(frame_system::config_preludes::TestDefaultConfig)] -impl frame_system::Config for Runtime { - type Block = Block; - type DbWeight = ParityDbWeight; -} - -impl Config for Runtime { - type RuntimeEvent = RuntimeEvent; - type OnOffenceHandler = OnOffenceHandler; -} - -pub fn new_test_ext() -> sp_io::TestExternalities { - let t = frame_system::GenesisConfig::::default() - .build_storage() - .unwrap(); - let mut ext = sp_io::TestExternalities::new(t); - ext.execute_with(|| System::set_block_number(1)); - ext -} - -pub const KIND: [u8; 16] = *b"test_report_1234"; - -/// Returns all offence details for the specific `kind` happened at the specific time slot. -pub fn offence_reports(kind: Kind, time_slot: u128) -> Vec> { - >::get(kind, time_slot.encode()) - .into_iter() - .map(|report_id| { - >::get(report_id) - .expect("dangling report id is found in ConcurrentReportsIndex") - }) - .collect() -} - -#[derive(Clone)] -pub struct Offence { - pub offenders: Vec, - pub time_slot: u128, -} - -impl offence::Offence for Offence { - const ID: offence::Kind = KIND; - type TimeSlot = u128; - - fn offenders(&self) -> Vec { - self.offenders.clone() - } - - fn time_slot(&self) -> u128 { - self.time_slot - } -} - -/// Create the report id for the given `offender` and `time_slot` combination. -pub fn report_id(time_slot: u128, offender: FarmerPublicKey) -> H256 { - OffencesSubspace::report_id::>(&time_slot, &offender) -} diff --git a/crates/pallet-offences-subspace/src/tests.rs b/crates/pallet-offences-subspace/src/tests.rs deleted file mode 100644 index 34c3d3ee6b..0000000000 --- a/crates/pallet-offences-subspace/src/tests.rs +++ /dev/null @@ -1,364 +0,0 @@ -// Copyright (C) 2017-2021 Parity Technologies (UK) Ltd. -// Copyright (C) 2021 Subspace Labs, Inc. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! Tests for the offences module. - -#![cfg(test)] - -use crate::mock::{ - new_test_ext, offence_reports, report_id, with_on_offence_fractions, Offence, OffencesSubspace, - RuntimeEvent, System, KIND, -}; -use codec::{Decode, Encode}; -use frame_system::{EventRecord, Phase}; -use schnorrkel::Keypair; -use sp_consensus_subspace::offence::{OffenceDetails, OffenceError, ReportOffence}; -use sp_consensus_subspace::FarmerPublicKey; -use sp_core::crypto::UncheckedFrom; -use sp_runtime::Perbill; - -fn generate_farmer_public_key() -> FarmerPublicKey { - let keypair = Keypair::generate(); - FarmerPublicKey::unchecked_from(keypair.public.to_bytes()) -} - -#[test] -fn should_report_an_farmer_and_trigger_on_offence() { - new_test_ext().execute_with(|| { - // given - let time_slot = 42; - assert_eq!(offence_reports(KIND, time_slot), vec![]); - - let offence = Offence { - time_slot, - offenders: vec![generate_farmer_public_key()], - }; - - // when - OffencesSubspace::report_offence(offence).unwrap(); - - // then - with_on_offence_fractions(|f| { - assert_eq!(f.clone(), vec![Perbill::from_percent(25)]); - }); - }); -} - -#[test] -fn should_not_report_the_same_farmer_twice_in_the_same_slot() { - new_test_ext().execute_with(|| { - // given - let time_slot = 42; - assert_eq!(offence_reports(KIND, time_slot), vec![]); - - let offence = Offence { - time_slot, - offenders: vec![generate_farmer_public_key()], - }; - OffencesSubspace::report_offence(offence.clone()).unwrap(); - with_on_offence_fractions(|f| { - assert_eq!(f.clone(), vec![Perbill::from_percent(25)]); - f.clear(); - }); - - // when - // report for the second time - assert_eq!( - OffencesSubspace::report_offence(offence), - Err(OffenceError::DuplicateReport) - ); - - // then - with_on_offence_fractions(|f| { - assert_eq!(f.clone(), vec![]); - }); - }); -} - -#[test] -fn should_report_in_different_time_slot() { - new_test_ext().execute_with(|| { - // given - let time_slot = 42; - assert_eq!(offence_reports(KIND, time_slot), vec![]); - - let mut offence = Offence { - time_slot, - offenders: vec![generate_farmer_public_key()], - }; - OffencesSubspace::report_offence(offence.clone()).unwrap(); - with_on_offence_fractions(|f| { - assert_eq!(f.clone(), vec![Perbill::from_percent(25)]); - f.clear(); - }); - - // when - // report for the second time - offence.time_slot += 1; - OffencesSubspace::report_offence(offence).unwrap(); - - // then - with_on_offence_fractions(|f| { - assert_eq!(f.clone(), vec![Perbill::from_percent(25)]); - }); - }); -} - -#[test] -fn should_deposit_event() { - new_test_ext().execute_with(|| { - // given - let time_slot = 42; - assert_eq!(offence_reports(KIND, time_slot), vec![]); - - let offence = Offence { - time_slot, - offenders: vec![generate_farmer_public_key()], - }; - - // when - OffencesSubspace::report_offence(offence).unwrap(); - - // then - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: RuntimeEvent::OffencesSubspace(crate::Event::Offence { - kind: KIND, - timeslot: time_slot.encode() - }), - topics: vec![], - }] - ); - }); -} - -#[test] -fn doesnt_deposit_event_for_dups() { - new_test_ext().execute_with(|| { - // given - let time_slot = 42; - assert_eq!(offence_reports(KIND, time_slot), vec![]); - - let offence = Offence { - time_slot, - offenders: vec![generate_farmer_public_key()], - }; - OffencesSubspace::report_offence(offence.clone()).unwrap(); - with_on_offence_fractions(|f| { - assert_eq!(f.clone(), vec![Perbill::from_percent(25)]); - f.clear(); - }); - - // when - // report for the second time - assert_eq!( - OffencesSubspace::report_offence(offence), - Err(OffenceError::DuplicateReport) - ); - - // then - // there is only one event. - assert_eq!( - System::events(), - vec![EventRecord { - phase: Phase::Initialization, - event: RuntimeEvent::OffencesSubspace(crate::Event::Offence { - kind: KIND, - timeslot: time_slot.encode() - }), - topics: vec![], - }] - ); - }); -} - -#[test] -fn reports_if_an_offence_is_dup() { - type TestOffence = Offence; - - new_test_ext().execute_with(|| { - let time_slot = 42; - assert_eq!(offence_reports(KIND, time_slot), vec![]); - - let farmer_0 = generate_farmer_public_key(); - let farmer_1 = generate_farmer_public_key(); - - let offence = |time_slot, offenders| TestOffence { - time_slot, - offenders, - }; - - let mut test_offence = offence(time_slot, vec![farmer_0.clone()]); - - // the report for farmer 0 at time slot 42 should not be a known - // offence - assert!( - !>::is_known_offence( - &test_offence.offenders, - &test_offence.time_slot - ) - ); - - // we report an offence for farmer 0 at time slot 42 - OffencesSubspace::report_offence(test_offence.clone()).unwrap(); - - // the same report should be a known offence now - assert!( - >::is_known_offence( - &test_offence.offenders, - &test_offence.time_slot - ) - ); - - // and reporting it again should yield a duplicate report error - assert_eq!( - OffencesSubspace::report_offence(test_offence.clone()), - Err(OffenceError::DuplicateReport) - ); - - // after adding a new offender to the offence report - test_offence.offenders.push(farmer_1.clone()); - - // it should not be a known offence anymore - assert!( - !>::is_known_offence( - &test_offence.offenders, - &test_offence.time_slot - ) - ); - - // and reporting it again should work without any error - assert_eq!( - OffencesSubspace::report_offence(test_offence.clone()), - Ok(()) - ); - - // creating a new offence for the same farmers on the next slot - // should be considered a new offence and therefore not known - let test_offence_next_slot = offence(time_slot + 1, vec![farmer_0, farmer_1]); - assert!( - !>::is_known_offence( - &test_offence_next_slot.offenders, - &test_offence_next_slot.time_slot - ) - ); - }); -} - -#[test] -fn should_properly_count_offences() { - // We report two different farmers for the same issue. Ultimately, the 1st farmer - // should have `count` equal 2 and the count of the 2nd one should be equal to 1. - new_test_ext().execute_with(|| { - // given - let time_slot = 42; - assert_eq!(offence_reports(KIND, time_slot), vec![]); - - let farmer_1 = generate_farmer_public_key(); - let farmer_2 = generate_farmer_public_key(); - - let offence1 = Offence { - time_slot, - offenders: vec![farmer_1.clone()], - }; - let offence2 = Offence { - time_slot, - offenders: vec![farmer_2.clone()], - }; - OffencesSubspace::report_offence(offence1).unwrap(); - with_on_offence_fractions(|f| { - assert_eq!(f.clone(), vec![Perbill::from_percent(25)]); - f.clear(); - }); - - // when - // report for the second time - OffencesSubspace::report_offence(offence2).unwrap(); - - // then - // the 1st farmer should have count 2 and the 2nd one should be reported only once. - assert_eq!( - offence_reports(KIND, time_slot), - vec![ - OffenceDetails { offender: farmer_1 }, - OffenceDetails { offender: farmer_2 }, - ] - ); - }); -} - -/// We insert offences in sorted order using the time slot in the `same_kind_reports`. -/// This test ensures that it works as expected. -#[test] -fn should_properly_sort_offences() { - new_test_ext().execute_with(|| { - // given - let time_slot = 42; - assert_eq!(offence_reports(KIND, time_slot), vec![]); - - let farmer_5 = generate_farmer_public_key(); - let farmer_4 = generate_farmer_public_key(); - let farmer_6 = generate_farmer_public_key(); - let farmer_7 = generate_farmer_public_key(); - let farmer_3 = generate_farmer_public_key(); - - let offence1 = Offence { - time_slot, - offenders: vec![farmer_5.clone()], - }; - let offence2 = Offence { - time_slot, - offenders: vec![farmer_4.clone()], - }; - let offence3 = Offence { - time_slot: time_slot + 1, - offenders: vec![farmer_6.clone(), farmer_7.clone()], - }; - let offence4 = Offence { - time_slot: time_slot - 1, - offenders: vec![farmer_3.clone()], - }; - OffencesSubspace::report_offence(offence1).unwrap(); - with_on_offence_fractions(|f| { - assert_eq!(f.clone(), vec![Perbill::from_percent(25)]); - f.clear(); - }); - - // when - // report for the second time - OffencesSubspace::report_offence(offence2).unwrap(); - OffencesSubspace::report_offence(offence3).unwrap(); - OffencesSubspace::report_offence(offence4).unwrap(); - - // then - let same_kind_reports = Vec::<(u128, sp_core::H256)>::decode( - &mut &crate::ReportsByKindIndex::::get(KIND)[..], - ) - .unwrap(); - assert_eq!( - same_kind_reports, - vec![ - (time_slot - 1, report_id(time_slot - 1, farmer_3)), - (time_slot, report_id(time_slot, farmer_5)), - (time_slot, report_id(time_slot, farmer_4)), - (time_slot + 1, report_id(time_slot + 1, farmer_6)), - (time_slot + 1, report_id(time_slot + 1, farmer_7)), - ] - ); - }); -} diff --git a/crates/pallet-rewards/Cargo.toml b/crates/pallet-rewards/Cargo.toml index c6c4824e4e..4f80389d04 100644 --- a/crates/pallet-rewards/Cargo.toml +++ b/crates/pallet-rewards/Cargo.toml @@ -19,19 +19,19 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } log = { version = "0.4.22", default-features = false } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -serde = { version = "1.0.206", default-features = false, features = ["alloc", "derive"] } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +serde = { version = "1.0.110", default-features = false, features = ["alloc", "derive"] } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-runtime-primitives = { version = "0.1.0", default-features = false, path = "../subspace-runtime-primitives" } [dev-dependencies] -pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/crates/pallet-rewards/src/mock.rs b/crates/pallet-rewards/src/mock.rs index 4378a47dbb..dcb7711dd8 100644 --- a/crates/pallet-rewards/src/mock.rs +++ b/crates/pallet-rewards/src/mock.rs @@ -1,5 +1,3 @@ -#![allow(missing_debug_implementations)] - use frame_support::derive_impl; use frame_support::traits::{ConstU128, ConstU32}; use sp_runtime::traits::parameter_types; diff --git a/crates/pallet-runtime-configs/Cargo.toml b/crates/pallet-runtime-configs/Cargo.toml index 2dd7b1d2f3..a8d61c7bac 100644 --- a/crates/pallet-runtime-configs/Cargo.toml +++ b/crates/pallet-runtime-configs/Cargo.toml @@ -17,13 +17,13 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } subspace-runtime-primitives = { version = "0.1.0", default-features = false, path = "../subspace-runtime-primitives" } [features] diff --git a/crates/pallet-runtime-configs/src/benchmarking.rs b/crates/pallet-runtime-configs/src/benchmarking.rs index 14773bbe5d..43741644ab 100644 --- a/crates/pallet-runtime-configs/src/benchmarking.rs +++ b/crates/pallet-runtime-configs/src/benchmarking.rs @@ -30,12 +30,4 @@ mod benchmarks { assert!(Pallet::::enable_balance_transfers()); } - - #[benchmark] - fn set_enable_non_root_calls() { - #[extrinsic_call] - _(RawOrigin::Root, true); - - assert!(Pallet::::enable_non_root_calls()); - } } diff --git a/crates/pallet-runtime-configs/src/lib.rs b/crates/pallet-runtime-configs/src/lib.rs index 515c640f3d..175f396597 100644 --- a/crates/pallet-runtime-configs/src/lib.rs +++ b/crates/pallet-runtime-configs/src/lib.rs @@ -49,13 +49,6 @@ mod pallet { #[pallet::getter(fn enable_balance_transfers)] pub type EnableBalanceTransfers = StorageValue<_, bool, ValueQuery>; - /// Whether to enable calls from non-root account. - // TODO: Find a way to work around `Sudo::key()` - // (https://github.com/paritytech/polkadot-sdk/pull/3370) or remove this feature - #[pallet::storage] - #[pallet::getter(fn enable_non_root_calls)] - pub type EnableNonRootCalls = StorageValue<_, bool, ValueQuery>; - #[pallet::storage] pub type ConfirmationDepthK = StorageValue<_, BlockNumberFor, ValueQuery>; @@ -77,8 +70,6 @@ mod pallet { pub enable_dynamic_cost_of_storage: bool, /// Whether to enable balance transfers pub enable_balance_transfers: bool, - /// Whether to enable calls from non-root account - pub enable_non_root_calls: bool, /// Confirmation depth k to use in the archiving process pub confirmation_depth_k: BlockNumberFor, /// Council and democracy config params. @@ -92,7 +83,6 @@ mod pallet { enable_domains: false, enable_dynamic_cost_of_storage: false, enable_balance_transfers: false, - enable_non_root_calls: false, confirmation_depth_k: BlockNumberFor::::from(100u32), council_democracy_config_params: CouncilDemocracyConfigParams::>::default(), @@ -107,7 +97,6 @@ mod pallet { enable_domains, enable_dynamic_cost_of_storage, enable_balance_transfers, - enable_non_root_calls, confirmation_depth_k, council_democracy_config_params, } = self; @@ -120,7 +109,6 @@ mod pallet { >::put(enable_domains); >::put(enable_dynamic_cost_of_storage); >::put(enable_balance_transfers); - >::put(enable_non_root_calls); >::put(confirmation_depth_k); CouncilDemocracyConfig::::put(council_democracy_config_params); } @@ -166,19 +154,5 @@ mod pallet { Ok(()) } - - /// Enable or disable calls from non-root users. - #[pallet::call_index(3)] - #[pallet::weight(< T as Config >::WeightInfo::set_enable_non_root_calls())] - pub fn set_enable_non_root_calls( - origin: OriginFor, - enable_non_root_calls: bool, - ) -> DispatchResult { - ensure_root(origin)?; - - EnableNonRootCalls::::put(enable_non_root_calls); - - Ok(()) - } } } diff --git a/crates/pallet-runtime-configs/src/weights.rs b/crates/pallet-runtime-configs/src/weights.rs index bd02547fd5..326777e916 100644 --- a/crates/pallet-runtime-configs/src/weights.rs +++ b/crates/pallet-runtime-configs/src/weights.rs @@ -34,7 +34,6 @@ pub trait WeightInfo { fn set_enable_domains() -> Weight; fn set_enable_dynamic_cost_of_storage() -> Weight; fn set_enable_balance_transfers() -> Weight; - fn set_enable_non_root_calls() -> Weight; } /// Weights for pallet_runtime_configs using the Substrate node and recommended hardware. @@ -70,16 +69,6 @@ impl WeightInfo for SubstrateWeight { Weight::from_parts(3_216_000, 0) .saturating_add(T::DbWeight::get().writes(1_u64)) } - /// Storage: `RuntimeConfigs::EnableNonRootCalls` (r:0 w:1) - /// Proof: `RuntimeConfigs::EnableNonRootCalls` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) - fn set_enable_non_root_calls() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 3_095_000 picoseconds. - Weight::from_parts(3_249_000, 0) - .saturating_add(T::DbWeight::get().writes(1_u64)) - } } // For backwards compatibility and tests @@ -114,14 +103,4 @@ impl WeightInfo for () { Weight::from_parts(3_216_000, 0) .saturating_add(ParityDbWeight::get().writes(1_u64)) } - /// Storage: `RuntimeConfigs::EnableNonRootCalls` (r:0 w:1) - /// Proof: `RuntimeConfigs::EnableNonRootCalls` (`max_values`: Some(1), `max_size`: Some(1), added: 496, mode: `MaxEncodedLen`) - fn set_enable_non_root_calls() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `0` - // Minimum execution time: 3_095_000 picoseconds. - Weight::from_parts(3_249_000, 0) - .saturating_add(ParityDbWeight::get().writes(1_u64)) - } } diff --git a/crates/pallet-subspace-mmr/Cargo.toml b/crates/pallet-subspace-mmr/Cargo.toml index 29e93816b2..4a4dfe4781 100644 --- a/crates/pallet-subspace-mmr/Cargo.toml +++ b/crates/pallet-subspace-mmr/Cargo.toml @@ -17,13 +17,13 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { version = "0.1.0", default-features = false, path = "../sp-subspace-mmr" } [features] diff --git a/crates/pallet-subspace-mmr/src/lib.rs b/crates/pallet-subspace-mmr/src/lib.rs index 54fa0c601a..581d5d10a4 100644 --- a/crates/pallet-subspace-mmr/src/lib.rs +++ b/crates/pallet-subspace-mmr/src/lib.rs @@ -22,9 +22,8 @@ pub use pallet::*; use sp_core::Get; use sp_mmr_primitives::{LeafDataProvider, OnNewRoot}; use sp_runtime::traits::{CheckedSub, One}; -use sp_runtime::DigestItem; use sp_subspace_mmr::subspace_mmr_runtime_interface::get_mmr_leaf_data; -use sp_subspace_mmr::{LeafDataV0, MmrDigest, MmrLeaf}; +use sp_subspace_mmr::{LeafDataV0, MmrLeaf}; #[frame_support::pallet] mod pallet { @@ -56,11 +55,6 @@ mod pallet { impl OnNewRoot for Pallet { fn on_new_root(root: &T::MmrRootHash) { - // TODO: this digest is not used remove it before next network reset but keep it - // as is for now to keep compatible with gemini-3h. - let digest = DigestItem::new_mmr_root(*root); - >::deposit_log(digest); - let block_number = frame_system::Pallet::::block_number(); >::insert(block_number, *root); if let Some(to_prune) = block_number.checked_sub(&T::MmrRootHashCount::get().into()) { diff --git a/crates/pallet-subspace/Cargo.toml b/crates/pallet-subspace/Cargo.toml index 32d7a7e701..9c644b701d 100644 --- a/crates/pallet-subspace/Cargo.toml +++ b/crates/pallet-subspace/Cargo.toml @@ -14,30 +14,27 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } log = { version = "0.4.22", default-features = false } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } schnorrkel = { version = "0.11.4", default-features = false } -serde = { version = "1.0.206", optional = true, default-features = false, features = ["derive"] } +serde = { version = "1.0.110", optional = true, default-features = false, features = ["alloc", "derive"] } sp-consensus-subspace = { version = "0.1.0", default-features = false, path = "../sp-consensus-subspace" } -sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", default-features = false, path = "../subspace-core-primitives" } subspace-runtime-primitives = { version = "0.1.0", default-features = false, path = "../subspace-runtime-primitives" } subspace-verification = { version = "0.1.0", path = "../subspace-verification", default-features = false } [dev-dependencies] env_logger = "0.11.5" -futures = "0.3.29" -pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-offences-subspace = { version = "0.1.0", path = "../pallet-offences-subspace" } +futures = "0.3.30" +pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } rand = { version = "0.8.5", features = ["min_const_gen"] } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-archiving = { version = "0.1.0", path = "../subspace-archiving" } subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives" } subspace-farmer-components = { version = "0.1.0", path = "../subspace-farmer-components" } @@ -46,6 +43,10 @@ subspace-proof-of-space = { version = "0.1.0", path = "../subspace-proof-of-spac [features] default = ["std"] +serde = [ + "dep:serde", + "subspace-core-primitives/serde", +] std = [ "codec/std", "frame-benchmarking?/std", @@ -58,7 +59,6 @@ std = [ "serde/std", "sp-consensus-subspace/std", "sp-consensus-slots/std", - "sp-core?/std", "sp-io/std", "sp-runtime/std", "sp-std/std", @@ -70,5 +70,4 @@ try-runtime = ["frame-support/try-runtime"] runtime-benchmarks = [ "frame-benchmarking", "frame-benchmarking/runtime-benchmarks", - "sp-core", ] diff --git a/crates/pallet-subspace/README.md b/crates/pallet-subspace/README.md index 54078a31f8..b0868dbfda 100644 --- a/crates/pallet-subspace/README.md +++ b/crates/pallet-subspace/README.md @@ -12,8 +12,6 @@ Pallet maintains crucial state required for Subspace Proof-of-Archival-Storage c * inherents for: * storing segment headers and maintaining mapping from segment index to corresponding segment commitment such that validity of piece from solution can be checked later - * handling of farmer equivocation (together with `pallet-offences-subspace`) and maintaining list of blocked farmers - (effectively burned plots) Pallet also provides handy API for finding block author, block reward address, randomness and some others. diff --git a/crates/pallet-subspace/src/benchmarking.rs b/crates/pallet-subspace/src/benchmarking.rs index 9cdb049928..27b9bdd856 100644 --- a/crates/pallet-subspace/src/benchmarking.rs +++ b/crates/pallet-subspace/src/benchmarking.rs @@ -8,53 +8,29 @@ use frame_benchmarking::v2::*; #[benchmarks] mod benchmarks { use crate::{ - AllowAuthoringByAnyone, Call, Config, CurrentSlot, EnableRewards, EnableRewardsAt, + AllowAuthoringByAnyone, Call, Config, EnableRewards, EnableRewardsAt, NextSolutionRangeOverride, Pallet, PotSlotIterations, PotSlotIterationsUpdate, - PotSlotIterationsUpdateValue, SegmentCommitment, ShouldAdjustSolutionRange, SolutionRanges, + PotSlotIterationsValue, SegmentCommitment, ShouldAdjustSolutionRange, SolutionRanges, }; #[cfg(not(feature = "std"))] use alloc::vec::Vec; use frame_benchmarking::v2::*; + use frame_support::traits::Get; use frame_system::pallet_prelude::*; use frame_system::{Pallet as System, RawOrigin}; - use sp_consensus_subspace::{ - EquivocationProof, FarmerPublicKey, FarmerSignature, SignedVote, Vote, - }; - use sp_core::crypto::UncheckedFrom; - use sp_core::Get; - use sp_runtime::traits::{Block, Header}; + use sp_consensus_subspace::{SignedVote, Vote}; use sp_std::boxed::Box; use sp_std::num::NonZeroU32; + use subspace_core_primitives::pot::{PotCheckpoints, PotOutput}; + use subspace_core_primitives::segments::{ + ArchivedBlockProgress, LastArchivedBlock, SegmentHeader, SegmentIndex, + }; use subspace_core_primitives::{ - ArchivedBlockProgress, Blake3Hash, LastArchivedBlock, PotCheckpoints, PotOutput, - SegmentHeader, SegmentIndex, Solution, SolutionRange, + Blake3Hash, PublicKey, RewardSignature, Solution, SolutionRange, }; const SEED: u32 = 0; - #[benchmark] - fn report_equivocation() { - // Construct a dummy equivocation proof which is invalid but it is okay because the - // proof is not validate during the call - let offender = FarmerPublicKey::unchecked_from([0u8; 32]); - let header = ::Header::new( - System::::block_number(), - Default::default(), - Default::default(), - System::::parent_hash(), - Default::default(), - ); - let proof = EquivocationProof { - slot: CurrentSlot::::get(), - offender, - first_header: header.clone(), - second_header: header, - }; - - #[extrinsic_call] - _(RawOrigin::None, Box::new(proof)); - } - #[benchmark] fn store_segment_headers(x: Linear<1, 20>) { let segment_headers: Vec = (0..x as u64) @@ -108,15 +84,15 @@ mod benchmarks { let unsigned_vote: Vote, T::Hash, T::AccountId> = Vote::V0 { height: System::::block_number(), parent_hash: System::::parent_hash(), - slot: CurrentSlot::::get(), + slot: Pallet::::current_slot(), solution: Solution::genesis_solution( - FarmerPublicKey::unchecked_from([1u8; 32]), + PublicKey::from([1u8; 32]), account("user1", 1, SEED), ), proof_of_time: PotOutput::default(), future_proof_of_time: PotOutput::default(), }; - let signature = FarmerSignature::unchecked_from([2u8; 64]); + let signature = RewardSignature::from([2u8; 64]); let signed_vote = SignedVote { vote: unsigned_vote, signature, @@ -156,16 +132,22 @@ mod benchmarks { .checked_mul(NonZeroU32::new(2).expect("2 is non-zero")) .expect("Not overflow"); - PotSlotIterations::::set(Some(slot_iterations)); + PotSlotIterations::::put(PotSlotIterationsValue { + slot_iterations, + update: None, + }); #[extrinsic_call] _(RawOrigin::Root, next_slot_iterations); assert_eq!( - PotSlotIterationsUpdate::::get(), - Some(PotSlotIterationsUpdateValue { - target_slot: None, - slot_iterations: next_slot_iterations, + PotSlotIterations::::get(), + Some(PotSlotIterationsValue { + slot_iterations, + update: Some(PotSlotIterationsUpdate { + target_slot: None, + slot_iterations: next_slot_iterations, + }), }) ); } @@ -174,7 +156,7 @@ mod benchmarks { fn create_segment_header(segment_index: SegmentIndex) -> SegmentHeader { SegmentHeader::V0 { segment_index, - segment_commitment: subspace_core_primitives::SegmentCommitment::default(), + segment_commitment: subspace_core_primitives::segments::SegmentCommitment::default(), prev_segment_header_hash: Blake3Hash::default(), last_archived_block: LastArchivedBlock { number: 0, diff --git a/crates/pallet-subspace/src/equivocation.rs b/crates/pallet-subspace/src/equivocation.rs deleted file mode 100644 index 07c9c30ca9..0000000000 --- a/crates/pallet-subspace/src/equivocation.rs +++ /dev/null @@ -1,255 +0,0 @@ -// Copyright (C) 2020-2021 Parity Technologies (UK) Ltd. -// Copyright (C) 2021 Subspace Labs, Inc. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! -//! An opt-in utility module for reporting equivocations. -//! -//! This module defines an offence type for Subspace equivocations and some utility traits to wire -//! together: -//! - a system for reporting offences; -//! - a system for submitting unsigned transactions; -//! - a way to get the current block author; -//! -//! These can be used in an offchain context in order to submit equivocation reporting extrinsics -//! (from the client that's import Subspace blocks). And in a runtime context, so that the Subspace -//! pallet can validate the equivocation proofs in the extrinsic and report the offences. -//! -//! IMPORTANT: -//! When using this module for enabling equivocation reporting it is required that the -//! `ValidateUnsigned` for the Subspace pallet is used in the runtime definition. -//! - -use frame_support::traits::Get; -use frame_system::offchain::SubmitTransaction; -use frame_system::pallet_prelude::*; -use sp_consensus_slots::Slot; -use sp_consensus_subspace::offence::{Kind, Offence, OffenceError, ReportOffence}; -use sp_consensus_subspace::{EquivocationProof, FarmerPublicKey}; -use sp_runtime::transaction_validity::{ - InvalidTransaction, TransactionPriority, TransactionSource, TransactionValidity, - TransactionValidityError, ValidTransaction, -}; -use sp_runtime::DispatchResult; -use sp_std::prelude::*; - -use crate::{Call, Config, Pallet}; - -/// A trait with utility methods for handling equivocation reports in Subspace. The trait provides -/// methods for reporting an offence triggered by a valid equivocation report, checking the current -/// block author (to declare as the reporter), and also for creating and submitting equivocation -/// report extrinsics (useful only in offchain context). -pub trait HandleEquivocation { - /// The longevity, in blocks, that the equivocation report is valid for. When using the staking - /// pallet this should be equal to the bonding duration (in blocks, not eras). - type ReportLongevity: Get; - - /// Report an offence proved by the given reporters. - fn report_offence( - offence: SubspaceEquivocationOffence, - ) -> Result<(), OffenceError>; - - /// Returns true if all of the offenders at the given time slot have already been reported. - fn is_known_offence(offenders: &[FarmerPublicKey], time_slot: &Slot) -> bool; - - /// Create and dispatch an equivocation report extrinsic. - fn submit_equivocation_report( - equivocation_proof: EquivocationProof>, - ) -> DispatchResult; -} - -impl HandleEquivocation for () { - type ReportLongevity = (); - - fn report_offence( - _offence: SubspaceEquivocationOffence, - ) -> Result<(), OffenceError> { - Ok(()) - } - - fn is_known_offence(_offenders: &[FarmerPublicKey], _time_slot: &Slot) -> bool { - true - } - - fn submit_equivocation_report( - _equivocation_proof: EquivocationProof>, - ) -> DispatchResult { - Ok(()) - } -} - -/// Generic equivocation handler. This type implements `HandleEquivocation` -/// using existing subsystems that are part of frame (type bounds described -/// below) and will dispatch to them directly, it's only purpose is to wire all -/// subsystems together. -pub struct EquivocationHandler { - _phantom: sp_std::marker::PhantomData<(R, L)>, -} - -impl Default for EquivocationHandler { - #[inline] - fn default() -> Self { - Self { - _phantom: Default::default(), - } - } -} - -impl HandleEquivocation for EquivocationHandler -where - T: Config + frame_system::offchain::SendTransactionTypes>, - // A system for reporting offences after valid equivocation reports are - // processed. - R: ReportOffence>, - // The longevity (in blocks) that the equivocation report is valid for. When using the staking - // pallet this should be the bonding duration. - L: Get, -{ - type ReportLongevity = L; - - fn report_offence( - offence: SubspaceEquivocationOffence, - ) -> Result<(), OffenceError> { - R::report_offence(offence) - } - - fn is_known_offence(offenders: &[FarmerPublicKey], time_slot: &Slot) -> bool { - R::is_known_offence(offenders, time_slot) - } - - fn submit_equivocation_report( - equivocation_proof: EquivocationProof>, - ) -> DispatchResult { - let call = Call::report_equivocation { - equivocation_proof: Box::new(equivocation_proof), - }; - - match SubmitTransaction::>::submit_unsigned_transaction(call.into()) { - Ok(()) => log::info!( - target: "runtime::subspace", - "Submitted Subspace equivocation report.", - ), - Err(()) => log::error!( - target: "runtime::subspace", - "Error submitting Subspace equivocation report.", - ), - } - - Ok(()) - } -} - -/// Methods for the `ValidateUnsigned` implementation: -/// It restricts calls to `report_equivocation` to local calls (i.e. extrinsics generated on this -/// node) or that already in a block. This guarantees that only block authors can include -/// equivocation reports. -impl Pallet { - pub fn validate_equivocation_report( - source: TransactionSource, - equivocation_proof: &EquivocationProof>, - ) -> TransactionValidity { - // Discard equivocation report not coming from the local node - if !matches!( - source, - TransactionSource::Local | TransactionSource::InBlock - ) { - log::warn!( - target: "runtime::subspace", - "Rejecting report equivocation extrinsic because it is not local/in-block.", - ); - - return InvalidTransaction::Call.into(); - } - - // check report staleness - is_known_offence::(equivocation_proof)?; - - // validate the equivocation proof - if !sp_consensus_subspace::is_equivocation_proof_valid::<_, T::AccountId>( - equivocation_proof, - ) { - return InvalidTransaction::BadProof.into(); - } - - let longevity = >::ReportLongevity::get(); - - ValidTransaction::with_tag_prefix("SubspaceEquivocation") - // We assign the maximum priority for any equivocation report. - .priority(TransactionPriority::MAX) - // Only one equivocation report for the same offender at the same slot. - .and_provides(( - equivocation_proof.offender.clone(), - *equivocation_proof.slot, - )) - .longevity(longevity) - // We don't propagate this. This can never be included on a remote node. - .propagate(false) - .build() - } - - pub fn pre_dispatch_equivocation_report( - equivocation_proof: &EquivocationProof>, - ) -> Result<(), TransactionValidityError> { - // check report staleness - is_known_offence::(equivocation_proof)?; - - // validate the equivocation proof - if !sp_consensus_subspace::is_equivocation_proof_valid::<_, T::AccountId>( - equivocation_proof, - ) { - return Err(InvalidTransaction::BadProof.into()); - } - - Ok(()) - } -} - -fn is_known_offence( - equivocation_proof: &EquivocationProof>, -) -> Result<(), TransactionValidityError> { - // Check if the offence has already been reported, and if so then we can discard the report. - if T::HandleEquivocation::is_known_offence( - &[equivocation_proof.offender.clone()], - &equivocation_proof.slot, - ) { - Err(InvalidTransaction::Stale.into()) - } else { - Ok(()) - } -} - -/// A Subspace equivocation offence report. -/// -/// When a farmer released two or more solutions at the same slot. -#[derive(Debug, Eq, PartialEq)] -pub struct SubspaceEquivocationOffence { - /// A Subspace slot in which this incident happened. - pub slot: Slot, - /// Identity of the farmer that produced the equivocation. - pub offender: PublicKey, -} - -impl Offence for SubspaceEquivocationOffence { - const ID: Kind = *b"sub:equivocation"; - type TimeSlot = Slot; - - fn offenders(&self) -> Vec { - vec![self.offender.clone()] - } - - fn time_slot(&self) -> Self::TimeSlot { - self.slot - } -} diff --git a/crates/pallet-subspace/src/lib.rs b/crates/pallet-subspace/src/lib.rs index 22e4b9354e..fde51ff178 100644 --- a/crates/pallet-subspace/src/lib.rs +++ b/crates/pallet-subspace/src/lib.rs @@ -21,8 +21,6 @@ #[cfg(not(feature = "std"))] extern crate alloc; -pub mod equivocation; - #[cfg(test)] mod mock; #[cfg(test)] @@ -37,8 +35,7 @@ pub mod weights; use alloc::string::String; use codec::{Decode, Encode, MaxEncodedLen}; use core::num::NonZeroU64; -use equivocation::{HandleEquivocation, SubspaceEquivocationOffence}; -use frame_support::dispatch::{DispatchResult, DispatchResultWithPostInfo, Pays}; +use frame_support::dispatch::DispatchResult; use frame_support::traits::Get; use frame_system::offchain::{SendTransactionTypes, SubmitTransaction}; use frame_system::pallet_prelude::*; @@ -49,10 +46,8 @@ use schnorrkel::SignatureError; use sp_consensus_slots::Slot; use sp_consensus_subspace::consensus::{is_proof_of_time_valid, verify_solution}; use sp_consensus_subspace::digests::CompatibleDigestItem; -use sp_consensus_subspace::offence::{OffenceDetails, OffenceError, OnOffenceHandler}; use sp_consensus_subspace::{ - EquivocationProof, FarmerPublicKey, FarmerSignature, PotParameters, PotParametersChange, - SignedVote, Vote, WrappedPotOutput, + PotParameters, PotParametersChange, SignedVote, Vote, WrappedPotOutput, }; use sp_runtime::generic::DigestItem; use sp_runtime::traits::{BlockNumberProvider, CheckedSub, Hash, One, Zero}; @@ -60,14 +55,16 @@ use sp_runtime::transaction_validity::{ InvalidTransaction, TransactionPriority, TransactionSource, TransactionValidity, TransactionValidityError, ValidTransaction, }; -use sp_runtime::DispatchError; use sp_std::collections::btree_map::BTreeMap; use sp_std::prelude::*; use subspace_core_primitives::crypto::Scalar; +use subspace_core_primitives::pieces::PieceOffset; +use subspace_core_primitives::sectors::{SectorId, SectorIndex}; +use subspace_core_primitives::segments::{ + ArchivedHistorySegment, HistorySize, SegmentHeader, SegmentIndex, +}; use subspace_core_primitives::{ - ArchivedHistorySegment, BlockHash, HistorySize, PieceOffset, PublicKey, RewardSignature, - SectorId, SectorIndex, SegmentHeader, SegmentIndex, SlotNumber, SolutionRange, - REWARD_SIGNING_CONTEXT, + BlockHash, PublicKey, RewardSignature, SlotNumber, SolutionRange, REWARD_SIGNING_CONTEXT, }; use subspace_verification::{ check_reward_signature, derive_next_solution_range, derive_pot_entropy, PieceCheckParams, @@ -104,22 +101,24 @@ struct VoteVerificationData { #[frame_support::pallet] pub mod pallet { use super::{EraChangeTrigger, VoteVerificationData}; - use crate::equivocation::HandleEquivocation; use crate::weights::WeightInfo; use frame_support::pallet_prelude::*; use frame_system::pallet_prelude::*; use sp_consensus_slots::Slot; use sp_consensus_subspace::digests::CompatibleDigestItem; use sp_consensus_subspace::inherents::{InherentError, InherentType, INHERENT_IDENTIFIER}; - use sp_consensus_subspace::{EquivocationProof, FarmerPublicKey, FarmerSignature, SignedVote}; + use sp_consensus_subspace::SignedVote; use sp_runtime::DigestItem; use sp_std::collections::btree_map::BTreeMap; use sp_std::num::NonZeroU32; use sp_std::prelude::*; use subspace_core_primitives::crypto::Scalar; + use subspace_core_primitives::pieces::PieceOffset; + use subspace_core_primitives::pot::PotCheckpoints; + use subspace_core_primitives::sectors::SectorIndex; + use subspace_core_primitives::segments::{HistorySize, SegmentHeader, SegmentIndex}; use subspace_core_primitives::{ - Blake3Hash, HistorySize, PieceOffset, PotCheckpoints, Randomness, SectorIndex, - SegmentHeader, SegmentIndex, SolutionRange, + Blake3Hash, PublicKey, Randomness, RewardSignature, SolutionRange, }; pub(super) struct InitialSolutionRanges { @@ -144,11 +143,11 @@ pub mod pallet { /// Override for next solution range adjustment #[derive(Debug, Encode, Decode, TypeInfo)] - pub struct SolutionRangeOverride { + pub(super) struct SolutionRangeOverride { /// Value that should be set as solution range - pub solution_range: SolutionRange, + pub(super) solution_range: SolutionRange, /// Value that should be set as voting solution range - pub voting_solution_range: SolutionRange, + pub(super) voting_solution_range: SolutionRange, } /// The Subspace Pallet @@ -233,14 +232,6 @@ pub mod pallet { /// Era is normally used to update solution range used for challenges. type EraChangeTrigger: EraChangeTrigger; - /// The equivocation handling subsystem, defines methods to report an offence (after the - /// equivocation has been validated) and for submitting a transaction to report an - /// equivocation (from an offchain context). - /// - /// NOTE: when enabling equivocation handling (i.e. this type isn't set to `()`) you must - /// use this pallet's `ValidateUnsigned` in the runtime definition. - type HandleEquivocation: HandleEquivocation; - /// Weight information for extrinsics in this pallet. type WeightInfo: WeightInfo; @@ -259,7 +250,7 @@ pub mod pallet { /// for everyone. FirstFarmer, /// Specified root farmer is allowed to author blocks unless unlocked for everyone. - RootFarmer(FarmerPublicKey), + RootFarmer(PublicKey), } #[derive(Debug, Copy, Clone, Encode, Decode, TypeInfo)] @@ -270,7 +261,14 @@ pub mod pallet { } #[derive(Debug, Copy, Clone, Encode, Decode, TypeInfo, PartialEq)] - pub(super) struct PotSlotIterationsUpdateValue { + pub(super) struct PotSlotIterationsValue { + pub(super) slot_iterations: NonZeroU32, + /// Scheduled proof of time slot iterations update + pub(super) update: Option, + } + + #[derive(Debug, Copy, Clone, Encode, Decode, TypeInfo, PartialEq)] + pub(super) struct PotSlotIterationsUpdate { /// Target slot at which entropy should be injected (when known) pub(super) target_slot: Option, pub(super) slot_iterations: NonZeroU32, @@ -346,10 +344,13 @@ pub mod pallet { } AllowAuthoringBy::RootFarmer(root_farmer) => { AllowAuthoringByAnyone::::put(false); - RootPlotPublicKey::::put(root_farmer.clone()); + RootPlotPublicKey::::put(root_farmer); } } - PotSlotIterations::::put(self.pot_slot_iterations); + PotSlotIterations::::put(PotSlotIterationsValue { + slot_iterations: self.pot_slot_iterations, + update: None, + }); } } @@ -361,7 +362,7 @@ pub mod pallet { SegmentHeaderStored { segment_header: SegmentHeader }, /// Farmer vote. FarmerVote { - public_key: FarmerPublicKey, + public_key: PublicKey, reward_address: T::AccountId, height: BlockNumberFor, parent_hash: T::Hash, @@ -370,8 +371,6 @@ pub mod pallet { #[pallet::error] pub enum Error { - /// A given equivocation report is valid but already previously reported. - DuplicateOffenceReport, /// Solution range adjustment already enabled. SolutionRangeAdjustmentAlreadyEnabled, /// Rewards already active. @@ -384,24 +383,10 @@ pub mod pallet { PotSlotIterationsUpdateAlreadyScheduled, } - // TODO: Consider removing genesis slot when breaking compatibility with previous networks since - // slots are no longer measured in timestamp, but rather in proof of time slots, which starts - // with 0. - /// The slot at which the first block was created. This is 0 until the first block of the chain. - #[pallet::storage] - #[pallet::getter(fn genesis_slot)] - pub type GenesisSlot = StorageValue<_, Slot, ValueQuery>; - - // TODO: Replace `CurrentSlot` with `BlockSlots` - /// Current slot number. - #[pallet::storage] - #[pallet::getter(fn current_slot)] - pub type CurrentSlot = StorageValue<_, Slot, ValueQuery>; - /// Bounded mapping from block number to slot #[pallet::storage] #[pallet::getter(fn block_slots)] - pub type BlockSlots = + pub(super) type BlockSlots = StorageValue<_, BoundedBTreeMap, Slot, T::BlockSlotCount>, ValueQuery>; /// Solution ranges used for challenges. @@ -417,20 +402,16 @@ pub mod pallet { /// Storage to check if the solution range is to be adjusted for next era #[pallet::storage] #[pallet::getter(fn should_adjust_solution_range)] - pub type ShouldAdjustSolutionRange = + pub(super) type ShouldAdjustSolutionRange = StorageValue<_, bool, ValueQuery, T::ShouldAdjustSolutionRange>; /// Override solution range during next update #[pallet::storage] - pub type NextSolutionRangeOverride = StorageValue<_, SolutionRangeOverride>; + pub(super) type NextSolutionRangeOverride = StorageValue<_, SolutionRangeOverride>; /// Slot at which current era started. #[pallet::storage] - pub type EraStartSlot = StorageValue<_, Slot>; - - /// A set of blocked farmers keyed by their public key. - #[pallet::storage] - pub(super) type BlockList = StorageMap<_, Twox64Concat, FarmerPublicKey, ()>; + pub(super) type EraStartSlot = StorageValue<_, Slot>; /// Mapping from segment index to corresponding segment commitment of contained records. #[pallet::storage] @@ -439,7 +420,7 @@ pub mod pallet { _, Twox64Concat, SegmentIndex, - subspace_core_primitives::SegmentCommitment, + subspace_core_primitives::segments::SegmentCommitment, >; /// Whether the segment headers inherent has been processed in this block (temporary value). @@ -456,7 +437,7 @@ pub mod pallet { /// Parent block author information. #[pallet::storage] pub(super) type ParentBlockAuthorInfo = - StorageValue<_, (FarmerPublicKey, SectorIndex, PieceOffset, Scalar, Slot)>; + StorageValue<_, (PublicKey, SectorIndex, PieceOffset, Scalar, Slot)>; /// Enable rewards since specified block number. #[pallet::storage] @@ -471,12 +452,12 @@ pub mod pallet { pub(super) type CurrentBlockAuthorInfo = StorageValue< _, ( - FarmerPublicKey, + PublicKey, SectorIndex, PieceOffset, Scalar, Slot, - T::AccountId, + Option, ), >; @@ -485,8 +466,8 @@ pub mod pallet { pub(super) type ParentBlockVoters = StorageValue< _, BTreeMap< - (FarmerPublicKey, SectorIndex, PieceOffset, Scalar, Slot), - (T::AccountId, FarmerSignature), + (PublicKey, SectorIndex, PieceOffset, Scalar, Slot), + (Option, RewardSignature), >, ValueQuery, >; @@ -496,19 +477,14 @@ pub mod pallet { pub(super) type CurrentBlockVoters = StorageValue< _, BTreeMap< - (FarmerPublicKey, SectorIndex, PieceOffset, Scalar, Slot), - (T::AccountId, FarmerSignature), + (PublicKey, SectorIndex, PieceOffset, Scalar, Slot), + (Option, RewardSignature), >, >; - /// Number of iterations for proof of time per slot + /// Number of iterations for proof of time per slot with optional scheduled update #[pallet::storage] - pub(super) type PotSlotIterations = StorageValue<_, NonZeroU32>; - - // TODO: Consider combining with PotSlotIterations when making breaking network changes - /// Scheduled proof of time slot iterations update - #[pallet::storage] - pub(super) type PotSlotIterationsUpdate = StorageValue<_, PotSlotIterationsUpdateValue>; + pub(super) type PotSlotIterations = StorageValue<_, PotSlotIterationsValue>; /// Entropy that needs to be injected into proof of time chain at specific slot associated with /// block number it came from. @@ -530,7 +506,7 @@ pub mod pallet { /// Set just once to make sure no one else can author blocks until allowed for anyone. #[pallet::storage] #[pallet::getter(fn root_plot_public_key)] - pub(super) type RootPlotPublicKey = StorageValue<_, FarmerPublicKey>; + pub(super) type RootPlotPublicKey = StorageValue<_, PublicKey>; #[pallet::hooks] impl Hooks> for Pallet { @@ -546,29 +522,9 @@ pub mod pallet { #[pallet::call] impl Pallet { - /// Report farmer equivocation/misbehavior. This method will verify the equivocation proof. - /// If valid, the offence will be reported. - /// - /// This extrinsic must be called unsigned and it is expected that only block authors will - /// call it (validated in `ValidateUnsigned`), as such if the block author is defined it - /// will be defined as the equivocation reporter. - #[pallet::call_index(0)] - #[pallet::weight((< T as Config >::WeightInfo::report_equivocation(), DispatchClass::Operational))] - // Suppression because the custom syntax will also generate an enum and we need enum to have - // boxed value. - #[allow(clippy::boxed_local)] - pub fn report_equivocation( - origin: OriginFor, - equivocation_proof: Box>>, - ) -> DispatchResultWithPostInfo { - ensure_none(origin)?; - - Self::do_report_equivocation(*equivocation_proof) - } - /// Submit new segment header to the blockchain. This is an inherent extrinsic and part of /// the Subspace consensus logic. - #[pallet::call_index(1)] + #[pallet::call_index(0)] #[pallet::weight((< T as Config >::WeightInfo::store_segment_headers(segment_headers.len() as u32), DispatchClass::Mandatory))] pub fn store_segment_headers( origin: OriginFor, @@ -580,7 +536,7 @@ pub mod pallet { /// Enable solution range adjustment after every era. /// Note: No effect on the solution range for the current era - #[pallet::call_index(2)] + #[pallet::call_index(1)] #[pallet::weight(< T as Config >::WeightInfo::enable_solution_range_adjustment())] pub fn enable_solution_range_adjustment( origin: OriginFor, @@ -602,7 +558,7 @@ pub mod pallet { } /// Farmer vote, currently only used for extra rewards to farmers. - #[pallet::call_index(3)] + #[pallet::call_index(2)] #[pallet::weight((< T as Config >::WeightInfo::vote(), DispatchClass::Operational))] // Suppression because the custom syntax will also generate an enum and we need enum to have // boxed value. @@ -617,7 +573,7 @@ pub mod pallet { } /// Enable rewards for blocks and votes at specified block height. - #[pallet::call_index(4)] + #[pallet::call_index(3)] #[pallet::weight(< T as Config >::WeightInfo::enable_rewards_at())] pub fn enable_rewards_at( origin: OriginFor, @@ -629,7 +585,7 @@ pub mod pallet { } /// Enable storage access for all users. - #[pallet::call_index(5)] + #[pallet::call_index(4)] #[pallet::weight(< T as Config >::WeightInfo::enable_authoring_by_anyone())] pub fn enable_authoring_by_anyone(origin: OriginFor) -> DispatchResult { ensure_root(origin)?; @@ -643,7 +599,7 @@ pub mod pallet { } /// Update proof of time slot iterations - #[pallet::call_index(6)] + #[pallet::call_index(5)] #[pallet::weight(< T as Config >::WeightInfo::set_pot_slot_iterations())] pub fn set_pot_slot_iterations( origin: OriginFor, @@ -655,25 +611,28 @@ pub mod pallet { return Err(Error::::NotMultipleOfCheckpoints.into()); } - if PotSlotIterations::::get().expect("Always initialized during genesis; qed") - >= slot_iterations - { + let mut pot_slot_iterations = + PotSlotIterations::::get().expect("Always initialized during genesis; qed"); + + if pot_slot_iterations.slot_iterations >= slot_iterations { return Err(Error::::PotSlotIterationsMustIncrease.into()); } // Can't update if already scheduled since it will cause verification issues - if let Some(pot_slot_iterations_update_value) = PotSlotIterationsUpdate::::get() + if let Some(pot_slot_iterations_update_value) = pot_slot_iterations.update && pot_slot_iterations_update_value.target_slot.is_some() { return Err(Error::::PotSlotIterationsUpdateAlreadyScheduled.into()); } - PotSlotIterationsUpdate::::put(PotSlotIterationsUpdateValue { + pot_slot_iterations.update.replace(PotSlotIterationsUpdate { // Slot will be known later when next entropy injection takes place target_slot: None, slot_iterations, }); + PotSlotIterations::::put(pot_slot_iterations); + Ok(()) } } @@ -739,9 +698,6 @@ pub mod pallet { type Call = Call; fn validate_unsigned(source: TransactionSource, call: &Self::Call) -> TransactionValidity { match call { - Call::report_equivocation { equivocation_proof } => { - Self::validate_equivocation_report(source, equivocation_proof) - } Call::store_segment_headers { segment_headers } => { Self::validate_segment_header(source, segment_headers) } @@ -752,9 +708,6 @@ pub mod pallet { fn pre_dispatch(call: &Self::Call) -> Result<(), TransactionValidityError> { match call { - Call::report_equivocation { equivocation_proof } => { - Self::pre_dispatch_equivocation_report(equivocation_proof) - } Call::store_segment_headers { segment_headers } => { Self::pre_dispatch_segment_header(segment_headers) } @@ -801,7 +754,7 @@ impl Pallet { } else { next_solution_range = derive_next_solution_range( // If Era start slot is not found it means we have just finished the first era - u64::from(EraStartSlot::::get().unwrap_or_else(GenesisSlot::::get)), + u64::from(EraStartSlot::::get().unwrap_or_default()), u64::from(current_slot), slot_probability, solution_ranges.current, @@ -840,16 +793,6 @@ impl Pallet { .expect("Block must always have pre-digest"); let current_slot = pre_digest.slot(); - // On the first non-zero block (i.e. block #1) we need to adjust internal storage - // accordingly. - if *GenesisSlot::::get() == 0 { - GenesisSlot::::put(current_slot); - debug_assert_ne!(*GenesisSlot::::get(), 0); - } - - // The slot number of the current block being initialized. - CurrentSlot::::put(current_slot); - BlockSlots::::mutate(|block_slots| { if let Some(to_remove) = block_number.checked_sub(&T::BlockSlotCount::get().into()) { block_slots.remove(&to_remove); @@ -862,7 +805,7 @@ impl Pallet { { // Remove old value CurrentBlockAuthorInfo::::take(); - let farmer_public_key = pre_digest.solution().public_key.clone(); + let farmer_public_key = pre_digest.solution().public_key; // Optional restriction for block authoring to the root user if !AllowAuthoringByAnyone::::get() { @@ -872,13 +815,11 @@ impl Pallet { panic!("Client bug, authoring must be only done by the root user"); } } else { - maybe_root_plot_public_key.replace(farmer_public_key.clone()); + maybe_root_plot_public_key.replace(farmer_public_key); // Deposit root plot public key update such that light client can validate // blocks later. frame_system::Pallet::::deposit_log( - DigestItem::root_plot_public_key_update(Some( - farmer_public_key.clone(), - )), + DigestItem::root_plot_public_key_update(Some(farmer_public_key)), ); } }); @@ -891,24 +832,7 @@ impl Pallet { pre_digest.solution().chunk, current_slot, ); - if ParentBlockVoters::::get().contains_key(&key) { - let (public_key, _sector_index, _piece_offset, _chunk, slot) = key; - - let offence = SubspaceEquivocationOffence { - slot, - offender: public_key, - }; - - // Report equivocation, we don't care about duplicate report here - if let Err(OffenceError::Other(code)) = - T::HandleEquivocation::report_offence(offence) - { - warn!( - target: "runtime::subspace", - "Failed to submit block author offence report with code {code}" - ); - } - } else { + if !ParentBlockVoters::::get().contains_key(&key) { let (public_key, sector_index, piece_offset, chunk, slot) = key; CurrentBlockAuthorInfo::::put(( @@ -917,13 +841,13 @@ impl Pallet { piece_offset, chunk, slot, - pre_digest.solution().reward_address.clone(), + Some(pre_digest.solution().reward_address.clone()), )); } } CurrentBlockVoters::::put(BTreeMap::< - (FarmerPublicKey, SectorIndex, PieceOffset, Scalar, Slot), - (T::AccountId, FarmerSignature), + (PublicKey, SectorIndex, PieceOffset, Scalar, Slot), + (Option, RewardSignature), >::default()); // If solution range was updated in previous block, set it as current. @@ -958,17 +882,16 @@ impl Pallet { T::EraChangeTrigger::trigger::(block_number); { - let pot_slot_iterations = + let mut pot_slot_iterations = PotSlotIterations::::get().expect("Always initialized during genesis; qed"); // This is what we had after previous block frame_system::Pallet::::deposit_log(DigestItem::pot_slot_iterations( - pot_slot_iterations, + pot_slot_iterations.slot_iterations, )); - let mut maybe_pot_slot_iterations_update = PotSlotIterationsUpdate::::get(); // Check PoT slot iterations update and apply it if it is time to do so, while also // removing corresponding storage item - let pot_slot_iterations = if let Some(update) = maybe_pot_slot_iterations_update + if let Some(update) = pot_slot_iterations.update && let Some(target_slot) = update.target_slot && target_slot <= current_slot { @@ -978,13 +901,12 @@ impl Pallet { update.slot_iterations, block_number ); - PotSlotIterationsUpdate::::take(); - maybe_pot_slot_iterations_update.take(); - PotSlotIterations::::put(update.slot_iterations); - update.slot_iterations - } else { - pot_slot_iterations - }; + pot_slot_iterations = PotSlotIterationsValue { + slot_iterations: update.slot_iterations, + update: None, + }; + PotSlotIterations::::put(pot_slot_iterations); + } let pot_entropy_injection_interval = T::PotEntropyInjectionInterval::get(); let pot_entropy_injection_delay = T::PotEntropyInjectionDelay::get(); @@ -1023,7 +945,7 @@ impl Pallet { entropy_value.target_slot.replace(target_slot); // Schedule PoT slot iterations update at the same slot as entropy - if let Some(update) = &mut maybe_pot_slot_iterations_update + if let Some(update) = &mut pot_slot_iterations.update && update.target_slot.is_none() { debug!( @@ -1031,7 +953,7 @@ impl Pallet { "Scheduling PoT slots update to happen at slot {target_slot:?}" ); update.target_slot.replace(target_slot); - PotSlotIterationsUpdate::::put(*update); + PotSlotIterations::::put(pot_slot_iterations); } } } @@ -1051,7 +973,7 @@ impl Pallet { let target_slot = target_slot .expect("Target slot is guaranteed to be present due to logic above; qed"); // Check if there was a PoT slot iterations update at the same exact slot - let slot_iterations = if let Some(update) = maybe_pot_slot_iterations_update + let slot_iterations = if let Some(update) = pot_slot_iterations.update && let Some(update_target_slot) = update.target_slot && update_target_slot == target_slot { @@ -1061,7 +983,7 @@ impl Pallet { ); update.slot_iterations } else { - pot_slot_iterations + pot_slot_iterations.slot_iterations }; frame_system::Pallet::::deposit_log(DigestItem::pot_parameters_change( @@ -1111,21 +1033,6 @@ impl Pallet { DidProcessSegmentHeaders::::take(); } - fn do_report_equivocation( - equivocation_proof: EquivocationProof>, - ) -> DispatchResultWithPostInfo { - let offender = equivocation_proof.offender.clone(); - let slot = equivocation_proof.slot; - - let offence = SubspaceEquivocationOffence { slot, offender }; - - T::HandleEquivocation::report_offence(offence) - .map_err(|_| Error::::DuplicateOffenceReport)?; - - // waive the fee since the report is valid and beneficial - Ok(Pays::No.into()) - } - fn do_store_segment_headers(segment_headers: Vec) -> DispatchResult { assert!( !DidProcessSegmentHeaders::::exists(), @@ -1198,18 +1105,14 @@ impl Pallet { .. } = signed_vote.vote; - if BlockList::::contains_key(&solution.public_key) { - Err(DispatchError::Other("Equivocated")) - } else { - Self::deposit_event(Event::FarmerVote { - public_key: solution.public_key, - reward_address: solution.reward_address, - height, - parent_hash, - }); + Self::deposit_event(Event::FarmerVote { + public_key: solution.public_key, + reward_address: solution.reward_address, + height, + parent_hash, + }); - Ok(()) - } + Ok(()) } fn do_enable_rewards_at( @@ -1242,27 +1145,9 @@ impl Pallet { Ok(()) } - /// Submits an extrinsic to report an equivocation. This method will create an unsigned - /// extrinsic with a call to `report_equivocation` and will push the transaction to the pool. - /// Only useful in an offchain context. - pub fn submit_equivocation_report( - equivocation_proof: EquivocationProof>, - ) -> Option<()> { - T::HandleEquivocation::submit_equivocation_report(equivocation_proof).ok() - } - - /// Just stores offender from equivocation report in block list, only used for tests. - pub fn submit_test_equivocation_report( - equivocation_proof: EquivocationProof>, - ) -> Option<()> { - BlockList::::insert(equivocation_proof.offender, ()); - Some(()) - } - /// Proof of time parameters pub fn pot_parameters() -> PotParameters { let block_number = frame_system::Pallet::::block_number(); - let maybe_pot_slot_iterations_update = PotSlotIterationsUpdate::::get(); let pot_slot_iterations = PotSlotIterations::::get().expect("Always initialized during genesis; qed"); let pot_entropy_injection_interval = T::PotEntropyInjectionInterval::get(); @@ -1288,13 +1173,13 @@ impl Pallet { "Always present due to identical check present in block initialization; qed", ); // Check if there was a PoT slot iterations update at the same exact slot - let slot_iterations = if let Some(update) = maybe_pot_slot_iterations_update + let slot_iterations = if let Some(update) = pot_slot_iterations.update && let Some(update_target_slot) = update.target_slot && update_target_slot == target_slot { update.slot_iterations } else { - pot_slot_iterations + pot_slot_iterations.slot_iterations }; next_change.replace(PotParametersChange { @@ -1306,14 +1191,17 @@ impl Pallet { } PotParameters::V0 { - slot_iterations: pot_slot_iterations, + slot_iterations: pot_slot_iterations.slot_iterations, next_change, } } - /// Check if `farmer_public_key` is in block list (due to equivocation) - pub fn is_in_block_list(farmer_public_key: &FarmerPublicKey) -> bool { - BlockList::::contains_key(farmer_public_key) + /// Current slot number + pub fn current_slot() -> Slot { + BlockSlots::::get() + .last_key_value() + .map(|(_block, slot)| *slot) + .unwrap_or_default() } /// Size of the archived history of the blockchain in bytes @@ -1397,7 +1285,7 @@ impl Pallet { .priority(TransactionPriority::MAX) // Should be included in the next block or block after that, but not later .longevity(2) - .and_provides(&signed_vote.signature) + .and_provides(signed_vote.signature) .build() } @@ -1406,17 +1294,7 @@ impl Pallet { ) -> Result<(), TransactionValidityError> { match check_vote::(signed_vote, true) { Ok(()) => Ok(()), - Err(CheckVoteError::Equivocated(offence)) => { - // Report equivocation, we don't care about duplicate report here - if let Err(OffenceError::Other(code)) = - T::HandleEquivocation::report_offence(offence) - { - debug!( - target: "runtime::subspace", - "Failed to submit voter offence report with code {code}" - ); - } - + Err(CheckVoteError::Equivocated { .. }) => { // Return Ok such that changes from this pre-dispatch are persisted Ok(()) } @@ -1430,6 +1308,7 @@ impl Pallet { /// block initialization didn't happen yet). fn current_vote_verification_data(is_block_initialized: bool) -> VoteVerificationData { let solution_ranges = SolutionRanges::::get(); + VoteVerificationData { solution_range: if is_block_initialized { solution_ranges.current @@ -1458,7 +1337,6 @@ fn current_vote_verification_data(is_block_initialized: bool) -> Vote #[derive(Debug, Eq, PartialEq)] enum CheckVoteError { - BlockListed, UnexpectedBeforeHeightTwo, HeightInTheFuture, HeightInThePast, @@ -1473,14 +1351,13 @@ enum CheckVoteError { InvalidProofOfTime, InvalidFutureProofOfTime, DuplicateVote, - Equivocated(SubspaceEquivocationOffence), + Equivocated { slot: Slot, offender: PublicKey }, } impl From for TransactionValidityError { #[inline] fn from(error: CheckVoteError) -> Self { TransactionValidityError::Invalid(match error { - CheckVoteError::BlockListed => InvalidTransaction::BadSigner, CheckVoteError::UnexpectedBeforeHeightTwo => InvalidTransaction::Call, CheckVoteError::HeightInTheFuture => InvalidTransaction::Future, CheckVoteError::HeightInThePast => InvalidTransaction::Stale, @@ -1495,7 +1372,7 @@ impl From for TransactionValidityError { CheckVoteError::InvalidProofOfTime => InvalidTransaction::Future, CheckVoteError::InvalidFutureProofOfTime => InvalidTransaction::Call, CheckVoteError::DuplicateVote => InvalidTransaction::Call, - CheckVoteError::Equivocated(_) => InvalidTransaction::BadSigner, + CheckVoteError::Equivocated { .. } => InvalidTransaction::BadSigner, }) } } @@ -1515,10 +1392,6 @@ fn check_vote( let height = *height; let slot = *slot; - if BlockList::::contains_key(&solution.public_key) { - return Err(CheckVoteError::BlockListed); - } - let current_block_number = frame_system::Pallet::::current_block_number(); if current_block_number <= One::one() || height <= One::one() { @@ -1606,8 +1479,8 @@ fn check_vote( if let Err(error) = check_reward_signature( signed_vote.vote.hash().as_bytes(), - &RewardSignature::from(&signed_vote.signature), - &PublicKey::from(&solution.public_key), + &signed_vote.signature, + &solution.public_key, &schnorrkel::signing_context(REWARD_SIGNING_CONTEXT), ) { debug!( @@ -1623,10 +1496,7 @@ fn check_vote( parent_vote_verification_data }; - let sector_id = SectorId::new( - PublicKey::from(&solution.public_key).hash(), - solution.sector_index, - ); + let sector_id = SectorId::new(solution.public_key.hash(), solution.sector_index); let recent_segments = T::RecentSegments::get(); let recent_history_fraction = ( @@ -1730,7 +1600,7 @@ fn check_vote( } let key = ( - solution.public_key.clone(), + solution.public_key, solution.sector_index, solution.piece_offset, solution.chunk, @@ -1775,22 +1645,6 @@ fn check_vote( } } - if is_equivocating { - // Revoke reward if assigned in current block. - CurrentBlockVoters::::mutate(|current_reward_receivers| { - if let Some(current_reward_receivers) = current_reward_receivers { - current_reward_receivers.remove(&key); - } - }); - - let (public_key, _sector_index, _piece_offset, _chunk, _slot) = key; - - return Err(CheckVoteError::Equivocated(SubspaceEquivocationOffence { - slot, - offender: public_key, - })); - } - if pre_dispatch { // During `pre_dispatch` call put farmer into the list of reward receivers. CurrentBlockVoters::::mutate(|current_reward_receivers| { @@ -1800,13 +1654,49 @@ fn check_vote( .insert( key, ( - solution.reward_address.clone(), - signed_vote.signature.clone(), + if is_equivocating { + None + } else { + Some(solution.reward_address.clone()) + }, + signed_vote.signature, ), ); }); } + if is_equivocating { + let offender = solution.public_key; + + CurrentBlockAuthorInfo::::mutate(|maybe_info| { + if let Some((public_key, _sector_index, _piece_offset, _chunk, _slot, reward_address)) = + maybe_info + { + if public_key == &offender { + // Revoke reward for block author + reward_address.take(); + } + } + }); + + CurrentBlockVoters::::mutate(|current_reward_receivers| { + if let Some(current_reward_receivers) = current_reward_receivers { + for ( + (public_key, _sector_index, _piece_offset, _chunk, _slot), + (reward_address, _signature), + ) in current_reward_receivers.iter_mut() + { + if public_key != &offender { + // Revoke reward if assigned in current block. + reward_address.take(); + } + } + } + }); + + return Err(CheckVoteError::Equivocated { slot, offender }); + } + Ok(()) } @@ -1871,15 +1761,11 @@ impl subspace_runtime_primitives::RewardsEnabled for Pallet { impl subspace_runtime_primitives::FindBlockRewardAddress for Pallet { fn find_block_reward_address() -> Option { CurrentBlockAuthorInfo::::get().and_then( - |(public_key, _sector_index, _piece_offset, _chunk, _slot, reward_address)| { - // Equivocation might have happened in this block, if so - no reward for block - // author - if !BlockList::::contains_key(public_key) { - // Rewards might be disabled, in which case no block reward either - if let Some(height) = EnableRewards::::get() { - if frame_system::Pallet::::current_block_number() >= height { - return Some(reward_address); - } + |(_public_key, _sector_index, _piece_offset, _chunk, _slot, reward_address)| { + // Rewards might be disabled, in which case no block reward + if let Some(height) = EnableRewards::::get() { + if frame_system::Pallet::::current_block_number() >= height { + return reward_address; } } @@ -1899,7 +1785,7 @@ impl subspace_runtime_primitives::FindVotingRewardAddresses::get() .unwrap_or_else(ParentBlockVoters::::get) .into_values() - .map(|(reward_address, _signature)| reward_address) + .filter_map(|(reward_address, _signature)| reward_address) .collect(); } } @@ -1934,11 +1820,3 @@ impl frame_support::traits::Randomness> fo ) } } - -impl OnOffenceHandler for Pallet { - fn on_offence(offenders: &[OffenceDetails]) { - for offender in offenders { - BlockList::::insert(offender.offender.clone(), ()); - } - } -} diff --git a/crates/pallet-subspace/src/mock.rs b/crates/pallet-subspace/src/mock.rs index 9fdc930333..34e25c9ef2 100644 --- a/crates/pallet-subspace/src/mock.rs +++ b/crates/pallet-subspace/src/mock.rs @@ -16,11 +16,7 @@ //! Test utilities -use crate::equivocation::EquivocationHandler; -use crate::{ - self as pallet_subspace, AllowAuthoringBy, Config, CurrentSlot, EnableRewardsAt, - FarmerPublicKey, NormalEraChange, -}; +use crate::{self as pallet_subspace, AllowAuthoringBy, Config, EnableRewardsAt, NormalEraChange}; use frame_support::traits::{ConstU128, ConstU16, OnInitialize}; use frame_support::{derive_impl, parameter_types}; use futures::executor::block_on; @@ -28,13 +24,10 @@ use rand::Rng; use schnorrkel::Keypair; use sp_consensus_slots::Slot; use sp_consensus_subspace::digests::{CompatibleDigestItem, PreDigest, PreDigestPotInfo}; -use sp_consensus_subspace::{ - FarmerSignature, KzgExtension, PosExtension, PotExtension, SignedVote, Vote, -}; -use sp_core::crypto::UncheckedFrom; +use sp_consensus_subspace::{KzgExtension, PosExtension, PotExtension, SignedVote, Vote}; use sp_io::TestExternalities; -use sp_runtime::testing::{Digest, DigestItem, Header, TestXt}; -use sp_runtime::traits::{Block as BlockT, Header as _}; +use sp_runtime::testing::{Digest, DigestItem, TestXt}; +use sp_runtime::traits::Block as BlockT; use sp_runtime::BuildStorage; use std::marker::PhantomData; use std::num::{NonZeroU32, NonZeroU64, NonZeroUsize}; @@ -43,12 +36,17 @@ use std::sync::{Once, OnceLock}; use std::{iter, slice}; use subspace_archiving::archiver::{Archiver, NewArchivedSegment}; use subspace_core_primitives::crypto::kzg::{embedded_kzg_settings, Kzg}; -use subspace_core_primitives::crypto::Scalar; +use subspace_core_primitives::pieces::{Piece, PieceOffset, Record}; +use subspace_core_primitives::pos::PosSeed; +use subspace_core_primitives::pot::PotOutput; +use subspace_core_primitives::sectors::SectorId; +use subspace_core_primitives::segments::{ + ArchivedBlockProgress, ArchivedHistorySegment, HistorySize, LastArchivedBlock, + RecordedHistorySegment, SegmentCommitment, SegmentHeader, SegmentIndex, +}; use subspace_core_primitives::{ - ArchivedBlockProgress, ArchivedHistorySegment, Blake3Hash, BlockNumber, HistorySize, - LastArchivedBlock, Piece, PieceOffset, PosSeed, PotOutput, PublicKey, Record, - RecordedHistorySegment, SectorId, SegmentCommitment, SegmentHeader, SegmentIndex, SlotNumber, - Solution, SolutionRange, REWARD_SIGNING_CONTEXT, + Blake3Hash, BlockNumber, PublicKey, RewardSignature, SlotNumber, Solution, SolutionRange, + REWARD_SIGNING_CONTEXT, }; use subspace_erasure_coding::ErasureCoding; use subspace_farmer_components::auditing::audit_sector_sync; @@ -89,7 +87,6 @@ frame_support::construct_runtime!( System: frame_system, Balances: pallet_balances, Subspace: pallet_subspace, - OffencesSubspace: pallet_offences_subspace, } ); @@ -116,11 +113,6 @@ impl pallet_balances::Config for Test { type DustRemoval = (); } -impl pallet_offences_subspace::Config for Test { - type RuntimeEvent = RuntimeEvent; - type OnOffenceHandler = Subspace; -} - /// 1 in 6 slots (on average, not counting collisions) will have a block. pub const SLOT_PROBABILITY: (u64, u64) = (3, 10); @@ -170,8 +162,6 @@ impl Config for Test { type EraChangeTrigger = NormalEraChange; type BlockSlotCount = BlockSlotCount; - type HandleEquivocation = EquivocationHandler; - type WeightInfo = (); } @@ -197,7 +187,7 @@ pub fn go_to_block( let pre_digest = make_pre_digest( slot.into(), Solution { - public_key: FarmerPublicKey::unchecked_from(keypair.public.to_bytes()), + public_key: PublicKey::from(keypair.public.to_bytes()), reward_address, sector_index: 0, history_size: HistorySize::from(SegmentIndex::ZERO), @@ -231,7 +221,7 @@ pub fn progress_to_block( pub fn make_pre_digest( slot: Slot, - solution: Solution::AccountId>, + solution: Solution<::AccountId>, ) -> Digest { let log = DigestItem::subspace_pre_digest(&PreDigest::V0 { slot, @@ -278,82 +268,6 @@ pub fn new_test_ext(pot_extension: PotExtension) -> TestExternalities { ext } -/// Creates an equivocation at the current block, by generating two headers. -pub fn generate_equivocation_proof( - keypair: &Keypair, - slot: Slot, -) -> sp_consensus_subspace::EquivocationProof
{ - let current_block = System::block_number(); - let current_slot = CurrentSlot::::get(); - - let chunk = { - let mut chunk_bytes = [0; Scalar::SAFE_BYTES]; - chunk_bytes.as_mut().iter_mut().for_each(|byte| { - *byte = (current_block % 8) as u8; - }); - - Scalar::from(&chunk_bytes) - }; - - let public_key = FarmerPublicKey::unchecked_from(keypair.public.to_bytes()); - - let make_header = |piece_offset, reward_address: ::AccountId| { - let parent_hash = System::parent_hash(); - let pre_digest = make_pre_digest( - slot, - Solution { - public_key: public_key.clone(), - reward_address, - sector_index: 0, - history_size: HistorySize::from(SegmentIndex::ZERO), - piece_offset, - record_commitment: Default::default(), - record_witness: Default::default(), - chunk, - chunk_witness: Default::default(), - proof_of_space: Default::default(), - }, - ); - System::reset_events(); - System::initialize(¤t_block, &parent_hash, &pre_digest); - System::set_block_number(current_block); - System::finalize() - }; - - // sign the header prehash and sign it, adding it to the block as the seal - // digest item - let seal_header = |header: &mut Header| { - let prehash = header.hash(); - let signature = FarmerSignature::unchecked_from( - keypair - .sign( - schnorrkel::context::signing_context(REWARD_SIGNING_CONTEXT) - .bytes(prehash.as_bytes()), - ) - .to_bytes(), - ); - let seal = DigestItem::subspace_seal(signature); - header.digest_mut().push(seal); - }; - - // generate two headers at the current block - let mut h1 = make_header(PieceOffset::ZERO, 0); - let mut h2 = make_header(PieceOffset::ONE, 1); - - seal_header(&mut h1); - seal_header(&mut h2); - - // restore previous runtime state - go_to_block(keypair, current_block, *current_slot, 2); - - sp_consensus_subspace::EquivocationProof { - slot, - offender: public_key, - first_header: h1, - second_header: h2, - } -} - pub fn create_segment_header(segment_index: SegmentIndex) -> SegmentHeader { SegmentHeader::V0 { segment_index, @@ -475,7 +389,7 @@ pub fn create_signed_vote( ); let sector_slot_challenge = sector_id.derive_sector_slot_challenge(&global_challenge); let masked_chunk = (Simd::from(solution.chunk.to_bytes()) - ^ Simd::from(solution.proof_of_space.hash())) + ^ Simd::from(*solution.proof_of_space.hash())) .to_array(); // Check that solution quality is not too high @@ -495,7 +409,7 @@ pub fn create_signed_vote( parent_hash, slot, solution: Solution { - public_key: FarmerPublicKey::unchecked_from(keypair.public.to_bytes()), + public_key: PublicKey::from(keypair.public.to_bytes()), reward_address: solution.reward_address, sector_index: solution.sector_index, history_size: solution.history_size, @@ -510,7 +424,7 @@ pub fn create_signed_vote( future_proof_of_time, }; - let signature = FarmerSignature::unchecked_from( + let signature = RewardSignature::from( keypair .sign(reward_signing_context.bytes(vote.hash().as_ref())) .to_bytes(), diff --git a/crates/pallet-subspace/src/tests.rs b/crates/pallet-subspace/src/tests.rs index 35d2969a06..e061e43ba4 100644 --- a/crates/pallet-subspace/src/tests.rs +++ b/crates/pallet-subspace/src/tests.rs @@ -18,26 +18,21 @@ use crate::mock::{ allow_all_pot_extension, create_archived_segment, create_segment_header, create_signed_vote, - generate_equivocation_proof, go_to_block, new_test_ext, progress_to_block, BlockAuthoringDelay, - ReportLongevity, RuntimeEvent, RuntimeOrigin, Subspace, System, Test, INITIAL_SOLUTION_RANGE, - SLOT_PROBABILITY, + go_to_block, new_test_ext, progress_to_block, BlockAuthoringDelay, RuntimeEvent, RuntimeOrigin, + Subspace, System, Test, INITIAL_SOLUTION_RANGE, SLOT_PROBABILITY, }; use crate::{ - pallet, AllowAuthoringByAnyone, BlockList, Call, CheckVoteError, Config, - CurrentBlockAuthorInfo, CurrentBlockVoters, CurrentSlot, EnableRewardsAt, - ParentBlockAuthorInfo, ParentBlockVoters, PotSlotIterations, SegmentCommitment, - SubspaceEquivocationOffence, + pallet, AllowAuthoringByAnyone, Call, CheckVoteError, Config, CurrentBlockAuthorInfo, + CurrentBlockVoters, EnableRewardsAt, ParentBlockAuthorInfo, ParentBlockVoters, + PotSlotIterations, PotSlotIterationsValue, SegmentCommitment, }; -use codec::Encode; -use frame_support::dispatch::{GetDispatchInfo, Pays}; use frame_support::{assert_err, assert_ok}; use frame_system::{EventRecord, Phase}; use rand::prelude::*; use schnorrkel::Keypair; use sp_consensus_slots::Slot; -use sp_consensus_subspace::{FarmerPublicKey, FarmerSignature, PotExtension, SolutionRanges}; -use sp_core::crypto::UncheckedFrom; -use sp_runtime::traits::{BlockNumberProvider, Header}; +use sp_consensus_subspace::{PotExtension, SolutionRanges}; +use sp_runtime::traits::BlockNumberProvider; use sp_runtime::transaction_validity::{ InvalidTransaction, TransactionPriority, TransactionSource, ValidTransaction, }; @@ -47,20 +42,12 @@ use std::collections::BTreeMap; use std::num::NonZeroU32; use std::sync::{Arc, Mutex}; use subspace_core_primitives::crypto::Scalar; -use subspace_core_primitives::{PieceOffset, PotOutput, SegmentIndex, SolutionRange}; +use subspace_core_primitives::pieces::PieceOffset; +use subspace_core_primitives::pot::PotOutput; +use subspace_core_primitives::segments::SegmentIndex; +use subspace_core_primitives::{PublicKey, RewardSignature, SolutionRange}; use subspace_runtime_primitives::{FindBlockRewardAddress, FindVotingRewardAddresses}; -#[test] -fn genesis_slot_is_correct() { - new_test_ext(allow_all_pot_extension()).execute_with(|| { - let keypair = Keypair::generate(); - - // this sets the genesis slot to 6; - go_to_block(&keypair, 1, 6, 1); - assert_eq!(*Subspace::genesis_slot(), 6); - }) -} - #[test] fn can_update_solution_range_on_era_change() { new_test_ext(allow_all_pot_extension()).execute_with(|| { @@ -249,237 +236,6 @@ fn solution_range_should_not_update_when_disabled() { }) } -#[test] -fn report_equivocation_current_session_works() { - new_test_ext(allow_all_pot_extension()).execute_with(|| { - let keypair = Keypair::generate(); - - progress_to_block(&keypair, 1, 1); - - let farmer_public_key = FarmerPublicKey::unchecked_from(keypair.public.to_bytes()); - - // generate an equivocation proof. it creates two headers at the given - // slot with different block hashes and signed by the given key - let equivocation_proof = generate_equivocation_proof(&keypair, CurrentSlot::::get()); - - assert!(!Subspace::is_in_block_list(&farmer_public_key)); - - // report the equivocation - Subspace::report_equivocation(RuntimeOrigin::none(), Box::new(equivocation_proof)).unwrap(); - - progress_to_block(&keypair, 2, 1); - - // check that farmer was added to block list - assert!(Subspace::is_in_block_list(&farmer_public_key)); - }); -} - -#[test] -fn report_equivocation_old_session_works() { - new_test_ext(allow_all_pot_extension()).execute_with(|| { - let keypair = Keypair::generate(); - - progress_to_block(&keypair, 1, 1); - - let farmer_public_key = FarmerPublicKey::unchecked_from(keypair.public.to_bytes()); - - // generate an equivocation proof at the current slot - let equivocation_proof = generate_equivocation_proof(&keypair, CurrentSlot::::get()); - - // create new block and report the equivocation - // from the previous block - progress_to_block(&keypair, 2, 1); - - assert!(!Subspace::is_in_block_list(&farmer_public_key)); - - // report the equivocation - Subspace::report_equivocation(RuntimeOrigin::none(), Box::new(equivocation_proof)).unwrap(); - - progress_to_block(&keypair, 3, 1); - - // check that farmer was added to block list - assert!(Subspace::is_in_block_list(&farmer_public_key)); - }) -} - -#[test] -fn report_equivocation_invalid_equivocation_proof() { - new_test_ext(allow_all_pot_extension()).execute_with(|| { - let keypair = Keypair::generate(); - - progress_to_block(&keypair, 1, 1); - - let assert_invalid_equivocation = |equivocation_proof| { - assert_err!( - ::validate_unsigned( - TransactionSource::Local, - &Call::report_equivocation { - equivocation_proof: Box::new(equivocation_proof), - }, - ), - InvalidTransaction::BadProof, - ) - }; - - // both headers have the same hash, no equivocation. - let mut equivocation_proof = - generate_equivocation_proof(&keypair, CurrentSlot::::get()); - equivocation_proof.second_header = equivocation_proof.first_header.clone(); - assert_invalid_equivocation(equivocation_proof); - - // missing preruntime digest from one header - let mut equivocation_proof = - generate_equivocation_proof(&keypair, CurrentSlot::::get()); - equivocation_proof.first_header.digest_mut().logs.remove(0); - assert_invalid_equivocation(equivocation_proof); - - // missing seal from one header - let mut equivocation_proof = - generate_equivocation_proof(&keypair, CurrentSlot::::get()); - equivocation_proof.first_header.digest_mut().logs.remove(1); - assert_invalid_equivocation(equivocation_proof); - - // invalid slot number in proof compared to runtime digest - let mut equivocation_proof = - generate_equivocation_proof(&keypair, CurrentSlot::::get()); - equivocation_proof.slot = Slot::from(0); - assert_invalid_equivocation(equivocation_proof.clone()); - - // different slot numbers in headers - let h1 = equivocation_proof.first_header; - let mut equivocation_proof = - generate_equivocation_proof(&keypair, CurrentSlot::::get() + 1); - - // use the header from the previous equivocation generated - // at the previous slot - equivocation_proof.first_header = h1.clone(); - - assert_invalid_equivocation(equivocation_proof); - - // invalid seal signature - let mut equivocation_proof = - generate_equivocation_proof(&keypair, CurrentSlot::::get() + 1); - - // replace the seal digest with the digest from the - // previous header at the previous slot - equivocation_proof.first_header.digest_mut().pop(); - equivocation_proof - .first_header - .digest_mut() - .push(h1.digest().logs().last().unwrap().clone()); - - assert_invalid_equivocation(equivocation_proof.clone()); - }) -} - -#[test] -fn report_equivocation_validate_unsigned_prevents_duplicates() { - new_test_ext(allow_all_pot_extension()).execute_with(|| { - let keypair = Keypair::generate(); - - progress_to_block(&keypair, 1, 1); - - let farmer_public_key = FarmerPublicKey::unchecked_from(keypair.public.to_bytes()); - - let equivocation_proof = generate_equivocation_proof(&keypair, CurrentSlot::::get()); - - let inner = Call::report_equivocation { - equivocation_proof: Box::new(equivocation_proof.clone()), - }; - - // Only local/in block reports are allowed - assert_eq!( - ::validate_unsigned( - TransactionSource::External, - &inner, - ), - InvalidTransaction::Call.into(), - ); - - // The transaction is valid when passed as local - let tx_tag = (farmer_public_key, CurrentSlot::::get()); - assert_eq!( - ::validate_unsigned( - TransactionSource::Local, - &inner, - ), - Ok(ValidTransaction { - priority: TransactionPriority::MAX, - requires: vec![], - provides: vec![("SubspaceEquivocation", tx_tag).encode()], - longevity: ReportLongevity::get(), - propagate: false, - }) - ); - - // The pre dispatch checks should also pass - assert_ok!(::pre_dispatch(&inner)); - - // Submit the report - Subspace::report_equivocation(RuntimeOrigin::none(), Box::new(equivocation_proof)).unwrap(); - - // The report should now be considered stale and the transaction is invalid. - // The check for staleness should be done on both `validate_unsigned` and on `pre_dispatch` - assert_err!( - ::validate_unsigned( - TransactionSource::Local, - &inner, - ), - InvalidTransaction::Stale, - ); - - assert_err!( - ::pre_dispatch(&inner), - InvalidTransaction::Stale, - ); - }); -} - -#[test] -fn valid_equivocation_reports_dont_pay_fees() { - new_test_ext(allow_all_pot_extension()).execute_with(|| { - let keypair = Keypair::generate(); - - progress_to_block(&keypair, 1, 1); - - // generate an equivocation proof. - let equivocation_proof = generate_equivocation_proof(&keypair, CurrentSlot::::get()); - - // check the dispatch info for the call. - let info = Call::::report_equivocation { - equivocation_proof: Box::new(equivocation_proof.clone()), - } - .get_dispatch_info(); - - // it should have non-zero weight and the fee has to be paid. - assert!(info.weight.ref_time() > 0); - assert_eq!(info.pays_fee, Pays::Yes); - - // report the equivocation. - let post_info = Subspace::report_equivocation( - RuntimeOrigin::none(), - Box::new(equivocation_proof.clone()), - ) - .unwrap(); - - // the original weight should be kept, but given that the report - // is valid the fee is waived. - assert!(post_info.actual_weight.is_none()); - assert_eq!(post_info.pays_fee, Pays::No); - - // report the equivocation again which is invalid now since it is - // duplicate. - assert_err!( - ::pre_dispatch( - &Call::report_equivocation { - equivocation_proof: Box::new(equivocation_proof), - } - ), - InvalidTransaction::Stale, - ); - }) -} - #[test] fn store_segment_header_works() { new_test_ext(allow_all_pot_extension()).execute_with(|| { @@ -580,38 +336,6 @@ fn store_segment_header_validate_unsigned_prevents_duplicates() { }); } -#[test] -fn vote_block_listed() { - new_test_ext(allow_all_pot_extension()).execute_with(|| { - let keypair = Keypair::generate(); - let archived_segment = create_archived_segment(); - - BlockList::::insert( - FarmerPublicKey::unchecked_from(keypair.public.to_bytes()), - (), - ); - - // Vote author is in block list - let signed_vote = create_signed_vote( - &keypair, - 0, - ::Hash::default(), - Subspace::current_slot() + 1, - Default::default(), - Default::default(), - &archived_segment.pieces, - 1, - SolutionRange::MIN, - SolutionRange::MAX, - ); - - assert_err!( - super::check_vote::(&signed_vote, false), - CheckVoteError::BlockListed - ); - }); -} - #[test] fn vote_after_genesis() { new_test_ext(allow_all_pot_extension()).execute_with(|| { @@ -927,7 +651,7 @@ fn vote_bad_reward_signature() { SolutionRange::MAX, ); - signed_vote.signature = FarmerSignature::unchecked_from(rand::random::<[u8; 64]>()); + signed_vote.signature = RewardSignature::from(rand::random::<[u8; 64]>()); assert_matches!( super::check_vote::(&signed_vote, false), @@ -1298,21 +1022,24 @@ fn vote_equivocation_current_block_plus_vote() { // Parent block author + sector index + chunk + slot matches that of the vote CurrentBlockAuthorInfo::::put(( - FarmerPublicKey::unchecked_from(keypair.public.to_bytes()), + PublicKey::from(keypair.public.to_bytes()), signed_vote.vote.solution().sector_index, signed_vote.vote.solution().piece_offset, signed_vote.vote.solution().chunk, slot, - reward_address, + Some(reward_address), )); assert_err!( super::check_vote::(&signed_vote, false), - CheckVoteError::Equivocated(SubspaceEquivocationOffence { + CheckVoteError::Equivocated { slot, - offender: FarmerPublicKey::unchecked_from(keypair.public.to_bytes()) - }) + offender: PublicKey::from(keypair.public.to_bytes()) + } ); + + // Block author doesn't get reward after equivocation + assert_matches!(Subspace::find_block_reward_address(), None); }); } @@ -1353,7 +1080,7 @@ fn vote_equivocation_parent_block_plus_vote() { // Parent block author + sector index + chunk + slot matches that of the vote ParentBlockAuthorInfo::::put(( - FarmerPublicKey::unchecked_from(keypair.public.to_bytes()), + PublicKey::from(keypair.public.to_bytes()), signed_vote.vote.solution().sector_index, signed_vote.vote.solution().piece_offset, signed_vote.vote.solution().chunk, @@ -1362,19 +1089,14 @@ fn vote_equivocation_parent_block_plus_vote() { assert_err!( super::check_vote::(&signed_vote, true), - CheckVoteError::Equivocated(SubspaceEquivocationOffence { + CheckVoteError::Equivocated { slot, - offender: FarmerPublicKey::unchecked_from(keypair.public.to_bytes()) - }) + offender: PublicKey::from(keypair.public.to_bytes()) + } ); Subspace::pre_dispatch_vote(&signed_vote).unwrap(); - assert_err!( - Subspace::vote(RuntimeOrigin::none(), Box::new(signed_vote)), - DispatchError::Other("Equivocated"), - ); - // Block author doesn't get reward after equivocation assert_matches!(Subspace::find_block_reward_address(), None); }); @@ -1420,13 +1142,13 @@ fn vote_equivocation_current_voters_duplicate() { let mut map = BTreeMap::new(); map.insert( ( - FarmerPublicKey::unchecked_from(voter_keypair.public.to_bytes()), + PublicKey::from(voter_keypair.public.to_bytes()), signed_vote.vote.solution().sector_index, signed_vote.vote.solution().piece_offset, signed_vote.vote.solution().chunk, slot, ), - (reward_address, signed_vote.signature.clone()), + (Some(reward_address), signed_vote.signature), ); map }); @@ -1441,23 +1163,19 @@ fn vote_equivocation_current_voters_duplicate() { let mut map = BTreeMap::new(); map.insert( ( - FarmerPublicKey::unchecked_from(voter_keypair.public.to_bytes()), + PublicKey::from(voter_keypair.public.to_bytes()), signed_vote.vote.solution().sector_index, signed_vote.vote.solution().piece_offset, signed_vote.vote.solution().chunk, slot, ), - (reward_address, FarmerSignature::unchecked_from([0; 64])), + (Some(reward_address), RewardSignature::from([0; 64])), ); map }); // Different vote for the same sector index and time slot leads to equivocation Subspace::pre_dispatch_vote(&signed_vote).unwrap(); - assert_err!( - Subspace::vote(RuntimeOrigin::none(), Box::new(signed_vote)), - DispatchError::Other("Equivocated"), - ); // Voter doesn't get reward after equivocation assert_eq!(Subspace::find_voting_reward_addresses().len(), 0); @@ -1504,13 +1222,13 @@ fn vote_equivocation_parent_voters_duplicate() { let mut map = BTreeMap::new(); map.insert( ( - FarmerPublicKey::unchecked_from(keypair.public.to_bytes()), + PublicKey::from(keypair.public.to_bytes()), signed_vote.vote.solution().sector_index, signed_vote.vote.solution().piece_offset, signed_vote.vote.solution().chunk, slot, ), - (reward_address, signed_vote.signature.clone()), + (Some(reward_address), signed_vote.signature), ); map }); @@ -1525,13 +1243,13 @@ fn vote_equivocation_parent_voters_duplicate() { let mut map = BTreeMap::new(); map.insert( ( - FarmerPublicKey::unchecked_from(keypair.public.to_bytes()), + PublicKey::from(keypair.public.to_bytes()), signed_vote.vote.solution().sector_index, signed_vote.vote.solution().piece_offset, signed_vote.vote.solution().chunk, slot, ), - (reward_address, FarmerSignature::unchecked_from([0; 64])), + (Some(reward_address), RewardSignature::from([0; 64])), ); map }); @@ -1539,10 +1257,10 @@ fn vote_equivocation_parent_voters_duplicate() { // Different vote for the same time slot leads to equivocation assert_err!( super::check_vote::(&signed_vote, false), - CheckVoteError::Equivocated(SubspaceEquivocationOffence { + CheckVoteError::Equivocated { slot, - offender: FarmerPublicKey::unchecked_from(keypair.public.to_bytes()) - }) + offender: PublicKey::from(keypair.public.to_bytes()) + } ); // Voter doesn't get reward after equivocation @@ -1556,24 +1274,24 @@ fn vote_equivocation_parent_voters_duplicate() { fn enabling_block_rewards_works() { fn set_block_rewards() { CurrentBlockAuthorInfo::::put(( - FarmerPublicKey::unchecked_from(Keypair::generate().public.to_bytes()), + PublicKey::from(Keypair::generate().public.to_bytes()), 0, PieceOffset::ZERO, Scalar::default(), Subspace::current_slot(), - 1, + Some(1), )); CurrentBlockVoters::::put({ let mut map = BTreeMap::new(); map.insert( ( - FarmerPublicKey::unchecked_from(Keypair::generate().public.to_bytes()), + PublicKey::from(Keypair::generate().public.to_bytes()), 0, PieceOffset::ZERO, Scalar::default(), Subspace::current_slot(), ), - (2, FarmerSignature::unchecked_from([0; 64])), + (Some(2), RewardSignature::from([0; 64])), ); map }); @@ -1738,7 +1456,10 @@ fn allow_authoring_by_anyone_works() { #[test] fn set_pot_slot_iterations_works() { new_test_ext(allow_all_pot_extension()).execute_with(|| { - PotSlotIterations::::put(NonZeroU32::new(100_000_000).unwrap()); + PotSlotIterations::::put(PotSlotIterationsValue { + slot_iterations: NonZeroU32::new(100_000_000).unwrap(), + update: None, + }); // Only root can do this assert_err!( @@ -1782,8 +1503,15 @@ fn set_pot_slot_iterations_works() { .unwrap(); // Unless update is already scheduled to be applied - pallet::PotSlotIterationsUpdate::::mutate(|update| { - update.as_mut().unwrap().target_slot.replace(Slot::from(1)); + pallet::PotSlotIterations::::mutate(|pot_slot_iterations| { + pot_slot_iterations + .as_mut() + .unwrap() + .update + .as_mut() + .unwrap() + .target_slot + .replace(Slot::from(1)); }); assert_matches!( Subspace::set_pot_slot_iterations( diff --git a/crates/pallet-subspace/src/weights.rs b/crates/pallet-subspace/src/weights.rs index d6126001ff..283b067036 100644 --- a/crates/pallet-subspace/src/weights.rs +++ b/crates/pallet-subspace/src/weights.rs @@ -31,7 +31,6 @@ use core::marker::PhantomData; /// Weight functions needed for pallet_subspace. pub trait WeightInfo { - fn report_equivocation() -> Weight; fn store_segment_headers(x: u32, ) -> Weight; fn enable_solution_range_adjustment() -> Weight; fn vote() -> Weight; @@ -43,23 +42,6 @@ pub trait WeightInfo { /// Weights for pallet_subspace using the Substrate node and recommended hardware. pub struct SubstrateWeight(PhantomData); impl WeightInfo for SubstrateWeight { - /// Storage: `OffencesSubspace::ReportsByKindIndex` (r:1 w:1) - /// Proof: `OffencesSubspace::ReportsByKindIndex` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// Storage: `OffencesSubspace::ConcurrentReportsIndex` (r:1 w:1) - /// Proof: `OffencesSubspace::ConcurrentReportsIndex` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// Storage: `OffencesSubspace::Reports` (r:1 w:1) - /// Proof: `OffencesSubspace::Reports` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// Storage: `Subspace::BlockList` (r:0 w:1) - /// Proof: `Subspace::BlockList` (`max_values`: None, `max_size`: None, mode: `Measured`) - fn report_equivocation() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `3465` - // Minimum execution time: 27_544_000 picoseconds. - Weight::from_parts(28_117_000, 3465) - .saturating_add(T::DbWeight::get().reads(3_u64)) - .saturating_add(T::DbWeight::get().writes(4_u64)) - } /// Storage: `Subspace::DidProcessSegmentHeaders` (r:1 w:1) /// Proof: `Subspace::DidProcessSegmentHeaders` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) /// Storage: `Subspace::SegmentCommitment` (r:20 w:20) @@ -153,23 +135,6 @@ impl WeightInfo for SubstrateWeight { // For backwards compatibility and tests impl WeightInfo for () { - /// Storage: `OffencesSubspace::ReportsByKindIndex` (r:1 w:1) - /// Proof: `OffencesSubspace::ReportsByKindIndex` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// Storage: `OffencesSubspace::ConcurrentReportsIndex` (r:1 w:1) - /// Proof: `OffencesSubspace::ConcurrentReportsIndex` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// Storage: `OffencesSubspace::Reports` (r:1 w:1) - /// Proof: `OffencesSubspace::Reports` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// Storage: `Subspace::BlockList` (r:0 w:1) - /// Proof: `Subspace::BlockList` (`max_values`: None, `max_size`: None, mode: `Measured`) - fn report_equivocation() -> Weight { - // Proof Size summary in bytes: - // Measured: `0` - // Estimated: `3465` - // Minimum execution time: 27_544_000 picoseconds. - Weight::from_parts(28_117_000, 3465) - .saturating_add(ParityDbWeight::get().reads(3_u64)) - .saturating_add(ParityDbWeight::get().writes(4_u64)) - } /// Storage: `Subspace::DidProcessSegmentHeaders` (r:1 w:1) /// Proof: `Subspace::DidProcessSegmentHeaders` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) /// Storage: `Subspace::SegmentCommitment` (r:20 w:20) diff --git a/crates/pallet-transaction-fees/Cargo.toml b/crates/pallet-transaction-fees/Cargo.toml index 4a34bfa21d..ece8de7bd1 100644 --- a/crates/pallet-transaction-fees/Cargo.toml +++ b/crates/pallet-transaction-fees/Cargo.toml @@ -19,8 +19,8 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } subspace-runtime-primitives = { version = "0.1.0", default-features = false, path = "../subspace-runtime-primitives" } diff --git a/crates/pallet-transaction-fees/src/lib.rs b/crates/pallet-transaction-fees/src/lib.rs index 02389ff019..2558526451 100644 --- a/crates/pallet-transaction-fees/src/lib.rs +++ b/crates/pallet-transaction-fees/src/lib.rs @@ -19,7 +19,7 @@ #![forbid(unsafe_code)] #![warn(rust_2018_idioms, missing_debug_implementations)] -mod default_weights; +pub mod weights; #[cfg(not(feature = "std"))] extern crate alloc; diff --git a/crates/pallet-transaction-fees/src/default_weights.rs b/crates/pallet-transaction-fees/src/weights.rs similarity index 67% rename from crates/pallet-transaction-fees/src/default_weights.rs rename to crates/pallet-transaction-fees/src/weights.rs index 69d1d01f5b..7897c2f28e 100644 --- a/crates/pallet-transaction-fees/src/default_weights.rs +++ b/crates/pallet-transaction-fees/src/weights.rs @@ -16,11 +16,21 @@ //! Default weights for the Rewards Pallet //! This file was not auto-generated. +use crate::WeightInfo; +use core::marker::PhantomData; +use frame_support::traits::Get; use frame_support::weights::Weight; -impl crate::WeightInfo for () { +#[derive(Debug)] +pub struct SubstrateWeight(PhantomData); + +impl WeightInfo for SubstrateWeight +where + T: frame_system::Config, +{ fn on_initialize() -> Weight { - // TODO: Correct value - Weight::from_parts(1, 0) + Weight::from_parts(0, 0) + .saturating_add(T::DbWeight::get().reads(1_u64)) + .saturating_add(T::DbWeight::get().writes(4_u64)) } } diff --git a/crates/sc-consensus-subspace-rpc/Cargo.toml b/crates/sc-consensus-subspace-rpc/Cargo.toml index 9ff6acf4e8..d2f2a0f6c9 100644 --- a/crates/sc-consensus-subspace-rpc/Cargo.toml +++ b/crates/sc-consensus-subspace-rpc/Cargo.toml @@ -14,29 +14,28 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] async-oneshot = "0.5.9" -futures = "0.3.29" +futures = "0.3.30" futures-timer = "3.0.3" -jsonrpsee = { version = "0.23.2", features = ["server", "macros"] } -parity-scale-codec = "3.6.12" +jsonrpsee = { version = "0.24.5", features = ["server", "macros"] } parking_lot = "0.12.2" schnellru = "0.2.3" -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sc-consensus-subspace = { version = "0.1.0", path = "../sc-consensus-subspace" } -sc-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-rpc-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-rpc-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-consensus-subspace = { version = "0.1.0", path = "../sp-consensus-subspace" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-objects = { version = "0.1.0", path = "../sp-objects" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-archiving = { version = "0.1.0", path = "../subspace-archiving" } subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives" } subspace-erasure-coding = { version = "0.1.0", path = "../subspace-erasure-coding" } subspace-farmer-components = { version = "0.1.0", path = "../subspace-farmer-components" } subspace-networking = { version = "0.1.0", path = "../subspace-networking" } subspace-rpc-primitives = { version = "0.1.0", path = "../subspace-rpc-primitives" } -thiserror = "1.0.63" +thiserror = "1.0.64" tracing = "0.1.40" diff --git a/crates/sc-consensus-subspace-rpc/src/lib.rs b/crates/sc-consensus-subspace-rpc/src/lib.rs index 3d1b78ee8b..1dc2b1fd47 100644 --- a/crates/sc-consensus-subspace-rpc/src/lib.rs +++ b/crates/sc-consensus-subspace-rpc/src/lib.rs @@ -24,8 +24,7 @@ use futures::{future, stream, FutureExt, StreamExt}; use jsonrpsee::core::async_trait; use jsonrpsee::proc_macros::rpc; use jsonrpsee::types::{ErrorObject, ErrorObjectOwned}; -use jsonrpsee::PendingSubscriptionSink; -use parity_scale_codec::{Decode, Encode}; +use jsonrpsee::{Extensions, PendingSubscriptionSink}; use parking_lot::Mutex; use sc_client_api::{AuxStore, BlockBackend}; use sc_consensus_subspace::archiver::{ @@ -35,18 +34,15 @@ use sc_consensus_subspace::notification::SubspaceNotificationStream; use sc_consensus_subspace::slot_worker::{ NewSlotNotification, RewardSigningNotification, SubspaceSyncOracle, }; -use sc_rpc::utils::pipe_from_stream; +use sc_rpc::utils::{BoundedVecDeque, PendingSubscription}; use sc_rpc::SubscriptionTaskExecutor; -use sc_rpc_api::{DenyUnsafe, UnsafeRpcError}; +use sc_rpc_api::{check_if_safe, UnsafeRpcError}; use sc_utils::mpsc::TracingUnboundedSender; use schnellru::{ByLength, LruMap}; use sp_api::{ApiError, ProvideRuntimeApi}; use sp_blockchain::HeaderBackend; use sp_consensus::SyncOracle; -use sp_consensus_subspace::{ - ChainConstants, FarmerPublicKey, FarmerSignature, SubspaceApi as SubspaceRuntimeApi, -}; -use sp_core::crypto::ByteArray; +use sp_consensus_subspace::{ChainConstants, SubspaceApi}; use sp_core::H256; use sp_objects::ObjectsApi; use sp_runtime::traits::Block as BlockT; @@ -59,10 +55,9 @@ use std::time::Duration; use subspace_archiving::archiver::NewArchivedSegment; use subspace_core_primitives::crypto::kzg::Kzg; use subspace_core_primitives::objects::GlobalObjectMapping; -use subspace_core_primitives::{ - Blake3Hash, Blake3HashHex, BlockHash, HistorySize, Piece, PieceIndex, PublicKey, SegmentHeader, - SegmentIndex, SlotNumber, Solution, -}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use subspace_core_primitives::segments::{HistorySize, SegmentHeader, SegmentIndex}; +use subspace_core_primitives::{Blake3Hash, BlockHash, PublicKey, SlotNumber, Solution}; use subspace_erasure_coding::ErasureCoding; use subspace_farmer_components::FarmerProtocolInfo; use subspace_networking::libp2p::Multiaddr; @@ -120,7 +115,7 @@ pub trait SubspaceRpcApi { #[method(name = "subspace_getFarmerAppInfo")] fn get_farmer_app_info(&self) -> Result; - #[method(name = "subspace_submitSolutionResponse")] + #[method(name = "subspace_submitSolutionResponse", with_extensions)] fn submit_solution_response(&self, solution_response: SolutionResponse) -> Result<(), Error>; /// Slot info subscription @@ -128,6 +123,7 @@ pub trait SubspaceRpcApi { name = "subspace_subscribeSlotInfo" => "subspace_slot_info", unsubscribe = "subspace_unsubscribeSlotInfo", item = SlotInfo, + with_extensions, )] fn subscribe_slot_info(&self); @@ -136,10 +132,11 @@ pub trait SubspaceRpcApi { name = "subspace_subscribeRewardSigning" => "subspace_reward_signing", unsubscribe = "subspace_unsubscribeRewardSigning", item = RewardSigningInfo, + with_extensions, )] fn subscribe_reward_signing(&self); - #[method(name = "subspace_submitRewardSignature")] + #[method(name = "subspace_submitRewardSignature", with_extensions)] fn submit_reward_signature( &self, reward_signature: RewardSignatureResponse, @@ -150,6 +147,7 @@ pub trait SubspaceRpcApi { name = "subspace_subscribeArchivedSegmentHeader" => "subspace_archived_segment_header", unsubscribe = "subspace_unsubscribeArchivedSegmentHeader", item = SegmentHeader, + with_extensions, )] fn subscribe_archived_segment_header(&self); @@ -159,17 +157,17 @@ pub trait SubspaceRpcApi { segment_indexes: Vec, ) -> Result>, Error>; - #[method(name = "subspace_piece", blocking)] + #[method(name = "subspace_piece", blocking, with_extensions)] fn piece(&self, piece_index: PieceIndex) -> Result, Error>; - #[method(name = "subspace_acknowledgeArchivedSegmentHeader")] + #[method(name = "subspace_acknowledgeArchivedSegmentHeader", with_extensions)] async fn acknowledge_archived_segment_header( &self, segment_index: SegmentIndex, ) -> Result<(), Error>; #[method(name = "subspace_lastSegmentHeaders")] - async fn last_segment_headers(&self, limit: u64) -> Result>, Error>; + async fn last_segment_headers(&self, limit: u32) -> Result>, Error>; /// Block/transaction archived object mappings subscription #[subscription( @@ -185,7 +183,7 @@ pub trait SubspaceRpcApi { unsubscribe = "subspace_unsubscribeFilteredObjectMappings", item = GlobalObjectMapping, )] - fn subscribe_filtered_object_mappings(&self, hashes: Vec); + fn subscribe_filtered_object_mappings(&self, hashes: Vec); } #[derive(Default)] @@ -243,8 +241,6 @@ where pub segment_headers_store: SegmentHeadersStore, /// Subspace sync oracle pub sync_oracle: SubspaceSyncOracle, - /// Signifies whether a potentially unsafe RPC should be denied - pub deny_unsafe: DenyUnsafe, /// Kzg instance pub kzg: Kzg, /// Erasure coding instance @@ -263,8 +259,7 @@ where reward_signing_notification_stream: SubspaceNotificationStream, archived_segment_notification_stream: SubspaceNotificationStream, #[allow(clippy::type_complexity)] - solution_response_senders: - Arc>>>>, + solution_response_senders: Arc>>>>, reward_signature_senders: Arc>, dsn_bootstrap_nodes: Vec, segment_headers_store: SegmentHeadersStore, @@ -278,7 +273,6 @@ where max_pieces_in_sector: u16, kzg: Kzg, erasure_coding: ErasureCoding, - deny_unsafe: DenyUnsafe, _block: PhantomData, } @@ -293,7 +287,7 @@ impl SubspaceRpc where Block: BlockT, Client: ProvideRuntimeApi + HeaderBackend, - Client::Api: SubspaceRuntimeApi, + Client::Api: SubspaceApi, SO: SyncOracle + Send + Sync + Clone + 'static, AS: AuxStore + Send + Sync + 'static, { @@ -336,7 +330,6 @@ where max_pieces_in_sector, kzg: config.kzg, erasure_coding: config.erasure_coding, - deny_unsafe: config.deny_unsafe, _block: PhantomData, }) } @@ -390,8 +383,12 @@ where }) } - fn submit_solution_response(&self, solution_response: SolutionResponse) -> Result<(), Error> { - self.deny_unsafe.check_if_safe()?; + fn submit_solution_response( + &self, + ext: &Extensions, + solution_response: SolutionResponse, + ) -> Result<(), Error> { + check_if_safe(ext)?; let slot = solution_response.slot_number; let mut solution_response_senders = self.solution_response_senders.lock(); @@ -413,10 +410,10 @@ where Ok(()) } - fn subscribe_slot_info(&self, pending: PendingSubscriptionSink) { + fn subscribe_slot_info(&self, pending: PendingSubscriptionSink, ext: &Extensions) { let executor = self.subscription_executor.clone(); let solution_response_senders = self.solution_response_senders.clone(); - let allow_solutions = self.deny_unsafe.check_if_safe().is_ok(); + let allow_solutions = check_if_safe(ext).is_ok(); let handle_slot_notification = move |new_slot_notification| { let NewSlotNotification { @@ -441,18 +438,12 @@ where // into data structure `sc-consensus-subspace` expects let forward_solution_fut = async move { while let Some(solution) = response_receiver.next().await { - let public_key = - FarmerPublicKey::from_slice(solution.public_key.as_ref()) - .expect("Always correct length; qed"); - let reward_address = - FarmerPublicKey::from_slice(solution.reward_address.as_ref()) - .expect("Always correct length; qed"); - + let public_key = solution.public_key; let sector_index = solution.sector_index; let solution = Solution { - public_key: public_key.clone(), - reward_address, + public_key, + reward_address: solution.reward_address, sector_index, history_size: solution.history_size, piece_offset: solution.piece_offset, @@ -503,12 +494,14 @@ where self.subscription_executor.spawn( "subspace-slot-info-subscription", Some("rpc"), - pipe_from_stream(pending, stream).boxed(), + PendingSubscription::from(pending) + .pipe_from_stream(stream, BoundedVecDeque::default()) + .boxed(), ); } - fn subscribe_reward_signing(&self, pending: PendingSubscriptionSink) { - if self.deny_unsafe.check_if_safe().is_err() { + fn subscribe_reward_signing(&self, pending: PendingSubscriptionSink, ext: &Extensions) { + if check_if_safe(ext).is_err() { debug!("Unsafe subscribe_reward_signing ignored"); return; } @@ -544,18 +537,7 @@ where let forward_signature_fut = async move { if let Ok(reward_signature) = response_receiver.await { if let Some(signature) = reward_signature.signature { - match FarmerSignature::decode(&mut signature.encode().as_ref()) { - Ok(signature) => { - let _ = signature_sender.unbounded_send(signature); - } - Err(error) => { - warn!( - "Failed to convert signature of length {}: {}", - signature.len(), - error - ); - } - } + let _ = signature_sender.unbounded_send(signature); } } }; @@ -575,10 +557,7 @@ where // This will be sent to the farmer RewardSigningInfo { hash: hash.into(), - public_key: public_key - .as_slice() - .try_into() - .expect("Public key is always 32 bytes; qed"), + public_key, } }, ); @@ -586,15 +565,18 @@ where self.subscription_executor.spawn( "subspace-block-signing-subscription", Some("rpc"), - pipe_from_stream(pending, stream).boxed(), + PendingSubscription::from(pending) + .pipe_from_stream(stream, BoundedVecDeque::default()) + .boxed(), ); } fn submit_reward_signature( &self, + ext: &Extensions, reward_signature: RewardSignatureResponse, ) -> Result<(), Error> { - self.deny_unsafe.check_if_safe()?; + check_if_safe(ext)?; let reward_signature_senders = self.reward_signature_senders.clone(); @@ -611,13 +593,17 @@ where Ok(()) } - fn subscribe_archived_segment_header(&self, pending: PendingSubscriptionSink) { + fn subscribe_archived_segment_header( + &self, + pending: PendingSubscriptionSink, + ext: &Extensions, + ) { let archived_segment_acknowledgement_senders = self.archived_segment_acknowledgement_senders.clone(); let cached_archived_segment = Arc::clone(&self.cached_archived_segment); let subscription_id = self.next_subscription_id.fetch_add(1, Ordering::Relaxed); - let allow_acknowledgements = self.deny_unsafe.check_if_safe().is_ok(); + let allow_acknowledgements = check_if_safe(ext).is_ok(); let stream = self .archived_segment_notification_stream @@ -677,7 +663,9 @@ where let archived_segment_acknowledgement_senders = self.archived_segment_acknowledgement_senders.clone(); let fut = async move { - pipe_from_stream(pending, stream).await; + PendingSubscription::from(pending) + .pipe_from_stream(stream, BoundedVecDeque::default()) + .await; let mut archived_segment_acknowledgement_senders = archived_segment_acknowledgement_senders.lock(); @@ -696,9 +684,10 @@ where async fn acknowledge_archived_segment_header( &self, + ext: &Extensions, segment_index: SegmentIndex, ) -> Result<(), Error> { - self.deny_unsafe.check_if_safe()?; + check_if_safe(ext)?; let archived_segment_acknowledgement_senders = self.archived_segment_acknowledgement_senders.clone(); @@ -735,8 +724,12 @@ where } // Note: this RPC uses the cached archived segment, which is only updated by archived segments subscriptions - fn piece(&self, requested_piece_index: PieceIndex) -> Result, Error> { - self.deny_unsafe.check_if_safe()?; + fn piece( + &self, + ext: &Extensions, + requested_piece_index: PieceIndex, + ) -> Result, Error> { + check_if_safe(ext)?; let archived_segment = { let mut cached_archived_segment = self.cached_archived_segment.lock(); @@ -813,7 +806,7 @@ where .collect()) } - async fn last_segment_headers(&self, limit: u64) -> Result>, Error> { + async fn last_segment_headers(&self, limit: u32) -> Result>, Error> { if limit as usize > MAX_SEGMENT_HEADERS_PER_REQUEST { error!( "Request limit ({}) exceed the server limit: {} ", @@ -831,12 +824,14 @@ where .max_segment_index() .unwrap_or(SegmentIndex::ZERO); - let last_segment_headers = (SegmentIndex::ZERO..=last_segment_index) + let mut last_segment_headers = (SegmentIndex::ZERO..=last_segment_index) .rev() .take(limit as usize) .map(|segment_index| self.segment_headers_store.get_segment_header(segment_index)) .collect::>(); + last_segment_headers.reverse(); + Ok(last_segment_headers) } @@ -845,6 +840,8 @@ where // To avoid RPC connection failures, limit the number of mappings returned in each response, // or the number of in-flight responses. fn subscribe_archived_object_mappings(&self, pending: PendingSubscriptionSink) { + // TODO: deny unsafe subscriptions? + // The genesis segment isn't included in this stream. In other methods we recreate is as the first segment, // but there aren't any mappings in it, so we don't need to recreate it as part of this subscription. @@ -864,15 +861,19 @@ where self.subscription_executor.spawn( "subspace-archived-object-mappings-subscription", Some("rpc"), - pipe_from_stream(pending, mapping_stream).boxed(), + PendingSubscription::from(pending) + .pipe_from_stream(mapping_stream, BoundedVecDeque::default()) + .boxed(), ); } fn subscribe_filtered_object_mappings( &self, pending: PendingSubscriptionSink, - hashes: Vec, + hashes: Vec, ) { + // TODO: deny unsafe subscriptions? + if hashes.len() > MAX_OBJECT_HASHES_PER_SUBSCRIPTION { error!( "Request hash count ({}) exceed the server limit: {} ", @@ -895,7 +896,7 @@ where return; }; - let mut hashes = HashSet::::from_iter(hashes.into_iter().map(|hash| *hash)); + let mut hashes = HashSet::::from_iter(hashes); let hash_count = hashes.len(); // The genesis segment isn't included in this stream, see @@ -923,7 +924,9 @@ where self.subscription_executor.spawn( "subspace-filtered-object-mappings-subscription", Some("rpc"), - pipe_from_stream(pending, mapping_stream).boxed(), + PendingSubscription::from(pending) + .pipe_from_stream(mapping_stream, BoundedVecDeque::default()) + .boxed(), ); } } diff --git a/crates/sc-consensus-subspace/Cargo.toml b/crates/sc-consensus-subspace/Cargo.toml index 651293ec7e..742f729f78 100644 --- a/crates/sc-consensus-subspace/Cargo.toml +++ b/crates/sc-consensus-subspace/Cargo.toml @@ -13,39 +13,39 @@ documentation = "https://docs.rs/sc-consensus-subspace" targets = ["x86_64-unknown-linux-gnu"] [dependencies] -async-trait = "0.1.81" +async-trait = "0.1.83" codec = { package = "parity-scale-codec", version = "3.6.12", features = ["derive"] } -futures = "0.3.29" +futures = "0.3.30" parking_lot = "0.12.2" rand = "0.8.5" rand_chacha = "0.3.1" rayon = "1.10.0" schnellru = "0.2.3" schnorrkel = "0.11.4" -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sc-proof-of-time = { version = "0.1.0", path = "../sc-proof-of-time" } -sc-telemetry = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-telemetry = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-consensus-subspace = { version = "0.1.0", path = "../sp-consensus-subspace" } -sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-objects = { version = "0.1.0", path = "../sp-objects" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-archiving = { version = "0.1.0", path = "../subspace-archiving" } subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives" } subspace-erasure-coding = { version = "0.1.0", path = "../subspace-erasure-coding" } subspace-proof-of-space = { version = "0.1.0", path = "../subspace-proof-of-space" } subspace-verification = { version = "0.1.0", path = "../subspace-verification" } -thiserror = "1.0.63" -tokio = { version = "1.39.2", features = ["sync", "time"] } +thiserror = "1.0.64" +tokio = { version = "1.40.0", features = ["sync", "time"] } tracing = "0.1.40" [dev-dependencies] diff --git a/crates/sc-consensus-subspace/src/archiver.rs b/crates/sc-consensus-subspace/src/archiver.rs index c767f795e1..661caababa 100644 --- a/crates/sc-consensus-subspace/src/archiver.rs +++ b/crates/sc-consensus-subspace/src/archiver.rs @@ -64,7 +64,7 @@ use sc_utils::mpsc::{tracing_unbounded, TracingUnboundedSender}; use sp_api::ProvideRuntimeApi; use sp_blockchain::HeaderBackend; use sp_consensus::SyncOracle; -use sp_consensus_subspace::{FarmerPublicKey, SubspaceApi, SubspaceJustification}; +use sp_consensus_subspace::{SubspaceApi, SubspaceJustification}; use sp_objects::ObjectsApi; use sp_runtime::generic::SignedBlock; use sp_runtime::traits::{Block as BlockT, CheckedSub, Header, NumberFor, One, Zero}; @@ -78,7 +78,8 @@ use std::time::Duration; use subspace_archiving::archiver::{Archiver, NewArchivedSegment}; use subspace_core_primitives::crypto::kzg::Kzg; use subspace_core_primitives::objects::BlockObjectMapping; -use subspace_core_primitives::{BlockNumber, RecordedHistorySegment, SegmentHeader, SegmentIndex}; +use subspace_core_primitives::segments::{RecordedHistorySegment, SegmentHeader, SegmentIndex}; +use subspace_core_primitives::{BlockNumber, PublicKey}; use subspace_erasure_coding::ErasureCoding; use tracing::{debug, info, trace, warn}; @@ -352,7 +353,7 @@ fn find_last_archived_block( where Block: BlockT, Client: ProvideRuntimeApi + BlockBackend + HeaderBackend, - Client::Api: SubspaceApi + ObjectsApi, + Client::Api: SubspaceApi + ObjectsApi, AS: AuxStore, { let Some(max_segment_index) = segment_headers_store.max_segment_index() else { @@ -389,14 +390,10 @@ where let block_object_mappings = client .runtime_api() - .validated_object_call_hashes(last_archived_block_hash) - .and_then(|calls| { - client.runtime_api().extract_block_object_mapping( - *last_archived_block.block.header().parent_hash(), - last_archived_block.block.clone(), - calls, - ) - }) + .extract_block_object_mapping( + *last_archived_block.block.header().parent_hash(), + last_archived_block.block.clone(), + ) .unwrap_or_default(); return Ok(Some(( @@ -427,14 +424,10 @@ where let block_object_mappings = client .runtime_api() - .validated_object_call_hashes(genesis_hash) - .and_then(|calls| { - client.runtime_api().extract_block_object_mapping( - *signed_block.block.header().parent_hash(), - signed_block.block.clone(), - calls, - ) - }) + .extract_block_object_mapping( + *signed_block.block.header().parent_hash(), + signed_block.block.clone(), + ) .unwrap_or_default(); let encoded_block = encode_block(signed_block); @@ -534,7 +527,7 @@ fn initialize_archiver( where Block: BlockT, Client: ProvideRuntimeApi + BlockBackend + HeaderBackend + AuxStore, - Client::Api: SubspaceApi + ObjectsApi, + Client::Api: SubspaceApi + ObjectsApi, AS: AuxStore, { let client_info = client.info(); @@ -648,14 +641,10 @@ where .expect("All blocks since last archived must be present; qed"); let block_object_mappings = runtime_api - .validated_object_call_hashes(block_hash) - .and_then(|calls| { - client.runtime_api().extract_block_object_mapping( - *block.block.header().parent_hash(), - block.block.clone(), - calls, - ) - }) + .extract_block_object_mapping( + *block.block.header().parent_hash(), + block.block.clone(), + ) .unwrap_or_default(); Ok((block, block_object_mappings)) @@ -746,8 +735,10 @@ fn finalize_block( }); } -/// Create an archiver task that will listen for importing blocks and archive blocks at `K` depth, -/// producing pieces and segment headers (segment headers are then added back to the blockchain as +/// Create an archiver task. +/// +/// Archiver task will listen for importing blocks and archive blocks at `K` depth, producing pieces +/// and segment headers (segment headers are then added back to the blockchain as /// `store_segment_header` extrinsic). /// /// NOTE: Archiver is doing blocking operations and must run in a dedicated task. @@ -788,7 +779,7 @@ where + Send + Sync + 'static, - Client::Api: SubspaceApi + ObjectsApi, + Client::Api: SubspaceApi + ObjectsApi, AS: AuxStore + Send + Sync + 'static, SO: SyncOracle + Send + Sync + 'static, { @@ -946,7 +937,7 @@ where + Send + Sync + 'static, - Client::Api: SubspaceApi + ObjectsApi, + Client::Api: SubspaceApi + ObjectsApi, AS: AuxStore + Send + Sync + 'static, SO: SyncOracle + Send + Sync + 'static, { @@ -979,14 +970,7 @@ where let block_object_mappings = client .runtime_api() - .validated_object_call_hashes(block_hash_to_archive) - .and_then(|calls| { - client.runtime_api().extract_block_object_mapping( - parent_block_hash, - block.block.clone(), - calls, - ) - }) + .extract_block_object_mapping(parent_block_hash, block.block.clone()) .map_err(|error| { sp_blockchain::Error::Application( format!("Failed to retrieve block object mappings: {error}").into(), diff --git a/crates/sc-consensus-subspace/src/archiver/tests.rs b/crates/sc-consensus-subspace/src/archiver/tests.rs index 32ad96046d..06304eb542 100644 --- a/crates/sc-consensus-subspace/src/archiver/tests.rs +++ b/crates/sc-consensus-subspace/src/archiver/tests.rs @@ -3,7 +3,7 @@ use parking_lot::RwLock; use sc_client_api::AuxStore; use std::collections::HashMap; use std::sync::Arc; -use subspace_core_primitives::{ +use subspace_core_primitives::segments::{ ArchivedBlockProgress, LastArchivedBlock, SegmentHeader, SegmentIndex, }; diff --git a/crates/sc-consensus-subspace/src/block_import.rs b/crates/sc-consensus-subspace/src/block_import.rs index 362beb8b2f..e2792d9886 100644 --- a/crates/sc-consensus-subspace/src/block_import.rs +++ b/crates/sc-consensus-subspace/src/block_import.rs @@ -46,17 +46,15 @@ use sp_consensus_slots::Slot; use sp_consensus_subspace::digests::{ extract_pre_digest, extract_subspace_digest_items, SubspaceDigestItems, }; -use sp_consensus_subspace::{ - FarmerPublicKey, FarmerSignature, PotNextSlotInput, SubspaceApi, SubspaceJustification, -}; +use sp_consensus_subspace::{PotNextSlotInput, SubspaceApi, SubspaceJustification}; use sp_inherents::{CreateInherentDataProviders, InherentDataProvider}; use sp_runtime::traits::{Block as BlockT, Header as HeaderT, NumberFor, One}; use sp_runtime::Justifications; use std::marker::PhantomData; use std::sync::Arc; -use subspace_core_primitives::{ - BlockNumber, HistorySize, PublicKey, SectorId, SegmentHeader, SegmentIndex, SolutionRange, -}; +use subspace_core_primitives::sectors::SectorId; +use subspace_core_primitives::segments::{HistorySize, SegmentHeader, SegmentIndex}; +use subspace_core_primitives::{BlockNumber, PublicKey, SolutionRange}; use subspace_proof_of_space::Table; use subspace_verification::{calculate_block_weight, PieceCheckParams, VerifySolutionParams}; use tracing::warn; @@ -168,9 +166,6 @@ pub enum Error { below archiving point" )] DifferentSegmentCommitment(SegmentIndex), - /// Farmer in block list - #[error("Farmer {0} is in block list")] - FarmerInBlockList(FarmerPublicKey), /// Segment commitment not found #[error("Segment commitment for segment index {0} not found")] SegmentCommitmentNotFound(SegmentIndex), @@ -310,10 +305,10 @@ where PosTable: Table, Block: BlockT, Client: ProvideRuntimeApi + BlockBackend + HeaderBackend + AuxStore, - Client::Api: BlockBuilderApi + SubspaceApi + ApiExt, + Client::Api: BlockBuilderApi + SubspaceApi + ApiExt, CIDP: CreateInherentDataProviders + Send + Sync + 'static, AS: AuxStore + Send + Sync + 'static, - BlockNumber: From<<::Header as HeaderT>::Number>, + BlockNumber: From<::Number>, { /// Produce a Subspace block-import object to be used later on in the construction of an import-queue. pub fn new( @@ -340,12 +335,8 @@ where block_hash: Block::Hash, header: Block::Header, extrinsics: Option>, - root_plot_public_key: &Option, - subspace_digest_items: &SubspaceDigestItems< - FarmerPublicKey, - FarmerPublicKey, - FarmerSignature, - >, + root_plot_public_key: &Option, + subspace_digest_items: &SubspaceDigestItems, justifications: &Option, ) -> Result<(), Error> { let block_number = *header.number(); @@ -359,22 +350,6 @@ where } } - // Check if farmer's plot is burned. - if self - .client - .runtime_api() - .is_in_block_list(parent_hash, &pre_digest.solution().public_key)? - { - warn!( - public_key = %pre_digest.solution().public_key, - "Ignoring block with solution provided by farmer in block list", - ); - - return Err(Error::FarmerInBlockList( - pre_digest.solution().public_key.clone(), - )); - } - let parent_header = self .client .header(parent_hash)? @@ -390,12 +365,9 @@ where let parent_subspace_digest_items = if block_number.is_one() { None } else { - Some(extract_subspace_digest_items::< - _, - FarmerPublicKey, - FarmerPublicKey, - FarmerSignature, - >(&parent_header)?) + Some(extract_subspace_digest_items::<_, PublicKey>( + &parent_header, + )?) }; let correct_solution_range = if block_number.is_one() { @@ -477,7 +449,7 @@ where } let sector_id = SectorId::new( - PublicKey::from(&pre_digest.solution().public_key).hash(), + pre_digest.solution().public_key.hash(), pre_digest.solution().sector_index, ); @@ -515,7 +487,7 @@ where // Piece is not checked during initial block verification because it requires access to // segment header and runtime, check it now. - subspace_verification::verify_solution::( + subspace_verification::verify_solution::( pre_digest.solution(), // Slot was already checked during initial block verification pre_digest.slot().into(), @@ -587,15 +559,15 @@ where + AuxStore + Send + Sync, - Client::Api: BlockBuilderApi + SubspaceApi + ApiExt, + Client::Api: BlockBuilderApi + SubspaceApi + ApiExt, CIDP: CreateInherentDataProviders + Send + Sync + 'static, AS: AuxStore + Send + Sync + 'static, - BlockNumber: From<<::Header as HeaderT>::Number>, + BlockNumber: From<::Number>, { type Error = Error; async fn import_block( - &mut self, + &self, mut block: BlockImportParams, ) -> Result { let block_hash = block.post_hash(); diff --git a/crates/sc-consensus-subspace/src/slot_worker.rs b/crates/sc-consensus-subspace/src/slot_worker.rs index 9498bdec0c..3485c8f9b2 100644 --- a/crates/sc-consensus-subspace/src/slot_worker.rs +++ b/crates/sc-consensus-subspace/src/slot_worker.rs @@ -37,7 +37,7 @@ use futures::channel::mpsc; use futures::{StreamExt, TryFutureExt}; use sc_client_api::AuxStore; use sc_consensus::block_import::{BlockImportParams, StateAction}; -use sc_consensus::{JustificationSyncLink, SharedBlockImport, StorageChanges}; +use sc_consensus::{BoxBlockImport, JustificationSyncLink, StorageChanges}; use sc_consensus_slots::{ BackoffAuthoringBlocksStrategy, SimpleSlotWorker, SlotInfo, SlotLenienceType, SlotProportion, }; @@ -55,10 +55,8 @@ use sp_consensus_subspace::digests::{ extract_pre_digest, CompatibleDigestItem, PreDigest, PreDigestPotInfo, }; use sp_consensus_subspace::{ - FarmerPublicKey, FarmerSignature, PotNextSlotInput, SignedVote, SubspaceApi, - SubspaceJustification, Vote, + PotNextSlotInput, SignedVote, SubspaceApi, SubspaceJustification, Vote, }; -use sp_core::crypto::ByteArray; use sp_core::H256; use sp_runtime::traits::{Block as BlockT, Header, NumberFor, One, Saturating, Zero}; use sp_runtime::{DigestItem, Justification, Justifications}; @@ -68,9 +66,10 @@ use std::marker::PhantomData; use std::pin::Pin; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; +use subspace_core_primitives::pot::{PotCheckpoints, PotOutput}; +use subspace_core_primitives::sectors::SectorId; use subspace_core_primitives::{ - BlockNumber, PotCheckpoints, PotOutput, PublicKey, RewardSignature, SectorId, Solution, - SolutionRange, REWARD_SIGNING_CONTEXT, + BlockNumber, PublicKey, RewardSignature, Solution, SolutionRange, REWARD_SIGNING_CONTEXT, }; use subspace_proof_of_space::Table; use subspace_verification::{ @@ -81,6 +80,8 @@ use tracing::{debug, error, info, warn}; /// Large enough size for any practical purposes, there shouldn't be even this many solutions. const PENDING_SOLUTIONS_CHANNEL_CAPACITY: usize = 10; +/// Subspace sync oracle. +/// /// Subspace sync oracle that takes into account force authoring flag, allowing to bootstrap /// Subspace network from scratch due to our fork of Substrate where sync state of nodes depends on /// connected nodes (none of which will be synced initially). It also accounts for DSN sync, when @@ -150,7 +151,7 @@ pub struct NewSlotNotification { /// New slot information. pub new_slot_info: NewSlotInfo, /// Sender that can be used to send solutions for the slot. - pub solution_sender: mpsc::Sender>, + pub solution_sender: mpsc::Sender>, } /// Notification with a hash that needs to be signed to receive reward and sender for signature. #[derive(Debug, Clone)] @@ -158,9 +159,9 @@ pub struct RewardSigningNotification { /// Hash to be signed. pub hash: H256, /// Public key of the plot identity that should create signature. - pub public_key: FarmerPublicKey, + pub public_key: PublicKey, /// Sender that can be used to send signature for the header. - pub signature_sender: TracingUnboundedSender, + pub signature_sender: TracingUnboundedSender, } /// Parameters for [`SubspaceSlotWorker`] @@ -176,7 +177,7 @@ where /// The underlying block-import object to supply our produced blocks to. /// This must be a `SubspaceBlockImport` or a wrapper of it, otherwise /// critical consensus logic will be omitted. - pub block_import: SharedBlockImport, + pub block_import: BoxBlockImport, /// A sync oracle pub sync_oracle: SubspaceSyncOracle, /// Hook into the sync module to control the justification sync process. @@ -215,7 +216,7 @@ where SO: SyncOracle + Send + Sync, { client: Arc, - block_import: SharedBlockImport, + block_import: BoxBlockImport, env: E, sync_oracle: SubspaceSyncOracle, justification_sync_link: L, @@ -230,7 +231,7 @@ where segment_headers_store: SegmentHeadersStore, /// Solution receivers for challenges that were sent to farmers and expected to be received /// eventually - pending_solutions: BTreeMap>>, + pending_solutions: BTreeMap>>, /// Collection of PoT slots that can be retrieved later if needed by block production pot_checkpoints: BTreeMap, pot_verifier: PotVerifier, @@ -242,7 +243,7 @@ impl PotSlotWorker where Block: BlockT, Client: HeaderBackend + ProvideRuntimeApi, - Client::Api: SubspaceApi, + Client::Api: SubspaceApi, SO: SyncOracle + Send + Sync, { fn on_proof(&mut self, slot: Slot, checkpoints: PotCheckpoints) { @@ -321,7 +322,7 @@ where + HeaderMetadata + AuxStore + 'static, - Client::Api: SubspaceApi, + Client::Api: SubspaceApi, E: Environment + Send + Sync, E::Proposer: Proposer, SO: SyncOracle + Send + Sync, @@ -329,18 +330,15 @@ where BS: BackoffAuthoringBlocksStrategy> + Send + Sync, Error: std::error::Error + Send + From + 'static, AS: AuxStore + Send + Sync + 'static, - BlockNumber: From<<::Header as Header>::Number>, + BlockNumber: From<::Number>, { - type BlockImport = SharedBlockImport; + type BlockImport = BoxBlockImport; type SyncOracle = SubspaceSyncOracle; type JustificationSyncLink = L; type CreateProposer = Pin> + Send + 'static>>; type Proposer = E::Proposer; - type Claim = ( - PreDigest, - SubspaceJustification, - ); + type Claim = (PreDigest, SubspaceJustification); type AuxData = (); fn logging_target(&self) -> &'static str { @@ -526,25 +524,7 @@ where } } - // TODO: We need also need to check for equivocation of farmers connected to *this node* - // during block import, currently farmers connected to this node are considered trusted - if runtime_api - .is_in_block_list(parent_hash, &solution.public_key) - .ok()? - { - warn!( - %slot, - public_key = %solution.public_key, - "Ignoring solution provided by farmer in block list", - ); - - continue; - } - - let sector_id = SectorId::new( - PublicKey::from(&solution.public_key).hash(), - solution.sector_index, - ); + let sector_id = SectorId::new(solution.public_key.hash(), solution.sector_index); let history_size = runtime_api.history_size(parent_hash).ok()?; let max_pieces_in_sector = runtime_api.max_pieces_in_sector(parent_hash).ok()?; @@ -587,7 +567,7 @@ where .segment_commitment(parent_hash, sector_expiration_check_segment_index) .ok()?; - let solution_verification_result = verify_solution::( + let solution_verification_result = verify_solution::( &solution, slot.into(), &VerifySolutionParams { @@ -698,7 +678,7 @@ where let signature = self .sign_reward( H256::from_slice(header_hash.as_ref()), - &pre_digest.solution().public_key, + pre_digest.solution().public_key, ) .await?; @@ -782,7 +762,7 @@ where + HeaderMetadata + AuxStore + 'static, - Client::Api: SubspaceApi, + Client::Api: SubspaceApi, E: Environment + Send + Sync, E::Proposer: Proposer, SO: SyncOracle + Send + Sync, @@ -790,7 +770,7 @@ where BS: BackoffAuthoringBlocksStrategy> + Send + Sync, Error: std::error::Error + Send + From + 'static, AS: AuxStore + Send + Sync + 'static, - BlockNumber: From<<::Header as Header>::Number>, + BlockNumber: From<::Number>, { /// Create new Subspace slot worker pub fn new( @@ -837,7 +817,7 @@ where &self, parent_header: &Block::Header, slot: Slot, - solution: Solution, + solution: Solution, proof_of_time: PotOutput, future_proof_of_time: PotOutput, ) { @@ -863,7 +843,7 @@ where future_proof_of_time, }; - let signature = match self.sign_reward(vote.hash(), &solution.public_key).await { + let signature = match self.sign_reward(vote.hash(), solution.public_key).await { Ok(signature) => signature, Err(error) => { error!( @@ -889,8 +869,8 @@ where async fn sign_reward( &self, hash: H256, - public_key: &FarmerPublicKey, - ) -> Result { + public_key: PublicKey, + ) -> Result { let (signature_sender, mut signature_receiver) = tracing_unbounded("subspace_signature_signing_stream", 100); @@ -898,15 +878,15 @@ where .reward_signing_notification_sender .notify(|| RewardSigningNotification { hash, - public_key: public_key.clone(), + public_key, signature_sender, }); while let Some(signature) = signature_receiver.next().await { if check_reward_signature( hash.as_ref(), - &RewardSignature::from(&signature), - &subspace_core_primitives::PublicKey::from(public_key), + &signature, + &public_key, &self.reward_signing_context, ) .is_err() @@ -923,12 +903,11 @@ where Err(ConsensusError::CannotSign(format!( "Farmer didn't sign reward. Key: {:?}", - public_key.to_raw_vec() + public_key ))) } } -// TODO: Replace with querying parent block header when breaking protocol /// Extract solution ranges for block and votes, given ID of the parent block. pub(crate) fn extract_solution_ranges_for_block( client: &Client, @@ -937,7 +916,7 @@ pub(crate) fn extract_solution_ranges_for_block( where Block: BlockT, Client: ProvideRuntimeApi, - Client::Api: SubspaceApi, + Client::Api: SubspaceApi, { client .runtime_api() diff --git a/crates/sc-consensus-subspace/src/tests.rs b/crates/sc-consensus-subspace/src/tests.rs index bd09a10c99..a1f1695230 100644 --- a/crates/sc-consensus-subspace/src/tests.rs +++ b/crates/sc-consensus-subspace/src/tests.rs @@ -586,8 +586,8 @@ // // // // let _ = solution_sender // // .send(Solution { -// // public_key: FarmerPublicKey::unchecked_from(keypair.public.to_bytes()), -// // reward_address: FarmerPublicKey::unchecked_from( +// // public_key: FarmerPublicKey::from_bytes(keypair.public.to_bytes()), +// // reward_address: FarmerPublicKey::from_bytes( // // keypair.public.to_bytes(), // // ), // // piece_index, @@ -677,7 +677,7 @@ // #[test] // fn malformed_pre_digest_rejected() { // sp_tracing::try_init_simple(); -// let bad_seal = DigestItem::subspace_seal(FarmerSignature::unchecked_from([0u8; 64])); +// let bad_seal = DigestItem::subspace_seal(FarmerSignature::from_bytes([0u8; 64])); // assert!(CompatibleDigestItem::as_subspace_pre_digest::(&bad_seal).is_none()); // } // @@ -686,7 +686,7 @@ // sp_tracing::try_init_simple(); // let keypair = Keypair::generate(); // let ctx = schnorrkel::context::signing_context(REWARD_SIGNING_CONTEXT); -// let bad_seal = DigestItem::subspace_seal(FarmerSignature::unchecked_from( +// let bad_seal = DigestItem::subspace_seal(FarmerSignature::from_bytes( // keypair.sign(ctx.bytes(b"")).to_bytes(), // )); // assert!(CompatibleDigestItem::as_subspace_pre_digest::(&bad_seal).is_none()); @@ -700,8 +700,8 @@ // Some(( // PreDigest { // solution: Solution { -// public_key: FarmerPublicKey::unchecked_from([0u8; 32]), -// reward_address: FarmerPublicKey::unchecked_from([0u8; 32]), +// public_key: FarmerPublicKey::from_bytes([0u8; 32]), +// reward_address: FarmerPublicKey::from_bytes([0u8; 32]), // sector_index: 0, // history_size: HistorySize::from(NonZeroU64::new(1).unwrap()), // piece_offset: PieceOffset::default(), @@ -713,7 +713,7 @@ // }, // slot, // }, -// FarmerPublicKey::unchecked_from([0u8; 32]), +// FarmerPublicKey::from_bytes([0u8; 32]), // )) // } // @@ -762,8 +762,8 @@ // // logs: vec![DigestItem::subspace_pre_digest(&PreDigest { // // slot, // // solution: Solution { -// // public_key: FarmerPublicKey::unchecked_from(keypair.public.to_bytes()), -// // reward_address: FarmerPublicKey::unchecked_from(keypair.public.to_bytes()), +// // public_key: FarmerPublicKey::from_bytes(keypair.public.to_bytes()), +// // reward_address: FarmerPublicKey::from_bytes(keypair.public.to_bytes()), // // piece_index: 0, // // encoding, // // tag_signature: create_chunk_signature(&keypair, tag), diff --git a/crates/sc-consensus-subspace/src/verifier.rs b/crates/sc-consensus-subspace/src/verifier.rs index 9f0c642e55..7b66028158 100644 --- a/crates/sc-consensus-subspace/src/verifier.rs +++ b/crates/sc-consensus-subspace/src/verifier.rs @@ -22,9 +22,8 @@ use sc_consensus::import_queue::Verifier; use sc_consensus_slots::check_equivocation; use sc_proof_of_time::verifier::PotVerifier; use sc_telemetry::{telemetry, TelemetryHandle, CONSENSUS_TRACE}; -use sc_transaction_pool_api::OffchainTransactionPoolFactory; use schnorrkel::context::SigningContext; -use sp_api::{ApiExt, ProvideRuntimeApi}; +use sp_api::ProvideRuntimeApi; use sp_block_builder::BlockBuilder as BlockBuilderApi; use sp_blockchain::HeaderBackend; use sp_consensus::BlockOrigin; @@ -32,10 +31,7 @@ use sp_consensus_slots::Slot; use sp_consensus_subspace::digests::{ extract_subspace_digest_items, CompatibleDigestItem, PreDigest, SubspaceDigestItems, }; -use sp_consensus_subspace::{ - ChainConstants, FarmerPublicKey, FarmerSignature, PotNextSlotInput, SubspaceApi, - SubspaceJustification, -}; +use sp_consensus_subspace::{ChainConstants, PotNextSlotInput, SubspaceApi, SubspaceJustification}; use sp_runtime::traits::{Block as BlockT, Header as HeaderT, NumberFor}; use sp_runtime::{DigestItem, Justifications}; use std::iter; @@ -45,15 +41,12 @@ use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::Arc; use std::thread::available_parallelism; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::{BlockNumber, PublicKey, RewardSignature}; +use subspace_core_primitives::{BlockNumber, PublicKey}; use subspace_proof_of_space::Table; use subspace_verification::{check_reward_signature, verify_solution, VerifySolutionParams}; -use tokio::sync::Semaphore; +use tokio::runtime::Handle; use tracing::{debug, info, trace, warn}; -/// This corresponds to default value of `--max-runtime-instances` in Substrate -const BLOCKS_LIST_CHECK_CONCURRENCY: usize = 8; - /// Errors encountered by the Subspace verification task. #[derive(Debug, Eq, PartialEq, thiserror::Error)] pub enum VerificationError { @@ -91,7 +84,7 @@ struct CheckedHeader { /// Includes the digest item that encoded the seal. pre_header: H, /// Pre-digest - pre_digest: PreDigest, + pre_digest: PreDigest, /// Seal (signature) seal: DigestItem, } @@ -108,24 +101,15 @@ where } /// Options for Subspace block verifier -pub struct SubspaceVerifierOptions -where - Block: BlockT, -{ +pub struct SubspaceVerifierOptions { /// Substrate client pub client: Arc, /// Subspace chain constants pub chain_constants: ChainConstants, /// Kzg instance pub kzg: Kzg, - /// Chain selection rule - pub select_chain: SelectChain, /// Telemetry pub telemetry: Option, - /// The offchain transaction pool factory. - /// - /// Will be used when sending equivocation reports and votes. - pub offchain_tx_pool_factory: OffchainTransactionPoolFactory, /// Context for reward signing pub reward_signing_context: SigningContext, /// Approximate target block number for syncing purposes @@ -137,44 +121,38 @@ where } /// A verifier for Subspace blocks. -pub struct SubspaceVerifier +struct Inner where Block: BlockT, { client: Arc, kzg: Kzg, - select_chain: SelectChain, telemetry: Option, - offchain_tx_pool_factory: OffchainTransactionPoolFactory, chain_constants: ChainConstants, reward_signing_context: SigningContext, sync_target_block_number: Arc, is_authoring_blocks: bool, pot_verifier: PotVerifier, equivocation_mutex: Mutex<()>, - block_list_verification_semaphore: Semaphore, _pos_table: PhantomData, _block: PhantomData, } -impl SubspaceVerifier +impl Inner where PosTable: Table, Block: BlockT, BlockNumber: From>, - Client: AuxStore + HeaderBackend + ProvideRuntimeApi, - Client::Api: BlockBuilderApi + SubspaceApi, - SelectChain: sp_consensus::SelectChain, + Client: HeaderBackend + ProvideRuntimeApi + AuxStore + 'static, + Client::Api: BlockBuilderApi + SubspaceApi, { /// Create new instance - pub fn new(options: SubspaceVerifierOptions) -> Self { + fn new(options: SubspaceVerifierOptions) -> Self { let SubspaceVerifierOptions { client, chain_constants, kzg, - select_chain, telemetry, - offchain_tx_pool_factory, reward_signing_context, sync_target_block_number, is_authoring_blocks, @@ -184,16 +162,13 @@ where Self { client, kzg, - select_chain, telemetry, - offchain_tx_pool_factory, chain_constants, reward_signing_context, sync_target_block_number, is_authoring_blocks, pot_verifier, equivocation_mutex: Mutex::default(), - block_list_verification_semaphore: Semaphore::new(BLOCKS_LIST_CHECK_CONCURRENCY), _pos_table: Default::default(), _block: Default::default(), } @@ -234,14 +209,10 @@ where /// /// `pre_digest` argument is optional in case it is available to avoid doing the work of /// extracting it from the header twice. - async fn check_header( + fn check_header( &self, params: VerificationParams<'_, Block::Header>, - subspace_digest_items: SubspaceDigestItems< - FarmerPublicKey, - FarmerPublicKey, - FarmerSignature, - >, + subspace_digest_items: SubspaceDigestItems, full_pot_verification: bool, justifications: &Option, ) -> Result, VerificationError> { @@ -367,8 +338,8 @@ where // Verify that block is signed properly if check_reward_signature( pre_hash.as_ref(), - &RewardSignature::from(&signature), - &PublicKey::from(&pre_digest.solution().public_key), + &signature, + &pre_digest.solution().public_key, &self.reward_signing_context, ) .is_err() @@ -377,7 +348,7 @@ where } // Verify that solution is valid - verify_solution::( + verify_solution::( pre_digest.solution(), slot.into(), verify_solution_params, @@ -397,7 +368,7 @@ where slot_now: Slot, slot: Slot, header: &Block::Header, - author: &FarmerPublicKey, + author: &PublicKey, origin: &BlockOrigin, ) -> Result<(), String> { // don't report any equivocations during initial sync @@ -428,48 +399,13 @@ where ); if self.is_authoring_blocks { - // get the best block on which we will build and send the equivocation report. - let best_hash = self - .select_chain - .best_chain() - .await - .map(|h| h.hash()) - .map_err(|error| error.to_string())?; - - // submit equivocation report at best block. - let mut runtime_api = self.client.runtime_api(); - // Register the offchain tx pool to be able to use it from the runtime. - runtime_api.register_extension( - self.offchain_tx_pool_factory - .offchain_transaction_pool(best_hash), - ); - runtime_api - .submit_report_equivocation_extrinsic(best_hash, equivocation_proof) - .map_err(|error| error.to_string())?; - - info!(%author, "Submitted equivocation report for author"); + // TODO: Handle equivocation } else { info!("Not submitting equivocation report because node is not authoring blocks"); } Ok(()) } -} - -#[async_trait::async_trait] -impl Verifier - for SubspaceVerifier -where - PosTable: Table, - Block: BlockT, - BlockNumber: From>, - Client: HeaderBackend + ProvideRuntimeApi + Send + Sync + AuxStore, - Client::Api: BlockBuilderApi + SubspaceApi, - SelectChain: sp_consensus::SelectChain, -{ - fn verification_concurrency(&self) -> NonZeroUsize { - available_parallelism().unwrap_or(NonZeroUsize::new(1).expect("Not zero; qed")) - } async fn verify( &self, @@ -507,46 +443,8 @@ where block.header.digest().logs().len() ); - let subspace_digest_items = extract_subspace_digest_items::< - Block::Header, - FarmerPublicKey, - FarmerPublicKey, - FarmerSignature, - >(&block.header)?; - - // Check if farmer's plot is burned, ignore runtime API errors since this check will happen - // during block import anyway - { - // We need to limit number of threads to avoid running out of WASM instances - let _permit = self - .block_list_verification_semaphore - .acquire() - .await - .expect("Never closed; qed"); - if self - .client - .runtime_api() - .is_in_block_list( - *block.header.parent_hash(), - &subspace_digest_items.pre_digest.solution().public_key, - ) - .unwrap_or_default() - { - warn!( - public_key = %subspace_digest_items.pre_digest.solution().public_key, - "Verifying block with solution provided by farmer in block list" - ); - - return Err(format!( - "Farmer {} is in block list", - subspace_digest_items - .pre_digest - .solution() - .public_key - .clone(), - )); - } - } + let subspace_digest_items = + extract_subspace_digest_items::(&block.header)?; let full_pot_verification = self.full_pot_verification(*block.header.number()); @@ -571,7 +469,6 @@ where full_pot_verification, &block.justifications, ) - .await .map_err(|error| error.to_string())?; let CheckedHeader { @@ -630,3 +527,51 @@ where Ok(block) } } + +/// A verifier for Subspace blocks. +pub struct SubspaceVerifier +where + Block: BlockT, +{ + inner: Arc>, +} + +impl SubspaceVerifier +where + PosTable: Table, + Block: BlockT, + BlockNumber: From>, + Client: HeaderBackend + ProvideRuntimeApi + AuxStore + 'static, + Client::Api: BlockBuilderApi + SubspaceApi, +{ + /// Create new instance + pub fn new(options: SubspaceVerifierOptions) -> Self { + Self { + inner: Arc::new(Inner::new(options)), + } + } +} + +#[async_trait::async_trait] +impl Verifier for SubspaceVerifier +where + PosTable: Table, + Block: BlockT, + BlockNumber: From>, + Client: HeaderBackend + ProvideRuntimeApi + AuxStore + 'static, + Client::Api: BlockBuilderApi + SubspaceApi, +{ + fn verification_concurrency(&self) -> NonZeroUsize { + available_parallelism().unwrap_or(NonZeroUsize::new(1).expect("Not zero; qed")) + } + + async fn verify( + &self, + block: BlockImportParams, + ) -> Result, String> { + let inner = Arc::clone(&self.inner); + tokio::task::spawn_blocking(move || Handle::current().block_on(inner.verify(block))) + .await + .map_err(|error| format!("Failed to join block verification task: {error}"))? + } +} diff --git a/crates/sc-domains/Cargo.toml b/crates/sc-domains/Cargo.toml index f2c1888c66..2537d0d09b 100644 --- a/crates/sc-domains/Cargo.toml +++ b/crates/sc-domains/Cargo.toml @@ -16,19 +16,19 @@ include = [ targets = ["x86_64-unknown-linux-gnu"] [dependencies] -frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-auto-id = { version = "0.1.0", path = "../../domains/primitives/auto-id" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../sp-domains" } sp-domains-fraud-proof = { version = "0.1.0", default-features = false, path = "../sp-domains-fraud-proof" } -sp-externalities = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-externalities = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger-host-functions = { version = "0.1.0", path = "../../domains/primitives/messenger-host-functions" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { version = "0.1.0", path = "../sp-subspace-mmr" } [features] diff --git a/crates/sc-domains/src/lib.rs b/crates/sc-domains/src/lib.rs index f07a48f61b..5413a50f22 100644 --- a/crates/sc-domains/src/lib.rs +++ b/crates/sc-domains/src/lib.rs @@ -160,9 +160,10 @@ where } } -/// Generate MMR proof for the block `to_prove` in the current best fork. The returned proof -/// can be later used to verify stateless (without query offchain MMR leaf) and extract the state -/// root at `to_prove`. +/// Generate MMR proof for the block `to_prove` in the current best fork. +/// +/// The returned proof can be later used to verify stateless (without query offchain MMR leaf) and +/// extract the state root at `to_prove`. pub fn generate_mmr_proof( consensus_client: &Arc, to_prove: NumberFor, diff --git a/crates/sc-proof-of-time/Cargo.toml b/crates/sc-proof-of-time/Cargo.toml index de168c31de..21459d71f7 100644 --- a/crates/sc-proof-of-time/Cargo.toml +++ b/crates/sc-proof-of-time/Cargo.toml @@ -11,27 +11,26 @@ include = [ ] [dependencies] -atomic = "0.5.3" core_affinity = "0.8.1" derive_more = { version = "1.0.0", features = ["full"] } -futures = "0.3.29" +futures = "0.3.30" parity-scale-codec = { version = "3.6.12", features = ["derive"] } parking_lot = "0.12.2" rayon = "1.10.0" schnellru = "0.2.3" -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-gossip = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-gossip = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-consensus-subspace = { version = "0.1.0", path = "../sp-consensus-subspace" } -sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives" } subspace-proof-of-time = { version = "0.1.0", path = "../subspace-proof-of-time" } thread-priority = "1.1.0" -tokio = { version = "1.39.2", features = ["sync"] } +tokio = { version = "1.40.0", features = ["sync"] } tracing = "0.1.40" diff --git a/crates/sc-proof-of-time/src/lib.rs b/crates/sc-proof-of-time/src/lib.rs index 679faf80e9..a226b215b9 100644 --- a/crates/sc-proof-of-time/src/lib.rs +++ b/crates/sc-proof-of-time/src/lib.rs @@ -13,11 +13,12 @@ use sp_api::ProvideRuntimeApi; use sp_blockchain::HeaderBackend; use sp_consensus::{SelectChain, SyncOracle}; use sp_consensus_slots::{Slot, SlotDuration}; -use sp_consensus_subspace::{FarmerPublicKey, SubspaceApi as SubspaceRuntimeApi}; +use sp_consensus_subspace::SubspaceApi; use sp_inherents::CreateInherentDataProviders; use sp_runtime::traits::Block as BlockT; use std::sync::Arc; -use subspace_core_primitives::PotCheckpoints; +use subspace_core_primitives::pot::PotCheckpoints; +use subspace_core_primitives::PublicKey; use tokio::sync::broadcast::error::RecvError; use tracing::{debug, error, info, trace}; @@ -46,7 +47,7 @@ pub async fn start_slot_worker( ) where Block: BlockT, Client: ProvideRuntimeApi + HeaderBackend, - Client::Api: SubspaceRuntimeApi, + Client::Api: SubspaceApi, SC: SelectChain, Worker: PotSlotWorker + SimpleSlotWorker + Send + Sync, SO: SyncOracle + Send, diff --git a/crates/sc-proof-of-time/src/source.rs b/crates/sc-proof-of-time/src/source.rs index 09cf2bbbe3..b399c67077 100644 --- a/crates/sc-proof-of-time/src/source.rs +++ b/crates/sc-proof-of-time/src/source.rs @@ -18,16 +18,14 @@ use sp_blockchain::HeaderBackend; use sp_consensus::SyncOracle; use sp_consensus_slots::Slot; use sp_consensus_subspace::digests::{extract_pre_digest, extract_subspace_digest_items}; -use sp_consensus_subspace::{ - ChainConstants, FarmerPublicKey, FarmerSignature, PotNextSlotInput, - SubspaceApi as SubspaceRuntimeApi, -}; +use sp_consensus_subspace::{ChainConstants, PotNextSlotInput, SubspaceApi}; use sp_runtime::traits::{Block as BlockT, Header as HeaderT, Zero}; use std::collections::HashSet; use std::marker::PhantomData; use std::sync::Arc; use std::thread; -use subspace_core_primitives::PotCheckpoints; +use subspace_core_primitives::pot::PotCheckpoints; +use subspace_core_primitives::PublicKey; use thread_priority::{set_current_thread_priority, ThreadPriority}; use tokio::sync::broadcast; use tracing::{debug, error, trace, warn}; @@ -73,7 +71,7 @@ impl PotSourceWorker where Block: BlockT, Client: BlockchainEvents + HeaderBackend + ProvideRuntimeApi, - Client::Api: SubspaceRuntimeApi, + Client::Api: SubspaceApi, SO: SyncOracle + Clone + Send + Sync + 'static, { // TODO: Struct for arguments @@ -339,24 +337,19 @@ where block_hash: Block::Hash, header: &Block::Header, ) { - let subspace_digest_items = match extract_subspace_digest_items::< - Block::Header, - FarmerPublicKey, - FarmerPublicKey, - FarmerSignature, - >(header) - { - Ok(pre_digest) => pre_digest, - Err(error) => { - error!( - %error, - block_number = %header.number(), - %block_hash, - "Failed to extract Subspace digest items from header" - ); - return; - } - }; + let subspace_digest_items = + match extract_subspace_digest_items::(header) { + Ok(pre_digest) => pre_digest, + Err(error) => { + error!( + %error, + block_number = %header.number(), + %block_hash, + "Failed to extract Subspace digest items from header" + ); + return; + } + }; let best_slot = subspace_digest_items.pre_digest.slot() + self.chain_constants.block_authoring_delay(); diff --git a/crates/sc-proof-of-time/src/source/gossip.rs b/crates/sc-proof-of-time/src/source/gossip.rs index 4198e70f68..69af934507 100644 --- a/crates/sc-proof-of-time/src/source/gossip.rs +++ b/crates/sc-proof-of-time/src/source/gossip.rs @@ -22,8 +22,8 @@ use std::collections::{HashMap, VecDeque}; use std::future::poll_fn; use std::num::NonZeroU32; use std::pin::pin; -use std::sync::{atomic, Arc}; -use subspace_core_primitives::{PotCheckpoints, PotSeed}; +use std::sync::Arc; +use subspace_core_primitives::pot::{PotCheckpoints, PotSeed}; use tracing::{debug, error, trace, warn}; /// How many slots can proof be before it is too far @@ -143,7 +143,7 @@ where GossipSync: GossipSyncing + 'static, SO: SyncOracle + Send + Sync + 'static, { - let topic = <::Hashing as HashT>::hash(b"proofs"); + let topic = ::Hashing::hash(b"proofs"); let validator = Arc::new(PotGossipValidator::new( Arc::clone(&state), @@ -208,7 +208,7 @@ where } async fn handle_proof_candidate(&mut self, sender: PeerId, proof: GossipProof) { - let next_slot_input = self.state.next_slot_input(atomic::Ordering::Relaxed); + let next_slot_input = self.state.next_slot_input(); match proof.slot.cmp(&next_slot_input.slot) { cmp::Ordering::Less => { @@ -568,7 +568,7 @@ where match GossipProof::decode(&mut data) { Ok(proof) => { - let next_slot_input = self.state.next_slot_input(atomic::Ordering::Relaxed); + let next_slot_input = self.state.next_slot_input(); let current_slot = next_slot_input.slot - Slot::from(1); if proof.slot < current_slot { @@ -643,8 +643,7 @@ where } fn message_expired<'a>(&'a self) -> Box bool + 'a> { - let current_slot = - u64::from(self.state.next_slot_input(atomic::Ordering::Relaxed).slot) - 1; + let current_slot = u64::from(self.state.next_slot_input().slot) - 1; Box::new(move |_topic, mut data| { if let Ok(proof) = GossipProof::decode(&mut data) { // Slot is the only meaningful expiration policy here diff --git a/crates/sc-proof-of-time/src/source/state.rs b/crates/sc-proof-of-time/src/source/state.rs index 93e64b6048..3638147800 100644 --- a/crates/sc-proof-of-time/src/source/state.rs +++ b/crates/sc-proof-of-time/src/source/state.rs @@ -1,9 +1,8 @@ use crate::verifier::PotVerifier; -use atomic::Atomic; +use parking_lot::Mutex; use sp_consensus_slots::Slot; use sp_consensus_subspace::{PotNextSlotInput, PotParametersChange}; -use std::sync::atomic::Ordering; -use subspace_core_primitives::PotOutput; +use subspace_core_primitives::pot::PotOutput; #[derive(Debug, Copy, Clone, Eq, PartialEq)] struct InnerState { @@ -62,7 +61,7 @@ pub(super) enum PotStateUpdateOutcome { #[derive(Debug)] pub(super) struct PotState { - inner_state: Atomic, + inner_state: Mutex, verifier: PotVerifier, } @@ -78,13 +77,13 @@ impl PotState { }; Self { - inner_state: Atomic::new(inner), + inner_state: Mutex::new(inner), verifier, } } - pub(super) fn next_slot_input(&self, ordering: Ordering) -> PotNextSlotInput { - self.inner_state.load(ordering).next_slot_input + pub(super) fn next_slot_input(&self) -> PotNextSlotInput { + self.inner_state.lock().next_slot_input } /// Extend state if it matches provided expected next slot input. @@ -93,35 +92,24 @@ impl PotState { /// `Err(existing_next_slot_input)` in case state was changed in the meantime. pub(super) fn try_extend( &self, - expected_previous_next_slot_input: PotNextSlotInput, + expected_existing_next_slot_input: PotNextSlotInput, best_slot: Slot, best_output: PotOutput, maybe_updated_parameters_change: Option>, ) -> Result { - let old_inner_state = self.inner_state.load(Ordering::Acquire); - if expected_previous_next_slot_input != old_inner_state.next_slot_input { - return Err(old_inner_state.next_slot_input); + let mut existing_inner_state = self.inner_state.lock(); + if expected_existing_next_slot_input != existing_inner_state.next_slot_input { + return Err(existing_inner_state.next_slot_input); } - let new_inner_state = old_inner_state.update( + *existing_inner_state = existing_inner_state.update( best_slot, best_output, maybe_updated_parameters_change, &self.verifier, ); - // Use `compare_exchange` to ensure we only update previously known value and not - // accidentally override something that doesn't match expectations anymore - self.inner_state - .compare_exchange( - old_inner_state, - new_inner_state, - Ordering::AcqRel, - // We don't care about the value read in case of failure - Ordering::Acquire, - ) - .map(|_old_inner_state| new_inner_state.next_slot_input) - .map_err(|existing_inner_state| existing_inner_state.next_slot_input) + Ok(existing_inner_state.next_slot_input) } /// Update state, overriding PoT chain if it doesn't match provided values. @@ -133,33 +121,30 @@ impl PotState { best_output: PotOutput, maybe_updated_parameters_change: Option>, ) -> PotStateUpdateOutcome { - let mut best_state = None; - // Use `fetch_update` such that we don't accidentally downgrade best slot to smaller value - let previous_best_state = self - .inner_state - .fetch_update(Ordering::AcqRel, Ordering::Acquire, |inner_state| { - best_state = Some(inner_state.update( - best_slot, - best_output, - maybe_updated_parameters_change, - &self.verifier, - )); - - best_state - }) - .expect("Callback always returns `Some`; qed"); - let best_state = best_state.expect("Replaced with `Some` above; qed"); - - if previous_best_state.next_slot_input == best_state.next_slot_input { + let previous_best_state; + let new_best_state; + { + let mut inner_state = self.inner_state.lock(); + previous_best_state = *inner_state; + new_best_state = previous_best_state.update( + best_slot, + best_output, + maybe_updated_parameters_change, + &self.verifier, + ); + *inner_state = new_best_state; + } + + if previous_best_state.next_slot_input == new_best_state.next_slot_input { return PotStateUpdateOutcome::NoChange; } - if previous_best_state.next_slot_input.slot < best_state.next_slot_input.slot { + if previous_best_state.next_slot_input.slot < new_best_state.next_slot_input.slot { let mut slot_iterations = previous_best_state.next_slot_input.slot_iterations; let mut seed = previous_best_state.next_slot_input.seed; for slot in u64::from(previous_best_state.next_slot_input.slot) - ..u64::from(best_state.next_slot_input.slot) + ..u64::from(new_best_state.next_slot_input.slot) { let slot = Slot::from(slot); @@ -181,13 +166,13 @@ impl PotState { slot_iterations = pot_input.slot_iterations; seed = pot_input.seed; - if next_slot == best_state.next_slot_input.slot - && slot_iterations == best_state.next_slot_input.slot_iterations - && seed == best_state.next_slot_input.seed + if next_slot == new_best_state.next_slot_input.slot + && slot_iterations == new_best_state.next_slot_input.slot_iterations + && seed == new_best_state.next_slot_input.seed { return PotStateUpdateOutcome::Extension { from: previous_best_state.next_slot_input, - to: best_state.next_slot_input, + to: new_best_state.next_slot_input, }; } } @@ -195,7 +180,7 @@ impl PotState { PotStateUpdateOutcome::Reorg { from: previous_best_state.next_slot_input, - to: best_state.next_slot_input, + to: new_best_state.next_slot_input, } } } diff --git a/crates/sc-proof-of-time/src/source/timekeeper.rs b/crates/sc-proof-of-time/src/source/timekeeper.rs index 85fa2aa49b..88b65dd48e 100644 --- a/crates/sc-proof-of-time/src/source/timekeeper.rs +++ b/crates/sc-proof-of-time/src/source/timekeeper.rs @@ -5,9 +5,8 @@ use futures::executor::block_on; use futures::SinkExt; use sp_consensus_slots::Slot; use std::num::NonZeroU32; -use std::sync::atomic::Ordering; use std::sync::Arc; -use subspace_core_primitives::{PotCheckpoints, PotSeed}; +use subspace_core_primitives::pot::{PotCheckpoints, PotSeed}; use subspace_proof_of_time::PotError; use tracing::{debug, trace}; @@ -29,7 +28,7 @@ pub(super) fn run_timekeeper( pot_verifier: PotVerifier, mut proofs_sender: mpsc::Sender, ) -> Result<(), PotError> { - let mut next_slot_input = state.next_slot_input(Ordering::Acquire); + let mut next_slot_input = state.next_slot_input(); loop { trace!( diff --git a/crates/sc-proof-of-time/src/verifier.rs b/crates/sc-proof-of-time/src/verifier.rs index e9926a95e4..a670e87f25 100644 --- a/crates/sc-proof-of-time/src/verifier.rs +++ b/crates/sc-proof-of-time/src/verifier.rs @@ -9,7 +9,7 @@ use sp_consensus_slots::Slot; use sp_consensus_subspace::{PotNextSlotInput, PotParametersChange}; use std::num::NonZeroU32; use std::sync::Arc; -use subspace_core_primitives::{PotCheckpoints, PotOutput, PotSeed}; +use subspace_core_primitives::pot::{PotCheckpoints, PotOutput, PotSeed}; #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] struct CacheKey { diff --git a/crates/sc-proof-of-time/src/verifier/tests.rs b/crates/sc-proof-of-time/src/verifier/tests.rs index a9cd07932c..de3d98f7ec 100644 --- a/crates/sc-proof-of-time/src/verifier/tests.rs +++ b/crates/sc-proof-of-time/src/verifier/tests.rs @@ -1,9 +1,9 @@ use crate::verifier::PotVerifier; use sp_consensus_slots::Slot; use sp_consensus_subspace::{PotNextSlotInput, PotParametersChange}; -use std::mem; use std::num::NonZeroU32; -use subspace_core_primitives::{Blake3Hash, PotSeed}; +use subspace_core_primitives::pot::PotSeed; +use subspace_core_primitives::Blake3Hash; const SEED: [u8; 16] = [ 0xd6, 0x66, 0xcc, 0xd8, 0xd5, 0x93, 0xc2, 0x3d, 0xa8, 0xdb, 0x6b, 0x5b, 0x14, 0x13, 0xb1, 0x3a, @@ -128,7 +128,7 @@ fn test_basic() { fn parameters_change() { let genesis_seed = PotSeed::from(SEED); let slot_iterations_1 = NonZeroU32::new(512).unwrap(); - let entropy = [1; mem::size_of::()]; + let entropy = Blake3Hash::from([1; Blake3Hash::SIZE]); let checkpoints_1 = subspace_proof_of_time::prove(genesis_seed, slot_iterations_1).unwrap(); let slot_iterations_2 = slot_iterations_1.saturating_mul(NonZeroU32::new(2).unwrap()); let checkpoints_2 = subspace_proof_of_time::prove( diff --git a/crates/sc-subspace-block-relay/Cargo.toml b/crates/sc-subspace-block-relay/Cargo.toml index ba090c034b..df46c9629d 100644 --- a/crates/sc-subspace-block-relay/Cargo.toml +++ b/crates/sc-subspace-block-relay/Cargo.toml @@ -12,21 +12,21 @@ include = [ [dependencies] async-channel = "1.9.0" -async-trait = "0.1.81" +async-trait = "0.1.83" codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } derive_more = { version = "1.0.0", features = ["full"] } -futures = "0.3.29" +futures = "0.3.30" parking_lot = "0.12.2" -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-common = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-common = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-consensus-subspace = { version = "0.1.0", path = "../sp-consensus-subspace" } -sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } strum_macros = "0.26.4" -substrate-prometheus-endpoint = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -thiserror = "1.0.63" +subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives" } +substrate-prometheus-endpoint = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +thiserror = "1.0.64" tracing = "0.1.40" - diff --git a/crates/sc-subspace-block-relay/src/consensus/relay.rs b/crates/sc-subspace-block-relay/src/consensus/relay.rs index 6a3af92aa2..704c7a9a5a 100644 --- a/crates/sc-subspace-block-relay/src/consensus/relay.rs +++ b/crates/sc-subspace-block-relay/src/consensus/relay.rs @@ -28,12 +28,14 @@ use sc_network_sync::block_relay_protocol::{ }; use sc_transaction_pool_api::{InPoolTransaction, TransactionPool, TxHash}; use sp_api::ProvideRuntimeApi; -use sp_consensus_subspace::{FarmerPublicKey, SubspaceApi}; +use sp_consensus_subspace::SubspaceApi; use sp_runtime::generic::BlockId; use sp_runtime::traits::{Block as BlockT, Header, One, Zero}; +use std::fmt; use std::num::{NonZeroU32, NonZeroUsize}; use std::sync::Arc; use std::time::{Duration, Instant}; +use subspace_core_primitives::PublicKey; use substrate_prometheus_endpoint::{PrometheusError, Registry}; use tracing::{debug, info, trace, warn}; @@ -66,6 +68,19 @@ where _phantom_data: std::marker::PhantomData<(Block, Pool)>, } +impl fmt::Debug for ConsensusRelayClient +where + Block: BlockT, + Pool: TransactionPool, +{ + #[inline] + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("ConsensusRelayClient") + .field("protocol_name", &self.protocol_name) + .finish_non_exhaustive() + } +} + impl ConsensusRelayClient where Block: BlockT, @@ -222,6 +237,10 @@ where Block: BlockT, Pool: TransactionPool + 'static, { + fn protocol_name(&self) -> &ProtocolName { + &self.protocol_name + } + async fn download_blocks( &self, who: PeerId, @@ -295,7 +314,7 @@ impl ConsensusRelayServer where Block: BlockT, Client: HeaderBackend + BlockBackend + ProvideRuntimeApi, - Client::Api: SubspaceApi, + Client::Api: SubspaceApi, Pool: TransactionPool + 'static, { /// Creates the consensus relay server. @@ -553,7 +572,7 @@ impl BlockServer for ConsensusRelayServer + BlockBackend + ProvideRuntimeApi, - Client::Api: SubspaceApi, + Client::Api: SubspaceApi, Pool: TransactionPool + 'static, { async fn run(&mut self) { @@ -596,7 +615,7 @@ impl ServerBackend, TxHash, Extrinsi where Block: BlockT, Client: HeaderBackend + BlockBackend + ProvideRuntimeApi, - Client::Api: SubspaceApi, + Client::Api: SubspaceApi, Pool: TransactionPool + 'static, { fn download_unit_members( @@ -689,7 +708,7 @@ pub fn build_consensus_relay( where Block: BlockT, Client: HeaderBackend + BlockBackend + ProvideRuntimeApi + 'static, - Client::Api: SubspaceApi, + Client::Api: SubspaceApi, Pool: TransactionPool + 'static, { let (tx, request_receiver) = async_channel::bounded(NUM_PEER_HINT.get()); diff --git a/crates/sc-subspace-block-relay/src/utils.rs b/crates/sc-subspace-block-relay/src/utils.rs index b4569557e9..dba99750ac 100644 --- a/crates/sc-subspace-block-relay/src/utils.rs +++ b/crates/sc-subspace-block-relay/src/utils.rs @@ -15,10 +15,10 @@ use substrate_prometheus_endpoint::{ type NetworkRequestService = Arc; -/// Wrapper to work around the circular dependency in substrate: -/// `build_network()` requires the block relay to be passed in, -/// which internally needs the network handle. `set()` is -/// used to fill in the network after the network is created. +/// Wrapper to work around the circular dependency in substrate. +/// +/// `build_network()` requires the block relay to be passed in, which internally needs the network +/// handle. `set()` is used to fill in the network after the network is created. pub struct NetworkWrapper { network: Mutex>, } diff --git a/crates/sc-subspace-chain-specs/res/chain-spec-raw-devnet.json b/crates/sc-subspace-chain-specs/res/chain-spec-raw-devnet.json index c6cb26dfb2..f408ebb0ae 100644 --- a/crates/sc-subspace-chain-specs/res/chain-spec-raw-devnet.json +++ b/crates/sc-subspace-chain-specs/res/chain-spec-raw-devnet.json @@ -8,7 +8,10 @@ "/dns/bootstrap-0.devnet.subspace.network/tcp/30333/p2p/12D3KooWLdPnDksKX43hEgV4N9EeJzm6x8wPWkHCvRaFBZvj4GBg" ], "telemetryEndpoints": [ - ["/dns/telemetry.subspace.network/tcp/443/x-parity-wss/%2Fsubmit%2F", 1] + [ + "/dns/telemetry.subspace.network/tcp/443/x-parity-wss/%2Fsubmit%2F", + 1 + ] ], "protocolId": "subspace-devnet", "properties": { @@ -27,21 +30,22 @@ "top": { "0x0b41d0c7f7b4485bd7be1d66066b00ad0309b34e7d5090090c80298a2f21b68818df97b9335e11f239f8f3f8041819d42f27b60845cf209416fdba8de15f4b7c": "0x0000000000000000", "0x0b41d0c7f7b4485bd7be1d66066b00ad0b6ad2361b0842d5c935fbe7c14587be": "0x01000000", + "0x0b41d0c7f7b4485bd7be1d66066b00ad1ca7f84f7c82084ab74e8cf7f7e0149a0000000000000000de9b986aaf625c0c7017411c00a43f2a07e0cd75adda2240a24bf720cab33e1d": "0x0000404f241839560400000000000000", "0x0b41d0c7f7b4485bd7be1d66066b00ad2be0d1e0988c791ec1b4415faed8815600000000": "0x00", - "0x0b41d0c7f7b4485bd7be1d66066b00ad32214eaa0b8523eaebb7f83e73660c1b00000000": "0x14682f9dea76a4dd47172a118eb29b9cf9976df7ade12f95709a7cd2e3d81d6c0000000071eaf7bbb6555794e25f1e91037c36c7526b2cbe53dd95a96ce78dd88d1074611c6175746f2d69640000000000003c000b00c809ae2e010200d000010000000000000001000000000000000a000000000400d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d000000a1edccce1bc2d300000000000001", - "0x0b41d0c7f7b4485bd7be1d66066b00ad343a96a94e87e10c3b0586890549d05171eaf7bbb6555794e25f1e91037c36c7526b2cbe53dd95a96ce78dd88d107461": "0x000000009dee786175bd77626cbcf7ccf80423804dbc8347f9752493bc4201e5f67b7c9a03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097331a30f65bf1947032cd252677721ac9951021239c8069c3381ba7c1f64d4d0497331a30f65bf1947032cd252677721ac9951021239c8069c3381ba7c1f64d4d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x0b41d0c7f7b4485bd7be1d66066b00ad32214eaa0b8523eaebb7f83e73660c1b00000000": "0xde9b986aaf625c0c7017411c00a43f2a07e0cd75adda2240a24bf720cab33e1d00000000429eba4dea4bb26f99f9dcf7895d662a714c074bfadd793c640b61894dbf05991c6175746f2d69640000000000003c000b00c809ae2e010200d000010000000000000001000000000000000a000000000400d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d000000a1edccce1bc2d300000000000001000010632d5ec76b0500000000000000", + "0x0b41d0c7f7b4485bd7be1d66066b00ad343a96a94e87e10c3b0586890549d051429eba4dea4bb26f99f9dcf7895d662a714c074bfadd793c640b61894dbf0599": "0x000000005f215c13236b87a2ed3b322e6623a94e4feb924030774e8800adf068ed235dbf03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cdcdbcb62c5653ea137fdba71acd275bdbafeb72224ad01852603a5456ceb89e04cdcdbcb62c5653ea137fdba71acd275bdbafeb72224ad01852603a5456ceb89e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "0x0b41d0c7f7b4485bd7be1d66066b00ad34a0a3fbf14e6c92456ca7bd91d59a570000000000000000": "0x18df97b9335e11f239f8f3f8041819d42f27b60845cf209416fdba8de15f4b7c0000000000000000000010632d5ec76b0500000000000000050000404f241839560400000000000000000000000000000000000000000000000000404f2418395604000000000000000000000000000000000000000000000000000000000000000000000000000000000000d01309468e150100000000000000", "0x0b41d0c7f7b4485bd7be1d66066b00ad412c320296dfb8501c1ff1e74ea7d11f00000000": "0x010000000000404f2418395604000000000000000400000000000000000000404f24183956040000000000000004000000000000000000", "0x0b41d0c7f7b4485bd7be1d66066b00ad4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", - "0x0b41d0c7f7b4485bd7be1d66066b00ad74a614db8021c6bd0a028aafdf29dd08000000000000000014682f9dea76a4dd47172a118eb29b9cf9976df7ade12f95709a7cd2e3d81d6c": "0x00000000000000000000000000000000000000000000000000000000000000000100000000000000000000404f2418395604000000000000000000d01309468e150100000000000000", - "0x0b41d0c7f7b4485bd7be1d66066b00ad78eb157453dd150fae6ca26d23f578bd00000000": "0x000000009dee786175bd77626cbcf7ccf80423804dbc8347f9752493bc4201e5f67b7c9a03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c11131400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097331a30f65bf1947032cd252677721ac9951021239c8069c3381ba7c1f64d4d0497331a30f65bf1947032cd252677721ac9951021239c8069c3381ba7c1f64d4d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x0b41d0c7f7b4485bd7be1d66066b00ad97fb823bf9adb508c9dce443eb1c0d2e": "0x000414682f9dea76a4dd47172a118eb29b9cf9976df7ade12f95709a7cd2e3d81d6c", + "0x0b41d0c7f7b4485bd7be1d66066b00ad74a614db8021c6bd0a028aafdf29dd080000000000000000de9b986aaf625c0c7017411c00a43f2a07e0cd75adda2240a24bf720cab33e1d": "0x00000000000000000000000000000000000000000000000000000000000000000100000000000000000000404f2418395604000000000000000000d01309468e150100000000000000", + "0x0b41d0c7f7b4485bd7be1d66066b00ad78eb157453dd150fae6ca26d23f578bd00000000": "0x000000005f215c13236b87a2ed3b322e6623a94e4feb924030774e8800adf068ed235dbf03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cdcdbcb62c5653ea137fdba71acd275bdbafeb72224ad01852603a5456ceb89e04cdcdbcb62c5653ea137fdba71acd275bdbafeb72224ad01852603a5456ceb89e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x0b41d0c7f7b4485bd7be1d66066b00ad97fb823bf9adb508c9dce443eb1c0d2e": "0x0004de9b986aaf625c0c7017411c00a43f2a07e0cd75adda2240a24bf720cab33e1d", "0x0b41d0c7f7b4485bd7be1d66066b00ada23d4b599b58b64952369ac318be446200000000": "0x0000000000000000000000000000000000", - "0x0b41d0c7f7b4485bd7be1d66066b00ada5d8128b7b9e3d7d2dd94677b677dd250000000000000000": "0x14682f9dea76a4dd47172a118eb29b9cf9976df7ade12f95709a7cd2e3d81d6c", - "0x0b41d0c7f7b4485bd7be1d66066b00ada89273685860d998fdf453e8ecf3289700000000": "0x1c6175746f2d6964010000000001000000c6d199aa7187a5c2c5707d6ea538d0f216ef24cb945ed3a69f911ac4fdfb3c05548019bc6099459d33e46fffbc8449a0e7014e7b9012096b41c4eb3aaf947f6ea4290800008026aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea4290800008026aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b71004018026aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc804545454545454545454545454545454545454545454545454545454545454545b026aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a000000008045454545454545454545454545454545454545454545454545454545454545458026aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf43904018026aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef864005c73756273706163652d6175746f2d69642d646f6d61696e143a636f6465d2751d0052bc537646db8e0528b52ffd00581c0904feaa441b0f54200c4b4a073db502aa03cbde55865b8102082618c26d020980901012a505044555880096b94b71a855addfb7c23f16c8f0fdcc531f68f50cd5c533aaa01fee4a09fcdacbf2df3c6ba4edbdf7de7b4b29a54c49caba0f580dbc0d5f7f7cd58cbfe6fa3d6706c944233cbb0fb06864bf66a7571c61d943a8d98eafcefe541c9b2acb9e337d4897dd90d94b15a635a5e2b1bd5026cb975e94a9ad0750c6a2b4c932b3ba357240dd1a59b9bf1f836edddccfa385a6907eb05b3216254deeffe95613197384cc40e6a1e6ba25bfff479617c0e69c5d36f9a0fcf932dbb28cb5b025ff54b0c9de64defca78f73fa4f7fa3393f89fec8e5fe8d86337bd839c601eed638b3bffc8d05ca971d1129e2ad391a7af69066ae2a3bb9398595d7d943cf9de4206932652710c829584e729034a5720a5c9edf2fbb1028d3ec3e0099f27cae5b1f4ca63c7fa87db6149bccb85b63bfbfec9f3ffa6f1e0e00ecf710fa8d5cc4cd920f9b53029bdccc8032d642952c632c30e5f1cbfd0ac832b6829abc7db2c708e67ed92dd9ac1167f9b2856407759b0be07c19639292fb87ba9f76eb7e3fee96cced7f7fbbe1ccb3bbee81bca18732df70e66d76fe9b87afe964086d16fd0fc0ec3f3b0f64e69a35ab38c272c57ec391e691fecbb37dd90da93fd4db263b22561c69b68fff86e3e7fb1e8ee338fa094dc627f9be6cd6fd21c7a11315b2ff0d471e99fe36391bcaec21cd5e43279efd6928bb212ed266cdefd1a21198e505b03bdd69fa9c73cef7a73fe23c1fa8c39967ffeca6ee8fb38b1680e04fdf9f8aaf99fb5d1c67ee49e71cb3c96ed1faa37df95b0dfb6d88f346bb3533ed167df9dbdc41644c189981ccdb945dffd65cfd1d3e7140fbf5e97b37848a72f6106122aa5932f7d7503a47c399bbeb979d1565378436cb7fa865e781ccfdb21b327fa86d48730d65a6e1cc309f336a930800e7cbdf640f5076f2875afa6cb2c7f8d99f76ab5fbeecd67cf91d6e920020d82c7fae59feb21b829be53fd40500c79fec23cefe40dda2efbffd74cb9f47b7eafb6f93a3a1ccb2ab3fd443dd610a02c84a309ce7e33c450b40e89fdf3fc5d7cc5594cd924fc3993749005066996517c2fc16c7fef9432d7bb8cfe9c426371e40195ba14c1e71960fb61015221f774bc698c464f95cb766960fd42d99e5cb1e5234fa2c2f80cdc9c1266b0fd72ca066cdaf59c69898f24fb3e6cb0ab64dca1e224c40354b66da2cf9b21b229b257fa8258f4df6267d80f3e5cbcc478d078e48a3addeace0acbe5885b102631bb331b18a5a75b1aa62c56665c5ca8b159ad5142b275663564aac98582db12a6265c42acceacb8a88550eab2d2b2d2b1c5637f4c8b18ab2aa6145c34a88d5959e3956555653563dac5e58c1b0c2b27a5af9e001b1b2a107cf27f5adf9aaf8acf8aef8d47c65be283e331f149f131f99af896fcc97c417e643e23be203f319f131f12df129f1d1f0cdf079f982f880f87ef8ba7c3e7c62be1e3e1e3e2edf0e9f0e5f0edf964fcb87c377c3f7f415f1c1f0357d533e299f0bde1a1e1c1e1ecf0caf8e87867786278617c7fbc2a3f2a43c1278607861785c785d786d3c37de181e1b2fcacbc2d3c29bf2b6f062de139e19af098f8c57c673c28bc2dbe2e5e069f1aa784d1e0e9e154f068f8ae78297c5bbc18bc19ba1c3e3b5e0b1d0c9d1c5d1c1d1bdb1cdd0e5d9dc74763a373a3a5d1b1d145d149d99ae4cd743c74387a5b3a1a3a193d2cdd0d5d0adb0497175b834b82a0e0dee0c2e0c8e8d8786f382eb8203839bc2838213838bc349c1a5e1a2e0a0e0ca7063b824b8301c12dc11dc19ce0be703b703c765eb621b63f3a21363bb625bb3d5b069d9a8d8b66c5136a7ad89edca46c346c416c406c4c682268786478b4383433b43aba3ddd14aa0b9a1b5a1bda1d9d1d6d0d4d0aab43434343432b439da18da19ad0a6d045a1a4d8de645d6c31d4363539ff8c4d048a0b5d1c864546476b42d34371a1c8d0bed8a2c8ea605c6428be1286d0a2d8b8c8c8c4d36f5c532356e0c17cbf74436c732915dd12ed433570e3da3c5e8292b87c593059135911161a96856645fb21fb222323099101e53e6a5e77835644364406464b22ede0a8d447f693075896fcaa3215b4391c8aac8acd09ab862e038b80b4c022d0a9c05d6c2cdc06cf09a3b656fc06d301cfc4673026f81dd602f30175c973b8306e581c141744df807ec06a706e68265d0cc5c352e1d8a86b64643639b2e19378d4bc5c9e1057171b067d838342aec1a360dab467bd1706cd5f68693b256accc6851760a3b82adcc6625536367b04eb68ba5c1eaa049d164581bec168bc5e660b3646f5012643be036322e6d448d035fc978c8b2b064d4296aac9aa9505434954c1fd163ba343827564f70318c8513c329d14db498ea834563e3a2e680afd0a0a072d035b432348d4e83aa41d9a0551b13470666ca7ca051684fb4133727dba252f134fc0c0d8b2e066fe35a50266c8c2e61d150253c8b1ea3e9f4993693455d2aad4407418da061e811144c0be1ade9d0e819fa8586a1a9b4940e06fbd44f9da5b1389b950b6d430f81a7dc29b7066ce7437369b836dc2b9916580a6eba3264705633645f3413aba6dbe458e02ab09ad5996be556c130ac7ea04574115f154ce5a3729d7a8915955513f40b6da29dc8b0e8246e18762a83038ba175aa9d7b45c7d461b23a4d86fba153e3635a65a1535dd516075b51d7e0d658018197b86b32343caa12519bb236d91add191c5513b1d28103022bc18dd165e89c1598ac862a044dc28e41cde0a63836bc39e8185e9e6c0c6ca6ab825df8ced421aa942c8d8e8d559795944d4eb786770567c78ba34eb167bc37568cca0627a7b3e2b151ebe017da8b0234484006186c24b820fc71000388946a9b59ce4c4dd6ee52424202511324ae138888b6e94a905c44445a27a6a74b8204220b3a24747447805d9855678424a1c912264926e8c0c82628bc5c4a444a5c2f2514925e444a9030395a7545c817926b890920302262f2222281c91109135021a4926b091224220ba817f97229b9929a10bd5c26544083904a8e8a502041a948c985e422b283029101fd411e1d214942c444090a4a444a4c94a090812e01a03e48a5231712129213921029b180f6201140799050901cb99288941ca1c0e4042502502e06a03b48252e24138a9490502012a90e52c96502122525d71228488e5c18a880e620950e40b7b894909834517225113d6142025201a896274c4878a1c04400140725ae25494525203149e283de2045fa2495141d2159a2e4099152115151935c810b68961e148bb4412a25b94aa0805e914a45471f60727484a4090a10a03548d70b0a091c501a66902f259709454a765027a9e472015119a4158924c94564018d41068056912724792169a254a484c895d484888912222548488894a828155d409b649325485e4aae2545af03d029f2950485a4971212932406a05234a030c89712d14b8949132205d017a492eb85a448896b4992eb85e482749980842489e8c98b08a9e88457d10788948a9e469149ae57122449af27ae24261190000fdac2092f13905c472c4897ab0422262fa2d7092614b93e104457904a4745485e2e25442e570905a04c92490948454450925c2838212a6a925f48ae25509088f09e47ba9220314122424254d424bb922031b1c00b09052649926400f81c027039a412149711919212141708484c8a94945c19081d8ffc001113a2a22639c96594c4a4034845484e4852420921841e8774bd9028293a429202910b05170a17d0801297092620d1c0011c0ea96494c475429237a4d20bc995e43a01a9e8fd8e055e0299a44809a928e9f5c44504e5a849132444492e2547452808314ac2e448080f77432aedf0362412221e6e472e2142f242a204c9cb55811e67a3e8558454a4c3d790ae170a495c4f5c2b574332890027a7eb8804242f24144a207a2571251529412a2222aa40022b31ee14636259c236196362ca13e615584a87d2994de6a5b5d60a56b056109c6002b076f75c69eebe511f9a9f53a794766b9c5d693da9e3ee76bab94fda4dabbbd3764aadb5b55beb96d6dd9bdaa6d45adbd5ba7b6f1ab5d65e792595d2baf4d995ba94545ae994474be91ca51ceda6d6f2e0d174caeb7d29b557ab8db596dd5da56c772ba575cd764b6bb5a6566e525a2aed742abb764bef6e08b46dda6dabad735a6b71b5d64a89a5535b6db5d65ada596b3f4d6aed2e800738807274d3a4a5166cd4caf656de4a725eb56073d768033677db9a959cb5d25a6a2dad4ddd4a496577cb4db695544e39adbb74293589a777379df493b2696bb4bbdd3d889c964a696db5b639d07c869a6500106bade6d6dddd76535bab67abf6512a354d13c5afda50a8556df556d552b900bbc1a5d37d5277ea9bd3e96ee52615f063a5a51a246055eb77d65269a5bcd7dedb524a4d732a35a95177d7a44b39bb7bb6fcd1d6bd6ddbba7d73a7ddd65a3b355bb969a7ad9bd63de7b455f3417f7e7e7e2cadb6b6952da5ecba4fcee9d25aebf2a5d55aeb96524adb4da9a556d3344d9308a0d67637a56d29a5d5ada519ecb0b55229a5a4946ab59bcab6746b2b27b5d6b3dd52b6cbee965b63d0dd00b0d6d26bad94b22db09bb55b7fd2a594f600b2adec6e1d3a64dbb6525adbb5b4f2b6ec6e2969cf96b2a5ec6bfb3a7529e99452cab69452ce4a29757477cfee6e2a65cbae9b9d9406f00a82ba0a76d06e47b7b4526e9e00589bd7b2a5949cb49db96d29ad94b225dd64756ff3292fed6ed9ed92763795dd9452ab356d6bbb526aa9b5b227b53d65b7572a29b55276b795525a6b7bd6eea680faa44e5b6bef02b4b7d615b4d65adb2a6db795b6b6f4a6d74ad93e6a7cd6f84a369424264b5c4b2c014a60c224a90951d29225414050748404a9a80422a3244c8e482052424109c9a584c424099152d19225444845489630514244830b0690e442729990a434804c6ae0525272253559c2240951922b0526495c494448949424711125c0a8b5000d9a247129090580010958c0023450e22262f26a022529c9052250092f1400e03a81e8855494d484288952d1121e3d94b8925c4a929810b516a081ab28e96580b92400d29554025112931792244c8e8e90f0d8a00580274c3ef00a406b011abc0f100d1240a481cb08c91109442620159da084e4844f42f2522a00054a1500406ac08449d20ea3244848383a62926480d7131752007a5e2e132af0517a29153d71f1b83201484c8a5e4990282121497a11bd8a962c61c2ba406af0a4a80457521311280989eb2889051428417235698284073e72a5e03a227a826489007498c0e488c804a422134c60725441120a2f2448261429114129a128c9950210d70b4992a2128a5e49ae24444a24bc885c4a98247129515244c4e4850212a2d713d703524072798f4c0011129322a524570a44505c46442e13902431792911bd5c2610b992202921c9f5422a22722d297a21a1904494e43201c9a5a4e45a42f47ae262400a482e0fb72a2d6130985c5aba7d44c232cf8ec0264c0598abe0f32d2d513f2235186c0906f32372090683d1a5a56de9dea5a53e029b4bb0ee234b73694905183e029b4b4b30d8d2120c668fc0266c09e6479696607d44c260f888acb28f48d8d2128c1e914b4b4bb0b9348fc0e6d25c9a47e4d2d2d212ac1e9130d83d029b72690906a34760d3c2ea91257944ca23b0e947240c0683d1231206eb23b0099b47246c1ec9548729a59c4b9490c838fccc69dde32ccbb6e4d1334ed37038d28cbfa574951964fed85734aec3ede4bdf7689953f6ff993d7ead47c76b8f5de8e735717c51ed03fc9996651af6ef2ad307ce5ecbb296d22cdc56c02c037b409f07b3ac67f5998fd803c2f62b2f0bc71ef0372dcbb2cc29e38cffb382dd45ee354e34da3e7bad7beeb74ce6b6523f7be942f4b3dfbc1fe7989cfd36b919a65bfdd94f31ddf2cfaa9494086e4050735b9941c29a774849c17123821b108061f65f28b317b695e923fb2d1ca1e4cd66fc595845352575840a8ac6b595198466fc3b6494374e371973e16cd32cfc5d38a39a855f4738e441f87f6c5b9941324d7bda5520fb4e0cb96dfb9662e53a6d5a26b695e9035fd148c6baa6a00455c6dc7196657fbfa57aaa6a5a53e15a33fcfdff38acefefef3da7e7b454cf8965938ec09f3266ca14cba95abfebcc6ec9fa4d55dfbb21d59fb2dee6ffea41ee3b1ca159d4ebaa2842b3e83ff5cf7bdce76fa88199596bbfa76cb5b6fefd9eba5da7da9bdd9e33836c5feb8fb5d5fedcb7d6da1bda5a431168add63655ad590db35a5beafb0eccce5255ee6fa99eaa5d2777de7ae6aed375563f6270d62956ae86459a45ff01e028d364fa12e8967dfa1e74ab3e7d0ad0dadd76f268ab766f0d479aabfdfe9ef21a8e5dc7de9ad59e63b77bedddea5f8c417004ca97feadd7d65ac59e9a3eeafd21cfbaa59a55df85de83e8fb88235e8923ee1147101447f0134720fa9bf7f8ad387a6f372facdf85d752659cb76badb5f6b3ed3935c6654c182f20886561cd5cea735b7d0d045e68bfeb39d387ddb4cce6fa36948ab9c9f5b7fa5afd0c0a7dee47a0cf94e6fad914c185269307d5afcf8923901338a5d0ef393f7fe3eacdb2cce8befd5ab3db523da73615be54349a4c595e00eb9916b0d12d2d6bddfa5de95b71fc80bea56fbfc808a26cd650db50e61a529f38605bfa951af91bd2d742d9acfa59489b554522f78dac884523d3473fa52fbb2174a83d3402cba64b994e3f72d58a8c60c4da5762ef1719e17e112347ec74ea8befb5df18741d74ee44202ee4d1acfa367c1cf66059cbb9bbe377b77e1b60f1d7df30bed6622ca59cfb4d76f76dc889a32d32c20c62ff56c1ea2c51e5fb4546e030eeb0e36b64ce5722a7e60fb5158db01a706bc6f8e2d0e61b82d98623946c9febd67d8df35601171901cb3a79bc595764049753967329e5fdfdb0f88946f6fdf1ed1e637f8b3db7d6fef411a60f8bfb8a45b6cdf336ef3f717bd955207beffe506ff7de2ba5b6f0bee6fdbdf7b7fbb21be28946a68ffb436d6406a935eff8c1c200045be8bd6664faf08ccc2036dbf742203f368062e48eac2e7cd9acb147b6f78dcc20571c43908d4c1f760bed6b46f0d36ef9637133ca40b88fc5710e75112352cac836575760a79cd9227ec485b697b5d6bf6a70f78d728bebe36a3f0ba1ee1a1b6a59b5bf85d883ac38bea87694f98f77cd5d73a1ee9a99b597003365dc4eddfabc978fb799ef63bf6d66be5f3b221c96397bb9e64675432e666a167eef8660517638bf276c291e64bfbb0b54212bb1993cc882f6b9708a6996fd2c9c5f6638c36c1cc6184b8cef67d9c57defbd175f10b8c71df6626f38ce91660e63ee879c0bc71b75b3df6e388aa0e3fe862d8e9448f7f77138821973f73929189c253799fb0bd5b74de6c411639a3bccfd5067a113cf58bce1cc3f7f3ef6dba65b3dde3679fe78dde439e79d99b9f937146bb6bf3577c319a659f63900c7b925dbe7c2114ae67e6e995cbad5c5e2cb711c9c3ce2db65d9fd0bd52dfcdc5f3533c87c4ebc6d70d60df5ed426871ec7c7f8e372adf3578cbb8cfc4f14665fc3feffccd85563d387bd97d709f9be16f98e37e8e33675c78d54c1ff7694784fb6c82e1087258bc50cdbaff612c76da7fe07fb8138db4df1e3f2876bf4d0e6bbf71da77df6f5f78df0b338ee3f08dca386f98934fe7cd32f1fe78b34d34e21e7ff6dd6fbf65dc1772efc97cd7cc20e3942ee4cf3d7621fadc0866ee77f880d1fd38ef64eeb7d9bdec38a92ed4c29a6bbecf8535ef90a25222b87902c117e2f74299b9f0ae993ef06be108256b6ff37d1c723fca2aeec7eae5081547a5387184a271a38ca2f9caa87c7f3e27a132bef357e19007ddef9150f9be1d3d2adfbf6b42907ffe56b91d3e71400995fbb3a75d05f077e23833f759381e49a8cc89581c67987c35ed2fd45d736f949661f1ae993eae158ddaa9615b5720a57ef279744b7bf98fb997ff0354a45bdad79f52757bd76ac59a07f583370ede3ed3b6f7afcf8552068d2fcff77d035b13ef670e4e3945a69c09d39ac2d05764b7b8edf1cbdf8a4ca929047e77ffa4f28e885b99efcb2232f7cfa9ee86745fb13fbb21d70269567d3004f2a0fa2d7eb3eaf7843d3aa87e871834abfe0d7f34abfee466b8815b6bedabadedbff36f5b9bd9ee6edb0d82bfedc2717ecfb9d99052aec3718e34bbb5e39ccae3abbd1b727feb701441ce7e939d7f8799388644b46fef773bb0aaa53ad9bf48f653aa3f9b54d9c5d1fe94b9439a35279eadd8e1cc53ce0cd23fff480bf5fcfc49d52d6d9c5479fe38ebe4f93ee7dc26377f846e65fee3cc3ec50d9a551f083872f539f0c7c39a6d5873873fd9863677c8237b3842c9fe5cb7acc665de2a54e5d17ea6dd5b644af9a4b277a8b32e84acb51fe754f7d6fbf1d523ce571ce754b67f9fb650cfdff7fe8a3e2de88946fe3ddf66423d3f4aa97cc5f188935208fc7ef7b7dbf4f6a7dd0735fb6d0fa7d4f4e17f5f0be7bb158b34abbf83ec37ce76e2c8d94e34c2dfbdb558e37ebbd85a3ba7b8d0fe2633b6df5bfca3a4ca76c49afda1c621b622fe89b1e5705873adb9cb8f2d4f2c107021f7db94337d708fc3114ac6b93f0c2702f1d2e50714cc4d393308cdfd5a48f30e9f38e01197ed8ff329b74f1c707e4f389d3aa83f0b679566f583e1cba0b6561c43907ff66f216d968493af9cca57ec232e6bf8ef8f475ccefe8aa38493fb3d6ba2117efbf7c797e7ec5b0a7d7fed67f886e3cb336e8cbfc89433a7320eef94337df417ca5896172c394ceb09e6b8c95cdef04ba9dc2c20ff0388057e7df91c482b80ff8ae307f8efdf9f5d08f86ffdec7ef6db0ff90c69e79bbdd7a71d91edaf68749fbe6ff5df8544f0a0fe1f1ed4cffa91db7ff47dc73f6a55f489033a7ea34c9c5d085cc62fc2f6fd3fb2ef4dbcaf4501018da03716472558beb5d2d0a536ab1453a6f28f2c6353c464a84cf326b71c40198381aa0a97bc802c6354a8a654ae599ef38180ecd32ddd9a6fedccf665dba71d917eeda9f62e337e69edd3a76ee1b7efdd100ba585b4592eca66d1dfb62d9cffc385a653932fd6e1fce2a038a39a557f3a755fbf89f6b5fbcf1347a04dec20177138bbcc6d6b7777b9b9dbc7d8fa261a494cb1cc20de5bfbb95b77ffdeddadbbfb87dfadbb8ba3757710fab127522c369c5ce63b67c3718e34b7bb289bd53fe41d763704ff66c35104f9fe26bb7e1b5eb14322dbdbf77004b3b7fdf602ebb2c425f7fc2b826cffd22db9c521f750661bd2bc854e6e1e3cd95f761f380e9d787e1bce4cb7746bfb697f8e744b9e3f522e79feec39e79cf3f39c73ceefa916fa717fce975ddb29d65c7f6bce86d34bb3eab7c00e4728d9bffe4fb7ecd707ea96cdf537b9594e7644a638d23cffbe0d47307babf02477c9a3ffab3ff0ac617184653cdf86d4e9ca0c32bf45d92cfb436ec3916e119d781e67d686ba76215c716cd9aded47fa94fdbd73f7e3abf37cfc23eec7e2489fb23f97f153fc783e76dc6f1fcf3a423f3ca8fed85319bfecd6c5fd8eb1070d79507dfbddefaf85e3ccf66738ceeef7ee839afb6748b30dc799b1f5a757a60ffbde11e9c73fe45b38bf4399b5b00bc7d92657ead42cfbc385e4900b81db0fed47ec3f827994b151c672ed967df9b45bdc672f7fb321f8b323f28489898929df972e740474a1269b3862ac8923767104f308b63802e511ccf53710ec3c50d334adeb5ef34010b2ef44279e274fdeb470047f0343fb5c88b32d0a50c6a840e52d6bbf490480f429d3bc5d0e0cb52c9419e76c7b2dcb7eecaaac699aa6bdf6e367edb7c9699aa6bdec366dcb429f38e0e8314dccb26cb35c16d6fc795d5663b19a6fe861c4700141996cff1b93ed7b61b2fdce4bb69f8161f75c28f316522cd347f7593842c9d96f36aa13a56ee8b13431286adc444165fb1be68eb8d0746ae242938b07d5afa0d4f72390f723d8fd88f328ab32cd76f430d9fac401c7c925db9fbf8534dfd0b934cb3eed42e0b2f6d3c985bc4b4f2e2e34996490fdaa896308f24fff92ed834e4fd9fe278e404ed9be278ea0f42925dbefc411e77172c9f5378ee342daac71e6fbd67f6ca9dc23cedea2fd8de62dfbfef145b32695ed261a657f1fdbdf268731088e40b97f04caf8a5149232a81fbfec2a701f87a2fdada9b7378620673fbb0f9cba25f37c8a650691797eed864cfa94b31087f4832d5f9162993eac289b35bf8a46532acb0b60dc2c809dfe6d93dd1447589e2fc3fa54c6645696312a4e316cc905c83256c54edee4a60328634e54b9822c634e6af2e65cc543efb89dae9a598a5da759fe2dd52d7ff93d3583c82cc5a66a96673f36551e5f2d479a5f9dedcb1f33f1d519bff4af5d0733cf972ec4fd88c11f81b214c7edfda50b752fdfc3de67ff81df670f86d283327104caf2a50b490fca5efe0794b3f7c09c7d174a0f1a71ceb2a7cf85d283a438be6abe2fdf439f38e026be6a76ede9d7ef8e88917d9a5d34d2c471e6ecfd77f88001be6ab601dff7645f430e14c72ffb09d5ad4cbc6d9a25668e9965666ca651d3ad0927aacd15af9ae9839b9c887f86db76a1388ce7be0778a653b7a678dba8507f5699577e2600da0a02e56cd80138f328a5aa78d71c756bd6fa5a8b6a516eba35369ca8366aea859a97ded7114a9ad9aff731bef46b73e9694f8d4d52ad4a0e66ee1f5281d583169c6f6d361fb4d99415c7ef33d9f37dd9833f02087ef6f58846f357dd8fa0f8ea3cb3f78e8891cfafde7adccf7fe108666f159e80e0f743fe6d3a1e04bf6ffb9e1e11149d7836d201fecfcf0fb58eff7488e3ab778caf972d34c167e0ff4c10ca0e027f7b2333c8eab3dfbe70158e9ecf6f9623b25d6e0868e47dcda35493fda74ff6de17e956063e0534d02d5084118e28e9d6f4c29ef709bdefba9538f688a20addb2a292666dbfbdff51133094f9f56432756bce28d97f56994e33ca94d2adf9597184e9a37b2f9c9db80df93841a0dbc694a7952c6356aaf2d69c1652f963762058223fac28816e4d51c9ffd80048b764f66fc09007ddd2b490fb001c33102837049c79fcc93ef338c54c1ceaefd69c33dbb2f7efc1c2a0494d6ed2ad716ec9fefeaf3ea15b32d69426fb1f75cbc8f43147983ee8176916058166279e278fa563262ac1ece3f05611fb34d7c6267b429fef097dee3b3725674ace949c2939df949ceffbbe2f223505ca9972a6aebcbf5c4e11a92272a68ac899fa8a4815913325e7fb8a7c727cc27770fbea1d6ac7abbace2c32a5e6d4f7e39cb2f5ed8f9f68e97bd78138f663f0e9cb2c1ce5d48af3974beead14a5fc11b728bdc7a0f8f2dcdedffa34b768d489f47b2cd6bfdfdf9f72a69cefe97b9f68543dceabe294e389e39ca2b6f3bc0d1ffd64fa958a6367cacaf75538caf7847c5ffee4f128df3c45a49f7c45a35a3f2302da3cc320a4bc90d56317f299dd057adee7febdcf8560b84da62056bf4dae8657da1feaadbe0d31d741f56f38fee49abd17da10e719569fb0e76de8fd0deb0ad9fb5518a588ee5f782145703fe43da1d7855c0886403cbe59784ace949c29395372a6e4f43ca18247c3b7e108cbd6f35e76d3f3e8f793fe679d5a227d23d6be75f27a046be448b7ac9d463caf88cc46feb721e048c1e7a6384aa92b3abd9a7daeeb60fbee6fc889163f1776eeb0b7372ee5ba691cf8d3ac69a49b99139bec412b17bac59ffa8a389d9a45af38abd4fe5bc54baf38cad7eee370e4f2ed2817622df489034af188cb921347291a6de278c4d14cbfbefcaeb2ef6c9a3eee9d226d96a42f3b0f9e303131b190a9887f9ac5a3594e9bd52350a60f8e5ca66f4327334f9e3c7370797c5d273377309f2271b98a4653046a963f15bf59fe745669a11e1de47356c97496c9b485ba1fe9c8e52eecd141feb3494e297236cd2a7456a1b3695699656693c479ec91fd658f66ed008e3d6695d914f3b26cf4b70ec06f8eebd6fb63d84fb76e05bb455f1c61f9528931f073ce39e98d8a533113cefeaeb95057cd94f3aab95077cd8da232d339c683fc2f5085607186f1201e4077aa3cffaea99ded9071ed99735e29edde00a43f8078fb11a98cc32e3485f86f1b60179242fca5333993334da60dba95655bf53bb34d74b7751ec1f78f6cd0ad2b020181a0f5203e0eb4904fc41ee4bf4103b0e8eecec5cb526badb529a599bacf9954556a4a6a0e95e5a4f424277d4e2c3b9e3b76aa2cb554c31ad75423f6f91128cb9ed77e05ae5e7b9f50ca204d1c81644fa83d18daeeed53faf8af576bcf99c33d7dcc75b8e750f51c0c529779761f0cf9634f1c31c88923e8bf01490eb86e8d9f9b03921cc8ec40402038b9f8e3dfb86dabbf69dfbde4de7b979293127760279367db77e20876ef89f8459f602656b103fbf3b719de9f4cf831d3fd29020181a0bc4cd9cae9ee01c90cfcb99f0ababbbb473c635cafe8b8bb3b6daaf9746ffd3ba7a57a4e533db9d3a67aea39ee2de53d4704176ae241f5bb5a357104aabf49179a42ea6f9fecb101485d480ac97e6b32df9ffbee7cc2001fcc1867dcc16d82f1268ea038c5aa4e84efa7d388b36c3ab9507d0fba35730502c2d3e962a0857ca2f4200f28d0ac8a59322acf6faa9e33c370cdbdb0c91ea394aab5b6a151aec6a19a45a9a76916a5a2c79a45478fc9f658b5e2b83d7d7fe9812f5d88825f3d05a1f4a009421de14fd82fdf27941eb412c5115b4f1c8180b23f8b138f58996a2fff6a22bdf7fd4c4b89dbcf78cccf54d60f22b5d64a6d0855b18cb3cf043f3e100ff2bf22fd095e07d00fe813fa9939af8ff1331e9b9552e9313f53ab8fa97ea63390667101fd4720d95f620c824040fff347d6fcf187c7fc8c9402db2bc34efe2c6330dcc9db3639d95996655915fadb16021593ad48afe46a37a48a23ec5e3be4b41b525b4a5bb14e9938524abf9dfa86526ecdc92e842d67e1388750fa432ef315b1ffb6ddda8572f12dfd24f69566d12a623b358bda4ca4f8a56371f49e76bfbd74a19fc7d9da5f7ddf13fe84a0585f4e439f38a027be68a6f2ebdfdf42cf543e27cea7998a4652a49a68943dcd44a3f9b5e9d739566b2dfd66b1e66fb2eb40eb8e48adf55be8c7e7479cf14f483be87e0d7d42d9413dba6545ef7c29ee20fb3da1eca0d975d0618f6e5d7104ea3ac8ded6bfa17dd975e079e2300b316896bf0d7b34cb93681ee7630c82404013675721dfa7a138e4b2fb80e64a43d9acb6327dd0a77fc31196ef0dab13cf95d250f670d1e8078579fdb59059fcdd6fdbd7dad5aeeb3ab96d5f6b57bfa31b7d7cb51feabbe637eebbeffbbe0dfcc411963f9abbedbdbf6a86bcdbfed5b973e260f71c77dbdca8ee375bf137afad3fa7126c9c77f27c4fecee9adfb40c8b63fefae250261b20cb989353de3e49ef6b946a54a3af691ac751fb1cf7946af4358efadf9f39fba1366264fad05efb6de3baaefb113aedebba22ddd2defb113ced6537a4139d78ee7ea8bf705cca465c085be779a2f63b2afd06b9df64074d717cb96664fad044098ae3fcec758d634e6aefbd57a43015e48592d7edd38b719d541ce1b49b3637ca6f26e7f4a7d469d779d77560d8dfe10346a7bd7df7befb71bbf533906ed2c1c7de13e2eb89d9771cb75d30c41e74af386ae28be6ec87ebfa9a61458a563b7fb3d64a94152f569eb20659c66298b2a2c3549045647b76f932777deac4b314c70e60f93e7d6f1747cff6679da69a92ca531ce5f7abb3c5521c6159be2d32c2948b4e3c7bf972ec2ccb6ae80346ad3fb6481f67e20b66ed0f677da0e38d92734e91be0c4730c35458927fa1a4678a5f66e9325b5c2d758c819ad5f3abc7e278dfb9cf30c6bf0ab1076171fbeff3ba9e107b50d789a3bda273e29184ca3733d2449afd7c7fd1e856719c4fc5bb66fa70afeb1c31b489e14bde3e198e334b3ae433ec7f75969b0c4711643995159065ac4a984cc4f328c59166f96086a9209fce2f32827c3a7fc865e8d986464e54c8f6659efdb4fbc0337d19ca5ce9fc718a52dc2e67bb21f66507364b02354bfbd1fecbb3a00e7de280567c79b6232ccfb7a251d36fa3f9f683f95634327d549113c7f92efe2c4d186efa84e52407dbcbb70dca2965daf9646d6dd2be6ea194198cf7add6d42467d35317a03ace5afb738b9d4df3a95b172aebdb2dca4c049b557f15fe7450fd2de42133b8d76aeeeeeeeef7ddfd7af5799f340d94e205d665894bee97da4f29dabcf7fa9d5be6963ce7cf2ab3fb47703e6ea1d5369b24008e3457cc819956a0aa69de2a5c39a5dcd9258fbdddeb3fa5cc2dbd693e9fbcef4fbc7fc5d1fe6d6df571b0d9ef5f7d307e77364d1f3da5dcac9bbaeeebe93ed1083ff8598ff8fd3639f013479abbdf2ec659369f66d30c32ce594572e031e4b9c3078c2cc3621766e16cb2f8c74983542381a1196406b609045d389f9b4dd3c7b435b811810234c80ceccfa6d93467c876c6b2fd9102e920fb5ab88193ccc0be17d2dc3483644dd387ed42fb5c93e4c07f9c55f288b31ff1f78fdbb738ce2ad9ded7fab54d944df309dfd934add8aaa8dc1208fcb181646190659f6538fb6b33eb316c2dcb83fa592c16ce3256e62c67f911cbcff8191fe367a2b2bc008627c5b3c91ea057510e770b67f3bd4cadb5bea7a93357fbdfd36e75edf7317ec663ddba436a55fe42daac6d6371dddb707e6916f5c427cda25fe9df70766916d5eaad9e9f99417abe57ab7b41a86f7bc27136a5bfdd908af0fdf7dff7dfdb59ff7a6cfe507b9ef6d5c7789928359e43e57e1fe3bd97f13ccdbddab5d7cfccf734ddd23c4d9e3f3a144b368f3c7be459fd0c7d21207d8a6bbeac7c7fe41a8e5072a5ded77bbdcc753579ececf3315ec67a9afa7d3feffbdeaec7723f6b138deadbbff31baa878c65fa238f7c8164fae34fbe3f32cb7e3d62e5fafd9fadb5b697993eaaedc2f1b97004da429b44ade8639a55592cd0b24656a635c3b5b3f7127fe20802e517b7ef416badb5a0f6232b6be00786f5338f596bfdccf7b13ed1cf6c1aae9b863f6ed370ad55506aeacca90907fb19fb5928f317fa196ed3be7eaab2f3553a0a9e5cfff33322b8d0130fa2dd8fcf45457d21cd472c28ef890bcd2e1d549fce34b97e278e5f46ccfc7227d3f7337ee6debf573c62e12356be17fb183fe3313f13e69be1d4fda40b75b407100f17e25a4a953bdba9de4bebb7954ae98e4a9f7bd12dd4b2da56da4a4b692b4b0dd3dadfc43206bf978fb72af8f1f79599f1cf30534ce6326b2fadb453b7b4c71debd90dd11ad0ac7befe3f047b3ee6be106cdba409a753f737797eef8350dbb778e31c68ebdb6327d883f02e590ea08df83eeff8440f98e34679e8ded347fa8371c8e22c8dd6fb2cb1e879d385222dce3893fe3b2057fd74f39fb96d27d57c1dff5959cd1cc69e1ccf3db4a5fe956bf8eb1aff453964d2ecba608041cb97cc17c7f6b07cace7968731808eebcefab071dc9b548ae23e42a8ed911f53f56ae0fba50cf7b5d4f0886f247ae2280d9da7b7fd3c299b7d025cbfea51fd07c7fa372b6a7892d33b02e82d94bf5bb933283c9ca1677f6aeba5041833d02829180705d63b5525b6badb5d69eb93ec695d64aef506b398e0b4c6bc51ca595525a2b1820c51c10d0119bec61472e8bdb67e2581fdb97ac4bf30da2997ecdf4ed95b9de5a8fb86cafe53275cf427bf667d9bd9be56c67b36bb97a24dbd7b4d79ebb985a6bedf75b31859a6b0ff73228a595d65a29f5f28339f0e7a74e67524a097a900dfd4bf6430dd64d5671bc8f7f3e3d92e9079fe90f7956edccb2db2401c05b0101e4c99327d757cd35859aa9f8c3cb6cb2c7f8c376dbafa193a54c9bbe9db4daa7cf15018e1883ef423f55fc89e3077360955b0cb1c5101c47277de26aa3c1a14cce2d4a9941fda1e61ae3090329a5e2c831018e185711fcf9f9a9f94766e06f83f8915d05b015e96f9482a0801bd4cca13fb95af0417ffdfe2a22fd64d9ac90663ac4f6d1168a5204edaf465d45b94d1f33c07e9969bfffe6d40371c27c4e2a70b39ca3d96907f94bae5be3943d822c71c44e043852229463b910d841fe7e4517fb0b70fe080eb5d790e6d9556b802d86d8e20828d3a7597654b4e083a7221250a6cd9ace86e6464a02e6f03952506470c27c17d707a8eb5e8c1163c60a5b885093c68b2b6fb0065de088556185862cbacc51adb0c20a4bc978fab9522c951b2a352ed59d09d2d82f5158c87434bb9f1752341fa2ea7268b6306256b396ebc2c3b48bd3d1540c543b6471c608a0baf0524467411470c2b8420a39da7842c7121a36b82c0183972968dedce06480981c4e6441c4142c5564913ba2b20906d510185516ccf0bd974e95e385550214491041c40f43ac90839b2c6b0230a7891b8270a38716e2e842ce218346103c3c91a68a0e241002a4823386991ae24c81a60bc905e36bb934144e95d5f18597329a1c295cea8d219ec0828d157e984348e5a20630ac4431e5421a54e228c30418cac4308212e85026cf164f5514204d53172a66a82841156f745ec4ace616d031220728d280bac2853637dca9e08521acec80c41822daf822072e4260918509235ad002cb1074e6ccf0c6186cdcd172a58dca425566e18e0533ccc92c5a60e2d0ac009507cc1c4f30415535051521f54d1928f2c451451b73d41940ad8202870a4e992be0ec20860d16540b4c830c5d989e60634a8828241c639a624843e78a312c446191059a29719801c71663d8a8aaa83b6c98d84861e3c4e6890d17365e468033c50c640831430f5b60e159d4d0d3431672da28810d625879c288c984060d27d4883307981bce08a99f44142d52d8d0851472d6a4d17dc1c359c9d5cbb5ab60cc3b99a826be1e53d5c61487152b62bac2183cedc5b2e16566e182011c1c68d0810831e8fc70c514558dc374a8330239a6c850454a0d934a1d1db4204166aa0d1dd4b0c0c58d37a84830c5185756280012535fce381155458b15539cb0b206166364e922847f51552d2013a5f90f14a72a802013459821d0a8828617ce78538397a82a8250c2cb124fb3a556d3a2d82af64a0e408f7dca8011231625250a9590fa002fb2608146062ba82001155d9e6e971dbceb72c67649e352bc494ad31d213bf030c687372468610c9407d4c8a286324ac045163b5206295906a718aaf06db34086270d4d0b55bcce5c7d51b302174db04902ce14230f3374b972058e2daec853bf78f96206bd4548b10ed09244941a5bbc7ca1c60a42ea08aea8a9baa08835d408428d9936497427a1a653b6c9180f55a0c8d036983a4bb96365e5055595b5c63a4ed3acb54678c9d65a6b1d606d53222a940749bc440b396530d10295374808b13cfc10454c1c1f4aa083102b851b6eac1b60f8586badcdacb5d74e4d89b905409517b1250610a8ca53832e24ddca0f58aba50233a3a6083862423069b19206042eb28cb1662a8b30e034c04d1334d0a1a10833b81011c50d6ea418730071270a2d2b901983a3e012859728c2e0c15fb84f184e53ad22bc3003092e53b45001051a1c70108bdcf00209e8e870c61832807e780e521d24a98672a802817ab05294888b86369d21430b503b547183908a2686045315b0196e48a20d364d75f074994d54c9338a104345c5e98a346284d4203a73d488434a124e7cf14302379284263237e0f1a2ea4d1c1000c3c3e80b258ce0614b0d6d6ca9d75aab696e44ddef6ec8adb54a7c8749ba10f8034a01c26282800c135a4ca1a2450b9b0798e1ea1550c081238d1184d9014f27e1840154c626b3d66ada1a2e6bbcac09b366cc9ad81aa835511508a5204c5542538262c0c699397c9841cb1a380e8883d3c853c5c2183a00d1e465ea69a402441662b6180115160da063c5e9ccc0411b31c89004952a64e6e020a1d8a0e2e270013f06279c637802d97416280f92f8424175c5526db136c3b5d6ecd65a6f35c3ed70190016172a96a69add307e58eb4fe08945895501635780625b3ed685f543bb370827f3e441126b63ee68ad2f675fa69a96ddc9324685d41d7c5f3c5009d3050f324479822581078e255628220d993982643145c33205b536ce260900ca5896316519ce59966939c318071c70c0418b162d5a9e80c41c0cab665bd174b168be5834622c9a32164d1a6b595944a9dabd1cb091cad8d0f15123cd9530b044e19203114869e4e04394126aa6b464e1c20d191ae0cc6182071e18d0c61917c0c8018b2b56c8d102ea8d541a67c070e30b103905104990a1c419545091060579bafc680d831727c6a101adedb65d7ce9424c05254de38a19660021470b60b4a1000b5459445911059594901ca8959c2e2c9560ad6a802c01982d426481a389185a6865a9f323b0628d1442444549a38c2125a4683cc071668e2e5ea65859802b41c68355e1a2c585399410e20d0b3233715143058c18ec74d1a20a1b36f08286e98b00dc78b2210e1857a470a80276143f4f48359521c5144f68b9a280273516102567871a8498030b2d32792d58428d18171baad25821a4ba30a7a98e196baa40c3a48111b1ce08315c028cb8a20223e6388088166e6851431b59e4b0450a60b8c05167cc962d90702f124c18735431914599286b7ec8d0841970d819430a261770e8e2268fcc4d4fb68873470caa24a6b0b0460e165b9c71440b5d9af0c184864a93954c85d541942b567803840b45382100cd0d640250e64e0e5fa8218308335ef4c491ea1bc2a401c20a1a6374b822831968b0739bf030c971e78d9a38a61831622c50860bc0061b386e9043430c6e549132040b607e78424b121840656cb27bdfa8536eb24c753963c31d31dc8421a43a45195102257cd8f266860358c1e6c75a035049655474f09b3b4e34f80086173e881152b950c20a1256c0d8e234c7173f103833031c715678aa534550162304204ed9e28b2636eedcd9018face3e68b2e6cc0e0031069586864e881822645e040841431e210428c1c2e335c4cc9a912c5164f05009367c71163ae94a102881de82081c12c7bf22059abd5a0e051c58b1c33c48093670e0238759122e24a1861e041a28b1873cc36629de10dd2509191014b0948c04688c5228a1744cc40849c3c6b08b10300638306668729609869e98c912dce166462628241887d0c7e585b02aa5a7f7840c9a1c6ca9b26d060e9a1c70d382c638c2954d4c4c1a50d49e64b183f20f1841a7280b9c0081e6e095a708853c40a40cc2983a7a67d01e541d25a6b9f684e0e1acec291426f5c5186d319326f7e10d164a981470e6f9a94a053a50a21aae65387f1c959369fb28ccdc124e944c1c31277c294895283901ae679ca358f960c668316536fc890461493172a80d47a6fb6d65a4d332355cd50553355d5cc9d7a86e9733d238575c6e90710cc550ad854eddefa53e912f7cdd3d3151ab238e1a60537643e76c41a0d2a000695a82be830310187dc01cc983290f862882931023842059417515ad890c901bb71e3c40a96cd170e9b42c61d27663813c408e0040002657819e28b37aaa0a892dd945062e82015c7123b4cd9020098973758c0bc61c31539b868a6a923cf0f58a4be643107081e735021461b20be9822051579a4545486f18d238e281fb638e306063a21d8b2868621d6c830478e906a819c309ab53bbeb8b95fc2e07498c91283192939946923080e6588b8e20d1678e67401546bad9ead4b4d9b23c5ce71b2739eac05cab0ec228923e2743113264a0f08e8028a2b328841220a0b15d039c3d26143c7bd4061c4e0c21871e37853e78a29de90b1441726304c7071e68b1d1c928003b4967260676b6d67ab69508ca950c43aa856300f3588c39f10a870212aca0834404455e154668919c09441c70b0561aa12da0f18c406bad0264a976fa8bd4f694b170227c8f6819ec8f679b09122db1f21d65e11a684953c4cbc7123c61460845809869da62f66e498c3898a102bfe8055046fd334260736b089230a38496c71830e181929a6ec34c1c20b689860955045ce1d3296f0614a1b3f34b0610604e0e8c2461164b0c491428ecc87283752543d58acc8b0b4b90eb862a7872845a85903ce1a1f344f5544115c9013c3142fb8c1850b72e0d73097b9a6891993651446431a2c5e3053a7052dbc5ca08532ca98f1861a73a61052575fdc884d1c8f8064fb9c1f018e988828b10bfd74107ddaa384d34a891eb48c73055cc85295a508383fc020a43e7621d8991e6ea8e10a0e65486184902a02fd64fa3fe3cf7bb14902803803275623e64112c39890c3420e67cc81c60c38c035dcf4dc41a38a4d9cd812695a68c28bed0a34aa78e309204680c587c68632120d3c5644cd300688284094c153880a911883a04a1834ce5c81424b165eae0ff42c1792b1fa3fba25f39c346c348591c68731d2a873e6d92401c0cf545e21196362625a41487df00788c74b0e3c57713cea91b3a7ae04385f7644640b0df570a783241396d241433e387590cc2350c69f87fa86b85994be0b758006981f9e18411631b008a90f76abcb32d6854caecfa35b34d7ff6ec9d8152a72fd1e2d7485d4c7a085a8903a25830c66d6105395c6172155c4cda2ef4780b48526137d0eecaa769a619a65a59dda8aa3d9b66d03bbae7b0f3f2fdc3aefebbeeeebb6c975a151f732cb0c7a1ef47ab6d0dbb69e2e1c59b97b2f04c32f1c59f9fbcdb710f4dc73cf3d71ecb42d0435cffbec897859f7dcf7841e38df0b61b9f3335af64020ae5d99d864ee4c366b1a993e66b67937c4454dfb1b8e4fc24d0b89d4d7be3b10ea6b22e79a680108f4f113a18fedcbeee21ff2c72fcf96c2eeec26b22f0bb72deb3cef3d0cb970f37016729b871f03f5b128ddc38f01fb58dc3cfc18b88fc54d1c5dfb2edc7ec861d95f356740209676a9769bd9c0f93937bbfe0d9cdd90d54a7432f3e4d5bbffe713ae7cbed5b7fa56dfeab795cfb7fa56dfea7b585e8546ab9759764356a294198c334cfefc75fc4ff8fd90cbecb0ac23f4ad3930f4790fe5fc0e4758eef76e48ff06ce6e88939927fbccfeabd5fb84e3cc3afe271c679650f9a34eddd42a652dd5bd5518a045f073a2cf0f7596c5b4e71e03da73a2cfc33207b6e71e03db73a28f38ae7e12f1f77eab1c18febcec42f8de1be2f3b273d1820f7cbe7b223eddc3f250771dacbee775843e3fa1cc3e212caf42997bc2305ef81ee4af85401ee49f8560888742201ef4c3833cc81f962d657db3d8648fcd03115c287bfa4546e896289fdca866dd1bd5ac5b69ad587a107dec42f7e96774526afb6b1876a866faa03ffb67485f76213c994ccdf213c2261ee4dfa10acdf29792fd3700f603dd353f1bc098036714edeac52629cef2c127479a356fbeb023cd9a4e6eb6bf94e9a5581c5f2118993ee64f23d3c7147b881834cb6bf81a007be491fd7f5a4885264c4c4c4c425e782146a602e68ba30a99fe0c459f4fc3119629fda511a601d039da2c09b393aed9648fb1b9647f0f5c48c7cf1741fbf94744a0ec9703dffb2cbbdebdd5bbe2987dfdb2ecdeea7dcde6833fd43bb81f3db1f63cf8b7dbb08fb70a9ee7e195e76519feefcbbcfb3e3fd42bef7d7c569fadc45927a0e0af38d68f8209aef7b8e36ecfdfeabd8f98fd6a958d332a3b088663d7e30168d44d311d8046ddd73ccea7ec3f7bea774feecd2ddddabc7c09d38501a120a8644ad82a433989318dd0ccc00c2000249316002038181288852392244af20114801179ba5252389648e36194a4280832c6100280210010400820ca3837431d007f1582d560e58848f55a50057b8b7a3e37736f1a1bbbd26b7163ba6aa8e88847733490a61a0980050b0cb8ce6a9ee4f99945c7253c4cc349bc5d14a24a67e29c5aaffaff18a7c30e0d24ba0cbb03b0fd18a222cb05ad7607c50c6029c07b331c0b7a3779edb7baa52c4a3373f27e5e1305e43a9a13803941036ea0358941692d40455c94e557aaed63210d31626a10d9a1d53659cf301c611037132de91633352d6f3db6b0235966ced6c264812e944b9fc0fcff44d58fa54e9e651b1efa21016efc2e597e27de1f10e60f486dfc917456421120b847387b91e67ad80d22de5a29e66144731e3639196b7d131b68015d287062a729487fd0e40697d7d7e5a937b7057d4d73a2afbadf22df3879cded11c8d3bc40226fd71d8086c775fcdd69a4b77e6db2eac348631e64346ad7dd05b8a7ca496c93b342a043db09b02de62ba04f01c6073af589d1a73322a8b7265c5f43ca80d2b4066d55533750519ca80d65ab17448dbe549e11361ae84b1dc904b8174230cd0b1bf6a3a5e0684933c93bf791bc6c37a8cff46991d28f7307e9a4eaea9ef44556229dee8ec271c3af5a447c48ad1e3bf6423d2c77643e7a1a9c0f3208871b0f6b4eca197db8b41f67a8824f0a32a1e5a731f65240833dd0634457379ca55db36a0a879aded8aa7fd7772d5ca9a073c19eda71ef9ffcf4cba1b3c8f48d8cb5a436bd12dcaf110aabc696396fbf89d80c91588dd6e13d573a312880b162082625d7b71280a94dc3bf62e0c997ba6d02143bd22499a13b7c2ab0be7f7c19c77034040d81836e34592badabb3b4c7bf0a993f0235832e41804cdfb7b11e40080acc953282a77d9dbc77a31b094a3bef227ed85e4b76bee171d1527e5cdaf6b80ebc11cbfa35bddd4ef1d1c96759bb7c2b41561d1d138ca19bc8efeb66c554eba58c01b2c1ce119a2fbed12e001dc8239660d46a61b4af9ee72e11ebcda8d210a25a0857a78a949aa6a26aa374eee4e865d09dd2a9af4f7cd4d150f5a26a47be3b6ea633cfa0654b01cbe2230b1d8c3f49e7ef9c9e56729143bfd97fdf63d2f90034848f5e93d85669558fad1bb81b1508f2dc81f64e4190520b7c60bdb53b9e27d3bc5ddffa8e354e382642b2a8ecbed66bccb44640c5996cfaf7b2986c7934dd18a3e581a0b7d5f2eb169489e93fdb40d5990895cd3ea8ef0ed4293940573e55f3ee040512b38fb4bf54967aec11d88abb8030e41d7bec72c774b7aa63cf9cbc6c58d5114d2e6446143859f97a57d215d6504384987078d73070b7c5d47279a43500f60fb06477189248a5566fa6e9a23c8fd6713adb2967074be31660f728b6aa6a6eed0b2aa9484f656b04d6b881217b6e1acf373e5cf74b536268f0170fbd51904cdb45b277a4b7ea050000d97d0a7ff16f5c8d6e2592e96e9c904e085d405b246b5425b1f3ba0868776577acbfcf34d1fbdcf6f0d6b062daabbdccc5d7532bba3fe755a48ec8d04ae7a1e31c213482472f6f5477e59a99a52f3b015aa0752e3c12d08c9bb0688ab7d29b0efd6b54b7155b7529a1d17f87d2350f83b6ebd96e9567cb355600aea536be592016baf3fb051567c75d07301fc57a35c08e7a55d7ba3bece2b6c15bacd13ed6bcbb22de0a3fd537669e98f3b48cff07f246abeb777af7d9edaa4413908c01488fc567f4e03e626369a3bf2f7a0c2faa72574f83c44d4d1cfe843e062bb9781b3b3e201742f986a81afd73f458b550975336a9f7514dfdfb16c3c4d1ce1b42b770a716014b6f4a9fec88c014677442a07599c5b36ec4fdc59ab4416c89e14b6377e931893e64b10942c72148b26251ac6c713e319a06231bcb522229b8f78ca4dccac1f730b5f2d7b2935413dd86724237b1008107f5f07a24b33f4c77968558ea3e3567a5458ce1c9f3f18e7657d3ba4daa32f3f87e6eb026d2a50ffe0a5716212e10a495df3d03057f5b4416f6a900d5c68a046c5f17ef0b4befbbc8aa536a7583bf29d1e55ee20e9961249e6665c17ea00564d4f30f71414fd3f4e68b831c8b1c1f952bd8a622fb24af4b62a6370da2c353e28f1b42b9b80d01a6c201ab87416557123852e50b3251fc2dd63b769f961d93e4aba536b5719f15cc4402bcbf086d3820bb432a3814d31d18fc08dd7d13de186ab49008928ae1a595ca6fddc17220678c54eeb903de18d1b4d95bc552586356ff43b763c552379902bda4a0626cdd470a78824381fbdba2de4f5447add899ced584e0d4813a7dd428851281def3ce144ff98d1c9019ee3b8d1137e0c73ae161d2d3da7bb90313660af814870cf73653e41de2b789d475d09b75ddf38c6ceb98051ea540f3811d99be5231278a51ac99f28261509508e499a406239a921b611c747a861bc0ef74ccf931c847f19ea8c4031ac69adda053a563468d1f992bec923b98edc8212be18bec0e22b685de3fdbd2296d511b97d99d491249dc32f3d318afb4b68904ce2f5135fa930a46a74abd7ffd90c8945ac3008b984de31ca01da16e4c699a4a6666ff515056fc4a758015c3a271090aeec2cc103d6eb309d4b1a51e02d4c42165427a61f4c21aaa17d9d0f119299252ae965140c849ea28f723e2c66af4abdea493ae9611674afaf3e31e05030dd0e4be9bd0e9ac69e0a89c88dc0ea42087aec32964a67091c0938eb0871d51d602054dc6dbafe94c6b0a74055a3ea336d0415d73c169447cd02fab4932e87995c62e693ec392de17dd9895c0a9cabc2406246dacbf716fecff0de55f98687dba0355962211a3d651ed81a0badebeaa6a384e63415c88345906d64bb20b040bdaaeb0ceeb264d9a0c33caf99da3135cd98d0e833d8e5eab5c4ae90bd1c490c3f51dcf94a47ce0bf6612a80b21bd708e39615dbc01516255e0905e5d9297f78e48cc2f9df0a952c37d761fe684ef7d5abe55b29e4993c526c0ba23674d0d0024d8cc08aeba4b9a8e1d61228dfd13734b9ba8164bbe33bec536834ad832a0956bdd5ed15a20af36dbd16a1f9ec906a34e9ead1106d22dce633b79e8d9f57f102cc1732e80ff00c9b878146425e8dacc0ffa9d5783565c3a03972a9c8d1a8cde3a597d1f372726f408acac1fac3424be19fb037dc5984deecdee852b0576472c8752693da4067d94525035486f0ec2d8c830db34c86a35cd15f3cc125289d1758e0a7c949d8a6567a10de8a81bd03bce0a29c5a4f9a949311f7a3128dcfb0e48c6b70d0128a39953fd516608e8fc78dc009bc8e35ff9a15dbeba43f517f2b039c09c93d5bc22c7aa64041c4894e873ae0a412d4f0003a666dbe4091fb165a415f984f2d79564ff13109c4ce2a1dfc7f8cb34cd6359cc72c4754084542f9f6e1a95cc2c0bf70389a4d7c03973895743e715e135f9658d3c40a653ab35432002b65aed03f0aaad53b1f505cd4ff6c28b6d8b712861126c1ab5cf1cd91a3532e31b81246047dc9449940053615087340f467dce79becf3f7ec6baacf42715ae49195c09bffaf38220912dcda13499fd020c5bc5d891c80888bebb7e7165c82bb9dc7c37d2a97aec37da40087863e2046783fb3261d9508cdae885dc8787e2462ff7b189778201f96dbca5b954a78f717ddf404360f7a0c83995398fd7cac5c8a2598467d0bfa172d64c1b0410055e9fbed1c41587b946207ae42948b82e82e1a30c82d6b42657c51d4498eb923706267e7eaea708dde7a65a8df9ea3b0face120cc1aeb1f37c226de3984f94bcb3a72d07d385abefc89bdd2796af8a6f41baa30d8b4c0ba5cbc4f235a7d0facd7ba2ec4ff90cb149f1cbca53f5f64bfa7f4ea57023f539e2b3883b42735cce2a6f2ee1e2d96d0ac3c650764483088fb90a3aef8d9342a1a819256f69eeec49499c00c1208338e7a0729a0494fdb0500a134b0b092e01375864a923e3781d17f844ff5013d3ef6c96cf88674cd5bc16e9ba49bb2bb0de568629a47d6943e996008dd1e0896097d3ad9f7cb69e0794714dc517fc4a99b60f21367bd03ee81b12a151d291f9214c59e7400acde61fc53d59d9d8564ae2f71bd6240391558c551d1c247b8c96334dfa725d60424d5066ef0c05dd96273e8e30731d8e9874504d0e79275810d5bd44cd5bbd917be9989a0df9c7583060f8e395bd68254c03461aa6b78dd84c9accc35e9154cd00568e55beb4c088b267ee144e011f35fdc1ae5f48ebeefd91a23ccfba36d6666c7cc977118df34503b852be4264302705d5d41cbce59b440e2edd2ad21a15b5b3913ba89be308add22db2acbff53cd4dacf9cab42ef9167e51042cd467f8c2981fef8c7df48e38a14323eef7a45bb25a53acd84a6d74f70bd328fe610e41f26228753e4b7fc68e4313ed87465bd0f6a0b5ead673096cfc4efe5eb515713fe984cd78e6e2242fdf7e47bf5f0404ceeed271169688e0d497ff9e7d27458eff55e13529dfad142f72b2d274c1a906fb5e5ae5d100c60803174aa332d34e5016acab8d25f128811613525d6603ec269a5ce2648625e24a6a6ea61aadfd5fa6ccc03406363d66c89e583c08929509a79a18ff386886ffa3fff2583a6b59ea75469845e69a58a366c16fce0588e4f314b88936ad2b3100cf2c99df605e50264162c20830c78d96bf2ae3561d89ac7158a9ae9ee016114f09e9f747b2d2156bf97c4e012f1b337c5237c4806e0ffd4d76f3d4fd11f63fb4f81d62e8b74dd4a295445666632b570b9d68a5da27f53e50179612ce89eb9d343475b8ab8f84631fcba991f0cd1478765350c7e5ad808ee4efa492d5648a4c23a55d860fee3f760aead5a32a85e893342d57f144c13ed52b09dd8fb2eaf31b03bff9b539626d91e8752b4d9854dea1086a7b5f623a32fc3614654706beb19ca0f9f10dd46e18fcf4837bc8e17faccb77ae1d56b43f13578ac6754cbcf5fb266c3e217caecc9ad4b03fea6ca722262c4d97e04901dfe1d10b30920bad48e92f803a5a08f302e8ac00fa56ac1c3efa9a1eb5b5805fd6a7330639c08f62b5de2e9e10b2dd7f88894e00896aecc154adce60e405f1b62e3c6a4f49ff26b0834bd56ca212d313b51282a3d7e2b2d42bd911870df312cd8897a3d398aeedc3c6138fbe8d6d0702a70e2216678d144c1fdb85e0224e279eb6c1a7e387745da3a064c11d3ff97409d8090829f992770926d0ce38605ee42c814288672a10bd689c07992d804c5a78ec79e6e72880db4e504fe18fc56366b683330ae68eb4808d02eacb6ad2d1b810ef2cfaaba9cbcf6b135a5e91ed3607195f25e79d5d8f980dbc35353662e91fc8edafb47ecac6532c2b9b275c0a25907806ab581fdc63247c74c6d2d0102dfda1c6eab3eb14adeac2f4d4126171f02aa7f587faef0194b8b1e84cc45f1a002bec0070d04ab06c42c34ef2d439e4660b5f2263852f624216a233d36c7522dcb274d00ff48d1be507fa057311d65bf808e3e3a5624ce4a765f32b0b6e7e532dfc6010a9f2dc649cc015c3b2a192f5e657360a04201e099645fa57d3797aed76f24127c04a2c7f17fdbd6d5bbba7605d0e975a7a2ef5c8020e68107a75fc17d76606ac99c973372ea3c02ee288410b4282f5d56aec49345976a1c13496a181715797b4058fd0239c40f0c9b2efb25a7bd30cbc3e905dffded2ab57f6f8127d9ef4b3d27e502b59b994a5be20ba63919397a67be0a47fb3fd53dec1dc6e0bf0c1ffa68c06a44fb5f077bb27ddb3bfd897e9984847744ece7b6c47f5a65474a6dc6d06de30bca9c80557b4306168c078ed977b3bc2ffa895c87aeb85ca85d2d49f840e8e663c64309edc661db4bfe1f7df92b51ba1379f2fe781ad852fb246416b3089a333d6de8c7de3f46231538b211ee72a3b2fd72cff85bb09286f7f1524c818b75d8c7b4e5969449c792933fea4c394fd182bcb87369578c5e4abac8ca78c35cd5123282b3b07cd6c449d9344c6d9a716b5e2d6367382d1ee091ddadcafbaa369c2f1a7e8b8fd5378eba354183bf030b546b9a554c9964dc7d5a95ec5463ea672afe3358d41839d9891c3bba391adbb8b72a6630377c1d4b0c39491765dd0f712ea873603bb4ffcb657155dbc9488017bc11a62045fe61999765f550b00146b8d5362f365ae981ec39b2a0f102ece469225ff7fcb02b0b8c2cfdc62124a776563d1153f3304cdca43bc6e0724030cac0b2f5c77197723a865dc4059bf4d17e2ee1ccd4e09b136016289ae1aa893b0ad861a4d869c2da306a259d216388437e69796ba138f44eb48da9c67bbc1209f11e22231c766ab40e6cc4b0d711e5207626a9271bf4b9c711b1e72dc2ad72ab0e316812c3e993ba05c89ddf0e25b0c3748ccb5827d38c0c47f6a6373e4f6635eaab7875fb75fad767d5476b29f3d64ffe1ff81aade975cfc5f5d4cffab185a994a3d0cffeb04a01bed0c78f57d94b07851847fbbecda5a73da44189048a941680ca6914395c071538d34229d6bea04bf0ad2e0d1d6ee515d0996ad1161ef184faa8d601e08a5a829c487ed4f77c3527a778986ee4e1e3203a623578d460d5d03c2dfdc61c39822f048000f721a40c020f2f2f2c8793d38b112cf283b5caeea84772eaa5e492569e69ec28fa15fb829fb4a2c9557447c81e88de1a48c69b94374806c451009307a2ef075b8cb912e9c5a2129796ad8191b3da546f4e643e22603244fc165ce8ac96a695d51e78e7a81f2754bb1e91447933cda50d0e4331226ada02e7a65e94fb977cde66c939788b8ac8bc116cd17273cf0210efe2987692e57206a0ae81ca2585ab832baeedeb53057064d78a56d1a434aca6cc64346853ef237ad733dd6f5cc0279fa20fe9467715138c854b96d12a1091d044d8fd4ca8c85192ac9ed6516d2e5b061c31c64607703c088712079dd413184667d0de55c33abf02482b35d8397a3042013d74dcde2da62ef17f5da42b31d17b1918fcba8f598de0a00094fd0b8b6dc299720967ae447fcfb9ca82fa484cc6c7d072a23f41a1be8a13dbc57910d68d9347ea2f5c2a70b3a69fbeba745910cd0d5ffef8edd11b5b0babac4242752539462e1dae3681811997d3d326fcac6e93247bed223880062f931c0dd27d8d1ea0d60e4badc7e531937ed0642e36498a1ef8374e380844c081b6ffdfa681c36c9b28a8d1e6e0bdd395f4d09a8e12da59835f029798619a61892778a76b4dc73f1778d3a0fac8f3902a6025dcd11d4c6f01c036c1cd595dd2c84c67134d0c533db83180a600247d4884bc0ec5b3212980e2c53c852ee2be2b29ada95bdfa04bb614327567e04ec8f2b052927e299e8f66f1ff0c49100cdbca84d37d986c48b7f106a0662ddd097a44a7352431a31d8386b3f3140d3f0efc59ac96f81e89f6c01ade5d162c94008d900ee90419a3e020b3400a99794dcdf7962cb9318651fcaa5f3ba9a3ef505ef72f096af8b06d9853552f1d9258f8307548503eb428938d3883f228f19bea355ed0c1af212bd560596c36a5d0be2d3799c93afce4c7ed78254c188a864903232bbc910a05b66cd26a3b3e4ea036586a60d815c57018ebe0afb41d77923f2c0b4ef8a820b3c2504ed549cde313b3e07aa82109c2664b3a56fda7862112482e268af318043fc53374b05cdc4c623f7d094a0321114d4c6c6de61a3aac06286e435720045c6f484fff52fd27b1202c793ae6cecc95c9e74c934ef5ad058426045c654804545aa7b6fce5901ce88325320bd5237724f3b9f378639798923729bbde40df761ee195084038564aaa9578de101d720b3f044c09f126d8cb8cd925051465e64f85c4f36a60732097bd4bd6bb1d16de64274c260b083bae4ff1f6e6b23d843e9726b16073c1141ec461dce4ecf59f1a4b7f205dfeb9c2b795ae7e1a0ae7b5ac512dd74135712cd10f2fa5d1dd35c01577360798b298697958bc4db72d7bfcb1a47c992b206ff9cfab313633dc10f20461464375c6e390c55f05d1a4b87302c069d94b0e955e205dad1115e0521eb1462f4b528432b585c15b95a805d2c54d823d7af1ee03d3692f30540c7f5a62b3825021243141b11dcfaa774419bb655dd956dba9ca6c0c7c31a262827f31d79dbd6e9b70eaa01f7675f41d38d35598d8b53d967acce9e0bab02beba3a85504351f2a232815648616e06e7621f6bf544e5ab134cead00f29226ec7ac1f94f09f24a2a3a7823b27cf4b91f190c8e8982471db42a7ee2238eb52d038da085d22637b85703ef340a776006ad18e900274528544a486f163d8ad4908ad2c4e075be2e6d3528e04753b21a5fc22a92b7681e60c4ec51c6b1f666f7640c0b3e0b60b4925029c49210c1418ee9388fc42213735532bdf52e2280c99c9e607bca47a3c898a1305e1b133370058d40f5f5022f449afb50136ffabc85d6a740b9527c2576f5d2a7c3f081e0589e739d016ce2261ce2b73692fb6df3d007600a56ef867132c66e5c143716f864cb0dda904b951c709ec7b6b45a70a960840c66979aea1c0bd8d435b345f61f299ac80d7d670d300e5c438f6aa668bd25a976c0212055d902a900018ee6db75d75ed3044f60ebcd246c216df07a7134fc13400e8f2e6800d9c50b8c9690a881bd86793052ae18a0ad9178119f26f37042f0e43afa3899179861e23473ee60f2e8c83f84ac73b50d1f399011248b7a7670dffc5e8b4ad9297610ee361ac11189b01e2771798d09b7f790c0981192bb54ed223b471dbaf6b08174d4fa6713329abd19dda87f4ab2e20e6b34b8c423f7cb12120e6f67dfadc0984cd0e5ecee5ad6a00ca9bb0ec60ba26ba0f8c79cad354786f08570654e0cf6340d1ca8ab69421e3662aaa05c05afeb335fc00515f5449900ad630608c9c0043e6238bc465c97beaaf5cae1a01d30b507a0f3ff12e11468908383dc60ad366f71e2119a53b09542644eb8e815dc6d5bbdaf7b3c4c60799864e57aa53552c43975710f4b642a48c39b1bfc387b75f190818d66b24e8fe99203523b9b939a7f0e3a56f778af7aa48dc707f89fcb3c5edfedb99bfe8773473a28ba665d7d690b6e63fdd991501c4199b88ff5ca51f53287f0b09af857f18d7f48d71415014d5da134b128964038ae66727b0c45c6a4c23968eae018a0e9a558e2d43c8df0426eeaad6b82956101aea1ce259676ef3de54ff86ee8797d4b687c356cc11c89f3d3cad89b0ef81044b8853a1d025f9ec409f9adb5dadf20a56a003c155e48e5790406dbca3c997af424b3e4e3816184fa5417f1a60f19de80c80551d70f0070b044e7d2e27338f3a982c7479f6ccb031392e0d16e80f72f4cb1987c2d4884e073fc19f37c763d6976eca5c5b4cd0e8fa2594d6190f82d9fb076efb09c079fda8f33d8295e287002e12dcee69a8dc46d4a1fae95843b49d70a08449ff87925742e18f0ff75ece35bd8b646f1be72459c0719585d52ea52d3f5034c552ee120806cb292192ebd55f9dbde5881ad82439777f8f81bd06582c35377fa29ac424a4cd5dbafa06dc58a01eae0c60ab734330627874f4efc70c84417a5c7753c265a4321609540fe55a054a5d626e9a88ac17073184655023516b7516a21c13969b08ec152fbaf08a143caa6c8145954222fdeb90d0774e46913c756df95620cad16166500f2e803987846a69a19fb8970bfce9347b682ccb042bafae1065052d26e108b15235fb4bf8576c141ba561277c02cbad86b9c24239a397e38272172233b92b23500fcc8305146690ae99b5052b5fcca509f99739e63c084a0745baa6a717316158be246ad482978d64d88795c72c199e32c994903022a581eb42931762831248ae908df77f63d26b35958091d4a020860f5a824c5429a2e024ab6189716440844a514682f2d86294a63088e5d7773c2b1ab1737e988112ab6d0cabf447022ff185ef49dc51205145dcc0180cac6509956affd50d06420eae9934794cc902a2da11b119a198a753f73dd226a14c501744633db9c90db94baa352e4e7c7b13eb5810c421b0ef49120530bba444b4f986366cbeb730fe8b820041e3a4a32e68a8ea53b100411b7fbbbdfbb4682cc981400703728627cee6573590124396be37f5a44a5abb02814524514531a6ca28e357b518fa916d297f00fb88e916bf32dc062aa59c48e280496630d2a6fe6b389dd77e7005d35005d0ba02822f75f1c3cbcbac3fb002b76ca71adb42eae8c38f4c90c5853c7f10016b595afea1546934e80a9bad435c27c6c88036c22c8de838172818c940a82b89cbebe65a06d69bed6374b5c377e86f83ab61fb0705c3ba160c5d83bc0a1109ef42cb79da158a333014115d1759146780f7503f7613acf84da9ae0adc3b815a1a0dea2875cd07e55074616b7eb022d9a71428a7184ebf8bb4e7e47229779e18b2f0a3ed676ee48c058310a49d391e79c5b734167998fca872670c63d606991b86a812d8303549250d847e2afef4f7d48ed3da18c57fd8c63756e7b5f0973829e10b4004ecb46196471b38f1237e5dcff8dc1232a3ce963dc03b8e39dcf0b8336ad411998dc9382b5e2c1ec4a11a881e93c71b4a1ae95b108451911b12e99754c54d0f862140c956f0087883b3cca42dd217d3c3ce006fae0afa78199e389e23937fb6709c1d3de148ffd1f6c528b00336d9171a360dd571fa101ec691c63fd6db53b1954c719c75884886f0056e6f3200bc0016b136927f9665d0bbdad41ca7e3a479746a6552be24d90cddf213f4c9d996ee451db7f631b1fd4975f34400fd5544af9bdedf22ce2af178ef1ab303c92957112e5343855b4fa74ba595ead2c08590047bca3475ff9f12f244225076ea0c1c97f9b8895f9e71df3889cb8efd9fd491633ec402604277a3770e2028a3332ef1367c162b0259d5a1d72e509195d87de1a076144bc00ee43bdb0b6fde2fc559996374c7732186eb6d16df8767b761a0fb9016b2dbdece2decb557af012f66d52d27d9b1d5ee524f250c4cb3ac6f44cbf969a2c6c7bc7744cfdb72279590c01507ced1461ee634877b32cf2c7f764c3c0e703e9ea2049d628f83cec71f0ddc1b8ec10f8666f402cd3bbedd13af560a4c43d0e2f1b214454b0b5c16b657ab02eb9a1e115dada0001d7ceecb135d4ea4f3470e94210b517838e94fbc3a47efb83837a41b08dbc5e360ce807637d7d83fad40f938a5f0e3e44780e4944bce387cb5f27df150b8df3990cb7d5ea70c9f730720a694ebfd275bb8264f0709477029d474774080c0ba052d1ec8298b28c61411d90833f0bdbcde4003059eaba7d72b0edfcfc8780162d86e9ca09712e02f57569813ef585d50496c268bda5e62907aa760c2ecb12ede246a6c92d1b33ce76a62436a74459a62df281438d6dc5db67e4caea337f3e7f45831d95195018c3dc61f54386a8435573e84853bb97d3529a127b8759a7ce2ef16cebd58487d65f252f2693b4152227d07435703c5d0dc72f649ab74e179689c53a19fc4eeede4ca7abb283dda7c375495a3ec471c9b88df6f78724522957aa01b16c586c686d848a94bf5b54c975ef0e77af57ab827c25ede60bd187118ea7294f8715773c67f6195dd994e4b63ccd9b90122f8637014b43086eb0f7452b470e47a4fa39755683bc85423b772bd50c01a4027e0ecfd136a3bdf7b2730e5c7eeb15831cfdd3486a3b8b2edb2e4e0fc861582e8670e4482cf8e04c0bd9a3b56661f5e0117111981f888b56612ded00b2b4b05444ab1c1b05864f00a5b37450e02948b1265ab350d1a0c7926693571108061befc55832b36cf05c64137b78cf09670d691473e4c77c47c1891d1c0e10c7e1e303f813a69fb418fd8ca71259b111034eac452c6d7e44e01f405352495303abdb3ce97683e0df717828d7764cb4550f80908f45228ac45761bb00a75a1a13cc0b0fafe0be03c7c03ad4e212444490dcbbb505cb1316807d7c08b21aaa103ca43eab72cbfc8293dc9ecb21ddd93a2186d1956ec96e93ca75678be7da8ee9e71a040cc9c3d9bc19d0090ee2da46aea428a421231d511b8ecf968d6a239c9334f4802afff5fec56fb1083a1dc8f896af5dd568d30f1b4363f840765be2971ab1d305699951dd6eec90af443e6c2a7e404e16f6abe0d7c4579eda43de7053ecce83bcd47be28ce3519e6e50472c03d105e32578498aa11c313a199290c0fb96248a48fc30c6f40b5a346f07981898f83af100ae0e279d53e460c55d50f824662ac603334376ff318a73f586577a6d3d2f0573993a14a7c4456f3abc30059a4350ad593d70b0838d9ae3e8c7c0e78ffcf3206aaba82e72e52ea1b8c29844dec02d19ad64c295e60bd95dd54b37e414ca4065bcfee625da1c70ed632c97c800c5d6a5c5c91ba5e6c4bb7b1653af83e008c81263d906ba456c2390f5174220f3048b960453c5a649f96050db4e739b100560eb86826431b7661400fd1aa83eb6966d427eece51d80d51bca99f28cce11606ec1124b08aa8c91c0b0b5880b9988e5650267e397499198314034b3987ea208cec4a8dd049414d3f0bed399df02adcf2cc40def80b779d176dfb72f614ee0b872132bf6ee8111b11d32af79503537f1ed673970bb60388e6e535238c884454a801743b9e8d677a9a018ee215edf03eae4abcb53c88dc3ecf1159f69bcb2063b20d2c779636594ceace08abf5597007e9b1d74dd364ee5fab6f4627254bf1bfb1359098d980f9c486d0cd5140b86d167c6fb193c7ce380c6d5dd7ddc258842ae407da5042401a684669863536e42e1803b095693d1de608c59c7d0eac262e0104595ccf16aaac488ae694d7b2a170fc3100b1ecf35a5d3f40aa61aa0b6a4286caac0d9cff2c5171c00bb1644af1d07632b77bfcd096251fdddcdcd20ea35f841ab25d3fc26ee3c5f2bffdee6fc79cadb0aa4d399e04e956ad6b59308c96b509da983b47d578bcfbaa02154281f68386558c58e9d62f053f77d9104a8e1a7da6d1a7a8cb189783848ee194b04114e8c1b6364efce350c691b0ab89ce07d11c6ea9a3a2971a0d39b1fa45c5c8ec92c372a9cc501751ed5d9df7dd4ef7cfd4792b8495f0981dd249422105ce25c0bacb87efb95f46211abc40f3df978c8b52d322cb4e6c2c590e93516be6f6a79dad61a8a989226bd2871098f47096f424e0e98e414a6402cc5ba84d7812b27a00fb193eeb6e51e6ba8bdcc8e5ce1bee8d7c0ce8e5a32ccef83afb9c510233bd00fd8184a63093a23c8ba173cbd23906d4a3a46b6b9cf7fb1235d11cef3eccd2c6b58cd7b99c01ba0a977114fb1d24d51c979e5d02a0adc8d0ec7962308f30037a4d53b233e5135d1bc6c0bdefbe7657345b4c76d3bc7aa14754bc78411b0b7c08342ead615443144756e30dbf05c1a81b0c5fd9a7af5e64fe67899d77ef418fe96c7442928a63c6ce5f95d69afef7242e716e0e1811908cedbb5d26e179a0b44721d68c63269cd83394da5bf542d358e3b62b94b4449d26e237d0cf61ad8e60e466c210b5c0639b82d6125c1c89e26f0b176090d460b0fd8c08ec0b87f6c36287471724e7f7be05e7905d4f5465000570928ae4a0c1cf1be28682585db0deb4e4ae5e4d21a9867539266f49f8746284bf69dbe698681f21e3a65bb7698bb979da46ef96264ddb519a45cd3305c43f8dd299ca0948115c5237740f1ebdbdd0d417075b772308d1c0e822a0f8fe02a723e1d119904d77b097898f89a13a3707b85503c960712213cbf0401ca6624be1efb28aa1da99d5e80b6330bb7bcafae4213461cc99e6277fb7b2a4d62081f726969aae356c739fb5f38eef5b516cb3f3ec14ffe35deb8a792042cbcfbd4f9a6659414777a000cdf8609daafe21888ab02f99373f5310c9a030eb5e5ed77fc89b1dcd99b892f09c8aa0aa51cf514c69f6cb1639cc893a096b73f6a0a0a652f531fb874a1863b9d77d97fa7b1fb68883eafc6e152278e372f19f8a0855692137084d47094de098137703b2e062a41e45f4614bd2dcee78ba61a60063614cb16140c1e193331982e2457ac270f7633a553c4c8008528fa078b948d79c105bbb0afdaa65f24d1ebaaaf990853b51c44df3c9a3cb5eb45a1dbe25a48b696a7e63518462f8d225a2f1119c9b4e32d5591871a4ffdb440c560d5682faed0f24d203eeac6449299b814f6d5871db4d2f9953e433ca039c8b20f90f8a6edb458331ee0df676849058458b9b9cf38825a834615ab85ee87d34375a8114c00837dc04a941a12bda19021e668c9588ce03e71575e80e601d18f22dd541d8b814823841927b3943d4080ffc34620ae75ad802670eb4132edd739d9dc00aabc37c4c4f666801fdec97be873919439ce00a6b62a128d0c0470041d1bc7883e291b8ee32ec6bc8b5af0e9285c2c8f2ea9ec683094c0e06b784555d8e8ac0c8407c2820e3ae81a6f80169bfe1bb62a06007444811eeab233144a3d00e144cfe1012434564ee0814a3b031b202d1350a427f9793c779a2e3afb9153cdba5b541a74a538057d82306f513933d8aff86bba451386bd162b4c74b837a792894ec5aa3f6fcc92f9d148dc9962db940072ad5cbf17e12a48341a91d256067ca01aea0bf50b8a8f44781a23a427c97ca319aa81b21f98349efac7dd14ecc46560e4e2316991e352fbf5ed8a072ef9718a4eeacc5be9c66399dcfff1b20ed9824179ca1f40c7556cbdf8c9343ef3f847f950b24d38bec73cd018a52f1c29002bab189c4d2bedc5d23b128143302cd402c849601f2a900c05007801712143226627e2999af3b41ad611b8ce53e6fdf661786b223ae4f5afc42106b18b89fff6d10be2fb73b0e965ba4e0b1fd1bf91aa6dcbffe09204366dea285b5bb13c629cc7e306744a861bb6ffbac7ab6864dcb5f3cf06d1e84fb729a2bb2df25bd7da67b996e4d5d4f2a9a4583f4298bf4217c3af47d2abd8497ace0d22bf1ef272e08e74111bafe8579862ea16f9fa463324e2ccfd39dffa43810fdee32747c58e51b93bd0e4d9fb32afe4a01a240a635e2ed904dd2951257b17fe088a012bbeacac0cc2ed6a988f7b35c88e03a9a68370379579a7ee865fe029bf55654ebeec79b2fcbffa1dd97fbc8fa521240b46290c8f2c3aeeba7d01996f82b622c07d121e923c0ea85257e3e1757aca68eaccc52ecede8d801423b6886f33046b1684e46338662d2a211e019092b1b1fc02e6e5b4f01700ff01a343f6522f3db547064b35003b66df482b37f8731f0dff088efd514fafbfd39ee956aea95335727cbdfc9d78b7e718ad5c80a10fdc561118834800427a905692268d142781e9cd9bd144694bbd3afc2aae3c8d556bcf6d6ae97816e794acd8adda90cdb73b821e35471060493fb4d45eea5f917c7fd5c8387d80f135fb3025782e4efc227b98435e7a607205c2fd1bdc3814c01e0b0a4f508b90c75608e7a9d4880613cd6e99cfeb59fe81020b6fce887ce57b609444032d94108d5eb60d978540d86c6be033e5615450f5f51ad22f5439e586c14a25565873c8f39b2eac7f0f5b7d9e0724ac5e47207985f0013063091fbf06600e925ba9ee1e63a8c8a8535cb14355cc78da701b914362d1e6e431d36146819a8bcd0520699bb826aab9ee91635c2f4fe4e79023a8b530f01a15dcef6cf7e411267d6315be20ccbffbbf8e449dae87fc08ba0374e8450bd3d95d862c952b621eaf660848f24213815970b4e714ea43d9476fd3b81afcb8d4f9b470b523390b8951043a71b233c4484a9443a200bb96b231cbc35c5f665def00897261b71532f8546619fc023c8d465c779f5ce6b4f603142a60c0830863676064640bc8aaea932c104976f026e002ff5a8541d96a2d4f5ce931cb16a858405b8e3fa6769607e948a9712116b920f90ad72aafbfda1bc04743b60d415bab6c66f1e7d435b17dc2ce827fbb9012673a00a55c415b9bb38c4c85ad3ec1a34ff85f0bf31f065000228c5aa01bf1e1e6b365375d438441018d9f098f186c5177e8ac688b14d119100e74724a7a57bf95c89a9d4760dd77d52a9bb95f447332c02c86afaffa9fd463d38ac9a738ca64a315a7c3d581a45879d1b639911fb366c52d00c5a6f9eb3ccb4a8919748e40f53f2c000f52c96678783c586936e1c84c537327b0a98b838cbcae786edb2bf65a28e7728b3bc01ad683e976aa4a5fe8641f0e93cf0d847e4fd17e3697d845dc2df1383eeea7f94ff8089318be5f89b89d2230e9570e7e5827ebd8ec0093c798e70e4e61ba5c9d898f08185de6a23a66405aba9e7649f7756057ed9d590fa3cb02d3504083f825b040639c1d83db1698fdc50ea35fb414b2eff8940b234721c7876f1df5133f8ddb0f8b31c3f2d42676c0bdfea88c94caa3feb12845175ff5e6c58042aa748250d2d93e7c93ee25d23cba127afbb8a9db592394d9211578f354ddee851ee6170f92c2a84b522d83f05e62b662b008ca2ffdcc205f297a928fe93383e58fc530d37a975630de2923fd0404544272a8c974e3393d2c0b0afdd8f35895eccc45017569e4b373e9b6ab817674bf16c89fb84d2b4ba663da39eedc495b2cec7fd8702d691ca61a92b4392c7cd7e1beee79e01b7a8ac7198e8f7cdecb21b69f595d7de4aaf7e5d011528321ae79befcc976f5952a7f31e20c040876bac8025403fc53eedb9dc554dcca0e2b931797d36ce63d3af435fb575a85d7ece71ef6e3c04293c2ffee2299b4cd2211738c2f1aaf978fe065a4ba4fe5a499b1fa94eb2f8500665798942662c6aa0e26b7ce7c8cd0b8b2a5ec45fa6a7bc886a51260d7bc1a5f47458900210937ec17586809d8aba4416a563259b25d629c57f8c562e9ae3e1065834af6020701a18e4fdafc849df877057acadea4b290a6717c4a609c7ed1ff3b3bbad900267378a2938d68d4c1de5032ede3d420a6cc1054febcbf800e7e4343e474bc77f0797bd03a30341f45b21c05b99ca3bf84235e3b9e14f27c0e40eff9da1d32177a0e3de50f0fe45c6b82d4bc53d9afceb79c3fd60c7dce646c5219797d0b2315759281f71dfd14617984a013f9a8c167ed1e3e4da958674929f772b763afc6c6134381900b0a0f6b7188d86c9764c85fca794e2b59c1fb5b388887cec29b6cef7dacd33427c080f78d9f6476413db0b1421c9e3275a02672119df3748a0beca555785a00b818d379a8dd4c82be2e88360c2beff4f5ecbd157a69ec10a5219e41418d403ef79e562c3bd0d3d01b35fce3ddfa9638a42b044127f8cbdc7e4853e61f529d84c19835528d93b5b5351dde0abb166ec6960bd19ed2b26dfd8fc4133d6bb6401bb76cca00161e240e37f14da264a9ba13f1e893748486d4115a0842db7a3bdacf905e6ea1afb1f85c20403a6ebfa0b5e0170b1c87ad04ef3007c8f33fd74ac9d049a089f1d1f9ab577800606b91ecf7d2af8f0523acd0a613d9a5256590bbdc9a1e423614e1ba6bdebf82d1215095fc4aa9b8bf740426c3fc3c0c89a30197d1eaaa837185839ce8210efcb208dba2d6b18e938a57f1db7d1d2ab27670f0e53b9bc2a607bc174a3b03eb2e73334b5ffc42f7600957c109591306f64d411f9c2e9e02ee815f6207fbc3ad047095e606e515e196e492ae39f1cd5b688ff1bc87d5adc518eca3c78e7ac9a0d541faa8dfd75f16605943f512921bda1548741949de5fd4ff23b2baadb12e73943833b19e2c211fd52e35d2334fa808462e8cfd646c7a2d4ddf58df525afd7caab4c7d355aa8fe3fd76c783e46ab1e7e77102cfd11807ac0db1e816cc230e895aa55dcb25efa6b04085825232749b2284f6160ef00bc4cc12533b1a521c34c7bb0f8c90e87993355bc26cd4ae31109b9c09400a139e1a5ffc09df481291688008e8342002212ed17944aef818132364ec148e5bb92b7e51e4334c9ecb3b2af3aa9e7d8f2030da57d555f20dea4e552bc38343fa47210951c58ba96dff04272f5f6a10a7e41c41d02091e406f64cd1aec72e3e9c4b957ee27dc39dbe0c0c03ecaaa085f98b5641a6bf62653e5f6979df1fe84647158130b40a63fcb5ad6154b56afc0a68f9a543bc599c71a186472bd536f3d2f79cb78bf6bc192645cdf8da064b0011f84c2d29824fdd44e56b3ee6ae5ff4d11c3d955d1033bfe1dcf5550a0429864a7a7344370fa51c1f5fb3338d8e48ad9cfdca7b412b2caf4011fe21cb6455bdea0a80703ef92dc0cb807d147587d70353f69717ffc8103fea2bbe0c1ec455a71adcaab03c231ba77085a035c8315168f21c4719e4e22cae3a96ee35ac4b1f861dcc640f6469c76a25724e2f565dde873a2e5886381e8dfc359d3373d1031d7e3aabf17f1a3cf800c0870e6d9084d0a508a2125c552e8e56c788f7c41ae1b49877d66b2424fad2f0528f2f8906675086470fe96d705d7070e82ef8490d74dc3f326e5ae612387fd96072813bfec6e86dc9999a628f7921a95e5693c56e483e43c40cfd4fe4fc7bb2c5242838cd7b7cc1f38d3bc63c172d949288b727acbf7c1223d11fda613f75cbf069cb32bf6377b71d0cf66dacf1281083b6f69498016ad82886c569307f523401f7a4478b344e47708f8618258b536a65cf591ba47b14360ae028ffc95435e05fa6b9d382c4ae1cdc0b6ab2acb58d90a503d60ee4284282f080d734026f7ec96506c9c8ba9ce333030c5c13ff3785afa477b4fed0e4348979bfd13f0147cce07f327a6f1a3897b9397afe03bd0cf9617fbdfb8cf0e8f83baf9c69ffb8fc852ea6941079e2ea9cad6fa846eebe296a0a2337f2a8a339759b9a262d150fa4f24ee9dfe9998a1e647ec719cdad7b37c1084c5022198c361da254bcfa692ffd883543196633eb689d445cbd7c466bc32d166aa810902535391fc606a5b0a82418907548715d2631458bd55155f4fbcbca2934634b74e918f92d82cfc3c71d5bd944da359828e67ce4a6af23fc8b71a3bf66e5997be32f8630d3d6f000cf6dc5fd96226ad282719c0dc0c86934a901ced65106328c3b5f29eb219286d1aa4229f3f8e1407f7d84841a4974016928b5ec3864e3462dc0d6438c7c444c24c3426aefbafb720794ad213c6025800e4ecf9062e92d235826740697f4cbc84889220bcfdbd3336119adc5a130d053d81a75d23daa512e2c54f4f404237bf56352d84c87921ba18a2d443c4de7305aaf67db816f60451e1482e019408eed3eec9fc56f72cc7135c56dda34582b949ba6dcd358a4493bd4e608dcd329da368945413e5f2ae0efc728f6af331c640df72d1a3aeb420da0836f7cda750ba7926fba85e614859adc765e83dd17087a70f596309e828cac5bfb293c057f1b2d211d4de25c540a57c6af35f435f6145d42b985a1afe272a84a5ee2f52b9922f90624e83ad663131a6736f624e4de50d9d256fc0e40d1e9af9a78016d18c6bc18b1716175af536cd2fc68896eca00d8450563c2d572a0f05007f9f6c7006172d89f01ef2b1c3070b04adfc4235e84ef02897640f6d54965a5c45e70dd36178ebfdae48728b515257339a1877862f6a4218955e28ce0976234edbb8f2501daf3cc214ef1bffb9d01aae9ab4158fe3cb13f48ec1459453b3f67806f4cdda94abe99b4c25ef8d2398368cc113842c434df38b160ed7177f30e6f2bcc12b3887cf3dbad00ddb5cb51f55d3251fa38bb50bb57b23ef2371fe068e8bab550855495f959e46726695f43fb353ab3ccdcdcad4c377c1ac2831b4bd9eb9c6eaebf23ae2c4fef4450e6ee14edd669e359ccdb02699d7eb5fd24ab4645bf91b3c0204135d7310083f549183c39addd23c17b2e1aafddaa1e587bc7188e9144cac8349344e1d1c40f002b1778a42b5090b14d948ce917bcc3968e44b3bf6b3986f40537909fdff934aa88f403f300e8fd421c2bb2212c155abaa79b8db8251b026d3257e9a8e95cca10766247c20d216a14560180e38220674dabe53a80dcd66d45e9f6bcf205461bc2570c4d972396035163718b51a9b864ee96f5c1efa6ea4cfab16949804f9534d20f23cefb041090ce355ee6c0c0cfa7f1ad1f831c2a89b6e1f50d32eb8d986000cbd688373f27e81e67e6a92152abc0e4447dda743f327fa8a8b4f3d6f10f8208b421040fac30bbf404fa8f771445f86c46f92a3fccb78febaa49e79a2b3be38967335a2a160b428b0e3fa6834f619356e02b62d07513d2891be4ceb81dc54ff692ad3998ced6de903dcd8215af9ac255b5ebc8626cffedb201c66c7b5cf008f5c0aafd947d887d24a165ea596200d7f3d4690e93b89d39b3de9a1656843c963f53eaffbe3b6b8d001391c26940e44ff03d9916412ed95c7f357c0543d3710a6cfcf8c9b64b10b917798b16ffd04bc1c5e886415d3cefa0179a44c6989b03abb6e419df1c473c6885420181d3f154dbe42407028f0b6658f7d05017e012f4fbb1d2e8133f37781b865f9ac2a2928cf3cbb24e12aa98270808df617c42229b2abc35a39bfbc4add30ce6ce7ee63cd49c5cf70f529367cc4fed36817448f155e7e7bc624790216538924d743faa0c58b51e851c8616b00d1ba88e8221f0a22866b7a6238aa2f02d901f3bd21d97d055ac23298d363b00c135d80a2684544797c82c3f6e75be85149250fd46a4aa607c5283015822eae201d7e86b66b9c8bfc889401ad1edf30d70c11a4a184527425d7f76afa98c151912f187b536dfddb5888fc40d76aa4daafadf6b85f3933ddf1b5a49e7ff2988812bc492b385f0b1c063689e79934a6552f5e31a6bbac32efd126bfc09b285fb152ef32c45559c682b0abe7d46bcdb84f9324f7ac6c656cd4447a65f4290d5282a087c9a43cf378caf2221b0271626ce5df1b3465729af71cd9d6101a0ca5955e159e84600ef69eb8a7a594f268a82346a9894447776984b0bfba9da9941496696d10f59cf257499946078fc377b84c63386004b48a757d33c3c24399dbec8ee14be7fabaae61efe9395ab77f1766e98d3240227de1cdb21f7316964c4a20cbb102089979e1b8f91b4b4e6027a0fd81a97016664a8d3a7a3607b8123e739bf3bc4ee24f7d94cc3240f42abec793f431804d41bde580b230a1d4ae02b87924327f6e7b5baa428f4cdf8f63202c1052a8e90cc32abb67701784b5f2f0e42f9bb91643289386de6bd41463a306d7c16f0d411d7cdf8ce16c5809fee17e9a433c8497f36b1fcefdb638e91d7136662ba1dd169991fe0cd74bece518a29d8edd16be85f4f00043456e181f63eec6016e2f60de943b60b161c457d46f32fcb7d4639b31c69971dea5178495672f6123c8a5960dbdadfd3430d57a04e1d72a83c88bc44441f0e80f3879769c0d73438f2cf10c79bcc16f6fdce9afcc7ebc6ddebb2c3a6d28fe0e3ab9229bbe3503ff2ee4b986600d98de052d3ceb703c22e24e1e7fe00b875a6b5110115c0d53013539944a91c5438783f12d38544c8cfd3486537d70acca4e5bed0374f5e10578c114f5f9b750e37a29169a7e17c6b41811dc4496fe453ecd4cf6dad384a5036b15cc12b18134e2c772d9c1abea0a1bc28a98e8338bae61978506d4212a0b1c8fee202f6cfca586ad3905634b082d2ce363d526600da8c7a3f5fe272fee23a43cc226238afebef89a866b1f8aeda63b41505cdd61fd3b8c943ef0913743f3e78b189a3975b47b948a3be202de8ffe7492b5b6de7241f859cf991f957affe77f5294da8b59428d0331f252130a5052d97d6a05c9fe586f8a88d0bc453e03cc4b772f7e1f72c2085da9ec39f3fdded63633653d67d5eeb05213756959f2409b227304ed88fb435a4c218b49c1e4fbf5b01c0658100803af9d37d9a0d88e2552f9029e93d50dc432b688ca865b7b51f45485d179f96374f6c0d0d27c45fb27655a2a9fc580150b20f89c8b5abf676cc8f3f6ad9ceb7991aa8d5a51a582bad98f0ad1aff8ad0df196d3021e915503e2263a44da4cea6c814c43099d49e99e8f2145fbac4c389f4f3c92eb81239d6f89ad6a40134a841c3038c1357972a25a8c8e51fa8843f0ff8c0401c1601ec51ddbdef337b64121383f01a2c3a34b7d2277cecfe26f309c3c42135c6c56454415e840d8d19301015629a65cf81e1a46296a77fc29e52af1ba29a0208ccdf60b05a2eb6c711684ccea0e319d3ce3201152acfa9550ab4ed369ba8cf7e5f60971a7574f661d3b757342b51b1cf1d88654c1b5b9300ab74112b93adb3bc6eadc6f8f84507c314fe262921f23dbdd19809015c6eb6bc9c424697d5f985a9129f31473a5a9c5f645a9845e676d4611b951b952883fb55fe8263ddaca87fa3b752c9928420576e69297798585ad09c0e909cc5ef177cc02b8458f978677184892bdc1b91f9b8975f9a01b9a2ef2ee1e9a22b213edfc6c7746cf4e6a4c096a97789b3dd04885e9e64b366df3d65d932409ebc4eefe2dda4c8dad0216ae8e9515f1e4ac38462957c7111f742caff3d2e2a33b343c6dec176d1139c41ed8981f759d8a0e38b028041616c6a020fc2144d12897e344ba27105237de2ca865bbb6f5e48d7526f774bf55c7502108c3c317ed96809c59dc652b93bf4d54d33adbf4a933f3e5ab67685c0d4d2587bc2a2a30ab6a1e7409eb654f5edc3e9cdc0a6edacb90f192ebd2436a962cfde1caba541bce64f02f549b5b4bd663b37b2c3187b93bce2b2eaabdbc165166523e12cb72b765a3de3a861cfa734ca60d4e9f61c28b193ecd252b3752760152a8a2eee46d4603010e3075f4426179e80807fc62b69b2d1406f61e2775bcd8e44e218d22faa82c256d04a6f8cef7140f8d0442310a4641b2afe7676bda7d872f5626cd72d124100213b8404f3bec1f677559841de34da822b5fede34a94a1c86f5d87778368b5067c1f54956577bc7153786ece7d0050148e07c3370e8415923e583d72edab8ea83db1033713441203bfd0ff32f2edfd075279340f0ede06439bd2e45202a0d9b9de2782fad70db540cd60c94c76872aabc0d4e60fd603a58cf67ffe61904aeb4619b961b243b38b67556b08a43aff8f31fcb417f4831298f6f05b2dc71d7f76e4ca02bb4f1c554d6ee27a6e4b8889a5a69623f30493da2eec9ac435b90dbaa8c5c125fdcc1f5f72943074098b8d8beb96a6ca4eceaad6b3b84c2a736dca310d1832d5402fc481d2305864fff89fe667c03acef6ff38347c7c3c845d6e26a280038afdee2be3e22f0546f10d7e3c862bb2c50da440cdebab28f6a0c6f65426e61869d37ba8c3378fe6f95fe7ff736c5c297caadfd7909ca7ac38f9e9081aac8756cd50ca606dba86e78c466bfef4145785450b485ac7e4cedb2ec6e18df681a91afe704e8174efa4f523eaa47c7b0a998ca88815fb6b591402a72003826df5a4a00ddefefe257bd48bb34fde13782fc18d1d84701e79fc5cdbfd69fef76040ce2bffe520f253a9343ce10f9cf1f2df9374c52e6f4ffd3d8b830c5668c4204d9fe91f6226f530258ee0a70cd51056bf07a9bc1fe20dd3798551db8514347fe89d840722b714484a572277cb5c0c2be4f245400da8cb071cc956c8904181bb387e6a4c95201fecd354e005cd0a997b58d70dbb64a6ca19e0b6237c12e5b3af8261f4a9d816e0458c5ef364ed6e581f10aef94826b0c0021b854006625eb51bb4219819e0cecba08b78860626c66fc145531523c701fe1de672a70d97f0e83a87d1c9fc8f2d7ee944a2c1364436fe621ff9aefeddfed0f4b2e85401310f288383be16f2b686d3f9066844636e390e3de18d544c8c5a923e7525e9c1c27f2937b1b154d3b411392b21ccded8751fb9a6ec76db8599c92c1017ca0d6b33f889b334bfe30ec8661da655b532a21fc3d276cfbff3b28ea7f27c79e0e2874a394a6c36de818401091f20a35cebea930b86ef607d9ec8aa53f886d166572112c8a60c28a4afb9e298a6a87650328f646865c16e504fdfe8e3861a7acaa7d7283844a814e501abccf89003e217a1db637786e48b2594cd407698c58af307100bc6f95b97ab5d4b4f21de38d51a8d81dc94e1ca8a64aa57855439a519a9da4d66a767fc31c8ee3de960b9e3d3505e4a36a3bceb509f60bb2d04a38139066cf1b7cd1b2d62a274bb896acfe37a54d52077a4a7613025c94998c96e5121a42116d5487beafd7ad141725cbf6e765e9fc0b322e4bcce18f3de9c3bd2143f2d1205f40d23cd459d49ad36b49b4195c653dcc31fbde7b4b2566654f20cb929be1fa70bfc9ce69b8ea9ed432ec0d6ade528b8c4dd1d7ec1269d5b41259940898cc0f57b586a701966c9bd8994fbc2e863898e28b94c6dfb14ee7b6145f382f59b250ba039c4b2009b07d0f737643ecceb821a4002ee96a1da9eea714ada00dbe17480e72cba82bcbc53fced9901ef8b679980b312117dce9c360249e9a4fc75ea4e8e73ff130209f5d2da888b7d1944ca4cadf388de0fca4210801aec977b1db02f99fd487b94d288fdfaa41b76031c422e05282b7e6638fd78fc4d944a0102901aa1725f4c1a65ac2930df778ead0195e2ed1b3c38d5310c3e35cbddca9b24fdb7902e91ad8aa681a01f953707827b319e7397ba6e5cf0c51cc19a025012a6d3e428f9085b1b1af37496b6449e3a2d9f0ed28a1c2e262e7d528dc50b5e7bc88cf4dc1f4667161dc36b416a63795d0e89667bfea398f90cbb91661d80c4c5ae356ad0f77b51dae5155d443ad724b0efb23965c28b55b18541f98cd2cedf2969a2731502d301fc4692b0a3cbef7a320cbb83f162c62dcbe450f9c2d7aabf759d873c6eb6a417007d962de5698d9c693a14640e53fc3f6077d677d435c51b7ed599dc948a4623094278b9495a715633110226771c8062867a8739f3b845e310c5962c28e0d8a8d98e513cce98bf33427535a74b081521b03ba764e87a96bde380460bf53b9d8c1d91f646f04ce9c84b60e531040cd2a1d5541bf9d7e05d82056007a2da18035c2ff6f0944496284b08128099007fc336076864693318f6176dbd1540bac9bcd540cbde9341637c9ef00a856f71ecf59a076f4892464efbd89dc5b4a99640a330ed90f2b0e1d4d97448c2339ae409aa24b161d1840442de99087106288e9e4e83aafeb585d17b1e06087166c2ca10513644c11bbf1e8bba12c4b48e0d106195a7411bb11298ebf31e9bb2e7af94e86d88d4cdf7560b0b0c177dfd171851b5148f114470b629d50182c703a228c0c35c411ebc27ce7de3df1bbce5db2739eeea1def991ee99dfb9cf0fdfb91432df7934b2e33b67a29ff139e3423ed94cce4fe7ebfae97c797e3a5f9f9fee557e7aeb93cd2ccff2c9f2209f8c058324def390cc70a28a1cbc98e3cb979807a4058c18f84084176c4c3145cca3c17b0ee4937958f0f1d667f70c79eb3f3e99ad7c6b9e12797a050e9e0a81850e58acf1d46b3e19158287e79ef3cab9e5bcc539cd27e37ce693754e666cf12b9f2b677db2158d6a43824c183fd871831e8e6c74a8c10f77dcb086920eb1cb4b70a854aaa99a2a968acc0f45ccc1850e947018237639aa870ea1a0a22784d88349f5c6df2814875ec5339bcd662a4e2555cef3b7e6391dbcea555e556e55deea9e1faf52a93a57a9dc878b57b994285ef5a5e939ce0c2acfb9fd645ceb67d00713b1e976899f4a653cfdf4d5279b947ab52dd527a33328e3bb22dff9f7c93aef93a96660c37f4bb2effbabe45397933ee57c7909e72f3371d3f4cb60f889c57ceaf21820505bccece8620d28f0885d8efad41c7dbc00872ca20062066ac46e9c09c52a9fba91c84bc52b9f72a63d3eb57d4a166d91871e53c01184442ce556c280b2c8b2c79721319686ea88a5dcf894bb84c5994bc2ec6cc6d33d9ca7fc48f7c44fb94f109f7229797cca9778cfa7e7dc27f3aa95a1a74f99d8c38936b6a08103318a88d11f5586b6104ae3ca921431dac6534f7d32ea6450f9ce67f708f9ceeb27ebea961d7efe095fbc30834a154673c440034620e1d185961dc434b1f1d3b74f369de98ce77c764fce73ae7d32ee93a58c64b2a882d499fcf40a5e9fafce5b18c5e7a76f4d5b28bf8092890653076eeac0711c37e69b2333d45fbea35f0e0cd7f4975b029acd6641b1cb799945dcd13787f4eddcec72971bfabedce52e6724c348c93052a9546acc778a0c13d34b2627307f53292f4f47df29a49451548ae85345df9e9ab5f34d09a586240d6c44d250c68bdd5a9f2a54d4b71a7f2b1921a6efa638fed6a56fbfd50bd11111929134aa446f54f43df4ed752661522209d9b1d9b16ddb36e67b2303b5416d504edfbecdee76b7a1efbbdded6e46df77bb1bcddfed067fb7bb71c146b828a3416951df5a2f2d8969d29ab4abcddaf96a571bfabedad5ae66f47db5ab21f5fcd534adb3d0ce422f0df31dbb54cc77ecd231df944c1fd13ea2973a7d3b9db5f3a542357fe9d0f7a5971609e02f35fabef452a46fe74bd520f3972e7dffa55ed8986ccc397ffc9d4ed369424da809359da60c7fe7ccdfd942f3e88590e6d0f79d77a6f1771a7dfb9c495813c957f426fae8770a51c146a8282365d4371924190649cc927c357d5fe9f4ed72d6ce575e39f47de5954505f82b8dbeafbc12e9f55756f92beb5fe925ead07c7cd4a10c98efd86da7d8eda7868afa6e32434cddd456fef6d2f76d2fb1a88f90bebd67ed7c5b68e76f0f7ddfbe7ddb28c90e1b897e231fbf13f946a818797e989c9cf81b97be6ff4f22d5f4d1fa3110bf215fd46a2386be71b851e002ae024948d44effe4bcb7cbb14d90e430c8c84bf9d030dab4e4dad5924613e1ebbdb5bedae806fe769f769ffe99ef05b690d2ddfed32bcf5e59384f98430c8577458c8f2259f3e3aadc34a2109934c350035ecf1d31990436c3a09dd237dc6a6afd0b019e39fce52e8a3fc22993ebe64924dd48e6a646f2f7df48a84bdddf4d13530f6f6d147dfdab0373a7df48d0d3bd5b0330d7be3d2c786ea57f4a842f7c497f1a73f6124f1a7339130c9245fd185349971458aa12984bec4a65b09e32ede90c30c236e0852638ed804d3c35d6ce8f2d319d03dac9fce618fa9c2463e2c7ffc2b993ef216485f9e956443352cce3a6a8bad30b0f48a35c2ded6c76ef6f3a8a723962f1de7dc59f4d23b218662fcc1ca91162b1d04141359a56cb1133731b5dcc5e323ad4ca19e452729e39384923d7b3987201ae2a88eb34981904351c8da4e23624bbdd5da56ebb6d0ec577479e4a5cecb9c9733ac45f5a8b5d416aad5da56ab6f0f75d5db826c1196bda862e8d9bbc9ca905be59d437388a5f34858fbb4927c49cea2e722aba8ce05b6230e36865db338ac5ff3b884718c9dbdfe60b5bf9535564dbb5c9377daa959d0cceea3a4619bb333809d84eee1233e4a925c30f4ace7a41e885efa4fc76053cf4a6a1071e4a3db6e812e1d199dc3af0ecb3f1fc8b35293d0ab9e95d418faeb7a4eea1a62835e5784652e403cfd009eb90051c5f357db0586f5bff6a36d39c34678c3a98f2c7ae450064c2cba8b61355c244103306578f962462c3ae7c48eb1053df37e3efbb7c65a8264d42e8e416f858d41512887ee899d02c2dee8154576498f4912f6419184d1e82461327e49df59320013029a6e907e1c7d466cbc6c3322d47718f193d5b4abbd2a93ce5f138ee3239376c558d3cd4845dd4d41127e4006f44cd38175b0b35d71a8231c3298318b5d5411ebc346af12369d9d9fed00a2063462ec058e2f49b109f21653c478065ae090149ba00f52ace3963186af18d890149b600e1db18e7ab3097bebc71e26d64023298c4d066628e114ebcc88b1db98a49f72b1ec2e5dd0710e0e363a9876450963b67f5b2d9764584bbe7a3a7b64249ab33723a1ce2e19099742c73aef664c8377a25330aac13bd15b12169ff815bd635443cdcd359a37ece629af1ed7e09de8293082894e314cbba257ef6a8d4eed8acedf4d8f6e31868991a9a42a2d8c4dbc13b90b3b49bea20e36a67a66419f9598c870dee91b56db0c769bc1def989303f7a9c5f0b2cc74f8923681fbd6bbc7a6b5a9face6fab392673fc2e3caf14be4d93b29e5a454d3b6cde748e561962de9f77887bde3eafc6493d6689fcc6eb2ebbabba374daed3f1d5b885fd32eb6f593798d87bddea7b86ee57d32effbbec8350e96c3b9c50a44632a8f4ec3c25e9e675f4105129804cddac51a16363a934fc68076b12bf19922a55decede29bf3ec403146303aeef83c6d9e95da100ab3a236f01a30cda35786518fe143a1208764636a8d1623a04261a32b919ee664a36bba5153f90debd2d923c7d89e73d31a6c74066f7d19c6df3c0ac55f19e34b8f616d57ac2a29a5d397e185e1b95d2c3b85a59bc1ce29fd04d367e217a76dfb1cda44a007fa4ee7c7771db9c18f60cba64978672b7461fe14f99ea73df75df76bdfc9e931988ab2b782362ecd63d0a67eea3bde54ddb1033d87ad9cd81e8344c0db6fd364f213f9f6eadebbbe1dc886431160f076b1fb2b79961d79aa2ed0db30f1f9b7c3e9646f7dfa1e14e9dc6f9f0a7336a3bf7dd21b94bf7d2a70524c36d8df364d3abcf53904fa6e46f1bea65d0dba303f4a4bdb6adac529ee5417e86bfd8eeba6b26992fa76fa1d5e183e861b0d3acd39873719db5ffab649198d1bd687c0a197ce82843dbfa47f0145c64b4ee32512e69d0b3e3ffdf00e92904fd6122b8edac54da481ecb19620cddac59b33ac56e69d38fb2d64d2ae1f900173d8cb4942cf4e6d704a83f4ca4690bd9cf4c3002652d3364df3bb39d5402829708c4bf9093867cdd96c3abf0a71368ba55c03fbf9b3a9e109af0227c552a1cb17fdd9356cb52bbe06c6a760cf606778795eeb541a5d03cb5b6c01b5c5137f2af42ca65d181e0abb046da66b363314213e3bc7b450c8a779a46b7a4ce36f097d6ec534efa257c1cd35b03e0bd998f67c024da8c634ef781363790b2e43bf0597d97fab7b788b2d9cbe9d48c7dae3677342caf955e8598c732b619a77bb508da5bc824135f8c452a1e64235c68575eb36b07a0a14f28955e7c0a01a6aacba904f2ce5d53590632970f30a6afe2327d842eb49b0025bd87e865068f882fc256ca6c7c049b1136c7e02cded77edd1271894e0ed97237869c3ee449629d3824fdfb4f004cd679802c7b490a51305c436cdbe04ef08a67794eab48bfbbbe85de952faf48e3bb25439efb04debe9779b579fa89ee6868d5dca9b6dd8e8b77a57fa659f1ebd9ba04d93399b694f9fbf26713693cf5f134e7a0ebdfeae2301f7399165ca942913d3bc052e5326e64971a280981656f962ffe92ea5d1293b72aaaaa68b507f86364d523f9dbe085e5e9ae7995db9f46c6eb56e33cc6ddb6a8aebbceff33a2e55371b6069830d4d930e453a756d084d1d564a29671319d694d1b64d062a3dce18b76dab298e8ba9ba61d1344a697fb38e73ee4cfaf6a6afdf456f764ffc96659a5e8637fea4deb59f5a3d7baab6822cd5545de41569455691397c5f19f4ed4d46e5b7c7a86afdbccee5e2e1f1f9b9c346bf3cdae6c5a69a65f3e2d00cdf4fedeaa72eccdf7ee23b9d269894c7ddb381dccfee912d4686fd24c6d6b4ab3df66129d77955c2aa3f7b05ebb704a562a5c7dd2387743ca745c472c3faa95b4cc3aa770dabdf9c945f22357fbdbffdd485f559c2386b53610d3d0e7df34e161bbdf33ceeb8145739d5054aa26e9dd6d16eca4e806a0b396439939e8bac6003d2da13a3e39cee0409b389b5af20613632b441613a7527d13954017b741aaa208b0aec91ba0aa2cfd0463ac7a673acd5ae760a4eb0b9b0fe976792c1d1602fcfb7fb485844816341d1d99dba231d4fae7f0cafcf18fb9bc1fae33c94ae99425fcad6a4d485f99c23db7f4ad6122b86dac57f43ebed0c7a97baa5e037838d4e1dca24d23dd35b9eada1917adc237eb78acecc5a62c5521741198e0737446c8608690501f2a38666866557aacfebb854dd343a6547de69e7af8558e69790fed3cccc301932bfd8bb23c8bf8208d4dd6d48f9c9dcc3ec8a7eb93b9ecfde50f8b2cf767d3358768d1d8a16d676b537a5c1b65fef6574e914f4a6ccb771749c736391f5bc1a06c35d7ebad562afe7d570974f35b53c5b335736707983bb4ceed263749c7329d46da89fde35b0333afd8c60fa5b8865be09858eb17cdd4efa0ebd396f94863a827a89828c35131ab676181f8c68a8da50146a526105b25689492a986672fa699bbecabf6159e9a9472259abb5ad96bbcbc5f394c8e729d14f9b9079a76b814386387521de457689f976203dc46dbcb301e3cb4fc89021fed336207f273d214342eee90d01998580cc2d90d9b541c9a70a2626613672631a7683fae96b50a6aa20a147240caf6424fd0c04bcdb989ffe03bc5d03023dcd0c78631a2cf0463e2c787be9ef045d902ad005f97592eb6fcb39f032d3dfd64f4fcd2717e2dff914a5a1e653bba69494522aa65dd3271410f6cea79f49304e9a509dd43d15aad540b0e8180036e7e34fe71c151fb62b13fbd30a0a0a12f289752ee48a751e24d48a752e54639d0705d5506333aca266b3566c868dcc6c16eb3ca806576c06d9c72cd6790d3eb12ee4e1c2d8eb3f5df3cbf3b2d5b2d6b5f0c804419ee99767863e5bc843a5ce4bff9c67ce61bf38ec37c8535f312c3ef18b91309294536f462279e31ead67b2a7d82bfb064630d1899d5207a353bbd863986eee4855b1a993e48b9969f3a29b22a5bbbba78430744bd906d34fe9973264de692d0adbbef161a3b7b70fd13b36b0b06cbb6c62d44727a1397eb266b14dd2b79fd03db7e641db2e1b198ad02f9dbbf061f4ec24744f7f74220d4b72349bcda8c4a2e7b81a16d44ed1798e342ca8326561a5339c3eba92eea9f2318209fae82a342c2e414202975481055c52c5514fbce163e4177bfc96206d69177f1767739c2ae61d7627fa0345b25c958fee12263dc286d471470f3598c18a9116311b8404469350145fd6884169811842e4a00d3260b4a8c01d7518cd9104161ad020165df6908d3f952c6d81bd39cfb1a313477c9468e0069b22e20cab915101099ef8626b5a4676368961bb1b3841840c6ad89967a53564a881c9aeac18e1613127e8ea57cef6acd446177f7364472e6218763661000c15b6bb01191c50834cccc2d62a33bb7a565ac3ca096cea8fc420ab3d2bada1a57b566a03097965cea56aa1846c33b5aa9327d5960f43f152f5e1248f4e5f5b3fdd8dbefec76e1e7df4180727914c2c6730c7b35000aad04207162bb65891458c9d8984b10e90e08288273864804426c6fed33dd18667f79130202d69281186982db8f4911463e79130a021929cd8810c8a946c9023c6eef2169918d53d63bae77baee11590344512483871071632c4d84a176f18d1258805608811638f6118c97cf6e80465f3eaec114cf76cce22f0f9283e91a97b220dcf1e97240c088b315c3c15d143d3133b88b194242b3578811d653861478c3d22754f0c7af67824610ac0e28d3d6820a30554f688b14723094bc2471656c2c0618d21aa88719ce1d923117b1c628f42dd03e4d9e38c1d067629ec2cb03f618f4f514c84ea9eeef9e6b85efae53972860c7f7d846257c9cb2ebc44e39799f84b164d7fb9e932981abf1ce6e9875f86e2316238fde5281f6297c900f11b838482f88d43b10a96327f23110fb12b462dbff1480b9620fe462416c46edc22c46fecb234c46f648a5fc650e36f6c4a8a605e86798262daf249b3d9ec05b11bc9bceca02ab11eaa6264c7df2672b2f2b2afbc74d9475aac2023a16e6f79d95d5e3adf5e7ad94c5fa6e0f2b79b7088dd06f3324c43f5982be2f8db512f6f9379299daf147a29875e567939857469e5a5db9ad618301ef9851ecf62b92c1280ad3f3f7e2c256f9dadb3ad81b51f5827cbb22aeb5921f6c8a30b1cbc882288348e3cc151030ebe38c1c00e1b65b0d682765ab0e641220f2a5dd13d91e18a1634d238428e296296ed100306153348b201698c988d54deda226eadf5233e5ee4f1d6a5d8f1d699ca833ebfc440b74b663cf84596071d059f0cac21763dd618ac19b088582ce7abe459dc85c55f9ec5e230cf0259dec5b37cb2bc12f12c6f5d7996fb16397896bbb87896fb7061e359fe93c4b39c49173d9ee52770318367f90a493ccb9f740f2b75d1c7b394bc38e3597e824fc652ead247582026ca0731a8d06008267ae04014a60e2676c043ec036f754f9cfd070ec327fbc071fac03903270b0e0e1a384170fce9717ce2788d81d2e3c4008cc7d162e9719288789c24193c8ed2118fe326f864385984f922458a1429e22f7cb2225e824f66af880108bfe3533ed98e92bf71be71be49bab961dddc80374866ccfc8dd7247f7363fde606c76f6edca788bf7124310f824e824f0622cdf12c168bc572173e19cbbdc77124a19ec7f18a1483c7f1163e198eb5d65aeb523e991dc127bb9962f621f80cc145f0c942a841fe2a49e2254a7128fd80521caaa4e58b2d3ab8a20f19a8124e80e1a2851969e84147ecc659194a414a43a0d4e68826a14d2d9581ee50ea9426a14d5954066a84524b51f0450cc0686143155dbcb8d0c022050d69340d3147ecb6511fb4919ecea80da53494d2a63754064a843e81c3539f345c4142091b8461c15297980a3e9009230c1a5a7e102346f978ea4e29751f1a3c752950806174c4e5a947a7289e20c2e1a937931d4f5d0a2c4f848887e09311c9f99bebfa1be7cbf3373e7fe35204f13737373737ee521cf1371ee593dd244541c601dec6a17c329ba336de8811bf9fcc088bc562b1582c168be520f8642c2876f03b3bcec227dbc9797b5d6f9d2fcfdbbf3e50d0e1bdf56addb6de4281c75bffc027b34fecf12184e01ef8642180200882de814f063e21c47ff08173e0937d509f207a1c1caf386e71943c8e6fe093e170c93204cbe2c517710d64e09351212bc0781040f0279f0c84aae439196a606ac28936e2a012bb9c74001ddca8c1920e6f207143ecf212192e72968b1c17721cf7711c8ba3c27dc071331cc7711cc781c07143388ee3388e0b81e3feb61512ca90e2a98f326ee4b1c4d5204716380451c40f5b7888dd36da01c771dc0ec76969e23920cf19a184162b66e8a2890b538c8bc28823c4b0438b193035c5b83d9ee338e78a38d7cf69497a8e0a219ea3a2cc7355303d6705962a6af03b3e771c039f6c07044110f40b7c32b00a1e3e04057c086e814f16020e0e0e0e8e57e093e150b1f42080e014f86420542ab2f81b9fddd3fd8d570953c1680d1c447941234c95d88d5b098be10e1d54791a3304032962377afc8d4fe093dd6869e33f40c07fe012f8641f6831e3592c168be52b7c32965b6badf5087c32eb45fe7a5f648a30be48112d367c1177f2c98a5809814f465d854fc6311961f1af02fccb1ff0c95e4a388997a69c53ce39339d6fbc3146227e63fce06f8c71de4c0f660c139f22548c9ae1f8ed2021f7db435d85c8dfb6d2456dd44748a0dfde9214faeda5f672f3b7bf74533bf5534315f1db633a2ac7af9c05e9fc95390c1115197de0576239fae957226df92bbbfc74be72e9a7f3954c3f65937402c1af0c239f5c7e25941c33ef9cfd74be5328c9df3934895e7ea795591400bfd36862c9f93bb550c0893041455cd1061c74c4ee442201127ce051451759d6b022766752d4dfb9c4f4737ef97967d3f419668af9e9415a00f184125496e088dd09f53309a42f8ac0f2869052eccea83cfed29950087e690e433a7e2991157a6587235e30c60e8448420289d8a5463f9bc2dc7186971c54512387d8a5473af84b917ed2a49f3b7e69979f74e9a700fc52a69ff4cb4f0a863ad1270af59346fd34e29792f9a9cd78fc6a4239fcd4aa24a00b36e8c8a1052d508288d8d588ea9395a31b90a892d445ec6a4578fcd58c8e9006e0574beaa279790bf0d106131b7970018387d8d5980c1007105dd8c145065a0cc5aed634e6afe6a43d11c0af16a591f9b905dd4de86e4344454605f0bb1d69f9b96df9c9c41d323032428b2f54c488dd2de9e70f4d14b103a22194b02376b7a51cfcdd98b6a6cde988dfed6913f3e3ef36668b9a090d1119c06f2dba02e46fc572ebd14fe75b917e7a4dfa59977e56a69f138c1033fcfc1ba8e44007559ce0c02336819e2022073582f80109309e884d1cfc74cfe91e964f774de7e91e1b9f7ec4278a9f2e45883e8cac84f1d3a3d3104c1011f1d39b89883b848a8823a968e9a7cb2823a23842c28b9f3e9fb6145db1c14fa74d568692c8e3a76b4b42cc94200389879fbe418df1d3abd19525c27c8fcf1e4fe193f52c11c41bc0006f0047e19319808d3f72e48ff8099fecc8125f009fdd13802f809bf0c90a5095a0f20420803be0931120092c3f009f03f0123ed9006a1fcfe3c1f338099f8ce7ca0ede881123468cf8089fccc8152f2f80f005e00df86402d8d9d971bbe3ad1d6ff2c97690d8c1ebe838934fa683441d1f82fd10606085871d6c080203872fb110c0ece0841e5f80e1030665c442b8c187e04b3e59089e80bfde5be75bf3d60827246fbd06f1f688a6b72ec227b31ec77dc1711cc7b9115d3cc7711c670418cf712efb649c1e1f009fdde3f30170067cb200d4d7ebf57af9023ed9cb8b88dee5f2d8277315f1f02080e01504b720780b04ff4f06825f7900f80480ff7c3200d42272f80f7c764feb3ff0fa81db0f6cfe0357c027fb8088a4cf31f2399e804f964304165fa488d7226e8b78ab8823e0931571323ef419ba924f16d621c278100441d0937c321007efee483e99571c1c1c1c1c3fc027c3b1e2c37b007b0fdce793797073737373e3b04f762304972792e48978cf272392e382aa521ce1c41720bca84328072979d020860d6ee400aa0ca8d41d42042104134fdd0068bc8dcfeed1791b3ff2c96c6a10613c8be595e596e52d9617e093b108f0c9667552f2de1a5ba4d8a3890f2aa03c1f989e30234c134c3d70e1d9c06baf63979df8e93d8e9a795e15a2a2f7683cbe11c9c68b9ef5bcd88d4d63dcf11ef79e0e0cd8e8e106334091861031af0426928a5ae0440e36f821e6d9f15ebfe7b94bc23ae6398f84cd98e73e7abce75286def368c4c47b8ec45bebd5bab5deb23e804f669d0987e7b8317258b103193694cac812e35cf8d2c7106182722083528c13f39cf3504a29a59452ea463e19bd3e63d0f1f3a7d7e936690c313f5d003b9fcc1b038b1fe23fc4753ed99031b2bc90ef8508112244881021428488c107cf530fe193d12a860e7e4eafd3ed1cf2d303f0c9e6eb9309f1c132fb56cb5d9fac453353a58e1da210438c0e5c20c74c4b065a8e700308a52c8298a96366869be199f166e48c7bcedd03fb5bf39e3731e6677efccccccccccc0cd4cccccfb88f1d3fe3c4d07b4ac43cb74e54f19e83f0c9bc9613376c9cdbef3907c027e3dcdb21766b886089e91cf97bc4a88f9f3ea75726b8fc74db040d4d54f9a9d444d24fffe0934d1fa33de6038e18a2e1062c58c2e28618c54148e80b289088fae18e18adc153cff964d48b7cb219282c727c90201e7eb22058d0782040bc02710bc45bdd83f340dc73ba673a1020408038962408f0d4c14f46e79c73ba7fb289f3c98088a1c3fff0f9c33df8643f6a0d91328a885d9d3ff2d3f92af9c95dc2d0e36b7c764fcdd7789530132841ed608819b4ece02556e356c25c4c732cf1d4460e546688d5d0f135eedd23bfc673ba877a8dbb242c0ecd66b3196235ced33dd36bfc48f7a4be068c2f7e06119b6ec1a0c14f6fc960cb4f771d7ebacbe9a7fb7829f3330ca69f7ef3c9e652ce5367e6ebf3f42f77797a99b2a883a114032a4269e43154c6100d62b40e2530334041e6056062f4090c2f9e2a1971c65327f2c9a8cd27abf121f3343e697cc827a3b94abe73ee9c2f2fcdd171d377b3ce76011d78bdefdcc6105483c756aef21adece6ba2d615986556cf3b0aaaa2e7cd193d30be2a7ad75f0cef79f568959f09fdad607eb238bf2fac5e38db55ed732014e9d3b315a6f2544a05b6fad5de8900434d946d9f916d46982edd6bcd0a5abff9ca39c1f85aedbc935ec779ff69a914c779ac1e531dc7a56addbc1914bd25d13d9fe0ad3f63f8f0ce2b367edca4ec6427258d60fc097aef8150a609d237af35e594562e5529ddbc763199a2afddd23fd7408f9313869f31fc0cafe6d2c8c69fede2993c1ccfe48971abb36e1c577dd68de3a4e4f90f84325d6a9eaa36954a157dcd79b55bac1e2b2389df08385fbdebc0f81e18d99572a69f6ac2b1555dc8bc93722e55b76d7a25cc707a518341d775fc35b1d1c2115cafb916ba1a9c61f3ce6db76921bee6d5041bad09751abada252fa54ea70b533667deb9404ffd05cd99776878db5f98cfbc63d3427c2a5bd8beb66b7bcf041b1a8ee0d262f33166cc98a8a8281ce0000778e081471e79e4d174487b8c517637e998451d75d471c71d77d861871d37b8c10d28a574abcffc95c065ca9429b38135164e91df1d5bf69c9a76c7945a6c60031be8a1871edad65934a9c5187f1de5c881d63d7320656c29573107f6859e5a630933fbcd3559c3ab79879ef327b51cec74289a6fed929a6fdbb6a5bc4b81770b6b6af3ba699a9bb0855a98439999996765a1e3ee6999f20eec5c036febb55b53b78686b73af5d647cf53de7960f554aac6725e9d764ebdeb40ce29e5389771f42b3845d07cb69cb302755102316b3e5acd3d4692f2f68ef3fc7a7e577ebdce673cb03e077a33ce7937036acecd7033208bc5b2d6aa7c05d6f740ef39d0fec73d9eb7ab9cf3eef3cebb0fd4bceb3490dffbe7402a3b3255a542e61d2dbcd1a353e951a3d27f3a4acdd494e868fc96489f4d9d5249a5a454ca29bda7942e6c74c6f052ca29bde526b7ade51896a9cc7fd35cd5bbe84df999e09b6b35d45c6b11a9e96277cbead94d882e46cdb5d9aef622686918a35ee81228ed8e1d29f58ede31fa8ca10b1a9d3236cb9a8f3e8760d071d7c5b2120d86be7a8ed76536c3955e7d097799cdf01d56ea5c1d763a14e9d535af9c771c786b1db6c30bc4b5574f8515ac48c46a420d6f9d39f4898ea3b4be5d04ad87227d3a7b9c451ade16c8d36d0d4501688a25268c7080c79530f08855e72f05232c10020a3cc238428b0db154952ffa23a7085ae88553861cd1e8905840b3f033e5d539bc5aeba5a6397596fcdac2d92e2daccf1ea1b053b046693d7353797a9a93cae9927677cb5803ee4bc73d27cf10ce76d18e87744d58de228fa8bfde6424d4db538c84e373172664083989f5ac040715f9dc851538b86725387aa8cf5d0051347dce38d9524aa7d3e950e80c6bbb04673b75dc3dd26f3b7b27c1e90d7acfddb3a552deddde757757ef34cd6b47caae94093813e6e434d75e9bb2ca71e1e41dcd690a346dfeec1e3a6738815271dad0cdba69dba6693b1a0a34ef56b3d2ed2b0c3465823ab71430bbe6e4a1abddca6bad9d7aa7498fe19cdd7352efba77b817bea977ab2ab754f7de946f9962d7f48f04df1ee767c236b7b0a67e9aa0c6c9836d58506a6e432ac86096e9329c52a6c018ababfea4779352cda39aa6c9a9815b6f5074ddb6dadad640999a369d5fd3bcd3b439356dce39abb6728156396934617a137ca19fd6f046111a4a6fa0b6826fd766d39f9abfd0af494d3b83d9a59472a6e6b6f1165d88b17aacf16f4ef4348d0335a7e0ad99355c806d1556a8400c2f916ff71a6679d61865b1baad696ff79c6e7e22a49c7eb259819ef3fe649c77db16da2ce1df421bcdb5cda73bd047508277cacbcef993fed3402fbbea91ab9e8687e5bfdef4f69aee992e638c53ce4fcae9c9b8699fb66ddae6cd59bf6dcaea6d73d694c7b55adbf2be5d7fbdd81ec31b45e7e71453dbc1ce76b5a25b6fb1a6b269a2fdf4fe19dead4c9932655e861f1d5df424d15f39fdae60cc6fd5bb1ada2ce1afa14dcaa184346e589b26d5dbabb7a718bcde9df21a0b18fc91b18c58b70da479c356e75a6bad5bf59fde363076b5d69af29f9e29cd8821d6922a98d85ddfdd44d10b51d1152c47485b92baf44ce7c8124d0e7be3d05015db3ddd4f74d1dba5df9cfe6e56741bca91d2d8dddddddddd4e39767b7747e75ed2514a97d09c48bbbabdb5fe8ece4f5a3741f9b3379dd93d7b9b3a47787c3ae9cdc8ae14fc4d419c2c553364dea14bd42a668e9ab8853cf2256fadf9cb4c4c18c0c3d3c5e788922e9a13f6f268218fc684bd2e974eeb880ad120d630e472f1e81cd948586252e358aaa17d674ed91edb053a63f8f6fe4ce898826f8f26cca7dead22947d8127056aa0197b89218d042d64d233b03727c725eba052615ba5527ba0d257e79999bd287df9c9c5d5f8a48824d59cd7f9cb4fccc442bb52687c0fb582ccaf3a5b7a197a3983664d393489e91e8eb320a1a1d90eb3d86414adb44b63b23732317dd9a60cf1e09561bccdd833c6197b6e9b97a96ddbb645ea5ab844a57582fcb4e51298660de4b711e1e3c732efbc339d3f11fc6947c1425829d8d7c4a50e9cadfbc4c8525d29df8294a74dac1520c72ac75a8bad69adc58ea540e6d7f40a4e3b24c3cc7a4c4331053135818961ba8723541c6367420dd5651a2a3215313dd91b9796bcb49c05cd3979aad03d1ebba6db968439bfa6f3f06bfa0fbf2613124ee89ecaaec92e764dbf529ebee6f3b5b085189e3a874b6cad1db4a84fbf39f5e3eaf7d58fab3aed82f1f44be75bc279ca2b78fdab6fe091eee1eae7cc3026f225bdf3ae0379745ee7a7997c4b9fabc2a52fbcad940ecf915abb5ab92e7a1d17da3449d5f005fa9bb720cb90b9fd2b68d2b329f5638c6136fb1aba50dd8529f5231b993ea5f5cc3bf7a680fe8cec9a2ebf11e457972f746cc953d582fc1af2129648bb6c05e2e84905f8295a61614a0cddc37128568944b188c14428188cebd96febbd508aad2deb2d976ffce44a81632cd029ec75cf994d899049ad4e4bbbe4515fe99eeb8a50318a4c075569a2b6d2456de4ea9e2b8f748ec8a324977c41d91b9f240d89b44b4cad3229a8e39c1b8726cb6b976d97f4e9b4fb69971256bb8d163d86d63498947e820a0d0b9a3327395e7a059e342c6875f4460d2f9d852867bc7d5672eaf2d261e89e7ee971d6b08e49d762eb74cf55f2f2c61d5ebab4f252884fb1a09f959cbefc16ea843a3aa91beccd7919d6844b6c2e99276b491550ed628f43b3a70e5d276499050796e635982900001be030a445540e467801846568082b90bae04005981804f30cc0f0220f28b40883441b5e3011c60c4b1d4d0ced01c405f88bfa02cbce5b903171dc91471f7dd060096808a1d91937706165cc12d114434d606992e20913508962820a195a40d5f103051860c41b5768b10407511edc1e63bc51a6890d29bef850015605982b3014470d7478f1c5183249403ed4a08b29b8642146173dc4175c00e8071734f100c41d73e06186d31e586051a38bd31bb1ca05989100a1839010733c6d0962347828220b2686b801152e5c60013d98e8618d3d70f044831110153abca0081da620c262a5870bb05b9f294534f460c44c8927a2883c0031d1822774506263068544978ea90cb2f0e045061dec9023c6613c41040f5b98c1031a6bc478882dd0b1002c0fb39fc0493f12c635c6de8a5e638c5c362f36522804d42325cce19560951ee5166a210dfbd9bb47b6cf70b6cb39b6cf766d3fe61b35dd3489dadd9b46a7d4a266a5ebdc80e21d8ed7e6891b489e3ca1b62b82350a307e3795da70e29d0852256cd4e8945b73ac4a0f1463a4a3e3c848780a369e90302391cf1ebff8c9a28cde492f7e346ed8f6e81d8d944acabda94c80f31705dff1899a9fdfada4b7181b9f9582f0f2dc2eaf5d2dc83e662f6558db858765f7c0a86eb07ad81930641e760b18c76a2aeff41c636f0e2bb1b1e56ffd1a93f4ecdbeb0efe4e9f15091bab9c41098da867a5339810f0ac8406d2337d3bd5bcfa4f779284758c3b8a9b78074cbbda677b6df786ea1e197a8fe99edaaec9d443d71e3d46d0c77c746a858d3e0586ee618f1e43f7cccaad1aae0c46019f70808516d86be36a17bb7d1744a02f7d843a42fcab82e7fe28a9d0bc431b15daa5cb3086e9bdb90c6d54904e9d863150970e14038a59b005ba7c45a7a04bbea26be006fac857748e6920c728c8b109724c821c6b9063fcc94ea84ad6ff72d20fc39e10bd808d2b3790e38b12b1e84c186682397ce881298e2b86c8c4a29fc030e6d203155d7871e38c33b4c4a2afc030201fc47883873b5a70471051310d28762cd3714e9284c9180fc9a197bdd2cab74b2ddd73a5167fa57baed4f2ed387cbb349256b47cbb2cea9ed87a33ec954252a87b6468650edd53d3aef6f619196c944937749cd3498e4eb7c8b3c7a61c970ec849a2186f117146b281d287549f4d84952d175d227e2ca994d49b60d471b52be6b874c0344fbb9a248c47bec4c424201b89ce491fbb880dbebd631959aab6d0798748bbaa1436d5fe86bd939b70d8fe66ecbc19abec6a4a15a1b62b1de7dc0af5d33bd6341af649394910af91d2bbc6c1724f930e36529d24cca69d487d92309b0e6d50f0c071dcc98d13095540c46f1c275441161588f80d8eabe0c63d086dda39e68173cc0310c71be476cd4a34c9b044407a245f733e85128e205eabb5948378ed1eff20decde884e53c7e54f3bc20f38977a60e3686764d87a15df45bd2bd14de994e41fe2051455df694aa2588787f4e3a4624a44460bf74c336e77783baf349ce56e79f7bab652dd4bc1b9417047ca17e0b5b993e6634ac4d58cebbfe96d0a74fc30bc3b3e0235fd37f7a4235d9f63b9f8280a9ed897726e72d46427dba104e12c4a7fb7ceea956cebcf2fbe3552b57397f28c81891b09de46b26f1cef420602bb191e9520dbb25750ff5e99b918411f1e9db928479e0d649bea6dff80f67b9168691d8f874ad4bf70c71213e5df3d23d2d9fae25319220ceb0ad49bea6a7aacc3873925a251a993ee34d846def68d3b77b00b27cdd802c5fd569696b92b00d2a9fcba4d5b7f2a8b7c2ab9c5540fc478dd338ab257f04a1f941d30aafbf2a480824bcf54758135e3b13de96ff27248acbdad8514f524f7addfcece79f3b7d2ee4d3becf857c2ce7cfba059bccb87516b864e6731b7ef926d655ce02975857a9544cffb905559e131ef9eabcca57f77db2cfbbfe50182224a9e564880b19d2b990d0e5abfbfc039bacc0253adf7993cf55feb9ab5d9d4771ade0fa17229006d2435016ae53791753e18d1b5861f86db217def89e53afe085e1ab7faef20dbc53e47f26a840f9c9a47c2abcd5d903234d79173f13ba30e5fd99509df32e7ed5f99371525e5e18feb2cb708afc06f2a214f218482034aefa3c88d7fcf01a160b5cfda85e6b155e12c4f7dc5a5f39cbfacaf319f076dee733dee7b12c786160f9cac6f354ca3b5f85503a0f6cb2f25413cfbb6e753bef9b22dff3d5e75e08e5f39910ca0f4f4d919f0aa7c8ff583f686a6a562b158dab68542b1a55b7792950c552b154b0a9589e6a0544150269209e0281ac56abd5cab9d42ac57219036b2342e7d5571edf86503a67598f6ec3cb41e95623749dab6a373d6bc3cb628556d642ffca6d78fbadff90f22c9573c3a2751aaff11917025698109f9909afe7ec2a170272bf54e185e12fcb99ff07d8c714f99586bf068432453e4df8f9acaa99fe4c989999e19f5e79ce02e7d784dbc5725613eb9ee7ac7e16783ddf9a7cfe99b072eb5dfc56616dd7e7edfa542194ee93df85d5d93e0c513fa581b4ca8dae73966baeb9952d0953b9e61cded881f7c977db56ab6bdf0adb27f3bcf3fcf33cff3ccf3fcfc1fbe4febc17dece199cce81f1a7b54ddbb6cdbbf8adc00a59beac7c39b128d8b056f9d27cb50aad7c6dfe8556be34ff69272a1454614bbeb6f0b27f614bbeb4306c9753e8cf7316495bb6ba721a200e84f31fde05f1aebae7b5d6ea415c3a3e3c2e1d9f195785770af5bc92203ecbebf77d2caf2cd0496559f9525556ad3e035eebec0de09ce53f5dabf7e42b57ebd77eb5a18d752fbc4ffe7ace72550885154ea16f5de5d53b0b3a61f96239cb977516589022e5559615de27ef79abf536b495730fbc5ee5bc86503867855082789d72bd700a7dee0b5283005939f51ade1f5d47b3729a15cd8a8686c6f3cfd278f5fc5bd1d078f52ccdf7d1d4fa7df5fb3e4fd5afd60df45c6ed9fcf3b66fdb36ff69cebf6d73ce9fbcca699c256c88cf38cb59c25aaeb20159be3e3b04fc5a4240962f1bded67f9fb74096af2974e572e5dfcab7f072bef2d5aabf15e2cafb3efa3951b92fb95a2aed6ba95c0576ddfc44889f6a05f6779ad7fe397157edbce53fed4488b79c3f1484849db73e13c2cdde272d6c65ca9471fa2933e947b3c6d061f40278567a8a8ad5ad84b5bc7a4bc282787577491810afcee3f32361345e57acaa20d36f05209cfff831aba911a2f1194f81c6675210e233de9f13213ec379abe514c4673c85203ec339d03b61f98ca7c0f2196e09a52bf8f25c47439b269d6fbea40b57c0f49c6f0ef45c7853ced35560bc40425aa0952fea4158a0cb177520a04bbea8ff006b401ff9a24e033275a66f09d0734ea28066aea74042404329cc389969fa943bd9faf429077232e32c4f612664c95a01d4a7c2cb4d4f39ae89e69b2f4955eadb8de23f72760a48d575072b58d8f825c48f397cd7fc35895e5de909cbd79000e87f78cb5b433c8803712050aca7dcfae79d0567fc0355d153643ee542c428cd0146cad1e5a57b9aa70a6f14956b9f0929b74b3ed62a6c219651f9e7dd0a74b978e44b651dc8c7e747be54b1ca97cafa0a8c65ac6dc997cae54bc539cbfb6bc28573b64be52b8e73962fe14256c8ed525970e534e065397b0386b8c69f03e20fb1be0a69deb0d63fed2b61c653ce59d7be123e9b95a7c26bb344155e9b5528422cf3d63a3f90d1ab9cf3ce82279cb0c20a4f9ebcca815860e155f1737274f42a20a49f9f57d994db307915cb57de5f1356e8f90a8c653e7e32167f76e54b581e4d78818c3ee540cf8197e5dacae9c724fe104f8137e53321cd1b36b572950ff15508658873211421ac94abc06bc328dcf42dff4221ce2ebf11be2642c2d9ae56e8d453e10d1272bb80f86c171055093f7e78d7fd00ef0abe5379ec3c7e25dc95db27ffb9f69520bff3540957e52bf93fc2ab82ef9cbaf689d0df79aa0495afc22fbcd4a7c8efee54855c135ea0efc21aa7fed3f16bd25fe329b0c6dad0bab5be8153ec92cdbac4c2da88c0797596c757855038b7a14d93e82a8fae0a2ff79c0a84c279f52e7e4db867397f2644afde116159e9e9e9759e959eb67c17bf1238ce59deb1408f4bf4ea1d775e58569ac3cb57e7bc9b2a955b90e60d6bad6a05be109fc6e7d7a49fc65923441aafe1e59ca6a3013d1a0fe8573de39fcbafc98c7f2a16cb55be44c50a55df0cf8d180fdfcd33460f72702cb3d578134fe81336e41a05f7d4e9a5e4e424f43502bef56dae70429e9c9ba8d5d59b7b14b3e9ff1ed6bf2f98caf687c89ca69426e17d0cf6879eb3fd2829de7ac4f04a0b72bc4997c75ee12e219f289443f2910711b979f1322e113f9eadc26acf2d5f993856ac957e740ef8488db780a4442969ddb842e5f5dfcac77165c62fdf3f935b1e16c57e79fc74fb6f2f8c954ce9f0d6d9aac5ce54b56a12a5ca15ddd0782f9ce0ba1701e6f146e7a2eacce4046cf2e3f198dc24dff426cf2e3a3b75a880be415354f629690e269298708d20dc2e47459d9c0050eeeb2144527c81163a088a2a371aa872b6070f4e9a2a13a8c0f4734d452ec963f9a30c389283c5d4c995366148f76139f914b945617513c36a309339c88e2b50260461367b45c42bcc8a1c515c567e6ca172ef0793abfa04e65949a0200e1658e28355f4829258d7136eb29c1d812a39452d68f22a7c86fd291810551146e7a1ada8c30c328834e7e32e99d4ff0ce5ba5fc6618813a7613dad4b44971bc10f13c6f227157b8c0052760e9f1f151007bf1d28f3461191c61e233431f9f233e49ec75ad3a3a393944fed60451a54a1c7ac10b7aa64d4d9b9a37a1704d6e882dbabb7b6a5d8df8251d8a68c54bff8949b4100153014aa60e0b3a53d81b8d2e277df991b0944b6712438e17e997494a2f4849bfda867181f12f2d2fdfedb325cf757df73c8a46371af54ca544d7b27e9e0fb69db7285499667123ecad9153fa9bf46c369bd98c305ffaa4e194383f7ab1451661e2089abd1c43df71c76459498e2209d491108d481643bb53d3a6d73d219017634642b75935e79774101896f2ead7c84b272126d9c21b36229de24c9008efc8d0ab5e053bc69ed7aa9144f6da25b6aba77db2d92e9d7601a9dee31de91b15f6baf41324acbaf41566e86a57bbbb7b378665a530633e7a9f09db9cae97ee35c6f0ce6fc92ad037c2364327ce8d4e92936a1bc7808776eceaa420a8e3db270b3c2bc415a2b09767cc926cb9d4714973fae29de83c5d4a82c16d6e5780d23a0d065e128c44ce17ef7c9c162aef0a12140cf14ac34e80eaf2b4e5d9296ac1f2b168c584c6a53806c334ea37a2f1ed4c62926723cd85c1f8e11d2de4a13c2a9e27ece5252fbf021309d39c7aab254f902f794448491ce22e1fdd4b673d9630ead6d2302ec957bb95b0c8245fed6ee3d2e6846d6f5f819b2437496e92ed9caa1b77926cff21b69c54db6695715e3161c021f14ebb6b1ac55004d54f23de69ffe9ed0b7be59351c36cbf866253bfa2b7ae3c510bb57c6a19f5edb4d12c6805bd808aaa29da444b4dd445da568db05c203191af23093b41be3a69691a357d3bd392109b16ef74aa7651fdc94219b92bba3ce9714ea309c5b4e2db3d26394092d087773a74b94450bd6b097ba7d164ea9eeb5f5a4e23098b4d464f4bd5a9268e4e4ed6e4744dce9f2da650f740fd6da38692520e19c5db469299a233e15774a6dae4449f482d4a225904c3366fbf72896f7f129344269c6038a211ef6c6124d222d115ec14bd273955c76ada56e50ca3d0c64ef2090bd30a7b25113b3575cf8d44449286b76a7e6dcb5d9747127d423e5e68e43262a1e7166b248c08bfa2e7541d4bb455976d24613594499b24a21f0a1dd342495434a524daa4b03722117d7b24d33016fa155dc84a9c5589ca21faeda0ef89d472e8b9c80a2ad06c5650e7719b318e93478b5830925b80671f0027995678184974069f5d08c33a8a5fdd651856bdfd4a1bbe7d5a89499a0c36d2de5dc637114cbc53c34e6a1154df49bcd3be19d9db51497716759494614775477547f58b5fd1077000a55a9482e2923aef49ea89939393167be5d3985965e63083c83c3d7d3f3f9cc4491b177be591dce2605a5fac17d9e5dbe59154f9f7a1e0ee5b154934ecee6ed5f17c6a1649582a94453c1dcba9d5d4357953aba98b324619e3a6c44c1b15157551177551175569570fb5ab99e8a11eea219a286b5b5050505050619a70f2d23db79374dae524613c3e1fdda9262929292949cb5178a3cc18638cd465d412958e8eba1f1ecba1541cba71a8638c31a85dddc52e754fad7216c9a973a4e99742c7b6b0a3e4ab67f2d51ed5fa9ee1b5dff53bcaf94ddfb6d8db51acc343ed6aca8e5caaba78273a136d9712b5d65aa3ca6bf0d8e7b1aac02cd23f4d7329a58c9e16b5e8699a1635cfd3a2a6c9fa7d3bf0aeb51ce28c87f3b458632a2a91aa1afb735dd7755d176791b3296be33602ce6f614f37ae16ded82067b339910eb4d93c3e07da6ca1085b58f3ad86b5a1d72ee964d8ab79a45e4128ed31b41901ca8f10bde74f90bf93987e7eb7f2bc9aefbce64ea9d326e179160caac16359aadbead467b575d65aabadaaea4d79cfe7976257f58f04eff9fc545355b9af3e5f78cf6755a9c29afaead304eff9ac359ce185e1bd9feea5bc7a0db3cc04e6f4ab7d05b664d7de1277a3457d6a3ae81800969d6ce71ce8ad549ef6819589395556caea374fa5bc54cabffbbeef5ba9a4702b4b85da29a670b969c83d829b3eb22061dcdd7336bd74fa14686c05f99260309531e9741e96f246e179cd257863d28db32127a2a7a2976d1415d504c5e4243989c7c7c5e3b55a2b2518bd41ea5a0b0a285386cc05faf99d823265ca30353885fe8c2f029e972194e8ed405a9c492dbbb725f1af74ce03a4b3a8440ad7ca9345cf39a6680632000000931500303018108805a3f13c8d33dd0f14001191a24c54441a89c3300a414a19638c31860021000032023223b44dafc4517ffb51af240576bd5d5736529a17711bb04daaad9be935fcba43b62b8a1beb830009b321b32c5b659e3f2b469fab8d4adc199eb817ab4028a9b34961a8ba1c4fd3ea84244a4510a57655370a9c5d0450658a7a032d950efd19088cda7740f2fce7c623adce9cc2c044cafed1b0d017e37d53892e0b9081e94857637bccfc4561504f6633e300934b770704d5275260361992f207e7806e224b422bfa666e3aea0d823fbf67ce05797b4e5fa49b4e5bfc28cbb63a3286712f821736c448337bb3800195b823d2587892be3492b624968edbcd36733a1d5973307acd2960e2116c952322fba451c4a4fad867efea60e2554c3c86f3f520c22a3d26a0cbeed3a0cce88eb42aa46a4ee5821c0b406913060c1d1b56ce3ae523ef69990f81bc294a0aee943132671454b75c51052cebd50b512bf278e3c508531ad3afcca6395e3bd0fe2b93e6cf7612b45064c3f0a02471128c74d06b63e1450a4f34152772e8280250af3425adbe91d6a1a814cc2c4998da36add0fcaed188618f55930f8c060e9dd014eb7e6a729ad6bed4b467c3369093b9cf56eba6dd46facbe510c346106b673134f7a8e4b5c62d727a73866cbc253da0e6e7d55ca839ef5c3aaf5c8dd103a9295e763e42b20d4915af0604760d4189d17864191846132f0782f8b5323bc753d19908f525e3a272afab3a1222c874b062beaeace304a74d40c3b82ef7e75d511754ac2c6d8155681cac63bad078a3cc70c7cfe3b18249f9468e057d7b1d7f21675a10a8e488016f1d7fd46d6ccfd4219364a433edb7e3d0fb888f0eac4bb4a345f3b9a5e5fe63aafb9cf069a750674971554f389d548d33dceed213a8c5d7434fb49eda791379c8f4c0cf3f86db65eba32440b2ad7c545e392726f5d331aa78e8ba187484479e84d8a4ef1fe9440b15c83f6a2a8da35c92a8813a022b70abd79aaa80c7b3d63b671403e5b65b6a72674cef74ee757af201f5bccbb25cbd7388a6984f2c49754937d727cf7adc6eb00979be8203ed4a631c322ad2a3f85a17e4de3db6d53743641a24bf2861fca73823b03b2144939da22123f126ecf6d55e04e8426b5bee4488602367de30c47fa11d2315cb07663465a2151f17c3e033cd69f14006c8e004a2e327956c4557ebcf8c641ad933f919d6a515b37432656eb7c6729303216546a9052b1a5dc3aa7c8ba5e4f2fab095b8d90e2edfd7d514e8cf06e53a339b28c439c3cf4ef4ab03bdd6277e2e3b4347ecff222cdf4199bccbb09e6d4660ba714b433103ea7936be979badcb6c5c89b3bc22ed61dbc2a47446eb98e5180d93cc1ec5835768c35be84a05e1b9c21618258a58c07ce6fc9ac822d550c16074511573a5bd5417663832102151c9c8f405c3a00b9ddb3acfd65a4b3cd434ca0fb5f6c26aa9ed706dbb23c812f75bb40b77853677ddc46e8f08eb74ef47e0882b03b2d7c4324947f384ea423435e2e154db4ab2870f7a9595c8406886ba870669c4ad4e6ba16045356cbe6ebcad68734b96cba9ffdc91fc1c631ffa6f0b9607ca2885f1b97917fdd7f3e5d5c3a5f6f8bb1ebca4ebc6b9d3ed9f2fbbb64ea71810511c3c744742fac9bc338c2ec36cae943b727320e693b0be1ad6b6a1091b872676b6da2b76dc1735af09e29033e727ca21397db377fa11392496ea08218589ac35aea72b761da10b36969fe82f852fe9866d22eeecfc92cb3ead99daab5b1b7b8ba6186a27af2576b23dc97d8e0b3f749928974d536b37f27a73ccee20e93ad50ecc314195456a0493f9bdf52bc2805b384dada1424777b571e533ae0c82d48f217e0ee40c7cf175fbb51147ec085c7b0cf4a7622dee50855f477b379fab90a9c456f5c50ac419a442bca5c247285293ce41449669b5cc2a98b91692a1c567137b60c07f3ca5e2c5e8938b654a7f059b6dde67ebdc2b0d2b9c9761f5a146a9eabfeed3fe051e304b248f4785694ef1045ebe8cd3b3308c00249384d8c415a6a577f5c731d05a6ab7ad362c16d4376293f783854cfe4f985119df200844b7b5876ad464b0d13d4c1c135721e33f79bcf85bfa72b73b56b4f834440ec896964e025ae31d245cb51f892792e2115afb3e30c33d1bd78808a62d18001fbf4bfb498ad106b8c5e58c191178b4abf64f815f539b4c63a549273d314602022e25a8341b433c23915d4429a870cce207e99d250d3150e8b9d361821470dfeb57211a72734fbb8427e216f8ae82e9050633ef84e6c5374e40957f203e9e8dd90ac0bb17c45cd90ce1b56dacda7c1e6d902d0609f5ece08fa0859f1a81fea106f16cf4105c20dc9abcb663c76046fbdc32bb128b48680c2fbfa19b18aca622b9605fb5a398de4a62935a1c7e2581337d7148d3ce852c4ab7643d8ca336ab66d029e0ed2642cb32dc85ac3878bf0d005b87af698a7b5946812a2b05863bb7c4957c974b7d1309f43f7e1d189245263402cbaf67d9cd3c78ddb514ca6780325fe9e9db01a0d94b1cd917410d5c50e352eab599c9cfc62e7f0be9bbf83810236ccf29310ddf808a6c2930817c4bb200ed55c092beefb0b9099af938cbf3a4be93e639e4c62b7e517f6c2030bc0149a2450429a5227a17271d6ccb713b3c846554d91ec691040474c2401999193707b4d61b569855dfc98c707649a13c1bae9c79d35b6bf58d35b389ea8bdfd15db320f39d4dc2ecb24af5951c7878f1353e3cb4beed415feec929e296c844f8e67baf7faf4d6efd54cf4343017b73b5874eab139a2598fa4adcad4a87f93dbaa21236811db13d92ae17bc8efd4d399a7cc1a0568f62f71e6d62fd8e26c292fcec0d9bf9bf7d01ea69ee0f9eb1785a0f4ad505dd87b8ac92454297a08a48b572693efe7650388980945304751d1d0603b338313da60aa9de5793dcdb604485580cde162f8d35eaf24b4598b8e1cd29f1814a8cd2c4744abc2d8e46a1619f5246205644ead9594f60726d0f6d3b9c5a677a5ae24266626245ae077198615557fd96c24730edd09886d4d25169b7946e5f0c6706085e59a4524c5e964d874a96a75374558bd427e1d3bb329d32ea25a619672bf4bbb02ce35418230d98d61daf2f0fbbff8a429291cd021edba8c793610b000865151c57a4d3c7e36ebc0eee1714cbf072a5c06262881ba22de3825b9c337388e626cb63b99caa379ddb5d649b3e0a502e3b3a3ac63283f35f5d4bbe2ab6da521678b020b1ad969d1b74fbcb61c82010eb2a5e61497263ea3a4952f643e296b5d41bec6da9bd8b169d194b359cd9ec6439baa358b1f7f06daa2bac7ff601635b535f3f2abdbc37f1f13e6826defa7c403777b39033837a5ec247ee827801a8d8f4979a30a99387580b1f406e4047bcccd4cd302f85146eea9d05bc25077f254639f9b2a4ae05c39082973a7fd84ba6924c547c591df26dd25e967bcd2d35c6d9e8ad40d454639b8e14276b4a2971b72dd8afcd1862bb1505b72f7aa32a750d79bd770ed43e540815b11f095095190f49532d11944be2ff7e5fb302cec0685acf0bfeb0ab8dc245dc96d38cd6103dfe266852d0a514b43a2cf9a1caa44bfa287831da87f58f2ee3085eff807f348d1db4493fa31550b9a0c89847a26ae03c638f8c7d46572f9f6d473aa31b912523851a96de35a688cf134ef54591e5ca681dbb04777c192da0d4ec6e7334fabf5d27ae465198b065da530730fb54c47da66a92fed5f8624393ce144696fe7458904ed92efdade9171cbee3104405e4949acc8feb18b1c0016f43756679b76d56d5130098e53e456cb192e14d61e23b95d075f73de14f62402c957e7a931dbc440894c58e27363cbb5552bb70dc87333589c41292dbc50c6fc61180c3f4e73f95849e27af9894d2a3e5f2621fe43cf6621e551f70de59a91a4b2f9ced2757f528d68b526a8d9e2c499f7c967ed920f3e8d41d4d5b0ac73c953e32c6fcf77467aa8b63b5638ff90942057a38f2b28eff4726a135540d7fcb3307685cca194221199326f35304eaa85ab4a5a34843dd4840e17ad053eaa9c6b11392a5f7478742ef1a632394ef7aa5f4284a623fd5b7fc1c3de1dfc50d455a3649e405465d7669aef7f89dff41cd64970409601f9f9895edb5741254d950716263d1d56004a84687f38d49d569069cc2e0de0e80facbdd66c54ba838a72d54cc8f2155abb64cc0b1c236b835b569acb58ff49b0256a81ef3249ea676ac673ec75e618ea73554ec459b067bb5e95d3bc031f27ccb20f5336cda1929fb70250c2769f83ec55edb0a2305ac3b805868ad6305a015c3e1f455ded1baf057ae2cb29e6c339ec2768ecba10e5ddc70e98aae96b926925ad565d24777534bde4251d9002c2dd14f2d7e7aff36bc2dfdc14f7781e209b5b5c92ff4c10e6e1c83c0c7c63796650c29a77a62c3ed8d8bbc51b9ba31059a1bacd07b4d26a008c67cef6c08c29b2f04803e48b00d4a5e62bba1b48ea1b5a1ad01835769d571ff3a2feac4d5bb8ab06343235dd4ae2f0a33fb4812d530f4d3201b55c7a0ae29aa1a8b132a3a26bf1e77dd40f90d618109e9f4bf7ee1772d4c26730294a3640bf9d5c76447823779037dfcd28671ce7c170c5b263ca15d67cffd337eaf63af089852fa0c7061893ad6411ebf9162faecaa00131d997d1acbb6aeedee35652ac7daa9a5b8c0c8bcc6bf92c8d3590fd2a7cb62328a799b2a815d9c23a0b891b6f7a2898bd7342ee9d8f789aea0aea631e3821dc5e1bac7c9e5e903c1638324ea008840b2639d92f1bd78a85a6824b5204d03691aec7f9fc0cb5053243a3d11ba63fa752327ba8668161c90457d729b1e9fdb9f08f9641962bdd87dd5e0ea5f0a5a6a12f15b2964694b227ea01c5112c925ae7b352527963626121b3001837844f9b99d6c33ac2d4d26cbfdb691c4fa37a464fe3c7e5660c19f243640ea903b49cbcab194710125e45850a0b0bf58ae3492f6cfe4c21b5bd5c5dc7950498855a7656194cf2179e2c611271648753f10a807ffd56253312f070d50e4bcc1fc501715c4191db196f7e5b3d68035b6079123dc0bd29f7eae3541f7b5155ed84422ed1d640b953be95491bd6d9295bf8b5d1f1a7e38402641332e139bb826b39f461657d2248c4bc9674b72b69925267dc63d34071c183277a2948caaf1e9fbed53592236798747344baaeea71eae62009f21a562303f55944066bc6a8f0d6ef4eba6601ea5b16e89e0e9f702239e4141a20871f998f16375069c1aa34311de3353a16b630dd8d381dd13dd5a39f0a6de3fb3f3194a37d27d3c2c042d372044d86925c901650c3e2e514ca20afdbf2d6fa94bfb69a27e33aaa5d02d265155738fb2d08845320962331b634eab994f95610debab4cd49e67979a72fcf323dd7a817962d1a7d0893924cd621a8138c202c2bde2fe98fefd4caa65aa3c43009b986b245698b57dc4aa9d52ccf062a4dcb06184424f7b1fb28907f6cce4428883212675c3caa0b57635a9c49c10ae4e6ae2ff6e6c6a08194ded25a8e5067860d8210123d6c31860d0d011d78bc1b9de7156d4191097d85d5e0751fb5c24a52ca6dfced67579ddef8a6d3802bb01fa1254f2aec83308e885918bd04b7437c6e17f3b361fb8389c15f7ba920c010a377fb992158ed11807467eadf86ed51821453560bb4cfb43e372c1f3213b9c613e04000fcb331a16558c9ac9190e53c744318e594d691464f6e86a134ddc443179b5892831bc3b4bb64c2d60bf134507818900d8465311c6891c8c034515b97452aeb084d82d39d248931a9cd7a6e89712454cba5455d4feb75c4767d2e019875413797f268444a221acac2fe44e3272f74fdb81b8cfa2fa7f9492232cb16076829aa40d4412e672e2bac0455d1f7c57b08235fa412683949d1f71a496dc1a25970225405df5967b9f22a957fc9f1502745522f1040b5f32d8769b33b5d10749eb2c5aa1b30636074a313753339ec12b273a835166fa703da71283bb53a7d43e38bd52ddfe08ba33ab3e0cc13885380e045b9407872cb04fc3866866a3006c10694d8c6b462066ac6927814f4007b02dbe2ac393e43292b3c6db33e0a38f40dc9d42a8e0a98731a688768d98d9da95701e9ae6ad3c6acc5cbbd14784438eb010ca8c91eaa5153b393b0af48a5e67dc085793009b114161fcbc8f9ae9d191571ec16c92cda0fb2610ffa6913ebd0345eabb692d3d540e378dfd1b2e63864503f687df8aa5cb153baafdb3abbb233229fa3d26a2121f94e5f20f1c4243f3f58cd48c5ccefeb14c3d0cade480eaa806fe5ef29af3feb1f813177162a453f5c0131e3242ffd360e7df9b65fecab33f7712e57be961d2fff19a82f3069c4a1ed2012c40359851a27c5ea6121dddaf3a09a31098335bf17071048fa8ab1d1b5f63491da933f71a8efc04b1400db1f1d4ffaa76b3914aa784c82c084e1a47f36a931dd910ba3d3743dc30cf068553f6aca3b902b848d61afa8779191977e40385c4f6f7bc7fc86dbb9ec1d09ea53d570441ff756f68d21ea1269a430b1db948b3060b77ed5319935f3c94804a73b8e491ca6dfc95b0d32cd90611802e2e219f0bfe11cf1505840a154d01b20cb014aeee65de1e7ed4e972637a5cf466bef71021bc7f8a6a95b91101b4433320a4fe95a760e5c1e3a69276bd2d616d1b0a4bb75ef173d29e4fb59d30ca2d2eb75da844e0f622117daa08b054488192d967b724ca2c78f6398d6578965a34aa9f7bb9e85c057dbfa7178aa600d3fcb339c09ea281f255470a2c0a8c26a1e79e495d21cdb97f12f138a9a207b8d6089f56e571f7732b7273021ffde1fa1c16ad883c9338e2727a4a6eb32ecf6758ccf554cb92ef3b48d516456f125ae535e55a178cf9e1b9bce6d8cd5a74dfae7e2561920e120dad447e41efe90b2b6d9ede043765dbe3051dfbff99fa4ff4eca470e0b0cbf43bc19dc089667efb036722fd0143077998c1555037ea0fe043d80a9442cf3f67f7fb67fcf55cfa8bc90ed7ef0f1af1c252841f43f8701a1300a148306aae7ec6c405c403112721a5b3110ef4f14480efe388329f79a51e4b46b6da6149aeec878424ffa465f6eeffbb9f148cd6dabc5da6b5ce97abd76a97a63caeb836384d893f4995b4a3708d5b57bb98077e57f80c917deed3c11ef8859971c7d046b2a3be75abe3bca876657d5160279ec55ddad6dfda20ad59ee74aa0609e1970f80399a9ea80a146f477210b08e37bbc6ab6b85c0820d1ef2205a59776ce57b36b14fa0e5d2fb54c38c4f7e16f175ab9b7e557cac82a2a994a1c7cc3ca20629c4f1ea96a7bf3a210e4599d7d61468d23f71802a803343ef65097fa61d3962bda372c25464211ea6ee7cab0fdf367c1bac74b67d8bc101f8a4ec6a2c462579000e5cc5982c9d12fadb5d2bfd1289c10278ceb15b57b1d7698da3dd08ed3bef16500e526dea70f95e91cb5f1977b3fcc8c888da034cf9fbe21cdcfc2d4be2ed06b89ce600717206e29652f7fbfed7e892049c48f2a874708b14202c090022e40888dfc3e02cfaa44e728af4f9f2fd6c7de6863f8eb265eeddfb06c018e91cf2e16ce90b98de6da4872658f46c458eac2d81b1884a6da2115b154dc4ccc6b5e47157d0bfe0a90b5eabbfb0456ad4cc69f7ca2ea99447ba9476087e2f56843829e0959abaf2b9e100faa73219f01d4ba1b248250a03207eaf5ce07caaca581c51e7b2a3c9de96d69a64d15d85e42203e186c267c6b6a2402b8b1c376cd91bef2c51d86bcac17571d8a47481134ee064ad17ffbdbc952191850dabfb58968009730d8b1fd69e20c4292b8dfe78549896c5c3a1433840173f4263f43c21bd74b91b32c341efcab485fd2a43a0817b4abf64c9c6b38126d1048c02e09b5c669921b834801d64f034f85f3ecfbfe0786828ef5f199881e6799f09b648c38b4b03092abbaa1b1913a6dda702b42dd73b600e069cf9a095d6eb6ddabfbf136b76067e08ec765d80fa9f602523d939df41524a88b05bbd5e0fd4e4f4c3cd81c3c4c403fe29c0796d1e6f13a566391416509fe49bfef533d312ee4b0ab8dd1a04b60a0c84bbd0e0a83ceaf72831f7316141bd29d31ab81cdf6ba7d92d960938d1557d11666792fa4411d9c8dc5b4ee11b34bb75f8a85601d5ce7742f7d5ce3132bade31679b5b4b6e63dcef4e06397fc4b421b32b4678afeafb61d4d59de33a54b7b05728522a41e1d497dcadb7a2d963caf02dcb820ffd384f2f1e5d49c2ea4ecdbb7f49da2a6895b11b591daa0051b966fe0b7b016d40217b9b388180714b51f211df5e472abe118db311886f8f0cd897664ffdfe9e15e2729ccfd0228e6bae12f73676050dabc682156e341076f4878c726fed4aa8624d1b270f662d5ad8e723320b751cc1e234a64c19bdbb655db3248b451a53c3466a3262cc31d5ecc05b157ccfe5e3bb27f1003644c3940d1564ec1f24a391fdc16ff8ea1d3ee19a061cc02474a95b8c1d314386e06d093e1021d66221bcfa9e343ae6c6fc5a2826301429c9b8c6d8992bd663308a1ff99001ee595f7633f628d9afb4a269dcaf2cd93a2b16e55795ae54b984fa34425d0c7c70de0243dbce146bc5d28968e9d91671af96d9c2de4eb8207e37ba4f36bb6402128deeedadc6276f16b158049c84dfdff566bd9d14a333ce78161362fa41de5228d62bd290406cb1ff46ba071da6add520fd8709d7db277bd4414b858d2f4ddb4a05655eebbb2e9e61cf1d75be1da086283c4f668aeecf8f47fbb4b00d2a9fd63ab8101f7bca8c63ea2242a9168c8c4eaeed9f8da4308ff7114add8a407f3c9a34fc7c604ea8155d1b17505bb282c332d505d92c05aa09fe2a56f8132e5c145afdc0602c018ea8e9527fb1959129c08003f80880c9439af68669e3c1a3344179da77754ce8803144a60eb98c2be51bf1ab8319649af7bd5ca553489551d39da1b22e102887076252978698cc65f87b4db938fa7f6f7fcee592332717505cd119e291881bff4ecb39160aff8eb6433119ccee0156444b5986d1cc901c49bf039400bd4e5cc1dc26e7e12eb521482f7a94e94106e84e10f3eeefa8f46239023d255a2ae093a2c64a0bf74a0f6b7e01e8849cedec7296fbb01a0546fcde3058c60281e95922f0ecf9f87d41bf88bc3ec72fe1f6b3e3df5155a0493d9bb0004860125289a9605e0eb28996cdd0a2ae1fda71d7cfa0a1c97bbcaa6b0fb158f4dd12f7ca43539acb3fcc04363d1b35274f1047a14d55ccf35f947eea9555b2f6c16cae39ca6734c3557eac256a03818824df62e619a8472b0f1d0a24fc84f5649c28c8eadb0d8bc884d6410ec27fac99aed7d33d972ea0f1c53df45bf747820b3ed3829673ee14ca258f1d75f798216a9f1a5884299bd491bcf44800a209aaadde2813a4e561cf1834aed26bff82214d611109e81ac6efe7fa224df9439eca385cc218848f53fe2a73a009603d01fe109e27037081739237180374cfa7b5951963af0f50dbb08507ec66dcd71961e3b6431c7db89e48563e5a78125c383ebf5cd3848d7714e0b60df28e95a8b847b64dd5c57a5773bfb2fe8e7ec975a1f87948d91187bff7ba89398291dd8f941b0d1a121f49368b01b810614996021222ad5f9b986b20a7ae37b39404f1b4f314d1fd4e5a997091675840a727dac70e0b55146223697727686e294550430d7d60b44ff253bea496b2ab22fc6ad778bdcbcb01fffacb852e016ed3a9447f0be559d15135289e4d8262b0db13cf81a1cf5a1016b814ff8938acb94881b00b55ae0c93fd430d39105ecad36da011e5fae4a446ebac03bb9e9d0144bf2beb76a1ab4ed2996a85794d119a3910902e2b0066da00c25234f0f2d34a966724ec6c69249c5438c39428a57c193e985a1fdf78fd54da27591d293296b2cff3e9f2112b80515e299695a813ebd40fa330a5020c0050193c0976d6883f21a1f6ba77cc8baf6b3e013040a114cad09145af163078e973ea523ea6eb6f4b3c03190864638b48b602f268aca287b06d85501ffa41da5331833eb18eb8d9362588f9ce3fbfb9519788862f8f2aaa487433e10299e1c86eeee6c10bb1e29eb3f6233705b79f98b940a8aef12083da1dd6fbc1520a126bfdfa9672f4e020892fa20382f1ac32f6c84dd4fa9cee992d21b51fed4e03559588a4145c04b0c052fea54731b8aa00c5fa159bb4b06e0340ff8bedae0c4a7d493fadd9752520f6e3587f1d971206f6d55cf2f893cd66f8ace75be9b82887f25d9235d9e299317fb06d6a595123bb7d00798bfc2360a95ff49e4554acc0529fe9ffcba1600d94fe4c1fc5e8520910fb2d5692c82b2f843f75143fb952be323cc18d92f35d33c1786c0b5dd96678e205047abaecaad037160899bd18391831f3dce2884b1a5bfb1fb77a6759127c38dff80413ff88eececcc14652e4c47d10c84ad6c4e6f3df5c4c10af647228b0113150c51491e10e3d49e56f4343c83664e935f16bc9250d44f72bd667b1941928f673ec0f4fdcc27a630a2c2735257312c36fd328e97f02dc7f7fb2a2223042673640aadbbe47c6e3ce593a30856a4ff833f97a32ce9bd8c30ae8e15855c2b6ef4013ae1cb903c1423cacbf4c22a0ab00005e96009609af95ffeb5d76cdbdc10620fbca0a910990f26823e3bba13b1796376ad8dba0431a5b30502c131d025d66e0c8cb27dd1e3728d1fd4bbd3bf4075a5f2dc3cd3dafd69701e08bf26d2b48d3051e504beac89c08f530d625325f8744f44d62db184d9f682c005f4cfed7d6778f1a506de9e7619460bcd0ecf1b246554a7a8d8f0e14f0e36dc48464c371c6cf80bfe44834b894d260cdab6731ed49a28196e83327cfef27c87d88b21fb2273e2ba17adaa4dcb33b55330667b4b089e95ed6da3c242db383e095e14fc5cd8890bccb7105f1393399a2cd48d1397b0ce19c049de0fb53669413b2a0b5feece273d26ef50fb9f57760b43ea2b094297a5a021c9cc0dc39a2b80a97cc88716bbe1cc2afb8b56bee30d38883da7f81ea4c8d8ac0110aa115886bc11731136967dc5df6757c24ba21d403648c9e30a0d684347707d2c0a468e0652f435e9b194cb424c0c1dacc886ecc289c85cd6d369052e7b9e8a14e596dc4fc868e4589118c4a8d77ead58939ac2e0161e0b11e69807f50f668e0e4020854725b88d1c51730952f7a2e5a24f9f41ede474d7e0bf152dce722f98314cf24fac70c8683bdd023952bc9b7f962b59467922cc5c3b6586c35cc92e4f11941ace280e17e03843f9ca56c1a49463b5da1e1bcba2bce1b68f3b45762c377a28cbd026a76bda2dd57840ac706ac2f9ad3bc56dfdb58577eca8f048c7892f804452837d188af11157264bd813695b824d8f7925bea708f8919830cb59347457ad872e20a9434cd02078bcb2129e0d5ced72a8d3a8c96be20753cab49101782024c961432c4d3be42a8d696c784ee58d914c2c48e21b88412025dbf97e9b8425de08daa862b302a807e730ee6429a80965921280d360061f96c5b8181d0fff58b81727905fddc658db0907e23fc3a11add431c365815bc2d13a03ee47fb764913118f7e7f1bdc31ccbb9d6e1c80fd2a80082aabcacff507d21085e3dc2553b5baeeb48e5541a8769cfa4e177e6047f19291699fa40a55bf9d9c901f8a1989f8f932705bb12994f6a4b479e3a98827ba51855f9197419a405982aa11d013d6511d94553f66fabad0c6cd0b01017519d4c4ce10ce6352e2b8b5ff0082296ac3a1ade4fa848df8a6d8e30b97e3fd84a07e041b1c178207518d22da4929710160d253583f842046d011c843341f7b220073477ef923d0523246b3fe5b0b6288462a097019677c36556f53258812416f92facf362a7aa4f95e6cb745f255e893415dc96b3b368a85422de289b94460aaaebc94891bc0da2b3a39ea0244d42451621fb78087d99ec876efc75005976129255b1545bf5cfa29638efa06e5906d6c43afdb5988dd4840dc395fc5ba9ddbdcd095ad21fb324bf95178182f792994bc6c222c16525711504d332ce7312ba97e148fbd9b7cb8b45568b92457103fd115f675d23a80cb063e292650615a1451945f36672d419548b1b538701729b0164eb9c51b8ac8a241c4ec3c541bb91807b72c33fb38ac1d3e1ba66f3838c4ed03e5421caf2878ea9faf97920dcd74a2b88bb9bf42131ab624bc8bfb21133917f63cfcbca6995d742470296cc39a398dbc77dea5f79e3d060022a573e4df140e262828a94fb697b3b02709f4becb69250299601377e0e1a3274601f2814d302a4e9daf6db08b88ff49194645585956a424c8350cade410510fdec5b3a88b09fc3f0c7bacfdfa4bd2c61ddfa0620b998156805b6702d1571ee7d6663c040148a6c19f5484c542ce1210374a3b6c6b3027f1368213e6becdbe8bb4cbff96e66b64f56cb1530748a18df883343d276f8db83dc8f86019f9e15cb6392d6c2b167e0626838cb8bc3220cfc8eb35032816ba248460f43a2a4cbbcdbe4e56845ccdda56ae579901e8c6785ef82de8ba6d4192a5ce5cd8f8ea632f2dceb1f0d7bd9a100b6888cb77b2d0273a2940ee8cda8e9eda1f14cb15bd5995a19ee016008e0d6889d3cbfbb8a42323faab4085b675c3e0ab20af5b1492f0fd9cacb4000e9adf90cf3bb3cae86cd0a4e118074f9f455154cfb790960d8cf7a75dc209c2b7f2a64afdccf6b1853ae67db3c6c607650959b073911927098508da2b98d91a9b13a2af282aa9e6f9942b0b8eecfde800f4a9a8d21871a6132c8f97d9cfd2b4a7a12c4d0e9726d41229891f6d01b810a75f056a35b1373b500b83bf60f5cb223c1359611e9b70aa8b2e314dc4bf50fc9f8ed89cd28bc86854ae6817613187eaf8bf48bd3c0e0383f72a76a95bef30a5a45be929469cecfb0043ac5618eddaee666847600836b879a9d5055c0638c4561dbded9d8189fa68a3fc2fae0a83b04ffbfcaa9db441c9407a70e08c05c9cb6504b12ac4e22810aa42b8815fa063ea58110c3f50e1151830aaf12c2fdbff573bc90daf9f0296b4b44968b6316bc3d2cf1793db39a22b457db1e52822b201547b3750fa3af32b443b159f9462c0e92aba10e00fdc11b49dba61bb90d2ee0c0ef16ac445c06a1cef768e613137c95c160a17ac3eab589500af26054cb01edde301c590f56ac068bbce6f095622a2df0cc4ea577d914fe6262d0d91d6b5e12be600f4e8698ee8985628f16c1ada629a44b247f3f3dee8fb51ee52e89f3a640df012ba6238f01c3786be516b6ccd7d8f6952f7222f4dc08982d5810d91a9a1db5f58deb5e848107c83669103d780809cb9391d4c62f9b1b0808ee64c8e9b5434e0a5139935065d943a73946dbb78c4a26edcf4bb263fbc5580c8d3b75f204a49083e6c75957164ea05d569a74ee21d04a9fa217966483800fc127890b2b04c62b3aad7e2fccf190e7836d3989bd618ff41b39bf59f06bcc02726f4b9c5b4ae71d7c947228ac2e787dee2a592e8f7df121d9bf8a6c1aa00c1e6ce93d5dd1657416c0782e71931c7586f2716bb72593518b3aa6766d20291d9d538ab3180795774d21ad5a015d6d07c9a795a2922fad63cca4108baccf2d2615e3eb9100717d80c2470b4b1def2cbc98433e14e8cb01147274909d94a3769c4c6cde5530fe4acac09d4cac9862ff20d07c023e2d88ff729ca7c5d1d78f674985f91c17036fd9c96335679f9de7f7aaaad6c51f7cb3f4fa330ea40a3fccb846a38b40e3c0c65b2f1994ae900854869ed65420bfb74decf7cf4273514417c20d2d3934a1cfc5d89fd80fffb90032e5333977d630113d11d5ea1f32e68ee0da22aef3deed1b7af81164b5b651c124ffd7d1d3bd052b1aa80978ebc624c35a963dcf8e4f7f183f5675eb3def15fbeabafd8e6424442a9fc3b847789c6f45271557e001fb0aefd557d16daa49a5deb391f8c8227e576b1ab375e13ef1ea47e3147eacd6b8b05799b134c66b34b7bbab806e4c4bb0b6a27300364debb2e0e32b88585946945be617b74eb4267944003900937d62f10b8a3fbe54fd2b34a550b017fc71516187e045dbaf49ab07dca795b5cd4fbb145776565c6bb5603cd81242fa29c055d764a54fe2a1980d6ff887d387b78dcfe8b1c8135704f5116635f81193b45c1deb3cd8d253ac4031b7b897ea0115dd9764d47b2ade127ce44490ad56b6add6c50b08cdb0411687afb69583b20b49aa8fb1d0ff46dd89743e3d9c2a158efc48ccaf7d9891430aafb3044c16b4201f6fa1668098ecf3784cec7704008118997c76343d6a35cbbe25c5f18ed1af6ab8202e24277bd10eb6eebfbc78aaeae15199bac0707492787bb5814d01d7c659244c6a220e867e0b7a4137f3c7509d6e39bf5b1f44605063a87de27b02b623b7146e91f04335b4da090e54d2700021010299d7da7bfc148fd91e926dffd511c22365413a71fb800b7b871f5a6950c6f540b6b12784a8a38db6f6db535a1758d72105c04dba4e2b80fc4615444c6224e5b754eef2a5bc159830b8a7854024551a0c1c0e24f8d8b516ad03c34a41b400317581e3a015f678abcdda55e51ea6954e353551b50af21f59f47f4d108e4f31ce29af593d24763ed550ba04f9d82d661d6477023f24cfecaf5386109ade34dd044a7a7625fc2ae0e70ce1d790f1fc9389f894ae416c13ede23534c8bc0c247850b033baa857f34bd7b1094201b54dc41b2ec3230444a619c591172e6f462c35a1c8ee2086527861e41460f14e04707bc2ada0d397662ae661f51f7f0e8dbaf6c20ae1d7d59b3ccfc9e9bd0279f4852fd3752131bfae1c2376f2476f52d203c63f274d4a3cd385de01090b2a390beb1368ab4c1c80724218a81314611363e559e52491f2c086756640e7fe1ecd5ab6f636dbcd751bd1772be17559d1a76aa774912ad615367cfa74c17110d43e70d2d5ffb755b35bc75d5821c3ea034e4617ae8f40850b84f4f526ab51d83aa57d4bf81c302c712e29815e79dc3b8213af773c11879cbd095057230abde16991827836208a1659fc8ceb8528eb4de719fbeef8e8eca7ddc7e4a2ab4b1154a851884de82aeb40a9209d13b2c2a0e24611a360b67ad06141d1c10c3321dd270dde6e9c6f8462bec32d72dbad71f24cdd6c461b499cb8cb5ec6be704a769bf49732e5edf2aaf59220fd24574cb856925e70a25866d882d7ab9447b49ce6b63688595c3671da348826082340bc190282d827223da847bddfb5fd9a8e9c5b0f6df9c535823ebac7645f832e9a0695a00555dfc802e53f8f03ead2bac993a3c841a100052ae8d0e94a9f9e571b7f3cc001709cd2fbe8eeff7e7b5520088291e97fb3e1914a3d76422758c54fcc14831d41868d503079143e4a457baff59d87cf37f3b7eb05192593e79ed17c5e6fc40fad3b8e5a19f3f6289878afde8755d9f65e7b283bdf78c2c5d3f07c9695e72abdc754a2d1e8d06925eca0ec90781b35b403b84826f01377322eb18febded1a0fd60e1abf3e27762f145a723f21b7d77901d8a28062d208930b456bd96284390c5a36a62fa94a1140b26feaad75289af7520acbb2268c5d464df18ada9aa06a7654230192a5b52e3eaddd4857bba88412729ccaa4e9a9bcaf48d5dc6df7a7ecd863e42d1ba646e5ec75ba51c52907bd6c3d1ac025c69d5cada02c82259b7840e76a1539538da8712fb4c513bbb89912a36231e8fec687f9560a9a14c61f46c52bc4a912afd4638b62cf1108265ed07742f8cb4b51a2c18f80035d274fa32adef76e895d7594264c5609fd89bb25992fc9862c1d75862cb7078279ff0dfd85f691f26a318db41353e0fc80c30c25312048cb8b2fc1bd360fa67f5cb1c6c1dbf8982686a3178e9c1fe84328c07d231c76aa1f98dada0ea5495c12af0554198bcad1bf0123d942c36fc41e16011ecd5549b59f8d2e5182821e80201283357066f640760ddee0763f9fdf2ba8c53ed4d8365e3dfb2fa4b5b2a62656114c0587b8360bec8c7c52a4d21e052a522bf9971c7e556a3c539f6ba227305175a0b3f654e64345cb29d18a648c16cb116ba578b7612a3a60ade06563410f1e7abb353e5fa63c4297cde7fa60845e4ec3e5c7c69306427a75e412cd194922bbf2a1b71acf9aa4b0a86f378f3d0792217304e88ae7fafd5a4241c0cb24c38e81bf9fd78b069a3ab03513480c53a37df27d45bc9821494d1a5c960b922215b0940470ed3252850324d93f5a5901610c05b36881966cc0b804bc20802ce0e801085540d55dcc0deef2cf73faa359ae7c818c46f348d799fe0230a121972fa8713874990aa802dbacbf229755a6208ca011d19ae757aa4c611186225430d4533befa104262baa49ff7df68c044490c55d74703405e9708322a21236cc404238a212f743b0890d65ea44defee23173739dc292aa8b206dee6edef1418bc4f626194bd41e652f4561c3a3af0b206724a3f417b6380553816040e8c5f6efca3e70aac645f66d432448daae3f908b3bbc6f456fe8f0cfbc021d034273ca00dbcec6a39387f7d0ee197a2c4952a5e948ad6801af0de552a7b6d1fa8c743d11f383c328418a5473a34e7af9d4e3a5967df927156c197f89ed5e5c684ee5e36662e39d4476dd7220e5236efa176412cc8fd9b863d050eaf547958227ace2bd271091b3e0009aadc333d39963657c8b59d91b44a17ad031c8c09a416cfc7da62685bd5f98acc7c54f542a9136262b10cba42c5ff954007f63bf379d151b0bf776c69540e11f74c295d9472cca423ab3308713ae01e56c3cb899c7255072b9f8fe27038dff625c26d19d49ee13b1bfe982089113158da382710841d80ace1f753f0c626b36bb9be296ae4535098dd8db458f72f783c1d968715dfa254a86d0af33f406571b6f32fa0a1dd9a2a78e3d30e04309e8b3babc2a2bfa30d5f64e814d28e3db503b7239b6d0e50b5195bc2a7e03dc7a8a2bbb6bba88751819d6aceeafc03a6cb54b686ea4ab8a65a8e5d4ba805d6c6dd91a5a5be8b2b6e55ac858915da9b4756132d7c724209ac02178fe2bcfd951f3b13a65045f38a9b5132b706739653c871da9e9f83395c98aa88372516ecaad31efc43a62407b79e4998cae5449ff6db4967c33458af93876a7996dfc07e6841a31bd2884c4ea6988488cfcf3cb0c3b66b2fc39be502f738c4583e2f1d364b25f4c9e338755d493521200ee2ff3af1e0881d85a96b11fbb0c2bf704355c148e0bacd8320cf22f7ef98522cfb1074eba19a5715444172ab114ee72e1badd04257c69e248c8fb049e65f644e9069147dd9ae38cec1009a41c12d63ee7586b82d9ce49f905e417c850cfb91ee44dc8237013e09175ff8e78f1ecf7a38279d8d8f8b349efb42413d37cc83ea55c42036d30436bd29303a78335e8f8658701b378d81a491d73a8f8f966e3fdb0050f2727ed2dec49e271b84cd0a929d69317cc20e8c0fa17d80a4f996ac8f7f88d7e02a73c8ea5c29ea234e4863636a7ccad6dea0a0e48bf1711086741fd75c002a690e2c12088d66e71b2b25158981d02618038b0124ece1f48b4698399f394760159a3774100867d0251241b77e0115705811a9ca606afc855608f7505f85396921b61c5f63f3250ae8a36e9a4ff012b39696464015a7d420887464f0a7d3c95d0d3878cdc0d1f764e825cd523d6dcd9fc16950864b14d313b408e0e3ac90b12bd550a0682cfbe60155fb2535e6471e8090295aeb1583cf215a06840c545911e82cfa7f4642b7b9aa151fe6f69b78cbb0f83bcaf2ce4b0e2379f5a7971966155a33b10b19f0e7d4513d59697c200881a3b6d9bc35b197982649f3b6ae655be77bf0e5f88ae8f8d66462fc9ccf9e72e866d66e913f96193db5c02ce6f70d7140226bc256fa4183700e685f7f145fe84a9f5161c18da82de8dde1083a206c32a2482dc421ccd2d116c8c67e53f7fc211a8ef81a2f1df2693cbdd0ac87900f98040428decd12786609263368e9c9e5d81a502ead0dc82ebc9e887346800a9af1b6a4fa5dbf53ff4e9b3fa316ee998b85a02ffdbe8ca80026d5d8a21121eec159c151f6442928b0ceded1e88910c4249144e8499da920dd34a124a0b663917e9db3dfcc9d69f8012e981c3c0f6b7386d2fae73a970e69facf56f8813fbdff3cf76efb20c4cdefc045cae91638d6968806dbd930ad7c44470f3c7fcc44c61766c6696215df3123e92a202ff3b60d5cfc1ab58b4712ddaf75d09ec12e30f09d04d72a65173445614c4cc2386b60a58a6fcf8cc45cb035108e258232ce72c49d3a2f7b385938a5bbfe87b21979f0a88680e72facf8059d09e03678c4dbbe273a052d36564ce0f825fc1a62f7aedb373c1567db92affdb1fc0fad67f84d7a4292c5e719424b81301317e474f6367268e3dd432cacc72a41979a65d2177ee13b563a33c2f3c1b419a4188e40d05a5719db3a3b0602880c47b0e7a9c8c0f11c704b2c7052d1c0df94732e7ea04e26d1b7329fbc70028cb823f3d92ad38f30ea1b312eeeeb8126127a6b6138a48ff64a18f81db6e786b06afed6f1f29d6796654e12cfee7884db5220a8653f3d46fb9db15f284185897a2fba589a39b714806722d2f63c39e27702835bca5c0ac3fff5833648a7908369ce7bb456da21e7ae53d66da08963e18c27780954116f5887fe1a81067804e620ba1b1170387d943a1aa2f8d91ad9dbd8c0e845e4992507ecb6ea3ab9ea271c6e03e13f5d9bbc415fec3c7f20628ab97c2e6a08f604705f3eea12d7f3f6b76b0673f6454d9057d08842181b26ba67dea23ca2c2c8d7856394948e3ecee661d36cb2665fbd02cdea4b3513c2718e0f30a6b8e4a97e78c283229d968a54aaf523aa7213193001908820424b77c83925bd2db73d8a2f67cec6cb6a876c4adc8350f29d86047196778ecf9286d20f20e73938427fb4380e3f7754c872bd6a42950afba694121098e29cd6887194e7b04e5e2cc118af1c0682f010df1a25aedf608d72feab5c616bc32eaf532bcd3518190ab6b97f17ab623660a554fea06d3f637285734182abbbc80962f0f88878d6cf8b19b70fd83347874f235a426590628dd79e83cac91527a61d11a6f2ce4455bc3a6e8628b7d203eac7e1f0c908e22d50808508c5145d6a94a99f4326734d1c2650f6afd361c798fcd99ecbaa1497f6a421351b771848e9db9354eae6995d8efaa683b976f260f0cc288a8b9c9b30612d0bdcebbe37b56f016e4c4650656badf38e3fb39cefcc5b3ab35f145c89aa1efaae6d856e9fdc49232f31bad7c542803fdd3bb4f180cb3df2c9f5fea4b1884ea10a3dde9297bbdf9416769da1a67cfc3663cb5c6f7de734ff99a62fb6e7542765001aa5d5ad0ecca23e021c5f19f02f1aff8e222f9c3a97f01f54716f66dc032442b9eed26c06b280cd9a668b84d2ebdb9951769ac0d762b7b60f22cef6c7de03afbf8da9c096b0da5dc6a970d7f18f3d58645610b2be720e96fd7a754bb96f5ec4adc904493baa06378ba1285cad052419322161684fc753a54cd9cc3bab95eb608a1ac1905ffe8a50339e3214ce603734d48674d13377429cdb682432443db9a448435c7dce1921a74554266e5fc19e7129b5e88539f4dde922253546e588241378636fbb4958dea5b9107d22d8217e3f8cdd7615f88c5dec809e63cae7059ed727c7f0f8aab2fce8cb3ac6c21736608b9bf88342641d4fcd5f41a90fe9982d6a5976127c0cc99a3b44cd3d3956bbcda271dbb29a3b1541d92257b730bdd2ab274a36d072df691ff2d26770347eaba53121db62f093ec37b6df11153a23f8eb149cbb7a9b00bf72702090478e3c9a770867840ff01eab0ee0be97df84237529fb5c43a14d0c9c303b28be028474af6df09f1080e53daf01d0c61c5d014183ef8104ba0b256c38606a5ac3a25b1fb177d449882b095e0a3dfa8502bb5a7769e96d60d24da591bcb891449ce5d01d35e541314a78f4abe387e751380ceee9081258b3b196e244cb0ef43da7efb7f01c2fa7d930acaf7fa7914569a096acc1e6d0562165d959452eec50d010d0d1112b1ee39e0b1e0dda83d5e1a4ee947f08d01b5f0a50c51584ea164d2707c06ce52cc71a85e3df6d3b2cd2379c5c1630d800cb97fd8e6576e2211e4455ebce14323778de0cbc69b8c4799978d17845d85dbc650b5faad835436749debfab0f6dd4b10bb69bf80de6941fcd3fedbc7cb7bceabe17ee2e8d8bdd55132d3027976370e247c41de0a15ee1bcc1c02a072aa41c9d3aa3077c056b392539f591cfa3c1d8b654dc1b741a9114a5be4b5c9477f177eadd2b9d44243deb29e848748807e25365daf0e03b18a607f63bd8fe595c36acf69abc84e00c9751faaa9aaf7ffcf76c77d42475e20914c79a50b6e0863c96f4b39efa3071d01174ea1a74c52a888be869f1ebe4e85be1611e1e21a1cbc3d0215dbc3265f47e4c6c02249c1b30c1adeb9af542629085b9a5298c2a2c0440a62a3dd01cf03d3c9ddb69148441319d8cad29cfc35c422fac8a93600b618003cf5d3e2e3631724ff44e4b1c1b532ff23d4230fe602f9aa661b30c925ce0e718e4e6891bf9d45757dbb6293e0778dab30be15f0f34a4e27226e8209ecf49a01a0f88d5d4bd9b3d1b7c0b08b88e8522dc76cbffc56b56c01dc129b504ba9ebe74ab2deca9090398bf0a52b47082595cf1f39bfc566a7f47010b2bbcb349c83674f800a37c4f477d66378c1f6c0a671ed897285e2dd5f9ba8fd38b8635f6dbe8d5d69f16ed93d2c1d1dd28cf675cf38350628a9039859f4ea643a3aa900198504eeedc694ce065d2a50103b855444adcf00210adde71bb1fb97dd86f864ada9a35853c9e3765881370a8fbddd8b1bd63d510112aaefc654e72bf7fc30c58b8547db18c2b7a1e51ac1c87aaade8d752c416fb81647a07d67b27661cc85643a24b4b8df574f2d18a0319fb0e0de3890ef29c516864ae6f569670e2e4885843d2e23faf215504a4da98d85f311424aa115a707448b9b51100a770db9e81f63c0e1da4c819a9f3393e0ed02b25b50a8976dd6dc41ce431a3f2b038529a911f6fb738c647e2aa0b7b9532cb2663889a99cb62eb78e272fc06ea6dc378fbec6dfbeb1cf9601d6e3d05f493ce9fa03af688f323d9f3094ed3180b761f33904381ee5867730a9262f0b534af6eaf29aa514ac2bad9d8920c24396a9709df88981716fa924c2df9cf8a663b833e54345f085b3dd7c8b2357d040ae847616ad406eb8b497f03e30e2ad27ebbc9614be35c4b3cf6b118c7a830223d4add2d1dc68b2da06a2add7eb92910633604fc80de7443fb8f3fb0257a6510ca9b98062cfb0d284e0529f8830e7c26c058c8f9a0098a3a604d50e05f8197a0df333e668cd2f4b65f599cd227390d3067bd328ecd84afb6e3f2c6556fb68ccfca2a1cab1699ed581bc1c08d504e762bd7e623bd0aac2b04f73658b4be61ea820a3b55a2f6e7531ef1fad04bbabfa2a2059bfbffcae81cfb1ec1c5e3135c7acbc3e770efd8248d58b5821e2ff71f3e6602e9779edc5b3fdc280eedf61bd0374b54b5844f6462592e4a11c59820734f155bd19f4aead94bee8231ea33b711ddb642e8ff93fadb9e45f14f5b705d6ab4b6ab4cdc3774bcec4a75660de9bd2adb55ea47ce00bd23608d27485efbc4020492f146876c93c67d862b7d18c8ceeb5369c372b424ec99e62391dd25a4fa76294fa217402df81c28d0e2341543090d89ecde7c1cc04cab29b52544777f39ddf50a4dc631174a063a61c8b56f3e5552e82ccbdd9c4902e3de1b6e557cb93393777b7e3b504b10601f86ce07bcb0ee9a6b35e57fcc3dc1c31b8531d756bd3fcfdd9f40484ff9ca52e6df934e34aa27f466fef5f7cf3b85043ae30fb0d9ac2762f24f8b4f0e90d591ce213ba2f09907b0a6775d9b39dcb29348d2af0f9c4f7fc33860e21f3768990a57526c4aeb1a8ef686ff74cb493351308a43329637d5716af0672d24eac001d48ff5545ae367385d8bf909e8535ef90d7ab6713e1c69e49e8ecf606454ffeaec6a7af1e92c14fc00a66a86732feea6d45a9e763abb3f306fa8702558ae9c053d54fa598b9f4342d7557a96921f969ec57bf1ce343b6661f82ceb242d8064264980f2e29bba2e60700713ddd4d4344c1a114f19a7cdf6c79d5f9657bdeb75d685d4bcda0e80a77e9ede1751ff3b7413612a442b789f16f5825b73d598651a402b6ffd16c7e502e8b517298f6c4bbc7b041f015118056601a0e4f5a45341ee2ef03204f8b0637e1a330f2f21aa04634ea00bacfd51db3b6442a2f0e30642f7e351fcd3e421f124a6ab0bb40938635dbca6afe4d2920a9a4287cad2f4f5b10609448629bbd5069b9851a5a2d9703b929601a02d806435a42a13bfa5aaba9702e28d98ac507e83e3924dd3be91b532fe237a5e4587c5181e2d1f2b9decd63700752b2ce483ed685e1e6b9260dc887f9bea2a1a03aac64bf3f3b0e4c127abefede6a3ac12a9c4664863aabc85e2ebaeba434799a10c80906fde0b3acb486a185e54a72de533b0f5984fd5d97b6ba73579af8ee2009b87b0ac2bae8ec47b20b24f8abf192ff9b090afe19d79911502056077cde9bcc7406d92ce45bf373fb864b7f654c7541be50a9039ff27feb8ecd6631d8294a59b37c36fb1491a966f919bfea210ae73cd1225bd64c501737e450289d30a60aafdd51cd7e97aae1fd4a8314a01bf9d89c1e2f5acc7706046d024eef30d3f85fdce416e25cf6ff7699317e90618759fe313859ea94b0588d64bf54638c029a0e6be9f7a0fd2bb291a4ebff15c2339e81950248ff5fc4e7815855358722a748c275643468f4763bd961c26b0c3f055d539c71b0fdc6e017f2db7840a26b25d8bd238039b8cd6e079b1975a88dac2c06cad9bd31a0358f660c5d84b2144c90841cdd8dc0dfe7c1998210a8a13eeaf93b231b21a761476d14e2c00b068003d31a2f5d8b4f5fe52a3ffdb88e829b889db2a4eb9f94a4e13788a186b9ec0c2b6ac54af0de7007adc43445b53c7350095f9373082f18bde92b35dca07fab9b49ad21545f7637e89e5d16fbcbb03ff549203636d5e55ab8cb1a5c666ef7d81c31d2d6e6d2e80bcc439b9b5765364fe4a44a6a2461ac0685da34744a0c9b51d8f98b11a84f615b3ded9494ddd020a46deaa869a53726103b8210e46343f85b978c158ba692423651fee32beb325a2585982b904a0132cd4277ebdc4417c7921b0a1e6121c4272f8a81f3349d7f1c10d3524373d6c4d9a6d0c9ac2374ac57c224117f837f92e213a58fbab55054f095bd9858600a6eb94ef4c406766a17c96ac2ebbb9149338180eeccf57b7794b60913843d76ea26ab7a095180a5f2344978f16b9f8bc39dd952b6696847552311284d6a4c26820476a030000a85b08ae8009de0251cd8b0a7fc97869afb76f4373f5eb5a7be1fabf793ef9878870eb722a63b6f08472a69c57ff6b29791129c0188d6d3c18e48b5d3f4d604aaf0ab75dd03736b4bfcf6e01bb09aebd5ef461709b3a16e9106148cada9eb89e78b143b9e65980e09efc5d3c7652b334a87c90c050d70e1710d75af15429df4562e421faebe6dca87635c1487623feca01f136d446c8ceb53922d02ac84e4bb5944cafbe0f29fbd733451b036e578768690b21c98b6acd74f90b57b66b58169fec7f57bd11bd12e63220adc2ec6fa76288aa52f9deccaae5fdd067431aa4c0ab16ac76fd22664919a0303d06efd51c0c1a61f2c8f1d152995e61ae3b8614d126abff2ec0554e7d862241b1bd3e8ad0ec9502d7ac24b4dd16687b5292aa1dd20040b8d8c09ed167daefef8d48517461b653118832be34b8a82fe92beaf92692aa4f9f471b0ea566587c7a44bb8c98f6769a2ab92a04be480df22b25a2a4045c9f3124a1c7221ae88c84da2eff125c887ceb41cdbd3e70d04a88f0a6b607661c8a7e7734f4f04d652fbdfa5fd27f4d308e2b19b3ba08b1cfe4f0269ba90004a12ba6b26dd4b41ac5df6db9835a74df3bf266629753eaba102e98f15b8f1524bfe0e41d111a4ac91f3f89dcfce579db744cf464684d874f55f94834c85ec47f66d9ab8d597d63c16e33f038700cfc3d1aafc9ebbccedc7f2bea8484b242a9489bc293f074d4ab2670b7535aa93076c9d862ca757d80975c2207d25603b6127b182aa3e3989426c679ed642cacc40251894d9ddce918cf9de7460e4c67faea803560e7013f4f3c05fbacd58217c798c3f984463356b83a4486e29180642092bbc517fdfba6c54c8850d3f56813265be1a494690188aed78daeff39036c9007f87d339267fce0cc00163b87c8f2976bb0968cbe1c4c53271923a2288f735c01333d5c382387eabb39a28370598d7725402473e63e3a721e6bdf28507d2b81bb212c2a78e9d5fa5083aa6137e1ce3582ed4be71989535f98654e2bff02dfafae26555c93d6dfe1cd1da12a8d6af61b066456a4f9f5f58b0a1b41758bc3be0248d0ab58141062dca237f7499fd2422153e621ba884f4085f3a3784f3238e28c3791f37900c8fcc477c46cf1a17e1c30c208d922de011a1d363cff11f2312df16c28a339d7f05c9701a495e4816648555624360bbb05a2161112ba06ac5380301177bb9a60bd09b1aa0c1a00065a917202bc0652940e69ef3f8e39247f9913e15fee3d698db7358146617052348ae0f68dc3daabc49ac511602ba32a7cd7a291fac6a569afe4ae3b20aa4a1d5f70651dcebf124231e7a0df0a47ab6c3e9334f8e8c36d2b31871112eb14f86738b4000ddff8393b888fea7526fc35b26c6b924f890a8a991e3050d4a5ee86641cb168a4beec47f04f729cc00c9c69503bf73020f48b7445a8919cb61ef80ce5011b7e0c5c86d96c319d25322172e378bebe5c71bcf16742bd51bdb17f3bf9906fa47e2cd9b7895f0a73bed036184e1a014125d8473a4039c7be1a2bb48d4b36b1fb28b0878feb6a80541bcc36938354b81fd1a8be6b71d84adb060cbdfec0fc1611439f15839e72997e4b88ef7608a26f4ed30d0a7a216d155954a0fe54fddb1f831d959ef00431a1e481340073d9c2908867a7050854c63f449880366aaf854ac31d08df909214d9cdd4dc4127f31592a74cf693bf2467ad1378bdf26deabfe2b740fd874c93581490ea6dfc1918a3ca0b0753bd09ef04c6e4e13109023122eb80a4c9b97781f6c4f71c88c650aa31f3342015c4fa107540a2140706540b3c9357e4b36a1b6c2311b5824f614570a107a41701778ec2abf99948be5555f869584b0c5a7de367dd742d14af5e26c7659ad2b01491bde7f25c0b4687816fb9ac88651225f733c693c41eb7466d4d973bea9bfe769eb3062c312264d0180d5e260a4d3c2c04944cedceb3f4c9c6ef7f5d0d5c610c11dd3730fccefabab3175b33852f082ca46a7f54afbdf9d1a7e2ccfaa13544175b2702a66adbca9d88c35665e24a2bc283263b27544e00a8a99f1df1cba4d3058d9816d078bd06ae9706c9857eb2348256d6fbffbf973cf2259dd44ecdeebc56f9420503752e3559bae2b2e27a01cb578246446f654453c1b580b8f4256a50ca584231158808ab4e024a90b73646e961cbebec9c9e9003f506a2ef130cdb9ba56f13a32085fca8cff2354bc3e224de003bd4fd7f85dabecc7d202327fca17f7b2229f6aa5f174ffba4b46178f136b8319ed0a85481aa6e8c759015dc95d469fdc29aac99ee7824fd4e7843731d0151aadd0b50c73c25930718b53313f80a4c30778ed28acb6d6d479f9022767e743a8b499c38c3ed842051a4662ea4cc20541efcd2e5177cb32378818ad1b848049dfb4b672da96fb4a4dc3557bfecef7353afc48b2c889290f84e8ccff3c17644da36a505d7cce7f321f3e85034592597aec9c825f1c1d65c7ce75f32be0209d60446aef7afdfb12bf80ca740a7d69ad528ef10ca5e6d96d48a6a1a18440263e5cd8f0002b87446ce0784f61f4a9840252cabebd199f4962c109c23a5ab6dd416355c1449c18f54500bc12dff779baa23ad731a5bec962071ae75f03dbdfd272143156b4d85a9ead03955033b50585a63d64eccddff6bd9e6e5f9fe4a98cbbbcb3a7172481cca3e19ac0d1cfd0160146972190a15b0328e54a3ed7222a31e4ff57c281230c1f7c7a495aafa90339a0e55d8bc07c4ca5d4d5e2b30a853852e883530344df8196cb10e5a1bf24a4e556014ad20e29bf3b68b65d23207256d2bcff14888d5435b577e11f1e661cb8419e78be683ae920ea9fbb34350d11885f32e1e3fa68a1252708079e19e97c420aa2b418df661248ac83dcff3d3917ca4e43bc6ee7deeb0240e57d47241b7a0c077d2cff16d32d3772fdb5361408875822e75fb919f018cdfa9a49ef3b4ade82532fce506f79746efda60930b92d3a6209ff628d0f00574953d56181587609c98f9b90d47a105c52432f045854aa2be0ff71bdf9783c6c20c8b6fa5ad7aba09840a8a7d9245fc3918ba1f9942089db5ef3a15839712ab95396f021a2bacb7304cdced733323e4a3592ae18bec4741309649a4c2f10aeb30e6d03a457e4cd77acb081d6be9655356e706d16f6b98640290ece31e852153a17660372708f73828ea227d04d1ed788b789178fdfab512b4535540a50a92a106c02f10ac2e25d36b9c24b56e7ef55299e08eda23490662c330c7867b706c4c8c7d66cffdb574b0751acf7cef510150023cd744061abcdd9dd215399b960443b85dcd51e931e17951b87d8783784cbbf1f92ed819506896032569e3f15209962493ab265288efe5e83671d1c8ec88e544bcf76decec5d01a886e7ccce69ecc3603b4914624588b77d61c36bfd708c0987b5ed75a531c4139ae2a866fb841942e9803fb4a8f4955b0c809062525287770de34f4662070436f9d1e01ed8abc79c251c4909f8fc0b769717440b4ae6272877de5824c90de3bb24a710e1779313ad69d55a371ed79d1f3f2dadcdc05bac1831c4372c0e6229300a1818541c71f18068d0d1f756f2924f76434b051883b3b68507a14e7acbbe519b82093649437777c1922a61a4df633a7d9f9cd9ee451c41c8ea2b4fcba96510bc8449947cf359dd02eeccf0d22d72383fefe14167a52210cf572837f3d05f72b2720e544e07faf7a2d6c79ac16ce9a11d2dc03bc16780e392b4ba6d40579ae8de0b931955591351870a0eab13dd6548c1b05edcec685ba5c7cc0e4e20a30ccfa7380cce2e19735eb414445105e472d1f2d30ffb95cf00573adeac63c61bd8c6d19c0f9c267152f97e11f14ae688bc51978ad80ac708ba8f72fdc3d75ba85c96b491c39622fdaed20aad90d814c7407322ec08744a28f1d04364419475b13e58ec07540ef3460b014048c48c10b50918bf2b684617571feaeec78fb9b18bdb72fb53afc8246898da21692ce9c1c43159e1ac17d3ac32e635b1008605ddd9f0237e0f4240132aace0838f68665c8303bc2c6bceb54d9a14801f97f6df5af73d07060142ce261f72a0ff59f644f82ba6bebc9b4342ff02bdffbc5db58f997c9e30d020ce9cf9ce60efd73d3a79698d1b9f8db6dd100793c8ccbf512af1dbb3dedf8e49fe88b213f4a7297aaa2b7baa88b7f7fb21e998255027a9d4431d5001a322dce803a78c5f016f308e0408e8c5229e898f0727e99b6c512107e2b798bec817380a81ea390149577ac759a351adecf8c56d0676bb178e59d5be511cab849d0fd0a108db85c582d89bfed63ba2bc138e49832208b0b0d5876c9db18c16d94188ea6d6a944ef910ab366cc29a8462398ae2a140b51d45c34b4176b2a0a13348840d43588b3c91610858868c69d00038fd5d199ce813d94d46eebdfffdb43d52d81450caea601ce4408c914c7ed5b153131d71188e55fecef35d0c357233cd63e1240d904b74ef9ad5b061f634b40f43e16171c37d3a8644032ef6b0959d4d84d5d4a9b36ecce2adad7d71195ee218f728d3cca37b6787a8d9bf7febed44319ca2ddbf56b344063e0cb2eaed4e985bf4e4fd19133a09146e541de9cb1c619744ccb626cf26df24a75e70b1c7ff70e7800ca25e38d67e5a2641cad8c5a5c3664173a7562c956f4d97ec022e921c588e14905c5e710b11c110a473d92e66b433f2bafc48c201328615bbd30c84aaef867af0b77422f86b09c0339fbf2c940908ba48656a8377e5286484566d547c77974877cd66b6878b7d2c8edc40e156ac2c0a4f42a90b498fb23bce732a660cfbc0883e8fa53670d23604707a74ac5acb61c21a05ad4da7c336361768a47a9274ae30328fc80f99ec89b5d42fcae0548b085e403d174419ef38ed114c13d6ca24caf726309877705873fa3364a9506a3ef6b07f1b671a12ac6e349a281152c4c4cabd9fa35b9efb1e7fc2ae915323ab48f8330c0309500891f25110ba97ef205035f602c69d2e619a66c18966650fcf92c296bea204a5ec054cb1285cc3ee52353d183a07bae2359d48b66e51912fa81c88417bd6aed624bc702d955892d5c1d567ef929f107f79901d00c7d86f5324bd7ddc048d658c7321a51801c3b0eabcca3426b10a852483a8985ab82691202015506d6e36e0c14f26a237c744a9e3d096585155961555658ed7e507ae8e6b93d4cac1a21230553d7786c9341b3eaf808dc0bbd2fb26d531ed529b01673460c5e4fd459178a2478729c0cb16b5b4d157a72c72c88ad1d89c4e84cceb327aa5ca635c112d9d4eeca1a2bdd2f222062d1c9986404ab62d2b93cd423e32e6a7d9dd288e9a648b4db686f1ecdf10eef9c110618b60b05f34783d275895f4ad7951ca01b810ee1ee597e9231264a7292b5be94f57025ea8da64bf01a979c91c98c807de7c68d3d81ae1430fa83d422d57735c1059eb99365f7e5f22aa717f8ff3428eac30a9d502500b9c32a67f5954a25b1bb098acd0e803b13ac7cb6aa96ea191fed40d2519368e0f4be2e49f059745160afcf8cbeec2aa27234562aaaa579190b484e89ee9ef88852124ff673dabda16c3e3dad344afa259ef1c4c9f8cbc47cd616a42b06f223911570d7619d920e0c524f867183e4faa8f9d8c149a060fa90a3f9d4053b4abab2ca67666cce8ac694d8a027a245d28c66d085c5a0723e403f9f74acba73e33d9ee87e8bd0caaa717ce94eca01feb07f6b4254b5743b16a64c1b999be6bccc564f4f61f85baf9bcfef40d195dc667c9c972ff70111ccf52c8d94952db7bc4810e4bde19c0c9bb59cbb2528be7922ecad4dbb66344d04faf1c5f772b4e7f6fbddef8adf90ac3236a9339488d344256e2fae5858b749439fe2aca78403aa2af8b8c7e5a84a50209913cd7fe2f24a0102fc8ed2d398d2343534cd80153b4a3271daa786a8e5a1e49698035e9495939487d7a56e259dc2ed876e5ab5ca9e10501b06bce4415f18c20add190a9248f031d7887bd8de2f227074e9a82a92f308521dd0e87f0f3ccf017453bda701c600777e518846ee67e0b214b51450cd8dc07167d170ae711b32ed19e6b70b7e97e4303a33f107278c047374851ee0582286b3af6c59061ab7215f82d7bbb9e1496c5b9f1dfb0778ee0f42a53dc20ef8d383f1b1c14dee62bb87fce83d6c74e909e7526e8be90c1101963fac1b68efdb5b07756ab80f88b8599c3c46097616215bccbcfb719a636ef369ceb98fb73fc73e9ffedced32b884fc41a317c4e55d80067bf048c71a61dae68ece1f7d62b7a13c27b72546a1e658cce0f732c37375b241f0214317d11fa5263e4dbc14abd388720fd446c7a9dd659091569716fcfc9d57459d681ad7f95e59b8cc9902a8120300c6bbda6f356ed2c93756979c6e5d8c9b7a930ba758cd10dacc844823195f68b36b88fa791948a3d557e3d6b30b924aec8c68a9cddee18dfdbb7ba046c951486cabd500cc91640f2f56b416c95217c305734e12798ccf8c1732aa0e0b49de8c223d7d875c234b6832fabff902af5870da25c986368576da9d77f2982c16c178f7f4d4f747768c742e714b32a144290fd43b0b7e44046439b9e12de0a41f6f0679897505b80dec15337103548b049e25c4ee0c5930d855493ae995fee5ce470a9bac45a8ddae5d6f3bc9fd4841c9c41aedc6e2629a7d09bbe91573e488809fc20b851ec200fff0774675a7182f9be981233aa992b7336250c96dd842a36a36a9b5adedd61a218d10b2f79672ef0b0dae0c250d98107834eb3a418857f05e270c71072f0cbcc6a584a819d7fda07edd8dfc116d6e47cba5875208d1e042d28e963b5301eee2dbf2e0a07a1f3f8040d64d13562841094588c0041160f0e271802c223120a20a321002073fd8f1e2671135a6593e78151f855c7e733f2284999798fd84acdceb1d3885a17e50e8fab8ec8febba2a84365ac88a8f1fb25b1863586c18843f433481b0ce2df8376680b6a7c24f22aafd6a5c78e64285ffb02e68d0e5e32019d4eee5d65006ea153c24f9988f5645136bfaf137de8da645fdbafb12d32bf8e6647a052f391e33bd82a79c8f5ec1d8f50a6235057f783e428549085ac2051cb0c00723a440891457fcc006570c4168091e7cbcbf5f8703fe053e065e061eba401b8483fa89065d3e6d4643a02af48261350abd59a3c356afbad52c268aab780cab35ae5a37da9e28d42df475cfedc398036b913805f563a225725aa747efcfa01e5d20dcef227ac1ed6b0ad046ff6318735c43518626ddc0dec85e5915206b94a4899a7545015753b87aa20cfdd10c46437ca320463ddccec49075c18bdbc3125247b84d744d719be8f6a75010b73f4ad22c2da757fd541dba2d741b76f71b2589a7f61b01ddc6a25e53b886a2c673fbb449fd2e9eab8d88b8eb9c66693c70d5efc17c6e5f03bafd9c66410fab5fea7e5a8ea60326421d1571d78f760445bba2c2fb8d886effe2c1b0ee8bc77eec73e3c5737b0add3e7301b2e2167045147344274019e2fbdc05e42f208cbc16a080713b0b2e6ec7c39fbb447fee17a72c71fb31f6471c7b5ad08503d8a2c073d994a3b66e6349a20c7cf90549348fe9401b580b30f9854bc4e5d29d48ea278b9a750931115f44d606f68a2e29310796040cc8e223c0151fbb01b4c1ff462a2a2ad50006800004dcef2af2b9c1e86249620e06cac0a833c9fd523712c52955165909e5f1530955052f1fa1d60b7fa6d8a9dc9645d578cbd1f05751ccd1967da20c5b8038a2e51f6883cf8f9785eaaf24e2cb22be94025921e811c20724740006274378fcd982ac9b183481841048c0820ab210048fcfa43e07513f4874f929beceb5c32cfba4f8e227105d3e5f57be670eedc31d321f5b68c378b21968900f658a61387e85bb5412b51f6d90ca5d0ff5abbc5d8ef68befbe4537922800c308832f936a803e113be354ca45e57f11a7cf45978b2e7714f29065777777770fc9b78a023408a41db14b36d194dde7be209d935140e7d40193b286e709ee6c6c629894b72df44143692c8a2ec72d9276c46b8d458d1ccf40cdc2484f220bb2b8f1d10930472c129fc4a1280471cc477b1505e4e3a30d22b9bb327ce4480babd127168939229328039fb158c406f64856b6644eaff8f64b1db9fc91fd6af6e47eadc4e5f329d748fa08b4c18f4c628e26a20868832fc5428dfffac8b5b1c7a40adc5c12a4ee10d20e79738061dc69618c31c6588415c1c50b6eed39c085526081e896804c0de58cb7b32edc71e182cb972cc385527021042c60c146f85c2cb654b88a8757812cc89deac6b317f5ab2b0cc3264062073e5c107dd10227bcb84411ac88d202230441832a78b10697084ac0c115c2f064882b48f13e18a4c4fda0d0cd0b9c2842135c7801c4145ff03e4894c4d551f24310a8280a4209de175b485c234cbea0051a40b1248af7c52347dc2feef880071f1b14f1821f7e78bc2ff2ec5c2554b0450f53bc20080a57783b945064075072d002285ee019018378488210b2d0a3852a84f02e234401083f2861a20a5378d9131754018c2534e802143cfe8f6681a0c807274c2829e20644787c22cd8258143112861f866082c788c7373ee8020c5250831d3409a3c7e3c724cd825338420a125f2c39d203149ecfbd04426cf58491576ec7de49db4dd4cda58bd27e2979e11779b85f0cfce0072f843ddc0f4ae902e35796cb7f173ab87c992e7670b90b2657866538751217b5bb508a2e5a1775a1145c6461aa40eba020cd046513099444099c560ff513263d478c70142e0a6aa224490e4edc220ef930417284c8109a99971ad3880d6aa22489cc91385b0cf93069247d444a1427413c4ab808e7106d41854fdc89486a88f8a0692b6a84b14b2fd0066c2b2ab4dd0c77f0c6856fe61bdcc1d7b0ba35b8832327d44fee8837de44d91ce72ca96aa01b16344deb26155e63eeada1949761ecee928a2fdb11108937d0a0cb078b2e732ef73a86b9dceb93395ca20cf1daafb71575835a12154ab185a15b2fbd1639f27548a2619ebe49bdaec5c87c75cb92aaef68ca9558b33a979883472a621f5f682b006dc419eee2bb8ee7913d6258ccbed98fef47772a47de2ec3264d28a7a240bdf3f54e8b551adacaa2d9873c9a555f4f5c4c527fe2a63743a8e3d6907403f5aa8d3b424137ee34eb74e6e1a65739eadd40bdd317a5f03050aff864f9cb60d0659f66a1cea5b3e91c1313747110a66d230eea15f351760ab5cfe720be6683ea8847d8e127b3fddad64a5cbc262ec26e3bd4ba6421b4b15d8621c3902c94276e7a1907816ed0e52f4ab91798d46b0e02ddd6b952307d2ecfebbaae8b13011715ddeb764be51f4be12219ff98e8e32116ba1076405cc8391fb72e0e51cafd17892efc2216eabfc8c535fd8b5d44281746b9f0c9fd220e0b4b35f415192915fbfd7203d1b008f5166e228d85fb55712cff0470590ee1bf96cb7213643984384e67798438ea59ce1087e92c6f08533acb2f08433acb3508b39de593a483a563798ac57e91e85e6fb1a4b76c6fb9d6d2b26d2d1cbcdb65f83358869ac540d763d80f13ba176cd6f51124c2fd221880b8fc0e6a5624ead5f5eb2af6c3aea3ec57f9f1fae97abd6eba5ebaaeeb71c635747f21f709e95687d96dfa6452363ae462f2f4f17a90ecd82faba245c5b62b357af9119009dc5c7a8c1e3b66b1ee1b72e5a7fd846c2d641b457602a4423a7dd34e5ce919574fa7cb288100aef67ab29f902de3beed6647a94c760237573b65a7c39fb813692b7dc83d995e51afdf46707351960402b826abd21e0475d33594c984b2df90cf742ad9938c9f846cf7f44a4a6da793fd5a58586a8d1123468c93e914a37e3365afd9e9743a9d4e40a8134a43a1389521b7ce90f774d22bf709d9369456524145d2046e502a1cdf938aca2bb7ddd3dbf420f5db4df59be92af67442a950479d5e7fc2b60fd94a45a44c734eec11c8c5e433d6ec1737ee0372376c044bbf2e403ab53397f40bc825d96fdbb8be768de6b45fbd53a3b95f8a81001192babcb164c14b15bc42ba4acb5bb4b33c46ea31b62d95a2d13d45a32b8d20ded2eba62a6db5749456d24a1b90eda65249557a663f20f7cb1ea474784b5c0e3540eeb2ef80b7f41a4e34946cf65ad252b26483a4524252b7e55b2ad5426289114385741592ca766d23a9a8a8d46f25958da4a2524b2adb4d9bcab66ddbb66def2aeae3356da6c79b4c55ab1f906b32997eda4e9fc16da49bb84f48ead6fa5a6bad27d375987eaad57e71e33449aae17413e40e92769cace97cb75a6fa27149269be28e94a20124c5c225a0af30c584dcebbaae7fd8b7926930d9654799c538c8ab6be57ef2d40a59f12164c5078b818a161997817aea2ba4af945eb51217e359ad27954000f5a5959b65a5d2b3d359b84fe5f0a8c7287127d465b89eb29a954a2a17b2f209b9a67f426e7d7de95339d5c7b04256ee09f5930d827a0c1b84f42a64e556212b1725e399fd84ac5c5225c9a8f64badac6cdbb66da6969696675c0b152bf7744b2693fd6a0c0e72576ffa0c0e326bc659627c0607792564055bc156b04bfab772499761212b2b17aedc12c4162619f9f5c969242c6b3ea590628ff4fb9d5c1a6d77b35fcdec97ba4d5fe22076d92f52fb4dee93b91fbcd4b89ff80f867a26e32d5aeadb67a83e23e362bcaa586eb25f0ebf25987163dc744aba40e9d96fadb5aad809dcdc1856458b7ad3b3d7ec2c134865a9cb70567a8df1e366a7240bd49b4ed9293b9dac6a0237f77493ca4d2fdd5c154b0201dc932d3d4bbdc47da5c7b0a9673648ea2a36886ac82cd921f3a6aa4aa5c9d866cc90f116196f91d122a3a5a5a5743a6d29c96869299d5a4c15d562511987328d4aef9f92c9c4a154547e3ad56a3f01c430d94f0001080000004083864a3563860c19a9544b0b0b4b8c182b2b2a2a28d4e954abc9542a9148dba669a35196b5bcc57e180b07a18d18f6c358fe5d38665c750871c4f83771b43ca5b21fbdf5323e8383d0860cfbd16b3a0b673a84392094216559dec2416883c5c698b71e429818afd57e2b2fddf4181c849dc97edb4f2f71f42ba86f5741a16ee2e245a1505c0965bf78512fdd34811bd3abfd8ee2f89a50a7777dad2a5ad45fd2bf4f19718505dda9be59a66b31bb248f5eabcc28927a5ca3cf07e58fb8cfc71d492925bd26493e4ebf00e9da7dd4a350a5a35017c987e928d40e5276edf371b3f70dcfcdec373ac42ead893b49c7d5a3be549aafd5561e3d4c36946696713b46374fd4701d7bc6edb82e1fdd9542bacb1a63455e7caed13195956b676131615baa9a8474b5dbb66dfbf7cdaaea0c1933646075e5db8ac964f2516b2af59bece7e37ea60be96e7d29483dbca6cf305dc60cd365c820724bdb567aedc035eda8d6c49dc96485742b2bdf8474262ba4bb2b29215d2a86c6c21223468c1826530cd368343ac68d1ecdea4b0728e5537bb08d6707eb691e202c1b62986c28db228601e56a5402d19ca0eea136e3e169d616d4ab9c66653d14e8521fda23f4a01450cd7c2ed39ca29ecba794880e7d548816614158130c28e3d9827adaa0206883badf734a36448bb69d39e5f2bf6c0ac3b4a0dc8a465968d7763f087c2e5d6a7be2f2eb12faebddfaea2d8242147448b9eac3bd156e00b49f4debc237f75d49a8f290fbe672b9ae40eed68db64611eaf7f27223864674e96a4cc8841b30e10ae9d6e5a2fac92bb12134f9200d0f1f1508a375f933aaf854af30c85245ab030dfdfc0dd0abb606eb96f074fe4b4dbb241e7a2ae8a9a09dc199a79fb666c90cb535d1a39fbff13eec76bde2609328252c6a2b3458805a6fbc3ef7e32f6266a880cc18802e5f02dcc268103b1ef45434f39259a8577c9f1bdc71f75ef10ef5833e320cf3bd48e0e54612ad4b85b8fc6f164561450f4a31061d1d6a44e5a95fb7e4907c22857c9e544a778036bc29a548a659d0f3e9157fdd9a452c85bb960d92ea54415b5d6408f5c3ee954565299d93c330df0c43a7718ce408ddd01e037516206df9dc78bb305e6e74624872f935a0cfe5050285fa61dd7d050cdba25cfeca757138185c896188313e3eb655c5b8f1ca1b2fdcf1169c78124451abd5daf1a0bd9183fabdc0178e49c570375eb8e3de42e5734b4e3140e0e5c61426df2fc4b028ed0a77a95f08ebcbafcb8d3a400cabb5e569478f0e77f07ac110435f481df02f1d638a83f765a5ebcb0d49a7a0450f42089f4c6949279d84613e2a84e661988f1ea148fa894ed2e4f25b09f5b9fc1addf6c6b9e3eef9ee8ef33072f756d23cdc003e3645fd6a14ea478f1c6956ef00577c20765a70f94dc4e527e916b4c1875c3fac5eea438fc0465c3e4715ec302b7a500a3074e4ce7684577cfa448d488e304ccc91b21fbddf90be7d21db6dbbc245d48f75628ece1123344cc1769ca0e12c91f04677375c497103f85d851aed0cdc31bf897a4da9372e77df0d98a88227b789caa751a90eea77e3468c94c107a3541906252e1f93f7e11ee518e79c13b31c911a6e005ff6d44f3616ea27630b0b1a3634a1f08a8f11a17e2c65623c4c04fff1d024fa302d6691942933ca24eab9fc09a5bd6967cf7cb15f17c352849c04f54ca224bde2c7105d7ecc0c1b363489b891696c100c38972f3fecba34800fe1172f3972dc6251abd56281d7f12dd888d428e5886c795d517fb89b49a8f6377963afa0e8db6aa4f8c2d0659c25f13edc9b872e1f1711e106f04b5954227648110e61d46fbb7c210c4357a004237871f99b0f976f6242fd6051adcc536838b50f5dae0c13e18e213784bb1821847008914b18256e51c3305f6d0d9972f94418264239674769bfd822c2d570c7d00e9150d42f6e112512619b8cd3072d7ad0e5632bd42fe64c89398cc3301f0b117518e6631cce8946620ec34029bc40c5dd2418f5935762aab3ce121a0f5ef1477ca328c12ba8a43e9162722aba26bc82378a135e412fe4d4952ef4dc1d3d4c18063bedf0c1100df1eee8e9d95849cf8577470f781806120167e7c2d28e9e1e8651f5e36dcbcc41d0a00b5d6293000ff91b0c33ba7c0cc368979f81613298d2e5b7af46ddfed5ab655c8993dcdda51b717444af4dee4bdd9b95a00b493a564895bbf86137510b4314062129ba0226058b44718b387419066ad664983e161424243434f4d1d6475b52e7b22ce20e0a774c046df00cea155f40b66ddad29916f36942fd68ebf21b8761e2596f75129eb8f03e17da212b0c28e2b9310563921bbf4951e473e3658c35c0cf28aabc4604a459d8e3716856f6f84faa68300ccbfa3dca3eda6cb0eebe28dfab5bbbadea513a76ccda6c2f1d7a234ed503b3c98e919e59cc76ceb61db32a1a6c74ac64bb45a4ea430e07225c6cc59c5ee91c0142d238e861333e7ed49523689d45852422203810898fadf8f3a8c00cc31c76b0eb80348b068dc8908846e7026177eee25db88b346e6c9d8bb1291a6c2e2a3cc48a762e94a248e77e538bcb47c085527c5185212c6c38128ff48a494f7f9eb760986feef4998759f08787cf3d4c9885c35f20e1f2990a0662160e56d4c5942086914e9eb83ce3f2f909c34029be5072f93cc444cc8a1ecf9e3b0cf345edfca904c344262e8fb8119771354c249583a0c718f760969fa0d8c63c1fc6c31b4f54c21d4c8d0f9296102324b28fde43db6eb38466bb76e8f14747b6b38a5a950da367efb1d9f78aaf03cdf691add96cead08bf90becd58bc6cd24dccedc09825745affdc65351ab034d76cdd6f0b8017a33bde2fbe815ffc6fbe68eea7af454147aa3ab0c55e88dec9279e8a92e0bc453513b8333fa9299ccd6440f875ef16fbc0f021d21f6f4603d3d3187e96617f2232987786311b4c110da98b1a759510b70c540a47887ec7eb1a887b948ad479ab1be94d4f8df8f797efb9731ac87799a157b9a1f7bb8ebe9e8c330b0674fcf9eb69109c63edc71cf1cbab8d6c0c78b1ecd14ffeba29452b69d123b525ed77559086de89071e75ee0dc4f4a0965ca8d973c94e87ae9c22aa0105df8f272bfdf2e2a94220b2d2fa45c5e542805142ae0953b516ebc54422a21a96851e7e1217793daefd220b75d8cab579ba41d9144c345da312f9bc32ec66d97493b1aa5538d300c5fcf344efe72e12e9ee3a5118661230c236d37776a1435db364e45b361bd8a274e4573aaa9bd8a90a4a2e1baaa07e974d2a1a72a599bedf5e23ef8332425c875befc8b53d5a05dbe763908c637c875f8230525eea5dd8b833f4352ee8983de868376b3574ed503f5ed9bb5a9471d7a244ed563fbe9276b73fa76e841928fd24f56457332fdb4d9f6f1514927d91ad237aba2d95e5f6d4dfd86b2ddd3ab9824562e9ab8e8d32ba05ec597b81814bd1307bdca41cfc441afc4418fc4418fa5a89749248fec9934a840d2c81777e491df886155eef44f0f1517fef428e0c29f9ed6357245955834c2dd4ec3da361ef969870f72ee178ddcd823666666fefcc59f5978822595441e8681b79ba87ed2c88d9746989542ed541d86d42b938036e2e5115086785d241a4c57f615ea177736ca973e9737cb3e18c67d4d54011cb883bf38b65fb4ee63128689373e2a6156f42294220b52e40ec35cd7775c177bcc0eb3ccaa6ac86ef67933fb11b9375c5408175d698970a7a24585bcf366c523e02ade065d1331fee0cd825e77638c893bd0469449b88b672b95e06e5e51bf9bcb35663414aac62c4e6c7456368661fbc9f3fbe36bcc3608a7846adc8470d127bf5a25b64dc9451c85d6dddd3e3fb288342275648ec4e18efe3a9402daa0bfb8fe893250b9432f791866473ee153a386dc913b3e34b0cf878698888b584a2b8762f2970fb441e76bfbf074910f0f153e3c3c3c3c8f31c658b48527dcd16f31c41deda096b25b883b7a27dc51197d620e69bb28caf00371b0ed2d401bf492c997badc621d6e356b3b3d1b6196c4e15551b336db4598fd6ad418d9cfc5e57edca241e37edcbab45798fdb05b245bdcd15b1129a594524a29a594bec4c8f098f1813aa2d27fed73293dc46aeadd4aebb60f107d07d1b750b3a047df43dd44d085da203228b5434c7c66b32ccbb22cd3344d8322b573695d5ce663f5087ac5653e8684002e7f4eb103144a49c8229e5cbe7cacf253fcf3bbd3e537f3b15a036eadb5d65eae35c7c1f02556f929fef91dff851f3bbe6853a39a2624e68eec6631266abcf07ef246cc5e96da09a5fdbacb6dbf97cbcc51e50a8d5251990977f254f870c703e184104208b9f986907bb893fc0477b272dd04b421df5c3b116590c7b05a53a9f7500f355117b514d992391cc44243444552208e78255b5a84ca6f8e5e486a1e684302d57ee5292a92c22dce611d3ee203142434441475a24e3c127762129e9e1f407020125b31e77bb9f2254686c78c0fd41155fee39d2bffb5077ddef1ce8d27cf3c0d3d293d79068238a2d4c9b6d07418e2f2c5d6b15f1c9aa582d788344b05adca86ecdb7b8cae591beda36fd666098df6d1769bd133ab82875e76e8651c365377ea98c92ec31866e910e29561caf1d546dc05cf241aa41078348bbdf9082d1dc2a51cdfccb624f7120dba68304709b07b5dd7a0e6a4c22ab60074b5de5e9ac55eec628e687d4419e8e90f0071b0dd00b4414f21f4c15eba5ed1433963d7d10701d10bc36aeab77464634eaf8050574ca9a8f3f2b2328a3a9fe22e428f34038f20e483fe073d107a1c728c2efc0b1895ef42b1b86ae4f708311410075b7e02b4213331d4fe375b7c1873a05a17be4e1d68439e6bb3b8e7a9af7edde59e66b15065db73a5bcfcc499ade666ce6c0909318c0ae34e3eced6959f2df999233f75e4e791ab480269f0ce10d34d299d4106f361b94268093d28c10b1c843163073d904114485410c50bbc781ecc825efc48069507c4c137de47b35434d9471fd99accaa6846cf9ed99a8df41b2ffe47b398c8aa68b26bd7e2491c0f69513f28845526f5c362be1a9c8a3ffa8d9771aafef61b2fd2641fd91aedd99ba3197db335db470f34b89b138bcad735a96c90379d46de6455174d5f75d5f730bd5a9b2534a5d7db9c6e7a8f7ad451d6a674b512a7ca818678afdf00bdd2a1d751521c10eee64daf5375fd9e89535d76067aa51a22dccd28ad8c475ff860ce096b9073f29cf2da9433427682df4d83c6454519e247413d831eb0233d4704dd88426242313364d5002454850d7698a0440b2f7e0459372bd0e249ce143062b003101c1f0629c9186ecc415e1ad0063c24411bdc39c430b88dd36c50e14f108c4812c4014b17fe0401a7c62e34aa51ae89945039e9a1c5a7416388468c0ba9c0d9e1b2fd2a94a71d3ee8815264618455b2e1104bc92d45453f48b2402afa19e2490bb100b1172fb91d3d3ddc8e1e28e1810941fcd911ba91e77e108a0e792d6a3d0d29729bad19349901153f46f0c4fc1891e4c6df20e950cdc04bd3513c6de676979ed200e8422e2efc99c193ab992e1feab7dd99971da59be2a9fff11283b55aadd68c79850a0fbf69933b9376f05782a8f3f0dfd6fd54aa59dae3ff0259373d0871851f108107c88a1f2f3e06b264c881921c5471850e9870c483403b6200c3189268824e136e5a4bd4000b4e3c0184216ce1c54f8e7e7fb973da4f526ee3684dcd129a6db335db61af505074e96f76ec3773e92f2e879a2ff25c78b50bc89b435f212f97474ca5f88122e8b62e55cd982084d2932749abb2c1f4d2694c2f5dbe646b96484b333ac9d6a8e43f7a4daafec6fb4baf7ee9a5d5e106e86135a597af96febd4c0f7aa4d34bd5fc4cafe86f3c13a79a56071ad347bf017a235b2363e96fbc8f7ea359158de9da121130813a13dba1a79a760647fbccc8d6446f746d0675cdc4a9684cc76e3a76cd647a76d3b3ecd1cb6ebad6a77915e7cc79ce611821660940270e6dc12c9ce651c1a58f506211b3704a5324a9c1a58f52e21429979e5b0c83ba144eb104118b3d7a8e33ea300c9d8289a24b1f8b501dd0b7898bde0f144d5cfa4805c308e09ab81b8f493a5a2a9a1366553da2873d7ad88ce91877e39d6cabe6a3a7a2d98efaf613842477482f9937712da557f49a16da8888fa451e9d66914e1f739a55baf843b0eb43ca339d3e1e893ca6fb90f250dac645efe298d8dedb793b0a75138a6ef647af6814e20650d3557ce86de71d2a0e447a456fe26814baf427faca4552f4e18e6a1f915e3a7f06876455f1472e7de9acf31bafc4714b156ffa8dc739aa685536944e3a4de9a4c7936ccd9268694837d99a58d42b7a928d43bda2afa12fd128d42bba495ba10df913b421af5988096937ccdb114d87f3231ba91f041a7d3eb69a957d5eaf01b238b89a9f29295427dc794e0977be83105ae81373a79d5c54aa59555b55f765476f4ba3d5c456aff8f19c0a7ec34105a58cae9d6674edf09aad59022d8df6cdd6fce8d5bc66677a359a1a8ff81df0ea908236f82768231e7bd62f175ed338c8a9360bed8853d1681f5db398adbd6238e79c10f234cf22689261ce1d75e1157d73740c157aaa19eccd054f45d35cf0b233317a767ad8b195d2c146d7a6914ae43ee88134eb3a8de1de33d76578c4bdf48a3ee362381ebda2c7b8e652974df5ea48fda0500718869efe07c37c2d4018e66309c10ce9a4769fd2b7401cf3f42c10877cf4892c6970fd853d8e69160e0f57186184e12dd1418721f5fa90f24638399d37ba0f292f8310f276781ecdd2a2273926b0538e891cccc33e392672aa97f2b2cecb6c4ecac32cd6abeb851b708dae9a875ec63bd4efe5e57ac6bd57d747dc75cd23548d8b2d4e0a91205478553338fcf8d38d7d9174cce06456355fa605d2ab6bc4f950cd21d5a4193dab5932edf5ccc6f4ea7a0decd5e8f2b2975e5d9761ef7a522bb4317f823626b69a970d127522cf1e68f49adc205f6718ecf02edd214c961d5e1949c7b531d7109f5dd7751d4aec87241d974bf6683b04dc516e863b7a8cd3a14307b8a3f7c11da5535421dcd15f160877f4b3095b40204d87f821d88d3b2a0ac05fe7db97e664486c3c727a0ca87e2f3716e1a20e771f42a4e62fcd8218566b2af52bea307a764aa4a685c301e9d5fcc6c15ed5f9f232bfeece9b39e79cf3a557f332ecf1143522e16e9eda7884bbf9d9841a7790d0a0cb0c6342441cc32e4c835758af118231d4c897813e1833c47eb18bdab01eb8f297a43a641c94810ee0ba74e0ca73b0a3270007ae7ccf4c66993db441b94bff812bdf90d2d98c45ca841b7dacad60040b23235c28c12b0cb1031de207dac7326666e6577805244114e1c59d17fe1441742194a3a5ffe2b14dd2384a882affadc4af52a121a2199e17c6d36e31984fd55e605c91ff2a2657301a37ba6c70c541669656c8caa516bb5242696b5c0c07dbfd36035cf883040beef6048918251330025cf87304d11dddcfa58fb44819910802a63ee3c29f1fcce0a62efc29028afb4204929bfdc8600a114557231d63988fef84672597493becd5ae4527aec64f5cad7b7035d9f3d13b0f214cef2005174f2ebc8438b6c34f88433bb474dead04f26ed7b8233707d3ddaed18de76a5023a2c29f228adc7ea65ddc23391a8de6888e46a338a3f4dd2871b5430efe1491833be26eee07677cd9b9041fa404ff65a7a4ef3aa9a495483c64228986ec0225fbdd5c92fde0b367241d5a153c49ee6621b4a11d725fbc7307fc3cbc26e1e76590f9ac023742b810d6f8b2f325c902d9fbd9fb32acf1b3af47707363af841c9644b51877f2f4498af9292e02be12e0c20ee4a08f15f14d0dba0006a22fbad841115c446089239054e1095f006228071891118f71871c2ac040082ba80111515ce144889c1d24b2884ba2f8e18a8205d7bc180a2e94985d6a6850b8df4b10130960082eba7cc98c11cdc0079b90bedce8ee17e4e0baf1f262b7a8040a2d701431384dfb617dacb7ce055e2f2a24c470f9920a2164004614a43c810849bc9b152ce10847209a22c40f98884a90c0e207099fab5df883c416eee77244fcccbc985334fa584721821a4153325598783699149311cf4683bb88a59a8559995edd10c103158c90e48b19ecd005efe6063330420a41381245134b788d83db430471bb8778c16dea754b80bb087d6458295ec59f6e3f5583dbed3304cfedbb306bf3fa35a0ed636d69701753f106afe225f7c25d7469e2f2255653487c705d6aa82efc4102834b2ffc41f2c3fd5e301a6872493ca76282fe3291f31f225ab7bbf0e788ce2562e7c21f2274ae8d0b7f6240855b9b15338d6373e9bb7cd1a0c29f186471e3f9f1091a6c16f49a53c5a222425e690a2df0f1da05510411c0c81349bc9a2bca0f863c14d8245e28c2bba2e0a16005075edb8d1b103f802fbc20f2b4b935b7809d23493c1b5ea8e088a75d5b7330093a3cf0f1987b79c2fb6e2e8436e217904591148f391a407828e018add0302434aa1c42c9e5635f8286b3a45dbe71e7a43321ea8745ac1aa182d455f2b186f20c237b4841e02e2923462e9f468c76a3712aeab7653af54b5ddeb60d8cd669232bd81697bf1939c20dc01889fab58e4eb31a0787a7c024eef2829dcbaf71437b9cc338dc929761699968a57d7c361a349e7a2a35834ccdf06dd525e502a2cba7b1928da16ea9bb84aec65dc073f92e570f359b41e57f875875527fbf6344d4ef4bb4800a2b62343243c34367cae557004623909e76f48008898d4720d0cc28bb0902c1c763db65bf94c902956caf60ccfd301e40da7ef5b22f1d6d0e3fae8c3b1a531b481d263b4dec5c7e1325d4bef27c06ea96111248082997bf4d4f1ee87e3208a85759943a45024d0feb55d6852974a7092804138c468a86f6c1a11fdcb5fd84c0a21b4fafe66a6e746e8adce9e4d2980337803f7202f341fd3623da15543f2965d8aa6441d0e563606041112be4ca4aaa7e504a89d1a84134b9fc950d0935a63ee625a6ab36bf13cc0be3b44348d4f809c2c8e5d715bbf40f8a34d12982d34c7aba358b9c4075ee6fb718661205b9a0884ebcf47d0d1ee288241d6d55d2d2703ea27e9388525ac40a9c34812a189a527eda8dbbca1d57acc6fdba0edbaa4b85185cf1fb46a81f767b90008f198028ba7c991a5fc16456509b25c32b3e500d4a0d1179708624d4cf60842376a6f0ea9ac22bbe949536128128327a420bee44c184e53c512b129a8c49a578a77e58ea86cb0f3e710b1a76e832a10f5270965cc7a294f2e25cb04e4a5410f53bbde484aca078a82a7a797999044f51aa90951bad8adabb28a17e3a51f945c40b84d1fcf8a073f915a034071562f590d575af9a5553f5a90ebb10e8458661e02f33f3a8a2fe7ed86c523f4ca70a3d24a1506ab7584aaf5a730b3845fdc94d283edc9b45506029315696d2ab8ba57c9388a5348bbd291ace9266a05e350e77395554236a1fa6856012493a78ca8649a95fb758671d3034b952843a837a5ef1635e86643ac0acf8838373f934ac858d879e4974015d545c3e91a3e1baf01ac718b1d27773ed24a232901c47e11573113fca06a75cbea401bb58bba077566ad478e95eba77355eda88bbfca4a0e7f26b448e9169a45450bfeeeb465d8357780bf5db562aec1dc944149632a14c28b36812cd22a24954fbf1b25b7cf5a0f5633d9158330446194224c615ee880c81104222331a0a11f6cf0e4960ec860d3b522149a3f5e4f2575ea218aa2a3eda787feaafbca27ef5e5071a4edd8a2e6351bf6c48f3d198683d1c23a9dbceb58325b9cc73794bd22c5ad4dd132b2a8cea135736357cc7c825d2a6f12863ec8a7cd8cda35730c8329db2639a3b4268992fa594367ea9db909963aca8a04ed554226dda286329d5788206218c3176bd454e077987ccbbc99bb9458e5e72866f70c71c77356c8b9caa86c8a70b5f3ae662dcc91d617357831796b5b451e499f18fef1546680101dc20136e10b22edadd4d392a04391fa10d49fb87a0afbbbbb16dfec0a74290352bd260e4d9ddddddf434bbbbbb2f95082fd40d22af8b5222775ef418775da6e794d3069193de04d7ebd5229c739ec639ea39eadbf3a2dd9ad6dd735e1c2551a0c308238c30eee4bebe308c302a84b02569eb43d85396349349ca39e7942652ad33fd4fce9ef60677902f776527a5e4bef94fce29a5945a9526cbef6ff07adb1ba07759d8ab1e10f0a8ed7a053f96f8c97f93de29b96e5bb983f1f6676f4b093fe3896c74954c31c6d837957828994c251ea69c73ce2931494b26898d4c251e24361282923dc9a068425032a2a10cca868d4852084a46349441299968264ba518c3186197a9848db2921c653e4e2815d489f471428380a8132947190606a5b2af29b39136ca68d42216638c13a3d7d5d7d5f4ba4c55bb46269349662399aa944d6a494d25d228d34a3cf4bc9ca7736e739b8fd82326698331b739b7f9011376ad922cdceccd6894694351b66091da68284a115194d389a403fba964c24699a9c4c38419ece6338e04816893f9d88f31e428c3c09874fe8b41343e998ffdc8c528e721c318c00b875ae496f4c2b251f698135b2d6dab180e4440706a9cdab74d6888b3c04233d318ca75f9e8191894694250464f4650b44c9b2cc450464cc443238672d9086dd0f3b691360871d00b6312972312188d802cd3f9b1a759261b95fc8b4c5ceea844891848d9495869ebd8877db0701265e0c77961c5e1cef7d4463e4e2e2a2e27d3c99cdaa894b10f3be120066227a5ad44d2a1bd44dac13d3c4c9268a38b495fc537de1c6218306adae84ac20453c2f2b1d82baf1227612618f7300fc64c4c75c3462693a9b20e2fc13aac44cbc4c4c4b08e918d54621d568277f8082b61aa23d346d2216f2a9db6186645293e2f370e85e0d00ae6e02243da688bc2dd2f61473f390c6eb023adc4293182dc2cc6cdae455236af9294d2acca4548e79c14b7485c84bbf403a6ec5a2dd19b9be9c8ae69a36d28ca162ca34d1b8a524414e5b49d483ab29f483bf862476d401c856baa8740bde2ec70149f44195856121358af7026ece8352e831dfd882341208639c12e4613964f23d510a3064ee3e2ce888b4a9068208204c965a0669de293eb4c59c6a56c3d5022d5c0dd79cd84d998a136087160d76814b5128436e88b3a21b49e51eb155ef5274767208ee8a3a8957577379094c7b8eea21cd6ab9e3ad108f27e33c4224419658c336af78351a094560e4ebc628c30e2c42cc6264d0071638c3095638cbf1123c48dc7c18927dcb803203851859b9237c3e0c5e4753911837b4de15dd72f928e2b25493aa8f4c19cb38922ee7cc09d4d08dd3927cc02ae9458b4507712de5703ce70bf196e2fc1e27690d7af4bdc7e2a07536eff3a7072fbdd0d6e3f86c78adb6f928e6675148f99e34d16331e347a78a94db1b4f30b4f5c299f9215238d21c625445c79e52f6c4af78d2b4a70942cb9f23435c320e58d45f0be8dc60d9048c0953f3708baf23820e2cacff3e0d2d56098d48d2a70a9117db8df8d1920154d86e07dd0c913b8058402a3c02911271ab912c99551892b6116323ec1e4ca57e1ca1f4fbebe7be1e2cac7c8cc2cf1852bff83892b8f4313579e480d82d06282494e91ce125cd861c20949922ce1c9b912fed8e08a2b230e910e8dd4598924ee7d55f530c5959700b3b8d56ab582a8ad564bc7636969242186025ce614b362eb6533428bd162147b899192e92f5931c89a13ce69310b21ec954401336321a8526cca484003479cecf0041157a4e00bafcf82235e3cc10656e06007503c995048612493ea823ac12e79f1807ed16cc31fbd399b25340c7b356f432aa584a3910c53c67ae4821a71aed3e364c70e4933a3fbe07ec853799ea2ca7f5008abcd6ae6f90339a794f2178665d895514a5fa44cf5ea05b2c3d03270e3c91b5941167c0771946ebc026e7480c5588a1b3f6350b38f1effd22cd67cfccc978a42da0ecb25680a255b98624910710835050e823809c34ca144283a71bfa864470f93666d39dbcca2aa664657f5e8285ef698c382445d8d1b3132128072baf1278927b719e634c1393ae8c081bbf8a69fd82f1c1206a0272fc31cbbc9f1e07cc49bd67b15756c2cc25dfc6c4285f1cd1816e87561128894924a4c4a29e7a594520a7dbec434c783a79d43d42fbe03f20724d5663577130dc2633749a8600845443ca8e20722c0284481075a20418423689103780cbec2a7e0e1bdb83bc0ddf5e62ebeaeeb3f200eed5efdebcab9d768a7ca6f3f9aa56523ab92875e65cbeff718d92ca1c93e9216bb3020bdfad1abeb4b917c7077b5b559226fd3e767f1346d9b26b39ad5deab8b0aeeae1fbde254d3ce08350182427dfe06daaab05bd5dc40665598556134fc4c35ed4b8c8f1f4070b8e66de88fbe81fec86e809f591ebdba9210c47c1de9534cd346a7d6867e443fbacd0567aeebaa1e1d85d48fed83863b19b58f74740872a021de1ba01767709a61ec520e318ccb3f7671aafef5ec3d287d466f93ddd3465cbdbc3819030dbac0abc5c8d578e9985e5dd348fdba4be979742f31945e8fe9d5cc4baf68c71d9db7419d741b966f8fffbaeb42d26950569ef4696958aceab216761f65b72454788da8ae0b8b12e2c846da6b509aa521bd666b39f47a93d71de950cda0465c241d751ad251b666c9e835f2a48f2c0dea9bade9a32ec3596c6141712a0cb3d0e38bab3fdc5289e5371ecd463acb694867b1354bb0d754165b633aea3791a403fbc5f10ff7c2e2cdec0cc992dea3b9e0a1ac0d0a6555d9519955d9d072d47bb41cc5d2f21e2c2ca31faea69a51b9ea06e8a95cd5a3a378a8a39e511d2810efcd5ace72195e39f4543895c7780fd457accdca518f616d96d0ac1c759b185739f45856502d3154a0c7c2418f443a7671d7bd4edc8b4cafe8376e8654e94b248a241ee92ea5a4d3c893ac0a3bf468fa2a7ae8a57a45a1c743a894d29ded8672290570a776cd52cdeb2fcd524dabb221bbf61efd2534fd91b591167ad0ebbaeb2fd763aecb5cd7a28c39463f5cf87867c7ddb5badedc75eea08d0bbb26c5682a925436f4472a9a5daae847dbb3f7185d7b666d96d08cac8a5e859da4dd4645472fbd477692b5213d7bc9da2ca1213dbb4de9a3edd08b38dc5d7fe9d5758d93e1667a755d1f65572cc2dd75ccc61ceeaecf2654e6a9054dcac3beb8da2b79ca6dd8fbd77b605f42839d6f73bd0f53b5572409147bb8deef4135d356c5d7fb34d7bb7f7d5a1a8c8f4d79fa7a612929232cea18d07a1adc35b97c4a7234da855e1aa1da2cb96e239fdda63fa2d7cd4e23ad6a5e5e853d7b5bd57c5f8559950dd9e569324bf3fec8623107fde1c26ba3cbd264af213db32a4c353322651f9d26fb28fbd5f48583bd1a712aeccf381546298e6cc91e68134a66d5e0d53cbce45cce930a1d4f280d48cff91988035ef9098bee84407f899936d52b18547ecc99219d5456f9bc8f66f5e7811069568ccfaec4835753db302435833107e7e850d98042d1d79cdeb6a67fba56b14f2297211adf0a6569188902900a173b8f89cd6db20422e998c1913cda8568ae48187360db89de46a250a7a4578609128f7d6edbf67577fb0be5f1c51b7160af32486390ed70d336fb451cd8385cba7141309b7ecb2567b384a6ad8ad46255dbfb2cb75191ac8a9e8646b55915b536c8b7bc479fe5f22d87cd92a76fe928f3b8db29f735a5f4fa865d1b65d8e4c1dd9c9f33c542a83315a0333f70882d1457e26270d05be1a0474737199b6000317ae88d3818999ba483edc7e38bb951450becccbfa6bcea4aaedc719b102a8d89451664b852fe23dd0923e7430390084aa15917f64bd367628f1f7db8d88236e40e504a20aefcc7467a200ebef27107e28041f1888f9e69208d43afe4afb633bd92b3053522611879291f8fc87a1df6b1f7e05fd6c6da2ca1b9ceb7c1de3317a7d28102f14622eee475c42da278d0c32836a3a28f3b5ec723bd929787dee5c3d27027a5bc3cb7b01acc6ba64313478353dccd18d7590eaf5d1c0deedef56ae228cd4b23d4fad2d987e9d5aaaecbdf783eea4b569ec674696b965caf9137d9cbd2d47eb5379e0ccb22d43154d8ab8e34f35ecd9404aa364bb0dbc8976ed33fd19ba855d9504dd666090deaa6dba8ac7cc5daa06e3af45436c8974e2369faa7eb6a284e751df51914a7a2215e20dc4d158e420f556f525d3fa92e4c452ba7a27626e561173763faf52e75f7baf091744d93bcf1b8f417a7cd6c443ae534b885eafae8d8dd38d59daa4bb3f08e382242a80fa771a8d44b96d5a99e750ad18c08020000f314002028140c084442e18050ce94e90314000c92b44464449989d32408424819630821c61000000000000023b31100f3f91fbd7182981af5a46f7bc0423f46e0882c0d6bc14a4c40aca502bf7a6e80dcabd2809f7ea211a6281aa4d141c8512d9f7b5a9bca9af528e42fbc909f1d7675eb51ca7f3d7f6ffe5d2f9c405e6387fedff5e2a19000d5a5ffaf97047a7eb504b813b47d9bfa0bf236c0b5e36f79f1da97b246919794b1edfadbf3afde3fb6eec666ef9d3ff6158bdba0d6cfe4c02cd2b3bb0c7c037592004dcd11373ba11c1d59588620f1d5470d0eab2f4994771c09e70039a752e4b47893322f06ea32832131b38ad8bcd4e98c00ddd481a8fcbba8e11aa61ee1fda4c2944e78dfec695ea934174a4cd4c0e5957ba1b44c67bce4e570ac0d98c7d6e5d2a29c42859c6825f9257ea4e88fd3f80b6f7c08ab256ddb8a38d181332fbf042a3494e88a9e784ab20a4c21bd6d681c8c10e0ab988b98477ff80352d480a2126f609f1d937a63561d43863798c543ad226147db1b6aef343e371f3cf8a35c5f2e16d56c0a7ea1b1c3ea5fc5b85b86200ed48b4acc74ca992b9fb3bae6e72f6268258d6fc71b1e0c2025a3a0bde8008f1f1094e5a0f03025e2b85fd968fdba71e46133af1706c2904bc3110826c0e8de0c6a2f28096a45b9394ef3c51c805385abe355c69305351404aaada8744178a6e80180e96feac52d3eee4bf761d4439825c5f5a61a0fcc1d9c77c2db2378ed66f0c63b9e6e515d54f042b53b134224138c4f59b3f4b937699eed28a236bd672c3c996d0d0ddf30abbff64178dd488642a3717beff486247b9f64f64484d6e2d7a14addc2495071ae9b85e4b030bc031e5ba059b2fcf426b1c2ca5c2225dc06d550a504d4b120a5437db8033d3f3fbd4a71bb91df16bea4da635b11e50eb207629dd1eb83484fd315ae902f987beb03bbdb66652abfd912b96e7f7736722f9cdd1f5c1cfd34c8703aa76d8ce4663e292608bf66697d871cd4d7f82681f06276d2435082a3b64690ca6a2f11087f6c7ff714d8fd72b78ccf8f999d8ce56d1197ef6deee4f34bb7b8e110ab37b25f0fc9517c034f72ded94ffa08220485d5e7ccd00d2ed245ffcbc12a7b81fbd099a28d256566374ed7fef6edbd31b1e4d5af22810a704a299914cac288113361535d0f4ca42b99eebd9bfd3e9e285503abc831272410e190c85d06074ce6407daafff68f0df809aa35867a4db1df23dd97cbfc7e44b59543ce565708b69b1e04f935ee243340042a093413fd7d1f44351714fd0f649bb0e2ba872e54e83f211ab7e23f134120d0d299a55d9bdc277be8dc72d59f982202a2ef283f03b0e4c527ff647b9fbd2ab8b6f696bc2e8a7e30d1fa71f166e8dbc9cdc6e40af52ccb11ceb2c232419cc76036027e6c6921f9609f248e1b7a607a0584ec92fff5e185a9836a51944a93bcbfbc9a64625c2d2cb23d28a556c95ca4b7344a438edce58dfb93c9d2002d732713cffb6949d10c8d6ecddd201d3d925172369c7d98ce38f420397887cf55233ea669435afb8878c218ba16573e3a5376153ff5d48acb01904eca6aa9697aa4d073701d9bd42d9c8ffa890340e1217283db8ccb70da0904214f80a171df190d33e096412ac90427e25788df37ec1bf8222ac5f0b501287f7782268dc04282ee7040dc2c0796901cd5f36905205227d26ced52ee96bba5ac43db937ec9a8d8eba24d4d808092319c48639cb66b80a7849193f208f4fc2b3c4be8ec5f84849ee22c8e4c05743af396eb66b941352ce43ba6ff7327ac1fa0853edb6733060752e1eb10c96b5740fa3ee3a78f16fdb54867486b5923b5c094e2a22b74b43aed476d723ce8d0048baf0af26ce7c2a7b667b025d324539b16a533a52421b1905e47157fd1a7d6cb937844256e97740ccdd6bdfe08eefa5b9e2ed2f3a5d95d2f836339492e17c84d4e911470441e6215e84341cb4b73d64e37ea57e89e71a0211a870259c9836cd8b52e4e86b11eb47780d546bb55cdc9d2064136d47b254fdf2521d48ace9276051162635a98a4deb61cc07b4e9fc59cedf14bcf4921cf0941cfcbbb439680a46c98a0facc49b3bbb6164d14261e682df286151d6543a931cc86d791a946521a5871a4d4e12d8e5a73d45c1754e750f70f947959a529405766d77212bb18def2229cc564115dc490e048e005e303ed3f0e74e67f14e4bcf8a6c8ab617af09d16751a6e657976413389e529d68c2a9a27af678864e6aa3aa91e23efc8fdff3b0e4c5ef9b1d62ea332b2d6a99ec6ab1757be6f4e676d594cea258853586ede157856d87f60f129e00a1da876308f3b3b9bff3132ede0a7f82cf071b655eb6ad789915def514e2c43d0761a91301e453c1d26cb393e732ebbb855284fd7a9f731ab6635ef1b94dd31a59a4166136a6e5b1a75d0b6e80f0a240e3d384acde274fc617539d7ac425563deb0acee3bf338b6ae133d3d8b50cb386877ce774291b6f1b2df0332e772201ce7ef33953e00c41e4fc226b3d8a1ea8c1d492ba95dd1b9f27714e02a356beef932a9ffbf4688934e5578a262ba97b5820aefce8d0f7af42c433a850827e31489f7ec0a8c5d5d09268c86557a64d94397a575be261977f51473cbabfcf553c1ef6788e0aa02c11cfbeb6adbdcbdf62b67d39563283ec945e06439a4446f62e2fe110a302a98b9f02348a9af3f16165927be2b239ab25a5559a5ead5a8bc8ed695d6016964f2c7fc941f44ff5b5504e6598c8529ebbfda3d131a2d98101962674d34b9f02cffb0cb122a3a316b2d3a9f1dafc2b420c71f264568c4a9a0a79d873008a779e4b734d02937f839b90e96c2b849ca2e8636bd95c775269f93cd8c1dcaa68755a27048d4d318ced1ad752605d271446fc450daf855deb8b315c799ba5d88ec96accefbae205595dfe311bf2b285a8d2a1ee1f554e3e72b3fe04dbed2af64e873303c6ef9ef2416fb8525a4965305be341c4c1f1e88c85aeb3efcc31d10303e9a38846da64cf92c2fc79cf86e582576f806672cd8120334c02073b978c5b9d66da1fe0cff0a596fc8a07ace210ea560ea1c6b003c4910d84d4dcd3302a10adc5cf1061aeee0ed19bc41dccdf4ac35843ae433bf86062b398048ad48a1aa5854d4829b1719245288527597430127e2066842039f5916cf737d2d76768f5f3c27ad3c470ca1127b30e3fa1d08016ef0728bbe88385d8875950c5f9528a21131b33f4e21c627ce4ebc0c8ef5ab56d223286669191f6ebe6afc0f05116a539f02a3fede3631f18a0a7ead0360737543fbb600bc7bbf064267f5f89c53cddaf8431c8f2c479d310f2e9f2de53cc953b34cb96fec27744c4580ab30de28ddf8a35bc98696c72cc8a8ca1a27070650a05bfda7bb02e207b6039fc6e573bfc176a264bb6d334b56162a80e6b1223be43404beaca10d8a5dbc94f83eb4cf560263a26a8859a24bf12261f7f4f65dc07d2cdd76603dfde13a3cd6bd61e0e29d61a045f640b6e857286d77e881b0148b550120535f861823cd7525962b3f22137d3650d8f6d03f0b2b7b0a0a431041c655089751525e9ffa7654799bf9654fd01eff87cdeaa8107bd2a6f66d26c709849fe30be4c0dc072dc9f358d5829a9fa5161e10445336bdee2d1364170273705eb7e8beb67b0f3972f983eb058ba9d389fd1aacdd5ea6f84bc8d9cfed341cab080ab5881531b51203b160757a959ec69519792cd1d969d6194a4faa0f846ff036c689a4b8df9840cd6c22c778fcf4012ce9c5a3ee4c9eb101d21527c46e577dc1773356a9c570cf0667ac0a66ef8d8a1ebf3c9a97616a994f2a67e440f52338f6b7bbe5e18ab74fe4d0f4610d85e3f705fdd4de0d426d3f122e2522edf21a421f232de8f83f69530e2f02c474a1d6709d4a6186d1fad2a15ca84f92565e6ef6e1074d1d939e273793c357b4a63f1d882372e02d40d6fd65f540c84b408c5d87c1b04ff8e4ab232a43a1bb5ffc7341d5da90ff73f1479e42c433799093c1a80a595e0b221cc33ebe05726bbdac68d92fc0e26fce20c5f16d871a691557c1b8b47027551f40dd2f38c2933dd1ed47b64f42d24b0a8440a65cbf89f17db598cd04f84bc2d39b5b3074730bc730f02d25136d8c4ea5b342fd65b990e541b78c4352874d4c4f0bc4014f76e7164d44f7e826e12681880ba12a879eb15eb69defe47867756fdb9f45ec7067918a4526c1faeaca6dae5926ef144b763497092371e9702689e95e9a2b3ff1172ba0c4186db95a71e762151c08f4240519978b9b5017262554f96e418b7993cc0ae80a117b42f78715b649306f294fe96b05c481681a511de15e6ba6ef93f34e52c0cfc4aa1cbe54d5db9b2bed3d07959c47ddca8458398d5853f35f95b6153d99448e9e466b4454466b001549908ef14a5d23d193bada8bb278657df39a00f4d874fc742545d62cb85d1ec859a1bbb39357677c663deb6d39e3d860e2b54f376856457ae596ef32b208f4d43cbb0be2b2b85973be8a4ec233448d32016f440848047cae92524f6fa3fbeb6c747ee3e85b96bc46f8111fe7a015fc08ca9b081ac080584575491ef700c909fc9819fe06a98afa5dfc740539b6cf83ece0d1c9ae5db0cdb22ce54b69c67ab860cfd211cbd4be212a9136957c2d1fed9c467c2af3f2c04b33202d64b3ef31a41803e29da068c11e61a4c71a55d02bd4c7e06f440f226fc85e2e55f9421576a819835da3af54a3a51e58eaa274fbd8685cffcf264a935549b87087185242ddd6e9078ce67f3d0ca5fb47571026fa63748051e13d278b7bce050f85b1d9c30f6c830ff872558d9f1538148529b86c112ec563d7f682f9344ada5ff95eb843adbb2532a11d666c3b34fb0da17b264ed1a3578f3b2d58f4d80363ada58112b0f087cfba72f819dd20fe6609b45d7c2cd79c8c0fdce2a44bf3f9279f12e7c0199e01e8861c0347f9543724780a568a99cc215b0a077452f5789347b7a59618364a4de43673323c48befde2dc3e1555d58f9dd4cea0ae2a272205f2b0cd51dfcf4abe7f68d515dc2fd2f388d62cbafcb8e91ee70c6166f2370ecaede90247697b72de794c0692328b3381cb20c719c9d3afd56c99455d3f9485af6aa860b55d011073eefa49fbe4793fcee835a5f2efb730b2f4f96e494129447da62a238aca982cec37edbca5154cebc8b5d2eb180b19f0128554a350af87ce77cd21df83d8b3583148a23fec71474474a24dc75bfe8a18f1355fc8e6f2e6034b9025e336e435199cd5e3233053d8df616fc5171e630f3895ae0f6bdaeb5061e3e4c07c39acaba9fedb4228bb2cb162b3655922ea1d15874a8a80595ee7c5ddd692e8853c3fcba6d439b5c8da057ec3ab84af47935506888cfe8c0826135fb78970cd8c65cf87fbce1557774f303194c7769f2ae3dac2a13608dd1d582cc66145b00cd0c879fe9ac82ca6f455e71635cb10d92a5a2afea2a293ec4e5535f6084ee952c70666f5b2a8db30c20c8de81970897d1ef52f38ebe2a4f455cc0076f202ff21b3e5853f5d9a8bab1172064b40f2910683784cf06dadce7745905bb94af4f1174e1951e5ac91442bf83848b36e2b666f0c8bed754e28ef79edbad2c7729790235ffd07a316ebd22ee9ab75dcd7371e622075e5ef4811a92244b4e683a2226ad59d14c23474adace2ff4fb8bb3558c3fb7c1c2a3ee7cf80bf26298b1fa471d98b1daa36a61b55e5b76a3aa77ac9ec7f014399aca8e37b3d079cb2b45c16b5559e671293cf5ad246f8c239e4930c80ad9cd14a276a6c7dbdf7de98129dab58b660ca462674b4d8b0c7dda037faaf86549cffd9c79f7ba0bf2fa911c43c802a6095a4940ed7ec14c3fe8c71e2a024c23824dea885c266d114f3f49ad37942014624c0894e7d0a05e24a70e925e38d11eae9e94a5ead22f070820ae1c9ce26983050d4114c99343078c034a73bd2b5ada611eeea37a2bd52f5a0021e2eed5bdff412d5f823d8c58e1875a054d1d8737e195802998faa375b56812cc74e1720a1a199d940f0c750380ef4a2adb27440830a382fb322304203dd5c1adaed082aa9749e327b8e6435d28fdd2720ca194eebf6820d532a5760c75057b588b66aa6e3e9fe787280807e68a973c5dd967ccd8015ef37074292988457d5fb4211a2dceeb9ae2892a3daaa252d7daaba21bf917bef087d9c8839ac237405852c291cf95b4a2c4314736d67505f513309834912616c1b35b545358e9dd0f9d2b85e15da600c02725a4774d8c128e827d0ef7e9d0d73cc0a9d4c09395cd74799cb5d71f5f828061aa8979942565083085c1c5fbc265c99f97061845f3cc1c9fbe445eba8c9c6cd85aa23e20a50b162bd494b9cfb8d7a2467262bf5dba117c9a23c24f53474f51b174ff8f0875a462dd2e555c863db7e3c7f7de23564bfb4871ec6e6fbe3fe3339d594541ad4354b349a7d60559b77d635c0f05109dd0232fa96b46697267dc6bd02363bdf22b2036491aa081e79bdff63c97d30cb2243eb0ac9828f2b15058d0acb795dac91cc4ef853f437fe9072656a56219ba78b4fbac805ddfde81dd864cfd3caa87b1adfaab85563bb65e014eb742b4c781755c9312952dbb65b6bedc2656f634bd24bbe9df9572df0b5d598156c1f893d904a10d44aba9c7c4092b5c0688400563ee037da13a71a60d0fd3616a2609839222ea2d7d61553a028a083d0720e9f6458b816763e8e77aaad1525c4390ee7766a3cc49cc0c6dd7c617e1733d511b7bed4707c45a47fae3b506e543f0cdd148a0d0f8784b91aeab9e2817c0daf256287d14cc125fe5c14aab2de73d0233415d5426e790f1ee623704d467f016490628ab819caae115c91b1042efa53205f62250e658bc87e087dbe50fdfcbcb57f8808f4532b4397dea0a83fbd44df0deaf89a15f37d1299184e9e65e4a09234d2602acd91fc316e2d638fe03781538234466dd64db928e7c4a30435cf248d58ad4668f2ee0937a3f750963de7874eed4194af0b66c58efbfa480615cdce51633d7ce78344919c278f5852add93eb883baf85249be4fa3f05893793c5bfbc9e06b41016a43bb995eb5f077deaa0d3ee9db91226cbe6408b1ea005a9df6eaea90adb7da7c169730e44ba46ab7f7d68d0cd79de073dd78ecf834285d73f9b1a5fe05e536a753554e11e367d8592b68d706278f902a20d7f5ed62e28afcf700df0e864240f266bd1464e54ee3ab607f82ff4d9421a4ba5c1f177ebf5415b124ce4c6e0580a09340448d7efed41e6e113a6372d95a0be7438a401a43735bf534b9d0d63e40360e083b476c7501313bbe4dab3c29dc663fd2dfe63ec5b1d1bc1f57a4320c721b6150c69dd3ca478e02a818198522a82f6e35680ad748851b458ed197b0541d57e9739869610ddad7f138d431ea01f4a1cb0204f46baa8a37aa0361bdc6585a29e6b7160c923cf549999107472556ccd1b6ab9a1ca7061ceee63b3e31cf2d3190f3e242d6a92de7eaafd17c255828ea26b3cba6d005b7816bcef14c8f0e5e0caf1751f20cc8596100c1b224da05b9b56d25409d39fbac0790528a1099bfa6764a767eae0bcbd8b85a1fc7f8e9ae09d702d41a7a48c9a2070d2961588dff0a6f6409d886c1071c4f1387e5ff7629cfe86d6ebbc32eba724334f2eddac4e087aec3c16d89076529b1c137bd749f88ebb78d0a783285c3ab1727bdfef09f80d31fc6eb38c4b6e447c0b3308cd62bc82ef0a03066daee68f375b93f812e4400bd53a78c11923cd4543206f43973538983f9c36efa0645a6852a7a5200a10862e03b2e2907ea0db8327ef461e75f69bedf7043b3f933882a70048d2afc2f5d9835a11d7fbc32b93e51f14faaa2cdf820a64deb79db6daca6cd31f9ada797b08fcc410276c2c92bed1c466cec1bf4b2a192deb4335473133e42bd2631418f971d17a892da21057d3cab4875d74226daee820474879a496cdaf3a98a208f488d51b4f7089a9bced3282554b6b87d90b004018bf234bd7df7b6c573e4837c619b0aef20c31128796b37e53c12bfd35dfdf8460a0d4d3c93bf34b64ce5aa03c9887f5e379171c2b8744d719bc8cd97f23d6acb9a643a32b54361008549f351bccfee37af9c94947ddd9f3e360266694efc0e676c98a3cb808efe0c9f12449564197a48ab79103c3cbe7223877d4c9651de37ec38c794a891f20b024c193dbb9213f4445358613328f52c82f781d9b484695b38d3d31b60f20d18598161688fdc0c4ef462a120a297316c33385eaf2555e347b8905791d90897ebab90832852a6331a07d4d54b6429685a85dc91807c56c74188a6999a3e3284100da826e8a76f53b4b89a269063de26cad527ab133e958f5bc00528c275c55e60bb42be1f3e80b9bf0c737392e6b318794fade8de8189c381209addfee31a70d6d5905e5df3093a33d9dec3278a08d439a4b94940fa60860d46cb482dcff6ce030e55117be36c288a9bff0cc0e9175a63d24471d2416b072ba0f9cba5a710f0b1f394fb3311ddd9821a5fbd29b2ba61aecddda3d5e74ae12d0a51e36a5e136892e56c0f85e5d689a6608724c86166f04832deca5f020426a8d105644f9e3f7b73347e82405daac154a32958ee1af878f3683f3b002d8562baee05c7f277457cc7e9985d125c01dd318f5700e42bf4cec3b8269ad508f29434d0ddc1b86c6936d4ae38df7a08be0d962ae1cc2e18c6cbb0ee51a568406c7a82ffaad76c8d0558accb0c4e0c6f40a82715cf11c60f82d830a8e26a14a9d9fd492919c6fca9e723f0409bd803f7e23bbe3b1ddb6c35c2db3bd20e7502059868ce1e0e056ea68caa74e019e87aca8fa76ce7d3d972c3d8746fd265b91a8aa74e663fe6479f477ad8e105447641aa5000b49f7bc47f4302ec783654e179d82c6210b1fe184afbc2ee429cfa023f99ee7a8f2931237fd35eb525b00a0ad8ba12f18564ca7b512266d066cf03ae06bc628b6226ff5df53c6c3174392c2b439ea865ccb679c06a5e33461da359825a1a8d35228388146dbdcf9e2281390c120c9c6b4cc139fc0a8518418479fed919de62872b99bbab59f67eaff13d2afa8b371f3d66ea7547dbf6a8afc88bb7a108e51e60748118a893a1864f5ec75142a39daad27659b4e2b8ece9f87cabc51c7804f138a1e390a112bd48696fd8ffe1488a45292c706dad2133002d5ca866181dfff2b404731890bcfe5d6bc3bcecb3c3b856080fcf1135ac73038c0265053564cb150acfe4bdf81b340f182fcf35d3015141ceb9a3badc091cffc6c93c5f21baf28e109719833c3b25f13c3e6a29a7ddeba05815f50b09243b52212c458f216395facd7011145ee459e378d0765dd6743ab177147a4dfb274c00a110646941f363866441cbd5e97dd3c23650bbe05ccf4ed89c1179f2b6ef60cd63244c62e865cf25c0f5a581f81ada66471ca7d8808060bc723f067beb91db85efa73f78f55488a15d57470923fd48561bf514fe0606cddcaea63228154ad8382dd952ef0c9b4b3453192c27792bb65ed98b021e59acbbdea7c3bcf7df6ac93b8fe62e95f53ba7f12e52593a5e9822c7400d6fbed31590eecba65d329c2fd8722bed3c81a9eaa1601ef97ae93d6719757c2fb7f249bc18b3f33d803bec9a90da68d5a2fa2a6631a8f0175cf7637acacecd2231ad7c3bbbb27ceb3d05b92425971626c9c4ac3f3c0026a63f53f28dc997776bed4963a8c132b2061675f4da9cc69be3612a11bf6b0bfef401c801f4b65a1d15af8dac582d78ec86b43117167c8a076a843b9af1d3523c5b91033308a02674d4a93d2fbbeb5fd72a72168a5759f9051f3c9eda6e316549c6de8a952563e3b2bcb4c95896406aa4d3c41187744acb27799df45d2d174e41545c4bfd47ca953089a651802eb43c36a3ed94fd25dc39ed2c02c63ca3336f7d6625357c2b408badd3d120b59ad24fc597204d04fcd15929dbcace5fa8c35723aefceb7175399a7260912e2698d716935479a4dd637924184d79616515743894ca994c0ce598f54b55d1a54855a5354f167c20469d456a91f2f480a6fc29690ac41cc96433d94c5723eebf51a76d0dda0b3a190e87fc719962387c698716dfa7a9a9a3d42b80d3a167197652dc66e018ca199ae46695ca710d6ea06291deca18b85b811fc931d4e8e097aa6d3d267eea2ad0a859d70a4308f6e8863c2c748792b3f6e8ded1e6fb1048f1d7cbb5d45a36bba2076d012a077e00e1ae9dc99fd27237af6c08a9db9d1842cac3b44446339664332096af648524efd6082b9a2afea931bae7142ff11e8ac0bb33d8b71ac6b1179a5944cf4587c49d7fef234337082b217f02f4e4a5f09bd391615192e88cfe728a5d6cc078239422c7efd3062581fcb33581f1ceed758330d4c37308f8e98a6f645685a70f1de2a8dd8539cb55098facca6444ebe104b6284b7697e7436202cf74277f57f187bcdade196fe552260049ef992b2ed0701c1a3b11dd5f24cac4f1ad4bb94641d0d9e772fcdff1c1c4c924d0a9172d37ecb7e8870305f48a08bda4ab54ffb050117a66a92e112a8ee78b1b25e5fba92f53fee5836e3f413ad6ce3f5ddd60d2357c18bfc066a29190df0354c850c4d1ce9e331d378dffa6f1791b7bfa9c2b2808601966938ad83f89117984dea37f5d5a1b8297e320ba31f16939878be36d47ff10576cb0c494a145bde8be7baff81edf85696d1ea6c270f33e18549a936bd401e64d26a653b5f0005b69f2d877b942edcbf8bc7c006779686ca6d0bd9b8dc6ef010ab5137bd97eebf300f80aa9a197b01934534ec999927816d1f06b217c6182d818bb3eee87dfb2eb3bc04eecbe5aa04e0cf00692d1925fad1f5889265c90546e3e2119b36c4728b35f7cf3f17b6d653fac091f476ca170736be695316ef734ea1eb221368add57386b694ed6919f9f1a01c839fef6b4bc8874ea401b4cd7ea2262936bf207bd6dbf9cb836e744f2a313f11a2b398a177c8407718810cf70424c03dbfcb3da8f5bc3b5a5ecfcbb0ccea20a1418f9c38f27b23b478077dbb80b9d3003d88bde0c24da4aed8a4abbcccc5231ff56db92994e0cba9e707cb9e5cc51fc6acd06cf6e0991dd3b16c9dbe2a8e9911daab8fb99a64f29578138810cb20dde2c49446c2de3feccfe39f96800edef8e17442fecb38969dadfc461417046b186fe8a3bd58add22b5218d8c36671f7c6d5db6bdd1e3bf2675add05449ad7a9081d56df60a7d02b8065ae1f89d9807cf10c3cb99888e6f6d85e931c03b0c19fd5133ffd22de6e958d051719a12c390c9743de299fec6be5ab3dfd1fedffcddd92345bef8e7042b9579ad9df72c3a11ac71d9464ac26ea5eaf98e263b2fbf73d10e17a2ed9ec7db7d7fe23c09a17d11dd8efa07a49152c97c1ca053187e8143e513d1200a3a8d4a20c66218521ba660bd294fe19c0e8885c9b8ec0206f6c3c28bcfa07198413280ca80505175296a1be54feb45ff7dca20d17ab792a9d856c8561c56dd667fad39eae992edf53763b053ce0230901e536e38b5db833063fa32cf9c3e27ca3127c3a83b76c1eb17edcd1d3c0ba54f5ce1a359133383999755f7f41bf53311613c2a5395ac3e22706082eee929754a0a9870a15919b270d5129ca7dedd973f65b8ff68a0c402c12d142f82a27b57fa2402a616a23f61164fb67242fae64c888a3253d741acfd90dc09ab1c5f737d71d323a5a44c3128b6b8d208524019513ee5dca97841ed64027ba11d0c91b33584518022d0a5f12e632f4685d37ae6c863e0b1b765cba7c83ba78a7b10dd818faa3cb6046f8a860d8304992744b67802d5d21c4c9a81b27fa770b2dd9c17ecfe94713e4dfcd8314c3a78f8109ce5989435c65d66624e4e0c7d021a1b8a2b90af31142b8eb6c74c73a2dde61a9a47d97260ab9f71ef7d88f341a393ca46e74d483202a57a4c88bcd97287a356544c266b5846c45158cf27b5ba8b01857dba8161439190832ef36d7ae8257ea697b071dd38b89a36b794cbe9ac907e4be40355d4678c5a645bcca1095beaccd14168699165493480cb9f4b9b2ddb0b1651a5ff22f45ee465b35867fb6bd3c4c4619b7ea65443bdc4a1af6e99473ed6c04720e05562a141d5da81d62de9e0d994403b89e98da65fdd08864e586213e376341171e73d8fcc37ba9f7261c732151823aef8e8038314a05f7a67c6440efa3bf2f0185a1f724e2b9ad5624735822b4bf356c3f287adcd58da36d097ccc90bf3c2fe286f4da1931bac90458bf50176f2c26c6cfd9227578d0763c00385e7c74311065189076197a593e61dcbb94935439e6cf90331d6d09913d4d30e9c51d7df5e039819264fcf631fef55a262c493daa998c20e98490e046409b8e0471f52114171a7b6291e1da7640f0994c4beaebee80d80ed38083c7cdd05a76426b5b3d65826dd0a9c2bac27be3af35c49c3ca3bde42dda71fdf57a69e435cfd5c10927301ce9f6f016d6bf6a88a14f7f33cd051c7113427d25eccd8fe7928db6287da233fbbb41197c69cec2103a708f3380b0ee5ba1870bb81077561b37c33bde1ebb1fa342658d46a4234658f0de6d75ad50e5de6153a06360d4f9f2e3355638aac3b31761d4d11e2bf609199893e14aab60dc6a21c30a50c71dc0199bc3fb09aadefc4ad8065a0783cee0c74687cc3e11f3edbb27176df98123f025316c3113140e2d98b85e4ccceb16267127880e04ac0fa2835b2bbca971ce31d8e118323aab8de2916397a98de823899fd1ddc55beaac1f846e0e242f63bba074f723735f0b1535739128c0546e9a24c7ce74fab62cb1025567c5a259f6d6ecd779a849003e98b7f1e0e9710b6c75e15a78390e1332c2d342ce23a07e6a377c03f1e190e29b64f92b6618b042d9b336f4b4436769ecdf77a3e8479eed6b117297040bf65cbeebf7ac4d0349547bdc9ee84ad0163c563d3ed2ae54ba6ceee6907b72b89ee039c3cd034f3652e25ca43842cdb96c99aaa510dff78ebabe68ca5c1ac44b640ea81ef975bbf81584362220b381eebcb895af4be83438aead3dc95aa12eedc8aea48d034399b0bf0b782b973e05b6389f8f08c1ec0fff330664a9e26dec024eeab4905369e240b532c43987fc5661cd4811c078e59d768195fe865efe2a4eb5b316b51cce06bd8a0822851c1d4b2af10f40fb98b8ac56f6ce4811437ef61e74181a093dd2f67894cdf7e0e77146206906f791e028ef514f61c1c32a88de1a4762472af33b89ded894e8d22b7f485c5b4462a63de6ff92244d2c4c773c8008c4ada99a0e6fcfb140070336fc443d81199cedb6b83643748cd1f059c143d5995b6c011f0f7171af8c5744dd0d1e8cda41891de5782b06901c3959717b0247a7893becf7528915b32b0055204a73848c53b7963ae160f76b542f495e35e17efbacee35dfecd68019d2f8d2922cffe5a2819c8f7d15d00e7d51419db5f103ea0dcf72f9c440106bd1ea17097b539cd42e2b1b1c89a0bb45834a840698214fea8a086d406f51f65104bd0f2fb4609c4449f38aeb1eb367b9e3f6ac8329185324b9ad5cb1128fbd20b0e8662887a7e1c708fa2c5daecdf6d061252917d9c766fe94b34c87364b6fa504eecea8445ae7f20205ea142fa08519fb6f8c1ee8ea92da6a986467c55e2ad00825a86fa741c23e46d22c066b608d7baba77d402ed9e8206a78ae00a6ec0fe1ce1b25e2493ad6e987c09fa1bd963a4105f09392d9854ea5d13534ed512dc6784ac93f958ff2b447b3c3789599535f789c5429996b8b1588e9370a5c7700dd48f39016b4dfc7f1eee469ea66efbdd358a75c57f5eacd21c72a03acc10553b5744ef5c3ef83c5c11643161c3e974653c0c3b1c8b86805723ba7abb28fb3d861ff77749efd4c90429542628fca7c49fee310488ef559a4bcf88a31acd288bcf9475435cc768b45eff67e6752d3f82abfa70569a8a18e859a385eb0be94e9b390de4356c41ae8ebbaa5ded91054971c8dd1831e44c375f33ee00b05960389e36d7e25c88a340288f07d70c4e7da35bd42d4be894af08f3f71e53829bb2004d3b2b372edb7a31972044511a8cfff637853a22d108e32f20db0b0800f82b46074a21c9db4dc6910930eb9e95cf236dcd2fdf9739f2ad3bb467b1477e6effb6f77cbb3d84176f69352ec913d8cc3d8952f13b625712915687a93088177ebefad3538d9ce603d2a0b4abb1275a2f4baec050fd005fc61fe1d50810e7abc0289062e7d8251d50bdaa21ecff207636f5fbee840e7dbd643951252face08412bf72cbb5e21f098aed867340a1709ca01b1af7fc74a00c9f3185c1dcf124e66b3068768cba63e79b9f5280103ea2e2ab24673d842d7514b50e7132879550089f26e964e8c26299739b973454c3fed910e6612443f6eef7d47f651eeafd47769e8d88fed9cb1c8d41c89f5c5dfff2416c9119998673fab65868fa04008b41986ce4b2179721fd841386f3fe7839f252696d322122387817f62994c7c0c62a045bcb512ca4ab2b81817e81330a935ee7c2a9035cd57525e8ab1c0548adbf3ff51daea8b95ad555e6e8e92a6eb2cfaaa3dd118e1f37ed92eb6e1729b63bfa36edb76afd36ad1f574488a37b95da94903c8da7da9ee7b420a378b53c54a372787b19614245dd1cff57f83e4a556a168dc81aec87903f30a4d9c3eb70cf97600f561b569f48a3592a208beda2b4be19ea258fc57d833146b8c0d91fb88ba771163781f24450a9fb112f003c1b0e045242cea540d6ba4e9965cd2d28e67520a593db32a4e0dd814145d3cd97c874e889f5540fa1b5d65ba92ce10cc5149239703b044b7e04837189d19181a7a5a6f0894abe225e651239a2d53ca25b5d5d1a02f0b626c7bbbc8eb6b4a8a00795903fc22cee27a428c4babc06b4414086a0408c895b8705d3c36474b16ec43ec76532b77f8af23a93f03c19704e09cf592f1dc3b46070f813015be5273de2bd91a09f42be6c2e009458ea2c1dadd97597dff330081a39c61a491fd8295de46909dde5c2351119d3f1e5af97b8ddca93bd0dcaad6298305a4226473f123b4a4276441ff0d663618a27448fff4807ae4580ed0594cfe7d4f74a94a1c3ed179b356c276b763148c473c6600ec53d44ed61b6d2e11302ae5c6dceb8715696d188643643ff61f23739c309b08384e93a437e5e73b4932c9d4522a2bd44e133b1d9ae27c62b25b6dc16d8d3fa9f615342a78e7414c24edfe4c7fbefb5b6f307f20e19636dd172d9ad1c09bfcf0be1a7b273104e324caedd0a9915544761500c2e0b9cf3b0cf341698c802e523c712453199b5c60572e37d674ef6155b81f26c5670bcbb1e5f442cb5c705984a06308fcf47b75c8d050712f5ca6f0619b58cd5c02a646bce777601262b67b843f906e09b2b049d75d992b6aa3d501eba22213e2a865c71ae070f4624183b43013c042d4d2291c87b1142f8fc8815edf0524886bed33259926e42f1a8470b2fbe7b709fd9801855dcf7a19d2bd22711185a0dcc36a955bd11aeac76ea8c243c456f29bf796ce5726679dd12aa47a59a0cf8251666fbe8912db60ba099ad25e4b9edb6cc7d54247b9446fa553e5170462ad96553dfdbe7ce53856332a1b9555096ace888a135edc018358854445283df647c437582e4772ed9ff8123ebeb874602a6adf0112cd35dc6ee11635557a22c29fa5c013562f562c1291350b5c25aa819323b610b257061ffa55bce17b3dd695cd3235face0c7d9f59fb7fbdc7014f557456d5df46a354a7e54379f6bf8aea230a6a1ef1e0e2a94ae8578f583637199cc1455dd6c587c30d47ba46eb70e9d291d9d3e127524454b87e7091fd07ec0689c6a16ff42f9299dcad48df7d1dd307d88c9143845af287b3c0072107805c80e4eae19109a95608a82dd6b52d5bf8378167d59e299d674f3ab6343aa2074acd0530039afe4f9a3089a61be41d88d72c7a6631e3921194d0c15f3d67d2d0eafcad533ee7baf2d581f067d3eab5eb0b71da7921e10a39df694c5b6490a3a47b838467fc007cf5f28b8df7ebda3f4a2ce89dc3140e1b40f5c9e8978ef365af8c8bfde7b85609c78ab4a081e17e46df0325f427c810a9bbe657b2fb8fa1d32738daf72641ad1ebe8e43132f169a81bd4ee4015bf058b1bfb6ecedb74f4576a907fd21f6e5086e0b2ecaa9e6ba2fdf88e3df80698c26b1e21aa39249a06d70f6bfd2161600f82ab90f87833818e02e16a2768ab02203f0b45bb3cb84b005b2c949810b0beb0e912e0722a6186ff7965bc97dc1020e3eabca35054075f2d98126d12e47b47dc2b75df09953ae3828936d60d3e128549972b6e3336d3d30c45401728ec8ab0001a178208ca3d0fa9d3db09f290b22b0de88865cc13ebddd3de4943717525f17f2bb51fa175569f8693327ac915ffa76fbb9d4ccfeea6b97fee7b45d0ab978ee74d34e10a8ca0b9b25bb026d1b1a87ea8fd197f9abdbb0704cd3bfcf6ceb0e20af87feb3cb72110970bbce29ce4d385dc82d68563ec516c794d5585bd36fd6e971405f9f0672c2394623a9582ea1f2d91680b2896273894de58672145d97757627cafd4344133f281cd45ad7cf69e6825d78869291371b562934e300d4a11041da686ab48f6b2d8c48b26536daf4db0f8af333d57c1157659e6d81f077c9aff173675a949a723d910b9cb48585c808ab26d9b181fec3cff1d7ed227267deabc5188e94a3e2087b7b86ab539a8b3054cbe4e7db0517367bbc0fbf87cfeb3533aa99a450e2cb2b2a88c97a4fc13e27d0a8dcfad234130e1587263aa5aa392778b12f8468a681d623649747de31e96602e481899b3bcfc9ce27b611e88bec75cc0aaadd6a1c4dae8c6da0741cb49200093024bc0325e9c693230208e163d7a75e3e166f9ff1d0dd53a5c8fa330d45b714d1af75a245423b35f74dbe12578312ff07f3f7a1035315eef45f82ef2b16c6a9ec6d49286f2efb62d353397cd70f52a047868d05b16b7c1becaed1ad236c8187bab4b2b47ece416877b16e2a5cf4958b07458d7e47eac2721075e2dbd86a771091140e0ad79d7f5f0328fa8c3f749c5428c4742d2e73e183723a79270fe7eee0d516763bfa8100e7b893310f73f2172af4579f523e44541626140b84e51dc861c4672020c5301d0a2c8f6d030f1e1cda1c1aa842adf6a22c589f48c439311163ac8544f2ac3de154a61640e98dcdd63a8c096c26bd596f9a59ad2eb1a2e6a7802b6e9e8a112504a920aa127d852d557e4c20836e56ffc06c14754beb65ab55a62f5e9a06d56b9b4eb3ba8e702fe308e9db0401b76aa67635fc7c966d261402bc6a5fcf497c2b1ad38da387cfb569aa263f30a9f2f4c8945b609edce88393463e25c21c5cd3774f423205b5fbb13df0365d9ab4049f858194ff213c3c1f1b6672e0b0e0d5eb7fe1fa40f76c12f5288c3cfc6b2083cd457bfe2c5904e487a89ca6d683d1f4f3d0c689272939b5a5ed52827c61de537db27fc5c0c9339020acd2966280a9182b0646d9c0c52da03592baf4add8154611a91b00f3f43581f0fcc78143c28dec38f9036d547a3c764d92d0045af0c981e3aa79912e5c680c6661ff140e7c695acb8287faee7a6266a78a105fb4c3c58a56352903ee9a6e27dcfb0e0c58dbf736e390ffd0728392f45459cdd74d5aa2edc311e0bf9a1a0f63728af3b4d439322a3960f7a1879e99c4ece89a969eeec6c3c5d1907a0c4f71a3dd11017d524a97a6326e95e61e2437678466cc385acf2992dd5a02764d90db1986867ef62e772b1470b2eb5e702f88297c8c63268d35d02adfae5ac506d23347f9310259f09d9bb78fb4958cb07c8ee945472f2a6e9a86757098e58a81b9a3d7ac011727cd403bbe88b6b950c8d685bd94256ce85823ad74650e98720927412abd5768407de37bd3b4212423a877390d8b2f55fc8c0fc6392c47ee1918107613096a4bafb9e8e2d99677d407f6a9d66a50613b83db2c5f748ff87822df6e8b5a16785fb55a724d0dd6d5a6e9c67c27a20b02d2e60d262f0f526f26be1899a42be5d54c0b5e51796bece9c36a24d50cf8f4b09cec51f4c3f95d63cd6536dacced2df6cd4012b4c9d1a5c77a3e2ba5b9c0a9d9a6a765b3d9f404bbfc88d4ba34c61a189e22eb41a94e35336e9d5b64edc3d91e9a8657c086df7427cbd8cd5cc43367cfa9d7cf59d6201e2d97aae85a66e01b8553368045b691e4a2d9cbc69d74a0be50d0788985e93e61f7c5eb4df5c016b78982ca05597a75b36a2b96ff79561bb8b9d196444d2f7583319a81bff08f5ae737c9afc746ce1af105e68b282a9ebc5ef9b2bc9e3a89a276ab491db3398e693d22e2abaa52dfbba11b1a3b4d876b8991cfd683adb4ff7a03f4560bad5ba123e93826991b89296c6253ca842537439f3ef18bf6b3c825e895107a12e492e7b1ab65283df7f264f7b97b8304f2b3137e19adedc10e0101c9a0f4257e6af07a41e3771f7fa78e83a0a84432adc58df6cc6522c5441426203bd27404d80635d22dd1572a6f51c662d2fd66019ce098d535c5931d593b918afc646b80b5740eed437090e10d630880b66b3f76c451822842100fe2e6a45d195286aa4d45cdbed932e9e2e99a273ac3ac18f92409a25008d498be9489935c81bf268fe0260a37e815e865cbfd7843b03771b751e3552ee32effa34951276ca8e3b742bb8a9523db0f4955a2ce92c83cce16217929391d57b989315f4150b50db2a701d6e103ae8e43644d8a34f87116468d3c8b115191641230e8fc4090e124be285ccbcc733f20b78664c6be11ea5430beed24711a4966676714d5064a2f41acf985f5e0b2702d78c513991a3612215c704f8c4263c916da966ea69a8b1672e93f74e934609c78568328b6e4006674d10856a6ed842e9753ba954436a603fbc3e565233758a42f319e32670a1c0c735f673c6adaffd6c89449179959aafab1baecce223aa5d12dafb7111d9280b6c00cdef235cc4f4f6e4bc3b20ea11248960ec735950905cc6a508d8b33fc2b60bca6463189021e24c081d5eff632e37db0519ed1f99dcd7c285055b0b439408b5865a5e97e87dc835c4aea723b7daa11016b3771c6bfbbe7504dcc056549f823cc364698ae98b41e67d81139a564571d8d47391bc78e8dd5b314c9e29860af73918616700117c0ec40bf1783e2f6161b1372cd4c6a645101b9ca3a9c0b6849b74fabc2ab08bfcec8065160f14a0771ca798195c960f2e89b5dd794105a6be99eba4679f3fc0e5f42020525a4708a8738c274f0e43349d56802f9c5752ca6f4e74a8a093bfc599639dd3e40a60157ab29bf09a1fbb6373ef625e9274038be067fcc7d93b9a76dd7a9e7158c0ea360d1ac24a79411f079edeff074debf1943bad000cd3dd1269169819263f96d4070acc65ecd33255942eb8623e4d9cc80ca86aa35dec20f6c33a875ff4b4a295c6150494c700f483e07a701e90d09e208f12c708b28e04b1c0879bb55162040f7d4dcb0190be0a6d074e5b2b4b2c29ef0f9141cf28581a86c1736f0aec048baad7e1222e7ff9ad1c3e5c039c64ee158aead90126d1661e75a090ce9579209b61039ed121a0142d66748c9d82381cf9239647ca3a82ada530ae1514b97d3329f81b80cdd90a699bfc9aec19b354a1e22f14bcbaddddea7255600497e361ae62936dcfad7b2997289d27c0e2d224653a2fa232656e0c9d3bc160a4e721cfea729752f40f74772f940a2d1848cae7db4d5bf7cbdfff80bde115fb2d030869c17384743eb06575872eb5e9c4aeded4e2c1e8d59a8ee00454aafc8b778696c45d1aaa3f683933360d892a0775019145b5cfcf609ca2d0b447abc26ea620bd60b1db91c431999d5a49a9344b35522795206d0877d8a6c10e2226a9f2c80b176d798ed82d8cfae7196d3b480821dd3b263b553ebd37804ca50afdb752cf3bc997d8dc8b9f187df46af3cad09ea38a3936937b4e456f5ecca98abcc428b2e6455312c80117000b0dfa4bdd821927255873588f3e3ec64e071b2afdaa62d0cf5020260da82de0091b36741d61db387b3a03287c8299e392e9751816e889897365383eb430ab028f819353af4227e347c6a8ae34e5120431a467a0156c03187c75b5b1cd6392263e254e3f6c140510bc1087088862bee2a6a755b8c2f953bcd6210116f3c3bf0abf2373ddd0ea8992c121516d9c46381eb6ad88917f6936bd90d00d413e1e530a66459e07fad1c1aed0ab4b24682517ac40d4c22ca26d6123c6436b071e293d3bafc05b58d67d9189fd67cecb0848d68f561712416113e8e1a21c14b2a3bc1c4c396530189f8430f11320aa2308371c807561c6f59a66482d4db771a5ab785772c116ea0eecb44f65781a8e37f4f8b9422b9cd7fc388541744da40840eb1a690d38b01c30374f5807aa6ced388a5d412b7e32de52ccc0ba967a1802cc8f72d99a886538913b27d4b380cd3f0275b30554723316f5d552955db388476dd8a8babd87b3478bd27659fc1b7798335acdd4de3355425c325437d4fca755e8c385abea0d07ac96acb4221f0094a1f5c0fa8333debf236f006f8e06a2a775d0a8dfbae0272c02791327a86be815507e110d8c96a37df354d647b010b1d8dac0228d366e1f63fd9272230202082b45290c2b57ca268033ea4486bcdd1999690f92342454a5a2018185829b292fe498b9f8989797ca00fa0801dd9048cd14fb3976a4bb98ce8d0b6822f0a9b31e9c30028ae6cc31f6c9148af9cff7e8b51a109adb4a96a1a5a684e3d0f61554021107939ec5e4c070170bbc53640284916a1447542671225366d32f6ea48870a6f9ffad6825b4990d212b2b537b875e05a561b8c9e0ee4150673e074926162f9de4102c564b3ac955175413e101597bb78d9e55c8077949fdc5f84c19de0c211fb2fe869b42ccda70b2049aced12c021344222d20c4d03ab8d16d1be191502261074127c92e32045b1a00f6e9a0bc959a35d51c7816572852d1a6d938b7f6bbb625a5db82c34e62372f4d80efe3c2aa1d9c21cb56adcb05e9999a6e320a966af97142841da52e2bb64f8ccc67d9888cb2d55e4896a7ed41e52b45c764003467be7f3c2c9495bc6ad62ed643bf671111f6efee5fb69b49d742cfd2400bb9591601866888ac3b9114292a14234a69df8b9fa9f4b5053da345b6dffb4a01bd984af06cc9d9428431e237ddeddb66f2893240461bba18e52df680edcd9a8ff778dbbb38fd76d2eadd9958ea5734424b986b585d813bf86604eb4742e16521e42ec558cd571ca0c8d1def10d055c5acf89933f3340c9d00be867562cee119133fe546a6a09858b30f2c89a4e1e9edc4e52026a2078049c607353bd0ece88c31ec3537bd2d733cd24d0408fed03cbc78053435acd4e8d52c9b7c209b8f062181fc8cf123b31e5f838bfcca7ddfc41094557c3a2ea6fc6b23df40ed069df031e5b6cd18ae09d1db421e4f8fa51e26e7d41b5e26bf18763621181ffa02cdb99b997635643d7e0ea579616f3312529d90f65c347070fd8c15e8eb64bc3776d5f5841774842792b9b5125405726375186396f41ec7013cb075b70862aa5ba33b488aab9896000364950028d9ae5362beda93295165550737822c76e4d06361633cbc45fcf9118932d9412b21c2fd9655a5012de0622e268dadf596326097771932e2a57a55c532744fb770f5359e5cc720a270ba6b8e37e850c42c76c25c8fe77e9644fc329a552fbfb14a91fad7e0121b90734f1b4302e12fe3dc9596d28783fec934260b0a186e896a131c3b888c01663c8b7339cacb77f2379dc77c1b60d14685062428129ce7651e5bd06f162fff31c9a15206409d475175aa9190ab55bc828e7f12bf0a5a31fc0f54a8d6d051a2360409ab63b35ba9a2b80d105e6eea38b0280001d0f397d99bd6b85c46b346ed374a91d26a6ad854b0bdd38205612c8abe7a5aede2069eb5702902cc84dc3c259fd790505944bef9d6b04f342422eac6ad25b995460a7bd6d6fb4aeaba115adc88af94341a461a91a4596e67237a4b98ff4737f79e63ebaf1ce76626482cb8f4eeafd6ecb9cea850674f84e4aa3cdd7be3774953311bf83964a14f57189f409b665fa06299082eba409a94e054679f027d592d0f08de2b0f45487beae074243e379a4fca40eac42c6609e4806156c0989b3bf017edd72e62f109af56ea3cac17567024acf0fae8b5b75be6482befb5b42acfe22f8fd3710111e6ff74e13fb966a2583132e633b1751b22646b1bee4bd389956ee2707a7388d58ff25c7b0ac0b76937efd2372368c76c9d8026afdff14683026c01d69cd8fc19531eb9b7f65e54c873821870fa75b09f8bd86c5053fd983f9217a86ad4e17a7c31acfa23dfcb008ca6028f1821f83991dffcd7a22b3a045cb7d27542e44d350aa93a6fcd6da373b4dc794fac3ed8911ebb1606e175d3eb0c1671c1af190c959f196471728c86b90e1c7a68c8a6dbba535c37ac48be17dc06d1d2493bf727970d2887955f50b75bb2414211a8b5696a0f0953a99590087b4a57bfb46eeddc0fba6e90f0992a9e899f1c6d7f00aa6ca3574bcfa9493d5f0406ba29441574ff39e139a3a7f7ed69ddd0d822e3d1a46b4a7d759a0116812bce5711c68d85025cec9a529122285c1ce936a66895b412e3e14126fc47adcd3100786134bcba374c6b99efd6d301e22d0a73622543abd2accd4cf52da83603286403429d0fee4655e25184c319d24828efd05af12132eee5792b1f80959b6abc7c4dad24a43d11be8ad60458c24d53d908db0b63293f49795b2079c71cf0009b01fb7ae1f55eb863484a1317f58597e6fc86fcdf58d5514bf5670618160437acd3a95c4c16b0cf5529605b2ebee1df7082a8e406b3ca4d7d1bd195b73e050d4228793b7ac66c667eb841e656d1e9ec17f27990f8794d0e88484e6adc15c559010d90c936e0324cc962767a1006858043db95a00451912bf080d6e91e467ae88487d24c545b405a50e139607d0bc8990c0e046b3b163d4a7e934812f6894fad7e669b2b18ff4ba45c96ae5a73251dd841c62ffa79f72839825ad451dc65c5b9affaf075b8c85a52ab4d7aed8ada2f32de0f7a07f6821ab389bf0b93a773cb67283d5c16d2fdebabbf8875b2ad86ffb497359d127940d039e543f9dcd3f4088d6566e1b609b0551fd9e50fab93a2d3b81388611cbd584bc5d3450d3cab1e11440b62468ddf7c008ddcb074b82cba9997ca842276e2405960d22b33a45437d35c7b163800e16a5f932303df51fd0fb4cca5ae26a96a2e7fc3fd703a0fe166ee298b608173005a1232efa4a47dc1f3c37c0bc462baaa25c580c629cbf6ced477f44feb1b4002f820e0f0c191052ba509f5e11942899c5e19901a8f8d9fa3548b2c5595e0b7d6746f7548ee1d7a482a10ebdea7c5be061aa0701e5d26e192d8f61ee2ba992b52bde2016f0f13bf9dea17109937e4872df5137e84a5fcaa26d84ac3e206e7487c297c5868bbcbf85e45ec3359f6b38a9cc73923cd59c27df2f908f9f8656c3c189cb5857a4715621b59d6a44a61dbec9d85e7c037298d77d76f06e118a0665cf552708271d9d080c8550c5be03fb47714e7e3f66d0cb7f19970e630c705142f2cfce49517d8b4c8debffd08ba91894363e66e4f586b2f3db272ff713291cafd03779a3db0a46f261d0e4476f4e75b34d8648dd7f11577705d383b4b9909fdda2862a1133f24874611a48e1cd021b2f3ea651130776cd8aa6b028113930d6259247af4285b3b3e5cc597af976e880cbdea0ae58de2d282152540b7ad5f7cd9c252fceb1a24826b331db27458ff125eeb960347df415382499fcd9878cd711230681bdb17ce08052b4e7cbda6c87986d729ea802f6e37862da4737e2cd801ffa732cf3ac79fc2cdaf14ce66198f5aa141e1429ab12954b37eb5edc0064c7069659651fe31e923d446692fbf66bac96835bf6151ccd3b84fef2f004c6f232ec1a62c1cf8c16fc903f5ac1fa3331a22458fa9dc988d41f0baf8f045242240cf2275c8031aeedc22d96130b6339d505172d7745563275fe97e23962cfef670561719fde567db1a28139ec24fe83fd95cc7ee2424aebd861cf3261a23ab0b80c10f84c47e046354b2b6096ce9768d33be25c5e18bde3efc8dc941e0dab6ef51ada113ad6c04b85d5c6fd85d56a4eb3354123f3b1f311d8cf3ae050b576498aa87eeb7d290466e1cb0d0de050da10560ed7b5935ec974448b297b4b28b95eefe0aa62013224f293d3c1b3ad3b22e1e1bf8bf8ea9902bc0bbf743f6657765bd84ba0f69a135766692f4d3a7ddb8dea0e6990e2534bf89bc124781708d0b44643d9770aa1c3590bd0698bd9e094da8d704072bc9a773b3f64290837635918a4668cbb4760576f2d3b837a1656bce3d4442a72d1f7e7760c169cf3a2f03ca005acc218f248b0a1a78438791ac2fbb73288d15790ec2dad713dfd189ab9aa399a123c69864d137f6207e630cdaefb1e6bc795bc07f3259ff9748d26831f883f9310bbfe06a6346664b5aa19ee94650a533ca42c033a10c71282cdb1a5d7ed4035755c2f16ec0a2fe82ff4828cec41316896bb6642a26f1dee0acd68c651e8082febe13b41a29fcccf01e85881bede1a4f313b9bff8e836fb1dd714310cf9a98700ad49ba9c94add759882491f3a6cf4e7c0e2b602c642581a116d5c8fb4ed4a6d51378edd7b47c90d8e4001a90e5758aef5d6b08df38ee9b9bf372124139429bb77ca738cdc1818297d77d5ccb0b6dd46104b90172328a4de3fe416315b553ef88f0f1db391f54a8e0a62ff95474b0bdf55f6a3ef95444567417d7c5be78624b273e78345da3793ca6cd531d0d78937eb51bec059094cb37fbed544c6404a82675fd97d2353d06edb3356a47de394b9af3a907b0e61ad8b2d2c756a799fba6aa0cae85218294a56720543216d483058b27b5aecfc9c613e631f2b856952898e6585983eba2f06f3ee0badc3f5228164b3e5583f2b9655c63210819e3540a4e0ee7e51bbd8c9d63e2dbd78875c7ecb123ff2fcce3cbb558e8495b49f5b93cc6c55dfe4159bba65f8a177cfe7cb898082596289e2807666401d3930ca0e65e34bccab40d5ccb93dd1699054f25afcdcd6a71c6c0533d294b985fa31850d7ee88fe253b0010236d0bb159d50883a7ea50da1f10522aeff07fe6212f4ad44a9467babc523708a6e39f2e99594befbd977cc037108e2f1e8b192bad99dd52ae3324f02e7a5c46418574cab8f63dd05df5a0bf3cc8f3d4aa5c7358f5a2593afa258228ef343894774a007df968383fcd3adeb3e3fc72006503ce2d59d36bbd54e961607a609cf268ee4df2d6890817d20618a675ed594674207a3657dadeec95d78037e1764e1f81c4ee9d29e84a359de49c4f217c072295e739913a391aec602293d4203bb251ca8db866339485cd8abb72d9ccd810cf6898058535c281b7ec3e4e2fce6998d2fdd5d32ce829c71bc77a48175104da39891d367a612ca08cfcabcfceabc666b7b49423a80ae4c8d590d9d2108dab9047c176ab6b402aaf27715f41372222c38dd0f2011a10ca80ea86159d55959ac9a5d1bfe1856cc5c76e643d45ae5df4c6dc2511c7386e38ccc68be1981a11c533cecf922f2af38472625fe04e1ed46556c39461aa3993890a01157c689a06c7cab8f36e62dad91a9b12990a247db4f3da3f2779c8d03dfc483df9ddb31f9277287df9f695c86625da6d3409134d4e1b463882308ca82f3aa8e1a16f86b8105aa6172768d9f39237b98679a598b8e81c66450d0da049e7ea262c1839f199691af03fd272dc59aa2a7dbb71807b79e68e24568c5a06ddd3dadb2cdea481381fb10d12c683a5133bb37ff082aa97a17a47aaee5e646857fa33e0b4731711419a1206d5ecb67c9d724b75562e2f268a9e7ee97013386d84895370941313bbec9263d626cedcabb867a0bcf76082e51acfe94369b28e1bba783385b28d7943b05f4e2fc27fb31263e4bb6929c1ffb43ddb869044535325c6663c6dd8453105850162b88f564657b5041812b28ee45999280c35d00f633148f1d60a410dc35049388fe25c785b7f024e56362b4c94d3e224f0051699313e5ef0d6f44ea18b79f0f7f2f97e60569a736a6da32a2d62057c9040f537d60bd3ceef30c32c9f7ca65c1260cc6fe6cfe6000e1f6fa49c8c2be975dbdb029841f5021ca55b2d6fb787d3cde134c2927b971bf6a2ca791a33bf6f9eae14b0e7e07231d1f7d9a9029441cc382fa326206a13eece7c35656395b2138493d9c6f02f129698e9cc06320012b9d5e552f596a42e3939373610706d69008cafe3754c90ea6312b94c4959a432cf9305a3ce286ac1cc070b9686c3178ddd9f993e0280f4bb86a3319c142639ccd0b13562088d951a3f14031f52439f7a489816b963e8fb839329c88c40a3add91906592d7c4b152723b5c981da27f18cc29cdad8c42d7f6ef1f8524516a50a2791c1ec3845e5852b44cc382880e9a94dc0aab53958298eee3a5a2408a242d6102c731830e3a24d9b6918c210fb49c4bf3d90902de1724c162e163d806f441f43ba0b06ad5e0225a4245525c99a3110647942a011dfe13d3cb0a9281ee0bfab5cd39267c542154c52d93ff2440ee0b80b92c55cdc4651184062e896e89aad477dd71d96c6d884a13b826fa67172db80dda1f199582336abad3b03394886754e567007a010df1eb91d5393a263afc1502f0950117cf7112cd0e7884bc9067e0bc744c377f3da02ccedeb40e516275e83b2bd3498da176f5c27e9f370a70cefeb013593b0ab9cd49599ec4a4c0007f46f623b47888ce2271cf6ac67ee7948c017c4324a26116172802fd6e8d7f1a191aad8d22cadd5a3120c4934e6c9bb0be736be4b82748fb3010b9687ea005757e40c1d9c07f071c3a71d56a9e7a488a99494c950f7f6794be91fa8eb9bd3b7b4710d2a328081e9d6325416f022ec713c83b831b11f40a71bd18895508bacdec15d00bba2e002018a615cf5bdcf4907b0da58cacba39c34af4b138bff12fb78c81e059742e1f08185b65c74668a85f8ac2342f3efd6a7cbd8a9e0845fb509806dc88e030cd548eb67e5e0c60da5f63ba4a57b5291c27e00b6743c4e2dcac4f268e440ceb3b3ea92e1b47858143c411828d0511129d3310732db6f37b9501c69a04f0641ba963446112de5875b62886bc715d57e6621db46a6d9c8257e2c010a46aa320d4a741dc3920c6a90d71159be86b54c2bc1f73272133f0900f7a7d011da402b295e94046c09b13b3e35f65fbcf47aa474dea08fb9c68a0eebff494785ab0488d8274381f9d1194d529b303cb89550afdd3f1a2d0bf165c8920acfdf26fa1c49dffeb9b335aa54ce1fd178e45f37b637c4859a095da59ad0de9b964f4d3f6b1cd552422151b5851f862c9553f811ecd03be09b5c2e5062525ea6f731aa58e76fdfa098030689f1305b83c80e5535bf9c617145331e0e099027b52269686ce03ea9723c8664daf2447067640047cb2efa67c39eee060d36f20187a280ae28f1c8c4cb7e1fff86f2b0f4866580fd5964b8de355eb6b410b6df31f068726364200fd7bc56b06018916515465ac0e45a5e315d85865960a204412dabf7baea35ca96377982542045bb4167baeb96dedc1814df8d777ef25fcb749017ce16585c64ea0e65e235826d8838ee8d99415b035dd2736770830e013f685fd6c3187ba4abeb422800adb2378ba3dfbd321d87e7be3044a1722c012a65f0df61049541e9708baad28f48f195f209b63d8279fc0b96a038d85a744d6487983f060c75762690f46d4c81fec5a8d69331b3e56871afd0cfcc82d4965cac2649cea22811e613722e50b274ceb5066e44cdbbd826266748483e35231569b500657d6c7439ee17ee4c0c79b82f98dd762985273c92172ca20c1be2eef49829a1c820b565b233cec29f01d1533c2d48e57b151b30207b514c5e52547de5c8202cac0080485dc9a64cad68623c2bac172d393f1b7fc72bc60b978594d1a0f0d28f670e30c99bc6ac7400025db9c69f488cd5647a1640bff0a92a0b152db13bad33a28f74b4a2731e31e3e51e21a80aae84bd80a39e02e0a96a85dd155db124c5d42cac828e856d915336b33589a8b30743eb5ba9524b53ae816bbbc7ea7d21720c29505ad7e2c7244320ce267d013c80f9014df55336c47dcc03a6eac19013f99557150b7218d4fac264a192fa2b3e4471cb785d88e59bcd0d53b5fed067ad7d7ac94e7687ee2a4d70e14afca3a346faf8348db17745daa0a7e34c8c7a3a8844087d6cb789f518a63a2e379366012f8cbec07ae88f42ac00bf0387730a9131e3ade1dff4e8098b5a91a23af2eb3ed8035166bf92ee2926b49fcbeeeeb053588b7dbf924f71e4bfb719236997409ea9043caf309acc4f5f767b3319f6b54217f5cd0c8211116650d430895492361f37166b53dc0591ece4c10747a28041d94cead9c154261752292300d2da6307232220c54bae9af784e8a75b7aee6999a4778d9769b20e073b8398a10869e6e0591b81941a3f1f378cb01b6fc9c5144dc68dd917187298916a63f025965fd1561e08831942398a06d24cf371655dbacbf8d570dcb750292ab416e96849377e17d03fee140ae8707cd00745713079019a2f7a10146e374143cc148635f2f95907a94338f8f963a6cca6c5e5b0447910b4b3b3aca6d0400a3c6a06894ff5416241057827bcea3a86728b6ba8549202414795ea335b42c806b360545b40cafe8bef5b6d6e22f0d6bcd0174e41625ed75fcd4938479bf360e01db15b085f9a5c198190743cc51d0aa08a8c1b4da270616b40ff62cca17038815fe17524a45ba809f3702dcac6230fe640043ad078c1adfba7e040b5cb3d6a46b6d6fd9103f2d61aeb993412c7ac00a43b766bc57bba4c486fc4046d3632d9c43fd785019d43863d9bc980e6126ac353764399a1dee04a554e0f3ea7e3ab2cc066103b6c429c7835724f768fecea0e0aa740897ccba238b20b4f70840c4fcb31971a64ff8adffbaffd888eeeca28c5e6d2e67898fafeccd5a7ab5ca23b990dd87f854b38be1ee7830b3e74d9395c8804d7f7e137d5f135f0f3e2ee3ec25d866873ff36cb55e2d5fa69b67cde66692dd7e55a3366c031c8b0e9e94caab6434135176dc47a41ff76a02f4509143e7b85b17f4f42346883dac3eb3dfe398f128939b0156669e68dee4668092994f9a6fbe1953cd3d0c339a6f8eccb4548b2f7ba4364c8a449b9dda6c6c0da933539bf9a1f73177c021f75d79b8200d3b9703a3a35174ac8347433b6d0b36ebe0d5be1d5b05cb7630d68271633bb21c5cb3b01f0c7d6d92bbe3a69d6f89a14eb0eeaadb3a2fb58d28787705a45b5d082cdac01320c5afeb1293533a854aea4b4976f82eb6141c81c14cfd30304c829a5e28abd54504e3f0da953a2df3ec3ef3f288fc516617926ad8624fc48c062eb206384b58e66ce120e5bace51cfb0e66bc30cb0a619405b3390ab077c1a620993ab931998283d1cc68b6bb585fb4c7bd8791a973edf32d4b4b064aecedd91e34f9c943f9af5122b375ad12bebd4b06c3f3443254408cd5d76c140e58e66b276547f360e9cd17e0496e2745a4db3417ee9df01641ab7358f80398e22b5b5dd1305b1e225409ad36cc0b415bc99215ef4d6056e4df782de40316b42f7733f9d881f1e44069f93834f3acae1d51fcfbdf736ef2614502f09e53c58fa8c2a24a373bd105a2f1001e1e4e2d788bdc09568e97ba3d36fb3fb76c562bde65f83d0b90124a8a0b45bda52969c23f4e0ba87b12257ba92c6badc8c1a9c3b6112dea50c1002a14c9a692cea0d4f51c8c6066a58cd0c4f6c43e1a77c51efcd8511cb1d3276b860f290e1b5af2b807bfbc86c33b0c0d1c108f78661c8c33039d977fb10cfc507cbfb64803c7a7aaf21621f0873b602a59dc193eec6958a23c6ac2ade338cb361dc47f42f565f45abf597c15bf22f12d288191039e607abaf26fe082e56208415fbaa8ad8db637cba39eb5107d198b421715c61e334bf0437a4906e889595016496906c66bc6674f278fdf377cd4ac328ccb08ac6a419aee3dd054079715dc16f188caaa08cb86ebedd1171d2748a56fadceb0eaed08b0f848b1acaa19937c74adb9f1adb3b0dd48a62e509b5db8cb7353ab97e32bb9bb38f85b77201966cd273d1f8eb3b32565b59334d0475c592b46cb705bc8df0114010ffe3d55ef24f27cc1aea5b4b19fd84ef1ebabaa7e1a8cf13d6cc5d815a3182c140180da9398db461946ff9e1c262332f34720b2547f0bcda0e2345c2796b612905f6b633566910f764f2961b8049626c22aab7ceff5603af66a59d1e4b925c49ed6457f7ebeb3448db74cfde1dd08a37da80ffc3dfc022cb3709e2d6ba9bfa30f942b7c51ad3c490170033ba9ec5f2c0c32333de80de9cf980ceeec0bc880b6771066b364b5c4db2ba66e477ea145413ad30ade67d6bd90ea3503efb2ebf946a386f26c30ade0081a3c466693e39222748dff9c3a5bd86404c6d5d98cd0af063de9b918eed278fb5aa3c347b161494185e269025fc26c16b72bf44d389073088d83a011267d9b90c000f8d8363e897ed4767f2540ca486ba9869ec627b1bb4615963850cc8084f0d58c3469bfd6d7298e1b58a3a7d8f76b94887638d4161bf144731f5dfd4d1e15505c3d5734cb9f02e9e6b53ad3d33f51c9750e11dd73221105478b8a23e61b0bbbcc083cf2cd405749d99fffc5154e30b9c5597a064abe342733a33c97a62439be703cff44b575d7b56f19accd6c9ef6aa9ee271ea2ca1edec359f360e3390021ec2c7f914624f9e145395770fe2ab3ba42a4d62db788c5cc8937ab0c41b543b118542b01d093ee4d1531a9a01587dcf11b1aa38a0e30e04843f846544562d4cdb7178b824141cea8af62c9c24940bd0a457a09f5ac559ea9cba7e9f061f24a0514e9a1f6735e95dd3fbd3fab345c80642e3f38b86c87924a4ff0acbd903ca4358d2750e657d2e3aaf269cc9fbe6f71db3d3ef7db61b9069cdb711c4d1a1c01033a62e531a376a5de6695b3b6b49c4ee42ea1f91dc201a414839c9c00e5fcc4981ba8cd8a534d2fbe590d1867d04f8038f5920cdf5afb8927377a2020951b98549a37429c0b4639c263fdea914a389cd1ff594bb09238cec42105060770a390e1d4e67076c2a736e07464bad4faea0197b3202fd1d1827ed182873a1595a9cf99fac03a58478637743bbe13b37e7c043ab42927b5976240e9dd701bd183108e767aaeeaabe358c28151072081e2f5009165541f53527bfbd0e7907632f6581b6188647bfee305bcb50c84c1e72752bef2e3fea8e6fffbbdedd727e482eb717ade64f949acc0c82da76ead4761838131b3bd5c83c108137381771c2b0003d521f52845359bc0bc40b26a79f326a82d6c188061a59dd41cb6a677712c4fb04057c724d71ae4d377a0f592dceab1ccdbbd40dc955de5890dc59e7619d1ad21f3a9ccb5624fa33bd1a6d446edfecc008139aaac6c41ad33f4fd1c65d7fd970f8ac0f138a139728212e20967c96625592f31f110ee2395504928daa05e8ba085ffa579cd98db58fbd558bce9e9cd9ae96d65a218a162b57c395f08ace53b8c27d35d2c67544feae1b56c29bc34e2b573ed8ecd0796a5fde0f6b00aa7beea83c46bc3fcc8513129b82b38cefbb6da7c1e47264c79aeab9f907ddccb957436c181231305c1324d66f512aee25b364870530e2c6b0b4f4e697f8444037f2e3b58fda6c0c1eac91de04ae3b4b56cc6bd57c4c799a80f197f253036e2bb6383270e7fab1a97de62f32141f82c1f7368161707a9d3afe9a87c71e98a1287f2a3a0d9172cae768cc0f8ae71581c39c3b6cbca0658b52e2058a5fb6a233d904628ec498abddba3da4e835d67ba326b2973b56d89083ac510739f28b3501fdfeb1b7db194ced1bc048a84b9f2aa4384afc3f90db8abc7c1d387735f35f9939164ead396c00d16e89fa1774fb0bee52d94afbaf875f86fafc84b007ca2d2967e8d9c401ba0f77b23a91f06a8ec04887f4720c8c5df5ea0d7cec70e014ddbbdff28fcbb7bcc69171182be82ebd8c4b3c3ede61e48fa6d56069badd5616e6353324ab4c71884cf01c206509bbedf2ef7accf85e6d47616db7419b2b0cc5979291b2ef89e0b58ce0e11e3cd04532c9d6c82d1374f34ab09d4a3660fc7ddcfcaba7cce8231ec0bb53d413ee0e184c945c305d4e3ec0963b1f677871b329fa169ed3beb15d3cc1786e5359313975fac4f66c1bfc0727824442663d5dcf3011746ee4be429f486a859d5e89cd737c4c9bfc2a734c4e91b9868886227308da2926c059681392cc06eaafb39816357bc7a8d8cb3d964409bd665eadec0605a989bb3b274a3e028cdf19da137e80d2c162401d4d0d74b807974d8c8ddc676db99b6389104e175ce1c1d85f937f3eafb4c27ab33afbd1c17062d8e27ff26b1901efb79edb0765d7f7dcb1b47ccbda2fac2132e6fecc4480293967690083f4c93416863741ca87bc7b2c655ced01120f48c198889dd415335bde3b43357f135d103354479b1c89621a58d70faf2d2419f46a50c659fceecbf5766c41d2129aa9ff936a2ad4f127d901528870a7457ea67bef998cd8cd506baf262640ae2c7596c019ce2a5541e1a7934ca4a39838843a0019d5b909d424c1d9e51baee0f46305ed97c5d061fd5fa1fb4805695f044a52d3a6ee7036628057075d31629c6645598be9bfb0a8832d806be0677be31e9c3410b3f10ee8fde83f0927145d907ce8c142f58395ec3f4d64dba6324094063881be9e45a3ba70974eaac40a702b7743a0158d9a3cac52ae47a78c258210cae1546f56a4e5d4a51277c8f934160dd2932f88b0cac6b9a1d9e022f6c7ede429d54c1204930c08a94e8e3af9112d857578865a8d3f20f5815e1fb07fa3fca2ba2ea31a22222a194e4af07c5be6b4a660dc6c9786f8acc0dc6c97a678acc4dc6cb7c6faa4c8dc6c97e6fba4ccdc6937dcfb44c9bc6977dc7b4cc1a6ea8e464e87a78c31effbb0dab8c892f1b7551ce4f3c6f4ad303d43b8e844ed886de4681d26766e4e57628b6b4ca7c8a4c9e23a4306689edd609b805ea1124d25a38efd93e97b9c0b42e979fd9832350b47246f9810e18084a4b5b0b8dfdc001a9bf9df76212969c16d3c004fedd90d29685552011baa22216044809d9dcc8a6006ffc42a830fdb7e67c47cb0780e479b99cda6f57ba5ca09db78b76f04bbd1c099986c7a5cdb12774450814540ef48397ab8d05ee234435c61a726fc2ce5553520276fc879995359f92c5ab892c65fc73fbfad166c68dcf58727a6ee86f43d752392b3c1bb28df442851b316857a2518882f65ed8e4ff23ca639f0b3f1a3a8bb412128034b7235d86607ab2de70f4792bcd6a8b245677e675a8062d84481125b66043abe85a4e7681e09b34be724de483ea07fd9b6281c5cdc7d2a3d3267306bda54379d03ab5754d3662b7a1043df7cefdbb2eb361f16f07cb921e9280b7fb1026d1ad3e36f6874d0595d71177a40e4b37365bf37a532d35f970b733030c009f63a48261341964ac0825c7a5e376df4d1ac445c214a78afd9425510a332d493e6f82f00be2d43642a661133d996aca189edd76c9ec9aac4140f2bfbce3ebbcd53cd9d116ca3b0e04170c9f3abe8ec3f08b03a748199d1c485e263c612c772392170634a72b83871a82bc56ee0b05adc17ab4a84bad811842d7313fcdab632d86b3249e5cc882f0214be5b2429039fcc69658e50e8a78223791c3aaa6114337d3b8bb32682ee1353932501e5053c8e08bcc1a5339cf084059bb0ed1aba66143c68b6cff8957600fda48f361f6409ecd2ca8898eb203dc68042aa3a7bc5a2090ba9a0ea500d274c068d6b00fa72b4c1d301aa518876f03be2b1b8d12a0a1adac418ddcce2745df79bfcba0355c195309c422100b31fa750e6ce4c0fc011ce7aececdd35847bed7aa77e6110c32696defb626f79632259902bb0ba80bc20b4e2374ec298a1229bae8ac884fe781ac062bc0e290cddf4051b97cc56526305caefc8a700fa3809038f315101267c2202131480ad0cdcfbccd0305b920ce8441414cc49b878152f4409ba7016fbec122dcc3aacd0d6cfe0db892b2f9362c1330dedcf92c1530d2dcf91de5c2f6f3373329259a1f048a26891ee653ef9fde196740e68730990b4e3b0e0e8e8a75e616d62fb6bfb78755c9dd0ad6851ff4ed541fa4697c8323124a68da500771e70f69225864b9f38f043db973e64e66c2c2c99d2f893ad58af9fb817d4fab56f355cd85dd4028ac6f50080885a88aacb70189ac68f337e0d092996813b2cb88acc80a83b86ccea75d6c7f11ff1f7ca9ff0f1cb40bdbdf3637b7f53384e36f7c47411ba0f72fb0e67180347f039c791728450e94d72900fb617d0558647d8f0364f106c8e20b6451490dcdcfd86fb1fec605b238ebd824a13503ca1a288b5896660ad582f0f0b042b55b4a4f32a0f1343da9a8881a932f2a2f9ae10b1a926ce1a98e8eb6d8a22aa201972d9e6ce1a4cb988eb544932e36e858827ac12989da93325365a4b601cc23a3a2d691d19419b82431439624344daa1327272d9a9ad792988205ab96040f5e92929882d483ca7ba95e627ae17332c26922318584d495d2a372a5449a502e2fe6fc39634fb4406a4a1240a4016501365021490c3a3ce9228528e51f2146062a536648424485f5f2058b26391851c60da27c79c4eb63bc5a81b5d5677e0c5154ad12376841e2c2c30c2d28214e1748a5b054882e8c4acc7532d77fbc71f96923b0cc57cfab50d66ab6c63afeb405b65f55b9477d7f15d3389a3b72d76fdc91cb00eb8cc0b6862368e0c61df9cbe8009ad51df9cbf526fb77943549248b9856abcc70c54b9925a4f041f497464c9340145354708a420d21ce1063e8fa3b2c22b93dcf05eb797736c56f77308fb055ee89aab85a71af022b11af9f80bb33a777fd5a43a63db1f8ca14553d57954455accfdc034ae5b99960a4ef09b8afb93b737a7be045e4e51c0ac71de3e942c7bcd393e5f49d39bdaf110f5af6331be90838e0b22f71ea38470afd8e4ae19e7292633405942bb2390d4150ad24cbb6a75dc82c1b55332298b9fedde6f9e703a380f7dd8bc04f41be355dd813784af51c75bf5b8143abb7e050f714ac89b227c8a96b44643e00f7a3fdc0e78c40026ef58fa50a7b5ad66daebc6e9baf402925e85bab0bd5a64ec0d0b1d3a4cc0a4ad97e824540a0b7412059abd56a620d25cb542650dd0e4224e5049e6b42ec0a89f527c8b71baabf44ca093cd7881f60fb09b27f1f088d2844a0e672cc4d591e96a06fe71f47299ddc94427fa301cb0a9adc16081308baf32340af7709ba4807b2af0c47393d0e042411a0ef58563074fd85aebfff16327d97000d8538e94966d0ec3905049a025a82a63368f67429a21fac94e02889ae4b29a59452aa542a95246a9a3cda2af71ec63da7f9d0e8358974594a29a59452a552a9bce683910f3951c7e4e64a9c491bf9901379ad49cb8f8288912395bbbbbb36e5294e4a2396e80f09a5448a91616414148b81ea6fa719d53987230fb7d94b9b76abc0d87ef9734776c786f05cf96ca518a824c6445d4e42eacba55d4e42eac99dec3138bf4e894d428ac91de7e83fa9d0a438df8ab973f619456b74eefefd50bd0cc7d915bfbdffb8fdc66dcff10fe09ab00981621fe8855008627db5612b1c5aa223b69ea84664cd6e37d65c7e568f22b3bbfdc8db2a041c66e4af61ee1642f9de13a1832a9028237acfe01874d984211ce6cedc6d64a622a0ae11793b0c01878182040586a248fcc2da7b3fb6ee168efcaedb49efc3004351247a61d0f72f97cd5b8693216030441254ad267acffab1367b780187243758118796e888de13d588dfd09216594fd400d1fb1648d4009115e43deb5961101097cd6f855e18c40a9bd88c1598801246171eb2902276a7d00c59acd86003124f53c8f8809ebf3f0e5533b0b46366e68db7b1e68e1cc56adcf92b8e1a87ccdcb96efdddb66d12ac2038d66da34060b9fc74dbe8b66ddb4629d7711bb76d94d6b6307cc71f87aab9b369f1c31762dc39b9a5704ed8f9fe56c8b4f8aec1932733f7e8713b5a714c2af6e74b0eeeb851ba3d7dfe4076115d19319d0b4c55be5cae92e5cad0a71bac27c8322ec32a55682e335541bafd44c7dde174dc1d77f779aecb4c438891bc940295148ce5d09082cc897150031133ecb8ccf40225ad65092c55922652eff0124b84b9fe33ca54daa4aed3eebd1761e6fbbbf7fa81bcefffc2a020a1234d418400e1a6287e026afd67bff5340472d9bceb854418f540efbf17a19f1522617dff17c2281218b5cfe3326fb1be67fdf7360c7ab9ccbff5aeb01506c5585f1854bf1feb17c2e87fefdebffae9f722b4fe0b914801b279d72371fdf75f88c466e4c100ebbf0761d482301aba40d8b7401a29956c10bdc2208964a4844474534323e58fd2c8c6eb71bc9078e359a4f9512ac92997f9bbdeb6ded57a76bf098364d4db30480a907d9b3048dad01536d926fb6423a346397525f833ef81fddd8b207fa6f6340cca4b1432661cd1bc14a099efbeebde7ba0eebd26bafe5d23754f130675173692d1d8449d11d2cd3bd1cc4c4d14cd4d1874f3decfccdc843d35e34435e11229d2f4148e1be07c816c9fa3acfdb1a76c9e459b99af792191e647277a7d7f9014a0ee6d3e480a908def3ec89fc801e2cd7be12b0c7abd14209bf7c2a057d836a1db089748f1a69b5ccfa2ebc7567285b0ed85c4a6d6b3d81a9a48e2547259eb6d5e0a904b0a8c02deb71ec8fb1690f73661901b79a1bb42241a70ce8016ac81b26ee48548a400b5de4342d20a61402c1158ffc17ebcaf008b5e288237b9cc3f88488aad47c1fbef595ff3c5b2f8f4d474a76800e3052f686a854850f0c25a17c2b61084493461b09f0b645b7fa1b4428f7299bff7dd8ffec480a125718af68b2cb81c499184d4bd14bb6797194d22560803ea9ef5ddb342d8f653a9c60acb224c04297a2f45ef7dcaa3aefb17309ad44416bf2dfc99492ef3a9ebbf395dffcdc97f7bf2dfa0fcb7287fefc7ed615b3897b6263076054e2497f9abc0a9e4cf81ecb2198e73e9fab37cb02cae44163f292954143183a25a4d6491c571226d2ea1d9afa2979dcf5d43afbe2e739b74f7b9f39a33e49eeee916239999c351a5da28f831952a1cb9af21c771db57a6cddfde32cd7ffb17d3fab78d5f2e9bed45bc66c77c7b5a7b67326f739b9336a594f6ce0ce78f93d2f707f04effac20dff9d28419d69e8e31cf2a85adb1e206bb6dd9e189245b9548e1081458951060ec96a4025b91a2b0f5c8c8aa6ab802862fec76996908157431c410086c558388e5ca68c1d2685185155bb4186157979984c04282239e6cbdcc24c410422c77994988242190844842b578948586aaab7d5cd4acb810794f2c1515535d16af6e595a5969715ca45453ba6daa06e1021bb40a252e8817be2945d346e35434d1591a35edd56a9fe68c8b6b73b92078a648f299d32a65a2f274b7ed9f7b6ca117841deb955c94da3ae53c15a43b3e8d943bb92d047ea020bd23afd79c1807f2057656b1020babc2839de9a1c95a1784b1adcb4c3530913058ef32530d352983ad09c30396759989063057fe09d6759989062758a47234274ecbe43b2881f8726ddc79990988a73bbefc8caedb27a55c55ad5623f091d2fb58add60c4d8dcba5e4c765f27f5c2693c96432d96cc683875396bfcdf723d6ddd878ddb8a124067be9e1b872501d5f0d18ebafe3fb61ed0e4fc7f781ea67488992ea32f9df8faa23070e6c870e10fc7e701d003cfe7c1e009f8ffc067d64380ac91a7e3fc2efc706c371e38503030000be1fd4c68d8deb652327e7fb316b6866acab260001f87e788bf579b62500017c3fba5ba9aad75196ff00be1f1e0ee003a1de1364993ba2d095eb7ae8e4a4edc598167359e7bdca7f644e01f873565feba4cf6ddbab5ec58387633e38901b8f8e491ece911ec8b803d9b45400016c4c59ab305637df66a53cb3958b6931bacdf7a0ca0edae9e398bf7de7a95847fedcb6ca6d9b7cd5077282dc57ca7121b75a79abef6b7d1e9df6db36eb6d335679662b1aa62cafb3be17d67fd9b0e69bb3c69b5bfd970d6d98b2b81a6f8215f4401beb1d17c75e1cc89b6ffb1beb752ce63417cb64ce9538dc8b29cbc3b9841345f77af7b6f968d8a087345e4043f42bd7dda19c7e48284108cde7e3b3e6f3993287c6b99d4384c8545cb1e2f6cf7ac3ed7f4581e5f6bf0b6e7fcc49ccede7c9e1b696346e4b01c5ed777d3e9d440b4372c74e287a98f97c7c8773eebabfdcad240175058ba314bcd820ba089c5e4812c40a4f6090105d2671ddcbf57f80922c573eebf3711e5db7a98823070eb8238fdb4edce03692d85974b8fdaf2c61dc7e2206b79f1073fb5b3c484c3e6effb7dac1091d706ebfb7c486dbff80254372f5f9ccd94498eb3e4ed1686286db51f8f496021363d4cfa7d128da988001f7f97875f5ce039932ba42cc172374c8c25c926081c23246151a86904c4339ec74d375831d5ff7b54678fd69f7505291742eb2eb3f5d46b7ff01fd82d87684b65ee8ea219b74b83ef54c58c4dc6ecf452518c584e5cb65262c59eeb81d71e573709909cbd1ed5af2156599695ec432f9dbf3e5cb1d324f75591c284fe280690d956425b73f85cea563208081130d0d8ebcc8c238bea30f5df91d17f2746203b71a48d5a0535ae8947c6f28a7b91696c9b7222a8b2bdf8b2b2594d3588c92ba534eac8305043298120608183ca1a48510a230c389291aca209a41f56a47a7b628bd23e7a4534d935043f237265bd166b43991bf1df54eebcadf9ef40e332da174e56f485b52d33c51fef476a7274f485051a27e70a9293e05448d0a18a31463d43b63e370e58ffde422f5ced860c03897de91477cb972f43062c8b81a434c9a3841e28ef3c9954b779c51ae7dfbd4881e4d3592ec24a5a546726a1c66b39ed9d25c9a4d51627a67ec9ad4949494949494d358945335a22ba5541b81c161a078405d13bdf0c765d28392c90f032582f7ab10f6b3faeec70b611e25ba5407c676a03f2939cd9f965ef65f4e5f53ba52c9692c2eb16409e54e2e9374eacaa7535b6d23da8a802062446a0af7e80f412ff912ec48d00fdc23044338cc75aad56a432087b9b528444c886e40e9b284872766f082c4635cc1810542a8c1848c19908a9a14499834bad2893b3994476d4baafe1b749cf3a26d210761fba02fee21bba997c0cc78fa7bfa67dca36f7f6c55838d718f79fb9548e2ca18ebf4186ba746a3e39cba64f963fc15d6fff6f54c134a81072e56d042c919295811f9634ca3412ac30254182f381521f27721cfba25d6047f1e2f5f6101d195577ec7dd15cb578ca6aeacc9146a97c63f4110ac100c84d59d3f7215777e91d99de109adcba37f7337856d05f0cbef843fc1de9a155d5dfad23febd7ed57efc8b09bd8d70fc8b4fef2dc43be857a72159e9168320bb0071865b79b8c06c3b457e1767f17b7bfc7b84d933748a20dc9252586b8b3befd3e906eb76e33296174fb7ffa7d727fe99db161f60823eed8afd7f7c7fa677d9d49efc8d6821b8cdb63937167b8c7fc1f7c5face34e83017141405e489440dbd7af61d08fcba6fc6e822c25b99d655947725f430e2b0c88fbedb9cd3d1c8df8f522effa0457297f35f34388a78ef115baf2fe1ded8c65fc3c6332b4b8321ced76c7d9e507c2339e2d8040e2862da4d2d8a126f20361da05c27c6122ea61090b559ca9ebb86b7947ebabee7bba1989271b6e3f735f648ed6ef681be7c1988b757c783eb0715f36dc81dbb8fe3f6868555023370109a177bc8e0d316503107f20fedccde06a05563e2dc37ec5f285921665ba8882053a3a604952c3540d3620233e07bde30fc46b2e335d89bad30b7bc5e9faf3982dd9bfe36cc6d3e30fc49de81112cafbbc6fd63b2aefbd538150ed2fe47bd68be07d2b44a2e3bd67e9782f84f5b3f87933c7e3e800bdd7cdbbfebb812495b21c996a3a3285b3234727bd1d2cf6f7f2409c97b0ff5e098ef71eacbf639373ce4e7a5c19db9c0458c77f824542c88273646a6a7a4b587fbe5c0d2e3381a972e51f51ed2061874a4809530c75646aeac89c9a1cc7fdfc59044707f8206d62b9bff14337ff7a69e41d8ef5cea91e1589de91a73c30a865feaaf048c7fa8e3c05a3408ed7f141707ec7cbefe7ffc80e1d424a98823d8efae5f80ab088e3bd47027b9c10098ef78660ff3d0660210670d8dc005bff02596fc37e0dd8bd0bb40159740d0dcdbcfd21d6cc63599acf0849e9c814546d1a261de7542b45e799c5bc8e40c3d01282d059823b4b21e17de3066cde88dd1a1cd7bb4dd1e7376ec35fee233ccd6d4609b23dcd6d2205d99e5aef02596f039c799bee718034b0c7f9c01bef7ddff7373e9c9b7771376ef8c3dcb7e76f4edfa6bbbbbbbbbb6fd3dddd1d67fb1187aaeaf65bd813fedcd860feb973be82adc20ffaae829050c2102247826a434445ab8af33d5d71c020fe35e4f1c4fd38ebf97efaf730d8df80855f18c465417a382efcc13d1debbf7183bf0d0738bb6123bc09d9654336aeb0066411f6f37d9eaca915b98c88066471066431c85352edd6958e73baef99d52fa77de16cb41dac1dd6523a04fa7e471894e3bf10d6413a9e15c25e486455297fb96b478e2772c4691f118ef797484ec3792f82c9a426722434d231bf42446a69c7fb7337e0e6a5ec781b3b58ac1dcffa67ed188271bf637600eec1bd3f02248d650f961d8c96e9faf6a477fca8779a96e3344454d4c4c80912dd7aaa7746f92425c9b81ad75f3ef908ace31b57a4efc84d93e32772246888a8a889919323a44eb55aa99e88b8ac0225bf48d51fe5139119912a55b76dab3feb1d223c9a6684a566f3f32902e3c29fdff1f337f0676808f6377e08c7bfbe7b30fc1d20f83ac09bcf01da60292247b807278f5efe5bf840ac0f6f9ef55b08f43d1806d9f8ef7bfa41d6ef00bfd701b28803b20893f283fdd808a70de83d0e58f33090e6edbfc0d6a479fb4333dffaf9d980d38fb8249246128988940d2155bb64e838a75bd1606551d407de57bebc307ea2011a5b9c38c38ca416447672d2c394192afc208321aa57c5eb633396afd7c766474fb8565fc488bd7215cebc83517fa9b47afaab995f854135df752f2482d665fede34b558f7b869ce739f66a609c80f094ef3de9f48cd478ea25e58e9a4e7ac8dde69331f4dbb79ff1b508aeb69de4607ba7e05d2741dcd77efea68de0628c5cec6452382c03afe128480ec0008ebf8aa022162e448ad72f4e67b5a26dd80405cd6442a492a4df34799d421908ef9cf9c16021720b396c0de7e9e59d72010308496f9af402edc1db9893f1f5a643e7dcec51f6c0b7fba6ef53d4d9bd81f9b70e87b6f723373ce1a3ad4faef8758ef3551f7ae07eade55d33d0d81564f1306cda8bef79ebf0a4cff01490089d4baafa5220232975a425bb7965016abff75bc72e4c0d9f1cdb85848adffcff13b58e0ff07e660b1723ceb9f95e377cc804870bef51644220508e75b8f44c7c360dc8b60f3b017e1e65b3dcd6a711cc76d34c7d3d6ab562b956ac76a876a454128ffacd6bbffe780711fc4e6611fe4e65bdfe50061fe395e487c10e6e1bbfff73b5e48ecb8675c555f3251a960473b38b953555d2231ebff8158ff3bc2201d21ccdfe661dfe7088370429887302ea480cdc31ee8e65b7ff3ad7f812cc240166d0b065a1758f32fd80b94a28d506d1a286f18acd5b5372e00e7c718cd66c63db887c1e41f715a8e77d6bbfdd7bb8df7ff231d73590b833a3695c58bf8c8a68ef9ffd0d6f5ef24cec33e470bc47916087bf9f9b45ab06f3d4e0bf6394029e278dbd3391df387813752e6df0aafebb84e9fbf39ab8cd23b2347d5dab41c279a243a8908f11fe23f4ef3e13e58c7e98f3eaecfcd8675fc39747db1f429ec297b1dcc0b3fe8eb1da90d1549f9c439a9bd55d73d7f3f39bea75739c023a0bcd231ff958a3bd62014d64f501275cc5bad87b58eb8cc8f74b1aa90e77cd57c55f883efa67a55c8b01afee0e0c07e044297fe0c0ddd781c3ff47afb1d0ed87a18c87a0e3cc23afe31a79d60a45d4fe1fa5727d6af8ecff14174843942d8fc1ccf621076590d6133c78bd0fa1c21122940b0673d129c905dd67a11588ff338211258c82eeb9ee640d6ed6c401671802cce586aaf0d28451b38c099bf01d6fc0ba4f91bf07b1ba0ebe5f7b381f25210f6d36ab1befbdef537354f33f3166471b240599345f20894492ef319905df681475ce641803ae63442aba6a90d6d2fcb8852e42fb1e2cd4cbcf92556b4e9b6d78675f337df163f9f04a7d1fc6cfdbcf1af9f6fe383ccfc10224976e4a59c0ea1773820a184a6adde7f095cf2a294caf46b62477e196eb2f2e5f8f597bfa76b756919e4bbc57a566a9221df592a51a132991bc0f14bc9dddddddddd9536b11400c23dfcf6b317595871c3222c8ba4917402d66e7169f341b6c7524ad900a217b7a70dd89e1988d3a4d3b697b2be94524a29a5b44b3419450d48fe08f2850ce91d662262e4ca954bb596543691463529a594524a29e58b499c0c55a452c7a850b955a828d12492cb8eb8a78fa4c84fadefeefb99ce67593f0cadf5c298aa6518537d10877a7dac83388d45a8a8a955f7ea470ae2a1cbf60ae45680ac425b6f2ae0989d9999793ad674db78b68d99993233336534369c97cb069637f698875261a79ee6f3f73bb5c2039b962346860819410aeb85954e61f9c7795fd085d5651e7210ab4f3933d9a4b758bac50347eec4cccc4d23cfe559bf7cff59c253ebd56aa5a814952262bd4a9d523b44882c1aad1f9dd12ed6654e725c2f4165e15a72132b91904adc63897b4c2ba416c984fca5505691a0547ab2d79d764898bc537987dbd9be841ff2c2e56fb0fecbf552524e2a354d5a59bad2b421b9e4e5facb2c4e5d74212f337591e5b6bc6072fd65149d1cf7351cff9620845f1d732f82c56a51d60c0d6d8b3553f3ada234e10c6841d9a455c3b2f555432ee4999e5838b12e95324a2891fec993b5b7d949f2cee6f14e6d2245aebeaab5af574c124927451d6b976da16cb25169f4b2afa9580558ece919ba6c7b328985aac5520e4b2e9c97cb85f3ff8ff372b95e382e9c950c2c18779cfd92e74046191b95d9d33229bf0748ef486bad65199007f092bfa452f600f1663c787c2039192cee68e7145c151cc771dcd3ede595b73f2e2cf2973ec77d37e995bcd3cff97092cc1adf54744bfefcf2f6e7f2e78dcb4c648ce83f82890c994ae379fa38464a9f6787865dab75b1acc7c75f12ae7c1e1f94a769b647861e0d96a7c787d3d8bfc4e3caff2e3391a186cb090a27df0fd6f501d6db31cf8b02f120d0c817561a39a202c3ca10c09ffe70e502cb1ffd9ea6e357e6c25c26d09c9429a5939fc3309716309561f473ce1ce740ae7cb0cd44266982c158b880055ee0c0a4852b6770d1e18b1870714415448c1117f034640315475881811a59c210e20a27616a3c86052c2cf061680b2217048008a72c601411832d57447eeee998bf5e808c284e785101921738b4e00211309811831c9c54d18d39da52c4654c67a3d0b2e4c21821bc802194c48b2449638061450562c450864a99275c90516de1a5a2186810a68c1b2c69c16074b1c5490928966a184306197e952c5536115d05581c52d2fdea957cef7da0073287ab304ceeec3293165dc244b9cc14c6c9ed57c065262d72b8ec34de0288168811228d1faea420f657f6c15b44a0d5cd3955aa1006842b38d62357d680b14c5abce076cd9fec690e14ba1234e2179cb5bb09efc13df83696315840048f272c4c892e9d4c19434461354690bc81162811051f463a6811e73b1824978828f012e20ca5c0e40b5dd92a686124a2d0810d6e706271824152c916351185d910185288fd830dd078614a7470aac08bd871de04835809252711055741f45a019b54711830e842243ad83d2136282f0a2d24bb915a9799b278024503a731db8e739830028a319b0cacffeccefffa0ca4dad7ecae66e0190da865fdfde5c75aa524ae6072812471c5d0954e740ec2c409c23afca13fbf0252a4a10a2d76592b6199b0b4f9129c5f5858c33a9cb94c32c1e1603b3c419631eaf627595cc90288ede96f42a2f742564874bd9078f342e24b88863020fadc736110f7f48544d50b7d3342a2cd0b8936f86f80ec022bff055a1be06b097b03be0d1863817581b39a263bce7a5c267f0604f282b5e04f9026ecc84e2408716247862272844935afd851d66e11288d8a6c15598565f265959aac529355ae9c223b902fab8c3d6795a6bd94bcd23b2c9d7a87bf40dd5cf9324ae9ca97622419ef1a95269254947a088a3b361339457ac057bebce18a5c92556ea872e5cb1b240f7d345b6544379f545fbc2dba312a1bbaa8c13449646dd272429fffa5073c7efde72595986726e1d6ef1f5f96b9b71d6b4fe5e194b28246e8dd9abea5f42b0d47ff91fb195a0ea4cfbd095ce8aade070404eeeb5723f46e210e0c8422f3d2df9e8656e83e6d41cb0c5f80b102658523c610fd06187c9022b2b2c690e8f289ebb48c92ea89325e5665b6506529838457e6099609485081bac187186809f3811cbca8224994102de4e0ddf10585c5ed9fdd339799a09eb8aacb4c5057bca8d2ab8a7fc756c3d765e6705e1d5b7ded1d59b9c985931af13bdf04ebe5b4181de78cf67253374bfe9e7167d8254d52ca313ace11674ef3df9ebff2cb6536f6cf33eb584f123088146912cb45b5fc2f7e6e408fd3b8779eb9718e1fd1c915e58d39666ea3eedc0eff74ea6d462efdf972ce39b9632077acdee94f3f1f7fda711e7f1c8e42461a58c9ec93f35ab9eab2954f7777eb45c7422ef793fed64d191c5d435ef425dd9adec9fe23dd7c03e59def3d6e3f82ddc67161ed9887c0bb1d8e46eeeceffac7d1aa3c4aa98a6e9f0fdff666bf37c1d16fb7fa47ff76d02ffb4ab532c27d6a75e7b66da0ea4a97ee5353eebec4bdcf709f729fa2f47dbe4f77779fa2f44977779cab3bbdeec68c4a75254f7ff03addeae63f7b8739e697bef449bf0f2657b7b6415551afa95673359f67abae738f6eb28c69dc73a1abe54ae35ba93a8fc5ac335f762da8dc06ce7874cca1ec0c1242d84a840ef6bbcc74451489855ddde0f536e3b8b72ea62b6ab81cf7bf05b1f50055b1d8d665a62b88aee462ed65a62f53335efa2215cbf992e58e39738bfa9a29c8eecb520e485f7c987932f5a5098c87a62f44de0e515ed068e950f3c2450d14a8d9cc99c8d15ead160a1194222846af6f2f3ee040ca82c4c5b697a3d6ef70b40352cbf88ed57a31caf92e53ac2620ec8b4b917d2a1cb0333870b114c30c965668c27a6978b19d5406ac8dcb4c47584183ad97998ed0c2645997998e4802ca1156ba48b92e3331bdd00507343a7f5efd1da58a02df071dad1fccd996ab9ec75bf80efa744feec7764f90653a95c79f8fb55ce8aa0163b9ef18176eef20837c37aa9a2bbf27c8322d9f1a30b6bffef0bc0f8495732bd54667c73a1b0c9d9c1bed9dd9b1e9ae52a9a64a3543eb55ba79f247d565f9e3cc65f9e30d5e711d4b390addea7977869dea572b507eb7eaa4b7aadf07b382f4e7bcf2db388ebee76db45379b39b8c1de76da9fafca54abafb94737abc7155b5eaec8a48fe1dfb477ff92fa62cb88cad9a0db675999cdf811b38a704fd76ecdd3d2573ac2d20ebf0bbadd539bf2199996597991f6419ff534ae7f449fb4a29fddd7d6466662a8bb10e4b962ec81bacc3fe621d96ccacc3ef496e2226b78bda8805b7bf9df82c8941cb931497197410c73e1a536b5a61cc1a5188a8421c1bc9893b7652775367995161c56d325db41892e28a169a6010eb194c60b8a1d68231865a36d15ecf66d2b4fb8910719bd5ddddfd0489850fc0e8d0c30b566250c205d18433b6d8c2c90ad1125d88a354bacd84ad5fd4126aca6dae9f47394a3077945331a5f63cce72479cebe55c0f87eb6d600625b529b6a052040e23dce0e84b0b5ea8484dd174fb8988ebf1207a6f9fb4b89e153f5ccf8a35aef757563b6377ded5e7c53c9881a25faf2718ee0abcab577d3eabd50f2fa896f18d8a49cdac98e2a9b58c6f17a296f1ad02cb55a99efb7c54956936c0c8a2267ad4939a589f7e3ed55211e67253f8703450773251e1c3a59416abd56a293855dee9a55acdeb2b2d937d650c1ed7bf552d90df8169a7eb49ef8c2e2aa94527c54cd9b24db142fad72e506abf1573050daebdcc748514fe34f62fbbc4767b38723fd61fe98fdb8f93e3b858ad55ca4b297db94c6e9b759974074d50bdeaf207346bb50f484e205e1255565803c82b795a529757386a41061dd2a8c10a9c102242828a1f9090c109a3282c4b9ecc704f5320e12718620b164862c4e0246581a2244c2f34bd400b259658f2c40b56326c0a18e0d427a3ef1b9fcf94de752e425cafe2fa142e5c7f1c768519669036b668e1ff924da9015192265fc4a006a15a95305b8874a8c2a5055289212a62b061daf2c275ff1b0ab55a91e0f6f5bd33733590a4a80558a8c006a32044ff99d3e60a4b0254d831c6aadef47ad96dc3c1f278f9f4e7d85043504d73710f1623d564e86ff2b9dfdea3f4ce46e4b28df5af27d64993bbbd0b8c8132e4c1027938e6cf5c8e889ce68365fe578a4669d4fa80f065813c218f8ef96f3455d8716e5b0b6cf779de4ba27a47f5db7b7bc843d2e9cd1f38cafbd17c87f15aad676ebd046966f7630727af66669e99d6a072791ce99d2d56eb9d91c5dca1de1959ea6e4e03d2b22f223dee82e2fa1638d68d15fae8d85659e6ab707c5d1ea7b9c2ed796c5c120e14391d77b4ae7bb9ac9321f4ce03e9fe0728c8084deb5e616262685c5523ca65319799d258ba63bdb5fe9c5e7df73870e471ebcffa1d75d994e9c6ddeebbe7d58c8b298d28f47dec74dd03192bf7f2aed6faa3ade1383b2becf8baddf7f783fb255f7e4054615dbdea8174ddfff4cefc8e0be7abeb9e73ba6d0c1b18a17183db49cf65cd94596e7fe56b5b819d1d938d645f5c6c962b2fd77df9681a101e3caf965dfe6e4ae99e849a39c5a0bef5d472727af967f59c5a512da827a7ead5a62cb29bde14d3b41554cbfa2b193bd558410dd5985cee6893cbdf1571f0cab12de698fc96942472d55a533ffece6f49dda681b2d3b980f2c943e9d4313997eeb875452ba8db6f03a4ebffdbd1d650d8513ac960ddc79db02347dd7e2143ae5cf9fd446495ede8ca16c524890b37e564a986218ae2a42263b4aac23dfae8034176b7a68ef5cbaeb989a76942b82b9564077de552c7b62379452a490fa415eea03f16bbe376b41d1d6d4755aac82358a7435985758e6c4b90ef64d9c48172dde939fdf8eb6fb474198b51d21db723a3a1fbf3ae3e4f52a779b2e39cde2c29abe8caec93125912b9489ddce9933a6972bfdcee9d6d3a95be54633eebf5d097fc4a0c6c0d53c7b771bd75dd2f7f651ac7ce317f9e73ca4f6a9b81739afd79b8327933dc8343d8cf7c46e2cedc9e5e030d26536a4c8999fa32d5c45495fe96dd1d602ad3e4fe8bc9e5c7e91d8924459ea27243905f3a77e6363abde57b129c53765337b13c9da831f5c4854a9217391331514d579ef451d7d4f8f2a4444536b9455243380b909cad8995e1a433e8d80096fbb9b424cae52525474b43642e96184c5dc67224e68e16cbd1526b6e1dfd7ce6096377e5971182d095a1d7319fee9b0c69381b0b0e514f586c68baaa9fdfb5fae74beb4b4ebee43419a665bd447da92e4931be747bfe1603fb01bd12aa6346582fac128a1f87933f3f1f09e512ca42cd70fa8c17dce3042925553fa1649828ee1101d54f4e35c112c85bc3b163d297e83618acaa9b55858495b57af3083bbea4409f39ffabd7b1cf67f6a594832bb7901a89b9aa257bc304813aa662b20ff381cd90c7e579c9ef13e4f570f638dce723a7531496c8e8aa4aa57aee9f7b9e755a2c33a5e1e4aafe2fe71c37479cfaac8413e2afabda3ea99212aca9be3e112347829ac6e3b2fa4b43f565935b49e8587d0e2ce1fb60848ed5679ff1ead3fa3ccea9787efc557dc779d2eb58d7972f64e8d61f42048af7f525c8b363dccf7a87fb5aff737a677efd58efd0afcf811756cea9a109f2a8061dd720a22ef3e7b30561c757f7ab7b49ae6e35e38b98dbe376dfcdae13fade41669dafa270bf710428f4f45e0532eb78e1f8bd7f8f7720df6d14ba7565820c4b202ff52a286ffdfabdfc26d0e37ee1b87aaf4c66a871677b72acefb5bf0faacfaf5b978465a63398dcf97505428feee7f741fdf93d2e3f9f95f75d38f6f7dfd87d57df4d18d2e3aec210f4b8ab5f854556afe3effeb5b28eeaabea85aaa45e74f2e5d4152434e4c73aed6087b45d662a33c51deb3395b9725d5f961863430bea6e4deb561daeea46934f2edb5cb0a36ce2a7269e82a651cb362337ea8ffd3f39ad93ea0642df23acb3bd51f7474e83f5ea81be551824a543a0d52a6865ab12538bbd1beb6e2fbfd026b693b847cdaf8cde7527add43b7eb76d732a77f32b77f32c77db3a8975b65f31b1234311cdcf87a709fb3cdddc6257df3d2f710f9903ebc0c01e481d5a06ee1ad8054c9349569070b89cea43f9847536245046e918932e24413a396d156ebe7161c72e4a7275a7eaa4966df48e9d24c5ea32fa813f50c7b6efa4bb6dbfbd4379610c80c998052ce1287d669dad939e94ddbf58df3a721a2b74a2ca6d4f9d748c33ea585fd98475fe4ecefbf99e3783bc6fb558609d5a6c941847f2262d1d8a7b76776a7af1d859ccc9e5467f72b95fb56047766a9a758cfb6ec289b81bec07f2cc2df6c765dcf35cee6515eef101d6b1c21e8cb203eeb99747f04e7dee6512bca37aee2516a6196919f7dcc84e5c2ef7cc6a44e15bfdcea70b85b00e378448c7b8a74d2c11f7d82ef7fef4a577fc8ae745bdd3977bb9c44d59c53abd9e1eaaa5d45dc586748c7b21acc3fd5cbd13758c537d7d57c76851f8ea1875267c37307eb887eab927a177565c38ee29c0b42e7219d3ba0696714ed432eef9d91a61fdaede9d54712327621deebb06ce596019f7dcb715d687bcd6318e7b55193bb65273df4a4eabd5dad7eb3f169bcd662b5dee81b8544b8d26b4d4705810f9d9a5a407233249ac4a29a5434b9716d10fd23bfcf44728438a5b80cb9452a7ffa26810cdc08918590ccd404c159126b1840c0c4c343161039248b1b8947253d816b7a41d9624a59432196160e18107175488c20991e20065cc0f53d0d8e18828447ac5a5b556abd55698d3dd7dd63ee7f45700d6f8b6147e45ebfcd90c19d56a559fd6d56ab50ac74f052e1ceb168e9686e3cb55eb590383054a615a10253d0588a2c050a64b1756cc58800c90a4a240630a9520be60415df5ba5e2e1598524a7bc0c24a162c2a58a902e546175544b1031155c800ca0b192368967e08bde34fffa777a4ec9eb27f985520187ed042ca8821272ae0a833a2d2085326065690e94206a956a7e5341836279633dda8bb3a2d002d884922832eb08419c20a1a78d8ac788117275ebe84c10317ddfd5f461951cab0e1c94a1519c0805486175ec840888534c0a0f124898b530f4f6470a0dd649bff9a4c7c6a7c5e2bb1a3d7afd7a44ee79c3ce79c733299a21dcc7042061a4b5fc459f3a20b942427640c21ce2aee9c9352765a09cd614ae81d76da995f7f66dddcb442a50cc495d27f511c97e68851a2061ca0dce08619443a9301173f3011830a2dc820522a2e15e352ee5221a60d7674b91a89f982b5f552d0bbf352b0b2d7eedee62d9790f36537849a6187b8ee10d71cc3b316c1c40f16c76526327c90626f2e3391c10215ec8dcb4c64d46a3055032886e857031f7620d50006f6aee05483a2965299a43161d0188db9c25e159ac66499b94aa6c608715334e6e8e60e418d89812535866875972c8da9e5bcd414777c4b832cb6ae81634b7fd760adccf2ab0163ff3b9613e67c3efedf8f17ebc8f7f0c53aecea180bb59455badae4edc2eb4946a9bc5879a5ec2cb649e7c6554ab74985a8dbf6ee94dbfa935764bf7f20f4f5b73c3aa769f247d8e5bfc11ee0c80e7a7bd54e7ac0233be85fc970ecae7bd93da0630da465d203067007fd4fef001ebf1efa609dfed5103e9a631b0aaecf4d16d171cef4bacb85de0a08291a1c7067735f10728c29260f76f4621ccc7aa7afbca377a71860dc394694ebb29e9dff22c09d1f9bf13095d1c20b9652294697ee2612c516325ee0c4a5e6c44349520db85411040b6388730aa11f602035a4c2152a967c21ce9f398dcb78b92208232d308079224e2e444966c85161c7587be02db93d2dc6517b2e5954716062c1cb4c61be88611406145b14114613af9793db3bb3608137bac090ea22a6891b460fb7dbb34b58e819bc4eb6ae2fc47801182ab05cc6d0146dabd56ab51844f7fff124715ef7b0ce18cb98944e385e70b92de58b146e7fa1e576d7a7ae48d7aeeaeb77449c26c4fd170649e142a0ef3d0c6afd17c2b8a0ef59ac1e97d5e7617d3f5f04f79ffe7d13b4f5abf5ff72f58f386d7ef722b45adfb55a8fa4fb19c2586c813197d5e7c0ef58fd59b5ac6ef84224acaef5487c656459218c7bef5b5fc3eebf07f2bef5dd7f5fbffbb837222f8c578f440a10ebe72391b20a1fc6a108338471ffdf23f9de1fc94fc7ea0771599d535818f7ee2f02ebfdf3ffc297c81e585dc6715c5fcea95b135d58ab888016cbaf32b26191b9fa9e5e85b62b0e55a6eaa8944c76c5492c9952330000000001f314002028140c874422a168348fa56d0f14000d82a4486e50170ac424c851186590410600000001004006648686c60180d228e54aa8f5094726bbfb5f2e2084c92014d2d200415acaa0dc91941fae968f776de22d81d42de0e13d57f81a491d753abffecf74cac17bce7bc20ee88c4269ea7618c96696061555f92f7b9b59c8642e59926804d88d181b1d8582c3358f88abbff6c504c41ddc6cefa02596386cf37ebb1d1107e260bc0318b5a6d229b84d9c44a20942e20323fed037cf59047c50ff5296e5cfc34efe9689ade85e2f22aecdd63e30960e3d263b8b33482417680493fa980666889db3bcff5042bdfdd89cc2f52b8db41f2074b07345489b086eb89eea2c8c46534a9fa50f05d4a1013c0e5ed0669e35e4e2102e5ad4f602c19eeeef5dcd5d60f21700011b5650157d51fe589dc2aafde066a572315f3199c43e831aee507f450058f0d460427be16ab092b707a6555e04bfd503c570e7d7e72729045cfa83d76940d640f2478480dcbdec702d260e1668d26a6449d1314b2dce804b8e2ec70ce11da2e393e67358d65a9a708e787be49da43a88b5ffff87a0f2ff8146543bfc6456b1e04c0c87146ddc6b8b443a309fb0b3c6d1192f458507da5ed34d756c05e35e4ea0c8092ae47a2b4377ca7736b0f55041d582af486f4b74a4fcd725060c808b3aa9381b8d864034b8878e56b4529da5330d127d348184296b564ff198f46c0c0a829d9e2b04d75760700345e09c9514dfc05ee94d4d120a475e99dddd44fadd28f52a61cf82bd07399c667c52919323acd34469e2d550d98c3345dcf4b36b83f27f67b0bcb72b3269f801dfc1903c5ba92d873edc2998e5463205fda5b924f1e6748306bb0d59f55c97bd5edc6b4a49c42da9aa5265b07b22346922cf1a9d02618d4b2394c621fa972bd410e54a9637f5d585cdae4a795e49a8804e08430c3a129cf49b3ee8b06f7c9dcef3f08a55854094cf394124e9fbf5719fedc6f98f4daea9543b7a8c7077ef2249bf526b9909064afd6c2dac9cd7e13337d8fa58fa38a46bca906fdce39430b3435e8696284af76f6e34b99b580406ba99b430eab63180ac29341ee5032e1abbfe0b24bb5b47215faacec1388b6b1dad63428968c5b69aafa6f1fe0c4a47dad6eec480bc4b88cb73f95e83a00db91f189dacfafc16e57d5323531e521d697007e8824d0d2d91f8eb80e62a9525c0ca1e5beaba5b2ddda342249607d42bbd0d31cf471d662265c1847cb03810ae10f2f0e5f6de6aacdc7cf8b59775ab36725d2579e69ccd2b496c540e57c864dab1aa99f8b1e41a8e0d3e291b690497bf86d840aa22c4982baacee944ca1f38415040bbc35cada68c66f7641853062a4e50536035aa5e76792c3db819f965b422e0a5936591f5f1bfcc5d944257944f4343a4f2a9ecb126ac5d46f9577eb1a72cd3463ee6d90679a35842fee5f5388ce2c693704b888a0b5e9cb7e635257e11d7e84e1d38561982e566fba0a24c075d8800d8fc22411ff624e43d871043314a738a6ae644f61b57197a640e3c83a10f587c2f41996e57b04c28bf9c1058dcdc10dc4952c4c40eaea85c84c5f6263ef3e6e573695d6237eabc7f32bc860eebeb3f704127e8b8ba7e3f4c7c32e75a7129d539e9d72ea9bc14a3f84533cd53cf1fbe8e9ee9e2781b10ac99509f33e56c2887bc52d050f2e4eefc7d61cf876b6fda81cc34ea13bb9600bdf8e1994414eb4271843a082d66196a014127b81aee6f33aebdb7a75d8fd8e19f481fafa722900ad00b2e39fd0f8b746d650ee25f9efa509326344d48db64ecf7ff360d861b5d9db01a0a7567f96d552c2c997e21e0d7ae0b9abc8978536aa96006f6c5c5152c92f570e4285bb4fe4a8efad7621f6f14826694003a53dbd489c710e4a4643631ca667656e1188e59bd0f7c44c0fbec357e8210536b59d8f7f2a81a16957e907bca6045d3a8f14e81028cc1a42e41014872ada94481acf662af84a33d8b1b3612e2b8e89b8dcbd01f0cd2387e3c892c3c1537cb3d1ba762e076218d7ab8bee00c8eb2f702e44854ddd29eb92d75870845c52107bac939109746a0f949464a8b9086ccf4a2d358ec505b382d0202388305c384994f683800170d9106a01ad9ef5f49730e85c78ff6120ac64b693d0efb4e957154649b3be5af449a23058be5d0607654d8ae4d697e60ccfd480c79a4d4b8ee8970a93e6e6536426ac4a8f910f20def9da70e8429244c393c971461ec163dfabc4553f74ec4cbcf28a693c08b36ce7e84ce7ca1b66c8364cbd4d105a41baffd909da11214077e2f180d3128a21cd4a9b92dbd6aeb425f1aa15792d24b9ec0d68233027aed8c10fe64de5255c30b4757e3cea4e2e367130487b5b003c6d4698485d3d819512250620708f17ce34e8dbbdc8e368ec21f1656f5988012185a89a4b2b1c39ac9de74a941ac00f63a6d8cccd67e8617c8130ccbf968e1f1958b421e18fbbaf18a44850987dd4ac35107922814165ba20a8b519242b28bfbf674e4047817562486682196da9402c2c3ea9b9a6ef3045832926be34fc72ad52425f07ffff03fff8efee97da0200cc58b4c4ee91f250aab12b6d56264161df954b894a292b0ebd1d470fa830263a9e8f4f84a9b8fb4f84e8bbff4f9488bff34f84a9b9fb4f89f46f0b169e63fed25afa699647a8f97b718ff82a5a2d3e22f7d3ed2e23f0dbed2e6272dfea7e12bcdfcd2e27f9ac6c7a69fefb4978c9a36c91e9356e2bfaaeb613068d6699f5caa5974c657b52ea76b745a5da715b7b7d6e894da4ea9477717f3e26a9daee638fd27b81dcd6f4ddbb8632736dedad83a52e3d4c9d539100b95fa14c1ac588dbb863947170b50b8c9912ba8743a4def5b18a1e02026ada289b2b474aa1306594e0ee386eaa9d70caad58ccd0c40c8c9afda792f2665726ebd417f3432076e54dba1c0b2b0c25e40334c87cf4b95b038852943c283be6b374c0f2ca00ec48e0a1c6cb8a736bf4a82885709835d0a0952b0285da41a206c62eed1508b4eca7d593e9c008e86cf41575fd96f07d7b4cd8a579eecefa44dd2fe3c8bf165d23373ae9451e449c1d995d0c6e1685712aaa32e1dc4212a0da989d6ad5c6e288a0a227e2f7cd1fab81eed490821a72e9281500221ee5809691b732643c63584630a03c0504b54157aba6fec69a12c1a945e8dccfc8f9ccf08bae28476f6c26758bb04ef6b4644eb802fa93777f4200414565f290418dd61424e25e3e380f0a3d4549157239b6c2b56461bc4e8aa42dcee42f6b07f63db1d195e6e8876dd9ddcb435d7df513587904081296772ec469becdcbd95df05187844c189343629e9bddc57e802c40ed8f45d7f1202240548c6f4e1e038f2fe4e586680c59b1334749ba6299e4143a782904cb1fc42236351e5d119d30abb04890bcaf4f4580d106eae890e88bb2cd17773b24b1ab11c3823b7c71d329016fad74295a304d799802026f627dd2e2a300077f8eed54f9c08ad551771733a8ce3ae55564b46a62920195cdd2d4a75a906d158c968507b54711cd49c4af22a5f99fda39748211fd0ecd007b2012d139132464a11f6a99099299a04c8fc2e37cc9447680b3406b983ae12e4d36b8f2b5ddb675a06967dc9462f4cc336706f45398c58222e8a0d0336cce1ca20004d443a8b92378e3cf4ef990e79e5c1ee7ac36cf08395b2b7a8da9537873ca807fd534b049d0d18b3813863dfa51578bc5e019ae9f98c46b8c9021dea57f5fd8fc1fe52178d1f0570844ded37e3c462e5c7179626cd6ac498f3614c98071b737a7ff38ff32db8a870047f1371d17d608180f18d5517028a8a19a11488bfd6985daca0d9dda763b84917195ea8458ca69ef8741950f476cb6dff45a9daed8091ed5efe4ec009a1f94b60e91e665f40944cec58d405e121e49b3ffe401f6fb838872bd23e9533f801ae97d549e263346ad5e266a410eb6a719fcb3ca1b80ff8749ebf76af74431d3175cd15ea9319b61b80f530c992559c21a4717c52bd8f31c3c5c57010e34f9a044e0164d021e53c058028097b2ae592a324ac9ce4ac3df8f569260c11293de71eed86c9c4282ff80a70dd6996031bf8cb24943e5411f06c32f48951c35f7c41f5668499a72ec461cba24f660480522400bf09228ab3a069e93c80975a2ccb8308f2d9e5e9175a13af264be02e9967129c90a1e5ccce112a0ea433d96025aad6830f765b7545427b21ac40e27a952ac48cdd13f22c58d2b51f369d74b2bcfd128f506287c2751776138c0c87f8d2015aa717376eb734078b8c0e69d424a9c4d2956227cd7bb2258dbfaba3998ca47338107d9ddd1d512d77efb60b60e4bcdcd8deda3044c229dbcc63c2f940a1d2c82a96c81d5e106ece736dc2623512b1f5b6122a85286f341204ef379e5bc910e9e51856778f5b19b0e7e2e40bfe3e8b6045d40dca613d771870fc047ad28fbeadb58da7eb6b0dd6d070110c6fbe3685aaf9cd94db2ed495d880784744634236421e77a9746607c6f37e9fc9e6452e431f6479d12c1d90175713a2fe766a9f8c1f342bdda812cc2c02de064fa7f143202bb9665b993acf40eddd895cd6a6d12d3e2b922ce924826b04dcc21fb14c6faecc9264d1b7857e45cb80c87c89f487e0194b15210b154eca47a64d529dab1a20a883bd2d4f6252966fb3531ba15b9f6215dee64a9a922c8db42c99572c66d271682d98d79c382f356037166e82432f5f79fa24ad8505a888e511306aedb473c3447772cb968a7123b9b7a49bc98cb04b57a688244a257deca21d2d78ad26a8279e1354148c0567cb36209d775887f651cf619b68d9b80ba12a57b2ab362f516829dfe21498301950a80de47e54f80e1114a83387094c4490951c47b2fad3cdd1d870a49a51cf3d420326314f23912c0c4eed6215bc6eefc1b0beacc8fea9567ba5521b07e9fd144d8e60ba5441cb9c6acf98bde2fb4ed1e8a39d5d796c4e21dd2a7d055a85af504c0ae218401d091f31752a2a955ccbfdd17a392084b2db46ff3f9c723d75da647954793e863ef128d0941f905ded244ace3686a84ec3dd5b4a665553554064e369bc021b84bcf4a63ae27d72e05f02c79d80f792571840854f5829290a212fb208bc609da7515243e07948cd2c69006729d0544dcc390e042e5bcef23469510f1a4c69bef9d4bf49b678887abfc06263a314a55f58ccf39a80c0c8981903d7b8f9ac7cd8e78f2bac3e2dab4c9c054292e90c989b327cc9b204985203fa3c549aaa4c3fafc0e6c5e40b887993dc1550862545cd63f5b09cc49cbf91a163a419e019e4afb58ae167ebade734b8e4234e55cad979a8274e519ebb49deaf2ab84597d83dc15ec94fc0f802a60e4216ffad7b33b6d4e5086f3b8800351717824308c834052393ccd892b5869e14a69420c66c884c89bb4addf08da1be7a80e0f822f23f4742f56f393e131254cb640abb6abc3dcaf4f4e2b0d514231b591925a8a193a85524824ca583759998bc0cf31c52057f0b2f1707f274b7076148e24e3632de9045672fe1b44e387187249e23798570a6935e4d467b3de98e6d7a0a181599cb0997a6025d2f66f4a27557efe4ef54161d983f9e6a044c3b616a28d9b911d1744ff472153aee36aa8878836047622680af447e17dfb2a9e0e1c32b827b6cc781e17bae228f1809a6018f4b436d723011c62ba4109abce1536c463c1d1a8d79f82e2f569bb12ec7a824b6f4a6784449630bc08dd61b19e3f00265704c7bfa38bce3cedad01f700cabd966dd0357e938576232bc4e3ff81ecfcc9100a1491765654272cd9704bcac2e3206ae523f3b558d3d9481cd14c9ea7d040400db97889811f35f8cfda16a71e29da4a7827c77436e941de0393ccdd1b3cd44f4d860f64bfd1817f0b8bb112e288dc7026b09010d3d781501029d9fae3222054ad67586798ba505eec1b1b9d6d7b0268c37171b7e6d3d5bd0846e431330c4dbe902265d08c7e3426fb823496bfdeddb7415082f3edc03cee5556e4ba0c7e951e5f6344bcb5b751a93cf810cea0a9d52155146eacaa6a9e9650a65426ad4edac62e344dbe5a12098e61084744d7b27eab08c121329e9053b7c1d2abd53aeb5b58930cd4b54deac8d8225126c9dc6e26908dc430a3cffcc252c111a6850acfce7b8ba365aec907319be5ca66951a1be0b882a16d0dd47aa0a4e7d2dfa4a0f3e80d74a1a27b0757a3e0d900832d87412fb60206390528e6c8c556faa1dcd14f10b55ad01db232981664fd30db50ae0ea5b60c518f48ff8ddb5b3424aca203581cfa0054edc5c9b1368bc6300aa5d287a524f8d88da202363e8d2ce72186b10f20408894597cba45dcdef7a87d70a50dfc2de9c1501e6bca5efa4600d710ad64db74dbcaee9c6ec7a451e96203f939454440be81a0afbc8c7a6bbb6855d5a37583a7bcc0281d7241acf6d8aec45e219526e0543462b05d27c110188f52874537722f67eb6ec67a88e21697c7b8edf3c6df941a3290d5ccb0fc0262fe9369ea7b3ceb567a40f52545a2002c14c0f01a8024d47432b774877039d167809813be3e06fa868c892366eb15276a304fde646a6b5f57bcd6885d8f60832c485321a36e32af3392d5740b9eb62774bbce2f64d9dbbe0d374dd69a2288fb8c6d0c14a86134f7235c1fc4b435a82390539fec83eee514014b0694a00f4881336cdedfa4cf6f1ccccb9ee9694a6050bbd9bdcde62da23a8e26466a3d83d3d34b11275c20ef9beebdef6c5f938e2cbd4af3c06c5be92e6bcfed2957432e5bb3af01306497ecdfa479afa473694de4d9c924ef0430c7e20cffa713df4b15fd0e5efde9b2f49f0c165d83f8a4ef018231b019ac42bb923a6ba4fe5c936f250c65d0bb8461368fe13a94fedf152e46bdd2640775bd12b1051d3e345e7c53eadd1915933d79775c26f9586b7b3177234d96a0e75cac2db6436914eed2a51a46d440f616d92bebb95fd56c9b85641e6a4f6b723ed324f657abfde0eedc26ee2c8c3da3c93c0048d1cedf8f0437e1e2a4ac59e0f03148f3efb6500e262f7028dd942a379300128b0262a5eafb43b0610a9c325b60c4ee523bd20ed233f24097ee2fb28feece9f69d206bef2a2f8e223324c64b50ad3889212f9e622fa504a365c3b0a05234020a65c592cb5333f229059392731ebabac15d77b4cdeb6874bbf02a50a719df1b67b3c886fd6c141414880d1ad226730009aa01016b45db07343ea17085c9d5ab99850f74248e72108e444c962804ad8ed27d19fb0206dc2f717d076d714970921ebc695bbc44189cf34cbface04a83b1d2123bb7fa9456447b0c248e32c4976bb152bf8a078588adf76906cfd7b4f3ae7e241c6b4d8b6ce41b542331ae93be10e9694432de9911b31b82884f4b58026918602616bf91c0905d2a8972d89868947c60a4b9610153cc91f4d08700732cda460373f6dac680293b1c8142c061809958bc468262f6d04d54308b5480866ee43e4e7e3130187c6114b11e01041ba0d043ed5a7f9c2bd37eed5f205b5cc745260d30133a36f77950041b28d95fb05fc3f0e42dfaa239709670f2d1fe4480dd3192095c8641c0477b98784cb03c3b660fbe6f2678159c2f4e89e5c83de02947c1dc839ecd69adf25c779b9a27a3d6a34fd3c8ea8a65cd38f8e2256c314928cc235cba077aae42485361bdcf2958aec9f00376d8102cd7419c691f636905b7431b044e726481cf071d2ea56c4aa98e74cde7b060cbe346466f2472cab075dbc3fe4cb24dc6e90db1adf3112895e2bf227ea8a79510be1e56c31649240ff9bf734c782841efc21b3002f51791871eb4f1b2b78a94131f9bb5271150748cdc54baff2b5ce86d0bc32eb3768253b6f6bc0b6101a8572e81608d4d00c064b18258d24c5285964ae0985d0cfee9ff8a81efb4c8df4698bf62bff67377c15b610a48a9db14b09c0a1d75008ba4a5df8119716b0dea8cf07f56476e7df8a4439ff5402056bc6fd4e99fa042354b649554e62b79d2dec81543b2c6cde011cd2feef1a53d89018b758f12f360d6a10ee862c9f1bf5efb00846bc534ec330adab2586644d2b962a78980742830c07038d2e6a1f6465154aee287c09cd5809c9fcdd421e7da8bc2b45d78fe76ac1b8876224a404017a8221121fdb079ea4f8a6dec7396281570fb57049f85e893e3c407a79fea154ba5fc908b522304f30552ceb9b3e5b05a405be8a65f456b8807a9f1837a22a48e2e4f5a2140ae00188245edee77fd75d1f951a65894827ed791260ffce7ad11e4c6a181f4b0e9d3c33f7409c0725754f728814e763e31217dae3efa21887b35db6b349e45779ef00d35e57558c10ed5732dbe1c6b1e66ec8a90dc5f6d259b64f96cdfd54cbdacfe1eda9145947b26ba2f85d984659f36fd97c437ce5070cdc632f2909c5723c29d70d30445b5e8f22f0eac4baa474106ff530d93803f36b281f366acb6fed2aac50c2fb3bbe59a5ac426ce1906f7520b6d227d5081b13a67afa5ffa0de76c3874af8916ccb4030c34789aafec429b62950e19270da5514b495a2ea7b9656417da17c55bd7d956ac5f43464ac1579e6d05d0c546357f5d40c9644b9e1302641755b593040765ad964aa3f9b7a92a1ce14144b8fa8a68afc45b770121bac697323825e1f2e7d8dc1edda10ea46130e65b373089a4895777ed11cdb729702fd0d5a60bb3dcea1d59ae3b8ae318bd78b5d6ac32736fa060f10d1e332f77da70ae194b3bce314d25014d18dace523384ee3cee0ef1f1c15570a18b98a64ef4d324615b4416ffefc8ad36c02259c04634eaaf89208352b551041b800e8d33809450d3245331fa26c85ba389f6659e47be779151a822a34b89006e4070bb651328a5019eb08eed0dd301fa20067f36ef8e19d7d142094dc95e21b817291ee057067e887e789c342c8eae4a59ae512b225fdbf0516c16fbdcd2991fd6f208e4bbb04a13aeff76740c9a6f5e8048c23918ad256d8de0c28d1edb05ca00cda845dfaa06621077f2141bbea019abd496f85f3422814230ffe67ae043f38fe95c48a0e9043f96df8a779c97e0d5daac8c718824fea20209fe9773a5083d8d41c48c6aa1525d3eb6086be5234620980671ace741469e08a597d4c877bfb709e747eee592476a0442e684d1b0c305f80aae46ced47992e0871319abea27a547d5e57e6f72475ceaf0b380b33c6dd46c6b4546dddd90b4ada7e1aa74afa92c6db6409544a9743f47536ba8a362b517a206a3ee0ef2b705956f4d0d1c7ba851b948c96c8199bd155bdbddf633a72304b2cca17c5372a806930242bb2ab5d88aada3393486b688d32ae04666c5eb15a7f1c618c7dd318021c1ae1d22cf42551ba21cbf8a03632e54915721fdd61a553233fe10f18a78c0a193f76b1f7ec59eba57b1eb0e8e99308b149cd480a932bb73a7e52c6ac10c94a134b5b4b7573354ed7377a980b67c8869f556a65af9966c26f69698d47e13608c8d96f13be3b58d50bb3e58442c61828598e9ca4d0d4cfc643781177a4861a7b7b61e4ac9c6d48b870cd71ad7667f0bcdd3a1c1455286fcdab948f76ae60ad601ea9ad8e3839dfbb096ea6d441541bf8326b6f986341663589db54c406f22a2d1fb4f1f40b478507e9dc36a1a1b43221d1a3486b04ec36997f7ec1b1c20e3199a3f8e0a7d38a1932d95c6529d30472e754a672e02e9038a2b51880676b0b0d116da92a47e7a54357332c2ca5eaf9a4bf86b1f362f239fdee86ed4ea5b185898127131f756cc1d164cdadd205174bfd739d743e825459ee0407daf83b7a81ca68a15c4ab6760e94cc347bc185a9ef6857dad4e03ffa31ad28005ca3ff948cb5a885e109f3e772c304116a50a5ea263831fff0a95ebe49796095dad7d82e64044a690b1db4ff4a6219053fef1e80ed450f925c81cc99be07b9178616c40465d2a9c11d93ede98a9401865fc07b8353eff3701aa3e9599e4188469fb5739a178284f0b85090ca61c4989c563ae4691b42c658695f4f7d4d8e447dcbb6d7e4e71f6a4baece4978f410aab8cafe7f8109c0c2e196c09dc35769d493e780fee3a57cbc1a62650e64e30590ebcfbf9c5a661eb416a69705f562a8e17497cc1b9e013e8ea592e7dd84c4cad2a211dfe30732df9a5c0703848114a6df77a3d49b0b62ccccfd1ccaf3b2c4feadb2979bfb7e9c6ead010b5f76e0f68dc27b0bdf16aefe806e0a32d308242654827f1ca384ed4705214e4393cde1cf5da4081981a859147e9024fa70c2412c219e848b27f01c5160ac82ee55a360f594f8e0da50b026c31c93efd6fd82046b880adc052aff43b3e24b8ca833ccff2b802d40dbfca7d1638a10bf7f84f23fc2826b46ba65f9e33f234ed177487c1d9d4e2e5df80f4aa427ce2dfe05e1395b1ada61c7f36f62759ce3c5f3e6f692c82821a1210a846d03872638f8418a134e7187a9fecb55385937cb1bce0827593d803080880e23b0a11feeb8b4bafe4228ad3005334febbb91419dfda7ec73fcfb15d117e9c6985017ac0ff5f4192f7d6ec88ca921cbe7aa364233066b28a91dca15be9920b0ab01a3f9cfa900c5f410bb3e0cb811dfd05540dab1932702d96c555877e893a097380bd0234f85daac0ac26f77cace54006441242b6f7b67c06d81becddf1fb784212467fa893749daaae21c3172a60c6596a25e2d7103e57212a27b048b8b9d62f7b08ee08cf429857d898d86e2a3c9104076ad82ec7d603afd107e5a0d06cc7f307e2e1658adc52c73c52c0e7eae34db5009dd8738a96f2c53c49365a01646c6bf034c02a3951f22f6789ec969ece269ee567aa0724c62214479220cd3b57ae954a04222cd70be0a2538b1160af9a2b11e2d9c4636751576393de12c43bc56b9d9fa19722f68f1b08a2f719cc2526830838932246328b23fcbd0f1078b515187a7aae1b222165e7101bc72c80e2ba57bf1fd4c473bd96722c976b772852260367572f248f0f450068883f014d9a9e0b7f7e6cdab5212ca24daa089427dc65de73d2d3259393c3077b169c469f3380d5024771b7b4c17f459241a1f02a312fe70b7cce00e8ec734a851f84f1eec977771eff32c0e3142ebca37e61d68ea3ecd0468dd745da898c1b6c56b773c177c89e53493a35fcd0220c4db21c617e7e407ddea21696294941d767d076dbb8a0bae7517babfc3327a7be4bf22374025cc335d10e1e184d2042426af9ac5cbb9c3b6fd04179959bc942f2ef3d9172d31d65314c970f791be82111baf795f3fd4325e3ebb071d8fd192f9de453ab75d22c02c66a30246763edbb25bd233791a050249fdc375ba5da2d390631c128e4380d289d8864b434b338d684f510f544ed6aed7c558eba4597fb39bcf09eff34b273e3d9474c42fd5b11b9e78264d1bf7c616896bfa7672f06c8b71bc28df2d110f386320bf8bf1a994a0dc0dd70febaaae7f2ed300a0ac92a3eb69dcaf537636df591fdc7fdb8c11c2384563579ca88e5725c382e202c05f799263b578c9cf5f03086c527a5dac1a2ae88878ad03d78028578b7f00f0dd7948cca47889b68333e08c9da53dfc20c7c611ad2db3141e17ecd7194a040f8e539c1b06aae2f2ef8f15156ee05563e479488e379708b54a73c0cc4805cd8de5e4ba2a494318aab38583d3be11abb60368b15e1b2d35aebcfec436b25fc565465ad75f304e5fe13f194b97c822114eeccf9252f448f7d642650228333e58bc3b3e2cec2feea8270f74900b7a145c477c007c9b0c8ac05b35f1a7aa3f537a22f6a7fd43b5e748b75f0b22929f76ec17957ac3233e6910f8a033019c83c32ad4087d71c353182c7a1621599181a1a569e55792bb1c24973a6511025f0bb147f80364ab4070aa0f30b9a05645a187c3683e821a813f47585f24ddbb930b8ae49e4ca1e823a678c471cf78f08cd352880f242a5f56bda7e011dfdb0418a84f2391d1101a46dc3a84bcd4c0c821ccbbd8ec3aa47b720fbcba0e25e69f34f051705aedb0763e484644b209550638c88d98f7468cda00fb0e2a7090b5720e3d0ecbb12f90649a6d90896097b1c62eac43028e54873fe04846fcd8f213c9d177d51d4219fc479aae6de5ed183f5a0262eccb62ce0f023ce8a6977d7a61d3bbae03f54c10223e7267681208b355b0d56f164ca69a9d1f1e8d384543f85b55988f9d499e3f17d1436c21aad5197b6e59b8a4dc04058c6bfc4d419188fa2325936604947c7bff571f5219570561969439fc4d270cda2619144018b93e423a29bb0d491fcece6e4f5187857c90133bd3a4f61c18bb0f73923e41f350e3fd867e3391777490067fea02993f1b8d6bd170d3e67b6d8a9161de0c05389007061b6eccb640bafb04d04e1b09cab7c0414a1f2e9477b8cf2964598d56cf5c0d3f58c46c1f4a2ec3f2a1428767a0041ef28226c9e0b3a2be3db09cc9173538c45266b214ca54a80c215b6605647f7d959197261d55a284576ef643f7563ab788fc750fd1294f02bc7571e4100eb66032188f09a56293039452b96aa32fff94a27958926346d6f611ceab2df726444c1b7e8a62beec051efe9900d17de1c732d76afa39e3dc069a03a0b927049dff3c712de4b3591015b975a84065df6978af8686375a388761bdbb04d3ea1ef802f2e994070c07a9d90efc383bbee0d3ecc565a05d7bee30237b551a1a803d97f2bf3ef01738bcd82019514218a070de126088ef5b4777634efd258f3d8dedc2cfda8984b84d0573a66ea5e6fa6519ca78a1ea1dbe2c6a0fd1089871fc86adc6e3e8d923e61281af63be4f81f6739ced78b8e01bf4ef516169dad781761d0678a6f8edda0d1a3edf661b438d2f4ee0fe080130b189a3bacdda8fd8dab97ff66e7e4be00ee5be1d787ba80be49db69092aca41abfa17435dc9524adb09842c6362128c8132e75b78128d33508af65b3c765f00a05bd15216adc4d6a258c944612d667d3e56325db0995274aac4fe1ae26caf991e2d46c0c9432ac04c79eafb2c672987522d672cdbd86f5caf0a5b30345acc45b51b730d8422cd6400a3e83220182fe86934b1243f70b2d163fd1ef50c7e982018af83710bdbdcf14d773d5f0af7cb6b8a8e56998fbd8b76c8d1b44aba4b732d558b118617543af8573608dbd221bb52ff6bda0def4896ad91fb6e8bb024ad331670af88945ef5a18e7877abbd54dfcf276cbb2974a132b62dad5132e0da58c81ecc43f9481d9a46de2e22baed62d2605ade3b6a217d0cf0737c58c305ab4ea8da83222b11d84c12d0e300d398610695c036e261e3f1e05fa40e7645a1c36098f27c1e7daa753042cd62645df407990a45e8514554c5902fefcf2a60ea29895d71da761c07c5d00e8b87ff6c7dd8d3a5d13e836ce103aa86f3b0d4299d857e3d4a827604fff1a55434c0e13098165e5e745d59fe67225b9180eb4f123f2427eecc2a9a10bb09fd4e8160f684c039fd2fb5b4b031cb32b9e71430e6f606ba96d287adc402123e1220a90f485d8239e8a4a1db429d7926400c81d21d20209715f95fe56fa29dae45a52421d7f8747341f83845b15586ad903496aa47d20368a47f706cdf3e0d0f159056668622eaa3225ca18242d8812f9afc6744b54e11f83101008e3622725337cae9a000ea2ba9a828020cef8b3fe0102823ef679dab2b2827914ac250827f1347810b083226ea77131d3f53abbd4f41a16638c843b5af92f162c9f0e53673f2053dc372ff5fc6206872518ba99a53ea5462453cea8f5daa2fda177d8861430a99d6b59acf6cf39dd4199037492d50576499deb3b797417891e1944108739f09c78e6d2f8e7d41a15a7544a419a70964e5019ed060b0f5fcba544a88484824f136335f40c87dec83a08b70758a2566f6195cd74fa36225874a6d7abdb2a7b8c6c67be103623bc22c17800a34e30266f0694f56e484f11b7bd67e4406439e86f2cc65bbcbe6f51025e8874ee10b16bba825bdac3313ad565dd3d76144586d24a893e0d9b47a7b4481b4fc01799a9fba43063d8e705f342a512299180509aa43c5a85225abff1e5fb432dfd734dfba5bbf3a14e7146ca0bad58f6589b6eb2d26b4bd7817a97a362c4f8d1c6846d28b8d0b6e84474b2bf351a8b78f98a2add46e3bfa0f6277dfabb8c5b8745c32440923163a6da3e562db068f5f0d35798396cfa60e08a85c051c6c83911ea1a4cb25f3ea637256a7464574af946afb832a71930502874814a1ea8c39977a0e7bbdc3e18a8f3b040cd6b08bae102548f1b51c719d7fd4952318cf7618a1fa21146de5591a39e48f4c211a76ab96ef2e20f0ab7aa76abb896d5adc9eb5607dc87466f88be904009a081c53fc843b841b765721519c9d6dcffeb64be52f9c63abb3bf6381ed09d031911b0a03b89a965b676a477d9edc287327b7c32aa64d2d90d49fab22300622d36c77a5480df3e15803941e65bda8b3d2e60a8252c350761b6c06501802897047767564ca9117123f532d4c88e49e4951f1fbef49c92bce922e599617cc683bf25601beb0d60d36a3933bc152807815cd038759359144af55791aae8b249ce220b35211ebf9fc8b666b57b9439ef1b55b27a3984fc79cbfb38e5753aac895052d1f7cc8cde67eb46d899843f183c1d0ea454b020c5ae4ad03346d31e96f973b23e3ee53ac127a79910fa90ece0e17a9b086c90db5becb063971030541e1e6f1649257e68d1d27aa237919a97061e70358a29ce769ec0555061ba8ae02a87c2277ee0b4a9de10eb5f2d313780abcde1faefdcd28db138d60d80e82223c87989089dbe9d804647df8f4ce187383ea11fe351c350b842c8c1d872766c133c9d732c8f276cb9e095c1c70cf72deae4aa82c6c0af764c9c0b38c44b68b90a948b222ebbe4445fe97dd6a8062c911ad2072a3a359171d917f9788af65fd318e95baf132dad1d445ae42c0444c896b3d46b8e4d1c0d8439ea7c476a25b10072d387e90a996ac321b586271f85c0452e44f567ce94db316483e3511b8c3ae57a877be07a3d2167b36a88f2c621f191f5b6e2ad4c653655cce20cb686ec392088032b59635b5518a7cc706b73d115f95d66bbf82acaef5c5495e0af40ce4340efabb2fc5445ea0d98c6885b9515cd607d97b3a8bb44b975026e11bb82088f7052d5814ebf1cea8cd92979e0a844e0a41c0b0e3410dcd513576c31aed104d00ea0837069822d3ba84d39e0b0f3132b5761144b2e827085f229433a0c9391dde925bc53c153d5535cf1fd880a64b2345fef2a7c34b50f9f04941aa3b4a2084c9832b50a4274cbf3a461526cace0e4032b13d6ea9caff771c09c7edeaa706a326686abca79df9495cf8e27c4097cc02d82a4452077490b23129072d48fb6e36dc4c0980c28bda8dc06343b2821f5c168ac00d11e8d34081271db15f8f85042a7e3364ca8704eba823ed644f79cec7c115183129d4db5ab9e98e53b2d03f437858c628002d56aaf6f21e54b57be56cf4a573aabe73b42247d0f3ee7bf9c573b0c7ddc83940d7f052a56b6f165d126e21ba3df016c5c1f82f0e99f09846f7b9c65eceb991b0eb7285cafb0b7153ece0839864fff246981223a8071bdbe4a72c62b2013bb7eff8afacca3947b3de1157d18940c15578472518df68584760271a58dcef6741b6f87a8050bfebf504f493acc74dcf50d690bd180ad8c98def3f8c71a3d8c94ee74206d3a416eaf507ea6ab98434f9e5f3b199b59406281a4dfa0488b38bd66f4c58e35fbfa9e961eac2f3e35c2686de27c9bd37bdfc30f5ec45af007c2237d2bb8125cc1ca07cc9f0fc74a1fd3f8884bb2370be6f9161f6ae3e526dc6dee7ca4104398737553152181e8cff0cf3b7c122e95d2685d098ba87def1ebf80031ba0596b987df06ecb45d22f9e4b08c28c60d61ec9e86b87f2831f2c37c43d7b8feb99a8a46c4941c0db270d9cefc1c82844c66406efa0fbd9627c026ddb24d0ac0b4b66718153fb777013d92c45d06ff7427e207aa788555e01980e55d3ea7e3f046580ad9a2b6b5dc62c5105c1f059a98d24dfad2ab8a61a88fb5ec262f9ef4d28161d389581b00ff536382a4a39c88ddcca21f6206d31882e76821487b793a95f7e2628fd457e2938ddd8889ab8c730e48627df2ae13f3d08d5ac2de56b1a2397aed056ebea6f86f37033f9b60d1b581b6a94672f27772a2512e665f7787872f6a80c5d7c51cf0b81abf9cf9317f8e6165e996f1ec545e38ad33227b88087d841e312ac98301cceff8cc2e66a1a41cb55d2a6a4dedd13d1d05e0f3a3b003580436d9efda4c1564d3d721d042ebf37f8dda429274ebdfb46f4239866247507c3cadc3f6b2692a38f6753a51a53f92aeaa0361b6c65e115d9447c3c893e9eef1fa2bd1c17880bdbd8bcf7ebfb4689cf1e5e793341d5970255c735c97038578c9eea500ce7e12ee735935723c664552100d72427166ad03fb6d5149b34e793156189bc1a68d0e1a530d96af3e0cea871d4d4d3316b23d9c1159f67221021367af35f251146a7bd1c579ce122b7d8fba1b678fc7a17b024ee3a0845598f91faab93d58e81188803c05f23d47356687037dd8171c0e8c9f68fd6292bc814f046b90358a15b367a1c6441132f846b4538f0271ef4eb00ac0191b1860902cd7506ab83782cc18440731d4056e055bf77c11fc08b275d40fc0fa1c00a6f0409bc5bc56e7c6c8393e181e1a9b69b9b444c620b5cd6d052feff51ed1afe77dc9807d5abfc1b506d0522246bc7b7461e01daaa693650c4fff856a5ea9ff747d664a49769a398582469cd47e1d4529dbf6ec9fc46ea8066234084fde41f5befbbd2066f5e5a5f517764e5a92c09e858b0eb7e53ffa8da811e75045c262a612e101eeec32407c751d83e536718ca4ccd4bc2686050f521488e54d89a92ea094c9cdc130528566a17532efb376966bc0fa56ba6952e3710abeae5d6c8f1a1b1bb2857b342a59ca09d8090c0b11183816c7b216e4bcef60fd84ed49ac73a68f28f8693d2745b3c7b9ad63c5e8f33e76182cc75d00c1169154e146f4da6e9ce82f64b08c12934871be668b3ca5d95e0921f9fec70b3b1e5eb6cc731659e5c346fd1e6fcc46866f2ef290361d2178c2db737a3547a4d1798068906f6477da73215862a8286ee97a11d9141bf445d769cb5d568ce2f477bb72d1c73d00c4c1a33caca33de3409788d9bf18bdcb842b6facb0ec2db8042558293534bdc2a12ce656a36093f8f242702e61c3a7bd8010b7af8fe62aedf415db843a7255fc0cf7251b90f5efef6d4c78fca153350dc1fcf74f0ad11bc0c935f931a6fdc3cb3f79fdc7f55131a28a232117588a3b8905c448f9b6d488a96b0e1c881bd3e711a130156aed8b666a1a2b08bd27b9e900c3f8e8efd4e00254470c7c699c4e42156f8c16d52a8a59e8200dce191b67cb096c55132b80b0614370f4acb1d2d7a92fb12c2192db36d19e2458e54283a9e80e208be541846a2cfa01bb658f8d1e3996fd9ad0811ab32a80dd676a1b080906a623bc5779ea088850709f1f09cdd2aec8f9aa7a4eadb6a00ce20ccd3f050ff219c7c0f38208f09e6429a980215e06491646cc203cfb481f605338f920f6079b25fda40d9f8df59dd1328ea840914f4cca00b8470d8b32603bdde0081b5e128709eaea2bd240648869543c822119a155ad82582d28c202d1a02b8cc9db662be211b54c704728fd752ca0afdfecef00c1e60847e51945c220e0107f9fa91a41cdb602925fa03a22a5ab9270e6cb05f1cbb207066d6e7a32d04ee7ef5d8434fa04a94108e7a7d1a1909da0396ea09118bf52361674e6e27731e6fd9b270e5c1a3a14f438534ce8b468933b92babd0decf759ded4deda514a350d8cf9e53bdbb312a5dc93b3980681bc76d00615e8c63cdfc76c32c6f8401d94187b3b4f330c921cf227ac0a716d62e053bde5495648d7a74550f57ba5e0b01a67b4925b04ba1f252b0e95d069326881f5a2309327dd0a7e3b77e5e1fcb653012247c688d03c7ac4a4e8d3187c1520ee8b3b32a47d26af60809635a43cbc975bbe2e0fe53316291196ee9bf2df4019a2d5d054a06fdbc94745105f79d33604cb4113b1f600aefa6282123675964d4b8999b3262d7c038acaf611a1ca9b119d7d1eb23dc2a18efc5ea3f946b89b049800d7794512b19c172ebbe2189ca8c66b01b132ad97e4fa830d30a25518f93e452a846f64772bd5a34b5fb3a040082265153478f46a0c94ab58392ebaa809ab2595b9c7566df91e36ac6ba772b2bc2292909d3d65d87474f2dcc1a11050e64d14d6572afbab2b004cf0723e1c51184d91f653af390142a1380e1cb7b83bfd61a5da5b5e2f85cc0028bb3d57397894a9a6cadd9d50a2a74c72b1d8058b6f3c1ac005e7a89442d223ec5631b31390d102461eee41436340fd7d10ab5d6bf30b52f1a00079b66169d0a65615a25dbc660fff730396b340218d1e50fff4450d1e20073b073c7a10dcfd645ce06896d68f16ec912fe8f7e5f1b152d87b469f48fb8f3905418bd91085ead2c6d82c5121e5a5ea474ea3f1843fb8d351273c4b276a9e19658ff764a52aefa1cd2c2fe0a85d5760741b37f37bb789859eecd3994906ae18e9e033556cf71d0122d010ce6f5f4bc435ad9b2e3f7127830c240ce63429fd831d37147849d572a80da7a0738030290ae5c42fd42406782e8c4fb3d761e822768308b244a81f00bfa00479687863bf31bc864fa01533160b7bcd1d060b8a53329c76934170dce99beb13e065031f27d735993156da979429906ee3006513e0ae515caf2fa04bc523b650f51119d5016c894414720a842e983f6fdc1706373d8a222834e55b8e30335118fd64e1bd8c436f9a7551d147360dae57bbecde6af8239594f46fe096488f579989219b5d0fdfc7da89d4cece86cd74e6d890a07ff32ef958ece4164938606aa4fead0db55a83462f24a756b1a40c8b94120cd98b0330c3b100c7b3314ae469359df0988a4ecad1228c6f2ad6ce5cc702fa7ff6f9e21f64250e65e67ef6a5090c805641fd148dfc92e95d2fed047894435204921ab2bbbed224f1dc3636285922e744121959671357fa1cb044284aa05b4af0620ffe6e49778a09786fdb2495a29c1725d44dca11fc817b24b8eabe2b3ca7f9e6728b8f1716b311b15c17aa29882098b0bfbd600350724b207ff885ea02882acf59981771b87148694cb6f3105eff565eb0a102bd0da71e6d8576571c437451ad8072ec1725082e6aedec83387479c3dca7c30a6cbd02337128ffab3f4a783d55f0a3894c82820cb1f9dda940a5546808db0bdba4be5ef3b88b0fc5cd81d99f1052f95ba886108fa036c383bc8ea1c10b7d719dcca2786a72a3f67fed2bdc8465359f396b0c1753b030b3c5cc970842bffbc8958f72d57f3d3a09489c20c633602cdff8aadbc65a6943376772236b77f00f36604ca33033968d005b6990f5667f305d56506759c0d7d83dd390f5a1c2ac13c29cacdc75477f71f95fc47fc82e0af954671a4379cf21165a363379cb4559a0b978dcc4d61c5ed1009c73e55f2252fe8edd82aa6922c9c0b4c03916f00c7d5a2105444af00b3a3f0c48f28b3c3c5d3bd89827a8c1778430773f036dfe9fc2f94ec2f955c6debfd6724b56c578e529be9fc566579938cd5bc7c9f021afd5b66b201e3ba5b865fd5aa06ae20fbd110a724309d9d057ecf5374efaec07398e94a146b1a75a60e609acb83bba285412a2be74d1721ca26ceca73410b6cd92e0e2d806ef0db46d03b7c8742fbc24dad54e1ac85a01da297031084808be698e16b53a54cd3d5bbdc20d9af1bc42e1fe97b3718cb4380db6e601d2327dfbcbb859f784cb9e9722e8d64b8dca733b947b5624935a86d16466e0bd30499c379907273b0cc956e80d006df973e86f5e656ea56c5218018420c5c271aec11c8ec20982860092b512c0813c45707226666030cf31bb095d8d168dac4baf43c8a24d61c20d61359bf8d49c66132a5f1e480ada6d80c0eaf6c447e7bc3701eccdd33c50d0577875fae293cc06db160d804480a811016a953737fee0ab0fa4859ac0f0eebf9148e73339609c669134cd1260b11b7d870696a7e930fc03699e24ea4999a5659580939e9a222ba95ec62a74bc06d14b058a0ed13f7b50c8799e09a6daeea0e668065b8af42bf56df723f4b161c78c36f07da05a939ba14f924b941c79f3cb0c2b8221adca9d5aa482ee9300342e5a054fee8d4e1640f47d12a0b74063b6691e01732520bde8ae7b0b57273a2abbd8e8b86bce8bf64db34fe958dfbef6829be1923168c297e0811dd8baa26592c860c0a88434a6a85c83d00dcbe8a7f9df05ad42deb18b546919ea84d9424a286e71496e6509b77fc69082edab121e6858b4d85d90e86ae5b8256a0c12c8dcfc6b5d0edc3ad5f2c7f8fb54286454b2fd6aa301ecffb69f19ea5682f0c526a3de5ecc182c20d18fa52a6e7d6a6241c1725c91d952ac40dcb33bb7d1d01ce830a2a149b9718a4fb5869392843cd125c0195236c3b8de92e152564aa882058381ee9b842cf2441f96c21668ad13efe2078a22c2fc0b7763c048386f73b11feade26a0ca8b866926dea6030f612411873b36ac07563336836eb05f495659c8f050df1f57eb849f57f0ce04cae0268022ab06c52e81e6228eb02d637de44dd1fdd9d08c303d8c108b24d2402c28f59a1a26b46c44a307a82843003259e51a845b644f5e7451cb0a9abb9adfa91fa192c53bc60edaa6e0606f30f835c9dab59cbec6094ee38f6f366b0ee2e65e203c8ec8ee7008154b76214b0647f9d158e26ad4c00c3470c6f6687aea29883b59f9568082de9fa6b4fd036db36b08133b8848dc3660d7a0cf6ab07291d54d6638c1065317997ca5ca1b845ac924c4d86aa86ff69ff7cab011d9043b738c743b7e9a8363c31c9e16147b68b904dc211e5b448eb558c5717476002f9d7a7095ab32ca35176a40061128f4ba7f5bad2121ca9b0d781d6999b597ca286bb47988b9f4475766502e761edb479e6afb4d155528f0b60c4a8b652087014dafc31d074e28749ff2c386a72493f81819afc61578927ffcb34825a3d8537cac40f1c6d90cee235a942e53e11aa3a00fdde2b14eebb26a4d5834ff1e9cd807a443fe9472b21c096064d599e84b08871b996556ad887a6909169b35e8fe6d035a3ec2c42c9c50d466458cf0607d283030c27baa1925253084271a8901d801d14ed92f36c44749af4b4720f03bc1b96f59ee16cb584255c2008bdd4c3ed08706efa02a3f7f90dd7f86c253f6ebc564674359f0b47d7524d403f59a7a3f8158140e65276c328178292cc5cf06f32676f28d7ae31ff7fa452743c2becd2eba0a6f609272dc321f90fc6eee0d4ae08f6da9c423b7e3c935b0c7f86908e7203e493af75661193ff9c83b4792c8359b4566e349cbaff167386efd44367c0d7946c64ac175216f9672546be085c5f8d8af6643ad06f73ae8d4bb618ed411cf1a78f8602a1bd114f68ba32e65d4d5216a76595174326e99fd756b045fea8fcf7fd17d3c153912016547ec1d229c7b612d49b52f5b2fe7898dcce917085ea3473316bdc4b58b5c9009af840500c6715b5ecf0a7b20fe31047d0db249eb7a47b46d971a192b18c46c90e0408f785c90e0e8f9b121a6d63ca0574b91a54eb6b2d89c4d99e07df883fc2eb6f455bef73397559578289a5cbdd6814934d2c3d89fbb2af47f79c64c02921e620aad212489e8cc5707c586536b940d4d90f0a5afb48299b1659f9b11a512f81f7ae0410dbfb3a8d547aeaaf0389f9705a34269dbdada27c944e15f6fb8b6b532d2983aef89ab66199acb369417ebc3395559cf24418e10ae3cc21c0b4f24a8674c4852309929eef62a75eab2f2c33e9a3d07498fce2a45e773fd58341888dff770d59edec05a6089e75bb00134c59b349ca7729eadaec9048ca0a4d8d897b1982821e30550958953aa109d5d9984062648befb48ed5d040c0b0ad2db9f99591525806e1790c2c1d68ed67de4f109a3c1484618959a96bdf39120fab5ac92f45324933de0a19d6041977d608dd02a7ce8fdb99aa9780fe5447f479c66d0b1cf96120d7bfec2f8deec7f56ea4e36ee6c6152e21853c63054a528a87cff21069ee5753e1714d1470043895c352f53daf195d592566693f06e5b56917af3f4ce12befa7652f37f193aebfd2d41a7c838f7d487b996509db6a0acd84191dd8496ec34bc7069cf52d03302e2abefa49380726462472e2159d25270cbf82cd539c7d84d865423a71320371b243501c95879ad22168d8ec4111c5d1d16a2d4f1ad13033a36e38a27ebc17e243c1dee53eadc8f1ca19bc81fc2e2e1704da1a6892951474a188cd728b6723e5a904094ee3417fd371a779e27cc0efa987ae7ea9f8a14e103c919da3bba4823a9585d68d648e2abf0469e43d4662d09101c4f5f601e5d6611bb23d22a43f5e1decaaf5d796eb56f5be9b2fe80f79ccd59380f01cf947b67f4e349a2bd1cf2372f27ac3c2c1d50ad5fcdcae0fd7713eef687d7993d13bda2e2e201018d1718325054883595c39423ee90679d9dadb6cac6670cca0d348ba50da6f4e42ea76bc5376a62a364a8729206392af2635ba48af2df645a9fbbd47c4b3e3d1deb0a66d0780620ad9f17552bc226413cab727dc1d4e334d4424d698214ff4bee34c39d1e9d84bfc10d4a60513fbc8432b8d2671951848c56e6342beb9ec3889e4470c22a818b1e7ef83bacb783c242e641db6d064d6dbc2f003d66dd7c01111faa4c0a11f39d9bc92aeaf9214c5c56ffddc68a2fe8c46c14d04e944cc6348b64c88292846e7171983cb00912c7c349be489d6b9add71fea4d954dd518f3fedefd9233554d4c4247d94091785f1028518b5759b9a86f8897e68243b764fcc056c3d8ae7826604a737b705917f2566e309f5e68287d8e6ee85efc9ea7efabc8cae566773e409e3113027811c478491bd6f5751173c6834ab1df8d11a8d966683723ab6e89d8bcd099f1cc886078c926f447e1c1a3e3b97c866f6ce66cf4b9b0366b9637feb041ba898cb31326906932711c4049b843fd90264788d9265a45d174c683d34f6016768cd9203013df1bcf13fc84ebee0a15f1426d57255305cdf1b25cc6d41c55744d2b088689dc885d3ee8cccf0284ad277d02c634d3153fad8aaebb362750b34d5a2d47a7bd51a14f357d2fb966f5a6b7774ac59573448096746c1c0916d645c125e1420e943e34024d510ff5004a471ed23d4fc445523fddc26e2dd1530cc552330149811efd382e6fede1eab1edff0d6edd41e15fa7dbda43e40fb1254d8f9d61736569a5f80f187bb6815016b8ba72c160b3bf4c11cc8402fb4fdc1c454c4a321e1254871a21a1aced94bff6e5ca4286ef212438a84442be296b73249d0e6bdc17e9990bc8cb68bd4e7e5b523f7ef6965e1902ae3116acca862b43b3e72ec237627a78c10ca3e19f8e95b26cad8cdfd610e9b51a0c2995ac0baaca3533b0f5857aff6e7690a55c66abde1cedb85420c2bb25efd0f7cf868b4c88cde7606884aae222d3a6e9f2a86307213f545223ccd297cc805de5dd8d34d1c0297009fb2dd4d74ddc74cb9ddb537e66de74c879a3c5b343eb96f73bde5c6283740f1361d3bc92fbe13ab717f14cef3305483c812b33182ddf9213fb1585f7c17c46c442e5e2b8d09da96d8053449e9fa0110270ab2df2a46928b980624ed0b030390a0ca98e2a21da1796c71f80c8525c916f7a7846c275176ac373abf414d6d9e4db656ad4f51a50f618bb2e7b555f37a5f94504b70e68d4ce637e51872e77289803f90fda3762a1c4a872b4c10a644e9a0d966a70c197b3c3cd0a555e5d86781f3e292c481587c7cd714c6a762e3b5b42918ac8c140dd6b105bc2453a1c1e6e98b96d4541423b129e6ccc5347ec4573fc0000e906e416e1a5e8408f1f8cbadef59e1781bc9f51b24fb4bc131637bec022355f5a37b313545240d767d64b19e43a82091b4cd08536ba4efbfd96e194b0a592e42d0433c9856cb48d0b89d696604a38978c0ad666a109d2edab4648d0e0779e5afcc9fac03beb130a1750e63c345a2c9e8c80629581d2289cb0a8acd58111b67c04321cf177a4245041f0330819159ea38eee02f7429e1b266ccc8f338444b47465fec4aa4f16fd83a40d3d798a08883a6f1f555421e44539846c3cbd586c08d91ed87721e418e98ad37c7c1373643b5412263131d9a4d17628805d261c1e1973f2c1e9776583b0c8f090515c18b64580afbff51eda8668cd9e8e61c46148aa272ec2d6f0827f637eb5a217e30a26ea37abc8455c256f6cae635ef1ae5fea367b97325a5c0629d502ea61c4857369a119f106c2cf293ab9c28df4ea488cf162f3b4bed68628e68ccb3c122103f82906a8c93f0275ade95246e67d8e4e73f66d0b86e7f1e8ba3193e9b7e29e371e8b1d5aab0039e1c0014ca6bc580fd746f128f0a7ecf579bd29200c53783974d14d6f1985b36d18f6f9b9014789b783a88bd67bcf6beffdeb2f8c98b91dabe77c24a2f26d6faaf1486133c3e20f6e500f5ef01332f95b90bca55a3f9dc03aabc6e2189674678bc58325c17bbc000d93f9f12688b6778a62c4a7851e254042baefb5c200906b56e16b0d0d5a5800c8cb602b1e99488b2fae8ac8703e64cf5999318544a7085db03f60b824840b55710f45da48671a1390b141688db738f60368bd04475d62827e4f58be7879c5118f3b7d95cb29c487273977c88a199d9264858140b2fa2abc5451ea1104342b7ccfeb6a22487308b025193483d9b44c78072e4c43810af231a9942662ade00c051cee70c1283067e9a8e5615e4c9093287517d178391aeb3bc271118e85f163cb30a9e1435414d135d2e81bac81cae8cad30372c61f0ae48a0a0ec42b4372ae1224b882305c9064d4fafe4e0649a7c062afc12724c814d6904618be206eee720f2b7382c834184fb448ff638c93127e345fe1af21fa1df04eb0ae6c30735c38ce9b5618c76f4eeb2029da98490bc550d8df410a60243835f032eb82455b8d462a04f5338fd025ca78b16eb5237c06e44c7b639a53a79b3d19c77bad205fd3e314bfa83f8a4e0f0968e03abb71c70b52470544422c71c953fa84d09226515e03fba24f59fdbd0e4489f70339fc880aea1ef96925eeac6df21361df2ccc20775215b09949d695c214746e4853c86692193e7e25aedfce3f96b0529c381376d4543d94eeb29c181d34ffc4cb34b1b5d32bcd6255a25796ff06b2ed1e943425580e5168d0e1d732dc811b7ec70dabda58f91940acd6cca0111e18cca4114eed80f8fecde96dece96c9d276ababe12f776928d109792c05647f94d01f13c998878e73e6d24f02b8a8b08aea481e3c82f221383508b33d0e25354522384d9029e03bc1317587f79a02f27bae1e11042eb710d42f4d06b652961602b0db0d84a235734bbc2ce4d0133dd5a80b8818e3f2e385b89ec95fd7748c0fb601efb49c83f78ff782f568cb7fa43f7f326a242d963be62d8e1898c773f71b866089709d84a060eaed1c8720013c56b746eed85e57eb6bf80cd2eddf9d2cc2a610ad2a9a416d6a56a582f382ccff79a06adbb1bffaabfb7b8d695f564ba27a9343230ad6304b78c984b43af20005f19389c39d2b5d433be0283a87cb6317edb996845c60bd3764395bc0e1ab4108ec9103c37c9f0d784d8d4f04a33319a80c3e345934cd717e281f0ed85dc9a60a1c86f463a02a15b03a0eaa791d8fcd26be95ddaa426d143595518eb406d4c61228c052b8a9eddc38a4372fb20738961602bc6c358877c09d7b3339106efa2a2d8dec29e8077016a72134a67952859399390f1bf40954f0c1e5fbfadea361216f90d16a14b1467143b83042af49a19e3b51b2db7abacea11e7b5acab716d72d142a05d3972c4f0f04279456efdb8f706c0abfc210c3a6a20116db44ef9f6072e724544444aedc4c57518222ee53af29b8a21b40054aad9619284e0454f6a0e410088cb1ac1549917841eb3ee1fcbcb3e382feb36a9ac206411b9460704f7a96e904f50f506a21b22d69a567032462494b13e6826a848c530e04c9a0134da29c10526c4c19c4607e77f391c9a17f14c39b85428457a06aa1f35f515ecf49349742e8c55905452377965f088957dd92a36b0103ee50926bf6c3cbdd26037f26468f298aaf29c2b2e190f59fc82db17e8f7714d69722a32bc13b085b382aafef605cd2fe743637eabd0b9cd73dd7d6669468419066cb40158fd527e36b3f4510ac2fd6946dace8d0f47bd8df9790f2b4dbb71147e784d92ee6fd5532ec5d3e97b743f083ec04fd72a062f74c7f7a6deeb12e429bdfc527e6bc16dd8f9db2dca35cfe8b753b8634e98ed3ab66b94b22d85ee6bc8862e2b7c0b4490fa74bc0b08ccea081e2475440a5fcbb1f26404f3670290d0c93d3b08ec2d87f18348e8e324b1a4483324284821ad18d4233ed0114c3142a1b7b3a377ac9cf560f69fa14884511667d0a4ae7fd43d9b1579e89ea79a3a1ecb0e14bba1101cb421b909c6314c337989276cb092588510f4c764926f20caf1d961b064630c9abde207accf5a4c071a8b40aecfc5bb65d247ff37e3933a1be90c7619e4075bf4731c870c81bc655ab67f33868085338e7aad6efaf2850f88d1208ab97cb00fcc4c0763c96dff18b5da2a24fea9a3ee0e404efbcafacd8d10305da15faba1efad470600a7c92c2efd07bba2c11836a91564a4c59b893a2c08d896823b365198d461fc66a041f46cd48ac328f0cedcc90d55cdfaafae9abe8521641b47b9e2243f6b965ba8e7fdd7cabbee5a9bef8184f5d069afafee72cb108efb3eff53b46bb792754bc4b8db838fdf08ad6e49cc5cce06f59b90b5d5ad2cb8b6b7312a0f9f32d6eedc360e0166036416cab2e1731cc47cd90e45ed18c39cc05efcddc448ba17dbe38e6f2f758c4d8837b131c704a94eb4baf1f21d735a9949246b44499778d3836b25038cdb3c0f9ceff080a69b106d0b17b5edef8e3f3d96394a45274cbd010bb6c089856adefd76455dafa1ebe937b64b7dde5fa8bbb45ac3de0ceada51357296fc1046c3cbec9cfd47090d9e6956bd4caca47d1c5eae7d0b9443cf8b3ffc7989f8b7ba3ff2f8b1197173bfe8ab0b19397870a766578a2b8cf330812da31437cd72e34a6e6d79234f6c9495e8c33b42987456cab69182046741a34268c83715ae7714d2ca7858d537d63151eefd441d8127ce72419b42a6041c63f84cf29a3a5f72854d39095636eda540269147c8f17fb303ff6b3ed39bec9577d9636a1fe8cca8e87c12eeeca0a7b6e1ed948cd487cb3f3a602dd68cf1e25dec840d0e51674718005f4e4876d002b667a0a99526608493cc84696de52b1c263d0ca0098e4436939be8dcccfe2eb9aaef62e02d60912a2a8ec1c862ed116cb5f541d765c19f5a0dee5f5f700fd99f593934d02570f7b822edccf6bb8a3b6cf10a775c5b0dc9fc6f8c505bbb728214b4d12b4812a1f1842f67fd8d48be402a1539125cb9510aa2e9908ae93f4210e1acf48cd606b9908b03734911e68a602faac9af47bff34e81c231765771cbbfc19f308fcdb2a540252beca885f5f3dcf5905976fa3c83f7ace8f82c937a77e97ae6a74f9eea658e64d26e77f8e66d3edd01f96e56d0e42bbbddc7d2bdc1a4a2479c45a8a888ad89762bc7d2a04300a10e00c2537d33b17ae4a2a8634e4c8a38207936a4e8688b509816256a7b379e03d998b2b3d0b5808f2bc842a34d42b247430900386eeb7e32e169c7e0583f996d48a88bbc0ef7361c828791f98b9ed9655e2850db430db1613b2ec118b92f3fef8b3e083fcf4f64d7fa5a11da60f732f54ef81f4ad97e4afc94f3006f62750667f97e6d68fa79da0eaa7b9035a82f6a014142dadcdacf3c068f3ff1e3c9f8f75ba416d43fd4a18e673ee1d78e9c31acc4d7a056872520b95fb9199e9871a6bd113b2f38fdabdb2327b8875d95c6144f5ce8096fed01231fc303e058101232d862c346e42dac8dcc9588b4f14a91c7848b190c057935535822932156af026f53606654bac035d1a471bd7d7008b6c10c8f0e17d9708853cd910bd8998ea2a3729c1cc71053e2fb3974debd39f204566513437cb0cd0c380796c10f88a74b56b07dfe8f4ee48df11dce9e667ffdf21570738db5f5ed22a258ac8c64a6b597fb22a4f59c454417c55b7a5e9a8d72dffb4c11a7ac084e500f209cc4dc9c8e2a999d6d10bf17637a3fcb7106adcb206cacf2fab0fc88438a4650615a69a4e268c52023a7d0b772ba018012b153c1ea979a20acc05ca1b92cafcaa12108ebfdefc717e835ec4323f13c26109c00901a8c5536f4d109b79d367ff3b9c3bb8b04679009eec7db1800581c7599ab8a8155b5a17370e25941738bc983fa4d19ef6190056b7a9f15a3c37a286727abd5300fed53a5e87aca0e6e7051989f06b338a3214a8ea317211f44cc6bf9fb3cc56f65338087f86aa06598dc296cc683704f0d01a54e8520d9bb9dc3aa41c273abc972eca816c131444c302e05133ca04acb3dea71832435fb0395e3b5a4b6dd8ca46cebc1ad53de769434ec53f14321c4623f4195e1430952529c3b0050104841cf70839420ecb654e235820c580288b487aac58d973ae761f8f167f729bca669f59a2f078019e49f5d56e2d89f520596844dcbdd829aab760ba87f40f10afa0dcd5cd4b2fa57671a708cd51474baff1c86dab56afd6b156ea2f204bf440dacabdcde7a8a8356695647954f62ff769790e8f13424cd99f5309759b9e6281d78d9eae1a3524c4921790b32098c05f9da121dffecb06ca1ffa151399bbc364dbddf6500eb33ecf4075006291b88662cd527b808127d5620420e3edd8f86f92da378d6c806e92336ad13ae71cb0b8968c87f4103ec086805978c093a6161cfee189fd33f16c0085c12f1afbacc104e1acdbeadbf607df6166d47407815d2f8587a70fedd93b9060ddaae3634208ff8b8622ded9292d0c58150e6d9297b63df5ad3aadd1b9166cf5458195c8fa9b6985a523c29ebf095f87c871afa52310f92552110a51861a7287f2e75a8b97f279fd4b33d363c14ccecf1c00dabbe0c52945ab8e5d57c39015a73219ee19af4b362031f96cd1e2af11243333fa20a7e8456412e974ab869affcf226c622afb285013ece31b7dd1226bb26948cd747c2ab72f0247f1beaf08b76abec6b17c9f82214f494c320c1a3f232c06595b154eda964aea8d82c6d53a1e10d08a69c7fb1f612ee8e75f14d9c9a01a1f2cdbb2965db9561b6cf1a2c2ba93a5d351e2669eaf93c1d9dda20b87a30abb4206fb0cde8b4ddaf6b3b399f4a88cad62088c98cc67ed5353849e0a80c66a6293b82035c24136fd4b51b95a5d92d745dcf1ccd73b28438256013b0f33df4ee124b10262203adb68eb70ee840f713729b802e3f6a4f6d4252f008e49a96196705120228adc5b5212cec1eab3bf4337d22c2a5235ea8fbd86f7db771a60bd4fc6886fe150f7fcaf94390d5d5ca92f7121bb5a62f44029ee277bb2d6c49e5b3fffd12139721092e27e6ad118ed53d8874a05189226c27d2ca296b71f94385b2bbe1dfa64dbd88793832c57524a85e2efde60e498286fa368b0a5040a0fa09b6b68c4325a7dc0e3e34f61e30cd9ed6625f272451d56ec026c6b2f4384a3e13f3e20bd3a5a2bfb01be091482988ac1f4076ee7885ed44799638153202eb5fa53797baad0b90eb22eb936a39b814574d02068f30d4c929a5635ad06aa1498816eda7435105c849a57ae877098e87b1f6b6f7f2dda3479447958a0ae89ec01ed644a69b050001d9c043d4a20e37a427d47ffc54a70586880c44d72105c3a5b57e1539187b13fcc06e2ac4022c8b397a1f75b5dc6992b59f18e109e85ba8757e04703a54a24599e5a70044cdd52d07a4acd9edcf09da32990128dc54f90af8d20559ae0e8f317d2448740f3d817d40b7510ee0e6b7eadcf3a8898f69ec72026b5dad593e1b63a0b7ad9be729aa4298ea4b0c39818e5ed8281e2522dc365ba00b6fdd4e4e8a0c5695a9fe4ee54b5aef7ec80198a010d0fabf2ab6d1a793f234d95292e14a739234f5841dec560699ba824b748907e9ffdc61eb2b23576acf7992640a8545a54d244f01b7507873aea5a1ad69f7136b348d5c547579de0d6fcb4a4d5dff8563884d9d1ac1c4375ccb5f88ff11ebcecfbf9e225b91a5e45605134bc07c4fd929bd165ad08910810c330db12497b428ff87dc0b5344ab901ac43b2048879570c5bc90414f848cceee40f4a49904b88fc407a729f703c5acedb712a9da39704102fa6f615c83cfe633b428edae523b0e9b74832bcece01964b61dde9a17ae9034657e1922f3c55e0831b2657f883d4662817f503b38e06649430f110a982f3873c6410a445097e4fe73b0c36f7f0fd359342a165cda18ff42b7473305955231763c4a223c27cfccf8b2e10d2cd98318b93eaacda6338f572d3cf6ead4f503c56d2bee054c45e3a4d4a5bff57c41820af04ae17b8c9a4e629903c94a62d41a86d4c0a76f18ae10240934d55bc2cde0d556bcbc9f908c0334a5f5c90982924c864d3ed8684ef8582a7edcfe07f0cf927fbcdfd14b66a0cd875d834650a98678c41db0a935a8cfdb5d32f75e905b82984b7223d84cecdb54d03fc9153ed009070bc936eebbdeb7fa4f999500f49246bf7fcebcd2e27e4804f44162aca42921856428b0bd5f1d016b1a8ab84f7f18ee841cd01d4c811547aad6a4b3a429770c93a0f67c7cd994d5dc4546c3cfefe5f0671f077ee39e47583c9d553462a62d9be90096d2b269f16319ed96917d64e2b85b01834e236de35582d7a218caf345dbfcbbab351dc87bef74cf4b41d4d0ddf572e150969b02fd99ede900012f755b0ba72cd9662cd4dc8f58d2dea4a6d84ef3ab821613c413b31f3fd013fae86bf47a211688f5de140f77411da92147be617db66d88b9fbf5fb4868bc6bda4a2869bc9bd0239ad6a422b245c3d0d677810cd7072162dfaa170867107e1a616bb31469a15564643e579c8df6aea39df30fac98fc489b5cf6be0e82e2c2ecf09018e8633adadd38680b83fa6a91651fc164a1fb980c02d579209fa91460a250e33c439a38518ffd419d47cf0255385cb573add3727d1e1c237215a516605628f65dd790fc2a27ad499334e78eb43359a4290aeda7167f06f79b82ba033759da2a877c06553a354563ec9654c759a5a20f8dd2b5e2b850f49f819392961f22a80afa0903f7fd34be4e0974b949bab48927991f4be0810b83217a4eb9438cf2abd7238c03d35596fdff9b6714989e435dbd11c0e7a608db58515ca9be401bc5e8768554075344391febf37b42d8da0083b8154e7bfb4c91afdddadaf7de8af752420a082d5797b373bdec3772b876832ed7bb7d96dac44b4ccdeef920509c1af5c9a5f4914aab59d9e3455bf332cafac36ffd3242939f978accab9dbc260971994d96a988db4cd6db220da94ce3f965f439c6fb2623a615de6fe45cd0ad9f267012b1627b7c7c9a1d597392b07169d1385da878811c5e7044d34eaee1559f09266af4068fcae1efb6410b7bb2f8b9f2246f10e5fc80b61c44f8f38ecee6ba38558cfe2e01b109996a25e9d7a34844a7b3e4e97d467c3947ffad487936dca5299d6cd4b3966254e4e8340ba98af53185da9311b2d58b28b5f4613393650118fbd5ac2cb0cfa030cfc8213837825c1003ba9760cb94c3fe10af8c56138d9c781ec2fc439480860885ae3c3db55aff0455829276fa8a123fa7c006ee0008e5e051588c8a6158049d39544d6d9344e3dd5f9060dda0ea7518dd7fd09383659b774bc732cbdb1a37ccf4f095bbcf768a55778ac9c913fc6bfcd07083823fb098570cdb8cc508df2eaefc0f41fb1feefc8fcafd33d5fc745ccc15f7ebb3e5f121616a9632d7ecb6e131a53862275b7520a9b78b9058bc66fdaac6e6b37e6a907371462740f181e9c074fd2478ca94055a9a5b1f6015b4b1be03172c86514f0f7819b1204f18f57f851bd25b06b7fdf4fe814975445c9617cd34daf825d8a3fb92f7b7d3fb9b2a1c38faaf727a0b5e95918fdb0af717a70776264d01b4ffa5427da32c2e548df2a7c2bd0f12a5301cb371715ab5344d5b2a1b0d10e589036c4b4aa11e0ab60344b9cd88087ca41711ec197bf1cae7905e050e2c29011004232d3b5f9052ba9b6f33de40fff212da7e879da9b57d49d70257183aabec91a7ed61a32a03a8b038c633864105efa2fe4fed49a9d15062e1b548f57569526529d3d95789de84737dd42263eaa2b35c4efe8e6f000eb92ae5576a0cb5149b4c78b92bc081a0bbca13d2026690d6e5666249285e3176039421a4c50d6ac22a07dbc611858b8802e075becab0e2bda449683274a0752437d062eff412eb8922582bf761644a8e62783129790d2c055719d25034d734f1cf4f073459a1adc14264a16d5faa4ba8198e8fc95256b894c5cb1f4d44ae35e9784fb5755882524591dcc88d419266b8d3bc8d5a87b9e2630fd96d535aa37b59db438ed67df96ea5ad53165e7aa9cfb9363cb7a4cd55bdb9954affd9edfc2e95ad527d54e55c615b3ab5fe8792d17c18fc01736d8dc5aeb1f51901a671043b8d27d8413f6a49c41e78e973505f045370e597b1b534ff611262b5b70a4854a5c2f1c360beb4d8fa43806d23ce927d131c628bb82600cd3999eb0b84a8de319dfec25502524d863243a4d489201b2bedde0183d3d2fe4bb1151617ea5be4cfd523f24a5c54d8dccfc887f84762ff4a1dd4ccd33cc79e7232ea0abd51dd36b65513a0cde71e3a11ac9a616deabba1bef33edf1f373374dc0cc3dac74b67466a6f1a5c26f11c6385de3d3adaca9641eacb2f16397307a5977087a9a70c5a8afd28399a67349c63e26c758b80cb279c25e20e0bc067f750dbeaa8c9a6b2c3499796d56339b54fbb0604ca8d338afe5b67f00f659ce9265d61beed047146104b7357739713efe6fd18c1acd9105d0462f5feed2791928f2fcd3cd9cb4f8733fb930870c000a77a284c2e3e11749f8a68a338517c7efe597bb24de80ee8866caffb79c3509779e4a569868068b07b972646c02ba0934370e54cf711e77ed85dced17421242fa88f6d25d269da5872fcd389836fb1495c0edc293509d8353592a564f8dd7fffbc2148401bf0630b0a78b565ef52f31d631e4af18d05efd69cb386ab2b0bd46612e79444ee8ce6b656099ccf8d605fcbb54f2d03be131b4d42d39b4ecbe4554c20177cead35ba9bdb5c29c0de9aec0bdb76a1e635df6f08893d73a6da3f6a12bd2cf7aedbba459763dedb8586e16bd728209e57a679cd93994ca1f8a8d38769552567531a9d0d1e7bc65adf7224a17e3857eb0f8ec12ea82a841815bb98e1c259bde130e5fa5ccc742a7027ed609daf7cc314b2d35b251c69f36e2dca3f1b534c8aa5a6e0acea2c9898f9ea49c3baf65241e6420fa49433d8e942cd0bd12f506a2df712984f1020ae57b6123077431fbd210052f8c96c99f98a235601976dc6b38c7d45cebdc9fc1ff005935e224ebba5f5958dc967ed36a338d18228cde97256ac77d5acfe8ab538ca559e915e0c0cea41599dcc0e62751901393a7b0d6a6e8b7c3c9bca14fb3fadc01c565cad3572af33c90e0e1603edd78a5a11cf969281fc899556f0e3362001ac907417376128270749fd1bfaefb3a7bc4517c9d89543af0203dfd080935e0702dcaaf64c972f6310bd8095c7117c465d0d164952f0d4a411524ea6fdebe15ae351bdfada54d72d864f4fd0997639a8c249e99078a4581ab4a84855490d3381a9274aa1888aa233593f1d35bf628eb453585839d4159e7d1220b70f5c47b1ddce62e8cc057ab7c7e350da2a06df7052c39980a0f778b085ad7222c451ba6a6e8ebfb29927326d9bc7f7547e7fa2fba5edfc71532fd43d1dd27929377d11522fb092044604aa0bef965520dc55a50329c6a3c979f6c1cf99b4c64139fc27c9e67ca6e1065cda8e932f0f7b1447aa61c58009c40d60bc15a802830c9ab401c89aba00bb29c12cf83f3897add1d9cae0d66116a45949c8de7b6f29b79429a51439095d096e09f031ce4f42b3c44108bb0af81cfc18f833f06960bd7030391e213fbeb51d71bd75bdf5d726e3b7b52d8d4fb022beebf6e6506ae739989da7dc27a8a7f6bdf2a36fefa9fdff7eab9c30f73186d19d802b3d63c878f59afe58c1166a99fefec2f260405727fd9eb2fe0039504090f58104f962a89d53513b8cdaf993da3cc47ab949f1b02ea552e0e3cb55cd9a30fbb7b215ea029d008bfa6ad744a757d30b9482a1dadf61b40c4bd186d0ac16c44c9098d6865841b40851f9193f6343b2b2bdcad62284f42aafb22199db246d9b72d368e3dcd4586b4170ac05f1bf5a100cf2b030fd4b09c03ada6b14e1e0e024392979434f9c944c14124ea8fd9e03840493daefa80552414eed779d7edf69e82dad4b6a42ac971b12f9d6b66eea66c7b889b1ad4588f5f26575fdd5c1ef626e6ab08ab2940a69e354a6bc5321659eca34a8426ac5d4c9f55077777737115117b594fe477734b730fb5d8c0fcd2eaceb6768616e50ddba23ef3d18b18841ee31a85f4c05558bc29a8d5de98049c54898f757f13d77971e2b8fb07ae842b08eae2ae80e1d42874dab1f5255fdbadf9669bd2d03bd0080ba40483c51b1ba4049c2c0bc507841161c08053ba6ba40394b809264210692e5cdc932e3b1ef4308e142087769f7157e0eefbd5d98ed8a073fce5146ba6306d21eec04942e4cab2e50122838995e172849d00d26ac0b9404888bd975819254314d33cb214914b5ffc9fe892309115c5e4a75819230a9595da02439750655121eaa876a77e43d9dc7e4a11e0cde6b818e8e8e8ece2e794b962491b3492c6142ca39ab8edb1bdf19519985aa6cdd91ca9a0d0b10aebe49df0c307dfa79c8af21971ce443e4eca353713c4db3cf0d96efe72746f80987c7f17dc36b36be6b7c6fa0b9fe1cfc94c386c3b66dba41e531cf6ebc6b362c8fe3e9a83c8e6f6969790caeacacfc8fad2bdb113d75e56faaca0aedfc693cd6990a7599a1426f66d023b0ba6c0f06ac03c7d3a05da72a8e67da751715c7d3780b2d358703c7909629bd8d1addccfac6af36e369fac6d36c98e5fb6dd01a945134b61f95cd5f85597ee5557eb519db0f96a7e9159acdf862b2bc3fb3340b0bcba6f2fcd89c33e67ca7ddcd4a6782ba3247cf2b23157e9577caafe2bf425bb371f757d9ea3e5ad9ba9bbaf2ee44441e3d4dabcc5fa1fe2a9444bbac66425647515b9e38674dfdf227dc38a767819ac0a91de7d4c6696912185e35c5bcbe1bd6988409218430bed758e4c5af2c48bb85391eac3e835b2d4a04cf8de5bd5454cc0a0953fb0d34f75ebeb5647651c411598b38326bf6d55b5d911c95ff8811485a26be6c8ae9813e8dfebd52175998f71a35d2dcfb8a826075bccf960cf5c1ad68c2c7fe3d258c1aa33ea0327aea43c2ecaf8e30fbbb9757418841986159ccfe5a022f0cfb48e1639473288c316e8df15a02b38d8858afcbda9ad1f818bdaca7f18bbe1f5be3b7c46d2bdec9765039a18a2fb041870d4fd04218aa7fe939374141c61656f045123cf0a971c6596ea9dd0c8e18a5da4038650863caba403860f818477c8762dca12184183204111874d3eec5283fca86f02bf76f0adf29e7b08efe0793601dbdd58876e79beddf0f7677f73527df939487865896256110a228b2413115b188291b38b97c00e1052111f1a29d09aa84f1f7815050d47dd6e447cbfa47f72dda4b58c78bbf40c4a7e9f81ad5dc8b5b2b6853d11ffee4cf1ad021befbde3ecc33de2e6ab78fbec8519a7bf0558f61158443432adabc85281ce5c1f7f03d88e2283f2cd994c0fcfe1c313b665858b219658166572a2d1373092dc341e879fc1cbe87e495e0c518bda8731ad5a85ed239bd44a31ae5801958a4d439bd048a092b8525807e20450cc2b0fee75b5783b93f2dc8a9bc1f2b8c29ee8ef79b462c5807c720fe7eba7557d68690c6637dfb8ff256f9a2a4a44be983cccea58bac507523fc54c923ccee6bff6a2c78d49396e152ed59f9c0ab1e3c771f1aa788ea8f4877662020747884c7ce8f9dbf78ecfcd8f98bc7ce8f9dbf788fb98c6ee802de9818ee0e926a8732febbc91f39341dba4b8175e1f3dd6debbdb73ad8be74efe5f7b117aa440abe1ebbb8985da7aee7cbba2ca6176d2198ed8a142606b34ab3911946e3e957dfa9e531c64a167cf31efdc16f3df85c665aece9a5dc047ffbaeb9a8b0bfa810d2a0426890e6e0bf949f669be0cf6deb9e904ca5e426b327267d23dfa9e5b1f5c46bdad6ea42254addb02beb54cb40b19e7e47990f1b8a6ca1eec25f86d1f5940ab5227ca0f57a1a6f6936f42fca31b5ae8d01fcd65bdbbbf6c34d9db4e3bac9eda5b9ed316d59db3c63ad530d450713fbea7dd7a96d5ba89235873d0da8329b63289a83f4e9d6e4e5b9061162a4a82886e6688e4b2f4b2fff490b87aad26c72784c961e5759a7c44d1df9742c2540ae32a2d326f8cc3498efe555bdec9f6693c307e11e22208195d9fee53bb9c377b3ae94eacaaffc95dfa82f27ffa28fcadf81ca7f2149abc3fe7aeb3158451d76d0e1b7ed777b9665599b08b8bead93ff010c5ef46543d13c2c94fa141de0ef40fb499be00302ffa25c492f975839390c1f6e7f7a79f80f8ac7f3a2783dcfc9f37954bcede93c9de7c4db2992f18be055f94490aadc6c7cb74540905e6e22e0faf36758d2889f5c8a9be0d3ef64bdb0f801fa47b86e7f6d2b5bcccea5fc50fa7036ea536292a7e3269de69698f15dfe869d52a1f56e3c2c3d7c56b23c9697b48c3fbce1a1cbc3679d5ed9627e807ffe07de11ae3e85e11f3182dfb5c17fa1edd326f834202b71294f37f8348e03edb8e2706d469a83ffff2d8fe38d740e7c235ae61f3e92510dad468d5fcd06c773a2dfd3f8e5b03d97bf013e4602f9465ae60603517af995e680d21b69991bcbc301252244c0d5da3a95c79ec671a05b6f70a12db44773f071d01bb464833679f91af4d1a01d2fc966d0ae545768115185d2235c499b8fe6e0077138d25e3608e5d67d4cf58a7268009c00db95284c6c7bea48653607ad1e5a1ede95bfd813a3c8c811a3568d0346ad1e5bc962769caaedd53bed8ff4c76bce7fb8a937d539c550588a9fa474dfcaf5b58c03f1538dcf30ffeb6b505e933f0d6ad595e728e494c69122c57228458a949f9f9f1f1a9fc98c25a8baa4aa1fc9f7d7db192b3fbfcb511d88d1af6c22e03a63833a96bf308a1469ae5a031475f4fc50848a52a94a66cea98d53a9dee91d3fd1781a746eb6dc9a7ac74fb37954b2d7da8fdeba222fb58508aefd2278d59f0852f5ede77731408c9e371170ed2fc25534bc09a91ec37a0b334727e61479183147a8eeee4a3779cca9fe1e7364a90530066c5f5a20a5fa431135209a5eb47bf57a2affdefa75082b95ade3aa01211f8374a6b90a7bfc94238dc6337e8c665d8711351bf9b6761355928b19b7ee86736fefadd380c06a5790f72b226c5fba4ac3a2a9eed33dd5905f63e31e92b4b1718fecc171e35de109710ffdcaf0c0f0b60079aa7f0a0bf8e3f3d8879de03cb9f510912a0da6d5387e2af9a92548e95bdee5fd1b65e37178ffd6a9b121e19a1abf9a056c3c0e37b40e1229de16e4864d89cb86846b5ab62e6d48b8a671b64611cd4e0a49ee51f9ec3bee813acb438a9f5ae8093da199194775bb20a7625e693157664ca5c5c4e0d3eea66252b3816f59349ea62d2b467841486d608c31b2581fe97b69b13cd46c3016fa635bdee628d769cea166f37e066d52e35768d73dd579b8879d5051fd9b0af3f5bc289af3875498dd137a42ef4956e6ed34e7ef4f2ce7fe2de4a71aef8fa7c74f2fc84dbe3cac77d2fb77aa6554debfb16899ec7df4fefda465fc9b8a96995f22638ab13c60f44ef3f0177bf21f37f9f280ef69d0296ac2873a49898c2946fd01a3fa3f9c17379cea934a1c74af007a02a7e6067d01a3a6065522c523bdffb8177be2dc94867532ac7fa17afcf19f2724f4844a151753886b1bd29c07b54c8a08e9df5f37e85a31849ab7d3329ed34fac8c2be12814cfe37194f7f850cf0b9272ce52e99f8b39d58e873a3f62c403cdf9d374a524a7652019cb2901a75814d6a030a5426110854f9af31f51f803a9a0d0874227cd39f41e3f411e37f98b5102a3babbc39eeafe3628dc813a6e7a5cacc9513158010a26e1c87831c0187a5f54ff4e564baa9c4ac965912e128995942890471967948d46461c69cee5bfd72e8dab45b93e2129e72482b1ad490d5e41f597485aa6e21ebfb68d7b767a221d7a44d587aa3f213779d7ee09b5a32016cdc1149422048b5290a8070ef53ca1a127e43acee4093d1e4755ffc7e38b9ad100a002b62f58129cc33d3c2539f01954ff656f41f5c79c87b6f8f8f2d262ba9fb48c537ed236eea24dfece5d2c4c1566bf9122cd798e07398f9fb0cddabac971eefe4778709cc7bd08e66ecf794e9a739fd29c3ff3f8e9e1b8c99f27b513a45342cd9cea0ffd3b0af351b13db8c5ec9e13f749f4ac29f0189d7af4a830ab31f04bd9fc973ef5f80e3ec6f5ba6816c61f4ac98fbd45bb8cfa681ac87f6d3d9a839334d2befa9ef4398fd120f3d6659b8f8da639d8e32a5555d5a365d8475575d59baa9480595f69319bff9ae1c575bdccb5cb9df67bd6b3b6fa75fd6af27af98f5e2f6947799acdb5f5d025b75ed73fcb22ba2e2b72952f69acbae56d37929f12d8be60bf9a0d8da76978d50ea6bec6c314f7f0a6c03e57f09f2db0078121e8494545e553f55451c01ee8c31b74d283629d66b285f76c8ff74cef296559987c849579642cc7833d411c27c24ea98d1384dacf35d81344edb8a97596870c56e631a994b4cc44d23233589e064a07b5e14e6d1b7fa38b6e6c5150d14f93120acbe8fb12d561052b706a6ad01629e08e9faa29cdd332f101b38b390e856a4aa9f9df7131dfcd6c5ba12c988a29b929e65453224ec94f8d426d3ec5ec2213b59f6b137b6af95ef9e7adf45de3a0f6772d83da2d1becc1017bb65963b3513b47bd8745cbc454cb64505a06136a397aac359b91c6412da37d6b3f9f35d6b48a49735d4794eba415aacaa968d0ea06b541e10a8529d8e327a805d1155ffc54c8850f7428429046acd262063da1c2a7278a5fcd86f434dd912bd636b646d540a1205529d5a0333e355d9afd5612b38329b8334b300584fe10a4b976944394efdab0b115c18eaa7066073b8a96f13e71919b1ae5048f56fa456531bb92566d313b986a262da1166607538d1a8212460a125598f2eac646e3a61662639b79cb2a3f8a4045738b45cbc86fec7b24d445f61dbffa2625ab7f5ac6faf93256e9fb4bcb63e5fb85ac946885da13d4626686071e4c264a6fdce860aa2b2d4c59eda4ad5ad25c3b696e33d2672a4f22912a4b95209eceb3b1c1548d075395055e8d277d963d96bd9fe6fa51915a1ea4ef7f4f5a26c84fad93da11e219eaf129826be7a90aa1506d987253ff72ada634d7d593e6ba2ae2887ea876a3846a7fd52833d422b8763045a230158519956c11a7b9fe0ea66a3fdc6276b09a52fb2174d2100bd8531b5251fb4794a5b9a2c6d13edb7654b636ae9be688d931d3a339977fa1698ebf066d91338bf9b583293983d9c15444b1748e25c0cb92f1b26464244670fccadf46e326082184468a4008e1069a73eb5dbec777bf2c19dddd3d42f1b86fe3c68defbdb7bbbb1a7d2e66468cf7f13d17e72a3a8178fc6a83313ebc582a082b5aa4b92ec6ea2310d57f206e2c449adb67f118a3f5d3ea326b6339691f5fee29fbf8734fd8c72fede9fa18b50cbb221adc7a4c52168b65765c8734b73fe3d612ffa6c6ad83b5da3660e46d486eaaf5450f11117921ca90179a88a82483d9c40aea3e27d95390910b4164032d53fdbe078a1839620412c6e1e5667433271a5fe3f777b4f9e859b66e66678c7e651bbdcad6fddc4845737424abb4981da380f83ada1eaa651732ca5050e6b1e49ab2dfcc7a3665d86f66c465492376a0a0ccb3bc63647b5f51e51fc4bb771ba2fab6dcd5ce68eb8926baeaf5d78680d9ed93d210106f6deb66344dfb7ddaaf9f4a5bb577cd467ba7f9fd3ee4cc3c7b7f4cd3308d464045e557b6d5b495154c5b59c1b4ad2502f3576e6a46e567147b1a97de44655be6af196dd24d336b5806b62f5996d160c2da6515472585d95c79f658665d8f653402da10ed55369a1e8d24893457cbb69620e6ab7c04e6ab6c37353e46ada7f1b7e84d95ef691c4e5aa2530be27e822a08f97191587f0412f2adad25888844be256fa468913583c22c3d17e3244ba5594873ed271ed6d4ef84597a219aebef0ba72ecfec98c2f4ad498b10f85d0c92ea8f40027eb5b50411bf8a9b142d35d536b52070dd14334303641f13404da0809a48524d7114e44ca9ca30052d9c218a2998810d58a46ea488c1132db4900332b4208322329cea2fb7df9ba98658f85d9e9fcbc11fb34349e5a7d99ecadd4f588cda3516dd039fe1cb20aa6daed9675976ca97e0ed21c3a9dbc2449885c8d127ab68c78c3f8d0fff1f82f80b19f2a4fa6fe0b5739c4bcb442eda87eeef5b8b0faf65eb4df51c3bfc7bf8fbf097dd3f382f5e83a7981273819ae8c2a2025617a889a0ba404df80035d153675da026762a0f8175e576489d400ad72221192afc21443c00df08f7f3903ebd1411d900fc224660858f04922a7c56b2a4c2e71c4655cddf32700c350b2115156bc3bc96404e82757067bddc22b43629dfb22ccb824940c84b220d26aa3eecfad157707ebfa53d8944fa49fa47da9ef6a3d41c6c975f96bfa2c421423c4b9a4936ccb81191fdde111f827be8b70dc13a7ac8106fc4700bac015fe52fed88d49dbf4b8fc02e34e7bada0c2f180ac6d2e2ab7a5a3d46d21ab0fcaec74ffefbebda5a7e6cbdfea65ab4fb4aa4a2dd9ce145df548eefabd9ef4a1083f6a3b9621b91a7d9609b6f10b36b69b99e1269cedd2de6ca7af8d6ff806f71fcebad235ee33604ebf0762ce0545af727892ecc8072f86c02202b0acc2e0001581e431eac6914b62f9b0266f752ab2fc9ac56523e3b61b9329b2c5cb37e82523e49c6c734ef6fcdd262bca9d6639e491a7f350ba39d1115fb0c1bb5e600ffd1267fb5d1d6e280feec7ff46752c39ea6b5aba7c66a0ab62f1d1755f8586f7c80d941c8286725153e0ad66ccb74cc827be8999e661c56823dfc1ffab4333d687c0069991833851be3c38802a5c29e36c1e728283b619e21b31fb6ec7d12d383dbf1396abf6c5b5405ffe1adce6e536148392794c9cc9cfbfc046999ed1cedbf8371dad40f299235e20293bf79e70b187c1e0b736dd83719f9b680e9347ecadc9f737771b86479b0ceecd289b4d4479b7c311b1a1f2d23df4bdabcb5fcd89a6d2dda7f20fbeab56d8617b3c587acfaf83715d28b7647eaf59846bb67fd6a17466fea458b64d5da3809d6f1eafb471f9534055d40ca7e5facb7b61e66276bc933cbfa21b807b6b1869c8597dfdba1ab9f66f358a49d11355ed66318fda139a06396615b8b03f8e5ff60eb8a720857025b7f73b3be3b59ddd48a1e71ee9c6a8ad96575d9bb158ac9f198089690990abbeebbeb38d8e9d19c2764d6bcdfb542f52f22a6fa4604a93679fbeda6ce02c6bf2f5d0c8682d9c9fa2ffddca96bae68c194da9f8d51bb1cb57f475054afba40a82815e3990b848252f7655d20d413dcabba40a832f8c2aaaaaaaaaa2a1660fc97cfb4b030377e08e1df549a0ef27c2c0c7f0f1fe0fb43e85b8bdfd41b585a18a6f5515a9dcee68aa00a722a0a706a16886aeca27c1e727bdfe24357df5eaaa8fb53ab254cfe7dfec225e32563a6619034aae465914627804cd01ed334cc3fd3b0ef1aceb06d97077f2b94c00f420821fc813ff067aba8fe9e9fbfbc2caeca51f58034e865c9327a5433319547abaf3060cc6c637d7bc04f5de30137e2a7d1ef1be1a7ec3767778752026abff490b389942fdf84c9dfbd05469f6d266809228736d48c9e6b72b29ad1e7bc1a25d9a740d6f0f2f05ea35cd39a905733da527002524df65d03b56cdbe5e179f55628c10aeece686666626238ee7faba86f09156e155d59d8c5f588393ed034034b9e921e7126a6c7a22e29b0aa7ea48490dda5c89110c229925410688932fa67cb4a5da025c0a8b22ed0125f8451d4d9b7e64357f8367b9251d8a2ee4c16e4e2e0637960bfda4b977f6919eb230c00146abf8ffdb12721cb42b2eab9568f75f6fb3eab9e621a2f873dac5809b40dc380fcd03e9eccd6c53317efdab96400ab9cd74770e3a8b21c7c1a1fa8fe3c1706be4a85212019a9eedb5a32e0162c01e509d0124050b040c90ce68cba404bf42cc103b40412497824860a66041f2d868b920e1537080141cb81c10d201628292ac30a4d11a440c1e1c90c12c20a8d118474a0f9e0002dd1d1687c7896a05e1e48093058f01a985a173678c2cd5ca90ba4844fce9c758194e05980120d84b3447d758192a842ed4a318e04e60ff9dbc6c5e51feb22def7bbd4a65f5d7377cf7a87cadfed50f7b95f162608c8092084108952a9aa5caa3f3a539bf6a831313b76c417aeb91f1dc70006fc70d17e6c7d0c87be4f4aa4a8de7c24c9b5cce8e34c0f1a1f9846e367d4fa11ad1ec78c2fa6c52a250418a083a9fb3b2c10cb595ee09c8fcd39e737e72259a6259f9f76e08f2f0bc348b834bbf4195fbcf74a2c9557ee2cbd727f59e5f2fd499224a59cb3cab89228d751845a0f1a1f1757d9656d343de2bf877087bb73cdf9e4d11476f76dcea5ee7befb1c88786957203e2bc996cee2587cb73f7eab77befbdabbba8b3d48abad4fa9eac73560e7eb5e84b9534478d34a65674e6bdf7dee6ab6245b7570c7e850e6300042c50ede71d2a1d5e525208488c5f0240dd4187babde4d8e1d2b0e363eebb75af621565a931b2ceec8f0e955bd37e7da9558fead2594a30337c11c20ac6326219f0956106c84343430ecb8065545555418f505670a465d8e6b01c84d0978310c2677f7e15ac601965405906ace0f3f3e7aaaa60054f80ed0b06a4bf27e5f3b31e68ae37056468877ad4fd8b79b8d4274e65d3bf944a3512a51d7587e4cb29889bfc9136d9a6e671587d35a39473faf71893e936040fd108b3b9315692ee4f652542b2d16b2712c44834e529acb51f3cd2326c23cdc11f8dd872d55b94b4dc8c16211d6a8581fa681abb3c2351255278352459cae4284c54115543186f8f7a61fc88f8346d13312b8b54d252c5ae133c6f7e231cad597252704a05d7f01e1117bc509f0e6ade4f252ad00acc50dfb7f67e2ba9740009219c26a23001842ea0a0021824e189255470043098c10a7152819de00a288708b579a8dda92260bbbbbb15c0f6a5933fd59118518494d1341666ff60b5eb9f95a7e90a0b13871bac60eea152d257e09ec213aafff416e14f16a65cc19ed82716f9693f46e953e7b8296779a8bcbf542271e2941cde3fa6fcf4120752063e4d546f26523a160ae327867ec77df7a5deb618ca712e33eb62b29c598db063f5331e6e4d72bea6e51b420837c6690e4973bf354e0e1b4b41316919169d96a1e144cb603b2d9341d1321a4f14b0073a813eb0bb1febc6816e1632d8024ecd0d740716d4e0e867a1c14283060b8d8d715ab359f95ed2393e4ea2e0d969ce9da851c516f8dbb23951157370b881ae1556a8a9b4985d14aa38714a1c231645a218a59fcedb794ec49d3a6bc32de62c4cd4a9fed1896213382a29a09e4e57b2891598ce44c74f2ce4dbf6624e45146dd8e8ee7f55d55de1a09d096a75836e7d373e7ebc01e3c38ec23afaab1eeabff15813c51b4fd3f106bfbff19a4de959b3b1f1344ed337681546a9df066de9ad22aa8a623f271e141591177918cdc59823638e679eb39a107799f1c5a4f1f159683c7c8c85060d1a9bf778143fee84c84dfe453f2e250827952334f47458583a712294133911d1d39154489f8ac849f5af889ca8fab7efccdeba1d549ab47cebf8a9e5fd596825b6d018c4c59ee20a6678e0c164a2f4c68d9863b9505fd9e2932b46eb21bcae1dd6d40f230d3011e0f3b230fd9392a80ba52c74cee551bdebecf8fcf4cfe4ea32b3a81373a63477923c3f3baf534205700a435e5cc18996619725e35731dc7befb99480683f1a8d7e441a8d48a311900cbbe20f0b63840993212b09bbd86a3f6272705d91acbe872a3f8a40e17b85db2342b2c655c512ba20c60cb3c1fd6ebf303398d5477ecc4f66ff53322cc3b8eb0b84a9235c77a12f157490e496d64f37d6d44fe54a5d084ba5982d60fbf2355cc34dd9aad4870c0773f20c5e15a64b0e3aecd0e1d2fd5ef37bef7139627e48c36e3784b4b11b76f0cdc50ab35b284c64033131315596c96cb2b8d09462e018dc4d17b93448d120c802487c8c9af8727342a7762e0fc80954edff1c2db3ad49377516407841480b55f03059c20d6ea660430c76a260842baa5052d3bfdabbec69c508030c8e308506315041514dffcb9e7cac2005841d3480d18530d4f4e7d8d30884b0832038b1f3c41353d4f4efd8d376a147a708085958821a5450d3df8ff9552e2e95177a802074593b0c05f31871e75233335f8fc565616666e40b640eb16b62303b596b7f5d201944517db7866957aedeabf853b0ab008e8be99fa5fe5fe7c7fc2ad92f1910acdf7fae71dad5a25b33eb455ba7777afb373add2aa59c0b936d4f3f2f7228cda28569a984c9b5f3220c66990ffcd795830c9cdadf9d48a4da9b178deab5c4bcbe63548fc1f9c9cfc071be86a784b5fd6999caa32872292dd3d34e145d08f3208ea2f65f2a9838fd3138b55947cacbad9b895b17b3751cb675ff4573724f90627c30f2a21e82b6f54c51fbb7061dd4a92a0cb3631d2672fee5b175a4bd2c8a59d81e84601d5dc1e511843d6d175ec823cc2a6affee501715b99487d3ff72fa4754ab342f6aaebbae9bbcc89d070cc3320ccb304c48ccc2644f5aeca2052ff2a221ac578286bca83de7ae63dddddd3d3303e56936cb3b7270cdb9ac0f46d2cd50d4c6504b9acb990932a47aaf7aecb3301d46e5222343674849a15e3143c403cb8346ed3772fd4ab9b0f75ddfdd882c4c63b5dba121d867db90eba7bc71c1941d1de42c81063370620229d0411bb8400628a6c8414d3f96fdcabf3e08ebb3ed08ec2deb8fb85e5ef4a606a3f2b1e7c7accbaae17cfbe66288f47ba0df48bf11ad81a22bc09859ed7648094def0e1149552dc5885e68df1ecdedb38d4b73dd5becb97a30535298b167bed790c944c09eda676679c4dadf6379bcbee28709744dfd57748fda05b36b143f9efa1e6a3653fe5466082b082bcacdcc740aeb0c42186386f17baf4300be00ef5559f53f348428c5c3f13678554de9410e140bc48354e5ed488b4056de8a38322b6961fab5d511bf8bd5faaa44596611cc0052e52d732e66f71626db73aae81ad4fecef193efb889c9d81edc493bb13ce4f7f39496892d5349591e4f67c74919b53f4a3159a887b8837c877bf029aca37ffe4ebb13f69172ce52e97fe5c6531686d7506115ab9661a2e55e18428e3294bd9f98684d5378990d71e1e8bdac7ffe7162672cf0e7fedc97a9035c0a1768d1865a9bc45fcd0271c391a27a13d448c1fc2d0fcaf4e76f817f53e1f6647355c549f9ac20d5feef8a558fbdf79a2b2dc61cb2e2678594b46b2093d92f9707acdd99ac5ea6eccc1af3d630806b1563f5b6061803a1366432df07d372cba3aabd55542fab602208b363266affd33d5ddfd5d6f1501b6edd01d624e3c65b775715f774d1a866c28674d3b73000a351d9091148b593497842aa30dbd57697b0c08917d4ce467535e9333beef1f7714ef53e2666bf6b3f46f55d31614dcfc27410f8a7a50d260b0460cdf542a0900d0317acc0842ae8fce0e0d468da11d711d8d612e4fa9608704b103e460db6b5f0d60201ecfaeb8f203df6415c3f7f6ed96fcd4888c4588f9b7ae325dc337a3e54c2461b6b9accc164ffadd1c082517bc5a8bd64387df4dd25fcc13246f91686cbc13ddc838a37b2331dfc28a036fc9796794de0bf19cbb56965268733c3ade5fa3b1799220ce5e09aebe55ee872fdfdac41a06f30bb989839b15044062c739752fa10ea721312c4ea627a8829c09e5606c6ec00f28c2efded8a79c6bded3e8a6f6d47b8eec2bcefa6b3945be90757292f292f4b563fc4c4545c643998dd7a517ba3ca36e7571461a8322d62548f48215c7f5818e64ad3eefbdcb907abee5f61049ccab48823b23260549f4481b8a9532290d5371f3459ccad03781d36002b1359a8fbaddb28582faecc65aafc5df3aed3ae17f67c943d4d437f2a925b187e8ce688f96161f8250d22c44854f961049de6b6d67d220616f55ba6636643f52dc3c1ecac2316d8eecab95fdadf048c9e67782159b01f99d010be1e5e3fa240dc7455d7f35f40fc347aecb16d889faa1a58b3a3c72e0a81686f856ac500ebab1f0d21e2a6d28c3381cde7c7268d8f61acd9f8fb313fb2ac7c37555836ed499aa6698f79b6bbbb73cbc1554d7b69b515a4c620de0f7b4132ec77067d6daa7e856e9b5468f59da3652af855cc6889d2225eedef1ca4ae74805d1f21bddefa261d01ff9cafe9536faf5af81e36e9b76813df72bea65fd2ed6df7a8e32ddd4413743712b0e6d3ee77a3ba7fb1ccb58c806bab98f3e76d594777d1c705f0c76889a50c9e6c0488d9d0f63499ee2f8cff8c3dede8e9efdd4a7566af18c5e28e1e315f88d9d7232be37ecd9694bc05d6b150ea1a569a7842428f0d2418ba02132bf43c9941174e48610a231481a1450e0f80769002da41155917806220850db5cbb28b09265ba6997b99afb65c56e8fbef7bdb5e987d0c56158c4fbad5173f5e98fd9534f097c7de8b31c6f85e695fca38b780c20e5a54d15850810a2d7e664f010c1e8c7085161c681aa925f4cf86c212076802e338d23fb5d4f7cb06430db09526c40aca4833ca2c98af2e100ca09452f5d5f7fe6d339340309042cf54758160e084dabdf81486bcaa1262c81044b2c068bfaf9e66c39fb54c7ff476f7ff2a0679efa3afbf7bdf18dcc77ffcc7a9701f5782fff8cf7bdb1c6ffc47bc97744e93214d6408218620f204ebc730dee5fa34f8a3a7e9478968a30731d8449aaf15c28710d1383ea11fc378bbbbe96e36dedecd12c6e8d6254fdb678d46ba15424d2322560c738d3e12d72cd31ec3b2ec21d41cd6eccafc5afe8510c25fe625ec2cb3770a7fe9f5248bfea03fb6a5c21f19c730bc37abea6f7ca4ddac31488e5e3753b1988aad60fed87bc906096e1dc39805466350cc02937213d29c0bd14271d0f512dd19e3356838cb8cad2bad6caeb24dfe8a74d12e42e962aabe2c5887472cb88798c2a95ac499594cc50db6e0784cfe9b9989892995384efa695be67aaceaf86aa18b83fafb8e7b621636da12032fa182341abd8af5af8a5ffd11b9afc54d6eb2aa5c7e565557d6d651976549bce41cee6161a793a804ee3565410a15cd00000020080314000028100a870443b1603c229896f10314800b8da0446e5019cab32487610c42c418630c3280102030024233325b01f53a4ac7cbfedfc17f7ffd06e08b21de97a2c717ed29f1f6ba776d42af53eaa2a3beea56baca8d79d52b563597dd5cf5d05d1dbb8656b68bc873b4f2634c44564f70ecc32720aabc04f28937740b9d2016f8488f21f9c400fd884dd4c2fb1e52cc73bab09b0acd5e49c8a99d255a6e8b9b4dd921568c8334143a1d003c7cd65730195dec5188f4218b3836a92d8d23967204453afd9de8a00de7cd23de4b79110dcb1234be4161250212f48cdc469b203fa9a25669751cf68104cba4c23cb3d05de7996583a7867203d63403d1378c57d2ba4fb5f7e88eafe1b1e404c2ca0e5deb3e0d1d70e2b393eb6a7739eebb0940b55652ec351c50fbb3620538ad0f1205909acbe684f6692399bf407726b1f6d5fca9c77b5f82d3e81bf2fdc1cd41d5e818dbb762f63b33a44865f906ac107c7c659d6faa654885658206b931ddbddd990f007407e12662aca74725295583b5cbde368a1ddb4503c8d98d2ddace525fcc7651ca4f1a25bb1de1dcba09c22671baac4c0f50fc74b31ffcc48c3f7546e600a311b2ce55bbccd7223b48a2ab74da39f2054cfbec50cd35d568c1d8b5282d1def28b0f616bd028137f28e9fa9a39e7fb0a33a79392334d19af4b575cdeacaee381057b24f6877093ce6b4c61dcf515233bb814e53f20fb49a5d84414700ade7c77216821091bdc05c2e483a7e530669b407783ef2070d14ac46eba7e616c9312515590ef96d874f3116e7b1211cf6cddd20e83e791f02831175b556078e58ea18e9270434ca074917fe91d11948bcc7ead40628381813a0126e1e87b982b0ccffb9df8f26f485b3122a06ddbaca324e03bf4c98e414821e7789e14a7070b01d985f689d66e28f504756e4f7cb23f439012735383bbc4a2a90119766e8f28add49c18d4517a2876b86032f8dee835f58d13469c8a17d3637bb4df3ca498e87619cd307457042d96f24a29c1109e0cdfe57d117a49de718d60495beafecc59d745bb6ac62fda27f9c11d8fd9c7ce8d05306d2d8f82bf64af4775e38b6606636cc95b8802bb6cefca0e2808cbf6b397ca3f8b88b3ad716c10aba86565fcd088410af3f7f8f8e38f218c5283a2582ae06391a8f806cbb542647eaa82c5d8f9fd48f83987bd0e404425d1d70e64e405cf631a961a8e4166ffc6dd928374350cd3309b7dbb5b466df2f5922190d6fcc17fc25c5a87bfe899c6ba078ef3eef0880130febd0d0705285a9b5e7646251765bfd1f274ce883370f13a641a5518a9234d368a09e6a919b94100d3c57c58d446960c7f1879fff2812e8e5b98601b11662369b81847a0313baed4fbaa6226ffac0ca8c0666121cb09e0d63aec35858f0a5fde93f32400703bc3130d69fc2beff8b6dd83bb44fcbfac9d0d76403b1e793ecc098cf9929d7454ac3c1fe154f743cd8f6f27a37eb65b067b44c17b367f5e701423be7db4dbca8e3b118d860a61ae677f034a1eec0439213c063e4516aab7eb07f901ee94ee0102c4b95afe7c21da94135360910e3c4d04f8e99c16988da0467c96a066f1f75c0f36c8500442af2ea8d76276ce28ded23e94ed45a109304d28847f1cab2088f225a302652375aec901c3a4189f5c702bdc0309a1c56446eaf8106144a4e82e8bf5ae8a58823ce5f9734db2d4d2b02657792557a6190660854643912c755213105b73d614323bd1418feedd9f4b611cb8a58cc927aed22472b36d6f2050ed2c83605c6997b04e7af336349b4ef7c2ef99d8beaea54165fbdeed68bfdaa9a7b807ece3cdb26ecfeae07944ab7f5c0ce6109476ac14cae425d8bc420f64f1e33dfc1eaf0af6abffa5932434fc5f8532ae761002e7a46d9d136b461eb6a0db5c84f1776d589163969a301d25b642494e0bbde5b2c2f4b7f026d2d53cd6b2591316c7679edbf5fc8170978d1ac34042f4570a6cd4bb1685218540c8d52454b70f38f4a8bcb6a808b5958b01addd84014817c1359fda80631a1b8cfc88687715603fcd9a74bc472529a4e9de34f8f4c65cd1783bd95f6a5d5dff299f7f947f5a6d04f48ff11feca0cc7552cd051a6939c11f2d833b14bc70a33935db1ecc41766baf690ecf0fe44b39030c49405076cfeb9329bc65c52915cc2110014f2b2635a13662bb997db32c8269e8ec293ef8fe24ca983e60c67eea6035a9e77e9617223d4fc02870ec0ecf87b14f38363dc9f2221470a29ac41d08aca0f656e0d64c80f5cb4f83e15168493a10716289a33eee1b88b2f18bdff083c001626a54fbd46888db2806516c725a53ab0804fd4d394edb610de823d9d65eb8eaa18d27a87283330842b56ac6a82a9eeff92991be4a89318dc19fb40689e56c61dc57ebe4c31efa9878e2d3c5861b43774c29a9b72d1f92e6bd8fd6b64df2f69b8c65bcc8226b436659a14ccce33920ee992337968014ae7678cf05e14b3bef54192ed03f178b919a698929d7d9b570faaa21f1cec0a28af85880b677018c5d9e67426acd8ee6dfc74cebdb18af66b6cd5c9f1a165ccced0cc4a44c96515688819cabed3e00d2b2329b05c024080c817d88b567cd578c6ec8b2d00b610144708a1d615ffc0348fa4d7147ba94b3127f8a6c831d9b8a56edb820969e05d0020a565af313ec14883f7c28ef783c433e29171103b84c31b37a0f4eb341d9e6b08d05ad12247221e02a54a1245b2cc6603a67152929a181812ec271531870a5a6c5874ce1f372bbc08b48d68b5caa290fb91866f4dbb385106317693870d3f2b6dad2c13c3e3b69ac37049a9305fdf0efda36608e76ce347bde26fd124db9ee2eb11e3dfb2d415b7bc6481960b6dba0bb4591af0143343f04660d8369657067311805d7b4854e93148343ace6f960e19fea01608d1d34589108bfea41e52fcde6e629102070db63aabb0a0d2d70c605e2d916f9794000fa84caaf4dcaf2354c1ad7dc5dfb19857956c4637fa09f5487f883e61de067e8c726eba507523b3111c85bb9dc4833d83df623dba59bda1335c127c8ada3af8f9d57981c441ef1484c6fd2013931635c2eac29d02d37db514b68c4e674c98f4a488290f9873d28d5fd811c1523f8576a0663ce06cc6c8396046f6e8e496f4efb6a5a4373feade9af595263fb50d070a0e0bfc68f1080da210ae68444c4a16c050cbf6e7f40172089110c5d69c66cd00004fdad47eac9d8534d186703160629374379e34f18b15a7bee08065fd68f541be629bc1aed046147223cb095c2475cf388334021f85c9868f1191756f72c602395e41d6d6b462d9301aea884d39859bccfad7a6942034e14d74cb517ee3d73bdf2e7c4e5d2ebcfb006370eda2c4310bff83e53dc3356fc49802898a3c907ccae277057c141a995ad3c0b90ea4369dfc72ccbe88f0b41e3c40549f2b3857558019a6a11b6afdd011c57ad54654141d1e9520534d8dafc4a6c3763d26850634d68678654385f513ef0c306813e2e4b668e6e7b83341baf330869e9a43350d3a54d6f2d084dafaf8b210135bf6eda1e5de0b0097c57908374814332b979673dbbbbc1700a04417c7f2e87748cb89601e07ed8f04fcce156c6e35fa9f2e81bacff2bfde698282fafa55ee0ff4ff595edcffe76d1686e11af67712dc72de9c111533caa7af8d1830cae982dfaa43ea79aa197a759b5a548ee1651a7ec43663ada75de371ea2ccf984b89d494529d1ae5ea7582f8e11baa6db9864a59404a6eae7786a5ea4b03deea4fcdeacdef14e40db6bbb74d1e29daa742bc635642930a9c09b6a5dc88fbd4a1fe21cebcefe0d7a836b01db0ea1dc510121d3bc538832e1937e16d25693941f9bd9dfacee272fabc83334ca2ab05710a9ab1135a2b08af512f6a7945d28ac202bdce4b45213d1c669ae031c97dab2a65a645051554698b22638ff5c189bc1411e1002798f3de75781b505b451a5748ab6a2c5f68d04719412d2b2d6b8efc72014696064a22d6deb7e8dee2ef828aecd1bcef1c0101f87a0300be106645056c96d484a0dfb78bd98fce2ca4b30b93c60c47140e5f9d0688a3871cd3196057477078d04b7fafccf56f30d755410e0151e1b764d1cd7a2ebcb42f7eca4e996b90f68e5437bf5e158753a9ae902859b30956f544933e0a75afca9a01cbf36980262bd0abace65d7092693d0958f9279fe20dd8cd6930153da1e0ce73b2be8c45b78aa41382a9446403084a61943bc630564f32d49810fd27a4fd9fb35f7253e6490e8d31afb826eeafac440625223e100bdc04fbb0154eab6ebf1c01da695521cd55f7583408fbada0beaef7c04374a78f53620ce00c03f4ad16934da9a8987af514ee02169ffc9ed15b890eec534a2f31580075855ed08ebab491ab82793a9d5b7ac11ca1f4fbeac3982291a860307236b47c9bd269aead6cb2b79a8cb4128105850f9407414a437aa1c295e0e1189bbe0ba870e0125011e99e7caf1eb45c3578067ab671a8a0333b7754039ddebeb7e64dbf2d3d03152ec0734675397a28a56bb8644828c206abde3cc1404fa14b0e544b2305c66add98e3f3561194c92f27a80a9d00730cf37a1c367044cca76195bea7789c65e3923a5c194921045960375ca315ebc8aa8c7ff69995c4f2b392335c19784e9d7b93b62fc19961c0467e37cb0eda2e8aed5296acc066d1426b3d89cb7f138e978846d16a98129672aba97765f835eedaefce4653b9120248caa76548b027e66dc27c73eb6f3e5605539105c876ba20a27110e9b88db8489c6d77cf482d3883e941c56b10935f20ada4f407cbc9ab310e2b064a6b162477be9c49705d2cc7824b500474e511a8f887cd6aa8ef819b30931be2feb187b0f2e26461ba0d6fee2183a0f52a793f7d04ab7d7075ef885ccb8c12d818264e00aa4191ac13e51947442f2cf88c28c85c10d2c24588c45d23eab5133ecfb72fb664756c1813f69896931c25595368352001d5d2ec0916808700cdf382b6f05d2f4ec919a4379513cb0fe0c2ed3eca75f6e4d0e3957d0726b9504a1d599e7051304385d1ac4a05eb65580d70010dcd6f1f06035a181404dc66ac95e74f91a916461716b940030446241cc48721d6f21d90e564705104065c5b1ab7edcb9cee5254f3395516ebfda72881e88e6ddd8431413334a8d1c2f262bf25c82dfa0cc9cea3bf46cdfb9ce6b9ebab047b2402230359afb2c92b7d43fb925169dc41987e829265052704cfcc8be9d42e6f5c48f4df532c2e1ed26b0aade24684bd23e1ff2559e09689c40224ffd3481a083d0dd6b7f66c25f1ba803f5b07225f25f4a067226f87ebe8d15aab6c0dca4831d81291598efa7dc889e45abe459d8eaf028ac92e83ac8cb7c4ec208f5e5da3d01d748ec6698b328a87d33afedc9d58b79dc0ee111d7e4730a78707a49b4763cb73ea1151ce4ea053c38f51b810d19c183b3e37e5bd014ffb5dd0c55671d39ffbde1b477c03694f1e7e6583b95a1d82d4279bfe9db8932d9317c8eb9e481de6f3746a09531bd7f8409cdc71939d234eb836e3be3a9c0c95e32ba8c25355f9e0b487d8271e88af938b7bb3bf8e4034cb896f60817086cce8c42f5f891028e19604a5235b200f40c6ddc83ef27d7c2f0903f2ad0c0de85e23e061850a5c91bfe82b00030b3b7bd5b6dbe81164b57e5cacc6c7a4b8f639b214ea4806a6964b789df8c5e4e27224dee043c246bf051f3cd534795430e713751c52f682c7eb8c7941e2400802ede38c4c0f17687ff19901a04439e43d4f0b866f0b13eba77c94e2406a767e0487ab583c2e463e5fc1547018a539aacd8746650f519fe23c9669115063ac85b80dd8c4736336a1fd3e81f709730d3437445b989849a245039756a79736a11754081ec274036df4cf213c86790a68115e332735c02de3426e39837da9a199d86b5ffed9276315df0f0921a85246e9343ac3485728056c660ea301097989a0885f9bae055bc837a49a5c69d6ef38f20c7177b3726126aed7298b5d301b6e72982d9019a069aa081cf8745489a3a6638fe75a6ae33d0f870bae5ef1a706a0a0910a4df3bf403078e2968274671329781ca545fbf74df1a7a2f279690e96090c94cdb42bc915820f9dc1dd7aee0b45adeae6d5ade935cf36b035def28d9fb2268dc233e8d7d6ead989f1a7d47f43fc0d99fdde5d4e0b08ca650e1f034e236fc61d232b7cc480c7a55d1d0b508bf6303a386ca57180bd48a412abe55c4c854300c01feb7eeb4284f1d84b1530b60ab6e8ee861707ee8fb30a0b3abf88bed63be27c8ac57729d3033673b9b9095586f13881744bccfbf03271e4c491e8db7e88b88b5d11a0e668765914124d129db41c058b14e1ab2eb8fa82d9ba02d3429b57db9b227be8019f1e9faa55d6295f25f1fab15305614b92ffdfd0c68331109e5dddaedd0714971985dfb2904c5a9ff2e268357d0e0a5b551d55a54a621ea5db20d437d02749178275f2dfca690ee517e48245dd72d39f4fd96147578fc03ceac2693d0c20b4994150e4eda1b017820a41086a6be5640ca04dc5a7af21de2fe2f8520908d0b88dd2dc7a6cf54317c7963bae5540f592f16b0736792b9657659f48de2dcb796fa86dcbbe3b076ac4c2a168044ce8da8d22badad24a5b3a33fe14fb59e80a8305358a0dfbfcf35e1f3b82a7d86772b38b7675e3b48d7e5e88e106cfcdd3367c2f254b04b08d6ddbdd578b8b306254ec5b659373f2709b5217c8c54704ca2f6937b6cc03ccc3582c1e6283411af9ba17e56bf4ac28b6ae053734a374ff97f1a5a065f6985d9fb65a8bebbe6c75716803b8436e35642b895e94b6cbae1a7d5b139a54c3d390196e4da30d262c094cd427a23860ad2c573ac3bcdd2b6562e33e4d21a0ad4295e933eec9fc310612e25b5dcce2450c332b084bfeaa086d4f66977920cbd00eb2f4387ecf5bed79cb4860f7d91c504db41fd4f2b96997dc503ce1fbcaeedc2ac94cf1d36ac6698e73149a5d558b715e8cb80ff0c4a28aa84725595045856d3a4d9e201c46c021b5996e45bf22ef0b4e3124e270a6a6e3fc980dddab87c8ea8d7feaf5e090d07efccdfbd1c8ef4ff94ec758f67c70a4f499008438b5e19a0d4ea4cf20c6748e119f6104121d9924463071d2bbc616ec582da5f5df26f91f7e355ac84287e45644af2813da57d4e1025eea47ccce360cfb5d366249056a4a619f61e2ea933eb5bcda277405ddf90ee244649e09029fc24214fc2eb8e0f8df86ac9191df321556062c47a97b24234bf3ce1983511d6afeb2691e1678c4a96680aa80bab8d99be27d9c63961f02b95713709a401f2c86b9fecaf93225ac937e5f0e443aa0848a251dba97268a160a56aa1b183e75396803d968f04c5573e468c51d85f405cbbcd812ed08f27c10d992553db50488425adce0286d949b1ca211b5aa882ba093f6e9ee45d0a859c4eecabee867d62c0b48cfbc55ff4ef71d9d203e4f3b556e30405af5da328e04513c1e0b946e9f143a40bf05d0313aff5859e8a4e9621b4efd7923cb8bfbb65827744bccac591ae892b5dfc96d5232376159ba48d13f72a8b9090c721d7fae96d67152645000310869b92e23b051902d212e6517ab0ae8edfe7d991adab9f74bae533f5fef8790021030aea5c6fcee308c26e412e84f42dcad84f2c34f1a14368b03fbdcaa998d156ca6b21fce25a8a7202ee868c9bc8501c833df08d1f909bd23193e9ba7bda20813b87af68b59b6457e4d3440b833a044467e5f640fd6c339d6f274f170cacee96bb72bb42d2f70326c9434595bc752f9d8a24810d42d541922a7b58cc92f74d2ea55a06ece7e425a0b49442776c15a2203c489d651449e24f0bf70aade3cf56fd49ac895c9fed5bd565bb66ff94dde4756aa976f1fd95066a95f375d78f442de752a352c27ef3b9e86ff305d842b11a6df193311533854dfa4ba567af81ab369fa63f84f6a45b671651929056840d410883f2b325b6341c40d9c8df5a52e6f9a7fd0873efaf40917280804b8c99d7d376a646bc3a7deab563eba54c1660aa6d857ecb6daa62a1b826743507a36942b8e34442bd2d0e891849a1b30d09352044b8889ca4dbf7bb25b4210b148eeb01019a1684493b9541d05a0f7920f36a9a63655d4a59aba545313a8d2542f9cb88b048b5b4ea0359d0f02dbf1eda5044f35cdccfd9964d3a5609545b185045de3f05d3c85b238c2fb60b195fcc7aa643553200d470a0966338f0154c247b28053cc317db810ef0558d1560efe3194fc8d20b6350390a814502d2a2181f4996db3fcc16c16874cdd25d7cb8b4da3cf3753f1e8e436127f91216f2b5820ff4e74a987c559056282da64c26b331e6d032c11a490dd11295a0cb7bfba448daa93a5fcd2beaf04c3f4f6b0b9eda443c40a797a8c9fd0c3f0156e774ea797b4993ae82dc15cbdbf6b7e47e2a443775e6889b5df1298aff7575d770ff278786a205faa0ea0362b6036986f7fd5eeb2ac5fea58c27a855313dbefd24bf5d7dbb3fe46c9338e139de7897b4a60a49edfb52ff5a9f88f4fa103781606ae5d89f1f6afd7a352600cc3c128d0ffc6206a2b317b83e68cdd32805c804d3fa82eee2efcb0e7d72ffd22042e466ad3f767e83cbe31f4c6474260568d66eb132ea155e192ea745bcdc2cef7a3a17a0b096f0cfac992e81cacc11dac4422e94b4c0d235ac6906b3918ef3d913db8931f00dac9d10983d2ca665e340a07ab0b9c243b41e6fc4443e364dc5bd04f04f19482572c6b501f667b11435e1d3a81c69d86ef8203e0f9d2d8fc54d74bf9b6ccd191ad128177dc1cce691da8c1de90c86cafb2ce3ce946fb0363143dd60748b4e27760ea4f12d1b0f85461ce68f6998a9e1b2b3a7f4da7bd579de35640a5445e3715330ff51ac0a4de0a5c4db6625ab81de3fdc3d97b0b0a05c239cc001cd21d34949bd4a6deb75ecd40014ee455ec0788d6daa8b601af2cc7157dcb4f426166de2804b90f68c5012c1f774bc78767332cc91f303ea192f5ccaffecf3af43e3a6274c5c2f1f9d68ab6c2635f6f93fcf0fae85eb84a0d4c923801fc4818017538690325f57f1e445b47cab605bdfd2d80491bd6908d9abef53de73cbaab9ae0e834b86a35eb4f9aca187822d1796f4bcf74852378436b5267edaf11b390f6ea23c458fc24e698520e9c7769265d255891f6ddb5beafa419b123510511eda2a44e28d4bc883486104e768a3ebd496892e963c0202ee2aed7f32ec6bfbe8c605c41c44243fd96627664b991956673f5c295bb5cdbe5e2d9ce8a340a5b2c3e23965929ae3a04f39a4abe7dceb414b8e4eda73bc4e159146b7c1bbef3389479d7e303182186b8923b04d0874063ad3785f9626f6fc82633758353823ef8b406cd41bea5c427190a1e82718a26364ebd76a494d8e3b4c2b4d0592b2dc428358f8239a5f198644e2192d30f8043c784a4e4be7dd4a974fd66a661ffa44cb028cf3da5f850abd6a3684ea1c2aea1ab9b455e14409c99432d04bbe362c74659f08eb16d783a0af38e0f5b725e4959772d81d6a32c4f9f3f0623b039340f40fbc0cc0ed5f30c10cf8b1e90b3ef90f478b776df51c6877197bf0131ae6d582cbbc42f82e8b56ff8ced655805666bce98c05c0cee087ed00448c8e562689f799c3160ca47f6c7d4794b86519059c2ea228529105ec38f946bcce7f11a2ed950519c4c31cbf519c8b14419dfcbad8d3d9642b93d07f018b81824ccb582e56e749cbc805baa914df876288315c42347e03f93a3388bf56eb4f0979a364a33b64dabe024b5c91639d85e900855106bbf34a745a34df59a8c271c562d171db239d27df91c2b61216e6a0a36b7e317acb7b5a41859e9c36bc690551d408c3785d38dd78ee0f715254811dfcae8b21803104e8eace5e8b2a70d98be0c8eb462167379797a5faa1f6cda37f46458930df630a38df8755df88e782f0bc9206c5abb748cb74f072edf3883feb1e88656f9ca7dbd06d7238e224fd7dd09963413842830b013a881b0e6c3c723456d204eafed878dedebf2566e24ba331ea65441af5045dc2756fc171d40f15212f7566d91101fa5ede8b970dc5b8bef222976c2f836d6ad96cd85468c76b25f8c4cda3d101e345f0a35407b01eae55a1152e99522f5bc6593a24eacffc9a0ec4457c1e6cd6a084a4e3a1d0f4976b0da7d6d30b8aa68207e53c1ea1941f0583b07493c00420805d4b1beed53c8ec00bd3535f0a93131f970254d684008e01900e5a85c257b5ab33e2c8393bfefebd027e2ca6c7c4dfd06790bd5719e74c3590ce2bf5538a40f44bbeb1bc431421d0fa22947f71d42e5228eb8eadf4d33b2c704177003f741beacd456d06e6164650d130ebef19221a231c80c198510f72977e32d12c24fbd67c87a883a88a57a08252d8cde3446440783b149a4249b8675817ec1a7fd1d39769e449016b186245164eb40361d2da63992ebb169f80863dd425bb7039a57c0bfa9bd59749fe299f47604c56e7d20a47557b87ade10fc44bfe626993de889836183a6c1f65a2e76e39be0b11dab0294a5d991213174a39abb89145e88ec2b5883065b3c693d0b00b8df19fd8fc2de389a3f1e0d0c47ae2a0b27c8cee59ab5ff5554da9cbe8a5e930a69fb09b9324e46f3c2c38f1a20fd539a3f9e2f5b37d5c9cc59f4f06626b45f3b6a9210824d0f62af11d00a09fcdf903d05fec7eefa0f060b88b1e00057b1356c188c8e38e7777e8424097de08c617d9d345113516ca02bde879004911b958d9e8bb4c1e098b23a1954bb667aa5ed15ad1e87eb2ffc8ad7fda9c5af6831d68ba1f019652828b8a40967410bbdf6295b6779f7b2ca42ace8e54550414f7506480a51c5d1100bec3cf3d67bc681118306e42d1733aabf0dea7cf8f9690317f65efd999f78d9bace03c013534a604b9ac77ff7fc5de4daeb98ceb997b5c3c08343e73b3ff79587d38e58e23cb9c85eda59e5ba59fd6f318f668a9d0c7231d08ee021309d1a62b74a31bdbbf6e2f856609e1dcba5ef784852e3653073a2e177ee3647d81d937cf4992daebfcf7f3cb2f8025ec22595918043c8224b7db59af71159a3575b234a7a368c06934006ebc4bb810121914e023aa74f95291a64d0384cffe01caaf3b58b32b55430b3baea37a02f24fc1eb1020f6e37ba9c21300d1daf9b668e709c03507118da914e4844186e34801825afd007aff28162a6d49c9e970395dd9d8631d370e2de6e6841200de81402a135f28591043424fb83551c8a6b46efe3f3c1435cc0bfa11a7f855b326018f5f5d426b96ffbd07a0b5b893e2c6a0f8579868d99709d108f212c8e1932c36eeaba5f39ab4e8a94f93368a8b7bbee5f95d3e57df689a7143679431f721ea9fb2e2a7be6112a441eb4fab3750804cf0f9ee8d4c046e13e414310eae890b108d4426c5e99fe5376080ac2cf52e746c1b5fc967761370a79a12e43684366189e5e87c68d7bd7d370fa9e646e74168d37869be895d007294b9bd6546889c674a32a6ea190a06d66f545e392f4570ec9c6775145ada35e0aa3a83fdac91e5be0df1052149aad59c5b64f0777f73df5ec87b3b7f20e0604142dbd9e25ab28a3cde0a0cc1dc101d70b74779d1c3c2ac967873dd675d26aeea05dc39af0ae8467386edc14daa43531c22c3366695972e370e6ab7bfa7e4c16e21400c0ceb1a1adbb7aefc25fded079eed1e3405fa747c29e1d95d5c8450682478d6fb485a1ad62bc72d1b52db1e41ecfc6092a8002d2d86eb644b8bf0b79197fc55584e682954a8c3263984841ef0b74770f924a85145dbfc5cfcc2694f5ae67dc93054166f68024f171d8757f01d54901626d728803bddb284a10a127ed778a57d54cbf13bcd3be176d12c1e5a6c6dc6c510e37003b6092343a8d2c372a045ae10221085fe629a20b05da336c23bc1715de4601b3b9e44ea2421a12f008c1a53841c22eb58d022012d430ffecf0ac1407d43dfd84bf3979179d73dd500fcb306e127961a508d2226860f3ab2a733cb755e76262e86118b1c63871bd70324e02b810933afe1e162fe61703ad621d17133e4d1e563914a33a1bc2f3cd6d25409f934a45358a97b71cf2c131ac6610f6b7a8e854eba3924a0eedbb07719d5ae3df2fda86c084e6241369a3c3029f7a19d929f7dc2676fca18c16ec7e825766cc301c14297d05e401a0903d351b20c04a914fe4000ceb85fb3b9a602f170b8cf2881ecfd8fc40271a51b67254150b9f4f1749f7bfb35efa093aaa0afb0a0d006259db3c05d26e6f4c945c1e8893b5b3ce095ee0b64384f2b30f16bf113f0533ea8f33532f7d5ff43d607019891c1a2d89710f5ec7859a3bb606e58b7ca7000393fc3747db0f8dd479253b088917f51eb9378f1214ff691233d186c5c2d5810903616590dc6bf5764b53f09c87983b171c90cb773d1ca7f478aea2d3275d70dd8bc31980d2fd4ccb178b05dd47a4907b10ec7e1c4c596e84ff414b40b2b2699a1c9384b1cfb6b491be3cc9fd93618ab2ac8dc431c54bee6e0343a215995ae085489593b4922b4411d2c86251bab98739d73c5838422a0e6a630226faefa260aba30dc15f3c816483c546b23624c6a39a0eb628f93e892ae9d5d0c5d2c824bc4c3571050c4615246aa03f9082cf2bf628f7a1079e603a0c696184203f670b291b92be8f7e64d73dcfbbd0d3d6c033f0f6242d16c751c1cd297e73dc66c5fa4cff4697a9347f5fe09774c745b0b2cd4c770715431f72337a4ad4079a7e5d87006a6eaa6338a161515f3eb3fb3a3ed76c40d9ee8bedc210d5ae072edf2f0235320de21b985e4848a1b8fb1b812d8f8952bcc8bab8a15356c7108f2e855e473ab60ba507990b0f168982861c2b45a5ec15d3684cc39e3918780d7c1892f818598daf3c05191decb8e070f5246143c2e4035390b2309eb38e953f7035f64fe6c8681f0726f73a415200c4399f8e7a26281844d56bf44b5c66ef321607899571065a808ef71825d965b8cab7604396b58b5a9c0a3b15220b5f91b98dd9413281afe6a21c47405058c4450ebea8197f3ca85cda6e8d28de6dfc052e5760c3c86102b8c5daa7aeae4e824c951cf0edd4b9f9557e33032e1cb4bcd7edbec7aa8d4e872d8d2eaef18902326adb7167e8366d8578235f1b55570eef6a611ac8f3bc1b2a712580fac67aee925a749a1686389205020a33bcec42fd6847da7e3cfbb828700d12dccac19769ff93b1b6766891287c671329ddac288550513ff80c6f92435fdf74d649b82624b0e1c79b6eed26f6213204abb6d5f3f728905c264d315345977b8796c22ec81a21088682d2da95e2253a5c5af1b5ef6318ad050c3e34a1cdeba5761678bcf5adc5f3287372db59938313db801cc16d2bc54c0fbada0ab84339c74d43d8994f95e611b2f570be524dfebdc94747caa429a60d3a42ba27892a21edc7a85deaa30490698104db05bf83a33f3e2de469efe4aa80208f0b0dc56e6f550f1f266bb7cedbcdf02bb6454132395a9501239ce04c7f19dfbaecb9bd783e9c8f09637e9a80703e547deb44cb7bc610e263e04faa6c163b497a2a6f36b9108907ec879968dd1463d2b7f3c114ff5e687e06c9fc099374cb4fc206fc6f1c7dce06aed760acbaefe92e3f3b1c9beaac0ce628e478d560e7ff91ade26109ce31969c245d0501422dc30406681902e28b4d31de905fd581ff604ddde74901de55d21f686da3903cceb53ff0db30d5e6219d8214ae12355c2715f4f7f14b105251f10d7250ca296b7979a00993dda4599d327261d0ea7d786eedbaa6ae8860a7c5e355e5985b912b55b5be797ced22b5737ee2aa869400684479a21ed74f81b5c4e5b359c07dbaae8647b5b884f98091e4050e59eb83600fc8e22cc5edfb0017c19a1e63980493b6044103d11ee9ed7bf8a4c1a1f78fadf185b00b1d3f14d78da06aa027892b0236732736401ccc363688acd9a61d3b7726016b04c1a84cc4a0ed2ce52a9975ca99ac91d3550f9c184b38e6e629aeadc8919aeed5f4d5788ebbb122c705572cf01db18d595f601000ad136d0d2b83335f3bd504e062ddfc7ad572fe25f8ea0bb969812fa1a61f9ce2a7d57215e1ff05cf8617d5b8315c3871f656395e2c6c3523ca8af165f7f1e7305ef8a8131be0eba8451403afb6f33a5c0a1f50ca413e852c0e1aaadd0ebe3bdc30b426caa5f0a8baf4cb8f83a73e41b8e48ec3b1c3c55bd58c4f0fae30a50c92e8f21583f626d5f8e7e4cb4024a8ec3923c85eb48875b38533756fc5350179d305d4dc1e0b723f5016d164e4cdb409e2643df432a942fbcb49e729f82b724891d2da4e9af218ae4ccf8dc776af97a2e41db4f964f50f64338793f7515a01660eb631d1e685c6a4dc1cb0656ea5c6132af42db9ef622f52355343e9d4a993ace7284176082ee4757a90e86ae6fcae379a3b8b998b5dd68bbea6bd5e9d95089e71edacd74edd756fde7c8d0b7dee45ae1ffe8ef84809a6388087fb3e72090a8e2a9322677a65fd00d4bf382895aac3fcc726e666a05d8d35f29855561a3d3309b9b65339956f8c0ff5f18a5233e8357ebdfd9a048bc269307c3e1059291ecc0a1d556313a8cd01dd766b3af85301328ea3becef26e19d450f38dc4a69a0da6940edecb3fcf417f6d90388cd4cba2c8433feeef8660e344e41657f231d0485ddf3cad2580b07fb28685dd60e83fbe5d7bf25e0cc4ca8d055fe4ed8dcbf34dad293c303d11741d750c11e6ffc40def040198e8ff8e1f1fa3118516749ef543bbaf121d105c06889c7f32ae80c14089d45a5a708104a8848ec4e30aea3ad501532221687bacae76038bc009fa2994258aade6fa335a1f186b5e81bee3b9ba732639f8b5c8f6c190c7aa50410ce5e44bde534f6e5dc1dd82b538151e40335de7c0007389611b2ea835c2527125d9a19e89f5135394e89267f317d716adb621f69f5b2d922de55375707b379f79b35093c5dd51830b39d3726d214a7ee1b4e422e3926be18ae59d2ec939c201a7ed186cba2b98b6a9213e207d4d8293dc344569d10e49e7a712c2983f1d163481da1c4576a6e0d071c5b138fa624e91d35cc0bcc7cbeeb168e111902cc8e8ded4745c35bd5f20466c11ef98c2a1381783a19849ac769f6b7d56996c38ec57478e0fa4588ccce5dea24e5b0c8c2cb7f5e2a4385491419c31fdad65cfb34ffea0ec421f92feac9f958ad68080fa30559ec7353d29a4d65be0ae9d288ce8742aa0b5192c99cc6aa9e21d6da103cf1556d0e000653a6912e15eaeb17159e9782bd11fb63a93f6cfd47444e086ff65d7e069ecb8ee83be9a30f6fbf7a7a557ed642b5440a67dc3506fc123da8ee346392a89bf92e24f4b5dc26893a4c5649215ffa3cc9d10f4a9534b289cf931a79246e51130d8a35c84e7defdfe0c7494c7e69ac0e7c9cd4e867292163ff61d2ab0b622d7ac234d749410e663231429f42f454925a753774aa119363320b7377f8e9314f2670ec049dbcd371e4ee8a7802fd41510f0e09a2b61d272871758d6d9da4338b4c511b3bb6229db26ddca8d5bba70682aececbe6ba8d16ab0a208635b966eda5e148dceb770fe9e972ae5db5a6b57c39f33bed99cfb1c464a6c040176e69e0e90b77eb50467b73261ba9f6e5899edef7b8d31e7ebba21994bc950527972128a6b6e5a3923c0c040fd5caf2f3d08593104c09c817cb28d1cb682d1796b9dca385d8622b6a2b2fbb231e5d72a3b96bb42649b05c930ae264d9f425c6eb0586d375000f3bbb3b5087025c24c0bb2c67ef884988133ccbce9ac476ae5a150465e418f312ac5f2f090ceadb8e898e9d8e366dbe6a540e48b94939e7f903d338f54483f1a710191a023d18d25406e1937d3927fa226644509d4f3843233f0dbaf140c49f27a83e50213c4983a19d41956c111ac8edcd59dbd743124f255298ad8ad0efd325744b7e0b1ca22e83a5a520e79f2506da7ac0afc9f9337c18dcea673334328df45e2db6e9de9a123c6e7b2d276b50f3ae43751895607942d49b38e7047b19e2e12eefe9d53d7249fe477488553715379747a21fa13fbcb2892d89f6f31fa45d171fb873a6bd36a7584cd3203b9a9d491c3d53e4cf4c04bc49b9a5b7eccd9d486976d9ab1584827f43e4d97ed59bf581325520fc40f9d697f4d2633e3eccf2d0cbdc280c71afe26dbc5beaa1cd325589106fa15b06aa54dd87d18e71e12409d60954e76f56d21e962c10b5255393656b5e46a50a2a5742d88fdf6013a5bfd38ba966b37144dac315ca7f7297f8cd44d7f50a5a3ca41553fb8ae2f9324a4f9180ac4606a4fd71c74b9ddae51427489b4d976bf34d8a1abcfc66bdfc62189fe4f5a290796978b4fb96aefd6e80f345dd8532010eb965618850b5e883f54252c500e4c1133d31d0a8167d1a2b26da5065a92da613bcb9295bfd4d5d86640216b4bedade11512042b729bd8e223da941a318c76966ca58462e9e0766ffaaeb897abbabe690d0d3fcda4bdd20a7ca7b1d3ed8213f49df5990928c3fd7b8f007c84b073ef0a16803c53c7513551a29ea93fdb0774668f636ece9015a86062a7ed1694f5864c5b58df6ba34b60032ca8f7d00799ed1d11d7a079a99fcab13403613cf0f51e71f232cb5b1750c496be274ca0678f53f724330adee491e1a7cb84e457b911da346bae77218b7bd99b084f6313b800b98967a1d909d71bdcf37676fc4c0f4bf028faa2702ea94d58aa9e58a7d7f405a1364468d2ddc9e9b46499b5879bc751a749535c226a2024a89f1344303017e4d7a48c5b794bc73e6b5a34b636aa1858795b69118e052690928a7806d2d426d19609b3c39159e027faa68d6c65ae96b5e2ba6590b322049e0fba857b60778b8e93f5fd9f3367130c73abd03c4d63565ceab0c221a24770363c47f6f86a23a19574daeb3d4da1dedb11653ea8c0b107794880131fc8139ce9e3d5b62f9cb04ea95d010d9dcbeca16671f01cfcd7c6424a90b53762720fda91159340245ccfb8a3b9cf94e301a8b7c84f9f86357a4b29e8d2405209769c754c5381cde48d8362af95b3e15aaf6f6ef3acd07840c067927cfd503f1d37cb312fb720d823ef356505af6049a11eb1ca5d18373c088425d3a1f66435b611b1ea140e2a336c976fec5ff1332b4b7fca0850284364f2ea2fe40ebbe9d07e9e6f60900a82de044b3a96bb7ad849142b631e81bdbc69a2f0bc4f3ffa4d1221d002afba4be6e78deafdfad94b8c53b07e8938e490304423b5b6f788a0aefcb7c13fefcc99339ba057bfb658fd2fe18829455da316a3c5c6fb54550bcd9a6d9830d38f3918bf6e32d3a4c4ad18c543253071816008f2b04e40423d166cdcd1ffccec4b282b9556785a015616250911a8b65e2b3942cb543731f641b2060d0a6e8f4bfb2e677b4e7f39e1b7a2ea6b7d1f4076df8c9160f736d980c1e960c4b2aec67f1c76c590459c82411fff6c7819b6a10344344786404f73176a3aa7b2fda8444f1d06a514084586f0d42fae46e72e4543dc2375096e0c8de460ca1494e3ef927cfaa02acd105b5ad132d97a949e1cd102138e556769d57455bace9f90700c8be2b6d4cff26fa5034329c635dd036d272ffc876a008dfaa9e9c5039889ea5dc98b012490efe2d39236ccc3a88540f91d68f40e43f189e7f7907cfa7430f6ae3dc549f8a524f3dfc563f7b3eff5c39826f69d5f3ae6c50c2f783f82e5910dd2c0faa0b43ca89039ace5f6deb9ca7ccee4a92ad5a1346b76d6ee9b2ec1799d33854103fdbbc6680e3d988f1b7b86dce03a5a3f1208bf3ea3c75d6a07bd998e0165a34d19e395f0a93542a10ea04dd3c04f50cb0fc2f4cf42117505e614cfd0cb14a804896f0c7bebe24c39b9b6310abbb3f625b34fff6b5c757782bb7028da1e76e61a8ba5b3262e45c6fde814019ce150cfbde65499d5f128108ad3fdc6248e1ad7802617ba5396105abc39d1f680bca4f3e7f958ab96c947f343392c1a1fbd8f9f29cf2cba50d1c19a0fcfceb020cbc907b1c07c2ad20381b8b41152ac266ee03069f81e11dd94eb1634f3a9fa1ccf2ba47083d914685c54cdc577938ad4bed38649226ef3177807524bfadc59e0c246959e2b53f46d42ed3f1c36ef98118c0da142196e2a1780dc48527063d06d07397d04f1866d04f2da460f4817699945f53c140d7fa2229fed9c68dd0473c3d42c54207fb68c897d2d2e39380a7f7bebaac5fce2b58d339e32004395b40d1fecc5da8cbb85cec27bd4daffdf433f1804d0749289a683e161535bf989dde1205051fb36fcbd0d1ad6506c5cce37e8f97013c6a002e3e978efb4a39352783cec1e0ccdff51a4abb5a11b4fe322fc72edfa862c46a45f93ff294b1a7c0a8c65335012a9a415985e53f789e1e0d3164063cf8dd958fa770386a31cea5bfb00e9ef479c8bf6445d13c15bf94efa2c08c8787b4ed30cc238fecd7c22396da3333208b989f3f3a5e52fbad135951a1216cfb4829c5492edb9a508156c6f839de8887fa8eedea8061e93404123fe864aecc84bd22347835dbb146b4bfd840640dc0b5237ba26bc6fcadc78e94c0d4b2b081d0cae46f348294d15f9646f8994c9f09b3303040a5ec4e18d318da0606e8165e74ff50a5809766967cea96330f4d95f04d93a99df7d67a7391011c136a7d638576167432d25c117aec49d371131d4892f108e58be53ce00e990719533bf4c3f3f9daa83df5abf665aeab6c0c192b86692214f058b1f994243384eb5510fe62fc4e6cc1e3dc1982af7b9c88a0e402041b921f4061799e04ee80a81682ba83e4a9a2ab2cb270552e51d95639be8229bb320c5df69b8fb537d30f269f8a214ceda1d0dcfa1090fceadfbc8fb8f41c45d338b9ee3ee4fba2260e5671830c120eb8f04abdc1e1742acc25f8a38eda923f716a7422dbc45cf792ad8ea5a25135a0809b5dcd2b2749d1f4873ddcacc7f08453fb3a62c6c23f2ea40573aa6fd1ca1b5c7e69f49f31f8cf18aa83ecea1b56ef40de85ad85f8e0d124539140399245b31c44b89181c896b73c3a086a9dce7d500479f1746448dfa1a0c3403f02de690e3a4ae7eb50b116858f59cf3f6041fd7e2cc45eb166e4cf48c147a95d68ef7d8499b5a1594d03b40926021324ac09d71cbc7d8a6b54cd6d6de9580f5181cf2e9af675858781686d76a2fa8025b01dd26a07f8bc2be10db06cde8f76568e5af666d473c0f95576b0cd586648a0d48ae650be90b029da6eb27c17fa164ac8d45d4db57e62da78d23df3f1db0e43c2ea78a587b1e3efa55f3ab61f2ce068621ecac14856c242307d7e37aac54dc19bed9ff558c9b704a60545c5cff0073bad4319346061094c0430215a452e2249861f8e1653f0c5a4a3affac75b79878d5ebb50b38640773e793a84e44a8b40510db4dad21a696d62155971477a19ba2ef996035d792ab26c2c659da88596092c0eaeb253d794664e4bcd4b5ed89484f2c89954dda5618877171814e82576798b98ac7249d65a94c44e31152451f67c40849dbc5b535a5f447c969968bf2838b4cb15faccd397f8ed87d728864d55a2ec704638297e69226d526359a66c74f9055472ee22d6b72d7c80444779f78a121ca7ec85602025a5d8724fae18a8bf59a4d6da6749be8c765ae0ba5621ff964c3c4f18295b1f573a4d8520d0572a67df62327ecef9140bed7158611cf8f62c80fd73a9094234ca5910d453e6e7ebea0bcf9731f07835971916eea9747ee7edd545bf18dc26019658fd91d3bc1a7b20eba294ee9c87efe1f844e24535c691f9647eaf82add8e942cb068821860db02535c457e9bdfc85c8bc0181dd4d7427480e184e8321ac75e4a7495a044d90e6cbc2bdd283b0e210840cc8c585ead6794126f2438a8c93d9c1ec56d8dfda62bfce9e9138c93e77804158943f197a63ca0ff674a84e2454d124560820487ce90d31237267a0dc022c699fa5dd20ffffe4fdd9df9f7cdb6f6d8fa90bbc89ea98ee4cb4ad5a1e5a5d1c0ce52b000fdffe5e7700e1f1b46c85666171224faa34b43306db1bc32b187c106a5aab763e316593ce3aad25270e78c360ec93fc84ada5fc2d2abacecd4c818e7254041485d53974576c3b794ca0e222990b28a101f81052a96e93f0b15af0b6df27ca705a04cffd6f5eebb8b942bbc0011391adbb6801da058511d8aac8e1e999197e4ded2f9bf1bd76c6ecbd62a3396bbadfc0427417f0e5691a311479ff8eb9b93f1797a14e36dbe14ec58e039ef3384d623846ce8bea7691e92ee4aa4c72310a9bde0739556240959a31c7f94eea580b2918e576bf14e2bc82a482883b7fc16a32fedc6af6c27d35b451b2a7d47110c76c5344278bc1a09896a891641b1fbed09f7d72888dec9833925afc77c66d2cd25d6bb8d3fb0513fd8cc85e41874aa3134e4369c97b3e83b739d1f65e8ae171ff58f1860c44fac58d36ecd3d040d861cdad55a3091ae2528cbd792a9d1593783476c13ec5e4e67040414495f7022be88921f26ace6a1da07b6a2a1cdee23e26e8cd731063c5b4d9735fdd3d802dcfd7dac5ac2be9922022ac17994dd55c8a2c89f50dd6cfe8d79725d15d876c5d285d9c5dc11a50a1b6ee147b8f69a43a6b12c152582cb27885beebbfb69720a8ad42eccb60fb26782141959aa04cbe29b83911d1930ae22b666d7ba9ce6e76cd0d23c4168632bfa514b1fdbbe59da4156ba2f6cf8df2e9d5823a269de711379e85ba8b8698af8e188fcb5732d0c6d00ed1af35381f7c77f6663ee928675b362976748b49e52b79ee1e66b27c4e6d239de29fea7142a96399808f93c0d7bf7f1db27fc3e6cf855d761b36535d99cd210c00ad650bf37c81fa1876c44ae8cef1193d7a2d88bf20d2bc9e4d45d8598c4a436e2b6cabfcc21e5cdd3a4ce170b91383e5c1e127ff8fc0f58d416bc38e35f23a2ff14f313341f575282e68892fddae4855e41576dba76e2eb26d3afa9c492daaedf17c5cf7a847b6189411a82d5b284ad4f4cb43cbd86171719077343a515ee2aaf235bcafc55102375c89cf7c0af3c78180a0338782b607227ec4c968970a4303f88a349106b1957c3ce4c73dd541310f1ccd12100f6f95be1d950be3161c752e0d8a72f49b0818808ea38046d2f0c14ea147a6e6cb8523bc064b8a7c0edf524a1cb72d8c5e88f08eab1a3ec2487155549f9a50fc9364828b572e78e533af2b58503e530fc19bb74541263f57f775c2e48e7140be1dfdaf3fdb937fff3d57e0b970c95b657a44f173359ce8977c4b926f8987b5b4d1c2ddae9dd03af5704a59af393c7c01d71eac7a4b486d908399dbe05d1e21c91a129aa31eb977f5c373ebc7c8cedca6ab6bb7bf4a746330f2ef0a4a0eb9bb79101984f8dd757bdfdb815f64cc57264acd1b6c5c6692010a28b041ffdddf72b5266525af07a551eb7035c8c1a11a9e9b14c654a7d06c16a7d59a1ee1381c421c69bb0bfa82cb178eb5a20e2f12f8069496a86832b0ab7f22dab815560e5ba070464fd918468a775c073ef7e8988e0bf4a1d264cbe6aceac951e2e802b622ac60781cd76439a87dd9a417629fbf98c754e753d3725f44e45f11dc4c24a47898b3fcefa83711403824fd5dc86c0ff6d0dc85e2f43d020ed98c8988c996ec15a0a2b50ba5437f4ffe50b5324d56acf347ffccfc32fcb5ecf6aaf9a6ce4440dc9a61820030e7552e5224a75522576dd0d3a794f476a81c50b975a249788a9e7a2907dd939260f368256f58bbb77cbd581841dd81ea2a2a2f3290168d50da7308e48c972785d1e63cae8f48d7243505d802ce62b298ffd8df1ad40e16518ab4b3db9fe0919028ab850f587272626b3b0e71b90826b1e3c4eecd05e5f0cbe515d2190466546bdf0e7df5e07949d2898129def8a1d6ee178093631c0b86a210b6d0e26cbfbdef18395d6621056e28b50a23d5fe0ff203eadd9962a1f139a395ef7bcb70b205bce83e04a1a60db889b621ca6e68716c253e8b6c03d0d2fb67232d663e9f3371117e11055b31787e720fefe822a08a69b09c40beaef159a952c38d0e4ffd403cbd02efe8a36220f2d06a07e66691198f0ffee6cfb564ad4e40a8efdadb3583f595ba3f4d62be3a0f403bd526ff1fb427cb464d652494011c4bd2048e585f9c417433857599d0231c978fad5ea843758b5431ecfd9c9731b743f8950f737a4b1c3d1e69b31ba8914e99b05f5fe316f01f85e6ea6329cbedabaee1282158b0ceaddf4ae9bd969565da8e2259f1eeb3846b72174849a8548edf0e3d942e6e39c36eed7381400bd1691d34c9fd2bbf1b6b2355418cc8cb37438359e96929e927b4764d5f0780875c202555a23f6ee8f2e0f34a3f1de5c4d67d5a9b5028c81ea7b18a7818108669467dd8189fd70b804431023603abdbc8dbfe4ae6f4d405d1ae6ed0bb4fc6a1d7c377d92e9b3f91c7be89fd97289722e8e1821e3ae3028e8ab6fa005afe899c5f206a4fcd386d774b224269a0ecf6f59759b63a9151e983af99909b28d18d43359fcd52c11497e97bd2dc52949ebb041d28659733f0c7ff272f250f8d094adc81808347e9146508fa24f73130800216d6ff2a59a0aec0e55d105c8e86b3b187ef340c28301828717e90c79fd5d92b73877e078dd9dd89c1679ac634046643582835beff6906193a4db22113f4ebb0f0dfd21e27926964e8d9f57de8d9c2c31206c771c3e40047444788dda098648b2ad804036ddce70b4eadfc2b5782f503851bd269c4a1d79451959c98aa9d99e38c72209166283ace7a84e14bb156deb4f20c73b6c1589173ee46fa49713968ea21650d3243a06035f2209c980d8fe654bc066a831d6ebe61f2a743cbd7a01b02845a4873665f837f3fe06e8c90274c14e9af88d0905a53bec12644bf1964dea7a38f5559d7404155568b427474a7a0c84443fa518ec54a8b3d3a91e0078746b8a8a7460e8f6e3f686ac72d224242c709254a81f6073af000521ae3e0f5263ce636e0d4f44af2577995d2ad71966f2dfed926bd91957356eae659bb396a4fa31eb32bc999d5a817d871538e872841b0b96d80c2653f1c735f079a78f5260cc9590564f6447b1646cab643343e4eced3f2f18b3363f022fe38cb5a9c949345c3668614a6ddc2d717d01699287c02deeae063e50a96d0c018f3e94719b2e73d74cb73ddab219c8b284e07a32eadf4a5eec451d8df7e9a0876a50e4c97192deb4242d0c7d28fde587067d068bea22d58fa37d09fe2879626805333d6b1d6b0db93a4fbe4f9bf7f1bd1dfa04792e8665006d4d820c263c899417c7dcc7f26605d4af71b7a7b99a90cb9d9d05c3999d1af37fb7c331b41967b782666f0aaf622376e2be3f17fc6253e84bbc1b9dbb26ef8290c1a5f59a8270e7df8b3292c390603c357e8a0c6cd5fee580eff92e3d6e1a866001e2f98f4b8c49a9e8d993940cb9d61750dd441b1d15c592d149682350d5f2756908ff3f9c41d5392969f3fd26607ff76738b39c85bfca9ed0e43f0021f34236315ebf4b66ca212250af71b831abe68bbdcab04fd62850a37eedaf169ed7beda02c730fc8261bca3bccbb042b605def0cb1fd1f35e31743ec5ec8b8152d08cdbad57923a6b59284023a421abe25c4a0bd2fcb36f9eb60912784c652997bd6559ee58633316c0cb4cf735ec30569ecaa8b0042229eae2208cfa15de21e7520665483e50df3ea425c4782c36c1d87dba94deaef2179517465e0bf477c268888f5ce27a81f5a16f03f59b6e39626d9f97ed0f761b8c1d970de284b520cc39bc9cca062174a48173b4b5ef0f28caa88050b4b132954e5c53a80dfc7c83da4249b75fa0d9bcfbc4c4f42372f9f6df1b0a2c8b23174121bc4b31a6fdaa6550644aa7cd462bbc1fd1f73b0f31e10e370bdf0a07e3a0177860868567b8b1e111a1f82e84004a2a66181ff4d961db6b572eb1e6173ac6d4d7416f00461c98bff87052cd7bcf2d24a023823af00dda3c4e7722316ffd7f5163e9367d879ebdce4a74715ead9daecb6e4a337f8d84836172d35596b3fc6674f1c47db39a89b4d5d4f45585e9aba35ec8b010368c4c4c39ad1a44cc61d8eefb24b4af32ecf72e9ea925afc7fe22110e58bc18e82bb9d8bd93769b7e1d8430b2af46d8d902db7ff7681d0defa8c21df0bdcdc607e3875c877ba53f988f05f5ea97e069089c937cd82accce584e34f17676d6a4614425e63b8c6bd71e224660b0a66cd783ec23512dd8c2cf84b2d4973f43fb0ee039178192011e6548c793c5d179c31bac0e88669996d83559a4b9ccf3d55214667efd23af950032ee90418571f8a935b2d5d517a84f58b47ec29b4671614d1c253a462d44b45830f2366f76cb62017e6126bd74e22610aed055c03978cbe6069c8d58533e89646cad95cc89de26410988f01e260ba0ec3b41bce62b16aa1112c4d6468a31964ea9cb29698e4f8819e182fbbfb8ca039b42903eca7e3a5bb6b926864eae7e31f77e2b53fc0e7700a15578a9a499501e7cecb69903685dc13acc2140b08268b4a03bc2ec38671f09881877e95a746866b51994c2d4bfdfc7a3edb9e2cc0f0955c0aa33da736a467f243551904472eee5caf70003a88e7650642d893a9dc3287d069a721afa14c313fe97a324a674473b32eb7f322d34483c385707749bee68ce58a740ee73c53c8649ba36eb7737fe91effcffaaa45617ec1010004d8a0e2ab022846e67be2567ac1765540a244a244a14020a27d348277d755810be770bf05638fc69d4d2cb1ce1d2b4d08a3a814412c4d83ce06d6fbdec2ba0e36a9676e06d841c3d0c4585e46c7b0b64489c2a283d2ff6d99216807b220181a3d88560bf7f9a57c2770f7923c71857612ab56f42562d126101bdd882770013e11330e1c79bea06ed23c22a52c2cb4fce16852509c903f8c460dae68b24fbc9426252d01a5f47b65dd862facd5eb757e6f6cf59069c81cbf68f9ffa686200c22f26083c8bc2fedfa0322a8f1a0632de9aab7a1031ac3744543ebd270a025c009b12eaed767592adc5b5b5f8a5369867267c870183063dd51edfb7caa6f8ed0a3f125e28f51f15cafbb2cb603ba3f386f3cff234135435db5d751105342d04c78dbc59d8cd4d7f37114e1af93b0747831a2a756c0aaa25d68db9e4f625666a526b2862084145810e69955d57796a332704739d25999e98b44cbb5f60d2b8cc0544ce6ebf317e13a512e402e2c3decfdc3b5066ab2989c07d8157055161c4db7476bd1e424408d69d862d051767fef2a23694fda503725525a424863bf755399891fc5aac74a200e33820d0555530f9167ea077959350470ce5f35fbeb6f26dd5fb9e05f365379096c53aea467244125713e8a30dff1e463c3056f9baaeb336d0c3f42a2aa77befb99d7e351b25f400ca79ad8370070e0cd6cf4baaa6307b1a360c2584bc75cab9701386609af9d05f9c6e3339ec7ebfa41c0d11f47f78385d6056de92f16434b49474dd4dcac7d09021e3cc04e0fdc4f63d6c32b0e6a575ed21d24cd6429651ea2ce91562d3ef5f31d4b6563809ff66f930ded6e4b1d2a26a5157ef1df2cd59e6cfdf44c29302684e969b8b4622e98fe5e39e5a6d32ad431bceb760be9fd70f50382319e8ca4624db0c3adf8729d78b1069de016f427e320ff91eadda1b5a344e8c867406077e402bd8570a4d46ae6a270d20468018b4828a1165da6bbacdbc911503f4dc5445350404929a898a6371d71d6159f875f177095a900d929b6905e05da6a816e1163f9612a55d53cf968f52a4118d30d0d8f30638c617d59ccc244904cff6ca887ed6e7930ee88618a9e25ca29d6b1926fb4320efc9658ff41f186f49580ca9cea1d13533f4c7061c947c3d2377e410b7db202c31b50b0a3607703e96a7b969e744025670596c09b651fef27a2237b5850e6aa2007cede7a2dfc825929558d974b2792a0d3a324df4ecfa41feb3b8abbf7e685a91602fce3cb005686652be104c2731f7d10364e44559937f37fc58a6d2e10f7620164f58ef4a05abcdb4b5efee88f86f40360b5e9e692fdbc6a0a2a80431e2471a91b7821cd0ede090e85c54072bce2018713ba087b095c1bac3597b1bc51c0dbf1bda47587a18634d463313f221c61f61d8af81f494e61510f09236198118a127a15ca1f1c53c1e47137807f2cdba679076ee7d63a7e8ad843203382f8602e3284f4f12be75e70e0675285ab3a7b043236c80ea424765f823f5904f884c3e4da54ff0df7d6408c93ccdc109318b61e5ee4f97b9b343e60ab409b816e29ea3e5a954487eabca8e71c165ccbc62640022d1355abe5d90eec81c118df03e57dd00532bfcbd0a576b82fbfc740627accb1e064e5e8c7ca0158d2de2bb5ef934654c8878da8bd0c2f64edfe806213f59d4a355b51b9e84bac6c268f0f9fb0fcfc6f7cf2320065df5d7c0e1842224e148bf36fb045da52d2eb9fbf44d1558dfd3cefe50d1c5a36445dd0a1e5bcb617ea060811039349985e20cd16f8d70fc0301a8fa6dc8aa06ff71bbf22071744616067149c79ece21d4d383b00ed6019a31b23a01ef60193b503540b30a4027c050c700a60d4902e66859f4e328ba9e2258645096507f67c2ccd774e786e9728df69022e4729a13a530d54a897509aa73633306b8c6b4033f4dee0f2a76ce05ff2a7b47b8481243bc7c1b975bbda12b3de80a1862e700b5aa601a0e6f9977d431514473a3182f1d2b4953361deedf15f5c96c9b85f829ab8b9cef5cc9a8901af73a20a70db5ed264a3fa4adab58e0a0889f9d322cedce0e621f6c7ea5ee07155b8b15ca770ed4aeabf3d7b0700650ce59f974abe1d056bad0382ccd641cbc4aad15f509b9f3fe5ad01df498cc21d7a19166f55a06608586ed06647372a98895942e0f1f5a4822e89bdf6fa9999cc9acc1cf74778fcef2c4dd04be0ab7a8dc07ecf935ee24764a3217de72e3b798016457069170af8d5b8c83e5422aae1ff90de882abdfaff4becb78403e305ea921a6f0ada108849952026c9eaaf2e9c86e1775cedefc87420a3fc51853a45470bedf69a49156104e6b33a97dcf6b37cab3ce853aeb146b975ad53150880134ebaff48cc9f7167cf20a0af7ecbe8c12dc80bb4472640b48010f3fee7833c289e6b7e4b2c547a9d18045345819cb50699cada169f82c08b69f0f68416b32e6cd6567c1c86582dd25b9671abf50d10523df982e8728f0f1acdb3f7761d9073249816c781455e6500b9fb0ec93e2769ed491adffa593eb09d60071a67ea8ab7f81fec8bdaf98dec121eeeb1badf690c51ead3a2ad84575ee983fce1d54ae6db9c261e98f11faf4b3c177c99ffdc8a82a0b36c153081116f32d34074e92fa31f9871fc5018bdd0171d9fd7ce88c02d87cd6478bded633be8777bb16181c2b970481b50a2f24c520e0a3add34c8bee7da0619f9dc373121231e09d82aef3d9d972d05f6be023d832a76598f35213765d33668223050a248ca0cd84e6641e7f2bd5ec9562e22287191c0134f003e4c871b63a5876a93649fa5a62029ef80e4a16eaa5ec831c447e95e4c380b595b3553c80b79f248e8b9d36cb01e2d470847084a9a2004bce19ed510b2722c1007eae16a80ac928e45c7481a96db6f9be389349ae6dae16d33166c97c13499761692a1f38258e8c5f110efb385608923ce4e933de8f1bb5e78b573195658dc9ac67cda21b0f1f886add98ae1d4705d6d7ba98385e8e69b833466cd5559f35eaf33169004639c9b47730833a4a295f30b34593bb36d5a05b1d9c77d8b395c83a530b2d6af0afa1fee36b64f7e2ed0bfabc9dfab24446284b427539757d8e8f74c8f09502b7aa060869c383885db977fc9b9aaad8a66bf505f1c65e33df033ae45a00b525097e53a165a20d8bbec968544f4808afde0207a08d135108a6dd67cedbbe650a0b05f2278a9a04ec32eb28d7daa1abdfd3af6b81ace429abcf2f00de37e38566c517af94e558182e546f7edd7a3e9ad8717d00e38dd85dc4108e11eed03e5cfba90b631ec3e7cee5131b6c70389309686ea76f326c96916ea1f2d9a9daea602b50571db89e0e6ed3200005022b03577cc518ebed31b213d0244e18212d76f690224623be9780ebe5657fa62f13e038c1deeab8354a40570f743e26c213f329a83d8cdf8087c6d1933d1c4cb240acdc43d3ff258b7032d73733085fde3794612280184eaf137c67100b26eea462eae6601bc84810644bd25e99859ccd65f19de30a913e2eb4e266337857b69fdaa1ed2e937eee1ddb69f6e144e33d10d9a96c6cd6b80bf8dd6f134ea7b8c33ee6a48c7b2c67500753b0cdb56f339303f9fa46b44ac39f484938e0c16d6533b3fb916fe55bfef73b8d661aa0eab568df1fd48e43f2efcd4c57beb512a79f7152986f4b4addf280ac3a4a41052f31b3fb0e4a06155d5adc6b120358e8c4cc49e2bbe7ab24804ba097cb0b4e97fe7bccca9643b2b8dfb2dee7cfd87a1c0590eacc62778b03748bcfd928b04ba3d7f91736ab46364fdc549cc9b13908a9239aeff4f73036ffd6059a325aa960b70ebb73b13716b6bbf0408050cce8f128a16a287de1464febd6193627a9aaaed0966fbd0318debe71f80df2e36f5a5530ad1ff4c16b689346f649216df139767f951b2fcde06e09315b6edc978509e6e2570d33c10938c746138baef1ddc8339524820319576a5bf115dc821cf5ab31937fd54cdd65271ec4b644f353e1c218a0ab3a83abc1a42764050bacc7cb91c59b71bc9e994517885e22ef15bb00aeb83901c2b8ff4134d0df34fdc9f3ded85a52741c36a399ac1cfa915a570063fe30533979f2c8964da29b731ee1e60ade0566d571b38c6d9ddef745db7a6912b9f7a29f0d0ca1a406580093dcc61270f0c13f9c170763ae683b2ed58ef5c199c78a152575ef79496015870646b0227030af095c3e1cf436b61be7e883a04d54bdec764f6d7894c10ebd4d2d0209c9c270d0d55f384a8a02f12d4cf40af455379592012abcd1e16a676fa303643a7fdc9f3e981fdef3e9b4383af3bbcc72c7731309c5235288b90bb10ad15f4bf69466cd386118e21e1cc1d2b5787b838bd680e63a305636e36834870d9626d391ba7839fff27a4d18561ff8d5e8bc15363afb44f64ab31401408130a8e431ae64fb2561506014ea6fff7a06de52f9e1128f024043dc6b132322f158948a54afa5abc752e06c98da2d033983a90abc0567610dd4bb86a87710cba7bb809c1ab01c2ef3a618e9016c0c80e5c2ce493aace4ca78291b0c277b24df71c2a5d8fdce975b483b5f4456c158730ea700821de4644a1c084b8614e948054a22724819745cbe9c02997c353d4b02239ccf37301d6b096e6efcaae53f8b3b10889a68ac068ce51edbe4c11c1b50d0e1f7bff31272e88fd8da1259172e0466f690132d0bbf2ad55d88e428c22cf33ec5f64709622820714f53fe16667f68db162b8113e47508ff63a799b65260f40fd9e007ba74cc4d6cd05555dc6e0c2d03734d6b8c98ac8ca945f70e9a8e94ea3718ea60bfd7e916b1a0dd24e8f32f32eee276fb3fd93935d2918f64c9d54834a0c3a9f42a7e42fd1bfdeb7960635a22f1128461a6c2aba3f44c64d0ad3edd68e45ba13566e79bb87643705f81e77135ca64ae3f4168b977406288ff890fcf5f9787dd808fabcf617890fdd7fdf4ec88720083e95e0f543cbedf963c5abdca8f9e9a1c454ce2aeec4a3067183fdc25ecb88da5853262ee526e5170a25345f3bedadfe7835415858698853850dfe77fcc2772d502fae5f06ac94e809fe80d6a0770f7403debdbe53dc8252bdfeff8175a114fd8297075aa37fef62b7b1675478f6f54e701307e2323340d9bdd7b111e13dc9858630a9d392ec5e846019d7ae0d688ac70fc3e14757ff082851721bab73b51c80ad6e6103b2f5448a4caed4809625404a6cb1d20c6047fe8aef9a563a4bdf2f5b01de36f078fcc7641abc1c110286571a315e0a9e80a3c6a231a22fdd945b8538111f1e4bb74c76f2463f83b4aa6b5f8488ae716f5a00572b9d53765c444ae8c0b96fd4e45850c0e136fd9e45663372e3a0eabfbb5122ad8ca7607880b73239d36762d4db3bc65fdc15a862484d31ed8046357419647029e5cb0aefa9d3cb34e00831423ceb0e3a2f182b5782b1c478c3c37c11399cc31dc314a4f9bff57289af5521114cc634005473ecd75ca20814e1c62c3ca3b10573d25a9bbd9d38462d4fbf19ca4815ba693b3743374db7e58457c451aaded9d7240e600344aee62505dbc54a2f9265c684c3d449704cbaa96048cf4aeff99e221765a2fac41b7e8238308515780b4b52a059f5085b94b345ab07a759c87163c32bf7d1d2b01d49953bdc9261e82876dd19e1106cf41b8612282207768f82b9eeb6c67fb8f65e1e06c64884108e9916bae3526030ff36b9c191b887ceabe94729397a28836a01576f03eed4f74592006bea610178f8a83a1a7b6e2ce2869b42dd31cecb4a8fc93ffac12c01745ef33cd14547c4f28164f83defb0672d518edea2938716c3befc19c86dc26127e438e3a1f1f665a4c714ecc734d8cbb00770830aac05a3701c28a0410d2ae3e14820aa440567e13931c52e4d0971ce2c51d3854f19744d0b34de6847da1db84973bcb857814db7ddc7dcd4edde4d0634b0e769c70e5767529a839cba890444ce40fef428ccaaa30c3c20713cf45f3393d592d22bec5c9e1cf0fbbb4d764193d750e3ea5a53fa508f798853e286a22311d388d11202255288e30d918ac2523dad1bd476854ada2e475f105cdf043bd770a3fe3e3f6d5f5eed74e0410843b42dc7dc299057906c7abe63c82655fb59b1147e498778d856d2a74bfa84b4d664dcd9744eec4b2acb71f742bf4f2655ba07e33b4aae45c450843463974c9a71db6aea6743dd8c9d85a867d6e59a1b109a877ccc7829f7a5c7ac74136164e690be725dafb6fba2ca71a23f452bee52fe8140644db56c64d21d1fcf49dd83ac1756324321aa7c07955179b93e2403e843dff5539c6da72073273cd106251aa273dc0db2a4d6c763aef77be9f017a1923223d72a6a76454e6476a5b29cc75b78d4a36902c93b99dfd50516af22e4b99772ee8d5dea40e4b27a0d4eb3e6fd51a0b5275fdd06bd1efbe5e7fa547d60ed3b1f44da4b6c3d1a7a63b9881d8c5acd45a69c410000ef2d116a5c00e359b82bc035e9728227251a0b334e49495d449c900ca49b29bd54c2684f9c5e8b7ef5da34637e17c3b3f48f31fb8ecba63bcac8c9b389510aa952da0f9bbe7c39b160b7c14151c626e791f2857b649509dc07e64b7c28964d624d3e9cfeac98433f1725f4658a08be486c3aa77b0e637ec979b0c3e571d6cf887190934156fb2496f242b110020f123012fe8b81fdd0e82f104578aab017fd05d9288a0483df16a89e5d8263bfb35372dd2a2850f2c892fdf7a4701f5f0067e67caa098af254d011372c4a07461ce2e836feb054d2ac6d7bc5fce30db0af570f38cc3bc330fb2680d541d747b87b621051f89a9b52e88aa8c2e9faa1d432ab5c1980b56196fe1923b6be627e9fb70ffa51033bcadaceaf3ca7413247af242c099e2030a4b15f2d46a1058c91350c3e253b4c46fd5967022cff3b5b4767cec69b55bb7ccfe2c89984b8ec0073974cd5773d393d0c5bfedd931f03aa1b61168b3ae701156f3555d98daa845f737cb43b56eae396dacf9efe6d02ac085440ff153887d2a672e876da8ff6d3ead3ddbf75ad446e6d620033bde798bbbc68bd2e14c566fb54de4b173dba18bbb8066816d2d5a083826e384c5ba8ad4b9291757c6c62d9e89601494db31728534fb9ce610f893dc4c04821703bec094317861c05c970303ce492e1b2958dddfd0202f8b9500dc10c39d9df504c2d1149e79245bef7cdcd158a44d8d3d2705c0da8ff16890a067084d25afebdbb1f4d12b3ebe486e6fcfdd154015c7f5a73eaa77c4418ed3b0d3e52c60496894584e9d308cb12b27c9773c2e25be96c7476d347867059b57880ed6e7126a9e3339c9fbe0763ccc70ded2bfe3a6db05c70b0979c58febdf3ea1b8780567306c68bb785c694b0527c5bbf62d7027f2fe887199e7ccf6d6eb88dc1e6ca2578579183714fb61f0372538f584bebcdc3b8ff09429eb7d1489d84c0dd9a794d3a551a58b682150c6656ab64e76b670ea2b90f1e8207f11146689a9fcf7680e5592af2fd225c064b55f9b1dc4bae99aa9f03a248c068e56d822fda97a9b21cb41669ec6a33423265ec8ec1552b03af618aaf591fde525372d1bea7125c7936eca040ac8617af4c88a19dc0ef1ac611af078654af5f427f06f1c1b36062c7709f06d6a226d8100201d6e099ebfd1f463d38391a58c648f696210476281e96e20e60e2fe6aecc5b208cc2a2ccf01606b0a461e67ea1723436586995041388f74e9d6d5ebf018c0a078297452847d7d0fc9332c6cc2bab85bc3075756d29144896a39153ae9c1c1428f6c7f863390c7e204f92b6eed07bc6ea37458eb167ab918b405c2b1e0d562eab27013102d37343639a30874a78dac2186c6891c572097648c7ac5ee1f476bfe8a03b9f3c03716fba06b72e4ad27388b5a8d8e19a972cd2be92ed1d376bf3551faa84420977ce9fb7ae7e85f5f66306e496be9286dfa14a21f9094d35a1e571c8a9c6e70c70795072aafc06341c4738d756909e0a395347462abdbe5fc41effd48f901925af2a5ec7e8db536aff1785760e2155a2647e015a87c7f63dfb34268403a8463941e6a196361be38e1dd3c2b9c2880c7ea64c6a6ef37f3fb6d77a2b1fa699360fee7706f25054a176cf03a091841c7738c04bb2badc4c851b0364d32f89666ee6ec6673148b8c760cde9d7c4d1f1aa914f9196b4bdd5423b5c637ad4a4311c45c391317826cc0582a08cc38bab24fe6a1e5c2831fe00d26ecade150123a75ccf09e96ec2b8e64c691cca2c9e878e211879abaebb5aa2ef68e758711c8429113bf05221f7ca4b279db626c97c16d3aa09b57dc6fce053878c85ddfd4acae7ef9abb991904313abe380c112a341247984e093d45debf89e5e94c5d967b36c92fc99fccc57ccc93aeae6e8debd126b7400d0664fba4bcaca57edae8682ec2365698950342a15ea368ad6b806a3d1548694b45547c83e7627b45bf5f561f2461caa4338d7fce9ef08475b827531b8930179332dbe390f7cacf3a8c4386747e089c0293cd49fe0353edc351c9e293af32830f3bb6bec85a3eb3eb9dbb578e626f98866c11990c5c83f667d1cda17465411f4a02c5020c0b5b35dd91963d6a392bc1e64dddb7768dae34d3a96590fe37c3d4e4ac05bb37d7df669aa98c3e7718269850e7870f2624aaaf032c3d0fa08df9e0a605928fa2f1a343a55d7f4363fd3aaad644dc7ad10ef2100d1122e27126a59487f8e5f66ac586bafbb8bb4da6c061752668958c64147ae5c6bbf04114d7ab46cd87aaff6c4b93c769b8c22e4369480e21ad4e1e8383c0cb34ae5e73b9a14388a8d757b61bc1bc200a98da7a116960e973d9a265f9b1002e4fd04d10b93444b7c11e826b38f0914582219fd59a620afbe9695624755865c6d832e903830e02468eba3de690fb51246f33dbd4aa1ff10cf94ad9cfe98e936fbc91749f1c65a8a8a5c5a6f9a37c4d74b9958afa1c44e086c436bcf0c791ca803d9c820d85aff8e751f2bb7de98fd49ec91d092803794558990d6f4a83903fa6dbe5d0b463ea3565deaa70a73ddf68029067f1f68e179a8e3858974ff7298f565d3766fceeba14579138328b914aaa7de333ef1305aa16d8005d1163e496a1370050cdfe019f49a85422e0b70fcf55d8edbaec8bec9e973b1441c5cbc6a441b2ffe66ba45275be42963d65fce4dac7793460e1a71b9accd4acb3ef8248076736dc7af0769df9c444facd8677be49a070933fcf7ecfc76caf824bb345f5efbb673f57753ce5468e88a3995950e4c9e6d5fe24e940c1d54a9df633e69aa97b0fc0b519c67951a0e1fe23fb85d365300b095a97bb5105bed0322ccadadee0225b65095ceddf7f869b30f47ab720dc115037ac00151f8022d421f112985c45f117fcb2cc1d4dee2f124e21d25b07c4208cf993f3c4057c0b12da377a3ee66d41ad22ed54f2bd9109d6d81f6f8bc066fa1c9da30c2c71908916476613288205e36ae840a0393972abc8b0343a61df678bebc17f3caabeaad5eb899c3d1ea5732c53dc8d742fb669f64fa90de482408d29354a2aad242b90f3eb12b63406a50e2a400fc6dca82c984f6f04ba5757c2fa9e5c998c057b8e675312468e7db92b68e82d13125bab88b692cb98e1824cd1add2caf5342deb63f7b878d9737d81eec14035162d44bec5350e8f03bc00fa04b1cebd1489c57252d398a441098f0712b99886c62202a8602077350f98c1f6e88f237826b8a8a1a9b6823e7b3e53cd6196f73839a18767a7630eced285c3a48d1e86cb7401750f1f22142182c5c641d7b1f71e14443984869c7a5e4e27630864070cfa0bc58a172a49c46b34effbe3d4821048f1de6a063e42e4a88f470193eea624d56fd4cfcdf14d2802238943de34d2b7f86fa3f946491f694e6143847c632cf55fbbe216e41e8778f20a5bbf5e5755561fc76ed9e88a1789dd452a045a2758b31f36fee25fb16fb6012d9eabe82b4c7679099b9a2df96011be4e1f83835b59da922d5e0b4b3acad0d326a912a04a2a3122ebc2168a8c7804f813983cacb9d552d7c3cb254330a643a2ff77ef64e76fbf73de47f45bbb2e30505524ca7d9f54e45344592681e124f85883ca3d5999348d3730e7d8a1c7db5c03866238892ba5bc8b4f1fc557f5e58329d207a18ff41a9fa7c7e414ab3aeea51e00a7b380041fec299eaa3fed5f37212b73af1044878cfce01e6c0ea2707d07dd21004a4bf2ddd74042563dbfbdaf609215b31b2ed4830faefd8c2051da8093b5a8f76528620418b976e8e62bb13e7a4e828c3c83fb1208999a1ea37c78dc7d1099bbde4b23bcbbe78872cc91e1f7b8db3e9075bf1e195dbd9c5923fdfd70772672d7ce05c1b36d9c160590590bb70a9dc98e6c7ba471cc472ac3fce934993617c9b9254efba5f5c9ab04ef593fffea6979cc62d90798249cc38c01245e0057d0f9e926b65a4dfa98f9e6cd703a87bfa9444c0478bf47b5d69f7ceec011554f9223d4db496f438fcceab2492c24314199fcdcdcdbfaafb3a486ef2937eb9dd3df60af17b6ffb5aac4b1e14ee39dc86c3bbe3e018aa2a91bb4cf55923cf05bd517487053744530610baa3ea19fd07d773c05f9dc6d24a44715c6c1c1037178434003da94c2fc5f9e6f269753edd841ad05260a8364d5b0ef38ede68b0412b869d80184e914f0627b9edfc47c05d4a71e2ad1f1ec1d1de297afc6bf4239c97fca858caad2f3ac72aa685c6868c9db6d874385db68e74ab07295fa501ca9c5ebc9d793d6a3957b2e04a23294a2c7e1dc76621f33515a093a68a57c27208af0dd9857541ecf87d0e0beefe282363cf80043dad786a805c1cd74bd56338b61bd5bc36eb317e24df07b388da8d17b929a6df08a5004b78b0ff0920f43902a6734190b8e6fe13e0c5b02ff9e9fbb6d33c498fce9df34fbc6418b2823f2827ac6f8820d3697ad6a6004dd38088c32c290a323f9034e13f074f45a54a6ba9fa0ef459f6bdd9140d2b22cf9719de988799c7152815521eeb0684eadc901ec1fce42ac74171aedce48400456171599487ee00b49636d07d579dc245b55e502a68ac8fc0eb44d169e48a25d5e598ad7454981d2542e902d4366ccfc144486932c5bb1b49bc01377e47f09bc6f19626c3801937db8182449049a34d7a2582096324a076e0398e34edcded5ae721552e4c6efbd1732e8def931e52aa4cc1ca7a63ef442657ce6a4ed11fe18e8f4b5f012dfce7c2e51f7330a2f155d759b6dae77790059d95794506f05674d36b2f7de5b6e29654a4906360a1f0a2e0a6f1b8b17216014acc9131246c19a018a396618005078e9a048c24c0f2888704354175b6bbf151dd5ac567f623b554087dd085a699f7d13be1738f17b97954ef67ce367adf728ed8b31151b35838282a004b9ec13463726aa20f04411a322907894741908049ed0c229c41beeb858adb5fece8db10e3d51143d8a27825cb5fa0dca86e38f267c877037aa9fd6062718e2740e9b7fece1c411cb53e136f6047bd2614e6ca8c26d27366236de6e733d7eafbfa5c7a04dd11b9b3fb7a751054de3896be2fc4b63896b4a838a9432d3d288d279d1384a29d5362eda51adb56edc51d111116785baa3264a9c0f1d5181e1baaeeb60ec5194232836f312c33977e3101a49d724c3c5c4c4c4749b0ece6344e3080da38edb4a5b149adb7fa24a5a15cec44083c3427f0b47646e3f0cfd1e983d5a15d68622486dd9af2df698d25dc6971420a070031b1c9b4785efdc29c9649f1cfcb056f37756f23b25913a0178b292bfb3dae667bd1ecb3707cb4878457f06e04b15d70a0038ace68782152f60ad6aa3f8e96725e75e8a50046b253f0020b1daa6746f8e13e3231f86582bf9452da858492026df26c2fa8d5a6b5a5b293fc7791a25841421aa7897b452d79532cfbab38cdbe72c7ddbd0eaa44e087663a390b4675d908e33ce3ec7bb2cc36ad67559979ebff4b1131bf3859d14dad0ea2fe6733ce693af7d5e7484f29bfe614a77296c29dd8a35fe2d6e27c2625c1361bdad6f6cd82d16cb9b2c6f2a9c77cf1acdea94b7942e7577f7dd2d29dd547e5a5585472c95dc4b0cb21a9c4289e34aa5d817757dd6add4d77fdbb84e86e36e08fd2c7b2cc8dadf4a1d920914c3c54e48cccf1ba381b2511a281b25d30539c203054af594f675723aba203308a62e488d02e3767441a81a369477fbad72257441a40f6c987126d446695f1bb5bd09dd9006b95a4bfd6dbfeb869c8a6457fb793530ace136d89a2735ca1d29d6b84c6beb5ef0950c288bc490699e463916296bb4fcfb07ffad5976296c1e76000d2f200799f7a7d964be96d22d24f4b37c6aa5ae7b8ee36262627e48bc31bf73b52fac57fbfec21a6edfd2db2f46b31fccc7aeb59ddb30dd97bafadc876536a683f41628c8e8628a22ae3052a35bc322a36393238a32b28c5144175cc091350e3bba21d8d57e33edd0e2161a18e1c30e8a1022694b751903cb5f02d72c1ce26602d7acf8c3afbf89819c903d61c3c96a154f4fabb85b7e83ea947fadad4b85e0ef36423e4e6c518414607459f95319b8ccbba67db651b553fe58b723d6d42796df93eeb5e771aca570e7c6649fe335f49b1808dfd982690414017423163b281aba118b1df0e0e3b60f1598e7173b367209a4bdaf3470b6c47840cfaf34295dae016e1c0a420742f0dc382445cb4de1c6a1207e6e17f517f126a24105193e8c51c40c78b0c62a067680077801ed801ebbd25a4ba78ac2168a2e64053b3627781a12dd75a0618782f0b95b73f2cbb09719867d8e57ec89d645dd38e484d0d0133f370e399174c3161a724205d70cdfb42c2c7f58319f7ea3e448493f6be9547faf71bbaf836d848d434e3cf11b1718d2d049573e8e8f46f54b508554902b1e29f19bfe2292d15aba488556b15f771027c8863e5056de533c3e6a73466cbdc3baf3776ce0f299e4dcf93b334cf90fb8f2a507e00370fb03b0822cdd7e26b674fb4b28c418630c77face8fbfdcfec21b70b8fd91e3e7f4cb25fc65867832f280dbcfe454e401b7ff01f1cbdd2487c531ff447fd22a87e5afaea1d0dd10146e05976842ec5dc249b7f2d1ad0c841948e3b07131ece82c4d09c3cdd7debfecb54f6a59d7b9307f851b3b23f3c3bedd90156e0597ac70eb6f96b576591a41df12d05bdf29686482b4079b7c1438c6e8a456cfeb6e8c4ef93156eba96e985663abae8edd20e536637bafc6fe1a0c6d31d1fbf98bdeedce5c033a1f26ac9f49803ef7e5f790bfdcfae566587f772ed087b91828ef84618cb98a211758d123e4a49472f3b95226c51ffc720b42bc719f26f21b978ec3954630ba521a5df961235d0982f545838e8c421ae4baeee3ee58906d35caa334ca7b923ce57f2748abd0a0ebdbd11836a4557e2e835ca55540ad8a5ceb68c8053d434bbc869640321a5a02cb952a5296e0d9aa58f93e54a5cb8d3d6603a2bbbbbb8009f7710115217c68892b5a8a904430761143463481512925dbb04f89d16abd39c1d86dbc6c7ca12a6a80370ef9b4eef4d22a1fadda71f96d5a9799ab70c15da4029f71c00d7b8411a3c72c51cb0de31a5c1210bd5ce7d1e21f4396c254b8caf52123fc2b0caebf778414d7ff77b8fe2824b4b8fe3653ae7fce0fae3f919fd7f53fd273fd95c4e0facbd002d7f51701cff5af418aeb49cce0ba123d5c57628deb55acb8fe400ed48ce33c55609d5c992b4153f58285ca10651461c50d1f56614ce2801339a8f0410a241c016915c617eb8d9099b8ee210bc9e031cf1831a2028a20d080628a2c56fc054a917f0b76e50e34c60dae7cf9c10d38785839e8996e4ee7b4c9c9d8a6df54bf899ecd8d1f76cfadcd8e057150f7da77a21ccc77a2ff9eaa146492a4bf54c1ac6b29aba5ef2f813a4d1c69508757dce3a9fa59cc1c58ee73a3cf913c55b5af7eaafeeb349144fbee759a48d2af7d7f4db27d09d4c949d2fd56bf033550a7411d9bfed0268c4571559f285989a0c1537dfef154addf38b07febbbd1517d47aaef49752679aa7e75a35b2b380365d12dd16f2a2629addf9137da596df5a35fce49877efd24f4ebf7d7fa19a863037ef462628d635ff554acf15ff560f98f3c8aad7feb2f8bc2f28d434664b9fcf1b51b878cc0e2c66fedb22a63019f8a4cebe0a948282f915a46a420c5eacc4219b389c59f3e257812d2d7bfdd8788824631270dd1888668649be05ad53e65cbf70a4a39e7a90878a218069ea4bb0a8de2ff6eec84b48c41e6869453caec0dcb1fbbe6a161d87679c39d2b029d265b3653ab4213679229b8dd9c9583437ef9cdcf338d6acffab311b21ed850f66c4efa04e20df9da23ec9cd1deb84d6e37b23002c8889fe9a5078a4607fb820095a4a1218c86a800d51eec5759598bcd5f72f25b12c14e79ddb05e06d22c31364662e36c708e542324256c28fdd63df73dc58636d786266cd8be6403f7dd9ff893947efb24dd89c1174abf7d054a60074a39048773f9b029c372e0918d03377073ccd321b19a4da7b169c1c626ebfac49f58ec89f5af74b5252c6a46d66abda7b4561a54b1e3c30cac3c29e28b182ad002090bcc28324ac30a163e5b989dd9994db0758626868b1e343e36965a24c561e957ba279dea37363094e728416a70d2ade6150c9e6a3722e2ea37ef37dc454cf58bf1610ab78fb0db7d0dc19eb3b48aaf57898cc449fce26e6a88e2350f1fbd423ed2e91b3685f14541cea2f1d8908f8842c6723be49ffb8378e3350ed6084d846920ffc0508de2c5c1a19fd318966158a4393aeaa48e15f484f7f80e3f785e7739468ed16f3c4fbed7ee53002941efa93360a21a7ff087096022165c07c3ec86dee3ad58d32ff4aa82de83c5be07a6b40144460e9cbca6b0109076f059420873c411c1e8e20839180248072955bce030852b8919b020082356393d27c71aeee909924dd9f0183d46f9d9464997ec2ee3d86c3ad35c425d27909363972647d4bcb255d5230a3bc1f5ae88bcd9d78fefe6b1bb9419f19bd5e85d9212ec58333d03431b24c72e71ac9912abb2ba961b43e9402fcc151b6542b0fc211ba15a85793356de8e52522a6994ad8a8c354501376f58a9b5828d49931e1ba388bcdd0bcfe2445d3d4b104e10d97e5d8e52364f29838d49931ee1fcb9f2c6e63aca29ae700a556c586b65c9a046ddfa021b65e013bc340b2e7fc83764285e5db8348ae5152f1294411910369c3e979f4aab2450959f066b0c6cec5268c39d3f59c8226ee7e9210e1f6994ec60accbe5b29e775d1bbb5c2ecfb3f66e12e3e2ebca8f9d9228b51fec9462bd4bdf38964e09f98df6d5e458a25ce958a494f8635ef99ee42c27ea9b3ef294fc9e56e8483e570279ea35e358fa271fb1ebe525b942ef1e75ec12cf0f89f6dd7b57010d649ff979e9a704f348349081764e4834ab519606368bd5e3489ee42f3ba99c2c5615f2e169d57cda2a2272b18040f995b559185b8a3f221b37fbd85d40d31848bca14769942aacbee1208e7aa4f800c5a122262eafa42783b86da5eb1ee6ebbef4751d269bd53d5f7fede349ce85457f7ee8482853d16c1d4fb6d8aabe3c6ea8c2ddf919e3082c3c88528419705915418e2434e1e3048837c2588591080866c9ccddf9448cb5384197df0bd79df36b10eefc7aedb4118d277858574a2f7aaefbfbcd5cd9a4c9d2c9163fc61823c80e8835ad026a002dc0885843883554c07db91b908d58a868e16e1cf281102e8e0a0e883fb01b877cc0c5c70d6d4c4c48cf8a1b7e961ba27c60c60d6ddc0b2d081bc6a29f1b63e8f7612aeacee2e54649a762fc495f33a61bd2c4f821fba03c153bbe7be4e8ddade7aec0a5832497aeea567337ec1ed30dbbe73627f98d8c37fcf92f637c5649d9e4865b47307840867e11e8f433ab553dce3f7447723c15717e86f0339838638933a804b1c9df22b777e30fec48c7b0469907177bc1ba9235caaefee14aec8bb7bac0bed02b9bd39edf4d72124b126be463f4080c4afc867bcfe2d858cfbb7cd4f51369540bac1a3c25a594dc2cca6a0c06649fc73e2ffd943aa00e034f158879ee91c4801c14521983f80bbdb2bf318dec252b311fbb0af42a068c93bdc4e091f93dcb8f7959c56f3160ff78aa0aad812a12dc95305ffaeea56520332fc3aa00304abed4a2fcfe51711bb5505701ea20e60ffbe8476249d82756c06827c984944eaeb44a48ca2bbd2bbfb374d173e5b7d19669ad9bbd5c811657f6870859115a57a3fac753f261be46f294fcd2d7499e7a7dcef233628dfc76592602194ba33cfef07ffca8f60e27d6b3965d4774f7db3807cf10508ca0c9810fb464a1e2ba4ff7eefe47d9e0f40e27cc59c45b7a80831aa8719d8b9feb3980c207203203a94a1a5500b53181225eb0451b494064d146fbc043e9892d0207ac075cff8c798714273f6b00cd408e23ac10f0831e2e92c822872bc4e81e748041cc18444f5c7fe95fbb205e75c80126005b280104a21f78b2d0620731b4e8c1eda7506eb268ddce028c204d59436ddc3e030b96db2fe717e74c37c0810a43506e0f0d85d19e5037917ecb3d70c1ed67417e95577241bd620e0b32cab8c1956bafd850decbb9b8dc6e2c86b8fd4c9dd8505a53abfa5d56d8b04b8793fa9b6420dd633fda1ff3d6f71e65e337d96bb553f5eb333ffd7e3ed2fdf6a51306f3ccfd991a55eb6bb15c928683e557976c0ecb456cc4478cc4445b20eeebe7f8cdf6f56b7dee22fe88b77e0dfe358b87c58a5b3f365fb995d5736bab8fc068bf71972483d16902038fc0803c25508757db77a00eafb8cf9ebd2fab99f5543502594ba3ea4f2db65f3627ddd84ed58fb5dafa17b05d1a55bf8256b20c642d9daab5b62ade1aebdbfa5efdaf8faadf9d907ed9a85adfde5a9f6b1677b685e7c6e722e546b049df186b6cb6d823cc8eeefcadc4baf1b5f823fbf894db6a4757ad4914d9c08cdaaad0a304f156fc217f562edc2e9326f5ca12d42b3fb21037dca60f3056acc121a6303b90be3c8564436f559089cca464b5658e0f69c3385951516634b7ac471744fe29c398685538b548f9f4d537fcd3c278e663515a3e3658e3cec7e663555c57ee7c0c080bcaaa9c5a5ad5aa8ec2402aeb6a1951fc51bfae6194a59db0563a2f8d9a3dce93c34056f147097a98f8cd3297a726169789dfd05bf4156b8c1053981f3b2199158d22c38619d1cd885ac54dbc2c4bab3056a3264d424c613ed32f777ea4af464dea25d6cca742d6a71103c97efee401ab84308a818451bbe1d4c202a730abb0a1cd9d5f1908dff839305a6c48a917fa6a958dd3d7a4f35fac3b3fa4f962515d10f96a158ba651b233c2b7c2c05b84aacb7a8a89c09db8c6ddeaa7b5b4cd67eb9e7b241dc83f15490964204fc9ef721a353116d683b5301ffa22c2027d61a009b4d195cd9681c38a2efc832c9791bc5c962a3cbf83e19fa0e30dcbe008fcf2c73b1de4e867eb0cfcf2cec05fadc75c8cf3eefa73d737ff8de3d074674a9cff06c3f96f96db64b8b8c3241363614a265329dc014ff2b31bda70f94dde04970ca9454cd7419dcb54fe604fec2d6d49ad972d4523236b3def1f85b2b16961184b619fbedb77bf715f7a0a2689f90ed4e93ee6737aaa117610c775d5ab3d1eccf6a54fb27d09e63770fe06e6340eea4e9c5b8fb0955bc86fb808c70665ef914e154930f41ec7b369a1ae4f11b79cd8b0835837f4a43b7fcef94d84ddb0159d9a3fa3ca8ac6628564f94db7aa04436be7f7574f6a95bf5ae5a5550e26a1df11cf345b68149146cd6f2eb0246c77c7d0d9419e8223d6ccb79f0bb9cb8a80866c0e1b726b03757656dbcf399f81b6d2b7b3ea3e9d9d55f7dcb7b3eaee48a7b3b3e2bef4edacb8cf699d9d552974d79dbf6d5f0b796a7ee96b97a7e6735f13796a7e373b288be5f9538bf5ef0e6aa13b5db71e6175dcb083e65fc0c6f01b4be9d49c4a78071d34bf85e6b72bde9c80c51c48e0f285688acf6a7e13c51b0d74d1431a38b8e2051340ace6cb1fda3172206541a262a201109736ac40095911df8b5f1120c5116dc441c5176eb8563b407031c51339e480e28a1e56f1e30a5b8c6fe37bb20d9feb1fbf0eb1d1e5ba1466dc383485d0cdc18d435270b9a6564d972fbf18517ee59d6028410b727ef93a53e1aad1c6877f752055745b4877e7503da2f7520cddd0bb216783ee2eaa501850ffca3a0c71c41c4209662d82a4884942bf6d1dbc08511974fb57e733562083d8283dc25673bc234a7120441032217e507130049439040f73e333a400ba538a267ad070370e4941458a1f6e685354892828abc71ab11823fd9acc1b6b704133877ce79c734a8f8d8a52071b968aeeeeb6e378a1c6d8a5f0866b05fb9ceeeaef38d81ef67a4ec300c3901862409293c32db470e408330f4fa37ab8e7284a9446c52034fc292f1122435a6801898da754502127a749a36aa8a187e80cf9b737f8ceeca9823280d8b2c6162d50045d89c28323b25641c7c518638c31665dbbbb638c71c618a35475bbedeeeee64665486c31fe2875dc8dbf65b52f831c6b2485e15ad5b29fad7c7a5bc294244b2268c84064038b107840038b125be258f5db5216102831d3038e35793320a28199084007640c6dc17281c86e66728acff75404e6c687b95650d0df445e2b2c7feba90876eff00ddd1c460f5867249d717446d11956b077779885445b027925183d26e0149fbbd83d45300ea54174e3501a5a2e02b6ca72e3f5c6cf02bc68d9989b9b8ba951ccdcec6998e163a04184b9826e58816e1c42c3e786dc8d40a0a1c3e5e73a30b4a54bb70f3d6c63ec90051a3220628ad58e0d90b260114614a2275e2b6f219030b1f081d5c531044a69e46246918e2b28134596d6e9cd68d18175816194d2362ae56e1c3243066d70e1584be9e1a7eba10900a09a98c247891528a1c5102b1fa2828c258090c289103b18320306de7f370e99b1c3d56e1c2ae3cb0d7b90217fb2cb505e7a4f72da1e424af0c67ba83d70493abb83ed77eb7ab776d9ddcdccddb624c1d82f90929395939c9c9991dce4a6f74f07bd1d2349a5a460bb3ce56478b7777face1ee1833f9c92ae79fb063be7f3a261865aeff2083c4109497ad311f16c47899e36e02f1ca4c4a09d2c05d8f06eef608fb9e62ace13ff1ed7b2ad257821c6be210b6daaa1887b055fbfa9bf671da4b50825ec1ea2fa594d2e7d8b0f62e480c25164436cae56d8fd2318ef29b37f6f029ce4530941fb946d9f86145b90c1236d6f99b7c1bb841e486037820d40345c3048a1e7a50b4850186110d1947b7bbcc7cc462b17ae8e5ff1eadaa72fda5bf1d630b23228cb85c7f1419586a9711031303d181063bc829c0190e67c4209a62d56fe7b8bd833066a40e62f0931ee92ec60fead69924464b8c9e2bdfa9c4157f8813bf7a37e7e87b9d92be44bc69975744e46ae24a1dc8bef14e1e288d8c8cba4afc51ba467e93e329212fc9221d55d7491ac51aadc71af1fc25424a77f2fcfc6ceec6edc2beb68675520721a6e477521b41beb5123d85860ddd67a31fbad19513ab99a6e3a90ed6677b56e229f93a4030fc0a86281da04c309c506e8f47f1563b4ffcf1ca94c880210eaa7a1cf87933f2c853afe92e913c2565d227bbd46ff6cc2850624a7e0f92674a5165f12a7da3c47dfc87598e251ecd1cf9f0cb53f25ff1c879dc07fbd079ace748e2eaf4f42b5d7ef9cdfbcb7ab325d768943c3283e9e73eb146fe14201d5cd902f7993d9e9227501e794af604a551a3e47f564e2710c7a59134620d09eb3ead0a3d2a3fdc3a72215d7974748256c56e2cb9bd84f37977eb783acf3c7dee43418f027acff4c2cae717fd1c4fc806b980aab5de4b6964248ffce674e4f43cbe84972f91bc37bd7c99e43726bcd1cab3d504508757263c7717f0def4dc2189ab1d6fda01f2f0f813a8c32b9e133e87bae2e1c9e157a6cfc166b5e34b78ef4f2fa5fb9c1e937ec2e73f3101f2797cee7d6ec2e7429e925fc2e72d880c900908dd4a8c0b087d892b8307dc471a49236f26c7e5fa9f49b65f4bd19dddf6f38b4537761d77dcb3d76013d5d828195d778b334e971d27af744abef7f28abc22af482d980cde33a62bd25583ac7c6ff3be9d95fbf70b71e5dffd5ef3f87476563cdefb747656de7b3cc0d9f294cffcf16f026949f8f39679f2dbc0cec0ced22832acf7218e0dea270fd0c1064b9452ef93f9d805898d9201439937e137e68935f2659ce5dd5209af1d616592cc97424c088b9501e5ab0bdb535b1f1dc3b0d7acd870be7abcd0d66d75e0069af08538257c3d3df9fbf33e1e5f6ded88014393055b3a4ef8723a25ff04cd081b46a226dac18611e9b2a0b9a0a755ded481a5447e2359aca22b655e3efd6915d3a056cd2badea845c2f6a84b52ed683b1aea447148926cd344a3617f3453f0664a15132a75152062292887d7592abd30bbd3ae1e52a875e3581a4c4e3b7e68e5eb2e27d72b5cdafef095faf787cde3fb981b5e2f1db6c4d9fafb4f98dc7b2d5298dc7b64af58365ab55525a45c1a446c5bbd523ac0eee84af573cbe26ea22a27a842d450c08360e698972b13b5fad8a4361085df9d30be5d99c73fad24bac918f117596d6a261a0150fac757a373a18e25cde3a6efbe2ddba4f9ef049299d92cfe393543a5577e01bca1665f90db72a0a6df9cd091fa5270d7bfa99d7682bfef821dec824f99a72e5979f2b4bb3357fae9449f275657b7ffa24de9f4eef81decf803a33ef81ef29f932c96fe60f31255fced6972ba7f060f94d133915ba12c706d5d3290f060c714a6068d381216a03434fc8539293adad453f4c0a9f094e294d345b52ce9e19050923e955ff6c5d395f17b0e1eca1decf96df78b38571b3357d66cf8c3273fa7c64f094fc5a797c277c30788a8f24798157fd5ba9743121acc44d299609cad3374dd4f34559adea8b54e54a8f52b13344f3d55a4c339850ac61d970be3021bf9941f39524bb348ae3f13db981b5f2c0f9f2146539edb952ea981e261464be1a25ff02369449573e66c5472b427ec303ec2c5aae146a558c44f3355ff2294b3eed914f5b5d6690fc5a6790f4c01c8ecd5ed2401c0c0cb9a8c76fbc97cfadf8a3be7cb9e1348a5f9d921f433b6f385f57be87492a6e4871b8d2fbe68bb2a6d0bc325f98907c4c48e8cacf614106fe9eca12e92a8948318928be886850b5c8d4097882cda733a7afec1b9c4e6118d1c53627b67aa055a1c579ac5a4b31f71cc31cf3ad310c8b492e446c9369060ad38c17b2bd5d623ad89026764850a6e757c2ff383677e6cc7f9f25fcfcf9f3a7e97b4061757c1c036149cc2e6c1250ab3626bc8b596bc14cd3aaa63df72529e1e31f4fa1aef601a12eef00d9c7534336a4b9fc342ab4c0aaf9cf4f841fb3a251428dbad2a82066227662d83f02839278b313831b4841e38d2088a10220340f5ca44104132c18828c95a939a128ab1ad684c590e5a470028c247eec8e1b87c0e8410a182c28ec76e3d01743a8e10ba4295f18157d11b485ddd1824e071c46262164def0d161031eb618397c646850860ecb0528060930302e0b47a9f4860b86075d1c47a52db820f47435108279e3c5d97c5b89d1b85aad1b496ebc3a15afeda11a4cc9e008d294d420871bd62be00042d115463b82f0bac20b4d8ea22b6a609380ae9041978474c5113ab8205dd12ac5d1ba828703824fa7aa05eaf15ff4d4131a6958138870832540910fec0721d9126e1c92011145f420840c581f084afa8205851645576ee8d948b1f96f3098136b590ae138597fb061bd7efb9d764230beb39b5fbb21f2e32afdf9b393726edd101a1a0dd51bd70dd9ba22f48637486f3abdcb8d08389dbe89263a8735358a331bab3787ad557272d3b2185fc80788a66f946c341e5d2e2adab44faebc579bf6f16a9bb354e36ac3be5815228e086ac8a9ec23f3817eb136fd5817a482348de2a256451f6c88d3a1e8648f1ebdbb2e36224460788348129994a1e0366cd36887526a5d90c6c9217224f31e656334b32a2bca0627c7f3ac75309452caeeeef6feac0c14578c6215a3b30c5477777b9fc890430ecb9ccf32deb322d4ee8edd744a14c73262ed6ea49a64932c7378e23a23828d74cad90589d57adf87275478aab78926d3771951544a09878483f9e3cb94be339d94e93bcbf7c93cb11360934e9e93d277f93ee91086c0de8c357197e79cee4c9b419ff4a5cc8a6d24b8feb367f2b47c19696035c99703791b5d1b3492b58d293b239d04fc662f3fae5daa208d35173b81675d924fb1bf450258f9db6fdbb6f948d93012d5f0badd4f0c0101a849abe67c6e7b4dcb34f9526e5f08f361298329cd8c4af05444e6f414db6f379a46e5b42ae4de9e6f77464cb81b189a40fb1ccf40158e7c15fb3c2083a7babf851f6c7f48e323fe60d6952f59181840e0b971884bd20d6db8b8ae4dab588c63e3a3513e82d8b41236544105665d8e1c19e5676c1cb79e55d297559b3cb361d9d71bbb6c36f14c471a764e228d6a8105dec9da6b2053fe13b0a1c9fb1e8f32f151abd8602c6c1875d0a0647619c5f617f5f0362d391bd2f018866d51c11070778622dc951fbd1b421f7b7e36b25df9200ddcfd9cd24073b7af3a49ae161ec9be267c43108d2e6746119a1bee002de11b029acb8161929b8133f0cf503f0b69aef6d9870c863497bf3ef6d84bc91b18f2572119c881128c21e0ae0469a0b91c1f9cb53e139b5bc12530fd1dfb3b158963dc7e2636b7c112c8cb20f6619db5ba127386fafd4c266dbff4935c29e99640e6f6cfaf2f3dba25b0acdbdfaa22a1bc110b93253189c5ba4d646ef6ee4db89b89e03259b2c26d4299d06f428d68e0360a4b56b81c6b96f097db2decd0b087fdb2d2204df84a4b8df021011bfaa0e995f7dedb7c4ff494a7301c0a569cdb8de4537ae522c762c3c09644b0fe46e21adc492979a6e0facfeb3f3b17a4476e87019740298d91c618638cb1e35779c6336e7d0fb244b25841dc26d8f3f5ce880917034313dc2adff97a09942e718dd2294fb362ed4e33cf96f8cddccfb8f4b7ea2e257529e3d359b196d11d0ce5bb376759ece8125cca6e296577cb1eb2733926e14ae9b4472934c19560571665965dbb43c7e874969d81a7220d13fda3b77b9d1f2b46274be92efdf479bfbfc9658c0a28852688a68c2718cc3c279593d2f0a465cc2c253395c951b635f98c395dbfeff1392c10916c82028b416a98c4be903e76a295528c3fec939671d74a69a5a7221e68958ca1bb4e48df24a516d8f858c9c607ce86c1d0496c8c6120cd92c1746c9cfc3228367e6908dbafede8a4bb0c9ef2a79d9258e3bf0559edc6d0287f181ae55fbdd8686fcd95b204140d6a0b9d4f85a055908b290d1d267833de96128650821c3b3cce96ba20b27ed5b10f6b27247291f264847e7dfaf5352e57bec96f27247b3a846a6a133a17e85790736ee34a61066efd2dd2ae3beebc9b5f29dc59423e77e9ac6d7f36567ce6b09f4fedb39b4f59c5a8746f777723fe2e4806ad7cc7b2d524ccf1a62f4e3f522108b8944e6e06faf3b1d8498082a69dc97c656b557d0eca15556c7d636781b88aabf63ce59f35c0f303b8cd9cd8ed378ce36e08f6f4b74f67fe0dda6a7bd38c5d92ed37fa05dbbe7227246e1112b31082000986476e363b17bef0c8cd7ed3b85aebac589dec45b2ccd6fa1cc62e3fac5bf68533695d109b041b6f5cf5f377b53e675b857da514ab18957dd2ea9fb293ac7fea8a61139b4bfcceaf46e8cf53ff6af3fade09895908414011ad76436c6e5641ed085bfd62e573a58f3d052d0a3622a71110914f3f0271042440e1527086ede5d72776fe9121dad7a741bbdb6f191b514cc972b78f5d0b918d28a6e4e06e2e68370335ef5ca8dfb946e97374fb8c4f1bd53630d4b9dbd32f9bd96bdf699eea09a3da129d8bf1d530cc3b235573c197f8d5ee06621adf688acd9c0b15c3e8c496d8620f6fc0a99f08eeb98f4f5f6e544a4cea5cece517ca70fb50fb307bfe4e1b28443b69524a8cd2254ca9042d077692a6706012dddbc8719f12dd73cfdd17fd0061d4824ad26de2971ae92b7d45899d34b20801ca1b443f2c70df5d04ba0dc4c8b514978233d01f0105498042153a491d73cc1c97d3cccf71dc172ff3e5388e9bcfbda671c76d1f72cfdf896a7fdab43f65da9faac693e35e638ec39e9e6032969d417b390316bb5003b3f74fe7097f5935c1fd0ddaaa8d4c245360e091858d28a66461230a9f957fd960ea1c567bdf66d09eceef40303c723770068c82b651a65651d0b493310dc2c633d68444e75fe5428e52707e8e4f5b5de0af1ac1f217d1ac6988cd759087176b7a06f2ddbdbafb5cc2ae256c8308ec5c0663a409fd39130c3fc7a7c93dc1909eb2530585687fc228f7129debefee4624f8c326bf9f2547bfcec98e79e702959c7cf9367e61fdc8dfa9364f9d5bbf30fb103b65fd27d9cc1f3f5fe6c80d5ad0d4282d8b3535d6f85724d8fef861e58d87f09b24cbe8a5900277cee75c989fd360d7f8f539fea05bedfa5d99e4dc1250263bacbb6485cb26a72d80f1c73ed62358fe1ab75c26df45695b15dfdf3d967e6cc618c6deb9305f7eed8bd50f35cd48768fd08f9d0bf3ab0622e086d8879c1066424016376eb9184827288bd834ed6dabe86b9b69c8462d5c543699719bdf25aebd77413453d8fd76eaaeceeddebf50de507e58faede9776a508876afff299e242844bb1c6bfc4f2550887663aca1efb7737c89ceadd40579eb2ff15bb76a047bda19c17e034398971f6bba8fb1a6f4dbb7fde4def4dd176e1f6e9f7dd609d9be9ffbe8cf50c19311ec5f4ad0c4753cd960b9dd7e6ffeacd0dfa48f8d435c826e285f5b1ac2462cd4a0724314ac3760fef0eb07e06f1dde71ef1b088181d4c6d1cf1b2e7002005af4208c2120f4c08005de048470032f5a50e1031350ba891d2755c8718327aedcc05503e621c038a2075b24d186117234131610da027406952758a8e171618231e0e5550424b864e1e4023b08a911841a3d494f70a972c31e365e05fb26ad13c33099c5bb54f9e2c5a4c4b04e4a4929cde6176f9c1886d51a235663945f23d53931fa75c639748a8de2f839ad04ab31c09081189544d1aa30fb2cfb383f0d8bf1ebc73d938718394a8c71ca9ed7bb7b85db60ddc958c671050f3100c21640047171bdc02147d9c2862ba8c015544575c385246ce2281a183270850d57d8c1158327488de442af9acc660389063fd02fd89879fa993ad5df029116684099aa0dfc19e41ad53d474e6050ea1a1c440b15440b8542a1503f3f3f3ff5b54c00b38888f2e9d328a4eab388a8722444943f40e69d8d64c01a566b3da38dbbb097eac59344c02fee091bb6abcb751cee3c72798dc5bebf645a258f8cf8884b1277e1172bfea03e8828f7ee939bf699c06a74f197975833e90379e47215b9641a266cd3e52a72bde048525111fdba4b277d3dbf5ea3fbfaa8cd682d5f177d0288aa18fdfb079df247f96fde842d6aa3201bfaebc5923cad0292417ea3e3fda59074c91effeacd20d3b7b3d2f1edac767c3a3b2b998ff97656debd105732326ffa747656f6b7181ddfce8abb23a5d2eb8081b19fd330ed2aea23bf912be7ebfedda555a5fe39628df7e75e380579eb57bad81787d808e372270489fd98975d05606088a6f4919f7b912cd9235b3f7e237f3ce52ff4f30af2d7cf757fd52af585aa36eec58db42e88bf7cb0a1bfae3bc74506128fb6060015367ad878c2eeeeee0da5ceccd4993a33c36bf0943492868626d6d42834bc009a9842bc915ff23ad5375ef53c1818f7a683a8a46db575490c15d1000000007314002028100c07c462a1582c2012e6e50314800b8ba444744c99c9d320c8510821638c218010020000c808d0d06c33061c87b2dfba61d57442632fd3d577a211764b923882aeff7be571173917e73a53d0aa725471eb21189a07bc999a4421a36ed16b804b18cfd63cb4c4fb173748e07dfe0968922187cc081355fd1b272906fd75592ef2e35718d4140336e5895a51ca67409284785f342105333fa4f61da135490503c4796cf2d5ab49d7f146b3f1b9e25e36d37f8a070bf7bb77de4b42dc4f0e8cf94fa7552dbd3e4b0a150a01cc7599e2d348cc12d6106d45fd13abe2421e03a5ab4ce7e0dd7dd5d9bc042f91568824eb883c2b79f11b15616d547f0e5b056e0c784d4a030c12fbc98028abe988c39a8ebd583d45a7030054d192b2f540a4a29fc4146f7c1d08c2a6fce7ce4e1fd4240c2ef38101aef3c59b7c7aa1e395c221f2d8223bd5d5cd2ea56bc500567a33736856f34b755dc730869842773a17a930a294c33a6191594fdc5e8267769f8367e78b6e48817f29e11f4f04169830fbf03c8b55f67e6e30171e9d8e9df9c253b1995f9f21880c6717cf62a046d3d9aede6bf667d52b311a527494414becee3c392bbb0315e32bd9227a5eefb9aee463ec6a92dbfb25f383bd9528c5a680aa2896f2a058bf030d66864fe3ed2fae31b5fd9b20a2918b9351716449c641c936a8bf3903893e3e08630a798f7c182a6a0828dec6b4757593fd9582af7a05a6ec68adadebb5318b8a64ad61cb7a23328d1e751ad66d35a766afbc586f91d55ccd7d1c2fa59097fa62adf94e237177b033ead605296fa2a36949a82c1cd570ceaff0f5af62bade4598d272c8cd3cc7a68cd48f9e484bfd519718ca4a2d20ed04de74ee065cfc2aedbc6e5ba9b51bc3893a01de4a1ddee0892ba8e3038889ca4d607bbf70cd994363da07a117e29b5679cc4dd7802339a99955cd30dc48dc256b92ae02ee8871f11c81bd43f0305537fa8e23c79492e380cb56cfb26317cff7c7fb251f9caa59e539b3e33a83fdfa9b58ea6ecc896500d3f5cfc6af831fcd7e75892ac89c1f12e897411834208e5b1ccd11b4e1b14858f51f1141b05285723751d1255ecd1609b1ff52476e9ce4cb21b1f2d6dde08eaf565977f7fb4b4780423a4b626eb24f43b22143fc3aa3dcd5bc4b8c0016ff4d289fa5501542c44f0fa90a769a4296b29ed146ed2f55229ff22be17cbe260eeaeae31ea0bf1041f8891160709baf545aaa06bd50c701fd9e3f4a3e5df9b5575148ebc6a8fde1a6f6b9fdbc3ae1571d9819d19c2de7a443a58dbbaf6265a69735f5e6b1fb090a9984b690231bbd1f9fb90b6f4aa2f60a1b6e2d7fa9044cfdc86002c0f3a42deee65ef2c709b220d062a4fadd3c30f3bca8c0944de7f923f7be57a4a5c9d6856721670cae80f3001bd8ede0b095b351ceafcc25063d7d78598502712461dffec048b8592ff7f11c902acc6ba775df88f230ad99c2034bfe1324c561a0d83a22413cb41870b8b1b00d687e0b2db75afae78794905cbcede4447328180e012985556989a22f5c7d6db504213ac1e9304527b63f51edef9d70d93d4c0a8ffd550050bd3236cf77a88c69c0ede64be2405534ccc445337d887665283245f403183386fc1d24875dab218c44b72c98d6718718bff8aa94699a9b515442bc0ec7039c7dc96c0f721671f90f0de65da8500b688a032e73b9a7309fdef7fd69400395a2b2b46f42c9520b9e82b960bc211d7e1fb3b37c73ba743daa3322ec0576b3a9fd98878e25892d179581b4677a07fbd116f695fe3fb8c59c3de7fe7ed9cd619a2d46746fd1adb753ca103136374fecc57c720c094b6359d2bfe31ec3ba6e4a9ae26c74329cbb552597f75d5e74b98a09e7cabfbbc68cf55113ab9700ee3c7f2b5f9a7c596303eac9265490bb515f0e5fad624860d05a24e77890c1ec42c64287f443f00c987e7d7c9259ee6713c5b0c4a41fe884429fdbd2fc3681c3f93ccb40cde78cdce994ad01d3ded65e178bc0b3347012a7ec5eea1f5c8179e3cf0b1822fba85505d2c5fdd146a7276ebb9f5631d5c882ebf208d96971eb742a29c60078ca66a7e2fa72161802765bbf4cc96a215a3c8bf2a00c8203fbbb545786094c2e355ab261a0f2b116a618d36bb5d7011a337a26b73299bf5a74dcaa587c2841949f7341a85c7177acd17b60328353ddef0b5ad7cf79bde763353f3c7f58921db42740d44e6a79b335be014803624f41eb005783d9d29e3c2515c0c54cf82c0dfd47ae65811fa04199442a00d15c4348635bdbf453649a89ecc7f31aaf2736146d7082f1f0e4fe57888631477b0d8e6fb0efb69dfbc7cf667f2dc14d761bd5f48219b598fcdf5cf3e1633e00c2798a58ec527d4c8e59c809165744931d73c91551f3d928c72d929e36591ce19fc332f34813c625da037d7cb9fb8ac1979010046fd81137f076773687d39ea229afdd2738b0e432df1c6447061f9da710b8445771a521ab8cf2872b52f13262aff027dacb2ac14418a67994fd1ac966cfa91a2b8335a22b714a07ac43d00fc105a126c13d3be4f22c6f1550360fb4abca231d56adc49ba3c6728ec8dfad843c7998f4b025908c0fefb5bde219ece4f30f1792e8bd2e4e7b24fa2560314a7dcc2d52788a486623d05dca81cbe9a81d5a2164ae46d7de9541cbf7a823a282ddeaed40166ebe8111931bee5f26fbcbae5254147e3731919fbb085b4aaff52559fa020e5d8045f1ffcf445a0f0f8b3695a2ec78b78a0ec660719bacb549491b90af45390c96035802147ccf750081eae01a2dbf9a0ed6f6d3ec8d61f9e3aa57cc01f808d7db650c023457266c7da2188df4ac0971eaa6424c4d89519676652628fd62cb652ea031f6f51b3c9c82f2c74d8918f26418c4ed7e80c57052267d1d05cfe7a0e3d22b3062ed7c549c5de0b088203725a2aabb7410fef63be96a7d71e25d7afa1ef6f83a71cca9ec80a500712167257b6f504fe058f2817a6618c95d0b4966b1c82fea7b4277044b3b9ba81f6347a996e0f9156ab706038c175745d5c9d1dcd5d07f4d8eb6bc0ee668036a4fb4041028b82703ef176e340b701205c32614f800c7d345bd95085b38b1cb2ca258b7ae3a6a91b0e99631fc31029311c5577d894ad311317b03d8b80c5afb70979de8d5656daa4374c5590199dc7a4e854592ae270bfae402e2c897c2ad41fd72706e121cea210953bd76ad6f62dea9249ef607ed2d1c5e4172da21fcb02e8aa73dc1a62a1ed315378f66fe217a86240f13c6c644d4b909400a1794b2e6c508c7e60cddee25373880ef1d408a18f2b42ddd6b59a65c691e210d61113c2674ef5ac37f840516a480090cede5645fecd2c5526e419b3cdacbc9d2a7e72fd276a8055d5de9beb53788e91062923ee2d13686e66a12419a3820f2d2e8b10916481ebd3059e210184778fd9c163c919f6d57226eab7f6053f0e019374060093e8184b66a9dde7d14a7a768478fb185a9d9578880523309208347229cd17bf96dd3c9d2efc48561914dc9e9d014a1b945f6330184ba28402641a215b5f2d403f7a1f9a306428feb5f677c7222bc5d5bc474b84ea4d82af9d2e2b39f48ea1f918c1c9ad52df318b65fcda32b9b988c042b906bc96677da4819d09ca0829df92d850d2678df972a373c6990a46a3ece69f1ab7b75a1eb09f9a3e00498d464f2777366d40e844a5ffeda76ef5a2dca49a521ab03b3f5ff601883de02714ad94ed2986454e73fddd6241cf6ce337eef2563ba9a95c6ee4e9148613b72a4da89507af632e852848d4850af52157d1fe47900c06570f5fd6e0aae8650442a6029ac06bb2d914c52c0b6950779f9c533ea65b50f5c4bbedd12160a6378d4ccf0452ae3d1f7808d106c0c165568c48df15b6f66ac4ff907a739828e8179e6c17f9d89b99284a898b960d87f1c64fc986196802c4e74c325bc13494ee13c4ca2233037236dd53922273296edb57117b13ed191aff88af502a88fba01c913578b2dcb0327d8fc845d3c2d916c2847b27759ee2910693fd8f6c0eb923e7fc2caf1260c8da8f304426860912079a460fc8a5658171ca009e0e2e015c3978c1b542de1546b9681ec0fa704e4cfda0acc664b53c051ffde0dd0376aae9605c8e1ffd6d75f887b71a93fd1f5de9eac817c3cb1a55e9a18db334bec914e117204fdbf459827e03aedd12403502a7fbf8890ee41d2ef54e8ef449a48feccbef6ba48dbfcb85a82e80ce9afd813ecd2fcaffb488a19f01faa0ef6b1f86f44457a022bf9136e0c7ad5b2a9c96544862cf50c0bc407dd4a5843bb7e2e1567424dfad091a0d4705751d68a4d7761e38e9f7e3c6053c843be8c6cbd2c198774e927c32fab125cb3112274b3d80394c8be6cab75a2a3d0eb35c0e47e74c14f305c7cd07df446c8607d50a46135a9d2e414c3e1109b429f43e2147dd0d894af765ec352588940f65658b6bfd96dc10a4a095032cc39ff561703ccf04bec96479c98f983de4b05412f16ccd1a1c7bd7d2f16c39a9fe9637b2b4ed3d86e4db11d7b257a0e9c2a36c41512aa4241ce2a69f2ac2c1a9b17f50d9a0565145a42afda76b95e2df8c3e25bb373de0ce158429f84a9ac8d8a6fddcf006b5b6226e54b607f519b6d328c712d4b40c73cf96ad80a06c26dd3d09f93984bdaabe62861fe15edd900ae4388465344c66031cdf7aece9290d786f93cb6edc4c9ade7bc511281dbe5a128c76099a705b4ae4cd76697852dc689fe6e384e6f9e793caf3589a0c72213288ff92a8b92d79689bf3bd1fe3b7a6b63f85cef71dc9b57148d37deb252431b659f04a2b2bb43c7ac9e0b29ee430bd052410b41475970bee58b4ff4c70b6a1b639de0674eec8185e104643f8dff4ebe0b8b2d4d8bc33b56fefe87fc5d9873522ad16b65642e404a86129a378d74417916ebbf5c41e5597575f6034abf980c14e0f311ee960a5c2d5786b8ea82d568fde089ba5d404008b0136b5f178e099a4d49d29e355b8843a67fd8002bb83e8825fda56bd4b903c1e2ce1c1219ce4ebcb3ac4a2d1f47c68e11f6a8b1f7871ed2e1ad79759d7bec9e9da85fb4bd7cf8c08ae5028794533f6427fd602fb304229f1fa7588052e812273b0171b294530bf5c792fe495d8f56d56a272f01cd06c38f0ba8682ec4331f7bfdd41a1c3af0ea16a3105569627f25cbf9c82b0404d60eaf53713b947979f0b7530ccda1454c4dcf8099d0a0b5282ec6b8af1dc318f715ac626fdd2ad67cf563b6b9aa0b406608a9903605f9034af476ac7a9cdadf50972133572ccbc2c6ae7feaa84c91f3ffe682e5d711f2c3efd5f33fa1f388f5a9b675ec4bb588975bd1adaf063f191dbeb481dcbcdb571c523b6266c23bc83161e5572f2ae203e5405769956c5f0bfad048598b6084a65b44676dd48c2fb633764c57708d8230097fc61d64caf5dc8896913f3b275827c67d4e6788535e527039a421a127c8cf45e562b2a72e3fa793456af74ba51398418c2be9961ff39f0988115c73a6eeed1610eb3f899442cd909a424e9cf1a4374768e96a233a9a7daaf905598b945c7f749e8f92673cc2c02003c50aafbe2799104593f84fe495d95c1fc79ab0b4c450aab2b9ad1c5f432ff9445910e913fa2c2a1eb14fd2bb1bd1efce74b4a4714e03da1b3cda1cd0d6ed68daa54f9f8c0b043fe89765e1a119ed6939c3f6834819dc627f4fb4357891e830241b349413e8022f93ebba83ff7125d9938786e0092ba3c93c9d747c8966d62339f7e00ef8ba1628eef174db3619ff949c72da4c477f081864046c244fe545f4ffa92ed553686f95240084020257e562749445a380641c3cb1de2b7c83ac1e3122fa3cbe4aa2d036f770d72e8d07839dcd8eefb14fa49bcb00ee9706cf15b012867581094f5900a0c026b66ec4c18796bab121a9ad7ff81739ce6028d36ddfed9903cd2cc8bf0faca78dd3c79c2591cc17b4c1a8b9d4ff34169a735db77f1313a33c41bf199cb2fa412b1d17c8f8cfe876c56f8707d9c4af332998f9340a381a08fb6514d9bc7e39f698b4a31dfff1c7d845e27894167e061e2dcd0933e78c5e5c29513e6fc5b4608c8a8dc3fb85cdcb266aaddc630513cb0d217f55d772c6bf3002e944ccd665770b6d80b58d1d689fead162391cd7edaec3c52edc547a5cf334e6d98923ae0a70ab27491199a11b3da537d48d9b75c40339e3e3ea3aa47e102471962a571ee94b350acdb05005c9582b1d9a986565ce869a75c489966ea2dd1b21afe479b692518c58ce3b71829bff39f8467ff6a5cd9ad43574f9da95e1471810ab065e589d116e1b20abaadfaa84844804e36a7411ba7bad397adb0bcbca2a3b165f78959057bc9f19a1d523f99ff2cded93ac85fb59e817925acc19aefb837500b342be34367fff968452ee4c6224b980b4788d06cce8183d9ca13574e40f046724d6535d044b81599c33e6a7e7c7065ee1cacf1b8adc770e807babc0fad256d82006e22735ebbedd05d9d81669226bbaa093997550fa984b8758be0db516b2b86a00e2443393a5b2322a1881e31a06c8a491c408025a53d26b6b04105778673a76d7fe8fdefc435b2f41aa1e3587d34d0e3c81d26295f14802cf8f1ef1b27adfb855208bc737ac041f75be9eb92db83dc51c7b5449d7f423a62078509efd9091bcb4bcac21a83fc8eaae01bc58c5087d8461db5a5e84c7e266e93ff255a6677765f3c5d0b12a4e10b93bf62ad4fbb1d112833c501ccba93034e072ddaa29736c115aee30f8482e1f4803e56716cd03e7a10109e9c01c993dcd4af0941a24af7129bead8345ee7be7bcff553ab9357985bbaefba9377836966682e3dc9bc075ffb4b89a97c8462f898c9848832c33c08ee6f730f04a20f840143fcb4bb9e003ff46b4da340c78581bc4c00b811e0e1ce146201640960cf3e20397115d7d59e473d7c1777baeaaadecff3fab80600a3e3e506594e085eb1ee5e58dc6e93c651b602afafd293a015f4c4da193d054c8810f7c4d2d4e3da2570401d88422ae89291d6744e465266f379b28dd331bf2cb918809323ba370e2e3c0ebc6b389d2251314f920c4656647432c58aa5a41d73fd8f363907a73f5fd8eddf24146a00c2391ed6ab1c9d04cd7d117d96c71e954c7c7e2bc52c3cccffee82e528ac5422bb0cef52cbeed79f664ca4725cdc9d97fc1da6aeb8c89c8e97907b2e4a6c68ebd08ddb96fecb3cbbae2c625f83f288fe0075cde320df779e37e93e2e04bf29a5d95da4ba799f9913b6372c36459f51793e9cb0da66c94086c5c80c4d5926418d8c245691d03055a78e4ab20d52272de2d47d2bfac20186d8527bb9e987c3da9c00b290e63c2bf2785b4e5b4ab0f028f9dd47f2b6110c79d41da0df3998c69fa5c4c4ef6fadcaaa7dbdc90de8a8c1b47277133e56f8db50b2d1b8311fbfee1bfc5fcd8fbfa3d25fe32ed7f2c6d80a79d7fe34c5138ae7011104978b4ba059a0307c2d6aa7706693288c58d36e72026e0f941f811ae420695314470304b5b85745c4644aa2cdf687f3fc61f277bf9f04af38cdc4affa95e2e110bf2eb2adb9aabf737cdb189fca887d618a87813627cf7de8753772fc001f24d6509dbc77ae2e90d17890712d5c33102a63bffd2aa345f5a446248b22111395f95f8582c424e7385dbc8ba7819062ef32765e5978f8c0f1c542af15b7c7b503260de6dba3724a8cd3e4a18656f15dca80f2454b778cf62ea5e63191ebaa6ea3e134e840d54d8bd78b0e04955cf6da4ce9c02b1a262157a8c65ea4509bd39db75f4bbe61af0636c21aef7836bde6f430cf8723a1c6cac863d58ef73413a5db4b81346ccd6329c92e44ca79e3fd9c5c84bb7af1179069780874d0b2cea08214518ddec762c8d9053780004fe699f7b9163c7511a77c5b70593f43b184d36841a1e66624a6ef428030e2c13eae3f215db209b37c753a6c2724376113f83b815acbd276212a626df0adad3a40a119d6252daba87305e61f92d7a96d71ed34533333e356a47e18d2ce527d95e331095a69aa6f0cbb6e8f709f84913ef555929532d4117fdf0863498d21a8a4920ac40e4ddf0d468daf9de4228a6b69c9913ff851adf8a1a39dbfa5f4a375ae4c8209bee64c316c4faea64ab327181078dddf436fb9525cfb924cb7ecb85c9ff1977ed3700fd2b566ee911a67f99ee224f9e67d1f0e4d1c8c503cb6aeaeb42ebd78a162a37c69ea990cee51cdbf54ef26bb6cecf3249005c9ffb4dd64c1730bc9c39adab41f5ba9422deea757e68d926613215e14787bb7c8af027ced3ad1b5cc55ba96d2f0f04324f358204d5e21584832f88c2c36b7985df72b7c2a4b70b3779269969746d6527e1e2de135bb9fea6a9b13a4bab92e9bde93f353b3b1f71866f70dd2c9647ef1e3949cb22d040ebf7b3509e3003e59708edba94656d714e07351a8705b55489929a0c64705faa509dfe976686b8736bdbdbcf6d1ec6d9aad9e60af4c92dc76162a242b96383b551028f74ae523a81e5bbd357ae87309b30625c21d525b058b4d4a5d62b6d725ee91de99eaf1d031838660525ca3b0858e5abe6c343312f1b35d4da8912acbbf48d5c1c1182eef33a3e0d4a475fb5288bfba0009d32c15f6847f53ec22579fe2417e305d31126795af3cabeee92ec2300f49cb5338953790813c108fb37edf70e557d7e184d8975abc44c4b0747e5cfd5fdd281788e5c7e3467a552801223ac1a94b8a8db4d49985c036797305b387f08a1ae4128bc30f3302925cd6a4ebe279d8b81742442de1fb966f06f6a25669e80bd6326404ac8c4891d6de019fae90df0852fbb97b9b0b551666bc3b8f2951a8b031a5c0fbd52ee1b51da43e8c19c7248d32e735247906688b536f49a2dce83615aaf14a49bf60635d3f360aa9fb32d92e470e6519f7809b951af33dd89eed4921a2b173df5d451be7602538f8dbe21fc6653e8436bdbb98fe0c7bba8654effb724948cca4924e47c7ce9a147341f970dcd9720c841a9986f790c8aa78d0cba3774b7b056054d5f85ff56ac8382ee13545b83ec70eca7273666e84e223627cc9902c9f9fa80e535b143e28fe9eab10326e989801fce4eddde2c15a4aa26166e5f4520acc83007cc322ac8adfc39f939f39075eea11065b224ea5d32f391ac32f2dd71080da31ce464de85c3418a5351755648de05a5984c5597a025015aaa664b18c9545e66996df93af7b2a1aa5db86a7c998df2a93ac31aa98bb99487ba461f2bb4e98e5d1d176646a0878b1cd23ebc5c718627c4e07224d7f8c05b7df377570b050234ab7b70f0a7dcac9750b2d5c2dd2bf04cbd64d7f84b54865da8908567c61f2659a776a5931cdf9907654003f0bf367dd26ee92275fe33c541165e6abe30c44363e671d65a33df72553d9929f18ddf34b05d312826565ac2f7b6b85a6edb1b2717d3e644952f84109cc5cb55cc78790892ed7c71c46a0c912b544b5990f62c166a680769713e345c1cd632aa97089739c71e1b49e33938e69f4e321809fe8229a937abca514a2fedc83d319edb73892ab79c8eba22d6432243262d62178ed998a5d25c1390e9a3b3fbb4809264656bb574bc457e2d8d9e2989128f3b1f50c5f07005f352c50f9cf8450d48b5e4db216aac0256fd30101c45f9f08fe0fddf05834d69708a20c54e535b8c423087a5dcae910346c8609365ae271f7195b1afc6eb21a7d5a09b6814e40495a791e7371342eabbbdf1751470296f64d9936e01e06ab5818e78e1dcf7c53a6e793a5852f4787ace28df681218f2f6c88b55c0cbc5323b72e088bc2d44b8ed2dc6483a0e91babb4b47f1a23d8cd045045753bce87d81e54973c82d5fbb1e21db92edcb8352ba83822122b47259dcae489610f78ba0f2f1d256251a82c1eb41f05b503b0da0cfaa37d9fe04925a0dea59020732d2da0e115f2466aa8efa95ede1020bd32b71e97bcb935efa8cbc6c315c0219951749c34f01414a4005fa7e738242a6e4b5ca2350db662571f5f4018604d54cfe6d7568691562ecf070e9165a508f3315c1490fe9fe4b212a20bda52e0a11db413514ae5720939d8306ff3ebf90de89beb824b932db7bd8ec0e8883a6b7f361b1441a9bd550db59149d89053a9241aec86ae6cb2ef7dea7af22c3055b7a281b9192e75e0647acc825fdef8a257dcbaf1b40c6b9bc9ce484ccb5b7ec8e316884931341c23d3601cb74e078f81eabb7edca568284f586e2ac0144ae24bae69a9d8a9887315658bc7ccf636bd43d6141534806f1f199740250135203687d08d80e78166a8ae16cf5feb05a12826a6237040967613f76888e6b644f8123f7789efe5b5e508918c133d629197d460d1a81cd2f559188e42b3599409c76cc44c5a7aff7f7369f500b82dcf67afe1e5c4437d1558ab1b31864074ca274b09f73ca711cf6d8efdba32173d6688379a53dd8362fe6675046a9dec12847859b0f5916808031f7b737c0b5928412ac2f62d8ae36c0cc86b2a60c013469e2da670618b73b447ae710564550c0b2032dc064561a2a01510816f8ed3341ae8a83987e8b710d8afdb9c361fcfa107cdd3f5cbd754458d1e71aad6d9c35075eef822bfb66241abd24bb2ecdfd89f256fb7ff64ea596e66a58c7e239aa92f1195804db526fde3b724e37444cf79588fab6583c8973f07396afa28cb53013f08fe0d5226b598ccfb4154ebc25e57204594b8e3d8be94ad405f5412a542dc3dc43970c736a3be239b5ecd41b8807a4dad93f764322e7b7d62d25d75b5a7885248fe813f720ab2f4478aeeddd95a9d4ea1a5268c16ac1f71f316c053ebac914d748e47e5b9a6713b9e6fc4fa61390ada6c237bba1aece1cca69a2301bd0fc43c37f0ca366577e638876a2a5123b126b0f4aa4b3840d5737dd93b7e5f75a33f1553c490366676661afdf5d40b8c1dcf9334c5c0f01524cf6ca0b1eb30316a70a596e617479301d7f64b690ea1a0dbe456cabfece99fa5d862ff7113fa43f8608ed354312145be80c7d9a97663eb22ce2f7ddf0d53975a39cb9dea27ba5127c946386631a5d3fbb08a7fe9d0e889c97b69567e6c5391b437b9f18367fc867c8aff52b2c5896905c9d67dd7e69929def3c089f68dc1cf7a71b27d23f1d50c898cd9ee597b13f1d46c11bec3a4da90b7e65abaa85b740834f8a907d2d46e4a08869444ad21d106a304ea63a597291ca4bcca7ad80066203d11f620f84c6378c805c71a68c15c66672b764b9d0d091c3966da7ad8fc428d2526bd78f62d8729d7b19e9e3800500344c2a83b6af81a230a05aaed704d5c68c4afa33eb04975e461a26419df4e30078c10ae98e32f773381404782ba060a3313d1b0708c5e1b2b134f88fce4c78de0d7e928a68b08d69e7b5c076a748c8490c4c11a95695e79b88c3c26db7c6435f38935a30a122e6c250afd5b86d09e62a77d32033002ae8321efc22d5be1922d030c7d4c7f46879bc09fe2ea79b483d17d98b47592d68b27c98fffb4a1edacf5b9761831fb2d1f226ed4bfdcb9cbd68e308c3fe4965c8361ae87dacb9cd686a1d21dc451eb6aab0701aca64d8df7a958fe8262902c270ddcde5c295dde149c83183f5a647c55805bc5279e50d19e876563e17e711837a83ac943a582d7cb629073419118cc8807cb6df14579e265450975883cdee7e9dd5b9b94ec95ed6aefe39207a535de4524c2517575d3108ce0630a0ecb3888362d55ad2130cc1333fdcdb369f6be12a681193980ef73f6a07e44e701a979b027c542aa7d1a365618efbe42ae7842e83fe9e8ac24081dd41c36e27267f68c19869f7d7f2f93277d48e2f4201b8b7e4baf124dc909344d6919afb1bb70d038af8c16128aa8b6fc0df10a0a6cbe783e106dc81aec08558c73a71054e7ab8a88ad21fe6b3189b51a49d2ce3f5a6e489919d07d1601d6d9b1c7d813bad6e461fa1e96450a796ddc859c2c99745910ec6276c25b157d1e1e0994cc20c74951b6ea904145b837e623c7740c16a222fec99799c15d24145715f7a89d38bd839def5b413d3265ce3036fded1e4a3795e8c3c6c0b353f7c964e464490809cfeaac17b268220188cda6b3fec3970c160e2fedabbcad34294b7165b2ef787d00ddf9c003ef65044a2c713d0fcaa1375aa4abec60a2145a5807e91a074142c362a506bf79aa2ffdf395c8a18c9a4593c7086b90ce1d57c2336b664342bf2487f50ad9c022aab6fc7c2484b2bd2b840907558d024825c79e20490ff2a4a7d7a14804314cd32570a35b087ff67c148ab05bca19dd9402babb88c8c4fc79ee78c877c7e82742622c91e6ef32c9770f76e2525a3a311d7eed457218a13b6567286283587c89b3d59be105190e16829858439e2a58921f261d6f388d39c4db0ecfb75b22afbc2377729c178781bf2c267aa2d1964e1300a4a3b5b5d652d195773e3095eba938472e0499c0db7450400969d67f44f3ca8707cc8482df5e5a6243bc8fc4b1297bf0f282b7f8b2b9461637ac994e01143fb816f7521a2931c01ae713bf2cd22fde99a6a75624333fe2c1fe6d411fb44416640d4d9c383c04496ed243b9ba3b9934c84918c893b198fefb520aa9d23bf2b4694af1be75df9a3c8ece1c041c4f8ea0b25fa6cd973db80265bc07baa03af0ca617118160640379ed2dcf3a8a9d27bcbe9b3e9d21efa674c40cd542a80502ea104e3bdf3b7c26cd8d6aa9e359e55d75932247aa292170ce5902aa450c6699953d5c605118e0e7b9c7e63b1b87f7446198268c964bf2b162126508fd65734b7af4f975695f4946f79bd0c327bec8854ed5afadf8431577a539a83630a08a2a09a772cd16235a5ec9e0444d61fd17a37736856fe8b548fcd8585b1561023076ecd885ba995381bc75a8c3cee0345822584a536ce86ee8ed8b2976c4598fd74df097e8738b73dc629f9a96a9cfe07c2c92261a53b5979f676a5ee3c08888f43598dd9d4d970816e6902f353b4ad9d98f2230e37968a46698424b8c12775aa6baa2e7ac762d4d27ae6a3fecc875c062e950768e543e55e789da9bbee404eba9b30ad44a0ecdeb38c4d59f3234c4ba30c64ddf7ea086996e308ee0ee51fdefed8d215cd1d874c45dd0677af75dd851a28476384bd47a0184ebe7feccc3ac3c259bb3aa18d0f23ac8016c76a371a85a047dde979b157129a51e8d85c06506818da01cb42e9dcd542b98d1ac1cd2c3a209aea2388c53b59e50f5abe6b27509a759beba66780de8dcb590205d25f720cd0b1e2bfa427af76f4b8c455e989a479da55f838233640b2ae9bf7491ccbefd59ccf44bc2d0a5c5529770b7f71c4e6ff85a7157f454c7fe07eaf3b6584de3f8b55c9160c6f8132c7997f5959629eb6d63bfdbae3c78af131b10281037d4e2ee7cca16e681b5d2bc53276f4906e04e596ce9983eeac4892c27ba9bfdba693d37dac5ac2626d60d4833a2586935a5a81951f50343e8090d9b3213d007181340d6ec5f349c993fab9ed9e1faf78f5337adf5e16324296d748b6d7d99723225c836aaee503512e1db08435b2cad8812d637c81126141036566a66035f81d31b5c91e8884c587af6038293dc140d30a931b17152342715f2af1947eeb581b4d53530151a853a73fcd98610087d2a1f61f292f0bf4bfd8164d254107115fea7035918a0bf77c9ba0da2af419a60a105750b114b14c8d17345b0a41f39300681c8c718a603bdd23a70a2ef58eb78773c1d203859d94a8439b1c8bc209326b8d9061381e74eab25fd1aed9196af025f09b2767a848d11bda21aecf5b5a5c5981be45af3ce66902b51968ae0938db08e74c3503608846e7e409cd7940d7f32194ff49b4b963b0b30c7d4a8ba88296b73d0cbc09624ad8109a82b5c1d93417ec6bfe951f4a567a2275d8849277f72e5d236e672a31e1cf23a5aefb1734ae9fced96a373398255a9fbe59df1dcd90de0f53b681b04a57f75fcf77ff9dff284a155ac06906758339ed66206504f754a92ba7711a4dc66374d74f69ebd9c806919ad5763d0d9062bfad0f56649bf0726a99f5f6b9d908c7c6cd6c5586243315c0b41b74b6b0db3c17c7ce50397bc48b2d1321a080ff57b4041f1e5dac80a2c659079a0197403531eb7a2eaf4fb4364fd15b05927e0353f181c11d0cf66195f79296b4bc485bae6d90cb68271fc97806e3dc8f4c6d8be8b7018f231502809fa2201290f9651128e53938a49404e83e57e9d04b8ad18fd8bfe7300c783eab60eca7d902ff73ed0a7c831822760e4b2de0f7d6da86c5613aa9d67ac7f8d58ef73e25ecc3baa8c7746c9cfeba090efca3f38a018944a4fd43d15a46b4489bda506f8b9b71e9de2d2f6e0a1474b66f62dd0ab885c7bf6b49193f318c3aa98ae0fc559da6dc336b1a41e08172c70dce8eacff3f82965773a579b5638ecf3477257d458229b5759b7488785c9f81341b347a8483f0b18f34804c8a88b9768db7851e7c4c384b857d47252d4daf3a9c4a3d341c0b1c95f573d7019aff5413107859f8613ae00a8b22b9529bcb3c481299ebe899e5648be87c54c110e68e408b88138e9c0d04aaea25c67230617c7dd2cdb79308e3de47bc1bcdb081bec9d00737652406d68f30c94e444f53635177b662f83fc06b1a1bc1c8cbc289fc410069ca8376cc911fafaaac88d23e10bb7db624c864fb0cef52758f42f1eb8a6262b207fd60325cbce480beda5ed3bd2e4bb89e402ed4d6ca41867bbb31a3f63d4e29d21b8ac68e4bdfcf44e54851842b5d44d6749df40a01479f6ed10d0da502aa4ac1f349f1d00dabbaba0a96adc0cf7dcc0593adc6596177eec3e2451c29369c558768b97d0fbf8b946ce588d25bcad82323245d462473b2ad45de72e19c9be40875864c4e0b55aebae9afdf294c4072d7414d8ad39d5d315aeb6a796b3d8e08f01094dec8642f64eb8c47ecd334673069cd420c03f0299597d8befbd7db7a922918ea927802fde209bcb02605a09264714d70428f978b11dc48d9a083a427ded150d8c307503beeb8998c150716056998256fb3b8896ec2329d00f9aa0125fc0bbdb00e0543af06071355e67dbe0dd6bafa1c6e176cda78e61c1f25b51a92462e1e8f2f4a0023cac3f4fa2f5e19352647910d161d9df313cfafcec329868a92cefea302d91bb6430ac9bc8f95296b9e9c71a406facba6314a44d684e134866cee7b0e58446f15b0dc2b0ac4695e31c5e84bd9b7558f708d31571b9978743d4d6f6cfc8358eb7a81449f6bc44720a13a673a04ee4d09212b68666e020ae33b708394f005bd8828b5049bc0c6c068ad1bb3c4c2f6a1a3a67cd45f824572d45ae798eccdc46df071454c0a999df6dc5e9d0b0012c184a72a73d8f1df2d30a7047e99166aeef5c9995b201f98d0c7b4704f00ae99b295aae1dbbb4c049dda43df755c3b8fa0987d05f276ccad132e02e5913a0a594d61bb8233595e58e47083b0a9b9f602a4582c1baf53b1125e8bd2d0a04ff6c3e2b43fdc0db360f350b30ecb7d0b4d5178ac36b81cd17b89b3df5fb8894388044770209134dea6c54ac774b6543aeeefa2dcb5741ddfa6aa1f74d1dd9d5528b1817f58e6989a1dfd3afc8da164cd04efa9ccd5695c9008798289f164271eac512c0b13df9354134f71fc10b668a42475a236c2fe43feaaea9dadf667bddb10403983090d33e0fba8a524be4105dcfaa00e4281037827c1410f700fc281177837434117702f868236e81e46810771bbd0936d1841845eb23760309a2fc4e73ad8afccc9ec467758c0c5fef0fdcf72c05da9de4871772dd7e68a6d74c8744921ce8b5e9c4140e6c08124b033604882f25045700260838f423beac5dfb0ac90ad9a7ce03f0ee529d65698bf1dfe9595e64fba05a3d5bb107b44c171499c0d71c8e877ae813aad802d69a2f1c7447e101baed7516c5034c28b4877f12649401fc6818aabcb19bf4cd9db5c18c64249412e1f060d64901cd9d58ba626fd03d380151c4f880b884fbc9977c2946102947f85fba4f188befc145960eb62181848391070994d6525aef11bc567c42c76925a0f4bbc83e412d17f5d41a13625d31055612ccf5ee2f1e4375e568965e9c7af19108aace521c63097a2cf82cdab49b46b303d3b127ad11d3d1673b78d3f29efa6309b5015c7e206a28a53b1a2234d084d725db46dd7395852e23f23e328e0dae0b8882db446281dbe87a6f669de8b48b2db84bad92a3384b9f0a1ff75e60ed80f476607b9967cb2eea72a3318919ba2263f6fd447482c2c5b4dd94a048efffb3fdc9fb82884b52213d862c929d60c9236b5785a220d0bbf2cc103ef3960c5728f831a756b98848b71c21e4b1c13285c58fc8687af6d648b576bd45650c50b25572090646b7bba89d5915315a8412d3079014f54197f48e3702a29ad6f2744064e501ebfcd31c4627421f820897b5221a6b81c69727d191bd202177b1bc4409b11132ded3252344eac5af617ecada03cc6b5f179cf25c7fbb194d9963388af459ba85567d56c83eb35f76a59eb0f78e83d2df4d9d5c8ad146b34775961b0ce3a21ab4853b5d8098c1092d743a22698c2c98da419a15634b81416c909d5ecb2ea944b84110a5e0ee743d597d25c831dc28ebfd7c36e9ad04bddf28f4918d6cdff40da0e72efc2cfb80437e8126647e12f2d17f051f874e9ca0254affb5d0e51675e3f37764ee6a34eb514e37a4fc3365d3edbab317b3809ea67a75b06f12b251b1ee20c432a82bef83158441a12e0d33bb31550c4a6b5aea77374196078a3f6ad1c9e6176f35ec206e1382569310f798bc1bdf779eb08d54de054907d003f2276be229842271f80e20e6acffbd85b26aff76d89276d643209f9e38508c954b1303dc55d16be4d612066f2dffea7f7516642756531dfc98fc5f055c4d86975e47044c80973944342c70420bcf5c4ed295169cabd5ab94cdf0691421739365e171b2df5b0eb72427586252377e0e9ce45487aa2ccedec71f6be1db3033538a877c8d9942c945647eb821768d1e43f604b25f7a59bcc3c794753bd2a00a258b6ba37ee5d590aba5ab24ebd6b43643dfd9227f2fac0715ece3082c6fcc84d8c4587c67b21a2983573d45aed4cf5c9183efc68b6e11fa124e84d27c04bd322aec744bf74680c18599abf7e3987505ef96f67f6ae127a2c56db25a328ac01af9fa05b9f28b3bc5553d2c766428eef020469ea7c62f66bd95fcbb419ff7f74fbf102543ab848bc135e3a11170f8871dee17276f963e57098df1e5f1db5637e107ad649c94e14d5afec10b95a4adff6c6c87be83c0e0b983bae0b369f74c67e80ebb028f003e156741351637217afa2319769b81ce4a686b116789ab7b9e638d159d39e83e5e37e0f0c8c19c2a21cdfb88916ddfe499a12295bcfffe36f506628695c3af8d77d31c266f52af847ded41fe9e83472ee8ddd3dfc953660819819e9d40a7b09b1a5db3825960478bae33b0c08aa2ff986527c128837041c9cf2ad830c4dfa5d55affef527dedb22f268b88718ff98ab2980ca7874069f590e012bb01dbb827bb3e4cd8e65855c4e6c9b4d56b23a615d4d8e981f01a9f90f89a71ba4bcc9cb2b054bdd0cf6d9a7e48455306a93227b18e4c5811ad3f4732784205cca1cfbce629572fa2d75d79180305d2ba1bbdd64f64e5598ad5228bf1db7aae150ea1caab68e46373c0a0faca5acbd44a0a884186ba0a4cc6989a2920597640a63ee00d6a1ccc9744f8b4e37d7883056b419ddaf51125b52bb375ad054cf5b2842d06860555fe8eaf0586f19e6a2e9aa68a16ea324f9b7963c1e50ed353229c38bcfb26b145cc3e14f83467f6eb4f8126824ef9fa69250d3ecda2f5e375f3ed5432d5c358dab8a824461142eda3e7d4bba1b5a6dbc2726185e7b7cdf7b100a882314011d61967c22294bc986d094c6f239c5ef2bf90ad6901b2926593755371a48ff4504a44f427b85b8c6a95775054a00d6672ada60c2b960cb76dfc562c1bbcd8b2359fbe82d19cabc950addaba68df51e0647ccc7e2ea4468025d1f532c8c6b3869733078067581a8163b589dd4b3a5b1cc07e675fdab7251cd21f568e6f778c312d50aee5429450be3b5d1204e5478602438bef4fecbbc5a974ca1f868064eb299950162d46a27312a5cf01a5e0bcf05087138b5666ed93a09ee713ee7b5590d48ab4c425d8e9a88bdf3d25abbd4650ea3becfcfcd9721cea4d68e59a43ee4809a9224859d609353cdf85faf56e2fd1ea4c5d98f9d564108cb1794f9dc813d1b7a66c6d1a8ade1401bb4833b8da10d7ecb70ac921dc4abe023369cc4f46f44b00f58e39f645a87b4851f57ade4272357bf78b9eba70b86508d9281068cf1e379bd206d350074775d6777dbde41ae6b390a16dad51ca2bec4bb004dc264d98542951ce46a8f94a58520a04e324a84a9991f064325ed6d0172090cfcd3e2332c1e6451ea54de2471cfa40e4a1089d6a3c0e8f9601d05b0fa9c1b24f6f4b9036e81f6c35f410a032a44946f519274ecf19fd8f9d719a5d6a650095898ee7bdcd6557e52b5e3981ac707cbbdb4b8614e7c9efe2beb71abfb7efef8654533936c3bb111d652d2018a3391ff2cc1e1e5c337e5c6990a4f299347371c973279172495ba33d142805ee1fc88f58f3534dcbf0eb6bc0c8bb59e12550f4c60341542309d77cac98f3c406c9e823d84e0928a88aae6fbcd3735752c6309041c15c8aa2e32e222779f252da8d20d3db5584030502e2f5cd5f87de53817d56274260f5800ce0a7244b358026775ff8b0743f1748a3b00399f900e1c83192880079ed7b759c487a0310e85de4b6b4ce02d5f244b0d66459095024e0bc4e34bb72da5ec55f2149f8c11211235d4a91c8018adcefb105e192f8169e4b992a2c1aef02c86fd13e4b17189ce5fbb8e02bd3b86f91144f845b07c2696dfbb7a4ea4dc9f0d1c109e78212fa1641c0b3b81f4a15d9221de7b7e8388730843bff0088207d41f0324991a071aa5d10082949d6f4190e9a4b4396135dd65bcf7feb3a533d238c7a92dfb8150d7b6ff2da41530d5d1193e3803385872703c704cb4f9a639d449e05be6e9490b0485d3cfa490d3d736e074cdc919ec2d27ff4b09360f223e7244187117783f9a55ea8251b693fbf544b27318e3cf838ec6354c5b1879d709c7e4ff30171d53554a4f45bbc3062a59e6ae6618d2594904b44dc83225707a9f14e2507f9fb7911dd759fed679ad40296597d92d59227820d37ae375ff2847374657a8e6e0add1fa00e59151c0170269013b47a28948c3db2d54d9380e88f4d2dd7321a78856482235c88d3714bd6182dabfa47fdcb6d54179ef3fa872ea2244b7e0f695ee9ecba566e05a561b2a591283e51c4b15a55be968d4a551753dbbea5ca814a4ec0996933db99d39d4f0d24a47ad63cfc79894f1fa7bae52ed2998b3e929aa1397c0e3a71e8f5577b1e7d46ec41c5194507d554c42f463b0878be313ee5d03b547cca2cdd416b565c470419fbea984a64611377162b81da8d175487165d509b64d6f7285ad32519ea83b68807c54ee4d09c1b8aebac84cca3adfe138994598df3b50224a93be7487b725f5dddc6ac3d2bc1692f50a838950468d00d478b11cb21cf414ec02cba44fe67800b3f8f51ff41d797d52f765bad07f8731e86fe17b5b48b66d94314976e0a3c39713fae88e4971a0510f51dbddc683d60f6ca2994ec5e308f2d07b156a9214070c53135fb65004e3176356f75f077278d9eec545276040d411e3c90278864aa98b38ea935db123561c95b04e236f190ad5ee22fcf9287cf97fc570eaa6654dd2718546454345ccab38f5b5a6385480b6752303aee72d586210cdb8a9d980e0169c8ee3e0af4a8319a221e58d365ac898bd1b1352beb5808515a855265b42cc9be1aad71596f1d9480a950a4b793eac58eb97ecf15c960656808fe3a43b8ab337c49ee040c82aa776d5b13ed82f7e3f29715a8da5b89a0d687a67534052d784f02a7e6a2a7912a174281814552117f1cc47f0589cb81a1a4384232433d94059fc356172093440d009b38903e8b5182b9dc203e0607baa3ef8551e14010462e1856a03454efdcac3c5c1be8f7350d2669b9118a2578be4fc42a9d420954e7bc9a62fd508fc5d102d3b89461d82c53c62a89f17d3bdf5a26d844c131e987852603b88adfc8f37ecdcbe58b484c838f298fc238ba03444738a40ef5316748b689401650664742c01b89d218c09d4fed9c44fda5bec5751ebba1dac103c88278396ddaa27d69cdaf1ec41b519a775285769b1236aa0110c32c346395d6232424344a4832f96994add1c7ca6b3c0daa039bc09a5b846c3eee2446ea0b23cdf2b697f785b49de681558206a0372f943082ff344c26716e511853245e34d767d1b22981c0b32c3bb6ea18c69ff6a5693233dd20e2204ee3a6ec526ba2bbc4c4186e889fb0e4110aa1191d2c29734b308ab2801726a90e3fee71405523f579a9c369181a4319680086b4d66be70f4c50c421501addde5e7e4d103edd2375f3cd88d2a0b628fe2a784eb5f1e00fa6acf480ecb348df10c7d9cb43883a3954c07b87e2655c72958a4bbb30f328d73784be9118d1c9474ddd0ef9f078559241618af8b041d095be959e6f8591418f1051a57ba2179ec928dce20b58d451ed3432c9662f63359d482417378755b005aa86d16c096cf91e6aa0ca3d52ef12ea63d6e6f05128ac3a014c27a71d261153770578e8d440e4a983450fb18966e6fa6372a01a6780445b409de3937631fad805fd9a01c62638015729d26f02f647b9b977b00dcc48835f9e8f9944180e7712caa95e02d6e895413c30bbb7b09d3a2ec2e4bc917e52f4b00afb47d4d5bfeb030eb40e3b7058a7d1231b32e4f13f601c34bb532b6e9d6bb9293de6ae91668f24a0260323dc4242a7e23fc954345e6208daaf3fcb146cb2309feab4b53be155f140c2fa40bedd6a8398e79b537967af5880238c8b897e3a4d272caa176d1cdae48a4ce19dd173878fdbaa45e20142552968c7ddd302da6a3f578d381685fdc2f94de7d335a19f784df01115a61a418e126ce4af7ecf791c70854141904fd78e5bc79bad5cd153861c591f8553ae7960cc9fe84e508108e628152e246444e5b9b987264b733578ba877c329efbe7077162d4395ea3744826edf3f30d3e1024ee1f12f21131db0f80c4eeebcd485ceb7e5852c0bd3fcd0538c084673925eebe6edb2010cd3d09437a46693dfd624b0d996128ab7df9bc83b2c2ef06ff9d209a110f7906bd136245f16f71e4d4240d5bdff609e81adb1040fc81a6f723e7ce39007af37512aa48090e1d9034be7eab7acf75a3bc548aac7c3f55617bb1b5a2e1c6a3c7fbc19b02e23be9686b91da8a1d923b48b8157f44c4a49fa477c8cd21f9f3770b838d7392ef37cf1a23b6a1183abcbceb6fb60d84381bdfcf4d8ace504c57f4f6129d655adf4926509bf9a05c966c8a78e4ad837b1a0343ae22abd1c60f5dcaab149fbef341df097ca4595e40a44bd4bdb90b3390f51d3b884db1bf79df64e42703df41a8859bec08ffdf5df68b76ba54250a4039618aad027728a373f15d2ffe33987809e66a8084e73215b827032dbbdc4272a5335ad32d2f6592aa90ef0f6c6fb2af024230aa425b7385f90a060f864c03f05bcfde9398a93bb4e2460c52d23c3e4347df751d3960518d34321d981e6046986c41a3024c6c664577fda4ceb7b14c05f6eff8d0fa005a980fe3ff779d0521e265d9bccac0580c353d475cc03fb7d89497a5064b72a67b1c3ea5da130cb0c0c6104c2be2d2793dcb782d527efde96e7e946a152f9c8ce840258a9c443ee11c804a65e5750f9208f54e65c541597212b595964b94a60505aa125cd77157b231427494af5471e385bad673971ab4cadc81200ca369834c8b96f51e165eae9247fdf87675f08404169c8cb41817fbd5f6867fe0a6d54653295c84cb4206af9c3c2c621da66e27609d21ec5c1469fc3bdd2786b292548e4bd262d6a4cf5b2311e884bda9d6400ab6a6986fad1fc0b5548b33af8ccc001b5ca60ed101fb51390f1ffdbe13dc5f794d1429134cd22fbf4a7ac2eb194b49986511739bf21fa8a137d9a5ef381322218cad70881168a45473eb2189a756a1b44196d357b8cb9af431020108908c68c7091141cc9aca262737efb2e558f60567b10449499028e70c0d38a077a693a005b88f98ef715300bbdf8861cb885ffe41945affb180351df103d238a9186d8e41d31350d0e1c736a7d9848712390a47691590511ad94b8843d6899fefbe2aef073e0cb819cbc4404a52d3873e0741ca5b5075cc4ac4673924fd22060d4da6dc720b3e5f8e9a8ac71f6c15c5d288e744046540ba2a6211ca06b87578b4bfe1805c5abefa585379f313ad68dec94055ca03a957387d7c988e750d0e517662fdea2c77220f19201d00e08e2b832ddc40953ac8d0318b669a475c37011a24a65192fc7af5a6263d3aabeeb1055067f6c976a6a80d399bfdaec19210cfd42747852d49455de5aa4aad0455810afcf4dde7ce58cd1f06144da7d648d17acc79e243abe147a295650d2e0bc157e99b10700559e081edbcb71be2fca975b43876bf21bc637e698d3cb7d6e2f251ed31b3ae2b679abbd1eb000fcdfd161e11d9ad252d0b859a951f8feedc887285cbd808a274852a6941bcec26c92b4b6baf8a1c5b22f2ab875ba2e934140798aa060de9e4c91b17dd8782ac75b1ae890114dd509248c166aa08f730e246eca953386a31ca0213f88eb59fe9fb3256c69a2728edfdf8fca9948ed2c17cb8d2000769b7c7e872d0ec3771385e9fce9da73c807ccbdf9761d5750b5a57c582f5affc4937d77a10e7420e95078fc0031feda6f0525bf8fbe94b2e6313fc93023ad5e072c3c8f39aaabae6c392c15d8861f876b6069581995efcf90c0793ffe4356311d384a89343d7cd884b74df5e2bb71ccd22667b6c462b6af8abad895d7732fb04304708b9b5f14cd863e8c29fd65b11bab184e7919fd78d3273a5d34e4153fb556ec5e9ef93b54505fc3d3ad32108d82cb827860b05c7786e80f51bfc9c668cbab51e1f7a702e4ba1cd465797964eaf035562e16f78a90048c91bb1c1a2335d61416a7fe31a9793a9f8914a7332d31c4053cf52ba70b19341d57cb09abdb8623c7c13736c3497613599b6ba153f5f2e00081e9a2c15519efd2636c414f461973b2895cdccfa1c4c63a48c5c050478db7915f6fb063d415cf7bb63da3937d5c5714d1cd4afa00f0832899bdb43be1841763208360daed2c452176818fbd94d352bad72ebd605b3e1f9d65c704e66ed9a4e3eac789dddd02c819e7d4c4c40086aa99390860ca25c512b7f3be617caa02efb096b5bb6b269e27f1ba1ffa399329294fb92e65a184ca378cbb996a8499b10edc799b43b0164d97cc651572c004c7001931c3ecc03c54e1b54ab49770f16b8507ad16e5ca138d51882b772a82e671d0c359bfe46a1fad2a145620d8bf25ed55cf8b83672d7e3619c3928cad287dc6b461dbda846dd117e61bbc94aabd816b80842272350bcf73b21a0fd2fd9b95354a8aa034a9d3ca5970ae20b52fe76a97178d4c810c94f9e7f7288ac01cba67dc1a1f66cebcbce7829e594320ed27422dbb166ec4e88c4f1deac29fd053e484904b727c288460d14e0852bffdd6a9fb284cc490783830bd7b10c3a29208aa777eb04f0714bd01fd602a7cb125086b3247c8726bc69407c2000b9200a1ffd6f760984a5320d5a0f160f8e8a5a37c069b91550de6beee59c9828c8c4536f8a712015dcc5377bd779fab61be7f37e492ddd52602bb363e36c4b3a3b30b21da74ecf5947605c8cdff13d9930fdc65b42bf2c258196ba2791a5c41982cd3f690f7c8da55bed9d397fbe10123b1b80858211d5fbbd4ebb49173a56f32690d63c5db254b12cc37b6e467e80250638034bc7cfc1f640990a8c2c7c34b7609ee94352fe70baf7db3486c039f1e53466adc9206921067e163b6862c1abeae6aab1a0ab82e46d0ba817d67099e844f135bbc6d7706fc6309f0c39de63e8219484b054a4ef1db13d1b09ae59ef2f198e8f4752bb88b9b52f5836d2a17c7484c4b2a3003e30fd5e939afea4c84a623538e031b6b1f15e5eebda1239f999d46dcfcd4b00d8acc170da202452baab3515e86ca15d30102d7fc3cdc17d7243b8d54be7cc384a263fb100e1ab27a1a3d8709b0749ef915b7e563418b428e2606869ae3b97f9800c9eb47cddf57d74be5d1e7bff451adb2fc3d7f58f7b21bceb0c6fc6105b6209e392eb819d39c49abdee801ff1fb7cf28d45167fedb0ac98a23392b38eb6c345a1467ff4b41559c7eb0b6bd5a763ce4162356ee678d255588bc9967d915a1431d1b68ba4733e20fca5bdf8c7d88eed793a07a163cbd7167645f16de6c9775d8a10681620801fd4b902a0b90832e2223088fa305b17dd56e4640a2f1a86723a08f8798440895aa2c2745e003e16a5cb42e31bd6164dc3da465ef8e54b56ab609ba673d8166926ff2d436c0ca676be93be8986f8c749ab99970cbe4118200d6e8a1ea354188fd8a1a90f72d96c7cede0d756e6cd74258b50ec21c04ff8f1c8113f94bd0bf2f154121d7b97be1c3363f8686d4de452c02e0f706961e30f53c70d8182ea3d0291fb3902bef46cf7084979fae86902d71d31797ceddc576276c39bd6ef767df7224b0268446150b46685ff5ab9fab6c83c09b30348cd1e652768d5af3f3d101eed92d87210d12c35e6d58990bdcd46db6e7d5a0ca988afeae4d986931b616fa5e414a480410be9c6db95ea06af1483c5bae9572774b371d657c7c96b6a9e972d2fc5d3e748cb8d1b3cd9af5b46b4c7a633648d99c26892e0b460e6e5175d6334f3e00111651898b5878bc2f47be32ce99ba5b24bfeb7f88d0c1602ee4d4c1f20eb7e071d318e98a8c1c1054f7ba8f5ed5c444fca28f45c01f6091e0da514529a742c34027c641027bd1abd77dc6418d698ba370b2ebea71289d9043471115655459f481298ae5b0afdf1e5d61ab2d93cc07e5380b87491c3bb93a96a8d460f3fdab8a85900b11b25737f3154d7dc7fd234a9022182745c8c425a28533e2256418f1d9cd413795cc388d10d87ef98fef9a5dd0e662b45b53131d860db307581ef03f8ed971ce243b15d9e242f6a8d83640749669557a6d1eeec55e633c085968a3711bd4045d813678a1bd4a09758c86fe40ad46ccd1ef3108fb0c8b3d20a89948e1e0f6ec4df694701759fe9a4d6e8159ca226fe8aadee0257577c5eaa9fc23cbb89334cce10c3283dd09f79536e42829a46429aabc811124b4f7783b03398ed8dfa0d25b4984a3fbe18be4ca9821d53c7a6543b5605e3499987d386a0bcd0ce6513d72b87009a20161c6337a510f8347814bfb4e24ef8cc4775e32b2a06d141a52a11555fbc813ecb3297f8cc6bc1d24fade3ad85976a23ac2ecb15e9ec230d069134de904d74e1215c62b96db1d92c93f83495d00db7246d723525831fd48d1b2f0b8e1b3aaff680eb450f641a4f265e93c2a6628c9b46dff7d6d4ae35de70376397e09077a43b113f001af7aecaf79e5627337806e6902bacf604f22c3004a68e2d711f4ed8e3e90c0d0bd8f1f828dcf223e32dc0caed0128bcd5ed0396aab26ccffb6ae384ae84dbc83a646088f03afbf683ee760814a532c878be2191e302d6d7c9fb7d1e9a66b2a7a8e01c2a59b2505f77ac819399bb2a9598356f058c353975d9702fe48704be36a8bbd7e035a4b260f3be14a6c22f031818186634a541f18b1b5f2707f1e7dc784dbae23f22311eef4f64bc52815c0cfbf11af6b324beedd5608a0185ada5170a39620e5cbe676140781e05470525ae206ab713ef95767168e6e8a7eb152ec0ac37a24f408327e8f978c88593636d05c6dc948b650addb6c342d5f4aa468665f272b93ceb9f88a8f47dda1bef34d4f1df85aa7decb4fe71b54c57f42bf43197f2db8b0919faa20a39d9c871bfb4bb44c8a1f008506e0f93f04f74f2d5d0ac9b9695efbd7f64455fea6997ab0c984209f5e1483cfaa02e3785aab9af546f893432bf1ba42a627a05942daf7457ea001520711ce53c43d43048c826c7a5a242170b15182cf44745e693065469bc900a51bea187a64bffb66919c17485cc976ccabab39e0277137c201539ca8b632c293fe1602804826e8e443263294666e239fcddb323735bb545f7e31dfab49c2cd89be5fdb1f13eb8270115aac2766621387eba2eace600950fed31cd0cc3224da2db3985a92454ed35c0ffb1f57f9dad0ec6463741dcbc0221707b75fca4b22cae03d93cfff38d04375597e669dfcea1c2f84b9d90a44987d7507c9d0a4754c4b541c49932f43e65024c274646b8b4ba23765341695895d9c4363a3267da7513d4d59e5de084589389b4e9352e8f4d3eb1359b2718096eb13049f1bcafd194632de012434517edeb52d6084c6c446d60a6f7a34c5963cdc9cf6a4d43e1979f671f7b7c1fe01de8970f8ba9e0f49a9717dbd3f013bb04bfd59f58b5379d74d231d15673ad6444050f4e783c5210cc4f86620df4415f9e219a5a53dbd36ba114882f40714e0ad13ddf910a2010e0095051523fa0ffc87492f9189ad31cf10ac4c48044541b4b7c3142a38a3fa2f2e46d891afb74a8b4cea25a91bf4e401a2e3370b1cbe41bfaaaa571e33302a876395fec2755c0378e66bee86c80d4871f7469fb083535c8ef5062db9922ca1bde7ea65103ab05cfd578b582751e8ac4045d6e24e0e3f89c8cc454e25f0a4c971fef0d880ed1556016c3320b127ab8df13ea51189d7f5d9d4bf88ae507038696b85b48863790755dce709c901cb1bf17d242f7a7cef104cacf8e83a628d2ec1556e4464c36195d409ce6e5d33074ba40eeb9edb901a1779560981852e6ff378737ccc4f3cb77870c1eb0755b878f16a5d930280910ae1f89c3ad6b03e225f8c1dce7b75da807e077fd7e0b3376b018c0a9298e827e6751c11ff6adc72bce0e556b7bb214e267c3b8cf212eb46966ac653b82085a8c37af87d0acb97ca82d1cb90cbb7a27b0f0337a99a7fdad057afbd309a6364f64a842d0e660a18a12c2315062385f3e644fffb0262253f397f6ae5b43eb9019ccb4187c46de7769e0cfe361eb39cc2962909cf486ec549a04995dfe0376100bf4d93cc3b61a02bdd055bd18bf5953fd8326a205f769c11f32d4d0e088ca9db63bdca399072b5b81175f30e6b63ff6d311f456cff87f26acd2b604d5a5ff5d9f3a632f41268924420b99c292c957f704c4ab46954c38d089ff8887e3925d05a5513166c2aef411dc4255bc5d6f9b426582ea941a0b917d07d500634b8f6749508878eb94f8afe5afe7d6dc0005cd7e68859d9e7775d89a975ecf13caf857665d0a37688641075a9ce3cf87ecd681ec6330752e28b6191478f40c620bd3a9ebb3a15ad68cd448c08220ffa287f2332bec6216ca3ccf826b56ff40e00ea89c56755005244cb9c593382d1ffef22cc50895d6c55d40760368cb64ac4bad9c93c111eae342fa5b183882fef4c10dfe595cc825b74745a5fd81899fc2a6c8ad27ca8ea0d8879d95cdbccd08a01d719fc6f6314ac2b3af3d2e04c4e9ad46cdb0faf7499174a935a08d643b9cec77feb8fcb3e6299143b1fc535998e8f3d1390d69a3ff8f44706c8618e44bf38ce38a7a636d44dfef01bc26ddea4b30e2a668f39a81e1db842d97618945a37592c79b6bc5209c374a3865ed4c0e91fa84a3443ca4a12781d28866de6ae312d27a35c17f3603a826da62881af023701690d89c0da8bc3f0270505d02f785e1aaa44ffb19944a1eb423655639148c3e822aee2f4a882390090f708e21ab09e1032970d245871d809b24c2daa4b21af1d43ac9ccd7c463210c6a33e45d602f92ddc53827370a2cf6ff1df7810ba5ffe06eeab77dde0ca637e3ba8bdd156a891ede7d144fa719e13693ac885f1f6e3b6a36ba3037b542951abe7c319c1f0972ea31ec07288540ae668b9a404ec6e70a63db54ac57027a49884712b11f5a71b8676a34b451ebb4d0e91340fb416f59467770465ef080b7f0bbdafec6a6554a02be8394e0b077f5803a5499ab9a40dc4cf6b13068963a5d616b853534edb382204075078bcc98c4837424bdc1581586cc0a3744d4ad817e5886b63962888372293c9a343855759fa584011ed343eded2c459c2f2cf0d4ac2c110d60c4c98096c2dc6882df2fac128b162bd79700d3edabcae55e22e32ba99559b1aec4933c9728f423b16444b761ec03d69a535a9ee0deef7332690f43fdc9c713c2f9db6875d901105d9fe6982b1d0fb83ba876282048650d8be2856beee2d7d27f6da5510cfc5afaf132c25659d251242879fe3c8a7e63a8f9788536d1d7fcae31e8150fa38232715a3c29b993d8d98b39d662903818433c53185a1f065cc99ec8f974ba219fa6698930fc2544572ea145f1b9c2ef6db0234c5b530cda79997696814772ede320c62a9313f54c232b7bf668fe4035090f1e69df684e79a93d63ece0cb9fe8327e439999526f3fc2d1d803753eb45096633c07ce6b76ea0de53f60e4c982917cdf3b850baf260f145522e77644607eff9386134d4548cd8063f31b88a8a4d10f35aba61bba57c60ad7d712090607b6ac9e4ec3a35739878b0f792678bdeef4d3f857a25d5f48e31fa8d2e9952c1e47adb36b246913320fdf5fb09c1d4e755e09562ea456882abae2e0bd06de76cc9b24d05d68a7d4bb6d00a4535ed06d981bf8b2f3ecd9abdeafff8f847c3936cee13aec1e8d06f6063e91995e7abfc6977d66a89b7434dd01a92a0415be962e9cb25be4751e7150168c1849e440c1d7b7ce50409adcba459e711c161387dd5bacb7800bc554536a497a6891a6c15fb6b205cc9b20f8dcc0ef13f83997ea70e75c563242fc501e579fd3e77ec77ab5857f8a862bb73fc0cd86918df7304cfab9b59298b4c8b16d450206a0bcf09bf273d008e2dcbd0c927adae6572043b08ed013cf5fbcd09ecb8ae813cbba05ff7bca219847a884961a04cb4355c420e62596cc9740b902cbb598718c804e7818839179c5d632ea725686e5a74e73c47006937968758e6e5615504a3c6cb1d591ff41682568f0ecbe96994fc75b951bdebe2ab63796105a71662cfabce468baef2b084b62da0f96288033b84bd57e38585206df8e3c516a8e1e2cf1dcf18e8d6b052b62d51166088055dca3c6b12e1231219dff7e1f9f85912c35ee013fd116b7eb4f12333639b1e550a0ab1b3b1c86b03ff026e50a226b752d5e989cfb4e8ade9f85ad6fa24a7a6b9ea18bf43e84ec27912609debc0ea57804852bc0746c0901db980e2e86515a9177814e530c02b90e8ed95abbcb2ad460065793977bed671ca7c157c7980bf85e4ee39cddb6b7a3370ee2ee795d4ea02ce78bdf2a4fefd9ff8a8a0502e7c5fdb5854c6fd0cc5fca6d1b33f979271e19e5c205228ae1bb618f187fa04085ee9b2cbd3fb83d170553e7cacb764bd4ef2e70da9f986e44970357fba2a29855df6ca853f09a9f00ae95de55d6c486efadcc09d89ee2995c93ff753720571e1ba566c2007ff61fbf77a9312225b40d254fa87b055c7efaf3d95450298d98f4d350113cd38339c45fc2159e9fbec0e63ec2636d60d3f6142555b4699c436f7714d71f77577c1f653e85a03b8c17fb586818859bd6f24336b8df27a3b66cbd9814e83e803c1ae24ffe5849fe0429238813c89641638de7e46bd7171b44e409c82b246cffd2f088701a035fff985480581545cf851aec3850e1255b3a8bc273dd0aee6455bd9b8c61e4925e9d40c953bd34430589fa2de6f6969ef1d8d44136be48022a8de19734b76412b6494f2a84d6d6121c0fb6b41c53f9e04726f3ac1f37c34b69da2a33d79f921c7db7c8b2c8945a9ae8e82ee66d5e14d01ca04b68544d04a236d8dd011c7592c363abc29ff2f6291999c97b5045c895a96688944d85401fde3299e040ab5dbd91386c1370af41a43190450f957ec27388c25ae15d823800df91a904ad7e499c212ccc8ae48c637a2c91bfd63e1629faba437d05f51d840740ba26e06e4d52d5b82c89e4aa73265229ccdbcf772099bd9939dd2d89f68dc9944aaf23e8911608cc23a67f970ff903bf484dbd44f4113667888d4d0fe6b455880e1f7bc58da2515828b471a15618d2f3632bacca319b123d8bbe159995d5c908dfde3a5f34981ef40e9dd3a943e591197ffb2ad28fa83eb161a7c904df656bee11337fb168ea96b9e2620a28ac90b1b73d498dbc39da3feffda990b67d081e4e710a8b280ed7911d4dad5bb8f2b1292cda4a2628a7b402b8020fd462a16208f5d1565249bc111d47f377ec53ee91fca56c06170477a677dc77578612e94f3a3919ba02f206ebd3352a072fd8e94b27de0b86d185a2d41e44f610e1de31fc2ef37188e5c0d7cdc66cb0a5fe6c33594bc6ff3227b1dc59a40f12a57673ef29e85a1d84ba2dcac1d370849f65893b2b82e76b6d730254841d636ed8f1fe7034ac64a3adb623cf0d0ae4612aa2c8e462bbc2e6ecd3cb5485fe9930cd68f8ad2d6573c802679f257d9f25c5f662a1e9c1aeac4b28a0c74fe0d7801b9ba3ac13f4598ce912a29c8d957d662116c2c818c311420c2d7234e0b6492f2d7a04cd3e4e34190ae360335f11e25d40c93eeca994638357d36040ef68b80f3a582e536932809cf5aa5f83ae4e4c2bd6e41c969146887f349af25fa7c10308b06ba889f391c6348e43000dcdd7e71e12b2bc0ffbcf4fd74a852b450a5e6893fdfc03dfc9bd6ba6e33bd1c9e7278141936642f7f2824b1a41d1df55ca0087f896ac28d90b6d5295eef1b7eb9028f5a2d9f8f0d5f32177dfd9f640cd9dc646dbcc09b8b63406e96b3f5a59fdd574760d143385438caba033832ee96b12751874439ff1d1c8992c3a261f65ff848c8ca7476e336d21e3fec34c38f5f173325f1df0e6c7ef771b2013a2619fbcdb58cc11ed13222c4fefeaac377242b455a5792d23181c0612160e90b88fb663ab3cd5aeb3064596f015b47e246fb9b2a519dcd30fb9f8e5eb26342ea00ddbfec9dd378968bf2022cf1b56ae8a16a41e29d0b2a857ff0cfd439a641ddd7bc741775258df401eda476607b69292a5d6ac36579715397af2920c8a7c65b211e013f7f8d38206575fcb6a6019247803cd6798c7677fc36312d067f63912bacf7218099a4222375132aabfaf01e4e76e951b267ea21d55f91b3d9e76edecaf4c26f66379be6ec5c58298776abf4606a013c15408a6ec96513a3a20afb895b421d9b022fc95ad14ff19a51636c785b0eaf3ba5d980cbcae2b506b528ba88a5bcd271ffd5c0e3058a114fce8c021f233c0b0f6bbd89556fb337384afe568a400574d73ca4aa470f49d51177bcb4c2bf1e8b29abfea30999090a6dff4de8f964226aeccc3191e9e11f20917b8e43257a7de2e6b5e57922c9cb0b4c69866bee13c42fb8df6871e0b106ec6a05f5e966c12f0af93d8e083f6f393dcdd1dc0d0c31a7620900fbae166437c9f9afa46b33c339e0922eba64b58950c33ff38ffbe1960edacebcd8d56256be3a152b902c0530362beae46f5c28058e1740d943d9e544012eaa431a0950075ffebd0a0a95ad3e312c667610db25a1d5473487780d76f657b68ddbe820d5fdf4d6f7665f4268acab7af6c05f201cae1d3e08fd01cc50b582fcb4e6d06043b717863bcdb38d18222830dec57bb3de5a4471b16ab6f098c9f8bff36637475f2394778fbbfc8befe9795a04ebee9deaf9cca434d54d8438d54afcb34c1b2304bb3d14b1903f87281be32c4a2ffd52dbbda1d8516127d83af75082d8ed1651d4996383ea0b6716c158e826360c48d2f9840921f1f93ffda5f3cb31f69fad1d18c831690c3f9dfd0c7791af47951732fdd183289e36c9fc6f94a6bacf1a5f7ffaac1d8075426278b62d619b74024524bae4d583eeb3787dfafdacb6864b94caf7205e14a6cee4b30970ee8e2bb24914df381d54e679882f38a16a3491e17ff9a63ea7075c42f5a0294a8880d85800834e9afc0212a3358ceb3c345c3827f3c09905ab702b6c4cf4c20654918e79e3b56be732eb8ebf3159fc110faf42c44748a605ad48c93a11239b2e0006fbce058ce4ac997596756f11ccc4335c03913b02a65fb99264ef1baa146b1e3b89d618ad2dbd0ee8c109a9dd66769ffc6e881708ab74d001b4a9cbfe51ae5d3c197cb2ec86efe108906dc898783a738c17cc682b2877af3e66c680a1534b6355d4faba2c0c0fb98319b3be33e263603004006963b419806ce3f060c74774bee20f7a55d59ac9249e5b62cfeeaec3db5dfb6e933528696e6c592a8881601d58fdec2de94988134b172fd285d1bfbf3f92c05ebc98347c1bcbe5a78a7fe8b97addf721901b2ea08a34fa7879772df4ffff1437d04f8f9d4434287ea0b812981e93f2ef4411ad92660de141eb61f2dd457e729f5b56bd9e84d92b3147072e2bc55fc9d1dbb818973b95774d2826e0757bfa5713200df881be8be58f9eb625bcaeb53cacb4b8c23b91d6aa84ab1178b44eee2097ffc022e51bb4d6353699f4cd160589597f455ad1c7945807a39030e0844744caae8188cb4e79db3c08f91cf6184f627a015863d359901b159c19f12d5f7f06a6ab29dcd73a484da7a80680d12d059fd85dadd80c551a102d5c00504cb7be8af6540d1c49b74c3c597e2f63c5d9255a35fd9f4757427ca0ca6d304229991120763885bd06b2cbf263796ec5ef7890b057a437bd5b4ba2d33da309c2a88962afc4ff895e3b63d4b80487cd3693479e498711a6e70dcfcef24575734bd844b99c35d0582b9d00e97d4342a7ae2d7d137b02433a4eaacb6d9aaa5987289b1d03e963accc0fce9bcbcabe887421dab5b82d93ccc3fb608bb06b16adda437a5533effa4a43c5cf31f0d14d34e16c3bc7171d89c8af9e1e4c2fa49a8ed78986529b8b21fcb911e1a47e941fcb1befc226726020aa576b13d6c059316c145eb50f3462ece7410d5f358fc2413962430c595b677266d48d3776390a7a2a4b7974275833f260712848cd5169ee31281feaf98f16455575a3a22b295414e9c75407f9ddf78d5aedfdcb7d602d14f36d92068fd6726d1ba9b001633f150fcf69a1dcd3236f516391c9a05090c865289ba4b040edb3ad3216443d0b48c1f3ee71228d7691f24ea048e2391d4deb456e186fc5ebfb6ba9f7e40b4fe79d063d8ba8e81d6e72fcc91ba0174b62b28524fc8a4e9a030b1374dc520885762d70b47b79c8fe20ce736785b615170fa13b57ab2287f0656358d27785748409643b67c56ae92478f065109030e6d33bd94bb5615815e52d67bd9ec5f99604937f5fc06a5b93b25f1fd398a936bddfb307bd9c48a797921195c509b00e035076e26d399910318f0874378c850372e40948d2ffe249607f7b118077927860276e7bee1a7d5d4621184fa16c4bce5a61ba500d801b8421b3219aa1beb1b9586ed5bf5fe010eda7beb456be6d8b74e7cc612e4dfd3fa95060ce2695144336e48b081af2e8a9c3467da237b2ea96a51002745b1bb8e3555f1ef4dd596879eb34d68b9d3bbce2c53c2f3a791422fdc34a3fefc08901b9ad418426cb1291b898ba6edfcdcd05f7923e1e7610428f57e6f3a1b10d3b8f19f4df57a3474abc835fc3d4b002396dfaba82f3e2b6ec9e76a677a454d1b8c977c099814ad344cb32012be9f16e07cc88622eecf60431493d1de92aa393da2b4525b365f21ff80c319e76b489bf81f5823940e9d62f8c601bc827fd8da3d67e09f3ef90b3c5c60ef3476092786454be71319a1339d38bc7e1e2f72845f74c38d4f9fcaed5c5e51946e215c672abbed1a0815bf9966d6ac257c80aaca98b4bd21df9381ab6d2588c814ff2497a420fac5342d262722b85d401090317f8c8dfec82ece52974ad3aab1c6278e6a6d8cdaeb96ad03d27345018c349caa3ead242dfb0f85cd34502ab1f187df111bb918e3047fe546eeb2b371c5e83c2c261bb380513973590150ba009f44a0247926ed7d7de44c36b6e1001a1b64e21b57e936ed24cf65aa3691a9ca551325e2e5b6e5544673830efc0377bde57452a37b3064b738e421e2e6948ef61bff3bccd2e319f736726fdd7fc6961922ed89d01a3a598f1a9524012b983ac0aa9f3d8e4c5331b2d391d58596d9d10ad1f21c69f184d83cde83526bb01186674f8d8e3435ddcb709a42b4caf20141ad81755960d3d195b06c34f5694becffd2f3582b30303812955180b74a0aa1d5529843adcbe491dfd91ee58452414bc2101946a1bc27f45f4984f5b1b5051d0046040ee796c23672b33ff051a8a34581241fd5144a1a3ad6c40b932231448ed0abfc866a577115688fa2400e6dd602fd9536436b758788afcc5524b801a0433bd0b6f97eb0f0bd3672a71203211788024a742420db0d83451a83fdf501cae37c7f1c28cf17bf141e56b9e9de5d35ca1a399bd41f054ed6dddd677cec2a979f43982c277d426db3dd56f76d86c3cc12a378056269b1d313f4ea0f8e4b24bef028ebbb76374685c4c2cd2392a19fe5e158d91b622019dc4ca3697f38a4ebdd25989de4fecfefb58cf2427e5b624537b19a5cbdb09ae0665ca02fb5cb95e520c58bd50ebedf2b1f4ee665ea7a248da1e9dce736694917466ee3de068b0b632a4713507706aa8817bb72a24c4e4b78543a75fa194eb71a313d508c4648be59e58ef94c95653329448bf6d995910f8d3aa39619a3e71978e4a1708d0eddfb3c38d6b6a62b72270728466045ee16ed707548be2568428b9f28c6483e0faae63c29b09be106321dc59c2682405cf5cb356e85c0079dead95be1c2439d62b5d8c840015424043a2543a15c3050ba9ac64653e94a1a9566b1762bdb666d7056b75e79954efb5ba257359d2a4470bdb9b0e3d1896cfaeb037626773393adc04e74ba8ef7525b24bb49d540f10cd294696d9bb09d1cb956bd9f2ed0882da4edbdf7967b4b29a59401f8093c0aca095aa5aba625fde72c9a9f130908cf4f27f30310e40eed1a085bbb4837abca92549876500393a0260ef84df58452546572c66911635d54b5d36d67ea33efb6dd7f4abeed773bbd787bc8dbef955c9def9064da9b3e0d65a65bf6fed52d9acef4459bcc241248dd1faeb2594461dab5ae6620cf6f38c85bbb09d4875e8bc289411baf30b58ea2acf04246ccc95dc838d9f638009e74895a155b74cd4091e9a76bd78dfa38a144140a2d925452df52bf4755ecfa6f0af5d9867cdfdb8b76ffea0fe3bd02ea1e7151828229cc7d72529443152d485e963430d427153ab9f2dd29d4c7be76911e1356f6778f04ed568b7adfd5be60ce5585ed43e6b6160c82d252ee103d11e83fefdfb57f72d3d63b085e23facad1770ac812cae2cd81de29a0089abe465a5c616e2eb30b991c8ae48dcfe925f34eb923903df59e36e594da45d96b85be5ad8d6ea5b65bb41166f0e55f6a49a131662db362a2d0f79ce5aabb5d3debb691cd6eab5f736bcf76e9d64c86c31b52928e4e6666f5abb57a85acfdaef8583e6a28dd5c5195b3e25653598931f703eda6704a0bad863d768162a8c46cbba746f83608e28570f87b2c66aa191231b0b4f1e986914ce2954521fe2b472511aa5d31b2277fbf3ead9346465b5943dde3c0582b6dd9f12efe076bd7b16c4775550046ed3fdbd8206009ffa0c13dbb3698b97d22eec4e035114050a01e9d21f107ebaa02ddaa3aad541cdfd69d182a740d0ce07a278ab7975898c20a668d769d1023b6bef40d54b854ac083df33b55ac80aabf71d158a15874a3e123ebd9222658b942d52b48e2b41866530b404495dc660da4ef3832fe6075ec5988ad0c21683a870d917674888ea897dffe30a213f64d84ba41205832ca937a8b2bf5f7048ddf2c51634e022445eb1c3beb702075558b9420719032b9e30815c010ba41716ec7b0e14229770922b78a20a2048581961c5bedff1c486128bf0d00383d7174274163b56f0e3895c42ccbeaf200978632d4a608b2d5320d46433c1ab8db53801285438ec7b0c0ef1c2741d4aacc0977dbb2e86125340021c82a3a800997ddfad70820274416420f62d80c662df6f03876c5aec7b0c0ab91fe03007a2c40b8cb1bbda715dc7715cc7715dc7715cd7751dd7511aa0c45d80eb8102601814f9605fef9b60648fdc215f73935f664cad84fbfca7671347c2dc9f9e61502ac89c56e17b8291e0101d7b892c53c6bea25661056d7f6782f79201ec4f4fd983af85940bed9e600182ee7118faa2d389be6817f9499c60269819e622c92d93cb11b95e9c5b382d985e71fe4e8bc139bd5fafe3b6a9e13be79d787efffe15cb5acd5ecfe26d5a5cdfc5d31667995d3beddfb55770c92c83677da562cfd77aabc59fdbe279ed67ad356fdb6eb55a7cc325b52582a75dc3dfe7d4a205bc0b5ad933c120b68242bc8fd65b6b9dafdbacb56af72e154a510fb22431c6d296498ca1b4b3651263e4b0355451cef6f3392f9e98d48ac8b2cb5398af30b7d8e3fef4909ecce14ade6a3af7ecf254c5aea7bba25490e5356d354bd3ab950a1269af40f79249664b202aac80f73d136d576a5f3faf5e22cb94d9560f292269ee90db82e1cd39c530da2b318af64a8c21fb1406176154a1699ab6e130bcb0b6ec128610338c118461b4e5dc211f46184561107519f3b4e5182fc680f95037647a499fe9655b76719ab22518c423ca89d163f16ab553bccb51c1e7422757e8185fb6ec2206d3ded9b28b1842eceddedfed1476af6897600e7d59c99a66ade8eb5e3168ae9a963956c51828e829abc636d6d1aecfa9457cf9415e8cfa883f3f748c1322b6d8635bdbb4ed57d2b6c0930f5137644b4f5fbd5aa5bc94dac2b2fc92373921f26b8271b4e9570f08401679b6bc78d994c7df92e748c75a96e5e72d95a10463ed915830e19b54254164ddc284174fb687c6258b9f27a9e70de579d9c509ca9697284f6aaa8fbe505e6aacd2d390c56f4e3d44eef9d6bc9c77ed267b15ab22074c3c91590119294a7041b5f88045ca950cd0d00405c5410a041c51c612559020c3892586b0e10008944e50c30e4a88416d884222c5f083086e300a228b30a8103e464590800a1dcab0410b3aa38811e25b7611538318a2252f853dbfaacff445c3d5276bb862625979452b134b83e8aea0f0aa4815c9562e750b0a2a524542e1755ff0acd5be0f856fd3d3243e2ae6b76dd33a4ddbb84de3acb5d76a37c9d4a6ddecc6cd4f5eab82dd5633a90fe3492d997e1a4999a7b4d60f893c270d68b0c8bf7b6eb0ce2b7ece39957006aa9cb55c38e729c75d4e6fd17e4b9f241b886a53484d5ea9494d6af7de9b42815f10990a43ac759dd775d734ade3ba8dbbf257fbb669daa669dcb74d72dc6f28777743ae93d7bea960f7d5f89a984b449eb5d64ae45a8b37cdda5935ad3b24d9d486528ae0b695dbf633b4ddb63936c3f6ab039dfddab1fab365ad75d62d3acde2bb715ea7596e83a1ebb46bda3d4d4b6ea3642c7e8ac5e4e67a699fd2ee3aea80f157e7c18bef690ac58feb9117c050722520b9b50992128e6867b1445709f7538e370a53ad3b84202112509901152f4e58c044100d65847183a7232d5ee88166392a428b1754b130b26099e2871bc27c408611c4808211bc60083166f5c886941622a0d182881592164d744d30d9206521c6d7d18d52da450cbe2e66b0e981c46ceae2496dd9a50b27ba38daca7826501ffc8baf1890944a33d81704dda5123be804bb7eea2c006f57f6e0b124e586f2fc56653617f3065397af390e824f24b7fdc010bf26641dd7d01f107eea5dbf37d623f6e279cd089d4c21ea63c66d4227449fcdd0d30985698fe133497d88ab2dcaa7bd05a9994446b8747bda66f32a7bf85ea0109036ee73735ce5e865e5e06dfb58e114a23e34bc71dfee5124252c514e4b965dc4346dd9a50ca2ed157fd6083de279187f1cf62c18c4fbd7f238cf4bbdfb772e6ca554a88ee33c8ff33ccfe3bc7bd2d62beffd3c3c6ba80c34704955610c761e875128154a48d0c6588252db525f4d7845c56520cfb3241071e6d4f6b6d38ff338eae9d50712e1e12de4b278dc078674533048eade167259bcfba9c2d5afb7cd6cd9a50c1cb604a9d41c886e5e26c2537d5bc86529a368cf19d4b7d24cccd07c5b7629a3ca06bf8563ea9b42126461099a0f143237959a7ba86f0bf3b91c8e4a6c21478498a72d5357cadbb76f34e1dc35e0a6b918f2bc0597cc4d336f903dda6bb61498acbe2d8c227bb4d329790aad402174b3405fdab5a378c8f3ddaa46854f40a149732b9a73a7597de7fe9d3bcdf7e98942e9ef9b01b8d527ebdb700706d9be30097d69c7a109f4a575f3bbb7e17b379fe759592bf6be7d74d38472cf84e224da5afd5245b89506de03b9af2694b3eda33e78e296b77dd9aafe852d150aec36dc12e1dc97ef69716e0f7b5d977a2a350fa65812084bf6cc6f21e724cb2e39f0b2c5b983c4c1f6a8d8deb76d7bde8244eedfb78ddbf0285a117511f450db5b60abdbdef2b6c9e156117cee1e0eb97bdcf769d102dbd39bf8ed99572e2d457b6610445ace5edec34ce88bf274f702e077746dd5f08c50ceb8cd09112845468d909466aeba35a76c9316bafa246334c76ce102a61e1d6d319a144c982326bcc58c2952a214318109439de818fa44c940594235ddc0944a8141ee8cb61955195502031a7d4661b6306d518d986818fa72a2af31f4955316a594a24d373065eddb67d1bdb3e8ce22a0ad6db74936bb69f75eedb65ab96d622d6710524e41fee9214d48f272e5b08e1891b64e3a268bf3de0b06b99a1159ac48d2484e2321292485a4d0ead2698b136946050f7067365a6691e7674e694e4fa554998d8f3765868c1ed59c5e95b514cae7823f52f212ce5d13d2311446a622212d1d55240a5227cc4558b584f588beaa4c31a24e740c2523e484084a0e4d51363daeaad547c938d117173661a509ab967a541352a74ac95421a20a25ac45354a95425fb4e64061b45aa95338fa1425cf8bd4694a8a02923d150923a369348da6d0149a42b27ea1a1281a986a95585881820dd400072b3e508259d5e149044d5e7491c2831462ba233232ca07248aa4a882058c0a6416315031e248063d80414614f7e804afcb6971d4c3568f9966b64c126aea3cc0546b107928a3000627363d100c5030e5b8ee96493098608baf1e98aeb64d2e7bce6965cf39e5080964fb24d23458e499f36b0b96928d52f8328f6891949216d10d8c2eb41256cf851505a9d58b71cea7b4288c3c9db0d877872f5fbea400097dd9731bb0eb3caa771edd7994e44c5c180bac805d37a4a034af585594e1a589bc6dd9a50c2d18558616fa4cbf7429c34b6acb241848c06991b5136cc7e1ad0b81881841a2699aa63b0e6f36675a56ad77455fb64e27668f1f5a6b120c3adcfff4d83d340818c8de964930d850ab4d0e5ee01591af5b945a6cd1d6ac0fda5e0debb63dfa1191b5d6596b4da140903df5558b365b6a24341c6d267413913df22d23f673d76c20fa435ff2af187dc953b13de5c994a7b5d65a241a5085c9fb4983289566ad44aab5b4562dd65a6bd59068d734508549fbc362613c67518549f96badadb5d69ae404697bd097acd3c67c786aadd5d2d41493566e8b3c85e865922ac34d52caa52d25f66edd30d77d4e242ddee6fc619c338b35912a2c8c3c9b2aec5659ea544a93a5485e288c5eb3a2cea489a40a49903018003182eca92b1862df1024cc7ad15204db0d4fa7f9447dec55a7331bce2fe1440a658589131492da13e98a3ce54c15129152c264ad12827cd563b048def64a5b8a705452140152e19c250571c1dcaccb117b9b92a2b6eca9d78240b2a75624f6fd3c0bd63ed927fb0484a4526fdead6160dbcbe979410a8e41a274862c1ea001114e8049811141308051860f1db882092a8a6070850c0f8b1315163255554910c10c5ab0140517623210010d482962065674390206140a2c4d7480450c78a54975815858aae42b8bc10f638c0962034c74e1c0145cbe00f305082c2fc0b2e56239e2d3c17243876507ae1e73620c27e98531db96492fd8c09b81963f219ce02aeb78cb2418c8d8a22b86e4238b0e7c71050bc2b8c10410f001c90724c8d890821e6695bae009ee8a142aa42b26a8419ab243556d99f442154b734e1824bd30c5935e48da79cba417b46cf125e4d15ae745fa7beddeca4a291579ab8477c33bf328a5376c51b9afb33bf32e9530db6dbbc23500def5e0b533cfca49ebbd332e9e7ce841c932e985295bfc929af0b065d20b51b62891925e70b2655293317bb5655213a62d93643892b7d932a989131b67cba426474bbc49ebbddf6513ee5ec39cf7d17ce6f22eea834a65d5e57bf89040bab056bbabec994154dbba3d5528e58b528a8020101c3501038725aec0e08a59086af163b2abaa8ae3a6790de98c2a9c5bfbb47492432c5fe027324985f682f2057e97e0d7e12296629ba73685c39b762939bc69f45a7929c5c2c3386729bf3c02ab884c5f44aeb76a209fd61dca537a19410ca01038308313a5071c1c1bac00715a1065e8e30247080dbeb841064f8090428c59752206a423b8c872a58c293a84618472624544cd9624d4816ecb24211a36b76592901330d6d6b9024f6ee912b1ac5a897db7954819a44517b69417a7d562db4b1176489182327bdc5374615f51261165d94ce6deb41214e41345db6a09c8278ac4715f2dce6ecb278a76b76b28eb15da54d27ab50d731d8725637aa485fa6ca13e5ca8cffde43eb5cf79eae5e8e9e9e989c6ead292d3d2d31215aa5bb67cd9b234ab5459c547f4a9c2e871519672027622425465960b85d127157991028551159b5a307b8b1416a9c2e8336665bbe585d2e2632fbb25f664c46e896209e325bc84973092b6968bddb265cb164db34896cbb6858c5ca55429442e3c99a03549b1a74f4f4f4f60f6cdc12ed9259a14c4856ea9526e716df48233e300420f9e9c835735ec9783ef69a195af7b2ec4f2f549d8bd06aef60d1b106e6b77add4cecb61b088ddf8dea669764aaae4178a275d58f244c292275d01c590268f09182889152613288c5e8b320c98c44aae55ccb6986864df4f7a09db36b9d550dbb47bb59d0555172a9d57e09554fa914831252f3b7260c926307d6651296f82940c680dd1010538bca008142ce102d41746283184088408a2882f3a1bb372f0a4f466c0b24b9930fbdbb24b192bf6b52dbb9459da33d34941d95346a9cc965da6cabed9b24b191aca38d92b262e6b6e95b56d22feb80e6f2008ea561179ed5bd8d2ee692e03595ecbd30bf1bdddbfac89dd372f6c759ad7750f5b19fc38cdeb50c738152ea9ddd60d91b99b1bd451477d457d504459fefba7595c76d75dbba6dd6b61b9612c7eddbdcbb0057e5ca74989e592da2ab285134b6fe3f0a61dc5c32727e588c2893fccc9ee1efd56d487524e093e47023ef7eede10ff3b4aa54ada3cfcf40393ec627bdf9c1334c027b921f617d2adfa873aea727ba0c5df17d2bd85f818ecf201210278e0e927d62396baac1cd68c96736a66d36836d538afeb3afd59d9e200bed92292dc9098370dd147133ab9e27d267442f4d90cf7ef9b71ab50cea8d07c2624fa6ce6abd0490c9fcd68a2cf68f4abc23e7c440654d266f9fe85726b187ff8eb6a362e64e5607088ccc1f63028c43b478493d0bedb1479c3436ef6772f75b990a31b28c2cdfe3c8cb126b7b96d738206d8420f735bf2ce964b2c3166d3843bb39950ce5e9cfe4b08de8ea014dc9ed77db37edbd74d101c7223c2cdfe306800eedec1ac52ad56df96c31607c049a48fde88d1eea53e9cda4e31c6a0a42f0be28b61dadbd77da9630e0c82efd5fa7de0902dccf7c04fbbab4b9e173dfc7161eadfc785a9d32d8921beecef07980dc18484c9bded4fbf4e5fae7bdf760d7fa88d66e6dc6768664010f56130c8863f0ca6e44e4dfa8157d35218ca1677c4707ea8758c2c66ca35c9795e0ae231b2dd99be9a6479e79c9a76ef9cd7b63935fdc9e085dbc36c515e71bf6ddb826cdf6ec12a2487fad0d7eb67b1728eededac20b2b85ae99cafbe104067dfa7cf25d3559dd65a0e6bd7769df6fb0d6baf96d6db51ce0b7b6bd5d2ae4e35bdd85225f754705d5198fdb6e1205b6bbf626911dfab8159c5feeea5a44b93dba62928c2fcf7e95d970af774bb8d4d676c9adaa98b745327738776fa4d52fd3de7b7f6e9e4290dc2fc60ca1df5f9545b29cb1a5358bda6cac77a26af15b55bbd616d6d505273ce39e72bf653e937c59965adcdd4e26badb54d774fe963efd4ea0e1363168b528bc5e3b4c8f3b6294f4dd3eeb5f75abc697a2925825afb6c2518dbc640c4b645d41eaf9c3d430601ca398b6bc562d76e578eb375dbf0d5b39a5375b0558e71f2c5da3b0383ccf2651a753064a98918419204bf68d3ec5795c88a4895c526569a7fedac9a45dd55ac9f9c63dbf474c78afd84404429a6147b41e13a52024f8e128b8891af9488184192840be58af565a3db0ba43651d0128cec22087b1e471b93b57f184b5ba52d2189dc88b22891a44e228b120947bb4116639bfa48cda2af2432500844ae1e228f20292109f5f95fb12832101123f348a61662e97493a408a23f62297dd563fd481f74f4d8dc38eee3155f7b4a240f4ba60d4992132cad2d48400b32012dc85c4f2f832995e83b1832d52a204972420a20956dd33994d69c9c69a50c8906449648aaec47939145b994a4ca509f9fdd9c1a6fa10cbd1fea33c2fca93224746929364f794c4061baa4fefc9024914b48929c90c2bc9d4c55c8dd1281bebeee19038f0273cfcb1fa9528b3950e0ead2c4c8e28b457195e55018c599f5a28ffdd003150185275d2dfaa04d43fb7d2bf91c290b228117596e68f2c50d9e1031937749d9101a4a2086141ef0000a58309351d029e58a208b788b3f4cc6e96442f9a12f6cc77aabf1913bda5f1d347bed19be36c6b11f8c333deb20f0a44b35a404452df97ad992f455b740754bb640a5c4ff2bf6534349b3d497fd7d9d8082b4ba7500fced47f0b7f18ad547b65f3d6adf3edee307cde609286c40f5f872bf3689334bbb5b40d94ce8a62254d79ed1401663b11ad3eab621ae72dbda63522dedb7a26298a4f09ac73664b1470f5b59a03e64116b400867d6fc8b90f29374d26e862c6fbff9d57c4eec8a275dab1cd77956392e15cce76889bd2e65af3029abb118be825efca1ac4d5d35981c1759cee7d021e69c728a133ccd10c5067e9072340be22189314b5a6c40c58b173ce04917a5ffc698e2f9cc9a4ebcbe4a26f661d7b4f613c865eb5955562593088265d28eaffd08bea61d6b8c6d8ec59b86b50914564f26b669956e5f5c2c21b26837bdd7f2884ceabe676299d86d350ecad448e935b5d057addfdd0c796a5182d132739853a6151c8692b913fa82028275edcaa25512a93207284929763d4641e676defe09b60ec07dfb11eedb76844381beea4da02f7146d9f53d246702e5742c8c1ce3448c4d6df15679e84f654166d5bffe551fab48966e2fa04f3393ce59f4fd6e94a8ca54bf3fb329f6f38afdd532f21d3ceadeb316c4884af5092ac07bfe547d821a8f7326f51c0109266c1a91a710fbd2a64ea4451d1752a20aa342f3a9c2eeb5703a55d83cfaf989c55eaf9ff5054daa3179d2459df6a54d1576a50d513bef3bbb53a98abd730472cb18fb66719a55b4a9b52a342915e349d7084442903d9545b1d5acd78bab2f97c948925419ce99c5fa5f2f5961da536ed15bfbabc77bab477b4d9b405fb5843c3fc2a968fa2796312b9fb5f4b38db0ea6badacfad7bfea63164fa39b036f5ec392bb1a72acca5a751e035519be7cdeaefdc8766dbc52f511ed568ff7da47fbed4133f1674fd6bc8743a0904838c2bc912acb18e32f9b9139e54c7e31328f643ec9fc09f3f58ba27d4da0af8baf42d7e443ba4b5c10da951e69a1639ee895ea54c9ccd8627552418e218bd5c9126d61abe2b05537eedb5be82c11ed86b2589d36f71b52b03aada0d3e3153101b30b229c109abde0027709dc4d85d32dc43a3d3b53a7390d54617786bfe126b2d522a5811ed1a3cbca9eb5a15968d8178aecc922659c84d9db8bd404372a692fdeec215764cfe5b2efe9510a48796a14f409f425c1146d379895e73544165d7b5eba5eb66a6cbf558e063ce912ad4bb497f472db306f497de6d5b65bfbcd6a616d923df734ac5bc89efb1ad61acc1df7aab086a1b03134d7aec9a5475536e3b7e6d7e6e6d5098b4c1e73999a8caa1cad7e89ea7e94cdb250720e255a8592c23c1925afc44ac4da75a983215bad826da2b2ba5295ad74b58251979d956a85fa50d95413b26e13b6beab5e734f03225bd9f71a10d9d6a62aab4aa03646b6f9ea4ab8de57a75b8f8cccb85795bed42a94aaac36293529ed7ba431fb9e7219432689be8472d5f27a445fb789fa38d52dba5a8181957bbc691023377a9cb3fc7c6f824754aff9972c4ea5a6f1caa78ddc682733a7b9ead5a936d530b6c84ab146b6caa7d37cfa846eeaf75e25254cf48596863cf4655f134a0a7bd197953433bfaadffcabaf8ed1554867365710206735357a4a1ada19d762e5501534d5a6ea549fa46c4524020e8cc185090b97d9bd1592b2d0034dd050860c8e184386d9fd165226fabaa709e9912a8754697eb569dfd463f7f48b937d4f4669ccbe0f73af289b2645ca9ae6a1affb7b5dfb4b476978b8f2c3968c5caff324ba5ade29e52963cc62e17a420a2c5498bca6b158186bc7d5524fca5bbb6df308d9235feffd342bbbf772a1a67dc696ed9983ecd128a6e25954934c5fb7dbd71048203acc0feeedf367a792d2fd2693ecb1130b2729b6dd625b4dd710c81e7b1de60e4bc4ce4c1546753dad46623c1785597c4dd4421e7ceda26b5b251a0fcfc524aeef17f59976da69ede7d4c71efe7c7dad98c7659bb2e872d9f3508c37d516579e175bb4b787798ced57b5df6b5a85e3ccb358d96609bb5a05898431c6f85f667da10c718571c71ac65b12910d9bdbb16b02ee5d576b957386f876c9dc96ce08cd261288f76be48b94333c64a1adabbf60ec3da8ec621e1e972b2787ea599445d64ec5f981d55368eeb853cf17fe0955990433bb41b3fb1985caecec7ee66034a7509f2a734e15e69eff048dc89efb4b434ef26588b791d0ef777f53c07056a930233a73a033cafd158285a6c11cb9801b93c51747861bc3ce1a1b5299b2388fa8942acbe0c14b11c08c9615c6a47acdac5318a374d612086a371d091d4da61ab2688f8890b279a44502b967ad605b25b6d5476c8bf15195558ce7110542dde2fca54809e39c592cf145a6ca2abe423c0c44befa4299d65aa9a15a4538ac4516362aa4336f7e9cfc60058c8f75cd22d7cb2fbbca6abd9c1f544da5604d3f207becad53952599472faa32fa8552292ca68c7366b14ea56c3b8f509a2ad52ba69094d7ebaf558b179217b44c5a10475360cc39012f7cc85b6c59d8004596273a62409e28b4c4a008a122a32c06704592173bd4d00224a3a52c58b62c44dcc040c50c5eab486d15a947e1db58de86b15d435d82914984c2b7795cbb86ad22235820fa92f656b320c1cca24e78148c3c4fcf75607680524a29bdf75e5d2ba594524a69a5b4525a69a594d25b6bbd97528a3510068bc162381c320e59746d29dab7ea3d92f2f7de7ba5c8ccb24196d22d908e8a6651ad38af5833c239f3e63723b433af7e33c23ab37646486717a4226736a194b06a13cad98c097adee781416c0e97155629bd5d1224b45b226cd978e5c8767c89f53885669b9e48f34b67457681ec9117a7d09606a04aac683fe717d9232fe7c52ac214dada3525f55368cf2f96562f3ce97549da80931d24d47d759a99d3bfaa4c9553a7e0b9a35ec31b5f8543349ec3a1d787f29fccd990fece53e110ce875a4fdd261c6a7dc8e63aaf0987ea876a6ee334e110cf8768bea3c71adfb92abc71e91147eb377accc9f1317c071f7a3271ae8373739c8fb0e3e87cc4f98eab3e130eedd8d0a3d6afa1c71c7a04c06f7ebef3ef7cccf11d3dea9bd3d0238def7ce8d5f3aa47d7775cae8f35eed2634ece5d1f77cee32f7d73731b7a74e951c73bb8b671fdd1751b7abcf1b9071f6fee811e7b70e811c7ff1dc7a1c79edf838fbf077adca1a3f5777cd4f111f278ac03fd249693731d1d74f0d1c63bd063ce0f1fb5a75658bdc9a1b3e3c2a1a1b58dd0d592dde4ecd4c869d1c8f1eae3d3e271590e998e8f8f8fcf8e8fcf0f1c1c1b3ad471e57cc74543a7464e0d1aba85037b5873dce4b468d8c8e123b371e3c2a93ad481d5f0f1d1699dc76575e7b2fbf8f8f8fc70ed9cc77fc21f1b32d947d865b21c38301eff81f3e3e6e7e7638dfff8fce4d468c97664f5c78f8f34fee3878d1b1f9ff3f84f4e8effb87c7c7c641f69c87c768ef303f6e3403ed638901f1f3f1f6dfc677af0e392c97278dc27a6ffc147fd0fa6ecc7479cffd0a3acf5d8c7f0403cf040c7471ad7c1e33f3baee33c319d03f9cfc79dff4c1f3e7aecd1e33ef4e8e3e3638dfbd0630f1ff7408f3d3cf88f0d1e3c7a04c071e0c841e33c2ed3a1a3830e7878ae43c747d875e8f88873d93ff858ffc18cf51cc8c7d6814c003c06e41f7c0c1ffbe8fa4f0f3dead0a38ef7f4e8d0238ff7f47cacf19e9e8f3bd7710f78781ed3e3ebf51d3beec17962e7f9e83a8f1e5ffac9fc68e3afff7cbcf9cff491e9d1878ffbe8f1c7e7e3efa3471f3ee7a1471f8fc52efba8cfe3a3ce3fd0e38f1f07801e7bf4d8731c3af4c8c3f31e3dea380e1ceff9186a2412b6bd478f3c3de7f908805f1b91b0ed403cd04f623bf4c8a3479eef78c8e3a30d4d44c2b6f3f0e03c0e2461dbff31e7d7e38f1affd1e3dfc3c65f7aac713dbe6ea3c76d7cacb7a1c71abf0e3dda78187ed471984e2261db76991e7d60f7a1471e7ae4f11e00d0a3073cea90d5e39523f5376ecfe3230f3de6d059f59adf6896846d8fedd0a1c79e7c9e1b9edf7ce4d1e38e7efeea3afaf5d1a5599030ad5380e9fca547d771e877a0471d97bea1c72bdab51e696839739be36ca9dba841e3381f69e83147c7246cfb983acd5bfa47c2b6cfdcc39942fb46e484040909c10967fc26647d0bbf6ba177a0dac295ed7236236ce1ca924d53606eed140812f141ddda3e85b615dade17d26091bd7fef3e85b604499065b6a795789ff774abc8bc5eb23d48688f210d17790a6db96dc29a105718fd2accacbf62d2857b82361a6bc27b950da5f0f37fb97dc8e6da7be8876e8eba8efaa127f3acefb8acb2a11b3dcebce27cc8c6bda1d8d08cdf0cd9e8d1e6a9d46f544f85b7f968a34795eb371f6d86aa1e31deeac7aa47ac9fcc8ff835ae3a38d4e9b13ba5f76ef4a8bfdd388ed3ed371fe96ff478efb31ebbe78f37f73e648fa3c7d5ea337aace7f4c83df43e86f7f458eb47efadd3e4fc4f8ff7bed363d5238d77cff5f9e3f7acc74bf3f11e769d8ff93a7a5cad5ea3c79a6fdb6be87155e3355bcd753e6ed7d1630daed6f8c8b9f493178d1e695e53f3164d4d8dfe8dae7b0d1a5de7755c587363a3aa79a35c6753b1577353e1fd28be51a5280eb75c73b7d578f7b3b9b1c1614a753b8eab5ede6a545fb6e1be1bd54631ed52e1ada9b7e6a6621c39b24753a1f71d954e870307cd8d573918ec233d0cc6d9d8e8bf32feebcb91e363f71c39c26d4b5d1ff67587ddd7eb63f8178e174ed5e4ebe7b8513dc7773eda7c0706fbe81da603fbce47eee2c0e185d77fdd9abf280e1c38727cdc9e438f3870a8ea777474687cfc4e83bb3eacc669dcb0d939ece3cd61af5707d7d1e3eb37740efbd8fdc6c7ac5da7a1a137d7c74183c66fd4a8f1d669dc388d8faad3c0c7719e8fa9f3cc58ce773ea6be335dbfb1739e8f36bff1111ff6cac9d1cf813de763f89cf9d17bce755aaddfa8a1471a7aa4f11b6fd578ebe3f7d6fc78aff3d7c7fcd7ec00c7c7ed38f4d8018e6b3d76f01a35fefa58af3f72e7d1638e1c77e9b1a5c7d669689ea3471c9cb7f498731a9ab73ed6bca5479cd6713e7e1a48c2e65ddfb9f1cd9c861e71f488731affbeeb8fddb51e676e5c7ff4740a12363ff39d8f9d6641c2e677f498433f9930ef3a7aecbaaff4b8baa773ef23a791787aecbce7e8b1fbc7fdfb186a2312369ff3b1461391b0f9971e71d4bc033d6a3deaeb8477e9f1c6aff5286be0840c2f654200460d44b3b0051988c2821b88f9c0500b6643e1816e3496b0f9508fd7b7d136740d1a37cfd1638b751c3d069d60082ebe2cfd4082274e30bb0902c10b537020891890b1b4c3ece6a34ab3246cfe468f3bf498d259c2e667689b8f559f2061f3367aacd14fe66c48f5951e53a7d14f62b3a1fa193daa504fe931c8072a39a0e2c3d3181b7831ab920aa7217ae000089e92206336549ffa98f58f84cda7f4a8438f9b06f54875123d7afac96b36a4bdd3230825e0d24510635ee004c48cd34f3e1bb29102318840628a186ec0c56c887efb88f54b8f9a9615d6a3c7abaf730daa2ec0684f1932527e4e319030b0769556160285adea63551682f4b2eba706b201125dd1289eb7456fd34b6ba990a42764ca2c6946b0565f0840463c493da26c554c3310c9404606272619aa90c18b0c48f2de964932f89024430e5098a04041461560ba1fce430e3ba9490d494d624812ba41c6ac59745465b3b66cf14a5b7c092dc94a45120c3a505a6930a23a8ca115cca6258b8f4e0a45195c3c22a220f6bc44d53273c70400186a3f7b2b3f4103cc265b06cd8f4a202aa32ded7213e1193eb75d86a20b5b0acdf0b930869fd9e624061066db89eccc8596a68d6c97fb489ee17b2fbe18b4c529b485b6d724cfcf2d64599034c3d2debe883869cba419b424cd40654f6f0352e5cd39e79c7382328986226ecb241a86926438aad932098a93d45f78de06f2bcb5f1342953062865c8ec157dcd2e669924284773ce6a93a018d55aabbd45493348499a010733346d7b449217b42641d12285fcbdf7de9b573493b26e43daa33971a0699a76ef9556fb617edf95304af58ac268a6aba759a3a466dbfa69aa0ba45a3a2b0a08221044c9464c094450911024d8400d59a4608c95d925438c11527c1101182600c1ec4e914464c39c4378b2839ce93da5412400038725905ac043185a92286145061a889a105aa231c880d3be35e4fac11703a546147136c8dabfbcc21a0ad2696f7aa582dd57a3209db6d5982ae1630299437ac89e49efd5342d7ebb6a9fd576d36e5843cc73f1b1b59ad65e31d5ae7625da2a677ac95a695a11d1665ffd6d6e53fcbb77de7bf5caebb8e985b11f202215367f6fad7aa35e66dd3077738ad667bb9ddbbdcf34a5cea8448db7643d0995a2190100000000d314002028140c894402915034a26ad2f00314000d879844704a97c9e36114c328848c31c61880080102302240539b34013a189f035362ba5a7dd69fc96dad0bf392de1dbacf5a11fe8f398d39be61e2720e01f30776ee9cdff94700f2b48408ff29a4b0e9e647feaded9802cdac93f40ea993318556d1f01dcb912a3dcb914dfc477f06dc74273c42d05b569e8957ea16badc085a196e991ba9e31fcd8c2b778239d3630062a6737ccc003e05caaf748401f42cc1f02cfa1340b97cc985ae2875d09dc5311a22408bbb2e03591ccc50a07dfdd68f2ac711fcf01af46b296e1126fc76061bcbfceb3f403ab9853c94fac184324318220fb3b6b0210a3b8d43d2118344f7b61ed12761daf27effd5d6cb0355bf9571b8d6ed0ec552c9c606a067ae5cca0eb7038dcbf58fd2a59aa971c4ec41cf673419f210316ae2825ebf32b8b9962a56dc58c0b8f9f88f7c38e6a9d395042d2337ef7ffcc3954e9028f0c71575b98023d01046d90115c36995c216813b8f6fe44f4f60d01e25b376fb9f38fc6ede7cb4d4cb588a8f61a23f70ad71ad437229a5c452cbc8ddfb7ffe735da7240282fb777ff4c3b54f9f02452e5efed3b72b36350bccbc03da9a309201a84f97060aaedf7fd04f402f77d5d8675cf1ec7edd5c5f2fd5642d01897c66d30e4db4d95f86fa3c6b9c9eb2b65248fcfd09d546c34d9ac98cf9fbf8849fed40f5245c746b6b04a32a076cc202fdbb1e32aad522fbf30da41f645600893033e074124084ac41e5168167c3a04bdb8429b369bd5c6f6529283bae0b5a394d86d760bc759fa74fd0467da866820fe6b1e99588ac94c3790fce648f4e2700b60481a94ed0baa6ebedc03a597435d3b5e6bc504176bc2ed30f636fe326f394c2d2b2b6574f87e959a1a2782db45d0d5fa6cd8f2892fa42cb265241bda5a3b5b865c0ebdb03a7fee209aba00ad374c85dd77cfd86545ab9dc3f6bddfec81808341a7868b57d632713b3c3f40468e211f967f8265cf3a0d053a95b718b9f0f900dbf1f688932ba2a6562310e7f4dd3def005fcf096dace0df27c317c880efd130d04a6a903de507ccc5bfafb18f77dfcee12a3090e81e0179450b8d15ff97bf6fccd9121c18218d36f832f6b099634db3391d70e7f982cd23209662467f0970bdb4fb22b8963326e29d4b79e710b51f45563a9b85310edc366a0cca2d7a1b107a092c860bf7c5000f53bd98718bf5d292f3ee314fc01d860ef69f14fca552d0fbd88c22367e5643aa3a2537a644f0750aacd6de9513a0472a1c3b81587fb8c09e9981eceb406a6c3c6cb8eceda04dc4eb89b40fbb84383421ea27d8938183a9a6dcfadba5bd6cb624e5703a5d491c96fe14cde29b4a550c8d80570276bda1e717f28c151dcbbde0383d52743ea5bb105ce9edc073d014923fe47f532ffc50c4ea25efe728c6b0d0ccc0b3f2a4092e477468cc16c3f2f252ce6de700a14b979f843dfaed8eced8ff3479200c98f6b4d9d058c5c1efff31fd73a2110105c7efb4f7faef9e4143872f1e09ffebbb6294360e6fee30ffd715da6d20189dbb73ffed9b5a64d02052eefffd9a72b9a9e0f0c6e3efc933f573e698e63f9730940fac3b54c840312c7907e3d1c65042a9bcf553e0dd1d567e9584d00022779562a632e90f19e9b41ab6ed0f45d680d335e42298b6c24f4a527f64b2e4a2a130e50e06b2144da702e5c5790f50646c6297c2e479c07e7fe7505997b17d70417037ce63c19bba11f2488bc0368d24e302563ca0f07d20a04603a959417fbc831111bc8d19479d0afc980e74789912160312d23575d5aa62234c77e797bafe3e92365501aafea2a0cd3c1db5df5411ad234d6e0ccba70736e891653a3202950085cc65898642ed0adf961720cc7eec2b72b03789afe7205d1ddba58ea27bf47df0d1411bbd2ab9465787b88147b0e4ff89f95f42e66d6db1c771e62842cbd64414d8b9b0735fc39eb1ab8017f2c98ff3a7f1ab8ed2a4429bea9ef7a5f337fee15af1a517e5ee18fed98ecacfde087ffdf867b25cbff86d49d6a0439ef8eaa2981c2a336fd21103c5747b545a88a5a849e0a3483ce59cb86924d0c9c0828927c69266fda043d378c15f99adf7908911020b58b6b01de1ce011531edf38bc6f48844c33c0affc5e0f4bae5e4689c487d391b419a70159f761fdd50d3aea1e5cffc1c30ba3453a561318b61285d7f3271294033f2ef9a92b829ade5a3ca03eea8b8392bb899d0613ad18380a8574ca55ddff87c03c9768dd212a01717ba1f925220a01e9eef65cd8976e00ada4230b90b418e10efdbbcc23e22a8c6e5e249cf605f6d786c5a3d1c2f8ac343ae48be99fc59415e94b4f0eb30c8f89597b634cc0f28cb0edf5a1ad95162b0cda0a0998a710ff580726aab0d8b837f47efb32f90bba928cf61b78fccaac78ea72f0332a340f9952e455bcd71810da2d3d4096f67bf50783bfaa2f4b565f915c4229e1bd3726fc9a94146b82ab3794be48a3f47dc6aa73395849f2fd62f37656391c15d0788b90f70a7f2ba17a1be3f686ee9a44a6afefc7ff7de9ad51a14134daace4586b026f80d06147203a8d50797970f10be8c73eea24a5a53b0c032b9d0dc420786c42df4c4e80ed6ab0e71e740deb2d5035ac3c181c9ce83fb396a4e02a3140d03108f2ba04500e50fcefb2bae3f63a6ab3729821e64c82e22aa409eec08908da0ca56f0f9cc21c5d8a8dc2f52278cccfdf8f00f0a5db3c3bee6e872f1cb79e74d3e5e0d47ef4c261d4a7084bd8852321a418c00a87addd8908eeaaa42991135ceffb029c7e7c5ffeda290a4be4f54e687c0f63f170c31c0eb569af71f939564742141ff08abe9507fe036dc0a272378a9d27194ff1e100cad61d94b25e3eb68fe73d9d7bec1c27aa66f1c89a645d77441601ab6fc37eeabe85f34e477df1de79e33d8a7227ee7731c0bf17071098a030c89aedc037cd3c6ea44974b49200e9f2a2265c74fda2420a00e050538f41243a8899ff2165e1a02ca2a0640e3cdf961db960d27a3b19a1e4ef4573abb9c08053dc7c17f26e0a7a63772175416e7855c1e85dc0dca4306db68df860d5ce2d71bdf6a8633f8f0915bc5f9106e499cf34de6a62bb4d507e8d3af3eb7477269e09c1fc8bc64b87fc1a9f5c47ce309287ec40d01ab300aa446ff6aaa5a859e3798e58b23bbd9ae410e19a13babb3a85558b0c5b537f8106d85e7464e7b5defc89dce8dbc2e31b7362ebc1aa3aced8ab1a89f30da849034d651ada4741967b8abbe337778b4e737bd659152c9985d5d66fa188379b2ab223b85f88932a2f6ecedd2448f95325eeec98aa6fc657baaa3a144e235655a19056955f9d5230118fd87a22aaec25fea655bb1f6c6baee766743a77bb25f1faf5ad68761a1e776b633fea5cc56d59e5d4e2582853df2fc7e1aabc0e84ea36fdac52e04a2247d8eaaf769372ca09f3a755f3a809d71784dbb2e3f05215b1419cc7d312e63aff094aa00daa5f205d9c3af928ecf848478f4a7b48cdff63ea67f2a6d795b76be1a755c8c921472333029195ddc3d5ada764505b5eb4088ef8c5958e46da89cc350535516ed080c62a6b4e3909716a3cad9c4524c2377b7a0bde8b6ea8c83171c879a5231a217c9eff4f2bce024ff9497e6139f50e4722a9f51209d7af9c8d01929c7e264771386fc4531c80ccf6cfb68718cab79708c5a806c2429a380e2dbec52a5f8efae4d7ace200dddceaf7abd987f2f97bac0cd09e6fcc4f72674939e1ca2c9f30d925f7fae802188cc69ce1a6f8ae69eb62942213ec81da04554e03aae672cfa8dfe4ac5cd1d430393da76b55d36c7e8a04c5f037deceaa1e00d50218ddc333113d6a9e28a44ca3bfcb1531d396cc90ea1e02be4b684e2b9a7c07231f98a1334687c317f2bd1d4fb489da5a95a15a514f02eb40509de07dc12d1c66512e08d64a7314d6af73c78f4cff529bd2205f6760c7d95861519463a74459abc118ef6557ff39b133bccee85bc14efa3e3ac339362fd999c8be885139521ee42d28815760549be2bf9bc3c65831ba0d1485f3aabf36299dd84796764f758ab9acde9fc6168351070d51095a32bfa480bc95191945fdb617bc03f32e722d3add9c8fb86ad0454b3f8e073f27eee8beb6cdf38e6da013823e847ffe78466615a6d60957e3fea94b44a443bd069af0c3af2072d52a0b8f0c6bf9b9f7b48e4812e9f49d51a447a50d9061e3776468232d324b3166c299dd89afbd74d98b0c6eb0cb29b61f8848e6a3f6a99d3e872703785980e2913fe6e5e181b66eb8f960c5c479412c10e85564fee02bb9668768c02accc076922fe0ffef273025bc3654d64cfa022619231ed20064e5d459b7bb166bc5a0c7eacf78edc6c4d6ae9805dbaf7ad35c6487ea62162110a521064bd963a87aee35755a9c91fa1d9f0be06fd7035b218f0c65b6fe3b0f27df7a38ab861f4ed7a982550ca038e35dbec2dde1d31f58f32aeb1f8be554de179949fb64b5265883e87e16fa9ed9a5bce160b8dca69165f442eb87417a3539ba156cdc4f923c61cf63cbea71e0797e53912e5399159aa3d6155d17b10a10cc2ff5aa3458f1d48e9f5da34430b673e3870c3d8008d83561a97f2906389bc399dc28b9e29adace0a406be6e7b035b2ca40c055c1144e616e6e045854a1c1c87f135be9f8c0729ba002537aee35dad2f84105d2e0346f00474d55214095849aafc333739648afb15c01ec13f0301e72f23b62122e331a41c766705b0225bfe205000481ce62810b498cd484e49af691f11c0c8a3d96fca2ecc189a250db18895286b9a2586e0be093b55b9c5f1a1b053d1805200ee317a22b2cf57bfb9223536156ec3c0bfbae874878a147ac3949c808967e09d59f0736789821fbc8669b24cece07c5d889553ee1215df0513e48555523dcb1889df76ee05d50d4caa54aed2a142063e9a863cdb8906a85667544807a1574b9ae2ac210a051d7b557523ede648bb36a6ba82eca8771390dc55da764fde45332f8710e4b1ecb0951a3edab05668decfacd2bb9195deafd3a0c9c0514b4ef509645e3ae06a9ec5c577d4b86d3b4d96f34815fb753cd94861c56e956a37e383884d055eb034c06d6f8ead97dbc1af4c7b3689d1200b74cb3a5b9680c2089e2b0bdc5b4a8f7b4d5112e085f63b64d528fda1dab3bea74b3546a9b8095312585044921eb639b75c23c8c4df506b779f90cb012350d59aa41bb725ccb7254b0871bb78fa160e79e5d64a9666d60584c82d83c34237575f86ef1f6101b0368005dc5ea290fd4c904ab58021dbfa0716f9f4fbdcd1a22db6313be26d1f7dd43bfccc737e0c63b39cce77cf65dd12aa69c1a29d7c05fcda0c84b96f07f462394dbf5bf79ce38660a56ed24143455fc6220bb854bc4f01513aca7b88657cd8b6ecd3b977e9c23847f9af143a618b7ed4b86e1ae707eef4d736e63f36cd6e876231963a05de3cdcbedb8fa9e558aee31bb111e32390f43d1dd912e0645da155fdb156b239d57c11fed12102b9ade9e4ad0c17c6aa5d6e0c4f201183053519e3f56b198c9519979e97e674914c27b095f8f12eb0d6c47ddbcc005604e29b08b6f8eb74dc0306befdc9039ac622074cf4be1ddbead5f008ad40bf3299675b5e9f09e3fdc7b4e613248aee5f4a7824b33d992d87b9b22397e597be6b4363da70ac801dff65e106f44d003349e3c5f01496822c7932c985a7b4611bc4e78cac9a53fc3f8582d3e2aaaad789666be82bd8c84ab902710abf761e393836f3b59f5c9692f24cf79a4a5bd203906cca6b0176c9ee3f4bdd2bd950ee4a10c84bafd021f517239395f23d3145a775442503fb9bffa89326a9543642ffd189b990a72e3046cac308abd28eecafd88ec972ee26532f55ca5bd5aa17d5fc0904bf426515291016572c130289ef46ad22cb5100ccf9aa5c4a54b934c7bf1c052af7401bb790d141b23dac64a1736f2f4fb821c49b481a3783969b3a2f5703dae22bbcd9998b6a43680dbbd4ab6695d1be76697b70af37d6a59dcefb35d00870c008da9cdd36ba4a5c9f6fc61319992b63730ea06cb50149afa03f024c7970d35b14ab85b647ab93f4487d82180ef80e546a8f77b2cd2238bbc78b558aa22b74890cb459b567011ced1663a1470f41819e85bc2b0e7a3f2437cecdbd565f8d996dd02f2c0f159dda0922a1e90bf81d73d588c8db14490db6e581bee79c317d9bb0b907f3f03c9692d35efb2e220815cc92c899c6566a2618bf18aa45718710967457aeb71b2b0a0e7a800df26f54950812b8417c5c0e0b903b26a2a2dbb16fd733d4841181ac222ec71b406b590495ecc9436063e7ba26bdc5fdeed1db1d24c59b1cee39467334714a73d2aef29193915f7b9671d139d17816b28be36edced29f8407c56f145dcfb59732d5b074929c9e04e14dfca389438f2dade6e52536e841e7c29a694945cbcb0026260d0e1e48dbec5f7bad3e4ea1802e9be58935a61dfe1f4ff013983748ad8b021aff15ac6f34b315f9cb1cb15bd2ce034ee4f4c30bfec6405a53cd8f8da9a97c93a25e072205fb37dd826141fb853654289c34eb47ce03cc80bb67a1dfeb0630fd810cc6069d5049c57513eeff29981b852b36def70af7e80c5ebb148da5680ca62000db434fff2884ffcbdb00c6f5acdda7334e14cd5a2fdbac0940c44a9f893b23ab0931c83adc2543a5a38522071797a983cf936c35472fc97ed4be352ce23ee7d4320406c8f041c404aa1551c43d6926e80823e4e9bae9fff0d9ce7087dde21dd77f82258ae73c8bb6350b280fe61c129f3098e8961003ca9ba92e3f4b9709e88611ac43987ad9f6d0504ab000c2081e175bc80a1711a8d01ba5e4c157affb87b704e69015e8e202949c08ee15ca470fc564a5bc6b04aa72d38558d19147ed11ccc1bd3e6f364863abf253a6e5f33340475d7335ccc9cdf8cbd53f516e65a25c7d25726b7cbd1b65db50b5a2a1f5d6c055931006f347ad0e65529955405141dcc2400f28f2855845ff46865073b590402f8515ac00898143913753f592a464d111d382e978d8288aae3e74f2a812bc3365a7b65dc7a0dfbed3ff143a03898d5eac2f3464f6a84de06cae45615061f9b37634212fdd75bb3ef45b5e2052f22aca6b4497c3805867be60e38713604a5f3f36bee9f980ff1fffe05e35f0c42db901b70a2f4b1f19fb84af62bcf86bd51bc8a2fb27f1c23d4994039cfdf4877fdba1667dd04fd5a89b11d19f22022f5b108b439d91cae5ba500273d226d088acfde049bc1e5d5aeff0d1dce86bf209dbcea27e30653f1451c6e02689a77f154a7f18661e2c22e26d883edab742f828e2d6140b24315729c45732d822dae47cf9ef1c18eb14e31c818942aba04ad359c9928b944146d0a905046ff71efcd7d48c31e1a4b168f321f94c454969ba168d4081c78f6b95eb9cc334ec64321881fc83235acc93a7aeb22ae437e7e01acc66389e1148471ef0bc111f6b545008f468333402c4dd2181cf0e6878f0ec3124237877c6f2fe9e7919671e8eaabcee285744ae7218c40adb8fa2be6046192ff3d735692c6f7cce71ad460480415d2a6e2a8344a6a87264de51988e8f834c7aabfdbbc132c5abb32b866f6826d555339bda0ccab73bd7a0c71967acc66605a27e267fb52e1a361e21ad2dcc1cc78fa7268b066094c5c172f2805bf31ec90390089f8b4aa5c118687847f1b48e1f4fdb39264bcce0bd939eba626aeaf35e868e1c42aeb80e6dfcedc71df5045da30c47858e6a03e4f9186068bb86677a8b6ee02094b82eec5cdd8634d24289d410a6c727999e426255172c0af5aa619eee82e1093f31db55010661e839c019b18a69e831d4b0e17b2a437dacb95573736bab45bf32d753d30373f75bcd6210a5e77c79a0a5e9619152ccf879e265f143e9f4a3ee6239638166adf6676026176281b6ab830170492ec0f3766ccbdac62fe7a91f15bb70badf174ebb3c082722e376bce8a43373b21b24e0e5db7a37025ba93daae76d3f70316975c04e7f668a14581ede40968d58e8492931469c0def5c0d616f77368615c6f1de61243b48c37d3b382c997f87a271c419371a9189a2555d10480863f561fcc50ca0f7da3d450a02eb76c6849e0cfc93f792e6e0f19c4207c220f9c03b10331129fa9e7bfc073354268bb8a5aec653689520ae59fc6b9e9440e751aae8833788d100e69782a000fc87660e340c3fe712c0b4698f0bbd42febb1f873307c238c1254c92795a398fd7ed1248cb8677e84b1c4d265015b2dede1ebb3aee644b03d8b7299ecc2ed96caeddb9cc57c1be009d9d86c1b549dc9da85c6016c01c5641cf86e72cf273c9e72e587ba49b12899b1a7e9b1ab5a9198fffd6fdf5e2c550c117c7f55f6c6f27158c98d5acdf32d86e5babce038c08476168328ec060000d864b6b974fc621ec6dd472659cdb021bf7f39553ed2958136dc7f1a733384684586d1ba0f05f0531bf6ae18552879b12ea883e84b950517b571134a6906a4f1f662dbe2dc42246aaeb102b8dd2741dac1d0f949c244d98b34243f19d850961ed796a0329c8d7a8bde55fbd26fb101210f0665b52d73d5e63d7a73441622eb98f2f39736de3cf487d246dc13aca7b55a4a90060db84bd32d2299e6b2dfbf115f985bef5da13e4610941255828c63e8c0fcec82c7384f22f1b7481337778d53a6b338d37b1bc3bc0dbe812e85a7125f9515d1c0a689558835261d756ee5b161666dea72507ec53070c0aa75130fddde6644c30c870286c04634432ab5b86fbcf50a810fb7f80790a9d699b586001bfbf5151bca2cc1235fe4278de4f4b71443da9578c872e49bdb000c0f7562adbda83ca8f793121c24e4ea176101ee37e0ef0330fce46081b5e63280c8e5d5b44de1d15250ebf43bb971d875da1ac1309260282a47ca35901e31e6d90531cb312dc87c0762e10cc48361d96266a051c657f61bf461577f7bc5ebece8547f72110f4b30fe8200d04f6699aa1380ab21ee26132f02926957dce2aa410347c38587143b0733c3a3bfdb6230658628ce31c1f75aa428d5b953241e8d0b89e416101436350201f95454dbe5d546c013107261a91a881072fea0b7ce37159f11a44c4a64aed9c94f14ecc81b810a4c4ada621d30fcc39856c2f3883afc8634a94e758a281b3a472d41f7c869131c175c546f543318be0562a00b1f8ef90f44dccbb5c572da8c55a815fdf8518bb6be830e01dc3bd1cae17a19391c4ced48006c4de6cb445531376a4531d6ccceaa428795863062d89fc9f40bb980670a547dfeba9dd30228a7b1bec08962a5371dcb09856304608b564d30d62b7a18b6e0484632842f1221861eb3c6ad495ef9704b6ba96908bed32946b399b852787d62ef2e568d77a73292d62d93b8b0370b5284a14ba78a97fee7e28802d1971881ebba018ea4ec044c91cb6fa844f2861aced93cd7ae77c36a631c79591e4d0fd0bef42eabae4275f6932fcbe06f5614781e3df6256b7af9919bb70f72b9b3eeac7843b62c867e87eec6ad75368c5b94eed20416bc607dc620684a4ae39ae5fb4f8c3dbbfa5869400cdb52797c738b6726e95daab916dd5654802fc1d6f208bab459fd1463bff1d567df4b6876802ae002a8c685740d13a1f1df6443d04215e47117812458d18c8c313465eb366cc850d4011749e5298f900f0815b0a566e6a476eb9fc68c7834ea80fb1f3c61f22d7248144ced075415de198256ca9132397a7a71f91d9295d405544515511a93b17c8080240d45bab94150781e55d03ae7d10c1a99aa45f3d84c3e77457c29df079ef56e0a749fabe9e6e21cbaace387a115240862028bad60150f36500713f7ad8bc71ff2dd9c097a13d0ca1fe348a17abba2249bc685732a91c838c95fe7c01714fced46f90409056d1d57d710f9bff5c3bf810cc31ff2d39eb9fe610bc18666af0e1fbaf362727da922364394ddf4f547ea630ca8650fa216c85009b274125dced9956fab636a2fd5984bd0d4fc0ebfb18276026c23e31c4a4cd35fca792151a1cf4675f688327b3aba60e4e614d8d50d68a0f22ef914f54bcb6edf1283f8b29a58b876846d9c88fbc9cb44627a579c85bd73daeeddcbb5ab28cd788c41bdf00e835b12fc8263d1dd573db2c1230ea44a274073f11102713f7b5bf9d8922a17ad092ea7f2b2d6ca5f02eda8ba1a10cc9bb96971ce28f615ee482cc593f346008da3652ad10562bb322789086cff484cb41946f8f11960e869fd4aebadccf28c2108944d37571ec17301b8fae501c3ae0e4002236611aabced3b5a91e1ea7f5077600d0b50cd4412a6fcf867eb7898cd02ff2370107e39029d40ae146aeab0985acd425006364a935544667a55f82bf601162267a456ae6a468ba3ad4502d06722661b8f554c4631d6922f3b20b52def0f9b5acba7cc7688788692a94431e6f877b31e5e4a152a8ee6eb65e77198489140e03e4f945a38ba34197a54a185a97af5ed7df7e2dc25abe9df7c52b3cef6a553b82af4934eae7d536db3ab4a1d8ea1334cd41c0dcf68ed2519cea9706546cf20526c3022f0dea6a093554145c5ccecfb3946f63000d68d3862b1c3bd1c25b2515ece0d2c29266cb35d493fef38223c069b37d2048d96360e4c2d2514120d79ef0044a024dc20bfa4c4c916c66af1f1e3480eb171824d3211bf24307e6c5f06ce5882664445e01365fe7acfa4585f896ce012903150a9a248a1eafb045a4b3123bbf64a5af1f6ca16529cfe59d4d3d7fd3c00ab27c151018970038a8f4d0da497e5c0182a0d8a16831a3dfad28f5a81183f4fdcc69f5f19db97c91c3870ce776d699f811f5cdd6a48c30c5e70f9f050b3dd460240b1a5ec08864b3b0f657a0d72c9c8586f1578345453fcdb4080b5fa10f22d5641069f7c34e4e85158268aaf3261b2aa6885d348e225240f85b1a7c8e1407ca7fd1e3a4acbe8d9248274cf82a11b96b59b03f12506b7f2f9744ceb903451950f8e0be2ef4d5045b72802f7e668fcddc8798bb7d8a7050464af05dc5de47ac8640566e42dd74174e44b39de9fe57e50c3b3c887c276f4b963b9a0aafd844d2e271b270a3a687a49d4c142df4f563cb511e20e8f04108a51371ee6537a83d5c93ced5db06cf490a1aea33d9baa198f1e068b69c9de6d6f4aeffa8292dd0104029b74570f7337827386254aa0b43de6aeca7931ae06fb4f64e44006cdcfa1a9c23df4bb4c78723444e828b6f1c2e219fffaf433350169d768dab0cada21ef36d7e2e4b3498eb8d7c7932a6562f69f52118c88f12ef0e319c50a21894faa2c1437c5646663933fe5e5f7cd9ffded682c08373722ecd5a1261fe56c85220929077daaf91bee7be623724820c80ad4c70ab7f9ecf28a2baeb514f4e7a99fdf9fa1007a2938b6347520bfa74fca9b9548132d9903273de2f87c3a8ca368fd082c4b6dab2766e7b6baf777c54fd6356f78b6b196a99904ab1baa5c6c8195eb0d4c258b1705a966c5c06456c53e4b2533b2f59b6c3589116702125dc6bfa4cdf76f6cf2469134d1fddf88606e2b6543ea5d21d9db2d81d5457cee37a4516f8c9eb3205664e250cee686b4ad6caa7a4699155dd91804b18541d244cc5f59008d731c7e8c91cfbbb52f49059702f0df8b2e651edd8a97eafe2a183957b2b7edf510702460c974df5d5da40532fb56c819b3cc506a7bbb11bc9c18bd793bf34f4addce4ef0430db17e035f5a8d337381f97926ba38c343d09487abbec8631defe43ba1b11b20955a183961d45b60a56ed6775c72285b7bc7a39d5f50f2f2f739c3bed251f483dd85f2b213ba6b2c07799f5af53f297d6ef05d5032d4d0207f69957cca669bdfc8bcf2860323b91f52ead8b1fcbfa508772782dc2b9a209dc6d9f029e5311b88028442f6f173a0a059255fc5ec58972164d65437460eb151944358ad400d5dee6e677645a64588d0af7cee8bd418b9020379b39d4ebaebb87ae4fd6aca508237377cf96842f77d12e704e576c94a5bca9b1cd2c656c2836b9586ba2694dd4916de91670e44ecba0075ac6aba5d775d81e0e5ffec1fc73c05f30149fbaad19f09e7d5107cd3af932bf2ff0c0a74b833a385d239ea4bcce903436d24e1c7c0de5ab09e6d5161725c9f103d184c2dbc32569c4d78b1ef3d490df4b516f55f50f63f7b6dbe35daea91e3c0c6d54db17325344fce97d7d57b2ecc4b0f9dc8f5d73278525f45e9639abddb2f1d4a244119ddd61f9b34d075d9e553c15b85765b365bd011673a84b182e7065f02d8d5a747d00145ef059a437cbf22e8038ff07f6ed31ec4bc90e05e4a02c48a1aa183f99d799e99bba913586ad9ab51795670106ec1e55fa74a58d5e9a421d027c72448425020724186a40270a83d4ef3b7e7f3fc02961e415ac0b55353cba121e9e8e8c38d8d47eec9ec2e90baf69babf934decd34203b418ee6dc291a3f3737e0edf2cbe6f52d81c455e7ae7c0504bb56c63f665e7f074a064893b980045f758bd20fa30548d10435c5578cf7661c7686a2b8dde0bac462944c922304206cbd8ed954f0c469e0bb3222389e8a9262c51f567af18fd7bb8a4076bddd4fa16994a68a41f68a207d8bdfaee155fa63d313329cdf363924cfbe94bbeeb91bd764e47f6dadcb864f604aed212bf729445eae7e768afb81a92e00e730548ef46b8999a6f5c06e00d57c79acbe1e7f6fc2dd8014496d8c9d1a752c28ee3edd490a6154ec7a5a8b5129dd4a8c047d3e018ae4402673047192732ca3d3ad765778ba28259cfc0d4de97e4d00d2a6f860279d3c787e8f628f2c6ce7816fe5fa2d77d1c32af708ec84ef73297b2a0d50db68f880ad81cf12fc080ceac6054651654a83b4812c8bc55be19415391d3ce28c2e9ebd4afad5af8935984329de5d3dfe28d6056a5d4622f4bd4bbf00ddc687ca11a36b7bafc2da4731409fc8ab3be3821412ffafeea142581b99743af454bea9e59fd4d7f9dd766dddec685aa9cd22c9acb10c3b3697db86153da90fbccad86698f530bbfa150bdefd93b5ed95a080bac15dc3054ec426315e5891ae675bbc43a958b5cd3a030c8166b36dc5816b2647d3ea7b44148fa35b3f17c1e10e0553c35f8188c85bbbf10f05bbfe5398f95e1ea7328dc5178b0fb3b1386045d0858e292241bf4897c3c663627359d89d5e4426ce139fc0eb2fc0afeb22a57dad8134c8ea2284ee5260ef5051cd5153272eea88e185b4391b115572fdc62913a9decd819aabffba4f7038b1a2b33525af4f40038d174b95ef45c73a88482dbd096b355cb683d32b1c1e4682329947a9bb04c7fd2be52bf2a7f747cbd438631742d90e8fc09de536f8052cb626c808ce2c9bb83d1af1dec25a712afbb5d5d62bedfac2c7b0d4f8b0380b7f1d3884ea3a0c2d02843d6e340b39a01176492b3663a3ad19ca7ae826cb80de113c49a371892f693467684c7b5d4aea367115f86c3ab9d9645dcc58539d699dd8975e8e8e13cb280a1d76fc14495d3264f41adffe21eb3e53ad304fff2ebf684c411c304d788b9c088848da60363ee0e4aad18ff31d6a75b179827f8a752b4e629852ca4da369950738409f70601a5f671b2e1e28cf2df84ebeb646b715151ad400cd2aa780e5c32fea3c7ac69dc712884a5d2cb885ce8f25e70e95fda315b43779d2da7982f7523bee60d812dd79af181ae99fb83b1424168a81d6e4e824fced305875092c3c450957e97a709f6e228a0b6af26d062853bf5de4b5a436fbc0d951bd8e592110edad1f9b41c70f9d648336719d3adfec2ef2cbea389b8bc8f16a6474a14c6a216463504878f13522111aa5c2f28116760092a513689bb49487077e561a097c6e161dda2b55380398f936b52c8941642b6cb3e1e0848d94a82f0995ffc14ad560a766bf4b355c4d52281c7b5ffbd6f3110123868dbedf2c90c130a896afcd64c2d1a49b04de7e7a84b29307d4c9ae7122e7bd3ae5c33e4ba31109bb358c68c3432bc046cadb75eab69dcabd85dcaf8b5ab33fbfdc1425d52d41c06c17171123c137fbe00688a55b3fe3927c12ba3aac6fa57495d8e15bed75f3762d27e354c805061f958840d0e0781eba405f9af839ea83b444aa0df07443bed9dd8b0c126a7bf55bbb60d7f4c9de3b2682d20652557c65ef6ec3c6db8bf7e7b739f1164653a7c0408e08663c5cd7849138d042f1eaf3212f40154bafe6882d13c1b6f9d3bf0e47d15db8b59037af6d1b2366c1a53885db0412123d67e9a5a92d624c298528618755e1f2814b417ae881022f6948a22736c4142a9de8423be80fab1b4eefc28a684d6ad3246eb3399b45820c580607c27cfc62b9730ddef2c769420221c1e0ccc8a1542c97a5d9f0e7130abf7cec276844d9bc2ac51d59f16608c7471633c00aac1edf45c2ffa791f3b55b73c574308c6dc143c243f78dacf3332159683b139e2d933acb99fba12da9d59c7dce6f67bda231868b2b01b2c880cba38f9e1f74ddfba92058b4a0e4169674af47fde06b11d72e313aa0ad967d6b038c71967c8e2db10e0d512072b275d3ce2ad9af44ed7a224c6156e019f755d6d6fa501c11457ad10e082702656627284369fe49994922907609d18af594a3702332f1ae11db94e743b8d161db459bcfce1c3ef57d232436e5e63801ed97a346bc5663b605626ffc24e1c6e93abfc3d4593475230fe87492ae6af9fa320e9db4d9639ad3184e9f4423bc10126255f2486d9a72ba27c6fb57802017d31c62f36d2b08fb76fdfa120a5d300cb21973ba8625f2422050fb37431eb9fdd767393e2eda2d5c39dfd180920831408c74b66b691c4935a62dce60641663e464d51cd140262d60b662bfbb648f8f906f6c81811f543ae54501ef2497c6af02fee4eb9ae9f7d3be6e8e26ae1b7cda4b25f394d74a810f9e51c20b1ec348424a0840936659666ba4a2646c2118c34bf7a84eb647e59d3afff47f6f901f07c1707220bfc64d0e078020a78210d5b8da92babd63223f803ac13e2a41f6b2d5b483b824ee02d76c332faf1305222180af6daa3de5dc5f711d1b33f82eb79fb8e7360cb99db40c0a30bfc671fcfcb85b1550d73201a07b4c9631c8db6385d068fb401026033776f11b4368465de5bbc5ecf7d13d629e5ba3cc6e5d5b4fb6bb409cd77ee5150dfbad0a013598f92cc85f12d4d562235ff443f5d1d0d54591a031e2bb90be1a8523d1c9b8641c97fecc80c799cff49bcc4fced88ea3506c2eb154478ce3951c92dfb51996ace83cfb1d18ed306682edf1daf39c53b84cc227fafd1d480f4e34b0e4f6f79f9546bf5b87f6747781ad01b1ce3b9f79343e3cf2b7c70e2888e464dd973f09a95c564668d40ec0b1d87c98f1de7a92f7160e0ab30d332853504031977eb621ef0d67ae88c61dcc2eab51f2c734a0b0f71139617ea03f751c1400702d99ed9f9c0228e0658b46c886297ea20e58b26da3f09d36c65d0354e5e484b79a820f1ee5b665744e0f6bd1917e32dfe59511d75d1af7143cd165fed14bc9082f35ee666d18dd41f0f39891dcb81b420b6c145b9c60c4989e6c94a434d1c425e5dcac2c12cc0ac5028478c14833335ae7fae55ea42d11fae022cc146a18468e88c9c1c816e6570c395b17d22d8531b14e3375bc1d28f81d15af390148938773d9d523d7caa7405ee9eec9b63808df4c393397023a2049fe18e4c9f4635233f3d27b6032cddeda32d6506814fa47525a3e09c08f113ad6773c64f264782fc5ad6e4ef1dbfb64b3160995acb08ca8b37870baaef968cab19c6acc0a2b4118ed3a43943badb5b9e5a88f88aaf69dc0832220546be38f6bd1c28319b0008bf42f6f248739c579474b5859a51eb155031d474c638cd4c030a868c2de574e8e13b4c414c4bf34b1dbadf70c73f55a61e766f0fa6b05bd82504d85598430e9e1909d5ef08c1889126b7715e38ff4014eb9d9fef4aab644464d4cf6afcfe3b369e2ad7e71d6b12969b4356557633ebd01cc579b3c3fc42605ba5dd896deb4b488b9fa972b58490ee4a620007b9f5bfc111c55f097d3a8827c381e2ea52f5e1fb70793e84015a82e9d9d74b38192b43f3f1d27e616be857c9631794196cb0e15d25f67d8ff9696e503e325ffdebb78251d215b4ab00c22ac2d136b102cb64b6fd17a37dbb49025bdafbb81df0061774019d475e0cabe416ed2372cfdb9cb10f7ef7ca86bfb122116e8072f7eae583290dbe60afcbb5ca95f267b9f54422d630f41ef62e4c3b1e9da2f72ea48f941b9cea340e0fea30ea4b2f1d6839141fd00196111ef90ef88e48d5203eb4677eb9f2a3433ecbd80835ff0d9688d774e8c993056cc12c5e850ba0f6b81b8b6c199dd21c28112f5d9b6c178818f9937081ebca127223b4feec50a7cd2842786f46810c9caa4edb9e1fe050d1d88eed80e9812fc20875fed65272452c0006c2eabb3262ce5a8bd7d9c102cb7bfbfb95a470d1d99189a94aa50985559d5547d53cd6db5d0555000eecbe2c56bc8f2ec670a7dbdda9257bf7c0ae8ebf5bf7d51267f43ba854e38df54dc06be75d341702f0fe6e30e54101dff4ee0e4a7f47cdbdcce4057051e07d913b37e47f95856d32c2ad189dcd8f817236c1dde0a6532cbc9d32cee2678e78f6597f65eb303106ee02c2d1e8237c0e335059405ccc97411ced99dcf5774d8fb14548f1939a739bde8073a8360652d70673d1af896e1694a574849feaa96ce5f668551003287f2a66fc45505f10a9d2ee4469f8eb283cd1a2bd2f9e7eb88b0333f63a5558e6d00561d6e09169d5cec806d3a6061a3f2d55d0fffbd40202e3978725a669dad46234921acf10fca3fd6e2da4dc23a8d63567128b7a52de158a2f50c316b4886fe40971a5adce7813ecbe866ddea5e8d97d5e6f4eec3909a5a460392b4a982bf432eb364e6e53523a0ffb7a13227477455190200d7f8bf9569f2fd44cf82d67f5ba9910cf0a2df39b44e02706447ea1868271997f7474a93c3b6c2a739cdd66f51ed1cf693c07b4d49e152c8cffc0abe4edf6968be317b45bf9e065bbc2887f7606c97d8b00f40a4bd1da47ac9813141f7166a887083077998137e365037231e621fc0d3e3320f29752cfe0c01a0661a4851b6f38c78d6986fc2efc735be0d74e0f9f477de04e23db4a3d0265ddb5e0e855059928a99752913fa499d7ecab6cf29faa8389925e42dd39c46cfc485f30b398eb57b83c6b1ecd6b555a6015f5dbd448839b4dedd3d94885a5e1f56467a7eb561d6a93272578582b65b586161c50c9c8162643d4b7a46bdffab761009e45588cd00068eaf9e7945044288b083ddc7251d9c0883a1642533bf4daa5b64a63db9c3f76198aa0587722d589326f2c5bf6a2de3a68fcabcd1641f0d85c93cf450e666c353c1c9cca5c01a0ae177039928034bb364608e7c2af2fa2fd39f6d2ea55a02962b24d8f1cff3416ff696e0ac9b21c84e686785a8f0d627154c6ea5829836e6cad76c408f736a15d5b6f58ab6a205759d18512776081e9ddf57ef8ed3119f649e4da8a4bca28977509d8ecc83393d9c4b915d449a1e8c42c0e8e2067bf00b67455f0abc19ca73df3696d11ac5a2e5ee6f37bd566a7a98cdbc0a6018f11f22790622271aa016d60bdad763e1fd5b8a736a9386560615026e3fca9a8ac34140ebd49a9f4578c0c6987e6c1325283b488d8b489dc37832b6b3d1a7975c8f70376ceeff989e8db68b87841b8b70a5bc63738e426d2903bd219791912b430abe2bfe27d4f0bab7a8078505ac7c8937b70580544ef125687bd41f1299922a57e1174b60fd534d2d2d2c27abd4b95b67d116d91f595f58ca4eee737982e2b80450550ff19afb9f7204354d065dcc9b344df4ce5da003c0ea2000fd90ee409713b7ae722a655321b2d8e302844a092726cc600b08ad97bd582029d497c0f4bf4c765030a86bf82631b22b06252090aa22a57bf59f86863b4a409d0b7dabe5f72c3829b2209161750da20bc40fabf9bf3ca22c7f76e3561d9357e34f32825946395189671523765aa31c8e7e1cd37134d3fbfbe884c6d96d7cb14f5b4cf720240803710db4fbf180bbf101837c41f5054f69502b9b8703b7739022f30da973d84236b9686f39747b82a42a76ae4d4fb0a2c7f6a818d1b4fd9588f83b0d3cccbce3272ad30837fa228686ee60fbfb674cfb156a0aebc4454ef3ea9fc0835ead68d7ed8491d1bdd31d61586056d29bce12df5d5ebd9a7418f9353e560893f02955ba243872542f9d98d65f8576e56bccdc722ad810d5939aec8f7a1b786c970c36030dbadaf1bb497a0654a3b24ec86a96d2056d7a8f08815fdc90f272da4f7b4ba400b440fc745e5f35cb918fa1c2d9869dc804fae67134c453ab4e572cdfc912ab170fc88c44acc148b86a021b6052ceacd749acef1a6c542ac919f4fe74d175d26f2075fe090b311fd00a39a97135015ea530ceb54b2a2fd7376f3ec5731e35da11f661251e0493226e2322b7664d52b2fef9adbd5e3f5f00a43dd5ea222c46db3d7ba8146c1ce63312086f874227caf7002e1313828bed1f203c439ef02d903b178a1151d1e0b8712413a7c5c49e100087fa17211586104112be6d6e52d6183442ccf0550c7c58538b3b2a99493a9745abe3cd356fda0706bd1e5698bc205b5ffcf3eaff33d7d0902bd857424bbd416f9f57d361db5112e4ee40eb92166c7953335bce20cbf4440d6ce1bb6b1bde865a020fc9095b88b87fc2520bd1c5ba390aa1203a09deb1cfad364f4b1447d5a5623ff111f1009cf26faae622bbb5a5e02a9aa62406dff023b699782f2e6fc2b23ab6cfed99da7118f5bad20ebea775aa8fe4faef50c316b4da3c03c45af2aa9e5f2119846c746f5f6336c97eff282cc84958ee57e1e462651db6c7692206104ffd045c5c31810651f8ba0dc5f9e5e4106aad7dc94d11f26aaded74d4b52b1f0d1b70a672d5dfe0d47b0388122337611ac3d60e34bd1157f2a1d65743c9efcd855346e853f7c42f9c8982604ad2bce57a07799c9439a04b3f50e8d9b27f562e18904793c1180fcc2fbadf2565047217c87b08efdcca59e5c42288238d5514af65ea16e55b431de1369791fd2a241887fd3e6275ebd242100538029f6268812cb4540d30d59eb6e4cac66963f4951e8c5d3517390286a5b0d7d0b6a20b665e0a19d1bb142861844c77171e08ee5165ee5458965c8ff4e3dc9691c10e86c982df7b4e605c55dea4202b5198becc37d96e55eba0f4a9e814f61ca1787ee79bd1833424e7b7ad58bb0283b7852e57247528d2c9cc20d7834d057639289793dcc5312dbd8e8dfde385157e83b9324592ceb8976c02360270979b63332596c4dc9b95809ba450cf7f7c15d987de9faefeb581ed1c983012deda445962ba21e74f89de8a554d38c2dc23f074548cbb8a70baa04db3bcfc1c6fe3f41bb78a6bac733ef18175db0b3be834f66737402da16b8aece3136ebc2744225bdfe866c787d098051a25f3aa8b8f034633c4c8caad8cdce37744303272dad5ca0f7ebf178737fe2851410a223467b148dc2e31fdb905e9a4d9ddf71c7b2e075e98eaade2404aee5aeaba04fc46fd300e40c6f23ed8c50a30ac8db6373679a9dbaa93d264bb88f32b108d2a987282b41af08cd8b58431ff36d3a87273717f8e578508a930c63f18f7e89a4a9bc84dde34bb9190d2624e98f787a41a19dee6449421a871e11a48534f661a03c50ca710de20aa5555efef0e02b05a4cffcccbb6aa83f35afae5acb50c61cc9632661d01656ff7fab29527c853ed4e6718a81ce8ef052891232388248c776027023cce41303060d42948f841690fde815eadc16454be6b253c4831994a0bba913112ae3780acad12840fa40c9f29ed88682a2ff5a6fc438c5f3163fb462ec40cfc2304cd0d152c46357123b364dd522ab235b3cf098f25f9f55c931de4d7c5cb440a45c76e7a2ee6109e5df7542d773ee769883bb17ef98586a027d5d333e6c0d19750331c2ee5b7f1e62c4cf91d5e38c60873444610ea469589d4c63dea18dd5c136c421bf0badc1a24338f16ff044e836aa2bf586c3df40af6c350b022d06f0bf77c20497ded432e6b1445a1734d9b531b5b37fbc90f5be33e8d3736ddac46383d4d0df9582842be0f3ec68d8b148e154cf10d7f0b4a24ec55bcd16caaaa4487be5c3130c08a1ab7279b975272afb91a0d430b9d8e13e08a70c44d4d037ea1a0c107cb88d6392720f5aa7916c9a801911d74dc7c63fd64a7a163ca0b04f6c62e020288017ebaa0cba7a8c59d5cfd567abac8ac59f98f7e86f4cc9cf52df1d260cfffa681457cde099efc20f9af34cbe86bfd5da2907a09ab6b2d3e14cdbc0d78f90b73baa5e9bac8b80c39687bac208b7c17fabbbf381fbb0167019bf816da614f1a24790385cf9497cbcbb8fc1cea88442d4ab294d88e3dad1923f3413d82615e8eebbec53c5c2df24c1b7b727de733781cdfa88a367ac0fbe689c4d8b1b7347d3d8b51f5536065269d6cc3fdebac1bbe6410b54975bcda356b8ab49e74d41945d208747d0947cf212b5c3979e8c8c159dde5d956e6622c8cae22ea85804104c40fe8edd9e7182ac8b6643cfb90d4eb847e92450e8138459a46e52ba1ce53a270bd9c370d1eb4a531f027a699a23f308534442dfed437d9f99b205e9528d2eaad21b61e856385353e4e9494bcc9a1f309644eec39e7c60357867aba16c193c8121a13f110e79b8360dcfa8dc98263ec8d4a95bb8269c316927fc8d24c87d77acd411d953bd410bfdef938932694b8ab2b81f06464f1e17a1e80c3f66f4b904fe2a8a1415fb93849b82cefd4f046721a4286318439ac12df208515b01518053bf3c6f62a49a4ebf9e0d0acdfc29c37c12c5b2dd7161add9d8918ea9632ac14f8044fb6f7876c494d456435ee41111f345924882838ad085638a10de6e2a62db667246c988351edeb5eef204079218336c4b429c95559868411b12b665c37f87a21c58f40085ccc7cee88be33b50c480c1c9d587be80976a81245ca2c14b8909a2b61f326c50332fd3a150dd220be0cfffbaa3286cb62176d042ee561db01ca8b6dae7f29c1f439288ae705b96f19a8b98f4ac3671ab847eccad1eddeac0ea1059bbf090e23739f71ee8595e3a5a5ec01a3de9024011e75c7da994b2c2819345aeb6bd694e95fb6f5710ba2fce56b6710f310ab1d93690d30824f26e0d2419e7804a350e2fd91dd58d40e3cf797cf2eb915ecf69630d7675ae428b614ed718e170b125c16e22771da82f783ab7e1024a89c603b12c9e1e35f18c45311311b9b1a9ef106a6bcd7e25c74420bfe87c37bb57fcbf829c492e34b0d15fd2edfd3001c42ff435da97c3090ec33d3364eede9e2f61b3f802c35e1a69d12f54fde9855714bedabe718955526320f964103226402ea865f9eda7ad99051fdb3359e716db944ae36bfed8459fbab8d2b0b47271ac805c590eed6b9daafc9e6cda91c2e9862c8f0b0e7d33c8d7424924555938a0f37ceea0d8923596b396fa0b8ad54c52369bba987020000d17c932007e0afd415c7c70ad1e32d727b53642e0858527c4b61c5dee2057d18ad679ba7c52aa99fe5cc40221710dcb4894df2148384f131ea8c45fe75cf9f86701c3999c9fc075a762f2f7ad266859e9766f3c98e01cca31be385111a9c80ada72b585699f2fd2a18c24722033ded748541c8a8826c2670f63b791cbae6aa88188549e426d256db0c84bc06b5be045ba83e5b450a98b85a83a5ed6c1613f88bc503b987b4efc50566f72b0de8289a5c9f0697a28147f160413c753cc4857a51702a9c7332289bf1828af30ff3ee108000cda337d905b8bc34fc2907ef658892767841ef2c409ea783e7bac2c00785bed29115a323bc46a91b44db0e255ba3a5be14673d1875a263cc1915de876514568ed827f40fb7971528c119d0aefb07e79364761ca0bcbb63863e3a42b6a6f5a5e09545e26dc5fed615fdfb01a5cf77c1d59a28eea0836ac057c6734334ffd5942222ed6625f39d05f0795e9094908da443fb30de4fe8c01dc94d492748786f3b4cf406be67cb94420fe41f852a9b1e4e3de2ad49240cd3ef438fe65328c117cf274a4d87b10fd39e80e421ff1fdd908248bc0d07ecdd908f0ccd3f9fddb7f7f0aea3dc30ae252a372a97b80a8a3ea22856d4b35a62444434387ac84e2335ed3031ee8d949c422e951fecbc8c5023d9f60a95532288ad8ce551dd107f9ce31079c7a58ca3932f1a5643c52780b2aaf892ae9879aa0556fc3376c30366147d1493ca14297e5fc0c239e064498072446ba34c4e88f96d752bec87a0e670faab4d2e4cbb75816945e2b683cfea14bf011512bdc899be7117525723f3b427d1a2cc575502971e51bd9e8ba645f4a95703af6a3380338003a841d47ee7f7f45c96080657f4bab39d55809a0699e01aee6d3c6929c6a7b95a0307f004d37ccaea07905849dadb31a5ad42e14396d31b054513aa607102de3fb053cf69605ea8bc08227458185bbf1d7a1d256de90caa2419fcf316d748d7fb1c8c63f95483d5e6dffd351c016fb2cfaf1a35cc4c4b0a4c0f58b0f9811cb1c90a1d41843dad5f76f7a861949ab7228b1099434ece9224eafe1f6e509d37cdb493268e91b13ab1c6e6267358bee39f38343d506ab23d81104514411a66b11690d82b22db59e188e828900ac1ed308a12789cf1214bbf26504a025dee78ee5a0db6aa8db0fc7e19c32352ee8ab31f5d979cd3ce427b0b3c005a161f5c0da0d4fcfc450e483db912f93ec6b4a2fd43406610b6ae902d47406c801f53b900b31129275ff31886af3890663b27f7dd1394c6e9faa7589fe8ec1f5116b490067f090553381530db2d6e097867f0c0567cfaa70bba9418d220b7fdde7c9ae89d3005f82961af3f9eec60b99459d702b7f20aecab4131e39d2cea66b4308cab4ffff65a258ce33cdc2854e3d6a0e8973debf1ce59846ef5fd437c8d36a7b5aade23ead72adca38fdeb3b3a59d0ecd2458bf89bb74bc84f11d82cdd780cfa19189cfdd205c4f7495e348c93ce59859108eda9cc73c553728ea7a25c1a5e6d98e2fa2711f68145bebd11266262ac402f826bbf3028644a410a0621d3eacc8d020485e32befe32800e17939ecaf1b1c8a291870307fca7ae40507015f4b9f0d8e7c830720b4f6a6aec75615d725cd1b2dfe482fd794721e40ccbfa2a7f1e048d0ea6eb757799f3eec7cc52537438aad4bf45c351fc207436880781d643e67ba4b0a4a4dbacbfb6fe91e97167f3bd351e8dd6b93c4829c8fb4302d4cd352fa00095f4063fd41db914476813b5700d06b0d7617695f9ebd8f6e0908f72d68facaa1fadf07c86ed8d5b9ac19fb76d4356f859874c4e655994a585ec58d77f9ddc99cd563ca39935ead781319dd2743ba8b08444b9b92924e4a71509c88ccee0808673a841c8b547cdf7a7afebf34c88dd9c17b726e9445e47d9312c18b8b4ec6a2c32ef168eba1f759197c171b4e02cffd973afd5e826f64477dd7b5bf9affbd38855e8aef50d46e7c0a5d167cc088cbef91fcfc1ebbbcdfd140c0c138c21fa717b8bebb161e4858184b73488782980ed514942357f8a58c4d1fc9c680be7ef46ef0bd6f3e3c763114ddadc4435405ae778e221a3813b82b1d8be890087699609c065efde79af90a8b44cf03b7da3a327691745b3390169195d4b538a6d3c19e16644a1ef46b0251ceab098c43db8fab8271c47ef4d9eef9d2459729b0cef641ee44c4ffa3dde2a6b2e4e47d1e59134d34acc891165f7e82a0944aa9b8e1de4a9513476922081d39bd314ee9ecb94c7a950e05fb6c733d9a114e9f0a5e593553c254d813c25892b839de44f027e8004524eb0e0975f9b462968db430e1a5015b850f99e953b3e9ab5b94a6650e70c2b78e81ebcc6f6a9872ffc2666034e616919aa931f50b329c27be206c89432c0aa81fd55caeab5c9dc72f57eca9fdf70a2a6aa36f78ab3a4aedf5234fa5d9ac00d073e8a12ea8cc897dbe8b1c8fcb912d2a81c154150af0bb26e4d8b254e4655f76f293b4606817f711a9c51ab0b03db5ebaf89452819ddd080189fccbffedf95b30fd5064e6f189c3488be06df2a8a6161572cf7b0b6b143c09eb462e74c162ae460c4aff52577a886e7c8fa640c2c39898720227070d5dfc51fae084c000f6866e0f740cba67e8ca35b0ecb2206697ef87c0d0aac5ba45a7944b5ea43b009957bcc52a0db45073c9631de3bb1d02b6c0b4782964ab01b6a89868aa7036b16497c78c82a4d5b1a2303f20ea8d88ae58c068ba5cac1b687da0d8167d9c8a1514eb838fecc1ba43fd7df6e48a648a5c516f5b8a6c2f2caa17a454b1b6b422553fb68ac61ec1f9fcab97a41e39f1a3585304d566555287f53a8741a86bc98db15f407b80f1d6a9c659020b5a3a97014767618fd6c750d97f5a0d2bc30ed57901a7a0b0007f46e550221b2c72045b7f54ca26828196c9b504a1a19870b6c12c7c2e90d2f655878b9099f2610f26ced36a7131520b4c9673d79ab62185402345773d5bdf696e7c95d1eb36530d6365bc2cc4a616706f458d964cc8102e6db9d0cbb00ea451309758aaf54635dcd736de596cb1f8609991711f13739a478e4f18da4c90dcf8af44fe1fe2e851eba27b789c1d53ed90c75961e53c5ab1fea162f2d44154f91550b222dfe6632c78902acfb47d481221a2d8c990eed933748701c61a88291a9e4adcbeba611fcfdc85a4eea89488e438c89c5403ba06f99f585c5e745f4664ed50345f54f462f9f0be336ec17c1279d5c724a83e889ec7732b320e3609f549ef99139a211d4c93dd087052da952ebd07a3cc7321976bb439f935a854e53bf0514c0b32adfd262b5814c785959110f5961e34e7acc294cdcacb4c660e71faaabca950f56d9e83e0c65d719127456b789994e2e759fc336e4d0e7b40b33a90b9d395a59ef784b2f2ed18b23cfd29ce818f81c92dc21d6ea7884d8d7834a1a8a942473f9e64da61dae3b16e6a6be9c9ef02e72b41623f49fdc996c1baebd5ca49012cbd4f29dfdee5aca131620d9006ad84e01aa85c4f332cff440ca9182cd44b366ff12db554eb923a9635b98fa6ef8bfdd6bbaf03a0d516c24fee7b07eee0d7a1e05d4ce02ce4b18b8b37549efb14fb428960bd529580e3b1febc9725a583939ec56ece4e93b080f44f74810db4c958c9fd583e634a06075a47e6b4d54167561277217720a3da51278a80bd94f4d81e045e8e8e163ee617667871f56db237b4e8494764d0001dc93659a62d838e36148808c148f3200ce4715c7bab3f8d1f9dae2e4fa078551fd1e33311950463cac47878320b2d550368332e9785b7192975e99b7615bdaeca03e4c70331ec584c6117fc6805bb6ed6c8a11f8e38e1d3759845170a89d4139db526fb229c4f2ee6239354a6fec415cbebc30b31c57173fe31d433a21ba69aa5b06f3751a4c82b30f3e07eb843c2fd7445f23c0fef735a48811a2126aafde1fa7dbb5ba3c2c8b0de98c8671e5732579f131d761a916f389fa6f9eb0ffbee38a7b2c0a6482076800d844cca32773d36980eedf0b9aeaa0f8bd884e9b5dec41208f67c0b91c4131ad60b34e35fab4c5e00b9972ed1c79182299308129aa3f9eaaf9cb3249c000f3b36e02feac17284437dda890ca5000d20aecbdd78394a1b44ca64514323693f4765c8fe76cd349c6aae848cb330c2ab345863f247b54178207840cf17778571233b8f6328fd0feb8fbe57609cc8039d99ef42cae88792c243122181dc090569059b40416117b6f0faef21ee25ed34cc21df0b0f32d88a4432ad0fab9e7ddc0acd74b905fcc3b2611f54bad41a52f33ffd7eae3eeb1daa9a2a21f0e30052861aa4e77d9b8e13b08ce6c276227a967a1a4c10230cf5258609a8e39e018d7982895ab249c1c1165867795e1b6821f6883fc55d87824051dfcdffbafb1c791d2b4e7f109990d81f1756a4cab865f7dc7c89a7432af4ec995630d3c3331df49d914594c471757b2ec2494edaabe84a910e42d3197b4c6ca436bd530f3a0ffebf4dff3ba74146e69027782951cb98ea3f36426c43ced6809f5cc70f2bb8eda3612c24a2950f9f1b277bd3c54af4e2a92e6b50123b2eb4b3143e2958347dd242921c5583407b67ce3a1e09b5bce9e0be3ef914d4efb06774987f7fee2cbcb47d0937bbe58df37068304bd5e750a1f237f0b78df33588e02b361a648e797c3cdb7de0b4eab1757304c8892637198ed51c386c86763eb34d0db0f03f331aae068661085bf1422025f8fefdd82a083d6e85d714ff8b070babe6d01e518d1dd89b975192a9b48996aaf1f50fd88e342bbbf87f400d9a6743082f7430943a51a390da027c17093c29a23b7d6bf41e7d91241c672ff16eacc011ee952b753c52958efd038f8939a1114c0177b1fef092b74c3baca20962a82b74220ba4c3fb1cd94e513e0b1efe54de471c3060a33b9a0a2d62f2b0c17954c19320ac573474248b99e5ade3b6c2551e428f2e7da2912d1594c5d11671f76858adf39c42b1f544345fc00fda3a20442b16843404ccdff15d597929a2f6b45797ca94280c819a626042f0495f766d81fc5ba97930d059f0b9002e504e0a6615b7aa9b0c60e3e71c08cfce946eb5c13aebbe90f22ac4d0ee8854b999b9eed100f92453e2d353e83e74fe5c8a15a12af6930584f0425ea60a31126b9e20fa2313a63f02401aa9398d04072f067368dcfbb8f48655716e7c40876d979d6d9af70121a2a96deb04770d5fe03216425633b9b037583392d202b96491329b345845b24774e712016dc1cbb0f4ee42bb313cb984e2e425c4ddfbf33b00e658f66090dd40264ee8641bdc1c40a377eef400922affe98cb10cd8763c7658c8e7130b9f9aea3d0f20f435bf519c706ee3f4ef227d8f16020ffa287d2bc3c7cdf6ca27716a35719f184b68465309b8e1221063a0af4b8120b489be72fe3c6492d82abf3a929b364150b8110f99c99ac511dd3110e330bff0e904e28ce79acb04f9430323f43ec8d4c7596a7b98f1b0044a0b12e954c000cc100428a7fcec2ca1f8893a63dc976f73c6e6b23aa499bc6a49b6129825a01f5befe19cb5ad179603ef56de23c50708f09e5c1caafa5406ead91710c05d641707e403e1299b6487a69ec5e5d5e60d66c5b7902095aa32e53e91661358654c316f3b709260574087c752e3798b9298f094521f354376d62a8bbf0228ed97be110416d5f99654cd36964f1f64406e3f10bf1050518089f27f1a02618d06a5ad9b5cf32d912cb6b406c60aa0b6685ca6789d12f1f36f907874ab6e8ecb322374fbc5e16331065b4e82ce2e26c59ec9c8e6474bea0feb84ebdb2c6c66c29fe42576c1c7faa28a006d1d67fda9574e569999c2d57e8d6af43410532645171fac8adc271be1d82c6c14966ea6bfaf00560573f291284211a1f2c66e99983428f7eaefd86e8b385860b7b3c2920fcd339c66ed7efe93d332b6c7d3affe54d46451d7521884a52f61777de38d8ced7cc0a645b8085ca7878da51f60109409f2f72c1acf6f24b078006c9bda1ff8ac4f366810a0b77f8dc7cfd42136ff9437ec852460eeec70a06497585aba0d705c3ff08351b52d03df76b8616b93bc7bafe9accc74eacf584c4fa469fbb846f3e24f937cd9d3617c777e32d9bd0d2df0b623840f4bd1a5859c2a919d8040466e494ef0b3571c0d9ae7c020d21804cbfae991f6cb393b1fc7e10ce925c10786515f472a3543ebda0dd34711d12018c5076f1eb79a7d0973cbcef01fa61cf8be3563e0c3bf1c89f00f81565a8cf09241795ed9c82b966316e1b5564a18567345ba09b172d772685deaf78789c02d2077c8959f0817d4b5cd86830428db64d8b93b0c018d33503f435461f7f78daa5150e54b3e5a0b900723d9787c60de4925ca645aa83bd087c5534d7b7877b54b9dcd065d5d8ec2c442d4723c5c319bc14d3eed5d80e184094f4e656a987d91e61c38b98a3aeb43b1ac7314a532b18a017375c92bf1508d68be033f0dbb847cfc4db91f03de112d2ef0964dd51661c5018a6197eaff597cb06586c6412f498d1caf4eb4095e29d2d652ceaef7b5139dd2160660d710bbc93b365e44e675a718d38634c1e412cb3700db29b7787415891fccd1eccc5b42078ff9c244516bdee99cf8f9c73816a8c33a3546109c48bc5aad10eb62dd406d88c4609da03178f02ec7d5524bdae20827c434f37293e40fc3f8c443ff0fd9a100e78bbea98061d7d9cb4db9ceb8ac9581fdd57175aff6286663a49d0a1e82172cfdfdbb37cc5883b2790b812ab69b8b0f11768d82306430725a86e5a3f9251df4626dc33e28713cdc7325f79a64cc11682e87dd1a7a2f3379cddaf45680071f129da0ec6a7d0ddef34a765ac04f85bae8b9420d6c15b1b8dc05ca4e4745a1ecaeafbbc17f894d70c5b1358a21db71253a618d0b52dd1aceb3a2a096a3042b69d7f09a61e0dc7f9b92d2877e2233f6ddf1601fbe875ded0f8a16a79b0a040ba3d175492786d31b09a18877e27cd24a64a9768583c64692729d87f8de9f7b988bc7a218e2de24afa949341bc05ebf30181ba402133dc0a7d38aab1428c03e08c83e4f3ffba25bc7dccc62e6691c07816c9312457acca2a616b7c5a01a92be1f83bf9932125745f81d4651d5816868ff42a4cbee2966048074c3f9ac2503745c3733817032c0606e1ed14f8f95b720220cf4c1ae104d5743e2d5fc2ed34cf9e3f483005f6bc0f76901ba21687819b92efa8c53f64b3170faea2b0281289f3c049286df5eb52753f9b599cb21f506be478e02d34a6e06527e5bbd371165635bc9511633f1299ce3a9d50298481b2541107cf6552a8b455ae8a2de91f39237cb8903bee5cf4bd1d0c2608015591e66b9857ed265c413b90485de0f95742d7188e3a8511db2592cc041cac66a050dac73296d1d22aed1503a10fd58379fd1b22c050083d84b1ae0dcd89f2c8012e9ecdb7b43a6c482e440063ff9afc67f426794e03547c6d68c065d71a64222c5a325c715b63c413d7d469fcbc9bb421eb0fe9ef881ae3018d6d24cf7f4271ab9256242b050db427d2a4d3d85907ae31df801e86d3e62468bd41ccd0194319e4c842c9486108fa95cb765af47139436ef1b61774156565130c10aa6130156cc3d4b873a17ce49906ed05b53b1976dab5c638add089f36f8baa55c109e0af828e3b095fffb0bb72f81b28a77bd638960db3903f6d459fb9010209395efc78bc6da8e3572ed25c1c5900c548840279b21808441ac183bdea16a9c310e48a441f84c4dd790d989d940f15e5f0dfaa03a503555e7a7317360e42589063c4701653342fc21b22c8ff31a7d0ae457b6e2109bdce47279235b5a76fbc695ddc9190487acc649b030915448cc90d2d700276193c0093eea76f9c1c34e298e0470c1a0962c4412342eff7430e69b6b974c8f56ea4c8d5dd451a7bdf81d09607ed1091882c2a6f4af83bb0852d06ed0a6b4f34729bd76c59f16ac166cc4eecaf58236a268bd46f25a0109dd4bbf7841b02d7323388e087180e5785b09c64a42b996f8f47ba68eec869794e91c0d8c00797abebd3c07f785cbb77d9169549f8a079226a547170f503575ddcc55390b9ed894201def73cabfeef6afbb475871eabdd494b35182f4be0704fc04cc76100ebf81ba95116df4d1ad0b3a0b788b4a0fba72101061405f290598711b7c40bcc1f366a8667f1fbda47a5611008938466491fb5b33207bb60db749a72058475c826ac1cb802e2ba68717c4a250163787a2c4171c00fe6b6623f4676a766c8567c0002f69ebdb053387747ee13892bdca13d712785f16c378a1ded28b8f8e74537362c74a4134ef5b65cf8a784fe076280d554c8fec46d45151d42ed6c0f3420e492afa2ab61578f5580bd483233dd2100842bb0020af8f7933d26047d549899efd48daab30b40e0a6ab94ce903923718a0ce56f4adeb25f38b7f381730bfb8515b0ed2c0e747410367647562fff7e5575b7446e6436de3c2242dc6468bc9e820572437b3f45be6b70e2626a181582b60d369d9906b7b3df3a76e552618be10244518156696a9426e4d4da9e9fe5dad2075dc1750e4aea14ff40d59f03c5d8303e97f49d3a227974986a0b7f720d3cf495792e01e53fca9c3302f3c3cde7fd541438d03be3e79ae4e0c2464d9f80008f04c5e9f88c85c003bf16724c4559e537d79364ad4749d8b34cbfa7a284dd60074c2b86bbcc33031e9b13017e5efb16016f00a150148b0e3e7bed3f9e8b4c79790bf4fd62a212ecfd928a801c60c7f78d04007fceded1da46433c437107d984c08ce758eca7303b787cf452d7b0b54e959f93a33864c2972a896ed0a4da0429f01de843919adbc4c082892254e2202038cf267bf117d76df7500f0a32252646b564b93899733b5e206b199e6dd9f164e3c0908b793c1d2cdbdce9bded6ae1d9b617852c00a1a635272b9e7add319b06890fda2c39cfcd6d56aa1630fa627ff9c062d530f20ea1ecb2d802ca0f3ce7d9ac9e5422acb8e8465e03cf5cdad2ad5909bc61d2055ae669dac77a33d11835f5009868d71e2894143f87e3ff8098ca62b76987be6c52d85d990a563e21cf6106b8981d1c640385b8487a33891b653648c54c02e7ca96eb2d4f87bc50e17290f83cc0ab7168960bd3bdb25a2976b983f705db1b9ac3966c9f65ffadbf307937336c4c34805b7ebc244995bc1b418df2ef65a1377f4bab968849673c3f3c6401ebefd10441e611e443403e1c71afb513e88d882ee67abfd5cdb0269c276fd8e384a47aa0358338ad434ac7425d922a97cc65ff360a3b16f22ca6f5fa97207e8216f3bc2543ed8cea67713f88153fd16fea00cd8773099944ab5aa9be9152fd22853b9b8fffe075047112a8511e6c541293c6fe3249f0641bb9c57c73371978ecfeb550f2239eb588873bbf97e9bcad6edafd8c5978cd1b95510799f06d85b2a4a69dba27f23190e0ad3b97f675742db3fea0aad40cdf3948b4e65a7faa4e3775194908b8295aa6e5a819511e0ea43288c4cc99c94b5313bea62e3b1558fd1b62614de5ab435acaceb93d8440c1c3fbb991139c3410b14b86dee5e9311f46645c2a82368fc919f627c504719c66a27b9b75133445461a0969104312f076ed57254974c1b51070c24435a104d0611396d01b4f69bc444804fb6c1bdf9fedb6d3b2dcc39044ae442babe7abdec9ce030b679e16ced87b972f3f38147e673f68bf54509202c21cc8c65cecd872cf975c7edcfcd69a6d483f156b500fd9fc6da688219b74f1fa21942559a5059b6be9c81c050efc1b6fc2f7d747e2682d4fabe1f3ef78ca020a12f582789a470456043e5ff5e8dc8acd714e0f928307463f770c6ef658d90a15ca95ed2038742d6a64d008a5877c17f2c8a89c99d403618ce22191baaa00212873bc62cd02d426ab11922323c84e7815c3d80f579d51e6094ecbc9c7ad897f186faee58978489da601f4ad072571037e5a8b8a44942af2e78743b115013ee4ff99af16b3a680314a0815a1a7f6605e1c20357b6e6198bdfade07fdae334175a61eb2a62c7065afc5f7011b0568b65444f773fe3a9c32e4e90e32c19f9959f5100586bb7b6dc525b41ad0924b6c40e33cbe416547dd9629af5567b115e2e1741e9d5342b4c0e191fe1a162128c7c865c67c1d0eebce85c621e25ce5069dbed265d5bb9a53d828323994a99a0c107f81ca002c920a8f17916be529ed3d75699e58ebf089af99a6b1fc23dbca34362aee16a290663c3a18c6380c22f3de2ad9314a7b5af1b9ade27a1b04f0723662b1d3b54b9728c469e490f4c3e702403a642d152c4e60efb974fa6378f85cbdf99f13516473c04651a5b7282302b2599352e467256b849f01d42e0338b144339c28c58bfd900004cd569c10d51cb8668c5450e78870ebd8a0072659e80a8179affe78bcce83abaf6d40ac7fc2f44ce36d916370b068e41a18b4a5975f484f5f4d3a821b48e8800f5a7d9d58037e43b4fd80440b6a6bd79ad12f727914ed425cddfec032b47e9ce45847d0c18a7f163552e9c6f41fad4387fec61c91a44e33f2b55eb1fa52254581661a397ea0c34587063f8f74c8404f0d3f3a457b7f72e82a744c887385258847d6934915b5a60cb9f8fa562b9f3a5301e5b67e09695e24fea32810f8e3479a2e47d1724d9aa94088c4ec6d0170de70d0cbda589a2b5d98be95e9e12d3236600742c2f7c762166b450f378e3398d540791f674adadc08ab132c7d57e418178499d04f67c6e99a784c138268692627439bda2fe81125bad8158d9d080c5ba9dbc274d96dba586bb39b775c328d5d42dfc76576f4c6bb4c28b93ca228707a28cbd48584a925f9af8f8e7de5314a715885c64fe3c64c1cb7f1696073b9f4f1231f02f2f11dc3bde010d1fe4a7825ee0ac1fe74ddd6bcb848db0ccdbfffb96a892b6c6eddd1eb12dfc37226386097bc90d2183a63860dac79b5d0c96b1807fdcbda96938f26244e13c7cf2b1542668dc8e5d6434e4c87e28e39bd3fa22a104bb74aa16c236155649fa649e7f640c1bee553d165c8a709e4a3e3019434c518f0f040c3247819c200b662f46b0a30e073759777c71bd482b0284859780cd64200c4db43225a2a422a214952c76908815e129ef7768dc29102693d0d20d04cc80356dfead1100ae764764705ad730f284a977f298ee7a74f6bafa1a1322959dfe63b4005b369388591398820c6c24123cdc3e6ee031d7dce1a10e288c6f7b9472f7aab8250069f17b25b3a9b264c3de1b12b9278eec85bb5e7bb8507293715343a510504ab9c1b7b31b773ec6cb3eacdb1d4ebe05ea3df389d76f8998360ec818086a3d184a51e7ca370caef5bb33642ab5ff663e784ee88fb58dba9895442883670184843b5730b2b0d8fa32f68111710974246bb5b866c1ae1206839703c8d02f46d80af033ceb15915dfb967d7d754182e5b9a1538c31166914a188a328237d5f3e4553e38fb7b64dc7a0bf02807db83826319df95b09f7c138b5709e4fff394c1b298a7b8e8987fd012e64e8c58eb26f47e28aeba9f81a3901eb5bc34043f7ecb17e9fed395906c84ab068fcb56e7e05523578e94709a3f8219840b0158889f9dba4627e65c00c7ed646b2b7e7151568dfc096089e149258abf62f56fb6a0245b74987e2af906c10fc064d3902a0f62a3ee8f1f7a53b6a12239249400cef31d84878bd3b0668177219b269bef5e5f74ed5c830ca1e891a20575ac988948ef7a4e350f7a82b84f17faa198902bc43b8baf205b95197f0f1ca8c016a6a5be7a47645344a5d76c27a211208b52dea5c31d2028ca904de0784b90c5a20523a4e3a86ab55f44aadde1add9ab67545348fd467b821f87b60bae39ab8ca49d79b6fce8fffcd6f4757f817c3da676694085008c0199bd6a3bfa83afc6bc03dc29e6390f6af4dd5b1e2bb87216a6a8d904d08217befbdf70e090c4f0c890cb0b5edb583ba47def98903bd014e19a19454a04849ebc4a45c7893378da86de4341c2c951bda3efb4ce061b79fcf892a64d72157d95772953dcb68b0e22157d98b789052b3352c045f5498f48ddcfd520e18ea7bf8a2e2ead8dba7046ba0e8eafb55c9610516c4b087468aac2cfba302b667bfde1759db976bf0416f07d33b1abe5850d45826b77d797beabe062aba861eb4f625895da574ef4bdd47966491bed4c510c8487f1259a4ffce6e88f75b396d8837c784f1ba7f4de098304d228b84531b062a8de92a443c58dc9b94d2603d892cee4e32dc041bc3e27e698781f88883f8d8c1e0c1301b834596090ba6340ef3a573347c09a1a58560a2bf862f21a4f42d5da9436f54979dbddbcb4b2c7fec615f910d7f6090b35970c429ab3ae35051015288fcc4d4e20f781de4f57c548084a18321676239a14e97c883a7dd95bad8f0125e9e04698487482411f002682a21dc61b11ff11896cf5241b0c763f8c21df15bc77a0cc21db613b25db8431ee20dee9098abed97b396974c1a56ec09a0298e5ed10a5c7d83f0e06b0a988e58d627a6fca2f62a024b6fadfd66dffea37df9caee4e7b76272f843b4aaf971fe9a52fcb9364f743de4b0549c11d3315646bf9ad2576bd59ca9e90adb5dbc01e29b8635ec33670870bd155c564c239fbd1debd30f4c43dec5c88bf59bc764df3d17e7f4870c77c09ee98aea64d3cea62d2dd37d9918e0468850eb25d4212c435e9a512f720db5b46b291481bd76ddc356bc230ee8a491233c1bd441e6df89aa2844be4d586af295e3a02e04229a5c4e417b1c3ef1ae119e175b0470b1cec8184999919999beebdf49999999999245c58fa851042086184b2740eee283d7ed78a477a77ad78dbb55bf16ce925f952e9f2bb296d712b9c01562102ec4b6b06e8a5e5121ab6deaee12cd459067f8e6cbde119b69697cfb094a754ca6792c62ae55ba8b09ae86b8a9486c774dee20c7750ae5e70eb331ffa4ba99547c9153c5d4a2bfeb136c85e2f7d61ca075611a5af0ff6a52f9651857a1855a83fc2359d5f2ac87cff685f4edfde1178f1b103ca32b9e2e42a4249b5b83ef5b447d2ecd9ed331b95c4ae52fed0cfcfefd8a3c5b22c7b86337620ae2595925e2b3cf9583af61bb1c71ff291665976d8f9d02043531dd97b64766bff4333fd418f24886ba0153ac836fda441cad059a683fea8a7387bcf3cf6712d20a1d816e1c26ae2ea6f9dd6e4b1ae8fbd3df70ab96fdcb56f274eb39f92d8392a896dad85929222feb1d73ca9738fc5be9e5c6dcf69eed15e3bdc91d310668d6998de1cbc7989c227b9b28f8fdfe37679f8f84d991dc0e1ccf5dc3ed8715e2bbc790931a0d8182640ef68ec53e518c7dc1885d02f6ef7e27c2fc7e11c34573a5438dbd718b52f5b21a84a0e7e396b08ad89ca5594ab9b1f06cd868f9c5c7dfe6625755452e73daf03f6985da1dc8b83075f454ce9ade3ef8c97b6709ff0221075b960152d004917ec8231916da179d9be6c1115405dbdc11eb1c7f69cd58838326b168a4002ee809da5025828e208a8026c59a3e7b34ec8ed88b3502b91cd0124b1e36b4e365e8a53653794501cf0454494062a75fc7c8ef91a5101b067e71a7daff0e23179acf3b1ae865b748c316633462a63b42b523cd6c485f2d6c39b5a2f80ce757e0355e0872012883c1e426cb193273b58f64433acf853d37ca4eb733a9fda897d8cdb182f47284768fa167c64c5cfe5e4c90e563cd10c0b3a792259d8891840c40056eb0a91f8d69089431f6f71ab07b38fb8759bf3a2c3e79c0845ea08800a71618d14806955c3570aace81e48e6363f43a5d04bcf8a67c0f6f49b1657c9eccf11e8a5edeb0cb08a285d6d9d61014e8abae22a4b8454c8220a15b28802671b7a3e1e76142055592204bdb0b4c32aae1b3b1021858a04009524b4b8280dd04b5771a99045142ebb002745990b561165bb017a6169d805bdb0e083184107c5aee2aac1850c9a28c1e56241bc44c8051f89988cc04511693899e989a1112f14848102a286325f22c519b6e1fea8d552b992a359fc8ddf8f2ef6508c29dca0da5aadb5d65a5badbd8dafdf4fc4335cbc30f085cb8410be30d43f1067f90863d109be347c9d404be752d3134ca115ca559ccf7056abcd533f62d777fccf0c17de04129291eaa044e70b432d7146eb533fe45fff336f2d17639ce2c22d0def964e10a6e584db13808462530d5c282f6c482f941bb82608a325fcae095c5d9ade52a9637fef1049b68de7be2cd45cb79d92485d873317b79f0d2b896d9fed2de7c23d843be2fd38ab5d21b4474a01d3f4b6bb532ac99a847da892ac39087b7038733fd2a321dc7181665bfb695f8237f43d74218ec14071ccc510ead06ea30beea8c7e4b558c5b83970dc50a56c6a50366ad09c66644c5e89d47177d332ccc2097b7471e14dabfb3c84d92dc25c45d655545d45d455345d45d255145df5dfbe78dca7fcb6c96d7b8457924424f5f6f743528f698fd7b092dada37fcf330d7933a49bcd750d3494a2725c95e43cd93c8d75093c4be869a245b762c498d9370d62e6f122c9e9e3d6735cfd9678ebdc3b9bbc535a0683a9c4db7ddb7e70d671a9a67eedbed935c9c4ba56b38d3e0acfa496a97cff712e7d2e333cd4f1eae012523738a73f713ceb59e8433e95df77c7a8773ad5e942fe15c7146bdf458bf3d475c43cdb37c8ed73c6fafc15946e6269c4dd7667096316935a44a52d5a881b3aac633cd6be0ec79cfd853b729bd0685b3572add7b3e1de37ce3c68d1ccfd973e07c4355c2b744fa549cf6efb4c352c7a4eeb8f47dcff55f8e8f46d2d4afbadbff1430c6b174223df58f96fec9ffb9fb731cd3e27dea98c61e3f85e7fa14beef39fb87e37b0acf9ccc918394faa3fcb51c3972e0e7d231ce39729cb6a78003c76dd8f86c5ea3c2b2a7f0efb9fbf73fd71f07cebf0ac7bfe77bd5b396ba719389c6a79ea3a6e62a1b9ba35ea37acd33f79a9a67ed397e5383b2f1149ee553a8b971550abf79265df56cff1de71a9c6b6ec3460dcea9dbf86ee3f9de46cd33f69ae340a1aeb2c1d906ce36ae3acae6a8e7d35135cff538fee7d25f93430667991ccfdd73cc3c85738edbd8fccf344f3d6fbfc119e3dfc0198533ea26d36b70ae51e3289c6b6e321df51cb10f14ce3550aff1cc611eb88abff114549c771b38d7c0d9c66b9ce39e7abe98470a676fc3397015ef3d8567fb1470c6b8869aef1e07cedbf68be3f759c33770bbafc1793ba79d7ba6f870155ff39cfd38cfcc3c07ce2a9c55c7417f03e754ea2a9c43008327beb04153d5330d56c155bc0ae71456e51346419b1a355e83338ae63670b64755a84842d798aff14cc2b406ce34d8eb3084ab78f82cb10eb88a3fe13c836ba8e924dd65700da84ed24d2f6e800427b404223d97f009aee24938771885610faee2338b577075710da74e62bfe12c022d8420020eade11abc4e5285e8ac79ec39c31c5cc563385b9c2bcee0ea438f291d2eef44cb325ab24a302556e04279337158f1b36756dc01d8c308ec113f2f03f6c5a32804b8633e0ea1679e87272767b5fa51a829bfad4bc4128f260d13666121988a21188a33d49279a8af8a5a7eb47be60e0b3f842171e0185a7e10237160b350022712076e5ec0d70f61b47c84ac3ac5167d2ada898645f0067230078317f275fc8c783382f76a2f67cbc3a2ad0b0f16b13a9c330e67efe28cda707eaf70e6815d8638a2a3abe30f53da1e1639714bda372378f6422293bc3dfec62cf33c14ea5fad72200e06c30a6db777e1fd648faeced95bf357946c593bfcf66d5d78194e658745fdce19bc0d76379d4c873efe0475ac0aeac829728549975c61df3ef949287285dd7e52ca17c49e06d5d6be7df1a274419c3d576307823d2246221b490b373277268e6068803d288e61e00eecd8e517cd803bb0c72f9e01776007829d87272767b5fa51a82d675b172f7b6bfeca519878060a728147504be6a1beda94e0d957aa3d4722ec4452071e03ca5c0d848de9f8fa014ae7ac31ec15e5d5d839213e1e1357076dad84034a6e0f75e6ca9874bc16850b2f103cf8f2218cd6fef6610b2aba6212e7ecf287214747fc237d240eaa8d5dc3e72c84116f5fbced9065a59556466e065524b467ca272a015ae1e2c0832f1fc4347c95004c13a0e1ab04aff632298b3a3be5807ab81b4b7f7879f0e5c3110d8bda08ec91a53402bb20b0a825ce3ddd01d863e238bf0ec01d51be033c46b62f1e92163a0077c067b8035e86a28619f6a038cf1b9938e5238f7fe6615143288cc01df0b38839a310d9306d29fd991ffd7ee4e9afc8c30dbd605fda422f6d17e0a4887671c5d5f658dbbe24ae7ea97aec4b55ec63aff9a89045142eaef3598093a2b6554421fd06b722ab9502ee4a6f612cd4e1d35b1f263aab8485729cfbb1508e27442bb0701862955efae93d327e56743c8e8fe82cd36f7caa4fa8fbe9292ce4fde47958a8c3446779e76e03b442ff641855c8f0f53aea8e2cd44774562b6bbd45749610e92cd36d7cad1a588844fae92d1a2c24f313263aabfb0c263acb84856430d159a473b849a983af97968e3888422074c41ef0aae85cab60e923f0a83f44a5b52e02dcbb7b73a7c344dd49f849879bacc0229dfbe9b32e02dd4d2722ddc34f48f88a7df7a1b615ff4c608855922cd2a99097b5a2cbe5d9008b70aa9ef42767916e9f6920e2c567193a72a71815558814b86b7644b893708b748ed471364399f4beb837079ebcd2f015450a5a5269f87ae28c5e357c3d01039fa026603a0f39e17275fe800f52347cbc39f066140d5f37f8d2f1d5f06583215a47c357135474ec5cd87cd0a581640023440309913a0775c145a973901516ccb8a073d00b5c70bbe81c44822e6ae72442a041432104b0c151e7244c1c652e57e7435d30bee1ab5ca0d858c42edcd724b1b147fc13bfc1571347341208774838a6bbd72fe30fa03a08555b7ed905d816687ed9beea80be6bc289eebefdd66f5fde82d077875d90aefb9171dfbe2e668923dc11bf9d83cfbe1c84c93450194fce8c2259f52826a474bdca47d77ba78c833755e8de1bd8c0e3e6e32400bcfc8062b7e250943daebc84477d028fb6a973a967175656d4f4f3bb3a78bf28f068e7ccd5f4134b17f59d14528900f858032c7d829dfb53427dbcae935eb6301f5d34d6976b5e393aaa54eac4cba29edf36eedb63f7c2075c1de435f6bbc5ec3966d66e124bcf47a0183fd4f77142498af2a846ad6ab266b5caa95dde9a775d8a064fbda341979e9f1dc79debee4dddc0719fd20d1ca58825d5755d8f4c91b22e75eda9943673436eb9914aa552a9ef86676fbcc66f1c714f3952334c2a07d7cdfcd87c7b4e679bdb7c0b02ef94f950cb1bc76e74b7913a42eaa45e8f71dc7d8fbcc17d487c381ce74ae77060aec475f1462a7555ea9c10d9f65c5753ea34d51df5eed7d258f3e5d836879d109cee6cbe9a1ad4679db0f1d51adf1c43ae4c5f6eb5cc975bde975ba42fb73ac628b7c82d5dbbedc7d263871d10fa23a44ed77597dddf23e3477a4c357c71498206546ae0a241141ab8b280b99c4774d6b97ffb76dc3ac7c523a44ef71ea969275927a40e894422dd6d2b71dc3d243edb769f7ddb2ef76d400c68d2468a4dc23a21384dc2a920f108b9aaff67c38fff61ecfabf2fd7c72f8bdbbf2bf6598c18092e8dd3115b27e44adb7ea16480eb9fd0bf27672d11fafebb8e9d408980ec4fcefa339ce93fc8b239daff83ac58a744eddb376158b5cfbc75226299d2477255b9ae9747586accd2d5fb1167c05f6947e4fb3f3b227f0bfff8bb2d5a1de1c2ab0320362a36c7e66db210f5bccd9765a74836336078a9e7748e399dd3b04b19c0000d3b1b303cfb9c8e9d109b67d95d6c9980f875380f49fb0d75fc52277dd9e6f2a4e7c89123c7b3cc91e377723972bc477a1e0e1c383e1c382ebb167090481cc7713308a37ae46e5c21b208d3d786ab71c1e20c0f75fc722bc67727cd30385ba1441b5a2a95ba16382e76f1aaee01f50fa8c740ea4bef9199984d751b57dd864aa5526daadfb8a1525da552652a9c0a92e3dc73705c290e61730cc7b9e3c0f295d3aae7d4e753b155cf4a338c12c771376ced84e0d8f88ddbf88d2c6fd819ae54a3946edce06edcb8f195b61b9f9d109cbe815341502f1df5d2afea43425bf5123d71360b572a9548b75a09a782d49c74491f77d59775a42275b8d35f497303e342e238d8373ea0183b486c7bd507fb724f7d36ef99361fec9a0fdb62b1d8c0b8e4d6f6e5560759358753416a9cf41a38bb3df0666761302ea7eff6c0938d6d913ad16699f96e0fbcd8168bd421e51ae58bd43199b6edabdea894524b8c9ee7fdb0eb91de9c59f43ebb163c134e7b58bee44ad3b453edfbbdf18b87570777065f66c0c40cacf44ec3971260b274699d86af2c56bab4ea95a56f347c2921a5957022832f7d6538eccbf172df4774d6c7c50fb7be0b6d2c2811907df411034d0e48bdfd865ab0381524bbbd0bd90c23e2dceaf8a18e333eeb84e074c4a920158a5cd17bfa7bb3eec7aaef61b48fdd23ce98447aa9fb90f874cf0e91f86437ddc77bf60e6719dce14c3be20c843324492d1d1003481feceec6be876d3b21387d712ac8d4be4d913a1a1531918acdcde265c992c58b183b6cda03ef273bb4b93dc0116bc92c547cd002174b887e81220551b09680a035c4ba790e39ac2739ac2bf1158ad49961489dd8531a769e603a85c314a416c98014721c021fe2cb1e42320047201a36ad4274d67798b29888f75d76fc505185f8fad9401df1b5838108fef7d911f9f714b0377122c6d9c4891fdea8dc902a8c910a4392b2441706042ca244ef78a948c2d5405e4becf2cb94e82c8cc38430ec05abbe51ce55cf2bbf2cbef4aae789cecab88ce82ccb800cb7b20b61871201928a69fa4cc8ac186862f08504162a5207364e4f1ca9601dcbb870ee6458566bad948856afcc6bcf2a0d468ed890a2c0f6ec44eeb5671bcfc5ad1596c3b34a51e03edb2e3191fbece22248886434a357e6212bfb9df58baeec044558adb562dab18a5d995fe9e0c959e9e091d2d2cccb6a25a21dd3640420ebd9218be513bd9698a95a2cf44e8b59cce23ca4b159711eca47e6eb6df4b21a3f63b5f466555659650c72d318d7f9c84b5c457b56655785e82c0d0b65bf52afc84c7ed55ec6a1268085027b44edf0522ec29604600fd90989b1f3d98400a06f4f2e763e535a994d1c3aa42df50140cf639fcfbd3269adb56a5feb4aa55588a9e76128b5acc76212de3c843bb26d6a575b72455ee85edb6ed6c343ef030867e510ce43daa28ebae9f98deb9248e0de4f00b2347c45fe7642e625ce6105d6c5ab89439f3371680e2bb0b46bcfab205b7f57e6afc66930ca2e88d7b2461965944878f08504959e475b11377e5e9122e511442dcfa57cf2100b7ac8889e18c91b7ea865e7b3f53c0540c76f1de55e78af78f116e85c81b6c161af18706919810ba50e94f2d385090436843ae0e78e93ed4eaecc5fed83454236d8a5762f0891b778fb204b42070cf5d099901c08e6013d9d7d7641640942182b290b4501d2e3c20c0d24d4588ec6de231d30c482ce7e0c5169201922899485a8b4855047ceee002ce336d6d538c8929d4fcc426dc494b6ff3ea15c59d93f13c371fec403b53a7f20687928bc8c7032697d8c58ad58ad957eaaced523512d58ac92ab8aa9a462c6ecd3ea9c27b3f3735a298656fb1445235a4cb30a8be414171edec4e62157f564748e5cd599b95b448e0fd8e37047f67a1d52a79e67fb6e647da9404cd77372e72453b0874aaeb2cf862f2b4f68cc669915313a7b0a4b6118beac84d1f065a5097dd2b04aae320c2bdc01619135793fb68e8772c2211985dc16906cbfb8c3a6f683fdfe96a8952f708795db175bc2dfd97df0db075bd37096f77ef0da9d903bc43903b2c1c90d4c5c8de45e0c9464a8bbe71ad088c2984e028fac48194177f8e20c61b6a137292fdf2383709d0b3df3fbd1b4430cd4ea3c5bebc72f1bba9136f1aaa2e54086502db4049f3b50cacb5b0cd50384c707760dc89dc9c25e44eac09715298d613d60557e8b38041497c6200b7236bffacda90a133dcf6159a5333f75ecf0c085a51ebccc7961b4fc09a58a0a883ee2e5679422c4fcb8f052f10230298b554451c352fca444645c1119a80ba8a0d89022338c19254aca7e522043a48e6744ead4bfc0aacf913af0f58223ba9e87d4a93f74865b7ce80cb7f0d2354abd0e9d29a5b4124a7b08e5836cc31ba983043ec806b940e7e878f801add0fda8dd0bdccc2268fbd6922542999c871ace70b6879fb738c7259787979f8f972a7a0b5f2e18a2ed57bbbe10854e03ea808f63a00e78eb80a1275abaa00e1fc9a42307c168435c7853e051cf05529a7e738193a6d774406f77e0a5edaf0eb6347dd782319afe96dec9cd5ed3b84f0e635c63f74216ecee4f2a48f6fa2ccb60b8d946cab4edb0b50dffc0ae5de3fe63fba9d7b64deb84d06ff827c990902443cdfdc70ab1e7b0f6a1ae5ff7ed1b4a05d1de5d7bc771a5cf7edc4f774a4b9f13274e9c94fe04420344d693b638b27aa67629ed3e3f3b9f7b8b73f78b53f7d96beae220d8ed9f61d90f06c3c4b04cc3f97e997b4a3bec5b7f7f717376fbe5ae4d21b0b9a800c94487c787501cdae44543be1a000d5f54a6b4f6c2760de7c40264ef9135f0b66b170a6fc3291f29e472b5a6e14cd34a681fd19e021227d4e97492b9a974f22e7313ea74f22e533a79275cc36432994c26d3392633a699571863bcc2d032f33bf30283cbcc4753fa32aa4b97f9b2919639b58732dd43e1d36d7c50ae4e387b6d3ae9339d4e38676dc2b9c6654ebacd07250e09732f5de6b3aff1e523a8a6a139ed7c64d37c26487cf60ce77b9ad37c241a9a99191a9a9999d3bd4f0625e35de63433435528140f232830f7276f75b3d271f33aa132ed2827ad4ef032dcd2f13c15c3acbdc1a40fb98ab827468a6bbda1aaf3f8851f843c3247ae2ace47e6bc6878f117661b7268f81211e783170f917882975147bad2d0350775b5a16ba6042f277b8fd4b0958c3e7474fcb2976552d26ddbcec99dfb6dab5b742271e46bb61d41b58653416867a79de1fb042ffeebbc7846bc5a44ae9ae059201c8d008681615e1d89b827449a91e94503308c500f394411e635030c739491c093a7573bfd3478d43346f0ee12bcfa18a5a5f6208943bf8969fa8b69902b9af5867374d2f2b1e52a422dd382b4903083205c96f60ffaa98462ae0b937be529a5bf916e1e07b98e038a3693abbbade48ade6238cb5a6bb5cf842a900eb9a292d2082be906eea0e78ef040fa825712c0f41bbe90f0d2240f9aa6492209a5eb625194a24ceeccdc63314b8cb1a885dc8e3eb7b112bd95d717d7eb4b97d717265e4a80f2fa0206c3300cc3300cc3308cbb663313243367b1cf995b9c49c7ba436b3f83ad77d3e98312c7c33962b9b7b88473102561886958baba80e11f0dd373e1053d07519ae11fee18875d0c7bb59287a882b5f408aaed31f9b58c34d540530b046f509d8dd819504df10f76edb0f3a4cedd3ebb2aa608109d65fae9139338d82b97cd1dd3b12a32af5f1599cf7cd75ec6fe46ead84fd3b72f1efbac673a4929a52449130c6aadf58a51c3d47af8032bad7f01ee80a75aab0538275ead94cb68a4f4723a7839394058c87418a2b3540821841c146c371965ce69b5e748a1441526c592283bfd260f5185f9cc86ec328a5c4d20acb34cd3be69b1222ec09e2722571690ab232a3828f49a11547b7cbc92e0c5abe40ae6e88070073c9630f0e804848be245aa9171533e41b421b6805c41ee11a77cb4940fed7b39d41a4ef91c6d59d73debf090ace7fbc9da17e40a0865a1da9a235752c72ae5436dd73137b287ba48a9887215ea0c2fbffe2a4aa3702e2fdf480edf3432a7a363c60389d3078ac113c1e40e8fc4c1aed530c96497eb489b4e3ca66388c4c10ebb2e3c228ce842c1cb598d1cedebbc7859e7c5ab37f048493f3d89330fd44ecf9976d4d779f1686c7c118a5cd5f8738ecdf353aa1b388e035389237f83cb54272fa54261363094aba31aa56b9fcce38784d27c393b7df93d637ae9b16b412688b649c6848dc8a0812e8793ff8e88f172246aec118820ac89344ce1334f2577200bfb0a2b9291d9187742305d61570bebc428564f27563f67ac75bece4bfca802cb83a5104248a907e582f1e263a43d38c2dd6c377b6dbb8fc3f9c86a22414a7f714467990fd6da873acb64d74246eda994a882c5348a1542e7a4b4d679fbf9d93929107235e77c26ed19f7f9e2fccc7526f37cea4cd5599675f66ceed4c02789537fc1f0328faee7c1e3e33752a7f4fa950eeea5578ef47aa8d190686868be23371ce6b8cf7cdc65be8fbbf741b9227db4bbeca31ccef7d7ab990b18e6e8146375e39d608f16dcf1d12057f1335f90c48928b9934d52a9a33b333a5a56676c0b481d16e42ae6cc221bee91aba881acef171c66e2e9fb0d93f9607318c7a99810c30bece688e9d380112f8705a9a303d5f379f1aa84227db175489d13ea7e9222ec3bf319911a08c3cbd1090c83bbdf6c903ad8a7fce53e7f8476ecb8aebbef91dc119e8b8bc855246201193a17860079e1667a128b41172e5b2015500bfc02bf4c9e265de6262fa31ad2e8d47877cae1d1d5c8c1bef1e4482a5758fc3a2f9e46b36d871d779a8f932beca7af47aeb0cf7c2cc81576998f885c61377d45e40abb57fa640022713012be18b77d3c34d15aa1dd1dfb3ad2654cc7ce9d766a1c3b4aea54491dc37e9c8fdc18d140e7c5d37eabd898c1e007bd78dc2fcd77fa4e8dd73c9e86b953834f8d612857604ea5c34fe6a60ff6ccd782cc11ae4997f9689b3e1f250d18993b3552d78e7a46adf25bc26903d7e80e3b17204f634828f745f122166c887a5b180d8de534769e7becbbf8836332d7a4db41eee301254efcfd3a2f3c78e64e776cc3302ccb9938d823f67df9c84d4f8da394fe70bfa0061004186081a29083e2c9196f5fa95cd95b289e7ce6f07ccd413a802ba022a760c1e2e54205562e11621ab7d2382d479fd114a0d1d4b228c5dea9e1cb0b274b5c483f790ecfc20bb0084767a8658acef0c8a633dce2c58bce900b8a95e1163d59998707f52175e212a597172926e621829779e8e0e143eac02ebecca39797286d6af8f20288869d0b5ebc7984ce1e0f2f86d099c74542173f40ade40ad6347c75518326357c7561a5f3aa9388d2d14a4331561abeced0d2b9f6d0f1b04bc3171a5abaf6007bc82f70477cec32716ce0c5c730d225a3e04414d7106b286a298a4cc448c5061a8cc850640890b973801c5e70c41a62455be5072d960003563c9a3b91c5925124d1dc895c8028824b971ca219a3f0401615090498f8254a2c475abaa846a13ed08e52dc2d4e9fc0104b7ec93c0e13e7b0024b5e0ac9f84be92780ce5d877cb65a5f71950c7ad11557c99ebdb69a6236c33d05d037c22aa2b0e005d03947b10b2a1dcfa176a674cda2e76f0928760db20596fe52416a161d739221203866cc182b1d245b6a01a5bf9634ad84a6217c6981a567cda2e33771907ccb4b595341e22b0ebaadc5111d2495c49eef995406dd2ec2cd60a61da3036216b318633c908ac99856926131e2207b9a5d89d747a88b496779204c0c9331ad24cbdf8f8d587e5c964099931b98341225b6b52bc13ac9506b1866200c4cd7d3200934a3f629914d7fa5843ae40f6d3e5e7b94f2d90130b43ac33f18fe012f7fe6e1258e560942f832690e42085354e8f808042bbeb884e9d82f9082c08507f318be606ebf95236d95dbacddb66cd55bc6dd7e98fdddbe8a6ded7e74df3eefcd4192f4e5d8b26516af653853b98a3fec8c5f774dfbc4f9def9619d90554f9cebaff71e39bffa56731e940cf0704ba8f416940898f73e4f3b21ab7efceeb98f55faae70a73fb6df2d3bcdf570068c9e9687a10ea287721524bbd54894649f0fa2b717b2ea2cd435db0094a3b31770f9a1f3501540d7f7482519fe8987b2eb67174400fd482548d2565b01749ecff0414156918a92dad1359170278d5e40610b0e3ea8c1151b2c81954d9ca1268ca46082097010c40d615850ae56521ea129165e9ad29cb944989e9c8f6ab2180b2e4df16946b945982008a32392c082235843528610831f7a98c11540e0c28287180b2d5ab090128431aed195821e5269094394969f41c0d2f2b3d4bd403f9ad339bdc56dd66d6e9fdcb9f9eec7f619bfcdc718b22fc9f09220f2b38b21a3c093c8cabee4496459fb25f65891ec4bb222d9b1392508ae9e6fd96e4bfd766bbae9f66b92ddbe7e421bab1ec21ed82d16da58720891c6d2be2b402bdc28bced4fb05fb9776dac7afad2e1962e7defb94b3aed7ec4cb74dfcf917beedd27f7cd70df5de6cb436d8a2f95ee7d4073cc9817222efdc493de23bfd4edb658b9a2680b107dd3f075c5185778a9dcfd52a4aeeb3a8cbb5fea92bed4ed6a877541ba6fc9d24132c86671930cb786581b7e823db26a15228cc3f73d5d71cbd663d72c16aa42d92d263acbbed6d76376defad4a5425ed6f26ca838755feb63c4a95b87a8b4ec5a988f752813b232ebe2cad2858ab0bc77173a4999ee323235efacccb9981dbe486b090b004496d838f7251e111bf76057c4bb8df7c82f3d1fad205273d3b9253527bd7614b07977fb11a9b909b7483f1dc21ebf95fbcd5b249b77b85573ee9085fa9670b7f9cdb7c4e6353f7d4b5adc6b2eb4b14c397e8b075f5668e95bbf19369fadeb4fbf37761420fdf4d2b784f4d24d5f8b74d3bdaf45ba77d851a0e6f4b54abf39f7b548176f2d8e022dd3bbb74a446a6e835bde3bd3b7c4e64bf0977c6f092dc971999fdef25a7fcb06bf85ff1df52d69b5b8776fd1dc845ba8b76a7ce69075f32d69b5ba7b2dd5715cb26a478454c47b0db6f1b522ab84eb4784546fc24bbc9b7e316e763170b7c14b3a8b89d47c09f7d2653ea125367ef3221c6e6273ee252cb4b14cef3ea18de53de7741522d2392cb4b1b89bbed2bdaf8bac183cdce2dee127a45fb1f8e748bd767bd373b46f867adbc4e626dc8a2c00e025add45b37de521dc76f9e7dd8b9af89cd6f6ee36ba16ee3d7ee40a5611551ec0e54dabe36fdc1978640e84884075f4b78e98cf2504b6ca981126d051356103510c200410b10980082eb0a2c5684390273b4e5e87534c491941f84e9cb71f54b613888d6f6b1b7c6be045889ed0c57c1814170e3b5e29c79a8f91b1f9c381856623b0f1dd9e07974d493e29f2a36a7bff5fba9dd0f08023871641510d4bcbafad20f16b5cd0702387122086a6a70e66a2f16d57c288c9ad2d5a5211a5993c48d97789eae2e772e779eb5fc0bb0c734fa61881c34d7d0c88716e26534c3280a985827ed5aeb9cb421d441223b52a80024b16317048e19c3596a69a62de70b764077509abfb41ed620f4f313ffcc2f7e43334a22a31ebcb4ea46ea488903c992a763b47c8603fa530fe50aca15e5aea42f1384d1b18330cc574ab3aa836f6b17640611416dda3fd5288a51942e5d3b1fdad82f75b9a8d4a930a8a20af2b6eb70f0646715cd34d803bbc4a44ffdac3f28f672ea97ee8649211402ac463b8831da0187d609b2101146118a0083e9040d361e9e2065800b2f3b08e235c419378c993c1491f180043626ba7890c2031425d2a871ca0a450b098000595987d10e4d6eee496504e50c8d13e3491c5804a54b670d8da070e99c7d091c1a364c18788388ce8c332a0994c0383368f5384a8226684850c53483a6a1910e5248e19d5050d0a1a8330fae0c1cac749c8ce8bc5281a513b39523c39b0d8d7428a2738e910e43c8336e565e43231da4e8c0a4f38d17b0da4a82139472b21939f40623e8628d4680841c0c8428a81ca1e0ca0c8ae08235b1805224041126e062042c33ac115112da84851700885107328b78189fc5255e7213a30a274d9c6849411224208609504059020c313b9836c879c7263aaf3219a391d1088e8c74d0424a0338010a33a8a2083b182188c9048672c49325b0b0124615d6e4ccd822efcd2582803a11154f5082128a3248e92b03c3890c8c998646444674be2982418a88a6bfa15f6c0d8d88544083232f8b931ae5e0c5e8c9128068aa4255ac4aa1601811f930c1b04639a0d15843a31cc6e89c4383e801a90847c86c0f10273e60d65a9b4d5904a447c3a21a7da171c1300c23c32671c9b0d93b35347a1205b605154bd80cc3301f3c9901f783247a8887bacc0a3aaf261a291e99c12d442c3c9d3e2d76c24a7002a22b7680c2045a8cc0c26ad0d8a5a231cc13630c20ac4083045e24c1c230ea94a3ba7c8105dbd0e8090a3aebe892c43d1a628f28a513c3b02a9ee8a053e2a322436e43a327445f2e91aae278e0655874ecf13d405890abd8e44a858266f8084f63189661cf68d0a407d20abc2650668fb704315adcd004299e0005122c2c892966d08513c618021259c4644d9c645e0f8615c10619b6c7c330ec06a3c6300cc3b218338b6137b05034f61b2c134296cd193486613718d118866543569e7cd1c4194656a0d8c2c2a050c2135f9c70c4032f2c4c0852158b80f4901a1ae1704697c0e0a04821042b0da5c8624b67f944cbdf3494820b515be9cb4ae963cc9e334cc32b401c79b8c20a2bb8f021b8439ef485978f803ddef2928a4422ea4825600f2b36595e813d6067e1711a9041aee2fb2d75c87ca031888e4c20cefcde2eb8235e16592a5470567844f090224159168f69f7ec6b3c3785ca87e471e4d186463824a1333c1a12e53d2f5a5e95492eb0c83b4989b30a1e11b1c010a9231f8d70e8224a0f75b9435946386cd179555300212c2a52c469f1505e954aa37c94721ee191e28a2b9c38c273c51546383821bf30210a63e4d262e462e235060a6785d10d518c9800a1a5214edce1016ba4820773cea98410502a27585437464eac745e1d89f1ea63ad35cb2cf44e58bed0b8604964314386b549402e982841951ea250c1982564d04489d21010af2f4264b1a2c5195b50ce5668b17ca171c1a087d12c66b09ae50b0f5f10e1650731a860d91cbad001932210459103cb26d1048a7b0319961382c9e8062a4f68bbb16cec9ac588222c9e9082094848a307249a44e19453033458e0848c1c7c1902725c867810238ceb8a0c944862ca152327279099028734a218e345ca194e6009610c163c3c41d8629f9219b6a3dd6eb7f63972e7de9e47ee703bdded81404ee2606988e9531a50dac2864771cc85f2264b29658cf141284ae983505c3d92a0209467ad7d10ea84611876785496650f42a9a00e12244a50ad5d49d6da9104693842912b2772e5fa5a3604c98f861cbb4820e6ce365d442422bc0866fb7c129e76623303064db242cb2728d676274f56ac0d3b793259dcb73f51008bc3579c10f1b036fc44636d6f32d370b18872b0b63b69828971b9584425d6f626a5302e978bf524b2364c719638e2293f99817a9a4484571f7fa56225b625259a513216a24065e2c0865034ecbc92542c1952c70f5fe41005232e38fc80558272842e3f70420b1df0a0082b342d3e49310c630a6d071be6894d0c143aaf8a7c90f289581a5e7238f024e670e0c188e7a44229103146d1a8fca424d2414348edb349449825322aa4d995cea67886892e243a4722ad738412a3442934f0e0e1e38928766002132bbcf8400c22c294a00b43853474c58b166ca14409ae38a102168f39cb2085d9c1f2f0d0b1e2e10322a1f3aa7271ab46ed27b73a79609eab39e7274aab58a55ba5dfcc86c0188760d7288661201327b613570c133e1822081714607e30c506180f3f208288265860050e43949184a6657c41f3126345df862f313b28baf0866b8289b9a3619a747191445d202b323171e4af0c466888562296481401c89261ee6cd8f64516f60dd9bee155f615c1a918b067cff0927b6c4836719ebdb56121edd8d7ba728fbd258485b42f11c28e492a7327bbc4e41112015cba583c241e492b72151f5d9168e2c821364c1cb94ac5805d3b760de74c1c39e413474a2af2555a1f6e36818a989ebd88bdcc5ba8d21d76d8b158841d8b4c442c32381e8591ae0e472d198e5cc074f9624406ef43ac4bdf611ba858a1344497f74520221112202431988e3d06fbee2ec0ae921d499116f7eda61769957e6f7fbd57ef751e08490ca918b48d74244348d89b38f11448c54082acd610cb0553bcf7a5e4ed8758777e11802c27da49bfb18b61bbf622f7a422252c493835dfe17f32cadd3eed4b4d3c24c328bcb25f0f0f4b88046512484009ebe431430833aad4c4aed807cf9c2f0833863383043356f678351abece4842ca3db2e1cd406c092f7bb72de87ad571b61f0f1e72157dc0d71926e85aeb9c1c0ccec861053934ba92d179754475982e98cfa60b9c00450b8230c50f47e881122cd9840b892b52c0e5085686305dd0822e5c204004eeb02021c562e46ae0e513ea576851b62d638b1b27f611032ff3f0f49441852dc38ae823061e4679e44e74f5cc29a730a308edfd2008780f4e618157194ebcc8d8418c90cbc906dc1992551b73745ce2c80d0f7784193d88cf3c66ec806220467819be5611279e85ec2f33a4f8ea654651671d5de808ae5c89b55633ae3c46565445983923689d228c98ae958b0119572437859bc205712459903b3d1227421b1c6a568bddda9e68ed13198639fb22e306d6daac7e371e67020fc84e74a9e40e65a5d0f04506106490a0f3cd0e70073d0d803b3c2484b60752bc932a574fea78ab273bc002ca1737f8218a2d3c26a22801851065a0008949a506590e68c5270f3bc5281da2a9114d29ad9c10b57a620061c51082528a4f4278d98b2ecb8de9bcaa4d1ce540a5e04e4f569482ea0615c9687a15c5796215aa8a45f5cc9e148ca6f4873d5880453d72154f2f281ca129a59462150ac52327ebb874ce39fa62a623074b5056986d741483084c14ae045ee6bc7cd3590c1e488a8fdc74eccbadc0cb393939f125c60ee0e456008b705e5080a269c3171470d0f9067252274e27f428e7a531b913cf094ae808808e2f2738d1f13e58903b901565e723e30b6e3cbd8190c24ae187b8a0e12d2083dc71527a8d1145c31b39f243c3d3f01ac3d5f0364497b495ea903a3d343c64410bd15c15afe16b8c289d7d34ac82a1e061ce6294255e624491d128638c31361154ef72b982ea8dac4e7028983972de4cb3cf887fe6b3cf3c2f3767dbd6346c718e3ff1f4879e9ebc20c0b8a4f68ab35627fd99d3624c00f325706979d54a6215fb99e7eaf763b92ee7460b4650558192aaa4f2009145170fcf8c1c975de623379d7d5c0abc7ad899ded286cd85879d5e49ec38c34d63f887ce70d33ff30789243e08a77ce0e727c448681f81af9e12c21c79c3a1a2d6970c0f06c15aae3edb97568b659c5cc1c788a12442195ee6e4b3b539906437397aeb66358c3b514fae4e9446cc9d32dab4eb7b4e1d1928f783173fd4db172cda390150a96c3ae79c74c2b99298056e7a3872d3f436cec9f1d002cdd131e70ddc0169f076a074ce8c611846ed94f73cd45a9950a12aa51373750ae5321f66100d4158532558ffc899e5c269ad911a638c3112298287c8f92331e56c9c5380704dbc787a84a761463daee7e6c6078fd5c2098ee8f5831ed88306b823ded89a619aa6699ac669700890ef85cf023234a1bf59c91c89437df868eaa3e981cc1d4ee2d067992733ad8ba748134934a51310a9337392b9311d4a1dcfce64329fe9cbabb6f7be9cd31623a11fe9cbb87b0377c86bd88d02e5888401f202dd8132b18a01a785104e176073ce69b18cae1a6213ca15dc616d8f585155875c411bed0e5749ed1f7afb99795c8f8c31c698739acad5866d9a92da3ff5d839194f99e071d2074bc8d20568f85a8293bea5782f56bf6ca4abc4b0c7d597515d299c3b5d87b5bb6d1936d2350fe90c7f04355b60e51c13205e613051a3b3f19a7334e764e24d6110b5e934615e607c797d718492b909d59aa6cd60070cf52d61d3a15cd9f88c8df748992fcbc8c818317933f9086a66e6a5df99973e33f352e946dabb8c8dcb7c59e6243c63044f06dfc60cfea1b9e9084a061f4175770dd374a81a8e43fd84fa0915a776a8b46c35d5999e654ccd8800010000731400203018100745229158389ea9cae80314000c99aa446c4c9508a320485108216410210418204000064466081307a3181c41b386e68d440fbe1018f0e52915cdf2308e9d820550e4f1ba680f1c00a0a9e3e575225d80cae40cc74bb657a3b7dbbf9b89f19e1dd1b6d28a1fd66d5a59044300e0b4dfdd58826a6a192b78421fd3d3e8e8e54fb7387bbcfd26c29c4c63c5e287de5b4be3cdbf185d4e7d343969c3a5747ed25366042546d18e60d1fa93b24b0946ffc6cc6e62d9dfbe2500c8708dd0847601050e5b1446b691a3707754143bd871e4552f9610b5757b526aa3cdcebdf87ea48d8cdfbe063e6f4fdb3a3e744ba3d43165909e0468b3973049627cdb535d9f369e33cc1b1c4326a74bd38374a268905814b7938cbfb00d141551f2309cec88fe7b7bf109743fb72a1655b7ca8a8c35c57f760cafe66ec7527b18a227359362a6b22a9f2def54f5ca6b3d159f42ddebcc4ad82480b96f036d8854391667f146c879b4d5c3799c535927dfe785fd4355ef356c87005cb4d25d9c8bb0a70f7fc11fb9676bb012d09df6f90707aba1598ef9560ad769da51be5fe5e02c11a520db7206a6ee954800fde212700a0598c311f7221a088fa6589b641f96f1a3d93d77c78197e990dae5785ff2cbe8032a22cfdd8ceb5fc859e52e1eba24d859397bf99ded0085850cb11eb345f60980d7447264e3e0589c9ae8cefb20a07646aa956943abdc447f6c22ce438c7eb7b5cd8d27b4fee690db8a4e74ec96dcfae933c51cd8b21041f2379ea5e3015c5e6233fe5e5b1b0e404313363442e9479e2c03972ccf66c00f48bb28461f593bb4d5d58b165dcd8360198f94d2598331192fd2d0662d0f74902d9fd3374df10ffbf86f31ebf11eb887ec96ab0b93100356e393dcfa6d2fd057497e1adf67673aaf841f1075bdee4288842d3cf37be8471a8911acc583c3972a8f4704d52f0ffa01321b8b74a2024cce6f9d7dbabc7adc87c6592f1c5ab4843971a238504364d65788ce2fcbb5a399abc20cf8bedd3486a4a5109401d1eb89507df766b11c8dbd8c6e19fb6d049998a782b66a62ab8f266644a835620d1f394223a9b61aa460c5ef19ec548c3ce77b61edfaec10a3096466250bf47000e192d1004fb1bbcef88dc90aaa19d04d83df05cb9976f16bd62bd179eca4d4b6a9d9bdb1830ad4edc762d6311123576c93c203371b60ee011fbcacd1381437ee189734192c337ec3b9598073cb055648ad20dee48b976ad419dcb9a9f05e428341f595e2ace2e3aed440ca82a18e7aefd693423a62dee3e11afe187ecafe9486956207c49e92898d4c30ba81ec8fe517fceb4322ef455702c25f1db73900fabbf4dbd1b22d9fc439f0caa468c12a3db4838dccc4b6bc393f4f683b72905fed80f7652016881ecac1e9e78902d21a9f72c70eff15e86510c5c597d8e7c26addaacdf7cab1d2ff8784de6abad0eb1ba007f2a939cb41392cc7001f837f030dd1c3d51ed124a214d7760a5db5c01a08ebc830e4acf629ed7b92e733700daf44e5027acbad2e7a349a53a7ac44eae893829b168f613d76aefb269ca4173ac9546059924d436acb9bd7315e224a806aa444a086f73158e3087028374ade67b691ec71c02bca26c7e352848a6fe54911828a8bfec15f69d89dfb7bb6ebf2ef983f6ac7071db0e433a52f01774b553cd587d077ca561f7440baaed16de451c6040f36acf0b0593349b735011e955165729f687462717f9c5a5bc11d7df27ae27e1be1f3df5f5d1cc6354771feaaf755c4067255ff027f8e01b36ff18a95af164a666086c3d512a002430626bfbdcdc68d43d27e388bdfe61dbbea173c73c014ba148d21b109f5703046d0891b01812795de566b036892bcb01b155bc431551d5c5f8bd67c6304f5b5c04c0737fa5a8ca4df8986c255af686329bd8092bffb708da03207456bcb7107871b02349011a3a0a5588efe92ded5c78e36e27b49a142f009bca9c7c54964ae0fff92c55c4e5aea0001db33e6d83fcad204b4f31b6e02e856e835627530d0af993bffe3061710c29de6ee108c7a7bdc91348a6dcf463789b4d57104bfbd271425488e5a93fdf83670f7b13bf812f922802e2441bcd268f0f62ebc4fb3067f1555c5f8859ed43ed195d76092509554eb3ebb3e677ee645ed78a2f33df0f7ff02075aa9e697a15a0583f03f40510d14143de4895e14f77add251ce395d82578552f0dc3a2837733729db54cdaac53593acd7e1d9441ece5b60171b3b598305ce3af5feb9c13889e4c4b936bdbc66b993e4ee8ff3dec501a1fc9fb4c0edfbf8d2cb5c2bfbd053489f139fc27b5cab10802d9115f3455989f1dc9e4909c435e18e53f50bce38cca63696b8f6de1eaa9b45b429eeafe09a3f18bf1d3b81e1b0a562e86dc970071faeb1aa74174f6495b62d71be0c7e703681ee3d3c183a8b070434389fb671318f3db048b53d34064f13f19a309668dbb93703c698d5a981e085e2338f16a761d7b4ac73d809fae8c9807292fda384be3b735900748509dc08e75483c020941adb8ee39a5a475be00c0a03792137f3366e64c832c90c7cd6cad6480f31f0ef59e6f5d3c56f5ed97dedd4d63d8b809f458ef9f35f22e713e0364ffaf13781d5bcf649dc2516944a0d8f4c10b857201ca50c38d6a177e093bb6bfaa373b5897d38d6ac0dc7c4a14bc8f4395a4d3ca9f6698d3c54c31fb45d413fec7cface550bf08b997b3e74a14ce746707045e655ead96d1647551c807744c01e0662b43f63b20444557a8351b0013923a84f0f8772454f7580ed251f306fa68ec3c751bdb5c52600ef3abdef5213c9f044933181216332bfdd969a69e8862e448a6f1a628b4ed451bf7c27b8104f37b4c00bd7736343db4947a1823081a6e5d133186befee2b1b845e31dfe7cc5e790d83fdc35192b847b5022810d59bcb7545421eeaec90f64d3e8eb496d3ddb97a7af49b8343767b326f0ce6c7bf90020b938dc753b278b645965167410c839b02367913c072fd41c385476c8396f99f29394c9eb70036c36805d47fb1a51471ee907dfbce6223892f08dce0bbb9dac7994a80198a21285f3da3c5162b458ec10644a8da7e578a18db89a71d458d051e752c48b6c9cefc8f7e3e3088a2583621dd9b6dec941f736151e7dc055405f71a0d1858c9f5302e3b1deb193466510f74284bf09b7c8d74902e6aea4d32f85800b186f00ff974680266d4c722dec626402de33988d3ed72e041c2f62c7fda251d7250c1ff38a335516248d7d3ed046302fa75285cd9b267132ba20620040d96cc9c7fde38c81ddb1391f1f93f7c854deb0fb86a0cab1cecddae0bb036f367029026ccebd7e0bfe2bed21d64253f44d6cc3980131c5c7125367429ad3141d889e83a4e8cb1de1a438084512dc6c64a871740031caee9936aa57e987103aed3644280c843ba180ddb9b3d23c527a2dba36ca4d9b44fd5618b2bb787027d724376914c719fd9320300c7aa8edd8907271ae214d948e90449783b8aed0624ce7806395730b745ae58c648f3aa4e43c5d9ecb9cc6e4d01c42236b1c3412b28af44c04c40f8c7649444fe01db17b0f544831ff252d8b1db3111625cc348c78bf8d3f1ffb38df44237872240c70f673c4e6e708324c52158d0f7f2162b818b98a23fae05edf834580b7a9f3a2d775a2b68b0a8d0ca8823b1c4f42cc6040348d92d009c6bfe301279a9f52dea0e109017bacd9db2fcec5807c7fbb4c7cb478c1a6a9275b65b7590698285a02b8d8d7c89b9ce614da88edc004d6b3fb0cc228e9f1d05cde490f1480fbdc8a943448aebc1f22f49c89e13b08a0efa68cc79b54606f5d21ea57cedb74938f4f9cc56c5d2f4d7f2ae1eca5606fddc13c649846e311883e5a92eb80ca4069de2c94a5a3e5e232f41a217ab41b9564fa27294e3fecb4067887652c04e2fd277a12ba92c0d430459b7020b70cf69df824c096f7be5cc8f0706d001e1bf48e006021d54f47a92226a7d4aadf3c0bb156c35b4a408e6316218f598e16d7adcda6149d282af48232dcd58caed2306d02c9dd447ebc3d7cf515b14f5e1d99988b7cfdf78a7590774960f5a76ecf8f890d020c54606d7a5782287511aa106476b4d151e448b9274ec9dbaf6ecf43b4ce33e3b97aaf14238e3ff943e72101e1de897e6df5916a78b2f48073a3253a409924e997f1c2389534af86a457881f52b8dc87abbd650cadaf70a06fdf696837d989732e62615d329f751aaf0f1114bde99d597a2e82c13e15620226fcbd99ca3ef576f326dc617a7a0af5429f0de7bf034d5e0f5f6be74d8790b56e18393c283489df4c57f5b66d46d85803792b6f6fa00b085e0218c51b51ddd326527645749d22753051678c40b1ce2df4cd73531fd127b9a73ebec06a961ee59eb9631bdfa26f5ef6cacadd064e37b54c92770fe794929baf95c4bceb76beb3105c8081afdc4dbb28707207a3f12177a4ba616464b521bd4fcf55caaacfabfe764489ae2b6afd64cc6da497e409284e9a56212f452a307c4bd0aa4d259fde0a5bedd7b61ab9ce124fbc9dfa8e35ea93c4b5bc2e5302f543ab910019915acae1ed8132349141a6df744331da37587dde2f4b3651c10586fe3ee24a692358374989e3d270aad3b23bb7ab28e55ac33aaa9b339b56d4eea7062291208a48d354839cf85a8d06c6ae9ae6e773e5915d7f5c7af9ab18faf78e11482b0f180d6455038897b37ceec84b97961a3838c5c172c3b9042b12e76ecacdad27a329289e3df9eba27d86adbaa01081404aaa3e17bb257fbf9115747a35be2884df1d58ff8c35b1b78f6b1a24b1430067bb9e98f828cfa96b5313622ed48e2a43aaa4676f469bbcd7dc5af9560673f9d25d810c1e2e6ccf51129cec3ae67ab08fa2697a4f654c21b5982271f7a3a522c48d70b95ac9273049ed7a4a0feb663e2aa5f0f5841764cfec6831dc1382b0e80f8c85cc02c56ab6494f28081493da10504aae709efc109030eee2cc98ef47867e894c14184a30df2f53a0f2c54600e58a4993234d0b42700e23dd12d383724845da193c04ea45b1b80ade1ad2807b98d63e20b74db3800e78973af05d1d3fc03c1d424bb56b27e6ed77bc3da469aa38092478c7e4d022f4df3015df1819187286c9b5ce461ec2e8594c91b834d841a3cec83a422353e3357f7086b07bbe54b99c4c2a2e781691cdf360d7458b3ccb49bf50f872c4556fe3049085f6e6a8e619d3d5c44cc4945ee7b3233f1c3585476d73c779b781580e81f82274698cae08dbb7e82c55128ca7b223b028025f5a7d379198329791298a99792492dbf7375cb94f97dcee2ec219c410d04fbd8cd509fdbcae4fd022382361c5c6ec1983381954d0dca2008c7772eb5616658d5150a4285b9a139ead335c0294b5267f9e03113cbe56a7e0879233107ce67ec3136822d6484cd9804ec6cc587d79beef58452c0819cd4312eab1fe6a94901ada84683b61f57b0dacf6b9af9920e602cfe226840051cc0d878a2cb1c4e2a7dd41321634c2a990e7767014037ecdb022aa802ce72ef5e80b815b9a9c0ecd244b97fa7caa09ec2df2b92024c3227d5cb577529f86c60bc4ecc291d564d4ee1770dcb468011cb8e4383e847159a5f74395d6083b5086a92071f638a355d67ea7ffbe20b7bdafdbb2920237ad0d507273f46d059cae16110a41d10c3db434552a2ebb12a50a2be8aa8e804226a3fe9fe41cadac98b1192d9846099fd90bfca5996e933a959cda30ccbd7a94c9594dec660c75228311b00c749dd1963014139531545be5825e82de62eb65301e0a8c72393e902e4add0a24a752d1c75868ac5f0bd826c000b467c4b49e2cf8032db184329448e6aa5d58694623fd668d7934e38da59922545b13a38bd5c17f017c86265c45dd174a3e8f8eed216a8abe5c4d0486212c5a7a84b12b9ac5dd4ab152924c2bdfe62757030cf2b10aa1825b137e764260eb5a75f2524c60a498700cf08e18984bf01370dd1be9bc42a3e693a75427d7ad598ad07fd25e9591377b49d8e44b984a5acbd0e3897eeca9710af31f3bd49daa2aaac26d139089b36aaa8567885e14b43c2db3eb2b8e09980359bfca4ba2362449638c919409673dd0f2edd4f3ec8dc450d2adc4ff1c6cbead55261697b261a6d439897214b07a97bfe6a4a9f225d01675add20bc29c0269bea495ee5ebc4a5e0901b05cda05fa4ccf46dc68070d451559312e8993c89be1ea153a2216a974a1c0a46a870eb7ec351caf63b9dffa8b33f186ed4e26d19f5f6085984cca3b3b46e94c388a61bf73c50bacc9da0b0ad308933cce509e1e161959ad68e320129b962292c44d8fb87693cb0580bcbe84ed1e8a3ea79d62dcabc7ed86bd7c59452a2e966af59527cecd530960ba249142c88a727f2470bacb30b3f7f169b32f06acd60ffba56133aca89b0141ccfed294048a0892eeba3e1480ef1b25151f743469192f51a9144d1d7540eb57ace28103ffc24049dc926324f2c5ebff099fbcc2a743d1a9a4e6cd392f3a7af6f8b7368732f884d35106eca8f7e2626c1819c825b13b84ab8f05e89f6c90bf1769d39c23f70d706e3fb24f9d3d07be2311a7454ae75ce0c31fdb1f3814321376732d3241db1846efcc2f07559c9079b9070bddcccc935176ebca0ef20b29b7c5f2cf342afe0c6805df148759b7a5011a839d0b37fe6ebd39d0a350440c8711957d26e50b13347981e288f60c48cd44dd2121ae1f8b63a65c5feedf1e96deae84139708502ca590b04b9078ff9385a5d211a3acd78e58bd040a9fd4c76bfc1a6294ebfccd3f791b11e641e37749d0f040f114b3feab1f1f73b2ded694e89095a6bee73f0130a813cdab1d78bd57750094c57abd1053ff691282b794380a6a4f0685860d59fa1b2c612ae0a08c465bb6e5c4070e8c0dd7f284a28c0dce2c7c80ecc55da67a411f83833a2c883de084da97c4fd4129f6948065399d7b86ab7c1e537a9ee59e984371e9273250082e4ad034515d6eae3fe6dbc64266e56d66453acaf3fbacc8d487751aa67dff62b90f4b018a1b0a98e0d36e4baab192598ab25fe5ec117ad3e8f8c6e5800520d95bd8fb8109ee2386a2674aec49dac0d161d792592fadc85ff34fc8f846290dcef5e3a5674ff6120c8e32c6553a62f5734094bd2f72bd8841ba2cfac254702f8ab62972e6bc80d1e65bd9ecf5523be832d806ba0805235f24143713b5f8d064122171bb1028b105753b9334b11e4755f8f5ab6b8c8a22ef1116ba0846931a3624b5880d6886752dd63effee6f6b7027908b7490d08c09bd112563225f88e86443affb668bb27186e164877d8953e7305144cc3d4f665dcc25ff0dbe9466a55afa6eb32225129b4809581a118335e155598a35de666a8e693e84a4b1ddbfa465d45c267f7ab66905ac9183a453e3a8dd9d5eff9075b38f2d075cda38ac3f6afc92a1ff0fa751349bfa945ee1a2184ead612117a00003a89c8a825380331b1fa40164899de1a8abf8415a5dfc00b82d2b6ab823ac0a18740eab8c7afaff65ba46eef7c6e88f7f6cfbdd3216fbccfd760a05e39b07b0e3859cbcbaac0ea631b313363052e54e96845be665bec1d5010c08df1f5133058fb6282f69afc2c3e949ba8894e0cda1a7ae77f41176b8dbea806340b22a2a89d04155f28b7424101037a7a75c13f14b29741ec1a650b5c8c663930061f465ca20477c3f85541d0f0a1d16047db71f85d92d2496774ad825772760720b5d633a753e06ba39242a45603b1f7a33168845ed8998e930ac7e2452e4bc6955ae72020544bcaa6cf2fdcb38a8ee0162d896765b32a108bf2989bc8508bb0a7baba2f688cb63bd87f2125793537c6b254f285d55b6c82c28a45a12de831914674f78891fe927b102a49f8c5a7b492d9008011183aa62af6c1daa955cb3db3f44aef7b1907fcfbcbbaa314604676e737af339ad5f3ac49cadfc0fceda5f5e26081d92bf13e3c5b2545778d201859e983dfa3d6c6922aa0b27e0fcb81b792a4f80f8a6c8f53fb9a984bc44428a951db401b6fc21533e9b4aeb1f0df4f3cec486dd00a2cb53d2c1faa097757079073b381c9ab9fe1d96a53206515362f76add08fdfe03263bf330c7b80952da915c09bd60c52931a61a5561811c36025ad9ff72ef3f8cec25414abc0c83ee5648893b1bbe6f7e337958410912cd1cd5c56b71248685bb07936c59803b9306945d2b993a1175cf33b87b37491e4e35da814f203fd1f5e3fad2a155148c9b07e97a6679dd11be5be1f16e9b5e07ce6f81599a42561639735da615e6bfa9d1d5db0adcc69a5e6adc66ca791610aa2aabcfabc3ec5ee72f44fa4e156df8c41f244022bf00bd073472a74ffdb2987e810318e86049a5b361fe53b48d61c187863e430edd1c12626deb4055a698fd0a8ac3dda818f52213f1af08a0fe46a59c4ea8f14ee76dd2ccdb6ef01f21e443bff90578446f554ad5e18cb582e1632cbcf847c87c0aeae92968a4e8030c73434510d725b8d08dafe00eb04776093267f220a0e14139a721d5839b3519fe7848c088982e5038d0c3ff22e9b97b5d6100dc978f5f00c1cf4110857e83171cef7cfdddb0d7dc861557dd526cc419969f8a8c37c295dc39444278c45bab2907b32912434de99de2e1b2024af8318c018df52c130f2de6d604d85fd212ff69918b609cc928763b363b7054e34d84bf0241446521305be9d6145183a7cede4b16259508537644295245013a246c29d69c14f551d520232bbd1306c03a3379454988c99e2e3ba0c7ab35932abf1235c4dfe4431f215697f843980e4ac8b37ec46b753c9ca52b60194bd89c25189d2c4a4fefe577cb460790c937c1e40758128aa313554cdc2eb121f3eb0673bfc586ccef3713d70db18dcbfc4820d32156ccdce94f0964e5c201721b225ae138527649ae775e121d5fb92ddf3bd201933ed1dd4521beb5a68727d10d2767a5318cd50189087b0227f4d20c62a02f1d799469669ea4579125f700986ba9f9667bd6bf300736ef48be67ef7bd614c82f48d87801098364efd700692893a82f05293b702062af3dac409a95a13ffc65a81673970565c12c9c367eea73ce24b2039001315d4ababd27cb4c844d31be50cb502b30d3a33ca9f0a8fc4a9c53e2eb6b762fc3f11a0d8919f1a6624e9710b83b1e11a8f9dab59c8962d593a6bbdc60b4b88f182fc2b9b030a008453874e19f034457f1d768e01ed92fe7bc379284ea698c7f48931f23ced80151be32f55497a95c92ed2b476cfde56247caa8b01d4b47919ab5137e33db7ff00ec51e2e0f6cc4da7d5f2eb73ea000ddb314fbf83520aa5bddd9f26e2f3ec6fe9decf45da98679ffae237ad6c2556f684226a21e1f134a72072c9057a22bd55e5dcc95abcca19889a18ad3c298a389257a0982347a2503e9303f8c6d779b15e957a2a65d2b43059eca05d75c60b330b199fdac85d1a043e931a346658fcd2c31350bcffc5ca8cc660f5868dc5038d2fd3a85bb7b2a277f5320cdd45f996ef8dd2dadbcc406b2bcdecdf2241efbfce0619677c6aeb30cad1de5c16c7fe1963a347e7213a2dbaa8d06de0ffc7c26436d1b4f4f39ae2181333a31e90ae7309a20bcdbfec17b6fe5d8362aac75ba6b9af7227a81e92609cfc24bfbae674f8344d334f1ccb08b008ca45f5c5721ee5417ad1b232db106e7bfdd800a0d4301461e00be8203b03f4e0e9569c179743d0d8a3411e0a22abc329e361714c4787ed3c011828f9c62885c54769edcb751088eb23aede22058d54c93af76da16c51f16b8084dee71026a439121b9bc344f642687459376a25bf3479c29b8c75e5a2d7f7053519db73ba5df86ff9437592e43f4cf57b641223292946e899b93a22058075af5c052c7942a8165c8788e990ac56450f95532c2e829cf164d7e90410ce49e5c8c72860bec9e9fe65d53c664ec75298565ae0719c46463324effe797d88d7a9b6e05d4e897723b19f3455719b20eae24f0cb452cb05a12fa8ac58645e38bee1bb200d3596fd6fd3080e476127a6b71ebdd10c1404ee6c264ed047bffaf516e356094bdecbd2bafd76edcfb323e6f29f578d16730ab6d1e9262bde30b236e87c407d70c76f07102b7703df9d5d1704e2696fa78df4058d8f48a897877a1d477f7d712e683bfca2e48b1d8a1381455fcbe3832e94da7182278409066581ee1b897bebebd3979545f9af454820c5f184a9c4faf07f58f3ea165b5ebcdbde61e872f02707d67eee29d126f101355b327df6c408dc22092a0a004d853d8891cd6f37d7e41bd7ad1426822bebd86e37a0baff22f8c766fb09a7bd46ed579d1bf04ec5545312e77fab71e7c69855db5ac5c72b6042cbbce07822d0dd20c32098a78356751464f4ce6c10a5374d67cac0b02264f6f4f93ec68d22e8e4164f6b1c61e431601723745dc0251d3c071708ee1ab95261afb44c4a38bf7fc8508d0facc26fcbd8026ef2ec0d4b9c6c0d935111202c69819dde06a8b59821f7694eeb69e8720fabf6648c96c9b8d7c8b4afda2e258ff0ab0bdaacb48116220fd74482f5408fa0e9359eb0223aeb1a56d1f74de628bf05d366f3c4fba86f282755ab0e66cbf487c12f2405308e7a349804d0d13f5d1585aaf9c29abde4c2363ec364834d0b3dd9bb244f7ca49c639c5d9db6f133036cde0b1983ce599f5f8e32a8ca1082eef4b00e47d09ca3ae48c731e1308b9750a0f0a3c36c04fa2c7e27b1397507303ed9ce8045c69ff77fc54d19a28133b2daccbabc4d15b865d73b04bc8070a214810b2fe56501238bc003b1abcd0ee53554812b0ae2a73d82f85f9339eefaf70661a05bc53fa7e3f570c9ce988bf38c3c3bb70436da5b0725b88a617c43772fa9b12b007948557d0834d248946452c7956dd2925608b00aca5261e837c1b749936072c52993dfb4ac0743dfc352b52d06fee5b61f07d04eca696da540349d769bc98183e048c6e95c873d50ce52160b12b026ecfca75262ca0db697eb78a0995546d45c01cafb82c3191438701eaf6bb8026530289164e0d4cacd559632f915c7cef028251720cdfc4938a8035ffd5b18f8238742bc09f14647b8f8db7f14ea1d1d70c588bbae2551272f0bb2839df970891fc47fd22ff40048478b3b16b75141a84a6700121b43f8c9bc25bcb12bbc2f0213e2cdcb06793158aed08c3abd7ecdd31f35de966cf638bd3099aaded9e9c13b4c0bdf0e0de0621f5471fedac016b5d785ef5365ab30d0da9980533271a60a829c63fb570c5561035c05a9e5eb221c9ae2a2e753965837d9a03ead76f30b6ec4f91ca68d9c8b4cc9399ca8c7e76607509c1b536ff20dea83b44b91e8970a59fefabc19ddae9dc639453c4f93d1fec69429e1fada7baf6ac4bd96433baf0d6d605f0210df8b2b682b2bf3a372f0a330aa4ac11d4082cce66e13efb867dadac0a45eb744d8d7997018ae18e932f25189a21b6107c49ef03bc09f8e8de89a2753bce53e8e7ce5950f7e1d72c2abace420f04f29b4ad5cfa8d4512588fc9e4a1e5efe318bdf743a8b9b440809abc358da4c23ef6ac463eb6b39bfce02662970bd726cb86cc7da595ac08126952e4f3ab99ef0406514c70074ae8c76ae2d00d765a75263b6ae88b1ad2b7f294e7d63094dbc1d2dda65910a9cfb40a19be5ca5612caf20ef3a432dd5981e4ac022d2994cf69be357394a4df5b92b1d871a5c3f48553c7f78c3a354cc9557578377fdbcc07d3f32123039e1192bb510a66b9b86f7722bf22320ade8fc8600b5db1c6fb44331cc464a7351bac4b115501f814cd295ef9f93edbed40a9ba29f56cf5c897fee4d517cfa898cbdb5d12e2a4fa97a9c0dc94169813a170e24909175171048d6aa3b74efbfbf119b1f74a1916020c31ebc5c1c7cbd3f44d3552f1146f18481aa9943fd7d782033bb04f8fd06135b0eac04b87e2d3d01ff0f8909d47b4c4de71435842e87a192dfeef84969564b2b89ae868bdc11038544addae6d38f7f543d040674bdf20b1c4cf8d18942219335fe930dc32358460c4a37a7eaceeda5e61e903226a02e28bcbc4d4bff1f250041f5dc5e46717f6045d8cb9fea12cad0ab5f8f444c70ea1ece893fba0ceb421a3440e6a39f52d395e6b92a0b5ee4450a4d6a282e0730a0bd26a768fe0d29bd499586f49d8e09735b0d310480bae022657244f083c27bbfb2b8cd59605b8800e84b71a1b50bc5c60d7ef25df0e91257372aa530026b9ecfcabd259611a68f5796ac984486c6006c6327523c818d18260b7932eef7797f57b7dd5fac7076f1bf487c2f2c6147fedf363fb565ecd26cdba237811090684ce13156d26c6f73c50fe7532ba66135695e6929213b7cc2a27237014a8145d6167ccfaf4d9bc82c9e1c4b5960f1a18f168d01970794bd57663d496c43932faab8b6a31c240dbb7c9375cdcdaafb4ef97a05f79e2c3514e813916a633db57666b5d13de1e983b7707e282b9e1ce8c27dccecb1ba3754684b6c43e6c5e0953463d07ca990b5bbf550a8d6d9ebd2b6b60c5596e059f78f44e95b2a4169f1e9d52fe1d771b07b3fd104fe48e86034bb55ad05f192b06dd9559afde0c70edb42c02934998a1a94c6388ed8aae0cf29aad1ec44bdd884327f310dd55da724f05782f42642d18e3e49925500130c0f5e1d2826ee7394f6f68e3d87814e3b52b17f2d0382e41b51041885ff49c2a31b41b8ca38ac6a44c416a4905ec051fff8252889c13651ac9408f03710978b8b8aed387e46d59e8ceb6ba8530f117bea1b596e3e9506c7124891fa7e894e93edad2f65cde7b832b916fe2b6ba72099f9c516a30373d95cf65b7b0fa087a9b3b744dd45debe0744296690b01b122636d0dbf7b9c4ecceaca3cbf0a19fc32dcc0cafec9ffbdbe54156649940c923fa8f77b8dbdc8dde252fed469120ca04c88cba046af7fef92775fa8f3422d56dd3b806e38ae4ba6866b4f4da0ce42ce08c040392efa5fc13fa21aed453d7493744fbddd05ef00a02d46639f5a42776fecf8815b9b971bebf50dd3d017b31028b6749f9020447c10fbd15f9860ebd399a395297358b7aeb750ffd3e28323c40c8ae70d6b66277c2dfb34d366f5b276cb7ae355edd54e047dd7ffc0f6b21961631b29c5c87b4f3587ba14f7268ef66056f61af40e20191213022a30c52b7090cbca51a738957114ab0f74290133018c4b88575008ad8806c871b594380dcaacea15f2adc22dde15a05c31a727b9319fc63a23616ee23e50b834c37184c892b88ea6e82e98839fe7ca2f2a18c5f012ac6e9a63ce78fa1b94dd4370e8ae5cac0341a677bea1ee7bdadf4f205d0893d281d9ff680276d21ce6056b73061123cb7b8ce5e30788704064465ceb0696155711fc48bf61c9d4a62b8a1f6046b81ad70f4b20ef86e5bd84b9f4c38d91fa3f69473684b22f3dd0f38e047d007989ec89cc4c542f558a20be039d956ddc233f4dd87d431de39b2e5fa93b41c58134f314436f68542c9c035b1da77b466a1da00947e14d64d0087674d5da4c381bd89ae63201f7a00ba4b76182ff72d166471ef8e7c5f953d51ab1618798282b5fa2145efbdee28de914d960ce06fee733dcaafd904daee24bb83269c03c8626def67a0aaf31326866afbff3adc3661df2117e8f10afffff6de52bd2b63870619ad3ca36774607441c88a70becd03ff63df754bea81f6effceeacd481d21722a907170d4fccf707da4e5c760806d9997b810b52f2ad2007f559b043d4e638fb1825e4a0b333a926708200bfabdac09c158cebae7537508d686cc3b5e95c7099623fc359f66f39cc53a750891fd16ae1adf668f228701d985a132f5113a1b98b2424d359ef0e343df5e2172b6ffef68ff3d83f20dd036bb8b4917ce912ee8c7dd8397e4aba94315f083127fd158cfe0bf6017eda4350e36a9d35c808a0f85f2b91fb168c7cde49d20750f80e50ab2632a46b1af12b782a953792c2b534466cfe56eaff96919765e0c1cd145b51b82666ea9e0148d12e0170b526e0eef473a09e650d54c24d0a7b08c921f5ae32159fa4aca778c4a4892975025a270eaca52f64e3b6bdefe45b8f1886105fef27185cd51e3ef47b83706f731e4ad7db5b5bb014f09ab8462969e25c2afd9d3133ee3bd2c5fd7eb15d3dfc9f5b686e3e34fef8efdda89c398a273d4a5b722538fdc450cddde06006d7d0b6202cfa2b033aee0ee23a36d7fee83280c9834bc62cc8840756b00172792545e8d49c5ec982930286a505b07ca97f04122aa114a24fbbc9a786cb03320387ecacd21eb073d95385fc054b17e3bd92b45acef4d6856bda4b78f8a94382ece52c0de090deedbe6dad2a0675d8c2da77eb7341cdde8fac20505086744d03518dd4554363cab02d9dec49e1037009845578c2653ce0112d2a0f05d2302240e06dd1fd94ef0f41e0f97d91fac8de06758d438e7dc497b1ceec6d030fe0dbc144ca1ca84c7f81f8ca0148780304b83815b4e2233da353813431a0c31ea1aed81d708429043dad550f22496bdc767f6721e064eb3c27e7b4b8a84803cc5cb8939bfdab64cbd16f9f45582140dd7f9adc0b55c2fcd6e2a266478882377e1bb44226fa5105c10ffa79c7bb9b294838532cd3e87693883834379214d22ad8c638d1d9b5acfc6b7daa937cf327bc77e5387dd80358ba1e61936661a6ede5f5cbeecda62296478c722978c7a28b3382b7bfdd54de31db725dc0600a4cb212c653498ec2eb085cc6b823dc938bec8e6d57663e900fe546d03d959a39125ba255ded8fcc53f39f43939380ae90a4e4b87457ed318d67416d93483e0f32e7fd500b0d38668982a6c2404d0967daf818fed3107f4641daa2579053629610b69e4589a46d5cf43c62244050c622a0c1311e056e12baeec95aeab26e4d89a2203052590bcaf50e791561736c475a819a08d77300e49a03d9d70c649f2515965e4d900bf1ebd165deb848d94251d4f26ceb9fb23fc41a66bc543555d78d750a57049ca202a524bf856a20188c97d5bda0dfcaea6b984d80eb8f001cd75ed40ac20a25ec600bbb5b57235ed432970d31d339d5ce2f1ac19609cf4b4d67dfbe2cb064d22db216769ef6e21540038f12089f53da37bb50a8536786138663472692750ba08043432b8cf49b1a0097f9b5920feb2b0678320f3749609981b9447b8fb4d25d5b7d9f071bcfdbe37acd62ca00c3e7ea3ddf7605afb8cafbaaf98eea3447d1ddba83c644ebc2451c3d11dac48782d2cba1b0c17f69c427435145a4c7a4944d4cd696516792fdd070b1ec0ff9f7c9f166896dad80198426f041144c3537ac941136eb3fd719ba0f06aa34e114826b0f1094ea3f662c919f84375086d205037ef2ab8027828c28a43d77650bf5e4a73eaa5a00dc6bd0292ac55ab1cec56396800949272c1853ba619617d7ee40226b08213a91b35a4d9aed917c6d4728518824801811925a49913d8920355661f13a1e54dac901c8c2e9ea3a6dd4918cf71d704a86b258cb6483a4536c1c5b1f61b40b1e8224da307c007e8a233a4f83d4815443c8811a97e0d822c82334ed9426aae022a655826bf57c2076ca2b84f566611d1ef95cc2c0dca95693537512fee7e0763f4b088d5d96ebad264f2ae94575097e49f5e849660c8f7ecf4ca68d537cb537c9a040092013699b143cd08e322d8a327dc04602d74a529743de91276170bfbf7fac04f849352bb376e8008a396c272733a6c6c7e10ca8d40a53dae0bc8b68bab4048d13d7245e0763ac3f6461600372054b8fb5a4d1fec1e3136662b7cbf7660a8144034825458f0d9584b1cf88bd58787cf199c1f4ef326ed32489e1068ae243c674dee56b34f2cb879a4956da2e7072cc140c3f1678cb232f1c89d8a4bc49179aedfad8302081efa06515feac950d63512edd2dd4e8d748134d4319ae5c85ac21b036fc26b98f7ee107376afe48b6f9d92ff1bd2b9250ab2c116145358ba617c188c8744cab52ec85bf32dc8d2ee42c465423bf9d4b1dc67774c770524ce3d71b31a460ff4cb39067158762523f4f79bfc016143cb824abdfe28167756df10a2ef520a858409a04547331d534d39419b6c250544d2b43191a784a639517bd47923a3876766c24e56a7139ed65985346dee00e94e7ba77c838b606897e5219560be6f1178af83b6f301393dc29c609d8831d9ed27eda8777c3f7a3de420e7733b2b81e052496f27808d54417a1d78efdcab6a7cd5b5179989a7581e9113a7ce01c14bdbf3150cfa1f3c2aa9234a0748f9af3cc2eae0e8c237a0dd4309358b84f4b69921a308c6ba3b7952059cb030d7924ae699f47d52bfa3bcabf77e6f0639e1133712d1ec9e36a75a3c493a834eb83153bb3f73be11bbee6df9e962f93040e618b22a0f3626dc06985657b368977b3a5a9887c0788fd3925d5287bf561ac270fa3afec31a4a29bc771cd3016586d25d5298c4bb6d27e6fec314c582a1ae8c335906571999b2ef7d33af81e071f7006bdd333c7f70dc62f714e8ed693a1a40ada1a58db6e9369a797f0e38abf2420bc010fba42e065162513c4a93d703d407be1cc843ff0775c4097b6d3add0e3961628d77111b070abec03c68aa52434ff6a7b1c2c157b00f1fbeae9e9fda5ee67f6a71c227af0211797124bb87d3bf1291dfc38d7b47efe52be268e838fc71d2758cc350bc40a164b2064aeb68125b6205faf79ee4a80ebc59c75f78a30052c592a4bec80a9621346b5e781f4a383ab29afdb5b8f1324af7486fb8f3499cf2a10bbe6c7e56b8d5c22ed03b4b7ffaab051b1025ac2d04501de205b1a49b05eb383250635548940bb669ec8b172d0482cdea89348bf7bc9ec46ab6d4a627747bf6881e1343c1d348160d08c555a9715ca42856566e15c201c7d3aa869f2565b3e329b73ea8559b61858493eee349bb535e49c0f8dbbe3673611d03505c3721044d8ae1080f220e482ad868e209814b28a0e38452e958d9dc85416b2eaf3a7c0634500da1aa66d7312bb1badca85bc0748465184cc916cb9fcddc2f4d0ebad49dbe0f3c3f92fc5e4762d23a1c2774ecaf7c0c2db1413f46786995bbb9d1d28e0af0d4cfc2ab8bfe68196354038b2861c56b6e4646c9084b34504fa437ff521a53f4325bcb6ed6e7e58d4a9b4d0ae3c3a493356e3edb4729541afa865da608b2ede42cb0955ea03d00fc7bec6be3ab6565689e961278fbdae18f7d43efec5208ebd85153ef1fb64ab37d3e78afdd36da05bb6fd4bc3a9e3c7bb06f210ea735820921e7f7706238043d5e0882432d98272ca2dd8a348253af59b132aace41e063ec4026130aa0efe7f527f86dd078c040c6ff41d0cdc2eddd2c5c117262ca2c9b19b9d0b427480cc952e76d334d81aa980590bc6812083ad43de09bec6b6ccc15c06fab28f22cae1d50ac0e725f93c05626696e07977c47d0c566126c32a0e151febfb51ca8e33aa88357016a928024492b120404b0180f08f7c2ad70ca906584a25bec7b70c7856d9c17b26d1e6ae7fb32253701e93b3ce1474feeea11b5facb1ee7f8588bd285701215fa578c7e87dfdc72a467fd7939057d8e36d6c117dd1e7104f71442fedbe0fc5fdd39e80b4bd14d3ed0ca208802034a70bce928e9128e76e8a0966b0bbf23091ca83175b4e03f318147646caebf33237a7adfd1aa5a63fe64de1055c4ec95b9be15372c3f3996b0d1ac1ed04e1e4f2ef7c40c6e9281b67a1427f028b3f7b96f7a908a5845a50a3d8f59961329c502b1c77242e5b6ddd19ab01dc7b89fac2708f4a3c30e6963a331190419600f7d5e53064adf0eef3632d54808b013e13ff38a0d092c52bf93f09ae44cec61431370d20b8a83d0bc59ed286d2855970827585742f671ac525bcc105d4833ac9d8eef225e98974d9380bc020b056d1caf7ea8ab2494297a2605ed5d8d9805b3b039ce958f914ab8fd9e1a51f8861048b2b7bda8cf3688b11ea3f17e263d37fe8e83518ea35055162e1fbcc3c5aa69d29a43dd85387703bcfe4c106eb2303bb21251b04ebb94551b28a607567413e876dc26d6691502c5918a22229dc1ca34ee129c71f9e6dc19929dcdd7ef165ca8fb8793597cc5f0f40b8924461a1e8211708f2f520ff430196977c0a43fd4a1234f453abd783d6104dc6c21e7206c1896d315f9e1213821dfb9bc122d321b11c2c53b23f363ad1eb7f93a19976ef63d592d3bcffc8e95bd5ff9f8e3b68b7515753e6ecac39163a41f835ca7b7fa4c1a56016fc27fe32c4f1e69b58ca26e5919e6a53219e9029309d75e29d22ce0bb26225a9e1889306e5963f85bfe6d09bf05df1a43926ce86f14e0c6c877f5b1dce5b08ed115d08aa3830d0a4924ae2c4620d68e5b3bf3b6cb2380ecbd45c267f84ee6ace3006bec5dea625d44d22ed9310d11a95be87a8eef40149c73667e4bfcefd0d3aeb71e362e3cb2b970b6bd4788784b5da45c4d33a22c698b5325e762e83171382218cb7de3030caba226f587cbcdf19f2ac857901604621fa0972a754201c0b240d8beeabba8f28cb5f635773ab1259f3974e42ecde261f9ca0576316ac52bdd108d8fcfb41682cc50b3518ed50d4e7f6d903238ed19f3d846e06d25781760fb15ab3499ee8399a89d2c86889042a333c0d38bcd9ab9993e786127703c742700c2518de5fc99a1a725377ed7f417524ba924a7612af924a6c52def5ac3a48d83ff65650b7d6ca576f05dca9f26b66856128edc56ec704b214f4a048baa121c947fd93bcf38d46fb7d9871070fe8c703596852f9cbecb27db2b3805fb10c63611962b15854911a0d7f4a1ec44ab0262b21c7070802d83912d4e4544c4a3bec402582cc3a25664f487f372f3c340ff32d20007fb03962bf66b15ecbbe11d82501a016f75ff8ac4dce1e3b7d5a2bc45aaa80a4e83ef111123e660ce72c42acebc8ed44d3bbc66ece879720854e3adc760dfbfd9489614ac4e0c4e2b23da6698cee99dfcf5a00635311587d80c963fc6a8dac7539378350063ce5861dd41fa180b1a9e2423ee357a77be1e53f7863be61b969e103616737d9b0e792f5193c597e8aa32b05c128fd50934f1c95d7d4c0e55516312961d46d0629082621fdc6cd09cf63136d5d0121c89c57238e52f274ba839d47113c8a88be32f7a7da912e56bacb73385428dd6ebeacd0ce18cf3049141e511d93b9b7acc0be3f610b1d82b889358339d8fc0a6ab3e1d243c10e651d54468f3afeeb280b54acec62137851c75a58cc52e09794728693821f8d563c3f30359abe484a88b63999c0abc24be289981e0e7e9ffca0946ab1ce61d455a84dec0f14c4d8ec3669891b231dc3e5e45ab3985a67cbe2c81fc1ed0abf02a6a1ee3378100aa2667c706dfa960d68d90998731108a3d3f8bb0687eb993aa2f113cfa956ace02b2db6e49c815095f86886a7bdeed2b3553a1680781316d7d84d2ee995da81d8cd9d862ffcabd8333d51a08fb4fd76ee1c7196b284540781a9131808c0df4f29ac9c4bd8d3ded9b4290481881b00125a470e174220ac0d715ca21762005e323223a2dd80b39542f943458c0b023d0bff08dc1abc392416899796857aec748e3691e7cdfd01dc3f855164ae12fa44511d91b9c586b185fc8a39c8661be0ef036e71a3484d2a325589346316bf8c224b66c005f1cc9f0e355319595e12ff3b2122740f7f9deec07e111fa09d324ac9b9eed76fdacbf342940fd64fd6de170524c28f06c18c945c9c7e988a3a77aeb8658cafadaec03eecd5b180add91a82e55d09f0e4c3a1429119b3d7f9090c8756ccc5043414424a53321b5341b31355d3ede2d1cdb6f2e02dcb30961bdd4f02ad4179365a5bab496817290ea9c5b1a66af645c3137615a72446f620faf64ac2a2a0e20ce42f65df3c45926561c3e16068ecf77896f6081337f6edc2d09cc9aa14f5dc5c86049569b3ad693d4c332762ae4e04246239a38adaf01982ca5d885129cc1ad24321d03cb3122ad47084e7419fc2c0df5e6a553c37e29f34b7cff1e622cd7d9a663912efafa9581eea48b3d0d6b1df670a45dd3949825e36196f5bf8e3792b65bcd017e273393c2792bcf50ac3ecc2c04da9306d5b4e626283e05b033f948ff044601902a26939c6c88e673e81507a81d0e192bb3cc27ad00d2c67b860ad2858a285d91754b8b0458b47beb023885f76444581ba4e89b275fd163b0f7ac0f44e0812e430448b7553c083bfda527339a836c8686e91d39f303036e7b77783936655bfba07d47d95b301111507556d06338f13f82e1a777bf5293ddb48b34bcc19eb73221f78b78dd9eaaf6acfa27b0ebb97d0d468d808b1573432138c56fd89ef54d5f066eb437f2034660a24803a9e042253b8800b3d2c31f6061b20b7cf1c773169fcfb08cfea584ac7f2a5a7ea4d753e0bffd36015fa09ce84155bf5f12f9120577d9deb8f9142c0315eecb119f5e1bd1b0224d4563620a809572bc43ce63387590feea1809e00d90d1b8e9d61d3fa8f3bd64b00723848fc3ebec89584ee883d6648e7daecd379474a9223579a734f4f66f9250ffa49339d743b98c71e0dcaaba64abb15da6e1b225d0aa98befaf8f9aa82e1a6b5d09a192f70be5329124ab0091942e1c678134e1846378b3bac46c3cf1b6ff238d5eb3408ffc1d69852126df0fb76551ac72522da9b2f8f57f54e6c104913285b2a86b72ff2fc9340b2a9ca74bb195c263bef59f3bd92f3213545f6ea2e2ad9cd1186c83aa9a00e29e771f5f6d85cb02e9d99a2da3e52244b8d3ff3ebd495ac5fab65813cde7e65fee4bc60490a020a3d6ad2f9113ea50db9b6f4b91f527a1243d122f7f1d8550103a41e84528482b5260e6f59770bd744e16d8ec048d4b058747ccb47134cccfa3c265b6211fe9458265d1c311a5e5a04848706a4235c3202b72037a2335ce59ad0981e8d4a05e7fd95794128a4cf1f2d252535903f8601398dabb425a7880f16b18f38615ece2e02427a4781871e1de2234443dcb562d71716df4a1341112ce4ac0f01090b2cff3826ad486a2387ac347707aa0c4dbab59dfb6bb7074c69157131773107e1be9e189adab346cd7309e3390c4e815ab43884c912ae7e6b54ad09f618b80a9b25089f2936654fc1fe8bb544553666a22842a96bbfaca0d690fe6b07d6db0a757c08bba826cad3178e765886efbb38ff46323f9c046699be809fd9effaf4eb0f7b1473dca9cbfe9c90d04b2cc475752941c680dac697221490f6f0b371098c7773c201f93fb9e0d62d5a23f1dd19ec1a801592fa0d674e272d8458c8d756e5de2a4b30852ccac0fb8ed102c8b1ed693629738ee8f9071c753000e226c015b643ec6b522a967e0372d246a03bff9f0f7c7880179811f32ee8b5a72b6b63736d9e2a5a5f39d2f5a491f07162ace9c2b8e146d018e93291f27bbbf866e40f7b7d4bc822173a09bddef560f88ae58aa7c9f1cbaefd151cce6250e85a28fa55274d277d045553c5efa18d6b818c44ebf51c71eac217a3984cbb54f573e338eed084c34d63d86dbe801ccd3d4d551a394cfe9faf4c7c3bea8143db5d04a7744f24d458cbd71106d247a127fbf066158348d230678b813612b2309611143ab2f1250c3b5c767552f1a1feb90d1ba525c05f162ed396c069a54cdbcafe804c949088f17bc9f4905b1e1787b0b9b66314584fec1c5abe21150736790986487871c20c61a62e724ecf38ca7713df947b52152109530e2d1b8c7597478115c902b95a80cdc2583e5a2702de691f4507370e767508ed144ee9426119c0e2694031c588132e90a007d3c4e933792986286084567a6d159bb77803505373303445fa220a1a17e1ce5f6405361e1daefd79e142f8706490532546216e8c8da78cea2f67ffaba988af0af4b9057dd517a748405725f68bbfba596e4dd5239f5ed0d2de8b8410df632d6ab56d007ba15b7894334e87a73ff192cc57875f4367b9dd6e9350d2825be855eb8544a215dab7f5eb5466cc6c5b8b8a5575df790108e42f28b9aa719e90727625e299cf30012aef8467a0960bb69cd622912c3e156744bb89b71384062501c7743f7ab6c9d3497970a8a0490adc31fc870af5b767c8693216fe768b27605ddc0dc2eadac97064ef4a56b78268919c5dabdddb1aca75c424ae1bcc97e4ddd1e4e39b75a361241bb05421274334f02292b8cec3db4536f59de837b59b40f71b422e2a08aaa72a0d714bab934e0bf5c37c2dc3274b31f96ccaaae701c19f54ab5d0d95098a3824d6a0b7d7d79889ca4feeb9c3498c38bbaa7e659a46c51a48a7940c72d56cc22888154767a104fdaedb52c87cd5ac7e2cadd13077fae40cbbbf11ebd424b66d655e97bc22488395bd44dadfd6fdb4bc8a215283bc25303b35eb85214d91a8b695506f57b38d3742cf9b953699e801b7115048b46f690c8e4ec0a6c4c461ffa7595a001da283ff91d7b4ca6fa11f665ddfd04f9df20e521aaa7c2d23e70438399cae44f0b2e4602fe32987d819399308176e2aace4981f7c2418d74bcdd5672bac221786e616ac22c694798931096e0a4c96109288599977b7a94f673d1926db08bc3a1ec87924ff7bb9db95772c37dab03e89a47286b9346f7115061f5746b419f4f8a92a9cace9ebae779c1784390a8443cdc3eef395c490f3f0460f68347c63399ba3c1390ded72edd75f6019e06b9f4404d1454f461436ec13fccb753d5f1821846a0e18248979a50068c9a829a069958b182ca5a70196b9680cea011507cbc0daf3160f6bad01b680506990c2e70068d46a703765ef790e4360c4a5feaa0668eab39fa39537e26add1d54490f2775db3ae32e172079bf6eb71af03aa6475137fb96993aeed375bbbfb788e2c1f8c4ef941b1ad2b29bbac6a050adc3ac2d1bb56b0cb5ee6c09d5777b6924c46f765f45556b71f03f4de166cd60a9a4a794b205fd998cda21d5854ecd51ac3d56cd86a1f0343c67b56b3874402c6f5f7115468484084e3dae6de9e50776f9a6ab581b044eecc6e0fc119ab9fd3bb55897b097d3a567fc068056143022b644e03953d3ff43ab2d640661a68f306b8a532b65aa60bd0d03a91d774135250fe1de0eca96d0fb5988d2308e30966e006530f92d01423d9754232453892d6019aa085e571990f0401517c1071ac79995fbc21463c979be43386261131d5f7c868bf15439e0d020b810a5596d1794804d45718f613f810451e9a04bfe0ff2dc2a7d2002116b60eb110ceb15462c26e4b2e57fcf887d48bec997e098123562f8ebee3d1923a6ab93b335091cd858a30cf06c65152f51c0584717c005e3031ea7909d643c48ec0c8191784fbbb57fe6cc7cdb7d4684a6596ac3479b94e3c585fed74338a8feca1ac2febaea7545ca055c4875924ae17e53a8694a0e72c609583b63c245038ec929fb2af47190d238a098d50c72ceb668045c49d8a653b92e71b55fb182c942d7289477334411a9b624217bd564da19995b415b117b569ba46f0afd6f9eeb6d3b53a3c410f0d52c42aef92bbeba4fa5c5be7aeb7a9a54fa318a5f4fb39075f35b7020104b0ac7b592905fe4882da8b5bb42c34e7e5c88dc14267778e82539d7b3e6cee29dca94bc5389a1a653167e816ad26a877ae185c55601749f284429ff6a60c3d80b6c9c6cdae93f5e268b3dde2cd6c543fff02d361de36eb1e3847648b020b9592bddf73145ba8a266000250b817254c9a4cb8c0f7b1e7b103059a8732ca718e24279e95a7cb1849214c2c7dea50f44e9263fdf24a3f1adb238a8ff15d916c0f1533ab2ae6454048c513e31800434dd72b3e3663a3742b4904738f9a7cbd4051e4ce1550b5717ab734f30fb17ba8ba6c566aa89a86e27406f523851b3ec3c647c9facb372017ad8051be1dad802b9e920ebcbde54492b860c1eebf27e42a4149d54eefdc8e3cfaf17737cf4325e28bc1abbd80230ef21b44a2dd44e8c2a27bb085a0fb973ac8943da36f1b6571562974ded50dd09d1598d0c3cef60c1bd1e29a0d24d36b94989b0d363f31dc4579802bc098be79540a8f08c1b1147cd3b56ea1d287c4fa72e5a66a5910c6a4ee7be6536b4929dd2aae7712bd0830df0e4c199aab2b3f33eba41442ae654c33b2e951cb6c29c411902d2358dba95072b46aefea6c9a2a0da5e4d8f1cbe3211e355c2e27ed25398b0a90d0a30d0434e2c69afb4371ad037c41dfad5193095c51727caec902209dffb719451b6061c337a6c5f049ca541d75f2628d81af92093d18d8a9154da44c1520159fb3ac039115dff14f87daa1163e8de72c66677de9dc835fcbc11a7fe511157b71377932b5d44abccc9ee292c2de751b42a4b5a3223e63ca9b4c39cd42d48dff27f2ff33c85adbf5dfb9c55649c622e7a9c899d250537dde387f8b3219ad7a295ad083df3d5387e9f5fc669950d6181d47b745add0c07efdfb5ac0b8a29a85bff75ead12440e316612591f2e0deb1c4c2a6eaf9189c7f7bc122d71c8e68e1ebff540e897f424cb0a1456415b7b8c617166eab88114ab3a96759dc8257539aaf3d2b3cbbd2ebcd929b920bbc1241e954968ac81c38ba47171118b446f4f234fc5bddb763868598bc1ba63b45ced9fff4c085ad099fcd04af456580d11870108eb0936fbea4bd5b440610748b7a48609f0c8f39b4606a6741500d75fce2bd09fc59dff0b138ed5fdb2b295f36867ad213884909040e4bf806055bf2e848549b2cafc584a4908d3bd53c04c4b8cac0a2251d0ace51ee30382cf8134d33839a9a0ac10534f57c21ac9cc899c89b46c19848acc10e19fc7711eaf99e57b219d05dea30b656fb585ab7a4ae524728be318a972fe7575f24d8113b7531b8bc9de2e69b5cfbf338ece5b271e716180926b615ac513724a124bd0381cf2bd18949468c8f16246c4d19ef590e0c0bf343e08564f7b761cf344a2a8058d9b198958a7ba81bb614c2377a6545b8fe67c1ccf59bd7139639a871b133f6f64e6867942aa66e28c073431d790ad346ba94e2c33d1abca1c70654b92ef4e68735aef10ca3c693be85efcbdde48f20cf952008cd7a686a6e0a94ba5176879f89af609e507429d7b73f12640dab97f6832d941e0e23530681d00781b52e9639bf33e648e3d2a9a3758b0b4c6e46b352e3e925f916f38e27ff6d18c5fc147c6b9cdf0f1a5d93095a8f8780eb6265051cf7992234af49fdc4fe673a5d95a80bd4a3809971e9f938d806ab1407472965b7842899b122553ac78d9eee14468a365955f2baffcd8da25ce2cf7a5b139ca7e95a418c9d863695326f158e3069e6b3aaa9097872fdd9ee8dcbda46460799b211a500c066d8395015c4a7e4093f900524e2c1b25d1911d995c29cabc84aa8323999904d75110f9c273722e75e5353c7c2038700f58bd3d48fa20d2c9b7734b2247954c6a0c721d45ca5b57a52c7bf301de3171eaac194ff84415835e7be00b08748ad8b8510dd2d4ec97301c7a1ec1305318c553d755b7841b0b66c014855e359b94e66256c4011ff4ce910ab91f89fa212d12d24d900bcfa48d9d6f55173124538d6abc03dc886b20b5a8c4df2454874ba7e9fdd9b75d954ee6e0ae52d41d510b9984f770d83643b9fb42c121248ce021509e31034e36744b6dc3ee280552b25a4b5402e44d087f3b03f45b8565cb4b5791ad3dac513ef7dc05269e9a6336f19011945810a4b1631a447c42af63800ca4aa6353237660f0231e40664d638ca38286a27e8cc7976f655c1864c493cb36e9c7ba04e82d04168cae142f6f8301692cda2af4f5980770306f2b2f9afe317a5010150145b459817027570e206480aa6a88e1475cacb655fac95d818bb07462c55999eb2aef430950207a0746c89ec882e1aadbe415509b23c291c55cc96d18cd3f7656772c41be6635691b04f3c15dd181f5a721ae4b05866179b603aaae58d1743278aea7e997844ed1be90cdeaf8a1d469165700e4285d4b191592fbf98afe2dac14d9bd4143e207d650747e22c1834de52da414498fa3e3479c936c50b86741d8ff0a36c1cee00cd47da5791821092cca3431732d1cf9ebefe81b155fc6297e616da061414024ab29c2c3e843f2df9f77003bcab29bfcd548c90be84d03222d7cb5d5b160c680343e2113ce2cf00144480af2179517b8f26f6f6d99822e747045e59f8b31f70176ed7223af9c2a4b966a9711896b02f3b4895803cc6a130bb434a022d1c07d69d9d214245b1fc36f3f6fd9c4d8495757b79890cbbc03df8bf5037e071f3c302f26e60ac742a9c3a2acdc1a05daed48ac2b8c2b0a7c6c9fd8a0aa302972c809ab2ffd44349ffc813d8173ead0a593b11a4d9939a6a3730c21b63078ebe044d24a22b9b62413df6665da6d740c9784e81a57c0f40db1f8bac6647f56275b08d9dd136af4910b99c664648d052443613c88766c6ca73214c32dab25ec291a0fbaa210b91e9d429848da462ee55e1f281cff25397ab94b148d713b6593e0c321b5b9b601e13fc8c77147b838de658cb4bca8d574385a2ac61f0b2b63ab48070a79490d8620d8ea060542eae6e2df997dc70dad9a7a0aa38ec14ce5418338a032f0e536c3f725948cb2f0c639ab7fb1a5fc35ba4378b9d74d6039e6b990b6f4cb74b24a01027a6d06319ba5b64929de9edbae81b022a7dfe9c4b02ac5e339290bd179cea7a0eb867a49f70852499b40c21ed3360542d918c5cb3d9ecee458a418ede52b53c675c8b932db25bfa2b70192b7939e53ce6e186ceba063975369443eb2bfed02a46136bfd50de6451982f196df79e0fce1a29acf790217a84ff12f00e26355643fb5e943b55a0120edb91234ac6c46c62ac3215bb7f13cf83e8f406712454e7b7add78d244677e7e456f20118396fd5c2ba03d5ef055ed1b0d7023469a4f62111a3e30a9f917fb8f65a4ee82682c6b8cc891eb78e8ba98db72627031b61ae4dcb2e83f78e0108198997989053b334abd548c7a5771bcf9797d235c4214855b98ae18ecf282c228148afb87ffb18789b3f483a985c033e681d79c2ccc053bfaae62d36dd272f08f5e2dbece557937eaaefbfc4d86847ba04050ec7d9b5331a4724b8b4505a6730764160b89baff311155facfa8dacaebaa44204adb9ee8d62eee2b652d0b35c565aa2900f8b4ed11b6526f89a3dcd6c67260f9f220a92ad753a9d2c5173b17086415bc20870a130bdedf1cb3f2a9386a5b732ca37bd954edb4ede9621f2c1b17829b29dce7389253206f446a5689f80f8de8d380aa2491187c178a12817db6c8be1d7671a450c021713c2674b9b894103e1850ef6db5fa79f33b6e1e808d6f3b79499cc13e4daf8a0f9c710d242b097bba9c34ffee63cc7922fa58c6981a84879f79959265e27f7b879272061b79c86cd856e8edc0102c053a9134dcc1c679c1a63220e950d294028a66d42c68affa5d8cd94b40784408b48751c16ede5d4da0ff7dd55ec140e751e5ea081c85eec965fccdcae0633baefabaf077f0723b38f6370f1935b5f563bdc53058eef7218f504acda7724fd3d3831350a34f17c8f8d13736aeb65f95de53eb1257e956d975f66288097e5f746f4017b449f3faede65706766b0c40e62775b47a975f5e92242fd939bb0d4ef299ce63501440fcf0eabc974cd119ce6c03e9b5a5ac249c6ab0465986a1a4f4d0f173142b44e138805a0ac0f20e5fbfa9d02917e222090ec0232e1ba0c9223b6ed6f93770c1838957b04d2e7305023122e4e567ee79670329ae25ce772d5c3f05e5f1be2ff9c5c01fbc20ed53ce3a6d3272d7eada9098a3472a282893da8f2f71d42bc91aa0179a2532cec5e5f0005746985c2c1c900b69de75f90f82db9688b09881a8d500b0133725f6ef538da7da1603835e073071b3290bddb103bc08bd88cdc2d75f6274aa862cb5380f2018435f9b9a1cc2ca5f2d0132115c838b149cfbfd199a263644d8c3ae2684c52e5c709698284d51906d5037337043f5d0919ff9810c44c2bb16bcdc43740a4669de3cccd5f3bf5d43a3e6f06d87d3c243067d9e83ce1f2d9e17411c644a883d90c6b64376df6082eaeb16fe2ac786d8b6192bc376044b3cc68dbb8ab1451c2e5c74057569f7c8f5c0a7c2b75515f0348cf128e80980ddf854ad11b6314972953165fed1f6e2144de39daf7d7e3e20285431a129d0da1113c7e877944e40f309f72be8ee564f63c2bd01ead4027fa2c2e589568113fba6a72d3d9f3eacbb14f4eb200cb570d5b44b18d706e922ea640882fb5ba2fda2400b3b6f096896d507e491520dd16638d12120a1901f43f5dc365e1c0a72faaa7ba77aa66eb652a9e0caab2c1ff5890c818dadaae827c0811dc920b15cde34aa3c828bb40118300f566cd71926a5cbbaf47299df0a757541e7469ae4d93b799b7149af44a8ccda0d25034ba6be47fbff6622d30633726f0d5b8f19155a573813a2980853c7397d0cea2c55b0bd97c9ac648cecce5042dc1b79233de552221453022dd02f7afa60aa6f9517aaa8cdc539e8d31c333383da5d8891cb7e5e39ae40fb2e68111680a977d7b6089c7a57159bca79cad0dd9490d01575913bacd68437b0abbfea2533d41b38d8b15d60cadea698ba165d3ffc09062361301cd8d0c743e0cf46736452226c13242ca56d4b133d34bdf429fe8ca16833666e1640519098eaac12ec74e6c5aa49bdaad6aab57fa732257b3b7d654ca02a258f113c3c36841a1e8b8b8b5dcdd0d8e4c0d80f1ccafe4ee732f46f6a176e690a1c504c13bb36f94fd89dce6ed9dbc11cf91bfd032cc4fc0d41fc78eaa2884c505cef26f46f834c42f6410be8a2c6869d0424ba9ffec6e48444d41c112680de07ebc46257140e49d4d7d0aed8f39f9a95c150edfe1c4b881ac60de8e6bb158144efcfcd3f1111e55aa7044d0cb412d48e1b316928c643b7f3867d14be54ecc3a1cb435cb342d286c977d6e841c582c6202a8743d4787cce23ba0d029af16edfa40ac136d83bae9a41104400573f134bf3d4045937c4172f4a8f53d0866d1abaf340ae77bcd124a2f0a4bf448c6312ecbbed27de3421ca4a2952ff6d83147e9358cd606cc3faecfa42ec59fc2f8fffdbcda0009b9ea1a28c65c67cddbbe8044d64d7af08631b87c5353a907cd1469130bbde2665f9ce02aa509648eb3e256cb6e67022db5b952e61f477d5c9bb11557a83177629c03381a6170a865306e7d054494d4ac5c8fd00dab3f3651302514889a4e3a812b43761b54729cc5dc0aaea4d88cd73443f1438e439a080bec684be43c1c0520bbddc46a6d75b158c6e4d6b0377dc036a6c6294e99b8c3ee437e076e10ab445a1ba1b6da4a12360e53292da9cfc2354369255dcbc19b85a1cc846ff4f276d81456127078a06caa781bcf0853678a6adc310a13e959f0090952c96886bcb8f7930ce9ca3720a29e5425e1bd42219f4b35f18bdbf3bb4fd306e8864ca3d5d89b02f2383242ce12282c1f4116f6f2954b1950fab8546133b2cc5b52ef98478623ca5da9f087cdf8212430d844fbaf851a084326093e94d6c6abd94af7a6be97406fde5d171ca8cb1feb5675f12a53500bc9357115a347c9a95b21492755777aa7969535b0f3162977d615aa23447d5a651430abe792911feae250301732e0285614c8bb0e358007c90fd598d13f5ccab81bc7113f2c6ad5a61c2f36307be094d8b62d57cbe23dda13e8c4ca0ce6e0931b754720f231f72a612387673295186b14a477b3d5bffd24c5042c1a0c3454a1427305c92549788ce4e89b26a1885add356a288d036ea97d8266f761551092af07ff02d2f1d28f46cd609be5aa4c9df531313f6e2fcd1a2eebf62e5c4cb03904164db6957479580d3ef2610d3378a69daaf3ba1fc8af7be1950f476178ef1cfc7598f43585953f2703523567cf69e73993dab1a12ef7c24d1a956366eae290abaa7aaf0530042cb36600e2131c1fad6abbc1659ba37cf899edc02d57f702c63e18436481fff879d9506784265fde4ba6f180a50e19578d54cb62af291874d0c49738256d13591588f7fef8008bb86e309713456c1ef890b073894e8411493da0f54e734ebcb7b2e4806fe8a3667dc18ae91335ee6b9f0f73b8dc5ffdd75429e7c2f6c02e129111046a1ca3b19ff059b101c4a3a665ca16b2b4567a7b3d40834405f252a1f6a803fba2236d7ed60f9781290b62bc97f18d68051aec2850f46649a647ed1ebf3b69e4f008329f31360020f42527711c7e72c58588ee6b466b93ff8c058b37b85e9eaf3eb4c05fd7af06136cb79bd7e0dafac4e48685ce3d4a319338094ee462a680000de61b18786240d1fb234f01cef1c8abf1b83fa6d2150b2d7cc7e8981ea825a5f37bac18b86d187c3820227c849e27c1fd603ea0ebe49619e7ff535d25c4b9513b686aa7472782bfa0c698f7bbe388d930ca7f15177f418f348c726549d2b6fc3d696922e054399582cf0f95c026d1a0a99d0c088b7bdb8372e8f90d3e856aa272b264df77778277c4b9ac21c18b201b8ff497dead6616840f87e38b587383052284eb28d9b544c5bf5392d287e13a6fa21432d6fa9ab76bbdc89af00f5d20f6721bf1a303b0839800fd062bbec8259b36d31a3e315acb9951ef135c89067eb68c1ca8475666a0c2483a996c420b877d14987a0a086a3573c911cf54e216996ba5b42a489ded034546e55b49098bfcbd084f70e4233478ec0af4ad7fde809b15d7c5c71fc25ad568bb71e6f2d8ce741fd4a47ff4316d0526c2aa16ea68d876e9eb54bd89faeb5b7ce6796e44c67d296ec0463a53c183adcd4c28edbe24c86701dbf3c2a9011e06409188ac7887f56b3775246029f635add5ffc30950af5e655d92d7f7f46653bbeccb05a147617a46977ee1d10628c2229a3e919d492c0cc67f0a2aff8552ae8934825ccf2de7268c2d468e70ce1194219eb78579022449ec65009693cd597d82d06e1e7e98c66d73ffdd9f5700c50c0524938179659468b667094490e42e8a2d846dd7b1c47cd2b259e9f33ca4b500a7ee6e9c73d75878dbf5332fa82277aa57cb3dd04e8353a5741bd7b32abfc66561171f720c0a73efc9174ac95c1d5b627d32a328a512f4f51b533462c39aaecd410d0518d26b6177c441bf1cc66a97ddb8e17966532396650e46ddf49407d4a788e00014429176975f1e4f48a20848068b49f20cb8f3388aa936456fb172066574e388e7f85c66205732a116544be91908f669591499871401aed73073cf3babf6b0f4783f8b911d4dd026df7b1bc9ecc900f86e65033eee7c42042119e01bea29764948191188d3354c94583f3cc9e47074fb01e0861193e61446c215b43d012dc1e07d970f856f5b67d41c9f7c97cb0d908d8982f7834677f6ef35f816dc824b44f1f652b0b6fb02bd3fb104acfadc30634e2669638491645d0a3329ecb969d22e0df92dfccd546889825e2d07217689c1a057f3723aed442377a03bd0dee0f8b14e249991580be3fed0e692506031277b84c37e906a76a84b4e7cc12872734b9d43439237f9589a46619d8a35e8781e05059b686a1db030b423e73b4ee265aa4e10a8621e59bd0340ddc340f96faac5dd36b9613298e3cd78cabac879d0b85f3570903f806285c5e5f182ef5303c288137cc6a4fd40b21ba2cf4c82d0cc34bc1acd96409d73fc064ed01b0bbca8b549825479c9a66c9da5bacc5ff9c585975fecec5c0f1cc6333700c7fcf641799567ddb3bfc64bb3b3194081e108f23260e7eb14ce7207493d37d0d1982c5e8f4b3b877a9cca3b7a780ce332ef2a0adb4360b5665a7e59fa8c40b96534346217bf7636c9f3c1358b2ab3aab5479687708551e4c786b4eef6ab296b5717aba470a95c0bd8665da360626612c70d41da9217b755d81cd01a56e9a47957d09789da966f014583f8cd17dcf4aa0333eb38c4d7453db62bc3eebde8b342ccdf940a34268799a39d231285d5600a80f7970d402b90de4a9e9b7e403c5d7fdb68cee33da15eb47c681cccf9d03511776a1739761da51ca18478045603d49b5a106f828d5fb37c450c6e13a596ab4958642206ace41bc688e92fc40c70687d55bbe285dea1120ea3c918646116456b11f441ae2806b60f921c9232ca209b25891b6f0ce82aefd41369d462298ba25a72033ad7556a1f467d5a539913710056ac33e5ba7954c03b21bd8fbda067ae3f338cbcdb9da3b83a42055923c98299920868214606998cccf1dc85f064ca5cca8991bf206b91e8264a8bbd2b96c46cb449883f8c101d457cefdd3b6b33984fb2362afa24e4a1e54c84522f8b044609da3bd8042a225dbc5a74e175f2318ac8bec49f481b6dc9bfa021b94a3d02091c981b67c5cf3c85a68e47014a9644850525ac4e0cac5d02e86621712a533b831322136aeea811cf4011eb702163ef82a089a7a31741178a8ffcc221675878b2f088814187c9a5098fbdba8ca362f6c42237433aca433541879122d9aaa48b73075aaed9c3d5183613c3a5e54d0708df03c0e3ed19ade224215a8796c74c70dcea9cf8759045b642fd47b88fc026d6dbfcddcbc4118ea21ce14395b4fbfbd43fd94e3144e12187b13d6d4e7f125eb75ed9e3690d7ce0a8867a709ec92c1b42b6733fe4d54cc01451bb05129a046811e4ef1cbfc6302dd335cca04fd10383bbf70eeab84b77cf0f2b50e9a79f9113af910bf154710e7068c185c78d31d472c06ebe93a1ce26e0a24f193bb1be0d7f65534ec62e62994a4af18e42e4c50ff0dd99562b5170429eaebee479a19159483bc5f1f57af9a4af1b9412eefd59d7c0380cdbee51876f380847e18239e73eb5a16b256bfee730d2b2b7407428d5d7ef115f7c0db30fe2af0eec49e5db22f882db4e50118aa7216378867efb0c84f45f3b508dc0c365895df3b20326008aa846704174dc429e2f6e2d5a545d78c0bde2719cbac274ef972ca3ccc7ea5dd52091c34c8137171977658e5f58ca5b33b6212f88dbfddaab2df94e3d8d0deade6477268654ab0b758fe74ac798128d2a0a5b1b18aa780210962bb3ec2ccfbdbd74656a7c3d81872fe25634f25c580333ce700d022646e1f802ac2c142551ea5274e36675ed46a98524aa12af786b72c663b7383e8e676302b07b69d787f5835b256f318050459e620007a5150f6797bf6941d56c69f2dfd4ef08de32666abf2d7729eac2c79748ecb27c2eeae54715c9702f611d45f96632271c776f0e8edebb2101a8576f0e9b02b8f2d367a8e8fc5fc6bf709233a1426a0141370af8e5f68f172a120c7ada659ab7d96d4308bd59b6935cf9a5a665944e5f25c63667e728b5565321191ce905ad71bc1db91ed616e90323b741045d8a0bcc97401a124e80f36d8e9babaea373d806fdfb040147447699bee894969293d12e321b7bd86be20474b882c20b224439cf70fa90b432b01cfff58312bbc9328753cf7e96421ea62722ba6b3dfeba86424e2e2d3c7bb2918b125baefb41991026ba7d7b6fd4999a1b9b1b7f2b78438bf324f56fafa321567752032ecbf3393141d9769bc9f3104d27389d7a0022c445d16d34fc097d70b7aba77136d991655e8d07cfb20419a8a495dfdd21c99fb5f53200dbbe615127069ff5c3ab72567d534125e494dadfa03576073355e660e6d6c3b1318d37092c46aef92ad1e98789f0bb6c18562e8a54932ba1fa0a7ce13ceb99722cd5c822e07ad11d3868b316f3dd1d89ea01e9d7b4c0fb34d44ba379bb8633d4bf4cec9031d7fee6561e3f0947cbaf8be48783950d1bac652262a1085775a3b545b7ab8b92e53ef11a9a8320c01abfc8de95393e9739a285ecf6d012797cdc8b59e7bd5b186a696855a026f8b990aeb296ab6f350a8410ee5faba9ec58e0691799a22d969156c4df5b13b173df6e850280cbcf0eedc4d23904c48dd8cdf6dccec9df67ad1585fd10c3741b31e8b7c893759b5a979a8c7f86b564e9e70468edde1fbd18c6d8dd8375a0582019707e7ae13f3d9fc3ef1629c6c1d7694618301ec15a3e3e90a4b7e2c56e76f96ccaec6e6b1a28e307fdbd3a75d76b1d25a9bc5a033d7b94c58861eecedff94688114ec8e1b7cbbf3e50c6c010e5cd3cd2f28198d76521f3bf05ee6e63f17fce10c00c3b55a7e9390359c136d4a2ca4a0224a182aef31c173a6aed24f5e34fb38ea0297e8358f01cd90140dc98935e327b6a7d73bc916afb26387b30bb0fe1e7b89d52f12f57f7080adce1709e4dc94ceb7c463c7d43ea1ed96c7c0400465177bbc8431da6ac86c30812f9075a812ff311d8e2788c98d1f8d93f42f5b06011a60fe1cd1d65ab0f424c760198a6e27952a6b5f0fbf0676bcba43f0bd1c95b95b8ed2d659649c589db684dba83d1e41bd7da2cd70c7c77df01d3ba6488b5eff94a518899bb9ce868d9e3772ea3074159533af4e8fa1274c79258246d93407f2647c778a7fe1b6295e58283728682416dc173cf84e6f9100b3e42182292686cfb6f25659976a349eabd907efb7c4ac8f0ba1c73a890ff598ac652084416130f95bd8878885498488c0b732dfa09b4cbdb0c718c046f9cab44c74822b907cefd062dad5006a26116ace905526b3a2ab3b757086803a5628357d66e82b4f6edba178c2672fe7f3b63480dc60410dcf7230919d4c595c936989d0f4ead012d65c77208b74744b46cc2fe36cdaaeb6191ed2a324e42df49750e8abc820da7552dd911affd8e5a2b6e08941a459218c1f0decfa854ef0c71a6a36d6bcad2a479f7955d3396a9ad537e0614f8770659c540ac9a40ec091e2c6c018b48b6333eaae26c7dc4ebda9ccd337c3988d03133dbeb89d4c224de8bbec3bd8a2594eabe79b81c44cf35fe38726529b000242694beb021196207992844904b82303eb3298775e147414db91770e723c01f2d6e267af776782ae5ad678536d2c5f3f3728928c4b71c5cc68875c009a18818738f0deb91aadb02546d575333dd7e4208ff6ee4ffe27607d345b03388f761697f8faf4b2a3daecb180761016bc8e9c1d8cb10537e891342f8072e2531811c5c2c9d350994bfc80648efcf32a6cf8eac2abf4b972d97290007f98ba8451fadead801a53000f6eb081703fd687d68021e07fb1b541baeb94ad9d47d8222fa94080aa14323e9c77968dcabc947f7e7f4ab074ab445bab13c928aa91e8f6397a7b8c10298b2c1bdaa717a6cf3c9000b2981bb96eab93a0dba17c4d6c3528a6af345c574f4d653a630b8eb7fdf7ad4dbc4448c1ad7b82c8da4e9cd1c8e2bec39c5e6d23d679e07d7df0d9d43318d3495ee2d6b92d1ed7b7d3d63ab19988da8b02d11d0fc9b148b7451a61ec245da700a2921ea79d369eddde3d28f50beda82d3d35614e22190d893e3a5df56298ed63b0a307f7b0be3b27660c1f0fe14cd7a9b28314db7be8a7a6a513be63d76eda7bb856d0b408670a42a99e64c9196dbc41f57b6cc7014aed4b83d2adb9039134d5104053180d2484173dc572b671658596b98a4ac3911540d96e5f3d813879be5d8fd07ae560ebfd158dcec954a7ee4475665cb8fcf9738839677bbceb247ca829f6b40809c49ffd269954ed59b4b9bba642c055b12cd149ccfd2ef53d9e9888e518996407f1309c07b4cc04be0744c00c54209c55493a4d79b031b62ccb890d26b724213c3113f92dbe4fb72d5ff73d2c3ec71b4c6eb197ceb7c3d4899d840a03f8066649d23f10b987f6473dedbd7959bd9971a436cdcdb6d6da6e841042082184ec2df70ea10cc00c510ce00a885a29954a2810fc05adc728ad3bf97d59f6ccf25cdddd864954a81c1d4d9962d4d9339915fd725e999692744f23d5a852a58c1ea7931d72b5d46456a54a15a39699cdeedd864f265bf2bcdf5aadfcf13e50a8e50c9a41198964b32bbf499dac4a95329afb368ee301e589368bf849f223c93862d6fc07a5cecf56eb883ce299988a43a7ad7acae501e108107e80a024c600e10996a6ab5e755c615f47a38ef9ef07353b9f3f43c9240847360971e492f86ddb6978bda60fd2b46a2445932641cc6232b5635602314b934b5a5bc22ced9c954c98a55d03edd53e20d4ec9af62f0875bb7c22a1f04c159ad4344d72524a1b8f85f35dc892af05f14c6cb98425506b5a6fa1ec1a3ce79949299da189bf8d4a7b9f106af68b257128c5a133fc3e9cedfc5d6db3f2073b9fdf791e8d3a644be6567785cf07f53af601a15e5f10ea3cd5b00c6b192cabdd9c73ce39e79cd3344f06285acba8895070021304c9b9258834c61188200420f880073ac0810d68200318b88005680582a00090094820023f4e56a8a72eea952182de5c51b516515f25a0da8414d482d2d7d55a42bf5a4b4a5f44cc187a36a1a1ce4dcbcec5a318b31d5a0ba8b3cb1a441d915ed26006486410031870f656957652285f900412468e70816c0118fa1851a487052b50c117121992029e1d213a44441d91882b542268932be8aa910753c4823a12351067a4a34afa0729bce8b77a5269ee47304fa5aa35665e8c91358998b4fdb445953f5c074eecd2ba21b2034f55a8570611c99fb75a064d9074f9f3c91f8f35695034282b8356ecad288ec6a3a00e24221e6d53a355db26f6d60dbd8402da2b1bfc890a95f51351256955fb34cf5e556fefb0ebdb019ed30e5266d9ab994af6aa2676699936ed9518a6ea8cc5fe90b2df8a87ea7edaa2d6f30f940476fc456008294208fd8022811f660cbdacf65edf7eca42e5ff108368a5df8e798e019aa661d8755dd7755dd7755dd7755dd77561cfae209eb96ce51960fc604a1b3551d2dff947faad662afd56a3de91ae1fc84623ed7c792307843feefbf77d7a6732994c294c52a19aba9f88aaf72b73b1cc95530a93b40bb99fc2ec6c6fd7751da9f413519df2dee709fb80f8ce4755138b69c564425dbbfc80780b1a3c2abc3e0d56167bebca2985a92ca9648b5a4aff004a7f279d87d66a3533b3bcd2c894c2be1ed4b77a7b07866f7517bf3b440bfa24654ecf3e20deead36526cd252f131f4d1a79d375b724a594db3ccb957af9e9d63e9dece56be723a3ce6505f5d316f5d6beae34ba52f2da87738768f549523972345b53a8cc98cbe8e89485ca72ca429d97461a1fc50e75ecc3b9a6d70b7ec7a7573e6a5469f035cc21d9958fefe04190011c87c3d93b815ab68efc4c2546538ea80849212a026a120445c9cf11666666666666666666666666666666ce3e9c4ddb8050e95b7df1338cf9886778fea0b8c6511761f8baae7fe3ae393b4df68581d4a6f3ec9c7376339b2a568bcad114a322222942407dc9267d49287d5dd745e5688a51518d0cebbab2ac2933e56764f0e0487397d94f6fd728b3b6ba7d59540ea863141e28e93b8b8460966cce6680599a84c275a1c7acadbb57d42c67f1c1949e9ff4dbc1f2be57cee17db32af58d86e984b5525bad29ab3a99689c882a7fe57716157167b9c73341e44f77d73ea07a290f6a3d666d67438d378151655facf50d55283bb85f310a13281ceaf2425417aa3ef945a9f22c473d3b7696108659db51e199b5fd8ba2cadf9727302776b044073968a2a6b8633860e206499650c206ddb11ad060064864100318441d117b4112481839c2052d883ae2c90af5d445bd584bab2aac3569e28dd671de15d5fbb74551d4771651e9edf72aa3b7c79e455498b54531a5bd2778cfe24873434441a5e76716dbb926cfa2899486d2956ae5c2f046a2289b28e98ebf07904cbfbacf2379f27b40ec4ade16de211e106bc89dc9e34209d4dc4b255278dfa483e0af327886e5db63ec2e4b260acdcf877716eed7e703887639d64a61ad15ac85c25a27ac45036b95522ba8d3396be9541d8d5fd5f6eed9e7c3bb8bdd3809a5c54251591a160a49ab2ad610dd1dfc7c78e7ee7d3e38d0333edd1075c4aef1edb30d6c20630d6a4843d4117f177bb5f02df6d6abecca6d38d130c619c4304319c8907a18ce3188210c6180f1051858fe707ec10b5df0820b5bd042d411a38ed8db6b84a72bd4fa3869be1da6cf975f6df55b5d7e554da3e5f74d83d5341e230d4b9931db69d8eb13f49df4f9f03ec3de219a7be9f301445f9fa0e666d18cd9bebdd8aba556de62efafda6e4243051f6f58ecd552f6d6157b55287b7fb297d57716f5769b89bd867c52480f86473d5f06cfbcb773e1a3f8a250451d2d51c710cd25ea18525751c7f797381363df547f8f9187b79abb29cec4fe84d4e6fe791f159ef1ec7d733688046ab95dc579ddb5961fd7599eabe569f7ed5e176a2dbf8ee3e4e56673b29f1413a00851c7d7b265778cf188ad451cd8a915751e83020e5054b9beafe3f9a353624c84e248e301070a2a7187d8b79a4c38d2d427246a944efba2d4b7faadd0013f9835352c6a8cd2a4a8af16058a24ad69cddfc90c556bb5bad56a1b5e02c447ba08d3a4e56b5469283d5fa34a67558c268d29ab32a56356e5a86356854a47ec026f56c5a8b10b8c5f8f0fd134a3dabdce1af85b4d5ab527a24a0fda7b3d6a199655316af9f578abc32eb08a8a81f6aa5a4acb4b288a76c86f87f779308c6ff5dfe049f627a2fa9d62609ce0f9dbe1f1bd30fa989734369c666f43596f1a8d3af69e48f92325073c1714ae0e227f321a2c4982fc9142775d4efae5000879b6375a1ae92e7e9ded3cfb3d51a787fd4454e5ef10dd75e1f43e9c2798704f48c13df1847ba20aee892b663447d46ab55a70730387bbd14f2469f971e7ecf7e3871933e38cd13e09c81b1b3e65a15eba69365336d5e6af514a37aad18c56192dbba914bba28b31db348eeb38ee47a8a2b9cb4c1aef235ded57b5f2795418674cfda9d69b4ea1aa96e6c1cf7fda21f44278645f41e822085df410c93daf339bd0420c46e821dcd30ae1a13daf13a954e1440d7a08ed69c1d7e82b7b04dcb14eba80a0d6f19397c74ebfcb5e66d2a0ecc9b357d34cb66433af7088bedd79c221b2b97327305c3db4ec284e40e918e50655f47d941bfc349ff95af377497935f78e7a4e4827a413d209e98474423a4125c6c8275a35dd43f7d0f13dc81eda9361ec214758f3355133cb73198c294f8e519880d23c974c5722ae28ca0d5aac1c2dbb2365b33bf7d3f7df50c582c8a0d312aa969db050af0cbaa67202a526c72754b5bb5cf9d345dcad951d61461711159a412e983d99a1ca9f8e3a4534f76b4416ea64cdd9ebd3737b27cb48622409922449922c99214b4a8c89445a5135524d390dce124731667b8c33384b5089acd8572647cf3047cf6fa3c11228279841e44f09e63149a4e940a32b1efc492f81cb16d13366da5b0449f68c9717e862943d788cf4abc115424d299582099d7c84a142443a58a28912413e4c50820c9200830a48083a7243ad68ba04142d9ac10d3ad082091456e0411537f4fb91980daa34ed184509a0be30324d8844516c300779e763cbc8299931420c11c1dfe9236ed13f260d683f185422260d77132b5116b7e8684f66a891a823d7ddbb8d71aea1fb6450b7e92365fad2b45a5b1794d982326d27432349a8d8c76cb6d7c7c76c39fb0a69db4c19ca568547f8705384c63525aa9f96232e47fe97172b5d34ada5aab8088befb4bf0f877b690b6f117dba0cbb23e48d13fe3b0e57d80a0152e32e070280ab1e5d3e0300b606f780471d5c01bf72f02b8fdf8eabb9505ee2a46ec32ce13dfdcaa39cebb1bb4c153aa1560810d5671c488dab9c0801f272d56bccb0d11651d91ed55f6cb4db39bcb23047c7872a55e6d0ab1ea87747bd7babc278b3ead17de5dd576ce9f5a870d5a39376c8ec9c936535e94c65d2181d0d31850827405477b9d1a471b13db2657fa3918ddf7804f39b1b9757852e972110d55d6ccfeaaa7fab08b85cf5205cec2f20815e429ba90a8bc8a093518b9542326875d55d84a8ec81e4ef02abab6c9c3126f996d0e7265ef09cfd5eaa76c8eccbea1cbe3c29ec81f5f71b30a12c9a31f336e66d28a7cc9830bc43e6cd9196673676b63cf3a8c6e75989cba76ac655f360d8bd843d2f4fe2081f6e5ace5d6e77097b5c9e444b8fea49b4d8222d8f372b1f6a1c69793cd2729ed9e19196af2ecf08573b6873f6488b7572d91cd5e38d249a345c348b8872b0f3bb237cb859fde5b2dd5d3ee33d4756b6088dc79b96d7b887f5c54512ffea976716d5444d1545899fbe5cc4453c13a3d8808c9eb2677fd214893366fee57186aac65dec5dfef25b675899693363e667dce557c648657fcc98f91b855a5ec48896d7b0ad96abaefa0c5b67cc4be812ce8f07edcddea9e3436b7f78840f37345ec32641e32ff7ac15c2cd49d0b8cbef96048db7f0cce641dc002242161d194fe0c2165ec72f881933f04192273eee81913544c10ab0e31744ca0b531c3185d4f10b4282418432fca0892a556eb8cfb076fc8238a2c7c9f5b0d4990fbac27e7db5e36a1d5965f5e30879c3e944a03b77213b3ead5d02f1c6db91b3910e92baf00339700ba3f86e33c19c28baafe34e027f85dfb1500707d3d9911305e9b1830ce9283a5bafef1d77433a675b1c16cad62250431f744847c1bd8b5f10166c71379f1502b42deea6beb32dee0a7d14a06f14df83f82ce928b8efdf3bd2671095f4ceb6621837e06db847f619ded9511cf1e186db81e40b1e7620318a3bc4eee18e84cf4da9881310c8939baefbe1dd8681c83e0fd08416379c35c201623042135a88c1084d4ce186f3e9f8f1c889827bec202ce8285a177f40a43a3b180e3163f8bb508f8dfdc0cadf6f2595ac93eb9743df21a70e12a3f0832d3a7bce7cf61e274048afafb68708cb9f5117858aa2c62c8f8fd9f3434c1d844eb9a227f6c3fb75302ce21dc4f97104123e374938c1ee73c39d7e40f8d018268fe44f2885664c7790a847127546421c91910492413fbf12a807099f1b27d77f1a439d76270ab54eacd23796d139434e1da4c611b43045cfe38c69d91f50a83f6b846fb8c79bcec61993332d0fedccde79cce6f0f0e9f921a80e32011e20d1f331ca1750be06cc13d1a22f11298447c89bee5c9804df747635dfdd88d66ab57e85427a70cf4b20de743a248ac302f186bb0dd323396eb877216799101f6158f3d118158611cd427c3669af11737ea73da72778109f298e7af648d9d115d0d9d37248064a9a4736668998368a9e782348444d9ad0bac92cdb0bd449c43f910a23e989840a211abe8951a808eaf91e2ab0a0420b2ab8a0622243bd2ad3914c1173ce3965f867fea06390c353937a1a423d3da9f197036a1aa7cc2346a85793722a429d7d2f2f7a3e768c3a45f4d09aed698a6ac331d4faf242f2109b7a61fe2483ca374da9544a4b91529a8246637411e6dd1cea15c2173244886cb63cb27dcce6b31d72f170fb20359fd6a031e365e5d2a26249ada04ea65225819fd7719b9661179d2cbb787df354ca8d4bb38586570c56802c01da151b14b82a745af0c0f091014c0329bea1b6a00403930d4e4da0a05801426a0a9624a8ae6881824b15565a7801c30c32d08838e6d35023e2987f439fae10e77685506362349f4f6f332f252e41411c34b12d8c55746c9c0cc39020a56ae7d6750ee299ee09e6456fe72e9b0b63c4686a89c68c97954bcbb66ddbb66d1bf8791db76ddbb66ddbb6d9cb1db47cde22ea984c8529682185284081edad1eb61272164351b0788213ae883aa27754c856348109552c410949c04e61a4020947786284224c1175c4c8413306e33eafa990a0057d78b2a25ebfdc849bf08c1457f21da15e0e5a82599eabaf200cbbcb5604d6ba808c668b81b6bb6c461d7bbbcddc748ac8ba73a14ed61ed74510ba30ea2b7b6c4ddb4e58d46b0a790ca621ca11b46014a5b26896d17396f1448a0ce309949e975e3cd1e2091731263ef1a2b2108a8b4e48ea55159d6850e5853a46231a8627461a3bed01192d2fb108a3e7e9b9e8d8d1085874ecd8dab7ecdcaf470602035f131b6abc76eddf50f51e81c0eefcb78539db637f42b57b4e10f9f359cf06913ff313aa9de5b9cedd0e9197a74293a88b3097fb69eccba24e2a64624365131843f57a8c324551bbdc9312f50555f6bd88e4144d6d069855866ab3a3131357142234395da1d2df8ba8b15f4546d71406e27ed6d0450054b0e5a45e4cbd353dbdb0c9802aa8e75f1850c33331ca108038eb0b23af9a19337fb242edd8a39941408e0318a000323b1000870e0310400c2b0000b80163c386af4163c6cbcaa525ea78126362f31094106318ec087251afaabba8f2a64653bdf9181cb4904b2413a9448a542281e44f10156a0db35706e5527750a5e7127f5a0baf0c92422d856cc22c6e22b38348085e748c1204a3203c696dd2b014fc244a109834a59ae4b65f8d9b5c5135bbea917d3efb6cd27c5dbb341f340803f1889d1324d3ec09b24fad3f9c4c6b1ac6a69b643368dadf4ec4e82e7655a8318a10c468ecef8e94fd0b513ce34dedfbe644958dddebb867618e761c21e69cb1e6d7b35fd8b76ddb84507e9110cce21a0d8b39982da3ab176d8d7b7a7b649a8cea804e6d4eac367f3be835ee73aa388651cc92d76bd65aad9eda0eda83d7a031e365e5d2a26249ada04ea65225819fd7719b9661179d7c654fe96ad098f1b2726951b1a456502753a992c0cfebb84dcbb08b4e962c4f43a329475484a4101501350982225bf288546234e5884a148a5222512c7ab3646ace85f1d6cd7aa176613df8ea6f499dda50c7946966d08cb96a9539c8a18c38c0e10dd56575d2e32a946e68031bc858831ad21075b884120d639c410c3394810c51472cbd259463104318c200e30b30482355288566bcac5c5a5433ec4be9d55eedb3247bb57c978a74c9944eac2ef12685260d3315ad55aff9238d7826c545916714c6ca2f965faf6701696b065da55fd715749d4ea713a9c42552a9749aa779fa55f5b4b39a4c24130b0b4b3531936c6509e366ea4c5bb7b2721b2ead6c24d3a7c97acc42bda24a25ae9a7e3a9d5ecff69ece9dbc9247aaf3f536eca56c6416ea2b616c6974d56fd56acc42d9582a91be5aaaf5a6d3c9dacc6a02c18f49146410fc42ad7f268d0cc3e8fa8b4a1ae9d0d7ef3dae7e5a0dcbe4c821c3e17c3283ae1914469c2183ee7b84295d7e38a67fdf97e1d070861de6651fce766f7a9e97793ab2b38c540ac2dc8b0bcb27453dbd74f0a467d7cee21955cb0cead873f04ccbb1d7f4c0332ec76ec3332cc7ce801f1cc0332fc7fe03c8ca499001fa78854a1535293feff33e4f4a9edff7d92be57c79b90dd317ae9b3275976ed5b9ac58288bcbf4bc2e751b7609b5e6529ee7799e77bda326fd3ecff33ccff33ccff33ccf537197f67e477d2d2d2d52a2e494d2f354f75a542c616c12785ceaa25452e97ddee77dd6b3577eaeacac78ef3c9ed7caca4aa3fa148390805972eea83795e6c424924a02951044a6e99949c02ccc3bd779dc3f791d4904b330245c1612c1ac231f15b562c7784a4d2f59e40c197412fbe92b6bc28459d7c960d64546c4715d4719d76d42a8971649d1a8f08ce9d76919add311243c83fae1995212253ce32de19914d0c5e46a428b26cd757449c13357d0f58467e2152a55bd78f2e4c9e0a4f4c3a17292485f690649dff7a1482b2414831fe993f449921504a59452caedd2fbc73ce79c73ce39e79c734efe47024f9bf7cd7fd7d1f79a237d7dd757e975d49794f2033fc9cc1fa9033bcea31d0f284f98155b4a5ff31a8f0f470ba917ccba6811b32e097469515fb2e88785081d033576d918866154988591f1e11861566624e2c09eb5368f3b95ea6df8f341bdd79422284a4848b2243c53952ce1991210cf804cb863c7a4e099d3b12718149ef1b2162614af50a998e594534e9e3c3f1cca734e3bb9ced49d4e27aed358b395595fa9337525134841e6126bcc73f2a73517769d8fa6d53ae7b49c26274f9e3c7932b3aeccadd1e6e4d8d5866965ce5863b6393b26e9b37e596bd2d4a8b8dfca598d595fd66aec946a1beda69c72caa96d9de7ddbb7679ec792ef28842c901050a14ed85cacc4b8c6b0af6cede1715aa7a1a76b5fed5549e36af565dae298dfdce238d5d53648460d611b3e83f29556636a13e036a9142f7ae7a423a797a8cca50f68b65a0ee23a9822a03b17aa63b5512c4acaf49bd33e8270835fb6929a5ec42d309897a198888674c5c68a727a3307806f59218473ce391c133a9d34f2a65d0d60c9a343468c65023f40845c233f10a95aa32334f6666666666666666666666666666666666666666962c3932333333333333333333330d624aa5346566e6773c1b28490ba14da9942ad37cfa2c8c21336116056216fda54155f0cc65a07e422fa313b780410985c24814285a7d6b7e78261ed5d45c5a0319758cf204197d652bca135068d99a34aa8659414dcdc4ccf294aa4da9effb5e4da9dbccaf9e4ea7631f4eeaf4a54e94c4924aa5fe91586e33535fadf5f4c361a94f792c956214a3d8c673518a31c618638c31c618ff2c968c4c4d8db7d19efe3e9ced3b03b1b0d84b9be5a933634698d1a5424016b3975952a1ce4ca5521ccbcc82064b3ac5409dd27ac361664e728c518c1eb397b76dcbb8ed36cc5b166a9d0a59a8f014f614c1aceba590272485414800822132200423e0e28e851ba5f606913f406cd40e9194524ae7b773a15cc2ac4b266196920f075576b55e4d94d2510b665db7e14f49e5f7c0ced33693439ffe9250af0e3a7c4ba8d76764fa32ea0b04500dcf9c201a35b541a251531f3bf4e569b5784079c233983d814cb30dd20c746215179400eaae97958beaf72cf267a57a9bd0207faaeaac2e9d6ec31f933a4d4fa09c84509f9752529f3355b4cd30e4942b7ace397f2413464c1825114a22d419e9572a01d419e9a7d59f1147ad961fcea704509348a4cc5e0982e057ba4b9b09aea452290f94f5a82d6f70e93884842f346ad571080958346a080952b40be844d56817552ca915d4c9d4025e554830890b1ea9596874e8085c70171f6f6244cdc824802fa0918f53ea791a8666a6b93eaf509b1e872013559b09a09f3dd2474ed945dc4180a8433785f088dff13946e99cf3e23440f162087d595a44f30e0234865d17a57332cb8843627607011ac32e02748c38a49c56a7a7f95674f1a15c82a477d01dcf2b44d515f849f35faed0b7467a85be8ee2991d12286a85e6c3a8962c69fe0b2ab31eb3303bb4448b28794e9046303a1ae34b378796187911874a9e6149517f1ff0398a0cb0e28818ab74f252eaa0063ca403174cd21aa837868b82814da34c2bd2c0286c5e13b81c3c69941c6aa249a3aa2045f3378972908459a0c762cd04ccb945333741a5790e20be234d2a54328ae2c5186aa28aa843461cd1d423451779a889233615754431d46433f288082a7362ac2af2baab7f98349a954c38667eca6f0cf54a2c7a669167304a2f792a99f04c139ec132263ddfd10f07eb1875cc0568ffc2a8329947a7e69d00a683c034fdbf2e7c5ed42b83be29f5d20b62aa7d589649292f22ad0ddee3359ef13cfb7181b3de3d0b23857a616a4c8ea66779a79eaddaa4f1ae7bde65d0e787e379bc005e007de505ccd3ab5e6078c6d330ec5996adc0af8298275d02f3249f06ed2a083ee912e093eed35e782b11cd5d6bcfe3b0773cb4379bd129c42126b0c83a0e35d18a7148091a1a35a4c4a8050168f96823d268a8997807d0f21f51bd677d5ea867b5648c408fd3b0ab05462abdd6b4879410f5ad3da340236fe69012a19e477d5f182a5f526fe827f398e62553cd98ec25d3acc731d9332fcb542f436420e019faec242082a788ac75a4a4d571080747da001d8798c04253a641693c734d2f0aec75d26096b2e530d4c8ac79af3316ea0f2042481e645f1f020424e0a2e9bfd045e6387b619afb68aa4a8756857abdbe4827917e3dec5e0abb2fec2eb5f0729f30ddd9cc77cc4fc0aea9719e96659787251bba2b66d9dca60f55aacca1b71e357d7fe8cd9ea0a6a3cdc9a4bd35b43f098639582694e1174695d174e04fd3242bb272340bd12e9808eaec5d8c764736d5c1d1de2372a1b7cf39a766afb901e16245eb70404756f991592d8c1107fd155e38d76de68e4ffb68f179a2e317fabaec9c409d7de5c36667e2a7b34f265add9da63e2ffda97e7e4064bff4da7152a7e1ca67f85d1c54eb4eedf5e13e1ed951d742d44d614ef7eef5a470957a6cd2afd2af7095e258ce852b1fdd59de9dc5ae525ff920bd547aea34441dbbea36cc835ed39e0a57c2eb5d3b2abc618ee9b1a7bda02ad472b4976a78c31a30bc3edd75b6871dd9b5d58e8845aba523c31dd9f3dd46378efb76d454080fd69b90ed3c5873464de96be8f8d032e2d052a0ea88437b9779f26b808f15d90744f6eb36933f1dd93bbc8883af85f7b234878c92ca1d8798286204a5f138f494dad58e78fa9c784adb86394656944f71b704ed8e341f61983b102c99605e7a0d637b5587931c781211cce2936e14827925dde38a20853ccce2078938f836cc0ef8010cf5a25ad53a4825cca2914b32d647a5c64b4756a9726b7bb514ca36855f18f5ca26b20994d24b5145b291591c4e178dc8233fcce2c75265968c383c37d45892da91e48122f111b9203e0b6348698c59f61795c6da36eff3be786f8b1ba7f16c940ac1bcb1d89b0cb334ed36ac65599671348b1f36b718371ab770d249b339e96310b36218a312ad96311ec3b03825fbc248067d711f398559984ed6e18655ebc52e2a86f175b8a88c27495218e48d3366c9743cfd253fd263ed69d2276dc6d97b7b613c7b75680cc3302c6a98ed610af5f6c0ff316918c031f40e6000cf5cbfbc779e5df1e07bf7692cbc391ad3b81cbd65d8151aa77559c7fc3dfe46d4019ee45df573fea52385dbc6ec9142160b0c6f441c737e9edc3aeab1cc67852bd4cbea79d1c9179551033f0b1371ccdf7a6ba9146a1cb3f1d0ee2ab366e843952a55bae3a1f4fac69b36398c1a6d2c8cb37e7c8171a918740ca647a74608358c65163a293796524a2937b96d929dd04d56b3821c758cf1878e0cd03142ea5c7ccd47938c4516248d42348b2c6421484d0d143018181d6e0fb5f762d1fb34e56da31ba594522ab11055af4c356a09c3d201bbeed397cc95c142da321776853e2d03e492e1990b88cc75c51fccba6c6094e4e80885dabe9ba3274ccf979ed7775551fdceb26425146655dbcade6ad12bd337488ebeae0c0c01020c0331ec1ad1b43beaf9eb33ec6828840ce5bbeef1bbac4e26c3218ae01996ed854264200441786184d0b45a272673b074388ceaa5fe519bf30a52d3d875da5715628421c4458d169f51f59805f385a3ce082f5b54ed7c182aaf852a93c82432894cc2333209cf60465826e1f1c29a654de9eddb76f9e16c9866573e6863a7edd398bdb259188bb6d61d16fa348b67583c83591eb133c02c7916cff0602130222a3dc643fb3a46f9dba25e0d08e3a29ba48fa29abe34a596443a3d4802491ff89134667915c5ac976bfa8092e30003d399d7584535a6eaec94041efb077e9667b6f7791615fee3b6ec575fd71504a6e7e91c8218ea85d1815ee3c7efca8a54a952454a5f3c57633c4e5023c32ef8b680dde6f2a28e1dd957e7d26388ce6604c2923f2e6b6d7e8838640f30fb746495f9c233f3b214f261e4577f9a3b07f5fcca0763377d6809a01cf0588c38b22c3c9d3f20309c7a0ebfbff00c76a971e70ee5c17c3b7c9af4179e99cfc067e1aabe74fe364d3f85173bbde9dc4d7655bff2513af8d241ef8567301bc591180b8022bd863b7c9a840ab59ae35915772dac6116677b78f1a20ed9726809a19ee7cfd37b51c78eecabdbbe06f858213f1e386c2f3fcb7e6532fb36354d8806c4109dd5d0f14107cc03230e1cd2c4da11f71c33d7ec1ea09db3b7c765c63de3b0d0fbbc329bc35d9761b154aaca413c8b7521c6d5f065388e392e7bcd18968e61c3361ee9e0026a1a4f352a068661d8b15332e8185406e3ceb1c738ba8058be66d290a082a47a2e945e74928859d7b55072c1aceb915bf9d4b06e0cc943e993e537f56ce5990e9d81599665a867198be5e146d91ceca65059966559966925b962ad76ca6ad6b0798c07776c629f57cba70c23a8181d25a32717ea6455ca682d6b4a06cf982eb55f4a0695969753b397462f221792a666c6c860567e54a857eb3ac39ad67866ce300a759a26865646dff91eb399b6189207f9ec5232faf2f0ec1c6ce32ee9515f1efe245d03afd94b8f7a5e079817544d8d76cd62328d9dbbf64bb2465e5c1a16b7079a9a1cad619f3db86312b41ffd7a5c1a47c5903b608fa650be869745aae1a68ddaadb94e971f0f4dab267b2ba7b1659d989999bf5f197b4fb739dbbf739be936dc9d42ec5ea86d1c3d6ada5db67ddb2e6d98047e2612f899aeae24f0e3aeaba7a89e6c50d8888b98480a770ae53d3a86dc4105bdbd92c0cf84cd257f992206f63a913476d234d2d8c1321afb87dda402cd23c1a4914a2eebfe1705033f698c43310b03c26b8ea568ec257b594c1a7bb5f74b1a3bc95e5592c60e22a1635c629aa6a9a626d353b358901ccd6dd77e83e4e8ee9ccdd99e5de3ba6d1b43f21071e4516b740cb903769d640c1225ed353d9566751caa015167d778e6f2de7159760c88ecd845319a8301915de7bb5cd60be3d478281762f20bf9850c5222bf984235106a998e4335f86925adf5d00c867e8c1a011d877e9a3406064923d959965d3e9162f08ce4a1d12ccb3e3f9c4c898d1d0cb3b0a34ea14c58c32cccaa344a298d32fbb66594665996d12cf3a19d66a12a9346574ee9eca53cb4ec1a151f328c78778b74f6ce8a91e96432bb94f2f28918ddaf14e388da27128a176426edb5a8d75301aad334ed524f0649234d8ab169ff80e8a67ca7ef7e4bdf4cdf68b59bbd26cbc35db23cdc92a24e39dab3ee573e397dbb96699a76298de40ed9a7a4d9bf207dd73492a67ddfb56aaf94debf93de6dded0cf9129ad75a779a4303b986d7fd2d9edf6cb43db2385dac12b357aed9dcbc90b9c76979317342bbf903b7c2179b83ccd9ec050a5e7c92fb43092f2a3487ef1c92fe40e1f46f4d9232d869831d94f21a6691997f1706bd9090c55623163b27b21ed53a669f6b2a0cfdf1ea0bde3acc6e065418fa00f474ed1b08f534ce8a6e40886d45852cd52213cafc91e52a3b1d9804d7e0de8b430ccb9fe41a1decb19d1ab06cc2b27f210bd086acddeccbb7ef242bd7e3f28d43bb9683484bed3de77f41f04ae43a14aec530b2fb542b8e925f730f4a53cbe1eb5317b7d7e28f5f55f6c15c476c35d368371c37d06918d81462ad4e0eaf80581cde0891b2e080518b122a35f48d1f10b627a618625b88e5f473a2aa3d0047afc24d0a49935322c06d27a1a4d9a1acdde1a19166baa88a691367d6ea28ed833475eb63a2ae91e27d24e2511c73cffcc184944d46a96ef91ad1b9bac31be6cf1648dd91c1cb63a43b217345fdacb75a1dad6cdfc1b5afe664ddfd0fc03cfecd8020e912525eac87aeed8420e510a3d4fc3376c7103372821e5e69f34f33593861a65464343434359761a63c5b20c7bf65d360709958f749399e5948b4e31dca029a558c7a129d40009dd096afad674bcb0212920198a020e9e6c580e99c9841b9ac21030f0c9d0149068ade3d0149684c123b68e846198a98a9cecefb4b4c23e5bd0d3888e6a855921b2e96d14e02568b95e7a7a3e67511816a2304c66da6b88caae69160542a9d25bf5b8b4af662f7df6a3c551c7212978d104e83824052978470fcc628f590e60161f08b3c026d41f3c8365008b1b94d15a2824c46c14dbb160024977d2d3b050ca6ac409b549fc4663043016559e8bf049e3fd9bb96c264d1749a5aa6924abfab673dcb16cfb70a28833860f1ea162dfe443213e1fdbb9679f0f2211b3d56a138c72018922f3f9e040874d73aecfd6d6430b2ebaf135650aad21292c995f920bc3eed3dde55dd827f6ebf2baccbb402abcec011efd402a3c6f8b3ab4f33b4dbba6bd8b7232cdb0cff3a0731a8149f31c521fec8348cf9e39d3561903238040808109424d0d2884ac93efb8b00877f05d58c409100e7c11eef440b8533ef74dfe7b778f6dad33263be960bc31c22c4fd5b3bcbec7099095f3b34b79d281c893484054076d0f7895fd91bab43d32a9b3d894ed91b6b2edf98cc9be62392fec7102c4c92a02f4dc81d073b6c7c9f69e0ec8fc677be4cf8cc9a4ed6c0f111cdb1ed9fae14bdbc3b6474adbd3bdc77b49c644843ac916eaf1469e1e6fe46da6168d7a9cfc38d91e79437abd292c85459c00e9ac042a7232aad9495606cd982cfb490bb6488f1309c49beb5891ebf1e6ca2052480f86f35c186fa2d062308ad50fec128837d8839037d7234c36397392f54565493acbb2962e3a1b834913b0099d50a8014e9165d950147e3acb32508aa12c9ee8ade350165a4061a45d36605e541f9222c650166c008b906157a992f0b23ddbec8f0ccbb2293ad33acb80804eea8d443f7e08a1a234e9acb33fead0402742aa1c1c23f302230f06d51b8984f84113e9cdd771288a0e9ad471280a92be324655bac833dc96490bfefbf5d2b5f06a4f1d0b2fea177bfd16deeda773e145d9db638428695043a974222e5dfadd01edb571181818d4efe9742234faf4cb3d95fa89056e1043166ef8be0ff47e5b7ee3c68d532a954aad80075768c10c2008aefca60e030303733a9d98590548c4a10a1c6cfcc6cbcb4badb508312c3172a4c2ac56ab52a954c40fa0384a5252994c26958b8b4b16e5064368582191482b2a950a04c18c491390180334799eb7b2b2c2ccd81549f8c21ad86432d55a2f2fd690648bfa19bf36482452a954a26df8828b28943ee3b7a5468d1a9ee77ddf27e5a80923a452a994bddf67fca668d0a071e3c68d19f64e1f38e10d47001ffece788dff303030cccc4a80620c2df8e16f8dd3b061c346ad350d5d283a924aa51efed2f8437be51496700113f28820081db1b0b0f800413103122814aac89330903079412205a226562f2f2fa552a9670953f4a0072597d56af57d5f8f124360e2e853b9b8b88020b80221326821057045a55231f30a6e50a50a50b0696565a5d6aa8225a46801895a2a958aa0810c941842c9239148dff76546687283257c373cef445ada0341106b0204317001befcc2dcb8718399af268c72b004af7e6dc0c0c0d45a2919a6e04219d5e5b7c5860d1b7c248613a09454bfa996961369e996effb98095edc00896fe59725954a49289858610cffa571d4cbcbcbafe917c5c2c2c2cc334018aac29df1d36ab5fa25fd9e50a813696954adb5881327789045fd7f6bfcc5c5e54448ed624fa7d3ededa1a2858335d4b8ce4e8dd25f7e697ca552a97e6ffc86d69e484bdb177b5900873054c982c6757668bcc667ac7e67dc656565e517e6f76118aeec65410bc916526ad4a8f1bb33e33a3b334ee3355c7e5fae32994cbf367e6bfc77b17705576481e40c3468d0f8dd79b9cececb679c86ea77f5151289f4dbf24ba3468d1a2ab8e20d3cb0c28c19337e7756d7d959fde533567e5d6ef23cef37f53b83060d1a2bf6665488c1065b787979f9dd71b9ce8ecb577f31fdaa4eba71e3c62fcbefcb8c19334cf65e6170c215bc58ad56bf3baaebeca8eef215e977e51e0c0ccc2fea77f5f2f242b2975ec10a3008828b8bcbefceca757656aeba8bf76bfa0d1b364e84d4365c56ab95672fa38149111a542ad5ef8ee93a3ba6af5c652fffc62fe9302d2d2dbff657e5e272222ded72c35e062ac213b458593911975ef9dd215d678774eb617ebddb48a552bfe1ef8a4a75222dad82b137ce2189250c994c27e2d2a6df1def3a3bf6966ee3f7c65b5858587eff6b5a593991965eb161af117278430d92209148bf3b37aeb373e3de49304fa150a8df1abf2493e9445ada640493335ce10acf3b1197f67e7760aeb303f31bf7ec059ffab571167b7786707dfa0e91af4f2742ead32f8d5fef3b436693be43046cd289b43489997b90a0e10b326edc381197bef1bb63e33a37587e5b8e42a15028db830abc703483286060607e775aaeb3d3721b87b1b7a67eaa892c5944127000630e366cd8f8dd495d6727f596dbb0b774d42fcb6d8ec892d90ddea004325a5a5a526fb1f70b4fa7d3c9ca3499220e4f48a552297bc1ebc0500cc9a0095c83556b95496680841654d469c044962c22e444174a4a331e59f2fbbe1514a581095d7c2c7f79a9673e0882a00a6c30072498b05c6787057c8baaf47a9d9dd2eb9999af2db0e8411a50d7d9419de52dbfa7bba452a99445e97c2f5d67a7d66a6f8bbd330a5c30c205161696df9dd375764e479dc55eeea95f150b0b0b8bad15fc779d1df0df4ba5d289d0e8921153c802153e40a150bf3bf53a3bf5a7a3ecdd8efa5d29954a25eb617cf03a3b7cf0dff77df6a2ec65c1108e70c316a7d3e97707ab3fd9abbdf46bfabeefb3dac57c10044f844683f696eccd60d00518d8a06b3d1197aebf3bd77576b0ecdf2fc98220781e5583964696d4e1be5d67e7cc2742a3d9decf5e9aa4c91794f4f5ec0ebd0ef69d1d225963df21b2d2d889b834f6f9bb43846bee3b444ecd9d088de6bea3b35dbb0ef79deddae5c11e63f4b12117d085ec7186cb1a638c31c618638c56e8a2e4417694de3585c460c9c395e7a17db95f1eadb5f3d0ce76c82a2d2573dce49e6532cb696c452fc93d3db9ebabedfa2abbbe9a17a5f409482e1f9bc4e2d0c5ae075244af6258966159966558769d669ec4b22ceb1e56462f7887a951efe2b0ef72cf899eb651cee928e5b85f14a51475d43a590f31adb0d0cfabc08e44f2a9a20655fafa54d16af5ce0c6a7566854869353d6739a28aea49a5d53ab34a95be51a8d5d4a6e40e13257798077910d9a0ad7c2890896c54d4c17d6659584d28ca9dbc2c047b502f8aa5e7b16f47f422a2302e9cbd824a71a356a20e21b2d5b5d59cfc5692c3a4a4e1d54eb56ee3beba3889d1487d64d99013ca68f901e153c54fab777cac086a3507a5d5f4f1db31835a4dadcea4d26ace829edc611ee44195b58a2ec539b10d8b258f9bd4d9bd4a29c76901d20bc44010cc400d04c10dec400ef4808077037db57bd7aed321212fda3b6551518e5e9b1495e3b00dc330ecca78865ed7bdd36bdd29b33889cabd3be7743ebcd3772d5eedec1ecf70cf2e76ce666638f7a2e1aabb348d721488a9755e74f7cb9d86ddbb2cd3b8c788e3c621a132badb6e63c84d9955c30ddd9cd35ea9493e3299e76429a5bc9899324f4bd94793bc84154d9aa0a4a3a909ad2a8cbc0a286f9655b017cd3f0cfdecd53cedd9310ebd9a96023e37d8e31013dcd071880964f41785ca3a2256a18259265c569b0388e137875aa485e6e42cba0826a9323293860b3d8fd2c2e8b885a64b20a1b363f3ab5e35d556df269f32e9f9ec49cf6b58f43c0da3b763484072042d3413b89867cf9be1753de0faf4b48b1dfbc106c398857d3bf7755354ae73b86b67e6b86befbaafc7fc257f62f4bc836236fb24702a7430042c80c18421a09b1863b61ced9ab7612de4b66dbb037cacc0d9b2dbf0a5daddeefcb6b516e670ffdea142caa4b9af7cd073a7f6d65fe79234f8d293068f1d018be64ebf3067e51fb699ee9dd25f2f7dfb76d067f559b8f2514f5f4fed2ad5f147df615e06e6d47fdaf6ee587825101cceb5c50f08f0985da5ecaa07eaf5a8d7d7fb5ca721788f65b2842ba18a155e9f36d99a70e5037c3df86a51218ccd016d0f4634f5696ab3cf013e56f0f8751beee922466c3e3d3fe6baf3602d44c787f6b29ed64ef28a6c567467446bdcf569cddeeb99e6c9845f5452b78e434a306a0b46218b9e18e93854042a341d878a20d4b16a094d9a5b0bcd979934361cc3076d506fd4a27908070089434568d27c12642088cd0fac2a6a6f480964b4a743336883ea01754a90f2d27148095228a10925c8200963d0a1e350129690a3e350125e3004650d0be83804e508507400e5081c40313c232b80584c7172820a2502aafca8044c98099b1c656c4644000020002315002030100c874422a158388e4369b40714800e9ca64866461b895190c49831c6180344000060404400c02068021eb7ade82e04d6ed9c6cf2d286ce97a7b5d9ee358d4d94eab2c823d00d514a005f8e9d0b980f7408bdd2afe55cdea7b1c12411bbcf57ba1c6282079e30d91b1fb50b52f347d25d64c259de7ef63b585feecc4a6cefc108457d764365c889bb48c6b429d286838837bab7a6e56892a6d950941b8060a5c599d782e8b35d30228136ef6799c35d10e819621d6ed95d15b8d15553746129dcf2a28e66fa0e60f84f03364fb4453c97623cca13667ae91e9a4605be65a034ac700b06cb024d64b0f99b374e13d2b3e1206917e911f5919a1259909b91f98c4b3fdae8e3bb5802e8dea58531d809c15690338daa6249c8a5e4dbf3116979b4950218e7d7328681adf75ee594666e47ad2ac9926ed7af7101d6aeed6a6ee4a028f02e3a519e4941784035d2536505133d9d85cb049bf8cfa0b9374103a8b1a240af0080ed0932618c4114c00452d61386679ae085f813205763bf200c944db46aa62b2b1d91a65e9b9504f43b3d66e531f466d060632fd580634fe9a1daeb81509a5e69cf5306a91ea279dd91fc34c7ff4d9407848a3e854eb5bfef01ec474104b551fefa64214dd1e7adac1fb02da0899538495d3d4832049b2ab7c010028f32b8896f152a4eed90a8aab99ce91a539dba0f15616d269c1375f551c26fcee1442995e9bc06f0a92758225a86246e705e0203f315c768e833665da8cfd2b770bb44c5f9be7048ff0c0aed0c22964183a55e3fae7d9dbb0136b55e6e0006a26564dd4b3824d7ab6f3710ddf7af4d0ee7bf805b417d5c6426644d860346ab27befe0488a500c925874ae6839cd3263b2fc4ae551ccd0745744811ac4090c10a74375d2768138d19cbb04a34c49213787cd0fe2530d64af8df07a1d6a0e305590a56900fbaa2f24ccb83e1c932c46c1d37503fbef9e3c5b02a7205e76eaa23da6d366e7a482976ae7d151d85ec827603d0377adf96cb713e3a2c5eb570d8ba7e647381b34ca0f88caf74d4bb1d19f7d4bae7e14c421407e01191d50b9835aff109431277242a85369243e1242ab9570c0a24640693960f9213be0ec7eb8b196882736e10b71e289caec7f03710446532f03baedcf0c313473c66411faa14b010e99041428d3c4998adce0924b00d86c793c89f2fcbf94921b21eb74102b3e39aec3219759147f3747d421be01410cff301e9ff2947c1ac333c07566430d6ceecb0ed846dead96db3866137061ce6aae83d302bc0cb8e5f6c0cde3048dd28e8986da7ca3c7705c8b027423cfb2df41ee5f7548a8db26bd4d098808702924ccb3902da4463ebd81a727f1c51a1d6b35d1ce3bafb73ac45a2d83a13124479e19d24c116d7fe1213ba28cfa1d5dfc77bd428f1b0526274719b62fcc89aa860567239b8c4feca71dd18ea90c9dfd2380b6a614c3713cde58fb60986cef38b7b3606f87bb564f75f54adb2ace71c69bf6565989243c11e5ca85630c5e5fbdc8594c9602e27544d85a5d287598b7a4fd202887db4fc3f9a407efae334dfb7adb23c90d0c447b1fb82c92ab4f9eee3cddca20253111ea8f061964b108985fbdcfca42eb5c72e6f5fb4526b93b0b9a64725bb24d9192968b42be7e76489033f110863dde6c6d787772843daa2f07f63130948f97750af5e7b2d41699ba60d2cfc0c4ac7315e6bb9a32009801b4d7ac7e4df72571acabf98a37ccaf8be86a539c880f1dcad4de0c9bd9a925ad4710339d3de62245bb829aa7a5579d9fbc2ec30bf77b75281a4d8be665876a3ecdbcf2a3d5972c5e58e5ed1264affad0fef1e945c01564ef03d3827a36461696a5a5cde5edad12e87ffb8ca515d2fbb1c13c11db5a00cb4e17196ee54a3a50ce84b29815dd9bffd3be065e7cecfda9168b99660c68304a3b727dfdb3bbd2a17bb72512ce6ed357a88a884d246e41601d9daee762566adc3b3413a57eb2996ff86eb1f597e9088b6d5084138d9af0ee816d7e551b2eb8259fd11d94ff233159fb014c525111e072b39a067f44a89f1bd0a935e6a44f61753ffc5fb49580da907c4ea3f501f9e95d9df17ed1bfef4527860ee29f94da46a273f04753a993a250d3d3a9d777bd3ec07f52a029d9f4bcc50cb420ca868f88be270a9b0f540069ad29900f1e3aec21591d5062ede7bb9fa2dba26bb57e95fb70d84775af841c1b05e733d1972e77a52b2e7b89ec1f519a0a1b01d7b7df12dfbdffe7ecfa101887fd915f9b12c3488b298d715f728e2cbc0c8238b3e5bc3b4e681bb5fafacf380d0f2b5e6f464ec79be2bdaaf4bfa559ae1b703e1082b82aed0bac7b14b164c1be12301f358026e22ebec8fb256ab5e5ddab769dfb2d4633dd891b198084eb2b7f166ffafa395f0322de0952faf58c2e6a8169da1ba3784a3f9725b30ff8cf40727a23e80c1bc7d12991496decfb3482159edb556b084cae3468e310b66f1b404f4e38a95a5059d564c5a661785a099f587e6ca163a7ffb49e8ba0274759ecda967fad399a13506f6bd44a98e2c7e6ff43eb851572a0f8318bb439fbb122fcd8aad1c5be3a6f352f6f98dfc5c2a61b55b7a10714eb1e7a59466b73484480190b0d740da82871b02babd2de0402d8a6d0157d9f75c0a6f15fbcec415ee4c90306234f8c538e2bb5b40eead4e0640fdc9d0790a19fef8770158fdcdfca606ec1ead92ca90949875a42bef6a209f44ae64128e9a4f09ca4f0201ade758edb37d035fae64f680e148334b69ad60f68b57eed16e20a7fa5246448f9249573263da02c0ec05e6cead4c0ce951b7d3d20c9765ae3435a836f679b1d29c705228898300407dd01fc78b82ba768dc26cf801d2d57a3bb665c0a8ce5088731125670d0df7f55fc8ffb545e9c869388f708eae7d090c849e9aada14095b240dad88f6fc05533a869c1c0195c76bfeadfad4b7a87ee64acea88fc9ac7b3fa2ca93682a102a5b67e8429d959c5db7e921d8c586f024ec6de1a16d0a06ba5dd31d8ec475878b177d7da8b991af0c42eaa1dc980cc6085d274cede68407a761a236dab864ce274f1e30574b2bc7b44213bbb53fa5754a35b7d169dc2ae40e9768eb3b7a897856ab4aba5ddad131dc147c9b5732426804ede2eba3735bc05b9b06bc7dd4d23e19c0fbdc9ee95e86c367a4a2413c021a9c663f2f1b3c8d261bb6757fc6e6cd400246e3f8e88ae723bfbe9f6de1e4d4ce26cccc7c105919c45badb34bb985deacb834733c9d123f95994f45c0992814ea5cebe48bf8f004613c5c43e920b62e8d983c08753340bd861212f306cc575217744c1313bd7fbad104dbab4c9f3b371ec662ab03ded1a46f1be492c418feccfa0b7a337bbe936dbd2a017a347f6c237d21687f3e80d7d2dbee70dfadebcd097bd2c202ca901c4d8724f593a6cb7eccc8766590d20cc867b90d161bbc80e3e6c966a3066f6bd878c0edb55767243b350033073dd3d64e9b0ddb2131b9a45358831daee494687edc82ea0a114075e01ae46c27bf6d311bb650f3e940b6a2435e7deb39f8ed82d7b0683770f126566ece976f3a47b5f41f61a9819a6e656f97659fde99e5d943d37fafca7b9d9fe11707fba6717b2e78d32ff6869a29bf357909d66fe5cb0b54f4b62c72fc8e7b01d969de1b53f3ca6dd73f63486ea0d8e224f373f70f796fe029b0e36b8d5bf45c32f43f99ed518e66c5df3f56e946eaef1ed679c8bb64c9f48f8688889800eddd8943cf8a8edf002f13043ec830eb97368fff43cb7ba2b8859bb3e532fb683593b0189e53eaed7ca8b6b68daae5732d5796fd8fc1e6b4a9c956f414181e33eaecfd48bed60d64e4062b98febb5f2e21a9ab6131039f7e1fa8cabd5e806b2577d2586991a05c77db61fc6bd21f3f591fd19d486997ffdafd4b0f791b09e94efd612c9a0036679eb3df2a7b9e9a166ca6f2d718d98b5bf0e431eba4ceccca725362f023a9ac28f7eb33060e1cd686100d1a44033d348c346c10298a1d8a258a069379b2852c716eb1d31707de967f754f5eec4c266091ea76f18d74e36576902409b9cf45ae63a0d03111b852fbfad55342a764b5fb1abbe6e0d3e90a7d98b21bd2fb7178d6b44bc855862327ff1da8f9e0889cf9380b4a7d8747639a24a5fb31c9c051c02a8b3a479765dac59db94f6e7d34ebc2f79d8300fe1b714699c934a0f0fcac294b032e8749df79a8d59b335d0b8502666829521b9976e532bd505ee02bb7316520f8bee8e5140c1faff3cccf6c4af157884de5ba4ba61a1954b461502082e26a022057056841708b1f2f336f76e56b47dd36dcdb7ac6ba9a2e0c143ea9f9135ca6561d88b42400e7697e4df056b4e30e3c85de83a1b5d8b14ce644d587d4ed8e8d985607180f5defc86473558ee6acf99c5aec2f9c2e2e7cae0e0c62a288c24b238dce776c626dca5c42839a2f13c00ab87bbcd23502b8c9a45265e5bafce9139cc0a9b8c544adc0e5c11e73e07b54ebc221c160e5d7ad1b8327d831de4865c080bd00741c60cdd10900504644cbc88895e7e496d6ba347f086ad8fba81d2c012e50f8e0484815da795d98b24481bef6e1eb825d35e0e1aecb9a3ed457a03355fd4759e6110faedb1428bfa654e644dcbcfb1d0367509a9f29ba6334f24ef2e28994cc54079c3f88226db673297605f33f78ab6a7addce901763ff8b2ef815ac8c83bef550511e0359c99e9a8d87aee6d83540afffedda14f9d7a7b175d22c9a9f723afa3e24f237405115ddf747f3d94b6927c80cdaaacd11e02919a02571c3ae273fbd644c8f4820c72496bb17be455ae8b52d3750787c8f8e5d6aa572531ce06853b2742ec69d2907880559b90c42a330c245d60720c385fa536c387d6335ebe7f64f3a37dca6749de8ff433b5b0fe2da4770be8d142fab5901eafcd7265e0f8162c71d99d14df5923de1580783e0222a2f6caa6728cb39fbc1723e64919d2144cf10d337e0e855d48bdfcc8c8ca6699e62a894be82cbc8ce8831253540ea861054616b4fe37ede4a7bb2f9fe730a8e1b422227a3b280e6ef00dd0814fa4af83f59163eca281450a185720c642ffca0f8c7f6c19a0f5cf06756da7d5a0102f5af3414530c9925cb51273cecced97a4ba809a99a6ae2c6b58fe3e9cc8702960b708030c67e8997f91e9fa7b569b320c76a25ee8a5987572aa094a2a7570e34cab62a1cd7a3af2aa2c8ef76a26a1cdb1d0ba7bc8584068761f12fe260cf5f3c37b90eb6815a02e808095eb68bf9468baae9376d04e0dc396a0530ceb79a89f9618235e4c45797a9d42f5c6480b71a85de4eb0df977390a7f874108f307cd24b84948acb3607e3449bab2da6601e0782493b99488d29b7b08f217d417e6c204f0a9a1bf289714bd5b85696b40da99d630243c6961d5811bd28977289b1951e58cad9a161e34d985776607642cd8770d7d07951aaa7c5f9acc0ae31aab9068c0af9480c20a8af8d0566247fdc3e776f00eea3353f4eb1d14f76e01d3ad6302038f1a2a094e3e9dcc3d1f7d54ff8fdae90e0984cfeb8681d722ba18f08a6be3006afc6e1e6910780f755223bb8f40a9f3fb91b02d70c1a888a94beb0197340ed992aa976f27043083fa3166c48963c5cb2a23b9621a34b56aef688afb253886ae7bd18c5b3efc900b8d50c68fd2718b5140620634bdf9666c1b1f9a6175106ee2ac441d7279e1150732b2618ea752e4fec836f0f553229b8de3371096cc4da4f96433f664e4c8f4a2271fa9f7af29943ef754869808b87e69c200372eefbc42a9df14d43954594f3a1342a80b6b7264295178dd1e04112c47e34b7d7cbfa3942ecaa2a462de48e33147c8a88cd0d31a463c4709a9ff155785a41d9613ae63a60cdd3824ca920aebbf3d504760e638ecdcc0571f7b59b095e2c75a50db2c4f8cef6177d1fd2d4c779d049dd19925c0118c21717a690a59d26ffb3c40317d2096c646e13b7a054bc076fac1f03d30f6fed4d4a97d8890c5b261d98ab804918b38190e7c9cc6e43c049c2d824443387074403a5772adfb403a0593e1bead0d7b78fba860b9b4010d270bd25c97dc943b97ebef103e23776276ee7a32b980c0a10034b7bae7524434a3a05f9c9b460e5a5d12eed4e667dd558c53755a596512b53422af53c4c272c9161f791843add457efa63d7e6a9dd7ef1b1a637e90e0de553b287fbcc7bd2c4ca05e2ae3aadbad4c7bb7f40a07dc8869968b250088df8cf1844b95d45a043fb62988806eb5a216a9539f4aad34d62887559f3032b64c082f1a0063e7a3e76f7ca2fed54fdfcbad748ce2077062a0741af596ab84a17e765b305e015aa792e31a399d39b12172eba38ead557c348b7e89d31c9f00888e3a5b3dfeeade5e6e362b0c5ac326eb0d77f7bc0d88b25aad47e093e4491239d2bd59510f325c2ad1d9d622c26e2c26d525d596282133d80b63343f839dd0e454ffcb39b55cbbaf02c998a214cc35451d3501fd181d891ff0223c57bb3f1dee8161229608e7ffe9b2c3d50be420a24de1dabf82847ff339ee63df472e88c6e2306268e35663739aa46fafe607dd27105b479b243f78f36972a4607ea21176f2497abc2cb38eba179910389e56c3ccedb249657303b7c220778d1f3cc00dd8ef9f3d14cf7a44da33e243054396f046acb4b94009a4cd6674a78d79e63fe44118cc2a3c982276c7c74c027cd3701a0ece9019508b37931780f3470f2570a0ae60b784488c08053af4916f3b18ea1d72fe1a953cd54af10e7051c368828b3b55cceaae6419d745dc931e6ab957b5ab70cf27d9af1f47159e792b3110efd59583eb83b73b26e126bdaec6ac0cd0c6189b2fec1fd39544731f9156177c21180d5d013b4f5524298edff97c98c4106178c6f254cd93ff4974e55ce591ed56395e5f80b9ff5632af8f81bcaed6248542b86d03e01171934348c0a385be78a0855b19d3da96f5b2d16fd9353f5b887f50c8e72590b6a6a552df2bb4419201d24a4dd4d12c44379e244b61fbbae00cb22285ac1e11210e6c006c13c438b60e99d503e34fe0a926adbed249cf805034d26721de4801a206f3b47ab0fea2a836fa77d0a9e8f05f51c1fc5b7496721a82837e1946e5a828eb88b8ebba029b1aa87e397dd0a5ac04b944141307137aaa50db424a1fa603642bae8e77bcd4722032a087f1efb4631289653fd2c54ea4306a535c5c066da0b930a57ca86d9f601d157cd66b99c4fe2dfc846786feff60467c4375ffc28b80ff6186d98211f16d2354580e3e2411078113c34cfa030a4a98a128a7a96423c1f521165f3c1bb3e40ee53eeee570666c15ac1f55548e8e37762b494ac26d58648d15dee19b762a76b1068b3e8d12a817c41bd883530ab153f530fd7dc8b03b05d28d63a513c886591eb755aabdd1a8641e461d3b85f51f8611fe9da226d4fba25b82ce6297573eae1b129f09314ba557eb59c36a44f73ea652472ff73475176281331eb912e0db540a04b037dd50076789539b7f48f21cb5307b7b6d4a744ffe74a450785b5b31c99143d9cf01d7708929b8584c7bf8ccff231285971a91e49f1ec59150700fa15adc9f37715f84c398438402648810057f0306af30e22dbb0ac5858af5d476ba84e2d4d1e0557080f1eae5049e3be4c6e8dc98a89967dea4f5e83486daf81b9d6eada2b2a644a2c281329fe36fe513f0deda3229bd2aef4406498be028d19eef74fa2196b3ad6004e7aadaee4a8ed74a8003e735ad197992acade992cc255c226770ca191dde0df9c50d2013dccc209fdb26652a2be889e809e155ad26efb6bbbe7a88be798d69e8f20afa10022f115f8adace6dcf392f74315b2d528c5b87458a3f7b7f91ebde9546ff6dd8d79c1ac0c8d4bd5463f27a37e966c6fdc64bf360a1c728cb2018f458496ca1492f9c2ee1c134bae5713b6a1b892dd903cd0c82eb553a2ca3bee77e117fecc80ecbf5cea11930a5c619ab0a6a0111afdc0059725a48040393ec28951f8aa2215f8cbe087f53b1fdfde1d9fb686df5a6e71434989dfd88a4da59a0a9cf89d6bd1ec5307bc2dba31a95cb4a031c4bb6751e53635e2a7d19c833e1018722ac6d596d074ceb0ece0946601088da3e1e78dcadc11908a9ad319874bfd674510d0e531e09ba42f4e86b64ca5847c4fe474fecb00ed33d1dde1583f7f699dab865614c201ba734a5dd353f1be7e21ab143e5c77dff56fd01f1a691f4207fe84308e8bc6689f21a161ebc76434b61970f361f30cdc3165020dd001dbb676dff39d20e741b3da077ce896d75687498c11eb9a279942893c82b18b6e61a3e831ee9acc44b082efcd2026ea4db59ff7475f801a27434af8b24fd6959a5ec117862b5dd91539fb0d696de2c3101472ddf1618c3e2fe02f11966cade1d4fc76fb3ab1b6878b6e788dc62d7b4b49cd56728bee266f88d6e0892460dc20fc9915818da805d2e8e3fe1ec049f98e8e6b44a63e41038c7132c8a9b1d7e8894a6074b20db0fe641e641b24de4a9aa461ee29e165e1cb1a23f2ac31f958b2c2c3337336f3a03aee2c2ddacc3617d2a2cbc0f6e8718c327713f4110395166b3835211c6dde88efd88474afc588356e216d3045e95224a9f40001843ba8fb8a14ea48b8040bcf5d3a0dc98389f5623d4804d1c2324142a4b3076818adb121c26ba4b1556e2f74230da61d393491351993789495446a809b13f4e6659db0dfb9f0bd599cdf46a9e4b58fe4ee134415eb3939c2e9e373768a0c0990edf6e8ea84d87eb5eefbfc9a74ecc01978fd9c82cb57f76e80c8fc021cf537e140dd3ad3d6863f3d701c1905bb6433271713a08655840c12e6415d73b80d667fa2d27ab173666495fae0f16a075bb0d101a49e4e6cbf6a7de0ab443ed8246afa3a361b356148809f1b8e63d8812231b69421641d524f12e29b8f8e2fd87392602ba1e5c6be9c00f415c38c5f036f3e90e31337ee3bf8faa99fda236b477636e522713328d4cdc7e4c2afd61f4301dd45dfee6b58aea6da3b98d9b44bb9e43f476ab5b3d7adb4f24c07761293c8efec5c6a0293c4c7a349b8e1f15c47c77b4af95812b9aa3217c64ba761e1bb6e929321f54724ea8abdfc6bfa6b3dbb5d12c20bd007a01bddeea213544598546d2be52d459f057a43a6e40460850d4b787ea09c0e0f85e3e7b01eb1dd63359fc96249ac0eff0595cf01360303d9cc8482b617a8c0c4a2c718ac920421d91225938da8392c245fe22bc5f9863c85427bb4c08f114994f5dd8b0410a432c675874401dc19e6397735d09a519fc9d91516190fa2b6a9a0810ae93943c7845145a28be9521471a429d498bbecafe635fc32faeb63daba3306338cb9a9ec904a5bca9f452fec4b2492908b5d0e80dae1ca9b5748bdb93a0364ffa80575387620e814034a2b6a4e70c6ba13d4a6b91f516e860bc51cd69c0c2b081933b7bc881f7d5dd96b808b3bfe7e9e4745b9fc32e03e27e8c27a9dc44ef143d8ca569b411cf7ef8564c08adf51dcfc89c1d3dc1baa1742c5df9e32570c3632bf99f94d9319993e5a1bd506772e431a378a9d27db7049aca71aa3394e6cccdcf1f353f1e6b4c4af6beebaa7393b1778465bb8d6e3b93f921c4a5c780b3afb1608f3183a29aab2cb4717d009e7cd122484b4066ca4e44533fdbd7d832c2deafb186ecb60e5cae422be12b6decfa1444ba2a80e1974d0d7f388927054dcb44a37dd643cf20e1ae2d20fe34874f2d130b627a716224946d9f778d9a93e6e517b6b12d35736a057bd6b355c6a7409f1b592cbfa4a6b73037e45c382197cb31459f638466b6769275c9b5b85ed1715fbf5b4f5ff312fc7999e945f2cf68aab6753f6f2c008dec7e6a6fb447bedc9b7211e181773e5483e75c9cef87e5eea4f18d723f2e62974bf8246d14d10e364948aa41c4e421e4fbf965c16222f2da8ee3cce8742023f28832bb51f9f892023e126e3f3dfea95c4d2b1d8b3fb392436f4d9ed084848f379ef918a61393d091effbb9b671eda0ef1ea77e370d630b9bd72020df1342330550501a3117f2f748d2fa66871ee08c35fd3c916015ae874632a75963689dd182570ac31ed4727cff004cc797ae62f93c298161ca8b2703f7282e8bfda0d11f3518fef193f6ce8f9229643d426a28b50a62061f69af509f1301853f9a084651b379fc7816c309ac7ff36b64a53807ab86d126c12ec2c2de3a9ea3c2bf36e2544e6a38d6ed36b24f02fac0c6d8c2991dd949b38c4b92fa5ad2c33108437fd2933f96d8d2d933aedd7365c9ac43b8c3477f81a3cecff6da2fdc0ea3a92730e5030c7cd56ed174e87da7a33d65a57a946a582a517e42ce14bcfad917e1217391367d5663d467666b010f9f06f24ed3a9b2c6503d66133ccd930185fcc963a3ab68340b6dd68da821d39cdb65504c119d13a3a0a01fc7d6c22c5b553cb5622e937c79d3d54acd8406c7f3117ccaf54288e9b4bc6740f94b6001a746a02792c44f75fef2cb0a0e2b75462a6192d8971b618bc40d0cb94cca1f0f7d0158eecbcd4446efe49cf66cb7be91e7e6d26afeab818aaa9a22a685267328a7c4f318404043c6da7ff091131dd81e7c13741148b4cea34f882e068b64fa1c04d4dfe87191a4284938856880a013398630b879249d7214a9cc7b2528b73881a4d736da852791add00db70086579fd4ff6d8ba9e776fe3d3d48097543d398342464d856a93ee9515ae7412f51879a7b6521e6319ae63fdb7af0ff595f55a1225e19f6db780aa8e26519b9c945a20b31e31884ebaed1fbb32f38ed826395705968f398e0445c380704915de499b0ad2232836836146062f73e6518cc3439576b732384aaca4b44a343c3d7afd407af0afa1976adb082ea1ea2365ad0e6da1ecbca627fb79337c2844673c517afdd718e161fc5d0c4abadf3b9c33cc507f107881107f9ec2d5bbe1779bbedbc6c6000b0867e4c0a08a009264f1c600b2a296ea431dc44f10c7fe0d8730384d94d4444371737ab70e8f5d20a76a669589974d2cd6794ffd1a768740f9596960539c3b9c0273da2102cd1e35efff4abe8d78f050bbeec5876e2e533ad6974ecad7f5ef56a20ec486309f99102c2416f5b5eff07e9700a95c2442b260a2a0d0d0bb06a211543f298b3ebaa9e0f8b21f2e52a55c6c978d1dfa7296014ce9b1c85347cc79ef15a6ee1b88e320d647952d2dada3ec5c6ba5184856d181799dfbbe19de6342e8a9ad4462fa1d4712d69f42686efd8095ac3637bba9e68727a33881345ffce24c3194b1ea2c777c61c59e398d1a740ec31480d87ef10ce01e3c91bea71d7e78dcf5866db057a002bce210005c57924dc42ad1d2642513ce7534b68a98d0005ae9d6ca62f51307e148b5bfe519b08a70292c67ce3de981e9fd5d59f31b557c863c79aef8c13f9a441b1b04bfa8b9b2ea7a5b9f7b28d88c0fd62e1a0b387fec070cfedec704c961c0f82317b209bd3c2a1c956e03d31957d7a02c1531b1a1e93ebb1441237ac0b81ec98616d77ba6664c09c45d0cec4abbffad8b352c239739318e2878fd35d561b8480d6b53e8c676a880d89f24659d52a051a09bbbc363d091367a11a095ae6fda07db7e291eee383a7676e9ac8ec0d84d76b77561f687027c28ae14334c7b08380831143ca2a9d2f035ca62ac195cc58a55ca5fce71141ef99769e099925f5c06e8eb935f3aaf3404b96d2900790592290b210d3d97728beff0e52e22ae625985c9a45badff4736da31c17bec56930ce9e88f1a14b0cfff6deec22652a7ad978e00bb9b744565f51f1309c06e67a23c9c2fa6c28b5f9d8dfb687d6b368da0210b05b3ba5fb6e35d1bcba3a5df099eeee5ec3eb046b96b80dc898f81a302987e5ce3a8c0d947960b74c792bc62acb546d6ac7f0386b6e206b74cde88f350c01042cfa31fd059b97b9cadb640385ab51d501b531613542b0216ac21310a7fdf1464d1d7fe069d7d4d149f338e3f54cd794d043199f0176ae4fcd6e16dd1b506a52ef6b86111c267274aac9e83976ca4592fe08ae1dcd9b4638c3d2b9dc9cbc02d5ceca164a361f140c1321bf526e64f6cebeea26359df74108dfe558c01b88122f2efaac9cd4eceeffcc721971d7a9c97006decc55201e8e78e10c5c2c60c39ef628cbfc1dbd262d72ac36cb18cc53229a6946a2692ac0d82ba2425eef6f33b159a539731ee7a256122570b07025bb3d3bbd036ba9ce0838ec745a46fb30a1fdb54e51aa566f88c850e4d6cb86b8e0bc3a5a2259b91dad802f11e6ac1d9e5ff60127227028fc28a881c96f5c128b64e8a62e6243719548a881ecffc972cef43b585e8330eb362ca5a5c7c1c9fa1a253b83358813e5542d46d496c3ea3cba5d3646e550918ab94194b192ce30aba97817e39308b1525dc94d7601dda1720d25284c746c59502c07094b120ba7974f016672b5ec9e99fec12aa394878f8ff3e45d7122ecf9c7e9313f482d31e672f0c3ce80fec513c15e0c4c1532e1866a48297bc768c131a26d00bd24080ef96398e3311aa3ca55c86c3dafce31becbff630f8999645d0e1df305ccc806c03d5de29ed9697f34f6907bd72010df7a910164753611fb8640a862e2758979e78cfe6d5a6780fccf0dc1e902cc31f0961c7b486f55720911b7a00ea9c2e22edbb2ae791df05faa7b90077deacd7c73c5a08523035f95a207cb8b41e6203316058953a779576cb2405110f9bb200500a9ab5891f1e2768200564a0c21fb02a62de3c25383155faba2631059274cb025148018ecfac18328dc7204a770d909a0e18f71d6953e3c72d94521f250201e24abeef4262b47d03db01e3ed9ca99d7578aadf58188b557762d4df7400b090553a028f0bc38f614d98f3b0cf3d76a9579e891253ce30f51d1550b3c625e9aeb0338b880bcac89df07d9e5fd89e864519361ee6f5f6577627cf8e0725b4f5624ffb5357ac6b321503ca49052302628ec40a854517cef097835bbe2c860658ee8b5db1b83b12e543d2b458bdf5e38cae6b33a587c33d166cedaa55d257ada9596b7f9b410c327ce48ea1086b3d391af0213739d6d43cef31c87c54a65e56121d32ac39cb8cd483ad8ff1ed279756e0cabefb4e618dba62133c8a9d445a1fc7b56f7ade3b780e2011bf7d1305a89211a15dfdcc1b6c25329124f0572fa2c280f3312124000054855ae9ba6ff51d4a4d03e5ff0e0fca3143934d33b7e8c85810693b3aa065d2a8130a2b887da9d64f6d534c16a4a85ea7c77c3de45f907e5b975c5962500860b199277005e702462463be295f29eaf9f31f6ae646784edced7cfd2607ca781e21a383212cff4deff7989f7b940a0c69c2072b2c1ad9e5f9f9cdf7c0a6ef861fcb6f0b83bae9b0bb8212cc6d057fefb2c6880bec62eb1fa09ed7b0eb91447c42d256e2a604472ba586f884c17f1e9f88d9df5bf194aad69c272eea4917432085a76731b80f99877bb697302205850e1b87333e4c0dbd4fd380b4011e5a20764c5205b8af366824180616ea500fb9137b6c72818fe67d6b581ff50dabf7845dfdc6199418effa5614188a1e02fc9fd172808e3e54b8719f954cc752b038c03cbd020fc05d0f0d899bf6fb83a603ce4a1c9f08654efe4caf9f4c1a59fa0e7263ffa62bb4fec1f83703925d80be0ebe6c02c9aeefb805574e2f3ddb23661928682852fa9b7a47bf72ec8f7f503f9c1f8270186665980420f5e9fb2d07271fcf2408f6510ebe7dd621d64ee28397547958902e7e9d161a4321a95f55c546ecc3502753c4ec3a85fcb1f408dade0849d2babae9d7ffefb135b8648a82ddd0486338ae774a8184b0b9f469b5e373b71ef6fe4463b50714a23cdc03d971c9f03a68b3f92e2a0604223aaf7d7fb9b232132cd6e0f9e063a7bc332c33fbc261de077700623f7e01ddcab550f62a4d90e4e82a6dc0cc0f6b5be7761a18adf85c40475f6bf3c196c2beb1caf2b0855de69ca916b79c45844dede4c99f013afee66c62c93b47ffc0633b49e4ca3ed64c7d33d4adc6658b8a3056d7fa4fd496ebb8d298ca723b22f10d90da28ec8ed221513464a0d14474ebbd39d53a8a0460b4a65f40bfdcbb9c31abe48cdcb3e3f2264e012e15a6223f96254fc3cc9815b18fc5cddcacd598e792de0e65cd0d49265c0979b2ab261e664d501289382198a8dc0b1fcec5bcec506188fcbc5a3a488b7e0f9b711f8be1b117d708b51cc15b4a1f2bca5a262819e9eec6b09d6a8b60181af33fd9ce75f65b5ddaada9ec046b4ee2ab8f0910459d8502e1e1b1a7e8a200ddb2f5e228b830716e588fd5a86b4c1080f1f03bf146516d8ff2bb1317ecd40c4f675e58101c4001267880e3d14b8a6137cbbc96b0ea7dad5d6a9530c0098801f803b862cec5fc307f7c0f15eb52379d85791bb6e57281edd6ba63088c800e264073847308017012408ffbadd6974d479d049bd74a6a0e3ec145f7061dc066bfa107b72ec15a6c0438e725a202fb9cc0a90488275b16d013e3bc1640927d39fda31ae59addaa5a829585d0ab84501d570f8e831908e40afd11845635a437ba56788193e12cf666c3e514db542306bab19229c8486c6e7a23a76de71c97fdab3d9519ef4a503fcb9fbdeba2ef14096327a67be271966cc6f4e2ed9d7a4b86c6682923d7e2bce823429a92632e552f366c8db6455bd86a730f9f714934394b99619fe5b9e0ff5bdd969b992433b203e992ece93b226b414bb5c27ddb025b2b822517ee8d985fd1750c09b3666ec9652d0ba7918a086d54ad16a447ebb6972abbc17f835602c68c4a6bc4449d5cc357b8e0beec2c37a713a6675d76c95ea2c9707dd882fb5e4dcc71385a25a73c584e392407e24945d543d710290990a1c2c2d79a5e862bd50bac403492692204f734b219ef97bdb18f85a392a7fc5dfa50049f5f663e05a564e762112a9640f6bd86ba57e16993fd1b6bee4ad37c410c64f8b551b6b577e3a4f429c50d54f422de2a4b9a7ecff899fdd7de21476c18b70499c8811791fad463a242427719e4ddc8a4231704b3d9be5683a344b0f08022fd41b05158820ba3078eaded31ef98455d84b8bd5abe5b95224034b8481b122e5a08dad11952d12d1d2c7730e19695daff27bbc1897849fcde3676498a552a4514f4e209573ce8f53001539153f84a02a1cc7fb186b4d5868f671b13101ad720300c45134e097e32f6a5db4d2076aacd7dc1363159dd590470178210263f08a6997eeecc553fee768ddd2915ee92fe8786a63c04f1438aeb7d1c5363cffd520d78714c2dd2cec56ef797990532bf91c89fba94f4419da428af89cff3622cae043e1277277d3a9541885b70748e3a583ee5170c2e0c5171dfb949a65c9d33c0d726a79b74283981f80efaf1399db026b1b5dd0fb5dadf43062b7259268960e9d9e982a2e87e8399ed0b074eb3b9d5b81ec92fa1f3673b541c452d4e578a4b953d6e1daa6a833592cdf9f0abaa740b3027a134c859299b7269cabf999c4722fdaec55384d676288cca8a6da65d898fe38beabcc6220c1f68b54384813313fb48c78f19c70ca93bf6cb85d3a74dacd00bc8387779488c73422a3b917455a3349ac1925438ee69259d7161c71397f7be646e486eee148921a68ca8fa473ea5347ade8d91042af6c93bf530c9a90b1190bf56e509b2c7c4b87ae4c2c0ad9b045f6c93f9f04fa0e861691d099684e4f2803cb0caed0f628caf96a0218439839781eaca1b1866aa68a7c04548583b9790dec338060c24e1cbf38f0627b5e48980509440c4b6b98a0f1045f367840da9995edbad0a51d7f8378cf9f9a4dd99e294bb53035428b65b1afa76b189a062f69d4758ac84d2998e83a192464469272e26900104e4c48dfb048978a52f2833895dae90a19d4cf5d8367a048d6856b2447f8361b66236ac9f3fec5453480a06d3fb23aec0b6da2d712c92751741c6fc237a4c16b741a2426e4f6e1130355959c064ad4ca3330d4fecae91639098707a77be3f331f4558af87db0fadee307642b79bbd59fc43e9a05cf0160c5824af72dfeb36a21e5fa8ca94ed365b4ce37e4cb85a4df556413d8426a88cf4366b1de0b5933999a3432d2d56609cdf515336ee377c0fe073d4d6d165889f92bd261803f41d609d48a403a2b88e403ecdb4957dae98f927512177c12eee538816057e273b2c599d7d27c16df76b6a9e5cbb7011be2a3849c15eb15d9007a0634689dd646bfd63a3ab48ad9a7f917f9ac1173e841266af8c2c24269630b2685a28d9513ff340a5efc29d71ebe4a50157e574967f4bdedd79bb777adde29920657d0ad5d01b9692d225a203cc0ec088f6d5e26bf75c869b37915ddcf0b1bc8ab8bf51d5637c28c2e7d30f866e4786a6f40de9b2477072a129e4cb509135a88de21bc1cc2d2a7114b59fc678ea4a97d99f6bf589ce5bc1dbcccc1044a6ee65740c81819e7c6d1201122d01e9c02a6d1e2ace265c31a93151f201dfac64712fb07e1f47135746b703bec5a908c68b23ad43241b80ab3012deefee31da60c921c2b767c2f240bb0a6d86b9a52981d7dc50214441d8f677e4dd1024249acc1dd202a922b31fff6666546a0866dcc4dd35f55f7050d7df1df3b47ee42b3bb271eca37f12f1caa0ac4bfa3aa377911a8733d0187f67ac7fac504a33cffd2bd11aaa75ad54dfaabe2be2e345caecdf1a5d7b992b59418cb28b48f669e6567575ee3a0b3c598fd88889673c985676a34fd95a01456da503825c53a2cbbbde33abfa681a91c71ef5655988b34a264dc356d5f7daeeb2d88b90335ea32596a4da3e704cd19522477992ce4a81f9a3e651daed00e0b27b4b35d003b332ea5cc1942c561a0e9ebbd1bafd4f1093f5d2f33f59fafd8b11586bbb5e8f8db8d21cad2e99b6345bf981b9226c15baef8b52ee5e16f866da5b59bcc89e58455c64fbb40d785e6dd69bdb21bd291c3654e3511b240b5e44249f13d85a856328d0cad747eef8c0efa2c2817da61e8a0372be2f4a283160d84809677f1f2da302d408a95c7b07697ab438521f3dcc792b4dc1b364ad37d62dfa2dcf37715a48ecd7cfc563cce4baf9eb3b6eec936d5ac70326cc8aa863c83478b4b408c3d1a1df496e2cf9f02599290b6bcbc060f82cf8c0e6a3c090827ab0ba65d150392cbd5049cf8effa4b6c24baa4e09164de0f97cee8450019cfcc62b93c0d689d694d5c2f4931bd8d8c441a5727ad26926396d9049dfc88b76e101385eab30a7d2c3fcea57d540767f0ac427bad5aa4211e3969351d2835e8d6aa696ee95ea45cda808e86e1eab22803d5dc2cd5f0ef37ca2f4505b34a23b41d009ad64cdd52c7c67194901d9cf86ed963075512036d6a84c60c3f26f072d6d8f4e5c989b80a994094f19dfd55fecd05c537c135f6977f9e897d14d73d50ef3c754685cb3754f6cf38b838f0fe315eeadb2c19b7b64119044d13fb35565e06a03ac4a374ea32644ebb472ce9a41ed1d52ae82a1e41d4db2125b2e047e5d1989ba946c1c5cf957f46886792ea7afcad54526284fb26c62e3a0d0ea2b1c6609c727ebe8cc89217b1ed3627065d89216844522e8cfc299f54bb3cb3676be029d90a667fb7d51e8790636e83380e35a78ab2b077e74be139b5291e591041e63de5043ef95ac394863a45682dec50f34b2e504337bd4edc4d8ec9b405fd3e2d391edbb06810f05ffc8ce22445718faf27edc0a5fe761e24f9dbd441983a0c068d76e606470c613715894631293bb79885026a654810837452172b96bfbd22512a70a77c8a5567e57e1bb673c90d6ba46d5130f9f4620cd6cf2f7466de8ac5a26a74569defa7ddee36699bd44b5773e284c7db5c64021393534eaed012c57181d541cf34efb614e46536ca4b1e07db422dfbdad1c2ba7ff03caf56b9b06600fdf2019417ae8dd007caacf401c3946b749ebbda7c814eb034060e22905aa736ad058b7b10466c4f42aec5bdd6cc9d0721f7bf8390bef9a5a498490700b28a0245fe34945e689ccf8778bd82a490cf3e6be8ba67099c965cf61030d4b12ec4e8e9d289a0e02d2621a80bdb1ef37e08aa22b6c384f3c98f58049992be4bde167a18e8b7a1eea46683caf3ed3bdbeccd72219a05c437ea5eb36e613e04356274d99ed87bc891df578368c540a3e0091a8bdaa67e893f16d8605219cb295527d04cab674df675f18361adceb9d85b6ad703b2f009c5fa44141874b266383c71c858395157366363aee355da18982ae9ce51109f0af84d64ab58a3b7227988df4c35528b12d2ea34f9e616ba42e9166a18a02b64b8be87e32f4b946867b26e214d82d42e350544d9e8728503e4c1bbacca24867e4140e7eaa6f39e1c92e555240646550e28f2a839209b3fe0085d5dbb4074c75c7ce2b622b44a0ea970e7d3e705fa4b3621c7b30844c375f24a4bf211a218746d16f8782d0bd70bb5aadda06c49c1b3dcbe8a4f1c39a4ddcf43882279bfe95729ebf693a2236efe62a767bfc58a5f35602cefad6fb78ba308474e209289a0f8d8a51b9434dd616774beb5c18d4af23566b22b1b61272745c30649c7a69207c9f3a66fca724ca21f8648fd8863b342ccfe6164be92dcaa283fcc77d634c1fb2a197e6a175fb3590e2b88c2fb5194c13620e9ef3436fdb9cf93e254bbb865ab28abff36d850bd19cd3be4aab9771827fecbdd151374aa1cdac0acf85a09a7619f9e2dbbb4612ea0d16591fe7ecfa2defeaeeb97f6ac70dd5a7b58409bf066111c9cc236d96058a1ad7f2521e223b8f5b196bdd35486a1fd2088a0f08cdc455d0d5eb90e7e0543c476d8daf621228c394aa5c9938b814a2444ecc52a6233fd4ea9b56af450789e936156aaa441a0ebffda470cc9b173eb3eb5e29e373d28f466e7d932f0550a264aa4b0588caf9c80f9d85484d863a4bdab3713060f7d299b8762b468d2a778604985885194bb46bdcf2cd26b0a5474d55134cfce23287e9ba83743712d423425f3142446deb62d53405be813e442a17ac06da78676898fe07eea1938b791f2a3e82d02f1644bd2d8fdcf74387f663a2dc2be7401e9510b1dcc03c25ec7bc1304398514a043a896d3c92f89b71215f244e0a0e159fd2d0ca8221eecfe99efd71435a536ac84c58b045862a5c13ef7ce8d5ba7c2a2b549e50ddcf437faa8d73044d86aa0f5723a5095d05dc4bc845f53b9a56aeaac0200bf06c6839b04eb8a35b78dc702bebd517bbcf13c4fa07ab3a146d0e7ed3a296be0225603bab5950b75e4e00533e287f0a5cda2b821d3c4eaff8cfe5847dce645e5d6efda3f9a7a6c3fa4658cbf635c63281803f748e26b26437b41f48ea508168494a2edb0af6bab7db4bd88a3a1ac809174e48efaf69bf8cbe0f0adfebd9692d02588f78504986ac0abdfcfeea90b479b00da5aeaa20553bf45a4b5e3c890f34c0ea4e99fb8146bd8200027119550b92e5be35bd4ae94d1337d502a71486794b6365366e04dcfb16bd59d200981e244a161c22b4b3f5240b1b17f43702e02313096437847e4abbff437c44b2cfa18006c3d2814031321638f0d260b59555522ca7f90ece614a1237ef4ce665628c1b0484de4ca7550daba9e70aebc97be93969faaddd0ee09f26034a0c5e0da09884037081150670d5ef76cc2f70217d69a8e5ab3e07441c0793e244f3b9298788e7e7850c318dcded2109cb0bc5987fb2f5896c5df253828b45121aac0fa090de421a8151b33421e76208c2f66ee9b657008085bb58731d00731a527ccca4d8ee10a5ad236bc0216a8b533576e8166db0f1720822d2f60070ed47310112212aa77b82192b0238cd25360206d6486ff3c8db065937c2bcc32c0a6c49c5eb2546b69a18d8834bda716320cb4b6553d5d30e7f3004db1a389d0e47f2e56cd4060f2a6055bd1a8b74ac6d734b51aae75221638792b2c8b124aa73eed3105ae49dc336fc36e5c8b4c7e97b4f6bfa572c2849404c88d355c9709a5d1982a242e3da6f29126b8196b683fb1227969120d26c80949bca9b42404f00c7cd536d39ab533103cd1190206f4abda9a76bb9bbd72b7755973937f03a967ec0ca95bed0dc724a7eca1c9c024ffe4a2768333928329cb2cbedcaeedc4c3042a139b7b781a48ee73cf9a693fca9c0e3bfa7ea912d4b584d7b3a2b4a28ae40276566a042f47bc03b75b64f6d948f8cff3edc26dad8681d63469a4eba2ea98dc9ab8594d2f009c3b6404a72b688b1db04f2201c010108bbd33b0701e05bd3ae93970d94878fa80dd48fbef126e545c342ce9016519dc0f0032008767ce6208042d8a4de3242466ddc3ae277a07ca586665ad8a898c862e2b7da9f57061ebd48e46107a78d833c29d4a00d696bb85c93d1f103d669d2196d35b379b52b2fc5030b3103a1c21591f3c04ef829b52f5b1a3696edb4c5d7518fe6883cb199dca4944bd31a8dab449affd79b5178ed4993bf81e353d684c09ba4867cb0f8b946d2a8efb9d7a361288e0e6d720744c0913445f09841bd483b994da8203667f648024844b9b0df44bda24e8b69326295d212c40b8f1691e63a4799763b35043097f83cde6ad30f7c5849255ad48b4818ea5640d9fc9122a6bc8d9af83a1f36c23e6f32e68c214e6496b38f6246d6f415be02d5e1a5024443a20aafa3197c6f24f627039091048a1b590b46ab48c4e8ade39cfe359a3a88f3fa12232259b763f44e53505915a0cacb1b675e69059096c4748bc3c2220921ba7e3910d8bd5a119627216c9854d575bbc83cbb6fa0c3c2f80085d06b3278c209943840719fc751e7b07ca6be999b990f437e3666543dd44e7df1fa1c3757055aa80bcb5f786c6f41371ac19672f2c14e16973afd30df9f6bc41d830eb0657a36b448edeafbc901bcc3a96f92552d2c582b60e0b96589afaaf841b90bb8212831d4aa4eecc4d5f655c1fc5ac9b1a6821d872d790231503d8538fc21e704120180d6f513fa53d228d18e621f1adb5d518cf18d0024aa18a0cd4286f3cf62d5f83342ae4581979601d3c9c5816861adcf16b0cd61e9828e00f75fe8ffa16ddd349f605ce86f539a686e0d622c685883465e437b85bb3ee2283096a6eae521801d3fed2db1aac597d3af492f51d8d30a7b7b1a22c9a2c58d7289e36387de2e23e5d231465ace52cc2c2c89bb699d4bc1e64b792b83d02512173eab85bf88bf8f3a7105e0491dc35d575ee9b1de42407d73db306290df5e54155617070fd751fbbf43955d9ad684797befc69a20a8e5ff9e5e2937bb95070787efedff42e8d17a03a9e5d7aedcf04801da10e1cece18117e83575ee1e28b03eb7852385be6c9b3fbe9c0771e987c802c68864963774ef3bf7f7a14765ac6d386a4b271cc990c05f681bb861f645150b7bd3c3649d1ba50031f576e1828e31f1251737fc226df30d2884647cc3774733c3bb64b62b52395ff455bf4bd9ce91324c53bc7d47ecb03ba509893ed50758c67dfd454df01d9a80aa922221335e24daca58e0fb4b587710926882e0083f020a8b2d8c0fa7da372806a4777350542e0429cf33b3c1dfc2a64246c0015fe4c36f57507af92469356697a48d525e69f8da42ad38007c501bda048f907d67bc92e55e159c8a45ee24e92a3b82e33df22a7542e22c34b70d5e841a2e91095e22042a42bf59f8c551e79062574bd90b9de512845c57fbf73daee8519bf16d670d05763fd84688aa0709d0412e305dd1f7b6dcfd855464e5ca8402730bc4906d0d0834e437c481d8317cb3a6b327a442a404f02a4cb21658d1ab8ed38e4e0f3b00922ef27b1480c33f45857cef06433e453d2c47ee26e4206b46eaec14c7c2e230739330b31a3244aad05ccaeffec34a7e277220b5e530332834ca95ff3e408888da804dd67da22c6d4c46241413f36be4f5ac6f0b676d5b2622cfe1b59085b6769d6fb34fe7352e37a3ad6ebcd3815efe027d2bb9c15b48da873f6d994a6020ef611f7361f97bd63e69c3c567ea0e120cce75dfc380e1cbdbee1f8a3a9c2e3d03aba7ecfb1afb1bd67a73b7d8403cd0a6e24a82e2bb0fc6844bf8898ee5452e7ecddf8d5980983ed6e80e0339cebf0ae5f3add0752a480e316f1d27d254fbb511e33959f531eb3eedd9ba32ae9ee32a66698aee9ccaa81d9468b0e5977174ba5a5d9b5d853aff6a6a463d1b17df11d275ee6b8b4f2ac94771f438e1dcc6619d8210a57c84aa705f0b52179718d8c2393bcb10274321e47b986106c895e9cd93d2a336db5439120c4fb05ab33dbc385684ff3bd72f0e996080f2af0d647ef67aa3852e0b1536c681eae8e5781661e4b1ff9a36177cfc8c2bde71127954df45966e039b14ed03f0200fdc2068a07f3d30540d6add1b8b9759a02964885afe495bae4fb484815583c0b9c5d1b42b67d414f8ee788ab35d0059a6b9dec111308fce895444d846981f8ae5a6766537b46595784f94687d72d2c49b569434ae9441b277dcf40f9ed3e055445304712f8279e3973838a000eb2722d46949d8a264e59d4a54dfeab590051a3b6522e7b5fc8b00f390053deb61b0a21e51621ad86cd08e258c1a85f0ddf330c8aa55f0e0dd54165f7152a6b5531bef4538a856d5c5b3c2b8d481c7da14bf770874b4ff1eb2aa6355d517e3946cd0b090421286d897f4e0dbcfc98e24b32d6d5c52ff8d20a0b41593d0fc235008699721361f78084ab8f0920dfba4a3cce2998a49faaa20a07b07409e4194d584c90334aab61094058c977d91cd689d358188bde2017d32199145a10c3016924625a929d2dbb02589c2657a701748a081dcefdee1a7d123d3bc148efeca04b16dbced27538c40be825d7d5ee237c429216b854e6c5243ecdca6b7ebb4074f657677ba9153bd298fbb66c48b05c505e10c1eae9657aaea0142e9272314bf82b294e4e4caa4a76d27604b1a8660be063d05f6b9e572fe20b4251b2f3767e70ca8f6e313dcf00c17051c0ac3add76a6d47c1be58ef18c7a1d224b318f0ea9eebe2b19d98b16f2b5d25253a6c1a0b4f73b13a5a9207fe732605348b46c4ed77ce6cf0c5fcd5bbe0a5dfa7300ab0cb41a8ddbaeca3ef4fc7dd0ce8163326fdae3d58d26978277ad453d675a3138ee4d96c79d28f8fcc827f697fc8f0e4760d28d8d326da963999d619a4343d68fb1c0f820d14be4218475010194c6a83c53e491714c1b6dfe64c5253e93a121eeebe0050c7253d490a073adede0e2c03fdc6762d3355c33eab52ba60a39d766ab595d48a4f23fb57fa39e645cfc64da6ddff86d8f9b432f5baf3d1b58741fe2ebda08d43e1b16286d1a0551f5d8d50cae43f9a331cfe54688a611abccfe3584fdbe93340c37fa68468a78b4d973007375dec0d43eab1ed7dc076da767bbbf4f311b7a4ff765a48bcdf8fa1f549eb6491f720123f664ee081df8a0f65dc3385e6377fff54a98d21ce8a94d8c5069cf5743f4449c0d3fdda42bf4a0f35510be641d1a2d1e0800a1aba935416c1685b903e8046541f44dc3218237fa8a2501a08ad60814325b38b09e1a52799b150adc6803264fa07de8bf6614e8c8dd74f5fe575629cfc8f84fb3003f0c7871f3efc4fd5b26dc733b396fcaa006b7700895e85eed8468e887c0bf132841c862e63fc42701aba2ad84c4d5e668626ae49fd0924bbed5e9135848575eec37a086546ffab5890326cc5ab33b892ad37af0a8d1cfb21a497e234a5749f88b9d7c05c05cb097106a62797e69a52676c32b371065597ea6660538466aa72d1da9e1fb7f0e3e864389c0a17edb58c1c79489482594f138d2e4e1ed2aaa85be1075893efe527a9745cab2e64435a39bc8228d075496e324a1cd6c355409303d301bb6c6439bef46f658e4544c99793d426a234ea87b478c6a6abc98b0dae2debf9cfdeab708af87699b8920d81d16811eaeafda7d606ab4ab2adade39a8ba5f1e1b7c83d5732030626dfa272f2599d586c62115f1c8dbb488b881abd5f899c58234638d4f25644812e050dcc172f0231ccf3d3bbeefb244a147bed0883bed587eea56d0841e9a87a7c9055e6a0df8217beefe85d98396e42068414c69527b5a44fafff3c2e5185b429ca5582822e7a665bc68d52f257a3f83e03ef1a314dd4639da14004530eec2b8a5f357a66ccefe2ad1113a4423d92d9a2dd447bec400bdde0f50f427226b61ebb4717d12d56c63601b445f721a2eac318d007566c64161b28a1c35ed87375b487d70f87f314a55ae1880494476c30e17e0943094f3d468ee95ae8e469de8c6f5e3ad698a743114f41458b96d73f9dc301757f3e1c4bc80ee268c3b807592fdd494251d6ac888deb117b3e73378d2c86b04722cc90416e45e8a87c6ca1bfbd0bb8c5edfe96f5634a3ac01ca06ca0a2ed4909c833fae28d467c2669e9dcf2eda8d70af1926a9551a8455ef1e38577b639a1a4e464e6e8426766ae4332ca9c20d241daab14d02fed32d4ff4ae038e20f06f875ac41a014d04946b4dbcdfdd2de1fb672cfd4a846f8f75a97627938f4ca37f6720913212616e73238c76f0198f91637dc7199d9fa7e931d5c487e5f93818e31c1696b7f770475b8a4a8e09023dd00b43335faa5b1d86defb6a10a2010ca08188aee3ede30ed3f2b8f5f110b43435fd8a75ec70232765f59a57d3f04cf9e7502ed62bc7b20160ed8ae687747fef44bfcb92020365594a32f452fccd7c497c0e1c0253a47ed3c71cfeaa1a8ba78550a8a0e9601866884e3e2732ff1e1c52c4ff3d3228f902009eb5dab92b2197b55cc809f738d12e7e3803e3f0b82804f4addc1b82d0cb5d67f4c1dde6c8101f5cb2c8da424abe0cbd465f857076b365969fdc2c2bfb36bb63d21174b23c713ace4d76f0a7ee588da3b4ae471b49a48a039c722311e45819d09293747f95d07e97a7e0c506c118520079d66f8e05951f68159d871947c05a0505ae8b1928d5d13e13b86cad19c8315620f8337a4eb280dd78241ef73bc102864b35ea39ea6b524544f3947eb7e8488d3c29a99f45835972e753ec58a142af4ea2861af29d923b52c7f567eb1ffca7707a4d7045a1b278051526a4e6b30eaad9486de08568f2ae9721f9d5b7b76652b8a08299d9fb4d9b44a4ae4bf56e775656b8f65e49a50c198cd06f275f73d427b4fd4a749be2f44e15066b4169f247f1f5f6cbdfbcda9491f4b0f61f2245c8c4fa3082cddece25cc66450c718684d81e1525e4dec330397b297bb5040544d5850838a6e3e23bcca80fac7ce83566579212dd4863609d0812fdd6ab223da4685ce6cf288f944c538197838ae62238c2e6dff48eff080c852ef531062991b2717d190f1a52aa615aac458460c4f9d6da32073dec06cac8c6579d557b7cda73eaa8214727ddc30c1e928ebc15e96482284e999986ae6bd8d3fa45c162a8b6c6e5486491362ef7755b579c2fba5aaa13a2daa2532af0d2c6bd75b03609664bd1773c8abc6df4c59148ae9b047f8d412233c1480523c73aafda3cd1182c6069f2dc1e43784d7dd1b37c4efd7d10a56570cdba5c7dcd94e8a9d912837a2dc01d05aae6982376f2ce9352528fa620dde19ea52d264af89fa22e52bc120bd592f803b3949b397ad9dfae02b5ab12c50a858d1b50d5bb8c67d3eb65605b1b42fae55e85a1c70be428744db648bf91a963b413445f531a2eac318b0178e1ca069f488fc605a8b3be23e498aa1bef9c409302cbf2447131394a6d4884d7ffddb7da9b2a0e462bd92f6029b42a21908cf905da62768e75db21df358064bae8406d119505b25e9b55cea65b54036d51491b8d73941ec1eb427585b04429bea048bff5996f9fb8602c7ce2e4bd243979d3a7bdc266b191ac5e57dc277010da9dd60780aabb6705da84c20516070926cb5ea0113a154816f97be63be3516a8c78aaee4a8f7b73eddad80e72a146564853458e07fad503a11a2280e399a90e167745a38955861b349b27c5cb0600d646d4e7a43e5188d6e414eb046ce4eec448275cd29e00a8a0c111c206ddc7f5820757c2005a31075a8919a87e69a31ade738fe5bba3e61db3a78d047194247791270171c6ab6dd1e6d911a8c5cca6fb75ce5a8237f1848ef696bb6f5c40a6f66a9bb2d5cfef30374f7e1ea0c199e3d727159d937f25fa73691b2dc2561126582eb3b03ea973b7628f0a6f0fa5c5baa6b441263e7cdec0408a2cd3476dbace2e08341b72c0dfcaee6233d8ec207c935f01c19316ac445a6f32ac1d11297ddc09afdcaf60cc02ee0593150166be2044c62de4813646de91c5ee3506b62081031a60542c600c8ab411ee5209ef256d9ba18ad34fb0c72a352891a64c57a8ebdec86f00cbb975933f96fa0a27ad1cd8282bd71949076dd0c109e44924fbec161ebd9cb563c875ba616414671ca213b40709ba56560c432e2107d795f6071603e22118cabab1663c55980213633d0e11498ede04ef01588160996dc7c74b49cf4dc22e3f13334353d21ab16a7f73f31aaf94aa7a2cec725ad646de91da1366886c091f1b750f2100ec1ff0801210e4bbafa804e558847d63e6538795d7bac88eb6cae2d9224db0a003b9197f31da8c0d83fea3bcf2f445a2657df8c693e1dd699a445214fb185050a2adc2de97a7d8c5687b1feb14ca4c59ab9f4b2e858b0407105850ade257181bb85e181562af348917f62b9856a135411748218263ed61f9fc9342c344d0f4b1d05152c56b0b0c05d324e750bf7405361111db8690eac71a147c2064a70be656840e479ca40a6b45437e3527681ca40d22dbacbfdc90e1c77bb7a1babdd6fd1aefe835a8225fd235ce09dbe0826b6b24f3b89ca2d0654d396ee4a427801ff8bc73b9d819f77129fdc233bdbec62a9fb748229ee9c047966bacfd2002f39ed9883660fc7cf69dae5d4db3cb157e0d620c6f5e00b162c03f3c37a19766f546cc6dd83494088f4de65bb8ae75c754bc0871f929043a67993bf460c84ccdb3153ec5835793931a4a8af170465c21eb3f9e8001c259407df15a9525488b4744ccf07a743153e30ac0901a742a3000009bd5a5ec122282972a30e791466221c06c4aa8ac20b1e4173c119f5c63ca41fc256c4a24f1dc8b56e2fb77db991866ddba1cfeadd78572960e726e08d5f5290b6946846d9727155b69c5ac5a57836522c69d92cff038e7cf5b009f78a4259bf25ef6c90e773258b6a5c464395411e51083c35f1f01f4172d0872f7ec287945a7c78090dbf0aaedf19e1779657f2ece49305ac19c2beb5d07696098f1bb011c50bde0490206f5722394c67c76b5d5a6a4711a77ee266b0d824d9e72fe0fa98d74c55fa3639280eb6c4bef8ccb69ea57b99ae53592f1627b0dec6a612c2076e464fc1e73d684147483ee6469b43b03e8f76381559f1acb1c8ae4b0cfa1ba6fc16eb304aca51135fcfa040a4246d4c0e7d9c780fd87b68c11238eeef1f1be32dace7c3e2d43984885415bf7840477fe9c8b8372e0e6d72184415db5e3ff46c968f1ea2b88594346e4bb2ab71773bbe206225dbcee1e23300b4f981fc05a48b9d80ae131d0d08e6cd70fc90c99b2e4a53046bd779b1e52d6c2808b2b8e55c24170992333d3e971395a4a5b0a697bb996bd45567b0ee048b109e96843549edd3e81957105a3eb6ac3558758cecdfb3548218f4747fe2205f9e08fd5faa2ab070584f7a69d72544e1fe39a5427717ac06d8d469c211be994896b7449e87282ca148fb81207671e99094415fe44acc4887679af72d95e1d058684b2e79de9e77354f9c3036fb3413c3584bd6b7c269660dcc57ddf7d124ff6952f174c8bc75e87109bcb801c5373619e3609148e4826dd23f4021d0d0588dd95aa966965e94dfc41542433d63a72fdb4f58ad5d433e0edaf962c394a1d2f22a90519266ae1f459ec75805758424dca9c7aef4a3f12c29de811691e16b936b8b8e8e8d42029f67b85bff98b49bf67995962c0f15302f0082e995ff65324cfb567de42ecb282dc3410addee088e8c026fbe65cd9721a1358ef5e7d8e1ff85414a49608ae4f2b158987044287c833ddfe48a5122077c1c60ba1d899564571608f5bf38456c114b54143ae01264a071e85b8c632b69262223d3226b4dc7889c7a1813882e4a3e46d802f283da1968e8b5319aa834d7a8bc5e36c8c823b9d722b614a823175667ae19cd6a8d489f9c1aecc4f787d4ad73b1c0024e0772345677045d1759e3cac5e7a67403d5f4d43fb1b7414049745e61476d92528bad8913d42ee13f2e24f83500a23bc0571fc6762ca593e67ae378d1d13c3c350651a233c387d2867610a527504ba29460045e0e0340bc29b797d3ac8d5b84b2b6a6bb942e5db33cacf7642be9c486cc4d41805acd6ce362ce939e16fa112258dac7c273bae53144521f6be2781f0af47d93cca87cef3c2d785601e7329faf4d3bcdb3f8103e756b3507f5d75eedd858ad88deccba569ca507604da5628a0c3588b6e9eba8e5282e4753fa9230b8bc01158e1a6907f633de7af9618f3a2a498fffb2a3d70842fd4923c8a5fc0c37280dde5b292974098a8e5d62283238a0664e856a20bb77d6fbb0a68cb00ff3dcef20ac6d913c1642c8b20728d5023fedcbcea09d11dd4498e5adde045fb83684b6c53390b9bd81b2786230a8fb09998dce20c2c162f4731b2838c40430980a399192179b55fe3e476db365f670af73420a9457d6291589f1a067268e7875394b0b115666f75cdc01fd3a8c1adb28a4a9118a33db015c026ec381b52576136459ce08b0e8a3fab0ed5be95c1fce06c7651bcc01f789d9e0e443114314a89f9d8196971c393627090c0d2272664f296cfdab310aa3e64e469b3fac921a5bb4bf0931171da23ac33be3d4e9c015f2fa8ce3f36716ee843c552129084b74aa3880247e3c34f7421414b21c197907b67ec8dc8cc32873aaad5a31e6c10982d5e689d2a29e78c97941f521fe4a002283f89bfab4a8a1a438cca83acf6ab8535e512101db520d1b67506f2ba04b2b87d854a5b61b6da3b377e85bcb3524cad219990b831e9f0076de9bde6240a6a0358f158974c497cc5413a88ed9a0862db565ce5f4731281b3e1a285624a31352981e1e0d827b80b4c67470d1392f9626cb6b0172bf1d2bfe284c2920f38db4634872ff4dcaf6af2570be4dd08298185f8def435225751c59175771661f191778491a48c17633c7936483a2aba9021c0a7630e9065018d107271ab1b03b0a00699f20e220e0807894f0a39cb778fbe14644bbd54202ad19f92e149b19a7e47bccda3049b88a31842d12015643636fd131d5f2f53204a94110119893406dd4e8f59469d915d262511ba2ef5040aff185fdfb2905d4efad360ea0df6a9b83e80c24a81520bb6f0a77a13db2dd390c4acad6d5e9d2c852dc4b54f037bb88eb43ac5fb523f66612f235298c4c3b48421afd4da5efec5acdff9e764693d14cab573f6b720a329be8b8d9fe69361a4986c9f93c277ca944dc9b70f05e166f28d7e79f729c9becc5916af6afc5821e2848232b75ac98673584a920c2152e9c1e52216385730a1c74de84b39c8430faab046fa828c5e23cf0cadf6dd9b77b609fede9bbac82a791012a007dbeccb4c08b4b8d40ffbeb121b6ed20bd4d37193b53c0138e2bf4ebd1602538b2152fed151a488dee9d1c5380cf56d3020af54f34d403e0f65d6b32136e1a5acca19cde45f4605a9f32d44468378912ae964e98932def15d710e26489e40e28b48bd28af3fc1ed0df2cb63d808033e7b9c0a99ded545e5d6d008b51c1c8c7e6f2d4c6cf6560c1c1057f361047c6942cb0f1f0c5c2749c13004d3b6c193957b497e37a7e582ace80f668836427ff8c90709e70cedb564f54891a7982ab764a826d6f049aad46f381648e925b5f7698e182bb0ada4105444d42a98ea40601e049685abb65db22d54ecd04902e9b145316e1a1d2e7b142cf3c97396dc2e0825e083ef35f5fc4e368312c509c05c222bbe3e666c20f3ab78ae733c212a5f53e173c934be7e33d3c060924b64be3b4e9c9d3a7eaff91e5a8714ef2160961e587ed0b2f3fc029169cf53414373faf2618a53408d60262034f25f5100b44a403e9bc795c603abee0d9c9cf6a3582d6f0be13278d3d96757f82619e847d11492a4d9cb79cc18332d56a8c58b34f4bd6887ecd05c94e61e78a0496febd7e3cf01c86c74681903a5ece7a0e8987482a674b742d5c4968fc99f4357c0c6f7b7020d4cdf554ba7c0c3f3ca564d4c9229fc058534d59a70133ace5032c6360bec82d176cb16cd835824b3f61dfdf4478136c1630cc74d132377efcf642b24a4c0c89721b40dea0bd3c7ff300fedc1618da8ff672fc776f3b630c3228076b69403eec6d0228dade25ce73a10f01c22a330a7271e7cc9ee27be0b2641cbec8a71cfa7a053ddd7db992159c57e5d45383955173ded91796fa121a0d0ec71f5bd049707183fd9c8c47fa830ce58a1ee673e36245ead72fc0a91e21e28a43087f948f0fb663b52e135e1cad55c13ac0105519874e1253cc7100f821843017c216c1a96e1ece9cd572a41bbbc49ee9f2c2c5307009324f5083278c386c7498c165a55b71dd070df7e74db7bd6c9e839eaa3d96e341c6c09dd9af25a5ec181f99d2d16ba6c7482f3b11862521aa283581a7b686249d7e30418265184a5a2cc383222dcbc810bcb3423a23282f88a05807bb209dbd2889dec43ffbc1ad33c7caf794bbf6bd1ab4de8ddb2c701a5b2ad78fe2ca2bbc8e59d656323845d3efad365786c8eb13621ea722b8dea4bc53726dea3c1d38fb467ea943e3c1c265743feb70fc1870e91611003b4c283442c3675aea2400af0b47fb32426a6290d6fcd31c5b484aeb5b5c8389527218e6df1ed53482cf74b518c575e172995f159482401b69fa428fa021b3cb44c495032e3618fbece207630aa54c0cbb11842692761a0430360d17a2900633fc3b8de34065b96a7623e1f1d49ca1270107d2a7cab585c8c23f8e654212ca6c4e2525d6731a24f4b40c237084cc95deb1e730a5a5194503e1be7f61ec825dded75f52d4dd9f29530fcf8a5b3a9bd2fe6863940c4d90855fc2b10f4b068ac74021648407a8dbbac76aad07ec0adcc6cdbee3ed271dbd905893c3c3c94c37e5eaf7594bd709a81c133df32619b915a0781881a27056511c9a4cfcb89353f3f09f3c1de15c069167fa308921b56fccf504609a855202965f950283be697cf130b067d60b8df5bf3a40616cb5250325d8b5ad3ce88ad7d1d2599ecaea781b864bac7a79f0391f1079f9f40add0d633a6662674f64e909bb81db6efd6c7b10c8b69748fe436477c93e668f08a8c82f859d4040c54074a78e6010cc2b623fad37ce52bae52f89af8a6c2c7245a138fa5e290773214f3c3c9e916c6439b75fff1d4b08c355a293db1a142578fe2ebc56cc7a60e6fd60408448a93f28cae65a1af1f17f2c01dd18e101453d14b5ebd9858289e1c6f42590d34a935097665fea0f300d0b1a0c110623a53b19368b18510b2d21c7010d9bc97a4948f1a78112277f87a8952cfc0706f092709284248119bde7740301559913871df824288343d6ca107494695ec9d390ea412199e7b216c3f0a04c4b323244ef02aa848d35702cd4648355a3357fc62a45734e3cc88e30c58380e4e30f319daf892fd6c30d91f7a0f08ff19980a0e3e18ecd51fe2d62f56a64ab94d5a9632b41664d42e9ab1fc08e3e09e695393ff49f0aa42cbbef805997af490447f074cd304e6c6ce5efaa4e4bf623a90989f3ea0a4bc9741089495d815721446518e600ecc9b822578940a9a102be27555ccbfba7f2e9537b16fc7832bd83bc2ba4abae65de05a5ec94e1d116614365bc3f81eb5708247f5e791215574cadcc98b27084de8b4d385dac8736dc98f4424b1201da42722ef71eb709de48db035767451f457499d5cbd4071abc53b0fae8d77c8cc04e1ec09519fde9526582ff6adff46f1575aafbf66481181ae0d75e5829d1a9009be141d1103473bc40e2d51733759bf5c249e10a266ab7d776a11bc34459301341f437b9f420d11365352ceca3d815ed4c2dd7cf642672d1e320cc5c76fe8198f17e89bfcc4da852d9b0f001d4de438e6a94d5206779c39eb7c3635dfa11694c29e90a540da8344ee7ea2561cd0a96b1b828b59f42303e75672e09b59b41efdd0c344c5e4d054535fbb9e34107ba88af8ed8eddaf0b4af9f89241f1b2d041b8bbd9efad9754681e8bd9038b971fa66affc48792ebc0c58d85055bb5bade3d240b99d64ab02ee51a3a03234e86a808d2cd0328a65f87da3917124348e4040d90e9177b160d15da1fff99acd88cb81e52527817f5fa16d7fed06552de3545f29d13a41cb36449cd67822a861c8052e14f09e18dddf829c04e6aeb8aa7030dae66a633cba4877e179d8c83b023d036a3b696a5987376e97b48d2603654ca5029b3753d87bd7da72ccbe1a3c801f60e6f7ee54427ff1e9d73ac6346b7862b1310394b907f428251bdacca09a8f48051e306569ca0bf21c111b9c89a06ba7383463ea676fd4260d5da39e51117d46b97c43e7c7abb1b4c6a7c11ccbd305bc61ee5dee1026dfa9b8b1dc941c5628c9981fc2a0d84966a6119ea1a31be35a7cd514ca2be31eca627748b9c7c736b4b839d75715b29d0474d2a0e64b8f30a02e5cdf3ada654405a04fa013ba546fa359ffe8b2865dbdf5cef2a9db5bffe1ed723acb09bb77d0df290c54749909780fd18b86ba7d9d034709f96767d8f11304e72a642eb21dfe9ea7a6c444bf0c6ec8de7287598ec525ba2ba9e7bd7bbf9288074e169e8c44bdc2754aad26d164c4cf0c9d64d5e11410e3aa0b91a1022f46b45f8b2839a1c82f0bcbe5bb2691e2d67f122e1f78c1ab143f9941af3ba6b7a2ec8f8e16a7303b9b009a09a3c3eae78e6fdc610fcc0e83c9b7f48585ae334b226a9ac95217191c6047f30047d8d97106f7ab2c30c994dac1f50b497c12ec7138803dae9becfde2b1b2ffbe6f6117de2965a417bd546c17d2bceb2de5bb9e478297e9082a7881c017351df9e3f673395306b7ad433971beebd2039799f1bc76a25dd57dc28cb328d2224743f219e6f7a753635ea660f3cfa42a57a5470be18d02afd63f1380931390e050b352887d0032002bfcf9a1bdf2a0e73027633973d32e9221e2aafdb01f82bd1943a72e139c0d1d1cb66f3ca117afa9d3e4120f1852cc778e7d39fc057a3993fcd4c08ffd5bef4260fb255f967ee452969743a017813a010ef58ddc9d81a1487ef7edbccf26991e808962c2a04826cd67f10b02661a635eaa0e7c9cd647370b680ee997c600175c0a9a6ba34f0f56694d34bfe974da0283533e20a3ce9ab81920593c4bce23ef7a9f16b3aaa6b4ff613c454056e4b7156efb25bbb0039e3efbd6ae80807223e42729ccf1efd7e05a9c46f3347683291b93ea2ed0faf1315b503942f17ec0608f79fb79c0f5128e3fca51a7c6979b3a9f442d080b304502e6f7c6cbc25cf9820331d2b578e979633e45dcf1a25645efa0f1deed6d550b9739fa308dc70042fcc27f413698c18c58e7509e5851f7c5a055d719cc4c436885ba100c3cf657540d713517f3108b387537f8aaba59e2b911a476e1671677589f8d534510fa6fd67e182e54f406e970033e8a6369b0b23af872e0b646296f2d44d15c306dd2f15ca5233b5f058414df33d34449f8ba19ce02d698262b39d2ac725fbb168c92a5ade88c50d5042014445be007fa631197adac7c78462bff7d07080ca04e2370f110310c0168e19d9f41a9f61190780073606d9a14874593a7039173b0fe53650f6b952247638cb6c582466dafd8e9c53712f0c05d8e74306938bb4cdeea23bcc95dde52d87ced07f613d2e13378794ca4cbe457197e8efb0c29f8075f199814909a5e9e30d2ed468d02ba4e062a65522a58fa61d611e16f8ce1d6ec0bf8e85ce0d20f32dfe1d4cb1739e13092a2e8e24f0d3336d5d86151b17e8bbe026798730bc58f6b3c42cb0f523d9a258e556625e6b4951e2cc0a953026b51dfcbefa4c8f5db0eea5130862572f104bc047a673daed48e617fd341fb58f411497a06b73749291782e7be67b7527a7788c59769680e84fbb5c76c26aac60529a54c86a4d0f327ca8452b94ce7b88be1780031c1dd4fa6984dd4a5d005a7fbd10c5e28914a7fe24ca4d456e23c588c86371802334011b9bffeffd90071f121b074f2ecdb029f1d29aae0ab2830ca54509c748227de67dbcb94ff160626c1064f3787695bcf11aa58b9514e97582e055c68a726dfe458307084f1110b8e18145b84b8248e89c09bd379dafa4196ec420d4b599588cba2bc59c0e70ce3d68a695b04245ee2fa25a38643e1d807417aea75ec17b69755c5386dd061208a481d495637f526845400dee6a6eb9e10897249e074ad3fbfa0304db736dce33d4054c761f23cdb3026384273b35126c28488295fc88f50ee1853ffd3ea3b0925c6566cf94d5e96d7b0956447fde7716404574e1fa690516da7419fcf4ed48ac0009581805c1762c0be8b2dd860cc0bfe091191f8a792b30853f352d68670674707ef4e138270c39788b10bc8fb3fbf4dc1722809fc2b1edafd86272dcd7c063955448d230834ac34cadf63849ed34b182cf8d5858120a4977c7fef2747094998b2566046e1e9bdf970b0dc53aa96552833a40e7dd0805276a83ed54409a6d12c4c7dad1dc8b228bf69b896b581b8a92013767168af2f9861393c863f8767291e1f93eefe843ee17bf06239bc3128ccd3a3a984c0723e64625430f44426a485d048f78fb7a9f47880d9a019c45ae886b68bd7a8b38c46b6a2f60668ca804cd2ccd00cca82019d4e714203a070fbe507690f55eb35937b92ea0caad202255c651f8eb50d20357b8e0b9e9a8b029d8f31a9bb7e43322f1c800f7f24cfd55b8a032490fcd0d4c2088fdb4ff44aa5f4b346d65143d6822dd8901328cb52c502280fc12271230a700b101db88736a0d67a07ed77febc46abb267c7cf82f941b476b7a0229ccf99739509c1b8056b4c7b04eb8ffff17e40df83a1671d56db30cb5ab0b7a2d3f972b482d84a401f8ff97e34cda4035d11cdfed12acdb13c75eb28d6f9fa8c10db8298e8aefd099d2c9642617194387204b6188478b15955e32fcf4855023d26597b07f4856fa2c17c046831c751f60fdf615d5312f32974efd9c16e60f7f39b36b08d229380491a42e03dd6718353c198e59d2d954ad08258c11a0c875dea1ab0e05a36c3f35386a0fb00197fbf877cb85760c5c01d1301b7c35d5bf2bae51da17704ec78dcfcbf9608409de14feb120674dcc3246c57b0ffe2cd3f81abfa7c0f37641e25ee4ba20180d663ee0a3c2ae42e15abe22870db1014224087e1f67dbbf0e11f08c386591685d71f8635e6af75388ca479fb1dea450329116323271cdcbf96f228a200ec86b584e35ec4a1a70d77840afc6c29eaf8165e11a3755a2f28392abb5db0b9b1554ff27c57c9877656a14d50170fe4acb4be65728416680a5502f3ba98e1c4487404c99fbf40e065680ddcfc1e758859522762bf886c217d9ff9448cd5bbddd2ac1e217e3a4cd084b8484e12d4dfe23d5c24a4f4aa7f32715c559a9589ce8a41fdb84545abf14a5eeec95874f8fcdb9ef5d359892ec4dbcbf0869f78fb8d7662e0bb006913fce76f1c941440678aa9b01f12c097c328ac33678e5f69e029a84b1361bfd3bd04b0ab2dd04ba678c494e135a512f5d02c4641d45c0634dabdaaed69c98d82951be9fe0d849b11013466ce35edbcd0938c00b0ebbf82baf8abd660320c55a63864afa94a0e8c3a90d0c13b6c5c5a5547957709181bf5f80cfe9debfbc0d5baad153bc502ec8cce504a02e5c4e82b4ab8127dc63d92f0d17f012e3248aa24221057d9cc1d01a0f6c95d845ffefe62e954e28db719599447d086d09420fbd36a9f2bc3854a89826587830b02c444a645924d6ead263b4bb8ab66a9c72cd2de34d23d9dfc0f8bb88e06055763326fdbc59062c47e6252a466242dc1547c2cb55e000cd2f2aa5018dc1831c1ba70e9f39bae48821e8acad04e5cbab831f0879781d9b6a70c639b13263dd1989fe6eff5f351219f52de39a630040ca648ac665a1fa64c34ccd57966c8747f5395b46294d64a389b9811b98224d0944f11b6466bce051df38013b92391786e6d1757db84867b692b7515e08478347cadc255d01074032bc43bd0e230ae3e53d6400ecf61175b83a7c6f868911643588654f1f8d483f2d75379adc09dbfb72e8a02a82f6a44fb7f183143bc552efedad4f8067286337e8f8d9f3a6ce5eb6d028091c0ab2f7145ab7c67b107b9c25254ea74a85cd70aecf8d64a78691c1df52139bef2398541d501f9a68b9b96082d60692f0f0d40c9dc6f451f8cf96915cd8b418899a675b4bdb843dab867efe37162f7bce4ce48b7cffbfaea51ce6fa887c0757a0e246ff8f96d1f147b92d1f6c5dedc86e69486cda0d8c40ef444c46784f58059b480f9bbc1a5afde1d541920765db433226a431f565af5bc3b4456facbc70bf68d5a519ae670fc20322fe0c7bc6aaced21bf14edae5b9c0ecafcc8b7548abd87dff3aa12fd3bf57cafb4398977ed309200d708521db5bf2ea52d647d58ce0dba5d2f99325c5eecd24f63be79d059b4ab075ea8b8dbc257a6cd130576bf9a046566f6bb149c6cdb7354e52c5394bdd4bf2f6e9f57f8c730aaa4d61913011647fdd0a269d7167cf86a9bbf19a60e25aee6ad4296a4f225649e66210bb6c6541362fed7dfedb7d8ad720a1b05d79f64b93e2f6b09989bbfa3e89519eb7abe638b3977aa24b305ff025d503f1a93d7b8a46df66a1099057a98c7ca76101a5685fa4119f51b1c5c1d316076fcaa504a5d0a73395060435f3395190a798bc31b5945598c589454f213ccb4e2e5f155228fcb3ac5690d6027b0eddc3712201b91072902ea602dea2c81f54b272e37103c08b45b2200691159c5f9d4614a1d02e144419768d853342999b764efee86f719a1edcea6ec86e17dfe6becead9dc6b30da1b7317432b302aeb889bac58628fd8edd7f9196e987eb86b2cfb230fb84189a59311999e42eb8417ccc9dcb435121aa74407242e20cf7cb992267cf182eda78ca4d341ad67c932e56cc17621b7e868b90e6049242d0105dd227ca4019a38d5445c404ca16a0efa87007577afeeff6f679efe63b39789203cb0d1bf3c85cce2d0eff6a07ff50720fde75122a660ff02dd3a453b169f40ebc298cc7dcd01e62485e8d68d507dcde2a93cb4cd613235c1f7fe1dc575576fd24d44889452a62204f7034b04f7ea13fabd7c93f51278bac63cfddeab797831053ee0a9000538a0a65d04cdf1b939de27cac7b095efbd34fbf2bff8de1f58cc9ccc5d34441c66035894faf46900d6098db5428bbbfe2d16555f7bda094f0fa916cac48f2240321ded8696e4ec084716175a284cbf40a641936ef66fb17e3fdee57f3979835a1e1f418e841089f2537445a78a0bd99417c128189a44fb02557bb515660c001d62432c74217145854ef680121f25acd848d2c2991e71fa68117dc5e918cb08e65b07b5584b5840fa3ad3cdc813280b0e0e16b61e371dfa12d421b2c6d00afab7574c9290689bc982feedd59156ccd953f5dbb09399b9129ac009fafaa1bf56c9715cab9ce49b6bb5976972cc7393875c8f3c04adc6bcfa010ecc6f678e793121941c47f2cd4320f93679c8433079c8796230a0b9c843d05c543de4f88717aee33c1fc40fe38790c774c8f1324c3fe478c975fa61a71e74c8353fea1072bdd30f2106462e9ea9071d7f517966fa01c74dae4b3f1c75c071939bba34a6830e8f0e8e7f28d5ede1874747f390e3520f4716d03ce4471df45107fd417718d5cf34fa67b28ee762ade4250df76b8331d61663c4711c5fceb6d8bfbd321aaf5418d51d0e98819d2b15573f7ded1d397d36d6d6d6d6d634ee0441ee74b042a320931d1eb8c3b3e292e1e548ab29669bd512b30dd75acdb042d1571b91acad4a6aa90419cf1e8c31c61aa8638c31c62f4119f2f4edf599763680d05a9de0b55622fa5ae3f33f4c765c5eda0ad05625215f82ed5470caab0c9a7a29ea97edf76addb04ca32fda0d621607e1215c74a97c065df519347fa74ca3efa5fa0c9a5fad7c73836e9859ea150f75fd45b9ac9d39be41e7e63e405b07e540a4ce0bd7fc527d0797ca775075adbe032718ae53d7c7c04df54bf5daf8a180e3d40a38a9ae3748d7fc2de0575defcf82bb4b2f0b93de186998a2e94ecf94d49a671a7dd3ebfd8d8dcddfe0e0fc4d4ea6c9c961f1f80c77257f7c80b8ceb5811770b90f104fe722fd06971f85ead5f1192e07da3a77c76f70b9e63bdffc5c7d93ae022ed7bc976f7e2e9b697eeecf1dca34f7e6e71671cd5fd47bf41b5cae733c394c8e68a77e2f502f4f5c5aa91761f897c88b5313ff357b60bb98625d3845aab3fdd54bb653a8cc1deef574adea29528a5a2943ad14b6956a6ba5c8da294cfd5b2952ad141b2f56a4ae80add4af95fad14ae9e0a6d67c35b5babbe2997bf718983f6bad776b515dbb1a2914fda57f2be553a27cdc46ad99b55162ec0caea3fcb00fa6168a540bc52bb4c23363e9690c4a889adb8bb4ab71044c6d4047906801a2022ee96b8d960116c514e549958cd64649f57109580b24d2cbfe2d30a9063046277b94a4fe6d94187d7da716cada735e0f0383723f33eb6526bf46e4a5ee3d83d0bb3a91935cfbdb27bfbebed328f2f59940c01bb006cd71527c559c9af64952d7363d0da2288a624e563d7879c2f120870738066992455883c6b0c571686eb804630fd58ba6d51c8364ffa4b22fcf2fd33f9b1d00eacf4f29781cc7ffffff118fa218528589e338feffff8f781c77706fe4ffff9f8377706f54d78b46867b2664112d588287ef6043eae1333c997b2ac126ef12701c863fcfa51e72be21f8404d8fc701849d0ef866c79f6fa0033bdfd86c2001a78bb039ca73e9c94b34c5c073b95c2e972353124420390ccf61e02b870e0393e357fd9abebfa3383dc7371f01f7ee5643f001dcabd926af5477a9c634989f557b84cf911d7670ef72d8400742a8b571cc39e76c935357fd6e37f833721270fa08385d0c39d639c5710e2b0ecf2ba98e576b54ef15ee51e19ed767b8fc7ca10463bf6861af834ea7fdfbaa64e7e7d3d640d3c518ffbf98628cd5356b1d6aad75a875a83fec0102c19a7c855dadc933ca0965bf79af36b186cf2f3935e1f63546c7ec4e0656a47f5bc5c65730ea2b0c8ae96492c0191957db426dc1228227446130a0244d49d13cfea99c19e416be7c7c0dc900031710204341beaa46e8e4a51a4a24d470fc0076e9b431fddb2f165aeb4c26ffa775ce598ba317d1ce1d803ba3b8135e2eb333472693f9a66bb52777a1e59cc9ddbfedd21abb00b7089a876195a844ebac75d714bde154b2d7ffe5e4fcb4ee72d2b5d65a49578ebeda00358dae15e38b5386c7e3758920c39097c4c585897cb21b423c7a046db5a5d09181812562481209144d229759dac537974b2ba1b94e5a2eaf9c5677fb7f1e885c4db898fadafb65212099b992b688684ee2a92f135d5a7b830eaf46e2527e058d57c260b8e17f393c0db4726238a9f16cc390c7f33a62b65e4ec6b36dbb943a06fd5b2f23520500f0eb4dee4c6e99ed73c4c30bc83c3c51d8989bf8872437ef6baee7a7c9fc739fe12cb1d79a9ef99aeb99d7d87080e341ccc6fcfe3052f9c1ed18eccc29f8cff924da7bf7616ac2edaa51a845f5821b2c7916fc8c0e350fc330cc9f1ff7e48b39ab156c1c33aa64dfe78d1daee4d3d802b2e5a32f4180897bf824da2b4f868b5c8ba909b7ab46370d021d6fcdd3e9772d299d5e5ce3b357defd998ec3985035e1f6dcd39055a3cbb3c64f670a9f23adb799aad9bce70a9eb977682505bbfdfc450c332409c3018f8776c09b83f2dcafcb97ed738433e795a411e617abba7d828b3b28cdfdba3c75ecf2ccb1731b43f9c1ed3872bf2e7f668b46ff764b455fcd1e6a79f5bcc3bdf4c5540f89992723a63735e1e62cde6fb5a4faebf0b87d8e489ee3389193bc1481bf7599e3d2d74580c4554a716f9fa3eb73f497bf062ede1d8e7db318863857983bbc1dab9d2a4e1597bf1653ff362ba9af677fac2dfd7513103b09f4cec13ff33965de3e4719739e3b8e15c87cd4a28e02791cefdfc79d47bcb845f99f4325a0444562adf5dbcf132e0f0240b78825c122bae5c721a76c8712b1202b28d0b74d6287fddbb21b7da7c9e8a8923df66fcb5c9030eccee6f1b213653d7deda128cb9ffdb8b783e9c1828383066766105044879521173ec01b3a6fc4b6c4c682162e5d6e499e6f2d24dc29804513b0ddcc137a45738dd395ec11c0f7a1dc1ecf65cca0c20b266c0da3a31448c4aa72073042c682c9881fab167f419328142cb4083905397205e60ce909c498941037b42e9b26f27d53cade2a4c745c2e1e881ab0493e157c281c807db2bf9235c8b2b6c2d7081027967e6250a5931a2ec8ac342d6185d8b05bbe361f8fd5e29bc1b9616b9c00ba45369592efdaf2662a7c5096fec7de8c4ce92224ec5279b69f136e0f165fc94ed160b85c437c0fa880fddd1156701efcf8d95174234a469b4eb844360566cc282a859f8b37265c9e83171ac0de36a87f1295e61bf35d163e3e95950200fb4c2ed9335d1b4f75b160c07e1729be7ba3c7fe1128236600abf66a37c983bd5593fb7466011b5669b945572fa56bbc570cc07e161c4eaed2930f890f013a05b04f2586e704120a56a27c6446ba8c909d18c18a174376e8709b8116e4c3ae0b5e409faff5d1f065d0c100d80bd8abf55937cb4711f28df962703419f69288f25564f8a47c24ca3a80fd263f25c78fbba2f539f9eec9ba58e2bb3f5c186adce384dc1845748b48ba508486a1cadb75ad779988004802a8f25d1e09603f0910ccb701ebe4c55260a129e843e1cb2c960f8615d9ebf46f41be17bff61575ab8ea06851a5247882874e58a487edd80f4c8b1c532a00a93176c29aaf000b605bb81df1edf0ed5812023d88b0e8907af2038c88d7f9754586f65442458a220158c1a7812df37dd09cc1e6d84783f1e503e183008e0dd92b26e2dd8e30dab5581545ed18a3826308d98c6da3c28905276c4eb098ee500d7bcd7e09d31912df6de1d35e2b84afeca7b2b050216237c60cec6ff97862e4637d6f4a4a5c6131a717f642bd570a22170805ec73595d135bd02174cb367d614e605074102b244eae302d1d43ff360c2c8ceadc0aefbdf7ffffffffefbf998170b297e70d76114c2e72923447f8604fb3c84fac7d79599a9c4c4d3e92e794adc3a004dc23b9be22ff60d76a09c69e551247897c2ccb5cbada7432d42159862bbf3171fcb4dabcc4bd5c8e8769729ccc37668e872a2e5d6748558baa6a923a0789a3b5d69a041c3225472ea67ca697abb1c9372f5c14451dee915ce468bad3525dc94ef297d4c64c39ee91b99c4e73ea0cee91ba6654c79067b57204123eac6badb5d65a67123eac8bf0664ae2defd30be7ed8fa6130a24e44c52d72cc2950716a69a6b7ef686ce210601326fdcfb0a2e9d62f3fa6aeb929d5afbae625b06b9edb38f5494ef27054759877778c51aeedf50ae11857086bf8e790819cdffd5f0f87e3f36aaf361e5c379293ea0de2de0d06f51c64f2ec93d9eb74937216fa0e741c03717a38fc16c5b845b830bcba0884aac9b54c1d0667d65e772618bb08da24c1f9f6f676626d1ed630a6a548f2736aebf81af76f762ef03739bd9edfaa73f01b61a67fb7e1f56fea31ebb97f53cf585f79fd5ce34242a50a70d368626204f5f97143079019662db87a4ea02c7a82b68db7dd250b6aa20cade17565f51365073dbdf8a12928edac1ddb440d14e9c52f850b2046a05640f8b68ae02e3b63aba03f5e40aba4b61793930b123721688ea433cde80453e167c5924fe889af2788962469280a61688cac8d630a1527280aa66d84c869c6e364bbb1b5c44047108595706a627f50116e4957b69298932d27544050e809ad8f0b7b868fdd94036d92c1c4629bbd0d01df429c635d501f58d023641badabad4a0cca86723a834ba81a907de4a88706cae58209c596d145845017160563db40b3bde50b5d7185ba883ab32c0972048d0a620589050b5329a8a062637121b1820b0874ab4d08da11d87ec2da35a4cc68d29304251ba2d5c27e62037d827192a1f0c3ed04348a9bcf1eb1e5aca276aa59418b686dada9aa276892921245f68e1e9bc5016505178a50195b4ca044b600ed145cc6d64e2c631b890b25a282a601f7094de7971174ea07151d2e661869e1a6e5c4102d415bc71bfa4216b444d906e1b551b04283a22c793adf7e2896128d1d436ab42fce52a0426d2336559b6fe7d8b860d9c69da14dc0ceb0acb36dca07b5bb9a768fa523251404124ac2682381b1af10a12d8226ce2ec11050de7c6c53ce5800dbca729ada6450a88d26d4686913518a8284aa601402c60e12356133818eb185d8626fe71536f4c5d95e02db6c59688aa916a05034f558da514ae817120ea30d066388089592c5042a9525c44ee18d053654c7d91ad8fe651599b282da599ad0aca5538b9208a4cdc5681bc14095885015584c6c255842ec2a6f6817db94b39d040c5d210b159b7a016a8735c1584261286d2b2435a32218fb8b886acd041a622d04cae3edb4c2b6c2190a046cf3c8929a42a1a096349d674b1b8b520b2454c8268d883609e3449194136f5746ec16aef40ca9b9c994a961e9ab8c0f339922b0beca6c266a5a5d8d4ae532fd72198c33f8fc40908f8020cd47ffce616cecff9bea6e9a2ff7de7befbdf7de7b739440468cb41d52545a447446a63e8a25f5d1c72982aa1b55822ba0107ab221eda8af356319f2d0ec3925bb7efdbb32ff4ef3574731357b9971163f25c38b33a91b45917f0fd3ddcb5c8a9734d34674acfb4002f77b97dfef3d2fff252473c80553628bdcc4a6be54fd66cdd79c73ce38cc9a5f7d777777b539d268ea617c39e03d0e393437730e18638c96d6f1051d67cc73540e5b764806b475ff162dacafff6bd1b2faca01eab5a5f4f57f393ab11dd3bf451b8296d457195d04449ba143434167f66676dbe4710e39e64e068d25459c0cc671c34e66e62c4d8b772636e2c6f1051de9648f484ab188189e2599fa8c8699f35991792664e6b6d584ccbc5e742895d284ca95662d2eb763ebfab76642768c9debdf9a21f59587a299e1306bb1c51c499a992843748787bba05ae55765c12eaa65673834479675996558216e87c77b6459fa6a430534a7c6b68c89d9b657d3eccdecb6c9e3a6b99381e9df9609e9eb0c301c82f189e212b21e018f8fa8248b9a124ac8666a1280200043170000180c0805c4e1300c6569aecb3a14800757c658987c48241e4c42612008831886610004601006611084411880c12804622afc006020e100315b2063669a68e485426a91a6c730b079a41d1420b4e5c06c2b82bb72f47d56841599be285644c5d2f0119d57cbb1fe1d47c64c81f404e1ad1c6de937f36c9270d63631be658383f6d799c828c03ece75344ba2a06d7aa37c04f56b702e0f6165fd7453203423c587bfa7bd41327646c4b5a066e094afda00b1d9e1896b7946020f7f03cd7226e3899ba838e367553b6741c0be79ae561946d6bde31fb00bff66169e1418cefe87073ac994517e4272e003c8afacdcc5ef45c7611d106375c31357b229209b67f67132976143765122642d48c722957880c4e857b4ada7f0a84d6ccdd88237419d79e4c1d0bf301c378df2e4e9e1a7fe2a9097658a8467945c51f02a5fc838fd82374274f27c68526415a3da5c1d1a382a2f43caa06012c0194daa5500d673546feb4e297c912f9164bf9295b8f3032d329d2c9e95a05006c9d919905b5014e8ee139ec8c0b287ea1fa4034f447c42c22dbe339ad4681a4de6ec72a6666ee06ba60062805d3ebff81721b42cdfc8ed43d0a0f67f0245152bd47c9b89274a8cfd086db6c26dbe23762d0183123343d26153df1d9f6e4bc7615991195bb322656af8bb3830cdf5faa46286b2de79d022b45b8fe7f5b5c29500b99f9d46eab19cd775a1e15cce61fc1fcf430c2672eeb65f215fc8cda67a7d7f1df6499619357050a34f7f98b34626d471ef000ac8189c7dac6398fb317feb6bfe0208e28b4c14c3d13f67272585134b88547c2feb29ecbad0044787d3aa798d4b480ac05022c01f6158c8f02ddadba59bd9d86618bba0862ea74e0cff61368a843c319b24c44a88f0acbd863614d197ab86cc2fb16fa5722cf44c10a836305943e1e9613ffa13ef1f805e279e01967bff4c44be1781c56b92d603b03141b238955a7cc349b4934567278936bf6987db5f8d7f88ab58096f7f10498223f40df5d194593e79cdcec8888dcc9e255b4acb266161a4982f8991e5af0d30432d69e4965a38cfd31672b4811ec1dcbfeba43b889409bac94f292d0886d8871f5ba2a26ce32f8dec916d88bd7fe9323d4426beb4616240be6fe0b60643bc0653fa7535079c8c8b77c2168a25fe56b9034bad058a1aca8edb648292af52229d0ad46a4afc04aa6d0d3995097b2589e2a7553b95511fe8c8ee5828a63677b3c23a906156340df1f34ce2fd5be0392988bde2778efef453107b22cb3c14c91416a05fbb6572cd0803e9d3cc6802e54b4f28cae25310515da6d115f99000c492a2bd189f08590fb48aa831daa7b8d71631962b867482ac5e0475d95f3d8647c1b6d688a4edaa08d408fc6f5a7908df58ae43f25c2a1d42c35b76dc1892d93b61ed3e390ef075ce24819bb4feb05b0edb8d5aef1d35a258eb6504169d2065ae4c5965432bbb587903769348d473a8e0720452858ec55d90d77f46da6bd03bb1dc6a4fb31b8770c902ae5f0123ae38ad695a1863489428893a691fd93876a3301e92feb21690b5f7d7e0a99e561a8d34a344b4e5ea09aed5666acedcdb643d4bc02feaa1f61ad3a13b800119e40923bab305034ac7e522d1b46e9f554e2128a941aed5a79b209b2d289411fb3d77d21a4f3e957c6a754d5066cccaa93b6058bbc5b9931a80be9ab01b88613e9ce460f90f38ec4561e36f41bdb9683746094c02018beba23d0cd7e739ddf76eb87708f549c5e62524acd8c61ee4371538fa347ee6e32188aaf73881953e9b6a0a3a83233c043b62a32c0c43be7f214a16cb266715752309e189ccf41b9ab6155d6aafcd4cd7cd5b970c1a0e0d7c0f32f704e6b2bc63b9466aa8b6be6a217ae76f8d5c7e3a78911a108d52155bdada823e90558c5ca86406f36970e1bafe4bed4574c975aa274662bfcafc1e346845f76aec5d520dc7dfcd94b90c4d7e3bad732492e208838fb958a722c9ba23e3437b18097f71d4f6528bec4aa20f99275309b36aa393cefe48cd820120f0b4c2c5b0fb69cb284ac6fe10f5c930c0267fa44f9bf24e509544c5684b47669448194a9934afec47e32e13b7db67280501193cedced0ac1c288edbf35c205cb282a6e041f0d4088af9a0cec6f396955077305fafd52720a394583e8c6b9dc151de53abff1904a9bfb5ffdbb01cc2a9148f58312b292b00d57eda7ccc417e13a4cdf821da8b94c1040d042635b05ccb16e32abacae7daf52f612e05219f939a97bd6604aef211ab18d9da2296ba247fec65faa7c6553e84c25660b94bff8e36f2a662c248d42c3c13e50b03e382cb4257e871f45372302c36688c44093bcec756d323576df0cd5ff811802110b0a72d5c82e9f13ea4c007194e44c462fe40a0adf4206231ca41c7f646a1feebdd04eaf04f764704ab5b9191bea0a89f64568a7820ff8c802f648343008776b640d9ec4dc517e40861a19fcb815e6f4037a98e6f616deb70859ded0827efa688c23608d4c9d4d9779e6040745c061ce04342c3fe7586e290aa82d9af40387799ed1b0f16cd46cf7f9fae984994658c3dcf7960215a067a4d73c58ee50d19be4481f4e27fd61a2b31d09c09f32d7c85a2daa6e5356fe24929c06856e723024ca00fc1ad00923f8a0b2674946df4e9e7ab6c676584247992f2f2046fd4367f46540ca5824bdbf86b6b6e4a74457d49fb93feb7c792c9d3d822537aa42f658bb6543280126b7a2a0f814afcd7fe0b07257635363f025f025de23ff6e7f233ff401baa1e17c9ef68aa402a79da0c52e979d9c461096577374118dc5aa02d11ac197fea7f932e8564c218cee7403d7f6e21aa80289d8e7568972ece10944b8aac82bc847f0399b744ab83df5a7f812b496dfa4ffffffed0af755390590cfb77fbc17f959fd6bf87f42597c57fdcdf3d75f5897cc8f3aa4a2ed0292df04ffefbbfff8ffcb6fed89ffd3bfbad3619e8c5442a5f52af0a9e12cd0c7ec6eff1fff9dfc05952ad5bfe02b86469257fe7bffb23a06a9587b63c4d73278324ba925762541714f267ff26fa11dc4ada2afffffd877f60ff047c09f06d42bf64afc8fa43f44b31b40aa012ce2ef35ffc940215a91fd9bfef77fba5a6c3aa763f825f02551dfd0db052c7a2da8f0052ba52e4bff337d7b2476e392d63ba83f8ad8254496d0a7f8cdf6d2689302aaabff90ffcf6bfeba6d661539e7a25caa423e25214d46cfea3faff3fd0bf6eb25aeef7fa1df423502d2916eadfffc2febaff065ae9b48c81be44a9caff6a53417aa5c0534aa3ce7ed6e4058c49043569e34a1c9972128b29fdf1fefb7ff83f41b6e4b28fff14634b906b0ead12ac66fe47fd057be93915d1bf64a76efea73fdc5ff5dfc0528a3b834895e426f4e7ffd6fd08de25caaafdd7fdd3fd37129400cd183095d845da5f2095ce792d3c4bac6ae39fffcfffb25fdb3f81bb042836abaaa42eb7f90be092d5aefc1bf04bbcd5dfc9b4fbc42bc27b1e1dd67069924b0b5e62e14838c588a47abad497d510f4139db59021983f8c28432694bd4836c2b3e3e8f467fe8ce5d11ede3666fa427d163bc78a933d0af7b1fc7c7deed75537971f1292d14507d0541cc25598b86dfb1dfa2f7497b014a7fd0878494019fe88fd2fe64af0aa02a8146f997ef707ffeb7fad7f03be74def6505c025c15604bfe5b034e29d3abc05402562d5c25326bc0bfd95f22a6e436683feccffdb9df06dee4a842d9509ea135ebd08b4c32a8cb7f323246be509edfc420da2559dde82fc095786bff45fe0d9a4ba436055409c2d4c1b984a8fcca5293059448e929560875c81f81a644c22a184b986d18909678ebf7dba60dabe95f526fe9c78540555253ea5fd1dfc056f28c318096726a7c7fc155c24d21c84bbc54f04ff06b7fc74c1610adf9cf98c347290a095605460329bbc2817f2156e22f4d7ef26ffe6dfd1b3825e09af6a7fba7f6efd05f9298793ff2f77f0b9822ac5c229eb60731f43fc9a2f8c4c2e346af44907d62214097bacaff5fffb6fd0df812888ce2a99434d8bfff877faa9b220c450d18640a641988180193327f82e7fd453422e2049a6be12e915b23fefccffe4e53f5aab41fc15af2abe75fe59f0a93013b4beddb43d5517b6eb0e29be79ee75a7ee90514223eb5a8b477b0865ab2a386f89630de4f3405141e8a0106b421882e64bf9736fd953b408fe806590395322e8a6445e07884454219fdbe2909d15ecff7aa5ba27362a88ccc2b80151a17af82c29b87df117149ac2cda4eaf185dc57bd505015513f5c24178a14a2a667ad19a8cbe2cd8dcac9ed011b6d537ef7a41d33188969f4cc13637a65f90d4fdac50e7f1fd1294226174e1bbf0f97eb9710d11d6e337f6dff002526fd2336d805b5dbddedf61a5892d020d1fbe0b29f06c3079993429672ca0c6e54433a82a61d4c5493082c74d572dde11c3b6a8b4f56b7253e9e35881a238006cf6a5c480af00b9956f8921a8beebfaba9c96554123f7261225542ac066b98cd8ed7bef0b32b0a09e6c76e8d096b702803fc37e8b6edb0f991a87c28db913bd63336631f30239cbad5fd23a8efe960f6af48af951e92b7ddf12495585a87b85925458cfb61a7b0c25de58497cb7798dd6918d1a3c90a85450f304aca0e6c8f5db40032cbe9bc081b4a59b61d7f06c52ff19729619b6f5bb937d862121307a4d35df98511fafed7f46000449bc2898433a7389078a45e70d889795d19bc5c70a684da9fb60bd163c362ecb7755a0ec60f1ab118caee60f2dc051adf96c5d528f69f9593e922b29b73d64712c1cc3352624ca29bf72df3ffce5c1647047e1fe1988366dbec9aa0cd5a1c5b0805340ee5fca26e4a3d18b00b4c6cf15c384a250176a1e77062f98f77b2ed599abc8a59f0400db4d91245a4e268b25f1dc530edcdd49dea8682f7fa109879b274f6a2edba6043aa34b630fbbc6c48ae56d1ca6634cd965fdd213be73410c72cc9886c55d1da218967da45e033718cd8abdf698c18368a86b34f44d6493106d9b3514a460b94002de6b90bee4e7428d24fa0b962d70f86ec4ea84f20ffe75b7d871d0dfafaad8d7746aad7f64d8efdf66ebf03d1c8bbb50c2b788f3904bb73af5809d628b2038c67a572db058f212f8a194b8622de25c7b9a7d2884d8bd3c3e2291f3e21e8dfbd14e9a76c1b2059385ad4a5fb26a964bd985c8ab9a7e9c62286bc21d0aa3e04dbb6dfd809787179f7416dc7a251dc01fc4073b592947a14c953bc7b7c7ec66897e1b23e58b412ad2d394e6d16526f28e5cfcc473ac8d37219156f6b621dcd1a6058af5a5ce504f523a71c07ad40a10369eca9706d1988aa4968402a57a3cb1c8458d67cbb8111b8aa0806c3a126ff52f7a4058cef1907e85833b3222a8ff9295c1fbe640940e5a3ba142813feebe8b4908f0a8b4f57b9b231e69e6f628c68dbe46075d4c25a29f8f8c3f57208c65030c392959302eb98d8d77c3c70bd71f7abeca1a6607928e13da71b0a670aa986eb8fa5386b8af18902ffd5f5aa8170b549a26c73db2ed856930d1c4805e3d4e73f328d6ee73032159cf5ff5f8aa9746cb5a2915aa80c1f8462a0782529d8cb18368fd419a25f438701f0ff43ec8547f59ff252f0fed674c0df54adb1b559a95e5e0d47c5ba25724cc20c9ae7ddaeebdcf347657fbb87250e98582244e2b894e50d9b7702db3c0f6b38bcf0120cf3ff7110f6485e8b90e390484a33b6c7826262a8170df1a96fda3ac67037150aff269d2b882cb2000a841580e1fdeaded16be351b6e87bfb91589bc79b053dccac84cdd0ed67be842ff1d55b36f0762532d79197d78fcd885e0f1435b4e6eef6d0f3fd443f82025c454cf74073daf2ad5671e77ed34323753f96c5f443e5a6d5d43a066f835244b7637b60ca651d29da611a97548e441acb40ef70da9032d123a0aec3757e84cfbaa7ced61ba62603592b9abcd7b7b07db6d085a4f671ca562b0831c422365f97f58c3f56126392e39a506fbb3b8d1dd346ef6a33ca532594ab2a20a5571a33cf14117f83023daf86ca9caaa80f1d91c95e1245a65bc97b2eb60c6b0f0e77a04045e126f76ad7f6c07f15654c759a3db0b043bf392a1454d5ee1ea983e430197fb8259c97bafc0b424a0b0785c42acbf887d7e1128da852528657923174aee7e60f51117024c516abb208c5104af0bf7e7d08c3cc467424fbc6c3292dd294a908461e3bb0b49da433b855baab3443bf65c1ad52cea368701a2d22485245a34e7571672841db003c9029ddd35a08bb159d83539b39899990e245cb353ed4c07be95b5d305348c929fb31af36871036a51fae98b49d080ae33b1796feca9e54b51ae115520614379d2c859787092484da3dae1f7dbe06ba05cfee41c83e881a994cbc0949b388b584d99c24c0c347907b67e1d97b4ba82035cf2b0de03c51da3aa2634f4349f18d663b00df3973606d310a361801bd6cb22a9c810c185d24f87ef6a1c4e987471e9799e801a1f520d1514cf06e713680861483d093607c3e1eb8635de8219484b2749b1a35f7426da12e46eed985858654a5fd55157212c0233c125b8a8e67642149c084e3748682794615ae6d9d19e9bf04f70435919ebbc571d3abb93c0c01fb62098dd4288a019e8271ea1c41bfd5d5d20a6f9ede336e01ca0653f7d45a2e0680e08ab8becd7a1338a205c03e31589a57e9978af69cd7a8ce7571423b7c614b6c4517f1e9449fbb20e03f8cff45bb058e962a2d340c3828c4ea9ef35619430c4cd6a98ac51f20c0e33191a185f94b3d489bc67e48730dc5816f36b108737d1958d729cf0c089a5943f967ffcb7645b5e245809af33b4554acf543e8a49ded309ee57e889047d6d60f018ba4f082d5110ce28e42955c11ccca56b19f96ef3903556382a272bea3b91c370fa74b35045982e5daae3ee388c890a59bcc6211bb2e76c1710cb765db993a5005309b7077cf52ab4719babcc629442c31f1d103b3994a155bfb3970970bc881e278b29025eb21a4c396ace977bde8de2c1d2092b119c3e98506ea534b18dc8e133338b789aade0021ac55c4b87fc1ddac7c8e2a69fa5251c65ae03ae1b43f96f21b1db00f94401a8d38b5f64599d8dcae56c62e3df2cae0d28ec6aabdd424cf11959506f50e208fcb1243c7ca8c6b426992397865ed23b2437568314cc587bca5d97f1db92bc54a205662c3fd62e4a919fccf668cb5a2992bde32b7d66c7663c5892ee0841db18b12ff24f7c57472066890960c19f0571fad5e6767544d7635d3799b41390ac9b0c404e44fe7a79358052c28b8b25759d8b59011a803e1a10f76a8626a711fee51602ebc66153e86d8036e2bf1ec56edcb2c264f9aed91afbd79ea6102c94dc8110e6c3b7f0000e32f50ee758703c35dc01825dd6d07e78e49d1345b535881725c145dafdd00959d6f6b2a7adab540f8111dd00ea280aee4424aef6049812ab2b4a61b71139717086040be8925465b6d9abbab1cb4c3a8d37384d80a5f7dbe11ce77c6a71a0e327485c28f53efbd5d9092c8d73a02e25063afc01d2dcc5a793c6663ba38646ea77907dffb5173cc6a653d257c2e0ddd1ee3153fb5713ef3bbe06da79860a174ab00f9f310d38db2a1c53ce7a6a80f15fcddcef343091cb90fabe2c94d06bb2c7fbb1f9ec9b04b4548001f83aea632f46bc63c7240f468e122686d5ac9cb64739d39a335d00efa8cf51b461503d792290b0d352c3c53d3ff04c70f5fc9106be1d79009da4696255046baf36dbb5f23439966c598716e6d55063c3178498505b0dbbbbbe833421c883ea7a0a89d98ba6da002c32094fe5618f400855e895c0911de6468d2af141944056ffce003a5e8056b0cfc09bb7627e91e31cbd53c31ecb02f5702f4e934c368c9a42b8ff125a6df6cac9465527567dd984e299e2cfb339b8619662e6fcf637978c6d58f201e01540a5b1eb3deeb8e6560dfef91b4325b8e0077ad935aefea21d3264fddf563d68601b25762836a6611284667da97270c7266ed98346dc9026fceb2343b186036db77101903abdf2ad0f047be5016b2a4eda18fe6a9d1e808bbe61db6c3db1d5164b996c1124181c9ad138ac8af23cb013e37d7d8e503ad5b565008543bd4a7cf392f105019d1d96cc6dd6a6ebb0a1e92ae83964db816f4102955d7620c4767ebb36dfa347f84dc711078ab0f954cb71176758750122ce1d1890cdfa857ea59cea6fc8b0885100c6d4b32de64bc68995667e69cde274fcfaabe4d1721a847239f64e991761814d7173dc30f533a172a11fe3e182e90080738625b7131a6fc2ea0544e1c82491db8b9095412c54a42d4f0f99f73c1710f4d444ae5e6efcade6d6ea03c6fae957302fe4483b726a03df7761e74a8479a7e7d8f60502a9607c7449c8de434052ad94743670d5ffe0c319bf77b3e4f5ccb15d997dad4c7c6d234ec904d8503d48bdb69a972216f7e69c03ba51c2a56d3313e1eb4ffd3097a21b49eb068309d7cf45acad9d506d7ecc61e57f16e4550f533b0819fbd07b064211ecd950b083ed6897c3f48028b352784e1776409fd6d89935e1eebfa26dbea5ca2f9a9b77faf8f770e8fb587c0a3019d9236e6a74fd607a783f60fe17e20d4dc9e9b57cfa67b49187d864e89716f94202defeec23260b64a3c50395f689cd5bf823dcabea3a1bb0cec9a4a225702b0bf33e002ac682f752d5ed97f3cc176934639e49e14e6d7de91b036d114bd5bc9109d6ce703d4c1a07b444a3869278f50db725d96364e959cd63b5e62e101eedd4c8682560fcc3f40e4d1bd28b72e6bccc0d97c412ac0e1f267b9d7383aac7712a2a1515de976449f3bb88eb6fc31bc28c9ea5d3946b046e0829fa3e788d19ac72f63bb12a3b3e11c455e49d6732af76a144fff0690d5ad7f824e1ce6ebb66970e05b70ea12d7755a128824d931c30e6c8e7a865adb1e475418c36a9645c6e40d2393a9192f2b7c6a1ba63e689e873c872a258b2692c8f7624cd8716934a13453334121986de1a9093bfa32609f5e09c9c1af7763134cf03e3d347a41275302b1acd1216c4c20c4d0e2b1d3111bb98f9b2082ad54b3ba3527dd9d82e506c05baa989e7749a7a1b9d3a65297095fc973d3d6cd8dc20197fa6ad7b85812975b8195ee35c9cf5a3a95c5a4cc34447441fddfa396994bd7d7cd2bb2d4c879ac8c52c14a5057defd26a80b79a18e8a817f4f75bf1b292f5654a7d313446852258e7cc2c36464bb1a8cde6b701547427711cbd33730447655be3b175c795d555cafe8a25ab1274ad7825e11f887ac3d10e7509adffbe50c2ed946a421fbe59cd60a0af6e64f533f043d767a455df9efa0717bc4cc8265081fb8f88305428fe91056782b04f65fbf4aab00914a82c65eb225a515935a668f3052304a7f07d741cc74c4bbf6a6d46db6aac02f521f73572bb9723192b2f46e0d584c181e5be85b32d3572e9a55049953f0aa2e0e65efb3b7115a2a5d84493c4c275a3a328fee498e4c6d12aa2eb9ddc4006e89114ad2befe717773403b03d7915b921a33b2dafec096984aed37ee66df05ae0c760829aca07e1b0c8a4a1dc7d5925c8025b97308df2ec246cfd0052b9f7b276898f8a3848c54f078b2c1b6dd0a45e71a35e9803c03a89abc8f0023c26287366214f9379daaf5032cf30b2084ab9c07ef2511e56a896a23da955689f1f84ead2c5ab9013f25dde604ab2a3fa87151c200bb12fa1759be91436b96b53dbdad2927ca054e7ef2316ebe8acc0b8d275bc2e54a7f4f80a133a49b3209f976661b26f623d82c0d95c31d9eb973fd00abc2662c0ad3265d43b7a2be81bc2ea61b645234c426bb2c84d16e08191b32694f951b9cba31dd02f1438e228fd15d0a58d32ea7ce469ee0f0b7323e4ee37662d4430bab130f088a3887d9b9236464ff3107ca5437503127ae104edd2cecdf57cd6374304303828692c9a294cf49e1c91a4604bad0a33e51efe2ecbc0df6dead10ade438ce0a101c8eee0ea34dc3d49c9c812348439736cefe8de8c3995f9d6cd4d586d6964d148f8e77ded9acb0568f5a7d51c57b18341a20ba03bda8a0f0806a3719d6500a22800812094418fa48db4d8dec7e5b56fc61073f9174822165baa6233d308011ae44ba24b44a444129ca057f19ac84cbceb76ff20bf31a3ad3a3b94ea188b8c3bef901b1aa5b7b9b85220e3102d7bc214ed9844bd10312c23e37f83303140312b0f9c5e5b8aada70c17fcca3802cf0cf8f641019a0bd32aabb1cc5f61135e7003f341b4cbbda25f2c2394a1833b11545baf151d5b29ef467f29f2b67b1d49724418a0e4f4ebdbcb069407fb2fcace24d8dc72113f4b7602066624c426227322cff9b61c4511885da659ef56bc1bcbc68c31b659cc3497212bc9c08f92d783b85c3058ca15330d3f20a143b6dda988c08070b36bff09dacd55669a7c97dbe1018c625ca707f643835154b8fc8aeeb62670c15d1b58258d694dddbd5066f56e2151cab6e0ccf9411586111e2cf8c6b6eee0fb497bea9e276e66722063506fba67b5fd7e3f1fe037e96accac0826192be7c2f8217231d186686f08e0ddaa159be55c74571181d3891c12c75d24a663a71cef2c11232e7afa6d3473dfdcddd13fde38a2d59ff30b42178587e354ce687c00215f51f0ff8fddd5c2fd2488c0f0c2adc971e93493bea2b18d4cb192624178df6773620aaaf6137cdef255d10817f29b4827fe9ac6fb20906cd3c1e35d4587dd2e62123a50701d2f3362fca575874b619abf947f007596a57325adb8f0d7fceceb8ba978728d57dcfd55bbadfc2bad33e92d22b9be0a5db36d9639e07ae1d86b3055b4268b5f8a4de3f4817c88af91edaa1738daf3a9d960c1344cbd120248b73b5f80075d5b08e2af494ae07607a3570bae29d1b6d5c0de17641ca84af8745bc2e877df199dd17a0580154aa211588e2280bb20169d317123b6a37874ab9a8e1551f08b457ad2c711259f53c1ab2c574242d35461ff74156aecc27c074c9c2c88bacc20ea3d143ea1fb7502910fe2add39ea0f1aa59c3730d1c70f7aa084269090ed9b0c05f4fc5f9392f9c95665bd2c2d05df0e4c3132e6078a1e9d5149bac758a41b490bea2c28baa7e5b1cb5d4c93be1f2fb9b0ea078594fb25dfa142c3ecb2e934d51c489f1a273a4070c8b4ecc580fa0029b0b6a8da6b92fa6a0ca645199c0268bb4fe84a70c3aef3b2228db0ea8fc263d2aa720b081c677a1ef3f45b7033ce2fa6a15a36e3fe3adf0dcd34a3311e8e89f1e6724eabde69c40af75f438e901a3044989886f76a47ee5e59f0136c26f681513a872343073c2f37f2233835fa7e032bddb036338f06f663908897915a1c2e31d863588a47eed2287a926389344b289c8a31f921c431ea5901c9290278980649688f0ee348e25c4a72c09c30b82528610ba3518c38193802338d1d4bdfde0caed2b96bcb9dbd5b7a97823c3999a4830bb0a145f71440c887666f5f801dcded53fcea3aa6114f7de501c26fa345679651f29420361e424b89d352a860deb848865f13acc9681ce87462ff4a7e5cbe4a8e761db143cb20cd7835da46796da5a1b2ca9a8f3fc9a5a12394a88c2621dea2d48ae8a8935d45c978ac30013bb44555c13e8d2a01b885c8038a14f02dc12ebdd1439fbde7e87d90c01e3edf7230152d75b9337053278b64d736fb276b632b279cbab1a3194b3d26922db0ff5b5d9fc6a220339d2c0fa0d9b61000f1df6e9c1d9c10000150f0af0f58549eac17fdc0e1a7857143b75b0c6fb53c75fd07652f2635e0cc0cc4a48670dde75a048a046eb3ecba6d8397abeed041bb04733ec9027e3240247fb00925b1ad38be5486bbaaf85512eaa1c4afe0143388accb57a3b6944b1c3316e04a289cd0c7dcd2cc9b7394b04cce23beb28fc1f43329f0128f64c3c935614f9c48ef573b15b3a0f9dbccc7d061e730d478aa51773d189d9209173df0c8a03c5e2aae84ab4a462b31cfd0d4f77067a97058bf59e2f40896aeb62320c9907c22ba57735222060c1aae9dc516222ae929861ee6d43714a432b76eed1a24f068c0b4192bcb7a803e833263a396f843848802e669c5bc830ddd35774b802ee7dc9d9786c7058001ef64615505514622a406dbe17591c7865a21415b29fbb700c60c27762d7e34e79230943d5b94a30a1e47668fd4cb927ff720051fd7d0403e07773ef885277ea87685f51977fd034a4964717288955bf48a07102c3278f57e6c8d5796f65028bcc43b8080526759ded4bba1b65f780111f0c772499fb91f0421df0eb571227eaff83824f7e25c8bfd095ae2795ed3d5b1605e3801c6b3875e20329f81be6b3fe979ec72ee2921fb10f600842b727da66187f13f54c111dbdfa653175ef5d530460affa148e36b62516cf4035a3c703147a7a1e7536a64c8f2fd6bf51b21d18d463fb21c4fd4a3ea6e1a5e2214a8f6c8a21c1b2a3280cb1ce47b20611f4068b0c8cb5d5cf237f39e1b4b6dbd527fe82c8b445768383343896381a520de163b7759f470e960f1c6359cd0f697b7b02629a97d15960c1d40f2bdc0edffd15a41ee09cf49679d2a3a983cb69584ea2fa74ec3676dbb1af8b521aedf191bfdb4ce18949b71e7e2bc26a5a635c14a7f8c1d021e4b61d2d0fb45d6bbd73ead449c8af72c333aec67763d2c8600f4edf4862680c2f3d2a18ba2564ceda43ec8d1a4e766d106cdcb6b2ab8fcc3ef8d3f53350cdbebd9248aca58bbe9ec22e3b9c9d039adce2925e50948d710e197f8e15df7a4700eb8514294c1e02da0dc463543b08c8e5fb0eb86427c6478095116f58d5e8ce163a33d8efddb5197bbc5e001802000cc596c194327dae0c066e6b544015249b4852cbe57680ff5df95e5a5ada444a99a40c4109ea08f60876e4a45d2e98d3887ef93012d12eeaaafaf443caebaafa2790f2a3f4284557d53795a2abfc4b6576557db2ccaef227952657d5cfa3f2e4aafaa2b144b9aabe58a25ce51f96efaafa60f9aef2ffca94abea7b65ca55ae52b9aafe2d4d5ce5ef72aadd8cd0dd74b3babf9bd5516e56777777d72a4e5d5311659eb4a0e10637ebe3e066c53e0869eaacb18dc30d8e72830d8e62430d8e42839b350637ab0b2e5ab85959b859579c54d3cd8a92aad59f3c42aeefad56abd56ab55aad960ef944ae6fe228266e7a0b2994e9b6466f49768c6d75ab05fe371afd19638f74ab25d2276efa28b2d81eea4f3ba7a99b563bdd01016c0825156471d39d1ab6fa2eaa960855891eb0200636f8b08410bbc2d8684c40c4a6f5e50117f8c1cf127685b520053839d874a887254420834d755001091c1e9cf4868dd8c00854b0855c84508305b173b86438b01e36755364d55fe9706a60b07dd2201456d52be18e27b6fb9344c8e25ed9f1c43e4f4824e45324fa56ab95839ba3a63776d527cdb1eb537adbf56bfd1ab3c78a8308e953fa678c6d62a272ffb4213d7dd324f56b864b4f3efd54aaa45f33cef4a5a7ff6fd2af59e7f1a6a78f4279e8d7ccfb788fa77f3a7de8d7ec03f98fa76f3281e8d70c3c3dc8d3cff9a45fb330e44f4f5f1443f46b268a7cc8d3f73c11fd9a8d232ff2f4efdfb719d1af99e85d3ffc0af5234fb36659ad9235cb7fa5eefc74dba0f46b367ad4d3479523e575957d91d27395fd90527495fd53995d651fa434b9cafe47e951a25c65df54beabec97ca94abec93a5e92afba4d224ff196367dd1a69aaaff6b4a8b309d5998431447e7110924199ee2411db2b75d75ab6906c963986a1f76189fff45538c2d8f3c0f0591cc83d5d89b13995f03bb00c2dc8cd420edb94fe2bb94a4ffad3b5397d761ce8bb03b9174fd7e6c0d27bae147d38aa24ea2aef5db29ebdb8cf3d2983ddf84b255d91a568e3519f9d0de939970d3ec7b9e490f42e599fdc578f54d29588d7babbd32cbe390d3ad744188ee8e658f8294b7c167eba1263fc9148e4e5af483ed415ccaff0cb351b9fba4a144bee71495f548e4a1bd2bbec51249530bf22895e7c913eefc6f85da4c73f962bb13c596ec93d25a590b48bbaaa1b795bf4e74d21b56be422df85f4d455e7dd223d8230bfca4fd2b317f61f2c65b0fbfe475de5ef71cfe2bbd3233388705a8505639fa3cde22258878e357047dbbe0036a5bddcf628a404f011dfea4f5f80440e12373b48d46c2464f679e90e1215b0160998d30ef4bd08db754e30a32911f6990a4286b30bb0e9ce11b7fdbd494d4cdc745a80d6f767a847aa9e419b5f01ea875fe95d1ce49191faf68591fae6fe3e1ca97a06737fdadc23acbab9ef5bc0fd4fb7d47ade91baab56e11e7ff702574fb305bab23f08ffeb3896d147463d83f959f3851156dddec858d21fbff05a3d03f754d311b01cf9f40ce6f6b4e96685c144ef1c11b4c10f5f60a9bb3ea9837cdead47ec77d75146ac288e88232d77d3678d36d5ef8925ab262004a96ea93e5afd427dee47e8777fdda47a0673ab60969a3d06a1b5b1ed5f2368ecd1895fa57b1972e86549cb8ea55e3d2283fdf0ad0eb54af85e9ee153abdf67b6fd6b04ccf60fb9ef3600b3f1e39135da2b940ee00c7f01d63ffc7bcb3bf23e3c6b37c2107e3fd272777dd66857fde077baa5ee50fbb800fc55b7d44df5c85237a7af8a3f4bddacbaeb06eb9dc1beeffbaae3281ecff7e11d67a8db7e9f1d65a89cd7755fbd5af5f116c4effb5abffb901b67a89c0c350c39fb9fbe5df75cf79c4d03b65a0cec7bb1edfdb7e3fd27b4a301a14d432a92c6174812e953a84aebf90912aa433032b21b1b3a35a01b7e739492488e30f8e6f4f54ddb9e16ffbc9c0ec5f2657672ef2a799ca1d6afa47b34cac03d777aefdb85154fa9931631d890c30b1e5e62eefb8aa1066aa1d78588264739bff757e99eabe30c9506b6ed7bdecbf06513f77694a10b45ac572a824558c3c6d9fd9d0c0c6dba938118cf516c45d07668b7f7a521e4b79c15ebdfa79c27729ef7f81540eff8823f7e4e0615dbeb9b33f8777a84d3339856464843236445e01411b3c3110132d539c8fef465f0eddfd280187b640673fbad343b1980edcc08edf3d29d991b3b33b69d99da36b95985dba6e10b21257b32dd212268d3b00e61db1568d72174769581d42163c013f3c30c9c606384280461e30732644a157250840c76905304133b437860881698606049182c1103ddfe20e0d9c1c0d00e0626b044777db0bb6e678898dd751d29039e1d19dbbe9beec800edd3c44677789bc56e516d47a6c68e8c4f092a0fb656e782407b648317e00bf4cce0810a405b57b48881811c044dc1024dd4603456f66d0f8450c213020556051e9bee0851c4e636dd114266098fcbf1dcce0071efead3c66630b04f2bb3353390d8a7a5e1abd3ded81adbbe85e93aff71db8c1ef6e9374afbf41c4237af719cb90410391d90c20c1947ac4e97dd9f7d3a0d296cafe1c43edd46b73a3d4787013df4aca00a1878a2092530be21a4847d561d430ef3178fb1dd5b716c08e1ac3a3c3dd567dbaf346a4002b22c60f08d640958dc7c3b31138c3b336cb0459beecc704148b313a3d9b1408de52eee387adfbb9fefbd972cc169460b4c56f0c30c527002112881c6ca67c4583044096e2180c106786037dd99b1021bbac40eb48c11b222cc0cd182e84f4d060a3dcc8458a0031c6a9023c081e36b399013d800081b23d841136256d767df3f35b1ef1448298802147ad093844c049e58dd1d0af460870236d8a1408d9d981c6cc59a0392047587023dee38d8be43019d7da64e68846e3d5c9ea72ce2d2febd24f965866bfd9719088a2ce2e7fdf989f7d3220641be7fdefd1ce6300ac217ea4e91294afd9352fb16534a51eeb56e77ec3080574d5b75b3d45b7dc8b5be4381b4c9a6ee3d0338e173a2eb3a1d7c4130b940692eb20dbaef2e0d48a08292128850c211bb2badbaaefb5ce4d3ef04a1827d9ade1148e07ddd0cef04e181ce3b9ddedc090203fb3cf11d1fa8c03e698dd444ee36dd09e2879df3e94f9beec8686247c086ad753c12aa01a8946ba229e7d3cb68c13e4d6cc333c107a24ea71a90287d3b328610bd193b32623b484c201dc11b02fe01e7d3ed0051bb3b40e06c72d31d208c980969ea4381daab0560c140370c749b280fe9a752dfa752a87713b5abf5f4f942349da2904f9c3681d9cac2989a189c9eed3b41e8d8eef55be1695f74afb5d6095020ae3b054930a0e0e74309e49d171893d364d7bbc4ce8b8ded23082b095382d63e610c12e860c289956b063e800840a0a00a2bd78c9b004f0f2bd7ec83e19a79ffc3af5c3156b3ee57626c3c6a94a84fa136813a735afcb487f5e90ee81c40b23f7d7adf42b23f56e73d3ebb6d7f06277764fb3130170f2c305eeca0430e5f95d8f62fc6e1b6d4931d8ffed55c9d036b1dddef576b1d41f7ce2fe87e3fd047ff5ccca2ce1d3b7745177dd9bdcb9f27fadced08fc3ebfdde7b78a380c863dd9ab3e5db6453fd2222d0463b8666195c675bad6b490c501a227d5115bd43f57703004d420a4a99385da4ec56e68d4c86866645231d18bc61fbfc6c4c0c0bcbc545885b95c3cf0c0c20203c68b173bece0266561d68acb1e994c9ee7e1a7bb6a56ca66a97a04ff994f2e6cc9bea93c533023499f10d829986d4b07d82415327dfaa1777aef4725ab25826f2a4f12b64dba35faf0c31a03f352612e1e5860bcd8c14dfa3ab849f14addadd18b4fff2ca16dfb62d942b24b62ce5a7be9008ead52be0d4c0c8cadc10e1b14b17acd1ee6e587094c9c60f59a91bc94c06e1122e8010f56af598a12d810d7012010f1b27acd500ce918d1c824e182d56b86d2717394168b7b2e05314842b67acd466e422313c42047cdea351311ca51a1a0c48e2aac5eb330c70d194c8837825c21134eecd8b17acdfc7ff8957eee59f753416eda1ca5c5b2d1fa35ab3fda51051d8460c5b138cdaa2d7887bcfd181beb56a94b625e97c090e8929714ba048642a786503aa56344a76e223a2514ea540e51a76e549db2e954909b16e37b6bfd4c5f887fb516fc9bc2d91606ba5bf0e65eb3c86ff1f88f07f94e8f80901eff47d96237f71e25abdb9ca93caf7e41c276c937598e36a9a44fec5c8e40dbfe7ea42471e32bb3fdaba615bff8f5ae801f5a50abf8afd477accfec6f29dd2d77a794a003b00fdb57c7c4945e86866eb71c39360e0adad866dbf8c9a05cf77982b3710860b08df5796f2a66db2fa5621ce54cc5601ca5d3674a56ea21bbec160bcbc5dd1b4bb159a86d124f118190b552f70a3d636c8eea33b75aad16f72b2b559f94dbdd77d6bb8aadbdd6524a29a594524afdee08c95bae945482bd65ea567bccd6843455632217b9686f6e6838ca8a48a3a64626a3a19999919189c5626260ec4b8753635fdcb4ef89a348deee5ffbd66b1c278e222d8e2295f0e936b93169a46a5e86a239cd9864724c8cf160b63dedcbb66f618eb222523761577c56377a518fa26775a3f1c30fefb5d65a6badb5d65a6badb5d65a6badaddf7f35762f8e6cade37bf30d86fd31f68a3d6ac318bb0b8b63605e60433a6e42396e7434689fb5d669958ed35ec3274255e8eb84aa684ab17081839b9556856854083f0ca98ba2f0bb92555f2cc36f447f54cebe0fc7effb449d57da8c3efc6ef4e7d59c68341a899d68358618ebf36ad1c3f8137fd4acef59e2e3927b91682506ab5e15d17f1fbe9f5783fa148d46784467221177cbee4717b06c21b9e7d5dc57b690ecaff57d25dddc8b2e22dd229d56c1faeaef8990a6384eafd4eefd2b55113df296c71f6ff98a5e34fafb771c1fe3fffed6587ebabb4e9fe2ee40d00b351886ddab804f77973fd798cc0c8dac86c60d4e0d1b39341d9e9e9acf0f902de80679c3a1cf933dfef8a33e4f76f86128031f7c310cc1dae1c8f7492964f19ed46671c6192119854cb77f68e22827cbdfe44dd34ca552ff8f42a14ea793c964ca398ba2e879de85f9d575cd58fed455d4c6c4c434cd542af5ff2814ea743a994ca69cb328aaeabdf5de7af5cba5566c8190a628abf3ba5fb9a7dfa72aa7b86fe79d97bad97dcff27ee55297e1c8dcdfce6b5df7a7d7c85bbe35afd9b738a8cdd2fcef4de8fbcfeb3a7777777777f77b4faf6d8bef8db1b62f05617d1cdc5ca1f45ecf13c59c4da6d30985fa4fa5cc1513376bc904b9da5610dadf9e4951f4536ed267d5dd82f7fd96ba552cc9047d9eb4d0020f5685b700c3aaf0176eba0eaec25bc0c155d840830b2d569cb8e92e9b8ea413727d1cb9b6ebc9d6ad95fa26e60d291bbe06140da7184c2e6417628bd6ca8a189bc4919310dada5ddb5aaf58b758ac090e37d850030d31b8e0a2058b15272666ea51275316b97aff96adbbad49abd5bab5e216927dc6d8ac036cacbd258464134251d98a01db2dd66f96bb452f2a4926e4d716e9f3b5457fcbd3eeb0ad57eb3ef3e92dacd3b62cd716f9beb145e5003699238bde85b75aad56abd56ab52a6dd3155dd1155dd115adb4db84907e492e2183786f3f75eadebe19f22cfadcdb37b1117916f550281a4ea7184c26177276218a2d3c8fc5fdbbe26a16fd133745f4cb6512a25f2eb382cc3a6d03a76f70d3fe0c6b1cdcb42015c48254100b52412c4805b12015e4ed7b1e0b57d91410bd829eb8cabefd1b28c8876fdf06d35514a4064f41a15d295751901fdf6a1b9476bdab28c88bf005f9d15b0ce22284f4f65b74e4db67e12927ed9a79a594137d970bc89b524e147c978f077917103d7be10f6afa56dc1f25a51ee5f55c55bf548a7554a2c63225d60f8708577cb758be4f1b1333f5a893298bde6bc65237a59a5e4fcca613ea53b3560b490bc9766de2a64321343131cd4fa5fe5128d4e97432994c396751143d0fffbd58af541b13134f9b9866a7cd546af6299e3e0a85e2e99f4ea8a76f328d3cfd9c4f7e0a79fa9ee7b9ea9eaeabee49bfeed3779990bccb29e52924da65a67897d38f7fff3d258576a550bccbe9457fb50d0aed7ad4bb9c7ef457dba05c4e9fff6a9b11ed9a71ef727ad25f1b11ed9a75e4df171de5d3365ee9ef7bb3cfe5727a8fbf21da755d555db3f05d40fef42ea750d3bfe206b99eab9c2c4db94489ca94589a942a279baee0628ae1b9b70113116c8670a9d3d307798afa3879a0802653a845d223bd48e7a7f7e9fdfa362d24fbbe8989083643b8d4a97b96fa0fe23dcba3501fdfb3d4d3c903fc9ebec964d22d969a73497c962a8ae4f82cd523899ea5ee71649675ab85648f9ea56ed16cf4b42ccbb22ccbf2536e823837446862724d934ba5bc7f1085124f2791c994732645d1e4791feff5efe9bdea9518db6d44deefdbc07c0ad62f974977b9c77f533afd72991f97f2e9972b157ae07fefa584fae5fa114c19f5cb851a892923fd729d5c65b5cb357ad1d337994a39a5a45faeec416a970b864cf1d02f970862d22e178c290544bf5c5ec88776b9603e5242f4cb755d151b2c4b1bc82af8576c79d658acc58e119182edabe9126c25b18d391bf7aef19768722aa6815c63b11a93155163552637e1f4462bf71cd6b4daa7375ad7f9adeb70c5eed7491cf9c4fba1a3ed0b8aaac8b399233d8934bde9c95bbe65517cf2c6d9f62d3d5992913dfefe2575df55f910799ec8b3f8e33f4422107c9108638c31d6a7e8320f933e6be94bfaac31f2c92fc9c8242f14e1e8beb3a44b13dd4e9771b62e36bae1003f8f46a2928c0c8ee28be20d63f0eb2e77ab1dad04149684a0a9d3936dfb2c30ebf3ee0c8eb0cb36c67944d2a467651296653c6290c491bbc722cf589649fae470b0ec96b18c361a61d98d76764259639b3fe7276f79f41936d2e7c9b6b04b8381fa3c011f3cb10c3f2ec9c8b0d1da441ca23e2b0d04ddddddddddfdddddddddddbd24235bef3defd26c9ac398c693651084f553906bec02fddc1f9feb53e36eade7723d3cdce5d1b99c0e4722b5b89cb621912d58b490aeb62155b59e2b4eb648c9463e4f70b0cf42b26dfc6fc096c3f8fd6be838eefd69f0baeefd63f83ceffd5d00bf18343249b8e07b7f172108be7f0b318c618218e4a819c52cbeff0ad1b390ec51db642d8389f1bda56e9bfc2c245ba46d48dae59ab15c7410826d7f367ad78c0501269c988954581b0747b9fe37380a366d70142ef55cf76e7aa8f7bed37fa0e9c1308b7a85655f1cbd1f457a85657fe5be0865a4575856abd81fbdbfb5f644afd02c740b0d6a17740c9a864ed7e0a63fa76df017219d9047256a18eb1205b2d5b6b3a558b66fdf85db70649c6ddfc630ed76d27d6782ed8acd0177ef94c5abc5167fb5f63b0e731d87b98ec35c57df962639366ae0dcd0a891d1ccc8c484803b7b71371211962cd062f96eb15440167e56dd2d167e7fd659b79b98a993298b1e259770c116fd96f8adf15be0b7be6f8dbed57d8bfb16fed6fd96f722dd6279f8bac5f2f145dd62b968758be5f44ffa85ce02ffcbc1761e8bc775303accb1fca95f1dee0a3f1b45aa6b4c0a2aa4a74f9b481d8ad3678b6d9fa2ecd3ab4f2875413d699656d02e5df2503ecb93c02049116a9b14da35fb7608436657c425258ebcfd4d2a67b98aa613ea53a609fdcfa3df95140441b0c25c3cb0c078b1830e20f8398065adb5a2f4cf3a5d5f2a4c8d41a14a14ea512812142a050a8502b503ea7540e500ba4c5c509f3f6505ed32f5bba09e94a2c1f25d502e47b9daa6d4ae7741f1f0da35bb281612ed9a61148c141f6fff4507f2f6779879a7141420ea43de7e0e9e82021c79d4bba0422df2f64744424e201f1ea61249ca35363ad983d0adcebed69d76721aae1e135a8b312dc1dc7b2f8da6a3b32dcfb6bf8275123ddb26019b88cc31f5210a3c7d262f5fb1f3b8eb945237c7f1a9283e0dc3a720f8f4fb9e7aded37b9f76dd538e7bea7f72128383ab2810cc0daea23f2f36b80afb54580daea235170daec23d3cc4e02accc3e282a74faa03c385ab30ed450b57b5d88185abf0739aeab0c255f85d9fe470524b4a6a49492d29a92525b5a4a49694d492925a52524b4a6a49492d29a9262631a609934abdfc57180ae53a9d783099587286218a2f5c854b7670152ec1ef435de9e02a5ca25f39b80a3fbd4fc3480d281b50dc9002079267d9945c70c1858b162d58b058b1e2e48444bf5c267565a61ee5828b162c569cb8bbbbbbbbbbbbbbbbbbbb8f5c3620b09167d97cbca09e65e30183e25936a61a6393e25936251e7838b1b084c08041be7841da6187acc3eb307aaec5ea34cba6842ba5d02f97090afd729928fd72a550201f1e250f907f9027f98f4ff11e8fe24d8ffad2f3e02922fae53a89947f7afc2c9e222212a23fe4f1c3f0149191155ee4f1bf2049a91f4921f5cbe5b1407af2f1ebe0292ce897ebb2302af9d1e714164ab4ebc455157f6a055d3e490a14a89192ba4a2404e4c3c3f4b3ab8a64b13deaaa517953f81403f41437089190fda41e11d294c5dde31a3a1bafd036dda9c1d9f64b324a32b28c6c6db41320f25969fb5a4b735387a7a7e6f303640bba914368d7af5febd0ae0edbd55f7675985d3d66578fedea32bbfaccae4eb36b4dafd4bd43faa413b97ec88784541c6e38ca0d36d81ca5062047a12106175cf4384a0b162b688e726262a6fec65150a71a47316571c6513c37638e22721a0179908f118ff7783a622a7de94f42fec466e445be92a4278d44a318829f87e25ee459214fdd448de8d7ec8ae8b3ee96cb1679568856616d2a12f2678c1da25b274ddd04d12705daf55bba65d22d52533749ba95754bd412750bd42d4fb7d8f55b9c6e5d7da257ecb3965e622e13f1ee08616902993eedc22864ea84f0cc4223dba6a7a836d2c2138c7db04ec87236fbae4f5cd3d4ffd2279f906b6c53bfb6d627be966ee3123dcb5344ed9ab1389e1e4651bb66acbabdc7f7bdf2871f7e35ead74b1556a3a85fe25357617db2b8f72f970b4884217822b012df85e3e96125ead9d5ad95ba5b0ed8401250b06335bbef95de7fa1be62ab85647b8fcb15f059a1b65901b5cda85dafd90fbf1267f7f13f800843f044607725c7d3c3e6cadfb8b4fae976b13142b72708673ffc2becfe25fe0fff1af1bf44f75fa399ff2bff0fbf7a917e669f54d2eb89d97442b9aaead687f24e9b52b3c5e956eb6a4acd96d5949af45d536aba78313caf4e8434759a64fbdab71ce775d656ef9ea5d8be64892c9115e8e7c7c7a756ebe9e1e1a93ab41c8fc4f559f649b2ab5aa592b6626b2d49922449922499e369d246a749b2869b97e3466b6fd50fd81c0781cd71f6adc59dd7bd57b1f81ebddd7b559ff6e94a87bfd66a2dc76995fab86a18b8e483291b11d2d419caf68d817919d27113cac1fa3e87f74af03fcfd3adefc30f3176c15e6062dca49cb5f87bf1c327e4f3836d30b6ef7f40a6b78101fa29fdf8903e3552ad27f7f08c78743c44ffc3af3c7468212d47ccb1616dd4f0e89e7b16feafc67f381e1f4ecbdde3df37e90fa8a4bf1f527f3e24fdd5b2fe7a46fae311e94fe7a37d39567f36aafe70f457c3cdeb79a3b5b07d555aeee6348b6473cf7110385ddbfb1e3ffe38cea39c7d56572de6b8ab52dfaed46795b42bbd85d56dfc2dec2d76bb6bc7d82c2c4b5221777f76429c8dfb13d7300d7fa7c927709a0ab93ef68e0b6524271d81dadb8365911ccaf7ebb36c607ee5e2c1b6c408662bd76c7c954086046cac5c33d17584192674ac5cb3316ab336afc56838321aec0a5d214c8365700c7eb943f73613d60faf7fbd9736019aa3b47e23916de903d9b39c0be7b817579fa4d0a61cc7e9e084f6d527c7bdb8429bbbf772a716e638aed24bc338a1779e8402b0b90d03dd27e14968538c44ae2fcb9784c562b15a374542f422f1459c5ac926db7d7e30ff4b1b73726cd8a851030767bc196f461a238db166ac1965a36ca41969c6997166941965c6d818cbb1510367bc19698c35a36ca41967c6d82833c68c3123cc0833be8c2f236c840d0de9d071bb0909e5c871e3465090cd36c68c30e3cb081bd27113ca71c3160404f4f3e3e353abf5f4f0f0e8e8d0683939366cd4a8818303f4e353ebe1d1a1e5d8c0a921de8837220d91865823d688325126d28834e28c3823ca8832624c8c8931628c0823c2882fe28b081361e28d4843ac1165228d3823ca88313146841161e2cbd0900e1db79b90508e1c376e0405d96c40403f3f3e3eb5da908e9b508e1b4136a09f9a4fcfd8c313f2e87c3a348f96c3e5d8b05143a406ce09e7e6e3868689464d5813ca42999b4efaa8c31e37439e4f873a6ed2381de6a07468c3cdb0c64987381f3abc31e99006a9435958e3668e8d1a38f7e6d2b835577669eecc95b93117e6be5cd8908e9b508e1bb620a01f9f5a0f8f0e2dc7064e0d7b6369d81a2bb33476c6cad8988db13016665f6c7947f659f7b26c48962c75dc8472dc08b201fd8c7cde8624f64bf16edfef3b8a11d4a342445e04e4f4278f8fff28999eae403e39bacfb2f79dc453b8cef66fa1d023287d7a88883e1de4a44ff7f8d0a7974cfa7412a94f1f6997b9b5da852de1e4f3839d1fac8493cf91b6fd734996e99f2368b330258476fd5a6db22391cffb2591bfef49bc50e4f46122f348a2cf3167fbdba8817333d2186b46d94833ce8c636c94d19a05101489c69811667c1961433a6e4239c01bd616e4799f82fb4e1f26328b424f533753e85304dafe3f3eb51e1e1d5a8e8d50c4116b68fdf11e20288ae2cdf617698835a24ca4116744193126c68022ccf66f89e707135ff6458142fd881611f9107dfa1f7e659e1e4477ef891f8a7ecc3f229f647eb04096e494680551ebbfcfc2f8bb98d3d44d14fa0c87b6bf8e9b508e1b4136a09feddf0a6ba1cff60f652c1bfdf81da3503f22127202f9f058c1f4b80480c7a415bae752e07f25e2872c3c7ed67d1100582849add069fd9a79183feb6a15164a533747f419f66cff9688a66e86e833e4d9fea1cef690b63dccd91edad81ed6d81ee26c0f6fb67f2ba4b1fd5b9e0e65618db524ecbdce6842585282866666464626168b89818179191ad2a18306890ffacd45221f7f2cc9c8a2176511b555af7e456abb38421a78d3f7eddf2bc4d924603d9812b2ef9b533a7ed5e28ba7cbc29b4874e29a28677d9e6c2bb237190e6ad338c4db28debecf7ab098df3898588590a6c6f1267bc9884cdd4b1dc8dcd3a7def79f589ae5d17e579e55c88620a42997953a90fd84bbc9e0837f63803ef313abc1f0d086726e3572dc04d500d1f8c8f4c4e8bc78a13ebdbf4f4310f43ccff33ccff3f4093e7d7d93ebbb0b429ac21fe6ff6c08b2974000ea307c6a5b50a1022c0239321c580fabb30aa1c60332a060c40646a082d559a580842164a0a087254420830be4c30c7040850bfce067092b0f2788f871818f0f4b08b1baf7d228bcd0603058103b9e585d7dbee0bed0fbf3645f07bf034b7a69fbea33dff7a8e7ddefbfefde7befa5ee22fb2fa86d5b4eabbce86821cbdaaabbff4aad554748774a50db2f4e764680b35f54a11b377a7abc854a7315f57d281050ecc68d1672a8eff55200070e88c302b9e9d6c755b8ed7115ee36c755b8ade12adce2b8e91687ebbe0b4f8b53717cf7a1831f0c07576dde4c6dfb8dd9702c8cd2fb61995f4fe6f5e8e49c510d57e12ff26ebc1accd960b0d33dd9a5c160374fb6fdbc34ef628ec2c1b81b37816a7c687a645c27a6c57e711537ce76bb340e1676b8e6effaa440d467c8755aacd827966199c33a5a7876b41b0c07c7d9a8ede65dd701b90affcec75574435d4773d33d90bdda68840e56b57761376b6d0e6ec6b8f922e38a61f19717754807bf9de8996814438ee3aa102d16da5baec93706765fad5994a3a0b267399b0ff9cd73789003b98fedf334776bbe198834fcf324c6cd9ceea5c6d0cdad2687abb0960bba32dbdadcb4b6c634be1647b5a52332d65d4c4767eb59859c86ba0cf518ea2f43aec2d65b1572f3663b7b6b7d202e5669360f87e3744e500da01b9f9a1e1a990f87f7719ef79e57e240ee708903d9fe10d2d4798283c481a37ebdbd3bd991de8b511bb5511bb551db0dc3280d2d493f89235f1a50900f508f0fd5e969b1629f9526aa3451fb496d9dd6b6eb0141687bf71df79ca54f4b9d3eabd06d7ceed6ddee573a8a6d5aa2f4741cb974442e1d91493f2a3d89238c618d9fac9fc34da70972152e0304a24f8ff17115fed2e32afc3db48eabf037699a3eabd08d46eaf3c6767d923eabd05985b4c8b585ed5a1fdf53ed8cc02412a1596ddfc4367d7a526dc2924cb67f9636121afe13856c04e67f9e6c1f3419091bd9469aec836dfa2519faa519d4bdb44fc367bd622fd726d4ae192bfcee5dd4ae09e455f87af161b4630826afc297cb187b81c156a19e55dd5271afd5c4100cb69ad5f75cd56907ddd32c757bcf0a57be6781da66e5d336a287f5f1bbb0de2bf67261b0cbe2d6772d3d8f01baeb08eddbbb5beea5b1bf9afd5d97edefdeee5dd86eb4dd3f68fb62eff34a560b243d8c4d32ef41d294818b31c6a50c6415ee57b8ee2b572bc761dc956472f7e7c836727f86b20f569a2193ebe38f50464853a749db976646261603f3e2b0211d37a11c37826c403f3eb51e9efa3abb2b59ad14acd3adeec30f5b94524a29a59452939aa6699aa6699af49dc64d5af529ee8aad07722cc89e9666e433c5826cdfafbeb5b5d6ead5cefe8ae538ae560d64930602314304474409031df6388ee33a0f7ba50348b6e779589fd8f3301763775c6ae3479d4c1cb7396e866a81eb03991b1a35329a191947a13147a1a19999919189c562621cc661fcc55f1ce6b0a1211d3a6e3721a11c396edc080ab2d980807e7e7c7c6a35377b7a78787474280bc41cc6df8247eed5747b1f1e60976432fddb95278b8325ab959f7c10d42df0c9279d6646261603e32f0e1bd27113ca7123c806f4e353ebe1a1e990c0cf5f1222d37dd658bd406ddbcff757eef92205dbe1e36cfb57b3c46f195ff4dfe83f3de27fbab0a3b2c56e51d96259ddbeda85154b921ddaa40ca8346df76441ed14d10000800000f315003050200e0985625198c6714e7c3714800c84a450704c9e08d424ca41ce18420800041803000004000044463400050996b9e09046fffec7fff7f9e13ffff1fff7d7b464fb3b13b6ebffd312f17f23b2b726abeb3471ee2a4b5d698910415a5206375a22e816c10d718fc68a2edcb45ab2abe64f6980fc4e9f31dbddbfa58df92027307ad48dc13d8626d40b57a6d433c2ab77471658d642e1e711217709e93838b32f6ff053cc0424d9a68c06a8c1b9455258e73454baff3ed0ba5a239d7f0fcff297a9bfb53744e7d8989a6b4e69d79564f29c48313301e3db0888779614bb91e375a32ac30a0c6bb029b5ff58e7d08d09db849a3220555addfd2a4bc31f7f7643148cfee22367e36b68fdb4fb9020926f7cc7bcd915831605c1a752f1ed20887c4ac2b4eb94be37b3c2ff539c189f349b26bee956e9af249d3f3429a178ef7b8981d95ff58c5b733479fc0e1df272a6b1bfe9797a016ce3182c1a4886e0ef53cc278164fb749be66d2d35ea57b78e6dd57c97899865a30cdcd005211a0f36815843dd0473d9de4590bac738f01ff34462591c902ddb014e5e4eeadf961f22c0a52dd318d34c476e3f762ff1d51626e4366ffd92eac8e596c074a633463cb34d785f730aca9d845cde3fb9be45b36cb6613148a19f4f4502a0e416adbbd3a243d40ca5c9aea8b99426f2e23dfd874db54c79ffa1322c7e2bfeae567d70844d5aed150d273df0a9c8a79a810a16d5f9546450c14fdde27c141839accca3c8c7cf3f18033048a19b49450655dc54f253c9a10243e53cd5325460536ff1e74299e0bd2988fb6eee276a86e32ca46dabe8b99036d6a27771da5a889e85b46d153d17d2c65abca7c367a190c3e05beace0a39aa7bbb38423094a03f4fb51c95d854b253c9400583ea5c2af2a8e0536ce1c74d3780ab57a9e35613ac0259b9e00ae60169934dd005930643fdb33af85e79d20ac6ba6ea475fdc1955afe8d4806ba46676f644e8b0e3b789e137d7858daf7003d52c0a9cd2210318fea952da2cf6bf67fb0b12008f29fa79e440efcc5b9fb1b5bd8859afe43cc82a8f1c558049729c423f4d4a5ebf3a71ebd8cb6a771441e3697f9e4902f922c196a1168e42115bfbc722e836f99275399229a8cf6c781370cc969a38d6b043b68b2109e5f1ef2e185df3cf2cd2b3f56e3320e990b2e7126c37920c72c0af740fb7302ceac073defd9b00944ca38e74ce258025306c711e7ade990f3e160a7e712e43c77de134a90e47c9ac0599b9872be1af2846d4c347489b71bcf7631d30a7a11019b8c6b3cc6e0cc398adfd59dd3896bc5636f1927d289199da60c856ceaa49b7623853910cc20de5f463c5a53b50c72c3cb28c7dd8b3657ad6d4c1d4e31caa13c1d894e2cb665e8090a0578935fca833e4c4e1fa6559d0c209ef1289ffd4c6d2328deda066d5a60fb8c936787add37e47fa2a16425342af34b10e0932d65c0e44deaef87b93b75646d0cadb20f6b33c0c4dc88af0b50b8d5debe952420f309077f75ce08857451c79a74f35ff8098177831ebdcbf2bfe6aef1bb13ba9fcdae85c350dfc13de8373958282e2c2886c9b12fba0fd6acf7b0c6c61a0959716400a9464f06367458dd022c82d6dc030d0abdebcb52dbc5440fa55731b0902f292022e93b250adcfab2fd203b66901c7a984cc2ed8fa0da8693635fd17cabaaa37fe827137ec2cadb838194288bc84432942f8b4dcb0fda9a456a48b5c6b9c73bed636ddbc0c9e1998fd2121faa1547f858f65dffd2fe412c877ae8c8bc1cd7c954845711b2bd82b2865c5df62e6f823b0f9ffb30242804135908d6a46cdcb09db43b97341dc2c8ab4fcc937878834b18efeeb86e2372d29659c91e6671d08790d7c28ec73ce7675bb3e95558c74f5a1519dcbd0fc2a95a7788811f753827f533c1b4ae15ff858f651fe09152193e4cbe7fef9e1ef5fff12432653cf184a266d2c4128ad91ccc49d680c090109559bd9ae922689668eb1052e51d58c9f83b8104b2b04b016896a4526072b88b8b44b50288a00f00881b3088ae01542a29de75cdec8cf0c0116f3f7689bd07f80503ef24cfec433291305e2eb41cb8b3219bd619f4c394e034352fa0ec5de36cfae4805dbde812d888d39e4ece662f0629c07c3db6e2215a91f781f73372a7eb21f1831e80dee88d7dd0fb2f1e98d4f7357137fac27a73588edd4713345f307a0e911528e34326c04363ace2a37d924a20ac4c3938aae947b3735dca181d19b24dc501c893f2879f90693f5a3b86c87b6999b58a9b2d7dcddc851c5e0849eeb4180bc8183956167b432cc8d561f2cd925280ed8ff304174cab815fc137347f6afd6ce4544390cd7bdc9e65a5f3b2bb5ecb7ae04f175488fec1ea9a5215fab90ba1578e1ffddfb94059d812ca942bf17a02b11a3c52bedcb56d51974e19bb133edec81fe5a2d900c025e1b99abe645cc1bfa642d8f504ebe8f3f0dd8aa85e9ac523056870e2d79671ff4e15847c4fe2df28f110b5035fa347109995865b28dd25228597082064d660b06d1e207c1ee5d51bdcb52b3ca21bf77a4aab5724b464a39eb402df2e4f6ba5ef5064e5a6a69224697fe4f42c9541e66d3201d9fdeefc9c10cef8062247e83662bf4f14c80b637862a55a9534ab2e2a6f31049c7977344e1b5f20dcc065c9bd796012b43b3deaefa3a0b6aaa56f91a34398a8c3d3172064bd9e356f2c56c4b091705db88a5144821ce5c35bee2a5e47c0d6e3c3347c0ae8b3c1dfd87a6159ac004f4bbb1d74a5377c0a1cbacc11c05411b2655f3d3a1888a2a0ef40dffcac8b93ffbd36a44bca15b06bb9795f20605b883a70bfcbe912b40270581352ced5c32766672a209e1863ec84712c0feed4217e166a535715d97f84e2346a558feed12b860c0394e3458416e882f54ccb554b1714658136446b32c1a8842ce41c2fb323d4d8cae0c8f84b213b59e6141f0aa725da70804e7fbc1bf877dfd53ab084399818a0cacd0f29fff2722455c7574a82e604f63c7adc1dca8654b9b070933619ab2c041870c7a97de65e4fc26a98e1b40c402abc039940214e1b81461610e42f2d6049917055f86f6c6074cc370b0caa8c847119c04d60342d4746eaaf69317e1730aecd8f1be82995b9bc7e52b67ca874bfb1b4f0a376d3ba1daa6b8a07c1992f4fe2cafafa31b8c9eb2143854ff09e4b2f07d119e7cab69335b5bef22d8230b32825e5baa84fea712f72426fb0e23aef79ebb3c482e1406c2b4882ea05f2abb8a1ec19f3b0208f5ceced4bb916bf9cbe31c60e252723991869c86a6bd33a238067aa45153fc8d0120253f96c776387311c7c7573c1d3599a2796975896a6390971e807b089fa466396a050b5ed234bc2dc06fa6b04cadb3718f08c1c4ac730db384e088f56aa45e952f4f1ed1a0c0e55c4d48841839127ee634d0bdf42737137b570109d9f0c08a75bcae10747cc0d66645203e0f5f4f8ef7ffc1be4496a8ef9616b125123dbd4a358a1489b72ded83764c08054adcd6e3ce40b5c8188e4486f9111b7aebd6ef5c3f088246ba2c3637265a093119fbb7e19221abef5fc9996c52bc0f87864ac3ffe6c55f6c65a0e7b7e78539dad1351471e77da9255e7d456bc9299e7d136d2403a707718f6f437f0175874b90acfec018c97d8275e14b78eb9a5807c95d8416e956e211542ef24aaf42d801849259a3c7bdfac08216c31101a48fd70ef1eee9a132095e599f8dcca4932d23fcbcc777ce7875507c7ad9d714ca4cabc13655735ccb5bd4090fccdeabef648686cf9b172a976870defc167cdcc2b8281e621bc76aa011c77b3234ff4df8044bb492675dfef0d557dae08d169ff01a71cdf0a71f78af2ac1db87bd2ea7bf34a989108e7a55532a031091117deda1a49a12bd37cf2cbcb8e39a98025728794c9bb89d2921fd431ca1f577da82136427f660ea53a7de1fa60e83efa8986693a0ab166b0cd862f1f7b65893994dea60bf2606c4dfe0d1d23c21da8993aa887b8ac78092a4c91ca6ccfca02a5310fc75e959d0e7506c66745809e4dbff9ca319149100d56fbe43c97c41564499e60ea35c98aa9a3bc4b4d523e0006be3588ab3183f4399293a4388e094110e95d795dc70ee36cdf65236cedeb17a298ba3419362ca9ef5488949b4e90b8a9405817285162643bec39f28caa456ece9d48170ebdfc57c715e775ef3dc08f89b3b3dc8671420b0ee7710d41db16c0b4114ebdfc36e48c44a2cc06b62c427bfb74d1f4cf8176c69dc031d67f09ed381568742311cbc8ee938ed948798ea842acf1cf51a1817f301434d668d06cbed11fda059823d3778a46ccc87d2543a3c3c81cf2a5fd6125fb939d39d7d1e008592235964f29836dbdd5f8f57f7efd6540ae1c0916dd76cf2c0dce1da3cc627ab05500785bc668263f83c884013a58de7c1e220d02e6ef79b2be8a090c19a4d465d6b2558277e2822368f6141dda8cedc8fc729a74e854b0a946df1516861d5030ff9f520e8d24329c4fb73102318a68352bc43fb8c93222cf7fbe310674e521947f320197c937eb3944946a410ed1d354828909f9d8097f60714117ec1d36e6f6a3d06a41093180fc0c4eac9d76c1a10c14333c73343cbe5fe7cacd6d74521a2fe19035ad483c908d72ecf5359edf4458fd9723d83f2de40884834f8c60a33b6799061ecd961d4f91771c0eb8d00fe650660397954710cd208111d755b1c51ae08465f5963dd390b311414f3ffa5f4b087a9c1cc153b75b7cb64098c73f98519054053ff0f282b802878f5becebe5a816695aa744486efe72fa1efc436d823e1c997cff092b07861f598b5c20373e3d251bc1103a411483b905c23ea2810158d521ff0f9582fa792c8f014438961d943c3e185b590d1a86bca7767c4a6dff41799b2364cae3f81926124c08c5676007edf66439132dbbc76ca1d07f1b479a56833e2d453adec8117e7d7035a77625ababcedbcda65f55c98001750bb01d9f9fba0493754650d4432575cbc2a3350fcb8f0b17fa199833031c1053e51f25e11a428811b7e7f70135608c42f4cd4599a834240e3a4a2522f95c318997b170fce12d3886d9a14c447a86c162aa7af921a0f6ccf1e625bdaeceda6891c678aaa2a55db2df1c7539afa379695028f078a063e7db7265003c523d2dbd5ed2400f5e1a01d09bd487a9ff89e3e564ba8bbc3ef1ef7f1b8c902fcd2a331442ce500bfa21369c2e88c70c724f2ac5fb4a8ce780f0357ce5b2439bd8ab8073f30b2d9af6d0697cd9d03055934139210abc11d647882374ec61f01dbb81b59887c0d70df49d47185c251cf5c20728275cb3545280e9e5843e9a35d229752962e83ff646906ce2b1d7bde51073d3953f47ce9cef0128be5b93515a877b4303c2041854f384363cf9d068cdc454841c21732ad030f1cbc690bead225cc65e3804c624da3b7e0441d7a2e34880484242cd09cfbb57ab9f2badfb03ae9e796dc7d4acd28b8220b6a43302a812b6eaffcfc1a5b7c8f761d498d626cdb45fa8e0871ffd0b32ec6b8eec97e26521b648945d4058f1a5ce84af2c015902dd135c7201f50c3152b549166de8620d2a083a756faef4b700484702dcadac341577c39f0511952af78c48bb1f67ee064ef54dcc40db40cec6f871b6fe885d1657edbfa2f3baad23fd5e1c7f06a604de0ed0cf87a23e0f24c781e55dae6b6d8d1a73057708240d3e7310871409c3c0cfd60ad895f263632f9fc66028e698a4747f30bdae41b16630a99974eb37ead19873b6917979ed3e09cecc146405a063c740d3ab1636ffa8161e0a5a5fdf9412f0450d17a0fe03d2fe1f7f118f1ad2bbccf4f64a3bf9d7d8bfd6fbb863cdbe07f5cfed26e0ea9a0d36fa58f01cb83f0b58adb91f6dfb4c19072c5a661c617853174e9737cfd4ecaac18129f5cb48f35dedb5410dfbd51fc481bbf710d04ca3f42eec8d5130e9a34db22313d85935591be4b0f421e2941c8bf4a9250c3a799423de7603218820d257383a1d6338bc651222757919d1e59f8949d7ac9f659c71d15c1b72e66e8612f6f553f1b03598c661615c1e0ed0ad08615414468609bce0360d00fd0aca7de4086f075da9167030cd4e960914b3cf56f1d80c6c0bc74822907fdc80d930109ad05bf5b4b3a9adf2cc931677020b1cb20469cf332177ddb24865db50ebad37b10b3bf5fed9d4868067102423f521a961adb884e6b9ade238f52c25b09ce70a4952ece9898be2674c448c2ce7eca1c48a9ca7662de82cca66681fc028528b9307543a75154654ef71b7fc2a100d49e94d10f8136929b3f1a0bbb3ee459f4509c0c8edb457026e9faca47da2723a7abfac5851870675894c95ec565be89a4435533817c0b368bcdf2c2f330ac50ff2a5bcd16fd894ef5bf95844200c758cc8230160fca38ae85c6a3800581a4bd67e72859548bb5c3f1db99e43518fe1f15233f049f3512fc1f224c4e53c37a2b8636db8ab6869386be3412bf59b2053fad6775e34f7a2b0154e69b752dc82981a2e358ceee964d06a5f497385003f9364a512918337000363ac779a9ee1cb27e5e03fcc1181b56e73d674efe56dde4866dea97f1f9b9683d77afd03e155c125e582aa6a0e29a56213c1604a09f0e19e77950776feba65988b9b22483595b76eb3d0b89c80e2285c9465781981c8c22ca5aefe702dedb216286303a32c89f2b313a5025fef8ee289061c58101ae8f853285cbbdf93b30044157678110eb919b8c427162e86ffa62774e0211d57ef39789998f495bc36dab79914b69282cc96367193ddfc16dd395702a99a455b7044f314b3ed7b14680d8f65cd10b7ed2d800c60cc69729fae8b66b0db695e804a68351cfceaac0fb3a133c0ac01dc49b255b1ca2dcb1f8de905ba633321057709e83db898c46f84a2fb9dca542afc16baac70c0c5eca497b012fe7fa45810651f578ef4e26e26dc963d1d00fd6f92ad0f794de7f035f4e97c2a52fffdbdd3416107f2ad7aa8a64e58925aa6bda51d8566b913d967b5da22fe0d019f70d9bfbc781dab65f788f1f0807350025131249f43d98e97cf28dada3f5021061955ff08d5d751f6c19dc731c5e76b316020d2912651a02ae920d7ce7933e4a491558422f2d81a4af6be074ff09199da7970e96dc9d8c307f0309bac450a44968547f2c7eee90d81a6288493159285f5d0bf5ca50074805d3a96bc05accf66b479eca11cface5b0e204d3483fbc803bc0d742cc9eb1e196feb15a0f04695211396b3f106d44f13f84a508b08a81be61081b70efb2d7f0f2b5f01be6794809b9eeb109b47924c94373ccda44dc20169711f411b973a037cd2f5f469ec5dcaa0240b939ef52965c455f3bbb95276d95bd1157f343c83f14639d40385bd453e9ea8a850dc8f240db79af2181da1dcbe4e4e0099485885be6812d09c62049c9906c347979a4086001e7a3210e7c220ff04ac0f08090a4f27ba9093abc5c54c1f6354ba3510629c2f9cf122102a6701593b77171b785562e382921c83dc8ec27941c810dc8d00b3700b44209fab2f7d2c51d0624994259ef7e168b3f9b0e9cbe9c13de8a98373579f6bd41a1701df5c7bc005d85bd0869d493339465327cd791c842969168612bcaa16a90b94256346d08adbb8c2eeb1a91387567b5707d32ccab4b93f5ea282caf282abd7f356663faca42f05fcc9e3181221b1ee40b6a34045236f584f44e9cec93cfea037232d4fa8036218ff880d1957d0eec6a86f501a3583e20f0950f585289a6607dd59777e20ac67cc06f6a05d631a04b0869d37332ab01c9074cb57ad09de1f44f8193e3faaa807087f75d4048a05b9e4033f0021be71844408b789634610142241ccb0486651bd7202866ddd17591f6c0b8f37fba8728c4c3f8fe0355131c05f4731c842eefb6fe39df43b41fd80383a2f7cf148834b4da03237db142d177f515950d9abdee03751f1cd4203ba9d1e67b4f2594e5be2306fd38cee902e0a04d3f89496224f716f483a87818ff8d20249b0c2985904ba3889461086234dc7045e5fad1231f3a2aee0c64321c912998a27edcd2549612cb3ca605d487327826950008624ba74d7d4c80a17fce9aea5c9e93b47c3cf2f34e05c7f728350f87de87d5c9d8c5d3923978a8e76db51ccf5c6a361e8d4fbb93f6a6fdc7e6f3294b8cd9924670e3e1e98b6b6b55af4670c3c8b46b3cd93fc6ebdefbcbe368b86936064c33671782775adb810aa7daa393c229db20e9d4e8f697aa7e3950cc7f2c4d233f4587e1b2b00ce59384e46cbd3f22065c5d2c86f65daca14bd4d5055cf59fb3ed5f3b0157fd563a32b7bbe7bf3a4601aea01e9b4d201daa5a3493d9d230cd3ead7797c50c4bfa4dd9a661c27a7af35999c6a4d59d2577722eb0a12e7dccde4096f27ec8306a853071bea888fe72634994ba50a12d5c5809358489bf56c7a99ada829880a9431dbd429f94384d733eaa2af4a11e3170a62f53156cf95bbd6a15fe60dea9175ac2f94353b1dcc85eb3e48b60f5d6c34c33200a88d7f556b4d83fc5f6006a070a182fa1fec1a8ac8b105d4e1a4b7e86ec7a4cc2a2cf128926501e91a45fb9f2d325e668b0a2a6124f44c89c6684eb6c94ce681956ac56c6a3ee465c35113a8a02038d86ba0398f93b0acd25607f67fa56e100e481f695142718e026ed6e4d40488e1f463dcd8ca18bb0e075f336e8936a9d345350bc4ed55b4d33cf79c926a525ef5ca499a6a5d0a979dae5467f68ddd59fadf5e4cd99280e20e5c92d7f6965929de5edd618506cf862253c2a76d77570067a6e29f01d30fc6b987429a705dbff6e4cee500a57f1bf8e2e1cfd6e9f10939a8b169d3ee2bfc752637835063dc45fc326f383c33d305ea0710a4efba0ceda4664184097a94950b547552d8403fbe6abcd62eab59fc232939a2e26ea0c65a16cafd9fca967c5e30a301b8ad53683e12c4001e52127e358370ba210a8820a5379c8e387e0594b3517e222f64fcfa566b45079bc3aae1582a3f542de8b35e57447cdc2c40a5d57711423deac16227c61ea8ae000efe91bba8920a37c1cef711657a4f9c31535a17007cad762f1789398301cd54710d821a19c1b1804e32e0dd142544440b77241f7574e5fcf257f9071e41ef6a8b4034f188eb690ee41b4da8b13665cf4c8ae79f1307f17832da6219902cb77906407a055cb5c63ec011dc448848dcdf45c5aaaf7207d84860efa1e90038b99392f4a408ee2afb8737cd471d26d05daa339fceca1b68e69b387e1965e3cc7cb1eb10d77808a010e5913d80cb2b26747a60a7b7f3229c3913a9804e281de9be0808f6a6af67e46be6f2388f4a1f1ce8df88fe021f6bf84ae0ff7191d24074ca33a27c238f90b36e9df9108500f1e442e0eaf2fe7d1fbe7c8f57d85f3bc21394a1763e998660d40a27d0dbac1e3cc0faa8395462be9101a87799fd9228120bde8d43d3ef0e8e03eecebd94ce1f20253047095bbf2a2d7f4f78091c685dbac8125f16bc9f159be1da2d0d6ce3e718a728ee38a4a2b764ee12d5917e6cccbcbaea9a6ab88728f9fb3427616c6e3da59e1838800c599c949b3013410aa8a238122f75c4321bc14ed162629d48e931a0d100bff6c68b1c9a97c5c9af06440e4328e8fe802295396f0a168f61d4cb8c77b2293960c175cb40f30ccbfe7da0826e59c2d261111d68bbcdc1d4b45efb9a7c65d9091f5f38b6178352f6e5e13070aff9757a7a96a9f122337021bc5e1520af0aa9155d4c00c193b6a339fdfae7cd783921a033b83685277d396e880ee54f5c21a5bf813d7c2b48b98e9ca586cadff1cb52fe4b70d5dc2553e3f7207b4a079380ee8cab9a7d40d549bbf5512340442b68dc732f87abb4ab4dab8a3ad8f0a537e076541af30a625e5f67c8df7542bf71581e2d39fd3ac7625b3593870972212a50ce2642ab27218f6faadbbe41ad938fe9788b3c0e67e09a19cd61e09cfb62f99588dfccc3cd9ee8dd562e208f2d2f40e33b9c1289d9608296649c47a7b02cc14778da8e0c8cba59281fa75c6a43778593d3833c4e461f4d8b978bdde4226eabf621b79932b698ec5ba97403c2c0f1ef18ccd5544a0628811700ce9e0550fcd90a9aa35e9a6a6de32f0f5ecc8cadc26f46006b40d6b78cf475c19fbe74a3d15285a6cb7e908beb902c97e3dbb848df58e7241cb637f03b6d7d02d6275f75f14f605cabbd8abf614a0036bff3457b04edd9857249b1c5f3cdab38af46e6348d85a1c4b472320958fa775174aec5066c86bba2fdf932488cd564e12affa29ed200fbc23aa7e42a0f24d11d076dc8a0bb423f2670197a4f92dc68b3dc0de2841bf0505d49721265ce29f0ff15d26e18ef7f91acf1d64daa0d004a5bc7ccd06660785375c7472ab81f31da7e37f1047511038953072e44d2ac171e81329648052028cd5850f0b1aa8daa88cc65d818d7d5467f0b81172d5e540dd3cbe43c3ce194a4fbaee83ad00de5102a407e8f79c1d54d03268aca39268e1c7b68cabb0f4c59ac4cccc01e963095a2f63cf2a8b2080b85f3152e86214a1590358c67f25555c28a110b22067ad734111f8af8e677ebe479aa947ac4bef7133911af7c12328b27d7d7d7a035eaae5f854227c495a980855f85f533ae7f9b4128e89e718540cca67f009a30ad9ee2307a05800c0035013bb768488035f11ad4f08445ce67f0edc96a900b24d1618040e944ba8cf42470b08137f99b824e81f0ce1c20dc7dbe66aac360fb8384803a2bbf11bd77a7142706e11679eee1d78b276e75d0baeaf8741e2d04427e73038a5b0f78c23e638eb110c3299c069f9a6ded0a572ef9c80b8f915dbb9641d7f256afe9765e85a9d8ac2db292edafd20a5a3861be8de7c9ed1f8562d706c91444c2dc2dba9d409b726fa7462182a541914d4e51dcff0ca06b3e155935ba0555bdd15daabe295f7620709a9397e2438da95c819b2292a22c4d9488b7ea5b07a7c1c21be0b068219b95fb68332a25e862ba7a1e4a0d2d2ba25a1a63bf96c4482cea5572025f2474e5ae6c2d21c00484939a59361658410b3eb1e2689d0e3bb2fc3580888891d8522f22a575a0331027c85835fd61631b030ef4bab13810912356ca90cb50f0a75e9e0141ed60803c5ad4178c54f675150b388c3763186b8a955340fa3761d085fa710be294c51548ce71008e16bf84552bb42f2177e451845193c835fadeb35c54fe057bdda4c431ae3707c97beaf83242510163ff680b4f1d33543f74d5412abd25bfbd013c2d55be8a1763f3936a5f4b874b94312465d56568e9da33c5d1f0a1920587ce29442d1cc129de1360713c1f569576a8ea2a3c96d8c5123e3108f51e9e2500c305db5dddb50f4b6680c122ad63492487ba635a39143588130cb79a334d882278ab6aa55bee9838883ef08c4e475138ad0e18545728812bcb6c79dcd8aec48a56f974c99e22bc5e6afdc9d0919181f422f934da6675a76159114d9546a4f3bd01e649f4f6e6e6195a186571c842b2c7dfb5fe2ba108ee002578c4a5f41a2c79939fb88005cfa9ec2000e4fbf4ad5f6a08ae317445f4fc45e019129ace7459e0937c117fc8029f8912fd5601d51779f0718a523df0ef20fc178c8d9f6386315c0ae9253f90bc523d6ff9e741c20816c3b62d00aa616685ac6860b80ad85801143345b8f4582eb5d2d93eae3d0161e1b2cba15a3ea57019d8a69b2aca25e8a01c65469138ad19ca940eec434af5151cac4c004541a5462f443a7c045629aaf9f6869c480b0a564b31231d7e24e888b156202a5d44ad364d4a3cdcfc17c16c45c76c44d1f9f7faafe24308fd8126d980c3112e89d0d910c4dde354e2f094265437ce0d4efe29798a68c2bd6594b28fb6cf9052ddaf9847ec93f85f2f58b7b75953a908f6d518e2754bc092afaab44b8853b2aa7e5065816ef5e6ed6542eaa6673fcab7a98f063e0a770604023d7c9293a17b7c48753b9dc3eb544706ac7fb582edaa17ef12eccb7056bb5e1a49b1d96b3927d5af88c5395804fd2e8bd392577edb20ff680229d5d606440b626ab66224889ba4feb9d4ce9edc78cc1232c1ce0b1840ee436cab114485b15b78be2d8f80e0c0b7f2d5f1af5b6c68c91a1609bf5a22af1f09e4abe263d8b4caf419924d11ff73827220d2e746dab1831f4ec288044a7e16fdf22623a52607b50a296b6d01f4ffb63c1626df3ed030310f69199f667a09c0179d7433b19580b93b06a5e62c35498beaa39263f91627478686967173e14f13f5fb013e518a4d6903f6384f503fc04065660ae04f54e74a93ac9852f282a7ac03346710b7300f89a0557b59a0f03c6c7f3a9e605873284f66af83987f186ed3d442a160a52adbf8756ccc7855cc3070e3ac76283e6ffdab6b8a82b5a3df3c835020101f1a24c3fc70f3a15764376218e4f15e0bfc9848f8f6347f84858683a6560ded0a645fe94c8e4c165621e8813e8813829339045a364134da7842571de29a9aaf4e0788a972d915339cfd87e46495cd397258a0d6cb79865e85eb2359b51a02aa37494b28fcf295bb60204cecb2f42c80b7ab406d853087599424651fd0d9d73aec40821d89b4d1a324d0dd004aed25d1a90c02876708d6f4a269392e196d444a64d899977c66765662b9b120de01977caccae3a65662f8e2c094619126769387962cf35b2c2444130cae07973f2f379f919bdc128001b3f3addb3b6551d7a8bf3df1beed03fcf459991d0dda5724ee71b68420734d0ce5fd5ece06738566991051d0ea80f4efbb7946430fdaae5abfb2f7105e978211ddddc97fcddb1ee14df1c75ddf7bbff55264298d8fcf7f4c60e08772fdee7704141839526990ce595fe62070881d0244b7e2088dd7f12fb2237d61b7d26d093429eedf2f5682008cf36e349f60d376bc83823b3666f207e8b0acaae5af5f47a8c5d922647c41b7caf9661c39163dc28a095d9272c76fa2a629e960f62cf0c5be2232426fdb8145040cc783946106740c304020bc11ac062ff0e186d5b0c0e5f947f1535f3f7ac5ef8ddfa8dafa102f94a521ade26a5e76b4fa37ca5e8887f9fc6f447b3a7dd87a3c58462250495bc808abd454d7a0c482c2e5bbb065b8012542567ebb7280d15c0448dd504d2a78a2c8dfcc81865d04b85dcfb014c1ed3115e3b00f81d46d40290199fbe505e0c7e306b492a35b6166d18ef4727475a48482779c442809093910d02c49d1c392020eae44775b9b3c661ef6c6cc6af9a04e8deb6facc22723810774f88e1ff1501bad67bfa0096bb54c6528e81008a22547091d9646f8900d0bf9117ddbec1892e3cbdab452da64ac7059ae2553534b882f1f371c70d8793bb19726e21075def562c08c9fbf6106005f1c683342b13abe44bd1c2380c217a7d5c8bdb92affc59dc4d55bb28da136816a5509ff5757dd6cff56d1981ac5d77f87b1e6f080930deeaa9ea0d643c1b66e7304926185c70a606988c9f454bc56935ce87e6df7115dbef6ec8f5ff9397151e5431a71a50a8c39f011223327c8d8c31bba5d9a93588e353060ee270d97e573d4badc8200a2bf1631015443bff010f0769528f340813d22dc8d6483731b5fb44f50299f840cb258f8aad18ab0237161e21b3b21948bb85870eace3a4d4e9bcbce1bb8cd493881841c09d59df5c66d587af43f54bbe1c688efd715b5ada7e29605a7419a3f70146233b577dadb325851b85d9cbc4e98a49568afa822971533306c43dea2d85c752db49bb6bac940398040a08a3c334772bc0d7c4214de037bd795814bd952c88a746972c87b276bb53033db113cdbdede7e518d262e6d794b42f56e03a02b2cd823fe80562e91aa73489ed35822d792133043b5ffc3b01cf0d6d7e50eec04f7116327f7a222bc5affef7aa63d95553c3f20154729480d8518d7f4d9aae8c8550d42ce958a269b968ef3dd6eadc34d9414b2e54a70002f74d3798914cf1941b415e959a1037bd2394d42b45fcc7eff0f51fd015e7b27cf45705d2b62186ba2f6a08bf592bf00cfe009df8157d7cf5690be3679fbcd16d954da6fa3f0eb6c04e7f469b273e1976b4cc7e3a2d5ea7bffa721d6f9d02bdb1df87d0a0f7a1fcd9c33afcb6d73eda76f6d688f53b8fd8dc6d23169a51fb210eaa0e6b1ee833bcd3f444b00c8c41b70bd75bd4f5d17226f624753acc9707c2c397a8c4844af5e7d8eea09a627c3f3f033ef4c18936abc084bf034772b9c8eea3204a0d0c26270a8a0b6a4798092916ce788f309f480ddc4942613cf39c8bfd69a445ec72d6d813a4cde4492b6488abe8b27d00cbd0eeae963d7f6857126506adc066430be7abd9e23a172a1869bf234bf5e8833a5004bbf590a75d2d95408d222351d15e66602f9058ae941661fe1521896123428b239f3407bd64dd3fa1128b689783c0a7760ecda25e74036be8bbd0a377a979be5b986f0be8fb71a23f2e7f6c00f4ccbe173aec7b3ee7ff7b914207e1d8db2770991cf774e74996b370663b3bfbf4a6f75ae997373d77984447c91ea6fc17a3502f8d1d38357a2f691b9f0e8a8f92163cf4ab389426005c24b4dbf8947b9a3723c2234353bb84054bc0c55dcb4d87ebcc889c9c6b8892048bc6095b0d48ddc8c0bbfa37b2db96ed189005b031aee7747539f1f54ca6fd9d2b6cc08580efae6071ea4a78162be902fba8c7f8b160b0d4cbe463f53ba0068a1cfee4c87f1bbd1f6f786cadfc33803265c8c475ae5a4242acbfe5f7d903d49b288599b204321ab3fde701f86e0c9aefa22df681284e581669f6a83a42b8e92e1f846d17f4268ac3453cf470d9cafee474b6bd7a92da647b3b7c8ce4dfd6b358578bb99edad6342c200f213066d506efdec0c8975e34d44c155d47df47f9aa31a5d0a123a4fee391e664411048fd4a4ebe41fa3c36fa91a68a7f1e33d323e8a0a1da11747504c3aca16ff970130aaae0140445c38d31ec1ad78125c511348a1bbdcee14bdd70087fece2828b53d6bd394302c1e4094ab4bccc589a056298b2a96219fdb820b7f0d65ddb9e7fc69af86734f7aeaab0f08a12ee2c8518b29ec9e63bbfdae67347e45de3cf8252ef3f46704602ff43eacc97738157ada7fabde91e098f8158cd1cefa23ffd7f8d0e15bad5e6d7a02c793eb763c223b851230b1c70db1c1018d99ee7c050f69aa14d948024b8cd870371fdb5a84a4e1907ba1bf55cc93f3c505e500e9c88177ea7cfb658c9d745a84dd04d9884abc8b6b9097909916dfdc99ccf82841cbac4697e452c02a80572a5c75838a098c26fc26f8fcfd93aea233830b206e8762e94f3d6a4d0f5ca5ad17a0ec53f4eea64647a2ccb702c802569ab01017f0b9055d66673d3962f1222b89f34b9a48abe3e8589006f255de612a8cc867c31e87142dd6505551c784c9b455e13626ab6e24d7ab8e155b6aa614c7ffcf8d5a29f92e5af17d137ba6be88c58b6381e53aff98555f34335a7e60c243e79b66130cb0809e478938aed37130c0101decc7bf471c0cd248ecdbb9b790c408eddcc1feb72f56622a549e6865907be998ae72edccc2852e4e2cdb44cde798521a66f3b3773964dfec3c242eb6ce8cd6c09522dd8cdc4de097d2937c80533a3a1fcd117b57c8d6833667a664f50c3e6a0ce9b4e1c55c33c3c777ae79a2e91f0684852e360810e178132c74440bbad89a914e690435e578721b6f36eb1d5b60537d80111bb8ba11923882d8a5c9a04b5b28c75d27dee436f50244af6c8a5a5295eea0b3d3d250de6b1a5d9195ba0b8cb5aab66b2341fcf9ff81a6ab039f17d4896e9297fc67908a9f1394db65e7a9a53d3e4957a0b39f4fa0718e8a9beb3ba899a7ee9a38ad1dc7969875e71385e94e88ef5ae893b2bf78f7a73dda41e96a248fda55abca4fd860e0fbafb74cb4a9859c97ec823607231ca3582bd5bb0a341d81a5bffce059702e20eaf71a1209b0743199ec72b3c6e994f2df4146be104d5a0142f2a8271ec2fb223073e22fe95130bedfb2d74880d37e978d1a516785eb60283f35a7837530f5669bac93d199c7d1662b274b3bc18be00625c95aecb6de3f366c97051bb5a026853f2e5c95d40ffbdf30b6bb0da4117f104a5ee6e5cf18c9d1e71dbdfdbaf9c03fd5721e238205cb6a6cfd63ac1b8907571a04fc7d498dacfcf3b1201c7067de2365120a3cbee6d66b248b95119dc5b15c106001956858f3f307562a659655b4f19fcc0c53e3f6d3986426253923af158b886815f650add7817185131f1bf7730f5cdab30d58bef1574a8a4e090c2a916a13ca14474c1612293896d961247fd9612c7c7d76212e2c64a287d3307087530978e7949cb20106595150ec32bd9b71a716c637d70e8692d7058a9055f646a8c6d5400c79e50c0519e7235ba19141b2afc439f34957374431c40444d607fef10136ec9307099f279e205e52b70587c5a721fe2979dafc4c824c410f720c4054ac6d2537fa2d344a1720fc501b1ff8dd5d27f8ac154d0713cc34b717e3dcac5e23e0729472c4d881da03c54faa84ce14431afd0ef1d49616536472519463f075de59e3efe7717d3bfe262af90b61c67d3801256d0cd0735e1ce4eaf0c8eefa9e5fa03482e8a7bcb3a070225593efef70aa67ce51626bc8b6126b61a53b902dd37ee9b15dc162b73bbe77aced43f40e21d60ec3b452fd81e8c1605afee1aa80665a5b6f9112a62bd4df78905257648508313882c63f146fc65c3b2d95da12f9fbbc2f6f953237679b7699578a1c177befa62c8e4eeb065827b3106c59aeadca357e9dbd8b0b719ccd1a1a353c7e86528978d0253efc0a6a620f5d0e990a93bb028265c0156ba6d3c8c9609415240d48e122c0c53737519abf0c9dae42f5bb8d6c6da2e25c0d702ff7a5b4aa503f39204cfc77816336d78c390ba0b07d16291962749ad0813c7e248859e8dc5845cf88b99a82d02fd5777b8d950fbf419a25ca9c5419e961fac084d4bcec74a0d063674e4c74afbc856a5abfc9054a68eab963cab1e7f47bbde8f993dd7522bdc8001dd5d2b6f1a5e006c1fed30fc177e31dc2d09b87a45256a6a7ff268884db48f94a890f296a74ee2ab8a4d069e6d1fe431e1964e4f69492be8d447cca3dc5118b7d8cf73e7fa113cb0901fd2821148833d783e221965402ee8b1b318080feafd8adf60a9797f176bb2688a449c898fea05049407b94cd358a3796aba1963917e5d70d70bb53c0f7ed4b32d7349b8b4ba4581916b77b35df093d7e5e1f174dc97b1ec5adaf1a343862820abab02efd666343c559ce983654a550f5dec39bbb4dd224acc3b236fce3369a3736504b2d31a997ff5c1cec75ba3170f5e2294c69b5e8da20c9cd292ba09ae775301a49f42d0fbdd82627a56f370ff76c13a80240a7dce898e0a073be6134810f5ae023f49b5e8a6e09aab63411829c45dd064c7c891cb4cc5b6b1af0f386637109b95a4665925303e04b25535e2494d0b9a0a456e6f5c5ce6b490ca53f100439cb3a55ce659cc2ab1162fba5b47910e673a82f5c80b2b5bee11a429a111203a5aa4c20f973a4e24db455d75b07744e1632bcf4afdb47d48a1f4adcb7318a150d39b58f9f04924feef54a838fe125513a3e754feea9191486a9a4946c6a89f1d8a87b27ad36cde9a130368bda9affd8578482a576221760ea171e1f3df1da625e03da1d69390c085fc162b4cd4ebe4d61cd249bacd03c625d3e5b2836ec835fe7a1c900a40c18871bf12b365109bf111ab50c6837b7ef6302ca56056d061046ace0b925ba6803a3be7861f46feb77ff136f34a884b66c0df9b1c70ef8d53c34ec9c1615f4a95d7466415b583c4c75aa735bfd264fa1d31f15125fc937ba9db8c334c7e3f127b3602371b00b1478c1e6ec80499b8fdeed7544327e8dc1820daa72c4fd8012e8960e8ad59caae2be008a1fb40b6e91873a5be6d36cc5534e83ce137110176e93300b2fa4f785137ba9e1b58c2a3fdfe819a0b79df42f3fe2962d0f7d6944f21f3e11ebdab6f0b0823d8f22721c372f82511213231b665840d745a1c12b09162674af04e95fd317191619bcc09c9c8e4d5b977b8352c3ffa9474abd03a8cded4b4970a654e0998f9ff73326a811533f104db4e4738d5c2c58068147735e77b4ac9f655fc4b46a17cea26d58716eb61bf16510c4c914558390ed0d5f9ce9b74e550336f0907bf92de4c137674dbfb9f7e1907baad93aa550bff798834b74fe8bba64847ba79e548b54551c99ae270001344fb7bb864d2ece17cfaff43942049210ccbf202c0e2d833ed017ba65c8f20478a3d2f362cf0dd9fe4879d69299e2f67306e476e6425ee01d22f4dc1e2063d02e38c08b4f5edc76c90149cd5320b7a7ffee70abfb28d87bccb0b595f3e1d0ebc16698845469425ddbb7001feb8ae2867351bf34476102b26fe390d595b3a95084ec48d395a768db21ef790f16fd34b9441ead397db2af9e55a90ab8cb33fca05237e1b92c2645cedf54082737c1ccc8b52206951921544d4ad111932db3c60683291ca75311200dc7cbeffdb546068c7d224213709cbec2e840fc85a7602c24844db7cb0d2289980ec955f9c053edea38382a1e98083f827b9d8e02f964d683049913739bdac4c2118942e691a5ac6583e0ada503c2c754ea9234f61e955902fb6bf93d164c7a294c871bc6253c194f4114557f7720c170428a73a88c8a6a41216944d6a2fddfc1752799a817d854e17783cf45df3624f973c581243830681297ecc97757c0bb9f1af931232a38421635e810d2055d8ce49cad3b687c01b6b93f76c9056b237258c2c0d18d94aae8da1723b1737bca507dd6ff41613991e2c1752dad5c05673aa6327d4f7427ac486348292703c17ca4bfbd9958a0e93e6188fdc5fe2e852c3caf8e2d044b04a55b48b05e17949bc4bb5935a0829c5096078d8ed7ea8f844c9532d77edfa832aca02e469a847774237cfdca02f011071819a1d6b28e22f749f2c79500a147bf8a0ed1e8542a7ddfbcb1a42b26aeed49755758ecfe956afedf021484250f5361f9a5b224bfcd264a60a9d99674b00899eb7990b53a595ea0c0b1344bdd28590c8031e52470f4864489bf355911dffb89f4eb571055aae53f0e0165df40af68b0adbdeed84ea17da12770222bb247d6f7b45d40155692f1a896817b5ee4f2f5f899961d39dcd17cac1de3313a2c97382ae1908a21dd6b15ffa3a15609ea6577c2504c1b33d85b75f8820905ff2597fad6176e1aea45aa6e0473430e92f771a2ce64d303049115b1fbb08935be9a4e4972517b4ec3fae0fb507b4057dd725796d06f530744feb6d31bd5d5a8efa74d9792e6cdc2fd610fb38869d191cdefce2e991f934f1aa79bc627712ec5692193b14f52bab27ed0342bdbc4bf04abebab60d20270be4fc17d7e42e6fba0e0982e198cce1f4bc212fd9f55cc145bb8af28b29f728ad456bdcb27dfa2e02e60180afe6fc7b290c49a56194d6b6f8874d420a2a434246fb0be35f22daa1831d51d0eb958b2e7f800121bd4b9b81b08c2b1af73082bf9033452e18e7e983074ddc8aee290f41b9c92c531f5ec17a4ef32bca06cf0ebdd3251d563f73b1729ec64617ff4f91c8cf51daef9c4b019fc6a801b9451b7cf4acc1e59f58536eeb4cf72fa7db8140baa3555fcb08619a1d6d9368c19841cb43d875936dca591a7e5a8994aabd9ecb0335847a09dea4e000af027d133d7b22e3f0c997689dbd3b8274359e5be066cf12dfa598b03c420c74a85cab866e00631f45acdbba5c6190d6512174e238a416c1b3a87558c05696368c1aab954c9af7b64139d799648602838664591ed13b0d4fd703bdbbd90c0850979df58ea5021d7fbd6a285ef9ec53a2263ec7562d2fde378be3639037cf7c1b3f5ec95699a7ddd7b7b60320d70c99a251df47dfe40dc4c1a8bbd3f5f0ff581c8fc9eebb279609fcfe2b729200cb943d22238d53b9932ad4879c933345f8a7c55e4068dfdc3b89ebb299e063d477559fd57f48637dec4b12e3694f0c098fe02810b28e90f128073d0b2e6a43d1929f54af802ac4885116aac0b25f5544c92eeae9a8efec8b2a645ff3777207c45b52dd88306116cd8a2c405320bd5bae4be156431de9bcd79938d3aa008c30319f51f22d1ec0361b3954278b85481ee40f7c93113184b44715d8cbc48cbcdb383b6bcc68d5152da7b9dcf08cf824772c2327c062b61f5e1eea0d7fc57bfbbbd711b113255eb0ab844a0df640ba7a58d0d83afbeeee001cf92cd64aa0391fd75fcfcd808748079e2da9013f6f7ec1bcabddc8b49728c982012e87b446f3e6bdda0cf5b50dd3c9d68ffed1be87fc10c1b0bac0aee86a3c879ab5947efca109d6f3ad6d963e98fd3be5048d5cb7e8bbda9843e1b5858039e17d526dd3c9f5104a4029e003b6863507b86f39771cdb95310e7c7f999b37221a1e8b8b42d88f11f1756f2d9cbcffc928782b19fe0d4534a8163d93336a887f8ee61505211044db8d263c807010100e175652cf8b5325fc0015a99a8064cc127817314cca123cc4c809f790825a5396cdd96fe5335d99df8fab6958c5803c1541cd52746216e466015fc02ef0ad62033dab427891f4187acad5c832d9accf7a8a9a88f8119cad5430b5163116f82bfb7ebb6c4e3c54ab049770992e94fecf1ac839c79f0f7ededb58f9c233e45ca05534c5b5b5ec26ccd07ec05924f3be1ef953e1befc91813161bee44146ab258f91831975be0fc0d890e8d231e0a0a331ea64218e84eaa9efe328e3a0824f51c708f4dffd05d7a36a3bd3cf2db81e97a861ec135f60c5308c3110f5ac326477814feb645a573443150b611ebbb1f287c7d5ce99f3d2b6c1d1b999f49689aa69f8403eb65c738db39b214c0a0a675a6d1a5b0b8c46313822048c4f7560e82bca7342746df7cebbdbfe98fd3c7c13c3a165d4024e5e0f14412fc7b798245a727c2bfb498e56d29a700ed8d220ac81ba9e9f55888e9aea75d4ee2a9ddfde774be65e6c9b417c6f62a99ad6ff9652d291c35b06514a2ad195534cc25cac701971b61b59f68e9f0524c94ee401e792b68df4bc73e0e16b060a0e8949f4484cce2531793d89c9e394980cd2efc424610c37a5e92d1f41ff06f2e97274629b8da90297d2f5cf06170565181567531b851d7a89b847fd08a48bbf4c50aa33ed60cb78f8d63633809c41077be11589694b12d4da4c2b1f75a5ae2f40f033aa56be71cb44288348df00473edbafe95b10c767bc667c434afdcc5f5efa8a39affce53e089af790f44ee735e64fbda148d4df966b8a1d36389b83e6456903264a53f0ecb76506e233e576b5a1e1d697dc496b6347b2524faa2da75bdbdbed276c6e30f1ccba34dcc59be6612c9c95a0d11e943c08eb1d72c6d37b39c0332375b2d5acd9c133b08fa5cb815165b44bf78b525aa180bf09c13e182d34dc80c62b899683cc71d566565ae1c353510984e7e7e6e47237830a2aa646832cf965623d070bae5114c5d1f2eb8f2865e0924405f00a7d2eb5a0844905496e6854a1dbad66c32d2a789838f606c0ce711f00568e9b4cbef2c89356bdbcda310ce70d2d43e89527d08efa89243c01e5e7b93d7c146254185edb223fd34b538b23d3267c65132bd2f892716142550848335abc5bcbc33530e9f5dde97080d0e58ddbd8f6cca7f8a9b709ff340ae6b2532ee098228ef38305d3f7cc9d37c0952aa1c7ce13390a6334dae49eb83ee27409169c92d822fa5949ddc0bb9c141f7b2789dc4ae64e0d3597b2c5ed688ebf8972bdfbc59aea06c3a9a44939cc175d69369612e2ffdc1b0ae58852b178442dfef90fb00a5590f8fdd57cda31282c02aa38b43e060f8ea31e89b03894761d284fb4fe1d980b948471ed8a1dbec856596fc4c8b170162172271d484176885b224a4181a94e6843c7102d782c77c9a428c84330d046a8c1d810ea982417f0ebab151c9cad77787c92bc18f1682c0d23929871b4b66730d2062d1fa88f71d2a0c52d559a5cd62d2568faa0300cc6d1d340320c0ce0c1b3211d7175b31f9ee54bbc423715d27e1b50418591284e6f62e18f24fe57a03f0b45873af1a18e77a7b4fcde0af679c7d011ba5391320567e3de619899ba240fb73fd53c794e0f4139cc9eb3c6438614bf5ef31eaddbaf7a5b0cdd5fe89a64ea39cdfbcedc72a1d98218fffb8fb3e1835a0b3d245f3585bbde2dd80e8a37b1129e1a424c17443dada72b46e410b7fa9ede0225cb2f1983edc15ba06ff972d7304c7ef3ac5efdb63a6b388119234d0b1b5c081f7068dc0ed1dead974f27ef5d8cc8fbcdf1ac3918e73a98addf43bdbb9bd0a17ea76719dec2940a2143c6b263f60730b5c7df2601611d8d9098cceaac2936682f0813b0b2a6680e11729ada2c5a3291c0245e807860324e9475642a7a452ace6580db5c5b3aa89648bf37bef1f1df051c3c14010c36fb089b1734cb2b3954a988b96340335bdfbabf9d59fc583a2e3bb060ff358098dd2243c226a42fa13fcbbb31b43e5bdfd0e8ebc88fec3c9b311776005b5578482dd1bd430c9afe81e81313362c3a30b83827320a42a506867cd2249599ab6b712226a064bf8fdc54c6bfba947f557a5c9249fb670d596c9e9e732366e83f7518c033253e6a6a7e66100b97b95324e6e45791f80132114c82647ce8130789d933a561e11f5f0c80aa6400b78b4adc4ff23f311b02ca58693852a5528ac8458104ff9781193d7c9899dcc19fba13c76f1a6b84e3480fec56b72f517675d1089d5d91ed27d873576ca59cd93ba6df9584591c15e1b6840c1294423c22a0ad4a7170fd24767afbe3fe76535989b60bfc3d3728bdf347c4e094fb95b01986c38d3bd2ccb4f96453932d7c0e08d3cc19ccc166f3c34203e110b6bf24421d621e81dab567fc908350bdca5ecce3d1969386e499b693d9f53daa09834a8edeb078b01db54700f48fa7ad0cb497ff53e6a2ef9aa91df69f0edcd31fafa69d50bde16d00cf6a334f91c31addd96f878ad662f840f0f60dd1769fd705896a7084ca64d70c21db6514ed2daed7196ba8403b5d6dfea84093069c9b0512f4509a97cfcd6458738dcf8869d5f46cbf3386a93f73f5e6092ba653a62e176256a53eb8a2e25f3ae80f9bc8446e5a91862395463965faf6b9f457b04870991cbdf2cbaced8374a19074b2eae24652458b8fc7c8eb9a39558acb943688350b1a5d489928bbfd59df5f25e8fc185d9a140f02f2dedcd7a88075e9ee37d0e8b31fe52d12eafd4ced7d9f22bddd41bb1741b3efe24359388a292dbf4ac85f02a294ec370b52ffc202803b07eecd1057fe5cd33e482bbe90ea3a62daa17c17c3297143bc24b871df1475d84626eeb08f51e6cc24a79d455471cafc542f4b78261c3c5f4993e1b583e0f98fe57ca3be4df80f462ec5c8b9122fa69e45b621b198f278bf2421cd39881572a1118e1d8677b6bd01ed6bae7aee4df2a338f6c48656ae05b16bcb3e7a119983db66fee021b2654852a8c371905e416fa2d886d66c91d1409b5954af527920884aa9c84c95036d9e314c43651b138b9462ed379c3b1660ceee4f3bfee2ebcaa70eccc339cb9a5638a5c15e7210802069dd5893032570cbd8d5fd603409b916df73d3703e33cba2465af14ac8753f8de7f94cccf433c8001a35132124d1edc3867fa3f97c1c578a57272f12cfd63e6af2941e4c3702ac864bc09309400739c734c3fb98a88a8cf26b55e3ac10bc2cda52dd2a3745127f9d4bd2769e0ffc162f373516860b222ad23c04fdc583d3a544c6f65434ff159ac18ca184c2311e3e046f3b5b9c2a58dc62d101f69cc870b6a212710a94fa6916af5979a5a4068908162c9d80580acc8427a2d3dd9f2463dee7938bf78268fa219f85a1ecb54bb1fa92a1c9e4d3ad350448f1561a74c1d2a3e614db024c81498cdedda59441892b9e41b2dc678e0ad2ad65d6a5e583decc02286b9ea090ec4034cff1f123acf8d0e619a96dd287ef960938fea4f59020eb9ad869d3f5b53f61df9b3440e4ad79cfa5014c7a0d3721fe955fd0a34bac77a1a5326bb6b377570505e8e9e828eab3df8aadad291f019039c2147703b5ad7ca5bb08ae54606287a4d4d8748cb11ba26819cbcdfa765e625f6b2352cea6e3b50fa44ffe90fee72c897cb807416d108294b8eaab18f55b8b4b4c4e478a75e3d1d988b886f288c11d04cb20007ed42b723f1b7c0f22d3cf5be23401bccc8b66c63ac017ef879e875ddbba6fa190c5803528b4b448da1d6bcf8dc349c58fea5d4d937c33211ca967753793be7f84fb3484bf682b39110948583d2ad1ca9a71aea375bf5d37944cc80cc460c9724c4d9c5ace7d1d42c5d83a5b9fed249f796e1eec32009d3a1dcde97cadddbe3c4fd089e1eedc2f0c9b7b9d8241bb44a10ad1fa459d77f30f98142d155dbfb797e952d16003dc0c5c47dea646f658fa15f6fb792dd2bcfd681ecee9f635205a3d7d1cc89dc5fecbdc0f9ab4b23ac313430f56f256d53425de26d3639a1d4c7b307ca8070b38d1a7c19f0ec99ed1d9851ec46121697cdb49daca2509cbcf24cb83d5b9234f4dd6bb7a379cd1630fa05487feb290589f4fefd31143218692a5a4c5c32787a32a362b3121b931fd81df0115b1ce10567d3e074a2de7b5a92c946c5f9e182ac7ae75f0832b8faa82b3ac79df91d9a7d7e85d4e6eb8e315a22b319936d6ca24ee5edf4290878658f87bdaa858b1b5b9e36606022108430cdca183742bace997f5f15c00a949741f82ba6c3f4e5a06715b82a767477b9f7930507c2e935853e6e4f1f8bbb30942f9b41b8a76d430245e584788f257cd8aa1b52d2209774978533817f975ea4d1f41866f1baae40ffd138481e38d5822f43154130fb75a7fb2190f566aa174789eece9184f1e5b4849c4d9b545939eb5d18e9ee8f8e94f4b0f053b372d510cb48fa3817c5e6a8c61380cb4af602d33d245a6715593b40f40b579f00915e64ce2ba72381dbb50a841b02ef552acf856f2a4a5bc499bce0f04f48d5c786e2baec9bc8293892fd89a291e2a5bddfa2a73dd8a25b6bb6846f681abc2bbe1f6c18f710ba21bfca88cecd1c806211ec4821567d2097bcc1e9f651359c0a27ef5335ee69cd1ee3c5a17382e12e2c7a53c94e65d6e196c81f1968563817c1a453b5911d3144aa6f05c80547dd3ab1a0a4081ae6fb17cd747e9bff5567b103a952de5d401aa5087a42e078b032f983ce429271ba67346fce0b9b5cedc4590c6f28f2d5963eadac2922079cf5285008892afb3b2d2fc3de91168a054d5b1520a6fff71cd50479ed4a9924b0e80f97a17122e40ae3f1474d0d7c16674c90e7a439ae96875c204f8284b8ddd2152697df0d7d5aac0d8150491332d04e8c95492ba272ae9fbb8c467f9bddc4cc97c0eadf66918d0646d2aac4e0dd3a4c062898d85cb710daafae232804e87df070d74977bdccca729848dab4486e151ff4685c7c9a5cecb62b78e3e497b1a54e774332b2c62f150d38a8d5b46e1501fc0cb23ed592b92454680378ccc1e7dc56ae148fd257575f80bf9df63c1579df9426d467c4c9d01ee13c86fc6899178d083290e299af6263f244dc009696891adefda8d1b8c311c2069ce8aff2c9fc778cacc5a63f1bc664ed7c626d2333cd1a52fd74837c181182b55eccf673ea172a5e24b7746a44c2eed76edeef8af3c5574d0272e74400508bd0fce4d619bc2d3d5c2f3b534a92b29c4b7dda43b7055c2f0cfac554f5c92db56a09602b5ebffcdf8c558add60b9e2a23b8dca815b07d297a9e6e388f90f9eee7fa5cea8555c30d3252b6fe3485472d2c2bc82ade0098bf80a8fbe687178129b9028749c45d1d2a30ec27660bb632c143e8d6b19bcf46afad22d51d11baf1e4f3a1f144b594cf8cec38058ce921da2f7b424ff6fe55610e58b00ed7fd199a818e99baf282101f2b034bb448f58c29a26c993b5ddba6335c905ea3df89a1d70f268ff2c1a09f9619d3f652a0df4cc4fca54401c2d09690ae6e0ad114a5ed225172b736a4a58728931f9258b3621df0f7f4a673c5f2191342bf5308f35bbf77c57241233a318dbe80272074592244e5690698fb44b90ebfde7fb58abd5a8a12a95ad0e456149e99e5a65b52820685d99ceb6636b75b785991cfe86f34d0c11a09720a5e1c33e1f3dcb75a0a6d0de2c759222a17216ba1531f445c54d06c0ddc23616b8858dadb1a50bfcb615ee085bee13ed67569604d571be2929e9e871808616b38f16b3fd1f47366e6c6854f6168d80cca17492d18dea7bb8160c613fd4dde1925c57eb55f7ceebcffb4c8908e9662d832f0a68820ed44118298976edd5b69215ae9974ed778fa1ba5d9515d63a0916128933938c1140832a8818e98c985a2aa2d17d9e4ec50b4c911187dda281f1bc74512524a467243807100edf38f9d6f28c6712cf462f42b1ccfcf74b85a464f1f259b5794e3c89dc3e8919d18007d0f0671a1c9704930afe1b82050d4ea5bbabad4bd2f7699f1ef80426a51300a09406d4699d3b8b612d8dfb473806c0c78a2567827d684afd9ffb3de40f1c033aed83e4ded7e5a777404bfcdddaf05fae7ce3e0489a4491ac996011d6a049c4de912de3612efb3f31e5610cc6009b2b0cce7db43905573a37054efe39431498e592649ff44439c54788b311786940d7d55cc24997bff8d4104ce067c1ce64115186b8e5ee0211ed5260eb8ec82a008483eb901c7464781c2e0068844d0593c2a62fdb40147166dbb91cc8f33b022930e978297f7461cd84e480ec0dbff6e3c3a8e58aef13d325cb64a5843eadb2a41fac9ffc51fc28ace199cf7f9d7e45408fec4d22ecf4ee5b6552bc9b27cf4ff77abdbde875181236e9269260d8b37f2eedbe9955851d15bed5bd0c44a347bd6be8b7d548be82f3793fad69062f194325fcaaff2db10eb58d24b52c5384259855e2995e18e39f197fd5a6edc9da427b4777bfe90d82ad99268d97f5779bd5647108e254f010902ffc70645df2192c6c05789e3037717224e6a26f7032b83fb256c08306c942cdd8aaa3a959ba1cf5e5bb92c80e8081c31d067af4f6294898db8fd2055e75f6c043db43b5ad8301131964b1221523cd71a7715ed7fc5272c8ab1624e9ba2e847c1a44b694ac346f3d1a32d10d44b1e8b47999091ce568e25a25bad2a9a2cbc2d50c57926748fec9a69a622233559dbd6ee22df29901a082c153df07005c78855f3ae02177f2f32b615fdbb7fde38272e407963e20522d9d8cedbab3fd151b841ff6dbb0dd84d3e1b0e55beaed0e3f7505254008a69e90172b842388857e45d28a745d999287e70b80367d03d35a887d625962e2445f412b969ba72acf03fce59fbc03b85548d0bee5ff688eba170d2b77e7d5e7fa95446391183131f720d55e5443ca972470048bc007f1b0a80d62833f2426654315639751837b1e7a27ad3fa1d5daf95e19ae27a3dd9a35b869658dd8112e38c397aa2a8186f328a8c18645c9156d4342384e1ba5e3072183783e2461f284469b2e1115b89cac7e5dbdb2f9d9884480fa2578afe887c3bb7c3174aefad4248d11d2e72cfc2e6356934ff871c72e04a35831052ccd781f7ab1ab653941d765666425c034bf78b54f28898b884419694e4d7e9fb9f6989758e530a6a2a2486d1c66b499730544bd2d7d737a90887fa784856ed143e5b0c11a6b78821004c2e3e1f1e8b477c4b90640949d6256062fdf878f45259a07783efe2c9d8f1587a7d3a3eced16874daa2dbdd340b7d123cb1b38bd59e72d43fa804049dbd43a0ce33e53d327179f43f6c104fa01de8390e68ae8f53b92aded60b0ea68bc0afc9c054390cb0a837aaaf98451f5f078336b48c62ddb0df88e18fd790024eb97675311a64cf8b6d6ba348a8d31eb470b36528bab03f93a148905545da135baa2ce755ca0d08fe5769fe9aa14d89e28e946c02826252a452dc9132f5ebb8a448f7d976b83af4a7eb75dc33b4d68b819e1107ed0f1e670797012fb2dac929a97006fc99510148153bc6e0e44aa8775cfb1bbada51cc31f1cf041cfacd3cd342a22fbe98028d9ef9c9941cfa2b31c745baf396e31e470c087a730a7ab2ac25ab2222a35cdfcb8050055155095053e210cefd7a4e3d238b5be7ae90cd1c61df0cf58ed80f156357f885b7ea229a77f49bf80be05eb5edf02fd32a07e83987aea1fa05392b1d8cb29f6daf4989fb21b397e006c0c5330aa3c743250208ba2a864fef5f1bd68feb5dc2f63b77e99d1b4fa8228c17a55c83ecdcb908520df47da00c593702e52499298e3d29f840bdbd7a1b8463a05bb3b45c5b85943f3cb1a0d01449d9cecbdafc6a9e52f570f3d4738593e2cfd2b3b8d7718bc0ddb6a37ded58592c0bf95a7e85084ebf9a063013b99012358318358fad1cb15ccbaf85b2b150cb0d68ee8de5e4bb4a971fa6153f58f6d93551bb0cf446995a7072ef5a254c45937b0add24b0968754150a6aaff5a5f42d6da8f1562e0f5393fabd317a5c39596a1902783d28ffdecea95f5fa45d8e830ea36c497027e1d5e89273c7fea5d2cfab83ebec9fffc0e8b5fc8ce68f4ad962ca4207448f06ce0fc8f91d42101831a903477ff408fdff8f22f8e8e87ff4d13b50954647e8ffbf5ffe46dbaf27bb80b07922135ffe0b1c711c47fd27408746dfe1564df7ffff33725f4961edde292c1be51ad81f5d43ef35354ad867b97beed79996e92ae16df7f8adcf8d9a87cd06d2b4ddf3d917e621ac694195053816dc0b3838c5e63a5b9d72aa55f6936d9bc612d2566bdde39ae6b3cc07e12abfe9d9cafb86306e7666b5c29dca675aee83324c485709a59ccc79c79f64ce0cff4ff7af02380a522898f0ff75ff26709400cbbf331af76936eef55c67fda463ddea27c3b3dc03e16bbfda76afe318e6d1b9cefa4539cce9bf590e94ad73066ecb7caeb37ed82cb7e3b9cf75162ec18a041cded99797b7d7a7354de5867ebcee7696c30bfe05b30226fd7fbe7fc19e105cf9ffb07f11d8781144df7f11e4fd3f867f9b949a4a9a794c484c2cffef14ebd9fa0ee3d8de0379bf67b886b37fd5a95c25e46370b7f21bfe9be5ea2dd66d2b4c0db3b3f0948fd970d58ee72c35b666e9aacdb9b4f759bed6fdee31dcad34edc7a1fc49e6bce72e63e5697f4a6fbbc7524ee6743aa777e763f6985d77c31936f483b1bdc6f6f9cab3b4e1981cc861ba8f3b6b3f3e2626edd9fa96f641d90a47b1bd074ac3b85dd37c8c8fc53d704a5bb9e10cdf30dcaf4e3bdaad7e30a76f6ed7f23d77deab37d36ef02f93ee9dd29ba66b29b7652a5dc3d6ec5faf99603c0d7c9dd659fac6f66961e763dc860be75eee837b70fecbc7fee73802a714bead3d96f23e287398db71ef33b70d61422b7cd374cd0dfdfcb8a175a60d6142fe37dfb0cd613ecbbc4f67d80adff49d058ca15f5fbe5a7ccd5f58ce98aedefd8ac07abdabcebb5badb09ef39e66ebdbe6cf7b8609799636e4fd2adf091e3c08bcb37e7c2cc407beff9ffbd74b80b17fbd662f065d77d4feed5af2ce9abea7b0a11f97f24979f7e3b79dbd56fbbadf18ef3587b90df31e732b2cdf7327a4addd8fdbb2bda096f69a82d496566fb8c7d1a8d449cfbcf79aca63392b285beb4edd8bebf6ec99b6e15edf7396bec28153da2e96e73e82aea9f61f6ca500d777e19cfd075ba9711facbbddebde6beaff2bf8b78b776ecb2fd72367dc09fbdc6bae28cfb910636ec3f62d5fe7b8f4acb05c775bea5faeba972bf9ef8c654edf5998d7e9f9e784f41c3867f8ffab7fb7befcd82c735b1ea28768cbd72de97f2d630bfb569b7ddb7261df7aff0d63b8d756f8ffa3fed57af44e2d3affceb8e6717c82bdaeabbb4c95efb9c7f2ff43ffd59a10c3b16c850779dd6f2acc616ed77d4f8b13f6b9ef65a171f06f568f1ec8a7b2d52f8be5f682ba676d5bb66719fe8379dc65aa5cf7c1ec0dcf7ff20dcb53dab661deefba4f03e9c1bef7ff5bff66cd5f47df59a8dd6f7850bea77097b3c21d4b1bd6f40dc7337cedeb9d1a3584adbd7e6be263567a4adf74adc7c7ee59a6b1f13ce716776cdd07656b8fa3b70d5bffe0be0d777ff01dbded38ae9be5696dbf556d98aebedef1b1aa0dd3f1b1c0296d858b73a3c2ddaebedec55169bad6e3a3d2748dbded9e15ec7b7bf615ae61bdb963f33af52dee83729ff63adaed99c6dabd8ede76bf616bbfe19b6f96e3bab8588ebeb9cdb47c63f3ea3e13d2d1ee67085fa385b4df9da5a377619fad3da6ef7aa760ed317d8df64eb5fb1f6cdbfd1abdb374b410bebac5306d3584f5ea1ecfdda6a9739d1c4d9de568d586abcf679f95194cc8f5af5572ee582c5ce5739ea0af321363b3dc86099fd2aa2558b8d733f4ad2a34b45ab354dbeed369d6e671bfbb95cfd02abd1beef594db3021619f39940a51af7b4c4fedf86fa6b92df33ff94a26dfd6ec9543ff3fed5faa285f9dde30d69663defd387d73ab15aefb6d95a99c0a44a7632a4df52f55dbffebfd3b2568ee759d9d76c2bbfbf1de634edf5ca6cad38e95f0efd49077c2371cf37ecb368dbdd2537e5bb330b5c7365c9d7bb5c7f254cef2fd3fdcbf537110fe9d4afebf53c39e949ef698d73497f69a8e93f2bf59ae7bf596e7ee295cdf859dd337a7f0ff77ff4a45f97f67dcffea2c96ffcd72f78379afd658dea773af3bb5d79caefb08b2999e395c27f8570ad19679dcef5bbefa656ddeab7daf148df766d803d3d6b286fd428fe9e95bcf5a610d86fd82dbb46b4073905d22a2d277e77bb17f973df82d5ffbbb9cffbfefdfa516857fdf37ffccbf5926bbe999c33cee32a767fb86693ca7d4fe9b653ac6faf7b5dfb2a839cf7fa384fcffdebf517719fe857af4ceb8db562bd4d9b371af4e6d4edffcc65efb7dc3bca6396137b462b13037b4ded35ecb313784af7caccefec9d4999e72698fe9b8bbf3cd79526e2ff89be578eed82ee78c6db8fa37c3d5e99cadb3f6dcc7601e53eb9cf1dcbb1fb7e1aa98610dcfb25f18ef7ff055ee3556efff9bff4275d1fa17ea88532ae586751fecdcd08fc73dce195893cd740f84effe3fef5f28b4ffc7fbf7c98fdcbf4f43fedf3967a9dc96ab37a7d284fd86add9a9159e72436bbfe13a3b9dc29c1ea46b987742deab77dde339cb6dc31ee897b5ed2ce7f4cd696e68ed35ef1b380306cfb9be3c3c060c9c8532b5d7d85ebdef1abe6dc31ec8615ebd6542ab157e9f24b8fdfb54fc7f0dff3a39f9ff0dff3a69789df4fe9fc3bfca47ffce59fe936b9adf34bdc7ed5ecb59c15e73ab159e3a63b8dff62c736954cabb9d813bbb9de556f85ad373dce3b95faff4b4d7378dc79d76b7e15e4f67399e61deafb03dcbf0b5d7bc5fe1994f3bd6e6bd7a5bb157b8b0d734958fd9dcf0ee54d8e68633ccef2c5dbd6542dea7b015cb7b207c73ab5526e4375cb5616ecbd53efeac805787b707dde0acfb0d5be32e5bb1d8accdbb1f9fe129efe3ce9aa672a994cf7d50fee330a76fde63b8fec366f90cf33e42aee9ea9d85fe7fd7bfca36ffefe457baa672fbda6f99f72b6d73ab55bef02a9770c2feff6fff2a3ffc3bb170af727bc13df7eb4cd7f2e0dcb9a1d5efda6d1bead737cc32b7fb1f8ce5549af35ebdf9ddf9aa364cf77cf6f5989e5a69da6fa665bbee83d1c069af4ebb0d57f5ba0d57b16f7d58fa9ebbe73ed8e11b96836f38eed3999eed7beef254a652b3b65df76bd69ee9e93d67e9386adfb3eb1ecb83748d85ebb93e9d69bce7b3efa6e93ada6ff8b6ef2cf6cee63d9f551ba6abda70357acfbd86b172b7ddffe418afee7ed7ec4c57f718eed5b739b769d7604f657b96ebbbb08730430b81e6804368cb7e88dfdab26ed3aea1b0c773dd141af7ab0c5ba7d1b8dfd30ed8eb597ee36371dd2cc3d538372c7cd77bdd077767e9a85d77aa3dc3f5dd3b353ad3f29d9df6c2de3b35daffe09abeeda89db5e76ecff414ae4f67d80afb45fdfedfebff0bf8fff85f26b1d82a67fd1c38cfce9c6864347596c9ba159eda65d4333333b533d8cf0f0d2d663ba3ae91d1b2d3ee375c4f9d853d9e65c3fab6e5bf5e97d17f353c8dfbfc27db36cc6f7ae6d51bd6fb7fb37fb7c3ffdff8375968d7ce7ec37ff220dc7698b0cf4b4f4c348d8d45788bc0c50a6339eca676bbe7f3aefec97b75de4ded769c73de448217c672b4ffc53d1a3885eb9b57a7377cb5e33a6e59fd1f9dee4478a376eb929d086e9c37e073b746efea9f5c47632b5d4404f66f3c84e0df08055976db318f10818b85cdddea9cd6b69f197ffbfa5f6a10e1df25e3fff7989eb9e18dbd76feec313de5ddea0757a770afe72c8f7bddefb9f3a7159ea74039e364546bb7798408fcaefec9bdeaec7f717779fcff8c7f8d5876edec313d77e8ab8b83ea41e3b81b2f8c65feacbb6dc3ffbff6df0afe3f8e7f8b7d86f53df7322c7c2debbdbefdcaec9996ef69b75ae9a9b2e9ffd1fedbecff8ff8d78d321bda4cc9ef592b3cc8a5753d27e533cc679a4bc5c2b0704d38679fcfdb9ab5fb9e94c7dd6a85a745be3df2ff24fe6d95fcffd3bf2edbff57fdeb36e36e95612ab7fb6de8c73995e686357ded57bb76de59da10b6fb7ffeef1afebfe1bfed7b5fa9c7ffa5ce6798c77daeb377aff94ccb377ccffddaadd8abcc6f19ae6ffe37cbf70d5f6b9acae1ff5ffaffacff37f1efbbfdbf5d3ba77d304a089719d670ed275bcba6b55de6275b6f3b5b97f9c9d6b25926ace198ac5bb158982c6dad3aad61980c0d8d2ccd8c2c0dcd0c8dccd07a57ffe4b9cc9e65b83ab5d2f45d86cdde76b67696d9b0e1205c8dfb60995d773b43d9ff2fff7dfeff84b4955af7419a1bdef214c6c2d3e2bff1ff9dfebffdff9aaeeb39a4951bcaff828808fd22128b1da572ea0fd6cbf970373a0f561433f2a93aef5359e44ae3dc52f39fe62e285fb0b854bbfc7ea16eb3769b2e778d4663d18bf24f28933cb0893ff428588432198daecb9b3832694436198b452664db36259b8145a3d1682c168d6edb72b744912f356f245fe26d13b004b43df225660b5802bad4142c014df22253100bda36dda6c0e67169892303914dc122d4f84626a0cb9fb7fc8b2d922b954b5f5734f2e3a0912988056d998046685353b0049489bb4c412ce8b17917a14cbc7da26ba1c9229409d90c7c168d4dc12234f0df0da35ce2fcf95b64533291cc874be1b6702e6fb9b28858542a5da5fbca63730b03136f0a54d2d43474b912a6a661914b5862a65861e48845de72d7e5ee935e921b992b4c34f136693c81d8c46c2101aec899982b5eb47045de42029c91179529982b9a3892b902b1c8dbe68a1445cec45b70b8a6266291333557bce0704ac4628a270c45fea4e732315fb4704c3cc97cd1c225791373450b09704cfc450bd7c4952e53c98d4a65d344d30a24dfc3299b269cf435f1969b60e22e5c13f34d1e790b3725e815fc4ad063335089a1cb95181af9abe7f2f6a9afc85bde3ee919f93fe9b9ee518572aacf9d2940537e94ca6491ad4489439717f961cb8d4dbcc48a171c6ee9b059a205875b6a9638646abee070ede191279bc8e6e1b1e545fefcf0d8ce835ae68b1746eef296b9e285b1d9a2653e9ccb6cd1b630ae78e144500294b730369d084a8016b92bf85fa045de6e503e18738a81f7ad0705bfb8cb6fc12f688bc5e45a0bb45ba8d49f970a1ac8a1454ec58b1c5179a5542a9b8046a85b2cbaee1b8b5d59bb4ff6bcf864cf8f4ff61cf964cf934ff69ce9c99e373dd973e5933d777ab2e74f4ff61ceac99e473dd9f3f7c99e2f9fecb9d4933d9f7ab2e7544ff6bceac99e5b3dd9f3ab277b8ef564cfb39eecb9d6933ddf7ab2e75c4ff6bcebc99e7b3dd9f3af2743f1723bff6c58cfd1bc27d0bc4edcf78dc5a5a2eb052df26febb4527ca610983af37e99226d000305035b27ae443203055d97a964c991cc402477b9b269c9018fef329548712453308a1bb9f269c93c2edd2547bacca627a6e0e1128ab78151fca14d4d461e556c7a8b1cc96c7a9982add138f8055522856402de4f4ec9c32512c98f4f524e94bc5d72570988543e319548f12825524d27f6f105875b2e8ffc5b8e644639b54b486ebbfcd80c4472ae756c320552befb764426999ade944efc0dea2dea6de9c51feac48b47413d39299b989248c022378316b91773a9746a523235259990c923921f2ef12e7eb8c4b7f8e112d7e2874b3c0bebcaaa8a6acac8951cb9145732a1d8c5e4621a934e2f151617070b1b7ba3a09e9c944d4c496493bf31e9f452617171307eb8d41c73d55a7ea23dcc72910228b9b8a8b0b0a6a8a8a4de77e9e4d416db2237b6c5f689b75c5858cfa9a89ebfef7327a7e7c9e473a371c9893f95d4d452ea5d46bd874e4a9eb81109a56a96e0926a96c02a41f596704a3e55f143a7e62b9bc6a66692a9e9946cbefcd8c45aaa6a364fb4874bf7e842c9c5f5c5294ae331d9e404f54a717161615151bdaf93533269342e99466332e9e4f4be545458585c5c6f6bdca37c3040e5438fcc262666922b93528dde8722a70e7899f89137053231b1497ec2c8c49794fc783c1e8fc7e3f17854f2e392b239e842ef236fbf408fcdad0b4ae8916f5d28428f2e14b03d3207db0b45e8d1e549173a25e67da89143bf18ad47418850ab14a214a5d7c8ff3992796c06b6370a503e98d24dba45feffffffffffff37feffffffff97dca2fb49331769d63472972fb9ee92314c470f20438e2c4974f9bb615187940f06a8fc6a8dc7e3d1ab8b6b4b2b0bebcaaa8aea6b4a6af946413d39299b98a4fcbcad71899b2d7d71ceb760a1122571c99121407ab48404f9d16347ce9b3669cc18db2d63635cc90b2c0d1a5061c0208a985862581837d6820bb8cb055bae846c0177c1e1d06e90357538993dca100031031b72c65b2e98801f4153c05d70b8b304dc05873303e32e385c1902ee82c339c99a269c34dda6a07d42013736db2d0d9a2d1606cd968a58b38d12d66c131734db250a9aed9104cd760858b30582a059379b4c236f1abfb8177f77ad8bbfbbc6c5df5ddbe2efae69f177d7b2f8bb6b58fcddb52bfeee9a157f77adaad224e8177f778d8a4bf959e2c562b1582c168bc562b1582c168bc562f1cb6db7b458b88ebcaedb44e891d7757b047ae4753b047ae4750b047ae475db037ae475ddde381e8fc7baae8ff5b1d91e39f4e9d9d1c94d706b4b3373c38abc29d8f21691983b758669c6a2760521497ea04c1cf009b96fa04cdc6de38631f1e74d2826e0e1972d58a844495c726408901e3a6ecc78b1a24594f46811224282fce8b123e74d9b3466c6fc17b7b634b3b1303028141414141414141414149f2af3324d9579a1381367023481080db4b65f8eed162c54a2242e393204480f1d37da152d6289c21b6badc652101cfaf4ece8e426b8b5a5998d8581f1e3f178e4504dc0b70908c5a13813a0b5fd723f9179b78e4764b1e5456e1fa39a5b4ffc69891fa38ec7e3b1e5805a3fa1e832b7a2004f20f91499d7892779165fe2c8a7a62016e7f5961547f27a8b0ad90494e24fc8a726e0cb9b9a5b511c502baab9e49fe4594d41ac13d05bc907af9a82486814afb7ac9a7426a0c7aa66bd45d5a43b841ea59ac726e0cb9ba4a69a835fd037fb056d6a061ea38edc3e842af943c1989a814544a836cafb0b54d932b75ce8370199832df4b9cbbc50849a80baad06e583253902045b605b60770badb7bc3814afb79a4d0e15c5b7ee24d7431130a73817b3c9bc100565e25ecc0b5750266516b3e5544c63a0cb9f7815538b3b315d4ec534f22c66cba7980f75a7b8bc53cd26600b6d722a304ec5b39880583c8b4f2190e2cb09453066859fe247ee94c511f041a6d71787f2826a0272be845a3601bb385413708b475df128bed4cc7e41b9f843910f9de2f24e3599539cc9e44c2ffec5f4821afc82723503a19c38926f35078b50e4149fe06a31ed13d01bb07d9a7b02c452f29653315d4ec5912d7449058ae4cb2554952850247f9b4d402420921f97b814e0cbed43e892b71c8a09c55cf2a5a095cb4f40a99a8150dc86e2832d148a1938e8f26553b0aa699f80de4efc107a43f1414124f4358105fd272b42975c8ad75b7487d0257fe8fd4a01bad06513d03e0195e24b3ec5eb7f322a2e38d5041cfc822e7914cf7e41a79a8152cdc12214f08933f16573b0087d9fb87d0885e20f45423df140a726d6e5cc9b89b750a5b5bd016d6a6ed5bd88d022473631ff0b229489097802d97c0427bcdaa74497bb5c0fda1a8fbc65de58e2ccb66ddbb66ddbb66ddbb66ddbb66d4f40b72eb8d02377a147a9402f13676a264f0c8132355d17c9db43444865eb24e532bfe5c996bf2dc76a7958dbbc979a80275e4f24a552e90e1a79cb1fbd2e073c4404fdff07de7ffeee0b7a44ff08b1c804e186b9ffffffffffffffffffc52553615eeec45f66913f31adf7915bdb2fd03c265e6c063af1e27de44e7c2acceb14e52ef91387e253cb26be748a4ace393507a1f83fdd4135038b5cc90193fc6e9baced8d0b4ed0960fb69cc102d016aa64de475ebc2b72a6e6d6052668cbefc096334d706fa6b119c3e58f0434fbe421222853890a4cc824135f2aea41917c429189d93621399289b7cd2d260ed8de78f78fcdad3a2744a8cb9d10db0a7cccb8824b5d3123779b5b4b7ca9b82404488f1e3a74dcb83163c60b63d3d834365d4449921e199b4db719b8646cb688dc23f2e8ba4bc6e74b4539cae291bb17bea02e9feaf21a39920968420fe0e117137aa0493d3ed5e5457240137aa0476e6c021e22822af9e117c01243a047a5d3139354a0f7f00bb43532954aae0402a4470f1d3a6edc9831e3c58b152b5c44175192a4476b8247de2e123cb6885a20533d963aa26e3ccd707a41b5422ad974115f4950cdf65153b2d92e62e2d264b345046206080e2f38f4b52bfaf45a443d3b497674ff884eee17c94d4034c18d905b9ba0b6b4343377cd4e9a8d6d190bc3120646058c47e15c895c584bb0a88e50bd435e27204ec91e493bd9ea30b637dcb01340a87448cd7839dbbb92dc96b78bdc966a0b96292c54a4a8445946497c1397442d39027564c8d39016488faa66dbc3aeaab2abb8e0d19636db1bc8b66ddbff47d4f453235db7ae5dd7addb5a792424c88f1e3b72deb4496366cc162c54a2242e39520381b6bcae912038f4e9d9d1c94d706b4b331b0b03e35c5854af53fd2e6fa190de96bf9bf742dd13536d959be7f365984481ee7993d01359de24f4cb54b901fd3245da405b8e37f8055d5a4a90200112b99480dbc8a727eec446f2e493fb3467e44bcc2726a011f0893f358bee72c95b27a76412d0087de28fe445378a2ff1c0a526a09204dce50f5d3ebd4dc043683201f305874bb0e4cb279e802fbd4c234fc07cb82526e0ed320397f8e017d46d42712577dfe8baaddbb4dd362a2aca7d423299462667065271ab17b48a7f35015be8d755d395555397149fe03a25d5bc53dcc89f3b657127acf7c94b8b33f12d9ebcf21a3917677272db2828ce97980898cc41252cc078826609152d5c02ce22018f62deeddd42a196dcb69ff813677237aa6947b9dc7603055f0ed5b4a17893db2d6f3605974d25099a2f4c38117cf91377c234e144f06d060ab64e96b8dd72a8161ac574a9dcb023f3c839d30f3a65e53572260ef8627d311feac5ac2b42bb9875452817b336428f7c4b8b99857565c5142c2ef12a246fa1c8e6ec05a5e2ff3447d5bc8f50e3bdc49462ce2d95ca2663d3cb979880dc2959a2f0c642972a3d82ba4dad6b84bacd4117ba64b6d0a576d9bc8b4c6eeb32b5c8a5a52764d4f25d26f952092817e93a299b814b4dcdc0a5e652b219886c3ed8123f32bd5c2a14cafac8c49bf8833dc1f284ca9328477e5c34c8891c276f9cb4792a2e4a3a41dda54750972f25173929b99d18b8c49b7813924b0de2ad19236fdb18792bc7c85b3d46de0a42d43e427cd18329ccc8a9dc3023e76e98918fb961466ee68619799a1b66e46d6e9891bb8519b95c9891f7b96146cec10d3372106e98f1e82af714a04c72a5931353c9148f724a722727eee4a396ee1ae0d14e36038f4eb70b0564e2473ee80575fa287ebb50272fa813bf5d685433c98d50a60a2db48909b089031e9d96523c2a992ca16c9690727ab828a6e021f428d8428f48ae648a0336353541159bda23b309aa7d2860146fe281824efc891f396054f376a14b9c892b8f4c25534726e014f305879b724a1adf0ea5964ab8578ae9e48927998245e8125722c5954d262825534b9e4c4631954c355f703829dbe90587937212c59dd84e49a6e5ebc4a198822d34c97cdba91978e45a4ccdc0e4d30ae5949cf7d80464420301075ba87d3cf241177ae4b5a00b65aa058dd0275e0b26a14e5cf0852ab97d08e5ffc527639453b2ad043d36ed23175436ed231f7c2f14998c1cc94bd84d4d7632c9df0d43326d241764e276936de4824c4dbb591b79cb9b9a8025a04663f3764d408dfc04535b8c7123df9af86f4bfcb724fedb1166ce35e71999dd6fc336b1fdf2ff227ed9f46f58b8643af2ff5c5e32cd78fe8cfba0474dd6978a394d7e2c55676080da3b81248fd1d36d56546bf97bc2029009d05ff1597c16dba88a4f2e22974a5a983b6607a265d2ee8ccc410f84adcb64dbbff158beba78dffe69d730592275ec5822b9ecdad9ad7ef05dd3d8f82adb513fb41e085bdba67630fbdf2efdb7b7dd671aaff6d30a26a3d3dafe6fb1768fe939dae5fa8e14d7fdb7f4076b74a6ef28361bfd6f8f5a626119ecb86ec5ca751f218d67df34bd67a339c840f7d9f65c1f9ceb9d42bf0dbb9d6db542efc28ed7e73a1bb6a329406dfb198de2e5d5f1edcd6988ce5580eee5f5f145a3cf58cf4cc3f319c5daffedd51af84afebf05acda70f50fa6d2742d57bffda3feb73d6963edba78fadffa3dfcffc956fadf46457c1be2bf05f1e129d9793badcdc3bbb3bbd05a708233c093a8effc3fe1bf93da268df97fe714afadfb6fe9fedff86d851ed3b35cdfadda8f302c241cccde762d88a5e76b20a05cfda3f678ea077be8c06183860c7d7c7b18f4f0eeec2e58a0ab40614e2e0e0efaa08d6d4d2dcd01da995999936cac52030662610b14240043d06456e25f5e5d5c5b5a59585756952a55fa7f2afbdf4882deae9df48d35aca7ff0044c23e8576ee3fae6942db86f5aa37ac77cdda72310cd7a6d66d182e86e1fedbb8ff37ba3d9636ea9de14ad7141e98f0ff0f207880ea9f437af44262f3e5ffed2c2428908648a5fceaaa3d9ad4d4fe7f897f1f59ed1aced06a085bb1b62cc7e1ff16fadf4ef86f25fcb711dc1c69f9b7767ef6df42b8de5dafd128d67644f5fce9475bfdd21a21fe63adbd1af58b3e1fbc33ee82dc49df9cd3f7ff0fd0f6ff7d77e7fb57d1dbbf8accfe5504f6af222cb7883c84f8ef21fbdf43d37f0f71f8f7d0debf8728fc7be8f9ef21e7bf879aff1e92fa7fe47b742aa4e7df426d0a79f9b790937f0b05f9b7d08c7f0b0dfe5b48fa6fa1bd7f0bd1bdaf15541e22ffe609e0df3c31f290f837cff5df3c1efecd53e1df3c6dffe659f06f9eac7ff31cffc553e85f3c72fec5b3e65f3c5dfec523e55f3c03fc8be7c6bf7856fcff53d4d4f2a7be0a4fe0bf7838fc8bc7c2bf78defec553f62f1eb07ff13cfd8be7ffbd63e8df3b75febd43e6df3b58fe9f09eaff4aaaeabd93e0df3b4fffda41f4af9d3effda41e05f3b58feb593e45f3b2ffeb553f8af1deabf763afc6bc7eeff975d5952ef531d41ffd689f36f9d2dffd689f26f1d22ffd6a9f16f1dc17feb6cf8b70eddff3b6d45fd77fd4755fbe63abbc7345edcedec9ca1b70ccc3470b926a2f070ddcba672d9b4b66339da8a25db054905ff6d549be5c08aff87ffbffdfbd701273427da99d38c8cac4dd082f9a9bb216c47e3edddf255b6bb697a6fa6e5b8cffdb708ac70db9cca77bf566fb986feb7ccb907d27d7134dedf2ccf327ced7b7c96ffe43a2f86e1fedba6ff6fbf5a2fe3ff7fdbd55ab3317d17772b8d175b69ba39c3dd6d3b2e8e90b6763843eb9c3767e0dacad2cafa0f6448c3ffd3d4b94eae770a670815fa77da336dcb593ae6dd0faeb3d0b9db1c0eac69426e68b5769bae4e799da53b70a76d676fb886b158381bd33596336060630369bacaab53b8cfbd8ef399c666397dcbed85415cff7ff6f5cac017bb6620c32cf7cd75b7353b776cbf61b9cabf201affb6944c2aa8edff5f50f2f933509f4067e4b92e9e6f7996b1730f846f2a4debf1de295001a5019408a8077f5afb3c0322f1ff58ff029afef3277f3a679a8c4a935169baee83749c856bea2cdfd46e8561defda050eeb467e72dc384b06dc733fc17772b213d07d670a7d251694d5379bfc2f382599e09697ed784fc9e651acb0dfb05eebcf334caf3e49f3fad345ddd67c2bc9bc6bb69bc5e9ddef0dd4de359b314e868bcb963f368bc5986ab7c46dc59fb6fa9ea2cfa7f2c2dd608d916ecbd08820e584d4f3b4da5939c03c01c15ff5fd77381797373debbdb0bc222b46f0b7cf87f332c7cdb57f95e4a1d915effed9555f16b01aa05f42c8006ba1c73e29763de7e2966d2ff5ffdd7bf82bf7ab01403e8976286fc524cffa5180abf14c3f5cb308d7e1926ce2fc37cf965181fbf0c23fd659809b67c2d9bdaf2f5f9b4dd14dafc86b11c42cc613753ab35fba7a9656a93ff2df2b8d41aff3f525b8c6558af770a4e9bbeb98d95652bf60a7742a93486c7683eeeb4b9142bdf76158258030ea1beeb9d0267c01bf0dea9d1301e8163e53b7a772b0431ac7c874dadf0341a81f3bb5b29f0b2323e76dbd95a2a9572a7a11f1f13c3ca37a7e7301ef711b24d6668ad61ab7c95b335d93dd335556a85aff54ccb338d956f0efbd19cbeb9d4961ade724dcb3556ca6b99a69b58f9e656387bd7f26093f73b8bbdd253a91596ca9dcaa17c0d98afbb6cc5c6729ce55b8322ceda6bc6906af4b44cff8ffd574d524de1bffde666e8c7ebe92ca77914d7fd4b40e3be7c775bae0e0bf7ea138d233429d0d4579aafcf345e1f0254feffafdac1c3ddba6d9b3d03e99f8eb336d97c8dbffdfa7fe0354308be4eb2c2ff2fe9fd7f2e1fe981ff3e42b6a3ff0fe9d17fbfca7794daeb2ff2eed5972993e23fee78650cfb85bbbd39befa0043847d8e1ee0a1eef23d0647a56d2a7d15b3e7150347cc8de7cfa82df331bfc031bf40fe7452f90669ac986a1cc356a898098562a8fedfd9a7334c56f73078c2bcf97f5e085f6d99f3305dc210f97ffec6f973ae2f0c8b306f987f307efeff51fc0ba60e0c82170cd5974671b733dc357d678686e68010de8beb0a7b3cc3ffefe8ff1bfdbf91d16bb8e0a54e9b9acdf7ff5cdc362fe6df2e66de708661daea84fde0e9ff0ffa7f06a8b8fea9ff7671a3af65ddeae727cfff86f70dc7bd3a85ab76f6f98cfb4c98d7631a4fcae1293cdd10a80f052e6d5617785b0688e999f759b602da63b5c2573e9aeedbf2c74f9f087cf67c6b409a6f1368db64998485af715d77be691f8c06c29df0f99c760d708170df60c775717761c7eb9d42ef14ecdb96ed06fbde1e7cc3727d757c719e017cd099c69bf3e23b42da0e8b877792d97d3ac353fba6caf19ce581d3e84cc3dd1ac7e19ac65efbcda1dc39d3b2ccadb079a75cbd69bfdea9357d4f3b950a8f9d21e8d3b9cb731f9ce9a961ddb318a49cdfc971c852a986d6381ed73061afa9e8807b4ca5ef7fca8cffbf599e653e95ff68bb297501930a285417c0e2a377b759b408e0f5e4d921c5e9bf53e57aa7762a191705fe2dee58ac5cdff6f36ac3846e9fc07fd586e9ec3e28dff255c6da6fc462f2122578dc7984b71225b858982d3b7bafa950eca0a84101fb27909cd72c7ccdfa71432bb5cbd55d6fef0261c78b7b4cc765f99e60f87fe79c21a6f1f2ec3bf9b666efe24ec16a85e3e2661a6f4af7d5d17d76dc3b5ebfc278d38ee5736262ce49589fd50ac7e9b5a9f1f139eb99909e036d9973670d5ba73de68677ddb1748de54d0a6d6ab6dd6c53e3e3e371efb1d34fce69c3371c576d982eee73b6c6f2dbeeb1950ebbf23bbb0df62d5f656bd686fdf8d356c0b9137656b17ca6e5aab4d7d59ba6ce6261bcdb569802774ad11c64a5fc863b611fb7e12b3c4ba5cedba6add5fbef4fae6fdefd0afb7ccff4749676424e95c3a4bc7adbbdeeb77cb5e519ae4efbd5ee83dd2a5ba76477f54fb6727b2adfb63c95b15037bb53690e8b85710effcd32160bdf71a7f4adcfadef0adf36ef33ddafb44da5c9ee2ccde93f7ed373210dc79d7d846c93cd32ef7f356ce5b0065a8f3acbf45dc7693f5ef7c13ef35ed3d4f9daef7bee8373bc86b163dc49c79d52291f17bb654edff6022c7c0de3dc6963e1bbb13ffae677166b85c566398cdb562bdcab1bb8933be5eaa61c9e65a4ddff5fff15a2f7ff6dd8546db8daed2c9e9a912f235246de22938a20fa7fe4bf451828a2a7089a2267cc3c96e66209c2cab85802cec712f02796e663097818e74f3e66f3101f7a4c4f8b045084047f8a85dd308fbb2196aeefb9479f45d4887c2112e53ffa8c21e2ffe77f87588934dfa6eb3e02ee56fb96fd3855aeda43e8bc5d3bef298cbdd253b433e79ad301d9b4c7f4942c8e5ae5c0e89da5a358b857a377b73f8d8b4be27f3ac0e1deff6fd1f2ff37cbff9fc5807f1bbe61b9ba070fda1eb03d587ba0f620ed818307680fce1e983d78d0d6d6c6d6b6d6a6d696d6e6a00dadedaccdaced015b1b1b1bdb1a9b1a5b1a9b033634b6333633b6076b6d6b6c6b6b6b6a6b696b0ed6d0d6ced6ccd61ea8b5a9b1a9ada9a9a9a5a9395043533b5333537b90d696c696b696a6969696e6200d2ded2ccd2ced818336076c0ed61ca8394873e0c0019a833307660e1ea0b5a1b1a1ada1a9a1a5a1394043433b4333437b70d676c676b676a6769676e6e00cedececccecec81599b199bd99a999a599a99033334b3333333b3772b01b942e69ce96ccca775dc0c962b6b6a6874719fd63485beb98fa06b0a19e2dee3599eda7d2f8ef7f8e0eeac7c1bea1bc6f6bdf8ee7cb74ddbdd76562eee84743ccffd40fe4be73e08dfd62e17db86337c47d37d7097e3fb9b65389e3bb6706eaedbb31380ecffafd9b973694df76a9f8f3b4e1baef2410ec7d559ad709c8f32ef349cad70369607e57896ed0ae13be755beed5ed3d478ee85f01cb3cfb43cc330a75abb4dcbf1679f652bbfd2f74dc371b92af33a7bf73f43f86a53e92c6d38d7f13ec8f968395ed380f095c31c9be573c7d2cf405baef94c68c86f98d336a7e3ba0f76429a8e3be3deebecb4dbb32cedd331baee23380343ab15ee35036a1d67e6edcd79e07850ba3ebe37d7079ddbabc0e7e0781f5f863beea4ef3e9a0e8f4bcbced41ea09d9559ad596c75da6fc35bae616cd9959e3afdb2d55bfe2b2b7bdad8fbae4a79ef7cdc99a507612a9fe529959ee1b16ec71de6bbd28633943b6d993b0dad336d4ba559690dd7f74c4f7b2cdb7f336d85a5526e53a9748fe1ba5fe92c1c774aa59db6ad7096eec0a5522937c1397cc3727cace6636e57b9ca8785ef2270ce3909cebb55c65ee9293d4ba552cea934cda9b47dcb73b6daf7e29883a3c63b172ce0cf588e8ed9d45e73f886e5a07076c71ade7dfade60f3ffd97f6f7870da7cac5af8af8d3636bef0e72c537b4cdf53ce093b1e4772430822a38dd9cd120b0ba4a3b6ec1433c1c5c29e4f39a7938f91e0749530ecaebb3dcbcf67afe99bcf95fa7ffadf18766a1cf9775ab159b21a10784d53e999b300c2a76ac3748153dadaff6ab81a7783a841cc20a820fc408000d10491647ed27954d2c07abb76d6dd663b3b739a39cfc866da068cf6b8eeb68d1b2d5c00f9b7f2ffed57f90f32a3ad0f46a376d46a85a36f61877f0b31fc5b48f7ff504c31ec62703d7fc220c49f3096f0270cecf3278c36fe9cfefb22cd8b15fcf9428e3f5f3c7fba18c39f2e38fcbf0baae7cf166f9e3f5b0079fe6cd1f7fcd982859de74ff95f16d5ffaffebbe211887f57e858e1f6cf9f2a044511a3ffaac00af16f8a288529e4fef913ae7b3485138a2f2856fcf3278a09fffcf9e05f444988511e31fee7cffeef894527b63c7f9e78f1fc59ebf1e7092cfe3cd4f3cf9f87519e3f0f4bfcf3e7a11c7f1e26fff9f30d7f464df43011f3a78931feb4e17f4b7cf9ff1233f8b304b74908e2cf0fff925841c28e04d63f7fba8423be78f87704887f67dda9d4acdf9df5eb9c9ef973a6653b8b9d651ec370862f0cb1887404fdbff4df424476ddbedf2effdfefdf42ebfbc55daeef07684e3332bf98accbf54dd7dd8321dc4ccbb63c28cbe5656861bc8bc5e4ffdb27e0f924bcf1fffc19e2439550eeff39bf614eb751c2d7c9f5dcb305ff0eb6793909833afce4fae6cfc1be0459495f6667c1bc33be61ab158e83669fcfa9fc7c62edb8cf19ec285df711d1999ea71d6bf715ded1e7d39e69d99efb5dd8f9e8ba7b9869bcc23e0dd38ee5fba1400137e31198fcee36954a2f91cdddca23b82950c023bcf178ee6f0cf3462a6facf1460b6fac7b239d11c2ff9ff8d7b67bbb76de356d97f5a96cb57b4d4f6db3b7a974618fe7ba7f2682c7fa07fcb7d6d103a356784a7f8dff1cf59be63c739e915961e8900ffc7f11ff0a9ebd5d3bcf9c6a4e33b23635dbefff0708d2a773cf0a769bc368bc8f906d2b367b73d8ae9d656565667e53aadfd4acec4c0d9ec6d3b3eed7cda86c68dd0159606c93dd740c075a696c997d67e9b25bfeabda7075ce3e9f85662f760276ecf9532ae5f78dcdd6351df7ff6ed1982cb6eed93f730fc359f29efbe03bdb991198c3cc5bec19f1ef2c56da33cc09becf742cdb333d9db37c8cc2b5cf35cbc7bda6e7bf7b1ee3bdaee9baee546be7a3e32cdfffdba061e3ff6bfc3f8dffd6da66f542fc7f38872ac43180f08048ffdf863082c54448a3c333ffef76a96b9314c7831d09ff6f441423d473e7cbcf8aff77b1fcf0438cb4ba88fcbf71491102f4a6b49861fbff56428e0f79376004d9f2ffad8c06bec4ea25b726ffefdacd49f82363810c47ff5facb2d1c6108f1e5b14f8ffa300013c6adf3c294df87fd70f231c2524f1e8c3f6ff4b3fa4481f55348079fe9f8cccbdea83b4dffcff50ffad9a40a99f6c8d6532facec2656576599fc258db2f6b97d9f7b403d2b5de0c19ff1f77410e61daabce3ba754ca6f1ecf3295d3370f21b5f9a41f626cd696a537cc7bf5aee938e76dfb65f9a43da6af9cd75598d7716797b150bdbedea9513ada3b75eed6bb302b63a1ce9e15ecd5bea8534aa579afe0ecd99e15fc9be5ba53eb7e53a55167b772c319f6b3af324dad3bd68669ac2d95da7da6ef2ced07df3de6730d772b4d6379d7c00bef9ab6fb159ea34e5bae617ae6d43a1e42fa7cd65dfa41ae7b56f0b6ca59bfe8ddff9c52299fe541d99e7bb58badb539609b52eb301ef7bfba5f79afdafcef4adf76765ac3762dc3584e66d803b958dc6fbbcfdcd04a63c36cb9c65ee9a9581895beedea346b73aa7cc763b64c58f7ea9dc79d75b6b4cf349e3496a5d2589e65b2bb57ef5e7767dced2c3df3313bb676f99ee9e96cd5e3ce319bd734bfa7bdaee92977cef69dc5f27886add611728fe36ec37e647377d03d0a1c86a775dc39d7f4ed475bfd385e1e9f050e4b6dd9ee73afc067da06e4354d85652ccca5758fad72164e6ac739671936ace141f8866367d596679902bfe9d996ed7ea5a7779636b462b1502e63a1749ce5e39ba3515b969dfc4ad777721ca251dbc9f94c737bc10cc7b2610f8c46a35167dcafb54c9de96b5c7827c781cfb02dd378734df33b390e54994bfb95e693ee39edeaf4eed43a4bed7696cb58a83396a34ea7610cc772f4cfbec672341a8d469d7316bee3f89f7de5e34e58c64237e439652ccca954dac9036df8a652f9b86dd82f38652cccc71b10c235958e46ff9cf69c1d348e6fee373c9de9a9f36f96ebdbe6d236ea9d9572b8cbb75cd86179105bd8b9610f74c6bddbdcd06ad803f94ccbb6dd6d4ea561de6fb8ee73afc0e3de6d190bed351de7acd383f26ec370d2b8c7490d7be04c739b1bf6c098c7596ba7c6d7ec5dd8e1ba479df7dced5e633955e6703d173bf934a6a75d2ee6b67ccff06dcfdd41f1a27279747d737751bab83ea81e5f9d5c746e4f2f9a271795c38346f9e2eaf8f0eaf6fa38cc452fc4cdd1c54979ff7bf6e141fbf6f2f4eeeab8d36a856dab0c5369deebac558679036ec3750d57ef385eb5e1aa7d17669d72b6bea3b1dda9bcdf867ed1fb1a75f6989ede32cc9ddd693baf354d4fe7ce679aaef778ff9be13a5a7853ebc168b7c673d62feaacbb15a679af72dbc4ff1bff3f49c7593bdaefb90fde571beb46c759be4e21704a5be1ee9ac6f64179ee6d8ccfada62958fde0a6e7f3f98ccef4346af7383af73896ab51190b47b1f6f349b5763bb6d27415e60a58ffef94d2554219c68ef54ee5fc8a956f2995e663d2dea9512987f64e8d5a61f9ae61ac6dc3d6b80d36ecd73b351a77b85bb1f2fdd63b853a3b6b9dce32050afcced2d1bbdbcfa7d50ac73d9fd77edb8676b45fe19aeaac61dbeed33e77be394575dde7b0ccf588ebe2ba589ea3bbd235956fee95e5cc38e32e87f8ff4eb9097258cff66f9c9c773afb4c736c61a7e3b8281f5718f711b2358e2e0ee63d10beda70150ecbffdb723c6769bfbf59bed2d35986ab92cdf40cc7ff66d9b6e52bb7650e6de3ac3bb50fc2d52b5d53a13d62397adb31d46b429b7f278fe75ec3149c7ca6a9b44ddbfd3fd9bf1360fc3beb6e6763384ac7597bc2857706d2f40d48c7599b43dfac5638ee8ddb30ef73732ba4e1ac56782ac150f58ee37fb36c68b55ae1b81ed37854b8dbf52815ee56b769d7701bfa45efb95fe9bbe7b38f909edfcebc19f016ffbfddbf6f586fca08837644808bb07473e4a6c4ad76eb724bfe3b9dd2bbdbd1e84c4b675aca79207c3f9fb12c27e5549a773b0b4fbbdfb4c7f4342c7b857bcdcf3899986d85a577e7eb9bf3a4615c2a76169627e564711c0102a74dd77616ae16763e2dec56ec959ef61a26847987e34efbee7ffc96a377511bb64ea37da6f1a221a4312dd75def9abdcab37cf77cc6493f18facd34b7b3b43c38c3d59bd77fbcfb61aff06d77f85e30db7075acdb70156b856799ca3b9fca338cbdebb8b3ee58dea733ddf92cf3eed7aff2fd4240f40f01cbb4cf333d8d654e01c28d77421094bbad591bc2fbefcc7b9af97fe7f3c5bffdd47be7dcb1cfb007886c99b0cf0f6c9af081ec8c615b96353cb0661ffc7f6ca5ab0cfe6d6bbbf16dd8b89ffddb66f63fcb6c829c7275bcd7dd1acf70b5d7309b997f67deff33ff65ebf16c1cfe9d72756cdca9e7a667b9cfdc96d7b0fcffaf61ffdf6995e141989ed7ccf8dcb1b10cdb6bff1f73faaefe65e9b9f39bc65333a336e4dfc9d510617ed3786a1bd492ff5fbd612b9cbda730ff836f7bc15d87e5636f7d6e354dc1cda6ebb83ffb6a6780da719d5c2c47d3c09c354dedd559e6b30336ff5ff6af8321ff71366d9d762ccd67a883aa957307fc9d797c96618e1606ed069ad459d353988e65a79de5b6cce5eaeec28ee79cffe45ed3544ed86734feff6ff399e6b72d5b79bf61f9966799d377dcbf676e6cbb4fe91adbfd7821ed37d7ed556db84a85bb5d5eb7fac1313d9de7a870b7f6ac208ca5ebeb5d94cfcedef06d47632b7da56b2a7d13f6b9f79a6a26e8ffe97bce9a315b62c6e196c338d6ceda66fcdf5966c6afc7653dca0a9d65159c8f6cdacaef2ccde7bf591e939bbbb37e365d2574b6791b269cfad71925eece422ead93b6fdeb6c738ac5f41dc6c91039c56a5a1e84abddcf96afbd2633f37396ec464ddf76af2ffc4be6f6ce588e7b3de563522937f4e3847d8ac686600d6f1ec7b39cfdab616e85679982339ee9e96dd772dc07e9eb3b26fdb857f877ec7da798edfc73f6b0067a1ee6f43dcb3ceef72c5fb90d1336f8e28c3b214cc8d700d11ee4d0067aff4e298511bdd7d406c96ccc400f5df711f06ded0cb03cdccba0d00a13c2756ccbf56df79a1bde328309ff4ea95d08dfc5fd0acf0cde77c673affec9554ed3b7dd35fcff847fc5ccd832bf65dea7b36cc7f4959e6778daab7d6288ff4ee95b6ca5e99ecf3e376ade3dc3720d6b90f2b8dbb195aee2bd627aff4fd66bac610dcb5399dae70e270646c8efb95f0d616cd99bdb346870710c395cf1b4e9e10a21ae305c12282930c9498d65172e8c0a0b50840312062595e2f0cc30b4725e6b3879a20c12265956a28253c6632b4b92cd0c1e407454d9d8714847a9a5c4b26f0ec5153c60ecd030ec1245572183b38a000d7c12c0a9f9a2c8210340ab0303c3ada94401a0d841090a02d5e648cfa1ecd54be8821e27366060f00beb2300a1000828ab5a20428e1c458148b24ce142a144cbd4082dc1351b5166146c8845fb14591220a7c3db224c967c38966558c7d0dc85a6056d544b6a2162ee5cf992b3c7009c2069a41cb314b05181ca026081d6fc1db19b9370a7c28bc0c78c0496d8de3d4f064a930a83eca8c64e205aa2b06281ac098f3eecc8f293278b4d08a1630f054d511c6b35892122aebe58b808947c2b9be128bb224aeb4536c8d4941b515770078b1601350c6c007529b086ec8d1d620350c0e463d3204d961f7dbccc50af0ce0948526604998465e1880ab331561025a98328b5820c0644887cd813367b09c6e48b00d1d50e226438ede0186dc20784551c9d3e3302f954fd6c48e643416a4ceb49192834d0e012577132a6915f982ba2a2177a7d101559330701c6f7b2c2451a0eb8386aa7bf0430924d52a357c04d16b21d5a14a4df50c24b240b0a02177f7faac0e7d98104612a121fc404d9caa0b8801ae2668af222d016c30e005f40eae38c4c87250250b3d3244d0e08651589b3a3839aa55f7d2f5063823f14522dbf821c702885b959c7e6a2c95c569521675404d1823cff284093c396222004260925ce72f86953455794014a9b1e8496a62cb983de8353eb1b5c1011a34292f96200d18511330c36580a515a2884a4f98d87e100ca5715d832aaa40f0412f0264789f086cc0c2e7e70d98d694301d34e2a0beba12859254f1308dbd50208138204a8edb8921aa176d8c03b650d57134c511d795e51cd90793b61061032d29464316f5f103276fcc53a5a8be61f45e98b3c20714bde4001d44a70450b0d0a212c1e68f97bda6323306fe2eed0124cd1a5491a74c010dc3ba3f552aa487e8a3af3760701e40641607888830594c668e1a4df9e1710401c7ab05182d0ff2907411e001ac3b5bca2c522609ab19208dd87042b17c553580e400948d026a508131a386a48082a92b84126b0464b1f161b680a332761070c0a28bf1418e4f1a77c284326b809b31a79787c44455d5b6be28083cbeb00a8e1e483d4abcba8311a469f1114511a4b107565c5989d3c50db0b68310bbcc1c153e48d07564869f6aa0326ee76026d4345498a55ac8810273c30e7c22cd6a0d34032124576135a404194d19e669b95024d0e46f0d5722293ca06a0e1c34809916a16005052375f584928c24645b6bc33317a886812cab20027429d665582a96a9824306cc34ca35d75e576c31a12087a58e5da1e016b66513eea7c661217090221851682a5415b1aa62a0cb865a90e39f28817c5db0ea28b77e4c634545239d10ae16614e842cd52ca15e5f577bf838990aba99635511c8ab70f42477e87ce0b0058f8e4d99237382b418797903d04be46c00ae533480c606bf770e0fc0107b3c42f07585f1e17ba46180aaa849728b94444853e2c7d612d4c83aa7c52769c759024e2812b863638f9134a486f73671274f534902081818163afe8a1d54388264d0d0008603021961552b2022d19265c5c82431898235328944a4e82065c3e05d8619d424501c3e6e1b482c09eda0204165e50089863d6ae8a0b9765860013744e6646d7da991280014c3215d940b17e862e47df9452960c3970490dca16347849756629fa9204fe841392a904c969cc9a2409b44282c165acabe1a46ce04b02749ccc58a384baf24d21a6205d86979408916070c509de04c2d90c4814e14cda8c492055e308f99e3950391e817800b89eab8699a506343166497a11116de60f13a94a34c9a36520a2d812155c5691ea3682a83962d7a5c3a0d86862bbfbc188365721a3048c42a2adb264dba9e7dae535ad6a831dae0555413c62a0029b935606319a47b0cd0508791fac0f3b282d33a610334406b416254fdc80b11245c325260b198fb934ae1319567e5500ca8659cb33cbe0b52203325eb52810c56eaacec261909f36a1313a30bd28a420308ea6ce989a04c9480cca2ebf5451d39480829b0b42a5840b8010887317116c6df1f95625599322919c854cc8c4ce468000c948871ab2d521026857e2c1460c75112293998e696c520703164d4780205012d33ce487368aae4560040e6ac3d7cd84264c433cbd59b560048ae3c1a01852851933372ce54833cbd415ce4886457a7814713110b4cecf10ba31ac3006196af0f891176a84909d1214b01598d102cb044091a0fbb4862baa844118bbe0fe07418d51303dce8ea90e886a1ac3a54741728351046488b34b028b49ad890bd2c0f2228259952e10f0c991d19ee9dfcfb8ad2a88b9e340b2ac590cf89986513e2d41a01d612b9459d816ae08d9d8f41496e60859930e6099a292d7b49ce44bf74bd34af446d18d1312187c9023d1257a21c1e814e6d08e363490d25801c72dcedadc953400016d99409520560903364458f12147c10f1793de0ef95883f3b18c43d12f0fb905895ea43a509ea479e093a877952dc31bc00e60a0811a71c70084260f0e231d5116700295d2acee4595120310d093582db88a71621a4ea10092810d76448a028a0b93474f60357508c285078b30306932d4f1c091e6e40e252a0001e72606c6920b388a326ea4c8d4daa086580401aaa7e301525d123760826ce6ac58f16441afc6807616ff47080471000ae0461aa758328c274272a5d26c0797ab4e4e10305d9a065d68905881a096261464bd5a4137b0ce300a2781c28945644c973d056893c73e270c97205ce932a0a3418988e2c9d4a410ae0e8280010598be14b2a09b2cab0061fb3190ff208c10245428d93f7422b4e2201b640a1dbe022c91ed4171a08005f328e86542944638d4a1945756d1cd69a548faabce85345b402868468abc51cd7446b8d4f035c71634846145a9b55a6373b5ebf3b051c20205220ab8cb800501cc1f0508dd853e14955960f01b8d907261f6628e0726f1eecfc8d083c63066ee9416a95efec9c957a40f340e5600c8ce9ac43956c03dcdf88c01ab6c2539b6fd05a6a90c46ffa8f8fcd71a706eb56064986561afbae01bd43066c1932bf34a7cfc82d97d954fac27f3b69d2901c3868cc78e14245cb231aa58beb83c255f070216e2f44f44c43b40385babd390d707976707c14c01ab0e57180d11b6a932dd5942bf6083c992d6f92f4924500a1b8664870f21dbe6048e420a63701838e3b1da2531b9009d6cc684eb50cb126d5c89208c0024e819a82522d21740065a46ca135731a669d4513103d0154a3a84da00a55790194a18240044ce195a43f1f8395188198e2e2c6243e27abaa4622c43c80e8070010482d1e453410ba12aee1c087dddb3017a5ebb181af0c872c0d2c7ae518a7770799fedfad3449d9200c91299ead4481ae38e81d7143a090611d08bc33118c3c5b38490484e0a78121584c163435a082ed38f92229479e384a885731a9c621229d3f48370464111d4a5044cba12a0ccc4f75d14080585899344d3d7428f1c0978835201eececa647d23a3b0bcb1c0c986c69214561ac14824a54c5a2c2969695342ca053fe204839c4e2d3a2f0c864c80141b6a8918a4142c097ec00081a1d9750e0c811a7b7250efd77658a355d0beca1c347102db7270c105902409537067f10a7308aa4c005951d5a8c12d928e2ea687ae55c65c4c88103effd3ce8cfb49ed1ae9d69696d6951acdc0f18f337ef3dfc2008e99a17caf50d5fb9e12dcf594ea567d9af5be129dfff6f78ea2f2da4b9c02758d7e1862cc1c9555514e786a92a88b05a9e4f8cac08d34068ea8e95ce4818bbe2cd2dfba1d7d483255574643cb051e889f5d5644a931d390eda2879e68e0627158308e5bc6c19a271c4c92b9196b91e2bdc9048e147d5844c050a7a6a416a30b7f6ee501051c604a7c1079fc12a82373c98e81c18e8d3289104348e95172a9af2380c040f4600f08f20c92024685033ef4c811006e42d5b29719284f169a3a485906256a1a6264223527a383d2de1aa974885c074b966962bdc1626ecf0692d87281007438a560820b449682e1e18fbec78d9818918f992454a4b84247648d6a01d5a81b744e225c6d508ce0b04805ccc4a35380c0d2e30abd900228a5d89b325079bbb0608b91002b135b87b4c8e190ac0c084723452c5cb8dcc59a5023878a8eb68b03ac0841e42033c69ea0228c2c316266889dcd878236149408b1e1b844ab468fb61884ca02495a2d47030ad60a60a0a2c1694bc324fc93b8adc854761ca1b35d6e120a7e681a114d9db906771cf0117d0e8c0aa21193123d1f4c063a14cd643a64004d31c4a6b0ea11ec0a071610f8ac388da829c218f9f08c4364e0edd7052c34a905c5619bd2cbc197e84a6d0084266a6018999615edbcb0447ec1173218a161e46bc98ad99308986d33251a3d11da909e7e7802c069a45159ece4384630ee0a839d1004e1bc12d1349196c49d195a89799812d8814961393178a042874e04995c2bf24fdc917027670c459da60a1660716276838d40eff70a8f24497b6041de1d4e581990518754d51a4c047a43615f648196a9935f85148abf244a8765a44e17aaa7022c9130acd46045481a915efca1231f030670f5d080c0bd8a4d08930a6064f111e4e1885a802396c89ab3b26d277de4b991930fe34d8352d8738322e92f416838d9e4760d1a604d248b0d9f0b283cf91ce12899be9f15afcda025167268dc90104e0a6a403d40c83aacb2e40fcc82ca89011a2831ac33f6821aa88c1e38590888d3b3d635184808a06c59dd8a1405252845b181c2a923072fa983050f7322848d2f7801221b027c4aa10383cac623ca54f690e8aa592534f1c5ede8f093df830e08033700d0533d1699193a6645fe243109e4a756a5cca509c902f547b2ca9a638b880bb4246c6dd893bd2363dda2090e88291a01b06b33060a86d822e7350a673849644dc5111e12318cb99c4856cc7890b7c2061c88062421b34440418e2d3d373e35965f8220b952d6fa09a8cfae8bccc2f22d9b5458ab1e624f561cb79f0b894353826281801e90e57d3a3b43562c6aeba4c914aa4a407f906c17208e1b6ac49db406d547c801a68c631811a6c9c127ca6c86086713175e5ebb0490e78dc1246d0c09066cd60d1d88650f1ddc16221257c62414cd039782027c94444ce121f97236e254a1f2855aa54a9929830129616c0cefea237956a5bfdca1e3860f34b73302d7bd0b6c6d606c353b34e85d5d0e234b2bf118164b79dad69c29b8c4a93d59d90c642ab772c13fecdb495db325f88340e216d2dfba10efa6b6a68746b6a6819967424fea3668566747cfee31ed371df3af97feb2f2b2c7221545851615e56b8fbe711dc387f4a6b29bf6d183b18c314766898a1671afade1c9f7f340759fb4d2c0e739323b417c750b936b4b3ecd496ef7aa760c71d52e16e77d3f4de0333350e4bb8b3be07666a1c08fbdcf7e83f2b1c7d60a6c6e1cdcd8ec684703ded1aea6ed803a3337dbdd2d3e83ded807e597b4d0d2dc35b2c47eb0904fcff14283c24243ed95202958c85a3fd8607e51a1b8d9ea139d39c66647fb475f9f6453a18288dad72dd36f96f9910f07c52f97fec2f2370b06508d2684d5379bd84a652887b3ed11c64df6c1bb6c6d55dcf8ed61d5b085fadf04ddf6e85f0f50dcd41d6ad10be42e0d07b4d61ee81f46d856d43586ff960d2f2010376edb4c2cfb63cef743aed0577b75aadf0d3da07bbf549e3d9bd836d08ebf54e8dda866d4ca7b0251be2ff0f3e84353d6fd7ce68dd6f393aed58bb6cda07976b63966a1c966a6ecb34204b777ecad241bc4443f17c513407d9e5190184f09e191a9a83e8f20c69e8c7fb2342943ef28a7ce31b23b48f1cd2c64bcb16f951ed92550bd526d18c6c5fd461f442bac9e492b1d8b67fe53adffd16835142fb48084b1f756cbf6ddba5a53457e97edbb64597ae6d91addbb6c5e308b7755ba46bb5d7b6c716f96efbe42cbac76358136f8dae6bbcd11adbd66d6a19b92dd32fb546b7d8db16d06d5b3799c1dd725bf76874db06dcb63dba2d86f6aa6d8b6e52cc521109d55ab56ddbba0fdcaa64b10dd2baedd16d5bb7186d5d6313539aebd4be25db25b0628416e9bac6b36293ebb662516b2d09e399924251cf7de3bb485a6331ccb8e4b6c55f0aa0e5d3befbeffb7efbadb1755b436dd265d0b6ee92eb16dbd6415bd6265b27d775dd635cbbc0758d6e6b56742ab3920ada27292d9747bbe466b5c6b6d8beabe7f2a6d6f8ae7c7c2e6d69149f29a6fd0964dc627b6c8dc8f6a92df670dde4b3d8b6155bd73572d78929ac5d6a5ba499f1eccbac759b8e4917d9b6cfd675eb148f2d936b2c0eb64d37dbb645b29649e9b64964eb4e70bd5c2fb7abf8c56fa3daa3ebb64fc6b76874b35cd76d8fad91da3281b5ca25b75d6aa1d8b6dc3aa492c96dfd924e48b7c5d026dbb6e8b6c696aeed721fb85caed245ba4b6db1755bb77db65daed2451adbe252b16dd9da621bd632b54e6ddb4268bddca622b24d1a5bb76d9f6d7bb472a95aa3db2e19db07aeb22dba5e6db1e8ba46d7d83e70dd56cb6d6a99daa4d16ddbf6d976b94dc8626b4c1adbb665e32d1683a45bb1c1525b6c995a2356cbc4f4547ed8f26a11185bd73dbac8debe55664abab6755bb76d5bb2473ef63d9c68117530f4bc0311416d3a30fd10da00f37992618f9eef63d2793e2209743e98cdef11d912648f49e761200288480f4e9b6047c44b111dcc65f6800856d90318aa09db9e2730366653bbb6a79db426ad34c01aa7f44e69242f32e912774c4f127a8c9b31683064ecd097943b7df12ba91f3215e2a54b389e1b55fc171f44188c5f927d74cccf72cc80b123ff2fb61c43b4fac177f63a368dfb5d4dd7f51c9c197f334be36edc26a4eb9af6a3e7c46503eaffffc97e4dcfc065836703b0e7377cc3dc6e60e4853dee4b060a30f852d3d43416fedd436e1fd7eaaeb90ef0dcb19338e1a9098ad8d99a1be70d9e3869c2840013cb051cdeae9d595baeffec8c510decf03267c9433847aec86880ac3a39a8f4d922c0ad48e78d83ab2040666081a615bfd4f803522642ae928db122122f4c3f138a8977c8c08a3210e52e8818a1840d0bae2236318ccff183b0488caa9821d0fb231211204e419c8a107ebc47fe3080e34cac3516799baf436f920d2bc624158f329ad43864650210ad456e035a06edec941c917b09b96d22fd2831e7881239373fae95257312e003d167ca0e3bee0f3e43aad8e1f165f67ce3a2e861e5411109265f9e342e350d5ff3c30d884224635cbb1792145d256a42f96c71cfaed8f1c2d7c7409735545cab466404a88df4100222b19584e44798b43a0f662438d2eec1434108171f43a27d80b46502604005c4033c864cd1d1269a51e33bc0cc8e101166b4395a7c6891e3c38f03c2ac6809a9f4f9216278078bb0440b22115321092a260259dc2d5c91ab111f021c22b4606d17d0690dc55a581a83e2f629c79d3c96642b1087ff44634274418213ec12e05f8e8a32c91a5a4d7a9d7f2e51f0f4b619669c2cf92f52685ae4eccd98480bfe5f08c95ba0e04a80e6dcff750105da8e346100b1facf67e3106d0d894120b060dff685c71a1267905553febd50487850f84807d38affa293c2060e48f473aa2448d01b246fa535402648aa3425812b571cf864f5b145957cccd8928689d67b918650a5c32d7f92718ea556037e2a4d27b9a89248c5230065a7521d1330301fb29dc3cd9b4a4e3f20de310c1a4038a6a944e543021f326d489c481c4309929a280932f4b3332b5b28e5899144f4c84b545520154a630c90c3026063c90f3689940878444094cd8bdb848e23946c24c9c34508963f586c00a174e781440886153be4a28392871d782c66e0c8a220c30c4a12ce6ca9244d0363c6b7825202177ed1256b090b324a506aaa52c5c912269510b1dc930e29e2f308003c621c50609db4809126540e4f513a8de24959ea245ac14cf821590162d210000285acd192e0cc8ebe492c0eb823b740cb8d9a2c769302579879934701321220c84dd22ba0ed2f1203b5026ab84d523b94d6d4e38a41e29fb4495b435ab051c3c30b8f4563933ececd024d8214cf32609200ddd831886ea3eb91c725094d9857c7da5d240d6c95a8244949e1266518c2ca9a0d959c24ed7892a60ec78442be6b25a324128380340911189281469224388860a20d2749ce54592489821b0c20c2ce3208a0e2ff9f1221496334da7c39b9714292dbff3f253f92965d34e038040d84e3f4ff4fc94ea4469508a548eab2c54edeff3fa53791ec34c152ba2a23001904feff29a589040690169b6204adb93cff1455dc2a764134d24034da1d19f016c908c59b047169c909a9800e0a239133e395d39126c71888463b26ab262e2c15884c1d8c1e8a5ecafbe894a4906c3b36152160352da1414c6241a402818289ad384022651ec4a51785161c44a7bbd90591090bca4542582a5bd2f1a24a99c5238571066214338a59245b9625b19695522c3548b621dd8a5145b7e411c4e2dd59d9b1e9988858541eb58c63cab3626b74328e3551586a80ec70d43a361d019da89ca898b098ac901d8a93521cb58a51522c99414c0068bcf268822ee3d329eab834b645b2629c51cfe9eae8223720b790784b5550ed51595c323a158b45b7882c268b4c4d5cc6223203522a4aaf69893c22db22d298662c33b6c9ace2160aa6afa526885089289647e356522e85314f8a66947f254a81e6c849a0cd1933d93f3e1c37e6e0244460a3e74386ca16bc5149e4070f797895d6bc51e0cb86590f1e135e803c71d894f172058a9232a7821dd9db865d337200919d05de1c50e5c4a108101e38e4e155a0f0e57565b545cb09284f0e4d44bbb8e8f90b2a0f1ec12b62254a8e1a81f87065b58c53860c182f57ac48b15103465444870d7978756cd69051c3a5075d1d3a6cca1ce0a54b92233258a87000519c05bc74d952c00ac41ed7cd2d9f10fdf193e7cc015ab2502100078d1e474580f8b0a16e0ec2536cf9c466cd99203f70ace8b1080b7514e620fc1f3f6cd62040464b162a5208c8516345080b7511203cd9d2cec4a496c6aff4c70f1e04ce9039404b162904e4c05183c60a3ed110202494392545b2bb10057587ebc60c191c369815a121c3b0d00953a5222577d25224f78164132313970057498be69e19cd5aa792acd8a0c8adbe5cae760ba955cc6ab18c57ad15d3949454f135463941bd4f5a4e594aaea62513327944bac7e3d252b1fde38aa6046810914c48262354720dc954ec72ea4381d74c861d9b926d46a7a8d6e8748c1a098b4fc5a5518e0a01108f502e92c938f6d4d5f604b14983536c1c8342e1a66d2d6530b647b7308811ece4962a5c6393d14ecc1122a0140cdaa068979ecbaf09285ca356910cdb32df961a2c80783c7ee9ada88a826351ac80c2056216d306272a27aa1114aab049bba911a2dbcd54419ae34532159f96028d3066a0481aa18e5d6d940314818a303180b322f9880794ab5c9ab0443e305ee81fa2a4985a0a6ba2d0a4e008c2c800f9208501442aa46062c3ea355bf134b58b31065199a5fe50f18416d56ae02a424066ada168423e383625a18a6c75158a5d4d141a213621eb9ef892745b73149a98e89cf862370310af8c636b4dc7e7d4d3b14939d7149104b12949e7e5270371a9f82eb5470cc7a6250847066f70ca2cd38224ddb10999f524c70466c463baa2e252a065c520d9e0c29e02144d4927d2c19303b63a3da49311a9b5f42cae31391917f00948266493b16ce982b16d42bbb455642e59993125a7c5077310b0924d564c6c28e2f09469c930239811ecc804910194516ea9c192171398912beaacd89502d159d616a94532637189445304005de819ca93365fa240617224c60913857620b54fa5224078e0a021039f9e9d05ba679b8330050910702399032a1d221448c25b82a6561672889a344a92609893f0ecaa72521ec76cc9e26489922346880c0992216c4199f387007d7c95242df2f370c8909728bdcc6143a6be4168422ec171838d698e1c02963c1fac5d51299b9248aead2b5640f4380fcf421d85b967da9998d412eac938400d182ea4f4a87181f284c9890d1ad8d6b0a88c09b451a4e12dc21a13f228a54596028aec0040060921030c60230fef0dc202a73652f101f791111137e40a320672f72ce969e9b8715c384c0b38bd711370d9b85b5c2945286ea011b0056bbf925d4b5c4f59ee955bd5522da796a4dc65fb1aa15ce55293cb944cba48e4926b6c8b6d7bfca6d75a7281fdcf728d2deb313d95e7ec92ebfdff7ffe5c84c7f49fe2975b790fd3566ad4508ecd788437ee746e5d2db75e31eee6c6cfc2f8537ba1ed2a36fcb783ad209493b26d2a0c8b63b87d00cc08c3170beb57da0ef3cbdace7b86af8456eca09d9de5ab33ce2eb13898f1377ecff0d519cff41f5cc765867f4b7c8ea2760ead593417b28368a78ca30c5bc212754887aed264b0bf4c2bf541b9c1b9f1d055b506e6840c358a820204e705029013c5c6c28c0dc4a34746aaaacc859c3942ea2e6e5c7ce8e12cd1e231f0a5a098c4c189ac2d6aa2d01963b49374c386112104b79fb2a8aab649c53c3e989c01bcb55879450624405a4447098f42735ba1d80be0576b88ec0afdc022f1100a042d12d160fe09d574bcb28130df9e91fd7bad40fce2d3847f3cfe8f6cf3ff66de85200002bfc468cf7f8f1d881f0537e1db1643fe17bcff4541ff4dc726ab23d7ecdc9e585abd315dbdfbb5ac86abd365951eb1350761fc79cb7f721ca5ef6515102a27e3d2106b0ef818da072997adcf7b96a385720cd7d1fab6a357baa61a8d46a3b1dd11e2038926b1b1a6b03013dc44d3581309ce9f7c8c93e09c7337aab17ffea46a5a4e299aeaf3fcd9c49fbc496a5f23302344f86f79ec584e1d995af1cf6db95b9f721b808ea792c882685b4a0dc1c253bb7fbb24655c2edf2c974896cb20cb25e172697d311ec6b9cc6d0886355cf3e5f2c2720961b9645b2ec5a4d2a96cb5c57804371e16c18dcff25ff70be1743a3fdcf6712e6c69efff117ff9f6d9b573aefb7dc3d8b2fab64f14c257f783197596f160bc06642d205f5f5d853ab968853abe2807e81d35ebd7ca4e336797341ee18ddb770d63b92c305be0c7df7808b30fd4acdf8a5f42ddf87fb1b0a82d3ba9593fe6b4c768b7955a76cdcecf1465a23e21fe7fcfd677b7adb00d1966ff6d8dff96c67f3b43467be8ffc1197fe3759d9d32283493974a4976edbc66e7b2fb4a9d974a1a774dfbc1ff6d8cf6c57febc2f8c0d840c67fdb8245bb42c57f9be2bf45f1df22feb727fedbc30fcb1653a7191695263c427125f60af79ccdd2232ade2931106a0d40a65932c4451ceef4aa74be0638400597324b2fe8d6f07d2131854ea3ac0b09ac9d598d57a472d0c10e31128fa8dc9488a081a818c3cad4004421b3ec81d78cc59fb70e40e62d6f9a51a45a33cc640572233209049989070a19efa837f64ca0c232092faee342c96fc3da91bd2714ff0230498ede9352df2a7ca4e28e230055ab859fa2293878241b2cfaa240df0c0611aadaf2c440dc856e3484f88362c2a4257e21c929d4e7869480a59fbd9a49c4cfca96d807abb6402d948ae3203d3536c60d5559a0c83db0f7f7c6a64d8b2d42c25ae2d22f411b3350426812a40130f2534904a2ad366e2826c8860c54fa4387dea041a36535c1ec8f9aa58ca12e4087194cdc8a9058a651c4a20133421c18b4674f84be497867b8487cb925de0eb89a14db485a9c7e6e2b337f10407023accf16f74f52005eba18483d31cc29e664c93bf3a3c59449250b2fba186cf931dab87162c9a3384b78badcd3555f1fae36f59c4a59a48946298380c49162926761c2873d3e6040888a605e9830ecba7381c903e0da282ab38400790aa0c6951fb7179ffd810448728f5d89384ce44c714d7ae0c311942b51905a4678481d9af2d2610684d80cbb0e59471c59c11ac0fac2223c46614660d2b347ef00445d2ff4644de508fca2c50382d61d1d364516dc001af1a59748bde1c0230656628abcf07cc56190f5a4018bbd88cc8ba596b03f8727f2f4513535212386419b958e247ea507d52eee4dc20864d30709111433ad31c306b06b594ae02860b96874f7274bcc08104d0071a162b1668011471147ae54601380d5a106107803955222b55db002e9288149a197430b68c9e551d180c69c0335b0fd0e8d4a809a5545402e8c0809d450d2f0b210a75203782f9b06d49e3ce8c8618a206501431f30945a80e6988e3a8850902d4b71288cd112a92a16c6adb10a872c18cca87ae17364c09225db5a0904d6ce962102f7110509e6db921143dae664ee62c84c5a58960df7cb8a090222d9061968123d10c35701c90fbbe51049d41889349c0fb01c655d512202575a9926c21176311ab0813a418524735add100221879908103448784bf32e71e922f56457b664889924b94a1deb9440dc838bcfd489db010a0088f42862b7270fe9e16a0b2e0d88462d5c2027784602d5563aa9126a580b22feaa066ca8b90c08d330a40b801753989821b93f78e17a000c1d300757043cc5fa145db951d7a398f941c58018a94266986f1848139e57be0c29f16a71bdea26a4051ae0830f4733fefec602e10882f5f42186d021942751232c082120741f4ef95101e182a6204156de001a5420b8117f15fbc822a9c042f850c00e4409288048048bcda08c32201dce5885157e51524700ada9390d8acc304135044f8b32dfa28eaeea0b4c1ec011701601261d1114009b9dd0ccfafb63c80c9e934faca2469582310ef0a8f8bc380c799321484f7e23dc5bb321f8c21d3ab1a30487cf76d1c7a00748a8a1559cc4870a01442c5820999dac257b142a3694f008935f0013c090608388ab9782374957e6b852b5d05182414a0a223f0d68197993470f4a13190648f056e4057a93589577e784ed0542025aaed445fbeb8e86a59314b43095a65065072c6263c34e8ad45605148312e83180892cb72c7f0aa0c25351a5c09a0cf708ac98ca2c8015350691ac2db382771a99995211e761b92647c4201c5b87b8766c48c2620005c4aa80d18899a4b0e2d0a789e19ef104948b315d110635dda51e2bcd32779b8ee4811c85529fa0964b002ec6ba0fb1081146d94093fa92c8567cccda7c18548317c8118e16711c963e293c1a768968139216512503580102c0609705120d3c70c6a408d687d3191819162e57f319183a16bd40a1c889110f2a3690a124e5054924ae919b1f621baaf07113859c7551aa7f0871600f471d2f30e4207a2859b9a214c62a8b461d257c2a11615ed0ea22a6d0d2f08c88c38750151f7754dcaabafe7859c93209478740aa0c61aa0a8d19da01012b47d919942a030178d2f06cd890404ed2d4920460feceb24f8a983f52895d6dce7cd9f48f341d825ca47093ecd2534665304b4c419518267c427ed8391eda256a34868a372007e4051c20abba01d060c3448baf568636261eb0f12a7cfea16954ed8a5962b6209a0171c843c198227655766202544076a8b95aa149fc2a56616212069192d7c49c2098941b8c02e410443254bfb4d0f24b5639aad011a5a2ce19b7094d6baada7a3208043258b3e9834c13942646e4e5a3c3d016130d6c38551112a2c50d26de969169e20138cf850a2f28496a4254abab0212884724142768ebb5c79922cf80c8d2c25e1e497f3e1220dae064de7290e16e8b899703b2ba8611ad047cea0ef032d4c78a29254c8c30ca2a4f565441b6f92343d0924a0d35086be831328284104207835b16ae3e2b2d39fa0042ce990920cd0d140f88b122a0c919b8bc061e188710c2a1d306204b31353c7fd84d1dc5290048d1b5727d5d2e821b8fb0b0f13df8c26065ce8f212daed218984006d20176c80a5072c0083e801490ba914580b632099470e083018066aab0c876510921a686530a38c5d8073c4f872018ba1273b8a68ca0a6b506461f2c65823332a65c3422e898010939731e051ac3cce4058867d2892393e897288771b052d42dc1ca70e20c2d50cb09351d2a498d68dfb49822ecb1284c43990f41aa345066da4105be1280699104915d1815435316e6fc70400fab81b68d050da62c0c3844d15425c03c4d1d4a23633b8234c3d4e3c4e18e9900d8af3f9caec3b19ec3268d9e1a4e2a0cf0b25664b9191168832a490444c12e8d5ebc51c94fe0cc68707a57507a0f951a0c417bfb645487c8c1b183f478ba344d4035b4789e27354f44582429a0d2d1c316c7025520ac3871fc3c90ed60f15585389608e1c5a2273111ef490c3c6dfe30498308c6192d307f239c588882e70ccf4d8e84d62054d51f8b485c16f070c1c39149c5009e8c91b3fc1ac08f921c9d1b9d8a494008bd14f56c7504d8263d9fc826b829937ae9717450d540720c011d7136fc4575d042d3636cb47ce1664392502a71af76f2c44656101c5c505e0e28011be444ef4a090b8736fc52580916e08150d78b1849209941e85157515b2eaa010581053745bec8be943909bbe1882b8b893f4b722cda9cf1519355f544c58b55241e830083b0cd0193228213268221ba945f1e435aa24022d1a651027be1418a571760253f5114361aa831770ca1c380caa4ab1769ac14b0c6a979235093297bb4889924e506ce231b4a374136211820a8ec588bbdbeba78382c846d424e96e8e84310e38995d5abce2005b2812846a1b8c1146f224d5558f12e2a43c856b0400c2022d8bc67bce4b8c1ebb3a71a10ccc0040004fc045a82e5242b27ce465c13cc32435cf2ca5796292e8ef4ac39a955f9832edd6bd44ec7d78e0ed42d7a321c52fec003a4eb31c245d61cd59ed914c24434144143430c2309a1628bbb158521f361c68c0f09ee9c7e80de31354762d501a0183152a22b0e873caf2c3d1a38c04d98f44701216392647c39e44135a590c28fbfb3154b4e6c30a3d5a049bd36000884c202cc5a21b444055ee27c80d33ab137f7a7c89a2e7418a604d11235085285b6846d902024fda804ee0ba31a302cbc8cf8a287f80a3d05beaa02885012496e35bd2afd79375454f49b8199d48f095554fef858f10484501b24a64f115c959a65881523dabc0b1363b4b021146b9b346d9971e3684a9a52d215d20507eaa8e121b47ac68dd90001672a830cce87aa3152202dcda8719160a230af888c251fc23635a45c360c279a488a0a08d224af8d172a57ad55983709684961185938643f51c5125b29b5c1151d78b821169801a2090b53c35f5773c333cc81207e87284062f2456d83f20a2fd1e9628194ad44429c4d0721f2b84921d12043c8de22ab0f05c8c0b3716867d6b5c0863934570821ca7165cec20933c3405777f2043245117dc946018954ea10e96beaeacfa1e794051fe28fa140954894d979cd308215a2014101cae05c7042f3e882132c6c0a433f5b3cecf182a708d60819d386291a6a4ebd1d50b42afdc1fb9222c635cf175d06ab401b0e71f898fdfcb1c5f1a9947564526880141a254e12e9ede50052a507d5520632691d385f5d3ed859382b474e5ea31cd85d8926763deac418fc98cbe140d690eb910f2c45a5a04ef67d4463404185b8a1ad8ad66da7013e639e0098014d7ba98964219e88e97348109038044478475a11f4d005e0c72a04d08407122d817f805151ba3be2d1d30008839a006a14d2e2a3e2458355e0825d88052a28576fa0abb2a695476b90d49e872fd52a4f3d194a5e68a83a41a7055a87841a7e23925d84d0556a8936248035756571ee269c11cb431023bbb522add967899d8c276ba0961c0a893364550421c80a8fe026438ed2004a7fd838b00462816f0c201e5323536e3ad034e004868b2cce00084d321418800559963c7846b0b18a014447190423507fd836989982e527412a69228e83a414b51ea4a92323275b9d8b8edfd207b2202aa880c1a26c3ec9e17655b5c55602ecd075d44a9382642c319322a48364d675f6e3911a40d71670b8822e194a186599c98b2e2a61848fa0061f71ae8a101a433544c28946087055595048624a4a10179949561a6a3469e5688f8c193b5ed0b2a8411b4eb03d9c1c9071e5c80d00565a02248f6a0714e869f200674cc58dec1488410d90857d6900d00c65c965eda98157a465211d342dd1889f0b790120a093c3324387cc90340608ace8b94960926208db941b3e6d88625af20e70925449cb8f29d12f03e4450f7780dd4cc2d91f41f2a29405336fbc1aa011190174b9f280f44f0faa3b2ab68310861870234443060ee435f5be89310a234546a13390e8040211c28aca9a14752888a03c7cec84b153e194a8c88e0a015bc155a11382a2fcc056e1200a63e425c208cb141895ef4b890e850abffcb0a205644b072ccf087b6a00105355e32121a8b26056818c8e4975e21050c5a374f0408a65528110055e345614985c4a111b917e6c4d88904605de924b84560d03c6ac1c39aad2508aa02607ca6cd20f256f4395855b62d1c40da6de68f080e2a635e10db1662b501337855e089448f067ac511a40924c58ed1db223c52222a9812e2e3922b0d881c0b28e22ab2914024d7ae187c79233b6260b7001e015038ba05d06bd7ab151244a7c6165076b86b4084402350ef4466d0d4457a93a2709748829d18072c18a316b948a6274c13d29e24288530e0f1222cf3e14f608afaa32aa3cb04b50fc83e1ce4c9504eae490cac214a20cb60bc895fbedd900aa0eaeab51d64fce143f1d1c0c982486c7045cf1ea5108414e40e0dd992a33490b569cc6668aecaad006134a3f516ecefc0c191033c7ebc98c2789e0c42159180405b161c76a034b86112f617808a654b8b35c25a943544f1561a01b2087cb8635049cc802a9a8c65760149358873217f4042053259db0f8c96ad6d72c4f1e302112ba887b60a44c17d5568d2e4e07ca3cd58c59d5ca5869f3f35a29d17000632d6b8281a8c1b181d44ad6963c4dc0a819fab94300a21c9c266a1051f1c8d290c6a0cc200b869e4d0a8172c15bb867292683550b0d96e6519d3cb72fad0fad95a50c230e38245261510e2c295a5595008f8c727e6c3d501c43409d648179f15401b016642bea246de9ea8fcb93342d498730208a24a2128916b38c39652678158f047516949d403bd3c681d6930801c4e5dc153e2cbcf4607425e344c19d8d2475ab8897360b54fad0ac8bb0070e9f433b8ed5561a254b1f55559031952682ba98e1120a1c425054cb10425488d962c020173ab8ec644cd51950c5af87020a94b1710749162b2345b26f74e0d87292cd5aedab2b66a4b85038ba13a7a46e030e065cc2f29079c0f5803c238007ca2533b6080380428313e6ca9905ce9d326e2de0948832110c3357959261a6891f215321cb49591916ac0952a82bf1a6f0ec2124664007a30c4e26ce90b8e22296809911595d2e9884b86384c71b3fa9495aa01e44aa60410143520eb90c07ab78f98de963e351bdc46042d09932615c0e4dd5b20b2a7ce30921c3185d0070a0ab7f756591608168491901626946884a2438587e4474298a52e5c14c9d120f1a1c95e19962c08f9f308ae4e8863c09d1cde59851c0971d22b311cb15fa2228d0490e1a6125cbc49d0341a41bfe1c1c0aa17263c84c0eaaf8cd839f3b292c8c28fd611297e00a7df5cef8e845580280a34a5e4c3618c0d2b4b21800cc92348190174a3b801c0a7a50886a8f8b175467d4c47080266585865024b0978ad57a677e4b862daa3347233233482b4b05aa004c983d41f5e5484ed1aaf356c10a0cde99f4a549f00e74880d3a2813965b50071cc63e882c92d2de49b876f82d118749049e366417287e3c41c327ecabfe9c0d2162a6cea2c01aab04b420fecb150ba65019f2c1cc92237856746881f85c472484fa1c9079a243243e323af26f157805511c8801044950d15bc2a1f7bf3c44a6031b13176848ba31c1784ff8e72a004e232c33857dc8a6f818928551e1183d43a455ba88559862e6ffa5423cc0a69505c8119abe072086fc7fd754cc0131208e7869620023f82a858b45402c74519b91185059e386811511295e29fc5edcf0bac212b741de8a8b6de8206249416263c8f958916d3e3f0507d765ee523470614390579b1f83e4942816ca0134e1b192f46952380344ea84c5ff14962a559666ab295d8cff5f340ebd484601db3b33e43febadc383213318a8f306f1a9cef43c00280eb30493ff7741a0b22f2914662ffeb3e608faa1b4a20d34e1a99c2cba82564c33e0ff95c1602cccbda1e35fab30ce704e102afcbf8acc2db3c74223c47f11b139de2d90e37f4bcb0f1c3e87f4feaba07415569931e1971cfc487144f8df0273fdc333f36f95b681859c21ff4b31866c7a109f2b909182b47fab2d63bc6efc4b9901f933e1bbb47414f9bfa21b14f42f3524cabf4b4dffbf8ab3e27f4aaacd3f16e0ffd48bffaf099ff54ff5ffffffffffffffefffffffffffffff4b35b19a21c69ae8858903a40b692b7a10b9ca60a76c51853886d040611ba045d20581ae067c101ce8a066d0e18f251629a29c25a420502d0dcae105d8e07d6cc13a13505667e61cdfd408cb83c60097dedd0f3b18b84ae4d1c19032c5aa9291690cbb6efa528d141a1aa2a20c45c978796d2132e6cb0ada85a8490e370c38ba82244920026a0bb612e85638842ffc6491d8788f5bc2082efdf2c4c7a62a35ceb8300434aa417251a5854704240dbf442418d83086451ca1a02d06269ceab05aa068f5715225898e0c7cde076a2c7002287b875d6387e305579527550fcea4f8904a0d51d3e6a93208419f2c2d17875d95b05cd53ddc062371629d3caf8e270a787103456388d820192f424c815406d071419751e02ce9e00d6112254a32598230885d30800c170b13ce0470436f0d96f70ccd00367d5c6b7855139346a0a1704015e144354e0c411c1f374809395e9888597679e0f81459a9e8a890b3036588813c5f43aea40421aaa0b504b39a92627264c3d418a8c004768c612d58a181a6012649ae6055913a1e10e9ca8c10f1d91ba000f4622f3e1a5e108e4042df5c22d418f23c6262ea6eb0ca42a292bea411054330b0246bb0b81b01826c4840c29403395757b23629bcc49228e49c1c5043ceafe9a233942b223507891e02847e1856784405ee2e2000e8ea06d491494ac26ce8f185c851cf005c8474dd5278119605143a447486ae0799eb51aa2a030ba841d41b5a830935d11246b02bf7c9dd57153767648c754db8f261898c4b4c073d7f46e8b414720476e3cf1999c2e503586313c83c65ef2c83746c48e0525a150ec0a6e7e8860209304085c301541f282eab030e48a09645b69876a87242811f092c6b40f8c10695c1a650c25ad27d884cab1c4020c5d252cc55cfa401aad0d881b1656b8ed06ca121adae4384a51f6f6e121b2cc100a901c0488f93386410a040ca5df851357f8579a488c39cbb2b89705d9508145a67944cb96256164524010fc31f1eac34df2ec9367b875df2982b87892d969405a80ac930fe751d19a3f647c48656041e0b5a61850e40fcf3c4284e44154260ac0470e7eda0e307d646980116b6cea64092ea624245430a635740a240408850e28e3420a9ca92f1082d4f1e28445420608200b5313c0f5f861a49e011e7070c3f5cbaa65210c288a6187508d4051098356723b4b1b31841d6b01245819f0c115491654a972b110ac9a9f82a0331428b8e861f02a44ffa5335802353267ca4d1bb7278c2801d6ba53038840bac102f217ef184ce11be176f890ca908f2ba27e445604207c75d15100f0a56b339955c72d622861901dac07082647495862b04148820886c04981586003c152240a7491797166afcdae608fee1e1a80d9c49383448edb8278498ba085476f8009f162246c0b9725beadd5b643d914418f06341a32c195dcaaa23381a58d1e1b9566d1d5024c4909482422dea3840bb32c6af6dd9dae218594559220847a54abdca08145016c7be445c20dc34ad9ca824a139878903508541ce659622a302a22ab9c896a112a98c50a21056612b1479015049e67b50e4412441ce455b05242903d456296e49b2c9cc083e4f29cb3c25770ef51112a36ee9c8c54e4d0ca5ca088e0502edb8b0d6a140671df25ce86c390d5a20e386003aa92b3a2ecc7c210c6fa03386b6c8d5a951e209d271e775f05531b7000666003101af59240bd50403feb4001bb0383298a20737b950f5a11708cc9be283030474a24845504631a30adc984355c4814a8412006195e64e0106ae94518bca42f3e484a0a5295c27e00a471218e0eebd5f77510e146d38c006481a323c002072532de07c85e46c43712a2a3d8a500823812c3341554101dc60e04d5ca9911d9cc4b92f134d15cd2c8cc0ea0e2528d2e3b441c3d413351c8ca8cc59736228d0232bd2ca0e2c1f611ad9cda8151d00893472c1740482d7170754a20601d0e9032cdc61699e2c4cb5713d1889807cf53a782f7c9c788187750c8b13e9b80512f69a0cbce401f4f3421660228e8c2907a21430a942c7917b406a0c9b1a49ac101a24a09081940e4806d7d560b1d68b95e8e083a316c28b94ac4f17df0a3c3f261230aca20953a5aced0108a93e3429786b8a34b0e7440729115420a063c580841045525c4832278f59d78c3e84da7019b1a1a66ce2b97143832430445c828c4b400f5028608446cbc35a081e5652cba255b4cc1eec94087a10895924a9ce8e00e2b61c1930278d9ea70e638b12b9499578ea588e7813c69d921bb6645d7519348e04a99a03032d2caae9dae42bc49b21c1a7315b790d1c1620a586a92a505a0d264f18d2964b45656517be24701205710e03ba3d30551ae80722794529cbe2221275d3f913d44a544232001088679ee919bebd657bf736715182aa0cd21134038478336561481b2a38f2872c088f9e28b1605487d55567d4722a4ac913a3d1f27041fd4304d88fb9b7428abc0656e62060488e12225a70f6385175f0e3d3e8c88d084c6a2400039ee1032f8bd6f283ca1d95bb2a34160d1870c84b912f344c52108199520f271650970442893195c7028e2376a8d869b35138442ceece0a569cae35a8293e5314a66830e3400713eccbc98f0a1c3de8f4c0928e8d986028769daa4229f0acf4424894db569aea0503fc60c149b538e305908c1b65d34b0a114b4278edf1082b513657e8424d03b45fa3bd5b4ad1008677416404f6e9999220c81c4530aea2b4b8226234448101569e434b7ad8c02e204a82c0a02016878a90ab41648ecc6821854250982c1a3a0adaf499136d5110e7cd55d34fd1d45b9b282cb82c400934a361866b50242872a056d849320df1614e9294a794d49dbb404c534c812869755072317480150f1d44a46836a481270d3984e70470902b82e1192c94c8bc8c30c1d4a0c9e180a96512abd7d400767824d648908511218931ab1799a0470b00b8f0900245ac80053a38dad291344469495be2a401b4167dc588925dbab108202a86c0ea95a28d1c00ac3ca9ab9291e4012b8aac151420600185e548873a5a866e181047a9c0e15022758faa06bbf72ea065e33134c62300345e14214ea03aa86a825f38045ce142e20d0a22a9de892f5a76903238f52548a403f58150612c24ca8bdd5a6001151e339274906c346f7dd650cd68222048840bddf481ad4d17282061b2a0343001d53486409a444b630ae5884bf43e91708691f940e9cb55dc0f2a12808454ef1c4805384a4409db4585628e00735559556fe15795435d9cc03a14d17b381ebe3cf4ed586024d0890d326c939f56e9c0548ffb8e1c3208ec0c4b508f6b109510621de6a8c27394f8c5a3ce89172978027d5e03ac0950a40a8f05261488021621608980a9261f8e44ca61e11323248a2021c0488cab060458c2a60b8f151d3b0f32f2a89cac5d8050f0b97f3200b99147d0d99c13e5422acaeb660f9b0c28e8c848b26581320454b9025195a413c7800f06e70dabf2818e669703ad0baf1b4602fc1991e6020a098981940444f3a01586886cacd237d53191b258b121140349021e7b8a150c9952347a12c0a5229013bc79d21cb9ac0d17fa4c39c3b754009b06c392082508d8806363d60bf1c6aa8253a54ec10a062e0ed238a8f393addb92d346c25b8f29a031442f13b842e4f8b1fc4bb1c0c5d71b5da70de18b65161244aac0f849a90682522a302600402b312d185b675a4288e109d42893cd32e6c714b8c15ba94acbc7a21490dc08d091658f1e9796aa373af00441235764b881c4808f23080669d5b801e9460d2724b39947f13f8df9797d68fd78804399403dc28f37c4a45b14951718ee9121487bde68b850bce9c254d6a107005c6180a5430d33381c4b9ceec479d55448da1b3185ed111eb11f4cc9262554707e22fd6549971c555169d15878d2cbe21be039210f16e45d87e9be71dd38f2b584859904ae9230ed2d19805363848a9aa9337c41523c2973809b0b6767beb4c0f0585a96ace8e3c1f00a5d17253733257f26780dca9184eb0c2b8156021368dc12c073636aef87920406807265b66116722c36d0c25a008783ccd1831d49570b14caa860b4c7eb6c6a8dcd85033a20bc0022c73056d4410a4f62cb874a234948d4fc9017f260615dedd8e07ef04bd3b2264516185e70f0747591201426d113cca03008e406d419012091bada90e2c406a019a081a9855fdd7171956cf3e82e42a0137f4d988809ea7ac300179aa535290d380adda1838a5f020b089694fa4025710051e705252e445c36e069b03a04224562bea502231c1923e484d9009757dc959685e5d5f1e9a96d811c40ea32070386b0b38527533361715881e010ab1c1d01748271a783a42c687c7998537c2b4b63858dc4be28240475110487810d82966285f51c34540cdd0912626881018e0355361c1b37de8a88e951b340824080ec9c68b549e3e0c6b340a5436b8186f3e491f3863931242c8aa1285786ac6111a4410381a8147dbd40bbc300c41f18ee02e320a03d5a65810025e8b81779350017e5001d437cbc211015f9db72060b003ea627244af8915265ad68da269144605990464b0b445761568e3293c2583db0463df3c287280283f3e5c870121a102c622a75710a3a53664839f540e29b04228a469c80730783092e8bca6041da70c72606b6c3571a1d48ee900942fa6273c28cbb3ad17f5e0c60d357b886702a459a3404c0161c3024ce1ba60e34289ab0a627a0929c9c5d617a3a230689127ce755222a4542ce21181a0c10ee421390864c3d6909a4f18707a792d4016168f0b618af126040010ba639a34b9cc19a523370a9eb805b8e930381658668f4457169b24446ea878c4c5af199c408ab0f069c187d805cc1c5d121c0f5834b2d424eb42303a2a24bea8d9624236112d734325e451f148d48351873e30ea00e896d8730357ea82842c1ca4a952a555144576d140701a3c7a8e4ae8dd5b122069d420e8dc8880000005000d312003040281a0d87e321b16098b5663d14000573ba627e5e1b8aa32089510a19438c310001108011010081c18c230040ba121e06f1480c8eab1a82f8ed5cac7713000a8a3b68f6ea376176e6ef0fb0effa2635b84962643e24571089f1f9084a93c4628d89b42ea2565a07232ef76abfdbdd7bacad6c3325b5d50438ce157858b46469b87b55c6d10884f86ef5d110234be22152455826ad83a06a1e350a0b119d7b3a94bde660ccc29aefa1a72ffeb446dbb3348f839b9018dd164063026c7570201d39c4fa8e5657889ed9f7070533e6ebf44f214d25f2888def31ae0e251f93a9bf717f834fba1f89c9f8e83eb5a7d05221a366f32654f58e49a39e3cee1449ea12c842fa57b967454fbc1ad740c9b5dc52ce6651522055b17cd2177363763ffc567b96d5ce92efcce29e257b7c66c5ae797872df8439d923a7fb2d2c08e796b9cfb9f0493c9110a25545548cea04dc141436484fe8b03da63194431b59dca2f4c124269344c984745c9201788c33fa9eedf118c727d0127de6f86d5a4483fddbf9846498d6917b97dcbf4989ddbcc6cfb16e394ff7b885c55e6793a0eb53af216126bf9f22dfb0d14afe39ccbe5fffbd0878b2f2583470862183402acf04c512f6c5d7b8ce48357e8a9ee293ffdbed0db2938e666c0b5f1b73c81297a5f9fe6c36f7a874fde48e3a92cb4eb2a0f014614bd2447b8dd65ec208687c6b653ef216b7bd1e0a6f15dd55ed14849d4f791fb318ffc00a6cfab4aaedafbb39d1636fef9f3c0e6b9b4e79b01814c5d20e2be6b6bb0677c766a77f20454e5dbce79cc502202c1096f2e97abd17cfec4c5931fa4f6bbff2bc695757c1d8c06130ad3119e468508614041dec6943a307cd35362b80ba0269a2cdf03f2fa3740dba8e7768f58d80114a0d7297adbf3304a3e7de39852b8fda9cd22a77cae289f6675631dadf471eb91f2d3fcfa5ac125ab16bc38cbf7f41578f324e08ec75f4a061f0b2d554ff163db8338828844d8f0ca037a5aab7cf0bee006b617122a9158d3fbc72447e4fcc95f9a4cff48b0ab03b7f4f5514f6eb097a68a930ce14e29eef6fa7abc37019eadcde8e59c6759af5432567f178c3164aa482de22823165950be87c62db35aa0ca3e0fef10a90683ed0cc0c4cd5cf621760686343af49cb8a04a65949e7096f9628a278ba1026ae7d25c55669859369f33391a2832da20457052418ef80fc0c88f4b095c5d4ecf77e88a76d58f2283f83940ba2b3a77fe24ebe0a64cb7638e8eb04cc390eb14ed98ef4192c03c6a018d112c84d4a05fcad1dd9a59b8f15a55d36df62b667737934e352a1f2d5f4ab7823af13b4fdca6dbe482f61f92bf138dd6a7f7a3da76533be6a8d4baafa3a4ed38f01142f1d05784c0793cea3c4cb12556f1e47fcc8cf479e0fb6b24883e7f7af7177cdc6e024a1eac900080004cf93341162f7ab00a7df53b0a541e8e8ededd49fc5aa6393913e6a1e8a0231a73816fbed7834d942cba078c9a2478b4f3f61ef4b646e8d1868e1ab5e1b49c04e8fc84f5f6afa029773ffd9495796b52a70a248ac662a61f866841fd936089dade93b62027cae13ceb9350c6db9860f064716a050e1a8176080c4c4683433849003e50bbd65a617cf85c490e780c8824fcc4b2c882c156f4ecf1b452bce2504881ad13fd1e4571cf973bb3120d006430eafa49dd6b7d1f6d2dfc254d0f1d1465dbadc34474e3e1138f0358659ea1423fe037333ce50c4e93b9af56e02f2f147a42f43c0cf3e22e5a67ea65a62c090882fb810803ff5d76fb29c2525dd029c143940c31c99e1a824cb67c31d9ad9d785c4cb7c1da6a75480a946f3aeb23a04da13b61a65ddc1a2f870880ccf7257074285d280d8a8595141ba88ec24cc43855f99836dd638fb77e5dcb35803c1185f4017ec68a1a140cc7f9a8a1be72a89540b79385896d7539bd23785994503190e02afd53f9ea180449008b0d1742e558391a709417a3d086fbcf2952d5f844f5828a4cb125ffb6b122d3b7f6449a194b31d2d732e79efa0217f797a593d8c1d8221c30c1d032b014d6055fcc6e3d8a22eedf424ea8196f13029b6b0f8d84c7d262486d018387d5a5ce593795eb4e7204a20798dcd00f5e445dd8f1d866994ce198e68c3193e59a260f56fa514ddf0be4f06acda52b7a3fc30bfbca006ec1684ec1556a9f96b45fb1366bdd60d6dfc300cfa3b6ffeabd4c23f4cbaf441fcf419893247693784af6610d148be216badff4afa0500ed65588723c9b25ebc8e623b85a0392078283e236f3ade8fdd1689071b1c52b4574c4585bd77b45f1568c8672728338ce39d8180c89cd9eea1d8e1740f3bf881f316dc932533024bb01183c09b8f35989e57699929b82df3c45bc37e99762b3ede7c6c93a9c6787bca1d8f7573ade40ffd54a1b0349337d91f03456e4467630e143c53704f7eef6c68a74e20296936466edce8c294799852bf2f85cca3d8bdd1687f9b5e353a2c590f77539ebaa30558c7835ace69977da1fa13589ffc93e0bd370f2b9d6d8a130e046cd8bbf053e1f22dac1fbbf734d77d3362e5c4417a024e5c769239730686a7838d3e1cf8a67937639a4fde7293b5acc958663296b389fd1cf750d3bc8c6f26e39bcbd866654c3319d35cc6373be39acb981aa75f15a66025988593bc6856af853bc97a6bb5f036491467e0cce822936efa9087266a00a63acb9f33149a32234dc9485333def419694a469a9af1a6cf485332d2d48c377d469a9291a666bce933d294cb147c2a95445cb172652edbbf2bafee77707cd4758c51e59b6a3f4d29db7d580e326366f034a2b6bdbff7ed436860d118779b0a1a4b62539f4624078b6e92e42525add19cf767c89a901a9b9ca3c2d86eb4d8f138a0843fa9646cafd52d649ecd7e3b077524d4e7edee4f9fb140e0fc2353b71eac7d44e80cc5c37e681c71b734628a7b23f7bc7e74bce2bd92f25e219d94f8ed84cbfc9cf66c862182e8eb2410a016b69ce1d85f1c779465cb6b342a457455f0ba4aff97f86cf408fec0bfa7f9bb72b80f93c4b4028ea160945b5d9d92895d2a205a9dcabeb98ef59163740db45e3f9641282692b82984458bbd94b8405a16f710db4f1d3e35aa6cad2771922cebad2361a4ebee737ecbc1fa254cae7545a7d6b2281b98ee7a9fd6dcc2fb5be3188d2faccfcb7497aad9a14e27131060ec95093874a62a672403ff746f67158f62cbbbdfc3e40320324fd49b83d84362af40a2bc006839c606a6b4d50b207f4f20c15a4345bfb99bfdb56508bd040989e2fb284156b36d01b948416b809287ecc99c7539e97c1d52c396f049a907ad2b09acbaff70fd6b7ffb01281be13910a6323ef786d288e0e2d813264fb84b5d4a5b40e2019d0cbee14c2f7dde36cfc6c10bab289c3a4851e0b8f0c08629dbbc461391d19d718757d4770cb617707cf9e6beb8d66f6cf0dfffdeaeeacec313b579210d8c074e759c9a049e5064262e67bc615ab3d76cc31c91963e7d7173db1867de04fecdbfb3c37360236f07303fc88bd3ccd690b7afb35dd71347f390983f797af6ef0cecce01452ea87bbcc982c999fd0017278141ee7239a325f66f707fa8660abc8541fcab6069327199617a387d29abdbf7fa4d65ef6f751eea40591ffed19d42d51a12e2c59e738416a38f3776581a931ed5a475f177a752a58338631794091a607905b63362e5b559e72d21e42f8a638d78cb2e33af35cfb19c9f74834f4f4f80bbba5f1678fb5a2c92c79cec93c70d7c9f85dc838e6401b9b0637db37fd8cf026d7b4e249ca6ddf119e3b7d62937a6b18be6fd897404233d62bac3fa3614e63b0f3c98d425e8321d11c6ee3d8fe2bae757f12ffb27c98533199fbafead75d07b7e81ab3ed99ac224ebbeb77961630dedd5de31279fa56f9f650175fb17346854200b1861416f9cb783e0d41327bc02421e1197c9fdb59ce90f50fef4548dc1ec2a0b0ea13c9fb0bdca5ffca7e6cd52daadc5739199ddea1dafcf8d9bb29922b5590b86e20d3329bf332b457fa1fdf2427927adada19ddc9916a3681f8dc4dca555edf0a7b81f90328625be7ebfe7c8c52691e0a9179b5e63cd0e7cace1fac251ef2c94e3e169a0ada010c893280d384ede73d40b9147102aaadd440c1161c92d6e3a8d5c5cf85ff443c0a8cec5d378ba43641f47a70616524b48cef0712bc61ddb6340d6dbcb6ac1854b10dfd06f0297ac190bd2095eb7ff8bae004d523bbd402bdac85c14b9166fe9d04fe8acb9119558f5316fa786d3a6ba1e5e9dda48103d3f4f75ba822bdd13523f18dbfff86a02bc01360488009bd1b3be9048b8c01458d1cad75e1ad9199f13b2b82735827fbe847e9b008c4fc46ef716e717feca710ebac79f43bf5cb1e66c225d5fc5feb9d4edff26eb409c0c9f99ab6654aea0400e546f097de1e77b20f90c01a2b1a59e20d9b819d859207908ab642bab135d3fdcbbf7c71f0fcabbe1ea84a0d7bf3b878131068a0decf5c23ece370ad500ddb8530e869988fc1128e26a5d9ae937606ee819b948afdddc70fb613e65ea27b143579e1c0616b1ea2f9c8e6f0f69197fa8f5bfe9ede56670f197f05d43bc44d06a5e1aaefed280c81990047680fbcc99e08383cbff95b7e7327fc88c626a4bcca77577667b0b1276d38b9cfdee67448e8fcfcf047c2df2db9006a29e19b31b9726def4ac2fe971b7f8c9d89bcac9c2ffe7fafcea38ec5d6d43c060482625ef64cb7fa6b4f34396e76522eba6a83ae2c10e32817b301cefd6ba8d5ef9fc062732780381b45b42c96a5d3aac75aef08becd029e9861220494fe1317594213ef8841befc7d2795619700b594add6daf79f4fafb448d63a7a98b7f4cf5ed39b318d2fbdf4f4482f92aae92f38b8a74be7c4b91fba4c83e8b3cdfbc687af05e4cd3f73f31fe0ecfd411da892c430bb57dfa4a955b622a191be6bbb784557f8147b51ec4be77c5318f596e50349b648c9f32dc25792662d18b7786f2ceb73ebd17b4deaf9fdc0acb33d009fcc75a1db77b6b606f9969fd056b3b5ac4d9e81ae8bc643906dda7495bfa962983131376ccfee2acf444b9a966597ea1edff94fa565c9f88980d9519f92b146bfcbf39db81859f6c3a15047396f66a6ebe5e0aa1816ac55edd4bfb213e1e947316f877a56b97a87eb2c869a2c6259902c8623c94ce83dd24cb2dfc9d4aa8159ea8faa17706337449bde6034e9c12ea751d77cb576c93de98833b8e3e7cab4cf43f0e9b4d66e90022b6d773dc6c664bf796c5293b4618aed65679ca5f6ddc31bb8359615aea611c9ff47725902d8198c79d7e873b092f303a27ef5824d26f4050d4990d087a69dd8f23f6a761e79303e3dbf6896bea71590705c96d6e311f20f7d232daf57b98f5fcc6063f13377f8e2a23bc559213434519873424defe14d0af1c531e128026b0ee6f38e707f4219575a76dda6f299abc82a57a538f5b00050f5570f242089870f10933224e6e24e92e8c2d4f1107ca4a59cb6f3be22b4cf72d811dcb3b667ef757e47fada5d00bf442f01d787a32489f3351910e007afddce66d2a6be3c1ecc8fd4380ad49c0d3846b8e0ffe7019bb00ae24d63484524b4b35bf60985ef3a2a38f75e51d0b966e4713964ef08099df45afceec5a4eb1b04ca7e3a655779d16b44ac9baeb426d68b615eca6bf1ceeed782dd6ce894427d75e1ed42dd459c801e94214825ab9502268fe5968aa52bf78c6587a086d00ee8e5982232c914fb21e9708d28fd39cb1ba62ead114d5d92c740b0b78f80e64913cfd5efdfdaca18451b2171a4196773bb53b45ea7ffd46257630c2287c4def4544c641e331ef313f05822f9b7c66d85926e6629c91457706f493eb4738f9c7d2367f8a61e507bb176fca915197131ce30386274abb871da12e550a8d197e884f5843f1b969dd4895636508a3cc2e4e0c9138df226442dc023e09b1850b27fbfe9022a191c1036f218cc4ba995f96ec56a6c35c74f704603a94b66ac67289a8c5ac55f25b11e085cc2c2491abdeafbbfee160afd57f155442be27137b3bd5831265a4ccfa3f851467f2d3b922756f3cd92a64312af3a6e38fd04d7f5ae0789821b38d894620b35c30943b5163954adb66ddfcd6f8f732d6289198cb99f78d14328dce288d4b443453381ab792658746f5e236dc2ade77b4483769fcd0844ce28f72e9f4228b949363eac7a431e074fc34e0ecd92cef40dd2323c81e377b0b9e2ec5de8c88f5ee8cf10b28993503521ca7d379db4378b12c2c40e1ebdffebfb15b6c1435dc1f2bc3d104e760720383d13cb799feed578dcb05cbde58ddf1c3a63c2bd0a950e983b1ebc69309b09f9b0710f8db24dfebc805bb28bb5315876adad70bc89b15d92e00a1ba50c892f3a2965ba9ba52d8c740e1b144ff768852099aeab16e150c0b289efedf2bda8ac710c7c5a2e8b5d8066803279904ae9906252287903f5205e6fcd71a5e2072a13c3818d740aa06d7636c11706d1359458f02988ab7a4b19a1193bf202d95bb6b3a8fed4ada0d122b9935ec675b8cc526597d1efc6ba47f8813df85dd8fe0954d36109b0ce0ef2f11fa7dbd9d1f9a0fe118faa0540503e3ccf134f28e20bb9e6eb6bb6340dcec3e8acb96af10e44f5560a58c5c1c28066136ff70640e13259aa71f4191d421f44b0e7aafeba7113fd668c951d29002c9788e42a0ac467437c129370d1b15980bd24ff1283e11c65a7df6dd290c151c9ed8fb413dde4b7cc4f40e10f790cb5ce240964260ed91859ff9d2b81401adfa98c016086d0d70ec4f97fe37d8344f92f99a5615875f538cdfad5d5de4ba1bc2b3528fec55f11c9bef92069611fe0c228017bb58cedfa89cbfcf544f22c0a07f5923789510231c9f4ce3985752640a8d60fa6b1e52a7021ea0d11446af70efab3c51d5e6fc9e6aa04b545f3150af6a7cccf803b77449456494193b4c86327fc46575ec1c027aff79b7bdfcaca36dedf8bf8d3348c3cd97d02a14f6797f6e52c6baa16e6885e0746c70d95becdf8d15db5b1e87de4bc9225b7ebe312f63463f82bb737a89d271cd7a3a8ac85a6ddc7f6c57bdae96b9e23d415da7a0ebdf062265c5afcba57bd56bc36605616b284903d772df4d029b5b432f7b6163bd55c45ee2e51f0a9e3470df296840068a24335819de79e155790614a6b2c738baec634551b5d326a0603599fee5c04dbdf8713da10cf6a8d6c7fa90218a715f560b21de06f01a2060836e460021900e4d62a9fd0e02a60189414291e139abfc86128ddff0e206fa79b61f14000ed5109133b03946d41f85f297caee49b0b2cc4feaa08288dbb0822c7ceaf21b8098a0d71bae3558cce2da7396648941570a311ff11a6211e4b1b196f37286aa81b13f757431c30e5f1f13628b4fab7789e7db3b72be69842ecabd173c76d86124fa90208786a6b4ad14328aeb734971745808de4cf8aeef4e8b6c9e6ac4ee12aaab993e461955f2be98c08884c4d2fc8b5bd9ceb87926f0f825c5b0b82ef256dfdcc63169625eb0feac984e99aecfe270ab5bce4c6602b519b6a544838ac57acd8b44b5ffc9ab6cbb8f2ff05134634f3de0c413224b071c20054290b501b1058b3c11d9cc84fa3520bdb0516e61fdd1f60bd8465b200c35a19b009a702e17a4cfc828d1d6fbc3c6d0e2d769ae57e552dcff5b5372e0b76d5c275253b66ebcf59d07bc6aaf825eb3bfdb6734ecc0e219c5d5e8f2442cf1606beb830e0858eb37908225fd04c95002b8b42f1845142c0b85248828c496f4f94c469dd5cb609ce53a4c2ad29225c8c04a4cbc87ec91faf0d14c79f7e78218fb2779b5a253b34afb9f0eaa4512590c77777324d706cb135058930bff078233f8d621974722f1d09693e370682f00f44dd44d637e57356ea397e6568983067595c9b4e4b656eb3de11250ac55d7b4759e9f44dc2716ed054ecae53b192606850cd346d5ed2a33508406fd21cac9568049bc9ae5e5cc7ca31bacbea4bb03242f05ecb3ab67e59eae82e7d67695b17bd11936fc1eebc4c648e884a08447ec90a5ddfb0c9b60a8620969bdb960d2415d80cc868bdec3f775299f84f49e7e8243558270c57cc2eb2bf85667e29613874706328a87fdfc872610ee609e278c1d444560c51952b1b3567abc287fe557d92ee25f42453bcb3811cadffb77d4925162b4d6ce0f87047cdb17b6f58d6695cc832feeec929c45ed4e7d74b9ba45a7ce8734071c72f15f6c3617d7222e92c3d5c87f09df9a3628f92651c7eac3c30fb8865fe618221d44254c3a0263caa17285c708499e6c26814df6daa48a4b36f362cb1e3615641d642d034ca6529f6a85246c2558014314c9eee2939039b1002db58d77623b1fa5d594e8b63125e82661250ea30796d61aa852e86636a1e4295ae4bf869b1863ef79e8cb29ab3b2a8a165d2ec46b49007ec781e2349f4b685bf3193e1c6a718b1ee2a941eca3df6dcd6fd38899e9c19435b33141e9e5a6d0b309d6328d6c0bc0aa34552b3b0924b25c7a39d796a1bf534af663c48f9b7c6dc345552556f58d10c79c411559cb136f00fad95626f5c93ac9bb6de91a352818ab6adfa62e951d75b0c28187aa965da0567e43a88371d326b74ec7ab4153307364ee9fe5257a674706ab0e4efc34ed244c13a27e2361709a01e576d0d527c54ccebbd2096bd43bf6f6c024b13269e1c54b06cb6e393fd17e70d02e016c3b9918206c23e00b407b8e3466cf9b25310245265d45655f3c8f102c2ec93b40e3e98bf1f8bf2e429f7a6233c005c27044e0046a80cb1ae8206e28fac8872193a52273da7ccffc8493301d3a250e6e58c4fb09260420990cc60e1180b4cb6703582abdc8beaa9c00e9117712116f8d2ed0f6a9c71444b57159dd06a8abf9c692ab6ea6ac32991f79355ce1883288ad214aefb11ba3d76a3f5aec42c0b45630e31381f610e30d0eb10434c358a22aef9bd3aa577bfb8d93c9ace60e2986ac47bcfff8153b042355702628a2571007f0caf42a3f7f6dafbd8ba08b51e39703d338421bf6bbca9984c6945281c28f8f9cae22e91c982ecaa559e6b9b434de01610908a57365720c5f1ace0856ee852f6fb9bfc46ed7811a5354a1131ae8e602f0643d6c52ef0e3697a1a0736fc161c60efc835a21d5885fe3a48852e2c7ce00ee380bed778b808d17721e569d8cc5339e0f6309b60d01ba03e303ba04dd25e210e4ccf2c918b6c7cb9e9375089660600b727347c6d9cfd458ad8df71cd1d290b44ebcfeda5ce16d27f3eba1d075e7f09af502c5d6ef0d5f431de2975a47c79797372317c3dc1ec28e90e1c8e6f991676fa5083c3aa8b0d35dd6bb6553889778b263170d86f886c4d82eb82fa2e95d2d791b6333f27218a7e0746e2cbaeede09e2d3ae601aae147be98122ed6774e1406a912503ed219ece47e84691a9046579b400cb31799a4fd864b769dd4135f9c95beb82281bdcfbc3a65e931d3552b64b017cd70db1b97618e66a121edc6df90d098d4f02a862a255a5e30dc0a62710418cf1a80e655ce114112222320f8e9349c5fd550edd37e5a5f5b61b3e23784a11f5da1bbcc6b7e59f573100ba8067847126cb2ba1d079b88039e112bf812c4cf457aeaf6135e491aa664afb757cdf66eb11650c04f86008ad00bd605740df15ad653d2a023cf98e4f9252c51a39cdef9f93cd1412c813af68a4a53e1f0d7adb8238cd8d503370d26393048eb571c7a6021e6825639d7e687f098b516bbe8b7865a69015023845013b2c20d7cfdbd80c18ab88ba2df2c6c807353f71f7834a8f44a8ab54c71e9a0f6801085cbd839f1591db147b56486a8890d20fee190a1685550c9db1a45c64eff065b935e92e0b4fd4d266eb2c89e0494cb44a7193866874c5ebc38c50f297124771e5882ececec97f22aa2600c5ec9d9c2842e4186cc5f941cd0d71d3aad7a8ff5d031ec071812d17d3ce06e4e45d8d39fa1b30183e162fdfbfe55a5d3c9fb8fb3797bef2ee73f4e0c058ef66aea15031f3f422792fb000113981cbe5b06b12ac865f441f01717b08a4be282957950daadff18f1fcca3991c58a25018dbf65bdaae4062f463ea215659f9ef7e3347308958cd3815fadaa73fc0ea93f5cc3f87eb0140e083b6c0142a35ee3d248839be4eaba13feae86961adaad39ecaa3b90ef2d1b20550a3fef3d818fb344be59f6392343963201f78c17ea18853ff0e5ada3f4a1f79a52c8d7f74cbe16bf071ef6be2878d0d1279459c08009261f7fd49708c48a932800de743b2bf11cd98863d5158c44abf15039fc5fba4d4773cb2f5f8fb65e73396aaf338df4df49402a4de6be9a9217c6620049c062094da754125f30aacc46d3a78ad5cec1e152c4a80c6d49327978354b59a6f6694aa42c95e60a27bee02acf441a5683fec0dc6602edbc0c15a7e0b0dd1be1b9e1d0b108e9a63952a6ce3286d286af974a9834b8299e6e7dc7b43138379837e48fda059d607a42531e827ff6e22601d974b796a22dd604e86ee3b4842d04025687191857f29cd9720751758f232c5860d714ca0489c18885b04cd50b40b9fa6f18e9ca321dca83ab811b27ba3c4ddde746886347499e38d0bb61417df682d0b685d219b17bea3277d80449cb59dc52c066a39de2b7d1d992ff9203b4a159613a07c07930629cbda0b4f06dc1ab79e1a301f6282394aebc286b51f3aed1a156e504487b43cb202cc35f1c4360bc02231367e76ffbbc476e2df763ea54d021e76ed98343a3005de12eb3ceaca3ede294730237a973321fe0b405257aa95eb4322e341432e7746e63c1a5c303da25a02576fb5ae43f8dcf1a64512808d4d4886c3a7d9e579d281357684d692d44c091789fc5f0d26a382d9b94ed94cc108f9e7e84cd8729cd6816060b911255635e7b8b17af809fecb6193128e0fab49c3598e75035cd915609638fc2620196f76814865fc9cffdfa6406f8a8b4eda1e499956b05d2f508b98ae03f913ad9f2e0c0b4c3b667d8800035f9314f64b869ac8ad744e41a611eb3127189838891c695187e0f3f25bfe34d75f80c552d42d6a480f63629f031666c358d43e7b99f90faacfc61d5f998b89f92da73cd6dee53894e66867dffabf385393a4b59512418763624b2f89d40705a65edeb020ecc26fa851a8990be2cc533a833a22c830415854ad838ede1860621713a49e91d5df9f1688d4ff168272b485c7a4536c497f45fc9f5d327cc1703615938dc4da3b6406585b370e38e6dea79cdc16499b4c11513088908d05510d3a92afcc66cd8888a6e45d1568810e6402be772ebcc3e965be494e5d1aab13e82a22392f3c9f73aab251db66612e39815bdf48bafa2830fb96385f81e8f92f735a5a2977e521bb377030f98ae1893381b664426aac5a4bfdb7ef61ed4048f10b34ae641cad8d276cd060281a2571047da3a92e0cabd0801024d6722d2661a645dd3c1f8a7fd4c5a3572619770bec4349567b635943ab04b683284cb78f08bb9d7729b30f6b96f730245004234e9d52a3627f98a8684a1cc19b2e596929e68917f8469d228ccfcfa7f42643818984f304872af4d172182eba21ef79c7d17848bba4e02ae1ef147e1d23fe89d4880d9b6703d53a3288ea20d31d21c98e952b0a2b4ca4cdb7f17ed44f97f8df5f0b5b41ecab60e298b0009aa1b47dd9c7c359e0aefcc10a658420a812248e2793ffc386ba2f4244cc388b38b321267da4c36366d0894621b29ebac8354dedcbb26a5dc2e9011f912c91c23bb894e8b91050ab4beb99963bddadd9747a2aca6215e7b40d594374908838912406e6e3d3cff18e31f41f681ae166e6faf0acd13ab736af42c47f0ee0cf19ad5fad5a15c086796f85f3c9b7b3faeb4dd126065c5999d5984d93f07c4d435850e0b03d725be88f46d24794c0ae6420be4346c6e1a1c6bd0fd57783dd23066a69f614ac0703fb33966911109dc8437e88f2578a407c10234f0a54c2b15680728e5cc70a35c3c78ce82fcb42ed6297ba0497ec88f938e6ca3bdbd1402f66e2609f0b682d4b595d1da07795a93a94233a3f06e729980e97aef117befad1652b370b88ce0802814e533721d2f7e342fe9e9a2af1bb996a814daebe7eee823aff7bc992b7d05cec70b1755442d85cd42fe55039c0e990712f6caf46b6c0b2b4754d4113974b3815a9e1fe1e99082bbd47160468d5804a5aa6b55916bcafda030012912bad29421d41cdc9e049d19aacfce7840adb05c80c853615275a7e5f0d92883d38f8f8f0bf7833eae98bc4a59dd019588b161a423021fbb5892588c11dde9a75c972e5b4effcdbc5eacbbb2cd8d32b46ee20793008bba2d2e9327cee45a1d8b1b5b4c65659ea800313ed98160c4d9ad5ba1a13fa4ae3c52501f3ffd377d572c38fc2624ddd4b2c45861720c40d2c8ddb9740f143f49b5c12b240df83cb2fb34d29729607ae3b0872a066f1718a40c0111d67a4ec02e55a9a4f545563baa4b79d35f134ecbe22df8ed6c487c890836775cb03679518a44e35ad361d1e7ff32d9018f611b1c8bceb82f873649d80d1db1dda394c2528f16901ecf2fa228bdad1e1e638bda5b470b93d0c3a5c358178371075eef34ffed23e297601901673bd1f088bf8889b53998de9e05c5d8b4f10840859a207ae7b4776b90b9424bcf470460157e3a593d049f6369312e9f65c8b883145bf445042ded8a3266a013893c410000e5dc86fc5904d102ff63804ac498c29a1e93181018107fd27be00931c1bdebe7ba8080dd9b01a29ddd465a1c3c16b57e4ce4426096e70a90339f0245b97fb6d4580c826a830d26794f7ccc13e83e8676e1bd943d054a35a62087a8724dd7f6962acdba19f48bd98a8375b4400930b653cd96fe2bcab4f5a5e58b82e26bf2c9cc878390dbfd8f0d1cc4ae961484bdf60e203f00227bbdfa370c38bbb9dc6cce71f701678d1b1da9960cdad2b00766071d9f25e6b56f9cbfbd5be28465b3d9970230f1723103d49ffc25212db68e3c640fbad7d5d45706bf9103c640304aeeccee851e8a0ae5dd22d780d8123af88c05f51a921c1c962986928bef037ba264216062044f26f43498e7c9ab74c3d9dfca37c358740b262c033113238404a5ae41d0e995e29bc5ee617a02113e63b3d015eaef4644ad77838c449ff81143f21e036e3e26885fcf3b8453c323409281bdd2276d6dbda11eb557118824b08a33ff6fdedc5fe7f09200763151db6e1c3a0f50d014600e6a2a7c604e2ecaee4bdbd7065b81d416a522d9ec0a4d40a0061e19bebf82de55139b56b422a4d079cd8b45d0e9426d29ce370edc48eb02e54358f955064294bbf07ecd1fead2c6b6bf5b351d87ffbf71554846fdb242d3bcc548c9b33c689012dbfdae949c38f6f09e2b976a89c86d7673d0d3dfd5517339235761e3ee0cfe12e78fe1d622cfd53ef1d9a79d0e8d7077425871c1be89c0ad2e634207d29b5550a07871cfd835a3737f526964b44d8a01b3bf0b045c418c3a51af60afc0b744474f9be635c64eeae7cfde0ed3b43c6ae974fd425a885c963bfc24e2a7d87a62eb0fa1cf4e2f787736e1474d55deeb9a771e77d6e0aebc982f31e352e45fc3864b70d357f0c39820455f9553ee31f94fea3956c0f09e989f61adbad32638c55affb9b205664af94c66ef7df802b0ad8286e91adeace63afb77df661978410cb7d48e42034ecfc7e36f7e7b335d17f025b2f206786bf0d7d3cc4b40b3efdf81bbd47070f249999b7f5c51f4fef916df3f173c1bd7107fb4ed8d65f39e7b27e5e233fbd118c87d81f3b614f2127e23b8cdf8afda6484279baa285c8e9a0a359d9a3768b55d1b9c6bb166272f7ee7eb0c38e480a2e2d7d5e607cb8dfd6cff22ca6db0dc4cfc627d421d9e510061e2768c8a2f3d171233b43c30fcf82deb8f235853af61a8deb6d4c2b9e42e6d142b4cff04fe65c8fac5141f93dfac57c07dabbeb91d17a7be70e488c5954b887d7459f86e7f07ac1410bf613e8370b442e203c1bcfb1464dbfce39f199f704bf7e1d39a5697e4dcdcca33b1d3bf6ff18fedf4c638575c37b0407fd77a7ae5ba2c5d21bc0a6256d5f2d27806445974f05fc7f634f8df39ca96aefaabaa763b8c090a8cf3c0a1eac6b84c7a7f17bebde38d019e67339dffd384ba161452cfa6cd5aa5b43a41473d3ec28a466a15b718d1dd128ada1abc3ed70a9ca84791e77c489d92b335d97ccb989367aa9419ef7ed608748dc718c0f1a0435684b552673175b47b7e93dcdd7ac8181d26adaab4837f6c3ecbb471a584b3f792110eefd45734d677f48c518c82b720d6e90e0291a5b06d9aad27afc498e61e9ef8995d257ac549bdcf4557c8afe661dffba2208e4094f8fd2111d91a0c056a19f4ec19c21552cd7d0111ece9d47d11453587fe72d2634b0028fd393099ff4b97df81fec6271af60d51825ed45bfeaf2aafb68376c622c5ed4f4bfcfd3fbb5c13b2202cca7b3ae78fbae33e48a342ff5a2d5ebd67400b99515a41e943b94aff08de000fdc2f5db9d32b60d2cc17eca656962d62b3ba75f367166cd9d28e16feaea5edd924f742ce57593771c2f637c781f73a7fadbab63eebb2be039ca3c2eedd4b409765510e6658137ce65d9eaae873eb70e99e3008ac1b956cdc601b28092d86d7c55d2bc7fdde82276079a2f4805113c9fad7e56a2ad781b98c589c14ef8275855463ba40211da5c04b377553d521f6fd78f5435104ad845203b38cb97d4516f89f7d0146c63a4059cbd11d8eff88c649e20fdafa11773428894574e3f37872677eefac5e064013bf2ee5ad6aca4f958e765309ca65e49a4f7f99bf361f4ab26607e68ae0c1fa338c0aed9444102487c772d2a8213c1b931c4308e319e8f54287dd97cd31a5237e6bc7ba8053ca23b23d6d2d106eee9cae143ac76c5b976151879d40350d6c5a3c5e3a5844396786d48509994103b566916070de4551754f2740a91e749bd1d5a12a344b40251a16f878dcd79be3d95aec866ade5437c7ff13f11750846886f2f227e19d59816770520f2a6250d6b012c3d3272d90e3f63bf1776cd1ba2e874884605b191967647cae3318bb20cf4cff46d0a18a11fdd235f38990ab053faefb5195d9e5d058d3f309caa4fab50be517f3683fa2e2d456e03b9b5b408015a9bf44740b85a435b874172e7d6db91914f331d1d9e4960974fb53c081ee5884e33b79bb82404334b6414d3e68f87165dacc3acd16e4bc8214731e343e243ee733689bd5c85469c06d0d6730ab5fb6160080126af7ea5e9bca9725469d7b4f55651282a92562532c9e08db9032a14228d3c504f84e7819ad4eaa5c90b0652c49633c7493929e63707290070eb9e8d8af42e492c16d2b0c28e7f4c9c639013e599c929b355541f52946e4b515b4d422528633db395ec0c11efcfa2f0e77c09908d5386a1827b61465a923be474f6e11bd20f6f2f0464ef67a66abef7e5e13dd1dd1c7666ebdbc5a6415b5cab57d6c335e9490f2eb67125a48761170dc6280b41eb0a47a32125dc629ae18fb922e21ab10d43373f6fb3f28996fa9898d6ae90b59589081ba2d7553797f65cfbdcfb4b501d2cccc815abe253ede1dbf522d55216022b04207b9cce5658e805495afcdc57a2152ee27c18aaf9f350408eee76c576a77a328054e4fb00e046c22b59c8d960991be06d71a00faafa93723e1a6d40a2bd8052469df74b4dc03958970ac1afb81100570a2552dbde3511f5b49b256333645817145cec8a89b241a34665d59ec73fe9c36ccf57007ffa1e519ffe64925fce42429a5bf27522a6f2f2377b574469a8eb93c4c86ecd74c541e670a35d568da2edf30913417e3953061d4236ba3ed6076953d1bfea80a678320cc0e74727454302133e736149ca4746bb0d8350afad3430185df9e903cb08abde63ff7761d1656c05f0930b487f77b59102cb00d2be163e4aad010303a5ab65742161dfe549ed21c88580c24b3e6f5ce0aa16fde57f139deab74e9b20c4d7c102b512fd09775ab75f243d9abc25c5e81e9ec7164573bd81ea99b163b7aff9747bcfacf72511da490442d89b49913d150c76db2e34a24c0eb376f561e26e39a16fd8ef903f3a11249e4625a0842c1a22e2760c2caef49e835752cd972b6cbc1e15e3bc8b3c5beabdd0b83c9441c8658f05a52bc2e282fc18e66481c6a6eac7b073b0651afb8e80ab6f91f810c3b3ec96850b8cca1767fc4454b2f87051d50f66ef69f976d3b37e033c1b4239086c69df6eba9db868adc2d5a9b6e3d3efc32fb60df517dbcefedc5790eaac78a6f1219cc1c2415df2086a0cdb63dbe3ae01046c7194099f9ed5f73231173d4631100d81324076721acdcee4d4cbdced034e53aa92806f3c5f5eded2f911b4d6e54785c464c39042792684825fb0902fc84c6080ef07eaa143ec0d2d965fe28144083cbc94c92c17e448d0395fdcdb08c862673b5c970404c58046c233ffae5a0824f071bf711817583566406fbe717a46a42637de26d24064b756d30f57d601bb0c07274eb2f5b261b62bd37c1c9b12d71694d5492389916f3b674a1f3ed7d69ae9060e6a513fcd24fc3d771ba052bd98649b8e048e7ee8a0a2d620c1e0b028157d352ffcd22772c21e30bb85b5ad5deb43b79042c79a0d73bb42cb399b3dd846bdfc02a1fe0614b76d75cbcd5d8e4a5037377808ae54165345014e2475258e09da53b9a402be2356b42291dd3091b947042134e0905f5e593e552f47085df218021b9d708fbaecb15b9370addfdf05471a0f7e474ccc1a5608b8d62c2f83531d590ae71e748590aaae219d26b5f0f3ae5b042c63b290d085b0c3aa8396c9fde09616535a1215b80377385539afa7084541601226f2cf738f5af3b55c14a42c1d47613455ea0ff6dffeb0bea16e01dc1006a9ad95c643c7841f8ff8350d2c0bc6456ed4723da69b9da17f2beb8d9bf6c1fbaef50937ed43a89222fcd1540632eff0003c2353c4903dce8c260a6cc35dbd98b6e318fde04060f4979915f5ae1147e6e63c6c50a86b4812ba308762f51978c314bcdbb82d5a17d2485041c8fc3284740d78190e1e5ed8b2fc2e67346c673414b68c56c2402dc7e39ce01b2820c5aaa109b579290819833ec99836c66eb004fed7db3aa612610c0eddab807b054e3dc83c596b98aa6308dc87294210b86a9269a0cb1dca85f784a286c3ee504c1e5b5387d1096049917e601fe341559fade5e21a8946202f01197f06a1c0538d10d04f14408143e087d069e3186cc813adf58ddbaaac18a0566802ffc185500a9e6a5a0480c57aa2c9c536757e0840811401561756bd922eeb65d1944329debfe01e00abd675cdc27d32b19f650b1486fb34ad75fac05efcc51d0cc79107f6fbaf8e42835e3f7932c592f1a684128cc6ee1fe09d100cb4cfa400adb576408d478aa69978075be5df8a73dbd867364f3e6b3de17c3dee0a3b72034a58191672c3fa4785456a9e2e6328e6b08be09e1da73e25ef87a4151671b7cdd9b032fdb930b84a6de01cf57e35ad3c0fa82a9ce6541e7aa59349a608b9394aeaf3c21e285efc86a58706a9295bd3a8ef539e7ca814624f4c7cb78b595d08dccd3759eb14b16c2bd77c89e633d8af246b3dc773237403832f37d8cc29c1fe2d96d8c11a2a39a87b06bc25325fb13f8a6015977da7e263ad747210ba8cb399e62b661f6b5ddaf836bad341413addf68d95893372229b6436551823e93f64aebe84a9bf850a06b553699109988e1b287a49f6edb0315af3c67b80e5d4a24c8bcda108baf5580228a524c6ded3b00a8ddf7ad5b1ba97060d9248119320be13ea287a85e999b1017f27fb3c6bc289e83a7d9039437f9b52c442354904e19296d94a14708915c801e2ee1223d5f64bcb88181f48a601746be000f96c8d95fca967346ad5b51894e802ac0072ba80d13b85aa15a435b0dbddd5e88644ea346fa271301443622d4953a853f92284e853587b1d95e3c4565d4459aeb1e80d3a95e33a3b3acec1560d1faa34ef6c783deea057bba539e47609b7d55a93fd277a069ce34b4164cf3e07d9a02a87523dc5d70a427c88973b4e9cae2d0038327a2f55adc4213149f2ef9506d8c2fe1a27de7c4aa2bc011a5d4e30d7155a3140b252c41b6e9b0f1e9c746c7f1236a8db9b365c95aaed7cf3232cb9580b50b7e2d0314e91d12f50f64684bfe05f3eafdbcde98a15f057171ab80163d53734ec768f63293608cf6c8c7591c5c5878bfef46423ebac9296ed9bfff4bcfa23eebdb7d2b6397a1708b298b5e7d0702e977e77825bdd62f876812d6952fb69dfe43c7ddfec3da5184ad2722cfefd9e24dd9883a9d9a8966e2f1a0303dab7e66c5d30b884532b2dd8da23c5204fec7b1266775c76d27c02dd6cd57828626d04b3af33033dfc22e94e70813d31e1559615efae682d936c8a97cd89fe653d7d928e1add5fdb6dc44fe6e0cbe64d33ee74d46f1a7491a4d2cf72685194303aae4dcb5cffe2530efe96f8ba4ad49a64badb615a577952cee16895f2c0837116a40ed1ae720b0a335873230054e3f7812626ca6f8f8181ef32107c4b8a0aacb816cb49e1eaf0932f09bfa2c9143c5b3ce5b4ac188f18eef6ccaecb9fe404a63543803a3d961f532c818c9077e332d2398eb52e337f397328de8a51d685bef6f2b14037f4d8125fe3c4c5462cbbfb9e6664d78dffa44f19611f9d4b76d5e586396cd9d6139e8230162d2dd901eb0ef76c427b99ce3696bb38f0465eb351fd35857674a0c05a1506a310b2448731df606897d31aa5b94b1c590203f8c374e0b40225cd27a70902aa7b0017daf49316fbaacac0147f6c8e9fa9feaf15228529e6c6671c7f9bf30f9ee880aaaa5caa060e3491373008798b9a05ab75f9511d99a5b01820e44db5c4ea3b862215db24368c36ccad4d8df2b3338c852128bb78f3dcc202ec58b72e76587a345496d544cac7a976a3c26ee9acc58fa29d1e99f8dc49741a6041815b298a7a270b6290e1eea27e868675d5651c4acd616301f3dcad0cfa38491a335c2be4d99c505f4ecb9bc5e0b13784e0d8513ed97f03d8c8f630f32418896d0f5a9b0c4e51b46b2cef640be1dfc8acbb0882e347e38fd1d40cc69f3d974b7960ae72236fe395de84e44a08606487cff5ec01f9eaf3a2c136755a90d8f07fd66cf7604b7d06dc851dad9bdcdeb6c0c60e47b91e45c2140e2ef935debb66742690a3a7e7f74ccc8f347c58dc48e3ba9b63dff98dca48d9c22de622e14e7f92c907b5a3fde23b31e93dba43031cee55da68b9a1f0080b682fa17776c339e3f72a7beba03c044c87b88954235bf52dc18c4aa1b154c97e18053d8e76cb29aae171e8c4c415d7bcfb927aae0de5816d605ccee150d6feec2bf8f6a6ef53854ab8e85fbf65d7d07d64bee5cc9230c927b3a235c359cb0a3a143bdb252bdf5ed58cd56b360effd600ce8ed5d931fcdea211e0107396c053001b26c8f54cbee6d021d104d313b24b79b40a5e34097714ccd7b5b05951f2f93c793292cd37d01dec2c9fdb75c0a2528e6f1bd2eb94174d241e4924bb4a3b609f564047b8a4b76eb8a7d3d43d0b027622d3ab1a1ab4322274aa3699d7086121ec532683999870fde6f7baf3c5cf42c5cc9a11c8e0bcb1a57cd171ecac90d715b38432983787ebcf844b8f6816c608d804e2fef92cfc30c597a61df03141f526df1500dd70079a921b10c4fb0b019442c8a648f843a0b9df294834e594e5c782a14d7c696b430c8b1bdb5bb349f846b77201148ba3fa07657f34ac3286c7d61bcbc376e7ef574d88f70729c4da64e7de3a251f2f588cba39794e6a4cb3daa8308c94321aba4a2853c0a5463e2c5b8b73add7a84aac1c43e7060bf3396b55d7d0d498b4faaf2550467a33f06bda2d2bfdf04351185cb1ecd3f2ec4dad16cc106f67079c1f73b9b0a6b48c97ea21cc5fc7082c939a25344d3be425f28cc8454c11c17abfe3886af91713497c201c30b55dcf3243da0a40581c3c1999e181920864788f4622cb623cdf6cd4c19afd1e6ff3435150231f73479ed15e7baa7d1d80950fd14639304f79fbe1919583ee46eff3ad44faa9ddfd21d2b543fd6de2fa3300db82f2bc761e7138a938203f070220601a8d004c63d356304d5a28446edb3c983f0a039e03840e06b9b61c4f1fc7454bee7becd042c112efeb3d4f20d915214764239703a2b8d0878e9a418914880e0513bfd731775b57002ebad60f62a672ef49caae07870c571697212b92ed2f15f1515eedd9b3dd610e5fda88575de48e5b434191bd260c761d45e8d81f4eefbb491ddad3458b6844910050060136dd1c3a9a5d13e08a053ed92f5e784a7b25409a64acc02a42f7256c9124bb4813eefeb17b51ab0525fe9181b02bce5da76922bf14a4366503cd5c2f9296aa1be6e1b3c1e1cdb991f93dbbde32d18e2f5bc03afb3f6399960e6318ef04285b9e6e3604556704e6383674eb72112faeb9c6c69d87903d101c307470b1ddac1f5ce403243b4655ff9dcd5af3776b2107cb35c460b4b82cda7ab1e728079a5431590a7fc787fe5a074acd13dba2538e96fa99fdff678d4e525637100e508ba84aa6b9467c0554280f7eac3bb6aef28e5805f1f9ac8e7c41b5ef79fbd9bcdfa17aa967d0e9bf72daf1769cb02b60ee8aaf3a0c265320303475c208ac378459af818290324ce0395fe58a089f9ab63bc3f8684f32b21dd81aea9001428b9261d63528a2080c2195195f047431c0907c7fde0977d775971ac8a7a28ad850efff94c3877834324f29f9a23b2c7621589b803be31880248a06f288ef974ad84fba182efe0d3e7474ca56be19c18321f3dc83a822620b64786e8b97ab11a2fa040858a13275ca18bde241c0a81fd75c1e3d5c7f4b0d30d0e479ed3ce36af5f3865e58ea5bed02e994208088898155fa68e962888ff01b6cd49990b6259147be44fb854001eda53b7958e2a2347c64824517c02e5e5486277c4fea0b68e82d0995b0efc2dddafd68575e3338ff12ad9615734d71d659c8dc9e93bf464c1eefff09ce64a248019d59fd81c98a40b3e5bcee4829052f11f7dda7acfbe5724b73fc2a903a10986967b736e656900cd6bd06b589f5bbc8f76c2329948a39e07f7302598ecc1207bf7f3f5b3c7722b4c50ffcf44eb50f8e075c87f519d080415524a38f93cc882ce5d450fcbdecf7788c03773c8526f7ab311246192ef67f17569109c755d9f3e37c8cd6c682fc7c903bec6beb04429696f76172ba9960a259e10cfc39126e346bfcfc7b64a61b2d360f2184ed115152ab501f46ba4a8ff9c1d09e738704fb67d8d93e63eead40f9153698f5764d45e3b40b3a7ecad82eced896861ecc28ff0cd3b204e8555d3b2499f729b0d1dc1f36ddb9a2a51379a49642e49050d6b9938f7ffde059ad3596b0bc34d3b8867e2b7aa49421dcbe5a894cf54bf0035ad22341c80f8c5b8acdfcb41db6b92b44a328ad34bba01a0542fb1c1a397ffb468c19cee290a60f803b7bdfd9b8517a198d58d4b32498f890e0265e36e4c6ddc891315428b7a82254d4993041c3a3aada71053c9b8ee2810391f52072016fe74882d6a922b32199bd8ebbb93e72d57efbe70ac8056255cbe1666cb7cf32c85ac4145ebfd3528f0f13801253fcc297aa38b56ccb94ebb4c1b7d8aab38bf639e811c18a21c8fd02b0619b2cc3a44463fd55a4836a60012b57aa5fada15d27947be7de1880c966a930aec72212ffb2bcc5c2a489899a0cac975ea9d329b199ecbdd01e178c829247d87a55382c4c144cd4cad08e25657e6b24f52f4e2e49541f7b3ace1ad23aef43bcf5698c1c54c6331f73e8874720b6b0c7cd55d8a577f11807dd32c146aad7242c36f9c269ce45252d480e68182fb728c44475423d06db9aafa071420f1194b13993bb9940f04a246a6e956a296734715bf51ffa3051410cf1870a45c0808b65caffe81c3a1a829d8646827cb4920e2935ee4e54cc4e581f1c7157ee3accfd2b1dce2b0489d648c9ba0d93b2ee8469afb6f11cde6e32b552dae415d61b3d714bb964ba3e8785f31fcd2cd466907c3d5dedecacfd0756a827bf870fca88df36d2ddb251504bc7a6fcdac845e5987a5626892b0801ef44ceb1de7b2700fb64d3c092d0037bd2c67ff5a43c8fb52330a94bad0cdba56dbc9a2e4cf1e1a7395537b8a48b2bd8c6eeb0f829053bc8ff821f960017afcd24c9f1b78325d41bcca81f11fe58e21bd497a01cb7f8e27797baac781e3b571180c281ae39f8aba063a3dc58c900173b6483c8c0d3fd88eb2b719d5ca4abcb92e31f716b4067b04eb0f9527951149b80f3775241e926a87d635f6003290ea041e2b907835107e2cdb958ef68a5661874b854a9f85632011ed7050c47ca94775ecc8bba2f84bada042746b66d282799d71e41a58be976bd48462e4aacba6d6f3fa133f118c972c1758ab83f45c6c5e6c037e06d41e522a09aeea1e7bd4964aebcaee37805ffdb084305c0c0daab61b31565a906c0c7ee2cb717ce1fbc9ced654a35baf68c6761380ebc3489d811c9cde38c0b05fd1a0f4272d628849d8f4c59c87fb0762501e1ac4b979d3373cb7100bac16d7d0e1f7cfdfd2595f0c2dc4d291b5e5b6c2bd4bd06d4b6d1361d575a0a8b40e466385af3738a083868ef5c5b316d52e3c291aa5e3a823829a113b42ba1e7fbda00ccff802909a1f704032016799c5bae5e742d64efcfefb2ca4132c21095e8effaaeff101d7033dcaec678992657874143951e398e503e194da12d7ec79069431c41de1107cdbfb64efbee63dcf8c713b3c4881d9a6ee41ee9183bf582b30ac7cdf99eafc57ecd6dc2095bfa76e5306397b4dac1a0461bfba7287a61e097fcd2cb39427dd65a4000b1f3f1eed7e60f592b764e13f97547646cc4ab4a5714890818f9d4ed1a73fe5eb4d7ef2cd05a9f9ec1e9ca8c236c9e7c75271fa59aecdfa2665df744f7cfc27f575b99883eeb178599b919ed1d1e8c414a887531696b1fc2bf8f36e4be181d0c6a38469e37c272d73b2d6c2bf2b2e18260571b3d8ecf75ff8e813bb9efed6f7a43fd32b7ed46f3e8f27fa68d7659457e4f57c946eae86c4355cc3540d621099dc83ba271cdfa3edb4626795ae986971b184f0f32366626fc83f2c5a400b8e72ff1bc5be3280eb77216b2e97dd05c720bfe5292663dd607f8510fa60bca18fdc6db0724353dc1d17adc00f322a9d75fd42e8475c64e77f14dece878b03937b0a3d62a7dcb8639a92c12085e2c0eddee964afb3f856432af36ef2674ba8f4b3f40ca81e876cecac7cd46fea190e99093c422e0d7bfcb04b0c1182e3e8a72ae07696679f4373d5b112eae064ab122faa62b07ee07af0d405a08780c1a01aafc8e9113c5160484f761e629795f9b3f0e3010faf047bdb96c196ea60731e6897a1c7804dde4ed25af02f22dfe9de3d4a54075397f7017414c8efac59c10b3f52bcb439c64e58b0ea56fddc8c1df49adfe0786c70dce01d31a8c404de94fa585267ab2ce883836956d3e0a3f320bb49a8086bbaa9d24f9ee92378763911f2eef8a77653976941bb1a9cc0cf1845207bbe61294814cd178b37315588561084d39f72a84c7eff23a18913bafc510c21eec00dd7ffe0a668a5b9213a03224db76217d9d693302af0c5c1aade6662fe9be29316232ed528ed708d8893d80c01aac99758fc1ba6c8ac10d2107079f5ac7649e3664387c3c9eaa22cb1ce37ec2f879738ab6090537bd3620a21f9c81bc53ee0e6c9de228ef449ac4b73c8bbc5f234a1b17def05a2e278f0caf6154659325c29a3cfc5ab0fdfbd306e99ce55f8c1891a90781cd274ba8ade01983fbba83d789ae4b1e45d5c5514319603554e442fa0dd64ee4916565725707bc214f2156479d994e2f1a3747ba7ab76b305964f1d2ed336e2559b88285195c0c28fd05944d47c19d0e846e34e72f2a32215826233c583c1c75bef2558b00ddacdc2e613f4fe67e9c34bedd2efb49dd65d5d38de0088e56b0ab269467600f84cb599d9adac5956b31517288c1d3316082ecc1b23bfbc63f0d5b4bde6c44f5bde1280e50bf08baca956ddff22b76b9f6af3ec70c4d3f16276c0cc30837ad0423c41354ae67d939a5f0e2d132fc84c9a330d7d9b4b7b4e2223418387023415cb9e757ba698d5b1862778efbe07cbfeb2b59d87f28211bd6525c3322a06532ed30e047553254cf416703e1c2101dac2e5a73daea94a072730725fe7b34cf073f4584094a60affb832613dc719b4eda7e1bed7f230303620005d5e44de2283922996b8eee748e0d6fcfa2a4a9c320d28a63213f9ddd9c71f536372c8f7283ef4a415f69601bb2055c4f2725e42246bb4f0ef8c721ab054805b9630fe426122967f06e87c8b37c83ede34966999cbad886678bf50050dbb0281897118b4c61207a41141a96a0b0755f67b28d4949261e2e878bad4ed05f8feec72217fd8a106c9f78c98808e46f650e47a768584df490aa63a1c840ffa573d4eb9c84b3e10b3fc43adc5e00b20ea01b590d7da4d0e2f44a57195cd5ec3e279a3ad40507ec16165d6f6909b67b0d8725d0f4567caa560b54e4060e8523e0c921c211b94f22a6e6409af3e340479e9498f9d5cb8e6764e9e53ba67f7ed3584c17c1fd2830f8aa48759bc43b57d15f11c112da128fedc09c89e0052f4b918f88122b6aa9846a61c2c8045942f16c9192239201b14017c63f335f02c7d942218bb9cb002cf0d0fca22e2f6f5ef41644032dea4e811bee2f0cd8646d22faa11c991ed212cacf8286d5a42f6ccb8b0d9d53d6b5de625992cca1fb68c022010ed8a6fc709f4194c1e3c21521e23d9508323092b2374eb1c5ef6b4b519c286661bd84f8dde7ec86ed991b4dfbc236dc92052677dd889fb91638057bb786206093ce112021fd6e0195879dc286492ce14c1741a05067a5c13ab3ed51088cfeb4ab879710b0eb6248c0c6c4a66d68cddc1ddb8471d66a9e69cb597a246c585a65e486d5ebf0459034958bbdc0ac54d82dcdbd1d2c1fb19087c9d922039800263aa1a9c6165e5a1e68a011ca0dd4d254c19cf483095f2e4e67ddccdf9ca75927981d5d1db1ebc14c88474107ca5d99bb0786b996a566bf8a1e9e44a63f224ce3b7ac8b2f4e140fc544bc46d23bc5c22b10109e4c43e1e9627464344222cc88f96a4347bb8a84d77d6c6f8b6ddb6e7b5b6c5d5532c20c30ea72b86568dde3ee98d9929b41ddd35217b05eadfeb8baecb6853ebfbabf51b22dd62bb87ba57d9c858662272d9319097d569f90e5342264e16a927e5ff5d5e5d696b3ddaeb1aadfb979eed93dbfe61787b00bf60c22d1a7c51a445a66b60e9bc9d411d7a0849be75ceadc2df0a69c99e2c89ad2ff5f04d3c1092b55e38a66702f5a0904e09fe5ae9723c921416639e20289487be0bd915f9d47272492c85c7e39603081acaaea23d0b7d3e9796d58dfa706792d1bcc0b7b95fd48077e474ddc048c8cd1ecac68e90935b3a309b25c841f8570681b8096d7db7e06b7e6fb219172a65e2ef2595ee0ae8b8562b25442f8fc5c9d2ec130d13963494aa6433fc89e5586937d08e5e862303ac410ab89ae91ad21ddac976598f1983cda67c78d6b58879630072f7f9a6c358459b19239e8356840f3fa33eeeed4f8eea9e1dda8e1b8e75e8094698636cde8d334659ad1a739fda7b16f5ec4884c3ab088e67755b2009651112c341f9cc9a2a2d399144462fbbc96846822bc3bfd98f8b7abfcb7467a373c1fdabbc0869bb0fa25f7c6fd34dbf69661b2a3989a9f1908753fb6592cc55445e2bfdfd41fa3842de4d2f347cf08ec1c9468855c535ed25459158f2da5aec9e6c93ee12601074f1457ff3923e247a946539488055bcbf2d823187656b3fde8d0529484165f23100c62fbff96c8526e83783a026e018b1dab49ad0b8fd5536b35d53edabe1e3eb90c0de0a7f28f04530e55cbadf45b2c74574c4e10172430b849d6d772656c579453845c155a1f0ec98f74864864c69df9bad88d5a4fb6460db13e430af116b4b9565a3268add4ff7868f59231a2f05fb5310447554156fbe8284086587d8c5331b376604ca8ec53a21dcb4c0e645c0c570a22af3bc33bbc7e43077d4c2af35fb395204624270ead7ab0f50962673b5fa279d9464cb3b6296428c076c1c6243628b81ba4f0844870705be4f6c7c5cde820cb85fd47eaa2d9db0bf1140aaf4211d33124ffd975f7cf2c9d439be27986c9f2a1ebb9a3f94631ebbf6f3ce3ba85aa961823708230e0970c6a16d2aaa4f251d0e282d4b6cfd76285a5415d97cbdd1a1cd6dade655d1732156bf897ba0e9565749c08960ce164f89868082d4d3e1a6b186fded834e74eca2446ece8e26c7fda472f6701eaf1f4734298d7fb0145d6dcf289e269e3673d18a82fda278453a241037b50478f23cd7b85bc8d0eefbeef76a1bb5fb5dbecea791e5e1d714e078ca905937b479839afe7a7b899331e70f3208cf129e2d47bdd458450e9fb69c3c3e18b4c5e8c5fe826d8b62c8a6fa780362e6cfc7b2592ff6a58a6d503ccad4cd8e0ef64769a707c57ae9ce532538afcec0ee274b0c7de1969f96e233a40025f45de094564c46faaa91bd885d3d02ce7f6d0936b8f354acf58849207f435849dd09ecd926469311818dc1e5bebdd636dba5abe1c23fbdbfc35c5d2c5eb6b740503dcd38290a73acd763d7a3f5fc2bd476e348c1de271320a9718a72ab5a63a2696e070b9ea301a68409ffb641acf8837848cd2b1f6aa34aebcc2bb845392e31293055f9fa84cf410aa472d444f02a58639c8d4d41117fb251b2c688a40fe0f0a766630162e8577ae7325c96cd7e28b89ab7f91055902c94a4acbfc21d2f0b2194c5ef55bf6eb732287323929856a20ff0a4a61ea57e05e528a5079880a57544a1968cdda9fc90f62a5e4bff395c8159f75e1ee8671890ecb22932892986fda1d6d5d94837c8ea2de12291cc2c8c8b296a2d5d1270e226405cc8b9faf15910274a90541200a79f90f4b2c08aae4b959cd6e1b345b85ef1d1f6a9409f98daa6f89c47ce6b90fcb2744637579c1ea5fb46a5eb89217af8017b0d28b58e3852cfa6296f6a06dd099fc77acfc61a27c7afe16a92ec1b6e93ed26d1bfc3419451bae30ca3baf7751414aceb00e7d9e175620bdf9abf31fd626218959d30c4942738214d3e4ed9a1e25524d74002fb25813cbbf8e4c387617629e9abe9fed12e39d268a9ef29cb5fbe81c2b0c3ea3af819e1e4ec17a6a0c717a213350bbf47b0153d23153a2e5d9ff937cc03a8438dfb22ec9bdfa16c207330c95c83334765e8905ec359451ca585902afbf58c20cd4c55275dfaf48eb3c2105f099822be60ff6e8abc871bb7790681358b0bde139919a8c65874309ac5400b453e39bf37d0760cc6705b0636dbe507e71657cafe89146f8415689170f7fac46c144122e91db34cf66bf73d31af234f36b5b75016b95c56b775cc7cacaa2359d6eae5d8ed9feb6ab08ae574db2b212b85ea5b76ad9a60fff9c8624c62c3e14e9918db3feb1f0100c5934400b7da0ae920208996ad4b00cb94cf7dd34106394e98c0903fcae0163a8995994cd4d7bc5b4532f1b66e6bdfc5035f44f9b139e2159855b3b8a25145db8ad946778bf4529228ffba45f6e28552e7784633a730fefaf30cf0d2665bc073ae316e44b8cafda87a45bab70efec8c7ed0b749f14d4daa8572c01e70a9861f5a85f801501062dd54bc6db7de7352fad293afc1822b2f6eb6d6ff0d63b12f28a011fa352c215dc247272b9f54e1018aea48fc0bdf1d54a5121990bd2eea7e10b6985bce26f0a6bba00ac944a6ac2e3d2983b7608b0c230542c505afd869e32c1a6c83c87f9ba038da1edd8af5536515194135ca6d21440a42753fc5059767c41bc204d9aa7dd80bae2d931caa846f44783279311eddee938d859f95c9d4491362935b0834d23555875cefebd00a492a80a601e1160408b95f05ce2a4c9553b9066bb1fb3e24b16bb85bb0fc13c94757e7d091ba81db5cb6df06dd8e2e43aa8bebb81da4c0d29a28d01988070955e7ec125fcfc9c60cdaa8a92d75a1426262f796b0c4b9a17d5e13e7e84c55813494b5e0deb22cb4daedeb3da80e7265df78d2ea2a0aeeb19a9a73dd9cf4c856c207314e9d5ac374911e1fd0a51ab47e8a9bb0729c93dd13258f41ffe36f4ec0bd1e7453d81adccf24faca51da906051ec95ec06e6ac27b787142ee2bdab5d7553358ee512a5a2c9885ed841558fc1fb132dfd800a5fd52e8a0cd07bd66064e58ae8301c865d38c39938b2e55e70d58e2fd722669b898dc3d00520e316fb7517b1fdb53b4ff601ac6752fc5fc08e9c258820c2fec2e2e7fb81d9ba66576a0d7185901ffa3394331c0dff527ce10ea1f6d8170e1c14c0f2e198b37b5f93b885fce355c6dbdee6a7816a3334b578ae6b93a940878426d707aed22f5f3b4d8c7341520e64c931903a09ec36135266ac2acf8189d45bebd21d4d3fa632e5d760f5d3069a28f91903d1f3872562240e4d484104c78c4e3186129ff2e2943b9f70295d5ab2dcccfc315d456c555fbf17a157f6aa49bb9a69cb6454a1843d48c300aeb2dbf65ec45c9b62812604a6bf4f30a42abe808d936247f773d66b17083ec7df1325498f2f4a08ded6dc7cdeef078c1e6164b88204fdcffba9293740995b1a8881a1c53eb89c41476832308faebea84269bb13cdf41f73b3dc93b68659b22739af72562357dd8cabcb72f573dab0420ec403f4a5041be84bd293a0afdfb306d097985b1401f465db320af7533e398e488eb31ed29c615ba25fcc3347fc39f010d4f146fc055b0879bceac19760d2216510c1854c2ab6912d5ab94ba3c95c862b6024060fa195f53ed9d9c9fd047490ead1ac86edbdc0a68192e4d1f3dcb410e4ca9e9fadf4a0897a80bf364fb7149e1f7239d746ebe85a47e910095b51cec5e42f8fb4e8889ebf6628fd8f1843bbc501e9ac3c27c16dff9c18be00f322c95ca655446e30638185f029a44d7df85af0a2a41c2b5abf9095d00b4e07bd71b28076f124f5bbd87b7eecadfb68e694786310ef3ce0eb6ccd51d102a22548b20c2acd40bbcb1099141cc5484fd62cd01b96a6007b541e0e8886e4b66298eed69e3c74551efa9192f0a42c341b214232ddd206a0904b4ed2144d2c63b63ba701056809b977e8c36eedfdabff13db39678dd0264bead7781629e3f904b748bdaa117ef1afca46347ee5645c5be53cf2d0eb25b7b52efcc4315d4c34bb937cb2fdcf14f37bb4adde7252aa43c7ff814614294542cb5f65b62867214ee32f8aa785e89063e1e298fd78bcbbb60b08c1b77f771599b14d810ae8b98ff9e3dd400cbb5f96779f5766ed5c130e0cdf6a5dbebab4c0ea3ecfe7fe283fbffaeddde2ce5ec8658792e05e77f222c777c37a9b288106ea7e4263576076c6091c51b6d25ee8c62f5bb56f10d80ea99607f7a4acb3f9856e7f027f80c0add1f9feae524f49ea8d583c27cc406cc81add01942c229743f304e6905944b77698f188ec8708c71a2e8e6ece4786dd2a44be0e597654dc8c3c5d1b9b2998dad39bc85189ecf12a503b7a51bd717ae843b8052dd69e67ea49166f13fde214be528c7ec65743454f23e644738fe615964370137a009c94ccdef0ab5f4445ae82bcf53b0981dc43cd9bafae29853f5165fc6778b03e7adc4cfe5dbf1e56bc8d6c5f449b42c687e07ab4bbb71b2a362406295b59675f3e6a9881c73cfb6c8a246c8dcfbea0fc389a7235dccb1836b643fba23890c59b68dffd34227e1fedab62072b97a3b897c224f26dc3fc6b94418f7bd0ad83217935d7d3be891dfe00a87da5b8b50376a3af216e89061d4c51f3b71db45818e2620c0da8b2796fe3f2369e797151afc93897b8851f78d5d99c9beeb3c6402d6debfab0272431bb5707bd19c33be5769ccd5863d4bc114e74327b4e88483a3b208784178d8d9803a31a674f4811f31144a6dc189af9eadba9af57d4ecb16b68c5b2e7ae71ffe186da851724dbcc15a3768f4f67d5bb2f8ba43654f2c3cffa0388c9fecd72df60dad41833928d16859428e86273dda4cb169eede3b32d67ccb292d1707fbe986dbee5c59df9f371ebe60f71bcdb933519298f9c561116f7a41517a3bbbeb1a2750800acd6caa44d361bdc26bf762ffa5e396f96fcdccfe806ea1de6e04aea798f0f43df1c07dfce3356a599c3458141a59a7290f5566de5496c36d9ddb25a2c2673f782d7ea18cd85005a94a241b6d7985d6395ef5efe398e3e23a2408306a336da23afcfd1e6faa1477b50a4814519445a70641a527f0451d3786441a29ce4f1a19f7edb1146bf3d58b74d5f696f21886df40cca83c361640316ed27ce6d9ead5bce58dc359bf02991c50c86e70c1e0c4c98b02740e2cb65685d1fc39d2ae5a59ab2cb9dae7ecfd4fc8ce5e084501acb8f1321341c0f2786509d33ec2cf712ab565129c71526e89174ce305b357b468890b19a6bf0c8cd739a891c0a15dacb27cc04820952bd6d750d60cb3497846b4d02bdfd3ccda285fc221e9eea93eee9474475b2ed0953a672d39c940ec5385e8ca593946702a02ce350c851db88f6259b6eb4680646a76a851defaec287eaf6a99b264728923576308d2db99b66a6d4d576d6376338d4730c86c933fc3bd33b0842a61a8b9651a9360b5d8b93e6707653e3be116123f21f48ff09cb215a36dd667d0e403948b722ddb6876b2b03423ba61e8a09f2fc99ff418b7d0bb014dd0d3f62c6772e6620a01c7c83daa11f2be6ba086109c22186afe0209a20b570f96a39183a72ef4ed55d54eff1a6fa85cb77f8861ddfab43a46edb2f2874688d69fb50a8da93f880aa56f1a2c4bc433dd50356803aa8cbcec594dbe8babe6cef9fc7b15b183e1884d309fe41fe699078ff6e189698961ce29760eb2aca7288bf59c5994d3e1038610597c4f46c0597d94c44c297b2dd6780dcedffafc0af9a2a99c0e787538a0a704c126a3273aae3a1223d082c6c736ee1381da033ab1af1c237587d41bf908a53745bb10da06fc0da58016cc4c778bc3b33ed3055d71d5b758439bb8d2ff35bf0ffc4090068eb0b43fc10f8bec9644692dea7258571d2909018d5aae63e04fbf0b97c7c6bde2d18cb8c432a7ac0d176032e0ac6e646031dc01236b941b3f87bf74dd0d6ae4318868dc4f165d2ff888c26e192cec510801b3629e9b7ba249fa249d8a1d6fd0dc7287598d93842cf1be399a1b67a8456e7e982807925011bb6c6900cab05cf7bf1ae74ef87004bce5ad0448ee8fd051414a54b40c7252fdce497ef1a7b7005790644ced07115c2ea8772f84aaad860a32b9311f904ec4d246865b6efd656847b93cd62c0a24684dc5747fb42e27915d3f461bcb155ece0a395ad4cb501a62fc96567255b1fcaa6e050d474aed44237027c6a1da92d1a8afe39490860fe01df3de6202f7f12da871e9919677da2cce73e2776680ca3f48e948f0e826fa7a5fd0260bb441e4800829121010752276c171ed72e7149b0a4337da2e53f91a246688b72112340c76cd98c95e6c28fb15c0507839d69908e7248bb810a7737b422f006d3196f6461ded0992a0703a446167b02370512410fa1f8a61d040a02001025311230b82852df387cfc1dadc8f1f0fcf26dd9ce570dadac2bf5e6d0adf9cee80fdba53a6c45183e84ec8bf95b165b08baffb682bbe65305b40c14b74a3698475fa0fa9d7355c694783d208197753d4dd99e39d233b3a3c88293034b2ac75e2824bd8c2ccca587da23bf49cf40415118bfadf99454915d97b46d6a3baaf8c5c2a0dd5df852021121bc23279e2be9b206050f385f483867991038a7c01650e06ffa7501ff64a3e540e27e4e08ab493889655436f6961c892575d5aa99be8a94c776355a225922d7f4f7ec4df06baa2de6cf45ebffa7ebe713d9ba2f769d21c82a1b8e819d2c8a090088fc92635d8cdc9750a2ff7fd860656c01fecf7eae563bdb9a5b209eca6046abde1adf894ff5faa0174f483b2c6ddf84c6388ce784417a98f1d4d96110554c96e89541ad884fb4cd731ff277c816060ad6f8a8b05e763f8e0bb3212ab3e42642d2c8a25f0c58e14007007f8b3f7d61a96cc8deae6be8a272245095ede3f25368f9529c818fe6fed6080fd6c15a737ce2ebda76be458c1309415b4aa044d76bcd9c8f8b9503b18ed1c3145426492e7205bffe9b8900e39b61aae4b48463b6e8b005255ba437ae85df4683f61b20c06838dee836f6745ab97bded880a23038b5b6a7b6971c631b06f7a69d643b7a784e9f814bf3a3899ee781f491d88bc297dbf02c3fd57999bdbda5c79df6a68a91899b4e5a37f63ebbb28a5c44a1a7007c3f9daa6b1d5b253e80f1da828368f3d3c1b57d1d8e6c5f7a9422e7166078232308597a4493f28eeee91c81d55a466e60ba5faf7941f9586e5325da5490f129aa0624ce94c4d5dfc90ababd18d5bb3956ba04bf35a6ca500a029c95bad26885f5aaae23e9777444595bf0852b69d730dc048ad28f41103c39037eecc4fa0e47104096536cadf5f7786f35ab7c5ff513e2eaabaa51f5eb8f0ad5423cb2048d46d4cf8c90e4ca2d4600d5c161f9118f7d809b4229b9b2779699b5644ae8961d48231f5a53b74602b6131a0d7c0dcfad16e47477565f8ca9bbc6da6441ae7f46a97377e3c91f2d201f5f1a97b3eea0b5b55640baf63b27df6a2d630fed14c9daed8effceacc2f662947d976bf728e575193e06e56b0bddd78a73bd530a5dd27eeab5cdf62ebecf6b725ef5f800a9dc88e7cae80b0c2dc59373c5b5268dd13164f03693739853e971182b57415b16f75bd4a96de1a46df7db5e6b9d8b4d9d9b9c7d827c804a1755a2657a6eec11cf95d188e7cac8679e525cee7c2d3aa32f239d110c239d1189947a31a9f973bfcb5bd40e894422f900fdf43897e9b9cc31d728d14a2c87d6c2b2275cf7b9179ded1a33b7fab96bfda050251f9b2a9502b082f45adf67fc48e37ceebac919b2936e651767fbf8ac3e7b617c3b604a3fa8d0a05b1dd9bbc1f8dc6beeb872b5ccb8be45295b1289391e5278eff6d3d987eed2e526e7d434d5c5d00c05688bae59c3daf1a95ba94af1573d291aa0db0153228382a491d7fd76e7a490727526e752f35bfd5cf64e905fe9f30bffd91bdf193539ff095522834a85813a2630fb2275dd2b36af6b9a9cc9a052614aac650212d646e373ec3ac3e64c4dcecd24209bd5182fadf5bee7ffcce4fc6352cfed239e2b2317463a239e118f9651fd2f6466976843047edde7142eeec51ebb66722e39d71f53223353ee76c094ba8c224fb737bab3b3cc6e999c573f978509a25f453547ab834acced8029f99400676c9341beb13ee81a89442275bb24746b1cbd63f4c79c2d767031e9678c8f0f49ba481dbf6bb42ec71ca3c979c473654422ad7e2e89f429541df16819954e3d252054ca3a4bad80d8a750b5ed8029cd1152255550aa5472404e05207045842ee101a50884e020b003988406c0bb0a620097de542a5555cf4f080bb05f7aae152042024a29d46a86f0417b0f404019149995080778aea57429c700132880aa010468142ae58001a02000113ce0d287694007ac0a21006c02070d440200704e0f043443b829337f2020e212caa714e6d413260ccaa701362533b0a6ccb740c3a530a5d2aaccc710023431000d16a1f9514d3224104208fdcf3c890ce0c9191e84fca0c30d174232c4405221050a8c4a2061841c0888f080104070400318b0000524e003041c408a010a40009a17d0681292d28219a15088c603355f7810f2630e285c6881233b647899620328aeca0d032040c78d0ecaf001cbcd991b8040943367ce8c120a856a0ee1e009190439d310a9e11116e070400ed78e12eac061025b9850452811892a002047126fe4d0a07486064c78714614433e3973e68c2833d420ea200e09b470a60627061f3821c2179de4d1a389199c70116d470f00b8644a16305cc0454f83e0cc0c5e70e58c283a343873e6cc0dd060030431d218813075780f045707a0104e7becb0420d56a2d468a100330299d24702c87cc2091d8fa41144216050589b3c10cc30612f31c02646541242c9862b24a070050f1f70102da28705fad824902b2310208f273629810229e0801ea147e888020930296812ca03c18c13754c91428018a440092384688304112048255fac60093d40d8a20e0c9871c9218660a9429108609108153550f942cc0db2fca0091c9eecb086964a18b1c2c10c4828801ba1dc4c4298640a4c7240a3902d61dcc0462070a8e00418587189050631c1024878a28f9e9214727450040200c041155de26880224f000a04f1023b4449021115c0b0e176a010113cc00481e4249182952265acc081132710b333824d54b08015e881821441fce08321658001268c02a4c08345a4b801104464e08f0798d9e1a2c60f320881146ba0204a030cd00203a00955fed800f5a642c5082c20a187068a6861851a721803872c4cf041253f1748803d62ca0794c8808b248e406102630020341184120618c5a00407776911440a28704282973e628c459618002094201124f960800c729ea726e1820d28409c8a382406443830070146405387205dd40044a58d448e00a18a1cd220c10a0408190311426c00a104091e64c04300189132b050c40a82e00020aa0ae051268d15de482488115852c7a8912b4fb8a007311d0c21849741427d8316ea008d097002002c28408117369c917293c8071d48f1c42728e0f30241929002871200c1c205507032832d7ea45cf14425520432091a599869e108391a50850a613251e28c29b828220f272ab9e2a3a58a3916e9608c256404c004a24d3a8104022d84b6002b0ea091824914c2922c6000a18c39746050a3114b0606233839e200788459887ce1891b9e8c4448e3cc286f783973260468a441630a9dc2f4f8cc50a8264ccdbde4901fde5209e554a0732290737a9fd3fb3843ca8c61c1934e60c0028ad013520ab9424a21393008d1bc8026053477d08880102011162de400cd5a22f32751212e749132c8168c49ac42fd313e3ef3473539a8d1a1140af9a452b2a27c7c5c08854227844200c8a2260339843c0001e74a11c42445102da9af29179eeb19a64c09c48aa0295302a9728914402c51e153a8aa02adb2ea4991b1f353ed05f59829252015203e00f203080e27e44cc94921678a097f5c02a4e22183d229c1a0fa5f543d402ea87a806698930fd04f8f1f7260b980143f3a08852cf03da9550948c5d3c7965048facc8ad272caf26506d44eca4e2a7652d1e9a232ad523d542695f7992b2f9f0a5a0559f1f1993a287beab9392bd44927cca9e714a64745b2aa0af490725641342705d5a4d3274735c99856a91e9a33734e397652d30964cc4ca01cd42ae794a5864b2854b3130ad56cd102432834533f53d239e79c73adb5d65a6bad31c618638c31d6ddddddddcdccccccccbc7af5ead5ab57af5ebd7a758c31c618638c104208218410babbbbbbbbbff7de7befbde79c73ce39e75c6badb5d65a6b8c31c618638c757777777733333333afb5d65a6badc531c618638c31420821841042e8eeeeeeeefede7befbdf79e73ce39e79c73adb5d65a6bad31c618638c31d6ddddddddcdcccccccc8b23f4e71a6bfec912b2818e41b08442355742a11a2b3532647de67b49c560c6e7c4e52d6a4bea4d2b2e5365abf42255134b0e124c162fa52ab20a179d1d59eac2a54b1759925a66a8c2654ba90617b64c95ad9f524d9912d9b9b6bf9a6126102a05a4654c0b61264f0c30a8859f5f650983f2b159fed413e6243f10461c92844271407f358d59a0fe1795998761d5636d963fa176dc18e404136a50a8392114aa31a1660266b491870422b03acd53cf4f4faaaa7a6cce4fd029a55201a9bec05045e53357f38a41b59093c25c4dcb46ea344ba52953543c2d9c609b05a90148285482143552088539f59854d3b4428da8c626140ad51e1f2f3fa8941533299e50a8a6a68626143ac1042969e8402291a4a041494de8cc28a0d08872039a5040b101289e8442349ed020146a67946838a199811433bc84b23c90191e330f432d01a99a856abc98616306cd092412c9841cd9450a19779456a8d3165a5aa14e34a1313409d1924a3581eabc2a6482492864c6e7533faa4926c705a110cd252d18c304d81cc4458c1f563d1436975462e0f8f8f4d0d4c7a02aa51e68ca14d83c83fd323d5638a823140a05119202861fa15068ca949c9c14ea8621552952c97e999ebb82aa04a43a13001b33686a3040d3088d096808a1f983260c2fe850a548767eea005e6020a44a91503d95844234944c120aedcc9d7bea51e19e7a6a0ae0414d4d28349f746181904fd0a98b51171f8442211db8e824c405235cfc110a8580ccacb810430a175948c14513a150e8849c2929a46002173d5ce870fa09f241d59c9c3ff504d54f5d946afefca06acf4cadcabc29678641a55241aa3fa17c4eb8a71e1556a0404e0a95b333777256a83026e4fcaae7d4737354bf4205f190335fcc14332fe6042bbc56100e2aacb556100e26e4f8a0742001881c52d0618a0e39f577a0a89c536a02e5bc4f8f894c8e152e520b2242a1d00927134aa969aa25550fe9fa3c01701c90c50752b05042121644120ad140120ad1ace091100ea1a0d40d3aad6890102c1884932332f9e30b21d4f00102165063c58418f34725819400c50942509922c3890814d421c40050008112d1135004d108cf24211c924a411060a0c1e5050cdc2049103f8fc08046680a9b209c120b28110ada22089b104489587ce206108550f1070e2734a105882bc8e0b831020b1d0051a510938703aca800102bc4a0c68562931afc00ca00bed0a1eac48f1f48d0411a7df08102fc010a0e961063088f0d7eb0a10c2a56189084273f8c8e28a48b1e704a3ec8408c076f8402b5f8504715488aa08013567c38c2c6929a255840c487180cc9c44db1c2111f1c60891ce1131b32d0432547884048e18a103dbce1ef87127cbe071f36c0840e700d540f560250812154a0a1891ea47c7183cb841a406654d0fce8804c0f5bcc900185171590e20f16cca406a0650533be60331690040142ac181166000002954170f084a60c223f38a0173210a60c17532811071a6b8c3261ce9872020f277494e917fc318201f60085cc285930d05ad0050e64fe9882051f9a04e1069929e8075bdcd1122053b2e15121942280c89860c8980dacb00598319ca080026034014402c6e0a107243bf430ed18b344984a60f0c7ce0a6378bc8850c3172d343126874a106b68198591204c6c4491e483403609fa8021a3ec90e1208fa021c8780fa4f80913f442188a4012431b1e042580cb2342a8f0b0c08a050278a3f7385357695cd1002626b8a28b55102285ccb0ea81012b17827878c4933f3e58791083103a40031948a818a9619234cc7411a93c10c91c24f8b13a44e593c51da2148f06544f9275c80d630851d5ec38a1faa1e4418a90177cc8c4069c46ca8a13204b50d1c912298a07003ca0e389222915464969e1c5265e78f864943d14d0002754c0031fdd56d0432393f0c08139ea10250a1bc4f05083142bb00b1f7ce1a1043322a047e81129403150a1b46854b8002804274820017ca0c10364444e2655b65042072806a006f0218221fec0410814255b7480901f050c82720308c9c3e8002ca07aa01cc8815304152809c21414c46c3106650049a88081088048e1e4886804206c3021398db1450bac084503429c7878a10b24370883c5a9026888c054483d71c219e18d3d98d843003f2600fad982470176483189253ff78c3400a1c225939f1ee1cb142d5425f8885253021435a0c37dfce8c3470a28eac802fa61029f1c3e90031f1c1000113e13e02388e7010b4e0c27358264006551103302314acc2004b7183bc47821734527267c596276b824131a7884131dec10470c9a0a2e06073b0851490e161b70543b64d9e1831e36a8fcf145003d91f06cc0f44515467ad0c8816400844cd9a467d5020634d20805d383013a2251438d9d367a3ad0234c0f6bbcf086699130478472c722604c1e80401774942a584c624c2e130e5208848a464c344a2442030764101066100288b04919a34cc274800738c068f28025c2cc4e38d046092f281226853a80a8e4a60a12d79350acc064072ee0dd834202033bdc00e53ab1c3194a4a1a78e2d2a0c42073c05188002e0989305283273c60e1610081118009a2cc7c3a1af00960502ef922ae1861804efcd0e4774e90c80e8fea8367c01a4127d07942c74e72c727913c013cdb46076cb82288e48b35233fe8b2e22863ab5803a4e03e39c1e4454541245f6aa0828151aa187194b1a24598ae404f4c21a68d23f4a85384e8222b01c3907ad3663826978c410fa15a9020c2994a428ad0ff40255818113a83f20ce58f443e89a30960f6314527852770606446f187bbe30240949938743225b087221140dd800f1d66e0c618618315353adca143123b6a909298c01b3a7419e3cb06bce8d2890e0f5884062908085e506ac123908809406993521c0ba8240653e29840298826c260400e99a44a588088304389086e286500122c3328a005340891813370d0281382030c9281d5cd0c2ae8e0082319c0400602f0c50f8e24f300392832040d500e0704e5f0c55543851cd820410e3bb01009962a28f9c9a1d1904348102044605099c12110481c80c901badc8043154260b1c305477ec061f61755149265e140812d37786283c32573e4b070831e5bbce0850496587143132ae884a0021d3471c3971b4800a3490ae8cd0d2a740106040900c17f180501868806b305cc02c0d084041f7c71011b24b1810d1bcad8a0a3870d0470359ca086306a40d510c5d4208a010d873441031691d06087a0617db1c19712bcb0aef441c5285fa2f872c301be4460905158702720c00c9b0009622980800bcc60c70c487489810a7460001833c8e008270a88c3ca2533f058a202069c40e904071e38b2ac11012af8008207089e2ba60dc811b54480e700750420073f8044f0f2882741f40471542f6570f1a212809716d868828d19cc35bc7030ea92c803ba78d1a5a74beb129201901e64a0e20f1974f89101851b68e6b899c187186810431e3130518a61861846c0824b265ce65000170d70d1c26547921d3504b04386851d2a7667005b1ad902c696d31648832d36a99e24ee8c428b210f081a03680b10b45ca1a56a59010650602001026080e20c18c0b800c3a8901764f0421d2f1cf1820c2010a00441d82c5ec852892acb1b3864f9218b952c5ab0a8c00c16322696540bb0b0300616005c41e44a17574c935c615646b1f28795291660a564e5044c6427320fb9448de47132278a2a985491a3ca105560a8a2c3029d3474c6e8b8a023002a8c500183ca0f15a752f34529871042de8a468ca80738c405921143d460073e947802033660607401198442a166418b94c209c5811474e0a012294ea461d7dbd4ab563db5c707a8ccff049d1e68fe7c7d20332b327f5af59c829c1885729ce06055676a9a6a1397e890b33af5a0060985423ae4a43eccaf4e3d4dd8d1041c3ae810e63443219a4642211a4642219a45140979094121a5899c14980d5c615a4da015ccac081144d5e527ccab724cab0994e3e3e3c29429a110cd2082844225a49818628943ae8060841b3e963080124049883efda6375b433ef716b2c7b4d977d75343ce1adf8bed6c5dd73de634647d71f24f5ae34243aeefe8dc5cf541c76cdb199221b36e91e7c7beab5212a9fe18e743d498212184f6bf5aaf6ca14fa632d219b9308a41cba83d950fd04f4f504d19b2390b17bdf1d9f95a7d8f0c191bb7eadc6275be6dbeb5188c9a31646ddcb84dea0f19528fab1e55cf9838e2b9b2ea51f57cb13edf63a55422919e44aa4222bd25914a9166921a31a477b3fb9bb3617d5abd9048a957bd30a45d6fadad5f59473899bf2cc8bea80143365ccc7984cca9bb152e9373ebb42f6e35376a3c20d9d16929acf5cd691b7526e79ea2e60be99a21a4cd274f8fecb115355ec80abf9db16338dd7b169a9cdd09e5a3e3d37c074ca9a7a60b39ed6c6e6fddbe9d0b3a93730965591a355cc8ebfabdbdd56f5bb5c1fe924255124905b1a8d942d6cbf74e1669b58c9f7b5f52a85bf2a96f49a41290ca99074fd46821677cebf2436adbce2fb17e5c46ced5ac4222ed8029d164519385a4d6ef7d77315ad388e70a89a4128342991873143558c83769e5c6f0ae7bed83f30a49d97d115af605fdb90757a71f239d8a1a2b24d7f58b2753c7cfd5b57ea2a603d2eb836f51372b7c8fbefbe0143555f03b5eadddbd367c26e7544f89d9335043859cb17ab7b8e6e25e93adc9d90c2d75dfd30c2492650fd44c215ded7eadf564f42dbad8e40cdf874e0877c0947aa891a2d9f9fdacd74b2da5ed7d2a4885f2a925d83fa8d46da9f7f1993a3fa89415126995fa312754e5a639a4260ad98cb2586383adad7a693f9099551cf15c19a1ee8944821da88142da6e772ededb903ac66c725e7d1896a5f4577cdecb8a3b604a646a9e90f1d546e183d45ab8de4d93f39def53b2a7197b67c4738544fafaf5843a91563a24124945228d62e8321ac560c68b992d24d20c24128a0ccf8b993e54b09048a9b7f34d2412496744228d78ae8c4caa89e5b916336b7d1848241269c4a36534e2d1f2ed8e77c09404b0821a0ec8b7e65dfdee8bee7574373997561fc651f79465f557482412e9c51d30259a266a9c90deaec2ebe05cad1f74cee4dc54ff561aef8029d1e051d3446397a3d3f9965bcd067c7d63f53d779021bbc9f9b9d40a8809c9ecedd99145a6cb4ec79e6b2c24d24867d42c68c4a36544229148dd4b30b3b1ffd975bdf1b4d4e4291289445a9c5a01d18851a3c462765aeaa0a390b1d9cbe43cb21e34fae931a9c68ca8078dbe9e50ab7d3d71395979ab9a246063bd9663e7edb50559ecfee5ab355c6cd98fcee4bc0afa29f9f8cc0a57415b4e561c5401a1bad42021d93e9cd0fa73155abf24d25b128987db0e9892959a2324e55fcbddb9ba329ecf46c867d3e79cb7c6d5ff1c3439af4e3da6d2f7d0a32a4232b31efffe8293df6d0d1132da667b3e63ce9a9c51ab2f6a34206365752dbf74bdd862633543487e7d1d3e8ed67eabb5999c9fcf249152a85b854422916289bb77c09468b8a0392361ad6cf2f3ea2d367f33f90c272ecda7a0d209c5b827bec778074c69079a51e46aadf28b6bb616fdb93539bf0bd088227bd93b27e57ed057bdf10632467a218d7536fa682f6772b625c6ffaed0842279d9f6ac7a3ff55ed3a14ea5920d24bbf7d4c21aef64b3df832297f57f97d9635be3bf1ac86bbb35fb099b57f8ed13c9de2d572b7fe5c768574f2464ca985bdc3a5ae793d240767fa41e5b5bfc8db6d889640ad9ebd66e8bb73f424ee4b36d90fbf55a2f363a03e9ff1c6d1a59bceebef636916d9b33f6e09cced6eb2603d9ab9dbdeb796ceff71848a7d72de89c9b65f78cc14046ebb55d4a976d91d6d62f9077aedbfdbdd8ab8dae895cb1be58993fa697726393f3e97d4af5c744762533ab9ed4048256683291eded72bbcbb1eb19edc544327eee3d668dc1dacc5e174807698db4b18d932ba5f712f96dd268e14746a95bf3b640faa4d16bd7bb6c6be8d712e9ccd956782374ed35bf95c86523dbcaf32ef88db64b897c672d5f486becf7acdd49249d76dd9fccf2cf7f7625912e564bedaa11b68ef09f05b236778b694ff7f47afd4864ec656fac8f79d309e343221f3ec72e8517c6d758fc15c85ef4fdbbd17673adee1f91f4fd82ab39a56d1bf7ab405e1839aeb5ecea3917b58ec8199bed87f0f9f3db685320e7e2768dc2f89eef748b02d9f3425ed7dbbdb0d9b327900bfaeb67ec6c748f9b6d44deeab43573b72d23123af7cee3bdacf5bfb68b488f6e7e7dac3d67dab72a2217850da973f42eeab5d644e4728ddfdb5f18598db522222137d6a2836fed626e5613c877e98b1e1fa40e5783f510e993dfbb16ce48d9825e0d9130424621372f582363b510c98cbdf8fcecd657675742a47591b98dd0ad8df73e1d44de55ed7c3e9b7d9679524164bbecbd65596d8f35421a888495c1b633b6ba587348019196d15b2f75669da5eee81fd219745c616b3172bf46fd90bf28eb5f0eddac9431da875cccddaa8d7e1f3fd7b40412ae5ff476ac90c5cbee2481fcd6feb73dbb94faad930f09215bb5315b6bc3f8e8dc43ae6b21b376ad59d7d338f5909399d9659d33b8ee83330f79ef7a35d2fadc279d6fe2215784fcd45218f97ef31c81acaf39baf54bbd3df6f10e69a3a31576fb82775e1a4520ddea09df7e7bb3a3a3d10ec96c356ef5f9b4b5de19eb90cbc676296bf33abe71c61048c6915b8d1376a5be62a443aeb7ea6ad335e7670b230824a5d3be5a99dfcbd6bd3887a46bb57718bfd6f6a28b72c8d7169c1e197ccf16b7f801491fbdefbfe78bd15516e3902bcee937568eb6f9bc100e396f77adedd646adbb876fc8e5eed0b5d8afb2e5876ec8e98dc1fef516ffba15b62169db6e679fdf9aaf56c8866477676d352ef85d69856bc86b1dc61b5b9dd39951a8866c11badbf5f55b90b509d390cb797bb13ef676b4328886e4babadd15296dceeaf533e474d0ff52caffaf52eb66c8d8e0ecc60edf7556a99721e9f2dadc9efec308a79321df17cfb57e4e3ba14f1f43b666637defdec7ea6cd3c59095abb775e78db7e39a1e86b4ce9cfef3e6f13ebb83211f327ef3dde616d3dadc0312461bab83cfb163b332ff42d6751fb5d5759bcbe1722fe4aaae9b755da1730edad7858496b56799d97221d99ba3d175b308a78d5b48379f51f8182ffbbc6a2159c78fb63dc83fe784594817ed72eef972bc9862219f42ebf46f74916df32b6473d70b9bbefbcdbe1532c265d73336bd5d5baf03d23587bdd8ede7ba6ebf2a64a3d3df36eaf0f685970ae91f27acebd9a7dd3e858cb039f76c45bbf89795423e7ece17bbd5457a6f14b2d17669fd793bbaf6150ad90f360b173b7486943e21392ef8188cb7db3233c70119bbcdc6334286d0dd77425e58d9b1bbd8745fab36219d63accd6f3e5debbb01e95c7d2b36e7ae738d940969a7b5915257af6b902e21bbdda2d03ac81cf39e4ac85a57adfcce636c11be24a4e3f89876b314ba491d1292bd33f7ec2dca6865ec08d9d6bbefb6191bb5b7ae6684ac31d618ffe19ad5312d42cef6dc5e6b646bd99c44c805dbbadcd3bd7b9d831a90bdee6d5fadc7c65a7d8c6608e995ba0b19b3b1effd2684fcb7227bcb525ff6de20647bdaacf99acda67b032179326d169f7bdff1fe201fabf0bde3a5907d64e683b4eebe7faf7a63eb660ff231e895cee86afcd7ae19192fb45e9d5d74dd5acbc8d9dc8c6cab7bee2da764247dadcdc9d3f18cafc53192ffef7b8cadf9ae7690bc77351a575daedd65b89297c1d66843789ffdb94ace4a9dfba393d77b2959e773fbdef962af511e24cf5f8fdb2fe88f9d03921f9b7bfbaf35bbe50c259dffa5ceacd1366feb93a4f13dd7eca231f69bab7f243b7cd6dfad9d577e1fc9acbdf159a5f5f94d2a46dacae85b6d597f34c21d24edf8f73aca566de6ba47727d8633d2bbb8b1c826697fd578af85f6b16a178791fc1ad7d89c17a4165e69e95bc81c9dcdecfc2f575f7eb3b97d6fd6b756d2151dc3b7ecdb79d32ab94edbecdb499d6d742aa15daed2bad6adeef99bf223c75b2f7cec0fafd341b6dad75e461f85f01797e4728fd6fbaab371b2cf8064b332e75833afbb782d93b395118f9691cad99516ef802955c94132d8cce66dabb1e8912b0ed2be5dedfddacbae438f374817abb3da0c76bd7cbb819170bebbab2fb5d5329ecc06591bdaafb0b96ed0b56393f37f6a55621ef15c7920333cddd85453f355348bd420694f87cebbe162ddd8a441fe8c2fdefba03bfb77343997c68881cf912fb236d62283afd5dbb1fecf201ba4cc4db756ab8fc57793f31831a5165dd710c2231bbb6c577dcf5a67d1bd17e9a6afcbd1cec9ad1ddb2ef2dd5ffcd65ef6d79b9d32c8eaabaefebe6cdd66678c4132750db2dad81d84ff5c646c36d2ea966dd65d5b7047f6738591baf8a873e6b745ce39dd8cecb29f91dacbb4c8c87e39bbdddebd3a619b9c4daa20a0f8683c814176bbb7d5d9b4cd07ef652fc86fcc95b538a15f77bf4dce25948539649116b22f1ad7bcaeb5371f8bb4d6297471c5d9f575b326e777afc8f7d4d616e97c7f7039b522db9baecde648ddbbcb6d725eddf729f9cc5fa94a627c82a8e311cf151e2da355995f9d503a614e3df1a5848eb18670752fbe0cbf8a64ea62dfd6e8bc6eb66975646c91c2c795ba066f5c5464adcd35379d367673baea82e4da9e5556d9aec92cb51890dfeddebec7ced159a61790f31bf35dffb87eec4d87ac197e7b53f42222644ef60c2973778cb755f3f162ff413488648db6b3d5b54b5b6c564dce2997412408331b6bb4ab61740b595c6e880291edbe1f9ceb7afd6b612d9d5025b7aa0fa43a652191ac0fca14b9060a1120d6df5d753d3abb7b4d9333269148a45e43f48774d5b5f8e0aaf132f6f54dceabb90adaf2ac0fcad4de87f68439055db823f243b2559ffbd795af8d8d691fb2eb5d74befb9149202a81aceeadc66edc6cd6dbde350958cff5a04f18e3623f9b446a4c88f8908d55b6dcfb75fda2fd892eec213bb6e9966bb73827b3a587bc95426ef0bbdef9ecfa2b4479c84567ed389b57bfd79c7621c243c2e8aebba5fd70bd789fc9198e78ae541289448a6ca632ae29423402f95c9cd6aee858b3ad3d9d597487acb4d9d2093dce760eab10894032bfd818aeeb6f555617b3c80e77e78cd762b6dc628c3dd6b4c1e95c6b773adb8dab0d11d521d9b58b3d9df3d90bb945e6123b36442190ce3573d15ecb9a715d223a64adb56b6cf13e7ec8f49598e5210281b46d2e072f5cd05d36292c31d7219a4332e467e182eb1b73891f1c223964bb0d6f6ccada7a56e9b425c8a957b125fa80ecebabdd667bddae8eb9280e69edad94c6daa2b52e68c433a22ea89f4a0487b4343678575cb5ced5f4be217db617a3f5ebda64f6ac85c110b921993b3b165bbd6badeba61543d4867cb5cd7ed71e2ed7b41d9591ce68c4a3654422914825768ee710b121db726efebd364e3799a38b4bfc7ca9215a43460a99e3ea5e9f99ae2652433667b45dfb6e97b5d4469373e311cf951189b468ac10a521d99df0ae7eacb5fa6f7bb1080d10446798517280a80c15446494c61041240608a23044604840e40114445f9020f2a2d40051171410713101d116101069b182280b124458944a105d311259d1810588aab880888a3a453485140e1045c10011144fccd497401071400491134d9420da0005444ca0205aa2454a30511225248e48852032a288ff5b428988d04029473444e9013667206033ca0836a29446b0b941890236a1d820c706941a9442b0f9c493106c68509262d30927331080cd2672da79576ce8fcd55687ab0f03473c57a8549141f4c1260632427ede765a16e974ec6d606067f3cf5e8d79d17e9301d9bca06d34918ece6bedbd70cebfb7a14d26723ec8ae3dcfca6b7eac8cc39c7ac4446783896cec2f5f66dd8d4c1b47937353c3c605d22ea7d59d636dfa581f542dc130a71e3128142da9feb14e6c2e917351aecbd9c9dca5ecc1356c5a20bdb9ad96bef89af5d6cee4ccdc62d63b604a3469d8582223b305eb8cb7d2f9d6af4d25d2d5c7f7c2e916bc3fbd999c29918fbe7f3f996b96da77d7e40c2791d45b85de1ef674afbe353973c3c04612491f6dd7db396fcbcddb2667c7c48605f2b65d8bb507fd2d66dd266766894d2492daf9cd75bc74c6fff55a5a7faeb1669dd192ef0314c4338a41cb08566203899cb1ced5de83ec9d354393f3ea336c5620eb728fba47e7a2d3fead26e73786cd23f2badbb65f64efadf7a20a6683932e7ecaeae437dbe46c4b8e878d2312520717c706ad3f765d9b9cb5b00b629302d99e7b77bb294748db9b266777e2a2e3e3e3c2486734d219e98c463aa3118f96916c8b1ddba0404618175feb75adf8ed9ac9f99d405a57a3bf7add46e7b46f23368c487be14f4a69752fde7ad71d368bc87e7761a34ee1abd655d75c624853888d22d2b5d518646c2197f80f9b44e4b3ec9642fb2abbacdf3597987b7133628388fcbe6efb594b21b7182b9691cee8ca48478e74465574a00964846c2eba5e5cfefa3e1fe98c74463a231758e3386c0e9134d21959333b991f7cfadc8f8d21d2b665abb53556079b7f21f5b1599bfe6d7aedf4d808891136b79e377bd0397b84cc55b71a74ac9f6debd3e4cca3859d089b41a4dbcb4c59e47821a45d4b66522be8848d20b2197c86eebcd2bf9195f95397d529c8e4a5f6bc256c0291ff62acf6bdf68cc5f5d7e46c7d50370b899442ad66ea573d3aa32c231e2d23a0b98544029a3f24922af52ba06927a917032227db59bfcd19abadccef0f09996d8473d97794f1b37ec8d7d77d43c8e674f661ec433abbee8d8eae6b615c5e4b20ff713bdb8fdf5deec24802495bcffffb1c271fd2fd75ad91765beeb97b0f49efaf8e6cb5d9609b0fea21178db73a0adf7dee19f33c2474ece96268233fd7a0e321e1d7b7f55187b5dae56b04b2d9e991717c77e7b47f877c6abf6f6c95e3b2d74e11c8e5cdb67dabda16ebb2cf0ec9cea26dedb68ebf1abfd209d5e39a8a4d1df25eba665df441ffeb609bbcf46152ffb3789542a99a63362190f15e66a3476779fec34b87fc792d8c8c71bc117a7d10c8f69ce3c9bc3ebdcbf5cf21db32b76a7373adb6bcad1cf2beea58476adb5c1c1dfd80e466ad757cdb3bb2a7330ef97deb4fe891deb7e28570486bfd7bc26a1983ad217c43f6b2ec2137c7e662f8cd0dd99a63962d3a676b433adbfe2683ce75857c191bd236eb1532e50a7f3af71af2d55f91c1086de4b6ae8684fe1a2f072fbbd72b5b3a3669c8eb9431fb3e467f48ef45433264fd3e7bc2f796b57f866c6615f6e5f7f50fbb9a219b9bbf5a6c76b5edb56819b239766b5ebd27b79d64c8f78715328c96527ee663c866a7a3b5461757850f3a31248d0cdbbc6bdeaeb0170b43bef66a85773acb3660acdb1e8d8cab655bdf73361e908e7d8bf3ed7b8dfe7dbf90b5c6a797dd6eb7a1e3e98564f83e29c3e69ce517611712c6ffdb1683f051482317727957faa8f5f873d6765b48da98bd97739063ac550b39e17a8e46f6a0f53767cb42dac8937ec3d79e5d745838f435dbb9b3b942c65a5b644be36af769b366e661708e586cac880dfeab317673cb365a5530129b0eac8f1f5b5dd1dae92273ee119b2a983b389bc7e9eeadcd8ed850d1f0f173f135e72dc266af31b365d7df6b630cc6d6506033856cafcee7608d6e3d8e7ca590ede0fc075b7d76b63e0ae92f5aef45dbbfeb3f2d14f2ae7be1aaed2eb34dfd09c995b1aeee5ebad81bab1c90adb6770b2d7413f2ede9848495b5fbe65bb8dad66f42423b69f3e51a7cfd6ee306e4b3ae4dcb91b9b146ab3321fbc66ef7a3750d3e5c6e0909df6b145a6a191e61a384643eefcf3823f4afecd4e46c4fbf2a233d099b24a47595729cf5bd7376ed4542ba0a5dbb8c72a5f157bc47c8dad031e8fcee7591fd1b212b6de8d469b48f79b12d42bed53f2f7bf7be8bd056222474f1ebb52dde7f3072b5d180b411de67fc0d239b4ca7cd107276740fc2ea62378f6f9e91f12bbdd57ffab375ad388ae46a3ff6ad10c2bbec7ca248f6ef3a067d41e69eb33790ee29cf682f8c7edbab0b45ba65fffe8aac3576f7391b48bb98997bfd680345f67d8db5586fbb6ef7b11a48f6da1cdaf5faed4fee4f6475d567832dba79a3b30e06b527b22f3ffbecb2e920644a4dce40a8946d239e2b232054aa0a8904844a59124905845abe03a6646b6820e39bcfdfe1a2b65ed8b31367ca62adb1df6be744fab2f3fd7cacd9d856bf19c89f8e2db3f8946fb3ae3791f6725dd5bae92c5b1f97c9b9e4e333bd645a01bd7d6f074ca94c8d0ce464d539f3bab1e7fb0bdd8b815c9035abd1176bd1b67a4dcecc1f26357948d0a9e82ae86764a5cb88d6c0405e4ba1758bc67e26e72c239d11cf2acb0f2a65a53e90171269b11a352f900d2b6c0ba1d7eaeb1b9a9cadf3e3fa6398d34472a3d4b1199bb3bfb6ae06b703a604a62613550d26afb148638b97a33bae26e7189a05b910d4b880495ed45c22d7adcd566b61b4fee8b2d265d402e95ce3e54e9f5ad8dcaa25923164af2effe5cdb9c64a649cabdeda6fdddbc71ea3443a0beb6cfc1c6dd617f324b2d2f928bdb535b62e8bdd458d24d2c1f6d3ddcb9e7b6b8e05d2d566bb329cfeedf6b291c88e8b797dd3d6062774141239ed626f5e3c9d619d6c0592dd48eb6beb2e85b5cdb5ba8c74464b86510c5a46ee03f4d3532a3da6d1a2e611f996651867735b186f9c26e747488d0aa43bcb8f32fbbfe2dbba4cce665e8c2d799b54138b49354d5abe27c5a365c4a365d485444a7d8a44a2d6117921b596cdf7ecabc17b53205feb78dfdd09a76daedde4fc62e6aa59a00605f2ed7dad35b7ef6cbf9e40baca6c1bdb86cd594b1b913476747f79f5aaefdd6544b6e6ebadf6c891d9457f11d95ecffb9e63f870d9a9886cec3ecfe518747e1bab89487863fd76d1ef5bcfade93b604aa71a44e4adf5bd9baec1f7b6939a4036e622a56cd17988e4c798af65db6237b6a386c8e85f9973d159b698ba5988f43bbbad7338eddbca08911732ab6c4ec70feb0f225dbbdcac75f463fdda501009a3ad97e764d8d69bd40391d5b1e9a8b50bf6fb7e4024db5efffc587775f6fd219fbec7b539f63e56e79e1f927b397ad75b8eb5bbf6211f5a76d6c5e598df195d09e49dd4d5f8cd566a29ac2490b69bad1132381f6b2cf221237b7e6de507f931b6da1ef2fe8c9639ecd56eebd57ac8cb6c7dd6a86df5ad57390ff91cc6e7ed4d5fb55eb7a057a0068f572d6c362ef71652cbd87a3b604aa99a11b0e6e8ef45666f17dd833ed4dc2121d37e769e775ad65304b25a6ef5cd66296cfcecb543c68fcb31f89e992fb775c8a6d0b68d5ded2f77684320976548ed5ad17db1c72a1d9263db56dd7a6c2ebe078184acf9a4d53e8bf79b9d433ae6ee625a6f6b4f67f432282a2492fd3228ea44d4c821d9acfc8c3947dd45aff30392d2d90ec6d6608c4346f69acefb18b33fff211cd2dacbd8de179d5f081dbe21995d07637c1dd9bd7173433eb3cec19e0f466746591b92ddb5f33185900de997eb6acdfb05a8d5290b4f81b38784abab5b4fdb2fb7e756ea3b70f490f3453baf6df42e6777ad3c645bf8187cfce2bbbbef35d6070e1ef2323afbbadb6ad745f996797bd2690e01ce0870ee90aec17f906da471d9da5704b251a78b7974f6b97f5e2667330f430a65c5ea346b8163877cfa5c7fc7d9f846476b1dd2a963914d67eb6aeba36331a926169d11962d56ba8c98b187a067bc6d2ddbb6218d9f9ab4b4fa302db6b76a091c3a24e46fd6b2dbbebd07dd77810382f7da1dc2fbebf6d37773f87bdcced8f2e830bad7da3dad97b116e775f7724817d7db876bdee7ee63fb01795f6dad9d5da36bcdebe2907e9db6fa987d3cfbed7a02070ee9cbddd3669bd137a4cf76faec2d3b37e46cd6aebdaff6b7211dbcf1d5daf3d2fe6a191b72fa63ac2d3badf3f9b23524a3f7c5d5ee7aae86ced59096176d66fe8e943ef6a8019c34647bcc2baec678baafacc5f0180e1a923e63fcd8bb66d6ac3ec73943f6abf3fd75eedc5d345633645c8cd1f862439ed1d14522ed802901815386a4f44e58d7b3af91426b4dce3a386448f8de6accdd592da5ec1b8e215d3f06df7aadd26796a3181c3164f377b63ddf6a9d4deb76a27c1e6fc10943f6f29fccf59b157275b5c7544baa09bb0b0e1872525ecd965dfee5ab5293337e8bda6910c703b2adc78def65f67668e39fc8a04aa895e3e502ce17f2ae6e0897bb6c395ca5d2e9967e54934ca9845a31e63b604a5470bcc0e9820b7adbaf5839c6f771c288b385841e218bf5b9f5d7e88f29a156efbf88a9d344227dedf1713b604a3c385a485f6c5e48e173ee9ad6162b8093858cb64178698b0fbec5afb190ed9cce072bbb4e57ad3bee07e70a2be6831f99a36cdf5b1e1d4e07ead76fa6b45773cdbcbfe054e1834385b4ebcd485bb3fadcfbabc9f9316541231269b13170a690d342dba28d3e17fb432b856cd75dff751b7c18e72f939780824a6250281f9761a413d9e78dc18942fabdd3d93b5ae95dad1f181c28e4fb16e9bf5b4e5d836ca2560bcb8847cb08f25bd4a951bb03a65405e709f9d02ddb5b99b3b7be5a93b38fcfaced64a519870372d276d5d2be6bf17dcf2667d5f7a456a7f7d57b81aad4c3d5cf9d82e384748dcef99ed75ae7a4b34f3dd0a9e8c26942da49e984d6cee72cf7cf0dc815977d5c2fa56d3d860d8709f9cf799b14b69db1355c26674f01ce12f2a9fbd5b54dd7942783ac33c15142d27eaf674fd7ec741fadc9f9518293846c113a7af94167c6eb9dc9f9a7f18799cc76c0946a24c14142421be7edf5d65b4cbfed117232d728bc9039b728b44c22b5283846c8e6faaf3d3a2bbfbfcd16212b8cf3617dfbe6628c591c22249d0d6b8476adb6ad428aa30149edbbc7d8bbacc6e970e20c21612fe6d8166490b96be319d9ccf55733bc73d28e701449dd527769836d7d9dd1459173d2e50cba19dddae5ec06eee33feaee9cc2d6482412a9c48f1db90945d6bba0fdb53cc63b7f311bc8d6976f6cf76fede70e8afc77b62ee838b2d720e31ac8d5fceb31c6cdbd3fbb1a9b49ad4e1206379fc83517576fbb9e6d97e7a272e3898cf556768d39b6eaee9c37349011c25b6f9b0efeb2cc5e2732dae5f6429e1d99fb57c6895cf5dd2b5bcedcb5b4db16373390f02de30b6d64ecc1e69bc86ffe687c38ef7a69dcc840f2ec7ecc961bb4d6de1903f96ef55bcc9b8d2558c60d0ce49def4538e3f39f5edde10c372f9096d5c7f5efc35a7fb9d544c2f7bebeca967d7bf42e9e9b4ce4b2d16d9df1b16e785ddf923dcd12eb11cf151e9d118f96d1890b89a4fabf8d043798c87fae3174abbd424b233439bb40f26467bfd6d76daf5dbf44b2fa68751aaf7b7defbd16c85a6ddbbfefd9e92eb4cd124999bf3658895c74deffffcab7bdd791124959bcd0d91adfd3670d4e22b9b9582b7badf77ebb93442e771abbddca6eaccc180be4dbf9dfadb2fef9966d2a6e2291cfb585cdf5a4d6dec82a24d29db37bec2cae402ed8d076bc0bf6a40dbe47e48cb6f664b1591a6fb3cbbfb8518174eefd9cd53ab71c527a1d91ff8fd56fec51af3fa39b9cd7152c6e52b05ad7c60ed7ac733d8782af967daceebbd517f94f70a783fd2edbefd5ee6d24cee61456a6efc16b9b63e4ddf5d6727c8cc6fada2214ba8fef7a75d6cb46a6488594dda48e3de7fa6627125b5d934efe16e75d88386bf055389dde5b2d9bcc0492296d8edc2aa3ed5b3d44b6ba16bb055fdfc8627c65e69691cec8cc0ae8479eb88c7446f6d403c3486734d219997918463aa3d4eb8c463c5a46164206e3c610495d7decdb8b8bd6d62c2b44c6666f71acfc0d34b91703cd1f9642ad662cdd1022db62cbd5b7f459e4e583c8f5f7453a5b63cb9f3f416433e613cef6461f74fd0291b5c1555f8d2bb6bdb33a4064f3c69a3eb5ce32d8aeae376efe68e75864e8ecadb16bd7edddf821e96b70393bab951f57ee437a5ff7189bfce07487d1e4fc4e8a9b1248cad3296bd862646e5d2581840c4ef668f4faea9cce6ef8a0377bd070a30793307093876c3742781bf30bdd9c8cdee0216d57fec8626566ff56bd19c1bd90b9db6939febf8fed299d50299bc5909b3b64a40d7a5f76d79cae312e6fdc8840aeeb1c420a5b739039b6f2fac60e1e6eea90cd5c6bf0b1bb5cc7c7687422b80981accf206c733ddb5c7dfe4c7e422d1ef15c195d3971591c61ef8029d55c7143875cab5dcafd566b1a233308e4b5945e062165f60f6f9de2660ed911bad5ee5eca6bb2c928542a8612bb076ee4904c99b7c9a0df5abbdd666edc7c4032acceb17b67bf45d79d346bdcc421db74dd6afbe2f8cfb7c1215bbbcbc1e51aae3819b39b37e47b96366a27b4d1f1bc6c728ecb0de96cf1baf652d8daa2eeb6212363ca5865ebb42dbb7371c3868cd5af5bec6cf45fef750d19e35bf6df8c36ba20e42c6ed4903d7faeeebef33a8c97d390de6ec7ca1c7d6dbd8fccd190cd6683bf225be88f2714376748d8fca36be736218bcebe256ecc90fcf4da6fd559086fb490899b326465945a17ffa7ad5c6d25433646d7838d4e66696cf6bcb81943b619b967bbb7fd7a63af861b31647b76236b0bd607a3bd8e446261dc8421dd69748f4248e182bee6056ec090d0c60b6d5cf75d73d35ad75c6e3c20dfefb3f9ef7ec21961989b2fe4fddb7c97fb69fbfdaa6650f6f570e3858c70ae66d1def85a8caa56e6a60bd9f8bdf91af6ffd77eef7e824e6cf57371b8e14242c8d04e381b64eed56c72469dbac7dc6c217bbdbdd7351b59ab4ca585ac5e9b75fbe872952ebb4ccea759dbe7260b39dd7c86f35647e3bc8b77b8c142f2afe91e74fb8bad0bff0a692f6cee6373ca6a8cce5a213fb6bfcf8cd5fb9cc50e487e8f99f1adefd45946ab68f7e757cb2cd63adb5b9d7ecc3f714385b4f7d7830f2e6f6bb906a7909132e8382ec6a49036c2795973b3dd9a8ca39093cde6fa5a75d6b1ba98c9b96426b572b6a5d6375048674623f7bbceb5185f3ca12019374f48561b7afb758ede70c0add59ab5c89ad9a363f8e29a0c235fcb9c999c4bce09d9bd2cacd6d6161f6b8e3e7ee1a609b91eacae3ef6e55e21b31b9035c64ab9c6ea5e748f940919219cdfb33d73d69fe3123252c7da2fd778c586b16315374ac8f9efb1ca988b6fbe4bdb397193846c0bba6a1ba536326ddd909077c54a1fd6d7a02ffb6e6c4ddc1c211783cfb6b620b36657db08793f3ada31d6c9a6ab6e3577123745c8e6283fe667dd5db74e22a433d62c740fb283b5d96c4f03d2c5c78dcef7da565b586f8690ffbaadc52caee5de7bef8c84fdda5d5fadd635eb33d24242344af441248af467dd4e760d5bdf08ef0d643fb50ec2fa205daea31385225ff3e8d1df47dbfed569453690353665eed9c36aedba0f8afcf7dae884ed9dabd71ac85be7fd77db5ccf3d73fb89745a5f6cb51b83ded4dd13c9d8fbbbf52f748fb9331a48afcc5e3b573b07ddd136399b710c34b7b4db0153c280a89306e93fa37736c778e9db01533a89380112cde0f65af5c1785fe53797c939e8f58836a1b4c5fe091d3a63d6cdd5aa4806923d7feb4ddbbeb6fd764dce1c34b2d26504bb05510c24e4b5e68c75b6e3cb904530907446d6f831afeffd908a5e201deb79277de6eb329f0ecb1069229d4f67bbd579213b85d0c910652299deae8d198bcb9d9dd6e4ec241289a453c34867b4c5cbbf15fb6b1311267246face203b3617b54ce4021927d3c86cfcebe6622c8a2e91f4b941cae2a4ebb66ed619ad18463aa3c565a4335a3b239dd1da32d2192d2d239dd1826114839611bc43d402e96ebe5afd9d43676d754be475dd6084efbd7e34c66e5a882a918badb5bca65d93c5d5975122233f8c6e9bfbc86e79f8e641c6402201fdb0294493c8fbdd6e2b2faff775645112193f3265f76eb5d9dfdacf10b140d21b57bdab5e9e5c675d91c88f952edadd589cecb285445a4b2f9dcb7ebbedbeaf66885620997587cc1afad3f9227d445a67dfde5cfe4f2f8baf34864805b27243afccb8b959699b26e7952ac896c29c7a1e52912372c5371badf0dab896aa4ba214c8eaf8f956e787023997a593bee72aafe6e736442790df6cdb59fd777bcd651b9170ad67ec72fcc6bed73339c7f7a1933b0b112332c6b66cb1db9ec5c9bea156a71eee28448b48366b33eade8b794eea38b222d2b9c76e737f64ecd2f94af67113a244245716d9b28cde57636b47443eebefe33f671da5cea49a26e6af591c9b40ae58e36bfdbd58fd1f54ea7e111d22bfbae96cc6ea985b5bdf877a15224364bfd7f46fb470065121d259e634906da804ceeaa559248ca22886011880015aa195041000331400302824188e4543b1a840d776bd061400043c7260942c2e22150663914020100682811006c22086611806801884e13838824cdb024bd104cc0ced150af5b3158753a68946fad25358a9d28c1d0e2ca4d0066d75586f6e8634656a8d974ad2510c4d7a1e337a5185123848f6d290641ef1432eec2787de026429afd9fea72d2a37a5e32adf02095d222ffc2a6015600e978cc2c865be537ff0e6c059053b3e5b7860db2eee70899afdde23d87afa4597cfadf74496fd03fe4e094f827598cd62f952cd03db336eff25882d131d65a761b7312500698395256ada887928d8c266e8012164ba60bc82a5c33167d0aa3e96335fc6a72869f340998553dd30e6c44e86ce586c1da170f66a9a97b5887542e1dcf32b2e24d4e2e5c078db6149a76ff1eb7210d09cd6bd233589b93c584569ca67bb34ebbd106db15d7a26bc87c8631c600ac7be9212a4e834b807758b8263923bb00a41b36edc1ce63e3f507689c1d3be536c094e4ebeb56e8e728ab2b02ea50ccc54ef49de8ff1166ebc3cbf6596c667b0f6db1e011bd7861f3f43994d63628c60a5d6db1e82346023fedac86950df66212dd7d9228341188ea1a55327b9d896088f11f12bc66eb8c0e2dfa875c5ee0ac949ee6472f97190a759c8a8dbb569c2a56b60c211b77c546bc80692c73802b70b8c371b83d01a38a043fa8c1214222d477c6dbc31722ff35d63c78a83e2267e5fddfe2f31c892a71e35634de14dc6d8a9191aee07a33369207f1a4e4a4fdaa3536242b0898a79a8f8c78ee4f536732d9ab31e6dcf58ff8f15e08f5936ac0d78b61ce97dc5906a3f12cc08d40e0a30b213524b97ab4b84df08574c81bbc56090c9aa0f04dd2674dcf71b48f3b653908e48d31035dd5c2fa8c15f78823fcc93436258b59d90b7034feb1a8d32d666904270e90e4c84b2d53473872063b47766833a52d800070484d822e58c56400388e6bb847c2b077337b1bc3ca849cdf0ea8a73a93972a4f4b704c61a700589b9a56af785d2aed37cb9d37d05bb26be4afcad22672552039e7e654ab7f06c7e9d92c29446303cb0a9904888393a10c49e1aa64503ff8659a56cb159a6edec67faab9f803e517433ae697843f12cb9d3bda4d83a358d420b09247ecac990d18a68d4638ee18a6656d25cefe42c53831400f5ae8679e93dfb2bbe480b419786cad3899288368942b519fdb0f8c2b51f062f78e2d5369cc082e4596b3bf5434abbd07bd2fe108cd7a42dd3c6c6f3d81702d5201baa503e697d1b98632372f508eac723e459f4c2548b415ec719acaa9d60dffea9850d7e126d1d36689095f86a80c84c859c121136c1ced424267b157352bc0b214839e1cd0075132557aeb9bbc84594bad9585ff73274fdaf8b5b626773f123f6be4c69d4436a1b4a3bca8bb3ee9264690ee80fc6c0324aa8dd0d87483797df251e6fd1a85bbfe7d2e6ab3329d2df69497f1fc5051a21824710c6b4ea4c8726b34609cfe27bba47edeb8860ec6c3dff09f443cfb75868b1818d2c80dedfeaa720e24830f13f6916e1da881ab19ba1e65389ca145891e571466f729ecea1bf0b3d9e119eecbfa9362c708183e06fad9acf4cd4da8330ac5383ba4110231410e6ef2daee3153654968338de84edb081d885f0d8b7a0b017df8c43207919c9b3d1a2f99fdbf155b9dc249ead695e345b916c6cd9d9c6379ed636f8e47ebc41f80910864e81d811789d93f1a2cac8260f1876f5615a20372b93af89eecd03ee9004cc8025ffb77fdb1eca40b5cd2cfbd0acdebfc946c78c1f28454bd79cc17f0d50d8e87cd7fba2fd94bcfd72da5653b534b81840d7a00b8386d260736b99540adccc5774872cd9825a33d55a3e237f4800737c0ffc350fc71ad6c84bbe04f9bfc51266703f3e0294c262867d0510f11e0e3f6862086bc637630ce209eeb76d69604bfb2ba45df8b9108d3c6e6cc5a3eba6f8db8de2ce6dc6ed2e6e29dc3c9b6eeb4f17299df79ab280db5f209b64985e45d64cd8736add1cefde99954b2149aa3d89f0f36b158d60f23a4617bee74e1c1aba7715e1c8c1530dabf34317f4044843b8cd02c3489b0dd26071a0cba5b952c5ef8659acc528bf28cddb886345a33d264845007a1f2d684204c822c34e05c3e1186004c67d4fd52bcb24231fcfaa3e88db34f0ae55c08a0bf6d22b22bec46dcf0edce4a16ce239684f30cca1abcced71427c4dc0510fbb1e0f6831b40e5140eff341735885abbd8d9b4e8e680be122d485e4030f6bf9e3b399d6c46422656a7a683aa750c7044b0aafa56fd7758adfc14afc300e6e7df7443cce622758df3f85b380caa8082110186ccf03e7c9b653edff8113bf192a1a2ccd84a6c70d2a165841a49322edc2818f8eba499240f7c0866c2ff7a7ba085fbb4b874e80e0d2bb051324cee53232758ddd4a2d31647c0851795a26c484b297c33bdeb731468bc5e2b48ff6d57bf3a92746a3995c6a9d5ee3d55c2d8efa2c3aa50efe792c3a8b38d491a45327d568273e97df88b321afaa7996819efaf9531683194562c7280737951c58944458650d19ad5e34676cfa8e73dd57a04d05bec9ac99c7ffd0c09229a6503a4463a10a155ea1ba10e59162e44e996f4219be861f898c35138cde054f465b75ae723cd7ab058a2474113181d588416ad1bde245703444e9bfb95e895045c7dc54d9220b70756e26bed3e822ce5fb4263083bb6c6c743b288981baa8b485233aba2382e6289051ed10c2c4f33bd3334925b9098919179efebcaa914435219e3d3587a99c031e1e4f9b172e981a2d6e3f88ac084c511c19a7b57fec225ce96c80d7c7a5d2dc942d509111ad9223f840387eb611f2da11ff0b7dbdd759077eabc76211516cabb98c131feccc2db458b41b197f601e2400e9f44fbd093fe59b8360a025981e79cfe39391c201e215557cb4ead550cd7ba1dfd07a78796e361bbd54ce166eb3bf43e97564ab25416e326b28af78a53b73b5b13ca1c69d03442f730bcac93318f62c3fe670196145579e2688952c05c2dbc2dd419015662bae2cbaeba35ef911f406e4266eff50defd52613ba42da5da930760674f113e0277cb555fb71f6bd444f47f6d3608d023416e72133d1708118f9ca6d50bd82ede466fdccc64422b9eecb9080515400e202a580d1cb27676779d4e7c6ebcc4759c34fd44cba8ca32707bcf76bca317dfb986be1b297b27e533a11ee11b8d0de4f0eaf35ff3c6a2118108192b4ca63b5a1705421e992dd037d89b889077f00086c019c8bbca59a38f1a1d9e157906110e929b3c9eb87d894e6db863833eca062ca430e96e885f5765855899ac5a726f47107e222cd11038c7cdc01abaed7d8a258c49deccf116650310c201a629543d8fb3a98289e8496069d927ac1c2baa8a758d236f840b52cc0e790ed72bd30d399a927554286c4dece2dac6cb9b22eb8471378438ad49d5c64fd16510abe735fd6da400d859497b39fd24d49ba31b1853101c488e55929954c6403a751018bc78929e569079c0f8b275b9c81882389cb25f8af694c4ffb8eb441f11a1116c2dcfc463ae65154d1ace8cd46cee5a6a80854b4e1b8f9c2c793a22c26b568bc00c2e869538f98716b08bce564b9afd128396092beefa1dce2397e4ed4c75e58821665c48b3a9cf3de8ab839da568d59d13f18478c250ba29aea881d1ac02cda99d0afdb35d344958d6b651ab48a4dced6824e981326b133cb192f218c87aa11a3eac5685bc5ceeafdb5846d120208324235f6628593d2bc08e84d70149cf15ce73245efdf0fd183f81e4e1bea75afc11b07f5a6ead923668469c0c3eea461a8a3a4debd12575db26d3bb25049cb84c936a7d5237747343794a0edd0ac222b2fb379ce7b415a1121fa73068f31754700578a12169c641eeb1f22148a633e42b8dad5fabdcf9cc5be22b59e61533bbc4b649220a4a86a44abae250511d5b03a5ae21d068039494563594f7c11f9a12534f9654ada2437009a65ed2a4520393599c5b9797a2ba5098a3f694e2d845a4282cc9c71b8bc9591ba334564e2e36998566e5dad120e42b0f182304983ace67c2d54ac591698613304d532dadd87244eb3a52b059a14fdc061227a260b0ea3313bea18ef8f747c9f305c01f1ce0284e6beb947b995d7c8b5e34f55aea1181af0f1e31df221194b2e638f9291b0e7d0b6ec0ab7a169574503e498ca29b12227f0179012dc2351ca40e984446aec9b54007014b9d05dd51e6759405782f9a182c5f95487c650162cf1c4bebaaa92c3e02b71b7ab4abc442dcab89ec101f5520525783b0942b56f398c1dc97f1054644c1593f69334657baf938ee078421fa67782eca7e983f2e24a732672c8ac16d30bb1755d07ce45826ea92591fcc157b9f45080a402a41cd7a8be2311bbb50108d0b674e07ed72fde5d572d5fcc3272f54a1c7cce84a73c44491ff17a989b494382141032590efefb2eba03985b4c4c0efbae957b5fef1dc7ce31c8171db654516caec9d9dba8d2d0ecca1e9dd0a86cd3b56f9d9f0433fff881cb64bcb73daad6d16d889cc9dd952588dbe9e6d73559952a2c093179e76ad9214a29ef94f3699fa01a5944a945df018009770c027d8e18569cb2b72bb0400405264e119b530f8a272c0df763d145df1bbd666e70787cf81696ce90341d3477ace136a3601a1abcd1fadd923911fa39be548031fba7edc9a5d54fde51c09f6e29a6f02cb22e4e5e4907af92fb3ade9603ec0a6b3166d720d0059bf26847a152b82ff229df17ba5e0528268d1406e1279ba8a18a6148aa73a570f064a34c3886817e76194cec665f6b7df6b4cb08a5e83cbc55d723d008a2216914d7eb0c399043da46b3c004648cb0e141f8c36b0dbd9a2488bc7b0e40331c438d4d4dd8945423e1a1f14f9e254b3cc280b4638d0177018743da420af470d493ab999d11fb695cac3df62772800d522ecfdb67437e26b671cbcd3dbef8aa8101ee959122045e5eccadef09a3a92b00c47c0666e1477e4b0f69eb1bda1d130cbf54d0f5f4185a5041f4ed7c1e737857c79bd28f2e4212ccca1788b0acdc5c8a45fd0c161f6376964f43fad87cadbba31814e19b5d395a49d08218469aa57e81fc692b01434277b69a0349a5704b7d69773d3936382c44621f2ef0020440b396e482a5614b4659e4714fc9d4eca7cde633e15e0c02e710e7625da40c30b8a9ed08282104d1130a0f0d8a3075be1f6b27cdc43a97b3ef48b5c733835475b229dbc71bb9a4783a0a082f724bd4dbb0f395d831a155b1cd40958599c84bed6914aee772e4d70dc43669d393805c559505c79343cef3568de2cd86780d4e678293d0f301635b2c9c9aa437be51102279525fb2f69a2b227fbf23095f533c3d46a43b98e54729e668b38736caf5371371888067094833372c42ece05b56faa82bca7d82e59951bb0235e43c8e1dbab42c543c296aca25f4d8a0a9d63a9555c955f6bf3abd0299e83349532101ef14b38cec27844623edfa362735a4ea5c78ab3b2fae78920a3b8b17229b6fc109143cd8a9ea402cf642cc1687b5fdda6a2fcbf2042a5c023ffaad6a5c73affdf23ee61ba6473063000754059a543b91eaf78e819f155907386c4506370f230826fef92e5431117262171c835383608c366a43e04056c329617b7b5143e7ce4ee9e712c54b248fc2a261fefea817b9b12d53e2861e950da1a241c1111fb73cfbf9e895a792c5a8e77c5af219da7873aabab65aa2193e2457697b14f083d63e264d7a32b0eecc8dd94018f76a2857b515ea39f8905a1698465b15546bc3dd995f72ccb4383134b954b68341fd6be22c33daa70d0a8072d37e01ce8448b67acf753824450ec867458683350542d1a96c7256819e12cd805984863a1f051f5763d26606357dc93bdf35aeb12558833f6b827fb75b36551fee46ab950265a587055eec9ae36cb3dd941e6386c0da86529145585dcc61faec1c86f974f7e877331bba56755e257bc6d13024bbf7fa513ecc84d864e8b69f1d03fd280608cc0bea7e01a26fe01c63ff6129b1c05523bc691f0ddb0352b3c275ace81e31b5a815b41967e60359a3c2142eb0a2e9e919a262a0b15929d135ced085dbd3adba091a962c198b1ce00c28aeee841d63f985768d20648258e0f9d09120500ede1b3b291d30543c5146341f6c43353d5c0f879b61f419eb02b673b91412c75cd609c5a2a6195c78a812b6c032306ffcefc105008d9ea3097e2f8c7940ff2112c3cba14dee962874144b7ffb6769ddda7c9ef6ce49f59d3e3d1f2ad32ec861836b6ca06456c762ad5b0619c3b3feeb35c2eb90b2500bb8496033d28970324e4f5eeb7d498c14fd3ebadf988f1de30705b83d9ffcc817b6370db2ef04a99d4239025230578132a75b6b3a569444d9d888aee890300eb9b14b534223fe6be38c0ff784ce9ea6911655f864bb09ba7f2c4eb2ebda50e03492941ee6dc2101f0d968eba09b5cffd8c864da7fb6d10227f2daa9963389b5b378623dc029daa1652e36333cec0a8b079b3f48b15f81c4178aa857a48b329cf26a5d935858f7d26ccd32e5e4e6baf42a9b5acf50c9d982176f561f38b3e3141b33fd4c46929cb53ee9247eb15796bdd8142f7169171263fdfc81306a2a78e8955bd340aeae844c41426c22e3674541bd6911e884aae2fd00213e82eabeb23b55002e68b05b95e3924177b7197d3d5abd77c3008efe9a0e69f10513f0e157d14df83fe62c485ade1e4ad161cbc86cb9b0087302c0efc892a0bcde0effd1f7a8738894627ecfc7170b80ed19b0ef20276e140d0c043e2fa4633d5a3f28c571b6035627d996f59bd4cc16249c9d96aa57a267edbaddb611c68f0a3d812de9ce859a186f659827531267c47d90337acdec515044a1064ea03e6f9b299c0b0eefb1eac27f19832563f9e5a0228ac848084442348450cd152661066c5b42803cc860a82f346443d09b2d14a4a928f44bff71ad489dc755557479fe3a011baafe37057b90fa7016f5dacd8a920aa6c21e96cdee427cfe4e6b6e9be594d818be9ed607ed71b95ea31ea08ee5f0ae6822bc74a3005b494cc6830adbccc8a8a3aba3c6aeeb874dd07a6a63cfe4a2ef154ba285c764749632c69355e7523ac68160a99c4207f6e37c78078a588b53847535861b5a145bf67be9692dd4567bb4284d3a0f50707960e2218c276a106861d4bb23b9c2849a558536f9d06a55a2dea14538fa93745518a8a0f51c610e6267a0e40cfa284215e6fe914347cc04bf9703afadbc84a8c5a63e63c6c2e1002573c574d6fe026b2c5ff8e08830d81490f9e558c19d834b12cb89b7b491b6701ce1cb9b46859c6c6d4e0725268b5b4622b7b4c8315d809f2185bb2bb9bcc189a0bf8bb4bc104d4639fc107f2b5fb643fe429808e920dc3cc0d94dbbceacc47f655a0d1d104e615d6f8cb33aaee34f1e7c54176d21ef781de0fac2be2fc30839aad66b8eaafbc39468bc26bd3b91762705f7a274fba10429a635d0cd8bb87c47de0bced6b30126124fe6f4ed612318f55e2a43c738974ccf854e060a8bf0ee3c43e1fcac1197b70aaea6e64cd8eeda88259c0fb47175614755466b34667472e5ec9e581adbc6f6221802f23c2e0e283f42edbdf9a3b38c6d548f777f4a197b57d992c6ed9e15c59669a3b69d3c4999f63c1747d186b6b66dd644b6e0eaa70519c98223f2bbdb138740c185a940049181946a355251bba0573d3ce327d22325a500ec55f8a260685e8dc43b5f166142bca1aa962ba0f3c40d212181c96a92ade9493c2d47fa5bca52e1ec34a8edd0f9c314bf0dd87b21180a9b2586eb7055f40956aa2c9482afb3db902b6a6cdea5f70317ed84ca84ecbd57f99ca598049ad1cd35581e91bc7d5627c5201a92b8e0c384bc9d4620ca1eda105fc9044ccedd17cc0ca3655a876de428030146a2c4439958c2ecb64d32ce424b776068be5e834264438e746c6db4236a582509e3305969fbd9eba174646a9ac7ac98cfbe0d888380d51106182819c5c97bf235bf17014300919dad3bedac014f4f4f35392c343c5016cc0d65639b21f84fc3928a26dbc4becb40d74e43585c7a16703cf28cbef115614c041d0697d78003ce8d67d83a7e5df6c294fec18ffdf1feaa91fb51b34195e8aba402a6f1cdb9e68c7572cb48c611f088c03992c2201215c4e6ee5bd96426afc2ac75ff47ae1981d0a6d7fb5b1d8537ebfaa562c0aca284bb6d0ebc4369479bb253f9ef4546a885bb6026b5ed240abaa94f15d2e90c971b9a1e5c1726e659bc7152ce0ae9c841dd28034f87c3b040f580eb54f7f18f97ea48309cb45d7488e3b75910e6facbf76c1d16e0c132e959b2dc2a83f04e0fe6d0a26dcde71b1d02eae6377be74c4cdf438251083bc10def3301fdb4d8f340e346bcd66a6533f4d125c9e7d3b3a2ab2c97ce2887ecb43bd4755a91d1b5bf67010360ccf15db5b4ea671b532dee1f54dd873e801da5ba071b3311057cefdd0309ece405f1a10ac2db58062c1838668cd004d0f8c521d121747121c4db24cba5ad3ff68b6044a51ab4073d1ee3f0901b450d9a3f9d60b874fed71db606bd383d959d4734a3519620d18c75892c80b11b4df8bcb036695279acf0f6d3dc74904e6c3f3423b09191ad6a148149bfb1c1691c581463fcecf31a1e6b25dbd8bc57569c7fb8e05471ebad7bac0e1a2a136345805b188607f4858a517bb1a0bca02e3397c7dc2a6475b98f11ee4f80d47d69ed4ad46374997285ea96c496834b2854e174e0a2893bf749fa5258554d90aa4086209a494aa7dcff0299e53a37f7ea33104741aa70199ef5b75a75887f0bde08bf1ed359c6988e225b2604a05421bd0fd5b2c5f61cccda86346b8796b88d601adebb5a2928c3ae9703024c7e62ac4ff3bab0434e3b3f8fc34d561ba626f0e110d00315ffb7b63d680ae23a597ee237a219b32633568f28cd0cb694c569de523a4a0417b7f2c327688a3fedf4d58639f846c412282dbb2ffe74fa4ee7fa8cf8397a1f7c23311411f66451a684758b11347134e772b319727772e1999669a02cf00fa18b782dececca3350c5fa1a6c1f315e347a81e66a31649c7780d56a3793fd741fe832407311144af2c57a4e00d4ed06ebfe45d8ed0991444cba5a2923fb7e4d9b6bb781b752f519423f29437300aed0bf958b736d4b3f4ff9e151a082a7c030b30662c45147405f4de3b6412a6df735ab668ce7a81c1cc62f4093c1387ee088271860b6dbebb32b9b2d271393bfa4d164f51fd248f2bea0a801240d3a49aa011f8b1bde5de5f0292767ce5eaa1d6e1a6373b62d35b6d800d0d30501a9c87077ad09c75b5e2b7117b83b9de27c2993cc57d2e700fe736a492213c85c6dbb22c8adbe60b8bad9cc9852be93098f555205feead0ba16757a30c587c36c1dce391e11929cede012a4115c37af03dc2d4d21de3df0c60dd29f98c06d4f9b71fbb0f78ef25d2a51523845aad4c08cc0a0cc1643bf9ee48f453d83acf5667b7bd32efa87b9ddf2e3c8b8fe006430258b34b0a26f503eabc5b2fe24dd0a0ac6eb20e9514a38d49a1ce35670f92c02e5195a81f7370a2521fc4e5bb2a2ee8340ef4b74908d059819d3d38b12075b6a34c2314af58046d91ad304ba3a4f6800d803cfbcf443a6a914ab1202f61f0fb2ae0513c2a734107248769a6a90b60fa2ec09345d4fb5582c4cc1d4bd40677c6492e7c64b006fb8ed6520931ec55f1f5cb87616509e57541cde2ef911e3c35136a2fd1e6e94817479e4ad1a8ca60d46499ded70c08c6133e3f61291d056d2ef99e68a1534a827a24fbc9095a4a3c209bc9312d4abcd27e6a8692922fc826bd0195f4b7181d30a839ba94189289a4215d4f4c9059d2005d4c8c692a654ad593336496364114c901329736260ae88ccaa38c924572904e12e6c90a724a27108669991aa5b2a479b2869e1219a4215940cf12696a80aa5173642a6948171243329f3441578901aa64c901d02ecda9f8246149ce111af664b6d63459d234a9ac638f4db2310d498bdf43237335ff2a6b4d9326310dcf8b1fc3cfe4a7a15db9987fd35e336d4aa911a83094ca79cca24ad6786292d370baf831bc4c4e1a7e172f86433360065e75cab165366dc650a89c4fa6bd4d5314e92429cf656c594d39a44e5e185e162f87d324bf44cc75400b29616ea196f79984b112ff02d4001c86513164ad612da30eb7709ad3aa1c1aa1028877bf377511d19862572375e649611a7f8495146aa52af1fc4b9720ea63a51c25a8d999ba52a9ee3e629f02833b6fe9633c9f9871ee9c3758ca99dac862448e1ee45c4d16a5b26b225f1219bf31325f2bf7a29635d4d1759fbd8af1a356c5119190f956169d7bd64c39cc527efd0e4e97888aec878a28207fb46addfe3f00e0c62ad04b01e99582b700608f56584f047033853d1d20bdb3d06d00ec1d05f514c0bbd188c28ded63d23e22f49a606c8c2234219953496bb1fb4b3c4d4f5bfffc6e42d3590038be1ca68d023fe9e0a08df166d8f3e330ac858feb33d9111e7e89a0fe2f3f152beadd8f1c45c9205e9b04881f20fe277238822b8cc4253ca4b98774441d2209bd284574aeac500ac6d117568713fafd3fc303381a0ccea9fbd10373b73a6f38081407f6ea202e8b6fdd0e875e021e76985e3199874d83212739b2dc4c7343d25d227c9373a19b847d19e299395c433a33c5f8161d6eedeec790128239c7663c887d1c8afd97377480b886d9c262c225089fe29aa6b94b734ec18714902a0957c806c13eeb8695c2c7a29d9d6f526813e76bac60e02dcdcb27917cf602dae0aab9812cc8cbfda4a65da53155d232d13bc33454dd369289f29370dcdf498d9c6124744ed2ea11a05017ee7fc3937f817d06a196e8a4b00d67c6d9efa8e5b55b940a0b35f7cdb2c2daf5a9ee53a37332540d4a619f8662d3f1a8aac4f451d8a519fb1aa7f3d2e905b1077aa926dfb5dac0e90ce59b4ba64197163eb0c1382ec6040a2a162a85bd4b42e8fc43aee684be3392f04a3302740614299e6cb65b3c8cdca4b02f97d55e4a269c4c46c32b676d038f618393f76a9b471898b3143628132c3236f1c4570a538521e3102bc1da973136a227a26905acdfc7df19c55724d1e5597ce301d5cfd8a5b08beae34ed86f6931ce097295226938b7734bcc93d50fd073be8df26abd8adb017ea4600a7b87528bce550fad1c0c95503f6813ea591e8223b2a6de5708342bc74060c15560bd3d3ce9fe4ecb3fe3b93e48de741f9155d1162226d2416e7a8fd44a61075240ce3892c3c3434b7ab50cb1fdb92ebca9f000e5db88bb36998a1a18e562bdca5e085b343556a4e8034c71c73d38cf4a5fe31fdec4b97eb0e7a66f3ceb11e8a228635e351dd5496bdcf64783307e4f17e8fbaaf99ad20a80d6398778762ce7a2a7fd42780eb4367f19efc4a6be738a007311f0d845cf242f9a5e5ab3ced2f8ab74503f88bfd98c7e1c0481d3240aa87879f4a637b4cecd501b8dd7ffe7d4b6d676a3f2e81c1ea6c686ff6e852e13f0282d657ef77ecfccee973ee94b36cc3098df47f9d277635054f942ae20eb7a4776739c3ff4ecac50175d22d8c34f6bd04919dda821c48580e4b27dfcc043d0c63cf6b9e225b9206e1e3ccc6ebbc03fdb32ccc6721fcb206af28eab9bbe113c25e370906cc932ec302ff5ae8cdd9a71ebd599c87c999e656f9ecb3957366f7be0b43e2b1f574d7f712cccdd0f0c9d10caf1e1b3d530153b9fb0bbb88b4c733390a5d63f6d05474a6bf32d0ac587789227e1eeb4af026466d61c362b404889456c968ce71518924c737a2494fdc28a2c0b347f45a7dba38ee7909dcc4f7086647a09c305e62c05ecd1dff6d082ddc20bfe73c4e571a3c659eef4c87a6be5792931ba50dda944f2e91060e20878353d50a29bac4ada600d5b3dea1a5041fe17242378c02886658bdfa59c1c8df8a62d736f7c014e0a2612060d8bb537885db8301fb9a0ec69eb5a473bf15fa7fa875e1e232e91a84e9eaa876b03ffddc268d8056778d72aae64836f8ed767aee403bc8655b335de7f2bf1254e4b06b3092c4059318b2dc0d69e96b313ac37c29db2d27a42340d601b37706ec8841f980d75262034487a09a5594d14f3066a7439dccfdb62f723a1eb7c2ca8396adfb6c576ec24622e192b96f4ad69e1f18f7e134aebe7e1a13e63825df63b1c68c30761d88387a266cc9996352640283bcfc0f32ff1ed587566d7ce42b318d9f3093ec7757021ac1099df219aa1491d8ce5638a96eb66442e8c8aee7f2d555a780280dc0c6bbd74029b34ebf2c6090916dfaec90ae7da679291fa11a6f5c721f994106ea44100242129712b7350aae8c3f2acdaaa6b70610b7e53bbea8bdb9e963ff4bb525346f9881196b97a1bbe8b3e111e249a331637de56800a2b867bf6987f8c4528af426dfc6d946cfb7fbed8bdcbf5441a9a7e1fb84bfb839fb7b3fdbe23868ee71376e4f7bc056f7cbff7ccdaeaf4085d9946555bdd6f94db6d422cbc6708bff81a7de77629340f4c3fc59ed5ee48ebdddb7c55d503e749cc39f47fc80af73ebf9cb76a79561047bd0f7a6bcef0abefcc7adf25e492e95453de71de0a3b7bdf9dd63a6d7814ca37cc3f55b5f3d1a51b2da572b3d3b665dad0cac61fb6acd7eeb2b67c353452e390d92ca728d69f814fbb47996a2d5228d14c80a7bb634d69965014ea4dc0679d23ccf597a99575a740321d91e634cb698a35e6e0f3ce71b35a0b340a9a7320f9ae6813fae574c5fa595049978849bd274cdf4b538ade8626f13cee4cbef99b99f4f2d930abc524b2a37e295401a507e2578fa9ebf24c9bbe988230d1e800045d06d4dc78af7179121d5c91d84ee879bed91240a793e44d22bdaf94520fa5dca190b55ea137b39ebb8f8ba4195912a456fb763228d09dbb5e02bec3c936643a1b964bab31ad66d69ce14cb9115ad8b8e9686f948081d1ba4d23a3d864940b3ef4b6e739c2ad8fde47d43053da568da95677f517a2ed7637d262b578c1f6a9f7c55ad979614a04382929bcfed7fe0049f9443b55460f1bea1b5f37514399759681ca5ae794c7e706e61fc7b634580e5414852f173d2745f9d25380afcb06c632e68606d52f5419c662d2f8b00131c1105c0359305623f677d4c68bde8cdb1b49fb34616f1f7443fe95e39e4b7118b5fa3958b428e6aabd7f36fc7561f6d85dc1cacab31c18771a2646a9c60236b704dc2bc72a787ac53d096a67a0fecaa66f757ba195e0d32c1d7fa54e63bbe58e946f327556685376b063bbcf12a6d8c152073178c82be967af0eb1093bb42a5783166092fdbab2ceb7e8e735f929dd48a58df89fa7efc97957b5ae4b92e3aaebd49d5d8e947e338befb626ecacda23ea9b0df5299d2acd85f92e48194dc6082ee7fb42836d29ea93879a2c703c47e05ec47c5ccdc4f5efe085a2484766c9d0c454e85df542ca1a8b75ded9e447a404153eeb5450e611c3585d2ab8ca61dea1f072ad8e535c26bf32699155fc8125f478bb87e55073bcf890bf14d1399b700dcf0f4992892d7a958a6e456444fa00121b7f9f8fe9fe69dcbfb5b0d976fb4d00f15f8906c366670713e96243ea754f02902ad15de6f07a2920c06dcd39a05775cc6a33e391e3dfef690ee7b074432c8c4f8dc564ff4cee5ea8c3e3c7281225bebe0598c4dfd665da264aabd5abee736ba7ddb3f0c3b9b8f0a864d6413bbdb16d6f312ee302fcd076607e7265d083b6a5f9ef1f8d28e2cb163cb59bad361ecd59e6bf86d032057db307100d46ca48946d03665cd2746e924f30c1fd42a76edb5b727de2215eab1cc15609c461207622f966120ef8dd15d321872d364a245029cb51ba298e616f7f6c5445be73ce130b48fc1498a7010d768422aca1b40e57ba8237a7824b7892aea7f44e95a1f9aade0156d9f2fac4613bab39c64720fc9af431732b446f8e62b92f7fdcb74669b834e958fb1750644d49d5ad8bfbdfa34f6d89f874e407fda5bd579992b1504721ecefc0c1f85ec2efe32c922c81ab0cd004c9e2c3934d458fc8dd683244534944322f9862079fe2821d5359404df33e1d31a50df17b91658b0bcd011bf8056208a8295242d0414a4e6c655527d6ce6fde1518ae960b7fe0bd75e87effffd9d2bd28245fef9a2987438a4bc34a06de59cb1a9518cc1042e97e2769eba605479780bc1e58e6af425c3fbbca76d0dd39a4b2a3129434b8a55d36d6147325265ff93e4dc5cbc4a2d19308f1e054b8e6d6242636632676e3250c8627d62890e1c2783eb621c16c32b46ef5c08f2ffc0fae1c8dd83d65d3db955a292154d06d97ffe50567862103908fafa09f790bb4467bd930cde07868c007466e059cd4037d2b2c6aaa38b1c050101a201752648aeecf57f4e558ff2ee0c771f911d1974ee47c93ff963c92d07d3eeccb2b8c170fd1402c708eb77d300973673ce361b2ba7cc8c23fb1f4d8c073d00618b2720443b643e24559140f5330694d6dec076c234c37f3a2d27f198aed62d4aedbb1bf43fbe1e6269252c41d7fc585b5e6af66585b205d5c72925197f06486e153a9321bb20403da65b263a754c00ec2675f1d688a8d8a2a230fb7d72f3e42e8bc3cd0f75134d6a6365d6107f071072d8b05617e4dbdfcfd53b2d85e93b345af69565659fbb811a44d6abf46e34afda27b27267f29810a38a02a582e9242f8e42b88b2d812c5bad794f1d85b1e732c91b3a191cdcae4a34727e5ac942d4ae511b432676239276ad9472effab975210ccb215f3b425331f9a3977d1ecb96afe239be275ddacbd72de5c3a13b17a4e8c80f6746ae8d77554502fa48548e9bdb534af623ab69ad6454ebfd5539916d41e15f5ee2ba96989ea9caa6aebb2fa705d95a0b01657d6bb90d62cb4757ae2da4d5d7f2baf62d3d7ae09ec6d2b6c26123b228dad2eb20f5659e13fc621555ae0a576c45adb5c6ccfadb6a95b6e27a1b7950bee9f155772c92d749a7b05aa9b44d91d9ceef625bc6f95573c486f9bda7b78f14d74f59d87fcf6d7dfb708b0b815b855127c88066748840757e19a65f8777558ea425c94125f2cc589d1e2a912e30ed5f8b5e458763d6e2ac8972b725e4af2f89adc54941fa7cae2ca720b75f95661cea4320f2acdb5a6cdd70980e36713360dc3fb9ce20c3c6da95e6187d5b56c112743da680a7e71f3c1fc43eb8564890cc0f9b4b4f7ce9f6a7ba61f4848d78b86aba25b20d3a5bd5afba431fa6d1dc8821c418e8d852debbb1eb33ddb23d3df2cacbc6291fb29538ac93ac79807b94621c1ef7d6d5fa005ae7fdd3e20c617af628bc4bf3cf0e59ebfbd6d13bfb0a39171777cc4a33cbc90e7396c4099a4d386ca8f5daddb82ec2793ab51c50753fddc9e5f08527fd70fabae7a3ce47624ded809efcc50add37aa59c60927ec8c0f45fe8929b5eb18dc9637eaffd8e22be6012bd8bd87fbc07e7a5c22d29c3c09972cf4dc5cce62ea7fa7faee5a2842a07d7286628d5faa05a34e3dbb0f5c8a95eec17171f8e7e664687743d4d291e18cac19b0ab6f0d8b1d690a06553f4ec379c9e8a779843ed2c1d35b2ea827c386b630776ce03e445033e8e45710e3740b26639ffffffffffffffff9f16845c6c426c926da594923c408b053382a694524a29258d733016d877807d616b8fecee4d4b6a07d8dd3e0e650e780e263a6651dc9bb9d750f2956f50495f0c54caa2b05fabeeb1b4ab264d491f490e834e6251d24da36ab47b4a3173491f893a31313bee0e313003167dab9cf9cecb7699af7fecb06b5293d67e4f4c0c18782ae12b0aab29370bad57ae286b321d2565debe96522b4a5b5a0ab519a9fe5c654539a9b4b14d329f6b29b38a72e998f2d4646ef52f5514735e9139b74cc3c49b8a8292bad56fd4bf23362acab17b957c5cd71c451cc28c539465d3aee8997c0fe19ba29c6726a494d3b4ae834a51fe7b4fa1c56ba4282621dc851a4d6aa4e78ca2bcabe15aa7d648d752511474eb8c7ed238b13a1d8af2ae94f22f7e64bcf641513ebd3f2f944e4a6f9c3f512e7963df614d6f6979a29c49c719b5b1e141693b5192598d8e91f2b5b4555498c189e297e71759ca46b6d03ec0439d0061c6264a32a8a8cc49548999d808333451122b72846cb85ea95cff850948c6989189a2cc8de69a9b155aeac86006264a2bd5b765c70caeda7389b2ec16d253a7ddcf4a84c10c4b14843a39b17e52e8e4bf49191931266a46252ecda084183326512cd9de1bc54a5d7676b76086242e125c32031225133279509f95882704331ee1889cd188a2868ddea584f69bebfdf504331851d4514caed0a8b64cbc165150ba5db9bc0853ef9422caa5634dc6c6904ac913518ce9547a89eae6142344943487aa67effeca670f51f058b26135f4d6976988b25c9d3c77f66e46218aa57de34af3ac8b093c066206218a1a7312974d656255951887198328cb984a437cc98d61e433045192418369502a3e0ba90a44b1f3ffd9287bb351254094b48ed6579bb1f9a4e80fc55676a656cae89c56ef87a21ca153c878525e3aef43715eca949a34b4d265f3a1f41df25f356a8f8879c61e4a5f1e9a66347355869417ec87197a28ca5e212bc2d4e8d77b1e8aaa574f0819a3b9f0f40c3c14b58cfdef8a9319b6aec08c3b14f493f6faa09416a339be61861dca3aa8fc2899ce3a14476f687ad041a79b930ec5d91bcdffa45f7b8be7507655528a9bb90eaf530ee5fca3e95ceab8713fc41fcc88c37d1ee7d5680d0c540e3814e57f6775f24397a85149df7501820af80e66bca1a03fbd75ef5eeb4c9d1b8a9d2df4994c5bf5417a1c85196d28ec29b5e3f242db9c180a33d850963963c808cd77ad36bf867267322566357e4fea9430430d0521cfe5d9cad3d1fa34945b889af69a0d6ac447bf30030d052d5ac81c26dc9312fe194a5ac9a8d7f1fb63b6d30b33cc50d4da465e99b25badaf329495081db54ccfd9d3355b984186a2d6423d273d9965747e0ce5cea656eab8abbb992ee9db35430c4595adf43fabbad1ac5d9e19612899d2f44f1e7b3f5f8c821960288faf6a9da712e59eda31e30b65157fcd2c4cf4bed4720a667841595ad36b69a19bd185c2dafda751a35f52f9257d882598c185a24e1fb57d8a0f626eb3859247bf91e56af3261d54d2a723ad07666801b3509c1551757652d787d0c8c8fe172620a1c10c2c944c665b8eda35557f96f4899162a023258331e30ac5ac4edc931a15d730c30ac550b2a2f7e56f6539d4091ecfa84241d78d0815e19ec265d88619542827a5d4f573df5328eccd9d942e32eade9742417ad4ffaed7f7bfd2289485be662936bab710ca195028e86ff9593daf49f5f9c630e30925ad3bb37fabd0b931fd4e2876676b90b7a9f4434b84194d284a99732dfad5050834d0858e958309c5b5d723ba3b2b2ee7d2050834d0058914662ca1dc518af894a936668523233394504e6fa67e4e5e65a7bf8b0974d1c504bac09bc28c241443c8dd0e975131e522e108a51b19847a77ce39786686110a323b4cd6642884194558b5c720bf61d4e3ea0a3388500c5a9a4b799b95b9d61a4239279daebd46fbab6f845072f71d3d2233412866979b5aa851a15cab8150d4dfbab7f4c6b6d7d91f94d56b7490da21524bd10765f5322a6d958e9ef33408337a50dea81f848f16f2b3ce4998c183c2af2b1d75964a67a53b28678f31257d864e98a183c2bbf4ac4a061d1266e4c0fc6dfb6dedf71d3d7d99173baf65f464b2fec20424273370508cfe625eeb49859b57d27772438c82a3070f1c3d4e94c90541c62d4aee42b47d8774dbe84a820c5b14a3adf2e0ae632899ad45d134cad932dfa0474c257d27ad0319b42886f6ec226596c790318b82d02e3fe9f913b329635994bfa3509b5d789815ae58145dd86a96e261e3b40e2ccaff7a8569a9498a0ef71565fd782adac2333e8c2f90e18a8234fd42bf061d73eb522b0ae3a7748f10e3b12fc48a72867a967c65eb596bffc2042427325651d29f75eed628195a97c18d937b19aaa0818c54945f348d1e5b7d665a4a062a4220e314e56cfe75f74298de5d99a26cf64287aed3ca5ec894a234a3e3bb1aa93536dda428f7fcbf76c79ce4853a8aa2f8fb94a63233be0771dc308b448628648402033240d100199f48199e28d9aa19b397a6ef3adf89e2abd529a2c74577ee9c28cbea3ff1f9c5c63e2d6313c55cd71dc4aacbad16cad044c1a40829f25509cf493607199928b95e2dbde466985532257dff0619982889d6b6f13ff6773f6f061997288ca99352e87deb1c574b86250a427afef85aa995a15e0a6454e2559e61c467ec8cf1923e18181312a5d6caa0447183348f3188e9493d2ae9f3818c491473acda20d38f28efa0962189b2c8997f9956ab17eb8a44e1b5a6cd992f5db48a20510ce275fdbeec6fad338f287fb6ce3ba258733efe59e734d2f34694a592ae93ef8ade7c624614ed95ec987d5fac322da2a8eb39a3c947fd754514dbb44b937ece35b326a298263dcb605b493f4006224a327cbd92614228e92619872879eb24fcb4b20a320c517853ad95a93679da712ac82844d1945cf3ff386293b8790c32085196512be1fdbf3a7decc81844c1a54cdaedd62588a278cadc42d8a8c9b40a44594d283399d3587b15200aab5b77bcc778d0eaf487828c1f2e3583b4d536f9a1e869f7fe6578508fa63e9446456cce7072444b880fe594d537aedef7578af650fe9864e820fc54a4fcf55096aeecbe636cfbf47e1eca3166a7d6a2fa44648f87d246a1268467d0a6357e87a2de24b468ffbca1e56e87a2180d2edbaed7a1bc3233e6787c4921d374288d69124a690e324fee3914745eb5e3693994546ecb2423f62366c7a1a87428a974124f2e54702887fef08c39cc5509bda1783233e9d2dd9e724331279d2374eb47fdbc0de53dd3f25d9f763d6c28bd70b1c985cca536b96b288b6e1126d5c8eaed6a28cb7b9666591b356b4d830c3494579c6e76503a4359a63b9dddb450f91e33dc480b6494a15852cdeabd509ab3c8508e9d31e82cfe1c43695669a13d9d62284a5b0f1b6379bd12330c65cf7eabc5be766e1418caaafad55b5d6b9f1bbf50d4515af65eee4ee385f2c7cb344a9fbe51ef75a11c365cab5d8f1177098f1b30e0c361f23820830bc5fbd63a8853e74abd670b45b9ad6bf429edd41ccad042516594615bb396e69167a1f0d2564e5fe3cf95180b451977377d299da38e2ff0811d3d92a20049523b7a2495f2ae50ccf252c720645547855628cd8c06dd416ace56bbe16128808732aa50780fa6650e19457e4dbc38c8a04259d3e72ca16536dfb3699031051952287ce7587b1bca88425164ceebb6233dc8804261d43be9b83a53e45b23236a2807194f28b76ca76a997673de38a19cc58dcc2de4df84728fccaa3ddfcf84b25052c8dc3822eaca5e42f983a7ce324775e37a25148418a11f4769ffc79b84b29c9ac6d4e9abb3509150b29562a2f3f6ab7e8e50b4979aa6cbc765d4a4114aeabd548e0825e5cbb00845ad36d3a8d62c2633c97b208308ddeaff79a798f8bc879850996b36fb8698e808328650d6dc4a5f8778f1aa494238c8b85d42b56c194128895639252ba48050724ff9a6b3dae3bffda0a4658a7d67b9b26e5d3e288ad72847089d6a4c373d28665ca574cef6da5ace3c28688e916a3b693276509e951dd3103a87532f1d94a5d88f4254c7bb68d0063272b09641742ce91e361e240307cb784a73161fc4bc059a659a961a5af508062e6c51767db2c73596cfe85e8bd26bda77ab5ca1b63c1690000526d0851719a045397bcedb5969fe513a3f8291919111122e6651fc16ad42bb57d5bb2e8b8288d4f328abd5a8b96351fece6293547efed1b360514e1527c4a48c99c4ae5e518e59e3d14d3fe87c215794c3c8b96d5b29e5aeba15653b159a3dc79c333bca8a728cacb739576aeaae0d0117ab402e545194e999b3880f97f4a1098f1da928a76a2d3d9bc96ced1a30b94345397deef2127afe596d2e4e51562757c30a9d73288d5e800b5314957ca1ea6d527b5ca914e5286363f213d5f21b2245e985d9a8d3ac31573a17a3289c9b485df5fc7e3eda0217a2287fbab65af11132c8ac5014a40eba39ef2aa1d57ac0c00217a028eb603a9e67cf49bf34fd095c7ca22c528a9ccdc99554a68d8cb827cae3b9c273bbb62f2176a2f0aea450939a45bbce73a29cc9c6752bbd279b796502179b2899fc8972e5e26a455b042e34511026236b3b7472d19b4c945b6c0b31bbb9f38ec144393d73267779328cfcb5c0c5254ae246677650e6514f9628e70d73f3523f7a052e2a516ca15ab59cb5d18caa0e70418962897631da3b2a93d14914742b959ba53cc56d2be973c40117922869cfa6cd1e9e1e2724198982dbe67a47adbf5290288af9bf0e95ed0c264a243ad2e1185c3ca298a5f0f918722f1f4794b3b28df79ecbbfd76c02178d28eb2484fe469933265397f4fd7501820a2c0cb8604431afe813f65993b28f2fa2a4233e6c68f65f251e2e145194fff03988d526a2f0f24c53eb6db626776404085c20a224cb3e759426a5c67f718711630f51daac74342d570bedb829e9eb71727243f14eb93044e9463d46f170994fc24214b42a61f25dcad328be919269fc0217841802178328866b995eb234788bbb0c5c0802d5fda737bfce375e23e20fb80804a73378d6a8322fc4257db8032e00f1875e4729b410a27695898dc0851f4a63724293aabdf2d5aac0451fd421ab5afb49a9aeda33c401177c282b394247d33188ff4df75036a534373dbfc496a602ab55ae5239d2447dc084c707eeda84c709148ab1ca83c8469d597c4dc203991828121d3c9c01204f280a9da9faf3aca6b790898e9213121d3cf6419c50949dc7751099aaa3d022954874f020e96b317ae4580048134a23f7ab377790cda1a51700614249f34c4af512a52f4c4b28e828c484abf1a85586419450d63996ceaf952809a50da2a4782f2152ad1604094551b52fcd6be27172848289b9283319d4a1e35800c408c5f4ec318556aaeb5e885b408a5036e1bdfa2e734a84c29cececa3bb94abce2ae9cb8443dd58248c432808a9b494b659ebafdc0e23002284929242d76a1a578f5928291e3c8c1866c7df03408250d89c73470f19754e3ab32347408050926a4f54b5daae49825e80fca0a84f2bf5d97eae65064d92d98167a2783c0f31563a880fca3ab810b1f741de6b0b00d2838292ea1ae2942c539915011280f0a09c516ec39a8cee8d4812468fa312099b12d426a604e9074076f0db8a6d6cd6767bbcdc77da4ce9bddab38c2ae9cb3146eac20b0f742106880e2c11373af5f4eb5695f4395e0f121e622caf00480e4a5a07edeadda675ef6749407090f7e86cfe6988c68bce67d4afa154c852ae728f5b1443a59e8fffb42767738c2dda8cb9497b682c8f6d2d0a9a4bf6ca915974f6cd4b8316c824b641c39bab90c9008d59283d9d77c8998a26291353228b72546d57257e3de9e4c6a298a569212e85964a4fa5a4e3cf69c0a220dc53f53ef79c0a37251daf2879924aa87dad518c52a5a4c315c52c6d379a99740c0d9f462bca1d3e7a86d5cafc7b5b000d56147decf349a17a5a9f1e063afa98c62acab9b9593ac4d061b2e350158672d131f96eefba543c2f426f101dc2ede1821b397a909cdc60549435788efff95e46d3a53c45f61dfba225a76aabf1bab9d39b30f51a7312748387e17182b75f98800403344c518a82cfcc4a95f65aca8f6990e2b079930b99edd21845d96e95efeae627f9d3f038c1714646789ce038a2288d96ad3b29992de91b238711e34351ecec316f97da7da157257dad001aa040bbc446a563c7c446e313eacda9a96ec9fe68df9ccc2993eea0b2f7f0c2035d8c8c9cf8126878a2a46cdc4ba69ef20db24e143483c7e02a3eaf462525000d4e1cb552abdd348e8ea30e1e59021a9bc8956a1d755b4729d70d18901c72808626f8136f7377317b4d5df714ad37f46e8cd89c923e1c0a070eb38364f103343251543ab906119f8454c26b418e1e2513b0cba3818982ce39dc98f6b8b658f1303c3eb048e312c54e5a7a68965a64f875e020d1733c4b94333ff6cb98df56ae4c744cc0c488e0a01e7f610292a65189726c92bf59eb2ce53ad55f988064d1a04449bd90abafcaef775d87c6248a4af6a7b45742cb890d0d491475527a5a77d0d3270c74e0383189001fca31c6893a8046246e6404342051de90ff1add447657e75340e311e559cdb1dd1af5bf144bfad684c70e1a8eb89110e017341a517253325f8bd0284eec16a0c188c29abed54e27b3ecacc44594c3a99f29a5ad5ebf29692f3cd0055b116828e2465440231125612a2bdf422addf8d34044d154b56bb9e8cad551bd008d439433a6a83e5b2d254786286957b2296e3b3dea0b510e7237b37f75de9c2e4294cb9352b9e5a1f785d4204a4ad9e7bc694264b804518c371327751c05a2f4f2a393e738024449ca4f524edd4787d7f9434965cab4a1498dc8eff8a1b8afa24fc8cdf578327d2896f2ba5b37939d35cf8782d46b672feddf43618468193aeebc927aeba1a43967ce2ccec6b59af3507e717275eeff109a523c945b67659d4afd69467728eb79d89cc65b7d49ed50fcfd10f2315665665987b2e634520aad47d806910e45a5b3f236cf2064476f0ec5b5d730b951b5c74a0ee570abc3efbf8334add18843c1a307294c9ead092d1c4a4ac676f398f37f5ea13714958af5981ef32aa5cc451a6e28a99bf92a2dfb37e6a03614cd46e653174dfdb2c386e28bd4556f7242c8a4c31b431981c61a8a4ac66f0fcddaad3d4b0de5eca4e1333dce9514a5a1987df46a56a33c6be5a2a13c9f1a5ba7f0689ca1285aa78b5242cb5f7b6898a12c4aa927ad19b3f4aa0cab2b2595bc884f8672fc9631ef2eed8015688ca1a0d327a1bffeb4d8dd88a16c63eeaf8366a136da612847e149dbe3e5aafdf31134c050da9c95cc2294d8acad2f94a327a93667e76bdd0b2559994ddbb2ea4231fe89be50236e3e9eb850faa0a56befbe3df9a22d9447e3632e9db46598480b05a1397730b953dab49385a26b4e426ceaf678cc60a118568a68165eea26d557286f5439fe42c80a65a9b4fe1c2223fb65ba0ac558df32b6fdc8ac334c85620cd36f3ff3309e9a423909799edc847addd19342e9d5e4a46fd6d9733e0a45a16335e87e1dd2558342c9b5649815d97a42f9f6b535899576dadd1227144d2621a26fa6e5b4d484a26919d693868c3a6142e13579341d9596634ab50484eba692399df21d898186124a6b326999b5be48219584b2705971a95285701d474249e69fd7ab7da4b97847287a14ed69a6fdb386c60805219a47a4a9d03268bd08c5de93e26dd3fabe16114a3aadd817b1c9c653436308e5fccadf94f67e155a468186104aba85d6a7cb95c6c94c108ab14ef878d6f352b50a84f2eae05a2b991fa38807061a3f28b7faceee6934c8b6140d1f947edcc3cfe8a9549361028d1e94b4cedfc955b256eb130f4a9ab6624a27f7edafc78eeca5b18362cca19e43e9bef378eba0578fb15309d9b14a2ba09183c269b1fdac5569dbc830035d4ca08ba38183d52917ba5a3edfc645f8b845313faa165abb5baa9339ee301ba0c007f876183148ec787cd8a29cbfcb4743b5b87dac161fb428492d74b6bd13f014c3c72c8a3aa6cde95ac8d3d23b591473e3e3e9bc2b6d9d8c4539ec4b85c81ccdad5d5814952b1f217466e92544af28ba68dbabb65d111fae28e62c37be46e6b49f52ad60ebeeb4529bce56bb307cb0a2185a2a713a7ec8cbe80ef1b18ab2e7d559869e923eafce3e7ca8a22843d8b63e93598e6ee1f0918ad2fe99909d5ddeb1835051142f393a797c1637fa5314857ebf86ce1cca53d8c504bae0347c98a2a0447a1279a784d4e5ea193e4a51947a73ee24446ba9b48965f8204561e55cd3e6a6995732a3289f98fe4b6d3237c41dc387286ee42314a5f71742bc79e7549a0785a7324813d273a496750f1f9f2847d58d0fafc563cea5153e3c5152d7724373ce636a8a614c4c83e1a313c51845aa2919556690157fe18313c7cfbf0e9fe4c49d76f8d804a6daf7bbfad04451bd7c73336ea2f091896212b26f931e5fa9a58ca2de063e30510c9d65bb55e7eeccd5254af235364d63f82db3df12c54f971ed346e5a973ae122525b7fec2a59e9a889b124531a3faefdd6f54aa9c071f9328aeface69bdb56e37d59228b62c5d9f4d6412b79d097431811d3714521ed82339f3c347244aa6636ed3a3395595ba8704923a267c40a2f4e2d965cea75cade71f515a5f4d2f33cd736aa1525e2ce1c3110597c15434aaa711858fb9df46c8d1d954ca889209d5e2676554457b3ec6c7228a397eecd35b9b36b5ab88f77edfbdd484d47322f431b5bf7bb197dd8c95dbcd3efea349359e46f84044b93c83866b211e5b67b36df07188e26d8e9937b4c636438628c7ffff3419fb6f9a17a22077ce5e84ee14693a84287de9cf5969b54abf5c7d0ca2e4e2433c4b993b6c341f8228978bd6ea74dd5d7f3a848f4014eecc95cd68962a3d0c88f27fafeb519ad9e3b97f287836994e3de7b43a2bfd503093fe3ae874ca450af5e843796d75d2e18366fd61f6e043317d27d77ac42b59d1377ff0b187b2bccab7145aebecea975138be061f7a28e85ca667a32999a644f240f8c84331caac93874b997ee0a12ca7e539eaa4c49b1695a01cc6e48c8ca81b263c1e071f7728ecbe7bd2344f52fea8928e2fde8e011f7628ea13ea7b33dfbdaf578762501999eeb266eb562724eae44421140117a80f8c8ca8d47428d7fc49ff244cbfffc74c7328a96975a6e963979871646464e4430e6e66e9614f0929dfc2e0230ee5ce42ebd53ba9efe78443615fca7aaf189d496c29f8784331e71c225ca8fea8f3f6e186726afe93c9eeb7a3794afa48b63fda507c97211f84a75b9319e50f3614a496d035ee5a9cb04f8f356c32c468979125d22fe91343078f931e888fd5501299d3dde790d73d4a257d24a912ee471a4aae3e660deaf653dc8e8692d23a46cd5e1befb4c623874146048e241f67f0177c98c163f05186167c90c1974274f0797b1d1fc7c7184e9af3a7a775b5e4430ceb3b2de333c6bd530a4359672f994f676ac2e3e4030ced261993d68cdcbc898f2f7c78017dcf1f9a7384dc68174a52464fb241738392ea053eb8504c376272c7e56e78690b652d0f9f9aef7d68219d3cc8d79dffcd426975d2cf0ce1eeaf62a1f8e2bdf53c2719c54c923b367c5ca11cb36e1d199b75d2ab7f58a1203679e7cff9a335fa4715cafbdeeff1ab493e8b1f5428b87499a364d4e8d1be8f2994d3a597547ff358f5011f52286919f512e255eb947b14ca7aae35492d5bb259fb0185b2eb20fec56d0cfd2e7c42c9c5aad6c1a59d6d6785f870424967aed021cd4e47d36942410b7351a28452cf3127880f2614e64e78ade670efbc130f1f4b28bd9b8869128d693ab98cd2c07e28a198496916d5b2839f6b95f4917c24a1ec516afe58e625ebcbc007120afab2739026d763995bd26787f87184b2d49749db84fded9e4a7aabf0618472dc9cfb3eee2613a65484d2bc8e397dd84a994be8830805e9a53a787f7819d62de98b812ac12719f918822a646cec8d9c9df02184f2b8563242c8b4bad1f4819111a45e80848f201495f03265b23db5a8eb0408057197a1b4fdd7a79597f4ed305d3e7e50b6fb60ebe2d377fa70e8f081bb3ecaf497772431b8b1f0767bb029f55197d9b7d6da31060f921c37485aa0d48ebef1c183e29a7fa94899bb646328828f1d143d7e3855f578183974e0f00e7ce8203b3fcf9ac3e9573bd5470e8a69a4dba91272bb198318820f1c14a44e3268cf52cb1c67be45393395b690c1de7d7326660789f2d20dccb045c13e7b2bef3c2dff63c4b88154aa45b96b35e4d99fd43b6660062d8afb4286860f9afb5a5bd2b774289269560f326bfd05396e9094201ee690982cbc06846c410b215928b616eabc64bb438512160a3a0afda339be7011325728673d5aeef84719326bac50deaca39023931af910ab50d2c294299db58e0a45a1e6755c612a3f440b99822ebe5b6e5e7fda9df453b39cd359ac2685822cd339d2f4abce9f4bfac6e07123470f92a523e5303b62a00c118c9028944df4ca3a693a47dbb20b1054c0c40b93852150286797316afb9c4f784895f40740e08517275e8c5c054ebc1819b9302a00022fbc18190943062db8304878acc53c4e701c923064d0827c43c813dc3e317aafdd5bb85c10e2044eed57d566ccef7db543c798db6d4b5d48bd439a5096a2bf73f2538f925749df188764871888dd4d148f1b214c2868ed38a1a3adca9bbd045e6bd7385a9a563ca78454bddcffeeed3b3d6e7e5dfd985aa17337844248128a1a850a8da2cb43461e82846e46f3453c4d5f7d3a9dc5099949e57384f2889519ad637b482963012314646c3bcffa73086d9b058a50905126bd234e073d37d9208408c5b3312d63d6d94f7b133284c2e8ab15afab33d4268d20440825ad17f9326a944228e91083e4053752f36208744382503aa5935662747a565a6c011305031d1ad810201434b67b501ace45c670c80f8ab9eb69339490a94458d2c71de283b267d01a36a39629c3a54c7424a407e5db121769523d7f55257d8d3d76e4b8c0c989498f099c281e6348e0437880c68cd714b15a9bec246407fbf77bef9b68ecceaad8aa6ba636d3497c9085e8a0ac496f0a9f4d5d6d3a25831b27189283828e222f5cb63a3242724008c14141ea5c1ddcb4873e99bc4541caa04d7ffc90b275b745317cf4ec6dde6ed5b7074646a050a316eb8f2e176ae486160579299590a731a54ce52c0afe6a63567f99d93a974541a6862bf172f4c6b4c6c25aff9fd9598d71aff53d7d1abbdecb3e8f1c164513b71f34c9d52b4ad2ffb4dfbdb7a54b5d51922a4ee757aa33748bad284975fd795ef8f74ba51aac28ce871c75ffe16aae7924d458457176744ed6d46356ab2a5cfb4cb2a3ce2d15055f7f133975b12623541464ea0c8ffb1131539ea26863e6add6a44c517affcda9a93f8954ba1aa5289fde986367326b90a2ac466cd8cd77d959d5280aea236adf6654b3864551f2fc314aadf2f6b45e582314e51132a87dccaf1aa0286795a58512edb9c3c44d428d4f145d678eeb729bdfe5e6899286179142ebfa389bcf07353a819a4b9d1eaf53ee1cd4e04451fce8e798f5d6efccde44d96c75e53364ccf97e4d94bce3a8b756dade75be2d0946463251dcd8fd0cef32f82975daa006268a3afd85ccbaf22553be831a97286e3e19c5fbaa1ce9f991911fd4b08441e7362d52f8821b262a75250aa2b1d5e81c254aa256ea6af128f67d9e4441a7d3d7698307a95ecb273524511442bf3a9d56a7fb6945a218de7ad56b35e2d37a205190a5e58ea9b5513a263da2ec6bf799b4ca172f764714b553ddc487b8f8a61bd16647bdb3352f23bef1ded3d2f0d8b6cf117daa5d4a8d25b4d0223c15cf39b92d97fdd71525c5ab3e99839641574311650fab748b7c25a3ce578d4494f5d336ca8768fe7d21a218457fc6f25f1da2b8e93caa97b641aca80d518c328cab3a1d3b5e88b2be983eede95f9e4588826eec98ef4dc336748328c9507237f3ee89c64810458d71e5a57d6c0f37104571d79f5ee765af0b01511027a2a5a79a94ab8335fe50162136788eb04bfac2d081c3d30f69fd2be7b593f786636d1ff21b3f991d638ebba42f0c1d38f2d4e0c3e231d74b5748994f495febd0c0aab187ed5fdff35e7dccfdd73e55feafc20843870676e8f86264240c1d38d284c78e1a7a28ab2b7bed2b520f43062dc82f4c4062801a7928a9d1429b6feebf56e31ea1061e8a1a574f485d79b74277878288dccd8b9cd4ab5eae841a762829157a56bad4599ab358a8518762506baf4247483b0f97d4a043d974a36aa19bbcff73488c50630e6565777a4c261d579f5f0ec5cc8cfd283364d498f1380e89fc79bbe87eedece77676e8ac28b5b1e11118d4804331d6e7fd389a7f43d1a51a215fa31229537543517986d01f46a6461b4a7255a81af16175624ac068921ba3061b0a729512ffb751baf6d01a4aaee4f4de7bb76fef1a6a28ae2ecf764a2951daaa91866290caa50ba9dd837da7061aca5a5574925dab2fb375866206935b763aad28579b61eda65a882c11fa97a1a0ba3b47b19e536ab9644074ee72b131eda8a66328be4921bfa3942e6acb1a6270e55b7e5b453bcbd4e6f64cccbfbe944186110535c270d67faa53a9f5468e1b2424ac81084880031aa800f38801099f1735c050d234af22564f6a6a5d8d2f94bb35098f9ebf3327119ddc1043bd50f25c26f326d4e84259a6533115df8e4dda9313836302ef841a5c28bcc8ac6e7afa7494ad93310c18232335b650dc28575496722dea3226a6470570181cd4d0422fbaa531db672be77bdaa237f77585c9b7a42f8c43316a64016b60a1c6150af6e221773a532691150aff3bdf3a7e543ab6a90ac5506263ba387d0d2a94b43617d933a2653e9d4249ce6dec5c3abec85b0ae5d09a7ee453feca31a350d68db7d5905add27d58082211aaee3b2b36bffefae8466a9857d529faaf1843bd63fc6cc5e546b635e7f30fd71df5fa186138a2ae2ad54746526e96a42396dd813a33b27662b261434690ba99f4f0661e6128a4987079d9f939ee498504309c51c36a846124a3ad7df8492fb8e314040851a4828999787b0cf6852ca4d04232363f0c023943d8578e9db3a2323273c060fd4420d2394337b9b1a0ffd54a107630c1e232338851a4528a7f51cf769764c8b6a10a1ac3ad39fda983dd7324328ad880eaebbf5e7cb308f1a4228c8c7f87173e91fadb9d532d40842412a616a9ecc5b2a7dabd6004251f6de4d3e7c6c38b1aad6f84151ff4ba694ff20dfc61a3e28dccb1cea3a64e7ae5bb5460f4aa636b6b215a11acfe591c3b0196af0a0f02e56d9cac786d6a92a196aeca068ff3bb742da7692ba57a0860ecaab2963378eae460e4ad2efa5509b336eaf1a38286c6aa71a0dcaa4c200728ba2b68d2d2b85877f8f406c519641b897bf6e9d3c466b51109a7eb59c53b3ee1f082d0adea765afc912763aaaa4cf6464046416e579e1fe4a6abd9a1fe50a105994552861a64583cedab71840625194b7a57fe399ee0510581473e698a171633e68ea15451db56ceef1f03adcb627822c80b8a2982e95d8f40db7a2a0c144eddd646b9f674f04ce8a9267bdf17663f4ac13afa2e0ae994e69267300a28ad28628175a0a911bceb4811b3b22b0f782543480a4a22464ed7cbe6aa949331054147e53949e73f1325f0739455966275da25d1b041053145dd348f51f53bc6a5ed247a283478e1b09c618263c4e6eecbd6064440c63b27400528af296ebfda73291a2ecaaa5d48fc9fcf57846518ef798da1b3eabaf0d88284a1e53c60e22758e1b6520a1784fe5c5d53f5bbb46dcd37fa90f329a122d288aa63a43fbec07f289928e3a65b73b7952bd274a27d4bf1cbd01e94441a64a216e5c47cf2973a218a349bb925a89f8e426cae95c8dceb4222d8068a2b8295ced889342b7c8790c209928bea9d3bd95b2466a1915403051d623a5dc189b62665ea2b49b7fe49e1229d36759a2681b73cc2dd547656202a904367feb5ebbad2de39e6ade31ac6c59dbafc41900a1445155967fd2e1d974932651385dae65c796a555a8209228681f21ba3cb31e91287994c9638e1ae5acbf372051925963abc970c264ac0fc8234a231baab44c1bbc6b64401ce186d6fea6be8a7bd66d7ec76d2ed51e5c257dcabd438c1bd988c298144fa135c9bbc694f48d71485e70239124f238c9718c287e52672bb512ab3bb2bb944389a14a76189330f6f0c000594441b5d69341b729b99e9898124442a223e9ad098f9364104594e3a85a93254e9cab8a2487c231c60e1d0824114599b399bda96369482c1151126f1fff755c4bfa48481071e050480f51ee284ba9d2a6db476efc85094850006288724c7d0d7a22b3b727474670e050a810657399e4cbf5d06a421c3dc4b0234449756dd6d351491fba690c30c3b82101e741143fc72e99d159842e21104194a4901bc58acc9b2aee1c111819192387094449e7cdaee24f5cb79d3b0110401454f6280f7d1af631470880fca1b442481d55be8de9246d3f948590b965968dcc9a34df878256a1a5afeeec501a620a80f0a13ce25c2aef79d9c9742429872251dcdd4331a8973a9b35f7efcfd1438709c9185a02103d1454d7ce47ab4a2132c8792826cd21ce65d4e69fc70e1d247f3d4e6e9884b1207828ad4affbc1723b546727203ef0e9dd8767ca8addc6cfa77682933b78bd6f7172076287b272d21749abacdfa3a94b5529719b327254aa4d6ae00840e65f139fff9b8e7338f31e75030cfbe9e7642dbec8ac38871e39187d18163ad1cca2b5d735b6de8915a158374813072180f8c8ca830721893fec2042409240e88eb3cae2e773aff233974e4181911a3478ec601081cf4d73a31cd7119db1013e40d05594a69a7d53c4a7caea40fdd50184d2b7cd4cbf8dc6a49df1e481b0a3a87d1d97f71499f1d0c74ec20c1d1438c679700081b4a761b34b6f67d6ea9b38662ccf9a7b3941f3514469cfedada2da1842b0dc53e8feea251942bf56ea0a1b42be27dcabf7f75903394e67d5baea7d669c357d27728468f1c0d6286e29a788e2dbf578bd5268ad12347198aa5a4521d359b945a5f3c7a9cb8098f93042143695ff3ee09152da3780c85972d61b6c175df63ac18ca59bf262f723746a95a18caf98447d7a8d5b3652fe95b1ea887098f0fdc81a1d86332f79fc9e4ccbf01f285b26b0e6d1e85895f8d462019304646be30014918205e28ed495dddd3783d4d95f475a1a8a3c96eaf90fe71a17cae42ae1e5549df49cad143c7d942597e521f533ee7f5c829c70d18e4e8a123872b00440b455da274cfb87772331948168a2ffbf14c3ce6cc9b5828aaf2b5f50c5fef605fa1189b56cd631a4bfa16012056287fda6d10e731978766873181418e1e795c85d2aef48f5a27513246d7f1c5c888898e0ba01b390c1823232e03102a14b5a50e5a95bcd2ad7590291475764c99f466247f263c4e12440a4539ed911d5e668fb696f4a11b384ef810240ac520faf4a827361651faccea5d292553ea8c81a188e28eebdd69ce51948ee1818d441485cc9c4435696cd01c441494ca4f9b2a3bc68b78081b86e042d820c40d2215ffdfd5d3147d4df318ad51df6a858c411b82287da615bee605a2245c8b5197c9536a2601a29852e894cdacfc43717b44aaa68c32648e1fca293b86fe8936fa80dbea7cb9d6ab77af777a1ddf84960d3ea4396b77d12ecc3d94d3e33b9d9239e7cd4f0f98cb58f726b4bb051b7928deeb868c8eda8e2a757828084d9db1bbfd73c9168f0f2cc1c61d8aa1649bf9bf67a99e9c60c30e459142ecbeeb5d71c23d828d3a1464ccfd35c6eab460830ea595f952a694f71c0afa696fefeef3b87c1eb02107b5accd7ce169261b7128ab7f72a941acabf264499f1e8361030e85d52b4dec898da694bca4f70da533712aa33bc8b859b3734331778ea8f8a855d2f76d286c8e31e7cef18514e70d131eca061b6be02f6ca8c1461a6ca0c19c9532aad265eb910436ce70bf7dbb7f7fcc6ab6b68d08d7b28fe9221b662869c6998f9d5d8897d44619cab221bb458bd752474b86629495ae84990ec70e312e3086044e4e0c182018b93194e693d2a7fb651b62284811afa40eff1dfdfa1b6be95dc00b2f46d0461818a1b48af38e7d499f180c8682ee781c95d318cc3693a5ff85926af9b493df34515f5fc08617ca6a7b56baaa0d2df296f479170a52c693afe568c73117174a4a7f0c329ecef2ad63257d761bb0b1859218df55ef20af57d392be3e10d8d04251c6b825becc5d86fd4eb25052a9f436ca4f870e13f5c20616ca5bea29d447333d8623b07185c226a937fdbbb6a4cf3160c30a85dbbcf7bac5e5878655288b75a52a738bdcd12b2a143b289d45bda7ebf1baa4cf4360630ae5d269ca5cc95ae9e371c086148a39b55ba4e9167dda2be933310a07da0ad8884269a49ba6d4f4607bba120bd88042596ec4bf6713d7319a8d2714dc456aa9fb131a95d686130aa24d5ee9126d34a19c317dcad89217d3bc0d269465e65ca5565eaf48a52594b3e6c720ef9febf519b0a184a26731eea295a895ab29e92e36925090597f2b911fad75150e1c37323032a2e306c98e93450249006c1ca174cae5937dc70b75721b46e0cdbcde4f6bdc6c76c3568f27afcdad73b3928e808d22943bc876089de440b04184e2ca2a3f2144f6e9dc43282a953246d5554a5766ee614308fcc9d092fa531b41282bd1f82edd5697d2513680501cdd4a35be7589a96ee3076a772d4e4dbb37674b03367c500c527eb45bfbba92b78d1e785be7e79b391ebe66e3e1ba36ee656cf0a0acd42bd5dd51b583927ed07fca438f8d6c74504ead99abf3d8b669be0c36725014fdaeed5cbdd2d7a80f6ce0a05c32aae87e116f807f20728b729e9ae6b4d51af54ad9a2786a951029a54afafc6a51d65a93ea569750ae66115a14bee74f4bb30d7bf59945315f6ad73cdd8bc8a2341a9ab7e6b4c854c6a22c45dc5dc5b493da0c2c8a4a4877dd613765c5e915e52eb1f1f4203f0aa97185a1e377bcd5c26b05fee75b7fa21f3f1ae36ecee9a5ea0e2b0afa42363c7ce6ff24a683c82aca1abfe21b5b2bd1a5342988a8a2dc41f5b7a6faf3d63a22a9288a50eb27a5162a4abe72266fd46c90b11539454aa6ef8d281d67f21822a6305cebde5291a99191318c8989b92d45e156e7989bd7be8352841405b5e2a5cb13f9285aed967bafb1f75677dbfc95adddf613164551cb6410ea478c103a2c128af209396fca55da9b4c81a2f8bb31df858cfa44e1a4988e2a4d6fa9b2278abb19b416e2c596d06f270a7eded2fd451b0365819191140355824438b189f2e7e955d7a593d29c3a229a387d3dde4cf55766e54ee72c42dbe7e77fa5229928ffcabaf43ceebf3a2ae96330443051749d757c293ea34cbad084c70e914bdc088a58a2242b4e36b98ca944418d522def75ca9d7d9428c85c265d6bb1bdb24c2293406c4bed4f114914b47273b961564d7291287dfea85a3e9c4819c5068840a2a89927a4a6d5b99ddd4714a41ce9ebea746ea9adc58088230a1eb452a1a5a48a9159a41105939752ea50b3b5ca146184ead37cad492da2655d8471ab5e37232fb6ab779ed643f889ff2465121251840e9144a4796ee221e6e7a76deff56e1b1f446ad7714b8828caf4d0961b3bc98cb5c8214afaf2a66cb5f2919aed1c8818a2f4629f73c834af378776205288b21cf5729ea48910e58df7fa78323ac379be2727ce09101944793578f6beded899638268e4a63da5431388928ccb9c5c98101f1f0444b1e6fb57dc7a5e2d637f68d7ced6c6bcfcc3334684afb0f3f5d930faa1dc59495b4d55a9738944fa50f057171befbe939a54d2c77c288952f162d694ca143a913d9495bb96adb37afe7e666484e4ec05227a28e793f92f5607556f424d1203913c94b5a7c8fbfe90d3df0d44f0504c29329a95a78f2eb4923ec413121e273a4a62a078b16fc7c91d8a7e233453b4fc47d312b1438ad441840e7822733839143cac4c4abc72b561b2481c4ab6227327219ba91f240287b20e627fffcf8469d28abca1e459b6c4f5bfbeed2ee2866214359ec994cb24372bf7106943c94f74eb490df26675d8a0ea96978b979aece9a8e8f18ca315594331356489d64b5fad5e6a2849fd4c8d725b33ff9a86f248f9bbca7bed454e11341435cebc73098db99e1b2929f08ef77a86d2aa3661b263ccf2fde0b871ac09226628a696b155a3b98c7ea732147674ac9152e899cc4264286a751b4acf6b0c65e9994daeeeccf9845e0cc5d6fb7029b3aabdcd2261e8ffddf5cc43eb0a114a56d73f0a86a2ce64a6b469902b5d745110f94259a7dbd98d5ab24e8d4646f244bc5012e1e2c5e3455372c2684a4eba50109e75b6acb0efb8503e9d4d4853e273d694da11912d94c674cafca3d1832606aae44c44b4508e4a09bbaf1da5cea45e240b65294f96f27c5e0e112c94a35c55ee1adc4ea7d4bb0041058cf2804237707c606424196552227285b2fc1cdb42d5b87eb5ef10e3c6c8888e1b2256c02a20156ee40b91299473e7ce1c6fcb5544225228cb6a4a19e74ed67c3a0a65977ad488543afa31970785d2679dd47fc8a0b3262f878e130c28912714db44a897fba44aac278938a19c469518a97e6e8111c36e459a708fec99b76cadf897a667bb87dde98e9df14527c284728c8eea355b7f26105942397ee3fcb5caff694ea24044092559b14d39f6faafe549c70456209284e2ebf994a2cdf3b9fc06a208124ee40867448c70251029427a408408853d131b84161ad4f7243284e276f66c5b99516c69224228a76ead748ea6d5224128b8c8e9327dea49579f800810ce9e436afa284a76e9447eb0dcdaea78bab8d98a6a6bea91a66cf4630b19111f94473c652673611f628af4a0247feade3ae6db3f8c2701111e94b5dea4327dfb89d0d90b223b28ca8e2eb308b50fe6b9880e0a1fbaa396be7efb49c5019583032010c94141096fdd75190f55b1f50b13906840040705e5aa75272d9e72bd905b944c7b0b51daa526b6b4455175f2f6ac94d02f838c890e2f5aa0438706c0a040098f1b2308a945396effe8cc4b8dc0426851fe15f3fe4988a86c7f1688fd8ca25dc40e9145416a08f98e254229258d4541e75df4934e3a872a290aa81d6380e00521b028ca915ab66c8f39fb4b494c7490e4305117e83351fe45c82bca254ae635db744549bfaecdccadc5c8b8b6622194ea1856690621ac288a4aa5746dd2d9a9e3bf8a92471d11af519fd049a58a72a9fd925ac88c8df54a85a14bbcd8677d63a2a2a073bcf5d1cd3a56cda72d08394539b6b2cf4c93a25f3cc982105314a5289fb98f1f4748298a2593881a572e4276dd038732d9d11e428af26b50cf2dcb75ae24305039f846513ced8f72f653c2c380a1253ccc0e1d83076a88287e7f0f33b92f31ef8c4fb7d51d95c9cb73c78387d98121a128a8cd6d9fb55aa0282a331b319eb38749cd270aa2f15446e9e59fff7aa29c6e671ae3e7960ce292be1b9d2888bbf7b84c2d6cde3cf7104e945c291d5564367b7e8e3508d94449b3462a135188260adaba4b796c2b82904c94953e591e5c66bedf8b91114c94433f4f766b115a6f690821972826a5463dff0db144596eaeef1019e5bd668554a2a435cbce5862eb25490e1d375418263a16e6e153a2581eebdfa56859335a93287e52ad6d4be96adf471265ed5aefc5aca9aa9e235154b6fa9569ee50e21b24149bf9ad1197773f73cd38b92e85d24afbff88f2a7fbecfaa3b1e44b39a2183663e773d3af640a1b518e61aea62bf4adb48f11c590263dcfdf6811e5cf513a9a3475497788228a29b6e3639e9a1032328424a264f79e443b9a98acb10c2188287dc7c760528869f8160834d0458e1b21872878901f4a9567741d63888214277aa4ba85280a99a6b5f68e79d031841065d77d6f6d42744c98218328297ddaf4b6d25953870708114451b494ae754c6db4cb94f49d3939b9c1238711c3c7e0c14399ece01e639864208ac1b4a5ee0e1085b7131e532855916955d27712468e1b2637cc8ebd3f14a5a79eff286494eebca40f470f3170f4d8c0e120c40f058de22bc5c9a079755fd297e3c61143072231312ac70d1c2417c6e189dd0542fa507475ef3969f42c8327840f85ddd4129ee73ad5fe923e2f3cd08585eca1a02aae6626bc65df0bd143c14b4991f2b5cbf570b10258010c230fc5d4d9afe7deb4c9d0895924a780103c1463ccf94a8990b254dd3072e0d001c68917232363e0d0b1037102153041064ebc18e943c81d0abade429dd83fd14a66471262871d2175f85547bb34e6ffce7de6103a945ef4fb9d487d539a436144b88e31bfe8cfcf722869b0cd1b99659dd6350ec58c72f22e6467570fc3a15c27f63e467d216f28bcf8342e3dcbc4e3353714e3be94d918c4078190360420840d6b50030042d2208010340c20e40c3b7af05027020831c30042ca50ec161b35e992428348650742c850daf2e031e4d78408216720640c05b913fbd2ef3072281c3878f4904088180a4a29e14abe69f653ba1c3a6e90e4b84182c3dc1043478e3170981e38cc0b542a0a42c250149e2927956caa9d120cc53bdd94524b543e248a478f07847ca1f0b9737e69175a69ba257d5881102f94949f6ef70c1ff352cf8b902e14fb75d2c9a4b75813ad094923178ad9650190a3a85410e61251241006438140281044c1f0700b131308002044268b85c3e1805899d60d140005523c2e46442c202a20180c0784d148100e0642c1702806622088a120862151a6c499e900500d8700781a082634596a006bbc2bcef2592a00bd71416843c969aed2a3d427881195800c8aa9a892550f145660f14fbf6b2aaa1ca33cf7ce165f828c18fdb792b794d26d1f40e26b2b38b6d99427ddf06dd341ef713a69fff545a4d55bdcc21886973890367e771d3c7e6fcb731823859205db3ccb2a40909f64076fa79744e606aa697311a5099fd63b08ec577195f9bff83e9537b9cc05237c950dbe195342e4ee63b0d23644f178f4981cfab822f835c276d8c125bf8399cc29c2181a774c810c508af1b3fddde1f05431cf794e0af8cb58f60091d3a42c5062c801ca5c7f4d38f05be99d0ad5bd2cd34f7f197aa16239631084a1ac37d41e539e0a17644c8c43406f702e38ef7873262c56be94c492a24557cba8d0feaab909974a9c46ab29fed2c51a557339ee2c1e5a4fb32cbed9d1a5b91eaf32ab87c9d9324d000a3757a286d67a9c9f8d76a820743b7b7ca0fdc367e6b26e4e23aa78a69bc202d5441fce5c5c69cb63e8ed3fbc767d4c69015550b11b296fb9205ed41ba803396ba7f86eb590234bdcc2c7ce9ec53d43d209bbc0d30f8d89bae3bc3d4b2824852d95b257c058ae53c7917766a890ba9d7e043e95e8d9cda8bd51f2017976ec2c9e2a44eb7c148eb3e0d0ef34d3ffc37b58193d67c5da9f85c78c3c6b5bae9c10f35aa141f9a3ff419dc8c758c32ac590c5e3bbf56ac54113e645a30df005747f1829f697a96d24b2ddb9ec392e90696cfdb01d047166ef431105e123ae43caa49fd718a836dc286ca13292280bb251a3272391f8acf73b3195fb644527444f16d42b2aa0c0933538c52b18da3964941fba5e3213a8d9593cfc32509cc9813f42006e8b00cb1526e7d25c10bb6a268f46a1cb8f74d2136b9309fdfba064b1e32a569555cc1d3b8c6453c1d769b47471ea3e85386bb19a828159b113416532b820dc516f3cce3c9ed0acedb98233d66c53031c95918743e51ee379e682426ac04124b140ca63c06048c67c8d6ffe11c98db704223e448718eb2a1b4c3cec68352f372d5f15c6122539b5681e00f12549f397a2584d89926dd8f079c5ed0decdef4d07edcee9ecea32633ee909ee92245c7b85592fc9398ffd9b3a9ee58b39394b650d9b5b24a04d83c59faf0d76d35bb0c9c83e78abd0bbe026660c6519eca183c8bae5f033505b0e068a356fe1aa0fdd6063813331e0769e1d0fa57be0cf0496ab847792392a3f10ac31a7ead284f8480144781a81a096da8077e96f240e9126b2ad7c6d6ae1c7ed939f4d5d05958e8400d1d58aa079fcac5431575901d66305742beef74036a2d2916d45489f35e8673fba1a204e679352626b64d19440482800495712911c0a2248f73f8ef3e07abd5225cf524e332021a3f81fdfe27d87dafa1d110c0e5814d95223fc4a45a7a8303d7c4dd8504a90d759b1bd2f44e0d53806322914bb9677f6497614ade79382dfde525a7f2fad60f1c537c697f8baf6e90f5efd3e3923f27e84738a25c8462114c7ec2ce0602a772ce3a7723ca5f8016a5eabefd97b8d71a1944a215ec6f8d3908d6fc82c433a2ab2f9d5c7a764b0a008966b5c92a1410b23be00b50127c615fe2766ebfe3a74ec78158382eb56579e044eb1f8e667c026ef84bbc185010cf9dd9ff130c05ba73d8fcc42291c18661f7634131f2750f03ef45033dda964d172dc3ce5fe85489ab63cb510cfc31f86836372f3610713deb37ddb47bbde5b969cbae1a548c41e8c635d9f48066f3774caea6a908321510e592e18f7cb5fabfae93ab497505deca6f151a7f5619b86013172c00d32194a17dbcbf89a34f7bd7250bca83f7e360035d08fda67a0d2e2ccd32d13553a5a45f95bb14f85c47b9028851cdac6d450a9e7528a10d3159c6d2a698689fa8877159f132bb1aebb5bdc918e04ad54b5654ea0c76227ab30c3ad2a704505710825c04437d0cc9247c00f5ce343352601a17b119a930109de1f2c5f83ae78028ac6801b266feb6ea28329e1530a9cad67edfe2c9385082b6b53ece400adf1effa2dbcdb913ca2e894a87581b3847f77450b61515c6c21d424b755c7040175db2c7abd94ae9a31493462e88be1173a1ab9ff26091ff0802ac201383f9465b769e52b830a0600d94d4b16d61f47d9fd617e14b8380816f5adbb810e9bc6d120a86594cbffbad313ede1dd336cc9462d944debc0e78e4762268d30a65b0760ad6647e45d754a465bba68165e72cd33a08cf6c40c751134c4d6659b9643be0315f8cdb015bfdd7ec7c1199648ce8cf4474e456d77aa7a043a2e121bd0ea690a6d7261adc50c6c83b4bc01bbda2320a2688c1c15838b496dbc06d807bc873abd5fe2ca0f1d0823cc315b6890427caef5f2347c398cfc81c21808c9331623d93bc3c4ab424d5a7a452277e646ca51b3ef7959e2cbb77be0aa33468804b01e00495535d85342be0c011ba209327280de36c71c6c63144ea91dac58c849188f11930030de3dd9c9bb1b0f24d4383cdf28c52ec488194961b8c015237d8b07c91812442f08418853557cdfa8f52c39d6431a9c5328e792db350587f54ed84af6d171058304e3ce23b1c6e96d21f544b792c6bd08bfa801840e8a2bee03e282f90400d2e723f51e4065b466903d19242fb8a34c10de3c075b54ff7b746bbc2a0b20a120cda01aebc00c5c3e57161cc6da577b0fb20a975d9048c5c0cc7e114751245844a8cd7f23829721aa3c96ac8b146ebceba5c066a5b8fbec274f0b79ace2708c209f7b78d3fb827ae0700105bdeb4e0bf0e3c229dbf0e7fb7ccf1816795b40698c10824873edf80080d3ee0268ddb985a7bbdf2e3946f43de9fe143f5916aaac28cb4a030dc5734d9abb987ceefe87908bd4ec6e4fa47a8e230610081ffcf111a8271aad4b5afa24a4ae80ad68423616d7603cd41805d210547e9139812a013aa9d9d12033c073d5cf04b0e3473ca364dc15f97344a7f00339b3570059b0a6e3723e727c2cafdae484f9ef661a6bf255614e579826f59e13fa04b33fbe6cf81a62655f29252c5da6411528f016498fbc8fcd6d85793b58e21af9edecef59ca7248a22f919439ab38bec7c783f4cbc8700f38dbfe88fdc278d84fe73031c7c5fb7a091939dbc201aed8768734f1a2226a50be270167f50cd95c1a0ce95f85ebdf85dc51af4f373c940e2c843129a095c3c8df875fab88c88ba8eacf12390b9460e3e0c57211e447a12509b1ce8e81d663b100988de8ac33117a4ed0610f687e7aa9217f2d897f39b4b0ce6c924bca3c8f8015fa914d15634044e62f19f27d8e415d66371da668444b211015c93a0aed5b2a719dfecc8fc4894912f1c117c98ea7e72f6e89aa304a94b6de5f2736075d3a7404418b6e5661d15b5f98462763d1f2349b6dc258ef68d75ac21c0d1a3cad98d8b25d64ea69d67b2bfe5a9a1380710bf908f21b93b289cd108efefee62026d4cd3169461abe6ac11209ac181ba734cb38c772801d707cb0808cd139552e83d5b559f3060474b9043722ed9b9755d6b59479618b6c47190ddb0e7293602a8ab6a009f080d9ced9be9d04b9ce2f26eee919b58c71aaf04ea5fd9f5a7641701b27dd954d66a58353ecbca51e111f3e3d7233236b5e4dd35bfaa7fca354f96cb7340d1bb7ef61b02411371f58b00fc255995e3fdd20237c4be5dae6f371becb3e60c25d24772b7aa9e83f1ec23fac23f936f890653b3f3451ba85952493f45ec76d8739bef4d1fab42927706c8584dfd8489d3ed06bd0695168e7a5c8623b8450568f6a696ef228b714413fdad70c9050286549c66dd980c4102c02ab20f6894e56d995bc07ddcb8f29ae276f467c60a0924c2481e9842bd12c89173987fe6c961c881ff16400ee6fe6f851e977eb454cee75b07dcd860f06bc1f8f78e7b28dabffee6a424941c6b441099c01090a88c5a8a0653939f1a60d93bc2455e1e2332eb22df699bc8a027a0d9b3b5b47649a53064dbc767cf4d685d8371d54731e6a65467b5b5c7b99b671929b3f4513d5cdf08beaa2b540b84c5dd9a9db341bc7d8983a93bd92290c663920c7a67cd537047ac7bd92d1d31a57a48025c5348efbc47ba93ac81ab737a2fcc9990c62ea5e1f24f80341a57001f2eaeecdc41ff19dd4e4f91eea767fb5cdb71db50f2d354688680ddb5bb50dac542869205b5164219558a55223a939ac7e5d9a5716427ee8047c1772af00510a036b30f29a0a2bc671830847177476d7dc25d4afdd3c5dae8ddb6fd6a7fb76de7d4a9de8e06d08159e59416b4772fe088e85393a88ea6beea1668d444255b1e25c0d42170e8cfc62f79c621142fd8907bcd468fb004773de4862a0ed4e1e74de1ab0303c917c66401179e1a3dd416c9d0b0eb7072c3bf65042d771a8625926f26737dec8e47ec01c34873d4dfe0fcbd9ad6b6c1e04071121adbf883fb33bfd00f5da9cdda0bb1fc05f9af71190a251ba9c6899f246848b494cdb948f7edf9ae76d1b84fae6ac9fc6834fa249b0e228b3a4cffcc2a8b8cafc78754755b570841183072d590b8bd4f86eb758a075d1401bf00296b5cb0868381e8e5cae97d56a537ad92367b0716202fe7c49f3a657704ea2479cf83bfec2af5999dc9536dc0cf3bb0b9be8a935cc48982a8b48a111ea95894acbfa923e46c1029db5a8fc48a58981f67746a26b9f66157b2b6a1bd29420a8c67aa5e0361b31fbaff4b04cd0314d733abceabae15b9d3598a31e2e4e43dcd64f9e89923e29834b003cc09cf3c43dcdf7d58be3b216323bc76be8db0e3adb0dc57dfa19abc7cf72d7ac55cfb099e3d52458f8dd6a90e5b8fae00f24a56a5e54e97901d7f8e550c96609d43fc7239539006d63502066ae10f0014c1fbaa3cfe9d02c0e8b773108bf6c817b7b38dba272c617a74af6ca112cc9f3750fa0ec1de2ed614a5d403bea5ca9362cec72c55c15c5168625fef261a37bf331ea11addd80ea3243b97c275f6de961589566e07ebfb046fc17f07227ee3983d222d5e68dc55c83bf641508d05fd0350fd67be3c3d9e3b4812b0423432359ac26b44525de3249e2fc06fbe491c258114eba08dd81b63408a6d2d91a42262424955ea1c30f846f7d9baec56b676ecb8501bc792faa3da45295b2c0e0db6dee93dcb8b9b32ef0cc115a06a73c53e88f8f9a805bbec2bfac3e8483eedb271dc67ecbd60c411c42001a00b7a399e155335b1ef044530e3d8ce7561f902861efc021ff81514f5e273bb4207e58c99deb0f6cebf5a9e851b21dfc22784b1295ad7342e892fa0a918a881adcba6bfb770db284e47e0f20e0e742301e080c4f020b11de59aab972d20447c3e92a176a9b6583ba934e7b5ec9b088c0d0379407cec751dac6399ae2312a8f4c0f53888d12ed822849708ac791dac733b2e7766e02901b022d461e1a4f9645e4dc3514af6c16be8ac9d7a3c0d5c50ab74ec4083d0c84132e2d16d06f5b4a9558ea1e8ddcb364cb66308ae2a947ead31955c1246f8c700f2e986cba197d36d07acc2fac95f4d7df958a01465d998d077c9d0d0ddb639e1bd0f94e7d60da3eb0e54ca3648faad3bbc1af7e408462214b11ce50fe9e336853b532bb11192cd7b0553c285ac4f012ca78c4e3aa20fc70aea32a7fe28916d2b609248a51081a63344825d4214553c6e3d1325c57f2e75a95b8a85a38e945e945e5e886c21603264f1bdb42dffccdbb647a236149ada2643a06fe9a3986a051e29232f5c350a48565a08453aa389809f9e52a117889ebcd56d19b16d6a1131d236077f953747ac5a1a37279974805d8c9902e88c35f27e48f7fa0079bcda1d5dc7be3afe49aa5aa9e4c8a22cfd688520d9dec20e54ace7a4b6c055227adcd5b3e8c27444267f633393716e72cd4ff4dfce8f2704fa48a9f990bb709010856775ef09862139f45e8a7344dfeb6437775d490bb2c8fe15a0033f238756a32d8668ea373f328b9a6f0d565adade72e0a89eb2fb418cbe8698c30a3479f222ed0e92cee540d3726c7532fbf427c4c8b3bb59c20f35ec33f5333632973a1295c610299d6579820531909f9b29c4e9a4f05200843e07471fa9e3a210a4d4588419498af58e8ad05243b39b42047c11f221e8b34e9cdc639a0fc70b5dc00fc1d2b76456bee18cf6b798b3e8d55e4768f9fcc28edce53e49298250cee5407178cf09d8f342910028c1af190bbc3b0aaae75c7e6bd7241610e826222de680c60885458ed2f9fd07961ae9963cca9b62b62aa9387f72ab34dc9470bf249b8d3c21adfa61c5a88aad2fe94c8cc11eefe7e5fdcd8b1ba3012d61bde66ee30952bb6a006142b955ee12d2af4c52d2f5c8e04538df7aa85eaab90a45c149ea7d02563404f97fa7772658367fdff07f05fababf42a7feb64025ca698e0224071d738fd2205fb55608e7d0c7190504c7e8c2a1f59ba690820a4667a0fc30cd70688da220327cbf8764d3a4c803038dbd19f794c65df4a47cd72968dfaffe40d1b6d67fd16f549ae8d3c85914bafa76b6c2add0dde48aae97559238a034788174a4f7b071a9253a92ca127b95849227fb809327309459c731bd6e7636696408cd8956e78394a7b2ffe5b584eca956d04afb5d66bd6f76143a035174cf1d02dfd1234637ce8c9581b92d5c379f48dba6600bd97295d0dd9b117692bcc53ccfb4e131b1737d5439d14525ef4f7f264839704a2bbb7dae0ca70c787900e82b1ec73b220b3978da82a6ea567dfd4cc352a38839abda06ef04a4246fb4066ca91d3483ca3576f0b0682dcee8b0f2afcee39e5f1a8859966268fc906dd9923271a85e5ac5f7e5bda084e616587dd181bc1f29eb41f618a6f199077a16f108d9b89c500078f3ba55c5663076e9e7cd2f6b1dee7a274586cc603393f2a0914971a0ef527bfa859f3720db7f5f3e6056f9666da91f4682ff638b6b2445c7a81097cb9ea228a88495d135e5d943a7da5c6d947420fd601c696d96e9d6ff7979d36d0e918d06ebed10280da31d2b20a0a6c71efbef4738363b96c13d5982442390e8397152c8159fe82e0cd4659b5f1525fb00c4f3ec0016198ee4ccddc4d96411ecfaed0456e64312a79eecd4474f29c706a7174bef70946f1733a6f5d12c42719d8f7fa379f0444c06f1886815a8047666ba8d8e4f5c45fce07dd5a64f6c13eda8562988c862978298711e83eb03cd0a94a1077b7d6c7c52fedf2ed2150dd080981d1147e5056524c6e9b3cfe09aba002a50fbcf500a2e6e34cf6fab39f121d09ab3b9101d24f7db7cd1ae96c2fe7ca6946aa92ffa816103f1a72966940f6e3df60ca5cffe6232ae74d0663435d843a43fc3321605a30566f67a2e13863d8de571f776ec1041f0e82d2936f17d456878496a57d49496c4b8c2e8989fefacc97940542134d8871186a02c40b70c60e2050e27416b49111a42d0fedd14634c096c9a2d8ce06d14ce09beb353d557ffb46a9842e4bfdf213db119e70f1077fe87861fb8fa8d7b2c279f1a7f934d0c0bf99ba3f5f4c30afd9a34709ce8657687fb35ded48f3c260d043c8c954f27f3e8494957888ccf6ad5050ab27f0ad5a839bce6378fc73e2b9d37b0d00fe6c30c654f75a842aaf102af0760600b1f2a9c726a3c51bc29f041df05767136f432fd35b788e407acf92cc2fd4f9ccbe405332414dc11a5beadafb9338a6612bb3d7400e68071773759adc3d99c6dbe90e6f81390672e96bc19b500213b6bd13712109dcb2dad13a85f0c341bf03c16d57fbcd93768b4c2a1a6c05e6acd82e8f086ce2d9620efd21f40cabc044199e15fa6691511f3292de025623b46ff995a6c5607f729f598db9d3bd5792492c074a3e43444954dca03b48110422440e730205a6b98568d6d90f80f75445cf55e7a280ba88c39432d79cada6cfe29687a99b6e09c815e1263b5d0c72119e0c8e54c15e2649970e51bfc6080a8f5596b5949244e20ec3f8440dc5ec6086ac05e35bf41b395d5e892833e09871c2d716b999692014b2dd9fec7729387a909db560a3517aabaadb85c6453f80b91f0910e14900765f5f4e10a981cb8256848003cbde991c5ac80cb64db9248cd01d0596bc54309d3d01c4b56c605f51f120262127a76c19cd4fefadb561b762629dada45babb2df8ce2fb746b3652e14594342bd2b18dd77e10a2b9e40c2385c2c5ee4780be9cd8dc3228aeccef01bfffbdcd1e1daabc931dff8e0a7aab0f0abb9d33545b05b1bbcc0e2fc811c799172d0ca6a0f26f2fcb1b1731586691200cbdcae3356c83d1ddffece372fc2200bd7c08f39d68a113339d64a3e03e3bac292e93d7d404e2e494fd30dff2f4c93e644fb9c0d5a8d9988f5295404cf6b4ee59a2ac0822243db36619fbbdc94b1dda84d03d99244dcc6ddb9e456ffa97d1f96a498d9205992b80e5a044343270cb725817c4ed13d87c62f933e4abe752e3f979254e41b0e3c03cbb6c534b3f7d7610b57e9b105b36cb72c39ca35d5f9aba61f7fc7dc4011b6207fde141b4c782831c84a32946097ebf8c39f0f29643c93b8825ce318e2c311feb8c3f4690a1af1cf103034a4f960218214f3cde31ae368714b7d9f630a24e69dc0c61ad9482c529beb04984b0520abef6d66f9f8825ec6a1da2ef3ca7293bf089cbfdbc4992a02726ff9257b430a8cf0e298f1272180c1579b2da5053b816ec924317563ac4990f33b068fb541c7d2754b95fa4e4c03b83eda3d86a92b40bf56df82a613404da4d3ac30a170cce1878bed4ca11802c81fc6db0ef2d9e58c3c4c7ce5990add82300cf52fd00a7200730de00b338e5b98b64e621451ac7c396f58db1f7511439e9c056f65a8bb9844f67c209812daab89e7ff9588ba68f7011a852f7a5d009c7c42a59573bbf812178e4c6cb2924217e4574ff82b58cda698dd6c98e75955fe59edbd640d9f248ed4a8c0fbbe2c702b061cb421258152592319cd6547e3bc669f36184a6773f7ef8aca680934021f4292e17120373b1e8ff889c3767aa90172267bf12d6028fb818a989caab05cffbe6837b22de2aee3198c1e869ea5c0f83b0225a44cd4b3a2a5eac60a835312d211aeb047e4ec32affed95eefea94fd2f20315ae004ad86d575b069048fe515781621f6cb03ea1c43afc0e356c72a224dd0cc63a5284f28caca0163141104a3d110bbac98da752ba0e86f815bae043df22e990b117ab912f1f19f59c615575349b6e0d8b1e4743003113cd8a6ed365b401b8e1053f4d5b0717556438260aa704a15449e2f17366070d80a46993e5ac7c22e002142840c049af92525753e0e2be7c3d8e17cc882444837f530cb14a82687cdd5ef09d02ad4a6826ca23eb3060f97e2e6bf0f0d2c1bbb8a56d1c1267498af5935027601a1b9aa014769af0699abf586da0d1693c2f630d8c53cd531a307b8de719b3953a0e841faaf7c9ff0cc0df142176ffa35c355b3ce70c6e3d8e59398b6b766a246e9ab34828e6164cd5ef013e6022b7c26e80661ce164a0adf1f4c2634764712236d4bcf0de70736dca07b0f6af3b5b47456184d339a32a909005a8120cab066439e45db907beb4cb6d389e16e18ac43610274c301ceda7566832076556cceddcde88129f504b3a61f904418741ddc6e34c63cae08fac36919b03cc98edb43b1fc502eae848c5262f7bcb21582ce63407af5c79783d7d78a4de966169be8ddc4ae7ff2105a13b7994838ce5ada6136b352e5aa43ba21fa11b374cdd69dc65b14a92b206a8c7e4389fd7aae0a7e94362af1ba6d0a6bebba3a270e501fa56c7c958d1bd6f0ab02aee91b3b94dc5d9afbd51d12b2b856c8abea9f47ec107eee7474db9a2594b85af529710881f35374eb4fa97ec5423da02c93d2b22a28edebbca3fb229cdd407533f9486cd25ef63bd57172afdbb905ab59228816c62b48d7518e30872caa6613897145af4f59b14df40fb3a58ee328714fbfb7b6ad5112d3fd686b72014b05fa9d662cec1fc8b12a0d4cacdc2ef3e5e7de3485516b317ae126d6638849dbdb66e6d7bc1ed468317ba0762fbf5aaf87c2663ee7e00ebc0821dbc1b41682d04861031d6b07c334e84a032e0d5c67f01b035619a8fb1a4cced0022a0b20289e81451d1865043a3950f4089b6a59014bf58695f1879dfcc166fae99beba5031305638aea9660194608e2299d866c80ed58020b8560c344bb7fb2405f03c0d05a8099790bb1954780e056421c6b67a45b16bd63d4e45369838fbbbc6ccd47358e579cb8eaf7c687279c0e532ce174b301c389e674ffd89c24a50bef37a7a58d6d2aa47bfc57c29785bbbf6ae06de77d8b6122e7025dd25dec09fef4530b5f43db7ba15f28ab3b12c27fab46b70cd690d72bc93b9823fa3734cc52fe4dbd10ca2e519b172efa8ac43a1fdca53ed41fdccce858fd04efb4b52dcbc5c520b7da32ff8a0b9a9813f0a1591668e80907a10f43d15ead61350dd79d50da20a8ffac3d577118f9016df6636930c7eed940f066c6292559653c30ac162668dee4271b2d905019589ff084451657aa365121d994d7a3d2a466994b0fe6675590a7a54c6e3ca6af86ce8259007cf9dd74e638dc12e2178ac38a0cde1ea01ab66f9068e45110903c4fb7acf36f7dee184680da4131eb8662efd16080dd525167971cc45747784035093195889448360b0af3a4c291730ea6868936991697c4ad5c9a0641247a506d3bf7b21fc298a59a405708428e694910030827b7af8cd76e505c651e35e2c6d5440d6ea4ce336dac779ae8ee7d8221015d692ce6a39d3ef6a400a5d83f2c685bfc14691375984ed439bc8e1d1387ece853c879e450d46aec630b5060d817c2eb014aa85d037d22c2824d4f637e9b0e86c12386996eea47b9b98064796fe978d46e36f140310d684366a2544af93c973665d70d02818297f44fefe11a2e0755fc4657b00b7a8a0497171dd0e1aebd7ef3c6e5c0c4a46f30b2f6a2c26611193c472a08cba6002184ebf42fa1c3fcb095224a18696944825490371453d81d7f9639727663c81518ba259b0fe5bd34a3983941fa6f854b38359b7c91919dffc8e2a85e9005ddbee0e25541c873430ac4fa8a0df305e4298286be8906d1430cf1ecbfa8c2a6ba748c9daf8dc51506ae9495d571d2c4e18f623515211d0ccae0995f26c31f5cf6bcb7135b0b08c8f3cbdceccc1cb528746d06cb84437359555503c8846d80a94e150e90c5042fb481167c3347a48153309f1840394df38a601a4e04efcaaa8ac321e81b322df1e7e960ccf44f9c64e736306d3d130a85b04dfae4e7db0674c293d9f9d139139abfa5c662b9d023159d634d0da807f0aaeb366ed581ebffc6b9d21da6e3240892daf622b24543d5e683116c0ee3245c70c0d5f480c811a2533307e1947337a954e4d59b1c5309da24c1429a7ae13c3e80586a79332a04676c8e10974a818940322bb848609b192d6741852b0b9ebfb46dc85b6be458cbd9ea1c69bfb42f1167f607aed115bc041d4248db49c737714b8653cafd0157b1239395e7b4c2aa09411ddc6a71453b91534a05830558b2ae07ed153a8a543dfc3073156b4d0b6380280c2877f35264897830656243b793180e01226c1def60903b679dfa0f9239e051439efe93211246f44fae01f9b054697e7a66c7d374d362720b49a3b47ff8ebaf1eef4b2d3015e49a49c85c5e9965c5899cf58e25bdb15b12caa792e340988b999b68df04c7bce47620ab27e7b79542fe12a460f052f22b07da919c4ac6a07cdd72a955bf34e1197a9953960cb7e39202708305acd8173fa0b8716ab4a7c4a3fb53434377010550ed1bc5be049ae47c837813cc5691b3dc5d2639e89ac393e872fcf3a8685a5da45465d9814674603c7aab39bc2bc88126adc9a7d8dcad62eb2d6092324426b15d11c439af06be93d52da9d977a8e26a40dd38d141ce00504dce8825973917b2f768091b1bc7e02e912b2280d05c2beb1a871131bfe0583661a94ad14890d3872420954115b74bb9d70f2cd757ff8b442feaa3853b92a93d4852504b62bf4178a4a532ddf1b24ca7cb1d4147a6c816de1c90e8f557b7a51fcbfd36d313cccf08b64df6e181cbd1d61c85444d1b1ae540777b369558a2943c6e47410369e7ff7557265ae9d7db1608d902e3a7ef8b35229d397829b06a9c06182625febc3968737ee4b640a14d614b155471f1a8f7a1c4c887a9162340608be5a2f85596c9549a962d1a7c305f7e6c89edfda63842a27c3de553b48633fe2b34b7ca60e2e916bce5b30f498385f0624ad6f1cc37cca7217b5e2e4e8dfbe071a4bcfbe6b872a501f82dabe23399695cc442a5f30e45e9c5675454babe117b29f104bd5678dbbdacf6c012ff0f894208c43d21ccd2d5792b0beb989cbba10e511db389c6504733427ea8a561f9d14d59082ece62441fa50a4316b3f9ecd42137eec5ff9cc9cb39b80dd3730080d7b80d9f1c7121f2999802b14240bc50a050225e080c27c6ecc9b9807ef42e3cffc0b09a32b714fedfc2d818f2363f6f3cac19610a29baa93f88a9db96c16a6172311685d3f40d6d97c29f725f646614384a85cd148e462a75dc2f31909e2d04abce7e60f2cc8043003f71ae91649b45a02b964c994a6eef5c8114cbc1b4925bc03ca9f192c845737274153bbec046da0e4bff09c995f250a3cd76e6060aa78723524ba45293ff9ff2a3552a0c0a613a4b3f1fd7687e1f7ab3108f46ef2397c34535fbc26bcca7d6331683a1e72a55e459dd0be6090fbb585cc38506b36cbd2e9ab0625522c54884d4097868bd6144d4cc4d9998b9036f747d1d04e86b99354d36ebaecdb22d291f15e02830bd45de7167b1a3d322aed5a25b77871650b92660d1a36faf304ea7fbe2a6c8521a03fcd3280b28f4e84cb8f45ef7e9464755d8398c46b40859938a3118ea8f7a6696321b4bfbaa036fde522caae3d7d01c72501cc531fc2e103e2a867f4ea59f859a522f803ced76110c792035fb6099205574dde54e8751f879b5ca125db444a0e0e28e9ef399ecd74f62500133a455ce768e0ee20861e6a83a56fd467c5b93a75fb7883ff817dbc700fe3dfda84e0c1c605e49452c73659ea642d2985c88e1957e871e3ab584078998a7dcb7a7278eeda1daa9d479fd809091c6dc5d8575520328c5af4dd7f52b62f4d06dca292dcbdac058d7490fc12314b90b3c5bb023da7b1c0c15c0a29f54227fa2afa27aeacf1b83dcb04f46356c553ce0881f7d17754452d6994f6f93d138e0cc2add5059d4bf0928d24c2a487c462bcdcfcd4fe46a6d6324d885a2d2631e8ecfb31c0e280457148a06770f168c16387fdabc9fc71c47ccd8e1519165f256104b2dad99a702745c9555a8196c579747b0b6cb386b391a6bfa386acff4dce031b2a355e385630c9ba12274f648d78b87900f261d20e4f0879c9ba1cd4ac6217cfd80d9bdc11fa5876ed9ce1899892867341241d697218e3b464af93a6a2b0a32f1c8e177c5edadfb32eef595f5d14e9c6d755bf5d784531782dac6feb736453f8025f59843e242fa8d035931663d05d64c98720824f5560799db5819353d452a062e69f069692579c95017edfcbe0b7ac8f5a23d171cc0f21b823ac399cd50a070158215bf24482473da91159556a2b47b0e0fb36b6d210a92a8a038e978f031c731059ccbdcbbc891da87f823717e7a0685da046e20ed5e9eee4c15c921adc4d44a38cfbf7af3aa74cd947e24d0aab28ebc45df624de2d5a8288d62df4a3a414651775c886e87e077a43b19b3aee1bf8ab84d8621204fb25d5e96cec2c7b7de775ba0c69c6f439342d3d285b4bb55f2990b2052c5de88bc64969181ea488af3b80bf7cb74fec5377cde5ee2f87d8a085369e24a21ae625159da364d7c4b0a2548c001a83384904d8b380d22c6b0ef2dccc506b101de95df79a9276349a0feab036c60b42639ee3ae70716610fca90d5d30fb311b6bee26da1a7240a341663770171135182a24e9c7666681dfa916700622c8e11ac5192b12a63529c18ea75d785739158b3e172eda641c8ada0d217fa939cd0fbdb2974d7c5550100a8b615a92978c36632510576442002915979009015296962908c58523fcda2cd7b437381dd172623783ce9978c5c20e1e85dc3a9b5ad8094e2a191c95f6c1c6a5f49039021cc5e323887b2fb96325f9982ee138a53741e842bf2a80e77fc4d4040527d8370c82f15a07940203006a453b690bd6ee6a773914807ac2104a9ff360d0e336598288ceadd08dde9797317bb5340a99a939733e6c9879009e6f8de79fb0a784b5c678338a8c266ef88fcd8bb00f7c975959f14fcf2ee7eb7734b833327726d080c5d101d3e1e9a8065d6797fb816324514573e7b58df482e3ada22d93519c695c6366c37a41f1ee4ea14f68c375df81824e566118892d2a96d3533bcea846f54b16c61343081f0d560cec010e4d408968519121df0744a32527808af781184ff22f74090d5cf18b4924a9ee174f4f5d0409d5b072032d585db889f07a40559caff44a1830098a0156c2e92ef49eec7cc34a151448fd03595d66b6e98b42511f20d9ea9b38790cb1d4c1602dd2e920c7344972df76ce0c012908d0a4884ec0705aaf4b34fa87d3023d189e97ed2a90c985465056287a80e7e6272c7cf8424ffd46cadb306a27289cb3df828f2198336f1c174da7ac0b47ce263f13667012dce06a523f96102223962ec081f0d1c5b992c290a5427e4b56680e411132b7c493ad3f3ce3ea0d76a91e10789475ea8cd603d6c7cde55617a9bd22a8dbd441813181221623c31bb1f5d026c6e708b6bf459ffc2f423ff738761017df14f7b3c0c8f254fb671b74f3005e45319a4eac008bb4b8f6ae771c7672d376d02968aba450bee485330ec3b15480c27e9b90e0e751fc5d5ee3494b8d5dcc3c6e726c6d2d8f30f5c73284b86eeb65498840a500cb8b3aeb3feb7135c1d4fa2e7b012b6c4719389e5c5c715f37ec420d6b67a2bda4968444c663d1f64f49516e6a9a0a9262ca2699be1bf01c61147d63641a3654cb01a8d8a7a9a86d7d7cba15a29544605d6b3332dead6d693ef676a674e43f34b36f61ecb041920b3734126f1cbe69e2d5d3e53214b05a5fb180a9c3908273a196335284531f1642715491445a3d88a1adb2485021f0021dd303c3b7d1011936d5db924d37b9a132453d6d1ac93d6c8742570b2e03c202406d7079e8d31c9ead6623e1d0a795cc117939c4d0e255bf689a7949b827d00f9282f233a1f5354eb542b6aabd56a2a35557a158a0a55bd5e7d45a5aa4a375f714410915423ab892c2d177e181d99ba3d78f574e7393dcf0ef2824dda21ad55325c11a9329d7448287150d8bb02bbb506dbd5b6c5c3363176597934bf4ac0a9a0cc76df09a26a4a9edc3cb6f9bcf95367b9cd5bab988094258b29fc9cbb0f7262272adf2e32460ce1f7dc5c42072f2ffcc1d1c06f4d47792588cf5aeafa9eda4d3fb1b6a132a982e39ab7289cc7c1e27e154a8d06559b9bacf6c0830592e8c110a87e60714cc011a29e1ded578e94799415d849ee024a56191d312f204ed04093befe0abfb295a11b2db6800853618b70c8294e0a7fd9befc3494a74820145670902e287629d08f14a3233b3839271f04a95461a99934bac29e06813b46a4659c80d2515e3ca12339ab0c1e1e39b93b802e9164cc1144b43e4bbda9c1a1cb325555f56c94bc2803d99be54ea2eba21d017b81eb84976363b9d106c8f2bb8bf8a653616277d682a971c24a4f94df1e17ed45707f62a1142b641583d4816ea710411fbeaa5bff9eb06a18210f19abef16a5cec7f4f04757220e26749b8033c7ecf22a027aec7854de5fe6dfa1ca44d5f7e96d8ee88975aa59385fcc070fdb2eaa90e580167e71333dfa68f36c6284c9c2ffb422f20321e224d04a3e73c1b9a9afe9bd8efc6aac5cd90618fa248563350c583c6da44eeb3964114a0ced15c45d1e642655549df8ccc2415e050b505a250db38bed86e51c54db3d9831f766e2fb2c15e783c4819529efd220adfcc4940f6f3878b2970bb48b2fb410a0f5ce11c114e50b73f19f6d2cdeda1d04474d10153f923b15fb96083543c6067320d74a49e8bd1e27138502ecabecabc3154e58a1be14aec573eeaaa7769ee7a614a4ea6d2c555b899966a9305b82777488d5121dd604fa8b58d6dcbbb823a752605924c60b0387e150a37c01f99b2fe9df240985b9a4027456196cc1171f790b6596b85998822b6120930b11cad4d40d8359f3d6d57cd23afae92cfbfef9d82c733a673d7b08d6e0ec09082692b2dbc5795b8c59d36d23041f268eb2ef76eac180f0c2cd3d9c353f57a5c9f2c1e4a048ad4b6a2b74c12333c84bd6f1e18e8cce8e4333285b22ec6788873a7e6f3202b071061b088f414934d50a16c0fd21685fe7abbb9f75183d1556098f3ba8903d5d6d3d68ade1f6b3d40c3d22ff0525bba2cfb2cb60fb435801727a5ad090583868ec8db5fd4c6932dc12d146d96cd288c1ad1010b6f3de3efd159182a965a18468521cf0b9c8460b03c5a6da5ef404db4b2896aad6a39599c5c389200e779648292af09278127b9836b7477f3e9e348d5eb9949bc22e5836daef44cad67a325d2b75f8cff3a7ce98b4466490c50e6b251d06d1d88b382fdf40ae65d71accca665106dfeb8cb3cf9f72381f70585e3fe9dcd304406f26ad76d8f0f9b73323549773b379c0933779852c2ab21c101936f376d6be6b9d239adb668e46aa606713897ca05010b5725f4dd5e44a80ba60ac02521423e8def4d4372ec619262387779a829dcdf3a007bca38dc41bf2bf0cdb6c0f183f02222dc4a33203050916343461b1092d1f73f367921807588f1ee777c542ff13f08ab528426023e8dacc4101e7e36018a4c3495d62c2854965919fe5bb1368987da953061d03012afebd553840b024e93c0c3c0c3c0c3c0c5c57ffff996d5b68ad6db8cd5a99922cc5f2c72dec0a2be79b644a29a514d910be1fcae720c47e3bf635fc1ae404d8040105f667d6ce19f3d88e8108e4c7a8b99ecc1e027173ab316bd697ef3204f2a48c761adad25b0a813615d77de69296d42704325f2c1dcd4b93caf820d0727a59e7e8a6c5164b8240ad7e7d4df1a230ad0e0432295d4af69338793a8040a816572eea50ede2fd0352898be1d2863f75f901f5ddb9fc45d39dd57d4029e172b6efb65bab7c40ab6b2aed5cea1ed0e143fc5dfa540fe8f07269496b399d7d4ef380fc5aeddd7dfac13bc503b2e6e56f5970715fd6f40e68594657cb65bacc34b503da73d80ff272def8ad3aa03f6adb98ccc5b9dce980ce4aeb4fb8a039ed3e07648673cdd296ea9e5c0ec8d64ae6dd183d6bd0e380549fbdcdc366de9382036abcc3befc4ea8ccf206d46b8db96a4ee90674af27a1314536fe9d6d40ce66529365326eeb241b50f7396a594afd7473720dc813bf9debaae64c4e35205fb870aff5e849a5cd34a063a9de32a14934205dbe937a7dd1c56cf20c68b9736e703d9e25fd32034ab534795b6d1a4eab0c0817a6a3de689f74bcc880ceb919b7aab5a4e43f0664a67fb559dbf3bb5c0c48fb5ad982aeb84ff230a0e5aad9b8a773eeac8301f162b237177c3ecba92fa0f3e5587bdaf602c253e9f41db65389b50b6861bd5ecea84c6f2bb980f2bf97d7d4de9b54e2169026334ddb3dd402529ccc9ba46bf1dd3ccc02b26396e773cc79693bc402f2fb454f4be6dce9ba2ba0b3f2f92caeac80561a63ae390d2eee520594cc9b54cb62545abe131550ab62a3f8a4c5cbaea7806cf9eb92dad2a3592b05846b65271fa676e38d025a0cd7ff62966df187023235a56c9c0fa6aa7c02327996a39aba98ede53901592e69b720af5fc9ec9a80f8162a5be92ce5d96202b2d4e6f670fb1290f9c552d5ab95d0d09580bacd9253e59204b4adeeb0697a67e48404b4dcdb9b2e5e8b51f511d0bf51e9d9a43602ca3b7fd696af57691501b5a6a9ccf485af0e11d0f5e7eef21bbee5190232bc9433776136bf10102ad39ac9ca8d3905015d3283cad6314e2a19088817d36b2db98bc2e4f903e4098d2f3357ba2cee03b4b6e85a943a09c7e8015a2e195ef6d9ada46763f000293cb36cb1747ad232b60b946799a47c4b5a776f4c17c8cd399baefdca141acb05bae5d2e02de96c4ab570818cba4eb68b7f0b74527fdb4a3e83e66d814e2a2e3d4aef5573a9054abcb9b0f7ceb25e6981d41c959bec529bdf2cd051eaa9fc245b949a240bb4787e9d599987eb3a1628e1a22d99e958d2050b8468fece1e75f4531d3bae409d16b3ede3b9feab15c894bf31cb0f2b50279b4f8acad130f32a90fae528d34bab0a84be79563ab8a9406a96abb9f2854d5f51817ca5a54e76ea2990e94b5dd69c73709329902ddd4b7ae3a9f161299051c7be7df453994981f0ec920c263dd667370aa4cbc2d56ff00f9e3151a094acd32d6c95d41963688402f1aafa5b967b63790b0f0d50205ecb2d789e95521c343e8196b3adb9948d9d74514f60e3de1935b7678df52afefebdf29e3cd39b3a817ee1675ff24d398196d1dff3295799b2238d4d20f5cdcb29d6b47cd9553434813cbd3aab9cd79940edbcbaf65832e9d80713e8d4a19f5e16a397406d8e425569ce685802f151c35f12dbe2fc6570b095907c49f2b0a4510984b7ce72b9bb527aa39d290d4aa0edbbdfd5cbf7da32aa3a09a48c2ec618d5c4bfa03937071a9240bdbcf1e0626ebab83911a0a5dd00473a2a19071a9140a88b32c9cf9663d2a931091f2490e22a5e7c5d679512067d0864d2db5d5a33c74b320442e44fbbccb25ac642a05de58c8cbdb09b1db3a0fae3898d3c08e44677e95a7439ebad2090392b334f1fe7621f08a438fdba4dcb9e83270181d659fdd13e77d3ff801213b29fe95aa30efd80365d5a9ed4b5f701e979e5f98cc6f980b297c43de3b6faf8da035ab5ac32eae937753da075d77bfe9c4e78380fc82df1597f9d5cd71c0f28d7d7e49995bd58a93ba0f53c49e53a7dc3bcd801adc59c05392dea8e4faa0372959a5857361dd036aa557340cb82ec2ad1f6b4b95572408bd5b5adc5abb6bcaa3820fbb4f65051f99f55050774d22b73a7def02da6ea0dc8b4e3d1c5d6f1ea47e506847fd4ab5914aa36a0f64c46b55a75333bc50684c612cd26b388a67f0d684d52f96bd7eea2e6d580d82ccb9d8c495dd0d380fc59d7d96f5d3493a301799e329552f63107fd0c4893bec2e398a77e9901a5dfcbb58b69e54b6540a78dad5d7e1419d03ab5dca25672cc936a0cc817b4a3f9468901b151a94ba6659a109730a0d76559f4d712bdadc18016f3868d7ed2946afa0ba8f7d7c29bd0db2e1d2fa063ece735b363d44e1750abb3c9f82fbddecb5c406bc15b6f5b56f6a2ba0564d637ed95d7513d6a019d6e93142e62a23e6601392e9e2bdf13d319172c203599ea5095515dda962ba025317331ef66b102ea377f77e9dcbdd2af02fad5ade9971b75a54f054765e7b7d17d0ac817ebedebb256352505e48b7f4e36f3f935290aac54994ddec35040492d796ae9b30ad5f80968519d7e534a8dcdaf4e40c62c67ad5f9b6a6eb509085ff9fa382613902db43c5e4c0df7c225a0336a75f3665ab8122a012d6966f8e025012d272dd7393cbc244324203fbbfefe72b9577c04f46b2de99f5b973ccf08e857de41936a46a922203dc69d6e995ec6acb5625f6d661d1d02325b964d4beefa75cc2421a0362ab91de37dd7fb209c5fc69733250742eb99fe013ad3e6f1b84afb3cf7014ac62cefab2e2dcdab07c8cf52e552d3c45b6af000292e26edaa5e7a17a84da9f3a9d5e2fb2ead0bb494397bcbb352fade9d0ba4540daf3c4d8bae751a1708d19c4fdd62cfd7d3b740e72c46195435d39fae6d813e933ff55ada99d0ba16a87be532a59ad72ccb342d906e2f7e30957ffa9b9e05caf54b9ad30ad3d27959a0f3ac16a394f9f93c1f0b641a4d537bad3c49fdc0022dcea6576eaa5720ee5f6ecc71d319d57105e2e6e5f4f296c9dbf06905ba6d545cd6aedfe53dac4007d97fd9753b5d4bcf2a909ef4cbe7e71a3f934715e81776eb53c7a3877852818ef2b4ace3338ad5ba830a84462ddc85e9bcb2b9730aa4eba0f9a3add8d3d93105d2f77f37bcf3a8dc4b813053735dcd498152e9ea5f9f58a5c3651488cd755ab64dabb55b44817059dae6d89af4ba43817af998fca3d6b23c3628d01f4edf6baa4e319f4f205fd63a8f8d96d2327b02f9a26e9945391946c39d40df6bd7956527f74e4ea0455799ccd2c99b407ccc9f85a6dd6c8eac098426d765e76226d03fb2fa661ebe578609d427d1fad8b24cba35be0452b4259fff55b33a862d81fa7cda4b5ea5ceae5509f48b31c62caccc2c6b794a207bb5c7f7249f046a63c8a76ca8163e4a12489dcd5dad5391406c36ad633cdb70f90209c49e96cfb0af1aa31e81963d4d758e5a0e1b3a029936dedeb39417b5d408748e727f9bf4c7bacc08b4eecafb6e61c3bebb0894cbeacb323399061581328d0f0feff9f3a7632402a90a4646c8076cd8383f98d00125aa05d7a819b22a5fe680cef48f9aa32bdf1c5b0e28a95b16cc37a6d7b8178745e5d22799344bd50207e6d3a7b9b72f8fd14535eb752a19b367ca7ff2069416eebc5dfb337183399d68daccd0249a63d424a7bf3766934a9dfa9336a0c6b48cf5266568e636610332a58b9dc56cfae37d9dac01e5627bf25dd63b196335206b44d377165e2f9cd20a933420b528df47655ef1f27986304103baa3d0171fd931d721e938779e303983e9ebddc36bab064f9f35537eb46ebb5ed4d601798f4a894acbc40c68fdfa3d6969d79ef56b2e9894c16ee91ff3eba84ab9231332d849b3bc7cd4ec39c77697c3656e0c33bf9b4dc68050532d55cbfdc97b5513035afab8a27f9ebe659d5bc1a9611206944bc2e59f77f9335eb2e3300103cab378a7598e5f4079521a262a956639d76b987801b5da1af5aa8e7fb630987401ad743c68d6b264921e9d700121e2eeb2b4ad3775675b40be382f6aad75cc5e2e1f13c4a09263a28595bf3aa95d232ae665011de5f74b4aba982fc67482853b8aaad4f80a8db667696ad252cbf792aeb89dd3e3d68c8915cc864eaa807ad1b34de5322a159b0ac81895dca9fe53d3744da68096ea944be5bebd5a4c92025a1c592df9ca97bef27ca002950ab0800415f8800d1b514068b6911bf1da4b482a22241328a0ecb6f5ebcee4e409c8f4c20b2ec55fed4bca891350e2b528fdb48d7fc79214264d40786ab1a3ba8b398929870dd08409e8dd9b99eff49d5be3c91250b32d5a5adc783a99ac021e4c94f0cfabd2d173f44912d0527dbc3b5ba6c69fcd0409a8cdd9cc64c7d1d428f390124c8e808e17eb577ed24efa5467071323204fd967195b180fbb1fcf9814015d1a53a3769617d7a272302102fa353d556acff95cb87d301902eab49cbd83c74c5ada57e2602204b46a71efbb1bd5c12408e84caa5598b68f39be648a600204e468e793b9fd25f9429dfc00ada5925abc83ab660b4f7c80d67a639cdc97df4da77b80d66fe9598cb19bf000e5e265d275e1b398f496861abb40761e9766549ccba8e4ba404b35eab62ad673e9552ed0def9afbac1fbf6656ae0022db7b4d13ffd78b7a86e811c3df1ecf8e62e479d2d90d979356f9cac462d90a6e4d4e92c8ba205daf3ef6bdad472f8d5320ba4d6ced198e9b224b72cd01ec34597deb21ab1406ec8cb5ccf828b5f993152a2060b6463524d0f9f6d1a9379fbfad7ba8cd7780532aa165c9d907d95795720850acfa2cee9f55bde0a7469ee7d6b152b503acac9ba24a625a5b40a9496f63c95a6a9add35205bae52dfd7729e755bd5281ba373b3f33dd1b7ba102f9bf398b4bf253acce3ac52f8be8bdb77899022d556b61edf54e6a799502755aa9f2781ef578bc48810c1a3cef842b1357d72890e13c6c96fba6b3ea12056ab3cc17d673707dca150a647a748fbae656e7b84081d60f9b73a5ce2fd35b9f40cdc635a932eefa6b790275a3d93df7567eccea04e2e4df6acdb25d8b9f13e870ad6f75b6c476bf09740a8fdb267b4da0a3aa99542d4bc2f59940bb87f9eea829d65c30816c2ddaea7b475e7609949a71e1c5a4d4a9e65802b15accd34a6697d1ad04fac544579989692e2981f6948f727314d7f1268154590dde82f635248138ad5c1c1ff12381d81d933fd749cec73c249061fc65dad2fc23d032991cd16f53ba7c4720fedb95dbb9bdce6a044a4bead872cb5a9a1423d039d3e86dfe98f7fa22d0fb496cb43b219e538a4089d524d5ca12be2d894098ceef624b535c3221022595b62c886999ed0b241e6909f1b8b181a7a1012f482a2534280000b6616ca815e00648f2501320e34796ff0809811819b009a4be3d7d968581096cc0d868b66116502524394608100033960d24c00b929157393c6444040c19907488a404785106007831031a2b000009c9626300014825c96d10c08b54923c64c4c61700104003c00811a9d440a512924a850600bc987c51f224a7404a175ebafcb77a2a532037cb9e1d4bc36b151f1c6c7d830ecf9125201d1da094020c0a29c0a08c02254ea3acb05195e1a438d8443e9428d02737ab76e679d9fa84026d9ebaeb4a477f591b071b7ffcc752408196e434b62ce3cbfcda8fff50ca2750f62d6f12aa1f1c7cce729c7dfc88ab1721694b01c513668874c200144e887ca88fff280065137f83908f8ffff882a20984cba646fb185dd48295e391e3033940c904769478c807265062b3ecd2766ae1b3d3111c241e97409896079973f30c0fe260c38e120f1c24a952692d01e94012908e120f502c811d2537e8f01c950a18944a9c01289498446e0948470e4980a40e07798fca4788032891a84062643d62643962c406248df0c8f1c1882507c922dc1302288a00b92f288900a9f88f808480d4a02062f52887583d8a21568f528806500871c6196694618328f91aa81c4bc504f11e1d2515120bc48822a9888874885c80020892928ee50f7e2023644402943e9094742c2411a0f0c1f6e0d1914a2aa6870a09250f1e2ac75746161e46160dca1d402a1ef25129516350ec7022ab2206a50e6150e8005201a978e4f8201183320790ca47471921232222a9b2a409450ee9211f58a950287120490aa0c0e14bd28d1fb9712355c8482310a0bca1a403a4c30d2ba40d774625a4a4f2241d69844261031894358894f11531286a704f69f058bcf2201d1e06a0a001847206908ac7e2150450cc0052110909f1a88cbc8747c7471894323c484885a4a37226b228645811921c1d20bf848cac1a9431ac189e64e46f00d291004a185664558c196554cc58c4a080c19c618c19654c285f383300c50bf905a50b15d5f1115212e2a1cc50140a175664553c727c7c41d9c299c8aa6841b3d0412222000a16ae60008a15928c0a8e929090a532f2384ad28d0750aa9054b8299478e4f8900289c78dca51a27014281ce5090ba038e1284d380350987094254c284a28634249c251905083728432f2601814239c1894221c118e3204034105a48306450876a302d2110625086754487280747c5480a064fc8808e507678041f1c1ea553c0c4a0f94c28324a3c66417251e393e745129f1583526b9b881c78d4a89478e0f5c90744c26b71863620b5fc0a4160a98d002042b662c158f1c1f624c66e19e5c8c892c46422aee690193582c3948103081857b0a63f20a91552919b101c9171357c4a0d202064c5a3199b0628cc92a6a4c540162468948c580dc201163928a3c18c6041525ab03078987189353b827044c4c419994e2413ad64a9590921a135288ac8a47522123221dea47c2988c0224752c212a8dc01048080b4c208213a0a001135190747c3109451eac78c847e5c683a8044c4071e34154c5441230f984478e8f034c3c0152290109f9a828ff11044c3a81547763a6defebbdfad802b27269b3887d71ce55db566b3c1441308735d139accef943ac9c41d0d269858ecb9e7559fdf25502fe7559e7d763c461d4ba03e5c761d55ba2c5f169b5402a9b3b2b362e626c38412688faec5d7dedc796186c92450af719a3bebdefdd1b4642209d4a667e1939a531d35892b30810d1b69160964fc8f51eb8c59bf122a0e90e48182f71090c40924dcdf5aeda3993152725a307904e2c4caa49db7b596d6c1c1567990103bb663821854463071c4a411cb173b563361c4920e57d5b773fb55fcb906e95fc08b4046f9b29c25d7cf44114bedea1b9e3ae98b41c808a9c1241168a17a5ed0f724e3ea1e7582885b576999c37e35383984e9a1695bb33eddbf8c319fdf72db9c38f803366c784c0c819665d695cda63469595421d0b6d9fe65cf3a8bef2d21d09dcf83b9d9bfa7320d02b1f1b29c2d21e34966993011044aefe9fa8db3ef5acc0a0452e7a77c78c9b3d2a80102b1295b9f16b3691da299fcc19c31e3b36333b37326994fb37d9a4d980c8d1f903aefb15f8e2f7c9dda868d099b5e5ab9c2cdb5cef2f880367771f7b9a3baef5cf68056ed5e8fe272567e5cb13ec2440fe87c79a2b37ad26593d3240ffefd2a7de3e294961e3ca06414f597d37d933b9c3eab7730b58dea19d4bb5de3e9ef94e9da194cec80d42276b24fbe9ec8ab0ea897d1f4c9cfd2d46d8429a81375593c1407c3208ca128066148bf950e33154020401c1e9006e4389082b1aefb13c0004a633179301086c38040301805210884200882200882200c023108825017d501b36a93b818d8d147c35fefba158668ca128668a1d23521fed67879865a660a6eb6cedbc18d5de768b75a878be66e997358462e8746dad0d8ca361e3dcb3544ccb861167df3b33a65710be40b26037cb7615c482ccfa6d35054ae05818d97e5c79fbceba9bba27d4370ad2f3e01c89a4bbeb3368e1aa21df761d7b835da334523fca408282bd419c1d0cbe1a3ba66a0dc8129e4c570bdb5a00ac280d5fe6521d68dba978ff14ce153e0a38d20f169f3e89920b804300f2717d20f6e6fa21608ed21ddb59b80b479b0ec7a3bba347ef92208ab21fbfe1a994a2f081c0d8378de613de50c5e7a3119d124128488f627f30e15453eabde47242003e4838352423aa0ce443a084d17c5cb4d42802707e26f51f7e4d0042d6c1cab6697a1a26c6da7531808af4b1e145f43862ff2c3a28fd7ca2c2c5f38bb6d53002ceb5c9455774ae2620757f2f868d0a71a1a0db325ff8cf2f2bf299492c9196aa0e1a42c951819f0f407d4d279cf8c7fa88478a2c174e89cb59bb6b2b3cb691c75026a9c0aa1b4d5f53afcb58dd1d87406789b5db36b13fd7899c1fcbac4773b0d91383298c1530f6e247bae23d66e11b5ccc554ae94ec04735fd2db4d416eeecf1f8da1b8e38c9d6a9f029d6990520190fc80e0b32b37c22f274334503a2f337244a402702b46daa0b407c3909409c26f3e923904ecb996f4b32b4d451fa15d1daa5cbc3e1594d10b685723cde4afd00a54d3ffca7ca737c7926535db7255cd68b4078ee2590981c134e52e2104e79233f59e9e1c4bef49c939545d1db8b2bac6c3545cbfabd16317aae0d439fd59d21414da7b0bbb75dec34f25287a4e27ca4c11726d341b41e463d67ac54fbca4670cb2bb99a24de3ad24f3e6e484b000c3fc1fb9931967158f66ef5dbbebff6023e6266613770e744f9b3310a0b5d7115d456ad23f5a41e50b64157c3396ca6ab548c5a7c261ed38d669b73d664b6e26306892c13105a5ada4680944b263ba62ad0ef03b15a462fefb0c12e692e2d124a698a23dab71a18c2dfe2358cc1ede802f0cf8eb44d899daee6f1c2d346f3048d67c9e2192ca6f4f788f48595f9c4c1ca4eddc43a2c9eee19d886f32115013434843918a1ed1451150ae87ed4054570d5b525e721dc8028ff5fbca21d1f009d144993144a9c7adfd18cc2897750b7e37ac23e373109a306dac7f1271155edb74ed47fbcca39bad1682f768994b6bdd18d2df4d52f3f7dd9c395e811488584861e6e2f81fad26ee2e58f30133127884a34fd973649b097bdf4030f24a7dfd832b89307ca66cb1bf66cddff1a25d9471b6c6860dcd82bdc0670dc6aa5a35f0c478ff2f0e4dec0ee72b9cae97ceca6909dc3cf48ec6e5bb782390eb4ffcfee5911724aedd97a02b431b4bd04114fb3201ada473f72a722cbbae8e2f09983c3a4d42e00b82a8f3da00b7df78cf52d10cd6829ebb2b0873fd27430bf14d74e20ff800878582e3516481f188b454eddd6b8d7e7a0aae1ef27bb9aa697d19dc195f2deb4aec07fb8e50966b86ce690aea5a0975414cca87b8155f6600ffa15ee8507442b378fc85c0c680004854bae7fa54e87bfce794737163e17d589e59d8987219318808c24c98b6b7b44fa72a8d451de8b9ed61a8f570e084266308c274c9c8bad2d34085f091ff93cc6783228248b790ea4156ec91395d1e76eb787ac14bc3e81d894573d7f86df9a0d32197e1571a885b76b7065d05404e83ea10f235ef1324aab8cc5c450c14bb4f316e488e79d63c94099016827535d28bcc2374b59dfba87d93c363862671c97a6b06bded797347c40dbc6b55be8956d54dcd739c04c4adeca085c402fac0650fa2db7864a02fc40adaf5acc1d0a0ed6b6123f80b5a0503d94537f69c63a157125dbabc422c20da824869d2bda86c0b41b27f2786d79d0ab4d7b65d74963b16ad0a776c2509177effc19b7302bf7d4e6c00c9c72492f3940bffa237be5cefd45c3c78b40affb65862fcf97d0fca3b2bb435305fa430a9364af90e86c5323a9cdcc9926551b364ae31fe3b0a74e0419ba16c57fe3dca157ffbe7121b68c9ed808cd7f0ed145157471028f03771a34c897103282ff621689c46f4b765c323e5bef0014e80ee8061259a816019dcf3910d22c2ac038556e0d31001212a0094541aa93ac514ad068a76397af23488e7c108ed5377634634f84f63bc8569625ad3b3e76470c1f16408d0d1de468eefe40d0099deaeeeb714f828cc79549b050ad2e9cff81dd1d1e371197ca102dcc51592443116338f4c77aa6bceec69db1a96df0b822ad3a5073ce2f51ce8631699d2c20e0a276270ac9f9cca20e934e864ae148892aa06cb3e689a0171e79e61b86a72cff5f9546727e39fd61e1e187b0a87d1a170e5afbc66f7a27278d860dfb88b993968693e3ccad9d6977e1352b8fe386f7b98e2a31ba1722e470432fddb783705c811cb8f3aa9a0d19d470351bc6af0c54cf9350e8e40a0fb0301f25cc80c3516003a10afd901f49a8d85cc008a80ed34900c62b06139d4826f45412c7642c80759f0d2fa454503a9fb184933765f2aed8beec1ba0238c98a14423eb4ee05fbc44939d8ac5d95c27599f72cce661f5fdcb623cc0818f7e000581db700fdf43ed16888439bb4a49cc1bab95d2baab97265f68e9e7740d175dc8f934a49b24fc53673c48d93f9c20c65752cfea280f10b0a946d1b68f6f99be6e7cbb73985b2837e33dc2665a6899e7f392f0b54d4b86482b2746c65ad0311ddf365cca31c51649fae1aeeeee54e1df168471cb5082745bd675c72926dc794260f4ed99fa1d979352ab7f38f2903c1cd23d31019b631621b5ded2beb9aac086bf09cea55e6a5fc1626d84e36cb0618d13ed4d094cccbed98229595de79b503c2e4b1b14ab23e0e525cfaecd9d394f8a0557cd4b5ee5cb854fc143c4d0f2a138f9ec4300952ed32a644964a8e3171aab71987f131222e105d5777dd5dc58c9341ecd8f18e3fc53d075ff6ec7c6c491613566518919a7a0fc8b0727636d89de120ec434e3ef9b42b5cb8da1e9630cdb97fe5d1e15a35e1b3bc27d47886647ecd4df1181d894e1d9972cf5c6b62ee236342394dfff326f26103559bb2a7f17f29c423261949a31bf128227dddebd8380451c48340158b908a4262924636ba9145f112db04cdf5bd9d9dbadfcd4fb8e4f4796f4c17b159148b8a02a556d1cd835377622709453cf02ca271c158e822fe76c84abb63e0ae41d1a5edee27584c2ae05a283d43af876ab027c7a75e76eefcb73081e594da2976e64e3f425d2dfd16f51283dc9423a4d4396e3dedea279c1dae55f88e71106de8270561135c2919c1ce3b365ad77df853cfbee961f7ce7dec8326cb82e953af6ea3e8a377b90210209198a40c41ccf0aaa5b98e9dedf8079c623bbbb621bda27611afd771de35fb6147d007f67befdb65820ac8a7052d8b6e66c6a13f07472cdaa890ed12b9e79b1f4594afd96e87cc73569ff9d26d38a6a9cf6b63a2527320e8988b006dc1c70221c6da743d2339e897d03cd114fe71640ed5229850f4e49d91af7517afa37abba66e6aeeabd794c48c5bbcf0826716d9191807804152c8e0827f911c173e54b47173626f8614182f598b453b20de29e4359ef04475b9da26ccfee029533403b8b861855aa629435633dd0639a04419771b0489d9599a4184360a80d7beb60fa80ebea3d6e06d08357f7d213e8cad4b9bff735f165eb804217a4d134d7823299ee9312b50bdfa84edba8b365c65195329a8f125b443f618853b74ce9f3100a40f0dca1e2b6182d0b8e380e65657008df8ade00da5dd3b6137b51334988b7128793d047b18bd0910403a65787472696e7369635f696e6465781000000000803f1467a096bcd71a5b6a0c8155e20810308ce9615de0775a82f8a94dc3d285a10401803f1467a096bcd71a5b6a0c8155e208103f2edf3bdf381debe331ab7446addfdc40000064a7b3b6e00d0000000000000000803f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea4290800008050a67f2e65d5bd52196f5ee48d122fad4e7b9012096b41c4eb3aaf947f6ea429080000805c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429080000805f561594326291c989c065cf4770bf8b4e7b9012096b41c4eb3aaf947f6ea4290800008063a0bf4e164b2040ef0bd059844ecf6b4e7b9012096b41c4eb3aaf947f6ea42908000080c2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea42908010080c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80400000000000000000000000000000000080dc3f23dff283c3cb552a73ca1d978a144e7b9012096b41c4eb3aaf947f6ea42908000080ebad2dde00469f10ee456ffd8609d2824e7b9012096b41c4eb3aaf947f6ea42908000080f0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429080000005c73756273706163652d6175746f2d69642d646f6d61696e5c73756273706163652d6175746f2d69642d646f6d61696e00000000000000000000000034df6acb689907609b0500000037e397fc7c91f5e40200000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000ab3c0572291feb8b01000000bc9d89904f5b923f0100000037c8bb1350a9a2a804000000a11d1af5ef20e4180200000084e41fdde0772980040000003fdc5ad7fc3849be02000000c97ef69faa18a35d01000000fbc577b9d747efd6010000000000000000010000000000000000", + "0x0b41d0c7f7b4485bd7be1d66066b00ada5d8128b7b9e3d7d2dd94677b677dd250000000000000000": "0xde9b986aaf625c0c7017411c00a43f2a07e0cd75adda2240a24bf720cab33e1d", + "0x0b41d0c7f7b4485bd7be1d66066b00ada89273685860d998fdf453e8ecf3289700000000": "0x1c6175746f2d696401000000000100000054d93d14c4365d736c76a410f829ae304c7d093d8353bf69a8149c24c34134d5588019bc6099459d33e46fffbc8449a0e7014e7b9012096b41c4eb3aaf947f6ea4290800008026aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea4290800008026aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b71004018026aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc804545454545454545454545454545454545454545454545454545454545454545b026aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a000000008045454545454545454545454545454545454545454545454545454545454545458026aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf43904018026aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef864045c73756273706163652d6175746f2d69642d646f6d61696e143a636f646556a21e0052bc537646db8e0528b52ffd00588ce403eeaf84260f55200acb4a07f797be4ef615e53ceaf7c3cb57baeb699d94ea6643da66e173dbc1eaa6434cc4d173134880f532e107c5c278ae589abd00c5cf2bff6fc5a01bcb720be83c615b1589089dfcbdc9de726f29a594324919a70f450dbc0db19340dc3e73e93ae478801c0bf0c5ae27471de16ff9d461fef1a3c3e6c7779de306dfe72ff9b1f3213736c017fac81de22dffc7b5dc3e0e939fc361fef2b3e45cc71d3b7f21af40c47b3ede13b44004faf32918caed3f4199dcfe429ee3065fdc71c7cec76c3ba8435229c3e498d37c914a86a71de21dfff320da233e7658a452e2b4e3730e933bfe8fc3e28e1f7544f0e877cc6026a50739720c573b7ef6e276ffe90e527ff9d4d15f0e467fc997ddd472bb8e5b6aefdc5ff27de652ee90e38e3a3276582837fdf8317a203fa41a7cf163e78382987e28257df9f1633702fd2309627fc5973f3f53ed9b6a7bc0ca1d7254cfdd5d6d0f709e9da39aee8e6b450f9424d33ef280ed01cb450f94249ced01d796ef3fb5d2dc2147996217c2c7b425e7b0188264daf2855cc8a30e078fbe1d33984de95ae4b8b1c342fff9f12be891f3f9cb0fe7537fc5cf53637fc5dff1c92db7fffcf8b11bc1ff6882d85ff1a3bfe20bf94c4a09e498b3be481583d58e542fc0d9a1b7fde3991da96060dad98b3ac26ffb4787457f8578fb8778c78f1e141dc83f7e965d36e2931fa9989ab67f961c765878dfbe7f053d72befbf543fbf8b3d5d85ffe58537ff9eff8e496fb7edcfe597256c71dbb102e48fd35dfbe90571dfd355f76f5b3e4ac8ebb6ab9bdab9fa78cdea22fe4422ee4422ee4425e35e72ff9d161f6fda9c3f0fb6387c5ed7f75dc396ef0d9c79fb1965b76188c92c7079b2a7fc56dbf021f634cc50de2cece591d37d67267d9d9f74e0271dbc73aee6cb54c6efbb29bc06cdb97dd9121eaaff9217cdb7eec86387fc917f29c6357c170b6eb631de28ddfead07ef4177ea189754877385f36f7fdd80dd517f29c63e7e38221ddf7b5c73afc8ddfea300c43fbd15fa10a1b7ff4576864e38ffe0a916cfcd15ff885e6d5715b1db7a68fb8b0e9631de6d8f3b3e4ae8edbeab8633702ddf4855cc8ab3e3237fdd80d5190fa4bbe900bb9900bf9d4d15ff2a30e078fbe1d3398614975c831a7f922d50b573bfcb6ff8fc3c2d7f6f77fcda0f9fe393c48f6f0ff1c16a998c26c7f1f87f9f6cf31abf922d50b563beef0dbfe3f0e0b5fdbdfff3583e6fbe7f020d9c3ff7358a4620ab3fd7d1ce6db3f763ec60841dc206e219f5a499690dbfe337c8f2c72730e8bef1f753878c463c70c92c89974f9438e9487f3d78fbfe4d71da99898b68fbfe4470a728e91c7071b2a7fc54dfd153f7643d15ff1853ce6c831834f7efca8f58cd1812160d85c745c6ab8dcb8cc709de18ae37a93c5e42a57182e2c9717ae33ae2d5c665c655c55b8b07059b9c4b8aa5c3cb8a65c5a5c46b8b0b88a704de1cae242c215e5f2c1c5c5f584ab4beb8c6b8beb8b6b09d70eae235c603e251e1b9e1ade1a5e1c8f0c2fcb138187e5a9f1d2785f785e7849785cbc2d1e121e1acf8cc78577c6dbc27bc2c3c223e35de18df19af098f096f0ba785678557862bc2a8f0a6f0a4f0a2f8c1785078507c6bbe269f18af088f086f078f0a67850bc28af89e7d472c383f26af06cf09ebc266f062f060f06ef056f8977438b4e4b8d169c561a2d345a6bb4e2b4dcb4c8b4ac5a57b4beb4ac6851b5c0b4bcb4b66855b5b4683dd182a2a5a5c5a5b5a595a5654496d3c29297688520c3c949b48268516955e9ce7466ba243a233a2e5d974e884e2ad3e99aba1a3aa78e494703478773d31a01f7863383738383d32a83bbc3bdc1b1e1c4e0b0b82a3833dc169c179c151c1a6e0a2e0aee098eaa3525dbc96de439b94bae22b7c958398ccc44ce92adc863b297dc44b69285c85532951c44c621ff90a5f294ec43969281c83d641e725486929f6427192aeb909fb253aec1ae3179d09ecc33770e2d43bbe0eaf8179a137a867241a12a965ac4c6e4521a191a9b6e87161776890684abd170d09aac1c9ce66ad9dac022c064e02c2ecc2605238181c053f0132c35a1ae1af70ced0c0d0dab4583b309618db86fee0cdb938bc316759b5a775a4f2c9cabc4ced9dca05e58332c1a988d6d7365d0c2b0592d24382d5c6a382eae1bdc1a0e8cfbe43e6973321af68afc068b81a9b8beb05eac1236090d0cebc671b033d818ac93adc14a5926f6c936591c6c0e368abdc1b261d3b84c581b5a4758195a616c13abc44ac9444c28df0cad28ea10160c7b55abd826dc8b49679b43ddd02ff018180a5f6130ac1ab40cfb86a6b94ebee642d1ccb83538189706edcd6ca38586364197a04a7436cc36f408cac3ac33ddb071a69d2907af9953b4abe9c327038da14362de99736613534c3745955019280c388c990565c26ae61b180bb7995b786fe6d5566593f2cc9866ec195787bb433783bbf132ac085c8c4e86ad07ed49d34183c255b41c5c08cfc17570201cca9ff80e5d163c02cfe258bc886b86cb09a701177179d874f0ced880f0341b952dca168406e5de80afe021b61f341f5c4468535c5068366837602eb099cd876d074c84ab098c6573727bf0b27858b62997898b0b57141bd476e5367195b1f1e0c980cfd833540c9e42ab821671a3b42658893686669965ae0d1e952e0aaeba513c1f5c69a69a99432bca13c3e5a57b61aea155384baee32999614c32300c980aad8dd60e1b148e0a4a852d3371b84eba259a98ae09b6a255b9c8d437ba233829ba2a5a9af98535e34ae24a6941e96ef0a4b8a8baa78ec9c50416c2eba1d5032502e3409de027ed8a0be5ba429fdc1c5a76383bdd96fc46cbc95dd2e281ea808de04100a0173800010440e733e81259ee28311c6dced852d10944468a622a1011659f438ac48888b62e0c9eeeea04220b3a3070746bbe4e8dab4b134f304224498804dd17d1c80ab2d812d190986c69052519d190a2242457e7459415891149a18523a22419d1094948274850c7884b31224545882ca86ca22cb614533242248ba5404115230e41325ae18425a3a55891988f0a2ad606358c88845424842869c80a4b444b494356b8c0d505158cb884142b52a448052144432ca86ba201aa9ac84211524c896808d20a492a2c09a0a62140fd220e891549c168a9c80a4460f5222ec552285a5a8a1161a10829560205b58bb854808a26b65424c9c8524c890849d209450650b9409274826c85240cea992131224a4628144912b2a39a89602d13871821151119828468c988c8c8c8a64006750b1d558b98455c528aa13041b58a4b46481f4842422a32b2c2032a16312663e1040f2a992ba26c299682d1900aea98b8148bfd542b6215b1482946644115132fa855510521b222234b464388624a46889286100d295244b444c5925106758a688448916c2946c44856802a459409594149b654244908016a180e6a1451b644245b4a324284800a455c9215190d8911518ac98a8089b1148a1429112191111531524166f401a225a3af545129261352a4244312534a82400472d4275490a5502486f425c662281025c988642aa46014fb005075222e211915c96243886231140650bdc424148a1811b1a0145be1089191912d2b1223c24211095f9b88312145928a1015111919d9312145922a202bb2429210211b0095090cea12718985d811d1d2120b31118a24192d2dc52ea06b97f801a2242223235b2976a494a4812246452a0841018511745522c66445438c908a3c40145b21b6820530302496420a451828404d222e1d0989a920844b5c92158929c5542862f4758b05158928c468a98891920c498c88052423468a88946243908c56e871242409a9478e7a445caaa086201611e5a85391085191ac6848912c46019eaac5486654c408473522c6642b08892189b96a969804012eca18d20945b2222ba04024131253321a52c48888888208b8c4b856548c3166c7598e544c4c5bcee805963241999046e4a5f49340021f9f9f8f524a7fe8cfcff77ddf476995eec27356c79c756197756aee3e6b9e5356f7ead43dd23967f559abc5d2a39d737ab5ee73d6e916cf393de33a6db4f6c66b2b8e33d6186d9c563aad33461bad8d1e1dc76a63ce38c669259040020dcb78a7df5aedc5ced5ca799d31621ae3b47662cfd6da18238e53ba95b3ba7bed81f18cd1abb576d26823b61ab5544a6bbb68bdc6492d756fb9b5b67638568b1dc7e9b673c7c0f116ea1cf407601ce3cc5dad5cacd552e0b93c57e43ceab1da08800bf0cc38e33c71ad208ed37ab4d5da4a9dd669a38c71c639678c35c63ae78c31d618238e6eab0362c4514669238d7162cd4e77ec9de399bb3abdba57ca49cf1ee36c0003a6bbb5d67e1031c6f85a4a3d4b7157abd71a6bad1ee029dfd618259eb6526bb5eea8fd05504b3d17b5b5031b74659d73d639679e55ce39abb51986c3daaa8004b8284540cbdd5a6ba3f5e8ee23dd319e2e319e737a76cfa3c72e6777afee5e6dad96836aabbbdb1a630b83966cf901a6053c5a16e468e5a8b5c668f1acd529a594b33666ef3cc6b8c300eeee36c7ec536b75cf717ad9b90d6cf589a3bbd75a2daeee714a8f7ea3bb4b4ba5b518636cadb5d1dad8baeece39b53156e9d7afacd67a3662af31e69c3d779f794e9c5d836a2dc7711ce6b8ca516b2fb0d9ddb19496e202541c3870e0b0955aea1b9d37c6786d8cf7c6586f8c13c4182b8ed37dd21869c571da68abcf56ab7329a78dd6da1923016c8c187bad957a8c365a8f31466bbdbad71aa347e9d16dceeed6e600b296d2ea31466bdda5ad355a1bab7b75778f1edd5dc66a5d46f749bdca58ab5b77b731467fb97336c618adb5d62575f7096295b3ceea18bb058e7dfa00dc2d9e1eafa5d15aea6ea3f78cd143c6744567412989488c8815000a49494a4688948810f9a00523a4a2224628101d0949423a81686985a522b1a522494288968c8810212a6254442469888f580a4ab1148ac496966244169000180090247d4076014c011c7c0f07075061a94885d790621e88211121292282814f0a4948442914314a218524240a24910b622ca68402915292ac48481212529152916c6900132c5100800a8e84149d808494a444009ed811910c49acc805b11428e859922d1921895d9990a2a522454a32229911112249af00440e8c50882919012b502a8a2109b160827880223123468a886229142925c99672801da0205b010015c4032089a940242b62a4648448c89211911c3a6449494a4443624ab1214a494430057040c441eca808e904a29891928c001c64908152ac482c05a5a5006c918321b1a5a59892112249428894621e48121253222a5a1a222446748023980238302224b61444c1020ea0000570302446942433c28292900c945690151549c168898805148c94621ee8c003456293271e80a84892d19252cc03443159911023148c644a3121444b27c88862439284c48610c58414a1a014931531228a1131921559418968881151926c852222199298033c5024367576f29824c9f55912e9c26cba30a3530b32933d4992d0394b324b922449928be3ece62031c916242649926426914992b80799c924339fcdaa0b331c6426e36c66673848921a93c8244992cc6890982489078949922491416632890c1293244992645683cc649224b31b64266d902432ce6a90183d489cc9d96c3683c4d96c36a341e26ce64166722683c4990c02016a45c6182591a5a218527ae011fefcd24a294129f167fac45ec95f3f676d37b618dbed5de38d3e5128eca5cb46b76cfcf4c961f6b7a7501b9ddad8626df7a514d3a92ddbce2df6e794c3b6a793dddd431058d760c5dabe6b29e5affa0cf83e1f87c9df55b352caa75092ca0e1d4b69357da250348ab5b81b61c3f449b7f9737b3e9d3f3f9481b3933ff1470fe23181ea87ce666f13e33981e6c718243481eacfa92dd671db97f40985d2a6ee2a7df297e55183becc637e88e587df0e235518a976b5567f2f3b1fdbc71914e49b4146f004432c3f07c39f9dbfafd57d524ad9028fb4cf2f3b309492fbf9c9207d22777cdfe74f5f4dc7ddeab256a9a85a5dd6a6cf294b65ff6e7a4e6d916ac14b97a92bd6ea8a2a0c150b63d058557d4166907c3252bdab5dbb0f3f389bcea96deddfdff4947a9a41938a0349cd20c91481ecd7a74fe8938965dbf79eecb7c0f027dacf608877be1c7d323ff4abed21def343d9d5b68e31febef0e72706c5b8c92a7da24f32a54fe4d58e19cc3839801730f723c80cca1fc36fd75aff6ed83dbc65b6fa757babfd2f994df7c8c1f32b7ead3ea7a3c613c882dafcf092b9646ed52523359f7230933f6dfb39effc119799a29d0ffcfef2a9c3e22573ad1ca6fdbd98c93597f6a609141de67d8c8fb3ec4aa83d7840679a40f67b4d4b2c5a4ec92d57cb2b3e2ee8d35dc018df34f7defb59d3e2d5b4ab5d0d5f4d935a4ef9dbcf4eb9d8e57cf1b59add5076d7610bdfc6dadf3171e0f875b3b5bf550ebbef7fc7f8cdc27f5f68e24cb3e46e96c3f25ffcf766edfbe175b3ef933083785c4fc735d7b0a6c1baede7c969fabed4f28abfec7bf08532ca95280e936f5f4a492a0e8bf972b1f3a181d35d4082ff8e49b343f916e3ab6f55fe3b467ea07dbe2f34af0e6f998bafed46702dbc56dd4bee1d0cafd596ffda7d8ee7fdf10c72bd8321c6dfc9fb9c6379f51d2377dc9f9d0ffcda0b4dfc6d7cabfc7543bced5fab2be5cd190c6534bcf9487bfcf9c34b467ee07d9c41f3e563d0f3be038fb6c72f9f03bbcf9213617b6ffbcefbece9fc2d1d77de74dc75df1f246c9bae9b841934fffe8f1944ffe22b7af583040c8634aa05e7361db2b0370ba75e512108bd6281729ebedfd25a18ade8bef773acdaf2431ab56f7e9796c004bacfa38526d07d1c4eab7d3f9457b6fd4be6f3e7cb55d023e78b55db3fbfed2880bfcb3a448a555be3ee5695ff92c9f95a6d1a062f19b9e35af0c89fb2ff94b1795cf42057fbf938cc628cff7e944d72b39b8cb26df5fbf087dbdb0fa5d3f6da671de306e17d3b3707dade7f0343246edf974c249338679ba432446dba65d5a63c76e5b2dc576efb143b45999d0ff9d3ad8c72187efbde0d59593565378433d63aae7e690dfc55df4197f671a0fa9bce1137a82f39ab739e31cb8bdfbe90cf39e79c73e29f533ec61363cdf3d975dd52c7cac50ee377bffe5746f9dba7dd10ce7e75f8ed2b9bdc8b77d9b2edcf974d6078df4ad776e33ae5b0fbd6df4e6dd9dee21772587efb11f020d75b0c8620a0da56bebfea77f0857457cc39aceefad939d7764b1db2b0e5530eebef5dd34d739eeec2951fefcba64b65bbf7ad8d4df203fb5846f12bb76e846c4319d57ac7326afbe37f2c7fdaf7a2079b7ccf8f9f7a90ebb16c698b75e849f916fbcb26b9c33e7ec9a3c3d7ae20e4cfadef3a4f76527aad971fe8c95687c4d1dd796f371de306dbbb7474a056fedce9fb998b6372d89eae5b0b4385c3b67f5b9842f663d5b676db9738440fe65bf917891bb3ed8774df77e908389090bf240e7103fb5a44b33f2d75d85edc2d1d46ab3826876d3f53fc3c3a52ed4f4b1c5a3aec60dbcf3a4cc0b64fdb7e2799fcfd7cb94edbe73465223f08658c1ecc0fa5d30eb5b7db87dafb87f91d0ca5d3b648dcdec023edefe30f91b89d7f7358f4578883a203f9e30c8672631d22715bbc2f99dcffbaa12ba3347c41c944eeb03c3a97c0888adf7f5e3bfe8e98fba4f6170c43d0fe8ea0fd7dbfba5fefdb6b4377e359f52d78749f6a5ff1fbfffcdc9f8f758f9c2f94d58aff48bb6ff1bf6be1a7cd777c41f06ba4dadbc81d138c5453e4a823944c0eebf08ccada78e78dc30ebbdcc7886b7d772377ad8f3b1ff2b5f7a70e735beb7b96c3ecd7bfdd509d515bd3b61bb2607ed77fdf7aab31e02ffa58fff0177da94df017fdcc754315ac6048adadb6da6a6baed6d6d784a6b559c8a3907b1bf9417eaf3e2f3fc4524a297dc023fbdacb2aa5949ad435bbfea13dfdac69bbad0e59e09e6eeff1fcf63d9ae63aa4dba5bfd0745db5fcf85dfb631db6b0fda50ebf2dadbf75f22625dbd6c7fe78326d0b86f2ab6bbbb3dd1a93c3ecd7c9b4eb8753c9aeae0ff1f7ad0f7fb627b9da6e5d8375d3cf93b3babe6b12fc451ff68531cca61f0187f9d39780c3e4d39f80c3e8a69f637671b1f361c1906efbf8ab0ebf3ddd0529659c1dfaf37421ccbde990eeeaafd9d7c038ab0edd8dcb4dc879ba113018fa966f43cfdadef36b9ec1a3faf2b50f310ebfad7d9c41e1cfd6b48f5d08f2ebcbeaf6568772d7cf937a7d4dd7fa5287725be95fb5b3913beadfce877c1bf7a625e857feaa3f837e02d1ef0143ec0243cc037e60f879600bcc9d94f2fe6f79bffbd851e0bed6bd90e74ee3e774dcf9eab82b955497a92b2d4c29a504a974dd525da6aeb4e0dcd5210bfbda2b2a3456552c50aed3f5396dff67100913887efef067fbf08b3328c43bfc4de9ae75cb0fa5d4ae8fff92308324d304aa1fb5eb6730fc79daf53730fc64d3aeaf8121de61b4daf4bdcde3cf3c5c745875ede33bc6e1b7fdc39f8dfd31988fb4b71f3b11ec63f0def7ab3884b3aea5e09164da3183198fcce1246a73fbdef7bebc7dfc7718fef83a7e72384c7e7c4c01fa160c43a06fdfbeec46a06fdf9bec5f179a426ea9effa7ebf8247f6b94dffea506e0abe3fd6d79fde4abfe3ecfb671dfda569a0fdeaef9d8ffb47180ca5ec46e0f6bd60b834db16c4e053fab11ba29ec4679bcf334ca86c1e3b52d11067536dbc73cc5d7c918a862d4e575b013b52395dd9d98b3ac248b5ef4787f5bcebf3c7cfdce61e478792535b68e743fbf9d16138ee0de3f727876d8f7f7643986a7643f673de7402fc759fd31df8ebbea619e0affbde81e0bb037ffc75bfa573f8eb7ec67ac6ae1b6182a16f9f73ce39e7f673ce393f762268bf6d73db34cf67a9ebd674dc93c3a17f02ddf7097ff6e5c070b6b9d7a40ee9969bf6db94ba1be27c743f5f6a0d0ce9963f75d8c296bfe9f0db9b265fdbe25358f04ff9f3cad6c0707bfc4273b3bbd321927d64dea9b3e50e41a069bb397d646ef959763eea96571cc63dd61e236d996ff9a15fd9f843c7b2f19380ff07de3e8c561b7f18afbad6e30d0c41b0e5c72e04bbe587724b1efeba9f802fe4f6fdf067dfcf61f8effb38aceefbd939a9edd674c8c2d69e729bfe5e6aba3987c9bf9f63deb8d8f9c0604837feee351d7e7bba0b48b64db6a3ec50bed68530f7dcc070b637fc9a0ee9d6e473ef4ef203fc1c18fda5850eb5439977431b7864ee50ee091e695a37420786bee7e38f0ee33ef4a72dfda56fefc3ed43acfd0686feb4e53fd67ee21984e3b7c733c8e7373094d1adbdfce8b0aef5f3b50fe59e9af69ed4b4c73a947b9bf235ed4e7207fed9f9d07e7ba1a9e9b83f1df2d8f77974d8c1be1ae84dfec2f9cc17a99c9a76def2733cc0e74f1bef6cf1b6e10e738fb7addbb8ef3e5fce9bc80f7a3ece20faf2f10caa2fc14cb797bfe74319dddff7fcdc1e78945f7bf9a16ceecffb2ca508f97be47b3ddee3ef79bed3d15fddb774f457eb71bc8ff6b947739f5d3a6e1e2dafaeb6a7ebce5669d06cdcc29675ddde447e60377e89c661fef8651a87cdc74fc20ca28f3fcea0fa1addf2c378b5f173b2b9e587726a73dfd2328dbff0775aa2f1177e1c9a840984df47c709a4816144b3710bcef16899b53f1de16c4fdbedd2f18acdd5c69f75c8c2ce2c50ae47e377e9ed79b444b33f1dadb6a7e9d67418a936fe960e65998dbfd3a1b4daf8713702b7a5044310ece73e5f6e7beab0f9dbdb8e02da73602877fe4d87b2b933d881a19cdaf8b3d3e9ad10043bbfec42a83bbf37392c6eeebd89fc206eeeb56e887bda7ad33484bc35d09bc81d38eab8e051a4da3183243eeb7c0228fe39c74e82e16ccb8fba7e0d73f66b47aa1aac6c48b307b023950d5b768ed98b2f5235416d0a76a49a01cece93ab75e89c19c7e1c81d4177e3aff97ec5467e1077043dcb5fd3b37628f318d22df36d3f7e4841996ffc11ac1d0872cb8f3388fb107f1ffeec0886f9e7c719d47dfc166e3d7deff39efea7e304a260f8b3e3c719142710fdf8decfa6dffa36fd4ec70914e24db5bfcfe938812218caead43d72be0ccaea9edbdfafef9d8f23fb744ff0680343b9b59f5f410f9d4f56b7fdfaa1ac6efc75d7f736f2030d3cc23fffbeec42c0e091fdbae7cddaf3673742ddb682d15fa1bbd9130c65be2918cef6fc097a1bb923fe8cdd90f43adb9cb6c9f1bff8f2a3b623950c52db87824aefc7a715bffd6c35e7affa587ffeaa2febd7f79f1fe25de9d7cf54cfaf9fc36148f4e5572a5f84a3f94898989898b68356b4212b4ddf43039364b9f71db440047ffcfe1894c92dc10b5a0082dcf42d0801bfb0e9cb4d37de598e1ccd8f3b9ced90fe7c21b73aee11e43b18facba735899c51f729393a4c4a2f52874587c54d3f3accbf7ef66e687e96d96bfdf9b972548774c7af3a7613ccce4ded939b5a7eec9c82d85f73280c1092c0e436cd69097c551341561d814feed0674ff0c8bc7307c83bec4a6adacfd7f1d2a006a76dc461a18cb2e7cf97b90a0e8b543528d9f3911cd601913be4c72e83266c741f9977ee6c4b430d5c9ad9c7fa5610f738b746a69f21c039ec7e0ea39796f0f45ac9a958fbbf646ed51d13ef985b75c95cab4be6565d32b2cb049a6f81da0383726a02adf1cd09f6c8f9aed525535d9322a594b2d656c7fda8ad8efb516b95524af9a3853d2a19b5c9a86dfb8ca4e6f7ed497098043730fcf6066edb4522abdc56bc6ddb48709896fbe707e312bc8707e209349f040c689ac79e5658729edfc89356291a6546f9bea084f21705e593bfe805a553fd503af9dfafe0a537c4dbfda823b7aff611e8c6f717b77178ab9bd6faf8bd8235de7bfd35a98fbf72f86bbad36f536ed34de9d56ff51179e7ce1d3bdc0e65f788dc20c8a745b85dc12309fef86b3e05df5ff3639353900e079a4c9c8993f412d47d4843aed33a1c68be6412659374924e344a26d2497a914c227dac43bca30e36be50c79e8f6710c612eff9b3b174924ca85a4eba6ba9f72dfa5eabf526b480047158ebafd76a752d13800471d86d81403e47e03bb25fb7739fc37e1c0686f4e77c6ee693c3618fe9cd1a10b983d2faf26dec7c70a0fdaae9a643bce9fb9cf67c7588a5a6f8ef6719a7b7c224db7e7deeafde22e53e1f7f4920af559154b50e9d33e3381c7f514b3d0b6bf8f32c09c090eb79fb3e18c727818e11088331dac7a17d748f06352bab9be6d73248bfbfef6dc0a3efe96b9fe6065b5b238e31464a698c3122f9a20771cf9f9f2fc4324afb4cbfe881d4be7a5f433283628c31c63954d3342438e23911cf89780eb58fef6b9a86ff825fdc80a33ca18c72777797549ebbd4745df7b1abded47ae979a1dc23d06ea825b5b52fa5b5d2ce6ea8e54df2bd897ceac0f0bdc99de29cef4fddd0b43a6a6a39fb7806f5bcf5265ece55db4a854acd281ee5043a94bfe6fcfaee54417ff2d7cc1ffa530d332803437feaf9fa180cf14ffffbf55dd8f5f57b749c40150c6b7cef5d9aa7e5550ccae89ef2ed5fd9dcb3fb78e99ee051074efbf6fe5413f9410b3c7ad98590c123faf5895a28aed6ba65ed63371433ed7e764373c62d7396ddd0111fdb735fdf7776fb3c1a3b900dbff0675bfb59fb8e9d8febbb7eae9ad3d45ff45d1a3b10fd1e1ddd6aef40b8cfe9edada6dfa3bf77699e8f1d0873d79f39528deaf0977c9e4fbab0ed4f0d526f2277cc9f6f7538db963efdd8554a67123aebbca524d75acb50ab39c65f7456f98b3e0567187f510a4e2a7f51ff7052d9d02d184eaa4dadb5160cf3d38f9dc7f37106fd7ccf8f9e404ba07168ede3fbd869bd7f7160f87b3e457a6dba7d944f37058f36ed155efaf1651742dd3482129c5f6618a75f7cd0f0915ef3cb08707cc24f82093e7cfa13bc043a4e201c7a7eb9b3cbfc32a9e0d0d9c5617152c1995f6697f9c57707fe8af3cd0f3b9854f34bbce2f156568e2eedf39e4bfbdc9fad56abd57acaf1c8a6c4ba924dab457f482cc94662b55a3f5af4397fcd9f750e8d33e1b81b5066f98bfe0f875150b2f117b51fb6400b8618c75b30f4cf1f6390cf87dfd3b7efe9e82f0b8691cdb6dee3d0d1813c0b8648dc3779de47c708c4e3bde501230fcf741089dbce3d0f18c63454f7c8f93e5036b7dffa743b78c4d5cf1fe6fab7f5f72596c46a3d0da1051ed5af9b7620ad57666dea81d65aeaaff8b19300122626261876b7517f5d3044f2d9f42b78df85e8af10695f7f852aec49e39d3b77ecf8ec1069df17722ab7058bf8ec0b1ed5fa815f74980c392b4ddf03c77fd93b0bb8dee7efbdf7ab0e7d76d5f73b4f5bc1f159567d7d641f1d1da8bed5d85ff57168ce81ea5f1dfaecda7a1fddf39db65aead8f9c059723edaf556777f75fd1776f71387569285fb19be4796fc3ddae75bda7ba1e9fa4e6beef3f9c9f1fe92928dc4a233cf79aa48edf91c7c34bffc353f76433cb6ecdf918a86303b67c945b7f2ad95b21b8172f7c619d4c1049ab57643f7b6f12ca149bba1da268b3aac82f42ffd48e97dfade0dd19863762e7623e4dd0d51fa4233ee0b7630837e4ca0f97303c3efeb60cfcf7106c51ef327cec77106c91ef7e7e798233767fec8752fef951d08dbdfff3133d773c6f71bbf060ebb3fdbfe6cfc7d1b8321b6206c6f7f4cfc6510cd9e9f35709805a7fdf0c782b0c9ee88dc565c8f31c616f01e2e304ea039df6a0df09cf8fb7e7efe5f93870bfb3ed5a0d08c5d087457aaa3bfbc8ddc417fb66fad1f3b0b1e99bb52aaa38e091e4929cf5b2f38fedf28dde8467fdb368ea396d28dfe3639d08100913bb6df3ee7fc5cd7759bd7759c0ee9e65a6f82d0e436aeeb5ec83dee738e6ce215f71b7dffb84f470792208881c81d9b862f18ee96573a4f75360176a47ab2b2f8bbcff96bed6ad7754233eb98f3d7dad5ef6896f3d1c7ef7b7b219fedcf9f33f79de7795e9acf03c3d9f6e8eef2b75aa0d0ecf2c76ec8038fccedbd907f3a4cb28fbae7de6bb5403094b6fe94524a0986b9be945ef7dc8772ce96df6a81219ecfe94b46eec860fc4690bf3dbf3cdc6b2f9deec29df663bcd3febc184b0a8673df97691c4d996b35af16e7533a69d875b6eb3aab2deebedbdeb6befb30df48f30cfafe3e8fc6b705761c97efa7f104baefe938812e186ea08c6e0df4e13abf5fdc202565b5f286a726594dd06c0e76a46a4265ba0bb17e8c475cd8f1bddeb747e68e6008c26c5ffad3ea906e9f6074b3a5db98b5a5b389eff8853cc63927786486dac78f55d334fda37be8685f1fa48f355036b3d687b33ac4e8b146d0c6a7f16964c0b6eff4a38ebbea2373d33aadfdf1d7f6a1fdfada6f3a3a906641d9dcd62d7884277d078fe48340e48e4ac150fe4c2267d8a996265036b8712a34a30eaf956f2a1b013b5239c1d93e24483feaf0dbd35d90f16f55a4fa080336fea8c39b268419ebb5b2a10423185eab3d3f5bae7643f863f7f92bfef82b3ec660787f72afe1e7d17806f13c7e97c6130883a18c56d04327bfe7b5c08e47e309d47560682f18cae87c4df7c8f93870ca3b1fe1ec6803a9f6f2277824ff8620ff5a900343f974823efe8adff2faa63a6cbbd37ffe3041ce4981dc39375d4120407e0099697236c9a74de3d5a65cdef6f640e810edde0824087eba7fef56ffd33966ec2eeee69c733a907bef35e1ea6e775e252e99629d7dff8709f28338675f30c4f86abb37240e43e2b0edbe8d73ea6cfb2f8775dfdb1f5b36adbd407a7c3e9773d8f5fe76d35db0d8cd0eef4f6bef6f6fc216d95cbc853207d2ba1decbbef40e48efb426e02f62ef82303911f70f772f22f18caa60481c81ddc0b3910f941ebed57607ffb4e7f3a737afb9c79ec96ae5bd3e0b56d0bf3a581c3e6db0752c1a735f097fd4ebffc655b70ced31d2480070b94e3f47bfaa563dbbf3afc6d8100913bec6f160805f391663fb4f7b1b63d10ad1bdae21510b9c3ce3ae932a2e6903ef287c3b6af2faf64d696eb8605f6c8f9e647a030c73458583f24d6e674099b4db743d52c4d0892353b1fd3fd47dcfe928d7743ee5043575ecdc35ff5ad4e80bfea4fddc10fd8a37538507d0de27d2c4ddbb66ddbb6fbdbb66d1f3b11e6e675eab8eb9c76be956cbaa1bbbdf6524f6dbebc9a4daec499f6fc1ff24aabb32718daf7179a769bdaee5b67bed7d9fea1336dd7de5f46712aaef7fbf2096af085dcae5c9df3b9ea39a8fdd4e1b7a7bb60e7ffb882b3593be7ff7098bc9a5387326b5acd3f946cba964f365b7ecfdf6ffd05a74b570b3c9abfb9f6614cd313835cbffd9c2fbfd373be5f29afe40e9f7fa78edbd3a106bbfea7c304ec3a7ff8cb5ffbcc49c9751fc63459dc064a2cb983c3cfb5bcf7b7efd231026ddfa3359d396d3f671edbd392ca6e4589bafe32ca6eff570ce2799754b6f3e8d1328a03c9287ff9bbf42b02f96b9fee607b5a4eed56bc4225b340ef7ffab53d2da3764bd3ddb9d36fc7c2923bfc2da7fd3396fc20a6d997cdbe6088c4e1bf31cdf6bfef413c14b0afc9a6ff0f89f54936128b47471d75ce3897204bc570e2cfc72301f1a5c1ec32bdcc30934ac3afd7eb85f47a69ff7a21bde697f965768133bf58d599703696936ae35c6badf56718adf3e1bf5519e79749e5b0fbf5713754271cda0d5df9e23ad75f2da9f88bbea5ef5a62991e88a46a795b797e911ff4bcf4f1d1b16f8e7d45f0cf3d3a94f5ea8f84edb7edddda97f2cabf934a5a09b674d8c29e5da617c9c6afd26c59bfe5df02d16c0986f7bad4765b773472a249b35d1f4a372ed9c834bbca311ef492550e6b7dedb2a594bfe83be0a34f1d569f3ea6ee1fe9d53c986bbdebf0dbd35da877cc0ee5d73abb4c2ff283fa7686d9a1bc7ebb115af5a3c3b63ba9b6fc17071ef9e7bff565acd211a97274b0e9873e3c367dea41af0944bff5f7fd43a4d7a6abbf7fbd59fef42277b84b873f9c7625caa34329b5e97f9afaecf29a41f1f5da54bec297f6b96aef65e7c377eb23fed90f664f4a29a5b7bdfcf0b5251822bd36ef853c7bdabea6e3ce58c7cde1322d4caceb9652e20f7fb80f5fc2a91a23ddecfa9c64b3eb6399a64c0bce611db2b0b1f52838711cca9d5c499dfa9a46328168f8dc873f56f455b5ebdb6f219941928a03d5a732ccaedf81e17bd9f53930fcd9f2492c7336fdf9e5ede7cb69f3cbbdf7ef05f36b1fe1b718e9b5efc518ffec32bfd8cfdd909d54f85a707e913bea9466a33dae8a57db5f1d3c0ff75a5f7b0aa5e59b758f1c1aa5665cfd794c207f1e3c78e00a9290df9f87f69ec150067ee41179447ffa843ea14ff4c95595824a1a75b5eb47a19e7e7e681467b3450f12dae8137d42358a79cc20f964848753652a2da9c82b12cb064aaba7ae7ef7b367061dcc564ba9ed31b6d8628b65c618cb2dd327d6b3524a29655eb2baa0e1c39c2c9f282e1a5151cd106890b032849423ba5863c49c1c310c992bd8bcc10243993845f3a9b572b6d6ca5d5b6b6d401306c432575e28030b26d038c952a3c487c0ea8d1660ccb0040ed66412e53485061c8cf0020b305fd21051039c88b5c6164c6f34f1828a34b862456149615db1d667034baac4a0450870c032c5175aac9cc840c5004518688478e35503931db648a901e5c48ba80ba29b1772c092c61c27debca1525d986831420a249e4085c1a58b5da95cb12b152dba5993365c80a0d204161333c24c383f30c917681173380d8d2b2d58ac604921420a1a5fa0818207314c5c9569a2e6cb175ca09420e3654c0d5c104187092546c0c30f74b07408c25fb8531328e2db65895025861898d43163c51967c0142102110461c50d5858545011451b1c1b57af99943852c088b9614a0e69ccec7081932eae88c2e106a61dcedc711ab63753518b43acc8c9c2b2461d316494d192430571dcb0d1450a09ab333c675c518004941227575596e0b0c5134fc081b24597334a64c17b06ab1f55ccd8a0060e42d0b9d3a36a016649168f086c88d961862d5c9cac74f9dca1a0d950aeec8735ee72594089c381797205cfa4b829228911e4a085135eb4d04315174fbcf1831352645a6c3c7954cf1b260d5f6c6dadd5ce06706166882ccc688205cb8d1ed56a8a8b2f4cb4a1e3c59d2f30a431c13c8189022305e60a9829305daae8180c30885890918305138e97146bb2a8a2d3c4943a3d6a162565f410c3952576c4d83a530e8061cc9c35605881041164aa2e16127051654e549620e44011050f6beb156eae8873451d324a7ec8383d19a8170f7ba160e30830413c4d31c50d088ac0e28ac90f41b4d9e28a3276258386c517032672882d94c8b204952ca0c684c1410948d450450836a870b98af5caae3ebb6e4bf01971b2e830868b317a80c28a2f2ea84bb890020594281dee381257347cb1bd967aa1525ca97a4aad94300e14a58cc152ca7c52d2fcfcecf162841854564d4ab27a54077c01050b30375821a60a2a405c2a43cc169530964a15b30c6f451b72a0210d1970e8420c16627cc210a28d1fd4ac69a385b5b4464d736285af75822683712246130b62fa44aa4e2502cee5c182863e6173b1a4b1ae34d04826ae2216959c1dba0c31f5a4cad544126d44a0431d2e682217a68d4a0b17442ca99aaa420517362d008cd16275c5932655a6d889b76d8c390e14db30e1364ddfcf16780bec53bf884760b2002326091ba87031c5113a5471448a37417801050baa1becf81b540ce09ada7803851964ac41420a2392782aa26020238c135d9a9a44cd8a142dc62842ca8b1361268042058b293eb0b90a73c7cf5c393355bfcfc75a6badb5d6e7b3d656ebd3c60c1f4bc6003fb82cc144258a269ef0228a99115066c00263049c35d09852dcb6a19940116f1bad606400c4ac11a3e50b174f7880a2f5831736d0e082a565cb6c634ac7139d2a6b6419c113193076789876a47890041554b0aaac78620d14b5564d73726502458c0198c86607e18603e28899ad0513449c0d0c94ac59ad24149c5d630d51b7a94b11506cd1850d295359e410a986f82670862a073872c0d810869d8f54984e4d9b52074b29c1524e580aeae1482b5e9498b20245441b2f0fa022673645cc0f56d860e50a2c3cdc6940151b22d0104197257790708011674031673c61f9010a1e7c7821c632d4f080c544083155b06900162d007005184fcad062260818d4b0237998a3411a1e72f0a1083144508501582a9510cc990f6ea67883861b9c9a74980fe0924418295364cc79f3c115d8b358d1212bca8d374d7ceedba6869baa469ccf26bd50c41234aa788212450337a25883ca0a124ec8f0400e112e395eacb576a3e25c8f1c21b6fd1c9cdda25e4ac37def866ead95d260c393d3552482013598212306115cbe98536601434879a341165fb0a071728388277666563c52e78719be8012a68c9d0ea83895d10396172796384902cb7b404345eb1a70f00e2c335db4b8628b1cce0409d1859b35be10e34c9335be8c00073b3f3cf08c9ae68314f6e18a900f53df4f147b25a5644d6b2d1829a96dad0d9f54957f33a8499c41df92299f9553a134392122ca151daaa4e104a3b28552e982a560e22186353184e9e155abb6c6ca81e21a3478cdd5b726eb670d9c7f656529e08a16829e36b0ce98f3c4a68919a6d8001b6eac0823658c37b270c3670055d4e001eb0a26a72e09c8d206061728b1831054a044d02604751e474ddb3fccc11b08268c6f16b5a9e2a8f5d0990e4a4091440c5ab8e19426da61e2c48a1bbc8ca08c2f10e09465c138bde9a1f10bf1ae3e3eace4bf6fa5b0d66edbaee1aad6eaf319e0490ff58954cd59bbf67a75c2e78ca6190c7046d0c4cc93089ad0a147e560572d58708c42aa4d137688b0620e163b58ac38283c385d3cb9c3c7e84d0c52d48851450c6f0e60450a3338c0449c24ce988207a630241334345c6b2d0d4e4d4e5447e46adfc75a5b6bc6faf3f1176da2f3f99ae8ac8f95edef37833630ce0b2e51c74d1a5dfc807584993a6140f121eb296bcd133d2c8f6db594d9d66aa9dad65a4acd7c74067d0e447f87962b0ab4b4b16d037a587bc11280c0010a0c59541981921e96ca8d2c2208e3e5ca15277a58d0e7aba0f59ac387b5ebd6251d370e14e9c4c19f761f60c589ac23acd4086146194ca09c48e28819ba3080114c3623a0345c852c020d87001b8048a30a2b272631c8b0851b6c40a1b2a129cc06599eba2c52b86b33c0f2a685a54e17cfa0e2e44471179bd15445e7e9c99c24a834d0d2040e21bc30518314319c6c51620707095fee40ed600515534114e00c0224c1d214268a1347d401a34e0871a2f0c187349a727843002d5b7e60d94107353d387163499d4866862a69d440f1424e1940599ec83173a2892f216802cd92296550375759ced397b845551757677c59c3069657a4420824c8e0628618316738134e63cada9e6e6b72dbb427a630b015a8f226062d514e613061200b105f3409028c2f9a1800992a4a660c06d70a804c944ae6873934430e59a08153c68910110da6aa2568bc8165092ec0d43a707c664aa0a051c68a0d22d29861c6c48b193c48e10519338009801d266b67061f1d76c0d0ec64612d966831d3050e432cf1c6064ab4a982ce0b38c8b08464c28b2c306a78a186393e64f0803396d8028da637647823ba71e546961b70708021839c3840d84942082c3d2a154b5441816963e78632e01b63d837cac051a7ded895dbf556353f73ca2d525bae6c99b23f5bc8afd04c60e3cc559a2957e650d13630a146194bb2ac51427309a371b942c3f7a91752023372e85419628929567ea60418379031a6861c9018222e41b575c1d67e3ed65a1faef8ad02083b37b421060c573ff4b03a90f1c61169a6c8f832460f8b41d606664a1a4d3e7f056da9a80914eb05dbdae1625bbc6d0868d8f6752ce9615f031e4564bc7184d4173ea851450f8b24ea0732a8c0caf226871e764fb9aad5274712538ce8328223d410c1660b008288a9fac2aa872c9890f24262c3991a72480326082a725c39a20c2fa898b3268d1326ac987128a838a3c4192f6c1185171668811a40155870a0a12aaa0a26ac64944ff54419b523181d94f870670b0d3d4c11028b890a76fd9f28bb424dd16630dc09819a284300c154458c83578021b5a6cb182c365000a6ca18318e9a2930a451c307336850c3660665c5d4923a6eb25859e307cc541b60056684d1640d256e2871423eb9942bcaa71da9c484b176db76dbcc2831e36406ca4c143354cc6031b3a576402947a686d96a549655e791ca0a34593327578ce1c314696cb105cc0464a854324360907b9802431327ea388902006e2cd1c61530dc9461850428643105136c0cd1454d1bd28a8c32c2e82207281b82c001c586bb8013699a689003c314146f50691a93a6e1ad699add1ac6613c851115865418577ec298fa30babcc2a0e2114655075413d020470c19de04c1868a4f9b2f661b3578968630c30831694451628b99e5739766a031e3ca7e58b3d7e2db9385868b058bd3c166892ca0e270c1e264090f5fb438c28d367092b8627291ca118d2a593091e58c27a91f7a54346b98a113258a8c31d8b8b89ce1d245e6e172c5c585893462588162cd171c84b04242146aae705182450634541a8e6d5b836902c5ad69f8e2693b3952cc6b3b3950cc30db7f912bccf005132828c6c0d2f29900031a444c61355161859d8c7bd488f1bf6650a4aacfc361715729ef74602d67efb6d6c66dd9645536702a9b39750ca63a46531de3a98e11e540b176806f8532e7626f6b1edd366dce8e5469aee65c4cadec871aa6bcf8e10625513324eab891c40b59c23061c75bb33de182dac7d7d258259fb41ca98228b36b15086f8ca8f2c41450c478d2a24245a1d45c3637dce0441a5be09c81a50a7fda0dfa9898985ee881e5a76971aa2650dc780bf9d5d8ce20104421930311646e6883d51dd1c6d2a1631584992f689688a0470531fd1c8a1c37f8786cea11accfd95dff27c7470fe6ae6088a4636f4fb17c6e1c28c6c159d4f994fc38bd16500e1477f8da96c716724d7378d3d90e56a6c082254a4a93377ad42625a62cd9818a14307a548e4c0db3812152079cbfe8c70e040c627fd1bf60c433c8c781e8e75dffe769d7cff10e8b546da0767d1d1ee4d3a3be061e447bd4b72011930d57c01142cb540c3deae3190401ac2c5222a0f3e48cac1e15fcf1177d6ae60b7d36954c34c43bf4d9f4a30e7a656d6a4997aba7e779be8f43c33379260fed32c0f3b19b3c9367f28061cf4b9fef7d7878be7b1f3cdf77383e763e7ade7b216f691e979eed1e1ce025f3f9b4f4d76ac96ea8a7e73f1dcaedfaa9c358b5e7e6a193a2a9f5cadaac7be17ceed125b47ee0ef855cd3a8b6ad2a03f9b92f213f07c6f9fd6c0b79ec7a400b42e8f9ee7df47cddf74273b627d225d3bdfed19fc6421df078697e9bd8628eb2f573ce6f793a7c6d8fd3e16b739fa72e81666076b39b1d187a2f7fb6b3ece6e7a97dccff9e76214c90fa8bfbef6537d4591042d74d6ef3e16dba7ba129bf9b6d8f079c5fbecf72526d9b969ef79cd6e16bcfece912e8e31ff431c8bd90d7fa59fb9381fbf84bb88f41ee673b761e684108de6befc303a3bf38309cb33d3f7f2b6e4ecfb6467aed0d9c5fb4d73f557f332d49f53ac4d4f6265349be723bed8626686bb6da87268246bba1fa3ee8d7d9c6f585e6571d37de66db7f7643fe79764347e49d8d3fc70e04b9317e1ff43138db78beacb33d6573d72372d3d995ee468e3ab20466d07dfa24cc20ede9ff30c161e0b5aad7aae23881eefb6b1a4f20071d1ce1568db9649048267f4d1526d0fcab8d4ca0f954bbe0aff94d7bfe053eff9f4bc6e70218739fa45e91c815731f9220fe9277df59107fc92377db4fb2e97bf4975f8ac150360210b943be042277485007a881bf66d5fff2d7fc123e0f73ecf93e1ee48211262626a61e337c0f201201523e18bab0e94b0d0acd2a9fea70b6a9ad3a4cb26d38a3257cfe21dd988b332ba91639ea085d6acf97c00cc2f13e2fe59be0b0ede507017ff6bcdcf7add695df2a73c150fbea695a6d7dd5bcef721fb6c0caf3dfdf2ee39e56abd5c2ae560bbfe769adfb3d2fe4aed6f7f4b85e738198ab133ccf576f0209707779fed6d6f780dabb5c1af8f8bfaf9faffe74d8f180f01d75720b04bea3eeabe4a9df81510e9372582b5fc132d569ef7974f79cd6be6aee653782a7751a78cbf86b8bece2302f924a8619e33099c6aacc05ef18b983cb9203f14b9df3c5b78ac3752e08752e19503e394c82b78c0b52896c924e12cac7c717c6ab3ddfd6b75643e0933b8c5715bc649064adbfc1e866b567e869acca5c3218bc63eaadbaf252ed3e0e1da966bfdec7722a56d1af2ec5e32d342edd6af4406eff210a74aeffa4b46f82fce003ad1bcffac0d07b8d47fbeffb5ef378c023f92edb7df88132df52fbd9f938ea79d7db16e7f3def77d6fc2e7bdd0f47418dd641cdfe7e9906e2f3f0f0ff88147e63eb2eff3428ee37b1f1f1e1cefe1f83ecb24e8798de77b1fd09340479f40e407aed73e7bdaa5c356cf67cb0de5cb45e03b6a7ddd611cb3e7cb1eed5bffc3615afef913c080c33e124c0832c461b2a579be47b7beeb5c60c8034a171c66c121feca9f9ffbf9463e1db70c89c3981c26a5937c924a6493c3a4674113e48e8e6b69d981f9a5e65e687222d09ca9b66cb223d50d539b461e7b8a607f88870523e030090e791e0e933f3f011d049e9ea8446a178c3335093accd0cc600400000933160030401c1289c5239a26ab3a14801074ba52583c1707c3b12848511005318410020c01800040805106423565134e98092670cfdb0416a43c8a144c5d5ed4357fc422d7ffccef7b6a695392d71e8ce79c39efff1521eac240c2ed955e80157c112c6644e57249987f4555364831de29c24c470a811bc1f13b95c021471bfe22fae03aa36449ee244a26a9212dc3753c239ac92e38d0e5a0f22dc8538724fcd6fa69dbf508be3776955b2caf5b08073c802e36afbdac155baa1f965b7559544e383ad6ba142a5da6953723e53ececd71d1afb33ceec553f58e78078b9a45ea9d6b268928560b0a37353e6d02e33f7ade2399ba9f5ce32bcabcd1622a3c49c6b52d3d891ba67123d583c85a91b9dc019f1e2b3711bcab0905b06e87153756d3cef8ef3607f18bbd0c852cebfa2fab88d898a56350d777e32882f5805407faf6cc01fcc6f4363f3d609eaec5262e3598de2807d63ab6fb42adc14dd1459352debec09ae8fe834a1c3fbcf1749a78db9c8bfcfe588f12b313b1303fb1efba9f3ab13defa9a59483cc27b69e16b9baab7895fe418794bca72f86c263605dc02135b27f3a42298115833cefea2a6a9f41ecad2a553880412a1259a7146852f4ad63245eee1f82358e82eca8bce66cfced2e76f0b329f70e8c6f865dcb2744bd45e6492c3cc4c5d6e35e242c82a2702452244f3e122464fd3d5a8342d69fd6b0effb07e44321271d29ccd1d705fa435bc3e14cd05ac91f868cbf212610d3d85ab660e248ad00d1c7c09c026bd8f5c6c0b694ea4d9fd2374a3fd4ebf68ab57b54966003ce1e668b5250b06ff7209fe50421697cf76238fedd86d6b02b6b391abfe6fd524342011d350de063e75ec8f4c4da8b3c77f2f239f90be9619f96c03ddb1ead24ea2dd023fe5b19887fd5aa2f3e12c50c1993a4cc0fb51826eacbbdd40dca892f5cb01012dd1620c29c222b934d335ffd5a23b9a9b4c98883e4f111694aae3d394881207ba641278df0f544cebb17c165b973ecf9fa72f53ea1aa4959fa30d114a170a1a43c6b0f9fffaa27d0c5c1a35dbea2180e46758143163b4206646a3887e7e90b8ead302e0e1fa833839e993c194d5031317d0127f802b1b745225b878b120b78ff638f9b19636a10a21f53c2ca55aef4db29b64209d77f1d45c05ecc2b02d61550a036da613560496e6661af7ceddd112663fc7eabae8efda1819f525b84dfab9985c3e6ecd8558828e27d9f1924a2de253017bb5caa9a01b75efd8578043cd9c49e445543b43467b2f059b2d9737729cfebcdb0f00b7ab368d1bf1f8fdd041d5dc19814ad2d4521e8501afc85596e5c8ff5167392c85a57c64fc8b0871b49177dfd70956b0e80929d0d5a5cc305013f5fa4f2f48680975e5274640c2594a802e9ed32582a139afd1215f5902b5e3a28253f57ecde845bc4c1c70d7ab3f045a5cdb5e419108b10ba4bcd694cf9154e2c68d30ab714f13d10325528296cb27bb8b5a084a2a27dc5ed65f4adeaaf7b6a1f1d0e9ffe5322d5232217a1f9c5361deaae80dba497770e9008b78ae90a1d29a7e02b9b9ba0e65e6141b263897ba0038f9862a88126e5270f7c20afbd9d4fb1d532a4533b444de763ba9decc2fa72b38e2c977d09ff7eb7ab7f9b83cac85bb3ae6dd91cc616c23ddf998525704edf6791dbc73c7284459bbf7b4e2b7bd2cfa09b57b8de2015e2e9a1a963f706d757e088b35e1f921fa5b6522ef2116dd7887cd78c531b242ce3250bb1e929e94ce34009d42c53d907dbb329405cf166e804322a83c54a27446ea09d0f39dee39946329498e4ca24b62d64dc627f68ec5426b821a42a498a0619a1570eab4bf4dca9f8f2f174fbcf7a1af6a422ea7acdd318f8d53de1ac07901bca4bb56d262ed04afa3503805892a2532d4c3c002d667b72aa284b2a4452a7259d09991fb13390b7d176d2227c8608adc5502a55b9f9a81b011cb272bcb0e4aeeb5da2d9c77dd098f72b401ad923a779b10728c0af2a59dc95bd795c2fe8655c40e711e34281692804f696d681019175decf2a226a7b72fcbc4cec6f3d7ffa7aeefa9a1f059b8268bca0ed63dc479fa8a74097b17d46f23a70edd10ebcc652403a0511882b248ea965655c4a39c7c3b15d02a28a95c296ba7b4af20e182b256cb1c4e5c6b1140c02f6364b62e15a9e3427018e6989f07fd2165cd8c1d663c97301fc42ed0394e4644b0874bcb557d14b45d9712c1d84475e3b91009d02920429920b734b1e8d2002d2199154c74ec1d37e16d619f0cd2eaf13f381af959c3024a57ff0d5b3e8e80366fa2a6be87bf747ae8af8c3a9c479134f08ca358d44dcf0f19eb6b619325e82ac7985d7ffb22235c64ae61061ba03d18a1f91c2e23a9e0e62a8c498bcdc1c92299c3c1f2d9b748d5c00517eb5933a4fb6cff96a51270e9457805557f6238fc28c4bb9af431f4882dbfa91c3b91ee79f9b14f2dfa6ab32caa7ba077d29b1a858a63fe82ba59ff42c651c460a9cdf2421d4503be12f57ce1978efccc6605d1ed4154518c6b1b19c80b631b71830ceb37dc25f6e30daadacbc8ccc9a7c095b6b960ffa6a18ac14038d25e0e5a93c5c58c289077f6061ca46412057e0b655914c6bf77a7f79d22b2a4c9c207fb83fa67313c667bab93da532c2d9e0bc560ba4744e70f3506eac224d28f750ea9fc6ee61009e0749fbabce4d68bc54ec89379cf3d4fd38498629490722cbe5924833b5eea1ddcd2054150c3d77849319bf5f9a04e9362d21f45c0e3da8276a6c56545c1b3f4755fe13502c36c3f1d8f25b7be5382a85bb598cb54b709f1693caff60cb733d9e5bdc4867b33de95385c8af8dcaa3a2e7ed594d84d20e341e13ad36f0006b812682c265a4332716c9450f2dd85c831a374e88493f0786190a0256e10106b5f6d336dd42845d8f568772260e023619982ac68b6bbe3114245a83fd149d1b0ad5ad0dac9b7499cd5a5f1ffc7b1f11a607a3556ce7268c589266218e85e9f1d584c569bd2cdab1a4301cef554154d13a583d8685261eb1d8bd86524ed2f94b1c29de94c9ca93de094dcec28d17265b33ac4d3edcf1897bc4a1149ca26e2208f69e6534c1c281a04509e3da32e1b755747adf19372128c218b9e11b1ae10aa382ca478a3a58cbfed0e18454417901b24234695a49de63355501cae667a8450f43a5ee9d1b0789983b7513b12aac888bb81592e3e54d0c09b749225ade1ab2293e805328d7e4a1c89e9d98a021baae48c398a8369bc2185ea8df3c86f617611b9a16079d6271566c074eb26452e3ae50dbcfc03544164bc820a760871164352a6244a30f6833d169bb40e703248aa342570fa925b6f858c0334510e2523e214dc5d3dd0c742770167527967c122f5841af16c6cfbd2e2238ece81c9ec08806c1be3b849e360e08d2278beae1e8242688c5d45f344ad70d2126864e28a615c19730947dedc242e8240242b392d6c5f0c8519e57c2744e2056a3e53944ed8b26af564d8aee8a4a080f78603676c898fe31f7fa2d24b95b5ee47fe393ae2c17f77fe2f47e4f5b6128e8b0a5cbf0af69710a6dfe449f48b41b423f687e5e36ab524686a57527ed7feae7e92f1d39253e87dcf3b8c91c8c5694be252e184e1c74ca0302487ed313535e754c14558aea3b2681024ad3f443e848cf34ae202d08531667a964bf77311bd00f4c42135e89a55520c8b1a31370eea349daf69bccf44918da2e9228d9d409f05854c1be6ce1785635aaf4ce34e0944ed0fc77891f477ae1644011e9bec3ca358778518928aba8d2926f8cd0df9a5f31e5225fe1809882936988030c9273d29b17b9b57937f6d83745c5a999c7dc733c5ec026ddb23af705a4aa9399f0cad9b156daad89441f7986418a8c369cbaaa546444172e69e243b3661626b619321d39af2871318c86c9afff94e11d8807e56644988b4b327b06937eb88710b4a7692216bc5808eb9d12e7ae425526d6a4863b23030b94c56db55f56a01d2c4b99b2f627e6c752c5897c5c72528d24b1330891a2596a8971d8a9ddea68bf6c6e068d3eea24db1a8a4628519de3284d91988dba8f95f01138e99bf01d0a4408a004932d633076dbec2299a1d97bb36afc3d0822e43f83b8107a173fb8ea2428cd593b6287fb5bfa888103c83a23e9549eba991a09c3081550cbd27edd82fc26ade6bc59d3693afde11ab88381ee473e21c5132d203a19c476d2233acd78719df87ea9629258fd67cf2364b6e30c9e443812f44f14585f0c546a356552f9918b013797a2f2f00979ffc0a13c3e61c3c764c4601359dcd082b958688585e7ab5527df272547c1c65332efc979bbed33e0fdb4a8cef5fbc476cc5bf8248e8878cc7880ecf64341a7aa80194942c98b7d0642cdf0cdac09177fc9bc76c23b968eaae0ecea2efb1a2813cc7d20e16c233e50629f4655711c605c8712880cd05b50710cb7694e54a31bee1e82aca2c12c7474e71e13f801f27249859f97584bca71abe93bce15a2f4c9460c0818e39b949a9c07938b88900d4000ec3b8d1cad7e2d91de94041681206bbf3fa7a0a4a82a9af617722e7e420ec6d9bfa540d2feed779106cb1d658a045f55a59bc74fccfa4a458e49a65414871bc92b3ffc363992bf6f82afe05dee1d36df90c89a9abcf17625e57e75cc174c4a6a99e8e0810c51b3881250d0b7b9de3b22045191465c4445f66d292cadb8fe1a86305faac99d2d5cfba544364b7a0335af32b63102584145763d87277c6666e647eff352af1d25223aa2bcc3668d2b11b1544509969acf50486e9b76e64f6c807d72710955fb81fffff0c13411d128aedb5e7b64974f2bfecbcf4bbf7e376407811dc1fa6a9d1ab6e6b3dc5441a527c284cc1672824a82f25041a9607da3dbaf0ed619e72810a1239580368a2b92a5a34c3414bf36bdc45352e2a58fafb9eb15f3aa2134d8108bc3bb69b0e3764ee8339523916e68219bf6d8c265d618b1724d2f5360f6f0234051df84f1c8b906ec7ee3970eea0bedf3c89c969d0e99729e9d8d8a030852423620ce9692f0a9d25c32846863c5622663be73bbc83f5ca2fd1edae43b5c7b55788735678ac9ef668b05efaa4f7df26ec715e240200f2cd768345d246443a9c60a771a101daf5605acd0ff988bd2c56a24319e111409ae010523e37a25bbb206d089f3dcfd0483f8c25ebd76fda51551cfa82e2483a30ef7af3d69a6dbf0a723520cb0ebace9bf85e79549c833e0643327c6a6d03430f04aa4de24d88f955a5358df74992dad5188bfbb5922f040f6ae82898ba986990c721af305ef9691f345520e3abd497dcf41cbfde733f2adcded3245ea24174a1a2a7b111eeb80e2228f54fed03476e98a2920a0ef0b2296284e4e540af96c3364e2314f8b71e66a164dbd65fd38f4085107c548ef2e130d2d5fbb16b86eee3f07c709e4b9af27657697af231f689b3861a54c569ab76d36b42ba5cd241a741a4d4fafc8b74bf468247e291a222dfeeaa2bc3a37b6d34534c516961a503ee7ac8fbcf5dff90541f296225cc8ec66d14b46af411788ea97ad61afc5b0beaa2521ddb2bbb1331f8356386f925866cccdd74ae4e91adc5a34453720690023a19658a51a8b6b99790fb8ece4f47076f7779017b3b5392a8d8190595a10e1be270e8f26e91e812bf94563e9e7163921f1fd4619a9604de9eb65d26dd911973059cc5d492980acd4ffde7f4084e2a4928427d5d3b33ba5256f51f38596ba92c547afb880562ec17babdfdd42b06d4dcfcf46303aaafd0494b476633db228738fd4d31a4e747e40ec3acc79dc3c4a47e9791c474b0f155ca1f85064c52c2293f8c503021d22a8bff47772f4e2aefec30ce077f61ff5d74b5206638ac803c7ad40e8120a7a6626f9ec31d2c8e35535acedf3e8bea83b3aab294f9d5028a5dd95659e1cad515e0b09a214bd225580c25e971a226ac007f771d16b3477b144d2e890a57b0e232458b0328709edbdde410c3092d16b004c5aca5f6c46183617456264a12de55e08bf2805fabf4780a162b4d4af1c4062c41ec68264578fe6310e07f37a4017d61708d3bc1680451ce467590c93cbc738cb4efece7c8d7782a845513d223229e2a084499f563acdb35e938638e13454641a3331024bd0f8f01f64f7610422929bd63cdbfb9b76d5a584d15624e6e247b8cf3b58ed626165a7dd03e3fb23a93c0e8bcc4d939b3158be7f248ff9b4a31726504ff6bb2eca612780d98da45992c8d3124fb612995157fcc05ac2a6dcda9aede91e8cc7ec25c2fafa48bea080b8eedaf17917f12ded22a25463096de9d9c8fc9dc873fdf9621cb36d84fdec52d43375888ef9610ca2e4a46aeaec8bea62c2254393a68f9143274447e4bdf205bcee25e1a9cea1205e33209b400776f8960ac1ea5388001e478e4b26681693f90ace69c3ee9080077ea81c8094576ae674b88280d13121909e2bbf04a456485d131ec187f4e6667500aba752775a0310d4527c82e89e2e3945876134f5f63bfaf6eba48e648e1e38d131816c9bc8eebd3804cd4042529a3ba73bd4c12eedb6ed7935f345f076d0d9c3a32f6896acf0f8686942652eab26bc23a55d6f31cf2c7a4edbf944bbe55dc9e886c83d3766f4a4cdcabb7144ad33669cda16b34096ad438c37cdbe3ecb3e989274652d266bdd7e312445ef81f5d322cb79914f135d75a5b1e5434668d085c2967309d92774609def5dc515abaf1e427317d992bf7cded5a1a15dd75cc91798cf8e35a03d5c5dcaddc4cd6a5eb7e2bc43688dad2407e39b262d6bfac4109d75e4775b3fdf3aaec603e9c6c748b43933b29b01651df458fb4f0eac177f15c70c3b5a2c2b94ea67b0ea9919c4f328eba33936bb04e7fd17a7caa6b75472d028392bc39e1a0febafca4ecfea64cc810853170d70b4aa112b45d2556db99ed8576a9f308e0525857b1ca5d3c65a00365a4b0ec3e7692a3bfdc4f4d71436c434ba16a209988273f2049f10bcd99b812a189e2909e18c772e495027aa91cb40e9002ae1d46564ce20bcc4a388cbe2d42e0869510e661187e74aeb3e35d6582eccb761ba209851b2869051a4ba01333110e602afd9c83b71224048fff61cffaed700fa220446821b8783070f3b4c4686af83e5bdfecd4e751e1784902337247b27a60bd090a85365ac8f348fffc65b504fdd6105208666a90c0689daa2f960e34a3145bfbff539a2cbcd744a45e474b266ca6e68216018c70f504e5057134d4dafcf6da488b96d1f6b2756d973fe1217e942c0bd0c3f31922925e8cac921776265f5188f12b4562f744c70a1581444ebd09f0dae2819420877f764838f878191d0a47856578ad2287d45d3a13649a41f571ce46d9894b0f8d15fe3d319bb04a3a058c134d7b252fd0ac60d42e3d684b38a7d6a175842abd4aac29b92a50a7662922e231c083f7a96cb35dc96b5ce9d137420bf014d8bbf3f0a215406dfc1b37558f6ed6a8f3b692b72237b61490e2dff2feda31da9b2794a74e51775548074c3ee3de2a3fa589fb5e03e2c75c86d00260caa542698d43eb774c3c440ca56fbb0d91dbfa3668bc70304d6d8ddc6902d6f57042253dfe5bae741a9cdb7666faf1dcc4610a6b0672fa5166d4f8ba95cbc99e9c36d95ff3a21213488c20192e6b80682b41fc530a1800b8905694805691d7fafa2158427e2131c927c8cf3032e9c1f01aa2c406be6c04ba6f31f38ed8b97d1ad4508282464ce17388fb0f302db2ff8cc99043e6fd2c22fdcab2f183b048c8c61e61fee71cd1f4b32d2bff2834e255c2dff8b08069b3f6dc08815599ae70b9fd28b64cec42ad2582677c315ee57b01497b713652e4ee8b0890945856e652f196da1e7ceca8b1f144f3d1dbe91dd5ac727247b160814ea0875329352917ef27fd769956ce012cc7f5c5fc6d1a3c326e6e26d179226b3d892bbe5d124580c2fe05602f743c64ba6c4e225a769d20e03d37b4d26b575698d86a716eca390d0c4b656ad59217ca9b7c0695b71e1809228accbd4a005e71abe1cccc7495460d27da2ab88e220452c01168d0dac8d8e2ccf6062f0e01343690479744b9a52154767f525de4ad87cb9571eaf698e4d8f84fbf3191d5416d7f181a781a97d9a121f2536d9ccc41bb465c117d5d543b8008229f9acbfac8d9eeca0216dbed4dda0132a78f8788214176891449c534ee799694063ee528a3515de5d6a2cde044f983228d973f54d50e1be8dc90dcc332033ceddb3be548c5ddee8117a37d7a08654ddfb49857333b9a11728602bae687274a68728ad0c971432a38c44909bb3775d4f9a9b2962b3766e40d6f511fa1fd76dc046139e868b7449f9f8d3efc5992ee9790d05ff1b762a8429cc735b414dd84babe5cf77c0d26955ec401c905b4d1714487017013a23989091afdf2a4148e8e2e3bc187c3b7d4a77f820c1c398d3171329f0c4c02f04186f400669b84cc8298cdb665e19b2945f8c898f95f2ab45c765ee87c014532079e0184a15d70645bf52aea315560ec5c71d1bc94aa1759c46c6336561578599c2c3e8b5e6b1a924976563829d7f2457190bb81d04b8938f698e94a3c9af831764ee6bdd3233021b7814ea36647c36666a3cd87a015afd75d27ba43036e1fe96bbd05a970c9d9cc6a50b224e3ce2906bec8bc8c04e8bb6f70e0f177cd587de0f10cd477351902feaf178583b87c7a418fee8dc3b67b955f0926ce90c530449cd6c4f2a25e73653a3058119e65a162e8f385eeff0e6afa8e8b6739ecad30cc89db6a58d31aaf265ed78ce07931b33718a9a0624da805028ac850318961819a203b04620dc4e04783dd4fecf20fa0fe2a1d4461f31be32bf6bb8a70bead9f3f30c25e9004123506e6b31183940751dd2712bcc1e92df056d713e343bcaf27c3e1e8813c56150ad9b54455af816bd3e8b0626cc60c44b53abc016c0a011d6e42b683f059a87d27d061a58e0235be4167932f2905062dc05e1c7c1dff2c7e4a226600db7b4a21ef65580623bd03bccf20ddb33e49d5c86b811f401a4a1f63ac0379a8c382f064714c3a1af4ab4b4bb4c8adf988f28bacdd1d46660e9511b05530c639e9f8d5457bf31e827de74e06c9e59425e0a8f41a48b420f568a33f4c170eeb11876c15db74bad04e7c98c1017acb3cc26c8269770f47859541fd0b6ecf56291ee18416fb78ace378dd2baff1cfbbe0cf1f40a3a85b8cc436b429cbc6a370fb83c3c1d7ed9e4a6b438156e2f1c4410e2d74d269938662f0abfff477a2dd724e2c91b17d57f0373de43aac804d9051f62b1830ef726bc70cea8b8a4cbdf8949d4554c2c7c179874f7cc6f51a1da038483370ad7f3b9ca7e18af6f4ffb5fdee802202f9cbf371d8ad5c149486776f9851262a5047e021e149e1ec0cbcac366e5b65f39df1c4f60adbc5908a108fd9bbb21a781eed3e8f59edb9c1390837a475512ae9765572fec0404ec48f19739edc9687790aec15696c2ae92233291701acee651e2a9ba042417c9d720f31da2d4929d30bd77fbc271a8d720566d740a04dc72116fb381fc2650d0ae52a4b33609216b2b7a369cffbdb195eba51d57f3a6bf95fa51e71763ed49eca6f8fd53f672d40cd6729fb6af3241e08cebdcb4935f53bfb97f1df1183905fc7d45e10d4d36968570ec998414f7c77d198626b3e10302ca2a46a3a4508a060141955028a59b7665d1ef7c07505485c1c154c0ae8f924e2648ffc883839e0c2fda1926248b6ba0c50e12ebeaad58b41173346956ee59f41c54151da53c3f164ca0a574a0201f9b29e9afa2129fcc0391fcf08d6a49f1f786e0a9710414c3b37a67b6074f309ea9aeddb5ca07d3361c793f278ba9e1d41b2d127602e87a7cbb1cec9b2636c02e86550d3be730268af146f373cc9d82892b2e91dd97bebcd78160d67a459447427b7a08193d0f759e49f826a640099aed6649bceb0d17a31b2f0dfd6bfd1ba6c769fa540ab53cd661b66285fa33b8e4be80e7a240501001b9620fc16eb808d6669041ba819e418a518348f656c10285b1893d4c6f406b43c8b57d05e4485760887a464fa170ce8a6c0848ca8d49659c891ce96fc501be74d129c152202fdf18adbad2a2f7ec219de3ac6287cb39e5579866af36732ddbc3380c33856de6ead4206e8d9238d108df52f58dbcfe21da66b5e2a0a19cae7e163823424baea51bc7bca7f06ecac710000a6f29214c5b7c52297633c0a67165e920c7cfc8c2019b93be84352866017c1ec5a9f2e930bfed77c5c41bfce4d82a9f981e97c3a7b0457f9f520f596f4aaf66d5ed7ce414077c22b9abf141bdf97397d106acbee047eb73ac7d18475c86b7307a355741a4387fda7f276734ebfdea0bc9f8036491f1f30fccb6305b50c81ab0170efadb59ac0cb0f44f918ed242d88162051f2da665626cf65b382ce148cbcf6c53f9f76ac97b32dc1eae53e3855e3abd927c8451da18d34517cef1f361d37b9babce559a0d0d84e148bcf0e2be50f5ba84df0b1230b311ed0bcdb66d205a0c64c00f277ec1811a188a43295711dd17d53184e177dae79b665c217c5bc06f0b680ccb46139848bff80db87835c5ddb969971e722641ad8178b517e018c9d7697c0beb8698b4502f30fe27ae727fe72305eab2e12f966a35069370d094e612fbf7fe90d10ca7ac14ee0d921145de227fd1186ee3ab38d21a44a38a7a7bf20ef070d29b5a04cc788096d105f7d4bcee1961d1ae320b2c898aa4590291701349e374211c5783e2a2f99e88325127bfa7d611b7a41e7ee4f94a059459878f3789da08c0689255bb422292cf59a55405618ca3c7931516b404ac6144443e0698beb934c79e2eade9f4d8779979d8f35c7552ac90b03173559f4bc10f5e924081938349ec85cee95584f76557d8777466c6a722f7b0450d47b75e919b1822e4fb3a52d299b970312adc8b9a1763f97f7a2d77e120e59c5a684165d23728b4f5203b429b62a63a9f315832388637eef19a0ab61aef7636dfe45346726a462253a0c9b865b9473c8a571fd5cb7c25f7ba74c479ac91ec2025a36aa44bec25acdcd3f2c65d96cb269c52bbd6b694395436f3411a22269393b03760f387808a50c35c6db3d7fc02041d8e13146b664f15ca7fea9ca0e33c2e0a66b17281a94608034edba9a6c13b064930fde9cabfdf1837ec8ac236e83708c26c152711da80d55f78a75c633010024f6bdf35c1fdd7d4eec918f55b06473b01cb23cbeea6ad43fda3ab5def1d72c083dc522752b744fdf13ce6df5eb0603a407f3d070bfbf7dabb9e95e5aa6ebf3ebb7a3d1eda450f3c123e00f2faaabef751c3aeb6eda2b142a67724ee5f71d9c8139262297ca04f831b05a60d09c58d60be02c27d8056b76e4f6a6f0564d63e1d3208cda37e33580c26d600a27220f4ca5d4b41d2c91ff9679f952e71e23f1eced38566ce5475cf6c52ce536737de0f087e8e475601260fc12feb3bd8d09e70360f54790ef16ef162668284a51334b5ee352bdcd1a54967896dbdb69cd7292b7cd18c0faf22f8698d60d977185c7963ad0a1498d8a094df1e61cdf982015b6836af1d339b9343ac7ac404bf38a9e41ea90950985ad0211492bd91d62c5eec479c1cd6431f2fa8b2674cca8bb088afed530e113ec304b6449a4edab6dc1822252a25dc5b3cfdda7e4a54f273d42bcb7dfdedfb9ad8607d37cf9d3e2a59b2aa7f23aad96d50169b4a27cb1d23ddf9d84ab787e7c8b4048b786455d6d6b674735ae43e67b3767a60d689328fe9a09f1d3a8148ad942f83422098795aab7dcc1efca103b5a899bd5344ea66562713271498b27166a2fc95d386307d11f44357d171cfd5a6f5fca281eba88564b9900965938e166894c3e9e1688740922a396dd2fb228b2ba908ed8cde8b8e1f81ef84f884b51776e7e942cb928c51a453b81bdd5441a31f21f658b35cb9c6fbd65a0a21d0ebb3c3f59fa7cf730b2f13314633463e28060a95b878cd7a61cc7013c8d07d376592ffcba9484b144218dc72ec2cfc40c21c77eef062e96f461bc10cdfbb1bfddd86887f2329979c076dee646c4484c39f887b007035c40f3e68a02a0dd3e75526d1288cbdf688326a1b779f07d99d566aa31b07bb81bb7d9ac7a34621369d16d281995718eaf37e7de005be5726098a839b3138fbe86324a0d999c5a31e5c9af54e9c90f17157d1e1b6b410acb706e843a4129474b831509dcf6012371e7743cef1ac6293e843fb30d5edfc81e760c533355a6ef9933eef5f0cdf2a4b46e3056f7dfb7b60f381f6915037daffca6f24f19b21c206e00fe1174bc6813d45bc9c0277ecc728123e8b4cf8e8274a536ba042e888411395b46d364f0159c2d0718f1716da5cecc553685007787260763049c71fb2f492c8cfdc1c20a5b0361bcaf3d2697b41f8cb820db5f7b4cac18f9961941e15335fb1d7e7dfa89a84b1d5facf942472f4799daadc9ef23053e054247cdb7eec2d1994677ac8c30caaa0693b888f2a6384fcb86e967d163a47184b4796fb58dfb5dd3bbf929434ab993fce752f2a9cc4c737a02c2766f44793de34e34d992df7d69e7a7cbcad2a238c71f5e645ce5b600a27ce0252785a6bd4c3d13825f6606b69470ddb773d41b0a58828f06a03000178424b0af91b552f1995b330f75fbfe343145722f3c626a3c193348bfc8e275f737383bdec1cf111cc7d70819a7e43d5caaf4dc1fd1c641072f5a1ee43b1c40e01668adfe56a444e48747b956ed251735ba54444c2bd2cfc8691afa8a10af676d7f84f2ecc5e4894fbe20c1a10bd983346260265b123e25e49bc3d1e0dd5f11819e820ef5ba19fa61be486eef90ae0d3d132cecdedb8f0c76f6cd211b1c4e17ff042d6ce4774c44eb570adb93d778bdadfaf31093557c188ddc56912353f65130dcaf5b557176d3f036bb1aca1d6fb22ba29f3477023c3024670f04459f6ea7df2d7f1edeae3cbb4b99edd49c4e0aed477354ae45dbfd3d43ae3656b5fc9433af0c31a8e816598f77ba86120602ffd01f73f0a46f52be36db6b17f24f2908cb860e3f5c0aa36673b5d401124d2018879cad490940d08ac6a574911810f202822e360d061f3a862244f77eea66aed6441bb95058e310b77cf839175daaff5378dfbcd67ab046caf275715945c9418486f0f761b0ce0be5bdb3bad43964dde5e5b1ff5d19c072f0e06055bbebcb6451aaeda329afafdb12d5ee43032fba3312a9d72de120e7a7b9fde66d88ecc2faab712c2c60a9a26ffeaf0e6570749ad61b2a6fbce67a1912afdf242acaa769f81760cc403d54c50e5a5805a5d8267fc4c1b8406abc72d3915b21f0a9df9a8ce03c0b097304e63811a3285e0dfdc05834f4f8975a7186308db153bcbb061d4d03e948acf6c3bc561a65f5a1d5ba28d2e47826ba6b5218ba62dc14e0176d86ab60b2ca74a2cecc3380d1d77d8214bc8ed4f5c14661cee8c04b5da4cef103c0d628621a5976a1db36243c91d2fc3f6b2739242c383b0c2eb72d04a985e8762efc82bb5ecf4b648784fe679eb2b44497ca711185b82cc2a0a51c47f54038a6eb43f6afbd3e0a39529f90ae17867d5e34026c2ee8209c1186d80460eb77a0e543a94abc3694fde0f94ee821e226e4cc1f13444e3d81a014484c511cc8251e7bf855f22d6a0936896fa92b1272a9864e0ac92d04c444ca450747c82a298931622e08c22b42e17a68e2e9cfd42171793c083e80f0ea240828fe854fdfbb899d9e866d14b5c0848d137656a1c960a512bbb14f46768d03d8f58e1a593483c95d35cfd2866769402e31f921940924e5495efcadcacee556c74e65422cee954c6f20139efa63705b8346d71fd48ddc75f70155d8248146ed5567688e3a5611da3144ae4cd14f21a42e92ef9ed2588bbf854a424b84bdce23d6c8ef554e2a12d12e664ed14cb53f1c3c6d4062b2acd6fa152c7505643b6a93d15ecc00a463ce8302d27a2101438f66bdd56612a6a7a174215bab51f9f0aee25d8716187625b8ba61f8fd4541078a3a8656b840be50810be205260140eb4e60f59d45015cdad441c4911e37f03e617f5c91f007c4bdeea18e0b8083c7841bfa68626873701f38c527bc095837ece7e16761554b7e9dccc8cf356a4e137369d2c442720cf4897b78c7ed56e55af00835284bf2d24f63f5d22b6cde697529ef09ee4de0f101164e7b5508b8632fb02d3dd5ae987f789e813aceedcb644738e9f8c3498774ba23fbb546268b7ab56b2a76206a06595546a40c530d9ea87bf8a9639da4f692b610ae6b76cd5001524ae8dc905c9e042b6fc1435afe0a4cb7804bc9fa5585fb3a0dd59ea19d8b0a68ea38ba091255784b5274282f530a8b4150d53324f8e9d25050281c6c4874ebf4faf981e3dc5ee2d550615fd226833bd42236754bdefa7e56e0f77801fdb08c8f1d55b96c8c88979153098971d2d56d61f44547b8a268ade4b888cde3d794c4751fb594f48aac34be18105411d8fc5470409aa61df7631ac80e087c46956f8202b921cdb4048992c8f4341ac38301bbdaa5b06b77222d32076c2145ed0710273c21df1bcbbe948d835122ed71a69afe8b7453c227e13d4f9c554f280e704c0964411084781de46b636bdd9d3edd39543f62551e2b1c03abd23141129841f69500eca3d12dcb5f6f6e1052ba872236b2f308969801f0131a626c1f4ae2b57acabf207d5399c0ac58d6a88c545c30f234a619a3af9307b33f8a2947315f903860e4a2b6b86727e3515a684e6ff352515eb25f694187f42384e566c298b96f44b861bbc4beb629de0bcb933f9b1e80657f1e4acba692993d28e2a6df86a1361bf6a433eee3577821eba8aba48242a82c7e881fe7d360d7d16587c3925a77b7bbc6a07667e318dcf27383fe346a7b9e653e843bcadf50a1c5a10ffcf2198d3182b66b2bc23e0bff0f7ad14c12cb01488da641c5d1a49a8f1d3bd22ae9e9ef3300a424fef6087e6bfc8151d38a84fba701d3ee18da673e750c06e26442074833687f4bd305c83f6b18c13459aa92bfcc745d1f398ec02a5450c2c6b8b62691aba27302fe75ab328463f0a8b8af8537de1057dbac41fbb95226f4616557ac4e7b819bd485b8085a09388ceb19636457f32352de9ad6c616ea0fa5c3236cf84f6269132f9f4bd0403baf6a5f3f30c86baa1c3eae2c4c93ba9e1293b9a228d4a678adc2ccaed835c4ef5375a88977a4eab20d1d57522623f9a22719b1a0d5f12489b1837447950a2cb0af9824a046e0e582911f346f31240a1764a538d10d810d12e7df47741d9c2060a99a62b43c0e9a3c39dc1e06f2b0582313412949783d9cbcfa8397dc0d02b535163439b885e3d621fdb090ac1af8d10266d34e6fd0307b72032425c7b1898962bc09799e22da8a06915a4c5eb7d09cca7e100f1b4a7d73a7735fa9af553c8e36c5bc3359ce5c19c75013e60d801a074e340c694c89c9b8d82a0669b1f368a37abad609e2e2d2b66308b7a65bd1b238591d629089b366f77c8d957d31db9834bf0f737a22084b1e5ec9d39f1fff64b95aae35efcd9ebceacfdfd52a1655b0bac3196b1b26c37caa6b2475d50474418b6f9f82f1690b3ddeda1d4c8974d6fae11f16cdf02d02366871957f9b3a639afab84b9688668af4edf938ee2ebc183970a35404574d5f0f0f9e181249bcc066208e1d8c3d92152e682e48cc711a67512050327d43c530dcaf4f1d8f46dc67329c5953b70d235b330126a09076b474424b93ae8a87da3f47f83e817d669b3a32fc5e9c8c630e0eb675c9ee651ab646d5a62a41c737850eeaa55a401946ea9e5251748c8ad0b2e401e0855cfba6d60260b89241fd913fb433ed7bfb1b7ab66eeb755766ffcf2b85df06984a66ac98bf67de0227c7604e43f84234b3d26c1f7ccc5320baa4f57abbbd29e401e1237fb93cf0603af5f6125ecc049246b4f9d179c7a176b17cd859e2e9df91caa122f82182a61abb42f82c90e4bea5791e17ce7cd96a0da18dfd80f7cc3cca47fdb2be800c541a5857388032c09a56537d9220d94d6049831caaf7c8f051de1505092203f2a02d778eaf3e56dc3f665f60a296822e50805c1834d6179244caf6f30a01c21121e10f4ea546f7fb07850ffc721dd076bb2ad1f67be94e397872bad7b60f49f7ac372c7c01ad3a275880a1bf881e0351ae221f833667436705fc6ddfe37a5d70c05fd6334505f9946f73523ca755d22fa0a0c887036ec7464c4bb16e5981fa4219486b41c4d3934c4725707166fda1bf4c1d0c37bce5a65d415a2b799cbc7d17341f75aaec1694d6c12f3a18aff4efe8442ff349db992d08df1fc0e31e278c51c4a1c0e1adbb0058e38c3f128b88a43ae7c45ccabf8e9dfff9d3d9269fe58069c9531c5aa0cb6c43868edaf7e69022fba6e3ed66145bece3aea7435081aa9b7fd502384f26299d393edd3739c8d8fe18a1373d1622f22b794b2724574832dcea1f5f64956627b2db239eb9da945e24968bc23715e0bc4e3fadf18161a8af23ec0050fe4150e0098f204caf397649e3088999430d1e16e616f91574437264d8692a44a7ada5f953f2c05936f2a2c6681b0c93dee414268dac386d4bd6179baaa121cfd719e18e62eb89ff1e835989a41b8d1b00b2ee43c38bb787e5dd017b6055afdf58a2bc6a663bb0b8e69b6bd3c23f28a6ea44b4f3b420fb7f8afb0681ef77852ef8103afc02a864a86307ed78e14848f8001a1db8e2c8266520926e2322547103e3f3d5199e4c02396f6ae721a91fc680280f5b929257b70910f3e1a0871536a0bb4c2f3b0ba5dbd98d5a705478353482cb7b462edbbdc82bbe0c12e57c407d6826e726b1f0924fa85d8d23a58bc3d498bffd4da27a3b556289bd639451b1585ba68860144edc93f28cf3302c5553dc9875b3422d101d6c45b9825a719a9a578c55f6577eadeda6b17b4434d216a960f681fe86de1cf730ca59376073f12a8197e2648d16820606ce8ff790d11a765658c48d0ba12dc7cef644ab0d4b879735b100587c9d4fb24f018050c31110977660205d6261867081a12bd64804961f59b5939c45823248ae29a61dc162af3b79ca8ad636006a73b971ecfaed11f0a99dfcdfd0c058114902013d884abae239e3cee2ac551ce3b853ecf7d2846edb8fbc0554f8e0f6570bcc807e888565317d52fae44e28a59f5daae0a8c7991370698208c1ba387ec5a95d828106a41ae8f86b58ca02a8c44b7c686844e60d92896127273380fe0a2bb9d7a7a3a9948702616e4a2997dbf787095a9bc104dd45797d44e441d11d40538458e3b54ffa82e78abbc787c5d717475b2daec688795c561d1ce90109c4db6137b33758e55cac577e7cef7216f98811e89c83df8bc98f06ab5041e5dd616c77a2f068d12c599f900df6ca2b610e8d79ea01ae3457dd5115ff88d10f8b08f1f4fa181c317ac87431141a76c1c82d7fd0797f1d77adabe9fc00c464b8f87ee209e7f16c02ecba6cbb8d48f88f64b9753ffe2735fc6fd26cd289f5d8a1b343f2f4e207f548345acdcfa7a04b1efbe7b316dfef348aa3f884a14218d55dfc56e16b0ea26b2792bc892acf3ff0b4028cfb1f9c00eb344e8ef436fdd5397a851e562456ddeed7f8a2e1abbb3cf3054f6c56e3b8d0b9450fcbe1a1cb787c86cbc9726cb03f175d87434456c0fdc75478b3745a8f3b284d7848a179ce6b1af2473dcca0da7933908e9b8573b792b9c3795f1bd69418c5c9ea3b230244d56c197d6ea6cf32dc7d0a4ad46055bcae394a1bfb360175a93543b0fb56e27c9f27be21c76f9dcfa1f604f258276f4f7b5239b10f1e51fc753f8ae836bede3e50dab609085723014baa12ac4b182b072569e87d8cb3d607ab79d21756bf022ab2f4285f03e21f3ff197557c49c715b5e08cd0d6d93e8a7db029f66574582eeaab03c19397deed27fcca2ed5734f84c8325f97f8a9619a9237d69f26280ea99077eece747c4f921bb39e5c6c195a19098e0f4765fef36e96d637d23a64c479e5476a0ae61fbf6b296f619b2e0cb14f7884551646a84f4ed44e4bafbc8bd1ea8dcae8906f276c6f460b413ad57b55b32418bbc15c48545d3ee9d2473c8da350714ab18f99825a47cd34738a1120907a774d1050f182f440923a52fe72a95d8afa3d921e9aa96e5aae52145c733ee0e80f767633ac2bef1d0ef5402d7abbe5bccce65add71280569785465378711140a63b10e4360be65c170aff6744a7d4609d6dad319afc06cd1f6342768370d2b4a35b336a9b9eef59ed62f11ae6fcd685f2b0ad4c0484bace6b56546c2c4ebdc19939927f186c376b5a64aa2fb608a47422658b7c51d144724b841f6092599e13290ccb3c230e60b814e455e794407f4d44870922aff6b4d6a44fbd656d870274e5cf5253295b152598f02719735f573deb7fa3a59606d6ae09bb850d1f57462aac5fd26f754aa2874361a555a47286ea2262cf1679d5b0e1df599faa88ca4cef72875daa0271168ba7aa5f025594f0cc57d515200d3850b0df6ba84ef866554ab73fbb084bf10e5c531f205651a389c8d611c29921b1143b2820ca6bcec1e530925e73931f764069eb12aaa2ae45ee45d9911548e9c5749ac7f4ed7afa39a65728bdecd507397ffac54a448da15faa5fd532ec085c600eb6dbb53435212cd79bc2df1b668bf91854b243498cb2a9d5680a6ba41ae7a153be006317aa1f2a0bfc3d5528800bb54402deb8fe519944d16c10b44724923534544ddcf9c42928da6e0f1dd1cea8be797c91015bba5c066c47b53aadaff76777eb95b56e54ad25153fc8d79a627f42842f950f342f6e31f156b74e8817f51a82c59cbe4392cf494fd2fcab27b2b6cdc60871320176cd2485450f7ce8d5e873e087ab38d4bbae0a5aa1ac84d2810df9abcd9cb4b32909f4068838301efccb7f75604cf8d9862475e9d4d3a5d6f4430007ba7ce65be99182a06f0ffb30152c6ceb0ef7106e0ab76297d9fc38fd888d7d5059911d8167a32962bf415bc5a0cf43af2dff3a46b10941f6b117b9e880702257690eabb5658127347b40e79ce01810ebad0538732d41ae916fb6b9d297b9170af11c8f1a75f3b1cb6cbdf220c754758b02f7f048697b2403c85d1006b9bea3e0d6a4c63c2605182f14431a7e06560f0a2c63378d0bba841aa4a343a8382edf871b8d13cb2392eb1731fe71cd280c6896550795b02e743fdb746ab8f7f3ea105259f2603802beea56a1781af5b8daefb7a809c9b56c86da28cda0689a519248570242198b2139bfba6fed087c3d07411806e2eccd8f2500bbb23c3d16b11e1d3df47a46894d48ef7e5a973ce27042358f016f563640876637ead07af2b0de7f8161705be20918ea1a7f8f18a4df63248ad8b3345887ef9fbbd7bf5e677e80eac8e143cc5712453c8097331e02607a72c07d4c58294460fe2d3cface78c040e50c5b3d8f1e2ce6afffa991052572541f123aec021412f2fd890740592445e03636a7edb266b757b9eced1367ee51afd1af078028625b68ebdfefe1dff371ebcd89a2d3b6e0cc001c59ed149f69270c36d92402e5e0d873ef4ebffc36891d82a5ebbb669258f83ab8b4467c4df28c3ec778e035ebff242132aa1ef1050630966063270b039c6623349151dcfb3c86fe907120e643570dd0f811d1181335f6905e631f823925845485267b0230dceac936fff2c9a608849c608806e0a39d6dd1e0e243eb39b62fc2078074d0f940f336a9cb91745d06d063652f2c076bae879170580d45a4faa2dd416a2c9b87740de2e8cff124a080a763b0181b2d98008046e19044f3139b09e18b0be8caab9ce615def2ac04ea9fa5be52e4c8239f0041674279461d3db62f8bfbde3df829fc7553df2c2c4c6f90f47a3bb28f6939e78150eea991678c4e4616c352f337958e5fbd60c5cb9b2f460ec0a26b509b0495cc8670f4e9fd7f568edbd1b65491babe8069c77f553693c1b2b22dccbda76eaea2cb4c842ba7081f8b34c448d43dc295bf2dfb21aae339ee3e8ba286963bad02f393f4e97b7d7bb684f0473ef753d3e874bb9d640eb11e702447c30ae495eae3622877c3c32e28abad13a2469a002c276286658bdb14cba8542b7b8fb9a4f0959e19d657f1d5c7791d6181a9d716785d6d85f8905501ef0a5eb4c16753f2074d81a576d0072baffca687bfbc56037fee841527f471944ccdbe5375aae50927fdffb93f8deebfd5e1f1840cd2b858b52aaeab8d296a175a326a91663de5944402d27d529032fb4ed4a9967c51c9de7f0b99e689c289dc917e444cb7aaf8fbace338fa5e4d8d9976bf25de12345124d4c934c07c468edd072525cd49925edafcd7a6fd51e8c715e0b8f77e1c01a004bf84c4d4d6279c5c1589a98f86a02a1d352f5c97a1fe3601ca6d95eb8658c8316e62075b47373365aeebfacb0f5d47e5c1706ecce34e60b7b565fa287d8f8259db8b176be93a6ff5b0e95ac1b1de822fc2c769296a24eb642152d3ae2a0ad167b0aa4fed5b93e7e3fc9ca00726bc7e077a550e729ab5f2bbef19523c878cc96148bf321cea9d3a0604f0dcafb6e5c58942bb6f5e19e8308b5c860111d68375d63c7ac8a1491e3e83747a8737099132bd2ac479b9595e526a6fa5521479dacb48575c033a5a930848af85a8c896211e840bc0dba10b459dfc7b3630b112251dc36952f06696457fd917be264a13e7101a0e6bbe66b8032f2030b8b3e820bffbe10b73c3fd352cd338f7cfa98827de0adc9ce4a86acf4680cbd23ed7426c6afffa943760e01ab487d7a28b532af5cfa969c81c42b811c12bd1252ca2f9d5cb6de12fdbf5c28a47fd6082612eae2a192193b7b91d687e3738310c7dbc110ddec09cee7f018a81dd90469f7f7f0a7b6fe32d5921be5321b9e44e84c3ba028dcac438d87b0ab7e878d12b0a87cdafa15fef81a6e6f35dce39f84af4da6729081929e4e2eaeac7e1b9487bcdb915b0f82c42dab02662fd113e69ec03f1bd083e3980e2cf4af8b9ed3eb5cb8605aa434a3ea3662248fb2e5a73b16d39116ef02c5caca714152e452294812c85bea0bce2b349644cdd344be7bdf113a776343e6ae048bdbd49dd4b15605d9777d66e1fdf0515b5c4c41cc9a7e2bfa72f2db2afd1707d18a626996e5d4fd3983c0e6637873a2b557afbeda499cf3440a7616035c6a7da5e7042d36724b66302bdd974fd551dc97147154cb77fa08ab418f94467810e1dbd32382a093dda3f830533f405c40630794bb0658740dbf231369b7093978e2945ec588bf9999e8c4bbc15e4ee33b5dc83b0a89c405a95d061c633ae471f5583084d34a93a91854d76a364441c3a04559c3551e508b19793954b7b691397f97cdcbd4cfa17398c2ddbaad3a73f92f349e519983436e26aaa173715431b805bd5f01ed59bb5d0053ffe6d6d49ea87d3b2b8d0e6ad3476f9521c2d7f87c07a4b3e1e226550e53a89a70f4f13bd0ea4422d8983d5da924016b0fe6b2634b1542f956c02f1dff3893c13f2d856fba5d3f98c4efad8655c8910a77bdc72a446741fd3e7c04a99974634a581ed430e53140ae430d540d252222997e9dcc0ebf2048695c8f7c0d31bfda8f6a008dc7cad3c83cc6ff7d9ede07bc85e7fbb1ed225e61d66706187d9764c2b1396677fb6c910309871c3162182a4bf75e1cad5d901d41403007054c00c5e4d33219f967d2bf7e7b91a3557e93f400184b96e395c0456d646d4e32e0cffb24033d80e5adbafeec810b50c31b87bf4019c8e04f26dba3c0f8203e9b4acee845568c3c0b6772e1e4c14725d8e2562fad5750e2220a2527e643bb5854fd56bc970ea96e901e1991752631dc46304adeebd0c42e8d56c6eb7a521d56088845461acc8f4be66e67f29c89ffaf204a9679c72e44c26de7da5b26160fb5b7e20d4a0c7d5f1c36ab997221342b139213ef779d93ed4640e54a29621d8b856ecad5205f95c8243a50ec4ab14f140707ea511c4b4a47d9f40d4c85955181505f4996593661c285903ff0118e5ee65139d43fd41fec8c3db97873e2a7157dc1630f8ff7727e77f8764beaedb4483bbe6ae9c08baa1c6502acd0c307bc382b51ce937ac61ec76bd44db416b7efb17ff00416ea5c5d638545387920096f268236e12d0c22d81686ce670b2883897f1aff87196e24e67595954f07a9ff911467a4659108238f7e1e515311731ca59d7022339da405c993b71ae8489a35e79c8bc0a530c2c135c9c35ac9c8b771e94d01f4e40099612303b061d004d956a71235f08cde2b4299f658c12234be0e7a7299055b6d66a2804c6abc7939269bad76b7c883eedff78d20d2e35891ef393e968c1c2b238e92e8e1305fe29ac0e9ecc449880d8b6699ee1511540bc73a7977820e205c81c13f09154e7207fd00f5db53734981eae377dffcb82e375da51aeaf62a4f00739ea7c6402f07f0dd28d415a4937081d3255b48bac9c34d3e903b151b226bea7cbe9e1fed7a96d684408f734ec271b4a9bff851bce5f6b53d772ce68401b9ab6578ddf516087a97779bf4d89f8c5c28b4ab42cd6a60e52a8449af6ce7e9785d40d6e467abdfc29e21e92da96afb72bed1a98a9e6808d5f649f064e073c1d2506be7761f9fc950fc3ad7fd3fa6d93c847ff21a1fd690a569b817143f226310a3694c8a3e48c9e832edb51110d9f7904ac9534b057a77850865b80cfbfb61b6c1e5cb04f03d872f43fcdad1023a5c0749e589c7304ea81e51c822c7e3d73fe15917adb7b48a85a5dab6490401b22afad826fb8009570a72d661d40df9ef2bf3afd06f48730dab3b860c70d154d2f1583eb0c94cfb24dcab94973192a307b2471604c97a7280b030f37149f81d6e6300e2a103ef6812697458dc6b40f9a5cc702f550233e5384c0ba0955f4136d606a5a26b3a79a0c05b5f1e8b007c7e5f44100b426616d42a4482b4141855ae0f49b98cf0402a7f13f42b8ff742602877279784920affb1a583bab3700f28b6d87aea7e5aaeab27647582b004dece21bb856402eba99e7af9224eff8a4d311bfe2533b472ae946c2b754e5650034242243c020a6d2f68b408c15217f43967ae9167d17d2f0b10c671d82910866341d19afdc95de01be07ea8bcdadfaf538b68d41d13eb17f908884fc01fc9804cea904c60e521040cd28e9ad4582274458ba98421afbc44c51d7966459218e7bdac8a9222da6106b9900a2880dbf33cc9350e2eb190a054faff3933a99787ffdab45e1152688119263873acbf18b1021a4b54df6de5bee1d410e850fe20e2c99c59bf751f21d24356b08405ad8826934b1bd26917449a17829dc8a2d3faf0215b824f6fc13e9924c9227ba928871c6107f4c71d42507defc65174cfa62e60808305958018537e568c12dbea002a7e76127b354713f29d4f13c7461c7fe245347c885d297864852480ec970add0ad646e25e37eab66a19e4a2d8e462861d4f2991315439128ee61b3cb5f2e633bf8e9d0093229b1a28547128f39c4429149cae8249fe4d4a38808a6e149f3904351c85adbb6de91f4599f9ffe4f7f56a2bacf87d59f9558f7bdd28e57d8243a13467ef6ded5ea67f9f4e7d32a669ea88491f00eebcc2eb3f6e90b53c143d2059979887988877a124997953c284d4a71cd5cf8851c440dcf4bdcfa269796ffacfce4c2ad6f124da2226e41791fe9b2fcd966fe591d3d092ab5fc3412d206139781b8713264d8317bf02b4bc5adfd7d4ea63c3e220d3bd81a9ec20997484a2b768a554ae99c73c6182394ae0879e2513820746c087bb8e10ecb1f563a9ae4a31b668ef0cc9c6596843a13bae09c93d64f4d5e7ae9d847cd7c8368944a64ac312b46056490847b7b76063312eeec296594933e5a290f8fb407919c9146a6e1688876035d3ed07ea0adaea632ba9f4f6351c3b823c628510320703821e16171348625314863361e86ed10440eea78238838caf0a2e68a42aa1d96ea6aabfb74fcf1d1543a1d34447a4ad3dfce911cc4878b2f619a84865c7c196ab859660d727f5787ae136ec03408147f685953c68b674197aa0b25e42873c61834d2f022c7b8430677b49e1ddb03d0c91c5eb60c3597cbffe296e6c7216e69e156e4560b6e8c5accc22dcad45f348a90251f8fa4eb88917451c8245d2fc823df93640025042c1101d3c197cd8b1b2d398df8d43c8616e50bced1f109b3e28a592a6618719ccc61c42cd82c9929870250092c447190b51083d10e42cde7b8a90ef5d08b11be7630d4c37a78183c79eac3fde0912b870f5f2fff44ba72b8cb79007dfc046ab7923cf22d48a9a7dd0b1080de953cf2d0f3913cf2437270a1473b28f8d0cb99dd95d82c0f08bae011510f7134f131c8911c9efc13e88278d471865217641c0171c6938f025d0758ca52841a5a6061841a4f7e0a741da1c1983cac70834b9390270f77249925f2f0387009f4e6e1b9dcc92ca2c93524a143129119c08635dcf879e67e5aae8ce27eb6512d26dab0c1d11862a40103262f4bc383bf9109377c96fae24c103450d2e58634dee4a097655ca438e3c5903ab369947b210e520693174393221894e1d14fee8558831703f4c2a31d1439f141b1339b19e428f262480208124a37dae4a047b917220d73087931f864c1c30c8e02903f7648e34d6ee6d086975d8d722fc02ec0287931c8193c151b203e83588d5108cc9a72300f23d818f226978de17d7a91c11d206e7c1966c5b8047b0ec410c2154b42d74af2f03c7c844beae1192ea1879770490aa5b1973d9b710dd8134fb9c806ec895f495774823cf1fc645fb9d81937c48f6b8f3af6d806ec894771b14c64c29a696462168d31422aa94dede2126c98757c247922971bcf873b8ce289459665b49e5127b3b0ed15250b0d50f2d0b0bd6c1754b3db6b7a71ebb16755436dafc9c4fd66a7b617ea0bab65db4bf270519ab60d3973e5ede6446356bdecb494b66d10b092a7de4a1e4cfe8b4eec6bdb5a3b2b71a9e9e18124ec869b09f2f17208da10a90e317095b17698050f7b5e703fdb5eb01717cec9714ecce60533c8cfe1af5aa7610eeb34bcea4a662927dd79dd09b70eec81c7b0125e40cc82dd04f6c09f5910febc9438e1f6813df059aad2894141f595b8a63f16349ffb7ba1b95bc19e09eb8d8d101ef37221e5a21b9f411a9358babd665561dbebda789965ccccf294bb1243c490eea7752ad36eb6976663631353370cc485dd64968d289b1c28a9e6d7e6ee7381c66c4dc652720765842163a4cb48374e9182c2932c42cc828c74e39f300b3e6eaf129805dfe4070bb35860163cb3e04ec307c518c3c8b88b13e2cc4718bb2fa80527b26d4c12ef246b587154cc824132462b62c399d310898fa2a69bd9431b15dedbf2a6ab500eb5e64614110898484d260c58736a282e5432076bb9f58530ffc14779f8285f05c6185983ac4d17dc1865f745adb271e321e7e5769659dc67513652cad796708725a768c8aac8a73a8b1698f22a9817d214f270e57ce5c02eca842de5763cec7238a8839a36920e3ae308996be656cc82dce4e2c267f0410dbbd54ed4e13eee1c28b33f68aff5edf8a01cd899e0c27ba7a1e408a7cd17d4394fe2677f11d3208712733fcb492df7b30db98fb696d220271bb559200a0979d202f0c8935cc6e54089b00bea6c5ad15ac5acc8b530dbcaaa622a8ba16066f305b5b59d4194b589af1d2b9a6c1eee402823bfa5fc6bc8997b22aee55790ae863cf2603c9591a6e11a422d0fe112087b3eae3f78143720d8d3e4c42c48719ccc31c4ac7f6f99711aa8e13869626216c45cd64a087be24f60a1c6ba27cc92405c09cc92b760dc8f871a7ef640244f9b202ae189b44f3d4b6116b316fb675fab40007a5a761568c7e1ce386eaf292404b79c2824e465cf417551b40eb61478e4c1ce2cedd970831285841a750b051e35aa5bc5c6b8d895631e2eed3e9f865f2ca3ccb01444421cc14d0a0b79f573a1abc0cbfac7855b0cf1a5b718c2a87bc52db8c51043cdd7618f1fb79c28a8c396c2425eea57baea69e586ac873ac665a9e1c74375f543d64b7598c58ee2867e3cec292e4b0dd6c33ef4e3a19ec1cd721e8ab3c7b87a65d5734b016b13dc34e5ae603dbb2a3467fe0578e4a9c05e05f5b733d6ea1a909b1fb72c013581dc72e02720d7acb9f2795bbb28f5b38300f46a0725cf0414e0d97a1b725f093efaf98c528a248b537e3e831ca1b439ec8139aba68d69738b1b6fb5b9c44469a82d3489c3fde43ff8c9e540994242b569cb99023c6ad8699956b99cf99a333b1362c343af76433fec2359f395b3879b13da7068e5d5679a86717673521b0e5daf3edb4cc01a762890bd840aea316ec87af526906bd65c816bd678f5409c6d2c4c40015eedace481ff48d029acd22939c214ca66de0454aae76b4366c16f48fb4c465581d35a306bb11d2686611695cab46dd3b214ca625b68a104128661d66236d42a5fabc8d3cbd7105459ae94724a7920969dce0d15c370a0f271c688619845a5521165b1a55a29ede08c93b28d520677be79d4fca5b69d45c6e9c9ad2f2846228e4472a9a5bc0d8fe258dc79f8a437626417c9456e915a9af9acc6e61fa3b1b176d33216cbc7c7fefc3c619645a2da51c536a7199a9dbadcf88f9d30ab416e6965fa6327f8cda536c1a69fa08e6cd6f0421665edbd31091f88e50d280d625caa27b7249b611ed9b1d39aab63c30ad3ac74d9c386b7dcdd96b039dcda35d3604b2224df59e95c15bbd889d90cbbecd9763f92876fffeda0fee9a8fad3fa63a7cc4622db50ba52f7a2562bdb7124fa813d7c1bdcf8efa7f999a6c12c854ad97c414a34f60ca22ca6691a9d921360837510f6d40331945276130baa6cf3430677b228d295230f0f3dfe14e9ca915dce03e6e927100f3b18e0e36907031452e06397230f3d7a18e2679723bb2bb1e5a1370fbd15b3f8949b1cef71df282928d1fd7c9aff235df101d0cb120fcfc41cf550ea887584ae0b874017105c6af828ec8212fea709bb50597ff78a69d55d65306be3c2231f8c1aa7e1910f3b741157656527c6afb8a58459f13f4dd2b87349c95219396ed610698f3d84d8430d096ea5a1866b8978c1c594a8726f9e88475c5443241c5cd1b1e8d686483810d337b290308f8abbccd2619ef8b88319713f78d4f14f8086bcf8f815bba0177f764d2fdee6880b7bb6070d91f440d35943243ea6e88fd5f170277655a012dd21833b54deb1939f31f2efe6e5bef99fd645ba0a5f63965461a1adc32d29e5a4f3b485d95868f3e18ee430b1b39bf82c72af220020a293130208ab0f3ce840354408cebdb1d9b42c85b258a55372843d7cb85d896b7a097920860cbf95ec20e481677ec7108398f98d0cc7491311b3607fdd3d1f721ab3befa5b372f37bebe4aed54cc9a9f36afc3adf9d5fc55515a69ad9d8c1110167ab62064c57f3083b3e1b90afc203cfd573f99c59b970b9f027c95da5966f179125db62da13ce55cd01a7e72403c07a5b3c6534a29a5f391c6a69f94ce5a299d5f544d9b64687ca6afdc95187af23c9df392c78a16c755aa336a9d9ae63389b23a69ad754eeac49d569b108f55db2ef5da7d2c34eab5fbec1297e24ad013e784d9a80ec21eecf036662dadf37210c63288ab692a58e63add4fd35462e40af6c8a38458695735e78d0d5cdc008a8162bec826bbb24031f9b40a5ffe26055596cb873dcf93a736f9932fbbd8c12019231976526ab539b555d3dba6fbcda9dd5b2f14775a4d00693491c66ac504a594bebbd6d23ae7a4b4eaa1ba15abb3d2d7ca59513555cd9e48d4c89f13c3326d9bd8a665944ad7a76a6abed8be5a0c85c5edd5b483599474689975cec838b8a8fa695d3febca8eea3e1a07ea154216361b7b81e95dc8a4266dc5b0d970ab308d26d268a2ab463b12683dbb6b59f2208fe252748a4b4c71a9bfebf4ba39cc379c94884b714952a13152145c7a367710f6587b59da1cf7b32c8975b43381b60af6c8cf3c54f6ce598020c6d0a152f564566ccae0ce479f9825b3c97d98971b9962999ebf12d734843d5f5cea0925cfc7473ddf699c611b771ab7bef8dd4e393aed499eb707488f95aab8f1df6d809d7576b70db74a6d67b0e7d2c3865b03b8e98723acf053cf79feec48c04f0de993fcc3fe59d4bed9d23599471e7297b2cf2c67dfb8df9ccc9257d61436a9f006e54d0f2427071bc541660131b7aac462c3ad1eebb0d0ae5d0e147e3dbf7628a04ddb47829929d0e08a206650c3121e30b8c19634ec1375f84064839aa61978192415441a218484181282488822218c84f022c4174cc640f2e1656e64c8cc94d49e05aaa6524e14a150f38730b68975c00c3445283931c61a314c4f9c519a401763b238197106873750458029e2a888a422947e68034546c441c94b1148a491030d3880d8a225344b53ca9dd211ba7c9144d39c2f608e62127d54ea397d2c13997668fad8c42d234d1f9d1e9fe8631a6edd08e10c2539a5497734bd4d3950861735e0838938b2f068500c8880011c4c7a34e5f1864767687a067344734ecf6358698ca6673478e9cc7476e22722a7e73454270bb7b4b4cea7ce59d85e3a4488102102460b9ac877b8956a226711b90f9101349124409ac84bb0bd881ca07392a2e89c93607be524f9228b4ef2116caf2438383838383838383838b7b2bd707abc68a37b5e657bf56800e8fb7b9146dfefb0ee7dee7fb855a4af1760f4fdb7bdee085db0d1235c04db6b048ee338ee2b6c2fee889840fac843b0bd8e14b92df25be4ab2262d2749183607b15718959a28d5c33c2c5531bf907b69791eb81ed45e510015a04329a6811de81ed2582183878607306991d86f408c30530083a620a2d424a4120e130145bd0f5df6149d78dbc7257318cba76d0558d963dcef811c8930cb8f0ea9f48d734638640d22411451168bc2a43d74f51c1ab5f41b21048d763e156d7f52e080d11e1141d79ad63e0e82aa46badb5d62ac26b1de34bd710bad65a6bad23bc5632b4743d736123e97a9243184c3445d1c49619bc7af6225d108e1bbe70c1531a63c4f8c3ab425d6bad3daf6384d13d9f3de7c0f6eae1388ee3be81edc529a047d8a3473895ed35429122458a14b906b6571111c67869119e81ed2582cd9ac8ad74352143c90c1feae8d2449147e457ba8e744144163f860833e4c523b2a6898c21a2891c03db8b0802fa881859f491abb0bd8ea07070c4a8a2717e81ed85f37befbdb7c0f6ba466eeb6823d7b865a48d8401451b7905b697914b29a5f453b6173d05b657552a40f3682144f37c02db8b270a397a7e86608329baa461c7521c5378934cd311669a00f345195d7873909e389721e7c7053ddf04e8499429537a739e85377a1e0bb784f4bc0b320ac938148962914e9729a0e879e40b98a39844e4f35109009f8f6522131537f47c6c8a4ef129a611cac2ad2243ff3c6fe1222a06e979e6c22d9d9e6723f66203260cb7b8a3eef33c8695aa20d3f38c06b788f43c2f31133bf113a3e19691cf731a216eed6419b2a20b2ddc42425464e4e5096e1df91280cfcb30dc8a5e7a5e8ae116093d2f93a4925c9a974c227c5e3ac9276eb13e2fd1c834605cd0f352cd149a9f43f393885b373d3f8b783e3f8d04f0f9f9c4fcb244cf4f2ab8b5d3f3138c7405cd50830d88d6283303a7276f7e1e4957501834805841b4468c2a7cf0a6203d3f95d0984bd2e5333f99b8753f3f9ba613979e9f66e69374413ef4f0c34b20455e7001e3cdcf34d205bf806248e9054d7818cd20c42da866480bb746202ae216122e4664f43cedc2adade7a917e982695c01861938e0410b1cd0e04dc8c753121982003283176d80e1160ce4480cb77a3e4f93a812b706f0798a065dba424dcfd332dcba3d4f99a8137da269b8a5865b493e5f856418e2968f16221bf47cddc2ad544f78a425cc116b8099228b0dbc09d1b880061a18a5f1870de0f026205fc01c718b043135294c203d5fc7046d31c28a1aba20a28f3ef2f0e6eb92744d299240030d38c67c41f2e62b13b7e01f3d5f9dea534dc32d027cbeaa118aa2e7b12cdcd27a1e1b9ac7888ab805c730f2f2855b05a002cc1e3d8f85e116aae7b123e912011d5b88e1e3a8054cdce1cd6349d2550027360209a30f3d6a28e34d98a6e7b1258c49c9e73133d8531632e8790c0db73ae8792c8dd010917445a122e9ba46dc32c0e76d17eb254bcfdb27b8e541cfdb2ff316ccb4e9799b34af5de256ebf3b60cb7621662baf5d625b0bd5a06680300d206b894ed650025ad040b2c5ac923b0bd9414000b1bba0087c0f62a802540981b3401fe80ed450012c26869121e657b910080f6b9e28df6790adbcb2749922449ae68a393dc01db2b49d703b8e2891ec01bb0bd06d0d3d3d3d37314b6570f92361ac94fd85e48eced11da38e282460e2da6c8e28df02b5d3d64e698a30a2ae8c0020a6f043f7a841a88d1239c01db6b84257d6f01e99b80be3400d3f7aa0be6a8efa16cafbbaab58269a2eb7758f53ef53fb5d65a2b181874fd93ed557f5a003358a3057027db4b003c3c3c3c3c37617bf1b0d234ebafedc512e156845f11be12618f16e1256c2f111e002bb27400be80ed1500bbea23b7477e8f7cc5adad8f98e923f7b6d79127e91da3de796faf1d6be4d6c8af91afb8d5a48d5421441b39d0f632d25111457757c0f6ea2cc7711c155034f7046c2fee5398d13f02b6d76d9122458a147993ed55c4d500e8a3017026db0b004488102142e44bb6171126ad234512adf3036c2f1d8bea230a406ef890e206db8718597099811b477eb401edf09205521336c8c0872c3cca4753fa1f249d3383ceb96b7be5589c5b9c5f1c335140d1386f6d2f1c036cafc9440799d634f0871548ec71033398f022688831509c21620b0d494f9e86a6b55f3bcbe7678dd6de845b38ad1d48ba4ac0e18f378e9004f9230c4ffb13e9eac01656d871841851708185a7e5a0356e4d3b15e9624ffb0a2c3cb5762c2e080d11d522a33a6e686d486b8f5fb44730dad65a6ced5e8b9ef6b8245dd3d366e8fb7b7b7fef57f74ab6d7b5f5b77e55e9b8a3eb0bb0bd2aa594524a29a527c0f6a276fece253ac6b464cfb3c2a0038c9e27c1677b69ef10e810a2437892ed15c2d62080000208208000020874e8d020b8d1f47300db8bda793b7fe75773a8d1f33ddb6b1ec9f602e16775c8d4ab8fb0bd5616098d0e5a881021427e216749177c1282b5902dc66821420e245d538ac0d4218337a06023074fc89f485705b6089189620a41c4d0c31382831622e42a70ab5ec8a948978f90afc02ded426e4508d2536b30f0346d8b1f5abb8a5baed62e80eda5ad6cfdb5e98a6447d7f36caffa799b44cf6bf3f7688e9e57f1e01d3de1cd23414232ea7925dc52d2538b377a9eb5bde6cf5212d2124c5c818331557894843af678c10c00096389078feed1540b369a5e84ed451f80ed25e4e9032ffa831fd95e1fd89bf6e0d6835f0fbee21691f6c083ef706bde030f3cb8126ec519b4075cd0d0f473677bd139e79c37b2bd66b7bd3ce8a0298feee0dcf6ea40d5aa359286f003e98d198aa8c253fd4a570ad4e0438d23e818e30b243cd553ab64ab54674957241212129ac153dd875bf3aa2be116aa698d561d32d1f342dc808b35e2e052461c79f4fcce3ceba8e791b011debc122439e0e8f926dc826520357de1e9f96faf3981b8a14b16236e48e3c320448431c811103538d18547cfdc608916373d8bde87fe872281b1a2e94be056aae99f4499c22d9ca63738a2e98b6c2fca0480eda51a7246991e7222db6b48196474f6d9823d68c0a58f305d4ca18497911083378c58fa428b100dbc4c8fcefe1d6ed5673edca2cfae845bb3b3fff8d1d99b70cba6b303657f92e5d1d9a750c9eeb3cc8c329d0de98c891f61388521428a3604f132e8c610529cb9218a24c490c3cbcc749669cf1e8b329c2ed1cb196374f6f804b76e3ae3e018438a314f7469c20b2f7b04235d1518c3a98f333910c2081fbc0c8fceb8b3f9ec5149b6c0cb843c4bd3423e855c677b09399a9edf61cdfbcc3b72b6d7c4d1a1711ec2f6c2d1788843064e3e30bd5105199ef62b5d298851c50d43f4f1c7137878da1dad9941436b07617b6921f43d74a3ef57dbebda213c4a95f2684a065219570c69aa6446d37fb0bd28aaeb6dfdad5fd528f6e87a0fb6577d07db2b633aea1b3355f4cd55dbebc60e3bdaa66d6e6d7e6dbeb2b1f151f203a66dde845b43dae640d20597be30e9f1460e62c4e00ecfe64fa40b9ed1040d8e605006144c31f06c1e855bd08eb6b1b90a54a40b1ed9ccdbccb631d3a56d8e855b386da3060823eae8a20f241cc878362d3b86b218c5600840943c1ba7b67924b2f1b1a9b711a3eb6bc5034dd7ab866cafba62e20ad1f3aa79471b3daf33edd8a3e7856caf49293d3dcef6a2463ab3c38bce7eb75776b3bd6c3627407abbcdf6da6c1e9dea140d39d87243962629ce30e922860f6a9ca8418b145eaa8e4efdd2158558d27553f751f2a343a7de845b5ba70e94fa93d4a3708b48a73e45056ecda74e25752b2cdcd1a963e1d6edd45d90ae02e0a08613643c81c69732bcd4a3907405c140101ce4808635c84c01032f05e9e8d4166ed1a71e8b644a7b2a76ca4988d63e355b9be600851c423cd040041a3f78b4e98a32430492a50a35c0f0e81c4da5786a7a6d7bd183d0591d683a7bb6bd324b5b0d2cd23812a4480d27ae38a109346b9c1044902eaa68ea69c6999e4f6dafd9dae95a0718afbabd525e5a4aa36edbf13349d6e0dadb7f734aa7472b865bb6934d582799866e26086432899844645996656af8191aec9a46cc13a75199e66747dcda63a9f9193ffb225df34b06a6f999103f1be26744fcac889f19f1332fdc5a353f25086422dd906ea452a9544a0d5c9262624a31311d25718b9f4a7d912e992605a6f9292fa922e99a4373a8e3bf9451f35342fcd4103f45c447090299c817c817ac29c3245d9ac747a15069d4c0252825e99245a8a5a339c6704bfb225dd28b17305e8aa44b8291605046cd47a184a44b26a1869a6f0511c45a6bad1ab80401cdb74ad22585a49095424ccdb7427c3bc4b744dcb2457c6bc4b75eb865bf80e1db236e25a0f9768f3d9a6fc7702b6b3e260864c26bf01a1886616ae09226cdc79ad8c565f8989313e6c4d47c4c888f0df131226e1da0f958111f33e2635ef8d8173e06868f1d311fab8240268c0563516b13bba2503553ab1ab884d5fc7a74542b53f3ab10bf0ef12b11b7749a5f8bf8d5885fbdf0eb177e05c3af47fc9ac42d7e1dc3adbac71e6b9a4f691a3570490768221a33cda74ad2c5422c445988e92887e6d331dc12f245bab8a8080c2de253233ef5c2ad119a4f85a48bbdb0978effe8101860ac69fe9c530d5ca26afe6c62571cc363cc347f2a49575c5a6ae64f21fe1c62129a3f8bf8d3883fbd700bb6d1fcf9853fc1f0e711b794347f26718b3fc770ab8a2ad6345f3671cb895bf37c69865dd1e34b34ec9a1e5faa814b6cf3251aec8a6022988e7c29c497437c49c42d57f365115f1af1a5176e2169befcc29760f8f2882f93b8c59763d815c467412093a843d4614d1926e9baf1f8ec245dd6e333a7e116540397b092744522a2a5e6f31127718bcf63b875d37cfe225dd128fe6330cd67213e0f3108cde7223e1b714ef3a32090090924ac697e7c8a69d4c025d1a544891925e9025a3ae25612b718f545baa62c758c5eb805a56b05c9132fc48f430a683e0c90090a268967ee0fb5a6f92c48be0b2fc025b0f91e6097c63cf1ccb4b49a5fa4ebe79199bfe29fcfe2fbf07ff840dce26946c28198e6a3c0adda7cda7de9789946ba7e3a17244fbcab4bd3f1324dc7db196491744926e689f297775a762145cb97c05a3c7914a24c61d7f4e4a9c8a28eb2934df4747bd1d892c9e968d6e07e5ca6e32715f763a78e9f49dc8f8f3a1ed5c6fd229a8e47b1713f16ea781416f78b633a1e15e67e71a9a32033f4ec793b7fe757f3014f1851051b7b141dbde171973b7ad832833136a8e171a7b3824a9859d759d99d1250e0d677a027dc8a6b68683edf6eabb30639b3464b7f3e581157bab8410d4b0c15e1400317294bc4a068882dc078220d78c465dc8ce6efb0f83e1b18f405a83ceee0018e1fcc6863690822217a6002882d3f0411e4e509396c50420d2b7c80c2e3a02a8a98411955d4808b1bdcf05808386050620c2edee0b2851639827800114e3198218b3868e062006ddc44cc0466e60768d18419295c7083900c3c2eeab3829c7083cc104dd810840e4f1e63b153d2845bdf7db8c58fffe156fc839959a583c41f47b30c842eed33fbecbe39e79c9089580b134d3ba41937fec332c9dc784c091b83256164604a138839e1373fa7edf95865c2328de23e2cb2c9290ea6297134512a8688b6eca0656807262252310fa3f0d3443bbf046e7d5656705bada48dcf6c6cee4571df0a8d421d6e50b6dbe864eb6c3e6f57e8cff67757e8d87d16fb86ba74dd9c6fb44b9fa5b8b9a5106f6d6757ab1aeea75271eb8364e450aa40a891c6942658a6c9290ea62971343511b18a01f753ad34954abbb109aa541cafaa63ecbef954f759e954dc51ade8fdee9033d7f667a5e955aa2cf7d33e0534cf09ed1bf75bad2618679841c48d47055115a6502af28cfd07e3e1e7abc0393b4ae99c93d249e9e7a4944edacd39e729a5140ffa8f323ded60d442e3108c5ad4c8e740663dce49855913350f8f596b27768c568a05516116bd82358661af753a814dffd19e9f27c8356bd6ac6966b866cd174f504073102ace186869cc3e7eab39bbcf5a6b73ec165ee8d28e7d055d99cd37ce4a9e792de35658280a957a103c0a853a10a750159bd8ed2187dd4266c238082b077bce6f2103978edb8c1b946c4eacd6c7ed554f5fd349272f8a291bccc44e4c073731d364277672726d1b14e9628fff04852852b8f54d3a9c526f9add3cfe4a97cdb7cf5369548c31de721f956dcabd7ddcb26759cc6296e23e2a1dbb0f859a72bb2c6af4379c953cf436dc7d4de0e6dae3f6809bceaed0f43636dd6561020fd8ba95e471c17258e85b703f08071d9506628401871749909b5366a43227a5934278e6548849e694f919219c7026d9d838e0c32235a859db58162852a8c767da2147d496c296759f0b733e835bd67d2e74a6a5e042c754ea40ac71d8331366e4ec96c206256e31d531cb7658a4a5a18e99032fbab8c137990b59a7ac9446f92825958fb2ca7a69433627a5b3072e2db5381b422e6a6116845c3c67f1f4908b9f1c8df094e3c32d8588434c02cfe7fec869b1cd5a38207905831c47cec6202c521e5c373acc6215f3f053b89fceb975243e4ab8953aff875b7c1d6e1cb444204ed10ee3b26f6afda53e9fe5d8bcca76d46dba2167ee864a711f964efd704bd9d87da9a738ec1907370604754eea55e2514f7543cedc1c28f128fa99b2e17e0a68be7c079cc6ac7899c573dcefe78da718dcfa8290aec6e7a3fbdd6679552bb80466cf620bd8b158282cd4b26b01cb8549e60b9dc29c5d842cca829ea729ccc650c091259c3657646f61a3b8f1f2d0890dec8fcf960b044c314dacfc2eec3ef939e5a3c4badad1ee5bc1eee386bfe4cfeeb0a78bcccca8373a4075a1b2d2073babd28d6708618d3606991f6366f4634bcca1b2d458b83539a3d09ae393416b636367538b5c1f428d85dbc29eadcbfd6647ae96713fdb11ab745ac930a2903a284679c407397af011467ff0c8889b451c19bc019a344b205c221b3e6e717b4519e736e4cce543243466444a25858cd9a4a048c718a8e431303736448ae28986ccba2207116ad95966f970e13533415c216cd884718b6e43243466b8a02755b087655787b8df0e444233263261a140fa9b9ff38e1b3b76b44c3073ba10498fa686487550818086487a7439922ef6b0637109f694e134cdb6e3237ee2276ec96e5a664d25ee21e347ee683a5e72b9313efe8509a32ada43ce0a150f702ba4b95f0eab5b30a1b6fc09a8fe6068d945594556cf5d8e14bebcec5e9867ecb2cb91224f4fbb17e8e583bc20ef7293bbe489a71c4bf2c457ce47f2c463dc8fe4f12a073dca416f72d0931cf498831ea3b9ef0f1e01411795a217b8d1650f3ad0808117ff04ba5250c70f3d28cd410322355e7c14e8825cf450851763e050430d2abcf829d015f403193770c1991dce0891a606458e817c693e922ee9c1efdc4f0e351f7ed2a8f97c692465d02cb7a011d31cf953f0ecac7621405cf905722bd532ca78f41969781f76d91d16120e32d18949f8f02b9d1d1687845951ca5b6de2343c577167466dc35733e2a6c15f5a59482aa659e9f2619dc8843bfa31d2f11f009ab1eeb0279ed361d6ece2c64f2f282f34a9c3859b4de4acb49128544a8d0cee7c2858eb1076c190f32c35dc9b21aef1a0a05fb3c68342f51cee85202fe70988ab3da3dc7c9a7bc0245649e790fb3f8122d7e960d07991bf83010a293a2fd2e5f0a1f7c350e45c97c3dd95d87ce871871ec79dbb92677ea2a4b83a1c052379e68b704acd67ee2a15b72a4b2da5336671b5574d5369f309f6ccfae5c62ccc9a8f42cca22ec09e79cac156d129794a9b2574cedb04d8d3e9a811c76d69b8acfdb343df7c92f37648babefde65fadeedd38c9de6754539940bb89c5d59ef1e6a4366dda7d2e340bcc9a10600f68a6b142c5a19a72dcd813ec99da0f97d0cf739089eaf34037b739ce3fdb17e7dfed7b0871fe75d017e7f7707b80f4743a76923c939360cfbc8a63306092799418174be256089fc7be4897ce27004ee453481ac9332fe4a857337009089fabcf57256e7df0f98a06b73cf87c4d824b3ab8554aa59424cf7c0a4226b6292699cfce553c7dd669a8e743e020b300c041c9438483924787839247752c4d52f33126699b2213d413ac94a6e7b54a1ff7679b7a3e0b61881f1722357d7492d6debb5afd2c968fcf4fd33bf504a153d3cccf569c070f61881f1f3c8b4d6630266e41c8620f4e5b6e1f78f081071e744d535b95817c8c493aa19e884c204cf2c5352e53cf369aff44cf53486d3ae8545df7491d8ebd8cb509977043c9c1cee1a2374408f771120ed782ec8f935a90379cf4b1fafbfb3b546aee8b6b38a1b82f0ad2763e316b4a4929a5689835d3542fee379f7a26f1fc9ca82f1fb0077664b0e7ee746cc8dd70b907620b747f563e97ae2c59b20cfd78d987585ef62c432b2ffb90f5b267c95283f566b8492324b4f266c0d464a981e5cd200711f2b2d7f0e3651d2bc3e17e67b5a490d2c3ee9baf1d128e63cd7facd9611deb2dcfbabccf0efc57a4e92184ff3e68fa1b084f8fc1566dcd53fa0897a04ecf70098cf028780b8f71b14c64e26213b3e079729189c62666861ca94d5c628f8f24cf8ec49224fd6633fd268570421e3ea514c749d3d34ef3311f5ec074a6b31d16126ed1f94a2badf4403c39dad91d6e71990c0b0bcccc8cc5056629f978921d843dcc5c77c6e5a3ccf00f590b57b0d89ecf5060fb0ab66610a1e66e667121f7b4dc7abfd9da7b67d7426c1837a8c19ef8fae5f2e6246b0b7be094524a09319bc8656470e78361702eb3722e9aa18e4781216b9071e03f9d8ecff9d2fc28dc65568eec4ce096875d1815353c0adce28ed7611713a31d3dd0743c127679e045a43c8ee0513c50978e31075b3a5e0abba29339c0704ee478827322c717666581e2b31d230f1d9dcc1106f2e6648e30cc829dc5c9304e1b087be099e6990ceed4392eb5a1e3cf922e768580c7991eee98818b172dbc780b5d370b98309686a240a30d2ffe4257951dc81822076fa829a38517bf822e15cee0e1a50e259e90430e2f5e329de1c64619dd6fd5f0758afbed34f4891c9d305222051c44d71281f40219577cf78b9bed71e75073c6ad34c470853444c2410e4cd7121174b11ec1bd79c2496363f671a4612a0dc31a22f14187c461ce242ff7490e5d565a59a61fd9d50f7c8249f6071e3d32b55df5fcbdc49fb6dd519b4a1d1fe7804c24139471d4d17087865cb8414713474801c41735f0e09f4857d096217ec0030c2484c258c38307e256d4a1e17fa40b9671e6053b9c01070f7380e1c1fb485750983a6a2003196c3ca171e4c1b3be5283865b5b432d0dd3fc819484204b3c0cd9e1413ac4b84029064a65fe60e216097eba8a3deaf0b1092e29831dc61c1a3e264957d0105cfee0c38e3177b4c08c07210e8cd0630e3ae2b8e30b111e8c38341c92b4058c930e83e470c6838f5ea48bc91b40685162c8891cdce1c17843c3c722f848041f87a210bc0bf02c706b05782af0d1299a894fdcd2bae5a7bd2a3bb670f9ecb06e2eafe4870f173cca5c77c8e5a54c01d3f22aa82ebf420797c7e2c251cbbff083e7c1d007b1880b385a3e72718127857869c1176eada8000348cbc7303978f2510cb740b87c4ce210be54833e928f4d4e4f310d97968f6ad8c5474242422ff0e4fc164ff26c291aa3e5990bbb201377e1961729021560cab43c8761177c121212d222865b34c906256e8d8006440a238996e7323878f2dc24cf4e2c7b2ed374d1f2ac865d3ef2328b1c62d7953897975b64910f2d2fb9c8c3351ae738378a1b8e0da2efef111257b8c0082990a8c1bb7588f9018c41b00823268c7787fafe467eefbd921f1bf47d136ea5fa1ee8fec97d947b8ffc32ddafc02d9cdf5b611aa3afd697006480e802061067d688f1aecd820f2e869841126d70f1ae0d7d1f2ff73bfbbe7183e6d0f038ee178e2a9abb8afb8a4987e6aec31d86edc52dc1a0713eedd2208d73ad060fe7aa5596c6b9ce1a6734ce7770d850a2718a3c1c1c36b0689c37e116100d8df31270fea48d351ae728209591a2712e05e75368689cabc02db846e39c0ab720921b6f34ce3d8083f486158d732bdce21ae72f6c2f1cee235b80f1c58d2bbc7cb9e308ef086c430b237a48020c2fd840f28ed4d04796baf491b3607b1d29729bc6115de4da0d5e91abd268a28b5ca7c8efa58b7ca7881a83741128bc22b08bd8c0892ef226450eb4d4822ef21292bac857b0bd8a183162c4081a62dac855b0bd8cdc85ed7545e81ea522bae729d85e3d64aa6822374de49e48911321f29f354de44db855a4891c88c89f1079142244704e8408772244c63477ee28d85e1c0e0e0e0e992f1ae727d85e38ad2e42a6882e728d5b1f7411329cbac8b16caf22f7de7bef4db0bd6e0bdb8bc8d3086030f508bfb2bd46107347d34f33d6cc3144831faa50f2680d90f818438b1ec4e8b184476968fad32bf9e9828ba66fc2ad0f9a1ee84994292a70abc8e9a9c815b875e4f456bc68a26991a60d40030f2d4d684102082a3caae4861a9451470e483fbcc00bda0db752d9703a74e3b42c3ec5ddf8796c7b65c04e51c1729a85e26254523c397a8a45662003310965b689548d2c6a736e2960647cf5203087a247d9849093f2e01f3ceae0dfcfe7d3d877212ce92379e4ead827b73eb8a15dea744b21ebd96164c424a9ed190af6dc5ea8299d141038150e9965e573b8d5075c763de8be55079daa1bd27d2b213e389d849d71f195d36e52b7f13629326292ed5812199852dc5ea98db3763e71b5ee0b62567c969aef2e94ae10ce337b96ddb22c7f76dfebc458399cc4c808819b5e16b510b89c67ac85c0452f931c2394d466899c1038e801c95ab7d7941f708a8b16346597deee8b7d6fed85a03e2986856deaa9ce06a39729deb214b712c2e91ca7de3cbba92820be371c6c1b14114b664a81d83a71b3ee0b62ddd00425e21093701075ec11872d85ac515d0af5542ac595fbb4a6376248504c89592c02ec918f2c48e07e228800e5a41e33f770d45cc3a31cb87031c5171f3b85caa7ecb1b752ee979323d98546c5984a454aa34549146492f2047ad49dd0a3b8cf76bcb4314adac1c95f32b89365340a318bfe00f723e2d23412d198857a905b1c9bf9fcd31c8562166e0d4957767a14f8a70950094fb8859daa61a1b9995513fd201aa98c8b5f98879e8ae88559343ec12cfa0a5c3e457196d3aea4627c9ab0941c89641a9faa0d2ef4b2d717e07e7695bd6a5da197c5c8cf1ea9e0967c761e7a65b5d6fa1a3d285d144a9e2ce36f476529ce893c41669fdb0b75277c94cde1b6a1ce3b704012d38e49b96ddb9df0b7ed41ad7119f7d9cebe715f764c7392695c5067280ca34cc4775198c547c0fda0920bd6debb5a7d300d1aacc88aac186516914964491e30db2b469132e587c52cc5289119e55ee0a2105f17a6dc78c9c1a9629ef8c9d188d68112e262c3461dd595c02cbe01f854ace527a895c67440e9d2ce4c727b69f0c675d3fd34e112aee17450729944651a07817b9cf336817b9c6edbaccd710e019be374410d37adcb99c0cd710e819be374dd87bac4525828e596b837dcca86bb5b67258f945128638a838cfea9530ec29e54977d099bcbceba95eb7e2b20e9d2244bd24e45b5c0257cfa495d36d07573094fb9129847c20ca88459346fadd534ed4e606b5dcef62adaeb37ed55636dc71ed4b4b34de33edb344b655c50a7382b5aa326c7592e63ea83768d836d6fbbbe972ba9c1c33925039149e4e6a78c4d29f6b9d0a9574ee3626718c7db097cec550f37acde497ccd0eb7d4e72b073b957152a6525dce09f1a93b894f05358afba26dfb592d8a0b6a8b4576853cc96457cea8c928afc4358d7a86ea729ec046dd096c5437e4ccb5416db14b8ebe063506246f26bb201c8245b3884b5191bc646a15b322970ae47e5aec9cc08e39f1b07758f3c625f37c145c12ed6815e47c62999b865bc8f084d2fdb46614954775a666a516853ae5e2519c0c133b0946da478ede5a6c5a7974056b6bedb18d5a6e4649279df42dcc9e9d15565f10b6ddacb2d6da4519678cd1725868d74ab133bdfd87fd629c8a9ebe0ad6a998c5d8a57c26a5d5c981d242ed3ead69773ba8817810f8d96f8a21a2c91a1411775adb7df609a43950e4277d50479925c09ef8263950e8e5699703459eca2e47d21d6645ba823df15c4f8e6bc9dd278bfdf0c55a0c85ea80987fd9621856312ba421d29a35da96811981591ae31952cafa381fa7ac73524b2b9d52d2bb400942aee12fb4f02868e1928aa4f947200f2b51d2fca8e48b1bff2981d825bda45003923e9b5c278d9045bbb2a0f987551133d861c9091ed8588200681031c3d010495bd4f0382ad14cc9a0f81c26e505aacb96250d694b5315242a989090c111653479ac841d36688193153828a1f5b71a63e2e034445a13a6515370e9e0fceefcec3e495795c3421bea300b322bf58f524ae953769eca7f94d20e8becf92af4c218bbafdee767cec358eb273cbd852e3eed3e6a2fa4b4b39de4913c330666b6a30850173b0cf1d4c70e38ec81420ed6d86243206dc4814712602816a954c791cc19d692f9c24e6c9026db256386d346312543d892b7cd8f5554cc62e61c28b485e6c3fe4cd0dce93144bb892859c40ef35548832c355fe77049779fb864be688328b1765457d3543adf8e1f1894d83ba2326d42cb45dc1d668909a23f9f1d2d76f0f16290194220082029b85b432441f268115cda104910a7234198240f8a33e2427b674324417ee86f753447c62674334a161a68b05d7871e399407dc1c3cdcb89a66537f58ceb84afc8e433c9b110577bc0bd10b092a7cecd046a991563cfcd09843db4eba693296f24d19dcca29b13be814d37132207cdc84e7207ae6347a62b79e2b49482d07585d3f510a25c96d2b9bd2a37358e4ce40e77568e4922b7a6c58e69716d3c8df559e56cc70da33fb666cd9a344ba0ba18e29207c5941d8c49e223932522fb3e7966660bcc4dca953c701ed5530a3cf266c7310f7772f7310fd776dc5d077526a1c0c7c78e79b8936a906b61b695b8d492994ce602ca7132114acd8d9f504ec94c74236426f39f7c1539398e496094f24c74e325bc266b1b5956a3b891f9cb312172cd9f53871b615635b8c1ee8bc14b431d6e3c5b894bdb0b1eca2f074a9410c26af305358c49e0e70c93560ccba1e620b91a2b56ab18d36eaf89b571e32daa56315039507a392f67aa5631328a1a229346f7b3cccc913e4a19294b39354a29864daac9a15a31abdd18e31290e428872ed56ab5194a4b6dda6c8d08c95a64c24ce621a6c9a1fbed345f1899d486a716e270e34af2300eb293678aa258193b91c96c78f6d95eb2c3cadcf82c251b1edb7cb45c98641e4e18a4a6c1c82446178c3c1fefc0d1c5431187e8a2e7fb4817ed76622bfee31e18ee9471e3a6c16a232593e5f2d4fc8cb5a6cc3a3c1084d7f90eb752cf697810ae6a0597d0ffb871d3806334fc0bba5e025c921d3e13614cf35ff0097449f92c6cc52e4a81687450a5b177d09770c2a981c6a0708d3d9b5907618ff6a9c56ce362db7011b2b2eea39db1206e1d843d1916337e8a636d26fc8c0959d82b67a10659d8852c95d64195b941e9a0ad745d1d79c6986b4c037483c2757d566584d2865a2e368ac3812cfa0eaab47c84916d6c7771ba042d6fe865413ea18abec0bfbb1811111915c9c048d670bf3834a405bbdce22f6a18c7891c4a1ce41ab956ae919f6067147991944d4e32c6cc5826312ee338a1b499d4b271a1852eb8b21c843c566221461870a761cb1979c638234f2965ed96b0d462c15b98888558888978888d60222538ee17d3a451b3f4c45281e5a3e407a80414a2489942c5a8214bf2481bb07456ecd9a7a5272c4dcc924c312ad57a16129f9f26253c4121ca94c84a4c672253f4d2df3b6e49a571bf981493b03cc1c13576c630b2cdb937e51a327966668e0c63646666666666189999e321cb2e879e5b72b0734ce8d8cce715f33f2b93ea3ba532281c101a3e1e4a30f2488691606416f2481e61188649561f4dea68d2c45aca74cdbd2be8e3d351242042421308211964e84306e8590e7a280e7a1e8ab39c27cd58b180a4146e699075eff3235d404fb815855b16b2e6210bb2e63f164cd0ba76edda5d79a1291c404d6aadb549134d53a9747476761a22e90f090acc23514160980c809ad45a6b9326494f98471e6269dcef2d310cca3afeed0035a9b5d6264daebdf45949d7853cf310c2ffc48863f3b1d05768b704f6957459b69e9d46645914d7320b67902e5812a6848dc1c8a0389759976652e660f12f704b62984b1e4591c244df93a762d4f21ef8c393b71244df8648811035b77c1492c722eb078996f7893cb43ca2e5a91f971fcf0d910041039752a9ee47f2fca8fa83493162c7a04cec3bd86963e72d85d928d4b1d8fe0ef6b2a867906544d55b16f3c8df713f56cbc803ec91076276ba1f4c7ac2adef52a2441ee012582bfd2b562ba53f467f8c56daa9ba255297f2895990082526123d807e56e0920bd2553d48e192f5e37e4b4d392b70a9e5d0fd1e79907144a227a65ab913a49c929e5abb66061963d31959d680fba95aee704bfedcaa3a2cb8845b5e75253377dffb30ae64c6dc7df358f751698cb10331abf9fb57d20521a42b897a4a86fb41322d5fa1604f3e4d312c94b9cf8a4fdbc7a3c684bca4317a2a728a444c4c474e494f4a691afb07977cfec33af26986498d314b6cde72b0536aba06a1b82bb2ebe4cd84783e097cce874a5606d8a7eb5e6e5e9d33266f6373139f42bd4a767b5476fb0cbbc55e3ba654587c2a7236bf91f155b0db63f256ca5769c3c1deb4a72e53499aaf3da5a6b1b941d17a32641bad2381d65857a51e7b7d6a3ec5cd86db09594f2b5ad35a9f5941d2d953cfbacf721f5c6a6b91b43d10bf320ef61505ac59334823e94f4a930049dbae0a768b3941d2d823f76917abaf879b13db69d00a9296368c7131b251eea74d91aebb922e2a9247bad83bfdf7f3f9fc63ad7e57f7d5b268d7fdb466e9904ed2889971905d891de96815b3e0c4d198b5826202a9a355cc6ab85d99b0870f216c41761aece13b810dbb10b2a60bb790214cf3e70697c0b669b8850c63da8eac1e4aa72e3968d020c4d7a1225d3a50ea48a60e1a8a59228c96dd771b521c2773e8b49098241e320e4f099978ce22d41f4da4f162e68f2d1e0052a665b3173f255351ad20c488c6a490c804f6fc99eff64dd061961c6998a10b043f7089e34c1a39709186179f822e13905a5086182e4a7041e4c54fa632645062494a8de29ec039a594724a96f5f4121b8325510925a694d4288e7a3964905bb29eb95ab929426a9ae7b4d3d24999b94ab9aa424cc25ca765d66bda2c83524aa9318b27779079324785593c35bb31772fc37ed8997d94302b624a7c7c7ca44b633e9a99790d123844609a4a07882e9456ab1ce802b2d0c86a4767f51d6e7d756ead8468da83083334e0c28f166448ca220b3b90cec4e1711164eac0c8e8613b2b3fcdd771b244ea7c205e4957aa03923ccc74541fb2c0ec4b4803c8b522a2590a33cd7c44668d663e12db3511a561a834ebf5f4c11ee79c443422180000002315002028141008c562e1709c27e33e14000f95ae4a54441349e4280952c618430822c810022200220033a469135af114295b88556bd81268bb471adcade0120569354dbc2635cca34e888f7ed41ab6ccfec68a27ab6c587060e327507ac778ffd03b015a9d6cb24f4c5d07cb54d5470c21cfc160badf32ca1af298f1c8bbb890566c086106c7cd31ab1494a97d9f0055e89991f259b06bf9df4bd55ffe0c5c8ef12310a66f0fec58bb6a22753f71e16adca81146f78dbb2218a34641a0960384c5a233874417990ef75782936c017b87daa8f79584f51dee5becc5553bc09f2bbb32a1fd329d8f85dd013eb12ac2cb5163b5edf381a4b909360cd04ab2e9c0fe500b7dbe3d3163bacdfed260989cc55ffe296fe84f7a7804341e42ec636a805e0f1cc776f23a79c9bb623854fa50c1a3167cf59cc794eb3d27295f02e529480a28f22a30c6df9540221e34bc3984c0f8ea607cf0717fb64fc56a06d7870298870266ceb70c6029efc145a4920f5f26761990714ae7775af7efa928235054f76fdf5aa3907964de06cd0f88bd9eed23d0611bb17cd7491926232517746925110a5cebce715aa0b0992704d323e2bda22efaa5a8b1a761b04cbcd5b0e0b8d293eef0785de63dd9747fce32c7d3c59211d14a7de9b2268cb7b0b3463f446b3d480ce9614aef278eb0ccc1e79d90646e2261e26a7dcffdb030fbce726219bb34bf7e219ce9755a715e71069b210bdddc3116f7251ef0af9076179b8e5c46d2c72d8f8b35dfa52409a6524f512b6de0039d6f10d2b920756ce5acc6a56ba2b98a14b21b35c5d6d0f514da37f8c332d537bb59c1bfb8c0050580b731d78976ec8932faa7481e083dcacc274ef2100439b72834fd5db1d0340f0ed11395641f18cea9ecf1ef2a25cb3ffdb0915aed34e91d2911a987392c541a14fe5884ce3e317e5b03bc6cc6e3faf4b571c5d97b2761160deba621a042684e5d722aa275a05d99b1a7725da8341ea8474b955473e6bcc00999cbf5715204a47e0d1da6293ca7562c1691d4e07c1f4821ff159213997af756ef294cfd595e5c0db1f353bb5f55da91cd140dde3c9a081730350c7ccb4ed58a96490a5539f1746bef28c3c846e9a18e042bd3e52693a71f243bea6025d4370eec45a55b5930523154ce247899509811a914f2c15fe91e6e6349a4efef507468e7e025f380412817779e68985c6c280601fd69a156d2576715c0e5339bf0e1a43840348e770b026f859b410ddda892273ba5cda9358ba0c28384260efea716b308b43f649ef4cf802a8503db92a4220ecdfee47ba8fc34bed713c9bc764632a011bb3db53b3d990690db12cefdef0470a0a0361b37fe3c44dc569988d867226189ce4e5ac585011f598a7b2bed7aaa52857f37df58429a7a7ccfb81bfc1fe481a55f9482e6937f3124578ee2975e60346280f27b66a8085291acebce163f1e67f02d2e685859ff5b87ff41b943831e27c1d9a6bb96ca9b05c3b96bd1917649ca56c746430377065a84a663aaebe08bb664c0650647f1c5ef6725a90c9b246cebe01fb34619f719d65f854e3c07fdd17cd0a4ca28f8b5112643e0092d74c09bcbbef633733266310307617c9a02fc0486313534803a122c32b68d892b3eb3e440f32c8729cb263c60622ee91c6f3fa3e924cb014b4a5a96e50d47457235ef4c6b56978b326a55147caa169f134cd5d945db198368cb787b8fc0ccab00bb7790d9f8e2d366de030405d8d0b1e944ee0c5ab030fa10c8ad3b919e36139db1a13bb829f62051d72a890c47ebcc2ec846e4dd86eeaa0695cd358212d1eda0355955a5a997b1db81a10a7a506f9d30b534678d711abfc29c11528b89a5916d1c86927e81534db937630c69363614b66ed8890986c12523fbf6bcfa21ab6262a1bac540700025babafd113529b594671f23f2f21ecd091056b02e96fb256d3be6bacce5af63b5f0403a53fd2cae7984d6ed02813291059bcf31bd2bccde07485ea20c03b5003a1dcacfc31ce15c2bf3cf84bd0639304e6f25abe6d651fd0452d89c02ed90ad21a4b13b17e73a40c6b7a4e4034e78b5f548c3aa69d2a5d5c96d2a137b8349bea99ddd00a979e8ba7a8866c81beea9f7b619bf5ba689735fd88b601d988a44aab12ac61359e4a7bed117ac266c34e5688e6957ca816cc971610cbfbab236d7680ee9f403db292ff4491d273b869bd816b0abe92f3670b166a85f51c125a33911e4e526029c39ed4b54bad3a1c29ce3ae0514f8271d44c9452863b883bd57ee7fc556503cf70ae11769525f394e3141eeec15e83a4daabb9a248df8ff130e2df5034bd485c7c6e2d9f5e078c7c75d0b3a267c80f14b768b9ccd31a9a3fb72b7012bdc7bbd000fb6029a353611000a537e6fa0ee52b520b260a7e18e72278c0c22a59edc6fbf4eafef0794b228df36763044b362af67efeee5ea832ab844e82b4d9188957e71a0601d93f42ce41e765a6cb8e9621569e99c5754f6ef505e4f52cad6c84ff01dd56148c41941e5f988fc54a54890c4e0cc800e3d5a90e02269fe8074ad5dd41af1fe556ac5da189bef28b7f9c98022ec922209f1e19c1e16c5e8672db4a5f9ffa328db45af29eda158b3f82eb4eea2c347b97ba1cd44a28edd6a4f46f3485a32048ef9a64684c885f7a4c3549fb99854c95ce40c01399f93fc8a16a602b242da2c25c45dc6eed87ec54ac1a1203d3083d599d1fc1e81cfb792fe58579bcffeb88a3ae6faea34c46786bd952a51286b71ca0bca11cc127bd03a8d64a092f29a13812624b1930770acabf69a8945644cc54b2fef560bb9064740e23601737c427ca6d933a8a24f2ecd0e526a7cf8f3eb9c5f14b6f1d0a1143bc62a077ec6aeb5f07b8b64671e1ee1848d00db7b25bb3c234b2dff48c22985aeac0684f0e66922fc84d40f8d726c39033534839c4bd4c48191f16d361b47fc70b99e39132506c4bb15e6574e71a49812c14b75f0c67a0cfd3536811dda861ef87e8400665349684f6ba5379fb26f108764329a90420441611b4de1672d0593c85c4f2bbec9467c272ca3cf696e0d01024077ed4e377c0a27ac0a0e0b2eb92b01fec9e14a71184b179fda3768adcf3607bf5e96fe5fcab66ead9006058e27771f481968a706664057973b4e4ec364205f9fc051a245c5028d9a901d023c22376c7db25a45f758c13c64b222af6988f65d0590f9310a194445b6d7c0a061b44669e268ad3261562e9ca21edd6d9cfdf9ca347da85b4b66cdd9a1cbd035d43387491876ba2e4ebcfae25541c409fac500229d984e0fb468a638c205ecde8f91629f4846edef4c8037a2595c0a3e5c2f6d03fd2de8516892b84c3fceba6ce504ee1ba2ae4af4c0b533ef0ab90a8077e9e75b7dd5ee13370baccc8176f6c80e1546ab492021dd31daeabc4a39a310efb70f590fa1faca8f872f2d2d328293f50aa0d68bd39e8c88fbd01c06d43cad58f470792cd423e33b4cd99ff6271f032b4fe6d1aa6515aca74ee8fe1ef7d5c975ec7772caf0a61644fc75ec15620c337afbc08e6b400a27f6943c88d18196814649d21181bb65377174fbe2e1bdedd72eb4e6ca80397b880d084ea12ea695b92992ef4e6b500ee1927c31e369f26d8165b8421bd1a865cf1e4f10ef8d25be786ab82f7fa349342000a5f2f5a76cdd020dd3760f4b86fd2266de15494ce66089985dc1a6071d534c8e8cfb7faffd9721b57db4a3469ce7f37405f5221c2755860f374d76d50749aa2ecd8e44786c940b378da78b37f272d1761261420f36c0c39db1b7d72c216c5a58c15278690154621961c0a5a2460d379dd8e57458856967b4b6d7c5a20ae4deffe6841475c1d77d3c4a1b268d8ded364ac8591432487a58af200d16c80bef249c847eb59a6aea303e820b5d9a7013239963314ecd35116ce607f113ff73c25572334d6bf8a01311ce562237dedc74771ef4f6a453e5c0ee738d26517ce1ef686870d9c9625eaf623f3f507935a244d444a0a82538323ea81cf720f200e7d675f0f80e7cb966e8318e212c1834cb84b9cba8cb085923fbd01590c76a03f62e84f4f47453627a2df5d7f6d7387b72cdc449dfe82acce056a206ddd3085f2f38cbf27e187cf4aba81482b945734395007028df8edec8fe7036b1f3fe620a9d13d6b00c93e47097a7f552399f5794b7cf9c2f8424beeb5541945c1278687cf5ada9549c1aebcc1a76f2c283f0bd58670484874c3b1fee31c693f71d7707666aaacaf34287a05f8fd55b026eab5905ef7822b31c5267e99674deebea71030b01e73c313b002fd8b39a3b846dc6c3830393fa681e7375692729c4321cf8e76a882d61e1c0c3cd7433e6c4a12d015ca12b65ced9bb943a2f6b740097a66c0dec518cb7f025f866d1defee01e12e6964b5dd91c702223bf1d9a93a3493c4fc87dca36a56b5d7a73dc9f5d00656cc5e85b6068d7d64bb1218bf70ccd7f1347fb96031e7cd6a914fad2369b4cc1dd60a09712f951835d16b1bf0182dbba431f08dea658722e704dc39885e354610b952744bbd4db0fe4de952cb099da34acc006e815932e7f8253ec79b6331fbdffcc2986d2694f2d4ae161d7abea67e10e002d1838501b8f4a3cf7b3b1ef4e259aa266a87b331c13d6c2abf6b31e4e56d594531b555da07910e06de2c34e568905b25a48c20ffc15cb600589c5d622a854daa311e13ca721bb6a60128b2898248a91c2fc4a2cc252954da943a0584cefc42a58642123c6b6838cabd34ec402fde366f460d9ba2af04ac06e612a332d552fab66d3ae0c706038cf76a69ed3c7a4cf2d3a7798de377d996a85e25d658aff97897cb5348e98e9dc4f1e6641367d2ef0e47b70b6b160c4a73c75f698e1ae11f0a2fc29913f0e4ab3e074550c7b656d32ee58650b3ae2cc2a15e4c97f691d80a5ed68559eb3dc7885c83c70c8024c14eb9121916a995fc9608b19b0aacbaf1fbd68feab03db52a2f64325d521b5dd02964228222e30094e4e6aa7c836e60e3b93de8f4d01f82282c9a0f805d942fb482b0095800378619bfec09707d0db964508adf3c2d8f05842b8760d201814d29c3d96f8eb85db97ba222194984a487b84700d2c21ff9d5d6589296422dedc2713f141c0ffeb45147c7f709a8368303cde44a5b21f1fa8cdc1a476e05ed816103834d08b9c83d56a509493b2713db9c7fb1289c8efad883d935ef6884b7e352374810e99eb5c8e16c42691f785faa5379a1a49d031f3f59b288a9fae59c74348d6611939581b9de01e48d170453b893372fff2d9b485e0e4b389fab237269dd0cd9a73f95feaf20ed13facbbf639c462ae95cd059b954ae0c830679e5203e4085da189323e6695f79f92cf1df68e225897c68950963d37d437735f21ee79c9e68a1878a2a79eda141535ef30eb0f031332f7d54e036018b46e96c0e49433757f8811ada372a2c7d89f35cfc671d0c60e73bb27c780deb70225a5658cb0de7ef405edb5a09db299b421fe5544de905920a0efbd9721874c5bf513e3071a5cbffaa90d6467095f01172ede6fb8121ffaf2da2f20ebc5228cd41898456af63395b3acc2d7e253ced8184c00a7410643a575a8da5e463b6b2f40ae78004cda80a74cd83de9190aa98a1e73f13b8f276f2286ea4ca34e746a92b4d9fc573b807a382c0f2fc24dc1637d885717c5233e7a20dc759dca4f1e4cfcb3a79379b89502abfe15adb57581b62b80073263bdf0f0cd72eaba6769ea0fb38446e659ad43e16f2329d0460456cc306feac07105dd345d5eb952dbac6e81b732f364b2a1f27a0815c53ece2f2c85a6804718538b0a4c0f0571d3e1af88231cc33bb4c6261cc9ee6d3e78312d1990618d1659b066e4611d08e1a3371667279cce69135f6d83d3ba22a3f2517cc9b5dc86777907ead65a6c2998bac080dcb7025bd9123a19865ce27229a983f0b7bab0d616cec0ce6c1420fdfed0391477eaa236e8bff288e6322b1149dda80a981c758455a2944f49677ee22e005e2a05a9cae732e3b98505b64aed76581d236bc91c51d8493799d7767f5055764b85ddc8ae5c4a35f35c0a5344acc3e1f80a34f690548f9f21b8ff51edf335d092c10bd79d8b6a9aaaad3e2dac249f69471624750bb1467d3263667afb46b07433b33a38538bc5f74adf7153358346f64215b308e01ef1d318f6c8e9e407705cf809e8564a88f18c4042093144c5beff4041d5c70fd9a4c2b82611afaa0c5424656cfb23b28f54fdb2597e7ec9cd05ef90ae16cad7394f2c09dd2f6459ec7df1e7955504f52b1b39efb782d6734644cc423e09057da59b52454dcf6a311afc1a6af9b8589e460c95ac01caaad99eab43b827cb39cb258b69fc06b8a091855d0401079da1340b620fd9615009794f2bc76cb03fcb060f8727cd76bd5a9583b134f8ae1614dc1813ea1188d0adf62451c049555e132ab50953feff56f8cf2e82885d919344570121df377504eea2df6cf9de5903c4cce8bc183425101a25b33b71e78fbb87399e4d127376f359395eb2c3b3c8c66b9943db5355137986cfe90feae3933cb83d4c197e572a5c7d8935e71cdc5cb4c2d742ffceeea0b880e41985428fee4052a9f827b592d9e58229bf3a4018e0ca52401f96cbfac1022a18ee0a583bd806b4c443b4f20a2843a83a892adaa4b30043030ae7d481e6a0b3af03897d81c9d55c7b32eda8b82b30f095939d0ce3a8644e9a03d91c8cc0d145e30449bb9d4a0537f7dd160cb9d97ff6f83b5a80c1b98306ec16e3d55ad3ed8d82432ad4d271fdaaad9b40ebdb8659d638379f8f56c587833489bd7e654db9239c72fcaedd8e65203d6777eb5d2d627c7c27dd89c6529cc714a26a389a18b893f0a163c51eb6860173946615295e89256973a5690c5ca0e17692399d62351e7a72c018d949464a54d052670150523aaf9308383485a1f728fd4b88c5599d843a05f58b3a0914f513d46f0f9925cd2ef674d21dce0a484b557a0e91f8ae713dace75958313b06a351a88f4e5ad768d81a862a0dd049d99ababa484b3030e49c74c76e915ea49ca45927a54044a4e260721299f9a9db56bf432cdc7152bf1829f7c8b5ac8c939a36c54999eb556323007dd373964e32b2bd44f1dd9e55b2dae89a5824d6b3ac283db52bc056eb54662a963c91a0a98427674019edf4d056d8fae5597df66cf573c843441a9056210a318d2a404f74cf43440a7baa3ea2e02b2f0dd62de6f015413f9d58b0790d813534b77f9d7d0add78def067a4e3d8f890d70b069d3adbc7e9b36f855f226b46c22e0bfe0249a571a5127631db2768822da25c47ce178504398a0ee449b6d117c676fb3b6bd39e1db20046761c030a264d7f65b5071c347ad63ea0a6c128a6afa2ce9572e24770f9e1747ff3161bae00b1e12a4279868956ffc7ac7dbf5984ba4f64037605b6cd514dc40549e97cd84d4d8ff432445a290d4c424192236b8982d937dc0966dc4c7ff07ea97c78d15c80b28a2092cef559762851d661ba9e275cc4311a327728a6962f00cb099db04c8f7dda688098c48909a34e80b862ca5a1ebb240f633cf5c644d6d811f88febc9acd2ff80e97ef59d8267473526a3d8ed0c293445112aef0e5af7210b5ea213abd0acd37085d84f1772b9fda1336bd5386f04aede3949a883747a88acd2b343b9b26bef9cb6fc47516176269dfd6bdd3294b1c82f4bc54ced186794bc26f90c3790f67ca6d80d0b3584316a92c8a1d64f0a58fcd796eee5159db5565657a1c41ea8ce27bb3c15164aa87f77a4abf00388152bae35808f2e3f57eb1651b95fa82d731d1365434e32bbe3d32cc00331036dca60e957bc63f7c9932c8c0984c32eb07878ae1ab7e13101e0ca9de388670f3545b2481ded9af874e2e3b37b7b587844baab5f04044c5cc86d018810ffa6da818b66baca76177a016c7219ac2ec90fca2dc9e0babf254be3556d6d0b019cd0f8f2c564e26ba23caebee2c620e6e256a53f8a7f1733708a5206d696b7e9fb2e1c68781c75c39857f334f4d6145448e5ec8f3166ca9db3b218fd8ca0e2926f3e23a2e281763f7a408f2b628fa51a8548b048545874c7ae5813282ed680b206f29586b05bef54d912a12b8de8f4ca89226ae9150e682e22ea1561995f0021a437590e516fde12d9f097eca10c63c53fe686954f660f346df009c076e9d653ab6b21b084b4c10e7f6bb845dd04ab353baa073bf9cf6147d9158073b18c421873d8b1478ea943b251d0ef9f5670c04ff5a1c7a7524afefa971629af0dec679eb9f17ca63deabb9fd6bdd9018c5bb4fda0705d4d220a7985f8295a5be67a638719c5e17ac6c5210b2e27649d881ae4855a89ce15015aa750d935c6fc267f82b76a89e627fbed40973668bbdd5b16ffa71621ed3f3e10019c5d3e36f9f5a225e6e206682368dbcd7ef76173851afa4d4461c8724b1dc42cb6e71aff104c8f27b3e1aa844d08867bba05d8b428e739697bf37daeb6fe5b2f9cdc3cac8923f44602d5baca5a531e00aab625939c31dc274be90cfcba1ec69640187ed78b4aaaf8616a38443a30ec31e67ab06323dd9f25da2e60ffb0bb7a40417c4fba9e1ebcd6fb045d1ce82851f654da58c4dacee5b933ea36817efc29259a0810d94f7f49b351c7f990ca34b8a755a3164aa43dad4aa5ec88114c6b0042a7d915a11f6b898acafc4a913eb735e43ba88df62bbbe006af86a3e982717a8a1e070f33703579a0b9c4ac88fad28975c7f60637a0f5d3676b0697e62c4283a30d8d64604554070128d04f98500497a8265e0bcf2af4a2ba7045da50bf79e2141095fa79a496ddbdd30ee6137b5d13bd95a5e252431571f5bd94b69b0f93365f3722410043eab806c243286af501311d00961ea1bd76255be069ca39808c0dbb988f530f652cb9890a578d06101ce47d499d1dfdeb7d71194b8319fb408fc15354f41b9e1e8d12500885eddccef77b3efb52007d5957f45d07dad2c799f8d911ba351b677ca9f29b80611c57594e3e22044e10040281b9ef95643f347378a7cc954042962207cd7dc9f13078f28902b82e249e0fc342c818f93b6aa234f2419a729da3100510fa15619ff91b2de19b44098e04568c154841d2843eac307fce19c871a657d4835d4d08f204193cd06a4a9e1b5c18e88257249ca894551a8942669f603b3c762dfb79544af71739e552d958d9906634d3688088cb9180676b65b515374e6a97f6eaaab40858364525aa1340fb063946ed58f3d1b841e322b2ec90dc2c0f34761ca4aca971b8cca99c510c87115075ec9cf50aefe86b818768eee74de6175db915fd4cdaaa1b334623b37b1f0d4c1146edc452172398f6583e81d2cbc154ab9f0e9134f86222d615b3a405a8ea2079d76588534bc28c5419e2872743ccee90b07c5dd43d9634c6ba31d2a62829e2b68fdd53841e1d8cb7aa8b2c23b017ea59a76b8f8bdea56e02e63b131c1de933a961386f1697ca5f159562c82f5f08f3dabc92aa6335e5e5b531a10b17c26f994fc6e48511fb93c94271f8c0df4624f8f80cb10da7a9faaf7b20139143a4d9cc8870c36866e00964e821d4d4ae6e41a107227c0f9cec2c4c42cff0ec403906f06a4c2d2496feb0c5b0722dcb17ad241906c543cc29a13d4ca0537eb6bf2b749b1286be36b9ceb5f1609707ff9a920811988bc36188dbaf529156e1d19aa42c6d233649bc80e4f6975fb1bf2c4c6def52b2a2d9d1f7f225fd40e923594575b70cc0ab8390c0b64eb051c4381ea193656fdea3cac5bc7863d751771ca670f79c0b7d0350b7399daf97208a51d748f8db3c8767cc29b52d6bf2ef5e5ac6ce0d70635b93ddbd47b2e2f19a5417391cdde8ba65048aa4d7b6b84371cc6f9bd4cf14d21223f46c316720af10735ed6dfd315563a023e4f7254484d0e2451073066b82e7a3779164e2e7fe0931405b454a046a1ef471c74af15ea51609b47deca3946f6ecf905bce44ed599339e60d66229ea9288d617cde153e810146c43edc66f3287c92774fcfccc09ee0d32385c59ca9227942a2d84cc1feaaeabaf9232c8627d51510cc6e2ccb7e7e560ad2729007d11eeeff9eb202182aeed7a8ef9b077d49b4309c861d1fae85f03f3c969b78c8d083c4d8a0c300c19c876a6d66751bb649a8350d841d9271220ada1c25a613c19141b276e89aa386c17ae8f8cb8ed8df48e0f1e48457392ad9ba959fcd766b3e02123b1e5a9dbaf514470070a95e989be32ea06e506d863108a2256b884ce465b882698807e69935eff7a70adffaae6f44d52e82d3ff217a6c0040d06adaf528a050c29595baac4b307268405f79b9008f43413d6033b7e686ec764f90653f7ad0026b11974e8fa56a412c1211fff1a3bfd3f7bbb3e73fab926b84238ad1d0ee0a002eaf03706f806064faec633e2feb8155a9fa153b72f472fa89d3e4def938eb0c3894e155970ed39ff343c62166054994ff7470ec77ed5ebbc6e9dee471f0d38c43a02c93a7292cf3d67ce1b45d19a44f3be3847bbc2810e0e9e6e190e513578987638448e2dfd88ec324a1bd744f253743237e19c65729af2d8dfd397ecad3c08b2e958406ded08b69509b49a3f18e719fc1321e7cf0ddfadea00130dff98fadd31da7d5e654fff515e6b5875a929f7b59690fc01feb20d0ecacecfeb64d7b43d52621d352e494f171f498e1bb319892ea0d1d6dc31214846bbdd745c48d01744354e4658a2b11e5268a3fac4dfb29099194842f5b13be0b0af1b5434e8fae8c21b38fcc243b30f600dab6b8af8d491368945157e4d46f7a6ab1445eced4f61a52944f86b793351aa9f46d32e3c855f082e24eef02cf235024ab055f0f06b72e638153082f2e0cb5106fa2b7fb176fbfe8c3c17bbf1a4483655365ace8a13249d44003e9d85d7b23157e5bae9bf2d2dc08fe9b13a368fab37458539450a37328843808eef821cf76678da5d17afd970960cf4b7be801cb5091724e96e7a363364812eb9fc37e54a5fa35e636b6a222051ebec37f25afc744e484daba7a60b2b665e4a7594a9536b713f64badc5f4c560681127387c4347f6e937748b67e3086843a5ec067968fad2572097d662dc20253010e7fe5f6b162207d6f2e5fc898418ade876b81107ee670bbee94349d764519974c08962d5d567fccc7076ff2b0f3385dd2f897232def8bae3cff996f1079a1bbbb8100b2d8d6cdb4ae06e1f47d8341360c6cdf52aabbb1705be1e2c96ea8dbba575123642a4a93e5626a84b0444e6f027c13f03d23a5b3e34f669cda5b8da542d8db6ae519ce4afe5c848cffad7adad2c7f7ecaf0697bdc29fa4fc8085783ab2556bd6bac8391ebab8120a17392c8c8bd3f4feb60d1a5d559328e510e2f55ed782537e8d54cc31b78d179afe44d442df00e85718baefd7ee3baf5d344dc27da9b2a5de2de8d17cd2e74409559c8b6b393f2f8d6d74dc72b433d3aeb47a4ab3e72891a5e26e77f646e84f736c49133406c0e5426e9abb003a8bbab6cfe6b9ec71694332aa85f789ad91668bb44039813c177b09595551b009e0b952a67860e2c63945b40f4d9431118dc94042a64eb171db94c1c18a81768554197cf377b6b41f5e203e7fb00bce3b3bc901c5a9c481c9df655269fafb4ae40af14c00052ccdc960a7dd82d8395da143008de0ba8dc042465455ff884b7aa82d13b4e5205e54e7d95c948f481db4674a8d0d3938e4ee90a0e4863a480ba2de40800053f38992c9788bc246dc682d23a1a7aba0d0a930931acaaeb21200aba3254a920f637758c0b52f45f3cdf8e07e6639c1909b8c0f807df6bc615801d18515c898771da5225d4e709807a5ac97c05dd98d102982a454b7b61bc1d2d4094b4f14f86584d768c77af50318ad506e0c75c2f83cb7ca8214300b0f5d5af1faa8dc6dd6da64695346d7421191bec9709cd98d6031417a3a45381fa442cddd0a0ba1d1d81bb20fc42a8021c743bb7eaba359987a2991b1790b26ad74ea065d81db443e4641094c8e51791f89fd52c2c673d47d730bea73f538c3750feededdf8ea14e1aea1466f32d79bfe08b77bc19e9411fd22e12a5a70dfa88de455e28b52408a61127fbcf10994b40294bdc8b8ffbd7d697486372f6d2f81af38066cdb95b6c35a2f00c4465be1437306624c04b3febbf0112fc52128f3926adc6e180d6adc6a975844ab9d1e9f17df92f79aa7fce6e9848a014524976816dd3107cb63b29457a939bc9be6c802c7e89ca411865a793815cafa78a36d22346ced541fa746ce0fc3b5cfff9b326f2d1cdfb02f921ab3eebfd51dc70678e7599adeda73c2beebf652c2de03ac14426ff593aa70588a638f8c88817146203ba23d1f48d80c997066eb10d78d5f789c316a32484dc27a709e1157887ee8612e630e0545f10181b5e9443567afbc46117399969f34d6c73c892b5793f81972d19d9dd2e89422cf2013d150585458611ad9be26624a6285020e772718168984d1739be8721c63ba817bffcce7c0e40fb49e5b9908405f445b98720918d4dcb97d98ea9c7ec704fbebdfe59c58902bea121d878f1709705ae884f0259e513ff9494d7da516ab77073956dc9e50f11b74a25c0eea7d389356a37c7740a78b4506b900e857c391bc557f7e991d03f7b03ded01d13d5109ea1c965158e0d093090f97f545ad8f6621bad129d809a8ec9c58d28118043db33c9759a1b09f0e0b46a2ed138c70050ad1bd6367750773aa71af8f7670cbdf3753563b73c4175b721163efc76ffb6e3cf3dac978661b0d7fb2eac2c43047a1593e47ccf7f95c8022981bce1e0cb37521fbcb25510526c2dd6bbbdf04ad4f2e328f007af195745360ef966a89ac87664b4c45f772a4116df7632b0d890fb75819c466de4b87c210a7860f0613b7478ba51614a7bd86f8c30110f10e22fb4584dedb8a2fe913663afcd5c3e5ba64bbccd46323f3e2d7614f88a57fdc31fa5d6f7f7c1fbeafc14ca3bb74b4ddfd70829e19ab6ac976cd6f95ac707c9a8a245319ae5041b2d7880a7c075311435372d847d299990541f668ca3b5c1c98365fe52da23465dd47f85f55b378e9c44c70888ea1e79110e0139923de03e67370649f0d39f3755ad8dfb8c105a20330389d943ba3038a249a1a50739ce6eb826d45226665be3acc3a367ed83da6ca105521feaac3ecdfe5b256e5091f2dff66b20e5d20bddf659e738f034048a32e336a7542bfc471c1e4e93028e1ea4948a634de54ba899445a9cd5256fb2136a7fa5e1dd1fc13eedf0874ec1f687c89b5a7c5ae465cc4bd3e767f1fa8b8008921d08435299c59036a54220029d03254fda122c375d688a4ff2dde7af5c4b834cb58a46892308699e13075b01220290a31a412e7c50514eecc64cb6ed8354b50e3324a05454b64e867cefe02d9fa42488b59dc0494a5c5c9998e829e777f4cf5f3302f2c2372818083fd97b0c224936857dca80119bb88a70b8132465c6d4dda6c82bb6fc21d67459666d35ed0e70aa3d8ffb7ace0719c3fb93f0f7a8a15d6e18699a7c71dc94c79f4fcb62a4cf99619ceab57143a83610d716f58bde1ef8e80f3f5367922993b12313b636f8d6c174f2579a4776aeac95a1eb2697176ab05825a28f2a9737c22cdf3cd37ea91cfde51c4c450bb205821b02fc00689cb05925325675b1c48924e9172f98f649f4da721e931d3150f2a28714712a74cb838e3b75e20f6b8abd6f74935803f0a14b12e64355614b18ad881fb9c95628f6b42e2b434384407e21d208bec82f9c1f3a1b28b6ca4d9c7bb4ef4283e1825570bc2c9233f38ec4c0c1af9ae70c6d476d8a8a960ac74cb8b4e3ae7b9991e2da0f5672faa1fdce05f87fad1228fefe383d4b18d69a0a3181680edcaba618b05a505033b35e4ebc2559a814b85f39b0c3c31d61b6d052770980c166e63e5aa73315c7eab135d0f8287b495aac88c7f97f5fa5e56084583faf432a4f9c7fd0f6603a99ca432baaed41f32c219e1708918ba143247846530eb1fb0d7ac5a43ab535c6d1a3c875b17b73ff42f71970851059ec101cce63372f480cfad65730a57c1865620cbfe932710e0ae8914680a4a45d780415b82cd3f7fe66053b138738c66dfa48483d5898aeb22d6148dac5b6797d8f7a16d87ea5c22e1f8d59e0097832cb6b80717b62b33dd7c237d827ff57a8cd20c29892f6bee790e8e5403910b179a3f211513abe39172ee3586852cbb4ddd89541ea6684938ca37ae56411dfb3cfe7d8cd936b3b8d008170e6f3e4cada4d5ceb6112e8a6a92e319db16557a5f10cf672d5d8608a623d3b0c161a16d4addfc9721bb2cfa30dc645ecd2a5b462593e82e2ae2ece958b3ec27efb4e03d03bac231ea055b22c137e60935467fc614e2171164246db6bec9f8dff7105b19e461115c7b33e1a49c6732a4733d7d486b91d8845a3b14e74a24c150a21fda253b0eae75e424ca7f0d226f3a4a61b49e04bbab687cd0913a5e92052bb42c3d0622bec5e68f085855be81732ba7a6431093e0fbebb8affd71850330a5cdc92cbf32a5a7b587c4399359969fcfea029c67a45719051057de949a621f5dd3f398cf8ca1dae121ad375a05cd1d837e633d777a0eaf2588b97fc74537901dddcb014354858b3045c8941b822989aab1b1969558919d9c56ee0d11ab2680bdc201f479c93ebe9f2d761b2eb570172126ed520b97c4d8ec871baa28d31d2b96a991de486656944d00e5480a29c5e92015d45da548316ec7c1a488ab9f6374f0c8a51e9d69e21c8a308097aafa293649a9949a6a400fe3338956d8d23e04103f4f11e84b5a4038eec1f1ecdc7fab9c38951b7701049fb63586e261ccd29bcb5528e6bdd11d55005e791e16410cd844084aeba4baf35309a40b85f0681af10803964955c49f8731aa706c4ffd812f9f3f27edc60b8cf863f4c3f9c4d0bd1543abc80b5c6dbcd35a18eca41e83c944a1058c47156fee57cee1511535cbbb86397ff5b377854a0ec5a8acedce3ca33f3ba6ded029637ebaa2b76b816609c78e08c3de049f275cf26f4a90ce3e6adbed32e474613d1593cc4cd69ee81542e9db6a1256b03a7b86b8967d0adf3f7b9225663a3481060d0f0e5c9b987ed80f33a559365f0ddbac143a650180b1ca3c65413b403d2d9228d1bdd4251257120a91fc7e70dc24376194769389d44b68047b95bc2fbe80d6e3c137979e5f3f16c9f7165298ce5789b559a720c3423b4477dd9c50149e439533df84d1f94025e33192e3c29e62374a097ff7c1feb3c5cb1501e0609f534682157d7f60005dbc07098bc08fe3115a4953b371b240bd6a11871ac44c5957b15e11fe65565724fb9668e4e64404e70fb6a8174e7845db64214b1aa61d1ec90f9817e89efd43c47cf8639c7cda01b702c6c14fe2271353af353c4d88d40b7f9b14aaaffd196fd148e070c3a7c09105e0500a3433242dd87faa3518920c60a370e9857762893233257a1895aaa9d1f3b913f26d65c919e2d81699c83934aef1411bf5d148e73fbccc4553dcea084ef6eac3c527f4d7cfc33f93014c24f165a7bf00331644693cbbe0f741598e9c476ca1838bce23150912ce6341420670f6749985d73dd3b23de6edfcb270405d73432837a3b76c1c5b1e620b16a47638160fa0928d6c8bcc390ccca21f301cff0431bd9281d83c211059fa45f6e2ed14314154ebf65c1c07cfff527404d5b8de2240f67d89eb9f0db92291aa13b71dab15e0b64d89d3ee89a116be44c5d1d4de5e22b8f873f791b1fff8d58931e3574511db10a4788df947be0090eecabf34b4f8adf570a93e9c42644c24f93c852102dc39f5a5723c7994c6fa9e4d8a3bb1e8eb0905e5701a81de30cc7cd2277e19ce38c14e064d243f2806993d39fe89c7fe46448813b98453cb6951517133e2f81e9df677015e13974d586450aa2260ed542922f08d8bec2890a08b1537ac657a8cf22db4cc2b5744263057ddca0d26f44e30080777c2b3a9de4c838b0a784e0434352738c73bf63ad63dca99e7c5432bce3423bdadcb4821623694a3c771ef8e5ad02f842a4e557a01881b3274b04aa2ad93d342e5ae208928c13f6d45b4ae53476da1f316fba60c1c0f643b102ae9194d7c076828e27b44d995ebf38a07a7463315703c66c74f373f24b75e7dcac10e0e34cd9b76a430f7dbea26826db5498a1a048d9e749030001ea5b68305980903481e79d2c28c685a2ba2d7d517f19dba7533ee31984d8d89dcb767db74788f0827134663ab17c27bf5e506753937404a21c146b30ed017d3989f81a8089c14b4c732f2928eae5c7aa9272b5ed44af3d04dc4894da151f4c510aae4767e71a7e21e3d96b414c72f9495cf1c3a6485ad4d4a7fdb2b66f194b7ffc07303a90c91f83274974fa6303e678bb4144cb00a52991cd2f9505d867571e1863f08f905d53f03c627f016029b19ec81011a2753451d11b514dbd787030b26b665879fb11a31659a3c7370e8a27c49956e57a46601326b9aa4f31cf2fe83b26fca5037d22ccb94048f41446dd6b255d4f905b934bb1cb9cbcc3c004f0809d1c8a42f9420c44494968a566f0a14194690a7115ff6b500e5e1525127ddf6334f4774081960818aa2e72f444621a0028e54f191cdd436dda55d8c03fdcac8bfc3a60841e5c69727761f0eb83530374b6994dd90929945ce534ac10c35b026ed13729638f883e67669c3f2573215d8ee1b59c17f942fb24f8844c13a6e6b49522e351052c3c4fc681a39c43991f89493491834bd6de42176e68fb3877030b7cbba1cb5cc397bc72f61366ace674a91a0a7b543367bcb4398b898b204971b4c627a8345ee2ef693d1e33d1af2ee422d9c915880704346888a1584cc0ce2f8d12a310fb21b011f7f2b0b3ea34bf3b4bc20a1070b71fdb0bb5a26d49cfefd2190f71032f40f71450936a66cc0c36185ce23fc21242e61c71e3feac441e606798b17ecdcf2cc086ebacfee0ae92a71af6305e59cb8f10c8f108d5580e699db088ee76423d658f20712c06dd37e1f9964b2605ccc9a6b01c883e3247deb962c47aabd91184b2a2aec544bf81a8881a452ec7182b167c33c18d5657d18684b081f012e7799ca2b8ce4808889b4a175124bc9fa9f5ac0b82a28ecaab35cd2c871c09d78941ea4b7328acaebde63da7bfa9b6b24cf5da9f8625a11f8e602d7a6ce9cbf7843e5a37a3a0b212df49be7562ca048f263cec8905f447a6d840f58535a91ecf750ff50a0f0b505d9988ff281cd91cb43e0b810c00950fc9a7c010c36555f8169b0845003e80c545af9143ac610b576671c19d853cc07f2fc11d2ee653c15c3305bdd60c428e76770a869736f045af6ddb49115a83bcb48f07d53f2c08e09970995f6a374f5fce69079ff060d612b7da70a3addfde8957ec22bc5001890124c657c759480d94281a9df5d67032a0b757739a79c40baf899151661630cb9682d2c49b2c429807c3866366a7ef302806200b95987dfb45db3b88d8841c1c533a8d36b3bd41a3c53de48698ac70a48cc5beb64aa00b5a48058e0dc77ea3f78cf390911b0a2c8ffc33b804064bf2ca7130cae95c2df75001cdc913116b19071b3aeeb1707a480b53e3b95b24230ab30eaa598d0ccb25d607c9edf0cabef57062e4b838f05f906d9eab06e233c6405ade70fa4740b1b5f4b8a7d12e33f0b174ced12b01061ca787d33230fa954ac525bfabb5540da563e77d92af6de4950d76a9253a4329fb817d310d2c99c9a1f1bb6804b0f9901337079b246a66ff04e075b8f2ecbc00dcd2ce46095215e590ace1585506d4a77f88421226dc5b7ddbe701649cd1411254c5bc8b6c8b2bedd1213ebc9cdba59fc3d3984816ba24be5809f0d60db14b7ed3994904ce9c8dbbc8bc3229845ab7a91c8400965596a5922c707ee7768e769c2442d179e4afafb760a997e82ce24d67334426cd6a38cb8101a09c9647d7d14e508b44a0919517f37ba325479ab9eec49f96dc8e834f70cb2f44338ef930d900f0e03f4bf3e13c3f254745a72059041b4c71330cc43f08603c00f9c569ca77bbf6842870d1ac1cb254f1fd5ab21141e709aec62f9af261bc95592ca63a80f9e17a3314e275f59b86c65c903e18a35cfd08a2c68c0d0d276c21eb50cfca9a35919ae6d44338fea7c806064669f4a1ec16fad1c88b01cab3431a293f81a749f0366bc1249cb7e30f0d9319bd7266e3023413e11dc3d7e4107573cbd7d582bd0ecf077e0aef79553715b0189128a56b025eccd04b1b96c75c0f82280c90b89c7f4fdf36f49543c3af8d8e85f81c2c732a31b9cbe86fc3cea26aaffe54c7650aa83ee991d4eed482a38033f61edec619f51a637af1b499fdd7dcfb46bdf9f2f546376f4f7429eb9126902cddbc95cce7b4b9011a2b310d766122f0c3886c5e1ced0c7a66a3d2e126ff965353358a8b8ffcd176fa44ccebaaaf286589350ae91e14c0235a67a44ac2960d263eea1717d5ea431683c718f5f719326d29d647319c5e3384481d5d60a13f227ea5cd0f2da97ae0f212323ae0f1303991af3101e82c3fd7bdeddc21582ce3aa29782fafdf61f4353f0e545fa07ebb6d3f8f32eae7e7a7ed8dc077e0790d2b4a63615bbdef1439c46c8d17a0249b3aef38d064818b15e5303a05598474819a1352a2dc2b4b8ddb84dbb0fbafed3e40bb1c17e6063d2c7071e434bf623b6a4534c114b4a6bcce4e4edbc5c08b86a0b37002f806f06501cdc9d21a07f486ca3be929021b4d297a5fc7a41419ca684687e801441e0961d0d4b95466c0ce22c3b6a5fda4234b4f4c3e7c1756057659840f2e31721d4199aee6ad51d189aa8ef0c339e05ad558874035d109f9f4129bb9324ea535664ff586b74e9c98a384042e4b1e9ae1e20d6330da8bc4c9969e607cffd5633034d326eececeb041a50ca7e6c66b1c9d464b143b6ff78d193ba7e22b31d5569bd51faf48c573d2e67a965703623c4fb0d65eba2b970067bc52fd33d7d006298085ed3d33d03d1e2229fae3a52a432141be57f20e7e2ce84f4dbfdd7518a16ab4ff79763e22b774bad1c1460e1a1f7e6d514746945c91fcfd1554b91c10ceffe25a0e637d8535d02646fd46b6fce757b13edf303c61bfc2c4758664bb6735347ddad8d4c45465d6ccabf4284d53b397e9313a526700fcb50be143af7288a4f9dacc166e901d5311887461347d3b122d68975d3459fa0a36118bdbd967047fe8c7787a3e71f2a988803e530990f7956fb97e2c0fa780e3b51645ce1dd2a21101ea27b6c57824cfa07e909f2bd1561e6b2c9c2193b4d026f8ee1e353f2a019bffd78f6a3242d8a2e6be59533e0202e880f2bef907d34dfaa82aa4b49deeb99cb4be62ac31887b7d02a97dd98c6296b9977e9533e38cf1f2c98760b4b1944e1142ac32b772ea04cf292135cf9c5cd950f3787476c13e1fdf4cd17964e5ca535793eeb29921c8b5f5af2b9f7c54d70ffe14763e03047d15db1df6f2b309bffa3dd394b56e946b3ec0be9db041b199ba421493f1d3cf9119d7ff6e93e9ebaea51886f14af63927d709308dff5908a5ccb61654707758a9a4fb9c28cd32c0df394b1cf937e95152fe88c1bd050231faf387a11db8a663e889fa54543415cfb3e5b151a69ae2334bca4780ee45c499fe135b624b22e92a649d773384a885fa31e7ac9f97bce27056583798e0ea72c3f027f0ce6a339713905df9a0d709058fa1a26a69322e7b59f303e94b8363fbe33186a51ab27d94d54cb7a51e7ecd5f504639637712a6643eef776f591dae329b22a1a0b3be82864a349cc270fdba84cfd6df27036d3988bf18778b5548f5ec1902afd6c9c8276a3e1602432f6c2407484f817e25f4b4c5af109ac3d82472d653e4abac304e05fd2ca18fdeec7be15944c46471277cd50a71e044cc0172ed5d00c8764280cc05adae5e8ccb4ddca58201e2e0294f0479ae88e16f1344eb625b29ce22ba7438f53e6e66cc8ed16fbc1e53b431f3d148091177c1755e1f57a1b3f8b95100ef32799fdca60e5d713193b78dc3f49c511bb9286693d5380dfa41818d83fc308b570009a3a68f6387c2a4eafc9e898df87b15b7bf1837f51a7e416fcb42872561fbcb2926855b4fd03e41ce59669ba3aa5e2d7679a0b30628592e0590b82f95e8c1939d219f3ae92d849d051362c705f8c11c628b03549215f0a2fdd06fc2a4920043457ae1361eb3dea624a74585cbaf760c8069a023f75ba9e6df97ea66a06bb73e100e766e96f4b66692c3237099e56679c152c2e97dc0abdf3e6f860b29d1c7926a50009ad3c21888b4e1bfbaf51b13a45ed12794f7c66ddd2f21a4442e92763fae63479961b592f7904a9c366fd9e388271534a5eb6387c0d79fc5892b553f175bae42d6c051dbf5c603e6ddee407d3c1c9f4053f02a5aa774eb839208f5085aebca180fa2bb98913c0d33c33e42dc0ca79cb1bca8cf3c4317bb1e03badff141473e182ac181791d7a8dc9087042d8ae7b1082ef3288087340acb3d79c76904c4809a34be6ce3e8c1747d9a360f40dc7a31cff8bf0e394f6f2724ffca5a477be164fbfa951a03dd5cb0fb22fa6fd4ab3b93d9c83fd7172aef6e62b735a3fa6aae384027ff4649ff9be15a677e68a147b15937cf8bf233ec8c3a58a6a6bffc7cd61b878092441b48fb7eebb67b424268c3023bc7dafb889f66008b12dcd25b729fd4629df369a3453bafd8326575b56a53ca538b8dee896aa34b6d8fd1170eac448f51a324565d29a021bc87e61e1c5db5f780ab103a1461ab6a38596e92c4d660c8573a8e92db0bc7af41cf7070fb23b2ff1a966d01920f375bec8c00ecd9e62b9313b498627d168b4c3c1237df08a2b75ac98f90b1f741239ba77e9afed1b97d61727b030b1bc26032df90213a17890a02391808071b03982b5d69b5501d1ec22529937b3776b46a414626bf9df991a6c8676a378fab609f5f5b680944bef81fd2e73de43c3faaeae1d36ef681d91280d8a59efa55e4934fe96c73648d91dc9df3a898d00fd4c8a7b3fa3e89bd664c6d9f316a1bc72543206eb3f5312ea9305cfb6fd4ba2455d62b016db7302cc9666f4f58d40abc43c169736218e8b97f1be1be37deb2a1f8237f7f7ff8ec1e6dd55b0c6589e620b852c4f6521e2008821d488633b9bb6609c71350788fa8d2f990f7156d22d268ebbfbfe6ba1ec342ae7b8e462fb487be71d9fea383842ab178b5b7edc3a8d373768332001e361475196aad4c6cdffac808c5480eac064cef124ac6860a2234bc313d75988bc2e5e45300da105783e815fb1a25dea74882475f112481bb4b566dfb2c419d9e3ee7e0f4cab26c5fee163e1338f9bc0783f3b7bcccb0483e06b841c38dea2a0f93b0807ed4465bde8ef875be4de37b8ff8f00228984963140915512d399b98470e91c17032e22d7ed0c776c01f9908ce87ba0c19ee3df0c517042110dfeed483eb6098bd63ac1d46021ba93c8964affc5daf0a916b0b2401c54ec404033736018c8b54d2d4ee60e6853abd7aeff1a2b81016a1ebd5bbfb62d159358288ef7f02dcd9afe5d101be9c22b235c343619558a2dede764b54c3da2c226ceadd44331394a6e16c39ae0d35750aab5fed81a6b21a7f96318ddfd3167a99cc10d961cf18a1d3e67fd2b415a3bfaf231b11faf56ee0c68d26d6a670f1df29548e7ac5d3c7777f42a499dc03f947abab6044ad3e4ff30394b53e798aded20592d29854e4eb8298376e739824c52db019764cc5330e3b87a624d1a0e3719a25771c25eb2dabab134225b232b1b61ce9c639aa9c172eb3b56cb29001cb781da710be6fb868b769e7153229571e28da7304f9722a8946d33e011e2e5b96d09e7a33b311d2a87bd95942494691f452d7c951d4f48e4bd4034c0e5602f7916bcee04bf27041ad51ef266faf77352af22e7fdcd4a1ee1af9592a0d46a75e7b1033831eaa8192327b21e5110fdadad291a15c2816101256c95804b4731a4dd7d623d9a338b3af1a5166e6e0f3a56b961439c1c69712f2101b5e9081d4e0a3ba599e47f5fdfc0aa2c631fc7748d3f0fca7d984cf651a34a22e70fa50a5adec2b6ca5ec3005ed04bbb2368066fa618ced9e6d5d84248ac1955b5dd90202dc6144edb394019cbf36d9b82a4d27bd700bda43aa139c77942e644b34229383b2ced9ac8869d354ae3a7b1a9d5d49a823f6cc047aee101f74e9731eb58383a4a2d3cd8087ecb0b1eb93a4362e3b211d42614eecc01deea8f04598bd1a5313d2647ec3de493f08b88ceadb997bdbc89a0bc3e82d9f17fd28fb99c17fdefdcdd119849d3e5aab51319e48c5f3c49bef3f531158a477b51a104c2d7f52dcf4ac677c0c03172d20fad95b4e3896e4d1bbc68a64779532b0b6b29532484ac021b0f3d75031f93f630a658d334faa3b2881a77df7c8ac71c9e02f740df3814c49cf7b3075e4b098ad2414e966ad49f6c7dcc663582164b2e9bc5ec1ff92587ea126396ddb2d518033bb891332b84cf054002310e2df8bad882500faef2e9c7b1f2924bfdc9d2569d3b0af62c4f65378314a50088aeeed58149658862247e657fd9a97303ea85885d3e4fa4f1fe6dfd260c64a18e80a07778143da0f8c4db2332c0339322748bb2d74e8569223cbfd0306d1e202c430ccbc9f504aa945a1f7498b9ff901b70442408b2f057236ee9af087d6f7db84679ff9bac6ba2259195e84aae25513f5359c098bf3e4b55188655f6cf532e5ffa6408fc6d58170aa14ac956f31b850e4d6bc9f2c7ce113863714e3d4cf6e7ac4a9afa87b50e4478d14027a22f908aca3832840e810a4584ff35d58fcbf44cacf231a93dae6a9d28b2bcf60b66e38ecfcf65001ab9ed1028d8fcd8076de6db96d72a598696ca092ce8d16f26dd44325db7e93870cea0ede96089940a7632c6deb389fb051c5c6d86e50eceb9c9f069c23e830a2b24f9f8b1021e813898e16d5191ef2665504f237ac5f00299a888bb9d3a3dafa309895c4ec361cf29ce8f452c13f479c92180dc65e8ba8eee9573345fe9b21be8b63bca1fbc39e4c3995237072401acfb81208416a8425d7dc5a39c9a4f5b9a4453c3e6a311148d2eae83698882ddb16243e8c67980c2f14fc0f793435c6ca19c3e151735cc678bc1b220d8c0729795951ddd32c8a3bfd0cee44062c68b4936eb4f4a838ae6f5ba0db9d006cffd0f80c33668dc4f11185b467e82437c21660a6fd4c8602c4bdaceae0cd85e885be4130b61e461cc063f9b857423c93a248c592d20aaffc2ededf1d2ac128210e3c9291d2bcbfaf25e1a2afb6fda2ffe10ceb545f096b6fbcc7e5221f14bbc8e7c406024f494184f87e507b0af580c23122771c6848cc33e4238002d39c04708200267b0a5238553d760bb2141d0bbc11e1d9fe837daeda218b657b157cf98a420a8b525ed388cae07aab7c47667513b3a211f46332a7164301b498c4c9a2acfdf8bf0492839e88ac58a89e44882861333c49509f3e9e37e131c8ffa5dd12cca9e450f4ebd13282bda1408d7b08bd34d5d40fb66010990412839276cd9f8500d91a82325ddc0164947b9edd30427d12fe28a224d73209a27110e8bce09548519a956bea49719b401605bd2bd2a8e979035c9bf1753ae5fe2d4052f536bd0cf15fa95f0ae4c6180a21d140264af137a691cf137f0f2b919bab4475318aac9acfc972101e2e04e2a4022d21afd46fc903f1d9bcc8fecabf463ed9122f7448a3b6ff6351b307546dd74fb1fba92644d5a66e8e35c967649376f9a1c03e927830875fc0b9f58da34d303a4b2f42f6fbe2dff75f487889e8c2cc2b4bcdd5b24f7bdeef56d15356c908589c8c52af3cd62d8ffe16e5cec495eab716a8b3f7b067393db544548cf33ca9cecb31bebf54743f13a89de37d21fe3e5c4f5cbf02de1a709803c6b54a390aec163049c012cb1d843389dc008640c684a74a31c540acdb0f80cc97f0d0d772ac49fa00e7f9bb2b1815bd88a7d5797a0a1016f20a17b88cc035eb9992018e6416d11ca94beb74d879307a8565148b1063f71f3e764f0db9a1af4c03ca207bf4a7082533d1d4e88cc7ee2874e9a3a3672805c52180dec5610df601f2c4b131b835475c9e92b9e1a37aa8404223249e2954dcbe0ab64818823c936fb67948903afff99fdf452181ec27054ed531ef1da1c05e19d1be5d4fe3f84cc8cb31b69a095ec00568c93d0221820ab031caa721513f2371098213efdf9cdbecab742d0d224209801f87aab3793882fca55506b9b13681c6fe6206662fce788d0e885e999edfc3ede2b85813b30243383d9f19590551972b51df85f01d5e5fe8cf092a976319961882dbaa2ae9ce38754002ad7a40b2eac028ac28e95d0ec88ea02a97a2572d21f5c78eec3c5093c6af6d766c95ca1a8bb5dc27a11799e562e154272592d6672448633bc58f1af70a643c13429c00be268c31c82210783927926da9d1de1cf8fee5e28df068b07139503e6fe157885dc6738bfcee88a6ffb9aa3b0af5ac784c34b4b9c42f05a41ede4b0804459fc55d68e17a75cae68544ec858154b84f2d530ff57b75c22df4a284d11a0774cbb085ba6039c75d850e8553b4165dc67169e61e4de1d7d49b316ad910df0f166cf8c0adf936aa7431d5020896533d8764106fc6d586da9fa1d2dbdc0f8e8a853dddce2e1824103ce8554aa2febbe13ff40ef0e8db45e4ccd32c6ac609efd71c5bd5c6de52659f54ef1d4fa0ce517946611ac412ab61147ee3508e6daf1a595a12857bd2b7a092484437082b27972a0966a8804052e359b1566612f7bcb654fcd4e27da268f1c2f4651517d965f14115b48d5f0a5ec89f04b45562d5dd2b672362d1f417d0130e1620c372a16feca135b2abdfb28242c4b7c360af0d2b8f738778fb41a88cd28e8b6e84929e78e614e6869cd3aeac516e043679d7c5880f51acac137ec9476a8a73b26a81b057ddc680175c59868885b30482ae7ca1ec9dc70ccc58561a64e07ec8b1270ef0860718b23e12ad3584447c8dc76de67ac3ba41fed4574445b2c89014fded2cc831d9e7860b5f079636bc04ff9e804178c53d5daa83835c755d3daa08f7c22d3c044368a8816072620f89ac2cb37455cf6e3312870bb36109da5355f6fc3949cd80e58972cfaa80c4871c49634d5378d4700956fb950aeec63e2d7091337ae77a4774de5c951a728f6c4fc5ba34b8dfa7d66193066d9612b0f8bfb0e874591bf55d4470f2a6fa76ec8589fcd2b686a5f408a2d6f9aef145e84c0343fd36e245ac2d8d6241edb01a232564712cce1458e2f3588bd496331bb704096db522f6f4c50a41863ae113622298e3ad4999c7a23096698a4b52ded63445d7257c4d29710a27d7284690da54b0ec011f936c96fc29f9c8eb80b4495babe566d2b7afd5f62d0746b81627a689655b370eeb51ef6e1d12705c519bb7403b0f4e17d641a1e69afd5a250fd6bd1d7b655399304ca8f6b57eb571bca6b0eb224a787520fc2d52d8fd3cc8a329df70c0dd45c42ef80ed28186e521713ae88fac0fb2eae97d858850a9c9a9246c7a8d901183d6fe7e2f3474d3be9e2bb54dd8416c180a236da1d6f11092fbc8f8af64ded7fa9b2f5b400f2f51224834a5d4714e0f1383b21ee0536065974891dff92b107a83d40ae4de43d5d322bce9849889e38e9c96c20f78262a33174724dbdc8c86694d994597b8432a4c2c976d00b5eaee3e006bd25553b1b58ffd2aabccb47eaaca4cfcedd9a1224953e8df89c1211e10322a76ef072711453d5aea07332aa9beed7451bfb982ca6c8e272d23e6c3800ee6c17192ccd14bf13e68e15558601583f88cee2e1a295808f3c79807c4c28b2e4196542ee876188132aa77b0976fbb11b8f91cdc56ebd0aa31470c2b01437644ee61302f35d9ff3a422b35a5d7325f7879920b0e2677ce61ea9d393e490b6ba6bc85cd0b2ab3a1c14edf9a0f64414bff2c816b220a8b583f76941b2f690e7da2839f92f53a468e99c540335c2cfa1c7958241b681cb58855a16ac5678047f62cb257978189416035a9fbba8466b93cf46d6342c2d67a7310cd3df4c40c983d689a6ffe973c9eddc9fab0083193246adb3b3ecdd50db49997d52d2f11ce4524071eeeeef7f98786a3627b360a4e3556ececad88420f72c876053f602238e1c3ac05bd0f5ec87995f2e7f39451dd8cfaa57a9e41913fbcf57e904b1b5765bf211796b9cf418fd6ddedc89ee4d8a699ea8f3ed1e0e5fb9bd63cc387d274b870853ff817b87051106adf6c12465cca7449fa40cc259ab7d10ae6253d2af9ac46245134f65bf3cb46cc4113a61edfda2fb3ae28e439a1af1092bdf8810730a908c87c512b258c575eb973d9f08fcd1b385057b02350fa1faf6faf3f3e05bbde0281aaaf11b81b3213b89c35167a7f5d043b028089f68384091fa7557165b53e92dfbd85ba2dfa5cff12028157c3b87080dd923a7020e1dadee0a15ff864ee8d1900e51068c2b9eeb2b0f5cbd5990fa35bf1ef32b374f3522c6d4633c4e7c0756dc0cd0d3ef14b640745957234e3cc528c5083a60a4b16b94c692f0946150c8b67b0f3c778a5b0305c714b4a6cfda27db7e288f68a4c575e63a68a9f5b0708b9e75758c9adac4fcdf2a12abc45b8c82a52ed3c7ed7a44fda6c6fa1db790e2af51fdaa12dc9676d89f0986ece33ad6883db13fcc64d67181459aeb0c87d3c54c1a00d06a1186b16f932fdc9bad26e0425ac6551c159abece2e652dde513cac22eba4459238f93c62b53c1cdf6a87a6959fcfab725a7d171b8e9be490b976dcf73a366df1708f446e7b682c4a87ab4df85cb56d095baa2c1f0bd2e0016057d42ef7281119b72eba65df08d64bd49350f240453a8e8a863ecd0b139e16f6f66131baec0b1aa9181a356852f845fb58694f1537d208ccf1d683157f5e98026012dec4fee11f8d3154401cc4f4f07bc377d68993276f6db1466526d48eb203ea5b45a80dcab7980b7969446fe9c049c26e9676a54bca2f1a5c1aef52e39ce605c527caaabd2890eacef118717000a5d1c5e88cc984944f31ff194339520e1baeca1f446e2573ed594704b3dc118cdd9032a2ecbf6b4591c155d710085f2c2f9ed583ea37f4eac6c5292d32e4890c24bfdd308e88360b0423d80777ba93e8c7b5501983ee8c1348cc757ae246cf163a7f9fb0a9437181acdf761fbbeff4018a437d030cad8e97f45ebe11c8958c0a63635414c58f944a08da9633c7981d78934eb0a16931a57788bb61aaa9d8d115901431d60718c7f911d7420747be9016685fd36c4fe0509180ea81abdc6c650aadd8e13ef35d7723bbc33918881d60a735fecfadbe9490f096d4722b1342cb5eae5b50c9d0b734b5617678b22ace77af2ae6ec07547b97b4c7f1b8efa4df312080bf50bcfcdcc0d9ad1a3fa2af94efde471741b35a791ddcd290575f0a3ba3f8e223aabfcb03acb47aa9363c50346930ef937a10cea841d48dd6d8690d37ede65c1a622f5b38dfaa79d921b2e6036ade0def71c380b14ab0378ca55a9f0fe3882b488d11fe9e35f2a477cc759a52329f2ead7a6853d97d28fa6b2ef34e3b0fa6e7de04f70ea3c8a5a70f655ad715c215b27b0df9e71bf411aa127c68d71682e6c968c2ed6dccb11e91360ef4801c193cbc38a829cb210e5178ab458174bccec558f0673ef3e021c2a0aa489e6521b3a0a3c443ab1bf71ea1752be7fe6a8ae4c5ed6a0c254c71100b7715332623d7b2752248d5b0196cf67242a9b49eabc3a77a18cdd9182ef45e236556ffd58f96811558ab5401a520478c4bb4cee76469baced5341609f6c65cee018b701d8d977a40c17080c1d307d3f536ed3f742a7ec206831252473962e7613637db85b3c3d73c720c464ba17ca8103a9fe235d8bc7fe1b06d1ee9f6698068cc6f863a1a7d88128f2b5aab551bc6b4e243432c60f7000047e771ba01c85fd7e3e3e9e69b2e9eec9e4f106ba994532e76ea8cc16bf80fc2df73fdeb7d39d7af9e998da9a8262ab6b9794c1400b73dd06225d6c6d144a513ab887b67c72073234a183f0ce83e46145c8ad131c411922bb9ee990b890a09acd2a3a27628a6dbe95a5902cfcfa72cbdbc7d6ecf05a25239b1b46ac7c20528d9ce161e1de291c76a7ba03facc3638ce9144e67404c71663e5e58b56951b3bef352e3617a8ee7321f0ed33d49a26d0c30fa3c33fe1a2bc0df1a8308290d9f649b9ff7cb843915b373dc372345d0cd42ea34ad63408c20bcfb9eabb99700853709134c43e380cb894f6b90796df8a70a74fcc9e7b31d0c2ea84b80876884db697c3bd7405ea763023b3ea6cffbe20f6ed73461a741f967e3a61f97225a3365d395c38d556302d79a36afd0d00de89a19fd8aa941f50923533e1c67d152b14872ff009570e7c8992d5fe27d2ceb4b1d2d2c438ecdfcc985221fa0222d528c4729ac02987d1de76dffc54c0607ef80a2e7a7141d1b7682b9aaeab2f4f156a3b1a83c225dddb22ed1d663ca517d269b42bc3835fb679b419d9e4cd9d86516c95ad836dc679759a98587f5202213d8ec52cfd5aebcd19a36870e39e06462d626a4e76c28883d5c350f3e65ba90b8c7532b170c0784a6dcaafb8a845d08cc6fcb865254407e179587bff9373354106c37e448867585d3ab4abf6bffd64074df75fbd185a83e785043168bc0ed4938f20643c2d1bd5c5f19310194ee0a82c56377bbcd84fbdc5003cd488e60450dac9640328ab5508bf948d44914e9d009217ff915f551ca6192ea7ae0f2f4fec1936e7f5299a401552509f39a80c79ebaac39923deeb6bf313fe83f6a34cc3fc1c80ca4e743869d515fc90499f248b3d16783c19dfd60eef90d06770261b40edec9493dbf213fc676f2a0c39d83434dcb465e714bd7de712a7dad1219cb6b7bda219acec1c456b1a9668083aa563df3fb929b95aedb6505f887afa700cf3937028a1f2b762a313547942f8ecee4b3b96284a820890f18b6037316f135319a34e4985a9918792b066dca16a54a395fae6bf8d329be5ce578181b397cb5d05390b1c688a3f1105ac31f2b044b78008c809050083d24976ff6a7c428dee091d37f644fb58448cb0488ff17420b4c4784b18c7c26f7b4fde7b51ecfc3f69975e6133c2e04a5d3f7c356b096fe81f98fcf117b21cb5591c4ffb5fd389264832a4d8c23981312d346cf7856b1ca284e7aef820fea6b650b447edd6a137f1857e8b40731724f2d5376ba3ebf64c1e847fc1ef0674b87432157b458b6d0a1203d72ec86a0754b306042c46bd565a94546e99e053b00b8c77d942745eb7b82dd6240671d7d746e701112278d20aaefe5c45baa8e00d060c1e56a531567a07ec90b0a756f007a7906af240fb54edc42512fd88d195570ae786f1d5b1a66dc06a9aebfe0f3455a1912077c097d4f7a3e3a3ee86314fee5ecdad51726953c9baa0178520f09965a17e5dcf98aa0ec99bfc4d2bc62b37698929805d08061ed19b4c930e121d18093907e10414b2c3e15d61b702ca9a0e75d436595593b961b92255a0c5d8f61f7406079cc3929deacb0bffd31372d9b6f094279ea192d5146c576c609ad65b23aa685c1246a5d6d541732b4e7ba766c4dd684b4d886ac7e9eaa033981a86f12088c18820cc22c53628a3c3e01852048a010c101d57986ed3ad540115f06042ed3ebe1aa127da078cd7d12ad647e3cc515d145cfd76484115d1ae6b531e2d0b964596596d00220cd479c7b5a8a9085ca217ca55a34c39a7f6a9e4dc8c4e5c459899a4360ae1dc948df205adda62134ec65a329509184b3281f328581b141d3e2ce42e7d57bd3dfbf865f72fcecf7645cf128a028e9a34eb2b3324d0d3421df59462415a898468e134cf5f0dd714f7b3dc7e0767905a0f986ba5fb2e57330668f50011199fdb2b4df9439bf9c5b35762853bd9cad762f46d4c07aff7a8c521033d93954774cc2c2c7771cad7d10d7c528961926c32208c9edbf3ddc8c5ad48c6b3d9c017dc2a20f1e5beabd7418780bd0f8ac3a3f5b1af6d3a396911c3b7e5bfa3761a9adc7c26654449bfa3b604829803c0d3da2f637d592d3a71b84c2a7e8901adf5d36c07fc9fa4c05a812ed17afd6c3a3a2ea0ad522188ece5b827a0763939bc4fe1fd87d9351278ba85713d753a86251b4a2b3144b15de0ffa800e9f99f6d742afa092b3e07af5cf3c44a382a8f48788b29af68c63aea25a140b0db79e67eea3f04fe495f409d282120f8e685963d8f48cc648ead613468a6819a8487266511f4b733a715fe55e63fc38395f8e8a8563cf2eaf2f5442fa447f1a2ff9658dcba26fe33529e99a6f22f14a37e03a021670320dfa9c4ca8227ee72459a58d4ea65b226b723b6a9432dfa3c6b87716f3d89de115abcf216e7d3cc2e3356201981d577490b522816305240e8978da4dac67cafe3a1e779087eec27f42f985e1b132c8cb9409d26c86681e3076e7d025c9e27fd1fb80989236e3225e762f464c320068a87ff5bfe80bde2442a21054664aa0f75774940f58c0941bdb240c68d832e24fc1fb540297c78612457737d5d35b5ae5b40d3292bc88a82dd8920dc290073de8791b4660a5c751d06a9efd1c15cd43615c4118030b9043f0ee0baa7a8f3affffcbf201b2f6a8f952f1c2c6e893e59f57251cee262929487f27be3cdb937b0ed1bdf1b89f26261e41cc558b859bd7e6ff0ca15c7a219e243a5c0997eee90f2e16f25b8a59ad3c50c0ea6505877f3a9bc96c2e3af724a7c6122bfa83a6c2ada6ceae83f75b88eeb6b027d6cfb40a4e1f753caf21f407ac2a7b741bff047c836998bfc912d185690c0851711c60cb60a571356e58ab2a02a36c9b4268259c5ef78892e64982fbe45cebdbc4bbfb43ad008fb2c8291bc7e0cfe0a0879b1306c2f87e115ae102516cf094b1c6e6b774471082d16d3fd6dafeff596eaad14747f7dbe712083ec284124195ef0c93684af73c841cc81948ed7e3909c3c0750ba65ea887cd96a33ec47a5419e09e5768831e15609d9c65e60ecf0087ec8cbf37d9cb95868158a636cefb1a1bf125532b04e9242d97b99b207525605744f9e05c22496e0a394f9257c7065f242d86b5d45891f6b621394a0a6f151b281d0b3065ab6c8b798e44dbd7df9bee202f6c76d0754fc5f2db2271cbaf760a33868f9fb9ffb31a2af18b3de2a6c5b2524c60712126e19df49dd97294ccc0a098772508de9ad1b57440843e09dc5fa033c6e9b338a5b20ff6685805d712f712cbcde7fad9cc6ea11cca63de1943f925d3648493f96b615593c6e6f09197514c1b03eac6c4c72bffa3f1b6334cec7be91fea1361fd26b0c48af17b07e80834c6b37c315b0ab3a41e0f682ce4e70c086078ea3f2dc72554d28198d221c71b7a87d74797d671753fb4d47c302d85f98aa6358784b65541716ac868e9c069640e96f866b58e70b13ea4d0a7e88f4b98ed187219314762c0553b29159891d63134d90186193076e387c2f520cbe79c2c6e336adfa2b03f90aec1b217d9231930b56fdabca9b0af5508961bd429d98588b88f3c8fa8d71d4a5f9781a5f41c74f9466cf10ca4132e90af7b2662a7a2d6971a8cfe6ad6f505bbdd20befa0177e29845259ae3784ce30e232c0ebbf48b59749f88b46001ae85fb189fb32998806750dcffb7b3bf89097d848a4816a488a79eee1b58f80521f07b0e68020d5409ba289586f1fc3bd88465a445f53923ef4fabcc65fdc5a9aa1eaab67dc074a13eaef35a582e40399bc022cab847cd07fe5a6dddd8d6f76d9bed697d432fb861be986e9e08be26745a3f3dcd3f66ef48c618c3ff6cc09a73bf06d0ad5be070fbc5b50e64bdd1d270c5f8bdc6a75ffd5701af4bb039a13979b5930181aa503eea6ba16a96a9f61413b2570d930d81d78b44bea067036f1da83ba91a98e1c140f1b1ca965790454547bc7e73e9173892f12cea4817cae8da1fc95ce411d284091dbc7a675a2e8ff4412b2f7de446e29654a29054109d309d009df5bd3b235dc3fa8fd3f4894b1393ff01e58a4da4bd8807edc1aaa73527a92725e524a1c1bc3abd5a4d80f119b1f2be8d72c2731158d83226b1cc644602eb0d7b8f6562bd8ac15cb051774564a76e0c6b19771db3b298e6a943272eb615dbd0a0a3f4a19d92371478efcf09ef63fc878d8937a0aab80fec87519bb09f8ba0ab561f89a8cda5760cf6122a4a0f6fb8671ed618f6d7fe3651ccc100cfb1b2fdbb8e6e1bac7531b073364fbecb7ae79b6c7389821a4c79ed4758fa7fab10e867feb9ac853cd0486bb0ab4a7bdd635abeb56f3506e75aabf9be110fccf5749d0cf5b08a82714cb2c0ff9fc74558dc5a6b6d62c40d8d4561a9b0f4640ed1c57c1a151cf8e43aef295a7fa471d1c7238e4aba1dadfb2f988dcad5c05804df1bba053af8e09f636dd2a581e0cd817f8555887c3df012ba83d3e6e7173fbca57b1f985133665b06e46e8eebe9a42bf66d5ee2b3df3f9aaba0a6a2c5fa17664786856b5e36ab6018af81250f797557c034e350ccb8397c86c8df6fb1dab78c763d406301f55836403fb408419c773ac208256ebca101622223ee0e4b88a8576a86788735af0822b1f34123e9a8fb629b198fdb34e55fbaf8574b4eefb1f795dda452afd5522696fd397f6bb5d97765d9d2685c229715cdaa675d5348e8938093760d532f3e029ec0bfdad044ef58b7144edbfb61fa4ca1db736a61fd2205e1aec6181169a46b56bddc299d68a0654a0a7e7890f949fd8f2940584b01089c4aafd99896b2f6a5c47b155aba6511d8d62b714ed44ef044501a8d53c3d1be31345b7ce0ecdb4ef31b4d63171eb75cfd66cfb6c4d771d8d46d8f6a30d1b8d46a351a749a1513b4919da337d0bd75e16b9d53aad2b3cc45898a8775aa797344f8cb3e55bba19bb75cd3513d75e4f500f6067588bec3f52fd66d5a2bb0cee3e52fdb8a791cc1a8546d3b491481b176d8cc6750f1b63eab86504fd5aa77643e9d6e925bd33fafee6e9263d4fdaa7676057a9ddf51487d13af9d1c4adf7e37a18feec61587b8d5baedaadc1d91ad2dbf4b66d5b89fe464bdb66c3c6f0d63aadb36da746e1c841a451fcfeb07e3d742b4627dbc5d26fc30d4574303217d21d8db8f664143ab726e74bd51ef58d58f93faefb075779cd79c9f5e2e5655b870e991d343d70bc9c722c3b6486bc1b4f13102baccad79c978e97979f20dcd7d7dd75a0e0c7f85e617408abe8eeeeeeeeee6efe66dd853e37eb8cbb4fa6328e463175678e360abe771007fe6eaa478610c26ec924db67fead383e870b955f07bf06f9e70b2f338f51d5a450999ea29f6bc632905477e733e36ccd6e8dacfdbec4d6b0807efd62e4e98facfed85ad58442c4942fceb022084d78fd71685513f8c1133e08fd200b146478fd7189c8b3355cfb8b4e54d38dea40986ed42e85c44c5b5954467a2dc78d9de956a37aa6bf5854ffa723b533cd6ad4d65ccf3cc2b011b3841c13ed27e73abed2bebf60b996b52623e74bdc395f6d4c7f5bd999288445f547a18e42d8995dd4e74a6a7ffb0b16d515688fd4390ee7399e6aa9056d1ddcba8e4665d7688461d8684aaeabec9a5dd7b53d032537296e3e62bc648c316abd13d43bbd53bb5b4aeff4aa57aed2b1a3571bab71582c2a418dea1f66f5177974c8049178c53ebce2158ec3f890c38187ca7f84a3f08a7118e7862034dca3514d3f1ac799d371ba1d47c70e1acf9ec4c1b44782508b1a73a34ae2d6f3e626c14e9342339293b8f69c63422291b22834676b3ad6a582089fcacc3c4ddac95547e0ff303d8d4763e117fa3f02d46e677aa851fedbef5a61551d054ef5163fe3da9332725c37ae3dc831c95ee372a6975969c51d4ff593b8a8e3a9feec0af4739c6d54e575c9cdc36994f7b0319e024ef52fbff0b910ee486af7c3edc74482c626b1873bc7d9982be8f5f13fc7a92ba59473f47234254ba94366478b367f6bb88683692ffb2c6b4d5b028d3cb5bfebe7383c4d7a9ed4fef8a4675ca85d05114ad486de56a16449edf723be2279a749a197691be5575869d58c6b2fe6d0cf71b606d6fec7ea020511a5eeba6c3e1c4208e7b63d03afb88253b3aed03d4a19dd2f13902b3a8dda0aab4bdd2a86c041759c9e31a372a749a10e37863f73d1d6dfb36e9d99bd07b49f391d325846fa6e2a6a63f8891670840c07aefbbc7b44094d8a9775818e3cd94e42371bb5f10684bb6d63aed4ad2ed01118d416322b74817ca8526fd405f2210bf59bfefddba82e900f63d417b87e8586a6bacc87aaf4fda3db53ee49ddd5c911f6f507086460b313b28bd3e477aaeeee5286d4112898580131451320bcd1ef260364c28a1860684144141e78183cc91f71d35352be8d6b3cf84d3733893fb5b7518ed3454d74faaf87ba251fdef8af85aa44015125f65fe7344ebd818b4cf2e32694fe632754d27ffc842aff632c551255c9635409468d6fe13f5865ab4fdd476d74dfa9b64bf77d6d07c2855a5a5af0a1ac06f7b505ee08c47152e33f0154ccc67f362af6a555a13cb535f4b1e7ad293df6bd35a4c7de77667becafcd76267b14f66ba3fb26d67d3c54b1afd169d96e5986996ed4e0bae5aa0ec29e46f74d56c5fea5fb2886fd7cd84415fbfd1bd815f5e3322af69f0351fb5dc8553ce429ecdbb177e9be897d4b2754fb4dd853ec4bd893b0dfb0d7b0cf30acf3ff7ca8f6a97e7ce4b3c1716aec80c0f833b190ed14227c16888824758194b46a7745ba92e0548b9c6a7ff3df30e77005754be957d02534842c7234c86ed9523abf1665941dbfb9185f4a771a62c79ee19a65ee2d7bb96abf03b882ddaa5f115823d4814ba012b88230803a5047085e66d8493a470713fbe56cc4d11e5de18916133de091943b6d4c3fe65638a1e58dba3921dcc21003c9142da8e22a005115581ed64d4f35f658473dd57fe3f933e7435e442a7c1b9f55e841099e11ec796827a654c173e27fe309c0086ff4375e36e2304e7edcacabfc4b0666c868d4c10c198d300eeb6086609f7dd619c16c7cc4adc75c7c8c5b4fe2c043f5f7b0ca3af512eacf1c36eb885b6f37b7e154fdafde8878bbaf88d7a0011a6aa84103346ca077342593cfda37c7752b90ed3e1b34f74dd2dc18b7d51f83197ce9bf90737f0c939fc43bcec67d8b614af9eece61cbad9caf65d9c743dd6d19fe72debb75efa87b3bfb1de1c09003b240b6cabf3818090333bea6f0d36174d9d36f0efb6e991e42d38fa83475116e4022cd8e1e4c60744ba4add3f8334ec3b8afb1f450957f6d3e3a8c09bbd55786a4749d3ab90999e82108bbdbbb0ea3c4b209598761f4fb47a5122d3d2c751bd880947e7e06035ee949ec51083f2412a914a58f306c24231c00894543ff807edcda9c9ee120adc5e5674acfb8c0545868a87585c885b99184734ac82ca1e6a46b8461a339a18c2fda95439159f9b3171b35fcaf2006943cdb658d7b7bd404ddeaa3df3a6786cd397bd8340a02356c0cbf0d1c3760c3c0c0e010800600ecc23a38622c7bce3066cefe371ff1b3ef2b8e865a466861a3d84e825af8cf45c5153b33b7fb5ceac73f57f72de087b71f5de15ff331aeeb844ec2b22bd3b26b665996759a14dac34603357ce0c250990bda00b61fa45ae2b887f4ce31c94179a4ae04b3ce8e9ba03438277441631e26e856d297786aff1356b5db62b7b24cd899f85b4b8cee5b20542e805680cd87fc023cec9aa1b4c9f1b23be9fa1ffff971ff01e2eede6a09d998213494389ba0798ddc3b9a8de16f21ad239004acf1720a408d00bc5c272e2a92bc53b4e3028e17791698d3f2856d3c150056fd902f355480856c4cff8f65f5601e1d5819d84a36a3506e9fd3b7a66326c4555ed4a9fe6804f52233e887aaed45581ad5437c65637ea034aad94788ab3c0b4c22048f08795110157f52b435974fabbac70e1d393ca8b67ffea4f6633ba03944dc57cb8eddcd3b445ab6fdec3e14e965f79d4e948884cab1c9e8c8ba1dd0c78b1a0599a05f0bb550b366403fde119a5bb355fb6df7851196ecfbfa7e8e625544703c47e551f7dd9082c510106afff422d27bc724e7bd0ce290b8222f92826e6d223bb4558c306ce4455ea46d5d7b6a6370d8c0d6cb16d9e6f81cc7ddc6a7465f4e416c2020a46dfc9afb3335fa720a6203012117cb6dd24846665e1fabea2187c0d6f8f6db6ccdac646c15548a868c0ac3f45ed2575cb135bb3f5d2f1963dc1f1b94e34c26d98ffb9c8cd221b383864eedc4f3fb65663fbd80184db4f822089e26247183840551bcc00a48d860491773326aa274c8eca0a1da0976cda216a3947183efdca836e426318c52c639f9e2bc4335eae79ac10ba6d4ef04f4022890b786bf7ea7eb694eb5697ad8402008f46d12d4208c5246b8b903adb2fc6a8cda8f2303467c0c6f0a991d0c0e5ca74771e853200cd611a4f0288942839b29cc88c1ce163cb842ca11afffda569a8058193aad6aa7f0041844916506315801910a02400835b16385262ce1099e099eb881134b769248620aaf5f6655bb841e1da2268c10e50a2b6066e6d309b5706362633e509a1d3a508ddaff40a36a40e5c0711a22646150b639be498003e4403101721ce0d4ee07c8c13c2010fbc215bc887ff4986f03876c808621346ca08a24c21186d030e77f09b0a1049cbac106e6e1556e2801abf887aedf62196d140660c3dec0530e499e3208aef807564118c8a02acc91b40ea3a3d057600fb519fe436771c78119c64a9458e2034a83be902a3f0d66e61accdd23779fda3f1d429861a3195d403f39e45066f16e124fa9fd6d05fdd8a7366f1ba58cbcf2d5e7ab95ab9835a555d47dbca863c7dc5a9da8d496c1324ddb34c88d2affc0aae52ccc8391d8175808336aefc08e57fc8296faf10a6a7323914a70761424912c433ac1a5c3904d28da1839e4036aaa9f1cf271326325c19810c2c870965a4c2e5cdcb4200a263ecce08c210461850c3100438895042652745cb409038853990704c2af104416351c0bea733a8ded47d1c694913334a91cda18b805d53efb2ff294b6861faebec81383fa8dea278724d1c6f4278378934359e8d7557da00826f078a1450a8a8af0faa5d0aa588c2120746c20861952f0fa256b551b842daea0050c7856a04409af5fb656b5597a80e2a70651c4600823bc7e9e314e3924875867e5a916aaa131db38c9219643128b249263c82266e6d30dcdb95185de3d98870bb18dabbcc87fb0cacd10ea21c43cbc0abf504588833bf0051bf34d88c4bed050089804111ac02d8f1e2dacb2f154ff0f4ef56b40f49b2ea8fdfe2ec43ca290c4c2c92c909350308355920b2e72afc23c6227b3b0920b19856e37e69367d4fe2ab52115cad117e61f5765ad925b237b86eb9503e5c44f5a0ee1683924b1ccee9363d496439f1caadec115e604fd78f5c1d5ec26af885895b3946c0dfc93136a03161b01dd59ddc74660c1ed6b34ba503a6e683834e646ec3c9d99b316342f7295c4d2a99659e41838361f72880a5d75e471d57a9c46030a573da7135dd5fed2c62b1d70fd22cf7a1b9113224831c50a07c7937fc5255625833cd53f9da0515429b59f34e2a1d1cb60b4e903fad215885ef643e2907d82952eaa2082ce0f0e8e47a9f6a5df217bfa33947efbaddb41eb6084640f23c37a5907c33033f8189ef63e86a77530dcc15440fbec67d03eeb7670b203e9b59f217bd39bba1db6cf7ebdd2af67d3d950a39a75368e79d8c753adf17a1bb79eb65e135149d4a87eee2496466139a09f0c1ada1a77d5eecaa09541ce46a81c54fbd9e79c131bcd3979c5ab39c1d8b91a75102ba00b14823f2e4fe369b8fc8df741968c0c0c22956a63186f7665d9dc7e2c11472d1c0cfd97bff15c3818d3d3f81b2fc33853eddf394bb5544919ad5969484bcb9bb8212e4fa33342e35d9e468d7ff91aa57ff91a4f83831962e369bc0d1a1d4ce96b94683c8d971235994a742b7dffb5f928c577e1d6237139c4ed833cb53fe33e3903ce6ba9ced09d360d257af47001b6ae40a255af7ad5ab5ec10c293d7dda19a15feae0df785fefd49791b9f1bed6f1eefb56eb0aec95ab76d2d3a3e4efe92184d9d3efa7a5ef47fd8d9de9e7b60139d36bf9feedd1f23c15761f2c82013928afe53f177ae4d0782d1ddc2940edcf38cb481aaf4d2f217d7c7c7c301f1f1f9f4d933e24e656eb4a9b4a434443442b1d9c1c1f9cda2f7d5c057d3ad53f27a5a793f4a9fd2b2428f481504e274a5b13b6e667b0055bb0055b4b28a6bdb6f9d0328e2be5d69bd0a7aef6f497b33ff4564b0cc7827e28d88357b1397ca740208804840cf139293d9dfef7a7f44d6296ef5550879c08985541e03ff2d8835f322200233cfafd28969455499d853f5bd34c846acb1d2c6abf9cc1aa200fec49a236f4a9fd9fcc41edcf76e1843fae9a93d2d3e9ff83321fbc78a8c7cf6a3ac338f8d2f22d9d91969716d3bfbca973a297377d4bcbbbb4985e9688dcc72c2ddb2cd3ba8f5975c29f0a7fe094ada132b4d7f2250e6648c9f4a5bff128073384fecbbf74465e9e9a38277ae1bcc8c4c10c7179d3bb744e04a3bde95dfe85831942e35f9e46e7459eea7fe960b477e9a0d6f22d1dcc3175702573e492add9be4f27f9e372f3d17ddcadfcf14ffef8277fe4cfd6c116747e9ca86255eac72f71eb511f189703fca44eedbfb86c44b9f54af06d983fa1d00f15c30e2107153edc9e991dfcf991adad5fae105750f8e049f4e127cca379f885feee1c1fb0aa5bc0a97e7e8280ca35db0c6e404895bfc873ca6801f370203a27081cc891c63a2b253b99c65cd74de328651c6d32b4a7c4d6ec25638cd816ede8507445d16ab5d25929d919f1dc26f148636e24af4bca085745acaa7f3cd50143bb428021c4bc2b04147e414ba1fb7b65a7172d5b215dd09dd283a2ca38afca9aa020f0dfcfbf7b6085ca11609cba5db65c09b818685d9818b02e2afc1c642aec7028d5fddc3328d056c03e6f383c0eb47a87a3ca12782489144aa074114a923851bf599134a1b1c49da5d062410f21a4826d14333333f376dbc60c41a404676adb8b1098867b30606374d47e6cf541fc406b168da87e3453a4f83410572a4d8fadd9ef67c08e1d749ea812b5ff6575fab8e79fd4fe1c53ea020151a5f6af2301d6051a428bfad228e676a775818698c21d4238c492218650814b5d2021a8502114cd3c6536d97c3077bf0f4f562893ab25aaf21d0c09654f69c312d5ab7bc901d6d8d9b04415765d85742fe8076b779b73f5ee8337358b3132c71839468ed7c5b1a341390723d328ee253894cbddb7bb9da693f5402395b2a3393b23ff833f1be54da0f3a4e0a594b2fb628c0f82e8446ed0c15338dac6ee93dce4ea073f0ed498610f9fee6955f361c6051142c30c57fd2f8eabbf35bcc5c6eccbcfb0d1c4e6a3304e86a3e960e017a0ee15b5c9c678ec8b0c31e0e9c4dc3e34848568c6853fe140bd4fe1568d54d973b453a9abeec7f567f767e74a302b5ffb4257eee0c6f42741a1e778aac85519f639be43840f4d6179f89256b235d767e999b83570e5432e46b3bae529cf7155070d2d611e7e855fe8a75796d49cda3c27a5a7d33f0a2523b3333bceb231ecf29211073f0f358a3d4ae7d315e6c15eec0bfe4518b5af8d2408b551d73fa7138e96450b2db2c8428790d08e220001adbee0820bc6f9020a142141418df3051554d86cb105112aa2b85233d6b658b50087a7669b6d4117c8053a35db8c0bba402ec8a9d9d4a0948b3a5d9b4685f6ef6bdae95fc2a01fad54d30137f872f3871995d7d5ede965b71bb8260a5c3016810a163ca12a30030b2796b8b0d520f444185158b213a5c802ad28642ce189941c58c18913522e27826e48c0260819d8149f122ab548d7e582f640f97b88df071fc63bf6f8fc04796a3fc6f831ce1d4ff1786ae9a99bf003c6a1fc17cbf4f8fc04c995ce0ecf8946257384653e3e2449370dc2d1a56db0c5146949926094289b7699222d49d219b1055e9b16e56a31455a92a44d836740f82edfaf186384ef977cbffe2bbc3cc37851d7478f5817df4a13c5181d0bbafbf4e5848388837ca60edda93cefa9aec1b197b15683835ee69a0deee41edce8f49417b7e501e56f5745cd3329f4eb56842e6724d5e0d6db51cbbbb8aac677f6dadb781adfaf83919e317d3ffd2e3de9e1a67af9263d94bd705c6970ada4534b1ad5e256dbd0b2a0293f2b254b7694e069d2a97e28242f6d3ee49b5c5a5eb8ad459eea6f2542d9122017aeab340dae57bda4775a8946f134aabfc47593eee9275cfb34aaa174aa5febb8a8a7149941f9bf5ed94889723a51fae3ee4fe4372e4df2625b3b50420d7e985862ca508d219a10716505332842a2498f15ac070ad4e61405c9158cd0032740088500093c559012f4832a8672d00345ec99021547d715002756f3719ce6e9d46aa90b8444069993d6111a061d8db194b6b608b51f4e9a4518b5fb51a6da6f9384a8f6432088101a7ac6d48a43f81192d7641ede626bae5fedf779c53aefff31159ec250f849dde726abe21c4ff59f9e1221e2aa209eea0f220a2ada27711bb78b6ad515a299a3ef8620a32636d53f2985dd776ae2fbaedcc41994ffe326e0a6e47f2f36d4f98c922f8dd409ebfc4c72f1318e3d2229e0c18c28979bd4014f0947540fe2a713a59e841a69507d3e0a855a2937519e025eafee3726fe723572a0faf4f9353c0b614b2861076a807e999d7224083aeb02f9d06407147ad505f24109f541493fc5c287261501a5ba4049acc8f120c4186324b2ef23ce2688101a1c7af4e811420847eff3fd7a97effe93435d9c8ce4684eb061101f918326912247131afe01cdea022569a27edafed093f682a3465da02445d42f870f194c0cfbfedf761f4cc3b0ff4dcd9cf32bc8babb9748fdd5a8dbd1004484502dd235c8c62c0c0e5c99c0a751b9c2ce8686399946edf3c037de6c651404f7a8fb50507ef9cb979452caeb6d3a4b819441e0cc7c297f6968d44a2999f49473ced9d9784a3e94b2a3993fe78c1ce3782a8757ace3a9fdc9a7d39cdd775dd7155ffe5c157cf97455fef24fabea97b2064fed438e88a7f69dbb41074fed8f8cb8711e606358640c8454e1f6b29fea0df38f8cdb3d1645e99079d6498806fdb0ced7b0bb737e3bf4448878ca0c1a5c55da9ef4819e81af715c4b441ad54fe26ce8543fe58a2021e2293e72830e3bb8a878c9518e88a79ae847a9120162a892826ccabfc4edb2aaf37010d81868851fe41303acd967d3b7490fd818674fe3ba4ec9baef06ca353d2a7a50799b5437c6817c001f4aa9fe1ca5c6e7fdfed7a6c6aff2dddda1c49c47dd0a7b820098c8e2727547a00a4ba280052c38e189239ea8421147e8c00833ac3cc13860a29531f10453132e70d3c9e6e43854be900115ab2dc8b052013294f00942101558519660c209019810c286e374b2715286c9e6d4dd4c18519bd68e7342d1c4922560a9c28ae59303242a60228b263c4424c13314a1a01d80092418134a4653020d946455fb73a0fa65fa697ac6a5f6efcf55172809102423b4d25ebc43f3841146b32e100b88a0c27ba0c8c90b6440c410ae34f194e480063c6244d105122b5e3371c2c5c84917a67612456d1ab57dfb670f191a535da0208a72a85f7c7defa0e99104edba404158a17ef4e2503a4e8c83020521057a7a2f2aad0b140416f5434191edd6402f7dfed1fd1b7e6cffd8c18e5bdedd48ea225b2e7b421708091835d6054212445d20245436889eba4048a0d497ba40412ca90b84a4c97e8dba4041fc505ba80b84044be5d79871c84835342a99b961949de493ac94e82c417d0e193992d25dca28b331fd92e336a6bf06a334e601c3bed0df71aa3f01976c128c8fda9aae3187fefb43798d4697a41bc3d7ffe4894584eece45c09d0c0184336a65327fb70cd0d9e13891cf8383f10425389e931aeac38c7ca83f3f4cfc9b0aa5cc0f3caf082f0931886525dae272c197ebcaae7915f178e51f4ef53b0bf52abba1c1e00825974e0bdaf74c0ef2736800a90409a87ba94aefbf31d8c1f424faa5efcf700080a5b45a5be35b43a3d2efe7225799be148f50d2973e13c0680a0a65110e4670707e902a84b05edce640aa4566651874fdc08ea760178457fff4c0d4de5df7382384104259225d708e46d805e1058558ca114195793010f6857e2086c14f0f2897d5b9f980a900e95b7e06d2b77433941e75066df9357de967a0dfd2ed407afaa56e072743484f7f87d29b7e3d182671a627f1933a234eb81b427afa464a6ffa1b8f86a31f8d5677f321e448e949978c510ad9988b54c28688ae94b296ab7670b203e94dbf43291b627ad20fa15ffab9c1705701d3937e0613e967a01d979e376ef9807ecc53ea60f84bbf1e4908e9b70ef131023a76e0d8d4d70f1bd5615f50fe85b57b0a960cd9b90b22123a27a5108410638cf099998b00e17cc2dcae056915115f5677188b48ec60c799a720c21d3a7044cee11cb85ace9152ca08b92b6a536af7e005e5effd0c92a2d0e4c49c002116b56de0d128d4fe171a1081b77e027d391da10343edfe26b2d682ea50c406223568000397bbbbfba8670d68a6c11a501b3582b208621e5205d55b095d84af83108316c6a0eacf702722b12afec971d536ccd2aa5ec59dad29bd7f5c1275a2929e69b9eaf47ee34feebffbb3442fa9ee1fb7e2910ea291f950ffbd84e9685ae84ea7979356e41376411ae94d9fbd7c73d9c3cce18dae734e5de3385151cf744e12a804eac02510c62c3d3382476c70cb45114ac0f16a702eb0c06b013ed5827eae53fd7fa03ce9f196166e9be3ca7089eadcd46c700b85227ef8f16a700bd48507779ae7d4d2c931885aae252ddda52389e0cecece8eaf761be2399ef2a7e142066df9ac857e0be74ffcb776d0d6b4f84f07755007755007b5d0ee4bc9b5a4bb4b471229a9fe924812492249d4d251d83c2ef8b5d1a951670ceef8f2f2b28963f2f2bde3aa170eb692b02a88040d0c29eec6a8d2e06070f05e822295187150ade96754c6e71f6f6f67cd1c1b83e3f4c2d12beac09d13dc39c19d13dc39c19d13dc39c19da8a451ce43fe1de4cb41f585a39e72b87361817e70e7da9937a606401942d5ffd4ada166419e6f15dce9943f2d35ab8bc03c9a0adc4ee05642f5c7b2a0ac664d41472def30425adee55fde61e09bbec6bb8d1762a333c29e8ddf2d03a6aff1bbc9b01e0d1b1c0f79cabf0667c409ec84d0e88ebc7446d873e998e529ff96ce087bfe1817f49bcdc2993814eec01d38060403668157fca150cf5481ac2b056354187b49efb074bac855cce28f7b7aa4cc5a0bcad3285fa293a4513eb5cf32be9edbebc23012869130f9dbc5c9bfe6e643ca4bca4d6edbf6367d6117b76111b21ae5af711fac521d662b04a351de3b6750c8a344a3301f501c7ac19d2021f81374faa13ed5b746be3fc481df1c751fbd3a9cea4fb9bd828a2470bc1297a3091edc9993d2d3e961f7b950f51dd7f11d5795de67d189c56a56b39ac539150d7cce53fda3f36c0d4ec585aacc392917c485780a67767c04fe4c09e22ee24fdcc7a15c549450e5c72b710ba4030feeb0785a3d433e44d5bd28a859dcc74038cf3825528941714a75066253fe2ff029a2ba3312d5fdba88d8d0287fffae59cd6a56b39ad5ac666d4c03712a8df287429005ab34ab42a139e3e846eb00007983d1601069d4071ae5247e827b98075441f52caa33507529aa7f1315753d8614547a770dc6c67883a1a45fabed478e403feef19c1ea367e43b742143427971451ae5af438f90f77c34fe467ac61f07272767b5d2d1e19e1d8e7b36c69fb9e714b0c16894f715ff2602a3fa3791afef8c9090a40464ebfcd682f667d9c31a39def6479d63cef5101cc1d1d558e4a8211ced6834fad1d5b38b6fe3dd3793bd28db1cdfd5035b0bba4aa24391463556e3e5634fec611eb1f6c727588a2f02f17f318b9e9463f79cba87b9f6e9fa49a3e26a53fd7352ad0cfa9d5675467a21c1e02256255b445c75e178aa75b6c6654973f9fe93137489da2d24ea8543e36d3c14f254ab2091a7b6c6f42721170a72a1159c9aa82727bf06f742174038de0b07e3c4bb705cd53d9dba727ac65970680a89b1287ab13109b563136ad70b12cd49a98d8a4d8f9b0feddfa6afbf38596185383d038ff4ccec2417890479e3cb37ce850cca5ffa6dfb6cdb368e2b2912c521172e5e89adc88a429ee22e8ed1a88e4e6c50175284366e2b64f872f3313fd3823a8f2be14b5c6795a4515d4a9273aad9e55f63141b7f38c8c51adc06210a921fef85a3f1f1a090abd69bd013c281398d8249e08a48b65cb5366cd40f124122679db02c5cd5ddb5eaae8e6bfc76b167638440e111f4bb94d47ecc0afac59ed893034a1b1dc4f1b16c0262050adca9fdb167209c028348258e498d087794803cb049cff4f4cc131d676d8de9fba1898b3d5c742f56159da0810186548ae36edc30997a9cd54513102b4fae55bd5697924b47e35cc8d0348e1c8469fc87aa2fbfef2c57bd74b1a76974dbb18745e71454f2464317ed36c4850c6d4eb198b6f9c0bec439d6f94ea37a6bf76c0df6fdae84f3b84ae2e0e4e4ac563a3ab1e7eb1e316a0e5c73e0fa754fecd9985ea944a3fab1402facbbbed853fb3129e8e72cd63beb370e478e4df16bdda76366ddb703ebbe1e9521c3138ecf01bf4e26345e72703a8dee858b3d1716e8177bae9e961ec00eb2dd9f07d8c1114c90020f80e0841fd58d105940e10315a8f0440f58e0edaf034838ad130c9210018b296419014d01aa225510809f2c5a5580963c013a02070b15c80dc211aad0240862984145c8e3c75675e32406538070841a947184227cc8fab3e6bc09fa7de5cd873741a16f3434407af468d43febd02123c31f6814ff071a4584888b1478036243a3d6877491027d58198502a243870c3870fc0f69140d347c324034d0287e0d346adf7d08196bbc313136ec1e3e188158fd3308b5b8c5d890090b80dd5daebbbb2f64eee66046b213c3e60d7efd09e627a0ce40e8fdef3fdf3b19d69b1d3cc2cfa9bdccf9bb354ce67ffe12fe6e3ff6b751d7db38e43e1d2afccf230782225d6177bd4b9d81d09b87e7c0f57a9bf6ff96b7485726d7d5ada7200bb2dd19c8ee9dcf40e8bd3cfa7b73e0fd6f8b74ddedfc0719a1bb94cc497c2c6a91cb3ad3084cd5634441bcb8c8e580f1a6a4f4e71846d53f6a71f3d1cdb0ef62060876a8de78375effc4b823d8d323d9afa75c8a280e5b548b785d18aeff68fc7153e3dbf8c7c316810440df48a3ae045d274b29a50ffe1c66272f2de3d6c3e694b32394228a58cde92a940c6f4d11ae407e07949dea97dd27531b761f4d8e5e21201d9c8aaa0b14032200e908d505d259d598ba403a3bb5477fe69bf7d0af470fedff2090abcab88c3fedbac34f5eb9936954db802e500cb87802ec215b5739813f82db0c394e70a0a92028e2d51f556fbcd1c32d86eb71e033e28fb823a3ffc1090e34b588c3207fdc54f8a38f079721ec8d3aded4c804a311e7e47ac8e51003ec6288b523c9bbd1436e48e378a3eec80fd4db8521012e04fb1197d3de91f93f4c0feb7861880f9dbc13e8cb83dfc8f62c3c47a07b8514586a7cff18e0ec7651bd51c048853f63f5c9fb02771fbcae187688407ccf5874af90028cde80dc54f8de7d2de74b48813881d8c18eebcdc55d946d0c10723f73c7fdbc35646e2711bac31af48023001bc8d0c83cea7bd7608644e601174ce8f1e2df78908319028d00c08a07ffc6cb22474f45a05c278bb20cecc98fab2a723c1c58bcc8714700ad3c79c60fce18f22007001fbc2c42bfd80956245979905b2b78e06d8eee864208414588a252a8746c1756410c99aa1100000050001315000028100a07c482d17844d2c4ed0314000e83a84a60469a0964518ec3280a420619630c00040043440446686858018840d1844c6082ea02022d409ebe54034d58745357fad362b5015a53cd6f0fc23e8c2d39303c1d04066031c6b3c873cf475e0238fba748846c7b5a22fd27edcc9b3c856f067b8891a39958e3359d770e8a62338dfa1411318f141250eb14623a3908fa436b299c2e8a70399c62373aa5ef5e80466e20b1254bc72fcf3dc7569c96fdb401b60ea2471f7310a7dca816942cd51ac6f9f5c1c35e6ac0f83f67a52e01a5dc363f7e3480849eab3bbed8e3a415c42b4c8fe1551cbe26b00f4d57c66ea110a6cd01e0339d88a25a27455298338414c696801e74da21a6d06c7b45a8c4fa78efe2d83246e85664165da043d1ee28dda2a61548ff96018c7216af96b6159d43d18c1552860cb45a3a867d275cf8445fc2424b0cbd54fba03881a6d10b24882ae505228a3edf4a4106885f068e9c9f6241f98e6665b0e9d9665bbe233ecf2cdd72e193af14c1cfc89eccbfe8d59a8ab901166e0d098aec31041f848fd8b9d539aa6b67820ad384030e531202f74b0186dab111f1c8d44068904032eda1b67f6c302d4b59d1e52c112fec87605dee801d2ed6335a2337fac47f57e2d30ac0e1f27381107308409e6241f4d78f8acc82b849c298dce4e95ce44ac19923781f331946cf80399453c8b71232587c4e1c79a8846427921542e9806c4860006b911976760c7939002af36deefb96a7b209ad476e4e9ef64895d39c6f10a3a85fe25f93dee7139814517e8fbedd283d72f437783001a50d760813ed6077b4011447817e291f250d9ce011277a6942ece6cb7e64adad18d43273ff68b6e6659356a9515a4dbafa0e40deff7dd772f0095034792ac5d82c4cf54c8b4ec90e59551d4d5f04a553b018441c263ccca4ebadf984e239713d3e259d0b10a1ac9f991cbd0a3f21e4123b18dd4a333e24258f156eb13bcb39f531c6e533f8b174330b0cb02878283b63dfbb10ad9eabdd4f937535db10660c7bad73c37597221d8cee319e78d42c4e40fe712749e7884b06c282a02b049f4d8558b7f64661a833f94d63442ec09e30d63a22aade43c574beb60c0d15e262b63b8316684dfb20f2b17a92bfeacf7e94c9de75bd1377f1686b5bd382bb2eb09526bbc4843e558d1c7f5d9339c69a1c03b9a7a19e37ecb02c3b65568a34ad2c6a5d1e3216737dfe44402369207598ab49b54e24ec1477b31db7ea6b5fb5d57749303c16d5255d5ffc8baf72c901e418e9c608492a09e41dcdd71dedfc575e79e76b66d9aebc8e5433650c865328a6241b000e05759d5f025423bb08f89ecdd28a6f05e86a21270c1c57064f0bd5a3eb8af8e3cde5e705ef08583e477003df49cada0fecff40d2be3722ee4b42ef6783082d12e2669142fba8b663e9aebeaf7b5679ac052978b161f5fab0afb223588cc7437f9d0fab4b2450e6bfc8901ae7d817aa9e467ae9c57569fc2f7909251ac5ebed22d774714051947947b9dcaa1a0ca068a81779cec19ec4002263469fad8b8520a5d3faf632bd176f418f999507f38db92d0a57e28ee5673266891f506e2635808be8631a8f00b7f2701d2e6aa778d3975b1e3a5c03e0fefc32a84af8155ccdfabfee33374dd4f1b8c9b301896714522a0b82c3dcd4e0878743e24851893a4ef501428bb8a2e7fed1738d0365ee7a73d2104ac86c5d9c8fdb9493ea1571bfbd01f70e4bb0a9e1ad2da63389d35811498eeb2bd4a4467ba9b9a7fd5e1b3a8042247cd0464747481988abede07fcf61203ceaa85449f00cb7c2bea10474339630348523846acb24310605af4cde4a5b7eee30f0ba0c9d9f9255c895618e5212c8f0707d8c385a28022c3667730483561b4cb1a2199e4cde85415bd8c6c689fd9c525171740421944ceda388114fbee740ecd387d34e78037db499deb2dd6eb19cb65d20042f9128ec4c76ba34fb90f67f86753e3a0c21756a168f3079865e0565683a2032dbe3dee9a38bb774e0a1ec582d9d1616b603f1fe1041336e10fa585cf485c89cf6474da810e98805a892ca83b2eddf05000a698a7b8e16a8efd3b4785b82e0727ebd219a2508a91d06e2bd7ad55d3f59978896f46bf3a293bbdf7d9fb59306ae163db7f9e933409563864ba3b4aa9829955e33a39d429a5163c60e2718a1bae81b36517e71e525b8a7dfd7dda020f8d4179817f0976cba0d97fc9d6d062385be9f7830d9bcec6f5fc41726a3af2583bfce106c591b5c4315dabf1de95962f998b444c2ee8db191c06ae7013a4884d8ac714ded023674550352f7425f133fe05a0e0e68203382b628c493ba7abadcf8428bf13fbba10816f91116f93dc98003446e710c8c4c3630a131103ae851c0d1db9ba30fe85900dc39dc4da2402d49c8ddab8d1790eb2de43d3352cad3e124de2ee6406d767d906851c4a0ea05c3007b7edd9d6f05f1b2695206b059594e887bc60dc19b0cb85948af9eb7f4697d7ed014386bce191b3913211af8978c6389e1eee3ba98eb2d6c6298ef3e5ca38003002e27f4e3e76379952832a335e909ba2edaf091cc30bf33a36d41d40c8341eae9fee7b6f134a1ce902bbcc8414223c9dc85ee5541ce9214c60d727e0d167a484f37d99ac18cedf9f1b3738f06cc175267fbef3f44235730104845ea50ad5e6957c98625d12d04ab1405f31a918b88aafcea59551810023509eb87635bf15902f840c1c0e74530d884f4d9f34806f868c4692385afe910ad4e40e9b0337acc64ad61137135397a20c81144715a58e39ac55d5460a8d063327c819ecd00c91e959009ed3742430ae9a8a5ddb7f3f25b6d496827b36ffea4740319cbeb2c8f0256d400baa1ab3978804a4aaea9b3124449a80d3206b417b59f819103f0debfc283615564f14c75c3745627c9d3c06bac6cf00e28e9b43f243d40a196bbcedcd972c94f3f58f8cb4204443a5d748d579a682fb4f68d58b7b9dc924761075f66441d9a6cba6cb23ab8966b96c6a349501cfda5879b643787497a819e88c5ea11b13bdd6ce6a0d5671d8159dfba78fd058e758a7204d225b8023398c43b0bd952c758909974bccf22606de230733bfed0fdcf4ae0065c93bcef03671bbd8b7d1d4d664bd0e2d5bdce55a2c119965ed978dd0d75332210be6b4809aec3873a36e62c925fc25342e5eb8f9131c16ef8a96ee26045baa240efcc2d46798bf457e228ccbede5e0bf2805b0f8be0dbe9e27e5e30746b64894e3fb42a4b6e0bf6e3662578975ebc1f1650a5290ab671daa44282ac40baa9f478acebcfd67d4b4e6411854c90d93fca850627ce5ebd5eb757a5570624d8d6ca5baac434812d63b1626125789cd5ead5f42b64d45f512960b9b6b6a93813dcbe528728b0b6d315ec6d04bb18bc5f3fcfe260f17db69571d7282d84c2e25d9eba403d2505bd4100dfc278eaa5161cf7b0b7ae2e1ed69ebda7f919e5155e6514b18841172663ddd19514cc8b3b0729acae220411f105bb8ecedbdfdd664be03e6cfe57b0397fca7d12daa3617978f8d9e8ada20464f53decffe217e7def8b6a1138e0dcc9e35314d3c81fb9366fdbfe7b0e55aa9a3c2b11a5a3dcf2463ab6beba2704770e158eae27723b0fb7d90c3467224ea3bc7ee7dbd755da30f7b19499c9abff4750d2c836e16800d43b7f4186b93f19a96f85676bd910308c889a91c265fcd1af295893804acaa6f3d09f714ae1c8eeaa9e5cf8927f1385fb9f7f5f9e46800a6afb88875f9a0d71646790a416d3507f0ad919817bcefb531f5383f3434929c8266cc24e6409a74c467109b90f0b4b4756f8c1939b67b61c62ab5ce54f06ff44f48ad921c213177c25c63763292d1e20514f9bc0b330f148bf2d4d4f96a736044c5b4c8c19abdce88228d40948c6e773cb36caf09881ae4904a9be29daa02b644f25e53f0cb0e66c70c8b0088cc28ed9f5bf64e40ec3d1f3fbbd42b4f1393425bd2cb01c7cfce0f1bba09f26fa96017e1b3bafb43f9cb06e8a54267fbd15bbd60ef3619da0a0057c50f182f34f21ddc361f25235258eb00e98851e4fb174aca72dffbcb92155540d4fc2a090fde3c907bd377da464b11274f410115f6d61321ff7e0a9c532887becf4d059895159e603e1eb6c4ba106ef0636a2f74cd301257b41e4f2844d913b08e299db2ad6ba1951fb02a7499d1b639379d32755a7bd0b4a338d8629afb468f69e91ba9e1b0140b908f74e68a51040836d83f14bdb0a33a01841cca8154b4efd05c9b90f4c1d0e1bec4a61aba7f96cd4c3ab13129ba22baa5fee6e601a8c2c9e43b330c584929b7b5d8729725c7e1cee9153f8c05211aa92990cd81de13514c26cd031a8f217b289ccc837d5e81aab2d592092939c40c5e31d31241cde182698439c5fe92f77f59ffca9cc0480e566731bfb05c067bdedc54ff90d957bda4afd8a88723338173bf851d66de8dd5bf495720cadff02aeff42d752db118580b4b131f147c1584460015c88c9b02c874923ce8a2e6fe8fe5efc1b59a49d1c0e2d9f0e187d0db446937cb337d5abb08e661d2e24e08ea84e5f5cf60a36c84ba9d49e25840ea41bd4b184c3ea7f54c23cfc2cbdfd76d77292a5b93cd15092c2a5ee3186002e97067ca40532b4f9ff46d9e22066ebbf6916a6f9c2e91db2eb82cb6814d060bd5e8c9f5050911fb3b77e00418c7a5cb4610b1b0e0a9b9a8f7cc44e9cd614d40c2584c2b834817b4832a22e8f37d655b9bf57f5c730b73783a882895fc5640da9849c5c45416a96405d39a67693549c9dd3c98188695c49de60dd0742e30dde1ad670ed6d5f36756b0304191841cddb359984e47e1cb7238862093a8ec41a7728a376e9432487b7d5357a376febcb479a3b05e0ba9340f5161d73a6379e5ee8a74dbfde138fb6a51bf6d3b377e2c7b018a308803ae5ba4600defed6528d14ac51b7ef91b4d87d734b653838818fc41040eebec0dd5e6d25cee222b97e595edf675ed3499290369a51971f0ccb552e652d0670ac27892a02ea65f10dedebbb239b53e2f912f3d91e54826aeabe031407797935d11d731d52c5fc100b34020a34d42b49730ca2b54473866963d7dcb8baa89d19296d210747aeba582d8b83c3e39f289645501179b144cfbbc54c36a97535f176c622242ea1f553662077dd435b5fd172eb81c6e63c8558dd60185dab2e18b78160ef4c7fc29dad34d3278b9963ac5829d8c3614b1b50b1cba6b18649bd0b9f0e833ad68f6d45a050b2e432194cd7da841008814a220060be46fcfcecbce0bb7ce407f64c2d580f45a32de820aa066273b4c8a1c9e7f83061f4b5ee6d3c565eacb5fd6fc2d0b8f3e9be4cd4a85e47c86ee0df0950dfd9bfaab37472fdd0f17e6a07c3dd49c554c4e802f452c4ff1c9a88e45419230f0a90733945b98612e7fbc3e6ed8ff32cebb32b6db655166f3f97993c72dcd7ea2c9d8f0ba2834f3fda29092496fe68e512fe341d695c721b3fa29f7163177ededdb8673b10c13a3ec6caf81dbfdec3552dbc0752e83d93ffd0855d316631452295194e292543a544e4d1b3954c5c9a4eb8fd6f8e96c7cf3e0ef17d1ce9b85bb33b4cff6a2adcb582919cb2ba9ac835520c33b5e5870374892384ef65b291fc10903323754a25fed881435c66d32b26c834545d8217f4efe4c18a12a54cb15c20f2670bf8ba2d4cec6e7309d47d63bd10b436ac83316649ecb52a9bed0c9477658d1f2262d8ac491e05478448400f476a6bd02a1ac72cd7a60babde03e82ef7257bda01490ccc5346ee98e1f6592a3a4d592e9caa1f6a0cee72458d566d21d4e6bb528d85b5f8bd01f452ee57f138cee2da0b226b338a63e945c51dca8119f28d0fe60b2bfbf0c7c5078053e50d090d8d591ae99f437fbce110ccd41f6767ef6e689863df5209fb3b65257ce910225d02e6d3446d8ee0b837133457da2308e2e6c4b18b677de4e23710a30dd0f2221b6bce05f9bc6c095f8a877d22d3bed865d9c7f2e779b2994b8beb5815bd2b928b8902dec96a58092c5123a56bda57ddac06ee5d2e2270ad9db4c6292cba152b47d44631b1e85462007ad041ba6895be943ff26dab75b13f1f1d9c94d7e8aa507c8606a15fa13fedee1102c30116a75e1b0b5843014e9cc677f2bc79227ecafc5bbf217f319c22fc212d9c97a99dee457e2b536308f0e437308882f469954879814142473d36c60bc0ee855777062b6ae77cba31744a856778e98955a2f215dc07f62e55baa24f2de0997a793fcccbf4ac604115d092e2a8996cf3a797241014fe958fc78ea1b714aa7fc3b6766ded6af3894e0c7189aabca6cfd855eee04abe631cb16a33a5dd7aebcd697bec93783ad0fa4041026ccbf24de7b523eaf627e6938487f32d47cf87698e1e4b4b2b7a8fc090a3193ffcf96687ad2716376694e7bd2f61d06acb256f90fa2ac103943270eaf634255b7437e93aab6015fec675f0c60efe718efbbabe881083996108459dd11b7451c57e4987367d57505cb89aeb85aa7ea82a1e32f51da99a2acc0668c9346467c61180bf0ec90fffad4724ca9651a36f0b34225acfe775c6c7c925256b0259bc3933714caad70a08dfa2bdb42b359d098fd4845c57e0422f969ee728b693ed58592cef420f842496d36d38fd4a0d7fa5769834ebd32f1f9360916dc3fd660e34b18ce0c5325b8b4b2347dcace0fa8c413255f353c2dad6c276904281f2ed62d454060c09d9a9e38800581e16e57713eb7a4efb7755c15307940760a3925db2d0e1157221dd4ced4fd9c117f3d304beeb65d67e222cdca00528f9f1fd20f69023620f04b25b232ff45b166850737b3301944313c7696b7c24d1a4b77adf16a4dc82c13fbe0df9867664830c403da5e22dda52fe1d3c3fe1e16bb678dda9a58cf0d9c82ddbe2e017a06e9a24a561a6139c2c95fd5624fd8e17e1b10ed001e6ee6f5d5d9aa671ec0f104a07cdc559e6071da53c47566e91d5588166ad1723cd32217e4217af67095905167dd5dd258e3318da1f35807665d542a685c85a95d26fe470e7f03609afdad55c7e9eeb544eb5b52702ba7f3e4af67f4000fda712768ffb83e7f5e3c414add405f354e6997558bea20b683d368d950ce3ff99c43a8d1fe410b521cbf7529b378735ac94f94672c2587c6a4b431fbe8c22179259d49f11aecee45b77003c8dbccf8eb34fc02e856926ece54ccf0be6229d43e1406fb054851099207ef31f7a994d56708fc6facdf7b1fc18acf0265af540d08946095103a473a9fbc350ec803703cf6392a626ae04968e5b89441a3f6d0f0d8bff767ca4e7d5baf1fbacbd2fd4a5d4c9dec158c465d0d582a58a221d8a04099e3324531e88490a2abfd369486825fa75af1e5b776cf7ef6b0857946063e35433ef2838341a9299488eac6ce80a83f880d51e2f4c56d2b31c9334b0e3531de1f9ca05a334e901e1091625a6d0f8c3718bd2bd0a64a0633fe54d39bc0e9efcfd89fe6c6cd9ae04ae42c050a0afabd35cccb6aa15b2bfbd68a601788c557f106c41f685ba8c26db59a18818ae350e375ebfb2a176b7b048fae1071817da926b5886c55659e26ca5d654a4a95dae2986d855f2c5c578d3b82b19655f139c335c98b5f663828e8c57174a96f914314d52c584392739d4de8b0b988e752dc3b0ddda4b45ceeca924fb1b3b6a565a09fb97b1084f2ca231a58faee7c88f75ecce6a0b130edfcdec0d63a73f481349d64d192c9f7098364b8dd54701d3b7c9ce5a21785d6aff941c60b6f946b3f7743cfe8b7e15fea30d23280ead5d9378bb5e52b19aa71d0c3e4143e58fd8cf7ea3c56567c77c76e61fe76f2d061721effc3db9dc64266b5757c8eecdfc56ffb3faf5921ba6c1ff89282de6cffe1e21d1691f2c65e3e395605dfbbeb387814335706f8b05a1b4e2628d78078b504b4e162d02eac47831782464a4c744f9ac4f1eb67bbbc8c1592befb09f2eb12201c84a1397b2ab9067e33ce10b4c0fcc23df94fd1a5055d96075a92ea153502c0770652117f3f3601779916fe6b144f498fad06f74edaaf5983d4ae5242c99aa23ff7ab8d468af3eff10c38cf01d91c603006374cce547eaa0a44bf867b6dc7b65cfb26c840898f15caf5ff9887649e396278bffe06253b54c6bc7a08da892ff4e4bcfe1f5c76f1970c745a191c965e2e5ff5c0c145b2427e7db071dd8ce998a97c1c968f5e29e3ff657aeaad9d30b269753fdb87ddbcec0fb43a64f9f20869f9337e3276a23c0ec6aa1f863dda750e890f27d4e6cc118883be03d3fe45ba973660e328e68d7560df61cce3319db652e983b2765ec65881215718b7cbfce896d40997e52dfc45566a75791470ea0fc23101ec93907aeb6da3d7d58cc72e36cf8a9dfe49747365c0f909333aec66ae90b725d69e7d07bef1d8cbca9312662e21bbc7cee12e903a7cacd345958371456c0c59d5f0024cd77c516a9d67b7c33210e945b2785952644e9ddc9b620710e36b940dc249f7e3ed48afb7759d0c5db291417bf30d7ba83b411474494f7df9291dfb95f0d0f3807762945749bf7c93e5c3bd4c7d079484525746d10618ad3046c585362c5ab45b5852269a184bcd5c6e10c456b03b5b2ad2587d8cf7732cadb2af920503ef6e8ab8386c7ba5c64cd5c08d51c2fd4ad691a45bbf94d04701737467718a503b86b13e3c61edd1b2eec2e2922080a832f238d5470b05d5d25205a64f94eef611a9c7262184334685dc70039f8db599d7d29aec9b7597698f4b4d6ba5b0ac24b1b086fe4e40119dc533185b0c7c285abec0bba7a75e8616d37bc18d5ff683af9a9ff3b53fc827d644791ef762deb0d75a75afb18e32d014e6bb81c53876d13a49cab46c4b1ee534f4ae4aa6cb55f46edca4cb4fdf01853be92f39e7f270654f735533db543da61c4f5794d52d21ebbb172d54aaa03a7213eb0e6eeed7acd94a0a79e98d055b191d5ecd52a816e539bd66dfcc9d6aa658f4c312a6795169e7b7dc1e3d69f874ef355cd6d40c9867adeabee48d1246f5bc48e7e2707da1123233239c977a8cfafeb17e30661e6ec69fe7762f42dc19131f19a46573c8bde206a9aa83cbb44d4ee1d98517c101afc55aef02378bce9b5ba14d127ebe12236fd02b1d90f4b5b522f6c8af902a24f1cf0976a8a2b04a9118f780ae1e442bc2d6e949bb7976ff52e15aade4cef9312f62e3e8b735cd975428fdc75c5018f6acf0949e97febad94525304a6975e8dd57a574588e231cc7dd57b644cdde8cf4323f4a4591ef4c13881d5255f0cef33c3db69c99a5a7b16be7415d2d6baf27b1ceaa104d6fdb0693d251bdb456d707177e784f38d71716901191132a1d18a97b02a7e2f6fcc5b6004a3e183e2764ec2acc9333fa7fe8fe257db0361daf40e70d3e3347acc1735a6afe51ef4acd12fbf2330f594068d95e2c27205d450ac396d1767651759eb393a7042e5641dff5faca186ee3ab77b38fe11fe260415003f0532db34e8a207034101402bc68e4db1da0e54793c133630e9951cdd4da005b38916263b07ee4b175371def814474fa1bf4abd58b702125f606979bd5ee151cc8181bcd1b37d5ea05709062d7b8e9780fe4d1a931117ad4f4225ce4b1eb6e38de13099d16f4ac7debf63bb33eb6213a1dfef43f3cfbdfce8babd6e1f5677e070dbfc69988652f00da66d223d79cdd29b2ca48b4d218fbdc48bca0e8ecaff6cd38febeb042456600d676490799712d3aa462d2958690415aabd949e0e92762eef44ec3e9a299d65a6ff106b3e7659d9ed107909cfa80a7c8617e8d95c34cf5f0086c9ae2a97b10edfbc742dfb36bda8a4a7661c2894c0afda390f881e47a4f40f707e3788d246b1e92e0492d852ba94bb5f961f5c53d99f107786344f42676da071773fe001b46756b53179a863a958e58e38a6e56dea9c21b3cb99dfc96be9187209832d1696b6a6cc0f5ff79469ffba9812e30d4ffff63d9460f50a9618de288fe0488e863ffd38bca9eefc43c013cf48d82b1358e2b280de0eb4fe8a19d327efe5172b6900b2ed46f6373487eddec5074b05e57053c17f153da17f0f01d65cd1a0b1aaaeb2d2704205a891940eb57401f8327a3d11de190c8fcf4bccb645a16b4871142a0980a03773a2963b43167a9be641aa53b6ea624467c909c295cbb9e4c933d993dca4d3b06b2924c9c7d3511fd8dd527b42d131d94c82e5e474c548ca647d4aa8cf56f62a3aad6cfe4a3e54be7d2a8fcebf6a8fafacf6386e4187a014c63d0b9824cca85dfa4d58d8534ca9b5f695c2f59fde749ab8621556863b596a99916d37adbff92deea35a5f76662b9bdc434dd40657c86afca04c5f4134e339b508cf916f63be1ec4f33a2fb2fd57ec6687f2370eb8f3c918d0dfe177eea69975997f8d87fbe7fa505b31ec69af911b2d37d1c02130c5282e061a75ffdfc606aa1bd08c04a361dc4dcf14d78f8c395a5d6a1b0c92c7f530f777cb332afe5274c567fa8f2d83cf5cd8c5ba27fc1f813c4321ba1497bc854e29c4f960af357337880db53649fca90e2be3be80c39a6b85908a5902822ad86b9a8fb8bdc631634379f1dc4ade1198315d7651cd4f57eb4b0f3ba4adcd0b2d8f27ed0f1ad08a9c734f3c74112dc49d7cd2b2eaac4cab0471695f62cbccb764f15e5edae7f515821f93e7c069f0713c91e44eff639ed6fa5d4fb9ed6d7b776287533c46d9ff04d24935bda7bb35b8230c2551ad27c199aba86d3b1108928acde38740bee6fd7412d34121ab562c8199500c6f36e35ccc0886cc87d69cc1d60c78afbfbc6bf3f156d8dc15fb11388be42a05622500bd9ed91359ea805cd808ac2fc93699457960187e1fdaaa85ec169ea0fc57f81bda4a12f6c036324d27d967fd362de0817135477d644217737652ee66ab099d1da53401af48caa80c8b9cde42c5fec205c28620e754193f0c94ac3c767619fcbe03a5f87a183a1e5822d8bc2fd06e847c0841340d0d3b630119003faf320c9f767e4814477f1163f8661a7ddc88d7d470e7de36d710fcaea064bcb6b8de9a21b1168eb5b9a88b458663ee584785f6fc883b1e52d6f0c983e9cca58e7fa03b8ce4d8f244118b0f21306560836804156489a60cea71542e2a2bcb9c3694bf5430d0a23cbb62534009f5081f596c5f3fb409b349a780d1b8af53006b8e20101b0b7bc50d4f905f4b3e4122a8de0cf380aec61209a09c5d1872ff81c98b688270ee2001d0b400f1a83542486f2d3acc4fd4b969096c7e8ea7a4a5f4502c91812284f84fe8b305b9d6a671163f0c2806f5a5e58ecd8a791b8a1d2c4df8cd0b79d9e11145dfe3dce4ef856394ae5f061e1d0e7c4d7d68e44a07df7a76eeea7a0a13a88aa269d339d90ec4828386510f61fb2e8b7a6be3756f73b405026048748d4058e48d22e41c708abb60a0aa46acb227909b889eb658cef38dbb06f3b824311df2f11f1180d9928b2618f3780dac5132947ab2ef9770cdf1dd606e68028a84afe4dcd710e283b1cfee9f892d4d5a4530fb43ab44850e15fc853d4b846f0e5586d22df45acab36edb09248e77b27f6204478dc496431514511d82c0e624b559f9053ae132b87c18b13b8425483d0b3bbe17f4e6aaa284b088b6794dfcee2f6499f1fbe6d7e9949da6fcd1029a6a426a3e23387dbc4cf1e222d9e89249b4dc0e7cb1999aaa2065ed470593e1ab4b45b64cc3e4d6d24e0386d5e07d873959bbebcc212ca94c66565172844335beb0daebbbd80522725458ee5813a745ab56951bdfca8502eab28756c3ae93cb956b05e4f6f53e57d4c3807fe434d8c38119ee5692a7cca5efb294dd047497fbaee69ba68a70aa8b50b706d1685ff03a0827e930933edcbe2595f1ef62c39de60f44e14ea27454bf1c94bfc989dd392b79092900a23e2a9e42fc7a98d2b83290f261a4d37a0a1a5ebcdfd930a2af71d20fd14e3af0c5cbf3e599462c882fddbcb2867efc908a0b6f5a5014916f25e809ecc7718c662ce7cc4ea738e00e74ca589d95400ab709b21e5c5401bca987c149e7ec536df76075eccd50da9c09568e73dd08b29a9ee6665ecc75d395e3f03cd79953c8e21d7d5219784c7db781d31ea041ea48228170c49c3338cc0946102f1ca261623fa3f7b7f23a57b0be5432ebcbf8b30ed34ca4027e501e849206ac1abdf0e9bf849882dcf04f6227096c42276e7bf063377cfeb5b20db6f3ae01b0c07ff9b124e6bf3dd6e4f7292461950e7e3a2cb0f1254b19ac9dfd7aa60bcbd892d3d23d27aaeb452d11e7a75971d7a8678bd0d21cb8f1eac1eca47e08c58b8e886bf99f42ae1e3fd6def36af316a2bcdf52d9e3d07e12c9b077f093ae574a4e0ac30770030dd26b213e5bec1ad75009476df194fba06c09c5f7bb8243150363b9eff2a9ceb97a92346d5cc9ef242a94e24b25ef47a20750415e0ec690f9556891133e09ea6b6ff4e9e11dc1f070496a6a5c23a578618514ba9614f217ecef20c8e3f75c9949bef18ae6909e6990171abc600a3180d65e0c5e39f6c9a0f7f01842650b0f59e19379df1a5e42c93c19a784d0d00d230be48fc976babd9026f3f14229743a9720d18450227036b3c05287ee311efed39ea7fae6f34932a56f38cc35d482542c1ee5df83bb0395e40d7f6674940dac1b30aa6cec2762fe4cefcd4ae91086d350b1e6ff0da61564e51d5325e8f0cf2e5714666ee3b6b406737ad009064e4333645dd3ce9ac0fd2c2b4519ce6f7e18a4de100f9e7a574be983455ac138a9f3dbbb27c134ed601e5b7dc3e858e6dba1a53b6886f20ad5b9191ac157af0edfdb42a4ebe5c389378d5b88541cb021a86119e6e9e4096fc7658e9114a6e526ea5344b1ee36ea573b4347ecb139584eebf07b88a2baadbde80699da4f73aea58921f9113d1fd3fe5a808367481151dcf688ab1cbe015a4ff21256d0502887309794d1cb6ea34843cdb81aa63c6f6cc92d33ba6c2c5da0385800cbfef488a7a4487d311cb90c48575767afeee433ea7eace607ea27d1e62a22c10378bbe2574acd5cc1bd3e8bc922bf2b79a790a836beaf0ce3f53952de543d706ad2af0e68cf5394c076c2d6e44bed2b5a22a9a0bd486a6713fcea6973cec86cfa32c2c0c0d1047fbe4ecfd719831a272d5983c2a0b9a28b2674e14d75b6e6015c309a9dce388f81b0d1a7efae4c406167f16e43e1b88cba74f2f9015837a77d620f74768a9977deb50ac41c275f3d4616e89d99aeb19ce652835a1950b4014abc7e6c7a48e534cb907d2561727cd750f1f318a611d98d1c0a1097f029e9a5232aa00fc98e00dc1b4e14186fb7310ae8b309b444e3d35f2a84db883893ba62318fb103fca2bafea65811b47e318638444ec59d6906edd815f5fb28e57b586e08266cd098f8dcd9dd6bfd5ada534270ce720c1a5f258cd09339ad2f0b4e17bd968045addc8b1e25f43f5b2255447f0e776a4514658d27d90d01463bc24f3dcc14c699cfcef3b005fcad9d56302dad62fb52edcd2f8bcba1cfdc48bf1c94b888160355b9b3672af0215a6d2de4573f96a414423383aa4db86b879c4fb45e7cf2e30467fa695d707ab5e1d6dd4750664c0f5fdfbe186801211df7acae7fc396c6eb578759ddfe039a73f6f33aa026331d8fdf2694a8a7b2573ed70d68b94041a62d571134740acc92e7085a190951617b733cefc0834b4ee8586e80b070e20e7a3540302133992f625e952a69790101f2ce12a62267197c2d4fa0e6998f71f790dabda344cf75446f3ee38714676ad0f61209a33afdf6f98c890e90132769f24a07925a51af1f670ff8264b2a8118bddbcb47dffcbe17318ea8af640db50502fd5e9fcc18d8c37bf69b7c92cec468bb5bf5e4d6c067d8819ad943d8474439b6b8ac39b52dfc4582b9588c5ab2749fea3bddb8b5719e9ad8bf9e75f9d8b90b1d1ab8f6b7b059580914ae3fc399b4de1106fff3afad977c6fb3d537fefbb202e322149d61c304bc287c32f10d3e31cdfbf8e5227d577f6739bd89ae333e8da526fdefaccb38f61d2688eba67b334d33beba0b78bcb8c7cde406f9e869405988fff3abc6629e0fc6816d141d33745dd56f259f1646c955f0c2f7d3c40b106fb0732598861bc1cfc348369b9149be32037e2845c7d8e2ba6b5a8f476baaa1d3a0d019dde406cd2b15b029f30aecc97c8e5530860109941e4be3999f4d1826889e4c15f127da33b599ae99b148891cce3476f3d756ecba46d670c0debf7c796c00e6b0691533cc5209c91459b08459ebb379ae1aa05b36f5b4b5d2abec21f9eda4ccdf2ea315140a9990e2fca31c11f2079150ab7dd7cd6b0f7d31bbb0efb376387919ec5b33cb61cf7c27bc8e9554c8e5afbf03fc26dbfa164bac5fb4e065da56b99856efc7aa843999971eb0111f732739373063fe3c7eac5d28cd6510e10712d287ddf20594ca3db099eca774d0034dd24e96d08eb5d626c99f597df2ae4d2bfa06fecea33afe58eedff8c210a4167d24fe3f1cad6a458f52526c259bf04b8605a7eb3b93abe052158a5a3d6e91cf03184513cdc9c585db81cc0361c5c36496137f93bc1d49ae569a4c4080e3187bc84c4697972281fe93619c951e468ce1c8dd2cfb53401b0cf6b4627ecbbfb70d0ae2082e3931e5ed33da13ec0a7fb495653d90d2221b74c1e1793067951cfbc11cd212e7419a74ec20c56ccdd7b72bcd2edef93a8b405581c268060bd8127e22ba821186cb79752887b892077268a667763d67d21b33cb850b39897ede43084a8794ef6349b9d92c8a8a7e40b816afb5403f8fbb6260441d1edd0bcc876cfa06ac1ec9320eb2fd322a2fea1574be4d3e277841db91881a768b6c9feb59d6be426de8ab6c3a654cb9584be59544a48e694f3aef114de15be15050c6cdb23bb3f9ca3353157ccaba489adfd0a0161e4bd5442568e146b313cfd583a82b80cefede0ae16d1d68753db2eeb09cd2a2432d44494e50f390b5fc39f410129cd93d9a7245e05a327e1f998eba3b6ca54e1f4884a3fbbcbc8a9b0e4901a570a9f937ff5b5716b00ec1f24864c72969bf1c8200c8e63b04eb8f940e5d22f561009843dd5235cfe658e6fea17f7a7431ee3d9d8c7150fc4810e1cd0fa5850f016b255f042816bcf2e674290cf0447035b503cbe83b7d6397378bce81b4ed57e085382bd297fc4b816e09076361113c337ca44390664af1c8d8b49beb811c2bfb8b9d1811c51c42c3f067f72957213c51ca7d229f10af8fa77870c4ff4634882eaafc8c82b326ed73e31f0e1ecb03c11fe158c01635f3cae37ba0b7f823d35468de2f225da424533b4e6c4b4afed998137402882402db3446a36ff837b7663877bb6c9210585de262997545ccf10e5bc9c92546e11937f8822130424d818a7f02efb7ea0a60504ae6d4076cd51aa88ce106b2069b60691f425ca845e04d98cd407238e2ceed0a5be9e1abb8d730c8421095b1086991d16295c89787495124c52f5a8a0171d645a20026729a6508c037104f4f88dfda78abf01187707d5f7d8e82db89094b24ec39d4b65a9bd8b805ec09057260a6deb332f22ab51a45d9e61289e315b6b12e380c07e0cac34045c6defb7fc78b05625f16b47645caaa9b6ed1ffe2d5ff44aa1db091f822ef5ed15ac93a30c2fd7e34e247aeb79c421cf80f50bfbd1b0c32f4ca54c22df131b748608c303f298e9edcbde30e401d05d0dbad63449fa453ec129d2bf685c7d75cbccb376f6d3138bac2474e92a7c727dedaa4f0257695ab130b6ae5ea7d347f96198c98f8b5f0db2c00d37e4051971abfbba76c23a6f92dfc0e94c06fe565b3fe2441c99c6268e92b6443da027e526b94a664a8f153ed15b6612bfc5aea45f9541c91bf49523be592ab37556c5016cae8f3aa8e33b71ad23dd4dfe5157991a476be265e7d235ffb474888411b39ce551968519ebe8bcbb23bd45e995eaa3ca905838134c90436079361580d88e1337de2322ea7272066a2277b287c404459d11a8909e1bd1118ecefe10397e411839b487f9fe7f7d492f937f7f0fcd1d4a80367efa8610c3272e97c014c1b91e6829f84b4da3abd6560d20da82561387cf256e1343d5063cfdcd594ffba0c24413b246b195b16f73e230d4c18b9e6a542d04155545592330a3e41ad1c21f6e53e60d74672f277244ba0ca32432b3c78a8a3d06aa595d8e25d1e3596e33764307ef57f939e0a7b673f9325e85076e81f2aaa39e41e6d6ace77307d80aa45fd9ef5b7deba28738c7d68e5fdc4ced97f55d6254db4fabf9a1b1e08b2adc0189e414a36273a7a27704a2055d6783e4853ba20a2a8462c579ef893cfd4833b6d3760e341605ab7044ef6d91b978348e6380873741c681168204c912d039c71ed00d5f194a282528be1af2b50598732747df3b06bf4957b302679299cd07c05817f558bc2565921380b030101e926767b8d1e4197bfbcc4009937c56948d592d79a1b8825decb7b928015a76e6b109386808fa743661f6f287132e84e7e18ffac42c5d5c52cb10f7ab3d868cfc5298f3c0eb5d8bb665aae618bb65200e0736c7041f39faf00aa4b5459669db96344627102ed5e8ecdebab4194ff4eeb7411e11698d230dbba501986c332bb20b8cfdface702eee61c85f235cc6670087271b95394dcd244eed3cb811326b01dd6da06b84af4a6868f193767bf3bb2fe177e05ff1285cdd3f16a28dee04313b8866ea4e8c039b100d2b6731b14d2588376b62b1541fa5066a6b48746585661498f4f79311ac4d98300c424796b2b3f726b90283ef81576de82ad9ba4a3febe452245090af0a680804728a8ec4a98ba84aca5a840669c931fb50221a10f6c4fdfed3cfe0c870b77bea016e6d63c0468b9df5ab772f70a7433694d43180151de0524020bc60a6386a99017766e209e0d28589b630f3af55c77f055eb5e6fa7f7fecba28db4579497fa0898050227f67a89f816a4bfeffabc0c25b6042ef8b746350abc28f78313ca2f92e54341fcdba4c861af3238bd0be1f5b247ef056edd7bc162451e06ee640fda1dd6559cfa2de80ce64490ee5503fb60b8575cbf0884aa6e58e74981de4518f5f5b6528814177f117a2bb482a609007e2ccc7ea9b5348613a5d0b272954d626d4ec31d89b9c6c9d21e271f6837dd913e9621c80f7d889ad3f9f4a9bd9a4badc339e6710a40029821d19f25e16df3ecabf9e2cd54afd3a44f9b98acb7551ffdc1e74168c8a5f648b229f07f8dcd4120e2d2b1db21a442979272139802dbf43a0d6edd5e54045ade78d20a1e16f7b95011bf6a5e044e6b7ba70593df5f9de435446cc5306eed34b29a13e80f5f6ea005623f1030673e8478af2ea3ba04d59b64765d66f7f37a18157491cb237f3802294ad5ace24638d03d46212b845a79ba2bffa5b664b8af132c01ba4aeb8ebc6967208dc7f70965fa0332f3a1854dfd751416cb6777a82137aa910060e4c0c4ab564335a366050ad72da7a34981bc75bf66ad7db649f936de97cba94914aa9f578cf94a7c1b4e9a4d1e238c1dfbf9cc650c4a40f839d41b1849065e5b2e17626e5720cba41ba4bb1501a9f23c7829df201059bbd163bc0152b52274e4802ddca545966e68f2ac8f10f63a8bdf2db77b2737a1641487f8d89f221a95e484062f17021ad29a542bcf889e58700265661ffee08a8c4b6e8d073a485f98774874ef58c012d539bc43085613b947fa3f4c26a7cba424a08d878fcfa2669f7e7cb938fae5aeec66ab8e1094fab1e350fddc65f490664c702cd94e2e9ad72e1d4a920024d3a4d79cfa93140a0ded784d4a88e534e6acdc2d2e885a407d9328a0dfca4888e8d19a5480a08bd4947c482d0e448bea3a5851968ae4344f8236360b351940a00e7eb59c2663ff7263db487d2116a11901c140b37a1cce3c22104287e4521a589e04833d98b48274ea59cc6b546c22df6d58bafeb1f87ee618de999f72a3609f05fcb77c3477dd0c39426bb81661fb7168e2a13fe0b00f8b92cc77c6e28599751734291d3eead8276d74bd5b11f828d90e9787891c0d4fc791ccc338ef26666d4dbe3339480211efcd51f07a339fcaf80d9c4d370e261812bdc8493ea9883e873f2c6f91654b39b47ba881fb81b0fd34b1785e7fbba371a47ef5c76e165a527a7bc2acd4ce761078f53fc0f0618d07304a12ba5e0073adee166ee275acf5f3d9a0e2edf88c48179844033ed72784d2c2955b854394a7a11146e310bffcc07b23a2b4c521e0a6ba763e9f07d3b1919cda7597969793b0074e547b2a2b62d45662f2f718c225d5017da9112da82584193bce7f84bb010d44836a24da4679c0411ab535005a5903af38ecd0e441da88d48df205407b2d10750cc26970524d06909742f0768d012422e41df7ccf8bb676c4da42f4da3ed9f2c2e3693a89dc8523ddc4613f29532ee25a45af35c91f6cb5ff712c3a81c6c2d7f2685890e59570cebe059090eb18f6e1fbab39d0f92fd085e00c20f91449c804320791d5f18c2774bc424831f9273cfaab671bedb24c94ce85eea74bc50c1a47d1abb7e75a4e5cc882dd4ed7f8e351930042bc1f65b1eaacb96e461e3b1701a836b8a7a9e068b4499b9b83a7b60a216718b875caca0d797dfafe240707064d2691f716ebf8c77f657a8b68a49504dcbc45ad78c196e3c56c894fa179871e07fff2f942ba060ee186b5439b9802f8a3e18db3b4ab1777a157d89eabbe10745b232867a8ba1b28440b082644934847ac68f8f909d15e11a1aa0a80d456ce1ef46d413281f07398adc65ea6f88c8843c0215f867d4dc11da5552264292d419459072707b50990f6dcc837784fe6a0d17def3b1ad87c44f3702d458fcb0120393c363ca5a31b5b7840b811d42897b23b68179a4e61532d5fd8d8ea78886c6d5a17a751ad8d69101df6309413e45a01f7bb58e43eeb6c3b4636a8e8e581994613e29f37c1e3f6c7e235898fd1a7095925f3ed74de1688a19e901bd8fd6a90fa7f8568e49f870168aed0e098c023d0b1c9da727291d16ebac7ff0d2d5de341f2c5c281a6641e135ba57da9762c7e117160163f3c65d6d96f3273b43169f84013812f68b094768fdf94a80a0cd9d8fb253485daea2dcd47d9b72ee9ea5dad4aed55138ae0a05ba415bc9393406b52a9ad028ef3a728826d1f55a8c99765fd5665e30e627875ef201fb8e1cd2f2d14dca07790f63b04fdce0fa3b312ecbc400524b78a0503083db02ca75220cb0bcdd48ac7a6cdabbff89e3f6dba17e5be1c332ddeb3ff6af50c8868911de29d421a39a15a4eeff94526a7a492d8f095cb5ed3613da42a33a873f4ec8bedc901b30d4e1f960796883e58d0f0fb2acd84aeeb326daab615b28b6c9c877b32127aff46e3bd4b04549f70aff6e830c0f58f61db8549c92cf914985d15674101188093ec535290df6576812ac18c9254ef988e858b34b5ecb3fa19b74efa47c1386ae7f1ac11e19d7f4baf1d1e053937ef1a8b5af9eb0c8e5378cdfe95882056a26f2d84378aa2d260c4d49d4a43ea102905f709514c232d822c295994555ab015778d8b78120541c4da1416b2d274d0c0cb681530aa9391d604f9e2ce6d35a48759df626d1ece625e9e9c830a58e6f9d5898ca2224a2c9c0a687951ff6f06cc51709c46a9a256087b889e7d522a179e11f2ed6b7aaf7bfc09a6bfaa8b0e4682bcfacff5b6d4399528c87af7a0810f74f7bd80804b2d4e99f09549121ea671bb580afba237561c7044109c316e109a38411d768bf33b97fc0409c8c35d29331cd21090f0fb9d8e7c92f43a332b4e03eb548565db8186c9834adcc1b0265883fab3f0ca852b4aee68fee964398c03ab4bf244b4ac42db07bfb9594634a48f3d7da8d2456a0fbc3f6678b68b8a7828fb381850251b7a0cad86a1cf2eb799c610154764dfb5ed342847cdb29a9b1dba42f6995423bfeadcd4c00a1e8c5f0b5d0b582b007dc7f4323813a4e9dd2dc662aae72874112d8d9ae72602c60d504562ee2aa89afbbfecca2e6aee654ca7c1b6b294416778745e672ec257377389a77246377184a96d00c652c72adfb10f8dce0890a57930b5f7f618f01d2e020166c53eaddeefa301f4ef60092a3f8b8ddd783ccf6dba6dbf12686b3b97b1520e98135607833c18cf5771f03d0a54e3c56d2adf2161fe7aed0653d8be5abd2ec13f1fde86f52a3031af76cf031b404362c28fb65a7aa0b21e5ae4d1b6089417376d4b0315125319f8efe1821a955d95f863b884a10e0acc16b45c4a2844a37aa0fe8d61f0c883e4a31674c896911b1d988ca77f522460c3f6a3e816e27d3a59e082cffa2daa92676ee82bc014d946b244cefae2b08c6161a630c68ff77ca70aeb2c681b4bd4480060eec823fbd4dfc70225921bf951a64849fc8f382beab02b41992e28c579d5595e4c792101785e8858d243d2190522a664f92a682694c9d3ba75b591c4c09223842c787bfee7d38af004181d35c828451cfeed592d60bdfdea62ce89d593c5c93cc8b4a259eb1c349ac045f8b4309336ae89b54628606281d8c53684f7ff6f824a8dc60e13fe167db8ddc3b6114287ee0e6393a16fe16f32b5d64c11e63dec43509515a038d22950c3c3d77ae731b764d06b4e1f15de86a78415dbd17e97f53750e30ee38133cc7e80c574095bfed61193f4a5c8cdc9f6064b37d11cc0e311f9254a66e930229dd96583b9f8515ce65014ddf757594468a326ac3f336721425b1dc49b2e2334a3bb4b3a7d035d1b4fa641bebc2ef8b96043c90a082ad1f8d56dce5dcdfa6434711277a2262e7f503bf79e1f67ac5407a4e47bd1aa5bd45c104ccde2d661e5c8dc80f6e5ca958f5c30b22728c83057be7dd3c4a2649d02b4e05f767b2243eda3313cfa097045eb29b80e7180cd01b2d67bf1ea54bd8b646cccd6a08cdc84ff1c0d2dacd568efdfaa257132067225d8acc8905d5be880d013e6dc85af42d113cad68dcd6b44c7a91e6e82f8f09a66c0cee5e98495900cd918527e637d8b32fd6c9818668ae5151045d2c85256c89c0e90b965725d00b496aab5d814f1f5fdd4692faba84c0dfa5d2c2dc56dfba1c12c1767f78004a1fac42040366fed0ffc2f514d87b78897559b2ad8813106fee99657b994f299ac3d445470fa976f2c5fab8c34b0671115790522b963a548b8974ed235c278fc893cf6a5e0b9e509c7537b867b6d04dc0e7e5412851b7590d0ae0bda1b7433eae1a96afbcdfbfdaa99006f1302a1790335b9c235b6f8149eff1b68261ac9803783803f658f984a2e44bdaffede19aa38ce5e9d5efd46025227032753f8b6fe88778b3edc40937e37bf9b44376798f9951b842fea46f695e718475f89545bf4f98e88bc0609e605093fc7c57d1be30b92550fb58ae8249fe059253106e9dd05a3819702638acdb35443f45d3cafffb4a62f7b02cd3eb4a12eee5a3861c6c7592ed4f42834001b7bef1d15ca2bb367a9751ad4df8695d530ba4a27804110a77ea3e898952c10647cedebca39a8bca72eeb85796fee59604b544118aa10fed38167bd934977a1fe31c3189223dec254dfa37e5d0d8c7a2844ed304cfb0aa96bd7f66f70a4e504d40f062dfb2dd8efda9611f28d5c6cfa677bf2859a9f195d619ea021a978cc8b79ad896ea318087b08a5dfcb90edfe4ef74aa2a271375457bfcef7a98d1ef8fe1eb6185134b27f3475c86037ad270a053283231955e255ee39f9cc7e14979256146ea00c0d42ebf37cb5e0e9705efa8ada6d75ff12a63a446893ab7d6a159583906cf9d97bfff36b6245e13cd3d9b2c52973e2f6e0f6ed456474008ede128cdb44cf2779530f7a4ae3e6945d489b651fde6f8e5aa485ceb49d4786990214998ffd09ce7e842c64df6afc52052735f2280ecca4efd32d554b5ea0773ed43676390877828a0f0400d0875db68f054d9eeb009beed3ab4636e8f54fc7e4a973c4ed04473ce18ec64ed265a1b3d60d0ccd958bad1bfcebbb4d8d39cd39ec5fd2d043fdab810ac2adae8317e930ad77989ca14cba649ec29520d4da82e741e39312b5c1f3d7afef49487713bdae2f09aeecaee47000ba709f330554b95f1244f3a3dd1d5a99cc830d9dc12e20f963f4ce68d4bfde1531859b65057c8426728f816459722ef735df8e88317e517e63e0601b4a4b839a93a4046a4789eda1d2f8c06badcc68e2bc2820c0b65427db61f843152772f40d4ef13914eece5975001fca5e48fa14171c3d3c6c1fc49370f4f31f91498d3f5d84b3aebf9f97abe4d4eea900aac6f02e83d2dcff07e6200cdd2e84a62f6f6294751b2b24bbf4f3dd98e6e0e2f83e95db419a50f0e204829609515733aa6432d47322d64fbe009e93a6baa7d2a0067d2763399605e641bddd95b06c45825b8813a5c9e7a692078f8563f5386b859defcc00edbacdb3f0670142a6ddaf0baa10b0965df0b940495e0f87bb2c774edeb2b087d23e816f0c23143123cd78811f33c8085215777a4d11c67fe0388c0ec326417e9d0c81827a01113af19682e515fe58754c89e850ca95e3ff22ea409128e452254c7defb1c07ca4c8a940d274a561d583f9acbe00b9c8d93909ed44519de0047f905d4ce0483ea62b48395622316bd8e621c246e6bb34d0fa5f1c587f253e4f543baf1b56c9888809007393c70d6519535cd078adad649cfdd132c39e64ecc4f24654a6b012ec43fbecbd40c6a1ab191fbd645496cc85e16e56dd66ff2d7907080db275a73e086ac0c05cc3fa42f8615c23e0c633441409e1b1b0b1298c2349b1b346127f2416d98bc33ae3e9a6af6c69678b63b914013b0050f0484eea4429add7ca442d4fc0188a7af760e995a39707d5e2eb33a79fd6f6af5078b5a89039b0cf9ec24829dc9d6025b5b99d102a85a59c3f17a2306dd1cbb81f14240f640860b2ad9a3ca5d129ef33d52932048986c0045ecbbc8992458c7c3debb2996542c65fbd5dd008e0b6d3bc92930dec53986d0b3ba37a2c4b18f5d4398d05782629955806d88a719f4a6cff5b729960b8835364b05f759d2cfea308221ea1716111c65749fb6463d3051c0d1a40be4f748383b84763ebc0726935134c17ececaf49bdf1ffaff5a44d17b0a481b9a31b78a335ae7b0c5853db099e575e25ebcd68053ee3b57b5cb01a5d22c79e455ef0bae3a2daee36f9fb5cb58705d3da6742abcf17530618a4065f805b6525b0d983b73f0abdf32b261575a3059c24dfc2f9368634a8181f95f7341b7e39933efaee2a799f04fff2985492b72ba7b62ae126473d821242d6508e6e970ad3eece1e1d9fee40266f7f9537bfbd33d4ae894060b754f6bcad033b2556ae89ec5da58e7a07dabc4065676e1e3737bf3a2768ed9695671683739afe6fef8a092b72d19563ba4fdb323b8348402e6b20b59b6c3847ab0c667a2c76c18e05b4a76461b6bed1a110ace45292f7806fffdc0b620bf040ff12378a2536bb5529479d818993501db4714fd01c22fba4bc955e078fe142d183d2c1090d71b305986a27df1f84679cbb8e06c95a1ff13a8e9b3fcec520079da1168ee013c1065b594b8612cfb2ec9cdf28ede82e40ec41eadd10ef3a76c9d081f143a6edd01a6e26652f78eaafb2e4a977319cb37914837b17d47b894dd28915c707b96cf99bf9e88623283ccb139c0bbb5c8d0bdd0d51e44691446898b18676619ffb217c0d5e21a47ec663b0de8506201b6cb2b5c0e4353144c28aff353374c5ae7a91b7baaa8cc71edf6b24aa5b97b2fb04df7c43099285cf703ae1f16cd9dcb24736a438815eaf4d9be3498001570574cd299993f1b1a48a43462f0db5c71da6c3e279a52409a5d1cd7e546af9c2c5eaf463cea6eab0691d2e3ab5682496b823ec02343366b24dc410c2523cfba686bdceca93a664ee9d552300248ef9a5cdbb18e14009fdf5d4f98d9b0b6b5b1e9255439220d08352b1c277630bd41a5d35e997cfd2ddf66eca13d30bfe3a461342282207ff713f6e4beed5274de0a7f4b81e26515571e9a4c94f6f92df110f05dc6eab84ae416ce27c4e033212a4abaa13ff80f5f68abe03a026ac687a97c98462c08264bdf89760c9e0522a03f82a6e531a2515c5a9a3e7e83955f9f6ec1bbbabb82d8256c65ab3ba9278718506d604f9d94e24b9c49b08e3b501d0e15e9fcaae367d1eeccf4e75d4f322d2311dd2675804aec2912df749de74126693c0c4ccca5c16b916e18c684a80f9788496ae47ed123847dcd411b693d8e8888e82d5c6125e4ed35c570e0c9728a8105dac2dc7910b15a92018ea33849f1e634f41a69304d31ef5008e52c0a4cc54c5dc120e6376a4deb7ee9242bf00f2f24085e72acf2b594309fdc60b064ea46c2b053ae4babd0e9e4e445bcc6c18c015553fa2bb8aa18372911187e432449eb90c9504bf6a9205ebbc2825b7a7132e18d831d124b80754ecb62c7c9334d03f51b106551944203766cf667af086fc1957ae430618e2e59ff0ccb13d25ed854a375bccbad2cdaa4b0514f1e16e285ffe0df42429558624c365827d69031f5005c139d866eea5504a6457aa8cc61c6369d668f8f4bdfb8df8d1af6fce592f2b3855609907ef6ff4ae919cd29b133bf0596554c12cbdf218d6817994acd79128631790a694ca9e5817045775b99c87e1a4fd48df0b81af056626c8fc5f5e5148bccf8504e469c1d372775aa01d47b14de33b516cd7f21f1562cfe18f09fdc4c582af9caf7def561aa5bc87695a3aac0bf3ca84a00e6d88303752dc37af63f08b13829f6c0346302efd1267f001c5fc06a58533f6b074ffe4040c76388dd0492aafd9e58ddf928e44d4105f5949133e55548db6c20b3d44094a47affb740293c1c21dd1065afd08a579458286a25ccfa553662a2a5068c16db0e85ce47f26bf1ed603fdbf2d869f32869bc194d8aefde605728b64f71be871e49f6ee820cc8a2add42c93ee6b3362a8e0949405803ff12e3a2280479a8eadf8259c19f98da0102f96cd49c6e687d24b39a944510ca0bffc83c7a1f27aea92b4906570d54fabfb89005c422fdba6fd803ca561690d4bbba425c413be0c3155aca186c8195c4a5524543fbf47153b48103a3b9a2ff48465b2547690fa92dd6d4419606d00bad9a414099cff7d13c8d9c4d1bb190a828719669ca612a7011184fa95245770b35c43a647f734436db91216ff7d2aca69c7d041891abdcd78387ed354bbb09639af70dfeacf672746dba5b7ddf11e31bc8bd1975ed828c32f6088f040c3b06a02df0908204baa7c07c82aa62ee32dc3b09405b135aee8d12d24d8f4b198f6fa6b656ab7535135fbe7d6e11f75052f291b40305e16de77e110e5ee3e3d63211dc14d11dbc1343a6f8ff38fb2bf47a12f8dca51c1b710180460f39601bf04c01d73374c76b4f9cfb0e10459e3def0479e9f80d7ed0af11324261739f102f86415af4ea37859d828c65fa3ef6cf0e995855a30b24c38a329afa4389fa37fe3d92a960e90acd1bcc913cb48db2f24c5e1816af39798e3e439233f2e114cfb7fc9dc018855edf10e1e65234155b39b38beb49ff7677e728e74c2e73e02adb64117f769906f06cfcf6abe8cee8002e4e511547112430745a09373fba6d6fb3fb897f815f76fd2271536d4af35027d9fddafe52243330275305ca490641dc635b32e46a87dcfee3b7f4ddb83c18528b076f6697c699e1fdc20b7817c71a507fb7dfc079af5be1b04f99825abdc11471be031eca0ecbe9008525209ab29658186cca71e40b1d58035749bc0c1c2472ea018607498bd9c17cb8d6231663da5694046e959ad7b9db9811c6889682ba1b31c74bcd7951899592d161430eaca1801c097a80d5a0175d80c142a1c21dc7e0088af76c00259c689530524797147d4859deb82ad8910d206aee905e0947817d49a192ccaba2be5b7433c0ff800b6036104b327106fc757b5b14174e3224fbe18744c6c27aa00d257029ab3171a0c862654b7413dd54b822d5882a5309b970532f62684d978bf4f02a0f99f21a467e25d06e1d57e30046968ff8d011454e25c0e497308840ff9547fcf8358b6dd944fa0f9cd3809fa7651d9aa6fc2613e824c023b8638a31f5fdacfa1e6b01bd4e9f8eab9269f5d3c6c66dc4b448992ea2b9c19551be280f765d62259ce499088a411ed520decf02822674a482acaa3d6b3e43d470153ba97b6e30dd1bf79d01bc407fbc20ed109b3d5dd833b3014291d084a9b1e79eae1707bb89b871896d77a119d3cceb1d82f183d5ae948dd0484e6f8568bbfb427610bd9a258a55e0a7abede3d8deef7f0751f1829de2aba8ea5f814e95a58d793656f1d592a2ba88b62afa39d7d3af5407364c277c6f2d1c9b1eb3fe80202577a5a1016e5237433c8aef0b76909d67dd0b1d68d6a91d684b623b6ee9a819d05a5cb91c10fa709f2b87013f5cadf1c335eef4d1ef3f3bc9cbafe63f317d5a7c940cd0fffefe0116aae384d83a8c9b2a5ab15320edcfc45e85700295ea4dbb2b9593a4b9e182ea32a163ee2dd425507cd2ef9f99fa3f4abe5731eb66f01212da7b1fdb1ff4eda23012ed91785099502d8883e34a4bffeaff03a5e8ff15a44247485c8c8465a6ae9b763dce896534bad84675a50aa01ec9ee5abac68e210daa33eb9e69ebc6b2d8ae63622ce4b50525fb16cbe93d9968a576d9fa44e1ac6263f1dda53ffca05ea872ab109f6e7c3db89fdf2ad92d4cd0b42f37c71e0d345ded77671b0b0df1627a76d5f075564a69da560da435344c85d346b2a63f57744ea553a1391bbbd60d3de8ab74ba46cab0ce71bd44d58fac6eb7ea95cc6cb0dda52a407f50650194559efea1c5a1cac6ad3803fc096cfaac9677a9f28bda90ffffeeec9b36f6ab72923361362d9c64ebba9d9c6eae9bc314d647f0d47986f467e966db370e1036f71e5311bc7af0e86a54ca07c05d6d2fc365bf60bf41c6a07879722dbb131fedbdd6d07651da7fd1ca446eccdaec118361a9c4121e78854e4b81e4f83b6da7040c2475abf3fd09d9d04e1b9c97c6a68908d93eb1a9942fe9c34aebc4d8582f7e52810b488df217dca181f3cd7a666271d7b46c3ffe60d4f0d6d5d09e4888e828b4d3087a3afd47b09aad5ba96c645900cfe889d9715ef1acd76898a766eb0c6b0dbe85751e6f134977539f7ce3243294710ea28ea22029e27fd85d0954ff0831fd6751d6d63e3459049489f6416a7baf9662aaa6fa60107457de3a0318848e07697666d8b91c289017f436517f0a66bd12b19ff01231d799a17a97c53e5a7849bbc2d67bb9f47dba5dec6d5e320c0b0458bec5eb04ab9083ecf5d962dab6d201fcd806503655a985d58fc3ea276f56fd1f06f14b1e89a52b27c5c4484103e45e47867f7b372f89006ad3c8966856184d7526eeea0807b46f98046404b8a371a07fee3d8f63151c90181b53412df740af987e89b51b7b0f8d0c8b0f34f0a2bfbb08e8afaecbbd0700a354ee540b17994db6b003d0175dc52927fca34bfec6db685edc02681257673efc9289f0e259d4029e32e881e262a7b578dc0709519e643ac1526c3c311bc7816c200efb575730257354219435611c0e843cbd61af111449099f0856e9f86de820266f939abfe69f9a0fea3ae9cb12daa7466a72468f640b82b3931525bfd8d8f6deaff4d49c97e9beb8d34b8d3d8b9f9ce6d01db2e1be588745a8ef9987cd6e3f5ba439d2c4ba6d03d6950370c684920614f1fe9319784f491319bdff32d4688346e5c7d28c3807b3c9af00e252bacd63e71b2f634ee8e9145b9ffd72d9ac3475eefff34005b8e0d62d6e84fc8e3ee3deccb0d6d9dfae19cdeadc76b878eb4fab42650d1b33604a67a00c92b89901e8f42c841860746dda77dde4103421b3c41a82e7130a042b95db1c7af90d8a124d567ecebc96089a617b62c2733ab678c0c16dc956e54c417b91e1b94f4fbf3760c8fc92b31bf417708129e3eef8fb6f2ab73161199e46afc9017688abf830e1741b9a23bc202bef3ef9bf6fadd506522028e66294a0e59d970dc1d19b4fc0e3ca7a916ca5faefb68e08878362d82e1876ff02f577625e4b47cb66b150acdb7588e1330f19303edad45373cf4f3d21b76d8881771efa5c488d7c889614756a8a7d3cda1cf8f616d7d7f6a94c47e2d8f5bfc9d05a04215f3d815e1bcb5d5ddae4facd8821b02b62b68c5e8e4746eaca1562ee0853a5f2b0b1f14e859bbe024609c020141c92130a9621e8d0aa122272c371199f83e4fecb07e6303ae3845ce5f3245dcf24d8308b32b5eef8275edfee30e91c7b6b9580e5c1eff111fe4a00d620caf440a79b3ca91720201cd5f59aff30fb7db7fd639ee8fe31459d280ab3bfea97d30a4c22fbca0986e763cfaf2198854272239ece48050b6fda54652991c99930d11ba2eef7ef08d27999dc3afe8e2aeddcf44f8c823ca90aa01f2aad5ad3e823632cb6364ece12b994238c338bd7c8d6ddb38f0e01f235e041a5ad130c4d32ad40b590d61bc7e0b4eb1a1aee6b01cc5d3729e3cb69a0ca21434be1e8ffe183e36add12c969d925bc7cdb5097c440b6be9c052764cf3af0e9b0e8e0e54ed68119a92002fe3f0ff765f748689806fe7e1b0ffa17788864997fa61598d320612fc8eae067d9f2de20263e77f77e1583ac6622ce36e01c609d86705a39f075c15ba04d38b3da284ed170061fa66cf67ada2a5faf51f4b7d02517c2aedb29982ded74f7192f5361c142eff8ecc3a9763055ea74ea8282de0cd1226a0194d0b7d64c0e54b0ef1d9d0c1bd8307abadf8356f1851695f6a48560647cf005bc7b0bb525885f2bbb110d656d0b834dc368d72b6c9b63b01f0375c5e7fa91d9a154f150db6946b38a990af057528314d1eb6baebedda6ae8d860c9c5f8bef32a362c34132686dbc8b80893e724139f36a9d1240d8079ca378d260a8334bc3b416673bbd2859de9dd55f08bca92cbf6c6547415360d150508675e13e4585649b239a3bb6a531e42638146fb46d09f5985e10d91f791f4410864ada6ceade6997b6736b5b122a7ec99a3f43ad5fddea657590544d5be8a1057c6513d803b9c9bb1778f644286e78b70fe0d64d748e3f00b7401b3d92716395c98df8f08955b9ef36f1d1ad6b3f0e61a2f5e729414dae14e45e60ab77a9eb74d185b266c48e09e80f96103419a393f74b1d04c2a445089c40048a6e93ae5b3092b24a075618494c38155d2c1bd2bfd6cc007f36f98ec0562f80037c491c9d65c431bbd8b8c99f0d32504c351d50f9e3fef1ff83d5624d669437f2a52c6f004abd9076e48006fdb00fa11f997404aa6c64efbd89dc5bca94920cc10aba0a040bdfd7d73d1eed03460598b061ef75cc43b9de4746059877791f30a103b9c4588727c15c216de667f68a8f29e601cd20dac43a384b0ff886cbc860ec62861ded9d96a68798fadee2842307711e28c3d3bdfd97478132daa3de43c91c09c67579e95900f51ecc0a26fcb1e1873ddcfa42d155937530ec4e3ab38c61cde21524697135501be9232dd4489440baf3fbd54319e55877a7155c2fe93a0fecbad063d3e55a2cc318d64073a936cc18dc4e08217302a6750c8271534e6c715373d2d3c9c84bdaba2ccbb46d53b239a9f5c4714e18710249c7a014346ecae3c440bde4c0a5f33c0fe5e22205498a929512e5a6580a1237d5e2cbcb0b0c0c8c1424475298781d87426d6570515cbeccccff7d632f3f4ddf74508b7f950307e9def881821e9ac0228c2064f9a2c52138220a828c232b4950b438e9f20771d6f3f30b999761a074297562c3a5dff54d032efd7af94e8f5a2e5ef0e3bad35fbeaeb368ab9b6137102f0176a0b9fd5a0e334737dc11e7a68e5c53b24c693a6ac20eddfe6f4ad19d823445e9f6151cbfa4a126b0a34c7a25add0ac9a56f5cb242a32cb28b5dcfe95fcce6e169b49ddb146caa71ccb07bbdb1e0f1dd4dd216d66ae7b3c78264b478d38776ca09b0223258cb8b7faa733905c2a0a12afec9f26555c98b76cc996bca37c9953d322edef39799ac52a4802b202eb6bf5b3d02fa49fc877fb7bfa79fa4f13c91e8f8eab244ebf64884214c528ca10f339e6f6ced1fad52f5cb359ab11230b03a13b995bf36b36a9b8b3a9d421fd72b363b0bbd4e3d1434aa4cd9cb999c7a38b34968eca7af038902041abefed274ee77016d926a116e76bf39da8973e251bf47dd6ba13751ad8dc94dc281f5605ebf22818ca7b1f36ec989785322a581bba8b75f0985d394f9f7929b426d9514bec4b4f856ed9b0875c355f66ec280efbd5e2ec17eb7020fbf30669339f3e37d9d0935c75c3e640acc395e60b2c5f8125cdf9743e9dda4f2cac03bee11fb0387fd270dceec84de1c84d491368be5be91b25a497d1d492468fdd39bfcef9d9152ca4cd7c1358998f02810461c155f3654bf64b7d99edf4f3a76f466ebadb567fbafaa69bc53f57969af5b5e67bd39446f33dcbfce45112af3b7f02cddf4eb5c9593f4db4a23b7f9ad429ee7cd9aaae9a0c632c2d4e4fbaf3e967f35d48c99b2c0dd2ba460a6a954d31d934c6c7976bb59f4580d195926708aa5d86fd8148085690a8a2e6ba53f7dbf3fb3f9adb2f5241e58829705c4a75c04764a18317145dffce897eb8fe297feea32fe6238418c0a399250fac14fd8071a40626b42420053160f292e2c8055854f9e2c58b2651548f87572228b6b83069e2074d8808c0f5d73c1ece6444122c8c28e3f67759e64511434745f4e0b25a8ca12db7b720e24a151edde4bea48b1d433f503114c64df1e8ef0790158234cb012e1d86900286153f4e5afdb6591738638a113123371811458b69707bc9a5b7bf8710a9841de79d1d1776b497c7b88e83eb4baad4b89ea57b889fdbdf47431c71fb091ed871dad4278495dbdfd3e865084ed28c3d5947035df9654e589993ddedbf1757cee2beabcd9fc9f0b8bcf756467bee61fec5e599532d6edb33616bbbb2d806ea9f17585ee2268675cf601d7256fdedf4db3394de9e5f968b80e0380bc5f27efb1ecee27e7b1e6775bf3d6f2173e4dd5a9bfff6573e2b5ce56e2f9ba9c09ae4920be86e1c74795ec21e6e75dd73ecfde01ee6a5a78916f2bc843f36ece196f72e610fb750cf3d87023f576def810f8aaedabe0357aedab8a6909998b0fdcc711773c739bddbb66f28ecd82e13f8da16b757c1f64f7b3c385cc27dbb985ab5fdc658eeb6b978a9c519b6b7db7fdbfff6e2f6eef1f8a4b4c97e4e5f3d1e2eecf433a761ff6ef66edb777d43b3851ee820ee93149cd2957ff444d3952191be52dac84fad3806c2c208f173d9e532bbc81cf94b4a848cb40b890a9416655107922e45b9aefc4de6cc975f681d275333267d33fad0ac95c54a8c3257dffcd0cf809af505ed70a459967e86c4c8a59fbdfa06e6d2cf94f48d3c12a2caa59f0df50d51a5525c8a2373e6d3caf3b92b577047ee662e308b418e40df0b69cc55f4c55bc321f38710f96ab8f6f4211feaa11c73c5383dc58e3b2e7daea7d851227514a76f6aadd66e1deba8aebb5df913095beb24b21549dfbc80b08e21442c207346502f3fa5af217ebd1ab98af6943bc46f4cdad067909e2147a8504e3ed8b1225d5a91fa260b87d41f42a45eed897cb54adf64aed6403a043902fd0c94d266a45b2ea5b11629d5226de8cf2058a758288c02816f30c0227dbadd71bb23c5b2028f40a7d8fa405aa466d891c6a8961e4ec5be6123ac4e8bf44f5f3ff3789cc21d2dd678258063cda58f6384156b48d36205c779714aa819712efd16e77b0fe05b813091abe6175523eb2aeede7b1f5dc848ae9acf92e94a4f027d479f5bb7a08d13e27c7821bf5c35bf86322aa0de7b1fa89087806c60e672157d0ecc80b2200fcc84686cabe10a34a685a99a44db050dd4cb20ce42355d1aca2609bbf4c7549056d1b7f6fbfe45712583481bfa1c4bb12e77944b526cbd0d05ad52acff38af7639ad13d2d40807ba6f4f931f2ecf7dc7403229a0defb1fa8f7bab0a77bd47bf8c37b2eec7179ef1dd6226d17cf027a0c4ad75517693d9914b847fd0fcebfa77b2efcc1bd17f6b83c17beab6886c3ab255b2b57d1af4af4ddf3c12dee5bc8594c447156747610a53d9a896a38da3f8523ceb70a47516e9e0b7c192809eb306731cc55f469adb00e6197c22efd2e5a1abdc9a86fe877500bf5cd12eee912a06f71afa16682ea388f47fd2ac57277c8bced4b7dc3e44d8ea56fb2108577b0478bf43db0ba4db5381fa5934676c58e1de402bad00b166b570339abe36e0b69433fc85534480fc1b2c08117d8ec9b7a4fe97328d0a7d5813d3eadee3dd0a7d51e4fd7e3d3f21e05fab4bc1e9f160ae5d3e29e037b7c5adcb750bf5c459f7eb7e331580e0ad9483361b31085b0478b26f0eda016e9ab60c71f2dd2ef5fc2bdb3b8908db48a3e3d7269cce5016a91fe0cf6e97710fd16a2df2fc9c231250d2160d982c483508b7e0f495606a6c0a18b1938a182890a5ab49fd21994f50b0d3c28813203fb72e5911223b808082c2ed8982b8f940829090aa2073200bb8ce7165308cdf5672d77864b342d8481a6d58486320f9877ca3c80be4b1a66315c2ac78db5a6ba6a51f572105abc70394ee02a6422c89bf26d4d5d104a00707ad2c405c102af2e81b4a571430b3a61c98a88ea0d6068114c831280f9442863627d0922da034c77ab5a6d51d2b440e0e009a1b9fd395afc2746be72566d1d01e1ba1d767589a01807d2bced6ab5df51122beef85bc754a101eb5d7994848a511221b030571e2579f1136baf3c4a12d44a02f48a72fb67cb6a914871e795472f26eef81951e19cf2ffccccbfb5a9548b4d80eb02cfdc06ffbae7ee2e3d179886a6c70c9452ca2395fabeac76ddcccdba09fe6d90e67edfcc8c0dad093b2e8d26713b6a3aa362fd937fc64c23e2e038ee9bc1c1813862ccb0a7e7afa77aaaa73f8534759b5bdd70c49861b39f31d494e4cfb28cbf16b9d2ae4752dd5e7e7d4900c97a1b49825cc0954f398e7e8c195b4dc59861b9677d6711807fc4a169afb5763557ce346b26f3dcc54e76f5e8a9a37663172993be36e7fc166b8ba37ce2f6db90b00002d07100343db4d69abf512bc025c01d40e861475333e32efe63f663ff385f7ba67736d3979f7996bdd4fa6adacb3003537782e3006eff58eb953f5a294a957cffe9f1f0ef6e067e9782347782a3df9e2e33dea46c569a665a272df5f0ce420b2f2bc8906414e102a13370a082c888955a7162382e35b9b2d17db64b75b70198f8800534c03244658cd60e4e6e78220d31a698e28c56d760872c65bbaf51b0c408521042e860444b0265f080e58a11496eb0a5d557dcfe07c2bdf2af3c8272c5ddae3c828234d1e0a48df5676e7e4e0ccc9dff72a7ccb177ca1c17297350399e9439dd9d39dc9d39db9d39270647beee60d7cc129897eb9dcf79dd7c0ed5c91cdbcde7603a29733ac5974b7552e6c8540ccc8b7541791db79daa56a3c61d7b2effe98e2f5cfe50e6012eb3d35dd66969c3ef65a42c7d3bda7795a788ccebdcdd3e6fbf809334acffc4d239998da094861ea849ec6b2fddaf042b05fbce07bb94a4281aca71e65b0a662149560a495da619cde615929a9373a36f4909caec989d4fef7c7622735097fb9b8e811ce96b970582d5a48f8da4cd143b266db627b663154ad1e5212844773e33912dee471cb0bbd3e331672ef578f0642c1d85a381f4fef478bc78db538e33c98eaa32cbaaa6793c500ff33a6dc58a951a6f6b54574561471e22e226a6d96983f9aa851da711bea35be9d88409874ee198857488c31167e6d038481ddb89d53207a6a9857a2fd5b19830e612be84600fe9f970115ea739cd59de548d788895fa866327cd6a1e6222672bcd559a87ba3d6b6e6fe2a1a176239983ba53d678f7786670d9b265cb96568d6f6f87aff626b0e6465e0addc2d9216d744a0079c01f47ec1c4526029949da8800328c63206b6997575f03bdcbd11658e9d530856ef150536bb135d48cecd8b157c75a8b17dd198eec1a924b1d8bc9f0d8f8ef6f384b86be082f53e367ecb3610fb76a3c7b1610e1659e3d1fb285e365c09e2634e4c111fedc08b9c855f37f984822603e0db525a5024656e2cea761c54bdcf98c842461be08211bb96a7e0d90919ca7c6eb740d6f729863e1a1eeee1e1249149f0688052020a0d74bcb10c1499a51032595ebe93028addce90de1c1e3ef5e08f8c6c4a4e4817aeaed506f87af0b31efbd94d3a15c71280ec5a168b568223914877225d7a04fcb868d771beffe7d03ecf169ddf8067b7c5afd3a7d23a44aae02e9126d72154771e03aac3640bb8599eb14522d516e3cf57e51bc94c6a88bc696b22c0b3d94aeaa114a5789f0f653cfd9ac28736233a48ca8451a73d574f5603526fbadc5be841a161b6a4d4d589ad4aaf91f551221b4f6d6a5a73ed871bae84895a8d2bb84630d4fa1520553e08873471afbec75da977ce9860d1c94073bca24a4d8127694b05b5ddf09faa6b729ec385d3834a11458e96d4f2439cb89a6f6366e4ca53b61e6920f71df3d15a2411468c6ee6ca269f1d3b09a9126a42151ba332944badfdb8fa3a15b4d7ca05a33f096d68dcfc014baf5c5803ebaf53dc7bee44d0ee3a812556267dd608da95527aa246da626a40969a3c6747f648ed6d4375948933a5fe25667a073313120dff652a04a2ec5c6b4ccd0b0f2a80927f24e57dfc8a318fcc8d67ceea5cb400f6c70b628c8f7f431a0bc283a5df3671a6955095c83b31503ca8be2e9bf014e17d18d7002d1a0ed8ed3a5d4e27c1b20bdd2aaf93740cad42aaa4495b6aee2c02edd912af1112167ddf8f91c5729963e9755b1dfcf3c7b3229e0f8ef7fe0f82fec69a27dcff7387ec8fc4cd883e36528e872715c3571eeb4f113c85934e6f3a7d1744d97e8629870c47909c7950d47d1250ca21a8dd129a44d9562e91da9d29d7f7a6d3a932f793eb8e5dfb5f3254d0b97c8c868bee44c38e67fe00d1088e7835b3d5cc54b6c843a3c3f5cb898ae4ab1a854e74bced284aa26349fabd1f992cc414d17d174328d348bc65a355fe664377d8598d899986bbeec31fb1953335713da88ec385d77d484a68b26512b2dce4f139a2e15ec4893ee7c0dc9a36ebc26e4ac1b21d5f273e78fdaebcee75c3a4de845a96bfe04129a4f93a895ef51e092cf06d82d8ea5b3a33c1a8e2d74e773122bc91cfa338a3b9e6ed2049236f3a926a4bd420dc97469344663b13bbf853a4f739bcfc375614d8bae202cc4410c3465ec93303b35584c1fe0045a967d963dc7ce2561c7ef6ab5bae6f466ac25f44d8faf566bbf2ffbaeb633bf6ba7690feb20c06034a9d407518a9148382b171d67c9ffefe7db1a3fe7cf10f51f0dec984ad500678bd288eb5231302fd6a5e3a89669197d62c71ae9f9e0b817fba60bf925cf39a7c4b9d3a7fd51bc73f559117e4c8d33367e8623474303fbafd322801d0f6557b6262c0ff50dead9e5391cbf53780a4fa770fcae6fe168af6fdbf62e289087ebede47570ac2d9386c45b6d842ce4aaeec28e3597bf66070aab1c383a25f448cdf06b203361a2169d70518b50d848b66a4b360fec5f1e204124cbc788a3235c8431061627f8418b9f05c9ea1ba4e8a207262cd8418b56bb44e88e49894d5d79c4841638d86e0a14d89818f8606b08c12474051338988009971045b0a2a66fc9e8061b234291125faaab3586588da2212fe627285584a483498a294a01f71243128ce53462acabe8a58ae1e2226497e8028572b92c41458c57c3106a892662ba1f226f09262e5c0d4bddf7123ebc6cb697c00175ca51572b9c2d4b559ea071c7faa48b1b03d1932a356e0d404f8eb62b03d19324ec1321bc6b02a5272a88b933343df9415d574c89587769105202f62d05400a19581b571ef530c4086c01ae3ceac1d503fb4b445811ae3ce2410a184491810722223cbcbea52c9c3fe7e244d6b2b7d375ee6202f57c78e6f968cdf3e1adf99c4b0ad5f3d1adf9dca9ab9e099ae6f56fd5ebdfb69d8c6fe6f573fd9cb733e70eed32da755de7755eb7333d3a1b35c27097cc771f35f43c1e53c88af23d4fe8d2d0a0bc9d99196fc7bd9d9a1a94b723a2bc9d3681b3de8e8b8b774276471860609feeec07757a9db794529ee47311385bdc771c4cd729ad894db5c830b64b7ddec4d616f965cadac5742d72a96e3b9d6a978a81a919a5b352d4122eacf53923ec0e188f8716e2d84f877b6179dd08bb7aedadc7e314d6c85b73c4ec88e30d99dfccd3d8e8fef9eb2617eb388ddbdcddbb22315fa75b4ad9dd9bc7c371747af09cbe175754e954671557383a3ebdbdbde79cd3ddddbd6a19ad5aa6793c64d5322abd65ce98df907989f8edbaec6e97ebec722e9342b766c85af26eb7bfc3707c21ddad3e135c5d09ce9f1c001224a4bb3968ee943981be7cf9a3c7386938ba7caef4c40f7c91ded3cd9298628a99dd51a66bffc2f28da4d3b38c4e1f65449751a64aeece22c97257e74dbfbbbbfb0fedee4ccdb9c8962e5d7a374b93ac8c457fbeabace4397dfee0eeaec5269549257b9f9a14339a51fe309336d9d38c66ecec939966ef2ec56cd28ccee7b0a54d96d18cbdf08299d92965ca943abf7346b3779eef33e3904a20488d026da10fd19fae31f778d43aaf7cab7122b8fe9c8599b4a17cfb84eccecfc24c234146efec9b3aa76b24b8ee9da05dff0af2e55c76a366d8d286fa0b12d0aebff446cd19b6bfe02c1b35336dcaf6a17e56721dd8d394dfccecee386736b353f6329b9d9520636943e9d66928296de8733e684f62298aa2d84ddd3f9036fc8d8547e0b182806bf82dd58c8a0506545c6e6a010b497a3dc90837e489d43b89ae940e05151ee189959f0ca714eb4660df09c5f23b6b0352c52f04322eff68c3b8fc4be411d08f96588bec4c77742a46ae1b69b1e31c32bafc73c88bdc09e844fce30b77125d39009fc9d9bc62c228cdb4ce43b9504e6a5a5262e6a9793c9a4863627462e928bf5cedc44ebaf3e55f593b0ff52e34063bda9f667952ab909c05f33535f3cd9f4aeecce690b362ae3b81ee9c0f03e2b86a2675fd0aecd54a38290c2b2fe2248d0bb7e57729f93392e553c41848ac200620a06183122df93492b583c31265d880071ea454d1925a7c55c7553c355a5ffb1f55d39e863dd96bdf43bf0671d6e92d18c455fc15b41594f7d3324a5dc0491b2b3f7bce45d2341456ce197220c98e92e9b2100eb03025b35e9413870761b3ef6a95d3e59c3e5f2a61476914da1697ec288d70381136c74ac7337046f6924e093d50e0e91b1aeec81f40f883f48d8c7c797fc7afa4914e0f1e7e20fc12acb0243f7a7c7ef4f848faf2457962f1b88ab55ac95528233f7b9f5328234399144e5fffc7d7b0a789ccbe27fbd3fbb4b8c5cf2f64e5ac6f49bc2c0859b98a9558de70ab253dd107f66f0bfc45f8d9255932073ef0c083208cdc40c58c163f034996b432440f9280e1840d9818a32583280ff2089290855aec2cb7ff34043bd623b79f480fffb0111cd7e9af38adc27cc17f865505fac27c1ab646f1f6f8ddb69fed26d9b2df0aa7daafff2b68a50d371582f1d0125f516ab195ec90794716626eef0e654e201a32af10a9745989642167d570a65bcb268b67665cf5c0760f2cc5c119b2f54f8f03241cedf8713fbeb8c2b95b289fc759dbbf7c38d6aec4ce852ecfe7702ab3d28ae9f27b0d13961c4c2ccdb7c84a4b383a28f48dbc33275056b05a866d3e5a9f7c506f0ecd0c3be6b8ecf3bd48d8516c68a55af9050ca600f1054c0844b85afc2f591460ba720464040d364079f2975face91bc93a0149090a225e5830e1c2e7045c5c01d2220416c460834f1037c800d6a40414354491831c28c1051051d0808b236e40c6d2955e20c124b1abec27e837a339baa7d31c3c77d4287a50e4c5961d54c183cd1051c8c082180bd0c842064d4d4d6aa69fa67906dc59c81f2bc810488ecb7fb2c2327f0efe1dfc25f0a3209fad953ffe156fdbc03f83c53b4b7e7fedb7fd5faf46c039ccf2064dc44e90450e430811f92439caa2e4c4074bc6908187e697f5034724c10403174c61821b5a285451060d623b0401a889164bc1499a1167c777693abc6310ac9c5d8a7fc68a447a0de18c3482b041900d7c5c4308c183249c449101930e9ccb74e802df9683760cfb26c861074c44418434c5518b5f94ac118e6072041457bc000ba116ff4ab27c74d0f21202c8091f7a40d2e2c791ac09d020c4162fc450d204102d56018b1d4d576966933973844b4e7c0ab388af71c7f5eceb67ffa37e16f634a1df937d0d69f8a3be16f6685fe7cc5c52b96bf8c35ae6adfdc0499a913906d22261cd4e184a8bfe1c72d1df9315b6c35132396124ac8499b8f38f7b1696579d05eaa2e0843d5d14640eeafafb12ab7d9549e1f4daff38bd16f634c9be47fb5398853f4e5fc39efaa790c8bc425a740ad8918f5c7f9d1fbf1d2d72a055fe595c8b1b9146e38eebfd0d4af97d4db3640962d8ff24cb566185110e633cc141182dff972c1f197820039118614439c10f5afea264c9316c88828717fc7c01e443cb7f2559046022a94a18314852032a2d23ad0927694ebf6dee5ce5b8f119ac3fe5ec8f75340e2032877bfa1590391ccc1276142b0b425ae89bf9a7df5c38e28e660969157d5a5343433373c58b0a5980d9ec9b3210eb9821101ee10699c3a105a40d7dda017196646ad10fe22c9f167d21448af4f48d4be6f0fdbf5d2b8743f8f2671e0f6ef71848dad0cf886c9016d9dbe12e9029b5eeb30bf275b0a705767911908890166965a1063bdf3f0bab0d56d229e81076ac74c93c837257abb5dff72f8a57ae2a0d769c493d3357b55f5291cfb7f54bea2576d4eefc20ce9a44a2858973ca9cfa3ec5f7a42906c9a0a0332c28a5b7d344f624758ce0c3cc89f5efca3afceb7312ebf0b08b78842b644e0d3b06d2660625398b93b219643f89a8c8bbe8b393a876e158edf7fdd730c93381f5ef77f1abe8cee7d77c76b928fe7fdf5fe697952e57870557fba6995b326f7df23a5d73ffce32aacdeaa7deb89b2c6de487d26772f5819ba2b4919ce4baa32172e94f2dfb51d3344df6f4af6a158b24d67b4eda4cefa6cca1341c85d4dcec4fdc6fdb36efb66d2ec070b7cc05bedb9fb8f972be8dffc28e326908917a8710b1a3909a5be3b39becb3af5f03ac9e8485e367f659d7aaf9dd7c1b202f81bc851c613ec75c6cdbb66d37e32b2dcee76d0b59497bc26e8ffa5126b1d037f3e7b7c0034448dfc8232a45775221a2e9ce2f8202679d62795a35bf566b5d7efcfe67cb246f0b59871d5909884848c99ddf44a9af95687e0bc1fc84f915820075d3dd52a954eab7efa5663550abe66f3f77e0b1093590910eea9b23387e3ecf6fd78dbeb13f79888958323fd61bf332c318bede15b963cfcd8a10b993ef699ede0638fa5c1bcf65dd0d1ba8e750a14c0f7951bf232f2a44bdcfcd406e7b14386e7ffaefbbcde77620117abf70eec0239c3e03c7be724fafe336c0202d9e4ee10a2d0e398b81a46abeac2fdb26c24f8f87081e8fd3c78861eb73a8d00420d9f39540405a9cbf819be79d3cef94d500e5f5b6ed6b70dc67e0f65cd69904b8cfb21adb56e3757aab71bd4781d973608d1a600a8c0147c632b2160b8e1d6f3f1f4873401e5511bb2ee1f8c914154cdacbcb6d9bb76dcf71dc08c3459d4079370ef27e0347466def3d076eef810cc423708fd2718e7bef755ade6dabf7c481db86dab64781dc7be029fbd0851d79b57047deac937080a1c4b9c8f9b3ca441a52f2e3f225bf02a548e84867695852152643403fccc44b465090081521f283675583851ee1a42a4c8626d0fc615a3282e2485c2896c54a12119336d2404d4c548cf8c5487a8a00f941866547916165286d441e3a649df904d5ad6951d2213bce1dbeed739b5294cc09d9ed1186cb61d7c401a15dce3951327e3b1ce50c43c04670f57f82dc5770a4b955fe57ebd441c323745f9f9b6458efa88aa66b9bbbbef44cc85efe0482adcf317757abfbe4de2f178eb2c55a6958470f1ec1a2be7a345d8882b4f16fd15fecb1bd9f5c4254d85753b2f33bb9c92ab28a109a9bbdcc03eccddede2cac2dd270861276852f2df95215b79301c890a2ff5873b9cd90ce11e99b97f612cbf5519e4144488bfe2e1c45b0530decc8452ffbeef28e7a877925fb59bea11a09e48d2bb5e84138c08290168814c18114dd9feb7939506ae006da6023d81d1bc69a2d7934e5752947bbad9e1c07ae3483a613364e934ed70c8262c7d56ab55a9dbcda5590b1b4d8d4e292b4f16f903d909540b67202b90ad88106903752fa7b1752f4f766f1b4ca9fe32a8c741d29e4a49315db306f2da9f798f71767d5787f5f82a5409f560ce8d3aa01f6f8b460fe05f469b997826cc13cc75d0d10e653608f4fcb3ef71203fab4d8e341a13ec6c5c5be4ea39e8b7c5afe8ce4feecded437fe8ca56f50fdb20c69e33f766739751b782b88ba1a288f9e40e2f24f2ff2da8d5ce5ed48aef27e09a2a0053be62e57f9a340075af227bafe4330ff1936ec891da5cadf86eb315c3fe37a96eb45b761dd023bf6abdfde7f39d73854c0c927624754842e8744dcef5bd6d100eaecd4d98ba0ce4e9dbd08eaecd4d98ba0d43d8a39bda910cb1577f324b553be7199ce9aa1d48870eef6949a64cd19a65ad5df3fba742a67d2e952caf697548723a6a3a32c49acd8e25f94ce797dde4cce29a96891546a5dc556449afa160e63ce94969418dfd7b08675dd16326025569ab3464b4da669cc3c21d0802d5bb630eb40ca0d20a7c438a360b9328a96dbedee5190a228b5b4a10127a594294481041a3e49ccf8e148ac0c143021a325813003335620c3194b0411a405101054a0a4064f38918518589a40c3c81133e400881c2811e0caa328315c14195abe2f013b1cb1033284989298023444860e70088a41152eb0410a42e850439429b4a08105546e60c5942b49245921842cea1628a0820c1da880b2d4839226211d922842011643596ed0420659044bafff9aa3306695775e8f8285fb6991835244615b643857225d8f36f9d003a2ecf966e0cb1c7e8f8787f2662ef096db4576a44d5996b5208bbb0f81e6f2c075fb2dfdebcea9f93434d57e429058709a826eff8e4fd51d56e0ec68553f155be5b372e5b6645ad59664c99618fdb6ffeb7f1c7044da6c9607b910d00dda0113a018d09166cdfe31f5ba93c3b11b5bcbedb1b3dc9644d30630ac586bed8bcbf17ddf4b589a0f0cd7ed9f09c29c69553fc79acf7c93d02fe466302f3b7e190c12b69bf9ec935f08dd760afabcd2dbe962df8bfd68acd8c86d26a2db5f42f6c997edac1e4646382bb1abedff82ccf00229d381d63177d12078114429161abe45614d423f2dc2c68c62d6e8766fe17e9a78506d62265ef29f168192ec133bba8b3f071d6861bdabb578501a4056e0d18192dbffc38aed7762bf55b655fd368a1debaddd0e5d28396dd290342a9a11c8d7048d994fa8d1e786990bb6dc0e3aea629e61b3b4aaeb65d7215553b3124551fc7717285d6eff665860477114c5bed96ea7663aa53561c7aeb32f23968e502c144b8b0da34d14d6449b70f8676b719706648b14e991597a88c82ccc548914e9497d4588482965911e1cda102c9d0b24c9eed2a5737625075a6ebfa5439a84fe06b232fc1cca1ff4a7fa67fa697ad53076d78ccd8191db9fb219ecb6df8681cd92945e4bafa6aca81ab932a4db6e94b94e60d8b15eef60f5bb5635600b2b3f4de6d71fed8561694aea68f816f782ebca7770bb62757c06d5b04b49f3eeba1c8a453655bb779f0dd324f34bb0725d524318dcd56a42c39a161b8a9c0efed0914050d8e275fb79645886c3213fb2a734eca9a14ff9196d962d1919f2fcd09e263c59d8c3adeca91557608f5105851f2b708061d3061c9c1603059d2b4db7bf847635ac4a96bfcc0ffaf3add23c811da5914e09cd7a570e982f711885e5e07e85e8f6bbbdcea1ffb4e82e50c7815a745161477fb90ef4eeea1b972ff95fae9c7241772d5d519236299cb4b0992b8696eca730d7e9418ddc05bbb1165d41d408978b6e89652e3752853d29d98eb558811ac955a72fb228e64a6ec921e200e9f6d74823d78d7c1664204a775718cff7a7c9d8001c1cb9fda926f3539f096c901ded8aafec1b9fa18c09520221892b38c05c2ed7ab257f86397860c7d56d2bedca66321c3f9c1ce14a6bc24e1a046ef46f1cb2630e6dadb78627334d8bf2761276acff5f73832bec3968670de5a43270dc92349a921bbca652f7aa710f7338f82db63b757777d00518ae640ad2b4d82fb67872722a6a12faeb1576b4da123b6646cfc13223e762edee31dc36aa2e0b14743b1c5b49c89e884e449911963b5a588b4dd2c65d3227c963902c1f729523390fb73d05a3dbd04abd345a8785271792b34e40bfa42165468e94192165463ee4433ee4fe9c19d5574552854e2e09849993135166c4c194b063e6e4f68f27a2db2d33275951b3dee572b95cb37b75518e20090a72c1eb480ba27e7557c806b6757ccefe42baeb610a097b84815aa83bd20dc18ef327f8f22b1c5db9bba720e9290bcb214ed7e014861debed5ead3e5595b4dcfeae6b60c7bfdda5be5a61c755dfe490d368fa50abb37ab43093aa44e5f677d94b9a91dddd1dec42dba291a02576ac5a123b5606ea69b15d2d5ea227b4a96fb8a0599ac54ab79f62a94bb45a61c78ed126eb75a89b7aa9952e6da2212d72156d5a126f8ffd77ecd867744f4eec546ab1a795167b26499b7e59449b864e4ad811a7e9f6e3ece86a0f9cb4b1dde5eed6dcfe231bd0f0ad2693847e29476666b16f5f1ecc3097cb858296575efd0064845d3ffc03d424f46f5dd8b1fbba1aee6765b01fbba414a5b72036b6969fa32c5cb7bfe7a7893f0ddf9a2f699c847ed419d6861d911d5376063bca58176147197b01ff587fe77629a56b435822457ef63093eb080b24b7bfc89c943ad39de1c8ae223d2d76486423c28eccd4acef184671e81c82e49115a6cbad7e0a841df9e7b6d4f2b369b1fdedba32df414bb8f925b4aaff94866d5d51d42a698494a4b4d4baa2a955d2cad01deb4dd5a0caed9d2fa0f4cde9658749896b264657de1d2f88fa464691c4d095d75fc71d3481efce17452dee7c51d43732fe7c3ddcf9a2a8a7700e909773a1a0068ee018447ef5b932f3a7a08e4fc96c85937d73da98f94fcf9d988b649e03e43d81f2f4dbf4b659ef14aadbb6fd8ebcdbfbdc1ae4f26fe0e97bbe36a76d510a27392c561e2565b973888c7cbe3227b82c29413f917997b8fcadc7e3a18c0a02d8d2eae71650d76a29250cdd9c444596910ba78f095c12dbcd8dbdaa99ec5c831ddc6ef514433b53085d7954e5ca1d690eb7df00571e55c1723997332cffd2159e409c094b4ef939bafd0dd42c1badfe3ed22c69d448862e8edbdf555e43449d516fa128cae5be8b7e5aeccf6660477e757b7fc6311a6cbb42d6d2626f4dac8cbdf2891c7220d2428bfd3167715117c5588707d570e57716f60f96bec731796532992c1cf2a3863e64eb7315175d19edb925235b5b6f6113aa6521cfcff6a7dfc29e263ca7b0875b2b57f9b4c67a9b631ceb6f5703f577507f51adddacc3e59eaefc222d7691b46926a4aaad707191abe9d53ed89163b7fbf4c40271d769b18160f9a90d968b5a6cf226f790a1b41885144ea460f29a966559d6a29297a6695a289d5f33884da119c05e9f0d694f74651449205de9f1c8c271c53559f944d2ebca27aab8721170e5135560b9fc7216070509c1caa31914212969b1f2488a2c488ea4c072f9e79189a459b2a59d5efe897e05ede5a6b7433bf64cf076a414ef69d65bc1ee72f6a78721c2667f3a8563c81374facd210f3192bef150ccaa541d6c7dba83ad2ab0f5398a029bd3979f5fcc1694f9615dc5d6552c512f322a742edfbd6cc9a8807ac1beae3612e9ab79403bc19339a16b0fc8ef1f415f0f642f63827c02892af2092490f8134820b927b0b32d74b73e0a9451e1e5055407caa860dfe55d42d9921e10ef5d42991f2edcbbd8d08d3c20a8ce86323feca31e15f6a0dea261390bf210137111c85d92abf8d5227796a0d7149aaf39c49f4961a90d965fcc1cf4723fbdda43be2cc4e443acf9a24aac3c5201933b7250b33ef725ec1022f64e1da40dff4c811c61762f0435cc04973b8382b0dda0bf060a691085165a0c351a64b923bfb8095f16b7581ed100cbe56725da6bbfa3ed642e64345c22a7e7fb80d33d9d3ebba7702c727d68a390861569518a7206b5f8cee22452c54f84880413382b1c7e491b36c34ea1232df25664471f7e1cda1056fed6a91b7cce39bf878cdd298320dc39dd73889dc5c90abbdad137d2e804733569047c80c310b648230c1dd2905300d183141f5c90044b122d06a30cd49c0d851d3f1ada49b75f1ceb8c014baffd422507d75d89196aa75338d6b07e320bc74ac3d1ce50b63e35e32d98f206b2dbff857ef964079efac19579c09d92af7021e0cbdf6558e91d02f11fac0cc7192b33cdaa4ee343b8f8fd0ccd1704fb575ce1f4ebf4d214fffe2de4fbfcfe1fdffd1ef6742823fd7b6628234317a405bd95e0240d8f7c20b2e66065f8654b864317f8beabe44a3e8e7c1df93de4920d29202052600694a523a0803ccc008734b68862c60d369046407e34f1b4289380f0fc903d7c4753874b324f5d16532c388ba708db82b3bce767c159d93377285de527b066ab56f18b4eb3a366665cad709e0748aa89851666a55d9b4e2f5738ffc9a45fe97cd2d797d57e3e705fb597cdfceffed2bf055779105ebd78888b800471cfbe8f2a8933fc2457ebfbb466f843d3566801e14741e9249556b67ef63f1187e79348dfaae50169d1bf17fd03a551a8946c95964d2c99523300000000002314002030100c870463c17834240beb3e14000a90b4466c48170ab42489410819620001c61000000040004686682b00c8ae005cc22a465af04b669e17619cb2e33312f30f8ddf78e37e5121439233380bb64134ff2c9d536ad89f40fb2a22e3d3b1056d25492c7ce97d7045c11eb4216f30b0447d70fe9e563ec4fe283adb834e5e363f57596484106acf5a9dc2daa1545d6cf39287e41c2ba22b355e8d9c7ee0e975171fb0ef1d45908b229a5d79b42a689030cf077fb3760309134339b02adcc2e19ce1de3e7124999ae0203567cb02f1daaa72a287815abfed91dca1b784a318252ba5b7277b3c2d56b9ccaef5b080fa379abf7388c6e608807a52b546470227887cf373e311362d9f0aaa3ae78a1d7639df32cef0702b5b718342c881454a8b0c719d04a7dcc0c32d34208b2c156532fa0368480ad0367c80d6c1c0284e706cda4bdbb2defc1e9236261e493210cae98f3b7cd4e81bd45d89b57a32abcd09ce6b6e8270a69f1e1fa79a75c19f7c8a32964e901ead2fd3dc4a248c901dc1133bec95d7b8a650b2ae47707dda80ca2b2849ed1fe859341bb8b81f624d85578650804903f94f08378865dc753ee2b29902d9c4e945c56947152e9e26395781e1554c3c128eeb5e72d929e137fd391bfa21d4c771d4af9c0c41b084c5e36049df6969fe85b59d2b9a01ef57ab843ea0604347460b1ce099d2d440bf8180e5086e8dd77d07297de675f809694503897c8b92e14997bc97db554f4f069895a44f390e95dfe0282556172fe9c44d562844fba4e0ca45b55be410239b420df916dc58484ede1e7100b88c52112f83ea1c6ea336777aac25815da66af71fb692f5c82a1da4719d4aff17d513042e3727759905bc44cc17c77ea1e5f0dae7037c2f8dc00411fae3fd00b3a0c25648c8240a4f1937e486c5966a904847ff8098c9de039660304e13fd337bcd3b3054b67fff757b3131bbc8516c360cd87b90c96a0b4ba6a8f3a500b60d0a753308babff0b791839182107fb318954d4cf18335af1e7450575566bfe36338b01358e21606ec863628b953e47c1866b9e8c3467293c28482412277f007a20da482153189bcbdbffbb0ccfe84e022d8a22b525ec2d5549ee19f65b1b718ee99889920b7dd6f3942959d16e4e505e1d3221cbe66a38e4b09cce5f7a7af024434d995fa8358e1fbafcc6569201782f0e5a91a875f80d8e2eca7f806a4688723c90d9fa17b3d7fabd7e39d26b44343f0bc05829134c01f241a874e8e778422ac49209983f6df4ddfa346bf5bc9777f21480ff16a8649b5eab54d0cf32097845be00009f1f3bab64c9c5c1c1f26f43f837cd3e771b332eadc5fcc89c2b92d26256c259769e90b265a08687117ad9f56445047974df1277694a28e07dd6b1d43fb3152eb49b169ac709b8ea536adf9fb627cf1af006374c29f6662ef7ee96c5f31dc53c02b4ecc3973624aba67e6b649c2cee6e62261941acadf74b95aeb7c8630979c88df86a1da2fa306a3e684e2d38880a5017ba2849eb7f467bab193bf5e6f59271109347322b840fcb53c0c041ccfdc5a56325a972c9b60c87068f103f288d6faf3fa0af9d57db013ee7626f1bedca1e3cb9e9265107b21d1bff8a13996a8b8f3e81069edc7ddfb58cc835fd1cb55c2580c2ffd9252445a1544c21276e58efdb039a2656f31e672a02b717421fc30ca2d860c1cd98a4df4fc0d3461652ebb847aed104a6666836f9854214c82765df2c1d021cec8351f469b12cd4c99145a99d3104c373f82e88cf45e0f1e2bd59050f114881a6af44290e1599c389192c5d1eeb793bca2c9743f0018f4b9883d3435a1c2e8b35baa57e64dd936c311729f4e98b07ff3935d7b3b0b8a43f78bd2cdde8acfa8a4308f21202c568ca8507885814616f4a7ba469a0801abb260b494fe04d19ab88600cb5d7a079c89b301ec5297ab7a19ab05e61bb73f63a7d4870ca3445ea619309df3f010ad52055a303224ec2022a4714ef830f4f761ef5b9f989cb9a5ea0df50fcb9295ace4054eb89e4c39d3ca120c6200651bb488f9d1e6a6dc6535c029a4cf97c6a7fb82a714969a636b23ac3ae184ef9ff3a47ec5649ba66a3c559d5d031fffa0a956e31c8ffb5db6f5372876455a1482f05262681a2ce52c8dda1d73700ded14c499dce537c0594a4ac2c0e9d803567ed6f0ab99655c1841cdceef70778bc2bda1f469cbafa470921a662b2f15160630e4540c63e6cb53ab287f5e6f0be2f061b74ae6c21a9e451d4704948b142eab709d38e04ccb42271ec484943fb91686ce120beae878d2b9b9e86237bc5ce04829dbf3ed96c7cf3b9de4b69df58287e51cb0f19e7a016527a6ca72d314f5161eb581e0539990e051d8904d3978e189ad97058d94a8054dc4aab90b39a49c312e1c0e4ec2ea5d71e4afba09cb1c3aec1a360699a76fa3598d5598b81cc5561865b5afa757b31b6679d0c26e488d0fc2858dd5c527630a2851e6517e524941aedce8be90c1ec21929422e5f17b2fd86dc1062865e2c1e05f600b830e20b3af8364b9e8056a03bfa9693704aaaf7d5b85b16034527f69a70701022ba248fe1faa8bf0e84b5ef5ba7c4b4d03b0e3a23dff58e938589bc7d6838385b965c6e79d9d985a2ac825396156bce423f5a8b3a7a08f7a7ac7d8393eb44df78b76117bf7f0d535bac9fd5a536eb91ff0b87ef62f858b275335d8b3e0194cc61eeb49f71e68d5a6d78c0b66b534c8efbefb7cb4940d5d7a7b507170b28a120dd81a16cb6b18b40d5a2a2146bc7685e8637849c98e110c7d9da4bb1fc4fa1a6a66c96de2564ee6ba11099cc5b804845ca5ba9c410b2819557ea649540a31ee00e9813417495edab270e2bdd82439d749e6d093ec0428a90967c2a71cac96e9f348390f0789b410bc6075983243d7c08514ebdd8ac97c8786b223a80c1cf307ad817130c378a89fa47a4109b4824dbfcae7a4a6d118dcf519056e0896f8a0ee5e21f0e5588ffa48c2d23266d9be2dc04342ba3cf9c3b02ac56165ddf0a5e7371fdc8a1270d7e43ef8b1b7947777ba2360d9a9a87189c9b1830c57f0f6f73356bf9b2ab07e2660adc61c27aadfd82bbcf537e61e2b32cfb3d7e4c7405b2b646d96902f3b2c41d4f93761c22707e0ca922cef36fa6977c8dce83466b458b22d8a38f0d65579e71b08c10474e8a2409c63cafe0584dd1846a4798c6b3890d29a9e406c2faecf44cf9b1503ff4320e77142bf384cf8fe3a97e714e72fd24430aba0ba5371331bc26dd75d00007075a9a65a7d0573e60add65eb4a15bdab35813e40abd3bf31d66186197898b800caf0eab596d417d1ce083a00eb63b3840b1e47ee4f1675dbad3acec0b65f0940dd555eaa9b9bde65d8eca87d19193c6d7e42cd5cdcd33afdb46cb020184722091dfebefeb74326ab57e6b450d98e827f11ed94292005034d4adafff0d4772d2a9bc25579f463cce499e7ad4734c8c7ab54b3b40c8cf88605fb713d8b4ed6a3a0d290dc8c1e36b43841b7e7c0434865cbf4e8ad945067d0df83690b55d972fb7c2bc59505ff64f9bf949674d837f3de6286caddbeb95c43c97554c6a6a66efa51d10f66e7016bcc2c8e81d030e0105bcfa7b24155dc286f759c493e3ab3a461b694cac921219fa3040bcd8ffb4d3d01689c1b80915f4d7ca67a53fb77fdf6392dcd18ca601c676625e533d9276f331417b1d6585213e259427572ebbcc9b666ab0a36cca567cc25a4bfec823287748198dbe64806517d26f753ac2dc37efd652b90429cde6110731eed7818b0b8f983a82797e05926eb22768ac856d26446105efa16d637f169d3f5abf8963aa046114994b4cd9f42bb3d6f200a63802ac18396aea180cbe71d63982b73480957c6d03cc7f2dba9634126bebf674767c436e4041decd812193b6e10b614049513ab5a995daa2edea728f57b6b1dd39e1d54cba7c5932937a5054a510d4e90da5d70cd5584b0ccd7acccabdb1780012e3fc3c23208cb67969af78b8251629208f80502a48fddcdd774261f50c92f9b22227241bd58ecb7bf4eb84485868a1adf39f3c2573145d6e62f3a486ccab04d3834df8accfd0de423bd96144c2fbe8594171507086dcfb366d709ca291eee501d479792cc5a56797e34cb69df9cb04dc0e3de3e613a9fd633cf9e8dbe4084d17871bd6d798ca673dafe1f01c34b976e08d61d99d4c1488e7c94fbedf7bbac4d035cf99391d80c7d10c11a7a994a3285dad8a22af310c6a614094e98f679dc54d05e16a94e8eda196b4f455ddeedf6d87d71018ec668e79c03a3a419b85fa4b7e06d52365c0401f0060e90462e936a0128dc56b49a6f2849a700e8b524fbc409f05e2835082d19042c953f81347e2407cf05ca6d4f99a610aedf72ec01324c7be86e5b7aa5cc039dd3d877470747d89d3ff4a53adc989c46e51551663d83e817e5b4906e8a0cdba8801e8d22dafbb958c23bd386180ce4f4a375dc8a1ecf968ff76a016e1f89e4cc01659cc183380e1f5c34074523dcd829096a6dc453c5489a1b618c8f190d588a4afec3d217d9f164bae991436c3db181b0c63c4e39208cf8285f2e84d4181d583194f45f5015405dbc897630df55d44a4e4200879875d9a2fdff0ae83075b9df7d6139b7fb98ea00bb10bb3674e2356f11efd1a7255b6ffede1a699de860465a4731058c42b0122168cf24e850472b97b996b68e5f1e6e25e817f2fad7742b8ff3151fc78df15167a7809048082d3a9ad4557f08df7de88aa59a1cea3987454b91b457c936242b804a9ed8309e9349c4498088ef117e9a8507a98324c82d8c506a13d861d926d644b7093f4d8cdaf3aef7a198c496d85cc7a48cdeed212dcf6d6245d18119d92dc375750fea6581f5dd06cd7a1f0d2ee65599ff93f2f2bdd42e62a2db2c02ee00f9ab951a9592526a78358eca6ec5c73bd0243f710df06ff705a9fe93e42292b5ded75a38dfd1ca8484533c57d1a24f6af2fd6317f03001e140cc0addac12f3d8c15332f23353a0495c77be2a0c0049c69147f3a4a589198c790c143123249557b54aeebdf85c10857d2504357c59ac564369b8a230c1c074b317d429f20314be9b761fff3b12bc978f540b223de69099e09f6b1b595aa22ff9d6fcea94c7a03f74e0a8b1199baa51a1427a58739213458cca29963634e82b41fadc52aa89d44fd251a9c5fe1663c0b12b8e8e8e8054606912e6ed655c5f5e717e47a690f58b38dc5b4daebe7ca7757ab45c63a5f2d92a512a5128534889676b418a33a2d4fb99c7f1399d3d5626ad686ae5b4ee9b31e8f0c29ab6742758b6b98d2b78f54290fa735227b03a3829c1d6f23d1083cbc0bbad47a8fe8e80222ff0d52cb75d66127ddd80265e13bc99164b33a0d9b7c205449712b4764dc8ef8ba98552a6409913555f51cc990588982ea1eab390abd1657be8128e79693165949e761e7f2c4c38ef4754c13c6025e7639f60891bdba3efb0b7932a4d5c2d67732012c991cd274cb540f7c0158437576ec1d6915fa96bee20abf25c5a9c4e5f2c70f91268a15ca169e4a8a82d860406fce22561ce13fe2635fd0a341dec1ac16bd2d5aa2e01f75077e3e11e944e5747fa424acb1f5b60152603d24a8258dd03bebe6b8955a546d3b326d5bd276eedeab53baefa00814594e36473652bd75fb03e6b150495df373b58c931cec6a5f2f11dca2d2517656d3935ff444ef5679f7c4b7cba10ed24fcf1216c93d95d8d8f8c6f72c1b3db0885debc40692a11ada48ab8baea37824cdd93d3289a641aaa3886086f445141963246c20546cf463b01fd49a4e8468bc6e5b88b3a202bfd8ee436139b975102b8edf35a734ec0e1d1454751efa3fb0173a6064d7a12c9e76ba80f2fe76fe03114bbfc3179cada28bb16cbac1fd087912938ce003e85728db42fedc77db6f2693c5076967afeb880171ab1bb0433a8d4ea30bc972045027a1d2ac3613ac41ea2a0938febfa336fdf8ecce7148b830a1744db442f748edcbd2a31c87e721e5de75ba37acf5227767feab6d7a4b49f3d902efef474d600f0512bd9334ac5090e4a8c0fde41919dab5a079df0f9d43b88812d40007df7ed2ee12d5b0ee3d5c30bdd6e5eb0f1ad2d8b7acff7581f6d750b01ffc729289adbf522062a97b39cffe6e323b9413892d640e329230af06874b919d4c0ae6420a9592a0399fe570aaafbf7bd198b0c89bf73caa4530a540f3c6dbca5242ca5b3179ac06ee29283ef61ec1a7330a9941e977c76aa3b62ed58041d19db8d61e750853114b07c9794bf17a1fa773478e7f60f0019116ebd019c89e0e23e7193bd734bef3acf2212de3d238f08b1b5fa225ca2888d8f8bb9a97206ca3499851d253c4a3b0219b63439129d29f1929e057bb01d6432b8a69b00d4ec7ae16cc530442cfbe360dde6b67a8372440f82c2e430ae936fb40c64981d1d15761dc76c4019c5611cabbf8edb117ad0f65c3e5fe19f0ee70933c6028ab6870cadd5d75da04fb9caf6c7346890778a4b5e318ee3dbcc9d8a766f168ea0bd50ee9a8953d18c8bdd2861a71ae52ff669058b90352c32dc8da7a8cdb20c2106fd201490ff39175679ff3901d6ef540b98ad662fba28ad767a8209d7ee43c1770a58f62783910f6b8a154b4aff6a70c25218b87bedaaa4bc16c4281708f4bb3538820fd9843edddeb619756d5e5c53ecf3637d05721ebbda7fe1bad109789e695bfa80535851894ed7a1bb3514d0bc0f6ef8425e178e75139863d8ea50b4f96e1fd6352967e24488d1a1c5ce4f54f2ae3194f08076ca4958de277ee2305e03784d0565afdb027bcf92f3fb2fb70deb37d7be670f4f364cd2e4a66e4853550f27705e46f7a5b7029fadb902b71565a8f68b71e07334d54f399a3a27df69a5d573bce501e28b0bd01166283df2076dc1e8e18c08d1c24d264cb65b16f105238ce2f64bca38c44428b4306d6171ded2a259ac5b6110cbd88b56f38116a857fc79a38593d7e8c8ec42bf9be4cab7012400a146f61cce4bfa92e7465213d2c807f6ff1a3114c3d9b97e91f765e5e75167364b46e5217fcef09968ac811294d74568c62086727d03b7a568acc85da01c02b12723f159643225e0b848849d30b98969795393d0d63722dabf4da44d55c5a40ab170162062415a124a628564c92cff2c51338376e3b5eb890b00ddcd530f0c8c0762213e53574bea0d8cc469937625c885814aeaffccc59c2fb8875b63f40423d933b98f3682a20991081f31040167e621b298292caf02ed95db49057d1f13e0140361fc16fefd0a1bd2ec17e96edbe310d94e366b9a7ae6acfeb7b13841ad53e5a0ff4a37a1daf519d09ea81d4057df4a0f0d3906908f2ffc7c7f31d91331dd76da198701edbfccacf9e9247a614e5935196f2cb44385c98c71205dc4edc86cfcec5e910de6ea0845dfe22e56d24f9a974a18c09ec381464e9e22f8e342f941ac2d6034c60f55e252f14826a47335865eb097a8fddcc6e18941772702da36162dc05d17c5bec6b7d61f85c2b73fa5c4c6790bea4936c1d6d0f5db9f74e09d7e3cc40e4e1c1166ee5b7371da298e796552160e4b5bad0292a13220c553c4f6545a13e2a5369fea6f410cf4a38a1a5c07a0ec2adf9b5c4070e3360a01d548ed84a09a355f7325d100937354db0d28753ba27993f70509a26c163e24528ad7f6006927a6977ed744b5092973a89b6ef5d26323480c8ccd528581575f1c10675726aaabb74c94082ca1319b1f445318f28518eb16373ce71d7499dd3cb60b4635e1832b450706fb2be3a5fd0ca38d8248d21a4e06b8e6b6d55dcef2e2a3522f17a9b9db0597f366eb0bb277da0d9ed0fb5b45e934c8d346652ee6b913f20a79eda3fdc30fd1b6aaf12d21bae1465ac59c78fdd12c84dda4679220fbfcc00470fa9533c9816b3e07f4e05950224012b2702ca541cc09a2917bb105cecf7d104d6d4dd25e8f76242c1bd6a0d4334170380f19f50ffdf4eb36a953de536d17ed0bda612b4d73c3630cf71600b8893dab9cdcf5bfd29ae5b9c056fceac24919e76459ada30cd8f39ad415e46e8eb1daca25c96b795ba5276d95fd36dbe8fe32fca83b6333b8a92b5bd749a9967c539790a54800c1d19450d1981d3f2bafd9c3ee29d55917ab3638d18c18a49ef0593706420b40361cf405340b9d71624e9231f7a9046c517939672f8aa6dbd158b8ecbe6e184162ca66e184b0ca7a2e2b3f5da24b297035138b0a5c5446535e156c5d4551a3d63ab0cde3603a9cb974438ba00ec7a0b8e942564466d17731e92bbfd8b2a10ce293423b6a5648ca0de5256b2e7ffa36e5b1aa2a02d4fbb57e4a6e4065bf8901d59710fa0c7c5e2f4dbab8087a6dc264e989c9058ec0b390e5f1a47a3144a1d4c059854f8954a5fa33e57dc8a5c5298a3f839049759b93f516d6b2b3b17b5985acc4a8d5371d1d01e9042cf3d966c1245de0131e265fa29866419a490dcbb8840825c9b393443a1a9660ba2b11ce3311b2672f0ccf2f41ce6837d04e896d2a331bb4466400899aed6d9bb0afb3f502d044e80c43828baa1ac4230239ae737e06ff9f17a85f026e500f068cee847596f47ccbf6e093232cdb933e529dc36d4d4066578855e64e936c602eb95dc4b652780b7f529dd544d1fea45202ee4758b02627ec6ef06e9288d6004200a5a4434f3e2c89e7a77758a1a7211c71a8441696180f0ca3d9230ce9f31558e233f0818c4f452a829f20d85cd1f5753605b1ecf8d8941588c599d42cf906f1e669081ae2f7d7375da11ccf2990d1e894e517e889c4e0cafd4d687a1fdb5e9eb040f4db9f144e86946c6be585b174d9d371c8904a7832bafc906093c5037fe3a0ca342f36f4dcd8d3e0852d9106d561e31f664af531495b1f437e665eeccaca0bb2ae7526b33d88f93e43ccfc881f8b4ea4944eb14f29c4e9e8bcd110a77c88b94751e4267c02ab76ca9917f994dabd551c514a4e34019f2e82c632cbec7806b4bdfa369bb94757a63b83f99084230d36b4fc3747adab744cfde804861aa484acb9170962445c29fd0560f7cf3870e4b8ccfa6ba76ec62f63132f24c6fdca821bae05a5e3d01f27c5a13d3a5209cc4bae73e804c9eeb39ce7a6db423e37e2104726754d5fa9074f841ef375a6a7b43141f261ff835dbeca53a702a8994d8296a1671264504a9b4fa2432dccbeeb1bb0feeca593b2c07732b779124b38cba1b793bb0fb7c6c4d1498e96c91bca1503bfe0ce155666e4dab315ce844f6dc795946c907dff6ef3515fd782e872079fad8523d70d96b466fb4cf120367c522200bdb764b1168f3c48d24651d1a68f5450b8bf11e47597bbbae4ecb03d7a7404d51d5ab0a63a8b2ac62385d69ea017c8b1bf4698427856082547bd869a26143bfb4c2f2e2bb6548b24694da5ea6943e4e70c13790b2b34e6294abe5789ba11b737986df53097267d18dafda59a6c69d3cd65328c11b59e26dd3e6f59d4047de35238a2d9efca100306d5f4135712e32d000cd584d2b237634975613d460744b0a2b10ecd19ef936e330b7f623ae5c953f3b22f21bf72e666d4f8fcb9ae75c4588cf7c98b95f33e017d4afaeb9ab6d33a8f07c48743bbbbee66fa3d7ef5e4868f0099cfba7a1aef8e0c7356fec144bff8d251eab8d57cc4cccf2c82fb922dfeb65acc1ebff390ffb356e407f558004b4754361d970ba09a259c330c70db7062ab0feb2f65f318fc90a0fb6095fb7ef85cbbb27f49aa6bb35450be8b2512876dd5fca1e5ada9940f5a5a7dd60b78ee24359e305877f884c829a182b677666eaed1a0965f1154d0da9f63bd6aaf55fbb46a6b3be8849fe7b15e9d255614e1385bf6e5b264c398ded94cdd0e2183208b12c324ec6c7b6dec8130de179661893a114c0f0f7d12618c139698fc653e4e10c6d6bb8842cb35100744e1503da88d9b5ec1795c2cee04ee9d2ab3a9822d1c4ff72f9918a4e6f1f0872707838562f430e95f1c49ff3e2453830fcdac4e3a06b323ed5c134ca27a6bd8a52e06eee452d13cc854b39e5d385363a1a31d9998e83e177baf7313155887d843d2989e0f18d62254a9884170ace65fd9a4c63c6fb1736ebce556c1ee7d670a03cd336e3b0c6e014a7fe942b97f8878d9334ddb90e97f63b262db1f0a4460d8ffd98508ec47933574bf0b0bb5c287d3f52c1dd20794dbb822c8485652a40941d58b975da006047ad7decfac107bab9cbb868889209402550b856ffeecdf0f129d91b5000b1f59c4beb97e071e0ea825582c2cc7496d2b427e0bcbd1ab249dba7704b8e5c37cfb9affb257a1bde48e39183782d6de731ec368f3881623d767fb2cf701366df0f4cc7e92f147d2dafa4de7bf040300832f14dacf4cdff50b507988a38d528f9c938527b03c7c5ae71f034740984389c2ba97cb68f1f06108045614cc935d6003a7b552cbcacd327f5231bda802cfee27391e4105b00f70f06ff210699d40b2cc06af8c9203647a264619633cebbdb64f6dc8c6babc723303ac0a09e2e418155ceccc3a7b830932c9a6832b733db8e68694d24927523f9756f8a59e3cd053457f2dbf623d1c6520440cf8e3a82a7908e88f5321939def83c62a0e442d31406953ed02175f4ecd52d82313dfd46688a724dc7ccd82cd2a51b0077b228132db7f69d9b2d5269ad8a800fd1d866e48c94d7e6eef39db0585cb303ac14c2e541d039f9ec95f3361a7855f3c436a990b37b902dc53efa35403242d5a4fcf228829b87bee0391474116d629640ba3599a93f1b992606933225c5c9890b4ab0b7018f5c1cb16e8665eacbebbebcc02eb163bbf180d34397cde0ec0ce1134ed2b4aeb102e2ce85d3d356ae25db70b191f13c63507aa06f6c3da19fb001492b1573731fa92413b57936a980cce3f63e6885c3928dd0186123a13c5808d862830ed9804c887f7d79ac90dac6283a7bb75a71c858f80512dc37266c77ebe7df095d1fe86a9918626c96dbeebf58a08fd6ba827a5cfaebcabb5990c2231dfb73483d2627be608ae4691c6036788307534fbf2e3526a0f8faa966e470a0c8ab52648c9f2d063ccdd8a85c3a2b9889167b73463b64c33be515164e1c0d1e099dc0a6f3c238d231f0517ead31e8e92853d1afbc63e0e3fbe9260fb98052dc091cca6c085b4f8a8b8bf32580844d62061be3e79c89f876c47b21c4457a65c1fc9d31710a8db14357845decd8944780d0e026552f0a20aad7ae2cefa21fb1f4d863ce08076d3f25b43c10be85cbebac70db155c90b24bf90a1fc0f30d9dc2291344366d77e183d23934505aeb7b10b4411b581f29acf8a476d2a62496a6c476938b475352f238e822836c42bb67b405971c0551d0211584c61cbb2d2f1d0f484c11e330e6107b496afaf9f81872b82abd0161a622c80b7a9d47dd217a792a40db01f27520033b2cfca7f003898981d18a12cc7b75c0ae4029c2e6f309d3179f600824bddac366270a2ce43cda98aba5e5e856715288bc17fa0600c108657fea27be2b1471363507f49f7e0f8dd7003176d312bbaeec937d78aa759e44a13eb9be66a81ac53b392e5bb3132cad4922547181b374f6e6705041b2304fe2590144c12950c88df6908a38538d6b1fe0c70f2f8b0e4316a2da028a3818df132ee1d6bf807a858350d2ebce9e024d611be6b9d5401b4e945238517ff52df99cda5463b450d37cd2edb97a523699551cd463c3595e4933d1df896d817c284beacd57f34fba989eb18086796bb31eed50b37e966db4ab8a2bfd52b0ae8f4138832a1de50bb8bc2ea700e7c7d083f2e0219b142d0a3c603fdbed3f46bb1264e1b7356bd996211ca3d250799bda130419c9e63d58b2882ba2ac4ae95552f64523f3b9605dc470a00305af5116ff555da0dab8b45d352287784854377a1ac46521b9e033c83aa71ad4a7c89cb97afa0db65453892473554e7f37ceb9415498cccbae0973cfaad90fee703ff8103c789f19002337ad8f1f6b004fc28bd01710a0b44a76920f826086dd4cf13e070869657c80d953657b8d62ed5fcfb8a63fab0411595326abc7850548813aef762ef5368be4f6fefd6d1fdfe3c2b506665b692e8fa7eda0ecca745c5edee3dda2b6802c6e6f157c47bd2bafad7a869a919f583871e9a5d3fdbf15e22be096f0160108495098624bb69d739f0672ace22aaced754ad2d08e4e9a65439c652890c6fb0410b740368c1d72dcb8a0d762de528857a8223e0b1646a204ad152ffef1eb3949dc8152c1f827b170b2a9c58f00e0153c17c6d9640da7014497f336d019c0917fbe688b841a0d063ece997c143d36ce2f61d79c61120385e818812a338b89d8e6f121e708141938cb15e6727b1e85c623f8cc94e5a784dd0662f4dd6164d21b1b73262d779e577ced7dc20acf4a01187a638501b3a247789f6c7c6b3740ca9f765a2baa96e31c52281d6b3c06b33546a0bfd64d063c07cc02b6ad06bbf444b7aaacfee566af0e1e5670fce83fa9e6699ce551e8773d1e92616a0a7444f63f0f4ca050a9ca0cedabb8ba49c4814d3327f33ba8a6c357d7c90c5eaa212328e3e47e3c08114bce8f973e85e21d42a2109b78b525346187f708344ecf01392e06575e6b1926c589d78159d5fe024c2ffc5d1f7c35687132b02d7193fe5dbba0bf9e4550c554c5632fd578636f0fa0887a8ae74ca89e1cd8124376f347eb09d7eb14f27ac425a938aa2fdb2d0c4e5de703117683339f3708d4498b8a0f247b9e6ef730f394425ce4a0e251e7fac66a76e6cd2e29f3a056aaabc35704a2db807e2dcdaeb93cdaf1dc17b8bac6b4daf7c34b7e79a32abf539f7f44f34c5cbd5e0af409cc0e0e290431ef70ab11771a6d5001adcba2152ef8c04196e60483374de20d59c01cb581f829e100d6d5f5ee500227285bc28bd4aa0b0428e81d692f68ccb5b2ab43fc0bfede6da749d871618765b8fa00d007df0f5a06fca501afc4cedbe5c904ed8096ff0603ff083b371055542cc13c67341d1720329659c9c6747ac397d794221020ad6e50ac1a416246fb4732d9f8487db775adc87039ac82f7fdc7116366480ad2827dc5aa56e4d209efd40dc95fb557e9b661135ed59b588288b84466a34fd5831a4c0b1b21ddab3586f2a4c85a2054e16c6e0bece1bfbe04a97eddc56fe14409bcd87e42aa1524bc6d915a76a7d0323f9303216ae88725e622dc33df465946c1d8c6584883f6eaf6370a045e6de37b536ca315c885cfd65bb9e3431d11fe8afff0baac47ec270ebc418c8a41ab965d98c8ea3743803b417aca48f0ce93853b031cb8d37cf70e944c33c7d6d6be6c19b54d131116c610a685fccd1820bb92dcd6a473efd440b7c7815f4e5f8816f3af98afc32098f57529ed70c4b5dfe985dd1f919fbc0fd5e223f4ac4767be9055daace367b4af76aa32474c10cec261f90579788c1f146515f33ddaf83cf3cdb765b92b6367be29e36fab61b1ad417d19a8917e35537270834396979cc34f63ffc1315b2bc19c06d5d78989b88d6b897e7565d5a7f99c1aaae93977754d5a88124cc54d67600a28d4c22cee213f3b82f1355a5e8989ce95ec61469dcd96b289a9451f3d01184ad10226b13bf9a4239efab8e331c799beabdb6192e2dfa5ae8c1d480f24ef443a8694d295cd9e2e3a27c00a76a2a7f9ad25ebe496a83e7939feee9530fe4d726f00bf87b530d74a7ff376c28a6f69715c81afd3839116a09d8e2f5e343595312670155c726e24c52a1faeb4d50c648472e7c873a02d93d28b6f832f08ae36b6d28c2b341d2ba884947a70f57b1a62c02154b1ec1460251ad89b5fae6c5932afd3dd8442d2e6d05181caf9744fbcdc0fe9ab2f1f8cf554d1230a2f47ca4ce0e899405edf79cbebcf17b06d3925d32a55fbec2fe3594a78965ef9cf387e719fc2c076d4c25d0c406f44ed10ad30946ec3afe8cbaae06b4589e18ab62e5a486a17a939272878057d1c5690c9705c9ec88e1d2e724078e9bada09450bb041775634102f5b9e9ebf5a59246be048cd4020c947924bd14b06f15eb048ead16746b756e82815b1c4355e01ffa4aab7b0caa7a19d68572c3bda50f651741181c1812ba90dc404f3400c9e42ce856a38ea72b3837fc99f0bbe14c18502386dc8021376008ed30a0d1c6a475f93c10ce729ed4e47e61e629c4862eb2d987cbffe24efb0f8178c0942db8f1b6a404103a29c4b096b13cbddc1035cdb3d5ec5714d5f5c0029ef18c6e5ca45818a3d3b9c43f1532a278130ae4dcc06b405f475a8c81750f9a3fee43c3ae63de93271dc55ccb3ca0deba30f70f1952d0ab9767541dd6726958fd8757d09605d3bb3d5e6c89903a95e221d9f86e61c6ae7ecc153e81ec1abdf514c70561ad6ae312ddd4e9c0daf03c327a08a86687980a61e5e3fe6c31cef7411ea4206af4e67d920a6e4dcc7e6d85e6db6120ba0a1d5116fa6e104c2a1d300c7af1c4d7d0165929aa3d4bbfc072db062e528535b2d96b2877b915704d00f7ae0fd2a9d255cf280e0a46f5af9113d31db91f1d5ee822349ba22db6cdc5a964e35ef883f7addfafdad80c9b81e87feed0dddd872f7384890aa12657d78bbe2963969958166d9d492068a5b775d2a1d10c860cd92d42b685154d64677eb9859808fc84503ea099e330c1a14fabb7400f4a11408a05e18dc186ea3b6a5cb12e228baaa06d1bd4df505dcfd57d8a212fe7aee405d44b8aceb7f49dac8713e4cad12e3cdc4826d0c0c2e94c354e6f7cbdbc5fd4da10e51ac1175820fcd804eaa8a61fb7baa9b91a026651e9cab5a6714dfd3421e0fad1624caae6d0f97a05bac952445ec6eb04de3b9a46eb7b33a141872c11c7366832a9d44504640e9ac70687937bcfe015b5cec1046d4f852620e50c02fea4d1b241d1a1b42e7410f7284d6d80dceaccd793c3e6b405dc5c16d1e53737a0fddd11c11a5b9cfb70fb4e3e4f852dbfd1953dc38ca3e323b1929a66d570d888a420e2c6334b8fe9171b0e17937c70c3f539addcbef74681ec9e081c75d4f3caf7d19326f2fdecad01217393f3285605244044358a31e86d777ae565106f769fb6e226115652beef7bcc71de8f54d7f5ad147f24d2992d5ef9b6dd6c84ccb518d4bbc7dd377a641d3fa6a9a4228fb036ea4cfc607c78a8f470fd97d569b9e815d8d79b309b02239ecd3121c880e4dc23b47295adbd29d57b2450f86954e7ff04dd2abeea424bfb929992f5db73e2fb4adf60d87571b4ce6103f6f2e14a7a1f19d716ca6948b1aec68587da9c4c602ab47e393b7245df608752f3b18da243ffeab4d03c1a5542f3a86f8c4f49ee67b2b95fd942626d3d0137652915adbb21b5f524417300c39552559c26ba8978c9909cc88088a79372c65e81f8416b81dd2726dcccc885573945a4ccf6b3326dc5e29e2b2c42737a1e0bde624f48ea4619288491eae9c8ac7ced432189860c8870c349d61a4c4c08e88944cc376a29479fc842f6ae72af92f2c3c7c097c31af65bce4c9564a302b4fd5d9001c7fc9afc860fc11dd0d1d6bfdcff202d4eb2a4a0a786efed9b98cc27e9a5c5fc328adbd84ed8485d2db4aabc4999b5a18a6d78512aba05e34e62e1c303dda8bd2d545922107556614fe288ce31f388cd9d3113ab86e20acd8a89973aeb8f82e2babe8203c597682ceb0c840460bfae09fc1ca0241a3288c7827182b9f3863f362730ccd73d31a3dc0802f7fc916194d3c653a29f82d6e792a587f67dc7019443607384e78583347b4033c1dc05819a3da4b9839b2b2c2e30ac7911d24a1dae1a23ad267924f6cad526c45616e64010ce2f6be818d56afb06cb136906ae5093c1464110aa7963e3e2a19b17a65962efa2a19b13bc19219a1b2e170bdc1c1860b5d97a802de7a2382f827f8f5a471854b00942e50aca340f882d48720b272843b06d698f26e9097d147621ea03700add52a8a7a9e60f94c97ac0d54176243049cbaf444ba5a41bdb70daf35ab0001427aba41bfd2204c35c5f9a369070f9a065280de4487975909de0ee305df5b7c8057d2979db6d260db59f4a3906e2ef90cfef12aabb601dede5ad3a8dd1cc7ddd2e75e733260c98d3516e7333cc08cd1bfbb78d5c5a2ae79f653cd1a2e4a2004771c465759d0c833609e0d5f41c0d7d44d51826f6da94d1e989f14a9d85e16dece16e3dc800110acd36e2a9726b721a24bf71be90a6d5f14fb79926304b935c1e008b23df659a3a34cbe3683d8280822480ef7b0eebe1883171568a2fb546b9d4676e8d4c75dc87baeb1933f0aaec89ecda85c08834c459e9aec3a20ff390d14df06d2f88c10fc2bea0044017148f38d920c163922cb2ae1882f71a7806e87fa539c2d77af27327e4dc500badc160390f0fad9223f3713d6256afce05f8a43d05cdf5baa2c2851baa77f4ac1ce1d49fe9b7a332308e19808a13aae0d91e42ebfbd7e0e3eafb316944cba61b32907d4b935c64325a48ead8f7a0296f8ff82e038881794c76c205653d6be1e76a72be829443295e649e83740233aaa56322b7c05ddc2a489a19a434ec54d430c091bdd6c34d38408e120c7bc87884f7f41a92de8a614e0de194eba0e7a225fb59f9bd35da163ca5978099b244f7520be91fba5933017aa1168d7ad929444ee643c43465294228420dde7c60c658c700fb36910ef1942a4aca4cb3309461c4e506627e61ec40306cbd2a635897e510360fb1516a0670bfe39308d952dcd969afaf3b90c22b020e28e6445711acb1b6132075ff18490bd2c0bb80502fbcae9f583f6e633d1146789f1d849baf7d3f0a4eb8de6af594d453cebccb2094565b6c996b372f7ca1120070ad93a522f3b7ee3b0ee0bfd6d7fa186f292ecd48cefcafcc282cf74c188233694096276183a277cb6581e7e20997b75742122bacf6e780669383f1a93244d29d8d7794b5a9577b705e7959e9897a3de77d9b68f2f52cc765d359224fc3a23362228b4320bf129418c461007cd41e8eb6d9078a6728ec67465481226e8a03268209906ee17dc5d4d22c4490f899588e672978ffeb0ad0a6160fd83e4031fa7562048f512037f427e7674339d74438ed88fdd80f4b9616a7cc1201000515d74d76ba8ae6779fa64255603623e5b19d1428f28ce713a2cdb818984ce853d861668a823f14424ddd4a3eab5c427ec72b73078d8b36e0b6fa97e57fe51ee8b0179c92ef1e52d42346b0024b902016e0379b4198c9e7c1e33c6719f6902f1959e6130f01b20219f7430c1145c149269a2761632c982c881d24d33c26b490d000693e7d0ee025d2682313a572fc5926d8f3d3764273c022699019112469cf8d4c4373e539cecb7f159879d7da781d6411ce7fc8cb1902230954e8bce27e2c60d6fe830e3cb69daf1d98d4ef41858f6d17670f26fa3fa81192d1740eb4d3f60331190645d230ec7ac72477d2c878c48d03cd078fd813728983a5391ed847e07f8642e6aaba6f221c37629e774e2ab7c67389bbd478881b941ff4d0b1a586f2880510cae4dd936e41a4c2ba4267ee0c89570432ceebba380fbc7e72e3580131a9dd404e12f3a4382adbd64ead72f2d748bc9116dd8b9835e05beadef7a9e5da1f07b8b18bef8ac59f17aad23ce87f0b42a3d7393d3646bd296bce0cc223a9769e5aa23a755667e5d7f02adcb7ea6cdd94d03601903d69554dde9e4d6fd94e124e46e5f9d8bea1a67e4a79430aff1657a16669896e0184786043a20d1bf48bd20a21331f01910d071d25b14553373491cd4bd500f7a1b2ac3d3b631d638ed54a8d7e843e422168603f824414fac6d8bd13f7dc5230d3ab5ba5d5abccfaba02b1a0902dfc0cbeea518b882409b08a2764bda981fe056b1bdb155397b408b2fb98899764d087cafe11ecec3c8c969eb14fd8ce9d24cc1794705ac36c82e5a77560d6b0ac62bf26aea18d8378b63141a304e6b0a697cf97a7b4ebdc83c44aef2388c692919d22eb40fcfeaf36d170cdabe9d702f7c63bc15f754b6dfd511f093e2ac6e086217738a7287027148971b3f31f6dbcf3a555622d9b99b16163cfc8b7e2eee5baf75c16b918a46af759f36c990db1bb2758f62861e4a7ee3f22891122faf9d092a9b6ff1c7b93ef43c39d5e8d28f22b71335afe0d173a155a024216f8235aada0d127d8baff88438d02bf845a6d2bc7f9b4675afb86a5f2cd4abb7c35133d0e7f636f4723f9ef64a0e736153f588f32aa5e307ebc7bb8e57e3b122ef158649afdffa221355cf37b395996093f8ae49f844954b79169be537f5abf9665fc06c903c856d3f2be4afd5fb208871c8c628d4d787153734cdbe1060a7d967a97213697b2dc78f4a1b56d7a7bdb1ff0a9c2cba2e3e30bce9ba09027c6d9f8ad20ddf90b8eab45f31e5fc743edce53ca6d832f7273b95392c3f500c131db2788ef8d3a109af410c62fa7a5ccb8a15345ccb0f192c24cab88b037df36d234fa6996dc7cf382cc956efffeea13c718a4620dc7f3449186a76ef8e12b2665c0ba4a96972bcf6294b72b87955bf9cec5f85d1870b22bb220c3549f019509c69af76b1169ea043e934524677785da813ee4c95fdf9e88c8c388323a58acce5e11d0bb25dc146be3c329debf0a269984a2bfb0ae7dc42953882dd0ccbf7535ef294a6fbbb5f2748f4fab431c5f6732930dabcd03f605900dc472e1fa4602a184b856cc8704fb1d3b2bc67003938f40572b5ed418236b778a541c9183e1d7714900a9c25740c720423035ddd9a62507e6c5a6b443ecafd5e673ef1f68766481a71de08dad1199a80d16802b1b8b6f01266ec87b2e9ad86c4376fb14108d878f8d79146114b92917469e55c3737f83b03dae247ceda7ae555271d01c5f61512ab9d6fff7ec4a47da5bc8346bda2ad10ce3031d5c114cc49335c59ee1318e90422a024a0e79e964a9996abf13f73d144d4e424f1135bd91cd430dceca9a9351668418349c6effd4de208ba26cfbe96c232b75dd9a91e3a361d42838c56460c8a4ddd7bf6be8653ff813f3ee8c79b3f23b548e3b4514d1251fdd74e56de4ac10a5d88a0d216dd108d5889c1f8177d20fbcc1a775a04e95baededf4206f76db22d8690fe9acb2b2c80d6590f1fb8ae5365d0d37f61e2b621926a7cc6b0eeb235dee63d1b5c698dbc415839c33b5dc57c1cc6f9ee7cf4a55a333b1ef9cec9ea789ffade704db201bb62ee20c09a2912689b407a8e48d341cf8412da62a2ca6218dd689669c6f171f3bdea8f69ba61ff7e2e20cfa1ba77b70ba657fb06498175ab4a79163e1a322ef0fc29b652231df93c6f525b9c082d1a3c9f259958ac7ba5a85a6a37f66a55f57b424fc3de19719b013ec57f2ea04652949f3be43974fb7032c0f442d30f18078e5c27fc4b74e388058a4c9262bf5cc4cbb8e93eece5adee5b077f078c1533a906befeaa1a158a051a3ec0c26058d063d88afc9453993813209ce651420fa2dfdc3f6bd8f752f1d62eede26843ffd133d981cdada9a0f875b900053d4380ce713df09156c0da6255816fcdc118be6d180b127f7aba95b32ab4201785078e15a3e610733e98480c99345d00f73211e6d5686fc822b6dc3c27ca9aa4cfd22fde631711c04de7993a038d2975bc05bb44aecddc93b40e591a5eb242ac407137d659e75d363aba6d2c3151d0d1f1de7c65bbaa3a56cd1cb0bf23952ce09fadf20dc2f430f6d86ad732b826fde745cc88bef66b53da387d1544fdea0ea5bb837211f9faafff046d2a64a191f343a78e33f2344082c3473106ad1079fda3af38d437a7e5d22ad912f9c899b50892594a83e83376b27d15f84318fc148031a472383e198bed4e800d86cf3aa70396de0da242a2832d78c7bdb729122b77db287f44e7b3a40199e7ef0322677334f42b00b8e575a9d03364f9f7d2524685ba465cde21fbc322ed2a96bc417dc2a2fadd60d82dc96fd1134440c2d5884ac468618c02cc9b385812958498a030e483fbbc1db2784d11a7dfb16de8b731577d30375ba893eb31274fb45dd83e89624b14634aa2cc763b8e120f52d0b7fdab2d78f045467f06d45e06b8128b87bc2d89cf26cb881a2df51f448f3e93f9c1fe6192a464c997e833b946f9f98c06451415cbd7fc93ee38aba3646ea357ee5419906649a5151004c7527385e8aa9143d019563511de1d34aba31ef1e2e2391bd3b0d859096a344eaff7be223809428167125678f4610bcda2649fab8480a16f7d928730c49b60ed0d6b526b304c394025350cc0edf520c65407e655875b3102823b002c2c1d9d9b0f4acc72526869cfc66c44a144a45eccee89aec40e1285210f1b85218a4931ac65b2082742d22288fe26db1e45beac5016638cea11e8b6dcdec3bcc000b5ec21581fd80fd6cc67ef0407f018e372941c54c683ced4cd0aa914caac3b3613c3c0f12fc1f504b168c4f666be901d139b69fed170dd36e78e174348f7576e5fc7a3e7dee119eb470402b4af661158df1267f4d6114da836e0407030298cc5f2cf6e97a3096cee461a442991762fa1ddd032ca5f13848dac3df12208d889265d5cb4541171555c3e87e2bd257f927288a5e14e7562d300c19bc004a66611e2155292c2cd0b8c79ac6de973fb02a21d5bc260e748c14a55a1aea8c7a9dc770cf04536455f034122f60e055002e3369aa2c2d0d540cf41b575700b1a9845a43d406f7b2de47023c0b263e45b53401a82f280432db4c790a0968676d88042846bb626300c4a0258c5852ce2c4c2e9015a586008ae0cad63c68195763602f7a8ad03d96109070d3ae6ee449bb20446d1c8f594ac4c50e3fa218ea437d00bb461881d589c041ec826374ed71f19cca519a38aea641eeb96f21d70702e36529322f546fc85cce43ea1a35eaacb5ea4f85fa9efff5e502ded16043ad98ec683cbfd1055aee5ac6cb28d7d945f95a00f6600bd0ee5fdf2570341f134958c64acbba15f60a112d91ef6072281e47196357adda07a7812c278224ca9dd7182ca00650f9029a0a4b606ea44c2d0b102a3bc1d45eef97425b19b4776b0df57f03003007b5c17ad9a5d8fbd3a38d136cff44e14a25e7403d006934f4d08eea9610fada5cae0d1a4050f7fb24445059d81e402ca5546fe0a6de71be731a4543d01fa8a626300cfef03694d014602c461c9eef88259e66a6729d220ae9e58ccee1d59cdb44a039a615ab7cf18bad2616d063ffaf4c05b2c4b7b13c704fd2115cbbb36c3ba98620c3dda1b7c0fce5c6a6eb19d19ba5b62984fc111b52ea28d9c15c2b0d2f6ad3af4465ad87b38a92536e604644324c0eb2d200f21a1f6a2bd6586b0b5143c1e34ad6f7013274b0e18b1516883633f170fb432332f27ee720e82728b00f0cf9fa476a1ac48d56edc136d820ad48e2b8d589c93e02c79e80271acc1d06a78ceb9c6e04c3185045d2430bfa0493c8e903ff1e04d151b43063eb41e20d04c15323855d489f40d3af0f95aeadbe49b073ddf22f57f7e0fd35d53c5a782c27c9f39c117115ad3fac04354deaf26df6bb7c809394ae653b0cbf065b2f7831796e0b73c23566ed984fb41c149068c9756bf2406f7ba52d32eb17bab279228f28e8947d96a796efefe6d771b5b26db807b88550d30c90147faad3c862f620c895e540c704478478674fe3060cd6e28ec002758b33d65ef918c5d325a2cac0b010f6f90606e6c93c6a1bc1eeeaa068e787fd81184e7cf39c0d61a2a28ce5e5d141fbd8f0f180d491ee824681cdbd92f5ed4b455741c70300cd2076c1d42dc25f9b36462c094637b58cd072f068a12aa64056bf99a57726f366ba7c19e7107771f00a6a0824cfaba6da17a8d637a7e10d1ae377b85aa02881bc224c1d6ecc8eb23a298bd4ea44181a16a62778f25fe5398b6d4ad34fba1ef6b660441a08769c6845e474d1101621d24224235690f840fd5ad2394abc34e770bddf5375c14c91750680cd298c152b6340774e05c4a2d95e887f846e37bc57273ad6e23ed0a57811560366e439d82a03996b617b84b7cb3b999a519368d30c8238084e51649f002ded85a2c99c8346cc58a80c940914f82a9a8c8e27000f3b035c0c2e223111eabe48dc942da4e93cc4535b1ca0024d889130e20b3826b69ecd17c7dedec50633fb35fff4ef4aa3b6709f09fb3a01dedb73fd1263789120ac625e446531f745b12b8059529098c05e3dfbf72298379f717ff129b5d0ce4bf2d2539dc478d1c9b29c3b0a44d1ca48311e2472d6e6c96fda3216fc5a427bc2f311055d8bca68db72ae78274d18e972fb246922c9cb8b91c3033f5e977b0e679e43d323b025f2987d8dc11c9772064b3812a05d0f75e92bca76bc8d0aadcb635529599e874c40b7234b821ec3b44bd1f4540753d696c3acc3702205e834d354beb58a8e16a888b1113121d4e1345e230cb3b67eba02fd2f0c28db042093bf9c6396e6d3b53f0fe4796108a00479e8705828e17e5a09a17eb64503854e81f98fee489f6bade15d606e192c60f4624a86e8c592cc8935463133c2ef478e0e44242404fc7d83e69890e6eb41a3b951f28fd48d5d1d5162abce31962aab048bfc14573701b73da995b57e344f985d5242c4c98e37fcca002126193d32712323d8e54dc73034570e7ef089b69ded46685e26ea03ddb16540bd4c540ac455af5a091e4042f313b3910f5faeeee554793d0bac698758deb8e41e43cc79240dc9160653030096d8cca80feb116d868a291a5e0979f76a70cc30d82baaab3f91e957ca5de710bc10b54123b2c0e25738ae95eab497994539de31e62dc8267782ae64f5f91532dbd7b885f8e167a791e68c4823bc72f6d812c37a92e03523471c4943e7fe31d94df2df7804910538480382c813870d71b010550fe03d9b0a74d4ec4abc6a20bb2a4326c5deb98a3bfffca737b8d050eef0b099c7ba02e2d5447ac8ae107b74d37074e7bd76b6bf8caa2f83285d2a8eb1f8c2baffb71e0b5f9a4c35286cc7a9641d9dfac6ecd9b02742736caa494510feb3c5c6b5cf4ae081b4b67c6cbf0943872057b876018759d401bf6ad5a7322e82b29743cb886f5d066ca56e3c163bce1dd02045cce21d628fca6cc477e2d67f3bf27e44a5b5b6dcad798ea7590a1847c81dbe7345c6714e65a6e06cdc07ec6485f800b0cfd27671b508206e33e20f34cbaf0ea1de6002cdfeec495b0c1e624814b24a56c3b185b8c509a013281c447205ae5bde0812e8b5b47f70434b3ef1692bcec0a2722fec4d02657d1033a7c1342bc95853d0c21cd10b100890660aabd33c08e2d0ee27a8f6532331e94008329f14b70a9f910fc73ba108d71e94bc1cdf1c36708fb4727444d9aff674169eac628901d88eed7317f072f17f0c52e45a4f24222b9272e27c0c96e5f67d0430e5e67dee94e1f46c4d83205b1418f321b55a9ba3a06f5e2b9c360db654ab05cf78cdb4f82e4208577a069e425ef4d719ccb5ed1f63ebb934365cdc4b640ace9581cbc8b8800d5a2ea05ac05eac10b64ba03008068c808d0a5805e607b76ad6a62a238d6191163164e0be27045a565e47651045a8d4e55dba80efcc3738bd1beb0be363c3802691a51db54619f4742a101dcc04699d7e9060fb40a2b2592456fff5ba32525d80b0333d5091b082bd019fe9eaf55e64e373f23104b3b0ab8f81dd6f3504d31792e8b667fd73c0a1026e8c9af05523a0829407c8136447b3e887816d264ff71740a5fa3e8776c801e17d1340594980b0ab496b1902706c8235fbe818d27b3e2d37413daa3da7e60c059df2975e0f0de5f2338959d773058c10e4e9d3db567ef2e4e628ede6fffd64aafa20631bcc08341c8202cb5b842378daac5553e2bfd6ac43d85160d2127c83492fa46b41ad0098496b00e36246c3fdae4f2717103bb191bbe83278b017407114ab0433012c5041a45b844b7ef0a6bd02d985fb2db28380d378dad520e0392bed57dd63d52f4bd0a7340949a403d850bc00240175521f2b07edb4523620247819104bb998ed3ff89bc32b154e48c3eb40de73202d968d316dbd1638a9ffaf78eda8c6382a78133108ea73c2a6b432238bac6cdf412fcd57b580258232af4739485b3b0414142f6b587bfb3b8906950500b7c63cf3610418582e4e5eccc4dde85d2e00a4425000f2b26309089defc6ebd361533dcf4a73af80548f4ab67839686fa68a000ce36da53d2bf3aa37cad5fb8754abf56573df8912e26232b6af39f6305c65ca03b7c966b1514bbd2a4a231cb7d188716bf8bb0a66592c5b383a5c921a175fd13733c6ad1c1559eb9b7a94eab9f5f1e95ad9d8fb0990fa2f2884640ee1564ef88773c28e3cb979eee241495f01931b590fbf0ed481b9c147118a9095d83a550d6e2ce44c283e965c42509a5600eac190411ea4530a4d79960d260c98a55aca55528170858b654e4d79221d02eb11743169a6ae504d63c39b1d5d44cf80ea8aa90796953aa1a52ad00187ccc48f2b6d39f842c11d826be0c9849d6975e3b45cd75cb85cb05d17d0b675ee0f8dd0060fc9be82c8410357593e93d4f337856e92029327382b95f85ddc3406049a3194f6cdd0a6b72ab07f2898314f962888ab3b1a4fb6a602d601f9e211dbfac4105209c876938f914e4232f3e1938f904fc5b1082ce7b85726d25e36b7e70e64d904eebc9ec9394e4ddccc9620eb36c3f53de6cf9dfe6dd9b7abd65917d69147b5d4ac5b44815f0b4a2ea21251633186cf2053751c0bd814996d4dc61694a4195c7d61b620c184ea77b2814fe00fcaa2eb18494e55b2397b70736e41172ea3e264ec29bd285b9ae4df68e7ab34c68b99f916d2e1019751fef79bad789b2cd2dbd8865a26cfa415e8165b2d92586ebd3d19950e3f208c79f408757b52086a8bf3f06c3ed8ee98bc83b33329b978d275d02020b974c72a580137c11caf3a3bab0f81dbef435b6d6d515e8f989257ddd2a489bfe811e8ed1ff3c77da85cbe93a40df758f947283ee61a9f648acc00dbeb3efc7d1b4748fa54b422949906cfdbac8805f7559692b71e9e4a05e87e41f73ee04aa996aeb00e2c3292de5ab801c20160d994ff7da2695c4cb552c46c7af7fb48369da32820b16f8606fbcac1d8bd58ec5e43e81743b9f43ef076c90e2850dfd7e997c4def0fb96986cfd52e24e2f5205e03b0a68c30232f79d9a1f53e8b49bc55d05c5dd09538dfb40ea48ac528491b2e49841d494c41948e53df920d5f03fc413a02a1a226e38a364638b3489fef47eb90f6fe2e02613ddf0f2e4ddecdb118df4be87d0f1817c8b73748ce2870e7b191d4080f1f313df29edbaa87f527deb48abb668494663952c08c87af832e0bd4b55954804f0db87428af26610583f481cc04c1394830d6f887e0c0496fb56d650368cfda5ad07488c834d86e12639a561e9c589644451079724cbd19d7893d0da4be9f52a0f3fb78c4d730586397cb43993fe0b0b61ca0916dec340d729ac3bd37837216ca370fd4648965f1b33d84965a298a4ff7a3f94d97aa3a601b55c0c9c4352dfa60f1df207ab8aa384de53038583fa167ddba0dac1ce3ade1e6acdfeba04e37d8382850be5a94ec0abad45127b0f2fdb12c6b2b5bc691e05e71697c9068a2cd36a65dc724c6b2c256ae983aa1505afbc7cdc67d4d1d6b7a502e84c82ea6419e5fdf178c97e53ec5df60bf5d71852ae3ae6a2707f74e20d55d4f1b29c96328324658f2470fc4d93d5e71ac388fb6e9eb8b81df3aed91b972cde4fddfa719a52dd7e6cbb5cf6ea4e58bc699559df88985c80b2c1a12213ad957aa321640e00b0db344a89ed08032cea8061d57b5ad58dc063e3d4b35a97354e718bd570252ba54e79f67a5b4f9d9b9507a9b11ed68ff38821944026701c7762adf6ccf7457bf35fd5c9eccb265a574e8bf3a755a1126a1b2d8ebceadf65ed928986c5ec108fd4ec942d7be86b00e3478493cf10bded92dfd0ef6b2ae3d2449a28687c1050898f3ecffe44fe9eaecd31df0b4d0e24bb8cd3a86dd044fc1991f828550e1147319801fef20e207956551d914c94b4cd385e4c6fc29c0c408fa27756e38c508eb8585bc110c2ff99d4c64db561b39722ed25f47ced2e2fc791466397316de8809d982d1899a6cf3634d0e9187f3ff4314a3601ab26e6b8a3743524a1372421ca2940cef1ea9e7fa0e0206aa21dae6e367f0fefdf0783c5535a609d2f8428af4ba7cd5aabae5c5d1bf1f54063b77443320b5910fcfb68bf8c66672cb306ea74e7d59992061399106ba0de4e19793ae474ea74d81423b71909cc1a3a4ed8b00ebe6ab564e718ca1d21acb6aa4520fc28bbe8e504cb87aa7006f78e4d340117471df757b720a26e7e2f9381c414e9972cbbff338eaa352b96191b995d78695a4c0f11eb7359989bf6ea4613aae4e9beee869963deca99177e1995a10ac75cd44218e7da03bd0416f835239f308574d824c3910ed9372d7d160c1f2873a02e98abd04e34bf1336023c42bd13425eee9ebe5d78ee1c3a0fcd4582e64e4260451c0147d89958c20a88d66dd359aa72fc01ebf8c7998624ba9c83648f8e41deaca2b46b7f16daa367771e69ee599e8fe64670245fee3a2fbc531ba88decd4271d477262a68ffa18293ee9c1201d3c09ad769b54eec1e8c52f29b0a71cc73d6981af02af27004d1c2d77c802e313b4e36cb1ba8081520f3c8bb0f669d7a1a7982d124004224367cc1b0e106c90ee00b633b0be76666691dfae9c6b75c5fa1ca5bb1e98d607a218aa4ec1bf771144e02d38daf4c08caac2fc8c4437825d43821c3290d25d58acfdc07a336e306f29453441f3c96f38163fd73ed0c033a2f4f2584eabbf5133a9f214d6ed37cd3a1b8df614de0baacbb245b8806bf60c5a156dab8ffb5dbeb02f6d8fe04546f843d8de990538e0377ac386e1d94e2e2cb567b0cb473b5f45c4caf11bc72fd1f1dd13afcb7d6ed6906e2a225b622a16150ca15894ce7d7c865387981d6677be6e9a8d0754c1085b2e37aee5951ab10bf5ae4668516d777883b377252b653ff5f1bf1cc4cd98bb50cf5bdd45e2cee8b50e980d1786df3ceb264deccf9be1a0ef6f6872b1a9b8c0726d520dcde1c4bca37d5067e3414f5f63b833ef741fa984cd0ebaf2b29dead00e37cabbc41f00f08fd37695c84d0d77585bd9eec893cabe017bfe86ada1a9e1ced1de49fe06d0b63bbe7cd6d54b68b8a0e9a15a562af8a676c1b128eebe5bfc85aeb2f3eac388bb75890a01a6cea24c22025fb47f3f6520e9c8ce924fe51231832da49f155d97400b2fe6f345c949c24cf275fdc6cd4d82b12fbbb43ed201f50c147b75ef23745c15f96f8855c5614d1ab41dc74bcde4fa39d9fc98f473c56a45c727b22aee248f21061c92bfa241a85e8f477c4e764a7ec499cb829481dd76e6e49d456af66fcb84d5f2100eac8046b40611a25de848e40cd9bff6a4503c3658960fa138bdc5e2d9b6aa5683e44ed19787d7530e4da22ad4e9ebbcdec2bd9fad0fc5c368ee8d45dffcab9ff53d154f46a19cbb3433208f58c76af8974b398287111a75d79da85c28dcbcf52125bcfc1010cdf5b75a0426fa19848b1d5a5fe777132c304b55177bdd50962fa4a5e6d79a0926d27aa82eb5e3cf226c4614e695753bf470acf90dd54adf2f70b416e9a3f4e799c38db7699bd4f5d812755b590d8ada923c2b53552a1f8920c2c0107de7d21689a68d3096c8e0dda1996435a85d5eaef64f372c9fe63c704bf29900fb6a09d4bf24f28dbb9f7d80a72d9365cb70670f344efe38caed2189b27ac73c49c400e54c504865f19c6e35b0406dfc1a02aaf834f8fa3394b324eb7a4e2dc910066029423196a1decf04cb183410cafd8ebf981b38c119f1457547e67206e4de20f88fc6f814c1f9f9287a71f847df1afba450050c1d883476045387386059e7a43763208e5107ccc924f50b6a838e93d9c1a4caab41a33f3d6aaa6479fd551475e3c9e20d0bbd1ca0ab1e0049fba200e76cfbb5ac95b05cd91b989caae6c8da4d7b99519b20af4beb6d886e4e63be6fafb3e9d2cc3a58e86f6bf403caf96ee80f2beb0c01a6600f85befff418524f9a50ede27a32e93f0ed43162161482805e67bb1464f76990e85c0afdada5beaa913d89a5b98233ec6b8924d922bb2a97fb79d528d7899b84b973e6ec540ffa2d82400e724b956139f082975bfc7bfeefe491380adc6dcb3ffea64ec08412385743e6ffee603872341ac2c406117036835de2bde84e130532d10c20089c998d33eca69dac96061a3b32c92ef3607796860573c5f7f2314ad1ca3a18e1537338620e7d6d01450f5ac405d606b1fea73e9933eb1d7545a2a809b480dd2f653641aca66292c92313685ddba4028e7e5aadaa476f76efd6d860be57cd8899060ea39c8209e227ddae509af9d20329c6293fcf523f42cecfcc71bf11cd86c7d6325654ec6452a81e2a12e85ac2019e66efe8fff4acba180551b6ab462801be86b0dbaeb5464637b46308af11ba6d66c77a01a63648ccfae8f72ff0cd95f899370c11a211da595bca6e95b4342f6946c854def3ddcb7e34ebdef5656a92b9cabacc710f4c16f19735b0f6ce40acfb985e45d9d4b4485adbde9a9187f1117d98000db1422639c9d20d7150604ae8e43c264e3a7fb848098a297de578e08b363d34ccb9e5d85e933f26cc6206fd9c5664821d2b432cb52c00e70c0a387521fccb4337b3272c5d13ad43b43bf0b58b8840f871e5a01802f9cb290440b56e9a3034b548b5d44471c6e61e379b0a007d52f9f5877a311209f9677c50081ecb78be6a8f77e839714616edfb7961ab4bcc03f54df045f9d43ed1b0af178c6dee04da6fc8bd031c64c8d5e8b504d7596df850315ea2418278052134f0ef8a40acba229439f9c9a8fff944d7907958004b1676dc7d91ea08c43904f5c6c105c7047a1cd63f3d925da3258d7f6cb93e811a1393f330031981cec3a8d01562bf0213d445ac4b213fef97a4d61538b5c56da6cb577c1c1f07f5387e2ee71976ff361f19b61b3aed2a50eb90141306d7a75842d0edb2b9af8e947e14198a88352e74d541eea07e0f672457183811009c81a8ec071afc44b030aab364a7828210b1533f2c535fc6e6e483fba3fc0d274c325683c5ad91bf6104e3c24d9b88a5898abb37dd5a832e3521cb42e8a96ab76941bf5f5e4c14fd5cf191c9edd18b307a0e3074ec65360e3b2acacaac4d0750e75c1f126f26d21f458ecf297450e6c9b0355d236c80d01e5eeda479e7213c247bbadaa7460a87e3a1abbd9260883d831f0bebce3b7e0d70d372b90c0b2ea3d86c1cd91f13525516d4856efab08302de4c0d5d7864a3ce0250a0f8a48addbdb6685b2db92ec00fae38739d8257cd74666f482e14280ea062c4e1785e9e781d3949654928384b8699a9a3a35886c48b706d035fd96a510bfa7d38afcd0863b85e9921f0f9ee90eb4e031ef658865c86766c8c479836f2dc10402655f8cf34e71677ffd878618cb2d80f1506e1a428a216be27f02d0648285318a119a6316ee187ecbfa1f2f061300ed4d88333dda85136b0ce5af8360c808984c27cd73af6a74cfcd32530c69350dc7d9f9675c25aa1373872563b44daca3cf652d2a0e74efd6ef24730303c9262c0d68b9dda943cebc04215c33375bbec664eb162c2fb35ed27c42ce98258277e1cf16a403fecfefc04b68102ed7578b28655222d87a95bbd68673da314f47b828d52dc438fa3851e412f8a92d41b343dd64dd81eeb3895ba2f8b4ecf7d7199b4c1d3b15b01753e6cfeec19887b0c9c56060225e76b6261c824010758bb9414b8b7049fa0dabd1332a13c8740364489cd00ba940bda276e8d8f2af74ece329ef426e50993aa27a2ebbaf4366ff0858578f9049c7322ede2062b134d40411c80a814432d61151bdc01807e60604664ca0d0155c69c2df03e11311eaaf3cf06b45255813420301bf600486adcbce7e6fe5816719bbdc9f4d3b3611961d5a9f05ea5076a12497134a8c0c0a193427093c744e32732d4fc591f30432185e1bd63d034bcd8adfdd698c09709ac70227478114144009dfa69b61e688babe21b45c7983576aaaaffe13909be3be79552fa786a766174ab2ccfa9cd2db67ffd165b23edfb6a552569a99a6a1569256eca4ddbc0e94160efef69b302ef4bfdef60f9463ba32d3c4eb8e8f4c7f5dc8c44dc83d28bab67e8505d5ed6068041da0657fb91d3aee5dda511a789c2e2deba4c5b305ebdbc4646c96da73c5f8b329fed0ecf14a2ae06cac1b1f521a778170a3cea04e78f25e75dfb46595e797e47d917e4de2fbbb6c6c0b06879ff971d00f543a454a609eb26e66fc4d71c9e1858e725a3c0b9508da7c409b6ac4a8d8cc66f70e0ce74acc95262ba2b47ab5ca985ad62dd97f1d153f7d7e317c9dca1a9ac4396b44dce372aea2e4be6d015ee31d8e2a60550aa4aeeeb388a89c613fa8dd5e3cfc734e12152b9aacb4f92bf7ae54ffb33dd1055136daa48579f33581660f8c413f399507a14a25676f228d1f4a1c2609290809ca201b31754a9fc87e144c70af76848b82cefc975c0f5beb2f0bc0bcc6ec48a7c065d0af4a8a1b0a4359d1f6aa8036a6847bbc58370c6cc8e363468fd706dd298209434504849ea5734bcf12203eafc468ce61841c29307bbd5d37da180402803a8e2652ad2901b0b2bb139329e52dc337ce01df66a151bd4a3c77392b50e64c411aaa1befdad8e5ea8ba588539b7f6e7d6ff445a17117da6824a728c1c6562ac5cba000e6d7cd285d935877afff838723f40ab2aec465116fc464489b8f215aaaa1d4d19a1677f0848e1c0308441d80a534a7d6d283028bfde3010eff0453e2da5987a7c5c6acb7f16f2421c03d662171be7d69853c0f82ea9ab371d7e1591fa082f6fa3932895d99d356b5b695b7196b381083b0fa9a0a1ecf399c7fe75b577859092dbdeecd4b9426f8805145a66b900f79b6dbb2de19cdcf8e4083d83f0f12065b28bcf81682160356e8856d6b72999893c86a733114de75f9499d385353a8cf5cc31deec6fcadd75989cd3017f1bda54f64f12174a0b7b2aca164ab264279398e64485650285c4563f4662ae2127f3e37755f72006161f1f28ec8f0433fe1936f8d490d696f38305ed46631f441e44a49082029c2649940fed527c9f4b592d0852c06b770cc949b2732d53cc6daee3461a0716d822304aa7e12b9c3c1c9c6093de069c227815df9f42139d1222888a209935600fa5d19437bc89e6674736039c637670c8bbccb1dd1e8c34e2451a3fe9d17d7a3b83b0e86c5f310ff8ef41f4a0924976576cf7e5dadcc8413daf910bcbcbe0d0a21c5ea657d241fb5c55c5ccf174c1146bb580fca5c8b4b5039c2bb7040d409bd189106c1d51b379e953b8df4b7acd17fdcb41591bac0f77e2fab469b7a004cf75ca5098e10be85228411666cb3695223e8c9611937421f13149fc5548043d70171656c9ed7b4176466546359a9af8b5519ffdc3ef3c0f14483f311f0a66139bafa6e67dde95a11d0bbc10f725fe23af7d84fd007c8ba2a9d28c6dd0513459b0f2a1d107cc2dc00c4584fbf45c7306abaedfd279dc5523d9b04818c94e951491517451b25e76b331feef44e6ee4a687ea182c69e42adc4f69bd50d14ebd7b1d0d5c5a4b3d8668e25e0f722c1679c94ed25be1d0966c18f590505919a797a1071af053fd80b21e875a3072b6dc314c4daebabfc02540d1a1a8847b2b18010f829b20ba9c6ab2e26328b30febf6b1b455e001e2cee9728746cc19c0873034c4d0e68c2835630d31f0d35db16c8a1b71728e0569f5d9035a8f2df486e77a16e6e4a6cf0786954d6e6ce1710abd680291aa8536d824f7a3ad694b12885ba026602a42e40eaa84750c470c0f9e11cb254a09d40220f41d1813a878da0cae23184b42d2d9a18c720cc3db1fae4e4705f24ce9d2acf57f79b3d95c5d4e4986d906a426857ea7c95356b775e8498a42efbf1c079144007ce6ba003c1a4ccda561623232a0db3770be301b2086e4717ccfc162c3d027ecaa457eed8bad20eecc55c222bc20f7ad9c08f4ce0f9eb1cc0348fb3f825fb23706158c5ee3ad819e024192032f0f8397fd195748caedc1deacce84acc3dba32b3657e6776c54b853a1797576d4565a11461b6b66b58e84f598fa393fe666f008b9c6c3b251b5dde9e424c6b83ffe26a053948b9e56498afac6602602f6970751dadd021f382c4f2a5d8a0ffd72770925f2ad59cdf1ff3e8c4994c85f4bd186e936db7b56a8b6397c75228d3dcb3591749328de7356c857552c046d8c800e6c72b812b41b222b08073cfad0f2c05081863142c86fba270a5b5b18f731db969656f4d96b5e365db1b828ca2ef1518c6612046dd253c0192fb6a6b38743785213090c39afd22c512267b10f8f73571f71e49093c76067ad2ce15e4d9bf00d01eab28a9507325f613176cb661bfa6fa9000f71adac0ad83d57e4278a08fafcef7d69c66e1031af6d0b022b628f3ca8384845a704acd23369195e40b15f90a6b9b129f2b9ec52324413f6eca5be3d4d4661f2d55299a3de6dbb394c666b08bab3b587bf1c069870f81f3d44d56c611b0094dde1dc1a7fa363c1d6380c13be681820f6ebc02f1e0aa385d4875d912a669a466308bd2584678e5387e9f54c08dd5fad643a4665d355637bf46152e25b87f19147d20fda678067675913cbc8f6ecc9465b900bbaf5883eb316161690ba574631ae9ffe363ad8c47218b8190c2416ee74821f44cb88f5f4bd902d8826a191288b670b4e178b782064598f529d327b21ae753e1400373da1680489742586f1b02a584e75d8d88c9d7d448f2ff631918c1486875b1c32e644810a8cd3b5db67479a5bb9010419996822cd3e9e5040d575d8ac8b1f40fbfd2d43f909a0a5001a5d6098511754725756245e964eecb0411cd6ab0a4039c698f2069d3dcf13e625b6b6268eebfa946877a26755edc0c08fc45e521f2de541ddd2c96899f2595d29c89f2375cb58404d27746f99617b253a6ed3cfbc493130927568d6da09972aa04d8f7c2ed5e3c070a18e14f45665e30c119f6018e89f2bd4a78145f74c03220b0e517205af979b003f2926107d60c7366e02c46011d07072ee568f0529ed2971c200a8d63b10c3d9c0a84178af303e18d89d5ae8d5f3262be11ea982abfe2e0ddb09240eb589f74891253d4001a4ae338b4aac306ec931ce0f9c5e1714b6ec300a7e8ccac6d25c0576fddcd7fe16d621aaed63199dba5e1a9ed4fef7580ad76384d2f1925b93a5a0062c6598df7400f23744fb9874feed0706d726542a9bec912cea3cc5fbeb09d1f283640bbed8ca61a5c05d812412317b5c85e2b2a539fcfe33f5cc2552b538a6bf6f932b1ece23c9664669b47e2b8043071740fcc6ce631bcb0b50d66a8e47750ca3491d5be45f013a9d303eaf770e96f21ba1a1bbb627113261082302116cf8407c493b2df4b0e386c5923acc604cae4efc6582056b24a07aa5aea24cef5d25c571f57ff9ee161dca6ea2f39885181983809331233f34d12cdf136fc1f6db497f5404010cfe834e19abf08273fa1185b2ad6b942ec851e525be10668e2d17974f9c9de926cb9b794294919180c2c0c710cd29934115a029b3e067e25f18ccf7c46e863490cf4db9964df1c65a0c76f4f090c13e6332fc810aec412e0ff309c1e33cf49f35f74f245a49734f36c428f996596655936a796655a96cdd9446304bd76d0dba058e99fecc98690c4165efc272137e1e5bfa1ffdaa99531946035828556bc6ce1483fe6d8f4652f6778620b2ddf2ea18feaed13fa50797b703e9218a4965712f3d52b3f7ded28beca2b5fa795af1957e5555d10ef55b56bad5c6bacb566b5d65a359cd53714e5ad8c4183dfeed077fe518f5d7f9973ed1ff5d9791784c6ce010fa0443aef6ba74ebb1f2a2f0a2f5d543152421c15f49050674722bd5361a8060fa18e8f3e803a53e7f6eda7a353ee80f75fcbee1a332f9c8a8efef5d0ca18445f63322058e9e3bf09277c12a10ff6a163c21dd00a88a4bd3804ca2c3846e62c65dc0042083d1e40887a9202074cbfb95c9aafefa5a6a88577b8b5d44bad973db0dac728202c9dac1823bf625447590adbb32ca00f25714aaa23b2b9d47ae476e58d01f28b3a513327766bb241ea61530d4a4d35547929a8d8f2508a2996feb3524cd1f431ac1c4e66d3b33abb1f52f3947cf5e3182a0cd196e1f8255dca795996807ad5b4e99a471e270b9d4820f59bfb57c941de9afac7a2fe71bfb9649f23bd43bd86dfb6232de316376f1892306922c43e3d7a877a13d193134a9d52972ef08b3a6c19ea937a8fa6d5fb28cd3ceadb9d5d10ffcdebc6c56df3c8321cbf8e103d751838d7c13d99538f9ae63cdca3397577ea2fee994e9db60fe7510af9a5433d2411890c2b6860d9e287ba42c346875c8d820aa52f69f4c328acf0020c528c1f7fceaedb638cd1fb6929a5f4beed72f4939b4bebec31e7d14963843d467cfa20a652da6ac1af7bee7e6ccf1eefa77afe98f473b4ed9f943bff7a127208e9ee8e8d860ababb854049b529a9e6659ec31de8527a9452aac01d04a76d55d22937cd069c4ae5419527f9957970d3a290540a4dd3b496de71ca29bde512b44eea0d1b768e8f0ee73488766573b86d9e7cdde0a5835f19ebb810a52ce208154c55b1f203222081021250a08145acc88a0bbc6062822992c92284a41ed8808827459400c63a7c79a2014b124cecd0c597a7982f3ca0a154e6cb16ac2f69a8c0f860030609ee4b165fbaf8f245aaf5fa92832f4c3ebce0fcbd78e00f6c4541a8864f5afc5cc1b70a0a95f70d39f1ed31070526dc313444cdbcb620e538ee4e2ff68b5cb86434a3d46dfbd4b41cba57fe71841a390abfe9ec2ee733973aebde788d9c3725b210159e9a8707cf0f0a4d3d4ee8617389e21423c0c66b2e5191c36cbce8857732b7c1619011f0b16ac671592ce24294ca27c7f1d74c6bd7a97466404150d5e36f5d0a375fbdef03afb2dcb339c771da7d6dfee2eec6f9c67195bbb9718a119071b403426be21118b868310bad80917ae884c3191fa947cb929ad74d1a7981e3a8e6f1a9a6e2ba95d3923da7e6c50e08fc81d6d1264219e733fee38729e558770a8dc78e9b63d8e82de8e38b33cd4750aa76b96a3395268693b9b1cb14562d725254538d9e18b16007842b8ba3ac1b6199d7dc4ca946d574a5c946f584e589eb5688309657cbd1dc387533e3b00be2452e33d91131dcb644a55a6e63aac2546d387ab51964389b8e7a9911963a75cab2377ebdc990a220b59a2629719c6f1c475b1a60f57de0376e6bae01eec89c8bf8953111b313364ef9c7449ff90c177e659ef9aa091b5dc5aa34323146947965d53454961a3b20de735e6de8432b60a6bede70dde5b7dc432713409171ae72e6a19309707896ffb05cdd2c0d9b3d743201d15bffe1ea9a2cb5a5daa0de59ad9552effb804664f35a2bac97ce0e08448393b09bebfaf6c28fb95f04f399b32e84d5e6564332d68530eadde5e7b86773ea71bb4998a854ac15e7f4b6a00f7aa718163ae110fb8f51f0191068c6572cbe3a534ae3e5aee457467d73ea6d5e37ca71def781af5475a9c75a310f0e4453365739eceaa6527110bfd875ec07b91c3d77f1895f967a627c182cf7a85c4a29a5dca46f0ea1f30b2cb52df6cd0352815f0cc34dd23bec3cedd3e4834d2fbd6a24aafce655def781dffca7b75b845f1c5d3032bd23fc32c3b2fb07b1a810f402f4116346322dbe387968650c2c5fc2432b6368791eee8931d9835fdcf1f2e0170f7ef1b00cec77c209b18fb1ffe11f8eed830adb679b3952ebf6990203984cdb955e6eed61373b32e967cfa220847db20afc82de52954e4df3253caf794a629afa740d89483c78ea4b789e7a31c88f3f649dda97f9a74dafda9c8e449b5c537f2795519fd4672cf6d4c6a8d7783fa9044ec562cf64e639ef66c23de7499e2a61c033dc119d49f6992fc99c499682059e5e25389430e023dc113b158674446d4954dd25bc4dffd899c497d9cca848cbb236b25b81bdd0108311d9606153328ec1603f94c8586c8767d2a570f3d3fb3ef099f4b69150fe8029478da8e9560edb48ca4134be6d4b979e492825843aabef0344645b4139d841d9b186e933ba8e330f8f39b3e925c6fa660e7b346f7fe148fb74b3fbb31b6344bcd313e0bc7a4253a8731eed9d0883b0aaddf8f50a4da13e0215ac6a296c4fbd0b61357644645e3ae5b44e1b32f332eb820ca0521555652e61e59524aa9c1663b1c8765ce6596bde9ce999bbec86685e63e6b710d37440f8db574d58e82ccb6577c584658f404145daa7defe7a9bcc409a6802c7585a4dfdecaea4b0ec51f57de1bbbae9d9e5af37665d8cc11dedd58b55bd10bfda9bf04bfee4c24221ee893b3efbf6263d394254d0423571542a3136154e179c2c6ad8e871420f2d72c6c809c37563fa748e57dd8f99ddd7d5c1afaed9e65266beb976b3ad0bed1b1d109a8d61a32392b9e6956bae72abaf02af798559c75decba9b77f50d11f19af46cca0c11832e634756771a7576b1b20b79a9b3b827667a61a5673d33e79064eeb16ca4c25955dd57efb45749340319a8bc76260108ab9e0caacc0b8e37e7cd63078400bf79b7e212f0ea01b48361550e24f3e9aa2b3402154ce5ac2e85c902ec82a4f701fdb6ea88dc0fe8a94fcbdaaa95b4a74719a913d3fdf0c272dd79170b1fc2d83e9cb795dd9c4ac3a9ae8b7d280661b53b20500b20100a2004f8cc65374495b926bb203c5ae6f1d013d4e985edc24a8f34d3620866183673a02eac266476506abeb9caa7d78cd334cd39d9fdd0e89c9bab0342a46bee00d8010fe078cd4342b3ea30a89e7ad5ba14b4afae7541201196f0018b0a90084bf88083a75ad52011d5534fb5397516f750c891db582c09835a3b012ef61f34169418189af241f384a0ae492933ed0e415df338800f4661059867d29f11a1f2d2b53bc4501658c4a8818b27241434e7ce01dd0550d018069f794832ef40e67900870c5a080ad4a91d945dad7456a7d3b5f98545525d76619150ffa46bb0fb844810c3c0a6743e0215ac9d553d4b61b2e003ac0616222ce10316222c71046b2f6617b67a7348aa6bd57f78e5298961bef33ea0e7aa6f48a86796c5b24f726cecbe949b3593727a5ad6b14b8112f99e5c6cf421aa69594178bebd1a70077babd53a80d0479454f3087d4c2965a62436298935f8183d08757cd23956b4dcc351fa74ceb3acbea235a7997f73c698794eb98e88e659165b299de185aa0dee680a77f41696c61af9e517819f1e919a65fcf1c34c72f4e8929f8f215b32147b250c882cf9a43934828d4ea116bfc43b28a54f6f6fc8ae21d0a7c3e9d98cfec3ac26325d3ae58dc53d296c404fa9672fe9e611e03f2d0bcda3410800c56bf19ac711914b54e9968b13caac5932de550c2cf5e99aca5dd501919e416b394a853aed2b29eab337734bc9bc4a1b04655cbc2b292cb422c6d47f383a01d3d929f4d1b407105d280e75b31531b03cbbb53a9c65114d699dd82a2d6c935142185b669037f0f030208cee84e4f815f6e3661996394c1bb5518741f4ec1ce5b245eac911134dd826e233881eba80c70b8ca667d7d12c34ac88893826a5c72c565f69a23939def2d677c2738f1e2d3f41a70546d1b3e7701689ee56b7bac5031d2b537c04bbc3fee53cdb168594cbc9d1d1c103085b9c008a4f82847c01e5d95540fa27edc5a326fbc12720d5e642b8677a0c7428a4b998278d870a39d2d4fba8e67d2f1e1e25465e56cea6689159102ceac5d1b3731992c42265fb9f3a26e3133fb5e472867ca26088c09c912129a1a30b2db4c56ae5781f0c99d6b7878c869cfcccf259fce9192380bd8f206f603fda035782955da69e9deeb0ab84603fe96674517202b2582ddb92500b17dc52d5643feb70a7b3b6d63e9c117e22f8e8304e180e9d996ad9a455a2471e1e9e183bcad1e8eede1443f2f04c9eabc3af6c7aec5a9308f6739f5316461b2febb389c46a29edd49c555a26bdd949cfb42e4a2f488d1fe62e851ad9e4326acbb25a4a3933cda5942ebbfb315dce88857978b4bc41caa71738e594310bf7641ec7bcbcf90fc74b771d1dbc801ad5a5476802ec699f180503cf6b1ea18a60bf88e5194bcc12a3565e54376b6412bf9839c6bf56c74c1cf71879815f5ca386d094201cbff1807a87bd86df78d7f822a0ddceb92be5c66bdc2287b51ce712d9e0b0961739ece6876b0235fc06c7a71754c36f6a784de4ec9604d5701c4fe848efb0d7985d0adb4fef03bae156eb42d88dbfcc6437c47be9dabc5d90013c843b3aaf5c118dcf48212af08bbf583b5e49ef2e57e1d7ca2bec3a8f9b34ffa47315e6667c15cb896c2caf958bdd03b6afdcc4f35c250bcbf21f6682767504e5888d9e442329650ecd7fb8c67ff8ebd4b8c709ccf2aa21f18b231265797ccaaa99a1a13f28d0d0388dcff8076968fccefbc59f52b266b4eb21914ee3f34a9f71ee7e4d33c332de91f58e62bca3eeabd1607598a56cd827c2d80a1a579e633441876882c6d43e1cb571d5be2129555ec3a901880c15411210844f000eaf79ed4e097c52d23380f995f337d3876104225479cdb50e080c4210af3910ccd0a2140420600f80404513708a2a20962a5ef3ad0302a398825350a1e588070cc90008af79095468ab6f480b76e8e01506104f08254c91801b60145fbce6dd3d600346804fc466782693f5d3fb3890454605416a17956af57900ea35958a67f525a9c1d605a13bf0c019fc5f0c4e384085843de23507785904d186f09ad30ec8fc816eddea03c197d7fa5bb5a954dbb6a9b64da5dab64da552a936151361f5bd03a60f4f75f09aabba2126bce6d98db084ea7d1bbeaa06776af55abdaf7dd264bef2baa8fa7c40fcd5ea0c5bbd25dac32e08015e090c93c66b9ff7edd9122531cc2f8921fb953361250cf89517e18ee95d1d30a46943f833af67e42b31127c37f1f59151cfd744ed4473a7581596e21747f14b4b92d5625d10f883cfac8031faaf8378f6585b2f1d52cab84465494af8c3b4a695936ddabcaee3dd37f3386fc402d54d6ebac2d16ace45a62a53931e5f935a163325f1eb95339c94fdc35f6bbb4453be369a7aee884c971eb1b04f8c59a4941a169fb97429a5a49c37994362f1018e2ad461d8dd1e94feb13ceace1e67d99c194ef44f527e498f4aa1d463f18e74a9fdc04ad64b67b5346f4e2f8ace353de715ca892e8ff3d0c9891c647056e7ba14620a327cf5da5dbd4f67c974be9a5b76fac129ca4e91d02d2f700f13b9df8a5975ee2f83e3e9cdd3863decd63f7eea1af469b58c8c8c8cb7dae7a74f882624892564dedabce8d9cceb0b31abaec93bc22f22feecc1c0afcc936431abceb5252be1ab934413222ca1dd5b2ddb99929fd66efc4957f7b3dd7dab393b97691d11cd91704e2f374473242c8d9234fd708fe619e796355b9de357f6d1a79ee5578c3fd0477f12dec954996b3fb0d1b72dec4f348167f8cc5148c204d66dd33407423da8930d71b11bc20d4b53ffc92fc73297970a80dd0f1c5e217c4945a0a28f2e7922f7a84870e89584abf23a93ecc758a22aaa2243718f8abaea72163833656ba6823361d84a33ae4a2327fc9ad007fff4427f6e5b943748f44d66b2293705f49147bd333d877fac831f68f1d3a33c9a6e73789f44fa49291784bdcee257f5ec632c40ec5304fa803e11eee4805b548e1c17c21d1d9fce58b887a1b27054eb4c9da9333dde18a55b32e4beca6b3ceb7e5c57dd57bc9bca03127df3cdd3b95ffc1c399c46de72b8ea56cac58eb130540b6cf5cc3f38c558727850ca70fcaa5e23652cbf62147ecdfbe37a5248f09a1b5f3a914649a6e054cb69cb69cba9d7e81ebb1f381c289ac00204604f0e12fca301f0cffe8cb77e06ee509ff11cb7e1ab04ea12c7530fc0a54e42cc53dff8a94759e9265b1ed974cb1ed1968d532f480684954e3b4ebaec8440dfbeea2adfbcc658191d07c0027438470e8739a4c7207f732531bf7937fec1a9cd8b21bef49044b7528a1c160067125f4a009cca58cd74264d843c22f609804f9731127c7a002e37f1cebc314e8d689c388932ca279dfc747944824f9751649254924b928a649255641300e491842291b60f06ee5d4ae2478f413e75253137b12312e3d48b217eb44adca3e334d73ffa2c9657e684a83cfaf42a8383e43a93f8395ce5cd7cb15f4ffdf0bd0d26c76d2f321c147e4dee88778ef87583d53cc7e774a1964f8f44d04751746294e3d3e3d1cc17fbc12624d1ad236926f1db4b9de1609ccea4c9cce1f273789f0cafd2b9bcc4afe900b84cc26526de9951bec63fc6f24df835e579d79bba71bff837545e127e4d777797e37812f6198ac562b1a2582c4603cc298effb05f0945226d9ca4db8d24cd93643aa51b0e4f1ef16be6b88d0a821a91482b855612eea9e1d39934813e526839758f21fee67d325efdc6856fe3e65cd73da1c66ddd5c2924b8cd9daa61dd8fa3b95feb67ee124de6dacb247e8c8702bfa603b50fb5f0a77d48f066a5d66eded76a51ef73e70cea728e33a63e73f8b24a92f6b171aedadc0877da6b64be9db5759d99b25593b1fc9a1b12f4d19ec53a0386fd22d36bde975dbb41da05a4655461e85b32714fe416401fdb3b99b78ae0243e7b35f159b4edc3d33c3c5a94929292822fb8d391cb4b8aeb84c0d85546b554dd0ff62023651c8b1ce35885af8eb50f0777da59453946fff11195335e336e7563157e656e9ba77d585e6ce29dcc6dfc6bd564365e54aba695499f9066c6ad7f3abe89ac7cc68b213e8df7b1476f1ef1ab1d09bb2665976854c3965f798cdc05e18770477b1f0c3a1f83fc762531dfd6634764e5d18b21b26b1dd7371a79e647bca00c8cfd5e996741581efc6ae7e157cbb8f40de90a1312fbb0a00fa8b4c454b887897baa701377e19e8f87b1f0157ee29e95b7b67c967d9c0568757bc01efcea13e04e3bec984e088c3caaa6cd90e15454f44c4c4e25c0f29973069d8a62916bb681939a763fb83d17609cb219c61967a4ac631c422f7a2e74b1ebcb511919874e3578791999b45499fa20d495ccb32f3ef9cc93f44ee6594cc792c2f2184662127fe5bd60c43d107e92f6a170a73de33223edc3f25cd880b4cc460dd52bacb552a802f75417c23d4041455ca85e6bad1552a2a9875d1e3a11113dfddb497e517ed18f47f478cc8e3ce1cc56ae2159f4be11bcc6d52195c91c3a9160eabf13befab43fdc531d0521deea4aa907634db20ca32764f3e8079f84545701887ba4d71ceed13ce92dcdab57873a35eb52a1ce2767cec8e112bb708ff5f63815bd10cdacbc3de7a5837baa779cb78f8cd3f8cc25414c983061c2c068e252b7c7dc5e6a2add6da6ae52bd56e21e2d887fe7d33b4f7aad043b86ea9c2f5579ca22d5a5c110194149a2d284254a6ea93497684ad5bc956e70bac1e8abdb14bcb75e7b727576b465f783f3202ce1b329700a32bcadfcd6a1adabdbf9cc8d307ae57397827fe7f2bb4ba193bc8fe5b5526765512b714fe7ed7592f7c510fff3da9ccca5dc0db1cf5c75ba21f6ec5b37c44625b19528438e74ae208cdefeca10f6ea93e135af69763b09b8a37ddede8c60bf8ef2ddde51b8274239b5622a83338ad882e9da85948a665c61c6952ccb344d33034aeba1153394a8d1664609c49032838632a01ea251c6d4166850be4198a48756d0d8f23e0fada0e1e55f66537a7dc1273f7ef1d273ca70f2d2597212fd60ab011a541e5a3903ca7f393fcf50fa1cd779f102a84fd7c10b287218f59ceb9c59ec72aab09ad7e2d7f439ad709c905f3a93a9c2974e1d32d7f40753dbc26a0e3d24d003f048b4cf8914eb413e3402a1b872ebc5784436ec80c578110d6c85c322b2dfd043e77995f3fc1c9a734e9f9e94ce3fe87d2378e8554ae7b06b010e01d6f90feba0e8a153162c0378e89445cb4fe76ee7f3b650020f9e0803e31cde4fe8211218e09697f9e910422b64d0f04ce2b7b701b8e595b414194600a93082755ecc39ff6224eb6b73dde51c7613805418c15abd237f0c28310822064b52b1188cf3558dc9237218820621660023b261078cf3221ad8ea12d9c0b095172d00c679cc2d5a006c2534258873a122d257bef28484f48ef4184f684ad0ca394f68f5c4f907a3e0114a6003295df8c0882c720083b06e88072c3300028827a294100306619d7f3d823c1683711a84107a361d3abb931b8de2930e1ee9c142a75895ffbecc6388fff543ff221529337f0285f875d9358f09bf64248205708a297de6fc99178bceb0d0a7275badcc13f29af04b7a9788a8e5384e74e335bcbea08f55ce5db9eb764e6760fbbfd70db7e1456e78b06d78aecc6d38841581bda3b932cfb5c2ca6d780b2bb7e1c93025c8e59dcb90b3f2163acff11c4f0657e710362f0b27c65b7786739b1556ab8e051433425a2a3ae29a148182a219da586687a6383839b67d701c8726c773a21f69d23e45b1bd8891f6e1bc3d498d5177cb22ddcd33639c75577e7365bce65aaf712be778eb42188e7337c763f7a3eb72bc739c2ec75b37c2b85b81a5eace5a767777777777cbeeeeeeee8ce2e4b8f41feef69c6eda1addbabbbbbb7ba374ebf6ad5b6bda39398e93d35d6bde0fbf3ad33c76996bf7875fcc0284b53cf3ccfbe117100e4e8ec34eba2e4fefb0e3dc1ab77589886e3ca21acfad8cc7741d4773630d43319f71d8b110e3abce3987b28dd8f699f64ea6bd1ed5ee9e19a2bce262b5bae18ea3b5ddb861e3e2dcd4d8b86ab098b9b9b9b96b2e84ddbb729bdbf9766f38ec5c5a8ddcbdee36f706cc7565b0e12ecfb9324c09b2e12e970187e7f8ea4676c3db573736956adb5ca5dabace6fdcf0d58d6e09f5e92ecd03f21bde81211cafe1f3baa6b750e339de828dbbbcdeb82ecdaf0fc1fcbab41b375cf31b9ed014edbafb90b6518f4eb64d732d1971258928475794787ab9518d075e49a2e86df80df777adb0f2eb412bbfee09e1f05c9ad7788eaf9c7a419ddff0846c782ecd734d6f851acff1201b77b98dbb72626a70ceba349e75ab5b37dedc219b0b6f172343b3b2339ccd1065192955e544365058741b2cec86a8880776e33658988ddbc4dcdcac665c7a9358d43e2e97352ebd48fbd87019979e04271af15ce0978c529aa2cdbe312e73576ce337cccd5c1b97b9376ee346185ff8d65ab7b1374b32776d3637362e84b55436332fe97432a78e94cbcb8cd114221d88e7a5e4699f1c9af33127e7e5067750b843ca76d72601b8433adf2313883bd26d603cc0b7fa0f46047c5008aff2aaab7a40f82be745a41be1177c6e60d2934867225d281689246c32aa1ce7b588f4ca2e25c6f91ee197a4b018b7b9451666e33797c8061e988d077ba7c8c262bc22bd238bc01dd25556988b1de5cd03b2f11fae3917c2a8cb71bcd2f84cfc9adb798dcb72d7a5719c3be33957c65bd7ba8c5bffe1e9028a8959011111d5d039cb89886888669cc8facaa6e6ced535d23bd2ed4d7223eb4623d83b608af4e02179e292ccd0c62b2e8ca89e6c3671b05f4b8bde2dee7101e9df7c737e28ad2cf35c4ae2a711250432aec0c197232ce100a1a01c01e6082448e2053180b5ab2ecd976c4ea75af4a681dae420ea8a1aace8e28830384b30f183135070706207986cb5bc0aa829621c91830d37a001d64a4fe4a08922720045d415b06983fd5adf793db8877339822389337b419de3f0846c78d7b9d00d5fad7c08d65d9bb429810498873f78e884c4d1d7e66e38f41c201c6ec35735bc6b3a6f394e8ec7a4b8a4c4af987486e4c2f2084730fc6a076a1f1c0bb871bfb95358803022771c6e7321ccbdbb383c763f5c2b0cc156cec2106ce5090dc184a604e1f095bb07099d00b6f284849cc070780d6f39ec5c99e3f01fbee17c441f187b401fd287956f7b836fafaa2a2cb316b5685a8cd291f2810a5c3d30f2e203a2991ec4be3d4a69d328ca4b3b1f7139417cf284cb938f4fd8bff8449b01ee688f7709ff1763572c3bc75c19f441bd3d01d027160137ead54de5aecd03c2bf5598c61215ee814e48ccf0ed91897d6eaeb08f6d8f58b8073abd608a7b64a0d3142edfb0498ab7aa52527d4bdaa8b74f4c4a4a823bda55562cd5aab0d463a7b10061375e71545658cd7b704ffb09dced740656422edf4b5c9907e4385cfacd252272790d27c2f196571cf7fa8d6be336ee8dfb159a1274e3d7bda4a6f6b1f1be691fad7d477d7b54cab5c2ca01e0412b078027342573cf13b2f195675e50e7d713baf16ee5386ee7372e84d9b8f0732e84b92e84e15c08ab71218c7523ac75212c762e201b0f7e507b81dd78b077324fd65cce732e8dbbee8ce35c19af71adb76e8cdf5c9b2b59803022a219b74e24e3312eaf0b68e52db418b0ce6bec80886a18a2f19a1997b11ee3442beffc42d891eec6a5d8d44e73a354efb4bdb077b82b73212c29090cfce2d21ada9855821594ed7ee2e9f1e2f197e5f8e5c27c414910382b4f59188ef0ab5d75848d4f541909694c071ca7338e888a92bde4945483065e7800869636ca412a071c76008616dca605081c2c96a29cb4143961910446ddc1b682a81a3212a66670c27302638299d69598d28d194eba08738653182f2ca04f804122425341397181e3092b3b508a99893595d1aa82c58ba62d4d5a9cd8e83d02cbc904495c48d9389d20aa29ab085764ac79aa4bb8d8437d842c658f4c8a15bd15dd6353741d311f9d87d147ff81cc4dfcb4f4d1a7e7e4232fb54f363d4ea72d641e8595afd4470b77c0481fca0c084de07444e946b8e76bc5e8820ef6d9a678f4683fa11d05d8d40e14f3ed45a0befd05d9eaf636c1b7bff8dec97db76b8874c197df3a74f038a11d857ec562311a9a623158bbbc1c16dbcf3000d345ecb929167b202084104208a9bc16f5a113133e706222ca43cf1e3a3191c589892b4e54f9a7bf3c241da2708f0bfef497e3f0458c1c999ea46716619f6be485e947d88704d8f4243e106aba5024caf2d363d1f48c7df20d3fbdbedac7886df97cbdda07c2e69c73be5ed379a6f798fe33a7131b8934df5cf364a0ae6d9e0c2aa7d715a4b9c79b07358ff68e764485d9f317b591d74e7e43c3a5d790e2031b8c9882072c92e0175786f08189339c88c1038cbdac090b9da3a2a2a2a20a608058027bed1aa41dae34c718f590f0ec7de4e5d93b0a74daa14becaec84fef682df4e81d8d8b30d4ab4561d782db165ebda3b5e0bda339a5d96bd1977c68207b2bb10f09465a98c238a5008b67ef2bdc13e3f4248a366b73ec5eb5c7bbb96a081655be79b4f3cfb2571ecd5d419b53a7734a74eab982a8ab5c950dc1aa1427f1125454fb5686fd78c0f0f0d0167b81d2503a4a2b35151e3c70073b938dde9e853b60c6ab26e92fe56b8a1fa694705ac20c290928830434e8e082283ec8012c7a0dbaec4045091e6828da81c5420b109e10418331848045a74eacbf6d25318515563891428a0f64c09af4e083163fa0e088269060f1a79a7807fed44783a5b2a98542082b92b218c1030e50c0a46c15939d28a8b006c14a6fe8a4446c268072ac0d42082184b477e0f6487a021c834d872e995d97f480c4f78a7a304fbfa4c3a67fb760f36a3e6fd64516361b04b388c2a6cbc9d37f38b6c000d8f4a03b559f8d01df52409f12e04e4b7d0301c11ded9914928addfe5bc5401f3c70471700eeb4d7a83133a3faaf84efd537955e095c86fd4af876a0f622ed46da8fb42ba14d865c001e3a3d517aeea1130a4890031a66962c2ed3263be9a044c243a7146cf1f5a1530e60aa8831cbb253496873dbb66ddb166b6516f7702dd55635ee22a1be6daeca5e3ab6adcbba1fdbe6f46eaedd8dbbfcdb53731c8b9575d49b45b0fdf0ca92938ff12bb77a654145d8d84c9563302ec68ccbf80785a6cd88e72e3fc775d42b755acaf29b730d58c2c239ddbc2649f8953199aa3c6a6f35ca72f4ae9cbbaecee157cbf1c665866ba95a6badb5d65a6b24e58de3aa171363f41f0c132317abc9a1429d6a59b6a92936c1b7ed63637e1c61239ab2c9b89571d5cc0c84c9c8788c07599ff184a6684132325e8f6db39ed08b0508e3d17a7c36e3dc33b0494a8c5beb32d68b1c16e31576db66bd566d699f53cdb7bbc59e3db78c571b5479740205cdc9651de7f47232455c88eacea816b71923a21b57a3695b05f373e3818d4f90ca9619d4a2a6c5a8b3a29ba651eec2d7486007f0308a329e3c3700989df1180f92712be3d50b9a99f1e252ef64be2428c6653ca188d43b99c7782c40584c8ab1f60a4d09b2d5ad178d7a27738eb31ee3d5fb80bebf78745fabaedd7a8778af3977bf186400756a53a31a7d8a4dfcba92649bb22330d4742761a2f907a7b4ada34e2fb782337eeb7ed07c61550fafac008ce79caa7ef3e253a4351cf7c3345d0a356c4d8ba32af02b735aa386cbd5f45fac62dbe24728d751a5d0b22c27a11477416a6479844b7d758ff00b52cf0867054cd4c3df3aea3a9ad6fda83e63477d8cda1d90cd6b7743b6ae8bf1e9c5dc4c8a9d190f0fce658f137a6833a8e8ad0e2b77b32c6c7c78a507a6a7bea1d0031270073e77e15323fcca5e8052abb8e2bc57dccdd298e9827037c6eb8ae39c9bae7c7396a6ad56cee29e155c75341d73f5f6d09c56967175e93ff8c5a4708af5a46a0e756a758d67d6cab16569d565ab95c39452fa833a5f97e6d49b6358e89a4c741d9537d5f1cab2e8c1c3af3937582b0c338f60a1b35ad087caa1736d411fd5fb865e5591fe63c04f872a95738597e3d7a4ee4e035162b09bd64d1bb576c0d95cafb92faa84fdfca3b32e0fcdedb1023b7365ae101fec079b808a44b1ab6ba48f0c61b99be43611427455d118961e85613d568926b0c72ab14a9598121fc72ed253c4c23e2c58f49885274ad97cf4c8857ba09351d2478f5da297a6c2455109281f3d5289595442882bfc6ae2578c55a210b18a1046485ee1a0425b65d4a685d3a28291d500674c10290b34226294263b7c083de8fe50d503299e8c5e20454699a7f0814d40d38bcc013c5c9a7a08e96ccad9e9ad19e6a7bf7a3a4fcf88839f68fc9c90b6940a2394dd3293d26117049b56f0d2db394a16c6b664119ca814bd741674d814ad60dadd2da9d434aa45ba799472cea9a9b2cca3d4593e367e161d42d83927d04754d11eae52b1a6691e04bee6b932e9991c7a265a0f7d5f18b8af9e8ae274140bffd30179708cad180476766e39a5a45aa6692e358f6ad2f965984e4b6daf472f47e0e5358f94520f029f7aaecd91509a2fd8a9f3d07f4c62ffb0093ebb30703f3d8e57d446e3bf28a3ec82487e711a311e2c74fad06909cbbfda520bbd051dfe54482df41674b80021ed9369de3da6945ad64eb4ac51d5124229bb3bbeb7d603a5ec69b90c4229a594b0e584de77e4a1f7d55e6023842db5a6dcddddaa965f77775b2b468547329e3ce1fd582fa77fec5fd6dc5efb4fcbfb49e74f73786ba6651be09ebd8fc94b0f06ee61f6ec15cac0f6efeb2662e75471739b52de6f3e3bb7e2e4fd9aebe662187a33f725c62bb2396736e7cc62bce28a18a988314b8c57c47885ec18638c57c8f943853a91a1d7ffe455bde46a3c8c30a35af3f424bf229d526a349b826eb38a4d2555b072dc7438bdb797d087e6ac753bf401555ba55ac6f1d4281aecaaeaf8c594246430a5082c6cf7d0690a942956f5d0698a0e2a8fc7c62925a8ac740413efc0196ccc4327253038287151aa4e4a55b21b5ad6aa2a7f9b2b2d6d1e0c3acf4c44914a290819cd05469b12912b93c244c17033094ab3d10831724b32ca6cdc014d6f2e889a3c3cdd840de628b5463019d164c4936cbd7b10383c78bc1e452415b1643fca4e4718c5781c1722286dc011452a6a5bf3a19311f6042ed8d643a71318a10386f5874e27c0a10b2b43060fac0c171ad8fa031d2c6705106c7de8e4240a21eccd43272748f460e94327275280b0ab874e4e7c7862b3874e4e7668801176d502d6cb874e46f4d0446d28b9ee805415fcee806caf516b691744d32e7bdf1ffcd371dbba20d98fd643cd63d17c61b5da05813ebd763f32effb23f33ed5acaf2486e1b87e2571fbb11ac1b30f6531eba1fa9494ebc831c608e5e4e494f346ce3669345055aeeb98ae5b46d7aed42fbaed1d986ddf8ea4bd7ebcf1fab3e4b8d53bf7834e4c4c3d13963f9b99760a2084f0c21d309359cc2084d0fbee43676ec9dddcdd92b9d5b2317a1f73df2f3ee42f104208a1aa4a853a9272ace5c4283e7432e2048cc4ce4b7c054bfce88229ea432898b6280289980d6604013604832d74608227a044ed1006fff0ec455c70927992293dab676f128be4b3764484c43d344a121acf1e95e018483854e104c4142b680296050a0e533c248106138cd9071ba15a15a55ca0b1c7292e02ed41005de4c0c98aa51b84a80196812a86d0454a4b17533c71f4cc49535eba113c78e92c5904112fb1bc2c028c97aec31f2dd4d3afb000f6f5f2559d7c992043c5734ebb1f1cb7926af8ea927b6e1aad27de810f1525c5a5698a77a438f12a57b9d6fd5051e873c3451631d8e610fa34972831d8e6b3fbb1591af57446ea65e682217e64dca5edc3577827f29521f0f876d681fd5ad508d446a81e315738e9f0054c55a498b1032d6828430351d8b0c31962e4a089a61e7c90516d612260f0ed3dc3134b4c31232a56c50e7c6818c2861e10a1c41238a8e00a971c6c842e8f881dbe3d8746018323e71a3cf82662869928467c3b8e95228a8778d3fd9071081e7c7b4b4a10596a504697a918162ece5002430745f800031f300f57b0e850a3832168f8769b99a954b1d5fe6a9f0ad060f403104c00c4110c60b204369051c61166e440460f3fb93205aace99cd99ee474b9aee8704620a1b3c3b55c1b3734138f18e82b70249ead97534d1c3871d38b5e08b67478185b0f24d0c2585113810c51e2b8108e2db65ba1f1d5bfbee264f515b9c600663749165a80a144a1439bde0055608016bdee11b8a2fbe5b48fbb462f4981357dd8f964930fbc3b314ef04258b67cfa1027bf1f0ec3ab807e2e0990552cfce238c1fdca305c98822886c2608db62e2bbbdeb7ef40c62053f704acf8e820d44b14725adfc10c60f373c57d1c5872190c05004c148461f76600d212115a12405194bd09005f68517289296405242a306ac831439f454293734a2b7628c4760bcf7ed93a1a08151ec9da76f97ac0560d143154fa0000736783af2b1ec2a4468394e4a027c1ffdf00d86fdb8568ef720f53e9e632c8bde971aeb0bbab7978267674941032fcfcec1c81e70ea01eaa1530f4ffeab41f8e83a1e3af510a54a7d7c285b5cac940acc5396cd513d7d04823e2a3070273af4513d41e83c9e44a3f04bb2069090fe537501f3d13529eb9afe9faacb47afd34b6336cd2a93098c7526be2ed553fbd022a09288fad8c447ff54521f9fda07c2a0a2545270077fa134d6a38feeea8a857bbe8824eb11fb44a9a91a25a92e552ab54a6daa57b8073aa940e9a3d7a70ac53e1c2c7ab34462a28fd16352d1123b614a41930e1f9d3eed00c54fa2b80a2979c647df3c7ae412838f3ea56df9e89bd1478f417c74eaa1e0a3d320ac75ebdb46919eb42ddca371d1a6342e1a178d8bc6459bd2c0d098c6851a45a4981499660c787e789ab2a46c693231c933b8e79b4633368b666cc6666cc666d1349a47333693aa901c83518f45020b61d48df44e74b80506611bf5cd734987b0cde1108ca718ea937ae709f71cb50f4d62a496f5161452d2473ee2268a3499e8649a4df36942ed007d48c9ae76d837095f26533a401fec1b80016ef9fef62d8f336f13217ea500fa90176ef91abb211c7be949a131d48b4d913e02b80536859d63fc8a39297252145dd1e8895174263afa0885227d748a944497a253a62ae55854f7afe593791e8df46667979fba89a707fb4fc717cfcbfb952d59e9e97033a351a14e0e1642089dbad8e1478710ce6004114a30841abecc3003d84c52981ba4bac8014a0630e89521cfc759d85fec9c258aedb3e59ee8b96a609989b3c0e84c663465490077819c0572162c86f05c3c3317cc03e8e36c8618cf1e84672ec273a3d0fe9386548e920f07637fb1ebe002c6ce23e69d7880f2ec42d8473614ee798e5f5070c8e1d96dcbd95f5ce10e28037dc08f0e774097813ee2c7cc65e00ead9d6a424043b0b6175eda3b9e2b887ab67798f4afc0b0cc838db4dd00298476e8e33bdc810e792cac0faf4c81fae87df6ca7f3c0f5d08e481de03fa0f74216da5c2c8d548a9587617c725990781cf1ecd17f6e6e1135fe0b044bae69de32f1dac3b84bf07909b6fd5c012da99b46ea667c3781212b730a5a05dc80b4c28b0410824c8c8c2c3500f490881022a8c808317348035646678e5a4c1469755586e17e23ada797afc08a179e8f4848ba753d82bbe9d074f0ed6ffe3e1e9f123046ad680a15835344266648a8e989e6c565616194527455a388a8bb090f6e139812bb36a7ca6de1a57dd995a67bc7a4d9da999f1254a6298b71f7d54ac57799527aa08e743aee9b956a8aef2a0ea2a9f9c2724e32acf351dc2542e44e3d5734d4f09acfa104c358b8aae07628825748c9970a78a37441c6209d1c993a2a222a3274748519496a83035d1296911bfb2f0cb880b451eac99f1806a55094d0992f1196715d1c84058a4c5a518ef9c68e59cc74063b0df83a77d5c882670916b85ea351e54bd86e509d1549f5e90ca673c2119d535a2fd12f9d555dc8d4871a9a98bd936b91aca78a585c93a5c756e3d1970788743860b9998986edc1a1b385635bc4eeac65539b0919d30317111131384798d9c4318772cacee0defae0d8f2c5f790d39deb977a3bb2687b04cb206222222ad09cdf3ca6961dbe11f812109932691e969ab4c549934262626261899a4744dba74e9c1252e6a03c7bdd72f11510d773951cb7198a0a27cf4376c823ee8379caa740676c2c03ef12822c5a4e723b8839f5d2bdc701cde820d775745251c3c652395b81495be9d3b202296e7788dd405b4ea1c762eea01dd701620ec8627830c2c5fd9f064c8f1cee90c6cb37ce513607913c891353572ae6b1de7c6788d3be3ad2be33697f39bcc7521ace646d884301b564d1394d4d4531417304c4c37431bcf5c01b55ab9bac7e7e478b35caeb8c2f16ed5d8406a9f9ba598109609f4345f2fbe39ee721b39de5d97cb579ee3fa611d1b97774303d3eca323e5f2821465492681026a9f134e803ae1841ab883c572b904c1ea8620eeb4bb220ddf048281609ac4888a8c9e40418a92b404d4e40a542c72b97ce5f29a34b1e101e5e4b8bc03433602a9b1a8040d36b5454b99aa19810000005314002028140e078542e1603820cbd2fa14000b8ea84a6650174ac328486194420619038c2104000466004606d404ac4388d493ce293362625c8e4d32c272fcc588ba3d1cef0178f41d0456ebc96d602dc7a9164ba017cb1a2ea892b4467da934362eac863672236815758f38867f9de8cbdaac463c8d3aaf58718223a9cdeb67c892e7a74cafa62fe72e0532416a0eaafc5cf5a6c4fbb92a48439fda91ac3f72f37ee8ebb9da71ecb26b20a596840e8d38c7caeeca1ba99205c709cf55318a83db6cfd307c4eff75ae929ffcb3cdfa494719e69cfcf2a8207174b094f991b3d8b428bba1f7658ff394f9bd0b0f7aea977da9a1f8e8c0edff8b7875e699ea7876a2131f9199ab46953d9dce20306985e0a0d3c55ced7116e6aad193c9117716b0872f8d800be70f7e97abac153f402868ade2f562d851ded21b9b8023e33a16d03c5206cfe03a1449cb30d27548a2b6a10f74203b4019f93e54fdd7ae92ef7fe14842d6339c74eb10c0c0f5850c120c55851335b633ca3cd0a5daf75fe223e748ae5f70a2a098bdb69e912131768b9e40b80a5bc8bc47c2d8391f40d8ec51e31c4473f9eca8e9109d5ac6f084b11d14dc7f70cf5ea9f3ccd117091c1652e11a0e9f9387cf94bbc5215bafae872c92b9433236eac618db31a903c498d309d0d3904db7538037bcbe6ae4862fc44145710cb3944caa07685ed282aae05462f74e91efede41a0867965cdd883a865b58463c9c095e8cbab8f9bf7ead6d7669c2787a4f2a8c09c69f911e3de17887236d2fa8376d1c5155fd8ca62dd809303f6dbf116460f49a7b48c4ac02da61948550ca0999336479f9c475d61431a2c2ba2afb1624345709f1e74f72405e7c0c78aa290324407ddabda9728e40b51a5c75a402c72190cb40cd8da41a14e6dc42ef978f96451f0b8f86d62da29e05ee69dbcc77a9607198ebf9d2f2b72d8dd3af7e9568ba7bef9bb703f5a5d498d6bf57d713437c1d6b151282a261520748b60a25c8b2c52ee4a4a4410b4a193ab37c2a5f9e315c40243c11301cd31b637305c23eda1f4b270a26e0f7ff16c88da555b8cb9bff0e0f681b122cc1152ba58d1a828b5f5bab4c0005d19065f05f5add29a70481885d55a353e6234e01f3671ceed052caac6be34d2418e02344137897d4836b4b88468535beaa87cac38e5e1ad6404d5df75e4d77fa45281ea925d8fec4655462f8667d03d09f0a693b4c48dd35a00121355303689b6f20ada7d53580231fc6e55b8abad892df8e619c35d8e65bb6638551484f303166a0dbb55ae79b94ebcc2bca984de253c631030fd48bf5a64935346e8cde543b47f54bba12a93462737703da7bb7a1f50ee46a75c33b2b8be0e974dd59701c89f61d98a21d001bd70b16efd15d45ef28e280c038ae29257000eaf5163df50a13e68f8ec07ea7544b8fe3323454c8e91537bae9249478135a90383301a6625cd6851bd789c6b56a2308f173e672b004f19219476119ad61f3d1e7eedc35ee4e3c50276dacac2a55f96d52797f11729a3853473671a28f0c0b5d5b9c965b107ded8a5851842f251943c7d4d090654215f4fb6ae919df46234b2d08c0ddc412b83ac1ab4adac2ef127b35eb78830b8fe7eaa8e3efd9dc7a40eef1859eac2c23d5da62fbd4bb92c414288a4409d4c0b8ccce57987f07d5596b839fb9d07c78909e758a61eb7d5f51eff747c9c6b769475153bf08f862a8f89e07f5de2d58bdf341b77eed08437b1524a274558c80474cbbcad2757cd008ad30adc295c94ab7ac321d7d3341795237bc48c058a972899aef3222524a922b1352db6d9aafd3c3493ef633ee03c1b085f6ceab496974ce23a61454bb13036f201bd41c7697bbb0537b2f7639a3c6d3bd2e0ea3b4c90629b2da09e6f918adb335347b548a8ed2d9442f300a076a96743b9aa6ac76a503f6cf94f1501ca2ee04c772fc6fca7e9471649303f25207a69098bad2135acc27ba5d534170f34c0d458f44c49291e65b89c7d62665855b23f82a56843ad06efb0f668c5b610774a7c051cb4a2b52bd915373b83ac169ac0bb9241ef1676c01eaeb79710e31b8aec5478d2b5760f57883fa2fab25145372b1e91d75928a53369b2688f2568b11ac701dafbe8d4f0cb2330d39dad9827bcbb219f9ed0ce7202e0a0d5ca341a05ea3269a43d54054af09307d49b5401fcb94abfd473386ea1227b84af101ab07de87c919651e21ead6906f54f70f66a570095b0eda14ad7c883801fb334ae3e5fe8fbced9f28e5203c2d3e8b9172e50fbb18c823743586fa5b1e46887ed7ec1caf907ffae86f33ab2984bd0306b97723910143dc667a560035fd0b4019074eeba885349b6ccd26ab4268f8f72f8aae011424c3c9a266c168a0b908b8aada4c1d1b125c13e1f961c47d60a7348c49939a6099e00db9ee51210d23a55782eb5a8a5601e952cc656f70e8f3d20d824e2b9703140ad963fab671a49bf4ef34ab12e6856b50d98582ed24e963abaae4df75d3dd201cde972798280a5b9b452358c18c92bf4eef9f9c04182f5d00a6206856a0775f4fe097baffd68c95b3d473a0e3479bc1108394071cb425f30c13edfccb4d8562023819030b7590ab48dee53e198a453fd2f59b9af377ca554bb2acb8868545357d1344bd66b8a6ad66f2af10dc0192e41ea3ddf6a9b6d2762adb100955c256b4a01ad1383dea2ee73babad76e10dfb57a7c3969e52912e7b6556aaf24a9c911502dca6626d6a7b4de3b30b372a2ff7ebf44f9874ddcced33f5beffd499ce99262e1d67ca7ce99449ea4de7654e9a765ddf9c6ef85098086bd23547952030fa21ad8c8c1111ecaa3550e798dae99c3ac2948581dcc1e531018051b414bcb4fe21d66982ead724fa9672323b2cb562503bac6d82d79994d383cc9af28b323808dc7d214203b885ef64478a2cc278be4e1f7368544e42e130dc0e3679b4f0c77206e9903796a034895c0b58192bbff583c9d85b81539d466d6d6f70dfa83b86e5189b02577c663b318690d0268aec4fd039db8f11e04c7729861a80be189ea99f53cc95ea31108e7f4bf9af1a4afa22f86c5b0433269de7bb6b76786abb88f5c372a14a77958a00d152fcb1b21e4413820ba7d4f1df10776d0aa205af92fa2b75cbf03ad614f567513f015bc610802108fd23360df448c10ebe155feb5208f4a48d85e2993b389035440e24a47f3476c5641db51bbef8fef72f85204bcbbcde8d3cb504917e5e26dd0e81b8affaef35521079515700c0609bfd58dc7f96884d01ec06d89740d1fab2595c4b4de13f464697ef1926b84102a9c3b8345cbda8df3e03c11d2ecfcdc3cc808f7421b22b512e3a0841f673de5ee68e84c37255ac17caa8500e9a78b12233392eea8516df79c0c52af2e86b15a1626dc5e60973e3b1f146a3b31f18a83d7c3185c1b6b1c3c159ef1a570813db0d53a5444b2245c6c0f3564c9be388dfb23957a47732afa99b6aed70cb803e1c3d2943ba5567382bab25300708b3b109bea956ac8c557f638b0b27aa129c6aed9984742e30dce56263b99fa0b27143ecf1095a7060267461c5c10092dc4660b3bdda9077a23829d0071a949e335560a0096e51542db5a068d1889f2f2b5314d9706c6c2dd6e61a047f5545fa2022b3bf4277001b361a6ef87f3cd7b45e9fb90f41c510bc7f686e444bb97ea50224ba90545a1271d9cac9d2650a27689c5d393442fb4c2a46d351cf4d004fa926455238f5027c39c08a1d2bc0463530c1284436472a8df1c4954baed6df29150d4999e016680f95adf675f9c8461a1f98e3a690f2c891debace135cf2dc5c32c9e5315461447e3f2ce72e4c321fcd506740cc5f5e9d5de43680af255d584b6bdcba02827122c492229ffb9422d85d6ebd95a592338dadd6d0e32b8aad97c3d17d0e377e4bbb4070edb9710b7787c9a5665025d247d5487b6d769d032f5989a75aa3907bb62e793b6bc91517a641d8cae932b99823011a1922a2d1012c61a4b6a8cc32295c48c957a50208709d63584ba1ddd31cef19b9d4661433123b1f4c1853772919a03d570f07feb4c724691ca3d1c95f222349a5b48475ec6aab5d81b85b7960aa637e3bb04dda68b85c8e260af4f9dcf9737c01ed24b08f371811c4bb012088931c72c3f5695210e7934af361a260d2833191f5f0453bef3fab20a6b87742cdeeaf33bc759330d12689bff0aba3120e42d8a6f23297ba9b0281d68f0fcdd8345ea5174dddbfdc1dda95e9b77aa1834fb532804f8852e96f8d2079bcd28fddf40307c54e111b8bc4ad8a0509c5779a02b22a3d2151a95400de3176052c2370faa24c8b0f151071fe6bbab8e0eaacbd51ae89683b412071b38bbaf2b83692f86f51859543c5941e9caccc15a025a1b073676901ed74a4c6982967ede4519ae1b1e81d1cee22c7dd84534f3ce0e717672bce05c8d4e379b39d061ed9d3df87b097b97f0000d1ad936acb221b6afafccf550dacaed5c3a1a78666e35a3b42b407dedbeba0069abfd7a9f61e8d8117144996ac79298e26bcc9a9174f7ea79f23dd51b44f233187c4b090c80970454973d305590cb49fe4f7ba0431486ae063b9559c124183ef110eaf7786801e75b71d2b63c77c14882001723f1f6618a4ea397711ea82d948099e23d8701e286ca7baa46294091b3b0b9149f508c98373a02b07ea9276c0752bcc6ff449e13edfdacabfda4c49dfa4b69332b7d503c969abcbf58044cfdc390dc86e1f573a3d5d601f21703da96783daea381664649e824233ceb78d51cf5acae3de92fdbb39ce378635a8fc5a5688beb006c58e2eac8ecc6e805223d56aeed84f528cd0f367f788c495055c194c1303d4b9cd17bdc8545dd86603703758b963e2a8191fdbf075a3584ca7d489a362830dd62f43bd8b8aa84a8c54ea16f4b68744ddec6b367b3ca8961e7ac4a92fa9047dd884753242db7abc0c85aa5c6f6e7c9e54248d8cc03c9a44ac2e55eeb05742ae9c526d1e4b8dcd63ba0254139432f8d9c153cb12a938c20b32a2ece68fd15abd35a40922a956359cc8b0f8facf68ccde58cce558f461c381b6cb3154f03e2188fde5ee33576d654c3a0881e9c48fd4f09d00ab72501e8250c8d9fcf6f4b9006ba54d2602b426a1799b8ad5a2d9bae3ca716257d55b30964c80c81410115c1e0182d1a990bf1120e80ab41910b5de1f550753a39d57ee5939406db11a7dd0acfa542f5baff94c03378ae0081c7c960f4e3755784bf2ed07847530da51f14b9581918aedf40fc0d38e9e8a087ac69226a411b64053290555aca5fbfe3925462196e07cddd8583c7be15bdd3e1f7e8c964d956626a0ec9fca5a7436fa981eb7a54176c6d0a875d2a9a1c1095bf39b4296c3bde851104dbdf0715b06098fddaf89310cc0cd1eb8659301738192101993a59a16cf668ba7b5a9f363f6592d9ef2252573ed4f490f8f051876966033b984880807835d431a52d4725531cdc5d938da89ab29bf1f9fc4f352bb4f5b7e413dc072b966c6686e78c575121988ca577d995769c4007a6a18091f0fd9f7517c8605d6dc5a65054800c49240422f0e7a21a77358a7e94b890ea0c41ed9e0c1fc9f21df238c0daea0361cf5ff6a0ac9916956badaf132f3c4c13f5accdb644a60047c2eb5e91d933396e5283db8c2fa57dcaffe02cbe462dd1918376fae065678e9ea4774aac75f3045ba92578f8a7ea215075e899b7d106882be353446a2d3be7630322665bbb9c091b01af0b7d080f930ed7e40178175cdb2085c7c01e4d745629e2c9eab4426a439ee1530c91fbf2deca53830f8fa404a951188dacf8a1ccfcbe48a6a417e7f080f29321744d799dc931b833349b7a02dfca7031076219f252a31d05d4456a9aaf726a59329e8148d210402b897f8be14b3bcc739c56211d0a20302101c3467579032e9d6f5af94a9b725729c997aebe0d4b5ab92fc6d921ed2e342f2627fa1c665cb66fde2062a9240a09a5b252d6bc81c78ee570157ea5a84b6ffcd681aa9f868afff265e396b933b9e41d4007db6d6b95ce2b6192724a0a14eb8a5b82051378f7b670352b8bdd61e48b5688dc8b2e73aee6c5d5e9d2d5b1c850076ae39fdf7542e4735c96f02444ffcee3fc6d3ff045a07412bb4bce3afc5bdfa2ff53b8fca0a8e3a777a92c27c3e9c5bb425067cedc02d55a369d793282b5bcca237d6cdd04b59f7636769d64ce3dbe0932e30ac0e81249c9098c2ab535b13d0bceb80bb8edc78a790dbaf1e54cc3a5bce6b7ab936b5a8ed52e258e106ed808729605715017e5f1bbfe7c6443bda6f8a4e59d476685e0432dfce48a77d2da3bf8a6ceb8b2f8424b2c98e1d251c8856a8e929f41d42524d5973c381e45827bf5e9aa42f969f600551b430c50daa0c2b3ae18540a0c6eeac00cafacc484fe3ba46e3a66fc9592b581c858b22d5cf31116642f224178fac72b9bf9c59c7eac09c51de24d6ffaab5de3809b933a25a8caca7a15d36c49fe8863a892e97fcf1ed22796c9d32a66d2af84df84ebc3e6e2801158f24efaba08ff79db1f44df1bd0b65cc442e22f263382b8581332b48685963f896c033bbf5b53fa239071baf0c980360212e47cc5788aa40666223ca00cd2b68a427b8f635ec3f1d826230eed73847a239dcd935b05989e28f6c1e5841781456b9730809ee5ce49717769a63ddcb8c902a400c25caed02fae1a40262bdbef12d12251441c0a57b84229efa57f61621be8902ff2643d46da8c07929b49bc79267177ff47e967903f500578a3d99090b65591a3b93cbadb4835c6503d85ff8faaf68872ee712fcbf55d6ef2a7cc4244d0c2141241482b8dc102313dcc3c8fff33b2bac33cb9bc68889e447e5a407b6a0f400059ce0a4c151d622507d6378e33ec7e829f3362df0e0e9aba85adff8270a9e691d66e4099bae29efb9884232c8873f71e7c424103563cd58ab7b779cd03e9e85a67d90ac4540b1d416f022d6346148a1f75770c326051a5a515d4cd46fe249e6d9315cf384d2097bc909bebaa1fb8d394e40cac7b2dcb407d235123496ca0359647c356314512f403b37cc6711f2841405cd51360348332e9f43badf50d87dc80bc817318d49ccad6ac0bc655264b0a02dea59fefe4ba7f0cc3548f37df2702103e89af3d3d181cf4facfdf1392fdb5587a6c795f9f644feb51709c2a38f4dbee4d637a0e25a7fa9af67c050048a23a20e72390affc7310637a4a898ab627635600d52de4f89a4af0f6be0b98772d9ac9c8f6ce234f3a70fee098ae6229037c567e4263eed5263a83aa37516a038da0a13067409430fdc79640421762ce07a932b7e6528f22174c021b7980e5caecf358f00ccfce830d7a2c52bcbcb3724c2016adb03ae6ed508034e84c5580f4874c8b79179b450e263eccd30a864a792670db09f1b287d451adb70782d0615b8ba2020b86eb6dc9e1ce93d085e99bf12d05e26e3e6b19c84c7f85ac087208ec58030ecb57c846c87a4d92600ec6849b343ddc32e9d88eed57a99001e1d8e436437d9b08c833c5507d81cd9074643ab9c0c7c9b7c66fdae8dff763dd76ef9ba87324114ff027ddf7a70b66e8b8070554ee054d46c3f16335dafaec036ddf4a4a991e7b1a14178c2f3296ccefb923ec6807bd6d5c0148680b306843408d8daa19c07f6346ea83720ba46c80a128e64a60402f5067d7bbd95b303e613587ba7726679b534cd36213676588576855789f639f8acd5200974f8f58bbe80f2235ad6b3646013e5abf23e142703376ebf1628546b288f7d75eb283dfe5524cad983cd13a1b0c51dfc506101fcaa70dff9a7e176b2f1878eebdb9b9a8a46e2feb9666bf3e751a7e657140f2c8b56ad5fcf14b00ecd418fc552e6990cca88c8c472c34a992b3e8534632ef36284cd089b6226c051c5023875fb0f8fad22304919744f0352d56496a1d3567bf0b143c5647ebbcc4a5ad44db6c8fb3f061dc74aa9c7b3a8a28d470ae0ca67b32b8a81ead448e546cf4ca2951edb6f96c13d68b753878567418f1a60a825f4683ba6eda7e4c8a4ca43a4e21c4f9cf4c5e1290fae3110bba3c1060722f45b61bfda314081d40693a640c4fa5e984eaf44f7a8215002ab40f9df79bf40e91574a223c85d1c3c5e01d407a8c56c05857d955630420e79259633ab74dc69886a3abbf89f471150b4fbf391afb8ac2450970a032a8e1dd02d7678bf3c48fc2d960adc3727459286eac57fc9c2e406992331bae3785af58a8df571b830720780fdceca9180b2217dc26fc9913d78ec1451fe539c92b19498b1a0b7c242cdfcb1e121de9140426351b49f03a2fa6bf24e17f52be0036d93a583e0c8b960f4c1a35ecb6d52a777e579d91a441f484a3d16cc34825a5075055bf5725b92bab51d8d8a5c31a76627556dbf3eedf3a95094d4e518fd7e811c275e7a1dc6e4a887ec90743ae7c0b7c62e6b2c78700efa8e3e4be8641586a6cd47851b80ddafec928d841c91810adadb8a2e7fa64d32171407a01df2e31afe429e1815dfd443c11db72d7bf2971a624df3ae198795e171a6a407818126d6ef21a173bc0da609caa300bafc3a150876c339b2dbd5a2870f1445ceb4212c319f02b8eef9c7d50a40d8329c277f6be274e1e1987f550b39c2214f62791970539e673aefce496213d33f2711daadb52d78132cb48791f44610c0a9c49d1647735beb39e3572321cee5e0211df325f699048fc82f7f02d4da0c21e376e8169d757f988cda4a3cdb685e816fd970552b80609076f6aa761efab64f8cc555e070de4a95db969a01335414a8942a66282bea968958cc68535392d18cd2078855e938f540f16d882efc871743325e21f7974e916d2dc76675832cc30077cfd8b56318d715caa9530756c73af4f4a9a42b2e967d30479504375bbde1bd0b3ac2934656a56fc138208096d194630f950116042926318d2ceb78d5bc0a754dca2411f1c511d854e257de04a65f967fa7cf5db79ebbae0b990814b40c98888d6a906019d3ac451636643e2da44f5566fac3743ab76a4a9774672d7c5da26aa9d40a2f182bb44dfac884955a2069b16057a8a052590d054ac483af28c16230a3c108502c751754040b806283f9c2b83013df3721c7f71d0f3125b9353350c08c319f1ff413b68ee41941fa395cf76599f5c4186203ed45442e9b188bad7e34255c284a28ec0bc0bf0f398690d1db1941c8a1bbe1f826071b6fd228c74d5e8077f9ccd6ddec9fc386f39921d8a1c3e85372ad1c2e97e2dd5104904f1c18b7513c7a952da8058ad715af41390126cbc591e8c8bd5b8edc481e44e00a10d2e3952f326741c353075d564755a64f957cde9f74eee487dc8af55a5a91e0c8327d44791fc08a22bfc0e2d2e4b598fd4d44648849ae95bc3319e001391a5ae2af2bda4520a4076e8ecd5dc7dbf70baec45ea8c301ff5409acaf2962ddc0f727826dd56770a544cead23587c35809112870884742c6e3898043aa01705dabeba3c237bf0b0637d596d935a648ad0881166c9a07424d828c2011c86c3cb47a6272c4c68f29383350f3090a84848512886154e805e8223ce0af3e67118abc111fca8e51786c9639d5e6f10ab29756638c9c51d2e8b1e805bdea6270ba9bb10e4767a4ea1919a888cc67239ccf0d3906c3e71f069b2e5cc21d14c5e148b870c970bc4ddb4726ab3d37642595a291ae10f428589dcb711ead8aada4024e51de24242bba61ddb5b21270c37a4c049d357bcc96da7c076fc87f732b655ddd03edc780671539a64d7aced2b1d00b751089ad23bdc1f2d577285229f89a5ae22be811836c8318c163175b8ec7c1800c6e9a1125101f7a65c393781197f0ab4f8dc7f247d95f31fd1e2b12906f8edb029a247f0f8d89b762f25d58b49ebdad5978f37cfe9cbc633069dd034c9dccd50f2c4fdfb436e228160c5856b82d712a26830f004ce4e14958d5ebb904c7446154599b0a6f348d9872b2aca97e0d8fe4612808aa48ffcc5f594e8b17fac2ce0e1e9a47a84926202e5a4aee982f7da15f6a085f57a075db370b828567b6db8b0608bf81e74796be229a62a153ef2c05504c1223ea0adf26820b93d941d696e80ca412a13dad2067ca3fe9d4201ef4e997a9c6fd3ce3082a96040bce6c2e85d533dab8b8ef77dc55e829461de150964397ee0eb0940f37fcfa494489ba67cc81a30a1e0e152cc60ab86ddef9b050d9694305c6f01e37a8d87c03688f25cc2eac70551c218926cf5452d8d38a4c1c503958128add66824620d0c486e56683ba3832fe38668b9b1f273be60cb10463e79c7c20ee30e42a8115f37a4db8d3fee06f90ac2b79cc7977070150e2191363ff1a08410061bcc4c39d00e56dd6781d1369d3c3e54188cad1c08cef19da58b2fc36d0eecd135cbc1560c4f634f737039501b2890f5097e0fd61924d1f09af94fc09e172d0535a039be7402e154c21c7c8418c4c7840475936b4097bf498afb6b0847cfca57ec1581d0eb3f113dba44ce1c56117d345167c26da69a441d26e047d18da0666d65cfd13d825ce2190877d994138801d250fb2b263cfd39c024840b7614081f2f62c286cb0c621684e1600d593fe80d0db891bd26ee38c99b9061288a134fcfaae31407f12391c8976680dc0fd411cb1a99cf92708f450778b6cd0d1560cc82cf29590e80bd97dddba8cc55cad6ef990baf02aedca3f50e99d9fdc0faa8dc44f64c54c0c5ac7b92ae55f75d7d10b154cec18c614dc8075171cc4618dc6ed73fdc1a88903540228d26b0005eb2de1b566bf74c600fcf45adf8223656c17a777b3bdfd776a0c0345322ea63a1884ef22ebd780bc0d25d5733c6bae47f021725780d228ceb93b4778aba80f19df7515abbdf0ba6b91750b28dfacc4ce7b7eec803cf7f5fd19eb0ba808a691bb2eae90095273add311d4656130c9db3c53e8c3ca1890d48e207a8b2819df4d319bae1137a95365ba0efda03547c6659e8c23a570003bcb0a458c33bcdffd196b2a4a0b9f4d1d527f4947eb9657763cb835c70e505e8ae92a8d7edce3d2fae7464e3ea64d924a8777294a48048885ad709003058db631fb0b997bd4a1b06c968bd572804cf803819981e2c166aa592407c990195005e897d3a8119303b47e571b0f24f226bb6e1b16c503a2a241d954e86b7a15f602447b26f21dab3e6073aba3ad025c3c952877b3aa1bb0e2b7ad5b49df322c34d168bfbae760102e3a95771d64a32d797ae90b8b888a48a7675efa38600d5c19f9a7db038c60683bae3abebd9378df5611e3c38a5cbf6dda280469ff4e8bbe42d0f2543f0b4aba0912088e20cceec28d3cb6efc7ff3ea1872b8979502a75eb559c5990dc1de5b4681743c6797e428ed027b97a66cba3cd5274b766d7a0aeabfbda436bc9dda2614a7c0deb8990e8027e1c60e1670f083e24a3352f159555a6674562e2189c5585ac6b1cce8508be509cdcac4af9f414c805e9d060907bbc2ab7a6c08a16e7aafbafd0564f14d38fccf6e046ef5b14d8fb2f0baae12a6a341f5bd96d233588f3c30f5e8cb808803f08974d614666f79276060d45df5efd0b64436691b5c0bf298baaeed5bb5a23bd579b469a05da80115f030ad7e4ac74b68739b328b8a3c62a65630b320b531f28057dbd10e5d890b5b4e09c6fe5cb37f4c586929ba97949c7a5754a20eb76b871ad912cf8c035215a738c8400d4a07406c09ad4414ce7fb24d85e213eb8129efc4e1d6c9dfc3f37c3242c6acae0e40f68c0aca10417672f17716e0cf30563194e9c895405e90d130b8b2866ea265380bb05f860f307515ec7013898724614424d4ec2b300b78f7a3933d9989c3fdcadcc3a587c47f995b26a33e5189093d5c1bdf5757b89ac9b0dd6897de2f0698b6b4b8420344f8385d4cc0aa2b8cf57508a9b77a5296284cd7c076191ae395f28dd7e46f4d056cc5b5908261c5f6b263e3219b866109d5f2ceb2249b6f867dfd9adc45d528ecfdc3235bcbc6eb08a9ce548744449aabb27e4aec0c6b661aa3aba2e75778d53b74b2473f669bf05ff726b662454b254009bb098cbad6de82ec39c8bf882bc06591e82fb180f353524d658d8e151d7eb7a4358ef0fd015cd7c4e1790ac42ea842a446c702e08c218909fa454ad262733fcd0f105eabd6c47f905a2fc7fdd196b3eb9963c75eb0ff309283840f5d9814f9cb16cb2f42a99da8bae08d4c5c30c6ea49e2c8c6f1e73e87242b7443f02c2b6c7db2a43b0e0f4fca7707f630e9ee49d07a5bc42b66467b29958962fc9ddf456c989cb0b0aad2012a54d81ed5f1d447e84eb50fd4fbb7fecce6f0c44fff9d0afeef4bce84619f114a16dc10906b1a5b7beab8a94d58fce77fc2659e64ddca4110ec8e81a756eb706e72c1357b40fe6be6a3a8b531b2c1bdae92fe63ac6082359da7bc8bb91fbf69395b3143004534a7a0a222743f7b7aa26385b7aad0bafba0f1177e0d20406fa8f29f0db0d80ec5831a07707cb42dfa49b323bd6717016f3a2d42f41b936adc11fecd10d86bd0d3e48459d16c3d91406eb39ed2be3916c02bfc1ed31ef60a5fafd31c73e13347411f62b95fd27b69e944415f472c00e328641aab6d9dff2e35f77e08d58e7fc34670d50efaec080980d9aa35e1f959b576275536eeaadb7a05938ac1fd08449f9347d1eb5ffaad3f86230c16c6e1a6af0fe8e9c2c6c4e1f4521512732bc4808f3bc676eeb8ceda4104ae2035520a3d646b140792ac90b84c255d22e41c88a3cec45bd5826826e6a16b4500ed5cab06eb8662d202971972ea66b891fe690cc2ae637e4ffc96f3e9885980cdb3443c681ee4d3eb351e4ec52a0f250b416802158533ae8fc1967225ccdb74ff8b77a7935d47a653d06725b372a92d6dbb1918d2ef51bb2166bb5b94c48d1d63ea53377193c9f8639a278dcdc99c9058d447f4ba424ae66a6748c1dcca62b896239209a931085b7de53c9433207af714a5180bd906980deaa84845506e53b6f4a564fbd308dd7627558b26da7dccc0534b18ba41c445568bb91285b69c65d14b4b6d5bd68674691933cf87638b51b95a56e095273eb0e52303e903dd6f1cd685c4a747a05a2afd7fe3da7fa7969714e8f8a4db92a205b6d978f89a7d20d1982a9f25da2cd18b52698d3f268dd7fb0ce2498ff11fb421337f407447d6235c8779f10c09fd77af3388956db319578e967de30b173ee5b2d5419421cd8a6e6fcd44ebd52f8268ca382fc4b01cc43090423b50b40f1952fc883d4d27e7261cd190c807eb72766c27c86a6db8383880a858ec4ba96172de67dc2f23547a39a74cdf3f5b94fa0e93ade270450635b5f69b1514ccd1e69fc58f5dfed37315e722f47ab152a2c4ced7fd3c058571a378c0af0a82650978e4e03bdcc2692b3ae013267c67242285f004889a0f6551cdc9b4a1c7864e844267b13840c748eb31a11f44d7bed046806468aaa212d17ada6f232a1fc4d88f6268d5dc84a88ae0f909b2ee603511018316fc4e353e49b319c34d8c34c2ec907649b9252c2a59d579063250a6515d4267f06e700873386c83e277f78f3188e28feae851a50f5fe43fa46d044c6619544abe73872ba351686792da3001f7afba09a01dd0977983da8cd98e01f6515ec6604627a209b29295ae43627b0e43c14301a2aa25a0c9a07110cde151ab4a0522e6c4ec126e257ec3396d8ea63a3216e3013062d37f023b326651ee55cc6be30631a2665af298967f8eb9bcaec3924817e65531417285ffde62cafbf74aec0e0c38a194868e8cf5012e528d0d788848013a1dab52785a0f3d469d2714fe2c923b5aca23f4124b79d2c478e1679b7263ea2aa4d37b02f064754f98d8290eee63b2f034d74b43856c50bc55b7a00a95e3154d3018e65d4e0d428d2afabdf03391120b48d4fbd5d7ee8871bda6699b0af95d0e3b6e9696237e9fd396fe8d967dac4cbf7c5a1dcc116dbe05f13e5aa5b7a1546fe3f03d089f62ca8217a8dd4dcce80a0caf5fb34b7f213a84408b4e601b2a95da47607981ac5c2fd6348b382e0d8a51dd8fb2c2960d090af0a7a0f8e4f3ee579ae2c4a3a162b178491ec06c7c777110dbc59494fda96a4e2b4b10cf80a283c96973de47f9686a8eda1cebea43d0b653bb1c30076695eb5f3d69aa89fb8ca8b61d03ad53e33029d3c8d581dd7f87cc4e504831cb4d732833261cc1a743e1dfba1f33db967ecd5ce444362cbc0616eb90e19125c02b46fe0cb5b9b170fe06359416fb816e00e1edf63e0336f2f396e3039e505cc2f7c82c807489134cbe094f1b560881bfca7854224973d3716ca125c4c93cfda98b21e5b214eb058aace06456689f9b511188d86b49ff28213d3a35ce739d3dd7a994345f1cb502593621d0a41ae64596f981d3d9852202a707e95fd9d041de755e735343a1230ea4ab773d889b655f227b8f8ff8b124c68aed847cdbb4adec41df0f471103c2ad6c55265094bade8e021900a697491ef638184be5c3e30709d0ecc430705328ebbba9655ffbf7a034ef3a9032750d8a611a25ee640e2837a851d1f5c32c043aea4f88fa462294f4b3b7f54965ddd979d528b76429764d6ac5dcbc477d5775ce65e0eabd6a83c0e7ad00bc23311f6bb25edec9cf94807d3787289e5bda600326a3f6ca2a9f8a971268bd3994f96fd13dc29f7b6dd236c776b25c007bfe056d7a1b497599c3184306a4e18b5de863a78b75b73bdcdef2b75e8e00041c17b958d20e4b4039e00074efe9ae8a339dc8f74a5629962aac6bb3310115752c37605f925a7839b1ff77123d8079f5a7150f8bff466da9296819e15a4976e2529544961a2acd7e107c7a68e0af22b631fbe2190897319a405c993a04090950301a7114882fa62b9431af93498a87d032412f92e152ca69ce69038469f835b196f7f33b7ada0ef2ac4a24d39c5118adb68c842ad407136da2f865de7e083e872bf8f2c23298a92584964719acd2c4085ce104da1e0683842a6d27b7a072a84a209df73d38a66c80e95038da7ef0027fce114e1891de7afa99ee8c99289fd27b787caae4c4a38ee6a9179b1da32ba5ad3edd2f0f87045213c87dce5321e376e09a357dc70c8e6d669be284ecb9f664dbfe5f4d6cbd8822cfe9a6e7e0686493dc1daae67ca7701952e9a98416837d6e203b0c23f39a6335555f2ccb171215352f047f241aef823646a8b6fc4937ae4ff8cab080ad2e71de85e77c50f312691df5d1f5eec7bde6d0d04ed0fcd129ee05b01addea60765ee3b420b62505bec5172039f6aa84e796460286d14459d310e3e64c1e9d1f900a6a081577d394629ebc3e55477356a78c8862fde5f7959379380c8a073e29d3c2da4585754caa4a205de234e890ab590cc9501e92c52b9bba8de688f63f1bdaa5bc428faa64310b02f57858c47b30d2a6029dbb8348eb6358a85d00810203de95ca00d6b064321c1dafbbbca8f903cdbaddf1a2d5a65e2e5a5d08c8d4fbcec69d1c6b9c2d0da876be44816e7c82ce2284ae8c6af3e27bb867f2fd474546f324b98e00d50e41261c54bf4e6cc63c40945dca764b7e5ca0e4205118e34ca9ce0ff8540619fb85a5743bf027b0e1b9a2a2284ada0691b836a088cbe2530bbdae95894682d7f68f74d5d7acf625eb7d0de3eacb8b08561c7bf04a5f14e1e1330ea1ae6e19536a9f9dae3d02e6b0e1b8c122678010f00c81c9597b3d4aa6e733721a978869cdabe692593a8d21ef6aaac1befe883b1210a15a6c044d3fd35ae5b441b8cd63c7f6b360aca94d9bfeaa98da09b0001b449ee2e353adabba60028c320a92e80eaccb4a65580a2720572995ba622a1c543d52618e47ff88fc1776061e249517595877460ce3ee6788091bffb11790e4ee75ddb82299db26afe45fc06b4802bbb230a90f2860d943594ed52c55a7cce0a8c4da1fd504908bde69dd61dcd4859b8c710f6a1c6e95de947a1c3433090058995408d588af09d570c0151862f7bb61cbd7d6161ba4b9617486d47e8f3b47c27a536b1a65fe8206a12cdc19d369e60fc1e748c6ddde493641f32fb5843508ea3c2c8a05d510b01abec09431c2aafac7d04a45806521411ed56c6c91648930c4d007a53f90d7cf6a42132901f316412f43425e1315a158d545982aa08036ce52171b1905065edce104039f2be90fa4b2f009f4e3e0897b38ef022b1089a5f7f151f1e9cdf70ac7f6ed33101b32f345784906b37dc0ef6262d3b0ff34693e30ebbb684af96d325b098c1feab53cdb48e09fe18caf0029a3cb46e10e42ede8797ecf7d20ef73107cbf01c1b6566aa6f1aa32a1001a19de1a89427c2c96fe83a245418fe3e766a2af0bfe1036a6cd77595e2c2c0b77f14a3e53a05ea464db1c4e0a739d6e4ae8b3e7477ebf228b048d84f59671a075103cd8ed2ce8f004e47810c3d5e5f465329ce9aa21b2ee1db2a143a6e047a432cbda3c6bc6d23328e20936ac20c38904c3146f9c30daeccdc6ef4c5365995e12f69d64783d2409ff2eb9d37f30ae571996e3e24f7d1bfd9d0919e055c04859d12b693e53f9e0d59d68fe5de01beb36f528be4d29cd86055ba34f3fec9d2a7924523c7eb9d8330bc099a953f0aded27b0d07530a0ce7fc9a31bef78bcc592d4f14a1491c196343f086a087085d2e34c31840a889d8d5be828361bcc00154074fbbdc10f6956cfd141492674952c0c8befffc90b9d5f7a2a5a6637ffd2d9d003e5416bbecd26f1b6a231b297865159fade459239912481d2fe16a970f16d5410a186c0f6319684bbb795b848ef3614a8dddcfb3c9d4d40f3b1679d9ea959962be64c044fcb0a721dfaf1060389895081520aa043b84c8319c9248461c2c083d0600951984109d485b21e546bbdbaadef042a32315caf481b8cfee5f555c2a363feebda1ec019f08b043fa0ad1ba08636525087d4a0e43abdfd6952d53eadc931f404919084c855bb16aa2e60c273f1758709ddcb864d35df054985213041c8512b554c68196b64c16a25a25b5a231ba02d2881c8580f60cfb878c11cf534fa4ffed417215ba913433916b0bc4778e2e3e6b3eb09418d0a88e2cd335088a91c47e5fbfda568217b03873ce118431c8886478c5114e1fda02e71f155752886bcaa08951b5a7260423b51b835a17b657638c3b8b112b391520fa1d6b8f55a16a629718918a415fe4626b0002066ce10072e131f20e8400404550d80530beb7866264910f8e44156f0256ed021ca07dd92d1c562710165202b53ade188476013fb4dd6dd4f6d5bc0637fc01ab7390de28326f3817dbfe87dfec19b3cec0b04a5eaea8c387aafe8ccdc7921b091378dea815b3e2578eff65d7c8e86b5f3e5b1dca852d41a10c5d28d66b1e46016de7f01ab52f01d634a68b8532b7e0bd73a0aff6268c121afa5f7a244234511f8f0281064b86f64450330d7bae73fc809f1e4ee08d01c8862fdf809c797aa5aeb8c4d6831b100b0e246e6232b1f31c2277a544b82e9a29030173fd184a4acfd1d5017c4bedbff5dd90a9c05664f77beafc4be5e844c99babc55b4955317628e00982b86d266528c7802dff23c5e162d78a5bcfe6b8e62e6c9d8ceef4583cf25c1118891398d160b1a71839e3e6ed3f434023444d617dd87deb1a2c304b2a157b824a1a176a0db5b1a849d489cf216ab22502ec7191dccd6a123181a8149765947bdc256dc646b8bb74cff67cbd2961e633386e3da521e939a904c1ee789765334f9161de7180d1fd739fe475f830f142061f8642d2c887c988d4ee5de211571ef9650d4d213a85388141d43871bcc206b1062ac799040c769aaf70caedfcb779f86f3e7563791ff6198a03864762cc4959692b0381b8713059b4b90b0897ee37b61fd3babbb10fdc7bdca126c42929a79c227134517482cfb2c9471a76faa5e64322bb57d740a448c63959d3cb992638b3dae647c3853efae025c8454e3f5927f795e14e166f137e27076c81f81f79c44014acad460a2d6224d09e2ef849967634b8780fdce64b326e32d716167066a3c0c4d36ff2fad99938ad059c335cd6ca986ade00074582800861489de3d53e7ca6a63df2746700513741a4324d798089f980fbf26e63e8a04c17dcec47bc1bd82a1039417d5eb912fece3139a1513bc2438116840444c438caf4a4d2ca025cb5a25c409774f221373c8b88aee670a73cca4476fcce108488ab1291995d96726dd4dc549dadc44b67360697cb03de9276a5982764b6e179be5824d2034a902214ec67d2097eb7f59016069394271a2ce412033f74f96da49079d789290fc226f8b70e3323ee5fa3e6ee42a4b50ed841bc8b35127ed546f74dc67adcf89b408ea32b54ea046545a1c20a9160b1551af8f26766e3b335fc974ffa70e9bfdd207603d8013f3034833629a178b94e83e1683ccc3aeca2b0ba98dfdfc956313b33f4861dd01981251fc0b0322eec9f37b0570e5a283e34ad284c5c9403ba05604d5e17c7592d6d9829955d43ef3272086472979b1b425896fa195ede5a0730802d504f021dfa058194d0e27bac4c826364bf2b4a263c3b952524ae50f1c0e882013d324829e9b3d2de7c427c77dcb5a2e0b5cb3eea226636dbab1acbad2e9aa3f1d47b91006ef9308d8b0329d479af256d847d480f44c81ad7fc8a7998227bc16937426c0d6dd8c437205580466e8a6c0993dd2c9300880f65d1243037f5fcee52c63bb4d43a5008c02c1ae4e7f9ddf433c7343ba1308de455c49abfe718afa9566873e3c70f85b60474da202bd4f08dddacda108520c487989d8f8c24ca2d072e8c0b8d9b82a3872814a9711518fce46b88cddaeec3d54289214d4e81f8a229e6e2661c817c58a055275b4001112e0d615aa1a5ce80a09bd0d2ebdff3d78526d3e9c6aa45c9c2ea86631c6caa121fdfca2443ce969aaf31eaed665d71ae50689b9a20905ad92a527bfeddb8219cb3e6bf17a7c20313255be81b6f488d21b9ccf493dbe9bd7a9b3831a5122ca0a12072d2c25c49cdebb5d8cba137e424b83dd79428b3b193e1e9c7bf2563052fd2cb16e1793339cd52647871690858786fd77fc71cf5c4156b234cec7a998333935027f2c623a08f7780d40d9f24835b1e8859b3e7ea4e90c5115698317c1ba0da4392dea11efac8b5a944807d62a1aeae6784e5f574adee47233015c8dcfe9c71a77dd6b01058472981f34d85c33961854b4de133c4446681e843655255c7853e18d2613fb22bc8f08208e4d978f0c834718464ce6b792fcd1632bb7e2a2c8becdce668d2bf57078fe03a0213c8d05bbf04076ef790e64be9fd2e99dab801fbb82e7cff0bb38f98c9de9ede162589e2a766af2fd7814e7f966281c21dbce8225040722f3e88918f459af29bb17058ac6bc752833c7ec979f31949e7bde2ff730e6c184875848f2a3621c849aab6f99ce3dffb8a1cc5b7a9fc73e6625c0198289d26b63d520531c07dd4ef6743ba48812538e54e02c61c975f0f92afc4a12fd2050912d392f42e0a663c910ff37c6b9ba1aacc65fdacf40f30a62fb8df0a70c00140bcd05bce400d4efb8093e85b9165a4674f89a8a41a8912b8c88d69aec701ccdc18a5154bdc32e496e2dcb59b0a0175b81cc7d32d39eb19d62c64cd1d36973f65f4fcd44490abe47f5842c37a29893f046ca813197fc4912017d596dc4cd82d4e63d049d31919361e0c3964519ae4698bcd7ddff02578ba2ef56176a7f2b5d80d5a737353e1e8bd3abe658b35234365e45e22bdd72a0b4c38b1213791fe6c0e38b17bb02a3950f83c487e92c97873e7210c34e0da5fdfb9e9cbe85d36eb84fdcbfaf9e0bb0361daa693ebc184d14bec4620548dffeb64ef3a8f28b9a30f70dd31327ee5846f2b19974baa7cc98406ec87108a1132746be3156a2a41cebfe4be5229d0b76ca0e1b1e2c8adb6f27348d6cb3383c0b8761dc4d672b999a8173534808acd522401e4099a483da76fbde0e5a5fe1131e0773ba980ea52a1fe123abdf740d0e41170c62fdee5bdbcfb79c397e907e37ecf3f8b77b1422656622a78a91883f994efc6ae7eb90e453a544bee07587d04044db6a3c1c9368bb710a01633d44fa099a8ade8f0e06c3b702815fabae79c47e1500fba41633f4174cb0c6d6df497498c953d76e87879511da855f3cd7f80df037b38e4eef893a5b28717f1e974538831b3aacca123923db734fb93717d1a7b5f7cd778190648b04c146381c298682ce73c434286e0d8d73d1409679dd313668086e28e996d9e540f02c7990b9904481647c513dd83b9519aa2d3a063400ac4e86c0a5685f2fe5ded5e9612e3e2c5806b93f300f2935e8d05b6243758f753292f66a7cba86a17208769c1b5e2d680b89378364cebfdb817e8f1e9b93558d047913d8018524b2265c576be9076e0c26c34468d22983d929842853a5ea82b2f43c87ba9565bd5b2f4a11e68c43de6c46edf015d413f6f759feea5a1e19e0d49d5c3263dd9f186f0b572ddb6ce87794c963d271b11ef542447ca324a25870dbfe7310ff91319e19a5ef4bded0b63921ba96e39bd7e2ffcee44dbb50f22dffae84d104ae5667b4c2625888504ddd88945f9ba9e0b0da00f1ecf2e43fdc87db7c2236cf5b782eff78f3908e5e990c98c70f4630d7fecae5ae8b0ada61194aa8743864c859f48e6a7c3c9cc805aff95f48aa208795221552fc87c630201965ee30b3965c15896c54c543326a1a2c689ca79e4c87a0eb3202ad2507192e3a9eb1b33ee04d02640790c475eeef95ee4b603c957992a7f261afb1784d578e88d2c27e3f2ddc1d3dbc72374a151bee3421924922238632f1ffe6601a67522efa87694c2c6b5c53f8ad6a4d7d34244872b12cd77850405c25de830b3466f81b3a3835a452acf0516d0d41ffd9437474dfeba9ec71763de1bd4f60c3cd41c6ddc1cd3eaf4ebc4d85285d3500ec2029e482fa4a27fa91209ce921f1c4b39354b60e18cbfbd8727f00130286a99e4f8f54a29785fd7d63f9f7358c973e78849f82e62d2f700f9b4a3f889b0b0ab08dff3b3f6740fec88f08fbee1e5a6bfbb586f9fd93cfb2a86efeef28898217230281d6b968364034164a0b042887c03e5b590d74dd806a9214edff72631f5b9bae0cb0cfc16737c378de8dbbeb31e20e5d038a37d033848d362fd68d7e94c09f0d38419d32e8f303889a382457faf3f95543426393d86163b1f4f1060ffa003157cbe54a580db7421eff54703bdaf93d53635250f3883bcc6c3ed9e80f0330eac9079a6262ded8a8032c1b64fc4e755fb2d014ac240aa8730a182075c81f236f7248604f5163513ef5a0ba51816ddd60812baf7d10150e2d9be18e5a533b91f47d49a2ee108251de4f5246bb7188982a3a5277427d842048767e1a16729412daf3030cae4ecaf5904e08b7ca5e6b41d609a69fd0a314b5ac1b68778308a5edf201dc238ce8bed77e87c2f7f0d04adb9085427736b6d9654c57b233db2bda83b06346455482a25ce0e798ef4f2594b0951f3334a32b3197d7e4c13005abb75c09c6c09b2fbb8139b934b5d7beb5317abc7828e24c163def402eb12d755f372c543e405402093690d09310193f6ce23642ea0649222fdd8f3ac4a7c88b4c0b31e9d592cbc3d2a9d17dce298bf54b39a0a51039a320098ad4b5055e42e61aa24b9415e81f257d98b9ecd9a87a8ccbf16816e03acc014bff62ce3ee3ca8be64859632c06b6f15a9aa55200d89fc63d7568ad1e51cada2aba850ae95baf674a00cd5598fcf94893542592c7b5643e2a845955b8d5bd0a94af2e94f6966e7ead1bdca34a3458f0cdc1df3ca87c920478b08a08698d93f5ad7fd627c977af5cc6006e6463384c9875327677912af9e29a78cc4c0d5d7c9615a0744f0d6a6ea4359f502e66ff035baaf150c00e8a4622b2bbc666e6123e80264d629e588bdaff728d0fda46b7047ce0b36afe1cf5fa75dd38115d7eaad36bc6236ce55656a0f256a8dd0c1ce66e730c7a53070df5471b9128a91948372b6dfe5f7e49716b5dc46693491e5a72baaec33066a8c9599741ef9a222c5106486ccec45d04424d5121765a307fc8a4256355aa0edd18af6dc11391373909695f76c07da57d81e51a3164149c671e0c558345a4e3e980d078937f94008ee445a29dd513a1a082ee28774f4a42fc20d0672b016cf9fb27e4113b05bb8a508adebf113c34150619b131517f4400097f3531e42370f742047ec433684acfb8c5005abbb3d28b9091efedf30c450ff07bab8c3348151394b89cbe77812bf7dbac6ceaf31abef4c90279994996d3fb1bb563944f96af2244a26881e509179e57c96a0882e5405d58f069bbaa716948739caf3b59d67a36a24a49763bca2f8ea1a243d5a7bffc6579c3dd7eee1d7dc3dc8563e2ee700c78e20b70dadcd5504f2488233be1b108ec1b6940ecb52a28a0f6d77467d6d8d14bad62889936be581376af3900730e8f54e0610bae6e367c0f8773d2a200d7c3e0260fca680614d94c73a0b313978a8785efef22e4cfbbdc2bddc40ae4b5d10684cc2773395d46aac17cb0c4828f61d4c7853aa8c96327003c1504700495a8799ba30fd0b4db845842a1c60eb74edc38df2445c37a5761b23e958075e85b7127188f314459057172e0ab3935136f82a68f6daa2868977eed7951f3e7d274044390f7ac16521139c7aa9fa7c8391eab45fe4f0126012e068dfb6a7adda0ae93caa4c8d91cd30dd3cae24885f20ec81fb8461e96067d5a412363c04a9324efe4aea9920c09098d786539d2a02cd257cb697afc6eba6d7aeee73c43dbe57e17b7b9e47f0716562b484da09f5f48becd00e197ec78a40d2878d900eea5e38479edcccaefd94907748f0efe8a7bae89c7a708d647f0097a3159e7aff91efd44c20be104d0f1029890c02342cee9b207d2e028f6b2f179724dfa6ce510d17dbd06154470903152e15b1ad8ea825798a32b60ea8826a5b1ae1320aa4591f0973b3c672317ecedcb2d1f701577a0b3dfb04e6cd70b3a1a5c95ee7a646ed9a1c59a01f37aaab508c238863967ac4c81c588b0270378c2eabc409003b7386d3a597a8c5ef5ef1a932c2462e91773f4ae8733fc325e33ab7b0dc9d78a4d2e6ae15c3a42cc044d99f84ad5c0ec61eda2802d691092b35bbb1cd6a0db330625dd7369850d67eb8679001e21014740780d9a7808f95722ad49e12bf08836750f4822e55eb476af562549e3f858ce8f79cd8648ef33be132da4261f5198fb002f72cb1272a4c5eee60937805a927cf2fcec2c8f15de21373c460b974844cc3b92d6cb6b58a80669f4d23f4b4207144f49e08ab1164b61178b886339e1308b1072999576187080d7bf3b04cb52dfc9d6cedf72479b2342b76961f2bc597355f1a19f2c051c4d21310f1aff50305412ef92c39578ab2723e8e7ca519c6c66ac35af88ec0e9aefa06972a5af5adcca40d200817aa277cf0b6b069016ad8d0794d0a6aacc2422fdddbd604c575989ffccbf178f4765a70c6ee49653b8005ebc0de0e494d470c67dc53dd63e9fe19657c0f5e25ef8d8505776f2b2a8dc19d0a74eb03029d54b090d3e696a548599cc0b206a56b687d9032ad548d763abd6545f0d721259426d71ee6da2258d499c2c8d6c55370ae3cc6d427ae351b8b41b8c10f5c8f69bc38be396b8658e5ad916b51f213fec65d2621cf46d5a404d2c310c4f7c87d94441366f9aff6516e6134abebc4352db3ebda5d2af3e5c09208793eb532ad4cc1f2819b00a6197073b7b58d282098f5753da489cb020bd8307bde27817176ca6522fa23b60dc601399b7048589078225143189b2bf9d56481babe1cacce989c8af53cbb813aefa7ea127f43968fab0bc1810c2856a1f689311bd33053bb47f978f6116b5e9ed4789bf18a494133eb435bcf63fa94ce9da1325a0f2c639a4e723139ce87318d880db9e1f93b7356f7adfc62605f56794ea7b026cd2ded1f17e88c9d432d0b52dc334ef2d329376961a21b969bfd113d516312009cd5fc5998a1686abd2453e0fdf9f5534c8a3caff83c27b82fbc2803098ba9cd0c5750a224023a6e913d9939085ab43f7a4615b6efc80b8bf63331fe8e9f47bc072072afa6b75203c7342941d86d9caf62fac06d65d9c66d6c81d3ca11a7c0b495e9b148f4fb85541508fe51bbe09a87f95e8f5e4dea91890eb8ba6d756963c302c3b90ce6b03a9a5bd4bb681469e5b4ed2b089e803b3ff9b1218cfd9de337f795d81846a91567ec50e2fe04e6f022c105249d8c4f1d814562b823d52267edc658fb3d4a1ef95f6cbb3928770f76093b8f481408e978d4905bcd5a3b418eec7a29ad291f3c4e273ca0ee87022e85f7c620511a87bf54032ed0470f79a809ccf51196963f259058de145e69f7ce98e023e4c951197ab6277491c72211fad86717f3176359ca3f25c25ee1c884a53164f49cd1e33e84a848e749931da6561f16354328b92b8007c934c245e424be651bff8875ecc7a43e2693a60d27ca5c0d925eaf7141a6a51999ea16b63f5ef60515238923233b09314d905fc603026fb7a123f9beb3e28f224dd1addfc2031939d852a63801d5302f1328e6f178ccbb9f2a6e8977508361038a701c7d9d003b8c185b5a290e311a44c1942a0560542c6d634de61a850f8732edcdf39178f67f113f0bfda53ba7a94128af011755fcc47a54306ab560589014c80ce1c38a6bdd4a3c80af0ce34877515bc9ae0b1008b336aab21b98d93910bafa44a604a92013a6b4935eb23a0584b65660e2ba781842e213766e6770253b1927e88035a5e86af5506845542f16750f18dc9160dd95d39ee24851b6d8674990b9e7e43a1294311441a822e16de18838797b487274aa1c90958b70698816bc5f0fc68a8679815a682181299084f6b30e20ab82d48b3c1d97b07bba3804fe4f30a81102e373d16ee1a31f75eeba122b89b13620b2b5e2ea46b158fc2a11639e8cc2ac70c8819397c7ee870b585b341ae7896d3106a82cdf8185cae1001a7daafeac6a3d037bc014b102324849afd4f81f3521f94a39e9dc477b31787204a99cc0d800c564f909a95b6a708d193b4cc3a9731cf48a57af104a1210f78e4138afe3e4caca5660dbcecf891254662de8faddfd055838b02b6713838906cea70e865c0d30146b461cd7099fa2a43a51b763b1a58b70f23cf9c62c440b1b48421073aa4b61cd8a4cc590a3d77013693846d9c3036776a3246e8e15f59b4fe971e8e3519fd2f65a3bd668a8f9b1ae4301923faf9a56ef05118723c9c723325441abcb24a210cee69df69a1e8ed81e75fa08a8244f49f0f7a30a59bedeae50ee28ff4756f29e7ef9ca2be1ce893c7e1c549ec2c94b81c5b688f9f40862f51b51e006561e2e42a83a82a8358a80110387fcb42971a102ea69110cd00cbef91ab64bc43e4dff062c77ace28dd649cfa0e92b4e7da3c9a587ba25d6e2422a4ac72ff00479899fca3a16f02c8f291a1635b784c9d74036ceecf5bd4ed3a5099403ecb8a420e3382a42d3263d8a6077b3a8319b85fd9d4b9846a93a354702044a6c0f8cf82ba47e5591a712d5c31fd94d0cc978f19f72b632b1b19a44ff71690c6298c0a178eb87c09ac1cc7a7ec849e83b22b6d7f4891d080540898ea0836d210967315d130cc3183b2c7a61e689e9d75aad63a589686551197cb356c2ebe1c99b37ea49436e8c7464fb53d70e2688d6510a5e7bd57bd629ee0c1ec91e12fb476b020a1ea1b41d0a7d18c3a608c59aa51dd45aab5fb0f7c7e91b956add6dafa8d4b98724101274975b6e6b5eadcc2bfff2058adca4ebabb0655127a9592906c66383805c3aac2cba13c0476dae2ebb2b8a697e4d53c88ab8ceab2c9c90b51ff008e429bab701a7edb1487089a3f3d0f80df5918558ea7c8cb663d70838926736823120f2b6349539ad04fac18fae12423ab323016fe4a2cfe8c143a627100e679e79aaeb5a0c70d90c76a133a9d7564c7580fc6be24d53176cfa537f049ff91ae8a75cd128c41cbd3a5904f1595134641c09da81ba6c69205d0b8826110eccdc9acaa175eca7a4265e0d8452b0cf5417c680dd55f4a5d4ecdfd15e0ad5b8b08741a2845e62f1000683d84705933be88a4c3eccdf9aa5edd55602843897eceef9f02787058250fb43f6cf303f34050a2d0a3fe3ebfc04d3756d9238b2f761235903f5444d04a7a687481af1bfd56d16971ed3c11df94eb8069ae092fcd1f07758257fbe8c8f537a6d98e34d8f23281f0c3bec741066d94dfc01382e5938f40d45d487b9653d42b925c62bfae7b94ae39bde56371280f311a02981b755d3c0b3d5b77600cbab8b3d60b5262d704de4fc2925bcbda4bb0ae9411abd6f3a3860abc4a5985e041f36750e822a736190d99356f556d45e66b983a93e2ff2fa92329b450025005d1c8d68956575180b6787e7c73e8305d33b68e5cdf1643330870d842ab8e2871d7b4549f8d5c2c782cd7170ad35902c439253b09cd7e5b2054a111d76b4d015a8d8659108c5339a896700e8fb73ae521a9249423780a974c22c414ed7eb7e33f97f11ca1521388ccaaae4bbd4cd59866536423b7b91a14cf88bee1c7021854ca486933f4b9b54336533d0ebdf12aae6330ee209646fb03e8451aeee9bd81474828fa5ecc2c2e7a0c763c000e74601ed645bdaeb26ff3634ce2bef8f2f00dd249121be32a6084b5af46d2a860633bd04fc354efbf848afed4fa3953273f87c415143025558185842efa12319b817dc076eec7ce1aa7e502705e933e49e8c321fa67ff9217a7f4acfc1c17b1e434f81dff1bb55fc4af6e761622a52f7e7e5b1f83900fad18f195e6119870115ca986a98998bbff969e72bb830916ab66a1adcd83b8de6ef503b9ffb4e6881531130e54855d71869f7c5cdb456f2ecd048b22ba7c8fa76f544b25433658ca18f5f4ed1ce894a617bd2606853cf5e7a67804b343eb3c181ba71107d029ac62054da345e74b8d3b5377d627fdf8de7693728523a919cfe2b445a4ad52f66e016caae6ed460736d287a7b02c6055bcd484acccfc37ce7e5fbd2e22edb029aa27adba228fda097d0fbcf49e6448e5a56065ae2019046ae8f849a26487b03bf73215c1a9c796905dc2302371649fd257f90bb90f3e37af91be57d47d972609b840766fc6cbfd32a02daf65192a84d35ecf7e185422200b43c6260cd0bebbb66c90670fbca898c68d2a125490aa0ece1b54c964ecddcd8cd5a8414e5c32824998e3cdba298fbd0d7018705fcdc0ca40f492e82dc5e388b9187205aa58ed7aa703dc021bfe49fb64e7e6b926f49c21d5d59c2b66c5d907deed8cd0813a3496bf2d064b23beff826525b0084796147babd28c507a645e68c4cd155bb72161817690d1f8608c800004245fedc8d2e4d3a4d64e239f2111d0e2711feccf7502f90334601023cd34ae3adf583598e19015011614205c26e5d0ac61f31f1f961ad23cfbbb94431ee2654b00ac0c301b53efb437c09d1805e5214b824251911206241490c5c62421abdc26aed95f6a4fd09afa2d8b5b7a8fb181d8d6373c171439c5e12a64a010c31eef4fced2888fe9228a133f56856a1d345028260821854400fd2b97fd62174dae58da64d3e1ef6c6de2644e21015ae5d134f58ec30fad1e21c096f82c2d05380198190c7bb883def9f8cd126a2b9c906156004676bdfc398143a718ffa7664781e454fd31628a5f548d183ed8e0234bb900785b4e10d763fdafa3000edcebbe5df1d78f91ebf0bd5c38a779b347394aac030ed31c6854158001c13cef24f782e25e72bff3a33c8a6a1eb7ddf8dc7b87dbf1a61875c13b28c216bd6cb560405117fad39f5c0ebc88baa07b6abf12e0d2e54436e95a6cbc407e201343a4111e7c3c97dff3b8c25e061120d6ed39c7da4635b644cfd4037bc5b608faa4a281035dc390031f4aea6ae9baca8b66f238da5117ad1dc3cd224717e26280e7b7711be869907ca70ec9cf29279c28643c1210459eb82e3b99c777ffcd54f81442e0e39db5744284aaa982b7c326a5889f30a24a637fb0b8ad6ca4dd8efa97808c72e32bea1bf21b06ad2fb9967fa629636291eba1484de6569a337a6f5aa6f0973e7b7b8d65994e99b8224537ce77dfd8d21b98fbb7641db5426e2126629ef590efd407bff5035a7008b3a29755ee4ed84e778150681d8f3d85ae69c95cebd1291a62b3c416d377b89b95fd2fd951c86185d85b0a2d7556747b9215cc2427ee4eaa8b0e3c7a038200f305a7a11778e5594304fcc31e369db740a95c47ca1d5b864bbb6f35389285283da2b2befebc6a3fc8a49dbe1d6dd436b779fde665aea482ee492b38c75cc6fdf08cda9a2a82e5c5039fd1581d790078d1c6e71c2b5076458265c57813c58a5b1ba9096cb0d305bab05004b68de3eadfb42adc883f4c57e9b4194847315da80c80b9f8ab43bbdac1c29810113b34cb62edf7b78de7e6758d07b35aaa0a8429619b9cbeb153f7a00ebd71ddb174df20934b8a3fda81f71273086fd634568b42769f6da843fbf87c4ae2f60bfb1c492898778999f644efeaaa4f7ac2f0cf3af2a1b40a0b802d19127192925009ef76a00a486bc876ac6e1210f1416e8bcddbca96421e1a5447b829b4be517d76873a90501eaab5b9a19f025d0fec34dc483b25b5d6ea3c29e9e2b41099e7d194d5c97b037a3ec60a4e4b79f4c13686c24f265b98c452c105633e775efe28b5a1d430e0d03564118530ad8c1594f87f35643a78e95faf564de8f89bee5cbbea883cf3d38c518e7e8ffbb1c9c6ce12c9ac0a88e1320937afaf6d74a3de655d9ff162d4204ba5244bd290300875a4d8bc5f2f271620851e19a25617ab2a1fd7ad7a8225cb3100a4d0f5d6196bc13ac2d08af1f0669f7723d5b20dfa33b0d81ce02e929fb2922bc9ae46341eb5bbba4a55b4b6e00eb4e8e6ab5b1ac9644822bb886e26969eb3ff6f2c8fb44f821ca8c0795d46ae313e577d89e496af4debeea35059b3718901feeb369e8211855754a80ac6aa679a9d04d8455578c00c6a609d9acbd9face69920058d7b046c32c81d7aaf847faed6ae7aec0820df5e64d4ac64260efa67370f87e95c772d2740ddfede7133770d725a18db25c1afe0f7a00ed4fb21c625a72f73a8783a13eb97052e37c0406522361318bc0b71ad55205c26712ae72d56e202b36f6be575f187639f0aadeee10bc4cf0deb72165a6b6d6097f1190032b54a32ba878df03b18bc7bbec4a4a8c8d500599c889390b34c4ecd3b8e4a1b24dc2d7ebdc2a4c33f2c8a3daafd1a441f36bbe157a69d8c499f935594be23fcdb29bbbc6202b297c012380dec2e0079400a601c7c46dd8a26341304499021a03273b7b768e104ed52ff151b92c494fb1e42c56b184f166b09742bb50af9d37ff47b93cf4578fca26856edaa11c3ea9479ac41f3bad3668540d9ee72710774d5cdb4facba6b62c5cc3acfb7a97b330d56b02155f67a41263997715ea7d4ab5e1fd45a65db0991545621a246fe154f1fd99cf4862f18d193740287471db5162b289821386eea2aecafc88201bb93f98516fa817066f0b55633172c132286f27b9a6a35a3921b1ce8eb027c17352959baf61c33f1f7d181a420650ca101536d8a19a4f92bc43d0e8ba0f441d1e17d7c0326424c11d457c84cfb8c5f0b2771cedb29240cb32a9d41402f7ac9bbb4c13f9700039b0817cd35e3bc8d423c6a51b8c8010a302255626ffc7c870334fe7dd46da321a15b5839ce80139514666a2b3d4bf0a01299c4ac2956441187a953ccbcd148616293843075c7ba6dedae2619b696bb919c96b1ab838515a585277f3b6c04c94dba6124f18eba58651b640620af4c5f345ad1da2cb7d834157a9e34df30357fd1c416c967c5452e4ddbf4b8c503a0200d3c23b85c1f98959893109d377557757dd5a2709f81132d79c7e85e10a5534b5516a51f3a078dbb73663fcd6d6b46096075a88b375bb8d340b338c4a6c10e9b73f5fb2c29a8be0b11f2c8fd29173a044d125ebced6bf8e175dd5e63b1c8133ddcf44d5d0eaf88238194b4a65dc85397832462af2a10b57254a9cd1ba26b02a9c9d42f5f0fed32f79db05793e432799bb518edc7ee811c9175991d94a5cecce8e7d3ae90d98fdcb51cafcd87119a17be4219754200d14f931ca3a14d8b3ad61bc847817339971a4096d79f25d7d999c81ab8b6b57e58e42af32f9b846b039de701e010c75c742b05f53b8a70e41c4de0401762f4923d01502e4412c71625d65dc80c85fc90818cf81b4e0b146c0e7b0c5f14ea11bfc4a2e291398219d4e36e9ca86513add2f8bd9dec67679159522959676847924aa9dbc1d019a8df26e8aaa778132ba22de100d61bb5f0dbe85b368b14cfac144be8112e3091a14af3ea9a00c07025d0fda8a74d06647ee79cd613ab026fad13db25c7a98b374785595b25b77d5d98084858d65feeadd34c62a6bed18e42a6011157148ba5ade4787e4ff461e2e902daa49832ae5bba974bfa3d3f37a140441e5197a037c77e2959f712aec4b61aceff2945b62af22ac3727e16f6ce2b985200c81d01fcac1171f64fb5ae751638cceda212331a4b0ad0d4c9658cc73008bc7749215e8d873a7c3b6d75bfe841e949f75500b26d1480c3ab95c65bf0b9491fe101c588cd1f1c42902ccb0e49d10d553c410116ba83f45bab9b393102116c8bd0b31a5c7fd95e091a0174cbdb8148bade58fbb2caccbc9e8f5819e201133d6fe83faf12816e1430d4e0978603c26b2efbe703a03fcc4465e185f58b2c70c172209034f39885f74f519eb81f5bcaa4ecac0b128fb14259a198bc5900ac413c3c39a1521d947b0ec35b41c43f1f479340c1fccdc9f12d7e168a2fd749fadefc8a952dcb44d8fd6fc5d8c69eae3e8a6b53f863d7a4f38ab36f1a2150caad07b2944e752679c229eb74543b41f75e8887aca70801cf9ed8ebeb10942ac4ce481238c2c06f08d8e0c80156d1a9fcac9f9b9b2522aa65623897535b127d132ec819f59027363a9942737639481013ba48474c865df4dcb89b23402f03dc855a9e5e6819bf5bda9737068aab02ec9fa363e80bc8ff28002bef323c286c9dba4d3b3dd5599fb87faf1e82a7990d5c2345a738f5be6e88309bf30eea21036db0d770261a22a72de272abc1e752cf3a44657863f459f9acab7e515327082e2dd4c1d96631a584d0f6c6841254801df54765a6cf4aa7da08e063d11bba9cc910b64393fc89b6a31dc315e533c4e1de8c4795af10dd996f98b66a5c03ee54c7089b5f1bf5727fbad4e69e473754a06f41def1ac66e9995757f8deaced6aa3fed3d2a3922c50076927e7683b166cf3e624630a9aa4a231cc834e8dd17c9c4a7a19de12107bb92afb8c98dde594e29dbfcebe1e75d4951f68ab0babd682656883abc3fbbc4ac2c98b2d7824a8078ba252dc484c5ed4d752a9cd9bb374530790f70940a5a7682a704a2511725c02331ce8298ac4125317ddfe82a25986e3f38e6506ac5ef147fdad156fa7407f9f678712d8193003f9ee17455dcc57b81e4a07f884165e79c86f36f0b73c2615b4a625c53bf2c5e8f8970a2afbbd20badbf6a36ff57f523587ca34829b064b7f43f055b8bfd8a88b2e0951af1d267bb73bb3c2783c0ad9909c00942133dd71d2bc9f1342f1fffa656e4ca320d6878044fddde1b14dfadd2120446ad0c56b1b8c493e4add6c61f024e06d5114a56b6f96bd9cf88f1f2d4289f759a533c0b1b52850ec457e6c8966cc701e9031fac896bd38c816b396e51281aec52938332b50144e64c3d36c47b11816435fadb1e7564520fca1fc3bf247b05eb7e2e8117c2ab8b5ba5f9d2cfc70e9a78166bf96dacc8fdb78361a6f2649c463915ab23f79758908ba551d0d590dd5cacfbbf0831428de9bd513416604408c49a0ef5742912f1a262f1419187605e119e6dec4d4bab0cd0576243fc2f9056c8649c0bb2976fbd13d331121502d48edbe40704c5e53ad819b05487ec777d544d1bee9c0cd3ed00e8ae1b837937607496c9d0fbbbe2eea9580c2c64602cebed2b5638e39f3846a6e971675a6bdb2ce1a4f7b28463323d2350205c09835f5127bd3e1bb6873ce784d80afbbeb5148768e2e651535f9f2538dec179dd1ce004159d5c94c2ae8abcceea9b9305647afb41bb1765d117dd2ca0a56cfc3bca61a228bbe10c5230ddc689ac388146587c85bef8db27fea5348a1ff0cc751c52737197d4c8db0baa57bebed83c303eebfe7c82a375693b2366d9d3003d3a5f304314db3fa3ac9312ab2c63d3dd0afe2030011e057f812eae1fd925b3020888bb0c35f155e820c2b6bd236e70bf07b49c2dee3b935571b1542d6ea9f97bc238de43c648b9ca3c0022c1bdd73c7d568fd2a06deb8eabdaebe31f718175f09b43ae3a65f0a63cd69688ba3c7b869be4a1e63c13e7f2ff8e6214b1fd2cb45d06c1e15a58a31bc7ba0f7c2b03b511e722ce025a98ddf3c2b13f3723fc885b4611a1d4dd1c6f640a0e3320b68451bbb9b177c95adc67db9bc07fa82a0fb2f13ed8ac92b08d4c321866a10048d1a524196593117a0de6b326fe050630a42ce9cc20d4c9d244ca2fac5b4bf6f4255bc93faa65f65a61854d133f1ea34e6e04f5eccc71b063476d158a047a28f0195c93d3fd0ad5f8358720e225757f94ec1a10d21a71743b0836e74525c89621837237ee8c6fc5c2d714d18da5e9dd5a3edbd9e9f53e0b702f00c4d363fa98d600d44e591aefa49f9859ed1ca557e0144c64428b18570438da8fac2daaed1c5adfec66bc68b869f7e31707f62d1be7a63436f971543f08f9becec4d26d4444c25ea763b9493da7d0720f2ec67ffcd03241a25ccebae7fe5e25b7fa4d59034867d26bd8c749637f83a80264ee120c11f237a255c13a0579600d80e18d8f0b9db28ba7e95491242fcecd9d21854256016890af67f4a6640fd39daa30c26ffc297f9d89674f4f1b17427b13b62a4198c01c666cc490ef66719553e8648699c2d238609c462c1ec40e5790cae44ec718d143bc2eb4e0df2e0ae44120eb92993457e5700bb177d7c1869b7393eb2f3d55c78af5177087ac9d42436605c17edc800f35a0d36473f535de68c2eab5b02a4bb49578c8b5835126b99102d0ed34c523ae8fa52dac0af94388a8f217cefd2fcbe4da173b01027aeabdc277b14c63035f701fdc08981252f8d847a015b063f802bee17e33d3e78c96c38089c64d67690a3b69b8639ca7f9b5c3e17cd22eb252683029ad49512e71916ad2712d208b1a492a7eaa6eb63c12c49d61645a1a9b2a790390698814a46363d844e67a4075e7595d9eb2c27cc136eaf14a10cb683b2ba961e491d830652bc6f6ce3a1fc2d88d1766ae6bd06bb309f43f4bb392b3431545b00676ec36d9ec259e1299cf1c078489b7e9f473cb207efb78addcf2b4b3fe6839b25c17f1f1ef1cc5a4284291645357102937221088df5300a8b844a1079f8a71503374231aeb32658ec151c045be0cc850c2686b255a777208d6d8b91364cd3917c908868d91b03d59777fa7e54900edeb7abf11aa79cf19fcc291f77876ddf0abe6957fc38c957c6350789081d49c8978926d04750753174466f0cd4ca29230f328924baa2f5a4a65cf9c129487a2fe5ee1d8b62d5e3026cc37a920fd58ea7516ff3238cb65eea7729d12461016f257ac6232599fdae22aa102e737f5eebe1cfc83aaeb9408930a47604e4d87cc6101b3fcd29531cc2edaa0d2bba82858f58abb9a470293f1a0a1209a8d609de2ba58257c0d91522f2c2c6c3cdfb777d1dafdd8295b1704ec589642b036d33bb8b04930407093581244b7a9be22e196ead5a062f7d031fc83585a7589cf4595462165016dd2cc9f444abe235f4f1e4abca4b02cb959554b9203aebd1a5e83cda854989c441191924e500bf4df80a63ac8d3902f2072e5e4038a00f08609c0a04c146081903d3029ae3548c790a734e1dd96252dae0bcf3f4dadc5c585e0dc1aec99b639193ac625ec602e60f084049b088de67a74d2c89e9e5450fe8792e703a5964aaf47113114b0ba0498ed2190ea37ed7dded99febbea2a09a6ada244a3a81c19b007c4d48a4c0f3f36262c52c384461383e405acb876820fbd66621adceb1e658547dde21773f8622f571c8690da39d6090702dbd98938216b6b689dc6600c81794f21d23ea25856815a849961f8442c60b959a2fab6e40f63e3dd7027d8875c46cdb6737146a8c9cdd78b5260921b71d500a34884b45af1e10b7dbdb2cdec215652aa8e313de9a32bb25ce4361774a0c39c6df0e56d2a25920d9a938e83b38b1231515df93f5103c40dda9d1a5e4ead51f2bb8b443fedb8fc4e266ea668ace2b1b8d9b475a91a656e7fe4a5cace356c01031a3d0f0554dcf04517942159b7adcf39786e23aacde34b47cfa8bde1764ff3e3902d96fb9fcabe468082e54239b9e4c809a4225848b8f8afaddd3621864f2fafc784fade1d0a679ed631d8325a721badf40f21d9b12fbc6d04e111f833718b08f0a4127fff01d317966321569d160228893683e2d8235c5bd6653fa08bd993851eadcf8c46bba76473608d613cdcb3cb808756181dfb755caf21f6c3113f4b755db69f874f794c9987c4413d876058f7476d2d19dd8093a0503a3d9e5c268cd03ad035d08335cc2a11e15448dec11e933a8a1aa8f1434f4c970083a78f2df00e645886c2083d27fe0e9f9335f15b1035e60de6ebf68f0df595227fb851000378ad09765c1f6424dd0d631a9aa2fc17d63e1a7c32549e6e455ff1665fccc385384076a4f33ea0cd81da9340f9bd805637885d3776a4368aa801a37641f8ed8ff04cc110478e5f5cb0211f623fdafc0a60428cf7930da323eb74bffddd18382bc4d5c3d2eda12b68b2812f13103a3456e11ba7af4603e1ca55927ea200eb807f2270c1c8c0b5c7aa25c913ef3d4d7862e3aa5bb279b430e60a9a7581074dd279661a40ae2234f39073eabfc757d31a6f0a364238d223e2c1194a5b5eb0a2884247d39bea1f6b73981a7b4418cfb2f01f643344af7ef924349d87c7c7d3268e89a996a50123ecb10ecb496e8ccb4030541594fe70f0b1cbe1f8384c888ffc244dead238ed87723bc64bca99687edb1c4d960ddd07d811ec1078a33fbb53c721d0f5d785baf0870c2072ec72688855c3d15490508944216ddecadc6c12eb389348ee84fdfca8dae92e5ce316561c3d07144c825d171d0db49da9138258c48cb2fd99eff5abc0ee0617d12714485a94b49f84b340a8282559c65a089c49683162099270c29863b35715d055f33b97f28d6d1e96d7d77459821c532c03cc87ada7155532d2b1cf918e5d80b240eb0c9074b04e0826d34b8d46a9a941880b89915ae3724cef4450e66192d3a3d0ae155080224dc4b10e0ac39cb0a07bdbfe4795bb4d414141d30a2946e342b13a8cfc5e371564793dca5ff032b56f1e375df18b59481953b457acfd7d915e74805770d78ccc55c0304b1bb8370938e3f6804effbd31b9b58075019e362f6400e36bad38332ed1e5f7d9b925b58ac661874f983a6958d4d7e29fbf29c607e8c863cfd77aedef8d5d924011c6785b746dda49283333097acc7d8bee298ba78c360ab73193c02c28c862fa6ce38d3724cd3c4119950fe06a0658c40f2bb92f4520293e3c46ababfec2a810e8ba874108ba9e582bcbd14b3a88120ad982b2e2444c8145485b7c28532da446e68b6a180b908bec580a86f0bb94e91061b571ec3a03dc29cedf6527be91d9b2a5b6de4ffc680da70428a9b01ba95801c49f7847b506a8e530dad963d674ed8ff1dbd7d65880ae2d8e1c3036aba0f81adff6805cba553392972cc22603c43a680e4451838f726b830f247c3605d98d06178eeb83d8bc32111192ed715f82fc6fbe9d9835bef7aa14b9ab118cf419f74aba95a55fb2006c3cbba56da21f4641b7065a3a4117bd360e13916e3a78e2582eb5e8a5f6cba9789846944570805db1317eeba9e1ac2a48d94e1a90047fc495642658f9f61adc0d8e690a2544effa4fe6a925b2b9d08d917a1a100b41d4c84063799ca109f6d1f3944e9cd5a515431234642d27072aa326292a0d8b8db197f314641b68eb6d51c751a1379579e31460711179eed80ea34756d2f50a6e817796e99acc873d7019e23615e8f35fa1d2503538b619ff8c0cd3d65ba97c7328fba2ede2a2097701df6a52157eda67285de947d87efeee8fe4d5b1d8b8b6775a5e7f579520c862917e4528acb2ae56a6b5f7c5fac020dff1acb8181c95dfc88438961293d766719707becde543deb41e92b5bcdb6984c08d60d196eef855e00c46a994c216e4cefc7d45e9262c55dec920d70b25a98187de81218facf2bd87f3a9fed0fca43bf54b4b69f52a1194f44f9cd599454c2e52e9556f802276d52faf79c62f50fb8037e3d43d03bd4568e486e01dfd4adb9926dd2d361f46661c210b596dd193bcbeb034776a8c950cb925199521fe25a4cb19e390223e1783b1bbaa971d996f4b53aec976649f7be9dd5c1587fe49ee8b052647997ca96803acea71c89cc6d682fe0e5d3268d82efc30004a70364362bc10b16847bf0647c42f18f9d8b12763c3354a9a16463de0af4655706cb015acb65334ae600d0100f87f67c0ad9eeff92911d6857e938830316465ad96ce9496d88c41446b5b32214002ab594c6a0b5181e05920180532f169c464117e1507b013c66cce408e24fcccaf48132395dec6f1aca4fde0113be2d0405236e708b77453443c1d91de337a5b581c067c99d073baa5c6bd028d78814a3a3594c456d73f460b650898db6a6c6961b7fb375a445475e485cb1ecd18c70abf85569685c11b2c5eafa2daef82ef2faccc5b7d89038a662530b85127bebba5ee759e889be7379257bdf80dd7c91a6a546045f7f93366eaf16058a4c0ada6638183da68a13453e9d024867d651cd6f4180ec0dbaf1d2a2cafcb734343bf8f7aa1fea3733eab9d208b3b65350ae9635df74f2e3b347f403c99bf02a2ab0b915fff4f201ba0b3bebd30aa015ab32653e121edcbda20548f944955e8903d86b0c82d672074c6c386b60f744f1eeabda2d04badd4b79dfd42d04f09f5f649ca3e0db840432d65fdaa9a06bdf757c23327a78bd9318f25186895e014753b8eefde61eabd58d915450f31bc0b6e872d16e0804a354a178eb55e18837d55509f2064ad6dc1c4a062ffe803ea8d4085e832d48c330a4d1c7ef70f2a801df89f8d79a927f8c7d6e892aa0fb6d9959bfc0b7e2b4c12a8a32eacc6caec0cbf004bd71113353993a82cfa477e4cae38646d5de85af0020f2c13049a5c03ab5920d2324e07aafd887bdb4fd11cfcc3f96c90432bbbb2e47d6043b0e49195e6a44be8eb3905713ad0766bd9b921d6397389ee1e0806343e538eaf81faef8cca6e5cfe6268503ac85b364c1b092d3512d2f6eeb6a59452ca2453af0ac00a710aee453d5cb2729c7296e3c3ae816d3f8c813c316c184b14c39ea9dff365cf54891b4844c1c21468bde3a3915df3ac4fba14ad777ca4cfc2c2d28f00afe9e2946d4e99b2436a9d4ceacbbd01981cff495628c9c90e92131d24271dc9497692137f9160bd5cd692dc2fc130c94338c9fd728bd74830fef22724273f5282484e48506cd01577a1dcb860aa97ba655b5cd996cfb6645eb6f8cb33108d51b685d443e209ca8e827c8e5bbc86be7ffc2ff3d2705c88211677c18f1806c11c81f267c294aac4fd4cc8118cbb6497fb91ac649f546615eff14930738af7f8e4cf95bc44e72552b040232754fa87f30c1114b7345962a87ff8176308a1cb11135050a1450f3208f982237e86b0061cd206c9e40a1d7c314611113e4c407125671f6f883dc4205c8caec99ee81fba267b200c610d30525ca183a1ec4210e1d3458bae39a26bb26fc367f0265b80200617493c21850d1ae89aecfd15d0351986699144bf1aea007f8042e4afdbc8fe5f77c9de42b018a6c51354540cd3420a2d28866971457301d342a85d9dbfd632e5e695a78dbb247479cd5c82e6fa60014d9959a2093a4c60407580bf5c01cdc3bf4da843d7590e7d7241de8a27b9ada8424bfe4856aad8925f661207279c314a37ee77a7c8e80d67a9752323fe9464121000dea0e15c0f238c3434ca09933ef1e7927142c93263c9fe50b28dcba4bedce92463b159e2f8e32effe2c6981c4d1ddb15bf1bf643c811511eda68a38d37de78e3cb17f885061a689076cacc88040f8ff3b8e1861b6bac01d788238e386af01a7c09183060d860830df7e6fc2184d1fd263e01071c7078a1d3a5973823f5425be01e6725aa59526b73945a5873fe33cd45a0c3489c13b33bf62969a4f18ca3a323291f46fff939fed0a14ba8c64de2794a0f828c6c832cf2350a03b939408843a0db48af653d4adccbed3f12b2dcb69bb5cc2b79929b3b344fba8b366b27779dbbe04e86b285546094eb53cde28fbee3ed872bdf08fd2ae9d75aeb57ebdbacbead943ec59fdba969cd75b7276d0b1bfe525f322ba1b452d3b00c5be63ea55a991a2bcbcf6e596a8f3ffaf3394ffeb66d9eb6699b7635dcd9979fbd7c9965569e402984a512968105f3716c378f45b8fe4a2865d7fad42553f8fa345bdc94a5a383ee1ea147d876bb5507ad77b8bbbb5328b76bbd5cf8d64be2908b000c93a143d7344186ef10c29ef96490117a478965c792346833487ce972ce19679c711963f468821cdf3fc678450e625496643b3b3ec45f7c8b37cbc3956f24be7dfa357ef6b31bcf9e610be1379782c59fdd315d065a109a59fa95564a7fde7e556cbbfba7cfa0b590e5777325d54acafeebb7b8e2a6f8f64c7c9bd84e8306dd618410d0589accfd5882a41439845c227988b4c42a914a7c129d783112c2e2535c8af7f812328880aa407912430ece101a127aa61f0a61992245f6c825641001558950e293232f59847ea63813ef2922e34a7f140845278622383dd38f00fc1042ee0aad1bcb28120a98a3a12c4bfcc42691c996a2a02b437814e701a36588ca12d04993178e4040886b47adc185584e26fd4448db920f7f93b67a1f0919523c9f6cd1418dfa591e10f93ab6b79b9c960e71c170c122ee27b30341c00f2430474ce32ef840756b0e088453d24f06202e9afc335813cb9e71190d08b7afd0404bee1fddf244b11979e24eba0b66e9eeeeae9544a62be79454522ebe26e7a4d45a19678d8166373a299db3663d434a92dd646bd4b2fcac796c391917826ae9ec7ed9182c759983a6757d37229fcaef4ca9a4525229a994924a4aa59516fa4f23fe33d21987d1a9bb7cd83cfc5390ed92d123a4586826eb354b3229e313a3740961396826a75fddddddbd195a826c926e3fc7310c393767f9b379c8b731c41464bb6496e508b2cf1464b6493cdbd71abab458f68cacf2a177bbe44719ddf117358966620926aebf66aa4b5c77f72aa5059f0b411e4af40fc7be839e91d28da32ae5fa372c01357b7a463af69ff892524ab7428e2b972cc11c4d9e26ae1f1d4da1a323f99347feec913f9b60d13448e38e00bb43112f9a3bdccf8bfa87d790708b045f48ac71210cbfd4406dcfb82d1c12497bee39acc3bdf63b30cbc4bd78911b5d960dae46cbb81ae4eadb209ded37172426bb9117df42b1179190c6b51132a4080dba34b1c68bfc05ff4876234ab7a088b89f17e52277c14ac48d0fb38f4f3fda9c35104d6c087d96ba67a27721980c6576ef4857e4469127735b86f6cde8ddacc1ee31bf5f4ecfe6e86d1942183dca79fb668e278c5da0b5b6d6581526b5c27b05024cf0e12e4832e2f6d32a6ecf5a6b3adb59fc1171bf2ec3e82fbd193f4a23322c4307f3f1b8037f2de69661b21f659746b1c64e53fe2c1553b4b9df4b995e713f79942b1191519d1244d7582aaf588fec93a29ef107c3034bb03f9087bf0ba15f35748d6fd156899ef17af47990151e64a9a45256090ffa8125b810e47174e77f95484afe3ec3288fdce5c55d4ef2b9adcfb2bc0e0657f38d03d2b9cb54c2ac47b084893d08f270a37f40ec58f48cbf34e2f19f3dfecec57728f7eb4a948ffce9e7ca9fbb723d8a3596d6a3a320967fcde27e36073908bacb3927a679e22f86bc426785483368cf103e742945e643dcc281d0a3c457bf4ff8e3541ca8df83acbdacffb9acfe77a1380651eea7665cf9dadce1fef8ced9f61b24e958528b88467aed1bd622c2fdf61b5692c918638c31da68e3f4b6dc226252c2695e8b48f6a42795b62765d8a9709cf69909fb8ff45af1db7b178d0f1b21ac8645cfbd0065200f72211fba1d8b46ab30b8cd218170b058efa2a1432ef838e2c3870b3e92cc9cf9d95ac89364cafac6a59e0b3bb211e9f2ab32a92fd98e2c73fd9e9927b3f41492c08a5dd8912936323f059adfe055ba31d07f5d2658c0076076a0a10c35cef842089d1629c8a8c1143060100689ee0b0c000d1c9a583962f2022b76a63411c2092a577060428bcf054a383e3008638718f4208c1bc01bfaefc902ddb50d9c1b7460c5ca0c7a50831bec382103211f78a8c24313465348e8e2c50c682c39628a196a4029bad2c30c5ea4f0c10c2ed07f4ba8405be1830e8ac80189378e7000471068104d31c48325a0b80c7aa81b03fdb7b1b040f7ce114c8c88a2091c8cb8d002dbd1c10665a4808a1c6244fcc08fb0a265e1d303161a7418421060ad05122de8610a2e7af0220c584be90bd8ac993c3bac9ff50ddf964a1042088519b754c5f55210c219b428a51c62092ffececaf169e21522c7dfc112ca7e5f06ad4b555ce93d7af37eef6edc3b6eff27b3fb100d73cb88d540286f808cdf1870fbe1fb77470bbc74e8035802ccd26750a289911111511242439a96c4f50cbf4b5b5890372ed6040e5b44d83dd30610a35dca97fd9043c1dbc66bba45bf97f45898fd4c86cc3b810f585d72021360f57b24cc7ef4fa9d712eccce39ed7f3b39c6f6204fb65ef5b43983e932072b269c645496e47ecd271b428611538227c6840ff267331357321360c498c822b9740a37cb8f5e1299258edf1d210f78801e68d60cada63be20f4aaf47c2e4470fe7c264fc0f069a1c3112533642fed761727cc5570fbadcb11f2d51e0a04b94f23f7f0db317266972982b0466afdfc6f304f7bb19c75ffeae65c89550ee772feb5d42886d114588d7c82d9e64f80e181247908eaf0bbfc271bf06aa89ef416f394602334d7cc1ef9225711db7711f4c109ae6448c892da5dc3126c0c4a8522713a7653f710b673e9d32bf036b51c85a75a85bda484f710b87daa7bf03cbd1dff2ec0b2e7c192f8777bddcefb2bc5814db73b825310d82d14f36a93c39fe478372fcca537b6a93fa64fb8f52c9f1a3c4574b6249c55df13f0a9463945164e649eb95c66858c3ba1de9ac22b45adf1fcaea592032c3dab1445fd629bd997b475c01ccd7fe477afb9af46026bdc4d25d1e0947128994c528256c19e3306ddd7d99adbfb191c65743a9e076dc942b7f7627a79412c737489acd2a690708a18c337e8e9552d28750c64865f635cbaacdea3b0c42692bee36c0fce9dabceb491e2e8491be36a5ac0f9b87d49937b156ee66a620b38c525280f416cb40227d8f846d0018e470248c844f50830966df61ed3d2a902116771b80fe4b1f623bd05279327d0de5c4fd64936e0d21d1974fe413dd43ded0ae28528afc91549854d95af05ddaeb6c6fd2616daefc3bb0f7115ff4776010c3b042c32ed6b11febfee763c21a76fab7f122f1456158a16143e8efc0366d28d30db770b627fd867d5c18b204ebf80cd1be1689f4dc934a0f61a527753125ebc81de3e2499e138b4ca12783200f4a9f0c2277513924b3b88b66357ed133f4ab17c1803ca89fe4b7a2f4e23d3e6a942590d78c8085be14f29a167da9c50b8cbe2483be2cf21ea84c5f6e7192e9cb23fa714a6a448f6851a6240fc2623bb041a62390bc1d18e580f0b470b46f118130ee218c7bedb5ba416e08e9356f07d65c6bc29f920342dabcb88b3e98237751198bdc45a743f91e8ddc457f8bbbe85323588263090479a4d13f209653f40c85d063c93ed43c4af228911b2d488f628df6a927827a12564252e2937a25288c04a67dc352de0b5e0beea21208e575041a427a1b9f9c0a0eb34f5cd36f7fc22d7827cf517c51f8b7a8058d48af3d7c4dfb8b75e4507cd1d7b00c8a2f2a89327d9214ca5402b9cbfea967e49bf0861f5bdc514a14ea1f52e24fa4128134af613108d327ae8c5c1ca272e75b7c7b46fe1787fc28f61c7d64e235328bbf8c620d094b204bc28e1d944a2177d129f793401ee442b1a64584a43de983624d0f111519913c9ded95d040fa0d6f3aa4df3009f3c0e0124f008d43fec49f781497e23f4ec5818a8a8c8e9cc77bbc09150944052848688888f6644aff8b43993eec814de01318054a813ffd03763c196807469fe4edc0a450ac69203924896451ff809547ba0849f8c8329c6559966599a6695a6c0b160daa66ef0f95410ed95fdacb7a7fd724c28dab84e4a1861ab86862113da5251c6af1b3d7a2b7411f578830e3b2de85850f48933517d58ef8c824bc7d325b5c31c5134bfcb944c83126052a7b2a0dad8abbe45ff19feed9ddddedcd8fdd4ec55d32ced033f2a31769803ce46b1e7f7e2295081483a2501c72211f222a323aea1f30c813d73f7a343717797a467efccb636474e43cdee34dfc095090d01051116cb2030392f2438585165e8801f2c09e8f86c6878d902145504e44e1b9ac77f58f283b3007f2a0fe012391eda2e5d8ccf3f9852c86faa4578295f8b45a89fd5abf6173b286d43f2108cc366e83d42e42628dc3e66b71a39832916d1cd3c4573fe48935c02e2189cdf5df8a2852b216379a58e330887d90fa87e31f3d439f26d6d828e38c30fa10120ab2117ff6524af1e7ca3e2c6ec1ab91d3252e26c9e0ce86d9f8f241c5b89f8f4c7f3429f7d3a0e0fac3265df814d7cb1dcbc1133972c762529ab0ba68b1224c10130c1c3c91c7c8c10a46d0a207d97d8b7f9da36289ff401363cc315a290416378080450c201eddb0620894878787c707588c3fb01863f42e6e744929c47bb4eb59308b58761f987b1646d985b000b93da276ccfcc88db9635900ed6840165462406e60612479d0da7bc01f64f8d246f8374248c4c3c3d3436d1b9163000bc222c7efae1022c71de47805971c7f47c4c20a1d39be73b16ba2179b057c29a5ac828d2c6f682099a5b4526ef1236cc28a19b27f17b3a28bec595c97928a2cdf0135c0a474892d13d195bd8a1864777985d6ddb07e9bfb6dffed283ea2090bce0b790a2323a3b6bf75b8c958450e68100104150a4414d4dd421daecc2ba00301041213881a4c08d80889558183ff853a7801c3d4304660e9a0f28391fcc18bf64318cddab088b015081f322070b040b0604e966539973c63a4c24bd6b20b4a04e1430f82a8818914c0fc6962cd00c0a0a10c35c04cb9a10698530162bd8b8a1f503194a111434e14d6e7fc649e72ce8f744ad839d066a8a9df1052873142e811c218658c4e86694a17534c242d5e64312faec4bcc892dd80868a26ee040d1a0cce33bf7758b9f9a66bbc16f2428ca1d2975dc41ae37ee1e9204b4bd3d2dae0f6d38f16b7a2fd8821cfef78ad69bd175ad37ef638f6b39f9f611d9f8933ac23043e12986160f58cffa967a297792d9cc6d6da4a693cbb4f25b4de41136b3254aefff9853c6afba819b6f155ff8916d5f92cc536f155e7cbcf3c9a16f5d1a216ebf8508c639f84753ebeeaebd4205fdcdb33f34f3d33e98e8a8d74acd379e48e512125a372c76252e4a0da3965dddcd24985175ba7430752322b772cb6450e02728195bd870bee7733eb3e71e37f6f337c1d40b94b952f45cc00470f0e586018086386338ca050c2072d306f227b9b21843170504414295c180173263b2ce1041434f0e00b2a60ce4476265ebc61051c53b8f4d400b613840eca2803063a4061c316305f22bbd6c081082686d8120616b01d2a3a38e3e88d177c41420aaf0103baa8200926a68881440e60fe2dc49a128a54900316403770c103ccff05efe14a740f783006146cc4a0881e7ce82f518461b4c3175cc250039644762aceb0e2a4891f18f9c800e612c0a286125b74f9818a15ffc93b491841c60c8068e30a2fc280d91cf14614263668e2e708983b0db203c1568acb9d6f04fd2046f43c8c62eb2fff09f3144fa458c114435348c937d6c02cfb472f7d5ec4ed98143e64f80ec1d07ac7051a62892634ed496f03f7dbb747b28225d3e48e457105c8897f0272c7ac68c91d6b1a083558c19626de48e2ca0c307fdb26341060a628aa58772c30e9fba38032c566d62aa1b588e840337e60a4cf3e07660a442f309de805a67df6307bac77b5bb261455b22b77acca10390a26b963506099c91d83424b3e758f0654810263ba842632fa014b684095289047e74f55c9a8daefe4f6e68c21c5e5c6aa40c9b0a1971333c5d007b18939adf7591d4d669044b74dfb6dcbec434bca609534f0649bdd49145a08e14b9a8cc6d2509afe4cd2b4abf140526661ad780382155644c9967bea7dae4c2b4d7cb9b6652e8b23e959182157124923916832b7bdcdbe3dcb8044b92c8bbf5b31c98eb0512bad3dc9dbbc47c4a62f862c29fe48ac28a5ac0f5130e54aadb459b65969a5bbe267cd33223f721cf7d27b6c35a6e7bc92477a21db8737931e3e0aa66c5fd360bbb2ef99b38755c3dd33d993320bb7cde70d44d97a7752f6911ecab087b2cd3043c882865bf8ba08024d8f6a13e61302c15a2bb64479f320e48140fe10e859acf8da3e0868c29a5b81c236fc427c79463ff328ec056df3a2146ffb0c07b7cedf9ea40285696fe3514a7cf90a13a661923761190e6e9514d6dc0dfdda688b3f92e66edb662dcbadedb6e8acf7b8d36379b745e7d3dfc4d9bbf76db9555f47c5b88b4bee755724f9dc6f3eecec46bcdadad9be111b966183f950dc42c18d64415fe66c739dac59382509669e7329c4af2fb3d734cdce69e19cb34620ba219465eebc478621ec7276cd803993b185828c306fde436638bf46fb69e31ecbd6873fe5d23f41fea4962666a1691aa54fa54c2273f70c0c39f5bb6792ccef9ea11849cdd65d35b7e8cdfc895dd2bf8504e6145a13a3e0cad2156fcfb8a4bba20dddedeefe4e29a5f33b7e4729bb81043af9f45abde1ce47ad5e87ef882ba37ea5c3ea57de77c4b5a554a9d349c7eb8840d2a153a5f0b79353a7efbcaf48eebee977399e1553fa554b8497b9b97b56d7c2dfe7ee573239f0675931f8bb25fcb13e7ff7a717a1f3be232ed5679f52a96250afc578306b9103b2728e08f48c3f9855ae9c7a4d722ba222e78aa45e84d2cabb31fdea4b5e10134efd2a4b4eddacbefb921764f5dd4a68e575a757c5789d554468e2ebf436be4ea94fbde63e6e7c9dde86155f2700bc08df9c0a00c04244507d73a9b771ef66156485250937a9ef5ee50571b9ebf4ae223a3c1e1d3a7856ce85b1c3e9743aad7ef3567faa8ffa7afaeae5f813eefe84fa7abfcbdbb65dfc809ddc9dbefe9623c77724777f7a549211f2ada9146e75f8013bf9e213eaeba3bcefc8917c8ab98ffa1c38f5e5a2f0912ed76fa12a6ea1f04deaefa74eaa1d8e7439f5db0ea9d46f47bad34d9d562b564c47da01b5c2df4e5efdc94375f8bba83f9d3ad47764f51de9b29155e7aaf795773f72abbff8ebf26a2555584877dd115291100f7287d46f5eaa53a9bc98cff115af54f89e5aa8d57dd47d140adb3fc5bce69bca8bf9e6eedbf8e6dc09abbfbf251941855b2bfc809dd5f6abed2bde700c177f395f4ede5ec5523d2a066ff97e6bbbaa47bdea511b0fdf912dab7850a93a942a95cac1da64647850a9646456fd7d19affd75f127f3e955aa3ffdfd72f27764d3502aef3bb26523a8cedf914d8b5b2ac57dd4eeea7ee4ba37a2fad577aa5f751f83efdbc4d44c715848e7d6ea8da45ef5abd4ab3e85db5daad37778fb1c1999ceb530464d4ea7ffb6d3767ff3ee9f726c9ffaadfee6c97cdd50bf9de2a985faedeb9f5e437948b69bee840ea3645ee69bdbdec653bf795f0b793b1d61a5eaa3525b6a6bd5edb5ea21b949fd4af5ab6fee04156e77752b14fe5ac8a9dfbc982ff53238f5e5a6f01156debe95fad357bce1566acbd18495517f6a723a19c991e3feb75d2058de77fafe18ef3be123ac26a5120a7f3b19f527ef63b50080577dc71a117e65016057f8be085ec7d7c5dfcda7d3ebf06c62ead350aa55ea57aa9bb9a96c7ca5ba9e26b99bd5bcac7c577f7f8553df799eafeaa6fb948e7c621d61e968a1a5f2ad05f1a707d36f1ea7baaaff36d57f0e44e638fced64eed3c9a927e170e7f7807a560f2c96f71de9a1ed942a714fcae14a329b0cf6d9dee7db4caf997a30993a15fe76b2ea4fde974a7db93d443ff5272ff5e59e4efff9d0b77df7d9abbc243077dd370764f536debdd679a8d7561ecc5ae482ec6416118ff9d247ee26e64ba694e9531f2465c2a9528c5782b0c39fe94b5eccabbcaf87b2ea35c99db0935945544f047b8a60132315e588b4b0ea65540f54146494552ca1ac7a19ac62bdc6f282943ee62b7753fa9887a9871c10d337c7c2ad9bd49b3e48ea4d5815b34456bd4d5479a7ef3ccf2baf7377c24e56f1c4d7e95df175fa1e9a263ee0139b155a2ff39123d2c22cd8f83a7d0bf7051691d6cbfc0a2d1c437c9d5e067f7c9d34c8a95e537941545f7ac9dda8b074d7e94b0f3920dd430e48ea9b53e1d64df7a90fd2e1142ee2aed3ef640bb80bf5db76310a9bc983b9c4e9e46fcb9f03f1ed48c99123fe987610f241f3b69429c5fd974a795bcc6f5ecca754a8df1e85f2582fd37ddd1ed53dea53de6773aa7b54e7dda0fea6fb55b772178af5ac6f6ec5faed51de174346c5eeb7daaabfd2aa77d3eedafee672f784db5d2bfcc5d0eeeaf01743ae39beb91450dbb3369c13f3ea5bdb0ab7367c83faee51df6d2a1fbaee7d40a13623aad73615fe3ad416c3c56c32de97fafe1cde97da38195aafa303fb68eff369a5d74a3ea0fe33ea4f25d4db47bdfde634146aa7eb507f4aa1f0e719f5dc5faff3be17721713f38500a25ef5ac5fbd0eafbd46c7af56f8bbdf1ff33abcf6570cfe62c85ff79d3b2f27e64ffbd473aa573dcb339213b3ea9482dc8d45bda6f260d6229782dc2077931321cc29cf83a4f0073b2fe6579e5cfd8a4ba1fb982e06af3cafbcef3e09f52aaf73caf3d39f3e85d477af412ef51db6ee3abdbb4e8f42a1b011ede17f17e7c4ac99300ada4398b9fa795f0c2d8fa7d552f936057c9267327d26146046bde6a1dee4c1acd5ce88f6a6d73ef55acaab315f7135bd964a9dfe63e5146eddd7be7eeab5eb1169b85ded6a97155f557bcd53696fe3aa37bde67d2c9c900a013479276befd570abfee9af47a4e3eb7e0ba61772ada667c590ebc7020bd9b4fae65230bd0aa7be5c13ce9959fb96e9535fb16bb865c237a79b03f3bda9871c92102c20e7c0fc0118603e9d3ef56de32923dd93be61a8af7d87bf8b4f3809cc9a67d47f32d39bedf1b793b5ff7c8718ef337dffcafb4c78f38c20810def632409ccf5492f438ed761611fd2fb7ca44f0233f75aea4939a470ebe6f3fdcff74d9f0373ebe6befdfb16069873603e99529ffaee51bf996c4ebd2af55dea513a30b556065f14fe58d926a6bc8f856b2467e68b93c07c3afdc983f9847ae76eec9f5e3b79f735940773dc502822b1515c9013fe603efdfd943735baa18aa43ef5412ea1142af52c9cfa9467d2287702e4521ecc71bb7f22f22e4b73e3cbf4298f888c0a32d8477c999e8559f1657a1bff3e9b6ebef62f36427a68f2fa5120719d6d62fd58c8fd0d942b36922409cc5f92faf0732a4e02b3910fc070f33364c8c37a1d06840913260c0bfb38ca6f14ad9940c93f32c9c6d7b41deea3e7d9b3f694fb422043d61ebe4bb97de675cf6cf8e33e22a961c28489c3c8c496f432851f1cfeb48f36cb942c7d83f104ebdc09f67b06be4d946fb32c556e7e64ed49d8851f9f3dc1be7c9b0839fcc14cd25ec39ff63936939ef4599257bffb8791233fb2865df89161207d8ecda4f89a47d2ba6732fb70c7c2190719312f8cba030881ef03bef6f6ba68e0fbe0416bc92181104298da4c14ce2adf6b0b1aa881741025be9aee98b963426d80c183509711cea8c20d2d423468498e4fb1d021efd1feda6f4fe4f4feda6fef8fb3b93f877574765e001ac282910d11510be198e4ebdc37bdc4389dea3ba3dc925f92dc13f12f6125a5f7126e49251d5ff1154d25ee4bcffd8d6ffa0e9bb0ce97b00e87759ac32df9fdf65d7f895b2a989ec34a7c94dc373d91eeb9e7b012d577dfb08f86022d79bd96c49dd77a9387fad5efc020fc89e161611d18a5c94f141ed8649542c1986f18eb657e0796e3e10f348aaf78bbbf9de9575807125dacc23a50087758c784752090d005ba422a68829e7b2dba792d8a5b2ac03f65efafd9facd01b1f116511853bcb01105f53e38a7d73c8af628ace31af6284db4ff9c478bb2fac8733aa588502bacb3faed4fa71576a353e421c2278030143692f1727894e5c5dc6fa27bff7323d5374c75fad4efc050ff451ed6fbebf8e068af7aed757a18005bfd86595887f51b8eea37acc3c20e24a4e331f80410b6c2dd37acfbcf7f3adca2bf037320d337cc84834caf7a1f9ceeb7960adb9b1e677b53139ced55582736d970ec7094944783501e1da2419306c5261b56e28363faed1bf6c5284a4cb885537a6ec32d22a5e75a43b65fa16144747a20ccf4323cf7a54fc1711b1685e28b1e01718610420499b0121936ccc319f97461831b34d1704be29b48d46a1131850913260cccf44698b0e489aff8390a296009104cc2ae19636489b2831f1aa43d8469d1281295700b47fbd26b5fa243f1d5220261db43d8f6b2497cc11ac6711f4f3de9aef976cb8dfd479c487adf11590433b73ed6c234d2488389900e12366cd8b0bd9b1964de4ce9d1a3c7f837d6624983d027722f8bf4d937a70229a3df9cf48254dc4162972e5dfc098c327dd290e272535cee47232323c8e45b2dbf651682885bf68dfcfc88e36798cae6c2854b67a1f102adadf83a11faf6ad265dd6eab25697f62d6611b1365321c3974855a1621666a181061a44550513c94dcb9713c98dbdc932dcd34312bd1bf9710843180294d244108efe131a7a436fe88d77326ce80dbda107c99e76663f08e92d0c9391c03021386127cf3f0186d1e66b3372d3a74f0f92dd70404813b76e482f3f08097718978b8606faf0016d6c56d8886cd8decb62c517dc5efb1536fc41e8d730b9e2d68d7df9412ceedeb2658b2c3ae2444868ad10f4dba71de5db9becebdfcc7943bfdec48feff0ed1937fe37f1111f9fc43933479c24e6f86d7728741454ea3ea475f4cf8c1d4e46176f7c964bfe6cbe92fb076b6469f56fb9e656e38e79b92277cc0b17b92b80c62561ca1d6303065eb6c82cb4069435a8ac31c58d2a6e90f1932b1751f267d36892458c690069f12f5bc0c4d660d2580bcd0e41ad95eb796e455ee4454e3728dfb81f146a224bd4e32eba84c7a3b8685c2efad4a6e019f2f40ca5dff227fdd0b67df6eeb8e53ad96f78fb1dd846e9bb77bbdc52a6778bd39a69a43e5c4ba69452af92a92f916951cf80b95f171d01b171177d2021f14533276ef6240a7d7a66862e0122e135340a3a87ae8154a8c8b4bb26051f24cab45a3805fec025dc45c19028f5228f27b89f47f1227fcdb756ee84301b5f33be05be4851a6f1a36b3f54c4c0054562c0fa5b05942b841b84dabbfebb7e03913f84bb6a14283dd392b525b5c729bdf652621c4d4793b2743ddb2553a2688b4b71e2d00711cd500d62f5dc1e0b25d7214a59c271bf168a956ab99ff7685ee6c4edf82a125fb57f20e9992e5d020c9047fdfaae46f7f8d23d485fdfdfe81a1d3740fe7aa8a7865cad5c9adb4b39de90f7d0e23de2956fcb5edf7bfa47cdf56190578757ee108be88b5c463447d5d68735bfd033f5ad952bb3f7b8ab5a926b3671577d1266b96b3271578d2c28d23fb2afdf82f7b05f3f4bfeba2ef3bca767ea4fa06bfc867ed5afd5ca8d16fb1377d5f8e32e1b6ea4e2aefa16c725bc27d72721713f37aaef46f58d8ca28ffa437062c9055ac71a01c421c6104cc70db0feee582ddb5afe585e6829a8ee2be032440b84901247162c2bd4f031228c1335d680b9151fcc323877a796552fd7c509d522953bd665862f9848a5a00ad51a642b046c84b0de65b4869552c6cba2418012b146d103831f446071b1830f5e10e5e089184db298a1079e239430c34bcc080d6eeb7478b963465a6452ee98512c7f3b68cf369de6161298e5f420a0b5f75a87793ef4ee256e1f0db2e19d218c2fe79c2d619625feb61d1df18d3fc82ff7931926713fe93d4cf15bad136a8e0fb367ef9998b3cd9a4709a1bbb7bbdf92c4ed47b87f10ca87b2c9a723fb84d3f39fefd65d0eb191f9346b629b0fe14f6ff33ce76ca9106115e78f655c4ba7671d7fcfc02c4b87f365b22a374701c9c3939aa88969a059efd10d049c90c20aa164553a232bdec8f22dd2870b1fc2f9cd39218c73b66e3c47bc438adc40d9d2e0c20f43cbac96d94c23591c22f418638c310ed9643833fa1a7d12a595d638e5c7a891322b68a5b4526935252084df42ac71d8028070edf0f004ac382e1b253472bf07604d09be76b87c3c0dcb055902c86dbbbba8b1c1813c5c0587c12839dc29a2c8f27b0ad85214893e7cd0d0b85cffdd43f387a2952c5b8a2c6394ed6ad7fcccdbda355fb3f11eb75ddd15951195f4e090bbfc33ee04980566b18935b771e83bed2c19f02af60c92c24c1a7d7aa478d2ef5229e79c73ca28a5b4a1505221c611f9a379e1cae48e19f190e1a7e0ae72c7b8b451c6cd913bc6858886cb10172954586bb933ae8c40f215f06c672c71b3214d084cac11e98c189c6a0e2228a339a30714bd43f68c19ee7cf253cd303ac92c44146a0618ab9859f033cdb8b2f2bc8220694613255893a1f4f8ab2d34630ae93e39f2575b2e51ec65a16194bf471991051a4568106969011a4ffc35f7862cb1c1868eafe672ffbbfce5e8d8f58e4358e57bdab469e3cf66199cd1339c6538bea4471b68d1fa950b3fca217b2513a23bda50698c71ca4b6bb458561aa70c22462334e85bdca2cc6d5f1001b949c837c3f83bbce6e81274401e9e791f5f4ed333fead0396f06a1efe4e80fce9c8fe4f2e944231892e1ae98bbd96b40684437812ed7c813b12d95f8a2d5c5ed9df2f1ab12d42646783a5e38c1f401ef9431b446e30518019506ed046930cab6488733cb76e54f97572ed193721f797110475c8fc45fcc18f2f213692e777dd087c0be116f7abfd238d2f43473d1d108688912125b75b329e40e9d1eb76455842c4174277d882a32f525c63fcc0e03c39fbdef1c112f7f289c4f832e29692f85cdbe72cf7ad3d11f99a8695f8e05425da4bf9edfa9f3a705849497bd32b8933057748ac29e156fded4d6fbf48ac89587bee7136ce6b98c9fee7ac556d8d58c7f41c6e551dee4bb8553192e8d9f87097500bb5c3586ad5cf81b9d58f233fb7ea2bf1c129bd7c253e24fc26af5571abb10af24b4f44e2567deee32b89b855f11077d92f125f367be2b6eac7f8444a1fb95722bf843bbe88705ffa1256129fc32c58c7576dcfbdc346a75f68b084fecb7a1b4f80fd16b4ef3a5c6b9f7aacf8b25f3d6bdfc6be10fb43ec17b12f3d9af8b23f3d576bc892faf44f79c892f9f22d36d244509440eb58e311f66b42086442d88ecbe02e82b6afc9391fc6396b987b2f8c35f4bbb949fd42b990e3c30cf64b8e209344c89f1c9f8d2c97075772c78878f29745ee185193dc798f19a1ec76c53cbfbb04896fccdb8d7e033696b0e144eb220610145d3452f70f6eebd648dd99757fd833fdd69dce6ed9dd43ca78a3bb77777777672ed0ba7f94b8dcbf69fd59eb840cad97ea0f986548670fa725e8197943b34bcd548a50ae4076b96777973b958db4ec09a3f51edf9cf3e1ec3967777737fc11a4ed199a441a38e4ef0a71b3dcb1306680228efcdd0edc993b06461bf96b2028f4257f97d5d707d9df3d75c626c2653d1858e42d770c8c28f2ac428400b091c4bdf25f48e04fe3fa02831341cfc217ee172201822b823f4dc78e447063ee181837c8c0f5dc31309eb86038e12530a8f8d30400066024e1f6ed65f97f01b23fcd4ff70d312f378879f989792922e6458898179e98972664c4d4f08225a68696981a3688a94183981a2d88a9d11353e3492c0d3862697489a5a12596c6166f12b27f8bb24082bf09fe0ef017e23fc41fa7883f079c4ec8f277091b1ac51a625e58b1d7eef012c4bcd821d685516e9e581758625d68e9a20a134dab5aad1ec779abaf9af6d58bd170f75c7d140a853abdf6f55131311c0bdd6bcf791f92cf4964f2e9b9544dd5d4097f7dcefb58c85c0ecefbb88fc1a92f97c32dee51af610edfa44e55d3987c3913722426a89cb9695f4f5a2d71b5e29c99b7cf3499d76931a926d36ac542468d300200002082083a74b45a32323972b0583131ab954ad575a9140a753add6b32954a1cb76d9a462265994a753a7df507ebc7e9bf99551f63c21fcda82f3dab843f9aeb7735d7ef18dccd74f8347b9c1e85fafa27af1bb55aa5be9e4e1fb9d59ff0f7a70e9f70ced458903989c1a343d7755df705a3e9a844acd6b54d2c99221a1100002000f314002028180e87444281502c0da561f914000c87a0426a48198aa45114a3300a21638c21860000004044608664860538526707a0f1ab04ec8ce2dd24c7f138268af5b1580af778ef2a2d0242659d24c5096cd31a58eda8c257c558200ba04a3c885a464974dc5a609116c62cd235c86fc3e1ccdb5e7597dbf3e90e53d790ff9e716d544cbc3e06343742b3596bccfac177e741af866413aa0e974bd119183c991ca258727fb8fa1ca9cb81c1a8111896eb2a2c55573357eceabd0cf82347f9216f1e4618316ea0a95342b7640b1309a0b6581fb78184234bc3882854c7f8eb84bf114676485ebc33efa7ade9fa8491fe481f36e21e464d5422cad33350bf6ce0aedd9b0be908fe1ede158d50f06e42c5bc452a1d38cc2871f1a26dbcf4b0b2e917b710a297d71f0b52d07812a1a6cc4d71e1cb8a150be89d347d4a1202eff71f0783fb0cadc235b5f49bda8b93fdaaca7b7a3adc5422509f590f170042a07f961a5d85b4ec738bde75f09974a332ded28d947779e7f77da32c02722cdb01c909448928a44612b4fc98f399cc1799c906e00c9e13992f995c650602da633e3c9004a9ca44630979dbe048bc09329e32a2b9149738690fb29cae27bef6749d2afb9b95fbc109f5a63c4bd854b35d412518d2ae65cb359fe2aa0f8e03b33a19154349379e5c9ee1cf5d4571981e61fc17d425a55a2aea2ae513880937b6b409af3da52a3cd4030659b126d0b6a92acb9ac0f291680d9128c6833f94a8aea4527bb4067f1897392090a82a0c895ad24f8cda1a842cd9ab577a5b78ab743ccf0bd432c7f92f6e02b90f8592a1ab2444d1f7ce72d809845b7f03ed03c55104b137cda96e52f5d7c0c891bff5a9aa8da2831851d9eead06d1e3c943db8662df42e04db3be70a9727200ddf01cca99faf6a2b28b2431e095ba2550795206481dd879616a5e3aed3e8d734465ce11de2cdce28b76f0701a02471e301207b0e78ab758970d3a7a1f3602999a4e0cf462cba8cb548411202ff11cb49ca665b646c7967fcab897e83a87c72347291dc43d746f6bbcaac7c69ccdb49f7597a9e1f850eb1687f6ad3ed3f9e25c20d8461be4ae7bbc4242bf52ba19dad8043c94237569f5b8d97d80eb43feaa5f4b3df0db8c5090951eaadff948bae206494b6792026d5f469414c80d065ddc073cb560bf8a2ad2ace0f38653e09520b7c7a04af47f4fe4c11bbf597a24c7294e3e78f135f514087f60a8fe35cc4a21b5c069338ffff943e3f2697c7ef1c34f3503c6ddac8af751b603da2cd1e05c2aeac3671bbfd7045e24d552786a0a644c0f9f3825b5bd0407afb0e4767e96c87a25e15c83d353059ffb68d81c5a367ab710e17f5aa51df291e1eb63a0e6f82aed153fd43752a55dc0cb746a47266eb6a950c274ade02cdc48addf02db3852c68d1ffbfdb1da78b61369252651aa2e2b9d8ab52713ca755ee318f66c7e06eec9f581f038185dffc0af48e75a801ad6ffbd8d4a9cdc580e719bc86d22394a8d97a56b80dbb83363922c08fa90e5a067b6e2ae21995ea261830292fd191ca5f01acf1b525ed306ac32af75731e4628c70d8441de5edc2ff8414cbff33e6803cdbc11f9df9af37cd6467ccee5d8c0773faa60b77576c408ebb5e678bde53c3369ede832b9ff69130d5fdb84d5dd9e33d8224e3b3e1124569b595f9e3ec1b3f8fbbfe2b3d90a1e7d3b159fd2f72794a0d1387bcbc46cca8e1fbc2da68816c683899d18bed8c8b5f7469afa677a671492b96290210df27cea3ab29d5e1caa9d707f292aa4ab212107d1641d1807009ae05f2f71e3a457f1c99f603fe9ab7673a735fcb094b5d2cca8e672445c06752d878869b43eb0bedbb41d4efc739c88709521cd595df6ecf3ad5f1946da4dd5882a85dc34e72b7198ca47e529454c22ae596f89221c32e0587e347f1ad5557dd730ded8591303c01aa8bbe77586ff1ad2edf00701d57bb0c0862e8bfb2daf2e5bc4e7484ee7c307a70d2df986df6b5b2382349aedaec645946be79b0fee5c0e19eca4da263384a0f84dda2d9a08c3e55e39ac83f9979e6ace7bcd3e39d7fde95eebc9eb914b03a0f5100a867399e50caa0a313553d354225116a16699dc904a6f99f981bf8d8d4bfa91346e0430305563b6748896dab740962fc47aa22c3fbeb812070e866b300ccda0df72735b0cfa7fd4d75541ae1e2add6ea042d7c47e95107f51351e34c2bd708cfbe466458cf5e61f70d89903a1ab884e6aa6480eacef5622058038e8e06e295754440ee9764ed90609d228d064d7a004a553281f88340750a1ea828ef285e9380e5820fbdebec0d51ba7226a333934c90a28a83d88f357ce5234edb1eae8873f1b577901168319c16337c72519a94be1eb35f80744772f42bbbf5cd3612376ddaaff0129777f77a1781965023fd53649de04b3416a803699bdf4a0831c37ef4a66550675db1a7b0610b65c74ba76baaea2fc7666b6dd8525ebdf1c68bc7c54349757c94af20dc6053f6a5c6b00eba852bd90e69b2105817939dfcfa46ea30ac5786fed7c905f3f5a895d9e2d14d182d3c74e164a71960ecff56679419b0d334c74c58053d685d5f271a6cd08f0bd9348f90dd7846c8281766919d863f767717cd1c2bb6d08115d0d64cc694d3d5b873440fbd0e4d160e10d644d681aae9df8cb5cf58f121575275d11ed5362b1e1fa874179ab5987f3e5ed484900494a5ad69ea7217dce28d5ee0052bae4fe4f5301f0150a88ca52f81cf4ad48bde521edffbde3a4977cc815cd097ef2159b7bf51bc61d6e9ae015383bcbca4a71b75099d760878fc002f62932bec4d8400b2eb9bdd0e2d23aa1d8e4bb7f7211e42ba4e17a59310aae110d492ba1d39561b0bacdf6469cef3162243130de734b58ff67f1787f7982d9ea7c8f368b51ab1691157210b51fcc1fc69bb7ab2f4eb12c960de19e4dc8627004189441ef6562cdaf73a0df24677db0bc177de59c21edf5cf7cc1d57a996152661e5aceba41ae62e431d49d40842e4883a63cc7ed3c00516804c478b1b8389d1d465ea09477439454dc1bcc456770726c04160a454814310d9f64122d9b85421e87172bdb0c091cacc62b22e7c709b12fc799d58d34827a320e154686da384b30bb24775bf6168c2dc32dee9c33891ce64070b79d69dfb5eb17918060ed6366a6248d78c4726c8af4c77402711cc8c2f59809d1af1b04a65f672ed94fe934a66381d3b9f24354669f9c4d376005503073a85e8c061b87b9cad73a0841d1cfecefc30b6a5c5b27ff238ab3e13d707761b1bdcf9c8bc8065aa389a83b51ea6dc9bd693d22a687d5b73d9280a330ec8c0d7e1d126be5a29a30f0bb545781615d32cedac4e7e6be3ded15c10a5bae383e03fb194e562631dd706332a570972c84c16b9ffa126dc52a16aadd557e6163443d826adb91fa5bd3547803158ce3c290179ba8aa84cd197741c7a1deadae602d398afe90c1497191cbf70b8aceb206a01c2301c348794e16d403c78c1f454629b03ed8401f4474a07dc8c962484a8821b6e630f801c59b09056ba167cb57eaece74e3fca0d391640b553005381cf6988a897198f1ff4ee276d7b84a51987c113a423a2c08940fc8be6f9cdc06dab703d8b741232872bd8a3251cc3d2481a7152ddc6886aba042acab08391822624634f11ce6683e9cbae62795c08c27840af488900a866ee47dbf08b014d0af6428cc488541f8b3c5cb4748ea4292d926c5df68b18d9481b75c6565aaa7cfcefad42ebb75fdbab936ce7a7d750437c810a89ea8912d92a1e700b73d43a93412b06010600a7855df4cbe700c8b0adcf276ba74b9a009078cefd017d70adc0d55eac1ec6e8cb4689eeacc3be120bb44efd408f27f89977e60e4ff95feff3c5af84274b8d0276cd96b466eec4393feac2bfa037cb56753a6b0c604be3650b74ffd2372adbf70867b0e241908f60c67c6dd1cab2b3d0f1aa225ff967ffe3218175ebf717a2c280b4d43b9c7d2cdd15388a3368db5248a0d7bb3d050bbe2995bb5446365992fea4467aa65a35af347cf86680709a1646c970472212c5f6d9c18bf572ecb62195ea6d45a87b93404d1bc0ea0889122b84b4f805e7ea508adbb6458d69d89a24be5319f866bd3a5487864e4c6deb86aa35ff85e67cc9dea31900ec82bc53d4d9c49d2b3f4b78078997254bc49d4d95206961c5bddb501a3eb0a40be96d41b073a1e7de2bc5e70764eab0135df786145f6c21c5165d6c51573543b8cf3bf1fad325eda7920b48f625eeed1ebf02736d0424a1634c3c170f7b71f5cb433eab132740a48b872e7e97467e38ceee638745e0d877de79f11d942b14242b3753f01be64c61146ece66a94eece3217ef43859b989895b59f8d5033a2fd93d4e4d11787d3ca6cc347d0614efbeb1256fd2f132f628c2032b62ae90a25e0cad43cee0201ffbfc588bcbdc83c4f7a6fff3f8cfbd03cc0944eade57b1169718e6ae2fd2a965abec320693576cc3931e1a39d3ee471adc3b25a99757ba4a64c53eee2440847df216ba4e7ee3683348ba486d01b566ea22d9d0b415ef2644d68e2ab0d4ae3e169362fedfcfa3f669bdaa279ee8292e6e0cbff8383668b1a85ed2499744c81034506275dc3066f459563b793544899f4f473ba08bbc7840eaace80ddffa077376cb2ca5b2e384355308a6d8ef51ccf635469d664b1b958abf812ef38e869b2411063f4f77551b5e5e08351fb1dc183bd2fa92fe225de2f27810ffce675d46d8b762c836714e1b417681023557ef585133111eed91215f4ad888435eeb572d070bc6aba093ed43b80ecd736e37044ad4b9a4d50f373a27a581f465507a72df275c6ada4c11cacb88ac70ecabaf358f8508754bb14e7571242ccd87a6c7318ac0dded0a6b72f45e1d3dc15a3b22f2023781715b5a2c17975664c27f754201ebd5983aa7179eaebbc20f1b84eaa25a803014bac9b09027cfe1d4b2f964566e30f69289205d2ca92702cc362acdd913d75fed1c8737b16ba7f98c522005509ec6e5c1ff8388ff32774efcfa215d66acb4ec6760b0b2334d2f9668937d965d7286f7ba93520987a7957a52d5f1c094fd0c8d32be745213e16b720a572675292f9bbce92319f12306163e476fbf47cbd918405dd54151eea72aa35e44ab3ea933a44991f90caaae974b900fa8747d5a43be43d9956913e5ab88faa9fa248ba57d4d1f1c3772fdbe87faad8f9588df725afeeac472c510a0eba19a0331ddcf81d89ae6d690aee08185b8ae01f2ff749ab8fe65b85f9a1211f1eda26f7f6fb82cdc9017ca35e2d4925e300463734c78e7951a0ed9f8645259629daf82ab52b0a014c882cd843a6ff6f069c1e4ac1e52cb2df7e76b95edc3c6166b41944b1b026d3c38c597a4d23e114bb3de05ac0589553368db497e74fdd520349980772990b2b4eebfc3e22e344df472c8578dfdc69d7e74ebe58f03472309ed4fa02059867cdbd0b23cfff034f9681e9c5e3285ce99cafd902327fcbbf57bc1ccb8a41ddb27c0681fa0907e0fe2ab3d8324fbdc05078d3e3b227b3a96d75147ac661f314264634cf84d6418f55242a37dc7e7f5c4dccf7ab93f5cbfb7266ac4a37b2fd5557e37dcbbdeffeb9943519f000b122bd83ec97a4b0d3cdc21336e44accdb939e5039d76f163417dab7a48d7a31522dbbed8702bbce0aa6ba9ba2b69e0c741b10cb81c1f96801ad1dc32a0cbc775f75cfdc1d0671b46e0367b00c7834056e1c4313b9b51e711d3b30cdb33d29678804886806b11efe9de2b947245d53c6eb2c3cc402007317ffb33f637f8026f9c2433655edd5ed6db2deca37505c09c300e5f644199408179078a57a5447e979236d8fd1e043ebdd9e15f9f5d9bf149b59aa9eb69afac1c22a4b7d7d60be30c4b4095ec5e3d9b5fc41471de2d2715e4d0c7c5bee7dca861e7c79e35ae2a46b91e9ae23f4803197d96529836a18a0bd2d1a9360409b88df6006571f90afe71b3a9f45e687c7b646a70a2ad5aa2d87b90630cf450ccef06151faaa23b5c68231f7f2c466d8aed97d0b231b70295983e85c644e1c2796011f41b864faa0df5dc58654151b3a273d1952906c4240bf2b73f5f66fb45000125ba9dcc2a8ddf868702df3ce624da9c3b4fc35ea415ad33496c0184b33ee47c4e7ab32ab6fc5a7bc901b526e4a509838171ef40827eef0310b513f5fd91dc301865ce999ad0a538b432a930c190b05b55d6a65c5a5146c8e006936da11a908cc2bb807e847bc07f3c5c57d9aa5bd5d3d26fbfdabb56eb76abd4ecd4d6762bf14ca3365a27470ac3240a90bdce664dee577355e2b9049fa072a6c43725d842b977778105c1a35b30a64e06d5c84d70b27d6a178e429b21a3dc43b07df833273e391904e3f87b401139197704029241afca028935535137826a6c05d52bba016a1c8970dfcab2f1ad967dcb980b7415e34a5e0d2aa66331cb3f6164403017684bb96eff03e7ddfb5dc5f3b5a48540ca58abda2ca6124196b05c4f192af4296c3f2ef36d5f0b30fc5cd5f060716b3d368d14a1c1164d25dd7c05617aa782fb01c50ad4e1c07485c7ed5d16a71937cbbfa2efbbfdc3a1a1c4ea938500b612538b6a2b3affd0b4be2015b007e10ec29d6b2c9ae22a5fd771db3741ad523d3607c3087673b1ea50833c7a199039e679d28746534aacbfb26d7ae931a7a316a44ed60f5fce7cbc4b91eaa941cc1b4efe752bc0ce929caa5e86e48821ccc66c3236bac029d4c9fe6694bd7c796d41c007ba96ee45cd354a0b724484ca388d51f0696637d1cfe54eb2c0053caa89eba6312f43966643365c2af7a701d857ea4640e00581fdcff0595ef57f154206f97fef609f3d54495736d608a3b58c021d62fd5da72fd4884c28f1e6e8430d90b91ac04e4b7ad3360aa632db6b008237e93e257a830deb77509a9fda46f5102b57294c109c3ec9dcf5973719e8d970becd63c92fc00636d28435f6fd66d5ef14c3dc44d811826fb3a4886d4c9487b3fcfc54f8268ab0631a7937c5667c81922e74138b291562bda4351088f1000606a46409d72481211e09338c0b3bb7cf18d1dfbfd81814d5ff0efb31adc92f0f9fc43991b0e131b3b400ed5ce822308040fc2208d50a9e26a5f55da17e6cbd61e5d3ab0300d1e0e5edce97395a2f0b4689b77a859b7fa21453103e648e00c5e87e33dd1421eda58e3f3c433f3d773b6127b083c5f0ac92cdc2b26fb3ead8c6a997f68c411fa8d1598dfe79693cb38809702bbf4ce1567643a07bd9ffd746808d5ecffab43a74bd9ad984e9362cea77abdcf8ef707b2756c3c75c8e9a92948df6ded1052c99ce33f5305b11e04178544937a8db6878856a7a7990c065c07d60c5133f1c1c7be4a96df1df466ad8ae5352204e631f0c0d93e8fddf3e4ce2fee96eb50d9f256cf1453b1c02561f020e4bcbcabdc494d5ae837aba2e85286f27401a2084638203249b40f475b54813fc79920b12f08e2b45d4f35456589fd0c00d85d13abc596e74b8ce62d1c5a815f9bcc06f79d5c6b09866160bfe3a6fa605a8b490cf0336462644fabaac7e618828b6f4a1cafe815eb2b600bb97e3e2b5a438e193ad9c525e2bef78b36e4f62dd21ba4adc3bac44c7eb63385ce2684300303395aa2d77fa081f8e038abebdbb6f3211a765e0fde28065a6a108aff817bda46d84680aab9a6a66c5d129703abb5b2bbbe7f3e785c1137d47acffe9ee072b013cbece4d1f3182ca31bff0254e1715bd457f0dbca8084b411825273d59de2c79d270b13487a62d600be5de3397d6f4c5906e4b924820b77c3ed1e6d16e01d3973b4bf1286fa64d56f6856a279fdcd1c4ba6e0ea45c073a4bad57a635fbf2bc28dfa4b3946a0c974f260b61c452e5d8f3e6c4740751f9864f54fdb46461c1109618e5b352169b6ff7f1f4a30129d253312c50554c6839da332fa74b77d5a2818767156382436fdb1608ee522f149e533df4153b41f244f5ca9e0dc4c74a11805be077e35e7af941073d3058bec7cf5205e01b1c4e7d88cb931cfcd5a4470e656df999e3df1db9ae186f478ef5c9db2ec0ef617a27864ba1640fbd18421453aaf19e4c83a112fa95ea53a298cf0991ae3ee3f9734a6f22719abc5ff99cc891a113ed80d0711c9f4ce0ed49f4e29283c46bd409535b317c9c979be163a87733111d0a8e65aaa01ea6bfd83be2a18c3f6877f92933b3af194b86b0d3503a0e411eb0f9c4ad2bac512551147f7cb1bcabebcd70bd06675191493278479141018893a726be2512ed5860f479b834fca1e2f33680b69a0451fd1eb6e575c6671ab4010bce6d294ef69a58276bcabad558be12e2ba61a71f4729c16e7eb01fae1420907c9fef5075337b600c4cdf6fd58daf03bc13510bbfd4c028be86ad833ad5ba3d919fd0e109f911d9f593f76eea0b3f663a5802bcd928c686393dd1f0c0660685cb2f864a2631b5d6194a47d59e191864b9c6e0c20443934837a309d801c2a684ed6e4ca08e3d0a5ba91f387e0e5583acd54e6cb0d43e105565648f4bf676e5b91fb2929563c2eecbd965bd65363e47e11367263ed57df2bb62144e89daef7a3fd372bec18944fc6cf5e6b1513366a12c628a4c3bd6e746db217bf3f064171815a3a524534a9b348abc6c4861ed087ba5e0948fabdfb9dfdf6d54800b19c9df8f2155870064478568855afb418fa12465ebfcd7f7c15aa569a57bde949081d76b320094d547f4aca987738e939d228268ddcfdf6b1111f89a01d4df35b43f0face08dcdf5f4ae4dcba5f9799045708ada323f0f4a72014e1498de361281f1cff76d69c404b8307e6f895f02261df9f3975a67b489310256eb5a5433232a70c36f7ebe81488b4d80fbc01b6027a75d84b420420b212948c842480512b208498184164252909085900a2464119202092d84a420210b211548c8222405125a08494165250f8d28d4320d3177e862f723e993ec25dac36f211d64ee3a1333cb50cdf0a90fa3a2b5b40a41af18c4f49e99f1046219df341e13f6ad59ce074ab6668dc7945f2be47fbf81e8d1792f2971a67d3ee81a706c8349395525de44af91c9b1c6a67949d8d4fe8e34b1942f83fdf9e22bf8a32dc9e33fa75608e912b286047e99026ac89f4109f2d6d51de527ff26700617b0596b663517362a3254d78bb0614d2054a03fd6711d4d4848531b6e9924247d9fb90a2e9c9faa61f82c16868c61275c970599feba2741dd020caacc1038498bf8d8c89916fe0ac168af350c7ec135bdb258801ebcde59ca6ea49a85b48b9e0e92b1bce92fa5e050c1eb3177b3f593f7d8b8ec6188bcf3ddc4229294dd859fd316c0edf06bcc6052a78e138a24e3f283f239445d6508bc1fce7f1609f67de80ff43991599f91ad83188b785d3eb3dd5b6d2e0eda58a5515f4a66ccd28aa5f70ace3fdb6ba33cc61dc6c7f6d96fd06a0d5dc4189474b5378f1996d19df20b06fc10b30f2fb624dd804fb7fd8f2f70a8080c967f230046f912ce7d3d1165cf9572a4df3f3b126e253c6c7a998489657c60b395156c1e49808c1cec989aefa46605a7f431544d211be59a868029901b1d27404692544d0c32c977c8b9439f79c7722ccf928418e283af18672cb77133e2c311d6084f9e1470d8e0ee3a02315cedc16414bae510fb45500e5556215850367083165fcd08988012bec3037b37a80a9932597a07ce71ac1023d94dc4e0ae0f636922fdef521479a38d8fed71282c81d3d818d0a7f3da7f7c6409a48f66051c6a2de726d7d5a161c053f7f63cd06d483e0221a90c052f6834f8c71ddcc23722ee0164736f0f633f707a9d7b2a165cfea3085fb2a3514734f4166d46fe17bcb52efd98d45f02177c90a9707a8a1d3c45b44a976ada434663d9b2f34864e60aa548af53af55810c65adb7e6634eea23638d732bf18e0f8bb72add457aad315531ed00a05a2a188e002b73df9ac3c0107008f61b4ce2fefec27176db1c31d57743db20074bbb44aa3b0c696a9d0f10725e2f8d54491a126410535a5f0c7995dd2f37a99e5526d841f51586b4938c0c380713999f0b39b5d161e1e385c17e94aaf943fb662bc047ee28fb2af6db5c3d4187932bc947a210b1a8c10a4f1f265d91a6fd4aa1540b4a798f665baf3e468491e547e72249a01f42904b675317b8e2d02b8efa0b37a450bde03de4be599ced84f825ff6f5ef8da8fcc3c61a91e7e0b45afbf00545ce3fde8cdb4168ce61a319117db82323c8708b9b53d3adb4492aed43ed8c6b679773f041a2032d3c7daa7e1f5265699326dda0725f42c134e98d1a209e7299eddd8036401900873a5afe6edb24121468648cbd8749e09786b86a1ba80ed76599dc360100603878a5215ac496d6f188a30a82848d20197a2e41aa3ad29b9dbe30d3bee35110f91d8a905eef97b45cbf34846c9663c21f8e8622a243e974061cbc21a2668d88924dcbd5727017ebf1aa3ae21828d9d0626fccd4718b3ffc057c0dde11206e275dfa210e1871420fcbef4cdcf01d5e6de79ec50cae36873b3aaeb84f91a199a9b6422a8dca53731eab6ae97aff4dcd4ab3fd2fb0a74b9454a20304f1464cfb31d62ef1c941bd473268d8e754104e01a81dba5787f29ee5d31a25378d501f4a645c3ae8b205fce2f8a510fb1f66f469c7c854d3d058c78f26052b0e37a489045f575bb0b9c37105d7cc552746a558797d7874674efa0c0cb47429210447aa937858f54ed1fc70ae06d10c21617df3c78b251586efc098cdce0a7d93786895cde837cc6cb4858de7dc9eb66706059264c4521219d8502a9072fab9e235ce82f3350145f808b2ad5e0a32917c10d9ef07ebd325531165622d01e35ccc440ea5d4d448a2a86c06fc8434db5a4e436b202a03028198bb8ef2841b6ba6bec14e0f30ccf47015a40335f84b149103c93810f00aae903cb4401ae3b463902fc918d753a80327728fd01a4aac01fcc740e22bf42b459346bfe364c91170659ab2868e495dc8d7c2c04b835c181e00f5b3b70ecd514b9fb24eece42e9d0e688aa1cfd20991a7eb772927786f4b39525ada91f18c341e5b0579aff0e3b472a2e091f0a2b6047aefdcc3875d20cd6e8f3adfc156601d3d2f7c85f4288eb9c510edc35b4390424f2dcec04869d09ea9d13d6380969091cdc65af70d73409276356d77c9c49fda1f0c2804ed8871eacba1f2ead2816d3ad5426a73b2abd1b68ab582426492aa7abbfa72da3d2e5d5a251bd15d01f485ccc7f693a2160b9eae948869eb925d4dc0815d2bcf803da68848d92b458c2df50451dc41dae54a817d3562758d86bf7983dabe7bdd93d7da6deb650be08f0e89e2af0b54a9e25b72496d5bdb3ba9a8e32db4e4a3f138ce66ab51d50e252a152a93d8e91a98b75e4f838a3006c9083c85442d6d05c5edb6e29c3a7caf9357a942f9a803fa4f6aec5820733f59cfa88c0e3b828178b6eaf0f3f12e54a8759212e04227f483676bbbaad32e214f6361db843f2efab76bb603a482281292c68025f892c16c05c4b64518538906313487cf25bd94af04d756841d9580ba1680d084047847e29837606008ba84a154d73dbd1ded048477609ea555afbccd6255259bc588969524ac63d5e0f719daf070e6aa835da7c2377740c4a9a46e16e43704da3402fcdb757623550e05b056fbc2515367cb73ba59be573f1ce206b954ed460daf55fc2d8dc05733188a071224a8acf3055737f57a2f82f5590661a26d8d8be17806ba469cd949277ce13435da35b196156b5222563e0be5ed57c6f48ce7199050d581b82e34c7cd04181a98ef82d2a6826d6a12697ddf456bf100b1b200921d2630598333e48c0233b0a4f6054f0dab18f9a844906c5f6dd07696c82db3b47903a70a034d291afd69869e4ea45ac957ca9a1e4fe208b283ad2510e929678588345236790db7ff5ffd644c4258e5a10621040231d2a5ba7a51dff472fd4d705b417f6e9fd744135e32e67939ea71cb6e5778fa7d667c0a856a73383e402c1d274903cf5b450800e22a4f0b6b858cb06e32e2b82e9c90a8b76b32fe6414341de6690ed0a85a59576888e09ab3c552384828dba4b36148ea7a13612d13eee705fb573c484521fdbab32b86a1ad1934b1f9f61e05b6290aa0b976bf9d3a7274fdb44c79e5ab30f03a93e4b11ad90aee6e4742400ae260cd20d47e0d411875de5a0b996ca280d3511e4f4737a5659f5c41d6792998e55871b21bef60d96062b26321563f9bb83c06b406a5c3caf33b3bae6f718ed896c00a6527120a3314d2b297950d6be6e1f2802cc65d94dc9665b6a9aa7358926ce690b0b45aca0af50a818cfc94e29dd32d048a5046eed63a822e3630defff2014df131b86166cfa438ac91ea85035e18092d323355d02b6f22c1042a711c016ccfad69549987688e57a35ca95ca3dfba898813c0aea1a48f72c7acf07db2d979544d20743a2955be22f5aa98f8f5c338cc84b86293c479ee7f1ebd452c6c6e48702f1d9600fe407ad10efcf38a0104ccfadea6a51dabd7d228673b5280413d0029ef52fa2e705cc289edc1a0df2ea202838d0844e86c378455c40847ef65f708c99d9f1c5d7dd5b44f4f9c85007e6af37b47ec78180cb89909589ec90cb6c2f4172b9f60a6665195e95fdb84334a60e5c9141fb97cb1bf53285312cc5d63041b6044be43a483b632ca41e9bb7d44c80ba90a4d839e68b948c282bf087eece1ba67a1e499d7227b95d2d2acac68b58e176e76246d21d3d5f658d8d6d00f0eac9d6abf9c4c11e89da4cd413dc23074d264cd7d48cbed1c8720428097d5bb2129f102b32548403f6ad4cfc93415da5d624cdf586f6e83ec924291cf7d721b07292f24cf1a8e580308b0406114dc810fceb8156e527f450585c9c46f71cc91fdbdb9c096c50bc78a78c29fd30e6ff2bdc611504deed0f7773046cdd18e60886c05dfa8e3e3a4d604f7f6d00331da56d509a89b694d1b9b484d79ffa18e717c4273c28b79c6a0f9e57357fc4407c4b6eeb4080f8075c6d3e1b331fbd9be6676984f6e0fbe3b03af35a28ed163344f54c738b55cc20e46181c6c0b08a2077f3d0d83605117d4b78713a24c39ed3b3aefaadc7aa64849039405ec1e1079176eeaa38411052015dfccd6b445aac067d594f8551c31badc7fc19378550761ce471ab804ba44c914a2d00a7635cf37ee29a249f1564ac77ea7cdb4cf98a2d62fe0f639ab67df65ff5117b5c71e44911886595fdba2981dbb6f73a0995674e44c2e358ca3eab809dcf600bd848724f216789481174c08498360ad765245a8b2defe61e11bcac7ba782f0e605210b91b1c1c8c704c3d0dab1020b893cbc5992c4a7838977b1248a56ec07d925411a79188f15bb1bf0fa1c19706a49f480becc6f58eeab839f8a2de7e46c2449801a269b3a85335cdee5e8eb4c10faacaa4b8644fbf676d88575cb493597a445e53173d01069dfac075dad390382b1214aa8ada5852d38035b8abdefa2d8ce45618ae3db07093bd7cf56a64eb2c8a757ea9b6d09eedcc00e3bf5ef429c529337486a3069c8a918c7ce8b37062ca9d5c28d588ca8746d81dfcbb80a3187ce4a75f6facdca6c026ae8d3d6403ca2443154cb5a59340f9ef01d88ec54e5a7d4c5412d08bd5297bce5b6a30944c871078344ff2011a6a09884a8966342caf6ac9f6195566b96616556d8f9ed1c598a664edb6f8aac931bdb06b0097bfa6d0278af6b7e50e8a74a17bc2ba13e2398ff926e21e4e89e325b8a3f7b46c3ebb21a7921a158f258da77d2d47c1aad409a410662afa08dc1785cea031a5db040075c3d2dd4b0a80b8d4da846e4470d3e5eff7d99aded404af89bb2dd1791098643901255afb09f43e4601a646a2079f3e477b60cb0900a535ac6e03c18f8656c8c2e1475e50e3df17a4913f42935811a84282df21afd7bf4dbed1ee3d272a3be7796bb449c4033c4691d214e9da2c2e7c9a39bab3d3ccb86f630884bbf508bf916a534a6740afea120d2834a50ac2124a319c52ef662920141c7e24087dc3ae149a61e8f8396f92e617c7d07fc411ebf84b83cc8c6e1843b0e3251f64cd91d84300d0e5ca91afd71d63d31f85bc271436de45c93f055371f08e5d7be6308522c4d7728e58278e894323e38602d9057e6eb78dec5fb339e015332e06434428383b18731fb2760f2f52fb7fbd16ab62a156a3f8087695309d95b191faae5e889f290608eddc4be5fb3b058c32e6dd4037a65e052e7913b279583cbadcea0e8702a8e3cd80125d61879a26f312629f2a07b5ad21e48be9c4ec4197c8e36569a3b1511c07138b94a488e51b8d17c8ad98c1485a543c6e2b1c1c0185c89fd3cd87c140a4bdbbd8818abff9ae0f563ceefb88f6cdfff475ceee4acb8b79a2c38cd406bf2aa6f206d65ed22935f22223f4dc5ecfa80d881b8dbe54e90dfb87ccdec2f489830b0c832614b65e100d3ea407942f656980b321200aea03a7c97228e5a6fa86d1f10956276cdfe1900acac324fd55d7e6805538493f0b96dc689e3e998421eddd80ee85a9020a7f890b70d50e3162359e661d5e29052a774c5257cdf4eb4cf0c05a0bb5a9de3691b97e3cbd668942e5d650c97efc3125830b4c7683d72b212e8fbc908bf71ff94d65fb29db118244c484706b26cc266a71145a7fc8722b2159d1cf913c8c4fc707676d94613fd9768087d80b960e8e462247db6afe9980dff9af25a3f19aa9e428c75ec4abd7f37acdc5f2cb356ffd2178b5cd11a890b689eaaa3810d8253b4f018cb3b4cad1b636462c23f71ca79cd9e3d0ce58d4af14c292f6ecab2b9d5fe2aa155f470f5736fa1386101f7991fbfc5b079b44055dde0130de9477b590246167d9bb3e7429d1d0eff760a1399f19ddd5a0309182c119266ddd2ed552f16aee2c32a91017e02d51aa434fa2d7712bec43f8bd802bdadcb870e93ce3684128569a4db13e962e44c707019660cb18b4ad3c08717724a518a819954a4684ef72a8bc4589c91ce322ede8f1f9ca97e4695824ab78d4be154d19df7cf842df0616da2c29b0d0d368b2fcbb2359157be0c240d881609ff44b588c13d151d6f770c19340a7278c6acd5ee00188ea3fa17c633bb226b58568fdad06b374f18c1a2667fac72a666a1624c48fbd11ea4c5969a2d5f34d5692d14baaeb87ba172c1cc4289c03db3e878d5c472c248c5d154885435a82c226100918ac858db2a262243a86d45c8db915747da36ebaab65658e2a7ba1a6666db42aa568c77a2e53c1b1aa8d80ac03bde22abc89628f4c06922ac09c3316d8d507a7ec87424386dc1b54c843c0fa6469739250ed30101f8d3b465b62e73910c1bdcfd45a0f23cfedb2f295d5b6727d1173b078a17d585081409e5ec586e997bc6f8d587716115717c722bf5d35281030b5ad994fc1fa5bda9324fc8a35029375019547250a68ff5e40f85307aaa9c5e6f3e0b576faf906e6c0223658820a327cdc0cc162a1c7c2b8a6ab315591e91b2a3d48d5af6e5ca04d544b97226c503ebb8d45d18df8e3c59bf9fad6984cfaf6d3e93eb44ff6a2165ddb758967c6783ea66dcbba234dde0f1fa5a40943e304a5dd681ffe77a9584839fbaa6424999f245a2f111deb0a001f92b8937f993192e88c2dc6c1698c44b67bc39c1c81c0ffb087b11e8de5bca92e0de70a04f8afb7a5c1ea6ed207a8fbfebf225ecacdde3ebb6b9a9199a61a7c3e73b1820951c30220178c94dbd41e7641b96f629d21c168d6dce8ca2b5c85dc9ef7db8a41028c3cb9ba5cf667bfc3513961e7c1d7a24263ba91eeb012ff68a68a9c08bcc23e1ec8c2b4933c770f836d73a7171acc2ff00540db989df143957709174a9ac813bfdc582714d1c26f0627a672845a958298a275e401c518b2f121462cbd144db8d116d8b0ff64f87f067bad16f3e6382cb912e86119c5ac8156658078c035d8437d0f4ea957ca8ac02e195188d2497bbdc63ec27c1ebdae78025ebcb84da6a6c4f88e63506035e880803f16f782fe7af10191d567d8cd16dd04351e80b6b5f3cd8fedf00144cc83b4f5a262e4e1892c2f7b0c243dec2abb1bbc5317076ed3742094f74b5c067683007fab17a7979945cd06e1237fd8c66f4b6bdfee23f1e477ef3514fdb9c0d5e890dbd66182c7f30efb31ff11c811e72f0437dc3a72ad12159ff5fc238c463cb1c309ca2abaddc20adef0086092ea174185ef611230081281b63307e8e089aceb1506dd0ce8bb1e6ccc5d880ff8975839d2bea267f187de1e12afe1c9a6220faac0d4ee20db470265babc8b796304efba5be76779adeac0d90ab855ef81c4879cefb2d55650e7ed140564868aaef0905e940708c42c5a25991c1c4b8d4161278f42fcaa1a7932368aa43176f4499ef731e330c619294adc58a80c98d77231073b6a99b19d86e05cdd07328951b65fc8563c00d44631a7e343a0762edab95ba4b7ab9a38268ccd0da0f379c4f94e24e088b9d31448a169a1c43e75156b9be15f04fc776d97d87e2015addb01a3e540c47c4a532ffc22a6d86a0c6b15aa70607bf69097fc104669a8b25dd99ca9d5015863e53ba1d58bc3a2a341612a0c93d76fd6011f1821301f8832219684d1cd7db3576563adc5a407b0e3fe820988482e7d5180dba6886af7cb2e1bc2f9c7e5c053561a4086b9e63412fb2b78097f2060693d61088a0109d45651b3008f61cb1852e5ba74c7a55891f4e92e2b447dfeb6ad07baad1abc7bfd6d90285db32e9679b9239c3d6daecd540fc6b85e8bd43f321b04bc6cbdb095e2e56a6db9cab8ecf9e82751c89308823371202739258d722ac4223d303149886d2328b15e1e59daa1a0a18f503e8a909736f805477bd52b906d178e679e5b39861738779552f22f44cc585d173dc6193f973b8ec834f010c6c7f5167e6003786b0852193f5258c554c4483fded2e2131ac310eed644707095caef89f0af56c1b0b4269a7242c9b824668289c6cedeb0eaecf94339961300c54a8c3ecd7a6b74344ebee0cdf2751f290069f8e1a09779ff571e1ac11521b54b237a7f4be936497d68b9a10a39857e70b695cc6cd878b2109a244a0094fb7c20011be8526a0e67301c9066aaa348db0b606a93bd69ff177d6dd800d943c60a2fe7e0661006437c1095a0d8e20b6c296de1fa36f423de93f0771ece92532e7d65345a87584243bd8fb3e0d8c4d5bd0288274447e9d47f2cb92ff910c2fd4f05c42cfade99538b4b00e785eecc35b9812249e28341a02c7bc55704a4ad7f15581421635bfff78f7496a22dc4e2aa52c9139ea0bd4187150e7c2063abbbe2795e09d9f48ff4114a9bb4c5bc11a2212fa2488c1cbcb91cecf2992c867ef072e2b8b5ad2aee42248e3f239b318e3ff0232c69876ac1302f2cb38b2dd78f74604c75e0e66e0267fdec678c48a0a47621e932c94c2c9422d2fd8254a6948a088eab6f6f76fafac9ef1c813089ba253ae8d1a5c825c814e7cc8a863c13394f5dd0fce194c5cb1e24313428a0b3e1ec2694a9a4ba4e62d0b861168933e50a550cda582e5a35ca3753360fec860fff791337f9848a32236056de70d756e05ca3056d410450a53b30d71dbfba2e0f3aa39e5f340b0884f17541604597afe847b3838ba660c92c5c07a86530a83e5239579f0daf174d1039f413ad707040b93293c7ba3338ff7399318b9288c35604c16e7b1ef4345b55fe996f81f47f6bb5397419ded8d14f810c2495801432483b60bdde66c33a1c7e7d8db51080729a69be26a5ecb0b578ca0db722c19a55578e2842777626c4d866386e06d58f30694ade8dcde03a25003dd1a2cc15e067a64470215ee53d6a4d2a39f15aec1daee780660685a3707ed1079dfec2ae529e634e0553a8e61146f147d976ac441786654236caff7453fa107da5e12e13b393782191a9cecf314c76ed0038df365bbf337cc165ec4d1078720a3ff286dcd7712988d9a8429748a7be57ac261c87ff804cfab3fdf1cf32fb73dbe4d394d5827db642f109691f775e3ea343408c6f6463bcad6226cfbe7b80523108f20414f5564536ce669285de1133cb927bdfcbcf170d0207b6283b1e5348fe58c28b1c9c21c551a7dfcb0849137f5919d31daa78ccb53a0cfd2147009729e881f09f7190e74e779b10d9dd95684db55a56ecaa843decd555d9e5399511979d4ab258265452ec3a4d90325f314dc62f094aad40dd934877834251d48be06ce371c592dd3e766181eb3ff48a4742a411481b84bdd2a3ffb759466118743e024f43f07d841f9f066427000be9be3c162fd845577cc087c2f23a540f158f82b60a49d98370fe8fd4bc0e325e000881e9eaf621ede0ed004974e6861b2aeb09c9d1994d2d5e4462ac6e3c36c130013730ed62da438af577835c4dc648bac0f4d2a6c73668b0ea8bc7a4d37fe50c1ae5b5f34db4c77f3d3ca615a1950f65a4522a0dc8eb67b5274f25f4ad6463e178678346f96f9cc2ad996e8e15009849780aab7c15912bfe0d54a3ad2d9fc17e17c7443458b40089e0e6f1090c5349e7c23e0c2b22a875daca827cc9a9e94afb020f892c28ec87f1e467378bd2b7f44c3337fce5fb9e5b0a410576583272d59b83d2fff7b4c82e1560c75e74cfe14763e33260bf3d87e2a95173d809798d8f5e4f10589fb6cf46a75d2cb84df77f985bd36acb4b8c4e3a3f2b7fb9eb98a365482126db85eaaeb56fb08538a40f0a59e19e5ec3401d8a1ef231eaa99b0a8f77bbd9ae9989b211d3cff6162669e0f1172437724ec56fcd3e7396e6813bd03380034fefd53a6dcd7827f7e87155fbe167e1ffca1f8d49cf080d28f0c271298ff26edcef2dce4584fbef424807a10d67cbdd1994cbb0ea97b87bde35b259962b9b6d6544c477546ced1cb8d811a2450161df0b7c77c5bc56163922f61ee2d256e5ad2f64db10086596413214abf3490e3e52e44c1799bee22f24ba50be2618a2a0c78b8d1481dcd81e9fef3e1c3292b32a6ecd354af64f3bd221fcf07259bb25319a84ea75c8f70111aa2352a1e70ab4cd548df5d4cc3cbad26b1c8a1681e87d42bee039609952b5c80d608d9eb2f6e64644a9f307d61f725c1e6893a792750174f4a54276e763e91ac51be5c63a14a94144c22d1b969a2b18708eba41f0c89088b410011315b3cc79ec2c96cbc3d7152fd1efd143d3c0920fd62f6705ea2caebc53a7dea112dfb857d870cc97c3f3ab0791e728d97c9ecd69e427edba814b9711c80482aaad7ea6987b94a8f2f002bb45076c557a376f60c9f71e51c33f4a898abd7684cb46d347a4de1a60e43af1661b7d9764dc05894d5a8fdafac600e4b95c75a0fadd7515c89d26fcc4776b166ad7c20c42f884d784c676aadd4cda85633e902e9a1695d3b0614bafa3cee06a7116e655e2091ed26f1b985eedbf0ac4cfc16f82f7eddeea3b471807aac235ada1134b864d7ee609d244e0c046e31c679cc0fe084f4d2431a3c71b60270524aefd2f55943b4aec1d535578704176677f3621b2113a1a7ef631555541248cbb4f14a2a27ebcaed18e49c1fb2aea4a7559a09b0d45a3ee54fdc30f7f2949b27e6e921ecca87896e522cc0b6a094fef7f7109d6ef610d90b0b73e8321d29ba315b29053c849de3b5c2f9261f62bf9821a1924b49e2a0831ed82d2c57837e8a2d1312232ac6a1e95ad08f8ca1b24b20323bfd3b74acb17e0654ea5508fe5cd244540b769dea3bc92801ee4d3039fe53c43b6c9278c3906f2663ed307d314a53cc89d4bc7254d634859b1530bfa667de682309570943e8055b851c5ebd3f3624291357533897ec9b1af35e6aa2185a8ebdb781f74246f6b829830bc38b76e507fc9daa694d3134a477a56b351cf4921591af0489510e5bf4cbf4fb68e3e05a431b7c4a5ad7e1a77f2200f686c6809844960776816b4f950059d0a4992b9a6bcf7b678f0945250cac954d88b391426f7fac244f3c4b205f92286281f63313d5c362daa00fb1958854ea410bd48ec7bb23744168364f9d756fd527a86db66b91db628017c2ac4fb0da60c0366a8405993a35d61bf3d52912e7e99fa3f4f262692b9bc3e35fad454825796d41a0688f8276154539d6a697905a00abc0790c7a0660eaac7d48f081a600afb987eb78dc167c94fe1851d67a915e2a9f6c40386939aa45dcc115c63d809f80501bef2860333af4dfc55b8b671f54c04c8247eade02c255ef969e69ef3c8c2183d199e6e50bd1f10b2a1a5ead35521f0cdf0b8972a8d01ac5a4fb81c6e7489b3d146acb5a28f65e283b3819e25695f55e3fd20631cc42051fd0daae819f13e1bad5807c5bb07563101f46bf2821ddeda0c2121025092c0c6f89c19d0e8101287c22cc555fa28c42e23dd92a614391d9c8f14a48250cc16b6f46799e10f15084108254d3d46d4a4ae286a56fa4c6693a18eace0f289cdea4a12d065976102047efc6566ec5ac95a801c96c75efa2149bed402ae26be7ed69c09c9c8c07d348d262247289f3c177312e9403e777f9c766480c068e4147d87ff480fce3de6e135e40c48a8eb04f5c470994a110332595d3837a390eb49a58a898cfa1fc917c75ba348ae035ec91f7173d3e26fc4c89662168235f19337a5dbf4b5a390f9ced7ce681e7f3443850da88474334d7a90c412fa20992e63acaff3149a7d69c3423861617696ce353f6018846f2458d6b27b47cd85c8a00d45835e4a8ff1af38088e6357341d4d68c813f104e444d57d3a47557d8fe1c6ba471e21ac28dd6619bf07fefc403a82076db3813f6657d228cb1359f1424cae8957bb5a8431d5b2934a63c8256319f3973ccc5485299ebc0f961bec3b55f6f2c0c22a90cb64a664740ca3f38a8e088cf545e72c42eb8e09d532ac786a155ff1e79ce51b0973fa9c02833e5ae8a333ebf622844b4359e99f61fed91580d9646fcd8c24f3b5e48d4473a19039d4974db1fa8d2c40fb96f49e404057039064e8e440498008c1831248747fed888061efa1a957b18b3771a84433da04a9a92ca80467b267ce3b2acb834cde580ca9e06c32adf581f9f3b29db957e884ec1034ac971368f1e7c7326f466f7a87ac952e6c50348756e2e5391c0d563d9574ab0c8b110509a6e13f7a298089c65d5fa284a762b0bebcf7f35db57f2a673484200b67b5b87da4f6e7329d5bd212b6cf6f4c80aabeacfdb648e50fb4514be8ef8f35d9c274e4edb1b3e04937ae61e50099de067adf18a6a06f40ce422d19fcfbd5655dc3d7546e177a4de61686d04e9b57629dff3f3a8e3b212945ae871f9109aad01960e139ba1318850123c9ec2870ca81e45024296e0af7087cdbaeb6c0ddd1c9ed4cee4ccd00e1efc204da797f8991fa848540a5e81b4ee0b84de9617c7c65c5ca1485e86fd87271fa9e1ea9855038d1856dce0c17c832cbbd18ca1c8a83888e553e4db51990ce5ee6f7ab9312c3302c640c9f9794113adcbf73fd76dc50dac3a1233a7e5b240c0bab8b7a1fb6ae9903b8e253f2475a4c5931490b7340a0f3c1a165c463125282337dd7c16e1006fbef9eb18435b8bb79def6426aaa498abbca43c5b1bd678d1fc64d6d9d9dcb2c4288879209cfb5b4dca5d15a394d5804780979f531c826e304bf01617f519bfb38ef63334fd65b4295047d815ff8823dd12b4c536a8820ad54651552bd941a0f5b74e777a3b543487f9c217170ce79912e6f03f88c585dae784a1622b240be017cbd7b626ffef72c687fbb099c723bf3cd564563f05f3fca3f0d4846c00aca5fbbc8d0a564393a60bed05e67f11eff28382485128f9a355fd21b61abacf1154fa651723a841191b9e076d8ab4b44c1a47ee29780859f136936b5b0fcef387a04146da16246bc3b192b603a9d0073441e600649ddf7b1807eb10c6f3b2c56582dffc7d39b740bac6de42da86650ba8c4991186d7557c3bad1300dbff0fea29d2346d02d68ef64cce76b91f777a4489825203bc8ae645d1a9930b6f2f9da4c0c00507b27dfa55364e17e2222b73679e54b9ca9dc9f1bf42591de43c4ea4159a879a9450b91dc3cdfe8c270e34edf1bc4172404a3973b0dd4479738d644e0905b16c6ab6421531c4e5b630c2f23c2b4fc5713816ccb8ab42b24710a88800af4ae7307946c7155241311db770a6ac0324be18b5d7a48f76c24350fca0d7aea36b2ff80c9dae9c098ee03476074d132f58b42583a42ff4956965afe0db623f8fd59ff8ac782336d1faa4240e7862a583360dc655a8be4b159a533fbaa84472419d3f11e04c1922fc632e2095122ce71034f72e5cfe531eeab1dce9bcddb105209d0d3e36df08dd869cf0c012bc845f33cf4ab88476aa4ee6a852bd25bc7199977316c6163633499285a38126ead53536b993623b9c4d4edd9451dfbe428c107bac352d04031da0c7307b2927e58f8e45fe3f328ed818c0cd0d32d631e147480b262729b4ac247df805d0944d914655c98397e9e774d652a787e5e8aacc23acdac7b7dba9501a3368f322dbc914b52a5571312da0fd72619e04dc458ad8a543de66ff30cedb613e2b411aae9f0a1d985cdf74e56d6983467141b75f4083141688bfa22663f16ade104d16e56e6f837b30f6b4f1f090bf8b73c288ac0a4b758682a6f122052ba7112604c3e00f96ef49788b15a94879d235396c92bec21054b407f8620981ac6b58c1f89e3a75b068d76684b87d66ea4bf00b921bd8594119ef97d6e631b7db4a8409564f37b2a20b3c2d0651f46d3fbcb1411d4604eaa058e6ef8fed7943a01cdb2dd1b90928378abced43369711d029a32d038c1e5a36b496aaec145abaf79e390c4ac1fc2a0c9ed65c7d90091dd07e0fb70d64e86dcd6d8caa85550b39750e94dae62c8ffbf609900de016189a215a5a74c88a463ab6aa56ff337e8d459f976840b3f2bb9db323c57c6d8b162ed11e4091993852b3c9df4d0efe6c352ea601381da2373fec6ec6b44bbd691d84d82cf4652020ade3b0390e78e15dc8bcdc386ab8a8e02387220d0c9b0a9ff9334f545d334a90509f38b1d5c1357819d50984488808f3599e06093f6c33d70f8939cb6b3c0e5d883bf54704a25781a01157ac110aaaa23bd714b16d990aab427f0c9fe282775014e0f82a9cd4136af4ac0f5e31902f096ad7735bdeedfd86df9cd40ff396bd5670e55acc764e8fff05f376f65b20ee9e6111ad00db87cfc462f57ae96a196c3ceed23cab989cf62d23c1df244c025ed4440ae06c5843a81898a48ddd7532b25013433d8c74100252c310ca6b4127e19df3bdcf1a558630546af31d313c018afb5b1044c9b34a4a11d652e610305460189b46a1beb609fe17e2288b5ca8b2e4ae9062532abac9073693f53588f028e250612105e211390a0aa5d09c13ee2d31707409021c61832ae8bbaf46d5195b06ca77103c102a0176f8b3f8061975935f2096cba6fca99ba7ad8e0798de1370ce1084850cf318f43233ece367bfdc76c11008a3f5c3345d149caa4974dd7ab5ad72d71d7b972804ba5ccb602d516938dfb3e78090fd8139ad3fd05a3260f89c1edd4fe520985b2138dddc603a087515828454c6a9bd67db47dffe02a908388ebfb1c1640eec6d48fae542cbcc65dc979719f76a95ccba9a129bb879b52c0441771b1fb85adefe4c1ea9cfdbf1550ced28ac3f470d816abaf598e2793a73ead602065e0ba05685277d409b0824d55ceec05db500ae9470786b416f5f1d6a5f75b5197413f7c5da32e4ec79645e4612d64856ae50f4caee6458c0b225881a5ef989914830a288ea16dbaeefd4d3369fd9393465b7f6ccb178be8224de3dee96776878cdf689393384b7e3dc82707ae5545a740821aa2b03b0dc1f805218e04025c7d8abac4c7e399c12e89ee069e294ed72c7135eb7e1e77c50656c8c47265d0bc2bafad09d99faddbad22bb35f6e9016284b66fbf0043b72e33df87c6cad3d58e19d11627fea1680d0d60c7ae159e7985ae93e86b6b9167bf81778ffd33421ecc98baab8cd6bf8053a3ab262372b3e0731090e6b7f452fe8e7f9acd4f58af7b1f804cb8a1f2bc8eb41f1f0ce118538a947378fc45e0ead170f14e45ccffdb07258f36e258d84fe9db5eac94af2d6507cd9173486fdd149bf8bcdf6a917482359c12a7b3c7b90b0b3614194461022b44171b74a4810697c5bf76f058d806223b1c1e3b0c80b23e36f675cf9a412d882d091e0d66a1aa1985994d33a4a7a1ad693650bd6e06767693b9ce71d701a73cb50ea4061cd772c5f95862dbb2cd74795e62686d3322726477eda42f4bacf817fe22e83945ae4f0369bb2220a052bf34f9f93c19a3448bf1c8cadca0cfe49b7d07dd23e4e851800f6e9474bf15db1ce6ea75a73d2f6ce2e3dcb21f717794d2366d50c1835ca93f27991943ea66227452cbb604495c7d5a068d5d47640ce5eae45f70f9dd09a09beb8051eacaaac639af72176e4ddd6470142ce933f354901140461ad134c086edad4ff62e5841d7e325764d4d2c33280d077d7d53473649d7d41e0550e252f12788c44aafbd7598e982ed6ace5ac962a5bd34392d2f67ef75ede52289632359c641402a2b4ea5967bd9bbdd0aac3569f29c111936823483160ddb680b6cae42ffeacaffac763b8f518003ebe67775f1d5c03db5bbd6c64208b8b23203a7556b164c3e91e2b77bd52aef9c72b842b1934c76b27b59d365d7120e18187c7a3a473e10afbe7daeeaaa51700874abc687ab559576eba286fce2904990e7e21c25423a39120b599aa03c4a080edca983fcaea67b3d2d749f6280b0367b2df7f05b7c27a814bac296ae6e630843b6cc094a23c755f9b521ad1ecfd205793f8d3eaffa3b617e674ad085c0d04c64885f8c54589638fb710b4cc2aa78ce48cca4b18d6818bd44fd351ea03c44430b66e351f0751339b0812cb3f28db93e7d77f4bcb4a47b2220997b32e80cfe8326752af34fbb9dc2ebd7072ab9e6bf103ed201ef5cea2778e17ff455cdcc26929aeda71ee6a092207344100dc9dba67c8ef11761e3a721f91b6f1636407ec46cbb761b1e63f6a39a21ba2db41960457805596f38a3288a1c05d48e48493ad2a15a04baafa13a8576d5d78e43a5d1892b1fd3ce9f7d733fe0eb985aeb95da580202b416897a241a726e57f096430aea36d652d66b3d2b2a21140a4f3e1887d5f8bed5f225bc9197c3220ba6ce2f50fe66f7368cd7f17a8c86a6829e2567bb1fcb8c24455f59f0848cbc5f6f62d7e6a806b4402242d4a5d0dd08cfcd516cd13cad82908dcdd9ba034a1cf7f27ec61d43f94a10432c749d0813e33594f13e87035a121160fa99a059ab6006a7f4ef116cfce61c5393fbc98001d6bd639d80b12bf671aaaba68f805e85e90697cc86b4b0f4118d64bacc550be3eba00fe2c4e15eb9142c128677df08b6e7e90eae4a6be36c006df5cd594e50e9284825742b747d75670a04eccfe6112ac2824d5a692b0ef8b803e2ab6fce31b0df8cadb78f13905369632b18adb8c76c2866f244f6828ee13b0bf8022fb5a1f674b9f8a20927e709a06d8062a01778c0bfded6c99c2683cd00d963823669c15e79ce0c54f0a3fa0b9c03cb0c175eef4e194ac8b217ec4080cac945acf5c33e7577a6fbafd4b39577113eea8648fa4c84bd7cedb8394e4af1591cd1119001862849aac1ed33de7500b8a8225d3b5b065c63535de52f81ba84086f662781c10a3a3ed85a841d2afcf1be7bd566b551f4f2cc9582c13c4205fb2eca61ed1e375e9345e5bfc84d0195d4818703ca9a11551408601fcb157baca1a787167f7abfb5b3505bfc8d9d130946a2257ab6d6f388561c36b751cce686596b97571976badc61325583590002230dfda3f10a656814321fc196c61d5920d7a69ebc10d5bed04b1a277764493d003cc66d8f176e09c29ae8c01e70f2abb923deeb6aabdc0a3894b0595a2103e29f458eba0cd928db48a8ad4db769e2cb7728a65c254bb632d2c85bf6be24189acdeb6d874d6604c2f84c5d61a7457197cd260788a6f410fce08c9720d3442935b9653b3ca0987255a0378a3ce7098cb57a28482213037488136ba8b4875692235fe2a466400ddcd0486f0a27832dc542c3cbd36cda2fa692ad6999e9b67553d59aa9ba6c4b2e9b899c3ba5177d6d525ace1a88b192c4b7a13535237d42338efbb8972b8d28209e3a1be285888df3d75d3b999acaa9b5575d74cac7cf7d4ef9eeafb53371d37cbeaaafb38eb520bb8ae96a7a216c53115361d2b493b4d6cac6cd4a0e849480594436b69f5daa2683974e2020d1d2e6a6c806b8c68c220b21cea6bd3d9700073a84b0219edd92b42572f943a21b91458ab165a9d50d793f04983a74ea8b1625f88e996687a0e2ee5b05a6a60a92a37ed0414db5c074444f44c77e294d778aebca4d22cc1b99e98178a847e12f4b192f2bbcafa6ba7acb61082b458b86b645a05cea3cb9372334ab0c5d409f7959870281fbef838d31596fac42703c8eb1d6856094d7a5d0b9570249097b617fd5bf2a2e99bdbc1126accf224655d12d9799d7b97745963af8741e5cd5b56709259694511e81f533bf8dc31ddacc10b4d7815a667bb5368aa90b9f152005c5872cea29120817b0ccfd6760ff9b1b9ada5f070c2c7fe3359673860f9fbfaa61f402bdd372572315b5b1a05c69c0b8be1960ebd9e99498fa76c99c7faf9733386a220211b6b57376fd33228d9cc4e47860da71d2c4c89099be859316f38b92d396db791f53f6308c8707d2e6341389704b3502e59c5733e7ebf4934b9baafbf0010f1e4d8809edb40a630a74f6597ea2370d3285122834a27646fe6601b006283566acf67838edbe61eb2ade6926a439459f02ce57b6f230b98642d4cd4ec44d48c2a4ccd5ddfc8eaadaa8f81ac4a2496f10d9cf3c274c2a75821746c522b3b91c0d1d77f6cca258f8c11661bcb7b45c80a314466af6a525d22a9fecfcb53b881a048493b0662388b8971acabc2588b0fd2e69d7e7395a0f0952dd0e993f8c718944dcdd5ff9fb9193c79782ddc13a760727480e09808d90530a5dad6651c28cb3fcbd91e5da804aecf7bf1ed1d66614a870a64bc5c45d824f56f58f86544d048b213ae209b92ca1c7d37fe589d46315195f71af5795181bddc4b7fd009c77abe184300dea673a165f5e7851f30fa53c3a2dd52752ad71e3f3b96750e728382fddd64b9e0716c41954bce572756c860578e074e669b98f0532055c4ecce98201a89132b7300f4fab197f24d1d9af38ec4269284c7b7a4eaf151ba9a2ad2a14e83c986bf5f3db2454576812be2de046d369943e36bb05aa2e5a23c4cc96d934b504ffc6f0970fa4e58076662d908aecf7608a9fab2a0763b1be2588476c801590864e8bcdad09ebb0d2dcbef6212310b82e034b57311cec5c13ed03e7b78f30341077a4ff903c39152cb36945911e89a80370b79bdc3d745f1b2c54af3c0656c1e685dc8baa61520ee05e0ec0ac52509138171025f42f420f4450dbf35437b1328e273485144d15d282cb7a5c44ba90e9b4c8f68a7c6d031f81ec80358c6501a9b546d473d8af0ea503688888ac43df444552441bebae8a067ce0b904e9be135a013653c33266af9e7b779045485939c4ae4ef24e98aefd333e248482e2996c6eb4de0a69f6fc42d39c6fe416f7ca38fc1668abe14a0ceeec65fa09b11a44ce6075d8b6f27f72cfc029bd94fea54f0063ebe66e6e56d329cf8db8366ebfe97833ea1ce84fd14393fd8468acb4f2c40c0d6321003204c5b7450a19c84fc14e2e8da69742366e88d805112437a47f571a1066e40a9c602c17286da2beef6efd7f4a01fe2e2c6e9eb7ab7576fd8b3db259680397011e6bbbd74dad56f913fbbdd6ed382febfed0a61972efc3655e4fb50dcad37b9b46ead3f9688b4ae118fc035965aaee0f0135dd52ecef7bf20feac807db3ad829019645d6c4bb55d89b2376dc447120c556e63f7c113986e70e90dcd28d498f4ae3b8a15581532ece9a677894fcf23e91a61be11ea4ef541f2241fddf5f25142a491fb8c8301dc81cd65a3d57e2bde6f7b939ce3c2932dc175e811ef9c54667f18f6b2e086d166ec91daaf3c98b8c5e6ec17a12802107341416cc5d45481dee2ec8a274a7c78f86b63802113941800734326ccd01f2c199e783072c46f7dbca1268c7a964841d3ba710cac9bf1b3f386eebe4cd700cd82232202913c1b2580aa44d6d283dc3abac71611337edc42686fb2abc93a854d1c06e8261c87175983f6341396329825836735331e2c4011310f19812b8b00d0b1f496500a7679c85e9c80416cae56ecbd5e9871907232c0922cf62461c61ebfa9db72fd318268a13a2d1311fa399f1403f8ee3abb1e1d32a5b6ad9f4192718c3011c037c15e911592ca5d724f0853424b1d186993293e8148d53102f0dd615dc3e0c3594bbb0c0c69f3c3fba4e9612c26baf129df51519af4895f9a0aeaa9e4cbc304634758315e321e39b554097cc402d6c3e0db2323a8ea26f2d950c41788e66be1797cbb78aaeb54c99bfbc03dc8c79d3c9f4819677f9c214e91a62023129be6371e7e2a061a574cf028bcdb203ea1f7d2e8c4866c6b372a728ff62265e146f88d570eaac22a3913806a81033628fed28362cd1f50db7e7d13f101c3f7c56922a4f3a1fd612ea4b968cc5014c2d61c67fee5f4b967382731941a84ef633b83e08ff842d7dbd1d298f5629e0351395699404684da54b5ec021e86404df6ce5fcfe22e555c3421a081b50d277090cb54bd889d244399f5d51a9e4b91e5962ebc2df0c8f3ea60ef0c2929cc05a6e526b4675657ea2ea86b61c5007bc0d70a543f0e645ad9c426a9a64dd3801e97dcce67b25c120be95b8bc78a4201b254684a1793a368a5fd2b49a70a685952e5f6bc034da61ae26a3eab0bf14ed35f72772605471e2ac887503613f0d7d49c918aaf24cabdec7427a13221066bdc2eab11ea4b5a80804c5a445f60da75fd426fa84e949115d2e94d44fe3d22490965d2ae86119c059f74a59672b18413eb53b5a20e345e29fcc260ba2d0de0bc68a80bdfc83a018bd3c9f31d3d4be9538af83cad0edb0b45909f1bcf9fb1885f0aa839a60aee926de572f3e2fb1c3088343ed16184c4422f164208ce5f9b325624175839cca7e063f11aeeb4c910645fd58b1f197391e67bbb04d9c76521f6ecd170c3a555375bf625682df3df11c1c90bcf1c0a7b276254df1a1db129e7e8282316c01e9f346218120c4fd966b1220f780cec70000f6fcb3326f60376eaf768aa0f02e15dcf15137bc51980da6d0c466920f6f998276b0cf81d751d57e9ba5b465b5a5c53f8d08412d37a465cd673a8a61c5b59c86308b971899a11bc98f2c6dd57f7328a2b734a586c8b60aca051ca9417af70ccfa4198992bfa20f69fe90a2d9aa957b93c23b0c2e423a19656fc46b2ab2065ee573a16561fd14e9abb623e6153ce0110b3dc0caca5c4b03c6b178f98d515df590bbc5e3a3b9ce2059188d56f03a63ae28d93c87421672d7d26479ab5846857b7eab674b61b64421a0100ce5a726e80c0de03d954cc5a8a09b4cd2f188a3e98b5247e4cded663a16d974541a21e0d4dcc355482690941ac256a08591a4168261595d4f00b6bef2e1137acc2af5e600c5be1c4b16d56f42e628267ab2c50bbfeddcedff11e3e146549fcf85035efa6988912dc13356ebcc8d1f322c89c76993147ee4f32618ad8411f71838a6d5d2c811a65c940f61123fccdff0c1368f3ff0a07c0a99b791b5a622b0d0c2bd99b4d01dd9510d55409dfccc4262a462f5dec86c78292d98731b66a6f6147ed22cd0589763ab398310d96e19ebc72ebc10f016b1af8cd744a0da2e629ef036d53567105107a4c6576ab45cc9f8bea0777dadf72b07717b171a1216c74d41b8ee8c3449ed8a0a3d10a73b173c5ec754158ffcc460d6dd9790e8a96f3a9d866f6b8290a40c2ddf5f013e3a33806083e61d6e5099230ae3018584037e075378ab6301cf72f5551f0f325749a6213225a7974a8dce2a610970e4627e97de6e67c25a2e1b5128e81bdef264057a4ebb016a741d054fc762cb24e9d6be6fc801600137607daec5f3c42c0da92cc04269e6c9d5710017489d9cd390ad90702b25d964bef3693fa0a06d168b383acc2d01f51853dd8af449981358b363390f2e5bddf90a8eab3603407c02e82006c9318d67f50d91972f3dfc138944bac8f2171639a46896c2abd335c424136ca700eedfc8382b8526d49e4c56c7238b6164dddd44b5d4f0fde8eb6dca7ea2168f33a6464b36a448cc3e3598701eb4813356a03d7e7eaab57725758478446228ec75b6396b00e3da7141917c653a22bc60d81aba09a00d76f0578bda2729fe1a59acdca16ae35eaf24473065054f298b0eab34d25ad999cdc3aa793c92536998e23bb56db748e0ed25ab3023bd306c777ac8bda710631c174911cb80e8b8c4c3aab3316104c544531d62fb99e6dc5381fb266f3ff66cf7735ae96c259d87d0d1a2381ac6bad6dd075b442e703544ad057217132594cf47afc83eb97a6fa66f985fe904a3d18356238f11804e05394c48f2b0eb6682f4deb3a04eaab84137360e9e5040b291f0149a2fe940028fd00e7054072e3b80ddd77469318269468666eae86c803dc0c4a9d1f884bfe5148010685b636181453bd5b2a4669a0f08d1c5b634bdf2dc27c3bcbed5c838c66df15eec995ba3eb6f5629150b6431f8c6aa5f1085ec5b60aa8d52ce313c4a5cd3e02e32ca681ea1da81a3407624b21dfc521ef1080dea67c79c4c7ede9a2c7fd5b618e48cd15a6a287943ef0aee482cd90b9910dc42b700fca8e5c87db716e89dc8ee3c2ee32d48730641137d3d6e36742bd4d936f40f0fb7adc4fe1b7290b44cbe0cbd50dac51cc46b80abf22bb321ed42e7c81664e53395802bb68777578d2f0cff91c1d9307061c6072ea268c732e0014e538ede6c90c7f70b237646aa6571ab42c0ae50f601728960a242dd59093aced26c862cdb1f5b1fe63b4e43a1c054c48189aa3486f3a0f45ef8f5b406b40aa3071ae7d927b03013bbf6d4317cce1985cff691e7bddc1ccc0c8dd1a62fa6f0bb2c4e103d0f35c3b0f874d95eff69104eeeace351430140f07e9b5d6ec0aff41be7d20caba403d45bab9f483f786dde5a03d3291fe6de7ef873d9aeb1ecef00dfc4bb610b64e97fa9b70284a058b3458c275d66125525b8b9802b3f08d43bf5f34027ddec40dccdf1a9aa3571b84f842160b0f2b0c8670c7c154c1ef216b988c03799491f2d207d7a4a32a427474b7eb1592eb827299bd23a1732e60416d4d363378a4dbc305e087ea8b3366ffc1c8272e32f50681458cb4c78db7d1b5892f34f4e34ec3da0b2ef5058250771d35f12298c10162e6eef30f89c40c1653378311ed8f3142d9008a9852d2139c979ab88ad7cabe373d262b2165469cf8904aa82f97c6856e7a4f740d6cb5460fd23fb57526db3a8de4071288e8a2817514476925dd9e01d012f13b90a556c1d5bb84e0e08546122cb6cc05d0268d276a918bdbcd903fe06fe31304b4e3eeb6d7863da046eb9c691086fc374d8452f9c22a29a6b66aace713b6fc87a0bcc5102c3be443bd70a3c303bc118611733202049437ab652a589ad1cbfd0e2de32b8c7d422d34f6a8b91435eb2953177c3029c5bf29d205c3d64245d06d3760886bf52510afd479d7f69ca8ac4776c913801601dc65046a91afaf55309a15a539adc9eb03fb062f43746bf23a582664ee55c38ca33bbc18e0e7a887b95e003ea2f6c3294710d81418d8201f00d1408e54986299b3e17e13545a4a6c84f5ed46e575d01ec17eb3db7ac9ee468d1a096d12250a0d0b3f0b208cd9cbfeb25552930e74703e2bf02ea129919e59907a3ab38d65f43e9d2d2d932523d2a38c48378f511d756dbc116911de1e28db8a6410e9ddf2f9faa64d2453ebcf0e315a3122d3e36dbe5ea68b642a81d18d28922bdee6e94ae82d19e8340b9d2503dd591db7b32b01950f313ac5435e1e6125a4934eb32299841d74d9e82f7ca987b28b41d9cc57b635111663147fa2e82badb220443a5372dae136aec3dd701da40a9c26a04fbea93d7c135133bdcd3622d95e822e4f4138043e64d0e9bb2d046c3208631405babdc32aeb41ea41b7b00a1b40afa0a6d946c412c9426ace362259a5eadeeaa9f520a0cb5ba0cb8364b511c954645f41a07a6a3395d3ecfa885eca4a86b0a8e62b13e1ed1ebe86b2edde9da2167514821ec49e1e644485166f44e461f5cbd25b7a8969c59bb42c21958820d35f9e77b8f2f077b88d5f96ef39a92ce639873b07798985d43cfd7db2b9afeac22bf7d71099fe9afb6c57462ad6417392483596757d65a4724d110824ba44263a419b4ceed7bcc6be5a6db1bbd7c21b8944642232dd7be7acaaaeba69d3a65d75378976d7b828734e07e39c837392fee95ce809cf5525323957b7eaf55616a4622253b6b7ded5ad7a3dfb98f3aed46aadc558ad990fe7e6bcb7ae4cbcd56422d6a9253abd31482d2ba3d3eb56b6d564eb73d653687354f5cffa884122ed68394bb57296aa26cbe40a6fd72dd06d765f47d6aa6260d72e313237b36b73f8209d8584274bcb595af0655939cb4a8dc5dbb456b0ca481e948d9e55884c798a3036abd07c35add0951199babbefe6bc9744aa6929249ffbc46a19ebbe7f8cd9dfd777b7bdf6da6baf8a5db7bfd8f57bfb2ac3e8ebe73bdb689db44e5a27adf3b2f7b2f7b2f7b278c3acbeb867f57ecd36ccb2baad6eabdbeaaebaeaaaabc61b7557035f640e7f8cd5d35b8710d24a2bad18bb8e1dbbe8317b8a5df4b2fab2fab2fab2be82493ee65cc1d7629eeca064cb41c98e27cbb48b3b901d46f4a88afc6817e7439b2f2b8ee52b7776022c7805932e8cb183ab655b69b5d68a555aae9bbd102dd3d720f42ed777d55557dd75a5d26ca5b6525ba93d86df2eb5e5ce52215a5e7995519af160397d4b36c382ed79d0b3bc259ba174253be2e58ad2cac7bc9744aa306c85079da1b8e2519d7e259ba94e2b3aabcd0ad16ab6fdd07ee44b65bcfbb76178f88c778c18afcec2d2ceaeb4c095f3c083cccacacae8ceb650192b9771fa6a4bc6a34f3fca66baeb0adeaab3683ff24aeddab56f6d8cd3d3e9591f3db09ccada993db42ca72c990f1eeec37d60f98cfb30e33eb05c06fac0ee03761f58625496d36659215d64472b2bf62c2c2def2173edd262df97d1ddf05d1e78c0a4c63e03ebcfe81877b6f290f1fa18d98c8c7eada78f91cdd4d3d3674978c8cb142bc11cd42cde7ee47e0bbeb78f699aa64d12e9972245bb2c303407d0367a7454113169e5b26d641d6133290e810fd97ebeca603dec86804db6d8aa1802365962f869655b55e14d481632ca0f7489b737ca365715117d35af53faca7e66f52aa279ef75e12d74f89a8df2cdb610e852c888a2d936caf4eaff98aa51ae2cbc09c97d483fbbfec2dbbcc5ce42c04648ee1bf7ce99c9d34cc828cbcb83b220d55609e17aeaadcf6f8e8bede51b8dac518cd1db5fef8f3046f10e97efafdb6a9b983c7df5ed5ef5d362ac6292d2f7b4b20db3da1222f7b52c840a1b2ede4058c84888bb1eb9392ee6b79719b98e2e788731faf9be328b317a4cdeaa1893189d781332ba75c4ab57d9865517226bb9c24ecb4264f7298297df047a5718d4d1204122aa0ab3989483daea2b7b97abee3e9c95b5d60a2165eb307b789b0de16179d0db3bab8362d7156f40b210527e9fcf36520692efe976f3b5efd05b5a5e7d6585661b904c596ee969f2e82c78748bb7ea2b6779f551b601c9a3ee7ef7c87503922bdeaa8f2ed3a2b764f7a34c74161da1d3b33c06e959225a6efb240c9d9d69c14094c8e8513de88db78a8590b2ca43f2a22c84b7266550b6f585b16a9b08cc156f30771021a43cbdd27be78430cf30ee7c7f8671e1a9adb7c6424879889e56a08503ea28885289374dcbd33cbc0e296d672b9ba3c2eaf7ca545565ab532b8b5cddaa369b81aff046afe50a6f3f72d5f047a64ea325a23eeb23747a2a2bcca8431ff7a28ba848e40374d14598566cd324d3cf1f99e2adba9b9f5e65d3a99f746d335b5984da0f799be35df97b3149b6f5612700c2977c77b69aa93090a59c819f70fec8729bb0102deb78877fdf6c90986c2c385f5073f5a966370fe58b8c384a1c65e59c9ba659bd0b916d21f021536f528521609327c6e69c2c38c5236c3ae210f890ab4f6a1d561a08d8e40a6355f503c41b8dcd759161634c6208d8e40963d3e4e61caec3dbcb9cc385a7bea0d4d1325cfaac8e2dfe4ddf660ef21e294745d72ff290412226d25a8c313ad9dd300b2231fccb74082779271fefa2dc8ae46d0ad29848c7c04f97b04fc18ea1919d7b1d6ee3edb30e175e3281ee882f3115a9618e650fe1514deb963b160fa7eb281fb1732e1be22e49727ac9ce491642724ef28b0d2ea6972111f64991069434bd6f35e7a957ee2f567362f1eef07d2c1ee3319da2648c9fb0e93793b23b91ce713a29dfec4ea7d18c8904b59bb9e9aad73ca08df3f9ca6113c618f549ce4ace4ace4ace6a5a392b392b59ad4b6949ca83defa0cb570351d366cd8b01b366c08218ef23353521445dd3b39ca39e9e067a48e37254b0cfe35c93679e64dc9126310eb7853204e7e4db29b929bf8ec40793c519e931f98b3d32eee3a3c0e62b8e43d99e943d8f86501979820c66626fc9a409cec4dc9371ace4b8d7932b9a65d1c9076712eba58a4ba1821063036d3d8fd809abb5a401dbc410363f3f26fc298a30f62bd6ae730467d56d874734e28310ae3236c72632c3e88cc364c9e4626654c52a7b0fc74f9c30c52a66163bd06835e8794b33d9c228db1fed4c3f9382851aa4fed2f1063f2d3c97b0f63f0d46535653565356535e99d953c662c1c2b699d5a15c63078acefdedd6dabebee497e4ae9ee25c14ac1299ba10ee786f5dd93eca46477219acc8468f90829d93dc9b4331fefa65ddc7fb48b3b4e4d0e907e3a46b48b9bb29988698cf44c11a8b9f7809a8f98ebc3be5abca33a1e3dd338e21fa0e678c0190835681181c2f7cd79e1a05cdf5c14fbcdfd4879370f27a79a524fe94b11d627c6581115cf03f9007de2ebb2f6c943186db20e7729f1c313289ba41a23b321f164874d96a7b0be1ef9fde5474c8d0c9022a68f896793fc7e6d764832f9dd26fb98a75ec4c4df91df8c9458e4f79e249e996c96649b1cef04a9167c409bdef4a637ddd9c743ce481e33d4e7bc9734a915ab3b3be77bf5a8bf57d90cf5e7e35e6a4df416b5a6e93df9daf092409d17e7401d058960ca41dcdf11effd699a6fc65755a772cee963be9aafe29cd39c98445a0311ea416926a8a3a00fd41cc461f47debef18f520f4ef14b6a27bd593c26c78715d54efa1817ec0f9e420eed811d3344d6feaa9a78eddf43ade94cedc29cd34ede525264646a669a491e21a29eddbe4382553a7692f2f3131504606da22ac0f8be7bd2452bb4cb729c2d6a9ed3b7d3dbd03ee356938b5a07005d795b01ef2fd861246d36f2851f3f251373839d3f9c4587d8a31b99ae204443c95c5ec80d9844948c0408db30f7615e8bd247863ebbfc7bef51dc2f71e9e50cbf9c9938b0b3f91e4ee9f9f2c03fb09b1bd700e1b424a16c486424fcfd58048cc698a46a6a9dd1555182a3154594c89947ca75516d7c7e1f002de80c2d330f60fb78350dabd7c911d135cc8ee4f0b2e88b70436040e12a1965b47678997d32ef015dde6e359e205f18cf0207c8c37390d1397649824937432fcf67272327c05bb0a2aeb24508397594fd13aae06fc33c20ba2a190c2d580793ee1f2344cdb0c96a08d80cdf4e7a6e4093b57e3bdf7de7b3fd4fd52d3d430907a67401aba5ca4613a53af7138284c9fba110d034f51d4279d6b6b1aa6deba0f7a8b8fe0239162ea472086effba04de59c3e2e14d5f80893780b1fa1a9c73416aeb8deea811af59a0c9bf00fa8515c3c2750a3de93fbf016c05865010b63347d7a1a681dab5e62dae52553ff5103c4086a9a409fde027d8aa95b00dec23be4a3932794147d797aea3eac4b7c44de3a858f30a191b77e84723d28ea988f06a324fffa070dd4b2cd6173f4f3c084daa3b75e5f9f5486f52929e58f542fddbf540d6194827a2fa65d5c96dfd1d75e1c0e98e56364a494cec7454a0d6a72fa11d1ed8fb03cf427ba3d8d0863d44513a661c1224c237a5f845d8778705d9e1845cd1cd18888e5b485ca5606b34806da8bcec4b2308d48741948b1885e340ade1464674d18ab1eba4d89a61eab42a7b10f61234caa1bb9a2871ec2464017dda6045350d1aaa29885f11126958f7e4349848ff445228c591759189b40cb45f7d1223acb8fa8bce53e583efa081f119de5ae34332b0599623d54548ef968304aa28b6e816088978b404d3e0711a865abe52cd854c954be721fa28ff091d1455fc14798d08c2efa9195abdc955846a296159596cc95583257722595cc9544392a4cd30f350135f992c9643daed4e427cd90972fa95d344dfe453e465ea6da4868a7506ad2b91b2953f7ae44d98b4117c6e43126f190975d8922513f758dfa0bf517849582db9104358a3a24b91ad49472caf7a6fc932fc3b29515811a351d7cc33d9e0135cad2f4afcb6798c4a4cdee054d5702fd0826ed43f848e8f622fb23a25f77a5d08b156537bba8938c14811a05c6bb91900a0275341ca95de2cdeaa4288a72a4585d714f40bd7f028bf5688c4d106313c62640bd4f43bd8df429f8791b4c66988c31c6f8d30217278c74b6c2e276cc6aa643becac13dc2e45d87af32c6a6c763f316d3d8be287acd79ea91e6a96bbe6654863d6b0a819abc9435de0b42a620bbd3cb48e81663f3ae7443f6d769ec2f23d743d848fffabd326cde66d894524a7967dd0f05a7374caf60261ad9e114a94002bd0ca4619cdbf11e0e87cbd63929ef2666539c26a9840bbf91e0dfcd74200df39aec6898c753a461eea7ff6818d1718c30a1e98b6e418fa7013d5a6cc45e848df4ed116e955d1ef2a64cb3612a9f3b6520159fdd91be7dcc8e30913f120f029d261e748969fab6beb3237dd1637624f418e49dfa248500c9eff24882d03fdb0389a4d9d91c14139a7ee8228cd16747b08a31791a1a8c624ce209c48beea31f7abc285e5e241f92f29545e5abcfcb7436e44dc1176a3ba036350c09ba4c6f9727d21b6e8f0890a6d7b4cb345d93118f679adee4f14cb73ba0367d06d448efc984f5276e363b57861c7fb4dd46b2c80870a690841352c3c8f406022589379a80de15f1f3451febedc422f0c28753cd0c6f7123e9edc8a8766ebfba0ff8898fcc234c68e6e18f546f0982215e8638508bcf019180512ac9aa0f8dc078324ce2b703b5388b10793b2fc6df24114e275047e3ba8315aebc5e52bbb4ab31bdcac105c91fd7e36d4a3f40b7187bf134d763fcf5876940b7b7d8481f749b920c04e10d48ced42746b169d1155cd72ea476b9e21e6142fd48bcfd91fe9d332452b90a3e127a1388b7a789b7a7304dff52998632ec512f1ba2e3e51f50a31cbcb719f62645cdf9ea3c95cdecba1a40f23bb4399e759a0d795384903245bdcfcf5c3397a787750899199037dc6b25e1c20f99715546e5f80b638fa68fbdfb003df4103e620fb2193644c7cba50663523fa0367d5e24d741d474b1874b56080602b5c97de17e26a44bf822669ddd73c30fb8c04516a488c213d4508aaff1c08f2f700c8156b85b8491d3597bdf140a9f838f01f129a0fbdb95ddad77433ead612889b2c2ddaa7bf0aae08dcd26e33f411d8dc951eb60ee73a9327757a37f1dcddb6ff4ebfc6c03baf45b08fbd284bbcde722bcaaadca1c7e15be598b4c0abf30bc03c42e728c50e3398314d1bb95c4cb10d21823404a82454b1d9650030a9a38814eee1c63acf1a7c70a2e7aacf022faf49ce0e6093e710450b6d044169af444e1c514532882107ecc40059c2b4c802489307a948812036162e9f5280105ebe1324d8351a231dbb41e256eb23b43763d266822771677ab3d72df65572671e196de81f44b8cbc0c8b0a97c6ec7e4486ade67efdfb4b8ccc0e79212ff4f1c869dd48b5f086c4cf669324cbf7c8f25436c4882b4dae34a485bc6439049918ac41244386f4031932a2b032a0139a50529bb8916103831c7cf1c514bc90854e190c908528e474a10918529ec0c2cc41936b09232a065a58a168444066c794294c5942aeb2db628a11a0a0f3b9e91d4eb11b4fe75e145eb679ea82c45b3988c3d3c67d8bce7d7b784322674e0c39ba210e90052da664f7976d46f2a390e8b941122a881027859c1cf1079c14723623dbb4b293424e7656eeccbd740e3c853d496a5656552bec8158b813368137b2c02a72b8b049de66962245cab59961fbb40bfc7c3f3e374ee85defec3cd9f1d9813b3c4b1aa6679387033f73a08fcf0e88d330d108d005be27870b9d2e9278b124c3f845863b5083424aefec6817de6e5b4adc799122a5d2f199d367fa4c9f49ad6955b26767676747469e6884b85385fbde3aadd33aad8323c503328a8e1429d3149144bab7618f8d11e04e3bb8b3c11d1a14bcb94d4039ea48c3c1b89afaaa1976661bc8728cb91bc63741a74d972498a7949497cc0e06f97cd313100b170b17c2c49e919d93e1893ddae5871e32fd020ff1e6d29021ece2bef6e265eb91a73e7c0c89f4a9331e9411b89168f8b0e0a4db39e9e125c6003e3dc0df071ff4608026ee45b1440fb607106b420a5c20841a283182ce037e3086277410c5149a100674221ac3bb99d7bb895e80bff0a48f2143156478193364f807ec80eff15690610f0adc90e13d0004de88c7823a9a91e46ad9f5a0200859945d0f0aaa6082564c404c7335deab9f257c4a57185ec0538241119e04a0892c96948c50600c014a0909bc240e5294fa30334279a184c44807a5c61302f100c006354429252089ce92520d35ac40a7e4a69003049e12cc5eb228d1795d8df70470e1474a0966335450b2794840f8c4f0babbbbdb7577f7092ae8d2e170801ac24bcaab19d6e760ac73816f36b9ef5bbdf2036547033e2b9c4fb61711d7c466de947cd97a9763c4f8cc36d2e761b6b5d8b66ddbb66ddbb66db76d4bcaaaac5ed79b9235ede52546e6dd4b225d32e04cfd75d50b47672f8cf16079fd0c0bae0d1f23dbac10e7d3738455b22d4449dfd130a4df86c94e3aa9617ed2df30324ebad6303e9cf49786e9e1a4c7340c0f275da661669cf4d930f824d223bc415dadbfaeb7649bcd92dcd295e4c3874bc9f63df470c3030f38d91631e3584eb6f8d89ff5817db27d9641f9a3642be3d88b90710c899f6c617fe5d0f26824bac836064b8cb37c2606124f6c322913bd22e1cd6649ad99caaf2c749ccd2c7b46cade43c64316d332edd23beaa9edf1f223a64646863db5b37f496d65f48cfdcadbf2b0583c9b83e5ce5a8cf1b8cef2990b3ba8b5e0cd6649eed78f2e9257c944786b9f7c6d79fe7a4dbbccdf08131aebf64698d0c05b37c284a61e7ed2d05fd8884c0f6c416ce4a57de0b797bb12d471a5a9444dc908883189e75f92769973be7da0cc7794f9fe99d6f4d32ef3f0940e776b1f7923bd401d8d2a0bd224678fcf4c6695130c626c02f2f33472ce57d8c88b918843ae4647c8f30ea5b1a0f0143e773863bd77e348ce067ff26b883b4ea85538235641803213027fe0ece8687411dc54870bff92e8e4e0c4c307b170df1f195ee594ae52ab662f3132d508ded8644bbcd5f95a2f3f1d0cbdfc7530d6e5490ea6bacc2ee95abbcc2ce19b52fe426d24a9919c35c8c4b365d610a35e3e05a925dc7bcfaa2605a594124fd5a4ded58c314e307ae1bdf73e7ba6fcdc8df8264c03ea6844478304b570b739c51f88c43ce1110862de88c41cf1b4c92ec99c24128c0e868291776ebe5da6ee699ae234c5c63ba0b3e76e314308218c6f83d03ec9ae6f933a66c7a4592c75372c5959c9b93c210879b2b2ab4151af44e574c994a847071d74d454494a4e4eb2954d259805713c130f8a70279f253766d72345173260d0a737b9fbc6348ec3c18182d32e380d037f9e4b7fce1f9ce7020543712f8879e32c64a2755e101394ce997c1ae6953a0cae467fb3e011f246499122b79ca0bc20249ea2bc0384c1e178783a83abd145c092852927edd29415dc7406eac93b403b81069218729fe242eefef44345ee57707030d64e6587cd3a416eab05b92d27725b54e4b6aca0be594c1ac692d22e7dd2c4dbeda6f066fde4765694dc93b563f9e4cee24e6788f28270d51bee4639c94f474ac3501ee7d277329fe47e539fdc97d230ae346f125c8da649a0d67f984e01b5fe469390fbd6ce7579a33ab94f3999f35e12e978833c4e72bfdf17f0a7a7777c1bb65622f7cbee8f4ac8db0b23bf6f7007b9ef0514a8bdfbc0128562a1e0c055c9ae470a2df2f6b2c4954570028421dcc9440a4a2e70ab19a8400a9d27489183052970bab8d514125c39072a5cf9862d5c2a0d45be30c3a5ba30c5154141065a9460083fd7e2810e9474e0ceec7aa2a0c1cda5b2eb8942278a1c372f1467c81ba905d6352f182a5ae1d81729a858d787e72a43932cea132b4049a2a03b3d5028d12263869c3858193444114111838a4c141c29acc89c41a74787e7922903949d1e9d1c951f203766b7c594262fb858765b4c710208539078e00e6080e182c690815bb56081ab92dd16776042937b65b7c51d76347047d96d71872a5e1ea083e378e0133cee092d62604b8e7923f1ec80c653900ee8e2d22e2ed1c5657a7999ec8c0d1bd4ac2c4b474c5d59b12b2bd7ca0a68c60c909df9432295d10804041040000104104208212363676c509650a82514228542316250ec231eac4b7edf5c7a7879819a7b0f76c6860d1f6a0f5687ed81e4042720b5cbed4ced818719980f3d64999da11400d5d91ccfe00190e580d8ce4c8ced8c85c988419a8101000076a6caf02d2c2b23520b0d3b33a261676686571185ee48250001b03314e8b2f582a6ab2f003b03dfa703b03332436a55b3d2e9821f809dd1f0002c8f99371264f801581ed3ed477130690f809f158d7b1ad6a4e2f496f2f3d563849099cc03a0f6c3ab849058a67a0074794074c1c50b8c00a49b2e0bdb7035de2325b51887830669c65746b3b2625e3439cd58ed3557e3496a56d44d8db7f71e2fd3b28a2f4f22539e785ab4569991669cc68ad6d262af19a7b162a3053472359ebd2111958d68d4a762e3a846d2e15f10217780f7ae0a5ea9d286066fc440ed87c7d262a36a0d13035d5c9c649ef7cd828fe4a62b62ad7b4618e84af70842a8220a4178bbbbbbbbbbbbafbc7577db0a21a4240b42589166438877b48bc3124e10c2d80d2184dd3d2789141363840ff4debc0fae215c61b99cabe1fec316288cee85f2acde143f82e9a23c65e76c8eea659d9f657b7aad2f0341cc44a63ca1e6ae0dedaa2fc3f04756456dbda6c3783c9b4cbb657a06ec2ccbf4826c0eecdddc9462f626ec328de329454cca56327dd5066dd8cf35843023016d1a5669a0b748af9a533be724e0430e12894c39dc9dccddd3c1c83f7c2f48669316e36ab8adbbbb47b249949b22b471230c7870bb49d9594ddc839bccf132446d2a9312e520d56786040531a50a53c799250bcf39e73c253f33ea32dddd38c8243f02ea37d3e72af9ac68f506ada634dba6217aca9429b3ba6ceb1c9fd5ebdab5732eb6adce39778747ae868b7d51102836c8de3bdd4ad651e665b96db81a6e6379f1db14639cd1b1634ff14610f6d153a6d050bd0f37654a495214f6e180926479d9d697796a68036aaeb58741a1b2a8eb81def4405764e2024d77075d4c4c719aa6698a33ca0b14a705ba9888d3aaaaaeaa9e56acaa0b24abb8046b52a06b5ad535c538ad0ae6542165153109d4a9c2aaa615a48c4d4db1b228b52af9def424453545b5a428d0a59405028164aa05dd18db7694a0cb5a15bdda1f9d363d66739aea54a7bff937a36c2fea7d484feaa7f9376db52adaa4270b9699456a35e9e1d909856c8ef9d0059a5605ba9898d934bd9a263905cb46a3554d2b4c729ae47b919aa200dc0029ec28a959d5370cc8be9b3d1c25efc6e1b86a76d71c0e29512855e112a8040a974c15853cd48f1eee4945e1121e0b0b165ae90497401e0beec02616e4b9409455eb853d3d14166cb53647753baf7a1d8e2a3b81391007b00a5057d482395550b009aa8a09e6544125d1a1aa98266a5530a70a2a890e55c584af7ad91cf45785df6c6c2d79e470d43b4bca8a0b022ef10e009b92325f182c2c3847ea920297981007de4cb804e8d6698140a00b254a1c282860c8c4c4c44001e30b302a14307ea280612f2860fc44010374ad0ab239e24157a83e00c23c27ed02efb8707263fa0693dd9b6c9a3b102e88e7850d87e3fa6b3222cd08b9205ecfd5fe9845a7c94fd974d589e5c27ab11224572bb93a7d96baa213fb9ed8e7c50640d5e9bdb0b3325a3647754aaddaa4270b16abd2263d3c3b3d150e85424f27c90e32fc5680eca6ec747e78b1016f58413c2cde011c8e79f79b81a6ca3a1d7823e4b4952958b61c79ac5427900b0b7b9c0b16598c97e46181370d5cd329e855a27a2debd1cbc201b040063d4ff0e005016f3af608baf4a7ace5cb5c96efeef97efdfa75d53b7afce8b63a1e02d19fdd534fc973e183dd13631b442f460e37763c81c70825e47722f006cdef456e9e90d3c44b9257c51356e467e5f7d7e4fdedbc27bc3f1f78a38a4e0651c8d56375528cb99a2ecf2d4a1445517753725024191990272778f22484d2344d93134ae4e993cd313d01391e3e810113b93f82c117b93fa37b626084dca7d1d76090fb063d4d0021f785803784c88d84dcb77a13891ba8983f53e488738c79da4986f75e900496e3a959864ec3153d394ee434e4784952438c4cace0860172fc646227c75727945c90448e9f113fd91cf16fb8dbcca41c8f13851c1f95508aaf7734e334b41fe08d1f725441157244418e8f1102de7840047aace00b399e6609a5780cd4b820c77b00c2dc7821464091e3891481375c8f0a70f0c34d153ce0f8e4f8b744cf0ab890df14f086cbb187055ae4e8ba58e284e3428e3d4b6411ff76e00dd7d30222389e7c63b322e7d5e9e2b02043782d1394802dc88940981ddd184eaf38024fbdb3234c68e08d0032656a391968cd48a95959316a715f11ae84444e24596344bbc428f0e77ec6cb312541c628a5fcac2aeb534a292d29a594524a4a522f1008f92a8bd9d124d973e5e56be08dad256f2c3f3c20a77c8bc3315d9ec5e188b106176af1309e9ab3a26665494b4e48b5c4a476594209f24413d00ad89462125cde3587e342c002f2c3d36991dfe511eeb586b1a8bfc7c834ccf4475f4f936022e81e12266fd6ea6a6871b11e9675cc478351aa4ee3bac7218c3383f6c34bcc6f6e6ed4507a7f4017a1fc1e0178c3f5a4a027bfff8030cfe14c28e4770bdb08a8bdb7fc344f21a1802bc5cbc0879369d494d1ec87e502e5507b2f07bf25a0f62c1ddc38426daab7b55e88168753f1c304221f20a9ac2542d55f5681ee9d2522b4626b55515151a90fad5051755d5eb1d99097ab20f7ef0e745f5d686fb6a9fc622a180236b9aa6c9585f036ba2a07dd5251c11bb4acd36c93c9748bd95e36edaadcb22ceb56cb55b6ebf3a250a5127a41aabfaf8caa77ebde90e816aeb2adba087cc82aa7949e623b5c56c1d62f861785ee6e8532fb9b81f076bdaa9f6eb3fa595d75b5d6ea965561eae60fa5d5ddad0a8b6006482a1ba8a3412b25aeac160bae7c1c7da52d1159fdb45dbfc2273f22acdf53bc52591608040259bfd6e83daf64db35e465d15f10d1dfdd257a2f8b6005ba48740c84676cb2ca2bde6ab24ae6dc9c24158cf98871d28b8861d9e4aa66176f2351e6ae70925faee0c914f51878c31151ffeeae53d05b40788319f4d029bd4ab6c9641552cc7dd1323dc20153a6dc21834eefcd949eb61c94b9ac926d760812dbcbdbe82b67c986bc5c6fb692a9c8e18ef03bcdb6671a3a7dcd36d1ab8a8a8a0ac64407e1ad2683e89c5444db592242d89dde0b6f161399f273af43f49ff5e68d118334292253aef084c395753e71e55f8e35192a71e589c8f27b085e57bcf862841146182184b0e1936f46e26eaaf17bf4f8f1e3d5d8e447bd52afd46ba45e638cd4b4e6adcf4c6c43d92c713ece8782422dea106f42342d3be79cc398bb9704e17b38cec43fec267536fe88979fd5b163c7e78302525fa573663e2a9b79c73f32f5a44cc76cfb418445bdc22a72b81416a2e5798cba905398477c90f83f398309c5cccf4697635f62249c4f89c984b1215e72ff05e33131818afcde57482105bc428558d07c7290df359f1c4411c5cb01e9e960848513f97d8485133a512786d11d19808427bf330009cf14533c2e620c63f4a24002c24d7e2701e1868a49852303b4728a73a294501809adc4c495a14611054f174f3c3179decd0c2e3c8f78394d2f891c31c60354839cfc1e6f8c40ebf4e726e8a20f20106fb2e16ac81a2385e38c9733a076fac3441d4a2c658c34a8be94b24733979adfbaa9bb4c6112d446ae4f7dbb7d57a78d254f5848cd11ff1309da21f56d7e9bbec96f14a5b5cb9b739a2629bbbb8ab1aa2a1c03771f0e99e09a40f8e3207ca137f7ddbdc706ea68945ea64b8a74aff6987681322bb83f7a94e20aee83f2c850af0d22bc6ef470b0648afcd2ae1497e8c49e252ea8a31955763d4b5090371a5ff0811caaf7831bfa7cf0237d108717811b05d235256c50f2052a628c31865c8df8dc0cc294559fb2eaafb1127aeacff5aba877a6c43ac411ba4c7fb7e6c941786d2735dcb151a397defdc7abb13ebd663d76b48b25ad3febf694cad2547253c99e5ad994ed90019d4f96d5e5ed656065b31f35edf2de2a90d9750a2b8994513d64e614e8db6fe8a25841d9bcf07254d3e221b5ecb5865139fc36eb5dc3884ee5adab6411bac88be443b7c21fe00d8b372dd32c0341ccd3469ce06083c69859862e193ee45ce0df7b77f6ba1a508818a87db391a175939db5731b2bc168a66fd788fc11134c9792aa25896fbbbc3fdb63c2259ece027534287db027aaaa5c564a56773f0dd09d03c2e18093ab311aad44576334e5d10ade4a90eddfcc686424dbbf3febb22dc2468a2649bc41064c6072852f94328bb79afb652b731976062f0a652f4f350bd369f6ce12c9568cd639cdd6db8a3723168ed97cd3899eb48200d9f5e080275fd9f5e00087450d3de54472c9ae070732c857de68f4f4e020093f64d7838333e49b5d8f1567e0016a219ff8200dd0076b80f391a0122d327cc4801394e0e20627488115dc5082363b3e2630818f1daae06387127ca2648b0c4f03dea032bcf662eb680600b2eb5132833cb3eb5122832da8a3b14dd152d551f510c2c7188a1109d4fa0e7768c2565bc177ef6c75ab5b50159bb23aa851c3d74068bd1eda1c1566cfea3f57a31f5b705f8cb55a1d56cd74a0d65be06cb1854e765b1c810bad61e00ba0c8dd04d4725c8d3ee4c1a52487a33375c09d6e480d6f300061e00d74e9f70dbc8104dec0a987afac9c6e34ed87970773e08d7e13104e0193c01b555815f2c0e180efec608d077ee4805fd81cd6d4a9327a956c6ad22ed5b5dc55853797cd51ad0e79faeb5516f73a9db608db2ea05da9cd21ade0a8adceeab02eb3557194f5aab7de53aa8266bdf5f7b4aaa1fa2de67b6a5591cd5135e1de535a55ac0a1b6efd84dabd8a9da950abf7745a8eceea82bf4eed0cc457062bd4bad300b5ee28ae46ab6813e8920a8ed50fee36dd540b7691035fd0a756ad1944323a0a5e10f5fd51f6c3534043ac44056b100803bc03f4ad4cebaa724be5da0f104605c326a00bcc996ee04d7ddf2081372c1210e8a1d09fcd1112d9642802dd82e64319f56b4e3753128ed63add587b5d5605d5ccfe02e11786ae6cb5d68dc1075a884210a438824f18a83350950a79702b250de312f7bd8af0c16b33c2eaa0323c0d5578e37024e1a8a8c29bd10b4286b4c3d4cf69180dbaf4e76ccd06779b6ea69b8671632802154c60410a277ec640d934dcf7eb9514c3911c0e98fbd517d541198bcd01fa6db2650fb3adc8a6e5ae6e339b0c33229d237e617807a82c136a302f3b3a3b68821440a80218a53eb4c2dd604eeec31c08a372f869575c8d86ddfda66b4322dbd7ccd158eb8b72df2d8b61150f89400d7ef48278b93fa79c0b5dccd044765a94218bbc3928d96991063bd8018cecb6b04313f900d96d61872a328487437030ee0b42d00213599062085bf8a204df24db08bd878570507cf2ccce3e191875621331c7fa04ba64e128e50770a7270c400d62e03100e725242878896ae005d11e780a807f5889856b2010f0b406de5082734bd6a74c09ce4bd66be08d770bc3694986fd96c01bdb837f6d872f3201b2db228c24a899b5cd41278ccdb8ee1855d870b7a8c31c7275671ff558515474507e1c14585d4f13a4d040c1f434612160e0ce4ec3d440281394c630431ebc09813f393ec686109007ba44518294cd41a969183804e7020fb588028d00b51d2a04bcf16e54b93f718c18ae4599c106844d2a142894c9d36d3a1e04363779ba4d12b2b3cfd570537c03727cec1ede4386efc101f1caf020b85786bf7cc8d451371d73df904862ca308779d8e4cde6435e10870dd1800c0f028c4703327c03a6641a6b8e6e3203263fc5f9b20ab52aca7d9f6df9e0439e985acfeab879c8fbd1f13ce441c9f3d5bd205e9504ad719bb74ead9cae294a60baf5ceaa5b59b4de44743b203b3bc4f40de676409e788803fa59b0e37504cc229079361e427a414ea02801f9b7b90a5b22e46706cad410324f78ce80de6da8f788507f727777379138bd239b344c7d22711aa66ab9e3f3272427b7e2c92d717e76725fca28b9a54feed7c89ff96472319d544dea13527d92bbe653181514f95393b44b7f0aa38292fb5318f24622a93fd289292577773b6928653e79e2e303054a946d661ea719a9b2b83f50eb34447135fa49bb74ccb1e5cde4699706427f9337b9df481a6756a1c78a1cf458b1447653f45411a5a70a294e862ad446469892458f145d8831c6f8323bfec9185d19a2b8ee4a6ec004ceae278922bc678338e4f7f8de12f8e4e6e6268995370592dc8f730bb95fa7184317540c810154c421f77f98811372df86a30114b9ff801d4bf2cdfd1e3bb94f83811a2ee4951e1a1891050272bf48df0884b90f494f9231740d8690db65412727f7df14368892fb7a4b96bcd88437036a20d13681c0d8dc0005260042142758411ba294e28b4018c78429ac7012072632d8624929c2284011ffb27825270ec7a3365980618316f0a8000a69f002e46209527829fe0784892504c8c0095ac841054bf0a1028fbe30caeff30a813a1a9bbcc9f33231da8b3dbc8550f2dc204e9eee35b1b7326a1d9461f236a52bc32406010dfc858ddceaaf84c9c3db947e95b00acfebb007c46997799bd276a93bdc9ab54f47c97c7e02a905a8642c9894492c99a21911000020003315002028180e084422b150288c9461f70114000e8ab0406c4c9749d328c9514819648c218410000000000023331b0aa23f73c2710ff0ebbaa130363394a65d3dd021bf819a8367d64ae3aacda641189c8d6e1bb9b591cf8a339f88ad2209f4d4de353add38262e82c246e5df86e92920153e44debdd48c42e3917584851c6774a2d24751209359db10d133a27ee5af2f1e19ffb39d282e2d7ac33add1d2863f4084c2f6ce8324f7f7687e6834bec182fbb443cb51157046d3b0b54c2ff0a8d54f6fe3652696d45074d17bab6b209f46e2d412aee14d29639fd3b9492b63735dc3be4c841173b5de4ac5426c06dd5dd1943da221d61a409ffc1fe01a1d7fbb4d9a3e8550af11a3af6486dbdc0b9aba7b0c2164e938a8fcd23128e06208475efaec1c5861f338cccc286924a8f85dc57a97914a88641b48ea4f10b7496e63c57153a027a31e97313b6f40f5f7edd9ad5bde1514d442d5448472fb742a11c4a47d00f1cb3d606017f58dec325ab23b539582c2851d2d35a858ccfb9504dc9482faa8c20d1f1bcba9bf30a0c78afe7d01bdf78b7de2376659da3c059a178f74041a1f5bc21260f58afc850caa366cf66198c503157b4b3034d0999db72d4fbe3f12ca95bdf43f52ae1b9d993c7107bd9716b5c9fb1f6310ff1bccf009b1d9c2ad4b33ecc8f8d710c4b9235c6549825f13a9c28a95c7074994c00cb32e8421d508d5b1250d6ce471c517c46a07e203ca1a13dd9966e5ea75b6f8ed9f2b5a66509909f30761e9cfb0c607539cc9f3ded28ffa649802af4039692b1953409545bb512d92469c17cad40c5014ea4f72dd5a121ee2f2e40b55091d915b23e416e77c7c454a675d7bf7cc865e59815d510eb55b29d78394c759177ea56603bdb165bacc0b674ffb153053b02b18250fb0291a8a00d0e51a377cc2371486618db2f69629170caf5fba8ac5562b9a5da8ac52ecc092ac39035c2a29d7925762433e0023d5daa6d95b627063fb58d839e765c2496e7338e35b5f3313202f2b0e94ccde1c1525bf8d506a0012dc70524b8bc8216f102181655d865523b8a886f8a336e24264d468042ff13b72715032a8ef2b0b6de93ff4c6587028c50f6f0f464062054050447058d0403533715ffa33de544d8da7f02b8359db039675b16eebe12f7fab9e74a0ebd69425326f3f606e662d26ae8b2f6b5ecb3ca9681c9c7f5c8fadb45dc54eada59f47c559b5fd570491662483dd3a8a600db74f349a8275d9b2fb5f59fb2df1a6c2bead1331a277edb343d7a8bc43ba81e57951e95c48b6ab89996563e7a4c764fbb7c7911510db2e7b12847f9e75be639ed2edcd21a6c575a1f1a7771d163a048716364f8368969b22a615c72d22439fdee2387813481401c8c40e2be8adab7051b2f2acd594758f0c000c7528c2fd2deb9de4f39ec951a86c2472c12c0d7c987dd2e2d556a5501cee77a077c406aae9dbabc7cf3663307e265b1cb48ddfff4f48d69a7bc3e43df38d859c35e37c354cfd3a47920ba0054df10735100431b945776042a3f86edf3e2646a9f43b0762a6afabea8cb2a3b6a76104783fe2797027254655a9c3bf8271746c3d12dc1ba3852ccc4ce56d69a5596bc72f120994c17f250d9911073ff189784cfabecde7ee73a9706da0414b74f5e5b9a2fb66b897945694381e728255357319d1d90ea85118986c7e22278a153351ae2514827cc3f32bb7f0ac821ad9ab10431ddbaa6615926b1efc17af70d6f237edcbc166b1a906c9b98ea408acc98c98a6ce6589f93e03b253b8ae0a0ac803ce089e2d01d1bef18749cff0f7429996ba42e56057e09cdda64d96924ab7a20d77ae66dcf67d1a8516220c31c6a25ef1d91f1fc3f0d6b60889fd90894c375cb19419443751406d243f97bc4f537268b35c0c4deb867a46f040d69fcb8a27ca689766918ee77ab86eb5106fc42200a92d3eda28d168eabf229b94c44eec48bca9d78c06e3d219b92b873c6987219baa34d92310753ab3f74dbe802d85e5a9b4da964dd54d65fa6e6760414a57da8ffed7bcf96721748a280cc0bd43a3baaec4bb4b81503d962abd59e0e515a89d5364a79d4b584d8dbfbe2481de934d0895b1a467b7e4b19e0d5ec110d17781ad895eb74e03cd9ebee068963645bd1c8259aca9cc5fdf094839cfc50799ac7236b2d63de4da4694398974a84870068476c28a1c709a1060abb15ee35cd32753150fba1282c0154fd81b266e1eb3943fd33027701e17bc06a805a61e5e3640cb399e64d610c518670e5c5acf7f12f8334ea147c4ee7ab34d0693f69d4a7ea214f5d1836170cb71c7c28a0a5ead95c39d4dd4cc4c04826942aeb8ab808d2576c981b09300c059546312dd452391f48d18016399b1c46bd43682a1b006f5514b8b58a5fe58f771789fdc1901fabdf9fb9870c358fa251a36bcc19a69ab7e9eb8ca4c2f5df4403dd889edacb0e1b4cc21806d4460f3fbd36d07726ae5d08a1eb086df6337ec8ece56e0da6e0486da2fcb72410f0569da8c547666b7cc46c20e8d2570a24f182c8e331bd630161745fc96da2150748cda088e6041d0dd1a88aa94f99098a26f68a035c0011fe3fe07823b67e4f3bcb6a12d3c69f5e5d81be47d42caef5cffe4c00286cfe5be3a5fe65b0b01e34470957e504213472f12964d2aa1875b566acbed210f40a8ebdbe5bf3b1ff1317521cad1d0df861e019e9fc603b26fd743a9b02ffce2547030cb0e2e54384b68ca177d74e851f99485ba0b99943da6384b5322f0d070307f3b18b60325af33be3d628963ce6687d1b76c4dac34a43a6f8972b43394e9a18aca498de91dacd61395a02e55039457ab45c8e06df51777ec14ed9a64f7d167935b926056060b5ac1771a56c4b08cd01cf35e13ac0da5403d0aea2083664dab4e7a8c55d84b2e8a7e2ae1e051668a19e06a28796d358e34e38f8ded76a2d204fd9bc53da39c5164d9d590565ce5460ef30b9d00da4a93897ceb496de8f28be53d0902a5909971d7a38d1cf7ae2deba40207d2f1daf2f3db018e1e2c92fde61c2a510ed39460789da52fee96f0aa6331082568f66b322e1394cdaea16d26885aca015b223d5e6e3015b3133db1c19e21d4ff82be0391ca6c42d9926c3d2d455be5c473571605f1a6610c42886f96d728278fd47ecf0c107de57d439e9ed3b8384421ee134a0cc8a416b5731f967bb0a8883980c254a25f599a89e6baf34e4d883ea9c9dc78b0f31449a9601a543e5637e702d9b9f0b664a57aa5d5a40905bd37a85491d8943a6288b8f912109295a0a98efa429a3fb9b9899b50339b3185e54114b61309faea225323e34180993a6cad9d4dbbb1ecad6a2d08a2c93bbc09dd8d2410f7c9452b9167b5169f572c06077f643c0279b1e388df960720909e8aa7d10546d6c4de9c8382ca8e6713261a80b76b872911e94466c0874b2c10b42ac917263eced32b46d617b2a2cf69186aa9b5039a741c8cb11ac813a8cbe5fde5dd7dfc4a64f549b7aee7f1436397aa0364a15638b64527afe745e151bb5c83529544321020351ef04b2a0deab6ad629f8dff475dc6f9ec160c47a8ec4d10ea68c336b16368eb62a9aa8b91c471145710f410cf374075e351ae54ad1a0e52e33d38512b4719f4107ffbbed93570a438596688ae1914a8a52ee89f9b985391fd7d0317f6329b794403774deb054cafac2b2ab405aa3e57f42cf29cb51c046e3dae81ab21a14d08a89fbeeea3f84fff9fd9d972619c903e016e9dad29553e47f9a98b3a8580cf1b4e9207091e80697606e4cd3beccaa68f605dac8e29d2248a490a43c94d1584411c483d1960fa42ae914e355e33b5695855406751a97f41e26122df164d1f549395029f62cd8afdab1369829bc118c1169f2354a80e5b9c1010f08c3fb826ef56086d5e2d010aaf6ea5de2dfd16f7ad65ab1eb039653de1a4e34b070d3d0e2d944509162ce326a7c06f34f6238b265378e53285b376063eef71cd78565e7d33039c96fb9235788b43efe3876aa3ef4de631bdab31143b8fd235ae24806972d09f4d50c16cc6654620081d8a8b21c4eeb09852fea0ce33a786fd79b112fc1541e1f4b48010d216b0691532c044bf0d4a59a5253150602ca4b4e16db9aac17104a34e9c1bc1972a2949bdb8c6112f70579082b06b86f59ecf6b22d08a45c935c41305d593302873f6fe67fb115ab7330b29c77109492ad2052c838819899aed67d0763ff4bc3c1246a5a2055795812401a359c108b0a41b7f2d0ba6cf6c0bea65b27bc394816b5f4c9e1383b4a517483aa15b4773a4e04f31d032bbcaaca59e55fc3329620e4bf52aed7c74c8fc6053e2a0a4d174a99f70d8fb55edd696cf18e8942bdc2e4017e7bc8eb07d25c1fce1ba7447f63f60e0c3db9e149a267cbbbb950e8b13159483432eaa65c930179ae8d49d43565403300a4c982faba52043b1475c2f03be6825945c6f6721950131e2b7a0eec957cfd62e0ff8c4e3fd14d042e7cbc209ca348213af4c7c42f835437ec97eca3814aeb400f2368c7361d2e1da6aee5607e4acdc14416841adfb64e968124b224613de1d55c94a0107f4c4a881435259f3ba232d103bd86a8a0608f58d764960134f4e2fa4545ba08b33b024dcfef14efe1ab0c93d34fae15e5d88d013a2708142abc4bff694a85c628071615576dae6d3a10e55b85ce5aa0bbfdd117d541e64a60cf62a1adba1e79dcc7521b46bd9beb59de03a9116468b8149348addb780e4751850135c34ed8c57a6db675a05b3551f8061d0e7543e502e78663eff535e2ebf2137475ffc1c1e9b9c97c9943fa53c5e69a239cb2a3d83b4837f2a3d7ce3f22aec45ee72de57e8dba52686155296aa12037c0e49faa29a46af8226aa126fe22cdf9e96c920d5ff0cc5a1dc267ee9721cb3080011d0e1c52e15dc53023c8ffb47a76c1b410ad1060606e6b5c64779ede27e0427f836cb193cc37612a690553ed6585d58c85a24c2f6d850c22ec8f950b61834083479ab0f745f8b01b1d84ec0b2aa0ef4d5aee8f18c8b1ab4a5350e3ebe6a421c76269fcbbd537542622da6b6d31cb5d5da808411d2d2f5329e5fe0da9de80ef0673451cea0d515a4bea739b9dd350babf045579bc8e61687c7bde832d706e77ee7c149aecabd896a56508ddc9343cefc7e7ec6465068ab3afe40e0e344f6261fb333eef938c61ea952687427019aabe3bef9ce3f13e86f4f572c47aad02a76d3c81d4eebbca6787450f949eee32a1babe1e23dea791769e47689d0b28f6d2b974250fd68526a4be2564478151d49c2e9535c3b45d3befc768e4f7b75b5d7a7a655db079dd6ceb84be5dd39a85b69c7c3a69ed35891e7f7d701a59d508a99410e0fa0d22badd6951c975104efb4855ca0e609b36c48525c6c73a12c15ec1f84f364a376f99419d44354d9d200821197af6cf546b3590cf0dd0d3d6fd685f88d875ecf96d11e2894ba8b9b28d4f8cf52ecf19dbb15c1c6a5f50a43362324582f1df53a22304380b39705d87a87cf7de0611a7831b186c01f2fbcfe513e5a5ccd2b1fe4d825c67e796a98aa4a4f470a5260128740d57325e82ce3a6ccd6b834f3dca119ddef734eec27150712fbc4f7ef58bde7ddaafbc7f85622afd3acdd70ecd628146bfba17e2e81b0c1480b247a231a13da858f6bd24fca2a2cee045b89892b76317f87b14052d079f45a0151463cdfb0440f00bbeacb605cea964c455bee894ef6fb814444d626d5ad22587282d71addb8334c1b62fbc31cfc062c23d98e80d809eec69125c855a856303b86bfa2396e977a0c3440391fda0e1ade59b5da5401e128d222bab99d4a34e04978b1630e5d9976797a0f14a8f29f32b849d0fa415a32356d19fd44af0154080798544541fa3210754468e0c4758c4d6987292dd380ec8bf194640ee58c3b85bc4b237b49dc6958e13650b2ce0c12688b363db2283a2171631466b1e53306ff4281e6ad7250bac85bc7d76220ad3eea36fb71a3732b419709f97864a0d082327360f55a79067a60ae28c6b2105924408a54eae432c92e2b8c2705da4e1c3c779404dcaf02ea2c05066a2035fa5b63b6d6b02dcdd01dde827090223282b41c3219235746ed45707c36d07a342eec0e9c9d9e17621e5ccf8f95da38ec24b842e117c95a36a4469a15c516fafd571cd3f30a0de095419f19c396fa52f2ffb65cdcc408078ea2c70ca760446fbfd56ce7e253b70b221c9ca9e3a125e6830ac50365def3f436381bed9b6aa7b7479577dca507e259cbef81b4264d128566a58f77d7c84569553791e55eb92385dd0e397868fef839dd2f68189e30e8dab8e1d36adc6e480d6b892b8491f77222ff1708a19b74d1d0043619a251c54ddaf3eed636cc10b8cfd2b04673434227884a6850339448c748af9172b4444dd69f67ee92fcb15e33a7716dbe365b8319d2d2a47511d54266e0434ac996af4dab2ab6b54b5a7476f836d1b41dd38fdfdd820e7bdebee69e1e8fd0b5bd57fdf64ca0c3a7574f3c39d77f7d74f465966793c313c4a0bb658d1ff4612be368e2cd914693d2d32bf4b08b4ad89aa47491e0477e17e776c13b855eff977db931e167ae349071399656e42e105e05efd61cb725014a47479d92ed7089c64db15499be3870af633898e5c415125090e11c58c55438681bcaa0c05520323a6f35b6477764d0159b9cecdbee67fde221242c6fe25c75a95488f04e789c7f719b2600735887c42f1eaca0ce8886194b3992b08fabd651e8405e4c21550166e5c9e6e5c3862e18f26cbaa30b77094d10f796cca027101176e034a1fafa286e36c9b17d627d0aa4a60764bf97862eb32c55f2e97165dc1f7af437bcb4a66823e66b265f7153de5921f8253df6c0826d823064d4235b128208e463f3d28920ce20262bd871df8f411cf921b1ef885e85b693b07a805ecb0a2a11aa4277818fe42d94a9e089892ea2855338fb6cec3c05739eb37a895206112f507d6e30c8424b0c159e350788fd224f076e90b245fb2314c80d1c68b002018de2369f5d5faf399596e5e98137c0faba09cbac78e00cc2d3d215b7fadc2ea5d9b3f5087e3126e4e413f0bab5a4ecc4edb62bd4715ece591dc2fdd363428becd8662ec92d0acf6fc45f40ecad748ec02143e9778d46d1ac2cb09f8de912d7db75876518002678cc18942623f870ef1ce16b6288ac8b40e693715ac80abc1b28cad9f9194bf07c2a05be2992c82947f06ed5b17bef1a6f0f4fdb85b23cfd8613394fc7b59cbe16873b2fd7f0dd08b58d5f2db7c7fdc080f5c73f31affd9a75ef124960b0c559de9051144c263968204bfc02a3783d102ef588349278acbf1bf4ddd98418df61c7b50930a826768414eb48bfb89e50bcbf75aa04da97ce7c2aaca20b6818220e66a5506abcc5276b26b7fd4058efd6ec30df92db8b5e8e5a28421fae36cbf3b79f3ec33e94def27b14261358e00fcb0e208b79a3ea0c03239a0dc1e1c83d634a8828f9191cd01979d0c0d83734405552aae2969b981c0b26a092d7ac245b65fc720bc2558284ab374687802ff5ce60820127ba15d9651fa41fc2940d0eb741dbb8b539498d32ad719cd371c5ff72b401934fed2230f6648ce5227b64dad8539d5a18412b62294a6729d73dd90b6b8b0efd11755540cf50b7d4bcb85b0181c59b8e692b194357db9a32031c3bd010345464d4426f8a8f8073985e5a74759485babf8802c99e716c483922c39beaf8dad6187196ac579c17d67e130dc1a6183529e8a9794d6a6b445eb30a72848f982b921c82e84d0f199cff0f8685858d54807e9bb5bf08f8279eb6764220d8b10ed43760243ad938fff44494d418f2083b547af97bb0943ea4d49c17bf76170c817b90ccea24117f1e309c198eab912c372763c361d9703d6eb36edd16b0027dac80684f2cf693677c1f35447cdd939b6e5c64124086cbff628220f7d1262f6c7cb0ffa947faa79fb097e536a696c1647b4568008384004c27749f90304e2000468500142e9ff49f5135f0d1c2dbc6e88d7bd51cd92fcc1d6964cb404f8db997f228b2aa24c8faa0f1af344d0f8ff1e2fd6b12f0413580ad62512bfbc4421cf517a331a5fa11f2aea12352176f912c22d4e9212f4f194fd3eff32a326523d473c98c4e2617fb106c6bc1cd8cb95ef18458a1d408993bb0f6bc116bb267dfc7775a07a969ec95ac90e96f6ed62719c53a13632c54a70b24571403a54b6608b126e08a2946013cb1a4525d8a2ce4274934ca8b7830e791646709e87f35d30fddca2b1bc5d7d2aa41afb9f711092473ed2d5badbdfbd47c97a674121517cb7b049a7f4540529591c51e6abb972e5ba0131cb884da31f462aa07848af066183a74f18a175d5e2e4340a445caa5277aa4a36a67999125236951c52418e286c58837cc60461602d7a738d9fe836348f786d0dd18ef8f7537242a9c0def79801650db867e378d2404b6f500164df66f67a3695c7cd853ad1a02d1332d37ef463b0b599cd2aef813cd1d468e60adf3265f53b0126f5271090049f47f8b718f224c7f3f59869af29ddcedee852ccac22019f5ff9362468c5d8d9eb1961bda98cd01bc65f93dedf03963b5dfd680c7e9ed697a28f88047c3a44b32284646a1a33346a05028df420dfea8391efa8ee54e7b4626772d93a1bad9e46f99181928ab9432e8c62dac19430f2ce55d3a2f679300807dca669843105664dc22012b40cb4d0ea7780aefcad47044af6e696dc3f3bdcc53812a56a88aa4fa61bd0be6501d5118e95eb88c506c70ae1091c2b6c98ff42194bb723b61a8cbe76f5f081f0f3fb5616b2ddfb67150d4fb2b02b609b973e32676641d21e36cbef973eba703f599cd08a765d7e4c0f003c081836a56be6d0a9b74634fb921cfbe33861cdb9803e4833fcf22bf44de1042894ba86394459fc8abe63aa18e09c8c171c94ce6d503d6d954f9fba359fa157d38d893c374486f595fd53162c38e2052611d58bc8e2d5b391b1e19fa5c5e5b56a5da803ce56a9536c81821cdf6c794ea0201c8dbc5dcaad9c6043260fdeee656dc0922959214cb564c506c940c1c618475e41df6264d2afdc359cb5d8df52fc4073595490ef1aeac0bfed00b071303568d501d40a1a90a15553d8aea42b69fad4ec2697c445e96895c97a3969b11c76c99f5b3646d71c3db28ac57a15c40ca006c6595456282c2ec733158dd58bd526ddd0fab3aa12423078d70572aef36319ba140d063b721e43e2bb99a5330007305bb9616671758eabd0637804b4948a3da1c87f9234ae45ead34d30f8d8ca0bd9e7323173a1b75ccec95328b710654fcdb6044c1c884e622480c977c9d371601faab1ea3b41df0e38cc68e01912a8d8c54c419b46bcafd0a673caca9d50a0c809dcf6a3f61554d0c71ec8bdd83320cd985ff17103a09673c899a95abe8fa8a6d10d6a0ef3fd3362aac40c59ed6ee2d57a74f650b9a805221597a0f2ac0a74566e08601ccd093025478847c3007596ac8502aa9f2d10f99d0873dc3b14509b6e56ed52767b0bf61b8653593d8919630c643c888c7b0344b9b6e14373b531f3356b79a29234e6b6bdb6f85104ec0c40f29b93ef5428dc96d00247f5b73c456c0a2f591428f58eda8a55f8ab589a5a2f6c03d834bff36694ef17a475347866ed6dd8f04458e4a0eb639e1454935589bac462cf73bdebed48d8bc80cc84617eedc68c0633580aa162b2d38bdca2bf3c3b1f8610fda128689380bdb0d7af510761ea1ce11ba6e58d59f4f04706e1e74d6acfdb2f6b4c5b0b7fd594e274a14beab45b0b0ea86c7ea215698b5493e7538f263d15a75b54495719b2c12cf122763a42d95a42092db7cd6b353244b03a926cec728d39a56050cf214514d7afff96607be7fb03b187ad7804bf36ed25a676c170b4671e56dabc19329be1a842428cd2016f034ad872ea910d52316e4735f754b9a59c0a1efaafaa33f6f581774762abf61b7fe16049a66f5f99c6653fded74424a36802d5441bbefc4edac7901cc14e8468b89afe3619a19044940ee0cf8e5b94a72aacea733962d1543935aa3178f1de688c5331645f39ea4492f40a1755f070925e9c31bc1b71cc8a51d3684d5f87d888a7e6572f63daac8db3542666743cd930357a0fff7515e1067dfcc6fecefa037e7af66dfc9de1c87dd88559c1104d9cc6de501862d687b84a5dbbc17bf2783cfc99c97fc2354b7184c00e4b4422f9a8d878cc823c783302d4db35ce2ebf4c5e082c8ed56bcf4c91030f8590f4561ef88bef00d7282bfaa48903531a0a91486f356946ab3154e08403545e88a26ec3e553c9de715552175e25e55525140a8e6964a87591895171cfab89a1505ae09f395d1957cfd739afc9fe8ce0c99314bf7beb39418ce83e0c7a8ceb6bf4d7e6c16e094f30faeb879247057cbcbf7c90d49a1315acda9acfbc9fb03d9e2dc05a4942126075942588dd469297fdd2cfb5ad8b231674b417e41c0250b841de2fe226e9cb3863fed2c9fecf1c8dea00798b1d1cccc1da27b0584778d3111d4b615d9592bc10e2d5dbccb99600fbf19d8908be68623e7d17b0170d81a53e01a511772158403734e36ac47958587dab8ea02c3d7a6cc00ec95144b999c5e11b7c444d89d608e5185489c4ed1c62bf004e13a66ce47e224d3478c9d47065b6bc63f47a754deaa8bfb2121e90d1765ba8dbbe83f1d79ffd48c9ba6dafad5519d2b004cddd97a722af2d9b619ee1cf4ccec0dfbb1245f2dd51fbc5b3ad18e84ccdd682077c03bccd6b8c3df1e9b42f40f62185810073caf16b6411e8d63a6f513324f1c652aaee4c04724600247dec210b84efff854f09de1d0ee0a1ad94f8b5d4e1da498b5d3db53d8a50960cd32cfb541173896cfa8c6d20b205a0d0e69bd789d07f91e496507fafb2fe34f9c22266fdb5e3cc130a8ecb1d2443c5072195f3670710dda14466aa2261e5aef7e04ff57e722c342ca7fbdd4111bfae1f705c48ee127f1d3596b31d9a38f2889849efb277ae8f67aa8cb8d498d840e5308c1bc4a7d647f313fba89d8223bdfb6157d19695e62707be128088924488e69120d4fec193e638e9762da0379e4e5447c910299535ea15319eacd2ba7db58cfc09cb7d810532e76865d8985a3422d2a195f53200257603a6c2a4c56f647993f2a07121b20715ab624d365666ea2c59af58b4cdf505cc04a17929c9f8283344dfa4f47fa5c42b85eeac890584c05f76f42baabfeac320a0666167aab1329025a7777068fb801f9aac192eb9d93b8e4c3da2336dabf54083d8a3c456cf04582740d9155bf157d245f9ffd20f27b564216d907ebef071128fe03f263f9375b193e44085adb50862d6b6d84942100bb328abfeb11573590caf45d32beab8616111b9611b2416cdbc2ec62453506adc78bb295462e171ff5a287673734767b69a16b64a37c632f5ebc5cd6ae85b99d6da7520526940d21ecf60dbdec1a670fe5cf5c64b91e0901bc38b806c75acdaf5501db37bf8c329e412e3e2d4d05978be959e089cd654ae4e3534e161dd267135ecae7ad378ddc2098e2fae7f9fed6bc82cdc3db0472eb56b81845863cd1b18f5aa0ed91842873832f56f3a4fbfd45a1750757c27dea080062279d4cf3da06b0a2e406f22ab6f0317b689193c410d0a24f2f811595e55f14bace6789ea5c192a5cb8e8c121841540b245fa25f894e409d94c79e4b7936cec833190b28300144683a98700a3474c8c7a277f007d2be1c1cae842212208dfc3af39fc3eab848df6be1080f27734a5c84c0c2fcbc8d028ea9183094923efee405eebc728e6510a2b777d32b44f661a0aa879935fee7d5a14d2a275b83a1cc0aac79adfe36b14112f19969846013cdaebbd2a0b6629605395e7e86b378ec35851dfb6d4cbc4d65340de165ea3c759dd3eb17a8e3add9e7e6a6ed7e96d9120104d6846ecb891646e4111e9a96ee42bcd2bab56f01fd61baa28856e57f790c84ee293cb49b69550ac7676ee37c3319016085a31a92dcc2db3f9b5bd2716ee441e7f6cad0be0d040007c21ac263ab2ea3a0468c5c07dc0ef263d83e994c7daa620bd3d3cca5768ccb5193d122e55f0505154a80a0d70903f612d93e088f6d25318478caf458d232848af11d31bef94a35a3cf485814352b6e21f81be1ed248b76a236ee94501a3a963b0d30ac6185d74942a44ae78afb74b801956a9e92ad2535f29940351f105738827a753c84314542cd4550394b79d3a718c917b89c393515bf7b87c9a19977bb908ba0dc6164b25796742f87e93ef02ca699c2cbbbee18e171e303dea8d982f6fd36c848d78f0a0984e7bcc29a6ed56bcf9a1cc54de2d80125be0e8063501bb25fc6feb7bc73108a4e5b860c27003597b7856e2ff93832c9c86cb6a5626a3c0bf82b9894de441dd77ef2370750b7fd7fae5f872bde36647abcd9811e2f87dc6fabff44c095da793a6309ffbcad94f5b4757cd0a591827876fa9e5ffc9ff456c1555589a3b998f2ecdd019e8ca06c29ad4fed933417fbd2efb2742bf9ee9cbbba947a30958f30a5a78d4aad42d98ea4c78085b907b6297e06154459f2ccfa8847c2e59090d039b26640cef440de4d77838542ee9cc59db93b176211da69362ef894b34e2c793b77bf92999b662eaf94eed7b1385a7702fa31db42fa23588c6ef00b8ed604e6789d712d8ccd32faa7804a148d37a307942ab05d13be5fba805c460fd0da17cc3d58ce34f78d4ed183925b0751f82fd4f4cfc1dc58bcbd8f769bbe637427cd9f0caded917a9bbef754c0c25fcfbfd31b1252bca218aa46347e9499219fea24718be14ec3542a27a5b76b95f8bc6dfef622de2b4e145b406bd3fb9737a509766962c5d710ca438fb4b8ba9fb3e20bc1f2a817fddb7e22b7a8a76a9055e732f699d75a2adaab059b67b1a821f2419943f50360d4fafa43e23b4bfcbce1786b97c71b24216aefa5ec77acca47fff550acb3575b2bf2608ad78ffdae7a6b46b533deadcdfcbfda95a023d62e009a13b32c7b22f93b3d3020e2d548198e4a968aa067e1316c2a6de0fb4d2e0f493f83a6220e0bb828c8f5bbfeaf16dd8b56c6cb95850a9c838e77f4c83e4feefdbfc12a6beca7849338228066329d2b92b5f2cbe51af888512f50e394bc5ec36e4517f3de249bc844e61c7a466a359554aeb828f5618f74ff2696584e740ed4701fbb5f8b2b942d5e6ab8b21b0a19cf96157a48a0ad16600844fb79cee661542d1a5d838d58f754959ffbd0f7d5a7b7638a46a1caeafbeb0a48cdd13a87912124923b96108142839c60ee7da6dda863aaa102465cbacd0765ffc1ba1792a6d2e506f074000d4ca2c4262734185bb123c3dc35d8ac7e8ead781d1870a29ff1cd5d1a3d8ead800251152a0a829eb7c30bc264fed447e5c2a8d90632aabc5d78afd64b3dff9c3d544310130a2d7fabaae02221506d396bcf3544711293eb387c821a2a4269789870488f144b361d79350aa1be3dc33606f25ea5715e838a5ca80665c8b36ccc91ec19b6d07c8d1c54e8ff625de79218da218b51084d212f70619bce62553be68522a95a07d4682d242890b359503cbe747dfa93e0b32d6ea9612cf1ba78e73670d120e717937eeb95e41c7357cc8ae5771a535a4fdf82c5e28476ae352b7158e6aca158731be396d7bc259cc48fcbb5b05977668f88d9b1e2811970764e9a7f07980e94db1840c5c683247047ecf44c3ceb7862163585a88dda3fefbbf7e7a7675331bf0d7d13219f8704ad18bd2fe060282d96d7efe3e7e6a60f58f0fe801ada45c06dbaefb4658be43b91aa598f07de9b16cbefdca10946fa1f7a0e41f0a42781688882cab97e4b8814888d3cbf7eb5da8704a8bd13038c8f3202cd2b831f2525d27de4cd7420a84aad1fa5a4a1b19bfbce0d2bd56d5f2c749dcd44e5553b3704ea0d82e703d0b13ee894ac341c7387e47416005181d70e62093ff120017817933a056f629983a8d2e1e062f628d45385df9213b1f17e34cab36bf3445df11a94700eef22c064451a8680d8906a428b4c6e82562b6f07e926edc96c22fad9f9b8f7a4ad62f668d8c047272004fcf73c4d4b6a220ead1429443ca4afdb36ea7f092f252ba9e35319e3437949b0484c6ca8e0fac31a2c178e735439478fdd9e0d8b561422f1f6a4915d7b4fbb970b80ce22d66a56d3cc54f051de8bb227b35306ea07462b045852bcd3ea8068d86c51d6456159c571647af8cc3aecc311b2c890a5d5c7826d9c766ff4fb593250ae2e2fd43a8083c8ed0a99462ba67234208e667d1a76c7123362255b363e7f3741130ccd8298c650d40dc60049633e2a5b7cfec340a5671ea422d9d69fba9e1a9a944c3c93eef44042348e933719139f368544ee53322d49b318252ccaf39cb68e5d8ce31b17e5fd8103fdbbd57b9ff3d4ece6d61ee8e40dca1cd0f0cd54ca28e043220ccf37337b86934418c9624cd52aac7a9b527d726ad6db18e39f917d1eda30a5edbf59bcf8a3ea91654621d229a8438c6e7dea584e4bc7ae780b32abffe75a00ab0b10c16d98d596e3436b6f29070e78717593c8dd6b62ad8509c8ad2ab4c8833a534f6652519b998c81d37932bbc0d1aa5bf54293b8caf9cac915e322eb407fd52d16fb15e6106d30a763d2f258a563d4f37919869b533c25d34f9ed97eb1d57673f051cf052562331f6c230cfecf10e265443c7f68feb00419d54fbf3d7a5618643887732ad78ea18746062cd228caaa13d4c6e0aabde694c8ce70a01374db374776f51e74ec4a0dc7c03b514a8fba744f11c6b65c911c3ce71d6351b4e0e1becd8207356086bf2d1a471e7f8929b355084d5a83df713f88cb99a51402c95890e8ec3b15cb335fb6aab0b37f7a0a2400d40abba4772ae281f27b369e0c4c7587e6b5f3b9aa9e96d1491549b73a20917083a480c589783c8adb38d9e210f4d119f424aa2500ceb77802a183aa39e4225ae4ddaebb8a76e6667b438662aa579d1fd0741c04d88efb96ad8b73eac0d2b4a60382fb03e4489a934a1b2fceeb40fc1db2231f8234489de39a24192bb527774a1a07470a3638daee1bac82351033e3f2b1bc507ab4c3924eb27f7014b5e3461980e78523a5fa28357b1e1ce4e807b548cce069e92bd7069963133f25270fbf655184b614396daf8131045fbaf75b3b586fdd6a50274c6603ae944675c1b30cf592491498eddeacf92c42f0fbba49d637902cd0ef6a5a8bc92d02bf477704ccca276e6b1556c8f10db7b9beaa89e9c799842e6b2b972246e8ef5162c1ea41de2d0342629c8b5a9e9e6aad1c1f88c854500ee86dc55b44d725315a79e3490cc0d04e1839c60828132ba1715cf024b85181704a1013a7714cd018e7392a9e197ffd91bbef3e0a61b9c2d51151740fe023596cc89e045e237ea449b05a0b35092753019353dc14b975789733f991f62a6b26276ef74b3429f502a3464d2d2c04d9ca3f52ce01ecce9334dac774d82b82ba9b4e63cc6111b4d98594aab6418c178eff2b3576517b15a2b99f3777ff199c2ec16dad294551792305653ccf00c6a123f48a6c63d8bc502f27076a5e5cb9730f18e3b9c0f9f6908054a0f4cfe2674b26612fbd88ecaa2813f9a95e19281bc25b92b636bba317c621bedd2882ff523710f80f856d87631d5807763dbc7a498a0471cbfdbbe2b308e3fe5f4015184adbfd8c5dbf81368ecb6631d89e55eb9883e77030c828cbe3bd4bb3647a9f2eeb5886e507a05886a0adbd621a264d743de2be8327e0c737e047464d52e3b77df908046ca059784a1b660b69ef82393d8749b4a10bd6c362bfea9d4ecd36e8e22dc4171c276526022052daa0e5e0505ed7aa5b650ec8dadcd5d005a5583ec161c0224e34b249f935e8ca2c941285867ae0d9383da4f69e2b034812a463850d367816c24c1ee82cea8a2dcfb5b65544b2d886df7e47f47348558d19b26b42b2c6c7516ae4841f36fbbf1cd4633dded9241ec8e6f1313bd3e75dbe95a45ed2f037903be7a3fd87f954aa8ee02deff6fa74b44a2cdaf2911fe30f751029ec3e3154aaa2e5e481db81795be1538e7189209c6f3a8eee78b7c23a320c259f8baf002148bc75d7b018dca0776ad45e79017607c849687382fad573e8882e576702770b33d96c5ec182f609b18566a52324f2c8d952abeec7dd862e447b30882e625c83c7b1fc19a2f0568d72ba9b73fedc753379ea666f0b2296a35ca8a8222f9a2eab24cb90b800a756636a38a97d59f0951f939f5069458cc8489e5ce2975518452e0b227c266ad097dd725dab36a8122d5533ed067798096da67bb9f241dffec0c50b9a8f75fe65c63dd3acf206c959ed9cf249bb770473dbe54c72b402c85ddbf78224519b6b7a5ecebf83e6c2b251d0877b71d4a33045d08279b420058c5ea11e55a7002266b4738e37e247531e1b914282bd8de089cfdfca5754c073f7a4820172f249c9ac670940a07c3985d673ef53197e95ab521c1ee37d861ac43f290138033eea494f206ee1a0670662ed6022013607dc01c266ac77b5e9806d4f2604322cb4378e395c9d522fc2ab379a06079d29c4117b101b038b0ccb16ec1cf9b173050479a2eb6aca06c4b003ec46c2d57327efa81ea00d10e915be02ffdbea982440ed125f799d91a5c58c8676e406c28dec3e4e4774ca91f55a1b7fc28a30f2957dabadfff088604d235f035fe791172088f59cb5f9a9d02aa7a0803869d61315ace73b26ba892237f28c176c4063af9a53bfb13c08655a0050c11411ad588017425052b48e2371ab02c48782805088e47e7f8133210a516a2cbfc45a7eba0a4a90204cbf4efe521d105d4a7c3ef632b671014b95c66bae2b23f5c08c5755988173fa67fb65ee21eb71a67a8bf72364d95ae060aa150d7c544129b311b185c08115992536841d9ed0d6842bdf6bee0544393ae7ee60a64dc3cfc3fa964217e8f5212505ed502bc9671f1f34833a9c53caaa10004e010b702144f329e424a2d47ea8677499521fccca57d8cba794691b722255e91a3fee58cc776c8d6894c165d6a5a6feb4fc4ee3aabae8f9155dd09b23de391076fc18d87f9b5995d6e777ff3e668e4b443664e3c6dce0f2a9d0f534b908f97ce0d0469419a4dee38fa3e13bd8ad670883fbc553cb46f0f77d90f02996f847b7d2ac9202fc8b200d319a139085f731cb500720d1044a239440572d200877ed0aea9c68a54d531c3a95e5d22dcaf20449893be6b05167fe26343a80e6388d6c8644ffc664f6aa981a0a5e5594e233ca4a39631c61bcdf1122cf18501801c7a0e9559562a6e884b298fb111e90581a35994a09464cb6cb57167211e6a50be76a634108a5aeb95ef24b4e4b2226ac2113ca414adbfa3474f37947699204fbcd3e265801c3109e50c7af6f2b1eedcea1b1f5eb42ed7373a876f583ed09e81c4109fe7c9a91bf2231c7e0019a6059add7e056eedf904b9200223f21e580cb7eeaeae9e34f7792e72d2626c9c14138f4639094c86fae1c98e10abc3d25e12464748894e966f919ce031255323eca884f24ef0a8b55dcc3dca01fa9bf92c54cb6e36fafc389ed5b51d484d308ba95408d3dcb6819602c2e977e9645a530deb54815dd1c4157c1f257d98ee1b8a66118a1eb258c8c20c0d49aabd46debedc87d4479ebcf2a019ea10495569b2c9884530e06492ca0bdb36c51b5037f14eb9a9be9b8ce01f728681e6c4a7009592785e4c333bfd26aee11271cb162bdb7ebc2dec0a86ad8cbb4f638af6146c36018a729a38b4d8c0b8cf31c2fdc0b1c457f81370672d350fdda811c02f58284450a0db0a454a7a49008d0191f31e0bd5be288b0856c68d8a640b2e8f0196c4da076ec444ddc69b0ea90042050d38b0ede279939a003e8f747163e6534a029d864259f6855a066ff370f673b0b1cb620e58a4fc56cd6d97288ae714207e6ae78fb887cc8769c6013684fd8c07d611790cf7264a0e5aae22d1772fef003cc54815f282a85bd59fb290fedf0534534081b473e3d475dc858141edd56bfcbf825482cd72c2b1de4daeba17294f6ad0e818861c283ca489d6a56c1a00e7cd82f2e43e2b71e541197826bd56cb98bfd786f1e4018406207c5d1cdac449fd502a4cff3d6f61bf5c5ab3f0e6cdee2d97ee4e6233c57c544b0c1ff25831d630291b9ba9d552829afa864b03f212cdfc426665e71f290e7c0e23cf7863fc4248709074a90889750c7a2e443606d109ffddf8bf3a019e5ab69bda7e7acdc1029b5050e1a9eacff761d96d72a70cbfaa0b4ae3e93090085e924b20009a4b806a2722eb85b694ac2184fe0f5439a0a0640ec7d29decc6e8b2b6bba83b1e73cd4b74b49c73306c0b999184daa3320b6cb41b908dcd429a372e0b2012937fb298cbe84aad00ecc7ab2635c3ca17802c01cb0efe6e7395fc44f20d1c4657cf03d2feaca2da77c11af252c0cc9ea3f22fa0274bf91a7684cc94b03c705dc0b9b2a621245ac5278b96f2c11147a8efa3536a359a6d36568cd7ac7672bbc9043c7c7d0a408b2c4704a1a182602c5fe0a5eb55503d9f6469f96431aae0ef203f50ef2b6859eb8da720196ff6c013dcf8f3550570e3fa1f851dfc222582c327f46d14bf227123d92acfc24224e4469c59a623cc9da61e9245760d7b156d88bf98dac160a0fc8283a894265601c5881a164a66e3716c262abef50ad1149447a40e3093130690b7d03113e131d548f3073b1c50722adc0d9fd4b0bd0e9b0a935f6d2b996c7d7883f283bb253319f3f162b29df4b67733d3428f212359fa3aa90135457d090ae06192cd1a0e916272c3ddd4967ba485adc196e2a88e70a7d4c0ec2a095e611c218efaa9f837f7a090fd9a313682e3700680de661208e970d918bd6039b862babdcf1f5a3cd57eaba79afbde64a1251cd983668ff07dcec8c8deab46d254e7a29eaa27b2239ba00aa19677471742fc9db2bf4a4fcdfa2b674182185f015e0cc3813a6000a799b828d3bd2c936fcb3cc5af1bf84cf2cfdc8f09c6261662196cff18d61c1b89958df3b95b417801331bcc1658c77c823e313379d0b9fa11cea1df511f13315cde846f9107ae49c3be6ed4045b9100c848fc84f319f9c49b7b81d8a049a7186df0ffa102f1233f4c3a6b9bf8572821e0c3b2fa4abea80dfccb12d709335f07cc62f2078af9f601bc2c0797783e22e984b86c5edb0a8f7ceee2e161524d0ba65c3c62a1abe319dc9f7cbac1e43e173f1efb259e0f8fad79638936e9a658d506868d9898fc2db1c93463dadf7905f97536ce69aa697d4c0194b538975fad354268acf9ea5da9ecc3e9742196c2bc9ab151c28504555057caa0e84e632debdda180bf082a70e8786eb6ac4118804fd1a8dd5c7492975015e263f6e7bd82b958124e6e77669b33246b2861b21b5526d91b0e50baa99c126a854bbc5123e9a6a3ee1723f516f1a8e6c4ed1a47b309b5614384c020a0b1376515dda04531baf33f4b9a2d878f9ca0602c3e11d9c1d0efc2c8db7c3ab2a7d3ae7cf209acac44c8cdc3433229aac67e140514b687d4b75afbad4c6e6a63c95489c1999c0be654486c8dbc86543c52fcb75f068f6eeb87f34bb3980530c723cadf42e3d8683db7e26c4386183db51accce27be413c1ecd05c0afe6ee9f6d00d217e12b4d171175ca241e25502c128568f43bd93444324f13597da687d68900fc069df02f8a2a63c792149ce91cc47bef57ce05be817475f028b6ebc79da1947ac92af5f93cec2ab963e09d67f0aa66f042780098b757cdfced4fc0119a2b25722e02ef973c004008e4c735195e334733a9958b4c69b0095b81c65639957a421f4d55ddd94c845e00a8e1959d582657879f309b4a416193d4358d9a5015dbd4ed85dbcdfa1697ca71b9a24a0067a6a5052eb8ac91461cddd92f409314470c20420901d5c804db54c2f38cce27888ce549ca177f69506aab0976a2085ef4d0d67f134a27f0ff93a43d3003efab8c83e68ef9bc09822e5d7c7ffa1cbdfcd0339455d1689dc7b8587f63a02d5cfa0b76cb5c51a4c6902882ec5435f1704a6aff64a54b291de2751c36e92ee8e150cf18980ae229b77e0629a49a3a6848f84a35cc676ee9a0ea84769c4ad89b7f3f592d9a0eec4091b4089db07581e385ac065702a7181553df7883cfcaa55f0d4aa3d1e116a91072295095e54dd3f4caf82d406c8680bd2d4a6b240c01f016fa446fde146bb08aa1017abc17d6813c719cd48b0241595d44814ae586a0800f0c200055bf6a8225a919537ca0f7b289c335c8c3e911bcf3222782dfbc174f331a5ca2f11fcc351df2d782ff550c54badfea691fb3382604479b3228ae0eda8167de80dc70f1d1bcd4af6bdda9091e3fc8138463220d440070ca1ecb1416a027974246411b890b44d203bcb2dcda8d05b88f27fcf8c557fd89baf65924dcfda9d0f67ffd9721cdd9fd469df215786395c0b0778e7719afba8bb93601d025cfb7aef8da30473f5c1bac6803cafde574550e1cc1f428fd3b3d32b70f3f59841d39066dda2d0b01ad3267ec4bb64781420af695091918b9e4a1efa03751170a4ed58a1065364767732f780f0452d4f96151439561b1460e6bf88588448b4a82fedf6889deded81e73dbc1ac2776b29094d5b5a73a0c1b65263a0a2c487ad8cdbafd47cf15e1635112203d097adcf26822380a09e0d5e7dbfa7b6644c85cdba240cd95224fb1fbd1bd238d02d09eb1b572bef04b4eda43745d95fce83ca8669b25cde39979a529bf8a5e67207c233a2f0a8d39ebde7bb7a5b11573ec4cc60caf40c11d52cbb73dfa6df66c517450baf2eb7ee0135329b411006c126bda559ed259eb09888b1e80d68361654ba807fd99d6008c957924864f49c5413a24886eaf4a2068f871d2582356d9b733144efee4ff6f4f008aa7d5f8a99cb3b09afab0fed3a5f74b350cbab9af0dd2d09cf5065b2bcae7702bbabd609051968034314667d91b4031166f185639784e169c52ceb0004badde05f09993643ab317a2180cc3a1b05900a427d7d310110c4708ca620a526044048fd1ece88aa95008511de532ea14103998f90de2e16b682ca4554d8a1c8f74983cfe99d63c59af94d00c15ff2cc0ec560d8c994cb0dff4feafd8a70358c251a41e0be706d32e713f97be341ee25701465ae1bf0b5b23d7ee0d3ce669019cc8379187462c9e7c095dc2a5a4d629e1d892e5423d4c7d6d09b87cbd95ba9589a19172e03a9effbe32203ddc182946bd5fdfb6c341d3081fc68dceb2aaad59543694d6a651d8ca984af7a0d8f15d77da06fb9272a36473ed92b403edcc8b8c7d1c9b0e43e9a4274a10a9c90928d4335d5f03e6736fdc1873c9a71e8d4864265beb56d5acdb9dc4f3bcb2d3c69adfa97edbd10985fc3cde03017d2c6e73eeae27132315cee9e79abffcd26421326c2999186cae05164ef25eedae4c0a0f4b7aba3b5c1f7f3f35033385e4e8f17615b569c63e3b0289fecdab659435fb5e81cce1ebe7f121abd6a27b3efa95b80eef9b52d794d1b0fda92a9512c42d3e79ff83dfc3e48e300de34ddd0230a796beaaef02006807ffc4d41b1c98b0a19fa02d440221200dc540047324008e96eadedeff14142c134dd498f8561e8fa95a79c832bcf30c09f3f6c04ae63b2fca80bc14aafd4804df238b0a0a8fb135cac5b498815b92f0dbbdeab2ba46a20508ca601db22e0db7bd076876b73436d9553ec03d4031b71ebae4f9b21ca3bb4ac9c57e429ca77118d49552861714bc4bd38619f3bb5674c05e3d477ba62a6bf95b62286ae3d5ba21fa59d79a781a7f1533b3a08c25cf7da8f5978ea68084d300c19f8c338025eb812ac8c1737db8caaa6b4d704a7f7db30e9bb75210b2a21873e5bd05248fa2d2f40e5fad35c2cb394829c23c94da2e573db7264bdc0023dfa4f99df1dbd2f75e9d0c721062c0d8f20754f3984b971993d703bffd13dcccef4e201b02cbb5b667e33905703ccac9117a603f004ab17f8a1a982c651259354a20f90ad511d254d5a1b8a001be6a0b606cf414581d22b0d3628a5bb38308b217d704b235cf93f6780a248ce36acf4df4fdd1079837de4be70fa7d58c8c78efc6e72fbb97796de928866df6b9b247e71ea3244c7c9387a853b909320177beafc756b206176ecc2e3340cf37c5345f94b360dcaf78e7d3c5350f2471e590ee0404591c4908a1ee034bdbe2b07b5ade3f4e503aad2b2085598bb1533948ebef11a5965b7b9f6884c65ff4b800808efab75e05f60764d2a2fc7862d0cdf3e8371f3edf3fd1530d7f88738f1765a8b897e243fff22ba1c06078d4f0d5edff154757d32f7002955ed3770c25f42a164e9a6fb63b97c83c192ae756e6014850c6b94d1e0a946eca8025ec58062de8981f6f7807cbf62db29bed10b29daad9bd1af65914c9f9cb21fd023fe73ec9907e8fc7b6a7027983bc7b679df104f1a42b09bacb151638b8b98e05a8aebf28d245c1f10d2294541a86290e41766679fd5f22e6dc8af2f74b09379c4d578a28ec507eaadd1bf23afa16914dd9d8ae311e073d8abb8cd08ad34f75eb3c825573131bfa52479dc335646a84c8c5e2c1c5dab52bb3d801c8c6189464f2c5b6a58c6bb0f8104baec29f58c58747d83fbff7f1955ad4be46a18ee33c0af5993ac7af33a7e4073a401727d1c7df04ae272725a5ded1a68a6c9699e029422e8a0c49cda171b2615ea01ab17c49f2df2f9ea688f06e67c9acab848ce0b30c45f19ccf41e6d7d06bca1f410d1b9f3207e62aa9b477c51a10ed52c110d4a73e6e78dcfcccf5d9c76421f5c975d39e497e3e2f24e0cc4661186e4b73fbf685db6811304ec330fa13b881b010f48e82c696317f435b50dc577e3c9df9a5d076d610f413967d8696e4778641aec9d1a7f105f0b236acbeb624504b1d6f603351f35c6b34f17be0e73a2d9f68becf60b2e822acf9652c53ad63adf4dbeb9a6fc7a7de1986f55835e57add9e18482a840634fe4cf092a112b1407553d0aa00a8ffb20050238315326428936bfb25d7e1c572af97bd3e1129b783feaf4bc04518f4a9e3e520594b71f8dc866de1f539f25dce4d5e7240cb29948e46ccc9d3274bfc3662fa1c5c8b722ab99fa4c30fdbbd8ab0fdf651acf3d84fdca70bd139b9b9e8f08513766642c2b28eab891393a0ced57c163a83e0c9aebd2d1007c3375dc5009ddfe7a0340c5dcb51a52b87588d4d55730753fadde1bcd987ed4848cda66306f0db344520437f5232921905019b91d75f888f6f760251827a59e0058d7c6137cb58af4c7acbeb68e4517f26bb15d418836bd930bbd51864abb379227a75b6d974313c1a8ec65b0560382e737f83068bdf718c7ba13d16c47de8cbc671a8e59ad55e042c4b6ab8caf97c8224224ea62c5793ee723e5f9480b99c2b17e78b8c3ccb1e9952917e80eee1d630acdce437d55ef27285d9cfb02676c2b09e38cb79ac9584f9037b209f67a3b0da4171f7fd50dec3ba8cab134247a42ac2f89829ce559f7d28f7ea19db85a80c91b275528d84a3985db8bc167b17963d8a2c2cfa2785c42904b012ae880740a018eaa4896eb3a2fdedcb3caee2469ee850156974379bc2ea347d7ca649f3adeca784a0fcca8f0f6252ed60434d4a9e2f0c2417e0a7bef3d6bf8c08dd24874e5f4ee4ec70b4e8b67034786a217aed420e89e8182eeb908f23ad84d71885849ac6c355e21a7ecc0becf65a0bbfd630dd10e85491a03da83c9a4e53289767e9836459b701eaa25e9ad32918304f5e746cea433b88dcf0069a9265ca4beb23efd9faf6f8f32f98ec04cb9ed524059aaa8a15736ea05d4aef2024e3a16f1802930068b88f2830fc5685dba5a16b465ce12b62b01fc34687e09cfc726f942073959bf69cfc53201f990ca5c3d5d2e316081422380ddfa8c2167e702e5c107e7b3fd10c65e09aca925ce1a4f3963c1e2d65f5b2d135e351cef1f73ff826dd2a2f6863ec910e70f33ba795b385ec08fbc4cc1a6088daddcbe51b27d9f4b2e7b64eb154ecee46b2e4882c02c91931dd96d96750ca85bd89b90f3f449111252a50837bba39fb8a74b28891398c43f187af9e8721e7337a3bbb8cd86fa36cfdc90cc1e8f4e0de4ddf7907d370bef87ce1d515b66241775dbdfd414c737865c5a922b28d5b614d02229f4eb9966baaac556d03e96a96c21b2aa9e8c500bbb52b3b4a0a34ccd5e6ad0d53ebe1cab917f369c7d6012f81f0827e50412d510aa23d88b48bfbac9c4ae25ae6cce95e8af75c4d402775b943ca3248762c24be94840c7b2fff6c0262b207f2f1470371343c8fbb8e8ff85603d1b9e9bc58d86489242c794d8c248757dd020ae9643816469885ed8e062673207f4b9fea69c7db749547276ca70f90ef6a63df34871195a190dd5b6fb626aed8cd37e81fbfa7c9d02d93e6b7b04d0ccd62c12d9263b4770e3e1ada589523ee704534ed9bc4fdd3c2411aaff119b83ca11e4065492c4e199aa3d64c0c8276b4e30ab42d8384426abea705f60762bcd65a96d52feb3372a131693c666499066460f05743abe80f50304dce67402eec9e6e5073f443807ac7e9cb50a20e1670e513a05ad885be8d00170127dceaeaab87a00af35eba441d1e8c821111708fd3dc59b229d02abc2c366f3c0189fe8befb54d35b1ff5a12ff9b0a0e7dcd58d11ff7e5a6783f80d71ed17a256395f0a656b4b08ed280a3d2f984ba581e06f0136d87185e0a88920a3aa8723d5ee08857c5b73cff3de5a8f3c875c13d47c86344305672f40d58d79e57bdf56fd9c698967b5950adf323ae8988e435661770461f8f7bcda7e52518b7d33c6d00d9be294e925bd5ba013e1c93b4570c9c9e5818beb37ca5bfa21f7e8d6db2709797debadef7ff032ed8ed98e25b015a6bf4f62612085488285222065d7c17a68b59d49acd48c6fd0879369aa71ea324241e77a089b675883410d040ac09248a8c20669bf9da954f5ebed030b0d7b1437e5d3cea27a4ea75d2310312a2bd3cb7e138a6153d3caf3285adf9894107ad88ca93da9bcde98436f18e730ec7d8218a7a6dd69adac05365d7f4056325a782c59b39c22af7104babc28b0e46670d8b0d9c5c667cb36d8479182a0bc3beb99718590f81632570cd1a29d209e67399800f070e68dd41178a43ba9f6eeab25acd92c35966f2eb5bc635789b8c674e92c201b55cdfde4b55db81a309161de55760972b20103e12af66b3a6f57c2c7807b0f19634f961c4deb474a6540dad12bebe55944decf62150113775725e657e28d0d0aec62526002ea6fac2662bc91b13409cd07741fcac6b14ad4717f47b4fd954242bd9846150bfd231aafbf051d151d85d7c00bf039fd1650a6e638147ceb0d532b081a2485c77e88567346c238212f7c52ae961c49bce2e524fbdf970bf7a8fec2a1b07ab77068d9b26c8691cb9d57e9d5075aa33085ee2d68e2b88e035b77cad01f5260e4df3a2c05a55a2c50104439c07042b801c777239368fa63330520c49c09442a0314568e337db1d192313200b2ed21e03a31178c13e248c057ddba4201685460eaa61fda2ef7c42b459b16aebd3ac0ef49442d4b11b54a0930c4d01f620c70f12b8d4fa05bed6b652ca41907f645e0b07f51763237829dbb654b3bc67b54117f4b11d192365b5374155740496df7abb85e2c87ff75457979bd21fcce30506b50e4f900f93d9b8af893dd8657129945e51e8834220e2e57aa028013bd1de2e0bb619ed03ccbf6b66b95d1a3b20d5d1c10df51d14244cfb5a5c9998805bf9332393aa3712c026fb5b75f31db84eadaa406f4e8a1d64fa8d636df9a305875e90a9823ddaf674a39cc7c453d6281a1df1d0484deb0bbfcb6924dc3a5a6170c02cc3e854b174dac7058d76228130472dd42efd154adc4c1abc6544d338afab30f959dc05e936b729a88f68cf8ea95028481d50f45cc9f1abb3a1e96fb6e663445945c887fb0d0cc6fd3209c6c0b060dffd74143d37b14971f4d90d63b48dcb5dfb6faf706641a378798c61f1ed6ee54df709f931748fc5d1aadf99646a7170e29f910b99d2647d1256ff875e9073584039310364733307fc06cae65e4c99315ee0e1fc83208aabcad6b4ada04064ee36a1c7f11e3fe84a82e8148d7ac67dd71885be281b099883722e9fbb10f21be98aebf159e784f9656be383e2bed8cf78cd96815aee61cb5100dd7cac1bd401acfca101f7d80084dc152d4f6d1bb3ae5c40edd2fd93a0f58f05ea9a436b33e93b380295e26a824af7a6deb59badac76a4d0225d3290356ed3013a5a3e14156b44abe23625162bb6a5529d72504c410ca193d0327059a37e96377c872c320eae894a7e00cea0f148a6d4e92935c3e5391a5cc33c6592915c3956460949bf341d97294e71b935cedbf8adc428d9f0db0b95b6ab11e5688479125c972ad08e83295d4991bbef0041afb31d1de7a9c98a04615d15c277c81ef32cf6c3f727b09493e347f6083e47e3e85b8800e7fa0b0f52f88820ab591bba210a484b6dadcb96c180570e64f5fd0c1f7c65cdfd43d9e7fc01adab871eb2036e8c95dd42da56404275638f97f28566786f251b3917ec4111b2393ef27196cf7e63c80329761eb388cf1eb0488d0bc6600cc22808246a29bd36757376e22c5b2b5c8681f04fe215d70b0b2aac765c9773d9725ba7d52db981990e66d552a33ecd489d7baaed7c776144ed99a203d1d64913affda1dd5c992624f9f9b0d5f1f783d39b4aaaf1aeafc07f94acf86be0937259dafff158555134ef4d510f335d7764c124470b9cac9179da10be0cd49b66c0d41da29a9a80ff414abd593c7e1f19ecd639ea9028dd382544451af48b0db2baa0227ea9ffb1847355eff84ef6b33fa3e104802100fed15f3ac5887f66ae1aa500413223b320b090a99e677ed5533b8c6d26022c2843af5559a11627a212a00a3338469c273727cd29d06abf26445491b208beaebe485ad711fb971e7295a2f41d55022e3e3b9ca3b10deedcc653c3897ea362d3ab0aecf1811d0f506281f4b36bad1865734a7001ed5c84705d9987160ba44a9ff0bf3509622b8b8e45eec202c3ae9932164a89122097ac94769dde72b1ce20682a6d2cb40105fc5fdd7fafea9e78224b64f96cc7aa2c429d09b87c03709b3550b10a396c992f23a991deb4cd4b1d0d7a572b6715e666972edfc17c77b20a4863ae8b30fd6504b903e9023520689700dad3c506aab02837b2b5f620d4245d84e061e25ac30b324d8a9109ba76f673e6e34cfd9ccb337f290af8c6ed07c145d2754285e00bb8289cf9546207b65bbe5515bd8ee96d068bcb7260051017c5a5cf2803f1011e23a3f5c168588a425947496a56e7256fec1d5c521d120c9537b7108e08c1670e57eab36e25775bab4cd4fce2c55a090a15bd2b7e92225e328d6fa692ae95c8acd6576ae4383764021065159a3dc166a23061b82d45a62a91597012c7dd97ea3f25df10dcbf9cacf1251a8313be977686cd478c2ab4232d28d11b2ff05f3d5206f7634358c18cce95b03cd98d64d815ec9112d1154567901fb69cbd9cf12cd6cf76a8534ff0ecd6026b85c6d39115e6d4dbd3a1f073a432e3108365a0370b111a450864f15fe76d0ec1dd8a9c9cd86816a28b2491415945895648da427a0e8d749c52b0212e7541e0cc08f152963f1db274d06fbd07984fce77bffdde4f43b7265a6717b6a96503a5e285e529b0ae673d5eb5616635a8eb185d2af15139b925ed8f6db33962dd01b0d37568bbc0b3207e465628f03b76f0f1fc79f8391c0319030c5446cc84fec04e14906d23354954a4baa5557c009aaaf7e0d01ae9c92d5b2222986208275fa98a1dca206c11749f5cbe83721d0d7a05caa808afe12c905870d324bae6a351eb9024239c7a01f8ed5c3b19e3f41f472859849420c5041c612aa316ad900b6f53cd0a03116f80f675adb9e3f2bb1542ff50f08bc438f30e96338b79a872a04490143fb1bc1a906b57820a2b47cee9f18eec465e4f641f57a8d150ff16541e62fa5a7e4b43b24bb7f6493f61e6f043b432546b8541dc86d7d93b343ed253a7981714d5d2410d5926b10fb15c425435997e9e43a4f2a9c6d517a877e2c053d245438d98dea5472963970397b14c679f26e5781e0d3899352f5bae0226c49019bbfaa5ad9602664fb7daee279d813be045f973276b30e5e4a608bf2115f23f926399e85943466baeeca400238c6969ce334a59fa84365cb0d08bcbdce22305c30e42adca7338470a67065cc8bc9540e1094d65052464b83ede6a3796dd1cd89a1e5ca27e17a4737a61065c1ac4233b6d74e9b620da9e04a1365da01a5e766af7f3c8ba345734c7ce06b1143af1d1afeaee1da75ab57f37fe22b77cd709fb36b0fd68b691188d696efb27e81176bebde8b0aa9083e5a96e7710d8310fcd74b6b9e7684c50b7539b64a4919053f94239a5a19c12b13974c9b80c3459cb2e8a7d43626d3b42b680e300d6db052cca02df6183658ba5daf67b5b4bee1594a0754a2cefa712b932a759648709f8752cd4ab13dcb106009d64753dad8cb85a89da5da3cccb7471bf8265e56d9d1a08d1ba719328954d76421b6ff7da449a6548a6f28580a1999018bb4c07848e441a6122a3999509a8cffc9fb562ac3126729512fb48591a385a8c0113b656a213883dd295ecc06dd8025d25e0a437a7f9d26097f901d034aef95b3732c19dce3a94f27a3b27791daa9e478153b9cafd464ed916b74fecf78f08c469820c9d6266b6ebfeb00e2ec181eb886e4ac7f0e1b4c8304b4eadf6c7e55cfcabdad09731bf8fd3ea12e014eb6198720e85a55f06c0914ece0d129069796b3d8ddc147bf42f92c4acaa692426a74b6cab29775ac3e01cee498d008f6d955d2f2ea6f8355f622b5ce95c4128f1e7283a1219ee247f5c59761c5aa1a6632ae41a44d73535b108fedf5f83030e31e4f5d5e956dea53cecb061bb35d694bbd316427831ab718e877664f9cb3c173cb54a71d614f49e2eebebff9ce24f16e8a2055b447c937439d2707d19275c53037474e709611ebcdbbbb20167a212b9a2c21e48bfe86bbc22f940b49d9bc8915454feb8c050ee8a6961c8e6d30915ae46a31f2f241b0411137a9200a6d5c62af0f5438decb5a93bbde7707fd19c703d01449e4db8243976a2431656dddcecb9284fb5056655b6559280b809a4704733f364b473a725a963f61a53b567411be0c525a4565bab6fc9ad0dd02ee61e1997281a39c44f1f16c2710f88b00fa4f29ec55485a00e0aa022bb9f08163b9b20f521835948e45bb3eb8a1c7e9dd91f0e0f4fa190f51b0cf7e57044e039c8a02164e2812607ba4fd758eb3ce2080fc5420c9ba5729a54604c6d710bfde6274fef4c45300218d69ca351cbc0fd458b68b31a387cd0c6e89ff68e82f03318f383b2001756cad46ef9a130c1c18c055add16ca8952b1405b085ea1ac11fe8c037eabcb67db7158471592aaaff3a18fdf126a2e2015b19af7cc0b60a467844e7c7c51df6d5ac3217ccf0e011294d2399ec750e197649125c4de0e1ea1bc3df8db3fb9879c0e25ef2f6be9dcde52c320b2682a89934c9e24df6b3d21e86650379ea2d846d16ec87bf1d4069c15b5fdae915a92f56fc823d310066ddced90650c23737af09e415ce1533269233ea8c387798ea162660510042b244da44a211017e1754392afce3df053f3ea861706978c18f16f78d66c127ac672c51e09581f4f21787c56b82c93196770a6b3eae6c724c1a066a668b3818523806e8d920450ab3445523ca7419e13cd7b62acf12cf90a34ef92c510482717bf4fc7e8e9425168009a30b2f294b3cce5cf7bf8364e84e7ee1f1bded400d4ac9d161fe6f2a01db8c9d1d12308eabe42b8e043513c89f61c42754eab6b3444a3cdac71a277ec3b3e587ec56b616acd2091256e9e4a6d7ccddf1c9d273c0485805e408c42eb82488f08c9e0365a7332b61475543e153ada5c607259d58904d8a449dad3df0bcb8442113f0e6fa7ffdf79c09572af46fdc173ae0e94f329f4096f89d24b8b1d68f3869172cbb8da862653a83154fbbcedae9fd44090e2499b996e211c5407de34244412265f1dfa92ccf4190e8513addbb03242c5bb1d780af9e5095d6b75f452f1544cc60478805c13bb105bf428b5025d61c4334663768000eebbf0d20fc8e444f12eeee602c87e44d32d08b3de4d8bf6b00b10f74b42ff77bc6748b89700c6ab7ceae718334f70a6c552face87fa4a5642b16f47983ad76f3b4d1b28ec6e70e2319c75a0850c9c27eafab10dc8165297d5d57aace64c3deb7020634cda522f06b64ba7a76e53898abba0b4ea4cc1563d62a15522773f7dd78e7f0822d63015ab4560688a30b6c442e9f15d54e82a94914d434585d0f8101c95a691c8c3094b26f547711fa7a9eb50f976f656f753bcae1f226b723d51fd9d572b8518fb11b62dfb9b0c3f056eedf31b53324a4601850b0b349c0fdc83885fd5fad2a6519fdf7948f598ec84b6fb093d747dd79758463084285971bdcc2f79f9e29492d08509fda8742e5506f725925136844791b4973dbc50cbb587c4f5212685ce0cfbb9fd534f7e0b3d6daa8161f59fccbe542c5e3c1dc6441b1ce206b934928a376a60b046d73802042401de486b90be03cff528012976088c8c333e2dad180511a9b288d8c677710142bdfe260e5561d7c0351a43d1cbd0099c2731d58cb30406b95ece731c439ec12e942843cb32c32affa671e0010bb0ce05b199fc33d9f0c0828fa4ee27453b28990189ca57c36d7118ebb3b5d23825b9d0ab895c887afc5148b0c275f0f1b76bebb9b0064b357550617eb43532d878eaa63ea0a362729e19a7d6df1182b5994e5b949f5b4d91bca6e4e880208ea1c0393ae399f207d971bfa1394eb60180ea9db7cdc638d26dd6b00da68713a7907095d0960dc1091b3e7dcc22e679e07b625f82fff1279e9bb11fccb13f6ec6d174dcb4b698e4e6c8e96152a06e79570d166f3c1cd9eae0fa9305830485248954d60a9619afdbdfdb0e2d467d5cb9fbf6e712ed859f75a7ed2278642fd258ffc0d63de2d4b5ba23c8f3e1b325576b73b2c508c85f6af1e73ad18027b37d4ce4d8a4f2c3be1647fc0ba785a58f8e0637939204e1a0240a7aab21e04ba105c523f2a63150e5a23827b6737031383d39d7b04f6ee9174b55b3e30a9bbcea84d22a15628138ec576523231202f58a89beb000c757948e823a03b9f06c8a6422769cc4cfbc0d24a9350ccd9034b06f6a05faa0ac9de4b4a23df51eef98fca7dd8502ef13893748e031b8ac2350e0441f18cb4fd22b0182ba07abba88ecb9cbe858fc519f3b08267d47d788104291a01a16003cd6b3864bac004e0416203c5a23e1f84ed68cbcb5b18dc3f79c256df741b0b5e1d668da8f40e52a06ef8c903bd6b866aeecbad9c2169bd5640cff2a1785fd9dc717ef32e083621e573602775fe7465470ed17181524613919487c8280923e32c7c183eef817e934eafdc8a603ef57322266f50722534c652b1f80a4ea0e6c548ab08638fd6b686ae12a857d41968c39c8642348e1c1ea58b1846883ee460e5cd16e98fe4448680f1542da7b27afe06a4aa96b3a127f0269bfb38f703a4a44a29929f4796c3f2c733a8ef092c9282d27e08c6ac273c7b942fa632fd322c3bfc8d79c4767685e37cb3fa4b67b86d8e7f66ed91d19078e05aac499c7770e0c0eced351b3845e8f96f1809bf1151501b308297d03f07cada54be96979e009b0ceb6d03c8fbd865274f62e55ab13ccea0f38b804cc3b042f409c1342c5b4f7f8f16eb931f77d0490fa9622c8ee74ace10a17b96e741e6ab5f10a9ec1ffa7434bb54ae576b6d1709dd0c99ead733345a8f0e98fe5cc3d214062c6040717cb2502bea1ab2f4d41e6b2a999d03a16163a82f3fbc412b851088420f31ddc340016e18e7fbcb26caf0b6b7255383b8cb034454d26307aa456b56f11547f5a5d0028fda5c3095443c68956121d3d9616e3cd40bbc6251b624b976068a01579cf9f76963110fa67928a5af8f197d8da0e6704636f37a5b3332645b551108d0d5039899f975264cc175ce70d5ff6a0ed440f82501cd24509edf9241ea81a32417452619bdc6aaa8512db8a32cad8e977dd9b4d7cd21c4dbde45cd3ab416de5ee7cff7af721e26e8cd0b41c1820e5678669ae0f8e8d02a1c545abf596daff657068ce29e7f303f0d3413f7ad291040ae5ce3b180a80ee03354d0c9b5b58fbec517bdcf683c57d23505db289dac523740003f2785c7587f57fa451bf0bcb4909d3f4067f9e34566113e853b6b2d7a79b5c169971de830cfba841653b73e63820d997213cf7e6fe54060e0c5ef4a73f8f640c1b6e777ebb0882e18b48480e93696d8819ebae80739c31f4386ed7361737f75723fe0c06041057f1bcaf82b087e0472390592cffd0891777912001145a5ae432a0946ab3c1ef4feaa48fb38fc7a989f811a8cae22b5e2bb2d6d18d168e05c0e4b81b5e98881364ba2be87928b258e9c0c97f95195cf74f1d19e0169fadbcb43c5082f801cb6ab93c2f76a8d2d70e4897a29235164e0f804d1743edad5f3f5aa61a9a7d6d8982205c254def6c52bccee7a32e33c0442675b0fa75e185b552a1f7a5f493d2b004a9842654e69f9d620afd1c78ec60e12713eeb041f91d4ee8db815cba8ce6ee415d20a5595f5e83b930f40096e4f158bb0f469f7d01b7aea4b1b9b6c879a0ccd1882f42b0addf7a1778f62f88cea839b30ec0e7ab2a3b5d6ee17facef1b5bdd1a757e523b0dd71a7c45d39bc10d385d4f805c1a7d0ac556ef4f8ce3f5bd23790e7912517be41eeb567a0bf22f1318e99845fdf895dd719e1d3df3b971774f69358c0d708261eb4b3385f0cdc12a2c21010d9bc057475993c8bc90bbd291f747bbe54e542c42d934766c5185e5e0462965b03c71f28f4bc524f79ed68233408b55e3a9e18124c44bc7cb4c47ab5500a06accf67fabd9a2ccfe12abe606b01bb9aaf02cb89fa1f91bb885db360dacae4545ba59a48e585cd5a56fc93a278f48a08fc4c64817a30a239f6ebc2999c9cf7a8339171f40a0f9e8826ce665d43cfb346b34f55a371803034d622e99e38725c1faefc75e7f2fa2ffbc9d4703833fb48869f3e7c164931344c7dbebfc9076474b91b2ce73472b091aebbafd92c2999b1a8cbbd1358c1d8f73bd3cbb3e6a454602644b979c8612956d650ab9c6d3d484f46c7b3b40f0694bb794de1d2248f52ec69c9a69201f7192e86f420326c720ff1a2106f9fd945ff5b7db24fc8720c51ea39761109523d5479f738b6ccee3a40541ebbf5791058df1d08c4064094b4b38d8b46394cbf8c8f79cd1deaac0e113bfc51ff28a0d14ac3df4db2c0b0e4d35bd222b7b5dada9370a3695bfaed10c4053cf3823555de8a1bba875a8c5ee54811511ca75afcc3cb5c421cc6ee1bc38706f46b7a2535356f3d7c260663ae7c5be0e2885f6a092915c5f7e438ee1e5bf6e0797e44ade3be4033590608e4853522c7f3af1dd2f2eb67e39f5fbc69e01212630560a59aae2cfb8d0dc071d2991861b525c415805b2dea39ad50263d340256c8a1e417a223cba34064b3280cac1cc87a62a0d605f914bc45e379ee5179dcb226b935cc9d6e4eb2d497ebfe7f51b15d1cb08da41581b7eda0e5ad354434ca063bcf4313c8c1a77c82e41ba2c4d22332cbd2aeaf6a46b4d39fce1c6c74af1b7e24a00fdd37ff079c57bd3ac183cf4fae4a5af1fd590f5815aebcc131933b0f4e09e297ac52f4f6454d67c0daead81a6159839755e5e2c1225022033e381c68b3b57e8687f34ba8b520381052902041c1724f1fe3dda0c65af58fc729ccc29e71e4e189975b5416916c4863198cb2678aec0407dd6b1ed509a11887f4e079e788e3efe83d4765eb7a0ea6bf4bc83ab5a540974417085ddba891723862448a4e518033f322d9609186c164966104b2174eb5eee653599de537773f323ab0b6c849858484f73134a7ccd4b9492ceae9df112707d606df215312a8e8e3ca2301f395e87969a9e79496cdf2f94ea0adaaa735bbcfa30fb3b0ec3e93e58467b22be93b94d0405d06e9ffdbcbe712bcbed783079174eae60e14ceb0e29c57c0eb426259a5c51f162025443b68a1c22a117397253e995baa05967dd5c3183f7e151d92ccdbb3116e9f1baf1135e5d429bc949fc69ae7c2aecbfd1b4193f6119cf2e46f2ef9c433f98e6072290f1d98c206fdf221b499ca2149479609d082f6e490d381ae8f3867a28e04db91efe16d6eb2a11608122d7de61281742752ac02d15c40d595de681edbd7b853fc92f858da0491cb50be90eb60480ca9b1a6d2ddee73b052ef1d886197c292d147b8a59fc94883998eb1d87137e6249067963ae0ae40f808371696cb99320a721e9a1d328f1fc9c8cdecbd5c70dc7920d81d4a1cd396772eac5ebc84117be545d76ca9529de244d73b5e94b453b192ba9c66fad5ffcb034d00582c59db43970003ff0ffaa35034b986917b60427a9b92140f625774af549b69ee0ea2fb2e24c270b25e6bbbde60531fa0420cbc74d4c0973f30bab1eb77dbf651f2b39f25bdaad002f27800ca5602bbf9eb6a348d0873da2feff8cee4e6e0fd3477f557fb83410ae01c659f4296062fa2c9b853eeeae9e5e6611bc5dbe6d257425ce8c07e6de4b38f57672e30e474b89e27bce257fee7ff6f6dca039d0caf3419aaeec283928d776131d6af16fba3541b8e42b30a5b54a21514b466c22984ad6215e0b0504a32bd244d36dcc888affbc32eb4399c7280528590b5a5e9b2e8df60dfb632abe2d219fcee3cb3d33573f429adb59db42f567b231637482dc11b892c938332bc61851a1f7b24cfbe57d0deababbda6c6860473f025689899b4312422685bc8e13f4e233fa14a1a83da2af28bef69cf9e7c00d42f47dc2eeaee6c2c686df18f426a7e7c9de29cdbac3258e83fa949ecb3cadeebf42522493f4e11808b7965254325a8252635de23aa03dcd004ae56047e0d5720da15351d1949107e8b482c77858b948ccd038d1e65083f6d3141372a1069df6728f66040986a068a34b32798462f278828055342f40f984c7b8f203f712114b7a4a8bbf98fcc22b3b06f088d9a082d3511b2f7de7b07680dfa0dff0c6089d2cc39c44cc9d395ac9587d08ed8d6a364a285165bc41fae8b89c52e1b3304c420628ed8b4e78402fe116f7f455052916173ce396b14b29608c52db4d0a2b74022b598384c72a41594665e4a242accfbb51e5f5fc4c3457418e3f0f76db854ca2acebf8653d98ba0504a58113427aaa048a1724bd48ad2fce4410a6141d6b4864869a3bc94527e8b3fc428e30fda632c728b1dfbbe52e98fd77a1033472a210b22e48b98399b4ade08790ac8fb904fe267a8a5d06a5e9694e248494a29a594525e554b4150794dab8c1b91f0192008027cf1fda85d6dfdb15d33531127b9bebf50197cf994cae748d5ac157f146f116341f8e27bf0832a7f7a7003c2179fab0562acb1c6789918637cea46e78b30d7d77b7027091f334529a5801133155fade5b652ccd13030c3ae0cab38cb269a4a2a57d1263e524ab5164829a5940f88e028c678fb15616f293053f249849a0fbef88c8580461a638cd1623a31669d18638cb1c61863ac7154e4c2dac69d586b8cb5c65a63b55c5818a3b826a56d31a73c52e5bb16844fc78d31c69ca8bad1a139d69456621f862581615fc5be237ce4afc629665cf2ba2617479a5c53724cb8904c620ea198a342a1a95c82119afe5a9bc501212f8499b4d016718ca811473ee25ca780751a8229a57bfd90b7b44b02610a119a6eaa3864832f72bed56ae505158d434a7820a34899395168cad4b2ebc2703e788147a42458b278f4cdd436915c21a8b65eb7d6da7a6b319b59f5d28e7da94985a56542786deb57fa5e6a22ad91adeb4e2a9156ccd4fcac628b38221cef32e2583171224e77e9040741e59129a81842aeb84c044a2a4029c54c4db9a234f32bddfc105f49c333888a4733352b159648016381e9034ba4088d46a8d26884fa7f5469342aa14628267c5b78d31ddc584aad9c724a49e38c9c75cab9e48c39bd20d45128d2534aa39455707159f9e355de5a32857e4e21b3c1375734a708cdb98ed11c91d5ae23a9dce8a498482654985061d2f5059e86d8cebdcbbe81d62b88350541cc21baffbc8bc0d207864b241ec2c3423a0e63314ac9c03905a539328bd0b9a234f64ce8e8dcdca4527fc952e92d485223d4083542bf162ac927f6d448ccd1512396c45942914c98d4e903030441004abb3463c5a5d3e7d1a65df1cd8c5d4a79049975a42c75aca8327cf2f1fb10a88c523ec638133fe78c60aa266bc21787ae28c24d19d7fe465a063d3271acdbd28ee8f63484e8df5b6e3fa17867b9edb42829a9828a52918faea86056c3176652ed14358c9953ab28a354c9f85055e4b0dabe3aa954680e65823366f357a46d2e59fb1158ad982554ae55b4ad59b4bda5e2ab4f326532c6c4a1d509cd191dc3bed2901da2c3a15475975c033c4d8b2f4b292c242ca4058752f5a944f7e893dac4045fe4b41c7c993ea14fe8181367ab4568ce47733c0ae5b32cb7dbeda794396552c1be4f4a84c2dd7e6256c426760371cd4c4d9ad44c555bb29f15dd9e0ad12634c7bbedc0a91a811fa5e180a02be0127c69acb4aaaeb472d24ee84705b3961c8ff5938fec26dda43ab1af4fec2b147b0ba422703aa134f61f389f501a7b0f9c50e89442692c772ac59c53a8165752aa825251a444c1527f54da5a29677c72b35960d3ab48da1a609ecaf864ca20e6501273746d7fa71225df54d2f554126d2ca9f354c264dadb393453594c7b97ce53091036f8625fc7ae25c197a7903d069ee4b3cb07d17e3daaea14f6c83785e86c42ef149a29fb6c8986c3253633408241074758a99c00ca8e84ed24190e92ba8682b62aed190b19323c7ae2ba6d3905a4d2f61658511073d09e42437a7211736ca4a9e78cd0d2d5c2747d9e50682b24dad86853ad1d32883636089fed3c95b4fd19dfc444e021664ac3e24372a1a0fe8e31696a199f3dbdb2e5183147b7d15fd7eb2910628ef97a2ac718a3adae4281106dea2d900641e650bde82ca9c82994a67e9ef159ac615185a80d647bd43addacba556ce2d08f567ae11f51a8ad4b2925bd5a66b370240e61f181ceeffad92e6e9c99993415ab99e96ad5bccc9a9999aaef3cd3351b51dfa95a6dbdb5f812b3d8d5b4cea466aad60c7d7966a6467e5e5e8a3a0e6191e4a6078f33a5335f72adefa9d7c1a9d6a88eea28d2583b01d091d709c04ea5d5d2d9f916842febe8ece43a45de6107aee3d0156be83c3312f2d52d4885f5ccc4911d31ec112707b59c1c10193679e4671a9be90bc3300cfb238e3c3673ed4cda510e01c48f07cc94f52294308fcd5bcfd6da5bfc459a798b73100498a9c96344d7ef1020886d2788fc0ec2976f7402b092b25e1d87ae3843e7af6ee166271ef1d767d3e8a465cf96920a39c5a530c197a5146d2fb788a3ddb26ac4c16e5d4e31712c9cec96258dc42dd31e31ec86fed09e5db6659998e194ab2985cc23288dfd06464af361a5ef4fb5b5d6fe068955839c31472b491182124b4de228a2e2cc294d3c82d3717df1c91d2a4477fe6318186d3004649659168db60ec61caccf3c80a756ae470563ca7a0d0774a55156fa68631d6c2b025d69ad710a4bac964ba574077a8c9221051a9ee82ca5f60b23b05060594c8fd1194ae7e7fc820f6e9e94fea282b626e83c63a3f818b595299528f9ba92e4b39e473e466ded9c138a9421662e5dd8865df76634f387ddd76a7d9431d437b3d15a2d7a1fa3b635980e847688d692483e54354116bad6d75871a806525aeb9c12c2821296221f0bc800a30563b8c002a4156041450d66172c484213bc30ffcd2ab4008af92f076c249fe8e42f1fc5109f08d153e011fb8e502f1a7376acd43a45d163110d2c88814e532a86b753a281462dec16a6238b2761084211763005082a9a821d9c010850f04009c2a00ae3089693a6968a52cbb24c2084a6d4043968baa928b52895a5a6a1940a560da2c4999a8913fbd471a80643e81a68d1f9c69a1817ae6602694ff2b5d67ad5008aaff444d7a36e553cfa2c8d94a8963570a2e72b96427530a081199d534e58702224c8dc454248cffb0ef5bc8bdee3e11fdadeb1af5b59f16ef26e325d8bbdd2ddec037da89c2ddee7d53ceddfcdc0ac791aeef17db7e5e5f922d411a36fb4715996b1705c8f9796169c4bf8877a1fb6957e3bcbdc7376d13530f764f8877676d2b15fcf8cd2199ddde5876677c948c7fe813e6177d7c0cc5df4c8f108bb47fe7e05f4a1f75e7225ac3d264adf99f76a1e4ff6ddc317cc9aa7619eec71a63c26b2e3c77b1ef881f9fd8956dee16c44772811cea52346df4b122ddab217ccfd32d1229c3b9e51762ee3be7bb13bd38947e9da359c8374c92b812d5f015d7026e11fea8db20c08ad136784f3f671599679ffbc95af883e90877b779eec5ee6715ef8b13a5330416424599464507c963682cffa75792efdf3b811cbe77212694422b16077e94ad7fe799ec6b180dfcc3c8fe3ee79dc8e54eae6464747625fc9d479ffeee2652ce008e715ce88fb22eefd1113a78777f918d4c242ca02c8496f986b794772f1ba928f6c971e8fe50c5f09cb7fdfc78247600f77ee5fcbb307722089b4ddfba9c3997496cf54eae64647476e52720c78c1917e9f49737129b994eef21d2517ccfd2381415634d7a305e7f8efd959c095f8e403e3bd1d41dd1591a234f6a99b1b1d9d9d9df872d327c780178c7d5f497bb9e90978c1a6a0a61ccf86eb0e0ec7a0063532a420c80a2856e6e781d591adebbacd7bcb8ae7759d485465eb3a8ff3564a9dad1cd1debd77ae64f7d9e97ede0bfaf0dcae13ad949408d2ba0ee7d9dd6f86e82cd59a8f52f7efb9849ddbba6d2bf59559966d5c29fbedbafbd311eddd874794651cce3e4abdaddc63c13e4a3dee7b689a0823515222bbf7bbbdcbba1ddcbd67a0e859f6eb813e194ff72cc31bf8052856a8e088151783219c2602d35fb84b90ebee65f15eee65b9d7bb8b88f3c0dc72d35f38ced4827d6cddfdf40ac7cd8ce4e2c27177c171a6362d3b71b80041cda5b8ae7bf9e927132e405077dd4d1d8aebbad3bb9f5e50a811d7fd74c205086a1397658fbd719778737969b6cb49dfc05c3a62d4dbe672d1f3d65bb781a5aec5259bfe720ff491ddf2c8e9e07ab8cbbf98b08fadb9adb7adeb584cdf70de3a928b4b874f2def7179f716977777e9481b69c39984f34d933830770722d39c8b69a6b79b3a9c5f4c1c3e95ded39d7ba93bf7ae263544e905e7d38bc974ce74ee26eea807c499b39dc3993b10993ebde0130a35fa11dd959eb136dd844ff8747acfcb4d3fbddcf417138e3355c2194b693893ee3dff748773cb573ee376e2c1f2ed1bce41b8ed1db769d7b0ad8c15fc0c21c995296e9cc9374d7cd6b5107cd645f712bc59b66d9bd6c275dbb6b2b2b26d5bcbd6dd8c85bbd9057bb20ffb1875c6f998dc88a5db7c8c5e42a5eee5a386b72dd5dab399d6502c9856694dd332307b77bbd7c7a8af36ba5986b5de7c8c36f0bbddbb5fdd3b9c7d8c9ac3488cba273e7b7cfeb20dc336fc6363f0119d18a1c24713379789139d0682cfbaf7ecf295ee12ec5c7a90ce42fa688544ba463acbe824d1b16b5df6eef215d04776d7d37279171fa96e59015b66d67538a75ac0ac846cee2d27ee93ebee75d90ac882b3a8e506dd96b38c5a5a4e72d2378bdeae4edf9bbea27befc6f296fc1d3bc96b71f9ca47a08f6cafa7bbfc0ac87286cf05fb487577e55dc1b9885e59017b5abe32fac5b905e754b7dc7b0766eeddb66ddbd6fdc43d93bef2f97da552a434258de3e1bedd05dcc1ddeddc5dc01ddbb9967bdf486011dde2b13cdecb3efcce1ea334da9ddf572afdf772e08e4dfb0d5a34d962d2c426000f8666147188074aa83502157d1e1869333a0acdc4c8c52ddea8c5ec26d6892f14df27feb1139be02df24521158733b6e1fc5d9c4b1acecf309c6f74a0544146cb55cb8fd1d6a3900ecc68ebf5d7cb0e5e283eac876c226b18f67da5d29f4adde86091e61262007d8b7c3dd8e5aa33f68c85f44b80683dd92df261f8843d0af5fb25469c7bf91a71b4cb635bc4c170eae54711c7ba7c29e2449c4905cef2ab0b9c52ccd4859de3615d5e107c72ae225ef9c41c12ff98fd038879792ca7241173542ca9449b4ba241a621da5c4e28cd751d9d9b9b54ea2f953276897cd843fa25d9af4b2754a40fb1afcb34c41cf557293e894e6213ec2b3d757343f015319281b2659189137ff960ab963e57951d7ca18322f884619eaf8955ff680de402406e0735b66af9c8f1604db4fc44929d71e31dc21787764045677fefc0c8f5ae5b524aec73c7859069897be6ed0e94b4fdb44064d792314a0c824f7b5445a1cf9ad6b426d5c01fb5e98947febafce533801edac1161d879864d1373a0e3111d21f36712ea1c67c76ac5f160974404647a13ce78d1c8f28d413e79dc640cc413106e631a073533a22e6887d41f0fd000203d1263e479b7823284dbc33e6a838d31f41f18967be873e0af5885c343d22dac4d319dc78c5f8a22ba59f62c8555b5a6cd1d6e7aa67621f59a5295841f925f374ce579fa0559f78d4d839e11222ae63c7702857aa0b4b21e944c8c78468132f85e4aa63057bea9dc41cd28965f5d0cb9574126de2a9186ebc620ce5a04907ad56a496cff992e8dfb967ef4e411a1f814360fe8143521ff23d0aa91a827fe31e38e4e5434ef74e02879c3e84f41a6f0187d00f69b9cc59c021351fc2f21b388cf98d8b40d30c0e6d9c6ec221ea8687e06df89028e4cb6bbc98fef290e62f351ebe3c872137647088f1637078030e017093ce6ffc371edef01b38c4a6c3e010e6373e84e2903e65738ac399df98997918f3191ca2509f7978e3389ec226d365703883431c6ec3b1ccf1c399cbe0d084731d1e9aae030e6d6ce0d0c6ff1c6e038736bf0e0f7f1d7098430d8c9fc3c31a3c80387e63038ee206853a0e36d8f050e636e010d5030fd486521a6abaa1c68d9917188c65c099538e097523067582b9e11407e784e33937e4d4c0c1c1c1b98183d3c3cb8b0c066bcca07e6306a6460c2a06069f5e680ed21b4ca8138ccc0d383932a699178ac11a34313838354ec7f11c7ae339c7c1c1c1e961e6c6715c07d491c9c97948f39c9c1b5e6870bc87971e4c3a3a0f63ae83a3838a39e5dcc8a13df4f010e63df42063c2c1398eeba06eb8ce0c0e0e4ece43981c9c1b7fe981a687e77818f31c3a3ce83c94b98ed4416726270785e33837f83e3cc4f741e6f4f0f0e53de030e7f49b87e073e8a0030e0f618e038eebe4701c5e7353e339aef3f0c675240f3838dc6187f380431c1e1ec69c071ceec0c375c0e10e3a5c4706470d0e01701b366e80398ee7e080830d36d4d41c071c1ed21c071c1ebe3ce73e3ca4f741ded83cc7c3d3734800fc26c77d7808fee6e1cc7576c0210e38c4e1363638e010c76d6c1ec6dcc6e6e18de3701d6a6a7e83c354ea39e4701d5e73f39a8733afc1610a47211fca3c759d87a6eb489c1c1cf2c0c37170a883f3f0c7c1210f38c781431e7e73f39c87f8381ed6b80f38eca1870300873638b4b90d1c705853731b1ce2701b366ef310c445449aeb3638acb179cd4300fc788848733d870e388a9b1c705883c39ae77010c743191c44a4b98e4387e3f84ea4b9fe87a81f873dc45c0787ff0e324fe130e6384c5d6687cb3ca497c161cc8f030e650e820f71380d3622d25cd773708843731e7088038738be030070a8030e3aa4621aafc7f110070e6fc09fe82d37e152a4b97e93030e38b4f95e63aab9e9610d0e6fe07f1fbd064e3d9cc14c441a8c93a0a9f1140e676e03df061cd698c134300e61705c39e92f9777991898bf3c84c1210adf449aeba177969fb04ea4b9bef2fb22576dca99cc3e391d41abce5e40979bc0d22f70bb5502832cb91e552e6090253e175622a8edb173f8745daebaaefa6edb35b9ea8b7beec5271e0cfb9c78f4e97ad0aac355c76be048c827570dc6268171047e25d107dee8cc603641d7bc31c23dcd19e261fffec7dfd09c21d787906e7dc8fc10d3bb21f443a2902f0d31e170e5f4e543647e3fe46688cb4d43483824ddf36e12dd034f7a48c2a168e6a67b1f4271886121c52186a3900fb1c75c746ec89cbf261ce25f346ee3f3bae9e1bcc9fec3a1f6efa1e9f743ea5f70381a7d0587f4190eb383f721f88b43ba72faf0fe7496effb86436b710873ed1ffdf770fb87438ba3900fed695ee3e1f71a381c8dae51cc5bae96d77878bd060e63321af3309bc151a45870c8f296969f585a5af06968da636034ed6a19d8622289e877cd4c2351ecb6580fb4dbc44c226f62e0f5d14fbb5aaedd482612067a22ab6519bddfd522da3e52b69944d7c4a6e681b685da1613c56cdcf0dde981f7374435341b36584c976634340fe769683212093ff5614f6d37dcf050fb0d3780d7e51d9f66d34e6353a987e053365298d7f21dff0693e837fcc643d26fd0d03cbca7a941f31b0f336bc3c6058f9fb22d4f4d1b366cdcf0f0fa0d38b46143447fa3460d9887db61b2e3d3c41c8606e9c6691e9a4e934ad9f01a384c9d468dd33cd44ee3e18767cec2324dc7b70103731a31313f1d86c6611e8a0e83ddc66b1e7aaf9137a8df78e8fd869c398d1baf79483a8d87d8695228143e8ae6a887e051f2e13dea354ea7d308614ee3a7989f1e6e3fc987f6359e7af83d256db0f1f0ba0d1cda60e31887363c26e6a987f4f861f61a1cde70c3677078c2e1e92c2c47e1f0e5e5271ca2cec2f2d3c3969f70f872facbc30def441af999dfa0b1ad1c06872f387c39ccb7edf8a1768cc3151ac70f2f4e22d2c8affcc6430d331169e46fe0f0061c85a4b9af81434dbb357e1f66b888186af7281c6adfb26f0f413c44a491473d6cc141441af9140e6db4dc061c621ce2d7003f83431a3fc661ec8210347c5185056420411115b80428a450421ac2a082214b500d01bf63c21888c3e393b00c8e81311d85c353e92f380cfa410ebce0e4c90c6a00c60f54a6a01538118511740105343c7181caf450844b261c9670cac35fa49177c1a487141f1169e449386cc15148d510d14738f4ce82a3b8510da15fc1a1a8bb87c32019243923890ca894f10531a86894c2941cc460042ba0d2051a5443e8bd871fd6c16187752e7c1369e4395c9ad8884823bfe1f0e22852aa21d6351c0680075b80018b329a30c506aa0c4771d510192ecca003214481481abca01a327f3dc4700a87160e2d3e8e07a29136608812a83a71eb083e196bad158b918b1b638e368964075529adb8aa58c22c18bda90aa24072ca1ad02ccbb2d9844f5a524a29a5945996652b59a4736dfac3443871ae4fd1b4469934344f283d9720cd9862febaaecb9246e694734a813253d4087572613193f86162b398755dd88d31c6684653ec8a3d8f0327fd33fbbadd21a134916458504681325394065f8e531ee5a7932a253ee88bce5b576924339265d92f7904bbc02c33ec16288f655262cfa4bcac95d25ef61c103e740c284e604609e210166440319a2919f1099890e09bb307f3330ea1c916c8b0220b2d54614956c113844481094b5290a40a58241981d4e29336591c11c28524f0c008164978e1c9162c80c207443c40052c4a20c5d783f8cfbe647f6b06943148207482324e70041518666461080fb4084114bc9802161ff06123327520a7fd0d9333605044214ae9cd3ca35a2b766be0acad75f2f042131bf8000d3108c31884c041175820e50b1c64718431ae38c34581af2b8ed2930213e7882168d06a7e4f486a5f62d1218a0fae3062062584b102953541155ad4c00b4cf0e20a2e48614a5b267c7934420d610b51e0e093d6da1eb40dc1f73179a424f88014109ca10331ba68409427468001139ab0862da270851625285d74850d325b5724980119a69042c91890e000f3000ed650e50c44c0220c50a8028a59fa0e8ca4608c1f8451022580a1a24d3ea0240c3018c11658a0b24faef8400a6e70cd62f5a5181cea09a069b662d8853366d591b506cfce8805299e5821a1c914686086ca4e0105515042821924810b56a8ec3f71e613da5a6b6d915a3195d69441554e1cdc601518a202156298e1c807a648c28a3230e10209967c81851850b0998b075f9e99748a6a6badb5fe2b3d4573824620c50d94bcc00b1b9840882a08065b08838b16a8600b479881aa3a6189a539dbb4a552adf5d40495ca6a49293f4c4e39e5316b2d2c238dbcb5b49e263dc19327739672309dd46959f347ed1f7a8378e7369a38b95ad666496bf48d2c2bdbaef155aaac3563a86c07df47a944038542add5561a854fce2232bbdd8936f2b5d65a2da594d322ad45b056d3da268e452907043df158d6af5bf887f647f18927d70ec282b165cf2a588b378ae5afadb53656da852cd6cc5ed67565975996654730ecf1d102476d415467ef5a635b17f875003adece449a0cbbc0515b60a92df8aee04c5b2fd87a59f6aa4db86a132cdb046badadd665d9265c4db06a136cad26b8259d79d358b56c7629addbe476604118800041043169e62b0162ca7a8ae65891c68a21756d3ddfbc81a017a4e0cd959aa9597393ba49a52c1560d55e96ad45b0572d823513679cf1a2573db51615819cb16a441b1e04d0a579ab09d84c6ad2ccd8570f50d1b7e9ac3c3e089ac3f2f81f26a85cad1e60c4a4c0119a111fce5fcf524f0f679d9b594ac13782283a5e36716efb9948f8b25cf57873b8ae24153d3f8d004a2958402cd26cdf62a4d91e399e0dc79992526079444a218f180105ca7768a9f47d1443e051ce6a7148be898181527a14b5acb5365aab54ada594526ae94cb4894f42ff83cf76fc946259f2de0d4c00775111dc451bb67d94e6bbe809f82e92d93330a8b19ffa1d6abfd2037dae6b375c3d79ad6ddb7ad0f48625122e087bab83fac4c3bbf51d1e25236366842d8190129f7864b746a8b85976a575792f716eb28991fd0b2dbe109204259dd371e88b32925046e3741c4ac2166520e14923a10912ac68244c718434f48d17db22b763c39ce4b9f7ce23faf57ef078ffced3ddfbc559842ffe70f691b9cbb389cf0f9dfd62db06c6beb2b3673c52548a46c54c555985195d7f5feed0e7238786863ed9733d76bdbe33b9f87a2419fd72b9a8a2eb65e12445ae0aa7164892f082950aa84ae142055da8826c200c52cd1c8a1b15911bd512796b64e29031716453d1b1339dd2b349d7cf2f685029346693f9038d2af01cc29f2d7fc0af53584f52e42af0b1ebc9c2e067cb1fc092c441de822fb146de72427c44e083a71c11073f390444150d8c314a2341ac21819937435e2e172c1d878c80646a54e4ca468942f4c95bde2ebed971a88993fe9a524aaf4f705edb755d2e5eb0826ad649d33e98dc28a5945221d549b054db6c8299187493755a1ea4b55822b15b98bf225765d98615b9cafe80e1103bd0f53879989ff198cf04635d0264be8915ed43ab34c512c9d5766a50dc78c7a07fadb8c90a87de604022c12c67f82492ae8f54a06268bf76ebec368f61d7342cd5da77e8b5cbfad5408b738d18c8e9c0be61f767f694c730d674589720f72c4bf23d9f723d52447c3b3372db352a7a9c3f887008e43d4e1eb48771f240ff3dd51b38ff2dd97e25c8e15c3be37458da2f88d5d8580f9ab68f483a6ed33a41505f3ff511e79fd93cf60710ec3ff5d67ba43a03b5cd4cf8c8f4a0301d878a40a473d01011c6e854966d9f7f665b1b4030dc231fdb8a94e361a3ed91cc54fc9951fac8b4fc0ddbe261a333cdf361e7f89f19c4238504886d6dd55ab8577cb6d6d81c6aa6e6cc4c5d38528c7d761cf2628c7bc537b15f172672d512d9f268a05e30e9d9b18a2c3ce485939bd905e745155dc30c32320368cff08dc401fbce24c2a73dd37ec3f8347ce29940ab5567cf706e6920b57d64d94fdf4aadec2b6421ee4cae1379f77a2291c85bf9fd76e68aa8ebbeae038120695b5cb8d3ba52643b699b8e4343487ae808ddb6ef75b332f002e1fb8dcc017bcd4c614fdd1476ec7162c7bcd8e136e1b3cf3b7416acd951fa70052a296dedb4b54ff0d4173ccd9fb6cbd386931419808a7b1c1ab242c7a121289d81b2335067c7314776ec3b265518f64b1fb467eda7fb25bee82590d0f75235551f78ba1801d8772252f5fd5295814ac84eb244125aeb9e90aa0f9f34ece355e924457650717fc25b838a885471178279f889ab8a8afbac42a5c34fc42a5456ab6c0241530890027920c84b4e884f08da97908582198d9f3469998e4343b0a2873045831d87ba30435f4fd69e495dd4694b8ec77c3d6ae250236d85a09fb8670a31dfdfc4a1b8c77a6c3b340482ee12eab32717846c0b6be0eb9f4ffa3085a042dc748c36548a11a5b456e106728b39e227d7c5cf7bb1aebe55476c5e61897e7be27c8e73ca1d7336d116db6813dc8a2d19a5a7bc9c534a03f098c7e6e5c21787b808a33b2036dc7335cfeb7ebbf65e9b76dfaabdae875cb537379cabbc8eadbac62aea709eefc1ae3d638f5ccededd00cf5ad7713b64c4301edab19e2edad07bd18656255f5d35d1de6f77effbcfd6df37fae3c7eaedc7f6799fddfd037d64dafb06fa0cc0f3708c355ddd2698b56fbf594acfbbe478e40b829a680f4f0ecc9bd4a225b2306e8b47b23b7979e0de1b7091847b032e9ab47cac11e79c3da3cdf50b8819e58b92b99803882de6b81e672e2bb0b0f8803f583e31176d56bceeda659d85659e85e5139c619972e767c597462422181db8a48448c4283d8324a1355063198b3d3eb4d630125ac6e6bcb573ca1cea6f9573480866dccc0e09c10c5b6bc62ab691cee0cacaa35d5ab36e9fa3926669a0857b84b0346c81f946e97bdab3efb3134f04e348dfc8f15c52fae229739051e620b32b2ff0a625376f0e3ef9d24cc55fa0bd05561fac51d126de82df152e8f3d8fbdbd6decf312bbf56b54fa2c10496f27c59810f4f59645c1d35f97209d18ced7a5cfd6735a934e3a2f67bd92bb2e5f788c685a83dd1eeba1a749cc1e463446a98eef50f90b6f33154b9162b60b57f670afc763dde2ae6dcfae8dc0d24c4910886c20b2b71867ed247eb4c13dd6e5b54df6fd664afb4d6f3948768fa56df1f7d1e6a6e333f09b29ac2f7919abc8bede2c3efa59b22eb3bcd43e6b8334cbde9e0b1024848eb166c359fbbcf4d99aca4a9b9e5e271fe5f9b2bdbcd1367d81a89992f21ee080a87fbd189bd94725ed5e7c4f2d507271a6b2edb20685f345a5cc406c003fb6a585454b54674acefc33459f23de66ea33143571def4353107b551dc7bc51787a60c89447a39a1604c24d265c227ef5357ab0806103eb34628968935c615254a1fa494313a7e4a4dfa5057d1872873688939e21992863eca313a4f9c819a96a1e23c3190f97da26d0563f1f11a48f5869a4cd140462d4fbf491f62d3ce5bd3227cf2d7c5f158ab9663b494526254ca3aa5b4529dbca5856b1f67acbd8dceb60249e283a21688b87cc4161642c44665bd088b4a7ed4d947dbdf741e75b42c288dd0e0cb61bc75794b08111b957c111655144264aaae17f941256f81457e50854b88900f87b8130b873b977589c35b37177a7cbe9146268e0d7964ceda827b6d10494220a3511d8784e0a4aff7e306e7a0ae5a5b8a91b0d246699be9a5c5d6ad67ebb501118c232a2c09f68b4404e3c8ecf111a364cbc248c4281609010811ea8a930401cae1095de4f0842e28135803b0242b1810c8400a24ab1904284651658fcf5d0d24583459d52462944eb2cae1095dac2c010811c256118c239a13318a2ac3ab1845151f8422fd233bc98a44851b3cc185d54a157110a0788b3311222b5061066b10b25aa98460e969d9600b32b630d271454a8cb1e2384399b8f74372a7b4e28b384a09c495bf12d421639094347e206daeb7d2562baded31622d6b2dcbb22c6b59790bf648cca2862109d02734c6998a3d11e77989ddde027bb05bb407a397e09dd677a625afffd8ebd2fa8c1303b1578fb5ac48c950e576e2217bec9de00f1f98b63eba547cf43e5703993dd7eb253920264f14c2d95e7e82d69412f754ec03d4f2738ee007523a0efd808ace5ed71f28a916a5c726c65e58ce605f1ebb87450d1ff5019ab20ec1ab16d3dbd3c43ae6e9a97d0fb5ac6bc577bd1f50697953507d2870e3bcb163bddbc439f1a055aa347dcfcfec0b00d19a5e36d1304d6513b7522a65056e04a90fa2a4523701c042d307e00ba329adb367fe9b34f4a23853f17593f23eb0a2626c46a1d9e40ef5608b30a8e87a2b270ead268ed56def36eb40bd71f55ad771cfb6d3efd0da564fc540acf3a8b76eddb6defd82279e7aebb1b3b563bbacc283db21358bbbd503255d6f71974e205877ef304fed0e6f2010acb7fb18736c386ff791a363b4b994fad0b62c1ed75b39d1d7db708c36f9dec658939d6ab7e42adad85f99b46b08b9d3778dd815ba5642d64ac8ae84ea4a88ae84e64a48ae8440f06da7d7344d2e514276fd06feb0b77ec11ff6d74f3cd9e5330cc49ecafd268e12df9730b512de3b25b02f6152627e099312d6a5121af64b09d23b9cb3cfabc4858d8e3d63a667ec2c99bb859728b570388b6e71d79e359c5b5a9eb76bb794b8387bde33d44733fb7cbe9f387bdee573cb47af38d77f7889d2caca2bcedc47385bfb0ee7ee1cf73c3a87b3e56e3f39efe16c712eddbbb4d79e255ec2f43c2f73d3b37613ce2b2b17e12c7a869728e1bc22ca4c9ded502412ce28d273cb49387fdff3f5d35fbc9b4a387f9e778c330c0c8ccc3376199c61501ebe5e07a2b6ece02b779d8e3beed803c1677b50066c99f5f4a3aef69f06c6587aa3eea783d53b38ff67ee97f995c9fbd3718b757c1acff63440f0193b18039ec6f3366564bad32fe79fc9c8c8e067ef1867199991761a31317771015f6e425dd8691c7ce60efecff68fc1f947c51c7cbe473d6727988b4455fe741993e9a89797976e42ddf4bcdd647ace2ef31953c9e5349ee76998608ea2f199e7eea867ebe07136e16cba8b8b09e7d35dc0bb3cdfbb989eaf9b1e532a1df582b30bce2e47bdf4f2d2f3e825d3b37dccffecb1c8e0ccc222f3cc5d86e5279c65fef2f23fb7fcf4ac7d06678c0f837309e7d24524d24b389b2e12bdf42c71004a38934a273d6f5827a6e4614e03b57d77d97e7abe788798923fe1fce1254ccf1abe8929f9ef349eadd3c019e3254ce07d0ccedaca6fccef7386672ecedabd0967ed5bf6edb9e2c794fc716661b90cce289c518fa987c1f9743a0a670ed440085df04157d4730b46c5943c0ae71346e5112ec51712e9269c4b2d77c1d97292e48b2d34899ef4dce14ac2b9057f1c8e31251f9f27ae8929f911ce2c7809532bd15d849728b5121cf70e678a851f68610c3d7d6495f6f028a6e44b17fe624a1eb3702aa62e5e62d44a58d770ee80145a3085219de125be56224991ab30bcc594fc85b38547166331f5a0cb53149f2fc5211e44e96985211e98f1802f62f23b183822e690a73782e65c1494508842b4a1328b54ea9fe025f2cdcb2c9c24d1593ec18a532c9e52a3504fb0f60ecd21000f944c9a18d96f56faecb1134f0e7241cf5b34e8198465b6450e0cb2641e487bb624b364f8a21742a468aa43019af60544558697cc5b904b0014035069f894a6fe723d86c00ec50054d9b31d9af1d096d0dfc9f1887a9ba0bdc5f1889afe66db043f09da8b492cd22e2fa07d64152bb7db6d32e688ddfcce14e2019d1dd0f40637de317c9a4c79f1c4919e1f29e02e2048351f847e08c5500c40353f81a6fc8dddad15b4d14116c32288855d2f5c9fb3a63662b4d14ff0c2892f4a3948ba5e3bd2f59918f5561353dafaf5a209285dcf79e1c4ea7adeb9a959d70940966da719b66d616cefdea83af1b86e7f5d9710f7d2ba4bb3c09386756cc7b41efb4cd37ad46bb84789a0b68e713d7aacd76f38fb0ecdb0a0b620770d0ceacb23e37e2d30df7342840811e29d488c38a48a488c38326d0b67d50ef509bbf6b9e77b5a79ee2d9cb95f3c1c3e5dcce316a8fdc2ae1e4c088a5d5886b375ca1efbde024f19d6612fb7673ddab395bd47bd251fdbeb6e5eb579d5205fbd583969eb131b622bc2884a45dbef902a8256d9a2ed7748e9d8db0f31e344db1791a24db4bd11daad86033073ac2a0eadc18cb6df61e2d8ce524a292d89ad53eb31ce48f047fc8fc523022d6f454a391d16b7437ef60062e60e34f6300c12a4ad0c88e26c3df6dce299380769fad827798e070f797af9387446196d81166779465b5f43ac91b24aac8906081242cf55ac894db4fca45332296ebc5df8eabf7c7363ed75ecadfd19516c9441ce7012a3194c3ac698e3de2b3ef9e85d2b7c511e01b45659392945d623d41c5452ec945e07b3e829bdd68c522dd1a5f553c58285459bf86a841b9fc37abc8d3964ef40850dd5f6346f56f86e264ede50330031c7a30d76fb9a8993cd60f9b403939cd129e6906d6f06a2a814ac68616a804263d84fd7e97a1c5243181d87d4f0841ecd5467183553988d36f19113a2e2464bf4e9d05a4e1a3156a7ec71afdf8b03627bbc960eec3dd863558393b6d1c6d231a706ca9ecf70e6b6f8df7821ba47ecf383e37e78ef51223ab1420a0f348773fc3d26c48955efd01b3313bdf1e8707c8d716e9f9c0ead6f06ceab37dc937d66998fcc28c8c9ca64280d53f47033fa7a104354354c51fbbae6ad1b3171b28e4ea9af1c214b30214b304ca5af5360e650d5f522a2f4f5074c1c1a514a640dfa026797ace8ebfa8886200d45666c304a69f4a0f0e57a834a347cb13980ca9caaa22a3420e9e8a1e1c81654c6e8581fa5f47cd2f3f40c547a9ee6d09e9d7206a015ac377d3d0dbc6979f94b378ddef4c5f5e8d14eb76ff4f43b94e3c131007b100c07e178cc538e015803884815f62044a4cab21ec4fac515813d085604f6eb2fb84d9a3eb4b83330697a6aafdd125d740b7c02bb750b026939ae5b18485359cf3d6891ec7689cf003a07f5779df06927727dc9fd4a53d9f719ace80b22a1f5fd06f268dd6b8f8f534e0788c43df71579cffb6700893dac81af735dad3af07439334c3143113340e9998e4366d8c20c4aec76c153c7711c776d173cdd0e3c5dce7217c783bb19cce89fc9436b7a0b3f81e13048a56122d7a5ca2629726db82d0e2dfbeb9985812c7ec27a0884ddc245aeb25ee4aa0c0361d6a2d7fe742bd087851f13169feeadbd94f8746d10929e1c10f4d26240d6c4ae70a777a022541f03b8038de60af79515d3396b6593d8e38b0883a86afc537d440471f9f620df5d1e39225c6e1fb922bebb7c6796f1a4e92911a68bbe81dc3b3088e9dd2dd7809773b740224c17e1b0fb28db3ef3b07b398743d33755090cb2fde5336090979b3e028384db4d07d254a2a1329af4b520125adb67208fd6f6a306741fdd038384dd45ffc0b06b80690486de67be8131e6b8361b6e0d0845e71e7adfb9202f0f821f047c081444e62b1f3dfc2eba07867ff8821fe2832f8141c2703bf7b0e5221c961e92cef2a89a01838421f72f443de653653922ba8b6eb922be9bb00b184a95872d4844672fc241be8b38066c7fc141b877bf380b13617a90edde57c0907b878182b87ce6456cf889976ff73090a6129d038134d5779c6f3a4991ee1b06d254dbad8b40ef1fc849d50ec9800f87db394ca4fb120bf7f8b0cf6e5df49d7971bed1214f9f8148d0275e6ae020e1e921cc43d4633e730cbcbe814fbc7ce62e6058bacbaf0502241dc138628100495bb75dc79045c725b484f2452f8684d1b9f495bc1832d4301dbd10524597c1a48c224d062a646852862ccaa052062a651022031332504106236320630c638c41a8efb659f074611e595b97adf525a563944b4a5b314a5b02102254afb064d5d6afb6fa769b054ff61778b298c77ac693c313ba58b5658171a4fb0c0ea52aa481b91063200e87202e7295878164befd184886489101a88604a9bc7b1fa9a0e56360401408c47df41306fa3efa3e0cc4e122577ddffe0286412a93cf00ba274799438e435b98a2e55525b0c85521163e2c721550f7eda2bb8021090375f8096ff4b00503ad7c848b5cc59d0517b94a8481567091abba6ff8092f0e6de1484bfcc3f5884b688933f081d1d926c9a27d4427fd20249d7109d8cefda3391c2ec2bdc34438fcc40054ddb7d763dc477344b848f70f13e9f012ebdceb2fce00416d618b7b1610a4f2a6aa7b05fab050ae561f1351e864df9dc855ddade724dac2278b89f8e4b3112db7d792cc816bc057dcb7538e88ed1d0ebb6f1db7bd0461f3ebc2bd4bf8260d3a0e4589d213061d87aed045a73a0e59610c77091fd542c7212a1869e9a4e3d0185b48218a8f0f0f115e64d179c71a561de8ac0414b2f86941e79fd5ca07153aff1c59f974feb1e2c88fce3f5770d2f13e3c1ce8ac81110875bccf0e6d4a0bd6d0f13bb42440699f58a50a948ee7d179624ac758a5e32516ae8f6cfb0b5442f62587a430d4f3878c363eb14a4f4d8b35f659823eb44a958e568c7a4e0a615cbb5df71aa8f1a83cda391e99c431da6499e78db2af2e5c4cc6da93cee813b63c26a5bc0f4afeca7a4989f34fbd0ee46b1f75d544e7799fcb8c26aa3410acbf2dcf3cef830971a289fe01c4eaec40ae5622a8b3cf35a5ed7f7ca8146afa995110c89c32d6cc5b3e61d767996278829739bb403a279642848de19e79611df1f33e5d714f4ffcc43e61678b0b57ced35f4f8876214be86f0646a1c9f5d0a07006e8316fe16b378d678aa0b11e3771ca0176784cafafdf2341ec34f6c9ed40a27d807836990204b9a0723a8290b48f118d7d765d0642d296bcb04d93adbad9c6336fe1ab65a07e22d4d6c1af301f268438d1c4aa7f443ab91ed587760fbdd540a97f4a6dc91e799fb0336df90a6ea0e7ed18d4c044caa7a1e5474fa468392385e8c4f0042dd05a6da575e809517a74b1f87aea63677a412095a75a6b6ba5afd2fa20461eba04095bb40d4347274a1afbc896126739715e42182d2f1f1b3cf1b061e899cfd52756a952a549ffcc0a0269e93a53a00d434b10484b833d79e4e975c8533c7fd49e9ff8c443e29fdbf13fb79d7cd13ff307d6f2129f786a165874bca863d319801146d3639650dbc78923b1cfa1a6560f1a8406be9617eb9b8e16366f3a4bec5962f33263df995a343de57c644ff95dd238bb2dcb32995973b32aedf65e79659665d9574c0725b86d271830ca68fa959f363038f007416e03bbedde134ccc793a98984e6671dab613876da7673fdd8c4566862173face84f12cd2614e3a0cccedef48e644a99c64b08d65ab1367a5e7e52bbfe9fcf297caf1a05f113da82f98ed2e272513e774fbab05051383c5749bf6439f50a08fecd331eb5bdbeff47ab22e6802b3ec97c79b4c5249a9e52e20a9e50373d81e98430ecc618f2895b667b1338c951eab06615dff407922c083a7f71edc7eec38fcbdbff5daadedefe59ee1e9e4d6161387bbfde5b02bb59f3a0e152106ad04214a90028c2ac090020c21dae6fde0c17eb17bff1dcb34d0bb1ad65d1ea9edf29bfd41267e7cf0ab1f04b3a542825762e780b0f04f5ca2b1df387f585dfb8d9c7590c8554180c0ffab632144aefac1a8b2a4f5abe14cab58d616336599684a651654b4cd5b5b9945dbcb857d16566ad1f6bb54f21f7e5b3922c0ff9423e20ff18fc15b42a79902c28d578c281a92ae2fbfc268fa1730cf3e7d7bf9ce3cfda62578d3371db9130e1c1db9979190cffa4de7d9e3e579f695b3878ed1c6bb042fce4156504bf0f40dcc2f9fdf4ea54c1c19191999e7d94447aa651e3922647ee92623f39dd9753131318f89f9e48088d960600e7318d4174352c290382290d1f7653379df61610f07b5fc760bccf2f73204af658d5ccf83b9c70101f3edb4494e1ec51dc07207b0b782b0e732d44d47dd8442a15019ea24120af59d79d04736ea576e28d451f8c443e6f2321c27ab7801b3ecd3af98c33c06e6a651cfa7cf6b9c0efa936cd46130122503068604030303922c985b187ce2613ae9a693f224592b9c3dc29148241209e434caf5a07139779773bf28f0476dd4b9ca42b2b420711cc76d8f9c1018770e9f7894bebd443a0ac45a229938a4d7df3982f9cebcf77a5237120906f4914dfa25a1c0d819e927f0e53bf4058c6d024b2c775979763dc9616bf6088f5493f089478b443253a36f582219d1ced71396d9d9d2c2d2e272f1c9cef648677b44cac4e93a0c933271b0d73967136c68e24809ee4c10835bbc14c418a41b9865154de51c9aa9fa0d6fa0043731b6cdc3396cef12c46091abc04d82e0fdc5213e90a68a9387a926a824ec96c4919a658c211a01060000c3140000301810088522b168304d6451f60114800e9c9a4664449648c324ca61ca18639031000c10000011811982b0010c203d852186d4c2630c3888fcc48943dcbaefd6d616668352ed346c5a2eca589f83fffacf9bc00500c266bed10f9108877d25d25c24686af9680937f01e2943b7c1dc88f96599c7c417591ccca3a8867ab521469c44a33afebfe9b7a0e468715b7bf461098b6a20ecb1cfdb190c877688aa154df8ec11f726c4cd2741d5ed78bda0f6b197e153c024da53186a23b6ddaa18ff8a4dcc6ff5595db3b5aa056ddee1ea805e488baa512a44b5a64d08dbceebe46ae399571608aa6ec5dbedcb3b795465a9a707da81ff99d9a571596ac0e039168765ca58099f7d248ee587d5341125227361058e785178ed3086b9ea2ee0eab6c0a709798f3b4a336dd3724c114a91b4db2a65120b646142de78674b960c7220ed369ad644d1a6ac13bbf12293c7e28f91719920a95e8d0b815a1c6893373b3ab051ffa9bae35cbdce60b0bd50fe1c641592538a07f90f3a3cd6bbd58520be2f2c7ef1c2627f6701dd8bd73ae004ce7efe904080dd813a3b9650191761e494fc863f2f59023100544d0d5f01aa770aa8e907bbc239e32cbf04354f1b1acd36e316080131ea8d5e77500ee6b7aff01efbb692501cad9d2cb76c2bd199912b87dd2bc38821b817394c1459f858c59b7da7d49b958f0de99022343839df5b105b3500a07cec1b16d304cd6708f867de4ac857305d5073db1d736acf0e1b5060010d420ac944814b6517cc36f6817003fe61a7b9bd3b1ff858116b6cb59e5d6fd04e52dfc82b436d5b54b80ea3a47214bb4162ca115dc4deb4ebf6b9fba9ef1e76345c95672338ac585eb4c2808733bc638e7a6fb2ef283c74b5fc8b33dc2b0fbb7b32ad7007356cf760b84ba5c048a26a71415ea90ef48d1099747a4624d55e089ded14193b9a7ee025a10879a4642831dff46642d36319067985f64b29e607c884e233f3c489f73800ce4930842e477dc923984f2b7d987276c30898175d3f800afb533f59dbfe700acd46cd9ac88db934da016668c5544f50edb0b9eb5637f3344018a3db5856b11196049f8d88409ddb831624baf8660f2caba36090afe1aa7eaed9924c564260545943e7e559f22d33df987de3a05addfb62f7c9999bf5f13674cb4811b7eaf4a0670e8cb33d40dcd1b60013bfeeee8da3534a15cb1faf4879d3f0c19834bd329060406c4d5375f23369b107149e897e0bd09cd7cc49b69f69082653abd102b02f75d3a6e9c5ac3b5f1434ace29dcf17f0981fabefbf4ed947f32776200d4ad4fe122bc3aa932d03530989e6336ee2d10af865ae22343d474e8b5f68baf4f471b04c65eec8c8bcf0311ad2eb5c26af88d2d242e28e47f9ab360ea250e2586615895f7f20c29a0b071a2e6fb56289173cdd9ba7c427021e4a15bf850e70bfe5442d5c3098951ae7b55d4df04b14c1a7ef135eb4b33d60887b2be8b503f6d6d214ffed49adecfe66b474943e42095e8a6f9ada9cc8669d4ab61d9aa7e815d4e7fd1f2b3dad35e099fcc75ff1177f89404895e56fbb1a93e25a5fdc010ce5e9d518688e27d8a90985aafffc2184c76fdd4d71d7f2da39eb3738ebf975b5af8301d7749e804f3edb371643664be2513a1facda1ea07ce9653bfed963678eb52069064f937d41382cdc11cac0de2641beb50732358dfbdc4c85af4ad811c72eb617abac32b31c062a92b73646c58e44edb731c14e6b847cd684aa0a6e5f01202e55903fa5a02ce70285aa0a1f4443198cf2a0da43af0bd828bdaf3d3a80b3ccf3f69e30d590e245fcc7fbf672e1d540f8493ad9aeba2d7c9e367fd1411036ba140d6c37340869d74ad05f53f7638c6ae01442d353ac5df5977623c3ce378e7121c84120616f8527f397f8a72adb2b80ab74669f6703d00847730ff740adaad32704a847d411d45ac0ae39dca0174b888d91631a6cf0530499d275c4b8fc0d05401476eac2bcef955844e6f1e5a4472f2cd46d0b1f942088ac269ada6306f2eef3c43699877243469cef83c7f9899cfb5eed5807e88247dc18654830e8e794c33702b9be02c5eb9607fbbb9b52ea7c303333523cdcd66720ec6d754e5f3ff28aed51b40e097ed7319b1d2c97d291965063e7dcdba5312a42a8c9c9723406cc98924ff544596b17394be01aad3a197e82ca37c41a1e61d455a245c83cb005c1c3f280447b48f045cc7f11d933d474a4ded7dc986dc1b334c59f90e1ad579371495e23234fbe3f42d2b82f7dbb02c4ff35bed2056705036f1c3f7287e10c004a0da850eeb286a9f12c2ccad4039a7739cc7d39541abf6c531d1496d145983c680ceb9f7e78a89d7b82e351b4166825b86a745fcdcfbfa021c1041d2bc8d14db83dff9e0b48730d3aed5ccdcaf7088a6315f68e2ada661e809994826301aac4ef5c2c7962ca95b770f1e525bdca3211696d356932a11909c34691735815672e7dda8637637ae69025af6a3d2404986471d2178d4d31c5be45ee6280af7e2ccd9d86b1ec07516331b4b801b935b9e4714d50a98b16e1ef71106ba67d87e124ddb2da58e2fdc6b0413ce8b0077ebd8d788fd8f935883d8fb0bbbe0bfbb4938d88c63477c9c68c525468d05d8adb9604c77eeb8d9a72a4b74566e049ddf7981a1655ecbf198a544110844592bc0a92d61d69f16590ea045d0905a0b6c3cc44ca3d0c11416c052423b921f45991719e8076dafbcda0471b33b785cacf85d25b85faec6da10d63d664eabc1faf5047b585764fdd7d23a54e37b5ba924fa105035aaa3d3d11e4ea7d4beba9d7ca4a4f95c9726472083fdaad3f7b7549a9bb6b42e70b34f14f077cde2fac49f31ad5075370ec21dd4b919e493c9d84416d54e36606666e0db338da5bcc9997a61554cf312637cda31ed7eec0f6c99dc4d2acdfc2fa5fae494289cbf56719854bae43bd9d6d4f2b5e04d2a769f57ca65f31ed102d03240a44bcd690504dbf0d21d0cad46feb251cf315f6baffb6240fae4e7e34137b08f1f4cd3efad0f654f2d17e5133136dbf77a90c898442f6ea150cc59eb6f8b7182993efc282dabf12afaa19ce861475572ebb1b7a4380899c46d9a7a934f2e188ac98dc94a113ed20454f0c3e6d3177a13281f9403b55c83172a9a454829856ae46f3e763c05b9e148f8cdfd0ad6727c45a27cc348bedef5d9d9e4ac12f8ebec55cf5ecb62756a42543e39d8778674c6b833ebc3710bd4d7cf3ec4e4a8e2b3048f9ad586d6c9a7a1a22e11f5a8201d6874fb20557af284dc43a1d62687acb21caf96ee0bdd3057241018f16eeef2e0064757da1406f9b3a690bb2d4f8765d0e6ae4750e153ca5fa626a26dd59b94188882847f9008d66e56606c03961e52bad56de8c7bbc16d99d3663764b8344dbf39b06bf6641d20a71dd3dbc43cf870253647dc5793bef12fb4591b7da331cd2b896c5234c2df445673c18b135a16c957a9590dbba02b032e43077eb9e8f3c99a49f83b9fff34ca688eb85ba03c238b935e4f465d118563a5a7e739cc4a4514f31c2ea236883b6bb55fa311e6017d00afc2628d0be89a74d38ab4be29c73894460fab5d1a9cd0b96de52a167239c9e5c4486befa77f67c992cab780bdb4eab8cac3f86cdf50981ea832494cad4a57bc2c6d2ea8c23e91698ab8740bde75ad80b452679aacea337c89988aebf79b725d50b7805276f338902f889a59a8b85242839cf54d410f66928c0600ab11a1180a2f415e375f6efca30cbdf8f16e0258c71b0d7dcfb8b155d6e8dae72d0a3367ac74b1b0a8ab333270ee98cc47212cda11a5f8c379a5dadbf9ef8d3d3828dcd98425271ff24a57ec44a740d830f08f634a3bd033c0bf0f8cba125ca6ce4d520eac21f35f5924eba01c6ce2b57647f96424afca329d060c284e5c1719f93a016be437c606d99399c93d359c8605a55bee5505b9ef2bc4480ea99b7b90013a71ebfc0f46285b1b307060bcefebdefbb57f81740671ffd81de210017f6a9205536ae10af4a3080966252fb1e753339c27e959e4dbe0646c5e802ed484001bfb5261b7b64319caa4a3402b3ff4cba472164516e04b49d8f3c46742508d93a7cdfdc6f456fc73bffd2239e325112c68df3119adc066d9ddb70e00cec45b538752dceee7e802c15e2bc6d0545315b4247814803bef10964a7b99544c32f604f51bb27539f59104ef37c380238e4a80c7a5da3d82482ed85b2ed6b9cd9be5867cc86c58db4a012a07fc3fa3e4353179910e1898aa8475299b50eccf7fb94414a7022b8d5f4f95813b91bc7d019743c4008167983878bbad71ee4665252e2e358b87e185cde8874d6bc368545ba96fab33391035a7ce60f86d8d6c175bc10c3ecab4a91213224591d71596fe243351734df84eab86406a7aae729ebcfbba719314f4dc0941b8497bb312438fc890c89c3b6aa5c9aacb7b6e791c895789a306c547548cf664730bf3b072a61680668ab04e3716fe3833d0f44402443c2e7e114609012e5aebf6cc56e8ba943b7fecf272feb48491c30f1283ba11cca55b2e54e3fea1065fb95f88b4e0c1c956ba406e2c5b829f2f5cf5439491ac3fdab1c056c220d922c16f17f334380c8d6a5bfc4ee8b468540842b5b067d25189ed254d40b996beee3ce7ad4f0f7818bca3660530f4f55977072ba8248d47431620d9e49c15b641ba89c5d09dd1dc155a130605c744a029fa3f1f4b146c901e11c270a7d4bf1af02ed5a7ed8f0ba7ab3999ced682ad0537cf46d67b7daca5c57beaa363c2da24d46107e714bd954489c998ebfab134ecaa7addb184ccaa0475c4fc69e886169b2f9109d26bf25aa08b767027bed94d9f5a7afd950855ebb573a7cfad922967f17dccb2dd15eed68f7fbbedd89715d02cee0ab94d7b2b746e70aa57a1eaa95ecc6486139c3b30d847e0f8d162c4724a540b2244df62a3f10b2c4817dd57a7382806ed5734caddea783410e37fb573d5a9a0200a241a3500d8bb79ede4bdcd9431106dd913f723737f36052be9beaa949c17ae3a007cd8a526a28a0b047de8268d4c551b018469b632ebcbe612310918dba556062b5bd2551004609d410b2c284b7859e3316020e77129213fa4346b845eceb0488df8ccddb782394baa1f914c23cc8656ced4244868e58aa858e76fe446b01bb5f2c7e5ecd0d3eda868cd6ce87d4450437a162cd8d4fa9abd1a4e65b9f16d2ec5ec4a7580c5cb6caf241a76e60bc1421ed1a62acc0d06800401479d431b57da1966e236daccf9aea0819ee76e3ab12fe20a9ab4a9bb707ddc8ea897e5437d05dd57648f3144b9ac742dd0fd6f153bb26fed6e396ce77b84db97a1225eadd9aed3ed8aa8137affc7a8bb8269ff2edd275a93b8e4274d2386777c774fe2d4fc5eeac1da0730d405669120fbe05806bee517147b6591acaba514423f013fe3f4343aa8360b1378d900d6295422212cdbc4e78b4833629bfbb3fa196592edf3ac9b9f4d8eace6fa18670130b09cd968f919f5e82d5047a3c1525705b0b807e86b840b49d06dde8dcdff888744420153e50482c37ce41af320fc998a8ef8aac899ba9649cb48db640bebda5e38cc4916cdd41f54cc8c2d9a06ebed787e395dd4b8a0771fc86baf2893cf0044ce2ff3f151a72facaa7b2b87f15e9437e80ec7addce1cdb232dbc1d38e308238c07f86398b45da73dcf83c83086df0c6c010780dea14c538cf50d14fa64bf0829ed7b510d00f9b2703d06d108321f3e860310a364f589d7f82ed6ffbefbe1b54bf7c2812c0b5a2d54f13d80e645045fb4b8ee9215170ce9a4f516718f3335730dcc059f74297c3e985956a47348b05379d18287f13057d8f8f14f1d7a07eb2584f2e8e844f8130427a82b6de247b6cf3bce5751c38ce3971f2c68891e160dc1b0f8d5241d2452a2c931c2569ad95dfd95b17dc102cef34a3e26f7fbd7c67b1bfba6e7b07b20e6720212a1a3f728b0a5aeed42d18329d3885c4900de5308369ff2a3ae566fc699a98cb4658bc50db31bad21833f469d2e5034fb2b90618ef7be91c6edbaf19924df7c5147cf73c50ffa282e9b787dd187453ac3692ce0299ae922a1bfff3dd6dfeb3b2fc477224d0cc96adcc2e5568e66be2a3714b979badc4e5cf6f98ede5e7015a6f8e32cdbb033beb9a9e366ebbacd912f70abbe1a2b622f0e1f863a013203520712ad366713f47a8d8c11b4f02fb2e90b73dcb272507a6daed555a0b20144b2f938197c5c65b1bb37b403a66c13ddf05ff77c2c5d316b923651db2a4593aa640c30da43b766523eccca59d06b819fa74d98061653b37abea475427dc31f8b48b34b182e8b97982c2d8b71db2b0870e1ea13d589bd1bc0ec3d47104f4c2aa65676565d0620d05c16652e494ce31a49d82331c23e0fc52067df7d3cb8546c53e4525db79cedb5b747faf504a0f042dc72b31b6ffc608f515a30ae7df193eb96b706e5d871b2c11df50161df276cf296a5c1a979cf038a1803d6b7b616dad140b8e13434a6d7dd297de394c00fc9a84e7be8105d18139c7813031bcc92843e4506b05b72bfe47e8fcf92199bfa21cce2fa9460c2f6137843d2eb053cdc01906770c6de2ad60369d8cd67d28358414bbccf13111abde3e3dbec784cf801bc834e39973b464054c35f401698159c59dd9de714fc87305529cf92da804946e3a1ebba799bfa7269fa0477c8c0c2c983daa96835d8dcb2387097ceace361891c102a906cecc3ae93518d720bd61a368b774846d32c80ce96d6ba991faece975a659d1be07a7db653034b4ed330a36c18643b17677515a0ee47dae10a31e17615f79c8cfbd1882e76fd6fa7ab3eb9a2acd5b91260c972766f503d0ed2dae40b446b57b859ce332b7c5cb62cbf93f99dd7b609c536ae0b9740e6d3e4ae3e7aa8cf21f288b8a1fe495114cdff2fb4f25c01819053354039689e8c42ae77bed4fc77c5f6113c3020085e684fc63444080c8b74e31ad6e8d029494767a8d7c59ba837744b2c14158f1809558a2556aa3afe0ad13cbed833e95cb2adc9c73cc787b1f1380e35fd6539f58d67ba5c0641896ad27474d7e99b08e44feb83aedb8b4bea6fe637ae01ba29b49857b355d1c43009baeabcc94a8f783a2dda6a6d8082a85f39106520500f8c6a65d856da9135388c46cde1e9d993108927c044fce52d31502cf0a90bef99249e6f7c5e9364e3bc891aa8f3d7fd3adb7afaa95ec446cac4a406bddc0a29e01bf465b55d2c00c0d2022245626dc3470b35942b861f33e8609d7066b450bd255b483b9fc577b1811a0909b707276db2338688cf6190f781c22d02c0dc58502c9475d1bb49eda154a255f755839aa3191865ae1ece83405c5201bbf09eb467805f66ba45dfd2858323b093e7ce93525cd1b209ebf68f33c0af32b3a1b5584211ea09cca94f53730b3ac5f453d28688c40d31a8d533600768041e96516027a46f0d59d2b798823fd59b2a22a835f36e9f645484dd1b1dcf39baf7a2b89036d595aa3e2a0ea950d57e8fff7ac3482b828a72aa805dd2f6e2e21095a4623b1565cebb906245297be6f1cfd61b13a699c0128b074343d84b9cfcfd74f3111c8c969233f83c2e4ae2c4192b3162d885dcd41550782e01d2666748226a3f6834e54cdeb1cc054f07e0bb7dd6c2045be2bf47ccdfdee3157f2d96c5d82b13731619eb69fb365982aa58c60a14dc5f77898b6b8ce9c9421349db61142c8b27b787ddccefe684aa9c89e87a934b79a868cea0dc85c99b8b5b7f4778578a5364238027421cf0b212a2416a196ea2580c20f5b8df3184bb27514cbd2bf3ee1bc4e7536c809af774f276305b565951d48ce45d9ea5c805374f50829c61f5a8e921645d51a9d6cf222cf78548307904b8509a732e3f09d21dbe619e13f7585d423f4ea6836385dd3943803ef4c149c8086f51e3d3cfe3724aeb139555a4a1cc104bac56093ad91224c85fd42363a2ff3e682c3e25bd5f1c3b5cd9406b3101d84aa06a41b1c01a4b7b5f3c94e5b4148de723a4bb24a6ed81621b230a4d0f0a706c93ee714f01ca475fa8a32f6bb56e6996d10560abc572be14e2578dfec7dd9e0ea763c79c8efc6a927706ab6855157508b2f38b28addb86bc3eb0c1d3aa8639beeee52442d73aa53ec889132e5c82c07a7d677e15a57cdf148049cba52a60a77233e7ac65e40c6e4f07997c40ff67607d3321364c400051511a3b134c762cc07f8884b774ace16dd66c502b434c619a651b79ba2432d47d7a35eee60351522793b9643f39ee368360e8e1fd2ceef546ac912deb8fb28dc7f0ffc533a88125b03e8b055850c073af923d4f30f7ee489afe521a08e5a6f9682c3a1f2cf729167d5dcf8d529fcd00d05bfcddef1ef15f177f1db4fc824fd289e2eadbff0eb9b8ef24234810223e058cfbfb6dd0b2d860e37713e273a058d5c0d0928aea4ba11921b295012efd6f8977c5c4ec9e79b9e4ed71122e284062f3b1f8c22cc1934b722fa2cc8ad2d4f13e951dde813b4ee1bb2f2dc41af2c0e62e322c5be0ef902b3739f4722cd29b13839319e9f7cef5d8161a04c9565dbb0fdcd3800515bd400568d279969cf5beca8904cfe618cdd125909ff91a8344a111b2eea8979984fd1f1bb3fbb61f03d179bce3f0bdd2871f0d815e9bcd6c7777519c091b9f9f80dd57eb1db6244d664417434c7be35f2e277e917cfcad11f4b202bdf9265c733fa62c66022fc82732de369787e922fa708925726ec8b66c927c9cc1eb676bcb5639d7d5d1cb3eafe2f78c783ba339bd37d4080f2b59c3e17c4af0021673313bb2c7ebd1151cef63ea82624539fac95227d0f10a8f7940719af3cc775878eb16d91eccb4bf844ca8750cc702a5aa49225a459694e947a9958b53cd918235eb894f632972398e4f541aff210503c0f152af2bb66899acd8aa167bd4265a5ea599a5d9852f360ec50cb3e458e64f9b96d2e915856a251d53a3e8a0055291cbf573ac87e19936ff9ac0dfa150353374c6e4f720d7d393f5d63c081c5d75b845e1865b122da3ee79c34e6a61ea4ab9c616bb6a55b445528f6f0561f484027c96dd1258c069d5cff830b20307042fbaaa53fa648bc6c3af81df7650144eef6adc5c9a8993459d0efbef59045a30f5867f6abdbbf950ceb1157d855fc51c08e0744baac06bd6861f6f928e71bdfec80eeaa487658c40d7a5e1cac949c08a7f54452b75dfad457205f1298167155c9016f03a6757f3122f9916f7dd673b78b06320544d370b8a208e55ad163019728a11617d8ebfed1a74977fa1ff5da7d3f87169193b0e7504383ed94fcd91a2b12b3a74941e75609a6adac32976e031d85cf65a63d123dddeb85252ceae515d1b90b40c9216c0a59f86e5a2719da546bb0c3447ab9610f9c95e713888c45b2eb1e595a655d1aba009dec5df68c24633bd5c70c015bab8d35077401d7a03ccac6bad5b7196788a8423562b71ddad651a343d2f317ad20471475562b136ead328fdc594666ba4a2603172e28be817748c20b0b6112bd37e5abc85259fdf20dfca2a2ea1ec6db124ef1053765feb322c12341342e6deb52f7481b4d520f85fcafbb1a93b9503d495e8300d33ee059cf813661106c13538d0ca9164fa3eb9b86bdb69e280cc742c3c6f5391d743d036c8ff336f60859a9f55c9c05bd1a3d64c7e86694910dda62ce650271c6e6d932b9d03ebb409f25350e9bba4803489c876a4799f7434e230dfbb56bbde98efcd913ea5b7f09449f4a5b5ef56d206ab1996f078f02a7303e4abe534ae23f90743136157f8667e7b5b4749acb8dd4f792dd5ba5d8e601b67b57ec000c15cafb24fe4204a3a1bde52258bee69f42bb1eaa28aa14ba8573faf2245678a21fa726c7d7af84e661a9b29fea9d1f92df231ccacd6f6c5eea763b12b4cc26264a973d24e2db5f748c8a8243df9dc65c715bfd8a6cb2998d5512f911152cde8f888a737fb595558e85fc30a24c4c02d77e0da00bf993655a604b3f72819625aa029042082bc50487e649ee9e4c8002f34b292c8be897af4f37ca0163b1bbb3d7bfe559880fa2b5eda613a5d54b88b797887b20a972bec43542d8f03b1a7fc3991f037c6765fb3e36793dfb69a43c6cb1b563bc60c7cd1669fd6cc67eabe50c47e91ba8bcad1f8b287cd27b26acfdd4ee3f8d5bbb67ea7747bbdeb85be8b72f3c2533ef7cabf8fb5304818a169d3a20422f8d6917c9cffeb1b315fd3c462f3a15ffcaf5f6546b0c9410f919ba7cc2054d419e6743fbf57f73955afa121b11efa13ee3f4daccdbf4e5314336ed4cca7a7cf14ad1aa12f09846ec83c5c311238a6cf363cdb110b1e760c1dc5b9348ac8b4277b931a69232415e2312dbf7e5f43c692837ccd6936660f2e2c13f76ddf6aa3862801883b92500cb43711028d0cd7bfc210494e9f32473910b467e0ce4c4cec6cd01e1194fd7ae08ff4ed3e2a7c4a32df87de1ab6d6b1c3da453643fd88d7769c06cfdfb3e0912468a9dc0261df7b39979bc1ab6fe23fe11ae8c554827cff2462333fb001c650ceddaefba52584d35c0011113bfd2a41f3b15a00fadca6bc928c3a1f66bca074fc8715f42ffc8a199189ab330e168ef27ae1ebce8ae3eba463c7cbfbd3ee1421cd0c0419cff8020c39ea1917c27cacb5beb5de0823708d67f97fd67059e185b1d0ffe9225592fd3259fa8279c427c80b1073b2b0ed17c781504e7de5296e1139ba157287bd9570a9f4617af85ca24e34927624d151a42a03d468055999c89158cbffb0f08bb9165559ac4bbec990e3e812ddc1f494ed7bc73257ba51b369ac961706d44e86850c22375cedf55301544e5d23646e52543e8235695a2d59b7341a9ba402d1ce6a1b41b447d60b8a5c8898b6584872f61dd8baf53b4db629ef928de284438d3afe581e045b72af8848ea3095b0f749595aa08cd00b2af6466a90dd98a7f896df9265858053529229eea4b92c79a4ca95153bafb0274689521ba26025ecd781c302a63fe8dbbe08c470c58091476f07fe063218da921baca857c718feb003dad657ab38266b46ec2a33a9c96f3e39349aee19cb616859b7f22e0a8c64a39cad69662d21299e75ee84c302b1a0f749725a20ef16fc454b0388b2f113205857d94c3f3238527e5a1390579117fcebbd081a526e008afec9c73e324707b3020d06ce04163d0d77e440c9c3989cb6a790eb68c9b889f38fde6cb96c919ab73d7c41af969b543162d99b90464156752f13333fd924a2d10a841d4de4f33dae9c12e763911e5b18c293a429431480a3b328447e5d54d17213c3d07fb179484a732a408a22c9b27dbde2206c513de3a40a40b16ceecbd81f3a15435c4c74adc6c581a83f1f35a41809c5c7a5e02977fcccdfd79cb494af9b88998b8aec90e1fda42a6988be8f12504974c86a380dcb446431e2cb42f2058b666e33b514962a84c32e7eeb5d857f40d252129429bb386d27fc4fb5d035d8e5999c68fa74f81e9f4298b7ccb956fefc58a91c621b5faf753fd3cadab079c30e8393cad1987c4a37e720b6a53bc8de20abcda70ecf8068fe2533f7f63d3371134b8e27ed9352247d1a8349d42155bfae668b734c585feaf7238abe68eff32210bbeccb0cd0850762340f308f273f0614d581c8e3015b10120b6a81e045698b86ef25cd0cc5d5053cc76f4e80baaa6fc893dbd1740b5bf2c1289feacfc95c4b6da80a9aa786c027b3029b057e3b8bca77cbfef676cbaedfc80e402cfc00be76aecc3805e40dc4caa39cbd4f62fa5c3b280f625aeb310425219a0f6c32a14d5d073770d87b881cc8e1fd46a6201fefcef53df42e2955575152df0a9b949b7d3e31f84043f07876b99a6d24538c6aaf2f4aff7320b179b8b137bd90ca521dfdf3814083070b77d9398fe52610666b827822ff6c221a61d2ececf62d1789ef6103051d2a36fba4ebd64e9064a4548fc194fc446917017cb709d68fb68a21b6af0c45d198e7dbe0644977f219d578e96c948968c387c07c59e951c503796e122cd797c99f6204c0313bbd289678f58572a87985fc18d8ddccee565ab99fd4a2a9c07f18c3d3f3c094506667aa825f2fc090a5b31ff03e3d3ba571e6ee26c83ef782610e3daa3834ad14e932b731f3ed4f7a8845f68a7c815b334d8d8bcca88c90e6397657b2b40e13d050d93b23667bd5b6e67908f48c3b2b369c9e97424f1bc32bdb4f9ffaf9ef9d83ede4f5a21235169cdc27323ae2d8fc0a31c02856bd44500bbd93baeecd36a61ce3a895418dd8264ff41e099f428dd8f7ab2012c0ee569b5f2fe2a015e21f3fae8084298acb45de52ac74fa0a9f36690556e114a1de127992b88adbd202330fdabce77a446c19af02cc8484f34ed8d498436c3989270689006460b7694d821f581e01ac84c76e661d18f09afaa9f325e873bca8cb148e0e4234b371554787ea34748c44df620e948b15e9909675ad4f767fb7ebbd38458d444d79116d9bbc52ffcc3fd6b29ade4dfb6a7e5fed6abe8513b6bde6cacb9cda62b168ede1963c5971c95b9c9a15a4198850065a0e2d2637587cfab007db802b8d850810721ad29846e9294238045a85e0ca429547de0849328e68612950d6599ffc178c79380fc1fde1aab7b9ad26acd5e593d6ce1e62c33b8d2ad03aa12bce4200099e59216a4895967d67ee27b2ae171db258077e1fd7f7e1b05fd0b785a6a9695a4f92b213550f15871dfdfec05173725bc2b40e320871e0682e14f3040c91c3ebee97e9c12c238455d318651cb42bc640c63aef4eb8d0164c615a315df45e3ce853899f1dc51f373afe0af407dfa0b6986e9eb5b1366bb048a00c26786c72ddb6cc269de6e98e7d00f5f0d6483cf477a74cd056c7adb5d451ca62af32624b103ac3faae0766082ac4b60b854b154604ba48b239d091655b8ff29564a687b7232d2cf3c573e7da5d2985b4920f62c1527fe49b065365e825127ec6a8e44a83327d24cd778ad88ee2e13070ba7692cc606d8aa4809f2c276ead1d4fa1d52315e6929482942c7e798cc80a316cb949edcbee5acbd98112fc9d94257aba56ac43583f9a16653e83079880931ce92b41438890f77aeae922f7c4c8941f5e33e9587676e727e7d404203931a26da6b9468d5072b2950a4aa240d74250015e5272bbeb9b7f1dec95aa8f00cc2d4dc383199799657fefa53be657ac65f63ce2ba4686c8d3684c4fdb35736b388fa08dcf74b5d56d6f48a605cb4cd9befc211d520973c5c5f2913d75441217d82287f22fd1f4dad69a0d56b159d51a19b72fe18e0d37e0372750d2b39ddc9640b982cb59f4ddc8caf9616de3386c833b56eb53c0d96f34e5a984d86dbdd82b6ee232b8f6471385db15e6bbf5fae8a400227bbae8558c28b81c6d1b86692247c12fbc085c806a61cafe7f04c1d8d2f936f982df51d782fc4f8aae9519fdb8622fe47f7f2558e9d264b306978428a45a9eb95720020d12e3734b5b351fc2479ec537e9ed6a0df65288aa5c659c15611210cb6e47097872da5e4923506d5ee1e0ebe2e73813c3bb88bdf251053672469cc788efaea40d8a97e4e87daabf073362bd59dd095d0ebbcfc8416c1d096b52465a19aca02e2e6acda1b233322276db26401ef33650f21554b681532b4f39f24734c4071d209e7944d90ea9b7eccb96a70964bd45e4607d7bb3c59ce3067eabc316acc7312f4dd234cae29634c3169eb59126b7ffafc0c14a26667a020777713820e6a049036e386fedf04f9db9e5e72c4d6606520bd7919bc6fbd8e9c164f350f4df6a557ef4541a4b172f6ca36ecd6488e391af04c125d221880c151bfa387ff837e379b202bc9fa7094d82a4046579b24bf4e225f04b9ce59b9a76715f59e2c654c5b0ba9a1ac764277c49433736887279caa4ac58f33434f9b550d27cf0c689e09ecd512889c94284f008f00d04573a9ccae523343608bc0e68de9d53fde43d760cb02ec2c527388e28e800cd74d97f1813c1016660e325c7288a906c15251f8dc9fdd82c7dee4382fd97eed66658440ccf2ba7f9768a111043611aa556c30c89b97d71c045c46162f76b880bbbd43cc9741d3572d637cedb7669a5cd26b15bbf90a9a50d40fbb38b2f84c3983426e86f407888eb37b713cf065c75d7e470a0384fa2247424903824e564281c07649e692bcbef12a6563a148c905caa069aa65738d654ff22c2644cddbbd21a4de21e08bf7e0cd93c74afcd3beb87201247eaadc8fa0e25463057eb3f50e7dae1e66fe6825078aa5d1662d4851bcaa580582b1a31076e7a08359bb77681f741e86293cefd1f729cc14acc7db577ac83aefe8484ad70bcd70ab7b52910bea5968833c57af69ced6c3d39e7338c33e97e7ba3c5c9723ecfcaa2c3737cc83347b74ab4a8a30a32875481e877924e5f339d21bcbc87aa128354c1cc9ea8f03b106762cf075b4b49050c6c29de67b41cc5704868397b109a714280f0502fecd977b89c4126b415a6d70948f12a5c6b2571f87af1423bdf0848804ecc1804920a6ed38dd9d1202dc5add7219a8b5556b98676a63aa07ef84da8f2b5efebeaf68c8a64677574d94aa80285af97a4d8f19c697c0281a7639456b5bb88298d0e2256574b40f570c4b25c6681fe40b03b6dcfa9715fb6ceb56d2dda1193c98f92f52c00097932efb5c1c7132bafdd9e231dcc2251747b15cc8c9258849faf4ced60b391b6ae594931cd88702c92ba6f110e6c3f3a7c22301ec4c90b21f140b4bc10160f442d52648f591a5c046b2b5500b6388f76764b2ceda286629f2cb83cbbe7e53c4950d67cbfecfcaf41fcc82f6807c6e3c7bd20eed53c5f3b52643ebffcf481db3e20d35056344f20deb5edf3e7ee0b2457cd8f1cd4572ed420927ca98a324cd7b8716ab97f8a5cd816f5b947234a1ece7d975988c990d71327eb85a2c3cd4eb4482453fb4a70444d5b40fe45bc69dd836de5f506716836f85bd297426129f55d5ba0c184060d86c95f421dd68a6e7cac7b1f013f84b996d9b839cbbc2efd752ee0a4b48435ed97f1179116753bf4bf834041a2f8343d4d69ecd202999bbb58d07a734a14d95eb135759bdbf2f7639acf52f529bdfc20cd6d2ed44b5eceaada4aaea40e334e3966d58e87e58055ca4702b9d6eaa58ccfe866ee15cc338f332879df5c88973c98978499d69134fad393881e98366c423792cc3555d0efedd4eadebe6c6b025c08eb4ff3f0ae954b978de96e0a884299ae746304c9a04c93c2a80507378cfbbde758b29c15b27a6df75eeb4b29647aca12b62d4f72e2a75ce6b9c7888188a9ab50d4babbb7aa6c9d820f749e0f1b6438acc1b9e3ab3b878cdf14ae04556c63c60a40b8faeeb3c273062dd8570b6a87faffda391da6ebde088466bdd26115b9bf3fe5b159834a541a6e6fa5e282b722561352cfe85fcd90fd6feebc81459f3352f370605c989a54755cf3c06febd045c861f1d594d2645338152a5c67cf7e05ba056018059a1d637d84b8334f6040f1b41f36736b3438f72e327fafab20fe475db9e16c3f1ff544a02dfaa7cae48dd8dd5d2270921f7bca1ad3b3ab4919dc0b6b368fab3147cf43bd6a4ce465b127680288542bec29bfcc8778a60ad52f63cd24d15b1ef9f07a6df1656d0f7b9792fe720bfa08c7640ab3699c8101321470c0c4997ae9a12a6c3121f82c539ee4eb1bf6dccce171a62485153150181d012dd82b248b3a886a285c0ed0fad61e346f43acf26405665f5684701cf3efe5d8a28225ac186fd08fa2e872d03c7b6ba2f727ee950dbf156ab2065752dbc82ba76db08c08c5fb9a0b9528598e00f5c18793058a64fba00e4ab5d25240fe835588ad94b336859be13d7c5246350a28ab9d44d32c143ed2ccf089f8559353661b16458dd76268da926c8bf904a9542e735c3a8cef470973be514873842d6404693d127d337027c6355959205ca78c28685c9f83e629b2dc583f7693a6e2c93e3b31a998a4d3839f71d563e996c5f4856ac92f931bd0ab84e559407d8aeb549c5d7342e47e2f4e3be1708adace5780fca69e3e1527bdbb5ce88c8cfea37690e8844f3c59579df4661f4282f8808a41e5a9d994769dcbc08b280d546f3e2005cbf94946c2c060f36b93a7b1cb4ad14a5333c422233ffcb65a553778817dbd8b37efb476785d3acffb79faf76b88dc254790f0ee1af28aad46fa09346a3cce0a05e3997a14908bec3af31288fa3424b0eaa53370fcb8f6ee68986a4651005232113181c76daa655c6b31112717c679c74ff42642a65e9459ac90d2d3e267d21459bd005e267984e4c18215c4e2e2979ce93f6ad3555004a908d6fb07f6209f565efa1c9386499799ec5c98a961348e458adcde7ab553080f5b543645eb739af908864d98a9351182553eba30a0edacde72da5c6511d2c300257e7b450a5a49102a3ce62c43b39304cfbe4870530fcbd9b3a9efcd6f8762ea3f703f5f7f1c71af625070e96c0e3107a2cde049caf2acf9677240362a8e630c7a8c9951908e9e2184bdb7481d7da0c0ba58d860ed5564394b8a52fa70f0e8b55c7ccf175baadadfa77d07298521cc23a7a4639f797795a4739375d1cc9958c9d835d61782d1a634e844b93fe37513494a4c0834304446c0b6d77b51bb941b219cc14e80814a8a91aa608e4fdd498a412d5ee30ce727e8dc2a1436150a9c555b8939f9baab6422112e8304b740996c565c95a8a398d63dbf0846989516dbf1ddc90fe0fa4d4a8bd552024aad84172b2b0bb75e625b82ee002bf83883b42f04b870caf634f8bcfdcb41414d0f2c58ebf7708ed0e7ab941850704a3f5af614a375aa720e00a07345b62cbbeda7d827f1cc0af73cfc0e4a94dad79c87ae5cc89044f9a1e7fe34299d838734950b501f321f29068c230dbe1dcf6751e044a65158db08b7262677e00e1ea8862562d470c04dab612bb4a719de6faefe86bf11447c8d1be452af9bae44ddcd8d988a9248196885ca302dc5dd49a8775dd054683bc020dfa409730eced1b88f570c082735c2228626561438e1a0e0d9f3bd375c743cce08c404934bab66e3c7db688bb4655ffd5a3df09a7cedd796c021e0801da9832d8c6c6a41ceea336b116ebdbfdbf13757a5c7e96239d4aabba52b78b2680ffe25123c959e93b076d6a286091454c6415cc4547d7755a03c8b5c9abc4e8738b978766794de3f0fb95eaa5c9c3d4dc7b4b1042b1534a1db0eaa2c7360990ba04628e1a32170164377ad1115728c066aee36b149408ab2171b9f3a88c90633e6166b2ffd13c0b67de9ec539442c0cea2bb180540cbb5ca40d5f10ca8b96ddcdd514516e0e085071b3c3faca596036c35da19626abad65fcf4de866e4e929338215795a58ad1051106b1c14440cae75747df327c125f1de6f8a56f24c77b7321bd7acee1007213e0041b6b9d053e067436e5c0f3f4a493396e308f790db347aaaf2108f5a21419fa98c1aafd68e15b50254e7d6ac4ad1502bdce9385f32e2caf45491bb15ad3442018febe5a5bf0c5d150f72abca279cfe7f3d90dcaea944ab2c8340f66881107778e2165c244be38d5d76ef5218c1d69334c6c501921729df5dea06b76aaa319458ab98102ead9ca22a755781957105d2ca69aa525715580957302dcb00c7c2335715b5344e60ac544d69ca26d7b5d9be3a1a6ac8d63ae72abf6ccd89444c6c49c77681423cc167a8702b44116e665330e8aa3d552b28ffd227db2d1c7116550c1a0dc75cc9d7f563bfb81c76859d28c66d2615b2906f4601d12f01e65aabd69333cd0620b5d7865d0bd86c8df86aa1e7b4b2b8c6baf21276288b7d2771306d356948717de309a01d2fd42f3af081746dfa956e758af2ef2d0f36e4d35580afb032958eee60fa69090c9065e6338d3bc8abfaaac3f73f8debbdefb9e32975ae0d6d9e3dcd7470b3b15def255283e7d31528ca9d5bd652e12ac8cbdc4cc857b6b21eb689144593de6655024d0deedd16661af078a5b3372baafa90c9308d7b805a6d6360b88454e54ec0451ed73fa3ab72ab468c3aab735962592064e9791827513b52710cc42cbd9a496f320773cea5d6bc821c740f19a2fbff895b7d1ab8a61b1d386f1a4e18ebde9dc0fd62650ee9658c506807b39c63bda90a329b3f79f083d8d045b23be0e1eadda4999a15603b0cd45fa4d24627b9b37039e86bb95a93f4c9256e01e3ba4e8c7a7bee0333c7cbe950115f36cafed8284364a156918e0c4bbed8e1fe5b3fca6798c3d727d7929cd723e901a60a13f38e6a358a759b2e964eef93ffcd0f2cccd7b0ed97f14f9a0e8b7c01ac73b3b9b8b3586afee7f29675e08ba256ae55a5664dcf023d862d27fadfddda93a80eed64137839ed74d6b8d3c1bf3192a504ef55435dbe68cbb7c8da0c277c1ab09ae53fbf0572553f3f0d97935203391694e0e2fbce66994df887961ed6e2287da1f19b404b9f02c0123a6629999eba7527fa323d61f13a11b0f9cf30c5925aaa3e9916f3e34039908f0c23c77559041e2367089032931d9c9de1eee79a233f6dd4191a931b7bab084d2c262444ac69451ad5d4a50a568a159856a6504dddab60a548c169451a55d455855646154c2ba6a94add5568254cc1b4529a2ad455855646154c2ba4a94e5d5568255c81b4528a2aea5a452bc50a4c2b53a9a6ae55b0927a954e6eea5661a8b04a44094e5a6504cd8527772bda0a73fd48036dfd60bd28356c207a5b862ce6a20841ddccc0c5ce35d9c530dc447bdc739230c24a8becc7b2f68193881dc8f6e32b6e49dda142fddd51840ec51d26919344e6e62ad2a77abafadb3e165bc10e84fc45a78d53abadcdc50d8a613e1d8ad385c9e0d3a1abbc8a29db0e7f07a3b78c5d5a2709f8274d496aaa91e992caad6d5961eb6057e7de223224a64e4dcadbb24ad8d42cd9adb0bc01bb636d388b529bc7cab5e02d02885c08df8d531cd76957b9ad46694ec19a71885995bbb8e0a9d0477a3dd3b9c4d4929e0fe535453708e89558cddc13b0cc2079c25b86afbc6b8b96ace8b6917b213ab9a097014f0f55a88829b0a9efa6d37b29bdd3c15fc47c9ee76a790177d79853f5a228637acba54f376b34b3bd3f06ffb6d44b0b798805367c694aa152dabe21c231e5e493259d1d83c40776e463d0cbb811cc72e6488abac48d786e995ed372199069c83e8db50955f91ffc5fbf1f178575a5b81e8a0288c2ae279692bb590a4b7542266d97a8e3127faefbed9d9cedd6ba5afc4179fa8c55c425101842859fcce5a947840c034eab3ea7110a6dcc397a7995693b7bc54fe573b25e408b6e65424f73c7ac564603040d7147e2d909b87041d2a19c18ea43e31393034c684a13137bac2389d1b2a8238a71d09e9e9d0dc5b56bf31e3d1c0c99112ec52cb0ea30a32e8527a68b48850e97d5d68075584a69377743e7598814e0c59006c2610912dbf6f4ee4d0ec0bf16f8b8651c3753190d43566f4994a511b5517dae036257d8064aff49c30c4d405f97365c1b5132fc43d0b726715270df1c13432b1ac3c9000f1829e3aa101d899b9141a03572d32e76341bc10b7874642d2d3b31daabbbbdc944ae61ffabf349476a88fd7eb8ac4c7fe9627536c652662d934a272f2aec7bbf50e8bfb77f4d6e8e6a022348ed49cf662efc28e022c0418874e1cda8a47348547379be8bd9d63f9cdf3ab665dedfa8b050ce82d9a0b8d9c4912e1fbd43235c0d2db49447fb3e8d209f508f0f25ac6d2441ba5dd1a84a9c241306837b7ea9b3460164d37e997040655afd64bfc1282a258e37047b8987f802b65c08a50c684829692d86ee9dd658d487ec445d6d85849e9bb10bd57a7107cafba5abdfb00f38fa583eb8183e7fc4aa708f051f22013d7ae39fcd72947aaa8fba02776f787ec317f4e023770fa0a663c2e75a73e25c8da86ad6658bb60e51dbdd0c482ded3a4c3696f72c6358ec057c4abe0621bdf1619775d9b941a047375ea05e30ecf569f190c13fad35645521067231bd82b1efd746bd5f9d9dae09325a1505e8dfef5f99eb25cb1a2cd93278f659bc392a222237de29c75adcdd32884d6b9859a5f39db7b49a72724dc418923194eed2b22648901fa59f20a10e92e2cbf31cb95ad153f09fa246f761b67e3c008dce7a3c40660ff46e2dbb0ea7c328b9bb776a1a01dd0eb26c931a3c65cc9f40a90f5849f0bd4b0e7513aeff3801426c1a9cb56b04bdbc08d8b1e658478dd97e6b3971a258796e2e9036272025421552ee38b4244d55cb336d402454b4a53e95d22c6c7f31d1e5e281db8f711a55c3c1dd34580e792941ff30ce9463cc53fc201b8f9cef219f4ad33ba83fe176329c1b8deaa2a38f8a587f87db5a0db54d7d5cb66b883308c1d6abfc9be3c136be9453d920bb81cd491135a863fd08939d5ee0784035bd76af12ec0a1ae54d0e64a96658624753b8997e1a3bb403649844a82a7cc211ba499e852648cd4e8b44d7fcb2d14e5b338a938ecfa79f4c42df1788175c334749ffc15c72099d90318caa1795891e4497e3348f7dfda5880b648fcb53987a2d6bed1a9cddc4f4acd98ad626a3dbd4aee5c035689ba445a9a041e6c9304350a8af010eec04506a65cfee56421a9818df2d975265b5ddd7146642930b23070609ada787ae21bd0987d0d0c86950e26fec033aeaadc0acefd3808ff4d3f290406d5b6d53e90d9bdf7f1519cf883694ac9ae8d64614c44808082412bd9698f3cdef07d128fac2b8d1b05b90c1d99447a0061c056d8ae3a49901ac8dd12b26f7b336731cdd4cef48276851264bcbf3c3762c6bb6ad58451dee51a716149f88bd8cf74f2fc1da17636791c49b96312d452306f09e0cb0dab9cd01e5a586dc69336c0acc61f848ac973b2bbd7ec1b2f68eb52be9d77159cc61fb0551d08e258afd9bbb788b59110bdc4a1556f65a098c5f828f9595fb6175ee643cab8f8c4a36d462f5a6fe198430870db8144191c3ab02983cacca5a801bdab56f7ee0c00a95c1583a1c0da2e69d0260b64b3c965d065e5ecd7cf701bbbcdb3a56f05e6f2546206e1da9cf31fa2c8cbbe939d37e3388ef7faa9dd786089ae5c9a73cc57716c9db3a852a96f4fedee03b59f9fc6720909309f61cfd7bd5dc5a9782b4c002895258ae5cd2000086560ce879befd08dbdae5add0e60f713627a51b84d8b1621eb26bdf1d27e3eeb0fda8c60fc241f2c02391ca74ba38cd474f00cac369acc4ba95024203e1b26ff624c69840bce4ad82b8cc09299c96bedded749c363e5cc412f62c6c98a975ab64d6ac690843b30afd9f6da81ea85aa9f7f453e8e81f30be9401534d1ceedea4c03130537f776c48209bba5217fc9624c3013cdcb6b856ae58efad0a240bc195c52bc0cc784713765e94973ee000a17dd2ea068f3ed8edcf7a393038710bc1cc32fd7b558c15f9c1181a4250f964000c6a87b004f45dd76305959fa52c9b0491232d421fb2f4412c90acc854e8a45a6203048034c2fdca1bc211adf9ecbf67ea8232e6260e39c301f382860bd7bca0d52e7dd8046881d3198470c1ee595777631396512205c20da9675bb25a301ba6626805aa59f68f7e6f52b6850ebf268fa2024883fb359171fd5d1068806a01aae7241bd4bc62453e55f656d51e2d96b442a37bcc22295abb72965662f8063da224ab4bf596d7a76fbcb7e6d5841634cba21a73bc569e10b107a0669d0b365bdbf06e956f75ffedd2c01fc3917ef3cde51a2556c8b85d3eb5bf124479222395d02563f0df2a68bcb11009d572dc41351c1137c2edb2ace298819c7a9470e1d8d9a5bbe14f803cea2a8e35b5412aa9f9c9a54d25ae0eca8c02d9281114abe5000a6bebfe725b06818e79622378357c7081832f205b0f823e765480bbf53ccdf271a51fd7c458386b2e4da1d7c61d66d77f6a0bf86a54bbbfc5ce6f94792ee70638f6ae55a843255d502c6c2a431603713c1669a0e1514414c570b1578660201fb0915589160976ec6f0e3f9ed38ff61aa9296a798669d9c5d47021d581c1d47e888f714626644fadae4892593e2d2777da7a7dbfea099951d9594af6f686bcae5da4f0aa6c4bbf92a2fe5b2ac915f4a8f2162b8e88041f67f0d1231933d6368844afce54c16a39d6b3187bf1a1a05a7e124444bb93f8eaf32ae884e0b00fae56e253e5c068c5bc608e329b628a4efe3eb2fca399e209bfbc2d7195b8b6958b95a638364100fb76c4236af76b9390768d298d1cd75c1453c0a5ae125fb1b6fd40909c214a483f1c74b11a8ec819953b45bb6e95e59669ad6dbc1a6fab0a50ec86bb74aa0b3252a2e3874c9dcbb8ed6b3c86251a748a78d0ae1b7e7656e6a31d5d79a388d26f0bde69ad4545263dd0c294fe5ce66050b7802eab4e08471db12e2e9749a07e2f96a931b6ae3d529014d66858837b10780a5c5125ca0eae0144119b8989c5a437bf8c3a9a673f5f0a1c29c6f4381ef454060f3737ed944388be1935c98ee2d91c66c0283093d3fac9a40704c3db449cb419e0d327b697428fb8589af716a87bb62abb8146062dbf5536f1931cd1d6f1dad920eb09d6fae515157e3c660a84915374da1b6a4f08dc0322e9f393d63b87df1b6ec18d8ab4b20a61bbb26cabbdc2e0248338a3d0338046c1db4ebb830c848826f345be16089c7508a2f511e3cb41bc011668f0de24dba2dc6daba5e584429fc2eae0274f6692fc648dc946f92849f10292fb33c118513eed656775afc3adf02dadb47614ce298cd1d4934a46995c7cbe6929c846f9a0b185d076b59f4b2e5e2609d64941d7a2141b7838ea621283aad1987b4ed80bdb9f7be6c636c42fe5b30a9699930323ae96a1d1b7ca0c2dacfce59b3a9621f28b50f492ec657f7b9c50311f9abd4a49fe0ece5d35491e29f7ce94e355c773316243ab61157ba77cc53678d8ceee856dcd2380a162dd25c0a773188d4b2c058f28c086a8e9f6bc9c19b76d2d65c37308985fe2beaebe54bb2cd113005385160ee14be76389dfe066916d09060cadfcb1890f9ec161b4bde98a44359682f3caf3e7681674e75071964b329ee9f6bd57c958803f394a089006644c5cbee162a7b468cc43e33431551e02759a025b24f3a6d921a12280683179a15de6495969a831341088e3bc1aae5898f162c03afadad8bb92460b512302924cf0a5c6040409b652a7fb71b9cb849e95f16b88d78167a14e3e636c994d7d301cd318d05285207a4b191306f3fca3f8b5228c4f34e8f0b667f8cb21dced35d3a088923dd3564d4499a8e8c6ba011d67f5fdf1c98c4a0ffc8d4d99abd5ebc482fdaf260631810ab4f113288dd8dd4d633f386c753ad125f6d1059d9211ce1eb2f5ec429053336d47c82455c7b561fea8669b49bc837c30e666ac830bb9de5875bd392c27a7cdaccb2cfb87efcfd4373ca9dbe43ce2920f99c90de8f6b1155caa9b339ab7017c8fb7965101554388a3a9ceac11b3b2180347cade3c53045f709d0d1a2fd4948d2f546ecee965fff77afd108c123455357ae205a0d0985bf466ef9e61bdbd7145fdadf167a06100251e07d949afc0e381e60c4721482540d6da5ffb142f9e77e4e78d4696ea5a22a4b104c627c2f8a5cb369bb03e5f450f43ecc59ca015256715fea72a70488d811d6e062dc653ba47a551d4293aa710d04fdbd7edc2984139db19c69340eb569f5c8c5458a91d271f6d00c937e4add056a0e5ad8cc694543402bf4a1b4de56130d8504f84c321aa54c3a75b2c2edba07f924e4adf5d1e555fad848df36aaec6610066cb13fe835291b21c608b7f88db4192b18c5ccae943a3ed0072813bf65c1086d99a3e6a9f0b020e3f4afa0f34d98cf142e79de7703a5d40db0b49396b7e5b8d5ab80fd7a27cefcd080527fbc1e521984133065d30a5cc8f2698c613dc7bb0179dc5181d39a862a5b6758ce2060809ac80511fe00df41e38690e240800816a7a061c96e9d30acf0baa43609948aa757ff389ce9bcc76236212ea4d697955a7cf205fcb52739dc2df531c85a9c10f1aaa230113db00334c8e7471d01c77e6499e3e7e8700cd0e9e4f52c783f233597f2a31c942f7eee5806f10c61421da59d8806acf32df1553ce054f6faf94bcc1c8143ce2711f25170c0643f1b77bb11fc3115ceab66cd01608366e89ee8afc5e1ef27d10fdb4a25c3141c96c26e12588053f1cbbeedbef03eb7fad44956a18a5310ef640db17b9f817a2a6e2f594f3405d8fb01f27aa4ef554ee2aa85b5dfca0998d0d629fccd43c77e345dac9f6254b613bab24f79fd6fb2e47c9339da26d48741cce5d329991973d366adcd6da415dd7d7f9ac00b92d84550c6e8a5ea34856b4ca1add75e3ffa823bb03d11d0534081671cf8e3837a1314a655f64a6fb2c0b8d443a6dfe43aac03bb55aa5c6b7e4871c539e1c4b7b0ccd1f8f1c97a48136c12c9ca626ddbe661559dd68400cd2bfd306f435893704c077c2ecbaba4755f2f50a1cf1131ca6145c6f189c4e578e1a781b16d509d8dc64b1a67fe46eb23e201a32de9e6b6078c32626acbd2a1cb3b2df3dd2f2ed954ac567a49b5f735433abdab97e860a731a255aa6a679541b065aa1e8e5460e0830d73095efb02a139019cd1231cae6345379c490652ad3cefdda6ef7a0af9525abfd615f033f796718cdd37ab53e788e725c0a09bb1810683bafea9234b8404402b4188d76dc7b341885bd6771e2ea5a1d54de0ceeb709d8e37b07f10e86d4719168393f3f29b9c5f6aa54508d1e119cb27ec1cd4c11cff06e4e93b3a4633b25c08cbcf4cba2c3c9f3a9d00e380282480742be8bd817a2007ad165657ac470e6607726847930a88b64cfa54af3b5715e716fdaf7427f8ab3bc419fe41ec6f1c31c310ad1b7458d6bcd1bdb748975c1f3745036e32509d94891b84288b06bedd6fb226623c8b61c95087ce2145970aed4c235cad19489b21bf3abc6890ecb0904036aa187da9dfb5caa9db6306dd2d47b513ac599f7a6e2387fbbf3423d040616a928a1078698dfcd1ddd526bee73d239fb305c96adb42adbdc982007085fce6d515f9de9bd4213b2a11ebb4b2b401e9bb496446c4e9503c36fcc62e4fac4237ad2b4191e12c432ee072fe9dae46a74be27d6f02e9c0f3d45c787cac376a1b91cc20a28022f1d62856a96a752a0662313735fc581ff28fe622173a681c407bac3151eb58872ad030b8a16fcfeaf611ddf124e56f9e29af5a7b6a4d49808e9bb2ab4ca8d4f92e3bf52d8bba01e305a42957f71361ac89bafa8648eaa8a2674f6cbfc9b1db3129394a2878545a35388a4a67fd11eb89c000a9c8ca677c2ae8ff92c326df2f36993b2e5c8028df5a2788cd4ed1c054b8b105d2d180a4ff5c083f3f693abe862f486d462c21d8aa213b488732a1d7f57b6e32498d093ae5de163a41a1a12a92b569f077f150e37b3b975330d70d0674e506ea412a1390f6e5423bdc1080b0c1aa94328ae77879fa76345a69b282b4fedc4bf2111fdfc027e57d23666d978b7fe2e67a3d1f8ffadeec4613aa9e7ee1d07b9b1790c64fd32e9906e746a443f6a34fc763a7005c07bf94a8277cec30e6393d41c2558aa49b9bad84b4c69b105912f7dac6ce4a266a3723d21d452367c3e922d12f23ed04b11616cf0fc703ff25ab8a67a61dbb98b0414ba23e6e42ac8ec06f26d66b108be8d40dcf064eafc693393d36a066477b37be67b08e65b8d724beaded6ff3b20d72d68a1ce732d0e4e0044ccba75a36c5bdba25760cd73b274be925973b30df7b54f06f3181109b8617fea7d25584b47f2c4f1c2a354bf6daf4035df0857f4428f0e08877bc7985fc8f32bf0f740806a9cb6360ed14108ebe547d40de0a2c8698dd6d05347e9e57c54dd9a856cba14cb37ed1c8784843f72d2798d2ecc1bacf5e215919cac696c32c8579dd6139c161f58ab19f8a313f04d2345a0e7bd5f2daa2561a8f4199b2615624ddd7eada6aa361d6f738ca088d66e64057175e24fa12a99a3b1e88b9757c3661edfb34fd20d403d233f67b4d27587071a3f247b1388b3b92d737203cd9f263166c9f12fb5c903bb4249611900513d2e8deb449464c0ecc1b2b6e6d036cd738a512bb8856f784c71194077b538c335ebaea5f91c1331e4b82d74078bd998ae9dcb216c251c2469bd606b5aaa82227c8e317c66115798ddf69149cab70f7173eb2fc70baca6e9e875532226d2c248ffc03dfd69a34e242e6a6076132425b13885ae6b53f08479d521377a6230af01955759aa656aa5eb4f9957f119cbab78288566b0afe0edd7217d32e5917c1ea50143a49d7bfbc499393e80a28d44bb8b1445377e87b246aecd5fbb55d654cb12b6e622d83b5b06b024392cd5c28b934826a2caf2220c40c1e411dbd1e3e08179484f9a53e7ecb2fcf4f503fe0e46dd7e61719fe748b03f33fffdbadab8b4962491fa847563a5aa304c097bd248bc4777cedbc3a67d33ee64a3146dc8fbfd55a124a1429773bdcd3f527dc9b4c1f78c8e8839eaeadd94183c72124b995cbd5008aebac2c9d16740f733b01fca6735cd132835e5e1ef989c8dc0a160becc86fb13962085ab075074ddf14d3a61d6256243bd401ebda5a09b8cafcb5dd54b698ee4dcdd7466788743650e054d373522f870223ee5524d1b52d5de4c23a70303027eee3ef96f4059798b8068edbecd66db0607613229718d256569e6b1a3932c1afe9064c7d9c4208cfbb7009f376e186d00d04e087d9f3e989aca03c8f89548f71ad2c852282dd95dd6f020181b3a1c0210e37a7e063ff3b9604705f57ccc1480a768e82a3c3e667ee070a0418fb1dcc1ae6c87afd5bde78bdcef892c0e05c86dad9a5a457613efe7dc439466747abc95dcd8637e9256c3758e5eb97ac73acbcc903e6c01988be587408a10ca38c0a435858151656eb76a54fd699cddeab1cc58c8d5b7666788e9452fe2e8e5dda70905ba224a682632d552edcd224d4d4ebec4f4d90c6184d97c19b05138f89ab3e97f34e2445851a2d37b9449c253f891be60ab4cf046cadf96ef8991421ed0672c6c9fc43b844d8c9460e372e81e8042ca4634d656673002988a81016cc02de49d464c49831311599bf1af87a10b09adde07b30dc6b49fc650f79a5852ad95a8c4600e5c5017871b282d375ea1385a88db5a290461891233b39e4311d5dbda64ca6719a2a2192ef21769673e9b0b6fb8168c82729522fc081705bc2317effb19b2d05278598a91248b955628ffd65809680b8932c1aff2f648ff8c2a029f2159b2b622519681f9905c6a5bda83038637360dac3c4071d963675ae37cac8ed3118ba06515cc6356d91211ef9f7bc962b6d2213124855cb0a10c71fd2abaa4e92b4333f15e92009da91d8c7c7097461e0b6d66796865fa3185c69c3173bb5588ecdeeba7d3c4395d760ac006727aac039767f61fd21a44d59fd5966b5dbab0384787002a3b7cc8f47750d0863af14a3b084e685e2562ddb4c8c3763a346bbc6d384e5274ddd3b9501eff9040ff642407e5435c3aa2b91020370d3489279bccd6ea2df22b1b0d97dfed152095bde578bea538eff5050f4d0a0970b0a7d013f4d033df0d0f8b5d868db4b4bd6cd2d9a24f64840e931ec4a45636fe91a9d84aed833216cec750771275d3e893040743d787a38933b97984c963cbba30d288b1474a8b5717f7068ccb9d4a3070ff72b326eeb9d360f59352d6765b22fa1d1ac9ba3c07ec7a016531e440a95a037696eb3d39d50a5cdb6ee9f19c7a5d1612612bb3122321a54ae6b05f0366336f9eabb952d1370ea2d9e09fcadf61ba1642f977ae0e38bc93d6c4b204f634492e419e0113b58fd6aebbcd327ad271a9288f2df18c0fa3f8d3b9aa4f8fd7f406476d157716b5ecaa71d0bf66019cc0eb737bca703a06a73f042b54adb683ac58bd0200cfad8bb46e84a784256938dc53313a242946181fc4ab0da8cae8260cff6247d1cdc7adde3641880517e2a8da5e457c180d635c4bae87ee0024b781091af0d80f71e928b30e739e290230e295775f8dc7145238b00c5c7a38d50001f0647632e54d7ac051836a2c987d8173770a3a50d502974817c1229080813c68a50e158dbd3d4da1fdebf07d997829ff98e3354ca3bda7e7e6010a76291e91269cd2e02ce03678e00808868090160fef838b37581bdacb122c3198fe8659866e02c9fd3ceca39b5ee0efa490e567faf27a48c8bfe4296ed0b3bff213a084003b93165b8920929e15c4c482ba57b358401c9d09cb7df84e8040f0f1c62b79926856f1f6c86a65a4ff8a1559abde45b40276107e3e49bb11169d72686f1e4eec2e7c653aa0b55d8de57811a41f47666f7f20cb3be5bb536fa92a551913a93473b4c1eb9522266c8eca4728a2b4ee57ab8bba3ad151a3fc443d7ae8940574cdd4d24c381035c2f093e6135abb2f92f80c4ad72b363467198a642b923bbdd0d50f606462b710dbea40dcda08108b6f5e3611dee8be56901638bebdccf0486c61bc152eb78eb08107cff91ff404765f31deace9233b9a8fc7c7accf7124fafe0478e0ddcd465244359e95c1bcbb162f91334bf9cab6d1ba578f340d25a1925519aaa5734a08ecf106f50c1c7bb922e42a31c742281ce3b7636dcbc29e8d673129277c8a80743320cf6951629955b5be493d53ff18b3c6d1e257613b75942acad15f6c8bb1bcf4b6ebcf3c78aacba05f030e46a5515d64cfa33d88c8ac54500fd8c55a72dab63005a753a4ca720461af49369602bf1d364ccfd7823350f8f80202ff2163fbcdad5dd8dde0c61dcfb38fb99dd94313f5d00ca889f02dfdd21e80033b5aaf015d304f3111c589b841d192e3c48040059adfb80c8d64179eebd4177de2b76fb90b266c6f704f548ead37ab513635edfe1dabae96c330daab6e86ef9cd3bc863b2790bce23c2a38e06483386b6144a54390b5b600793510b3d00fad9bdade9b991fcb292c95fe77404ba4234d780a8d1cf72b720de0b68e77c9febabc91ae08eb5a49120861d2794ba22c22d8ac6d04c28a377278514feb32098e19377e0ed9f43837fc3a5025c3af71aef77f910035520d807eaefbadf50fa9a77c4b71a1a1b61cecdc0cb7281ae794279af685ee962ce89bf023f9d353e320d5042cd240870f1b5dc7c02aecf447164bec7c052067b31aec7c6d560dc87fff17082dbc13de164cda28924cd5ae4d6855fd6e3096d845998f26dd09747ef67ebd653540b4a8978b93dd1ce9d991409f3360acd30a8a8f1cf263c3f443e61cda435ff1f4c66047199f9612248f77e59650be87f6cb4d2f9ae4b58c4923aade852ed4cd96568047f4337b6df059b4ec9521653451ac96af53551c8dcbd4b8fe5590184cf8ee040229919f2362ecd54519674517bcc9730b7b60c895921560016db9f1ea1a784210fa7db0507dbed0f3e5deaf44ac4a95bdc40129f1e8a93c3dda8036a4baa1fa79ddc9fc8c5feef3236bc1560c4e78329dec1da893a3335971dc8db6111b08d664b402a6b80f241e572510daf1f8dd9cd4700ad5d693dc947db27d7af0af83f7d2d011795f7539bdfae1814c177bdd52df91e75721f4721d6881d7da03164597f8e8bbefbaf3a12f2ae2f694dd5907c39892ee325b37e1cf6c2f9ecd2bdb7c2d623c89d967710876037d4c20a829508205c6f52f62ed8a75256ff224a6e49c42652047ed1247ea81dd577478039f90d462b217a445e51a9d380f766c816b4ad82feed4300db050dbb26f4a4144db05e0640a28914191470b830cbd2ef06c20911c05120dff9cf39575d68e89e3413aa6f496757512399dc69248f5f39e193b03f694a72cabea05b2b36d57f6447788f997685c12ad8e5b4b342a214ba49da45f50e06ed7bc269a6fe1fb40aaf3b72728f8adb7fa9b1f51adf936ee12a07724356b4f19edc43c8909725594a25ceb7b31b1b1e2711694c3f52e2f0ca8a3780ea050bd5f675047e6e08a5e81bf2f9acf04c1af0fb2b5e452252692b4499955f6c2d65f27665bfad18b8b1f233833b70362cca225978feae51fdd0ac35661cd96c988ff14c33edc70495dc0d01d5e9c46d749ed70b48f8e54962ece3f36cb286303abe7843a9a2b5e016f620f1d329f3268bf1954f1b679e414532d99c46ac6ce8c09504098ccca9dfd6323893317771312b8e863471af71f6f540227bde10bbcbed898f0308c9ef3a70be71456bd38039396080abb43886fe9447e19fce3a2cdfc42c64d7127fb61840b1d6f6e5f55903da18a5559dadabd82a84cdd367114b4f8f05650c089e778c3b10faef9b167ae3b88eb74a1f54c7ee67338254331aade50e6493758c1092776ca1abf9629b3ff3d4258e84f8f6395dfca54b8b1004298554ee15f0c74638a4c9461736854edb7f06467f2f0ed6ee7cd9060646d6ad176bb490536eb6a7962a8faca210b8c715d4c42182d57b5219a8136b1073fc6a84218dd06bcf5790e79e1e0e632407a67b6b9c0a87d9db7af61c07330625c290c533a81d6519fe78c97817aec89b2f133ba6d21f6d3b904633b91ac3e15e8311c3c39a148443e5b025d92706549ae2f5d97a7b1659de9e4ec198f33a10ad643ed9d1cbc1074c3dd8f7b758e301a7a1b633b017a2cf6b411629fccd62518530e29b6d609af94fdcc4aa16130f2615b053beae790ee2f0015029858655c8800a2ac277c6fbf65ebc698ce520a4d6655c11571de8b2b87f4292882d3f4e590a4168900a9b1ed88177a0331f8f5b31e397dd7b6acfcb9d924c674393609617333daf05345ef1df4ab04a5bee2cc2e36a15544046651fb625ec460b0848cdee8806778e9cec9b33d882bcf29d80613c106878661b2f741aacb14e80117b9df0e4ca9997327af5a1c6193d730ab47f33479c25b6abcb736ceb620d0e337ad6bb689ef04557bc6032f324a7fc1ce2b1c88a84595a400c163addd91d7106d718340a0a7d2a3457d294ba14034138ba14f28483e852b4a966bc1583039d649036d75956eed53b6f440a9cf5fb2e9da13ebcd9631e3a8d5cdad52e29e2b5e6b293262183a0fe654e746aacecdaace7bae6513c363d3e9d7df03a0d5a017b49ceb5b136c59529ffa6a656cb0f25f24a75576af5012f6b684f059d860f1eeaf14129d140310bd404e3641576c98dc29d425dcd96b145db88455184a17c33ce98adafbde40a40163f23b74fc418b09dc6d860e38c8c66afd362b6c9e3c2033f13ae1b5128d0c2bd1cadb1dd39424b15c8b5df60273341f0f2eba5ea1c0d1f7d83f2ca5d339b1a0db7c19742b5d92c64114ec83363dab47303f7df95582599f22a1ff109342d69e8cec675bb26a5558cddfc87037ec5bfddaeda8ba4a7cd2abc8cc8e9dc2eda2e5a9a0599ec7df5ee949c39a0a8bf16b4faf8c01cf8127a4384f0a3c3e86826b3462038a48ee4166ddf537e2bed3432ba047e3487e3e2f2d5a61c5b63b4a8810d7583baab4e2a0ed63d11c21ec850b944ba72c5f58eba5802106fba4511738aede2331c4bc76da43bf6639e6ec28298278a565f54509daac104a005e46c17128f12594068270fd78252e7502ae4865076453c4109fa026d4174b88557625e428840d1541e5f7012aa2c98b31224b446eb927bddc8adbf3c56325492a4724c938ea2d6a3f2aa77c18a5396f5dc0592564919d2c6ae885766360edf10a383964a2ea83a759dc2b6a45b0a6fdde71510bd1c721843969853b44305a9a285d75f3a477c9308753965aed66012f50146846cf6af506d296c4b59d17c98079abca743b6299a1b6c5ccbb16a5ca1109c5c52c95f5ef021ea7985b43b98d32c824be730718068f17acfbc42911a86c53dc80110effd5cfbaf79cdd87b2d77f16929004fc57ac2ea405da4587096cfcdcf65dee9e23cfac1ee44cbabb9ed0afbe22392b433cf33c09345aaa9ae7f383ffc3e96b23be01b850381000191954e394d383ae29de494bac0d094dc52b9d0f37f12795f9720b60a2bf87095173770ac8df4755fe88015aacbb00abed50a561bf674d80a6512d4bca05ae1db14a0be39f05040846cb894b0a0ce4a4df16ce00a25ca5f31555dbea443455b0032ddea166e59b644d34bb0d047940e30d2532c10ed980d5f414bc58fea3adbb6a6ada3a77eae0d044c1eaf955af03cee29836a3ea0d45a4bf1b1bdb3b3bbe61f3c602d77388becdff5f0520dd97d4f8c602367a70414c2f10d412fbef585f10e835541d60d076925720e807dab20704b1c1462f5cda586f870b8b5b4f2c70d22b28443abd9dc28e5d1eded8c0f40cad3ede1b5fe88379a39a1a67503dc311565fb31ef695470f9d5932897811c502ab7748df69fb23a2c94601ecb0bf167bb49893d8272562fbdd43d283d3c3f4fa4ac69ee165e9f814f6c0f685ca7679664687c5d1b82eedb9854fdecdb159c3d8b383ed3b9ff39452051e07da1183a05106184d87361fe4279bc465074f6808de45dc727a55d12843e5123a8269c742603d282627fd1e0bec45fd3bbc5a92f1efc5813f8544f951574ceebec5b136189ce5a7e118895c59033420dfada29e0d538f47cf0924326fb29736753508dab1e0fa8df1c6e93d1d02ac6ce9e6227e6699c16a8c06c514ce935fa316fddf6b8040c57e7826d9b25af8593c3a150cf9be043da1b7b27978a940481d09b2d73b6c54cb084de6e4d32dae6009c051c052957f27089ec66b345e317d4be797e40d5461ab229f1e81b867cdc9ddbb2dda63e3123397f89f32a5c8008b5af6502f78d1c2c9821d4b5f45f1b26f35884650fa5f534d9e98706b3863f809fe5d2b2694efc268dd3e9e83cd5327c630fa3215dc4609e62edb996e7f045854f11325b1daa0c60b8a99f0a3cd73165bb208aa3810dee4a660364de5beb218e7d6ca435cd372e9748caa57bbd6ab89acadfd694b17596593c58c730af8f6088e7c213ee87cf7587fe73d3590061c96bf22330fcfcb62e8c1221605e1a56035663610a510f6095b5e1924c38cd106fe6406ed4b8e41c01bf8cb33bd78e3dad6d143cc7374ffe75ae9a84a407431e941edd44edf4fff8789bad5cc99c4f44f7b717e8f00c471ffb9328537619bf9f34f2325fbd057d78d49bf5296fb6c7fb8d1616ff853108741cff1ac0d7578b5e50d5b464d62224bde4a9b29205e03cd88761d680ecf1610da75873ef958a4ed8a87e745f274903eba281019ed566a9267c8c4a0cec32214b628931770c0e40cc08dda8433c96d46fc26dc047f8177f1e3b32673f54dd7d8a9f8129f4c8ce8e6ed323e5255466807b135aa1e1665d1bdd9223643f0069ff8e8e0619b6e7c90a76dfde28efb43e075a69ee8255cbca4ed1ed8ed21224e3a84bdb241ac0ec5d7c0899b723a22f64e3265b21f4272b402ada8ad7a700f5216ddc6b98c49f4283934bd2084af58b8ba8c066aa4fcb0c27ffac2c2ea992d133a6f83db6c5d2a2f08bee4137950d5db4426227f0cebbcee56ee6702516eccc57ba16f4f2920c0e5b19a5b2221210bc78a449d57196bcf69688cf202b7793f7590a8904327b025a12fa77d2e474ecb0be6341d8463e4eb08fc169d908b3efbcf106d314f4b04773324c5ac66201b474d9c3ddf00d79d3a2951fb8e4376380ad831126a9e2a9a2f6b562b4dc0ac617738ebcb595a629d1680371d3080df7110b6635bee7ed3c6892f3adfc14142182a601920d841b66e375576408e3f7a4a5815974583449e80104fb52e97169f3c9ed6410ce480b94ba5449267927c5ba79a309f85897c4dd0d4512b52ef42568dce64dc43e13fadb01203add4a9e82d076561b291d888ca68fd8342be551486905b6263c86877e45189901c19a33fea49f3414b66242f4036d5e1824d4733e3ac75241cd66d916cda9eff81f6645f20e792e945c8cd4a9210d74034c55bf2d4bc23e07b4a0818954a642aecd894d9b5706357cebf7b3b64afc6f23c579607d26d7f2aaa67e6ed18ac749eea60d2c6b9bd5ea47634ca9e133b81cf6659f6bb3b587e44f4b358afe1a127977c800c269f6c01b46b20e7195dbb327f281caa607cc1dd03bef49e798606fc429a2e891fe03b8f776c4c6dc8ca2da40c066e6e27c118be6eb3af6e44c78cbd198bde247009106b1880e9895e1abdc2f52dc4318fdff7b30c45dad5c0c988e0e64422cbe0f48011d4acddb1bcd505c2c51bea9fbb015f3b31b97a249ce6748ed4e72e87530ec358edbf0edd7596089b3eb01690dbc4eaaeb1a85e85d330a79bdb5d30fe65137b4de2c4331e0ba257e4ea7679c2264620a4ff4a09404352af0a212155f8501b965f479c209d04147dca788344281b58d5b62676bc33dd203a641887299f8f086e289b1709dffaece6383071e10fd6a650ec0bff2a2fab4c56a0b07252618c2d0dd6b7078649067aeed50ba4ac336ea6c6dedd2f227a67a85e389899d7aaf60ce45c79169bce2d21f81285faf13ef78893b95c11b4548fae136fd7748b7dc171351edaf53e34ddae239595d75489d1d3177c6615a7439e5779cd3c07012cd9196cb7c75a7dc38ab28d5a2db92b8fc88d312ac52ad4657a9604828ce17c3f559e0d2628de08e51d2f2c380e1ca3fbc03875a962b73f06fe23728d39be7a66171eef220beca61c7ef5858b9377748edda2b3d64766c45bdbe10c7ffba38dfd7bf447d1af12797fe6ac5d4c437277a9eef7f48220ef76ee7923bf68fc8abd7d24a2e8331b849dc45f0ee577a0da40279b0387fd39fd9146739b8dfe8c02594848e1dadc8eac7bc452aa6dadcaf30221a8c93b560cb8b6af9330863019cad262c44a92ada52aa96a20185f8d579240037182fb2db3f2e370daefb3ce3efe7fe2429a40e04108103f487c4023f2ec3d0a5d703c2038981bb39d8fff41675a1d20695830d815f89a6350a806e24841209dd1542747ea040d74dd1e04ebb920c26bb41a24833f1382f57e3735d0e5622417c807207ea14f50861a14bc68a00e9c6d805f92f7332658c4475f6a49da7c03d3eb4eb55eeddf70ee94556c1278fdb53edf2f5bec649a543b06e5c344e1639b461de4cc4702ab5a5599b19e80bcf48d9ce983af49e15fc6d0b62b3dc25da30c30f26fda1515e5de206c232c98d7e1ac93cfaa368b4da140d34ed74fe37628758730628df3743be33054440d8c50e6dec232c85d2df99076164a33d9852174ec62f3a77f421566d4ac4fd6b4b015eb4909979005b075aae0308a7a60b1ce009b560c894c41a75d1bbe3aae3a9d9ce9d289ec2c6529a16f85a78c1d22eb0751763d62e2fbc624e162adee29e5e542d72b13ebc86db53e1668f2571a20fec21f27cac58c7762c212158f38a283d79788f7dc1493d8ecda0e4f6fe53c5693d76b62712cb0035f9b15459e5d665b7ab933be29879750f08fdcd2a1a55d18fd44c6e69d6f16266d3f2818e218a0847c42281dba888db0341a0964706d7fe5c77afe8396a56cf6750b1f23a770528658c28d4df46a9a181ec0d3dd50560635479cf64ad165ef973dcf61f4d8a24bfa1cf2fa7757c1cbf25f353a4a1bbd423ae015d925d8aaaf52d611ab15466cb6eaf23c718ae8870bacbc70c1b2efc7a17a2c9b00ea92716b26aaad07e095ed612b7a994e15e7106cd9458aba0b84762dcdda5c510ba1c28fd8d874e1d3ea6b2d39f6eca0f742d287c66daec87e5a2395073012f4f805cc29547e548f9daea2ca4f24d5ba629f95c1cc1c1ae34bba6fed6f0030cd01d1bb443a14f5aafa6b125f01e9da8d3533d4eb6e7567d1917afae742bd0cffc64dd277c745f4911ec83a9946c63c5426bd8f0a19ba4d52077a18daaf26f5787e0fa07a9361a87fa55a5dd1f6c620a6efdd933d40d9101378eeacaa270c5708d8374f6dbff58e7cb7868dddc8dd76b765f8f5bed9b21bd9aa3d1dda50617bb6b2f7a51d14ce6790f41e306d75b99b7fe14d8d7137edb6a0cd4377def4ba460ae3026137ecfe9dd316401f6d2bd5e0cfb28c14eeac7a761300c3f55ee91b4eb616e6508a59949f8010e4a0e47afcb4681ee49215e7b8afe50325a25c048fcc72352d31f9d5ce3188ff907f765a59114f9536a18ae9c4c2a1f7b095ca79142df9a41a6d5b39e225cf7553f862721c3776c9ab1a2604287446c9f876d8d5b8cd4a1ca89c193efa99aced5c9dec3b09c46edd421e5ea9b623eb7ac89dac39e90da73e7c26161855325ca7d5ed74ef0ea420395c5f0a5c79c986a7e5b9d3393d2d5455087b85c980aece5e128a7b01a0fd973cbcb3db49aa61fbd8279a493ea307c8e1f0bbc1785da9627f9c3d2ef44c81d9546604ea5337aa5b30523a4e07556f2b1baa31d253cbc80c78fa989513637173c44d124d90bc49e2051909b82d7b20c007bc2e80680906143b3e96e1ba7f3caf1bb32e9183abf68cb6d47ff439861e47462eb4cf4dd8b73f09697b77db524a29659232300a630b430a3b2bc9b22ec37d2a4f6dce01d1ba6ff55aea5e8cb7fca93cb54ab9851c76229b738eb9bc0d91b2729e5e65cea96ff9e3b2cfea51263f75a5d8ad9e76df066db8148d9b3cb5f5d37444aa5f5799364dcaf95b152c7df3adcaddbe2dfbacbe5e15b62730ca675c8b5b733eba1bcbe1492a95c28ec25e8218a7529aa66147a552a99263ea99ab2e96f193c3ee85c879e44a29e7eebdf95e4f5d6dd34aa8fc5119cb61490e47defa8d9701a0ad86260788fff6f9ac525ce62a999b42c95c998ec8bd43b61a9fc2d746c5b98af314b76d437c565bc967f51d9cdc0f79536250e9d6a12ce5ad09ae1e1d6e4cc8f6e810d5a91e6839add9de2b1a61c4b33d9b7b6f8672b582583ec7d2dca33dd879558af3c96f4d7c409f670b6d4f6c3ee3db46e376c63719df5028191a194fa5727b16e5353533349ef299186afc8ccbdcbbd9999919b73e294fb98c6f2e635dc6bf19af999949cd641f2997f1d4f6446a7b22955aa5305e6d4fa06a666668bc19c7dd0c0dcd8ccf6ac5cdc8f4afe64cf650aecaabf6503e2b1c436c362c3415f6703c1b385754ab6f7e6c39693c6d3ee00f6ac9d1a294a76fe7e0692fae629c14e7c673daa30ec4d3370fe1aad51e759ea6990aae16c2bc8500472f8d607382e7d4b1fef9d0efe7e927c3bd4ee0d5cfcf895ffa7e91b66be568cfc6c70e638c4b77eb1dcd4bae6a9dea25ea996b196d17a3d1958bcacd363fe6539f40ef4e30ec4c50308eecfe42db0bd25ee7d08255301ac429b53e47c728d87afb97e3fb5ed9d3b3ce96bc76b0680734187aea385f33065a3f918cb4e832db9825b8711bb7ddf66ad6b492d7defca1fddd07a9d7ec4ecf696ff69c1152130ebc315d835176918bd4084a29857293a88d1472727ae8b83c402d0f8fb4d870d0b4293c39ae340e7803121d29713449a0fdcc87b985f6e0b7f967bd6a7e3f1b1ff1673ed0df6ce3c327f36ddbb66dcb403a9e2eebaeaaa660afbdb947fc3a75d04a73da8b703e404eda385b9c483d362170f4e9d37a38a76c1e7803aaa8534a710b9b108eee83f394d2edce39e73684a3d3888393a3556df0011c635b8157a4c02b3d5a40f8b49a0629c0138cd8900127e6e0c8c1a3a387dd418338aa3163c644ebdf7de97043e23858b5baf1d22c65a5ecb3fdf526cebd81b1cf8f5ea0afd03b2d34cbb6ec96710e3d07073c41d3893c92657324cb5a6b82b2ca9ae3913805e57088dcb977436d6fbfc0bc1075e601db9b38e90cab10cd999d090abe9d090aa64cf01797749e3cd0c886d2a96351090f69af85b8c0e564dbe6036fb4e7c89d58a559d6adf5ed06fcc5256fad85693e455a2773eb3fadf3fdd8df62156bb5b8ddf6e643eb2a17ccb4f8e00945e08d28734da7ccf1f454855864baf82db48e8e1e72272708cf2de52d0967ddc8f59275c93d6739ebc210eea6680734f8eb83f337fbe01c1dad6383a7e569a7d577f16db48eaa3dcf7433ee86344b4adf8ee02fbe3e08e6a5736ee4cb97ac0f8c281e5f60e184742dacd05ee6325150a0834feb6f0ec2f100d223c270d7a469a375a2b7246bee789e69075c9a4df067ba0166d5b3cc037ec39a64176c3a4bd11cf6903bb3bb94a76cb56cc86a2dd5ceb89eec677e7b671c78a3bdd4adda3341c1eddf2cd2ace9d3b720fc4131d17ba4006485a4af457e5aa7e4d3e19c1fb9929d9f75f36f076f30810cbefac02b5f578dd33a4247505608e19d456c0f7db62c3229a5bc199d53f34f7a77e9bd33560abf9b87388aa094520821f42170f4146c4c6c4ccc29a6d65a2ba41342b8f5a0ea01077e63636d12e894d2c6b4f150677aed41b9e180dbb68003021f9c9f5ea3100f824ebf3936da8352e2c01bd08b7c3fe038a55b8fd65a3bbd7e3f522b42db709830cf0d074d4e9895b65a4b69fe6098ff7cbcb7f7f2c817ecdf8f86af6d9b5a29a5dbe964f331145226d0e79c13ce29f3191a6c9d7aefccf696562b8ce7ec1766b6f9f1d463907996624b59c578b71d20d2100d64dd76d876d87600a37db16188fe337fba4feba5fb003d108410c29cd31e4e7babf66c7cccd267bf2581a1fd186bf6da83b4da1bc16c22a014096c6a4e6e53a3a59ad94d35b79f59b5c59e73fefced3f19dea6870cafd7eb869f7efa4f86d7eb15341f421d21be6d3ae0e8405ffaa206fcdd783a9acfca6f787af52b9799479fdb568a9e4defeb4eddda684e24a7c42879f4a19e6d4fe4b604fedcbbdd29159a432baf9d92bc30142e79f2324c27d1ca8f8697994a3a9b44137ac2daebce13d239dbebfbd2350d683a69af5fb02f65debadb6d2506fa44b45b2ab53ec622393fdbcba85bdf94e0adbddc5a10813f74527778630b0247ffa14f2fa594deacba488bd95eecbef7de9f1903819708210c5a0967ec3b86e6b6d3f0f675e3219b73e37c6e23c09f8daf364e5e4d5e5b6ffde4b5bab56eeab84ed5e16dd52c5bf3d638b5a9d034979de6b5fb70be3a6e995a5e5a10e2c290934feb9470d868b5299ba0e0cc4b38bb39add2e7f08a0f8ea9e5164657c41401c5c0a42b46f1b51d81adcf3370c3a3882573d9655bc9af6d18ef16cdd0b0e6150ab69ef9b799a0e0eb995fb9a36578a5cfb86d33c26a5c76355ebbaff535b7004f90f1155a07a7d03a9aaa6b45b9cc5f8e3ce56fb5f1805d062333de1e8fb48ecadb6350eb6450d2640d49de9690ce0405672e83112c594d53933ff88566a65b21487bd2535d0bed4997e984743a784c9cc45dd27c5ab09ac392f787b12460beb32ccbb2f935ecbfe91c178d603fbf8d76546e6bcddf8f6c266d27d7137350336958d64b207ceb5005ed6390f4a1b5a7c4c0d4a5a05c73c8492075555bb3acf588b37a8b652745c6692745c6551d6e16f5add34ed3afbcf74489982fe1614c89964fe225488ad7e446a34c21f9a49dc4afb9837a89d59c6ab96695d7fc99dca6fce31cf60ecaabab7e24765497ea60b370fe22d175990c3b7f3ff333a776beb59b77e66133912ddbf93ff3b51fe09f48c4242a20cb4434b73eb44c243a7d4b33fd38b3cdb59944136a9d954e23435cf8198380b3fa6fc84fe7691b3f12a99ee1d691d66349a6d4ddf6aae3b44edd9179ed505eeaa2db1db83d29bd7628d5c718238c098c098c098c098c09452da16db7ce7c71c0ed5b9ef4fb991f1dba09c4d0c6b45ab08770a0ac48829ca8b2c3690f4ad5c358d01051681868fdd77a1f58adf4eb61d08805ddb0c2d15ece81db0b7020a7f42bedcdc3d80d56fc876302f8b475409e18122e8f7a18437282871c8f7a846ce93a782ab5a1c8ca9d1cf94d2026dd3c90eb11a29f736e3ccdca5bab56396837ebf000fea0d1366bf83963370cfd9c736e2f1ee919c59098f1a68731245ffec381471ddb6350841ec68230fa6f7af131f6a48a9f5ec013ba8848b25880a3c7a47e0dc99d068215d8eb2862318a45714848861e72e700371871e48a0e2488902145e44e7471f9f87a2057ac52747841182270c5a3554e908c481d2477221727487071456fd897086bc91de802727d9e503b09139d4c24a985ca35337880b7f6a21c00f4ee5e88462250ec1c5a7bc3a32af07cd47f27d735fae9b2d39ac0df257a2bf0fcefbe7e3ad1357a6dc69694529a7546a850498d4c807a771fd0778427740454a0f4d26efad0e2897a77d4b50a4f900f7b32d01eb4fe90eea39dc86d0f68c64f4629a5141ca5941080377a7bcc3ff1678c558b2fb7831b026f0f63511cf15f0e0705971ec6a208e2bf2ba360c2496cc6aab79c7b710e9d5f9efa0d6d557935eb0a81f1c318145cfebbd1088a232959118a1fa068f29f5ba1c52a45513e188b02ccfff44f7863ced91d33706f2ba9458418527a74195dd62965134f9ac0a1de568ed8041432c7d76ab537c28d8e966ca28a9432f72802b3a254bd11bc9263a38926624d38e15e1353feb341054da2519e42f17a1a83028989d212a5b561a9e48450b3608f1343176ff7e9762bd11392aa802ba2e7092e4e143d75820a8e33a24b0089b82c01464bee1c600c58103f2823ca0dc2700139f9424a0f43e8e0c9133f18c144084a4c0461ba9192890f5c2694d820e28b280cd1170903206e2ba975ef8d7407baa66b89a1257c588206adba59c205d9ca096ed512467f1fc69628faef1ef91086065ba7a71dfa9cdfd163df2641849602a007cb833971c4e0f4706f2ba915638c31667877a07ee908923ca59c0e66dc2c46006566044d481d661ec6a688c00a1e708dc23521620a0882a8545a1517022c1fc6a628f90fc79c53823ab776c01f0ecf46b3944852028c56016cf1f400e2831c97d4017a910193218450604451cca58026be9852658b92133ce1924550b912a392458e0ef1155322052480c2638c5344f7e830fa9542c429404aa810034b0c9c6ca1e2830b52b981872cc8b84108a4904458a0bf57d13d3a8c7e0120853ec62a6254aac4a81041e5ec981136005134022f39b82417022c37b020cbd19132e4109c0e93a544513b6e21bedd9590e2db7172a67cf7ca95209233681108716716410f570435fce7f900ca3b7f2a3185aba1f43096440f9ed0a67caac41325827a000922c40c1d8963e2d8c0912389315e3a8f8ed61198841832b78ee00fc77bd028892e6f1fc692c8a202ee03f7b6925a35305dd10296d1f2210c5ac5b6be9e519d48557b068eecec612c892988384156c55a6bb3d41eb42c75b5722f0929465f927812337ca3c2ab7befbd8193ffa0d19683249abcccc358121f9801bc9bb598071fd8c107940091023094b82c94b75a94a1b716c807a320766084114e829e70d98c55785b3919399bea6648cc7f38464b3418f1bdf7e26028c9c69418af7c288cff3cb905a4d90ae766e565586b639424d45a6b9fe4c0d403fc455e204b134a04a9e0872a5e10c316596460450f98a8e2054170b948f766b5e2b1768a9a2c956765ad358288b7d65a7b6fc9fab58e5b870046f850a1bc751c7bcfb85702f1d65a236c786b6d0e2f53a8000928ae742185cbfa953b42a4e0e10a172b1041932e2e9b6f2a9db271c8580d79f1a787b1a1a3ff72343058e030f4108b245cfeeb1cbe1de721164a923c986f3aa7c708e1e9fb0459cdc3558037da4f3de00f1e858941883aed816fef0fc013928010dd8599e486e063f4006445d945873d51e5b5d326065ea13d20417878706f2ba9c5833971c4e08cd11a8307db1832c690883264141b228a0dbd6252c2c490d8c4d876b0d92076840f47ecb0998151b123400061056245808915e18249b732b0c42a297f7829a594723bc3b3d12c2963472cb9c1b90f63471cf9cf4b8258a572225569080a00a58930c6d8c1153b0ce184c989460d3b8801a3450910846aa5b5d65a2bf5e10459153ba70f27c8aad8899d48a9acab90829a64d143121146ae02b060081470d1c51832925cb5872850b4981159ea76468d1521e66b942dbe965cb5ce5ab30ae3da035012a3143c31032e5bb20042f210a58b0a46032b5cc428038c31d10c7ac61833be89174ce400832182a8229b4419434684285e10841554190389189cd1369db9e3d8c8e99d6d87ebd13bb84d1dd7c1665d56df8cab24e2cbab6242629eeac0a3c641830d71be2e327fae0c9b11fc521d5905dd401d18608861f5ed2fc820bc60f869ff59fd91dcb1fe45242499f48a48262e70fca865a0f5ed345447700650f876f81fb703856fe7e95bc3654f2e8b24ba2c9295ab062be648105ed255fd662499cbe608932ce94814e0aa994ac757cc617e083ca1bd5f40e1dbbf1778be4d5c50a1597acf1049922577a0eb7583240b7e8f104cb2e07f9dea0886573cfccf7ba10a032d88ca0bf6a31fb1e931c3ca056101beebd58fd8f4803f1dba905cd711080b20dda6070d48b00bc202d4fc5987f9a32ef3271d0ef1c5fbcb21b43c7cf85a733cfcbf2bbfbdc650e3bffeae31d4f89989748e41ca1b806a8c3080b7d656759eea3d5ac7fbea409e645f3dc8113b21b8aabb506dae15f61508207cadb120927cad954ed9340f6342b8e03fef08085aa4a51b155e6d2b805884d0e2efbdb9665d9671dc7ceff595d1df7babb770e44001363d8c09d1c443231bedc9e6d99078fa3026041173cc0be6c4118323739039c81c581841921a3861040409c4b050032782f01203cb0f92c81c5e706f2ba90561bd36f86653018e43dfbe2a22437cc5a02ddfb0d8a49fd80e87cd2d9e1e4052f0ed2b0469c1051c3872b4cec53f78f11d730bc747d62a6e5be0981042b18548f2f8610c4a0ffef3b8ac6e806a1062044f7088a20b0f68d152410bbc68c922c90f452038caba7437ab158fc422c3a1024145690b63ea40b3f111372df8835c362d18c62ca59c4e242b469864c1a6dd9476500eb4237c65f3e878e2ea80463cab2999a90bb53e64d4e0c30e3738420a2a590733b4bcb46c81c5895c0244083820843075f90108262070e8927363d003ed6b0821e4a194d2568ef4a4afba884b4f65a5c0853102912cd8dd43b29a8608449b8a408b4121ea2969b8410b8a6aa8a10531d0c13571f8f903183f7ff83253040a0aa08c408a1a24b1a20b942c5e7b188362c5093488b31d15c91d8bc5f68b4b0721d9582464489138145f9128065db9539d7a74cd0e88f5993dda05912c1666d07cc6add692d3e9253aa9112a9a4f374283f5926bd667a0e1355ba8876cd7531a015c90b21c8f24ab87da8b1e5f3148b26490acb66181baf56c58986e73244b4acd2e592dd4f59064751375d727da8527ce59a82ee312802ec80531b279c94623eb361645a2f6a24c8e4749fd42e58885cb914b18a42f286e8890e81ca7b929db4c0772a1b20c42923534b95c24bebae824c2f0020c2c5cb7ce4275ce25005d28872188912d88919363a7d8a9c320fd051858b0612173991c0620a68c252b3a056c5830cda0190172f180df4e5ae83aee6cda815c15ba8e7041343739e4826c414eb983242bba29db48077235ac8764452f659d8dcc2fc49772815c367bd5a6693001c9b649e0e0e0fc9cd008033830f87ca25316a20e9e40c11809c028e1944267a6814a742a447c64c64008623f4c89fdf08311ad7246292516d28b74ec9ecc915da4fcc1042fa594d2cb8dfd508295c77eb0429d54b879c902081f3ca594e6db050361a362a3628be2aa68b55e6badb53a59e26badf9b335e644895aebdd3629702b27e624e8b91fe440830d6bd19cb3016064b1850e8070b2821e727608e3011ec4008288894cb282bbe5a7e3cc29ac9dd30abde227e79a936e53500a23824151e714f155b787311fc4f82fa70aedc21156373833421f6a90c97c537d56e8c30b7440239ef6a20f5cfc9c73ae728cb887311fb0fc9783032d368509c1986c504ce892433eb30fcec7c761057f393b1cf1f204e977b342633e30f1f361cc072ad20c6dd37ae61dfd53661e5891e08a8e1365c75faf57105cd173aa3c093b90f3d179bb021ff1a0458790a7bd1c8d82d49b3bd2084218f301040f3d48efb80bba90230f61ac07203c7ee83f653c84954e28831ec21b1efa86053f8cf1d0e5bf1c0f1d42281b4287304c7bf06126126143b11d84eedc0126b59abf795dc64c44faa59f8c4e37f9997ff26bcdf297bf188dfc47dd3e60125145f83ea867f9d24944fa9dadc3916e18986fbff1aaad9bad35723ea8f48dc8c6d517904076679c189b13470cce46827b5b492d8f81b65aad1609b62860735babb0a5b28fcd1b721de75b97355043769d4a3900e8b56c8342618e4b39b4513911cdb1ab342c5343de67e5d835dc6db1fb8668b06f079ee77eafb4fe7a785faf013cb7c35f6d54020ddec0dc47192ea8885c9480721cc785125c38c1c5145846e6a10c9783397b5245a48470f4488696300f635aaafc078f625aae3c10b9e302989f534b94fb427a0dde88af9dee10c99a42ccc0fe5fcecf4d06f8be8e9e9afcbb2fa1a7feddd7d0d3efbe889ede57d1d3fb32cafcbb2f2ca62c64d3b2140e58ba90d9f95bc5fcb977674f2190d53beecbe86fe6cec03cb29b40167caae50964c15fc19dfb3a82ef8be8e1ebe8791a469b62f1317f7cd84f9f595edfde2cf8e2a7d718f3760c52b463be7cb463c2d831491fc7207dd4ca802cc80231b754ca2264b30cd92c44364b116441a8809e2c46d004f89f7ffefc303f14f2254f21616ab1dc91c9f9bb389f720a09538f34bb760cd24bce87bf7e3ab7695c30a534a3955e204124ebf248167588c55f7f3d8584ab576ec7b5abe7765c8fd0c4f9e64edda3fe34b356d25297b264af16fad842f05ba8856ed042d9ab85fe6ba32eeaa21b74d144eaed86dc3a236f5d6e3fe19457ca8abfb91db3e452e6c48dc3027fdbeb15745faf9ca9447cc5aa8a314abf2d8d4874abc92d723da65e619307918dca389fb2494a29add3e7baef6617bf5a8d63308069ed42edb5e4ce6a1504df58c4c5090fb0ff0765b8493089877f95d702e1580a428ebddbd0183827c2fe76d66add3c725efa1787727e879769f4f7635e2c794d6e11e6d9b7eda830085f7aed9c865b2cc646c4661b1fd42fec21d713b369f45c0f75d84318e6c7a1317075ebd5edcc46950a94353e92b0c17903c8823bb83dc02c78d5fcf5aef1b6abf11de535c86539933b59ce9c0ef0bc79c3328584a37f423ecbba4b8faedc232dee9196ebe5ca408427e16d47c21f55f9c85dbf40864896f4ad3d2859d502912c1906e6913f7d4e2076d64967ce4b9b57397227ba64ce9416063ad97d0ddec0393ebe26a5e6d9b5564e9ef6c0c031dbfcb01e3dc29f399624e44a1a908c9b388fa98b65b2a378e4e6259f5d0cf1edd6699d8d6eb72f9005c3dc2d92f06b15e430c882df73e404b2e043a8d37324043df85feb73e478e839608e2f7997bcb91f288c8996e369afdbef155cf34ff49802833f18c3e2cbffd08fded908e922a195b00a1661d667c3f668962c9a83c49cd3f2cec3714554a2eab20f39259d57dcbb6138c78858d5f300949f62aca7fcc98f5e9f9caa6d52f397e12c3b9d542fc8ffe2e34c24c288c838caab69bb29cf4ea7d329731e99dd193f9d32ec310867a794f3f4ccc953a919ec19cef98b9f2affd419ec2adc345267989cb35f0680b29a8b72eb5ad6a1bacf24e35add382bb82a30119353e951c6babdf724633b0e953f9ca392d8a43d9f22a70efe4feb701ebff8e4e591987191cb97476ef5dea28f4c1ec66243aff5a675135a91a32436813c726b8f33c29f8a5aa79452e7aac0f13f95cd5189b5d76a5aec8a23312331cfc5a068c2d46a9eb77a96e767a7670088a6bb1047a6da74e40465bc001ec64e80e5b5136c1deb9b974a3ee736b7e9dbf6d33fe7dca66fa508936e3de6ec03faa864e338ce63507c12834afe827ceea3e1896cae39f62f3689b0efa723ce10e994bf9f86322af9535717c49cc4389b7a2ce80ad21fc5ae3c916d0406d187d97ad0938f1dbb49ee96f007f8bbb0557b9adf92c9b3d634cd44af966129ff0051d566935c5962822f5e3be5f69ffe68022d26986282277f8087b1127c79d8360789d083b87d21c75b87ed92f3217ffa17e1373fc26c8f859b7fd5af43b973f2ade34c7eeaa06499f27733ec6ecd3fddb7943f8ec7074424cbd7bf9ffe7a7a6722d1ab8a1201fbedaf08730596b77e5b8746eb357f3eac57a73e678e4d228cc7f49b895415a85b9a5367e00e4a568d4a7c4625d184964b184db1c207b70aa4d74ef4a4650e5b68a255ad064525b6a71a7d37db8b51b56a8f5297e94a9dd71e2d019747c0c3580984b89ab1b5d5565b6db5d55a586db5d565d4bad8ad6c96559bbff971e0a3cb2e88b5414aa520a5d294b71ea4541a7a9b3f29b321fbf97c1c9af2d58b4897c95f07328d1da6027ff3a96c233248999ffc17fda77dc8d76a90d6098a0ab0b14994d24b36c2fc33790905fbe81a977ffa39d7f287ca3ffd99f28fc792ecaa4b1ba4bd5a82d76b1f3dd6aa6525cfaa96895cb79e95bcba66b7a8242a00e3e8e5b1e6317f518b3fae6b186fceb9c92b942ccd33d74e3965fcd6d1bf61bcaf1c28dd8ebe2777daab17691d25fdb1fa07bd7ca92bd25e7599ce93acca81d6731d4cfaadab7fea601939df06f2b781c75df55367ddd479cf7530cc6fddfc52f741303773cd6e9957ee01d64b59f7fdc8ea19fccc33ae2783bd9268428e2a079c14524038a14723b8295c90f302495081a5688b3914637c32a9e4a2c0dfa6daa820b26205680727ba04b1e5892c2f88e29a527e5261745b651c39e222890825882081151cac4c39d2a0c3a3077ae9f17bed0302c295362d0ec52d881422774a0e7d88dce11c9afc93708b07e2dc12187a11b95372410c44ee68bef9774bd07ef0cb43875b3cccaa23181e3d7c18b3a2e455ed41d74ab28e48d6912c43e398c0d90b48fac54e56d7c3390f1b49b264ec8e20f991483fe4e71ff2a33fede6d77435a0e04aaa0943f30549ee04d5701b9bbcba9726e318e6e79f5cebc94cb7fb64f88bf2eed4c5a986e8a282bb5467185608c157be028ed7385c390d9c10eeb79178a4b98c6b29cd53aeeda09f69b38b9e675044a8c3d76c4d4765661856a8711abe42085e430586156cbcc643a031434d3652e336abce76445eb0f121e32597f192c31a1ed1c647c9535ef25436f9e6329c37d763e3a3e431c82782f23e723fe89f908e84c055365244b2a4d7e4955cd564f70f2275fec130d9bff8a271e81ac1a3d7742b8fdd0a35beca4644f01aa7e98c00b9683c72361158798db3b0ca354e81280400872e1ae791361d94ac9a6e86482442348a46914804aff15586b23dc6803ed0c7fc550a88e038d3a8403fe678ca44aa53376d3906f99ff723743177918b6449efba8824420780ee8b41fe87ff4742573b911ec3488f49b25f7287c6c6250d97aed974466c1c490d28b880dcf8aa33b27224350e00a7e98cd038929a3c438d43970828841054e3345d508d0320db7441352e4286327f3f924667b36306d5642ad0e8691cbae291dce922c9927eef510cf5a76b35a0e00ac16938cd406c7ce52218090a21cf700300cfc020a9e12138b4f2e48dbac80adc5ceecc60e39086d384e0822b5fb98d7f9846cee1912ce9347ce529326832106854e333d050e321e4578dd3388dd3c8181e7597e331ffe6afabd1d58082eb2623b9711a9eddf8cabb2823b9f11a2fe518ea779672933760e3f4768ea1fe07b4ca35f7d2c03843c98a477fc5cc44a4ac7cba068948d9404dd37e41a35f751b809215bb0dd4bc3e72406ab2d1d7d0f8ecfaf5900342234f40a95e79a145ef1ddf71570af0046985e89bba44e21fc6ac04fd9c7f036f445514139be2d53eef9c5e6168b8d13aa10260883fbbfee9764a6b0f9d52888b746dc21bd0a34bfa63d2762234e399253c61c21b1d2445197fc4b71441df3da76f9a0e987afc219d4e22d3e5ccd9abfcd101faf38950974ea903f9986f5d9b74b60eed62e807c4313fb3174d68af1ca704eeff3c2f2a00fe0c3cc15a2bf115920461be06dfea638ca5ccb5ee051a3e462f3572e1b0e00f8691a175bec8e5ab57d44f2f1291382c5a9cf3d55e3b982f485ebaa57c3581cda07924a90c30ed757b692f0abcd1de4247f893452e5414a53da1a42e78d2e8dc422d3414a5bdee8eb6500bb5b70316b72694464a3b0ab54468ed10e70ba4f6a49c93f6175cf017f046d5027f3289864cfaeab5a80ba6727ee9e85ee478d05fdaabfd457bb5bf4856755c6b23b5579d8689105e38a5f4ce1c0d382d385e99473f5d8311c9cb9116578c8aaa7884307201f305c9cb9116578c625195292483e4149a42760ac9202983649095414159f017692c692f06715db08c1e65504fb75dbf62473d8a696f26c529836493d609924be03cba6468ed05d8fc3ea55d033c676e6badb5d65a6b4d2da50f699d99b919e0e99c16dc0eb100c3e8ad37026c8ff6e69c33ff502967cf9e3d7bf6ec59f2ce9fe4b8cae9e8162a65daf5ee8a84f4cd5cf2afb5ee6c7ad6ddaf3f24164c9ef8b4d07716d29edd6ecfd6dda5d82d89b2766f572f0169cfde9b5768cfd22db00f44c240ce77f6c9f9f6b84da14d87389f347a292629368c0e678c31c618638c27879b266172e79463d256827d845f92e6cabd7e898931a93d16e0e8d56dcc31e98fda93de054bb79d4f91f6a40ff1e919c26181bf98245d8ad1788051a575fc054695f6e01bd9b6616850bb81a30e427f6120e6a9c7d74e3a9b8e1eadc3a500f4d26bd5e446adcd362ca45cc625907219da7d323c951a955d75ad032ae5a8249a00b97ce501c695f66ae60146aae3b4e0eab4831fa405215ff67ada03520f484d8c9a18bdd4fc8b3a08bdd4f217612f1ac2bc5eea20e41ecc81ad89510ebd05fbb3b1a383e614da6bd734214f4fa5eb70a693aa55aa839295651994d32e86f81cd570c769343b75b913893a3aa51ce729d0cd25bcb201913b91e8d44791a83398740223da9cbaf7963a03736e72e9daa5524a93d3f87a2d29294c982f5f9090201777cfcbc969b528a5f9d3ee0b467edb36eec64dfed0df22ec669376df347a2a892491a6e50a9fda3163c458cbe449d1cf9979805105b74c0d9ac6d5007f104b8f168240082184b1090dde46413260013914704202aef57842b7a383001c073040014c20c00d1b0310000b9e50420048c0192177f00498a20186eeb2e6786bcf1aee7457bb0d4950aece361891de9e8473259971d9302787a544cdcc193d09e76a2c256a664eef6c43128ed26c838cd293a05ced361c99af6a431ce33a92430b17126e7af524d855b30dd406179424b1822d90f4a00647b83ac98c8b661b663692c45d9d8d002181a4072a62968ce1e2c8d53e3d0976cd6c83cc462c90031e3ca152c50fac38814b7a921997cc36188160ac7401b3850c1ebe9081abfd484402c38504bb3adb00c334d165899414b0200b325c3153814e438d92890671be4bf4b70b27430f9f3bc2b6a7d69d121cfabded5da2293f828ff0e44f7eca72c50ac91d7a842e19fabb65c967cf62fec64b5c8f8d9b785acb9ffc74afc3d4841d67032cf422c05897a1ffe8eb01f16fdc0a35d2d61ee7030c51737a76a3c56d94a91c95572a55be690fb7916da34b827fd5533ba68fe096dbd13a996f5c18f77a96717b37a5034ebd70a4a13a4206feaa074086d9313dc318172793f30186df7eba343a4739942a99c988ca9f573fa9b298534878de9af2aea9540a87eb39d509067ff46585ec1057c62b9b3468455feddd4d0618e5389d47aec70150a3c67b0b8eb460490b9ab42008c8da82f20f1e6939f21f3cd2f2d9f317fec5169473b9f2750bca3f21df8228afda4ae8e891665d9711a18ba26934b1cc2de63c713db38cef2dc5ed8061feabee4303d2b7cf749fff8c907f5e0e9e28ee07caad63ce47e6367ff02875b242d80a59212b441da64e38f69c8dd44890757dba89fb81f2cc39ce47751a3f713b549eefc559460459d7b38dfb81f2ea1ae763f3eadc1978c65b50e547f0111c723c543ec2b772b823c3e07889fb81f22d7f42be7ac6fd50e13f20a2af2ec3c81dfa92aceb345ccbdf4d79297f78953fafc99f97c201d397dc812e1af9bbf894bf15ce9fd3d7d37401c8523c9fe948c8524af0dac1307fe3389e05c7c540168eafa00e7c1cc738597504a346e8b297e58b878f1f8542392a7ffe3e35fcfaf59b1a5dbbe57a005072f7eb5beb747e1d773dbb39bdebee7b07bfc67d116ebac992c2ca3444988b4abb66035fe3ee47222fa13b3200d79c73ced999ba58a58b559a75bd864df6f6aecb74257438cdba9df23b6938f68994bf58a5bd1b89fe12b577bde658e4b5ce756de5df8ae6bb5688d301fefc6f099e7f98e53fd4bbceeaa06485e05e091d94acecb5779d06b5771d7774497b575e6fa410f2b75ae56f55933f3c6385fe9eb2dc1ce556f0c9302ae752803f9f087bec28cfb239e79c13e5337f996a7a96713df7f56a6e0ee0653a54ed2ef6f8e1ffe8eb6ffbf558a5754c7e3d16b549a7399fb376dd9cb5e33e738de3b68e47eb74703d258751d2305f7dce086b6fd8a6be4435da4301eca9c76fab397a915ca46c2179ffc3895c548067c390389daaf4a403a174ce39e79c9447d638a73c62dec923774ad9a759d52b2c83d302539f5e7d55bfd43c640558477bd42b97021cbdb65a39399ee72ebd35ba757777576e00dfdc0e7f49e9b07a05dad8f4903b323906c9a0294526066db1d25baef4162d7a8b96ded285041226097eb99eea94c301a6ee415f50cf015b4f4fdf8a6a32a81cef3d616c5aad3877fac5a056c72b26c0db7f3188b3018e304aa76cd93d3814c80991e0eceeca60cb0db6ec604bd2163147ba58a2d3d3c50ed0b3f9871ea46dee1683a4d01ef5d901e176f488e12f0635894134e7a9f7500122fda782d00f13fefb39da909cb42ecae82ec4349723cd050719a6c6438f5c4fd7782dc294976c0ad24df3941798677272c543374d8b217ecb007f10c95f2f44ee54ba71ce2383cad0557d48e53677a4aa9584dc8df314175cabd5b492f597abfa90ed7e6d5675a8e5a9d3c9edf0d7e6a918e0e815cae4efa2b81412fe34cf6a6973da9bdcb9a75c536070c9b6102424195fed55e7b2c0fefacc69665429ff5637c7976455af5795a164e59417d8baf4f88aaf57175f3cedf66f9b4b25f8d6663d99b5d7bae55a840f74432f5ff2762eb4f892472f51de5f2fe3970b305f72ec9add6abc26c726cda24eb56c7b41160c822c2eb810822cc88594129e120d80e8859a88f301b6699feeaff7d76bbe427bd381b43763fefc4d9e759f7fe634dde74fe35a6a46aabc480cb0979a49c994ca44334e85d24c9634fe4518e734ddcd5a33994c26d46aa6268584a503393a4a7981694a9c0a256f99ee4ca99443eaa9fc695e3915dc037f7299ae88dc31e59abd334db4a8fcdd1955479b9231f9e7a5644c37ae5ef3ca230becafdfb8538d319f8c9fbabb8b7cf75b81f1b0cbf4c99c6aad75933e132d0da7f1ef3ecd879fc6a1dca1c95fbbe69edca191232c04932ae5292ff07761518b5c04e2108f502b4702d19bc95f7be6a930b0f408bb1e55e554fe5694ebf964643af8a88e08ce363f4a7ef2929ffce4ddfdd03f51e738e79193ebe1c6207dcd9f14fa2a5f3248c2a413a42f61928cb01c71111a2afaee4e0af30589cb111623a121a2a2ef18f49d14e60b1297366a75b7f3c8dab3f5f42b3a215a5d1817612bc0a5ac83a7bdd75feaad564e4ea7e5a8444db685410b11d1c800000050009314002028100e8884629158381c08c3640f14800b8db4406c4e1849b32889510821630c01861800000223023333a40da8e786b739edb8797f1bae5c3800c9c0ab95e4b131382040d70cc43903427ac3d4d294f0e4b3ff1ade5244046284393ef35c007215855803ddd431f5b4b12476a41d239ea311a6f6c1ffe6aa137e8edbbc2874b456ed20010cdc7892ad8eb119b1ecd05dd182753d277701b480d9f26046ebf714a231c575282d1bd46c90fec08893c372c1483bad77b1656f05a3a0bd442d25e767c0778937b4787409354bd1a93c16eb081163647fa0f555679b2eb995509634562dabced73e01a38df448fc9ff3a07d1c30585b9683d17e87ce0da41d604bdeceece7dc2e8f0d64991d317d72dfb616efd7c9439f5e395a269652b42323d18add470e11747883647fda8ffc6f674c084253f250950e6ced614cb74973be89442cde214986392ea6a83bacc201881d91c85119677be36ba5267645706fb2b8e0abf08b3890452585b2e4f6165d345b46ffd78eae3172d45c4b6f160817f0970bd9f60a44fc75cfba6c0c49b67814023ae73b9be4000483b1115c5e1a316bc203c601daa1228c72575318172e09e66ec27d74325d4ed1164f256d1b745d023f459c44d3b8ac43081e7cd2b0500648401604507a0a7efb8b14d6c832e49fad3be96fa5532512642ae898f1f6b40ae5c1fc674274809cc5feb4c31692291fd0f2a9b5a8ff492d174f7681208e1dd0b2afac5681b575cef319e281cd08ed55b6eba4c282b582fce6b2058bdf5de9d994a9576c6d5f382318bfce9fd0ebf2a3c7011a3f3ae5254db905687063a39dac0b454133ec47a515cebae929e746e3828d628ba79c7cbe955add7e6a25343d1af14e11fa3ee2333795eb355da452eb56f879eeb1cc11583872d84f61fc284906236fd54d042d580aa5e917697ceab78a6b0ae932202fd0da01de55ee45fae90adb5b210ac860cba95206a42f0bdb269867f731e9f6adb14c465fa896f49c3dfb64ad6a514c25fa1a6a3862e64891aa360b69e3071103f9e0f1d173050348c3473c98b8854efabd5a4045bd63f96473dc7d7bf7ec174117da72adac2d767a844785f63b6a364dd7f0052fc9f92499022e43fef0761f29fa25a89928485f97b22348164720c469a77de6329888fdd6ac3759360c81824da38b9d05da21c89fc15c54829c9f53ad0a131c6ea1b62730a268fb14ccdef92597f83946442aa5d819881edb3d6480832fc67de263236c798472b2924dd1b9d10eb477520e311a534260f44fe84ab26494a4d7c32d90f285c96d99b0256b019072321c098996b1f956c4b5ac6fc332de1673dccd3796d20a81ccdaf8ae212d1c34b9088275d24ea5a55f4fc201173f4a0a0b1fe3fbeac4de058f0e4d31e040c768be6f30391ce7432b8e3b525975de5f5e572c5381dac419c67f69de6466cf5ee434232c5ee91ec17afe4c5de05ac7b4e72469786c0b6b47da073fe91801a2ebb25693e70d131335a4108caaa8293d60d02e0a34e46f9204dec6edfb0e1c315068ce26d43af1e1edb9622fd4492ab5804a9094a71a9a5347b888f2f446f1971a1714865505f80e90506f777840e3c2e20e080486ffafcabde9bfe46a97ef8e8d7fa0826c14ea25d77e341da3fe0987391b4da5c426f0db28364c9785d64f7588e46df964b8952d6e8e174b3780db38b2f1ed2eb2179f3fd65c0c911d7ba2b72f1e79241c97e5b4bc349ddc85ec74f817591099986a667dcfa5949ae2d064b20dd07e0e294fe75b0ac7b060f33d003118d81f219923602995f16889528ad6a49bc1314c86e4bad090c04cf1eb3bceef7724759bef91a9ffe5a3c49384e57cf37532a5ea8fcc8a293f9c41607801f605d36eb596d75e18006336f396af91e2f8faa817e335d52a8e284d6fdf49fe726ed4cc8854c743bf72d44dddafaa71421dce4fe77ba7ddb04c811a25aef5822ddb182dad2a9e566fc4a18748d00e2aa0365865421f892c1578e1f665fed2fae3d6ca6b7348c41a38305b79ee224758600a13ee1b7fc20f2db150bb47e8fe8ced745daf412e84443ae542bed232fd47a18d985d0a026fe9f459ff148940c51ba2386bd29fdd5f621609675273e6939e8c33f0307d031a41196456c69d27692317ce215d2c9e03961932eb128091204f2a13d294ab791aa6bc42c7256ec38b8cedc881f0e9829f2b90442ddc7393c5135249889b70e9fbb1e2e5efbd0a01e2bd53ecee2e888676a0aad85525ccc64b18431118105c746093b311676b1605ebb4d05c5c192b4819ac0ef6765fa1bed27650587408a022abc773b268fc25657ffddc7f91bd4e804154f0c9c7b34e4681eadb4bc3c313ff5454ee4278244033274f26888a7e357194f822fe93ba64dfdd12c9212928e3a6deab725b4bf464a78f4bb525b1c8da96574aecee2a7b89116e99e936bb1b46b302099605ac3c759e53e623203f42e2a13b1bcc088486a58dca2fefa0979b178fa3557eb495beb80363deafaeb3b27ebc70b58c7ad7e4791715dd42180d9f39c03cfadbc19843a6a93f68db4a8bb7e774b7cd33358214cff26924d09206cf6dd08c039bd9e2f084dbdfe75b6949ef34065583dab8de1384352fe6058b632d5534fb48096cf515b4d971b3280fae0a10046378aab319926eaa6b90d1f51ba5b5fc68f1ef1f154eda749feb8d225d1c49e0f86b5605446dfc0c22b4c7424187505c270ea8b4ebf77a0790d920c55008e84975846ea36e16e13978ada1e14fcb7dd7ea1d7165939358781fd124860e82dc53770ce135ddd39522dca63c3b01bd0fcc07d21fe0b7e1fca07f589cab3ec1aca72d75477a8c0fbf358a129f23d92b98322c4a0fb4e846e4f4f53dceee53d73bf7101ab599a0d22e58d240b49ac1e0e5d69eb317a3e736bfbd27d1e29975d580f13c069a09b6298b3bccf3e41712250d92f144e1489433a3c2a792d3e64f10b4c26da10ae954731f856a5299506c9afb044b51e1d99b38e3f1fa2790c18e67aec7fd061e4de7924080f46371360672e8e01515ed309c4fddbd29b960c4bfa82b637aeb96a130165c3a000365fa50322d13ace283c47e983cc14b2cfde69ba03951365d601970262f02efca6887b0adbdae61df970dfd01a8b4d02d2c31598f239e54aae144efbf91a658111e08ad9ac8d18c353f2cecde624a492970c80c8355250213228055f0788a31ec2c897d2c44dfa2a8e9128b2e7aa2374a493152d6fb9c58169d664360ce03e370e244dba22d3a74b2fc43fdf1a9532c43f0c83d4268a82dc8d04ba5f7fc75b28a66361ab5adfd6c0689bd85edc09a810a2189cf65d400960eb430910ebc771a48eba6ad0eb47a297ef12c13ef22a956b18ef986d41b47853f9ea826760e97b60a4aa648af57d9c82be4f39d0426079504b5b796fdf688767d45a831663350bdf030629426f681e80a1aaedf65fd7c4ae619560cf6ac2f0e434af12bdb3d8acd780626633f1047806e0f660df47d51be83c99b722fb90625f171b7f515f0e0105c7b677c13f51efc3f031c8ff72a8510be986034eafcd8ed7991c4dc91a27f4706da0dca0cdd83b1c4ea1e94517f64fe7f1851cacd98f904bed51fa5e65b5c085d1f80950d72b25637a9bd1d3418b95827c7934c841c174ba7792bdf4b0be60b6e9b44b826917bf735c99ec02f04a7b12b5ecfebbe3f4806d089f9e7647b9aaa42117db6fd45c5b338da66def2b0468f898576260075ae1721d6e04ab1323eed77b078e40e819c32438907db172c43fa5f90e3fc032ebd0eb292b8a0de4171cc36ad433eafb779eb7faba6ba11713f1b193e9e79fd37a3e6306c61ee23883211a1499f39730e21f6b9f510742f31972461284c49a03df8abaca39c90fb433f950702fd32481cdb9f051ea8ea784bda912107a4a6313f34cf368abea2a86fe604b0b62633020372ab1201d62d638a39539a10b89f5bc9515793010a508ebb5a8919154a5aaa4ab9ae471869fb5cd91438a9a6a1254c42354cbfc9691c1e5509186cc3e95dfd7dc744132a77740181fb19b71d0beaa8e90557d00173240ff7825e5764f9b85069cd5d522826278fa9505a7c185d4e03314a8d45f366d44b9738472f1b068f36662ee1e5a1795be7337b69651f8b6ce20b08ee5d0bb2790c30a5a0fab084104b76b65a88d5653a8bb562fbbc41aaf45535ea7d4787b0f75785aff588e0a4ae72b5f72432b98450d68b0d28bfefb9d094947e41329b5d46100e32c68088ed44f0b8f650523dc033d8f6d581a477b1db01096a947d0438ed1f4c7ebc439d000aeb1ec7189ccb2ebec12d8211b8990609a06acfbbe053610948b95464ffc260a67fd9abd905bfa616c24323eee8a1186ba3ad181dda0bcb969ed8ec2e711465661a36ae48a5375452d5a612549ccb97720ccac0bb5011c20b2da6ef33c93763300f53adb0470f362d4038519b4078ea357614baa188eb0ea3b8232f3a0c79fb4d701f89324db412e32f5cc1b82defcdbdcf7e5c1254acd42cd685f49acd5e319def38f08e213fc5a02e7f79c6e74c14b9d790503290a72e04ef4deae2802cbd4f53b3a1aef719d35dcca6af75bacad4ab2d8624dda93e3c5a8db57f2bd6e68b2dab332f374ff4862086cb332427a81177b62dc4b833845d637b3ea29bc72c2487fa1ac2dea115ee6758b1cae5c30b0efa251e3cb90f8001595fb09d03078d764c03cc80360c6486da02e138ca11100eb16dd3727f1b9a2b85093563dd938191d7ad09ff5731c66c1a38d3f763948e9e23678a47ea261a25f8502fc1542e59d7fc165d7269c18944536af90497a4ff8146d484b3c09fb59b8ebf5b41978600fd77c84ad90eab4f0b8af2d0e5932c0e9a3e42f38de24623121aaf27acec4a468c5b0324afbeea0570d83dc29faa63447f10095ffcf7b179e79591603366d285f060bb0b493b62874223f80ab76aa5dd25aac4182925e1b111fcff4cb8e1428510ea50aafbcad7528497d37a2bd8a6a826d1b1a7286838296ef48c3a58d58cda3d5d6b8966bb0497981a8a068fa7063dff8619d808e433aeafe34744e7503a0e674c8f34ef8db1717948c5cecb17069de10f9cf58d280bb657c900e751bbc74df9125c992b833b33926dfce8a49ad033d1e602781595ce945f687367c7c0f0ed854d1d54d340a99457ce5c3d9c557f23e25ae5d383846328c0d163ab1327140905c6b493bf737a6be7349327e22e428227a147c95f9bec97bd51697f6c86ece71db0d8a58265510888a67c80738777a31ab5ae49bbbb64ce654ebf2ba3252d5e42ef0a620dc396ce31b59501aea7ddeee0482bd48d41001fb02b43cc13185a0b4874b829d8a8d1876eeb6289b4ce76681ecea4709abebeb0cc029de2f9416974f063907f67eae5bcbec600f75b478f03f7cc5822f156f0185a4828e1c24cdce173acc1301067c853f6df1afd2e0d441eb000e80d897a188309b523cf124626873f3e461047ff8632926d33ac6b8a64d1efb9df1f3127dac32733d471de77016863213a22f491aa142806611218c77941694608ca9c05ae3c5e5a2a8149e623e1bc8ba01890f61862c03990fa9aa7fbae810e2726713e34fac5c81143ef626e507ab4fd5903c7660a840a7ba72b965b62ed30b88fabc11a1a2be125d445545c1738736ba5af42c53dc0f0ecaa7744cecb94c9e493d28f05c92577f28e5ddfa9ac9979c16dd57ccc4cf035c066b1d761b0603a6afefee5b690a1669ec65527a272ecbc4b87fb57a52bb0cf1109b8f40a28551c0327ca4f73d6801549d4f9eabedd42a31410f64340148f8def8b56cd00e26e18fe5a29f0b24d7404786938198d0cc05d997eaed70610d2461341bec7c7688b3d90a90ae298198bc085329d2e7af3f5ee32b5d7f98438188000de9b204b91469505c5afdc10149aaff8b17abda832fc5491e63a0f61dce8da29c7c170c85f44b2cf444236a0e3ae93fe843a2ad14a0689c41704a01d73b81fd4caafa1ab87ade10a559d4400964c929357ff10822d5e4ea81817ebdb9e5a1e155bac45ad45fd055e1c01cfa91750d2880a19221da1e5ea85880d2fffcb948fe621797fd9a3074dfe4e01e6e5255ee4e7bea011d3ba35af304272154317b5e58e1bdf1b38677a9732840a8be5d36059a0f5b75dfc47af24cc9f4b726f922dc441edf270a719a1f1a7b4d7cc0f4e729dfba7dbdea85b3d3f86bb8c8f2f600e64621bccdeb2745f4217a9dfb2fc6ade22d824f6506c658d43b050596386c8e54fbce76e282c4910159b7d95c626f1917fddd8b83f7a618c91fe5e0fb67437d3125a64b4ca4bde598a46566f3e4333c193e1fc8356153d752ba900753477ddb27eb34128599cd2c29624d8b26b4f00c14cadad8a878ca2e87c453592f9f92e5cae05d98249496834783ca5a5b062e3b7ddee35e806508d1bfa3a94d0a3164c018af5145232677d9ee1e45919f4b0589ae4e7d82e6aa764039af5f2cee527fc28a1388e580c84bceda04895355b0987caa2df9b7341963241d05e8e8daf66a4b7f0180bb78f142c4ea0e2cbbaa9af4ee0ea2b5a6dd882650f07ad6b6cb9343c350b52348141a1f1dd7a2b9a100ce0e584820b6e7cbda2d78a19bd29bd6725a0be56ee79faac60ea2997a054c1035a40fb4467f490df05caa543c40a6343e063b097dbc27a9abe3f6750bf26192851e68339d0389b78ef4f233f47e164aef6d02b45c02cb236a642f8aeb92b0a293b21fdb71ccf49aa80d5340afcf904b02e4ebd819e1416e4f5f1570dbae32992bd16366d3894ad8ea3b15e437c9d06b34a63780c4148c2f9704e8ceed254d1564b5350a9036e0a3bb39ee8ab7396175ad910790cc7828b268db65068b7d6fc74c9acd5a2a2298006824a660d0fe804393bbcd7de8f9bcb09827fdc89cbc957660c42073fe4fbd0d5f4761bf9d2fadb721df7d653750fb120f361437e7c03c53cd99bcffb88f91eff0f967e81371f3ec256f6cdeb9b0bb2242426fda5a009d27d1d48ae055da509463a22fd2f95e4f4913f259a001f17df76c68a6c3231a5824ba806232543e38812256e4f0a398e8d7a297aab0e333179c89a6c0e38dded54c2f72588b83d5ca0e93dd0a30061716b1c9d2c98f1b453986cb877b71c09bfb067c43e925c4b37e651b91f8afdd628491d839640e7341fb8aa61524e702e74184e0594651fb1a81f3827cc54ca65e83eebd2a45719d35ccb49eb2b09b7b50f4a506a9129cca5f259a04a5d0e45047f1853ba26a655d136efcf50b9c11b65ba0fab6d82a78c287186632497a7e03ffbdbf2bce8a858f92619fb4f001dc0d4e1f184d3819b3a2c4e0802104b1da6ff5280d1ba7f47382ff25ad0cda97996e912243ad0d37efe90832a44e48b2b1c00ff49a2acbcbeaa80f0d5343a431dc80a9ac05fc2edc5eb67207643c751011d3bd69d60e3581a042e75f0a41b015a8607b075e20cd6d894642defd9352e34b4b1eb916d2f0401c20be2c22f99510cd94663a6adb73030db4f60e4e7c7d8dbb587a17902d272b6d4a2572b0e539a7d35d8ed1399444798a75d32cb0a6d5e4310a208121e3622c488d3a81b7ebcfa356ab1b8943437a995cd35513d1dee61b68a6ca3d7e25655bf6280225443a6515cff9fa4bf3cb0875a6529d640147e4b8540150a4cbd38c50ea23c99134e8ef706f86d1d35cddbadb27af8254bd1c6612c39c28afef7bef1c5db4fa4a9e320b7ce00156fa43b000e741ff7eff3d1a9ad98018c0b1c4d4233a27761586fe99e530388a5f223da46078069cbc2cc9a37af527d64e261599cdbe222547f326e014cf17ca838123e96270e808dbe17f269bbe3b4c0e5314008faed10ee7df36d46c653d927ccd9528c784f3fcd3462a5ad37aacbc2b597d480b4e8b3187554de1be1adb7fe986d4c1f36288b1d4714f6d1f21692f73ded1838ed72568f73f2d1aa06e48af9501aa8ee70d67d97eadad9c7860d3534c6997c09dc67dc04779d58dc0c9062529b4ea0991a7140896ed7dd0945b34e6e62aa6d40a73aea249193b38b49dfba7e84fe77402380e3a1610035bf13a818e1da4bcd6bd38a6449aa942e3a452d24288cc0b4bc86dcd659a321d3a1f7421551eec6597267aa0da4926b7a411483254659008f72cb0e9ab3745c78108ffca43b7a4101be51f4ed44255210858b74f1b03fb8cc3aedc01e34939e8ac75f2bc19c2a19996fe8f2011a8b6d150e4684bb6e11ade21760c0a2b8e2687ed94c9fb74742a85621da214771bd30be2a6d4a13243410d30ed013c027d807e4477176b87a60dbee006d97f4b63922be4b9bfb738943deff144934ec6fc2d4481212a26948e8de899971d2c89553e9f85bdbdec128c035fb40f7b875ae7930098b33eb1c2e950da09d667f4073ef09712c5bd247e8154d842c8df167e56c861320de3687285d302f93ea957957ba974a23012d876bcae5e6ce430ec9ea3a20400c05dc97d55b203c73e43508710b6868c460b5dc361c04043f41fa363c9179ee8257e9385ce807d9b6c87c7680923eb43e3a4e1e7814bc1c37d8f0f02d111e7dcc952b13a4a1234f0ddd1c1008eadaaebe14655630e6824021ce708e49cd1ac3add08c5099a3ab7603b73a3d6fa5bd7c980d641075d696eae4023448303cff8eb324319badd87e5868ba9931ec7797e3fbaf27801c683c9f6bebb675a9159ef62b3878eda52915c7068a07e76515352e68ee29c8334ad8e622eeaf599948f86d2083764538dac4d56f88b8eda47444744770b13f0002c42e61b5af1736381cab18ab136a005ba9cd1cf7839088ee4e7a54764129e08dadc4e4b9172d47b2182da3749a0cf423259d385aefa71af465f1439f705b14796db68a5c3faeb03c96c2238e44f938f9880624d60d4232c165098cb2dd2c2e32b15c9b67e155dda44f280d884fc4d47f78be029c8288037eb3696e37d504635f8111f1ff1e3a17d50dbb092f3e0b9bd73a4ac12331d05e5672e7427aa27adc7a126cad5c3fdf8259916c54bbae040b1c199dcb4c1b5191742fe8e3df845a9e0a36ccbb8da63058baf7d68c4a2e24442614c3ca551123e03945ede8071b40b82ebc5f99097040b982b0f0b630cd0ed8ea114043599c0515ca45212b4b23b43bbc080c81938737d0aff1c721f0f92e8650400659c24621487f5d4a6c5763cdb914017990c5b6066ec9204769232600ee5a40cfec4333fa00ecae0b7b2b3e9bcdf6f9a3117e1c7a5fcb8c3e3086ce9bcc9f8a28e351226b3dc568ec7c1a09fdbd5c2c8283b3468963876422ef0e73f1f672c55738a2200649a9c009b0bf7175c5cd6f902c7eb108abaed2b3ef8d4f20e1334a5309dd1115d39d0651bb5e2e28001c7392a1472833986147b7b76126707e1697ac9c71cb5f1439cc09f59616a156659bc64184cb449cbb380477ad430270914d5844d4b669013cb84bbe8160af2a69c1b333ed3369fee554b16750aaa2dd5b8120ace7c4b9f6552da2d937c1fdaa8ccc33dfdcad794b29d7bb579803088f05e5e6720113853b039a0c3c9df214a16562d16a16790269d6d3ea9ac0b6a55ee706aa382b0694c596a714e06ac80831980d8fdbb8db0af531145aaa79baeacc1db451725cfc1a82b0f709c3c57bfb35e10af634d4cf6adfdf0022c4a6fe267591008ac5170c3ba0c5027b1e62398a85b32294b454ec8822df8199a018827f2d32045d869c7aeba34fc2a8be0ec3d6f57af14a3d809a5e9c5de2f0ba12fe2e854755b74b52fce3f0875535f49a2b6d0da0d663386b00c86a749203ae8aff0b7fc48dec40f0c7d7cd909032fa1288acf2e8139d415c6be9e787348857a7ab7c48d080b438c354033a6c1928b6c0d328f073387d50a0a07031168c2fd563d5e5ad522723424122cc4b0f08d4104b245ce01cf35a9f154146c91b41ede9fb16702ed8f0aaecaad19535bf7e09b4a4568935976a1138d77c96ad6b1a89b50d8641ba050686d6acdb1d8e16e82d2866e96c4e9bb730eaee41fe2f4efc4ce186340c317a8235a1ed405b3225c812d60824049361e0a428f31ea634b33558121eb2407ee175ab3cba9278214ffc4d6f725be6404adc3935931f5e084f87ad4796e1add96a67e605a742d618137bda2d2e24347b64852ebead1a5fd186c3ca14da741eaae5d4bb5044f93aa8db4935831099a006fa1a0306b8f8267daa523accd0cd90001b9220c8accc7f4f1689f953617f81a2017a72bd914189e53d096a4765343ea70cfac8c0ee3e80db30ed2942a16750f1a2db8109dce19d10f1dd1b15096c16d3304ef0a560fa1c74ddc404bcb20050d041118bb2d82d0fd5985bb1253f46a5f49cdb939d5ab28a86019f725194b0b3ab9c50064ce674a801c217d607b20ea55ee78d63820aab9ee8b1036a2fc3b100eb0a128f9041824e1eff0b12f8c2c2d37a81253f0f07f91cc990b471ad4a8548b8fe0dc76ecb0c5ed9e0851b4340de6cd90b6a6074bc16f1655078240970117390f056ff35180def925510032547c33321286257dfe4c06525e2bc8ed57dc08fb9a3445d4b72abe298a9118365fbc2045b861331d68af7578bac35eebf061a6114114b42952be217730624a475c55f55ba5cb1970282a6c0de2419558de1a222bb0059578a38e9580ec17a5edeaee4bcd4852bb6cd7d423b01e0a4d7ca7468462cd431ba3aa47b34698bacd5b926eba6655981352d65147c81aef1ecc119b022116cc6cc0d2fc20914bcbd5026914a88d09d3675f93b90fd9b87e97680ad2822003d139941c78f16d08e44104d95aa29cd12e1b4299943515fbc6305fac65850fca5908703920ef7108d11dabe1713236a1eddcc9ae38cf6a8519bf2a4b16afe1bde58169fe006f007fd176dbefc8802f2200b7df867381e7b3e8ce673c27e5551eed764e9753fe1e3feb36211044f16972e2b10b2f8a0530f2ed59adfc76a99130065d8ab36c3d149a26f6c9657100b89d7fbed1de399a957ee025c1ca24b6a4050e73b2bf7ac9b0da9ea40652b42c4d7117961e5b9de8d7d06fc6ebeddd76d51048b8b8eaae1e50e1141d1449b37db12297d1c6290f13de87a305dfc377eb11a0967ce7282d8e53d26c0ee3a8a9208cf02efdbf75d8f23eb702e8bbfa0986c416c35d0ad5572ecaa963ae86b248113997c3a86f9d6e8257b60d6f26a982477688e9a8fb44936f5659227156192a6d31a659b6218197ff837ec2e5a80ab6b4c6e7eb889b65afa8a5de618bf55ed9004be0735a8b632236896c0159dc2ea525f19e05fce1d64949ce8b7272180143270754fe1d84f1d74f10419a80f042aac66c4b442137b9a887caa32641a920ad84c2fd2e203f7d3403bb140c0d2e29790ea1fee16c43039c25331bdf6d6d2a82f75aa08f03297d161b2677c839402691a231745c8339963715afa998abcce6cd0bb536af1fbb32753056fa073a4dcc52c406acae92b16630d1c5d9321af9a9a1e3846e06cc6419311fc298b6c40c9674a15cd5ab12b0ba7e3e78f770102beb75a39afad8cd2790345af5ac641bb57d851ec5a50c97f1458a918b582c06fb977167f9dbc8b38c116ed50c8c429582cfbcfc4d91d9a43170ff071148d2d556f30d53a3f7f0420e3a08ecc4f0e98a8730c1de64c1d6e8d0cdc6a8eedfc04e8921d111adf1b97d7c5ca314555568bb65386b70de5854a909c913b10de85c750807b1254ab32d458fc6e6292e372d83d36e0652a9ba1de63e037704f6ceaa9dc3e4f1f6b46d8eee341373045420ff02b976d585b8ef521122c9c4d7325a8aa42d2c89c3f237c0564aa5692aededeedf614b7848bb758db3b505ce956ed67052658c2f96ebe2521b63a1f54c5922a423759cd3ba7d8285d8021f753f878a029701180fbffd20417360cc53d87225da9b5dfd95bd757e84e0d4d74dae93cb0436e39542d7fc7da89d9d706e9e478ed11c3691ed565359f82169951786eff244b5f08a622dc6bd2c60dfb4cade40cedca30835f7ffe9c95140f3ade4b0d9aafda0c1a811b77a119846e7f1451fc6c91f45d7613c5031d42a4e340b7da503c50287d1cca5c2c9a58a3e6b1ce3274e1d14d75d0ae39db4301ac34d541f85b27aac7add1f82c960e80b171a679934a24ee9d391e60c075272bd3b7fd34e13c4b02b6a984930fce0ea6b2a6b5bf281d13ee81d39c130fdaf5adb069e9c599454d3ce895e8c85513904fc4bad97abe853706c4084f95af5a4affdf7c0d30ae9ffb7b0f78ac5a2000c7e3a030e10a013cab438b2f71cbd7e5c700cc120faaa36cb5ca07b8bc0e3b4b542094884a4480a267e04f586693660c6f7d64d9f4871e93814c2212a6808731e88931a4ddcc4ecebbdfdb25a1eb48858bcdadb4aa1f8068f5b5beff583910160c8bd613c30d6d5cddc583539d8d99483c4bb9ff92202ab921a51835dde1263013fe592182f477e9b709670b4945ad35dde7437c31ed6361cbf064172790094c92861b8fca0b2eea6680baf9630b4de591e2d4a6446756f35ab5d2415ce1c7c1105d0597a696d78e2de8b496066a32d508eb27fe09730a2c76c5f88a15013ca7c972138eb4c716fa3b62ee015808bcfcc2820afaffdb1162a91cd96d37c7550d9138902cb7020ff526c671854bf2fab55e0bfd7b14f8be7b90427a2d681ed8e7309f81536c1f9fa974207dc703abc4f3ada7c46d499f2bfa4199e3203c7098080cdc956504ca6d2f060f6ce8572fc48e49ed4f68d49bb5addcb1f3212041b73a02de562ff418c7f1a3677195bba4758c37a32d2afbe17ba53ba5256291347b56ab17f48d1fa290f3020284fbea47766eb5bb58e0e5aa17345fd1651089e499c362494ad1c8e08a11666e041ac6ae1640387e17ec96711251fbb4a0f8fc2a3ea4174573885538206ca8c5e2d21c0c2a43cf2b6e53977d86440dfd98a817fa56e275bec7c38fa61794b6dafb6d12d8b8c213090e963bcf7cb092dda97790b06bb73e171584cd36916714c9dde4d3fa81af2392654cc22c5761666a65106f5253b6a73596294539099636f8ada0cb5054ea1f197979f3480604d744090ea93ef5763ec263ce4660e3330d4f377ce33a67b9c5f7f8c3dc3a9db8a2fc6384d0b3621b87a2d8212baf0929378ec118c1c69f508743b2d0ada8e2b11a8b1955723711b0dcb902e083640dd4de54df29cd0f4460199bf7f106620dd050af8525f546e84108e86990cb2a9cbff9beefc5679b1db38c840d403a5cf0b2d0c70e325acff3334eca267c8013121295f3e7eb7ae09a9b277ea3d2eb854f8567da1871b4684f145f4ed947bed810a3840e2dd5c7bc692348ae88d0d1cce3058d8139c5fe533a191942179a38cfd6f123595fd4d5e48bd8339ca91c00013d52d6826901b923cf8aef1a31d2bbf7e8c6a294cea7ac6d32d0f8a175eaffcefa35ca4f2536a47c7825446b167c13224185c62503d3fb5aa9e70430239abfdf2a664640184320b87db11ce9f18c8fba4a08c2203d08382041b87f2a2dd1ece26016be4cec755d8271288d14e2f6184e5bf5be1b70e949345b8cf08aea7f305544095d790844caf44ac41b640386374cd3e205ea3e9c255f9f3e0c3f100e2b83721b03dd57139e3b81036335d02795c0dd9de491dfac78dcf80bfad108a361836e7f55667ed3c711695115fadb297184db9a2184da41a406beae1f17c557b0d561a90d0b85eeed4289f6d0a82858ba27ea7f851e015755dc87c99b59956442ec2978824cccefc2ab62f6db86603e82a93ff9a0456ab79771be7805d3a982b7332ab843ebf67026678c3c8aa1c65d58a4fc6190487a05eb592f4b740c0fd446f277f8a176ba152871901d05c221172550ba6a063f83b02d14b01b5e1cfd820e67042274899d00f2b9abbec6d78b5db6fe1866d6a138fb035dba8e86c2cd47f425e5e02cde83f4ce35ada418af856e242cbfd09120e5935976d016b5e56fb852714291d8a9466601e36c98d41ae1a8ea5b49fa3a7c21b032558143f4f57eea3944d72b66369519f64089441e9f1d33c41a741991ac9ad6368d27b1aed940dfe7b684178d50f7357b821ff756f31c080004bfd9ed5a4072edb8733dd3d2108e982cb201b12f3dd6b1855abcadb260b97119f35e4734c16f09a78b85dd2c5956a226151a462b0580c6a92f424036630c6e46ce772897eae2921974dd1714ccc8244688c60423a3a1c260d3d1aba6dbbe4a016970e3426d4a3732b199442db65ca7db103470f0d8f59ee7c2c3fc1c3d616f61b6047dc3402b759d746e632ef932804bee2fcffd827628e54933cf033682c5efc305a80c2a9097f4276af0f103a5f389373c65c8456399f2a66683c130d42deb489c621389570e97230e669562c4d641d9ca8e97a6aeef85d60b8c0af1d65ae81c2a0eaf33a7fa158bfc2dbae91652328fce14850b5da2c7ef6fd31b88698368655b901ecb0401c4aca4ff1f42615967898aaba067789aa73734cf56575d616f437ffb4a11a326799ec3b11a7087a0046576aa9e943615c028c15c9316a5bfefeabd7297761d8eee05851d637ca032373a5ee162861e8be4a4b937a95077cbbcbee119a4cbac324ae3c3b7b213eabd9ca2e5db3b693872d11ed0602afae193c70de1527e6cb65b2955f3099747fddaec335a5dc8b31e7fcdb405224d9e13fe4d11db7c422ac0593ddd06553a7c00913d83f9b624b0305eb60603090453f122a02bc2aae581a15505836ec82d12cf6330690896058d366d9650f688a56a8b01f1347d4ea7a22c96be6d880525a581368026f84c3bca984ce716b4bd57a66c3ec0cdc495ded7a3f3fa4ddded2e75e3fbe978c390c20e8c3b4ce56171ce990844d54d6e84f24669d2dbd9dd2d2340b3b73fc5f87bbb59ef51dc164bbf8cbaa7828b41813afc5741d5e2dd670af43911b4f4d11aefa42d64309c344238107d67072051b334db5578176909259273ab7e75a60e467b41ae85f00e8bed79967b403ae9218d52b2ea8bcf5c13fed2821bcaac565c722952d8085ed62faf5be6e5ac40bb18e24e489aadfe141da410b2aa2193407e5f13fc408e15bf7d3e92d15dcbc3f8bf8d4f91550c57bb27cb30ec750bb6699a9f77f906b8c357cf70c498c14d85a73e479e23f0ac8a03648c52141bcfcd3991fd98794541bdf14313fef1f7e7e017ffa5d1a5bd40a8ea9573bd7869a4e608778180d555d56c928543c2e2e424f2c6e2299032bc2bddca07ef5f260a611f05774d8dbea7b07810728840f3c143362396f690b694e9f792f4740652f5bf0d73ee87b377c8fde70200d31a9040426e0648acd48344afac010e91c55c459b2ccaa7ca765e5eda623012eaebff272bdcc83ab951b147d36453022dd06147fd265c323b8a131af66b7bb444ca5bab7cd15812830469d83397026a8571ebc8a9503b53fad54e05c6232ddaeaa249da97a79093bf1d2e7bccda52e9145aa6e12ffbb142427cea120415d415784c06990386129f6b9643415f6ebf7d5c034dd6388eb39e15b1e795a6e0e3a890b9a54f327e7f40d78c6c4e56eca86dc31b3b4ea18e416a45998e4913e5334bc716d2903f9da5463f1d74421f25bc50b6f1a189d73f31b24464ef1bce3685f8b70447cfa002a296413e95a3230ddfb88c30b3d661499102858f485b66e7e4da6bc7d97cced680057136812e206c4451904e7454646263d973e11b54ccf26a9e8b6e57ffee2c06466720a7cb16abb2fe19dc95fc4899eb18658e2c994c279990160964922c29c26fff5934661b62443790dcf1dec95e86c7eec74e8b13b5514888a7adebad78b4c21fa774c9da2c18c58ac274a2b07ad531547be60b953a86503dfa4efe19698bc381cbc1d3e01c99fcd99b4ac0bdb06a6f3c8405997d9799c0c36403ec03d5789fc092d6f4f2ce2ac07f8f26da3d33624ed8f7c7d8875f62404a96aa6bcc8c44f0d8bea84c08e8cab176dd97dc570231230c3718bc389b16c0842a30fdbb61eece71437f1bac63f1cffc44d396c00acc074855390f5b156b1d0b27e12d85989c384d459fa6ec00e06c259e28b343ed3968552ee4cc0ddde65914d831e50e636ef11d6d79a8acc10a6254c0014d8bff367017312333ff5e17f5f0790c520d15efe09421344eb135d08a00fa54d84011702314c66b9a0ad4086bc15fd2b54a0f30a1ff66aa34d722a21f9740c869d5042b0571a0a113bffb83661e57b8d7008e2af98afd98e97acd3eed0b5c587460969c9421beac4263d293018f13dbce5b2671bad552e59c544e907ff45534f204f4b320f1928d27bd78f0fea9982fc098bfd7805459c2012d36ec1da141dab3b333ec5ff4c4899fffa0b9fdd5b5723993fa0e8634ff615ece1526708271481f96ac7d584c794361076f946a2d0a99bab40def7c161ba68ad52ee5d870b501c5a82713d3ac9ca7a2e53b80dd52b0be72538c3b86ab0615b3d610f262c6ef9210b1f0d97c053be7b5424987ccce73cbef45e9d549f1d14b2d7cc3c963eef0aa2694a72abf93c15dc5cd62dcd11423e8120e66f9a964c5226cac61705ec6ab440aee2604758ad6187da2436a6f6308f731c850146c16a49413f81d24ce7c2275c646e922c620015805e19ddc6ae50607fd6f15e260d3141f5531c89aea1dfa16f488e6c6e3d053dc48aaef05bff6c613c04b811c853a3fc3c1262cd632dff6a41e7a7b81bba7d5e94d0ac32605b14d61e0bbc376bf441ca1fb296e2ea305fbf7a1d9af3f810637479714aa6eb1f7d234105db8bd6d9b70cf09f27a15890b9047f3a66db013a64054df4c1e73eb51a1968b7f16930e510835b62211ed0399b3f15d093e0a19876823ad0f7f50f6173c76eb4091dd2960d643bf71528c34b8f5cfe3f8e20774fbf8581fe919258f1694005297368de9a38b69dce96ef985c7a6e782b7c8237f886e450dc4b5734bbb83efe224ef2e67575b32e4877ca4d298d2601e907d322f8f8fc2485d5dd7a23fea937331d8b90627938f39c3d276f51b46556b39460c8ea0bf7ad1335c75866f1a8d1efc4d70f4f004ec664a54f7097b4ccbda4e5b5dc48d69b0720beef723a4f014f71d9964d752a034f62ec89c6d4bf22080abd91d74858ea3481ef28fc852dcb7272cf158631811ab0bde2b9c739a30da2aa2b7d74f12726d629a66f328b7137c6f0f5b8438cffeef054c3144464afbf11697c4a031d0125e47fc4c75cb157c2ba38eecf5dbaa08cb74b2d6a0b19f2387438a8280548d42bc70eac14598b11a01ba20e50da654aceb5d3a07ff50d7c9104ee9cc085d72a4b2cd2f02c937ead8a99863eefd75ea0c618a0404afd72e247cf2b6275f8239c10b5f02f2563b72552d36d6a647447119459233984f8d5676ba8379e502b33aa6fe30eb8c33983b5d734db69e6bf4902b71142fd36701d974c75d36308e09f885abe97aa26c702f19f4770b61e5856c664a00f22c9ce4be80acb228358131f3db803b589fb99d3033dfd170c69de175e542fbb7ee6887562b67d9245cfdfed2414720849af38eb497006a977790a555f091e75c9d462a2de2acdcbdcb00d4cb375e4a7f20f242d4712c9047d719b126409e721338a3b0f0ac62159db352cd10fc187285cbc9f9ea079dd5b39b600cd9a3d4b095fe1455f94e409540636a81074289bfdd1363b4c6e28f51d597a8bfd275cb05a7f01adbd6a59037d6baa2de0b5437c785d56a689176262e0ee7e629731b186e965284d3c8fe509a880e8e39cf54aadb39826b8775f8c174248536c234d4898e058f9044e80d23dac084bb19b39d09260bb57c596411218a86951d4addb0e687e5775b3b9e67a10d372d65aaa75e35cdd7974a3ea726b4fc0a9a5a95e8c189044f700d4c1a938b1edb29240d0c8d2e4c3ecf4a81c0b2682f321acd0a8a44c9ae9a5728bec89d0cc8c3769cc214f44a92489d7ed1cad59c110c68759be33a03fdb5bbaafcacba13256bfd7339c126e62d3b943b31397d7e060be8267d2f021963c7a59fed6a40eabb66048360f02062d8a71f3ef9647a4c23d5c2d73811df5f5240f26fbcf3c68986144e6a9ee49ff13ccb5b00023408fe99d30fbac74829a78b3df69e51537c0d6021f167fdc23597157ad6679e8aa494978ed526e0d2be6aecd70853ec002e0de4987ee0024ef255f521a80333de66de3906b3a56e22ed2f5e63eef5855d3e2614e57fddc5fac77676b5f59ceddd35a89af485117f2905db3b152434a29dbb88235dc79229a446b34ccf7af97310c5ff2f36a650f3c37ba363f35a5e171049584ad2f0d4b336793aed06ae8c78aa124085d522ca1d54ddfba6e2166f092339f0e888c48a858f28379fbede353f845b0f588ca09d524c523105eba779941dbbc955a1af4e9ae0b2fb973e3a2a6c051b56e062f7b60a86e57f9bc7992b3481270b5a8b4da0d167765f01caf33124654978aa32a72fa23f27906b3fb6cfbab57537278830b47668b5a7e5af71c7ec171ecc5db718995a18a7a3d48ed87036d56c6d108b8a6339fc2fc7dd457d3e2512437f807cb826a83f68e51fc81086b193bc52707e780c549cc3554a75f323442db9ecc062dd196cc57927248f233113f25f8fde0e08fc28f9d03c5246a56f18ac09587e02f9058166e60781d606ba8a60617673a0e6f108209d33a5d894dcff023b988d46ae2ffe0dd3e3b1248ed67bcb4ddb6fdb5fef15ad28366e3e14cbaf2b69de909dd99457f319c4a68c064be55ac15ad30eb08205384c04f00aa2832c1303682c970cad519c493e741d2a93cee2d25f9010dbcde2efda736eca4ecb88030837c43df3de4acf6fccefd4225b34fd8d75961f2bc43f1785c5706520cc64ff3a778de6b171336da65df22e7371ae07deb2f966cadf8be013942e33207100e80e3e3ebb74c19d6c901f51435f247e19b9b4f62fb1efd3582a939e2d009959b643ed97ca4d22dcb465e5d1069b41e5b111679cb6c9c079eb21108b3cbd3595ff647516bf84227862e7fb46b9946229a79424e74ac4e1b642eb85594ed0e37e42fff0c4a9e2ced074d805ecc7acf0041620d0b949aebd83d2c7896158db19c34e308cb443736b94552bc84b2e100d5105b616d58528875ae488bbc5ce1eda3abf82e93e979d3b81fcc03ceddff7e19afc42a9b3f20ffad5f54025c98e1809f81f187863d4036823ac8bca952089783b18f1c15d92604206d39e5d3c0de33627a3f3eab1a72cf3b8dd000e597c455346cc69979e15c6952e4a738101f56a8ba9ccb869b8d23e606f7fe243078a5ec85e2f7b143e078ec7d13f5ca641eb108e2b5413f3616a2fad82784dd1779718fb9430f1603e181607806d7f34480438acd658adfde69eca384052d31b5ed01a23a2927ec374dcfd11d3ddf0d58ac97bd6742f2bac46eaf1c79eabb5562f8b287a645ee5474cec156bc737004aa9b18a955223f6f42970097957f194060c6d03707f1e9c6801109a8eefd75bb3dfcb38c82af5f94023d7a6336aa483176397e910979728f969d964a8d06ba4c0ea3b5ef2b18c8507c2dec54b13645f365129f1136976e59fab2930411ed1bcef73886913943ee7d4a71c552f85e892e78b4d11fe3e27a4f0fa443c96a2ad2283b7c57dc4a25da73d5b39a64d6a4d5713c3c182044410bfbcf0c822c9b2feeda77a57c997024b41058c5592b7d678d70cfdba0df4f281962cf14fcf8fd823bdc51b4136c19e3b6326c468a5d79d7eaa208303298d911f1b43f940f1698346a8401922780e1b2d2c8093012d9108ae1fe82d6d367bca9f7cf8d8cd0b8803ee2708a23950c32d4a74a266b737c710ed4b2b06e2d0a590043783d6df8698fc7a2eb67c3648ca2b126aa94ba9d5daa15699077810dcad363ea905af4f5848f8e62bf65a00430856309cf3d6f1f50852f992116ad5630e8ab279ac3ba11a8e98aa7182c71043166a663e16113f28f931f1f74ea20508b5e8543a3b0d4160da24804e2f4212d46e841f29e2ced270ccd173720c7305b54a7dbe6de162ef53d2006e9e267b530a62f975a06d2e1b61dc08e8ded5e4fb3e3913bc8148e8b9156e0a1404027f9d43238f1c2de4495d9bc002259ad16e5e66f0dd209daa32d45e5b2bdbbf836f45b043940ab60cf65226b6727cc7b503213b63c03a5b169e9c4f42413bb2c876c0427bc63277674de56a0561b447279eb9a9e0bc86df461ab86719b90e013500312e1fb27d02b49bdae5f92eede2c9259b46c7bce0114852e440f7de7bf55be19b0b39a813ffee72405433a5fa7086aea4461c808a1053ede28071e13fb7b4b17a8572b45895fab94d868b7d14d6c1cdda04b86d9f5dc75bf836af376e8efdd3b7b8c15c0f28f044371a2f77dca5be796eaf5eba2752992dd91f8d9f199eb33ce2e1db0d40a289d134ef1b6163f863cc8ae946cfa3248baf566b9fa4519730d0bba0159d86ef47f575d43b5aff642adb32f8103eb37987167fe537cddfbdbd2a11c9b26c2cdce437299bd92a60c8885b6f74282369cbcf68ae527ceabc06339aebe12ac550e2c2fc8cb4df51c40071c15908c50c2d475acdea89fe5873de6a2d66c6bd5532bb4e22147b92270784910ea43487212ae8d813d3d8ed500052e400e186e4967695653498855510243fc2018c07cb3a4683ec66ef0202cba07511eb7d660dfce0656826277e9eb1660eb796d65d515bac4e3c672c64168a57730d188570802a01c19cbb7e5ecb6091f93e6c6c7a0bad05183fece3574caac5a207919dc1d8fd34ec04c742c7f09f9189d44cb020e19a244c105cee80f0975842147f7ab65eb6f011f2b3f53ac9d924768621d2735dbe3e26f207e4fe124d34cef1d6f58f9f51d2e9f9a178f1ff6b290f61cbd7803f082913b4448d66c81700081a7d41db3bb213a340052a34f49ef020eb4f2598791d3bd4f17c1628940a82a26a8e35bfed55f8b9374936391f4a0d7a0690f95cec96122dc63b1da792ba7d5f7704baac67db2d78a0c522b39b5ce048e2d17f0276cbc26f95111dbd03fbfce69c3aa9881bba813243fb82a4ca1eeb7ae5b00e583b9046a64ad6f5728e3ffdb55e3c3f44a74800ebe472df603b85d546d28600e35146bf3ac8a3c1d266a053189f0148cebb2d353ccbe194ab7be572de723ee5efa8f2bf5f492648d4770e32206a8181868029e8f122805177096017c249a63347ba375946717e5076513652dba3ecc0aaa7651f6cb9e4b67309ab2a94c00d06617a8268f2ef7522451068bdeaf0db9860ff5e0c1b33399368245f9b8a76360917336bd2a45382cc2cf38fcbed2834cab5aa2db7461d60cf32aa63efe71ab35420552a931c15da1788c6826d52d08bec163d997e8b2e8ebae107afd4e8248ec67da6df71789b7fede46368b11b73939679d104f400e5f6a13f6f8097ec6f8e202fde70285c44f7969697628d9617d6cd5ccfe6dca98c6a80b62e013456a12b75ad10f42df606c511c2d047ed9d81b256c56f920da211d75ca31eb427f3e31886820c2b3f42ab3c2d1fb061a84998e212bd334d01f860036edf89cc9a6f3c376d7f084d8fd71a1bf01af7fb8850dbd7cbb5136195b8fd094621a253fa67397ac79bd5fd347f9ea073ccc3fd6cf6f14d22ceb692fb26d68d6da1f83a2bb6b439a5d286a23739a9da2fece8a010415cb49b1424b253e2bbd4eecb009340441b7749cd2ccd1bae3d07b479f55820afc1dc21050d52bd09177a31d4793870c463702175d24763a89b75a09e5c8060558dd042fe9783307ea96f54bf57819edad2c0adeded58869e04ac32fef2755d74081086ca34a6008c597397c549f8819c0b191ba6b9694133e1c437599fa2199b14f7edad6bcc68598f7a9161bacf2f44c9046c2ca6e8139b8129e1fd99aa20c87dde001d78483ab854c4c37c684c909af0fcd38514eaecb555ea1b7835ca9c223a882c8e1e8037ef6a7fb8c2adf7d9e6dc9899e7c6d8e22257ad39217eccf7596a1caa73334496720eb59a192a81083e1a9c1ff405cab85f790ce96d62a9db1a0b25b909da4ee230380324ede6112c208a5fd92fb20d9994c1aabe76ddc507b90b82107cb3f84a1b596619c253d2a8eab41035e06a2c03d8d2bed283d422137376d10e188528011ec57aeee2369a06e6f77058d200f868f10704f2fd1fa72da63fa5ea92d0b53f748d2c1c24e56795cdcecb6c4315169d71a80d1f210607b60c468ccdc2e4ff45e305c9955a75896b7dfc69d0f993b5ee0d1f421addb7838c0b6b8239477b639f4251ad900c0ffbf1d583c32feb46d056c22335c91b78476f42315b99cc55463100c9ed49b6879f1d90b52d06b6a144104e8b6feec344150b848adb839ee0715adc77bd30ec52a6a51912731bc7bbd962bdb2c4ecfb5d9260263652508bcd314b7217255ba87282d34fdb25595e2fd2b45c0efcc7f0c4650b370ed1392077428b689a3c6ecae11798162129fe2eed37f5c3d88202b1843a3b6e10d9fbe5438d9f50088dd63a43a495b3c96f03198a20963d7b2065e958364e1bdc8a1f860bd153818a2bafb7340fbfa5553cdaed27833389b966230f38962d64e2cb197c1e5f9201c6db4f32a4334c149bffd51e44c769fc7698961427aeb416ed9e05db5b9cd622c39857302381e916764352e117d67f910cc3631838a2c0b083a779e0c859c5444279bc86e1928ecf2e8b0bc2ef7ec6e7ee8cc4f1428d43888cae8b002a0f78824f89e1c6b0a05153080e4b589e1281a621c237116fe0d872583662b136a26aa3730d542d3ce7c83a3ee3692064edca84d415ef67f9cf7f72078101baf34ca3bc10d9e3d162441dc64b53a2ce0974b51c4d5d33c48395101803b477a63cdd98217485ee15ecdf72320cf0da1813cec57b94a16d130f2c9a3c860c76ed62c9cfa64612f8bb34f70fbb85f0b076bfcd59380b9a7a1bc463198278b38d1e3e7d06b5312a688092b00c01969aa0d003c1b5e4959121c48e31f0573cf6a2380439e73cf2003aff085bfb27bc78df58138e0f9f490973d7a60ffa25a7fd36f17d33afe1c96aa65e10b565c68c82cda00736b033879d989f7ce3d384986dfc5f2e81c01f9012f687811f2f143b797bcd0fd88bad43d62df6b0fc2272945578ec86b94a231eb6ebe0093405a8e5c461a9603c84063c5543b892b76e57ad584305ab4fc349810b06cba1f057921a41746fd21c0ad36ac7c7a5d0eeb796b8261b62b6715599b5eaf7b04919b15ec7f735a0371b8755075d92ce6ef4c298f6c079aa0339436fb0ecea2619c8d0d56b932f981332a1ccff8722bafb76efa3113434d063fb8984fc13cdf9cc98f38917b2819b96f837b188f28662180998aa9c6c8ce088c43f7f61bc2ea00e04852a4ea32fc4815b1d63588adacba2888ef35e89311272f750aab6a2b8af6a3379dc93786dff485f1ee65482c205a5a699600f2aa5122d1d697701b52314622e949226b0985105afe8c6c4da98ff0e7f486e02d7f9d6ef261d253f396a66cb783cde8263a4b90db5a20eabfa40ba58e279253d48929d08d565b842bb936e6d1d10ad56f5590e28f10d5d2f844fb258a3e57681e819ecfed4c9591e54fa957baa938430208732cb30ec0ae6e1750176de0f57493743d7021cdcf6ec10f9d67c86dc956a9dca21c0962e309b0a1e41c2481072584af9f0b5e2816d413128e9ee10401da35bf09bdb4339172e5abdfcb1c82b32cce08e9bb571d608517982cd6ed096d42a5cd7baadb761ac8cce0621e082aad8c591e8e0db42c85b385dd8419a9339f48e854d5d307b82aaeacd68662d553c128cad32194504e7764abb2284d39963b2eb4ea7bca7f1826b9370477336e5f035c9e48dfced3e3f63a0e2696152c6ccb61195309ecdef514b12535bbd6bea668b9436a517a345693d141a12118758d9bf1f16da710c9201cd6e68981f08ae967fa0a9dd0898700e17ba5201545a3ab9158e7e20020e4480676fce0c2d0006f831cb1929673169894ebecf5c41a9f300240c2f1665e8547637dce2b5b386ce4e7c1ce40b97d977eafda60a1d627e7560f713a82d502a8976c35758d76ab9c10cddcb9a6d5f8ca024c2cb801bd045d3f88480efa286de90dbc0a294c10d1ce43a6b69245eba2fd5343ad5345e36516ec5204ca263eeba1bbe2b3b39e19a389f885afc399519e9750a08e79d29cba5aba2e5bc349ffab78e851d016810113b4ff7217bf1bdd51c58c5ebc828360b7cef6c522d0658d783a8911266ba9ccbcda5cfc9a24d3c43838e978abd029adeb2c936d1c0bb75231e47a18783d4e10f0b4809b310992b38f7880bf3d8efc44fa54163d3d43a57f706ea394c5b3654d40cc3ba71c6b8db9f5231b5de809d8cbbd9130520e3c438251046e5ca130aa7a5a34f1b3f5d4c37057007e0988cf518d92ee580e3d3238deb137182b0f1d3bcac814acdaa3f89ed09f08c1cb508473c4099bbf2c963145112a07645c2c169b8b73d24f5f7ded8b103daec3a3e658d03e99387d9df34c30f45f0dfb2bfc04014d4f336b40a210a7defaa056ec83aa9f813f1ff1b25da9d72b1ee54e0bbcfad9794ed2f5fa3787582be6241d3bac1095b58dd3a300874f375949b66c99a4e0538129e1737d55ab419abf378d585716ca29aa33eecb56948cf24b7a25b4856bce15d20fb6cf479feac4d6066c86e44c9a3c3ac60a582312df1a004562e055c865cf935390ba037092eaf5fd45487c51d808cbe05b79bc00a451b0817fe3522d1836850c3e3cb30aec0395ba9c6b7067c55fe314c8db8f5e939091c2815620c021f59169847035d2c00ebc5508ab9004e4af3e1d984401ea174e8b6c2b3c482450dc3d1027618601744f9c0a37ae34de2e6e782a51cb1b14c94c981e64f1755493c3d976472d0e71185f0f82a5088947b15b95923ea3054146f2d96a75af9bc4d8d4bef2d5df419a13570623d6ebab7c78813fa0f936ed0f80c1c7312bd314e238b35b8afcfeb57eac0b41ec8597fa37f3ae68ea3d477caf6e6e57adb7238e557e81c490463e0f02c3424df3877170187b9a0e070c1b1700b18ad8c29b2e5111eb2ab4cef60c1c6f8c2f3661a642c61627de17a19b16a8fb2a4b012f6414d59a8f8dc9db5bc28cc8b772f9ba15263850043316ca63d9109c816bf959935f789734b8930b40a40c55034550310235b952b1b5db502df8e89a9550032ac5ef9ebf808d3d16e1e823971d6c13952184d009bafad44604477155ad318268940c76412fa77ef912da412eb76a8fab6b1bf1f8dff15a4bc4cce0c16253b5403d280e99bfd3791490660de7f79fc7c7eb6eb0ea7a190d0a382bd8f8b52d87f0df59cf0423149d9dc071dfd383505ec61aaef164df864871fd57091751fb3dbe53c94fa2f003360f079496b8390756c8ac778e06642558658463461cda4685a58ad62917a26ecea0e8520862fd960f1184640c3a1264dade24d2cd88b315982e96bc09d4a2c5b17ca453989d93da8a4a80e793f323bd8bb61f919a93c8467c686a9fa5387210af7e618eda9b63ee1cf4054a8d25032e4f4cc8c13c8eb93205a453422c362d1079d06487469d6653a3ad4972fa49355726539119800927461374d2f7ee323f5077a87595173f15bbc2395118591671ee00f879cd90823a1c531902ff3c0b5f741e20eff28126f5f905be84095de12eed7a765491da4041f25973081216fa98fb123aa281e79d6b401f51d7d007ec7a2129679ba41be454d219c4ab5341119ff40a912d0599cef08a5a33c52d79fafcc423c16a28079f8a735a93950721b26b74878b4d82c935b929be89fee1ceac8c6c3539d93056526e351b683f7f3a784ffd7f261fe98f677f18e1a9f130512f6014332a0963240d9cf9350bd06b88f07e9f9000582ce456154b845c4c018a11dc7d83a2d132761e98086a69566fe64d3190f54e62c9574bd1a7c59cc4aaefc3026608f7ed65464f50f74f133a3c9bd5514b39e2e0dfe1aa2838df3c96fb81437a6ef5bb68330f6057d4d5c6125ba896284ba081d6af3b20d1414b83d9f8ff0a91d49d0317c7a1893aea063c054a0db875c775fdb51f456cb41db76040f3a7c2d768c4d2a63f6c2fb6f081dabd1ba24748cdf081d43222a31aa64b41fa0ba7d5a69e49af14cf28a34ea7a4247f5a81a5a606990f4191588c5e8fbf816946c1a4ac44c1ea2df105175e15dfb0130467c0bd49bc6ebccc2c2793c2c482a8749abf5b071f48d613a6f02316e783e50e2e01ee35b516309d9c9b4edd418484d1555e831fc35395c1ab421193edef625a06a7b5828a68f10bf38698b103615a705e44b6c0ed86ec43f2a9114b2538dbdd90f229b95a3207e69cba56c5093dc1441c1a62748de68ca46f84c4c085b6bf3b4d97c53f50cd3c1d54d4b148d050aac6327d6dc7d781d3b1d368201e2e9269a2a56c0a59bd843a8491ac574d1140f184a1d7bf027947d89772fb56b458a8716034eb9dadc7984dfd7a9b888e653eaa56b774b14d3d234ad73989ca6ba1b156928c5c2486c8a028c94042dfc0ff4a962cb4d150353e3cb8304e47e5da942d3a402b118225a953bdb4c087d356c9419a9b73021b842821449a1742ad010891aeb6527cfeb528d0ce9ef04a88143f6b2dd5091324907fb5eeff51ef070102433411bc015d49d2ea70c298f4aa670aeb7619861ad3f7fb2b7b73e5acb04e5db4bac9f9f038395ae62a97e4d26d2bd1ce8cc02fe68f9fdb3fe3ee84c07c560e886ee036ac7466e4f4f4762dc1f20dc660262fe63aed067f448f06b06ca991f18f582998552ace90178f2cde41b14c760033f49e3d9fd8a17137a922f649ac692847fc7f3ef27231447174a99512624781cbdc1be3e436cd5eba616613f219160df32672b5418ea2acc78abad1ec1640b37d6857bb70bbca2995a562a8888482c3c59137cc4cc03c03e4cd8588872671cae2821f01c205468d4e25732d56c71acd006f0525e940e390871a8a65f62e0eda95e3157cc9aae80ad673a19089801d3b7751fa78c7987dd0637715c061b7dd58fcb1e59c7e7a4d3f1d97b77aef8457fab280a80574b6651ec3b6e006fb65d11f6cee226780eb17f7323c684a67d0870617b9f638847826e94daeae3ff90a9fc2b28e399ca9084af87468b4707f3cebf8f142c025cc5a8604807a750d15a6035581ee61cb944f3ad1c56c1174e6ec36149833122d4d4f08e65a4b7d8592deef4c9ed5bde5d18864d4bd59281355288aafdae5619af1ae3bc8af68d2d7466d1f4116636f9d9e88e834eec47fc4f896268a1b44a4ba70afc1852cfb94ae3abaf92987a4cb7ea48ad125115a394fb0c5b1fa698e2ca1d6a6bedcee250cd799404851e1ece4b9192b36340c6386f6f68ccbf99a9bcb8ac56342eb3c6d0a33d9d496543a00697f0013a4208c1fd5170571f2e75487907fb040e7e4767bfb62067122c930333e1780b11d54b39e5ebd7b157457f66aa58a62b46b0c225f700aa6ad797c40484967a204993f7d9fccadd1beb945b1f9814207aa2bf69ec0706118c8869a0c8da7d0867037bcca48bf90add1614fa575bc596bcd7475d8971f2d2e405a227e93bd1f58a8cb4a81f342f9ea2753db885ef6b68c763a0536bb20220ce229ffb4a651a39a23c416f5dd555de88ffd81db8d477bf751a980ef44e436455b52fdc15a8201669bbba36924ead37719a38445a42fd115859c982a16dba4f11141cc242a17aaabeddfc20943497892d84c4ce96f1358d2d7052252c71539c052b2dc4475d0e0f9a4c2a56d826bcc162890c8216156960c9bc07cdb106e59583fe098687a100a28135e9b70244c6f7a8e164a4a3cb7fd94c0c0dd48e1f20302503ba644412a21d0493fd054c793d3629efd5f8a27b0a0ae7ae863fa0aa7e4bbab3c17b6b6d5c3f8d3715fcd4d3f3bff480cfc3ffa76f1857ee1b32eadb3195482f3e1ce25977c82488e8efe043db76e0cc7b99405d39471c3f9ac31a4618a1990a68e88d217b56b52c9040438afc80112f31f5b00948ff564c128965f0c2c69779d72dd8237f30be90dc5ef0f9b50ef91bcaf44f2d736e343c14ab9858f7f26876d25bad0f5e55c1cf0cd4ddc27eec79da652953118b5b74c2fe5207214bc1241da7deb4ac8611b50e509a7ac0c20e08587d297b3889443cbd663c002ade0a785ec3fb4cb6954ea777d6a065c96c153115ea163add18ca31481ec76cc67ea07b791e424b6e28fe77d5ed0f411121e28a8c38c9df492503e2ca72802db6b2c1c2bf1c6f7fd8ebb67f6d0525b757d81539686d7db812f1a1780d24746e28f5f8c81149279ef9db29e8e089a31b7ac30642c2a52eb06e0e161087457b5cfe90d9a3480a2d0000c13c177653d28f148c75cf49cabdff9804459e51932f9013011cc4bc2b784ff6b7539e410f1e5d6d1ae5a47aa339c0011a7a373db7b64e6c6fbce8eeb339648c50c45c057fe6bafb106de1a227b95127780135e48741f674a8468266bfb6e804b9805353308589a0ce5ef7b02ab600ba4feb81b465a74116bf48b61f844cdeae7059e99c8b085759b872d21aaed5040b6b64e0a2858b281a69c196280959ca75a36d63062c216c697ca3103254a27ae566ad21b14db2b1b0c9cd346e1a5914772f168680525a50f7d5c8a38d7eed01a17d7939c24bf7100ff3de22354bc6222256ac8c999aa05e057f622393ee6b2d3965b5fbc1406b77ac300e0eca4166fba4bd8828ea0feb8e29f505f47c748e59968379e4d57c3a92b2f54c157b1b5716b1a3c40cb308f5059fb9b036a0e1aacfb1c920950b8e7dcfeaa686c9d91b9d4d4498624aa71e771d3c12b24f2eac4f1f27bdbe36ebe39d1610f826cdaa4cdcf5843c5722fbce4102298e590fafaa56840fd7523879a7d00b7a992d2f467d3915088c30a2ffac2591aeaeed62d11c82ad4826b45192d7761818e16eb8c80736a4760fe4cd052cb725a2620b7049d6d83404e5a7022741a259798e3f60df2b3e58cb0857f16c311a605f6fa864e32ab74381cadc1ea03707739d1764bb7bec0085f48c467d0bfa3fc4ee553fd4d64ad652903b2bcd7a24c162975d25e90d75a734f3e6ac26e2b508c8ed0f949d9208e50870a81ba6a004ccfae8a930ed9ee9ec0b09dc370fb811cd945c893ffe122a96c225c34b785bb07c9b4a7cd4fa9ec590a0132d73b15b4234a03222bbc4a3f513672fa358ccff67d801b6711101cb2b826a4a02e050687e442203fe925546ddd8095a4f8aec26c040499bb7a91738fdef43aa2f851a2053ca28117647949a6ef5a45ca5b7842a96f588f51f80f98eba900053d27a3a498be02d93066a551fb576cd0356ae047cf7831f3f9a1327380f611d9c4370e03a262799dcd3de4c69ccd1548c1963ed5686e45e790230265756b873554f3f31257f38a9b0d1d12dd45eaa225dc5ae3a1a7f162fe8c2bc88868058c74aeb4b7354084647d7604b47471bbaa9a2d33354fc149d40ac5734711b408ccd71794d0ceb9efbfccb3d26e1ca4390f2b6fd98c39a02eb6f7ceaa58c941aeafe8c0f6d44504a4d13d69da60c5c739139a7739e70d14eee9a4cec0f6b9595db32590edcb902ce660d995d509e978d0aa19897f3825d023c98af7ecda78ec5633c23361229a52e2ae930abacdb4e32e248ba0f9494277875bd0df3c878fde6bb77def0302d9dad08e48698a9f5c3b8427f4f256fe57105b37536e3e2da46752b263c01835f4e9c4b37fa2773287326216f93e1a96a0ce7aae94756290baf50bddc06c3dc4e499b44c8bfe8f77f2f0649d7d390e222479c4954ddd1e0d450f67d4617a4c4437f82e7f790ecae8cd60402e8b779a3c8b80f2be7455b881d1f3bd55be0d2cc6ae22609e8bacc8a21856b730dd4e39c56800904043926493b4a9ca0cb8f1f313b2153bedfccf0730b686cc2f1e7ea3c59a5558f816a1da59b34ac91e9d78ce42269350726e315fa9375c29ea88c9c3f24feab3bad8216da02a07348380c2d34952e282f4acc8fa17f1be0acea8af4da7128e315a8b0abddda857739bea5496fe11cdb3b90477f29394b1f430ffac0e7ce66756a84a921d2aaec5d1a2c52cd074a0f13467bd7a6015b7747408a61f45697530b92fb3cdf2022c38651b0bb33cdc7b53593609f1cd0c2bb96316fb6f420e4aa4c9c2ee205d29a0c2db8266f61f88403c1a2ea70b706392c778c5c877fd51f087a8169eecc62446b073ccef7c3fa1c505bbd42e0685e304e02948e56be6441cb7ab9cf2969dd0cb8c04c29c39db71193b33a0df2ace3e82b50f0fd69644af54f1ce595cf32af514349d7d25f57d16b66b4aea6d79c40cc483c15b75ce0a74398e961c67ca7cf85e38af0841c38efd32b733ecb840c13c2bc0e527b0a4be67615c70e86e5a5504585faec1a74a16b87f67220ea658a90da29127707c991d8b18b9efc2da1911b8d9a00024d32d16f151d3d2004b177809a51cd36d08e99b98f03110365d439ad2c747960faeb0f3b1e323903e124559fa6dff0af0bdfc59c3277a28627b6e25072a5d7173ddc61b8c90768f0e80cecb576aabe57b99a364281b6dc82b52f3228d8a71c80320a73e332dffb31f2e311297ff70eacc9af55cca49ffeb5b6f8a15423275b86aafe9d6209c4f7163332acd62796f3f7b4cd6973541a27f3f27ac9860d9a69acff21bcf4602c92d526fb04195b39467893a23cf1e639e318a119e7a4595d2f5011dbeeb88df9629d1b361caeb61db8483897907b6a4a5da662aada047b397ed65a33e708d32c4b214ecd4dc9a7838e9e17305cb2080d47ced80dac0fa3c1998d4a16e0c5328d18faad81f9b104842733718b70d5aa53680b5e01681dd49066d13ee137cf1e069850b04f299cf10c160703635e33f05692d051a986cfff091ddf18f6a9f853d6c5a8d911fd65c9003115744455a75ed04b6cfbe86a5d10311720b69abf692348a0fa56e8902e40a24b3cb02825b5e88694a6fd9b1fbcdd6b4cf82201bcffc242de1c27b839506249fb5af9365ff62f93cf5f6086bd9888c4e4c176083ac6928803c093e83b18c11e2086abc7dc5cf023806ae46e05d20b7a88c4e7c72b69e1dff5c3c371dcc11c6e4c083c50f6dda3e7c9350e2d4bf83f4cba6898208d06e155252303464355abb35cd7f574c28d368c4c5b9bd1a0bfdd0c734b190dc2f2353cc8e0a9044f8e22b3b37178e85d6af47474ec390345242fc41dce1fb4bd6a1f8012ebe1e1fdc7f2a766f8221d5f3fe774c3f2901bb86630e43e8c03f286fbfd99cf86259d23e5aab3991cf12036d4c2853c73b7ec0c192308cf8044508f1fa47432b5e381f99726f8242bfab0190e9938c41458906e335114df02d4ac1ccb2793fe5435d277315cc0b2bf22b403ca6aae2de93fb21d524a8aced7653c290175713d214703dc8f1900b5a5b120eee36d373d37e142ef4eb8d3bb8937fa66c2b5f4ebd64e90ecca155bd68acbc797f778b71c2a5261557982cd0e354653ada4dc8bf891072e0c5c2d0b4cbd46dfd2503651b659f1bf1ed30ed99cad928424914d15df6c8d78195d3d2964d8f14e4f7a563b8a2f62b49c4873cd4835edbd9fe98e6af577bc12d0dc6860b829f85b3919e452a3e09637d8ef064eac577bcfd2ef13ad9775744b08ca5e7b4afb90836560ad6c9b54773a784fbc6233207127bcd3dbb6068e7f5d4253a33999656e6e52659dd97aec371d5bd01857a1343c7bf8312cb36c5170f551d48ad062a02fe116ad8f9c56476abd5cdf9ee5b8c65a31cc26637207e6651c4059d78e2b994aff036757ae3643a75808333a260fae6b8711109caf767e7a3ef0eb2915d41bff9da950ece61ae4df3b5fccd22dfaaa0a87a6cf0219b423b88050300ec76ec3995ea00de0fafcaec68ed6fe791b90c702d4d3173adc926d881caceac7366ebdb24fd821b59cb7baa78bd0126422f807892b18a223b9932be9038e1685e5ba5c2067cf854dac60ae6bd928d15a31e50d78f58186d359961d4f46304dabc2557d66aa499d6e2c6f3546fcea780f6aaae0658cc9f779138044948d29a87710e2193c962d50b7a5396841b24fa87c9e650a0d4a863a4c55d05e320875a60b1a4e262066860a0361fc91932a14b2312036a880166887d235f66626d9d00bceba7cbafaee64ba120ce72b2bc71ce015b5c43db03c9d4b77c39a24a3599539c1ff66a4cf23651e5691295d4aaf8cc9b48c713b13d7be575bb2715608b1fa194bd6501af93fdbedbd824c57664ae84f9208be9d8f0ab4528b873b1791ee7ba4234a3c7a6b07a29ff5a9ada6e22949eb9faca8b7c0d5df5b0663241080114aff29fbe0a247beb3047a4eb07fe48781d4a1149f63c0174f3d3be421f441e65210a36cc076d858223b4c3653b2c2e90c8c11eb296f124742d5624baa68ba026462bb83345a732367d68e7564721b06f4dc223b68dbd38eca922f3f0b0b8fb3a037c46facbf4c09680a62963869c17a999eb8798ba5e60d41a6f6faf60e6771a69f6726c25564e06d1760e509e646a655d46f25b77e70fa001da19e79423b9e1591281d7ca146e7169d3067157c6dd97512ee565d996efa034b42046b26cc6bbae4b32a8612e9081741cfbc5fbd56184fbe3305b1a71ff05442389c7ea2e459c6c479d81033e47d439570831b910919744cf5ef9c423b5192d55a8b561c39a0851c22aeda49b82b1e1a44aafceac918cf59cce0afbf9bf071b6ac4f1209baab7206f8e824f5bf536a8f4dd58d4d144b03a392db384ba1827e0987e4282bd8d8d6c6d205d2a1ae41616e6d5aa0b891e1e5165496062f1eb7ef8bf2d48cde510f01689270abdb757bb43cd2eeea82f92536556806f8e19e08122f2f5405ba056510123d1797aacfef11a515ff20dca337ac6e1bc85b942b2a0b47e66ba66162c3030aaf58715e350e0f4475d3332b850dc9ec2067f61208decf0c2b62ebf89e2d367206d56cffa986aa475567e11bf0c1c007f13b7388075d1abf18081f2ae10ddbf515c1d3d7b2bf6f125f725501cfe64f346588921b6f7259ed75c85a6b83ab65574df760dbe68f7597f41c4b0a2ebb3f6cbc7956ca5f715e43c8095249d27c50b129dfa10617ef7d159b977cf9810d4870c0975c6901f68d3f44f56d1f0de8630e917c8a9895ff6f7d2b539ea0b5033b620aa1c19f15ec84da2c9e28b6a5e2c7f54b31a586710ad730c25658f1e6df139395f8177d2b7c965716fc8ce6dd291bb67f1d34aa09f16118a5a52bbf8c9974550b214be6da74c0d31b6819194b97813b740079df0c76800e932d0ea991264ffb55d557b62ae8ee46cd52e7986e27b2f1d570c92d626bb6155c02ac834479486860335bebc1e376223daa58ba9a8c3ea61207d38c1651c33cc6c97822402221fc3a677e1224ed46dc9cacc694168c3b1356de0c1e3e61e14cabf86650ea3f52e4e0ee510bd0ad0109663b5ee04981d431b2fffe22674d4f1dcb188cb868c3f4c5f5b244ea4ef109bb826d43ba9bf65b180f8914fb5bbfa842a270153fdbef855dc47c9195e46673e70b58557ca8349bcdcd39c12854f83841af5e0bf819c9ad8e69a3272362c844e866bea179dfb718c61e2841291f7856ef170f699d19624468a92dfa65dfba30a75ac32652c500175dca12c8cd9bf57a790fec1e6a10da7fbfedba1ee0071668e18363d8168802931e504b78b1140e35974fdde99eb62add1892c3c3d04e6fea1dd8bc1894b9e53ce6341c213998272b2ad0d09a7d174878d19a6afeb9bbf9372612a7840e10eff118232b57a5badcd5ed14f02835f6bee19eed5b31d8ec8542da4721035ba8bdde1501712c506a4b4167b51cf2fc01bc22ea7388f68897cf9bbaf6cff17e7c4547380432c36cac64fa7b1c29aa26e0a89d456b2ff83372f096f3a50af94d1b6e82b159205c2fd6b3339bff7dbd5eaab79cf3a23d3b1731d8d61b1ddf4dd08b6c3a2fd332695dff62ee0dc9f994228f8405747303c82db9f33796d4e514c6b7f1a33c2c182726f98956c3627be0e2e7a7c9c60da906e1540eec26e1335cdb7e31ac9e2c1810329d97ca6d0b9c50908ef0ccbd25083c3d0492d44144f6b09d25450ec411dfcd5ad5760fb910761554899f12111af141a2d84ec7fa567bd4a9f91ed29d60583ea59669f9527d9ae4a73974677efc0c785ef6d4749728601b41f69c7df56676ac41a0b8697b0cb94b43ae6a9c6a170dcb6d775837a321d94f769e2bc781c4e9aa42721ba8cf4aba18eabf183ec6ad1be38e671890200b1a50e4257bac58fe01ddf2ff750d99cec1bd3ba6e131219dddf2ddfcec4426e59edc2e879b4e859d0a3adf97367a64edabc54d6a05504375089b78b1c621f2958cc956da1c98eba27b4567fa93f3c5e9aa3dc10daf81f0f4f3cda1c0b47225edf102fbc312d042bac5bd8ee72ebd0b426462276284cbdbda058bdc98dcb69fdef0749b4100b1a204ac88d5874e4582d33e94f04ea3b3c3d7241591583f8f336482c605f261f5187600c66a43548c0f273208302bf226c421e6b5c6602f5b1e42e71116abca555c7cbc73fa2dd2212c6d29c283f6bc42a75cce489c3d1443ff0c3007a4d651666638974f9b60fed253a5e3f34ea880d56a9c674a2fa5c1ed7bdce82bbdc552fe3dee3dc84844bf445248c2947d5f32c8004248467b7dc8f511b27ea9d9acf218410ed2a17d46fc628fca201435c7d595d6dbc2301b003d78dc16fcccbe1c3f681d1347aea1168e85871f7963a21e4f67d910931ff40a4550e3a0ade6378a1272ba43b98a32489083112a1419a0549e4c68b17abff974db60a976644586c00d961fe216a3ab0e083f4b55a407cdb9075aa88327c96a3b9d32d16b4ef68b6a1e695d6e52f48e7dd6aaaca5eb914bdeb5fbe418d34941cd5b33a9b4e0e940f2a4a027d66b683c04911d71042366dd75aba19d37e1d5461425197bb323b8b23f4231f05ece597c4f2e07665235a3b4fbccd3d227723ba5bc9b204c91ccb3999a7de785721bd6c5662d1948a97d9293ad3bc7101027ac466438fc59beb654df22ce523db9a7450ea023b86d9010e52c12c52a29df7c421c141de3066571853ca8909d32fe7e79fa240ae3171dd79a82628b35800135ce4ca45092ba15ca8d44d72c0ec8b7b85acc0e564bec1ae37487d91bbf7ac733154d6f968a7cb2c7a991d0f4674ed703bc90fe33ab86729569645b880e43d96cfbe0865c61ff4acae87f0327100b2f17c950ddc80e1ab93fcfbd81a2fe45c1bb8cf4b56a1521351932b97cd273f3bcacbfd4484aab225d7ca573eb6096139f96ab44ce7c6ba5cd7015fc5f3306f6103643632dbb53d4ba569bfdc49c84dfce0a8e85291acb0b99767828baa43bcef8fe1e364b1859d5504d8d31828cd83eabbb08208a900fba641a259393f9b84116801662302c8021560877bcd02cd08d244a29336c7e0009c0482ef302b654b9c6562c4cd47d71c43910db587f5474231ff6a06c071255a879f5c0b0568978399c1833a7117660ee21c3d4c1a7bd1969ed4bb7db31143ff5f0b31c1a7e953df91b5d99e743676a40d04e275efbbddba8b716f20b26c273bb04b622fe00a18f7b8a40ceaa67704c23200c47a17b42da2defbc59f862ab131a25e5b1f65e2cfa8c3bec93c4fbc50c228bbb08f8bcdadc0d4ab374ed8674a470040a894bb7592054ba4a079a3662cbd8d9f07921faf5e9a66a1c87e4ba5b193fafe6f8127e69b5e24cd5b8ed5f41f55d1d6b03c7c0286b02bc2b9dd7368b7d2100a3aa11b75f67cfc320c2e4ba268bcaa2468288dc7befbdb7dc524a29a50c750bb80a920b53e7ba11dbf5c483d8ab269f2793bfb58bda4517d62e349f9ca46954db79aae93d24c7e321397ef33d24c7901c7f7dd3f0ae1f6b17325e0a4db58b19e9ca82b31e5b9c9c0c8857cc4d2508629729f79451878c3a4a78ebd1bac5ba12994672fe5206684f1910af780a44fd7a92c7f941ff3a7d0c144f885ba63c2ee137f5d41899fab661643aa2fab60fa03e46ded6b7ebd4f311b12632bfbadcdc62d143be7da97da09ebaf6dae815afcd0ac9bebc362b24ee2087d766855c1c56f0daac90041435f1daac90cac588a7d7668598f003279e5e9b1542b76cc1c3d36bb3426c20c140a91383032148f1f4daac901938b0a0c90a9e5e9b153289280243074d3cbd362b848608482801f3f4f4daac1079050cb4280288a7a7d786fae80951627db321911f1507078812f9da8220c0f9e64484881e3b948e079006fa0772a1f76d1f14cf7fe8070485f3b8cdc190732ffcdc869edf30e8e23088071014d0e30f31f250389dbfd0736e7b81be69d87643f9180239fc518d3c94cdb9e84d407fb0ede569219f866dafec9c866d2fcee7dbf007017e43f17c0851100f65f33ce7c2cf73083a9d40069dd3b0d8e5f57948377d28460b786d4e1821e288bfe7093c9c688a26c4dfb67068f325442f291689942f089517c701e9fc67ae9039350010595e9b4ed280285edb137df47a0041d93cfe10123c14987d6d4ed342dcf9743c3df4a3739e1924e3b791d40f893a28428acf7c484a10d0f3100cda6be2ae8401f35717f9419fba11991f52c13871838074483aff5200a2a47a2b2ce0ef17ca24aaf3e921b9c431256d4b4c1269ca91441a324288e8ada7cac8540bc5a40f8a4fbfe398073292fa21393300021243a01e9ab0268faf6fe9f784fdf474d17c45aa03447591aa817a103d7523aa1f128121963cf518fb01cbe3503f92e5f711283e54225f9c6fe10cf3c5691cea9c17611b1251613ef520f0e9a9733828105f9b1be5786dce859b6622fa0c144e3a919d972ef54e42bd0e010d995683207619428444d353e973e82797640495eea1973bc692a27c11f957c3403594a1e849c0a5283780bd323db5cf507af42a906130185d92d46bca585bfc83bcb31410b23d6a62e5a7cf304d7ecba39efacaae6c6184a4f2d56d98273fc350f1d5533be42d8f3c30e6cdae77afa69344a69714ebd4ab6eddda187032a80c7e3466b0706ea6944165f0fb92a56ce2b4cc5358e4bdd3aaa143771a0300001bab1a1a3358383713692edd188000745c7309eb9d597afbcd44ba310001e8b862ab860e3d0000d0365635347a46ab74f4ba0ddf8a4596321225b304e527733cc7c66d3cc773dcc66de40c16ce4d6cdae15ccbe88c914936fd449a4831761bbed5e7524bd7d07349ebb914eab9e47a2ec9a3898434392db3d46553535353d38415c027019cdb71cd04cf4a708bc3690134851140ef985082c6a1e7e43499e3d3035224ab4c8952248f9c509d7983c39a4163c74b9ece248fb8a9cd6927cd89524a695ba0318385736313392db32b5da367b44aa7f48e4c3b5aa4305406f5a7535fb2a7b73c8251588c76eae931c618638c31467f81ea4429a594524a29a5bf4075a4d329039835c02c1d492753aa382765d2d1d1915ce98d5fd6d0446d437ec9f1e6d098e19a4796e3cc535e5ab8b159d5d01ca1360dd3000060bb0d305936d5d0a157d9e459d4a6e1cc65520dbdb1d63b877aafbc26557934a335a73914d5f0cdb934ee8ccbba3897c371d4e619871380e738f0d3b289f6e8e889e4d291eaa02293c74dc31be79566aaa189a84dc39ec9d676bdf494972c535f76dea6bc64ea54c359ac58e42d932cce22cde0e7752e9b6cf44ad768d944a367b46cda3b368b3249a537ce327aafa24be3ccf5f4c8badcbae6d8338f2e3d910200009d5bda868eae5360b28d5508101f3f3bf165adb55e14b1972c75ca4ba66edd6a11c44ba7d753594cdfd9f99dbdb377ee96452d370ddbd497cce989242792f45200329150940483c16e7822e3059404980c4b204d8195e055ad7852840d4750410a90b0c1ab7a0cb42786f1c5071b9228410e8eb8f2aa5b94c47890841d84a0858b579d19e3072d4d50a124073cbcaa4e8591a9ac32250a92932323098b0106aa43bde8054a954c9fa1e5f2453d20454280f8f8f1d971f9aa08539d0ac58603b1a1954c5f42f49aa1459de89533f5145c0e8d192c9c1b9ba80367f1d6d0cca8523228f0f33a6e8b3ab26b2b9d32ea486d91a7a7aec8d2e79c13cff843ecd9b66d9335da78359cd518701147fe96eeddf169fa7b77cc9e79250b274fe50e17134ac071630002d07149a6efa36711258b23ee7f9fea92535aecd09dec3ffd82c1d13af419cca9090cf6edb377285d61c7d8b1b64ea74f99e4a7d349f1539a8412d9594f2083cae0e775dca6e1ecda4aa78c3287c60c16ce8dcdaa86664695924165f0f33a6ed370766da55107f513e42d82df44a613314244fed445e4ffa0466a91f93fc04dc443da9bf933e2a055fe9474566aebb5d9c59986378ddb3aceeb3e0ffc3288ca32a8948c2a35a3a299a9a159d5d8ac6e6c706e583833583466e47cf452a0117150ff2b32a5728a2684098b4d3180793204c3e48957c06479ea45c06c01d3054c98d83443660203cce86867c282e8f2f22515563e7efc2f62be36f9eb608afe7ad6821330484d51e28e4f4c8a58b4a0b8c8b473359c6dfca82f8330da93d2740ad5a12e83292c4fbdddf5a92f79cb233a85e615d6db5dd41323ef249e18b9ca9428484e8e8c24cca9090c53515191cf8ecb8b8a2412d8ef2149922610f6241fbd1474a6f71099b4655a88e8b12ee23965cfa56b34c4ae655e2393371f0c7d06a72c5df321d0972001b5918c9612b480d78ce44b094a2f217acd202568014ff49ae173307b571d0c3ba6cce9ad81382d241fcaa78d16f01a227a49c93c73ba6920ca542797c5fe06845dcb74aa878c3d9543fec26aa1100cd8e5d3ebced3499f0a23cba4ce65d2f77ddff7b97c9593b6eb4170f52008e69c73f62c9bbe70cfa5b7ee5926cea31794f35ac67199438182d24964d24bcaa68b681ae7c7029e7e3ace8f9c9f3e1f28f3190f94690f4c6759a7b06e5e1c8429628bd8b71ae7c7574a75bc526ae185397292475f6051e5eb76f4d7abf725530bcbc0c8d6e3152cb07cd69482414e3dc9f2b3a6bfd7b75dfaeb55b70026578f57ae70b21de5c0c5087af4962ba5f2e83e3b7e50f0d1002041845ca0851999904e3c13fe5014545c2ad4b6f89b4c0e4dd33487f1e9e6aee9ba5816b1d73f5a37e736195f6a13e925a53a76e99a735c38b186e36b18675032a22f899c17c6451c59f592563c5d344e1deaadbce5d26be9ae3059f92db3675e610ac33399c614a1a8084ca22bbe6aaa96522df0522fc84d4368e2064c2ca1840d6a90040d66404506314062c2e0082946bcc0052d8052040b9e1031841051478c3aa2a7649027eca5cf8934a3cc294fb5aa28e963faea57720a8abc3724a6af9e9a22478f60a8d152de124b4a8a4c7fdb2d1f67887feaa0185eead40ef2167942fc6a89405351a6a79664df150b359249124b64fa9866185c3c8097691b97518e71e7393fee1c15aeb0670d869f74eb821652d4894c5130d394cc5465c594e4add6b76a988e7e3ac65b3af6ea581bb94ea4887ceb822a5c50c51b91f3b1075120b27891c11b998f359122f5b10745a7255490c31ba98f75a54556d203d3ed07aa154158f1c48a1780355ff3b5461eada0ca871faf38d1840bd273a0742c8fb0aed31573228ee932743d91774e4ed411574772029a6fce82e69b8e9f855b624bf4560b251d83b35cc41eaf5fe05ead5a226f555639adb54e407ae72c48ef74c41befebd5b58de86f11fa1a0e77280fdc8c32b394be3014030c435ab84090e9b2d6ce2a51c7faf48dab1746ded309a86795afa976dba63764eb84f6502d98298371f2765689226f7730b20a3d9a2e9b345dd65a6bab4c97f52a920993e9b2b3cadb6965f2d8257c1382e3fc522e85cea7cd6216391b7621ae1c572ff68cd6ccabbc1b10175a1012c4070a3b7c76a6ebc674dd8843c3d083bc31752cd375ddfa8e4dd9ebc24e6ea1f46e09b52d3664e7abcfb9b98667fbc818643cbdd0d4c1c8ca109fb9105156ff3aae55b2d47c73e9d1e36ad0d0c79759cccb93b75ea5d7236ef9cc75a5b589a6061cc7451ce396af35025c9d3c40d6a9f4d2e4a75b2f453f9d4ebd877e563a378fa1b7765b5f61fa751b02c9c903e32cdc31f490d2f381ffeacc7fa8f6142888f22092b9f6d0dfe939405249bd3ec14d473df5fac5d339a9474c7566f829e5e908a0039043924852590517238f125ea7daf04e1722f2b7d6d65aefd5d6258f12fe5e6b6ba5744e4a3daa7994f083ea1d8394d5295075e975d227b818635338f9163c3757980633e9a7b3dc8ab7aec231bcc71de1ba48ca56fd9cc1cf3945949fd58b1595e96ebaee145aded2afeaba4377c0d518595e6c8a305dc431a57cd7cf48658a2eef6da00925f1e929529d2903275d8672090533b664020a3ed50e0c5bbdb8344c86bbe0cf075aa7834d8aa4ed636c07545e250329aac8d953a747632005d2747d08705124a428fa89e900a273209d92a70e5d680f85416c0758a24fe7a2cc372489e4cc62c0b988a410f2907e5d6e29a5b5da12a90e2434bfa8b2e588af32863f224b8fb11d34f918f228e1efb5b6564ae7941147d53c4af871e5f578946043a0e9d3257daaab67652d81a6a911ca4ee5babff2bb6ed5e9d574518f18d719bb5bf5f7f3422d628cb94df3b1db9c4808f1a5d9c41a9d7a16719dec3a5d4db075dee9d653dead5cdd45ab9e3c9d4bcfb327d7ce7ad7755301d3ababa6028cfc451540bdfa8a357962c55782b9537ade04a883ce02755013fda77126301d7416a6834ef45bb861f8cd3df03a57a4be761d87b986b1759bc75a3996a45c26a78d88e3a78e5ab9d066950be30dbbd3e39a3aae2b67589277f67ce3ea9d8e756edb3ace7317d6e7b622f5374dad0d6ba5f86ea9b1a2985e355d728c22bc8c41b114db0193581463ec1a8b228c532c8a2d3bd488a7b128b2509ea49d2b77fe6ec8d67da68bda90f78ae5b327472582c8b20c67598633a3bc6265599665190c8b58144c3ec6a0e8f205f8188342cc7b982d185bb7534d97addf0d99de223bb3be1af2f6b72db8f0823c41ca776e0b2898be3a15f5c6a8c3fac42b2aa3582b65862d93bc777eba5ce39f1e14a60ebd5f0b7672f8ec003279a4f40c051fb6bebc394f4f4fb76aa63b03f5e943e60bd335b1b6691ec3f89b744d46b73726b53c5aaf1a8621d335dd858863fa9c3f3b64279f0a72f41d939e4cfdb9206f999424ad4ca13279aa4c9e2526cf939ff51675b32706aa3361d3155179ba248592315dca82c0c556f5e974ca678ef3a37ae6349e217de6148aa3d7bc429194f9ad95561f3f5f75cc2ece380dab00c3e316f0f5f163bd15325f790dbd47e6d4bb8883eafa451cdce5b819af616ac66ba8721a723870a637510da75faf47e629c761ca510e865b73d0bd1067c6e37babecab1067c63d8f332e13238e95d77015eeea9f83be792b60afa1f19a10e787e634ae398dc699719c1f5eb6f1ae86d8b1639f097910bde7aa706f8e3d156e0d08e535ccb04d880a81b06707c32ff4992eeb565be91d1e8fccb166cd1ce1ce1639b6ac6a6645702058fd8ee1a7efbccadf0b327efcf877ceb024be6ec377492bca13eca7c40539a5d65a6d955232c929928b8cd65a5b634a479f0e79ef7cac4dd65a7befad616eeda236cdea74b9d9d90ddbb85ae1e87abcb373efbd3bb7ca4a46de75ae684f576be69aded6ce7b4cef727476bea6ad679be0582b2e464d69c45ac51abdd18bd8a4960725f959a7efc41863250238adb5d8463bdd2f9d5edd86d3a630f50fb596cea65983f870f870a8353e6dd10241eb8168cd1de73fb35aebcdf7867cbc45e1ad97c493bf711a4f17d7659ef9ddadc78ebf389d73abbfa2bc6f785ee7a379183de2b00e8679aea68ef54d56d7c2dc85b88e119402f51ba48120f9e41188d5618c38aaf41fda840a371f249f7e13ade0a3df6805ad5f10797e8c614192a4d698c2f668f5d6383ca2d7fa3f73c6e88a32e0e2e4a95996d9ace2151cb1589186adeaf7eaa1e94ae132b99ec5c0b26187b70b6f572bbba1ca06b14024132abd35e9988ad46acd4f86acb32cd39249e6f7fa4cd774a3e96acd9963baa60cb1def806cf0d7bc4bfc07409c9e6de093137af9742f42255af3e1932b54a707a629cf36ae54e7784702b9faf9f83261dc09e876abaa615c264effc1e92e36b0c4f5dd33a4d734aed16f3db0a61a409d429ad76ab4dd34537af9adb4d729d16fd3ac639af56befddda7cef43bc673289e4ee2f39252a957a2a741be2272375df83bc25e32d072d6ae58ef59bd33bf5a3555612a8ccf3930ec3ee79cfb42ebdc67c130fe67c36cbb4eaba6eb5b92e516ae58f5d60b05054eba341d6b9feaeb6641d0b17360581d8315acdd7465d58aa5318febb4d63144a0a441246572af5eaab2ded63797095160f88578b5c2d8dbae1d2e43f2f4f484a5884da25f0e2aea9ae6ba507316d25bd7929e3ace0fcde9e7312c539ebacc7520cf33198f1107cab51015ca845bf3ecd35b81fad6fcaa264fe6d2a75719ebad609d0333d6e4895705cd519ea3c2f8a0ff4c6d67383fac7f6e717eb8e79e5fd5e4c9f4b69eb954225f463112606b9815026d3a4f97c49956d12ab8d8aa416657439e6ebac21fdaed4cd7fcf941c1870a38b8ea9a87fc4a90670b4bcc7d51877ce9318665e983e40b11598f47f5156a0a54e360af4f3f7a2ae4703ec6e1e654cbbcc87dcd89685ee4aed0c263d7328f1e03ec4f17717c14878e1705d57d0a5318305cb8482a5d1871912aa970995ca813d3c9e32b83e2b6dfe4671e311519a666f1b1cb29609ce07bafa742972adcc9f46aba7086339ce10ce30ce3c825c319ce6ae81767db966d1e96f92b66328d8a1e67ce49e726ac7af737d8e4d93cc39e79330392b990ac7ae6325c4dd7f5ef5e575d6e0e55c954c578184bdfb06f324c56abe32dc1602e9f6fd03907e339f7694eefac37a8390ebba4a272ceb34cd639bf4d029b79ad5a72912648266942e6b1563965ba32305bb66d9e06ea241779828ccca7492a2fe31a4873cea5de9293527291f91cf454a87279cea1225396ff42fb1a162d23d8ec0311427bb0649ee5b3541879732f548542a84ee6a91008d5c94610c6a60743b9f45f781f15c62c5ce65ab845f09a08b0e7302e3d184a2cd20a9771f18dfac615a9997301f398468728dffde6b19815a6c7eeba31bd35593f28f444b96dbe6d7693b78aa94d9bf5b87d348bad0bbb0f9dbee372b9af569ba66b17f2049c696cbb9026d07983e02201726dfafab12b4e9e7b6965e9773ec6aca800e9ebc7705024d3dd7b6f1593a3ee54af07bdb176519ba8459ad3277bab2f7b164a2aac0c423a895d69fa037c8c5da922379a4d0351cf6a17f2841a9736be57ced13877a3c5e2388e9b716e488e9dbf498d916d7491f9331a88ee15c7711cc771359b6626f5c2949a6cfabd49cd857b044fa56c328fb694d4396df4526f4dbbbf51df24787a3fb34f35b746d21a31995a26169f2ab3c76752b999ef49e552d65faae55219d9bebd4fc32d82a78e552ec3fa78f248aa699ad730da98df72baa6d530f2845bc5fcfc999bb702ca6f6d023dfb3cd3bb36bdf41b2d1616957b9e5d0d4437a88bccbfceb4450b154b59b058f96cc76739a84b54783fede95d7f7e9b044f9dfa4549af61401faa0ab70c7daccf9571e9f5c0b407e7d58aeaed7a4e464a29a594329f94919f06c2eeb9f45ddfd3b50b69828cffccfa9a77617c0e87f133f879d8fed5e88ecbe5be5ae5fc6530ac1515aecad4b90e7e58feba97f4d7f1a541380b8c178636a14c68d11831b50b99cc5f70791d92e3a5ef49e56fa89aa013da338b026eb536ed105ebc48eb524a0924f77529a5c438738cbb4ccf2aba6d1ad6bbaaacf6aabd72993c59d552b5103d9775d9d56ee70f1264d5a516bd3c79b61f439ba7c274cf01d389be66dddd5467fac53b9ba74ba59aae2e7977d67a75ce23920d8994209b462237af1e64f3aa87a4683e347d734d07e99cea21f94d9d33d5c9dc418e8b1355937d484a101a9f2e9df320d2392ec8ca413d04fa4aa3f490942028977a68a746a3329743994f3de45427731a76fe855ef5cd8354df6aa787e411d5c9a41e9212c4b7a987248cea64bee9a3a9873297520f793ef5d0e7323ba9a5c8347d4bd8cc8e4d9fa93cbe5ef467c2212940549e0a917048a404e1b44442920203a5b39653a84e96b94a894632248585f8b29b46623da3fe85f1e57545d3658c0ca4e7e28cf3838203e43a0bf1757d02f2155f74662d20428c51c6ebf84e28d6a307258914e949e4946230f671f2f988506b6b4cabc594653a0882da1ce1b38fb1314c20c68c77a7e60b429665b1314ebe21f4d4572c094dbcf631968430bf5b4890b13146b131c2f88410c60710212d00e1eff7f7663772ec98e2effdb6c49cb0fc75d6b7e503c24f5eb9f731e6a4c4831f634e46fc762d35e1b42bb537518ec31b6e95efebd9b5706b9ef22ddc2abd876470e50b23a0507ee4e651be85be1ade6ab554be53293f42e353be37a7a1f11409c2f0a21486e7799f7b7adbb80d1b3652343434342318c209206cf17ddfa7f7e733be69bcd56ab552a9d49c53044bc6784a420db7c162b172ce317809a2c828b77070705028540c4508d1d404b592919159dddcdc64577a8879310382e0cc6ab5fabe2f7b7283255d7c325dd7cdcccccc39af1335b0028c2923239373b65bc0682245f619be6b80208842a12a12b850a10394cff06d939393d3759de779589a8090010d0d0d8dde9ecff04d4383060d1b366cccd09bb2e0093166f079e87b86e7b87babd59a734e1b08d14596e9a1ef1ca751a3468d9cf31743d062444343e3a16f1aeea1de320a1e4ae08354e282a4a69a9a1a22a42a5b2c51a95448a87461f284c5048a252070582c160a851a520209228840dde0e0e0789e37b4c3113e3479ab9b9b9beffb469094451628be99d56a35e71c410f4f5308316566666672ce22e0010b109664140a1583096ed8e108540782a0e779990ca2f4a08467a3ebbaeffb6e941678a1e263f96ed9b06163ce6981603a010f13c7778d56ab9573ae5920218431f9c6b74d8d1a3566539827aaa056be696c6cfc88cddb789e3799d8d2c3126fc6770d0d0dcdf77d5288273cf8f2d170158bc5f22de35b5553e3476cbe66cec9d382d8147b86a77070707c83be532a951fb17955ce198914150ca1e4be739c757373e3bbf3ad53a994eb3d9404ec0730723c482807e52cdf341c67b55af9b6e13bd4da8fd8bc66e94d822460f1a444c3838468788ecfc0f13dc36f6666667cb77c7b1886387a9300c6440a2c393939be85667890d00ca7e13937be59be929191f15dc3778ebbdfe83d02279498704183060ddf422c0f1262f90ca7b1f28de3332008fab6f14d23272747044e8831040f66cc98e15b08c78384709ce533667cdfb84cd775be697ccfa04183469684171d82c062b17c0bdd7890d08de3384bc6f7ca411b366cf8aef1cd9a3163868cde168b277ab0050707c7b7d0ca8384567ee338a0ef19ef5aad966f956f1c168b05ea5d7bc0831a5c7073e3476efec6b7d08c0709cdf8ca6ff496711b356ad4f09df27d838383d3e93dbd78a2c58bd56ae55b48c68384647cc6577a4fb7e11bf4968d8d8d6fed7b7573e3476cfec686de13290638c83233e3476e7ec6b710e84142a0cb78cb77e7356868687c87be67562b3f62f3ab96deb18c199488c9c8f8919b97f12dd4799090de28afe1db86dbd4d4d4f876df3233337ec4e6676ae89d840c317298010441df42363c48c886770eb69c46a552f9cef10dcac8f8119b97f9be2fc9132e7ae044d7f9919bef7c0bb53c48a8e536bcd3fb731adf35bc466f2123dba75ce888f7293f027eca370ddf9d0b19a10fbad091ef413f62f3e010132fb888b161c3866fa11a1e2454c35b6ea3c6b78dab542a954aef1001119a7080d26ab57c0bd97890908dd7f096de99c6533ed12563982109579451a3460ddf42341e2444e3365e436f94ab7cd7b8ce115d32eb410c1b88b1b1b1a1711bbdbd30954aa5f48e8d82c41838a0a1a1a1d1fbf31b5388d80d379839ae9cb36c82030d64c82aa78142a19024a9a00a27a8199ee78d40cb174c54e1d5388b957d4effbeef13810e652c7952e34142359fdbac509e3d4808e5d9e79cd34a6185882f541e24a4f21a4fe93dddc677ca6f68686868b42ac873940709e5ec47687ca63a104291106a6afcc8cdd7f8164a7990506a6f4ee37b55535353a373fedcf320a1cf3d47a1507e84c6a39244f1832458a052f9919b57f916ca1e24943de5aa3d8342a150babbd33f0f129afeb9e7799ede2abd4970849230a448a552be856ef694ded851be653ccff334b673faf77d7e84c67f7aa3f4ce6a18420d3a7cce7ee4e6b36f21eb41427a67eef906bfeff322abff748d2e19b4b9e641429b6b3e7d4e3f42e3a7de9edeb549142b9cfceef416aa1e745d48e848f6d7858eccfcf523375be8c8f69b0b1d49fde64768fce642419a630fda5c4873bc8b5c2dac594554432aa00aa720c230c1471915be293e7e53c4901026be543c4d603c59f90d24184d7e46ea38d5e9e3d010a76a20373c0ed512207a5d8fb13068f8180ba3e8bd31d94a203e8571351356633a80187e53907c8c38289d58b8187e577274df61e2a9bb96587a9e16953b706194558f8f733dfb7a335370264f3d88a78e8d784a43ce7118a730573e729c531538a738736bb38c6659e6d666d66f686d1dc026b72c5376f3b31aa873cf3dea5dd779d7b9a742a6a17cae39ae5afd7492ed2545f38b876caf7946bd15342c66094f731c5ebd891ee31e03f81871d01bbdf9610db439d664b7c9cdafc7a13c15a85bf7426b3d6badf54e6fcc82278182237c70051331a4578c3a9ade3c1570e7f5c01e7600c6617539a9d7a3baf4183029ddf4d69ed3f86322cb8f891c35cfbc6a61958f27cf8dd55ce63580a889eabb72f6351f7a249fe4a3b74286bd46a461e770e745ee07651f230eb043f278f3c86d499e01f1c626bad5af46e167358346c421e51659fb18fb22cb538d77fe98905ab468fa18cbc288dfd18b9fdef3319685cfb8777e2a6184263f77ecf89e9817983c7bc74f209327c6b26812fda7bfb00385c913abac6cf0d33dbabe60fae9f57b22cb4e9e80fb820aeb63ec0b275f2c690aa3f531d6d4831b1f634d50727c8c790146cc0b2b14f031e685105ed09012e3e5d3d265b9c1372505a98fb12e6ce8cab0f918e3028b57dd7c8c7101c5ab625c4c79558c0b277ff3519171e5e2aa8666469592b1f9ec129f145f162a6261924019e60874eaa0a6b0b7be21bdf51c66ca5307af83a1e7599841af9f57d0b1538f07e89bf7005d060c3597015d735083d7c1d07a16026507d2528e4a8531e2007d823ee9c640a0c7478559e35cc70e86d83fad528591eaf87411e1fcb05803adbc598f64f462a54b407982e4ba89a7983ae5095b7a91fa7bf35d043ff6f8f4926e9b5fba6d1eb34def99b9c6f9618168ae555ab71e65ec4b9397378c0ea06e695501ee6a8fccefbe3773a0cb65e10bd385a883886cfaa0ec8dc8704edd03e0132d91c3d36fa22560b017a25360cf69225860db92eaa9136cc724d85fdd01690275e1b3c1a744deb18b0b93a7e6e9117ed22a7d76704e859598972e9f79e5b82e0b5b4079cbc16dc5ba292933af5deaddf7de7a374f85aad27672e41aed07050ef478c42dd7390e55b9549785f25d883a32a7f35de00037d365217d0eb8d081cc7fa60bd2f3d1808845d72f452fbd1588963882bd10511353609f5581fd9d02fbab83a8138c5e409a40fdb34196d439192de5a9b6998e06d798b0b2e9f0e4999f143972ab2ebb6ed874b966205f129b26b19432bb524a4beb0cf2ed0c7c8c38f0e4b9f8ce2c59becc1c086b6cb9992e4f9e3b3ff36ef27029641cb5cef9ce1947d3bd30755c90220355e77cc72ef5c69b3947e5adcd90fcbe6e84fe0b96cb1755b67ce6443692329e9a60facc035ae293183244cc28324f72978da8d209c0289dc0073587af2770ca320d405cf1a98f4a402cd1805302c209eab885e8314a3119a5b5d65aaba554ef2bc748272140e0f3d7a7ff6459dd9c7aa576d3526ed17257aa995d1f129d6c48eb2abb1a14235bdfae2a9b34d5128cfdc24502e4ebf86d86a12322ef2a264a74723246cc98aa85f6c824aa93447b6414aa43a3934f92cbc71d8364e45d9d3c993c62e60c335d303a863a5597f64a7b2f654a5ac232b54c17f52c9c544c17f51a8613698a9329517c9cb89c4c187527d428d360d4a873ca995323daa448469dc9e4997a7699aec9a3d109a34edec90cf7862974c0c5531722efe8f49452dfc95c73ea3732a51a53a685997f437c1ee3cc6f088e91778d327940109d1e685627551be2b916cee96012f217561044a7f7342846d67cd72ad3778d52a94c1e4d4731a24e993c57cb30d3d524b5c82d9249cc743969e99ca498e9927eef9c73cebdf358bb4e72cc162d65641a36919f4e3b097ee1869c9c6090607018e7bc5ab9bb5c74cb4b9905993d41a60fdae3236b21eaa0db95a5c716220ee933b481933e2b18a20eaed3b2a188c3695605a9945bd19e1d1ffff44f8882e6c28d7c75e759a805d11b24b97088cf6f4334fdc20eed5971131c937d760809325df202534702992e59431f0da847a0b4d62cb3435e98aecac518638c5a48055224a33750bf98ca2ccbb26c07e3587b38cf3a1eec5ed5a93a5da64470b1b525130822189b65599665114ce46cb8a3d743d3dc3a6558ce3acd6b166a6eb59d7fdaf90527a594525e29a594524a7925158e1681e10517642c02c3def9178604895aa88858820801927df569247b201ed3a34f19c236069ff296b0973018d1d15f4a3dcb9037c77e5361646de779940310467c54fa21cc0f639e0367c4d5330b7e91e7eca6d76eca4e7644e45bc77a462e92529bb26f01c4123f683182b4b5567965767d5e7ab57aee15c55403d99ad55b5756da506523ee3cd73aa7946f65edba2a23fde8cfdc3815274f97045190846b8c96fab004cc61aab5dad003d3edc14b4e04901004256c88b245153f08810c441061a4740315b0e0c574713e2afdc0c4ef5612b5825afbc30a6aa52bd04bce1f957ec8e1c12e19fca8f403ecf7ea6518151052f9a3920f3988c9150b07775a67ad324b6bf5a1896a850f34f8eaac5aab153e34a94014a10860116a8d6d4b9929b3b656232a5c13d9eac7051606168598f4b32ae1874d088db55afde01e6ec898ac6de2d4f55094591f90fee6a3d20f44e01ba6059c38b1f4458c10bec0f2e1e04a95146831c409c6d41a68b46247932a1bd3b4c2323dc568f1a4150c03430cb71afd6dc2e56ff6b749167fc1d7bd1953f6e3a3890f3a0c32c52e4c2b908285074f96c0f2ba25b8c18a24d040064a18b1c3ebd2d0e489aec90e30c8c40311bf5d4b44a8c929a52651949a3401b500b1e04103b7f8c92be7e1061e942041048c7d9c7c88506b6b4c8bd5c259ad6e827018dbe4e062c4a81e5d96947618f3f2412af2ce2fdd457ba8182fa567312f5d15b44317534a29a5045b79063b84c9f969ab77b34782564617a5d307568aa7a7a7a74d2423751c8b6389c8a72b28d26310ff6242375d134c9a36fc99f45259c6c454c7ae58ce4d9f3ef9860bf28d195f737e7b35bd259f257dba4b9fee9a32c649d7c1e9a3d21195dfe047cff151e9c8ca474f85fb41abfc33632bfe7035b9480aad443433397abc9c2ac7caa57291145f7151e34887125fea2050a696f12452f670a81c2b074e9133b894c19ce278c8ffbc1c6be621e641eeb25d8a3cd569a6344b23382e1749913c608d41961ee394b5d2297bc071495d375d144ccabbcbaa154bcb4b389ce52229d167f0cfabad764e7d33ced5f8338844b61a572ea88f5893ffe34e77c0f57e64408720f654a83eb50e76c6182b9eae6e1e803a78833cfd090ee31cb7ffde9e461dea71872d1f957608e24bf8a8b48311bf451c144c22ef1b4f7d6f397c6a4844fe9c1a4a68c3302aed6074354d9a4b703ce4cf4c7d065cc2beadb5569089d04e908921dd6cb2800a8468028909123e90014916366c21c50f9282d8028b1cba5c8105e5a294c3962951c21a0003f518a8164643c8a32632881cd5e7c707901f9e7bea422e001e411d1fe5f054e98887eaa3faa864021cd41728e59045c9043fe0411524a0c0a006353425e1550510c64b16327c7005ca095eb5cb575f79f9eaac1cb4f86ae355c12392f8eea392095ef0bbb5339330510e4fb4d8a149125968f0c115940b131630c5946022650652888e78f054450e3125aee8428b90019008c982960f9fcd7c6602a36f6ef866d9982c6bea342b26addca584430e70a81205880422d5da1ad302a150a6247e7a9d732ae10083dfad2d5dbc7bc121ae154c943a263df88b7add7b693e2ae100c4ef56d21050982c41c1218ac01f95983891c1a990e4379297ceb9e6553bf6ec55bbac5767c16a9c5859a81a276aed4375a80c53a63e573813e05c731638d7b06767017beedc3a0b9d57bfce42f5ab873647f2b9e74448422499f5cd3a872444e259afd6ab8748ec0432bf5eb8a23ad2c1551722d1904809a279e738415e442fcd91703aeb4c75869610bdaa5bd7c2212910a86e5d4a90ea564a908aa406c974d4d12392b35e59ca72db3899a5ca2b26463039010b32cdf36af2e4f0d90144be1f9570e021cb9470b0e1b32c73acb54a889cf30616a184038cc91751c022242844ebad129326303884520d60946a70ca42a9062aac50d9f255324930b2493a4dd8349a47d3890442c451831071545fd2a95556974cb4471a49305c954e5f6b9d4eb82599fa94461fe84533e457f619f0cb933020441d3608518710a20e2c7229a2bcd332ce558f9bde12e9abc75494af1e558ef596339ee92dab7cf548e3b2d28433a12a4c8532212abca18c41984330fc424c756a4fa63a35ae6a8f8bead49e9d9de8137b7e7ea28e22198388433a5e92023076309251e601a417cdb07a49184402482f52229f5e52ac9646441cd267c82f79442400ed592291e4146900e955c2a4910fed59228fa88eec59229d78f5b4941209a04d5c83520d56c01a3ea7969541a9688a931306948c96ba281931f96064f4bbfe74c16ffc34387d3462819291935769c129d10086062d1f956808e2f702ae652919257d54329af2dba5448311efbab193632a00fb749fa900237f617d434eddc2600fd9ba11f994a5ab509a614b18a519c628d1c0044b5b461c82cc74c8bb537559fda8b4640c1b7c6045967d545a22e6bf8f4a4bbcc850411e6c945e0ad5ef10ec69483f2a2db1f2d2611ff5c6223b55b80a8ba4ecae8a8f9e0a58c9575d714064832482b0832a47e85034460fb4645070e08204842d51e85084f651a9a88827a52554948a92c01d321e7c96292d59fa2ccb3e90879d4ec5522afae1b98f4a454c7eb792604a4ab63c7ebf77c7141fad2cbd12313fdf298e37a25fddf1f84f17688352099cfcb4d5f7756a250ce75fff81c2742995c0e8abcbaf7a674c76fdbd573740fb70f2bf8e828f06441d448ce0b75ee43e9d7fc3f99ca42ead0ed23daeb0224d88ff33ad0c38aac94d4e59e595565224aa435dc62489447b2853a6b78fd57bc7a7469d32d11e1f9f9d4d99e86aaff264929ae835dd09907409f3e9e487a4484d9d441cd4e791944bd9579884c921097bfd647f71a64b5891ecaf064a61eaa0f834f526a2e1a74bbd3925594bd88bba182f63127efa983c3d94f020bae2d3ec690f255544289e7a0dc590a2873076c0f2a29e690ff51dda43dd87f6c45765628a118c920c4c94605a946490812ac19ca67b01c2908084ee658ff8412d578b5a14cef5c9c5cf2f3e483eed557522f22b4b4b0d6593b9488a6a1e40facfc42247dfdd3c020ce963ac0ca6df31cb4f2fe163ac8ca6597758549eae06b8a603f9b2c83b6669009020422e10add840cc6b2111f9375a51c24843b9a1fc4dc75c24c5ea3a5d781e60fac725cf98126c4aac8c2cd3adf57ed84c05ab81aec8f208cc0726bb119bea22a34a33c8be70713fc6c878220c2e62652c112303cbd7c5cf8e2cf7cb8e25362558ec7e91b08f8bed638c8c298f3fc6c8b0c1189cf770b45a2fd47cdbfc5a4ef352f05a90f1efa8b3af6bd2b5b0b6bc1f9a6f9e793f8efcf50de8eaac71cbed74b91759fa2aea5da9f74303e15798b62307a7b8a8c40c3795410e999a190000005000f314002028100c884442915034208aea9c0f14000e9aae426046960ab3248921848c318410000800181811009111da2ac78d7fe86932e01be6bfb37e21bb1222be0ebdfbd64605724d64f8b2ded5c0fd58bf6a43480072827d0141a64e626ad04bb75c2e2e20f5fcb6fbe901c721fc5418cc03533721724945827624b843d9580a452e5b866c045dcd9740568c6e7d8241b529a068f42ae07194c6aa79b1ef583473da3bee81ffa5c2389eb1486dad6345bb6e5234b138b67d2261e38ada17005652d63e58c88b5dbf49daf1ab2170946693beba1e60d82f94d01ebccb0f2c95fef2783f7e86bcad41ad68ffa8f0ce326995133a352e3a187392300bb457bf0737698db63822461d204535c394f268d687068c3f03081f8e66557e6d29bc5f70f3865515729291f55424e8ccf88b10f36084d3e930c7cb49ba824acf7e94dd965cd81e3ae3bdc0d621c62486ac043cb7f0d9276dc80924ba9a513ebe222648c07013d63f7eb3a747932126ea6884719abbc1a8e650167a2d170915c4cbdb770f71ac3f7c781f36ee4c6d0a43e73bae3e0c037b0ae31ad72cc9073d33f9da8ce507c58fe9df89b36d37aa2b6f8cf749547527cb643ac66d184a442abc9a4989e2b53433cd0b04e7bf144e38385668106439a709f2575965782a68a77226c3028f4d03f97535ac0a2b55895bb0b84b7b4a65f5b210a4b574828821cb98cb670243048e077e78ee52d0e063c05aea552f216ac310627059d0a10e5988298ddf09e18c7ebe46e8ab7fb8e30122fcc2900cd5eaf2895826859d6644c4341f9a8a3bc493d510e31a32303301e6c59a1010ffb796760a53a06ff0267b2f7cb0e530b38bfdee82d8842849bb7ac2946a08dfddd0ddad47d081970151c124c7d36a2ef4629a465bc5e2d63a29912674f8f6b09e0def5a08a6f57cf01e781af01414891349139fe53d9b63383be9babea10d436965d0a8e804a296a4443cc5027b37424e9e841f06ffbb2a0b4388f0305c2709a6561efb77042112f5cc0a0d9d21308e680ddac82863560649a6210cc52ac4cc8539b2e733988e1ec2ad06d8f1a6b7056f8aface6b40417f63bfb42e0fa394a4a045e8683368a789dde725dd69f1bfacc79c03a6c657094464d0bdf617fc3230ee902ad111f70e69ec9c39c963b289ac661b7ef68800b706efca70f01e939dc4228a8aa521e074cbff72e2c2a7dd01ad8d03f6545de05ae253aa49001da7cb0dcd32a64db73a679ec8297f5539e659efd137eda12e6ef7fa05dd9f17cd5c3f143efacdda537b6e58c5ba08de83fd3c29cf452e575609c1039705f057077940b32d81d2ee27ad3d757338b3ecd7f41d884f14ccc1f1ffdd1bf91b94bf5f794506d4ac9306dcb43f7e689310632b3d79d5c17003fe18583ab516d594a554adb1c7ad473fb70fdcf8ff4474e90d5e8440d5c14cbcb9cae6cea7ddd59af228e5909a5d922e6ae75b2e711a1d198a590e16e2662188d5f37b515a26e094d15d1d131514d00846f0d6c836a738ceeeee4ee2cde927ea34ea2c76c47630c16d009dacf8b9c9047355277cc70d32749a3f6cc03ce35eee57686338c28e2b3978ac9debdea54d92d218ceabb203bccf1aea570160ca0411d8ee1fb52cb9920396a16a2bb0af8ccd1b8e6110a741249ee9ce4aa151d5c802692309e10eccd6736d0557c8639935fe03135289b1347a0025685073f5fb418444d7072575bc1bcf36bc97e50b857b50364febcc15a8971d4eb36427c3dc343eb58c87f468f2e036406552c1d0815f739c1ca1ae8d5eb469ce697a1405ad1741991ddb9b73f22adea915bbf1d47fb467a028746c846cf4f3c0da18f5124b0bd1790df33ac67130334c94d6e8529db716ed259dbb2e76a83f9ae53099b9c04ef04726206d8bdcdb589be50d24fffa33f467e73558b4d1d0e110f156070d656794612ae09d20a7037d1c8e196fb03236b5dff58bb1450eec4169a5cdc912df989871bee3db5e04326a7e86e5c35589ab461cfad748f234bb0bace91eef26cf9b0df1670514f76cd1cb72213819e1528a8d5d9d469418237e51f825910d2037904030e42cc527e07cd326f9c90c37edd42aab4b4e76658510de98e4d91a99d19dec27feac7e9778784af1d5b3a2cde3c621c0772948baf73dbecd6636b0b9ff65da3b7a1cf3603d077ef58c5002677411064790cbeb270694a73b219e5a121685bff2699fcdd3e7ba8298cac35f6058af5c1fbdb9a0f19edf8b1f81b352820abccfcfb08a309c453b02f837f427e83fe740072a8a0313d3fc98d8d47050bf8dafb99940bf561aeb96e55374727fb697a9fc51d3f349f6c300cc15d373ddc5d101d554426ba0c1009d7a08e4ea9fe51dda6acc9a3efaf86cc17384cc3979996490842124c9cbed53eb809ea4f3df0d434bc82fc9c618278df06e32836653a3390ce68f2c96fdddd60c40b26521039bb27b6cab98901e4ea563df92c305060ae8aaf3791f5c8901cbcb31e0fa89407a74dbe74188ec73db08578482d8cb32010403b743b632929d0baca970f4ce91016910eefca90693b62dd01f975864c182540e5489f4adc552ca87047ce49b8cf6d25b7998cd2df962631f422dfaa5a93fcad65d1dc19069019a370cbfa584c599df4c592a4aafc08a6be119a17492586dcd68a68b761bd6f50bc2f14385c510d7b28ab4d1c654760e91ba84d5586013b20ac6ff0f7b4ac5540d01223fdfb61b0c9686f0ad88941d2fc836b5a3f19f301bd570e242b78c0faf518b91fecc2d3bf5c09f1e6c3bf56e2af9838f438961b09c899e00b13140011088e1be593e7aaa82eed8b1c4ffbe3df8a8ea658d413ca6d18d75059a0d09129cacda030baf54ce1d0865032b82ba89339e6344df199d5bbb9a2bbe7607bfa5e17610398176dacc95f8ebdfe03e9b8d05ce338880817f79f0373e963edb108a09a246f332e67329eea928f44ddee107d69357cdc9b668828aaffa368c3971bcadf0ed7d167a5fbf95caa9e6b0486cf18f411363cf90c0c55e404f224913159f93d1f530e85af9848c1a1a220f68e7cb2cacfd3f0a5b66e394247dcad7de1d4922a4732944577f869f4cde333fb508b5b2a2b40db1e00eb19a00e7c641f21f528ef5fa6dd628aebb89efcfe541fdc595b503a85b650960bb56026163148105f79087963ea22f1824a7c854fa3470a86f44287daba0145533c8a9c46d1c4a6f994855de1c18db4c55589895710b113fa54f1a2735ecf2ad6895764743ea2cfc0382f7b869735c48a3407ef45ce527eb88bc0b14626dc2a23accc11c817ce65660afb2c4e767cc316e87cbe52289c581eae99d5007462604ddf7bdd4e84b0e0aa7fc118012472a09337ab3fd754f34f641f6d59400c2bbd90e2cf0702652881cf04fbc539b6794fa849454f56e1ca41c909cb93a583b1c903112778e933292cf1dc6bb9d99cfd7786ece8f1826ebfc71ff74cd76a6d3c51a8ef390ad4b13d30d11d803a653b16ec20d554412fdcdc020772bdc514a952d3778bb0c4d39bf719d617034ab220d66d0832b30277f511e507affd6cc5ce772c8d0775cd58efe6df25d3d1cead44bc223c3436d77745e242f8cbda7d528aaa06e5d9d1f1a9fdc2a23d8fe26f7390c2439ba4ce347d1400400ffcec5619d0cc397a15b22ac133d28f599161d04d7c2eec80fbd0ec56ae03707594066043811a6dacd0e9a7c63f1c4eae8960674b35c5160a0badfd43158ae9b45f0b67f935040fe154d723a04ac87f6c4235a969034170189ac3d08188d8dbc18ed804957aaa6b2e8c1f8d575e9261f8c9906ef9d4195756c6792219ab06f7e11a5dc808154c545155eea45a1e1044a5446652d8c9ea8df8a0574283cc3ff4731a454f24226b3a42a6fd7a851e6b45ba6b7dd8fa3fb86f4ac76b7e6412b2be8bf1bd9ce15dccdf8b8a3757d27436a5b3ea937da22cbb948ae89dc705895e8b00ed67acd880365a3849c443367822691cc1b7c31abecce2cccd6d64487e5fd545cdf4c859efafddfd3f2afec5b7a627112db3c43ee3fb7bfb4fbc49650bed0cb6cdbc13ab6b101f88ce405f865450e9c59cf6b1ab0eebade2921dc3019303d032b9d9676b9d816b2b3119feced2daae85858445ecd9835659ab8f106ba3b8c3cc3346f3869b901f89f728be1902d4b5e8903f5340ecddd8b052daf056ddc57a841d72ecd8670a87a1ae7a1d1fdc63402f7455eec87dc49342a36d7ed2a3cd4ac890d9b25223547259a71ae7cabc85a3b7d53da2939b34c60c9e682cf5c92885142a3fb351f5288399052c998d0f10cccf9852cf892265afba6377f7cecee0d3b479346528887f52edf2b949633bc4a26d5de78e30c45fc067cc88de3888a1385eaad17f9d71e915e40c38346c00fd91703b4da9d4c5be57e6bff04a259c3df6ae78970ca9f2f5ea7b752e750274e6ed7ec6081546449ae369e7490589df97a427b5899493a70408cbf98e23349eaf92fa40ac10eba7f24694e72ce46a8f90b480c31af3cfc43eadf12f1cb7d8428b601903c003c554ec0cdee91610cdcd07d3615eb97e1c2f6c8a3b231a54d493d8837723f75dee2d924a3f95ef23c5cbd759c16bc6448a37375a836962ca7c38fce980b527af9f5e1f3f3a01fedeb05bfeebd7981c432b82a368f36a4cd7d2fb8cd6d910daf02ed51fc0c946330997f49f7d604a1d7ab3e8828e66d0d13aedb07f3d2f524a520ace7f367859a627ad6bf442da1c53e8d6ffc156df3730193122437bfe0976ec2a002d373f9bd6dc9c916312a8e1ba2836c3398f9cf0df7917a2dda5be17d8de3d2a2f4159c0954242796e4444af8c6a2f629d98bb5dd774afca97dfb6452fd646a975f645e5a8a86effe6af82ca334f866f7b609ca8478a66d2220a59510de87e440ec9e561b84e9bf6db54c089617a14176b281823701e38287b1bff546b0806fa1e6dc6077a1f5ed02053f5e7c5a45c326748a674bbb32653e428e7a7726797dd59964e9696c286d35a1c5aac4a6b091144cf948164bf3506b160fe24423e94f587f76a414b4787df641a51f3afcee01ce4c89be1017f325bb99706a26dc4c7b6b31767d1fa582467778acd4f8043fbf55421259dce9dc82732548ae21ff68c928b57fa25cc12e3ab851a9402d5bf68aca715cf522ae019be07f51c6b30de05f9815c02012a3bab7e6dec29ae51da4ec6e95965eb028467e514741e8e3c9ace2cf504873aece309bfd34f33dce12be4049837a382fd0fea7b1accaf917271d4dce7c98eee88365db5854cdd9ed07d2877d50608f8ffe07f3061177e22eadfdb5f1e2de837dfae8a23a6d651b8435d95e3339642021d850de4105d8b5883a5c86cab528290b9843f9df68fe6355924ea4e8d308cee39afa32eb1d722b88b162b655d3bdf6a8ad10aff05b5e9a70be923f3c997deff7b2e3f26fd925f611b3b16c22f47c4e8944f4008f12c328c4a0493de8ecef6f105c69519cb26e565fdcf36f45f046ea5ec951367d45db35e72d6d411ab18aaceea30762e22f66065989ff562352752d33a8839122506ce966154eeec9871c24eda1cdc3a1194da565da63fa29247f4badc36f94fe82231920c9ca79325bebb34317aa6aeeff30135ab4ff978ebb59f08db2494f79941fdf28ff098c90112d212dac37273ed18fb1502f539480fe8158061c5048a87a90ec126fa5e030c262113ebdc2e1635577a259a1e0eeba6fbd55becf454c9bcb27fccdc90465b4dd7833422337b51304acdb5d2e16a2c78c698a2e33d43f517dfcae628b128fa56b12d3e2874ddefdb1203338e459bc3aa9e29619982eda25cc6596f2888453814553a948466591f2384018f80dfdae09967f5ccf1c6c3e3bef882246b4438920a9b5f6be61449735b1a713385176100dbd9e9e636343d070b7805d9fda51b01817254662706b81bb9d49513a185ef01cfa6da27589d009bf56c0fc5aea4808c28f05e572049f5b39ea013db73e594d0ef184819bc6125a4bc4ac4c837713066605b526a6cd74037f1e4aaf8ab3b64adbbdfaf2571c1b0d9989182dfe224b358adcf2f896584da7a863fbc3c4180d3da2d4067aae0b28d0a4907fb135181c7efa6ce1bf914517c12337c81366d09205f123605ebd4e6ba2229fb37a608e267e65185111b1d2953e4f98153bdf64d818fa74ea10dc72345163581906c1727f01bd960edcaeba25bdb034367342967fbb0f5869863d02c63778378e50e766c5b11496d743a432644910ba9315b4021db00e2840b9c9c5980c631c873d706026d925edb3d4434d1889a55a69a51daad79093e582e8b93fa0ad8d927a46dafef333110df4a14be919504c3b9203cf856244ca4d5985f48fc19786d8e28e4b337ea567062035066e97b4fffc15b917e08b74ebd16a40fb22c69362c86f84efbdc564cec1a63e84ef9805a5bfa8d9da5cc99b79a023410f7c473e0c6dbe9aec7f598e37137c58efac34b6218b8ded1bc9cd2eaec6126f7128902f73f8c7a636a8d65e54e27baa3dd94407b8a55622683e002e9cf04751e5b3e0ce119e5fdb3b2077427ed02154501f02113e81a3e318ede00635b7267d59e9932815aab30050e4e522ba41f55c93b548c5b52269dc335c5dc5b609290235d1b5e24a9b81166c5d36616f59ebd4c6d729715aa91ff166dc1c8fc87ad3bbeea2d045e7e5ddc497371e2c35d5acd00104afc09fd138c5ca78d5a9ff224b1adf3a932392a97cb1b9340c2ab52318e554d48f4cd5ca5fa230144f2b6b9889964b0355a294c1626928fd44609b29862105809e1d98d0f74cb28c7216a030d47b62c1caa72b432c71139768d03b5ba396b241a8be59095d2baf2ecc2538e5307e0024b5322da24f43f926720c349e3dc0b88ceebafde7b9dae8a11167c6e3b220d0dafa6d4a24234b4ed464526fa18428606563f08b0809e4c40f5274a4139d05446776e870193a85858e8bd0397ed0c1fee718f30a646faa85073ec983a70c88017c9db22a9a7feb2976207f63d14379510fcd652bf17bcbc47541a12183e81aa370ce373b06ec0b43e4fe79a8031ba3e328ecf8561de7a62693d5237700beb213f9c1dfd38500390f0cdbe34d0e7e0d7e46b932cb2ad700dd527ff70b3fb77c0a53e01bff4ca9717bd4bc9a2f688fc1ce2c70ba6c83f14c386a8fc3f4fee119893ae4e472863d0ebf08030450b0c7a2811094a63ca53897515cba7acb92428ac4a42a01d60c3645cb9531804a8be01ef717402d940482d4880c9b245bfd06090bba416e5114e9ce35c62148d631f0859c6730e0d50e434d0e8c490d19ec1e750d18f94a622071d2480886ec3ec7a6602fdc7bfa0da349a8c21f20ce3540713cd91e8d7a85a01f94c22dbadc04ce2185ef54902131e43954aee0ca3872ec811b8e15e82b2e661864c6b8d1ee86513a901f564c40a3cf1c3ab59ca886219cb88a1b24fff5bfe03e78fc2ab8508e3ebfb51fb30e2461c9db6ef6b58129f0ba4c231f4bc2b937918c4b304ef124a186a7302fe2c0bfba8b297a20fbcb68ef7ed803baa9ce7b6c9f405e044848fdbd3834a7f8124a0df4207450a104b5075eafc4725f1cd4e1ee45565cfa9446fc097ac27462ceec5ffa1a798059ef4369176ff0f0ed527711a4c5e8599292b5a1447040da84d62a5e079439a0f291387728f7b8cf6ec1415e64c3f1cc4c9c6227242b0c2acad590e486cebd1caa9b0fb446f0f6d5972005222a0ca3af92c951c7455fe166546958f68ad37ec486435cfe7bb1b46eded1def491f1641fae4a10c282038dae5e2723dadccb0206c2e52fbd3e0fe8b16d2bd0866fe807702d748f7809cbf941b33f7ec550c9d3bb8f58d9587997db0c329cb0f304273ae1272fa6b91f09a4fb8e6a6cd794741854a8966024c25f96b608b155d526e75350cc18f3010c9f841c2781d578296c3bf3289fbba60a12bbec8bcd74623f638a84ecc4bbca0a8f8a91d61c794d67ccc2c68a8356185991e04b2ccb458785e82a113de70dfc9c682c2301a4c584c6c9c2da527a9dc3636ee08056deb83946a22e0c9c2e06948e694c975580d0ff3bb0aa2ec33cadac70c91c7b6c13d1498610200ea82862ead5c91b54d37aebfa681818e7c46facfa85ef41d523fd0b9c8c5eb0cbea6f4575479846c335109c3b630d518600054be80ff91c44375356088f13e4c0c342542ca1d246efe1ec9b9c34cd0e888f905d4e89d79b4cd17e407e6d7ff958eb90ced3d31c128d9ffad4cb3dfc3407ed2213b7a640c043f2b21d3662eea6d3dabf03d2e2e3882318e75259b2ffd0b58852eda17c619fb1c8aa685f22fee30dcb6bc21bd2e72107f286b743b17e23b722c22a29f962005bc882fc9e6a6c438457e7ef201ed301f3a6984ccd414c58adbdfcdb5e3fe4d806f8108817d808cf3943df7640a239f8faa6a961f94fe9955593c62333c60120750c6259533de90917c0e20e3a7bc66654afccd72e259092439c00e85a9eaebf3f99577ca014eae072abcf7c4150df867320404cd0ecd43ff95082d903980813d6e5027cb431929981a5863538b2edbca120c4d2e4dd98dea1ed540b8d4015134359a1f422616ac1b09a0be03b3263c98263e7a741b07687918d9e09265c052ad45f1bc24df39c3b579439920c5fea287592281d29a0a345fb159a61123f01bfe986943b22e8c522fd524703102942868299fe876700e30e48291c0779ddd67ce817a61175aada48b9611007a85c4fddc9fd2f2856d185430b75b249f306d431dfa3bf94df1d710014bd4d1dc42ba14b1400e34002d65a8ef58c8a91085d13e152e1cdb72a084762090fa10a4b67656073a86012ab84961e1e20c081aa6859d3c374f42a91447122662b2401f894fa4bd4051d970cca8fab362414e11535a4f75be39ca6f8721ab7c7d98304e5838155fe82c7d160f81379f20064c2e8087a951b09373da8d76171f0bdd2db6cec6d8aedad177ee4d78d73f31491b41f4824269426da4795e9ff5b8f53b2845b2383bd92e559994f49faf3aea2220c8d9c3da621353450a7ae549421711c20425705d699e0a0365bcedeb05c7059ba640f648278d6b13e4a330ce456325dd558c0a37fe4704a660b7cf68d1e33d45d23309501626bb8d276577c31b6c33d50900704c3bc0cae7ee120ca33ea0619a0137f6e40efbbc9a007cf702e0dfb2ebd330d6a29fa1f8c9e0d8af3e60089d34300742c1f007ded8d0d8094581641bb123231c23b7bebd1a658b88f43eac883fb0c341dfe3e76f827d8ed08032bd1f0b91f07d75b7a680be642fe88771413d9ad0ec6a584b36d688a63f5dfe09064cd4044716c805a6bda2d566ce9183beb9592a23337adc2d4c76e2f01e80716690ff7f118b67db020ea0ae139c6eab54fadd8075f9ab8a91c67a80bfcdbf5a3642b73380daaa2dda615e8c322e348214007800e21137a168a7307423e4d0defd38de630d07165d20041d0f3fcfb840f5f771b3f1a629337e95d9d107d0111089fdbc6cfecb27176b7e1d521ba26872118b94d2a1193fc11909e4eb326fbe48f20cc508524788abab784e44a88348a8419d1acd452e4a83fad7c1d1cca10fd1386a001a70d372618eeea0ae3e64fb82d0e9c49a06a20f1cb067feff2ed15e216b6862a1d695b029d71fd0341e954b918ab22a040c2e94a4a6429d717772005b285d33c4d7aa99d2b0767d92e7b3ad4a2608d0ace99e79c9941478040e34b55297815d1bf8091db61ec80dcb2f9c173f841345dab8c65b96e27d8bbfe7a72a715293f17213db2c60585fc8a80c27211fa8a207b90347cb31f06e89bd9e21605bce9dbf83e417d9cc03fec0e0535f8a6ac0980f3a43b95206ee9ab9741eba94b856c71707d135bafacdc2eca77bd251cdbdd616ab79a5bd4be02bea3b1b794a3a958bb7a18b6036cdb40799cb76481cc2ad0e87d09019910297b7faf50c0ef64c0ffe116d4392e2452bd65cd8ca077536dde14f046010bbd26ddcb382f32e2b8b1691568d541dc8210459815ed73fd30cd4b740eb27b9253f3fe40f1f5400b6c23dabcc94225c4ed5d9021fc8ac66a3cea9d209bd041c21f22d5bf440e8bc72e0e0f2d277d79730e5d396ee7cafb6054a3eec58cfb769d3900ec1f4135e3f7d9f99fea0fd439a02d8c14062521cdc2e0eb4fea037a035afb6500d42bd08488fff43567c287fe714f671dc73c1b0b6d597a7f762e6264831bac9dad16128603f58fa38200608ceb9ac134f8a6c3fd2f3bf9fb76da8f0f58c784e258974dbf20e5fb83d2b37b90e012e5f3be302f05011062859bef0a2f7dfdfc47df01a026330ab17057e3be01000c84d15c1c500a154d9f10ec976b5fa69c6649a56201dba738c8718684c60ef6df04a3e024f441db37a6a89aa0d1a1d2200180d2b9cdf20607504cac1fffb6345e730e042106ff7e40f8a95a149bef4b38c11d9cb440fb39d7215d6bc1e09e355620d8274cc3c0095040ebf06dfe05b894930aba0d435b43dca09aef7c32de80427d82642873ca0ab88bcfb9a3c581624f1d28d4e5bcb70241d00869ba1b55739ffeb8b9c3d1fadaf08a21b8f90ddbacb6d04cad878db4cb848193a5dacfa122343c822092fc409bb71e42672887205924e66277095362e9f3658c2f53aab1ef980e2b556fe11f09fa533880377324b79d9387271dc2debe82a6d924e7d5db32158cc0f62c355ec836d8c233b591d7fe65e0aee5dbf094f8c668007e76e88d4c0ac3dab37c2c6c9b258696a18f6e20f39ca812fb45c581cfb931b4337ba693b59ed8171faaa15a3eaca15502677ed45afbd29b5364a1c8ee99fb699b5f0b4bd276f2f1fae2ba9df7a952fd0789c3c06efdfdb2b98309a43a818a451443ce8d3d82799faa11c4ad9a0d00cde42678bc1b354030871e893cd0eb9184d411c4a03525dc766e5fcc3de03bca39fe2c2d9e0aa2ccddbfd6992a1f10aa7ac3f42fc92f09cc57319f24ab6a6914a90e25a6983d8bb80287d4bfebded289f54160932364fa577b2bb75d8c0137c54a0ad03e7600ac1ba23716600872c41a46993077f3c674cebdddb0536375dffb2aef054c7fd5f688b95953facdddc77b04142a4794f7c8ba7e205c495b8f0181d0ffe90a4ce8d22244863a6f0d2dd2872aa396c498cd46d1f05e2804b52073208accc0b05ff6326c8f34007d24f7e255629e1152c1ea3e5a59cb4ce9f96cae5d6898ce3246bf8ae14e171a14f273cb2dfd41b850782f964a1f2e486c37185bc6dcfc261324daabc876e27fcbae7856566f15b677a2075e5fecf2b1bca3c2b26b4ce8bd3709517094407a60a2826ac05e761eb1eb49b0ca355531fd6f64264747582e918236e07bddd870800c6b2fbe2f843b0cff97a56acccb648ffa6b3bb4b6725e1e8870f246372bd5480aaad2fcbb12e5701dcb62a79e6b774b35897700bd76a054526c8615bf131c9d1da8fd4ad53c1f3b167c44275d9ab288f66eb38be401016ac643e0af53989f848e3d3dfb595e07a4c62ec4e7f99de8fc73e3ae9dcdde617842b3832e418d81c4ade2da099ee0923863a0387aa8a574deb4bb21922f9ec0a906a79beeadd7a54b76666fd92bf0d450f2c870787474c6c7d93bff52bc68b46640937c9e918984894637ef33edec3d8f876834f627e49e2f5fcb127d4132824345b353878667b168f660e523aa37319a5d8d1d2444a3a79260f2857e4171d7cc8ea4aece5ef15701a3f10e01b77df1d9419ca19ec2beaa4de15b11638d32744ba39746677f8e5b9ec846ba46cbee9c07f08470b6116f242e8ab857236f168dc89e016a29a89184a1250f8b746f37d97140814535433049e1d181aeee263b00ea5ba0e6aee61a1e07e8f6ee6417534d0a6a4a73c6bc875abadc4df618d443510d494e49f6584397bbc95e6450aa835eb9bb182dd2a9d2e1ddcb1e10aa14ab118ad19e070bbab77bd92144c3829a4598c9f0d0495777adec9ccb2eb99a3b9a1b791ca0dbbb507667e709394d694ec4f6a84d97bb41f68ee681e49186c609736617cade00cbfce5b7cfe32511a397cc317623fb3c7c87713359c99b37ff1c6e7cc9552aed7be777bea8de25d7a39de8b220021df8207ddc411e5c1a23e95ad1f67139bf4708534fb597e7470d07a2d144b7c704c1c2bbbda9280f6388c5e8b65847e4abb4deeae8b10af0ed7775fa3afe1a1e9554045cf0bf17bfc7ba7be68cc5f3d3eb00b9bf7ef01baedc56cb34179f260cb0f07f0ebe0fa7778e9aba00d7fe76a36ff36e098faa8978b7e6091d4599312a7dbc3f86a26a260d013f70ab3cb4c05ff2be33b107351fec55a38fae8adffcfaee5b4986356dc95f7f569c0c7cddfb7a7d4594af264147fb30ebc7fba707fcf5b1655f7ab7de31a130cd2f3c3f9ad97180dc4f9be75a3be1db62d9ccf23140c9047b7cdabb83f31e974fb878e23b1e706629e09126c6aed973f428152cd118a107a47f2d561f6837e08bd678da136fa1dd7a1d397aadcb69c86e294f7e205b6445699d8bb335f9e9bd7a4cfe21b7c842d35bb95ac38321e36a1e07a97672ae78ef486edf5aea0c1caa9e51779b83b6bbda2ed7d6bdeaf2c4af0dc1d0265265f6f2b3c4ef890276dcbf1efee2622ed1cdf1465d3affb6d81be8cb617ea9bed0ce134328f48dd37c55c138563629cf944ebfe4ec4def70ff99bf60d43f2791f466805ffa2dbd22e94918d4a922e551fe9cc6a5527dacb3ff264dede54de2d79baacc3bd32f81483ae1f0c9c0d7ba945aad344ec28d8162aa8758fac4d54960d5f20a4bfe12b6e1bdf0edb6a2253fd45d67451ded87156bdd787b63e997a7b9af160878a5061a67a865f72251fad392eb9b7a4e65bc497dfefe73917954a856adb9554c7f523753f7bd628fc530fa13be3cad7def6794fa8be949e7621d1972a4a00db0512fb2310127512b0c9d5636427f81488bee0168761d3ca67aa34576f03d6a720574f41e4abc2d9924f7415684bb4f577d840910fba681fd93a6e137db09de90a2a5ea46ed2eeea9b7920a1a36cc5beb4f0ba06902248a16bdc5650fabd207edc6056b29344db99075fad8b0511928b18679cf5094c001acadb59794cbc3b7ffb40a56c6d5597b06b08e57f788274a17dd85b7fdefb1b55ab80345e00a7bbeadccf1efcfcd3dee96a9b4b47e5cd1d5eac258e1ebf6d101fece7cccab27ef8eab7e2b91176e16215c5bd682f8a2ee67324c4a6598290e5955ca601916435594d58c9362364da7c637c456a1b4585787e8ca530ee88202ccfc85501acaf1107cae0a9fe01d19807bcf6ec312042465266d8a3d06dc624cefe7e610fc222e3e8e0902f5cd80d9faeb372a09b4e54e528e8158e8ae750aaa485632fe187257bf21c5e15aa7162c20b959e971aa8710f353ebae9d41be70d2047f79e427c2d3243f2fdf2a4c8f6810c0a71ece743f751dc3452a74a47826b4aa0534f8e0ff6d8287e9d8697b14daca2f10affb68fb4fd89695a0ab954be932d478a12a45f457f7e08fc2e9f1f34e6b6657e775c71d5f502324f8f89dd9bfaba742cc6c3fb3279e546d35d27e8464fb35f131c9252e786d01abb53d522591277caa14cf37667b3769598a2feaf63a7c3cd0609c7ca551994f21ed1f978908f8f20018a850f56c89c403ce1aad29ecf5b05331fae32b4f1a76de74155438e9f021abc148a6b0f4065adedc999781696e110996be3bf3ddef5b2043d4d5dca0233d42132f93a5a58c4ceac9c9f293923045dec40c3dd43b8ce12c3d5fb8889ed5e5ce5e9796287db6974e2b62abb558e8f9ec92232878e50c62b48e2a0b96d90cf570e633fb73b94f2aec1af90090185ee9a139c281709344787a935d50ec3d7d7552eb8fb6c72ff1ad4aa48a0ab742e553462a1b8c39fc1624bada2a619711c31183caee44b3ccf13832adbfa81278d86c736cb3e1dd70c08e45faa6252c3757381c7467bf21e1d8bfb9ff372650cfbd3aba19151bd34c4c76a07d41aa822488c689dd8dbd78a93ccaa6b6aa6d12fa771f7173107e05ffe51d464cc9dd5af0083bae72e445cd18cc39ca82754d27f581a036620abc9ba6cb9765da32915da28662f1d966d43a01655dc22299776da1fe9a24f56da53e7dc9d5d934ba13362ebb0f8606f67b310db428142ef7245d927a69c18bfd16bbf3f086c0de5fcae100efcd290becfd948a5d9cbfbf13d07816bb0c6e62263a5d7f4049749a5c284a732b02e463398de9d07dc7ea594ff093a01d595caca0be7d1c5efa3a26aec87c0eeb91950149f034ca131357f8ba9e99b12441bd6750342ceb2e3197c097ebc26899cfa2a0a9682d85bf19655060f5f5976aeaf6e8ed3fbe3722522866ea608ba2d363ae27744240c4354aa3bfc9544b7d465417b12c3783ecb1ef62ae4a154651aa2c362b024a09324f2230952c4f6fe9d6fc603a618e183e6b6cf13234c321a813025670abe7d29eb904243663a0add1a760fd63d12a3609e0e8c26a5a1b7313a0f7a4064ae2aee545e5742c870deab23c0f33c0816c3f12360cf4c42551fd09d96561ecffe15a72e2ff47ac30b7384d61642ac2943d1e628de987589c495fe4eae68506be1e35fad8f01d78d5d5160a029f92b3fec2f436521b3cdbea7e10fb7fd14a75434aed234e5508db3d9dc1c5ac7c42e102d489c608234296d21c4d5aae181ba843bb4a6422888850117b468087e5bd8225a54ee52e81a083355d74ae711632918ee9b6dc210241e913e005dde74af6c736a6481c7d2cf7d14979d65f72f020660aa8a286d393e9e6200a232b40e19985d7c42ca0e90d68a57c96bd146f6f63203bf8fa008b942f2af0bf2e606d06c80f042049b910a73bced3b427ca29278508fbfe71572d066d74df708a7a8e52005c8f06d45d134249ce98c1a2df281b86f8722d98d93d145d9e61129e978d83620e29d51f06161b402bd62f226ee0efe20778a6768eb61f19f8be59102ad9f31caa788beb1aa3f79176c1be854812453e1c775d5ae0a42be631217f23fe1aad12c01b2888c4441cb5635b3b68793203285fd340a6199a9bc6542936bc61d5aa18c6693012e163c1550cc66ede9ecb912adf164d33bf430bc2062cecf3e555535c30601aaae025e31e047c037fe9d9a8c6db9d2840c3cdaa1b0693b3904666d498b30aee775746e34ac70b3a25c60222c03a43f676497f9108b75d9d6d2f47a1bea69fa323e6eb94e23870c1a2383002e98904f5e835883994b7c115b8439aef48bbddd2b24f5ae3ee25cd7c8729aebd9455fef8ff3d8a2a13b9fc60b38d1a894c9d500b90ce81b6d238f069a18cf593fa11f8782d92e28b88b820ce49c51d5ad56aa0e1c3adc4537c5aef9c90c5c25e6767803952cbe7091a03e160bf1e66f4eb46f49c4cc1d9e8250660d6d2361a3f755402ac65fc14de53e1c715c0adfcf9c36662272b9c2f12586c05af92cf4f2a37b5cf6cc402676a4a4f82a97022ae70afbf733a8725c693f6d26bd675165cef53734322eb85b44cb0d314cd22cb3738551ae2cbca32f0497a7a6abfda6b4858dcf7981908d45483091b894195ff4487509d80ff26d7c68ca7c2e80116313722e6617a340309b22abe090820e508b71386c3d0e713aa211b9cd259f8ec54ef3ae91252b90ff9aadf84c19fc70522cbed69b7c0f3d5d4842faddfd161c261d5b1b62089f4ad4c4bd0351b236dc5c3ba2b486b8d42cbb21d7bcea4ce0fb738241a57466760cd02c2e192d6ebf0ee425eb61cce0a5e0e060f2cc5707b14745aee008e475933a0e3991e994427acb63cf6b094eaaddf2c8dcda08bcb4d5739ac8c775d074c0814cb192eb0ca5de4fe8c1e5f5b67d72f93872c5f7b999647e4ce34da1567b053fe944bb39b0f6169b1c1b7b0c8365603769369acd0fde47e160348e1c8918a717bbc14d4011f2a009db6ea0e3eed406ef2de43ed851a60a636a353aefd761e29b802b557f838d0a6eb0f025efef61d7d1ab65cba304c43e3b6ee9d46007b66fe397731a052e8167ab76ff3feb921b8cc352fa91be7d04d1ff84f9fae369d33d8fbce76eb27a043d4d59f76ae1e41b8c70b92fc018712d3d3b3061da8c8a4d443211aaf01ed016b402ee13665a2f199471a9af7dcc0e935aa5e3fda4f436b46c78581728f40b5c3370a87415554108bdc24ae26d21c8ac9d6f22f72bb5dd7e0bbec07662418bde0e0990a62710cb579cb922033e8ed390bee06dde2de4a91232af24a8a216cdbd68bd735dccef359ea3b14e0f0cfd98d7a9a117da12548cb5650a648f873ff044a041d9b4ff7cec89e2f7e94b487134896e54d2ea18e10a32c9f1e41b07166e09d03113a757c51db4bbe1fb7dc9f2f143ad39d8edd85054b83744f375b7cc0d2fae75bc6222c1971613b2cb88f5f4daec76119239ec45756635c800d8ad014851f04a3ef70821178f196ed5e827839e5db1e453fc490c5e7a8b127ef8ba94caf681d79c2f1a03b6d22ff2cb397e6f5a08a3fa71abba19107d1924a086baa82ede13529f07a46fd0e1756a5a60e573b57d1ff85b53ef6af50b742624b507218101b696e16cab378c9caea5cbaad2acd6efe5dadb74f76824b2d3ad92604013c48b02f18a5a943cd877d2410e437e198a975f4f7856c98ed0a18eab188fa55f1eb1d57c7a04f2315349b376b45a57f4162726c5248a952e61585a0c1097ec5884141ac483278d6044fcda28a44af06f4cfb10687f8872e454a363bb7e91adda6124ab6a1c27ba060e5291b803ff01e14b992e5b31de3aa8e09692b5a6ce67f98ed56fdb66671819db65db0dfa2d9f2fb00b3dd1033322cb4a85751fbc980db04405ff69c2f429699671dab2863d5bc2dc54f546603c359c019927caa5ff1bad3819d7773cf70150cf5f47b0613c3723ffe77fffeb04f76748ea11a3cd19ccd23c6a3a2da69aea9437371da437fe6d426fa058b4ea3560477b938d6862d698711f1573bc61c3364f4a4c041c43f5f700b8efe9a510bd272a6bde8db9886d0fe5f91680983aae96bda5a4815b9b3b7e967e9ee36a3b1d82761bf6323748baad0b6604c92a8c0d550505b5b5993ee2cbeaed94887b7d027745009a4c6532f2589375df9a301ed3ae7a9918f2f1cfe9b845e7a61cde0337fe6a890c552a4075fbe9ef8d406e3c6d5a5b977bd796af9d2dc4280d71a07804eb5a47751b5a42ad8c39ff97a0df92a4c530b696ba94cd18f1c13d2b5fdbddcc261811032d7be80cb4437d5909ec06d83aea2c732ec909ecca1d002a000880acfd47296000a1f2a8c5f95c26e4177002c0ac68e36046d65b8a1b5fca268dc609340788a242759247491fe26cc43fdc6eb13a870ef31eb273c0a32c3e348836473c138c3efe861bf24a0e541bf3098f5254a41935a795d15524c985d78fb7f13f012ff96ba806e141e4c76fed614d2970cb7c66fdb03ea1002c43bcc21198e2cc73473cf8120d00e4632c55ff5c9c9fac3885e053471a0c9d34e24ecd51d056774df2b46bd206afd3d4f75aee876a36abe7815cce6ff01b1a85e924cdc8200402c289bfc9dcf8eec48d60aa41982a97e8b55ec79c969d0fb66d52b0dc8da457e098ec20a0ba3ed16c00d538ed02628817275b6b0514710324e857f5a79f19c193c54a3071d95b87ca0212cb38f52d42ac00658dd294ee88a987ec884a21375e4a9aac99551e7b495f480fdba40355649e6756a2865fc406a69128d0414c49390c8729498d2aff28bb2ebfe8795650f4de387c622d4513120894071278a924a3d8059b8a1d617691c5805ee919b15b2ae04454cd35bf0f075b2d3b62938103be5034886266583d89d266a1b56cdb295c7c8a2ea4dfd5470061f066891828ed6309bcbf27ef2553a856890ec4f3f87a8c34df8221a010594b688adf8334a9179c08c1f7f6f716aefd0861f8986e46f5e56d60c5917f63062239a1c1873379fbcd880c1767e6adcebe47b94b93ed085669e28ff662358abf55250492106af85414d3b91c72baced06f421cc450165be6d26d8e2187c1b46c7b7dc6281b5d30982b97be1f148436c05c7621c32f7d42cad00584896b96406c24b8baddd024ae2a058074b4894cf96470de50c8d06f3dc2bda07191c32e98f4886a36edd60dd7710a40f3d93aa3bef8659e4fc5fbeef4f1c48ba78313ec7a1fa5911613785c3831b884fe5546318076385afeee122ce420bf591099fda150cd90c253a8a4645ee405d2734a12e4ae93502deb7d86f2b9728b547829c2cb1c03f743acd262af757c3ab89806336e21cea538129e8c0c20f2edcb916033d9dba6f7e30b1ea55e7ced7189ce2fc91ff5f1a673c640a43556c669e70b846ac15531eda1d7204b57614922ce80bada05aebbca944ecb81ae1625a1ed6df6667ce076f03d25ca6eed3aad8b55c094d49817da7e710030890f6668ec860e2312df995a332c50c96202699d1a53763f311d58a3b492f500156c3e77559f4c036d060675437b0857a4514c6033529dba7920e8246f97243dbab99c9a0f8ac839356ee096a2f2982a4c16df990f878c1815b9125b187b98c460405bc1a6fca568ef39ab22c046df80b3894847c44d9e67f2a3c90b4b84535d64e78077af9dd7bee20e355af8e8fe0853f3d34198256267f8559426a66c687163175f27c4400c189df867026c83777f5322caef14c6335170f745e320c6ee1e23a5a732b321e87e5217ae70d8406b79d5773c1e92a30e44eea2097bd699d7f6a73f40763b4506618ddc93b21455298ae85d1332384debe1fd7434a1be59f39db3d1addabb85d71084d0f16865b24febcdb4b4c10f4395063da371207cab9415cc752583e5c1fe89352aaa12c2ea41c9ebea1ce3b7f7004e349dc848fa4bd9cc5a50ad91b98c1698c276d1aaf1674429fef811f860883065904f3465c86c96f70f73ab60d50e7b30c60d94fea5106b16b9ab9bc15e3c9e77508c9e85fcbd5b0b33e2e8352f95799ab7374242359e30cbdf8248d3cbea94453e647decdb7b237267c62af77badfdbf8285e067b61242668eaac5d1347631e461fe81a20f7e94becd77a3a4813f4e486f7bf27871b1591dbd3507dc88010a3b5246f0d7832c60c7c26dab4f4f41450020c01f7cd55ee74840e1577b43c89d89c48331ab3092b5d132ae3830de3c44d0e2d4deb8ec7f33485f39313080f189bec3f962e105059a1c00a4cce7482666c2dc276adcfce3d0e331a7df944c188a04665381705547382f2ceac01871374038c2315fc052057af4b4487b9312ee1ce740d846d6532bbbc67be0c1e14ec1c29dcb91d6aa3f13119eb291bae6a1ebe752e13b4a8e6dacb2ef9d8238bedb76e4f8d514d9f39809100cafc57d381937792f655f837911315a9eef3e3efd9cf1f9b548cc6855c8a4617a61d83a3d66df8d10ad676efadfc5b04737ab872ff1535f7efc395c2108f9495d6a8acb263c2ad59501a8528a86d47070d234f4298f141da3977bba5862435e02cf71e675e234e979b8cc57ac882bdb49ddae7da5436fa647cba47ba440f0a9b38415277dc4fbfedb5938d368cac88ef7caa64f3d0ff6f71846ff68c9a4989d8ee6bc5b98aacbfe033183ea91a477ff77476cc1e2138552494f099f1cd99ff5e8ff0eea243b51750191d68212002aeebd687d49920b63816416229d2359647fd4ad12e193626147cfc0e14b45aa133d9301e8907fc95214dd44a5e651234298883ce664a380f9a19a1fbfb6b138fdbfdcbcc2a064ec53b645f8e31627e7fd2bf91e2f48a9b7b7abd8255e3d8aa124244e66217a721938279ff32c49de2beac5e29608df6bb9fa8cf55d0e4b4d9dc376ebf86cbd197c7565e7beacf1e55f587f97ec67f28b963efe04913730a7223431254b98cf6106a623312744b1204824948fe490033e080a477600942557eafbcfe27f7fe27ad019d4748474a6d05732edb6200950225cef39e999302481c470b1056d5846ff1214c5330bc1dbdf81fe3e27393162f280b5e2e3281f55351922c48179b954ea1f0f33b6d2ad8004a12a8f1c28f278991fd080c82c4c5dcc233509255b439081215ee06297f71aadb5dd75de8ce3de6ce61aad0a730014b3a61838bbf80b3e73c791f6ee9f52ad45514dc50928d78b0e286886f4c10128839625ba09c09515c5207d372c388f16319cf64d15126d6ddcd4dce6f2850de07398fb2e6820ed550228c46fb8918a5a10bd0c60348ee85c9fc9b84c1773f6b87d63f6db7e71da2c44aae3ddf96f85647d91e6eb305e8d63d48e43c825f70c3fe319da7ed889dc2c554e0b5eb93992a221dd5c3d1f763a0e43c0473774e23aa321652b921027268a17ba341e27d348145285765af643f182f5997e467cd7cff339221008a66af956f749b1da7d8a97d1f02a08a9ef21781a109a35893293f046690f12a11248d9fb3a5af942fd404a080348fe1247b20ae662e2c5e40e75e5fe639ff7fef3f2e004912a282c096e06600527ad42db5dbeb9615503134dcbae35e18df03a7e722f7a1733162a18064903e0ed25d4783d1ceb9f92754abdd24457b229e6ed06888ab3639598c4c92cd39806c9eb36c0e668ecb7b25dc8ce5327df403c8b10dc00ba2a513d4b112d058be158063554a63124fdda884cebd6727a35bfe4c22ada1bb33df4885044aac30e13a9e10e8c14936d596aeb6121382175ae6e6c4e33d79bb0868248614350d8018ca7da9c2d0f807cf6aa8e65c685185eb6d3a5c426a83ac3a1034da8ad6901a3ccd74498d21667a4fb527e88b469692765367488d4034f2f4a0b5bea454d15b4cc004b50473b943fa82ff1319f9fb4be52ef642855296c60f168b944c6392a3c834b6a18562c1e4b50e245c4b8e1c8a0bf04ce41acae3eb315790742b394aa3ab69d09eae50d684d70279079c5c771a8b04fb7a65363646aa1bd4b4974c227e6eb1901a009676bd5a08ddbeb5ee2b4d7c01cb28a47b1cbfbf906106f433f7ec4d74885a62a2072cbc03b065ed6932c6b2262c06ad1bb609c2b45cf5546576230fed9de9590b08036ca9d1c1538b0a4f2c17ddcd813f4bd71f81f43101154d5739aa9c950fb71ba1064833733a4cf0d51100368d824a1da9bee313009090c9222ac59773d7e0340f9c22cc9e7b8e1ff5b1d32c938a5c2c5b59424efc918196d4c14ee0d493a76c0904dd08823a7f55a19a41ba5352997cc8fda526dd7f31f97445140d9720b4fcf642cba845a41450a448b7fa3fc3e7b285e1a26fc7f175b2ce43552579665d3279792083ce47a24c89567efb2a39c5aa452997774d8eeda41532196299fabfe77e1b97221e205d2a9cfe96e420595975ea9349a7a29112993b7f82f4de995ba091911267a92ec99fdd23cc1cbe9b3c507142c1a241ced1111d6c3071255636209d87c344f61a74d75218ada376024312514be37bc44529cc0be1db015ca04fed31f4befd47023b014067124851c3122eb8db00e30529cab405213c209cef28c723fccabe08a2f349a06175ef7eaad656174558987a5909b7546a44f25b78900aa3376acd2bbbc47657088d01babc5ce076be0376adc9eebe3306ba14e74827e577dcd211056059ff0e97a8492005bee82d7c3e6d399931763104bdca3bf3a0398335caea68561458978b39131a1f8c7d868299e0e73dee1b211eea6d800dd91e3d6797fdd4f230eae1aee8daace6ce68624ff3b099a0077bcafada26911024f237b9030601f52e7136628aac40ae0b9a4795e2130217b88d45aef04d6190824fd9eb1628487f80552eb97021e298000d0c0e333c9e01626e795d440d1eabdb0c58ae386834524797e97e5e14a6be2f78bf7531b1b894dbef884717cde2dc1ea98a2e9bb21c1d6fa9bae4847d47007a1a8b9529faa489c762fbff8f9f57d20e25b499a25f1a32ec67faa7b9ec9ef6a62b4dc9fbc7cf4a9f04279a37b63122f10e2160f602db1100b1027df86926387427d06d05d083bbdc3a1ee58e36290f360096ef22d28030f320c142f56106c7b5de0f7644891e65579645610902b94525bdea4974b94573564f2214d60b616b4467ff8eb88e04437533c8cf678c440be0b14d3167716625689a678ee2854c02316583328e998294d7442e2c91dae024bce0bb6bb57835f3be668308a70b58ecf83a670de1963996e0821b244affec5660fadab1994b9fc8c1d98d97a60458ab4ac16c10b28b4d4922a138633ff501e5a14634df1ff14c3f5230296adfa3c0d72b96af5909f61d7676c5dd020e35d816e214d24570a14a1e3537a8fc72dff247388775e1f38819559cb882838530a0060b719d0951d82fdb73ed27d9b211ba1442c132c1cee32701a31f882313ec2ca31fb4e1dd08948073f785176b5a9a75d6722aed7f374414112016c6eb7e736ce40c0e25e5517e6a11d04d7502fbfdfb4f02ac6daa91d865c5cd23ea14c283ad965cee39a1c433dd61130b1dd1f8f621feebec46c9cc5e0c257f55b5ee81c27920c8de79e9d33266982261a96568dfce3f4209e46895c341a5e01c108121f1edd5dcac35b40962234d92e79c841b396fc6ecbad4a26a4934689fcd05b3844ffef517e4a1b5f9384ffc38c788d243d4ed5a399d8ebb183d96ba27ee104bbe3d17c4560385c36919dc8f91374663a0de045581063fc83b5698d4b8a9400decbab2162188733da20e088957b184ae9cd36df9c9d5572fea0fbbbfa5494836522612c215d89ed72ce3c16b02f83e2c2d92e812aa7f5a8d850a3ef047e7216e227a6f6f6958b7e3381767ee76eeb8961a901e22ba89a09040cf18918a8920738db41d304e88ed112cec3507b37f0a7612d5808092787a25e3c0ec20d92a4eae7ccf1aa622d2d5715e09ce1b3975bc4031845e040b93ed99a071135f177052fefeaeb06e65c2ae27714f07c3531b25e075d10a6a89dceef75328458cc64b66f57784ac51b58af5c90920bed52a52798c27a75db27751f54cdf1acd3396fc7900d03545b5131e30d286d73a9803acd852f6b2f78792bdbd5674c8953a837c3cabaabd6032370cb0b842211477db6b9af53fc9402c269da32ee64a3eaa5cbf4f13c29390688e255b4c02395d9b66f890af1d4b31775de2eb0b85d73a2de4da57dd81357a7b6759e658b46b4128898a1327dca686d4e5e32bd439c5a4376933c87b13badfdb290973324e03b81995b7dd71ab6cfb271ee0924efca0f89a00067d800bf1e838b40121ac10f48a88b787506730993527fdc42c9b1008f13fa5d8e8288f807788061f28a6651931c5b319fbeb32d60649239901829fb0111445906ed2ad4c34f922dcd92771eb792888862e2ba8f8a653d38b7d72752b446684666722178a710dc388437b3dfb7b3e71715376bfefd0b5a02e1e31e79346a29672034aabce57d767b0281d63d850bd05360be33d2fcd2f9463233e21647138e9dff1763e5d6d57ff0830b1097733e113e6ce2645ba93a7adc5d7cc9874af0b27f1a0ba507abe68db9cdb18dd13cf608ae80d2443abe459a71b26b4ba3920428549940d89cd155e0f6e03fa4e06c1612ac1fe71dd2e7525010416cea498a7b946173904ff8f8dbf75024391879084f4f44437e653f913caa9fdf8c578bd55e3787a6293e62988c1120b675f480a7a181b36ff7bf4722b0ef0250a77ad82d0b91d6073395f24289a42373dacc27229c63efe62951ab8f606caf6e9b74b672d11892c7a421bf413d3d5e63f86359765df494d8f57f304b62c95adb4113dcc04d3e9043543ebe00c514932b9ef0d668705a28a72d2b12ca447f444a44c3ea38f43631bf82efd2950c11c7e7342fc36900446843c290f9c445b1db9e436c3dc518e4decd1e1750a7b42ea829cf864d5f918115eaca9926265b83492391d89c713fe8b8e361e4e3bdb606889f09d90b090448f4c397c27defa1cbdd5e2bc78e2513a6a2e90cc2a492075300bcfb207ed9f377eee3c189b262dc35a4ed00619ff998c6293620f9ecf93a42987c647393ae184be13fdcce3d4aa9dcb5984ab3c92588044496fa4d75bcb9c6d5ae1a31fd04076ed3b41a13726eaebd70d8eefc4f5a41987d74b58d0d8a0425c95b43c9ce6e8ca42cf9ea226961e5a2c9b3cc38bd32548fe69519e27bb1733555ee73a58a83ba929e3c7ee5317d2bc339c04fa6a86799b07f68574d92db381708afe9cec8a675d7961787059861b383a97dc4e376a84b7564977b0f59bc04f40198b4a156bf1ea6f5ea0c68398d4e0e07614c5399b673a787cb4f543148119d8c8df731213d0ebe06cb864957a70b926c0bdf1d3827c4823365016cb60c40d275e7e81a27ff5427914641569eb5de25d295ac40882ae9813cc2d3faab1a948a9402d8bd114c79447733b0e9744ec1c7a298fe6f7a01ce5a2a1ee122bb4433974121cc18e57a0a5d48081366265d087e2cfa809d07ba4c2b12479b2e661c17f3f5d20848c98220b59abc02d95676d7f4d5038412d569f32dce38609d1794e858fa96239a67d868a3c2c1215e9e4b06fc2335619d87925a997849e06699090a848cf68daf0cdc5fab609d3f79b44655f2e1f322660b0e4ff42bd59e48c1d4e4cd6dc1331c37dde1bb713d1ca0b8f7eaa26b9db0366a52639a6863e9608531194e62ee9e2c8814a78050bca3745ba7e40627761d819662808643e0842770c58d29870b38f88cb3dfa5aceb36087c3471ad0b49ca0e6cd274856f8ea1800fd2c1a62ed2c91c694cb34dfc89fcb39815030879eb9c000581845b75716446ee23c19e3e4dfbf591fc5f95720c51114a48c6b65f0881f4b23aa4bc90c2f89364e8b5c07a9b263895f0cfe58674eea53b722c64ea4b0ee3054a0be859d0b8d4a4bc6db3d0660e189204d11d5261a100f1e99bf6b2136b2a4b48af51b5dc05ce83a034215f6ba851a8277a7abb72bf840bd2521c6016450c4d3b072a5193c56fdb15160fa00226bc5b25f33fee184af168d3e38b9dd5ddab0f258694d1ca1ce150d93113848a5d509f65927bd79bbdef0cd38e83dd8a475a81961f766f267c76207076916970a26574c6e2e83e235468810b0dc22f9892d773752fac4de033a0fbc41920f8bab8b5718973fd1213b7a128fde2a08e89c4409532dd2cb8035d2e627fd85c6616e49362767ba9e811027b36154f6c49ef97fa9f2c193587c6f22948c335450621eb00641e800a0830f75655cf4611d7240077559aa5f49aa52988fbe21705e77e0691cf66ba7d9f9ed4c040ee4ce97346b2291f48e0220c00e426611b1e21d902589a4fe716e99a069024a03e773d5467caafc10b9a9851a610bd2722ee1c39ce8d810f668bd65d25b6560df79f42a4cb764ec6789238aa90cb91e14753de761ab00ee36a958864f0156b968bbadf94ac98027bc8d33d1294ebd12ba0be65fc14ad8401715c09b36a2ed6b7aae03342ed8711c731fe69586bb55d263566179dcb479c68aaa281eb4bd63b50d9e89343ed0750473e35d05bf1c219e2069d1ce7074992500cc070bd3fb4faa715c451fa58027b19b1f411b90f70d5ea83f1d48be3a3114b10e241b04cd88485cc601cfeb22cb0db86681dbba282f9441ba3a1603925e382b865401bc4127620fd96b00abf2804e2238151c13062046bb2675e45e70630a4fc1c208c30bd6a58d8f86a03e50960ce4841f0a06f91e222be8e3c4e06d429006e7ebc78a3dc44cc796e7738d159e144c64011603880a8534adcfa38ca697e28ebb81b615693062daccb380942a56b60794bace940c598e7d282aa89759829284758d0620503c93cdf9344d1259d8bdb186d29b9429bce85211189f5b8077d9a1b3b2548011c0f96f83df4dff72d7e918f6dacb7305431171f07c24b6b4923df18b403d8a84079cdbfe34a780829455817386d561875b1f39255dc7859cf96f4b84051b29e64573ea312d0c76a82f85232e87c00486507b28014126d8776cdf27d74f1378825552ec0f262a6b2fce98598a99b2e38b483fffe0a79a07b07d2a1f134741ab661071891977b3a0f5e8d759d77ff85d126c504340faa4296805b51d1d10e9259c6db57834d0cc3aac18c748d1dc09554257de2358a203caef70c54b906a2d3719936235580f19a72e0236a3b05d0f48026953178a1914140a5940d1af0788952228dbf89a77bdb3e42220b73e91c7a6b92b59d3ab3eabbf511c3574396663fdca90c97964d14244931a5fb90577b485ab688a086d1ad67e0e53bbb6dcb8a796c78e002296acd23444e2bb950ee24e10827760d820f550b2048402b13e71312275ed166bfa30d7205d022ed88180dbdea167dd8349b5216b72b13197092190161a58235d5ec8ba2f3cbef45f701b62626c0a0fa7724b4f139a8048b73a078e9c58ff2b80c5c8638e6b413c1fba457b77909ff37c4891dd835ec44e464aade92cdfb9e9486614b16f200d1df8cbe0d876d238895ee75000fa56801d62cb63e238cbfa807d33d3001b6fb66eb42f8471cf6a0c9c786d9ccc4b8d6532d42dfd28836956952d89a498aa80e46c96687f63589b79dff5347489c36cbe2a2650b369f8899d0365fd146aac834b292168f5a41e6d974497e08ddaaa81c8cf81b4ab55c5769173f953768fd119c14680afee6f12f93f925d7ceb3fd208669d82b1bc8f35622ace07c8b1d5bb05fc10420e4e6e392604d6fcc49b5b02dc912fc8602c1cef340370bd78d0b55826e55e754d1971ba796ec16751f78ab15bba5d6cc9fa5aecb51a2af6630713bbb6902276db50879db726b636e939d8cde638b0b3ede0af079b44beee7a9c8896f43fe54db77b31d875a006e5fd6e804911331eb9762336177041bffd077b85b0de5ad8bb3b6faf00ed3359801d004f335363400a23f77bb194b8a693ed8f642444567add22fb7013b21ef38681cdf17a3b1f4697c516401e58b6770a2c74d55f34acd5cc848c86440d04ad0ef4c1f06f53721f61f76edf987f0cd33187f31bac66eab06b4d95a9c3102e2151d26d0d8e49984aa98ec91187e301c4908e96835f49144a8d03194431ca90ef052f0a30945eb5589acfae994ad4b7100921ac3aa1e94843631258929ed25b1ba47e9466e8aee8361d5df9cd4b15236de0e0022fc5a75787ace593a06f887e82e6baf401bde1f97187c3fdaedca17306aee30aaed5c69437f90ac695eb9fcdfb4cbc001c222d509e8b89aed0c21c52c421df9c8ffc4c0670ac58ab168b779986ff40ea64ee13ad0a1f41986e8dcc8a3102e63f200cada71be6a907ebeb6f811a5b5c5f26862e3f76d67ba8883707546c3f50c95fe73ccdf1897ecad1a75c78d0e71c84cf429f522fd030374d46109d8479543af3f098010f6ce17c601a9e10e74ab1fe862c4b4145c6287e42e47b79c64cb188ae029f45a107f36f09125affa4d4c51bbec081355f6c90881376441c6351b44d874ea40f194c3489b1c7134ab601d67a1df7ffaf5a1d26aeba7d0177705b5aee1060b2e847d802787fbf6a62ac9919e21d4763a32b0508b52b99eced600906f2b8e43123664d0dd9e4486f17372c2a6718b80af686a4f6e457f586b4fd5e087f9a69704481c0b054f2ed52e865e7112690e351f259558f8b591ddfb8e2f105693b183927b5cb83014f5da29e95c21edb99d9d89e7a339504e05b3476863d21d7a021023bfdc1d523bfc7a5e241a709fb606db67f8da7766608cf704782891655df6b56f8d35be93992b030ba4457a45f984f6206bbc62149af7d321343f48b9d2b8ac96b056423102a70c146a72b225300d2f24f579d02e0d880e2190115e030b07f048c551154c2fe4634f72c8ad6a8c51e663ff8c0e29f492f41e1bb489c296e802fff322d94a43d97ac34dd464a533eb059924f61a14b223e8287d58f2f8d819413122ca7a5508b1109a9e1997daaaaad818fc99c32805785e4bab16d9337833d5cbbff96a1f6ea4ba9b93a16907645dc7c51abbf1d495aa80c9d8ab55728babe9891f51a6f7390ecaa1fc5c49d614ddca3c0dc4c4bfec7b7d783859f49e5cf90085a9b50a93864f344880f18f52c7732d3b6985bea840728c7e380e951792c0ed4aa2e18b442d87a52cc1db6b6334037b85951ade22b3ef5d52c89a4a734f3af529159e62c84cadd7a0b937da1cd9c0a6910fc647244b7c272398c283557399722449028178288ac97c959184242497248b6a8c3134c53b19721163a579dcac29d847803231ca0765b23431597546272110dce81c08970ee88ec6e2e830fe5d9b4093520aa660ff2f1521a4deb4640b8c649822a5206a929a68c2dda349a90548cb06334f25a225182a50acfe7d482f49f495d212e57ee0366f87bdb6987acfe451a0b2d36f677393c2840d58e6b07bcf705014a1f9ab23cb0e00421efeae936322ddbd16edd3495413b73ff886e61753769b7b0f72a39fc35411c0346541c868f31900fd95d6f2565fc9034a8298be23c9357683b7cf84e8a49b9265b70b6964e49f2586e1fb4be097081b36ae86699db80cd62f1b484f6376bb6212058474e3a68e79d66c08671a6c01a0e4c784100ad1124b4887104a042db1b7cf971acdda68b8fcdf0be1a7a109b37a88b236d1bccae5d0962e9a7f70d6568a0c5660828b20b569008ced3f9726c03ea89244a8c8a48cf0acabf9d48681ecb402e6284e9e3e9c80bf24db5139157bbcd79aa64ce85ba7be818ec1c7096f1de1344297643099021c818657139094571e899307a6a2477694af76a8c7dc4089d5fcf3b7dbaa2d6aa70e92e670001138e52d16496c8e624c38014e16349f4db750ccb6f7b934aacfaa51c822a13ec785200a79c95be7779951d67bb2d34f2d6a76baeceff91360f63c51c2b60858102441c66d509a1401405618158deb65453f7d40e8321435b88f6d44006cc31b5adbdbc5dd22c88c1bb64040a033b3ebc0706baa46303d9e73fa5b91647f01f17c97748f47c835153698d090f19939062ba19ff8e09a5e5af12356158c4a6b55297a9900760c2eb5fc73cf9c10d31110d76a4695f1dc4b36f95b6815f04af082c204ae72b8b5a2105db9e4b72668e0cea8e8eac25b46fb213295c5f9adf2343974898e0ad1c61fcbcbcb4b95a32867c321efd3abc442306af73d38bb3557094e7c279099142fff59fff526af3cb33ff5da2d546cb67ec2b7f44f9360edd2863533bae1d3bb8fb7e0198e35760d6023804436b6e332091199a2dfb6cc46eef99bccb3afc80bbe209d32a75cf6a2ddf1d440b675c1f3d5f72a92053d1408b1d9e0a1e6e94c9077c08259c94f1405064a3b9e6fd4122873acca0020cf3bb74e19158e278e925a5d54b0fe2a4095cce198922db3450064c457a543f1d260e4261f6cca28ed262abb454512eba4234b820d978c09435ffc4b6e2daa828608e96d6a807226a88d8227290086d25b2457767a65ed6b327a5268d5601c553b92b5cbe873ffebab8a733919d8e5b9c8c1f0426c57cac1f259578bdf32f3b2016e29dc2cbe1c5113b03123114ee98dbe7c9bd06821ed6f950953f6cd8e1311d5e338803972762fa5f6b023a68f6bb68609a26678f0d003c4d8d2ab7e444fd33a95ce1d426d1fd35733f27a9cac708e3e5d57fb08857e35bcc98c8217b76d4c883af74208445ec473c36589b7ebfc01dea69677356e113a8cf892df7d0c34e421dfc6b5b138ac4a889a98bf012e1444fe771b1a2821fa6a2bf05df6893c7ab6096587058cdef6fc11984295c048f1f989a08a1498aa2abd8106842693cbfe47306df5cb34fe16da68d7a90cb850c6fcab69b630ea9994aca2e2fa799d634d73ccb88c9348df46c059a19df601f7dadefdff609bfaf81fc4415fd9a8b6a4afc0fe67a00e6b963645916eb4fdb1312561526688ee33ac948cc72745772851f93ede1574ae33087453528be123f36d7e20f75aab580148b8d5b9e26a02a950036822c6818d1f8086f1842ecb6f17d105ec2579a0e142068c321ba0ec3d1d10ddcd6b5516707d97892621a4636f6ab9acc60544e9f117bbb7d99d70962edc3b21628972aec91d30d274d321d72985d4c8d80f518ac9ad1489b41443c6073deb365b8ba21b7395cc5740c6c22de1524339c52f87c8652b0d3a0c30be9fc257a32409a417f95c8906299ffaf2deb70391f11c9bc1dcbf7041401c3e6613b59caa6011a2c30564a3b78cce65a47f91a459b268aabea4ef16eac6176af46b463759e8ebd8c84e0adec98e872fd59c7b79aa66412a843d613bc659cb73224c8efab18cbd4049c315c0020fe25d330085d9b74a1f726e976f61ea9ab8ca517187320a2447043f7d41e8446fa9b661c0d78ac1bb90d0fd6c57783a568e7c96b81063a9c7c4b47df040249fb968e7694b8cf09edb16b0e02e4e98a9c47c14065002e0da90252c73f2a9edcdbf59e73532fa5ce83f2bd8aa95ded7408c18d13f77dc23e654ce7271248f9727fe93e9c0e53d8e4bfcf155add5495557a4d784fb9cf1560bd9635141c1126094afb639b60294925f01ae5a3a4569ff599a7b8bcd52634b1b673861b052ed736075794831c067280acf422493ca5b20d122f48dda7d2a1263ffd3804dc152a4d77fabb8e6cd14d66a81be32dc919d767427abb6574dccc8e8cbbfcd2a80c0e1502ff3e350ed170eda77d2a873891bbabd213fb1d2d0f7b0a323c82f8e09ef632fd6fb8f8241817aad4cd33f4eba8f5ab87138e29fbc6459487691c7df47610d7c22b28f188e391902c9c25c290597b075d7dd770355073db801ee8087e2cb99b5532ce0c610b2d3f82ad1e8037c6d0e41be727404caf7b09b095469be608206abba1c11b53ea56f48e382a56b581385d438a15a92227db3fbdc9d7f4811c248157ecfa2ecf5918070ce2f94b6ed201656f5d32de4a522c87bf0b1b1b1575661d95ab5edaa794b6c2faea109d4b6ea166655f465d83c3faa4623c50aa8e4fad14a367428619b79b9aed8c73bec6cbab4954b8de29d69fae688e2316abc32b8326c638190294d75dede1e615f29f7f76f0089db03feeb46df5a2d94a9b9b366c6799ddfdf55a6d4a3c75e2d34074a6c4ea7ae099dd85e48a40aca0d161615f2427e3ee38f6267217cea046d1e4ee029e993b8feec2593317232aa388d86e57476015800f044ba6b44c61e8dabb89a39c689bd665822c9eba75e32e66e0c0c113cdb28033e0710fda13439246cb6aea5e0a522fdfc8e77c1412be0092ea6be36dde474d6765534336cf582a45ee8c0a9335d1dfb270152388f2b5dce7d1d46e0deed2cab1019960bb8ad0c0dbcda31bec4f145e5c1809784b6540f2c33ab6221e1bf16b620ea19b4b67e897c816f3d3763446e22e7f3955407f541848f79c5d80da3811027136ead09b658d31b0f6ed7a651d2b7dc448968a3eab43a5e0e9b21a1e2c771a6a76c42d5c24abbe186d7f9de28e34ec591c7fa048bab266bcf9f5477ca9b149619e5071a9dede60f7dc09b9a7d0a6235cf152bca865553611db5c778ad56858eab5b3645993307a06b3828060d84a200d2eb74059bbc5071a96d891a9b70c4d9ad0fa1be9d6d7912739e932868baf76dba50284cbcbe91598ef1c469d255fd9079981815be90865202af1775881744aaacf53f4d48240a067ce055507183611de48e247d6345016686377837aeae25663aa6245a10bff4f4d81f0c6c275d452c68c5349de14caada13678da8a69e286c48e6b7c73cce1f6c32f285335608d0f686f0be3e941b79b42acb2443e6c0910a34bf8ea4b7c9903de1f2a68cfc093d845456c9cebb29bfde14f4b37d41ed788ac9b30f1b407c7a6e249ec337d999b041a4f3e693076d9486f59a2db51c5a41b68c7bd91d13a4d4b279a4514c7362ddbceaaa434abfab08346397f28c89050437cbc86c52f152555303a72a1601dc02b301b9afd23de8d5034bef552abfa0887f8055116139dc795a4cbb2d4938bc3013d797379aca262c984ae7aeb309f7849fcb24482fa2f55ba24bc69e07ede46b93f64b54df014cb08a34b2d64fc465be3ad51f3dd43da01836b0c6e0676d7436342dc33eb260fe0b5de439b508854aabe439df20c95399a0c49a0c2838149845389ac4c631c32f61c429f11c71d9de91d2cab14d69ba547d45ef58185e572026126ee355d4435859ee82cc39681aff307d063016f3d67c097fa2e79535b96deeabaccb6dc005c26abd2a6bb349ce81a2ceac54187f0a6264811b577ea9074d5b231ca23d7cbf34c42aca440b19f42a197a4816c85f771e6d35b8aa3e8619342b90c184e39ebb4e203425e149bfd51ad15d138b1c038add352f8b05dd9032d554fbbda9d6e40c094debc48577120b243c9ac2976454c8dc8b5cb440222cead6086430d2074e8a133851c6eb23cb4c5fa2083cff4a1041e436deebe243ba3cd0023c7740916c30959bb0cd6fa15a1f8e874d0876b0023aefa991c2596355d1da39b18b4d820e0cf74ff0478ccfd12fd07cad505578b68bfdc9843b92f3191b9bec7c4a367e5dd634ff0392de10ccc43072531a36aa0fe0379d49808f72f55274f540123dcec7299f8897fe56ff0bea6d812d9c3d3707fbadfd59342c40c2d78d7c5d8be0e6287236536657814b5a5a4e21831c02a9788f75ef9626958bc4ca5428fc2e73d8ac9905d22a3e0cec48cd9130d4f861d1cad1cac3858f969cf9c27edbaccaca91d8ef452b43ec2026ad6b90142f3764e7ec89949b33e0c5649a61ae6f3dbec3b7a3008827b5ae5f6218abad9e183f22e2a76a95c0e1fde143f1bec21a8165ece2fc7828e5f45515f1681940e5fe26435e810bd13e819c310873a0bd57b8956b48f6c41049f3d7a4b4271d413871345497c1bc38a609480550cb7224efbba59d37f4c4a962d46ec69f2a8a6857770c61cac59543bd7b233c006a506ce526b0e0d6a629137ba7f0456a3eef727a3493b51f388ffa2f6a1fd6a27aac7ae82550ba8bfb41ae5175e38a2723bec251b3bf2a54d667555d9aed14b065d412095847f7f4245ddd9a6d314e2331e80372f27f9fa99f1464b847a4ec90394418e93d0aecfba2637b523a94055c34615923f354ee665469ee60a9f11c3b0a9e8f094074deeec9df7733d876ca34440d5ea15fa8a2a41f917e4e473f97cacb06c4d88e3fbf1ac47a8b3db7edeac484d43abd7a89bca8abf9d454d2e767cb1180737df3b9ba6e87b483bd59fa32c78d6486c2de3a45c7333f5e85df84e920bc9cdca219c70501d40989e277572e51c343bbeef4863aa9604bcddc0aa0bacf9046bd8854e50c1906b13b27c64d8f313cc32e1c058e2aabfec84b02539cd382bca07ad9f56c2c21f34d0e1fc6f05580a72c70a20727577493cee3797dcc107bb62ef2ef1c0903cb7f82e7c77d85624039afb91c743bbe0b601c57f5c9d62436f71de81d9aea2302558f9bb5eb7c49a87c870e86bf3e83236dea67a2b61da80da7db8b6abce4cc1c84f6541fea8b1085beaff9941762512f2037e381f74de34f86e82e3388bbf7527fa58b7a45cf33bab99e866ba0725a03f884bf95e8d06b3ca7d5fe7c039228bbf292842bfd7532fde0b23677c97203cb3dad8dc664cbb0a4f8091934da13abef03205df262d296f58d5857ef47d05d534352c6f728407f1e9b88a529a2bbb5684327c8916772314b47e3a1e7f3592ee5fe2ea6bc73c09f2a7968548af7c64b701e745229b72c0cf470ed6b6e8e3f6a1c8f8ed9a1fb8208d393f427c96252f83042166a3785b59d809873a614b498e785d271f69a05d947221e306ab004c5a08b4d954b276b70f84f8ac7f255ece70f1b2c3c6b22dafcdb94af53fd62c2c41c2e72e30978f5cd2aa6a00e83b544e85614ada0bbeb804aeab2132cc5f3c18bd3dd1baf8180c775d30d58ee94c178d32230f22294f9acce32210b975a4f2cb640573c6360ed12d3ab22f99f9c08261489626711a98a8edc2d2975a81b98aa1baa932dd0970b5df1da11c5f96461c2710eb15c56774bed970c1f94132514f17ff4ce16002efc9aaa01c11e5af3f52f1b133809df9fe260ff8c6a36f1a5a58058f712b55a5916a8e0a50f3923a6e2e1776a0e8e8b444e372837caba9b85617fccc23db5a018cfd0806581bae2fa1ba2b0924f1f8fff5372bf04b9e70ef8f476f0f97f865edb64c827ba1dfe766322fe433eaf339066235eb42feab14114a5127119389b6858412345414d62dc4ae7b52e149c902e073d8cd42f0a2b7a8e5f543051916a7f1a436fb08db6ce91fae60caabd2c597fad49760a3718f9bf24d3c991566bf57f3d74599f7ca9d9f9921533452f2bfddeb0ec7793d2cd2367bbf24cddfa7a5856c98736243566e95e931071421efb0ac3e933a73cc933c48ddc2ecb696caeed43688527b9957c54264d2c702255cff026c104f797faaf50003e7fe000b5418e02b7bde3501dc7f8c9031ec16e2d3764ee46d015b127cb42b47425e8ea517930059b581d2da569acf2d4d5547db6848fa3d6154dee209a436419838f27601cc28a0bd2b0d2ab50ebfe14d2e260eb3903a265d395990b42e704158056c59985f64f1e01fdaa761afd26559b64289e18069e2fda8a7026341f074cc3de8dfe34412ad0cc94e968e380bd98f005324bc0c6141ae231aa85c535907237674e9f798d0b9ebffab46fca41216ce0be93ad47dfdcee1d4ecfb82c2655e33b284b0fb55568d96aa11408cc637613a819f36b1e2ea6617c221cb77b2ab648475c4c7e6afd27314f1ffe034f9cb923cc517818023cdc7812839ad4a99c0a711a202f32e985197236d34903284111fa1e0e31cb1dafefc40a3e158c26f52d685e99faf93e9a1c3ea0b8fd0a2a3dd86f6c36f848c757e5b663cfc905bb1148308690be30eb57a2866ee393a5a6ce8b4ce666b080e14e569da6d376e8f527523340dc03a84f589815f27f2f233cc8f074a9af152e10ca787959ff342a01a48aefdd1dea711cc66110124eb010a9979585c404a61361d4a61e3fb30c6558665821d8b92abe5cd9e709c0bc3e89f50b3198f98907f330a56f0b24296700cb697aa0317ad7dc2fd3b6ec9f23dcfb7a5ce5163da31e1aba20a6ab91a79f24c45152244c84a37b2bbedbdf796524a1939067f05f7049a5b3ed2e0b25b194cc07e20b1d34fb05b1b64a0d5102034e02067807bf00d97e39100d7ed50c8949ebb1d0a81d27d28d9368a2c89527242a32435637b20e428252224051517f616356954578a03cc9e9265274941216bcc913488540aa747ad03a69da48656548bf429aa83bd03ac16834d0a65c64a0a585b8450d92a34092149aa646abff063afc9d115427a050a2904a8a21d634ecad486059a1d474c922ea90a55bcb4768eab3446550a144e35d582375ac03813c4838d230830edf1a646a385ed4485155e522957d2234f369b12f61722b50fa052271e3a706c30192997f083342844b1ddc4d952bcb694499d7c49df98b06144d9282c495b30523b12c2c253aab5b48bd0d8328080504b01448599174a58939659219dc3b5bbb4ec315352284c5220a9ad189282f13165841a0b1b3b7eb8d8573f56b09193baf09566399325cc2ec345ce560d69b8db902002151720493a8088c0c4c78b213e8cc2c2846ed2222c3419b3b59c90ae60255d7292066b43b1da58829cb023c54a4ab1c4a819f56031a4477053c1d95f69c0c8a46450483fc0b20294cd42c93e52642a2aad724a97288d302385a7a3aca714bb8a0b1b8e9a17bab2c0ccc8f2444a1a262ba53a525321b5cff438624a55d4d86f9c5a6c139c3a68033664931e9949ad5268dae69617dba4f2630875b5cd58dd804abd386d264b2e6a58e1e16283c0a3288d12a6e5cdfe208d8c32b51760520fb46c12a8d018d65a5ced20564650a90ba79485251e356a20ec70d16347d1306c57bdf19226b551664701b3a3b4c8a1920a198ab97ab24abf40ed30a7dd6429478db4832617299aa6a25a51580b6f94d26c25654a0093bed0b26750d9488635e0150dabd40754cac349ccd216d6d84f74b848a3a328bd11969af0666fa5a9b928930218355a9050e11a5e5ded252b12a0d21a4e29084b736a20e570b1a572146dafb0386f60a4497f94f1004c172d3519543699618a7465c46a73814a4770aacd58d25143cd082e9846284ad7ec326c878153430d0a3346c4a46ebc503101c894beda2da7614f616cb2db211356ef4326221ce58aa0456d847defbdfade7bef2dd11ba69643eb1bd8ad2c41c00151cba1b50e4c77cb9c73bee18bc5acd135eb9cf1fd15bdb7cb75f96163b209d7731d3f315163ba266e372e1faefdc06317603fe8b087fb0de8f76b38f6ca0382c7c3bdf17523058ec3bba4bdeaf4dfe7192ecdd8506a2e014f4d07e7c11cc406b345a44d64eb6e874b47db6a9bdd0e9752f455976eed383c20708f9d316d9d6e874a5f94b0f415975bd0d578d8df1a06052e84dc2893b503c80744544d52487a882173e64a8b5013022538bb01bb82386096a4200180566c94aa6056704786a2e004c0a7200b368d902b674b01c02b4398154c11b46d46d8d042d008d0ae8073046328d084a001805653820d004e8972f12548104596a09755a226380020d675b2586a826058244de11b0292a0e5c214f40034ba28582f984b1ca318675e50b3254e084a2e36d10c200b3a7eec68e1ebc7f886c7d5b25dae0fbbe6c89db25d2f2e8d2ffb420a50410f82fcb50475c0e116ad288ac00be3c22163c1ac979c192ed8256dca04d3c4a811d4c0038c6266491001c026738d1bae2c25ac70442b8b0d25250e40e305c9093b8051a294041d4003766901f615b4112c005084e0f5320c764800908dd572257879c01ad052e94097af3363b2c844f1a89104060809412c4f453752a00a802d13e4624dd82aad863ebe661421099141638bb68022e19017a4945678390901b4686e0fe09595e0030000c4510257108237738e5460434295ae1938ced488845778c02061c697a411ee1637f60c093754340982090a8003108420038054f78516823605601088924dcc8fe0018026d0c681006861cc20995c22562b135d01a9c14318e412638a8c23e7035af822a5cd8b242f2018801b78dd200597ac99fbc1b551bea079d3630bf8c34c0c3535295567bcfc5021a5a608993740cd264993a31de07d7226f84404d07e81139413fc00ec015e157404b1042f9a05cc098ec021e21a6d8aaf45d1b4265a765184318324c7172a5251e4b85bd7fa96d758271d5459a103bc639884095609460014130c0b4209960094125c4185a00c88c585e0a9024100af9435968b0c3106c71b28ade1970e7c44a4a42650946e6cf941c54b1a13c2cc0996c02b4109805227046f911cd0a270a99cc0c207d602fea33fe8f6f1077fd0ed628f2876b570a7d5d4ed504b461334dd899156573f73f93bdca3dff4d0cf8cde37752cc05f92e8a849f4c7b27cf1d151d5b212f8c51f5599051e74c6df75f149ae33eeb38b96d616ada97ed26c02b6adb9d9ebc56fbb5006f01375cc752ed875ac6f0dad155d5a406b4b38bbdbe1504b9b2897db124da6bafd12f7d82193a93ea4db479b645d9e1ddca301fbf8713ba98eff7784e02c2d517677c590c8d04a5fcb3e7ceaabee763865ec7638d4bae212ac25402ed2b5c1f464a4e7b24fa0b58920fcc31fb48f6d27c8b9820c36b040083dff05346027c0b961d68a9e7f0489330f97c491d5cce4864bbe2cd9ea6b396605ad03d369adc990b1d2a1862b498d085d4fa2926a3f4d6fbeb0288a1355454910254dfa8aeb2b4aa60bcb664b252a4af01a436aa84e924325323a499265c40ca0db215657d7dd0eb1c688b161650fcafd1c62211962791153fb9231e6227211730813344f8e41e9342449449284ac2454324f978a651dc4a91c5e41654d84224c080a493d720077f864a5b0290f6e2cf10863a4060643b7c32b1857475f7e7ebc81918bce26163396d6d616225e708f06ae3168342ffbfd6c943f23e5cf36700f7e62ead1f3e726dc23ebf9f35355cf9f81e42992ecf7f116de82b97057121a3d3f46837b6c5e5f60e3d8ef631bf983ed4a51c6870840bc8c30f1b1724030336305d515145d7cf2e327dca3853d3f8e4af241cf8fa7708f2692c40512fc81cc1245ae2e2f386160188855e0237d9f6e14112c363d6b45c19273bfcf812748c0a448bcf20e49165356dbb2438265227122db1d893a92a3afbb1810c91123a316c9b7fa4bfd5b3f0e8b67cb9111286066cb06d0cd94d4151f2ce328eb4b981e2094d10124773b3ca2e4749617c0e91f574e493744c0dad1a2298665f2a24912361d8450e4a57d4871aa62a527f8a60508486f5ef4204aa1e6aa4a9530089a353d8a388915b992d6aa18013b02030a946191a86111a5b7621faf7eaa451916d1d24e5f04ebe92c713bf9d6046acf158bea8adbe8f8a6da3b917bb7ebdce10a63bfe27d84e267158de18ccd8f71d33487eaaf348176fdb83614455173306789db03b0ed5b337fce10a86561d98840c988e49011393a43eb76682567ce166e04092b37a449922bc84a2e9b9c728e5aa3688504d5565168ce564da8950d2ba33d87852aaf994c8513ad3a2176565931634d5bd6edb08a495ab463dd0eab8ef415b745a8aaaae2b1471d655975e314ab58a47a9f50a5428bea0513c74aaa3428951951d6ed900a055a440c39a4d282a2544c5a18c7a42a51690982f12909aa8f9fc3e39723bad3dd368a7b2a237dd5615d1d69152aaabeee1a0aaa202e5039995438a85cf47517c7de004192b42f669926922cc17c722361b146e08ae470e4d60c1f494f3176ac396a52e241d69a42741c29707c60239ba6d69451ca71ca4c8947f349939c52419cfa429638dcefa6a4f49547e41a4d2c9d9dbb6d5cd2bed2a4af162b6d3175b537ee71dd0ea79c7a972d75721ed3af11794a866d4b65b9ed29144bb5245c6e481c33861b41c666e22e6859a65d8660c18d7cc928958a3e4a9dc3e146e076889984c51a81c31ab2340eb1410e91a187525fbdd6ed502acc19c714f104bd9d8d00ffce66abc1f98bd9d7e9ccd7e97478771fef72fd668dd14ebef8ab09b48fafe2786cb46bcd7123c7dd54ab5a35e7282186c58a719e41b6c53b6b6f351c27dee1dd7d1d8733087ebcd3ef87d0495258a8d579bbd54329a47b699cb6aff7738dc9bef7de7befbdf7de4bbb8f3ed56e54e007182daeaf1743e6f860e087163630986a9071e343dee86452522749a64e92b5a6b1dba194073aab73bfa8166f59bc697daffe35f784f25cbecd18a362ee562d4b75fc8c6ef1e24caebb9ff91cef8aebb99482315178678590e9585682826b77f7afddd93fad4cc4d78ab36c6514041b548d79f771aac63cfc1ad412f3ee675031a828e6ddbfa928e6e1b7a91bf3eed7d48d79f85375ab37ccc34f5371987779f8656a0ef3d4c7bccbc3bcfba5aac33cccbb3f8aea0ee6f1f013dd131a30e9e2c43b787731c68f7717631cde5d7c31c618f31f6c893ae616cde9784860b0c1bd57ecc201eee100efee06787735c800f764807717830a488c0021010feee1b93bbcbb3dbaf2da7bf1db52ecfbd867a4e202c1e07c79f5fbbefb3e5fce3a6d21ecfb764797c31e7c3a67f4cf8fbd396afd2b51d7dce7a3cdb88ca3dce416ef4a3c72fc22c799635c0b5bed500b57cf73f46bd9685fed300c56cfaf33bf10dcc799cc85e2926449b7f74883144e62747b8db892a86af4abe203304ed8c2425f2f9084225157ba0523513809c2c4851c515abafd1295700831d257eb7502cc16f083be5a343fa628208ade7d2032aa0928eb5dfe337bdb81ce30391dffd7c236da81c2e4741ab7a9d8b3d9af447dc67d3e1fb768ac97c957fbd5ef83f57bffaae8f7ed35eaf7ed3deab32b169df6adfd95a8efecfce85f9d8cdea7f6e9dbdfed6a7c4828da5e67e343c2f1f6b6b7ff7fe34342f273390c7c485866780c6f1f87cbc08784a686cff0f66f370d7c4818c3fdc6f121e1b9e1716f1f4537f02121cae137bcfdb2e4c08784329de7f0f6f5eb77d2e143c2d9ff8ade27f73a6f375f89fafe5ee63f9bf7f00375a71c1f12d23ef7f673aa8eaa312f3f07b5c4bcfc1b549cba312fbf06f58679f933a838cccb8f41cd615efe9bfa9897dfa6ea302f7f4ddd615efe54ddfb57a2beb98fc62dd7bce428dfb7dceb763b27d10c6b2ba72db8573bb4e2d52f044097ab421d7acf00b21f4ff4c7ab8a9fd244b137c6c6b740443fe79327724ed39c8e433fe1f9a37dd4f66bfbd93ee52b397e8ef1751cd595681c63e3a3b19ffd49b39857fe89cd8526f48f5fb3205b9f9a3a53d752e7822ecaf84a3aa53faa56164bd113e5ab887931d572287dba931c463ea639cfd9799e1851db3bbf27be0522ea22fab33fd165183b19bdcf4e717d8cdee71cfa09d117c71755fb323b539df689b29f5b66f43e5b14cfdfef73aa6b908c823bbedd2236ff59cc5b7ffde4abc8837017d3b2cf744767bff44fecb798b7ea2ee3a8858069f43e3fa1f82768bfb9d0447e71448e95a4ca61e43f3d0ef495d6833007918b33683dd3f4eb8e6522d7a2c61220c3c2c2daf48c857bb27894bb75b18c5bca922ccb922c4b8d05f31be56eed1b7ab1a26c19e375c18c6430012192b5e505f7e0fe559ae6cdba5af8c379ef9bd834ff8ee67d93bc26c71dab8fabeea4f6f252215cc9c73fe42dcb27cd32f6648ff1bf1dc5e9784254a081054c78400552d213eeda52f132452a5c38333175fc63968f63f80eb790faf8e658923fca2c28f9be95f95a2cce742cd07d7cdd47be0e759167a0ec6bca9714a63e41b7c32863bab9dbc13b6cfee52b515fcfd732089c5ce7f20b763bf3cdb77682d8afa76eb375eee337559dfbb984cefd5d37ffd4b97cd75fa777fb689ae49b5ce8de12bb9e9b9c6f9263900ccbfea26589d25af47564a67d99c9853e0bc932bf607c6b75cc98aa63f20b76bde4bb1df4e22b51b0f4d89f7fd24ad4f2a37f96d041758474b7dfa375fbe547e0e442960b5d59e625ee8f5ac7f20b7623ff1183ee5e6203cad313381dff393e39740246bbe2ff906fc13eb16a6d049d7cda2a7e90e63ffac7bffce77cac9e8fffd4508c683d5a07b211ac5ce33f452d2474bbfe9356968f65149ce6dbd86ba1db4fbe72a16b03ba2fbccbefd3c0755e27d7a141b9aeeb721d17d78dc1bb9c01ffcd195d75513da3ea6aa206ec18f87ea1f47de40795b627b9ceed66538572afa942b947f6918fc822ee5ba5759a6ae5745315ea305357cbd5cd97bd2ced2747d5f5227514c55ac61d2f1fd51fad81627fe698daebd04dfe831fe83eb661e38457c742baeba06c043560d7fce8e8aab0a90003fbfa4283a68b76cc982e7205f7f8b7afb5a82e8e23571ff98540fcb506d4baa39edfb6b48f70cfaa43d219e9986c4a7bd5219de85a7f50ef376aad43ea39007d005b3d8701c0e6ec01dd0e64b7cfe7f38d5c5c4099af444c7d546d2f571e1e9c2f96e5b25c39679db3b5d65a6badb5d605a46bb9cd68e7cfb6a22dbec8f8c5bed8cd69a3b1ef5b8ccece27d51ff3cb3f4d9aa5a929ae0fed4f9949e3a6699f2c5527da9f24ed57cd657cf6337a1f1a8d8692b31efa9ad4ba87be8cf7ccefa14fce66a60a44d4a3e93c7bf34fe14c737246a3892f9ccd46f2652764a72ad441af9a8f31a10edd344d717cb477a2e79e3990fc47e4cf41f313c782a7d589e7f7ca4c5e6e65a6ed05faa89ed15e3f3afe386abdc5b32c33cf65fedef9406717f7ef8b24c3461253d31390a8292248b0b2b4a26c61d9e2856b4c171abcd36f7b41b3bdd8e2a3b39f3dfaa8583ef9a8ad68a32fa25a86a2e77df249aedf2663a35dd46f2bda628e42b59cb618dbf67307f7ac3dfc3bbbdd4ea7d3fd7f2e97c3e170b7db6def8da26859969867dfe87df44fd8c3ffd398675f68c1fd1efeebb4b3b3dbed743addffe772391c0e77bbddf6de288a9625ef6a8d7957f3218b79272e16639cbad425f9407cc59ad414a05d93e69325d0f8bdf2817e4c2632f6e39325de2af196ed05b955e22dacbf5eb6a2ad9fb4bdd8a4599618638c31c618631e7224f5f82317b5ce5c664e1bd2c67f9ef77780acd5ba2c5174efdb0d87cbe5fe75ba1dd00ede5d9b959de4cc9f7b0eefecdb823b3f50ef7621b1eb17baddc6225fbef26c90c1070f600ff80307b0076c02eff0870bece00f1c600f1a60402284043cb616fbda8a76fed50eb74475f1ef672e8afc42c07d40f777761be834f80c7218e02ab891d823d0103e20098a563bbcc2c47bbf9e73c697fb82f24e1739d840830c30a880c488102024e0d9d9e9ec6d6775bcaa4f77f1ca4aecf4fc5af5f97cfae22ee63eaa421dfa4ad47b0fe8592cb19473da40b85edd4704ec3e6b23b0dffb1ea4bb8dc59ecdf8509ff175a8cf5e97b7cfbeaf7bc5423d5ccfbd9ffeace2ae3e5323e8360ff008ecf3f97c3e9fcfe7c3eab6dc3ed6c7fa58d915599c40b8fb7ab8af4e3b3bdde770b78d9677c862de7d61d0edd672ab4b74df70b9d7097d3bfc421d3ae63b7887db9ca7a85a3d8ee2288e228d8669220d8be38bfac66831f2040d3db7ecb7ff040d3d637bf6b4991641ef7010771bdeea70afe16d2ec35b1c86d8edf6e7b6bd456b65fa33bedf72fdf79d843a74fd3b3b1cc4dd06ee0bba3a1d8e1cdffebf869bcb65e0bea08bc36188996fff76bb9ddb867ed0a3684df641b72cd3d907dd2ed3e1433fadf3c2cd7d421d3aed836e9fe9d068b8dceb763b1af048e3dcd9d1bbdda8d395ffb15c0ec5e166b7dbdebb86a2b7b2ccf0f8be76c23dbe1c88a863fc5afc1d2c42e443bf1d52f3df4f7c2d82e443bf9d398a30f9d04f7796a588930ffd5e161321e343bf1c0d1541e3433f5c3ae3bfdfcdf6fcf7db226c7ce8b731d4f8ef67541381810ffd500d37fefb19dd4468e043bf724306fefb196510b1810ffd34e671f814341cfffd8416e8fcfd0d8f13c1810f5dbe5a6e039200a824ca5b505aead4d488000000054317003030180c0685621c4a6210cf866f14000974ca384c3491c7a66218c7400cc3400c00000000000002200cc0000c04318634f801801d731a66f8efa4157416b8aaa4bbd8346d1f9dab767457483e5545cabe139168257ea93db5d49c93eb5abb4303c8f712a6188273ed29b1422a45a641555aa88a48f733fb6515a87a15774f35a871f53cc7fdf18a26a8870b3db1dba2357915bf248185d95dfc002acf12dddbdc3da43a635675ab3688cb62cdb73387094e395e4eae116dcff0dfee330a186a40c71cf5175e43a4519035410be0e78a4cb31278900b99c4390e137f9759c1356b0b24d3b713119fc09bf659263b42255dcb20c75feee4fa11e643b4d43f8508cf155874eb6e4e41059154f496f6839bb20d23bfac4081a5a81208716596161e9afa085202778153d289bce2bad39e5815690dba5855a135d15ae32f31895555d2991aeaf1e54f449b057193202ffc796ee84416e15d22935566de0007af32db0503b465c16c05c730c33fcdb2c1f22f87e02ba2cd3894b8aa4ab1a4aaf97d8498022688a211a35b5f22f3d5fd9ae3fe88c2e1248c812dc84b201c7870b6e7233b411f1eb913547861ae6b68a4dd9e6f8e7cb259a315574fb59288e648defe6a9310b80b94b58349bb725ea4bdd46e99055fac974f9cd51459c79fb5fa2555614192769ad5c969ce1afd66adaa629a226c70de4c33671021cc6b3a0e5d07761d7255f770ad12abfd9ea6549dc535da1ece252a4823926f0e1b171031765668a49be48a60519c809e937301d339fc65b51982ce164ddbff9d54eeb6c9fac37b021ab4c11dad4ee90cabfe316c1e6ffb3e2f857e1cce0309a0eab385b0798e3d04a1e22de4a5f6d830cba89a685b51f0f398b3fcc9cc97cf2745570046a4a0b5f2c9ee95b6cc53f7a573b2083e9ef5c752987f148639dce2a11d50e9992b25a2699b6d3d1e7572e0cc9c5855f7482d04cd1ca6a02aed2ef9cfeda7377e63b2405068387b6f81aa3a71e9feaab8a2d2adcca30b113ec4aa496898f6e3c139755cfaa0d5047dfdb823e8f2d7a9a1c12068243bc702fdb513c59ed9c68509f4eec5315e1de7922a88d7eafaebffe4700007d05ab10796eb9be21c9b2ce5edd8c800aa8c99daa7f39adf27490d9db242147de1bf23ce2b85def2d0f0fc96ec8f7f6863fc22ffbd7777d0c73ad9041eedb9b977f8e0b31df7cf32f3f87a6755d6cb39a4c6a4f9a5906b0c7f4db28d5b0192ebb05e50bfb3b8f94c8e032a6ee4bc08cda2dd58f9b1feb08592ba605a03c4536fcca9940909488be4ec520c28fc47d05777a5adf4fbe19f5b7f1e0605c6512670fbdb0854480e5696ad67e18e80e9042196eb2a0cb3dadcdaf7619e5294c4b792459c49a4629506c0b3022201e681a8da69646781ce1a14c5595745988bf441fb66af6ceaa336ba209b08ab52144bad28d136a1def5bc317f64d7c5e0330e0e7cd42be58abf89bf95b50638fd69419c08000c2196864cb037a6f0935d747d7ce6bd803f8f78c119ca9ad618ae1fc78ebe3a9e6d45c6c19f5a4f20241261c1d128e79465a2caf31070ef22a5cfcf59274e32a6348decea4c7ee3ea478c8a4ca6c409a92eb55211052aec2c2a871a120601c1649350bef50025a3348bcb35717f493ea3d2f560c64a038149f0f6999890fea31daed5e28b4b6b134ba82b126c6d9b71dbe3270040f9814463f8eaa09e499d3675d64df3ff60a8b40333005290cbc6919a6ae5444c12765d7191b4991120d0788d46eaea9a15e555a5e9862bd6498fb68c028d426ebdce282906de9190bb59c9527ffb3f009c907f336112d094548de95ec34ad53ffb906c450762b6e6fb7e916e53e723a90fb073aa033c6b375a020bf3f9734b89c3da7c7d6d7a1da5959c89fde09e1567aa146788f84311a3585e2bab156f2c06267939333b0b0504ab4b7ab2060b5e520e8c85fff744241a8d79018b04625daf59e2bf8cdbd11108c2579f5ec0a8455744119d480e0734ec67bfdc33f4d6a6b99402188d8889d1ad34894952c9366649df1da3e901a5b0a6e0e63282d621a3280016d174279c84d2963f7b3e9a38c8d8990719a42df2621949e4134256f04744cd0d18eb23c866470e7d8badc8153f55af93c2e21fbfe104c866c48663b13d749d213c6994aa3314958c8feb990b2bc2c850460e99b358112db45f7289b6e1d7d40be0b0b4aeb9ecb53797f4d1866bf9cfea7b7552fdbae05427e781fcaf7a49b46dc57c0d4f13ff23516cb146bc903416203d17413498580e4f08883ab2b76421fac17099f19bd13e11d97499074a1ac811165d2b13c7b2f2ce6dd3a16312d80ee72add73a506bafb155dc2902e914c97d8a84b48d52531eb12cf7509c32e49472398a79fabe67cdd862e47e29ecddc695b1dbc1bc22b5af5310b1285c91bc4e806ca60066d54933321e4dcde8a285e33db14152f42fbc1b08019fd3a999c737e02498af7f425694f9c12bbcb8cef19590c51096b570e83e6cf479a225daca0f46c84ba8fa6bbaa73e08b68f628f641d3f45a82269b60b32c5e22089e0b774191bcdb7dd4bfd4dac20472d0d9989fa797ef7526fd7ac70b94aac92c6dae8b0229595f4bd70078c5c5832642219c0e3df26a0807667078cfb44760600a96584dfe45fbd29e0d7d4522b882e007cc32ce1a0bae7fddf845cf3ed642f819f0815d634155514c3f6b74202b3d2aa16eb7a7279a56a9ab94f9003a09e5f7fab162f0f4a319412189acbb9f49fcbf8deafe2cd1d769bde0c6aa8a06d44359ed21b88b5a5d3ba0d934244bcffc2493e3541cb1e14ded8178ad0dd72971857b3c2e8c81af080a2cda5767a4b47e6c2c43a88cd5d19a9ee65aaa2bdfc269cab942380fa80e96e8cd512d262d8143ad56465b6e5bd8c7f8ce021149816d4742f79dc1971facf03ea84aa61a27e5eb680ca94ba9a9800b393b3f4f30c7472afc5323acf7b8179d0d51e38ad9d4b34c5a240eee5ad4b33215c470fa1a361dac3b261e543f581bd134d0455777c0024586ed15251cf6ab3c62dea4917259864851434b9c37944de24f984ee113ac2185b2444ed564433e21afa390022a449115028885586b21147421b9be10efd8bf97c044137695b03452d94f705e38ee62aae52ebc0e7a2c31ecab89d41c31dcb3d889af849ea64cb8c42fd238dc2f150f0f8fcfc4a42b2aebc548aaf9912966ed9450c84aa65003a3938e4b939c2a4e43057e43c81713b5e9a06ccd7728e4c619cc962c7ec49b2487c885835b127b2a0a243209bf2dfe2e1d14d1b15055f279015a49ac5fe761470155958632ec1c4f08498c85027b9f4f52446d64ed848543fea7d927c85c882170f459a71cd4768bf9fbb1b0f9c0211ac769c3c9bce09ff7c0910206fc01cc845722d6b30b62f54674b51ef816175273a5c7c12da8ed122e5cbe6581cc40fc2c7a6a59904fef4a033ba5040d429259f68882f621569b0f11124c4258e8c4c09b5be4b6c353db07a989f3ce5ecaa99a5baaffad240564a366874df52b81bc67327cd65f20c5c0392ea9c898009c79ae31da23fde5e4dc9ba08bd5c9843e475a5da2894512b0b3bed2fc72095c6751546fd8f4cc0a7f63eedcc40c6d7b996b26f3c6c61f0ec2b79ce5dfbc538d992a77e934e7abca7def7ecf9882734675ed2938edb9c1076ec59e89ea19319edca92aff8101f6635db1b9d468a85b636bcd658f5a95834f575c62ee6b4ea0b9cc981e765c569ba0b95c971226dc5bdedbae2405dd7582ced23458b7c28ba1fd144756ef0e6e0491d5161959094631d0808d76dd5bef7424d74cdc76895e2f11d4c515a3fb53a2ee90fdb7d0332277c88171bc8e38d992dfc2fa7c1ffd8ff85768e9690d54b59a7cf7da6859390e5d1d4e055abcd697eb071e0c852e88af369f8f7943f93a28c81f91459efd20078015872f76e67c08e601e966ebbd2a368fd3770648037319c043f7d59775185559a51494062c392f7430232fa6fa8963f4272ddf2903f5be80e9e21e7527483dfc1848fd2a1390d8d2dbd10e67055e3f3b5a59f2621c60fca51c8f1ad00d61d60bf0d2f52a6fd76b6bd4a2b7a529ef06f42c55750de856890482364f0ae1b8928e28cb651046f8588648517b82b92a629fcb2b523095b5fcf63a57a5112ade3d4313e6d39eca41239fa4b6b5903b267f9896cd49d4af2532093938d2411e57ef02d00c767468bd3d75c7b7834a6e45858009767634cc0d543e16ee0e180daa9919402a7e2668bc894905c91e5a93424f893425ab0cc3c598e4a03378b45d9de1ab9c4d9b033b00166fbb213e5e0c5382206e5de570ee00637869545433c3732e13089d59fa983e4b0f8c6dd6ba8e5351aba1b31dc47a33a05e85a57db7269af258d0b9f2febc53551bf19aa59b4db3202fd29756502998be46090e51af6c44bbdb7462e0d5087d3da95b65cbebc91ea9811f3cd9f09b87c43cfd1ea406980c87c11220ecff3d1b6154a8db5516d64c3090a70c210ce898d921d089ddbbafe6726b3f464ac9c8209aa9fece890679dce64c41258ba12bf6d6eb98c735eb006b261504f6307019de2caaa0bbf1f823372f1374531b1864b999e2aa000f1cfb346b082b8557334e9398d8db4c3f18866a03a83b58dbb95a423bd4f6ee5e2754a5634205e544f74be76298de9e07d644ebd24c18232e7677b1dcf4b0334dba0578e27f91b35c8d613cdf6c8be516ab1ed0d00e9a5952ba8996ec55381ec611c8509045a84be74d5335391867df4db41e58a9fcbef4a0dd725e7cf5d541f5041ad00c3c18df08001e8938efed73345e54f906214b16a1cc3d52af01d3f278f45d82952ccdbafff9be4a1fd11c221d5fbd95096b363df6e937fe7169fc873b44f44b8413c909e6f87c5a61223f2b2583c8333b7e43d6648fde4b33f03b7c2ce5329901b8dc9bf0c4df1a139dc834735665262f2b1040c30df3d8d758b27ace2629a36d2f42035e16b0f367e85b4531bab87226e08c3d3090a620a807fd1a0240211beb072b04a7a04aa6cc841de77fd4bc750d3404c10c736420ade8513c4ad2825fc34043bcaf57acacc99a19b05517bd2f63341a1bbce82ea78818765580e6c88478ecafbab5d2db8b22ef02ce5fd514342c73901c8c3a96a6a3111445884a1432352b98d46905b73b919970f5c94e684c625cc352345abd0d05fe286c23732d11aca3301144c6bf22d15a88fc768a1b36d6eac3f0844f9ac9a4c26ed13be402bb23f3ee55aee76fa8f6a81823d4f4d0c27ca7aec6d03b3d7ac063d73f7d7a1ec7d5216e774e95d151c1083ae394ecadbeaeb2063c9ddbf492519330c16557a3ce38dd3930279b1ad6568f4f62a8ec34f91a43b33a83dee42a370177457db54739fa40940f4f388f1c4d15662454dbcc260154627e77a1c6ddf34f1a574b68dbdc5b1d3b1fe487366a07f6c4c1c54b3b2bd82eb4a48298f939391e07949aa222c0d23e5afc59c4887e033745eb93ee887165fcd0984d749ccba9c941200b10e3e865cb8810a9b6022c97d59d0f8dc226b85b402c5648e58a12f99295ac29187d14aa8bf38f527350cac1d63e5cd39b064ca39f756d947f4e32c453c2146b28df8bfbc048b4ede1712b73ae37474b0c9edf614bf5aace8a4903093b0dbf569ce7f91e6e1fbe768c459936a55644161b6e58d3cfae65a80b133a151e0db5dcd9f0cc4fca8b6e77023ac2385dc407b509920162a99493b95539d9f2ca8f66572e99d52809393d25165c90fdd12ccc9b5d1d34134871065a0277af0864447ee3de0959a1877ab5f3aaf19cdedc33d5cd6940cc319595c0580b11aeac6bdeac1a68308f9f09582f38adde30338d838e3e8fc07c836ee686d46f054ca115a2a330035d71f686c6ee1555e748f83459b036bb505d1b0dd754bab03454d4e4ce8e5765c8c0467ddae5981b623a3b112de1d5d6fe6e1ff7ba67cad7d8b5d184d6aa82b86a776f3b9c1ca8351da777f39c774a376fb8902c6a862708b3033163aa617b2b966d8343fef3a942410122ef0af5e6eef1122601f51636e26bc2156befb3d259745a6636f1e6d1c0579cd78035d68e8673730e511a6f28ed75601279fe006b5e6b0751ae80421da6918b615a598692358436f99385cb5ca19194e5f8c8c9465a1450e7f9426424d874de320a5687300262364b1839fc7f56099dc3df2ba5b1037ccaf04f77315faae63817c179c8b5c92659668b0cd00eda965ba1b1d0dc4e69c16fe83d64b01fb5791babc47f683280e801c8e4de889c54258ac0b20ee16661d3207bda4b082142b51e62edb7413c5bcead4125377a74941e82936cf6003b0d50c89301e7206f12bd5126a496bdc68143403574e694dd4ca5aca3029743d2cd2c0a57efac178d66ba1b1404b5725de8dfb85c3ecb90b323fe21fb8c69962789b237dcacc9057ca074ed308147eb41b34c0212d6d1af1a0b9243cb94ec5a803b06ecd0799251ea36a06b21c02d21811e9ec199379d83a7d196dbe5ec67acc00752501459536b4f669a3d4630474b512d40eb1f0957c50aa4ea4c5022bfa92d81af82737a3e43fbb0528d02c26b3159062d6608940aa9ce116723ae60bb727796165b0326d84a5321d07c52d9f1c536c5b782d3c11c64d7ad75034709af4607e443a9437785d3b9e970299952d57e5ee88f408b8b4a5e458ada898db3eb0246b5412cdf58655cc23c8b580f30c70863ea460652a865045e50704149e2cd6901e64814478705f14ec5d6be022f66f4ee4553e11a8b250c7eb93a636ed5d0b586f314d7123f0e4b8888496d1031b07e0c416c973931dafb38f66af32b5ffdb5285b0c0a63d52f3c8974d07359463ea0caba4945907350aa15dc7786e435263e71b171e2f1a2ff03ac6130daf2160dc0980709df20a75ab2789b9749d7ce72dfeea358a28e559b788ee57bbc1343f3a0db99f60a0b4172e6b22532090f4848b17e3a621d06ce84cd20b0920e741de95b8507a077d4e54a5d009251441b0c635c73cfb21912d3225d8c06ff88581cc1ba26ee1ff31ddc253c30abdcc9e243740629bd858985c1d2014ca1eafda10e23451deb9f77776a6d1b38ab96a8e4014727eda9849f79e6060fef5188eac9941a5b602cc259d0dd5d67e3e4d1623fd0dc0b56e89ca18382b21149b56e5d30ad07b15c6e0bd60863860cec0c9238a9fff3b4f5b1cef0619e4658a97fa9b7fb73a63668354a83ed68562546bc0a9d35f7a10d3cb1119203c96cac0ba30d07f8e1da4a8fb32b6eae0940a3be620db740026b83a5fa8da4a9cdf1c907fb4954b412fa2216ed159c6d3ac2492b62552abea4ecf1814ff7aff78c9581115b86849915f0090bbb9f71385469ea77ed22187fe1d62050cedad1ac628874bb5f3c3871f0c2f0470e4457e1261c48ca8ea7e547f10c097925424ddb9a7fc01c15f1dc3ee8eaa42e78e739139f22fd32c0ca728e543e6766769cc8e6058361255484ef3aec1c1c51ac40b1e72603fd53192702e3340e4d5762a5a5c02e3272472b31dfeabf0c8f434ee14e498fe91e9a734a46133d36f3c7e5d0d8fc88b6f61c8bad396be197236ff340c5bc69ea4f0383c2fd366eca711b0d6d6c18cb8ad0b771d3784c21a6c8cd630288da8d7d2731b8b530bffd0dd3befce6c0b8676b0e1f53b9ea209c79fe466094c74acca4463e5a05923770f3e60a6a9017510397241a688aadbc49c60de5a7bb6d48cec812ea922914d81e8849b3ba27a0a1303cfe2283836c95105739effce66acd290873cc3d793752c02ce9afb1a2f2d4e00696ae685ae4cfae4e1de7ba8ce559cb547f0bd80fd4952b9be54712d3ba53d74c4c875f14d26348a5f8451e312a3b9003074776601073f3303c0c2470f05b5c2c760f8c49405622fe156b82dae1c487b28d71e10622ebaf597998d6481083fb97ac4f7d4ca03266f663d0cdd6b103dfb6efa65eb76d45f04701f681a0768a81c409f4c6b37ac831e671e8a211277c1f09e2c451f48913d0d134b1b2aa0c906c47995d9184204e40cf453a22063430c1d8872f8c706c5cb4fc20c4c5a672ab5c00221f137a58fcaadfd46e0a4002284c69c5649dc280726e93ae7b773e02b1dd847b5b496c3230c921610e2376ff9085e6e6f4a61b8278acefe0a8deb2749cdc9e703e1964e5d08e9165e928ff152cbcc245f071bb9381f09f758261a1fe5a476ae7cd7b05a336a0791508e9a51d6f0426028b721c777f57b0f578dcb97e220122675c7c5723274a239c629e9f2aa0f61d7fecd88d30928324cb5783daf792311b54a226f4a256ba5e6e1ff46b1188e0737aeab131b0404acb5cb05de0e272f490921f6181a78ceaa07bbbcc75fbd332920b53e9d288e0658d09f012e61cb4851fb5da43489d9f1d4564afdfbcd0009cd25a585a27fb8177f9e0536ccebe154344d455b548f0b15345e5549f3d95b74c9c14c7d7c5ce24f291ded4035f403c6de6ca335e6c310654af2a90b51fe7e04eb2e706343a23235eb64e327195bd29e0f0b746faf80823d03ddf433feced0a2b174451dadcf3ba455addcb51db21c0890beef24b34b8a0f73a035509542bcafb3cd117c244683098638659194a8e94a2e5543f53fbf30a8371b6e6e452b1622bdd27e8da14e6cfa8f55e3bdc62c3113b9e2ca65a6b0546cd9ed4c72fc75acd3bfb36ea11619a1b7285191af8402bb0381af383823186d3d8aeb27aa8a2f727ca7a54dc112b0d89515ae8a3aa76627104b1e763d3307c4c16a8ad4bddebf5aff18e438389751cb432b65c777f1f8931dca927ffba329660a98ce02d236301ca8caaea60b962c92bb5aa89e02b2af2ab8de5ce57b896b3e54309e1e5e6e6ac2602aca930b222cde5c3eaee413bdd26bc2aa0a263a084d8d233c0606b0dc3019d1d5efb559fa0484c0078d79643800682a0e5eaf49001ffc3b792bd6e0a9c6f9c05be3445eef26780f52c11741d8b8fb1c248414e4209e9716d9b89fe3005c4a957d88b2529488a7d16b54031ba5310c00af64832bc33b65dcace2eb38f9da6781d4ee98c8de078c4bdb5167f3ffbe522dbd4c08c25520ccfc78e8592787c88d0fea3537b583e49ae6942c9b0d7443a02eb11292af2bfbf03f4fbfb5fea394d9f6f4797d564e4f6e2c7040bf153547eb38b6266d1ebda944434b3dc00d525bd494353bc7ec80c31a5e139b48de9685aa2064bd0e928df2ba4a15f2ab368ab81f059a25f9a871283fc1710b928b893f2e952017727f84c87ef72bb725ba6b7a070870760a54f04bb07cb3302104c50e5ebe61ce551e22dccb46398e9b176f58ebc65ed008acba04eee93251378be5e588583ddb5f965dbc687c1940466d9e7036ba03edec586f0095ef64efceea6d11edb51376d7448dac93331b47a389efd23b94222259dc8c4f04df32c4a5189c7ab584944ac1624e74a8c618b866776d261a8314b812a1d58ca09dd076fc33251d06968b27ba93f53b86a4c7b3a026876eb175ba695f13e1620f411589b0e79d6f248da067033e67c8a0f9b4d4191a74a68d549c32bc01e6bd8a953a7370b54b7ea5186c2163437cf9c39c81234a832f202327a340f47857d93d2f8946bdfbea33391ea17c6360d8603f4f1fed53bda204db1c142dea033a57cd1750d6afd358a889963efe8fd2dbe933eefdf5e646d141a71fc05061560564dfbc4ad623c8ffce944331f8f014dd1be4b0ce0b861615fc2da48ca0be4c53035c289cb703a2ee1bb05afca984d59cbe4d43d88d39104d64d31252f6adfc98b4baddd810ead818099f1b085ef39b305b99b586e1deeeef0a8aa8cd8232bc8110679621212d33d4f13a65b421458442f13f614f269541c0cdd2ea05643f58e3600a5e24e607cbf885059c34418ab53dfe64237a4b77de131a10238adcd5f4916ca25170a160e88b38b2199cbb59a720b8f3299bf270077afdfd57c0b40895fad39515d8bfbc7fcc5843afc17f6d50fbf5969fe34391e2db4d7f3997133ea64d62262bd3da6eb9db177494ff723f45a8a72f663cc24e6854b633fa17f4941c309e8a237266da605de39f64b515c38b3f1ce302693e0b248c49758eeb6042ccec95f0cbe3fdf92f7f429f6637f08cbf46fe48b61cdcd37d0f036782c094c69d3b6e0b1462ad712f5dd0abbdd4698ca32c2a4d0cd16a987c922b8dacb6d3b13f917ff891de7c0c16f69baf237319dba3a139eabf3bdada40f3bb84eb927724a6852c2d10137080f0ab566df56839346a39a5a40dceccd0b469fe3f6c074602b085d5bc5722adc1656d151405b63529c7a2a53cc21e02ecda4f0f9026b413d834fd9c884025bb99dc22839aadbe87608a1683215895a8de0b0a2e7213b986695bb44ed1eaba0593272c2976a7a2fcc1edab85a3b89957a8eb232e58cca7e659acc543959deb54f084bf3db6556233cb8c8df5c05d77f8a29c348797c081f263eb6a09d1c490eec04809e23c1db8e89600b4791430866b2c9ecacf484016338e30c4bc6ef39566bdfa26af68bc92babc656a79f7aafa9ed76405f06d5274b28e15572ea855e3e8c2170f66e11c394b75089a9d0bc404e763882006994c7f02304bd7bbcbbcdb513431aabda40d47004100aa066db18e28c805e0f7793fa27eaa845f8c400e25fa9797691999ee11ace351a83ae30a71224cdc1a383f7942d41f0c0c2398f515bbd7edbf88fd898d336e0ecbd1c6223a37cf4375632d71aa90c65ea0453a95eb840ba9db9908feeae234907cf6a27f05ad516834148d44648666a038e7a1a474fec6c898c19b138f5b864f5aa78e3125cd7fa50e26809715471598911c14a080dc362824d96e45174f15d5057dbe1bf886459bc3a5a824bd1635663d53dcce127dc765ce0f047a3f673c143c606c0e28111b13acdbdf8b65bada8b5123975b1d0f09fe14b1c337d19ee6ecf8c420afdf162c93de84f5f91022b32291a91f6ea4196701d875a09128ddb95a85e626b63ca90ca9038e668e00391feea6e88f9aa10f19dc1766d433a5007f91ecb68a398e9e54a28ee6aff0c41fd89f1406549ce5032d6b89605e91b64e9f584cccb494a413004955fac230ecb86598c107406266714008033bcc52233a29b2c331c3ae92f038a9ac2ac7eef90751b9386cad4f27159d2afea7e240a411a2fe86286d2b39b461808ae23ae0f680da2f37740d88eadc5d2380c0bb5bfe49fc2c39d329e99596bcf4a42bc4c3d98c62aad1e66a2d446679c3897aa0e57e713499c6834d23c2d8f84d83af4e101b36eeda716844b2cb13dea666d600f3be0d25e2032f6efa1d680e8c537682b3657889b05382b30981933914ddf3804c5dd80ab18ab1941ba59641253f192c0a3e34251c23e458a7ae6ab9790f557de31a508df89f52c002e3efa1474d924b87a7f626247968b8bcb59393ada3456ad719a0ccfc1039760aab67625b64652f9d6d3454f38abb84142df3247a593a24dd4c80bdef57008092f917fe430687869f843d58295a099dbdf0524701828b75533d14d3ca919580a79c827553e5a61a4da79aee48349313b3bd8822961ba2b293116367dc6748c3038292f2e67c5d1e27f6ebcca3c18d1997852b02cf9d7b305bb19e1ad94e5d8d184b1064af2020871f739cec5a14e27aac22f1a185ac5977c498a024c73d8137a6482472f4a61126111d1194e0d24c36eec946b4373f436566de34ce4e3f4f02305823fdbc619b319392eecb218518bdf3961ac7e023cbacbb18531733c14d9686cb87cad024ab232f4342653a259a72a1f4c1b0e92e5b5c953bb4ae44eadda8835e43f1105b76833affa959778cc99b4c925c954aefab514090cc2ddcb42ad1c5d5ca547b2f228ee1a3993d547006b5cfa6f8b0876fe6c70bf1a917ddc33d7cb8f5ad6b6c64531f7a0802eb571e2083c4c4f63bebc5e45a28b65a4d053bcc9bb622bd25499f3ea58d8d977114376ad19d179305547c5a852f32ef44704a9dc918aa259362a13256cb40722c42e2ea2ff70006d48b4b4517ed3cb7c2c5be6c1c5ff6bf25b79eaf3cfd9bf74581a71f64b70f2e7fbafebc86239d15947f4df33abb9895c6d37874f61c4a3a4831fb02b32c822fc8aa800711dfd18a886768d44a9ebfc5807a5cd461182b4c41af996e424f68c9353c797fd1b3a70b491455d973f88537472e20dd7311dc68cfefaf1c5fc8cacc491b19a0e34a4b9aecbe666469282d6a2f3d8c841043553b0eba21154a460dc14f509f46bf44e7a19ffe48ee1951cdc1f1dced63d1f4f80b6fbb000b2f6630b44dd82a4f3bb8e926e6967160ba194451a5d82dc4fe3a1667c9dc436a21f279db318476d5981adeeba915295f59d291a9736288521f9cd4e9b4f09e74391951d779da6b3d572df882bdbc81cb5e43641f30fcb3b3de23df6bccc80971e15132d6c0cf3a491d348cd764b89b03baaf5afece827c6b8ff26cf832308d49f7eed5d73d1bddd3159bec96a24438019c910f9156ed9a44720d3d79536b2d82ba4d3a47620926815fb02a413a69d68335437f2ff1b5d9ec91c488a304ca4351bd0f071004ea51be61f0cdc1c5205a73c4069185997e8d302ec2575ae822587228f8625e26d833f8386b449ea3c6470ef8697602f2319a5a00514b9be33857b89b1b8f317b825786ce15782912a084a13b3d2df01bb84b55550950c76ed2ff46f809420c1161e258ce17ee6fe08b42569558156ca4c7b802fbdcc875ffc0b7e313d70d952e8f97b62831dea47b095d895f66ff63f415b820c73802bb9d4f737f447302dfc227308549a9a4bd6963dbfa21eb897e255c02f332949a5600a65254b55e12fb84a27cd38729702510567096b97ff83a82ba1ae0af412d3787feedffdfbfd27f094dcf6ff9fc2b1546481fe9dfe0e144b59ac82a97431e47e7bff1226038f3206ac52c21cff88fdb9b34269d55fbd41ef5c088b4cbcc0ea857f027ae9445df55f6896c250055709d18efc99fec5bf04a7a7a94accd8bcd80330986c294b1cd4ec2dfb77f9edf85bfc2c7ef6cfe86ff0377f267fd69fddcffeadfd1b3425609b426da9519de959f5fb3730947e5405a092d44832999055d1eea8e0dbb0a11dbae6ebdf5bc3285fd950fc2d75497dadf9f7ff17bf83dff9bbfff7ffc1effedbfd33744aded6fdfbf387e829756abebf60502ab6e0ef99c9c0136c01a914962a28966ec6f20b628dced1f794dad9c931d98c3ab68d3621a2a4afd1fd056c8961fc3ff78ff76ff094e23104de928caa002ce5d40ce6d2f5a2847f037629556efb0b9052643bf42fff1b584b8a62ee2fd02d91ae1ada4a1957876ccdee1307dea1213f458a074bd05ffbdb69fad8c9a8fc8d7fd37f6ca7c7746b78cd310e86236d5a40fc0bc5d2f01af23fea6faf964b575be41fa2bb94aabefb0b9212c2ce7f614d06aa300378a9d319bb31eefd4e93555a004af8aff51fffe36ffef7fc1b984a70328555c9587cf90bd02548dac2b304992ac84a9da6e4ffee6fe094dc17effe11b925b77d7f833f42d3c26323f02ff154ca42154c4a672d0444c96655bb094386a802462953f9ff00d6090af812a279b89138870e33034c8bf01bf48bfc028186cff4eabb16786d193994b10a92d2ed1502bdd4bcbafb33744a8ffdf807fd47fe102b33bf8dcf74f376fb765764296686915dff91304144459a95961c4bd8cafffbfffe679958e67a3f82b6c4b048ff8fe8293dd63f3f02a134ba7af09f702e7dc1144e4a66a902a264f6427095901519ff09f0d22f6d6156e2588abfb92604eb6df3f6a57f54815712190999e89d86fc6bf1ee497f914d9213af80bcddce92b28f08ae8e19656e282afd07eac68d186ba2c7ed5340377b0222527194d86bb9d1ad5fc3d12f139c27914e4b7e63bdad68f7f28f0a0624e496d6c1c19d5023315069a5fd0518a4ebf70470fb4bfcc51eaf8b543b6a20852e791e108927144a45009de0e5bafcd13f62826832fd0866258585ffabff1bec4ac036855aa951d73315b4c336baaf94624b0096d0c44a3a2f85d51612a5bbddd584c011ad413b4a89b104588963b5f82fec4ae0aa82aef41af5fe25144aa372c05f2097b2a010cc258be5a429819db9f1273125fce41a08330d8b09b213dd5ac2c5fae28e716230c1ab30ed612ffd217a9554570555291e2c22bb14882a3897b246f9dfa02bed2c1a938071dc27d23dffc2b7e4565efee13ffc0f78b1050404447f044e17849e0d5520d860710e3dfaad66bfcdfdb7b99c7f9bcbe9e61efdb3281b676e62584e4d54b4f1bee56800f093b08deb8dee750bdbc4e6c77d1144ef80f220db90dc38ecbae0ab84bf3c60577066a15ae759fbee771311214952120eb00de80c281156d83a5921f8f55636e3972711ffd7fa482c942e730b974ea4884d7f79f95bd86b2d1159f58894444ca29b463750e96f20931bc843ddf5379cf4c47c62becb9bac7f399dfee5b16018fe13e70d1fb162e2bce12255f00c1e3205cf60222978063f89f3f66d09a1e019fc23ce1e867d4b44defc5bd8737defd23a6fdf9279de4025f47b96eafb5489fa4ca1896fec89ad154b6082ff4343231e246109a3e0f7ada07411f1521a62458f88144743a0e01101a33404891e112f4743b810c1521a42d523a23c1ae2c42362541a22ec11818fb0922125f0f10b7c4fbd6ec888283c9394a710922ee4f1505c3ef91212c2c429b7f07838a92f3271ca21202a23221e0fa73c91bed3edc126d1d5c2161e0f07e97b137e419e2f9ff3fd50d37fe53ebd0e7526d9a733490a3f92587ea62123221e0f255f218f876f41508cd1ef0504074161aca5041f0c4f543c85a7f0640a43928562254ac221253408f961123d3434fdd7135f27d3a35c4ca2687a94cb8beb05a1388aa2eb0566cff87b24ff1bbf4f144922584a43a87a449447439c78448c4a43843d22f01156829588e190124aa2bc40e93237580f0d8f18296234a48808f3b668c9b284e58a15a52a54a6244989f23d14b467facfd5c9f05cf2cb2fbf0f4a14294953a85451b27205cb52162ddf161e51d110a32246f0914f1c41140a75a3e1087c7008f32643c3111afee97b191e1afef77ddff77d9fe9037f83e3f87d4e603d94101734199bb0c02492e3388e26521cdff40a828aaf717cd1f48e9e37d39943bee9dd6b4e265206153f06e6c54c996ee1f85d201c4291254a901c1d315204c370230ce3c81123468a1431321a3204c31c1761224c847998b7658b162d59b22c2d61c172e58a152b4a4a55aa50a132654a521286b9942851a040719d28becf87863d3ea20350d317a160a903ea22c2f40f49f3c9d6bb18a1dee55df01123458c86146122ccdba225cb12962b5694aa50999224254a0f0aea5bef62623a7afb8c3e0c24a1e0b7c2dfe12ac3434b2628f8e178ea52efa3fad59f587f3a51986fd200592ffeeae503ea48343c6f4150d30ab40451d4cb2503b347fc0d82ef4646328c3820c343c753c482916351fa198c425446297c7c8aef8a8129c3038d9c985f118671fb8c8c8c866018eee8110c3ea3afc892e9842466cffd2c32c30751fc381497849cc4d0898826936822cf9b0d91701c31c662f8f1c62d640f0dc7d3c77add78629d658b045d5efee55d444c95ea5d444625d7bb8cf8f043130a25242451b2c2d389753a493c898709c5f3368e2a17117c34e2e55df8087c97d2053c6fae54b28498dee412f6589f91491a8d4a6868121152b64cf3fbbeeffbbeeffbbe8ff57ddff77ddff77ddfb7320a55aad2080dc7712c6d4e4a61efc9f1f61911e98d64cff5b93c295d4c8e50f04f5feb649e65cf888f4ead3f99cc37cd534c25317bab2fcbf04bd5937f62e1938b88cbbbb45c5ccedbc8a4d5334df18808b9d4128fc056ab452eb5deb4417b202f4c627ee58975138f4e2a90072aad5644fe868f54a9b2c418638c31c618e3c718638c31c618e39378d4339d3d147c50297cf2148f50f04751341dadb494df11cccf48fc77057af32a66152aa449658a494e4922cd24292629250a69468162925048538649bac888d17239858a1e47bcdd60839e7019c1bcd9a0eebb024d82ff8731141fbf8e398e8fbf87c9344da6c78f03659e1ebf0d1315e4481113d82065968f5f86990ae2821c6041927afc3156a6eaf1df60febb025d9d495ae70484b07aecf3a1ac7f57a0e699a4750a21e598cf3a6f3a204650011abef942483a0708610c48ac1e1d03300c9106c3c6f149fc39308c53cc9f50e7d685a8479518a75eb53af7af58e7d685bfc3676d5d7862f3b4396f38639c324e1aa70d1c678eb3c7a9f3030330ec84cb02a60d0bab465082ef7a8029822930c517083a9229922e21a6f3200946e897c4147b44bef363c10051143718b305460b3a13c9c758141f0441fc6150a441471bf44345701447721447f27bf045838edf13274d982c5182e4e8881177150fee04543c6f22f9611005459c347eaa21a56b89abc3a8abebf974a12e7cfcba1b0d4ce663605ecc94c9c12a54a624498902c505df05df053f9c80f9fdcd4602660ae50118de3012f03779e2f386831ca12886c11863fcf5a244e9f57a6890f1c324881205157b0ea4879a00047f93e48fe41254fc8fc5f8fa821ca1e0ebcb22d2ac7e0553c9a43e0605737a3199618a348d21f60fb6fa154ca59249a5be2c63502898d3e9c56432c3304592e397c37af331ebb419c280d579f32a453fe0174e854807bf10a77cbc1ef88598249403bf10a500e1c02f3cca6b03bf10df7442e0c379d15b65e017326c31f00bf1c733bd01bf101f9f36365fabf5b55a5fabf5b55a5fabf5b55a5fabf5b55a5fabf5b55a9febbe7f25a1a119028315c9c810fd7f3cfc426c09e117620b08bf105b2f7e21b672f885d85af10bb165c32fc49698e217e2fb0cbf10c3f04111478e143d54e8acf8e119f07a5d9211366cd0a02143468c1837dc6063f382c97c8c0d1a3262dc608331c618638c31c618638c31c618b784625e97c4042fc5eb92c010a9785d9212452b5e9784c49024ffba242380804ebc2f8a5cee655d5d369b4bfa6992d68f305c1d79cec6275ffc71c4392444b3e21c1282a938878464529c43421f6302a6c4081225604c9c4242e79bf8d7c3fc7f895ff1245ec58f78209813a790108b3ff1e2bf2f3128641ec58b9fc33362ce212133c50c1ff3e2af78468a734828f5e2a2e153bcf8363ce3e51c1232d5e0fa971935d4d01a9f147f8667d4409e371b0cfbc4a761061916e7eb57a848f172fc22060514f47b61e2e5f805cccbf18b122fc72f5e8c78397ef1f272fcc2f532397ef10a65c412415258859412fdfeb3d140098ee28f4850f26f18093a86bf4d2779de9292d08fc5d1111a26319398bb0832a0a2d83b8179fb1c047b1806258a94a42954aa2859b98265298b966f0b8fa8688811fae122e8878da01f3e827e504ad703dc687fe857a3f47771c0fcfe4fbc8937e1fe27fcfc5898386fae8405c360c00f3a4a18468f1c386cd0908261c8888261c4b8c1860626f3313018e62f66aa0886119e804151e24b904031e247bca37871bdeb6d4cbc4d12147fe23f97166ba54a952893c78c7fe275263e06c53984149e386f1fea02414fbccec4d9a3fbd013efa89f30f1b720a889d385391dc34a9cee88d3759daecbe918d63a5d7775baa9d3459daee994817eef8ea71b9e3637a0ffbd6b04a6ffed33c247273089a574952003a6835c28fdddfd1352decc259612eab755d24dc5a4bca18c4e3c7209fc51097c7cdec424d4df65743afed01d9b1f9025a2ff5eb72442abd799f08cd42984a41ba304a19a913a8590741f6a7a518890c7519d434465c051a5ce21f1bcbdd83454f438ab5308080a0a1b88f2009cd4173d8eea043246090227752285a7bb3fd4dd81a00a3030bd7cca534cb93e1f4afebb02357df8daa8d79567928d3a93a84ea12124d323852fe4715248e28740406103511e8092af314a10e8f87a547ca5300a040c5262b005e510ea85fc5049fe50ea85fc90ea850cadc21f6221e11f325fc8e30cb51e09fcd6cb59af172f5ebc78f19deee974774da73bcc755d373cdd612e78babbc3809882985e8ed0107c7004c19bcb080d5d5c2e2e97af0a152a53a6242549911225ca07a5f7c4e422bab890dfd9f3b9809f0882a08b8b8b8b8b8b8b8bcb13d3e9e2843c5d5c9a6058388e2a100c49f0d4e980820f043a8e0e40c7b19542c1ef33993e11fcd4af20df0482e20782a6d726c127411004c7efcc89227831918ed0704811d1c7dba225cb12161dea6718e6a897ab73570cf317e211150dc1301f4d23088a46e6edf43794111afea9cacb2729aa42c545658acb94a4569214534a145614282356507a65ef49ea8913d0499311e40b799c113fbe4efc539313931127263ea1f8729eaab8ce131597f334a5759e92ccf32485759ea2acce139453eff4043c4f4ebef3c4e43c35c1b0d064528160783bf1d0f0d5e313a2e2a95b818aa2e8809b106aba118aa7d1f4811f388e210b3d850ebef6f73af1c7ffdecf4747a2e3bbe3897d4014eb84503008faea40d7064cf26fe4d2a834fe4d4c726dc065748a27267f0ccba3960bc230341d31532e2366f8dfeb92143d8e1090520f8840c21142520db56002117082238494129a82112168c111422a83b0408b10c68023848402020a128041197084904e42440902470869cc0921995ec8e308ed202849fe2d084a9eaeea8c499d30e5f9823acdd3991a4f93783a4afef81acf1cd46f508cefa6f3369e39e2df3edde9bc89240af250d0f50113fc21284f08e8cdadb674b60214fc7f02067d5c6194d81231598ae20ae310258ae2aac4d884c312e31055e2154661558b65c278c464a8c22c540b63530b7562a13006cd1285c2a109854391458e65ca55c5c42fb6ce1b3e62bd79dec4a3b097fad579fb4a2354d2790379a61eb9042a9d379c142a2d3df89de0836715771f7931b450bacc8d862419a3254a901c1d315204c3300acfd0f500333c3f161faa7ad57f4386141511117dbc8f27240404f4beb9dcbada6c18e63a5137c330df4046f8ccf09a11af0f7500ca2a42515107d4b501d3553746bcf8fa50130f8ebeb8bad3a7be144f5f7ef90d2922fa7842406f6eb561987f8a611e9a42717fa87bfad4df64fe36430f053f35c3100cc3d51195c00a688f8a4f5234a408fc411140f000ce10528a22222a5910c20b708690628866e0851e18220948c019424231036fcb5802267080086708e9c4162dac23454c60039c2124135ab28c31c881098e70869060b22c6118ae6e7c960b72800509ce105289252c9f17565044197086904a2c57262084d4152b42a510c6504411384348f8853cce8a1f5f17be8c150c53c2305c5d9215e710d2f7ac22ca600415e08c3a19a553f7f9882889075fc539c39014e70c4531e70c4428ce1978274e992d264e192d3067e10fa13e3c85cad4e9258494fa724885426100d4e3d7419daa9306382376c1c449f1509fbad10375f600674457194cf2c3e7f1198133e4d943bed087f31de117e2bbca609ace9ef141b1877c77420f3aa024fe3e08ff7886e00785384c4c4b30e6cbc5055346d9237ef8dff7a978104f4783805f0fa5eba35b818aaf0b1fffab5bf1827989c1b09efda1ae20cc979e47c1ff8f5762fc2a43cf99a17f4b68f852818621088a9f8a2ce5178620063f10fcc0181414023f0d9f89d245c4f51a7fd06bfc47aff127bdc6dfe435fe27aff147d5f8a7bcc65fe535fe2baff167798dbfe935fe2daff177f11a7f97d7f88ff01a7f125ee35fc26bfc61bcc6df84d7f89ff01a7f145ee31fe335fe29bcc65f85d7f8aff01affefe50281e9ef042f611c0718139bc01957ede012c01f03f362a64ca1e37710fc42155f0af4f7f7ffaef095285d4b7029c1bc91ba9eefbd245f495c8f5f3de42779f912f5f84f2653a7faf0592e97abe8715c2eec7a12bf504fbefc4d2c971e95894285af02512df0c917aa47d783c930f459812679215f2756d1e3bca45e66bc9c422f0fc4f5ac17a4f23f5caa7e8f7f23cfd32ac77cd62d87b5c7c7aa738fefdf93afd32af539faba91bff18f670ff9a8b3c7f4a7b3c744aaf0494ae978c6489a4ea832b562a9787ff0750b512415cf5aa95225ea64226fe0dba0e0ab78dd9208bd509150d1bf10045845142154f440c44ff140c447f140c43ff140c437f140c42ff140c427f140c41ff140c4773d10f1445ac34f32becbd3006960f015a229625ea12965bec0c4bc0c8cc664ad54a912753291e309447c0f4d29f30526e6651e887806f98098c0a407ca981807615086a309955a9922792a55ac968be9faef5b6fbab85aaf3034995229d37c798181898961e1d009a5cbf4bc6eab2b89a29f6e4096526f02ff66839a6e36a7db8b2fa24eb2074a869f2ac9273fd47fef52c4e944817a14799edcff449193e2a1f86986c8841fcef04cf8d8f18942543252bacccd7b4665304d6810372d253139002b0c4da67fbd5e26926cfdea9583bf75de725abf7a7c6ef24913eb16de566f6a3dd86afd975a997f0bd195b972fcd26197f5ac578f78de92bc1ebfa32df3bc0141cd17c557ebf52d24dd4ae8f5a2f90afff5721cf1757bf1ead523becf0a149f2e26981e84855fefc7fa14f8dc38458ac71ff39dfb8b61c5389ae2f5a12bd62bc430d39f4e5fbabc1cfd522eaf9e5505faf2ae118fe24ca54c4c30531f96efaf2af1aa12245e7c812b13cc9fdec49bfef4275c53ccf04ffce94767fdf8290c23c5bb9cb70f75f9d5cbf5f9d0242bfe5d81ae3ee6e5f3a1abf3962402ffaf4f2204810fe7f51158f1af67bd52bcde0f4dd1fa4d6ef1c58f79cc3a370bffc6cffaefd5a3333fc5b953bc8adfdfab3875ad33c9eb141a42d2992f3e52cc3984a4335748abdfdfa7781a608ad787b25ebe8a215fa6cb6b077515c1849e789980799520f1d209a1e18f78a1e8e1435ffe435f4e5605ea3adf11a75cca12150445aede144551144571857af3a5034253dfa28157baf0c6097ff8f491a4f8ba91270bb74ca4cba8ce1ef1fdd0b03c7b44d4e9ec215f7499b3e7d113d8a506a54bbebb7a17f5e5bb4c0fad62443e4944c8ea57ae8431566155ca79a0842434f5aa33f5fa58d000c5b1fc721cc9af1725898ad295a54f0bafc8081b419918163e0c8685ff18163e8c06c3c2bf01c3c28f8161e1cbc0b0f06d6058f83974188061e48847f12c9b809b94e497e526cd779679de4c39ab2fdf73ca4da2be3cb7b758bfc9f26fa61fdf47055ab67e65fe8bd151055afe8b517335b6308c9b63d88d3c4d495c4c17a1a2c7717994cb29e472fa12c77ce980a063399e4e27f0f4813fbe4e5fa82bc524aef145a2ced58f2fd7abe8715c2993f9e609c4c5f42b178f10151f29f5a4f9e5ea77791b4f938a24735a6fe698bffad6b9cb5f9db7d59be72e49141054d47d68298ebfcbb3674491a79f3de4a9cba137179a0a421982ae2c98e3797ba13d379f0fdde3f8ae0ea3275717a2aa77752634f53a132d7f03414feea02a64a54c5f11e8789e7b7c1fb38753f8e44d68a34caf6d32fd265f77fa8ddae1eb4e67cfe91ddde19b3e44fdf7218886e78b87d0f0839c3e700246ae042ae124a31e93239bde52b87444a648cc90179128b525cca283f266a26188df6509f59e10a5cb3c6a031374edc034813e8ee3388ee3388ee3388ee3388e1fb38ae7cd6569343941c5513c9d5eb7f5eba1a6dbb8a41b45511c45711cc771fc7a61cf4969c23050ec80ff06b30480774479709b12660975b1743dc0fcfefb6c607e34305d7849ccef43dd06ac6755816282e8edc4c31ff6544f9e3871d2a4091326aa25aa252a252a252a242a24aa23d591ea88ea88ca88ca88aa88aa88ca4865f4c4491326aa252a252a24aa23d51195119591aa886a886a88aa4855a4225211a9782ade962d5ab464c9b2b48405cb952b56ac2829a986a88a54442ade162d5996b05c51b252a50a152a53a62425499112250a1428bdde93274e9c3469c28449152a5392a44481d27be2844993d492d4929492949214921492d451ea287524752465246524552455246594324a0d490d4915a58a524429a2142fc54b2d49294921491da58ea48ca48aa48c52435245295e8a68cb162d5ab264595ac282e5ca152b569494aa54a14265ca94a4a42d5ab22c61b96245a90a95a42952c0959428a9285050507aa6de13f28993d14913144d989860b2a4c4122523949448c4322c8f300cbbf0ea2ca560581905c34a281856f630ecc978964e509c65131367c904c3ca2523ce5289ab4482614f9c3461122e09958448c2a3f0486824340a8b8443c2a29028e46dd1926509cb15252b55a84c499212054aef8913264dc025a012100978041e018d8045402370085804f240a2d79fa7e97a5d1217d0f5c25b50fc5ab22c61b96245a90a15734af82b4e158f718a9813281e85893741e2c565653e5e8155e01438069f4071de308c89f38649e017ec82959cf808bb0b08e6edc4bb9d782e209837550fc5df72d1c0f4bfa9ca5be83ca8b28486e707c5c4a8dbc0bc85271c9826d3ab20512b132546b85a2915e74df504c5efa40993252a252a24aa23d511959194ca4855e43c4f1a4e657962b1544354452a22156f8b962c4b2596d31514bf8b0295ac90e4a7184d2546b85a2c14793a86a5386fa92a287e2a5392a44481d27be204c52926a926e7792acb934a955a82e24f294921491da58ea48ca48aa48ccad490534a753bf1524428387e0c0a147fe23401730ac11e24713ef8baf251aa4fb17ed57af3c1d785b011aed60c2c19158bf27cf04597c4049e62ce5bb905c5af25cb12962b5694aa5041f1bba63209c52f96471886ab035f97e4fcf0718802c59f3061e2614a9478122346fc8b8b85eb5d6a68bdc942fc51e6f4a619ca47d1f0aa4fd5700ad1a07a218f3383cce9853c0e0bf13c8790c830d47d284a29287eb78c82e2774b9c251414bffb72deca1e8adf75954f50fc6eeb2c9da0f85dd6593641f1bbaab36482e277cbb35c82e2774b25287e973ccba312098ac5bf8551c077400f75e13dfe885ca174493972c4889122458c8c860c292a22c2445bb668d1e256ac78ea53e0ab4a8c5998c52231f8ab5fb154e48af5adfee64a2d33fcb0ea6f2313342449d6ea5422bf5eeaf30f9744fc5198049548f2c91f3f2447a5f208a0fbe94f18bd813cecf826267dffb5425791293e88def0518a1586acf0249fd5fad6ea633d3e6f36472c3169f52b70f52e22bd15e69d5261afec95270a3c913c0cf2585fd981d26554aad5ea538f7ad4ca3503d3cbd463ecea99e3fb3bebbcd9985629970f4c3c86ff3dea34be69091d8f4cf0ae9e893295650fccd39f3e16415057ba6123548c928aa2f4b63cc9d204cb122b48aa1c995244ca10284423589ec07204d243c31e7a3a858efa517cb107e6f79ff86568a4c4e4f427f34f601413a32e1e9860f8eeb7ef0a1a86e1d73b6f2b3e42513f82a6d33b684a9d4a9710d374fa0798a63ffde90c5d09453d59bec61e6a3a85516e6114f4e4801e7a7a1af874fa5b10f474a6626462d06080c9743abdc9148661187e407ae0ea4ae878f6acf80805c3f307a5ee7bfca228f6a04491923405c54247e8f78962f81a7f3c6fabcd1398f86d75252718a1e17f58b05cb962c50a2a458a7f3d3cf3fd14d4ab5441dd88e823ba720587591634fc420a942e93f2f712ac8261189c8267302805cf60100a9ec1e0133c83c1267806834c48f153a9d40d6402a61c8726d3a34e3628264d101a29310179e49328f128341d99a440693d319be019fc2cd31213921747251eef643a0a7b3c1e11d3118af10d6318236f5c826178448267f07804cfe0b1089ec1e3103c8347223c8347a5d46d54c2a31291f036f2c8911493f0e3f3e6557c8a4bc15064dc80dec423f108df461ed94ba5c81e91d3cd46c4243e42e222241e42622292247b18867360fec0c41379e0ec232a2234e4c544ebb725c5594c5b582bf355a98fc44b2793b552a55037308d4a144e42bd91087e0c8611038361d81c9570168c055bc155f0945109653ac931bc81e90a4628f82da9fef6f546a59b0d1e82614f48a2265b96644182e5c86805174141250c033f21f83bb1187e2b15381a914aa8f1c909bfc9086402f270525268b4a4d463028ea3eb89299e46e391e9f49dfc088681b888e3218e89fcdbe25f165f723034c2b70fdf6c3a301a913f7e3da513131ec8044489a81f4fd3e989952655964c417204c52894111697c4ff7a26d3f827949b8498a677d3df6c4ea61a98e4790395c4f3f6d5c0044170b311f22e2142beff706ff5ae4fe177f9d377f2cfc8955c8948eb6f78fc1175039544d195025d4e5fd8ab62654a1529531c8a1419013c79add5a00177df2b9b71dfb63a3378ec1e37373a32805a1cd9ce08006a71d635d366ac6bae717333e3777e1d193268da07182e7631376978e2ee3db849838e061aeeb1206d7b69528dc3cd192e30834eada6feaae6dacebab6f9f5dada7e70daf67ed0ba669a8a6bdfec725366089905c88cee9ec34d1632d02ccc9fd5f8755773f5cfafabd669c6fda6f9598e8df6669c194daabf96f3b154a7bfd567f3d3b02aced5af4ebfd5f9d8d63436bf1bb7a3b92a8d557fd6c363f6e73e63b8fb0f375f527871e04583c6cdd7cb0b37df09dfdb51bfc6cfcfd480f1f89ad8cc6c5d730dbd33cecd4d8d9b1b9c7e77d096695c766bb39d73413bbf75ba5b69acba559b0eec636debfe566b39b19957e39e555735fb64d8cf64a9be79d9fc6eb6a5e97f5b76dfccf6ba66daec6b6233cdb63b66ffe6340d487f109b773e28eb88bdb99dfbd6c0b63f7bbfead3cc66af7bd4953d406cd7da1df38bde012edcfc02980fe3b11917301e5f13f4aa407acde1da1acf82454cf6b6ad8f15422b7458f12aa4a878dddd006eaa60d1c2cd1459528800073753d83c26fb217bbdf3efdee1663bbb2d4bf5abe2d455b6f3cc06170068df1eaf5ed79c7b1e75abefbad33173214bd7d6b6b56b7b65b2bd7b56dbdea799d9353bbbfd416cd09acb6dd57db7765f36ffb4e9efda205a7eb7dbaa6eee53bd77da27dbbe7d7f1604d4bab9d9bf349d03d27aef324defc4744c857daadd966d6d3cac9aea9d776ab2667fd7067d2de763eb9a6959ef9d8da6da7ed8ccc3b66bfe54ef9d733bc470416c9beef4ce7daa9fcd6fe3d9b5aeedfdfc29ab7fa478ff98a5f4dd8c89124bf58f66b5fb9b0637638ce8dfea7e55dc8d18a01e3fb86a0e489770332686d3a8bfd51818144b2e8aa4ade2586ea270e2314d635ddc446184cd3151e4dc63a9faedbbcb8fc37dbf5b05d228fe7f5ab6873dc0092e04a559bb6bfe35abaede5fe347b3da874ebb3f725cadd6d497d5a92a4b5559fbeef289a21fcda26e9e8891e6545db3cfbbfaade5cfbf5dedc3441404e0a60926bae769eabab3cbfdaec1d5bbbdd5cdaa99277faad59aea6a9fdd9b591ef5cd2aaddd3bbf7e5d4deb697db40f7747e1a6090ab8c7d29cf6dda15bbfd9477d6959db58b3ceb5416efbe694cd389d3427555f76d7e2b2d63559505eb53b03f5346b4b6bdfd6edf1342fabb6b994bd2123d53957fba8ab4e65efce2bcddd690eabbe3be5c93a08d0c1935fd90cdbce385c9c8ea7b1ed8ce3697a68ed8a5343462deb1c2e4e470d178793d5dad6edf1a3d6b66eeedd7aa7d33e7c6c5c76730f56e778e89a8fabb77667b89afd69657a2728e366c8605bf5cdf148b58faa69da95e9cdb6b9ad5dd9bbf59b57564d735255469301b53befae95bd409ad56f7e7fac9a65b3adc6aad35687d63bac3a6d7132ad6b5bf3e4bd354ef6ee5a1950c6c94873bb06e51e6d8dcd696bac6a437673a3e3ea94d5dbb6b3cd24010b5ad75d6d6f4da3edf6a7fad56b0ed7d248b8bb7669bff3cf8f661f1da194cbdafd9d7f7afe2c3ae2e8cd696ef73bffdccc4600b97bfe41dd3dc6cd113d589dcb651bcbc3dd71dc7ce90201dc7c71e2ee311f7ccc5a9a4edf6d7fa6ddb6c6ec7958d5d5b657bdf1d2b2fb02e96fdfdfa1879b2f3f689d7efbfe0d6ebec0b88df6e6dc56d3d73bdfbebfaed9d5efaad65e879bae1e8fbbcb691aab5d5dd3eeb7ae0622bbdaa6e39a69f7795855efe8b4a56d37f7290fdbfe569f47c5d5a8efbac33deaee3ab8e982f1587e73fafa55779bc3b5b47fd75daee9b4866dd9ac5395a6ee7e982e5adcdb1deefee2a6cb1417a318ab5d7747d33fafded16daad6d45aab6d3aee3e839b2eb2546ff553fdbe2a6e67b75fdb7466e8dd9a7d08d23de8b4a5cd08d23d04e99e1b60ec6c10c00ec6cdd60c5a3fadd78d9b2615dcdd879ba6060ee0a649c363a9fe69d735ef754563bb54db68fbdbf7df1c4ebf6f7eb7fd1e5abbeefce8a03597cb1fb4be34edaae90765dcd3b83b1eb5c6b6b49fe9b4adf1ea1f2c8fd9ef1a78583565754edb88a53bdb78d86ca3b13b77b7594d933fcd89a5acd63bbfb36d26c8cdacba037bcd9371aa76733dcc18f758ad7df50f93c50577d7719315821ddc64fde0fea2e95ccddbb29f3fd5eab7ec7e73bb2336e361d536f5d3cd55194eb8b9b2129bcd3ec8d53efa83763ed535623cdc5cb9eebec3cd958c0d37554aee1e6377b5dfaaedfd5afba3dfbcee686ba67dd0aadfecee68b4fcad4febe6d73faf6def0ed23d3bbbbd77ffedfbed07adda7d8d800700006e6ee8f0d8010000c480d49a7673daf6be6e7e7790eef9fcb657fd59d7ecee26dc5439d169fba367dc54f1dc63ffaa38dde3d6b0adeec93adc7d869baa18eeb15cd6b6df35bcacc6b1adabfab0fa83d61d9cde1bddd108507f6b9e9cfb5afbea1f660a0932dc4c7dc0dd7d703375c3dd11e0669905ffccf28abbffe06669e41e63551ed56dff6d5b1fbfb5abee74dafd75cdb4589af5bb59f567b2d9eb7d808fe9bdfb35e3dc964d75ca6a1caea569f76d777c6ceb9db54b63d5ff94cdaf7179b36ac669f7352eb34fd3b9fddaf6ae395c06d26e5b7b9afd41afaee5fd416cfe77d7da5ef5e7352dafb9d73df9fd75557ffecdb69d7fab369dbfe16147ce0e1f280262ae7ef39a6a75cde576fbf5ceb399f63a1fd338f56577aedbd67e367b56fba83c9fbf7d5fa7d9e5c9ed9ecdaf8150ddd6f6ee50774fe166d9137b5cebd67ee3f4abbec6b5fbd755edc1b6338e9b1b1d9db6b4b56d777a68da46bbf1b2da47cfd0c9b5afded9d643ef6ccb6d57a7aa4febe6348d6dd9ed6adc6eb32ded65776d8d9af6b15f56ab34b556dbedfc661bf9cd69766f681adbeeb8b9d1d9e1ea1ddc8eb5ed6c93bdac7673eedde5de1d8f9b1bdbce38deb67565facdefb6f16ecda3a6385c9d666d9b7143064dfbb069ea6655f705d229904ed91c1a3a23c64e064dfbd0001b1b1a6083009e0031760b48354ecd2b4dc6aaefae9df134690eab665b0d19b9ac436b570727d52f4ddfb42bdbaeae6d36bbafd63599e6c96efb6ead6b32b655df1d4d036919ab665c9be2681a9bd7bc23db717715eece0277df71f344e3a96679d4bdf3bf2dfbb637f7d86e2c5dd5dd8e00622e5cc46ca8696bac5aa3d74cdb2d6a2e6c6c5eb8c83b3b36d890e2e0a206a3a655635bbfd9a5c58074caaa41eebb551eedb66879dc4cb371c73fb8bb05dc340df137f3a83e99cd3f9a15871842d1d0e43023879f014a55d85bd3396e6e5e1b8feac3e5f1d6748eff7f94031e2855659a27d5b21e5a76dfb7d1de8ccb1133a220e13ea69890c38c9a5ec52a39c8f897ddb5b40fc0b37a95bd361ed595a56b0b2ec9b8875a60e11eae806cf1eef473c8e16760ac5e633477efd8fc8c15ee6200727053b4e1ee3a6dd90f7a7338fd373a6d69afd79d6ca365edb2bb4fb5ab5f56ffcd9a5957bfacda8215b8f89adaaaf7e790c3db629a27d5980309d0c9a981f6406bbc8c074a5518ee9fcedd2fe06628e3db8d05b92fab5be432eed3ee3e01374109f876633a6dd9165abbef4e8bcdb6ea4bd3ebdad26c7ec6b37afd1b57ef9ddddd06f70fe7ee406e622ab0415befd6ecf333d7bd317b363fdbfe6c0696cbee0fbbbbb979d7ddd63e669fea75cd347747bdbb3628e780717707b8895fb48fec27bb2d373f2deefed3ae3557fbb41ff4aab49ccbb493bb9b48775fb96320eefee3e6e7c38babbd2dfba99a3e2e6bf7ddcfc3aa41abab5376f7daf63eab6d3fefb6aeab9fcd9f6ad6ddbdda7d598dd36b0ea7feab66f77d1e567ddf8c73dbda67771fddfd6be2df0bdc3dc84dd771f7edc65a04b9d9dd51d7163477bf7be7b6d851d716acfae3e6b446afb95caeb901868de6e65c03c3869a01d8d4dc60838d0d3541eb6be351d9169b55b38db6b6eddb22b77bf7ce8db5c865557573da62bb7a1fa085bbabdcf417ee3ec24d7ff754af6aaefdd66fd0ce7fad7db655df4c6bd7357f90dbe234cedd45d0dd43774fb93b7677b775dd1b64148c4aeff178a883a414ae94a56bcbd287bfb0051d885f74f1bf268a4f179fbaaf08f4c38f431b942e317cdf2d480feafd0bc31093a6904485e0897c3c92ff9128d3d90386611882e08785c0175ff285d0970e060d4f9d900e06fd4e94e9bc991eecc1e109def07f3de4a903d1f08550317cddf0fb7fdfbb0d4ac70fde4c0f863ef8c3970e06459d3a211d0c3a9e2f88e3434de0eb663a754228798a39df38faadc7df51074d14e30087eff28209bac260e2225c243e7ea222f114029b0e285de67b992f0f3085b89968f8721561121521e974407bc077f47b21c4c72f847822ddf09e05849074c21f5f287c21f0859074c8d48fa7900b01e404840cf1bfccd4eb250813c8f7e0cc0bcf04723a4d2710f21c6dbe2b661619261087d3fbc3a4c0ff88522fc413e12f7a1cf0c50b79e19f4ea2a2c709227c1c9e20c6f95e43a7fffef4df0f952f84a403fe770a7d0fbe1056a13040f9f81570faefcb53c84f139c1153ef38e0dfccd3ff69232291e17fe18982fc1f42419e280c103e7e05e0843d52a7d08703621cfc6510200fc418f7d0f19d43a9ff3e089f43483aa973763a3f1e3823bed0e979bf3423be4b8b49f6985267890a8223547e2a2e62306202a8a1e9b4a5d504bdaa9b73265104dc24b2e126118842008b9b1038819b10e871130239dc84c0e966105bdc0c82096e06b103378310819b41d4dc0c6207772fe12bdc69f01203f81c15c5dd79e0ee3bd00114cdb63bdc3d075ba72d2bd3aafbe2e0069f048aa6b8b7d863d1104dfb4ceeceba29c449110d7ba7d37b868ca09d7769acea0e7367617353c86f3716a47b646ba6b518b0801020f01b622e622e6ad66cdb19878d0fb99dcbda7663dbd9d6b3410ddc9d06ff24a7aaccdd6720839cbbc7c0dd9db8bbc961e06efbe6f665d55fff6dd91a3cea8ea5facd9b00b1ff9df54e5e7fe79f6d7b5d75e7d9fc6cdeb1bdbbf6b7aaddddbbabedcc6cad8372eedb37b339b5b675ddfd052e7099bb3769410f2298ac6008f76f85bb18dc5d026ef294e0db8de532ce07773fc18c54e772aafbee1bdcce3f327c048e49d4e0ee3b087205b7ed8c636b1ff555716a6ee737dbf0d1436b73e06c9d0b7a83d8aca36d7582cce076acfe99ed557f643bcbd635cbb48faa53d9ce403ce0ee319fcf35d635d788ed54e79ddd0ecaad698bbbb991a5dab6b38dddb530872630e4e3ee7f339bfdfbe676aedbd600b231877e70f79d9b4251102a82bbc7f6d3a49a55693f7ac79bc048044b3ef490cb3a745efda3a6458b1b5eb88061038c172d5cbcc8b494e642ef689b1a0e366801d4f4a4bbe66dd3dcb3b6b916fbddb52d5e9547c8e4eeefb6b596fd081c8182bb633034811ffe40f2e5c2fde5c3002e4c2fab7d52b5f5a18609c40a840280f001448e0d84e9ef2e37d3070872816bb64dd5cdb63476f7343b04eda00238cfcbd2bc766babfed1a6bb1f1ce080bb6fc0dd35e0ee9f1771f70cb87b88017777752e975d04b87f3f487e26c03b82167840420c7e74300677ff1a5002981488e00b407ae0ee5f0d72626c418202aae8e0ee1f6fe64789092bac10b9fb0763e5b5e085132946e0eea11212a0a0876b06517070f74f070c2c8087910440f0c4dd3f0a5c61c58c2bca5081bbe31c37749002056aa00018dc1d1c7181a42c70c0c81322b8fbe8010d68f9a6dc948186bb632b5e2022b4850351c0c1ddc50fccc80ed87e707382bbd7d4382ee1eedaa7dd613f1df8f4b61bdb51d754ad69df5d6ed1626b5aceed9ddd6eb1b3c3f1aa3cb4d8b4d646aa754f009ab6c574c466b37fdf2cfb94556bdfbedf80d9fe315b409adb6d75f666b7ad117bf7ceeec74ca72dee6df973fe86bb135173680f1ddbcbd3cab4aeb17a7d81766a0e8de99d4edb7464b159ad7dcd434ceff44e5773f55b9bc9627afd2036ef6c9cdad65c9ddbd9b6b3adcdedd98c7d77ed4e7e75faac9bf5dab6b9675bd587077add36b65537b7ecd772be01b39b1b57cf16a0ba7aa793bd9a27369b3dabfaa89bd5363d0323860070a0d55cd8a79ac7d5b8d7b6fd3cb8f6dd3b9a9bb7abe6dcd704e99e9f49f5bb35fb416b9b836dd5cde15ada0cacd6beb34ff5b6d176fb6bea9bd2e8adfeb8daf6f2f858ce4ed5d92c5559b5e65dd59d7663a9debb967d9a9dae5a7dd996c6ae3d3e46b3ff5f9a76dd9696b2fbddad2b10aa4e6fe8407decf03be763acdbbe3bedbaf33b78fc28c0e7d956b766350fcfb6fbf66e5bcb6a2eff6cb66bc4583507b9d927bf398dd9b6caaa3bfcdbb25bdd1ad7d2de5d8bfe0f9655b7cac61ed7ba3a6cfc2093ed58fbbf59b50636a76a90ee91c964b258aa71ae5ab3bd325c0a24dbaa0e1b3f3cabd97607ebb6afc3c60f35f5671ad7fe98f988d968afaeb97a57d37bf76a0e8da5aa2c2693c962417927cda92ae3d9b85495c9643259aef13c1bf7e36359cda108e0115373f963dfb3f35babfdf81da47b88a9b9fce303f093dd5a2b93f1c4f68d1c688d1fac7e338d6d69311e5675dffdb318b57737fbacd55705d259f5c901e90fd23db154ebfd41abed557f9e6dd5bdf5fe5a9b5fbfd9d5ace6e153adb79a43b5dbd688e5f4405fef8c334b758d5990ee61dbdf1fa47b6cafaea5bb755d752dc5ed5e209d5d2d8bbdacdedacd7d4dfdecde48634f4b5b9ab6f1e9ec860e7487cc060f1c3a3774c870d4d0417bfcc8b121bbe1a3878c870d998d1da8ec478d9c1f3b727ce8fc7043d6438d1b386acc5ef3dce8ec40757cf0e8a123e7637b5573ad7dedee5635cbb49bfb00fcceae9bb5edadf1fb05dac9645b8da93bf795a55bd75ebf413bb217278be9b4a5bd6afe98ecdd6d4ed6438bed18ce6d5b1aab9f6d5b57bf594d35cec7cb58d5f6aa3fb2ad6a1e36bb32a0b7e6fac8f49ab2bb1d571673f59adbd7b6df43ee1eba9bbc4d775bf6b2da47fbbcacf679713b59aab63edcdcb839990c25a34d773ff40eafdbe6f67b00eda3de9841f34386dbaeb9c6cd0deae6e6e646c6ea34556d32359765b97d73535bf54ed71687017c6080b7b5fda83947a375ed3fa7beb35afb3433ad6bb2d9a37be7b5c6de795db3faba39b7f38ed635992cd539a7be33b4de2167f798418fa277d7ca5ebd6f6ed635c7dcbcb7a66976f7e8816bdd5a0f16aeab7b789a93e6a42a0f26bed5e701a4f2b089a53a68ddb1b44389bbc776fed931f3ada6ecaee561555c4b6377983157d7b44fb6e15ab7a6438713d701e4b19866db4f354eb7a98e1eaec3c4c3aa3b4752aa8150d71c3c77f71ab665778e18eef9db77675b0e4f55d9bb7b10a28718eeb14f59ede61d62cfb6b576e770f71a370bb005f798abf72ecdb236dded0230e969dbb74d77fbd102b83566d4b2cea165d0b40f3a6d77c86a59af6fd08eec6535aed57173a3f3d3b239397264e0a0028e0fe00002070d3c10818711f02084071c78c03b201971f7586cf6ea2d93b1ed4ccbd876f6df93df9b9b54b531fb5a4bd3694b83ed7059bbefe26b66f69a67affea1c3f298c17e36e302c663f635b1dd6a77efb20d483f8da6ddfc935fe37c2cddafe6f95795e990edbcd2649a6d77c85eef346096b6aaab7be07638955575cc1610b4c3b6bf77adeac366dbfb2e4f0e97dfadf35b03bbb38d46ef6ccbad99556baf9fa6b23997f33157e7f4b3eaeb1d738707f8bbeef60e38dcc60e264db36c4b4bd5dfe1c6158fdd38f298fa3f9abd31bbb16d5c89a5f9b7faa3591b47ee311e366c1e6375ae6d7f6cd0587735c2e01edbeafb5083490d23f7180f7707809b357e70af81a3e4feb6ac667fab3847eeacba717e88d9c879edea3565b34dbb3831de76070e8c4697dc5126cfea5cde8f0a4163b8bbedcdb9e761d535ef5e5ae6c9efef1ad075f734a8685da3e1c43d5d5b1b0d5e4cdb5e1a34dc6336726898eee9b72fabff6d77e870c53df6afc391bbc75af67db9a943ced39c54953dcd0c1d196ebb838cddba3578362e27b70f80dad83380f6d6b416a8dd61739e9d1163b3edbbd535872ddac6aa35dccc21490e40ee3576bbd274ae7d16cde1848c2b329cc4dc96965336b7af1a6bdfadbe8d9c1748ef88b13caa7ed5ffd1ac8c9cc7783cabfe671f3208b0fe3feae274649d83875e7772dad2d81bb5ac57bdd3e55cfba3d9746d7fecdd9bdf2dc3b56ead7db5766b04b0798c0030af0acbedddbed112bb61e2eeedbbbb29f29d7fd09b1e3fcb99bdb6e90c60cb8e4e07d08201cc72416f9ab2ea8ec7cdbf6656dd816d697ab7efbb5d7500319cddf1e0668c2b318e62336eabfa649bded92ace8c31738fcd6cad6b319e98867d0c1aa9c6e18afbaba6daa53dcd6cf6413bffa313258683917b0c875c2cd53fd9f6e210e3dddac5c1e43156fd54bfac8afb9d7f605c89c180010cdb6ed77f772c8d8d1bef6e67b7b61fedc67013062c36d3be3e2d0ef6e98f174beeb1990fa0ac23d5b8ccbee8fdfccb6a5c50ceb5305f18b97b8d76736e56696a4db31ae785ad753510f95df58bdfa57f8392aff927bba9ed557f825ed5dd69b8798311f5358d5577dae25a96cd346dd3b9e187edf3e80da67b6c36235d5b1c3a326a3c5e36ab6ef6215d5b9b00ae388e009c782c65b58d47b57ddbbe5bfb200022f7d90e4059c76c6b20b4766b3b66c8a0691f5adb8fd66e4df6a3d99b1b1d1b2fab716cabced09151e391dbf5b46d8e77ebd4861f04c04d1b8e3c367bdbd69dfd566bedbb79ddf168f7869b369c2ebee082052eb40b1b8fb9ed6cb655f75376a6dd1d667bd6b2f9dbd7668b4d92c77478f0f0a1696e5bfba09d77f5de7d660f6003840d005a18a105112d8ab4008acdb0eece46fbdaaaeea87bb7b99f765d5d9dbaedb3eabf2dbbbe4600ec6d5cac6bd6baa67dd4fcd3da7e663afea6267600b3c58d16638c8afb8d67119be577d5e9ecb58ffaf9f70eca3f6b0eda09ca3fcfc3be79ef6e29eaee35b81983a15453811a1cdc1de6660dcba47182e9268d106880d0d41000210420280031dc3d36a377ee0bfb9cd63daf5f36bb79c793f5fa6fe66155db3b03dbbb4c7b9a9d6de9ba6b6d5b67bdb6edcea37f53137b59ade6549a76dfadd3d9d7c46231daab9f66d36c5707b1396827e7b49bc3fdae0da2517b3ebb3b4f3333d33bf79dc17ebbedd33c4daa7b68edfa416c7e73d6b8d896e975277fd0cab6ae5ed74c73d597d5af6daf4e005e00f0c4dd63389abb6b37cdef0c7403003733539841e2ee396ece2c6026c63d264bf5ce6b1a9bd7fcb6ef6bda2ed5eecf5877b733a3d1eb8e9a5955f7649cc63dcddeda4dd3fc32d6ddedc83ea7ecaeb6f50e8dde6baefd567fa67dd435cb725af7cc5877e77efe9d7fcdeacbea9f76d53b9fdbfd4e59fdbb86d7daad7daaee74eacaba3b1cd810b017c600d8e81e4b5bdbab712c56dc6b8bc55edace7df7dfbc6cfec1a9ef0c031840ace7dded3c4d0366b637eb54269b2de0878fcdb63b6bb787d6e6603510ad5bd3daada59b27af3b64f705bab103a713a8040e73a5514e3a8548041000002000731400305024168bc6c30141d4c40e620f14000b7cba5e80441b49b41c8921650821061002c6000000000000804d000040021250c82879f68dae2eadfa3b2ebeed3de6196bfff1e865fb8ac39c6842de8106b723cfc16dc2a2f130b21aa27519cbaabf780a626e36fbded3555358ac8f838e01b22ba2019025a4b8fb1439e34344adbeb26de4d46101af23e28a93285ebec0f509e0fff7b7972e770f94dd97a0383163b810a77d788e59aefddd416638f4a3b035a717241df6bad33b64ab409f3c375c34827ba1271c0af105742e09db829243b40b27eebe2d15083c2d3f8dc931fc1b510758658b1359e6f13ad2166d2a356c3262d06cdc87a868ac9fb17693d981b98e0a5dbfe58cdb0d7eb71cdb2d2f55d8f67910ed27d794112ecabe49b19d4d7bbd8864c315d48f4bf404362b55c430a086719aaba5cd40746063a22eef10b4e26ece3bd0f5c42ee79a690908e384b16b05b737b92c02f095f1fe717ef0de4409c010e90c7eb37375ccbb0fd450ad6038833901e745fa1cfbf3c9291adb078c7d3c09a405a0a5764c7b9a09787e60663a96d44090f687449f17ce366a5cca9b157f31b89a79e8ae5a84f1b363f58e395e0711643a521261ac2e9b3fefd08290257b96531d095a31fbc465bfb6f47150a36c6ba564530838c5809e7c471fde041ceb2cc122b1da5a0ed6d43d0d547c870f023fc482775a9d285459c8d575dffc3842bd86e09b9ac966563773db740dc833050a7a5a8b4ba2a2b3a2a2f648ea132c6e03297665dd27eda92ab0e5f3528f00b7e6d75dbce1fc71ae9b6a7ef34fc9f7c8ec5db25e70610d7700ce3d7d376e9c41d09c87d3cef2c976a49d6e8f0b57e70190efdc5e8aa70eba8de2988eed43fd31ff19c4228d0dc66e4ec56e5b53c65f63d7fc939e13300a8fe5163a950b323546ef584f9ab4b05745ae89ebc6e83a67454fe273b46c65c0bb6f8b33ed6c67b0a46ff3ad909bf84871c15707b6234b25bc50e5dc3287101a40a9ec1d789e9a359ff4a0700bb4c9504894b68bf50195f0870a4ce86b4ebae68088d4c464b4359ed62eef1d23983e8f3e165b4e06bf8fff7c2f07c4e66709c36809c9b7f7e4ea20db48680e6d454674fa32dfaa7b6a32969d654c74178d77de22eceeeceff31f21f82f705c058f998750f142438a4bd9440b84149c16269fbcacd72ee86775589e349093275474b681a09837d86041468be94149621fe01163354bcfe67f79c8d65231c3f5e90a295a31baf1e6a79083ae29eb4f178ee84640eaef3b25c8a97d0a5a872f398472645cf2f86bda5fada1392538499a4b28b6281ed4f5b885918b5f6072303b8661dbe72cbe72dbdbe84db57caf3d3145bdc1cef03a909fa8f75f69aba323fe60464f6e47c5fd2440800a4fd0f749106057045dac08457a27dcb0307807630b31bad11d806f39152e923aca66e4c5871cfac3c07ebc8e1e69be4950e409b02889d3772a57de4370a382cdd0febd5444578c014a7ac9154bfb728f46471cc72f0973f883cbe1448be30ce5799ef5abd41f6e86eb3385bc87dbdaec3557f0b9a0b6cc3181cd944b229ea49021794d15308df83347f237eccdc9dd48e92e2f152563823007e70d8c96432a118f6a6bbbd3cacc629b901c6078d7f4c3947a463f4cddb8019a3dc1890e7a9a06322da0c07cc08e615819ef1f943c45bbc820322caadbdb2855e52bf0db0da80e51b33057c6cad6e12836f1c644087cd1ea33aa58677ec0d35799ff905c3b57fac4060a29889135d8a8a8af07f5e0f04874bdd2fcf4fb494f401270df5df976e246915e956628b83c53f9ffe54450d897041c98704273181a6a8fd44898c88927916c8c1af0f31a53fd05ac8078f9d8f8f4cf0d0d4fa8a7a6b358da198d038e11c46920c6ec1b1777a607ac9d53234a9dbd5b610b2a62236cbccf6b8ca58b3bfc02d242887551d7edb87cb16efaba8a1d6dc484c55647976d69ef6a8cbe9221ba9dbebefa16946d2fa2bfc94e2464dc27cc54f1ffe66d63c063a2b9cbfa76fa79bf090245eb21d6bc454894cfcb36f38443c25ca7af9b9dca6057ee74271fc8db74a03818cde0252f5b082b5215a3f0d065d5603a0951e33ea7194a1b37729ea67c9fa479ebd1563ec612adcbeec570c7c23616415d74d5924b63a4a5a32f235b11a4bb0e5d398cb6d1802ffa22dafce8593d21c526c89065a7833b2c8608a2674c6258dc965cf4d1bb1ca144df1d6dbad905db1d450f0ae768e04f1678987515b341a261f50ab06ef1f03da86817ded1cd3bc04c2f846748f97acf26b8d5e104b40efb42a4c032379981fe81528a6d3146b4751a6549169250d23e28276e3068ba85c68de656decccf54a067b5addb57683ccd3d519afe3423bf5d42322a5a9242210b5de3b92ca63b4566bd7edaf938ac155e9bdcb9f1fa482a1647f50513244138a3ba671d8ec94b6aeca5a24d3bc6e1eb34456e6114ef033679c312b7f0d1dcb3f1263228cbeb5cf4d22fb7a434dee943d14a8e8177e5c2e0b35547e80d4dba1875ff533695f12427ed4769a3f51a90d650b469b9887bd3893ce05d3f313cacb9d4709751ac88699c307d94376f12cb7bcfc74c35eb6b5d9099c883682d8b3f0b7b2d029e6abb4591b805f0f0e6e568839d40cf261cbfbca68b9660743d188e108921b0a9f87e139133158c256d6b22c68353ae7d50dd1881f3b8a9349c50cf23fc40d2d3532d6a32b3e0782c37fd70eab50fdf644372a584cc7889391bec31cd63053914db36f5fbcc807ae68f2e7dd9166992571d43a2910ea845883b0b06ba2bdb8651912ea1d81a115057d107364495618b1c35950d9586ceae884c18f27449c1306846171d749665dbdff0434e28d7a16f5247df0484f8ba765a478b2a5c5e553bdab48fffece321f859075030eff1915a5df1b8f3fd9e41c2b946f2a2557c4bc0c46ffd174066c5261320f4f4bc378cab3e18c553b0aa9835b2c940e68a544ee4486e61b839a57046c8b0df9b2bb0d5fdb852eb73a2f664bb1a977c526de16b3149e91255f1cac44fae712102d37947bb8edee9afaac5ba46ed8939c53f2fb5c9b2cc7930863a373c8880f890e0b0326511f390f62d926f00bc550870e8c3c699043ee71f1d0468c489f44f2a331d3b35b934a3adb29a50cce6ac826e297406c78f48d63b9cde56c6b9e71c9a385da32e4b5a8232306c7ba5ccfcb32cda6af612919ad2a735c9c1e72605c73e7497fef916c6f5930e655383c50607b7828921ad619601b83b02d382fb9dc0246da690459479f3cf982b15de86777c04d96b2fbca2dbac0165008b47b9f3af5274f363a70691c101260983d1838549d1c85187f938b9f8c10211bb58d122236212064d4942e39dbe3cfa8af3fe7a254078d4d47167c4a778a4c58699112e518d5d3aa51551e2209039a0d0b396c1f5ce79d5b94dbd713305ac120425164a0ddb4b7f5c7886ab9b162c66658dcd450cf2aa5d06692b83912fc6a4d49ef26155b2170edfeb956cd44939ff280747ee791403aeb5e628c4d251d727bf950e4214597ffa3ea96e60fd94dcaf2d38300927b488f0e4e4c5e54a1072158d9f9916755f9924a649a7dc54241d2b7c6d4358a6b8f1515342827181da79868f094e049b839ac89b5b94745adab6b36389e319437473c9388e095a88ca9cf237d4743c6e1101cc6c19e8326fcfc547c83584e60b7513a8bb7cf85235c424ea21c953222ee5b32f7b57db57581617466f1866cba7e191e5759494b3d3601a351e1093f955d06b0bca68ba8125b5d74fe2e2a4dd4db1c3ed2ac32604c70e3a4f66140c3fb116e6cc8c6f5baebb0108801bb2aae7a0ec71cb7c136ff39e5117f530450277a8bf5edb2ddedf5d0aeeb00923e8331901ac2335b20d365e38e5355984630e507b22e19ba9dbec284830fb7b0cd6d26c4d0d1c6fd912bc3f7a0fbc9503405e8f78ba2c995f4d703c5fbf0f30b415ac7512f3b6eecbe03620e0effe17be81929c836d8edfa0a3611887b972f77a4e14d811eca3da321c72eae6507336cc5198d15cbdecb03e175f66c32787279376752e7e38dee144414e0f39304b91cd4e8ba25ce97540e93621989154040005a0e7ea78143a836185053c71fff82d3006a3039f04b8ea25dbd8356b17f33353fd826aac3b50de6ff71c1d8782a81799eef79559ee4d25abf8a213ce3268aa756c4ba58553116564e350928d854486195ddf031c3e64b489f65878cfd985aabdd52c08871d050cdfff499fde71a2a62af7541f937b8d238adefa101b58ffc1e6451e895ac4349bbdcea813266e7dc209291bead1af24022cbab8f3d7e80801d13c55bc0c93b39c5508fc4235cc9d805bcd0c2a8adfa109b9c4aa471e1242cdf780807cc4f484d605c64651dc1f1aa776210be31f300bd5df189d3274e063807ec4740269136ac223781ad4ee783344eb7db0898dd39e152cbb215fc0cec3fff688f1a473c9423f53373e91684dc2931e1f734572d3e2e403c3315d5daf2befb155fc22b0f39e74e4bcfb630c8cd52ea092a9dfd81322d1b549b5897464b6a534415ac47e5e42330a173bba79410193da4114235e5b72c6231177fc7d8a0e58bfa3885b85d0a882aee7f55387014ffc2fe7945093f0e4be33a0b4cf7c6464bdc605eb2fb413942661327fd4115f463263e042f8aa7ca620b85bca44c528e1567b3d26748596e2c9ef00781ad663a51e0a568cc769e16e5e9c40eb740e301154f9abd94568cdb67f8ee4b44bef8630d7b8bf80904bcad865d123274fd47a2e0217e91c34818d4b7090b256007a26daaed5d3824ddaf3ff8a9255ba42a0b8b8a918b896426b7cf3b5f75ac123802743bd2f37624f0ae25a211c0f58a7c0786130c72609a673a7533a7a16672d21f6fc33f02ab5294d35f711db747abb911ffeca6eb09d2728a844eca4625a2c5dfb02a23f2baa45420399b2c09a0cc04c5306fba6a443397a8a7bd479c2f3ce2f6bc1946934e389109e8e73d2bc65a02b8e88a543acf70e237bacc5df3ce725ce3cfa73540fcbccd9f8d2fcf6bbf0a2f3f28c6484adc0afd785038e4ff22e5f223ecdf4dce7d61cb1f31e4dd659c68fdfbb79751a3c7e9cf435a65638b51539a036269cade3f5236dd78e051f3c58f1573e4e917e499f753680dfc2b76ce2a22d9a268e27ce5c6ebd18a5d442a9920b49c448c25a2ce7c9ef4311b88ab239e292a829764ca0482ff7671433800abd31f04062063e50af47c35b3edceaa4aa8b410ca9ac6cce0da8886d2befbeed39ceed732d7388c067098060b70f8eb517145b2866a90e024bb81212a38390c23254d5c7e6e42754904d53426a8a683be7aef503d58f8ce9ff7c33fe54a1360afb1ed415f8d169b04528798ec47cb4bc7dc69027fc3daa4b241fc4ffb1b5b46958f9958f43547407e26f6dc42f93a17bd37174f493a86f255bce29b22d04c197bac1779cb56ece7afe1bd3b2930be7aa519d095cc56270c752d4347a2d9e88de8d27d82831b0aaa8cf0f11fef0aed191a3fcb709573580ad580f9577793756318a217e1e59d4147250cfa9b733d7bfcef16cc23eb0e304553b2eb8e4f8d7cd899c802950f51e6b416def56cabb8cc68431d952e54214961e4e79ec9c6e8622852eaca928096f4c209fb94f6c8bd5d7654a50fe3b92a5a07ddcc5cd0345e149a4aa05f386a430ff938b9788dcda100e8dae4d80cbe656a87a0a5ae768a94a3656ef103c1771a9124f8ac8ce75726de23d43c6b212df834904ff0ec72d5303136da03d6a1f86937a165ed88036947719b576b04f5de5497c70491df400bcb1d1860f367fd15f808d7326dbb47c3f3d16d911bd38b18cfa30ac383329467ba6fd090ccdf33bde505c86b74eddd57f336e0d1fa7c7431728a77464f7f172d027a11a8cf456c5e901eac68edf85e3d5c3a43377a5880ef0953d382587de487aea04a5b8c616d938cdaae9c5aed78ac1b63292c2b9960fb46a7b8c1ddead40f4b029bfcb06cf80994f888037fb1caacee664c62ada7b4f984674beffef1aa913d21ba5f2518f30186586b7a49dbdd5bb2538a6536cc440dde39d4fe2c36aa300d5212d9b6037983c93396b16d92d2f053f83758965ae12b19f9ac823891bd121da62b353b99f7e06320ca9ee60000cc2e431d1e2be1de0f682daa193afe22a66c5f7d77c8efdae355b3fccb2c63fb8478371d0ecc113acba0d705e66e99909c54d71da8f9751e7c5159cb6d089756b14ead980d3eff998f5da16188543e510875b4601196680d973105cc15723e10e3c87b0f57d6c807587661c33ba782df7d0d6bd2367f6de809d57f863f40465c4292af2ef4a6c9d889de213b8e02e8cf08e7fcfe33cfd4b18820ab0bf5f03e680fb7ae39d1591aa28d8e01804ebc62d1438bb3d391a9b204175608d2d3e23315003c0840dd650c9424063b639c10ee053bf255a5a3a1c062441d9b7744326f174a8213c2d8bf34d6e0c23a11a31b7eb30db150b5f280bf6afad27430e84c960c6f89919a60098d2d4dbd84f65bc8ddcdf39f39ae65c0d9f659a0fc83df1baf346aa117120cc277cd1bd0dbbb875425ebc6bc04f8138c3dea4346f532846e93690609af0b9a46a9a245d01396516202a08c8b7a903c4fc0522517bf06f6f4f2918ef42901dad45a6b652475acb6dca495a83c013c4a8c2306962165c1a6dca0f6369e1569cd61a7e23a55a16a7815301e1f6205ae1ef054bacf9e0d9f4b0fc3d2c3b61f088144103a11eddcdbff800a64f65b1db14d2e3a5c6806b903120883de88196816c37e21e2004f20aee5d270027d42739baa03213a8df4a3cd77ee03dd29004b44dae88891ba1461f6ee2294bc52ae1c6c08886623817c784455e98782ac4aa2e7a38860d8efe9c06b7bf7cb102e8aa38961e7bc1a85fe9bcac7f21af522b241119e705c5fa6f10000f41dfd8890830186e0bece75f6d2cb82b944b7b1836df602238d5f162d7badb3094f34f6cce1adfbdb64e8837fd7bb4f8d82d90a5e479aeb9946376d6f228df33b6bb5c8d04a2c19204ac08e961dcc0234286e77050247fa21f514911d567c73a7c22f6db7de71fefdc641408f1eeb6984084924693f373bb9d68957312873656d80f521632dd4db4e137ab899523663ef36eea8ae37d5ebad39e0418697df07dcafdea90916dadfd1f4edaeddc4d57288e6232d4c551c021f51deca4a9b99c2ccc4336f7662d66293d9f07e60af8373a9acd494aadb209305254647bda907a74b3b3008a6e1d076c28387389fdcad254a16f12dc587de78da21da710c85d9d1cb3a7fa165646863e83ca6bf1628c1308747a135b7b6d43e42be61484a595453c16e9fc52ac61031619884d6d4d11f00ce4f135e26e80204ac8b86d2874427b04ae397d8c990dcb7e24ca26403954f92b0c4f09816c9be069d11207949b4b52b06a90fcf0cb1e6e39c5d2d3b02dee26723c7dc84d63c4e944ad631984f3f621f9e06ed014803cebd2eb678cf6aba1d502925a279adf20d53259053045e7a289120efc57bac11b1441660beb37564d690a7d41d0b15ffd679dbc9f73166ffe1cd75c5161f7408de9abfd275c982a65a55100fd077f34ce32acc2b33777af0523bfa95bb02289253e7d4c6722b6d2da5705ecc3ecef4d9519f7b01210321723f78361f034abae0c208acd876c62503d1fd527cb151b6d8395fb1b980df9e444db285de735830709de109de0754903178ca985e2d273df26981bee5504044f8e7bdee1799444a2704ef8f6f1043c0a24d42901c7435fc7b50a18f7a9b487012e3729039d814971f351db09822c64e44867e0807c7b21655ebf59843ca1815b30e26e462b4e89ab09a0e8f707f080170053af1db0888b1499da809b7410bebddb6ea13078fbafe0e48f879cb58e6717e1542a1db67e5c1e3f3eed991cd4c2a775a591149f2870496013976015080846346abbbd1ab734ff6505c78be59659872d6112e885b08600d49f72fbacad074dcce68fc5ec28a1369b0de9700cd8c2fb4d3996141427b24ca1a3b747566912fe01374a7b61128c87384527833be3787226ee4453c2066f8f2d4b468cb141a89e6db277bcf463740859105086b78e5bf426ae6550ba0f3ce28fb15cd0a440a08dd2579ba12872c1e6cdbe520478f313d45b48acb447935d3fab18117c0f370a0143341b7399354156f0164f52a6b934d77c990c680fec3832536b15e26bb5aabdc91a36dd0a37885b95cdbce6d2b1806d48f8aa824cc2c6976bc61f1ea2a63d0370635d8bf79627036fc525ee7a756b1e60d8b0fa821c92d0ee6587d48c220a79e7fc60c1b9952bdf55ea8660fd1565b7a182a26b067009a4e7dfb7693a26e325d4b893ae05f8c8db0e7f56f367a984b879bfef68e304268ddb63e70d7253c5fd2f1d14493db90804cc77c982081617545e1461a2392456e78921eb3cfcc5710b7b60d8456fdf9ece54b75b0d63349debb3f88908f054cc0d82edbd8ca0ee635b0e840e804186b9ad4da585f667855141bbf012ecc93cea103969dc4444495dd038dd39e7ce49f1ff4f525188a6dbea0ae2fe70367ae7bfcd05b10b9efd4287321b58612a239d2993c4a77320219f14f7af8811d81f0adfc231af0b3780269bdfe64d6caddf657dc88e8564b055e248d14c80e6bb3441db2556fec25f0c8b9ca347e434b63fd95f5f60fb6b066fa14d60c2c9997523df34953e359e4c8ecba58d142bb77046c0f84702be143ccfafe7512c694ee2b4a8097775a8a057756b4866b31987286ef5ea38f336fb20e434f05e71cfe1a959016c99da92e7ac725022f5298e48ab2c614ac905c4aa0b3076bd38e58ab2ddc62da1b1037a375cd0ecc0734d6074d72c2f3384b9f9957e1543afa25e973767427a2a42e81f4cb4be60407ef8870560a99ce8f92e040baa1af6fae915b894bc61859863d4184b1456dc8b9ce5fbb2e99a0aa6ff7d733e442954609a4cf9fb5d646be9686f9914cbe775eaef74d9bfbc38730b0ad079a0b4a3721de8e073c59abff885576fbdf5dbc772064a59436612c273a53d0e4525df609cdde08fb4c384870b879ba87e89d27c2d83c19fe23e2f6f470166df37e4ebe235dd032eb0263559c48d3069c0a2783de149a1e6b174c4d9d91181aae2a4072ebd3df19da43f20ccac4953afce8aff3ae52f2593b1d8736329d0d4fe0834c84e099b94f4442466d27f8f5630b15558a0dfe4def1a3a16020c2c7c51001b47e17f2727100f09ef64aa7a29f2e098f73448e857c0e4f020c5e26a2409ff1f503cb7dbe96ae2e8387bfb4fc8c05a2e048ef0c293a1e00c20afccb9ccbbe04bb92814d6d5be6b29d2bce0077406296f06373d8e747356eba0920327cd6b66256bfaa9ac61810a27386b3c924b50bf506a7aea2a39ed9bb5e71ccfa4a400333b675ecb9a462f462ab8113070cc3695e985758a47f598f1dc8f6818d213555b1c85d16751c89e74841892809a4cf2798d7b72aecacfb417e089908f9f2f067428055c07218b602af62a77e5f35b6e8abecbc4dc20dfa4ca273f60ba322a2f341bc237cd9ad4398403de6ef136cef62ebf049000892780dfef469c8783208b37ef90eff2bacf91f99eecc5a3b993553618e900b32de3aa7f0016a19adfb0f0a309cc58a4da6e737c4754b13cc321dcda6dee8785c91c6cd39a35645d79b225af8beea8d3c94bfa90850a1c5df87ffd91d4c8615ccbb0756c275d4796000776807493fee18e5d7a41da27603d11079177d0f8733ee5118a44e83fa83280a2180f4a17d5542e47244f9e48deaac88b25f93ef0a628a3b7cd2f1b15ff82a186154f1b7fd192028b2c1ec1a7f8b5abfd4d15ac876dd7d5478cfb7d1983411bac3ababcba425c5b225a0612c7b90b23926465ea1f675e48632cc9fed7ebabe0d3800eaf29a92f5e12bbbd194dd2ae36064de0a09941b3484fb4795e4e142e03ad34841886578c0a2d8011e7e92cbf3320914e87448b21a4cf4a8be99a03bc22853d6361841cd8a9e1276be92e7fc4133f5857cff14b4815482d25b9007e0a784a13cb37351483d63a57dd0a5529fb636b4f0591e2e9dfd1cb4bf316642002829f9c578d1ab94fbbfedc9b1cc37751ebdb78518fc4bba9c41118a482b70db765c8591eb17b2e534043e62247cdd9ba1809d53afd90dfbff76a252599e06a201aa44cbda22096d0eb6e780d91f0922a79e59bf9ef94d1ec1377e8d04cd1c96d91641b4e8c755a4cf2253a692d3650a1f3c85f71ea9d721c4fcfbe29197ea1c64219144471bf592f3cd52c646eccdb4d5a3aeb17133920376160b81173bba7d997fb793ea7b9cacccd5157c1d3f2397be293db55dac1fb017f053efa84fd8ddc774d3a68e6f1ac1d1e23062f7e54346043e0d2b2cb6799a032548287ca6e5fff42cf52ba96434b255501d6cff9f90b01c6c9c29f3e66191541aca2aa9665a7286c3558ad5804cf447646c003f9e27b1e6d25e6d75c018fa4f318959786db211d2de946290ed3bb85a2fb0ebd67f4e360de3d74ba6d52f90b91fcb9205f283c3acbf6e46bf42627e2f57c9ca6cbadf1b7a3f97c230add4beaeeec1718ab21ba74cdf3ea039be23efcc1a6dd7e33f5f527f37e2fe81b94e1c54c5387b416bea3e88c3fb975d484ad1bb4ae1393c3203cc3f21f1bffad03ea6b3eb725f55a93da26b5ff45fbf1136ec7fe3c8af502505b0c625db8facf6bd7ce12a7cd07e1cb1f0f612d7b6ff7e16894be63591ec4c7bf89bce83fd1a47eade1776cb17faaf866d0f3a43c8f2df630b8a5693eda90db10b3d4ed3c80c6f1dd7f4589d0861ada5fc2366f38816891e6f0a74f1706a16c6e15a8d37623108a7fafacfb7349c309eb67b8edb7ae8d5acef224cc51dba390d602e3938f328bbb6731889b339c5e3febdb2130378b0239c2189ef5d2935e844f0d2f89e26a4a23bca3b7f398854bbfa8ab9164bb1cce2f09ab3e872bbdd07c44111b982affa9c87e43609479de2e369add343736185ae57a4109bfe577fb27b1df8fdf52f25b991c014755ecc725ebecc2df8cf0df837b515067e4f5bf19c88361bb8feabe53c61e0445fe530e268a8164253e93376314f6f0e06b4f0c63190e31c04b5fb14ecebde953378a27ffd57077d001d9955fae70ad974b8a9a37bfa7033425331575e44873b6b7fde4cee0ded84b1862475e7ea5abb0f39774eae4555b4e8f9d0372aa9597278e653b1f5064b60098082d9588c21007fe4fe2888a7a3f1ccf459346f3be2b8f8c7bbf93ac2630408867e57da04836844549fd8c4dd3dea63067feab2ec16a71400a67ccf3d1b36dad7e11830add0624abc9e827e956cda693278f41865a0c3432368463e60afba81f6cc1a1ee0259ea2c3bb0cb18a9e6292da21766f648ac7e0805896fdd4bd260a5a8ff40448068f20e135f6ffa9bbeb8a90729a500d9261159cd0245b5d2f76087233334c2e64b14f260696b9c2218282d14ba181a395ec8e4717c9ebbc4256c3a43a44df1d8088fcff3b03a0d958c9c5fddd1c32ef4350f291a65f1bd64f336fa26058935529287e1c92e3173190d6a1935c329111151f5b954ca0e7385e21885fa0cdff4a2e27517190e52ebaf3dafc72f9d70387f09b7b74c42542f21bd9bbbbf8789c249e520381e2633f49ae674a6384e7a55891297a45c86bd6376743c576b36b5a19f2bb464c7738650b47167e0354330d1825ea858eceec2502d28a28180444b310aadc04ec89d50f1e40840616ad0852a0e70632a35882009cfc03b7818ff219267c4c851ac51e97afa1ed24203acf18ae96c29282bf04a043b7833cfae6724ec241944db1dc5d828ad8169def9dc6d19ad88249820b74b8de5274ea0d065dc168d107c75104f809d9c0848200cb5fb41b647019e1207c018cfcf51abd2a2ab795001bd857692c8158c3b3c9cb97b921109e71a33dffe00de2a5df550e9d1c4517c268be9f3599a740851b6dc217f8130d44392c970a354029fd2dbda95108bcd758b150ee172abc225f2df768ab7459184bb01ae5bd67609d63746a8d240e7752980a2d3bb10dbf6615487b26398e158b1aa2654d71646900ab7aefbfef44efb3cbfad0c6b19a074c0a7a67e440b2ce1d15b320b1acca61d059c3c383421fcd02ebf2ab8fd801625bbe7d030e954ea7176c430c822dccecdc1da9447cd141231cd3608aca3400e566f9882a7979a728562e1d9146ef2c3647ea0d960615b4801ad7028f640b1e9a94b4a8f52ef71df25e28b9782c5d40663bc2d63c107d9d01dbb7850953c9a6f54720cdf25f2fc9654df7c1ea97e79e3b50ca623a49ea522baad460e42fa094a7feee3dc5e8fa922d0b280a17a0077590d2bc178240ec42aaa2fc90a5b15d8bfbda23faf17d6f80aaac9a5e5022814a5998c33001d7c2c298e9fcf2bd9ad17837db2429cd8b11b069f642d8e2d73692fda3e865e5489c5dc5b6daff4bea50961577f66fb237d938764553e45a35121f6335b56186fbe9d6707a3278e5e8eb123bad4fa40f843cb1e212ccc32e1f98ab2f541f1abebfdf092a6d3c5cbea383cb414b13ec14fced078e3d874a67324e3650415b10794eb564122e05681abec22a7d21fb106ac8e8818689cbf354f80eaa23bc3731fa2079bd969c9f30979a0b995e011a547794a542940c3adb2b9f258450c2076bed81cde0e46e1bc361a11c03057c3390f7102a9b04f18c42e2756346734a27aca4917508a2e3fcbe8f7f229eebc392878045ce629ac0e784aeccd9372e805efd609577aac8123d419a1efd4514dbbf8f15e8db67dc08e916e4f57f4121e0b14225a1c99f1e63f294070be5a0d12ead7abf8c19d40d014d1830b303f81bf8ac83fb82f0a77ec36ce4001a0fa2d85fc2925cbe5aacabfe1210b02e99f205a0d4aa8d898903c8f421cc681efc401d960978f121d449a3eb0dd9cf5e71c9351f6f7027b1fddd57dca0712ed469b7a5d5a58bad1dcc813116dbaeb186ff7b0774d5b322f5cc6c165a45c71c53e61c02c4c28e8745cbf50329bab9cecc8ce6c5c31f8eb4d540136d854b2877cd11a63c481ad5272204b2c60986739e26c525bf825ee3fac5a15e9d60d3390297f18d7b1bcaede4fa34042bf1a2da42fe0162bc37ecd9eb5d807b42d8112559072e8b1fc91bfe54f852bc3ccf65595e7905607d1fb70ee00680cd21a676c4950e0f8473c0e15057a29ba93560e5489502856981d03f94ec4321e69439621ca6aed13424ba4bdc5aeb3a1ccc4c204f5a540b4b2da810c242b39abdc1b666928532a2a9a4bf1905a39186cd5f280503ee36abf62215482900c5b92d2fcc6c25d02b1e254d82a985f65163fa29e4e4128ecd0062f2a40f2b430fa5f1e8cdcf217b87c3a4761b566435941b32c1fcd130321b1e65c28e9e8aaa3cdf39efc8a9e30e3971582f69d98c38e97288640072dcd2e83d145c90e9507d7abd205f1e193a5828052e50495ca87424f417d72de548dc4651ac1c822c33ec16c389cc5da5900fe3a707bded38a0072734a809a074a4d5e8299ef34617f9807b0d147a397bf84de374f5132927abb5f6f89dd893e044628ed901af52bf1247788079a069f1a1f04718b484abcdc087444903f5e7de8364f635f38318b0b0940ff8c8c596f4022932db5e1149a995a4244aa304a598560b8cd3be004efa0070de17c0593f009afb03801f01a5fe8233a765a09bc0f2a9d3a2b62488355ffe9abe747d6f81125f0b32c12b458bedbc48e4921ec9d9d3ca522aa57d58062b383b913215ce00c018c6e572b6260fb762190be1862517731857963a050f3ebf8d30f89f6ae299403c4cb903f96a92b3823b17fe0bd64d9cfbcc6b3a9a0aca7a3c68ac86b1a44b9dfdcdc84d8798fe2c55a113d8fddc96085f94168ba4b855289b14978533baeaf79114543c9fabe9025cb6896f2b574285e82ad1b41db790a29dbb36447a03e6ae26aaaf25d36f47571b8da5fbc9e8f30c7b71c6a980cdf9cc25187afffccbe32d22334a489f4c591e01c85f813fa460f1ecf51d1e846039791c4ba7c8aeae1ff76226529d336db8dbd454921014d6213c04551c399f3883337b1c08857248dc8453c69c98a3d99948721afe8e0a007a61caba7b94bc6ae81f7fa74e70e692ef30c549345b6beb57aa7d5cc655cab4a979e137ad614a9d0a86a62e865f51211fa0993838fcebba122921a4f5ee83e8069dd20b45eaec41ef366fd940063582f936f9186f781d2fa8bd9e0ba74f4c14787b8a1ea9d22247c7ccdd8e54e482ebec80262e1b583f437c222d12372d1c442818155ded7701c33b4f045b089737f2790c08e639b694510e902e373b3f0736e82fd9fc43fde709d4a35441f755d2334ff13db47d1340bf6175be2af3bdd0d8cf101d369cfeb4ca5c9bb92ae96c133af24949377572ebc0b49d23f9ae7433548dccbeef6037ae503adcfc1c1528d7f27a6e99a4c40b2da894114a4c7435a618de15995ab6ec50a14c4572e7f0b8a1d94b1129daee6a231f3ecbc3871b9234cfc187b0b843fee3c1a868dae2af2459a690a2e84a4e43b1ef7a0109d6016eb9feab4b574f9116445a629d186f30626ff0f501ccdc9f12b7292fbfe90e870ba8ac58e730edb0fd2210112a4f33ed8d405a65fae6d4beebc33813a007edf83dabee8bb85b83d87274ca3d0528f17f55bfe74b61b8fabb15d0a94e8ce0c34b9e26e2353589009c2c52d708a59d45b4132a003fef506501bd3a821da729c4516b5656dcde8b5afc9dec0921b4c9ab285866e80b7fa79c20ff97e8b705b2c496d7badf38a23097bb5ee20c30d0eb656334dad179e9dd08fbdd3d62a550de93accbf4bdc6d9da094dedf2c5667182f92ce477386ec339940573afb8946592649055196400c8930df122c1fe87e23a78ba372c20bf110b4558ba159afcaddf4843515b557ff1b027a11b6df671f6db884564c04e33d73ed0145abfd6502a396325317d2902fdf510fd8e26de30f9f7a3e93247c040c220bd4a540848bf0eb5f09600fb36426269b1f72d9496b7a6162f869ad22732a05a2563a6901d658b16a4a45b14823eb34a53f584a0b46a302757db55f86ed54089ab06257a05dc576b0fd103dd1751288d21e9cd64971810153f836d3b6dccf71ac7152deb36cd077a03cc9872c00ccd60d1376ed97fd43016311018c870f9d46c824000acd8807437944419d26528595ac4c18243fda73b30896c48e063d1ed1a76c17f50d240473c88fdcc65e202e72c7a0444fb6e28353846bf0f8bcd55804c0169059d07c826d2aaf4bc2a07a5da720c36ea054830a940dedb784794b96c255a3ae77921a38de991abaf9702f40d64bb9eb5fbaa80bda8f44c156e4eb6d86c30d9c178cc2d0e55b32ff5c75f37a2a0c6c97b2555333ea88131a67fae1044ae186e28b70b9f11603a311c4de61106d9deeeec693b3cd663fda04747889639bc9dfc46c38e7955fb609862efc9fc22cf23ff5646623c411d11dd30ac34821e1642a5af92d731b94cf19a0e686f4c85510ffc6a09a577ec2f925addcb0d8bc379f668945f22aee5838acf3a28312a750cb3ddb0ece318ff42bd627845d51fa1e7ea7ff0ad2aaf3df5522d2d9184a1bb0a584dddd4054e946c80caa2a438f8827219b157b12ec59e8236c54dfbc63db2ea63f5fd6227779a21a048d6cce6cbef51e15c5894a40d1ab22019b15d798a9c5261b1725a7c94581e1d7a6e17309ee1fc60cc85b716d57fc9d3e5194633b5cf97c5afd46e00f92500a7345f90aeea4e592d5a5fad279866618d616f0b8e4baeea2164db83b75f90b1bc8cefc41673fa9db5d77ab503e947600e1e44de8e65f29488dd1db00475b69dee5ad3247c74d5273bf8632985ed3d682953c485d0e55cdfbe8b197305f8c3292ae3ca89294a4c291c0c1cd599e659e0a2ee290e36e9c5df499604987f2a8ca4361b68b52b03f3b819d28af64abb8f2a9d4a28d763dcfa426188c570f433837945b2721e64030d48412ce796e335cb828d1673589622ca71657a67d0a016337e36714fb4a22f566205569cacf820c1c4c58a1012d21263a7845c0080879863af98c141426faad708e65dcac416de2061ba6e06090ed2eb716a3eccfa5b20ae201c79c40fbfc0188779815fe18d1ffda2c754827a4fa96c74be3cdd42dfd1621b052543ffc53461c70851a136618e1093aee0521e8bdb0ac7e8dfaadcd8e080d41cfbcce0a8162f80b06277185458fccd2031d9a9e57aafa6bf67be07bd979fcbe36f87dba29a781d23b50d9d6962b780c8b7d093d0dd1ef4d52d41580882698454b9188f85cf5637b1eab3670659bc3cb3ee07ba39a11403d840f8ea8187872f03b1a4750f54de245df3dc31ff448784cc5d8f651fbb1b87bf6cd1622335dfe419517b5f591a55c023df2ae49292329fcb311ba5842f6eca80bc5b686cf4faccde00c22d54b931880be53edafa783ad650137006a685eb2992bb4caa53fff361f0e2b2eacd9bb6331a745840fd5a1b39ac0b6a180506f0f2027f7756c70b2d8f2722bba94fa86f58aa2230777c095d1616cc0122f09923c74a3b119e51bf60c89a0720f796491e91be7f95ca0aa54f4e0122b77983368a5230b7047e3a3d63f1f38b9021ce38a6f98598e13bb06f902f1b4fa52db63dc97ec594561a5d6d8817c5a0b57d4994015eabeaa2195c8d20f673a01b0e9b66718da7bf3314fe0fb6b2f725510678ad6a3d796f25e6275bafdcf624db2b739f7a698583f381a2ef4b047f8b9b7b8cef9be45bed3dc1fe4af927de5b09ff89f62bed3dc1fe4af927de5bc3c11fc2dd98a1fff2e59fe3ee33dd905de7890af4b5502aea43d536c1a20abe56d78902d0b55e2ada03aa0562f751e90f4b9d337d1d61687a10b507136fd9f404cb2bf39f786f25fe27daafdcf704fb2bf39f786f8d837f08f77186fee7977f7993fe0c0c13fec6415743241c9e60e9b91b4efc6793decb4a936eb9701b224de0f9abf668d08436a8d13fc67f748bb6f09f664f74abd113ea03cc2394e0b66f82d11840a405f0540030177868cf4ba6befaafdf605213526a4a7129a05b1091b0156bf37415c39ad009e942b385b0ff2e82ae0f4ed1bc14669b86a8a61d05a8a61e55da1300e89e287e516543dfac01e6991ae1ef1edd0be16f6b8779be16f8676a87bffbd03da4ec62152d7cf9ca28765185a37c9c2d251e70584da353c761e711f7dc1fd178c77b99fae173da9aecb8ecce75e4f48f888e20781ff5304fbbd4117bbc31c6e5991300be56ab1db3d603aaec5c1b9c8144ff9fb244ec1933468e368c6c11fcb24309dff4f8ea8fcf314a7c8e9082490f41a7a821f03cac0dcd85cb24c2d91fdd68949668963e2f4507f6a133252a4ff5624b049649af6e4ddfca4b7fadf16ec52152c5bf51762c708d8f57cdf5c1802ee0c1fa5e970c7d9ae33922f05ea3d319e5481d01ef35b6bc14efb4dffeef358ebf4da55c09e0df5bf2327913532030ec51ad7ec7d79f5abf1d1b51dd6f3ea0d5d3efceace7424c565dd06f444a379afd5eaf7443dd1edb976e6e563a286a5dfd28f09b570ccdfdaef002ceb9a63ad3ec13e4e0af676d8511ec9517296acf248ecb9a268a9488ad0c0823a41abb9b6628d44a0afda4a110b714120561bf245a576ba04659dc2f02fab9ac872458ac3e81d51227e5f0b01b1102a26158b2eb64490bcc5354eda1eb5c2071092fb670f165ca7e9a7c12ff843248ebcd834d5b1ac075f7b56ef0b2102f6a86a20319d376cb2a4545a1685dccd1b82c55958a37c7c6b3afe4bfe348486c4ce7fa318477df46f8a045bedc456ecfd708f714e45fd25492d27d4577042850258cd3bcc6120afedd8010100d4191a1cd286ffa7962be3d9c341718d021879d73e2c0ee4b8b4ff54f7c28e209e57d68dbed619bc1c6421c14e8c973b9d5ca83bd43a570a1ae1469bc005a1352cdc0932fe0b371254c39ff37a07fdd1ac2bb63a3fc81a3a2387280061d0080061ef0f0b9f84aaaff995067271adc5fa350fc839a31508c73b1f0719b1900c9227c6646167e24cbd38100a32bb1f18ac66fcb53b16d0a6ca342bcf4ad25091127e6a82a2fe05267ce1c006508392380ed1c74988f5e6ecee4de27cca4008ba7f793d36679ed06f873bcc8974ae9589c13ae9a9ab1118e999bc162fe894c0399c74d661e03a2858b91870c9f4e6c06a9109b7704d0b3cd300f8b6d6f0674955eeb197b7e028fcfc0c14c87bc6e7382d181b99835ce05c14c6a8e20e65fdb1b0bc61827553803ba8c3a33c6156794239c44d7ec19623de9be5ca1b16ebe412aab7219d1761d4bbf597acda6a08763fc052da378d2c075677209b704e2f43f2b7ed3fb0c83e5f8d01124bf2532e1536e1fd3c5d6f66f717495cc42428a193d9bdce4b4da2d2504a72243a33728b4a1c5da28c60dbe7aee1e9ba6900a1260e96042f2353c73593233c9f5914de89a088e426f59b995d75e5a533f05193da5016544638be886a66351f2a150088c11fdc96b344fae72c91290a9631205aab4a46193c64e076c60ef6f47aa27ee8d38605cc02347400b1294c97ee7f1504975a4c3555858ecc0a8097c8c7141b9b618dba0fb55b7a017bde55b627fb661c859faa68639c116aa17daf8d0bedf1989cf445ee5f7f804d103f521a4f86d504eac04d6b3718af36337162c30b545211a5bcc2c27fc8e0a475a820889389592dd63631e028480566533840b66334e7baa2f8ff5c6e5d825a8a0430352043e23477f134f0a33eb430570d92467e8126753eb7308a352c796c69f1f681c4958ae6bb6f4ef0af6b3ccd363622d359b90212fc8d8d4ae8f27d4f748ea4a394d4c726704ef721712c208ff5c2f9ba4a14417d0c8865075d106c37091248ec65cbce4a127c0352507a1398aac255ada0ada3bbc5c4e15915d7fb743444157ffa010838f8fa693c3c2d51e1c7860db88c0e183f76df766819602ee786060d7678f75571d160f5de50cdcc8a376f3daaffb4a5bea6073d94b3b53fd6520073a5e25828aa47f59a391c552de2591d676285971e27e95eab2fdb4e4c8ca5b47a9e4f4dec15ab50a96e04a7f9d874fff156608dda70ba75fb22ab5843d72107005dc0250f6ddee7db041d4d8ed3c17da90ccbd69a2009478569c4dd491356522c683561b631a8deca9d008bd9e22ec351e2d42b5259d13be3e4c52cef0f7cb644ac60ba6d6a6587bc4dc50ec8c46223e10789b423eb5bfb498ecb24810d70791f3a4e0145e4659934e453e8d837cc0c89a19a4e1e7d805c40933e1daea1ff83fe017a1b0f6334efc8dfd8da80aaf1357997c38c0ec8972119d13b01f552941e8ef8cd68628f2352e8267a5ad17739487dfebea17366a6e617a2d159562ef51b21b6d2bcbbc285a2b6bafbd95219d0f3bbbadf7ce46aa8933ab8fa718034b9695db4bb9f2150231cabab26724441da00281866bd7e6208e54df40ca09083626c3ef539e76bbd0a533f159952e7e2be8426afee739d09006ce9424f66403df2bdd97e1f9631d2c2f5d396a51061633930baee11d64d86c9ae542fe69ce6f85e1934048ae140b4f5e2bc41587235730830b4fc5e943cf03beda7e4f9cc2913797f078d20c456277d6b1c8362b3174b013a939ec690143f799d47623f49bfd94143d3086a0f0d4173dbb23c8b3a7157708d1c2a6c593936f5fc592a95205d66e9c39c65e4af60bdc300b1ff8cee4b0cdae2fbb5baeb9f71c2f5a1b64d69bc32a5566335f3fb77dbfda0578e02fc66634b1a03955b6f0a0f20248bb921bda2c88e196f1eee811ae27186ea0db4c462a6a4e8b4d8761ea09ec543b0e93cfd493b3f6ce11ca91f90ece6e523614bc8f9ceb4e05c95ba6316aa02383c673804d8e4c1424ac0b280d81f6d5c5e6eeb20472a705666db4817640b69bdb9af7a24d9826f55d139be1086a10447338c534c8cc38ee461ac4ef838fc4a7681027ee89a9f4c0e6288ad67abe926e3d0d705c4f8cca79e43d2e8f842d6cfa65bd9e34696de5405cc2b9b7bbc312182001b14521c2e6b35d666881aa585121fc7d1fab98208afe9d19291a1fac67dda28f2c95f0b5117654df34480c09c4eff7e11484486523f1d1dd0e38913956dda71eaf11f6c56eb9297133af4a668e4b988c3e0feeec0c3c525bb5d2b2bdbf65632e94a58264011fb253fed8d2766c143796ce652c6089f53b17baa100f46a9c77ad71089f0d1e1b56cbb6e9317eb5eaa0c09dc968e57176a1334118a0300a7f55a3da8f10025781684294251478c15aa5d3a54ba220119f2df9bc029533295c5b6d7c4bc5401d1ee034c0edf169c6d6828403d4c1ef9d5b02de5c3e3bc9d5d7d3e792bee3ae675178ca62e401919f09a4ab74dd128091a646f62259b8fbc7a48beabddacb7d6c2ee26df663ccb82f59fa4c0a14eb1b9328586a57f697bef9df21189f5c0105b402b0947bf9e62e611730e48b02f651f0afe3f282e15635edd6e553e668d7f1e10630e861d11dd7ebc2df85313cd11db7dbb1413edaf36b81394e50af6886830efa8a44e8b9c0a0cb8814d939304b361cf2cb5009efa70307fd85a5c92d8d092b39470dd68a7a16a123c7a746e0cf9930a3f324625327fbe0c305629b3f7effa27d58b594712bc4868d240bc94d32d87116c7d8ff14856ca192b4c80c1f7c617b8977a4cf39810e60b7451a8b296937ae12f9cf35b5a8e44d599483cd4ebbc4f61068ff09170d45f52fc4e8dc0acbb38f7717781cf42bd8d201efdf0f5833541aada4bfa9efd5b5ea34c25130ba6a8809109d9387963192f1fca80910b9cb03c178cf36eb702f5fed3c9eb260651711abc7fa72e7d24281a775c5f69f95c1134cb2bd562ce1acae5d40977cd5670aac0a5165e907f71d576c42fa582cb1603a3a0491459efb694316921c0093fbf37496b1b7f775b5ab62e2ebf0a6ea79e9c28bc507c0a5ed00f7fc61f6886410951dc78d3da848051ecab120dc09357f4f2701509c07d8cdf8a6c844c5b50a73226cc16c482deafe71733eef8de3ca292a34a20631ae874f758d21fdf4a736f265e953b4e81287346284155655ebd039c9fa8c991e04eabc62f02db3bea50a472b28ba95edf868144f58d84cbbf0670155cd85b6d4414905fc94e4c4ee916a0a1e1159dd182b37b0654b268bef0ee9f7a924af349240d1a9de7d1d1ed649a58dd11daea2c9e49e938c9b5c32e40bb870a728a9d0055ed27323899e01728f9fdb2cc21e8220eae14d74621afc78af5a0552b085c5f690f19745fff6d2cb8b4d7f6d0e06797888dfdad5e25f09cad70a5a85014378b8efd123d4d8a81c144135534088cdc26fb31a8fb796eee0398def0b821367955834f3d6a59eeb61c6464db20a88d8aacb1cf8f6b07e216ba93e6bd9704b5e67e6087886068031996a217305b21de4b5306971c13884bd0c750c55360653b49b9f29dec5bac5aeca514c997a97919e5c445a66f229ff4cbc577eec940f1eaceab4c6a098f454ce01bfa8dfe9113ec1144fac90ebf700af77eee42b70dcfb508aca8d25efa2b8003c61b266f7b0f69958fe942f213a503f469384ed933c10ea6f894501388e76e15bfb19e91735110b2cd2a5ca22e2011ca5e801e1cccfa452a1882e44fc67fdc2b16621e8398ce112f0064790e3651c65ce6b5d7c101fc500e9351b63f5f2d3fce4f808fb842866bc8fa2419901cfc331901070a3f685b4bb15d156dbdc6a4e7d653627448e2622ca6778b9bf7fa956ceccc9e4056647848864cc386dc0a29d1d16626fa0fae4c6bdbfaa37f8e096e8f798213db98748578fabc3abc75b42905d6f1fe070bbda99e7077a7b3f481b74a0ed97efc29ee212199b92ec3e9ea8905ddcb0431a0c17b93ebf01b531632dc4906d6f9b816dccc9f061181192830bb30043bae68082dbd6f568da2030f805760eee181f52226e3308ca9b17ea0ce5ae2490b3dab5ef9b0a5cc1aa030ff7f2de2d1ea32d870e51004246df21700afd367ef8e069fa27cbb51faad88c77cbe5c8670143e9d43c14e8bc7124b522585092373f176b6cd8a388681f171d44a0eb908798bb3ac951bc5d1dd216eb80b2d006d17d244202852a9feb53b88ca29ebce9895b62cafa2f76e58f03c63822d188ebd0f5ddfbe6b20c4b8110664d802958cc25accd904d4689ef6773e2b0714327c148f4ad0c60c70fe36e5f96774a317bf3b040b27a446e025aff92310a0c50a56e7cb4e9a540f38d28341e9d87e86097f2a52bc12ae5f891726224d169fa7313ed3ff880d57b7991a9c6b85bb86e80059213944ffc56c1399d8e4b750ca4526f29c4731fe997dbd142fe184648c23dc2655bf8f88b9570225431504907024bfd5678bc49c2dd2a71635743a0fb3581ca8b7d9ee531ab5e9d2cb70ea63e6444d6b0924c923b0558e3644ad508fe043ec0ba1892f84c3b8cf1b43001a98d134d9ad6242eaa3bdd09fcfb55a06a0607d990370f162b878381fe7ffc06a042dfe3ae0d6d6b1fe6d417a3a515757fbb9119d97a12771c71fb8ab3ed560846a6a1a6adfa5d0cee2f6b2d681c6fa7d50415d271fedfd30770ac599949d04452b0e6e4e7f7c65ff102e37fc72e4d2a5c42cad83a50f3b4e7284a8160bae7f67f003fe9ec7c665cab0ccd668083f1558d92be592d4b721ad9a194afa675844c05b40bc38b51f2a990a6f31b914ca8b993d83b20373b9ecc95ef7bde5c05bbed2ebfc688228849c8422b3af923a76eb6835d1881731f6985f9a2b3f9be7da5668633a3ddae728958e13e136f37dbbe688d3860e2ece6ae1b27cda4a90f880917c09ad5d7a2f28dda8ef1a8551c88655c79f7dd2f0f6684db8a1502d21199086955cd2eb18c95a25ff213ac2b9ec306cada7fce61ac061de42c73637ef7cd656d33bd539064a086488d77a40167ee1d64cab05e0cfe27d279cc6f316df3c746b0c8ea2b5042a89c9fc20a8b2eca8818c7f28d90a0a01f076d248b7fc609995aa1c4f910c0a26f64bcab5de6256829b8d160ab36cfcd8022e118321138ced4c2cca3e46740904805f23438bd956f48c3066e44e201face0eea1fa0c8eb4b015a2657eae4cb6f0c71d155fb9dd071776d192c30ce6cc13f562099cf3361797c9cca7dcefc323cc68d5d86b17b8d9fa2a2aa3de04e2a6a8c68fab3f9b18169f3838e1d7f107f1134a29c5243cd5341f96c9a1cab6d65d5e35ee1c90f774d85d8922a990b3eafa316e4a06f32ff20026cbdbc769038bd56c04005a3e8b566300f30a5d0869a41c3e7d2d8150623fdc3216381026b72d3cc85e16c4a2400c179fd6dbc9cfe3b186541d9b370e08561d33513b6063d56c246c78f87c57718ba3ea4f502536a2d1b1c5668e304626c0b5a628d1ada8a4b208773d3aea98d6a84643a7808842c5234060645cbf0c151e4e97e190992b958fb0d994f988bc6901daf17be9c8ed53d9594f1478281c65d931f9008fe0b1dd7dc410d723beb6a1e94ec9a579f8f3a99bed74a23f059adffca1358e27865362f8bf60d65543bb0b5be0a437032f52fa5f9923c7913723f48000e0dc0b37f36af2ddb4ed600de3ce83c456c1ffaeb3b4941eed2f6bc8763ae90959933ca96a2572c9e1d6c8c14a06cfd0fdd6f8d9d10802048348e8117efd44384a688f2fac42f4c6cfa1ba2b0e76ce0d60b49ff06c2b652a1f6fbc37592bb83b62ce18da00b8eb7075be9b3d6e974502f6b5774c0c514aa111902b06e0a865ba1e2caecaa8d07d7e930e8daa4f37b7f701dc1f23886b02ae6b7af943317eeca6b77a8067b808bed134ce7a066e8e2a7b84f2bc70366f2771510773330efbce47b1c43546b40470969b4ec56d8f8ceb325971d18a40d6739a77f70c4c4ce6caa983bb453fb2473319e21e2eac09fc1fc7819fa629c52e1bf80997860feeecd88feab9d1df5a77d56fc7f6b4ef47fedfcb81ffa9a9bd1fd980d7ab86bf56558dcccf40ff7e644ff6b332bf05a4c1921b093439d571391c3e4e43db0636be19dbd38edac28c35ea6db3d860e12539c73110f57a01128abdf55b47da9da35f2c5fdd8b869acdcd96f61a3378c4218bd9edb58c6e6e5280b1637ab3b5ead9c9449447d5d646bb5a40934f294c3cd10bc29686ba0836343df6f697e02acad20a29e7c42ce89a7419f5ee05b0c31577a89e7fbf0073acca1efcbc7831f7698831fe8e0a10f7490830ff761830b0bb232e27255870db164076bc71762b6d5ec169d6717fd253620f42226c3a206ac75e04ddeadc347556f34e80fd637e233b5e00020c354717949584ae96c75d2691f006faac5aca296762168f431b344ed876bceec71ea3881694975ff4d3df19e8bddbfec282ddc007f2e7bed009414ece56f4b40db2738944e46dfd48504208b8c8cc41483aa346179776eb48af82f9bc245199a91cbae13273695b92eb4335b22c0287835fef59ed145dcf7d6630d195f884efc9a24cdeb6ce5559dd90b5df3bbb2605b0958e8c4d94ca12d61d1e22f749975aeb4475274a19086ee1ab2d0f1f91898f8b9ec8a2816aeaf567ca9a58e7ec9b2f530da3bae037047e6fcd44e6bd4f42ff024025c94dcedf12ecd525e0fe78e4e58c16f24b5c8d99ac316dc4f6db6a04dcbfdc83d256f43e8b19ab622f81e68ce3ce75fce87820f6751863b5e5ad18de47449d43e7c803697483eaddc29fde6004d7b1c9921d9c717002553e70ce422388d22517b90ff04ab4c2b07340be9058d35169c32471b9bab8ca15052080b8b00e6803c34131dec0d0c95def9c77bfe12ed8d670609ed74f837a8cf0affb7bd2c19abf5fcaeaad2fea07e00e536c2d7e611ee4784ffd587f0a25364a3119919d087d1f501cd922cb15809942c51532a9dd2c5c9697bc27eb66d4642f73f96ba025c5f555da5274097ab00a7fb047d3bcc7c3c653292160494cd6c578713b9049aa4e0496165e59601135596ce084e89d74829523a7f78aac0e395952ac5fee143d73f543120ea8fd6112e0326f210ec21afa4c10256c957c0f9ac57ba44275c011a6b8bfeebad80288e684f60160df73e940518bbc25041173258a9fecdb9c7816fff026ab99ea86b5102da6b8045cb8ed6163ede8fa0077fe06877bc4d52851debbd6186c66fd59db961616ac96a20e0caf0fc6edb69b48661fa61884aa0584b02fdcd97cc144982d8806a6b61838e482cd3a79c4249e020fdaaa39068d6a6364629821c0d4e7211270d6123288f898860bc64123880c742c41d8dab22699e4e491d2865cd23b26ba76b76b2189e3997b876e87a55800173bac900e1cd0a5ee83467cca410b8d93f70a402ecad204251ec6f9d34bd24eb32912b9f24437c907d37e9ef49c9abe49e7cd47793a1cf11952313d04f1ab2f0db536b7112e9a198ed927f654a1da6562fc9bb72d24f6a73229db53e050704f16d8a460f7be4dc3b7a7f4aa60d82b16a16863cab1d465f7d47de1b332babcc9d4171d30dd08c8573c306dc3cb6ca643de7b898de96621dc6d6e81c2467997447b2a76c0173fef8eb7d3f9a2919dacc2b119003d702250fc89a66df32dd23b417dc2794eab6ce66cf91291269570867551c5a2f579962fb4b55e8679afedc0ba4bc3acac2227a22c4f8ad8c25c6dd17be460d86754046dc4e30124019dfd6011d8bb227689a6deb4af9f49c69470dfa6f0d75cd848270f0e53e602e0ed58759a19837375d7aca5de4ecdf969c88c3cbd2346985455c60507a13537e04f3de5a008ad53012c5ab6e58810d3cd324de4c259bc220cd8c34145db0b86c331693f29d8339d679a10aa7bb0907eab40f7fea99dc9604e2ef51f6166bac3aea0ba9cdab0a2b20e0b37a93497139a0ad23aa9880752261fd100799acc67180f3d4b2c39f75faacc1afd4ca88d3fff9facfd2b3dc369c83fbac97f0be183f5d812d6205731160e27a863fbebf15258c4c2d58f8e045a1e01ba837224474ed8940f4666c9de79391178b15e0a96b313606b483f812d84e1decff0bae6e332821b0a89f928ef2476fbd0dee08470fd5693867152a64cbb38b6fec18a07849a9639573e14bcced9f41fe611acccf3e097cb531f2ad2ee75b4cf8f67718d36675af3534630831c58def460b8cf3facf2b6e65fc8ec2b7174f3363f014f171fa8718cdf291c7d3710a8574015ba12ee7ff1af6ba4b1a9653ee783320027b1aa61e04fb472cc9c98323a05a4b981b378757d0dceb8f2363670d28cad00f71368ac73a5eb0345668a7ff334f0eb389dd2cdb5d7a3fabef0e80a094f99cc36d8e1c7872e39435288bac2cb475c5dd1de9ce9ef1ab5add9e00d295f55266b639b584dbe4d1f769900600b3afc5a02f4e8ca4424d506face217a1bd409bed4a0615e5182003a0550957d5b7aabbec663b0b6e65ad7867a77e7fe0460ab6b6554c3c9340a4121a0f392d997d292abf8f21cda4ff2e2ca46329a0c4406ce2425dfd56011e7e5b419ffa1889e6cac13ed09de73c9ddfec69e8ab4b78ceeb6dc3459296ebb1233444ed9f93658408e91261ae9769939e36b7b985cacf192cfb417f8ec6c2ef2bf95e4782468035ff368ad68b9cc2188aa3de483594cb9820fd163d88b8c00828e4ccd9e2da788f667cd6f70375ed2bd75f95f7feed0c26480e14f508907983f89e6d6761afede91f8359d0dbb460deba4ebb07e17631d8b8277ce0e1954c4711f6a64603517703a410e3c5ba592704ac19597240a7a26c2d9b235344904df252dea968b754a094713dca0b5521074e09f0ab9246b1d1c14ea99828a2ea9017aa1846c05fd71824dcca051ba24037380b22d965f85972bf1d4347ecd356ad7de1c40da302c4c303201d629702f0332df562593db477ce4a45d795ccf227cff147bc0a8295632bbcf7308d177061366dd71a9ae922f11c45e677e8a22741249b4982c77e2e7eb5a22e5b622e160343f0bc9a04d0c54eee0f7b2017635b516bacb6810cdbcec0c5ce258cd52c71cf8efc5548806580e13080931eb07248c836831fbdbbb45ca65540eae1706436441201668680c2d7f2cb979ee89080d29f1895864e9b51e10e74709a6f71ad1a0f0cfd80549c960b8abea71934403cc46fa0762cbd9a2d7ddcd7e8a1745a26c27b43861eb5149e186d6ad736e35f18387d18ef29813383f7674ae81c7e0289c9a4027ac4feabdcd4ca7b14859e0e54cdc27a8bb9acf10bd11dd1156b87a74daefaa71e462435aa9cf3d4697d4079822587e5456a6131ae431f9219783c2f10fd39c2dec17ce0a0c11d72fb4489fbe7b62facaa066d7c4b7470c80cf7c55f566fa1068e0f56e0130b9f34420ea750c292a89ce0c0bba7cf026ee855f09928c432a0144068fdd5cd7a0760efe2df8ec7aee5c05c86e1f8bdf2bc8a03dd7aa013701e986bbf4b74da95b53f610439c6b74b8ee88fbb8a1bb56d62fb939bcce2b191ac8d350ad3ce9fdc94d9e97cf4b5b8b2725ec489ef70582c4f6336af300a57afe6b7c1c12da2f93b74cb9a790bc5f65426f31517e3cfd7623e58fabbba956d05643e2553664497043f3886511cb9dadd238411f4215329612b841abe74a5e7c5efdec79e32223cc6817c10e06c77089585bddcac50041f7232c9c987c2fb0d88d9aff0ff3997cea134c75c85348facc9edd5875c783d7c74941ddf7b1d98df8e4c91d1c45e53dbf7aad1225a7338a98ed6171d9ceac4a289a4922557d8456704c575e5b20679584c9028b61d412d94939691abac119ce0de869e4e8edae5107ea4d3bc545d2268a339337c7620d571dab88fe82edb5bdd76caae2eacab4e6b25145a4ad356473a0fcc1813a51552a18ce158cd0b237317dc7d48234adfc8d8db68db3b0b019af5b98065431cf0646c495df1a239e111a3e80f00e5b164e0b240a5cb42a4faa47264676a2d3e7b735152401fcd2f15c60423bf5f167980d2e4d0d3e3b804d9b1ccd4261620fd6b58d44e8dd72a5c77bc611ad23cd514523c910b6ab28947b94305f098fc591223d91447ef3792ede227c71d28a47c1c282eec0b808f43a5e4aca40c72e7c60482f5b8a36c37450b3b0c07708c18da54cf6b8bcf42c7de217932c713247f29ba47457274622a3a9922b0d35bcf99ed3cf833560ffe85c387f2c0f943bde300d1cfe61e415805f95e9af5a4ef1a4d23ee1b1e824f1482293c8ca6e85c062061effe84b9bc1f9466f73ef32c8f1977faf0b7b6d0821ae5030a0f267e9fe8d9e21db2d365c316779e2661329bed028e82a4cfa3dcc195a95c17b709b11b21b2b5a567ab8e147396221b1d41c1ac81055a46cab902cc11344266cb1512dd7e5888bab668700820d29da081dc69e624f93db40309fdfc0c361350d0a07e6ff0c7331fe72bdf93939ff33bffe99d97f395efd9cdcfc991fffcc88fe77389396b08d2d1073166da399c083284dd793a7b16a58821433ed57b21731deffe69feebbed9fae7ce69fee67ed3fad7fdd9fce74e8ee512dd66da23e513456bc9ca6c514168d3aa197b2bc38e9ba41c90ebe9242ce96f02cbbfca7ff7c0d95602a25b03a46f35d0c295105e91f058d5d1096fcbefd26e40bcbfc299e7c9b56066bb4bbdfbf970db06ec19ca2f762bb0beae4ff5b7feafb7528fd5de7acc4aafc7f3109743bb6f657cbf3363dd463054c42789a059c03200940dc31339a5794e134687e77dde5bba8bd61ee3e89acabe678d54f548c16ba525290bb722d3f3e10c8de114521eec763547b2e4ae3de43a592badaeaa4258bb6e474bae56de43676eb7fd6db1498b2a788d30e7ab434736edb64cb11a66fe34d6ab0481304c0ddad68df7b1bde28138f9d300c97e475320a96c8ffa7ae7afd70fd80656b00faa2efedb7383eb5ac3f075e085d5a0bc07932d818519157d2eb6eba9b176b40e00de6c4d3dc1e31dd45807d1a187c5522f6e216cfcc34e4cb7e25a277bf780be2d64a5bd4c25785f1f69bf7e14259b58693f9b7973b4a9dd97da239d41e855d84ad1141c04886b097e5d952ebef7c724d914391fed9c8c2ca6cbe11c6bc2f16af02177b39ffe2652f4d001e89653727ea0649f852df8726ae8e8e92894a85763f492018299680a77cdae4e463cfbdc94900da3f9bba91450f83e8221220a6a9a98ad673ecff28b8d9272add64b95ba56d68b11cc380bf4b207bdc3d0bb83f99e34af881d6cbdb19c5787761e53fa970aaf13fe28d5d1997962a4b3824c7061ce4b1dbeb3cd9a94a9c91c4e393a4a6fade1904712351d5c48a25576384aebf8975ab8124a16b6a06bdf5a1831e3f140d821b17fd57a2b4149546153b24f61943f8c0037f37913a7f898b53c0098c25bebb415a458941e28689f9e284d323f4fd95c9d3424fba4e5c962a873c5e522a44db38ecd61fc0cc40abf5d87fcc7e6379b00e70a8d9cc364ab4d1c3fd2db12a9fa2d3d42051dfc73efa65a5f74be56b2644084e8d40eac519cd791cec9cebffb6f2388b89bbc2bf42cfb40a166dc17cc42c139203619c80282bb56c5f11992954d807c8792ad2f385bf68230ebcba95a082c2da53dba73ea4b6cef8645d417b4c1fb20431ff48bf76ed875430434a69c77de5c5f09e0744cb3daa3e2fa8b6cc557d5d8bc07dc57ea117ab1f27e17fabd4a8df9def6fca81bf0c7edfefc8fafb5b79a30fec81da1b030fc52ab10d30fb8071eb76fbd0fd4b89d8ea900bdf68332cf128dc4597c497e41fbabae5293020f4eb7fe98013173fb6c638aedb8b3d7263ba94300ad7f1cc860e2af1692419c0945c3beaf9c824ed38094ec13bb9e2a15674994ab94705e2e2d9a9c86d0fb6eb28174a1a157385ecc2e1add9e862d705796ec32aacd185c16abf59bfa019132d201affdb9760dd7e88cfdc4cc88296c667425834f690a5126dc09fef47b9799f7e20e351f142006812b712f0abab42ab10b3ab186d4c504e1347821e3a09cae480003f30ca7980b15cc7e95e78677b623e7302c3a91dbcab36ad8ab63dc005e5609860f8b4c89d725a5665269b3b46e8252697f18ccb59cb52645efc7d171a8e6a9917618cd323189aaf4a37514e1c60901261ce23746d47d55bcc4b9fdf2de47fff81135fc884ee1a01eb1a5adc9e7a74f96b72d0ffdd3047a06a49781f6a3f6fcb83fedd9a2ff7b73a2f56fde2303c32cb114e5d83288892a798262c01cdf9d6ad0c063ceace63c674f0685ab55d8d108e8ec52720f270c40eacd8ab2c22d57c35d37fc7f285ea8e5274314b707aa31df6dcf41fda9aabd2f06387a9fe4777071595a5a443f770771770cafbef9c8da059c3ddcdc7bf4cbe090c30e5846d40f5804b9d9de6c9abd32d8ec232eb5d848fc2db15614839d0605db0b9a54f8d2880cdc724c3cc2d59f660554066053597e5807d50a44ebd5b49e1f581e858de2884b712131c451972ca15a584bde558b52de90c62ae3e0fcdadc49b95ae73ddb2ca62814a9d27a5e123f92b1bd2b20edd42c8f0122a9bd4988c28b761084eeb30b8b9ffa892bf09882023172c6e9ea62483b8c219b3223c287ece1fb810e73681dcd02e164601faa3e02519cea0386446de4b54421a43a73dea3424e980c3667577612d94787145086717d25eedc145cf2dfd4e81b1bc3919af5d4aaa16fc2cfc7d0c1117a1f0e1c791e0ece7a8223835bf37050ecdb091e565c7debaba33ca52712cf85aab0ae180da97718ec5640c3c460b7713d333d7603e93aedb1db787eb30d7603735bebb19b43eaccb4c9976137ae0c9d4953d26e2c6dad03763bdcec5630323739107a62b7db1b85e039e0d8adc871f135eca6f92f4f397741ab4960d9a6c6e70a08c6620dbc838337762785cc8e75dba48ea769d9222acd14cccb485c1046ae8e02956acfb5ea05aa7959e4aa4abcc08936050b2a030fd1a94442947e46b85bf625afd0f75434544f395fcfa776c16e57134832de12bb81b34742014d904803ccfa1507101bb05bf0e1960628634781502b7393c550e0de27d4166445a075ae04ec36d2bb51e9e26ab5c89d207306ae17184dee46e9e3e2feeaa792dd2e538ded40678e15a7b0e8f2d5632c33881b483eb86640ea62d7d3b6251c68e13b428c8d556287be6d2552085f374372220d70714f69f5d0628c595a71330acd1a7c9f3a674e5803098e668aad85e4743452108d5714a070c7e4957fc01b2b3bcb4b1a6fed67a0628a04981d27713f9c747bb5e9328fd6af2e3322bdbd43bf12d15d6936b622178ae70ec583e0a5c7535edb9384bd2999131ba3f20ea101d3fcaeefb7ab83b7fba0d0c1924c4b5151794dfd3e6914566b6672df036732b10d44960ba52c0156de686d2eca21c2a413d0e7091599db4cd0bfa0c384be71922246bb32ee263d7c1754706c7c79a4dc811c7d128ed0a70b07902242fda46e25f90963d3c250500c361c29946ffabe306919b720088c0b08747a6559e170ca230fbe6dae25d9280890d24b1253f1eb06121b5c86155c5c3e5fc588494f924790c1ea05a168810ec5abf97a066b882b21d5e33a9ff0e016e56c0858f407f7e7c250b1f669fe2cd457bf065782f8b4436a5c18ac111732d0111709c2a07adce51924192ebc977145c39bfb105af48bef698e316ff4989e052582518ab67acb071708e2ce338470ef6581104e7e8a83d3df83200c2179b97c1308519490201868b121849785fd67210afa061a222ec30022146ad34e77320bbb7fa169e00757658abbc8378510a4973c44c8f8cec862c5bbd7f602abb350d1f8c14d92c6f73790e0e032bdc0d0b7d0e5e162691a7af1315deb8957c734c4b5dc07aeb37871c769bd2cb82f0b89fe061a212ed38f216e95c3b50b67d3902709ad521a21b8b4caa3593566d964ee71ede1b5e0b0300d84182c69eb8ef9cb9841d7df14f4d2a55643595482a6acd8b0c20ea38c6808a0ed5165c00c8b6cc708c33d6d5937de523450a83618d9b78b0e55d4f0ee73de6b02eaa6cd376ba48f119f968ce025d9ee96021b6a42f391218f53be15223c61f32e9badeaf4ea6e70ed577c3f04ffba3a5ee83908f4fe2364e645cf70c81275554a2ce41fb0c312017409e5240a3cf75d5ec448d892e5103886286d016149a6039f857b56e499c50d58216d0301d6ccf2fa133a3a8655909d7c1b550760e7e92bf159ac3b66330283f819c62764fbfa05981b7ea6a6953de3adddf23a6285655d3733e32e2ad1ffc5cd20c998f1c6c58a8fa9dac0e86f4e3799403360669a5eae76ccdd8ab05755685a5703968094404d3ad30b5cb95174f7e5f0ff0bf9068ce2ee10f78b1d22913feb17842a6d02d71f78cdd77940582d1e0263e1c3693524f560a2123634c0e28d46c0244da680cbd9c44af279087dabcad7bf0acc78df8412967f18739ea4272a180684faea1071516a42b075213a40f10f31bc8ac02506a68c8b052eb087321d3a101054b70198162145d80e30032c07b822a4c46e2844d414f96d4c76779b0661e2882bed319016d9dddddd1ece794d7a28e94182ff4344379902341c6f1f871f7f5a4c41c2044600d760954e65b4c4456dc850e2038e62a725989630e1aca086b861a4930c247fbc08c952288b8c1f9da87f32159e45d34478b9d1c92f871d8a1734b61ca8f0a29303355d16016331adde894e0654e44c282788082e4074aab262c58912268b8859a89c1e4d1284c9861f32910e38390150a4496f2100538fa59dd3963d8aceb310f991137f9c126d0c0a79c3c5809a1c7b9c5098e91387208c8e9b2d759c064fa4a9f367ce19070be238e14da903352590a7c460c0497e1457edf04aa05828e6249698028e1b1d60745052e3f4ef5051b031506289e66c93a119391441ebb91d77639bd88c41de982768e2a3b7364929c120eb30c395377d579b723c694347e381a11ee1e2d3a60f8a7e10282ce0c8059b4d9b70201c14653841a2c60aa54d727428fca1b9157a9860b4490d461c332733466c62406853f20b1f8d476e8376aef868b2b4582865d3972e7ceefeffbf531d4d7c9a443b79a1e97166cdffff776aa3498ca13038c7b6b0fbcfff3f8080a3d8f10be2130cc4a7baa804ec2a55890412092214d495d4013d249e86b84f5e57469a44b5407caaa3eaaa1afb32814875e1c9ef5866458dba9a929baaa3aa8e0bb8fa204e6541dcfa2341451f8348a20a84088524116607f18a4ae00b22d51796516a01141bd48d155c565d3d4a3cbd40143040c080e35a926dea2bb958024ac1540dd5e028e0c8608a12a2cb165515a58878b48a0a7b52b3728febd3d5935a951c9402a90b51615155511baeb6aeb6a8bea8baa42e1c3995880a3b4629019506d1c0862742966980ec697925202af9b41ed78e704f78575e5146a93e2931293b282eac35caea08f574753c1e8d47a9e3d491aa6aece92855412a4b005e55522a4a6a3d4a3dc54f6c4feb14d8718cc494195413442c4512c9a827b1a9b8124f7f4a1060b27fb1d3a13c78e4c45193a61aa84763c6fde6a08d863e1f3962438014302585c1efce6ef14d9d3970de98c96877e878f07bfcb903070d182c5092b0290fe4a852654ca5952241e203401d33564688d0f0e767e1ce0e829c59995757172e13a03c1111824936067d9a61fdf1c3811071b1d3254b7f18bcba9277d09c110306cb15293262b0606ab8d077674707e7cd19375e76ccedd103078d19305f90187181c2442448770000f3a5cb941388fc4e772703402a44e88f1a335cb65459420306bf3335fc61e8a3bb172cd39201e0bc5103c4078d13fcae21029ddcbde0172204e7cd9a335cb65491b2a4468c131922d0b52d58d2b19b96957cfa8b8508f959a3e68c192e5ba42ca94123068c13829819fe1cb0293769aa932000abcfd88c172e2cf4b54460b838347442b578ec64e404a5c918c054932726c6254f49d6d7e83eb5abd26aeda8e0c8769919c75631a9b023d8faf5e4b576516965651d914f02aeb09001c2aec0acc6aa925452535152c6a82828a8e3faa34e048028451535265543551dc9aef64834303ea94da145554dd54f5702d6a7ab28e653e131c031f984c7440fc4282ca314d5935a00b2fa096215dfd5fea48645c2188b4155785aa3188c416cab8b4b9a303e553dd5a55d420444627d52600731411c122bd43269f68084f129ecb8165d07348052000062549419de092e016f288e1048a84004a3eabbdabadaf220c7159d9a5659426440a582505785445400888032905254c70050834f2c5e90987ac28a225b05c0240e11a94ab373620a930e2ca315d483a494fd2481c770067119858416145a955cd581a8bfa7045276893329965a7a402801e543465517b23d1140af6b5106d1aadafb3011e015b056203b2e90029b495449d951555358479a0ec291ac4a2eaa0a8bc015c42a29ba007a537362b75c15d5dc95dece400ba2d793dad8565455d4522b405495d54d400312c4aaa9b9b29ccc3875c10aea88845aa3284455412d884ad0e0cdaa4a85606a2eaa4a0a2c401cd5d9931d95d7d6d881b0ae04536af411991707d13845763c105535a5948203c0341d9ed4d5935418d4f238535d3d21601f485149553db1414978aa1fac5062c701505d2dd5947eb4ef055f53555d543489abf86867154fa13d9d3d9d4531414c80f51407a500aa8ceaec694c807b242b81a8645b8ffd71ede908f58180061b7efa409f509ec40913050a13232d4684309c0ef6bc0ea8e1cfcf025f053dbcba0873cb1a463b60a000fb74c6cce22346871c343040200c4c2ad14d9b244828dc0e96645c57565165ba6c71a224899122431281544043c0a6f4d1634f6f7113a5dcef9123304c68b2868c66df60419594121a3368aa3c78962859dab3d79655d594d49818962b7f76d89c294346cc1519305eb4e0f73bbb087472f73276d3b29258019e82c460a1220b90ec05ca132623faf8e8f96beb494e9c497c0dda662aa9282929b64c2192c3868b0f428204917167d7600182ab55d35300464c4f90584746444f878c81a000ad7a8c778c76a800b8aa6394638463ec62947284621c7cdab09ead665364506301c08c5e46ae756b4c0b2acb985c914f58462ba82a23d5d494514a0acaf8b41ed735ea57fdffe77fe227d71e3c9bd2e8d3d3d3d3d3f1b826d5c69c394ead1226152ceefc8437a552c19aa40232692c0306ac8bc67e4888805f8a50ea1b3b3dfda7b6f54b25ae3b547295fa0256a8ae156b9d7a9fe87fbcf15426659c9a8a3a427d2fa3f21bbfd16aa5f0e460fd520ba0fef178f50544ad7ff53a4241c5462be35fd7f5689c5b57a9d5b8aec7280fc6d5b84a19bbf2d6356a95fac63580f2688c8a42ab62d727a3f169c6faf454b55632ae541f6ae53718d7d53855c128665c8d514fc6759171355258bdd6f5689caa60c45ad7e3d3715d8deb1a655ce1a08e52585c53c715c86a5ca39e8c47e66a7c9a5a57aad878b536985aa1ce8e6dab94d1f8e41eab8cc6354dc0bc7e7872ade49eee8c1fcaede91b8fac4f47b42728e37afc50385641eb377e2412f9d7bf3eadc6d5d13a654cb0ae4628a3f1b8aef0cab64ead5746a3d11805b79ead46a3f1c9b8b647b575b5029b3ab006c80a33ea58a18c60ebd37a5cbf11cfc856ad4fdfd88cfa2ce00ae3f8079059ff8333c6e31ab53e49ad01d6e30ea371aa865aeb28e3136bbca23a707caa6a9f5cb3763556454d19d7755da5d675b91a8d7b8e512b95f1e9d8612560acaeeb716da5b232ae5352abf181b1cc48761c7bfac7bf0a58a38cc635c013f2f86404331a8d6bd4fad4af5467ab159471855ab1e8755dd755cc48276545655cf3a92b29e34a619d5ad7a3717d5ae75632a36d1c3baeabd16865947a5a8f50c775a5d7e38ab652ad57ebba2e58cb8c5547a975ea6935aeeb725da3ba8c5beb9371857a5a6da3d57a3496adc7a3d1f8647c5a6da3710d3356ad54ebd493715dd7e54a66ac923aae4f534febbad2ecfa95806ac15101d47a5ca9d6a7af958a6a698541ac6c2df0b41a8d5146297e4572b55673eb6a5c8debbaae7da91ffd1946ac90fe1c7df60f4714074320428cfc06087a626108a0df3740cfe71b2287e7c3e1fc0a7817207b81a0777bf806487a81f0b2bc21f103bb40659322041a6bed405f6c368ed5840e14e08c1e50b5ce81564e33e0629099edf4d700692a5303a4c4a8068804aa20b14da080557b6406c85e99b15e593f512bc30784a2f1d92713ff1ffdec92088cfca994c9ef50bdf9ac6209f86bddda9ff86be12a0d70b55a1da2ed3bee210d8d27844ed1f2ea5469d434e683a1335a38ad3e9b84cabdc319a3274ea8dc9fd0405cbab31d0642e95d62f279f486d2b3111f443e682e55e8822689cff4c8ab4d8569187d710f8bc11b1d3f32aef9ccc9993eca81291c9e00e0c023004e846774d00fde992c2e361578f208917ea1a302c30e2588f57fa35d22b3034724f008b02e6ea2e829f3c4678a0e9c4a8c0a5009b109e0aa391dfff0a052e268b0feafbb6322079928e949a2a3d1b36eb483d960b6feffe4688dd00d030ac54724feff055248828a59d063cd87aa14e8ff1d3910bf80b7077f4d91f83f02e4ff4744ffff7d2dd02959804e812f3f8d6dd9066c1bb30cd829b519d8dc0ba1522934873ed7103f49c0cf0f6ce6554b964aa08a08439cd0e8d7f6cfa61d6ea7606d6d7ebd3d3a0874714c08747a4c0b6e13fa6abe0a2a5ba5971fb36d0da654291eed82a04590b30dd80c2d86be9a4395f84996d24f43634e9bcabe9a0fd0f9fda53a7b36c2ea934a91aa08cbe0ffcf57a5d4ff57c3ffff531bc076d906ac545ad513f4c9321086ed54aa24ac3ed9a8843d345996944273fcffb5f0ffb5c3ff6bf5ff95faff3a7daaf17442ca21faff0afd7f7daeceffd7c1ffd70dffafcd2f6892640592640cd8e5747f56a15426b5e98c4ed7c0ffd77edd3fdbc6809d4a95b4d25d9bf2d443c5354c72ec419e1463f4d9255c52accdff9f6d6200e406cccc449e263ea0045f50c0ca1b71e4aed292c17392944be013141ba80c051e97c7e5b1de3a0630423256b98acbe480940c9b212bdd35380c84d16e2df48649120ccfef7f120c500a8dee84cd29337ff941dc9927bf6624bf047ca7b3faffefc302c24da715702a1e37e579b9e9943a6dd675e0f3763a9e979bee519f7c873bd93503e7f7aebc24178caf5777bd1908ade3f527f42938c5e7749e10aac73fa1767bffaf7affaf79ffffa7bf52a84b6e1d486e55611bb07b530a9d0eeacd2a0736de99e3d4291b550a9db2f17ad3397d42eda850685e219eb76432edeee8f4f26e3ee60dc12def6e4f8fc95cd23df94128d56da733a4ee111aee51a5d00948eef6268ec7f372cae934da6c3aa384385f0808b8e36a503d56399d0a2e4853c02e6013b00a589eef99686c1b1b6d529954deb9202ddaa4a2e94e5c67b6b12c9577b2b1b16ad469550a0808c82aa34dea61ceaaa5459b5416fa4463d70e9d52dcd9246c4e599c7d56a56bd42754da033a7142e913da7c3ea1d12695c57340c0436a13909536a15002d1269575e255aab4d98100cb53ab502aa013076cf23debc6260344facdbdaa07ddabd39dd7a550b9bd9ddff9411d5ab7f3fbb3a94ff9bc3cbdb7094ebdbe9da7e24d29158ff279fbceeb51a7d03aeab41ab7f385d0fd7927af1e25afb8925663e8f6925650fee1d38957f76687e6fe6cd619e213944dea949742fbfd1ec03fa1cd278eb3bd939f42e3d825ff6c3a594228950a7d639b824d565aa5f2818738e1b48756a1877ad038560add8013b2381badb24f3e0a5d0e4e9b52f65978c85271163a65a1bb94efc01742e758e5cef3d2aace4f9f4d409c7ff287ac1a54ca7b60131c3a9d382f4d30e02eeff663eddce6f6d8bc7bcfedce83c0de6fec9e5e8509ac72b76301d95cd97e5d36a7b31a0564795e8f5556a11df09e7d36755e1ae57be81357c3f50675a8f3f0e9c62a0f9d4f2820208b03529f509ddf9b53c0293fed7b28bfe3529e104aadbeb14a40c0a913af422fb08080806c0896c5a9781cabb65cb26a0c089b827a517c421bcbb2ec0796e59dcd282154873e0101015956d943779c3aa556a16c0f7d56f792c731ff7f093f792c542240c02ef726536dea74e270d5e5526f3e2b248d3dd8e55f93c61049e35472c5f4bf54729df1ff573e8d6369688350e6b4a94c0bc1a6a12d974a25abf681655996850a16a251a5fcf4d95c2e8d5c9c5e247f9faf7c36d9c53fd3e8f429ade64ce694e974e2cc40c10b7ed4d5aeda490174af4ed79e843b32d3d44762d2f49198167d2426401f8949cf47627af39198c67c24a62b1f8989c94762eaf1ff9742467d243289ecc2aa54e6232b55a954e4232bd1f8c84a243eb252f4232bf97d64a5b88fac347f6425b58fac64fc484a953e9252a28fa4e487129c8fa424e623293df9484a3e3e92d28b8fa4f4e12329117e2425bf8fa4e4f69194d43e9212818fa494f59194a03e7292a48f9c44e82327e10960a525000bac2a00159655002de4a4c08f9cb4f79193e43e72d2f2232729f8c849ec474ea2fa48499b3e5292a28f9474e723258df9484955feff49b20f96850c1089c7474622f19191f68f8cd4f791911a7c6424b58f8c14f69190367d2424461f0949cf474272f39190c224ff95d6ff618f287de4a3411ff928cd473eeaf2918f9c7ce4a31e1ff928c4473ed23ff2d11e12ea7467ead2e90ae1ff3f2577c71de27550bb3c6a93b0594728854aa52bdcffffc9edbff14ea8ddee84ceedfcb3c293f70095ca51f9e914ae10eae4df0e9dcf3b68ffa48be379393abd3b2797aa6bd34b63fa13d7a7cf2acb7c4271de09c72aa7833a2e553ea1cde6fe84da3deff64268dd57d328caff8326453f54cafbe154271fb73ba173381fa717f86cee4f3e6a78e7d5859014ffff9d4e3c482426ffff750b1286cf7b684e9d789503efa1397d70643ac2f31d797134e7a8fe5fdac846fbbe70219eb7d319f2fb735f2ea353a9f41ebcbbf5699370b9d4a74d42b6292310ec72d1a6a9a0ce5309a1ba32af0a529b816c6ccb69944a1564a978945db0b3f8472e92f2918b967ce4a2c429a894f73b7c7b429bd36687665c859581d38913ea41a17b6f2cfeff1d3e52511542439c906d63c03e9b846deb82ffffba6a69b3caf96b9c4451bea144ce6fec84a8b98648c457ea6c9a597ee7d8293fadfeff2fadcbff79be6732994c2a3f550a52a139df4ba1549def7b5ccd2dc00eea5027af3ff9e693eff084ea8752be4a0170429c851eca1e3ae1d85d8a17f2527e5a88aa9c063e9b542a3f7d42a7cdbc0add9bb8b4eaa626c73af3e6f4c94f597c500a2d640f9d4e7e0a15d45969157a81554ea7552a2ec5a351bcba43a551364182e6340a850ab23ace3f79bac31c9f3ea1d12a0ba5b2f72e85ea7cdede94f9843e05c9101426a82a508a0bc2e9c9989142c50f2080c6f01d00c5fd8f22058e1c7fa87cbfc6f3fd01040cfe5fedb5cd4fdd5e1bc5a953c22655855d1f2aefdc9fcfa6734dae483e94a65265bef34d29f57f9d0fe277e3b335b847c954aa74e2521eefff15c10124efa13965f6bc942a18d834e06442a9cc6895f9ff7ab656e901fcff3ba3d55d0f9c9ef87f3d5f6c9e4780feffd36a1e3879c20002b28446390fbb1620306065cfa4a14571c25dcae3a97380a6eaffdfacee2c959fc6d1b14f6003581020d89d67db1ab02040b069685029ef81396d2a795eda1f2721ed40faffdb19f3ff57f6bc946571c26ace1e3a7b3e2e4f42216fb743e1f4ecb8fdff954fa8ddf36e3a61e7a152deef09b5838b7b42ede8a07bd39de7ed743eaac713e2763a1f0580102a95de0088e1d5b29e9ef239881316429f83381f9db24e9ddfd943aa948f42a55196402d4fa7046a594f8fdd797e57e6714a5c9fe2547c179ce273d4a9f459954659ea94df9d50344276026b88132aa7d5299eb3cbe9019655e24ac128fb840a4e79a92015da3fd3d0587eeac4e55825e00b5701592abef3857b2c21fed4f9e814903a853a05a981814d29f5497d42f527205fc8f64d437e7fd2a101b27cf4902a489df2529efa6c124e9b4f5c50e709a77c202f28e53bf0cea6535fa30a06369dec546f52a74dbd19756340d5f90e2c9e86c6b2f8b3198de213582560833d0680844e67933a65f927748aeb3d748d5a85b2d04043e81bab5c7b36593e508a3b599c0f8ad73f9b502add2ee53bf0cf27cfdeac148faab1ca39560908a8c72aa1d429021c8d6595535e104aeda16c149fa01608a5b2d46a34edd94463715eb08f55b2ca383afdeeff3ff89166944c7141bbffd7b2ffff9a80cd161b2936506b24ad29b4c6cf1a00d68459f3658d9728944d3380c6c6a61960d50cb0cb28945533c0a2b16a533603067e87ea6b76ac11f1d9651a1af5300a95529f3c534a7d36976b9e94fb8eb33b2f18d874eb92e64f4d1b35f89a9457b301a906f0ff6f88134e9b2cab26829ab5ff3fdb806597f79e1ae46797cbe5942dcd83346768a0a011f299cbbd7966ccce74360799d42a9419c5794126953783f7a7f1945414d4d3ff7ffd2bd4959d201fa47dc44c9541fbff2b9fbc9df183310e993affb34b2499a97ff8c4fbe6cee250e7b4a9c47316d7ff5f8fffafc6ff3fdd18c4a954b94309d978679e379f87542abef3823abf439fcbe5ce3f0beff81d6a07c8e23aaef7fdbfaeffaf1ff023c584984a953abf439f4d29f5afb08743c3c20e55ea54ca210a7d120e6e680a06f6fcaee7b8df050b7d7c15f6f4f228e0d94da89310610e82dc1d07f7e666d7f42cc7f0ebb66cca35b5450509d2d0101c30705680c08045d6ac8c6c4c2c0ceccbab6b916b4b2b2bb9b8fefdff397c24982c52a85e05fdff7bf848300a0e9d87b8333a6dc62d76faff73faff6ffadfc697be3f952a6565bb56cbd35cd3d62e85164ea7389e2015c7336cf63c61753aa8f3726eb53cd5cb54b7e36fb5cc4ff1b71d7fab7b6a0542a854eeff8fe992a56fdbb54ddbb32ddbb10ddbafeddaad6dd7754dd7732dd7710dd76fedd66d6dd3354dd3332dd3310dd32fedd22d6dcff54ccff32ccff10ccfefecceed6ccbb54ccbb32ccbb10ccbafeccaad6cc7754cc7732cc7710cc76fecc66d6cc3354cc3332cc3310cc32fecc22d6cbff54bbff32bbff10bbfefebbeed6bbbb54bbbb32bbbb10bbbafebbaad6bb7754bb7732bb7710bb76febb66d4b38add4e5fdff3b79d6dde928bd2cefa1397546ab54169712123299d129971f9f5d46fd3fe223b958459dbc2053ca33a7cd299b72e739b04a2875da64a1d4ffff2449ff53ffa47fcfbffe2ffffbfb23f01765f5a706fc29e596ffbf949fbeaeb255ba6b4fe8740393dfa5fc34d2ff7f85d2e2d4c2e0b34b2d57ec324b1a769965c66797592c606184c508bbc4b2b34b2cec1542ecf28ae1ffff4afcd9a5154a9f5d5ae9f2d9a515ea679756aa6cfaecb2f9915556fcffab7cfd7d24952a54fea84cfd44e6474ea9337ca494383ba4ecffb34b5cca33a5a8450114c5c8ffec320ae0ffec1219650c4a9c0fe5c4ffec12cad6133e9f5d3e51f2d9a534ca2e9fd4ecf28993389f5d3af9f13fbb74b2b34b2768ffb34b4aec92a99845f104bb54ac6397f8473601f4ff6fa2c82ef78f6cf2a0c914bb646284899349fd3fbb34162ea9e3f7914ba2ff4bf9beafe6d46aceb3d027bbac469f4d76c7df94fc5072823049265ccab3e94d365d3ad5830899e4d055daafb25dcbf735be29a522a9a3e17f63d6a2e512c953060c82c82359feff2c1567a1cc2327944605083ef248dc8fb38f4c299b526a6c248d9911402307943b15b733e4ed5eb84221d46e4a8542f3e8f6bee9740a9593f2bc33da94ee41f776fe49379d3ef9baa9d3e926e59b86bc9ddb94e7e578eae1db2d38c5e7f0a678ddff5fd1ff3fd1ffff09d180beace60078ac0e80040e8acd4498ffffa7dac1a4eacecc838f1cf2e32387c4f8c821253e724887ff3fd7bf12dc7bd24df91d6ab7f3d3eab3020fdd6bf9feff85080dfa5f909b44c4ff3ffeff5ff98f4ca4faff55beaeb25d5ba342a179cf0a4f6873e76f271e486f527942416a53eaf6ff07c40f42f7feff7ff0a07681cfe6b38913f2795238de59dda113feff7e76fc0deeffdf272ff0d9fcfff3f9ffaf38158fdb23863988f3858338dfa7a7f31d964be6ceeb3cdfceefcf2af46d95f0ff868f0452e6ffc029214b9de2ce4ff8ffc7f091402cfca954ffc81f8d9ecdbd271dd5597df25138fec784ffa7d427dfa182133af7a493f2cfc23b2ad48e0ab5e305752a3e810ab5733aab7273503ba8dd84671317ec11e77fc035c01e463ebbecb1a2c7871ef8ffec925db2cbc06793da7cd2f1f993da7c36a34f7e10a74aa1782ccfcb51591e3b8f381e6d206ef5913cb4feff5f1fb943d3ffec925d2aa153ea5a0f5dc3a5fc5ec5a57d93daf34e96cf713776fa746395d3409c0aa53af9e753496de285f8745a81554ed9fd89f7d0c09d7716429f8338df439580804cc0c067530aeda5b8141a25e4a9ac1bcbf284f813c1b3f92c84b2546921cb1ef21258e534b04935e46b04f99f5dd6a0639787fbcedbd178f43ff5c97738e4254c98dee5ddbb9b9ede0c3b85fc9339a3c1ffffef399d381c2be5a754be49558bf25268cfbf4da338e1541983538c15310c618469b16af8ff3b3fd2450e636e0a95f21e70de39a53673b66f0a4eff677679595d15f8ff7f3d54c7331757ff4fa54aaa8e4709a1fa1b873efcae10407e998a932782ac59068b08c5f54b0a005b8d5c3c059219292317d2d0b76af013210cad9119c442012ac169b0c248cc151c7d90176ef888ca40d31241cca592298b8cc91634d398ba29920efd18d289bdc477840bcc05a6f7cf1f28434cac09b14456b3f3337364c9818e3b3e5810f242a655a21087a455e9c2a12f86c4cc4a4baf9adb02c8fc25290afe249183892d54be60696b1467c28cedcf43d81c0c424b009ff001047118d10ac1a30d1ea1852789f83817d1f00c2abe327c07fb8a277a8ce8ad6820e9b00aa232ea83bb36267a684c10dc6007e58b0001ad29256e8a16697ac4c1df38ac41b9f8bcd6cc6943b4e641cc89431b010cd7e86942e625859bbccec3a1908e4b71ec70a2c1979583fa2083aee2109b880004a5d0e0c18e1783241eb54b1390260d5a7c20b004e682cc8acb088d45272e2c67c135d224218eb20e344ab1077eb194c9d795aee12a7545518288c6e2226fc503093714517b92c6fee810b83262d101813c03681882a04899dc72ac3445c0a28a2a9a2a9ad81849cad085766252998dc5a69e4dc4d6844849496c0a123643f5229c92a9aa341e042da524ef92f4793448480b3aa8282f756e76285c45680030c84785738fdc9c33f17bd12376d521c2193a4be6b2bcf4a848f31b51401e52e3a84b1c9d1b2b3b4437fafc1b7a5c03ba6c18acf0f7c08e00912d5b0fb404866d5080222a01153cbc8904411e7887c4204b60800be88992d56625600073ce8c3c5b44222d3292f3d7d566c29c4458d0c802c0d83c1981088acad8081c8211035a8c7948b30902221d654482f3a3cd191d368650b710b07a8de2a68ee04c2c626a33642107ac45248808c78c4475f6454b7576146fb310044c10d852e98c4e84834980aefaf8b49ec8342a55c9333b7174089353ea4a8e2f1e632c4d0908387161c3104b2aa88c2c280b035711a0c8060f3513818ad6264004ad9ac56321e98719bfc76e058f112becbea2d07645281c020779041280f9b3212f939a12e28e0bad48020e30b102bd13174056193831905c61d46189610229bc2117635e1d8e52bc3dc90d3d3b720630806b83c8f44ed8110a21e75090cd182b6cb5fd97b5f74ab17b436451a01117a4b49928a0a72b91830c444a484092e74f4bf66210a338634564c85604fccc98c1b7e90cd218a2a7a4219bc4814a6cc2fce60c3abab292c72e269a40512a6d802091a1b4694f0e1c706297b4e4690328c005354a9218648158de487aa883c65e4df57501f3e25dc03002842b0f8b174d40156113b30c0d1c71085046ec6e918829596ea8b80ec5319804a010279393d8d8248431e0240a629e04737962b8f8a001682a8bc20636364400554f20873045ab4c5a0cfd2dffe86af4f292eb0464131520b6d83219611324431dad088971b6ec3431802dc014a0138a4a745f64744f615747297f5a584a8a4020f5a1e1ccc78d8450e24ec1953c6b1ce1493224cc4ea0abad0bb9204b4666b43189218705fe82871d18948b8f2a13aa4ce07a512cd2f2080c1133364c4a0cc10700fa8d40d02b1984d242eb4f041a46f854e153cb304c4c839b70e5eb0ed98ca525484b8e0a5f1af8c68033b32b422668ecd0b3e30b50cdc383c334422d41ac39cbc515420430106b2328410ba1afb7ac146ac06c3843c78a0098121a946428cbd3810682ed3654e1661134b79447cd9a14e470021017837b80a818009267120baf2829bc863c39924bf0f5e711145e7490ec4712202ce4d2ee5411e2a5e88c911729b248201a5365a3e7409c414f495d0edca9e345209fa4d5204e14146311a00cb630d28c29d204050fd6093e48f40c18ee4d529659597d261ca2d2a23ad429ec8295174766ba74dc1802c8a6af0dce29f1919d930d1dc6da0ed564e9b406c643082a05042c98d14a2271966905e1a3433186812d950a3fa87521a50cec4861c38b0e2950d2a60070e192d88d29479d94d48a9c828451326b11a59a6480020733ad80b3ac441c3c36ae3ca1e3728124802b939c100e14408195c5c8853d618e6668d9a340b0f048b1cfebdd44f39000844dfd3852d381830d9849880f7a98ab0a47da5982c5cb8706502001e28d08135697a9c2d59e01453d58181819ee42a220a3620020a8a2e3c5d45ca6299b0683de6cbd20b086c3102fd02a0c749c2f583fc68041511002ab4a6d4d1b4950651ad58093840cf04189760643a7305e703eb63e6c28dc42e6c934e592a44e51b22d12797adc5c605c4843332b8fbe5c9d5d2082f7edf899f9ede5405064d0898cb56815a1d52a92d60e6a1f3c670ad41d82e8a3de202629fc125183cbee92a2998e3d23569460e5ec9505997b10b1a203418839cc0d4496402dd12220883d224584e193221f881c5952a485d7a21e4ae090f9e9d253e7e7e26eebca496688849eb150851f33fe705012c82340455614249d40702a90d0e302491700d02cb1e2f5c735a5072e81200aca194e2bfb060132384c02924ea51e853cc42ab0a43225c87200e9a9e8c421221c27601dc1329ab674c161d4e288011d818e100ea94a585a2e193371c889dd93539e38b03e0983a8a8d14bce89b6a100a521c91a1976643cf132d4e98270b5c8cb5da1e0056e03d311aad289e189e3a0c10edd901a22980763196af848069640a0c2ac01744f9cc215c92d1f867089c9a5081ec2b29a5306c786aeb43016622e970c64583931d054b794f1410557805ce40ae341a94426064b6e6c098437c685ab811efc018722585cd0c994888791028ac262ccc83423c6d591671a4cfb0fa04608c923cc470016d01ce2db7c34409c6220600b0cfe86c951a6400d6018b1d82a095a608f6c1b581264b910a37da3a1e4aacf1da46c62539e072a34263f693ea8a6aa926cbd11d2140806087589abcaca2642003c30bd20cb077fb24851f70c3036189b61c44c098a3472bc9050e52513bdb92952c58d961a3d20259ea031434782ab264c0a0aff8b8b921383fc0eb1cc917562d02629f4a04c510d2463ee9781300321d83090e36786569e8f24728240f16afb9e42a28e0ac2be10bcd13813e5c7671361043934262a052a73b5665a45a41b0b56fcc073b84fba90e547711554c5d2a623722e25e1cfd797578e3e23863ce6f2a6c416166576fc90917d603446d2528ca231059a0afa17388e64114e33ddd9b5bc5af8067061bdfaa8f09a8a836942dba111814d98a42122ab93688c0dd40c080367bae5b851253710a140b2d320b74d16fef6ace83406c94b9f1d5f97881f591f9ed4acc136236a8c9c0c58345606e7151621e9151520408d00cf863e592391a3e833c2133d0d1adcd7a13744ae4b46365cb1e87361d39657efcf002d56ac0ae3840cc5bd281f107d416427511fa2649aa1340f9b2a8e267028a49082829d485c533b326634209206c80d00060e19aa731216a70d4cb58b50e5c21a018afff98307396644225a144751b024be410144c1a2435b93cc56bc7d12fc15626144f0d4c150a030b6431b1cdca0522a5bf416c5cc8d441ec80c9088047651f365438feac907108400b7aa4e366b134d1ab220681316f647660856030da7315d01ccbd0b864d9c7466c7ecd221a7f74716328b5f9488d4b039b2d20a40b1818321933c8cb0d38742082f94d07c65ea9b00a745f482599b1b47faac71c864463b19004778050d04a305ce9ee19b42ad126de2356708cc24dea933e0061b12555ffa08b74d4e5c2c5401d4a465ea844f2803c1ccfa8047c4191b0a0ba8862132256a05e0320823d0cece6296193436765d9ebce424908b8a21f0e2cb9d0ed24e0406a1c8cc50f15c451a647304634f8097265067b27c34a5a6ba0471aaf4b5c7c24e8b413fbcdee0e6d68cf9f022d5d054ac5bfb61822cab4ed8a6226314df587af262dac722590acacce863e882e27a614c0c1f2688c8755db162858b09c96b8d02bf6f7b0b3c63bb4ec00f0ba3b131630e3acde1e42446f28b974a865326d1c84421c9229c9f17875d4a42a99d3f513a1422492e6ed961d321b6650ace0b1d3f6e70c9c821428f151710c9bd9b04163f62f8c038fc22600e420525d7123e4106ec48f5a2e059b3117621c1a19896620f287558888060d597003daa7a21194900e444060b0a39daa01e8c702c61e342a0010f9e498347b650192391848b9687300eb30c01ad9c8c34e62022c925782e20538c016b8a50033bdce3e8965085a0de52221542a60f16333c7989ec006923250a6c8e0c085500383bf426d048ddeda00f0464011e2fe440d1c840ff0c94261014d56da98d800425770200b0079830e40023f4078c16c2286ac7812a268d59fa21518397190a1587a61ab0bdb8543d21206c45158816152a24fe409f2c614ba42ca238e84a7c25e6a98988e23830400f8e82365b7c0c2a4bd3630972b505ba44c9184b6012bdedd16a7bf08e414309c51aaa433d7424356abeae6638981e464ac2c0051e3c338e182c281350e50ecfc23369f5e4cd7ea9c92642969a38526ad0716b924c78b01846c40ccb0b445c1f4b66b83851606934081401c91c320c7c5cd40e18401c11b412830710bc145917b8dc08aac9b47608e770c81af3f6ba1e6178306653e1216ebbb92368349468acc98b9cc405479f96156e13de8e8945928a1623eca8d0c647a7125a1cbab7b8be8b0743d660c30bc51592a64f186a008028b6a82414038aed4e13360166a4852dfe244784b0c343a6cdd01a4ecd3d812daeb4e1faf3472406a5008021ba94c97323dc4788f5c16c5e29c82c401454eae5a4f11224d985a861f1099369bee010108eac8309ae3fb603981e1590cb357d59f408d5390ba38276038aa8688f0e442324827ea8d4905032fd99895283eac4d1d68ab585992e5b7b2e51b934862599a7c983c9daa850415856a5444a8308d9b92bf3b74a08d6a9849490e7040f2c2854243d88577248a008dbd200a71098bc2a344f0a2c122a902140b00e26feb01d8071485748704bca8f89c9acce999d0020b5777e68180346d55eb2a4454847d49f9db21462b8d87747bef408e0ab4f173494ac90a04913481591a174cb62c6a52053242c1953625461f1429a69ce012dc20520e625607078b4005c42c3a78085afb91618e2f400e14684b0aa6aa1a3a62cf35394c42558ef31ffecf4d0205cb2b330297a4dc00bc45c78449994492d80135e57ee90b15a9cab2244b2f692a16d80ccc80b428287d01879f62c84cc07e19995020f9698197cf01171d71bb70a8c8e78a1c5c8e25049ebf0cf3a46424e93c0376392a4e8c0925ab0c027462722d7e52626cbeb49a7a654213dd77eee413789c0ba80f4f872a4ab007544c365e78c189d3976af8427c498c8c565d95367c8a10b9d6cc21292d28830a868120b016c207011e9e24a44264306125528caa0de97af3d56623ef47dd2f1694ec8580a342742926e926e65665e810439d139d0c9e33431c872d1e091f4d183c14217bb3938688cdc88c22a8141e2c093a45c84ef396a81d19723f3e8d890214f47063d3234417a98f8827009e0144729495b9c84d0340c9125e71da6b729872be78a849c3e32021589a5f890d4107dfe104822a74082c34651ff448e2d1a402af02da26066b0d2972004c4235cc0ae3c31514472603e234943890b80701220936314353974471083be0fc9423e243e6c75c147f802b9d1c386f0020000d01992074c2c4c0cc51e6e1444cc45912061aec59d591e654a5f183947fae8e1a3a12c4c7190169027d00e784c483151a266cb9c388a585f28c2acf662145183236f539a8a13779265480063a44da9e31240122e70a2feca8e16824d16f408805602a10480cfe14f9a28af489aa0481b1224eda153f52046df162932471e22d4c952f6a8069a3671a43452c222cbcad5b3cc24ad0a5cba00324263167c5ef95d8b0e6c78142450fc3a5aad4d9a902d07116a71792357ea2b3bba19d385232beecd995a05c0405af8a4630079d89575d9599dd01bb48421501420c50466c891311725be50dc8180527468dd5d79d4022b79c7bdd39300f8e3d9c9999c53e10a5d571da72268653599165fa4bae41615d82306a8cd4a92813394080957ecc17384d19ca4f30082c2be1f16caec55168181558e5c68d8a4545833f1ac14a2c622316e439ec46a4d409818128a3085cf2524526a50ddc92390b7162e623c81b2262c8d52d3cd862bee848d35a5d40f4397211e965bbc1a84e138820593072c48929aa8c1a3461048002410153534d5d1f1e968a20141884039da569944855bcc3028b6e590a564b8b0650a98a502002849f2eaa8d34486ac4a943426d2b6c3b3101c116406d90549331c81edd99a93d069d1182129e2b32850392d310fcc4f4327245420048a59e3e3c2489d0a348b62e90b1e20989b94433d27649255885a6f7acc9218085083b5a84e1d0f4548667c8d7950e6091b2d2e7948d430c3f0787199a43895f484c0c30401de072c51441871d3ea1bc343498c241b2cd49890f7e6eec092af352a0fb2a650887374055012128220e995d92cd24b43a11c09f61d72720c8a825983aa5461f9b80ba147c49f127d0e2588f1fa31e4aac65b810c14ca74e837ee0491426642cddd95398af191be8d8187002932644933c89903d724f110d3d0dd666e1a8017562539b93a39580ca0ffdc71e03723d3d89c293af0b0e8a2a089e28e1b01ae4c671da10439c4c7e563c0242480d2448881eb3ae123c510053e5645d1193b603f1c6c8c19182348d781c418feaaca97077602604aeae041624d51126c0402489610a148c3858bd38840873b0ea69f488d622249968ac440fcc973c7cb162c769e0892604381ca48526985e8809d1b530cadad14ccb29048711dc610d4beb0ff08c9e276a4bf73b722ec8ea41e5da0ccf5a9409287150646810dc8339712ad34823157413389aeb63013d8c26465c520414827f04c90c4523ce19a84cd82168dc1a91df160e8242048552707329f3027d2124d879c2ee07090883af3b3e5211084275c603c78f4600f0046911a7eb2aaf626ab55aad168b5c5ff51c22693704ab87a51affc2fc59db83ead4165a97254b4360c09cd00979c5a9846a14c2a1be19430caa10df430988cce98f2d26ab48fceb1546820ab76b34ac0b7101a6571b12494ca142a12f48ada9c4b9cf18cbf19619aa95479e88446158c19a2fb119374c8cb029e11066b1a1dd2fdd9a9692bb24ce14471c302428b12bf9820a852b085f3711266538d3f7b940cdf04a7182210f51492a2b3a40ae99101225c1e5949f40c40c73c640885934995ee77014400661ae61f7e75d32a4c80747511923512504d011b4d1a73a51196242e1410c4c2aeb441e14625708114115f8252184631493403a48b1b4032479684a9062960290a8a048d1a70785dee4003b1e85ffa3cb8e3060f20610c9e241aa2c4869506090a2152a9a4e9808a2a39c22a499241c478a30ac965490399001009d9f8930ad341848f1161e11b0b7ad1bcbe9b39b7a34f0f8d852d8b287dab3257dfd881eaff6f5ce464d5a5c126bc29221bb0c65e3870f22f84a1a068210def01851b7d2e30b5faa40cbc7941400f3bfce214638ba20d00ae0e11e090b516ba05b1d2546df4e6d966c01e4a0f203dd9e066529c4310b8ee70a0d95a30448ca1d7a6401e1d162bfd5151318393de55d767e9181ce77aa884ff8d278c27dc1742205ec73e9bd12a959fb2693056163ebee0f92ba1b7bbba3766de8dc7d4dbb3bb27dc753733aeeea693cba1ce3763a7264c8e584c978f79418e2eefe67bbbab7bd393cbf067a14f2fcf6eda242484ead1a66021cb74f9984ce61cdc9edb1b043f097079ab5cfc2aa738a3455029ef772929b8e2c7711d33a34d9e0d7ce6fdfcff0cfa8942a894356c4aa938217bd8437927aeeb49d0e340776146d381132fae28ca3e2d2b90a25cbea016606dfa213674518b6a1ca811dadd495e449996ad844b8f0b5b46a3e59759132a557c9a706e96a6d4f4e1bb32a1a8300e8c98231846aeca2471b9779ca0f3a144bed5e40c04393c19488c0162797de434b051bdf1f110d4c10a87197e21780b89065952fce076e7ca0a1355772c8b02b6071b1f5326178c10292270e7cec9a0e52eb94ab983044d509c2429841cc11a5555151691b2e32a40121704a3a9911832639ae409638a107cf4c2928973ee5028b10a31f4727a55d84f7b7ccaf8e0438a84d992c5a50d49dd9137efa31376c92365696396ecac286048c5d3ca0d0d471d10b452381b10d3b0dce95203ce8445855e0a7f4cf98c794ca22a4ca130004a54112b650cceb88b532cf849f7f07599090188519027555f3668f0ebc2e495444706525316395c00c960042245edc3d199434816a3c480750869ac90887e41b94313608a1aa54966274705c97cda6321ce8d7d98b5d62071790c6446029b1b51f98887a7149b1d7e22b03501ad1dd04095a7d31b1158360b1812f2b02c7890466856f8936b408ce3e4d10c2731ba10c581a1c103b37b9133a20203c85acb77a43dbc5b79360e1e02919110858b8e2260da370f3841dfc242c4b044d544e02d87d75ab0a10461a97c54a806db713342819d381cc4424c35cfa0266111801c50810692f575c564c5a41e86919e58310c44c23f315bc387c69da40c146e726471f2d2904514b26025c05c0ce5e6e1ea8b9d06804a6454261de0a1290e844059875c9e7cb95c6ce50fe9f9a488321600c208244fe408585ac275261f27b0494ae09727d05c060a0868297adad4dcf821a243c9a2d1d6a0852e7074518ad03e1f0c9a172c02f9eaaa9289979e286d6ad0020e204c67cc2a39f1075a06981c82a2f4248fd0d1a3088f66627f746962aa486bf0aaa9487d054582c92f3ff2b508265c64b8e0e6b0d09bc10a193f600a87c89800484d40e186498ae046e438b0694a0303343bfd913178f6a828f479150e20d9b33b313a0b802828c48e8eae164bc0dfe976cbb2a804046777e7e3c10e418922290767120314af2839a99ae295f040e467914ef6c24662445382e08ee4969605156f58ceb89830a20f609c1d71d628aaa8c4810185768c987e35f0e586a2df8ca0344cd81a2288c38e879397b51c232408ca44a1028907715e484b1ce9e1019ab1e43a5cb1a54a973a58042aedcd8179aed054576b6a315f01f29836ffd8b152ded07870c043a63e635598e23764d4bcbe50c9926405eda0a708c753f8d6e54ddcd75b3a06d01f7a1165c04df40e0841545c0c18a3420bcb97a2718275501d788041a1cd9b0ec7a7388c8edfd8e1386d94442f0d488839d8c6334535040f949e1723c6c54e183a2d2e2e2e4ea54c6adfb34d9d7912900133fa7f52439c0c31bb209eab18344cf8b3fccecdf25b2199c1c5ffccd6b0cd0069d7f91d0af75727c90c4fff1bf7fe7624ff4824ff00ff6797805240963ac5a31d765c2a2a6aeab6f3843c958e90a7d24da9cdbe2406363f4049bf1949bf07b8208b3b039fcd29eb96f49baae6c90b6bd8fd428cff7f859fbc602ba550a994773af9c229ceaa35f19e551e5279e7947fb3b0c4d2cbe7e6f2f1797df20b571ba4ed680cf81ce4edbb5bfdbad50a07fe8fd3a7cd093c2f37ed71be8e0a85e6d9ad6c810a141d7afb4fe6f9d8b35bd94221ffe4f3a0814e9c69b7b285060ca6ccbd1097ea3c9f943fe407994f282121546752757e435e9dcef25ba1c1de644af130ad25f14efca954d98ce2cc57192bdbb540a813af05ec3008b83b9bd2ff571bffaf35fe5f69fcffd7afc851f22e3a952aa7d16833ca4638250cf430c836eb7a5feb335bcebbf8ebc23b1ce3f99bc3f95aa087c135eab42aed9f74727b559213e2fc3f6db20b00995268cf4a63fcff57b8e5f285ab0da43cde9429e5a38638a113a742a90c0c71c2299e3778e12a03439cb08efe3c2f9583f64fbae9218e978cf02819618f135fce453873e2745efeff4aa5120195773a974ebe03ef5c42eda6fc85005292745bbf833d47654a796a93a9f3d1299bce7748cef9fde9218ec7f33d737a8847a753dc090741518e11040f726ac9fb27e3f2f4a450a9f466be70756f3a71be69219ed7be2fcc4cbe11b2a342fcc937b74fc5a1ce9e79d8dcd908abcfb6066cd498db0ec2ea33e9b6d7b36b2c60861966d55e0c804d274b9d5609d925f5d9641a36775cca9452a74c42a8b44fbab5ffffc3bcb91f1a46454083eafbff8bf8c907804f294fa5e251362975fa7f240775a4540746920eaa0e08930e20241d30f8692c1acb36d9e98243292e7520e6c0ca8154b24126c027dbc6804563f7271fc8e719944a258664034047bcc183ff9d4e9c70cab6f3525c30d9c608679fd069538aaf49f9693503860f556a6955686821d810556a551f5876c9aab11ffe5f11ff5f47fcbf8af82f40fccf2edbfc926d706df0679755ec92ad02e4db06b4b5fdbf86a0c4a0ceffecb42948e5930c4a2419383f4bc5592ace4e19d4b186fcce2719843198eaa15268cfb689f0bff1917190d1699c8db09f3e2b1f45270f025441497367062cabe04913264bb8fe87f193756275da9406d63d09589403cc73cb9fc23cc74a41c0f6d4a832486cc9cae0a8a70eec05e4c78b2c6ef1314c8cc01f6c1ae21665a81d8f801940e8c151b1cfdad9d105629c040d1e92c04131768c2aa2b179f20594d2b68e150e217d681af2e30ac8d571810fa491428968b86947368ed9232492be136a9b8e512e9ac47874e5c18f304ac6455c3ad4d52531128764648ca3c907883c4692c4312064bca2248f1cbdbf415472f031fa109468858f0eb37659c748624797dfa40f03f4feb431f66dd8373ee8fc191e2963ac5bb169929724026e82ba185d2c7cc0e8ed25faf2a68ab1cbd2991ed2223b84fc29ae9b8ef81813efb15f1830b206f22327c40b8f44e6a01f2b1a1c09aafc05a02391ca8d55318dac67264d8e0c6d2fd61a2930a4a881c187993127d6c22a7b84861cf6f92a04b1fe49a232fc5025c4208af58d0861111e3d1e1546f8ce15819ed5d11e1685a1e8af016a4c68aa21113b64e17f49653290657ae340d6e37f3c26d04cc5086bc2eff9df4b143f7cfd228d1325ff1369a41371eb94d184e0ff1542ee101cf0ea41e0fe9f108039b59126891005ffd79321e27df341d15ff4ecd76174bcf9a0468a8bcaff65241cd886986e509df8ffe8c4709119c5fc6a1111a23a47908b6f7e3cd8b448450e162f0b82c078354a8b3c5e74694305c55bd186d1a2882e85a6f61ac9b0458416754e2aac4832f1d760f159a4637276c6a339ad41a7cea292d01fb24c02050ba2da2c6ef17020e84c9c0f2314cb74cae4268a810abceb5ee9d22939733ac5a36cbab45fe3a58453bc9075d3e6ff95cd9a2f797e747af7ff1ff1935fcc9a79fdbacc69fdba552f389ab994c79b32a57c74b9ac5fb7c2ce1b36e5a6b6fcff41fc6497c0ffff72c97619f4a75225f5d98446993b6fd8ecd9a6cce8348bcb953f952aa1cdfed95ceb9fcd33ffaf66cafcbf5f95f6d52735af1a0558198d9ad64b5a94fca9d4e9ac3eb5ccd082f8ff07d402f8b5bc6989ff928f1e52b520b54475ca82e9ff9fc62ed5d4d0b20090a5cd93b0ea84ea2ccb3f9b559d974e714242a82ea51af2822c1e08954aab53fe0975a6f5cfe61a9b02560a65ed703b960a0d4463796af3d9ecd9294f855639b0383f78c80fa6c9b96d5bfd5b6bdbb6adfea1b14e281fc5f5290f4820440635c025a0ce6fc8a1ec732ac5a37277772296b4271a538a0beacc6953d93b79ad28332b88c92a93563263fe5fc5fcbf8601b34875ec62741aa51afc6f5c574e2ba6286dffaf4afefdff5a24392511e7a523143f983150a4c2233aa429b4a6c08cb4116f4b0acf1279b68c0890408cd0938c1922eeec0d1a8b23d523820893bb080f30081241d84702936fe3288226c460c5affe10711ce364f3b81425c49b1b69fed25ed485d851181565405b5508bdc66098301d0b42b0e129f6332261029129005f9629253420ca5435394326410d62c6148b41387b0180b890e44dee4b8525106728de04f110c5fc0069d04a8aa6baeec396b83f2614c090fb80e268c8c8a26dce073c388be4a58e3d1fc20cdd032e5dd0e0a1108a27313508233c48a16710059cbc870f2e5a00d64ea01ee4a81620aef5bdf0904cdcd4b7508c1ef289d154157a9870886486900535d2b41d4a03d4b12949740f1908d21a41854b1c4a89bdb5f9b3b41ace01214723680834046263051526ed11c3c025cbb4bd49590cdf46690620c7642aec44f7203e14e4af30cd9207194622a214dac8b77e78790f14328f7b6b9a4c440bd1e07470c1f6c3afc3a43c0a88bc08c1d5018c983f1b3ce05c3ab0082ce4288d1d5b873dbd320b890d5e7460df4438a9eb64a7aae8c849d0d69a48d52a703ad9154e85a92222e1ad6a1006562314a9f3070f8a5595ebaecf88291806d4405752de318b3ab50904128ae4ec0842adce795381eae18bea56e5d0c7529a2daad5a3b11c7d48524ced5818d4e430ef693a04d0150268a871a6ce1e5e9ea47b24a6b3a0360e860e6ea6463b1853104c2ba99b081f1605e03691ea78aa617183120b690e466a089ca53ad2b54e521f4222e971b8d4694c17180c3e1cc8bcb11f0f7706718871650b271a17063958a8c1e6ba6df17128a0c48098df27197d3485fa886f248a6a493bc04586c95ef404bb28eec70ab8285e148c4c17c4347f23a0847ee47043d8d5061a25c4cde12cab0dea219fb21265e206f4165b2618fcd1018a1474c35197106acf3d4f03420480ff791ef97148872612239e1c22e4fdd914c8e3b9804919bc2695f18c1a20654c8b31578472a2843ff6bab8d4186488b05fd244cddbdd22c27700dfd2c7b4809393b1c00c4c5968279a33ce1a33b6f4a8d1c87166a892814c8cab124e046444cc566df2e024231b0dd03dc1e097c1151546b8ef209741bdc21d94d0f8dac10d8816ad350a18551ba83c8ad76823531b461462e72e444d37d06dd86a3e794bc377d504b4e7423031ce4e9309fb27809b65a426f5d0d79d3bb95ff34116408a8a76509a5562023d38892045108040149abc00e02738c42c48de296e4e7050505e34a5b6e6c61dc175059dbea942adc036586591929c2d0accc1618a1f2332168138a518500a44a813a8b6254421a8b814bd254d3a146d0052f763f23f8eb844c9d4c3d8b04888494246dfb7a2cd95296fae7a0274ec609261d5c63b32fbe227c210e7b380f15c6e2644bc0908279094d030e2edf0d0b1db9b6ef15f4eaa78e064c0ed83bc5c02345fcd3b941c17fa2e80f8f6c37b2bafa562b8c7ed4835f9529aa0103d0f203e0b6f0f3ae946a818caf9087cf5a80c1b83505088d19723f2ee4244e0e850af125a11a223799cdc0781b2c542bf4ece5729c4e3c45f92bbb8a634742e5189aff0334b3835197f76701a69642f0e4218e27f94f00363ea18806e22032849ee70e2820e23a0174015768a4a1508a400e61de17321248f122019007d371b2c8d9887fafc19a462466252f12af46849050153c48b225f1916499973d1128784ba60606af83357a1eb50df080d4ba298186ac96aa3810a55610d708f1d0d0f345025124609c2b332d441ecabad84553324f68a6b199e94c9b0a10dd01c0e428419e2be0c9f4d748e84e9e1df9a3f618ab2f230fce11831c7c56d0f883ffc4dc4f186aefd53300183a5e31fa22b6c1b06313f22e89531a403c38b35382d0baa5e60e0c340c08f919e1c0ac35a103f2c5c62348833117e255ebf097e5e441895d94a747041d08527170c2fc089b980255bc063a1081d4135621a170b500bf6a085a7477d715ef4f100d4b723f6b57c01f09989d0423873a3131f0d3e0c597c06da746a93f16055881465b32bd07250814b8514798ff8007e11a94061cfa42e2a72882aec19e2f3f5cc44e96f6f0a9d130337c884d80bb10741d08515bbcec05ed616aa0c68a2657a7d2c55733c5474bd24777ad32bbd064f5e3c91843bd19b3acba343962724af9917e77d0a6a3c50b89186022021850418d62b50153ee055c20b83d7828957016f008fbb457757baee48dcd5ddd909b253bcb22b6cb37bdbed024cb83381c884e784bad284a3b4a9a2c769d4c121ab1e89fe10abdb51a7d7b149c824a18c9684194b24f8b949387b130152842d115044a020866546c4de23025da1299d943f3a1074727475737c0ee790e073d243736d47e6a420cc81100482e02008b05c27b9347236bce49872698a6e4a77989b85f1de936f96469ca2382b71887112e2e002c13581eb00e70677f566e78dc81be11bfd667473e38677d371e7849beea63c81f800d386ff80cc8aff40c6830717fe83b3ef00d2ff2f5c6d95ffffafc6f650967f429564019c62a484fe7f9f5b7e97f2d4a6de74460d79c2ea938fe2847cf4905ac83fa9cd67354994cf26b941d571292ea827a102b2d467136ae1ff0fc84af9409efa6c268190a4012060e013ff7fd5f2ff9ae5ff158bde9f8144f14bfd901c10a4e251b6436a1e4b18c84f59412a1e5d9f2c97ffaf4e8e208de405a4755d0640a5299258e40fb99138e92bdbaf2a55768ce040e41906729f80464c20b5c82c90f2fdd0ab6b88942c4cc013d46316c48c092f68a056ccbdd10bf3818a1e4b6012e4ccaef38950caaa039c23ed03a62d064934c080746ce1a452f06738802d00648ba250830b3f9e5dea10880218f6220dd821064338fdad8508a0d1d3847e46a0075b5938d9ed745e3ae57db391bc00243ed206273c78cb4ebc98212613d43b3dfab014f9242a34744c29a01466cede8b046d5cf55dda1fd5900e5f86402c26545c7664263c8d06cd005c922494271d3024bf229686a1ab3eb4629988528427c379eae3da02252e80bcc006706a2e530d0e66c5646e204e1a3746af03401c95082d6a80241687018907cdc3448bffd1a33a6cd884753d6803fb2d681cf13d2ebc60c280c887649b492816a511124951a0406d7b9cecd48c7d3063a04885c79a1c574d5c9484a85d690aad2930036d501763e0261c60c812642d293c4be4d972a7c6470a9dc96284156409c4083dc998314209a63b507ef8b8005e7b83c6e248f32c6e01547c92a2e8c79d2c2677111e6008c4033704e92866458843b23e12987c1b4619472b30213f02e088e14588c18a5ff571e4c754a03a107798e0d11ae364f3b804054b14a9b0223ab21e6995dd48f397f6a2ee0298914bceb3455f665f85515106b451010a84670612d90a40605a3506c384e9581036410f3d29021d431eccf014fb19913025e84a9b54e6c7ec4e02b0007c59a694ceac4872412b2462c49fbdadaa2667c824a89d7a36b15876f47570c829168370f6324182d286a91d2e8ace6049dee4be54589a50088c8c87bf2686bc6ca17813c4439406235820c0c1d1f568d11ae4a095144db5842b99a21c303104f30880b0b83f2614c0b823c588f27d602c1a22c075346464d1262786158cb208771617d921e12c92973af4e0a16a9302c0210f16566186ee01972e683850652bf108ad92922c2e144f626a1044a048f042108cde252d4a92f40ca28093a72bb4b13c0464c2f5c45cb400ac9d3cbf384a13a381c9309a75512d405ceb73c146924d460fc2111f75c9c44d7d0b45a81d0c785380f30488b6b1184d55a187ba160ae0608dd8925a5376cd10b2a0469ab6057c0e1ab4414279f99215a08e4d4962bb296e918f5ec9d9778c09d21a418549d818b283485da03b293f2fb1b7367f96d6b7434eec8a1c923ae7b240c8d1081a0205b5f449c7b4a0f12592d9584185497b848a01cc580062f49cc15e4b96697b93b0cca0e3a3a4f1b195884c56a334039063323d586209930802c9c55846f7203e1404038f4b2f0203d50ed100f2b5e441869108284f984550302ac0882a422bdffae1e53d6000ec2e089f89023376b3e3de9a2613d10518a6e48024670ee2902f381d5cb0fdb8a0a60bcd304c923d3dc2b4f22820f222c456a29f14687e0aba392e33317f3678c0b7f4e06484438f68f50101b0c0428ed2d82905ed2662701d2803db6de99559486ce002115eb34161de2c8303f24d8493ba4e76f4a62a783537330e62841d3909da5a0309058a234f27f3141f650b4e27bbc2a9301be45030d0a781b0ec0012096f5583b0e7a22709852c2990082d0a2b52e70f1e94aa33098ed89db83b544791ebaecf8829980572b860911ea7667df8925752de318b3a169b194a7064d449c912834042919c1d41428031d85268ca969d09ae396f2a503d7ced5b2d8e13313a1c9993550e7d2ca5d13201e7979cf168504443ecd1588e3e242882cc49b37206636752a2cbc2a02687794f23b05494216b5344c098047485001a6a1cfe88dd8cd2690fd13ad6c3cb93740f91c8904ad5439cf69034bb04b5713074706377e8128d143b5c96bd2c3b185310ccaa23299849825cf961a30359840f8b0270991089f2b872cfd6b278f17aaa617183d20a12939c14f133d177a6531618a9217096e8f848ebb322c8a828c425eb24f52124521e8d3d6058348100ea74c5abd3982e30187b92085a1c32404218af41eb8dfd78b8238891151e13aa30e0222b5476650b271a1706b72a8ce16aa4e628c782af1a6caedb5685257e623f7d7d06e23669293120e6f749ee492153284b912c8e1ab329d4477c03918a1274a6c800b155e9009676808b0c133d213ef84489a89364a9cc16bb28eec78a37435d7441d844c7308fc8b00a7142d870ca0c9785a03004eb8e6064ba20a6f913a1e3401922755c5345395b3f72b821ec62a36876b442c5640ca424c8103787b32c062ca634330ca920182645583e6525cac40d0126f6a83112708babb8c49609067f7490c2192415238ad3862005dd70d42584021957568464483163809dd8d3801001e07f244058d1695315a24cc7f5e3900e4d2446409d843bd410f909862423e4fdd914c8c300a43e274f31b8c204312665f09a344691300382e8cc94391ad43540ca981663acac3c3961452a4e211788925562c80bde40cbb8009241881e0a0cb68ced7571a931c890d49d06479b19240220d3b5a4899ab7bb45f65362a11d3d2b8e66d600bea58f29811b472a36b2e6d6b83d3263811998b2d07ab619852b797c24a6f08a133d3893c90c9fb52949cc781064684ed68c2d3d6a34724044c2a065431a2b28aa64553290897155022fa186c14f80470b1c799111315bb5c9616f580cfab232a0c68596918d06e89ee0039ee79d1c94c293aa6c831f4e23a29830c3441171e7ab049d92af0a23dc7790cb08371716b33cac75526815eea084c6c7c683c3561bac346b87396606c4a44002a90ead8a23ad08797c44c2fb5ab4d62860506d49604100740b8498005a8fe235da88549a0180ae2cf4697b44cd0ab17317a2a479e0b40114435925811dd809303a1e06656c216943e4f0c5d28a065bcd276f69f8ae90273a7dbf4505892f72cf8560629c9d29901d7fae0d014331c2d83f01dc2c2165d974a0d70388be1361ebd0d79d3bb9df5a0e14665c886a8a0b905900292ada3d69e1274e21266d20b150132626d083930851fcb8760ce23e8475c0e20a44a1c90b007e12fc8c703ae27852064fd22c48de296e8ec19c094e3f0ac11c0189f16b684ecb006b0fe8b00182d91105732d9a525b73e34e5fa0800b612fa0274bc91574faa60ab314f3a44e9ec8000342630cab2c529233454ef0b080882042465ea28bc3143f46642b5a20c9d42ed821b5222729c5805220021d22666b61d89ca0cdb834b6254421a83814715c416ec0b8025401d3a54987a20d40e83c624ab43961c221039f95ff71c4254aa60f6bdce96c859f9432b20d8b84982464289007e448d493a00a27af156dae4c79734560c6a12654027121c3298b8e1d4c32ac18209a3262f15725c7bc97997df11361884f1939517263af408be51718cfe5663a2403528b46701d4ad4d1a405e10492121a46d30300b4f8a1010e524d191e3a767b53ad451c2a30b1b186d021255f4eaa78e064c0111093ac003785c56c8b96974b80e62bd94aa05bd248c8acbb6196e342df05508547563eec36ccedf0a002ecdeca6ba9144a8242e1e028f15093902d1a8e3a69cc190c2f5e60303041991b42aac997d204834029520404d91d0b77656080f82cbc3de054688e10b54d2ec288d0b145c550ce47a07b42c988be16eae6cd42cab03108058598b9d1ab7800cc1d0c6f6123f2ee4244de7c99a3a0c5e195a40008d7ab845684e8081f95e42d4ca5182c22202be9311fb127f0e69809f6d06035644a8c40d962a14fa78a099e9aa0cdf2f180ab4a211e27fe920cb222327b93deb8dc24339cf010e7ab0851860b9cc2b4b54995581a3a97a8c4569b08334988b447f653d8b5845393f1674777b1660703571929999269642f0e4218de1171911454182706e0d89485928da649538034b98b03a68ad7da35a68e01e8a63195223c9a06e8d314d72cb9c3890b3a8c190078f1579565005f201981be255a2420f923b94c4cc2c87d565e768a4a1508a4884912a2240067f8c320eb089f0b217994ba304c71612743445d4b0640dfcd060b234835b0dc1146b48787bcfafc19a462420a53656e18b2784193999657a1474b2a087e86428e0e2d7e60ab2b7b51e42bc3220e3dd8ec48b86283498293af688943425dfc0281f143245a648daa4f0b86acc4cb01256cb1905d98122d08ff98cd55e83ad42782068f27a1401a4ed022581413432d596c923891849757e387951d5b5015d600f7d831fb82615a7debbae404f9147736014493ba1d7469097cdc35228125124609c2b3b60eeca92231412990d842ecabad8451f92c125426808d176e31b2575ccbf084cca047887edc59d2f62f85b5019ac341c829c4d083002429c17d9c6d759a10e5078fcf1005373862340a136402c9263a47c2d4308b1b873869df9c9539ec4f98a2ac3cbf30825696782e92ace0e31a31c7c56dcf0737ec0c4d53228c08b3926f228e37746c77263c50937657a04555ec444c6090923a174fde6029112104ce51d7f10fd115b68d810b3c565a3a15821329f923825e19433af4225a0c6eb0597425666c0d4ecb822a177382a058dbf2c78f07385d2d7edc605b5004ab10dd9786ca57ee206b2a049c854d25a47899b4a22a3911e3c7f4e45018d68098a822268b1581273518787189d120ce44182fad8053885c2869b30ae732b564ae0f4c6e0c11a6b0c31e207391a412589a3b262510450471e0e371c78b08a3325b890e46585a33660581e107ad2c445e9a4cc0daf4cca9ae4b7967d2f029736313d0418693e88eab482eb018a1daf88a0d1cc1248d740050959f1d351333aa5a7f8a16ada1855964e80925e9650ea0a04c53d270ce2d562c4248c21d8e0273715f69f49c498c1314b882c7c001931289b4161d4135621a973b33579b16b9f8a0c234d3d2a4f4dfccd43d3f28794c99ca3a81e103667c7943111738be600900b0d08ead0955a6700647891814b239831f2ad3423648ab34468a8b466a3241e51c62f425008c9380474010fd11c4674c9d892bc549755b6ba607bc1a8d4014c54754d00ea4314590432a65d13aebf5c280b8d0c8308c8f2b613fba5cc8b26ccb7363830c578c9fa900578416c2991b9cf6dc5922e8c70a0ea04472ea80903948365d72035829446468f221f6a0ad8d09bba497b6d54da227b01a35b8da746a93f160b59c7c58b171b6aa6fc9289b5d815603183aa030087b80ccf046ec50133a86656b401828a466a98da14d21baf21ef101fc1ab2691199971a6d2872ac49ee99d44545ee10a71584742871e926008cd9286b9185c394cd8d10cc948424c5155d7cbe9e9928fd19701389b7b4c680449845e7c4c00d32201659213851e68dd5a416646f4f88a810a28cf37364c872905c5ea197a00b2b769d8163210a13d25891b3a746d616aa0c68a2643fb0501b2c1560d1bd9159aae678a8e4372c68e194e627c4dbd10b5306444efeecfa68a1e1c4e56b8fe168ad7935ea0b614548001d373f4c44264fd993174f24e18a896014100191c1c729e3cb451130687605a840a06ef142420749aa452411af05cf980c67065c1185d4a418668302a8d22ea091000847736bea2a0b21300252c22d4f6c2ac4421570761134645b6231be2823a159ba5173ca68aed484905d566c2c8871b255b180a4204a01e015b02e7f9a88910f09f559821867a7891b485b3ac0f8e20468144570f4e9ac02560890868192642a38b940cfda60da73c7c02c0cc37a05aa820733228640a054e30bf0e5e2ea81e9292ea7779088cae0e6044c0cd20f978d198818d3490ce515e8e5491cb6e91105489a342c7e48f17491872d04cba5c3c01e046c235e35b5052820496b109337164128c0eca84478c6c9810932a67a312260e200b08881005d5b203b82444cef7489b54992e4c165456aafd204119f769884628711d6563283101364ba6851a4e2c6589d0b2d3a2d56f21d73e6a091d1e7c896ae2244aa756ed0107352ad3aa75e58d2648d91b8d4072e095d1f8d045ed0fe9cb1c70268bec0615b297921568803ebb533c64bb9c54e1f340c52d801c164c261cc2d98e5224d1342427421494e601510bc01d2884c912ab7dc21644f74a35285ab106a3e7879499393c60318990a2619fa14d15127cfe2c405cbd60421c21c4752448c1d76b05296971924039334492104223568d0bc3cd2923655f4f88c278c0e5b7cb111898c3723ab1e89fe0893e2e12fd932aaa2c9ce17210d6493a270f9a5a14be2c77789cd8f56224284c64c8a9b4b5c329abb6bbc9862c667c8f3290ba1dbd720a7674a91872b602126440202d817088b10b245c7519a1a5b7b033f4213b2b254ea5488099c014237249e2b08af4d898d4b8b6503e050388bc3c0126d00dbf48011984e397e88406437da0aa462c5961a372de037ab8b0d234d67c82a4e679f678329344a7b6e28a4348ac2b640d8c211a20d80b557638a4ad81e24173ea7431f4e61aa38f4714b943107e541520ccb8c889dc7104a52d6090e082f7c310d22a6d62c65345590f0f1848d20b4cf55c84d1c9246ba65ce9b2e035044ec4f9e4040a54a2286344a8cf839712105e21f8b3ac2680f3e1340cf903daa9291ffbb06b14082fb0bc2e143153c281a78ff271f9db900278404189b663c78a23ef87f6c8a1d4b5f690c07ad51e191b8a592611940898056bea441a092264300741898a14b6cf6ecbf443d2d12993f23609a68a984975041e94704b29e80a60455ded049d035444a59897cc58c32af2c707d4db1fd18470fe25756263887aca02bcda9a0375c8a664209052a64208ae343111e1047433c861efc2f248308c8a9f901e804c5ff5a59ac58817a7651f9f2f4bf198c472ba6a29ce5a949fc1facc1053bf145a23d7510ff960b28004377068060f23f12c12136b32c12ed8affc1f27020d4e9c47ae8c1df724209cb7b8cb5fc8f7491400dcd38e3c6ff6186708779805461ffe75a33a20914c112e2474282133501801aff8b8511b223e811deff5c50c80cadbc78f093160801d268fb5f4c0c61a05d9affbbe23e147812ff4f9239a40121feb1c14a07e2ffbbba94299bf17f56fba3d0834f167683c8ff5e731d10fd9f95c8643f991bfe7faf3b27fed7ca8af37fd909c4ffb5e17fad15660ffedffaffffffffffffffff3ff2ffffffffffffffffff594dba5e90712a82a1b29049427c62c710af0a7cd82841b8e3880d143ac87ae4cb1a32057a0b225d70a348840f281425042841642dd882ea80879d22831d34e5401702ab4b4d9ea83a31d0febc89c6f026f8e043610cc4dd1c0b2954ba168be83b6ea4c327dd4881c127408023e699b2b22e43ca9875b991416a52834ea24b588e20195c23231093c33bed14ae20543d220319d5650c8764fe678faab212438d8ac30d4f7226155c5c74b449c1c8257d48d45706055c2122b10421aee8a25ca0840d726205c98d0a829001c440e0c4507542f44d1d8d1563569e70d9ae141e8059896ed63f561415180416a64204d962162fbaffd6576457dcf30779e3c91c3074b06024a6753853c6886a704b8b1e15503473dc29b84e2192245667c010514893a0e58c97080fd4e09881f7260bd27db5c0d91b9bed044370f2f09280b7da4608c2a5158013640402020f98018860757fdef42639b7f49888e383e528d11fb344af2c4490208425cfbab4b29818e9d32a83352827875a34c215186c16314182e5cb4a5694194d585e64d8dd068670e0ed6582f856147a3802a57a698b91b83412426b4207ae088a49782596e40ecfce90bcf962e9f400d227c781168cc78b702d4e89b2b42912714eccc4c0f3df90cd1dc611c9ca73046f0d231f87103ee29c0912d618f29a8165845392317d3bc20c890214c48b10326a965d5b724a231190d4cced3843189525e8226a4881803a50be106e98209ecebc8c4f269859a1a3c6851ad9032c18a0d6c6c85c001458648e4ba34b67330ab9670c93017ca93d3813a04addd2418f0c0763565d864168bc4b33e6c849b44503c61a8435d665c68c01b92a9542bf6065c41c1f72923116f8a0dd9a67543a7d25a18386e85c91d694804a922104c42908171b3e2cba883ddb08a4e08be92eb441f96840475141f2cc906ca312202777ce1420211527c107d7d36c0ca64916f24cc0a288d371692011a62609152c2d9b80210674043a8c576edac5dffacded567f65fb856341da959f50279c53a7edfc984da3959b6f5b77b665becddf5cd66d599076e126c62a775fe730afcb7d9df7324ecbb920edd6ae14aa2b95d3998791ca5dbbae6eb7bbdcbbafadf37a2c48bbeeebf2299b513cae7b18a7dcbc1df76d1ecf725ee36dece282b42bcf7c5268cf74eafcae544af9e894b692619472bf740df7786cbb6d5beffb4c0bd2eeeb9eed41381b618c72dbba4de77b0ef7765fcb768e0bd22e137e67d7f0c6a9789c5269e7c75c7b18a1dc6e9dcbfb8ee73c9fefb6dcba82677b1094cae920142a08bb4f6e7ce7e31896e3dc9de19c965b29542a7572e378dbe6309cf7af5de72f4f539f7c07babe6154c45dfd95df76ce5dfc95616ca2dbfb9cd7b9dcbaf15cc77593e9ba740623931ba7ebb895733976df98e75d59907699effbaca054baee10e392bb86fb1ceff59c77e93e6e635e90766bde99e3756de7c7f4605472bb7c5dbf789df7f45bdbaf9d2b9570fb2a3226b1dfbed6e33d8ee9d7b56b1b8e11c9bdc72d9de7b86eb7768dc3b0edbeee0ee3917bd7dff86df536865bdcdd5b383edb837006a754eed59d1142a5724a25554abb988c46ee77b76b9de7df9a8e6778af6541da95f24e272ed3301671db797e6158c7edfe75dd5c907699f54bc648e46ee798aef37d77711ca6e19816a4ddd66ddd21374ce3fbdeeb7c2ee3734cf3f09c78e7b4fef2ad2db7f64ed36f6e0bd22e950f84e9983c84dec9ebb5b69d1fb3d028e48ef178c671f97df7bc6deb7916a4dd1ee79dccfd89dbafdd1e04a5b290d779fd097d2a954aa552a93cc3cb3b3bc33bd43b9ca05456502a9fd5597ea1857bfc20ee7cdb717e4ea9542aa3d4ea9de0149f9be57710d7755e82947f69d9b5f3635ef93106b9657a9ee15de6f9b7a75bfad50379be7f42e1378d11c88def7badd7768ee33993ca07527908b36de7c75c5f187fdc728de3eeacef714ee37d5de782b41bbb539e8f5d3b3fe60ac6e8e3c6e73db763bbd7e39c86f51617a45df9ed6cafee8cc38da754460975a5f26c97ab676e67b95c3da3edfc9882c61e745dc7386dc7739eeb35fdc1c8e3c6e93c7663999fe7bc97e31e17a40da16f4ae5ce1b4273b7de01bb2f1cdb73fcda711df3b82e48bbb32ca54675bc2f6debb5ccebb91de7761e0bd22e2fad4ea14e5da9743a71a652a9549eedd59d31f71d572acff6209c519bb8744fa9dc954aa5f2d90c6c4aefec169652a3c648c61c77aee3efeedab18bf739becff23ba7549ec19dbd70f56cafee4ca9542a5f17c7fccabbabcbfd8ce77acfd7f20dbec563788f5b9a97f7d97e5d41da3ddbe9ea19615370aaec7096d3d5335e7f42db98d79f774fb9796ab4e1beb51dc7361dbbb20dbbae0cc3346cb7301cb779abbf30eeea82b44bad12329d4e5cafa9d5094f39b99e46a1148c3576d7cef57ddfe95cc677a592df954a7e97f2d33d37a671e76efbb62f5cc734bfdbb08bcfb85b5cde5fbeeff99d766b597e360599bc87e654c66db7f00edb2f6ce32d5df3331fe3d66d9b7e5b9877ddd7eee7b615a45d2835d108e3eef7d98e7117d6db16a6ebda7e71ebae0db7f49eb7380ddb709c0bd2ee1ca7542a95b60dc4e8e276dfda7577bab7edda9e65bd17a42b3cef5ef759653ea1b04bd8b4e71976edfc981b8c2deefcddf9b7cfe95976637aef5f41da8d1e526d27ae54f6d0fea954ce35d37d5f3b3fe66ac3c8e2ceeb7ac6699c7fe1fa6d719816a4ddd98171c55de3f15bc3bd8dbb3b5fe73aaee27677b7b7ed779e611a7fe9fd15a4dd9d19f86c4eabb0cbcf108c29eed695e51986e35a77f537d679e893c94471c7bd3dc7fadbc62f2edb72dd9fb86bfcc56d79aff19ad6f139e74ddc3b0edb711bbfaedecb332df3c612771ccb2f9deb788ce77aebf2ba91c44de3305edb2e3ccbfafcd6af6e44bc77b88f63378fed1ea6e9b7cf17ef17d76b1cc773d8b56bdbd6f34ef72cbb712ecbaf0edb71abd339a71b9e659a87795dc7e99e8e717cd33def39afbb724bcf393fcb2dade98e67589e6b38d75bbc77f5760ee08eeb9ddf717bd7e1d8767b3ace74ef788eb7fc4bebb4deef6e0d63ba695a6f75b8b67b586ef19c862fdd34bee3b6bccb70db5abae75ecf5f779ef1ba8ff199ae74f3ae5bb7fc0edbaf4ce32dfc52ba5d77df6558d6f5d9d66b9c6e0569f7c93bf90eb62b330fa94d291eade5d649f7cbebb6bbd37aebee71eff2926e386e717eb7f998c77959df23ddb5fdeefddcf332deb6b25e43baf9baa671deaee5599ff55aee1fdd7cdcc22e5ccb338ecb39cc3bbaf75c877b7aef5b1cd75d796f74c7b2cdc72deecebbfdbe36cee8a675bcedf5387fe77886f745371ebf75dcb6b8bec7759edb8a6e3ad76d7c775b98cfedba9e13ddb26dc7749ed7fa9eef7b2c23ba69b7ae6917ef77bad6753b3e74e3312ce32f8eb7fcdbf62d6ce87ee5f7ed699d76f556e6e1b7d0fdea7a1fcf31ade3351ec32d4fe8c65d5b6f7797d7dbd9c6e37ed01de7faeef2ae1dd76fddbf826eb997f316ae75deeef9dad503dd3bbce36e6defb04bd3ed9e03ba79ddddeb38cfddbe8fe57cfe73bbb19dcf6e6cc7efecc6baece7ae6b58a6e3588edff695ddb8cfddd2fb2cd7f6bcbb39bccfedcee78663b8de6997e65dbacdfb7ecf1de7b10eef2f2cef721cd7ba9e5b87e5d976ddb9ddfb97eef33c37afe77bddf3aefec2738fe76e71beafdb16d669ba6deb3b37adeb3a9feb7c3bc7354edb766ebc95f556765fd7ad759baf01b86518e6eb1c9ff57786ed78ae73cf70fbca3d4eebfc4bd77a4ce786dbfec5edf975f536a7e377ce4db7b11bcf739fd3fc4bf7aebecab9ed5eb7697a9f71578f73f7b62bbf70decbb0dbca7a0fe7aef91ea7ebdda561de7eeb37f7acd33bced7b35ecf70ebf26e6e7a7f6b3bb7f1d68e79576f73e7f3acef7d0fcf709cbbf0cee6a6eb39c6fbdaaddfdce5777dcd1defbd9dc37ccdf33acfd7b69a1b8ee5d77e5b19e6e11dc7e734f7acc7795ce3b0ddc7b85ec768ee368f77d795f7bcee79d785cfdc304cc33d2fc3705eeffc6ce67edb5dafe9dededf98d65d372f73f3aeaec3738ed3f1fee67b4fe676637da7dd576e6d7cce757dcc5dc7bd8cbb6e6cbb76bff7b9985bd6699ad6e338875ddc75e73077fbca3cefeaad4bd774bbcb60ee7aefebbdb5f3b7ce77b7fe72f7f6bbcfeedcea3beeb671ece5ae639cb7dfda9573bc87dfb7cb8de376bbbffa5eebb44bbb2ecee5aeeb3ad66b197fe3bae5ed2db7fdb6b00cef74fcf67b1e6bb96b3cb6631a9f7bfb85f197cf72c7ef0bc731edd2763fcf3b969befe99a8ef5d6a663bd6ff32bb79dcb3bcccfb65ce37bdcdb566efdd5f99aa7693acf739baeabdcbd1ccbaebef3adfdf23a3f53b9fbbcb7e7b986ed5ae7f15c9e72cfb9bcc77cedee716fcfb594bba77397866dda8d5f5a6ee328375ee3bd6ef3395ec7b06bbf50ee9c87f5b7d7e317c76b3d7e72c3304febb64bcf788bd76d6b3bb9e31ae6e95aef69ba77e7b757bce518d66d9eb6ed5ac673986f72cb7dbde3736bd3345dbbfbcee47671fe757739e7793896e325b73ccb70cbe33ddcce72dbe64a6e3e9e6d78e777ba8e5fbdb593dc720ed3b9ddf73adcebf35e23b9653a7ef1d8967138e771dd3d72f3f18ee7bd4bc7b9fdf2755b1bb9ebd88df5f6d571b88f71be2f72f7733bcf35dfcb363eeb3b4fe4ee673b9663d7e5dfd7d587dc338ff3ae1eeb72add738bc27deb49bc3bc4beb3d6cef719c0bb969bbd5733a8677ba8d5f3cc8ddf33bfcd27b1bc7fdfbd63690fbaded7dde6dbb9e693adeeb1f375fbb7c8ef32dbcdb786bd33eee3c965ddc9ded99ef7b1a9f7bdc72feda70ddf3fbcef7b42df3b8737cb6775b7ef797aff1dda577dcb53ed3aeddd63dceeb6fadebb8f77ddee51a96e7b97ded39c7edb63bbfcb6d1ed3391fbb388e1bd7659c9ef77d9fe59cdeebf9c6bdeb76adeb6d3cdb6e6dbfbb8dbbb7f1d685797ae66d9bcff31ab7def27d0bc7319cf735ddcf34eef6cde1b8b763dae65d188767dc6e2fef7dacd373adf3f1fccab86777eff3d785dbfddd75db9563dc39cdd376ddd7b5bdc7b1adc3b8f7d77d73d89ddfdda65bfbc54dc3ba8cc37dddcb6e6cd32e6eba76799ecffbd98ef1b9c55bdcfd0ecff50ce32e3fb7fc6eb3b8df586e777d97db7d6f679c5e71dbb64bcb75ccc7ed4ccfb6ace2b66997d75b799f5f77e6f714779deff6bbc3f81bd7bdddc628ee9e975d3e8f6d98c6f9ba75e313b7aeebb23be37d5eb7aefcea26ee3eb763dae569bba5713b2f71dbf12ecbb54eeb734df3764ee2d65b3e77f9188e653aee5d1c5e116f5dd6e17d96f7966f69b8c547dc2e1ec37a2be3fcbce3bb5e8bb85b1eae5fd7e5f17cd7f3970e71dbb8ebbe7bdedbbb9bebb30b83b85bbb9d71bda55d3c9fe5fcc3cdeb782ebb2fcdc3730ed3bd879b86f1b9aef75ac7779bafedc3bbcf775cd6e3788e71bbaf6bc31bd6f9bacee1576f5bb8ee0bef5e87fb787ee51ce6df77ef70cb720eb7335cf3bdeeeaba5cbd79db6d655aaf7799c6db39a6deb6dece2e1ef7748fd3f60e4f6f396f6d7ac75fbee6f3967e5fe98de76d1debfb5cb7389ef73a877be7e5187ff7dc7dddbc8ff1e8adf7b3cce36eddc6b10cf736f4aee799e7f9b785e35ab6fbe79de76e4cc7ee4cc37bcec334e1add7738def2dedcebcbcf7b1f39e69389f5db99f6917ce07efbd9d699e87f71ce769778737dc756ecbf5bbd3f65bc77cf396737ca6e9999ef3b7b777c19b8771f78dedbcdef9b66e5b37f0b6eb369eeb56c7ebb8c7dffece6dbb8df71887675aeedd9ebff9579ffb569e71f875679ddfef179f7bbac6671dcf6d78d7ef3d76f378b6eb97c6e5daddf3bba7dfbca5df7c777597e775fce67377a673b985e959b6df1cf0e66dd9aedd7896f378cf79e63ddbb6bdb7780fbf721bc7b6867bdedfb86ef3366ef59adf33dc356df3fd9cbb75dfd3b85effddb5becf3c5dcf309ee3f10c63b867dad6edbed56d1eefebfa6d056957ee6cafee6c4abb32b375edfc98717e776deb7dbef3fd6cbf74abdbfb85db6df517cfeb37c67bb8ee65dcc2cdcb3d2ff3b31ed3320cefaddc77cb300ecf7afcbef85cc3f3dc0ad22ecf4ba94cd73ddb83c0470ff7ded815d4a5383f5d01e0bb5fbd8d79bceef198ae655e9e2bdc384ce379afd7f59befbcebca82b4cbec3058cf7bf66eb76fe778cfdd567ffb5d6e65bd3ba75dbc76719896639ba6735790763b0c32635b7e8d6ef2ee98d7f91aa7e919b6dff7c57b0af7abbf2d5dc3f00ef7f9eeee3cde8ddbf61ef3ba2ed3380ebf6d7e77cb315fbbf3acb72e4ec77c8edbdd7bccd7b26cdb6d2fd3aebdd7136e3d9f5f37b65bf8b56798aee5ba5bc6655e86dfbadef1798ee758c2fdc272cbe36e5ce72d0dc3321ce1e65f59866d9886fb98b7e9d815a45dc169356acfab25ba7bb76717777b9be6dfb9cf657cee86f1bac6dd7a97f5b6b6f15c16a45d2674af3340b8eb78766b39867759d7695ce6e5eeb98779788ee71e86df38ee7741da9dfbfb865d58b6733bdee1b76fdfd68ebb7b9ad7fbf8b5ddd6cde93ea7056997daf34ea613e7a953e6a0b39acbeed91e84bdba33aa214f7d42e1029f4d9b87bb5f9ce7fb79defbbc7df1ba96df6e1c7edb587e5fbdad795eb77bb75b87613e6f791cd6db79afe3f7c1dde7b14bf7f98bf733fdc6ba83dbdde577aef539c765db6df3bec12dbb795bcbfcece639cecf32df76e77b8ee73cded333dece6fac33b877ba777b7be66b9cde65fdad17dcf6ccc3b64ecf355db76dcecbcbdbcdf7fdad63dacee9589761fb6eebbd75f7da85e39ac663bcad6f7996f1b9ce711c9ef59c7ee9bbc66b3ca7f198a6df9aa7e17abee578ce79dcaeddd6b5e5baa5e5bb7563bd7eddbeae5b1d967b589076e5b33d08677c12de1af11debf14bef320fbb732fe73b2c48bb814fe6ec06ee37b53a61ae755f7e873ee31ff0ddea300fb76fedd679dcf3ad2e48bbceaa33caeca1ccdcb0d9dbefd91e84b3b33d08674efc29bdeb71be0eee8cef0cee4cc219dc995229e507a53861cfe7f13bd44ea9542a9d51c226ed1a367b58765de38af7e667796ef5b9e7eb3d9ef73e17a4dddaa5ddb97e63d98e69ba755db785e5587e675b876b1ade5d57d7775ac6954aa5d29eedfc9820dadbdd79199ef3dce5e17ea6675c9076f727eebef45edd99947f3ee9749ecf8f2def7117a66d9a7771186e6b41da2d844a0399ae04e5bde336def3b5dde66eacdbfb2c48bb2fbc76e733fed2341cf3ae5def72fe0ad22eff84320ba1d2c0fa6c0fc299db19dcd9ded95edd99cef315e279369c1a5db7760bd36decce742ccf6e3bd7748ce3bb2deb381feb34cddb82b4cba45d9a820266820c69756877ddeeb81ecf743fc330bcf7b34c25ec5b04bbfed67bafe3ae0eeffbbbef82b42bc505f5d63d3c60e37d3fbbf8fcd276cdcb322d48bb52ea9469f3d4a6b48f59cb767ecc4203f74ee7f6ded77a9dc36f9bcfaf20ed325f77a612f6b06ce7c79ccf08a150a6739732995405e47e976dbcce7799a7e57c760569974ad8c3d59c8f9be267ed5b3d532aa984bd52c94ba1fad95edd191396edfc984e02f56cd3b21dd7ae1dbb760bc3b54dbb4ac20e4ea7f2c6df1aaf75be95655c875b7816a4ddb33d08674aa55279b65777c67c369951a8747f6329350af352a81edbf931fb0152e6b42a6532c3d80566d32684b2409b2c9ec9c60ca185d432b1597ed9b0d765c10c7142b32f97097532039fcdc040a813cc8bb06b8c4b8a53a708b6a6605a61590992fc6019d265f2816002dce918968b16e08d12b812b372f96814af720950914d8d49bd3bcf9ce5979920ea951680621a78a28fcc0246e661bdbacc694e65320df9067f0b45b24b9695708a172ac5c63e4f883f9f925e9c587d3485a2b8fd0306a2a09e8ec67511d3254b95284d921409d223478d182d529408d12143ab9a35cd4fe27dfdffd716c644ab437bec90e82d0398d14fa320b5e0a25425f93007b5b8090ba7c5c5c54eff7f639c291914d82cc6732cf4699b1296a1e75260cb1f821f683834d929704859512185adc45cacd442c8222738971617173955b0f05445e540834563d4a32d18658994c234192999e49a78b9789042b4a423920848f3c5b228a91184454e70951617173731792266a4c999180e38cf587ac0e8d873cc06364c544e461f5d4ad62ccf70155e9a94a54f13116ffc12b49166b1c3163b2264a41385c698172010480001cc87bf2700c4303813690d8401586164442aa0404f0c31bf4f161a29fcd418699ac50e616c5926b11ee9597162041465adc5a650a21f1662c47e6c79a004511c387338ea18e041e78685b7c4c14d7420184db1b4c1495d213b725392080888a2a95f3436c886a20c4cde4c2882e1c99a297cd21ce940c4a08d1c2f0232ce349935ac5499d0929ac2914705ac0e8fa54044232e9c54cc592372a1cff1a60b999c35ac0a3dd43a49d8a660e019b4fb12898f971f31096a8800f1014e12227e4504e8b102a0c6a6102534a4213bb4bb530401494b0d27093881211b7cd56871695ce4f4fb7663405b0a31244c3460b390e1c85f0f395b85081d70ed28965b8420dd09da3343904800b117225620cff0564cf5ad0f116a092611d07b511c01804500358452546f325f90587e4f57e176cc14e269220ede9c1857b0beac5bd804b1107d83420785188e0c4d08c899b93932c7cd510da1141c2071a0b273536833e147440c35d305600c9bb049a123e28ba12d677720c848e461b00a71845e9bff6e8a7f15130493a4e6f2e4117261310945672b8774cf96a1c0d9888d8a1a7f05d4f048346392a41f84c91d320ad5583388498fc30628ac80e1580b5cb462890d2026c2c02804c15987e30a00551d0c21a192f31489d21fb3782cf6920b5b938aec11867a48104b72054e82e29dbd50c2894928b2c004b673122d45b17456d664b19314bdc5452d4c9aac8efeda68d5b37a59bb1c1af1a7d00c2dfaf67f6317bcac01f6c93b5bb66d00fbe49d7221441dda2c51723f8f19329285aea652e55892d08e271e4fdec9b63560a3b8ce2ce49f4f6fdcf204bdfd6facffff4f4ea9f4d6a146fa19d874e2bc87e6d4381be5b4ffa5f4acdf8a499411415d928212a5bc2e75835da5bba6f31d9c4e9c707f56e5e8029fcd419caa17284285e512508cffff2cbfd5e51250ddfbc7cf1a2f85ea6bd4a6b470c779691ecfd5b7c392199dfe99fee1ffeca5b14b568d5da2f901c4acab3acf376d46dda6cd28fe7446099b7dd8fce874af100ac737a55466743ae7800fa1ff3f83241f0687cee71dbf4327e0d35dbff5eedb89ebd0ba279d1e5f05a89d74c7df76fc0d2e6f2a489536df7a28548ab7e36fbc13a7eaf1d22ab52ae774e27082537cce58e07f2381ff8d0358639991ec53a14f1697f2b8f49665599665398ee3388ee3388e61188661188661f87ddff77ddff77d5dd7755dd7755db77ddbb77ddbb77ddbb77ddbb77ddbd7b66ddbb66ddbb6ebbaaeebbaaeeb9aa6699aa6699aa6e7799ee7799ee75996655996655996e3388ee3388ee31886611886611886dff77ddff77ddfd7755dd7755db76ddbb66ddbb66d5ddbb66ddbb66ddbaeebbaaeebbaae6b9aa6699aa6699a9ee7799ee7799e67599665599665598ee3388ee3388e63188661188661187edff77ddff77d5fd7755dd7755db775ed9a9ee5187e5d42ba7f2109e7092f48bd73e2bc9e142fc3ed47a7c78cbbe3eee0ec6e66de5d5edecdbceb2ac4dd4d605a709b804f779d974e974bdb95e577e7a978201e854aa3751df8c027d4d92010dfc3ab1b10f2543a063acf370d843a773afed90c7cde6e46fc3694da2430621903fc6fbc325a4df7435e8220b5c940e7f9763553fedfe9d2d07e274effaf9b34294963487de2cf266153aa4f9b3b4b587d06f0ff5f712a1e3775e254bc1f843660d518e0547ce7938046f04fa75129df64ee4f9cc95c2ea77bd2062f5c3593a58099b5ff039f4dc1292ec8a6379d7a8450a9dca174efffd54f9f6419c195cfbae7af7af2e0b9931cb3f89b50be58a9548ea1f0ff5a67a7e3a3877b87bc049d199dbeb018476218a529954a34f61b29fc3b0faf96f5f4b6926170c079c3a4429fd4274f089d9033a9d0e7fac104f9870197a4a8944faad6999ae4300a494388d16e660400a000e312003040281a8cc562c1c064c6cf010014800259a076a046968823c128086110c3400c833010420c208618408041a6185107f378a848da6975c242b81d5e4d9cddbe9a22cda9439affbb15eecac1a52997df022df6a140ddb3956734853d8c073f0bcace633b603ceb337892f15833b46c389a825a8266263c9bb5ee955bf061c1b29bce0842801164ad636dc173f82a6e99765459ae5af1da83262fb802c27279041ec21181074e0399343bafe8f833d89fa2f2b3c6efc9bcc0e921b73e75a70223f779013ca13b7c543ac696ed6165af055a8cf79eab6864fc09dc3dad28cccbcb9019bc7053a4520242452346c9e735347cffc27059241fa3f6c0c2997ecea4350f62266cce25dc8c7354421b56124811266a04ffaddcab3d69d716b5b062a5886481d09c41abf234d587ed21a035c75f8f792a99c307132f24a48cbda01264d0271c9addf21a02ced20283a301aa1b504e9861ea8661ca20691fb3836740de20aa56e47f6064602852e83203bfca79ddccf44a7787b675f3819b1910843ec14f3871163e6fabfa30f5c4836efd4f42bea829c0d132fcd6e134336358e8cda1d886eb9f4008cec259996025ae83d6412409a2337bbf048424a30021aed28e362a9612a20b1b1ee97ef1bb9e493717ed0414acde4313a92db199bf896adc88197cf1b8f6feee84819adde5c7fdc79514787a040940727fa5ca03fc2e4fcff51614c8ca8198f07f78c9c861e5801741799d415b0a5f5dba53a947ef9fe6503540024344493a2b654042a03856d6382c81ad10d2a3b24d47720de65170656298f95e022f0c64e70d93e94ff34c19f85168c8eab151c477e2b376e8f4ab1c6bc59d00a2445d48471043658a5bbb0587e26fc1f5637155c1038b6f470284cc8c7e0666b1cac9800e01c1d4b848d3650914dd0adc8bcd74833a67f6dc0ba4c61c83042182414b7c355a50bd57c3a6ae85ba658fa888f7da110a987c60193cac6be90c674f7715d0742cb5c025b39ee81f34300bd889136bfb69990f96605a3c984d03482946c4c403a201207c318eb734fcf3092482757bb091c8a47b8ec466002a18aa2a25fb426833448a2d7485b57a282d631f82159a95f692f075d311465f4f2a37a212e794f41163c62a762c4bf62a2a6aa0b69397b5c4621484c13ecdf499c433e42169704045b2cf32e005e654074f993f5a72f035a6cdb70c19791ef9944c01872ed6e7923522b571d3e77c7088dd33f03d4a193aaa6ea46519402b78492d75ef0da27e24d82993808f71567c6339683091c2a9f240333ba89157be1afd3368f1735ce1fe8178831d10766bacb8f4a3813589cfd84ee09ea889f161142840773b06c6b234b13811d87c6247be451d69ebe12f8b9236098c22b30dc6842762938cfeb48c7265a3931ea4e51a78da7699eb47a6b580f35d5f7e7cb9aaadfe02fcf2a15e26454849b1f56364d0b81a52e63667420c6a74128b4270b467cd799d0a36bd607eacdf6be369121faded3729c1be9746a3c78483908c204b9ec4afec9e77709ac4d38f885a833839eecd0bd77c490e2b8d886115ba9241baac754b86427ee6729fa8b8e3e8fe711cb8065086445eb9970ebecb99e47e63503b4982785f4362e0f67f48cdd682e62b0812e65ffac5f0c9452d2a71d82d3c9e513b97948848b9c3b0ba10e74f34dc4d9b969e2d49384cd0a2382fc902c5adff403e76688a91fd438ebb00fa26cb8b6450b5442d83be259232d85da23483f412e965a69799af91fadc7d558f1b3295ff79325bb4b56d14b301f60e9532d276e257c28f6dd9a858b93f3d7206dcac6dc2f6b543e7d523980e792ed2d86a569935dd9d26e8bceb41a7ab9ff335c69015da5e6cdf3af4ba57056a2aa73339476d57534eaf6fca899b5d1bf8272bde6d2628bdab41a7ac9ff3b563500eed2f466e1db7ce4201b194fe4cc851f1abd9f36e6382925d2f3ab1f9a75e430525d5decc48d2f1ebd913eca3840e52ad3ae5ec5cb7999212ddbf4cdbe1caf5793390a4c60f66afbe6f07b54029c9e024567395173bd7dbcca424b73f28b91cbf3d7b85dda4d19255739f923bac8097123f127bd47d1974bbb595c4d2f6262568c79367af619f1a3ab26af429bbc30678257113b169753725195a44e42db51414dba25251747f7ca40878a52d8d6dab43a7ab2598caf220089f56bc345bbc9b48d0b56b8d4e287f53af4e0619ad0f837169c7cfb345b009095da4d6ea54d921dd762685bcfd414915c7ada41f854fffe6e1a7fe3d0be0e1b302153943e6dbf06ece306ee80eb77c9d7318396c4e0144c7a22e4a44045de2657cc8a9dba4b092833b05806e25bae279169720a98eb83926fd4bd9996a5505d722a254813be785b6633cf7c6716e0c4175273a38b9c8c4c4c88b7dc8c53864c5d0c8c64a64c732c8102b8dcc0ff99e5f640d55dabbd33db311936e557438af518e8dab94b8cf5af3d326ab86ed06a5521115ef1f2a74aa881136ddede7640054afa4905e16003dcbc2f4c400d2fb28488f03a01e9a82f54a00f40216aa5702a817b040bd1200e96556b841add4c6583026a52882fc137713471153d906ac27bf9e4f5412f42cfc37384d882e0bf43ddfb7dfc0f8c687437fcf591c2142f680db67ac0b0b73eed858d00ae27d874a79abfa71d10abc2fe80ac9c2a120f79e3d2e7690b44504554056778dc6158b5d5a691c11abf21c432837206c57de1047e9f859cff6c2ee6649fd28a7c638569dd8eb815876ddb80b9ea633954cde5b73b20e2f44a0070156596610e3fa5becab97f08ad01c136dfc027f937dea5a7047b195dc0975a0bf298190ecd37a6dd8adf2044e8e840064bbfe9afd1ba9e44b09e72f266222a43c59ce067d7210b550d2fd747fa065794f7edb673ca62de63cc79d14d664b66bf6531d97d88efa1cafd8ef8873864683fba5394cdb0956ae2b6786e6c070f24ca999149c0848a91e6ae487bbf98e4565f684f3278163f1531073b82134dc37201f68245f0e1cd90a166bee59020b6c9924319eee8966c4ad0303f9139c65b6ea04f004c28b09d531b3d281f666705c2b592e3e4c9601781048501ea1a32a037bb9d569c0119dfa84382480ae2987e403e81e1bdd502814790a49e92431b1fc4fd45bbfdb5639c830c353e031cdc729fe0f672428107f93e5961890278f9abdde183f6743b2c629e6d234169e587addc972ff09a8a9e6c9724c79c842cc4491bb14b6098856e07697d2011011ba4363b2dc1a594419e072b1a41d94e58a7e88a8654f2aa90638804a8ebd1797505dc8980d0ca8952482468ac96a5a6f7b4cdb349137204c861032de9e3a2c2efef2da00e84e963a639b12c8e6526e720ea2086d2f4047df1cbc533346e2b0b96851c679cae41a0a8c7d4ef64246f1043202806776dba51ba1cb4dc6a80d94776a3f53c70dc5dcd5c66e5b1f7b0a22a0076f3ed46f9487efd0cd7eb0e7fad0f89610a01a55198143b39621b446867fb461db3a43813edde99b1069a5777ad0ef77aceee9d50a61dfa1a948f4a2693df372cc537261523cb03f72995b63f9c972959d3dbdb4236e72cf196b03d85364d0152bf6285f05dae803fdb4c795e2d048dd724d1137d7e918bd7e3cc8c0108035da11fc71fa39a2f826df954453dd49632d8dc27c0e09b8bd559f291fb6a83a36cf51036e3edbf64e999ef2d2fc36440ef3c9018fd3802878f82c4c9e1d3171e5577af8817ccf0bfd11be7ba3ffac58e81a706b3095e0a6e9c8aaee9e035fcf931e7914b2fbd1d9c3d1e7e5a7348778781a9e5970feb349ee9a8f68a6b2db9dced14e33b13f362ff6771be6e020f4d3c60d8bb4a999343f356dbbc26a84629bdc76c547cb08186f321fd0e776c18684c613b2c1d03cb6f3e6c32a6d41d9f7adb45126a4ed8fa36ff2c80efd4aa0661a768591c81422c1ba24fb5d32739bf541849e23ebeb3f81a683b28385b52fc1a3b790577b4b1a53cdec6de37a4c5ab3afb5c68a639f2fee2e9d329ef0398719a79767e836d56a2883cbddb4657a7931685cb8148b88043e1112740fe8775ef48b12e396e1c04d23aac09a25ec4a3e773ba31c9ecd16ca876c752799722b0c82755c19b36d42044e21b2d6e0794b334333a57484761fdc657331252f96a8587a9bcfd799da21d7daf2fc7bc3072da7ce7a65159b20addd64533614f65e36cfc4342b30c326930331058c729846c709cbdf67c641230745c68bb3d8290d38de8e975105dda932cfe2f9ebce450dde21d648b05cc32d1071d005c931eda2ff8ede2cf4044eba0fc84570df9793656028854a6b5ffa734cfbc314cc4d7ee3de821c5d42085735626144d84939c1e3c590a84286b38c4b71e937964b5b134e2cd2203d871712982cce0ef0f9f6ceba3d2ce00da89f824306c31c4527d7fcf5f04f8723fc54ca319aced9a84f133f792867325a86578683cc7309b12a98422aa9b1081ae375ca5a7fc4623d2ae6d67c89a2cd02a854892251b029526568e76a26d140b4efe595b2f7cda9863d4b2829961609f2ed10b62c28815113130a465ea096662abed24046ba9b1fb799c91a2d1a9d246d71c82ab06244752e0464a93c31eb8dd868098378696a57b24e313b527a575944d38aa14bcb885899101253b2483772235114e6f3bb94b97cac6542dc58d8f696b6fcb23185ed09d732acb1bcdadba845350862afab8956e54c5250c7822a3a55a182802d5a2b49ea446543192af6e6d09b9a1162d7ad454b6576025867c10a9a6a614180961b5549754664a11915f572d6499b0969d3d546a7523631886b61458a2ac20907c981682c08b7c72b67c806eb8c47cbb401e1c235a1d79a0e149ea510f5e61ef424f35d0c67525be29eb45ca510287df827c89296843bc9313b17f0a5e25e10d8dfba60b452b1c254c51b48de8cdf10cc42d2dded4afc059625f6027f1ebd00673d2ebfe1b2202fd7cc81a827589f8b02086843b28f3d9d42cbb42a1d122244c882742254e090b5ba3cf4a7b27a215f05e9491c0ec0ac054de93beff35c22470741bc087317f6e7fc68065d95a66bce0fc91585efa8158547c65f035827d8c3013ab2996e1a6abd0671b347de60b90e42a341b305c3bea467ed771d441ca3ed1df85f970b1b30d487da4855871c1379fe2f4dc881be7cc2984df009c0e73f682435936dc27188dbf5338fc42e48fe46a771399e67112b511aa1fef888604df6a66a965352edd92ab3c26e6b63eb989cc52f462bf6c71451056510529dd4d40ecd649d4005a3f5d559b4aaff89f8ce0d4c5d0135bfd97e5dc0dc86082341371c151d65b28e1992aee128615f8c69222eb9070162b14173d58fc10f88b9603341a98863fca87012357a87e25e009ec30149f62c563bbc91e1484ee8be128e0249102b3069fc1e30fa4c70b8acc12c52fc5f67e5fc8d95e6c33cde750e1dc6d7c88a17c289216b08e656b7135d3487d0ebd1b1d7e5681cbfe6adf012e69cdb71f4f060186999bd7a558edf0a0ee2366956312ed514d48e6e1f48263c36348574e7b03d8e16bc64f3b1eae3262eb03dcb15dae592add0a163f77004f0b1a0c3aef0ee27c0a37fd5a04b1a9d298ff8fd15aba43d78c61c9a0ea8a779c6e854968a545688b049ff545249a110534c70b71ed322e130da85b8979cb640c2f735718eb6c4bdb906b7979bb4861db852e73776572298184803d689f40895e7b92e301d1e7d03f00b0e2012627a6779e4845f0ec27539b07aed9d0b409eec28007201a16ba77f4eaffcc0c14b6b9970a524b9327f80c0182c81ce291d03ef8ed1d39e2f5091a3e7f6efb1796fe9baee1b89bb95ea5311ed131159742316ffa87353af7996d9cd8e0aa552fe0e3d1e7c877f1858f3b56bb1a9dd8484adef0bbe9f205afaf0d412fced513b1ffdd143b5bf4882e4e5f4c05d82ff12b7ca33156ba1503211bb6dae1976ce188a26fdf81361f363bb1b4be4d917bdb31eb82404b4a58d031768d7598516401a79cbe08dbea0e9ed71f42f18ff35e0690f23e18911fce1aaed8e583279189c6ddd900fd408493e769f018b471c5998fecfc18b4770123ffcc526f3388fcdcc824e522dce875c860b930ad48480f5836c8e26ee3a3570a25f2cbbb1df8dae0c0a7c59441afe0ee52babc8bf9d7c824ed460c6aef05daf9fe50846e36ce0ff618e3082e5ee2fb6ec37d5523940652d95e9932e0d1a063be81c7ce14da1e22cf94cefa2ab186a344e5ba87c94abee2b529580f3cbdeee5e368729e459a0ff38183d8cc71efa3060fa8a6544e08f4d3ef27b0c88dbb19deac0d003b42e1449e08e9f22ec07292490ca44d908301719fdc411fd3c922f48ffa0bda6a93cbbdeffa123cf0909158dd11db158cbbf7ea5b10b273bb87205117739d0c7f5cb344ac3623464db41c23c51d4c8e341299a27145b3fd16cb99e3871013dc12bc49822977c9432f4e0fb228027dc5a7350d257226a4ef20803a3606a619645ad96a107b4c6f19b48333f355c424afd9be8c47c56bc42a00274142f458c4d0bae90b2bf0fcbfc9a7845fc2764e6ffa959fa97346b9daa96df1094cde2af91b860bfc89ea54ffdc25205d0be8b60ca2d75d0d6af1ec67aa589f6ff0963f8bf3a1aaa903948228dac92c149262d15cad04a69ae5406a1951615cb04534b13ea6508c1b48462e62f99466b66ba45d3906a2626d934a270c6b8729a79f10c71f4d35aaa84a693515ba4a38994d4f8521ab4961a11d3c06a6aa49ce6a1a72615d49c2baaad9a9a5554cd55d57464d5f8ba9a21ac8651d660a5d55c5b131457dbd5353b79355d5f7326b0f6143681c41aabb13145d6905c343022b45194b6b0d442a8b565882d54d5b6a4dc825e6f6b0b2e988a5ba3251746d1ed4c75e122bbf5741788f0b6a6bc0091de02b5177ef1ad5b7d8195dfe2fa0bb200575260e048707b0d062bc2855661f064b8810e832fc4ad28311452dc8716832fc67dab3138725cadc7100a724545865792ab6a3200a25c5d954124cb2dba0cb13077546660a5b97e6d06883d342ce5b9abaae1c910691a3126523cc092cc13b08f8e58905728de1b16d649ee4ffd03f831ddd4a10c5e5b9e258d0165dac144a13050973305832bfc6c0a9208b642b1c242a6e790508b14af71bbed752cbd10a8424760bdec7c175ca067b6504e503e3cb0fcdf7598543d2fb37d49d83bf93d0fcf288f3f2c7e5e37b9921ce7b645c3c611d71944893db614a395fc244f5c8d29f3137290ff706938171e31755e816999ed647f028787e089aad55ca40cccd2d11b88746266e57c9e42a6772c290f208862538dcc6f87c22f056abb283ff118b007600e06fcb998b5be07a4275eb9eca2ccf98ee7680312dc79febf1adf3c34625cd2138d74e9aeb3300008b97cb9484d249b41fd14136c361d75d14d13e0df5f1f4f84739319b45fa5d6d392232828a68ee9e26f225b51e8df309ec14467730a39c8606a874f18eeaac1e17843130d4de738873a9a802d1202b018f903bff3f2c9d5760be095cadf780c0cd4810110a1e2515e9a0bb85924a34832aca4745e55911f1daa006b6af0f012e9b7b72e19ecda4f51591b339e3e69b27b79bf94d0f91b8ec5cfc6fa2d4db8fcc2c553ac3fc80f2f8eafe4a0d447b925a53f77bc9cc7fa99d1868ea17575f4c3a25e02321080c003810df2bc30feca9501b31e88f3b2f9406cf7b10693d19b529bf6097107fdcb8fb971d40eea8a312bb0a131eb78d781c04351161cf338bb19f97f5f4bdb49351ca0b21de9f6dc456d1fac444687e5fa97ef3d474180f0eef3717819e65e71d66a2cb17611abcd49f430b4596f9dd41a3f5af74afac3ff8d28aceb377f4063cb33b99cf92c22554562e91b59648d1089f16f2edb0cd372a566a611e4cef403f9647e9f9709c8dbc036ec78c88c9cea0482156c0dbcade4d831770616b264776ad799b0a62321f3192aa4917dd90a9a1b83727e4b323605a549962111ed2580da3dc897dcfd9a316814325f7c116dff8051643cfbf70ce0a03a60236c786ef01cd9fa8c70de2b15b05d8246eab7e5039d3927f94475d3581037c7cb9e189ef9c194d11f4aeb5fd0cc1f27154f0f411fad53de19018aa61c73ffc2e3d7bcd864b872a3cfb25269215883f9f06e8cb2de5e9f732ff5e0a34fd46cd8077d10ee153277b29378ef4df7f558379e8bab8c2f5d01cebe670213d56a2488b6f9ec8b7d6c7c60fc1f31a65f84ede634efe99bb0db6623c1b98392b59192d52747356f67573784bc9bcbcbbf076578063e60fcb462a2f9cf6995a5214cbaa3ef63fe11ef019058db7d1d41f16aa503f32c7f64c88a08c27cb30f7633d386be0b762f57861adb05fdfadeb796ec28f4959303c46db72f7de4a92c5489623f268b4762cdeab22a9d24d20768b06d6ecd859236dba515b2af65a05e70a6cfffe3c8fa17ad5cd27b2062058c8e338857adec3b71a8680dc130b21cc065536baca276142f1369b2eb5978ffbef62623e46be9da695d4616924fa9b087bf495b5a94639b76e1b9fcc43a43bf807e83c84ba3178e7ba0da6db153ff6715fd5ee6d6e527ffa9d80cfb8653a2b7d7814cb7ef89c8b605be330336a03ea2558c017ebee6fefc9d5f656efb83bf79affe00fdf9242999a3da8eb7e9871eea1aa333db9083ea466e103494e45469af8f543fa6817e6e0221f1cd52c82a3ac961c6bbce5d4548dc3ecb9b46692b24831c36440998971c458b527bc298d553d8adedd18d28cf8261061dcce590cb44638086539942c3c6087f28ed4234b4e15c05796b40603126614636752644fa88f2897fd878455ebfaf58f81a4baf3d4f00d659acc3e1de7f35a523bc9842a7de76ae4d617f5386ef5c0bf461956a5771a8e13a66b3f613ff632d2762415355765f63fcb951471073e5d1f72f5c985f298266e0a297aec74b0b505ff833f2cf877b76c12c048433d39a0e13f267376de09fe45828a10b6f8f0720771d7cd2eb13d2281543edb8e484383848ba1dcf8125332cead872df0cde6988214ac53ae8047aa3fdc05e1dc2f0d322091ab21f21d7885f20034890581666555108441959c038e7ce13063324840c12f373b8c757daa87ec4f874a60d695837d9deed2676bd7353c99d510d162206303fb6e51b395fe16ebcd3e1a80171746c12bd5f5d31f271b99bec8d2c44be8384c89b54baeb137532090550942170381638f4bc76369a171cd20a9b9c9047f3056ee6a932f116437e105db416ef3ae2ec7488e1ba0dbb3c4e0006c00f5f8b9d264f6d7300ee8812028769d422067c6e00d59fbcc3015a5945cf7a3f2ef1d98670fb48b29039cc8cd3784c0e63877ca1bfc0d5e649bcbaf86fc9c97a58f5a047754ff4cca7246db687a5605e5dac76fcbb0d5cb6d33595861ce6110d031c76235ac41eccb2c9bc771342061593c5cd497e98b32ce85b8d82208c46b565ef0a73575dde5d2fcb41eaf65923274a47d4fd4f8c824138770ac34dcb66c3d5e903aa4f49f8c45f368633862258f14dcf7925ae95534ebb30ca7e9a03ec2179cdd085c958696e1422e6ba8ed4c2111bfa777d1159cfc1a12591d3b0cfde73c92e6254342bda4801a56881a50dcda9ff72763651684e390cb0bb1ee5aecdbe2d0686ec778cf5992e866bf83233afb2da59e5cbd796b8c842c9e5fbf36d7858ef61a7814a82f8f3b367578bff077641d3e613bef88a01c577d40060f6acce9a0b44d35f466b1e4f248ceda3acc8d6fa1859d76d16932e42ed92874cba884de627ec9145378c213ae8a7584937461bd4978df5b4cbb9bb4215859faae0759897eb8e08257ade03ca527089baa67c8125b6062a38107df075e1fe2bb8b1973a1b12ee5d6dccb7f300ff3966d4bde49b434206f03e7447bf23641054495a61195d0ff96266a48fa57eaea34292e5205e21c6154246c60a06b27a9843c630d2db47ae3c731ae871e41b0b6ca7882c6814a4ef2afba84f46b706f71e5dacf5580515ec5be7e9e701e4f68ffea9fb0a90a6b25956cb40746e6106d23e6108ee1cc727bf1945633ca6f04948ede432ec99210f25dd89bfb5ad71527e7c92d8eaad7b3cda2ba798b2e8e053f1cec640ffb22eec395a2c1b1d2aede67889356175d36a309bf7f9dfac4ccc557bb87eb4d9f5a12deda09ad9f5c1f63e2e82dbceb53bd62dd88dc37fe9d4774dc7fa3eb1068c7ba61fa62bcc1715aef1507d90f4a17c009fe7a054d0de7ddbe802a9787babd97c7675977127526ebe0fe984c6a2cd88e3f375e692e0f2f58c31748ef14560d6d076d7116e572c2e56435d71f8162a4b6ac74a8a23e00039d6d6fcd072cd7200ec83a07cc456a633c72d39d28f8a3234e99994f7984fc76b031dea3eb7d13c58e951d20d8d4074a0c9cfe31d73c2a3dc303034a379b139603fa2b7915bfaee8b7cf75ed4b693bf3aee578c53b945fa78f3815ed0c025baaad40782d29dbf047e4a99cc7b7d1d95505c079eaeb4611a62e9a0ab11a3f81f39762198cf2aa50662f0ba1d912dbe1e894f60ebc74085276abb98a8575ba2d8a22ac3d01f6e195dffcefdf1d7008dfc32817d05b6b4a1cd7e90b3f3ca760291d5a5e0e2fe8bc71fd08fe275767af351393c85b1827b4adcbaaa87063ad675bb0bc51b1135f98d5d65eed756363920a5309cab85a5dc3b20841b501f2fc57b56332f7efdf624e9f7012e88cf9af3178df765963075b0695b80f43ddae6676a873a1ed6772379a4acebf21bdba5878b790cdccea169636b3deda805dd0478c6d789652f78298b58f832644690061938c106aaa0813648600b1ac883083670821594828309c6a69a8392e312a433ab3239d56ca3d31c0c4ef149ef64a5c84eb67e1c39890f3e634f9341fe68ed0654626f67234a7996ebf42e3badd3ceedb02b3bedd88ebad40d5d746a279ddf41d776d2711d77b5db5deb64e73ab7a3aeee4c7511133be1ac70863b38e14dc7e53f2d72ccc83b2ba62df826900164ffd4cfbc94f7f7a226bd344b83a8dfa29c1e213af9a2a0516eed380ee927207a50d828883fe9b88a20eaaaacae5272f3c1fdeb290d057afef93d0711c943197b951930bfdf5e1a40d79d68b969b91745a001bffafb1588a33b6537074ec32333da2ac91b068f63be0c1b90aa29b83ea7d8dbaee6ca37b81b577cc2387a2794e1e74138ff68d092364dbdc78b2080cf11ec45aa1453ea59b3bc8db9fa39ed52da561c7b689cf6d524ce86a8a80f12f689ed1567b4e8d018ce4f1da2bc8af2be346b527f59f8338049d33035b83f3a22e700c11eb5d8fd3ba9e73c5c59bb57ac779d199046686e23be97543c95eafa81d8721ca1c64480100b5908a634176c995f563d974d95a006e0b86803fddab19f1c091fa37132706c7f8bb1acfa7678d39d014abfe61dccf4f457f3ce7b71febcc216fc6b306f974c92585d8bacf8bc85a2efaa720387441b0ab959b439d42869c31cdd3edf962d15750cb957db8dbbe0c81c26475cd45d2f39b95dc8fbd2a8ee04441c162e45f2eacdd33cef47ff75c5595cebeeb9d8c0531fd8eee5993eaef72ea0e1e1bf1afca44dd815f5d218c097c37f618339a3ef6990df5f3053d3f78b71392215e9c07c3e34f0dc998e966199434afd0c403288aaea9c3afcb9cd84898cc887aee8bc78171dc3fad0383c2719ceefab5f636a13f06f52fead35643132f0d21909d36adcc6699fc58a919a5db9600d7946e632c147f6cffc613eba7b1891d6f4b7478298de9223bed1e8ccb5f99524f3de2a5fde1c8d1e3867ffecf4d16a232d1681e436c314a7e5cadce218514f8dca7995459a8d89085df7dbdbce6cb7bbc7adc0faac3060db0895d9afa57f74b6ca3ff1b22f2236bfbee8b2e88e36c3432d6b8eda8d2e9821e46ac15666598cc7baee06f2c76c8206227af357f554033b38d11d2de2c8f0ba7db236c7c853d11583d36f77146ff63a5e78f4f064e060187e0262f34bb0908573923ad7e0b31ff4f271221a0733545cc6a7a00b9919af1eb042681d50203fe7e0b8d68b0bba789c124a51325285af86cd4c167e02897b8c1532520d7ce9aecc7d5a4c3bfdb7b8ba8ff15ac06d2409c27d9600839d58e411aaaa10320555900375263e8f44081e804d73b0571fde59f4dabf144e0e8d3345cde3c6642f7627fff35d331d215e9722198b508481edc81cc1ed2d33cd7982d8926a8db7271644f7c69934a3b468c255a35fe61fd0d391d2414b565b8866f2172563813ae2e98dc7a4a39e0cfda92ece123dcb079719ecee39afff82049cef8f13dcd9cdd017432ad1b88fb8bcdc414387f42e11638008881d1088e2fe15c25cff49c1e415950d0b4619ac64e2e04f3b9a7e7190ed355c46bd29463bcd78620fa1685746c9b98ad78e347e7cb2f5e7401752773244535bc8d8f4efcdafd8dd3a24d1e3da4c1fce3fdb557b676b52a7cb3f1c4f90ba7a5d3575b562841518ce8fd5514fa517191687c44b27c2c0547e45cc1f9f471202b2177f96c04f2c1e886768e40a0dea19179cf1d18bbffba93ed8f0510cb7a2889af916c9b949386cfae9ce299ab14b58c407a72f815eaa47d159228fcaa60dce559fbe6f9d683d6aa3840ee5933b7ef65d28b9f7d07aad8020dad960e28b4444d235c22d5845df631dee4df733305e1cf195ddd4dd90f54f4b6acb1e34e065ad0bf6980b8665ebe47671a8d474dc68e9725b60a3a95475ef4a809ca523f6f7fa32cb3ee6a2ef80d87a67e8cbaa8dafe67027711ed606194c01cb14d3502b2d28ab66c9974f1c3940682aa1a9e206057bfc39b18feabcfcd3409673691bb6d9fea9ecedd4cbc73e632cfae58baa9ec53fa25ab885a99a33a11f7be2cc083f91b9821bbb16e8a988aaabc6fd8292291a68d51882ff2db575a825059a7f20c20c145d251c889c6b12e2bfd2b0abe63f466cc160e08b06d2ef495b932a3ec9583e5f155f51a8b3743162f190d024d43e08f0684a26c68cc8d7e550e10a58f7c0203a8d108ba605e96a5ced859e18c13ed58d7eff2b865a256efe9ef53689fa73ec9f2a6e3c5b585b601155a83998ab0ab5c1350a2052cc172b0a0e56d73e0a5ad8752bf9a0866e55794c04c2a1190819d81449abb945f2e6c7cbcd9e9fb04024e803ad1797fdc126955ec3009c22c2ec63de738391f88654a467ba8ac8a0bf248a7060e428e2ae70a6cb0bcfbc92ac09771ec5cb33d6cdfc4cb897e255cccfc1b6bf51cc61045c368f865b3ba6654cf9609bc35003387492f1c76a9dc74bb19f89b08be61d2a1b5cd47c647164131adf1368d9b58c963d477d6e3edb011f26d73da0d8d0b3fa66e3a52e323c85f6773facb5fe6b641b3af2728ca8df66e5e89d3ad77c9036e19bda4893c52727297e9d18401ec6348b564238a1d6624ba7aadb6a4b7429ee848b36873110fc8ee6af380bb85a381a0d471a0676602e6ea2886320b6c36ab2a6cf18f6fca84235ae7cb0b6efa247a8970a82d18c5956f09a86e20c14c060dbf72dac3ad7718da46d93cc9181afeb3af751a42a1ce7a3bf57265cf6cbd1a3fffdff9dcbbf8de9af65de0b1912907052216873430bfe934a9559086d97bd391d71996e21756f91de0084eaa59f0ce2bfdc6945a6e936841d61ed7df9949945d53df3b49e23477319247fe55e0eb7b77e414ebd2717d7283c23b2a4e515814e7e02fbb8649bbff767a3cc4ae898e3f7a314ba8eecb9ec36a029f7b981388c8cf00021cf96a2fa5d639e1cf40bb51d7a7eca27a6b7de472ed3e74914514f35012425c3e1e306ef391b4a1e965358e597e60aa486d03d8d0b8fb3e7eeb151b512112a14d14ea45f3eb903ddd902d810dc64ff9d5ba72ae300a3716e342554601310936e969d3b94757fcad9b4966546f99eb88d69cdd6500bcb1f20085828c4086ded3eb66d037c3cb9a699cadc76c9b52de0b2fc6121c213d4f89dae68a1fd377d8fbd30fefd9da1bb163d9002178169b3609a4e61157ed05ba5410f18e2d3e937bcdf8ca3bdd603e745fbba99657ab2be32e9bd3ee7a4826cfb07fa7c959fb6829b21fdb97ec78575108a3e4f97ec15fa005c79ef19b0c9b595552de3afc46ece3cba4dc5acbc2631997e7d05dfc9bf2dd2016b5db94ef50e69129b3d401d58ed3739640fc47ac68731ef9dda7ceff15e1be7b8837fa44f818a89ddd0ed2f4e7c4677bd1465d6335b337fa04c8b2c865eb4f883496889bace2b06729df064c7e1503f1e62599611da9a0e886c1bc6466faada1e3d49b62d06bfe5607c9b23505026619f7eca2def2d60bd516651e100f499fbf5c629d07e78da98056166ef48ab56431b13c09e372b8308631ae052932da2649814688824f4354bfd657c6f31b760eeb8f63ed8d8565dac66bb464767aad118de8ead702498fd7727a7446475c462b1e8d8800b3c9ab42e0e94d81ff786fdaf9877bdb53824b12464a59a3fed3e66a5243e07455c038c8281209a625cc5423d6b2864e808d9537405a824eb63480c956276894801f81b274e8d3b048d35310132fd3826726119b511acab736e08dc0d2b50184e53e4cf9e2e214b05f2bcfe3ede9f95e690de340351f07657171eede08b00c44e9834493c8b725b2d70f7ac76f7fc9616e7dfe752af6c3fda4219238cb19614eb132ba10b13b1d2ca697ae74552afc21abe5eb57d9e87bf99676d668b869a03aad4b34bcf5c94d7fda277e0cf4533be3a056fda587d551e38f10994923a4ee3e7bef76e20cbe0dbffcca5c3253bdf5e7386eacc22869d333d9dbcb05d3968f85a168d5e859b7bc413c45b8c91a652a51378fe416744ca8a1a8d2289a50ac2e1e9e65af9f8d8b4e74c4f9288509a85771997282ab1100cfb9aedbc0b2e784358e3fbd1451079bb30a38d183469e8a87f9d97b660de1b0fe7a343b4dcef1ec074b02e1b8b72c30714e3a7343d2881573e6f83628409e5e2484bf98f7fec4ea0bd9c0f99f9631bb04a0c42ea67b23a544ae860fd902e238b1cf5f61f98aa734fd206ceb092f4f66429057f2b822707ee721af7063d5cfdd99d2df883fae594f30d661e0afd0f92346f70b585277ab661524fb74343ff65347f6cf3954d17d621aa28bb041dca60a708f3f4f342c241e93d067cdebab42e69c52912f13a03afb6fc3ba09b8e48123cd288bd3e010991fbbb26f5a62606263c450efd1c746b1869ac0557f9bde07d49315c178f423930001dc28d111db7c41e4e2d012aa84e23247888e45164a9752ec929d8e973c748f50e23558b62832aafe511a9802bfcaf0581779df91dc0cb3b3982dec3eb7c7963fc911d1911472cadb13bc0621cc3e29cc580160f7a5a1e57fd28356f98d91306c1d11b8ba970e756fe34cc0ba40e78f1597d7694073630c70b7a6e2aa79209dd90ee214c5b40b6e20258308deec91b1cb5132a2fa70c07dbb11e85c24f3ce0347675a19f72779c52bb619fb7da076883a6bcb47f539d2f5e30c5fd4d23d2f0cfef93366f871f310647310ad144017441628f63d79ad61686339acca153b94f0e9d3d094b529a666bb0dbb4ca2d2c360eaed74f7cb42039eb9cbfc54cff64e6116cb7d628fed24cfd091cf22be3e26d1aa167b39a164206bd99f5ead276dfa1b5263dd3a33678e544607057ac1917b08ab43a803b97a85db4c208aa84dd7d4824c13c3539265b91383cee1f8174073a59b14406a7a3ff4f8badcb35bdfc819b32335296753fa51813b3f8eee996c8c1a70ad21c199f87265345eae3066cd369cd4de9d06e1f89c791f69f70f18daf42bd3a6bcd23ca513a4f95b833a73029fbb188ba92826c7b1de6c80b334af62cc6ab7149c716ca639b83a7373ec570667150f5f2a10d87b82bcad622b8443334d4b36e0bf4c92a36517632915d995f099c4ff3fb55f6836d42e2303e4e31356e8fc8b48e163568fac21d944eb44dbe90b0a3b55756c931707f34f5c0a228ecb2e8c003e1ac8d1e189ae74874855f153ea78fc3b32126fe534600bd6d954df0e269fcba421be695ff615d5e17e0c65ef09a3d939664aa83dd2a5f540d755683cb16b11ebec4c15fc802031bd406dd0c0d3d410e822700c1d4753c01cf4605b3473b2fe18456af79358ffc576b10a18b5cca661aedd6c19b237b70e57457a7d8996ebe13dfa29d487ff45229fd4514546e26408d5743bbf5f02744b8e4f30bf068e0abfaf3faf1a505e02ea11b921792fb49771018f691f26a625cf07da6dbf55fffc3d1a370e73f35a159054767f7c6f1338b3b035193074727af1e2d41df2ce0827e3872c9e0db16f9c5005630f91254eb5e22a28593b9eeac255ceb75a060495a08fd4dd1865aca91d292e8bc8a15fe846b596d730e3e1c3a260ce5d9c3df2403029eedae503510de5460e5526d124abadea85d778135c5d2ad1ecc5d3ab64f958ec94b523c7867d8930b95df88290949fc0c96302a6364c29f7e136b49da3c6f1d9e0e4b380d43e4746d1a4ae4a5d8ae0c42cac634283dba7e4201cdfe975032735ae50c55140cb2290cb52f6a692b30c2d0172e34baea244e4e40e58c586f03e11db2b83a5cbb21f27753e16ed072b7115a6fb1f4a4b368c23644757a59ab085f04f2000e7624805a46bf098feb023d8d7ea441d6a0cdec31ecb780f1552fc01570643df330a8d002e797a39dfc9c44958e9f8b4c882268bd3998730b5cb134e44ded2c9108772584b390f75c3372ac3b9e999a3e92e57800c3a41699d94b98affee3da395553bb4a5010beda0e242de821271804208845c3846b249743aad560c9ca744877012e9e8327c6c7ada580de41f7ac8282c78806669b0a1aac59a1bcaaa01287a336b3edab25366bed72cfbb430870204f10d98935c8a5c469fb12a41959ff619e040b7c312b2fba19d97f65bfc37d65d40e668a53111c03caf9b5901b8f84bb01343ac87a52ff419fc80059b54e7b6df4f4a6e3926f4e46dfabf5058b618b18985cbf9933acf1f73e008d79032d99e383e5f6b548074cd1e75cdd407d6d24c196801422706f308e8dcf8de71e3e3f5c8691c10035dd75a24e8114b5238a08f171bd8f84c07c6f85d38eae2d59bf7057ed60958401cb7a2fbef4c06f5ff16baf14d73334b1d3e66a5f78fe8a7e302816f189a0888446b40937b6914ef1faf043df1695d68c7f704c56396fc2d940d6069a0e05f1eb0a112deec33dacfdcb509d536ed90b8a17dacb446a1eed1a2aaebefcbcccfa56c4171e29a227410c4553c09c679714e65ed2fd20197210a826a52dc37a8ce24fceb7fd431126748961b0aeacde62a76cc3ec06d00f5994a2cf12e86ff3f22dcf38c4f129552aaa559372d2f9d1d9488e2ce3bd3eac740c97ff0943ced7c582e0ed50bdb3543208c2f70d3a76c6cde0254425982b0321a30712756db71a1e89335a766ec826e517ee1c01c2a4abf8e1511c3475e4510f0704d3342e623843d455df2dcbf4c67562554f5f706dded6e1b1927a95fa833a15a33439866e69d0e29d5c2ed0bdc60600f85616489ee1289ccb635d4c0a60d417cb74617580ecdc0b3f0a66c9e1598197452dcd7671f1a06330b9f5f3170f67ba71a1931bfa7ebdf0d1d7878693a9fbfbd4f10e8c06c4c0a5eafef5c6826760b20921861bfab36914bd68c6085fa244dd93cf969376d0528bb996dafe49d05139e93eb9e9092863e8983511980d014a3f3059f73f4789c36c2e81a2435eb25294984e5536ed3e2c6d9f1df55a33e1df97b4198987f7d62177994db1f15f789ea04f8b4895c291b9489e6ddb50bf3bf4510aece0c489089296cab9e1a5d59c45470043e6c4b36665e4a65b8f5599a6ffb79dafd17d5f3c0e54ac2030ee6e2333df1b10b742b5bd271433a027aa1c3a252fd2d42054005b665ea2c74aae5241254f03414fa79f51a9b9c417eda314f084196fa3a3fe53fb04854a769fe31f919c0688329b2fd020f0ede52bbe9e0583bb0aa016e434efc849286c757c56304a01e714eb61b05ea8325d88d142685b5f5bbccb4bbab1044b48050564bb4e9e5e05270cd0eacfea402d8e4004c57cbf892b3738b368198b949d459bab76628192e7d955bae9f2e7cfda3dec0f7605c1ce09fd35b86050dc78e61818f841da7c42c2ff8787fbcc8c22113e1c50306e09af583f5f546af922da5fabb60698b780816e6ed339216a4fc5555674d14b7f0045198f66f14fd57e417975abbbd3c4ab58de86461646d9aaea8105023d2f86aa88af3eea7374acaf1e23b83519dfc5d8e6b704f1ef80affdd7b729f121c0560ddd6e278390ff9966721c29150dbc762c8cbda09f4e6c413ea112aa585efe28ac6fac727513180c420997d0dfb91ecc8cd7a37b76696ef1ca7d2a0fd4ae39652d325c55274c2dc2c953388e0fb08bf1fc572cc48537a1871daefa9fa872e5533ff0faef5c987aa1ef037c45637063ff965b2c7cde0aa9dad7dd77d4dbe03b13d742ffedb5eba9c058d1bda7936b29eb8241cdcc7f077a9048f0a7b2893b46a9db166f979a40f434837af840b90accf25dc96595804b3cc10f13d4e1b583f18064d8bc9a0fdb37cf7f65c1deefa1fb8112aa0d47c1472d193b17e0030cf685ccae6d4dd37f09142df6a5edee6026c3941790cf39ac5d1e21ef0cec68b25c781e30b2a38c187a45387a44f2145ab1e2876a28098fc2c4bda76eae32d0866ecf6bca874ef95e1624a9c21162b8df92e6ad232a063f4cf658c67eb342f1aed7039dceee131faee4aec23767559c1618267b7e8ad8c5bbc4b197cd1015ea3cbe2f90c9fee63d77280cefe38bf15918fb0fad27c9c3dddb609125587706f71165709ee0125bc5760e65a4b77cb37a0df6f990647b3d77061da03777edebd4c0aad979f7834eb9bb2c70877a02ed848001b43d74f81358e9f764c805961c86396a3755732fce6e9581f953057a222a35f5ffbb2999cb653d0ba59c1e9efe3e54d2e8f9961d817fa8268b3d94a9312ef87b4f583a64f0fa5589970fa9c9b026bb84e4c222b57d424eaa0533261e056802f28140ecf9d4826676579aba5967b776eed5c5c978ee9fbd77bd14b9a3540bb579b2b344c9f9e23d53c7057c77d9f290dfb1ae4484a54792a1f45d1451b9d7930d14ab7a434c710b6a7b920721eae0965435a9872ef14a9dc5e1ad6ef17236e656e961e737c85c274e2013fe67c8bf9ed4eff4d7f662a9bb7360e209398b082076086de4b07dbf8857012a6fa56f07c183670663058fe494e48499fad4f44b8123ebabbf6d342dfc7938d5173b2bd45591fd266ed921dea9044faf56d6a98636a9cc96324c12792ddb73166c5f5bd798b93e31a52162cb9db32f2041ba582f883e2b6fe8d43eb5efb167c5deaae97cd9c07e0d93d7e7ca75904ee498017dda1a3c2b031d2d91de70e0b8294befd3ad2adaafb2bdbd5a88ce7124cb6198a22adc4846502988d4c170795dce3c242c8b0376fa02a5a8b24e95166e91fe0934dc2a657002ca53a3310ec08c2eb93df7ef03fb8700d0ee7a8635be487142f224c93ecc92e63b87cbb1e4c4fd7ae4f633dc1508c35b03309775dad960bef09c3fce578ddc78d307521c197b8d130149b87d18ab7fb8a23bfb5062f7437f3e5c2f4f52816a82e506b085c5d91b91af42bd1614a966aae7f6c0f4823bf5c723658215a98906e731ea110dd76d737cdd6ccbb39b80ba53d959ff07871ca51300f7d9d1c27a64e1be28d6392e10b434db713a8cdb7e70379b457e49641c47a70738298d3d9bbcac4074865800408336d2bc568b339ecfcfa1f9dc132fa8cb178f12526cb6f27b1ea4dc7cde39be192a435f522f94677fb08ede92a3e05518627f40ded3b061c8763d9bcb557eee6fff7dcf72843c2e8d5898f85a9c6f367b4c6d2577b59a839c48b2a8658ba37ccb36672c67e9a860878ac4853182d04464e1b5fa0ec852a2e500df4d311f0366824792af5587e8ca0fa5a90deacf45de026818f2965b1f4cd9306d6bf4ef1e7cfd610e6b6a9c67ce158ba25846d2d5407f80ed5e189b63681e8853a45b6ca4ff049de4bf6c1ffcd2063a88a8a5e12d981b9fa04be83e3181452f4071f9366f3b769d7e865335cc69d9c55427f6001a8c76b50e2bcb228361271fd1d0be6a899c3bca2a0d264cd74e908d763656357ea70eac0888f2f618cf229099b7978de6a80f018f427c078850332d6cc8653df480193f00ebd02690e7320cf1f3471d9872f550d6b401bf11e082a812db3b30dac4414a73029ac18b86e3d99b506591f7bb2d03bf69ae9b0fa31ca52a013c98270a923603901ebc5548aa1d6c9670faedf8b8ffcb8e6ea91c8b8055d6308d23c6c12f2e8565b314821b440e78b63c924b1f59a73b7255cb12d94b335864b970770638ba707e8af264872964f855a939d6d13687772a9b72aa9e0728c550c5de6b1f8c16c3f9654a0d8c65695c667e714d0410e16820c822f34f0ce316005c77655ca6457dfe60c3ac238346799101409b2d5629dab424eccff6bf43a275697b77286074f054cfc43c5d041f68f126170ac52372540491af0121987f76361576bf82304b2eced4e57e7658341428c0e51995c1610625ceeba2e22dbc240bcce59bf871b1af296cc5d80f60322cf444f842c86ef88ddf6e6e42c3f3e65a5908a33e029eed8c808618779e28b30696678c1ae790b6a61ffd0e606d435977e9ce896752e0d3959f8ceb66105fc2bcb95c493af7a038f4198f4fd9f851d2a52ad206ca190e88a546a2c71845cd86f1a261580ea192723570a523c6ee6e39f5ae1fc43143601c4701cb538766f95060765f7dfe81908c38de9600b047688bf850b4274a30e2c7737f0bc1996b9cecce2788e94e6b98688ae5980580dddbba815e0c88874d5f67d8914f001e288671a12fa493ce36205e879aa45e82ce23026171fd5d17edd90150c79569c7530e9ca8261aafdd8107e0cd4116837a5c2e023cf78602b9af939dcb4019145f87a039b58e0642dfd4eb56de69b0e6d1242b1977601784224cd2a35c4a1e82927ddeed7c91e31001494891bc001907a89438b0cf131deee98ddccd7683382eadea46e95f703581336e391bf71adb64efba28a96228c9c1cdd075fcc6b47a546919931e8119b1b8161f5690d505242fd15944a98bb2286e81c408c3db2dd74126b5e3937ea98731137c937c231011288a3061ba0d643f6df3054c83f1eb3e369e80cb53aec85b4ff360691d7d1f2630e1d5a744e60919fad90101c53142e817e5afb7921be75013238645b9214009268908e4d39fdf52abe5a924b99ec32d4640d7bbdcee7d6c5b84771ef7ee8df1b7c4bdd36274c92160ec8f1119d15d2de83953d8737217234373e84c9ff40c8e6165689c53282bd47979584556ed14e5d907aca2d798db1366522df8ab63253919da0478966198c570cc16d99e0fe615502ad1b1c023a07ba332e4005fd80875590d4aeca6e28c7d780574e7b7c0f009ee9285cc70a0273b59dd2aaaee6f405063bbe108a79036210cafff2cf73ab37c572e2e218691cf8cb4e7d3ce107e7f2d84c9a698972d6be62d6af773644c6f123800249ab5433f4e5e0dd0076c3411cc7952d337d2c12197719698c0e7cb5c0df793390d41b81ce4309f0571ebcd9247ecf508ad85c744a1dfe59514aef031c30c2a77403178789226eef27d51a4a0904f21c42f22cbaddca9ab63221194ee6948820ca27fb054f84d7e656e6feebe0a3bc76f48083d13bae57b1a5252400ddbc52e475c9ab7068d157ea3d1e801c03c72cdf0907183bbbb813b67b88bfadb061b1c2e721e4fcc1e4e83ea327a3b86b198c23b95c0ee4f5f3c906c749843a73ce1da5a51deb1319a285e9dcef2d03a59f45030e4db296055c147798a759003e330fd6fb2195b79c88d7bb2c156cbdc0f74832c26e924bcb1e779631b6cd1e2af9dadb78ff7d4322bfe744b7e66f060653ec62ca4d202fea544450c3530ae34e93cc3333cc3333cc333460fb63ffcff6b97b89da4249a2e2c5443aa7c25a594524a499871ff7b3dbbfb8300d9d6d63606101f0ca70c120cabe715b63555c1c7194e2a5b34797b6a35cb52854d4c3a57f0618663a7d417458ad97cab2b6c7d44f828c331ffb7f4ba9ada85d456d8c870d09631bea02643fb6d697c8ce1a8640631194bcfc6f2430c479b8d2536097985cdada40c11280f3ec270f84c5a5b3873592d0a0555cc5ea9b1e0030ca7dbac4eb60e1be19250cfe1e30b265357dde42936225bdb87178e51be7a4f25e348195571f8e8c231339770cd6932297c70e1284ea38c52b82c9409b1600bc755425f0973aff395d2c24986165dbbf7e72d4b5938ee979f1c995dd4294258388bd023cf5fa6f35476199e858f2b1cc426f9d95a261f75b146e1c30a6775ae4599410beff1325538bb0ea94acbc8159f5742e1830a473da1854b9957abdd3885b34bde66b231b6840f299ccbc7e40917c468ce9c163ea270d2bc2fca4b8e8f92b9c296262647850f281c639ebadf2c48bdd7fe130ea7a3a3bb5da5309de63ae12cbe7dd668d3e2eabe34e124eedf5bfa0d5fd13d134ee7eef3b6ab5c9eae4c94f0b1848328a535c9d312ea25371f4a386b5fdd6c5aa3fdcbe1f2918493d02de88f54f911fd7f20e1182fafd2edbbb75f26264e838f231ceded84c65e196428a18a8909ab0c3e8c701f4538993021737cbcac347714c307118ed25b16edc5ee64b43b4443cf400307a69cb1ccc0631867cd28b41653ebaa5817611c959e7f5972e5b220361f8c7399d0726a216a5c530a18c77d7131a5163773fbfb8bf3cc0ad799a55b5619f5c5b136bced698cc67ce9c549c6fffbd2ddcad54e5e1cb3899adc55f7e732b78b63d6829da70b31cde3ea62f96521ab3d5e84128281472e0e2e68d7dbaba7072ecce416c70df5d52bbfd525dddbe264c2fd67b7c545d17f2dce631bba347c46f6e4b438df291dcda0d4cf4af52cceeeb25c2d2f9f2cff5a160bd554625ed4742c8e515cf432b5193e54b038ae521e2a5a4b5a2aa5571cf3d4e785fe522a63ea8a939d6c917abbe47899ad387b68a954a5dc6ca23715b64a8a0d1e641a6f821b48e51883cd6fa01178b0e2a852ba0b52ece97c595cc54978a84b4a2aa1c50d260f83872a8e7a4c8bd5b03a3aae948a939cccf8eab1b184072a8e5a7b6a38975d226a748a83b8a0846cb5e1e485d673121ea63808213634858ebe165eb014674d2bcfa4962e73d3c9070f521c46ffc5f875f25df2ecf0e0318a8314e3a39b5f6e514645711015a961b31852ea7129a951b275f008c549f6ddbfcbbe78633a509c358b29bdcff6c574f9c5c1e31367792de69722d63ffdc513c758e2f7dfbb85ecea0d1e9d38e6546dcdfad60a5b9fa1819c030f4e1cd7feed659c16d5e96e6c13678d5a5bd745cba25276490d377868e2a05268b1565bfe956871317864e2f8722acfd7623cb5490be50cb403a580d9e08189b3debee6cd9e32ff727b0955e6ce1153af4f101e963866975aa6d9cea8a67d251e3f6d59a5d8fece111e94386af1a254c6a4ba44c62671d22ce9329b65f15d3491a0a4462bc24312e7cd62bdcca2965949d7128983f4edd06dfa052d4ac389f080c451436671bdb4c92c5e8a088f471c4db90c52cc25c5118c79987abe2454df15b6367834e2a0f58811f3b2241b7448cd8311471937b4e02e2659ae348b388832f5942253ad699422ccf048c4c95d6ec936c62c97ce1c220e4ab8b0e17dcf4ba9f41067a185975122a43229f5427818e2f43efaf476cadd6cb61067a147afa8cdca85da38218e71544b67aa7528ada5411c83ccea4c937e77beac204e9a3c77856877ddd2afb0addd406828f008c431bebc49cbd8235e7c99417800e2984164c610a9fb7ea2921a2525354a4aca18a3c49fe0f187e34b9aaa3d63550b42c90f27a964ccaa4db663277392c68e947682471fceb2db6d4fffa8c2b66ee458767c8a8d931c29386c9898a8df81123cf8b0cda8ae8d89b787797bc92c716276c4e8776d470a4a49085650627266ce58263cf670125a9bc57e855c97653d1c53b3ac4acb59b1a6651e8e21b65d84c74b225f101e8e429da74ae525b51ae91d0e326bfc90f562235a668783d629daaf84ce0dedeb702e13ae59c87026a5bee970301d5ac9d00ef9f2ad9361c689103ce66048b579b359961c7c2daf965b525a9ec71e87eea57e9b73794acf86c3920ca1a57249eecb1d56d8d04039c13578bce1187a4fb9eb97cee45c371ce448b5e264e6d6e4a215b6361c6ecde530d5995e0bb2e1e8ba7b9ff2fa42cb7e0d2759b9f31bdf735fc96a38ea5453a59416f34bca341c3d8587e6dced559945c3f9c512532d6bfe2b9156d85ce07186d38c98b0ef784184ae2b6c69ec48c1f1aaa7039d812df030c371572b17b5b7386d29f728839990e11c3b6ae39e7c69b52ccb180e9fade5724baf5ad2650856504286192722f010c3f14dc82c11775e7a9561388b2e35e99acc32be35301cdc4da6912aa7f1dff7f8c231ffbed42e662af132e6163cbc706cd934cb18b44bf3a25217ce624b4fd91b8d2d52c64facade0c185a310932bb38a16f9d2e657f0d8c249b84e255c6d10a5a15552c61825262627c665f0d0c2c96492593f62aba592a7cdc1230ba7cd75b9b578aa598a9362e134bab25b94977a262de85df0b8c26137c75b6e962ba5f1ce2c7858e16c2ad38bcbb2fcdfd582058f2a1ccee52df982480d5ac5f5a0c25912eda2965d16c3e5fb15361dfc9998e838a3a3e031050018c1430a07ad76467f4d890b3f928247140efa9ae563a245d92f0b85f3683e9d7ff9eae7f54f388d7e17546bfb95ca553ae19ce3f7328af8525b36c14cd0f060c2b1a53f77557dd5dbad1b37d0e6183c967076e1eb5ea7d2f625854c4c4eaccd4309e753a3746e5672635869128e5a3abd1526f3fc394029a9010f249cc535391df9a1e3c5178f239c4f8ba9925ef23ae4c5c308c7719de16d5bd234a3f728c26975bb0b2f68fd33abe541849316d65e98c6dd6ce1358cb30ad3a96bb47699524918e715cdc2ffb94b623629184797a2e7aa6a954b5a1030ce2fc808db175bdcd7e81767498877876841ac92225f9c4ec4efbd28a5accf502fceb2bc6d122d6cd74bcc8b63f786fe6ea12232e75d1c95d6b79ff651329e4b17c7b86d7a4a37baca6a7371d4325bed4be392ec57717154f2b5d9868677593c6f7114b3594b2dbc8c62846c71d6e2efc5d154b7bbb116079747cbaca54b43f9478b73cc88fa34a9d457358bb3dd7b69497f9ae665717ebfd3fc2eb57e9d2d16c8c9509aae62da9925c38c931d62c0e215c72ca7ebd5dca22c2d46ae389e882c3321ee9a3fd39c01315a71ee1953a9565cc89767c549538c4a65baf15c3cade2207ae23be276e3b620559c45dd9a3bd3204dbca938ebd13ff39f426b933d1909d12829c34d0b62a0627fa14f6bd8f45aaddec4249d20c6294edf2aef294b85769f15b6334e6edc4027376e78200e6298e218738c6e25c795a991322bc54984d64a869685d32ef5e071644919223031b141821c29384870468ab37841685968b37fd5ad46c9e9418c511ca4ceb8e175bc185a8363bc89898989193b315513c5c9dc5399d0f26ad3422bc52046284eb31e5f2adad4b42002c55194b6a4a59afcdde913a77b51cfe8662152693c719636ea5df90b23cc5b3aa1eb6edd7ead6b568da1b652bb2c6dbabce99a673688c189b3e8ef66fd4b5e7ac24d9c4b4bd3d07a375e34ab89b30b42bf1ea5450f21d49938ec68d4a654cbd15a463171962e5e52ae5ded5dc397389e87eccea4a954a6500ac628598483189638e86ed5b94afec8ec62b812e7f516b5a9e694b6714a1c4c89d6d9f5f92e75cb24ce9b85d6c2b9ac94ba0d4ae2202f766e96649138a98c9baae9cf05a1f40431207116bbbde59763c5ebd01e71d02d8f7271313d4bef88736b61636d8e96f4c8df88a3d88d31cb5a5bdc908f1167356ab41c2e9eff4bd722cef24bfa5f5b5c52991a459cb59ce9ac6cb660329588c3c898e46854326d851422cec2d7cbb2bbce7b653dc44945d9caad939947e78638c8e4a7ef59622f54abc2a623c78ea523c70e109898e8c8b1639998a0e84027d081cef022885188d3ecdc9bbdacba32c30a9b979421821d3952d08e4f2181390383188438ce87d64a975e1e75e183c0c424e5519820c6208e295567eef6cd2a462388b3b49f714f5fcc5ac9de183383188138bd2ccad5ed88ddeb1c1067e9a2166b2e4ad58d97141b283676e025658820c5068a0d17ac1b6f2304272726266f620202139313f35388f187d34bdb92ff2b531ebfb3c0c464c7a3f8e118f3b51e2d97709da2aeb0598e8506ca892183187d3869b9a695ead2d1e1d538819aa483187c38ac6ee94a69a1dd35e915b6bb82187b388b2faa7d61b589f7d815b6b515e633c930e38404217f38698e31f111516d2f1c39faac4689397f43071a6594a4608c123584f86179324c0b69ab692e15b6bb5342481f12d7b92feb74dacb2a6c7d4608e18399ece12054aac928dd65d4bec830e32425440fe7db98b5f61977d1f1ac3084e4c1dd3821b5acbea5fe2a6ce686108287631e71254b7ad79bdf21773866659fa1b4b7ace49b2a6c276837c0612307ae217638ce8bbbe157e992e59a989898380a1742eaa0ae7dbcd646af1bef928da99b3ff6ad4f4b85ed4aca10812a1642e87010956ba72a478be8e8c430640ee77ef1bdfb5bf2c4ce508c9d0522440e670d5a336c73687875e370ba7bf9b49d171c8eca4f689227a3cc5d426f38cbef2e4bbf675688151a6e38e6b2155bbf41bd7488461b0e322a17d7c2bd6861a310361c5467906a277ef3ab489710b286d3aa9892f25b7e417fc38310a286d36a2d9b72d53daa644b856d9d381342d270165b98ddda89d0acb5e41142d07056d1391e5ad2a2a5be72e038a9281c68470a39c331d3cba2af850a933155d86a8498e1b02d4a9d3273dc0a37b595e158c2849ed236a95d8d7210428683b4d372b8b49be5b6722d94e3c6da0942c6707ab17edbf6efb3a1fc95830c37a68110311c45bb1653aed2ddd3b7898989490d42c290bf503ab7a985ad4d970c334e7a100286a3f6dcde5052eab8acfac249c8ef7d4166c1858a93178efeda3a7d5da90b5add85b3285b8cbf6947859d960b078d52eaf9c96a95fd0d76a0324c4c5a51520ad9c27945a59c35d59a554d2d1c842b17366a319bce1c66c1d6de69b3aef356d6f882102c9cb4cbb28b9b49c6e8f2a9e9402738dbf128d881902bf020c40a215508a1c2369bbbc94fde859673478a8e3342a6f0092f7db5d9b56aadb92345878d102918e4898c9631849c088544e1a0ec4644be6f6d275f5148e940e324073972dc601594d42819a3a48c314ac6705b26c38c931d8440e1a8252dc866d4623215ea279cfc7fd7746986cdf98538e198d57ca3763d9ad71b37904a1c21380b69c29e69f4c539d79f2a410813ceef994d2bbd8db1d50c59c2418d2b59ddf26659bf57c2418b906db25a8e1f5d262139add32ebb4598cc0621483868d52db78410a5b3b190231cb5a6a895c964cc92e6438c70ecf6bb37994fc8db6c118e5ad2aac6efb4b4328c4408118e226f84101994127be1619c5b8cd772367a4bba19478008e3fc22d4df54a9f7f71646428004e3ac6fa7376b3437795a1313550308308e1f33da324b1747e8a4ada40c11a4a071464908565002f28bf368d1114d9a4a8eccaab0992f0e5a52d1a25d637a41d60a9bb1bb5e9c7be4d4e7377a49bd417871787ba1e7d9a295ac075f39944f4923398a09c82ece9955c9b45942cb7e62145d1c43bbabde690e2dd3a5c2a603f101c9c5794c5e4a31dbd052af5a030417880a6922d264fa17aeb09de4e05f07e300e41627adaa592929d5a7c6a47301882d0e1bc3daa9cca4c65f7a031c396eb40a406a91dcd3a2f1a7b5cb2e5c40687116a5891c3be1b5eab4772d0099c57957d5bbe079aad2a46471d41b99ae3544ffc8b8c28692b203e938c95df20420b138cb5e9749ba562b5c6ea0336ca85fb038cbd6a258b9ff8dbf4215b63301c82bce32a9deacf49765bfe4f8931d395c71ce38a351cfaffeb9bec2d683c731405a715217a349d9bc56d8709ce0400a8515073de527ecb492fdf92b6c278fb203e958815d094056a1685c31d55c0dea39229a6ab49d6c25b76541586153941d280567bfae0c105524002415070041c50902404e610110539c94820120a44800c828404421019050500004141000f9c401403c5101904e4c0084130d00d9c40540340101904c9c4400041325209748e37360099402805482032094c000c8242481009048180004128f403bfe2401208e60004823181101904554004411140049c4812002410e71620807801462870240083188ffe524078820260012881438000410270b00f9831f1e00d2870780f0e1a402207b40d1830340f29000103c9c2800e40e0800b1830240ea70820180d08100207390830040e270ec56ffbd716a85ad7f000287b33c15baab629309291dc1074050414123a8a0a04a8d921098a0a4c6074090c68e1c67fc09fc0d47a9ce942e3d719beeee38262668c7ef00c40d66b240da70fed73daea7c5dfa0c31b283b3cb0a670a481921b0061039a341a206b3810359ca5988ce3aa575c66740526263b7e87d91540d2701027c64ffcca2e310d7463ddc8a14efa06386ce420478e74b2880b10341c77d3ddfe05f3112bc8190e6e772f26fb1c7111070a6a94d428b971c30325354a4a6a94d42829638c123586f70610331cef94562d69b95717ef329c65ad5a988d33198eb255b69e4b91b6aea57d1a3b52709c3452749c7170a0a0a446c9c261c30425354a6a94f02640c670faf23d2d66307bbd2e6238c8d73f32fcd54b973f0ca7d13268962163a99559603898eafdbeb8b31b26f585e3e63a2d4a66b9da859317cec2cbb2fca1e5289732a90b8753fb62885735170eba4d96bcdf0b4a7cbc85c38a6f5727b5f45df16ae130a6a92dbfddc879d12c1c848a134a0bfb50df2b168e519da972152edccaf20a87157fc936ca0ac7f8d3a4527c770b4d56e1a435a60d151317194485631ca15f38f17253382ad3929b95d7ad6d288573bebd4a3155de3abb281cd48f8c181919ee3b83c2e16335863cf572b6b479c2d9a570b95a3c554a83ee8493ecaddfd65253981036e1642f6b519ac5d52e7557c10208130ebe69bc7e4549d9932fe1ac4a37087bed1aae3e8a12cea216f553d925a5d897249cb453fbbf2476249c5dbc98b52c49d1cc4d8f700cf31bfb6fa2c47f6884b3971297dad2e72b93414347118e6a6e5f8bafffa5bdaa0a204438ca30cdefa3a2a59b711847b53a7ad46a510a0f09e3a835bbdc97a4d78b270ac6416ab1edb5b8d9a54c6a609cc5f90ad930aa7eb42769ec48312260dd912305f92f8ec9b4bd8debafb7fc57d8da17f6d18b930b42aaaecb61854d4b6a94d4a8d1f8c18bb3494f111aebde94ca76712c71ae733ec7e596567ef8d085bfaf196b3428f3e477a01c41491963f8f1e5e2fc9ab460b25b69ad378c8b65512badd732e9165cfa38788082b44edec68e9444c2c72db4f9ce0d362f7ba3b1eea373d5bd60e6b2aa8c31dec68e142ec2872dce7eeeaf35c737e57e354a4880b2e35374a0856a711acd1856d5e9d1a0652a6c4c8b9396eb5fb7ad8a92affc98c531933af16ef154bf2896c541e8ecd7c920a6c5de4c4c9c0c334e82f0118b9399cb30e529ab272687c52b8e5ac66b77f6a58b68cdf870c5599b90217475f368ada51567d3b17322c6f479bab0e27c9b5bcb4cc8a4c446ade2a86a65f4254d2f5c3aa9e2f8e3b2b71cee9b368a5271d65cb5fa5f569997e4a8388f6bd838b2cf4fa37b8ac349992e7846d9a85535c5f1bd43bdf584a5387db6a032cb1c97b58a14077d52d6f47fe66ac91bc5598a119dcd19e58b5113c532e9bf711d2d86cbe21fa130bf7cca3d5e56397751406126677c7ce27042bbdedbafbd0cf78727ce1e6a84ced154f672cac4e4c4d6101f9d384b7a5b52da43f42bff387194afd574a72525bc056de2ac43fea79e9d132e4935719ad7ad7a33bd5e47cec4b1362a0d5a94a3ff3b1a3b31f53b30f30f4c9cdf54af363bd30ff92f712e752365efa7381dfab0c4b1446ad0ad36ee45f65189835ce1f2a769b1f1caf50f7c50e2241e42865269deb5f998c4b14e65ce0c7f5f421494c431460bad3cd6d6bcdb0a1bca5d248e6d2a7bcebfa5c2c683c7018973b8e0ab5e565a09ad7ac439d365a9bb577f57882a6c27297f833ec287238ea22f5cca106127666ec449fda494d790d976e18311c7ac76ebb6b4695fd32e173e1671d23c2aaf3c3b338bb92be2a44f08137ab659e1231147597db15dcca05cc307220e325b9699f677e9bf3ec4599637bb2ef1dfd74a6f88c38e92fad363cd25d352c34721ce26b5ca16177434f627c4492621ae36e6753d991a3b01c0193e0671144269c7a6965a4eb59af02188f3462557bdc4d56a510cc4f96b734c7fbbfcd9a6c266983e0071d05a50771bb1f13df5b77f386c8d122df6a88e0c2f94197cf861f9748bee4a64c726c38c131d1f7d3808ddab6e5f6bff92fa3d3e98c90b3ef6709c390d52d3f6e4bb8bc1871e4e2e352a2d8bd61999d63c9c653dad5a5f536568080fe7d2725aacf79968692b6c3996dee17cba7a5a968b71956c4d4cd4c930e304081f7638c706d32ec8d5cd6216c7f15187730be121f49b4c0d1d365efd0a8e1d183ee870923267f56631dbe6ce583dc8b130051f7338b75e2dc81332625a381ee5ccc4c4c4643fe47092a1a1e59fba8b53731c4e1a3b7a3dc3ca0dad7dc0e1a4b55f16a3fa165d562d1f6f38cb895e65faadc4bbf2c30da70fe1c237bad052a8d5471b4e5a93ef86d61ca7e5f2830dc7545a6fd768aa93d1d77016d1af35ccb41ad74a337ca8e198a6c5785ad58b2ceda7e1aca7316589549e2d983ed0704c196293364f378a6418a1c339d35fbcd56adab337898a1899c349b5ec8b1a5f16d5235d677d1891c349aa7b499ed4b254afa9381c5e1cf1d39133622f090e072d8bf526fe5494cbfa1b8e42bb342a65d794f7ed86b37c5ad24add949471b50dc7685a92f2aac548fd62c371fec7f64446d59c5dafe1b042c3b4b452a9941247d4709651af703f4d3532e7a28ca4c1cf8d3b99d15c67a31a4f1941c35972515aa9ea15eabbc9313169c2c81970c40cc7d8a6364b2f3e46b8609b98380d46ca4006fe4eba146a2e09eddbc818ceee214e0bcd5e0cc7912ee98bd43dfbd22a0cc73a21ccf633b3d52881e1f442edf4ea7d0929f317d02f6e9e06b9b1178efefa941831b17a9aecc231a6afd382f8882ed171e160da439b9856d15959852d65b1b163e9a6ecc88192ea235b785d28551ee3a767850d8d1dd1c24134061d62e48dc3462b4a1ac9c2b1bbdfd6d4b80c6aea112c1c9556cddd42ed76979c8718b9c2f9ed340b1bba45199bc7112b1c5fd4d25394dc6b315d7a0d23553897ecccd2ca7a59aa5c6a18a1c279b428ce76f7b50b9ea9b099989898a01a3028a9517282921a2cf80fc17aaec5c8144e661f5abc96b659489114ce255b3a5f26f9fba18dc2c1a416361abfaf5a89235038f6afbcd8da25932dfe271cedf52557ed72fe5ad628312928a95162505052a3c4905152a3c49ca0a4468919a3a44689f1c38813cefede7a2ede0bcfdc57d89a70d4928ce7f2b555d89a14234c38a6f137bda5d4b4d815234b38e8527b5b5296caf82b558c28e1b8218552f5c24369cb742a46927054553226cf1ef5e28b8d20e1b85aa5ed9a967ccb373c7284e399bca9b76d6d8b1a2e8c18215f31199bc148118ea32f4dea0bbd72cd1d21c2419996cc1eaecc33e987715497e12ec369dd7b09e3bc52faddf9c66ed5a0609cc406fb571d372f2d06c6c943b78cce29295b6a447e71ec97b474fb287d714c2e978aab0bf27f95a020d28b736a367d7af76569655e52c618c88bb3de98e7b745294668592626275e10d9c5595042a776519de91066164474718c4949a5d5ad78a52fa607915c1cf68416b3fe904268109d0e22b868639ad5e8d9f19dc82dce42895d1d71336a362f628b73cb2e9ed7cbe7a9556b71521eeb61b3da84166e184468714c19448a4b22f34b9b747662769a1099c5e1754dc9ecc9ba09ed899d1d4464713c2d9952e3a8798bfa1194d4281141498d921094d4283925354a4050230a22b1386871d465bef01ba67111581c4c6990498972d10a22af388e146ab622b4acb92374c5516a66b6fdabcefb53d0ef506a551069c5d9b3e5534f9be69341541061c5518c8c2283acd1b855ade2a8f5ca72ef5339c256c5694c932af922445b9752716cf9e59574994b760b1547b99b7f2e4af9e6927e8a9334ad32e67cb549aed6140729d58b16bbea533b2cc5c1b5744998c9d32e9d1467554a4e48a9bd511cf44baa34857cf1ec35491011c5518b5ade756a960a9bd9e2258884e2287a368a915988129702c531eb4a4da5ddf57b94f63ad22843e41347dda0b7c365f992ee64ddb051512728a86f05229e389f3229c49c9625b5e243fb95838c6c914e9c94d242ecdd53ba7e2d3952d48c074438719049f646cb75d9c45996c92c6a61f4c87597268e663b1a2654ca0e7165e26832526b4a9533eac2c441061b1932ab2e7114b372eeee45d991294b1c37636bd6a84a9538f66aa97265a576ae2871d452b6b0df164bfd3689b3deec72d72ba9f2625c1207214cd6cb2f4469f547e2f04ae52b975b4a6c05898378f1a94b64f0d0af1f71943d1d3bd57c2b2eeb88b3f4bbe15a909a575e1a71dee42e9c6f4b59fb19717ef9b2df4993da55ad8b38cbc208797b39638caa8893d01f2edd6a419d292d11e73f99dc95ee4d952da61171509aa4d0625c8f0bfa9232444086192767881ce224e39e1e2d3b54c88fd020c38c131c228638a6bc48dd2fba4c5326c385382bd3fa7b3ba5457a4f0891411ce59a4ce1275fd6b2441566419c435c55f62b7176ef12887349f116df8c27e30c88a3d64aca9527dbb77572e3064ab171868d1b2795141dbfb607227f382ba1051fd1701bb59f881f8e598c2a76f2be481f0e32463329854e170d958d1b288b6d4dfd0e3004227c387ea89696fcbb65f3680fe77621b412bb772eb9181888e8e1a0c4bf74a84855d85907227948113cdc10b9c331bbe68a0cbb696c5c15b635837640913a9c6ef566254e0873a4186b0381081dceadbe592ca9e6e7a559640e473552cbad65691162b48841440e87935289951b2af4ca2c7138e6aa2a17a345f77021389c5cf6cd8cfacb7333fb86d379798b215bc829d3dc70163668ac32b5c1d564cc0a4a6a94181594a4608c12bea1e30c1b277f43071a2927fb05913688b0e12c4e4c54bd527993b93688ace1349b5fe75d939b061135a4e56e99b4a8fbf3148ba4e15c6aab3175beab8e869392f6a54f69c1bef4890691331822b3ad413d36ddbbe5d448cdacdc464784c2226638bada2037fc67b36be10a5b96943146491ad3338894e124c685e6f596f6e63e190e9fe12f27674287cb6338fc9a366d5ac86ae6586173f53a58606282711011c3595ff4d7e892b8977415868350aae55825b47c3b72309c35338ad0a1579f9a972f1cd366fc8d9ff17f6ff1c249c69bf86abcb0e1fa2e1cb41877dbf56952baf55c38ffc8ac1aa49cce2c666de12c5cab7c0fd7927c9db47016d75b66ce3bb921a22c9ccc057ff1b2a03adb212c1c5bcbac12b1fb158e225fdf458bd8173b5be1a82d63cbc2deb524cb65238854e128a2b75e287d7e4aa7c261fdfcc51072b5345a9ec241dd069966cc6599c395c2e1a566212273e79aa270d6e2851095af3267160a67d516572b359b57693ee1a884dacda4c5daac2e3ae1f0b2d65ec39dcbb6b1261cc5462d2a3dbde2e277261c747be95329aa34b98a8920b284936b8cb69cd3ebb3f7074a6a9478a024056394e4a221a2841349c2499316a596a57059d45ad69e8820e12494ac0fd363afc1458f7054197b63cc1c426951d240c408c7779d753337d3a6676591229cbe85ccd75c9fc1b526578408cba44ac8cd8dc1b455613b23470a0a1a6a77186759bd98e4cbc52836ce10c641a84d9a3ada6550f2141c482117f4e940679c8404e360af232a4bc48d860a1867ffcd629653faeecbf81767a1a5ccad55aa57da257d7154aeb17fa753a83a612fce7268122e54be6610c28bb3f44a9ad6d2a5184dd52e0e662b650ab94aba3888fa1685d416cdcc05e5e2f0b25275d92937b8d9b8386661a4fedb6fd2d2bbb7388c4c52b3ff698812d9e270b731eac6cfb968622d8e6dd2a4b91c99d7a4687176b522d5f977b338c677c8d6f21129b4268bb3a0f59d9a318b525f8bc551e7d54b53f6d91b3a581cbc846bb27bf54d22abb0a1b521425e715ce5828b2feb8789662b6cf63850e0820871c549de9af2ccd7af6d595aa18310561c6ea5e653e992ae35f14256c16639b64a6899cb1bcbc6098e1c4c02654984a8e21873786cbe14cd23a30ae3c861aca40c11949879f36aa2186d0849c541a7b6d3f677b2adf5a838a66b8dd293294a0fd0094a6aa4f12628a951b2e32b286804ab4630424e71fccdcad3c76c6498170e8498e2641b847997b6e89da0e9af2bc561d56b294cfcfa0b2e29cea95d5a66416929b5c20a5b1a9f8375c29782060a4c4cc6781b3bca18236414272583da73957aa5684d88284effaa31a9689e193b14475166abb756532ae18680e264b399433ddf946bd98d857ce234aae5e6378b103ba5278ef35a99964589afd3af13c768fa05b7d39c51e7c78993d420476d5d8c39a779216413677166f5b7ac37fbcb1a4d1cf5b53a3dcda3651c391367f542897999519c0bde5221041367e966c465ffb3c5756d13422e71f2d09f595c7951c9d3b5258eeb23b4acc4e4d595a812e76d5b9765be94dfe39e8c218412477d522bd52d8e7c512e300899c4e1465eb41c0d67aa434188248e52837841bdbf9a7d2d9138f6c634d973f24fec1b8440e2a8ab615389f74f72acf541c8234e26f3dd4be95f614349471c6f838b4a9d1eb92ebf2a6c363e25078ebb469cd56bd60f5dd1eaa230e2e4f66b3a37da665a56d8702075b688b3b0dbd15c2dbe54c67010a28863ef9a669df6a6ed958893ea9d71417ce9d6ed42c441375379bcac337e281de2bc1983bd123ba65dca0d71966bb56b59655b88634b4a4bc4bea05a1e9510c7bca16fdcfbf65ec729387e077f6268840ce2186e644b426369332914c4516478d5a2963add64aec2c635d6eb40395250f2c4a04348204e4275b8bdcc2f9cd462409c3373a817a4016a116256090d478deaa20e2d8886114a67386ac668953baf19ce625c29ef2d6314fdba0cc79ca767dfeb6a3f5f329c4f6bd9ac1f22bcd3311c846bc13ef4ca952f996238a8d166b62e26339d87e1705af8ffae8d26556c603868e975f672bdef67fc0b6713a74998ba68b62af5c2f93e655d1aad460a6f992404a00b886dd105cdd23cfe85b8706c2dd9b82d635d5232164200b6602ed9d6b8f1dbbc33d8bb6fb78f87af96aa4b21005a388a0a3d214768364d71950d864300b270ec4cbdab1ba5468d252c9c5fb2732d2fffc4253b005738de86b8d7deb239e2b7c239638cb5d23728ff5e55e1e8b27e9962a31c1dbd53e1984ccb2dbbcca26d72f1148e496bdd38d9a5a5dcac148e7ae3e65b535cfe3e0a67d962a9343941e1b02b2ffc8a26a91abf0a9b7f20004f38cb19e5c3e3a54d9aa44e38b81636a2679a0adb0d76fc198a810034e1306a9e656233e120747969fda366545e4b38b62c47fcea68f14e8b12ce2eedcb47fcfc4e9f84b32cda74ffc59ced728e84d368ac50e9a2574b721fe1642e8dac8baf734ec34638b8fcf5727ed68e0b870d74c649da0602500465346b6830b3f1ccaed52cb24fd36a866f2a2868043578511100229c5c98ad919b6554d205e9910ce3244275dd26bd15ad658471149b6a46bbc9ee162d1867172b5a4688723f195303c679834c27ba31a503c92f8e5bf2b434cc6621bb8e03892fce3b52db26ed42eab4cdf5e2b8fe328baf5fcc76bff2e2d8b11a3eb4ee6c75993e03c92e4e7f23e27a67b4bfa44517e7d2a20c7175c93be59e8b6334dd20956b8978119280053ad0580f021393f53ad058bf707152ff62af666afad2e5c4c65a88d740728be30875cd4af626cd9ba59262e3d24e40628bb3e612a15e69cad3ac9ed83282a416c72ca6cfd2c2ab6f318d94166749d9ea1019ce34ca57c64982641647fda7d5d5cbaf32fd278b9399bf6b97b4a4f7542e29638c9245b1714602822416c77fe1e2273b93542a02092c8ec95cd69a161b81e415479965eb30a16cd5e8df5d71504acb9a9887daacdd0e485a71ecd7e235ad99e86aa90adbfbc0068a199361c68993b0227d91ace25c7feada5c96eb2599a48ab3a4eb92a9ce8fd6b993a48204154a728a2431c5410b62d308a95a3eddab240149298e41aa8b42ed4c63db2421c559a61785eb787f91318b6414072db7e53625b7a4a7f20f24a2389af26cf9b46ab74bf21e484271145a1415322e462de64c0e24a038663199163276ad10aa85e4136797be5c3c253cb39e4d03124f1884876e3de572c803b443d140d28993904a0a6f2de8de16a304124e9c3b638b5ddfb6f1c360906ce228cb6c7f367f4756af899390ae4f55481772e7cec4f13f36c957a2ee54674c1ce579a88ef492be2fcb258ea3fefc5ca697ba7326b1c449fb36ba0a3dbafe2f49258e99a64d49a146cbd42f9438b9b41adf9250a7494792499c55d69bba96a7d4a6118924ce752237ba8d8ca2da2789c431ea907144aabf4b6a2381c4b1740be234cbba4c6dafb0bdda81460e16183f82e411c798bdb406dd1d9bd4e788c3c86f76ed3a227a33f90592469cd4bb4e93d1a5bc9a57bd40c288b3984ed32575ffed372ee2d89ee5eab412532fb58a3826a1b755c3c88cae5adc0692441c56e6fc2a0d2d53b745c4d937a4e697428656ea3ac461ee4cbc065db5726c369018e2e85a902bc4af924a48ad429c5cbc851bbdaa3ec36809719665614a8f96544b9b3b0d2483384a15f7e27db996d54341639ddc00878d16c441bb3c796623bb595327248138af78b998278368990610a70dbde1e6b5bcaa42c3ff46427f23a1f302c91f4e736a46dbab97654abbc2d64720f1c3f1945e9952c54a694aaac266a3075f05923e9ca555f5a65fcef41c6d856da9391f8eef52dc0b5a9041f3b46c1acac4c4d250624081640fe73a55420a5d7a636bf5709691bea376d53c90e0e19c9e39a58beb23a39e247738c87b6661b5fcbaa557b2c3594a99271b4a5f7c1bd5e1e423b3ab32bc5c53950b48e870d2f77651a4acdf7c4a37920d85c6fa1d9ca25e070a0e126481640e27717e63ca4eaf9a3955d8ba052472388adface7758d5f7192381cf386b2d36dac1963450287936c8c519e9e51d0dff81dac0292372c8b9651da460b6adf098e1c27be6ee4a8183a90b8e1d2b92eebcaae5256d8c4c4c4c4c4044d8c3890b4e1ac715ac83b2dbc6ea555d852500a1a27d875234725ff46b271031c682c4d06091b4ee6f29cef08b159555c61f343b286e38666cc6b96d1c655c3d956479c169933114a410ba520109ca16880240d67a9e50b2e4a29b5da103aeb03091a8e22da65715dd4bf656d079233203362ab318dca7e9e9624663846d9afa4998cd781a40c47719aa2e5b59732767381840cc7d6529346615fab261ec3e15c38d35aa72e9d76321348c470165b5072d45c73ebed1a09246138bc96c5cfe882d0f8b957d89c4f0c0c477d9774d5cb627e41b36a982a82e40bc797c7b5a817bd4ecbef07d69b178e597cef6e4a75312aebc2f16549ec9ae98d5a0a2dff21b80209178e35fe5a14a9e7f56858a3a446a741b285836656528878f9165369e1286443762a151121a22c1c5b32bb93d12db7fa8f85b36f8bdfb6ba5648535fe1ac535c569dab259d55ad707861a6bd6474a9101d49150eea43938e0dc2d343122a1cb58a0cd2c5936d5a690ae7bc15b24a4ba777d22491c2c97f4657f3bfa611bd9e411285b35ef1992fb7328abc582081c259bc4b59b9f6b3193d1f903ce1f882b0cf7c9b57ad7e71c24953851c31adf380a409c7d1d9234b4b6af47c4c244c3869f67db82c8689cfcb12ce2dab1eff566523c58b128e5a6cd147a41cdbe0ae249cfb5eca941e66ae53840454b33cf5f16f1fe1e45a9b94715b2555068d70b0b51123b4fca15c6b4538d86b691a5d7564e9a6c2565129688742318c0109114e662fe8ccf891c16d7592b22307ca098e1c36f48671309d1b5d52ae4ae66611c6416edd3583b615afd4c138ba2ca7699964078ca31a551a6bc65f1ca5cdbac916f19266d81707a96e3efadccbc3d65e1cd6b7ee370bbabae6acb09d64ca8e1c281782115e58aa655990bf17d3376ca01433afc1c82e8e69dc45f5aef1f6f6b5dceea343a7cf2917e7974d254f2a215add8c8ba3b764a6570bf782285d854f1e25478e8aba0f8cdcc2525ab3ad5ecd42c58b2d8e7d6a2a843c617a7d558bf5988cd182b7f82a47b430dcb58e7a653b523e0b5eb7e842b67f696a65f18b1f2b5f6639d4861c8ba37cc8d6de52f5c0082c90f72183ded2dc19acb0a9df718238908df56798a5e4d8810d1d6ac6c82b8ef19474598ba225ef6c571cd3dd8bf2b5d823a39a34d08e1d48475ac18a8392296c83fc39e9f3d223ab388c3e35793a27551c340a779dfb6fa1053d15c77151f27dc3a76f4ba3e2a44b4dc7cbc2a738a9172da84d199be2a4b96bba5db82c47558ac369ad6593cd5abf50951447d1bb9a37f5dd0ba58ee2aca99432b1b113c531d7cb676a47448c69a138c6a65fa127b6bef50614a717948ba5ed26a4161f7b62e4132729755fdaf431de2b463c7114995b7eaf956fe1f645c54827cea233260d2baf2b5eacb0a5199261c68918a618e1c4796db514a6326b2f3f95d4f06bc4c8260e2a85bed415afb430136ae2f8b2bf5f668bae439599388d10a3e2ef440b8d3e260e5266614a89954dad5fe25c26bda59675e65fcb9638efc9288516399befa295389c293b59afb3cd4f4789b3add2f1db792fa4de2acc8191491c5ccecba78b4d6f5afb1f8293c451cf885aa1e13dbe46e274b2c26656c77dd7798611489c4565abf6f5a3471c8374912e4e83bbd8322970c4597c985217a5556d700331d2888389d7a86a5cc9f45a8e11c7165bc872b9f5e9b587616411c7d3a45584d62d601851c4518bc165a1792f6c16d5591849c4f15d8cb7ebcb72a73e89610411877da5b5b4c5d582fab78738e67d714568bdfead4a8638bdb8fbff62b57c2e755288c3aa70dbf499469b7a2d1821c4599e8f9e8bd1d7dec3c8200efec2ebf4ded7a3d6748711411c77f43ec4756fd0995acdc348204e679a4abc56a9ed0b01718ed59f41662d66715bd01c46fe70d0d7ca659998534287f01031e28783291d265d8cc9356bc9e5a40c13131c28303141f95fb20f874f2966b3ad9a0b2e8a0f07f59aa133bddc25a5ebc2c81e0e52ba0bd52ceeec470b1a46f470d03539fbb2babe7cd66518c9c3f984d0d17a850ce2fdb5378ce061e40e477bf95697bbaeea467518b1c359ecd0e872ca1c3a85ef84913aa8324e3e37bfee038ed9a834d10543491c0c05c280300c834038bbcf0613130000181818930643c1985c322c7b04140004413e344e362c1e3622201a8b46828130180c0402024120100a04822008e25892e96010dd03281c01cde9d1602e461f445557ca5d753ad28ca90c5c873ade09235c1af659639431b00bae7fc585f479b2149391dc160bd0ad3e554d26fc14b9203d5606cb93979d53a59c3e82c40f47c356342f8125ae87d011bcc4422c558c4d3f75fb1edb7082a39d01bf2b848792ef5276860815b7f033f00f4803b3e062058dc2209a67779e53838cd17ab6c3b543224031802a4651900b8de3e94f653f1433faa1a79d4e684d5553e1d340d304a10371ec4a6041b2cb7f642fa7d445b1e925e0e0ce7678ec6b873a59c0f7e17a3771ba05449072ad47111893def8e03f7a93dce8451888a94ee5541823b890764df861e5cb510f114d87a6d989aafd7b8e4651a0692b850b1f1dbedacdd368946c6708a6f264ea115923217e2b3defa74a2468814db8ce702674fab5fe87051b6cf2799d369eb27faedaf63a34b33ab076d5698d276a8f80035232bc4d0078df0e452f9ba8b85f2fa66a939c1869221025d3dcbe9cd55a1989fdad716cc9deef34e37f584acade76a92b9717d6be12c89766da57e1ba82a5ec2cdb587d191f4efa7943ff29682903a9fc76cdf7d3572b77719d586125afdce44704d6ae242bff686ed13ab26c8a4331d6e75b5411dbd896a6502cec8308dceda7810020b40d7d965361fe4c0db061a1893e4806e3e6d2668fe51c9ce9215515a41bfc2040150e121936d5836c41915702c921bdc3d98120e1544dfc38840672dbd23caca639819b830b2cda1efac30497159c5ce66e35b4b02965e46f24404ce253eb7a23ab3acbad2e1543aaf36787ae0d24c1eff1d2bc4af3f7fcdc8b26a406237bc20af7286451241ebbc3b4c77f2143e8e574085dbdc1af03f7430b7791fc94e955e9fc6910e8438603531c6ea25866f9a8ff726c07a42f833baaa40ae1484f8240c65ef11fdf13a85db2fb6652199f529560cd33e833a8943311d9685fb3eecb075bdb398bfc246747153bb41e6f85c0c591aae829c3b0ac1e33841f953e21534e3ddd4b8621f87e55be0ae4c10c530cd50c9517b8973e5433c88b22fac4532c168f7ca23c8b23a2a253248f87cca17a047958596d4246d229a9283c863812d0b4cc29a2a22dae8d5663b3a95eb838d0038566c99af16a08b9ce8618c282ac6e0e0cf780425786244abfd998495f0d760b2911d28d62a879b0be57a5b586331a8a9775597a4942a942dbef2a49408e601525a607d0b27cb0ab1405eba7515a4486504f205cfe2673c139159ea33ed245f1ff19cb63c42cd92a144a44814f8daecd47d7da30f943567a8e32057bb0c253ee3e08c1bdba40961a081330df1c0e0c05203afdc69097a0c20af9210fec5b4ad16b4a18c83b1c78ec9d466f98fa7685999095216958d4e9999ab707cf24171b55b4c2b00a6b88bffdca5e2d3959cfc50ba3387eddb525b684aad36ec2820b0b58c9cc04d964f1105d5efe41b5d8f1ead9bd73834761410464d62f734c984793d8dd5bb17193b625962ae636c55d0cc53b684b4b73fc046a8e033e8df0ab8bd6774283e5758e948837cada06b25306e01dda04b73b5bc8f193ee77bf7ef574f049d1ca752f6390a9c841be268da63574fe8f0450ccb05940c6d1e8326e4db4c2cd4202e1f1640ca46b44ea2e4cdc6534665884bcd626b893001fed84be9f43dc15dbbb12a540c8cc4a6969218b2349d11bf8d200f6365b9a6f4e3ac555cdecda3a65cbe914e467e44c99638a01d76cd68337c710dbde1212f667e97c01ccc0ddf310e9fc4b5d456cb929d247d1c7045ff30c581d07ee225b4564706a87a75189411930023fd347dcfc86948e7feee83992dfdc07d0f3c5ee276f98a905655efb472e47d6afee59ffcfa25df418a1fbcf35cde466a20ebf5a99ccd89c0fcc34e2aee8940ca24a34b9da21ca428da8abbb1c2817c63774fc4555317f921c624c1d208b9838b189288df37d6f9bae9e1a7cf547ad524072d4161c0ac1e2abdf04598ccf17adf8c349e715952cea33bdb36fc00bfabb9dc2c057c16bd022475e77200f59c4d614e4077dde57bb432a7a59c72e5d114fbd26172068b0813cfdc723bf2c0bc8e287a74db8f3ee44f8a9d40e7d46bd7595c02cc5f4ad4e397a4fa943acfdd071a42225554b00398c7dfb76e921fd528bdd6da44325504bd7886eff6ed9839b14b63375756df9774f891b1253dfb0e84285a572c57924e9d1137ddc76c19d9efaf558fe60fe7ec04d6213fdc24dc724ba650b2591f7d4b23efa322a260808c51222c5009e728677ceaaa420a98105523917ed47f590da4f41991e81320f59bb8b94ee42e83c38e7cfb47226d2dfc71f284512b7a2d74ab0a53add6c659e08d041344d75a4a195d6539173c5637bc82cc42d13aca9c08310d03ea9d6cb6ff53b3d593b22dc988009e5d15e97a2edfdf8ce8847635745e32c9209f97484b82fc4ab0bfbb5883aab7444c72ef6cf0ebcdfd574761375dfd832bf5950a04dd32e042a6e4da99dd618feb478a8ea650539719f45a8a5897b5526309bcae8efdc4a946110ce5d49ac0079c2ecc03ab37e6c66e9a5045fe7ccbbb34f0d7695141061e2da1088b547b1906e8938e098c1a021d5186e1536f3d0e5cda5ceada6bb702ea917509393d0d59306f7751a93bf12d756544b416c47cc6c2d6089e1522a6a613286b4a1d8080f9cfc66cb62cc00b4f6357a53cc997bbbca41a4c5c928d5cde20fa4fe3813567a30235bce8e42c9ff8c2bd7d2cb55b641c1dc0bf685b40c20830ec71a1b4f47cd0d90bd4b8871faf3afe40172da99c45fc00094fb31b43049274de8ac1408f42803e20a57d992d83abcc2917664b1a29de13ff8a6f9d5c5e172f52b2d04d1e3c16930de49460db1893ed3b31c498d0d40ca2a639da8945be841d3a145538ad246aad6fb7112a62bd626418265eb206e519798bd682b7afbd9caacb42980d2244dd5dc5040a378e45874541c4b9bc9d120c3b3763db0000312faef49ab1291a5af3788b5cbe60155419b3b98a05afa5ef5efb31258648c4469a3919e79c728431893ec3f0b9f2419ea50e500018c66d1598dfda854ea8664b5bc44faf99ba8ad7f5b8fef84c839b19454dfb6c80562e207c7f9f5de27729ea09483f95632268a958698d4d2d5a6289f03411690409cd53da6b3c9daf4b2c955dc68fec1454c173ca4a2e488f944fe2a8ca560d835cd066d431154436db97267018a34fe20a5cb97b4d905667ee2c98ac0d0dfe33413b98741783283be6201ddb37a24bce1fdc3da3f5771f142d6ab66c83e3b0c6d05726f2e12d21959a6048d8621b424a4d888234e84b580f15dcfd9aea7cc1cf35efad0368e187a91bf4272fad57313244c6ea9d0c50093ec5085ef58a9d0180df0f0d18f76eb1a161ad06dd83e6e05a5602d63d21f75778beb5f68921859537cd1986e0dcb58cd81c41ce205f716cf8b50419a86027f3aa384d99e05a8307cb43e0b0850d9200f8ad140b45b8056773d539dc757ab002048dcf003015507c99831815f82ef62937395a36b3404a9cd845ab0d615bb8d6239ca93c7385ba97a125c64dbcc0a930780f665d7e25260e01ff24be0d7d25ac5f0d0ba586c55203e1915e03bedc8d3e1d43ef30af522030494b56442a7f089e58a0289aa8aa3e07293fa5266f8b5ad4998045ad0aecc94631072d57c841020739168514574ff48a38e2014569b639850c3d2429adf1de51305cca35155566f41b03c2b62dd463735ebda0fed5bb5a0cf5cd08d01b99a74db3c49cfe9fae630af51fb08784289c9a097dc486bd144c53f89476a3eb559e220fd291beb218f8351120b98dc47e0c4f9de512676b9137c39ce59f766bb20a5dd077f22b3afade66fcb797ce36ccabb1991fbd3f7c6e6b41fad121059ac29006e195e83e813cd5e22147959fbb67a13e03be4806a001e12b1d527df5551719b6ab6ac0059f2704e7878b03ab0698c6995210816b53705032dc72eed982bf574157791de686d9557deb26e328e576a3cca1570bca31f670fbfc95c64bc87aedc7563af90c797ad4e19e948dfb01a72127d4938878ae098a2b45150a78fb17f4d877cc8ec43de757b07b143e86b1fb5800cc30068a239cb70e661934965c572e2242de9f8a5827b675999fa2d49cc47978fe8b60bd1d1b4332bd21b7b99a20c0e6944eb0efd39e96a60f5b1ab711679dddea90f6aea677b26522fe73b839fbcb0252c30fec5e1b7ce6b775415413f0c19d45d95830f903ab3eaf74b502a8d6aafc69a9d5bcd4b54ce17f672fb9c17810eb7fed5aae312c252276ac47a016251cd2c926e9fdc37219bad05d31598783c4a0ea351693197bf44ff3c8342b8a4e9eb7cae4088d750d5389454fd0a11ab516d612c25284d187efc874da3ff516bf743ecc32399501ed257560d039ebde764f594814bf15328e3b0a52ec79a3ef45ca820488c34fa69a396999b10a054f0336b2090cb27a6826f0e6d04b6d5bd42948c19c51fea028fc4b30f880b1042da049060dcd0bfb8393f99aa2e3bde6b6bf54ebc49d6639ba77c61c640b3e794058d6556792099778765cc05d06c0966c637d7f85bfba9eaf20104fb0c62863b76518a06be7597d5223a40703a5aebc374d54c75c10afa113537242b1a62805053e1913cc25a478c4e573e86ea88db04e51299c80cca21fd6db33862d1b924fd5045875d4d0af74c0040240d3e352bba4cf9425d8695ec5114d74bd581411dd2cf11a0341d363c12617f1639f930c45ded60e0a135083897c7c7a461c95c026385ae19e60162ca3c304446318610085c4319b42a0564cc68601f2b1ccf34dd4efcffab7f5465b241284e714fb6781f529fa07c79261775d2b24b342a357f1b8e06a7da7ed1a0e14096709158425b73ec114d253940ff1f279357c89b717fff42581abbbf9770965952490000e0dafddd74b8e12afcfcac5c7157b3ee17e7d3a3ba618411dfa2fc144f88eb2427d504f2f7f36032469d1482b8fa98545ac631d048f6184306597b810d03e0b3c48b406cd26fc813f83c9f05d1efb6a35ee6ab6a17682ef3fd78a385d01fbe5fc8d59c9b472ede4a8cb27259d2691781cf54f51e3c674860d0c9db8762bc821b9ec653b84b80bf8ffbeb191c5ed18f4222305109368f42582458f61a6fd22ed44b98c258d58d1e0f45cb54e9bf32dcbdde468e32024078ec1f74fce5b73976cf7913fb32999bac4a270e468f1748d608fcf1703ceae1110c7da91b68ff7854a7c64247825be5f68bda014c16491ce7c2afb8b509628ca6a77e8d27e0aa5991c93592650eaadef9b0ee02c905090fe98b90ddf22732703c04e517b1f20ca7405230a0dde188620c6f25bfa11f39b8b80388cb0072b9197e8111828740191cea2ebf50fa6835d82fec0cdc4902fe9b92fd515b8e34c5ce5eee2e62ddcff8cece1468bb543f2a333f697586e92b2a76846b84ccbff05a824292f13eb6539aa96a57443db57402c05b61a59fca7b2ed62cbc05fa9efeaa7dd8dfb1ae2a599e770e2a8c77753fd5a6155a0f3a835b16e9949a8e3b21c716f8f35c0dd556e8709b8606edf89b9d1efc3e4acfd4a8e7ebfff2d9b4775c42e73333fe85b48d40a42193a7183617c7bae5ccc6b954977432b304d5ab6a2dd6bf3069da3519d65a98753f13b07f62101e62e71def1f9e29be3c9baefb02c1c2ddcbb7a1973649d8d4848ef70a14830a32c0a770c2307014706d8290baf5000c2c7662934733fbba6692d5ea54a07014a7de28783a56626c4396fcaac42dd2b21e192c67360a3d8342f09aa7cd153cb0090f9d17b978689e581f613c155b27831f4a780f6f164c7a4f5e66f29a10c84ef251c99216f2970274147e50dc3d85688da8fa68794ecf1eb2553c4d3e3b818a5e890df30c7fc9c6b0cb7035234438caeb28a9bb12d016bb773defe188a4e624299add7fda2db56cb0d81eacc46fd6e0f5393a19c521d6dbf8fb58e37f6eee93c06a50726c888b37bedc18ea97af64d6ca105f8ecf2ab920d571a89e9689d26a5a6fd719a01bb9eaad10b1bafa7513b7addb1b585b71606e0eede3399e744afaad289837b6fd94452f8594791d649ae2997798dd15025d54169e73f01c0fb7f0ac986872626cb1783bbc617b6af74ce961f404f38e0ebe85b397313ebc07062fb4070d29bd6857f20e5dfb08fee69192e770c6d781bc79079ce40d3ee67d85f1ef111a82add025b397cc82ac004bc3c8fafd53b3024b702f8dc10c3da9768f1498ece95187562c29f7aed0b6f4086d751d71429f33c9d48e4b56befdc8fc9df364e90de2725093dd7891ee9c661248632af149a8b7b2d8b39fa414c7a3f3d28b74ddf9bdf3f3ef0ee9a540b7d5a2c50d0aa35e3036c7e5b33f6fb076b43fc3c8127f5278c9dfeee7b58f55153abadc90c048baefeba718e1516a8284d17a5b812a4715510f60596369efe9c86ee86b16f9b2360daa689ba8ca9ae659c488dacac9a3275abb0447ddbcb2e8e1878f156145e45bbc77b03b2e5db825c83a71c8ae78972d977278f13eb60d13bb5bd096cdbcfa91607c39f5a7f9bea9c045a99653031c14333c6150d7fe0d5234308aad30c8b40060f1bb65a165c0eca64f57c803a9712934bcfc26e4b49c0e11bf95a353132e6e64304b6fa68283b824537fdcaa8efc58a12dd2f51a5a076f8d69074bea5f3adfbe3c6cf74a9e5e6013e8fa9ecf79707a62b22b39a5d3a3bc9296c795c7b3de557732c81b2c7113f5e6c4c6138f0754b3448e820c9125edda5140bc5b8c1b97d9154f9659b87a616c594752f7853e05d06b7da586826032f27d80a9f22ea5152f5eca6536576a1ab4af80983d2bd20ed49b6826c821a251f0ba4f723533a501d9628a76934208c78fc205620e2bc80737250670995f39dd757b903669e1c26f4d5122afa8a8cf26e518f5078f644816aa1b3a2c996eb825950097f6101b053904ed3a0cd2cb35a714be75c5a88707ecaa5022143646cca0b340c0bf3684840703e9ebef32b4c064d770de1341f2851345d866c7b94840b024ca8dc01df40b1efad9b59c49d3a4059ab3b2fc1288381e3dc131451073783c1a31b65b2e9e5530d1062609a4f4f384df66145d8f04a64e0eccaa8671805972204aec01577638d572dd89ec9819c008d507819b4155ae19cf1bdde0979dbf6e51eed6f4c6be9009641da2d3f539000163c499b7fee8f8451363429f9e547202724f362d4985fc8bdf7b1ade18a49a54dd650ba1b0b1f50621d9a5ea46f8ba865cc99561a89f3a8b41408896d89f90c79ded2cf5433543bfd9392510eac9877af2517ad88f9b50c6da9073f67123f4e0e3f554e265ea5f4aac9d075851c705a74ecdafc31f37db47973b69c5ecc93a0c1fe0a1ce85786d4ff41a7a17047fbc0921dda4115a70149280e83b0291409b798cb9da6fbc12b7a36c56ca18ff7377933fed7d560fc19acdc8583753a257c696744c279b3f170c903216b91cdd0365d405b24273e1df6659ba6ec0590e9c69c76766ad60468855cca9a5ff4483721393594b52cd42ac04d4034b8ec0252234ffe79fad5df00e821d26558b2df49f4a6537515d81438e17cc41ac41308bf2c2ec640c6614d17d7520cb38977c19a278d70eb204a29dc95b142abfb77fab2e49d8308cd5e8b76d8b2401776a5568f56ab33c0f8572bbacb98821a3014c057fc52cadb1b4437316b33ad6f82b8e1948c895785292f29cece38fe17398e43e1c41a21589d2748faae706ef1f5302a93b9112b9b2e1fbd2f61537ac578e3c7c711bc1e0340e09a20cbcd9f38863d84026bca203a368223cd8ab4c8999b45706f3d5338415da1e377ad469190701b5a3fb68891546e838beacab6422295420675918c0217f34062a1e94c830d81c7901f0e1c66772c863fe610f408e66a1c0332bfb06449d620b9c12e4e5485e8f1a280f6d67c00e568d34b17a87ffe52615e4a06d20edfd20a88c78c122ccfd36cff6f8e20135b381bf2f2505c0da5e1210b822d9caf26a44d76942d58323cf90fb12f71ec6200df865eb519ea46203e8351065af2cc8333261a04eaec8a51e7ca6a92eee49b8292495541af57489ff624be48bab5cf7db767b061fd143bc2b9bb565421475b6075ab802919308e19c04692cc17465028c86b81568bab7f71998ab98c80256a95812d48c168644882761680461ae094101cb43be424408c720bb886315d568ff3f25afcd629507765e82b49b75553dbb49a9bc91397eaeb0da29f8310ed1a84ca8ef89a5487fb823c17d0d766a6b8ecfefc223eb0cd4a36c353a3f4d35c29809103cf623f10feb51777b82becbf150adc8ff785a845babe5b30fc52284cebaeb1fc8ce9d8acdd1640049d69f4cbcc48fcdc2400262e12b08928bb20648ae70b8fa4159ac2950596a5c7cc4fc841958c013262fa2e39de71652cc00818320d3047cc18c1d302c4bcdf23ccd5009ce745e19cc9750c50a924725fe699aa347cdcc5f05072d1775647393c1a8dd326eed3e81b5f28a693bfe6ea7afddb452e858ed046491e01f817e115adef0ab18d28d7906d46cc7117d425605d3f55d1e6d3e872f172a60aa6830b1af531c173fc554eb59f581293a1446e6a9c2df13e10b5d4ba5f7126d50bd1e7836b272c4110d4278213a309d9a193bac8a611fbc7530cd0288c20fc61d358d12be78d7ac481f99055a2bab41c5b1b01f595fe17e077688b838b6b2d632a1b6a5b6ec3672142f78b8f0d80de781225110cfef3eadf770ef41b582239bca408c563bc51a60d2750ce0181a949b4e1034fb626606048faba422db56ac5c3d50a77117d1a6683bf5ba9aff91a85459c23b9f0e55b8b67386012f660785ca6cbe024ef14fb79ec23247454d685fbd0ad0492d005478a19366e9757192a21b399477bbc57ad93572b84e58a71343ebb85006f4ae92eb81898319abae7f7fba1eabae3ac03d1a5955dcbff5666a2fca6a564560c4de5a569b34f4cb2438774e66b5101fa47bd16ad94fc5696187e678a83029eff7df8a62cf05ad0a8d21ffb95a55adf172a26f6c556afa265ffb206866d301e51f871efdb8c69d6641665a76cd94731fb3a250fe79e00ad557f31edb4fdc82a8d905130e75c4038dabdaa4dbd19474314baa879ed3a894ec85d6c02947abc01935749f154b748c2753603b42afe202b69beec259af6c3a28e8ffaf7671d0035b072bd4c08f42d5331ddfe3d139a689780ea90ddf5808d466a005c97cc454b6887ffe3d16ece53c494f192ef6c3d4a84ea28b1acca6cacafb78a8e211682fa8814c1e16c89ea4237f3e2f2c84d43209328c56c253530acf3c962147ac7b744388c5c252591ee8e488bdd0f9352116eec5c6541e069af83cdd7675639723bc11a3138095db8d0f9cd7cd21e5479f50bb01063e0d3b3a762f002b9f75386dcfda1fc36c0e7236002b27a3a4df637134d9a15e3091053bf6f854ce380e33a2680d4b8009e921ecec66b89a42dc202cad28d795d065a1f610f9026689e23a287e20bac3dedd86a6cdbb33dc699ce1e00258f9af91911e3df213624eb5483865795ae7b3c5dcbba82942bfa59587b8e91afb0569e661588c23cc35801f59f011762bd91291acb7774b38dd08b73de863ca9840bfa8a32db32604b0e2a7efac161cfe15a41cf07025b3ef90211eb57ed94af1db4b808fd8df82b12ea5cc4fe38619845def9cdcf98ef27e9cdb5f0cebdfc0d7ed9ee4d2469f8ddb027265cefd7dc5b4789f0448d7f43ece638e93816654156e327c54390e644296ef48efdecd49aaa20cffc52743d7ca504f80c78891f7306bef73f70dac5cb664c923329a2df318c0cd503bdaac552cef63631abd6de03c01bd1dbd5294a80d68c6dd4fdff15db2d1dc2c49c48c6f6dabb2205707d76e6eb9a97c4a0264f04ef986d5fbd5835a5a8a5a96347388c2d524032d0c726db056034b0d0ce7c164506d23d46683260c5a6d305103630d0cca1fac7007c6a7f80adf70205b1070276d8e508141dc064737ab412f477d17f2d0953400c183cde3a39a6f5cbf31a2551b503f7de61504946637a43f32d000cc0b102dc027468ad685719b302c1969bbcef08f321c4aa052bf4695586c08a22d0284d7b20859ce3d0af61f1cee03fe3ba4f39f8589f671a5cde6982beff61dff19fc10f85d67b437d5c555c0822480d02420a449c60dfa06e266f3c8bda92cfbc6a4df3101829a4cbdf3049cd124336ca9ae439b1dfbcb72647683a8d9871d43d37045ed2f476da363142990e1ffeb250cf13e6e74b0ec71b1da9ec4344ab1a809faae92982fd9fb4d285fe71680a3fdeae810c4735b33c205cfa41a629431b60ddcd4bd2c74b695787545704379823b573a58c08296213e5840a70702c62162f55a4abf2726cd7c855eb3819e4b5f34128c36ab0a486c0f6c0c0a5f4f8fb5152d8eefba029357057e0c0a12615ce0b8c1676a6f9fb40485afedbe89cc0015133576fd2b0be9a4925c0c67b74bb3cf6b086b60451ee22345f877817c285b13dd6b684acb31b9893afee52d0eb43db9e1b95c071014c9e8f836762f182f046b149e484bc46483ec33abbd1879fba570edcf2930f4884b497612983c49c81305e48639d5ed1625eaf481884ea724641944033408d7c2689cd6866a5c204f8271386cb860151e8f85d1878636a88294ec9304d805c9a4760055cc48c4e00aea25b980430d2fdc5373de2f70b43564eccf24015fa624b97b61b4dbd8460111550a68ab02e62963efc2a55528adb49180fbd69203811ca8e2ef72e737c6947b2b5c913cda6a5b1bbdaaa2d19bb3ae3a1307b2390b99ee9b0187d7e3a8f6a526145fa2e36c2fbdb03857a28df4c59b005c4f71d7aedcc788d536949754dab8a859e898c2f3829b150fb36abce416e2e120d4fe4b3ac04a705e5d812658769b653fbb4203ffc0b9fab820f0f45c80372f9e0fc190bfb9557f8de89e013b73cc4d0aa3dd2f384e2285e853c11d9475d3a1929c6f41f550bf5059a97660d204d40302b45d01ccbd33abcd04102078418123211c2aada32a3a802d37514ec2f246a24adf86ea1f9f7a538506ce08632bf9eb353e6acca6dfef62cc1063bdaef088faa37303fe5d110981fdda316e159481ee56492b4816c488bfd2c20c7972512e67120498c09b41109f0167db0c81596fabd82ada20a116b090182d3e95866d8d3b8a2a26b90f849f25d21c21c415fa1ec69f73c9aaeade142e3c26cb1aa0026c4285d1790099532ff87183c2c34445820462155a8b1fa9248919228a08607e0c90d47a2f6224042f9faff2aef28aa8ff682b0423860e8df4137b92a07305b9e368200337990790646c5fa352ebea09352c05e82cc9ffb660ec91b548e74b4ca9b1bad32a6d3967e960e7cd84e393128b6bdbd263bb49e1f9de0d938722e7205ba47a064b4e2f0ab389ea9883b5ef14cf2b150f2c9d3062a705e8c728aee858e50d1ca79a549bbba0a8df64cf181d2f286eb9221c9f9f14985a283d4ba2bc0a7a0491d43315bf87455a5e2cd9a971989cdaf574953c8e14a03e2c687667074be39a077c1238d8b306643b4710ece105273e13db783d8381ff4b241bc28422d381cd941c4a232486919f901824c52068b55ff0ed1bff78e4197b08c56c35f9502eb210ef4c0e559803e1b1f5d595b52d08564ca13541f510096dd1d14b67d0fab5df21eb1de6519a38e2d35ac7da8b40a9ce0c98a813d1822f274ec42d94f99071db8092558d6407fc2862b11b35ba9222332091c59275eec5481cb3e1b4c978aa674f59ee19b9df1443b27c4d22bb1d7d408119662858c3c52186c67b40b836a2b274877c0197a820901e41931138b0da4e1a47c1efc7aef6e20cdca286b6e16c26e029f7ce43d66d73528c5cf708e493eb5a68f76e889fd1d30282b87f83996365126d1de0998d588a90977d7f06de49949aed8ff71bd411d149e7cf0b770698a1a45984db2feb9683208527488c3c02fc83699d9b042cd330d6dee0f1485b1b48a955b405b2eac030368ca15e60b5b1fbf11ed4c46016cf2e6cebdd94b27c94fb1c853db69dfb666ad0e66088fcb2962d33703e101bb151391264638d224c80a0bfd379929c519943e026795a063d047850dcc41f0d864f6d81164ec95b85fa61720e593aa5bfa22c9e84e96de89e93f1e6cdd899514e7a344da57143de69360ee93d15c114f195aa850557cec0304e1c8d1712c742249299b6aca757ba55bbf7004c09da68b69ebb8bdfdc1b6514265aa2af3a167653b72ac9398f72a845c3d4760d572fa67e67a53821f608c77aeb1512627f386def5e560e20bba4ab9d66cfdfaadad374f481318038f186846c9031b8ab90da816e3094e5a06b9ac21d032e98dd325bffc4cfc1a5160c099c006bfb7c56f5b66065b3570988a1f7ac5852a6397a9c33aac2013f65e6f7631d3283992e69a168bfcf572e46511070225565c926108a9354c08c466ac2580807d7353f703797942816b3a10c8f14113796f88ca886259baa7c7a8700057801ca6096dbce9ee836dada5231bfe9c4e8fba0164f1263b2cab17ac2b45352144225b602d4b2ba436694a742e193af22b76aeb3833eae600e9da659864763215fc9a64a1259bacb9cf11dbea6f81aac2902d023b119efddf93a355484a236fc9bca8ea36d9a559e8791f3262c0926c53345a71d623428accd5009317de0e48518322ec72ea171784c272a0e18a2bcc80d5a146c896452cbdb2e7b5cd4bcf07f630ddfb3d0f592093d80461989774274768483cf658c2b83e8bea85365396cbf1bba6455854b3d007f0c000f3d601462e7e4289361945b3bdbc0cd6bb8beccc8c802edb90a2992c13cc117b9b160938774c571f5198fd2c12868e2301cad2c51f0385faf8b88a28a478350a55eeecf62b70de21d51cef2a703fdb0080d1349303aaad613fb3b83a43a9450529e27ed33e024ef3f63c694dab32aa0ca46b7fc856104f71b41a710e224bac272103e2623ecd610f87734c3e1f32b814eceb2a2b6cbb15103fd8dc2d49262cb3c6441aa0a3699c57945d3864f292a7881d2da3ac18c335caa1285b99f4dc80925f4efed8506fcd22e41a2111e364b0d49782bb5a05262f9b23fa32abb1abf2e6ea53c193df596f38307072d095103cd2625ea548e40d2fff850ecc5244cb887e665ed252fb70f8de060613a2816ccdea3c2ea9d53e650028615c280a69934390802002eb81e81b15773d4bc27ab43b38bbfeff850ae10c842832301446203ebf57822b7f5742f1c77dc206f09e2842a09d795fae36d1dd6fd6d45d4be54eca1526db342d1c03377917bdfb7806bef1865df3b9ed732ebb97c1dc3247753ba529b7a172992257e7bcc471c251ffa168d8ca39b8429661c0bf5c78e4331e8b185faf0cbb90de051d0c65a50d1aaf64854827beebe80d0bbad831153d92489e9cfcc053f75180ce5dbda7829d6a510432daa02f6a8dbbd0e3598af8214ec480a12baf85ebcaca9abba249f741a8a2c9fa5109c9be6960b10eaddb9474d25ee599659a302701e57e00da0270e9db96cffd40fe9bd5d17444f81abe78e7325db0738b71ee16a193fe9822de536490d349dd5b919d31021c2ca4347bb3c5f7e693e0d6b50ba5e0b7adf855180e4cb6aa02f80fc05d11e42c372f6f3b33818ed9cfba54c396a90ed10fe9ea798316536e7999cf3000e48940c3050c79ff2da79cd43332baf7c781a0c1c380e53518415300a5480aa7103e063460a2550523ba56135dfecc3ff4f0d898cca1d7d7a51661aaff980081a7d65e46cd8b58b39c7a1151067c46fbb57d2568d8e00aa9674d0bab035a97bc9c123f6c5c5114b1fdbdd62770decebb84e59b141061b993d60c7312db096fbe1932a5f9528923c2bc9cb21a53e6f454a231e1f10660ea46cbfd92e9461a7a489961a514cf900332572e4df1c25b5248a92189b5d75f9270f28442cb58110ce13625cd8d9073d4beaa06732a37a0c24b0b1f6f21339ad8172730e238f674169ae16284ab18e8f56207e734605b8543546db7309e4553668941d29f107a6f3b3c7c7f03b4d1eb07e485853680425a801c32edd271dd19eec0641087c02fe5e70c901127eeddc281bfafa5ca61d548a26b055740b08a063ca2e57ca44f2e79575125dc2ee581b91009b7d0952e5d14927f1f3b7973b16d1c4dcd5c94d812cdf40e1cb661bc93bf36a2590aa73071070ed09849290402143b54428c95ccade91a133b0dc1e9b98610f0a1b86207668d6e05cef0c763add8a79ab5c9c4c5a22234d4b1a039d147afcd7280e3cd1b91371b165c3dc12c3b6446196c895f0822cb650d4fb45c3a08042de4ffbf5d94c2e564b8060d81b760a436456923a70abca349cc28211f803c256390427ed21f7c25b4f4e83715b2a30ef9dda353bf2ae864774997646a09d9d818306eb56476fd83480db608a720f4100693ae54162f72c9018213974543765f54b3d859ae4bfbf5aa673df2d74a331f384a06d2e4eecd3edd5c96c3e44d0a823b6b8b35d0fcb49d9791732b70a14249533c60c1847f885132299b553b24ed2599ae2df6940d94464f8d292595ad8472863e4699358594d8172568a2ccdc1c4bc88bf1fa8f402ec51a614a136d50566199f1e885c83e753648f93f8496096d250fb394d5ab61ec564f0053e3eae0e1e7084485770df3bba0b8e1245db92766de9cde91651d941adedc8623582b6cc8d63c9807dba633dc1439f8b3b30e6fe643c9d0d46edfd73461c472b32a8b288be0a6e89c3ce7e966dbbdf7a99f3be2a676c964506e383f2f205736ec00066559cd5a5066f812d385cb33f94bae3b8597f75f3d65d51803ae86c5990e3020b224e9003ffcf0c30f5f8f597ddb1ab7adb105346ba5949214e4ff49ef524a29a594523eccc502cf69f9b7ad35ab45640e840e010ee8630fcb9dcba5147a7e9e32d5c3e2c7947da9fae2f45439fa4e46463ef2b0a03f8aca8fb3ddf5b51d3ef0b0e81f6437886e76efb0e851a7aed6a65ff5527658dcefd47974dd978ced6e1d16bc339a16aa57788f98870f3a2ca6767d655af5bc9c3b8765f549ebdad322dcc4df860f392c468f4fbd771ff3f9de382c66794a9d5a11258329b3f00187c5d7fa1e53895fb9fdeebe61b17334695abe7cc85903277cb86169b35f66cd31c89c64a4b7036fc3823e79e5a69d46739b524a0cebe1830d0b6bb739476e9b6ccbe9630dcb1ff36c7774760e79d2436364440f8d54c3628e9ae2725ce834aeca8084c709f6d01819d94323f9f09186a573e1416dd2d8071a96b384d221df34f7d867640485ddf07186e59ecffc9d39c6b4baeec287191683ce232beb1f2fa6aa81e291460ed248c1337c946151066962dcb40c51324686e5ced1f45c6396927a7e8c6131c9b4998d15fa10c3825653d549868bee3c866139788c71fc93e7030cca7ced8986ea7a9c8b79e6185b28173d7e7c61c9b5c92ce37677a63f7d453fbcb034a779f6bf5c73a91197e0a30b8b5e1b4c8c1c9d5e4efec185a58f79b51f5b58360ffa836e96d4f1957e15167c6861d1a328f3d1287c47b72323232369a4a4918272f8c8c2a227fbf4a4338aede0f7163eb0b018be4167536f6e973f163eaeb0b8ee697633e64db6d60a1f5658fc8fabff1dfc64ccaf2a2c7aedfbbd32a99526516169348cfe34b2375a97a6b078a3f27be775262d65292c9a78b5b771ae6673300acb9f2675fc249b99a67d406151738ebb8dcc39e6da3e9eb0a8e92a65ae8ce749cb57f0e18425d59d51be96addd393561c1e5c3b4ded7d9ab651f4ce85f333fede343dde5e33b5793f2d326e55dc6f28a19199a44c8bd17aaa18cc52fad71d47596ec117237d448c672c6cc951f8fdd25b791913bd440c682ce47fd7ff331557e8d632c29d1d6236394c658cef39e850e3abc50fe2ac6629d487542268d4a0a590d622cbb5099937df628da5b4b083586b164633a6ecac63452773085b16caa625a6dcebb934687d941f298624c74ac0dc6920cad79a426ddd2a9cfd1a7b7a347093096d3ac70efdedcb93993a3cf70478f925f2c2b6f2d45b69b8afc3771478f125f2c4b2fa5a589c7146d5a3d7ab12053365c798da95f1d125e2c9a962b34e8ec2a93e52e16c69410fb56f31fab9a1aba48f4f7edc37e37d7cdc46be54729944799542b479f72f3d841923b7a94642e96b3e828a35b6eb39ec6a9a041922a89292825878be59ca19379a74d5a9b2ac91395039d18858393141cdcf5490a4ad6b8c5a296e22954fc07bb4fe56db1a0439fba30d7da8d4177928292b558b8db929f75e9d69d3e5a2ce62cbd55e9139da75f39fa749890a051492726951293599c31eadfebde1a3ea2efe6c1a5b0cdee562f592cbbbf9bda9659a990a91c7d696c2c96345c8ea6cda4c162d9b57af6fb565aa47bf78a4565d2358ac83ef7fe90d470c5b2fec6d16842b4749f4f904c0d464666f0830a8e1aad5878d36ff295a716d2f31aac585642076da25533673ffd2a1663ea246f3d69e5396c1514552c99778e6a515f6af24c25244528e961525223154ba352567fcc2326fcf5a85850bfcab5e6f251eaeb532ca6d02bc34aad9528cf72f46d076a9862396b1965686ce96acf95c7a55876b1bf6d9d174aa9d1043548b12c35d4b4921ac42aa8318a25b5b751a993b551a72c513a2aa944551457140babc4c734529f08592ae961725249436b8462593ceac7c9b71e9d7306c5e248fd9834e6329d220f93cadfd6f8c482ea68c8bc9973f4555048f03c71dddabdc96fe7bec8d9c78630dd1da9f47bf89d589499a3f566df46bf2a26496f4f525038b124bf3ebe7035953a7872f4f94ae98182fc240525b3c6269675c9a495ec521f644539fa2a963534b1ac2b3c68adbb5bc5950aa20e1d0a69261665b5aecc2d4d9f6e7df20c7e5009420d4c2cebcfea8da1c135dcd3a143211fd4b8c46208f1202fd58a3057324272018e127383911185a3c49c8c8ca0cce0079554c312669d3da7ea1f51254f9313f5831293198c8c989ca8239498948c8cece851d2352a61787aa8d78ff88d984a89e5d1cc2fd339647b0cdea512b543e5e0614e70ece1750d6a4c62493e5c7f89573a4bef182328492cea0b9999eb46f6839ba36f2f124b42692d77a376cf5e0312cbe163fcc4e95131f957a552a274a4c1c304eda91a8f587e99d5abd29a553b151d3d76d839624936b5ec8abd08263c2a3a7aec70532360e2204181732316efc3a352b73315d1239212538391911a8c30b4fccb74d34d25051917418d452ca6115a79ce21b325b4272639502a26295b43118bea7452aa64acd5c18554aa98a454fa7a478f92442c8ad6c17dfef3647e1e118b35daa63269d0219685cc1b564c458fd4590d432c9ffe20dd958699fd5521164e75d2315f7b7969790d422cbf2c132da4fa9abd2d0565108bba22f3a6dfefa9ea4c4c4e0b6a086271f3bbdba81e73111b77a9118825b5a6f694263b9d2a23209c9bf5f69b6d6f7bf7afd7527bab268327d3618d3f2c8e92d3eef831adf839191e7f25a8e187c596e11ebe3b86478ed4e8c382129bf3efb9ef4f4c39fab0061f16db84778e9bd5e831778223191e78272ae5f7b0e4bafe65ffea72ec94a36f3350430f8b2dd589c75c4accb4fa049b87e5d494e9a5683dffd65470f4382a55f84c0e84924c72a4a81d7d627220c5410d3ca0a2bf35a7974266395e8f4aca8ee52ca87187653539a64f837ea7332b35ecb0cbfe677fffcfe68c8b7886e7f5f8f96c53ee5187e5d6d85affa3ed6f4c1f63811a746066e4691e59aa39744abbdeab470e6fe658f998d438782fcd7f638fd6c1a0061c504ae3cb97ceeff0426f58164ae88e310acdbfebb96131a6daa421a47afcd7a464f25ea30d0bb2e5fd2e5cfc88eab0614968e51eb239d5869349266b586ed939d39db735b8342513352ce90d5acdca2c6cb7730cbf461a166b643813a671a64de9b1a362925271342cfd26b173b1a6f23ec362feedd624e43c2ad70a410d332c7c58f1a21db2a4d4bf2a31d19103a58f6b946179b33cbbd5adb3969e36d96172c2e3900cebd7a9dbeb4fa12adf18dc924aba1c55fbea410492921e1514123e312cb707edb89da93783290c0baaa51c39d2ed631c29342a26297960409809a9534a8d575510498a4941c17b418d2f2c29f5a3dcfb5e68cc5180a252d238eb851a5d487dbfd6f66f4dbe47eeb6c3c9d7131d56a58e4082825b841a5c58ceb39faf346c7eeca81a5b580ca5f34b878d711de71c7d6994981daf85a5159bb7a4f7a6ab1a0435b2b0f7fac96769a8866adbac4cb1ef1cc579666404e50935b0b02483edebc69b599dd435aeb09cefe752889cd50235ac60ff8bd2af47bfcdc724257b50a30a8fdeaccc217547159314a17238831a5460efbbdcdb7d543fdbf33f67aaf4d63fab563a74181e95c51bd498c28210aaa3f4952974d8fc104a7ae448815d5e0d292cda47b993eec97c57cbd1c72ac5a4e060b146141683ded299f57ebb898789898e8a9e93a0061416c4e7fcf07b429d6f4c8e3e5727262938313b38a8c733f841a56b3cc1d19885987c19e384c56d973b42ab3791b53761d13e73bd540dcaa37a68d460c2e2bd5a9dd5a97cdd39c6cd58c67269dd9ece8392d2750ec50c652c4617a6fdad747e3f2a19cb4aaa67ec6ff4acfbcd40c6d20915217f3e4bc9b0919ca494a84e5138709413e5293b561e63f9475cb456f8e94a913196e55c6c12a6a2b3da6831964c0bd9dfb9f684e8680631969534d942ee579499d030966ffdb735934ef5ef11c6e2eeeadf27b96a5e9ac158fa5219b5e463ea120df1d2502e002d98018c45f1b61922e694feb87eb19c633bb47366dd1c972f167b757fd2ace65575542f96a43c959eb92a5e2c89928f499bdc56efa05d2c9ab746edf246f3935c174b6bbab4a4c8e8ca4f9e8bc59ca37688f88d8be59ad17b1e42bf103adf62c9b514cd7853f661b2c5e2b716ad627cd4b9766bb198d3cbf819f1de3d95164b27bda39bf6343297398b059772c55628b531bfec7561862c1694467fa9a46ba13c66c562e13546d357df31d1c062d1b3ecdf152fbd62f95b5eaff08e2b16a54c42ac7edc4fb26dc59216b7221a5707bd1f62c5b2dc5af5e5eeaa4c7356b1bc69ceb4335bc44ea38ac5dc143bb237c7730953b1fc324dc81897ae3b321ba8c10c542cae2c93ffbfab4ebefa6d7be06330e3148bdb517bcea82f52bac8148b5a889bf16ca372c18c522c8f14a146ea1c438ae5f4b1e5c9acaa2baa3463140ba2651432aabd58f1a819a2585ecf319b92fb4a29dba960462896c3df26312632ac6740b1a85d980c3d6a8ebe8aea818242a2783330e3138ba7d395d2bc41e79dcc13cba349f389cdafdc84d989c5a044a31af538d949c889e5a4fbf48eeb18a6e6dbc46256cdad5a98b8d8d434b1ac755dc3a669509aad4c2cbb68552dd478672c1d4c983a6d3079af3a987189e5dc7ff157ae830c392db11c65b509fdb1ff73d18c4a2c67293e46878db14e8928b16026e4e6135ae69627f28219935896ca7dbc4dcb6bbc5c124b2a430b2d75653322b1981daac58b3021b474d960062416c3eb73e6a8f758f73f6231b849d1e2ab72c4829fd2b995701323de35a3114b7275fec9f18e2e6bc5887c333686f3515ba145b8f6aa4f5c3ef3aa8d22563a8306e12e7665f344a065f666a12d229663e9e029e43335d75a31e310a6bb100f2a36e7fc3184726566924f627fd62bc479ec54558e7209b1b059c86ea565144a376910cbefb25cd7767dcbf705b12447bba67a219336f9d0c18c402cea10b6c13c9fcc00c4f228e9397dba10dd6a431e66479ec18c3f2cc938e261b3ba1f1693c7528fd331ea356d1f16f37fd81599c38e0e5284c10552708133830f8bf2475d5d6a9d59843cc58c3df8b165ae65d69cb239471e46062ae0e3617654ecb260861e0ce1a33ea8cb962eb63c2c2a9df94b6e3ce1aae430988107b6de4d9fd0aad16b1ee6d08e87d9914630e30e8b233b26d3626566d821f1d9fd79457996c14d9851876599cee5e8d0793d647af560061d1637c717a1b25c662fad197358d636a5a64ea9df4c29852a778630430e0b4285467919bf5a4c15878537dd117639fa8680cca97c4822164e5dcb6697416cb421885856f366da2eeda5d4eb48c821164fa7d1edb2d931650495e34e420cb198b29f4e8f278dbac1c84832ea64648424a4100b7a365ffeabdcd658aa98a45478900c01e509d1ad7cb88fbb7aaf6dab97eeacb4b790357799546ea010890e1cfc201666c6de84e9d12437c413c4b20ccaf75f8390a55a460e218158fee0f2d4fcbf54997427262b188289490c46465276ac919110402cead6bf3aac5a1f195e1aa8121ae420e40fcbe7e239c955b6b13aed103f2c6ce793f2eb3da8a9510d54902385840795903e2c96889fbd53251d84f06141e7a831e5c6af96eab1903d2c68aaf3283f6a7bcfd1c372d4da4b74b7d0ca6615928725b3134a46bf7c39278387e5a094e8242e3a9dd05ec81d963e682c6daa77f5a5d60e8b41b5cc5a83ee990cd761713fa72eb1eb4921840e8bff9e4dc9ffe8eabd7262522939517d27aac4671032074665556b7c6c4e54e4be3e3b4631aa1c1636c36f7e8e8c9dcc1487c5ce5ba5956c8babcb2170c8dffc7feeb766c5b5504a87f298fde74849313c4646d2483942c81b167cf4997b18790f1dea84477b881b165ef66879ba6f27558aa04af85010d28605e559e5b30a193ea736478aa981e648313c348d14d410362c7abff64fd2eb3c649a8490352ccae9ac558a53950ad00851c3e2e6b9da5ad95acbc6272acf3d240d8bb12bff426f560e946276ec203949f1c39314141884a061393337e8cd2963aa0e7a1e216758949d51876d3d1aa37accb0a8c145a3d44c4244a8cab09c7aaed357f8bb7c172619165c6b3b4b57a53bde9d0e21640c0be61bc4eb67aa47f764881816957a120fa52b1f4e333139283a78ec20d1111286c5933acb9b7ea1af260c01c3821eb9652a2a3ed5e742beb0a852f9dc89562eee8678c14fb3559daf59add30c4fe7a171946d76c789c90aac10d28505ddc23c87faec5708e1c2b26a752d3faacf22f2856c6149a32693392657881616333ded1e75ef75f1ed7062f4c8d39ab6bd902c2c07939ec6ef646738a1102c2cefbc97bacbe629114221f143d14192d2e30a8ba7ed7d730ede31ab931596c34f379e149a543da80a4b6ac6d6df4eda6671536141ad34a5f9390b99c2d296d0d01cdaec5eb8a4b0dcade57efaa4a5ba1486446151e91c32ecc7669dfa130285c5acb2d77bfc5f7ec490272c8a289d3fe6cf320853a561786052841ce808429cb0a8a556b9142775ba1139a4090b2e27bca48fcead5f1fc284e59c594d5b2f613ba3652c9b77eb15c263ce1fa494b178de313a0a295b687a92b19c7407252e5fdb28953900828c45cf61b5aa7c79fa359da3ef0c0a0a494a89d9e169a4a4a8131edc238d93632ca8face1b57a5b8cbac1cfd1e0031c6b27feaac3e68d6d47c32a9723cda418a91ee8e8ebb69d44a8e14139383c4585e215ce5880eb2499e2629eec358aebd175a7ed2cad157411210612cfade6c28cd55f2ba602cf94af13ab5169d393b940eb543e95876281dca800063415d9faae9fdda10aebbfbc5a249f1ab758eeaddf9c253d7722d1375fdf39c975abfadcca7fb553a48522a28c7c30f482f166f4bc78f4f1db396cf900520bc58161fbf55a27f7752be8b05f5b2c265d224e233ad8b05d150f151271d834b592eecccfb3c3b8d7fb78defd3fc5f71a1458e70b15c6232c89fd2ad33c3384a069005905b2ca8cec1c369deecd6388f95860e931aa0ac6004f170a42067f0838a009201628b253162c5d5e348ddcf83d4627143284faa4c48470f19200b9005282b1819411c4c00a1c5f2667a9f922ecbd197c622c1514272426278eca1d8cd62b9856c291ea3d042680f228be5f0503a96ac3d16cb4aead11ec3071df3748ebe1492535128270a0d75d287078b65e939afdb66597db77ac562fcf727998d9e84d2ee00c4150a006985044058c10090559c01a20aa54ed60d90543400041537404ed10010532c665119d4983821de3449a9182e20a558dcd1f14287c89c393f0b7e000394158c58e70021c5f2ddad52cfd63907d747b124e48af3bc3a6bb457512cc7e8cff8ab954042718d8ea953aac93432290a4793ac75021e2b3816e4e00229b8c0c90a7280c394981cd4201914cb1d74c8dc427555ce982b00f9c472a6dc7af7a8a726b927965c9e9e9451748986c924a54f00d28905312ab5d3676fd4b6b2094038b198ad4e2655cffa5c317104209b583465ba67a4673f217462b22a2526249512928a0e43b2c3a4240d1d263c2a2ac5f4d061d0509e9a586c91b9f1fcbe9b498d2802904c2ce7f6d4a3db2574787952390c010826d41a559d9f2ff7743dd5f0a2db648e637a85a344e9d06172a0bec462eafea8738a460949e564e15962693d84ccfdb849d9bc2ab1ec3a649642bf688c51a2c4721831a55bbb6732999ec4f27a162a7b4fe957a294c4925013e92aa39a6b73209158dcd3523c9b4cae743e39fad2482129e9515926a9c4f0308232c41a804062b9d465f6cd594db45c9d9c8c8ce038c21070908315ac0065052329283a4e05c71186808f587a7d52f7bb3b3bcc0ae28865f3183286ed289eb31ea4118b5a6d449d0ee672ab833062d9b4649b545a0559c4a2f09cd3877a71e74205a288e59cf3cbdda4e22eff0149c49236a9639ccd7eba4e0541442f5af9fae75ffd00e410b8af08ad34e7d4106cd9c9787ad96be7d9e6e70dbfd25588e550e62343e49e984e1162419c299d62ec646c16e7016410c8f8b6b11e41f4a3361bb23d669eca93c724ab402cb9ce9c5de7e81322e52d00c492eecbcfa0a4366fa96fc11f16546a49a163cc56a23a207e5810792eb25f6c4db705e9c3e29c8c4ba13e1ea490e960648407207c583ee5c9949a534a07b9c98e0a1a24a97951078ab20bb28705fdfdfd76775d6f1a23a8169ca82298c4e005207a583ee12d74d99746ff13481e16957b9a0d9d2d755c758e3e9ec10f2a3e00c1c3f267f352a385df8307c81d9647099d63bcd1225e8d6f87c55d1d6bff42ac8e7dab13edc1a3c40528273d529006481ddab43f2d933a8d111d0ed1d3cc533fddda3c9a9ca8d69b3980c8e1d4a36236c3b440e2b0f86ac4a7125bcb00028765d5d9b49aeb77a6aa372cbce617526b35f36ceb86e54ee2ca546d3eb935b66131ba8617e2b33ddd7e40d8b0a87a5af4686ccc2db3d6b0747fa243ca9777a384d4b098b399522b940cd5c14bc3f2ecba54a56fd37fe895a302081a96631cdf5cb18fd59dcfb0f832d87ceafa665850fdb8523b5f95ccffc8089201a40c4b326596da67d764070d19163be4ef6fb3966d7a041983f936736b6b56fe828861d9e73f9bba88975aa6302c695dff52c7b0623fa7c17014aa74927f5a3aaffe82bb693fb7e3f7afebaa7466551040bcb0ac6975fa984afb948c82746171e36f120ffdad6d3f0817163da6d2ad2d3d880c322e806c61e1469f50fa1a1e19d9028816163fc6b6da8eeae195960d205958565a9dbe9af5606159d5c81ced9e9aaf3957582cf1646a33aff8f81ca28058616183ca7259dd32cf29815461416bd23983fe646bea5203081516db7357b4702d5ad3ff205350c83c23440b73bb002285e5501d47bb3e691954a40590282cc68f7a984d661afa824061c1f3ea5eb5cf5a7e7f204f58e7bfb73bf4f4777bd3ee4fbf9b47b11e45204e584c5ee23b63149b675d2e0590262c776edbcf42a7dc4d0061c2c206f56ae6edf5329654292fbd41a694b19c2e577baaccced79f642ce9509fbb63dccd7ba154c2073216e387afd12fa6b4d4b1ca133e8eb1ace69ab578adab22ef91119fc28731164768fbbc2e44c758678e3ed5c558f234a676dd3eea88b1e86727fa51783659fb3096e4efd40ba16d61e4372bb6e6392e2b32aa51a3d2a3654eef643096b5d49d359398099d3ac058d2fde079336c3ead83bf583097f249c54b5b2d4ebe585262a40c39a9f56251f9b9c6d8d4fa9bd31fbc605467f743e7b6d5bc4bc6fce64dde2e16b376964abe733e74b1f05e235beb187ea4ce513e72b1a0f7525c6de785cefe03170be29a5dcaf174a584d62d16ec737ace7ae4b658fedf93f69f5a3b5b5c8b45d1263ab4da9ea94e69b11cafd3bacc1d3e69e666b1b05a48d9fd58af5b6ab25890edfd25be4dea9e0e87890ecf19fca0921fb140799c74ac451fb0b08452d7d23a5dad263ad27cbcc2bd9371f75bd5ce0df3d7e957fc4b4ce43f39fa7098c400070e9318f03099c1c8080e131da93e5cb12065b946e1a7533555be818f562c9eb98daa3ccd516f3447dfd941a2a3a2c3a051844a8ac291b7b7036547e238c21092158b1e74ead09c33f4b6fc63158b2ffafff568d6719b291493a30623235db9343e54b11c84eb4f66d2330755a7626153ebeb3c6384be870aeccf6bc77e7b3bbdf54fab961e839a580ddd9f6231261de45dbaab9a1732c5c28b94d72d642a91732ac5929938b1efda1a59f7072916c3bd96d5dab326977947b1bcc2464bd1297b347c8862e96b4e4b6deb9a5f7abcf0118a6565a34b4921f7aa938a0d1fa058d4be5aa4c7984bb6d4fdf8c4a269ff1cbebe7398d84646462a5af8f0c4e2bb3aa1d4b4b8f9129ea8efc4f2dbae67dcfeecf5130f25856407890ee6c4726e8b562b4cbebad37c6c626157a3ca49294673c41f9a580c4aa56b1db5ccf318cbc4f2c8e8c793d995c8ce77542a7e7698f84ec4e62ce72793d6f07109fe6735c7b75bbdbe67be468a4c175ba564fcf6f06189658d29eb43ec7cebcc876183bf6bbb51a50f4a2cb8147b3a7aeca834ac26b1ac6177bb2b8409a10ac7e00428a0410c58c02946a8f0496269e4a4bced709e5e4979183e22b128f66d7dd32b2136cb2f860f482cac8d7ed79cd5f6cc09250d53839111ff78c472b88f56da4b355ed9e9c4f460c1894ac3c480091f8e40ec4dc37643b43dfd638c955af55cbcfe8f86d281e370c74723f683111f8b58f4eed824b256c6be5211cbe2c4756c4ce2b9266251beffa6ffda972d352270fdf8cc2d427c88ff63f4776d4ee4df5554771a75f6f68721165673ffc746e979a22fc4f2c62485fdaad1a23f26c4727a9da332197b7f273388e534fb51e58ee9bbd43e04b1a0be5b760b31abb9728ebe402cca783f1fc3e734be7d0062c1337889d6a24aa97b3efed07dc8698f79c96df8c9874e3ae235da6aff3efcb01cb4d4f2c2b52a2985fea30f8bab5794ca3d4ff61b95a34fd5e1830f8ba2c46815253b6b990b505832e52d753c3cbb9d14f084c5f318d3f9aad9a43a0a70c292f891a25a86b6ce1c0534615197de47519b3c068f0298b0986bccff559dc8a859c682c8cda06bb45c51be3296654cda37ebbf3dddc958d0f718e4c8ac9ba245c6a2d46c3ab64779d87b8c85cf3a7e5fca18634108fd99264fce9ab218cbc27590d5cd427c289b184bea3d9f1a9541c6a4eb612cb9cc3aff664e18cbad2e56c718f55dc83a188b4a688799172e2bb480b1e44965f6d0701ff4bf58788ff93b3bbe58543e3ae6f718eec572ab7e1d2eb761a4cebc581651adb40b73174b4a9c4cbe31693939b22e96e5acd4257ce74e48e562b1e394124a6aff7c122e96b4d0d13e4ee7160b26b48c0ae9b1c5b2eae974a32f73672d16a4903255bf2ca5e1d36231b6bafac64d5abab358f63ae1a75e3dbecc65b120a5c64f3a93ee526e2c16d3fd877da8b058deacf58a4fbe6261747a57da4a8979e98ae50e426a28b92f831c5bf19a4ad926ee2d2b16468e96b81fed2a1645e7f9277b9994d652c572c9d8f1b9a7542ce796ab4775067b3942c5b296b1d446dd49f345a75894f2eaae94d4922f638a456f611f1a5fc44b5e8a8555a67583909e9b71522cc98c5df3ca1ec59292ffeed5614da358140b7bafd44c796807712816c3ac8f97bfc60f2e28164f6ad355b69b46d44f2c779a3ded75aef2a627964da48f27177662397e7feedab83ac72027b0d54ad8e6eca89b58ec3c9d7fb5ca124a544d2c678c0fe229dffe639a89e5cea72f6e36c5c47278ab0c2a64eae8995e62e947c3bcf468429796259665357894528fcc9f5589456d3ace89d79e975994582c29bc4cc4358945b9397accd9592a7424b12ca436ed6fafb4b64f2496c66534f169b486ed4062317b88d3b1bdd99579c4f2d6b794ba5a77548d2316ebe409a5f5ad8dfc8d581079132bd467c4d2bed6ae92617fe32f62513be9f055ba2ab457c4a2f6f9e8ed1e71da4dc4e24abb355342c67b1711de6fbb8758b4378d550d2ef5ac86582cfd5edd60a64c280bb19c4ea48a0a3109b19c93fc2436333e22e62016d63b655a5309625999c9bc7b7a468703b1ac72e54bcb14a34f0488c55a13671f62a3d63a7f58901a5ca68ce6f0be1f1665aa515a367d58dc93f7b82eb273e9cfe0c382acb8d73d3eee6141a58b0bf35e0fcbaf6333a4c813ee761e9665365f115a6b3d66f1b0acc457f6bf92425f7a8745214f8ad02b65d03cedb060325a0aeddab46eb30e8ba5df635a916a85e6900ecbf23f67b28f72b2349cc3c28ceda8b7ceb155c961e97764e9ca6cbfa68ac3828853e28556bb4227c16131c620b34b6dfad38fdeb0f09d33b36b29474819372c4bcdab22faeaaef56d58cca2739ed633512a67c3726eb1ae36f4bc5f5ec3b2ce394e97524f0dcb41d7cf6a1952a696978625edb8fb111a16d3bcfef826c36b0eef0c8be77a47c743bad6986159072d759587671d9661d1b746e6904aa4688b0ccba2fe23775276c618164e8bcc42bd78d4d16467886139e8cde239f7678c213b230c8be76eaf757478a88f9d0186e559ed62355b8967c7cef8c292ee91ba63fca07565ec0c2f2c8853fad365ee30cfd8195d58142e4ccba50ce3f5db195c5850da3706196d4b2adfced8c292bf96fa6d1d5ac9ddced0c2b2795455266a3fdbb633b2b0b03a792cd1deb1f36c676061d1546deadb366136db195758ce92d9b3536bca7fed0c2ba4422be1b9aada1955c83d6acd5e1d6c35be33a8e068a8f6bfc68a86d66b679d66d4c14fb7e9674c614976cad70bf12efd836748616985d6f14d7e734a96ce88c2e26ce8ccec2b3c030a0b6a7bf37e6911a34d9fa34fcfed8c272cc998f59cfc3425c7d5787b861396b3e75ceb3af1ee194d587c2dc47d70b3cfb7be3ee20c262c6dd63135be0c6972ae1bb8204f482a7a3696b128ece5eb88873694b1e8397d3ebeb610fa958c05db704a8974cfefb241c6720751295fade89065a7d838c6d249a1c556b60b215429312151384e4c16e6e11b6339ebb5bdf4b5fd1c5fc5588c1d34eba77475ef493688b118558afb8e49caaa5ce5e8db6b94c661d8100607c30630bebf0dd17e2df5ddf2f76cfc62319fdf49992764dbc8f86251ae96613cc9949d83aa174bdb418e94eeb1c46fc78b651d9598dea4568e86ef0d3676b1e4ea1db388ceb0f1555d2c87da2a2de3e7d31ec22fd8c8c56278f11abe34e6d729c2c5921e1d9daf62e6e5a76fb11c5b2c9aea98316aee65d6722d1656ddaa4d420899cf3a6eb0418b056f214d3e69dd2c163c85905163e90f237a592c66d11c64ccabe77de3582ce996feea53eaa4d50d8ba5133afbd8b85e19d314838d572c68eeb70d956f0b365cb1fcafb1757e7d257fd5ad583ca16b73cce062c5f2472927564ba975c9c6c62afef3f83ed177d13b5f157126840c2d639662b4a18a85d15ac732774da772a76249bb7ee131a6dc4d9ee6e873542c86f676c7af8754f1148b32f784d63d23b4d8c84c5151808d521cc1062958063646614314178ac5b3f8539e94a34d6003148667fc89b7ac776e8ca7fa10253f4e9dadf4d8f8c4a2d0972935c47a3ed9138b5126954a66bd8c3a683ab1ece157c4fc5eb5e796c70e17a48102141453831c8c8c8ca8c1062716b3eed8fe3bcf5a7a18d8d8c49296dd90f22627b5e735b19c640b13151ebbfc1d9c89457b996f5d5798ef4b9d2c7d4c2cc9d5a66373b4f715b2be1cd8b8c4b286ba9351ab8c6289e5645e5e6e52549b666272a22bb051097412cdb619434a2ceacdce4a26cff130698e3e9fc492ae0eeb69c5bf85f42c3624b158ea5ff5be29f724359158d25559625df8a993ebc0062416cc56bac64f1b3b868df78825b9bd623dbdaa36a5513ad03a62c95d6af5aae7959e331bb1d862a6254cec9b69d7062396ddfb5d6c6ee99e325ec482d242b7c98d9bd02eda50c4f2a9cc2a5fcb9488e578f539c47a0c2216d5f3c6f4eae3b3092d472f0d6c1c62e954db84d63966678865f54a9dd2fbaa14624978ae93d119c4aa6f72f425c9498af2c00621163bc9755fefaecfac8d412ccbfd3c1d25ee94b89020744d5919bae2bb818d402ca78e8bda8e5aa38d9ea34f33d900c4e2e78b509ab3568e3e3d13920a0f94fdc3b2b2538f5276eee9bc36fcb0a49d759ed1a89f5192b55cb082158cb8a18d3e9c65b68cad9ea17b3e789a2bfef541eb3412c2c61e8ed3feb8fb8c5af3aad4a541c8861e164fc4cad3e8a5c4bd12156ce461b1839623de848a78e84e651ab1a7fb1d166beee7ecf4fbdb6376587a97518e545be325a336eab0e452a69e0ecb410a8fda63871e315a73581eb9e6aebb2487c5f15a53fd248cc3e2be12795af8b7b81042840d382cebce55d1595a08d3b08d372cbbebfdf0a771c3a2799c55e339e99c66b6d186fe6ee6ec76b6433f344b75f4a7b76db0e115a254d573b7b186058fdb1a95b2531d63a7831348c1861a9657fec928f5fd5b6dca461a96e6a54a2d4aadd4b15be6a46284146f1b6858fe2e19d365dedf1c946758fce8ab470b8f2a93cc36ccb02893e6c76f9d4d761c6d940199d2bf85d08e8ca4614e4e4c1a36c8b0bc3e5a88f139cdb0d23170be6173ea79b2db757fe3eaf5c6a8c777580c8b79478a88d35eebf2b2118625d171fa63558baee636c0b0205ceb5e9751ba0cabf485e5cd2bfaba9f65d439c68617963636b5d3a84d364a6da30b8b2e37d6f677777b92b1c185453df2ba55666d34da5bd0828d2c9875ae19a322b6defaee75e57a8baacb061696743a2d4e4b5b8b14dbb8c2b2162144ed77f657c6ef72108305b10536acb0b4bfbf31d307ff172d1b5558d661a5e6242a5a9f52b24185c52cddf0c16c6528e5a90b6c4c61310bbdafa9e31d327536a4b098fd7ec5bcd42512931df00e1b51588cf341a88fa7ba4c75ba7245b00185c59c9a35dd78d6139664bffe9c2393d61ed98613167394779ee36ff0a0c546502d181949465039908d262c797aef91b9845efd3a2cd860c2e2ebad9659f506296cd5955bc67292696af325d38b9d01784288329656e9be9d8dac4d31673216ffce748f772c3bcd1705c5599d98a00f8420e34630e4188b1b4e28fd2b85ee97ad319663fa7a25a3d28ab1307b2252c97a0cd31e622c6675abe4c80fd59d44c3b073fc3546ced6d47afa3313096349ae5252d56ecc62cccfd1774b0809c662d6becbccea4da7102b292826392a8a173b04181cf20bf6055e482f78b19c74ce87d52cc45efe21bb5814299f3cad7c14427474b118c3c46dc64ecd49e94372b1a862b47b8fe8fc20a421b8589032c6cf3b663fd921bec5829039b6d6982b21ec8a11426cb1b09ae2cbdc57fd9c16528be5959b4468721bfda4d16231ae4a19b2373c8bec4ccf5c4b4bd55348bdd246fd97b82e8be5338ff5b15c678d51178bc5136ae35b6bbd42d615028be51c628528fd39f78a851bcf2f61dbe93a69425cb1a8ba43fbecd3bc189d1c7d6890a454c13bde6b2b16f57fcef7339a5797c98a454d22b21d637e669dcad15749e324656f1587673d6af3b3548a2e44159810d2c63d978ad6b4c4743ce3e6b7856bdd1e828ae5b8f960ffda436f189d62d165d22b2b42fa08d79862394d34750c3a06715d966241a7d4bf3aab6e43474746c210428a259363e2e52711bf22be32848c6241aa963dcd59ed8c708d8c8862496b8af8ac35bc342d95a38f178f174d0e1446930325140b6e2bb44b072d1e3b4846464c484240b1305a09a1b3d37dd2499f58dad81cca73e6bae9d81377fcfb88b77c77ead7f6795c99eb349bd46087740239b1f8f1eef65976ce419a9b404ddc4848261683deac4a7c3c61f2e39858c7fc9bbec472dae9fc5ac8a426c5d32196587a79af52ca8c79955894b7a7be1e53c437586282f20215428925f3cee51f337f6b21954226b1385aab962154ce7369866076d88648c25b136feff9bc3b1b97f5e849c36a8e5a114222b11cfaec4c6a7f703fef0721905850192a74cccf863c6251ebd049cb9c4c2629104288232ea41167421871238bb841882296d7754ea7afe9c5a837283acc31d181c303ca06070280524951384e4c8a8d0a0080476ca4cf00384a8c0e448122a893a37698b42064034b81db5dfaa95e03144843474a0e1c24251eb091f491c3004a41e971520001a4713cf011009413950020a090f0301f01a803000210041b3800000aca192180000a1000936292c9c9c801003000072440a19853a98c8ce480062c9840004e546508c8a4a0542a360020803c408a42d9a1761860015048c0029e90ea20347d0e553b61f9a4e68c2e4c27e1ad95a84452044f2971410b44b080262ceac8e861846eec082d80094b6e5aa38aaa2a9521c95131d1619752e20215684a094909449691001165244024194b763abb9693c157d30b19071039c6c26ec9f8d8a9eaadcd1d6a47b3883196c73f088f95362b3795a38f77a81d2b528c048810230d1ec3589439c43e65464f72a0e810c6f2c7e8338ff2eb1d1e1d39504ca5f24b0291602cbe862e315d3f6db98e1e3b320422c048920a02447eb1fc2f548915dee568c7eb81b7439d24a478a0fcd940c4174bc2644ea54ab776189964b2a317cb23e76467a99af3a2cdd19724296890a41e95caa341927a684a0949a2544e4620c20b1e3bd00eb5c30022bb400488e82217ca2925243d70718b1243924ad4a9ec307980882d78ac5a9c100185163a7aeca8f098c5e98152e1218b944c85472c2ab03859af3859ae3821024a2b74f4d8c18ad3036515274b1525780091549454923a2931295180082a78f114bc688a2b850ed443554e16294a2ac9644725059d21320ae4b12a2122a2084549a5a4a2a3c70e9410115094548c6072c28387a91c7343e4139a4c7664a52222e20914b300914ea81483439de0c0612a4530271110e1440a4909c926968926f0081593948a42213127222299488008267818415d222563091d27555409890e048854a2841225151d27556a884ca2a4c2c3c44407c90e101149a812930a0a492512cc635578981d15941e2425ea989c2c058840821f81c76395907c88388279ac8aa5618446d811ccd230c20d1146e021406411ca6355145141243b4c524c74a0349088482298c7aae8e8b1e3002288c0e3b12a87584390a0f018804821088100914168112a272a478ac10101114168201010293a7aecf8038a0e1c15f403f601f9807b403d200244f28078c03bdc10b103d601e96004f5041199038688c801e380703816544a486c88bce170544a4044dc70840a4a8f12921d1514b58324a50d8b0d5b848ae2b186232440440dbc082292864583164101226748d1d16387192a293a960244ca80860e1c95141d3d76900185e486c818ce1011438848184ab292c6a9e8e8b12344040c29991422f28513930a0344bc707aa0d410e9424a0644840b29991a225be0b12a29274440398088167e50d1410344b27043040b67885ca1248d141e152bc181122262851a2255d011224285944c0d9129888848419590ac652a26290a1089028f55d16190c9098808144a0cc93141e605b79498e460062ea0410d1c20f284038838413d2bc9644705872a411f224dc0a14a50e578545250749c0f1126e8e8b1c38c1bcb28a9a49498eca8a0a44e6adc50c6b2abd6ff5f4df21e2bb8413216d7856d092d3a670db3c4e8a841de4046b3fb1eae5defbd1dfe1d63e136a6975aea637e3352683c1d6e1863493664d25e5b1b75d472f4114121523bb8518c65dfee332f11cad1875036e506319634bad2da4d9b2d55286730323232a2774ac73924253786a1cedade359c7a788ed2384971612cfcc66f2f99413c975495981c9ea0cf67f083ca0b6e04e30630ccd1e6eae4b64666a5c008377ea18c6deb46a542b7d4f6098660140fda178b2eeda5ae2c3d0d2bdfe8c5ba2df2a677beddbb2ab3280fa53a2a2982898e1bbcc01bbb588e9d746c3db99d36225d2c96d98dda2d2593d4ae5c2c6975b69ef7f9eb333770b1a4b453da9a5e1599bbf1c62d16f4b32aa1df715b2cba7833a94ce8a44e466bb1bcbd52fecb8d2ebd2b5a2cc9db86970971a9b33e8b5f76db757fbdbb74d34ce9e87a5c1d592cd69d9cefb89e0b3762b1a06368e9db4657952e582c4799b4caa8555fb1646f225a0b257598a75db118bb64fc6d0da5a5cf2323375ab1b8e2da51e365f2171d9e222b964de73c9476e18d552c6894d3223e2fc5e37f4315cbd9414f2653f26350d149c54169ec18434df757b8818ac5df9572b5d38fe75432374eb12cf52b6daf2634b9d2b9610a4b8d46ad4a084fe2d61ba5f0bbc74c6467f54c5ec5337f5e915af467e9f70d522c08971af3ba1e7763ca63140b2bc47850af73453049c1c8883fe1862896cb6c3dfc370fc592141f84d7e9903a6be10d502c6e87e69dd9f5a083fa134bd23466f8a7922716e36833d9a457269fb113cb9e27235c33665a297262414e8deaa830a536686e6c6251894f2edbd3d49b3aa52616eb932e17a5759a833813cb2255744f0819138cfab9e8daad9a9bc97c7d6efd2454372ee178aeeebaabab6a6a9f8c6a7bf4b72b3532fc871b96585675aea39c2ebd0fd5146e5462390ae95169c7a4d473f42fdca0c46294559af1d9c3d3689358d29f5dea3eb9d9b48777704312ead84955ca77b9fb8d482c67222272ae5eff9daa69654c357a47d70912cbf9b40e198486eb143232b8f188e58fae4428d13626f377c3114b2f4c7496199f31639e47b8d188652db139fbb6a6efca8c58b851422b6d3ea749a6c3dc58c4e247dbec152d3fd7b75411cbb2f5f1a265abd29d4cc4a207993953754773b88788253dae844e32c660be4ad4c38d432cef0ad19c736ed552ba0fc40d432cbcccda6307f1ad517b21967569107e67ae63fcd1c80d422cf68ab62524877d706310cba16fea39480ff6b8218865b1bb174a26a164c85320965f85ebac856a54dfc9ca057210830ba46064c4917003104bae664cb4cd7b68f637feb0f4feaac3e6bc520937fcb0f85a8978caafe9d1cf8d3ee42f1e62f7ed3ab87a0937f8b07c9a354a15cf38bea31b7bf0ee3cbf6b7f4cbc4be77b5c2821839251745247009a70430f8bd2f5fde5fbc4cb984e2928151e289b27293c6ee461b954372a4f95dfc0c39238d97e6e2664ebf8ba7187c574a63fa9bdce52de6731dcb0c372c8efa05f1f4b7ddaf420c272a30e4b6f6adcffb39291dca0c3a29f0ebf19bb653631de98c3b20e425bd4b3f00737e4f08b146a651207e1461c164cdba72c9da14e0a111c16f47d87a6e6abdfb16fbc01fd0f93fb9e77cfee8c9b34c70a91bae186256f79d1167ab63ee20dbe0d0ba321bf76a37c99d1a93c0a6eb06159e728942635611b94bb86259d6ad4c6a35ea5d433f84105e5861a1657776bc6cc2c1ff395860521e2d9251e47c372cc993a48e199a558f370e30ccbf7b11bcea3dc2075cb0c0b6ae39f43e79f4daf29c3b2cc1d57859bd2137adc66c20d322cc9ec954964d0d62e6325b83186c54e9b199aea4c3c4b0ccba54c6b69d3324cafc2b0b09f2d3b069dd3e71518165637e65ba165b8a8beb0fc419492fb9e83d41e2f2c7edbe9546b9a5ccb7461c195101a9a3eeb87cde2c2620cdd1fdbd3c6cb666d6139ea9e8e52ab3593daa585c5dba4294ccb7999b32b0b8ba7e241caa87cb4922e2c2cbd28fde93feb7651d71596a396688e6acabbc56585c52c832e3522b58ca15b5558161a1f4b9e161596356e0bd1327e43284d6139c8f1fd1c75f63552584eaa3775e7ee28f4282cabb04f315b3aea164161418815b9bacb4b86e6094b2b23d3c89b155a77272c6aadf9e1d65347d984657d76e742ec1b4c581a2563d62d4fa6d67a19cb2f4a47697ecd7a62652c29f7f451481d94ef9c8cc552a9eee364858c45314a68925a539772d531163b4d6c3bc426d951658ce590b317334266ac551563492b9d51cf6c549e42458c85fdcfe4faa4d430167c56c97ed69a42eb943096a394a9a412b261a353c158d04a64542af27bcc53c058ccdf2b65c8dcbb7153bf58ec0c9a476a7797d4f2c5b248b93244b85ad3552f96460aada498a9bf4de2c5c2ba78d2affbd6c56817cbc99326d5a1c5eb16e962519778b515e2bef4cfc572d02535bd4b2d3becb85816133aaf44fd73d46fb11863ccf4add5b6586ecf59bf2f1beed3b55896426966945e1b859416cb2efba9c64cea4873164b1a6596ffd5a8b1a52c524a6797326f8cc572a7f32e133d426a31c16249699d847ce9fe8aa539f1de129b6954ae5812fe52e4f4562cf887cf3a8a0ea96d562c6cd4b951cc6b158baa7396314da962414eeb78c25c8870a5542c09adb2ffd4c93119848ac51cccc7b489579da2532cb6bb8c72b2d7a5e8986239ab0b9db32c35623fa558be178f9eed43a86c48b1642e6569ad7122c31fc5f20719a34fc9ca8db928965b7b142fe5dfa9b943b1aca5e8c7ac518e790d8ae515427b92529f58d45b679bb4762df27a62f9838c7bea761dd4da8965195aab4fad4ffb8c9c58f2bb7733e95b3a69138ba9a2f5d46848138b4a45299532439958f220e6c5e6d329750a130b19b664b5832eb1bc9a3cbffa1232abb7c462aeefed162293d2bd12cbda4d6ca6d0f1f5aa29b1a441ab90b79a7fdd9ec4b22bf19b53d792584e42ead36ca7a316722416b44ec267375f88b79058129b6737ecfa88c5d99cff370ba9b5321db1a85489befabb11cbb226c243d3432691110bab3ab3f67bbb157111cb252eb6293476944e118be342cad33973c9f612b1e859776cdb591523442c9e7e7957da77947e88e555e16a2ebe64674358ebae9d422cebe9db397557a6b44388e516a975dbb33388653b4f7a4d275319b304b1f023a5d41cf118b402b138fbc23c367dd87c02c4b26bce3ddbee96c1f487e5f97f7db699930c427e58ee92f96433a6f3a90f8b29a25f1eddd5ac860f0ba3df7f1e5e4d64660fcb9ef5abcd55c2a3d8f5b0e863b3dad7638b93f3b0642edb4dcb33e9e1c5c372be0c21f6f15c4e7a87e5dba8debfe3bf99d40e8bbbb13ca7e896b1cb3a2c7c2aa5693df636877458fe28ff52eb367358d4329f7e5cb754352387656dd7ca4d6ac56179e583cc7b2bc3282d382c2829c56ba5ae372ccc96d96b3d32bb47b961e1f4beeecf274c85dab028950cad2efd365fc486c574e21e4cf5bf86e5f528353d7e352c6790796cc4ca18eaa76159cbf365e7902d831c0d0ba353ee886ed372c47f86e5f19c3b735f44c77d332ccad863a2c549b52dbf0c8bfb3a468dffd2847b4f8665bdca53b9e6139a5e6358923dba76f3c9b49312c3a277996b4e1562ae0ac392526e3a29cf76294f6058f42493277daf4d7ce90bcbf679f3e624439f1879614956a7d5d51a224da60b0b528e8a8e1ba2ec375c58942d56cb649e5929f51696335dfad7a8b5b07052eba03eed698ee92c2c0a2137ac6b8d7af7c6c2d28ab5d5aa1f6a75ec5758cc266aa6c6b5c2e2da49b1dafb1d855a85251d37c6f53b94ce492a2c77c7f432c7109ea4e653584cd92ed23346f5a7b914966df3f43fbdbfa756141665c97cdaf90f8e4fa8940d4663e26024140784a160281808215f3601231300001818221186c3a1783091866d071480035c42324c442c1e281c08c5a3914824080703815030140682200844410c4291dc482acd07447953bbd06c5217fb2f9494d7fb28855dc8026e5dfcd768a576e1b20eba3ffc5843f7ba9645433b5d5a1dfb9b9894069fa96a9d9a8d1a3845c6f42e27a51b94c0625393e514d550fb3d058a20c1493ac02b228972a31a048ea8330db47ba551d06ae61325caef7b84e4b90130c3df3b773a2b0d3283acb5f4aef6c20bcf7a8c2038bf100d5f543b05f6aeab15d82a128a6e1579a0d523465627ec58a47e4d6d17fd30f8f408c560d80ee3dde52d92fa65c441070473a9c6c554b51ce2b5782b9bc5fa4f6e640b6f5618d1f3f339dd96cef0ac3d8cf88216718ee4a68df54cc44c9833dc80cd5dda1037bfa50047271d09a7fb4c4486124885d6edf6c9510fa807cf20017e806e3e88825a8ee2aa65d733048dee4f98f815513768cc59ee9c345024b20c770d20c8dd3f1bc80f7933648ee3946777ee25587d0bf0538fc44c1302f72e7273b5d77aacecda0f1cf69447e408eff05d079f96f90b1042e2865ef1d5cf8dd0046d4c922d71bff697bb69d334727f022a66c5a2f53e5e877cd80b5e297c0ec50ede43ad696690c464b5cd439b05ca12301d18f2906145af855d0ec63d49d0c8506046b20b967515a8fc09058a1354c9a26946d6459ce239c25724aaf5e03bcd0a3ea38ef535c7eb90f2cec15f1df6cd0bcbcc934a380517a9f466ceee1f007d19ea378c8356121d3168274923b73c1a4217b15e2aff5c9adcb3a76b61c35e49ad3af7d2dcedbbd0a673a667cf34d65c9c6d7d3aa099bed2698441ce4bc344800d2f0801d47daf36edc9edd4fa6f2a53d54215323c416b44c7111f26b7e8ed5f987ab75bb9717b52ca69d414d688fb0963cb4312be9f38ce87a91868f41c0836cdb0abe25956f12c5ea605c621b7df56416bb5703e14c77d694402db7aebdb344f2dfa9ba3e16e6c220d5073dfccfb3d3d13cc0a76030c4028ca92fdb00f7006c20b2dfb4e37a09fce0d4c4830221ae7a4a0d8c85d9eb8fcc080995dcde538275f5c6170c63d240a5d9ced2ab6850ab366ca74435147be88ae81d8a359d95a2a9d2fef14a137d2ac2b2d3e68151d76dfab60acbcea222f255efad5070a295395821448f62d8cfc1c145465ce454760cb5519ab4ba50211113529700e40b1013db8352be10b8c05953af1e88e0ec3b32caa3aa8f4196762e337c7afbed3e886180c6e5eeefb454c401291a9d1dfe384d465a2eb0e7fddcfc71817dbc8b00f23c006a34d39d69b3322e686c244ae40384a102703b6c544044ca48b6699a02807c2800c1d426900ef41e0ac8d707b6a98840df9f6afce7ab66c447ae0940d69c9fbec4038b41caa8fd20e9cf11dfd0eb74237a75dd079c84f506c67791b48728dee78572b1647235673faaf3ef618653f4b09cc1816bf917f6cd7d9c6746fc48eb7b47ea09c41f3716682e0d284e75c8c991e51212c05fc705052b25849b230809db8585bd606475227baa753506a548cd417062027d7257162f07c047c435af5dc3751c2f057062e42adb1644d9e390b02734217fc8e815fb62a542682e01bc316d71dfe8db558de6567644fef1fe39c89d467dc8afa079e6cf872600199040ead56e1e0603a781eea5382cc461e25c2e25d999815cd8c81212e587683b1cfefc132baa7a0f1e05772266f12bf8584b293e19ec76704e692211ff00f8d025990be529266dfc6eec56958f9e5c2375d78a515f4337a8daf4cca387a8e0d64f0710f8c9bae81862beaa2ef8157c4b2bb76dce4336c009846378c9ea464adc8dc2ceb21bfdfb871a0d177502ff3d7089220fdef8a977c5a7ef8f0da01b39e9d6756d01b3a7ca6319842108e774241128a1b20b81096549d771a22c1bc13431144eb6a8338621ebe0a837270f15e6447aec30687df4411c2454080b1c5536880237087679c18ba10f512ac564c78afaa38f5482c663000b58c1044a4d087600aaf974b8397075f4e42e067383e262f405c35127190f5879a12c99d261183b67b3d6dc1e02d5ce2ec6d9b4f0026468d1086b08446be4bafde636b51940999600ec86d5aafa02dfceafd87357c5d48e6295f5b2a4c919ddb97bad1d7e014937dd1265f79e6fa35661ee71ccd27aaa5eea101a480f2c114609e6cebf3015763c609bafa6d477a877b928d9209ccd4a3855ef7338d56bf67d6ff81739ea035da04d4a89841e9e2e652bd4d38fa473aa5a6fd350df61d1be4463025506ce0450721aac8cb51751cef4bb1c114a9062b3a1d4f691ae8b9e5ee345853b533c1a6a9fcbec9a96a7e9de0af60ed0807fa6c067b8dbe253831285b45ae0f7d1ec0f6363475f9cfef15773c19cf97df1dda0971a22c7211947bf35d07f8b311497196759a35f10d8e3fb88de4753e21b5de3d5094d5ae342220930d2e1853a0f929f639401ab9a0a091948b32d8acb5fb07c243f930d5256c3706dbab87f994a9ac7b54494c03c5e30f1937e0fa68fdc0276fe09c12d74f5042371d051ef917ad059c94d635260e6bd46d6001c22961d8fb16aadeb4e071fd814106fe6576433341052a968cc8359e7de531329d97438b6decedb2861cdaf59644ad19eef2dede3b7c2f22115b2c4f5f6c04fff430cef5006c787ec482f23e85cfd3b5fa181fab15a6fb08921ad230a2a59234d8b4036fc5f2af3e949625ba992dafe4f9d37229957e94156293e54372056266efcafa678cf8a92a7946b94a9e0f46560e22320a44ee2866853f3f5ec46b78165e8657f1fcd0cc1e82d3e1f82a3f7157bb83de225743e0058511e58aa88e5ac2088631b27f65eb2f610ca8f4b3ebddf60ce2de4056ce75ac3b06c7e00ab81b0ec23570031c852b046776d8c568a0c4e6d21c36561d54f08d1f2c0a140922629b008afdcc0ce37041d38efff7f0383c0832ecade96f217544dc54b8c88dd6f2dcaaff76e46220f45e2befe57179208d4e2c132761e470c35a470a5239a328a0398e17f71d75c5b70e13e161782ddac324787dbc87c7f01abc1d0fe2357873e422d7042c01e2438ae44a9c01e2f69d7dbc9e768581c7d7aa4ddf32257fe8b65c51736c996898e35a7ecfc69d00882e9556670e986be7e61c98ebcfcd39365734efe3bcb4acf15bf43e1923af56d8c786131ed7f7684c09f7425217694db521ee1e89950aa3bb04e91abd618ece158efb383861e46d63aad48cd6077af29e74ad3e35d5581a95404556d4e4225f642be34bf72f7dc04d3f2ccc78aa4d0f3ba64cda33c4e978ada61f0be063bb24146b24bf1c964cd9aaca20770c2b5d88a704e7ee377553bc1657357315a19ec6022a3963addd6107408fe755795e5ecb0bc86bc58a1c8a03e7e7da7371aecc791867f6c873c7a00fd4e0ae356889d06699692dd1aa7ca277413da457a0477fafe46c033dce87d5b575ab0ed4952a33bb53ba33cba1e85a1fe32bd4b0dadbfa1a56fd7bd29570127011831ca71a53cb2c338391fc2a3735599bab63b14165049d6d3d7f8aad2a1166ab415d73ac478cc58ed7eb6d73ec1c9a03b356e951b1b822ee8e83714ddc1047e38a61114562954c3881c93283b432b172a43d5d42d65961a6e0ab39e6b3011f59c7fa541cc0a1365de771c0a69d991a8229e4ac023b3081a71a0229255f50e6bc87221614cb686892a51749455c52ccf38ba320d77deb8b14ea62abaf649bc0534b2c2f06f6f90f1fb7fad4e9ac4f8c8be9e5d5bc277662a686a6d8393bbd03aef2fc8586bf7ed8c25b00ea92cde7ab89160e767a3d5d5806746cf8f8e5a443e01e53340bb1a14b91e9de6ef0be250b53b00946a719fdd01bef5ad70e27b2e9b05aef1ce77a5d125c6a95d342473e446ed6cc4c1d7c0b5130ec6ae64e6e3ff1a49fa86967fd535ed90d036bf94eaad89f9e1a23231addb1fd134beadc8428a67305ed69f847cbabc272a42036ec31b12118e649480bb6119e87dc7a65b38b458912aae8f82b1018dcca4c45f01039fa21277b7ecf7be5bbb8c456dac431051f0628f3d94c54292a26bf5b31fd623bcce59ea8bf7495aed2574c89be369d4eebaa6f01e9d32c87dd6da039ff53b152b5eec0850b1f8f819e12375befcd6f8bed111d7eadd6b47a9680297bfbf92afd5cb29c875323bbbd0b32ae1d41e184bb1c5ac164220ee89650f69706100744fbd26b699ece60cb0764e69b7645d1530144ee021df8b6ec17f714df6f6fda4ed3954bc1ad2d78853af0fb8a0daf966ecd580c25416ac60da3e3b73d5e021af2ff34031c4f52b2f8139b285ef34a302e7529633ead27f8374aa2fad5885a92140ff60e180a6d7a1a73e52dc82e0d7ed53be07609b82e1c71eb8c713af012ad1331e379c6ec1f1e58c6fef6e918aa93aba9c62ea67687cefec63c0a10d081c2447b1373694b7f82ec76a1e1d656257b4d76bea7c313d3ac5785d61aa9597874333ee3ec0e5e2c0a13a2778bfaedca7cac602d12734e8e7ae3df87e3e86b94d41d17ecacce844f94b4e1661eeeac746980bd3df9651657df5905b3414a5cf1eeb6937269b0bf3899a4b9dd3d90ce5aafe4d696a5631676b78b89000c312bb37ddd7921f712f9c0a66e1a2b0099df92bd5084b763975a75a8dc2eb1919e55f7f7dcda01754b5a08cd98b04da474577c203d93249a21112e41748468459cf324e40a314021a52470c6a3e1c41551165e739ce8dc488b0885ff68169c3b0b1696b22ece5e37e03b876c8c37b6cbc20328582bfeb928ee1aa3e1f2312a91d47bf3abb9524b4f2dc2dc3fd07d3973b364ebd77902ad96310579a8a88886d086c9194b1848e7f7a7f8de8fa14c68e376427f7454e4b83f64a59f6eb6d1218dd8540a7dfb65060e072466d393683fed3c77c3cbf35e4a44ebac6974fbf9a9bfd06ab5fd4c6631da7fcd38ce53db6a5c57727847943c8c4fd915e75696b9a27053d23e52a245766516abb8dece003499f8da6cdab9a9515eb5eaedd8b12e9626e386e67c0192dad2921dfaa91624ec570dc7fb9adb1caf4853b519e341652587735814668b8c57725075ee113d99e9391af43a00ae5c4cdfcceba65787b16361c04eb068c7d34a2ae1fad11847db9e683b54a0c412c182cafaec049b8e6ce731327727fc6e22fc830da3c03c45d8161b9943ebd7043658461c5ac86880051fa77443cf242e2c4103f6968a5d310114ba3346661e1b4374f14d46ab5165302540369aa2581e41de618616980081a5f9803a9823ea03ad3b7c370db02ed448e8f8b567585aeacf015e22121c9f69b4d65e7f9660a6462b4a0b2ab8404f042f56e60a284a43cfbf910ef83d16bd402112130c22aec541002666e011777200af388942afdf0f379e2c1dd1ce46402cb0380fdaac32593dd5fa0080ad2f4645e13b003e07c963930d70c90eabb2482ba65c840e37c598eb19c30dcb2deb9f1326a19e15190709c47168a0b8d98a1be9da9198678d88aebe02ceb921ff81f7485fc10d2431446564991a25ab2aeac17db0b2661f27ccd1b59b12c822304900d6466787aa65ab52985b77c6309f938fd01f39adc69ba497d5b36812953d9b25bca095c2420a2e04e07e7e3d9be10d31df604c8aae92877656c101536f5775e04d85ae02cfbe5cb18a0031c80ea1eb2c658ce069571bcb4f7e4c660324786f24183b3f9d4b2952dd5c679408165e54df11bff39a51b867d1aba6e1b17a3a1393653f0f1ab14d0116ae3bb0f825e7f858f708f9e2ab2db8f1a1b0969b03aeed66ef4d010564e92d24b751c8dab675063849ce52b5c8da775e2502ea12e98f06385b315622f1345cf800592c96031122d8700069ae5566c1f7b6307d623cd7d1411cf13377dd9ba1a3ec4c6b9cb2b7235fa6e25e23c099edb810b0bd76de5e7965358164205f56d8f1d247d9cdab1d4f43989a218138a03b9f2fb665ea07bdc50ba49c18a1c92bdb4af87068d2baa9bb6e531d9e8f20b61bf013d6489d8e4fcbb9370a681f18e8aaf3aa6408a0bc8380e31c7dcea1bce91f60e062e4c681e484a7295096b8670c2495b9c280af8730239e5a117d1d089ae76218c4cab4abc19fe16e1a47503119d82a32a7118bc424e57addd1338915a5c637c5d80046e35886f1e34ebf08c114c654303e2e0b09130ae5b1b6a7242e4a379519c0446c52e7cc238d64d10153c12496a7a0c109771c9aa1c0490f6845effa9539bcb867e74f1fce7d399d1937fc40468b23c540831c42efcaa480bb04e7e605734d0c0254574eda08cf95f48c86a51a15737d0e6eae855d6b7a053a0619a710a055965d71b39fe0505bf8908071753de1911c276620c665482d40929629ff251c755acf4ea980271c2918e966227186892722aea1e87722dad178042754214c3b32be7580e043b9e30c2a5beefaa7bfd4c1b31f19b5357a6321e9868d45259b464e20278ad7d0c54dbf6d4c3f3f81bd27d1c9c955f98eafb0df5db5415ba8f7195c58fe74f16819046f3d6214664ace8b4090939e79269d5f8e6ef9815d4fda1ce23ef8d9c8e739d63d50f21680a1b3615d058a8bb90f12041f0a2a6af42bb6d6a4a94242f791fab050625fa741d56f60a58d70cb370208f4f420c06aec2b20d72afbc9aa4e61dc5fc0edb92cf5b2a96469ef184af126e29b264e5a77cb4347b427fe4bec6c2fc50a541f90ad0d69326c877a5fe881092ca69a2bc3611d748d503b318ce6c3c81860e03dd3eb71fdd659df884c4354b3a30360e4c1a48d3bd8290917655c78ad6725944358d905567175b226841fd1bcd300ec8160a0cb959a2919d2e2427c20f719fc4f81db688ec1332e874777792e7d8f1c56ff8b8c659977cc8111960a2cf8bc345962c7b58c6e6ee0e56afb2242adbc47738b3b28f0e80ebc1cf447c826358cf6190a0fed1dd999a22a4d642c2118da759bb28d102d452b9102692ab1c165f9b5509430f9c27f75449dc92f3fcc1554a03d47d7138fa9cc9a9a93389835f433e67067740dd2c8769bdba43ff63e45586992a6614771cbfab069c9c6b5b93509a0c9d32ceadf8a2aaf0e120470c325e2969068458ce3f7082c7945ed047780cccfff9d7d13267a677819849daeb1eaca65dcd008ba7e7ad9ab0caff5ec3c86d96ef2a707c33a6760350a2db30cfef75ad02666243c9ebf6700961e1b45efb44d51705fa47831a05025dac7a80a98aa23057446036bf2e0bff6f93353b0566509a123b14ff4b3d154548ac67e7e04016581d1de591cbbf36bd9e93458ae14e759370495640e1df9e66c289a3300135feecf4eaffc60d8365a8bd49f6983102ba3e83cc8cf8a14e30f4bb7fbb5e44d2e39555933e1e5b60178034d8200cb90ce59abcc4986eaef0d27ee93b65c6e4ce971763ea5e17b5351f0be5fcae5dad1b318412cd7437a48ac76b310ae45247eb670922270679d818650b414e6755c260923e889d0c920ca380be3260dcf743c5f000af57f50a3f4d4d07a1efb063b203d8021fc5eaffa5e55888c4efa53a5c94d62799dd612725088e9f91aa65a1941a0240a57710649cb1b03f30c1096eb005eff5a21e9036c2f58c871af0ab05e662156ab799c6bbac2ef56b951b481b7e5b1b796c3f19e7b8f680297869097d5f59d012e0017122284203352662a1f1b02e8d537b8a1dc604f9430187101bd23f1fa474aed6284980d77b2844315421e3f95773e509399857be109e82afbde5300b144fa38166f6f5b40148769e21ab0d70f097d97924afbd51e88a0abea55ff0104a9fab06dc5a34f6a3c424c7843da8754e23b6dd4790c856e669d244f212846ff0ed3d12a156efd2dacd2e574e5e7c411798a11d23e9e29f784596cebffe4abd56b949f01ec512ac957e03773c2d43f0b81896f5bb2544c7ca76184a106e858014d7d48e50fd1f4a99d437294f8b2bb64c6f6b35ce41a9ed02aab74b6103cd80e40efb0d7b75f03ba41b1ac121bf6a0064037f92b96d48999b6ae3b65ec27d22f9c515afe22bd2c68714a4a2be41eaa66e928fe6e27bfa59ca5a8c2c6a5b7e78a49af7b36c63e6bec39e8569f03b345f76b5908467d8d1bc07e1e3c7e45cd70e3e3b0799d19537afc174f2c22bbf90448cf1794014c60e0534fdc6b63a0e3812bde02a706f0dc4d9bc469c26417138c3a9c44faa6ed1e26b24e1ced365931d0a8f26dbe7a8356474eba9457d24b8d2d8861cf0de6df5bbcab99150db1ae4de13a017c75a4706a7ae313af8b4e75c8644e614f7b0bafe9b4268cc3be0f3cf528b4e23b2b3723351e8a947bf583130816c555fbde9c7f629019e7692e35c6530b2e2c4d17b66859142e00dcf7a01015757cdc2e8c728f5718378d3593528ccef1386ae74e562362dd85252dcea6f65632df6539eda71deae4dfeeca29b4516d5136d18286325453e4c4f1d4ff245485cf700e66404812a014d0aa2b646117285122172541ea2d2fe08f531ffe2af3f02ea384de7d9bc6ce6eeb1d1366219b944f52bd7ac7cae4f73435834942fe6bf18618663c48c66cbaf15c03f403b55ea480ecd3216132a5d706c91216986841e79bed3f12e275210a4b0750d3830397dda30306315b6010eb1c5a5c456f903b09e0837b93aa130cf884f2edb33b551c12d538d7cdf6f5ab0c704c2c49e3b9c66b3ccceba909ceabccad8545071fcc986e176f01d8c4c4791edf818b7b9ed8044f8a1d429b1c79c9065234866b2665033f70b0fb8411609c57e17da6b406df8f8021f3a53607e174e4a170412758994023925ce2c365cea14fb53ac20c05194aba9eab1bab59224b97508e252de63cc46ac0d8d58be9f6e5506c663d1a49c71072464dd8c41ccfb24a1e6214ea970fa668b4f3ae3d30373c06a0289dc9a8c29712620e9d706e8f10a5e5b5ce34119213d71abe7bd70623ee4ac48a69bed875a0d68504a0d3ef86281d2fcc220e38d2d75bcc0910b3ad4eb73743cfe6e2c066a84839fda9cbdd0564de26d521674d2eeccf110dc43923fc1afe3b6b4dd5e238270d2781b64c2b727b47d63f5250d563226b88c8ca612385971225960a9c945b922de5426afad218ee1d1b2fcc064840c3011c038d9ac7ee4783ca9d852a90682c1872622d68af51681de9183e8407912c470b1b70f418d8106456e163dadcb60fba8dee782cfee55ea4d44d08ab140d15b12e89f54ef0049284e93cc3dd35cb35b832ee189a1a20d8934c9d11c7ee4671fcdb0c2cf72a02b679e1b3033b8058f043549012d709c2e822ac966e52f63a70060614b3da0956b4213b0351216867ff501a6f3db9248beba3d17abf35307d0110e75b311f625a7c24e700ce8d344e67c411bf12498a26829cf616fc6af34bbc57ac1ddfde6f407ebf3b4c5636e298b89338aa01ab42997cb5471b7f96028683dcae1a15b325b7dc3d63a36120e6f31d03ba0901e857291570b0e7d34b96d26d9494eccb12bde303d12071659f400ef2e299d2b60d7fa3b485e6cb6d384ae38bb8641209f6110c5ff47f6db21399a4a038983d8d8525f975803102832a56db56cf44bc7105717e1cc132e18dfcb382ee7957d5be020b03db122fd3bb8ce079d241a250029378764917019089c62b35e4e92462c4591d9163680604ce73867c7c5d3518631423af7c8021d45d19a4344c0a0b3612a128595dd7d07d95a4c403576b0f5d6026e5244de5b09708a47ee106f12e27821ca75938b45f871341dd389a21155bdb2fe020da945fe763996238be0c497ff5083bbd7437e6be26b33a8fe7de92717b5247a250168b4f93407b8e204473b0ebc34b0b44c2a0aad448be919220da2af4127db82277f228002136bda5a0ad366cdca3374240451c6c3481c639de7c43830a6506d0553946bd31407f14cf52f288eaabd7728f91fdd7700dac48451337a2556747719188ff8174c15a8da62e1444a84c3937800838d4a91cb02f514c903159732bf9c5e8a55bb7401659465e1b1442f60d16095c7c82e51b32f2d6817fdbb33e427270a5cd372eabd86a395ce17334f051e1c193d69d56990cba2fa4cc835191df78154db9d3037b4009a0c451e0603fb3920c2fa91d6914f880f69cf312deeaecd9414b413109468dd3c589fa8cc1732f24e6f8540e6cf2c3016e0db3408e24de254c3b472e07a232181b940913e616c04fc4686feff704021557e1a33e1599dc6daa75838e9b2eebe144d333f31eb0d687648f6673bf4772adef478265828c431c7aaf3b343a53da88c1d5464da4656b3721303d1090de5a391ec3aa9e758be43125b519b961ec52b20f80669a78e797e02f22c9b079c2381eaa15cb355582271cf8fa90b6038583584333427c331be686b72f0a48ed707c6da8993a81a7045dff288451143ad0684c81751a4c7ca3bc9df8b2dea29047894e8c82e2a5a0dbb006e57cc1c66f06013487fc911bcd84bfa6cc1525eb5d351e8b3df5427a5c776e7e2746195ac2ee72f4ad256416fd43c14117a8de6d18db1c126d492eca8677d90645effa1919e249ae2473be0dbc37a13f76d82f4942cbf13fa4c8760b7f09f67234da1e388d9a43706810154e8459013fa1456d2e84e25c9d4d2300d0e8bc7c873603a137c31f37af21f8635b817078cd3ce9e9768b104f33440ea03f07ccb4c03e62df5dd65d485ccf3a89c4453fa4cce604f68043a15c9600db8abb833680437834344e017e367911421d2be49c22a0a5761b0c06641e40e784e1cee4818aef5f9919338b023586b09a298670bcc7a7d7ab7b73ac8b4d131b268bd1a6d03d06bf7b544a629d78145007b88078bbb587c3d3d3f5c2407f0f54f92f4f4f360175faecb9104345022f1303f293764231aa8e6ee5200f7b01809a96f7a4243ed998082865b976deb6b463e14ec52047ed09a43d6caf437a4ef1264062c90c30c380b6588bb63154e726a506902446ee38cf6085320143e77f1353a2627fa48e33c621076be2966ba4e0587b274b065a468847fa81f72df1c9728a8c8d58cf5dcb26b184ec696690a75cf2e333698a5356a1e14c624c9cae0db46a45c4c6c664a1702254aff48ceeee387d85d6b0e6e85fba617117edf010b3c58017524e22fc8d62ac302d322f48b93010314180026892f5c2471fe02e382ca63260b2d24da32cdc67280705b85b444cc4420262ae28e81e50c500e03818065f274a545fe82639267a02cce30803c839068b81db25a6d955ff2d64b544e0e4223785b0b815f485712ff09173e0411dd188f247324e3415e41d82ab9a8294f82137bb0748f5814dc0be3a14c1f7c2cbaae2b3c3859d1b5d6bca5c3a4ed1c86587ec3b1257fe0a80246716bd0101eca15fb9381417bc4c7362e3524aaa31f2d154bb01f01c4e5ba718a40011c1b9ddb56ec2b21544444d6a4f39b18b2eba7a40662de9466d44f8cca2d07736302b1592dcbade594d96b5e88b9d4d65b330a82db4e90403b1868d1b6af6b4d2a27a8b362bcad9faa8f3ab98416dd436556800bb27ff5aeb8da1a5b51e3dfc24499e58489a0db1be7b69e2fbec7891dbcd551d38cb7470edac51c84ae5c68774541dd3505208a8859716f8d1c918ca4fc535f1ba39e481911228a34c1c524d95587af23952103be65eb08f6bd577f123328b143734a69e992e190d235ca06bdc7bcb0e288420078eb6d4c1e47f10ca8bbe09231ca1e236eac325e7c204f65ae431e82984f344e68d21ceed44f156d4d4d75f5a14c79c2a7d2e105830d13ac3cd6e831382f68a8b8c51236876bfbe57705257b4aa41ab909e29ed4d433bd2b941a6b8f4707ec0e2420b0980919758ce87a01d102d3c5b7ea2fd83d1da1ee25298511fe93ec9e7df4c07ba09ba82f4b6f4295c03d3b05ff1eda450395216379c93f67430b5c8eec4d7946810377b4730b22e6882e5b7e2ae1095b489cfaa7f5e8e9558f03152f3ceff00f963cb943f31fb124a06744d8e2bf213ba942375d79d084f701524a9eb38eaa94b1392ddc78d5f59bbabab72008fd66668258db7ba218fdf0a78c4f342c2632196a29c29405e7dd74b91ef2417b4bd94accf0a3301a8d01d1c57e3a3dd2c69332ecc5d58135d756e15493a9a4fda0676f16735bbe15c8eaca644f4d9dc2c4cddcdbe4d010d4096a03a8268c3593d74b84fb96c85e68cb95080409429cd2868477f9b540c6015046e18658bc2a638b81ddee593e3d290cac18e17f979061729ace65257c1d8044f5c2b9510f18078e85af490bb4ac1455bfd272b964858aa0cdaf4a4340eb0bbf374c9b2668fec396b402530b5fc02a7a8a28e1108b1c4162cb7e833aa91ff12d25c5af82326629fad219bcc4ffd02288b1a830f5bad69186b3dd935e1383208f1443e98d6697dc96dc56169e2f36fd6e1cf09101102e20ac7019ecf7a41c3e5f3ce36d66278b70f1e72952f28cead5fd58e0023323a88db2dd45785bc960a1ad3dabb80d85af12de93494eeae452c776d7b31fedb53c5ceee264c1475614cfb8d401ba55e47346f427e6552cc4b6570ff8bcfce70c392c532ecc695d7538512e63e9104d89592af0fb4e01792ce0c9962f04e3037113a0484269336c0ffe7d239125a52a07480ea74f6b13196737e1750af131477d1f53975144b39d139e9e2ca7d52f2ec9f09a8f50b8c3c77b5fcf84f6cc027a7b785242aea8582403244d0b9235b9b9d2f618f6c5fd94fbed7d0540cf06bf67c2e7c95ac0d6d592ece0bf5a3be0f33d3d1f91d2550a77fcbc8fea20b752c42e722ec635201aa0dab75f35bbd60f49430056963a4c87de0394007a8e6a35e704aff37e17c2e0e64450774e28353627dfbd7529ecf2863d142c7f60ab9387c970a44fe4abac625cfc7cc3bc56d8e067c4f3e92f89a118bd092ad5cabe4f349a0abf68dedef6b559862f8132649c2a3abe536f46375070966172ecd85ee43bde030b49708c6ad454ec8bc6a3a735df97567f5fd38f39fd82c4e4c2d4b4a2c3d28ae2dc371240aea975b38a17762ad81715195cbf863357ec3c8b0abcbd5cc6aaf1965a2a5fabd1eecb5175d8c0210731d8e1ec075c46053b8d92b5dc6a27afcf57acfd57f1e9d0fafaa019d09a363e4b06769bf9e9656a677593dc799fb72f504a864cbd9bd6d974eb1a45adfb27ed5846d3fb7f7d7dbb4521f1f0a104add661244dfd228695a3018692246b90de949282a4497dcdd832008028034d88d6dc67ed376a5d7c3a28e476ea2c40f231b6979253e7c1ce12575dbdce976be779d2e28a9fe867131fc3aa642d10ada9385aeaadbed5c0b6fc2758384f9623ac0355b6d2731ac8f37d307835fcb342b8ce298b31b711e3bdc40660c6039935ed71b39330f78aa45085e32ab27d92129558bafd424ac006f2837897523e3876750890cca031a2a2666ba18c2056de8474c3a39efa059d5799e58c62951517d41d25e7818086486d8fe19402d2531db926df42acee589d78911b7a421a7ca119842df59a6e4f470ae95e8ce46ec250623bfcb68a9de6c2694e70fc62228d94e16d1e9ea6683671bfae8d73022bad01019b7e6abf0aaa6c458f50a36025731dfa922273a26a7fdb3984fa6a83e08fb217c701b4f83d44a07b9e95353c47ef2f2ef4e66b295b88e41da9f513f39ff632afa6de12b6349c67faec56f8aa010944106622896f7a9846806daead2b5c9305124c1d4bf9c7effd5afb848c4d985959b5d6463d9458356a284ea82083db568a36a896250e67f7adec70c67acdb5add76a4bb7c916081755c972b5de9d49552d77ded4f50cb3e74bfb05bfdbc95d1ed5fd745e8d6a3acb3a020cf3fc3a98ad0b558b4e9df2cde6b272f9a789509c47c06aa16034317a6a235fdb0939a1451ae91abea45cd35157649dcbe6fecf0c6168fd786138013b16899833b061adabd7c0df0965e7c637e7a414023ffcb2fd8f2864109bc5ad5c3ed8c931425e300318e5382bf891917aa004dc8c15aee47d2dc716442c838b0db170bb43f7e7b72738bcc1d59a6574180993a183e6f72a38ffb3d6eadcf43a3838650f3169a5436a112c28ebfe428a592b2f4b5b1a63b3ac66ce941c0430adb444c1cd7d0ed7e368b265783ae1984de14e6f40c3a4f5a9356e2061bbf3140221d90f8d6c29f305e593f2fae943260f44d245fff4a09cecdf44689ce9c1af914b90d36764d1707c81664f8e74f581445f7ab77ed36165c5612001391d45add306e708100ba0c27b9da7c528495bb1c2a2932010bba60d28000a95f0a022ce376f62cccd351d82da3a7bb9aaede8314ae6a7f417d28aa85ae26e47a8b9dd8ba6c62f39ac6c46adf4cae4382144eaddb974ae1d8ba6c6272410e2cbf7c429b7e558531b636e303a88805e3ae1351717311d04eea24d3dee61201291e94f7a07d083ef01dc541304a5ddefa5b59b042afa170f807871622342919bde15d4c4490740aace3185320eef535f2ab52fd162c78c5b5182304137c6b45a8e6906a42684303d630ab4d079c5f0dde93a74632bd06548f5e5f6cc7b1d44efb4d8ee8d966c21fd0fecaf898c981c334e4cf9a24ef537436c04bcf5622106ac8eaf811363a74b25083e35aaac6a7e1ea014a8178f75ab1257500bff4cfd0e4b0a4824b937b99224da97769d21160b6fec2f1a091bd2bbf7a5a43e079048027d2b4cf2d0d6934fdf24e8f6472439d716840ba4292dc413193e7c61a11fb0182891d275b5f78ab69908f985d423e0bf34ed630e3b114531f328702403a65787472696e7369635f696e6465781000000000803f1467a096bcd71a5b6a0c8155e20810308ce9615de0775a82f8a94dc3d285a10401803f1467a096bcd71a5b6a0c8155e208103f2edf3bdf381debe331ab7446addfdc40000064a7b3b6e00d0000000000000000803f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea4290800008050a67f2e65d5bd52196f5ee48d122fad4e7b9012096b41c4eb3aaf947f6ea429080000805c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429080000805f561594326291c989c065cf4770bf8b4e7b9012096b41c4eb3aaf947f6ea4290800008063a0bf4e164b2040ef0bd059844ecf6b4e7b9012096b41c4eb3aaf947f6ea42908000080c2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea42908010080c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80400000000000000000000000000000000080d5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea42908000080dc3f23dff283c3cb552a73ca1d978a144e7b9012096b41c4eb3aaf947f6ea42908000080ebad2dde00469f10ee456ffd8609d2824e7b9012096b41c4eb3aaf947f6ea42908000080f0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429080000005c73756273706163652d6175746f2d69642d646f6d61696e5c73756273706163652d6175746f2d69642d646f6d61696e00000000010000000000000034df6acb689907609b0500000037e397fc7c91f5e40200000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000ab3c0572291feb8b01000000bc9d89904f5b923f0100000037c8bb1350a9a2a804000000a11d1af5ef20e4180100000084e41fdde0772980010000003fdc5ad7fc3849be01000000c97ef69faa18a35d01000000fbc577b9d747efd6010000000000000000010000000000000000", "0x0b41d0c7f7b4485bd7be1d66066b00adb08109d3cf5cbd6f8beb07172cc16877": "0x01000000", "0x0b41d0c7f7b4485bd7be1d66066b00ade7d4944fdf6f118b82b6874b9956d7fc00000000": "0x00000000", - "0x0b41d0c7f7b4485bd7be1d66066b00adef37efaddb3fcc1d846a52891118e2930000000000000000": "0x71eaf7bbb6555794e25f1e91037c36c7526b2cbe53dd95a96ce78dd88d107461", + "0x0b41d0c7f7b4485bd7be1d66066b00adef37efaddb3fcc1d846a52891118e2930000000000000000": "0x429eba4dea4bb26f99f9dcf7895d662a714c074bfadd793c640b61894dbf0599", "0x0b41d0c7f7b4485bd7be1d66066b00adf16a4d4929cfe61f4f6bf4153bb44d9d00000000000000000000000000000000": "0x00ca9a3b", "0x0b41d0c7f7b4485bd7be1d66066b00adf5de92577f4cf0b74c4a24f84713cf20": "0x0100000000000000", "0x19bc6099459d33e46fffbc8449a0e7014e7b9012096b41c4eb3aaf947f6ea429": "0x0000", @@ -52,50 +56,13 @@ "0x26aa394eea5630e07c48ae0c9558cef799e7f93fc6a98f0874fd057f111c4d2d": "0x0400140100000000", "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90faed4eaef575446e4331b0aedf3af1258a3d7cd0171466cdaa0e615533bf37891d51589802d279537ee0ca1dcd7500e": "0x000000000100000001000000000000000000b01a416072d01f0e00000000000000000000000000000000000000000000f4ffaf1a416072d01f0e00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90ff8f7c8dbf8b1ab0da6bd1d0d1f2e79920e642365c10c6ec3ea0674bde84312fb8f26b9ee76fbcad37a892cccc04004": "0x00000000010000000100000000000000000044be7af43db42c3d00000000000000000000000000000000000000000000f4ff43be7af43db42c3d00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da91ef923637ea66cf01bee7ea6ea08e4e87a65d30c7b3606d16af154d852bc1b47152eab5b714ccc9e6d6af4e4a364b14e": "0x000000000100000001000000000000000000e038f8e815c2e10f000000000000000000000000000000000000000000000000e038f8e815c2e10f00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da92171efc85ee96dd122f3b2765b2b5d724a6e9105bbcbbe1019cfa1626a13c118e6f77912fce939fe987cbe6fd5704453": "0x000000000100000001000000000000000000f0812e80f655c33300000000000000000000000000000000000000000000f4ffef812e80f655c33300000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da92b52ea25f22ca37f15ba4b55494747fea44eff5faefb33ab41cb98d8b6003db5ed693d302430d285c9a8e0915df5fd39": "0x0000000001000000010000000000000000004c59b818366b690100000000000000000000000000000000000000000000f4ff4b59b818366b690100000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da931cee65b35d0b6feea23d6d6a6b35f05e8819ef00c0eb981957634ce31f2beed46e6206057485cda652d8b5664e5ab0a": "0x000000000100000001000000000000000000dc05274baef1f00100000000000000000000000000000000000000000000e8ffdb05274baef1f00100000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9328619bcd15d3a65e5828c4143340fef5408160bdfd98e298253355d60d54240413557532d97e9f297d18849c2848812": "0x00000000010000000100000000000000000000a1edccce1bc2d300000000000000000000000000000000000000000000f4ffffa0edccce1bc2d300000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da93ab039f243151a36f024ad1a14816d2e14682f9dea76a4dd47172a118eb29b9cf9976df7ade12f95709a7cd2e3d81d6c": "0x00000000010000000100000000000000ffffdf98b776a20c332cffffffffff7f000050b2517600c209000000000000000000000000000000000000000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da93cf7c292560b2853cd863055849dba959affdb642e45267fe134a281638b34973d04eabf4e2e419725ee4b9e8a425978": "0x00000000010000000100000000000000000060934945800ae30500000000000000000000000000000000000000000000e8ff5f934945800ae30500000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da93db2a7637882267dae62ddb2296d63f21c71e0c8615d19b0f973afc04ee767138e44b546d2294eccca2e4afceb31cb70": "0x00000000010000000100000000000000000040683bb3f386f03400000000000000000000000000000000000000000000f4ff3f683bb3f386f03400000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da93ed3bdf051aea0dd9d324e63d2d1fe9c3c13320415f16cc3713b95c4e94bf9e8ce08c765a970e1eb7f14f5c422819b46": "0x000000000100000001000000000000000000887e1ec84fbfc303000000000000000000000000000000000000000000000000887e1ec84fbfc30300000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9405d66e8362d05d2279a7f60ba93a27a867ae1095c920bb339b570004ac97121c989fdbdd3db3965908279b7c5724b49": "0x00000000010000000100000000000000000038981195528e960200000000000000000000000000000000000000000000000038981195528e960200000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da944d05c4c59c44805473b81294dc5feee4c6358a29ce86cd404342787dd9e823e1da6a82cd0bcc74f286d44b7663f2e2e": "0x0000000001000000010000000000000000000042db999d3784a701000000000000000000000000000000000000000000e8ffff41db999d3784a701000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da94755a560a6e7b022fde2ce4ccef2243c18e828e85cebd4c7684e15d2e1e0d0699b243f76ed457d22895cc48f3e3b8c35": "0x000000000100000001000000000000000000b46f320e4dfc0e07000000000000000000000000000000000000000000000000b46f320e4dfc0e0700000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da947d1e019255f155b1661cbc344650b32549b096144124726bba7b5f3518ae1229740be100646ff0e4c28c340bcb80239": "0x000000000100000001000000000000000000c03adbf8aeeb3b2800000000000000000000000000000000000000000000f4ffbf3adbf8aeeb3b2800000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da947f82480a4b98fd0aeeccb69bab9cf45c450cc0c6b232c68082436ccb0643ba45b6de77b2e5abc4a416aa7ea282ec131": "0x000000000100000001000000000000000000f012c7d5d2e31d1d00000000000000000000000000000000000000000000f4ffef12c7d5d2e31d1d00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9575c2ebe0e2e82acfe7764d89a8b379c302267ef0b206915c96f39d81ae769ac11637665be9e014e4898fbbf5db92f31": "0x000000000100000001000000000000000000f0ff5c9862e97747000000000000000000000000000000000000000000000000f0ff5c9862e9774700000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da95e52e5fc69d19c5249999ceb9ff179aaccd886be975fbb469f788aceac28cd295b7fa0e5c691b8e3fd780fdae59aa144": "0x000000000100000001000000000000000000083e85a67d9f2578000000000000000000000000000000000000000000000000083e85a67d9f257800000000000000000000000000000000000000000080", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da906ce21d37f174aae79bf2ea830b90edfde9b986aaf625c0c7017411c00a43f2a07e0cd75adda2240a24bf720cab33e1d": "0x00000000010000000100000000000000ffffdf98b776a20c332cffffffffff7f000050b2517600c209000000000000000000000000000000000000000000000000000000000000000000000000000080", "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da96b2d2825b131d64c2d46f61399012e3d6d6f646c646f6d61696e735f0000000000000000000000000000000000000000": "0x000000000000000001000000000000000000d01309468e150100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da971e68bb6be54305b43fb93f16a9e922d8912d71a1cbb7efc012ca9c4cd6b7300cddb39d77f088d91924891531c5421ca": "0x0000000001000000010000000000000000005cde317d8b560f160000000000000000000000000000000000000000000000005cde317d8b560f1600000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da97ca5649b924e4f7bc893244ea7d7289ddb5c859a44555a3852007f4778184309f12a02a22276c37decd753ed5f23e56e": "0x000000000100000001000000000000000000e8a1530851f1ed0200000000000000000000000000000000000000000000f4ffe7a1530851f1ed0200000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da98267d571cd2043eb6efb3c65987bf59adea39270c911c627c2bd87dd8d7f9665a262535de29d894d9a8347137fb8f237": "0x000000000100000001000000000000000000245c5e64eab4340200000000000000000000000000000000000000000000f4ff235c5e64eab4340200000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da989730c255c6a693ed024ae6ca098b117a8be9e9b93257140edda73958d7cd2c49ef796845cc8be9f56ea0829f413ee1e": "0x0000000001000000010000000000000000005c08172fd77e070200000000000000000000000000000000000000000000f4ff5b08172fd77e070200000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da98c55579a256cc8aa3de388477e3c2f10aeea4fcb658f17b2c6cd1fce911866307e614dd49c7324eb9ca193ae037d9c0a": "0x00000000010000000100000000000000000008430d8299710e2500000000000000000000000000000000000000000000f4ff07430d8299710e2500000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99263431d73699db702329a3fa227caec2e28436ce437f5f6705fade3f5986811bbe50fc6a78fc7cc3896d5a09a142941": "0x00000000010000000100000000000000000044b736b7a529a40200000000000000000000000000000000000000000000e8ff43b736b7a529a40200000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b2611eca3c4d08d1f96a367f02e7ef421ab54e6f4b40816fe44de8fe8933fae4cbf7239428e080e6fbd92dd6c6bdcb2c": "0x00000000010000000100000000000000000060934945800ae30500000000000000000000000000000000000000000000e8ff5f934945800ae30500000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b2790bdc65df4f43cd1fa30327e0e4616262eae57cdf41aec44acc93f416bfdbb6d8a1430ba19b779ae5c98d6b7df870": "0x000000000100000001000000000000000000ec34fd932ca5b30e00000000000000000000000000000000000000000000f4ffeb34fd932ca5b30e00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b6ec98437c6aeb030233efded28ca4eeb621672f0d8be43b4dcd16aa2aa034db3fe3212b9f46fbfc26668426f9510a65": "0x000000000100000001000000000000000000f02aefa40978832300000000000000000000000000000000000000000000e8ffef2aefa40978832300000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9bca32e4c2881d806c76954996916e56540cb8e75a9a1e766c8a6b551b635e513a16cbb8f4d9aa13936254166e4de4018": "0x00000000010000000100000000000000000000a316aca2722c5d00000000000000000000000000000000000000000000e8ffffa216aca2722c5d00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9bd8f48d51b9726ca4bc2073ac23559d59ac654f1421b1c97b2380e08e297bd16281bdc486be24d970b9a5804e37b606d": "0x0000000001000000010000000000000000006c76ee08fe69d30300000000000000000000000000000000000000000000f4ff6b76ee08fe69d30300000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9c6468891467af33e5ed0b214c64a254514780e5747055d126e0d809b1f504def7e67f14c6256012ff2a4965f5b95661e": "0x00000000010000000100000000000000000080f64ae1c7022d1500000000000000000000000000000000000000000000f4ff7ff64ae1c7022d1500000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9d8e3f5f6e0e7467fb94c6f63e03209d588a7d9e994528a48574fef4fbb9b731976760ca7a97358a38734c2ef04475909": "0x000000000100000001000000000000000000bc1bb190e1568717000000000000000000000000000000000000000000000000bc1bb190e156871700000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9daf780801663f5988ea2f39ab617da297a8c2df3c7945888b20fcfc570c45c7db18e20c9fe57b66b0071bcbbfde10e60": "0x000000000100000001000000000000000000f45802b1aaaeb400000000000000000000000000000000000000000000000000f45802b1aaaeb40000000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9ddde0c79d5570b8684a0379815fb60c6127661e3abe3f347aa88bf2cf09545f387f03438e8ef778fe0adf3bfc61c395c": "0x000000000100000001000000000000000000784acc5e33a8b40400000000000000000000000000000000000000000000f4ff774acc5e33a8b40400000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9e10702f089fdce41f89785cdc64bde8dd46827949a45e460ad655510b58be8a03079eea740ab57f3cd8adade1de78935": "0x000000000100000001000000000000000000b46f320e4dfc0e07000000000000000000000000000000000000000000000000b46f320e4dfc0e0700000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9ea7d4c5edeed232ba55a698373b8749c146459b6f23d9ffa4876ba11293be2dc849cef7d5aad3c583a5526764dd47a54": "0x00000000010000000100000000000000000040fa1001fa55e14500000000000000000000000000000000000000000000000040fa1001fa55e14500000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9ed8dc744f3fa96cc08a0e88c2ec81438a02fe19c7b04359086a7753e0ffb918f3b8bdbdba1ef0db8fdd50f42e14e202c": "0x00000000010000000100000000000000000080f64ae1c7022d1500000000000000000000000000000000000000000000f4ff7ff64ae1c7022d1500000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9efe1dce87a8138c87a9755a192d55aee4e448bf0f6c08e0443fd318476062713c3b84e1f0d3558206777991441ed0a1c": "0x00000000010000000100000000000000000000ed95c28f055a2a00000000000000000000000000000000000000000000e8ffffec95c28f055a2a00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9f2300b6e4e4a41213463d1870331bc97b089c0020178b1025ab79018dbf442db463aea6b55feaee7c8500e6373a40c3a": "0x000000000100000001000000000000000000801af67cd4a00e3700000000000000000000000000000000000000000000e8ff7f1af67cd4a00e3700000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x14207375627370616365", - "0x3a636f6465": "0x52bc537646db8e0528b52ffd005894fb056e6fc8a11a5210686635e940b414be802c32014410d0940e0221404b69c9de50d4bfda1eef0e419eab882a2aff3fb92a36a9ca3d236d65b6a356852e905197206fd9245d467f2fcfcb2f5fefeb27db0821d20821646fb9651e1d46187b1957152937eb7b8ffce89d56a343998def68d08c7565237e7bac4499cdbebda74df409292cc7902cb137b4da77b01c13011736ecd68d30cbd7cea0101166398ed96ecba0101cb3dc67b7f8dabf6ec56819acc155a01eed1b65cb395a17a70938ea20e4d89116966356de43dd6eaf2b50bc62e7bd493d066f70cc76bd3db61fe9fdc13464058a57ac8c9fef91924e7a2368838b60fb92b2f57e308d1bed0c19acab421f4c832d9f250fbbf81008836afce01dfee51dbe0ea9c3bf1cb37cafeb8f7cbfa723f5c13466bdf23e7887ebca465fbe2feb8f3cc72c5f8238b80856fae01d7e4f1b75945278973c4ea0fef3762760ae7da7ef84cc4f0780bc134fc4abdec359f23821535f2d973377e2e6def99ce4714286133197395f25799c80a92f98a3509761398a1ee62f98fa62c9b9cc5f30ff8eba13b2be38ee617d85dfe45fb2beb8fa44fc8bbbcd590e9e1f4a1e27bafaeade7d4fa6beea379cc7786f97f9ab2f535f59f6b0beba877fc9dcbb13f333f5954abda5bee44df5653af5fea2f7ea4bcabfbcafee1286ffea2bcbded597acaf9a770fe5c3bfbe87f595b9fc955de730fe0a0fa3be52a9bfd4d7cbb7ed36f595b2f9cbf672187f6d87515f362669f39729a73ec172a92f97bfbc7ce5f2f2528fd375b7a9e93aaf33d117191816196e6dea6024e7bd64289a7dcdc9b0a09aa35b28c36e7bf1b20f460686a32896ac3399a4176e2f2c5f0863fa6458b6e6ba43d1ec45662f32928ba143e8358a7adf8105461723868b8c274d3a3a7ff575744c3030f5ac903bebd34187bfbaeba003dd36d4eb75beee3a198bf5173d2b068b43bd84afd74186e53a7c87bf60be838ece5fde7560e87c87bf4c598c181e7d3d2b7b39ab63c488a1c35fdb75a8af183158e4778001a3e6afef35a6d7ebd8bc06076687ebfc25731d162b87c3a82fd671605ce7afee387f8535e72e2e2df3fa183535c7b1b1f9ea3538aff98be535dc639c87bf50e721caa0f90e7fa1be43cc39ce0ee7e12f98e3fcc55d874543534fa3739abfe869e25fde690e63b53a8e4d7dd5d457cd71beb2f9eaafefabf857761867fd159e157388f1d7f618f595438cd7facae1363667fd255fff329d87fad24187e7d4d7aabe567771394d7dcdcc7c555f347771f9eaaf97afea6b66f599bfbedac33af139df01e76b794d7dcdd4d7cc6bfe7daf7f75aff5d582f3fa975787b04e7ccb77f8abab4bb04efc0ef5a5437d22ea7887515f5df7547da5eec1b8f797a91ae1d557e79da6beba7fa67f7fd14a04ebc4d3fcf55215c03af1acfa8af1f21ceaabd6573d0cfa9cfac2f96b7db1188cb4018b2b2e48c3098e5c140a2050f204379881054e40c1e5047d8f4ce558279ed6d7eb612ab34efc4d65a9c3b7a991394d7dad549fa92f2321f0600c4a526860832c84e092316ac107ac60022354a10d52a270c9fcc55255ac132f535faaca52a7877a5996ff42d59075e2632a2775f8307fc9ea8375e261eaeba53e115d4eb03c555fa8bbd42764b89c906fa92f96d351f565348326706832032b5e90e10c2ec95758e2810c4cd0022b466883cb0979d45f619dc13af1a8fa3a55963a00a87786e5bfb62a8375e2c1aa923afc57571dac13ffd597579f60b99cd0ded557017e50451972e08514966ee032d527ee72e2a6086be881155638e28631b89ce86f7f7195c53af15b7d6995a5ce4ebd322cff95d5b34efcaca1d4e1f38d64914eef5ca1f14010c5f21904c113f9774b5eceb05bf7565e3ea75b9b954f354fbb64ec481756feeb96dcece5c1cacbcf6ec5cb738ebc1e472421c78c508923083966440bcb96d5adfba9ba7559b6dfe7a15b9bedd3344f74f5c36e71ccc815b69fea563ba00a2678876d4f7fdde2f76544293ce621e4c7b3c9b31c6b8209b7c7d6938ff2c6281fe57f22c707cddfcff6bd49a395b46dac3f661a5cb76eb4f27c4f00219fc12164e5bcfe269556d269bf250bb459a2969327bf49db4a2a2dc8348222cc02056189b48f6904c52996e8b3f17d06714c58046d84301bff316823c26c7c4fcbd848f0d872ddba3331a008fbf157de93d487b02f71f47f64e59ac5378a31011e471b841c6b0289e5d80760f6a26c3f0096634c60613d14e7dcd0f6b95bdcaccbd9fee52c9f9b875ba7cf67704818cf31d891edf734774bbe3fbbb5bdcf758be5b77b1b8d36829bfc8c03aa80f10e5beee98db2f5e22729db0d94f7241d8a403566b3e66d84563e820a602bcf608daf5931abd7c866dfe8e5ec7649af3c376b7b8fdce89df6ce0f49ab9dc11ad97bdaf3181c42ab775aeddc377a6fb74b7aefbdf2dcacebc36ee766dd21763b37eb2e61b773b3b6f7488db295942d47815e567ea397c6ce7bf1d3285b49d93288635af99eeee98c02492b3f29372b9ec11ab2ce66c5f7744ff734e774fd092de3186d5196c0e39c7b1b3fbbd5e773b7e4f94dbf66c57bfc4318362bfe6b563c8335b866c5f77400c29bb2f1f2f397b3f1aa6ef5e3bda6d1a6ba359bc58fa7e9563fde8b5f53b60cf67bbaa72725bab1424656d6d50dceca7356d6d50df979f95987a2ed7bfc43c8962d83b2de68bb72b3f83dcd39b1fedc328ed18c118ac7dd9ae773b7b25fed7c2fa37d8d72d69bdd8a963f69b45efc26653bbb35cff7225863568e2c0e10429266b1edcf38a00a18efb0f5e23769b40cf6bdfe98591c2084a366b1cd3e13038a507bf67909d69895238b038490a4596cfb19e566c97bf29b34da06fb0c6a956b967c4f335863364bbea77bbaa77bbaa7195400db3e8335e27b5aa3d36694eda4d11ac918953ca611c6f33d961132c8ef6976f138e7decacf6ef5f9dcad787ed3af59f21eff1086cd92ff9a25cf600dae59f23d1d80f0a6ac7c7cff72565ed5ad79792fd5add92cbe3c4db7b2cb7bf19b942d83d97bbaa79b12dd5821231bebea0667e3391bebea463fbe1feb50b459e566f1278dd6e31f42b66c19c411dff5f6e37b9a7364fdb9651c2319a3103c8e48428e315185bd9ce587cd335d7cae5b1c835161f95fb7a2e5abbac596cf395c7f6e19c728461a1e672c5fb354cd8acf2cc760309b6a563ccb781e338b038470d42cb6b3597c066b70b3f83dcd341eb7c70408e3f96cca010d710a48284197c3133920c961043994200712c068430e21809106186e80e1450e22b081036502061518508051050618a80b607801c6176070917a722a4fc3bdb09982f34567d12da1a5a092414749052165852a29270b3956b881754a3a12c03c01a70d386cc079830b18726039463a29dd183a317461c0a982f385da2455454a8b1416291fa496908a422a09b5087508b58a2a049a2f7455ba2e5423364fd02bf408d50514151c2b3669a02aa027a02da02ba029a04b68d830d3048a020a025a020a054d2293a02a026581ecc14c435d810a0a0e1652543410562fd0a2b049412a0ca81fa07870f3850c1270d4f0286e945cb6b81337f22672567043e5c60a382bb061834d1b6cbcb04183cd1a70aedc24d57831e3049a35dc3041436073069b259c3884466e3ef0828403876dca0d086e9ab0b15273850dece6e8e6899b296e90d8c4a1a6ca8d1330a6cc448191051b35dc1889338852d46091fa414a06363fb0a14236c16607ab28640a6ca6b081c2e6043626a83143cd17b5055b106ace50c3859b2adc5c6125031a87ca44ca894c08648e5e70e0520506166aa0a8515203029a37fc0b18a59a13d058a171c3e300430bf109334aa841418d132f56d41ca9f9008e1b562da081c3cb0b563ea089430dacc6042b22ac9c5093821a26b433d05421a3018d94550f546ee8944091ac80b082b2c2c12a6935454e10727a900384d50d727c90f3831c282b29e81b643e20030219242b17ccb861460a334b987983cd17374f66a630d3869928d00fcc6031a3c50c1566a0709b0a33449819c24c15f10a1b276a13291ba094509fc0c9428d520d13640e6a08ea91c481d4814d1732526a9a2053039926d915324eb415c858212302f944e609191ca462a922c8d840d5865f5119a195a04a428fa848a012818d1ba81336576698f0e202fac44c16aa275423508520460a31518881428c52cc135a7ef036c0a8c2dfe0f28599180c2bdc0a0c293346808902e384992b60b0b81b66903053849924c02001670d3347a069430c0960b6a04660ac000305982bc070013305982c60ae984d80d1626601860a304a8039024c12609800d3049825c04821460430ba30b19858a04dbc4441612f30381c5e68d05f90475257ac66706a436a0af40b1927524e48e12087062910a49470b3458a07dd133223509920d583f6c2aa490a0a85c3b6852c085d13a91aa446e012069731a490b888c1e50c54042e4b344da0c182c60a9a2a68864043049732c0c4608ae0d245f881140a524a5250a484909344dd90d324e7063935c87182a382d40e68c080e3857a8215d2564565414d9251f2307c0c55495d526f90caa2c220a5d46d515350a1a824a825a82aa849aa0d2a0db229ea0b2a0a6a0cea145952f6244c036d038d155e4ed09921678a2e0639334821616b2227071549ca085d08ba23e448512345068a14145c9c7013858804172c5e72e0129369a2060d3224a820404d71728304814c0970b8980102ce14a408563450c50086131c29306a8073859a27e0289149826385d4128a89cd18503d903181cd126a9c2093831620b4f8a0850a96292c2e70414267646583d009aa8b700628348452a0c8803a036a295482f222a606314e4298cb155cac1032110a21ac220c4238841008a11521116cdee002059728b828b948c1e509a8275047a82b2f44402da1e2204505140e564c6ab2a848a8a4e986ac0d2920c8a38d0b384b6416a82dbcc46e9e309d646e40d940a3521305d50fda0c92063656380faa0c72baa08242429121d05a50d3061ba45ed2a6cc8ca01e8161021c2a5c0759948e8b1c2fa082901ac2afa835c049824a42ea0827420e1a72742091a8542093854e063644c0a18203864f41aa2045849aa5866263c597ba0c1b106cb880d10349840e063237484d91b354c3868b21c5845414b902992b4e050c1ac81c51e12025856fa17501c70ca929357048e9a0ba001565e5e454b815da162aac7f2097ccc84063223fa0a920f422534235c163d589d40d64b480a24263c14c08524dc0a94257059c259913682fa83380d1648604334860cc00678bd41364a64823558a1a45ce0e6cae503f201385b6c4e6480e0e6028219594cd20878a4d12be831b29324fc8b1810d0c1a0d3967a881020c2c648ca06ea04241750223094d19605091cac10a06394f1a0caa13a8525099ac626013d3b800c307393cd8ba9001616606a934ac6a50e3861929aa08ea083a32744b938ad9a4d34207866e0a5d133a2b7453ba2c7457e8bcd051e9b8d06da143426784ce8aae085dacd3414745d783ee4997830e079d0dba1b7449dd141d0bba15744b3a15742930bda1fb4097a42b414783ce04a62f3a1174475d149d13dd910e8a0e051dd244437702931bb62b6c4bd890b025618bb22961fbc146840dca36848d8a8d07db0eb6a4cd06db14db0d36275b0d361f6c3dd890361d6c4fb61c6c4f6c475b0c36186c516c2fd85cb031d95ab0e16063c1b6826dc9a6822d051b0a36251b14db0936136c49b6126c4db60fcc1d6871d898d860da15ed0b0d0bad091a13b425685134256849d090a0a5415b83a606ad0d9a17da1434366851d0a4a0b941438326064d0b9a0b342db430685768566845d08ea01941c342c703ad8a9605cd8af684f681ec0d5a0834146469c8ae6470d04ca019d19cc8bed098c8e29079a1c1b4146850c8276848591432a50c8bac0ad9133224644ec8b2c88c902d218b6549c8a6901d211b4256454684cc8a4c0a59113218644a321b6435c85e90b1206b41e6828c4996830c07d90d32a42c8aee0b99910c8a098659657e616e31a730bd30ab30ad30a9309526172695296572319530b3984e985166122612620de615afc984a8841885039308d38a0984298489831984f981d9848483fc4272416e4152414e414a412e4146416a21ad90554c28310dd2069306720759137206520a8924612063d081409a403a412a9128d04e20a1d884204fd061415332dfa02dc926a413f289e983f983ce426b014873d157682b7415fa09dd844e421fa191d0b5a0af6828cc1eb410fa49f7a07dd045691df40e6219e21aa219260f2217a21662176210a2108ae291e8830802211e8834302a1297c4134413289104123e3d2830812376e8c8c1430318b880052a600411381ee08006d89e2006302326a1879d03f0b400c025c18b966358c5d4d24768c7113986ecf0f191238717658f203e397274d40a0bf928b123488e1565030ff908f9040dc931e493840c5d03f700f283c81143cc5035b090900f901aea850b4d03a3815fe819829450428906a0e8120c6a062484080922a207911d4142e8d032d85032b010109f204176f8e091a3c78a76c100a063600eec00e213940315830e340c955661219f2476706007101f08c85030b0cfd08e1e4388e41812fa016403423bd02ff80805113244c82728c712428e08f22306f5c212428e182222e48652e11e6817b8522e708f1f407608fdc8f163886d000edd828fa12482f80099226448876a818580fcd831e4d323878f0f12316816580812417ee4e040900f11a01c3f86d8a1203e4a70600711a758601f1e4184040922c401b68672d143080f9f1e37f40a2cc4019f9f1c42397c8676040971c0e74610213f84847c2240a915b8d22ab0904f8e213f86581f2035827c7810e921248808d700a81416d28388d016ecc323c80fa11c3d7c7aec08ea3184c80e940aecc323c80e203b8ec831148488101e3c76e4e81184081231e814d8270891a02139840ce54822c88f1e417c86e408f2c9d163c71139847e68c13f3c840011f219da018445a5c03e3e48e4f019e2c01138340aec4368878f180a852482fc0892c40fa11c1c3822478f1f3994582848c8d08e209f21429ec034340b211f2770904f0e0e0c0d51c22747102141b068020ffd5082093e4a04fd402288101e4188e41812f2e90144080f74091ce47384124482f4d8e1e3230afb0ced1812ca21f443c827884f123554094b0ccdd024f01025760c09f928f163284591c03e3c82ec1812baa157708f177a04f6e921c4861a817bf8f808e54822c80f20482041c487500e2d020bad688c65a8152c0484081242423e3c78108141893034e4870f0f9fa04a87c03d7c8224f14328089104505a050b0d05d93124041e1222727becc8d1030811213e84583408cc019f9f1c3c7e003982c8901c4342800c0102c750282c14e4d363878f0f1cfa83a1203e4a24e12364437dc041428678f808f9f0f0f93124c7123b9438ed01fb74e087500e0e04091912fae14345a9e021a11f407ed0501ef80c0921a27407433b780821fa4104c827c7509090213e4132a80e58c82789203b8256f4090b05f90cf928b12368c7901c434286e4f831c4466086e680857c7c08edf0d103079c44901f4386ec502287901c3f8658a1211e3ef7081c3168126fe0c7101be4f31324840238289d827d867610f121f280227af82491c48e2276a03760211bb0d0690d82fc4062459d3007800c19b22347904f0f203f88b87e780801e2a2a14d586886d28077e4a0a1336025760cf93480854ad1811f4076fc18fa11e4c70b9501fff068a131e0202108f8a4172c320dec83c7d08e2372ac241a5ee41942b9d422cdc04974e02787cf1091214a08e10123cbc043880cf908e5e8e1332444246828478f1d4280b44832f050101f2592e8c04f0e2143398e1002e408188e3e408ed83114840812398678f804fde811e4478e1c3247cc8860cba28a24968d3c8ec160361a49198d5302a78438246e33cbb2cc2573c93217971c7270c966b839a727678c889a72729f36c37594d3e4cd1965b7ccba399b73ca9e52c6d8cd526b29e7949d6973ced91e27b5d698bfee96dd53d336debccf93ddbc798d6ab03963a9ead60104109299058260e780510373000006380590034313008e9c6094389bd69b94cdcd1e87cc8306d80b739865cc5a366b9a26e364adb9254b29a594d1344de3ae5b46ad35e60c48666ead9ba5c6dc7d83c3c1e038199959b2e43eb1a6b18a356e9a1b0c748cda4dcf0b7473739a4d5b40b2ec4ffbb429a73635ad5b93514aa9496dce4c032ba04d1846641a6b1cc7f50f3c65cbeec98d9235dccde0045193595240935c7373dd0100354d63699940006277d4340934f3d4322dcac91c37d719cf8ecc5a36398e526bad5bd324286577ec29354d93f2d3beeffb4edff77dfd15f17d9fd652c6d91c81d81cdba5bb37f68125b329b6e665f1eb1825654d632dc6c85236736b5af43acec9dc1325bbdbf3bcd0f33caf657bdd3da7e7711cc7cd296736e5e426d75ad434ced3babd0e3f2dfba2263b9b5e737332462d6a1917e30f72b55aad3499699926a56c4de3ba656b1a4f9eccdd2d3596daec66e6c82db52c6a52c6936c6693044f1d65cb4040d334eea869ddcdcd6c7673b265a4a6f19c93a7945be48db76ddb34ee189b23336fccfcc226661f4ccc71cc71b3648d5b6b165577cb6e15c77437cca94f7d3a75778c69398d94cddc658c516a992667b3c83eb13c40661abf44163ec5c4bc48d9a796379c24625e4e9a18161c9c8c1986616f91a379a19932b84b29cfcd6eaeb5cea6e426c7711c27b93951a88942cdd99ed72de79492937272dd3df430bd9ae9d5680ef0a6d438e6daf3508daad1341b8d5193437953b2440d00dc00160680acedb076a3657326e7cc3a9b373363ee4cb6ec29579dd373016dd31cd75cef344e733d7b76b70d6696dae4d9cc7272cb99c9c952d36098a716a79c717ef293dd9a763ab58c3cb7d99b27a5b6712d4d5c73373773d63286d4a4f424cbeeee5333377fb27b4ac969ddcd99a671ccac692d999935668d3d664db2b4a95a9c9233669eddad802126b38cadb5ecd6322d8b51d33453a6691ab389a7d4322dd3344dd3ba23c79a043514c75c77cfd9cd5cf320448cfca4c7b1266b3ca9718733e10c7f6156e3cdc9c91ade9c9a6c4e634d634d931a4f4d662de5d438f26495c61af39c73b6949325f3943d59f3b83596ad791e478e1a777337f39c3c993936691a33b39452ceeeeed8cdddcdb2bba34471b2bbe59493e764e6c9dcb2656bdd1d356d4a962d5b6add2d656b34cc5193cc9a96695acb047033eac0690870699ac64d6dce39b56ea9655996855ac6a1a4ec969299398edb610794a6699a96693ad89e4ccbc2994c93ac05a11d609371ce28e794d39b32cea9b1c70658691ab3d69d9da62c0001663250cb5893b25b632d6b9e2d378db97340430e5ec8143707828428e1a384b66368478f1c48ecf00132e493c4017cf8e12104c8113e3c760c113a8288f54922c82789203e42423e4a0c00e60822423a3480ece0210408eb8720219c8e7ff01112f2091aa284101e39827c8884f0f009cab143a8070f9f1c3efcb480f861080f1f211e9d01f80004103ff4f0c921646808078278e0d417248688d4f8f8c83114e447d0901c3c847e2841c3d2c327c8a74790901c2d207ef0f91134a44354c2867d7c8290c811246468070f214080eca059c2a7870f1e4820214400ad9a25846c60c8e667070f1e3e3f2d207e78cb8c1f7cc8f183cfcf0e2047e44822c80f1f423b7c3c68c790500c192119ca3f08111234f3c363c71140800809d261003b7c8266608696f0096203e393844c0bfb203424f463091f9a8dc70ea1203b8286720cfd50420921ac257e20e11334a4be04edf001c2632513c467c8901d34261f221f203996d8a1c48d2a092140722411e447124908012213a484123994e8b1448e211e3b828666f00f3c7c96f0b11cf0f9c9e193c48e2021434207f00108901d3c82f841c827891f3d887e04f9f4e8490d05f109f2f111e4478e203f762821a4478e211e448286848208c1c1b384cf5010213c72f8004922c80fa11c417ee410e2f14328c88fa0a1257c72fcf0f0f1c1c301a9211f49fcf0d9400e1f203d82103922870f8f1d4804f90c05f9118448500f223b829018402b88901f4344800811cac101247e04f910c5200ae22359ec438e20427e0805f910e5e8f103c80ea21c3e4afc18ca8184901c48081112342487d08f1c42448482f8080511c223c7d0123e00200ae22377c22d5a6e4545adc3281a71b288cbbca25954c4e9e0a2a2ad8b8c8c8ca2d1cb48be5c504553161515c522a3d651148d8a8aa48ea258a41519151565455287512c2a2a2a2a32ca74705151676454a4bd8c645191691a15151919196946534751348a52071719194d23aec8c8888b5a47512c8a3ab828ea288a4545454546990ea358148b32a34d071719b50e2e2a32329a3a8ca2a6a3888d321dcc3a8ca291d1d4c146464652071b19b50ea3681475b051d4b143b34164e6a884d00e0e945d0c7a3fab1bdcb3731cd7008feb4edcb77ba6ee6c4d5d1562bbe9a6ef1b8d2621ba9f8ceb3a138863beab3f42200e2123fbfd47fb3c57aff6af9aae19d98c82efa8d1ea86e9e04d07bf7a8dec778da2a846bf1fd074143562c48811d48f30fb10db6a8fae23cc3e5c69b57a5d3d12e865278ab2cb939602491bc30421787909daf0aed50bdeab2befdcb3376803ac2bafded8b477e736ee676b80dc36cec6bca95e8fdeef2bd3d97ad7e8ca5485c8eeddabf6fbbc9bb4cede0f87579977248e79af5eeddd3feabd479a6864cb3663c97d9100cd840c01cc2840b778bea78ba251d7de1bba0b0bc3726cc915d6c42003ba9baa8c0800ee3d2d83b0bba9a31107615757361a06b3f2453098fd91676b12c08deca67a5f2cd1b4404c5f2980ada97b66876c4f7bb286bc4cb201cb8edcdd710915dd33939b128f736ea73db1da39cdeb8fbba5699a76136debc5a4feb42536b0d26af7e6a799e86c16f7080bb76b9797117be0ce43b3b8b39ac59dbbc7923c02681dee9c002cc7b25c0c580268169714669f1780e5ee45961de76965435ad3a535dda28e46cbb12535b0ab051859ef1c5be2c446db51a2cd024598f5ce6037014110ae2fda6e88b6a6ca3424cfe9dc43c9135ddc5592273cf7470274e7ee8534ba3a7a37e004db7dc912bb6339a6822a568afc3a7abbafbc6f000bbb81265813158ab609ea215d798fae769de8caab0fe04e3f125da7df932011e1bdec33d16923588388f09ef699a8b40c42207c4f83a74df0152bdf51b489e83ad555578150576c932301b8be3781ba1207d791e8fa6e8483b9c0dac476c5f5dd9b9f69473c1d427c041b103640daed5cfde198659ca2cc68b6c6c415b65a8ea900490549ec8de5580a966c0aa6586a3996822aac87a2d3e6d0bc2d83f3a72f7fc36bef77ed1fed3ca7d0967f1ad0d2aa400b7b439bd99bba34363b77abeb4f96fd534510475fd668b54a24b443a1958f04689bbdc10648ab3d820d906199775a3ef19e3ce199f468bae6252d2274cd958d6e0b2b1f24c3ca0a84b24da6d4e1780410e840a19595a6bbb9e0b1c6f2356ba6bc18296b2c7ca190e9b4442d289046fb310d663e8138a68d20a6dc2d859434869dcdbca37d3ed2ed1abdf17d7ec734b67ae3eac6f6f8ad7abc13dfd9583bde915fe671a49377347ec7ef4f1087573bdee9ed1166357a39db67dee966c2720c3b6baa5931da2db6154eacc7d148c831142cb1b1f6999aac904da3e93dfd0229b6b3a67b4370efeed1dbfde7bb77cf44af475736260c66c14f2b2d836fda168cd6d33e8f7907f5ec4d4f47d1db1314a27faa375a50887ef81e19d2d58dd3fba7bae21dbabad1d97e67bbcef08edc1eb645fdd49479e79a7e431c9d357d8669c867208e15efc89beacce94423cc32384484356179287958ea6c1d7979a795da37352f63809115de191c22def3bcf7b4c7991e4121e24d37bda737d086e9decf8977e451bc2327efc820e1843161c17b5d83f5c4bc830a1afaece9a88e5e69bfa368d0f721cd76b7ed779006751fd2ece90cdec871a24037dfbdf881b4e3dafda678d658b61a364babd566f5d49b124f289c96632830815098598ea10009f30ece768f69131bc1a6814dd168419077b6a65cb3b6c7ed4ca392a8249c979f20d3a8d1dfce7d4c633be76c5f7071716939cbc3a3eee2e2e2e202068f51f7985a8ec100c9a69a050318d8d4643a045ba07805e41d14fd7807f5482314e1e9e0bf7b8f5084dd4de7be3d42116aa8a3fe318d3eea20d3608b7ad3e61c14175e76cfcbaae420d7035b955710a662bbc890ce7637d55b64b9332884e997fb01d2d9ae06e9b87ae72fd7fd39bbdfd3db9b7a33ce6665ddf7660dcff471c632cf31cb312555583ed7d9ac6ca377dacb01f96acc3a9bd59f32f0b26761b7381bf35e966574669f44c2bed6eccd4fbbe9f10dd6e89191a632eacd6cceacfbd1ae5d7ed63b64e7337a3f9bdda362bd4bdbd65bd9e02c9258ef999d96411b5b15ebd58e3d64199dcdcaee716c96278e3d647252209f9d7475433e3e9eed8f89cab01d8d36829afc324a248c5735aba35b0481384bc33b7c6ea3ef56ac5c67e59ad5ad593f49a714cf467f9366f3594f4fee3d3d69b4dcb56f6fb006a74d2fa344d1ceec5ef7cffc254727fddc1eefd53b27c771e7eadd9ef546d9ced67af6ecc79674368baf6a1637ddee4550013d5b0485e86fdfb6f7b41727c77167d0c6101b3aec7c65e68113223ba76df472ff99dfee71f44e3b2f8380780906b3432d360828082b79673e68e8e39df921cd0205619b77e6e590c6a1c37293abcc3ccc0685c83ee337ad7e199def69066b04cdca6951d382c719cbbccc22f84c88767936b46bd7beeefcbdfb6e7ad7d11435699428da1b89a2d5b47bcd917b9e62fdd16e0abbe57d4345eb3158833596b059dd65d8ef11ac11eb35b291de687fb49bce34a2dde879871f764b86e57b346c167376bba1dd5467b350ddb3080671efaaaa59fcafa6b859fcd1481fbb1aa6aede69bb7b8f54f68df6fb5d809115969987afdeeefdf81e09f4b18d38a6b422940fad049a76f3348eae62058a76ab3b582f7e1cddb11bcdce60dc62f6062fc61a71fe208ea9d57bab9deb7a8764cac69b9eea56777955e779f57a37dddbe8177a1e8dd6db22389b65ba47d97e74483647798a1d37eb7e369ea5e28126b4b15e4fc668a25c1057ae5ce16aaa59add5bb84d5cef47297638de57eac9cbf595b954c27bdd102c52b57ae5cb11a1d92961f29d7ac7e046b70fd9ad56730ab61b3fa5faa5bcc91adfca46c69ba752bcf03d390569e736486c41b12f2152fb8c27636de93d19b30cb1ca7082508346119675103a861b6ef693c6583c27161a2d27d1c0910ab7061f91dbb4880e97d1dd3a0d1cdf33912605698a81309d095630f97b317e672347a5e4005dee93313a0e7055a700f6cbbdef80b83c3b3b1de224bd43689a068e3655233e1eaa3e16a88a6cde5980ba05820948d97bf611a0c072b0fd3f6c258f90dac116361fcd6df401bda0485602e6cbcc75b8c317232c6d9316aac53bc8cbd01e19c4381c21f3edb1b616d3966821dd868a309906c8459c98495b5a73d0671b49d979428da59995e23cb67a068e52f5fb1974fd94acabcc3301378d981c29fec31eccd7ed90bd1f6e5bd8cb2f569c237e22f3c9eb96ad5c8911d97f6231757fc4cd97981d8ec32ec4dd9cb5e7800bb8c688f1149b3e67f843722f1829d7ff143a9a306263f88e2074fa6c0602eedf19e46d915296cde800432f8400c86e0327264c7157fe4e2622347dab5fde800ae788d1e1dc0f54a2a22fe4584d4998f4aafa422b66bf5d52375e6b7fa4a2a427bacaf4b9d79adca60a9138bf11a40b0842664b0820db6100517bb38c609427619a1008b21bce0054590b28334b8d8c5bf32ec3c83451c06734524dd8a616392eed902ef278c8f965fa05862692cc74ef085a51124c34aa3f9beecacbc94cf8aec7c7c46c5ca9a6dd77e8bec568368f507480dc25924b9b3de9795cfa8f68983b34862b5da84cbaef60384a958ed5910ce2289cd7edb4ead06612a360b620023319bd526458a7ad8c2083d6c61847a97b0f291f219b4404fdf939dcf689322454cc5653a03c92b576c1358cd0866a004a96120e5200a6c0e612ab609ac872d8c00d30c6024c6c1388b24dd07988acb54614cc5c5bf9f9d672600730f976326a0c20e45db040693051d34110618ccc5b548115761fc59b95bb2de215616c1b2852cd0200e46603017830d70b1b2f674511b65add5c0e3f844c8b1244a6c6639568227965b92c4396bc725bc2cd36ab4489ec73e4206176064e7acf15ea44244cb456b14238e10322dcb34ed9ea6699aa6659a762d3ea33fb1c64872450e09931e73fc400618d91fe6df7ee4cacde23056822496632458b217652709aee06e6999a751c9cd8adcac3b6d9446b6e36762409165590df99ecebe99c76794ce66c56c2544b4d9b3cad99f1849420954d4711e8169849f9dd64369970c30b2fdae5cb3e4e567a6bd2f5742f4e5a5f6f8d9ad9bfd476ae7bad535b4cff6744f1bc518a378ec23f45025409a0c30e262e59a3533005464e7e7e339da59b959f1474c8fb9185084f3de9c73caf7b48f47022596251d8193233baf79a8d904d338ddf38cbe9f28f3ce57af77a0b6dabd7adb7a8fffe82db25fb4a72b5464bd779f67a661fa89774ef57a97076fa2cc3b60bddf25db4881b62b57aec4c176ffe83512c2a36c27fde92a51b4da6db4d5dee08df9aed7c8f6d9467aa38d8759eddf10de59f6b44781e215cbfda32b7088eda6da514fa3375aede02588635e7b4f8f60899dd7eeb1d71f834380f7ea9dd6934dc4d9d34f358236a6d54ef51ad9d33f4ac4d9ef1ebdd17a67a6f1d5fb1d080dcbbce3ddf3a83c83a70a246d046b6807e9d52ecfe08d798daf807dc07a28ee963744bc62bfcabc733defd9bdcacc83e91d656ba2f15a84f14ef68dde7ebc173feda6989dc1bbb1a9a159cdc8a862605e522e2d2c21ea047e5e67e2362d9bb263e482d799ea35b2a64bfa022fcf51a6775ae6ce97d320107ab10d16d360b10c169bb09884c51a168bb0ec4220fc2edf9dbb4eab37b4dd56236509d224a168e73f1a945dbb4783b26f7565c3f4785325caace9f13dcd395dfdb96c59c50bbb2514a27e3a3fd52d21ee1b90b1422faa6e09f53720733e4db784b447a18efb2604f353bda6b777a18d4b9dfbe5647eb9bb7c3b582f78ad6e40f502d6cb720d7cf7dbd5fbf2f2fbbdbb76fed72d21af5e14eaa67a5feaa579aa4def5fef5d2f0af5f8fbf2d467bdf361dd80aaa5e5b35ef0a97ab3eca77a4f07c1dfd4c17ab32c8c59bdaaa31eb377bff15dbd5d3720f3dbbfb9cc6f77997a5b5ace522fcb4d2ef5b6b098644ed9890606a65e1a98df97f077fbea33a8cba8ea0d51a887bfa9d77a6b6a6a6e7eb9dfd45b4383aa1eea44693ed3e927b8ad5e4fe02b8ad2dfecf486bef45cfd345ef71fa7d61a51a9d357a71375daff2ff8df7c3345efabd717edf538bfd97128fde54e6de8717ebfbeb939adfed8bfe9e6e6a6fea25eebbdb94975c7b1b1794c0c9db90ccdc61de7f4173cfd7fb3dfa6de9fc6e6f4d73bcdaf695573169619bffa8d8ccc696666aeba0ccd657ebfcbc8fc9a7ef31c1955cc717efb383235a7c179ceefe934bfdae9eb95a957e6313132f5ae1e431ff3eb3d46e677bbcc6d54aad3ccd41b536fcc69ae9ab9ea377595cc6f769bff17e57253af8bcbcd2ff81b97afeabdf9ccccfffbf2d56ff79c7a6b7d4dbdaa7a556761b94cbd303057d52b731696ab7e632d80aa5e18d5617ebf3a8359f135c7a1f9c2c7d40b536fcc61fe7d5ffd7a5500cc8a5fd51bd60dc8fc765506b3e2c3e3fc6ac7a9b7d60dc850ef36f576dd5bea6db96773efd75473bc7a3bef32f576ff4cff7e673db3e2657eb9bf5e1797dfd44b532fcd6de66bea5dad4e536f076c608518826027cdef4ba561563c4dbdab4a93aaaa66f16760602e53afeae531f56a4a4db00083859187f93dd50953ef4b0dc1cacc8a4ffd76e58159f1a97a5dea0664ac10f8967a4f67a91b5059a17e582f08fe54afec8210be8006db40f18aed9f7e5135c5acf853bd60556d3564adb29815ffd5ebd50da4ac90f6ae5e0f5ce1055870c29aea06422bd4e4e82ef9ed97ab1fb3e2b77ab59a6a16ff66956356fc8d1e574fc473cefd90b0af6a567caa5951a5450bb4fd2f26022a6cdb0a78dc1eb72714362bf438a7a78c3f78a7cf2e1fbcd3efeecfeecbeec77a238c3149a48167c4e3488290632250e2f53713038a90b32ae9d561e537eea8835efc5066bbeb6819f33e4bf2a4de9721795ede9f217960ee525beaa9866753bd2a4d66d7bed5cb0d913a7d18fa42531402a1e9a96fef0f09ebe5ec3cd51b869563b6411c46b6bb17c11add4d94bb8e1465978ff98d72cc4ecb7d0e91a7871ca1d88ea9a2cc6ff5ce90c1b259bd3aecd57eaaf7b6b9b9a776af5e550c012844b4f21dbd451d95e768d0b4d975489ed4b9fb601adbb9ff601aa69a9dab299a0d913c8f973243494647986db66245ca92122f09f1b355b6439a9db5a7b51f4c635e3e3b5f87e489b08cc623de899ff1324a99a124234a8c67b00ce6ac48b11c39fe7294f7c8f8a269d4d260083cbebc67239c993af0428b29ddf22e1fa974cb74f958a55b305d746b5bf2225af9a25b32d7822515dbcfaec5906ecd5c7ea85b32975fa25b2f977f754b75f908ebd677f968a45b31978f47dd42d22d98cb7bdba7817d8f83d9ae3fd9b3c76f34f5b5faec96e9dcb96ec19cfbd7adeddcc36ec59c7baa5b33e7aeea96eadc69ba25736ff3689cd22c79138d549ad545b3e46768f4227ec1cd82790ce566c55c45b959aa4320e44e7399cbc729da254cbd9c8d991273559cc2a9ced154992aafa21c9d3143860c16eb57a9c2f07236e65765bfdfd07edf778e2220cc1e69d04402b08da9576535987a43abbdd4cb594d9bc1ea5421d7711dd7fdaabaed75145dab47d8cb99e35847fee5a96b2f11264448737e968136b2f7b3154d22ea6c768f4108b0ab89a46b64b3afce51a268b3cabd4772f4464b940451b47d23bba2473a17cd7b6447357a39f6d14b93a23726b17c2fd2ab3dbea26b757e3c8a0460cb3cc5665fd1f8c4339d379716961075fa69a993f98d4a2c179758ee4626df6f44b25c94c272d189e5e214963b776b86ab7728b3ddf911c4c1633b1be1eafc19cacd9297a1b359f22afa354b3e86a69a250f43699a25ff42b959ddbf14e566bd1c0261eaabc35c47ebf0b977f572dde5f7971aabc03452f5e5a9af6a84491dbe7c94c23460aafc0b4d0d71a977464bcdce522fcb5e5eca1ed67b7b79293baa2e653ff15276b05eb662f95ebd318a95f5f292e59bea8d312bf95bbd118a95e7c01a5d7fb4f7338a8050cbdecfea4f760e66c11a59bdf18877f8439a8d4ff00e7fd27bd946aa6e594108aeb01c43721493744bf57e54d2ad98f7e3926eb1bc1f99740be6fd88d42dd4fb518a6ebdbc1f9d740b7c3f4ed1add48f428e85800a1b956ce398ffaed1ef19bd3a6c16f3cb5ab0bc05e697b9403d7cf9652ae04fe76ea57eb90bd55d2e411c3cf6bb8ac624cd52d2ac3e0c8d4c9ad57fa1518a66f553344ed1ac3e0be566b11c45b959a883949b051e0261ccd91593f03b759697a3ce3007d9d5313568da98f72ffbcdb1193364c838aa597eb9181a43c03b0c53af4af5526f18a6eac68596e32c77e61e93b8d496ca522f17d6cb53ac3caadef0542f57b1f2abd7c86ae73758436baf63596f76bee9a7a56e69e7f7488f76d444397adfdf347a8dac7c4687b206ccdac403f1b29e969ac58f4a96718c62e246028f736ec3ec3c334f4c227566c7b34b5e87d499af82d4f54627763e3ec134e2e7e311d3909f8f30c9c37dde93345ae19d798ec625a9331fdbc03bf3f3d7313fb52dbb9df2fda5f9a8b4d5cb4a5abd2c250b433bb939e79cf3311b69caea98e7aad839e7fc652b765e8830b4ec9a979fe7e49b87b9e6e1c2e60955cda33ae7ccfad3308d89c739374eb1f2cc3c43a48e3c9f0b99af62cef6d9152f7ba48ebcc64b59bd116667bdf1c8caff601a7d791f4c235e5e87e4d92eef451aa5f08efc46a392d4916f1aabc03bf2d10abcd397ef913cf189d4919f3143868ccbb2b27f6fa5bc2a2be50db55f96927dca3745407c129586481e76c933b7d8deb885c64b192f4d5eb2f25efc22e5986d3a6d8fe4e9098192d6612651a450b2f22c797a423045ebb0bd2cc5ca0b11b26517c742a0c4f6e3e537caaebeac3f718a659ca268343b4b42088cd87b61a9588ed93e4fb11a17aa6efa6571bf322cb3c7e08db61daf7d8238a88d97b12620bcbddabbdf2319b4216d73cc6a6f5a23e4988d60bddc576fe8d5abeaeabda95e1657b9de19563be768f587a758c631e2a28c8116f60aab9d634754acf6790f653ae7dc46b2db3d134dc07c3f5e82382213b77b6ccb7161a852fd2c960c19369b6167d8eccc3c1ceb6ccf2ec1060461b5333844b45d8df0877b84d9cbfd259f44d459d3fb3fa6c75fd3f91dad117275c59d63f6f32e0823ccb2bddc67a2375ad3995bdee327b7bac773dce2c77fdce21e1f726b3e3ec52dedf12a6ef5e369b8d54c9ab53dd61b9fdda30d6bd6f68eb691666de7682369d6768db692666d67cacde23e69536e56bfc11bda67bdb7b10e65d6740884f1f2f30de3eae5ec6d18d71bdadbb0ae57656fc3ec7620a6116b50dba01afdf8ed3e248fac716908d398355ae19deddb9bc636f0cef648a31b78673b17bf5d0192272a499ded3366c890c162fd2a55187ebf2cc5fb6525a9d3fd729448111072bff1fcb824795ef249a66f8f4adba395480037308df9ed3189e461d7f6d5cb52bc7a59a9ab97a370a1ea2c193726a9c13d02a1f6ec6da39d672bdf37fdc623bbdd8b484c34da78d42dfe06c4c16c64cb51a0ed8a8d8f489ea0c25ece6e0f9b67bab62eecb65dd52db6db2388c354575cb5113201b3439d254a82c8b3d7c8c61b590e66e319b4c13161e3567f1ac9328e91164d6cf0381221e4d8134aace9b71ec72721c79e3062e36fbdb0d9fb1e6a3be75c1956bbb7d11bedc67161785536feaa6cb34eac973bbfebedcf4b70885bd31b6cc08d8df5a79f3d8236ba0e65767b76066b983e84acdebf33f38452473bea973bfd86369e9987a50ef8abb2b15ef9790884ddd9154a54bddca9deb075aecaf6c11addfd246c5392376b6cfc90b4419bea648342ed432d3668dee57c6ec66e754865b90f6936c8f4181b64aa43a1f53ea4b2dd874c36e80b5336e8ab43a13d7d4865c10f7d3608f5effc5410118b0d42d5a1d0b67c4865593e84b241611de26c7854109167835cea1067530f1a5259980f85f6e5432fd6e50c14adc060301beb90caca3c6828b4aac79cff6e050d85f68677e26bb88778be0c95bc13afa2cd3bf13194b9877818bae29df8173ac33bf1292ac33bf12e948677e25b680befc4b35017de890fe90befc4a3688a77e24ff4c43bf12045f14efc4743ee21dea31df57827de443fee219ea31befc46f94e31ee2351ac33bf119855169937b8837524539052f3221e4581690d8fbb12ecf431fe0a8c655239f836ab9fc7760b93ccdcc5f323f92729d2eaf9a01c3971781a12f9a39cee55360d802fe55448ff322af9a5a04e33a8fb9f9e54355d8c2f222a8fa2a8a71182f62fde6f4af232917aabe08005eb47acee5bf2661a852b5b4b09cfe92a9af221eaef357d1ce61fc5594c3592fd2e13170e85f4539f55fbd888c1f49b9c216550b0bcbe905fc0b8687c7f8ab4887e7f0a29db3fe2a92f9cc8b60bebaf98bf4f0a29c57961696d30944fd15538bbc8a76aec38b78780e7f15a9602ef3a2189bd717717951cd734e2ca7d309045145ed0457f817f08442bd84972103a37a518b0b957af9ebe5af2257f81e62585e74baeaafa29adbfc05805aa468a7267de7a12665abbf8a583ef35751cc615ea4bacc8ba05ed44e70bdbcc80ef555a4434deaebd4a4f85711ab26991ea326cd17e55093b8c3a849dd5f453935e96eefaac2a949d77bacaf35e96ae7684dbadcbbfad7a4dbdd546f6ad2357d569ad56d6ad29d7f15cdbca626ddec5f2d42535f45e057356c20e25f45a7cfd4b081e8bf8a5a2e5393bcfa15a96a5257b99a64aa1ccb616a12578fa45c2fa9fa3aaa71bd502f72857fb9d457d1e92d35692b02cf5293b45a34b1d041145c616d2216c51340e18b16b850b5e85493b20ad6a49963d4b5a785f70bc43118ccca5fef4435d6743e779ce9443576abdc896aac562f503bc1865b96851b906051443576d60b14cdc0640c29b027a21a1beb059a58e8200a16fc058a4435b6eb058af340110c5b342183fdce977426449dc0af5995c88df53a13b769f512b9b159bd4426911b3beb0f33c77d5f18a6522a154db3fa3f8f3fc5b9044f328d202295951fca36a61144b4b2f1436db9202218cb7d683b318d202219bb7da885690411d158ed43f185690411c5d8ec439a0cd308229ab1fd21c9348838a641144ea641246d24f26c3c5f631a442e361269963bdfc434884e96ab5cb388e2c734884c763b1f641a442c76ab1f8a69104d4b8388856910a5ac564317a641b4a5980611ca663505c334883a86691075b66910b5d8aeaa19a64194ad980611689906d18b9d95c686691071374c8328b47d59b9866974fd8db62851e049c0c8d52f22ef84ac2008c2d5ef5ad4f15e0c00fbc0e79337690c7b3b33b2d1654d38ee82cd6a138e72cfe8047ad8a208575cfc99352952c45924717115c65924b92f9b99ac8c61bdc8592489f1842c1889f11c166236fee3a9c2665b58790f05146d76630b25bbba916df1d3bf4246407ce5ca95285498c252dbfd48895e6c7cb1dcaccb312a28d9675bd848651d6a7bdbbfd15d5736e28dab1bf1591df22c15b0b0434d14ad7c8fa456526a7bc8b37ca32cb6163cee5c9fbbdec951d9b1de3e03bd6ce4627c8c07a261e28a25dab6d840f10bab7d6ee7e8e54e145a2013c684bd7da0ed0b26ae58228efe68b136fd6e0371463ec0840d22d2ace9449b1532b2a6f9be40db92cdde430d24ad56573662cccab7e93d52bba4446de7bd6ee6a1af2dc0c4dce3356dd39a1ea9ecbb80686ac0cb72f5276e55087edfc6b4b3fe48597ff85df9f1510bc3148eae0f55dc784eb76e0fa9f87856b764f04457d462898d0fbb95136f9cd420053144242b2b3fe9ee65dfa9cbfa5fd79a768e7bd7712cdbc577f4bb4637ed5e47b3aad13b8500df5d528ef3bc3bd4277ae350dbe6e24d8fb57ba45cbdb35951084db28d14bcc97459afe749bafd5e8238585ef89e9634fbcb7e9d0cb90f10d65711ea2f6e20e4c3cb4f1007cb3e52ef1fed87945d289af47d94eba8091442ebee51ee3db2e3ceb6e9cdce1129860bc2886439227dad91c0c86e1f9ae7660db5bda4f71544c45d7e685e7b833858f616493e47816e32124829ecc05e237be53bbb977d5b26b31836ab212b11577fe2d96e34bb046fc4b0d24371f6a14fcf33b2f76563d82bb58c3f6fb06c6623cc46f9054f7ec62ea8410b279ce083a42090c1c5811030020212925006140c61051fb0e2e28e75487859acf8e69ce0a260c4cecb21e10d6764d9be8c6ef567744bf24089edcf5e96ed027c9cb168f56b56563fcb312858b1b3724c8ec063c9c366a0010a56808429c010c5142e232556b8c1094ac0032940418a8bcfb54a0fa04045434149dc41e441d8ffbc28e739c660039ed8be544275377d669f9f934e19367632eb6477f9fd93f7ea35b25e0485e82ea3064e807b11ae16e13ced93e08dbe0427c059e04874712f7224ba34ed453423b817e18ce0becd2899784856fea5814a49acbcccde5d6379ac2cd76813dcb567b4a8736567a6b15dab459d4b23e2c8f42cba4c340928889883b0fb91ed49de619d2bfb3cea6c9560d6f3bc7fdee9131422bee5fba53f40bc7f348877f02df41a59967814ea21059257ae302056d44ffc89ae3cf00951b298f2042836c772ec094a9e6024fb3cba3a81a0066e9f4757de89ae3c300337f006f827686137ad36c1d59791abab47b6475706d22647db57bdf7d8acbeb4ecdb4d5a2dcab26b7f1571d7ead15ddab3ecd9374d7ad957de2c0ab957b8445657deb3ec31d69597552324db600df99865465c91d61c173ccef11af522235ce104c017a5ba057c4b8bcc41ed0c1a01be857e913bdf885711178c229abbc5451489f9f722e163ce601131ffeaebf4303b8346848fc9e2c8ca472758b1f2fc6560113267f947c19f6811999f9e81169839788d16217396fa3a3d75661af7b2ef397f9d660ed697ccbfb34b458b7c9f790e2d327399a76891d777999be835b2371621e49813aa582fa3413a1bdd53f7bc085ae0f4d451b4c8e9a8b3d0d7e92c0fe9ebf4f00c5a4026455fa8e7fca3def665afcf022f96837fa1ae3a8345c87ca6bec2832cb4c8cc8bd417a17f1515b979cb537f8567398abefed74cfdab9e5e458bbc5edfc1bf5ece525faabf60ee7276e5d022af17f8f045739bb72b038b389de51968447899fa3272a11e435fd185aa192de2949da51609cf726ffb243881ef33b508f8d33750ab45c8bcc877d45be80bfca9161589798e115f6d62e6df51b5a873b11ca4459d2b641a59bd326c93a3d3bf5ad4b9beb350d4430a46d704c2fafa0ed623a72769f5074876d3b5b3bca7bd7a6558d3bb7a4d3488ece92666ce525fd105a31679adfeaaf98be636cf3947b77fb48999e73c86be548fb9a78d00c9721649b4112059ed999d4d38b20c051b93841ce301cccedf70074b3ac8c23a418a139c58272cc1a20a1652b040ca42298b2558246982174da0d2842650d18425d6fbbe8caeb67ac364b547dbd9ad8a652a5b15ab3115ab19c0486c72210966b56f56b3dee9cbe82afb465759b561b59b2c6719b4d1c31646807da00d031889592d8b24a7e7d45774bd702a88faabd622b0a6fea2f5e82e542dbaf9f7d7a29b234741b89c3072a18e7aea3d1d291a6cbc0d3dba8be535948616814f7d558bc2a7c2b01681f5e8aef0df67e8cbc825031484fdb91c7bb81cb362c9dae852d1a3bb5edcebafa3bb8a4e77b13c86be606ad1e9f4d45f2fb5a8e5a97a741778977a74174b2d6aa947779dfe551758635654b1b10e4d86828d5589300b7bb3264f2c1056b23742b2261002dfc1879207ac47e04ff508589b08c27562c9f3790e840078961f9d1ed623a79aa41dfcfc0632c0c86a59fd9180910bd5aed36751c8bd220c162ec1b1baca7efa91bb4ed77e8758adaeb25a44187f75d808d622e0bfcf739100b15e032d7018f8ef122ce2fba9be4eff4ee0573463c47528062fde20ec24cbb121f8c03692e5981052605996634148828da12696ec35aa42b3978809926019156f104a23588efdc0888d57588ef5206679b01ca3a20adb080ed139618a05d261f943744b2fb04045277b87b8900594bd434ea2708981bd43328881c7057b8744c085cc5ea12af4c0328e1d82a064af101425cb1c0c36617cc5f26ff9ddc4038a768b6f7a631dc27b2614edd6d59ff88e8a283688390bc4572cf88c7683b132ef64b6e91d82adc6f7e8d59e3d9907a99062c177f7b277f47637e6c13378037cf7af4121b87f8ff47b47c13778c3f418417abb46de896f1b3b22ce02c938c02c9fa377285aa32d761c5436e366c8689e766557f1e089cd4e538096cf62ece54527611f159b849794e50efca640d1bea2516c1a5e7f28bcacc444382d0bdb3e4fb19e3ce75c2e66e7251d0a2ff7247e209cf672303b2fcf3de1623d9e9c72ea000b2b81c29f3969b4bc85a444d34668e5e7cc7e796c96c939295b59437ec62c969485944f98eb8d301ea644d34668f952cef920197656209465291b88dee2491756bed36236eb56ecde4fb8b0f25df7758f2003888476884868ef84c1ec50d7752dc3de88a3fb8df627bee334ad6b2cacbc0481627c7b9f925b7b6ca52c9a32536759965d9ade973908ae74806475f0c917565e82dff70f3c7d9e5763731ba81a1b547c02821ff89e5e9d387075d3572b934b4d6b51b35aad562b5a136a3587794dcdb37ba99b95b4b2baf940976f76abfb99797719f6ce7ce6dd7b7a8237e4bb961bd9aef956033ee6e03d90aea6e8d6ead937b0c6f77d96e63d5df3d1201b9fcd3fd43f9bfaa13ed05bad4e4381a25dfda3d16aff6cc6b2fa5c81571d7cb3b429436fb4336710878e0567a88c8c2a86664b9a951d864a2f9ac542efcbb6d0fb0ae97d9de87dd9982de95694566cf628bd682d6c0676756543fe47635001f353740b7c760f04c137f8f774a4a7c795e598149ef0a40a1d307932c513264f90785f7874d7bfbf7bf7fafaf7d9ec8b53748b6d76107c4f9b4c3fddf4d3b52aba757a76ef743a9dbcaefb50dff7b0a34136bace3bf7aeebbc2fd20ee800f674b6dd094581a23d9d401c3af6545737c0c783354ed1aceca7dd7b7a89bf9ed60afb29e51e2917bbd324ed5c8c1958836335f0c2ead858b52a9a65b25dbd1bb0dd3dee03c0ee45ea15dd256cfc69fc91bb8a14d1ff30c9c51894c05caf46b881e07ee4ae9fab779eb24bbbf69b31e1be7aa3e91d95f7e85dc29ace600358d664435eabe2664c5aa959d9fd6c169fd8ecb3d95b293ec92215364bd9ece1cf367b9ce207f8b3091641ff4bb088ff55ff4aafad9ae5058fe3132a3a243b67cee722013629acfc0cbd6d573fcdc47041b8ba0c1ba90c2bc332b8f2c1b60f96c199f7f44c0c1784da65d808e298f96d0b462bc4002cf30ef748c17a8d5a088d1ad948573fd13bf3fee937373737973737f7e47773f39e0e431b1b9b7bf10ba98dcd1bac61733a7ddff7e54049a479fc6ae213339663525862bd994f86fb105c35b2919eaed11b0ffe24bbf8b40c499c9928140aacf1fd44d98694adb7fa22184f033a20bb03b25815901dc57dd1d13ce6348fa1a1a1a1e9685e534343f39e3e0d0d0d475357376efefde6fb3c142a4a31f3cde6df6d6a5fc14ce3cab034bfabf73d5008f955b434e764173519884327e6358f79cded1acde54365495035355f4d4d0d45753597200e1d5b53573754475d75d43d1a1a342dcd5133f569547c28140af59e8e5633a18eaaab1b323f7927fa9d8672362275ebfbbcd72f359b947990467bfa3eb6351428daefe077235aed34946dbcf77d4567de2367285b19ba69d1ac7915d59e346b3e8666483629f7d5d1fbb2374b728365bfbaba01f3d3612a67a559f3a7f922eddda4d879ceca2625452394b0eda645b7a246850b8d50c268b527dd3add2c49956eb1b074dd412158b6abd2adeeb3bba3d8066b74ef2bba15631886e119ece9d093374a61c34bb046f848d9b2e0d0b161ed2b9a351f913c93299a3e4d4de83d2fd29e8ee7f8c47b0e8cd81d2d707085e5b11cc301921c7c615b966339b8e20b4b3345c9d6588e253db149484946acd7f26df446cffb18e4ea7d59ee91527a7417fd22ad2ffaa2cec50d04c7ddf33e3a1f1f2b90f4becf945dfb2a9ead915ddde0ae7d084e76a1c57a5f36dec84639d4369e8b7575c3fbe9de4f3543d2ace97dde1b6aeb71a010ac1a5ed41ec1c7666975a8ede9a7a3401a64033c771b2d07cfdde2ea0db2c19de536c273075b2a58efb4b15ea068c173f58627a0039c285bd08bd63b5b0dc4a163bdbabad1ddf4aeca2acd9a37bd63d22dd327929dbfdc1776de442352b3e6bd990883f03080010cc258b7b39d50c21fee6cafeca2a3cc442861fce46adcb4dae4e8ae575381e40418c05c45b34a1158600457110ebc8c5c3907810cd71119aea4f80c49b76417dd8a9689657be592ed2876beb1c09155703a4a1f00e74629ec7c7452fb8a1aa5e803d4cf2596ed6c7274173ddbb9d26a11217ddb7800aa8a3dc46774867988cfc00614514f2fc1224edfe003d8855343a9131fc107b0ab564eea445a3ba49aeec10b147f6539768323cbe793e5980d942cc3362a3836a5f84c0442d896633660628142dbdb9bde7974d7f66d5b7d6d2fda364f928085d4ada1b69265a5d7b4470a479665e5acf765e79bdef0e82eeee38eeed2aed53b6d9ffb005c7d712fdace0d44bfdf239bbae617769e93590592405c8ed5000b3bd4b691240e1d2b6b44ea0ab4d9c806184b1ed36fc8719b27b32ccb423b8b309dabafa42c494a1f409618e203c8122b0b74e75e8477d3bb16d19deb6678f5c5da64cc606df4ae2ce09d7b11dd4dddbb16e19df3aa11414570efea4b0152679eab10601711ece26a923cbb4cbf1c45a397a7d8f9b3cb9311ac91d1089bcda520b66559966da66fd99624cfe261860c160f33bab5798fe3422ecb8a30f54d0d01769d3bbbb65f15bb381b31b4bd6d2c594cb6f6c4e39cfbd9ad4c6adab76fdaa66decf505229f5d935a46d9ca90fb54d9b32c5ec64c9b1e9775d659c71b3976fb401bfdacdeec5d9b98ce650d3639bacb548bb8276549f21965db5c53edde6c50bb17411b2c374cb677b09fad21f138e7b2928d9ce4319dbdf9457e458069348823bedf3166200e18d6b3f28ba00dd9600dee0c72526772ece2a80d18567ea336bc2439b32ccb5e49d9cc70b058f98c769fc106a06c676f9adddb22d390969984f2ec711d7ba6cf448b24f58bbc9b3a8f9b61e77be667cc17a05bd1ce2ba05b6ce7bfbe76ad6bd0ad7623adb2eaaa1c2bbdee9ba05004bc9b6a11d3bd4b805da69ad4f7401cf25d2f1196210082205c5e65499d7919dd411084cbf4f91e79a3eb6892bc67fa4c6c83c5ca377823b46d142703c58cc68e2d4f570236abcc3bf1defc22d3e0c87deac716841cab411556b234cabaa381d7f14e9ed8cbf14c57379142b5b2718da2a8d7a80656d6a05bbe916dd04667250e1836beb39708cb493c8f230bc2780cd87b011b43032f6c3f05018fbbc5510e215b3ee2e031d2dd4892bc67a21cebf6fa33d17f26ca536019c88009e290ec6a2fe3b672014625b01c0e19bce4801ecb5d82371ac5cc313bdda224ad801ecbbdc1218258a022bb9d411b9fbdb1db1b5c80511496bb27bf090a618464817458ee5ec7d3e9162151661e2ef7b8808dfb3ace44d9e599be8eb2cb44d9d5a08d788bac1450acf6d0442fabe46669d7ea95d2fec8ad1251d92195d5e4a3fc898f9f9403b6af75a6062990e69c2f882283989665f3f25a966519386b684d85c756631ab157104119c06c2a06032fac7c487330f27034ac540e6f962fbfcda969f36bb04667dfb44ce31dbe0cc90239e39665dae5b72ccb26a501a3939eaea1aaa1559a6665753616e7bc4c46c95d6a97e7a15bf233384d5e4a79ada5604d7bd4be9a8fb6ed6aca407b46a3c6f10e4fda4bf0f8d927d3d0cecf9846b4026856f6175819cdd2e4fd4c2083a77bf602308df30ef7ec3c742b6c16677af68ee6340fd73adc5dd9ec1c532285cdfe354faa75b8675f318d6833cf44699ac55d5a8ec1a00556e32e1f416e0596fb6a5b6d956330506239060315d894a9d2348bcb788777a28d652d69e0b1c6125e88cec6734bae9c6ca38e383cef1e833582ba7b35fb4641ed9e67a2dbbdf7b4e967bb770f353f2dc76090c466bca3d13e4837ea513e48f91d65cbfd7a8ff572f7eeb5c7e0105cefbdfe3cda599327f9dd1bf09debe5ec12463ec004cc06795e051232b2e0ef06de00872b5688959c28098105ab572fb3977d4cdbd33ea67d0687e0de12bcf1d5bb447d060ad159e69d1e497f4c4298ce15e865afb426dbef6913bddc8dd628c7921a797102c1e35882705e722c8a25cb3d802b8088b9347788b1fdd9392edbae6d9fb1b52ea7806e6d33ecf6ed05e816cb6eefd13cd2b5dd882aec760c744b5ed18a612f6361b767ef699a6ef5b77b4d3723f103766babea16c790601d599e80e2151b764b7e7baa5bf3db375e924ba298d297c6cae7d0bccf567e87694456c2e3ed4878bf5089edf83e4d244001e2fbac28a4a8e1711401f7853948958a866b9ee99256ba5e50c5322a7ebac089d52eb9cf081d93055ecc8d458411928912c962adb4cf2ba05bf74474ebe618d1adcbd2d1ad1bfae8d655cde8d6e528367b7606746bb3d90bd03c992bbb8c6e71ac055ad8ec02e856a683bdac858ebdcc051596bddc85cdce437656b762776bcdad9dfb439ae56873ba0514afd8a641fc21ed460e1bafc5733f567916227e52ca2bbf79c06a7f152952c415755f9a2a57af268426c11b5abd7175e316b17db67fb75ade8b1ddf37e48da8d51bf17d55b7b667a799d7ce363e7ea31c63011656a3990dbbc5cf9eea96566f8483d5e2c03cf0e315e681af2dc0c80adb30e681dfd39a8d66c2724e567f78c9328e51164d4c3c8e4e84611576be23c11476def4245211728c0548ac766f055fd87990054cecbcf7883a48f31c56b7b4cf69327d975fddbe0fe8f5796cbd8e2d2a57a2de0c09909ffbc3471248f8f4e071c40e1d393490010c5cc00215308202139040111180c00388c0e1800630e0c6026c286008216a2400012edbd33d880318a00004a03180193ca7a316101740007ef041460f00d8e1a1e53be8709db34e47ddb93e3a3a8ab13d07d36178cfc1a9d4e5bff1966c6866542dde52bde18c3e794b5f57efbcd49e6df572df4cf5763779f57ef74054bde1512d6771b1a9e99468569dd28c4ca7a48ae9944e47de12037214f004d0f4a80a909a110ae093c1f13059dcacd313cb3846910bb146174b92870896c253c0882479584a1e96d4918fcd90c18557752e421972dc94cd6a369b728aec58c73052098588b6ab50f84b4465fb61257263bb0ea9ec1292875db0a324362eb1f244b0240fcbab681d46c92960bd5ce5f36a574df5ce3857af8c54b54857b40e5b8984059216adc3562271113b7526069452c7842c9c804513961045094940c2b92961ac084638c215e7efd10a188f8f44386b8f4338e33c5671767914423d7d0cc259f50884f3cd239473eaf10730a917558c4ba7cdaf25acb9a9f43830e216db810f7a40050f74f024073848fa167352031bdc608a26349881143288010c90a2d09058f002173069c10a964415c41444145c438a49a209e2092214b10491047104114914410c417c221e451064b0f881e84434129b884c449851519167b02538d0010fbc3640446448280868881039e5065102c8cf0f1f4920e1733945c78e2378f4c8a1810c60e00216e87910af8011aedb53c065e9a724888e1d0213b8045ec423f000227038a00177c679ae80dbf8027e8301343e800f21e33d5c88029c00aff1c37d78020e70031c01027800eeb2ad03f19e20a20005a5271cc0000520008d01cca01f0ff55a400820003ff820a30700d47b1a1ed24ebd9c0178a8372cc00e48b64f8073f37c31a9d31fc0b967e4709e9cb7ce0dc48d521eb778eb50ef65e8d4abf281556ff8438c7a391b002f8a151eabf01e941e9f700070f17885ef44e1110ae7210b8f58f80e5a3c4ae13a4c79d4c275a8f03885b3b8f0b885c7b0a997ad20d1784b1e17e857c516e8a7640afda8d002fd9064817e5360817e46b8a09f1457a0de1756a01f932a50cf0b29f45bb205f596a840b959358f53a0dcac9b472d689402e566d1c728506e56cb231428370be75189c627506e168c7f55622cf54618aade7804d61b932cb1d75b92a7b3ea39e49cfbb7e4f4a4a68583b1d51be264f5aaa8bc7102fb7f4f529ed87e8442d8bf1dac53923c2829536e079328274b9d13c983827507933c2729add335ca4b55d51bcee84e722e2aaddedbf95fb083d55f94935a2f38c5f65f2f2b8249ee498a6d6f094c220f633b8e778afacdbf98fc96489ea5e7d4cb559e43bd3ce5a77a59ca57af8c967a673cac97632cafa9de5216f59aa438a15ed3142cea35556942bda62526d46bb2e22d2da15ed313188f51ea3541c1795442bda6187d4c42bda62852e7e61109f59a94aea8d77474847a4d498c50af694911ea3521c5ea3539b17d6e8a15f5725488502f576508f5725d54512fb724847a392f82502f670508f5725f40a9d704fb41bd26233ea89783d2837ab91815f5725178502fa7b4837a39293aa8974bf2a45e6e490eeae59070502fe724a95eeec914f56e556e50efb664837a372b35a8978339a9973bb2fd2dd6a4deed0a1ad4bb459941bd1b1652d4bb29c9a0de4d8b18d4bb498141bd1b1748f56e53a2a877a3f2827ab7252ea877436252efe6a405f56e4f5850ef066505f56a4b4bead5a20aeadd620aeadd220aeadda2927ab50845bd5a3c41bd5a3441bdda9498a45ead8aed6b48b104f56a9104f56a7104f56a1149bd5a1441bd5a0c41bd5a7ca25e2d1ed5abc52208ead5ae8847eacdac4427ead560d148bdda516ca25e2d49fc40bdda92c844bd995284d59b4931aa379b52546f56a548bdd9d2abdecc8907eacd9e74a0de0c0a07eacd624bd49b45b1fd0cb6817a332344f5664744eacd900cd59b2511aa375312546fb604a8de8cc9907a332421f5665204a9774a51a2de390548bdb3ca4fbd73e9d63badfca8773ef151ef849244bd338644bd338a4fbd53a947bdf38847bd33c911f5ce253bea9d483aea9d4e6c5f4ec951afa4a2817a65950cd42bbbc040bd72e902f54a2f2c50afb452817ae51746d43b6114a8771a9940bd128a04ea95b122ea95512250af548240bd52ca03ea954988a8572ec151af447240bdd24903ea954f18506f57b9516f2f2da0deb662a35e095340bdf2c8f63bd6add487a8b7af10a2de8e52a3dec62201f5b61202ea6d2d5cf5b6145b6f73d1536f4f09a2dea662fb7c807a7b89bd01ea6da417a0de76629b00f5f613db34ea6d28b6cf03a8372ed919f5462b3cf536ac556f1f01516f27b17d1640bd31ca03506f54fa0ff54629f7a1de38e532ea8d556c7f89e6e960add3a9bbd4cbc1ba7ac323ad5e5592eea1de28856d00d49d7ae314dc79a8373e397d877a2315b675a8374269b94ebdb18af0ac9ac7a8375e61fb44340f98a475fa39fcb2949c5f9e527fb9ca7f7969552f2763a6cad4ab82a9f7d65b923c44d49bbacb4bbd307f51d5ab7dc654eef4d57bfad752fbef56586f4b4eb76aeab579cd73a897a5d87818f57239f138f586b5d27a55af37de92ed0e661b4c62fb36940135348766456768013aa5a20288a11fcc0b9d2ccadc2c961a526e16aadedbf853bd1cf3ea55992a576f686356274a690bd14618bc282f39d64b8138461bbbf99795e665d9ae97d5533418125b39c7d59984b52df552ebf4b92ae1d2b4b294c1244ff6a4758ebad5cf9064493225ddd2dedffb19930ca95b52742b7b3f73d22deffd6c8a6e9dfe64267992e4c94c5204177c61ef4c82a4c4de4672d25c6831a5a3c2451553179c17d917d18bb062d12d546d72aacd45b7c0da444ab7beaed22daf6ad12dad52e9565695ba35ab4d0dcd946ec9ba9a91516aa42eeceda5d712433d2790397bcc8981398d18327d785ed5f1e8c5cbbf1abd10fafed5d88510f81dac914ae4420875548d5aa01ed6a8143edcce52b9e52dd504d37298471aa9845ef55eaad0cb4b6d2654a4aa502a557bc913972ae4e2525b49c35a6ac3fa88a5f611525885c2b0761227a82a8442d568e58b538d5f283102d636d248beda48a4a0d18a15252525ae2a797426e11dd89df1c21964608d68566b4ef082118b8166b56a0a581882d5d1ac964e9490c0f668566fb01a581fcd6a0f0c5058628134ab6b606d10821dd2ac3e01a10b4bec50b33a260464b86297685677482de081eda55e8ae20a7b679253774324538a8bd9debaaf66f58b68165da25943431200a485fa60e9a3a80e2a008a0119d408ca1d8d5508594a7b512343a3446605933132232363f3be4cb25abddf5fd8d84824ab555bb1a9a19147ab1919199d0c930c1b059328a4e0a298828b820a958da28ad661abc1623a66c9e39c3ba7f0cc24acd3e7b890271224541c1d3d316264c29c7cf1851456ac2079e10593a5a566b15a7621b46d555691553acab64d2ae613064c9180044851800230698e9b4a38aeca9849e274c275dd4432c9b92472115e19334992eea20b49454e6916152a5c7c9752b8e0420bf052097c6ba10516a7cb285860714547e928b1228a5022936c670003901c714f4002a411d325ccf40214a0bf682bdd0520002f64c8586a560b495979a882a134ab85e6ac39cd62c927f3343453a452527c1f936c496b078a17d2aa7472068af5e76c85c2ca48b28a17f646a558115e8085bd5c47913cd14aebf4392e0c555f142b5dad449895e844f24c25add367c249114e61fb4e2615b6efc4ca58952e685653cacc1732aa1fc9b86aa6d24c4dcda713a9d340a81945ead4d0acea4cb20449eacc2713ca8c45d84c22035605556712db84e6debfa79aac0ebe3499390aa689cc59629aa8ee32d4acf822125080940b1d02c4470f1d1830a208199287a6b25a277e55b975ae0ccbcd546e53bda14ce5e664a82af72da755ae678d97754e81e91731f439ce991ba36c51248fe6a43724c9d34b52a7ff2aaa29a194d69c28714ec2272a28b6fb9a15c9a3c15a49f264525aa7ff25aa24e1d106b399144d2993a229c1b6a56dc9f633cd89067b927df1451756ac54f1c20b2a4b4b53bae8828b2a55a450a1a2c594294a5c9c0b2c3229dd12ca0e34eb0f50bc2294d54c4ab3fa314a26253bcaa4d87e8cc2584c254e8b4f4ac8456a8a8a0a4d950f451ba33c8122ab6447b63fa7489e8845ebf4b5e0b808a9d89e536217b6e794285b84312d54b13746b133c94c722714db8f55d094342d342fb4291a156d49e342eb4293a25589452e422ec20ba4b0499450d1496690fa538afe7cd2adfe64d2ad3945b780500d5bd22da09b1845498ad47122ab58d9457bd1aca56e5def7de945b76e7ff1beb4d2adcbbd2fbf9013d6adcbef4f23ddba12c9fbf3a85b17f5fe44d2ad2b95bc2fab74abe512dbbfbd14b37d5945b7421828dd42bd50d1ad53ea7df9a45b60ed4b29baf5d5be447a5ff6e514dd32b5b0bc2f9d748b93a9af28254e914cbab54525a9d3aa981aa3489d7e918babfb48eaf45fb1ca52b402933afd8e516cbf97248f75c117adc3465a879164f5864a5a876dac4bf6054cea92edcb2021233b6ffb91099187a56a4aadd3ff55aa506a4a9a13dee93bb1fd29e5d5606cb52c84f157533219a11aa60c1e8a69f0e38b77039b6a16c8f1ce8d4d0dcd6a46461503f392726961095127f0f33a13b769d9941d63a4110521c7a640b1dfe498c67cdfc434180636d8b6601ce1e494929d5f8219056b9d09fe9e8eb0107ebf2c31f0fb3d1d79d768260614e1e928d3b460894921bc2112c7a644b140d88a3dfd8648a8f7f4e95d588ed9d323b80023a2b86d2cb18d25b6b1c4b62ccbb296299aa6695acb1489aa0b30e2010a21528c4208242259d4ef3c42bd082ee0c27216f508da08519428dafa733adb5fd532853b374fcb94d699e7905a67de14229942245388640a914c6789499e14ec57a9c2d049776e9e9493d699ef382e0c55aa14cc4e96981722d9e9fda69cd87953b0d927a078c5ae16606451a71bd921d89e2a19c2cbfae865a5f6502818cbc4b1c4eccc5aa6d8f99314c9137efef444f284f3a723c9c3aedf9395dfd3d2efa9ca743929d9d9728a6227cb2966677882c285aa233b1fc310f62358e5151b9542ee28cc6c4ae96b99262c494e534e534e534e534e53c018180363600c8c85611886611886e1bc602cac6265cc4a23cb81313016c2b6d3143284b73bea8e32edb10a4807b0915eb632bf0f8965ef690a2bd98d9ea69ca67c6208432b7847fe34c5ca7b56240fbb604749be2556de53923ca6cb7b4ea2b4ceafb7f4eb55f9f5a658794fca572d932a51bc6a994c8975d5329102c5542d1325efc9519225d643b24d6f47adb57ab903d8264263875436fb048a4b36abf1b3de0e61bc2367bdb36d4b0b84b2d989660c6156864749962039796225142b1fc710c6b324f9c6e0717bf3e4ea193bf3239a4bbe89138c0ae59a3792442463e38f6caeec4dd0c06030d7911857cbf99cc66d6fe2c673996ee42873793f225ddd9b404d81c15c475c5ca8031839d2e2fa0ea2f834a02bbc9123e96af991ccc5f22650b017d7cbf9ff5c2e3772345d2f3f325da937711383c15c47522e9903183172a473c5dcc891e692f99176a9de046a0906731d6971c19c67ce4fc51a328b32a5611fe255b4867d888fa136ec433c0cbd611fe25fa80cfb30c33eacd80718f621867d601fe251f4631fe24f14641fe2417a621fe23f8a621fe23d6a621fe23bdab10ff126eab10ff11cd5d887f88d6eec43bc4639f6213ea329f6217ed217f6215ed2c93ec437cdd88778a358a46a39c5e31cb9494d9e9f233b93534afe1b35a3d359f61952a7a54e3f943ad994f552a7cf923a7d19acd43e68adb3ee9cfeb76f3b9f86666e5a36652ae927e41769b1c7e0f17c6149b19c9fc3223f437eaae5d5c4cd918c0be6fcbb64d7ceff60b6c398defd68c605e3fd7b017ffad18c2b5593ee0faaa5be926e64a9491775a2934eca719486a31ffd694e8e66746ab9058f73388ee35a471ad9e63e6e6ef3f23cccfa5a42eac8cbd36473fe48c66502ba19a21d08a500a9a369f7119ab8adca903af233a48e7c7d112175e48d903af23ae2af0ca919c5ce943cee167ffaa092f12217173fa75bafa217161700c4e86e6a563221cef9291e7076f8918c0be7fcc7ecd4dbd0ccf45530a99617b93c3cffc3f9a1de8686c6c801c68b70687676ea6d682878550c1d182faae17ef041467d15c9e88185a3e200a043cc0a003aac6260bcc840f5f01c727a38b1702800e6675430a99617c53cdce1a1be8e665c3bd457110b87dee8f019154caae5452ff5afa29817169d9ab4b9b0bcc7a849df5f4538cfa1269960d4a4ec4537cfa949f2af229caeafa7f5557553935036356c206a6ad2a98634955b819566e6ab1c93f35293b83a5d6a92565bea0c718cc0e654e0c9a0392a15b6bcc8eba9a1b1095b5eb462f02c49405cecf6a298bba06a927c91ea2fe787618c2af517f045df67c2d8727a11c8b2e93eefab1781452ca7f9abe82b5a2940f2bc8abed7d424eeaf22f034ab9a34235393b6ab4c2f8a79ea7caee52e2f3a9de5afa2983eeaaf22989a34ffbd28fc4b7c1d89ae5751aa26c5aa72e92a4d4b4d32d59085ab39614d4ad524202e56ab07679d455f4d1a8a5656ae495d943232f54cf238e77249ac0c7f732ecd4dddcff2a7a41206654709792f9ed0f7b9c408759d8c10d8e47534e39a3978a1d309e60742b5c45cc6f87f46a653c517effb39162a2150b4db122bc4f298fa4afa6181a9afa49f9309dc2e43566aa9422d2d75888a100b4be56685dfa65420dd3a55a1d3a902e1a247b7c02a0482b587164474ebab42df57898815d12daf0a795e2de20a0c74abab425d5731d02c96bca90a994c7593d22c59c5ca2ab41da82fb4d54dab42f1405d7f80e215a1f92d4ab3584aa41206a1de8f55089196685392d81fb5448b72b7d87645b74e31b16e8154ba155d72beda44a95bde36a55bdd5fb0e89649f56d345b946e6d2a2e6626fd301c94acfc26a55b5a4dfa5125fda462d24f78e5ca95252ae13cd07ca4120a11dbb9910a61a442b8c46a4bacb4c5da4a9e2dd63af21c17865b8ce59629694bdb126d89a9d8ab21695134a41feccd94322b995206cb9c64b094bdf38994f9a4b3574e9947728a958f5608b32a5da5bb9048da4a7f218fda0b69a49724ac635b2fe9b884b4e4c51756b625516c142ce42fcbcadf2db6c4ca254c62605caae81610caa5beb8a319d78b1397cb6f53f401523f9a71b9b8fc48c6a582d22da01b0e2675e48f645c2f52a854dfa450d12d20d4cb372b48aa1898bac5a2286d4fbaf5525f4732332e97ba4da92275e4b725a923c3fedd621c671476b5c2a349d9f821ed0608b50483d5749d0b10ca12bdd8ee43d3c6af250868b344319daaab97e544333608285a2295f53e146dea25d61b9e4886a5c50b020ac212b9d8ee435a883ad18c054fb1ded389646c17047463895eecbbae5ef044334027180c66bb0f49bbc57abf13c948a61104242d91aaebae77a2191b63bddd81b85897ad4563a940a82c9c28d9a76eb002a1be0622725f05bae1ea8be34e2463af579bbc9a40bd26f7a31997e94433f6bad8ae02dd347173e5ca151757b981882f72711dc9b8b6facad1eaeb597dd1ccfa52c9b8647da51a88f8a31957d7b081e88ab8d68cc829128a8422a14828128a4cd23af29c94708a4a26a952a54a152bcf6a9eaed23af21deb58c762b10a61bcfc9550e6af4c32eb6525cbaa522f5bb90d85908788d6e94b9132654a952a5190a2144eba754d53c427918a08a55b97a58a188b573c4a4cfece906139a68598bd11c9f62f2b8632a0597d189ad3aceeeeeeeeeeeeeeeeee96535ee25645ac67a66d9ca9f3e292254b962cb9225605142a9e4ce1448a23455932c464c812204a7c24e98144c711068c18012be245c4124a4893fbc2948ae63931ce0db1254b962c591297e2525c8a4b71a967a66d9ca9f322529425b12aa050f1640a2752200d3119b20488121f497a20d17184012346c08a7811b1c4154b360e5519d2acd80199d22d930f2ebac5f590d2ad4d871618685634a25958746bd6a1688b68568c4244b3e2959058569426f7852915cd73621c1a7efe8b9eef8c4670ba75b588a45b778b49ba75b9a824c6f9769189cebfa4aa124eb144b0620e2373d5ea3335a7b9b9cd198b1839c0c8c1a9f42ad50d7d4529968848434c86346b0990a8c4474cd22322d1118f30108d18017bc192955fa2793a4aebc873b0f0489524ca92466a1d798e0b4395eade9e0e9ec3a3ce2d67b9a9bb9c61fe72558f69dd990474ebd27c75b679cdf90ce8d6fd6fcef1f4fc22ba75fbf53c8f733e0672ceda619cdf238733f718e703619d3fa45bb7bbcef943dfd949b412c5caebd018a559f22c1aaf68967c0c1a63cd92cf81c62a9a250f834628cd92cfa1918a66c9e3d0f8a459f2559ed2e8a459f2a7af66c9dfc8dbd0259a255f234f438756343219b20448b3a40ff914edd12c79171a91344bbe85ea68963c0b8d47cd920f29069a258fa2d148b3e44fd48866c98334c29a25ffd18845b36e84dd46b2f2cda45b9e174bbad52d29e996a98b24dde2aa20e9d646e5a85bda9436d2ad8c8b86756b4a69966c2dac742bd6a168a352b3e4959494d88aed472797653b56215e218ce7e6ef76cd74eed27b7709febba89f2e591e5ebabce5e5a9cb00565440b3deac04348ba6593dcd5235ab00cd4a356b46b3a8009a15df511395b1511e9a35594b96718c6244533fb11266af8d1f2de96715ab05bc774dbadfd8301b2b114d4457575fa637f1bda3468e9238ed5bbd5c050ac24622ad47c626dd3ffa327275f7e8517475f548125010b61f5d31db479247be9d481e76a95461c87d6465f713ad9b0c5e1c12decf360fb67f7378f8c1766b01896d1e1ee72c21642d30e9fbd8de07f2f57b9cbcf775c074ef6360fb0bfc91948b7bdf88adbe8e6a54312fe2f2224c2acf14837a91d7578b82589d884fe5cdc4bcc8a9b69c05757a919b6fef3340a5fa3caf8b7911b0be5e5ef314ea046e2f427f24e55279dfd7759ce92f975ae42573176f439d5ee407bbefe3381ad3cc5fab5a44a6be6cfef2b275dee94564ce7d1c6732cdd0a8fe99b899191ad5a9d7fd653a37b35ad1d0a8fece748ee62ff045667e538bd8d4d424ed9bc77534ab996a52fd25534de754f28acbf457919482135ff8802b66be084c7d150571e58aeba526c9a7eacba5a526c5b3d4a298346b4ebf61090a11b8503152210517bee03ad5a41b2f2b0d5893aebc56e4abafa218821fa4810caeedafa2280527bed084cbab49590df90d4b502071753569d62f5e510313cae032d5245967e401152e80c1c5d5a4583919821fa4a10bd756530d041661fc9db6686594f527c5e39c1b9fd88e48e2145ee60403d1881491432ae2c5646e4b18203fa444ca262d4912405463b5038948ea6de2f21e1f92c7a54624dd52b975c077e7cf74ee89bd5c0549ebf41bac9793a1f7d884906359d0e24624b61f8d8436fc50f882b1a70f7596e5fd211a0b7e685ad4fb3e32fb7d680584a8ad7617cb520500dab0cee0aac85854e561b3a72a63ab7263b59a132d58595d1522d09a6a01aad83e063c6bfad08b05df2f62fb10ca76ef33c064b9f71370fa90b4dafb3d27ce82954665bffa66bdaba9166baaaa58af8aabdf67b71ad61b5ace648d5959efb4724825c3b6f341439c65de0962dea9dcdd01a82aa87448958b47c38914051d53080dcdcc34800473154030502c1a0cc903459134f91480109da8525aa64be42c46420621638801634000000004006d0000724263395b7a72c58272b5f4e48a0ae4eab9c6e080e4a214208768504e8a00b988b907c94515281745905c64017211900d672cb964bdc8d1fa97732740aeb532b90802b9fa7272c50472f5e5e50a89e5eaca972b12cad595235784ecb863954be8558ede5f39578272add7fe916baa975c035fb9867ac835f92ecc10e4c2b5970334434e808c5cc1873d05b3a7f2664f676463d5cda623c9c6fd9f7d693e5b4b94dd527c7626be3c92e91e533dfdf681b47d0e5bfec0a1951a3bc92c061483e20597390434b3e7df311d633cda54c1050cd3c643137d097b62e77d34e87ddf20b645f5eb0b14e83a3e37949f06db0fb55798e92580b045386d95c94e820b9399e4d82527f7f38674e2108d84389e87245960cf0560d47a646f799e04dea8e138667b278a17b439a7fc7aa90f7db77aed618fa6d87366d2b32a11e130ec09b88ea1ce858d0a98f3a0ad57919579e7b8863d236b6cd18fea41854d4d972d043e58427eceeaec3df2887fb48f9e298bca3be11ea69418b3b769a8482506fb01fe5db09bd4cd1030e0b31d05d5105e4914c7daa53622130b63e9f22d915cb9cc923e54b04ba8d39023499245c6922407ce438ab3198297b002496d2538624c229b67ab5d0a700bc52259f50b730b20548315619c13b556298d8683bcdfe6944cc203bc47430feb338b5554600bbb1319c902cf9a0da8dc6a1bd8c8634e177fc8ccacd4fb6da670b590a79fd979e065af3910fc531268a638cacaeb1717dbf3336bff26257866754ec7d9a9378124d2e032e42f82b46849a06a1abe008a1e5c6b71bcfc48a726d1f64c62c7fb957840bbb9006b0ffc2f6029c08ba18832b223ae2b3d91a060b8e181975b5991212b3ce17ee238037943c8de30e17dfd0a23af40c667ae567f99eb41ec7c4c6b2c290857645182d1f1effd5712bd01607c5e0fa7037ad39957280ef64071e54f9cd213b7edc459e3dd57d3936dc2fb9af09f4c788e0917b984577debd3de1acc5b47768bb78feb3d7483200afc5da3036ec77adb996dbb975c7c19172a8f61676c215abc4f33d31f190d761f49e8d8bbf3a29274554fc8dbf3a96ab5e75b4f4dbf28d2363e1d98dd089f3510f886f0c1398dddd3b6b83b9451dfd3b8961ab2f3bf1eeff8db2ab5bdc9075f1589713e61e9128968e3fc2491bc2529d8232ab3c522f5a09f17e5b8f66fe74e35abe8d236e1a174daf4d3ad501545fda354a7a9fc47754d110c4c1b3d57c7b022caea5f2b6beb4aae9a5dff505ebdcd0401cdeda4ba8957a5a2fdc16e863df6989198770fade0b0ea67538bb5a6a7af9616b392f8cc1d0868b4b387a5f486342199dbae447d4b02a75338e6116866293652b0f94b7998c0602d8e3bc5e1c39f3b4f1eb8777ec45cefa1855fe245fbfe242c30262971600285cc4db6965f58867a1a114325a85869fdc7f4de4fab0673b644e6813db6a4ed29920790b2fe76289796525a4e4ed7e8844ce458fdfc2137729ab6cb042c6e66735ddce163e40e6a33f8a7d638ef402adb9df7f6b1fa7f3c397a0b31cc06572c270f03fb36cdeba99fcb59bce20c2041011633bb8e75a4ac4d7bd26341f46b7cca18f862e59340745ce1839c0c4c1f9e8a55c62366763dbd38c92f4c5a7289f74debe9da9fc2d02c7e60922e884567883af0951e8266b3e110eb3e6560a107aeb9574ec2c3de72483f2a5c7e8f67f4f85d287b7a8ba4bd1b9b8d510c4334b5fba503aae2e45b34766bc127585b9393e0c6ba525982cf473e1d9f9f6867cdc90e2e2cba5d63445bc6d822833369f0eac6d5245fd376982e1e9a0930e49b4a263410c609c9a8ac77b2648481da799084becb2ebaa23b81cec20705df5ddd864af173296daf293e80eaeebdaa1194aedf2d3e94aeec522ec01d2978ab61c0a97f36a92ac2b6eb3415ebc2b3d53d55ea008ee9ac9e74376874975c611c1cc106532300d168a1335e42c69b8bf19ac278bf5fbc502c6ea1575ca5561ca1551ca1541ca1531ca1521ca1512414890426fdd894aaa23aa29ae238a5c972acb0bd58bd06c139877ed6890e38fdb38f7684f5120a59249a009c5a0127ff14a98f743c6aec2a2848756a575a45ea54b45a528030ec0e1772a023568f49e88d7299baeed9d252a731efa84ffea9353eb65ec527db212673635459540789e3cc43f12f2435e8a4523d490a2894f65006c3051659349e20c645a3032224953488e97451cee987a68bb66bc70e971ad0d6b20e60a0e54fa1f590f0d0ab424d03f807a355c81ef35e981c803899231331d29d304c7ffb5f732d434edadd71c04b6b358e62f75bcf6ad0f1dd0e9ee9b095330f6ab59d329fdecdc5ccfb1f275c88c0f84d395dca18078d90969f5b33598c078ede485e95c8d70e1ac78bc35f771cc54925c6fcea2b3a67f68d1df13b9b0d12ec05854a676b10eb129ccf8ef308c3e5dd353bbaba6469b91cd4d115db471ee6d20e4319f3edee97a8decd016159d65ca2b05e776585594720ae2c895d6f7eb834b0b83d5a03a353c32af88c24eeb603f419236d6e7fd8a174ed72aaebf21c073b2e37ccd63e9f71b243a70b662e18b62ed26db8a44ad1698a625be7842b8efb0180c8e6edb18e7032472c7a1054efa689214eab8e00443a493769eb64cbd1df127efd931fb5c377f53410df9f81d49e670a459096265347852107904d21592db14f8f1e39797116873519379215d14d6697af109b5ec50116718f99aedb6a05ddac3cced0e522550dbf948e694a56a1876ee8e293113c94b85bd193c823426edc548add2994ec4d0db7a8cf266e954c435c466bd968506cef7927467db8028dda8165f475652ff2d607cb7b3a2e9b585c575fdc039778c8acfc359921dae77470c20ff7087eff017ee2603981df7c76afc84261e9372c0bc21250d0ada5b6a00404de46f4331d30817bc20086e8e25c899f6bef2bb9ddddd30fc4a773934f5975641305b3411485ec0615c578128bba409a9497b37f0603142adc747d0c0d0ea82de3d4a04e1d94b5e2f1943bacc6945cf5721c180801a833795b1957eb2059423503aca1ee1e7814e51f6390cbddb5b3c33546140f6da063130e72bcdb9ae83e8e928ce5d8041d799bb17c9c0158a2c5c2904b948805c6fd05dab5c08071243f7f0a164db302cb74b154ff2c79547e16ddcd052d7904442f1796d8f9c1c6e44237583f4332e2149bf7a3bb988d2319afffaf988a976727b748caf03a40dc58623e782d70fd0e7ea7edd06287da5d8ad9d9238d375b0188b665e82a1e385c378555cd430db5cb7851a4c2ff90f9dc0ecf405c63b4f1c3eb262e806d968a2aa76b6b15760ef64793933374ae2643525598b18ca3aa80974abdb211139f942dd5e2c64a2ad57a9d4a213c6bf9946df0acd4177bda9f2963d0904544cd359342e817d15689acd5eb367233e9623f85b6f8d374eb52e1562fb6967b1788f77a0188def0522afb64a252c94512c58af8c7b7e6a39066bcdf7f8aae858a2a6e0c385ed9e4e0bfa067eeb782d54ba80070f1495bc2e06a3d5d5b16aef6b25d87513156f8c044562810eb9553cd56b183c5bbe02baee18fd9a537744d9295247f81d7494ede28835980aeb0ec4eb02ce4a79c564e174a0f558e2cfdd8a979d86eb12beaff48c070d0c61b811e35a133a01747f505aca6c1499990fbf668aca37175f76316bd2dac749c58b2ebe8e0bd712f61ea67f8d72d5d518930b931b2226e7d81a18200d0b18017c5a331089e4098ad66678eba797f8b578e64dcc76c969dbbd37070b6b5baebca7d0fef16fc7d51e7cbfd9e630cc9b6f25c61887c8222d31d11bb6c58c358df41495ae596cae9310beef7eccedcce56cfcb00ffeca9737a51e1333ac57e9c6923b0f59f3087e3d71c59514efb0c91042a80e6cf908eac2b5b8431880ba8964d4afaf36ce3268f4abb100c83cf69152267cb5e7b361d89f68b0f74e134cff798c010e57e15dd2e9c8a0857ee3953d8d058de3c4d20f35c722fadf53becb72ca6083eba658234a5efe60ca86f6b0c51fbe946bdb8ba8e2f4828d5805fcca2c935044a814f4c19eac308d1179a168db510ddbd305324a308fa3e55f2ca0eee139cb049f42415ff9a22f1b95f896d244e0f64f99b82e481a50b9485638abf3f2dc6550cc062ea25d32a985bbe40b903fa2fe1770417ecfa56047e56aa4f524a6018fa20519528aa2bcb5a8cb1e396dd7d7a41ddaa0686ed7997d61db385a13e662d36319b79ea647f675d4aca9cdd28e1378ac15114da1e5f9cf5e3acd76cc15ace487368289b964787054ca74d9cccff8b22db48d524f06136ba3b2f2b3bf1d287ab58f27bb648ef239fe9b37ac3fc8bbae6deadbaa89fffecfeb13cb3d1a578fdb4765f4b9d0302a5f32c20ecf5c45f593d88dd9eb1aa9ade7ab95055e229df1b9d86cdf18698a5a909e56c280ced21897e6f82630d2fc2b327a2e9949e1ca02a497e91f53fbe86b93cd41decffdad216388dc3b9fe3f84146a25e93413e4f986698e466cf8b4d39207172d28f585468821d1468e244d8408293e451f00984b6401483e272adee3193c2360f4e2cadf1a2b72934a57f4b1f9ac51a09c01e203552dac6cb824bb58f030d8fa65301fa0188a6e3abd0af48436e8d5d16dc148fc865a38ffce90bfd7c7e43c0e4d4629456760c86203ccad99f66b4d118c93c2d990a3430742240fa9dd1dda6968627e2cf4776f90810c3db31b73295d3ae4529cbed4386982edd791960c461088a149907ea5f995c8b633deeeb70b6ffa15293dfe7ddfedc9d53a34fc3a414fb5c1b56ec9af9cbabe8b4962566c305648ed522230745762c41b86fbed710b03bfefc9083861a77cc5405c25b35cb80919f63faaebf26ef2eef554b883084004be941584518378b541c8209eda43e06be69047f86c8147a2cb8bdf0e3ae06a8c21d78cbba1ccd12ec31ae8e3d94e9413834ecd8599b470f20d0ac22936eb92122569a8c1eafb6f0ff2928e7675671058a980cc25098252d37e3f683bba60ebc631e0676d9b1eaaa366f4778ce6fe2c7940f80d49ceacb7a8963e6aa3df9aae53cbab7e14477d02eaf7c14e2deaee69be93686aea283cd20479d4520cdb43b50bcf0c91ef2c95c3efb3036b3885f010b7d91c4f18a70b58d16ffbb4a4345d1ad4a56128976c3317e3a1df25cfc23349b8ea91bf5518da5c7b92cddb43ecc55176ac9faa5a993c930c3ceec96f6cfce2c5d7f0fd17021e1817cbe86aad92a083dee8a11fbad08d6e74a12f7ad1810e74a30bddd04377f4d1099de8440f74d0193df4420fba8fbe935c9b79308dce21805aa4ea1a6d5a7a49ab940944250d23990a215fd3179ed58ab316e2c8fffc951f8ff446219900be104c9204058e269100aee1910cbd34e8ccc41a748e23df15712947fe79c1833f7de1893b7444aa167abcfef8b37f3dc7749ddbcebff17f28d87f9db0f80dffea0352bd4465314add3e0500027ef08c6b85cac2c9eb10bf0da829e77b2ed80a60567e0701cd43873011e858e0cb48dfc04139781c10e658e15288978abc5ba1e557e2738d72a81b0b6e630709a18cf395b5ed4cec00ac876965672e10c9e71d3b37985e8d33512499daeff073e76c6ee7f505b342f912bb881ea8e3627bd57fdc4a0e233e30728e876570b0956b8a5e7a4d2c63860c75c8e3c0ec3b5efc711faac88a6b4a8d9c0211e39095171780e26841bc8d5bfde25c7ce4cb11dbc7b90147b6e779e4a337b3fada4c90cd537dc93f2da9640e5d7db4d2ad5738ca98d6b23d88936f9bc68fcd301e59943854e3097e1d8b9ab7efd350af496616d144b13bb1bc76759e634312c16ea293c14509019cfdad66dcbf492e4399a6e9e8dd554f4454271d920eba7d839b1b5667dcfa6b495938d461ac820af9ec13e16b4a2e752e1f1fa358c13165b682a574ea47f39008e24b669fb73fad21dbc308c340bf1fcf819057d11749b24ea15e2286cb2f653c2502fcedc535de5ea3d0a649f178db7417fcddbd0d02e7ac782e304ef50d5f4564e024c37fb1c30427c5d2e7318b02f3439108ab4c30b107a2c312df388d02a6bd48668713bbd84739f72243d9fd19a345a1d2a9416aae500a95c13673418adbd844fa217afd3de9f0bf4ad1a9acbb21dd54cfd09107c8966f91b50b484449452f277e83d0c62b3fdade626d5f33c5c30dfacb8110c5a7ccc5bb2eeb49975ebd82ba1ddba14d61650c9e2b953501797ea1d85c28a306413c53526d71245c9c35b486fb91f78f3329f95e126c85bee349faca98b5e53ee24abd4839f6ee3633839eb511901f1eafaa819ca1a1cbd84aa7a2c20b583a76237b20a5826b810e546c5e0b449113c661bb526bb40c37e5a3eca4e61772f1c89b8cc51735a73b8acd8559573833283d5d6c59165cac8470c757fcaef1109be1333e31d945b2c26ec244285291e64cc827050a5cf846909e0259f40e32ef8a08257a099510fb1a7b2e8c0b8301defffd034b0ca76525a44c4c0f635ffe02d418686ee42407d40e3d7fad4a24666e263f2a8bbe41cf6f58fdf8ca912077c0f0537735c10aca125e04525374c300e96330c30c2632f89536f6506361ac00830b19e4d2445412d34d484b0cc73791b801f6b617a8bc7c84e372b217fadc2717367de17473ac7c43db30245a30dec48ca33785f6b93d0f818393b9241104efd9618c39b0daf4c79b76381196ca2e9277611cacc4568058c754e7f5e35ef55d77acdfb49f219b2f6cbcb48b841dc3ab7908bafbcd09bbb86a014f42234cec398afe570bc3859637fd1215135379ebaddbefd2744a4e717ddc39e6a39491dd3577ceb0ba0555867239a2f44f9a64eef987ab384071bcc43d489a7556df69ea1bb542fb9128cfe3dc2648334ea455aa23824b227a22dd4d8ddecdf46e823c6b79838ec004e95db5c3bfc8d12fdaa1b5056d489aeb000d1f39d259592a6d88a3de0657e0e2aa8ff77434d119eb559b9021d587fece806d36c535be59556b14aa1fb7a4c442e6c984e177a4d2d5fe2ba86ea257eacfd054604670b4b08249bf80d7b149430b77d285ff586be06121b9cbdf3b95bc65fd045bb2f012b6f26e4fc4458a5ed7537afcb97af2a28ba12d4164ed2042e3b445e9937807b321e1ff46d5c1db313afa493ab095a9a5b4d93c0632b7192263b0e48fce76619cc4ee42c7955d9a611839df8d6109fb7461b4a8cc2c7f2b2a7cd2a1500958c1f67383b01bdf15bcdd3ede5f5c2b73b0f2336f11eaa4ed824792e0319570081233f57ce348750018936be8c8cf71b68e919b78a61770f2307f8280d7ec29dd122bd6a1d5348764d8c8336a3e2a5299cb945152342fe45ca005c1a120133845a27c409504b7a109b0421a3296b85b0be510aa72af570f30988a3a47e11cc860cb49a14d2a62ea92d2b95456d818095e28ffa3beb9f90c6c6cd2d1ab1d86800394b1ab93c477595f9afe81f93b2ffd6b2e3a856f8f9f729c4fdda61355a7f78d8a41cec4c77baeb6fbda3c770278e7196c388e30c27d3d79d765cc526eb8df59019c38cd98f4186ef5209645333e3edf0e190a75e4e42197fdcb8c426274500afe34587d0f3698c8339e2185a16f6071cdcb29f4bf43f35dbf53596010d6a61fcfe2c8ee1fbe071d4899982fa40555e5cd28b60b1e103f7fb5d13a4967749e9a07a33272d86af514204cc37740e8fd49f15d3efa26faec601f3b586e9d42eabde98f1b3d310d28a2d9309f6d9477d0bbf2139096c23b71cb2d0a77f7f73394ff8d7600bd53359d90263823cc4bb43d2b967a64e542a621a8760d94481686c897d2a0bf42db5a12bcebeb41589c082ffe0a411309967c83cf2fab0d97d8a738749185632b7d91e405b1192c88a2f10a75ebee19ae529cb0d96181be9868e2406dee428a0812cecba1c58f80a3c6fd6c7fb280c07b39d26191a7e40dc8846883b625603eeb57e77bd6e36ba0802475ef2055a6322454251b2a6d8694c063dd121e366531d6e964649f83cf8eeea55fe53cfe55f3e7db50f32b4817606a561d4a2357aa9679700f6e969528224f4796b65a01bc4941a1dafa272bbed6c1dd2a5e55a7291d1e1f3c31323719b37b2d84bf6fbabeda00c0d829978e425000d17a0f4a25284e70c0a803dc4bf0a6ec10cbb7d01edc67cdbc35e5f1450e758613d67506a6677a0cc9224384e7f0d70e2f12a28cf37ff49f830b512edfff8c9bfb7a6bf3e4803ad7a32ac9e4518d49607bc81ccc1c6da484b1e8aef9adea861cddfe1739bbbe12736242acf9d820d4a476a34fcefd906b7cb092fcf33245462b6a700afcb522e4571b240885beb3e8372a67447fe75253ebca011ae9b0f97f7ee1b79ea1400d4c491119166810e752dfc5ebd72808565d716783645c7cf04d507c235b284ed07ff09aab16093776b320e464295c36afa035dec0299744c4d46264c7c16776ec1958bb25cd98fd3696994f238d9519b3039d4522297484ecf5b3c41db059808a1aeead94321e2187d58025a839bba7ee4876f452e8efb6650f638a99c5e0c92a167bdb8703e0b0934dfe0e840aae350b55d1bd71a483046165d21a1c30bb34ef698b05822d3e9c3b33e0a7468c9d935067cf0bb63eeb4c7d22f2716e0f0b23e40b76f0a7f34c6f40a5f70d0c6b24c166780f081e0e33ba38ec121da632cc37aa4e4885478e7c767667561d20f98b27e43db726ab4683e5b021f0e60f969e78e49cf76a6ad31255abc8db7cd435624db269f78220cd3cb6425acd6b48cb1d20ad33eed6190f93ab6fe55a62e033d34ebcc0a98f8aaa164144cb1ac8b341cf5a18337414e9dd8086a2cffb2b55b5fcd5b93d6314329acacbd4be2f70ae902bad6f4294742614909031d244fb553350e8c3acab5b3d751d3953fd38f57d12035acd5a76e0af000a0e7a4f3b64e7e4a4be038de453b202aa9a38b6985bd84edd06aa045779d1807a826926fec3d8fe7450ccece8435f364996c1e57a497b243f943b82d479e01b069cd300810292a8bef28aec116a8b658f402b59da7d489a8541f5a3039c8fef56df020e65b398a8118d6fba169979888988770ef6e02aecf7b94c8421685ab81923d0568f84d0a5d2f4a19a3a9a39ff962c20c93792d0cf977f1e169da6da4130a3dd319c0e5cae473914b97feea00654dc965726ae9e0312283cbe27c34a289d22959de5b899afeeb30d308e8118537c0e6572b3dc9549b66d9186fa65d5d5e83cd79290233099fe224d7f487500f10582ae9511797b32781146db649d4e0d79bafd84b8b64be7148656f6eeb62be2106d87e808bf47ed2122a5e8a6850f22a292d1114e3cca1334c20ba6b7f8447d1271ed08cab32585043968148e6282031041ffc4b6ff6f2006c47f036d6fcd064e362b763bf472ef12b603738b2597a770b6e23a06c8042ca8c77874c70b6a035b7ffb7dbe31e7b95d2c43e32989b16e215c157d48bc096cfc401256f931fb4ed4cb1348ddc34c25904bc8b1895e4d82d9e4a9268ee784cbe9eae62c3561ba495f4d7a6cd25c93066ed2d7a48d9bb43569c7267d9ab40b69ed4d00e289618b44e32117dda4e013ebfae64527f9916bde8f4f78abe2797ee7bdfb2a66d20b2e77967dc42ea6e92cd59b8a3ea13ca93b50d12cde17426fdc147488e39125f42b8582342bdc7f198ab111eaabc4a261657d5c828641dccfc648fb0f7f00cf2c76b1f34dd2fee026c9bdb2929bc208e6dcc5eb8d67602ea24d2cd7777f5000019a908d52e7307a8e0ed769652b68a96edb1a5debc8af171f46276c4997c98e23b984012f7146c470c6be001d4da97df1d64d7a6e05d17d07825c2ba72f30427a3bff4327f5f040a4648de2b51ac1e18811efc691bcf820fec974c5a4d497ac2960bdb44eb31d028de0d19a772b35f9e50c16db24ce0b5cd64cf4ccf726d0ed1c5b11b494bed6a3eaad2fca0d40317a3edc290fca0be4bc4071329f5d855ecf8bb597b0852bd2fff265d6d913a76a9ce37050cf9a20f4dcf1b5784a85eb117fda9f36b5cf83d9c5c6f9cbc0b153c812fb65a2bf4d4a58d23e3e61847b23a0451d0936b7d1e735d491f7e806abdae325621d3ca74bf2b801138e99254942f413f98d69a3b3d8b46596510e1680616a6a4883f3826520dbc6683f2707cf68e70d87b908a77c9acb633823260ad5b6c2f811973a9b20f1380f05381f4a21936c677576b41b9480921a9e909e462796dbda5a8ab1d1c552b8658f1e89deba16e37c33c555674ef0e522acaf677ec522a62a311cae336923c146208be2c8d2c0cc90019905c4d926990fd889c46b7a12e7a77559ccbb1eec13f194b039bb0fb2054eca34695814dba176d53f67f1b01b4a3312324cb41856754f5a8dfc04999150bc4a8c5c9c94118cc8ff6847fe335739c11a4db8e0a9a82521a660360d21b8ee787399d363f2a53cd5d438e0c7db328ef6a62d6468b1c2e642ff753c253ae94500e915de8f4edfd3bcf7e162681e11f1a4d6bb0605409454de9c11362710a34f4b885b5ccf0e7a55cac0403df44d76e0c740280339c855064d08c0b41c62c854e776b07b6e7165e1d91271a190ca24f097c5557fc6d0dc26a9c1ef61c922c3db4663ebe0762f186be9ca62885995d32fd790f0827e8932b0464aefa290faa48a0663428575aa93054e868808ec7bb37c19d8a45e0ecd3c3096e6b5b5da563d266af1e1f49e59c950f23779f81802e4b8a0c5d6331c418ab1210059935c5493b7b8151b320791e4b2c1a28f833c79a16ee5da86e2fde5030da6677ec4aa49488be4820b7efc0124a8da79b93d795a8ac2fc46849730eb2e89205c067670697edde522ac95386cf8c623330fadd7a76d42afb3ee06dcc6b8b083c99d76285463dc958068a497ff4656b31b100683f9abb0748dcf16c867eb743c251b0b6a6649fc0a0306d412c78d114a6d8f3b73cda0e1db2f49f600982193cae29dac4479afa5478141a17a0537387eb46261e630e5fcbef4bdc15dcdccd7d946cbc8d13bfeac0b0170121a5fc258d056bd1ab5f69387d17f9c0d557229107ed643a0b1623c88b7fad20a2ea82b2e63e94fd12ef121171ff90b989909d8f4de6195895bbd35d61cc73f674233aba1b07365e4de2fabf096b4aa0d2db35485769d3fded80d36ea7fdc4e1a4d813bc84f2d811d0375e2bd94b86b27ea86269a855f564c25f68b43a426b20663738a119f48349406192682e02bf8f5acc5190a74390043fe05c03b48ee5fa704de9954a06b855e2cc01381daad40ec5d2e133f5f796fc54f0c66ee95f242632c252ded021eaa06dedea520a5ff5a60fd6ef9cbe06ea0250480ea1c1ce90dc8944aabe2a05b2a6f4390aad92890371b25fa3f59a1728a60032991aedc6fb6eca202894c33a575d127022082b9a305c18cf1303499b44438aabcb092dfabd4063a565c7207e20d9e12581377bbc57f53e366983c58ed5b88ef921fd03289d222e62b8c54c6978b28d7f91d5d8f90a2ad74c995e1ca3f3e00359862c6bf3004f88d18c5ed2622ddcaa2f38eb1a7bb2a4b79a822d4678465a595cb85feda9fdb2faeaad2fc20c96df5e59c126b8c6a6db9322a15534c08b2a05dab2affad05d64909842ddaa696fe726e8a165257fc10aa14bf37046b4d559e4d35c33fada24178ad7afc9fcd7cf6b5c35a09f14a2b18b283ef7d62c32ed7d645bcc77924bb01ffeda03edd7ecb1615b433d329e0a0f9c2a4db4fc8e2076e286a718194c0dc29c85f8b0c489d120299978252f225bcecf48529810ad6a506306f02a932e13ed8ca77ae11542ed6bc82c06cd27b60b53abfc4ebb06d60b5742023769d546f0c7638f162f9a1a9fec08e26f1293f45408f6e03a57af8529e0781042c5579a4889c58bec21ab3f31be80b58c438378ec3c82adddd724c3be7cd8a04e19c9b29b089ec1a46cb7d10f1d0b489bfad2e060d55a2489daa5a19b5aec0822d37c47b58d4e04222d339e2bbba191d6214d844ade1f1967dd407ae48e2fa4ea7f0bf30d55c1689fd6e290f9be5cb46e1705302cd43d14536b0447ac7aec63dcba6fa6f87bdd09fad72886b5d8b5d346fc8a8b1ffa667c0c5e8e651093c1cd27c888c573ce4f3dbab4876a0cd82fefdb4495822be9adf2937ba1bdd70a37f053eab18e7ef3e34e4e9dbdb57a5e21f92fb4c7f2ca65f1f5a927f2c008f5cc7adb03dea59f0ffd624ddd4ea8c908902fa80221b4aedd8354159e03f39aeda698c77b622bf0f6289197fdd4990c5a27e1c3739afc31c03b2e183aaf0fb5790ac870e082008c6efda650c0a435077da5ba193394498a5b18f76eb87889767a7f9702ddf56d0ed3c4bb8fba6e8c65caf6c5f92ef25fcf957f107f516050a2a5213347a4f7483dc94d0de3715e90663f4361aaa9f1bfa7001a0d7e6689a68b459a6c5945610b598cd90ed70423fa9c30b87e010c0c613e72b8f13f41554dadeb9ac3c6170c50848ac30782643fb1988dc329278f6bb03fa4e3e12f0785026d9c67ec08725c95c54e3fdb0ce8cbb38bc25c51fc3ebb0fab12356e80f337e4e118b92846b7bf26a483ca2f5b14443b65efbc7c0e88bae398babd8e504905f219112823675c4681dc49b8f8ba3bc43f78061e2ee5b18b41b28cdc9a9268c2ca2035e444ad3b165da6e1a27e26870b622a93423314aea1114a6b9f6c6fdbf5eb7aac93dd4a78a63ca68019503c9c34106ac99eff6e650486e2eea513361f12727a96c7b003d23cc1d64f78c9f2c183bb26f657d3cd12997fcbf112624765109e5f4bdc9327020ff9cd444b851186b2fca038df132b029efb46f23d4003a5565c3efe424b8049f01e345486e06a5ea419bb3c370caf02be67c2c6e5e602ece6fdbc527e007ea64dc19186b460f1813570d23b4e6930f593bacba58d501da008a73e9a2f3d1edad8892ec46f477c23c267c970918ed3e7d66be7d383d15308df60a6a4ab4861173a73a294865472bdc33ed9ca33b041f99ccd1dab87887398ca0ad574cfa527c2244c5c0ccd618235105b1c4ed2189d79a233eac3a0506a427237f0de636e9cb9a97a2345b9259f99321972aca1dc8ffddfd61eae397484f1d35393e9caa861a7c4eba8c501afdf9b32e690d49ee127d6948d5ed837c42534f21467b93bfbde713571525d9fc851c608a75add1f4a86f4a314017ff008eb062089d6a66162098215036adadbf540d2276774424c773f588e92c647a1ca901a45eb6e6193d2ae524fd5d2dbc18e995ea4345d9f69d7d04d6609916df8aa06f3ac93477a9fc8b60fe047fc62dfac2adf604d03483fa8d693c295c8070b68e4861ac690d72db8b1b2fd3235ec1c329577abbfe6af6bb6170efe861da11fed63a08a85bf81a4c090090b1935805bf253d9047304d1a2e9014d458ba0d38f9be64100519ae16f489ce5c463bf15473706f7a6be1526f05674375fa8457bc3d4eee07ee8c186f082ec4607048838c260f6db696b05cabd63d9bf4edaecc514da548924e8affb43971445b6371ce76119f39a20373b665219dac10cc49c6c04a0ea75454c87edad56fba50892527e7c23d7687c800681b2671ac64e768a9678eb492c656eec8f47a3e071fb8ff293d45279908ef5f8bd71b72190ff18afea8754fd1aad7e2b1a531681c18c81716766a77a9d61c653d9b9ffeda4b96f0c70e10ff89f72b1881f2cd2fdf6d78785d64892bc5c6a328ad816c56bf234da9c3879194f3007ba377917a262dfe09dfbe4248164f8b1be5279734b877946a2f4ec0b05321e67cae535cc44c50ee0080b017c0128983cfa323779602c4ae4805417d5ff6773b9396c88d7b25b79b1d5483284e1ecee2c4694ac4702aca9a0a5eeb850363ca89850317a78daab1a8013409d5a7420fd0e95c4d0dfe462130d2e72db8f1fd0e115dd30ca5d8c81fe67e235ba53bc059e9cb8465d926af30a12355848982985e2a348d3885c8ecd1629f1abad37b8a71a9348b489d0db099ae4cedb4a053964677b45c40a3e434d7b5dc8685bf158d2e69e1cd10f919f617d4d85c925b23b2fb1d7575d112e582b59e59563f89bd20d03df48415ca19bacb9e870a14af9ec566cf905b8715f4490a3611dbd7fd9d5ac1239a89c0712048ceb4f5b0df12271fdadd57a467a135576aee5212ac7c864c7fd9aac838f6f22ef7487906a4bea856685887cbc9c8faaee957b59afd69d85a74a538a074aa27b531a22fc83ec4c685c7e16d530680f1a17d5b8697a84d3fd0fcea939d5f180717db03245916d56afe951fe54749e2a16640169f98b0444933e703c851c7cc8f87e006173857a09c22ecaf1c2f81380d4bff9485feccea7d23f6e72a304ce6f971056dacc92c8f910bef283195ca10c2089d860091c2328c5b6ab76d9465ef949ea96c018e8a9ba1eccbdaa23ea61cf237cf55f744595a32b1598c34b852d662f18404b65021ab1b5145a8a618fecaad84b4661e264cc866b60b577f144a43a305e88a535f37d6b44302083f47c545a8b8499486b082874cc1f941c39cfd8592910dc08bf08868eb3b0a4a194a9a8b0a1c0a00c0dd488dc45d6ecd2071145c921c105f8ca3905cd59bb49e316de4854d499488991b6b5bedbc17508a866dca3da203ea9754241987b94f3e90de89389651f358d468f5ac5e6a280b25f1f3224560e16171df952229162fa58e43bdd0243b761fa21330811bf5eaba061570eabdeb8834c74644cffa0e4ed407bc32a462eb658088094f2f23edd158115326415bb873735f170e6bd3e7cd97babe653721489977cc8beb5cbd252ab37bc9c4ae288c551ef90835395cd34d2aa3f91b521a7d03faabf6d8b4f09b40091926f7a1e509593762056b438466f133c5ccbacc21b3438fcf4c44a1c17aec777bb25061c9f36f6a2fcacb0b8d52e1865acde1ec8640e64ded1459f4f7bedba528ad4ca5b0c734fc65aaf18069d1125b3d6f225fba211df6b6549de9fa56bfea78b898e5b694bc3f36d3de603bba63af024e2f654654da5cfd515d2fe5f15af97c6dbdf3ee62a8b9a5df6fdd01c6afd2a1197f6df1905874bbfa9b70b7203ff83a79751114c9d0c1dd25e817fc3d71a72570d763a52bad11e782cb033a4778a6c31db5ec1f8683026fb7985e5d398bc0109379d3e5356f24a9db142092f22ee94a77e53c15904d0dffa685a6a991068eae3176d08db2045c26361a81dc657bc7b1e470b7a9442dc943466b451ce851e51268e59e015fe03a55dc18bf999549b37745c781e7a9d427cf1a30e7999e8ccaaed37a9853a643812ef2125456b9ae9dddbafe9fb151d0d8145a79f6fafcc3bebca3d66c5057c4e7d16dee156c65a647a6070cd39be72c9a1ab7fb9f8e253482c46527280e3ae4e04e99a8f22ce663bbea4971dc77ec2c12b2acbe3209263f587a94fdb15b019920a304611e75ffb1508c5749af7fd7be04b79f3a3b4a90a2aa3898154e3e0e381af1939ac1cc0d9ce02ae49934d3b8b60eb6ca3c3296084464801f4798c9ee11501381937ed555b830572c7045cb113cffe3522a3494cc9c1099f197156e92ac9ac5676d04f2210426aa67e4820c8e8b6e5665dff3413014dc24f933e595e293cb29a531fcb0bece07e1c57026efb86fcbde753924386a14ed1be90c194e3c1c111c2fc89b46e71d98dc4793d917d570b5fec35a8604e229c3c7b016c9d1e575b6836bb58971eb027c07f4f03a079245d9a7ea177494b307b581e80dace75d1705cd4eeb0e698d6d83a811865beacb2db14977bcb4fe4667395bfdad4b296358e5add341c7f77f3e39acd018dd577104236e3f2c2c261f8f17c58118e315e3e059d4d8facf3e7b97120d1ab67e4ba478c05fcf0a6eb955d1af884d2f4b38015121fa23bfdbf95d7aa036d08d24afddd8b3a86fe95de559bf027d72d196e5515648573be08f27cc56ad8882a9b7e665b4d6bdb6da572cb17d44ceb39f0923ef60e70a4319f8097273114bee6664c3487693c7825bb922a848799c850c410b9ab8bbb9665bbf78388d788eee3d7899cb2b1ed1d1b1535cadb8d184e6ffe627c25fc637da9391235b8c627509101c099a11a5ef89c298b486268922c9045ea15cd8fd7c86d404f8d92c21d425f412fa1d8b9ea9a3f6b892a7077d2c94315c7f9f49dc9183fc075a85308c652676fe7f145c61f80bdd47f0bce94b97595d374bf6588921ba652c406c8b8c710dd9e6b27c94e527257fcaeb3dc8ba773ff45efbd26d137e63e751199b615ab32505bfc27061e2a5b723ac1b4215dea2703bc26d11e4e88b9912db7e86f5951134a9715cf1a80e929ec98e5e6bbbd710005d3fdab712db110ef8d91ddd03b749b2a5907c6dbc9513115792a4139336f5716f96da3976aedccfe39cdd1b15d6746e4711bbb8e0be79827a45a75b3af2d036174412c2b1444daf86045c4966f1435b488dfbf4d9e0b70ade0c2d3e3a210f7c9ab12644cd4ee9b868aea1b6f667ea5d736f9a1fd8651e6a8abb13c99a5a616819b54df52c65e58ffb21c9701c652111a59e32b93d6c383eae8abd6092d9b87fabd4fb6a1caf809971abfd778089d93e3dbc44e6c82df343152b7af4e9c162ff406ed98473ce903ac2159483fb32bb7271ca378478a2382538b025a3443c6819fcee53e55789dfb3a45541511d5f654c8a6293ebb046aff18d74f0780b78664d72d740973add908905a27f8d429a6422b4f4de985ea1578a2fe3ef5013ba24c9c2a544f70f369157db900fb7ccf34521ab8c2076f66a376c694b2889e70eb81c83654e02929ccac12ec7a033d2bb65241eae6a15ce50a10dca308575ca94fa0fbf18df7fa4e179660ac89336d89b5b7a10ff9820d1704670a218e724ca6912c53bb4889b326490da781d914dfc726fcfec0dbcb11005bff5849759e97de999d04d1a499d3a6606f1c8498407cc0d55c296d38c01e5f3d14d86b1707434d8034a84a7444e9dcd681c1f7249c9c15376f8d48c83c4d8e9bfb47e9f0798705261880f26775e43ad168527946bf0d7960ea9f2319c81af275ea9bffb3ad41813176e0b28296f52ef2788efa621cbb3791af0cdcd18a1b32afee3b3c46f10646bafaf5ef27ee32f95a31072ad7adbfbd5e22a29f441458ebad4da3125b73363e1cab74fd43776160ddd193c71f91a38496457bf40f096cf37b3fc2168a4daac28684878edbac070a6d2507b5f1ea5680137a865e4c2b7c9bad6c96a6f59c3ed1cfacede153cfeeaa2f315108ee5b9ea14fd2f574e3cbadc9dd42507ef38966fb39cab8381a707c7b586d26692d5fb4342acdb4ca756179b08f4b7a7523ca0057eef61991c15d0207faedeaeccfcd9ead886a8205cca89b9711e456ee031359c3a8b812724bd77b4c2ef53297c5e273678b771824eefcc1405eef29536c654f62ce45a1c275b1f344e3b6269599a005ea7b158b9c6507b1badee2b91b2a0e56fe233018943d3577d146f9f40b76ae07bd324537739512f868534fd77752f37f2bb21840d55b3832e35903b0c2946f3d6d0c13973589d2c7bce56125f4b54ef3435cf32c1dd4e6a17723fa6b8e9eb621d80319a6f19ae485de069a165c5259e44917a509434015cce15e4d433df2282c47930c8372986ac3ed652f3dea5228f20f30d1250cdeb8b3cae2220d40dffd9d0ba54100c128fc1c7185dc496d96fc11c18402f71c011ee0ec7184ae2f6bf16cdcd981d0e8f920e4427f94d6aab3eabfcf510d9bc47a3a47dedab7def88f98a7eddf3bc7c8aaaaf72898fcc935d77e7295344135d5fd295c70012b55e197735ee7d03d1b4708a65eff7518a8ec86a7d36e9eda320997b651f983ac10dbcae52a0e935c38180d13794a477faf18160c11b6fabc4a3e61f843514cf4cd5195c2a26c171137a7df2d996c837a41ae8fe4474c262a7f598993542e99c872158180a050a2da72005f307030dbdf583ff83d33224030b3b185b91618384250f809fdce8038678d4a98756e561d7d85520c693f9df17b400ca4a1736e54520198cf7f053bf5fce3f734fea701bd5527aa194071442f18099282161586e381d746c7962a0dc3fb508827a9eb1a56184d3ea588dc251e81cb2808b63e04d5001911277d86f0c08116db43841f5eb7a96a4e081334c9150326712545abd136ac983c22da77d3623694920ba2b8c927b0055f890c5024b192a886040392709a8019d25b1fcf0edef041b42a23b3c03c956b5916841eb8d5309c090aacc9cd039940b041f10de0b14009a34ca18c81d19efd423a7ab168b0ecd7ac809415a2e02141e4d9c19b7c6fff1fab03f1ef0fe61e31fdf9d7a5640a8c16a891a1c34fa6046555c4e88a81ce68e006ffb68522a7e6160339d9b94a235ce2587c9d966fe12f7903ec2ea18de02088f72c35087501f2c6d26fb6025da5f34d474f938e5c8ab9c211db2bb84368115234b9e4947b95a8257551798bb6db5abbf23f48f68bc136b4fd17eb0a1237864a4e1fa60cd534c3c1018fa9f1e4b25487e240eaa415228d4dc58a76fc1194463de3dafd5a10ce2054c1caee3f87c703afd70a8864d5795a7332b23e9f69251974f9887880cc2e03d841a8d6dbee56f7b8ed46fbdc5a13dba536bc5d941b0c6ff8a1b4eaaa5c2f19a168abda8e3012ad91aa771c18c265cf73c4101b1ea9ef4fe991204cf9c91aa0b2a95a7e283af51900c5f63644607e82dcdfbe3ea4c18115ba9f89a8dd49a0e171aee32d4c921854aa6271d020dd983552cce950e2ffd141a2ab24f0bbd2216904bad1ef85dfda53ddec9e6035af9d72dd93ad856280847ca1850418a843d72888f53db89b4aead70e46d791878f49f2eee6f098797f486882306faa6c103d9d913cee34514217044ce276bce00cdd124cbb558824a536265cede04ec68fab52d06c709da1a24087485228232ff4b75aa65e128c4c27bdbca44e554514b3f19a5f6c6ccda243c00cb44e438855a62024a67c36173239e12e3feb286e675ee46a9834dd5eeab3a2298580b0e8f3c71cf44b49c059e6a3a1d5ce5a54c4c1841149402b216d6da8ba5b397a847ea0fe8b0fe756fac3257d07b8fc36bfe550b87a29c14999aedd416d78a1254e5cb15bb8d5cf435c363e8138539117763816ac0cb11d9c90b296f4a32d07d72c2cca2cdfe50fcd70a0ac9302a1a4cc9fb80565857bd754baafa4f0df37e494edc9a4cd1ab7b2eab9d8d450cc3a6c58d26072d8251188fe972e340dd4865a473880027ac966c74ab3034394e696203167c60af0593a41c2020b394c4608b337337231deb31cf743dc2af3d4926f135678658a56f15f9693bd8fe43e2269775931613d6371b1fe0f3354252b2041dd14ac1378de9add175918332508bd79505eb4e0515eb3dbd75eaef52de354aa42b1266e52a37d3842db68fe9c90886ecc8c59c24a4423a215d68f8cdd56305323f72935e866c3eab9b7b1917451ad210fc6fee90cf5ce82a78bb641608f4d89bd9dbf4b14e5657114d2ddf15df9650cbb88471a6700ea4e9ffb7c47455e6e139cb1c5c8ca4641dbc604c51eb417691c2054183245544dfc68d79201704f1b7894fcc3fd86564a835a830dba861306c20b46b093dbe54b74ab8a8d0649241ee0f84178404c995e8ba56b814888bc462b331c5cb448da44493e3d5082a0b80478654c699ed401c0bd1b82360d18925ab3670283e4a5f2ce17388e9c19effa2b7315171bcefd992dbde617111c79554e1f1cc20f3249a1f850b305b3e99131fe34cf38a1b4669c54fd4e91430af9cbe52a847143b74eabb6ec223631b7620efca908163512cc1cb63f08cfdbae53e0be78665714ab09707eb4fb8595cb82f2f530b544bcfcbe3c47f0bcea44ccfd27a55de701aea446cbe878ce39eef338aa45cd4db1b36cbba99998ac80fd3785d9b9912dc00a938cdef1b292d42cce3dc5fdd3d395efa400b2f74bfe34e331269b37d2a9153e1adf0e48aafd2d4417418f6ab06fd3584703e19cc1bf8777c9b1562a43cd58f04143101804c4e5381f8fd46d69650dc6d2fa62349eae36833eaa32c658f6166eaeb9c55ddd382f590c637406f87fc38cf9bc07d1ee4e531a31b564a3a082fa666189df83e13b43106aab97db5311e0f245b52af17818549cf2f1859ef52cb38cfaa6994cc618377a87029736e012123c1a135743869686acc416b38beba11620fe335549ad8311836335497fb31b467bd61f0174ae31a928f3eb275e74d9ffb8ac3ea4082458f1bf19cf8fcc37fccd703adfab657a71f34cb80fb674ab0a0f0450274112ef211fb90c2a1c2f17a46c72a427a54ba48a0c773daffeaabb95a1644b88eabbbd597067b36b36cb044188bc5f48e52795070526f55fb4b7ef277ea842e5704a7eeb1e3f42b17e943a50bea1c3385a412422ab4019832768aac927172d1f472738e2f575cf49f5db4f79c4f5845964f6ba8f555de9af50678b8ba43d63dae28f048ece7dbd003778a8525826f35ac58c0fdc3ff974b9ab5d07ae0334b3850d0941bcf4688d3d2ffa4f11a02f9e5f44721557bc8c399ef4bf37ed602fe890d3bf4edba2285f39ea91823a7318a1bf100c45d5188dd9db1bac2beecd8e61a3b09760ecbdfbac1aa71578ea79f7b823c830c2ed794d46a51feee5a4d8a5846cf7c31ba901aa0c89cd49d86b359f3b783aa181429da17fb81ceb494111a937378dfd9418280b139e4b8607cdbf7d56a7b67106394850c4369d067b4dd5e71020d5d825da01dd7f7cf572ac67f3803fb424d39ed0d282465818130f1fa1f6ab82d2407e45b6ade973f4c0b2974dd495d84790bf742b14780376bc3c082e2c0a9df8501ea9ccc54cdeabd7d70c05adea94ad9250b5ed3315f107f2c0055dcfd934962208a7dfeaf7d7928d462655a66a0b66f1a990a325fbe68d35f12c5b703a96a967866981ef6efd8ac0ac64d7d8a4a6e1b2c7a3d324f143fda0ceef6cd58118de4064a5fc78f94bc51d2cc216fe5b972c0322f71e3be23e266529a3dadd011e48967b3069f55b565d59ae6fffcada9ba7930252cc85aa428a9a030f5f50256b8b431472bfdddc209d50c74353c0e3026fad9b45a64591f396c267aec933be043639eded1273be34891a165ec4edefe0d61e8db692bdb7575a32c338ffcf071fbbd2a9e3a70ac65545d5c41b5816b8e3eb69ea8e605c07c0679ec381cca13f58b29f85915c0aa4f6fa66a03108881df794640b54bbc8b1259d1f7a5f38526b7aeea4aaa464a238ad9de0297bee3950a30438d8092ffae06db586873b2e67d9cbb43e3e632996e5d99c1730bee154fdc021167b18aeb7204a25837d7434509776b0dda801fa0fa26f176c76de378917a5187c5b744893b8592dface4e9183db193eecb88d3741e5ce8d275a5d8553da6b65ef25f0d305846675547aa06053e45395df0c5c17d186bbb1a29c88db2750c768873b3bde2f3515bbdb86036c0b26d02ebd2299831e3afc002aadac5f7d79aec5564e41ee6adabcd12b2b85bf2df1abfa93fc3563b35446aab1cbbf674a5702e35d7a54dc009afa8aff57b0da04b8ee507fb228e66e8b04b59e510a0d51b2f8cb35a73fa70d075e7e192115cb5fdbcaf734c43e549cb9b88e9f1bd41d1ee23a6b3629cb2d994a88fa97bc3ad9f54a54b30f31f48d31e2d57a9ec1655f9f1b306b7d78f42c7cceec5a33f8dcfafec2a2aa9555e33b38d5e4789e844c11ec2c51893dca3e3c274a8fc57b88a18d399b7b83c92623c94379688ed9313fcc1d24c5cde56e96e4ce5ffe34aa80c72f52bd4666c0790edbbcce2c26d673fe83d70cad11c234141b49dcbb2bf2f713d95ec5f6360e8fbe13cc3aa7b24bc25480fad7b10650fe45bd25e4488866127e53882dfe026974ed824dff64384946f073a63fd9b6f5915ee38d90e90acaac3f7e01f005ea8925657bdd26d1b34b459895f81665458faaed906e695bae06369c59b48b0554b05979a6655086e758f069305fa08b352bbb4f67bd2f98e82801500bbeb7902fae2acc6c452194e61c84d6ce8549e71874519c68c337a0814f5beb21d4869da6912defd787452d2f6cdaebb8a31227e36540384800576de69c37d59753c46e8b1c6f908a95de830fba7d364e3ca95d5174525c8732edcd069b31ce69435362796546225f3f40b1551701cefc6684fe0122b945edead657275918baeaa6e00437ed911b57d80b8568b5b27f17e0833a427b5b59cbfbb4f77dc7d70fbc03d16b264ae3d6e27fa7f1d8b56e01a0fa6af425c18e1c532ceef645ac54d65c3c75ed1478dfe5641e60995f6078418ff0cc71da2ca6a65e5d0aa056f88f911a26b448f69175883272aeb2251e25bcfc18707c247b143e38cf0be08d90fe733a74d46c522812718ee07b0f8f8044d7eae327feb912adc4611b69546cda7dcaa71b745e7d792b5a5b101cb19cd4021f118d8a43eb3de7c0a36cf69567b4e6f8ac469931db992b86d25b5eea3db91cfb09ef791f023176cd935b5e869f07d6964fb5825bed096fb6a80a3851b9c4719ba47fca0c2dccca579d2c6ebb947405ac481dd2e89dd2e55297fcad91a56b4f741191fe7199d381a558cec023b2300a6d4795393ad13c958a8ae5a9cb5b3320ec6cd94d9fcd7e23d95bc703193512c8ed3c9edeb00c4ab81649688c3b88f017557cb59c69514d6f2a64f76be9b51ec45d230d6a980d4263fe6c213d853b4c3913c8fe1838f5ebc1202098195454ab8d24a9309156948190027192152cbd2fd997e9d0d51bb098fc15896154d330545c05015dc447be1b34fcb074e2efb0a05e6112531e0fe5cb5eef290fea70a25de3b7e90004afcaf7b9ab521a4c2947f91f09268a7375c9b414ddbe1e6478e3f537a292545d48e86c1145bb0febef10ea83b56b130a8e65eb733e645ffbd642b643a47166e46e1d5bf367c97f0b8623d36ccdb1d9b888bdcd85ddc9031c68b0e450690c7dbd077d34d4ee2f197d5ae58f248d44c04c2a3b1543c8e65479310121f7b6cdd7a65dc48e146d9a3a07afc70801ebab2b961c8700c7f7d0d99d96452c70636b7652d8a26b60f8ef32a686ee376cf0d399a7136b3fd7c5bc15917c83fb191a3a7a43c8e6809fa9a2698355e861086d91ed4d1c5ccec48da67b2853bd4f32e2224eba3585a5d559f72cfb0278abdef40b96a1be25a60af8985fe73465a0a80a4f499d6af0053e706f61e54136bef2511746c3cb5ccc36b53a3ac0f9c0e94ae420b9fa9398a039a8734164823e74e646f067613b71ec81ace979c657c1c84842e9bc42f1f6c376302d26dafc6b6683a77d9a5ba3246e503efaba437e5bfc7fc4213e2db92cf0332e8c6ec37367fc687eff917c9e57c99b082821bb0daa02efdb6bb938ce584bb59cdbe74f6ff5611f244a77463eca6111b054e69c352c286b2a8d3af2f337c01bccf2d6e8cbbb6d900e5c7c20b921b8cfa4bf81aa55f246ec2fa7f6960e2c710288218ee84657a44b19cf3a3e56926f1ff273a4fd5a839850b4b8825c8ecd67a5f59cf360e384bc8d2818427c058976b0929b37026428f7ff32195860ae1bb17420ba17a21359957b93a2d57d91cbb1d6d77921033e0e3fa6c0082307a2fa20ec319e9a2ab301f2ee9351158ae4e0dd95768cebc3741a7a6d8b0c5960ae4a25f5323b1e915c043533a862a04631dfdb19847764829235973fb301d62b5755e5632fcce95aaeadefb454bef33664f232451046ae6dc9d12f2627d86394d92d2dd86554d5c84c9d1f2262e668955299894daa5553ee6a4c0514a76f2902931c11eb4561fd120b644b1d54635c9d9a23d7c69537968bb7667c85e05376d7a58e50a5b1ad2e6b46b6a45c9350afdbc15a70bb76a62d3e7886e3f4d6fb808e082f043ce140665e8624ed4993007e4d55296db9e5afeea8430818afe5a2bf016c57c849412afaa601a287b7b8fd19f829452b031555e0494260109725bd50636b3335aba99b5f15ba629c3503356e426dbee8a89ba3a7dd30d1f057658c1132ca5046b25183feac89c54aac631f5d18dc2b1be97e33b302732815a53487c15fbbe4f2196a95b2a9aae1cf8006e0e3ad98eaa941a4e239bd0d14c6e0c580fe8c5e4d9f55ff2a179521f35aa0b468a53e21c7a3abf84eae07dc3afbef77ac4fe2e47bbd76b0aef3e9ef1ffcdbd4238b69e6dd4d7e52c62e54e5d386151a724400a98a4b7512065fa3ac5ab64144de4101b284f471499e678f62996d62898340f6cc58a6aad363044e5f7947775c80dd33e5b2ca866ad0a137185c0a78b599501e5dc0c696ef94483ef14f9424f8787c241c5a95792bf9e3336772fde0ad1bf90e6850188f274b9efd0218aa2e4de2fca8d4448ec7eb982e54247ecb0b5b6fcbdebc2a193ec6ded96a1c649cd5b7c4fc61b727d720ad9c8d8c4d424811b9cabf7e79e83ccd5f0c63216785d183fb4ac00aec0f29e6cae404c67641402b8288187fef2204b9ae048355c8a12b3f13206b46dd16fbe918e60713f664b7aaa69cdd15aa4f6f84144dc5c86cb6d35651440fa7f0cf748c7122c4962dedc49a25c20e9ebd14b7ab4d1d46b0df2f4739e03ca3c17e425f69a590a267d8ecaf10b2a493145e63e2b2a88f4396a8e8b4035b3cea25f3dc0ac9fc8bb874bd63107979a6201501e792dc35729cd48344d6a87161237ce7a67efb90bb1ed1a7788677543e5ab4fe35a03b48591ff267501b9670775988214b25d5ad79dcaead41cd07d393740626b7d221e223f32f849a82c2ae09935cbd785bd0ff032060d98be85b61b67fea05fa74cdd969617e09631a36d3b502495801bb4d7a07e288fe833cb3e6e0ced22f5cf62c87c3d2a1bb851b82d45bb36a434bb370c8d2a5f9209a61fa8309dd1be8fccbad59b99efa673dd7a7b1ff375b0b2f50ddfdb99ebb3607796438d849e9864e545f66c5d7eddcad335ee63c37d8ae6f7d622e26431771197b7b34b0de04a5e0249c5f800b6990bb3fcf7bbee4ddfd8d74f64ad76ef30be3911c07aace754eabf9034e9b902e874f9fac2033fb3be230470c183f8306876c4a0c44356f2ffc13a466045be77de9dc2d0f60da78d8f8d7f5d4ad8013753aea2ee2397f9c2e767126e15869e00d6c0aa668e031eff91ad17ce0832be661544b089ae091ff67a5766044f90d733ab8e04dd28abef02ed24e6d3f06eeecc239535957b2675a9a2d57cc9da415a87bade65550b6517b75769a66b47daa354e2b372a2f05dbf11ddea358040d644b3fb6c2b9e0f6512382777a076bfb44757e5aafdff9038349ba6b21b5bc967898ff950a0fdb374b38e2ca48b5634fa51d14274cd1e35c068286ed5a074a24a2edae1f8ce04b981ec42e6c388307785a247b773199c121bef2481e6b611e875114c24b5a27e4f48e400912b9efd24d9bb8b5c02005310d6f4a6ec91041c02095c29d67a43bc82dbd87779462ea7f86d29038945c3715e82958e7ab999d57b41e7d9f965076ce752f0ad527ace2a46d509e4bdb7ccff1ece9bb763962d61e9352bbd0a1eb3c46dadd691e5fac6044a890751a0809007a3eb710017e36590b4aa24990572e8d27d5f1622df4338f1736d0f794845cf44c79678d17d652aa5d3569016b5981af270fded7f60823204d0d2ec8bcde1b1797bc3556983a2a5201e45ae06c6def9d2bedf32ed878809853e9be99ac74743499ed7e5e17564461615c65c7eec3367a1deab910f7b2fc9de207bc8f7b49f56ff4accd25e0fb2f6b18cda2300c4ebe682fea774ca6f4157b6cccf680a91fdd075a6baaf8ed1a22d56f92943f17769f6f5a3c5e8a11a405da4b9ef434bafadfdabf33ea0e7842fea9e222ca7555e67a85e4460dde2a740a8f920f8e0255b93741e55960a6de7ddd6d1ad9f0d7d34be01f12e4135783a85d2d88be5393d74734806523d2c65e977ee90396c7727e83693aad8931aecbb4fc6de13a054c9622684239c377c2adf27e28b44d46fa51f3d99df93cfe6aa1f916e2b6e74d08ae3169485fd9b860cca1994f98772ca558ea04b4e346de1118fceb6e0b4cd26b64699589de214f30bcd272117cca981c48543749340fbe35fec13cdc5d29ec56edcb6682bf613784b9c62d7dd239ceecd3dc856bf1f655c3b29bafabc7ddfb6f192d8a1d6c6a7398c55b19a46c356aefa5e1aa23fd4c6f713248c34ef4dddcd6648cc00ce6085fb6baccc8c2307cce130b9142b6f2a469f81125cc7912d2943135c5fd787b8d4ed74be1b20f8e3926fc1bb62ca41652eafb76a3f7c72b58d0b442683020c082db8f7653a2fd71a4e7ed72449f273fb122f3170373963c83015770b7f40da145f609046099f80cd75206ff4604056bffdb39f484045a558425ca29af49fb68637ded0364d2cbe282a3a817c4c812f0f0ecb06f42e49dcb9db048292a39b6d8091f440ec3312b1efba6862b07cef43d43bfa21e81cfe37105ecffd16155ed428841c2786e7457c274a990654395b655f4df2a7986e1a708e820b2bc1214718ae0e93c393e1fea4b87e54fc96c01972bb303b19a93030687fe603f3fcb8a3d8330f7de156427ac25956d8a434fb113f243136de0ac97f25ab9ef0203ee279078c7917204141a040fbfd63a6200de7ca9e7098d8c114f5565cc7683bff20cb37418ef8532df087a7c839a34784ad53644014985d902bbcf902cee45ee426dee409131d81d0f4ca88ceb45555f3afa085d249adc7446e99b95e536fb7a88e29264005caf0b35cb1f8c5743cd4dbfd8efbd93d2ee31fed53a06008f83f856e2a04902525040c61f55cc5f3919832012cd092655d5cb93efa7298e07082afa3cc46c7434b8376a6d70ba913033b922968b8731f1410194258fb188966e73afdb4453946daa88fa149b3af7802f26b54f7f8ec18427ce453d0f4af8f266a3bdde581b0d51d1c0ee47cbe1f8ba14be4d348ba0bc340e64173c0d15eea895eeb76c39fedc2acb3de0481ceac635e260dda1cda3ce068f2f599ee6058a7232b4950a016a09e41276b4c6dd186e2b92291168ccfab20f21432297acd773406064defeacc014871a13a6e55837b42159a30a947853e83e3a132867c7df43f0974a2e5913773683ef4aa54c861c11fb2c4f84044bba2c1c19b71c1957ff67f9bb56e0ab0f93536bbaa46db9e6641a17172ca3046df7c69e809bf1b9c770bcf8e963a7dd31dfde996c5d93622252bd71d076b78e09a9d9cd22090176ad2183a2a0b1c430f23d4c45afcef03d4dc63153f69ce81e5317d0ae49043515f359119abd702df3b6fd7878a738fd62fbc8af5d861e6b0a6d5a66e0e75b3191a772e50d892ec3bb79eb52c183dc392c1952d747254db65619fc1ff0473149f9b1c18ac26e3f9026681d64bbebcab10e8fe495396b60865cf3b5f18d720086ce5fd06883293682d43d2fa31c5e84380ad0f5deea55d47a47714d30a35aba017fb0e49bfa8a27fca987ae9de21d18bc2694632452f2f3b323da3328d4d46ee95a50ea47f54d3b59591bd64eb88eb8962746699b3172d3b661d5189fe2273ead57a47d6294aa55dc88c5ebfeac0744571fac865957a61d581eb8a62f4d632b289251b0529f54e59bfcc659486a6fa87b2fb2e622095b36fddb924589137539361c793ec62068c0f16b7a69902902a5bd06f991527214916533207cb0bc37a17558d27882462f6845baebc00eb5ad4346e824e6690b52225985ba7f1055a8d3d88f08b3a0035e258024d4b599198aef67972fb2ccc91f4269a4cace6b6185e831c4a815f733a6e1af096f0ef849df0bd22da9d5297b860295409311d279d7ac5063e7d0d0e6bb04d7f952d7c16f1f34370a6f18fd2758fcd7c623038995da69306af53cf2115dfcd5a5498eb37015a64978f2be946da8328299477f9194bbb18d44bb31d07a2267c799d8183f360c7e63e929dccc4220ee511a73b2bc54de7dcb27bee0f8256345f29c7edea11b58c9ebad9d67755f841174d01f7ff77a31fe915570cdf115c74985baeda69d05ba79bf412a829798769e2f3a14314840bf5cc19e27c037810d868ab2399aa047ba1ca0655c15322ffa953fe84deac417c7a33f09235b08c5cf0234415c4c1cb96d31fb98df58fa9057260a2d92d6b54f68714900e66ea264622ac7d63a2b829f4b18d8ab53dc418894dc26aecc36e9b5d0404d9a950d382ebca4095d71aa76287caaabaef848127f98bb59d2f168f7e3af1bf9c6631c1e30f2f3c94354a7a9b84d9f7b04d768221c7a60990bad44981c858061c54a405623f8ba8fab6cacba66b92d71a0e64351babac67f4a6852a8967f0f0661702aa74de5df977ff081166e0aad3d749c4a5dcedf474c2692abf16bdfa3c98e048d84878fea4aed03f5a554e4b196862f1e92c8e20830cb08713c7e9de9995139d58b18c0f7df40b4b383cb0f4a6d203e17c8496d8684114d30154672ed43f145f0a3a8622a179ce81c0b60a7f3cd1d40b51d8b8b2a57042587b5c4d8c1141c224081a436855da44e6b96d08dd2f752054d896d9e8d6ea1b73f11b01b2df2b06dbe11014e2a6739b07e80d8dde21b652aa5843231882dd6945e02878b1b97ac469aa5562635a67e1a08d75453c84c0b19dafd168fb77131faa546f0a10348e5932b7448a132c7cc35e2d9493c0ba23b68533a8817c1cd62cb14b4748e389ffd916d7e44758142bbd2b716c13c11e351fed86c81813b647bdb839b0f73f87f88977ae86b7f081009c85648f8adab6c84110ca6f105824efc1a9a395a5a77736b0dc965fde74204b673a21fae60e149a540d3c437481209c877f2fe4b98926bfcb69d5deedbcaf9303cf247dff77b76e84aad8e6f24bf44fcdd279deeda8b79b3e360c811b689a3486901b8ec228aeecbd464d5e21f62c40911fe2ffaf3d7c389459f8708230b2dbe545ca4eaaad39ab80cc6a0e898fbfbd0aee69636adf209b35b7305c37e35e354ddea666eabdefcd8af38f8548c60f57a007ef51abb6b650b2e1e8f8cf5a7d72e90a1f19c8afa38a3529a351bfcc85019be51ac7a39e6d377adc12bc126b73c17eae4f170aaaf89c4241792ce2d775596283f8552f28b97489f9cce44a655602f63a8041b55d32cfafd820331ba49681faeb7ad00f1b3c05824b2440645c9c05d08ca6bfa183372e76f44d33338bed671a904ef71ac748116ef68a5c545a826268f00085445643de868bf270fb0ec72ab0dd61ee8750994433e7763819342bb42bd2a701eb9a1105f7387fe179d83db4d1cd20f302176b06c31b0e0933740815c7abb359fc39d9e9d5ad94314608c5f0b74e057fae5af0f3aca4e56f6fd894e0e7eab8c2d40e8c66c5befe4a7084d200a68b04866d432cf5950bc9df1aed2beb409c9c2441788193d932f043fec4f1a552aa14b1e083dcffaf3e819dfa56caa01e3e1ab12faddbee1db06920dfdd00aa462c29c3486537e826d9d8a004284f4793718453de015a23c4fbff61c9cb7416c621623f25544f96b6db2598d80119c96ef0e850f800c13f49f30a547aacfb22e0febe586d852567b7c93cc5133215b5331d9629903542cb018985d1ea6f4be63810f56a1a043784c3f57ed1a7a360ef214847875c54e8943806f6ac6d4cf142525f1915c6343ce0b66b51188ef94d9782967689bcd12ebb6573999f06197744d9c626316e219be0c1411d180d7c1247287ad1c572f4ba3eb6e73cbcbbc31d13a832d6ece4ff08bc217fbc1321a2015141a2b0d73bf26faee42ae69cc66ec9ce5760ab6b1bf616e00bd8b8fe8b6fe2a9c40bc5bf4cd2d574522e51e9bd10769f201b3b5e11e3101c39f6d72db53e20923adbdc1788789ab334a2f19df09435e0c3a97f123b7e9e6ec8be10487cb8a82e8ccc6a17637368eaa782bbd69695456774056aaffea5380ed97399321c6542e832a55173cb0f0371e2c4ea35b15c130c28152dc258d1289e334e40393f2c7f73adb247b468a62fd00e4f1ab5baee2ae3048445ec8d0d7228ce58e463bbf3af4539a2045734cd4805b0e73c4e4dde14c1b6667d0e0be2f89b377b4360d6829f53214c82eb1e606a4e29e81484351f495eb6be2d701b33cc14472bf451f710c178b29ae0e21fdec447ef9e71832212facf99acd7a504fa1809af3cccc4b2f483234038acd00fd281245b1f6f864d2aa0cbd3694948ba8293b0af5c9f9d4d5805d697d1caad606b03b7174001aad724b78c4c4388426db499f6b0408506bf88b5c0f80b39ce1a05649e1ecb46e10ab611e31ef59a8a1083d5493864d1831f64e769d204bee141c6cd1e2b6b8433c01459f24caaf72a462810c084b337ab0b55ffcb594da4cecc218e32d2a90fabea2a8d8b8c8d403c119ffb93afb6cdfc3c661d2bfaace4ecec5dece5371b3d8a64b53c83ccf6a10efee6a4f8166413ac1320d175b2b9858141cfe058fde1e2259c4989831519ba02c08291e64802fda196947e2d2f384dd1ac131dc7061d6868669a0764264ce16ed2c585065d40d28c8f684bb906957ec25b7438ce5e48cd390d23e2d6b248879ec240e04be9ac518311753030e52883a0c2d11abc155a065a8baa0b6a410318d428b3090ecc12062cf75397623481071d3acd2ef27f5e0d860c8afa7f04218324dcdaf63d9203332f42521cabab47dd6bccd9847fd3453e46879cf933773b27c4a1248e1525e25e72d5467833ec89368e0a508122295bd0d4065e71aef3dd1966070d0cd6b7d66d08f2163c0690200806d11b9c2a047e15444f0d5610380a6bd2018357ca8efe873a78bc60fb20f9c81e693bc70d8bba06a555c38a02f1fc1afa7e3814c9fb08428d3256da0b19ad0d8479397f0f540197138b5b40a62edb516c0295fecee1d046b611a2d608217befbd77000dc00cdb0d2d57abd56a65cf85e1c479ce3004a8b6fd59d0a3b49def5d87b3d214d35c98e670b65dc7bdbb0d87745047d5864326e54eadd8499bbacbeef614aafb7ada4ea445f32e16ce4bf63954b5ace52d07a930eda3e54d87a6bee9a0850e50fd55f0e260b9d42d54cb6c0ed32c54d675e74eab60fa44651d782edb56a23dcf3d835cf7ba730ee7d6bb4b4a833d8797dc5faf73df1939a52afe35c24649676256aafd9dc32eefd7870b620b2bd9ee5672f4e1821862a5daddeaf47a80346fbbc3482bdc3d2bd9066fefe3e34954aaad547b86b91e4602dffd7e8646408c347fbbbb1fce4b350ce1f6bc1cb53239e0b8535995598b7352acb9775c1e6a6b9990d0d6899c46629d99b4fd11e540106b8b913ad1fb3ec321acd7d0c715f1becbcb014dafbd0e7b9df760dde98c209d757f8d41b488c3f5df053d71f5ae8bceefd805869b5ed3f9ce28d2d9fd37822cee3adc836811b73af7d759e37c377a42415e9d55afd23c4f14639576384be9ee76c4d72ef5bdd5cad7977bef4dc1abbaf7f55e7e22c96b85e4b3bda5b20fe40fd8ec7bef1547e8a0b6a72910e7bd16f46210e7ef504b094476b6d65a3b544488e7a4060e53aeb5d65a7a4fae9ee5adac584cd7305d31c7b1b8d7ba3a61c88a5b79d2dacbfa1b0eb1d5bb1d6bbde78db26bf5e893b5d2fb115dadc61a0ee9948c1ec8aee746a03229352d4fe992a340e9b63d0a22d1548907a232392444a9adb3ebab1d89e40f19c6494ac1442a2b426d10ad675773b5c6f76344c9b6c42364ef13df063ff18f91d5e727ce3f46e6e9a992edef13e7fb4c9fe7eb977a857f8cb0befa0a67db39494a3db19d64d4ac2ff5e785bf6dc37b230d31126f9c0d8e47e357238ce33ee8bccee3c6d99fb5422e77393c44655488caaafd6d4b6dd3f1c788a5e7fab60c419073e654a8a638688eb497c269d57c1288489fdadece31b6822884c2cc49976d657620dbdaa7be237845cc415346d1f595621895d5d316c41cd4f54132a121225a44b107d228082d12428b7e66f5ac94aa573e390091de427587a63bf924942684ceba7746946644671dfd2ac75f9707a2453af7be83e1e587882410d6bc14ea0ea434213aeb2e3b9b83d854691e9d75f73c51ac948a98bd1c7775a90b46b73d4aedab4871365a8d2bdbabecf50a76b0578f8d76079147478e774359e6f3fc1fa01d3c3e8fa4d278604b67f43b400f0826fe00c57c822ed4f459d63a88a4540e2c2b1d5d5f8d3a9fe313cb33660f36e6f7ceebaecf70880e56b2fdf2c617664265745c42423804d28f492c8859a8bb4f2d4a5d7bef56ef56d8ca7bdd45202af346d9134a877a6a7cf7d626c98ea8bc9ce4eee53afbee77b4e7ba7b1b0eb1b7bbafafa394b4c8ca286d6ffdf7ddd1d63be9ba626b3d8a3f97569393e16b9292de8ef6ab96ca6c7313e7283d6dd79d1de9d35175d25d4b9f3a2bc9cbf04e59657220316daaf3dc48ad4c0ee66547a1237d92d4fe8ed69bddbc563e2ba594f4362bd596b712c3a8ec2888f39eaccff7f68ede6dda23dd3927a536469d005b26814d7c32280f551aeb52a9f66d8554b2cebe514e4d92f53d07fe8630fad6e58df63c1a1ae97a65ed527b163be9daa3e110afd3d2598972ef3eeef775e46c96c941c513e4ec0b9383fa9ef31ea5c9dafcfd11b5f6decbd0deebddd3a2bc745ac4bd8edced53fdbe3a7a6dad166b9d746d3d3be427dc258f726d7ccf1fceefefdc6506dbcbb0f680daf3bc4acb81617476e71b6226ea4b6414e441b4c8f57b991078d759e0ef6372c5d3e2e1e119938286801836823a23f8d7085e1cc1169128369b375aee13eb410ebf683de39341324adbb97cd0a77379d807128814f9636ca244675f8cd2bc3aab97ae50b4b49d95c75d19a533ce1e811609295269434a58f8c8ab3412e8ac7e78ba01762f16a833cafee40044b0034120326780d12505f5673be93592c0441c12428b848e8c40d9e78ab5c6d942b40816fb5eab188eb2bf9d91099dd5db71c221e639a56b9570baca065f93649b6e428b58ac772430490a0ffe03c130bc0c8fe8e0c00496fe7e44c124a3fe6ccbf0c34aa86c3ec9084bc00e17f9e049a41d0f54536ba41a19e575b28d6cd3dddb18754beafc95612d813a7c96b5146a9987daf54cf4853986ba1b592aeba2d846bb83b87a910fbc665d86e0794690cabac3c6232aebbaeb8c49a8acfb6b5442655d77d7b8a48894eaee2dfc85b1a60d66b1732cca88f3d2dd76f86e0cbb5b5aa4f37a7710f6ee22a5e578979f7707a245e2bb9f162505e51899d4193d6c24c1ee20aefefd735d8643bae8d879875f639efdba1c33d8f2525abb8308fee3196796a71ccbf12cc6683d9f6f52693dd8d259f718e8e5807577a0ee3e04e6ba1c75fe1a65ef8c59e976ebaed370880eee7012d82d9dd1f62bc8084532c7cfbf7a1663464646fda303e31c5f05bb31bc0c3d9046dd3db19de7d353d37fac317b9d8d9a724b30dae1f0c9a02c71374ac94add3d37e9ee43dd5d8644461018756336fabe77e387b35177412d2fe764b0c34bd7087ea3dd8188167de15b98258a53d6ddb32c1c87eaacfb0c897c5888caba31270575f530e849fb518b654e597d8198615d635f8df57dbd370200365faa488a35376f7be29f23f4b8439867a25a097adcef3377cb8dde4d9ce74e91383a835871fdcd4ab63f9390320b3262dea0b0850735688ccc7803c0a10da826ac609902073a022552860f3920b1840ac07881a6a60ba38516588086183966f460719e97366bf7620ce8382705b5773bd110a54765d6deab34a1348e88e3862b3240a145ada8ef63f7b602347d6bf74294666bf773e4a420060d3aa0c04bed62ef0cd1da83b4488a707c32284ba8a648384beb68d326898c827c72a24094b715f4d0af96371bc6b40c3d8862b3d96cd30562b5a1b348a4c60b3dd910bf96371b56e84c5467f312db30a26cdb3d2d6f5cd0e856cb1b97303acb384a7fe0aefdfc1764691b01227346184941cd5dac346d4f8c746ece25ee94635f47af61b4c81e88162519d551a9b6111d1c9870a1ebed9864d417ff1cb15d6fbbe29f2315d73be712dfed650d87d47f935efbfb6cdbeb91fe32a496d22f3009a4f67502cc153529b010678c9abc5869f2091f68b87286cd152bb2a815a0dff2489418559a84b2d96c95266b5e4d5e6a803e0aa5b44d9654b28d1c0a5567944ad13695363d4f14631daeb4e9bde2282e5a9a4e396a5a2f97cece294cfc87b3c87310e7588e4fcc05873913cd0c33c550046c00458b9cf4a85e6a94931ef5490b974a268a143a9be867151a740c4e357806f403990f0d46a00c82c6180678848d1fc51e3c4690c81bb242520792243f8466a7579a4d2da1450888a3092d72d243aa67840dbc6c70fa245ae4c4151580d32bd980cb0fa1272d75468bb0142ab34665d6a8cc5a25538416e5e081ede8bc44572b9435884f03c0e260b58127d40d71b353dc0500b3d910071cbc72f15267d472c0c1ab96a1d3210e707dda004ba93fb0940a002ca5c9a736c3350c990a55a3ea53a5f2415f647c730b2d2a614e3cb76cd1a2454b962c599e9e9eaa54a9d2d4d43465ca94699b369b142952a24489a2a4a4d4a44993a4a424264c98904002094b962c19618411942851922449122448907cf0c107458a14112244c8d1d1519020418c8c8c8888888686868484846432595050d07f2020a0582c0683c144510441d0f364b3566ca9ac562ce7ecc4688539b384126892b8412171040bee5171648a286384cf2711f3730c8fcf212e7f3ec5bcbef32944cf6710405ceaf80c337f00595ef7dae1e101e413e3ae0edb537f76cc2f3e80e981871dbc74d1218777505c6c58c10d38d440c30c5b648801062d2ae0b0bc30539065ba30afcca7d9c2b4325938c7a5693aa160ae70824985694e5161a6305198b6a5129c608214139020ca08a088e0d7d6c4c99312944200820f2421650f30e9400638b001123480812517b040055ea99448600214182102224020c9031c70d90024217cac2fcb021870103ef81123453c2032e414eae85dbb021220bb8f23e00000f8ec413a107a000ec4001bfcc78d68df16961a5f162846169caf00232b0ca2f123c0c8d26200234b00236b686471b0c10fa100006026f3f1d5bf87aed7777878dc478301146580b357009c45220c6c5cea8c5e009774e892d238b8a41bfcb0e2b38acb469c63b34b2a02a04700585e84aef89cba8f283ea1b806597c62f10ca4f8947ad0169f5a1c032a3ea738eee2938b8f6c3ed7fc5e7c52bdc704c3c69262b1bcf4b785a5c6978505e7abc20a630a4b0bd61bac35ac2a961495d1978e9d9e4f29a6d4cf67143c3ea1d8f12faad25a4d1f974a0ba9b869ebcc929a6a324baa3ac192aa756a6102674f4e455151cd34984aaa524955555a48267c8aede02ca1787036eacc9222d3f43cb05405775c56d6cf65f57a2e6ba7e3f30ad1e7ada6033d8754403883504def83b3acc9c49650024d12675852b71d9f503f9f48f47c1e315960c6883245902162cc106284080288303ff800a6071ebeece0a58b0e39e070c30a6ce052030d336c91210618b4a8e08514cc2c2e4c2c57e6d36cc1ca64a1ca5c61a2603acd268fe338a8259c39345526e0ccd9a4e0cc35990067eea90438735aa4a28c008a08944a78e2a4490840b00ae3ac752312d659d884d53b2cf34625f84784eede3d6cc2f70e0fd564ed9b432a126f75ef5258f884d53befdebf510a18116619433461ab7def2ee5047cc2eaacee1d974af34e3bda032dc014559d512453aacea8172a9b9fb6d954671449943aa3ff11c1bbec4784eeab775fe1a13aa3485e67947623a5612ee5ae7c5efd5c5e7ade8992d7bd2be1aef3215dc2cb507eddbb09d5bd9b6466181d3ca5aaa82dc433cac3734a0e551b264b945099f8a5da671fe2285ca617db64dac4716a994d4f4f9c3c11e1f5ee22700fef81ec2ede9f2891029ef5d79548717de2aff827f54e9e88f023c28af5d565adf527485a58acb3f909fc88d0bace75b00935294b350fb4d4d9fc6ba45cea6c5e1c7fe8b92fd5be3a3a40d6a6acdefa374311585fbd2af9deba0c95804a5c9836d5d97c0bffd487f8f4a916a9b379d688a4cee657e34fc5483c1cabb3f90ecbb8f1e8876224467536bf543ba1b55429f7c627e9999b9191a4f2dea7d14188160c11870926cca85111750595194770b1460f491061850815f4ccbe38089559bc04830a6034e1c58c195070416de9cb0c35787184162380d0e1cc1833c0316eec70f448ccd1f246a686147c523ac41dd9352166b1de7bc95ce9dbea7b71aed8682422a2b220f75e324c7dc1beb7de88ca321151101688ad963722d89049f04ddf313acba4acd3ed56efddd0b8d9c086092c623811c45211361fa888614a0c2f58dc6ca09a6a4012491342a5edb4a04c7037823d8955a5cde120b42fa63d2fa3d4f4572f6b596ad1b56684831c216623a3a27aaf5eac4398e95a8738d3f54194366bf54238c81162678d286dda8e6ac5941211458b2d6f4420d159888a83e193f7e445f9217a1023a63f09447c7bfdb92a128fbbbc90499b904a0aea236c4491106dcb1b1146f4074410617111339713f28167f1bc1131c6a3173b684a7f990542e45ade8808639da0a0e6bdb27abb6a7ece99a9998e33e3031850524d53dad4eebd4a4340162a88e2d682134c5851bb7def18387d6bedd223d680f2a478a5bc9ef72743ed6127aec6f7c7c8e46245d33f196a8aa1d8faa33a7f27104ac188f732f480bbc73d83b7dee87d11b97bdc91bccb27abd7e646db21d8a2dca5bf46a6ade9eab5f63c5d9de3267dc2adb849e79ca79fd27adee765cbcd40f50393b34933a2b3794fae49c219f5a8e78a1809f98016c1ba15a870c289366fb45044975a8780eeba1fb074d75d084d0b31b8c145151669bcd43a1c83c9191095c18e06d6f31f08810589a9a1bd9637313d7416a2b22b90a2477436af277580f572dd39ee881b85701c274605cd711cce1d06394e8c0bcdd9e6388ef3ee1844657436af8358e4088401519aad6120078cce4197052999e64801924644a5e4a413398830a07cc5d88451d9129534555471630496335a88649e82b8d1c0860a7c38c00f54bc1facd88b616227565a878f6a7581154e4a7401440c636a1689366a6e545489faa1aa6683a8715f10deff704413e96cbe031fdaf85046db07511a57b317ba588d318868e18d2d6e5480a93d5913c70c614c4923855bcd62d80f6216a7ad6515b4a2b3ecd23b46aa474cce68471e14064041b10945db555b8b73c540b12e5cacd2387c546d576bad1049b4fdda5a9c8548a8235acc5a2158d0966b6badc540b118d1500d5bde8408d3d6cd37777a3e7b3450ce6843f416492acb3ada872930548d8318d4d9bebe0ed59188ca66b5a12bed8a93827af6477d1087862a0d7cf61afc8186ae07a245b5eb2feb3d2cfa2066700ca2321d2d6f42c0d0b6e54d8814740eaa6b7c32e893f6c58032510dd2a2bcf46240191b7d8954f663e98fc54468db3ac54a0d6da1ad6c30da1431ccade7896851063d6f448be42d4c969e0f4269725e88ad94864668632a8428a5e80ddf7c7d0eea232a0b425ff63f72fa5e8afce13011dadce5ed3645ab50369b0d859a9c626d40b4d1f2232ca1b429ae3060e42d88185a9e49929b165bde80986af928b488368dd6e4b99101669a460614b16564401142b4280769395b6809c4004dcb88b4e50d88369d8330c04c152a932d65f41577e962f21d96f5c580325ca84cf64ecbdb0f37f4941dad43dc96b71f602841f46c9027641e511dc4d8bcd8549b40cc39e72c42e9de66b3295d26822c3573a997b6d6d6215a3f0e67ebbd4e8c54ef3dd7f90bd64aa95ce13c3f9d4869eedf98ef3ba4798b643f61e217f15e8291a2ab5f9c57abcbb05aa47aef371c624111467b80fa8d072f4d0f24fb3a8eca900b8ddc73385f6ebc9603294d9c61bd0cedd037b9374ab7072817ca35dac19b3623a3fad5ece3c385111c3d1ec47bd9d9b63d67db52cfc7c793d8dd1e0a0641507718c99e03415023518ae5cbb3e9937925fc6344bebe4afcc476129554cebe6310185bf5094479a46b2a1bb9feece53a6f058254263f27be936ef18174469b3857678ed32266b045c30adaefb2b85507c2ac4865308b6120d084799deb61b6afed0aa345d6b658b484cae6bdf8c788b56d31bd419c5f6aca6a23d44dae33903faea56d5fad5091adb5e6da8d10c42529a8edb95943170eb1af557aad20f9a38948836d6b6bc539775dd7d973957e5fa49495b3b40671de7bc900c560deb4bfb362f0d2192c67390c7a573e298ba8cd33cb8fb2c8da4aeb9c391dd06749919ecc9673e6b49412087d96524a99809658d659a9283551eada9e42e91a895631df272b132abb2450d9e53826494990cc39e79c4994602455446845a2d8825456b714696994458e49462da514c1a3a0a020465c1632f9c30c1a18d078368a2309a489fc31ed77b8eb75abd5eadf6ab55a812b2454368b7c308eb044850fbc9d04c2a27688162448db206d5fa4d2403ab3f7c0b616a4de2abcb0c9335b3c2ed8f80195edd06022ed45d4f422b7e3e98caf31cb9abb38e6a1e6f013eb1ab3d71aa33c507690fc41bf1a6340a0059354ddbe082de26eff01125a2441d8294dd6ec85aed599f70c593929655d4157b9e75a6be53a6badf5642dbb5b259549f983e32650cbd81d12e258f8a0dc46b2e79e80d58ac5627573ce39e7a98cd5b156506e23dd6b7b4a6d9e9b7344d0d2277898d21bb4bc7d59d39f2bc7dafe93b4ebe467839949df2c4e2fd6d71e9c7575ef87b3777f58475add3b6b75ef2bec61267dcf51249de593623df352d38b2c5a6da8eacf45b188738736fd51f0de97a69eb373094bd9ebf061cfc15b5ac47310e9759def35b6be1ac5f9d754bfce1375db818c78f3c2a5ebc1d8c7813234d2ba08a5477f17cf8521e8fc15ebd56ab58317b0d4df4bbcf8d757afb7c6ecbafc02747ce735be2e4306ccd6f123fafa8a0b41689d49bfce8520ac2e7a5e16db857fc49d8bd72961a977b0087ab40bff7c47dab9ebdfce5ddfd9b9cb7549653b383369f13a7ffda8bec6ec3af7fa0d8bccd6719d31ebbc857db820eae01074fc8591747c0723f1b8c6a458bf2e8e590727c55a075ee19c14abe191f9d7696884075b2a0bf17b2c9581220822ceb363875d8620c40e7b6ccc27344cfcebdf6b9cb0cf1084ac23cb4bda752e04a1d69e210859bcce5fb563389bd0b0df732111dab0af4010af835d38df2bd586ad2ee6c079a96138c72fed1c5f8d39709ebd7abdf0eb35fa704154aaafb346a59792edd5ea47f4758a45fc21f2ddfbce678b18e9fb4bfcbc8833abbf87ff26288e48df3d56efdcfb82a6855adebe68e96f86207cf776feed8cad79efb68397b6e0cec8f34f863b382ff5ce5d638eb5eb3a6366d23a19d662ec7549c5fb8c928a87c17016fbf5d6f882bd70ce719db7ee338a388377fd3a23f71c634e8a35cfc1ef8c5066f3dc864668f37ce7c834c2730ff38c2d1e9e9d1d1eca33521a12d9c179f6ce5b778db08b39d6af57d791c4ebdc255ec775187efda8ee8cb45f6306df9d864468b7be33d2fed139d2ebe275b08f2be28f91d7c5bf70781187975416ded5c248dfe78f68067152ac3fecb146311365262d5fc32177da92620d651ae1d1415b72beef30511624130a42038b65db93567bbd7088755115c42cd7f47c102a9b465436414b651da5475436e7b45816140b023a95dd1f51222abb9f1c87a8ec5e4a1923a2b27b232abb4349528a5611b96b2b9d5d2b47e99f22516c36db095aded5398acd666b6a89e90a446eb27cf86490a5748a98635e93be59a9ef7394be17e7eab5210efd88ae3a222a93b55e8e7a423dc72c8a945ad659acb30e52da77d661b4883bebb2a6d0d91100b0f9c2a63d5652ac57f8e7886defb63dfc73bfd4a7323a459c9774b43b884c2acdc828466f44654aa84d9ccf462bca49212583ac925568d0749e4d54054ab468c5a4864182ac3aa185139ca94203025925c56d11e9edb4f557b7e30ae7696bdbf9704194529f7188f7595c29cd156ef26fcc5eb3709e539a7e765d795436efeaac7f2c6f7544ca1842c060eb7bce3611fb0aa5eb8b912cb618a4b25951f824068a5199156afb6f86436454663b113ca26008869c47655cf78f25a332fb21e7fee14cdbfbea770cbadc3d22d37332fbda0f5199a5d64e795b41f287bd486536c9c886f3de00d56f79c3214b4a60312fe7bd2bd050d619504c51614a540c2d78c01b65dcaa10f1e68d345c001187da83e28b28d8c40142051c8aa8e5f7945b7496f594b75eacd2a2b0f1a20a8c364238a5509b57c07922cd152d1883436dda7c20a28a237a502306216a538b9e73a89708e3090c19fa9340440925aba54d5bfe5601a0e10221a0e882052f60a8d52c70951ea810518517385d6ab5d26063414dbde0e28816dcbcc0450c44d050b582366724a1c5865a1ec2a2b351d32fb23489828a3466905a639322620a83c61a2b867032a346af68fa450a2454ec5ecbdb1755d2f82e3da1d25f3b6fdbfbcf45e78850a8bdb4cbe7ba48b7a30f17447ad99fadf4f3073da1e9e737e9136e4a0eecad144a43b053caec6f5b1334357243b04d3959c5a8e102ca513844b0e5ed0b5b6751f482ea3b6778e8b85ea21742b84498288a5ed8a0e312bd78e16bc14451a482a32714a9c88081305114a9b0707d22d599180b268a22150f2b91ea051e0f268a62176bbc13bb98e260a2287641e657ec82061f0b1345b18b293e55e4e20b4cabeee582899e2a910b2274aac42cbabcec9cc1c21b6265c33ee1c6f544bd77ea092ebc27c6b04b41ac80873530a479d354a5091b4c509ca08b34e450c1061758b8a05284acf2a712b521f2b4bc6d7146670945e3d8c28a96503b5adeb6282393a2636ce1331ec5e8162e84afbaf40df1d5f2b6450a9d25544c4669f146070f2dd6e8d8a1051a11480b215e3f5aa480874f166dfcf464e1454f2c8b2874746401048f1cf766814398c50bad2c9c422ce6b0b080b3f3613105c3220a0b2178b0b8417ce3c2c20acf15735c57bc8185575ca173451a9d2bc4ec5c5103cf152bc0a6da78f180e34801d4095ae7133cb08cbab251ad154fdcd0d5abd56aafa87ac272031759dc20a656ab18c24a1056b8d8f21447adb2713f33ec0c2da45e35950536d080038c9614b0bca1a28a27b6744b5caca0010d1655d828020e1b3199d0d4d414149d6555e45414376d95d10ba69468093525a6735097292eb095b55328f4b0828c981553e8b0420c0f2bb8c0acc80256d1864f156f5c5540b1a30a1f586a54f1c4a3aa087543f4697963b346e758acd28ed8701163b3448c8d0f313634b069cab1a68dd61a38ad356abe0689708d0faf353488ae354d39a87023a442ce47c5548c8a237ca8f092a347cb1b153a691c0999a20dd7b55153bc714dc145380515df14498853f4a0630aa76e084e8d164e8451ad5c2bc59bb63cdae6686bad5da3832789174c8c6b478a2ea18e145772bcdad021be71b9b2105b47ec0877e001a560103fa913e8b0d4d85975c1e341f1ea8e10b920c07b14cb21b440b1d851142fb8aa1009751483a20da02a28bce8a982c2891c553e2d6f500001450f393e7076ab1fd16b25907a21db71b2571f5744d62d38b3ffc6230f3cfc1a34ca466e24a232fb3b3ea93b2407f64ab11e2d84ceeced2d0a1648feb0afb61c935235898f06bbec56a0e70a5b2c9dcb174002795d4a20b23da0f6fbba27af51ca1f312ab3a191db3bd719a5fca1f3980e90ce75767e4459529a7596ce287b27ebdc73c0920c615048e38525c0b0e9a226e56ce73a63065be73b63d6b9f7ef823aa3cec5d947556794fd0a1a93c076611988ffd41a3d296381cd7a556acf8220ce51aa8cf51d484a7baf8fb1708ccaaa8ccaaa8781a8ac06d50705d119c5af2d883906b3a011643238c4edf055592b5ead2166cb5dd65d7652462967ac537cef7dde46b1e191ceb3b4a81eac9d64f385cd97e64000b6f56855818403f681115ac4f8214c9930beb081a2ca958861c60516c654d164458f2863a4d0460c6060d9e1883543f87899ba02049c1bdaa8311387ce5253d51a68c6a880851c36a8500387071d830a16d820c396c50d71cc10e05c71b3060926ae8499e289285c2450e2863128988326892b9256691103161a7800838c1c6a578abe4fa0a0ef1358584b34c059020ea716aa34b940d9684a238d3440c9e60b1b1ec03469a4210582a046ea8aac13672ed1d050bd968deba84e27ca58384ea859d5ea85a4084e9b1341c0e99c90c1092b9d83a464f8bcbc186044182a934d94d1d6499df306b559fce45ec9eb55dfe327f74f94bc5e490eea9562fd85466cdb1bb1782565f5f648ed6ba1d049abb42d27b52ff6eaf7624099307d3b7bb6d224a69cd32b80ac0ed1a28abd38a2f57e1073b4bc3531d5c49ace56a42f54269068c161820718132a80bde52d8a8d28379d6568741368987882aacd179da71c35ba7e4e59386d3167060d169da79ab9a6eba7987b2797293a4f2fb387ae9f4fd6aaf146139de794a45aa5949c3ad359521581938588a2ca740ee2750e822366a2d951632c9c2ba1805adea262887aea2cebaebca16fb8366da03c69eb1da2b2a826cf4d94cd731324d3c4f962822d5060f902450b637c21d569c8b06eb82175039b23a64e400619ac96b7345d8c9112bd596d1a2f4b0861ad16d64df7dbdd3453d64d1a36d50d970689ee5aded290e93c646190c349f9a3f3aaa0e2a8b825b674ee868668afdd17a145b6ef3f90406adf23b92d51a52fed2ca768a2cd66e352cb92aaefedde44cbdf07dd273a0bf53d27a76fad97b68c8950bcb695e3388ed3e9d984fca1d397e3a4fcc171d293c2be72e97a1f30c496b7257ae88a7db8204ea97f431b08608d9741061c34c4b0960dca86fc510fa4840a83fc514fd7b0588b0462b5c8275aca1f364f8bab16f9c30b51a7ab961a830422a3bad6d77393d6688290b359d468ca4899ecdc9a419c635a76d669343d48d9eca0d184911cc84a2758460a4a522a51de9450d3d95322aa73d7f49e12504d0f528a86aa3fd7ec32ed386d5dc75c4398516dc32333cd1027413d3fa7f41c7568277346cd0e644b6a85186bf9d9450229614ee9d945fe900752820e3a44492025d84bf9a37ea6692624903cbbe219257fc833217fc8cf262490f94e02a9d8daeae92d0933dd9672a73f1413a1ed5dde6e7238daeadc1f4469ac7317a245f3dc8728ed3b77234a0369e1b917a1349186a347251d453a9bd17b5d123d74069b3bec76c64c731781a42a9d733e4929a5734e6bed9562e0bdf74a3191e3b82bc5baaebb52ccf3bc2bc5da2b7af2044aac5787e2f5ea4f9456578af50a374de1ee28258a12fdec19e2a45a2655a5c99a9c59656b6afad4f5f60c71f694aa34d6eb4b30facefae7e36386121230650a15afa682abca462556637d0a15598d85a750a935f0ac53e9a0068e53a63419d55898caaac6ba0a350e5bada9478df5292a746fd86cb52657d5acb1f07caab37a8b33c5730a573ad2e3ece4a8e9cf10efe7c15c6c29993a935dff4a9335282faace64f74daace64dbd1c70ca2bcb5ec2ce3d2516e8d9b9796b796372831fa737db2d27c76fc5ebe49a5d94a03bafc84aa34fa9d75792695e6e3b2c7e527994afbb9e8c297e1e5789ecb0f551aecf24a2a6de7d24ba5bd7a2e8fa4d2822e1fa5d2745c7e72a9340c2e3f06e1007c830b3dc78801660ac2e0195c67d40033cd34b8ecad1163a60d7e3cc7c171c44c19e08f5f8d3e30d38f1c17ba37f6c04c321f07c0bbf10733e1f141e7c61d98e9877b1d8130930f007c769f9169c7b9f7f80daaa9e7797a1ce81c7612aaf1b83832f5c04e01a831b5de03e83fff462620ecc45363f20e849d5ab57f0766f2b9f89e91e9fb39cf6123d30fcf77dc3532f160a75a638a5ddc71d75923930adf7760a71f77647261a703d498c0f7f8b013d07fb013acc674fff39d9129001b60a79e1ad3ea40ff819dbc1a53fdcfedc894033be9d498725c14e2f98e07003b713526d77b5cc7c80400ecf45363e2fe33c34e4135a69e8bd7e0a10c3bb96a4ce17bdc077632aa317507ba06d8895563daf98ebf46260cae02d3522d03ece4a3c664ff738c9d6635261d173113bed3acb14e47261598966a41d809013526f13d7a9c859978ce043bd3ce995ed73906d8895663621d086326ee4cf74cf64cf4f5401fb113ad31bdbee31f99e87f30530fccf49d8975a6d599ba7b779ab59ff3189960df81999c660d08338967729da97526f0e17f3093cf997ace143b538eebe8196575261f1b758c51c6c9a5cee479466f67545267f23ae36b9c5eea4c5e1cc53a936f8d4bea4c3e1c67539dc983e30c5367f2dfc81a8fea4c7e3532a933796f9c4f7526df8d93ccf83a93bfa31d9b8c534b9dc9d371428d483376c28fe941f1c95bfa204bc3687acf020179176f2c806a7a4f527d9616e59f7bd954b2c04bdb7328b4fce7ad9eb957ef49f80fc4797ed5ce15c81abf7f3594363462e407e8ead56948a43b781b0e71626d36175a293ca2a327ce236085382359daa186a6d948d3b3c6ef73049790688a25f88db9b29ccca6d3327969fa8e8c96a64dbba9654b23aa9a83963723d2f49499a8a6e7b8f0083d479b9b5db9ee15d37c02910e675aef737779f1e4eca5135773cf5d6d7a2b23d5506c0d89d0beef8eb89ab397b28329274c3f99ad34db5a4185b0b839011c4a4c3145e1aa2206551466b248a28925c69c19e3c448643151900e8a58c1c18df981556688ce322827e4e50cd3f2944a89145329517ea9977ae2a5fe6aad5cacd532e7d3a517d3a624404ba5125dbca756ed8b8d6a5b5caba68d86ceb369d57956994f33cbdcd2f54d88888220718685325098228c27ce50628c0ae198a7d61218306cd0220817c09891a156b1111151905acd68c1c1191111b95adecae8d0590675b7f8b27caecff6993e5f8e63dd6a5467720892a13a93b9ca6aadafb1d51da958679675ed583d24724e2475268f04a5761712745fb50c93589b2dc9a4492454adc345ea4cfe88d2d9665c2d6f45545590caaa7c0207186c3739516c2953b39d952872c8a1881aa660aa593443585187c0824704a74d066b792b83a5bf96b7322780fa6410552366af27994a5bcda815b5ada6681395accd6f099326d3cb0c339b1c206b4b2a8d757a31f6b102e2483f1d9035eae03c5be7934bb3fe1af37c7a8b778df9ed7aabf5fb062dd2f1d5a5a471b667597f79281b6509f5bd8647c0ebc0594a35eb373c1242fb9cb3e5e06c3c9c0dc6d976381b0fcef63a0d89e8bc137990a9b3d5bf77e111f03e78c59a647a3099d824c3838ccba727265bd2df5be111f0ac83e1910bf48e57366495d6e3abd7355ca0461a689c2181c8df07676f7c8fac57f83119cff158cd28230e9c376ec8c8f171ac2d18438c30c0f8c20b1dff58bbe0620b2db2c0e20a09444a20b257ef31fa6012c57f21119d57a067efe759f4798ee5378fd8b3ac795c4a1a8daab3d5797c38b31ede151e01bf03e725cdfa2b3c1242e7a530cdaa5375b63a10ce9e0fce31d87b707e8c46f5ea1ad820b65ea72a4dd674e0ece5c059e4c13906c3f93b75aa57e72e8ef4aed1be35cab34629a7ebef1bb4e8ef2b51e115a9f03109a4470281e2893f12487820592465e71c1d5eca0e6e6bd6756491ecf0acd1c70ce213b1590fc1b0eacdc249934bcfd563acd16bbb3af8ddeb19b23eac747bae68d1f7d541d6bf7fdfe8f50c3f166b7e8591baa71c7483203e19f4853d757af64739271ec8f6e40fee76cedb9033d9738539370c5b9e86b68d9cc915e4781dd456a8921cc8cea28e4e4b9dd6800871fe88724a7cd4b34ce26d7d9bade30748a8ac7eda29a23c8365aacfac90a5f3dce2350d7dcc207a365b4b9bad8f28dd428be8b9d0a64f0679e9f91e739a4cd7f798d3dd1c2ad9cd69d3b29b23a76537a7aa25775bb99b43d5dc6dc9d0c897f4c579495f6bf33dbdf55a3a229675d6611f2988f62dafe3ba39543d4323b77ddc6d695086c8dd5654cfcf15a688cc9008f81a8ef4adb16f6b10e7fc0e5b9795e6bac5f7918218bed58a75ebadd39008d8a2078fd44fda11cb7af8a8b350afb459b397597baa8f8262e67c8ac242e932319f3a2b5b8a489a4f4ecc252a16b5d6fb7a279841cf3aa53f197e076911ebf5fb30ae5d58b15eee3e5210e7f392febe0a86439c706039f5c07212c37232c372baed689654062d6fc321ac0cfa8c53969e21eb323c42cfc2200d9114a93324b2ce3c193a60d686a80f2731db95576f6dbdf5ac8f2671c8ab31b1c6aed8d572b7af5b792cd6c76ab1ce9da9c14cb33e74c1d095bd9d18cfeb619ef81db1ab789d51d69988e5ce28ebcc051b7946596715e783305f3114fb274ab3ef17365fd8349449bbde498541cd18423414da153f51b25def445699a1a1858662bbe2d6a7931e9d67778075ee9b3e2d19b65aa3d7327cdf39391bfe62108718532ceb0cac330ebf6e5ed2f97b1da1cc669de5c30571defb0dd2b3cf349169799b03158096b73959faf4344853af69f8f91eb759ff2c182567526a8aaa8d9c5a53959ccd9a93cda8830469f9203308384719846834a2e1d015628795e667d30f71d4d24ae5191b991eea3a74a447cf5317654ddde64c91f524ea5957df594f9d6fa97cf5ca25cd277b0de2889dd7d747939867987bdcfb82a9bf9f64240e337116db88c8267a97d5539fa7eea2e495ad93c3515d290b55c3502ecddd87c33e6610e7534b27519af57c42373ae99a85f352d7d5bf19070a7138c571250e18e2b041d675943d2167928db78528462c8e9cc99692d670b840ce646759c3018794c9aee1901551d791a8b9aee1aa3bd259d9428603413df76e4ce23c98ed817a0e4f294f86af04a29473059717a51496842ab5041a5bde6862c1373f456acf9831c031e58d2a4b2c28b3021530a01813a6a966e5c091c57bc3860c6a70b0618a1598a959293837b270e38d23a4d4cd0d2c1a367bf6ec39b980e0e59730693dd723328a4652692d2c5f9b105935291e49a58507a594d85d9651b4c43e6610a554cba647c2fa0e1e8f9e18ab3359d1f8aa1a71f52df537412a6b4a464b9dd57b9e28523295563d91e22c9299e3142a31a56aeb7aa4363d527bd6bea3eda33ac7d9b1518504d44ce0712ff6d4d3e453694d3fd0ebe9948fe7d12920c2db0e6b3884058eab3147e99dcf31fc11fd54983530f4b2ce74aef38f8e3c143f49d2e33e4fa2c163973edfa1c17b48b138b70e7b8ba7759eb7ce731912b9cdea29597b0ec9f123aa63cc3bcf530ed2bdecaf0363f19324b1ef78921e8f81799204e8b1f7c03bb0ac336b420c4b891d084b2c57a7e3ed462427099833278efe3102fb77d8bf776c94b51c3f46bef3fc3b0f7e5d3c6c74327f8c7c9fff3e3194da483b58d6aed3aa4aa392b3444e9b2675561fc352c02489dde75495e683a53c4d5b9dd5e3674985c1b39413f45a069f8f8d3e9f63929fc7de731afe34c0e7b18be083b97c02930bd0988f6a6c346186f181a5074fa819e6e7b1fb4c2bb7979ad270023f8f6159673ab3675caac93084cbc2e15f2286523bcb1a897ede351ae13a7c065375465567f5789c6deaacfe671ca37486523b8b8d343156aa727abc9e6a995595e65369b14a03aab41dd7a2a505344a013a1515123057f719a5f89c4acfc7c74629b153e9c126f45cd67e12d0a3c93e3636f57cc4766cea39ce74c7f843c4360be7da1637f560301723c52e6b53aad2a8e72171a7ff544840ede740bfb8f6779fef38abe9079bc0e3b2d6f31e07b9beb76f82b2d2a8fc3fcf744a7aa21b709a4adedcd042f62bcd045967f540973b6231990f16ebacfe3e077a1677e0a11fd559fd8efb3c0f6189f9584194b59e9b7042cf7b605bcf638f7d0716a57c462f6c80acd5d003db2b9c6b02dafb47151250e3d10353e171a083183fa14da9f0b8cff3ea748a0a8ff79c85f30a2bd5a6180ad71eeec2039360c7efc5d9a3535dbf639475d671180ad77949ea663152179fdb7f7744ba211149025967b40b097a7ee9ef38a16cfdd95142b5cf4802596793043dff6688a407f760b1cea0623d630cc72ab5f509ae251edaf343bdbd11a59d7a4d6f6fd882cc684a5bdedc986afb396fab6a1aa5aa54d3dcda50436f8be8c1fb6cbb5ef09eb32d65d1130a8eb65ad9c193d99372d6b3d636ad3758319fa5382fb5047269517dbe47ecebe9912e16b157c7a53a69d30ba0caa8926a5a8675d17fa2ad48f71e95d997a4320965258bfd2894952c3dc33a4310eaaff5ecab112bcbf7dc0d8fd42326b86d91ee6bfd6dc34cdf2ff567c1ee9fbdd75e10e69cb618687240cf85158d483b0301cd0e64d3af2490ee140aedaec352fec8f6dcad7912b143b7cd576f732aa04249db77944b754e294fb4deedbcb6a316853452005e8f6868c8888aebb812540953c61159cec830459c35da706b94d19263a04903055da0b9410c338650486305963d2ab206d40d875c6f04472fb8e4108a7184d50572ecd118312a44421d157101974af3d0986a71073daf4d9dc9bea7de109dcd4f4ad1881231d150cf263a936a3c79e291b56a70512307ae1ac179506a68b96acc508f41afa76dc8080da807a141050d143a5faae5f4cd35de68250a67ccf2c6869856a26de994d65aca19b9fda4e965e7129a623a4770461872e248891ea54641ce88a30629236623a318cc0b20a34a136274c61b74f57a0f172923cee63d3846c0808450cf8b33da58c24454165232485166861a7c20e326882dbe842106ce196e5c76861a9d853aca615144119c94b3c58c1ca4bc202607385d74f1e58d1c362c395db432c0451869604083431b29100154b590b38427078a8e8869d369799323464e0f428cb99fb48c3671d030e3060a03322386554c8c9861de4c4299612ba3aab3f73842404dce9b7388a88313859db5878ef35a00e6d60ac789aeb5d65a7b08a232384dd08bb405b1c341d339e886385bf0843c3b4ce1268e9a2e0e15ac37314841e50bcca420c31963a8bc6943461c215c71ceb068e0f2c68a952e7ca0a209a2204c5a50814b116b6c4928d193831a3668a800431a4f6de26cf9e27401dfa8e0a60550537cd5d20b47cc9b2366183271ae749e50134d941a2f3e6290fa22c3136292a8a205715000e3b060d9f0c0c31b17aabcb0b120059c3276c20aa6d60a878aae70bc082b986973b3849b203acbe2f0c0c36b17ae056a8cf146c7da7a50f3da0feae78adaeef6de761ba84ee645cc413dc97883cee4143abb6eaad099ec190eb9b1b663b475b3a5ad7583435b6bb91dc43c34c44931dc64b16eb4d8cb49b1858c385ed0a0840c3526a43803091f58a08411676a3b88d316d46dbc3ea231203a9b6d9cda4ce91cbb2b103dfad6ca72ae4a9b1e0bc9147ad7bf3b72e15de3acd1b001f3addf319ca3acb36b47f0749c3557e7ddb1bb6b94353b729fa107ddefe9286b77f4be9135c63098956a9f6a0c356292beec7fba253f1d2642bbfb91a24da9b6a8ae3f12426953442831a8bafe035a74bb1e899906bb5e891862ba7e0412ba205a943df945d723fac592d03929a593d2d8e98fa850fd7d6b6c9ab5d6ef28c2acb5fe11d1228ba52cd55c584aebaed184d687a2c42cd41e082569b5c6a6d6976a42b4e876122bd5be18a94b0b93605e4279754a391f5dc5f1594befc91f348acf4d8c2cf55e2f88ce339fa475862ba3c0a081ca8d3135386df1220c31c22b5ef0e10529c8024715736a0d370c34ba4ac39ccf72a0bd18c60bc4b0522d4fcb1b1854961061b118c0b0d52d70c88460647496c900caf0c5189d87be0883d61ac40c0675a3ec8b355fdc3a078101252f1da2b22a5c43f6443488796888aac3e012860e43529ce122a5023042e8c045adc2514515281a72480117280065415f74f9e285ce4160744184a64d99165e60c30a296a338a2959f07085872fe6a0d145a2c0a8e42a574c6341cb945333020c0040003315003030180e880543a17026c9ea1e14000c92c64856469649a32046418c32c6184208300000408c2102332453b6010210a309d5227e4ea97e1d15035d0e462316a1a7b70b42961c4678b5f7ac61b5d14f361aadfb6848323a171870e105311e0298c2f72a9a4b239948075deb478b81a117422a68e5f1390764b86c15895c91d9db9bee092482e7de00d8a8e6a153fc25e97b99d001520637e82d93d60849dc40bd6f28be88eaa6dde809f4d3bf64e7e56ac14fd446852bd1d275b6058aa677435c62b42aea28cc5dc90a1124711b94f802d99d1773242dff30390615e37001620a857947e22d76eb5cbf3d5a4f41f3336ee8d529a9978ff4605931ac9e79134fc0b8bace6fc431fe8b5b43e60c971bc13dc81c582eceea20b58fe2dc7c2fe1e19bf876cecac75fc7ecbc98d9b3b5d1ba5bb2ed75e57c345112c11f814e21d1bad99ef4bf038d5a0c88ffa912d14faf52dd425a756d9618923a47c8a0e50df7b9ea366b613b38cc99eeea66dedbaeb5d4b85166c549f98ee0ad9064e71fc176568b47f7eb3edee8ff0a2cb6728e2296385544910be958561e315f3e047c0c8fdf99b0344e22b7daeddc918df952cf79ea30edf3fe2fce7573d8cfc7dd790e951d00a7196ee2847029416c88986cea6ac4167e5ea0c099d0998376a3f4a0113fef2acc660c1beb9b0cdf10a99fc48b4913d09e32f1cef343b10437f8d072266ff6bf820f16ab0ee37d051d27d8bc650653e4f85d0f94b5b7c85aba37cdba3b1ae25e37129fa2e5aaf0c8352669431d5479a8ff9e1cbc38e5c59bc0dc86fc2ea6ee5385668132e35b5388a685e84aa303483aa09f4af4142938de5aef388ece5bfbe5c482bcd3a65f7e31436f728904104d49a4c6bb84be1f6aea7c0382eafb28dff5fb1caafcafe3c8f46377b313c50a87334e347f0f5c803ca9bb53225f448d307a8545abdabeb3a00cf8b010b44234a3189a2b3a8aa5e955bce2b6421f6e754ef5b2eeeb4859bcc1103e2a05513b547a5329ae3ae9d16b176348458695c3022cc9823305bb45e2b751ce347ff979150504e207f29f69d91d88fdf63d16f387f3493752bbfe270aada8349c1451366c3d154d027b9cba5fb7d444b5ed0c4ed91e814f0e8683a5a75e803502265306c4a53bb08e8fb7fcab85cfe1c73181f89b654444c1348f405c43e8e5d0f680ea09aa0eec1467f7e38d8396ce1ff0c883fe5f66699e5e83321018aa0965ed1c31f17e10ef447fbee53c21242e70cb1193e9393296279ce25826cbbb55715004caf8e97bd587804b5e62004f8180c087f737f701eec06296ae93c204d6e4d514eb059f63594083c462bb46085c97c9035be8c97d34c713211a4bd728d83f79606be97b199e8e49af73ecfd2b70fb879fb89bd55568f88d91b5f97c012d2a905891f5a4cb6d3a284296e596ae4d357b22b4ea1b492437571b4b465cd4ab2143b0ca5199ff34195d7f19ae11d57845ae4f5f5a5d073e7eec14b1f30702df7ec984b385c621d2894b2b16538d50a1473035eb585a7ac2ca75ced23c0d5c770c63a905b1999cd7f642584c18160adf3de4f0b882977e51e55e384b9aa5243f7f9e7464969fcf3180610da22662a7bb2c6b6b15e895747225882e47c18d61b8557160c96b24e501c4f50c57fbfa8346a075efd3212f18b1eda5d2364d503225b4a64b29c1574e8fcfcad42344862539c8ae0061ff92428c5b84ef57ddd7b0c1791b14ce736b7d59e9be267de856a524114986c041d7b19ae9dcf18fbd713882c78ab6e9aad73337dfc2e30d92c2524258b566e96f37efb91eeff3249eed984cab49ac3f13eca3e96fb3ebc59da2d3c732419cfd91cf4346f90e8c64991214e47a3ada31b33d654e0d179c568e68ee3e3b5a40bbf7a07dff86f69d9a2779838b2ebac9f0ce9a4f27ab5b4ba12203c746fabfc47c19dde50ce78bda8ef4fdc6c2633b57d586089151ea07a8a81202554cfe9a1962e0da19c7108d73c3300425b5a8f25c957452cbc1108683eee526e367626b116d50b29926edfd4d6735e41c9ddf3a623c4650ba64f9569a9fa4f84680626750301b5e24601558ea281c544fcf9c79ddebe271704c66afcc213707c3d1df84fb4598fd08da564f089bb3d65c00e2d906ae6f1e921317ece652212a4b20d4a5a47c7a8f5a3ec7e120d3417c7f9cc00df5f4d765a5de6a2dc8657fe3a813bcba24df5c140e65548186780a426218e4f8d55ab1e54a2d06cc316be96e371e055421e2df9b85196e946f623d5d5d80ee35da905c34b9b0b36d57a6647d18d0e799cfd72d79e85ccfdd23156cb89ee736dd226219d819e2ba1a98098957c7d3b1292e9a9d442bd4aa9d55485be522644969d7f60208967e0d8857fb4ac38ca56ae41a98f25bef197da1cc56a9d8c7cb66d749cb21dff9420ebc36790d72e137a090b5232af94b706bece7703665825e0d0fa7d0162ff379c7304a0df27c96d655df07788588a436d8d1624e09470f7d479bc42a82a2641f05bd1c70deab6779c248c8e342a01ebc30d483b5eb56374a7d7f8a0ecf8800781544186f06fd4abe732b8d19778eeabbc39cdbe1df6207968e6e481503d0a2c5eff2d5bf62c633601e8109d72966d856288b200bb454080c87b2046d413896231f3e969bae35131051ad94955f4dd4087a0a2fd1e34034595b8f9fb0f20628b67d110231fb7d089248ada884c93345282c8ce866e81ec952d06f5158628743eb5945fd2e3a9e8b463b3e9a8a032bf41927eea73092a775984f8faf50d1c8460795780378aa91b7dbbf5839bbcefe93e77f5aa8c0226283f5283357941e08595f099683c7f285e397e036c4826f6753f6a407ed339f44acb66977b16b1200bab9bcecb1bf9b71a3482d6fbb3deeac204710ad83f9e112d043593abbbe8bb67b99370cc82b26e74fc583d40ca0097b342389a5263dbece509de059b070fed22c4c13110389e4d4343ae7692129133d86fba7f140813f2e1dcd847f54b020d3d9bed048dedbc6462072a21a13d00be0ff031a336f1529afd0ed467d018a6d05521042c6f9747cea62db03f32ee4d8da0b649a5e59478ba8ae7eca0ade09c850568dd4945208985891c80d9625ab6f9dcf61baad9e4da21c3fa9cb7097544d89a71524f1a07fcbb5921e744d8fd1b6a4d31581a2b13ef22e0746c7dd8bb9d3fbd5341de9ba1bbfa9e3d2343a805158a4e243d3a80c89292db35a605d8307d6b792029adb5949a96463f335b2d081236540d5909f9716e3ce775aa7d4b80de6f12608518d5d1aa250030f84da33d6c53692118e7c1b475c8b4880f4bef8872140f115781295d43ab2075ee0a088569adf2fc9b74763316b156461c3ece0d15c087589380b73a1dcaf1a9c09a9fc3d71e9e1989bd10ed5bc25ee56308c0600974d7d17eb8ee3bdb75b8d5a9cb99a4831bfdc98388c0a40a40382f7881f969e0c037330a578909a85b6b5cf1ba2e5eacdfa76985acf2351c11ecb88b8dd5870af95597f537652264d8012d1865809d76ec95ed6ed19c97190b0b13ffab61a130b421a13ad529bac2016df7121e33b952f50ce42b232d23bbca0ea009c000f3b1b25003371e7ad1e7187547d98c9e5b23640ac5f2e5628ea2f4c6e36ad94024c63805ea640e08c030d4baba99065fee367c96dce5a49142c9093efa3806f2df4da99d70dab67f984fbb0a71f2f74cd51967139862d1f44353003ba135a421c0dde2ee990e2346229abfa4839f8ed77f25b5c666a35de1757fc8fcb5626812a2c5aab2640c601d35cafd956095c10691bf51a9a84d1eb5699a936ea4b35c0c96e615586f1f6124085b85511fbaedaad5d6ae94bebbd8c96cd001ab50c95d2d635299b05d65eb12a210432a5694e35142a9f9ed20b2ed9e05d180a83e928bcb4dc308e288adf1a20b84dd63406d70a0df5300b9c2044b34b27aa7a631c3481f707f6eed0a9fa3bda49a30eb40cd6bf367f683bcc3d35aaa90865ca62b5d02df84b3771a16b8e76ae903082f01bc7b8eba838c3d782727d7de33fc1182b9e6eeb21a959fbd2df0c9db7744519add7b94508b9b84a3b1db4354947383bcd77d0c243e0645b085d60be2a7acee7c579815e58ef3d993fdf40776620a15cba269d7eac6af964a19024e28e6e1d9233401030bec9f2c02c2c5e4242e6751a39bb4405a91f05b5f8f22991e0a4bbf5b85d4686a955121bd646f4adbf338751886aac70da0fe1bc6cf6c3047b4fd29f9dc810d0636ba73e57c05e93dfd23614157cf091f665efe2b59fa9968d6edaf2d36bbf6fd06a4d8b483aeefa62ca4c2ff3aec0d2b454517ec74a21e0a51723d3c5894e1aa29b21beee2521a2214c11ab19744da12613c6895d48748cb18d9cafe7f316cfc99e8ad4374f7b6c7f0cd1081a3a5145ad941e7789cd49ddd89b7a27e82927eafa9d95a839d72b8173f2407a12d69102e4fc40e12ace95191265a1b1dad00a701832f28e13f774aa38fab435110a35708b80de165d662dd972a1b043eae73c8b5f21c7f0b180016d5154084ae1531d38277962f2b794db927fb4709ceb44bae60d6986d727b7cdb38580c38e7642f05a97e62cdd3d242a5b138a420fb7cc3b79ea735058f47d3b52ac46f231aa377e57b8f7f3efac35ef528269c37562a5aed1cf7076b72c1a4e0fad5e15dd5eb670bb01604863e76c6dc4b5e773cbd4ca91144c1174e870e8bed142196b14f86d5ae951a47415b680539f5a55dd63c63d1cc69aa37333a8775aab218ee2c60a219d315907800a507d7416b4459aadc8e21d91dbf788b188ff2393e1637384fa234fd631c41ac974ca9a3c6c6316da826272626a41cac6f04c4ef563cd1e7a36ac1784d9cdc8299dbab912c8887b5e288dfa6f26518b1f19db8c8e3b465d314c00a7af47bcc107e9db1eae460bdc1185a5b73569eafec091af1bba3f000c906c4484c3d899493f8cc8834f281242fff7810f3223677057d077e404d79e8950e770b6304248deca5385bcd0df85aa6342d124e0edb966040a288f1e9b9fdfc52f5a89ca1923470d1731979fe819c0aed51e253a17b190bfcf2ff7660a8b34650afbb7df6e26442508800c4c9fe5d7f02ecbc90fec179918c9495ad81a9e94a4510c2b315054afe1622dfc838a6a2b58b87a1307eb02f6556b552b2bac0c3ba2958534584d19efffc866506cba9e848fbbb6e4e487b3a1a4b9200eda0e69bb820e512e93f60e19c8cc72f8901f019df82bd024f2310e13fdb84473fb1b4586fdbc6be382a88a604579cfc16ebf24163a9439acfd8c9234dda3de9ccbee28ff2d798882772b0cee6c3a513d4d8a2a5946150a83fd60b87b183ec3a99ce5a4be5f787d1d8054b88112c038a13e4ce84dbd52105b9ebe15896c62778063e8337cad13fdd06a287c52c0e80711b4044132300000be1f0b3eb81c2840bb7831d6a4075bfe965c8c0a2ddc75aad77e001049a4028ac0de00c2b3dbee037b9e417e1c033689d1ca7124e1b3828728f77c9c30487ae8474a925c39c235954b5054e8af884a09c381537b02d52ae9f864b86bad86c722212916d5103b0b74afbe7b1a48e80e80c2169813a0f0cb8eea11a09323054c96cbdaa4a7263a3daf4cdf3b2b4553bab2ee52d259e0e7ac24f9837570f076da894a14a1737a9d90767501846de255155b8d1c0cdfe2faac3cc51649faae0c9bdfd732921b7cbdaad114d5c3d4e771400a99edaab48cdc7b9cca5c714163ae2f572544e6a30c475ac32ac2c65292e87448ff7243d637d0cbacc73defdd4946ce93c3162adb5cd537b9118b7de1a13b059bf0df7415d718e26734858f141c70669418198666bfd6eb2bd306d419745b59b398ad4dc35101af0a39c1377729349ed0df65faa12638c83f83dec4ecadcbb0761406d3111af9d142daa274814c83c3a7f08d720bfe4624ed2c2b63a16252c0b1c70ee83a77f6ec66c1a354c0008416202b884d4e48ba05abee06c72bc924675d89706e543e93ac7041d8ee916cd940d75f5292afb805ed90148c87a311520ba1619908707e26e3f6d79d39747ce872a9f2594541d2b32f15d1463b5664327d52966f2d765bf5cf01e5985df2ebd1f92b1aa8a8e9c0d52be748dfa666da129c3dda07a7b3ee588b7ee5d771553bbb5b8505aa9bb10c6c1cf0ca337f81bc658443cb351c1c3a320a13fbc1f740c0a1db561dbea6a89feb4f519c8f345400d8c0252facf06098222e80da8937e90d8f7963866b40f9c37b19797160047cfe06366bb62565a7e54169b6acd35816bc3914cca6cc7ac863c7c8675a270df6a669481be310e8a30097cf3e215ccc888360e7f8ffc5f08b6480acba32e0bb207262e253ba1b2c379f719d34a0d0a85dcdd3056ff6b044ce54380ab7e08fd827191085af5b9398fb20a6b2e229857100316ee88ebc179bd824466ccfba44c6864987787f6e35d62c4fa547815e5091e86abd5a21b765707dec51a569d84a1050c1bee0c521a5ab89182d7c6756215446896a49119d04a5bec33dca4d985007095cf01577d48fc5f03f114e37e1a8c41b1ff32d380adde28079b3c20924cec86c0f01669bbc1e26b49feaf974eb37f7a98ef9b3fb46c415c7d8c9258de8f80de5f34dc227a2a831418984580e92844bdc39a22bc4f7cd3799538ca0ea0657c855ad36b58e04695cf6fff6b01d86ba46841cb233323be6f6ad4e89f5c4f74cf3134b13980fb109b11470aa2fa8874933c37c0df0d5520c220360d8b7bfa65e2a412395284677076a0b8389b3af4aefda751a44cb594c999c307a3acc3ae9e8274a87790e8474061505adc101e80b0664a124c8905fd85ebe2a1d9cd8798db203d50fc1c4338c87b7070e365f0ac2caac3e142b0ae34d34a11b221ae3b80b5cf0a9c1fc16c328a55b614f98eb661008153b09c6258f09de1c6c9613a7684ed11347e08aedd46bdca3a02da20470e47c6513555b7ff2a7ae3933957e96b6e2b686c0e7cc1eed914d31073dc41d94211b1e26992ac3a5c57974f1cc4171522e535bee3d7623095f97a84c76831878426f1ef17ae88559fcb520f4a40d19000e6185df882f0503a44d8ae24eab2784166f01fc1fcda893f8b73866ff0a9eb55cd6bc15ccd60a15be1947ec8d735c687f5d8a968684cd27e36847d8ba69ea8b3e29358be0b458429854b5f5600e97be67583a36f545ee4fd65b645658e0e47aebb9d202ce2d8600370817ae2a1aed46e9376af74100d6d72f427f195666ad501877b2328645c66901eb3b704a1dce1f88fc60edf03f416851347bf0b5b60567bf9c6795a422b3bac808c9b44a977f3bc433bc109ad1caf0c090f9fc007d8b67117b9ae100c80cdf34cbbf5cb9c370023eaf8ef008d1a86da365a6fdabc44b5ca8255aadea4c056e93c8dfee1a3368c2111277314cc4b268842077aa71b9a0149394e846997a0b182561cda39a5a6199588021a55c357386799775cf77c7dca054be2295047033408dada0205e382bd230948fe6c5d15fb4154dc7b88d8574bdde7e81c6dc7659dbfa689974ea9cc8d2a10c0f39e2075f5db4ea00309b7a85b29f954db72008f1ea934e6b2b05a5dc1c389f88a1caa577205cacd27c2a1cf1f6d08d427da23d299926565a49f3dbfa0426218bccbb1ed799f951b249e28cbad3119a16ea69f55ee63fb3e422280901c2e1ad0dc73b8f15cc7afe742c8ffe1e7117f4435290c3c4dbdd66a05d73b079d4bfe525f0f5bec06f6af9130c87f0586d21c8153b7cd58acb176ad83e44788cf03019985d9834a536bda48c645c084a95b9ac911174f05fd409aba645f8365b58d9d524526d7ed3dfaadf343dd27a58031e4116692beeda35370359dffa5bc6a2ca14d57615f7438b78ef288fb8867031e23e06195aa9e11ab48301a89bfdfa18b7e213b7f383570f71ecea59c96f2b046f83cf5c4e8d232938005c61a29e514cf7f680be6f64b018ac144b8d0545b89a081e0b024c32f23787eb758b1550735493092b143f5424bd4e855e10ba2643836ce1b128bfe277077b79fb1276452d60ddb13ac0ba4e20619e6290a856d1261cc6fe3cf6f1cb4f07a254b1285eee29248aa5d93f3f8b35ab2c23d3874968653741e06649bc48050d2e20a7c9527fe503974f749ddc0a88d48332ab49f4b1ec53331b384c1f89684597ae6cf895b704239ab7231de89090694cd8a14d652e6f2a70a11fbcadba13f51a928a721237fda8a5d0b5a869b82496dbb8ae0596f52ea24c0382bddc0c9757b1ac393b0287b89e064a8b52e3ba2ed82dbb10250dcbf67282fb76e29d2fcb561a97d6e5804b6dd87dc59d2869c03895235cad4963db6b1186828c6bd382204c1b4a1c2835e88486edf7ccf5071632528cc4135f107fb512ea98e6af2bda402a7e9c157a61ed0735baae6a1406007b3488e17f2aa048fc23a46a5d65b27b7a52cc47e55ac430884bad68291f46f9ba008bacab3970405ebdc25cc507c4f86da3f684754ce3a6f2096dfc2313b9ad856752e6b440ee511e624cf28cbe891e6593f79730202ab2650c6bd4a2120070c4c80f2819cacb10accd7ac74890ce7da4590536150cdb5d87f736a5a74f1fda7519046e1de09a978b5112dd5aa0fc9a28dc3c8d2c4cda99083dc4fa6c736dcc1cdd14e9558fa4f4ac696fda62e4a055162f75242dc3d5b9423c9cf86597b4a013e6e208dc23826847cb37384447c2040d1153720e89c8c416b16a8963656493c4e13652b84b98dd169bd85eb81f126b5348bd7b42722351ddc92bd962677c583711c13713e3e31b30d6024c87a6a3017f759ffd9bf9f0ef8a3abed159c2ad7c72f5436fc07a44ae9f6fbdefcd46d8490fe3c4906465f556a2e59ac02ec59c57bcee299062e0b8fa31c5747fc88fcea1e50e6622b368d17f4f88843f06c0efb0a669022c2c195fb93ae165bc4d89d1657c05aea7afe41cf81976aad1c0976f046b91c4a5329a2d7c806acfd01b81d175a1474870209bb006f51e2b29f2bb1266fcaa55fc370136681f6bd21016940b13395959c76007da23b6908dc1379117e955aece5adbf864cf55ecdcfdf31cde827be88885a9a4e48eb0778f486e14aa3bc9e55e4ec90efdc687dd048baa038ca3c5cb1bd071eff3bcd52075d32d95cb59d8497479e61555b3784ff6c90364312a8244576a8796c8c413d0c7c8ce1451709798bb23746e454edc25ff070a82268ab49998297f611693843f9631dda1149b70f4e2bf33e2e7a9af45ba97a81d63ae386878a192e8440df98882f844f86186e980929833a85400c6da98b05a6bfe5825c4a66befd22c50d9f6dd7aea47bc64ac014e826c4a880df75f14c051791adb6c83364f8edb84ebed132d2d9bfaa68b9803ab37af1e08d3d88fda4c4bb943a6292f9716e9b93337fc003960aa8637618ae2a09d6c11683000f54579e32eb2bdbd9c52de0506481b037a36c47da3f2a8830da117afd598b07cca12eb8028817301c8fc41b66818ef4f981c2089f66a39dc010735167e8a009c53411fe3327abe24a2cf3b58cedea6960679cea02e1b34a631e6b3ba66c902b6e083bc52642e883ed85cbd612e61cfdfba4ecbbdb23926c262c13f9dc46ac118104360e0960a86349e43552e14b633762d59d1cde9932298e924a7214425e3da4f4585720de8d1d6f4d4b690f0526132401132273c593dabca4db3c1142dc0a82c62351d498d027294b7c046e1690b622bb1a65a50fc203addb515fc7c43820a296ec6ac27f889b338ed7278342b949a509316da2aa4014d92cb451e6401e61cb83c5cc9fb241aeb036c90e658ca0723a0f4eff8fd53825ff668e630536f9c84059b394c027dd33285a50e238ddd9614d6c1e1f2583e6f624351d7939624003227696262edd1257f0c20c57e04522dc74a35897e32df59cc86bad9fb18bf0b10549e261d1c4745531b78be39952ba1787b2e0e05d2e571e396838479f9fb5a79bfcfcfa73dd11342a9fe9c2d15709d474c80323c2572984a05bc27322a66b4734d7030f599bd8f11d92b9f714c2b04841b898bdb03d0821db259dee4c72483e5a28142734e85fcb51e77c8b25dacd2fd7e6aea74fbfa56f3611e17a3385efe69abbc2862239f6982b10f93be6fba55166f9d11820bd62e258eee670004c606baa61c8053d3292810253ec1fe8b1108f38e57b961e854e02a03d06d88d45c7455f9b8704f6b0d6e83d9072d70bde4b719167f135771e513b09eaf0baebe2689562ebfaa04cec706ee01d487dd80247f653169e7deb7c41066fea01a9b58cfc1abced1fb8062129e174a39b605ba034a88574f0fad53c9ed895610ab3bc1ea604eacddaad4cc5bdf1a4744ae6e74e1dee103037aa881f5c300a40f73505f358a06722c66a2fdd378e4b4f50bdc38838d05a5b5f92dc09d6f355a26db724543731c96cf8c3e3077d8c49d667397d5ab2ceaf1d21c5e7ffca671f8f30e617f5871d06e6f7edada3e2621027e684349c81af418e723bcb8cc8b46797f314f62084919083e3ff17fe96ff30bb77044d4f4099f8ac0558b8c337aef51d6edba217643ce03a5cd0ae1ca008ca7377dcd3bed90a3432befa7556f1a23d6f65b6cc365db68d22110e59c4dc170ddd0859d716f5e16bcfe38db1dcbb00ad107c4dd5c3e7c63831c3a2be718312904e8f19c96856577e66c39e3318236b97274181a1db01e9743925879bf56526e0f46fd30827db403f87eec72538cfe350485286662bb25b1072f6ce0d735aed3df11a6a8a1cdac1c0431ac0c3aa818a14c7de6c96a3719c275f3a0fffbd0d9870df2b9df48d940445d343a1605322896ffeb94b91b5d6dd321bdc8cbb4773102385e31b21191be6ec88fd0262d0953d04654e52c556fe2c859f7dee4a921630cf92773573bb16292aa76520e60fb19c9e1b61a86d257e08e7b6a702a803a016391aa4da79062095e0822b0018f5f1dba526019edf654f9119b883ba54e159373c3db627857a3ec9b2ed2e50fa6955646d3432df54616cdd2cb8b75e80d1c0b83d3b07e59ffb01b1eded3523da0fab46ad462c3101d971fc70003599493c1dd38d871d88dd206c8838d1b658de5d7bd1b251cea4cfab1920e3145e8a7d01d963a89ded6ea31f7076ccdb9e7b20299320cbb9d336d47b01e6189e083e3f4189993b073fa18a70a163c8c3eb1452009a3a50662835b4939335f34a42505201473a4dd649069315c9200d5af1f37a60e9ba5c428674f85266af773751ad145190c4a43631a2206e6703146444c6e4f5f0f76396284882f02581a2809da07797f98fd251e1cd3d0a6b0848a6d21095d56aa852da45ecab17be8e898f8b8b2d9aa1871dc824c27ab55831b39fc47ca0a320e3cfb74f3921a9e64217ebd07378194a40e504375e329f55a1550272754e3d5b076ad22bd2cd05db476e53b91626608f0182c40d5c2128812d4ea4c98dbcdec32ea673e3100846b6f2178aa430d13ff3edbbfe12aa6fd608f042abaae42f9b6c046bbb66095f546cc58299db860a28f2142ef1a11661c6480b0aed184e37b1af3072b46c17bae5f8d3e9c708132b74b320f2e2783a8ffaf62a8de1bf6935b6f746c0499aa5be44717a0d3f61dea1ed7ff70c91f59d1a406798c04f76b87518412a28ac21393ec3dc332fb70f6e394a3ec52ba05efc20577685b6025af84e3e6d0f257382b3928acad29c106a5881afcc8a458e30c0d6d57271e2c89c6f37ce7faab2135c8e459711ee4ed3ecb44a3dbe3a17fe107e631614e33f30eee6693b8f28fe56271150ee8534f56ae024c645310305e53397a59f0058744f723a64c332e8d256d9ee040ba6f8930b9b411d77bdf14d7eca44e7386bdbe60e4e24030e8cceb207b8db13358136d7b94efaa7f41b4a4a919fc594fa637facbc05daceb3a3eb43cef01fdeb8eeb0020d8d68f1d27bdaf2af13cb5a8ea363cc3251fa19b728d32013929163ab5e42a817f39c6f52109959441438863c525ef56f096f662d1e6c6d4992ea1e6e11fb83f35a0b9a4bd10be5faf53ded41349a10a44e5c34cf225bb4b51ec857135b8d00f8d715e7da56a9163a333cbaf34ff11a8e6f8eb2261a3e879a006199db1481e7cd04d758c1fcb70b922ac7918e9b45772d3aaf16c18d29a4a89c049c41dab73c7356ba41e65d01b953276a509e2f63fda6ca42d348bb7cf75a513e46c03a0564c0ebc599ab53a9ff855d0162a10bd7df4356675690cc7d7bc131929fc58325e529a908e58b7b40f3d446363adcdcd78dd89820ed8cb50f6401781781e1408b7a89f86dde9d6b87e38e4cf2b2eb70c4e2d92473187c98e6f6afc910b6cabf563c721da7f446cb8a08e8d1fd0d85c9ad182566b89fe16a003c050552518f41115a37938b724664376dcbf2f9a1ebc4464abf54b9caf9b4d3170581d5201286baf146ac400d007c920003260e60c62ba90e866da05ae3eb84e9e58f79ad81e4ef7189d9a7840d26e8c53e10e20bdfca08d9e4c5a8f8116aebf31d544439bcd243fef26bf311f5b2f3f2b839d9a8c152de8a18d4eb4042dc2a14198c0d0ef445eaf83877df164df5ba957ff7ae02941b4be4d65c9f9c06a2f8a4b8b2193ad5af18f7710e5979aa02efd7df58da949da7facf48f47347bbf91eeb681ed3d69bd6955430fe53a7a54ac401a8abb31d0efa9df61ee7abb42829059b5137728ea7d1e45888f396351ff51d6f0b48f5b54094264b21563e29d2c572154b8037c151a994ab94e2409175999e7caca16c59c32d174cdb703649e48b7d608b3f2093dddba61f7cda5834df0c059b43719df5da927cbd65821faee60e6dacb1834e9a6831788dcb728a0e4cf11c30714a7ea9989228bfbad303276b84782896b9738008876520de332c436031905bb20a42274123844ba384b608b21dbf98cd143b3eae364436bd5715e88f94ed96f078e92e72d5b1027a98f8710d57f02f3f258892f1d600a5f5dc6bcae86b7d90f52ca32ccbd83652033bcb1ac5360f765d9923473d99766e579e711aa30e75ee70b1266dbb023bd7f3fd2046df31482b078cc32b5fe0f96460289907aeaaef423e98678f3d68218d879dde8ee8ad66d3b0673ec74865d20f7447edde246984226d5bc53fc4b8a4fd60b3652f751d8e847a8cd87c3907c4e8a3d9ce24e2698b0fb2d547e93e0e964e970a47e39f9e10155d38b1be6dd261086616d20a5e66c6e3e161098c93d48276009265d3650ca279d96ad65ba638f1584390cad994a8694735f2a9c47cddd8d669f3a4d418c2391c0d272d572ba21958169c3ca2f4a5c30e8ef064930e482e6a5374bb65ea1fdc30265697d1808be8274a6316ed71bff7819db04ed0a71a101e4a56750f1bef3513a9928b73987ec89129048bc418b30441d14321999e05f73c618527bc82a074fc61abc46b124c226dd62bb8b3123239f33794da8a4701c8142a1fb73d699e6b94c2159efd3d9f1f9a597b1ca7b719112a2412190a22d300b06281797cdba71ae206387ed70884368f9eec4852a93631aee138ed747f77ef8539b1603bc4fc12a42918a052630d7c7c85c811adb7cd7ffbcaa1a727c0c6e5476875fd21d03c24ba72fa08879578256fa6e15057b0cf3540b3c3b2efb480cc0270ac9c94f08dab7683d96c1c2329303541f2060e8b2a35dbe0887d466d4cb0a61aab1dcade234248c2c25151bade218d8c65d0bbacab1852a16219c34f8de64e5e6bb8b8a01e94131daba6cf0936802f7971c515d44132330e7f11a8cf9b2d1f385c76177c96fc8c9819073a8981e588b0180306c332ee0c9f57d592f043c97278323f81f81531c8993eccbb1837cbfeb3eab4ed0dc0832beadcfe681fe30241f81ce7dad249136564ad01cfbe354d2fe89293752365f51d91348acb01a3ddc10170151b821fd47af4b5730c16593f4bada0c11d99a8de4933426ce6989dc3ff6e1c82f510123614510eebc95e044e2cbdc50f68976cad5a7266e750b93d67a83e7080b3665509f68b7c7ef9490f8e7c288ba6981c619613b800164f606bf80ed5f98aa50ae34c22c42af0967006c1b999b9dd8706acb185eeb6e1a92d8ee6788e04bfa98907ec5376fabb9517438d00fb4cd17df0360da5937021377a4665c62efe00eb6c9280a4bbc0b316063eb1d70f3b6150e82226853c299f1b29aa61b6ff518996dd56cd04a3de5e67c643c2016e373308198881d740303a7e557e8daa74236406c05265e9d5143806c1b53d6587469deb2e91bba4bf9d340aabf503ea3d23da340f162b845727c3f36140a76369cbdf47f4a92c2273f075afd69d58dfa5240c554c392347281d22c978a3b91650974e3dc885a8efd072d44463061628cdb23890cc0a8b90c7ceec2b8f28bc0d8198ad1a721713a6d489d2f3d9aab0ed527835ec12f74b6ad248648180c275b8826158a8ab195bec17778e089f8bddf0dd4196671026bf2dfa0083c3bd8d398e4e54357891319b926e82290487550f91a3d512348d0bbd0d6c9b29bbd7adc0ff6fe6d7b7296a6ded5bd483e3230e9967574a3070924330773a7e601f0b7f648d94062dc1eb20ddad783a1b4d5881abf971da225e30c91e264903622da23cc8987045ffb04fdc36855527c199ff6d7fe6fe171086370bdc19ee62809a95a2898f9795d0ecce961c735a7548890c25929ce44d373188bd764d233decd73905bececf9bf36e71542884e112fece157d18633bec8ecf4c0abeb253e7c5242d513a60fd4641b8f89c01b7c3334b9a6ce5db9176db3cd01c50a90d6ac8f142a1fcfb517ff5246a8af67ae853ae26f69dc38ec399acfaef10d9b4dcb3e39a04412831c40456e6e33b8034c5d67b95d5f31d2e59b49d5437573e8a08e5c939da1ba5389eff86546e438cea0cb632167c3cb558d57215fcc033e918bd1cb2e6202a1c49705534cda20b02bdf1c8a6a8df15d2b8958b074b74a7aa9793d540f6c71abfe585005532e583c7bbe7618711b48180d8f35df6dac7bbe0fb38cc7f2e769cfe7888899f7bb703e463058f291d257dd01c032015ff33bcb3d3d6955bc49ad140536be8490c58ba30b1c00fbeb0108663ae8ac7bbbaf292f5ced9b55094ede65f30310268af1ec67279ae4ed597ff2c51840421a229902fe00f3d4ce45825fa05a9bad6e6701b41379b70f93626c62a7ab441040396aa40ec110fc820a86b29b93aad433f7f90644a13714618855f56ab90d955b30a433850d71d5145ffa3fce314b8f9eefd51051d12695a35d84e8a76cb51b1a28f00820d9330217f02ed1e27e09f441db620345f02827ac206bf08caa475cdcc9f58cd04fd0f3fdca262328dcb8d6c5874e5f915487ef6f34c20bf5c4eeabd021bd5f44f0ff18fa41407d4eb11056a082deff53cc7956818215aa795c8082d4013ae103722fdbab17ab4482e2e8c069be9ec43543e9980e24a78bf5ab3da529ae9c286ade742e83d213435f05e5cd89cb103c4b5051f1ed2faae6c00d1f34fc755221d063ecd2b8b8139d43e0a4931c1f52b8507cfc0f908817c1c326f6e7fbca5ae7206681fec5059244030df98b326b615ac8b28275ad4683411af0a0a536b56c18348311a156feb5528a8bbaddd65e3b9c7f365d7a959d67b50bec4e04ea7bd68f604c3093c6839258f9b3fd85703c58123d9db25d2121b78c41b48ccde24aeb3d221a0e18e691c192737ed699bc95ffc0f172263b3840b4a1114ea73b83de163c91a1a5be1e2cbdb35792947103d71fef9d01c3db24b923a1e79685d2d170b0fc0be0f6145319469d43342d0e4c1362848aaf3669c1f26cc54adef693c3e22470665240a661807d514a3be7a45da65724b9269247085b1ecb9746550d253b75815e66ab38291a0db97e24537849f55608fd860d7505a12c30e2fd28ece8dc8aec369bc5ad1c618fb1d060100a37a7503bb19a1807d3b43a9330d7ebb065a0fc9332364ed7f473c59e39a44ba382e611336023e9fa501f1545d99cafe4c602b1aec48259efaef92606913ec4b0f1624dbab80d63b3987f95644f582352c5bff89a487aab2973c35277a82238f6730dddb5aa21a8d36afa307fe354d1edb782926d545ad8e1ac721bf6e32b9842753400e8a102940c50f489229700d2b1223e86446fb17958b60388c4df70cf873d70927aec9f1630c0ec9a90a9f68f858c10a9d1a3b6e0e8ca71319c44304ed8751f39b41c83c5fea3b785b96d7238dca5fe18c7ef903f441825fc3c671c707b998b0066abb7bd810d6c38087a2d1bf5edeb4fa36ef5f9641c645fc72563ae3e2dbd50323e7c597340ab174db3345f4f032f8f8ab06cc136e092ded74b30c9d320442859b5957b507c00b22daf71a0b064af042b8f68340279a9449c9867bd069ec8105f43c284978f6d6411b40290008d4520a835b95543fc5b48a8f6ec075063231b5b1d620ae1fbe9bef63aae9b6100fb0f8d60d0fb6efb8acc1b817d49521990a9950e9ddaf825f128b01213c72277cb48160ed2f0af3cb317588b6685482972ab611ca0a270af0de6965c93b0419a1e7c539c0ae08cd158e375193a0abecf9c65f67f351334c60be869284a82f09ff8f9fed3a0c362f605b098bacb704af4f3182c0463abe6096fb9e443023b37342445feb26cf8d7a23672336a8227668a351c4bfc41b1df2d0f0847c0454951cd5c979d92261a82bd95a6b8972c13e29fde6108ab0eecd8803f71f33ec3c1de44c453995e3277cc6f549c5c6d009094f87b5c26aa454ce90e94665f424687a202ba3bcb25cb70e82384be4b3e51c4542198381f724b3e8c8884e4197df01f24b6c50fc2fc9989479c58b154175e5193302e4347ddc9fe2d96bd6435a0246f65ff32420955b6c5fab387bc1cf4bda07c0fba82d3fbe004d3dcbdaf4bdefd98751aeb05a263b87fbe5e986d62f77140510fb58f85bb5797672ec05deff4037e1f4783a3553d666c7773cec38dd9de8006cd262aacd5c7ddf9784ca4d533dce6054338c1d4c0d81f5b5962bd3dfa10a4f4ab81903ee72ec3f9c01c98391cd6cc1f5a86b545e8f022d10127c207247c71f9d1a568c469a791ae2be0921666391804b12f630267287448e4d10d81d7d3ab0d45f0bf4da4b111dfae325507fab4a8e010ee71f9fda7cbeb14fcf25f04decdef9e23c51036a6d2797f34b38e0fbd24ff7dec6ffec3ea9c1ad4afd62580091aa0494d230c042ecda2cb0397be80960fc86138ee2df515b81d4bc408785ff5a096c0d6cd3e27a73ab3fe29476f69924c589a223e56e0bf91f42ae21a12148880fa62eee0bf2f5aa9d4b00619d6d7e2aebfec73adb6eaf1edd6719dc47fab725fbb12d6e105f233c383beacf9d4dc37e5f5eef3f3b0372d9629f48938a5e26a3822edbf20426d89ffd4f6f312c6dac6a5b1022172aac42687b1dfb45de51f7e8c5bb72677009e3ab9975e49a5f7d5e69c37b1fe8baa32f85551f37c119790deb55c764c66263e97f5454661db037a61a633298f2a1132fc7685b27610af120fa5f7b3cb079675d87decc1fd6d9db8b1b4e5c5498f6a09d09776bc904ffa1620b131db9f9ad87c925025bbad4b26487c7103892e3799e8e29644af6e48f4566e850b67249005285648ee54700279d26e0de11d172003514334b773e7b5b6dcbd228dcfe1a6b6aaa8185c713fcd52a531ea7888cce1e165da5694900948f16072428c971c2b791fc39f47e5b163904791b712f4afb602701d51b067c7ee94b0c0cceff09ee59d2f3229dd74d95fa5ecd748d5500c015f8a393bd06148e5ed3ae5e4695c9dc1b7d7bef31e4276666bea27038fd6360198bd777732e8801d404e7356d9e1ec3ab26c373e315b6fdc072422d8316172a3ccd1cb843f261b791b3e89c32fc03f01ee6581099ea50b8f6593be35886f13ef25299515bc5560ffc12bbdca0334acbe5fe431393c0dd0f52ed65ae8e04df978ebb2c7064b8d471f70d91f95893348887c0f7fd21753c01704b33ddb8c3ce37bf4a0a3d1ec67644d62e1a0e163b0bc9910a0e5f9eeb4ced46f61bf9fd72349072f89a0a4b3ef5ad978da6bee1feeabb39a03bf3d2513790b63cca8148c094322df371b182b2b830e39ac32ac2e06d65067a8e86a693ad1c4dc4d8220d11bc8808c21ee5fc4e653f521ccb1ae3550056bafb7cde2998a40526f7b98e10be26a1a712de14517d0f801e1f2df6cd6b698caf27d4711dddaee9645f1feff9fd2f724cecccabbf4404aeedd609c545c3e49285c604e6fcb835df91c175203ad9db0e90cb5b8032f9d8e9323a7160f5378edfd59970639cc295a621c44b0ad344677d20cd617b1d4a3e2cd30d7b1c7bb668b36fa3e1f9b8073a8b7a25640393e5c6c7486beb84aa16bb195d7026f439dc323b9e959e8680c117be2fcf9cc4e3d03dc16375ca38a94e25e5c7eff8e38a03ca930d3a0ba596905986ed23c262dbe8ee29c00bce6f0c670ce69ad68810991d61a8343cb37514c354e012a1700c83cb824c9141ba846d3a0ccc3c8abe701c73f5d25353320024079b5dc514a63e88a1612f3d4a05d7209168169f6c99dbec926c06299d034064bc0e24311109767ce13dd5d590a842b64ec1fe180823b6469b5d52adcdbccdbcbd16f8142a253569c212b98811d5a946efd9861aecbaed9f152a863ecb761191b38c7588530194bdef571bba1adc8b87e59727addd22013bd907444e95d003b9c7c59c664d271050a8b080619b97f3119d132e16aff9c04ff83acdc506440c4d2c96450744369d8e50366343c971704207128b3dec1a3f941e0174b6e385a2f9939032c9ffa591ad9bc5e62319b625e6f551b590043f6d74b04dfbce0bfdb58ab06d80ce6ef0e8762f592611a60b2449a403398d78acffa6052dd6647fc0f23a65bc6109353c9a281e8e038490c69f740dd26f6851410a138802e579e969541c12986bc221ba81916a98125e7b26c3aaec2a92588dcd594581c24461286164b9ff8c330a2a802d757054b68c18ed9c56360513688ef7c5e81dd89b6d8f5114928ab4bc37fd3dd82d4b285846e317d67a55de92a3a5e904db2fa91af3abf55096c582421bac4d3b1f2d1cb3a1e3c5106954b6eb90f7a2be734b52d3f0645a43048bc8a62b86c79ac305100187be4943ed164d7604fe749e67f366bdd04d50a4064d63ad52e00860f71deb8e51799ba06708854fde44ba6aac0f377449782f1b068d5974cc22910141fb856c888c5e952ab48b881835f8b90841b6388df83eb6b6c482bb29d0f1bdbead5b06d24bba8f283635443978508dc4997577649251b0de5b9e1193c16eb4aaa7bc3970ec305f396922ce6236d600c9b270ff37da2b927685c07548f2e4bbb5d2114571172ccbd9e042f71683139446194163d0e5561a864351dc737f55678a545710e335dbb1f1003b03fa940a4f05f612199834b3d5f02a024eb2e89c6824e8308452f8129a8237e827c111e5bb19bbcb3d3356081203e76b3f2e650cc77e0e8bad6196cbb5bb7c2f9d0ade5ac1815340e86d9afc363cb6df4f7a0c0cdc6cfe0b8e698790a2fb4e653d7436b99ec764e9bf65501096e23c22433d770411c26788f754befcf1bc7ca51b2ade804e136005e2974fa978de083cc96d3e4c8e93d965b3ebe0ebd5f5b081469c450f8efaf60cc9306b7da83beb825ae6b876a9d0c2dd02569e14031dedfb4f3ec00e3dcaa6480f42ba33c5285090b1e269967d95e03df748bda867de003d2806aea542c31a555655a5be4c4e99be31aced4dab01d837d436b8bfae4eb2390b6d7ae2213043295ff2249747a652144db3398d36f8f9274f77b79c9825e4de59f0887d57548447ceca2a9bea7bee6d552cf0c2f9c0706d57fa13ed0e9a6cc857e8eb670fe0a1142c157ab46ae913db2d664e289f9adf09ec01657f497d84066203df75484688fdf29ba0e1497c0a725a05a5bf8adb47581f0479de3ef714a327a23b6906b460bbafdf7118eeaeaf4c22f1e320979962b249a3acc96d92c343d34602165cdbc863b55fd313fee28c129dc56cda66e4be53fe02041e27ec815b79cb6455692ba4f973b874a504d1545fd279d88b81b1565c4c74aed6e0c6625b5c5239357d34f036b1a1e626a5fbb88fda4795019fd8530e72c264fa8c473263b95648d9bb4e768fb4cd0e0d38b054357491983563450a62f173e1c7f7d2daf7dda81dd403cf7d9784e283a8018449230cf605dfe9b216df380295f1d48640318e940f3e17a5ef7f5cd653e4f0a84923e10b65c311765a0ca00f3a9d1f160562d22c51841288815f1f0b5fe6db27a6107ac6e81aca1bf691dc89db88167b61785dc2fbbbfe8342f688dc26330c2f91316660bf2071d025e959a3bb5bae53310eaadc2d8bba3cb945ee6b144cca3db30b3201d40ed63678891966b36c65da313b303b81c740b4ac6228d3f1f9c2bb4ea8212fe86196e5e513c662ac4089335a054b8d6735301bbba27917812fdcf5880207935097a0f05fdeb6315b47fb8da7b0e1448706c7432b1f6c765104db7c7385d7d1c043db62e7811ae7196aaf733c39c5d6c49a99270e54e9ae74a09b103085819165a9af30c982e0d89ac336cf239079e07478b0ad80a44f687b24ded3fc9fc608629035fed37e137bc78e7270492fb9704dfb550531753d7abe96f50cdd14dc34113062d6cb8cad2bb28ff13448af32bda25acf7225527d3992331c611584d6c84ca8aefd8f08ee94d1e113718f103e16c0e11a832694987cc20304293f0b1b15226a11387ce6ae2b772bfc2151f6c7bfc73242b6cdbb2fffccc922d989b6574060ba62c8299ca0f8f985a0c4dc0bb80ec89b4c4c4eb81abaa831743c8e105357247463827580c05f04256e675fb002be96397075f2b084969af718774299761cfea8d90ff7625d90a4623cb51d4a7d748102baf7f3b1a18057ef62ceae332bb59b1015eb03072f723fa56cc1a389ff7491ab52d20d4c03f07aea9632924b4c38a144693071b7d6b4ae5cfdc164c4457e63daee5897be17f28b2df9a02ae7a395750d59c92fe6a596aab4f17f48c080fd0380ad36b832aa6b0c221c7bc90f15d9fd9b87bc0f21dabe1a70f30ef5026b29a4241481353c4ca1e5fcb7611e3d9c6648bfd28ce0e1b35373c62fa98b2970de8d8e4a19d1d0daff6b8c60779e0ba3efb808612330ae11ca856c27ac5f5d69e3aeb1b8432887dc22a7fb4f74c13098b137327b56a1188f465776d4d8f5a607a2444c5bf4e860efdf2b17bb03593475c8bb95716a7c695cd42ae0d3ec512d25d11d4bfc605e34c39981161738e41f7a31434baf109e6931d8a37b3e6f6eb0fe9c53ea89d348b391e435e02c450a54521d11a778d6a5952f7b7ff7e8f393779df4163045adaa4cbf6d81197e46fc60bb5298fbe2acb1f2721a4bcd6b8fa99a516d249ae48ce0754baf07d58584d4dcd35cf94df6d11912f5626772c4ace11c857ec08312798859f4ed3f3cae4c2d87a8c741be04ab17aa1c23c0267475aa20f55dfebb43d1ad07a84b72bb90b014ac296afe1d727f750b82d9e679b123d9507cd8a3313a45ba452e72adf435cb4eac9c4482c65e9194df0506a6e63e685d17b214126a88c83c9621029ae7bfe212c2d45715228160b2bec5e2d7cf06871a5a2059ba8db98508c390db13e45177623c51c725c4752a2d50cedc98750574ed09a286f7e19527288f1af004e017811f853f45239e87d7f5369718687bf2c2e5e922da3ec021de88236e2088798d7369f60d02f99dfedaf7ba4b14f11dbe65f5cc257b2293ce0bba9798541a31ce90f2eb52eb294b3268f26c70db603bae988c6b473432c63f81ce7bd130e5720ec8eed91fdc75eaac78902d881214197130c070920d8aef4b63e51fb41120feb3c07efa06b00a6342872da633b442185960d70179d763be3c96cbfa9bbd2e5b0d93048c2fdac2589a813a2312583db38832c5ecfdb63c15dc7420ae1f7ed73cb60de055ac81b86f84cb21545042ee0d03898f050fb8dd8cac942b588b436e943fac6c079229fe11c2205118494cff20744933264d7a4972948a1f6d5abef84bd2742617710a20762678565cab7d872bdc25b9ac2e91b58567aa273daa434838cc2650ec735d866090827f14ae59f7047698abd7445a2208094649cfd2948f0eba97d4148a7e0f650fd683411c9e592917c014d0a9f18ce8a761401344fc9577209304f5b4b9994b1d045f55adfb58d8aca4f024951135151e3f3b46d64925c4de46050836ad748a225e8b5efc0713426f576c603dd5fd7d043a9fca2848a3111615ab445884e08dd1186b89db007e18b985c6a1647a83e7178787c820834b8ba5258724c13b3399cb4388bd2727256382b1e966c8ab394c387a5f02a098d9ef4b2a16b08003081df0aaaa8f861a2af7e210c296468c0cb11caecaf041a407773204a69b814d3747e663a326840d7a17063438b939e694064b644b98e80860a32d736e5050287f7de81f8da0819df05ada8c8d3434515c9f3b5faccb20de2a44a23b9875f062b5d5a5fc67ff4d343a45d01277c06e62bb10655c428ab6b83770e45f40b358ebf2640214af9bc7895a6185e5ab08a989787002b6e561e7b652da061e6d1036ecf21758222089fde1bae89ca183c21d14775309396e46e90549c6d08ae9ae27e2347913c4e759d50039920d1a149af0a78eda714a1ff6a0b157a7a75c2c1233e19d74475ce5144ab1b547a0e337f382f9f6a727cf02276774ae24c02a8bd5a365e6ee5bc42af6e56d24ac7ee64885eed140b1139154c77bc4167cb635bfdb881151ced6a539e2543f7e70d9d511e6deba406560d47dc14b8dfe56e2db90897fe49dd5c42ab4a50f842d50267deaeb3a129373b81c1f1234b5aa95b9022b92a015663a1270ab68ff02e74078a9005ba5910f8949f196c73a9820c90edcdfe5ef7d5ba1b57716c1bfcb7ecd67175a5cfc57e93cf18e6e00c2c23656744892b76d56d27a42110f50edd32b0b6b48814b6cec5987b89aa403b33d9321dd9336b3db1a7dbfbe1c7b06701da43fbb17fc83887d9d07889fda4b382f42170d76a29e95080b0aaea8ad3f553eaf243dc8a94669356521a8a8b21f97415d1e1b8b84e6818ee05534a23f35f3e0bb9dee254793faf8ab3bc4fe06a39415361248b9cf256a956d50e8e5474fd0a8b6a810c643ea5a52068c24ed3603d1682cca2de862199d71f7e8d9672249f3a24d7a0a29af376b5be69ecb25787ce9e6e35e6f05ba0ebc25c525801485c3246534f42e2a3ada2155f3ce49dc5e7c7dbee7ae23d87432ec44cbee3f32e28668119a7f862d1c803a24ea9614c02629d73d3d355505ffa35c2ad541744ec2c74909899f23b6384a701a43be352311657f8e08c92a1876736bd393c15bc06a0da9b0ecb040de60529f5e271a05ffefe69f0562a350f21ca9935096c5049d06551514bffeb2447bb7c3e06cff7c980bd507b3c1d85d62012fdde20abb72e8586bf64abe064614083047d2d556808a3808b3f99026e337b716a962000d25dc21a1bcfd3d6d6de2933eed79516288450008f7adfded0e0b361c150739cf5501b51444709f14f109b611385255e849d13aae86636215886d218eed7a06738b7b6029599f66bc0ad68a9dcfa11cc0952241420513b83287a6afdde1005e276483f810012b82e295a4fb73397109d782049252aae07fbc11913eb9edd5c526327c203d32db2df25b641251eed2d331488cd9acb139d60a13597c8d1655f450da8172dbfbdb50659e8378415bcbdbbfd61be2d86369fdde65a4f54662e6299300d5530fbc5824566f6f260189850a294503270636b176657742aa2bb5cc2fe9b76acff20bd0c2a3bb6d1c159702dbf451989bf542015866095884f59304780e776db02cd10cbd19c40bd342e2c868a090e9e737a778f6f9cdd09060952e64a860bb9031b4710b6a59634e8ac7fdbff7dc9acc8d5b49220afda370a574271539ce6355e921628b4b1240451174907bf8ff9ac12ba2e22cc7f05a6f444748f7c469493e6500f7d3db96401bbf171dd8f67cadc6dc2292d0c098c17898198e690fd03c7299b248c4489abe6f0ca16426264f992fc00cd026e937dfc65dc8757400225653357608d9338ebec818f631f45b32c684ce0de57d1267e1328e59b0f434f7f491bf84fb212058acb0130dd93861019900efe803e153bc0e0702fdf8abd38a720f91b8ccda048b8edebb1b6abcd09866f059f52c8306f01e0509acd9621f556e94b7bdaf93f9bc0a0bf81e5fb04e5c6809a3077e9f25c7d300fab28506f5b74d6aff68350899a384dab99374c4142becd9e7d38b9849de56e7d33235eebab95c4850d4b9b5205ec31db0219a6e1c78540f470e42fea707d94ac21c6b898fd4cc0ade9e20f65814393cf8a695006ffcbeb58ae5a11e7c8a468e1bd8a233e98feecce3d8fa856fa7ffc86aac731a13fd946f70729ec1df40bcd34c136ca4477315b2996eda2a746945794538364b3d08a6873771ca4c447bf126f8013e09bc2989d3fbd0a8a09e986234d4a5a16074e5fd513c55b4c823ea57029d1864ef22d3caa263a7d89bca26c3edcc6725863fb3b7f2c9eb0fcc9b8723ea6293e945e2f53303987fd1dec1a3ffa446a0e1702fc3347f36367458094cffe48b26936c6b1c97dc4d5579875bcc81aa40749f7bc209cc8859f4178628a746f32fa2eb11edb85b1560e8a62725b66760035f0d319747c4db8304ea71c7ca326e69f54421df6924303d99e9d0f23190ee6923fea2e895be67dbe00b93670479454c2d9c75de4201e68e99df18c74827a9528b0ddea73b7bfbcdbe477bbb328b182921aad1627492924623d9e86b44438146c49fb4c2b68655bee0ea5811b0929f23cfe198f8f93fdb9978ce1e3e72f940c53550aa61b52bb03c7c948abc26b248560e2d979af4ea7e924feb100ce71f9a4082699edc21eb397c521c79b8acb6b69f78bf894e2ecb95ad1817fdfc29e74908bc1c74f61aa4d5d60eb7f8b2eca9e839f1d25e7b39739babbf86d88f37526dcf8f6bcea3197bcee18bb9b3f1b73bb52e73292c197176c6607b80381f2ff02130952c616646f701afc3aea2d0b947f28f07c086a5704bf6f101d2e822e5dc0738bd3d6e944651a2e143ccda6e264d8d857c5d6ac140ce8cf01718a557d983955702250667ead77ad3a385cd69cbf1a7093b51f9e4afccdb38d16ad295d0c424057298de1a16ea5a54b518a28f7393992b960d8bb0c33d6ab59b96b0738bb8f5b5ff7b6443eee690c77d729453fca96cb536b21809f6bd44805fc748dce46580ebe94f6cae6b6f9133441d4c6e8ad401b5803352b059e44a63023bf548c6ffc77851fc3ddd2e7bdc25a537f31af6c09eb8ca81a6151a28e410a26f257ad44109443e1e04bf3ec3d68b0238e2004569eb39b98b92dd5e1f2e10f6ad414936beaef5defe3e64ebdd7cecfa0716686efeccacef653d06194de108710314cf206231dd65ee1b49833620d452f754faf26f6a7bd0cbed6cb80650e169cccde15f6d900c11bb4cb136b008d43085e84d4ae6ca75049e8639d499f9354c3a2d4d1a7df11aefdb5d6929275f2e35f9f6fb842cfc57e914063ed5d8560106ca1417ecf788890591ee3202ea674d7f29fcd51182e4fcb1b4a888f7fa851493d25c2dbd939af5bcc2d13ef5f4f407cce9f87d9e215a499db9651e14d83d4f0829324b35915c37a0abd0d4f897e393f8c44824f0e2e3922d25bfbf93de93e6725fa1f68e2f36d9e3fe9bd5cf00b5a232a5541fa65fdde9ee96499ac38b6c5c404637b8d6016c9587a29e670a1fd9551844966a16b977c9e51413c447bc415ae79c1edab6be5d1bb16f70b3265193508b390513597366c0de283d689507a8b3acd3cbe8be0b0095dfec6a4721e1b782f1eb4885f5beab8d4539b3c7a1fc84678249c19ebcb6caecf291ba358a77cd45071f5547b665f694d4ffd599f6eebf647ec7d9d037c98fa101afdd651522d105cfda2cf94f4e0079afe975a6027f24be255e9efc8f69c063044da9e54e9dbae290f501db9861fb740abeb7f7fc8b465216ec1ac3ed4a191f478c1554f53810faaa8a5b996850ad9f4966b51e2a80f55cd21168b52672fc44a8cf49dbb76958c5f161a485a027ca1cf725ea453405ebf1729c7afc3fbc3574d5d6d8568e1325b26e5914431bec0a49adf129a5ce0ad6d66d07ea0bbbd6ab9d60b9694fabb1265b0ec5dbf2103f93071ed948306e5d947a6f790d91274ae7a508ca7f565186abe3e6f34f597d62ac5c8ef5461d93e1dee76df01d1486a9e1885d3ad7145ca3e6921431d385784e72d18a0f549e0e10501faa6a5cfe8c4b8cf68b245c7bcc124d4449443c8fca5807f6dfa3d71c379cb115bdbefda90197d98aea96323375ba89de63c6a91b52343c34ac22dba755d5e98ba6c7daef27af2a04fda7e150f25d962fa4b3e2a221cc281ce1360c06ed53de1eaa8cf7990a9227cd410c647cac0e5bbd14300e70c99c07c2c92c64dfdc6026f9636eb183da631394079c14fc7d09465d4cf9ffa32beb38387b26b6acc117c0048bd2f4e007f7af3818ab20399603ce2c8ace01582fbf375de0eb5b1147c3aa318e629333c934d012a9bff922850d4e658e6c39cf367672203983bc8c368a859f724fe9c319e917457bd2fe9eb6cf76ec51c897d87c5c8d5e3435bb672b357bc897a9e9a4070852adef25eb1dd25478007e3ca2ca9ac7602ecee5466dbcf3fc887dfd8873bdd843ef02bc77681b87880cc7c5845b28ab1ee754b9e2976dc85f3f10bff0006c9cbaf6c87e425611015935beaebe7be5bf6e680b78d04b3395dfebe5d9d19dbd311634b8854ba64c68eaccc339195ae1ee71157c9c6ec7d3fa9ad6f0c9bc62da5cf269c8d169d3c4f9eb3021c950ba4d8f16d43ce5e39bd2da06ebf4efd67b8fde8ad4db6a95d7126a1adfea9bac47ed8c8e7d4f10a872b0527256eca382096ad71a29f6ee197480dea822b2e47852869e1d6c14273881a9de666b5682c1d9d5dcb27d528cc820d7cd901a455ec6c4818752dbcbd42c9f16f6cec06030769bdcf12352610433ec512e460ceb9bb6415f11300c9d36d9b4583145056c58fc41ea7b49b7f758b514c30e46ffe19782a28883d254845cb5532a5c2aaeec307fbe3b4f92e220712e1d2a9721a3a2ed2109cb5811fd1c446c88ee7e4d446ace47d043efd468056c10aae72c7a37b5986e60861832e28ef390301e3a710c54d211a64359510895241e343eaf511821e2600653e360344daee80fe5e3f1b4e2b00a63f75a462afebddb19b45463ade62ea4a91c0bb812de205adddbaf579d338711acc78ce350f04e5e8c394219c1bf76013836347e2b19cb684bbebb524bf6418af350244cee6b130fc975faf62df97746f8b890e8b521606a70b12c44ff5445ac20fa60b8c58b287ee5e5be89e053963a3b3d2758cffde06e5af6cadd6f6abecddbacd44c1df55b573513a85a5b0359c96f98fce8911c6fee30700f30514af77f70182ac628ed531bd41588694cef53aafc0204fc2b23b9e07209f13638cddcb0b0c6616284eefec034639e514abe3fa06a10c2999e977e95de1c1e1ec7e2987935af6a8364d4352ee7db532a20545b7ae54afe77f77896b0d9a6a8f136aa076727b68971468df784ced49631a6409e656face077c18ee9660ba1548c9076cc44c0be4b67cd3165b482b2ea6f7a4992f0a3629e24afdc5e6d609e8947f4054ca84e9d46596fe9d03db4e09e576b90d0f127f660aa1d89d183b24b6c117381c3af32916a19d1cca72ca8db07bede030f60a0ff77a7bb56276d48ea8d3aea3d91d81ec0271544cfe14a4bdea0f37c561554d88493167146400233e7da91aa1a0405fdee713d7d117a2052e657e9372df12b24c6e65b96025630a13249a4bae1bae55bfee0e4672cb64bda2a39c26c9a29a0b96e513a0a1bc45ed7afc4aeadbedc0246f6ca63c812b140691162752340b3ae4a43c31e777e4a28ca0904b33e8aa98860cdf8be756316cf0c0e981e335e230dc64547210c23b5c7417085b34e58ecc1f5d6f2cd30cee7e9ce9aa3e54d39452124f813fa06e73043f02742355fa9ffa5b236ad305d4cd170a06e1dc1a28c02c5c546e2dd494c8bc5b55b996e91ae295e2575460f761bf89dd1cc6fea1e86db07eb3d8bdd87e8cc5fbf1fcb1630ff71590f93a02ba0d240904ea51284d268913c2782ab067061378c0a44311a9a2428e5e4c3f5c3ed1c2fef08cbd9e7dcd49767b75d5433d9d9284344e064eed2993087d47fbc6a42e9d286bf52371ebb8d4d97e04e15d523ffe19d0dd05136ba5e3c886828c9a2c1903ffa8de97583b2ea2aafc283ab3745e1a178feb0217758d1180ca34e634dd2696f0b164d2cb70e762ae2de0da5c1216d4696ee2431c08a5c5c59095de24ed91d2c48347cd0121ec2f5c787243b109ed430543f9906e586cd14627ada14a737e8855435fd7149b99c64db45fc5dc97fbc6e8c72064d8b41805ab92c502e1f7403c3a010f737f3b2148608a5b3bbb065198558fcd548a339b441e366d0637356d531cc833bb687c017b99a5e9fb5e207036010f45561b35aa899817d159595c25e3a2c7bc17c7b199db357c31b2ce6af992f13272280ed39862a5cf14d984a1184d3245d3e48aeb0914958d51fcd45c71a5a32232b18a1d8953544fac58ca00a17d2a02155c3125cd15ad93a998400b4b2b1e9d47112a35c5ea645474fe58dbc015eb7daec82a0cc5e8542baa265df19e98a2d6848aebfa510c3bab482d583139598aeee41527d52ff256135fc5dd1f958030b43d5c3755c9277fa0f7c2cbca1dfc3900c198b4b41f3e380ef8b8e22f3740b55f6192edf39a30becc64b9670af5b04a67491848892d6238100b2c0a7ca0035724164100547c54821aa42818051d4491b082403ff10b17d4d02c170615503ddb45579e9e18543f39f4f4c8958928273880dcbd4fb4cb24398f09e5b29225a7329cdc90bee4aa9dc961d9158fb303a499045e2ec4200d5420da19251dcd94c8b8cda2902a8984a2318986e90f4663260a9511af4b4175a3a5b055d5054629825c78c0e8e54785c2dd4ca8402c0378c288bfa229631c7d5409d1a2157df17fdb6fbb114208219b90bdb7dc3bb50c1c0da30cf20acc29760a93c59eca9c5e6ee132856411359d525a444fa7d3a9646253c9643ac9933cc993b42f2fd74a671df9222323635f984b9fe5150a622fda0ba6c19860b0d2cbe5cbb7f10a758b329932fbf2d3e9747bfeeee9d969336d252b6f635087f16047246abfd963f6abbc427df0265389b3f67b39f3e974fa74a47de94c1dc7a5d971d7715e6de9c1964392471c836fe86b52a8a1aed9b4cc72b507e3ecd881c39e84228b909aca2224cee13164d11c9ab184c61dda981e399e9773528bdc3c731c33a783f4346bbb381eec554e1f22fada625f57c95e878b683a9cd5d0c8cc5c8765167bbae9dd4bbf5ebfe29cd44c0eead67770ceccadf74000e7d0dcba0ee7c8dc3a03767000e7d4dcfa10223d700eccad57c9830419f0c18b54ca8235466ee3366e8b9125c771df8d51d6d4d4c498452d46f968791543a3a9341a958c8c0c8ddc362de63a4ce3d5ce62b66ddbb6ed6e477d4668cb7f7772dcb66ddbb66ddbb66ddbb66ddcb3c7ef72479d9b9999891115658cdb96fa3693fa9a045b845b62629c71e3366ee3beedbb31d36060aec313862585818161af36ecd3cb2107b91f262b4eef87fd8b179950c22beb5216e195159928756a2882d3f3cc1a09786515d97a3b47efa63ac608b3739e0f111de30fbcb298c848e015e195f5cbfb81574a641a6c54d2d62d2326eb350ecd58428bd650d3c727bca24de8a68557f4347a500bd4416912af320d0383bdd3ca947aeb976ee19c97d34f2e429c8321e19c931226380735c439a62553704e0c51764a3fad481e34891651289c03bd48a5ac9566c9922577724e8e6746592a950ec3250f3677258ee3502598128a3bae7459ba2c45db7531c61823f6b89d638e31c618638c31c618b952876ddca594e768520f254d39ca2535edba2deb626466aea4755ab64d4dd3a634256a4a25b5bca2d621a703f5e6155ed16985573412dd69852836b13224c3038d89da7a6cbbcd1e3b7865f990015e59dfc22b4b4b9c1b121e1f1712a8c33afc7709615b66ba2417eca558ac44616229e19c1213439c732de11ccb640ace3111714ed7e409e764b76e61c139a75bdbad5b503807bb752b0ae76c9790bcb1b6b08c3867debaf505e7402f5229e628a38c92e364c9f14c96527e32d35eb4d3e9946995eb6779c599b417cdf4d2cd8ed9c495594ae6aec3a6da1a07d56aadbc527e59add71ea394524a29a594524ac9df05dbeaf0b4cc1757e6af27bb94a54b5bfa20afb84b48f2e891cabeca2bee83bca297505b9fb362539351461965c5b46d6eb2d28db76dc84a4c9a5176448912a5d64c9c4f269207cd42b158d7be5b9342d98d495b36f5c3226fbda92d522cb5a194dfb534b3af54d216c512e1c4f17ae05512af92dafa546271641bec9b2fa29925689add80a0483dcf1bc7633d7ab167f462d77c4ca471a5541113694cc431518989567d23939edaa7a684c92c9a50b0d82b8b86be60afa18e3146cd7b69fe6e1082bd4c5485735ec2b0c239f50ae79c90c6e01cd4e7b36c5a3827e6f3720b9729248b248f59246f2612eef39309ce815ea4529699593233333333333333333333333333333333333333c731333333333333333333f32ce239a7f49c463d6f6566e66b2c7b4903317bce4f251687e381dc8457938857f377166dc13997896611e740996722ce8114e9c4335a60329740d2370e09f5ed31c43930a9470f25901a4a49424b07a0a1942492d05148f2884bf8869ec62994f8b0a9b68141c9fa52ea2e9639df5e1c0fbfc470dcf712731dc9d9d3e9748be389397131a75992898989395792b98e8ce1acb59f1c8f8c7d8c8c9dd6b4a66519a1735a6cb1c5165b6cb1c5d6ef9baddf55b365fdf668b6d8626b7ec32650731c77e67830dadc994826ca7c77b6cc63ce6c215948d3681a7d30bf2c13e3f9c89898984c4622e10553740c13754c6d8c278823b335ad8b030a7b39838d61978df1c519bf608a285ce98a57941ee59d3c205ed1bf7842f08adee419e115bdf57ee0157dc92bc22bface2301afe8390f04bca2df3c1fbc0cf4c006a0d1f2b0cfef1691d8277f7e41c439e79cf3930f6a0cfbe214bca24b86a66063db6fe3d5948654a415cb0762dd48eb48f6825a96616f8ea6947e07e7c835d88b6a9ca6487d8510f5e09c1340a49e5f117ac805c1a1af1121217a086c818473acef0438cd5f111c263a71ca0a4f10c5c79aa77e2f138754a91bacb0dc8d43abde4cd7e1d375588e61e5cb734e97f5f264f405e7a0a6708e894a15ced92e63ac60436370978f5986220c906080b4c46889515fa5dff804515fa521a1e6884812eac8f1704f1075add6de545f5dd71d467bd4911d4c4c4cccd645edb3311e4475301d0ac66432a1ba2ebefb365ed9da9b575b8b1cf74b5e325eaf8fdebd3e23b4b5eb7014ead2962d494958b0202119194d9962e55fad70707af4882f7dabd1a50b973e1d72404ea72f08dab15e5dbaf46cbf7ebdfcfa761d3ed9efbe37db72fb2aafecc7c5a18d33ea288b64d1552a7dd777e3b56f9de77375e9c2a533cef3919d3d625906812d90f00a76f56a5ff18b43bc924b78b5845772286a49e295dc62a58c3ca690901221a11d18b30602585563a11b144aa018828209bc81a20a9956a91aaa2c8bd3aec92ed8eb961789bcd82462c1abfae8c5229ef8c4e3d120a71dc33ebd58546f2a2261f1e44911afea753836a9f2a6defa2211af6a9ca2eb14bcaacfbed88457351ac99bfa6a2519f67aad975fb0d82394f8fab8458db5d698c5188d38277ef09637e5b5f8048b22ce815dadd7c7269c03b5da99073b625eac737a46e8b541ce9173ce29bd178d396c8bb64930d8eb741579e6e499d2e3381eecccfd98b756ec2b42391de6f9dab64de8237664bea20605c9054b6f9161a9fc8295bfd0ac164e5b8d635d524a29a59452ca17794946942a84d455885070021314e9b925f841de4c084720821080e0031ee8009f031bd040063070010bcc0af040012213904004864c5805470bec0f73085bb155a84ad35f9c9e2622fba454d445e17eab9091d094a6dd376fb0c24aac7e75df35d5d78f2a44d4d76313d0079c8f2f7001134b2891c49cf5252fb6008924488e302216013b2f8888218058b0021570de91205260e407089f1fa00ff883bc99c791c4fe903d814570c7c21c5ea055d4b0ef6995ca19126d32e91d6070a52fd4724b6757d2d9b35b5b2a65ed07e5b56b8310b5924670093b8e226c1ccab44e5a341587b0efa63a88a875a5e338c2de5864441ca217ea58a47571888b435b165792078a07ea13f5c5a2ef5a54366f2cd2ba1f6eed89c96a2b26ad0bedccc728dd776377d87108d9d57118614bd556ec9a45b91fddb3fa6e4a1e3b9cbe5b5f5253a445eb754d7e57e656aaadefd25f32df0e311f07b3a1b4e328c2daf30eb3d469cc45c087293d180d89c24960077973336fbf4b8f2309cbdf21164d6d7e723fe43306e8f04abe569e6a5994524a29a594524a29a5945abf2c2f16710efd2ccf1063088b942596203d61a2a42fd4bca52fd4a8cba1a657c5324bff415a911ce00db9efdff7e9dacbcbcb4b8c1585ec8b761c46d8ed1787ca4898538c15a7e6653f79d759d3344d2b998ec3082be3b74b7a8ab13821dcf928f6ec8bcc0bcccb0beaf59113f222ba3bcabb41dd5999ef5a98538c95fa4aa6ee567a4a0f4569eea5eb5085849a9979068711967f23d24b8c25c5b0176aec5ae75da835c85d1f8ae8534c9d7e71422ed4a7e3481e34d2978f93248fb843354dbba61863c4e4657efaad7dbab64fa93e7d975fcf49481a0d0cea388ab0d7f6f51b91684c7ce578ae0f427dba16b908c42d4a92a410962df28622c99b1b8a23092b8323092b1f916a444ad173926653a75b1ccf7db9bddd7f825a15a44697ee6ebd9ed2a70ac2bd3bf7ee5d771dc9004f8757933ecb78b228a464483241c292b4c5684a152b444f8aa2301952c2cccccccccccccccccccccccccccc9c62ece278b08a4932e6859a5e167312e7b01c42718d244d5e63fadd375d353d965129b5daddd4d1b8ed93524a4da6fa2bf9499baa1ff5aa107d9d7a9785b6246141b252658a11d193a2284d29a55b92b02059a93285524a29bdaea693f2c4f8d2c28492ce1e5b2b658736f71a6aec756236f3660b6cf6bb6a8ca8a1142698f495567ae055ad314aa6791baf30eddb2f2b565ae6324d60697939b91f1c61bcfb86397bf7cdd04bc51ca3f1728af9f6a17885591bf3a54e2f34701861f9309b95ec32df38a7481c6aed5522d93b7598dfc62bec4eecb5846e88c2c6be96d044c2cec7283fb25328e5055132d421b779285e61d7bc14afb0432ece24365ee62819cf865718c65d7ac1c6df9a2a2c2a6830c50c6420c5b5d9ad18c0208a25503ce18476ab8917b8808925944802fa80560b904882e408238a803e200e2416470becb584aa4d5955cbd88addce614e58e92bad6c69ec977269ecb0a5952dbcc29cc0d25bd176259d1dbb26c50928d8b32787823dbb26e589291d453359ab595be6791add607c8289a66d9877ff80d2cba9c66da52d720f809a69c3bcebc303e00d570531bdbbe9dd56c339d6e74409840340956ebd1f415dfa6caabc89ef3cceebd9bed4abd78357da87809a0dfa8011898552d860d4f21bf4f1a3615c0382bae074e0e1eff2af8b7ab1e3758cd32ecf2776e94b56eb46acae40d4ebd7ab95c3faa63c6f1dd41175bc704dcabe6395e336a91a064020f5d9b3474e487d7665bf32cbbbeeecc9e821f7e8c1d765fddd3e23ac79d6c79c0ef53d3df838abd59fe22cc3a9f5faa6183e9834034ad43322353dc199c5b22cebd6a716ce89c7b1b2b3657d26714ee5b128517b93e381f13d240f1260b15dc93ef3e29538456412ab78310c5ed1c30c26ab530c3107d3a5cc6fcc2f985f39fab2e9aba6afebba2ed4afebfa2e4ecb7c46b8515f8ff5faec37e6435dd7755dd765bd9a22cc8792930472b5faab256f79da273d1db25bd2baa442415c88d8d2f27066b1ae7d5a5a7e191059bf1b634f2d9cf3f2587fa7962d1d1f65fd8c704b78a51411c0a387bcc1e11cedf28bf305f6d6a6d2720e6ddad5a32dbd1e5d3dab2defaaa0add7ccf2ae6dc940f5330b97bef24064f3f59925e6107fdda9a5af1196dd6361d9e34cea2bf9b2f4dabdcae7b0a941d5595f3f2b5acf5e7f4b1fd2152b6154a132e58bae17013d7674fd6e911dd9adee33c26d49b6ac4cce2c1107ebf52f5ebcf5eeaae4653de87b506bd32ceff4a8d1576b53d97753ffeac4ccccccf1774f9f9d612fd7e1d9a76b27cffae6550ccbb299d4b3b50b67b5fa310c8bb73a5ceab89752c7bdd0b6a58ecb286d2c2928581446622b5c654a867d7705272f7e9b628838a8a0b1db52c7bd58728ad760c92297b4752b9968eb2589a4ad775cda3aa7a5adbfa88004924764b2fa8482a1b495bda0786509d93a63247c631d8bb66efaeeaa495bb7dffd146dbdf4ddd492b6de31136d9da3d97759d0530c11876ddbbcc9abdac31aa5a6d48ad3b27e56911d9d61afbf4576b4f69a7d3dd8afd74cfb300bc30ec51073803c31a931af4e31441cac53bc6182496f3dbfa5570da59451a5af972ae7d0b8fd01d7adef02b96e0929b23ebfc60185ad67fad9635d5ece8b9e4f433f1c5058598dcccce3b674b8de53bf1bdb12b2f575eb538799080ec2581a9561d4380da59431c4a46b1ab4b4143520b5011a4a51c393d64a56a98b1d1ffbbaae472831cbe474a8f3bab05f971ccfc54c3ea8d9f0ca3aca5bc91beb270fc7ebc1737d29afc6bb56e79c13ce59eb750cbb269cd7755df3ba82d4cf5f5eea9a58fa1ae1cbbb4374fde569df9d3a6cbf3eebf5ba25480b11495de3b521fabaf66599b337cfe7eac2a567bd0e635ebc1e637c84f298e5da6fcc9234638c357eb4ad9f097b371574fd66dbba642021b4f49d37c240646f451129e6105f6fcce223fbc6de74f8e28468110bf779edd774ecc7a6fdb0efbe7c46b84d9f11eed8537f1dfb9dda3c1dfb8d916b7df4665f57448a385c97f1b554e25e6ba9568e7bb5df8d713bf76d46a6866d6a50d25ad788a56b6b752b79d7bbeb1a61287dfdebc9ae91d95bc9abef6eac75be5ea3c13194d55aafc35bfd50de102bdbf6dd15d08e5b8839d0bebe79b4a9204d19626505258f7b17b71071e09e7957059dddbabe242a3ec89beb5854906d710b3187d99711ee7ae180c21a995dbdf885bcb9be79b34f9ec509d9bad6efb2a08fbd4a1ef201d5c88c53727759d0d9b32dc41c60c75f1c4fc4d2f58b5b88385c9f11c73145d02237008a112bc7583f0fe7acdf04823b881a6dbd83a881b56c0014a3a5f47ae8eb356bb37e33225ad500d9d665d31e9803bc52d4f5bbd706a10f01f4a5c73164e9af7cdda4079176d097ce5f08d02761afbcf4ac4b6e07f801c13d1fb373a16fd421b6bcb3a9f5dd206e0753d35f4bc503b6933d368bb1935df2707961c22634412d17546135e4784800922eae861c0f730b58f080c314bcc01a723cc82b6080226bc8f17083880748d0b41c59c1095b438e87192eb0c1922a38ae01123328a18bae21c7430c167a70049652438e8728060fbe700329ba74d9c92e3ddb90e3e108a02ce83d535b1ef5800832db3abdea87ca2702dab303f113d4f512803bdb8f1eacf4aea4795c97754eb8ebc81f3d4e344ecb5ef2b4735e77ea71b73c1f1eab7a3e3f7a9c940ebb4810ed44fb2ce5ae653ba5679f5006047d04ac176406d14eb26b90e3e1eb84b21deeeba1fb84b21d7bed13ca76b473532fc800fa3ae15e24688a769271e7ae79ddad57bae4c196ae7d42708c9dee3a0ce4baf4ae6c274a16b0931d421f3b68d802d421d1800471801a6f59e601654f12b463ba26b7ce1b228b8e08941d4d1bb24d4ec875590029a8ec641f110ee8c20fa4a0d2851f48c1849d2ca821a7438f93ecb08bb0a09d0851e684c4f4f5cef301e274e76e04d47d389d4158c5dac31deed7964c5f16f46743df204e5d042ae1064ee8eb3df2d781b22052ba05fae143dae1903429565869eb331244b67c102f5d6462f1a2e56357cf67c876face1b627b778d6e93e319724492a01d24b2b01eb4937d724216d096154b5e1cf2a291bcd1de751f50aca2211965559022512c1afa8d4440498276b2a03f0e29acfc7ea051fbc02e7d2197ee09e2d4456a00810a3de88b7be942401c0f1dee7446cd7d4878273bdcd13e286f7ae477e5adaf4787a0960f02d54526704592968752a844e9cb43cdf253c91fa1d2f7c81236ef88b8a33df390e01ded53c96b47528584844e3d208070cb4b00ee68a52e2daf4d1d16803bd975d889921d3bd9352ffb8a50832aa3c6202242315a7ece474f7e7a41709882175d80b899ceefc61709ea41524ba01835225630e5d753043661a8813a4a3903933612dbfa7e804d18eaf9c9cf09103c11a52a4fb810dab93ebe0024220651965578086e61265a5a61c48377a0142b8a5a1ec88a2faca06245185b66606fea0a9c1642c22d128787e40dbc1baa606f40b2372342ea398dfa862e587888452ae182bd75ca0d6358d9975e81f2b021943e4200a9cddf0d62581d865e6d7a25e6007b6241cedf5004cbbf4106562a318a537a764862d0a08d764391bd40f081080288d84164f3f90bc208779052f3670d1a336a54343329991818d4e9c5644b1db76919562f8b4ec95183f2d48b1163939c991ebdb106701da07a8125210343a3c2a6058e8c8e0c2558862dc294c48b1327295056c0e020a607325aa4bc9849020d182a2ad46861061934a00e7932d4803ae463198d23092cc2bc306a2b4bf3994bcfcfcf4cd2da5cc445f25690793ee6c12d1ab6665968b8410db69e856811e768b7ce50380776f04a638fb199944c3466d4a86866300cc3300cc33a6ed3320cc3300cc3b0eedb84609fe59513a00f28b9094ca0b204252481bf6b613c46c2118cf0c591142fa00fb81de571175c14610b220c410bebe44121040108507ee0831e70d18bc745f2c6ca2e5f5344547a7e7ef60d64b0f409e760c1846fac5bcf60e92313cea1b71ea7e01c0cfb8a2c2e6acbb24e03915a084b881221492126c24e8321356cec3a12f3b46f1bd59e793e576f1a16248b420ea280d4f43aec5a6f4083a5d2a82383942aa860013585e68c56249796920b155378f00e9442c5152aa8501106bc81545cb16c846a784659b9810b7b53566e30d2e168c5a821449a4291990b542069ebf3055a3a3ef6608c969f0fa361431a7cd1b0a151d75f9fa7decd4e0f99e8dee0c4c2d757feee6671422c9e2bcf615e0f76d853c86aef291287b8af07fb800859ed3312e9b3cf48ecf92f88082fe3a791aca2419b9b411f317ab30556dee0c4721413094b0fa5ccc04ad3dc1bbeb8410b1bfbd22a569cc1949eb1e7970122f6bb926e9842a548f10447123bad532b48976261a26ca80c1a2480ed3adec81bc0de1e2de1159d54514bde91efc139500a1322b68930b5f1c831c08e0210600038380840478e0000e06685e3861b36363eef3568cca851d1cca4a0c01bd8cc6408f086b96bd8350e24ec4d750b6c7c8fca976ca9814a9c2236e1a2c84449641289e250d1640d074563afb0f5069f0c75f56e2c8a46cd58c427bce227383fd8485689e24a43294b909640e92a7930160c6549939e559a0f67eda9978f19f65bf94911b67e2a20d7e5afcb4f9ade8295d620f33a5cbd224ca403ec9e22d7ebe5eb7782ebb2468ee7aa3d2716190c425debdf526290a53518b9b0504a1459dafa5b2b5de73c14e76c529359fd2e77ecd2bbf5f21a86051bdbfac62b4e6d5af6cbeba9ef414a29dff55301a117e7bda3776b3363a9c6783020e8a1e4e183bce1db6a25d503afb887e451abb5d0fae0d7637d2a20555e6ed1e2a2414b717af6d617e89a56b0b1a30e90573c6595d2866d33f763669732c537ccdd4df18a57cca8e6ed36b00a09b5fc8f59034d0b7a0d1a336a54343329991818d4e9c5644b1db76919562f8b4ec9373616ad724ea9068d19352a9a99944c0c0ceaf462b2a58edbb40cab9745a7e4c8f1d343c292b4c5684a152b444f8aa244a1a8243241c292b4051ac129ef15ce6f8f671e8437d927f64178c3f5cbbc7ad1e873358dbf62632442065d5c8fa0f1641eb248ded0d82575fad806367059831acab034aa970e555e4c031acea0c50c652003f441e3c53188210c59c0f005324c9ff1a217bac08531c4d88216a00f24e803367dcac391c49a66d4a868665233be5bb9aff4d1198ea64a14c7747aaf4c5c67b1682479f0966a2495503914ab704e4c18560276ce2c63a29bb4b3baaebbbada751dd6695dd66d44babb81bef51bd3cfa32ca6e8ed53664bf18d3c9c5936e9b5ba655894c2669985599665d14b83d920e74c4abf7d7aafda27af180ceed1b820dbe7b5990d720e37fcb47d7dcbbc6b3d535951475e974e4fa5d5abe8f72353c53a331fa09e42e4179f7dad5d69edda6fbcae9b7d1e1e6541a5b5ec589caf91064d4aa902322f2f836a642547585c6979ce61faa8a23d81aea5c254f5fb9171c7abaeef47a6b2be1f5937776cd83ad207a8f972460e22bfc9413532143ac0d2ab864739b0d2f02507465ffcc9967e737cc24f34ff36f3b255f2b3654322b44a7e1408dab10e8f72208486473980d24ad8bb6a5e45e008d8658bf515817e55066026c10ed1504a3e82063fb3602f71240f781bce894e1c3d69d23843912314575c697ad8d72d39af6a95f5fac9393438a0b02a2092e76779b1c768f90b075a5abe2269f9d9a4b15b5750699c86475748d1395822cfdb263d4a1f60ddda41c7b278651d7bc6452a6cd63dd9393b679837f9d29ae71ff372defa2e4e0217c20c762005318a7004a29d8b0352dbfa8f7a29afc3d5bb1e31ccd30e39ec0e08ea826e91e3c1eeac17bb17c3ba7a3df21402c9ce5d4379d38a313acb3ebf6b4f9f85d1dd4d5668e9eed615483afbe4bc1e9873166679777efbe48464bff3f4a663dc8ff9cbfef25441ece7ede7a78ad1989bd7acedea7aeceb31ec9777e73521194f505fda330f1bf3ee7c77eb53c57c2a20a8dba36e6f1fd4a5731efdf4ba6f3297f1aabc49dda07ef97ad877b71fcab3c111927d3b7aba0f010d08ea8288060405f5fc2ee51c10d405a7039d403d04f6e911d158504b8e33ed46ac06c26701bd5d0da18ed236844f8dc6ba688d88aed9870575fd2efd5537c801b9be1d3895834758ace19113a2965ffd6c62e7448313c9de592394d00016468d23e46e8bd10ad1170d8faa88c2a3e1511542ad95e077e0f0ea079bc2d2dc4d34f30dbfce2bf6422acd3e3880083ca2024bc337bf08f4219bafb30373015fd0fc431e72878f9c40e92d47f3afd8b855a139515293e544856e09360d8f6ee024c71a762001d5f0c8063f50c01968ac709a32840e8b8de8892648c870c2c2f684192d68aa50353caa019246a51a1e5d91a5692619756a30251303833abdcc74748bd83c604c2820e1e88a25acc1c31d88ead99083a89c27442de613f8a6969f3568c92c79d04f2dd82a0f3025500c8a3246418396c9c21f02e81c9a04420748af237f827ace29a5a44c86285776d0f493dabc4234ff10405b16a5734ac91ca18e687d3f04d0dae44f0134843a62945f17b18f9444e9aee1510b92d01a27914a82919a5f1393e86b9b6e504997a64709d146e40ff6a628eacea8a4f936474aa63473909aae6fe395f5a57815956cf162cb6e7e5366419b10d668521e25c1c40675306c4112489afb40501264401747c02e5da0bc6183161f3b2230b70359aa626e50d0d9842599b88e5a80a47668c0b62f644820695bcc1a1e2501a3511b12569ab92446bcea36bb3a803c2369220300af958eb0462081e49a69bbab58c451122c159a6ca9e3362dc3ea4b071483225f37d0201f2569a2fdd80921af60e6f4a28473ce39650d98239e83e02335c3d3c8c2a3244bfa080994e6c3eee985a55f1cc3faccc7316c6c1f2a3976132cff5eca31acc44c0d639052cbaf06d411a1910c608e9034d120f40175d0e3ca89f3fca41fb64c29a3951e2052843ae221fcecfaadeb179b4c2cec8d5fb4bc2215ceb1e6a4f1f3496cc2f1581bafa402eae1eb571f943738d736a1ac1b843e8ad8f43cd1acc2de5834b3b08f5b1157cebaae886d56ac52d130b72d9b5464daf6edb359c2d22a6f76f4fc6a4e4bbf6ddb25c7b36dac00568092ef4805c8cfa7e66fc339bcaa56c46271e4ae719faabb8a07f9d225205f0aeaee53f1c02f5d02fcd2837af3aefda1b35b7bdbb2cdb3ae19998d7dd5b3bcb2991a4f264c18638c314619230775482f4261e151114857c323249ea9e11192251ac5ded1115c9a711cda803c2a0aa57303f0d5b4c2de7f258483d46d59b56811761efee8882c55aea1e56b9847dc9147475c6929cfcd1ccc738c47c062eb6b631e35574ade5c3557fdb62b0a7b537da56a7cb84040821f8c087109251d1d3145c323239a10a0e1511165e849e77462dd4a1ed637f9869ed21cd879ca31b04388f41073884defc341c039914f937a5e6641839c65dfb5e98ce3617d543a9fb0a552e9f46fed264fe33c4d7bf56e7669d39a8e3c1fa56e0a6e67eddb6579755d231ccfa05d97c4e402ba74694363407af4dda16363df097a34fc7aaec7cfdf8d07d7793b3c1c2f7a130716a7e660aed68de30a56ccbb3b9a339e513812faa221733be834fc7e64f4e1a90702add0d8a594924a4c088d0f077c629721d7573d0875cc4b8f875e47fe0471416660161afb20d441a99450faba2ac8fc75995f4dfa3a125ad2da27c7137379e74fd45e7242aedf79caf1c47c7a30971e0775ccaa7d725bc6e9701df5eaa1fee2f5687fb9f5ae76fb92a78a39ec12359d7aaa984ce699a70aa25de6da653e55cc55414a37991ef3e9a1e4ada7381de66b7d8c07e3ddedf528ef7a3d2f871d3921d7e577bb94f7e2f5d49b3eebdd7aeb98d7a3f36e506bf55361a7d3fbc126965d66c7927a5e873120b01bb13a43eaf965f3589d5047bd766d916b4050171727e43abd8e64ce27f68f6b833ae83777e01c61b9e15111573a1e0e41c49c3c91e7907e1748f5037ebe077e7e3e407d5b8719c2158c8f610d8ad95a491eda80c0075eb1f603aff8075e71d7995e4cb71eec97785316b3eea552c66d2f34b2b92d7dcb84e0151be115bf08d4c1ef818803766862658ec884479c826f385e5a76fe2c8285bf708ab679d7f666b7b6f6bb262ff64b7c129fb03d9bce26afc6e4c15489a7a3cf28733c1ab6691049541299e04393e55564a883b7b0d0146b52cc6126e9610e1901861242409ac29009401eab2f18c0125aa1e3e790ed6188f4ce3747455039120a633ad1837338277e08a75612873f2234b0437ab0a9aca1942e427d6b906410707e79f0de9cf0baaef1542d7a392ab7faecb6711bb76110cbe6e334b279fc848f0d8fc3ab5aafc3b5d6c3ebba3e67362f08394b621062731ef3e4bcbc9c735e525af3b2e0f58b8b5047086f5916bc067fddf2e06559d616220ed61514b1f0ca3a8419f43094fdb609035b3355f3b0a9fc945f8d659c2d96a6748cf1c5abae7563ae74683dc837dc877dd77753356d3dfbeebf6bd3abedbb39daaab52dcbb270d87aac15012eb01701fc21175ae9790720807318b003e7403ab92df2b7ebc0df1ed4967777b4853dbb0e07f58ec6aec8597363cb0becdb8e7a694c0f7d7087bf017d74a50db39794b9462b7958c9c3aef156f25639e456f256bceabc1b508794dc16316d6e8cc32b998357128a25f6ae5ad22999ce086bc77d3650873cf5aebdb64d6cf22adfd073dce62da04b972ead1999ad7dd33e548631c6af923d587925675b1ee4988a31bdc95c7f5d17a596949229335f5e3233f3e5a594bc7dfe40834552cd2748758ffc84daf4e6ab45d14720e8075370f0a40c6768c28433ecd4434e02382c31031e9c8109574069c10e56e50dfdb669719c821623f6ab62dfe518638c118b1816598a06e1778b30f420dca121031afa1001c7e82b5abf28bf46af46fe6242a369444e2694728f24583636d5f2b61c17687e97aee6837ada3463d8c4e69c734e9bad2d0f652f8e45ea68b3ca61e1ccc6a116f5821a8708c5e11c4a0487523884e36f8a3a81d486a498844261df8dcdfdee6899a3a54dcb9a96a896dc5352580cc52b8ea62f461192f6bb385c8a4296d014ba387d8bec684a2fe3f93e80a0b3ac4b444f2da9e5356a713c52bbf47a885e6d2d8957f19a163d1f78c53ef06c178273b81ebc0c7820b8363d481e90d90a5b495971c72ac76d5235f6f2a64a495fa4475bf4b3e9a7920f6a39bf188557bc459629367d6314a3307a509935b01baf6caeb0f1b72635b41164a3f6839ae69a266c3ddf06ce7819d8b8242e894be212ce894b229225353c5bfd5658ba62c730d9f55305996d7db6f5a9ac07b5f5ddd8abbef47735bbb6667941bde29c15e7589f0eb0579c03610fdb0f4d79703861e72d23b3e96cc2de4a6485a1cd89ea999a87dfb52e5f2a7dbe2b7525aed3e1eeb8cda252353fac539e72067591d7a0419b5a6d6cfadadab2a8b6b2df545b359afd77af7f285473e7e180c276b7ce75dc6744f6c61d76e9b27d28ef5047fc121bb3d5752a7f4d5ac4a6e56c963bd081bd36cd39eaf935d6fa6e851cbd86e8d2a5cb943642dbd2e1043d70d88839831e3de614d3bace067dfc44be4603c487be24f47a58d121f17a3df44cbf8f01bc8ad7f118c0ab1da08e08a4bb384fd6708e66f22267cf1eeca1cece452daf0ac2d65f2ed940d49677f93ddd2d7a08755c97773a73422c1e7bf6b8d7708ec5d17342e4b3b386da6c50dc8fa02ebd8673e4afee97a7b2379d8f49ebf32fcffef2a96ce7d5bc0dafe6e9133b7f9b550e1cad49530f88d8f14ef8462f80c25dfc458b240b0c89efacd800f37c243818598fc2aa7ec80602ea909756aeb4f58805e4119fc4a2082546895b44a3f8459c12a95409a3ad4726605cd2569cc23a11fb3aa3928e7362b3ce8b470ff0261e690c2c5992b4c02d904b4452258c2954e0173d1060d9d473401e2b08009803abe1833ca03ccc81b7441ce2ad788b4b5f5a68561e090bf1e763436e5a11686c55944d5dd7c544174952ab1c29944d951e86a4810b9ad6d752a1693a760a184318eada206b8553300218c800c3095390ec400b6124a1c41834d041153788580ca1883984241a1869b8da203b32ae2bd81d10864104db5163991a31c001f53a3b708e8d3ae8c21586fac5a8635dd7755dd77555aa848e1646984998d74595c8c137928d76d0b1a9c3343ce2c28b3e353ce2420a7d57952d30a0110fe80e98deca221e89539e2885a55fcd0f9ac46ea8666662e31f20831c69ace799d20d421df5628904ad41a457d83b2dcb8ab187056fa2c5f254f2dc38476e1be77094f27b0d5937eb3dd2ba466b95d1d2ac6de39c786b7694f0ea66959e2ab6d743b08edda33599a36b6bd6d5cd0f06414ef000066440a1882c5c8891831fbca0208a2986b0032cb8d420898b2857a8e81311075a34e9ebbaa8125c50d14c7052a97fb5c2c1e10aad4e28a184f0f27b0d3642ab9c6351ca55de505882f1092e609ec191164b8ea2d040c69e2e4c6529758299691376363ce262c910c9c3321743cdaf79fd20d325a25d595e2afebb3594c887f470c445137c6b85651e5188079c3b475c24d177853405a53158e1dc3753c1cc4f31e344ce02174888a45c12d4d5bab44ebbc7d2ae8d7a40669462bb1eb04d8e4ab16d18f451cfd7eac6df28779d970ef3b3d24adac4c65f5885869f73a6982f2153282ba475cef9d83df312ca1b88d3134e38cf7735cf1f4e531ce6ad4f9b737eb58788033c1891c2c0de192d79fdd6b67d67dbf6895b7a5ede446bbb7eaa1fdcf22a79a8a563939e6920a08e78cb06305230824195d8d0164c686463439348c3178cf8c215499c64e142b40296018a12328832c6116480a4084ab1eb94524a29c5b009440d6690853630810944556080d0240c420003172b94b043899aaaa129dd224953d50ea51345b56042537a25fbe82bfd52a889923aa094524a59e816c42a5d82c2c92b2f9cac26a44471811536802209900c30c8a2064b88bad085185411041926d0c8a4210746e012041e2411c30646b8c1184b8c91e403245410618a121174a0415bc3042e53a65001032a9ecc80084d9a1025f102124a441a10e1088e08439b855d18e1832fc420c90a190441899284115c6cc18a16558853906187504606ed15360d35b35fd907ad57cb0b5360b448c2bc3ea912761e723a481e966fe6533868cb1a4211b41deb39a0657d2825ac85dfb129204191b0accf6b253b83c85bd4a216ed999fe5558c4dd81a1e4571e24808474120c3519417486ac49110b8f46c7824842d7da795821631cf808634c8998504e00e12f90165310428eea822607d3ca822607df44ae28e753e11fa011d1177e8b30f09120bd8b1ae24625edcd138c2c9b38b3bd31be2f9206fea653d476e08927a1d79533fb91c47ded403654124ca7969e54d3dc7faf8c9f9659f11f3e18efcfd8c873bdc1024164c8a2cb3a0f1e76f6a250f7f2df386c8de5df386c88248f6417973bdfb10d9e789649ffcecd84784bbfc80e2b96bdff8b356de5c2fbdfbb54858e631f632b707ca8208ccf9f1a513892f951e8f7d4452ef3ea0eea96f48cce307841373992fe603d2b96ef903babcb90ef3659b079405912c541198cf4e646207d23e8f7d44e4b90f280ec99b2b7eda07f443967d405910c9ce1f5014e2473e7f40317e403e1c08ca9bfaed269c972a100975b8134f873bf13a12ee480fee54880494c590d30714774ab77ff186d09edde40d910511ed8b4443e078c2c62279735dc7b1c43704501612807027fb86a0bfe63b6f87f3e0cee6c11dcd1b82841f8f8260a535c8903b271edc819c6a88751ee20edd917c657189411aa1c9d5177565e1232858f46583265ab468995a6c64126697eb280858fa9a5b8e7e3086c61a1e4199a246ad32c4864dcd8f80f0c511142a54e8b27e5d57127d5d354eb05fd837e46aebbaae231f14d157edebfa2e9132ec8555860c913c5246a81e6ce9abaf1ffaa83565d814dcc137f1d4c339afe2a55763d3861e86a4be3aea0118bad4f0a80757fae220d12e1ae49c0cbb5235f1ebce9ddef4eaddfa985bde451df332efa2be0bf4032390a10c26d38fd0b4e9f7a79bf9b5711b1b1bd4efe9f42334faf49b3d26e62716a4a10b484803c771ddf63bf31b376e9c6262626256708517540043d775dd77636e636363733a9d98590549d6d0450d367ea3a6a6c65a2b4417a640a2c4daa8542a93c924c40dac485a624abdbcbca46868682e2344718431c0944a2598542ad575ddd5848b2462e85eb66d8381816166cb0b2db260067e7979b1d6d22b6658e204fb19bf364aa592c9649a68d842184a307dc6ef4c8d1a35b66de3386e4a92143f88898989f92ef719bf313468d0b871e3c68cef4a1b48290308ddbddf19aff1dfc6c6869979085688810adffbad711a366cd8b0d692e10a5694c4c4c4dcfba5f17bdf8d4c80c20818c423726094242323134414050c495028d41050c660a2490d134ba82285aaa6a6c664320111a10735a8818946a552711c07f4c40e6090c4a5686868baae5b8111195496d0c1a45229665e41145dc0b0825f606060acb52a80620a15925893c924c40b96786207a6ad542a711c77fde0491444e06e6cdb8fccf4d6759df504075d08a3abf9b5b971e30633532990640005ab7e6dd8d8d8586b27193db002174bf33b63c3860d4eca22258a29f51b3333f323333dc3711c17e14a144938985f999898986845932778e1bf348eaaa9a9f97df945c9c8c830730e0e8e0006ffbf337e52a954bfa5df130af523338db2d60e9105155720e1bf355e434343f3bbfd7ea7d3e9df051282500ccc50e33e3f354caff9a571552a95fabdf1eb7ddf8fccf457f35d16a8810b5d9040e33e3f345ee33354bf334e030303f36bf37bcff354df658110134e9852a3468ddf9f19f7f999711aaf41f35bf3d4cbcbcbaf8ddf1aff69bebb022f90c0441868d0a0f1fb53739f9f9acf388dd4afea30a552e977e697468d1a3554e04519573c61c68c19bf3faafbfca85ef31930bf347fd9b6ed37e677060d1a3460be7b09a10b4e54a1a6a6e6f787e63e3f3457bde6e537f5d28d1b377e657e6b66cc98f1f25dca052950b8a252a97e7f52f7f9499de6aad22fcc371b1b9b5fd4afaaa6a6a6f4dd0985272491031a9a1fa1699adf1f98fbfcc03c759afbf21b366cfc48a96dd0a854aaedbb3c862656c6904aa57e7f5eeef3f37298a7becbbff15bbacdcccccceff79ba2a1f99199a6b9f15d26f2c11115181898df9fd27d7e4a7f39cc77ed6d7eb7db888989f9f57e6152a91f99e994cd77611b9020c2115e5e5e7e7fb6fbfc6c2ffde5bba6dbf8bdf119191999dfffbec0c0fcc84cc3d8f82e116c28a309244aa5d2efcf8dfbfcdcf8f692cd635028d46f8ddfd2cbcb8fccf40b114dc200052fb6ed47687afbfdb1b9cf8fcd6f3ce6d7c665befb1344d6a7ff1ce1faf423a53efdd2f8ddfe1384ecd27f8e745dfa91992e3133101363d882961b377e84a66ffcfed8b8cf0d99df99a3502814ea4380cc77558085241738b1b1b1f9fd99b9cfcfcc6ddce6bb36e6a71e70158540420d62b4c1860d1bbf3f31f7f989f9cc6d7cd774d4afccbf1d7015af28ca18829699999998cf7c97f34ea7d3e9c379d283351cc5c4c4c47cb77b0eb6e2084b70c13556d6dab8c4054128c2d2b081ab388411155160629a71b88a1cc7adc00a198a10054ee63535f6ccefbaae5381136d48d244e63e3f321deaaa94e9f63e3fa6db333353277c510332a0eef383bacc677e4fa789898989f9503edc4df7f9b1d67e77e6bb520956406205191999df9fd37d7e4e475de6bbd9637e53323232329fb5ddb9fbfc74e76e32997e84c6778960c214846003140af5fb63eff3637f3aeabbd851bf302693c9f46d16bfbbcf0fbf3bc771dc7751df65c10e8e4883134ea7d3ef8f656ffa7de1388efb2a657ed7753f42a3bbef9abe7b257185249c686b7f84a6edef0fbdcf8ff5ebdc6fe9ebbaee9b70157db263f7f939f38fd068fe2ef7ddb9e4491698f4dd56f1f767dec7facfcf91abadff1c8169eb4768dabafcfd399275f69f23a7ce7e844667fff1c15eef93fd077bbd46accfbaf10a421864232a200a58b49c33522a259552326c66799693d947565ed588433c8c52d60919aae86438197ab169b38c58e59cf9cd4e29279473c239e78490422a9bc21f5f337f1f7f7ed06a49405e95628c40c2f06821841042082184f0091a8c39c48671a334ca28b3d8a2e7f9a898c38d3732fb66bf466ad71b997dfd885d3a463ecca8cc9e1d5e57bc7a7ac2cd5aaa492303f5cc7e31a9ca28bdeaa257491adbaa5797ae1f0faefc0b82456b0d586469fa997db396755dd6755d9775d1cff316adebba1ac817e115c641d6b9d1cce26ef61eb8556c728f56b739b3ec1735e744c15c9797e1b6cb4b755aa9d4f2cc0509daa2892e7d83b61012ea1f5924d4d707c414a19ecfbeac8a45b5dc22d43eb24b97bed048a8e717137190a88883fc0c033c030c879a63b0f117151b057d6497d7e5d917d4cc4edbe54d31d88b9269798bfb01af40946c18548c966d99c78d82b142348b9c2a66568cd3bbf5aa9a5da5655761d95534b3a2357b5e19e5825c40ae231e50e9c80909da6248a87f82ba2812ea2c8a50cf22a19e9f8fdc22d4d9d76d1107f930d868b1e0d21b94d2c22c68da665fdf02a96fa8546bd928ab9c650c8d88000200008315002030100c074522b170445214750f14800f9fac4a58228db4284862cc18638c01020000604044004406c226389599f8be21746bb59819826c545f676f02cddbc232fbec72fd87f88c40b87a1479e1b682f8cefb1156c1af753dd49be8d8c36b2c962a1b2be6f9aa558fa1e9cb00cb3d97e790e852e47337aea4bc952d32c51c91b7ef808fb1fac91379fb33a771396dc7cfe608694c9fdc7db767a7200f46808cabb26396d18bad9b8152da65523efe33958d753dcc4b02f98b17fa98042fb530927f19e6607ad3b9d0d0fb32f115ab74f36cdbf0523c8422374abb1eb5c006452a7106343d0a348c0367e14961761f191ca36bed82457c0abeedce988b6288c9a3f0d0274b61c4084a1213e7569007c8466e50d7552a8622cd61d56f398723f40716e119489838b2084737f8d9fed93e9f5313d739052cb55dc27cb56f377bc19779f812dc5b8a789189d5eafed4870aae186c9499f2a3dfee50c3a4161f701880fd1b72e2ecdf5c5c8225fc1a47e3501ecfc1cbf1bd5f6d49028ddde7507577b63e64c5c47d8bbfb55f6f7f8a32d426c07e5ca95402c2598555dd6a054efe49e613b9c055e3002a7a1bb5d502c0a09994e5b78c685b2ba69caba5b25d2fc201b558d5dfebc8a58e18ae0cfa2c777a7a6731fc0760616e2a7936c6a371e35c44c0f825e35ca33892b318720c70cf53516654cd3baf25b945a3fc7a896d470d86219f3d8a4a69524ea7517ec014abe6e26dc7fe8c0f60d2a2f273e97fb0309d4a1eb0e020d089ddd630a1255d65f0e44e6a029669d84baa69cc200d93f5883902db09164bd9a56d2be7ec43caf2c5b4da82a5c6ba499d5b4ad530c6c40f193028b1f40d818caec2d17718ed6a0aa0df550e12de7e238f12fed4c9d33d48cddaac8c352a738eba0e09b319eab1388fab45494bf57c885706af577ccf7120406382f0a09cf860467f8fdb8239a35ad71a3c5b453c5b36ad021cb3e5f0d21c63a6c1773b57c6d6a23973a87cdfac961c2cb3553823aa8aa9d7770122c199bd48ad1a1bceaaf0455cbbc3e76c54ad5e0b7eabb8cc014b2c197536132b5180ba9638d3d3857bad68057d4becf7747efef9c8f4236e3f1c63664f4cb05c01b4b953b73dc357c7a75a43c17dc74f02486c7b18d2c360bdf89f3a3860ad622cbc68a8f3cd20ac9a45a6be1baf2943ee4119b57e8af4e4db3f997b4691c5b412dcaf01bd7a923ca6fd04dc21b5f45f0361c68302113bf7752f1f5b70c1d742ed59496ba4502d02f8aa11a69865243c4f34987fc4cbe90759f6567e1b3e610be11a7c503cce46143e484f95eb851514c367cbce1f00df444447cfc986501e88e1b1c08bf6748fe53922811d0157b07ddc1765bd072de5a94b0a46e8627dafd733f87562afb7ef58d3bbaabfeb03542cccfa7c88130c251982f4aa519d10602128531347d49718b0138253b15f06a78ecb60babcd1419dcfabb0cae0935c301ec6a303f0fc82ace620bf4d4ee3210bd762986204ed81514d82a1f3346dc7db224abe402ab191e1fd20fe74399e943a325a85006da07b15034afc48dfddb97546494239c39340aa11d25d3d14b5a0d547790c2cc888fd29d0b41163ed87a33eb8c04a480a05edc500283d670995073816162af74f61507794654d461d5c3230236ab0e68ef7a64622379993e2829aa89be2e6cee3690f9d57d037c82248596a44b53f99035bd9a90a2fe6e91ab09919249f7c9ee80df348df8d36f31ed5063e2d8a1103f40d9c2e6c821ba7ed9188ce53b812e26b01f804f8faa8c8debab9908f816e59152b12baf77349de4263cc5a7d170d9ccbfc2e9737903e79e09ad16bcee060fdbc804d6676c00c7a4aafa7348244bc17211ff7c72526b99b6e855e547c6732b9af309c18d09b850311bdd3a30c14d0bfbcf32fed27d24a8070c29bb7cb4f7786bdf0a33c18e91beb51357d9462f8cb3cf110230515c3d87de36cee1e8a8b86ea3af044b6b7aab961cf8effd97bc2d23d5703a823ecb8413638f3d47a72e5945803e974e8ea1d709adc83e52c6584e4610e05bd31ee9c43434bcff80d7330bbc7817519cb9e93231f1d61b9ca530fba3987b676b4dccfa03b2b84078132d76142707eb839b4cd30a2a98a65b7665c38b7cecfce61a917e64dc89bc58e1e829d9b49cc41a6f79c6a7e5b6209a121c563fa665eba9bb44c217f84a55a1e3b804caa196ae6b39ddb0e87dde002b3e2edcd89e471440024a716bcdfb58c99e4045ce2211b4b2b328a3a465c35a543579c1ac092133bfa4a321860274d8821cb05f84deeccc8397f339df8ad3566a964a6931bffb33db2f53d43d371b30fa928918167e3c545727f02cc53983aa627289192308b82a1e833062ff01d107a545a5928cbd8aabb6b0600df2274a850bf429902b6db45132ac6617717d7b669deb7f3045997ac2cd9b8b3a908889bd616e80d1d63924e34042995b919e12dd1a1990cf4b914059095537c101dcb0455ecda571ceaaa78de65fa3ecabb2db675ec83c5a16e3323e735cf810b3f86e3da6af322d16775da496bf6d1de8fffe67aadacfb438270dbe334ce953e98a8d4665c582cbfc4f5556962e64e9f3365a511757156e25e0cf44dd236d0eb15c58c6333dc87160e4a91bf4da787a9d14aece7ce14f3cc4a6cc85e25be4dfefbbe96da93421e63c2591e79ccad03c7831bf7384b56725c1e2d76b4f7422f741a568a034931e4939b57471872d5370898a1012c6f5a582761fb0e8504a39f85b2c20986a5a051c23051a3ae6c341644c1c010e42f0eb7d0d24651da196be07054dddce5925058390e49c05fb2985e074427057c22cdbf968fd00df465ae659770e434956809eefc9939b692d06e6eb2f9a4b5a934e172e5356050dacbd0aea8854b500418de10aed78172e5cd3496acdac72257fc32bf979f5a9b8ede75c99d12ad444588f0a1caf8d90d4b8fc153b198e96e49912774a866ec121b6938845cf7f1107df215a62c4787d0b048bda8940a921dc26dd647102ce191d35474213c038dc441b85d566be4831b13808ea40e8c05f33f6e91dcbd2cd7690270d99f30b9f97c1e2fa8600023c0129611850129429d0d289e8dae117b3bdba532a63f9d20c2fdadd4418c6d0c2d815d6f02203f4398b979328d08cd92f932f70e75735eb39203bd843e09ebdd29f719e7e688ccc11b52fab10f4aec0d08314fc9ffa68aabc680f1745289568594dfb870d819a4689edf805a5e8cd14de7a79dd25362633d80a6f462ee113fddf0f801776754149836216270b8282e417e69e23945f18cdab7015861b06f1c03502558e1789389de527064ef61a66704c4597abfa2d84cec10d84be58a984377611f3074af100b5029b83044b66109206ab47ffa49a9370bc1552cd389b4c4a845ddf70c13a7db8436cbc99bffc991a5e207690517c7eb423053edf2c05a836e54c0bccc2cd12b0e245b864c9619d408c343d3333710220483ea093aa4cf3ae2d9ee16a2db68018c25e1afd47d35ee019078803584f804dff17ac54d5d63f3d6b1671bf5e4179af221c1feeae00b0c66dc475a5efe52d9e143367b1d8da1ca7f962f782115fd93a5baf2a1465beb31986d6ac402a838c961064e67903348af0c07fe55f6a82b5c385db05636aa456826198c8974299b2decc4f7257a878d650702e2f894c35fe1893045262f1af4baa2733d86c45dcaed428281befce92c325488e3ab4ea24b273f6da2b147974584f4f83f84eef164b07476a90f45851c1f6c2905974938b68379b4922e877e3ca795b049cf527b349e77fabb45acb55626a01ca9d4736ca6b50a38565d16c7aab7e970af4d5816efa546cc5f6e71cffa159ae19a1239c39a6ab9f2072774933be825f909e354092293f8740f83ff383b23f77bd441755a060b7d5f9952c83ec8b4f88d5ec6abd2ad91580a4058e01a2baf11993096a28e6a246ab9cbe3f581fa74f728253909530ebd752925098340ef9686a95d2dd11e4075bc5c6e8ecb446f8c1588f51e47efbc29c22db7f488637e089b36856f3cda82520eafbd0d94e378315d28f753120d1ce365664a2b9b9edf2ab014417988ebce4b018722069de90bc3d969c7d88e11b57d4e9526a185fe46c1059d3fa16da41611eb0656464948f9b7a0e35f922a531d372bb04e886d1b46ff5a7394956739354d2d05fb5a4625f36682f28de65ffa0ec011f89a1db221c3f32e48bb2a0fb822ca4f8e5b2519153aa7d401cece3bbadbaa8998b5d579c7624c40bfa21fbbeec5b8956b98fdade77fe942f4fbad73359765cf5b7377b0a22d203df7fa494f865368f125249cd166ab949c5178a0bd988317af7bbab90b8261ae6753f78d520ec294e3b49583efd512e41ff37d68fd22aec07eb5b0a2cbd8cc6701ea6f26afb10f5c8278935c59fc83c663ba41708c941ed8d8b62f84128cc2ae1fd2e5d500d9a5576cafcf9346cc9288935da8618add79af345723059249ec4eec2164edd7ac6688b617b5b3913350b162101df6007f029fbd26d1796af44b189f9f50a12315e52b87f7d99b605fbb1afec093700a04e4d25925ccfe003bdad5780f9340e02e9de2f0e8dab9e54ed2efc143b925356346d49ada29ca111e700efdb520fb9a4e2af84022391974906a327a3e9735a43bbe9f1d676db7abf90cead204856e4e64760cb0d8160d7b4137cf4b007f22994c745908ba9fdd1cadd9a3690e381a3e314e5bd320f1b847efd9c73b3b06613426f3f31133b4a167d7406fe168daa51dc1bc0d9029ee20da11f7ced94fb4bb3d1ad78046c09fe7d46b2a8869f146891efbef99ed03141bfa41fda1d97168b465fd61f801d95934ae2d0fe73eec07413d0e341f7cf3f84076d4a27b51d30a502802e17419cfb2a38edfab9ad680821108a7cb78921d74fc5ed4f406968840385dc693eca0e3f7a2a637b04404c2e9329e64071dbf1735bd812522104e97f1925d1b53aaeebec2bdbfb205f7e92c9eb20f0c8a176accc25910bc4b67f1907d74d3fbc48b3208df53b20de9822f941de573936abaa2b5d640802efb1ed951fd3799a6135aa11a04e9b2ef941de577931f69fa00d897cb1ebd742e3eed931c774276bd7319cf6437bf6f3b28f93e9776a7b58bafe220b9195c7def7b96cdd0bd40775be7e4a5af3160f9f1e62febda3eda32fa1c8ce4483433adc9926e32d34d3dbd1db1601d86647ee8c48a2823dc2337f4298e9f1dea6dffb2b4ab119ec3fcd9a27ef697cdb98e58cb5617ed75c0f1f4a50b191e3224cf62fed95077db97a75d8df01ce6cf16f5b3bf6cce7584a7719247cdee24c17bddaaa9a40d969cde30146ac6d3d39a3f36d993f6596bd61973fdaef1c7a61aa6fdd49a456652dfb5fcb349fbb4af35abdcbeab411da6676ef83be7a7b09297cfcba69f7abdd7f7809ea52efcc0467b260d931ac49a2824799f4da09f01dae2ca9c8df765cbef663603c3a3fc90dc3bcb1ccce213b94b69d7ead65bd792c15ccb607b8ca6f58ccc4053aad6da7c8f4cb7f023a957e4e91ac117773377014fd77c652d676e41a7af33d9d68e69a8986f5e23529c9df0dbd946a6d6d8b15859c3c42924f7418858b3b89db8b92616700db4515c5fc649bddb90d195cc43504866b93da69d7bb59e4416849bc389514b49703bd4bab2e4b8baf75498ff9ab9ea83702f780cddf7dec685c9fc2915654dcdcfa362797f073a51cc1af16c4f37a3f0a50b9f456d24d3464f2c8bb80d20c0a186709fbb6db42bb74e38b7658b091ab69902790a40778e220b0b0fa6f463deb0c7952b0c31be44160c0e262cfeea927aaae2c45f9374cd056d02c469efb7dc2a1606eb4f71f6b2d98a471821a7a2a9d5a7e7dcf2f1671e3a3e6c255587d15eca3d05fa1944f16f00479a89a4eca403d83cc5901f8bad7ecb6dd847c27d6bfe8ed6ce0f7dde1cf7c5d77008300bd76a9a9d841f87637b6232f0f4aa06bcb9e34289795eb381e25f2423c06106f776344251ff5a8f8612d1725e0329a0e71e44475269ea51a8bc24a4641481432a8b48f53fcfe97a5de9f6566aef509785d1cbf1b9f2a08122e6dc4fa0f9bb57de8a50c6ac4e2c22adc836470e4ffc481c292a28e06881f0d58359da00a16adadd3826eac642cc7b4c0dc9d4adb2ae6c9cc6a41dcb2adff4268ce4144c9d8f1b53a727a386defa295a247bc2e87daa3a2aeae757a0e8bd2193b16bd8ed721b774de24c4257397d69d1733145de050fdf96d5b0d97212aa2e09fc431ce87a23343fee0c8b585d04358b1f34d8e8c02836300ba919262e6bff3e00ce2545b2ee79e8c63aa35d567a1a11c9315a069168b800f9b84d16d3e853e29c73dcb97c5a9e4e57bb2bea40d531db2081128795d866b8b7dc1afa05e97fc4f8fd08e78ec30deeb639eddd84d78525fa408c8f34673e4cca9a5cbaa07859a19dca627a3a2a211af07c89d1d1764e549e5c91d2c2f16ac4d79e99daed4d9a23b26589364137fd2bdec4010ddb0c91a66c1a0d644921d6c6932785c4cc75a2f0469024def1a79b6ff259a99a1fdb2b74875de551d633fc994cf8d74db3be3694592b798d902b2a865643f418d21c9fba51ef4f8a51ab7eeea26b7e0a40bebf4cf7ca8a25bf0e5809aca1781cc49dd6981a400017ce6413376b8d6f1f247db905feee1a231942e4f7a1078789b9bb78040074c02c7534adab2be53b34d419dc3f849a68d727c722631598cfb905f2b7e03c2d94a716e6dd02797a6ba5d6dca260af54b18ab547f54bf714c83a70c2448e33aba394ff04afe17959ac55f03ede6ac46f9f235e4ca864799f940748b3e227be7af4dbce7d3687a2597a0d777fd108589ff1eb767109d6f0c43aaa180d10082cc07dbdf8cfb3f9d6417a8cd3f4f91b8a62623d84270b6031980c1c3ffd06ed649bbd745fbc74cfc71f006de75455b38688006d99fbf264232f8f12bde22b97b9a6e7565c3771af0f95326c13d8cd9880abb0f658cd26245937fd897b85007363fa1002b3d5ce883c84277d94eaa01e3b1e61a3cf93aee067f4ba970309055c0b05c8632a864c746e2c7058ae6b06f9422dac1f93873e60d332671088f70af50f3dedf3b56175bbedcba9ccbfa6a50cdf53a9fbfe2dc43fbead630a24beb6b654d41ed117985448b2d43552148b5601f749df566bdc59fb94021ea0167ac9479e903546b1b40c04080b58037a610df8daccdeb80b42479decd6c84528b600bb52eb90bb7bc45efd57c1d2aef9964d8f1022632817b71e1de2ccff5288b16db8585f8ba4766afaaa7d3708db382989f1659cb9c6f2e47db607e7ae7d4a47be771bf648931bbe5ed0a6a39e06aad75446b247179c51d2d0f6dcedc57c374fa05119f93b189cf32eba7999c7038eea74b91047b49dca210937835aa5b258bf8884d6e95ab8fbb40b2abf1d22481521f0eee5f3a11e76c3197f90aff36a84851b0c38b11e047e0e71d3315d84d3cd70c933099969332c49190d8d3efccf247ae9cbee1e87538b80b1d8ea04502908b6e755a885c9c0e0f49a41ceaa9da701109a390a72cf0576d45140426563b7b5f728d84fc8a745aeccc1cd4d88a1d8400f49f2acbc5508dd02513e3f391a7374011755e077fde7a0aa891fa5b32862f7611edcd5c53b21ad6e83b352423aea8372982db1faf53be120e41a3587c7122f8075bddc68485a842056410355a831ba3fc5df1763faa8b560c2d37889f35bab152274f6ce27c58a48c0df8582152d42643b3b0775c59b5c5eef0c97adf8256c974ad327d773b7338a2d8ef53789cc22c6936423090973646d7cae772052cc22861991193bc27b811456254adb35c7340b1f98bb41e0e72053fe277442132b4b1cc89f083bc29329bf5820441b0fb9d33a6d03ffe68d3f2444d7884e07f0f2e12ae2f60dac848269bda29a15bd4b44abfe35437962e9ab1679568138625aa63c47fc464e7294d13eec92fa87f986b4ffc3c57857eb70103355d47188adc4b0f339b7202e2b442038c091c2250e582ce11e83ffd04a2bb358841eec58a45a171f5be570f18a631a1784acaf5243ff351c618728a7842a2ab589e21b7564df1ecd794b7c7092132b13967cd38fc3784f88338eaf19bffcea963972b4364719ae5dea3c76d1a38c52c1a470f0aaa0396370ffd9624d220d903f502945fc825281ba5fc51996ebb1d1fb433c39d24cf9667b381b1d66c037c0b24446900bcdc1e2703733f151897d9633c33a819b36ccac97ce96d3b79a270ff57a4971d63e3e87ef15c675ceb45af2126fa2b2f20e0e6df4193a4e1e62be5c59c4325ca8b83951d6498e58e31bc30ce13869cebeadff6b3bb342f7db2a9e963d97f578248fc4c7bd9f331c3327374410e2f9820c7805aa20089c7de203e9aa1c0c66472a4386d84df9e7f82be1b921860630720404cdb2a12bc8e13b01c766d58d4911faacb64ba8abe72ae108bd0eb3982b1fd71c1da931906ac9bcd59734c571d2c176a7f968aaaf76710fa3f7f70b3d0b9af5b0233dcb337d1b970efa427edb75a4dda2db234cf50d52b8723391c8f25a1aaffb5b8e51facbe07fe8cc0df2578438e97d211664ad011467e6605aa3a0881758d0f1c10379f772d48f9357082c0a8af3716e4376cdf9758236494d5544791e1d67106007c404498f69d55e2d6907341013fd2e6e07c4e1310e903f94e403ff5581d9141bb0c768f05501d0a52d936e9cd1542f5c64f421dcb02ef5c80b448f6308491f4b093203b05c487df5040ab96c83b96527131a1a108db3ca44c54a9c8de6123923de8aa8659450c8d6d3b6965fc32ede6373a9dcdbb6c2c8dd5494c2b0535a4f127649c3b902649970216d4a2f695893b45bcc5731bfd58b03815f9cbc839db1b9b81a88b92dc08b6b63f52520478fa3e62cd17dd65182262576ae7c4eca16ba41af1e5cc67464a9931cb5110af3682a9fb18bd7014ec5dd19d4b561a9be2330d4779598afde8dc3c279ac8612ba3092bfa26f5b77a4e003c0afe1ac5e32a0fc5ff475177b926a836e013ce6be43fad73db553f5bc7ddda68d254612fcabcfa67a3a9138ac641e4de3e3dc9af67238b6830974336ab6d76607b0ebc1606118e6c049c276e46c300c23f64a11e57b0bbb07166130c0b631c50208b72ede4a68eb9179616b625bb7cc0b5b156f55dcbaff0bb72edcfaa3ebaca165ffb76c2bf92d645b27c2d683a727e690089c0db366d78b0e684482533cf37f324468a8664f2b8b59d8bf901c8ea83a054a192cc5f599366d85b157de7bf7288a5c5dae49b9d1313bf5e4f2a6dda3aeb48f9382993010ef195cd8508def4f72253ae9da0e06e3ea4580dfd2d2af3701c6a6c5d611f8016eb0751438f2bf29e38bde51ae48d0bcb47af91839764840df4a9b5d8559cd30cc98b45e84ac00aa6bbfcb27d9058c3369a654e0420d6aff541c0cc3ae6f4fa20fb83132863650cbaadcf7ab557e83ff1a4cd0ade8f5b50127a7806eb2239dc68fa65f25481728f3f9076ec19f9a53b800c383de2b9dc11cb5f059020d7528d148b7aa1516ef1e618941a8a988206007bc51fbd42546882f2f2b1ba6b7b35b78784eae0225b4f2abdf9c090a6c313042e2a655b71fe82d140e6b20a4413ff3ce2216803ecfde371314c740b1c36106a2cc6ca9dc0309222bb104577dd4c33e1be1ee7a098124517db916ccd91c4615d0a8b1133149986f5aa2b6225c9d8c1e1152f86c4c2826965314e5ef45e65a9dec41665c1cc645aba4e2ed5c50d5439afe9365992a32fd9b8bdd158d0701da7822322f4f0b1bc83f5abe4a2f2a634e4f82c59939a62c92734a217ed3405db930f8e13fbb08ca5172088fccfde58d95cc0b68c1e2eb54470c3e5c278ae98062cdf10eb3027123cdb113c395264a177434d28b0ed7d55798526b1001d7b1a96e228b9919df73566c851b45729ee94a703d562938b7724c0a8db845a2b15997a51b27cac3aa41fd41e845d692c0eee846631a9b96197e8f85f3004eb10552444c57c9b4aaf453a1b5122536d123d5e00de86269f30d95b7880e55cd65ebdd42c29ab81829b0e4a8bdddb2b5cd10fb0fb708305de36339e5972ca470279d52b3487b984ab8b015c56b25d410f5599bf89aab22045788e22f57b2f68f8d82f1377e761d7e8e8bd27a0f845229f12d699433528a4cad2e464c6c424a00b5016d7441023712c335c615964bb8fa9a46123fd652f79de8387fa617b3ad3ee6affbd0671459a612d968419e21df404b053a2e5d443af4384a0f322ee9fdc5fb7230fe9b496c7cdcabfa81af23efe34f23940ca7b102e7202becd884876c12bd28f9b7f02856fde761ed56177aea06bd7917468591ec3e46d34a1350fb6270f0f43bef84c808791952f4dac86028b7c5e6b9dc51570d3419c16b898a3e1493f54c9530f426d02b8370e3b3117e1bfa04f32f7aac6f781d3b3ec5cd667a379e2c62354b18e44000c172f326c081808e86bde12cf16774f826836c67599b3005eae1cf60bb5c8ce5290d26c6535c15532dff47e2fe4231c8bb09c38bc1717127a064e984485cc9c0aff97efcde6d0d3c69382b1ffe2512f2540f05cbacaec5a8fe0f54f3f673c242ea4f2b62c3f4b5c59181df611319be43673f6dd7d78097e86b4bfa607b475a158159479c6655f747352e2d1a06145420000f2922cee2ba2ae697c4b5813c4ae1d184a30fbf24c4cf08c7f9f7f6c004a9cf62a638440ca9c83494e66658087497b356e95987d58a40b8bb8f0e6a2faf4a626d4922e313c2532f57944ab0c8e552bf40a789a3a9076610af4121b5656cc408364721a042024c5bac463963e93aa94475ae8bab5478e4e1af58ff9330cec54cd554ba81a38aa1188b4e34cc3877a30791ed7d5d6f1d699ab098ed7c2f3118c57c7a84d7e969a187b7b8b1f61283845529ae9c6dcc2a0e2bae82137108a7b13e4e55af20b48f6d39c14aad8e290cfdaf70f1bf6d6f4f0b77cc00f60e720bbbc05bb0a799102fef8d27a35c63809c1be5f57c08530e660f4d3394909e6ebe35eaca0840b727a334384aec1a61789e99b2005eff69531a7f7a42020a45de3cdd87add2a28107e5c1637083d015de5b978d145836ea511e731750c4859780799aee47cec8271b1a64bbd219b2222f452c95e5ee8a9bfe9471641f4c17df061792956d354d8d426d53e28dce0d7a0d0db2a801322f821c9f8a485b86d961352cf6398635e4328239f75388b0688f80df9f9a7434133e7244a52ffef1e4305bcfa11df95781bc6d2fc630f5dfc958d8ea4687945cdd08ba1b2cfee6fad0f532cf4ca614889cddb503676f86299b595d36809b806f06b09bf530ddc155a111da577e30f3574cd90b8c477d4165dfd4030b19adaffc0e3331b2da1128b8c0b087d80d278deb061f6231662a84810b7aba2d6feea4ceaf58a71f54c8fb506f4e966286f26ce87288404194a9bf36444e80729d3532fcf823a6dfbaa061d7f357fc30916ac8ba487281c4e7734006453a609137c36d0254a9e3fb869703e5eb6e53162b4bf1fe844b513ea3b18b469dde410479e32ebf1b5cd519ecd3f8ec4bfea64e42b284be4c256845362b2ee3aa9461d1f998808ea7bec79628c103c305e08dd548805bd7a5589541c06193b2e6561edc48d197d2ee6240ba8d3358c374ba61835c40790c51bb5fab8a3287f7c865f965cd1f3a7dbb7aad50b6976c65d7dac3e26ed3045cdaa2c71ad16f2db4da1dfb06914edaa48d43389683392bd704163402b590aabef8abce4178e344cffb4506b3f922f8c8b4a9b8af47dd8c3a168642464711d71a817ccf277105a5479db4ab2114e3c5e7c10dbc226c6e0cf472e64514c80dc4b3595205842b629797403f156b3e4ffdb5e2194ddf031288fbc82c549f9e82d6986f639d469b026169ffe6e9269c11909df281c7f29799f34bb8f35df5fc6ffcb5d53522f414ff2b7e3fa4bdce0748e0767f4175edf5af7a384c122d4712a0ac04f407b622d81e34cb830b430a751ef7b20c454b2d6d146ee46ebecdc4924c5ac042bd75621bef15f8654cc8065268bb99867012a7d44df3d9177f5e21b9318f3f7daa381c8f2eef1997e3b7e53d02972f6abf38f0e865e02e598dc79fc6ac55bf66228002fba10f4eab34f2b60eaf58df1780146b8ebe5b54963ff2ca8181876fe209e6388b37ef3c252570faf8fb4614c73d0d8373e18b2e0e87cfd87498762ed04b95a66b5d1fb3c464d6f860119289be7fa788c5c9b31b60f8dcf66ca601e174f27c952a4c806c58c58c3034fb682520e6f07f549b35920752610e4ab8ff806a7be0926ea8d8a3487137b8441095472aeeee234547255727e86ec060794d8f341008b3652b07bf48836753312c057467e17f65348178d4c6bfa58b5994ca61029c08d8e1e65a567df3c1974422bc62b78781b9b10154a59a7f1f7e15792fc78138df8442439d181cc2dafefc03bd1bd4f0fdab512eb1d0fdfbfcf6301e7d5fdb7804618025a6843138233c62abd2b2bc5f5a79ae4bc8c4852266056e74689fa15de238cdffc8145ca307f49089686b7cbfe4ed8877d0d10b1344101aef4f23d9e2513e773eba2d4abf48067cc9778bb219def4401907850efc76236b2738ee38de1d4b5d8643fa3896403f074507b7bd4694dd1430a3ec442ee9ea5017ce274a407fa81b0b36e05e75165a247cbe500229627d25e3dd6c56951be274c726a8f8c894c88004ff6e2a1fb66f7c5e388ace07622ef25992ce076d2ece2b3cd7e6c3dcc681e569313d3f6813cbae85990a792244ea792a50205dab90604cb6b7a27d9daa6a659a22bceb09634c9398d7ed93e4c5ac909c6af98fa37275cebdd790d04bc64ea7f9aca35696fc430e1d3de882c044f1663f456a2f4d58e1f1598571bc2a966860fdd8afd994d8d2f2d9b3150bd69fe29de9120c9bb8336c94a33505e601c666d2f89cbc403e0be132721af62481c8293e9f4ff7996f892bd1b2730eed20cc57192f1b13eaee76a109e0b84fdc25807b13613bbc7aa72ed20e389ab98eafb9b9e80de76838e636943500738479ace11a035bc19370c92bfbe38772d76a96a9eaed9674efc3c515d9c021d03f001dea988410498ebbc43c74aa9a3bab543eed52dc01d738113403e5fd25b3179fd6abaee56182d807076e06e96295a297b690af1bbf35431ce584c27e1ded6f1ff1e98aed87edc459aa8ded229512558d78e39fa41428aa7abb8300a2cce3e1ad118ebc6b4ce8d6128af5b5fc319e17d4ba8d6dc4967c3dfc974a33b572cf81a19cdb172d88afa819b400cdae524526a3362c58772339853d0ae40a93961283d89228e028b29c1cbcb9457539a17f12a806e1ff7a326e40aa057603b1cc0ccc5e1daf7fb1df6043b47c4fa8919b0f2f9283093f12c591ea3a3e7b9362275a8b27ffbf68f215feb19c5c6e393f9211981bb5296bee3e5af50ca44e312a008d683c85196025fcf22a00fc870ccb16054ea6ee41379fe16d41701600dc411ccc2765c749166762cf222ec2b96e042bfd17bcded7ecbe285055345b8f9ec8b583b2f7efbbdca289413fcbd2f2bb62c136c1443dfce048d2c605cef03ccf1e69e5df62502e76e95387fc9fb78e5c46d69b82c25a6514f4d95b4097f6b42f12350d40757ee0e5c4c9e3cb7f367ed50f35d5806cfeb71ed551cd2f3936fbb0d1646448acc782853f731db51224754ab345ed9d9bd7023646fecc9ae8b451228004fe53e13b2f2038bee0f9000bc3ceb41de11afcce2ad7f3c42b4b9f4a5c3b987b5d1fd64a639fa9b12dde5df5248687ccd9568c3d934c47304fb5bc3c216ec545146b263876b52ee099809b6fcbcacc4c9457e5720958f334e441c5067983192847e6836baba9819db08a5b3dd0ec82f71edd65a5c0efef7bdc745da01d985362559e77e076bb9de094d81108afc866c4521c80eb8a4644ada7694e817e5a10cf253673bdd0297ab299ef41a73835fadc06d956e472919cda6f6ae75cb97f3c9120a8a741f79e72911db303b8eaeb18210cc4c6bde484001427bca8b42072264da233ddb058d6338689897d331c9bfcd6fb95ed8d0c924511a529a89738f10442161ba46d269318f5d1ed033bca5464337d6ecace0e1394b239527228385b59a7eabee2f112b3d79b2a6b80adcfa3c1d2ef1220b87c4770e94d7069f326a5b4b0e874c529212363e650a305bfb9e03972e5c76dde8e9dfa5fb828b775af8b9e7952f89e008839cf543a6b9444a38229114fb0398dc50a48e6c2c1d21b2eb47d22a013d467e6a3abb39f6f54f23aeae46aa300b00a4c9e859792810b24649ec92050ab653f9445230fdd533f976e0a8ad1f1090bac2aff0362cd7fc8d5836d675cf96c776aecd6bcc1970f4dd88edc8ebfebf150bb670059fd04319539dcb61337167746303938a47f01ac8a82e8b6886ba9da9c0074ccea6f50df374a21c55109346d3de0243d2a8e719674d5556ae2aef95e863f5806b2ecd2f195b5af93fa01e58ce21d8ecc46ee22c715472f5393a6066a31a680d939c9ccc160c8c7cb415537d72e1fd5851940a8c62144e81440b1e0dfd0ef54db718673c7c908c4f52a493378fc91770137fb1a9322a390c962ed2f6d0d7d34357283bca2840debcedf6ce4338ecb40691671f0807201d4224c0856ef4c377d0fba30e159f55f7a106ba6aa6c174ad609ceedca46629bbf41078ad8224845bd2494982ad67007f14238999159fd2cecaee550300e56957311a612e7143467a724f7af2c9d5ced5a2d1410134b887ffc162ecb520130751183863d99fe2c262a06a57f0886e374b86fa1b0127f3f1ea8cebe1f2e25ca72b146d797648ab84af2825124bd9ffa1a962e593310a7dea5ecdd4f659ef919b13c510b2a83637aafb124705fd8f0b82d489b24a87739e6773d68ead621433b9891c7fd1805368b6d3dc887dfc8601ab16200a3e9969a26ab69b7acde666468e5733673170006356f42753597d102908680b8b76426345e774201025b965fdc260a997e9f5466c30cbfdf6008861cb9ff27f47fb9428f2ecf882fbd04285049a17698068a15aef7351015e3cc061921a84b50ac2422eb1c22841836a641584d78d4c94132dd6279b0a465a28146ffba5b42c64fd7e6ab42315131e45e6b4bd05be01f8d8ef81cdcc26ffa6f3b6548404511fcb995866bcb085354741fcb2623183cb5423795563f5b04128572af627e12effc0892d955ad930d954c1160b8b80142839bc9299727ee1a5af971227886d4094813eefeb0c5f0e10176fcd41c64ba52ec87be953b6e92faae768928e41b1a6ebe7ac9e8b3304837ca6e451d3be5f6debfdf5fcbc45aee3f849b7cbef24cc9782b8d62aa19630ce936fa15f13f504e9d56e1b52c292f76232518647bb57ead0e34b284e3bb53a4a10d721017f1810ee7fdb0074c56fb6097d8c5ab7ffbdf794bfba8cdfbe0f118575248f87159cf675074d2578a0312baade572732ccf379782a09ae9c66472ad5a8ad34b28ac893998e79a1bc461da3b00e17aae95828277155f3d93acdec3e11501844c44a140fed142309d1db243ad3083a32834c176d8877c0b4fabbeb2028ec8a1e4dca8955cbebd286ae95bf57d06bae961b2c342bb8c08ee85aaf73da29a867680a62520ddc3143fc3cd2fa6fa949306ee7d48687d0ed426d2fc022a2d915116895fbecca8968cc4b1fa0dd5321331f274460451e850d719c2b84255cba2b4787d456b3fa06f32d48408a36e86585ba2a348cd683947c33c1dd38255e742e87506b5fc652a616f2f8b76eb8db3254c7e46b6fe1eb5eb1e141167d6f0a961695828188b50a42f0426399f152b41e6d81db7a2b051c3fb1cb0abb1697fcb30737d682c938e58fa420dbaea5c8e7f7a7816a277d53b70720aa00f3873a5dba02861b928928a28c414d1e2115bb6f301180075b4aa2b22ec485f31e29cd24a18a191d381718304bece10a48b2cafa57a9bba261db5a61ce7a5f3ea7c35c5de2f4a7c1376f595e28c6ec0a893afbe06b3c2d0d86bc8f6d017f06f9881e9c51b28a4ccab3dcef3c6d8ada6803d4131b370cd49e8218c79eb8eed1a2e310b8f0c3fb48df8804ea7a80517665ee4e12badb35f0863086f5d1a5b406c2ab2951131d3f055ba5b5dbfcfba079474fc36fcb6bbc256c88af22764329a00a392ff034e0594f6589b55900b084ef342a30be265e34ac9010c2a78054989cfcb6390daf028dca8a281e4f8016dc59f47801f11d194f20fffe8589d25d0012a0424b35332e0d4bb34b24a96c778e291a626a0f28d0c84a8337c90036534532093059750439d76ec1944222195c3adf08a9680a1bc7d83572523d29e0a15fe55146d02132ee561039f2aa4948aa510801b12d245c34dc8d8965200651a61e67ce552393816a60c8c889d34216194798cff910524c06ad2ab60b499566376420eaf7ac6c77472b362d8ac026b9e3ca872dc66b86ce18565859efcaf77da911c78fade4b3a3f83b4f297e1b58cbfa6c310a22e58b56336fed29f0c619a2cb95e1f261468543e85affaf000ce05cd11c8e310eebb59fc7b52c42b05873bf4d9c7dc51a774b5ba432a7429dee12215f2ba4bf9e50e4d4afef25ddb8a09512c4f86d127e88a46dd976306f778462e3203d8491bd565fe84f28165ab1720748d982a0e6ac626f42da6793a881a7808aa83169b5a693bca0817b5e6770d69ab23221453fb103c25f31020597d0dec53e763eae313186b768e092aeee8ca2ace1822daa99576fb31b202bd63cc5a4bbed4571f1be888ebc3851670e88a931087438664359addc36c0b4180dbb72e0bac98f823930ab0f9f1054f745b0dfc515b4be88bcf3807d131bf1c59380d55d9e24b5240395bf49b80ae63b9d4d596b6688e2950f2a332c7e96ffdd0677ae1d1d07970351e2047d4fa13643e39bd4b248cdb456a102612cd8d432d5561a24cd5e67e47f5c4a340e64600016addf0c4deb543fea1d4f97b31c688c5d835e1d8530f8429093a887217db037abe856c47fe3e3ee3926c4d49b5d300368ea010ad79c1da31400a38e75dcffc97ed7ca1cd7e1f3bc4f57943a0be69b30d67f5f999b4d1ccaa5e42a120e5fe89aded5c526fe6a49565f5647f639e7ed750163269a9c1136041baadad93b54dc03cb8f787439de3a149f92bf4fd84afd9bb2802086f6efd7c0442fddf80a314858f892191f863b83c35f37d3fb53f7c58e245185141bbdcb240914dcd0526b43d8d086d101dffe6e3ae7f110e5717da46e4cc3dac42a0e510dd7f5e806603bc3864ebed176fca067efeca852b43f2805c3e1ab23a9a870353472251868e0014627b0a5568d7e6ee2adae23294dbef5e32120ea07ee2a9019187d91f844814e92f15f6a6c442cf380618e6e2c0d7951b251f42539926d1f0534f4d2ed2ec4a72cc14151d0f43e5829682976fb9c883ac13952c76b9c84b788a826a3e60bfd4a3b828fed58243346ca29ba08907e21fe97911c8678414fea1b77c1499dfddd29f1c83ec0ae7d2b5b329c0cf786aaf073b8738abb95eed7b3c1d950406cfc3b2a41e6d8aa7e13906c7a283674b6a821eff56cbc4c41248409c10df196949769f9651bdf744135d43a8ce2a5df1920c228de4057081888de33dca2cddb8dfc89a6b3fc42db427dd87ea215131c9fdd458c44f055fe384dd4a2234bb9e3b6df0ae770b1c048bd7767e8f5e4ee6c12ccca0a5e5a180062c29566279dfeca6167177fa9b6a5206c951fab8e1a77858e5488f519a49baac15065e0d02d6bba854c730305f819159d88a7749b878103df0a1375b2b4f8d320222d2864003742d4b7686ce75a695b9515fb33e5ab33aca92e0d98b3522561122a9804c1319ec6938650a334603d4eed9f1522f90c86ce20887297ee699f722d37f15eec299bc2f824de6ec30aa2ed032c6553ed324d8689116ff6818f9c9dc93765616b2e67c31bc1977a1e261e490466b4f8df293c6f52c871696407e0ed6727dcdd26fc43564820a5054930b21c2035b1a254cf9b3b4f88d6fb4b04b17831fb49effdc6ab9092b7ea4192f55835ae2a32124561ec10f9bc20999463f99be5acf2f526a4226d6d430969181459fff2f6854223452a29117e15d737f7d2f34209be05c2214a646202999b712b03cff2995bbb7e2352018c2163f9de0e97c9e32220b07776de049ea032110b8b4d5641b502031befa161b4d59ef81a28d0ef5e48de162a31a333546bf6026879631169df1921486cffc010b9f25d91a694451b1fc9094d21a5c813155445c1b0c3465b1852447f6177bb5174978f1732e0e40d0a2102cea4cdf401c1ae10304e539c96e89bfacd7e01dd2143a111d1392b1e9a588a24a5043242accb3706a2f2ca7ff9c913eabb3ca7ae62b6c0dc75511e879d2732bdfd0a7914bdca87800cdb060a877567835e54ca504f928faeaf8522795dfd70e405b7fc0e31f3e581e64a2058e602be5a9ba90c67407f0a2dc9a0f6757738f70dfa8e3353c4a1997af711e0ff6a0e18e05a7552f3d0db86fedd81a6bb19fd4bb4c629e29cbfe1c926833bdaa754ee8cffc199198a286fa932f700c365f542459fdb99c33863765957386a3d22af203296b42961a32db806d2f4de33e1bf44124878a638b9d1c45ae95a37ffa2c8803d64f553bcf2392acfaea7accbadb267811adb94c6245ed401d61fb33713616d86c69bbde793b4ad8b03e982fb797e38b4a3bd5ec44656fa8bd61f5dd1fe3defe814db79646c51f6ed920176e9d5526447ad98926c5acaf4cff1322d3f33681a0a827edcc72db17c50406776f8e11250c01d26d9a638fd7cb383ed6d5be7153459f2430fb8863d7928e2627b26df38a505a8f0a4ab690844ebd95c9f25b0422de6545be41c5186a07c9442e88d544b9238be89b66801e1d53f6dafa4d5303ba2cee89a2bdd2871674e1f27f11a12823dc64454378d3d697369c798d16819e66e91eaa699958bb3bc2e08b0d3da97f97b87bc33a8d807433e35f932a627359abc4abe4b140886438030ff5b898ebc6946e34ca28d91e09313d454e264a509851113a4614ba5c3d86a89ca5fec41f700f34942d492a29cd90216dca8e471b8aa36d6ed5eaa8480bfeb75d4130b81e9615b30ff3c983b7266b0e1b0952d055999ea4a8156c1a25ca8e22f23a96bb3bb96e95687475b0e98e10b47e1fbeb9f9219ce2067b1d6e38dfb1bb85af30ba2f2c5c4048501ae214a37a9481d4eab9f5cbb2b695b631195c447d06ba158cc935de606e5a1e0e043907860b7ba906ca802d73c69fb9fa946908fc2b7a210979b01e5fd50e70d93003508a172b2cce76b802dece73f5f540902c9d29a6b804be1b4b1332b64af1edde9db75145776d98c15dc941655bd172274f98d1da5ba84831b4db99f6a8c8998544183d5c4240e0813ffe7f222e11c7f3391a2fcaadee7b065e6c298724daf3f0a89e6f2d4dff7ff6dfb9cf70d8b3e8a99e86746faa32eae5458d7918f61163d133fd038c709847eefed32e6904eb8f0ab16368ad8c04b2cf19872a41c2e43ec5ff42175b0ddb15a303f2b669d20449d0a90ce71b8b0a55cd54124172fd02c64b57773b00e5b8e134b021e521c13295f61cebcd7f1a0f0a2488611b577ed9a3240f512ecdd6df76e5e3bf2a0787f3190cdac1d87ab9694b8a40acae8df3d0bc1c6ef193a3bb8e71a84edb0793b3a6415d9bf5b61575068631eab86fca1191aa06822e70a9f6748894b2580b57886c4b8c1983eea72cc2114509c46774e636c452c2a98674301e711489829a2ba4621e19a83aea0205e3681f47d3a914dd75ef65e9d03da07f311f2d5e441c193c61f068cc4b36779b8eae0c2ff3a1561f85daca45cc6e5776e1061c2584ce62d75376650579150718baca211c3952eb6eb157b86033554dd904b29002996d20fcccb28b16f972beea1b0db7d34c9e42352e166da6a2c99b6e067c71321167c2fea2341e10d68b70f93c856fa50dd319368e20f7652fe5f0c58a69dc9d3ff5342b7f012b3e335ef1862c1aae2bfcaca8532a8df3dc8aed9c836157cb893f73bdefb78fa4626e7125ae74ef3681b6997c3720abf4c2363672e914c3c61b83a3f26728c66e98a19d094b543dbb5516a94f7cf59a60b095efba61815ea2a24986a4aea76d2ba9acfacd4261243d33f3ee9559275c7ca80ec52f1b87105239ffa03604956cf6654254180a7fd42ca9ff515bd8641dac974e6c628b9ffef38edecf820e8304b2ade5ff98382d85f6338a2ac26cf93150e29d1d3e0579da6632460bb99da5808e7a345ce2bc6ac5786d2e2730996e0582273039faf34652fce7438112fcc69b08f50f0b3ebc3306631f227d6fefbe6f748fc39a8f07e777850caf30402fa3ce30b96cd1f370d8a5db3f43f64102f9fa584ac4d278a8df290d8b54981b153fd6b00957b12cb9c146f852ba914e10e57860700f9d41d52442873c0762e8d7a13aff5634840f5d8904105af362e166053d741b86fca315a9faa416e2ea507990845eb42012294af681740683d0a67559ee665d3792bcaa06c27f0d25ae35db0f1ca77df266d43fcfe912a5818568ed68b4c8a871acaf9d447932a5e6b257e77cda13f101c73f9f5dff2b31c7e30decada5203cc6537376f5447667337bbbacc6d5ee1a9a97d916e07e4540873700d51224a7512c2b5ad1e8ab99cce9e83cf7a561fca61e23fd1401b30f23118841aed76fdc67d251e8f199d1dde93843a9f16479ad9714d4a2751c289048c545e30dcf66a124e58e5da0cbd14677ff94577662fabe543c207d8c39b9ba3ce881e90893108d1518860a0b9b25d4266653ba1b9662bc7923ef0546194d3021947db3a521199b15708e3fd7bfff35e1ddc07e835e4aa7ca791cbaadd20ac3e818889e1486546e1461b139c3c651f664e106c1c67efae0dcd4d10c98e4e128de8d4e6ff7ba0aefc5b0df65acb35c566e303a11780a409c353d12f46ad956b22cd3e978d0dabe4d2a08945f38f9b485ebca8d85424914406edc789316a09271c959ec85f8af0677e854d55363bc0f0e0287b8802f5c9cedbfb800d7f80666c76e6d9dde5be17893ff8529c30101269b02f9a829ade0b1db8b08a6912051c0dcac538e6fcd3cc881b29f424f7ed7f5bce03bc22c76fd02cf3c86c0d46356db32d6e53c03b780a7692c21960add9a4e7f0a102320dd9509f3ff4d1cb6838ab46d4ea6d463866cd58e0e015724a2b2d53e86013096b30c622285f2d425628c99164028101d2dcc02abedb13a6abc62722088663d5bd8b24b15d90dd4121ecddecc4846734815a8a58426f320188c52596ae15ca8fdc2db9d867a2cad3a85f6f3b3574fc83acf7a96e36e708f7b9d93a74d6bcbf55842fc8d36682255a845e25307a8e9d892ffe57b4d6edfed049df5f062d679eeab54688cea9468d494b559fb3ed3b43a646a1ce68e3e1299cb16f23755f5ad7f8e869d693c3edf82cf69bf0df4e8d94a207009154dd261fef981055dd58b71725c2d6a5e6bde7c01ef2dbc13a20dfcad0016c45478bfbde01646c04f4afda587e49afe65f5b4df082c5c780a537ff73a48a003d8f4f60841ffaa0c565aa0d3fc06a68de92d4f6a2c67bfc239fd075ed71859408c3fc1dbeb731c1915c112246465ac87059672dfa56fbed58c86b072dc9beead92bd6c0377c0c37016cc7bef21db6f053a3f79e866981cf4f6a6afe04dca607ba3781b1b14789ec043cb4b038381eee4085aec7a68619f9b0ff8f941c682abaab1e0bce7d960f606d4971f5800faef0b5fd6cab8977fdcc1c0588833b35435a4c2051cb336a51492785b1c8f1c35076f3c3247fd88167818c666fa94e0c1e384e907b1737a07638183aa8c7b22d32d362cc036c9285600813c6d058fe7b931494e47a64247ff5fa875088b23e0e4a965267e8474d7a271e5c84432b9b06251aae41d9b0b99b80986413b65975891b9bb4833e8b1792402fa2082a45c1837643964093acd25034b3e2b3385ea43689205316c14a59317f5fa60f2e79abc42e9eab8e09ac82b80d7db7f691c941ac3a49c09d7a4b5625e02231fa8fb176b57acee91bf5b659e201ab46f6619ffb51ffa8efceda5bee4df7cb9e95c6f2a9d4f78172fd6cc6060a521a158145bf6affc17b28deffe9a3361ee9cd37a94bffc733cfe6d5ffff1f3a6f3eaa20d2ebd7b87964ff8d512cb6ed4c2eb337563e18546edac57b75a8cfdb8658d13d75ada33e934e48973a0aeafe830d7069258e12460af121532064fcbe07c1b2749211d0eb59170b32ab7f0334111a3e8cbdb98c06435ba1278d16da489e32426240d83e553ffd73b84a189886e963d54db5d98e1f3f6bc3e5769dedb0431c259ba4c5ff69b8bbfc47ee9bcae910e2330db952f7921838059a427df113bda4354539a07359b2baedcb97fa9d3cd4082cd8eb54a781b57660b54dd22137217c2591c4efbb434a9cc6e16bab4cd975c3c8b2d632d99190e6c29beed76abb429685f159a3e239b1cf26cbdec695d8c42062cd5cff455ef3e6cb6efbca428eb4556a87fc76990210b80df2f45f38bad39e3382f1f15b9485469aad7a0735c1f0cc769fda7a696410f8418b5840b37d1fddb0484a254a1d3967446822b6698a8b3302a80e1f7ac75fe89743e085655855263d5e508973ae1a81598a30cd678732049d97c38dfc7c052cee426bf4d2008b180f50b7c2e9e603125445cd7e391e62083619cf4ebed39fe7e877e760e7d711c0ed54e199ed4d854ae138e86e8bd72c2874fdbd11365e7079e99c120b21f5d6b815c3620f5dd96814bd0c15f5f007cd56a18cbfd517062dd46eb8c3a3859bca0372476ae32894e00dc5aa54cd7e20fe1f359c4b243b28843b9d68fb9218a8121dd8e3762d61e3a85627b8cd3ac843e6aba5d6b74c83d716c3b8c2f0eec50bdb812cd08832343827cf1eb174530dde4d47695ef56fbedfb0102d77d6d06b5136d19b442680c712d356bf65d90113d061b96d483574060a92b7705f9dcb732f8531a04490afce04878ab52c5b82bebc80c7c3c6bb969c96992c9a80d7bc22737a50bb046242d4847e5eecda0faf9aca4a4c3ae1863ad54b4c5e6b94a75339be9eb03a55ae31cde22e06f0e46fea8e278520e041820cb37a03d072915ac8b200018577f18467a4fb7871b6aaf32846e9432cde0f2d1077841e99dcc5270f5a4a70b36f9f838daa04bf170c535d20d36d7cd964596985f4c8ed8aa55969a3db2a6bd18aae44f00877ee85623fdb5ef212fae401d8e577e6b6b549062ea507c98a2c207e241e53fee0fd14f54ada048fef2a809e4a6f8f30a6095d6af1e1ffcbb873191d491f36a6abc843305f5f1bcf57981fb74ae771e2fb2ec70abe3567cc20c226a8d548eb2b16bb531342f4c4ad64c48bcc225b7ed89818b299d9946868d18425b4081ecddcfd1aee3cae30ac4e7c4846f49dda8ec53f8acc15ec603dcaf1d87a840e56aaee516acf7f5222149cd8161d77220c24258d9da5d893b5a08375577b54c180ddefeb00b87631fe79d094dd1b513d965096b61f9d24f36c7eff562d7a9bfded4abfccd2f5b9dbd0755dd3d60cb5eca13d6168c24a9b6b1b451a113037155adc87ef4d72d0cbe24bb8dd5855d3d25c9a412e77e04392b81cfe1b50e60f9fe93460ddecb0c9b7d12972a5e8ce4bcf290d89cea91748bfa847f8dff28b5d06d1bc2c05d5b225f5486a7836af42bc1af22d900bba99eac4299ecd0275a39f62a3b00a2d74d967191c104c564f73ada000fc04b6b0687ac2bb0edeef0e21d907279e2f40b5739905e1a509b9fd90371b202090e5de27f86091cfeb382dc1d86098a22371f749c9609abaf59274c28156c031dd9928550cc60549735ca94b76089f1820cff6e9026462a1829a662318c94727f04335c7a62ed016cff89ced937072a560ebbc3102080bf97b7a16e5d6d306c023fd92db14c7233683bf2009adbb6228915b74b440fb4a590f925953099a17b652e2d989425f63f90981a84860b2b6fa94aa916921a94e310311715fa7fac3883e3c59fdf2edf08ab23af1d89bbb7f7cb03e310bc35a3fb9939ebd8848178c585b0c6e0af1e30e06cbffc1353ca8bc0e0be10102182bd57cda8d1fbd14303140bb032aacd483c3faf624650c83fbc31e0c36c34045bcd689d44aec5ea329616e750492004b7f435e4bf9c3057c9d458825732c451cbddd0a00ef21fb5ac2add21ce615b87c4445461cd45fbb2ea2f1a03d0e05a25bb82b6448f82da53750d1bad282356c6846cb8a3115ae6d0b0e41c03f71ba2431c0212cd546141cff75b1debba137ead51acbfb4b9e03793efb73b1cfa0e30c6fe1919dc2132c3e625bc935c12aaf08e17717954f85279874c8c8b1dc3808333bb389e16b0133b1f05b65f71434b26f0da1ec96041acf34dfb606131490bbe1fd885207a72272bd5151e17fd39c17b8e4ec64300a2a22908678350c2695d140ea8a27ff980eea87b7ef3b5db2e221fb62e0de41358b9c62e5a59c904bcfc9428020d12faae68e0f80888a0cfcd9fd3290b9958422ca1b422e6874192ae02a555d33b5671858fe1af6c90caa05e138d8169d22ea3921a7e43c7051483b37843aa8e2409ed81adf276c00c0817e3d65e4f4d300842abab537d449a799ea8f6bda6eb7f7c5e4140100887c2a020100e046141207c006c65551c091183c3145a4af78170a1d45b802786bce3aaa85d7923c5f67db1316f1d2c019b554a5b8076acd114d1b86534e5009413c3668ab0252a5a22a400969d1c4b00d5bd838ad4c301bfd7e62503e9cf3588dcc697641a2c62f21506641bac754ef6b1969577b9e919d9cb4da552a50c9e3accb565b3d767130e56d700112e300062b90404528ea6e7905b5e190b99fc009b520ab09c32626dd5c09b61b288d3f023106fe1d40fef990735221ee17d27251c03b777428ea7bb903f8251bb1a6428a0ba621cd7c35d63cbb6238692998e069feff85d2bf93e94fab4d3ad3611c77d8b2074cfbbc74e9710b2e78fdbfee05054c41085d76ef69bccf90bfcd6ea7f64da57320605f5c03249bd49233314eb30e12d3f0cd8bac952430ef550e175c7bd7265851cae68e0f702c0e35d0b4cc7fb84afbf98985db762d28b5e3e35e2b963d93eb8c21dabfd2ecae43595de44c223b509ff07697e90a4273a1e99a81e077ab9687361aad698a39bf451cd511f15f5455b8dcb3f0dfa42f8ade3351dfca7d5d627d24a0ebcaf4a4e450832385534c380e947cc300d5aeed1553fa53cfe51e8fefd697af90abaa6b366c75a50a96c55d24ec1e7d2f89430c5761aaf71a6894a4c182a2fdbed37d56cbcba2581daa9c6e3d87c8c2a9fb490451c8348bad91fb8c61d5c219439d92a34707afef4a500e684a478f81247a5602de857e82921f98f466c017aa838a110ea4649237bfe5416436df124109a1788ff3aee1137cc63a8e2983e7c8e12452550b93b54e4f426c43a3d0572178cdd0e65682b96e68bdea327e650b6efda109d18c4852a3e80b713eee18757ff29a36ddb23ca6160cc3fedec0e024d578fd2a0fae9bcccb3cf8651a82e60a9fd5e98c4459979b00b212128ebc1ba8edacc9f4fd8adf9bd44ca3a272cf09e2c3399c18d4f623cce09672f2cc5d6502050294e21eb2f503b938f41bd8889b32e2d8469eaf5784ed0c4870cc9c0e685663089b4ecf971683e8e718b5c2db8e8191ef082c8f3fbebca4e30e3cde4b239a4fe009b279d32d4797a81d721f55fc8e817d63ffede259b8a0ff3485f7cf8706fe3dd1f04a1cb4e5e720c8273139296c1ca5841a54993042f66ac5232ba9d1bb0bbdaad57174b8a5a075837661e4f1932327dd721ac948911a5b35a3587cc4a8680590983580c97e9d12bc1dfd32f2135d65b89805323be38f401c71729ed67c7a81b2fb0612f01be9eff3e11f5728e7fff61ca387adf0c22211d6d0faa15dc43f58e7f85473f1e590b51e45b9e8afcedf7c00175304752141b82a22a1ade27a0aba884b457d8f1c0f923235af538e95084df44c1c11563538dd02f5abd5a44ecc456d5237a5af43854daebe5542d7258d5baf0d7c7be66584b144d576950fceb718bd03d8f618d2d9017d19092c210f58859902b290f9dcc334c32c2cb5b9467e660826f0472c5fd7050daee163a1c4444af3b8168ace9f4ba82d65450a0708182935fff2335258309034719171fae9e7c3787e42ebd1e11cab61064431091b13d5a1ce563cdd3f8b195efd2433866c484cc63f1a77feeb715539e95fc992485f096232221c7c9ef109b6e746f1412e8fac68f458aeef0769794881de331a4d8ba4be4adc769121d5a882b4ce0a8b45b8f8642af1bbd505f3644137a1793745ad9c4084fae876f947b637af0ebdcd927b4dd0a808132ae98a71bd389c589d7a195b6cfe4a03c10f76b6e3febab9c311ae5ba274603369a420ae5377bac602aa776486236dda634f66ea7e55fda87b592fb8d320ae9a6284626e3fab397c2e3bbb46898fd3d9b3a86292890fcf7e3a82ac392fc808bae1f7b1a8859e1b8c03926947675ab79ace6bebbd13192e8ac2f8abbc0fd298b4f265a0c0dbea74914ada33b1d9b937c0ad939b333f7d6d599e34c7b5de80712488c6b4b2fad375c954e2e5b7d3766c817db73af60902528fbb25019fefa23b5e43258e1c671a48195199732bd0dff0841903a168bc4c4dfce3ab18d16004577eedaee36d9d0f86e0842103b4a2e71944b2918e158d2e45914183c210be528ebb3c8b76292486c41df7189d07531546f2b1d25cb4121921654b260a3ae224cc77031dacb844ec58aec932f1da59531ee4faa38244fdee297977aafd7324598a60168104ad3ee00d518d3e974028514310292884340bd6fce2c9a9c1ddbb27bfe4cf8c5541658202b3d6da4d5ec9c8a95eddd98c0fa34c5746fe0aa64ecfb9ce687d76a9acc039295bd1f4a4d4599afbf2a11a1ef7f7f7fed1145aece0a3acdfd40a1f1853bda5b321845f2d68cff19fe50ba7c1f84c36e875207eb1d07bc6e7cfe11dcb4e02897c9a296e24f7f03873f5c4aa48b410396387c9b0886e0eb8daede9489fc99dcaeeee34435a5f80f4024636fcbe68bea2f4c76b3f08222f373463d109de836274326fb127d54dbf583ccc13fa2732be491a56d06b58a47570759346cf852c9cedd89f844236184d013988ed5c85be0c9226ac2f3a367b090f1fa45d9af5b198a5e4acd50dc76659e60b4ab8183e59bf3d7375a894e04b5801321192785b76741fa6062fe07368ca9b501b3db457a40692720f97504d12f736206fe57be3bb6730462c63c896521c9a2b13df6181fd004bdf3d5725f823be52e3cdc7081dc3749af794d794d20ee18c8bcd7807691e5a8a6abdaac45fbd9f33cec45d8e9b2cf939c9e452e2b1643a9610b68b88f476b45cc2f5f7907a6718b6dd4f6d1b657ddba85bc616d1118ff126e2256ca31a8459087fcd311333cc57c07e63049ce7b0dc2417d115876d7334cfe0c9904c74a9c688dbc34673f21e09c7800de04e6084119f3e93f461c4f4c01d03d01aab14cd3dd01e2b80e0bf914bd881d812791781d015a9977a5ac8526f33d52c23f05e46e37fb39471f1335644fe2ee35770f987ba0b4d631ef2d16c462456d59e2c54213247c7e73c3118b83b752c38f400c572e85daec3694a0b23d04874da5664cee25fa35b9443b61cd4ab16c3742a52844e9529161cdf456ab0cda9204583dc4cf00ae5154cd3255e1b3aa84eacc1007f9752ec634c047dcb3a51070a5dea1a2f5c231b49764ef6d893c2811e5ca1cca21718f3043b11560ad51bb134cba30c2a23d819aa30781dd821eb16e7e3f7abaf0aa91effc3b854859e692b87f1711ae593ed40991d307ec69d38fa12dc2b2440cc702c27358f1e11ef1df0b28dde28c3490cd3319531ffb7360c5b6adbf5bc0c5a14e2e42a0a9bc4494c22fed178f761afefa5162430e878f35497e60d2bc1dd0f650c5a1ba4f2e3f2a4ccba8c540b35983b4c320c6f206a84196204db641aaa5142e8384558f6a34bb7979466a90cae40f4145b9a2db3e217fb1e47687badbe40ce6f68f39fcd1221c1357994278d2522d9681f8da64bedaa502817585f960811416d6e8622c3dc87f381d193a0e49904b366e41e7c35a5bd073e38549d23372f5f9c4145419b03a500d65ab568a8420187d9168ae7af9064c4b7b56a2f5554db3e96ca2f6167d214beb47938cab9454cb98d43ab1e2bdb2e9b248ebd9e622ec84d4c1372eb85fff941a6ebf08b71c2b768276acc9f43b82d45650a0708182c28a929c1b7c8cc43b28a179da1d401a677e1a6af3cdce9f37739e6629391c7920c6b22045dca1f6a9f1623e190ebdffaf04e89d561e2e6cf6002d966c92ce4e10c7359996cad9997367cece494326d57db30782dc6e75a0489b03ffe0063a78c6195959d232fdef7e873512bd8f9b2e901548354777b98de2ed0747b636b3bf9b4a979e948defd800a620699fc4c9239a790922ccd738033edc6280ce077e1ce0c58d03abab7804805f66d6cb8b848e4b7bddb4bbef7b564ef5e93e269b8fe4348f274e50e9360de36d8e2502cc4790769a571698415976dc18f47abe87cdb50fee0a4f7bcd36d4b75e7731f29f6524a1bad0b82c8df92110a6965c8e5182af49fd4a7878b17cf568f7ca2390ee400fd4431a681cc554a762bf681f409ca1312020121a1f69c70c703b373944ac383d27b002892fd7710073d9b36a7823ec989e43600e2c7d02aa4b786b60806eaf32fb222d8c89edf0ac1637265a1ade99ca69fc6a9056b58dee95edcb578d40b9b4415dfbd4b2a317cdf503beedd7e33e25b62b9ee6309d9637f0a9581ee9bd0251b7949803d625f721fd9592a38fdd9a61815fa530c72d028c307a3199ce4267c61a7bd64867134fe51818d2c4f635e4e9516774778e6a4d41eeda9fe9cfe4b3c3a46516163b2a4584d30cb14d8df97ca095fa0ffe46eb6d2a07a7ba90c0384e1055c7bdfc06d36c0063dc675bd5e74ae36e92e044b062060a1223888c14d9bb096b3726301eb1c96c9505ab27a39c1c751d5abc0c4b7d41ff64d70b484a92b64fbe55d3dcfe483e5964bf5a2e9f2da75fd614461a8d672fa64e38394dcfbd8186686dd95c69af0bed6c4e4a97daab8591c7ce11b1abefda096450692cdbbeb8558525e52c1691ebc4e0d6506befbcb1edc9dfca75a680f89bdc855a84bff6c3a8d166f8d17c41871c42d67adab3ec2ae03cc05416a2580883c09ab6a352e2edd3c9a41f0b2de244f5632d911ab10593590a3acb880f47846bcf2d0762061467cbcb07ec869bfa99d83e06f2a318c87268c72d93e90aa681e2c16f2413eb49893de8b99a2b5b50c2a1b674c4906c405b1b43f172fe62c953b7847c6ae2b4c9114e699aa918cbca5604ff647708cc13f8ee1fc90b6f0fbc5d6c4d5003fe0e80da625339cf85d7c062ffed056737e3049e2ad1b6ef940b9f4bc16639e5bfbfc9dc3ec20cf8dfdaf99f68b363c58f8de873cbbceac082557b9d30e9e78a45a196aff4384f8ef05b11bd452f6640ed3ea7ea21cff681561eae66eea4d57a82b134f13ceb18ac710536b4d1a44b04d949baaa1f4f0ca3cf40b04d0aebd71caa19a4d5c3436516a4ce7602a864194858e39ebd081d0eb8809c0c03a24c431f5b189e640905e52b78e91cd511b3f3ee66cb2f27fd009330bbb3df111d637e5950de041217b1c5e8522178e73bbfa20425b68068df8c7012f9a68ab62820982ed87d44dc92456c79e1f59c8ab1b04c34efdced29232700a176724061ac7ea408dbc41694cc81f5a06b784ba7a5fb5fdf4eb942e1c2fd1cdba1013c44fbf13aaa54a758acfdb867dd1c859e788ab0411599e49c39f8d8566a606f6ccd2106b7cc82a9e318d2cd82fde01a00494c8ca304cf754b5a2da2a22f69e43666f597355d8361424bd7056a74800ceaf57051312a044fe50700cfd1286351d41975504021920620f81d9a007b570fa2543acbb1f83afeccdf7e9c3a89214cbe947980d34b3fe45e93f77f0946616e9233028656c354ad880ba884d0e5d90b509e53391cf2c671eb046b5cc3ba53d9bfe007829276ec5cf136d7ef72d431dffaaf961d0723e8f4a712c756cb13aa324786397ffe18b4f7075d3e1f8a2fb2b0ce99ab2836dd41ce648b04ed9e6772a63f410b0050384588ba12a60163de0b62a2821d392596a00d7d880b4253c9dd0509b3d1dd068e39bd02e223e48e4c409245c88d1b0d4b96e14fe5bd836974ff7c1f2e15c13628f0a97279cd11326726139f7843ff433c3c4390c845367008effc86976e7ae73664f1fd52b1d1e6c57d44b16a5997a8753ef60531b7863975b8ac9c22ed30c0b6ebe6005dd2dcc64837168d6f8c3e4034b5555d6d66793750f757b49dc2180dac0a0ab678f2b1b3e1ae7bd9b5e1257fde4ecfe40f27462e40393048d102dc6e2ce0a47ae5495c3134da875269073ccdd042e669c8e4d6dd1d963f60ee08134509f599912c2db0b1b5825b171cc04324dc51f697348e6fe0fc510dbcf44ee428705a49717d998aa2778ba1a7097b06e91a25ca72ddd73816fc1d1c63635ab1aa1c210f0c0d9a9354a3d8efa981d8ca7bf45836b4e2ea74a3f35fb528cdfc7143b7c61dc381439f851c61bbc51ddaa388c8a3c01b80ccc6a97e1e2f25e0443d07625d01b734de6662acf5c8e80fc1182d103616e155334d24c8b280c8a6b0234d8df4234d4790f4506029b67445f7aac7f9fe555e26e8e9500f82c1af4791d8c9361c74efc6436e77282470b54799c4e0872368312fc364cea4011802c486cee720b61246a414660857c2f1d8f0114b1f8f3ed29c61512b42362840e37d60ff658f273d06cf3bb6028ad04f8fe65c3903b4892ca79fe39627aed54996e5dde5ab8bf52da0673b31b81fd7cd5838d4ae27499bb1ddbb7988e4f0db49cf552ca8d54e880f531b491d2285b6cb3e4c1fa62632a02389c939229503b2028d0d2e1530df11293faa69881db22ce27fefb1fa2f3aae04ac78f12e6cc140530de1070e1110210e0b0712a930c952171daa12cedc124216d9dafa2052632d1cf817d549ee0e8852548d789acf86ecbb93e44a02dce2574750966c5ad93cd058f517525caa112497f446833a6a6f6edca61678a0c1b49d16912e90895f6c72c25512346a628e39409b154d771058595b9ded0938228a27e8d7abca236648d4835a8a9ba7ba7c205339fd550a02c59e415da89d1443720d6e4c2367607381d6bdce9f16030cfb8fffafb2daf107611da9b23416b77e9e5b2e98288038b645aa0f0b7d116364aff8ddaa93f36d4521815cc78fa5b618f0116df2ee44559f18381304b8ed5789a88a0dad5f609b08cd75f53158c4a3cd4e75ffa03ed9ae625901523d12b2847c76303cad47b315896acd661627cba6a529c17ae876e3587f2592560e245c13e585be3393f785b98d16b33cfccb230c50779b757733ba03cc36c737f13e453a0356be066df87c096840ff69b48593a75779fe81aa1de0458279c9cf1f0ab78f58072180cf4199839b6388a9037ab8a536d110fd41d2f6098f2c8c527c786af6a54874f48cb285bcecbe4229d830cf89ea781ae0a26a2c04742e4d2863290b990dba6f0d25699e0ab9694c0102c6170834c1ff3a481ac5f3d52d56eb57e29455aed6e8b85612522fc17f94751aecf7584da0db2515c8394610138360cab4b6de06a27802e0ba30d6ffa684864579001604c222241ebbafe50b880f79f0bf9d74fa05c43ac1966f61a6859688e3cf042fc853627d48549050309197b6dc1cce3f59b8e14f2f13f9a584279b41b63d63e1aa2f27e08c8c83a8c6054e01616c7bc73b0fb829999b5e69a75075265e40fe994b28d1354d6f497cad811e895faefe99ae9a7a852b44af0756b8630e383cf39a1fed3b76028f8d10126bba418eb10cef0fd2569573ab529ba5b43a953c51f2d63fe010d39447bceca3dc7b8fad7545f0d7e3e8b165edc00ed559bb191c4c0956e6b01130629fccee06f8f024980f342f097cf7bd67d460d09d3bd01632a87c1832a93c83220b462a8f1b1a95fb31a8e703940005af25a17b6d0789c8d431beaafb6aa0e4ced7c138ac59bb2845214f5154491abb9d7ef0e4549e04d523a1f224a81e09953e904e6f69f44132ac037b35905604e9ae26899c1dffb882bbf26adfbe6b9e8025b50b696ca1d7863162b35af6ade222d6930464f586f10313bd227365685210883d698313a78c8037c15340a0a9f04e5ef8b0295e2b6b7ed4eb9de70658dfb5e1ae8af4408d7093387a9450882e2848a8fb723174fa5693ddfa0fa6fbc8e1e99aa870168f87700b5f141883608fadc98fe727bcd2c153316b24ebcb1c110007f7f7eac6ccbc074c21ca0a0f06e0844697165a708d97cec5e5a4dd101cc88874205c2ec4a6119538752fec4e135033df07e21bd2283df971f813128866f35352463ee753ae07751849bfb281dbddf3c30d5dbe361a09af81b3553fd77599cb8c2b25eac610481403e1743f6cca5acc87e7dfb309620a0b11fa70eaa0e8336ace087b90a2dd3c13ab795c98158cc6455c818ebc9950c84198c14c372fd9f77930a2b5550ef901c1292cbc175b86268712635489ed8becc47f74826696e027c3cf8e18946724f0507995354a79a64f60fb04293c6e4da3dd0902dbdd5e581ead190e401c4b2e0dc5b1b34b953cb007af1d75960bb2eac16cd8531cfb77700f170227f74931568f379d7f6c636e9067d8b5fb76c10dbdd4ccd6596243dfe3210ee6f457984148146a93b690189c90afb4f668932e96d7f15e95ea50c8d3283ad7372c5e2f3430f5aa66a48a1d4e5f4921d52a3703043115c8a7df4484e60ab5a1f6e10859cdd0e80705ee3d7db7200897531a56967a20a8cdc83ecc96e01ce0b995997d35b845c943186f9e466d43351e6d5aabca5082cbf1be1a28fdf375f2d2929e2e621ab58c0c2048120ab59406322a62f020322743fe79d543b2f248aa1e9295c701e92252e584e11f9fea4eac1d92955742fd94acbd93eab744e591b816b64e1b67e0739e8ae5460ed00cf934020d0727e12da2abd9fdfe99b8ef9238c690661da20037874639561b67555bacca8eed3966cd43d50f31805d9af3787a983facfb3e30142463f62855b506f1404314de1649cf82632bba8a4332072e098e4aa5f52641144ca8cec01ebbc7e038c2b1f3e814df67c3cabebf23c0687642f0dd48a62f3efd7f71f2bd55ff908e060136dc13e39f5688df52f2b9035eb07e7e9e09f9955aeacc0a0926df6b4da9d608e17b2ac28b5dd86ca6eb7d28cd286e39308bbce225eb580761e9cf98d9336b7ac84e1e07a35776cb34cdcd10fb70d2dde43bedf22a3927e7f28bfdc27d2798fcf99cb3ff8199a702f67b403f21e8b317d253cf17c1ed44ae1ca178470293d28a13d20f562c543317657fcb8d1bc8d58568e6ce32ba45a79844ef56b9ca06bf160abe8f84b59d2e8e0ced0a2accea254aa30ee6eb02d7df64fea548085121b3404805c794d20a0819ff2e5a528b4e8d4a825e15e808e37e6c4f38bdf5af33ba6456cabaa0bbc26b102f50a18b278aa6b3b7bd2e519b2ad676624dcc801375ddc485fc34c65b19f6faf72e6990d7c1ae1a123f37a42703d1905fa31dc50eff9c66c2612e4d5119ae543cc428a2aa9e04b217c54e76a1a83dac24ec45e0e3877053ac67a3d036e457919b7dc2b07a85906726f1399b61a5c7686cda98d2925128b646ee0df5305d7b0f0a987cc386dc8d1c90fc725a28158ac0cfaec78cbbc306f211e80052f2ace6ad22f17c1a98815ca512cb8bad76fd24204525c44daa3d8887f7b549138d96afea2a84fcfdbb5fab91b18dbf60fd5e06502fbac6cfa1017a395d8aca4bf8d9aab0fe946ce0c4fa015587a0c038a6e8335bda8e41fa4a0f1352cfeb1118520601c343e325d54e3ddcb0b782e9328c51a470501d3a6d1b2aa4627bb93515ac804f928d54415112ab940f8d236a6e17f87add76a1c78af44249af08cd7fd4660874d489a9085e411adbf2af53a5935ade04120a57156d2c016a3058f7c8913e781bab2077cda973d58d86767f6aa2cbc153d45f190dcc77cabd144d9389949e718386cebece7dbfebc7b5ed9ce4cbcd0e0f49268dede6dfdd0525a6f497d18dd9d16e955dd8c8f25dd9b7bcf7fa55727040fcfcc948dd0b5c825bd5a4a646148cddd6e3590cc2312a7491c2a21b6409020cde02ca308e745a300ed24a07ebb8e579c28489081280680190007481478cbfd7eece65a225a377d670845a6ffce182bb56c61f625d0c3675dc18e9ec8520e44be9429129c67c02305e367e301c6d9b7235bb405c06a3b211b2f7de52ca2d659232c80688076a079f77deb9dcd579c8e5e0b0cda1f4b12f9efb3c397c6518df539f1cd442ed1d51702f6f6b330f8ad7eb95c30f3b0a6c79c0cf5dd6662f771cec6b19d59295215696dee3a1d32308e737f858a39242b5e41bf0b146c5f4f3c398a78cb2051f250be65f1029860a6f3dbe9cbf55193d945946758160ad4717b6d6fac7e5d016a1c841fdf2a159d49363d3c37e7398e2bd85eef5ceaf1cf3b2e73c1f8ff780f7055ef7fcbe5e39bcd9954397bf36c8816de8ca30420893903acf3ff732e761c7f944926ea5db9abf0a7cbfcdccd3960791ffdef32a4e54b0be2f8e59ebd67a6c1cb9f3a3f95ed7b593e76d0eeba2a1ebf9b779db90b797ad734dddd44d349aa536454a6dca8ea6d5a428c597ebb68e6ef28a7c8a629ce5acdc800fb8a28536afe08b125ab655d9fa0f3ed6aad04c68d9e6b1493a80c7677751ac73cf6e1bca06c32f63da75b7dbb653735edddac601b5a39f1a47ebb096b36dbd6e1d3a5e7ad84f53326513bce050264b3164c1ed27187b59fd09baccdac6617b07676db70ecb753b7d3e65b45b0f7b9c074586f13dce4835ecc930be976eb72ef2f1ce41c719c627996ce76e6a1cb2832abdc3ef43a3be31d77dc9a6d0e6bd5e3c1e7e3d2f8ee3c1e1f71f8773f7557781f6d6aa40bdf75c3bdd6ef29c93f7762e6f97bb4976d051715d375d707b6efb0fc00639a86e86f149396271a5a47c75ee054a7775d54b4849784165f5d53b157c37c9669191cb380fa514530e8ebe07fa80462d64348b249216aabed1befa97b96e72d5cb79f8317de5328cef3dfcb27b5f97617c7fb97bbbe9da6e8a5740346a497879eb75eb1c56effc6d4560ea48d5a9ec8a50dde6f0b9cfd4abcbeab1e62a6b4fb48a286224284808223fbdab53c7a091ca28186a8abd2af261b5575a76cb5e3139fdd384e2820fab53fd588332c38715cbc787d5c95e7dd1437b85dbc309f582c2e1c3ea64afa4181c73e8eda1bd82e2f4617562e1bb8f3527433eac4e54b532490748aaea425421af8cc15b51c5e6f34e0af243493be2437b459347b8b030a57150ddd32c8a3328221d929fce697153485a28ec9cbe63ea94b82d578e80132b0e2b024ea8222d024ea68cba1c0127b4168a1f0e09f9197250cf21f9c93589454f8b2aa2e32851789c424a3b8a1cb453ab2e3221d2aba8223ab784f31139984ec5c422ee47149a6ee427a545a5f929cde0a9a71c54fdaeee505ae460babd9a45b449149a311b875af969af7e72d39ec1e177a50587947685456953583ffd3575c3d8748906872f1ea79f2ec1e0f0a504f5d35f4ab3e8839a42d3c357191c695094fe839afe4d7d50318746214706fb4f246fada4032694ec40fa74db25aa983d2207d2e75475fa58148a45d2b98f1e723fbd48a9c8c1743016492751687a9639e5a787423f69d20c8e446c631a5ef499a70b049ac3a9c21625eb953ee696b716454b22f98e0e6bd9adf134532c5344844c3d7d9c8a616ae96192cd46b920d7397029aaa378f9589bcafa10e8b729da7b172d4559b7e1b3a8ea9b03c9bae83a0c04dcb2cde705a3aa471750cbb69a6330203cbf2e18c7beb3db4b8c5550e0603d14ab8fee7dac4149624eee630d4a9376f9c63f3a67cf560287dfcfd887372f5e6cdaa4554b41b2343d03556c32a934e2c61ed99e8c7992e543599317bbe79c73b6c7c8810e1c6b4fa4bee31bf144c9cffce49d60f4a1d123c958e72c12b509713d0087b63c6be86a4f76f8667d42c38913653ca51e4ea59e3afec5b1e355b87cbae8adee727d9ff4e6fc730e8c9183f861d2dfef90644681fceb9f7bdb75ef869e5377b9745540c5bb72d8dd5a6d88d79ff4d9f951b7fce1726dc953bf2eef4450f19d974f50115ebfdeb5cb5d3994ef859dcbb8d73dd0c250f15d3e41c577dee5143a97713fce7bafc7dfd224f1704494355592bca1b38308962d81d413369a2021c78615123d6ebd46302b273ba4806c01c2c9d53d62554322c77b1f6b4830fd68b2f5f7a314d3c75a6debc33855ab49792faac0fd924a16a7bac9d5f7ff70a33ef4e0c614d53dfa3f499081181673d5cd0a8e35dad387d13a0ae487f3ab87518a8476c1a289428ca987f5c808ec2d1bc99734a6a7de2f8788c0d573adb5e690e6a3bc6208ec5f678d2a5288b447c19dfd15ece95b8e112990c488ec207e65416229db26144d42cda2796534248bb57739c4f7e7d52c9246378746433299d49a421e0b63795edd4f9ab54715f1a774a9e42dbd9fbe48852899e793d3149a4e457d52a56f59a482549a1dd9ff69974a32ecd78c0442e718f1ceb7a3c0b2f0ed3287331c6771b6e5a9349b4fbcf4f8c4b78b268a40932b51361555d89f1168a2252af1d329f844959f6a969e9072678638324ccda6c76691fb2c9a6e348be895fd12c49220ba05319b8e6081099c8fb52557af808fb525449ece4b2e069452dab29bd2eeeefec046c14863dc24955a8aa2fde1af657ccd73dbb6ad5aa130beef6a05c6a7850449453231b53cd3016a86003384890c3590986d1109376bda044123898d395c2e9937195426d28a4c153260be9f234cd0a066d09252226985332e64ada1924413a52555977b5559e7eb246368b001c8991be65cd9f21b1935bfd5ca3061e08299a85a1026685ca9ea16248f2a59746c29a2cc122fd0a203092c1d2c4079691297d0c84899753c57b7d52549448ca1c1838d9d266be4c82cb533690410b7da685911433b2255a332a92f541cb529c90526a62840f0b055831b2c5c6678cb45079e0bf4705a81891b534a5a6001030a1a43c4872986706172c5e99157d67c56717a1230e505cb87182542d05000871ea0a0d192c1099a0c3ed6c6ec70d1f0f83052658db1618c0b73c4c4f1d9cae09e336c70e7658d182c1f7e9b1bfc7dac8981f2db19ecfa5813a324d2644130fcc5fcfb60403d7c184425c3961e283c3d4f0eb00ac2aa49a559f1f09232f1c79a18a6da250a13a74c8f1b6764f0c1e3a8e1c1479221556a56ac9a3c2b1b3aaaaa389f550d2f89088f20c21891c40f5a34e448034707243b5a687203a790c560182808e398a3f858bb72e243d9d554ac64b0f7b176b5c6e763edcaeab736567ec987b219d2603b84063960a9b97a7a81637e55a34e0d2367ba38fa604061dc7c1844f582b5d65a7b3fd6c22cd92186b9b89beb8115a6ca86a1622d8771ccc348d12631dea837e8e5a11eb918e1c7142a68a8a6f000c4c805244186d8f8a2654956d982066f891364f4b5c250ed932d5be6162e5f6bb5d56fcdb07b84630ee743d9e684ab3dee8b12c01081c1bc25bc8881e90128d65d303c3e30317cdc8b98cbbea8f9c2e5c3a1acd9023c21f648d23797b2a0d8774c523bbbcabdb7e85a263b0cf02203b0f7e6040efddd839e3e2c06e4d4634e670e710f05946cb52c86f141c47439a5fcbe65b75677c32805617805ff5d5813c96d3a05220837f69bdac3cc17aa2f52aa936cf2e589f7b10626cd0f6badb596041660b68091f2a4cd961a0e59553524d1c42c06b1e3852c25a8544145a1d203135317c7ae68779ac8014e13534d61662780b28a22e3c444090eb338a5ee20c42980e40a169a2ba83540a408e009182cb5364c3ed4f08205095f9cb4e3f6f285c90a4a54f9f0c548e52189b75538f07cf9f1f563ed8b0e4a606ffdd3cb125db8c41cceb96591147fac79a14106d30fe790a74bd0e93138f6b1e6458639a489a24f1d54ac1efc58a362a40b2dca66d10a29234fc6b553cb38df5c20789972b20dee055718b5ec681383c30d7e7a0883c5809c5aeb799e977f3e47f27cf3cff3cd37af9ef40d86dff773f4bbef4c7a0e84f1fda5f66aa3e1f178acb5e63008cf175b021fcda28f56812413a55e638ea5470cb268215a41162e9ae8f3a329b471be39c771214424975b7fb9dcbacbfaf5a4af60f8c978ef0586f4ab97f41e08e3fb2e7753a5b765bd91f14ca8538b915f22ebe307a48cf16a46df5c82710326b44c76c0eb075a2665f519427c0946ba9502355a574b8c31e2056aa2b44082aa890692243c98f8a2c60c132d7068708970a88c24c16646ad8d992929b52d4b6a5aa46ce5e1052cf6802a677078a2480e62de48284e6ac84267c90d4d72aeccbac2300474eb0edd318b101d33cabce043182d492ee870e3899a9420ec38c927562508d30507304b62980384c60e67dabc200a0f3428316b27df5db87cd7ba507d98629be279979b50b3c8cb93d6658e46a3d19a5669b45a6b5ba7b5d62cc3fee652489ca2b4ad3722649d88021c676c5812c7c7114f52556330c8c0071674989186879d287566dc52c576d4400b48c6e418c3a40584ac5551817180ce561c1db29cd0405355b5e42619d1c3861c3a6e50e304088944cd0a0d9dc00a3568d510e5e5070b5136a1b42d526657272bb52aa9aec220b910e2739952e77cf3a49f60f8fd5bbf7326bd05617c5f7337d1242be51b2f068531d63169a9941fe05e08513ae7750fa439fcbeeb5e0537907a1eca460d7ad0b2a0ccd9ed4a05146cf8ac9b64033e30cbb96d5731ce8a05c7cdc514ea4fba4098c0abc73d6bafbdf6da6b3bc7d67a9ee7d7e787d67b5e1e7a5946bf0d010985f7f0b8b8cef33ccfc7f3382fc7988f247d3c8779744d403accc7bbece3a16472894187410e33b818c45c42c566c7e3a1063e1a741ae4300314ee7331f01c96b18f4b289fd949a81ebfee61b0070c795080f98291787cfb50a2b8cee32834d1e538977d59ef1c05c8e3af574f0e795ceae09c73178e267a3d3591851232040acb971f350f2839b7a0cb8fa68be3b058bd6cfa58bb32f534ce0d4c0ae92b5880df0d83433c82f52f5886f2439b659e374f8779d0742a3e42b9e4a717c559ac51d941145d5c6e1cb283cfd222a9346d67ddf36e560ab9eb2eeeb43984f1652079a064d1f108f858c382e56d9bb7799b7b9e27a37fb3dbe66deeb9728cf9eeb9e70243fcb3554801c6a1c7837398f498beebe5af7c345d9ecbe87fe5163cd2cb3fec72650f4028995cf6a0709943c904e3f1c930bedf7c7c728882a7e7e59ff3f42b5f17d84db2039cc3b746ae20b1b6bab557845c51b2a2f50cf858b3b2c4e62fe28873fe173dfeacf1e3e66a91f4f7f30886f8e39c6f5deee8271d4e2f73187dcae8b79efdac7fd363cc58ad7fdf1752d6b686bc74180ae0478f32dbdaae09f4081dc8e0b53178524a29e907587a942de5105d93906871c1111c50d064c96224092368c801ca972245ea94a96a3e49878b47e7e0d003193bdc20d2650718969e8ad0917364469494123b74e258a171b4d0baf55425a9489627556018620955d68cd2d1aab989f2c1091c6674ced338429ec61962001c5b4a324e549222aeacf0d4c450973a595b766c61d1414e2dce53cd09a86d0e51e304c4ce8d267480c08991a634426a41b899cd27ea1cbaf5a1d1771c3b71e2dc89e3c48741dfe6d6a163c30d585694186115c3cc2ac9a231078725a4eec869938608501a291bdc3003921aacb0898a0232b34c6c5953832908141bd860bd19401a278fb4a22e1fa9d265aa094b0d266e007121e384a6a349cd4a16d612017001c0bd1068c2928408a72038c89026872b19b26c517aaab106cd9c8cc58300f7aa79345568cebcb5f64a40478e193b9ef8402b33b33ca2c4f840c2a38922669609cdc5119c30584d5b5a4e4a4a5bc2848971438e25a81972e870270d9a1e1aa04932008985c6061a19bee259add68d9920ae962881227263568598e2a2868927366820c0c71a1c5a063ec0b9c1e53421a6c7064a7ac03ed69a00f283090b185050134e759bb33722ded4318203f0b1f686cc0f54802471c11b1f41308a8fb53732fcc0fe0608fc5345046b401b02e78f35267288c203f8586342c9071600997a0463f0b1a645e56b11fcf3b1a65504cfac35c30060186bd1f05982dda401004765c20b037cacb9917253e4169954e226b2dbb679489ddaea75db6cddb68c340537534d6264a4a4882d393554d1a8e283942a2f2928253bdad4d87a42d3a505323e9e7a4cbd816116add39c24549ec8e1a26516cf70c0ba5cfdd5cfdafb29b5bfe8addecb839a08a3e871f9b83e978bba46f8dce59d0b84cf8fdafbc08ba2a7f174390fe6015fe0e71ae1036193ae16ae8cbf7cefad1cf8591be5f6b946d85c2db0122f06d1d0da9652de6ddb3629a51ca2367f9b87f87ba3be4daffa51cf6dfb9f9aa3d4768b981e67a5c2217ddc9bdf5844fd7ef829cf23512ff84e21e92b5e6e2bb667d1b2fc23c28f08dbfc1429d0973f2d4410c0d3a407c0277dd2e32983161893ebb09f2720dcd46063ed99a9b7f663d2a68d8f197eb861cd1120386099592c31542fc051e4852533679682ce08f11f3428e1c2548e21b442a08415952250e40861459631d32503335a3026f74a326fcd10796bcd48bdcd6066ed7522440a0c6d8c9a216166f6892c5a4f349961ca8f1b33cb8538001f6b6db27c28a36283a3cab879d3c40910a559456227ce1258a03c19f932ab63cce4e031d3e3c5a49a59fa5abffa93c48736387c88ab10f8f5b1d6e6056c87e7a575654d1dc2460d1b27d6726cb41841f565ad6143c5ca2555081b27b22018fe62fe7d302036389a782ea34feae19c33ca50d688014052df7a040f80ef917a3b6d1e7816598f338f6ec11b244ea1d8c455b0f410cfa29ec5d9528ccf28aa35c3648eb0364a3366cce92cccd94ea9744f823f2df28ff4e8fdf3bdf8d3e2e3ec16d4bbf1d6ae11da29969b942fb8d7ad5b7be55f30465968bd8eb0828a647d7ac4d42582f5d9df3284c984c77aa46d628ba419dd44234cdf7c6b283db4632d596b6a106c98d82c2dc96253a32aab4e567593c4d40211294e346c19c3448ae9befa8ea18a16250454112bbcc92233c6099ba4168cf8a881490c4f202165565bc80266cc55cd4a6956c394e9c155e648a4c2a40c8f8f0c9314b2180c030565611cf31a9b1e6d846461bdc73327e721a534fab560b439869246106ae53ed0b27a5bf0b7037403b2034ae9a594de6db3d5ef167fa373f3e1c5a0a8cd3750d2af03a3ac6f600a225011e8b7e432d2568254ea321d214a22f193fe7ed5650253540ca3479231ffbaec93669d6f22701e43deb1de814b9ddb888a61f432e602c2cdabb539942d927e73eb6ab1b96b049fb7ee711398775c950aa65dc7b92a95ef6bdbdd777bddfc7d5b948c582a954a65d2f8b8054f7befb59ce5e8a552f611dc7c71d123076b19e7e1c775b63ae740b2769d949dbd78296abbd797a2aadbf0a8cd97a2be39bd7d29eac513fb3cc4aefccab8651cd77d9dd749ef3a18e75fe75cc76524a733a54f59b9e0f0fb62d56bcd41da62cbb55bf9f2e9ed0fbcbf7cdfd663d0a43486bc8363d5ea56ce2fc88129c8b73648e7477dafad152f4535ac3f685f8a9a673af0f607d12748bdaf5c7a7f3efe44fff027fe440e96f8d92297498f56b48c862b0d87b168e4410ad8a4d1ba30a185a65f61ac9896c72d9912d3cd68707fd35990e0cd96d72dc881619442f463fdc7e614e45fbff26f0ed2f974172f9a287e97295e8aaad984964db7e1b30df4075d0966707b2725c5d78efbfadecbf906c668c15f8f21ffd6fa295a567da865618a5bab7098e26777de6cefce416677384fbc14c5936df8ecf6079bbbf052d417fabb7c29cae29b6fa62da3d5635e0e5d95fe85fde5328d42edd7a5eb125da27829ad6fd64c7daca931f2e18a9f6a96e2d68531fc759bd7aece69819ef9149a7ed42c5a36bd0b0e57fcf415472c5c90d0449c07a620bfebba1ce4f3a3e65cf7cb8de3140a7f6cbe8fff3302d7fc81743a6992acad34709ad26edaed84d3cb58ba3491e1862e4eb662102288262870dce082aa1c8efc58f3021c047c70039d26f207d88540911a5e30240b9521d01059018ac78c972cad284d3a722c1980dc81884ddcfa78e82e6ae960860604b84d8d6c21d2897a394b3c61f9610d171f661b1036c2e0211d5340a6c49902464a3aa56893849472239190414426e2956421b2895561c06c3ffcb62d99f96ddbec7010c51891548228dd71d2e4456a85a57ec92ab14c8e22e4110ce29825240c4a73b8381f704f1cb50c090642700d3d37be1a2b6cb9ded435160c1a6ac154610b468ac6d30f523498a466c4d0515234a8acfdd2f3518ac611eff3518ac610291a3c68953315a2dab9096240ceac7b5f13c5ac826581f53b254bb07e398f4cd6936654ca983f3352109b55c079a43d975960ad47af21efccae9c596fb0849e59bf200b7e4ab07edd7a9c5d3f9a974905d19366d1f522faac8271d65abc582f9b9432c618638c31ca2895e6112faac09fdf56925b5bf59b61c4ad076b75cb054bfffc8671ebafb5825d1785965da74df465595dc2f93e216e3dcd32eccf566a2c5e75cfebbaaeeb3aee721ebdd1db6ed1e736d6d6729bdd82c321f75ad6f9cdd43f30d6425de75be6c030e8669a6353175c234a29a5d4034f30f28c6240a07a90ac4b31348b5ece83ab8bb6ec7af51e0cc629f40287a6d07517f881deb2ebe58e825d0e6ad9a5295a96ede63edf783022d67f118b524ae90911eb91a24c46ac3062a188d5e86b38f42e7bd51ac3ebb3e8c5146ac730f731f23e50fe0b4abdbf1ec1d728c01839e8c1e097e5a9b763ea5efe76b9b91caf5fdf6ca6e084490bf57dd52be050e2081b4a3ee188ef620ac9a1294493912633725b85c3a15f21e9b4ec66b9d5b2ad29d4ae44d54cdf1e46abc9f4f95c9a4a956a16c92b39d550b3481299134754e1f2a6329219b90c4371ee2234fabbe5cfaf3e97ed8243d8a3c03e12fd2c171c6b227bad7b55e9afdb2bd8e561ef68a726fabc239cbfde69fd754e2bd2e1da664af327af52199bc58314414073d61b569260f3d1c647b754587af87d6dad8d31c6186ddb5a372bac6aad8d31c6186194d032eb451b638cb1849659135eb4cce65086955a2d0b53989bac5a5bd151984528a81055701d8c268a52de2e8a8742cb648c8e020a8fde812a440e248c113411ee5eb1e9f2e8301724bc68a25904dbf02c1aea231627183d12f61eef401ef77a401fefbaaeebba0b9e80741d85773ea18b47e1477d1d45e7d92787f77b8cbe730ca307c479042268590afcb5ac65d2ad160cd4dd8b96491724b4ec035b1538d6ce39e71cba54d2915b34b840b27e04c3e89d84a862e3dc8bae7b3beb1c18de6ce595cdd24bcbac6419ab78f552867da925b3b05a26bd2993ad61212caf95c21940c23d1ed9dd9d638c20440e940d19d5eeee39a917713816596f8fc5a2eadd208e11d1d94d6753ba51bab5cfdcdd3489f656831245a793b62cc6295609ab4411a91938ee08c193666f8a9582eb9472a37ed453ca19e76bfa51d30aa6203ffca13ff8b729b3a494e87cacddc1ba8384ca1d2149d82342709335e6c9932a735e40022a3560e960854895960eb28118efd8c043800662074eb52387003e638e1c714262a68b0b4947fc20e2c61b1f86a0226387cb159e7746253ae7a4d5d6a9c2b304aa17d55fd0f981a7694740f3cea217f2696dd621f273ce396f1d286b075fd937d418a5815a5aacce0b1c2dd2be351f0e51511f74b4583a5e788062b1d8d18c72fb071d264b3766f5804388224c629ec831a33a80694109911b3240a1f303135326bb48f6e822ebd4d284241d1f1dcdb015b21438e82c7d28c341b539c5776e73b4e4cca17ebb54a9038559b40f26de942db221d95844da512c0c54e703a7c3da26db16a376663cb5f302dda86d22956a74e2d441f3e1d07d922144d9b2e76773003cd04fa7377fd263d473104e8697a23adbf019a51e29ac65d4ed0b38fc9ed2dee606214859e7005dd7755d97c283a1157098e2a7a718f2c0688501703b105e0bf941783a0673867d4136dde4b66db4e60260b9e5653006511923ad31ba6d75dbf0177dde7bb3e3f66a79c099dee8438e1326c0fdb12607ce4b8f2e4f1281bf0e86e2d7b2b62f7c5ee3b66d3988f4a3a6543201816f4ca73705e3cbd11104caf6364a51c329649c41ffb3fd6c3905d93f7310e9937614eb82c56171106000387aac9e008082eefdf12000ddb118004a8839e681a7018ed4cb004f8fcd201860295b205b8507c391d64a612dabb4ba6dc2d53fecb01810a53407b17ed4d3661fbcb9cb3b9e058251d81fb807fb782de4e31e8f0747eac52039653ed6e464f9f0fb4d8e8f87c558c0b0185095b35630d6e4e8f8e8ea175e8abade79f5eb5ea58a44d4af7cec9ace813fd3e56fdf2efcf2e48797a264941e89ecd6527ab13eec0d7ba32667e9636d2bba071f6b5b457c7489503f86878f3a06c523afc34b51937a87491f3d82de362730ddd2ba4d6befed4faab26ff062bc3d1428e269cbc8cbb74b524a3b1f99e3a8442d36563dea943a220140100063150000280c0a0683429148288f056a1f14000b7db2446240154ac3912c864114c4400c42883104004280310618850c628a0d0f75c9c09906c47284721c42b350e72a44365877789890aa819a0c79a5045e55da2b11b05ad65762e88ae9f7fbba74608b19501fcb12c3a0ab402c11f055ef91957886480bd9e14fe97a2594f8aaecfaec2f21848e3deb33da92c37ecaee4a077d9bfbbe4fffd04b0dfe59d9f9fbfa29ad54e087d97de9217ceb7ebffc4b04e9943b4b0d4b6f0ef6a7d3f7e71774bfccf2276044e6bc9075cfb3296a5e99754541a21245f8d4dd973ccea7ddfbfbd747f3fbb72fadbe7ffd69f5f32f35041daaa37e1afb7ffe747ef2971cfef446001e00c58ce0699660262fd3d891eaae1128556c49d5d99f7edf9f5f9a5ffea505a2b3273f747f5f3fd24b0bf2d712ef6c0f550c7cf70ade12b2c43acb65a79283d15d0ffad0f9fbfc684a7c28badf37e0c37b63c7e2ced43bbf2ffd95ce173431109ba13bc2b293423708599119812d75cf60dbbf3d03eb57805c192f03b64180e601682e1da920fab061d36ce24369354bb536831d653884d4288bab8547fef5052a2a73678533c27154a3545c1725bff641860ec7518d12715d7864e15f69a2347bd48cb94d040db4354ff1c98a7a5df53d1dcbb82277881908e8fd81a8b322168355358393b6ca491c60bc25603a7fdd18600a27efddb43091e6eb2615659b3ad569d4a51e42f70461e236a56d1108297e40c612096455f8d566f859736e8f04ab88a7fc22205223c3561ce20b0e0241ed1c3a34c54542ec49e7e2db77fc06297472737c3e13bab661816f42d4dc4cb53a98d5dca3d2015704686762c462f3d969f5b6b2f537e0bbc223a2e0ced891ad7c281d83a0097022fd59d68d086f60944728ab91363123377156287fa9a8ba3a568845c83394a802b20e4e9c06515a81d8afb55fb40ff3dea065d3a850209dfc9b4d55e6754dc75b7b53ea1bd36bb124da6631a5c5e084efc7ecbe46cf3967e867c5189f3d6a33a91b52093ab4a3efe8a200934d5df51413b5ecce751bd324190e54e05dc1cad7e9da92797c7283c053f5230b3f24ff987fc3d7beb3ab7e977f377807a9fd662fc08c19603412d5a9d54f9f02f413b3be28b9f56dec0c1762fa40a1f6acb08473a80febd27e8bc55e86d6089ffc80b84219dc17a52ed99e1fc18681e4d015a5cdef36ca01223448cf5712306cd83a8dee5ddb10e1e95dcac6451adf2e470a0ce2deb6b323301a75b3b5204ed9769d75078ef4e8e43928595bfbef5a4bdf185deb9a65d63354774ee0e8c0ccf1b82e400e5ccc81ca241174cbfa79ac35e0fe2ebd5466f4ebe39efb02c3a77d24251467a70322870acf5b00b63a12c7ce12b025ac4ef5d309362ff65db9bf9a7a9deeed71f7b7a4a919736459d88e6a501ba6bd02ca919da875b381c18e27053a381d719af63932329eef2a5d329a53c0e98b561d9c1ac9de5f737a3a6924e26656498fe2dcfd14e4563256b6457482c88b00ad0bda75617e4b453ba41d7f9d913c57200a476344605492f84b7b9a33d1f4ffa83509dd496089f885c67743019c1b155cdd413228ab81a8af688006f1a71d225979727fcb425138c170a9f5ba1b01a6590dd291bdbb013253d4bcaa829cd2c2475096c8555a35f41c8bae75f49286508aa68ebd3036fe2bbd6fb5e81199ae47f4eebc2f4c2c1c979bd0d20d1c6d961888cbf1e5d138d607d19d1950f3fecada21548dde65ad542d3598ba73de3ba0ccf45aa36c7f136138b903471397b24f09e81147c290ffc217536a0884cb411693777864cc26a3e5ce75be8e51d19acd844c319c293660df2a4e0f6313f67b6aabc460d99dd5b4cbfc185a1c02bb69d2c7ec6bc16f749f4a9b0e6dd1b5382878699da733f161f5650309a34dad5326a3934933881b23f93e65274f1da76324a25a07fbc98eafed3aee4459923a8a1b7769b6042a2ddb65a73f7146cf439c23742a8cad445036dc007de13c85b2e2fe95ccd5f108701e314765f8e8950d3bc205cdaaada0f71933a2da07a30c48e5fbca9fb24c4579dd315f0edc5c8e39cbb7615b1e03cd2863eb7b16d2abea13690e7e1de8bb11fe9a5ec0e66ae31b29352f884a22cb56a7d4800120a7045d4dc5358409c09d4ba0b9f93cf72a7b28845b8f2bf837f87960cbf57c464f278f93e363483a018b7e198df97ff9d9b2ac799d9f67c8b5e4b29c1f86eebbd93e151902aeba1eca14ec57eeab3aeff2e7e0bcc1fc4a90303224e7f821ced85e0fd3df7cc2e6976cb00775bb2fa2210b2f1e2cc76b68879c4f88462a7e0169d565f26727d177b39e1b66e0c80f0c83499ba1a1691263ef1d8f4b7ee0a695a6b7018e261fd58f28d89293a900794a473368712d20d1262ebe9df41b16068ce9720f5245909bd936206676639d776bad394fa03d0862bc3368c513a558002e1d44750c73dbf14a35fd8ca790420ca8258bdc24625bd6913180541ea2afcec0d5cb5579688d373a56902c03e3429d1c60565151c0fbf1d47c0fba51cce2484e8a9b10bdbd8ba4822671b1016610f410f2ca893333e0604cc8d291de8023b4ec3fcb274d42d74aac9ece8cea34086b58110f8e100e20ae1360a1e7e1bbca44681d71d916e5c8baf3a2c7ab8c6117bcb521ac7c7fc04cae79bedbc39081b7072b2f802ea64478679e5e1d3f652295f397f4bb1d5744b27239989d8218827b410bab246bcf23ab0c2470e6f9b98eed6802db1afebdd4a2d4b6e608c6110b444996ebb65d0314c6cf003ad62823dd4980381a853a21829545de83fbab6a93be4e7425653e5f610eeab317e7d46ab0e18981825ea4717a87e2b2a7ecb6acfe2271a2475e63155e5c36bca8cba0764d337f9f21b943081923b418430173a672170bb401a86aa17129615d111f8852ba20c6dc63830f068620b88e3f1e008cf16c7cb0f35c84b3bd8ef3cf409257700b256ac4f2307ae700983444633790024a7b0f2479501b0c41ce151e3fe95447e92e9fb641a5a2be248a5c7034b92136316195e3e778ed07e9fc15d8c400c64a83d8692087a50c464043f29e87134bd54b18f4eea9c0b6c15450286db6eb9e9a1b8deed8f39246e9bc77f97199cd80902e9bd313d91e2cc16188d26da2195133949c459cdc0a239526823bf8470b243f012cc5422538fdf33ea8b8e1468c69817abc1763b362ce12bd53efde21b73a5d1082530b6aec28cbce6708b013e79e5cd516e0970024b179eac9b0d003d5a9cdd1770d7785835f272b19199181c9eff6abccf547d9212d18274031e04e83da61232e92f06c00c63d802f0278b8fe908825ef097757a714a8941222480b548a5abc4c5f15cb04ddb7c777378b98576c15b4a91933815f4d6ef08b74a57ac28bf84c626a20aba586a97a00b4236537e89dec16ea44e0af5f40ccc93489bc656e3ed40775b0a970338b0624ba53f731c048418095cd35acdf0f87396b7d888d90933b0a397162155162440ed1b59b31b856635052b31567733f6ada4938282cfe2942009ae2bd1eaf59e3bb9eb2daef6993d9828bd4aaedc42312ea837091dafb0cfc677abc9d65baa35286432f7ac9d42affaf39c30011ad0ef45192df2a50639d29779ddc7a996496ea2fef352de8cb162aac3be7a7b801bfc2cf35905ce5e1c972fc3dd6c14f4ea7be8a2b2ecd4c4c0eb447e79b19ce760fa615158fce90bd6bb0cf0d409d47a79124679ae0fe04477ad4fb67890db28cf1bef3a110335a16ea5b687d9296fa6b3582e45e553bca2c1c76abf90d1f4d3f4e84400782b7c12dd7ad8e5501bdf4df210b07a869a34f199b7af38de5d029f154d7daf8488c529a8668cb648208a5ec65d0f465ff37fd89f0b40bed0808c310d74698122822ff380a7d315b94d274273bd13a8021f7ef4895d27c9604c1e685cb8c948efe9807b5ef00fb7f3bc17930cc21b70b0cb5fa3232c08307f09ae1cdd8b26e3daf964cd81474c691d01405d19d8409ced55d9badb4e4efa2539678a9e76c3371b9dfc502b3097482fe577e2b6732acd9dbc3fd2a4fe8003dbec7bdde1917228c32406c9946f941b5c65efca065a1c75d272d2d315a7415bf0d2f69f53bd02626244edec4cce6347c422da42cd76b4811045aae4efeab87a84888a31b837831bc604330f2bf6dd858c5821af199ac7e6cf0218f82c1f77f4b02562e301cbd22587fa871042f396b13b492747709ba22f6ec0fd0ec9381e88195cb23e5157cac9af84765ae836423a008a622c999a4000b22223f149f1471a03ef6ac5a96a686c1498a87c21bf646d81489d584f5bba45c8fc4d0e8893d4b6b98b89d730a9264de5e9d3a7cfc1941fb7f0ecb5ee8234bf02d0b5a5fbc1cc4a154a4952bdc7fab4aa09b0e51ca260ecc5f9860601fe0b8bb453f4f4083f91ad7579f6bab2f1811c3783aa293570708eb10c507a985afe54440a3ed4315e1452013aaa74b44d8e35f0c889f08fd2f47feb34cbc08fc2ab391dca73e873074c8487c7f86f26b89c7341b348ae292ebd9d38121f53eb0445d60d558a90981a66ff93e4c726d8fcc4ffa39489f590206803a4873f569d7cfbf7c4244b2a2ab6ff7b0aa9ba30b16f1685b348790937b9a1a15600fd98111ab48deff37c9a8f46bbc6009ffb1e70d145e90cee5f7c08ed132628194bdf9d2b924eaef57b29579c8179996ef596b3970243b1741cc58616fb460e6f2b5f49b9c6b46cdb5d30e24f703e9d75f99da7f181e49e117c339650bd0ee25c16e95b1986f7a6f415ddbe3b8074fc30ca2d5f7316b06fdcf8fcba5dc4ba2dad06bcc9b5efaaacf47be70e43b27668ef33b213e3f08ffa354c7290eb8c7ad1810bc3a668951dcedd21cf9178858015990c77a39c94aff98985c7d5e57a873de6622cdce946a29668c25d6840de064c1311dcba016c7463cc1cb176d338a3941ede8f5b781dc432b50d9e93a362ce2a54361bffba321674a671042efe3a0fb6275c830b2adc3edaa1e05864459ea4a7f1dc8415ab01892a5de1b8860de4d955b8ba65947017d4b910202e49bd6d96cf9a04b12b3d701c3c74a21552429981f32137e16e7f46f345a292452a9000e46ff436f117db6ade02480bf61092b5037a6c5ff937e08c1a97adc00765b1adac6bfe8c9d8986ba3b5ce510547309f44ae64a10d1d05c9de0a47adeeb1d77b322c95855c6d7c34724660b63ed98110717afb32662c268680e9b2df16909b959f8a1fc68cb1bf3563d84794875b07d425733b4c96c7728c53f05ea9de1d8d253c73cd948f534d9ca9ae9bf7c01fe1877c79f27712cf12980e0e8e650c97d78196276e4b6e55d1d39a1c19072e6206d815d923eac52c60ed6d4e3432723892770026a3c03c05c4b90470f1f6a62b749e03019e8f5cd11b2b8a880678f65188d23c6817d016a653bfd78dfd31b327a90ece43e889e27fb03201a73f706305be51c91786fda3dba23283f5215ca2fcae5a150f34da26a50d19058552170a5d17bb1e08d8314daebac957e17dfb18f6102d40e7edffd5825cb503f82b747dfcf4e8b9b317d8a0a1b56f2ca52b5b7aa656e0a83c06304f01d807eb9bba3fd54efbd749a32b01b5e0016c8c5da98c01c66ccb60a80c401966c5f1d1a2c69ea5d8ca077af9d255549ed8dd12c6b3572eb9d498a0a265ceb9723061e7f8dfeafd8f09610f16ca1a62bfdfc8c28a63703ac27ed6e2185923ae20fb3c0a195f69413b6c098c95f63453c0e0f739605c36670d3cd9d42897329544663b9c72bafb2f860371b37a34fd89875fdd5769b3c3846ee6012595c3ef0baf43c4d6a54d303edcb1e2354dcf24bf01a118cd23b83ec3595f0467f1e24f09d102370a29b77a125e5ade2828f1663d98ea4358df1d7307523cd6ae268018c27ef6e3a66d5e206c4f4695e6ea6b782bfaacb58ba46a6315b288dedabb3709f0b8d3d3a50ca7a5f46eec76c0b159df4f0d44064279f0084f271c6ced585ffc52f2a58d90d8ce6be1f0fb629f3fbeb4a63ead920848c419d5a656f6f1a2dd3626270bf4000ddd94322c2481165374de1c095f8dffb4463e5dd86f688490f2a2e0ff18cf2fb705ecd40544b099e2ad76e23294c706e9acb508ab8863ebf0dd6be3c65fc9f24fad193c7796ed4b094f8fc997221d2dd5f363bf09a817b606bb01e2bf9658745a636862096cb563c42d75b6a78eb21b9c8fc83802003df0205c4a838eb46d7426401b108f0bf8a9ef7003c174d913e35251b95b3eaf0f379b98c47f67c716292e237a7a3bd5d80feddd67d37f90d8dceb438cb9fdf9fa6ecba25620cc29e10db94b984c2a2a8f7eaf16dda7f82285447745756b104612f84a6887526b77e3f88f1daa1a6626dde31127935aabe3fa74aef17f3494bbc659748c7b95512b2fe7cc3df49a5903742baadd4dec1e517931c84b237980baee995b83541893643c3bfd3d8e454f9a1315619a5edda26e850e4bd309331b7e4b74e25a09fb911f3d21717a8fc32a21abf28acffdfda7ea212a8d9ae3d1b195df6eb0278f62c94420041ecb603889466d48177298ef7acad7ec28dfe46d4c3e19eb0053116c9188841ae879d102f628d9f15c196dbb86198ae8a6ea6d80a99632758906405df1044aebe5819e4768c877ef08cd2fd5e48a3f410247b94e2d2a1eb87dc49e2dfa0a7f6d7306f094d0fa6dd5b5c18edd766307082c3e21bca46a616053dcbc39825ad354489ded92e177b5ea6a24e8e7a55b2fc8713c4dbd9098e8086b211800a6e9dca1e7856e50bd1b37ede2241ff8079f7292e8458fcb5a0ec590258194a5a0f231450ac5f838f033985db3b4d0c684fef12f6bd550662abd1437de7ba469583bd98012ff6013104204a92c315682a980e1f12192a9a76f3f23926b8b8a8c2c02792eeac11d00764e89b684306e147b9fc01b8632dc960dd2db0d6f665883d6098ed2087ce21eb4ff04ec17eb96137cbb37792003f1b6e0952a2a608f2f7d7242e189be91b40a803e3d56eb05f9fcce116b9f4d9b39298b8365fa4691f88f430874ab104374b016ff19a4f1e982c4d8eb3ed92708e037cf905666904a409f8cd191f304b21b73a5d1b26c686e4c12789e78c8501fcaf35659335979e854d35252892d18f25ef9a1efe65aadf3fee26cc3aac55f37d68f2f8e8db134b134878bbc9520804992fc64c153613148853b4f56248ff693f4676ba691d240ef9573cca48219f52b522eccc8ed85cd02dd021b120e9a154623e13787d1f10558c784b05441466e121436da75dce51e0ec9d6c930bb070fe94dda2b391a9ec6b537ce660d614eef66ccd7dba78b517cd30a8a193f2916211d8447e5d483537eaceb8204b216ea6786912fdfe68f05e9a602f59967d5119652be615ab8c1b940d2022cfec3353485e397172986d99c57d6b1d5c5773e59c49476ed48e67d01c45212fce25cc803eb9dcf4abcf7d5c95e1149ac4d304314c83ce8ec24a9ac60c981330e9e589bfecfbe7e22c4f878f5ade54248bdeade421039c93cf60d99a12d51790d76e1382c58bc85047959dcc90292cc8239091b5dfa2c9983d3ac051080f7de09ceb6d10fa4e3631acacc66cc79f58a72d0e95a1c2de086597974067baee0ae5021423bd15fcf897602b2c85a3c1a39bf9aaed0cf3630898829aac5f9fa54ec8c8133e7f641df232f9c582a612b786c1048682ed35021e18b705b961906a5c0bd10c40de4965ac724ac46a0248e49e2a917a7097ce8cedf30bd7a74250772530d6028392ae74e37d2fd7e50a74e684481e9dcc91f60f76849a47ef4a8058bc8e96f92138e97cf89ad04d1b6c8b0c31424f35b2ff41b9c447e5d267f3a9553b212b65b84a48ccdb524d6748e31c30cd7aad5a78271d7e3804b008f4ada8749a9b4566c3af4afa372bbcd0aec9110789f78e541a8d704f3353432c7da5d3189e3acbcaae41f8ef74eaa78df68f5dd7d93278e0aa5ad62f43203e379a975450c18e47640609553a17a6d00c5b76f006c788dd8ca46e14bd63ce82b8a4df0d922299c04ae10f0f8b52f8b493fea9d42c94a10ad31367aadfc715a4b5048b9ade96042ab65e881dc69f823c5da8b8192e29c429daa809fa5d0901f05ca3f7086860fbe775eea239d7c80d38695f3c9f40694d15df9df1cb30a66caf017e182d05d85bbe32cefd0448cb8d571cea463edcff61010ff962a5cc2de1783a761360fa46c18fa20882aa7c7b7c46594081a49ac37ee5769dc5c1024f279e6d66ca2b09a10aa1c5ea016954794ced94972e463275de88c70d8e3f43c2d34a2999d9d5c3fa0c76d7676d6513683c791972a87c66d77115946058da784100dadfe79ba56b1d44c4d8768271187e1a53234ec502881753ba30c0e7d06a904966ff8142b5aa7049c1b0f47b97db03221415b204764caf842f79c86c0cc20374a5a4dd3501353f03d359fdc6cb8124e081c95c62b9b0735a2b05a78804342ba2384f3694393944fd691301bb837c49bbff377bcd135b637469fed0ca50d03352e33698480c7d3919bbf6c8dbe231e0e34bfe8d8c9b4f33c6e13b9e679ad4ee6d6d684b8c49b633c591fa1e2dbb9e2a43db0f993d881b856e5a06715b7d0bc3d0e7d4ca3d16c03a845163b6a89770d148cf03ad022710f387efc8d08cd470a7f8f8ea9c22329705b386ff30efd99dca7e928800d4aacdce106177440c45c6d7c5aad715b15ba35686e6486308ec8340498aa037cab8fe559addc4dd9622fbde32f06fe3c502627b5e9a9f666a93e097450ff19dd42bf05b294c4253a50747750115b3bc19cafddeff3038451b4ba7d5964ab0c9f4d2686c637f50d629974435bda01562a55ecb439185427866f0e952236f176e8150e5a200c73c8c48bc2b8ae108b372ba5d8053766fe49b23a90991bc1ff3adf627751e99738165cfaa4641b3ecfb7d8fa30c718b870c837b0b525bfec5b31aaab6a809abd5193cc8630e7400acf6dad8bbb03e0e146c5cecc049fbab06f8b0cec0b197787c292c845fa5e32fe8c693d50c43fe120f5a28598124c1930e987e43ef621c697e46684b75e7004723ddb07604f09ad53a448d7583d0987a536a05c3f283e799562ea45ac8e791aa91dbe18e124eb5552b681d5012bb9467ab0cdb6f7d3a0df8ea59b559194b56e160288c0c6341de398543349083fdf90d2e2ef6bf259cc76b6cb073fa08ff995a1993f9352a54dc66f880f76f653dfa3519c7c7119f63cc340bf66b14995d086643c1d769026f6196a500942383029f8d2879af5e4805c20d8ca79575770124051468d93e61d8c500e56675c8b212cf107a681c6468346a5fddd82bd4724b724805484344de744120177858195f06ac3a0b37ff8a2e9d00d63d506f7caf140ea12f496a8bfa07682e0a1a5a72627d4ca9a3a5d4a6f56634f2ece617d5e533694dc10a79bcb9960ff7ee7d76120713fa5370a7b275ca540456b991ed9c0ef7626b1cbd8ff0258e93abae941c44f5ba42f5a4385330c9e18efbc34cfff7d065f254663d2efeb2f426b34547c4488963da0131e459f30cd80073c5d7bd28cdb594b4c6a5844f53ea853cbb50c25b0a3d34bfbae24361b0698c9537681e4b890f501bed6703bc1b6cbd41aee5ccd03c667d718f69f07fed60efe0ec8f383ee4e3f6aa6c365e8838c05c24d67327eba973553b8592ef3e8feeb798850eccc9d89d796b4607926bbbef1abb86658437d9a82b9879be190ca18d788f2f8ad95937c9475d012eabcd9772cf65320a3b49abe97ae3f62cf1dd877dd49b37b7eebdd5a024f7cc3bf147a514b68ceec001ee626018b0960099b8dbec729c1283059ae0759141242429c4d87fbd115810f12d27a12f36f1df2d7c197336f1eaddd412c41864a052a716943f4d590c2d11b7d3547426248c3b68a3308dab6a982ee0fd6807107cf5c8f9bfed4e921c0b022dad439b4e47b8400bfe10eaf6ba8938ea207657aba0881a92900d42907728721b9a821ace0fa5657d0ab9ee76b5cbec699cc0a11d376e2a6cbdf2d4e3b8c829d5884d61b0e52d18827aaeebde52eebb8a31ff4468a6071ebd5cb0c23ea08180e4ad834d0e606d261c0ef0572ab4732ca4ab5a180aca7fcd533d46e2ec64ff5f4cf7a47e8a6e620e450b4a15a9be208f2f23289013fe346e8cd7dbd29f7ed1993eed6a538580485aab0715633234b7c90e30d931d7431881951b21e3ef09359ae675d17f4f5da21e1173011343795ddb5bfa27c1fb935d36e21c5c1279dffcf2977bf748812b55b281e1ad832cb95a1afe74046ba8c30a2e96f3467717422950c2f66501e55a42dbad00e71e745bd64703f709f442e1ff0887eac4efbb7ddbf49feb5d38b2bb6a5cb701249903d01182935bce503b94017bf778dd5b949d13e86a3cba1669fc331e76fdfac340d2890e33fa690188e4a6e4d18eee8ad422f82f5278784b7eeb8f419f099ad93e728961f2f043dd6f7000ec4ecedd239d1b08c2ddc19fbc81edbd79bdec07a8950609aebbd96533e842fb31eaff3e93e47b1287c04e9a458e29b1927fd1fedd948dfb9855326ad06797cf2c326bd96601a1e4bddad2628cedd27a5826386f45fb00414630a2bbd0256c208dbd37a2ba40b0b2df7a0f7792b827bebb3a3a94a634a5552f56048e843e703207a3e5a6be327408be2a861216ddee897b7a65ded9bd03570d6eaf373eccacca1c31c21667bab6a033f866820d51c09cc08f1e85e4a2342573c1a708dd2496fcda62c2622c0b80fd3d9e9bd7a56e6d7203ed370cb741fe49c622373ffab2095500d2cba6d52731cf076b48710c886a47de9f437bf97227195dd3baf0eb1aa4d59df2685da66bb609dbc572c455641598b8ed0ea1da766fb04d59c15b529a8eb14f9cc7a457c90fd478898382d9a97a21c014da1682f5b3f5bd566fe3ecc673098af6c6949bac2f108338b2add7562138268b6cf220ed5ebd96014bcd0dbea577992cbbf93193fd12a578fde6a83ce1b135a359b64c164df9f652449fe92ea807f425f6928bd3416f07b538d62a3d54c918cc939a0e5244b7278385e0c36c62d43ddb87170c812e687106f9de2afb1f90ee317f4570d03e264f10763de7769cf6121f107dea487cff22c2facf2b2db00259318164ffc62dd43455262dc846a7eccd795001fd6b76250ffb8439f56b8dfbde5754679597263f23ffb5cfc042993876e436384a3788096e6d6d66b9e10f3f64c0b46e92f0873841330d36e6d729384fe8a6e97b0e794d72da54179b0f9d250368809cdb65fd0f8d8f771e16211068186767213e863af2467dce978239609839038d25809b4f29ae7b3de6f18925041ff8f130a7ca713aabc188f89885d16b743febb70fff43e3ed4318bdf88be12cc62aaffd5fb98c523da3bad950feb60b75af55400c6661c3d18ef90a8f5162ebe4a3625a413d22626b1a5eeb2dd5fd3b15faf735203424d589d54143aa167a7364d09b7dc4f49cf3db1a4ecb28e48a917c3ce2eef93a1f691d8ca704088d5e5bc7384129d59bb9b37d61a2a1dfb5d7007a1d17e5ab18af3389689228a1d894332a0741ab0b7d674f8f71682727159728fd90f575eae3e49886d6bc65f19d84343c87819cf294dcc02ffb8883731422366112f6c12755d04802c62e367280a6376d79b5161116617dff3d53d315fdec768916c824c7996d58c594051e24836998970446b6cacd4f8691b20397c9b381efa1cbee345a8032ebc852c971e24f552520d27c0fa1fb44d2ce7cf2db3e052e1c4caaea2c8cdd4f46a7faf4e33821fbbfb12825ae6a64de6ba2ed026db7407c3d76d77e4e0eb3f41a30207b6beb3718dfa6c7ed91b6572b21079b752fba503fe94fd7e5f1f5d5f7e255ba50f87c94a09c5438dd182eb66d61626d8a26650ac50a5147de2a488165c8c21a105d8ec68c194c604d2d48d64d1a2595a9efbe9fd7ffd4c2f51e4a7d27e19c193015111fa3e71caf90905068f8f14e2d1839d46052735abf9dc44c869d020b113cc49ec130ab0bdc4f596d6c7b7dc081d1c22e30d89eb3a42c5e27fb1d0ee22d857e8b3689e20a81c34f09114149975993c78df25d096c59d6c40e32b337129660c13b4f988008a389a48ee0d52ba0ef247aa24c96d33f485192637897afcb7c598763787860b6c61cb2a31e4c491682468c7d44b3131b37b9343273c331a5954bdcde2af2f961fb3e60d2723e4a0697ac0915982c8b5732e06374581e67c4225db99a772190be04dd634b89606816d1011f4b5209fa937e782b6f2d76c6e717683e24b3acef69445a0d09183ba835da59e85c7476f3c55a5b41d00150aa1cb7ef7094fc8b6b78accf47b28f9a3036ce46b95018a4a5e0076b604ab39f7381b6526131135b55adbbd4c4320f6d06d462ad4e637120af01e5867377da1d02e73a1d79053a7436cd9405e6d25aa479b87d13d9a77f778e17834d693542b503d0cf8fc1fdb180ed30c3e3f82f475e66653a17e7dfaff3caab52be103569340973b30a7532ca0449dc418a2df454f833a90b6873a96abd4c19a943dd3e8ef5f09e0668ab9a07526d920c9dfb0c48e87567927a0f9abc3ed50512e64da37f5d01d7c04f8867139cb9b4feedec48adef0565ae9c0b400a4c788d57c050b115d81375b4d4c2a92eebc5acb40500349737b663aa8c07dbb3be35cae11353456d2aa3050c54ce6e720f3f6870091985f2bcba049896c329f94172fc6457f634377e5d29cb6263a2ecb532451f4aad41f5c62f765c63a2e7b7b20a87f93ac831a9e00e4f528fd7eada2bd05200887898938df2dd414cc5afc94245fa65071050ddf79693f074356e9835f6067dcf1a7d19d4648ea874e13c0081cf5928ce8a6ed3463a39993a56793b796115f0825e16ab91c6715ec1e4eb16a07a3763a676a003ee426cac53a518edef9a6ddbe71a9902e4f1b554597be4ea885b86da94a44325320cc167856366aef269f7fe928e5b4f59cfe89796a43eb4ab219c6c36414879fd87fcec9230aa338712d392dbd125eaa3ac17cbf24f611d46383ad248420b3608820813fe5bdbd3de917eb415150457435bc13e4057add00768ad32f076fc7cf47412bef51d1249bd983a53dd1299bc2eeb30a8983cea28e4fbe0b056339745606011a1e7913c34be82a5bc56d9fa2f4b3b35c8bc94cc6f03a2a8facd3684d2978a0f536d991e2bd9fa888c7b9d040f224ee88574129fb24ba8e6ba7e49427385b8015af2031c42ce226b8034bfb9e841e4f05d7a244f39007399aee37e199c67b691b3cb2aa7ba2751ee5c9d4b602d7dc166e55cb58726d369213946f7ab32b5b4fe4af37773827613c7b1ac51e71b27642585a6b511b3810842627a5971ac19a2e9d948269155eb86bd33eabbc4aa5e9f3e74c98459fb13ad9c7337201e17aed5c9d4593a145568c10a05e9a0c1e25ebed4730ac72e7e0a4fe777c6430f4e37dde81d325f3706074e29c65d16b2b63c5ebf6728ec08f89cefdc3cc58e968a93b1150b59c6d0731c96d4f254efee93cda4dc90c879dd0a2d7f4d1dc1f51d74c6e497957fa42c59fc4b01a406bb182653d2087a21745a16d526de914d356d796a671352257fc9b583e43826d2852129dd7a6f5041d0dbe767525c6268a764527f4bd959aa9af6d89f1def56a3c89d8fe728bbd13e8b1b281fe32638acee3dc0ec28ed605c6ffa161181e836e9c6fb7c55a008fdf7a9075d9c035568676f3f5a03420b71908619f36404de03e1f80341e6775de0436798923335a070a6aa0b7a4d9266266e7e0408990f85ae52a14cb18bf15bbc0249fe69009e0263409d7644c8f3cc2072699300173a01ba367e0384c154789aecc9841b7d72df99476203fa39204aa6c3a0377c132fbeb04d8b9827df06842f846c996ec039b85cba4ad2aaa017b4c05fb59ade2c33205573f8f14a00bb4bdcf6a1dfc5cb3738346371019bebb50792fcee157e4f3c6010fb752857daa2c1b6a584db02849decaeee46aa93aca56299ad323b0e7d152cd827dca3575548683f243907d2045f7f233401716cd5046b6134bbd95043b1a0bd3118f6b705237c1758111e00e4f226979ee950ff484af60050d85874292e5501100fea71b6a484a44db93ae2fb70b2c20041801261e715f392b11d3aea166e4ef9b49ca10df2f0110ae789f0c55e84b37c71a9b0f288c1a42194b65ae3c02116f93d811e0b6494b771e5015b6e05737da1de566f24259b70a30f7f8aa71150a954dbd81e86f20197198df24c5cea00b0a761db2e1b0e1a80629cfcd7ba541e0f8249c12086aed55b3cd94eaee8839abd0968957110c118ba820b384711ee8b38246d896710ddd6cfe9c93e854ee6b278db8e174ade81786dcb0e0d3af8f405c9f1545c640bbc18722c5d911bdd0693384ef9600c341974fc256526bb052143bd660c87a03735e06714a26aa770084d405fa27e8bcedfbab184e81880684b443c5381dbf9de50b140530fcf3579ba1aafb75dc2a07606de7458bc80e7f72e9926c04ba8ba8b52c051a231ac9803eab3eade37c7a12c3411304e1625106e68ee01e79bd534e733df7843d68319a95d3c0922395fb4506fc35328cafb8e0f4387c1e1970e0d3f0d0cf009cb7776b93d9902684d28ddbc572d5056eaa07c0d9fa88a08cccdf550e70706b9d5f4c3e922bb89e1b7450159460e5cf0d49a29f899965a4414651081bb544f4faa2a131a3e6566a7e00878abc6535362a1a1f2f59c62f2e5c00fbfa928be418ddf1b2fca8b2aa97f866a278b385ba0287cc3547235e58e93db6031c55b4cbceb5cb16bcacba439aad7575f1b23a16d6dc1cf5e6bd95890017cf316efcc96ff4235871910eeffda26ca332f83ae08a7d3570f739ec0e09970bba53c2671453d1139d1474dc88e622aefec6e42283e060f390576c1249e90e1f06226cbd5f582864f4f7aa776c831b8a3c268efde01b305b56ebd8afc7d74f1fb529732e5a678920b194bc72a425e46a123aeb35e61c22bbaec90a544d9f18ab69913b216b1dd80b725692505756f965a66c9677adff9f3a84569c825f66512ff50d3f39ea5a878bdacd3614f541839983708197b663e55a27e2dd283e880dc3846052d9e51b4df7bcc89e9b7d3995e47e89f4e9486b13c719438afa95d4a979de3089d8240c1d5d627adaf5eaa1cb637aa47f511d5b0a3b376344536a9fd67f004f6697cd3840a82aa57d64f12a0106574662537fc5915709040fac34a38058f9d64656aaeafd01fb54097de0cb3541a1548dd567482b87e4102c03b8f23f752bbddfd8556c0af7bd5a7e9db0895d6abcc829820e2165a7acde8c008564ace691e35238b5a057c047026ce3d2acea03f0be30981750ee72a987d0ea96a03d29a180c74d1611605a255020ba55c07e4ae6c04dc95e4f97445a10416ea0c5580c357f56762620c00886b21b76958876585824bbcb546d337f1c40cde21dbd6ade4fe057c8ef1cf8e405a608086d0e2fbb8a298253d99f750a4af29ee22a05ea6da8f8d88081dca608401c64c96f38c12acf92e69d69031eb326670de82b1501dc69d59330ed10bedbd178bc02fcd9ddd23dacb104c58d9603d4d9ab207b2dd198eabc78b777ba4238e9cb342a3ec14c560cd3ed91440dd3c16ec438b1c94fdd2bc72ae66ce79e7827aa585027fea89918f5e70856cd0839d90305c0eda8a14b552847d48d1b4fd691aafabf66296271b05fc163568483db2f39e8046b0a7a7b69825e5decb2024ea357428b51a7becf049c2b2352838480c24c045900490e0670d9106c44c18ae79764d0c7c4d7079d287c20255738fb0b8b502881195301690bd04f2d6f16847052178155abcf6b9ccc8892a0fe364289d306152ac0aa934b1df9af04ac185a693d4fe92d8fcc00f6e173b879e8f94acb00588ad30cfd53fb482a3eeaa0e63b4fa48292611dea7d416dc664294f552a295a19f1ef5c33372d555ef1907132480f40eb3b205e8e183aff97493d80812e5fe8cd294cec39afbf9b82b072807ff0f426b1c0887fcd9316f8cb5844f372ff457ca830b6bfb4a08b6cfd78636e649e853154183a35462e682411d06b9460d5534cc701f29a22ec18d807988bb3271c853104b07924bf9fd4badc9e08e1822290ca0188418677ac18f3efa132d822beb4e5ff2d45e9cedb41ef5768fc7b58c790278118ac5240b99017c7abd54102abe3293ab6b7f18a127e368db334e2f5d6585f89be39a687b96db0b966a8916cf82e215fddb03baf63c485e0377c57c5441b23a9896a699bd45326495716de522e11ceb5645b2247b87df040c31aa2c29a4fb17b19b29d6512d0e096833e52be6552b5bd97a1af1e9c76d25ef5c086cd099668a29ef0962da47995e09a87fcd456dc5add1371a349f13e8a410a2e3490ecd636a7bc5aa95f5b5002fbf77cd409ba348fd15bdee71a1e0365aabe8fc341008fbf60ddb64ff66b0647c201f1cab99940a9b98c2310914eac26ed7be311c52b652d45823f322850aa5bc943ed2dde6ac6cf3870507cadcaab3078102edfa3371a741918330531de4fda8ec6652894ca46901c03ebe0bb2f4dfa009c097b87d5e2eab37c9eacff24b556b4f29544eb8e362232a61dbd269cb1d4c008984d569cc0c97ed0d1207a154b9880a8aca029de90fa010e667e8d56f1704639cde1a7540572c50f81da6a42004f04339022e7ac7605c19e3d5e091c2472222426ae22899bea2e89e3c786fe4b782e6a799748a1f33a585baf7ddcb5acdbc75d8170eb29a69e80e1e59d24c5a137a897605b4f523701dfc72e0246284a5e3ca617abd4604dc7663d57d2f583e04464b6ae4adcdd90f108919fd639203e2966b9a5329bd849313131a71c11b49572b54f3487ea519c4a94460d9ed09bbade1a383c9cdce297850c3ff61555737ce45f9f98e3381500c1903f5275189ac026a255bae51fe938c90c7c326d41ad6e1b5658d7aa7d6d10ac89f6448ff64383e8f8d41f4dcf5c4515aad001efbc8366c261f1b3f2a6cf9e7d0f77403c8db00f856f276bbc78b78e84baec696cf1f9afd950ef805321cf6e83b221a17202d9f285d92397c445d1c4d4923596dc3d76a3f50abc77f085954048f046050991d0ac2995705865288c6b3548289ff166127a47cdae9337367b17938245774523c7b03ba3ff082a1c3a8962e563c867545da4075f70c181e4e4f4fa27720994ad3e10524c3fe0b2c05dab512e888ff20896fd45e4164980896025ed5a0693aa0088c7b1200773468e36f09cb0f713702eb44c2420139553c116f2fbac09257d2bc97ef53a7fcfa583448e0e8493e7f1ccb49d463d19c052b8f1a895488ab8dd45b7df8d4b5a62affffab4459a04f60ef5e8de8f5f27feb1995772b1cb457e967b244f3596b99c2136db2e1008c76c16098c1409ef62debe2cc4ca098641fb5062071972fa0fe70f336ba203dc11cf5e408796cf696b859a7867dd1c257131a08ef8ec7c884c5d2228795e1e52142bce4676deaad39449d891e50e47ded9dc082e0f896b260214c753729fd349fe5a151182fe1af4757d6a845b002402574fbfe07908f59d003556525f9f8153a7d4e7962f5bac240f254ba836c47d48d4163e753dd6edc8257634a772c83320af564af7b86c8a6a4f2be37c29299ab091d8f840e29f10f6f91ff151d5bb31cdb03215fa451b645300ce11a2ae6cc48a670b7027794901b59e4ab3086825b633d7a11ec43051aafd4e305e91e71ad5358c9edf1ffb2c92e71528fa6e760279537d45b17d5bb7c656ac66db250e63e5246a96aa6770cbc2f18df1887a41b20a74509c6d0e8d6a6f48b2037e5e8479c9e78bb75bdac92c9160c6aed7a6de5ba56bd00a8f6e2617544bbba3045a3a8526382e75c5b4c45fa04fad57d0b1d6d126a5b27eb96eadb01cdfe5cc4a2f016aa5d5f061589995c013235c606a143b6047c515f1a0dab0c0b0b8bc10c624f747d73795539bfb42b4e8fe8c5694eb832c37d9797902f6823a36ff4c93c6941e1856081b38ec406b0acb2c5e0846023d6d052b9b5d77a19132e9035a3da559e5ee0f885d95b5e5cf00c4ec2e4148434f882aab7e09ad92fc4038facd3bf24db1b67d4b0e008b33340ff9de5efe012f33e8512afdc1f47df316af381c39ab408c6f6104437a9a942a2e723ccd790b46cd2974fa2b85352925bbfe2b667820a5d29561fb8c5bca0a4faae3c66e137beb05a5de7e70eb3311a0d4b3d4e4865f4876fc0cd7562f0e667458e4526f06bdbb7c06c619390abe2829c2dc35ceb7a7dd580e4448e21328288ce8a1137d2e61a6304e12d5726ee68ca9aaff7d3ce1a1f0d96fac700fd0864d85221e35f63489a64533b0d41c366b1af775de72cffab7c23d091e043615f610f4984cab6f143a1676756b170bbc42a52f07b6e914217b057daecc292c42978b2b2785c26e12d76736cc3f95eabe8ae069cee6b1b25fa558e22ba07f9b4261f420f52b41b240ae14461ea06fd1aefe994accd046c211e9e1eb1159320f089191840f9868543d1060f423d38346f52a2eef831e62596854c024247303c1375071c8128a965e9b006374e5fcc089a497cc9676a53ce70b74b22ec1a308d187578b065f0add778af095c3b9cc48bfc02e95a0583add2a1f0864b4eb860e623dff0fe845e9b4209512685c62e264690aea0170bd03e629ceec65a138183e05d48701bfcadce65fcaf05b71200ebd289857be886953c5499f2dbff803f28e9370ed86a0cedab097faba59d1af2a6428cc75a00d72101dba209f2252386faace22f87e6fec2354f3040c0894c65f822d1a622f1966dd438a0fb1890e7dbe548b0900e1c1abe7fe0dbe9246f17c1260f04b53ea401e42edc188daa25e126b2b9444fcf479105fd2c281aa7690f35e869734c85c851fc32f04a7e33ff1ae3389f224cfbf33c5a744e7d8d76b7d95d9825bc808348a93d5e207096c84a9b1925275946d166baed881eefc4048060de58d2c691474577e10d823d54ca97e16cbf933dbf35631067f20349a36535c1636570ddc61fe6905ea00be083a15e61362aba6f29ee24ac297c3848d6badfda887e57eab6f408893e85e6ee6243bd8eed9a9ae72b5e6f29b2a7e975b74b07f26153ee2954fd28291d43efb6301e39d534e482eec47b23604d1d0c94acf92245d6382231d019f4fb69802d6c52aeee2836c07bcef68bc7f1df7fea6b23903af3c0929a60c1d57e65b3ec422ebe2806497372d1e75447500a90efeac966d6c77bd684574596976f547434f9fd384a0cbd232320aff7fae3bbee1ec8738f801575911e75ab9a838cec22a91a2678f395a955b026d22a1142458c9e7436e5786e50c9bab522040dba181709a8555507eae8a9861f6ff9eeea3f9dc1b9367a0344b8299beb73440202d1d7c562a4420d281850900d465ce646e745a006d475d93eb5394472649b400cee855060f43e54cef64f17781e4eee64c3997df42cb5fd84e78cec4b1faffb7cfc24beae8993cbe2af36be3e19f10d450201667c50177d3016cc707de092185fe5fd83428609c83745d0480a9935334e62ea7f0dc60bd5c2692d0b9270d21b8d2e9dc7079cd804615ce2f8acaa0a0d07073d5b64e2f8a11b986c24247a654987ff95db29c0f84693ed17e3b086351e65325961061460428a8e78a50b738ea6541ec6b8b890f5dcb99d01fa558b5dd79db3cc23bb1fd48a08b15521bea1d0644f00935710b48de9d213a9c9a404c1ae4caf96ebc1308d6b71c50b2ac107696f3ce7b29a1975b3182444d2475ada14898bd55f01dc3fcecf7000a2e449234e12ffe1d7639851ee3ad89331b3b3f5c148edc6464f394c96319396a5ceb6a172b1c19e27f3041924db7f08dbba0b377cf2418c839e2219e34120bea172bcafe59579637341d55818ff106bb27569cf225a13328ba1271ceb2b0d6aa4153f95ccd09ff3722165d1c80c2fe18f36c43d01d52dce7499010c58e92657e4d2bb79dd0cdf678bdb8c7f111c664bae4aadf53e86f86925c76323c8c34061f91b01c6b347577d9b6b6a670ead865ecee97d1b9d0bc56b2507dec73941a5e55e3324470848b5909a90f67b4d44bcdcc268bb3e6cd580187b7393df1ce81f2c882c421c46e2cc292d8e010cd653a1eb56f94e0fdac9fe6cf095a8670305b7024894bdf5bc69b4b086fa438b040d2d07b9564e2b15977b7f30ce9436abd37dfb6592b2c45ce26b2b96ca133c7e48a384d7d30f33b353f25e020a9bfc0547f5f03095590726b5b46922b181078ba46ef22a192f65c2d77d26d0f4ea0036ab56118e983a07c83ceff084a8f6f28541de88d07dbde1a2760113d75ec8189a233aea2f416a9d482b84f2786e8c7870d60d8952b46d3a1b44a4e7a55d4fc9ddc0951e53f72eed3f9c3a1d47be3429947cedbaf22d641319e09f92019d9bb05c630dcc25a6886687cd3741bbe05e3df765d85b9e8c7213f027323186cb9c2fa0a62c1a8587086641fd962f9e5053385a462cc3fd03be1789a8a7be67e3894ca35b03407b555c59cf3f3ae9ad4b013f669fe0081fa853e90f9d9184d92defccda686157e40d9d03ed2cf82753e595d6962d71e8c8f56940070601bb9316c133203ae2515afecdd2b967d76cb09b634b8b10641f8ce9aa5c8925df6f56f6caffc2b1ca77f1830ae256607c87606484bff36ff69764cb6ec4850bd850bd45a974219a46c623ae226c6fe5b3920abc58a02266986e83eb619174036b8e9aef9dd52c7e8607fd652722ef41b04ef1225b713145a53b82e9016d3bd7a325c8cc4b0f11bf735e62fa0ea15c8f9a5b1c5e15f489ed37853d11affc008c60af9147feea056b8b63426ebd781061bdf3ecbdc2dd8059dc1b8e1242d5bcededf5a32681c66b6cc96528e11a5112e01bfaa8a4fc3d50f2ea3852d1660aa51ef28cc09a4ab8b5f0405c84a911ce884c60a27d489f3863e816cf9aafa89e4e0a4a451d4b0cbc3747d4ee125f7268556c6318dcf03f503c07e6219e015ab1511443915c00a956ce8301264ee43d9616ea106c36306f8814cb44e17410cb74acf3075f537809b4eb6054da1c987ad179c0d51676b24aabbb76d2bfc6d4d3cf94564cb15cc4eb23d7fc2d9529c8c3c788355f750ba258db278ee4434c9996bc5d8d60d2029937550337ad48c68a86b0989a209aa8c2dcec6f5fd87c086f7fa25629fedf0894c5741b90a86d85e2fe7309efd009ae5e6d1c7646a1983cd8e95268cbe57bf8a8b0faca92b1d8584b04a6392a98d234a90e75a42ca37a0b3fe0f2b1d04845e38c4de16c5a12cb5de4926aad8b758d74b7bac87e0f0004180c83e2b66a1bffa4ad5e88d5dd7e72ece2ed4fd1c3126e737d5ed5db5bcdec46d20da981ba35574c7441cfb34f260f947aa54a2273b85254fdf670a032c69397a5c3285184e8e0547d8da33bd87f8b8267241838421218b99a3efb3bab46b37bfdc669cff607a575794b32b3669198c501aed1d7faaa8597150ca9d56f4802faf20d62ea18f9759a307ead462cd4eaa12e7bbbc0ea181d29f10d4d16c7c9989eb2ba483c13d939c451887a9692a569216966411d1a3eabbd284920584151ee2c034c25a90527c79b7d268a9df52106535b3eab220c4841022592b9010d7df81b06ee8a3e7db9142ac7f4a1d930b7041c472f906f61992350e3de4126bce03ad04fa0bb4d898b83342c2d2208620aa49f069252e5f2aa616219b99f7a396ded585267465152c3086890f984cdfec3265ab06db5f2616621c83388a519ab112bc9e88c909f2fb741b3dd715b5972fa5182d6b3118f8825a2d79480a93c737227c3893107a8f5df8657906e1e59715097721dddd091f8edd54d6a01cb84acff44b88a7e0e21073085e37e6184009f07afc63d5b33c2ae52fe556afc437d4002a02dca3f2cdd02609425e2d9c5e70ce623257dc2458c333a6bf26a09daaf43bcd4e6db40ee918d0e39e6465d6c8945eb3575127f559293ae448b1b8c328b5d8fb7d45a56097c402ed350d1dec0a039fd071801f27f5ddf3f44bedfdf73d6de60c28ecdb741e432443dfc7246b2e2d274fa83fcedbe74c3e513862d60176927fd30d246fcc1c1aec786654c223269404394ded305202989a7d32848f724b94fa039b25bc93216955458dc4ea664a941728f4cfbeea874c16928bf45bc947d9929f24189fd1cf164aa76448f5ee4870e3c2f29a688be81aa62fce2895d45b590a572ea16861910d44b524046f87fefd596d1d97382239013f5928516d6578f8379e4cf13e9bbd384692f09f56efb028be909b56c4879446a240c2b1a42574a7e4f764b12511291dacbc8006be498b7fa41186e80d2cb710db66d060b2882a5c46044345b5f5a76b34ca4f3410bfc8f5748621ef0667a0be7e95a0f2c36b9c0f901de2c147f4dac2b02f848f7b134c23e1846b0911d322876dc10ddd120c2aae245a8ea7fe40d03984cdfcd0468e6e190273d94c0eeef5921cf2b790f3dfd1edcb8adcf425c8f8614baea480e45a38ea5faad20058314db73b7240fa1fe04d82ce05c8a9aad4dff68e4efb1d979615c57aa58758cff9ce0c8dba926da8d641d8827c764e16e9ee6d8a3b170271b06e90c1ad053ac4d9180088116f60e0e3344f6cef814637aab278bfd7ec825460afc2281752637d74f633905406022a92f5555a304ead930e4a38af57235c81ef418e188f61cb82f2d3624b3a832fc7dbf8f4b9f9d2c652a07e3cc7774c7bde5fb4ca5c14000ab4210461d451aed4eef6bc946a55f8a93bba7465f9cb260778477d1837217bef2da5945b4a2965cc055e0528057b870b6034380c27a58dc4c985b6c18d2e4bb3d78ce1465bbc5c71328517f18024d9458a6cf9d88262e1c49362aca861b45da831b49ba8e14dc82ca961db1026c54b8781c28528e13bdd2e03c44c071816761793564303899ba1a162efd6a818e334785932c3c64105698b7759b2a558ed1b5ee04c53bc460b3acd0a469a52e03034117d61d374a60a1816c4b60c3130757131263a2c2a219bc76343e170a149c58c175ccc8c1659da6c2e32ce13a3c5681962854fe96d2327ba862c6d8608bfa2da597258a9c181ac0063a7b042d1f6f146bf29ebd980c585e3c0c2ad60d8319e84d9693223fbc70fbe42141fb3b1939634171947bc8a8c14606635ca20e9c24686235fbb47141ea6c55338b253546d1952dcc58d2732b41ba6242e03d38a1c371c31c3e40b992c1ca9ca8e816bf320f93986e4573c8a10eda58736cb31e4b4b52ced204b48544b2b780a36fc08cd5622669fd9c26960d16dbc7a51869650b98a1222d6c3498e2dc6894b2d711d3190b6558c1553d87016d0b410b3d56c89828587f1da60a2e8334bb8d3d5ce12b2cb7af01839aa9c602c058181b46180b1827361b303cdee22e6c516fe85857b796d1b51a296f01e576884ec243dae725c71da6996f80c4a487a8dd28a2236fb0ccdd6218617d9c297b0ecd36bd710856b5942e56a6b09e14f3d38981c614edbcbd28d1748fcc68b15fb0a1b33686688d95cb6c48085b7f0e22f44d15f963c5d712242f60b3dbc72f02ea7274b9a8c0a489b4c851534d8701db9d1ac406e314a5cbe6470536557497991024f674c0a4abaa923c44a6786906eea6c282950f53305a85dbe8ece06443b2524389386aa094689b45a6badb5d65a6bad3d845c7832f3e30b4cec2aa78f744d34a6ebb19a09aeece8628623465257cece9d9e486a34be9514fbbded8e6fb7d7db16ad15af88c55a2f98449a64f8a67e93147b782deef9767adb16f78534577bb736f33feddf8dece10d731d27809381ab2a7a226de9769c4050a5b8fa95e2e88794f6ddefdf4decb4b49f96bacdfaf7de7babfd2ec639145773ca8f463554cf09ee7280a370c043016bad4582d2ad876eaf7dab6f203f262c48dce989a4a49b74c784e49d9e48ba6e72c0b7903f38f8a13b0a00213f747a222d2119755307371d9d8d4765c600747a1e59d15aeb5aa7e7111431dbd112cdb52e326e1da4760af3918cfc1d1989b88d78af9119d1a806232a64942424b4d12848281a4d81a1510b1cf4418e9d9e4631fa6e81043b3d8d8aba69e3658c5614a1e93aeffd25fc3a407b236c36c780836d8f85cc9d9e45536c361eb7811b4b34f2719bed7163a7a70b29ddf411c1da54e9b3084ae46a485314713b39a4687b51ccd1e110a39b3b3da59c59b46851a6007c4dd60ee8f96d6f7a7e1d9bf91a304c918b336f8cdbec23f2ebf42c52b1c7d8f093d49d9e2ec8fa3e5d84e9b44e4f1761ddc4c5d027d179aee0e26f2ea0b91b09e4e8ec9c2e90f4b0d3d345906e6a707f842490391d2e98c25a5bef178e86a7e1653d585460949c887a3ba4d42451a3e386365bce74f6c797d3001a5b5e72ceec3ce167aa10da66831b36a20c4549f95832b202a880ac3134a21cb1c052837ad8f28a41e386249eae08100e65803c5121868a8b1d62550d9e419ddc6a972854b58d07d90055375650001d43d15c039491e1a8e148058c24445820855c514e63c038813274c4a7d2b0c6466fd809f11305a345c522c12a13baa5b2a1642ad39424945e65557173e44bb542d5b04861054d13c6c0d3a16aa9561f0460578fc0700f88b0f8d1b4c3cb853576c8e922060731525e2cec9cde4469e386722003505d43a57451af6a868aa93488ca2f01441973d6290a960603ea864add81a34aa668fb80336796502f144bddaa4f68990bbe2b37d4a6304a658bae681240cb787055234fb47ac60658f950857071d07d4152b9d05e8a265004e8e0001eaa18cd52466148aa629e7e4ca7225518bab840bf360e04e816add2a31291d184f26acd09ca6e086bbe26c817ce3723032005a0578230802ee9795900170dc3820e276635c69da1f2e89ba26a838cd680032b7ab6f50c366006ae245f66706d49e54240838c8f2f2e30a610c9e518c4389cc1a962e5643cadbec400345541c1b1b4646b492e03399306e98a0d56daec10522fe8a593d23f1d950b7e592afdd329e99f8e09087ef1387553a79120201a6dbfbad6e75592aeb506bfc03307e8f43492d471a7a791a26e6a9083bed95de876dadee459447716011352b9be2718a4a1d76050f29d43ce53485710f0561432bcb8ac7951a637340566098e22665558444bd68b88d43e8900b9e07912894124e949487f9b6fed3984ec9a1a7414e4269be20fc2bbc0eedd71695e250774f3361de9e67d1abb79a19a74f34ed99c79a9ee907eff16696dc1ac988e6eda2f1dba69c78c919df5fbb69733ee8911560e35308e5ac899f6c9c2d04d3be5d44d5b85bb6987b4d04dabd339d3629d2350b175e546469b3240beefcbd88b6e56b3333b64896c9218c6bb15e2dd95c10932749774e120921e3f5fb0320a69127214da385fd89d55bc9b75a5f8377e12638c3188e4c3b6205a34b872d1e448911f62a67216861292158490f5d06261caedf40c92456aef6caf64baf1b4a5e96cc7254729588f298d0a1f634872544ad67d7bada525ec00ba7d13beeb8f80defb430803e8f607d03fdd154971b9c1221f2cf041b76fc29b8e3f1bede0c3277ace7ba01de8c71d6f503f84f041b7ff41b777075f2f46b0422a52da8118eac80fe3a3e86348fb982750b138de3e8480a28734da7f4f0bc75b58e9a86fb687b5d08e5f4210edb40fb29d3696570443f1766d1d836c0f1a41c87f5281f55014c5db7df066bb1d27607ffcefc7f204f63f7104e17bf1da31e876f0c7318896dbe2c2074d10c29dd20df2ebceaaa94e3bf86109f0bfffee08f60ada0ed2f08afb46bb89a253f156df747c2245df8f690742b583107e0d4b11f644077fd30dea8b7ca41b8c55c310618bde0b8a7019e95ea862262987bb3aee91d5f1d9838773a42c8d95ad28a6146d72f8ec3175f6b0e1c3ac9f3f8a3ec78230f187f115c618d7a45a8b6a0f3eaa3d98df68af49bbacb5eeda3fbe297865adbddf9893c7d0b9c3a856cb055a9d3c9aec56b7270fa5a9276d61cd823da0b7009e103eb8fffb53e92d848f55f200b005f0f4fa26e57d3745d0efeb88361d324727016238698aacd3534aac9b1a9c52559ddeda7dec4fcdd19c078aa3713ee0f7d0ef4fa53cf53d3c4eaffcd62dad96a64bfa951f30880fb82ca1f6fa26d4de6b29e5c12e1140d6b76b76109d524f24c638bf55da33280fed66ed470252459487765c4e9117746b825e5fb4f6871c1abaa05724a0140885a5f50f23586b18bc458d1c09d09d08b285510e19e305d45012345c762c4121ec4b181657580b4372da262153d681851796ae3be4b4de64a7a78e165edc6caea3d67c5167f4b6d91e174543377dec9ba9a82b1c9089f2da24697b5ba767d455c729f6bd1c9421c9fb3362ca864892b68f3aea264e4c2746009b4e540a0eda463c14990e1c4a8bb895a0c2a0a2e064282b9c0f2ac8c6503ebe0b2595a19e34940d3cc2f6b833c7598e304d21dde1d67ee800f8e183e5de97a796603f88769c8e25ed0ffdd0819005e0878f22477f6787ffce8ece5b9c4eafd784689a107bbed9c848fdf9b12d97b61c7a9f426a418c9d3599f4d471765b0ad912ac7ee366a8d74751ab09f7ab686dad155f2664c546d88676e39e04f2bcf1d5adcd3a5b20eab6d3aab062ee46ac2702d72f96101cf44cec74ab818fadd3f38655bf9d9e378c74d3d6d1fc501255838d9d6309ca8d23bee2468a293322656ce842830cbce96b4b45d96db4b80a473854151629a21bdb850c271692b80d1656ec196ed82a98e13fbe24c98255857fe15a3af798abfd26081fb2835b79da5b66e8331b2ab0b1c182f338d3636874973044346481714931d2440b09973184b7d02317ebfbbe7bdeaca0fcb5c71684fdaeee66dd5dbd63353a421c3fe3f2048b7bc24f41906655209cb71c3868fd7db6158fb83f6fb37d566bf3eecc1674da7f375a69e220f0ea2e566f8b7679ddfed5d1fe62d1eed96d696a7dbfd6bfa705017e3d71393bbd7eb5ac536a48fc78e3cfde70ddde7cfa773351c0fa62e9bbc56b5777b1eed94da11aedeeba29646f56a8cb9cb02c51dfeee8177f709707bf364de06ab71ac2a7ed5f2c5a7fbcd96e356a76751687c3914f7b8a7f635c8664ce3967127c32d7c8bbeb9bcc39e79c6b9fdfc4d5ca9b15823b04774d0cc1fd7d63bcad31954bd857ff7edf2cf2966bb79b557bb21882b56c9bc6c8be17bf0f2d51ff1e3cebdfd76ed688fb73c287b857c3f168b7fa647127dc9f0a6579bec767ff7e2ccdc7eab6212649d53fb38eff66ddac9ba54bd3040eb7715777b3eeee66d5eaadcb5817bb7d26bd8eebf46432d5f3cedff7bdde96db6cc6b359dff67bfbedcfb7b27dcb6089e4189865b92c8fdd3b64c959f7e9f4d4531d6b0df5b389ae3ba0d3b3c99058c73b8f65323ac3e7b30f5bfa9959101a844f4f61106808deea8b60ff8e6169c3e80698d21ef1b1f8b6ac67b4b74416678bc26cadb5d4da9cc9743efb2c68bfefb5d6b552df3e3b94ad3585befc5f10f8dfdb9b49769bbfcf4528884ed40f5bd0bf0fcbb39e3f9b4bb8dd7ead9fcf2c08f06b3eebdff75f2d3f5b948624736cf95a169c90355137ed0bd97e3bf86316045905aa9fcff4a781f06bedad16cd6c66fb27a5ebc7000512e102b483f07549c53afe72154b0d7c39e7efb3996c0ccaafeb6793ec32d031112a90587bf0d33052ecdbb7f1c50a54a96a0f36c5701cc117c5d21c3f7fcf6ffa6422d6c39eb3d978cbcf735905ca39bf08ab82fd7d1d832b76c3ae0c374bff7e2ba960bc81cf7359ed01455c85a9b00f0ca47f2f5e3114b658a92a503dab3d187caa21dc3f0c3258ca491a38ab403705daf33d7e6131ddeaa6dd0d759ccd8a810d69af9730f1bd6982f6bafe6f2c9765b35ce6b2daf3898d150317c029600f84c1421525a9e125458e2f1a1570839435e6c70c205aec969e921e172d4c198a2263e2a14507a67559c80364b9a9d2c4068d943239bcbb3223ac6f71f4d237bdfb5d8cf1d60ecca6c1add373676447d54d9c170f9bf874048687dd920bba343abb15393633433c1766da501d8981065d990b428b1853c0c6be64e87830b36e6ab03d60146448cbcb0b281bc4b28021b408eb3d31e24587157241759042eacbcc1aaea12d9be58896006a1845c16154a56aa908074b77e6969d9e496a74b1d333890ad6ea74ddda7f24ddfe8efd4ecf2c32595f6e93c740489f27f00c1014492e9a9c91aaa10c491776e584c3076ebc6a30a98255434ad692a80d7691b6d3334bc9ee9118310e51a18917354441947c65a5e08b8998b2a732322ab96cb1e0c009d233f8a5945708afdd514044568ecf0907cd805c5936ce2ca60d7af111a4ed91bc39af90bc0c04619ec8e062c84b98ac9cb6d2b5d51089c2871791a2b11664ca68d964a81c017301922a48b6729060757a22a1a25c9d9e58611d4b57b34f77cc3ad447e0ff6e2394e04602be9d6035054e23435dbf04384073f8eb0882fdfceb18544fb83cfaf3ed037dfca1feae65092372c9829ac365092e8f7e5a7620bf2d59d0827297201452fffdc1af1fa7eb7ff840cde5afb95cb6a843f94facb86fdee47cdc1ffabe6fb173dfa3c89dc0183f8a5c6eb173f951e46cf9e103d47e8b9db38f22477ea7faf58bf85cfda139281486ae9fd61f9aab163f09a995b2832f28852789a84c0c4c9c5aa8e8d06409c79b1e60a458815d3975b8fa9173be0a162bac5bbc5a657576175aab0a646b68cf5e73aed65ad59e3aa4d7b232bd214720410974fa083b23585eadb23abbd3975b2c6b5581f8db516375fb6f0a6913e2f7a010f6f1b93c1f3721d621d6caea423e56abfefa88e0d3fb2322a4d1686138d63e24cbb136d23ea4ed6db13aa659ab70c7ad156da48d613d1bb1bfc67669aa202c7f48b356231fb34523703943614ccf3f5aa29e9f6f51c4fd2161c4fd19c10a7713621dab4344581c09e708562be8d66aebb35657086713226842ac436a95b5b258d6eae9a9601b892225a5a3a3afb434ece8e8491cfda8bbafe65cf5dd24ea5155b220760d378927732cce065ecb827c6b11d3056fcef966bd9ff6651245574907859fffdefa84c2c689a6ae9f442daa40660b2ad30d6fc9946ffd5b1fcca5ad0d696214ba7e9cffeb1bd45a571b3a24518b7465da5a0bd1fe92bf717e976655dabb242f8712faf38755a461fb6adcf3ae47f9ef18a47f3f89701cdf0cc7905696a88d216dfc700cb59278cd908334ace7b20437856ec8c5f1a68f2a9059f58ba03fd42fc2d6a35097192c91350cebd1febe4ee643024e05e32d7cb11ed59eb01e99856508211f148e2a10ee3967b0440addae2b87db5f9efcf9a802693c62403f58ee1b897a5495f83eaa3dd907003e36afbce66dabd5bdbcf7979fdfacce60a956d17d79326882f2aaeed25d9a774baa74d5eca1be439eded2ba8e41e25bcaa35df37eb7bdd5c7b9d9a2cb93df8e1bf8721c4a3b74793229e6e755e2de7befad9f73bdedd65d5a6bbd71c4dfe39ed25a6fe9de28bebed9d2c441e3ebdfbb8aa1083b01d6c5d73cbd65f55717477dabfbebd7fafa4b7ff5faa606ebf5ab36ab59adeab5ac5516971f64438a3713852e7eb5519f2c08282b8aa20eebe61e35cf82d82fbedeaa40f5bff6589610ed1e7f73b1d7f77f351172c0d9a228eaae9bdeaa3dfaf118243eaf2f9a64e7d15ea8bbf62e47f06be4d7f65896003fa4bc10fc517cddebbb83d055735e866f8eaf79589610c70f45dd5581cc4ac50f459e59cdc4f12686c5468035e9aeadbb6acfce6353237c11b1180a5d774d89bcbef573c0316f6faae7d75dba8bd7ad09caeb6255d73cdda57bbacb2a7940e21e586bed0ee1c1ce6688799cef27edcf9710623e38bb3906df8357040e477774e783b594b4c676fdab89d80cc4a68f957639e7adacc5143eb64a5abc9cb1598871f756b12cee7b3b6ec0e63a9475e8f27c0f7e377f655ef18ef6f98258ab028d9f4d9cfc6415b24236dbd192b8e75b88ef86bd1bf66ed8bb616f67314f83a0b5150cc5d7895ebf3b106f596bb5c55b5b3dd266999a6aad4c160458cbaa5b437edff7ddafe75b886e6fb9e71bddf57b3ff0f3bdf72bd4fa6eddb02c71411ef99af6ba3431afdbff8a739f7c9c4debfb16bcb472b4f762adda6377f76692dfc54a1697c92f8bf956fb3a72c0e63a7cbfc9907f6d7cfba64f2ddc3f7e18869b87b50f6bb7fc62188621e68561188666183e660a6b618d36f2fdd146bebf8ec113d5541dab664d4a45433dff5641f8a256ed096bb49167dbaba2b24f76aa46b3ba9e7fb4553d3fc75ab5277fdfebf57a18fbf4104f3175a8babbe19ff045ecab5a1528c45a22d6da9b244b9fce7d7af86089fdfa410e32f5fc58096b611ed6aabb032c65ba2b8ef3e77cf3d7b7e6bbbbbb9cbffdd4e22c0e87c3fddb6cf766ddacabbb59f8acaa63f28ef58dc5ab0b9410a8148c98505ac8d0d40c00000083170000280c0a08849220ca71104bc70f14000d64b636444026124c4591500ca3200862188061008401180661188618a508d2c8363270bb57f4a060cb8186fc0eb727be2e2c7ba3d41addc141c370b51c00c5cd01efdef00a663a1858579720a55db0a92c2f0b092077509b71011f6215b5cb52c27e28100cd30fc8e24632873988c46f74aaf841a42c3f360d5601a84f1e1229d428cfccfbe47531fe7adb45e64c72bfde2a8bcfe3130b2cc8a03c10381af002e0e908d533d71b02f53a461b7601a7eb74a00178356adfb9eb7ab663ae504049237adc6bf4b03f6f8bd2416c36017cf227bb43b771e7bf1ff84d668fa32a32c1ee3eeb9f09da83aa3eecce788fa38891df1a94358667c92a9eff46763e3700980f2acb57ddddbf5736092ccaf990bf7f8be18cb69c6f35e43a2ddaa39b9a06f5a88e776a908b641c2e7c0bf554837a5ecc13e2c395faa2fa60a8d8ac7b291341234bf44b50a4717f0687faa087febc81fb4d0e5e6e977c896ad8f7a2324540a99975fbac9fbe151c5ef175f871a374bbd6176d3fb8cc8ebf68b0a481032ba903780b5368cd800fe8e773d2b8dcc2d946956113288e34412544483ba053ea92ba0491231e65547263f037118a87063f5c166d5389e75ad47a42f5332a3c3cedfe0c7b43eef50b6e4fa1aa6fbfefc175f39029aa00a5c30f151f504e73798585774ea7c40e52c473d312dfe041311005320fdaf3ed693f563d3cc38b801261c87ee790e7a330c2f71e30fb248cf59f8864183d4f1876ac8f27a2d515e66388eeefeee30788d9b53eaf233be7988e847088e97adb52457bfba83e9e7638f0aa04b290ab2ac201602b850cb156468cd8b89ec4281dae441feb98516294af78627226082d3e71e165591d88581a9f447462a4117006d0f2f532083d318a08f1abd7a1ca1de77cd9447dac73b13522733f02b5423b5eaaf38ac5bb1df5eff0424915bdf6b521b783c8efeaa6da949509b2e8754e4b44e8ed44afa1d20ee6671d48694309789d153190a7ea8c6e212f2bea21aecf958b2129ed22c085f1d2fc1eece328edb2b6569977dcf40c13053435d35ddb83543ef3d446393bb1e2225702d1200314c5974f23bb4cee3c99ffe4dd7539dd7ca1d10acbe03f98055d2339c861f9e2d690a32d2df162536b95ea7b5141d0e46150977a078c55d090ece91a31da2508c368bb7cf17d7e1a13eb48c334226c5f37db8ef42fd47cfe8e921c71684ad5be97a01487a35cb5b9613d6f10696f715541b8531001d241ed9c40136c6d8026876dd30add95c84d6485e6224adabb1e4d64cce8769f9a0df08cbd7b6aa3be708d1079b46b7ed17bda9d092c8938b0d777bf9ff1e391a246b205b0334fd00b46591604a90bb25f33368ffbe30158d1aa520200265a41ce1d7be7c794c7ef0dc912534d79a3436e685df9b6688ec7da338885ec5cf1129db8b24433916d0d0ccf18dd9e608b483a760fb2e20852e26a25bceb929bcb7141f36f93c39ddbc19b27d36504cc97bd0e42d8f928dac7b03ef34cc5ba41fe7f63b073520379e2f223bbb66125aa429a8940c6c16e0944b8362492e0f9288d4a0d9a06e4d1873c0b2bc31a3e2fcccdeb0d623e653e48d4b00a2d50dd687311442ccf07f1cd6ac33933a98638462ece45214a73ef295690bb35c2afc72633bd9670e961fb8bf04cd521abb509c5fa4025082a6342aae5228936a21bba91d16d0762e056da54a84f780fdaebfa89124f8e2521fb5bc00b0e861b4e0de16f79f1d52f1f22858f6d45882eced867702df6c584a174df2b5cf09a974cc8ed5598f62577efe82473d23aad073dfc7670b054714852bbdafd4884bb6cd1da92616b5a7639c4190118ca67567e068b4a7236b69fc379032d0f300c75dc517988d976544448446f0b8cb23b7829cd8faaeb8996f7d90f3c7d146ebc92ce5f25445107312a14fdd25dea6458372446da4874c6860bc5e34b02cf1e08cee1b60864cf859018a4318c18712141cbc1e1c337e2b02e273a5b94eed6bc0d19bffd5b628955fe24032ca8f53c73420d5728855d29dcef1b817e17052ea8e5af8748f859b220b9c691d96bef521b5ebfd0732b442bff81041cfe6a6134c5a00c3ac04880d56e5cca0e09c91a9c6e2ab794a4a8a7c38e5adbac3843dbdf5f45b421354c86bbdb6d2c03345b5d7b67c0ad3eeaa0ad2fa47893aa516999aa21e9743c4342ef13ff0d38082b9cd4821d92177a1229762fabbc82349cec045302cb161184e4c097bc1093dfe838e6cac0edf4846d9419a0a4f24050227921c21080531b73a901f2576097a47a48d3cb1556d435efdc8d271320288455f6a74c2976215171953abc81cefe8ab8ccff85e4468dc528c7d8850a9ef3486d97bd119c257661afbc985bd035ab7d31d9ddc3e194431886c62e640401f1cb92de530d485a2d58182c18ec1031bb06f2887cc8f8d4879644a43d507888b45d2c70cd46186527453ad3063a2ef092ab2d23677eb24677f34854e342b71af1aab8282d1eca175430a30d9de1f7fb165a7bc4350e3b095cf23166b4a1870b11165a4d7619062902b4995ccae820fe70213f52cf16f5384fa0e7f500e7c240d3e9ad718f669f4e75751948563103eb93b8921d13c1854ea2e125238b55758d63ac02bd8d926c013f30ab14375c6896b2acb925dbcbf74edca15ab71075ab21cc300470a9791573e76db13a189849ee089e1e25a429edefac1d79eaa5582dc4ba4f80dcabcc6d4ca94c0b0476125019ac8530dc81dcaa32bd5b0bc966e96b6639502dd47212eb0ea4c15de156acbebcee2832cddebf7c25be6d789f43d864a0953bbe7ae37e2e2a81c2eaec2120a3851aa458135f8b160ad3aeb59af0190902e02807917a5aa119831e7bf373e25b4e1ca771b7127b30c0e29acbe2c928c51624860b69fb99859a936ca8442c74ae0622f1570876ecdf563b45de29efedabcfbb42683203dbf9590c0785a05890386a3f63d1948904e404a39a1ce757290448f5637c7ec5d08bedec2ac471b342a87b05fcb1865183db81ee2ac4d0af42d03e14a9064d68b83bab420d3252b17c55c89dd40ca1a775f0050abb7e31b25f0508b004aa425c3c5e63643827cfc9b0cf36ba824bb0d739e9c103f9a7679fd0ed80b387bf9c729a037473ac5cf058c676dce2782d9d6b93e112b5001ccfccebac49e9944094320a67fec938470ee16b6bf3a643ff83e352afc6d3ae630ba921585f0c0eb59205a4c9c72b54fb3c405e0b738a4d365c74ad662d8e94bdb9328a66ed8bcc6abf28055e980564e5b23482fc78829685979fd3cc606e9a01bb2aa74fccd1e6ddaa10a0f68e9d65a1f3797b025ea5f49c0c76dcb8aeb2ac856bb07f104ea6eb75d6dcef427640ca6b7a30c73ef042ce821368bb43e5c62bcad17f38d17bc4d6e830a75451aae1dde7b06a0c654daee466cfe601634ce4e9f178b96c5853418ea3007231ac044079b0792002fa8e21c4947d6ce94dbdd18468075d6f5b91afa696923cfec93494beab27f11b50132663dff85f47557104025d50ab3cc5ab817964d605dffdf4f40012917755d533929f8af7629e1fe1eac7a3672376e8cb49e689f0ba950cf1a0ef0b2c3adf1d41eb4be28c5ec345960d43687305acebce722ed5ce1d051bfd30ab4d6c7a4b7bb8493ea09fb57777419e300189f30aa9f018750684fe8964bd7950c3fcd58a6c2273c447aa879875933fefdba12f46ae5fac341ac5c85f807b1042fe1df38839883187154014a60ef630f2a4ba98c4998d8763e43f56970c0f0dae458c7d95f075095172c0bda6c8a51d75259aec47a32f7b040f32876535c7923a21499b5d0095e7273acbe1ce3548e577b989c813b966e32a87f1151b34551c55a7c6d4d4bcaeed95478438c0c755987babba45a8c681e398345ba24c20906e3fd34c16db7c88f8a5658092f4d0261911ff728c8945c79f89801f83d07b26eee0471c5023808cb576fad5b4ac4f09114ad68c2b272cde9c47be88ca33b14976b1a4903267befab22b2973e0633748867c7d6bbad568d699a6262d96df1309c1bdce110538fdc28a305fbf134c25051f01c127913ba3db1af2c63a577824b3a0bcb03a15345aa5d8f0846cfa7e364c5e3180acd24c1e7895e653171f33e4fbda8602877b105fbf1caab298fe55ead4884697ba42f0f3ac6822dfadd93f70402f137354b005325f599986eeb206b297286a63d447108dd584c59d0d721a306ece6e15f2a20f9b338582e2fb3d8b2b168db2576a6fb92d9356afe341da8e61a3a5202d7d516837bdf48258890abc366d44ab6ad1e500e255ba86409a1ac6568bec91268dc07b87bfb1132fa22888673a1ca14dd06fe0ab17f0d275dc8f293d369755a22910b7092259dcc3a21e6ef13dafcf4ff71ff9cb2dacc0926e45751dc7d90880e1171104e639e69c3ea84a75c5e8deca981e7ee10570b19d03c26ed3f9182725af0ec282697585b61cd09300e1dc1550cbf15765396ed06aa2db953315c177149bc0732a4d9d11c751faecb41104238e539a1942732f0df872827808c7f3e15478e360f31c4e5551d65fc359cbf9af3957e671a484b2935570c0f9c399377b8ef4dbd4e773b0d46b9ee7103e89319382d3c97305beaefbd2ed7a8481000910a2df181e9218c0b16460d769738e393d96ea067173dbdab02de4ad2dcf63520432f6ed06253773e7d69df9c79a41064c6d19d162472ab0d8371595149b37d7708396d1902d53375f61e99cc39c1c798cc9f7c5e12642248d1b20be7c6837e37135c3004a30d407d37422ddb9f8da80e3e8727448973b673b54db768cb2cd09ec0d3b7219dcd01d58b679c58e758346be053045c251445d94223de462af50d160c2b3536e05d4dcfbd05e562d28f75e92052e05d994f04396be6ac232b296b675b2f1f7dc5b020a11abc30584ac44dd3cf5513e3604e6c389dc823ca945cfe2c4337ccf4960a43221ab58e6aa66c0ac060b87d91a6f878fa95be4bc2238c67e036bc4d9472396ef2e8629fe2a0a4397950fbec781148613d1ec64bcd7d7534a43f7ed9a0dbe553c66823f23e83fae71444f0dbac8c4a1ceb3d742279ba7e66c54ac8e8f6b9c23a289782304bb414a05c9ed517a202015d52314d2f22539203b7cf77719d62a5a0ff05cdefcd5a005f4b65434d406e8b6a0551553340e10637da06abf9aae9ca7380d921cdd196fa54ce2bf751177fd07427d50b209c6845eb009059ca6a8ae21dcbb7eece8857b5da1717c33aa052d5b18cbb9cb6d63186cde44bbc8559f56914112ef2594d4f9a530b187f476873f9001d4308854c23afa2f9d329f34aa72e8ad618080a5cb5a13469c6506b2a210e31d6453821c3b83305dcd72e8bd7c5a8d57477c61cc50e2115f50270ec8db5e3459190a8a58082edae2be466c9ebdf0553d48881b7001dc1fc890d38486674974137841b0d2803c08f1151d4b09f185b4b29ab83d171ee2487e0baeb3105f10f3b34ed38980cbc3b47599095b7c67d3c1b8ffcd32bb96b36b98bc13856f203260b612950901096868c71cf770cb845ad580b263cb74ff5338ee3169b2db1384a4c2f47634caf8526edb7191cf224377343b89d02cc6093796d92b65b199d1136a04e1d89496dc1f46d988dbbd9ed99f00c58796bd81973f0102f154b2939e23b424543471827e35b1a3c0cf12829a98c9c01ee21fe273ec70681cf788594cc0f8aa38d8c149047b59cd132a3a5a9d45c8d13e581445dd7a6a15d84de210854b287af2f6ee85b908a9a3f34ecd07559532a681a20ef8606ee5f66ec7819aa19cad6b89ccb85abbb114b30fe43d77a18515b01e0478dcf64f01714ff18772fe7285ed91f3e95565106401560581017530676f19d8791afeb6509fb1c816c2e7eb49a7607daf0e402463d8e53fd153732630d290811f95ae33263fad5b769e81b2b1f56d515d394f46aa1dac8888261ab4505a7efe60c51b88c19b8ed5d0c737795f1bb65ae9d864b354e4bfbe5eb133b2184867fa60985e4f7e898370ade1a6a8353e298903176cfbee5e70b5ac016795d6b4a0a53d7edac99befd3b9446fb047504f567b90b787f45e32909ceab1e8498bf81b35435e551248ed8418975e5cf9764eb1a72cd3aac304e13ce2f5f6c3564c2d90d9d3897c7a761672fc08535bc38f57c4ddb85436f255bbff283baa55d90a03eeb4f5ad233346d53a74ce0d436b593857e78373e3f7bd68af9aca073b53840cae16b87c818c8d9a1e38658b4027f6614027935ee6342708ac98960cb8ae5fa3494dae5a2e17cca50a2a96f722572438b9474b61a3d4b72dc420f7dd4d070583bcd729d98ab846bb0c6b85a86962758414ee162485487b6dbeb17ee81c9863f1a6411ce8c868d46e611ab6d7e8a5c44d430bbb409f36a3264c0f84bc88707b9132787a660acdb08764eab25e2f04bcf1a2525b11842bd16da17b2b70c3c4c0b68157e6a1b8e37a2c6dcbe014589841d181067016082684e1d463c69fcff880503cd54eeaf746c342d40b2224e43ddd110a574ae2816553eaca09d4f7320c94cfbb6d31086c404bf617b8177957b140640c91e46ee0e9a237020ed14edf64ef66ac9c501a6aa2c44c9a0c3e85d5801b160efa630a3716c9a90af33cc45c10303af9a5c1b1e9731abea4c3a4a58939a36c43b0be4854a89c0a8a2a06fb043b7eec0f8e75b85cf297e127aac75db2bd9770861dd7b831377c72984ff9ab38a7874e79468b6b56d6cbede32ee486292e9ae0bd70d1e41057634f69e454fad8991ebf63ca36465f707237179e7d1e40e74ea7c56f0a6048396c58832f0befa78b3661004cc93b1204cbdd581c10f585021dbc0b7471c6a54245760fb95ccd10ee8bc980a3afd753d2a670e62a73757c81f4244005ea69b3d89b385d7260780c4d0b85830134c1cd11e668d7de9a313d8366adfc5abc532308a2004bad050813384675204b75aa7265ec743764db6653d77582042166a4117289e5de02687a93a629b83d50dc34a203d63ac7250dd269fcb6a8f98224ad5638bd0b3b2acd5fe8274988c2ae2820e8a523b821136cfc43c563f4c46a21679dcfb78a46586a99a47a455368f6f5da73caa6b3f6a51288208451393a6feb61b80116dd55a91a104fe01585169a1d033ac8dab2e859a33a19f6e4e1ba635c7de75a86d6aa4eeb630f6dbd7045bf62676eb3ee954c7e8bce5ee301aeadf82e36dbb1bfd33214445cdb8d5981b566057c8815ff475c9c4170cc271ccbecd626b166ab588158e3ed254e468e6c4103d38e006ca5de51282cbd60accb359baa2b12e047169e7a86d4d7d1b42cf237bba6434f947e41e9dd1cf7824ab764dd263ca04417ee726dbba3d66ee44b339b16fc07bc29bbe66da448b0c4a52e8da18d679d98ead8b0baa7ed45634cb104afd572c29913702202af0d8d436ee4df65e79ee980fab71e1f51affc64be9d89cbe4e12d0fc04e39594678e8bb67947044a578beab83aa0b4bc6b22034ea838e5428f9f3989be98ccaa1111d2ceda917901f01c8e12c02b1d3533311c09a400dfe0fcb9b02dcfff2b269808adb679b7eedb1006581ae4b81ab82da654b5d5b7bc2b602f5a7ed0cda28d353d796cd8b2040d080e515bb76981d8ed71fc62c90e0973352984c501fc27433b9e628bc3fbb4a529f8cb935f7f6c2e535c4582879dd521da29c5e8d87065ab8e9d5168284adb081da4b863e4779c823ed031a4f4c5c415a9d2e6630b8852efba5824737b4342d54db123b6603406ad2b464b6a8cbe683c1204de66a0b89e0c37b6aa5bad754c71418ef04cd21a2b6c465e2a91905828066a1ef4ca887e1559b26228660cd0d220e8b83a72772b68640687a4e3c09b65247c33bf784088fdec7c851a4be4606a1e62835d93726c5509928acb6fe31b681e1538aaad2fae3e66cdf5692d0ad94b4f0ec7870fa31447690758d430e1ed9c811ea9156f08c0715f4720085cf2a9139dbcdef8a2dd6ec710fadfe71918b5b8620ddd301a57aed40308c974ab082a26ca9bd22e83556090cbc4e4ec6e4711d4e5fa9c7a8489c4be700c873ed3a220b99ce05c949f633819bd7ae2f51327be004265acc04c7236d20c1684648cf8427bc5684c4c5a8ea613c5700e7cbfcd2cbe6f9118b9ff81a143ddb3159ae11ca9ee1f8a0cf14a3e211c825acf58d9b3926d906cc2436633bd462c55d718390a9666ad88c9b37b4f8dabdc88085b14e692537af1507bece0e8fbf4442ba7866ff245cce725e331cb9ae3067e8a1c216a7e55f39abb948659a5c838aec692f4fcad052341f5118705a9e0b8bfa7f272a74fa75a5aaf1d92992fceb4a58330b50b17c03b9cdc636ea2571bd0dd61676a3ec2d030450a4b3c64de6c3c68e0e1dc1c6eab27e80daa98fde4753f8105bb16dac74373b66119e6bf30be864e2a595b43098e5917520c294ab7d4d92a7ba0a2d4310497c29540211b942074b2e4ddca8fff7bcf5068cfc8cab5e116fc87777f48b52ee31dd7a81ca323e90abf474afb399914017a341b8dc12ca7547d441ea6283cac98dd065f3f275247915c7cf47059aff831106b49cac830cccc1c0424d7cdd09d8ffadaf615175b075bf2ec8ff8bcbe910e19345cb74cd8693cc217dd81b1e901fb543422d1d5ad657d79dcad9ba23654de7feb2911cd0b54e394bbd5b7b53b5a099e7e34bf4235cc635ee3bb09fbccf39017ed35dd7057b7f164be448587788cb08a3087a871e9598079ea5606e3855567f7d1134b1577600a6a241b2e5f822683442d8133e4f6f31f86c8aa089ce9b03aa96a0116ab081209e6052091d6019c8bfd4548c401fa19551cb1cc0fcf1f4efa97dc627cb110f9b981a8ca9f603274ec2839f36ac98c0b18233a8c1e7ecc1deea60f10d14633870d8e8d72545d7d79cc494402fcb95fe989401cc34b012f214156f084a3b4fd0189e8c7072d4335d5c8a6264f9c5696f1423e4764c9b06597fa0c4c8868e348ccc8faa31b27c3d99d116c0a56c35fc37f7d88af955a68a83848cb547329cc15ec6bf6384869141fe532237ce4c4c2c604217c566e437d26eda1a71e06d8798ce21a69768692fd596d28ed966490d7ff3203ffd92b4057149adcea0b8117b0c2657c01373d483b05aee87b43fc3f37043b318c660b4efe8a70e75113f02f789cae2a828a47b0a357bbe0e7adc64e4d826d6ddb21682186521a0640c3b7c4e21196d61c8c12b575cd7b4ce4e87b1125d58e87eb88538a19e22e295363ec2890a97b1260aedac61c4b6ac02b739585dfc2e3663f312ebc77f486ca9bac4226da49a6a56b7be5687bc59eabc05ffcca2d59b40f95c1d5ea743d8b4f149e1c2897f4f0fb8c37dec40bedfae563ad8fed96422e131f80d1b9eea671e0449a503c65ce4076148578ad864d0e31b6434322abd06ed16ec4fff66a621a405e06e77228c01944965fffc13916fad5eb06df5751eca676584279717110910d5983309113c6213cba6cbc9e641018e3b1a1843339d456b696bf56343ccd97ca4d9e4d067a9ebd03258711f394ded7cb472e900e2338bf0899d934cae63d326bc1d1ad83062b542dc05d58bff0c7efecec9497a343ba1bfe5b5a430a9197ab3f87bd3b481165278e76454ba85e2a30b5e3889bdd5cc95fb0d4aaff25c8f3831949e78767c74471a52b893de92dda2c45fccd72a2575bdeb998307c732d74037d8e5c0d8ef1abc3429af3f7572aba52abc6c4e4c3817795e1cd00099e78c0895e495fce67b9b65c3a79535e4708b9f503836d3e15d358346ff034446f1c3774391e156003c2da16343009de71095c2d19230256c076b2a90a98487397d62abd600075d8cb6ec268afec5137222a2a7589ab29b83a1fcb43b83f4bdbd50d9051c8c5e89b750a475fbcbbd7cac43639ef247be7b02a2eb2fd9e50cf4255602b3b8525abbe2a2c399142ae55166f8d854a1adbde03d81c027b01af11c236af6a93ea255e3d8f71fe52d64ee7b9a3a4b727115d6968341edbe7a9bbc8735b7e1a3d79a84b974ae497a4fbde83e628a961b66a8ee99262d404a175e12ba42923081cf146b617dbd2252e758a20a7d71252ebf3b2d521c0274c4f51dc7d1223414706fbce78158e332609f561d08b793f24c36ff63685a6728402100bd0b3abddc86388be5389e11bba744c1031d435a0d9949a985cb8c833cffaa70361702d38203d7f4a0d3ef061a72f36eddb0cd34cd893118e995bd50e6c0ce2072224c420d5d39e8b90e0b8d6311f8e4cda277b867ba9328d1ea4e26dc357efe999f57e99da01e5f469dd42489735f6c52f8e989341570dad6c4a884c9fb964669211f53d206374a1006f1ae5ce17f1e22fc59e732b39570dc2c05c951689d3a49eaf2d16be456e9f5b4284ac299d3aa160e2a7fc977fad773169a08c77aeb1f3457e35ce18a25c630acf22f6fc0bd4e303f86bf429135cadf40d437298dcf49d2368f0e3a01ed46c843df712af6987f79ce6691d9040e869c8cbe5f3e7c0b5105f648806fabbdbea05c3a0f6f1ec768b1f2b46912940ba1595752b7a829dcbc9761fd9e92558b5afd4e53de9bc25dc3f3e621ce34420e0c005f9ad869dc8477d19a7fef9ac7a24406dc16d7fb561d84543c357085c48d71fee0bc1dcf244c691ec7c4787bc511168b3b85db2495970aeff0d465347848154255ee9bb39033a2aedccc9afd910a3eee95a28e75c6935515906a053b5ebd5bf2423abfe33df1c66eb50cbc8e2b1cb49d960c13b9348d4a3155ec3a513f2ee930da85c260278e7823b4eb51ee909f10444ac0cd463f0f2d8d3e0128e3ee99e5353c6ddad0e46727df2a3507724269cd4cb4c3d8d80a02eec20d08f7548841fa7393a7cefda839132409d56ee89bed06103f5acb4ed75745641b9a1af7d630b785dcdef7344f172c5f2a185eafb6ccda47cf90b9ac1044ab7ac50246e94828438f19d87b27c48f6d7f824157784f4fb1340f67fbb6d82c8eb084e77e2ddd62873036ac72e1fe78150fbd5446c64dc07bb9008c40a067783cdd07ec3318235c49477992cf81b4f626881b0130e8cbcb0f139a769e65c36ce5d3ef9438eaddb8ff33aa5428778bf4339035869e94d0e803d665ce94be9142aff570bdd0262bfa1e5228f9219542b77502d577a9c3c4b6f71e6b16176620a172d631aa40053419098456dbf037993249681bc2e7d665c8665b11cd456fde3989945389f5fa90ec038594588199525cc53dd67a7f603ac13abfeeb93cd037a919838b449c64d5b154f9d73dc280b33cc6746661b377c4034f04ca834310f994a257212b3c1160e1884db61a3726b659c9e706d28b325201a8049fc96ba365c279638bdbc789ec35fb13632ef09e7933fe40c57f0b8290bdbfee63a3180669b30495a694731b72266590f85de61e62d8a39f47b4df6babed7950c87b0c2826dd99676f95e4823eb9a199e0a580a0f437c11c119c928e4ad7d3a20d298e4f1786a057438ddb83d6d70d650d1232cfd36d79f7a1037f854721eec710a04c3e8e631070958b7d53a0fd6c72dc6adaaf3d715b6683376c269ff1e41da121ba3078fbfbbf3785bcc35cdd6ba13afc193c15e314a8b27efe8c6112a0b2de843c1617693bbc61eee27b83d072e894f7b94ab8dd31f4b42cdd91faa892fd0506df1a253e665d3828c0416bbb38676495b584d016424b65dc26865828ae384cb76bd3f6f5bc44d7bd62f484c3d4846be1de706d592a566e2a407025e57a3fef1dd1558d290574917e315d5b674e52a5964bb1a3bafae48d581f86e4dd3c7c4d7b5d8b7fb01be21da2d29718d67ea73ffe46406a86233551dfdc3e91286e4535b29535707fed2e4689c0720d5901fd102d0369eeba05800592fd3a5af1eaea2095c7b18de73df0ba09f043e5be23ef53cb1b8e9d2576d5a984d58f1c3adca9d84737bee50977ca00e6debf7d74a0e37f7626b8959e462efae0dd4a43138cf7f9b6f29559899850f61835f1ee21b0cce5a02837c319f9f90a70a82f507760e671474ecc9bd9e06ccdbb7671a69117acbbfb70e0ddaec9befde9c1bd179f4dae6cfeb91be26ccdeaed7d2f78b0b428bdd1093062b5cc7473254bf5309af3ba2ef60816ab3648c3718d2f182ff1ed237f05789a67bfb9e62299903e8cca16466f66bfa0b8eb6398c34307c0a2d4f412c76e919140f7c100ab21a1c1ea9169e4bb22c973426412768b2b7de98d7e86c96db66dd983a5e6ce1b08fd4a459a56fd8fb7c3605faa9ae44d85744f22427f9f6ea6290d695a52cc914fca33044a99382a93be66229258f8de77418393376181ec9d3a135dfc9fc04d5993a9aa5dedf8728f6d670d643597037ebf985a4f563eebe487fd9b8c227770e4655ab6b324354c1e94e17ae4f89a9d36ec6f32c284a4b6239edcca565a75eb49fa19931226a470926094fab306427f8977762b874e492950212043b53644dd3c937ceb499ccc3345ef1c09932d28e4c4a9002f7ec2b0b1ea751f15054f090a205928e4e5c38a564844b860584d662ea279bf747075e42d723be90d831207aec02ab04a62d7754eb6d8aebb5fb4f4f5c896c81345efdb7429e0bda34fbacff8645df6d21f1626ad5c81556095acd9a5c3eb236d51cb456d18b9da012ffe979f345d6f406ad352aa810a100fd8017260918ecc404e78701464bd466cdea4405f4d069c182837f691cdd286d51e366dddf64c92b79eb4cd1694236150aaef433a548e487299adfacc9727f8391879f24cd17b4baed51a78092e32e8d776a09f843b5b6574c4cd721e36d43d683d8f5eaf3398bd55f5900c3c30bcd2341a117b232907176ec265437a4eb9a9fc8fbc529e34615a918f48c7569d2c1f3e52d7b17c065a0c7f9d2d52a0337563aeffd3a338f9cf5c73ea20fbe9b15a39961aebda430ce915ef2bc667b503431f06481931deff7446a3740e5f0b738d0c3bda63d323ebbb86739df2923ac9e948389f5b9c706f186b8d53a12da8e4ae8ea3a7c3f790d5e7d2aa499fe06ff825959f4a787825ed29ccc65ba89d6f9fc28ff98a13a4221cddded9aafb07350a27bd05a0ad96e00aae0f2183ae2843b86b42eb62039a3944727f39cf4876bb2edc1ca99415560ad2537a24ff1f6fd6d9297c7003db96cf04048f42e14eebee902f18c42818fa7e9e5146a9023d29f607242af7c9cfcf07af5c1dd8463fdd52864bf6b8e9badac2ede4fcd99bb1d49ac263448e7cb0fe383e072b693997b45fe8bc50220ec11dd884480b9d92573467424f28b5becc5dc73fe36a70106048e7a0fc2db8f7e86ad76d26d3f83e3f9bcb9f0985b544cd324432ada79ce31d104c2c468c99680f0d92c1763ed8c8d7014c0b5e6e559e611acd6482b46c2cccc538295d7a7a81fa954fe24dac17144191197f4c666ae37d18161b456acda8693360fdcbec7dd4179abf83fbcc9cf990407fc236bbf5bc9bc110d2592a728ca824ca640579164284909f7657215cdb15e718b0223a51d5f615efa4d44823ff4f3fbff1798c9d09b5753a994ffd9c29eb87bf1aa81507570edad226305417c1ee94fffc989b88ed6f4b653d81a347bd4ebb1e2f3c5bb896939cd0a7ef875a410a65ca4c27d15a36bc6d873c1ae57f0d54d04138265428d2458c0b8bc0c6945c78cf61c537ab02d8f1028ae0e2d40b39c66867764322836a4bfbedd313dd51e5c8dc704ef0afba3c34d072ff6d008fa97bd98a689f3372e82d1c2521ad6ce38c8d50fb89fcca9d5863659b5c2b3207dd779a1dae4df3d27e27d4d86d748670617cca280483b1f353e1898ac67663c85f68a053f71a885d9a8d82c5a6622e495d9993cc3954446df2f7a7266d2a23116f0caab39221af268c3ca9f27e2c6ec7666c12fd90ae899587051086431f2fa851b6db1260cb0e3c3f96926c5dee3d6b2da9bc1296609d120b24589aafa5e1d5d25385c92270554e8c15a4634c09a102a181a4522ef51ae9b30f1297a6cb89311ace108a341951e02fe6044e1ba8f43cb7b73bb8f2ca3162d05910fe129d2b92541ab32f5d2d0bb10531eb71d8e025838ddba312d8193997b9a0b2cc8a607b8c9d1027d97b4235052fd595ddac595a129fb51395425a8184e3a6e552617b33085422c4656e45c81a4479f0ed82c02929d5ee29062860942649529dba240e8d9061c9b6be6067d88e671daa4940accb364e41210363a4cbd0798efbc391abba000b1f33330b38522c213a4738d2d4b7a3cc4a9a3e17a4d8c9daa4e887d2aef46d008163a25ec8b36061f23b87ded3cc3365965428e69d270e175f9d77fbcccc823a781d8f83c82272718d0b27b6c9c473b68996f784b152ef302c542198ddd3ed5e52e9a671fd9f711bf9877613f9679cd401525fb1096d017a9552d937f59dc79c07942b27fda244c41567e5815e1efea514914a8b108ad16f4a3218e5c3ddaa3cd95293251298dae9e7a383a84723a2bed42744f620586dc0295347b76659113b4808e4cfe1e9c1372ba793cc8331591152043070f90af82d269a0a80179f4b3057c551b1890457200912d965c17529391cfa0a94beee170b4f580a8669b7c404346f408d32ee6cbad356bb23d9dcd150762821fc9795dfb51fe9d2aa7e4a2d25d33f28abffe147d1fffaf73078bd2e38dfabd6a0a4c0bf59fcf92a15a46cdd4b0b22aa0025041656e4bea63f4658bb74b7843828670d9b72946a570961a2a2a05281c23ab26440532c291d5c51345ada30a7c4fbd39508062ab525861619e33ff173f4affd6397588cc89afa67fa3c7d2b7d967e104b09d74ceceff787a6db9a56d84494cab950e59e6cf713f857bf9c7fab2fb67ff587fc98502a78d85a95103e2d6b1f9d928174a3572981e46260896051145542b8ad24f675296558b6a6a6444054d42e31786a5cfdb4dfdb87ec03a338cc1ca8e2bc44f085216489f9b32f1910307d3f08258aa8ae11fd1dbf903ef65242639656bf505f94d2c3b34deb0751c980dac4fde097201eb48d9fe05f4bb395767fb17fe9e3bca480e6ea54e9809589ed67a7c4b040f55e3a80a86af84d7dc3533f2377a413198540382baa9728526c2d3f9c4bb1e43103fdbffebdfe5fdf5effdf2f5b29153e902ad3e5207831a3ffab6ff76f4fa9c046d1bb8430c1007d584b06422d4e971c84abde9522406cb57e93bfa37fed7fa6545064c92c21f0b478fd4c97087eb59625034fa38b92c3cf624bc9824f552d0d7687f4a905f19043675daaed8e56092d748024d2c61efb7fbfddfe4fffed4a097f66f13bfc862a35ec5bd7bedb8fd412c1bfd2b554a1c775b5eff41baa94f05759f89dfaa9d2cf2efb8f1f504a067ec5d6d2c34f4a2e4a0b382b57ffd38fb6bf5fc9617bbdf521592270acbe9624e0a0aef4bf7e947dfc4b09ddcccd9fb42f4e69a154b14b89205914581a4d6911ff68fdbab26379dfca3ae9e44fb56fd35ce79206e8c3a0ffe22f85c083d074c97774d105fb29d825e7bf28e0617a82ec85153aa14518f12e464a06e04cd77f4209a1fa12f3effb242c29a0b9a6fc8a5fdef75d490263b6d727f6abfeb9ffc65fa252c1a25a8892816dd1b47470dd78548a80dd56c28d18d5083691b59be03876fa9a32a965a9041096a87ee71fdcdffc22fb73512a00bc684c062c2704ca9b8a7d5a80d850491bdbb6dd26e64183e249bf76f309f63a7fc54109b3d4c96ceebd1d247236d8452f695c380ce5ec1d93905543e64dc0aaf99da9adfebc570330179c0c109d6d266229c3ca96b4155b11636bad892412d9ddddbd3349128e07b607b807212d4542fe9303089b04330b75de728234d22051649ca796539ef4284493e67577f7e898284694b973aff5f1e74491514639a7357d9a5cf3cc308100dbae0631d1d46e8fc839e79473ba9c7efbc271fe9b2e5ddaebb2d7e34b4a29e5935f4df2d9ebca2693a9448a52c6ebabc9815c25a528a5c9ca3e4a19e3cbf4659c94523a4d2022c4103d122bccb5b81aabab2e4e88612ef041c4bcb917ccc5b93897df008ef66615a37b8f958cc3a1dd0226ea105501e0c7ec3d4852b6bbbbbbbb7c77bfdae775ff182be9bcd6eeaabf9252367577a4826c37c97e00464c7b7054a56ce952685b532b65476ffc2fe3fb016cfc7e5de176d7d2f67acb9ad62763ec9a935227e3a67ba90ee01fd09c7381cee54281009310cce9fe4611e440620128aa02c4772ece25045a74252d72aa0a10ffca9e469dcb36e96fd3be6895cc941d2779abed9617e9fa04a57c308278b4a6611aa65b1ac659663b105297d5a89a796fcade6b4159e51f9f38ef957706dfdb2ff25e7992525e79afbc2fb74ff8e5dfeb685866ec74336ff7e23bef9cd339d1bbd942de6b3d7063947346db2ea6b45b7ae4a551775a7b313afba4dd10c8b987404ff3a6f244f31d766fbf7cb2ad448b2dd785ffbebdf57a4ba7cc52defb9bca7c0bc649fa6dc3400dc4ce4e0e247290f336cc9d33764a8066348c13311ba661eecc4194853213104ec3bc5bbbe5368711e0494248df3b4171b0e17b687220f24d4e44464da693890aa7574f504cf06980f1c454e252ea3ec23c0af1d77b859ea050e75024a4f4520829a42607027f248228b4dab9d77af8343b41a9c142c38613945bf1506a51937b1a7ae46ed58ce85c167d07b0ed5e4c34aff7ca46a5758252f150eb429313613dbd228e6e45944bf389b596fecd96c2afd58e36e39b7c9a4ca612e902d5e440a8c98988252593c964b21934f9f469aa764c25db1f23cc27d282470851adf52594f2c2392bf4f0a82412c903d6a0c607a3d16fdc45746b3dd523b3e755df331a2040720b87367e6628253ce6c4ebdca6e3a3f5b7d28e3e82f8ed43479c932382c82aad71e414ff9039deba3ba7c88e6c47e6c8dbd34ee09c6ee32929ef47a7c3e25f49e9acbd765a79ad470c5b027a57f2e82538002d601f3e8919a6f78adbca6ddcbaf454bfbd7efecfbc794ab3983b2bfdca3a0e53259b95abfbb46eb35534346837b2286f53832098ebc75a6beda7d64bdf4e6bad7d25586a843373dce6cfface6293beac7a717659f542adc5f2f4b0030d2d7ebdc027738f5d56bdb171b0ddd22ab4f89755af2539c909c985078fbd274ee252fd117f84455bf5887517eec4e1b223c49a6ef9f884515806cbf4c3ee1319c7cc87d38437751c8363f009c7f48e5301e3bc1a0b63149ec9d18ac15fdac718cbe069df2d18a47535b6b3cef0c3efa149bd83f55ec1b2a5c4517a8c31caa800fb32d6789a9516db8f99e7edc5d01f6d7cab8225850d349a7d7cc228c7339acd9b943da5c5333806631a2de66dd67016c7e4e66103d8d63c352ca059f934a2b516a7d036d9d83e46593c233d62197f7967deb08c267ffeccae4eebd25a8c7220d17fbaaba9e132e31af8d783b036d3bf4ca4d0bf6fef36692496890ec778b5b1e614fbb25e997c0bc7647fb9336b68f2adbb38c681c8973ae13bb606c75cd97d0bc738901b21cdd579a97b02c758fb3866c7d6d0682edabcd51d2d06c7cccc4e1a0d6389f1abb1ee830eac2aacaa1ea5f4e5f74ef3c05a7bc68474fef7d4ffefe99edee99e940f5cc65a3bcd0369740fec9e9ee1323446d0dfcb82994493dec39fd0cb6c0617238c3b40d73cb269c0487b9c08fb5014238c314691fc0863ec1e48e249d93c3d8352083f46c7c30eb477e8370f6d1a31da2863d3681a13abbac781b88c0019167092016cab6e10d023508bb4bb7b076d8bb0462782466c0aeb47db33b4e84ffa93fea4742e5dba8432c26e1e070269ef3409863208ebf9ebcae05b31c63823c6eeb195da4aafad8e06feb5f06b4f7cabc781445be94e0abe855f69f7fcfde848c07fcfc29eee81ae7be6c4309a6d8a8454f64ef7f48cee39c142142ca9e44b2312d613be13fd87a2d6d927439f0c24954ab3424aa2e43557a5aa54a9c0989817d3031cfa503331c6a4bd3abd9827d323b3ce772a39893bd580dd3a1a8865e74ed6c3afc17a7ce51a2e85b31d53b8879a69395f8c7b7477778feeee78be4777cf9b8abbf7cf6b8a46efa19e8c8c99ccdb8bc13e8652c192c2061aadff9d1e4abe19adbbdfccbb191acdbd6be79c73ce35cf4e8fc877dd2e63a29153e1682ca0f563a228bb3b85b639ac737abf99ee8ff2c9d4f7e9a5d93e1b360d6d6ecda3cd99379539310cb67fed7e310fd531da4b2616a3982c51035603d36a60987561d0626f315a6b7d32daab7f5f8c13516badb56e5f6bb56c7e310ea4e2cbb29ba76aa6945a7c5914a6525eb382e602365a7c1cffb2a865b317e3402c1b75ac1c3d7593b2404e0e3ad6d194a8c1491c0df6356abc981a0720024c9399d39c9cc453f447741277a2fa880fffc5c4380e5a7cec2473c2de8231bda3cdd03ac7ded1229c13c32a7ca717039fcc8bb96e005298a9ee0e51d32dacb49b5758ff56a20aed0afbd6c4d5640e3a07aea673907a46a0b99a86f6ba85b3d1a2fbb8c2d5740edaa669bc939874cd2b2fa7d838b65bd8ce018e3846dc385aed56d00001931ada8988018d4f188567baf10c9671bc5d8fb32b5b6f371397bbfaba700c8ed1248a520c2be7a51ece7be1bdf252d88b8131ec9d5eeae5bc9c8713e1bb7398138540791b95ae0c02853feeaf877a2fde8bf7e2bd28cd11d4f7eaabb5defb5e7d5faf88484888f78a5595ac2a85595655ba4a2cac44b37e13796fbe0e0909d158b0833dbc99f7fa75775fd7f5fd7255d72dfdd2268dbb5f63d7077357e30dd3300dd33091871e6928ffbe77df7d7f2fcaf58befddf7d7ab3be5cdd16abd57ee9fe0772dd8cd5c185bef5aac7aaffbd66296d51f07b1b9cb59f7fb2d9d0e773c4210626804d0aa9b20a8b020b4a0655996abb4062584167ccb4a1d09c37b65c32f73b0d401c31847e6d857699c25e09885af2b47e8dc7f9c9511bec3d6dfebca9b8421614818d2044f84b2acc412ad52b4e44450d7d1b508a525946e4d29a5f4b7df6ede5ec39010d18d2e70efc632ddddddddf88451dd3845e31346f5bb144d3383659a76e353ffc333dae60fcbb465593a3addfd4cb8eddf7474eeb5359ba87644778220f5dc26a7716e3c55556ee36fabd553b5d64a2d2a373e79b332e8611c23101f3a38f2b6814916deb29055fd21a54749743f341dc2eb13cb4ab7f44bcfb40caadedb7def7df72f7cebef9c97c7f89f68e59ba9cd2a4fab176d18d16d99f3aa1d961514141a3d83673e94764a29a5f567359944b10511c61823cb4ae55aaad850cab7cef336d33228d731c6f6019c1afe8c79732aee57b6e8e39b551cd2cab98864095eca63e8e4bc8763d255f552efe57c7e0b851e4e281452e990157de83ff925499379fbd4e024399b340b1fee7760d787b72e951b1c2310216a08c142de2688fca1236f236c43e6d0e7411f4cfa654d9b4d94b44a459785b630c0e1e1491d39e3062775835373f3831e1ecb8ac491394feaf0dccb9b0e9dc3e6b4184fea508923739e8c61599bd4b12c2b66f5e36629f61e9655595ed98495efb512cb66cd2a2c1286e85a2d9df01ccb8a74334e4a293f8e6538b3953b97aba10da48e4b1ddc943acfe79c336ff2bde79c0fcaa67fcc6ce1e0e0b81a1ceb934dffb02c1c4daa3c1c276148181286847135bc42b7a73419e3c432f1cde9f34d9cc24d2c8365e69cd67b9f9e3e0839f3f58d71de26cd95e7741354d2ec98708763700c8ec1319e8a2c780f8765e5a55e8c8763fdbdf74f001f80df461be97abf6f7d0d4e926593cf557f801ec4574e22805cb593042057fd813d7d201e943f19cb5b95837c9c33c757de31fac0c2574e326b602183c8dbfc904579c3469976de5e7b24ed65128a3ed2f48c072002ecca264adaf3b72ecabef7f7e2bd782fde8b06d1d4e604a5da3941394139413941a151edc46ffab5e36c93c964dac1930d9d6545b674d90f3eef76503643d6e5185ed6cd558c6db38a6bb186d6344cc35c0d9500e1db44b4ad21a6b1acbcd28bf1c1df44344845b48eb11a35a9b27f6dcc33c555fa7d7f881321730a7c39c481b475cf073fa0f1831bf7fc557ac380e67eb0421b8056ddfce0a507cd005a75e3031c4c731f2bf7d16955b679ce8b9ebad553ef3d8e7fef370bf4a28eaffac37b9293741e658ebc61a15ce984fe8178d16f64559344797ba1fcfd1ac397b5529ec756d2bcb5d7eec25db80b77d1a3963dd5ce75e39f9444164002471c236e1cdfac3e62d8742b9c6b1167280106ffcdaafa4a02e5e73af6d3b235dc0e9384a53df48912d402ef789a14ff93b919fd517212930a86c0013ad1e8c4ed40c75321ac326a76b732649cc8e040a3b407afeda66e464719fd8ea7bb5135c6cc1af11efd01bfb3164a22d47b65a74657b73323d2d8ddb13b7693c09d8da2d81da3e3c180d619cd9ec5e87660a96183bb9d7e9a5dab2ea344937cde55378386e6de3d8a8b90401445daed911843b87b0d6d8bd5edcc70a73c4ec6259d478bf4f3f27a99ddf956e9f0c9dbcbf776f793eaed8df6b74a078f55c5a7e3b9597c1b679c314619336619323a4569468674819bddbf5a7fcdcd252a52942c20a3bfb63bf5473fcddc4b1663f7db4a874dd24a879c323f3666c03b1e199507accd3143a6267defcd9712c2fa3ddf7ce7322b8535ddb5bbadedeeeeeeaeddb86bdbc6118b116bcc5eddddddd65adb82eaaedd5d9d8c7d59e9a08da047d0ded2225b56d9d26eee8475c8b5c532ee96f2c4b26ae3af58c6f2922e9b0b8a7c5aa5ac81145d5ca64b69875a4b7828a934c97d287b134db25d5de4c96503871910de15ae856be158b08034d3efb7345739b060c18206ae66058b18dfd9c85ae358b816b656d14646f20f596bac37b7d6586d8d31d6e858e07ca75b515b582b6b75382c3736c815d6a6d65bab8d63215d95c389936cb0a85604755a29a5bbd1b62aef9c75854dbd76bb5f3f75e371def0877ec33e945dfbd48d29726d85abb9f06ff77a1003386df6afdf6ebe6a96524ad742b2a8274ee22fedadd9b16091431541d8523a41722cea5b2c1c48651173896b29b160216305fc23be287bff908ec56bd2e6bc7ead7ff356b38a6bb55257c3a2059d2c363a001fad4a0e3e116d9bff207c1ff2b490902aa4878a477b5f9542e097c02e552122154f8cef5dd412697c619955fa73c895f1ed8e2591a6f43e2cddd06c830b5afcaae4446c182891f2ca96214e042ce9912b5fa55d7ea21060efa99425794b25127ed31609b97ec3fe83ff9337112dca0b3ece1784210e24966e65ef95ad1b6314d19e73378784381130242424c428c48140f73524c489881f1212e244bc11e98538113724d2c18d18f07f1e9b93d678556c64984f80b28a18554415317e2ee65438c91ca9c05a885949a464233da6b3d1d8122c0bb03b724f14623a17e792b25c5a5c4ed0e504a53c39f5884cc9f8dec2a67f3476bd897f1e6b52bd465fbd80659fb7fefa582fd4176ccdb0ccfdba01bf49dfc7b20b4f97b75da1605d06049878298b34c9ab77f763de4434b74f7656c94fb339a57af7419add7ba859675f0e0989b08222d19fc7af608cf0637c1042af42443c42f798d15869f16da46f69b6b5fd9bd90883ad74cafcfc5d7b2cd5d91e4487a525adbc6495574a27a5252f896595565e29a57430c608a394524608533c1a9f6919295fee539f60872a485aa169411293f8e46dce6c33fe7cb2fd2a4b6bab957595ad9a53ae7cbdedd68717d72aa194d34979a5a4ffe45318acbfcead112150c881a0a849f02b84f05da4704e0c1b8d1e9402082184ce61f872ce4108a1e8fd67fad430d75b51863f9461ffac07dc9a43a1c799e84d7c14fa0a1265a00f659fafac18bce6e92fc851df605d27fd82f5fe26fe1e0e69db1ad5fd64a1ff6421c7323a1e2cbe3b19d2f1b813278307bf131932ca389111caa67f4ce7200f6f07afd134de733c4d7a3cd7c70de7f8dee3ab78401fcaaaeaa38a55ced53471b5b6beba7e6259c5b586ffb4ce29567e13ca7732684ec139055e17cc4e068f93e12a4b86cbd66942a4bd878e64429310d0bc8a0910699b092d02224de614f8346a2ebb613a49c872c0e7436f6537c39a243a710348ba5056f50784a22b8bd9d41c0c659f8fd9f53283d75bf74d7cde10bf4dc7e3647c76d0276b21e8b302422865694e98e2d1f84ccbbc474fd37afb01e1ff64a20c831fea57d9ca41da0d339f545923eeb71503845394bdfe68ad666ff6879b34babbff09e604738239c19c604a57e30cc01e1e0fbe43d7e0a1d1a4c733033441a2e7e8185515c7ec186555f501023d4706fa8d0c54551f316f2af0a940edcdfae4770f28a7d0d93d33c289c1d73366684faba47f8fece9193d3caf47cad8d33b3d95da5175804af3896147537d5cdb77f4f6f688d39f20e8fe7ae740f2a7b346d097ef4e84fefef59515fae40dc3682696ab3b91c97734f13d46fa51bea3f129f3e8ce6cfbd033ba27f5e910072c0aa47ca210f359d3098ac9748272622a211d8c31c228a594f1e485f980ea806dba17a6566bbdc1fa2bbbd65b379bfe310a419bea20468cf15796c3f87a978d7bb1f9589873b9ae179bab722fd8b5b81767e35c30d6ac05c307fb1b406f39a0e55f00e5d09bb4acae83d90da0c7b21b42b9e55f00fd27832048f3665ca651eee45edc8b05afc770b68f5ded7a7be594cff5ef9d0bfceb2d7859d3722f50baeabed7f25d2601a77247c88fdf77c4ab5c5f1b28b36f5e4ce45e9c0b8661ec832a5e0aa7e999ec324d7a323b0a4a981df5b146ef184834ca3ab2aa39b2aa67763509ca9fbc61790ba1490f4dda9779bbf49f06216da8cd9cd20f13d019561d1da54947f19a5459d782c873d9d60269f3a8aa0278681b8a06bf23e0a1c19ce25e2e69927f0c2814281428142814f0394791b8d01fee1ce53724a38e118f51e6427ff877641cd946e628fce4281c8502e52714a89b8802850379db6b9b0bdb68734173a12a400fb0cd85b94d140a140a140a140a140a507ff275fdf595e5aeebe177ef71849609e313147c9da0c41353891e89d199aeebe47a6b69de9352caf7648dd67a9945994599cdbf596b0f67e57d6d3668d0be89c36bab34999edaf88e0a700c96a9b0d1c3312d5230907038f8845122781b8e91f88463b00c8ec1320f9f700c96c131f8b4f909a7d334241cce0de69edde318dfa1294af1bd0b29858884c0aa1422d22352c61008e19f607b21d826f24421668875c570af9ff7729ab47eadf975b346cccab55fd6df2665f34e9190eb280d28fdca3e1ba33bc5e8ec89be181da5154c2563b4de65d2929f43a3c1148fc6675a06c46559ebed93701250f6f88de37bf841b5ba5acc5b2c61ecfb31faf656d97afadb6cc9366f2fa7dcb7febad655afb71ac6ca0db35d080015588c310223cd56165e7949892186d0457835e07a99c54b5a7765d6575603ac37e90a5812909a654969c1701f5a30c887d7e33769fb9535026b92fff5261dad1124a0d71f23d433eb4d2bbb778485d41a519fbefd98d177d9b4df824793bc238715acbb18f695e530ecbdc5e7dd7b2792fe32bb4c4af7c92d1acb55e529e72e30cc5b60ee5789864bb4921abf30c6d3f19cc6c97ed3a2479ea79af4a28befa135c269f063cc9bf5cfeffc8e07c5efc82ae7c82affd8c82a1765356f2648a1bc615a1c69f1fd49577e24edd9ffbc7c127bf9eea2e614ecdf7fb057a5cae6a91721a9e46cf5da7c0abfb246d0d0247f2b86cfc3c7b2cf574dc2f1a1dfa668e3b791c691bdfe901fa2ec8365adb5d0232e6f24eb17cb5a33e912735eb7c53fdeb5c418638b93bcfe707fa7081b39cc558fc8bc913437c2be7b9889b8093ccdbfeeb80bac4339786b5780a5c4879a0be184f641ab6e82c0a3d9beeef6c87b963a152661dcbcbc38690f78f7ee2b2bba2702d880772b27992fbf9aa1f94b18104a1c99032b2773248e8421751a603509c381489c16fee19603e00b33bb1a167c804918294a0373ac1be8369e72175e01b7c13c076398dff88da73ca60b3990c3ee7222ecb72ac62c69ce81b08e87bb7017ee6203ee28280fc5afc9748272827282728242039fa05c158f655d6e32994cb00a3885350331ca62191c836330aa718a0efe34c3b2699295f847c93ffcc39f85da405b16819ea8ab813951183cd70a6872ab590cf0ebb7a500a879cd2cc4f0dec4555c8bb926f3c076db34a9d25634a96da28dcf56167d4bb3182a192a09d6acf5ab58a46b2558afed75bdcdaeec01a0ff7c5b3380f20cedfee79f459b0133c13f53dac566c030c4f0256568f765fc18ae5c39906dee689575651664a8b42b6f93864533e9f9f44dda7ac181f8471307e2ffc964f08fdf794d38d5b8152db00c96792f3ef8207c3b3a934607c76094d3c9a149958ece0e10700c10e6c54e100916eb933b553ab816e7522a21d91f38971f54af049f34f20f0f1cc7c1faab371f0eac0c244e507a244b1da9f35e7cf04138a793c8e91fefbd2c61c81c07f2dee50a4020ab61a549fe2d43903086302ff61a262185a3790b25a512174ceec37938a72bd2b651086d1b6da31638de2dfcf1efe700e50d1b5df974d2fcda777aa9f782c4c90c4d72ff124ef2db88a48d46a39d1d18ef050cacbf7a3335996037acfa182155f9feda2dfde2463eb3f70f17c21502d65fbd4982d9256409d90fb3ecb9e904c514021399307744786f5e7f3ab6f2487994842891faada73c7561a5f338a359df2ad1bafecd4a5a675bdd85dbb80b194874f64df23f71120f1734972d68fed006c15d04615e8cb67481ac449ae44462ecea55258f984939588f424439d8bc58a966de8831c5308cbe89e30f863dc51f9005ba2e869da060342c869d3cca0763d88b449f8dc71b36f4f483bd089b9c08d0d3b73803bd80e6a2d6629f0f65d75ba0bc7d2e6b2f66616b6fb5b6dee005b4d67a034a4329b5b4564b6ba5349ba6df2ad41021b5f01ea310d82c71c164016da3b4d1e65c69395ec6b73ebf7184debabc575eeac5a0a2d3fd97baa2ebdab85faf2df9071f7947e8e5875187c85dd0278a425716dd9adf0b2b946226052742f9bd702f2794ccfd9095b79bdf8b9a5fce0c9642050e2b5aa468dcb4b0792f5eeabd78275c93e2bd7839b806db4429782f30de1c8d9b1636efc54b3990f727124de25ab4e051e5b81658cc1b49db5c8bf7e2c9a0bcc3815e20038912124a1d3a070931a550ea4028a594524a1da4941247864012ca8e9710776453cacf4b491f04a2d74b182d702b56e064e05b305bf7174a18744e7b9d0e3a3160c82c739cc4993dd81660cebf72a71e7159c6689273b0d25ec501dbaa1db8821d09c3440908d050834a05b69ed1412786842173a0c49150ce87e378d0e4e38c248c4f5f52a0f07a8cdb8512118c318c4b22f8fe16fa4dc4b2de2b38e2ad4ad5ebda9e86b12fe1ebc21ee74d44c3eaf6b40bba700e097120d5920196629d004bb142446abdecc52fb31be240b0857349936ab5b75429ad810c424a28a53538418848a534c481b812a5718b39a4ef1336442fcea028a5549e628c31c69e8931764b2884414f41d38af1f37234ad8f1d317680e8c4ac1bb0146b064bb1e665696898951ea173daeb36cc4bb7541ad81b4ab151b5561acc34ccacb561faa55b6a7c33378c6b2172354e73d9d8aabadac3f0b1e9363ef4b5867242f143a2af351402f17283e33740d828140abddb843ca7231412bddb8842a337e98ed08f461f445fb328f414f45b49fbc4102c748838beca0a80772a00e02158e81081c82a1dcff121f4a32cfa8e9a375ce62e36b20df49143059602722f26c052400ffd1d07e8577a44869e3e0d61f13f1f4199e83932d07f3e1b7913d507d1cf2acdc9c4e8b2db38900f06a21f330cc38ed257553154604edbaa18ee02023de2b2df346986123df230c62bb0adc44513602ee6ec2e10506222f1c32a3697a3b953e17070176e837115037312f7e83824cda3bb988f850587a55e869752096760dee8cb0a532ab10cbdd0b221ef15785d74c329b409a2f331a410140ae1190df41404e7ed169f8770c7ba9f87a14c1ff42040147b0b06588ad5332ac052ac3ed123725e1a38a1642cebefa5ef6a7a84ce344da768158d838319a31cc87d77f37c6721be5344831f618039ad822ee39926bd6a6d80c5185530821ea3fabefacc4db7681b1ce3401c46557caa4f87e68d0273d24c4873d57898c9627fbd655d347a068f9497e51e7b9bf279ece3ad20ef95ebba2a1aa11851b07581dea4432050e8ad90ddf8bcc4d783ac8d0b7bf9d6ca4c58b6dd4f0cb0948b022ce57eb2e95e57b5f83fd97d9bc5979935e5951e8999867a592b9b501c88add7d63a4d130731c09c898639270e5060aa76e634a1cc194dd13f7d9f602b8f172d8cf31665940e156585d52a432fdd7fdea441c4eb8ade7b0563bc11e3098e1bf845a20dec2b9637957e0bf4b2836ea1fc31e350e65ce4db983917675d80a55cd50ccb022ce5cab9e8fb2f60861ec19706ec41d9f556565f6616965d5ee9910a811a7056692a15e811e79c065e664e1a687189d9b53810eb3367656ae237522aa33918adba01428bf6aa527ce8825246408fb8ec504d7a6fadcdae9d01b68934dfa4bb2c1039f9ce398f1eb12ddcf06835f4c8e666546e6e74d0fc4d3817d772c23239f24629c0b233f3748e26d49706f29cf39dfc214ee5b1fa87f4a97d8cf1bd1731a6a0bf53cf973abd170fa747220f11ceec54830c4ef2c94ec63fe44b9ab7cfdb08e6bb91abcc957f548a33c2fa1bb0776f6d0ab014f85093b7471ee254a317af49954993fce33832cc3fe2ff468c2ef48867d92fc47732d0ab4ce5d55b5096c1cc851250864107f80b9f4f363d73a14998bf1792c56a6b0ad6044ec50a5723530e077771591b1b1b5f596e63e32b10e85f89264b1f1271641084a91a5ba553e1c89293d2c75d541bcea5369ccdc646b5e12e4e9c64f4a3ec4e8c7e236f23e8ce37be038eb2286fa350defe31a7e227adf63f1fdf9d7092adc9a824ced984ec48020000b315000038100c054342d1804453b58e3e14801371a44c62509a09446a92a414420a01428c3103220222022392000069a4d58a1c3bab2bcfdf75d2036ab6e1ef9a514b39521a14bb720b56124dea517d8477ba2eb3b0f54eb84167e143a6f9b5600738f3dcff2d8ad1b99026444197108466dd3187b9ea157b63519eda0295f77986099e63aa5cde752ba3913f580d567bb8a13dc07ea8e84fa6cbd6f5c1021ea92050d03c4470ac25e60aba5cb5b1f2558d65ac9bfdb62aa9e81280b769abf72d1e07033b42b1d08484d0a1af7fa923f6256862e760e88a13766daa028da325367ee7cc17cf0df9d273aa449afb127230af7601b22dd0ee36967e0b34242744e89651c53ee41e6800cdf27a8e52871086ebb391b7d0fa34a338d56779a89d0cdb40800bd4dda5dfbd603d6d64148bbde8cb727fd745fe64d559817dea99f730bf94221c796081842db36b3300b6421a7b810027f73f537be599787fcff12101a4190de6fc3c76c2e80468f5d392cd0e8bc47785335cbf99efd71f85536fa84d7f01b4a64974ac74811590f8d9ffb2de7c5dc09ca9ddf91b16be52033b64c968716adf30ebc395bd0ad99b7ffd1799a75f9e61c9efa94314c89d1b3f0e3745531ac6c78881bdb2dd16679a547d99e5d281873dfe69fc11ca17c6e9bb589eb4b03ffad687137bdd01e17a9b6113d188da5a065e66b87848abf9dec8623beda6d509a0c1e86c957b96c9b82c94ab89a0e521c82962edc1d8c0b81efd5c3e060aa8403830ac2f64e625a8b0b7208aaa7eb8044b1c06476a0e3f1a350bc8b1b5aeacd066907e8fe0f6f70bbdaf020114a70858fd4f8440bb08dd59845fdf1ff8cfb745642ec2dea24f467a29d2f9a6b487e0a0bbc7a2a817a422090456fb707c617915331c473b753645111ef4c2faf5457f12d3aa9ec44cc8bf088766cf83368f2f4adaa1ccf4813c4bb1d0a69da1f1ac99157a86063f77d6f78acf212144a6cc0c981738f26b5feb3587340d3793bd077101a89cc4625bad579d2fe0dac2bfb20fca05a1d5647937229fb3ac48c05f912c946119b3463409155a69220b1a7d6db5ab1fa1474afd2026d2a5238b065b5b3fb36f1135020012f56d7ad4be45c95a66e172ec3ad6b2d0a9d786da7e4a09407312a568809551ee20f32408727a415830aa81e3c1f07d78bf69d4950162cc097c67e35a6701ace7fc0ca3e99a19d8334e1074b1535512505ce84bb9f98299f89f2312e42bc40bb004b022ac2ff9c98026bb6a5af81b858fdd2a383b1f7041afd57d22f5718cdbf09f804b35ad88c04a29feb92ccc30e72a31fe198fa94a6ffb27224eacaf822442e7a14f8baedbeaed7897b7f1a9f1e29590f1e44660c056572e4808ddb5b93a3a208691ee91c5e7de43208dcef206c78689bd5b87a175525d69b3654044a265acf65043a1ab382d68aae97a90925e599e5b55e5697a326882d3c4d3967113fd378109bec31d88fb304196a98cca96a11296d40459206474e36c60ce85c0dbadba75f183180f59de685ca108b396e0b46bfe298a47e8b144c124418f3c5ffd1d77817f6f794c83a3523afb6ae2f640c0874793ba671f110a2495cd3ca4d0f420076b310a18d2401bb105aaa50b733bf5697b295bd2ccba2718d434177100e36569cbc6d1c796246bd8d0b5e6f4e5c14c29c588844d3565eac71416ec7558fb64365ee677ca6ad920beca63879caee802d670b11958240fc9c3f7b45082692dfabaa3b18b9a17ceacf7298426cb966ec556d4a2be5fc22fc53e4a34357df6169af9773f454aa9eab977e2c89eded8b186b2e54aab789cc1e6f887e4c217baaed4a2f3752a6e4573c8568f3b8d3365a7ad38bed0b3d18904dc3d8ad41eaa85fed479ad653f0d1730f15aa49c9d64ca8f0c7c6b61c914faea90a9eac62b5a08fd95deea0c74d589c6cc8554076f84904b8662967f15d5864c667329161b7a86e39b2e2789792cdb3bf551908c8bf21737965cf19957b3bc9a4e66fc7c1017e071db4b5e14bb1aaac84a88aecacfabaaf7a72a855e631f2ad7fdafab889795d433931ff348849867d08efc22690876c9136a4cb6bfe9634277f288a040437ea0b0b81e738981973b5251672244e510fb43d76e38c2c97cb3b7135b5ec88a337cadafb89423d6c92712653b2f314bec962b7e7dee812d218a9732d0a37a5343a77f983c0b06ca02d9cef946dd8c5ecfe80976ae6432e8e226c0308de5fe98a75ac86c0d801467ea0bbb65fd3b203066305a019a62e916546760354a979af7afed92cec37ca5791e36a39602490f935d35afe96165b4b1e4f1e6b2b3500f135fa16cea61440e9828bec3564797ee981eb6679ff3aa768b25e4829c0e622326fb6b182a9052655f77068089bcd6e4b22bea8304abba07919686fb9d414a0e855e9cc45bcfab22f8e754b73111f21e05613a1646706536039ef3ec7bf4417aac65a432f15d1f0aee6396257e3832fec1f20616fdfaf5c3a9d39d2c0f9ef69eaf556a767b1d7b5432f2d098b2d7404d2ba2fb207e83cfdedf1e35ff41da11735434abca228275b9c8b4abcac059a962ab943d7a47d4d28d6b3f9ab6cc0c71a4024acccefb0a01750d7bd4815651dbc83f7644b535dc145e437b54764b47d244126c3c1f87f36b1ae528a66705c0a135dea33a5bc2b169bfc18718869dee1aaeb88e45429e7835c3480813e95096a73a96cdf27c289cca678c08f07d36e86ade8fa63241f4b0366f70214c1db7cb48e60bb62eb82708cdcc6564dd7cd31589fa2686af23c1bd4fa0b3380477154c006089bd45c980c6c87408861a2423a752113c25fc162a7232bfcf2a23bf4ba17f805ddb20f040898eaa8c21c28a89d601033c7a472e19308d014fad811ac9e3e5c85b079ce9e1fdcaa1ef740d1f5a3cf3d9c59e16f89fd0d7ec3adfddad8304fe66d6ed1d80e5183263275bc5c98c34f3404622d67e0b17f974c60c6a066af1227de251f7bd4b17c99ecd041525c0b83deacebbad981f4faeafbefa0bd0b05058bda7bd0972b70e07dfde3e039e70f1820964c064cb6dfc2fc0b0bb80e1df9946d9b825486f6b05014c6aa14a0f1092a9bc780e57241cf86c98b2f46e6f0196008820452e7a531f6b688e961cdb0509d55ab85523d2b6f4fe0fe9eb8dbda59369b20eb0ae0116e2a6ae793af002e5de2d919867adf7ac2bc35c64da0e466f9ee06f53ead6a282e34473d1651eb12cb34dbe55198d513a670c0b3084a53600e026c24db568e4e69fd6f55a70a10aed4a17c94c945fe79bff90ac5857a479ad4a703c2a9b30196d746735688a47f10d7b554aaa6d2d22279527ece5b1de1ca06394b8d93a64eb678b6ed91a07462017e3b7a032c27617e334b02e093381a42b4850d249015a472fe36c84a92dbb4ead92e5e3f7209bfa9b014729abfd4dbc32ac4b8c7e0f408f3746a29b1140cf18802677a33b7ef52621ca8e7d9382e5d17f699546594c789773f7b2e45b3c27dfe42c4ef84c8f86de3c62cc5a0b70da355b1f522ff44a564dd4ce725897e8f5a60308799b0a4ffceb35f8df04afde1a49efc884106d94a4023fc374d1fa2f7f372eee7a451e53b1b292c0dd0ac44c4fde5ebced61d695187c7386372b38baaa3e65bc3e67fd315b59141387ec8e65f9b8ae7f4268644d1fbb259fcbfc131e26151c8ca277efea9153c5e872c5e962c237f0e44cd785faf6fcc0217b73495672bd19740a3c61ee934583bbfdac0de61c0bb3b6a6aee025122c83cd6444a9bc3adafa333e7aa1761d3ae42fe8c327b2bfa2c6937d357c0ef26a8147e56357c33b572c0fceac474b53cf63a230d24030a399a0b02769d21d5d5d1ae3e6cc7533d60aea9a27605da5f3b71a9aa3e3584971eb12f101ff565ea6770c2c5c052797f5dadbf12d96fbdaaeacf128cddaac6d7199d9fa093d3d34ce510e84cbfacb3168ccd994706d7bb43c13aaf3d7d8c6506fbd3cea5ce35973d14bce6b0ed9ebb4cf7982a438eb725dc514619489744b62f2b18587b48cc87cf4f18cbb3c1d6868d6e82371a73259bcacdfcac6f119aacb027a88384c01e6390fccd907556a899f16ecd933a2b08beebcf6c1282b1ba1785529062c5aef15725ec8dbf1182f7318428b2a43bed2e95e67c8c66fcd6d4a59a2866065b7b55eab0d619d8095292d5f252a99bbd4c99a1626e290c89da74379816253d1a35953e2068fe86c543e1c3c8afcb514a6a90356d17c60d6a5b65a540ad705e47f5557b4f4c2db60b8cdf89353bb1a1e4759e310ac8089d009f721c417da0a4974857a364658f9c17b2acccf8bf06c9dadb71fcd6e2e3d974b880f7e2154d4b744412ba46bc5f799ebdcbab0a39d7003e1709be3bba550cda0f8b4467c1b45ff9b18122fcb7ab46d1aa82419499fd831400e6c85f5de738f6672536759b60d1bbe82feeb6a912de4a5735649b31f379b9ec520d0f87efddb6c7e9b4ad422c02257d06c1c0de0668e308c913a7f562e995803e81da510dcaf5cd35f8f9c41db73be4d988b44786793c3d938fbe38b3f38164f9d296e48cd004a41414e6790aad55429e6c1329a41d77d3cdecfca4e9e2b1fc966ff725ad1ff8608fad8e68d742c6cdf752372cde97ad968d3e1857e5d25af8572c6eeffee09bd6e6045d44d0be833224dad49ad3637f6086aa4786ee9024bc1cbb6d3d0abd9864f07515dd64c8a0e5218ea7d79f596e15e8282dbc6a5f86342e5b769723cca921961ebbe1b319bdfeccf93c05f7cff15e8eac547c8e00d15dc3e21686a822aff91254a51d7033127892e041d53488537afcfcc52562360ce43778b953c92d013a8c7dd0902d44f4f94875ff9f4e04c23937bc653c299a583e67be96d8f7987fbdde9b13b1be024c6a14e764106d42119ee897b41670b76d29138214a28bc6b1431958edaeca1f55dce6c5987b56ef7d531763ac6b2f86824ec816f4e168bd787351d7b4874da4cc7ff876d77f1b207a710ffcab170b26a0a653a3e0712d3a1013537c074fa979aadbd7462544d455d3ad35b4ea7466acfe0b1ca463935ac12a5d83ccf76b2bc4ae586f5557277c0abe7ae4f9bb21c43e82e4a2704f262774c65bd4fdcd089bc8201687bd58137f5cd2e973ebd0ff6ae97b6fd2d55c66b879baca5c89f5462face4cd18da615c3c3bbe98c9352b158a25f2c6453034a3e632ea8f2958ec2ea1d4454c92c27d77ed0fdbda7bab2e0eaba35fe5a2796655456aff734ac5f6bc16137b6dd597779f30d8f3a79aa8074c2353ff521a8b8ca42a1d711c5e3e3296cfba7704fc162d0879e45bf83aa2679d19eb9ba0e09627994ec08a26f115474151ead12a788b78d8bcbbdc6551e6af323a772c88dc308b5da5342ef54dea2ddd7732065984df58e8bb5a744ec419c18d48a9e6d22e3538a3766077a0417f779bd3176858aff654cd421fb92b290044e6ba73b71cca261ae1fb63979e29c9c139d5c3f48e4ddaf1370fb487205eb577f750bb8bbbc030af8a28437bd2a04d8332db5418bceddf7680701f94c7141045c9536809909f2a92bdf3445e2b7db8c900c2e9e07d0ba004f45da8d645d6a89779d7ca0292160c7f5c08c8f51cfc1f9a6a331d3c6a3cad47e235c2cc8b12ad62b6d2fcc2b2ddca2868b8c6e67765647960b8c2f18ef517b8ea79d6aa7d3ce0dd55a9055789f53ed517f9d28aa7bafb814fb84a0a84f815b8eb1a562c06ada397d0f88413c1bfdbd97363e46a85e606ce3233562f1c25309c6a7cfd9e9ae61b649c4b75413f1c106271714dbdb3c2d0337f6709782485e210478ed9d399fd429a1e4ea224eb5c3f4f849575db86a3515f9bb7c704cd5862b016750a79f3dbc47dff0b313da7f85d132aa1c452964ce05e922917b57e2649d0a53e22ca4407b8be759d73fb65b5495b9b101bd057f812b4d52615c68ef949ea9beed966170cc518d4772f24229ac761d0efb6c51c23cf7060f313c45a1ff0ac95234ca28128aa2234108ccb4803b4bc4cc95b0c7db6f91452b1f23c34fdeb9ae0be614d1cc0833d42d833036b5f7d390d78e083c2dbbe7e3fe6b77114c936569cf86057ea0317f00a0d8c2f861bb17d9d16676079beda259f5c6b98e21842284fbeaccb90e7f71ddae29747fce241b50b5461153b14b49f61c427ac8c16697fc04fe761bd03fbadab99bdacd3c66d39b0d2f32c23d5a51c2e8454d7cbb9fe9e14a3494a0ebcd1862f9d6ed8abde96db966c78572eea3414ae0ef9435689e5c652f7dd473ce9012b83d49c136b6338a59cc3ba2ce3c92221489ed1baa22c18f83c1b8c2f22aaa7ab1ce75f4dccf76690e4c5c2d4bf0243af1f9f6b55258493e6f6e1ba59ff268f9314716fe592a90c4c26ea35e404953672229f96e83c10f37ba0f23044a1d5c2b89021524955a0d74459c3b2af0f3ae7537c4e4f428367e02282c4d77592a30de54b25d57a1dd702f292c50eb1249d54a644428b395bcffab1db5ec5b735db42dd1c6c6aeeb63bcc325a2b473bc01bcb677c5764ef9166dd8f86c1b4b1a95536d8732109f2e6dfeb6818ef85eea0a2dcded26dfe482c8a96e651354e5e42d1dc6efdb6e96dd5102230c162fc018608dacd4048ed0809156ab23636b54c2a020929db99e2cfcca7ea3d3c7fa4b95bf15210b8dc73891c166aa65164a013920860a8afe1908e6f5bccbdf8114ff6c333c343b905c4e9878aaaaf34f40888bd85c44021bf005548fac47ce6cc10a343653f57409381e78ce12e67633e50c5eb73eec6ea6cabb4df704cc307dac36b15eae7feeb65e3cd4f94461b49b29f7bcfc5394e7d667f4db81c54e877fba99a2428c2a81ef3f3a7d669fab0b1edaba6e600821739c3a14551250761c3917b5cef33504263c499f2f059e87be4523f89ad34a195a99c64c0f2c14ec228e8ba6dc0e49b2670d08e6c574d1f9089fb60e80efd1c4f955967534c24b533b4ca2a3bd63c9e4910489a4a319ae85df6dbb25b6b85e2781a045145658086ca0667bb02f4df1a09fb304e62edfd10f2f9929e9a5251bd972b985b18445425372e5e6c450c8c178aa7a3c704fef1e34354d49d7637824ca8c1169fbe1413c2d9c3167ab5cb80d41ba2695e82a4ff91c1ed1aa1dd30f3c9a9aa6ac42e60b5e62d70f940d85e978f885028845df5fc92d93794a19560b96b8161ea69cd89af01eaa00a64cfb03c30600939e076e86e6afd799c150a6382b3b0ab8ac41862c091f2d55b29b20a7834dd56333920af0275957cf61d14146111928a1fdc99086a89ba6dc253121851624a7a965c06d664f93d971f4de0eb4598188d94c999a17502f387983ec3ff982587d1c4cc9ad69c1418939880ce2ec18826ea484cc9a9a671066791bcc00d0ce0334bbf90e511c1fa47057bbe998d570ae54fd18c0a731b2238b4884df92e0ec64e462f9c653331feb981f36697483a994cb0bcaef0972f5dddd5fc319f9b732b25c3565225380405bb68d3a6915408e78c448ee271da8c59a23d07186cc03b5c82f1fc61eaf68bc13d63a54c072893cf0f18deb1dcdce50b6af7219d4b8fecd3d6127507e8e5e81cc638c571fc82f1f216c98860663ba3c130b1061e0120bc647ea6a6dc9cef59a55fd479260aabca3b9041ee29b241f61d9d0be93a2f6e5968e0fa426fa2f4e7fce95c78862fc3201ef43a44f990062859b3647fdb03d8c21f005458b3315a0194f1d5c6d9663611e78530047c4d756ac9e8018631491740ff7168da525ab0e9783e11b4db386eb0a32262498edcc281019ddacce22748d5029c8df231d0b1393d8097b67ae3ac68460ee150175e12a842fb7118a2ffba89c17d8cdc98bd52ee0ea9d59066455620494f1e9e471618d7f0a8f31383ec6c14a2b20d08565e7bc759ce53c2c9acbe3e86cd486cd660259a6d8df7486b3110efd1fe33ac89b83afceeacfca981aac89450d32a7823501756a1b7777c88725b2c15dd06192b38d13c7eeed7898380aba6d14d774a92698075651c66785256be44fae1627df6e93bb278207557ac088bfdb75707d85c0f84eb369871030786cf55c3918c6c134a1c059c1048f9681687e096221e419dddb83e31ea9e392cdc0bb98fa761010d28bba1ba20e1d9a529d8f8196e729479a922598ca47c111c060c31e977faafe42e00e4bab98e1a3e106b4b09f96737a06a26133ccfd158eea86ebfde5d834451748b655943f5da84e18c69e2ef9516d549debc7ff4929eac9c5c4038c0e9596307010b7dd282b45783fee4c742cdc4275ebf0374d3afd41a88a0f6b58d6253ca5545cf0479c0db568c4a15ea9f40a2fdbab1064aff4b4499ec030d0f7a1d6e222a58aa1d5f15d3495314fed43271a878ba11325b7affc1eab85b7e8009f2ac46ace2f174308602c66dd7f28801ceecc49dfb7e9a3cdab916a8206410a687022c1ac48fe9de2c13b646ff488e9ac3d3647a8811a4690623305cc36889674ce1f7ad0d8e7a262d5555bfb11423addef782587bb057ebc7e94d8ed5d87ade31ff8868539a4dbe9774be53ab944cde953d3b026482c5fa26143b8d76000b925ea3fa18d452a11236a2864438805b2873d5fe8668554c5c6b467d024d976dd0816ab98afd5a083f07750e205ff4cdd9a918327cf2beb11109deafaf4852e461ec91ea4d54550cdcfc524746fd45b863da9bb463c5405409ea3354453aa6941d8f284b82291db4b0e89d102f0243d1d6258b0897ac81b632d47c48033899cba806d391343fbb5237a9bf86f98e8b86267bbc3a22266c6514ebe7198a78a416359e53b1893b3de2a3b86f5a680b0c1289d0db45e24a0758286c1ca84556767eb8b7c28f7e13004ff6051ed173a87d9d21f6015819e12c1ba447dae00912d19ab87b997e3d928dd4f9a0d051c2e95785bd8ebf1fec694134da01c366529b1914ed037673c4eac54510a62854a73d82e317f6ed4b247d5d70d335f6843a75458c8a99307510f5fe202928c1da93349fe80242871de61eebfa225ed64e625e660ea585e9f8eecd4685e905d298a30f59ad93c4d4b0a9935585c440c87e098d6454f5621520ca3525a9ec598fee70fb9bdfeb02dee6f6a4d53e5b6a0012b6af78fd3cbfb3aa4181ddbecdef6df4300a19cf110f22f01f326847debb611b4312367dd498375eb5255b613b42b6051ec474314bcea66071827e2b4ba443c2ff4f480416af22a3ac34542bb2ed42a877e27d39b3e59af79e38ed8d926f64d88f89dc0458e56fcc22862b77e6201664f94dd6394d1d46cc3d83af51387c925d2cc1b8dcbdd5890398420548c5240c8546684886fbdb15cb31a20fff9a9b26302c9816a40ca7668b9baebad034ef394c048176e2cb8bb37607e0ee609e7d05351011c04498e273d8b1882f07b262efa39b0b12cd57a795c9eee5e937a376eca8305743c8e36231f80e78138c5e1a953b3d1e6ecf5488381d0b9603b192376e61e85a8967c161c15806f95042e1a7757b6c9757d4ba2ffdcba877ca481a0eaa65cf9965e747bec73b4f52faa663bb7854a21649db42e0af8457791b34a825afa3113e85aa1f4f17a523d645ff27ad55edca189de1796ac2286636cfd8fa952655e4922e28f2553ff05185b3ae68b44cb8ccdbac07d580229581f4ef1f645ab79b87fdb1b3317527064bedacf02d4da8db5ee1388b99ddebe9ca3ad81a586de5e1c2a9330b55f1a519f43ac83ae9a70b5b42a4f8a7cf76c9054824fbdbebe32e55548069298466fefb22f2ad9ebdec809b7998d440821b6ba392a734b38da05e15786b90eac9fcbb4f5102e9950f08b03a7718da58b8b1ec64edaccc2ff141ebaa5761e06ff8dc9adb6903a6a9c10e7b43469d5571ca7ec8e0d08b9a537240f1e2c581a4ac68784242b8831fbd8dec2a3a99bc1fe9fa48d40aae5a3594a26cc2adb3b9b016dca22c5c48df413df4f8717100d1a50f34d8ffe68680e010a349392718c08016efd866af6cca3a4b16ecd8e91580eca6abb61e1634e3231cc0e07a26cd14e2c7af07e4b1465da467a55cb0c28d6fd6ae41c4cd5b3dcebe17178ba6d57bcfc5e8362964dc7c6d441bf8e2475cc659b922384965775a3714d78ccb19f722162a8d52041c63d202bb1243d90fb7d8ec79870d04c4eacb51b9145ba6ec2b6e065d839ebc94681b54fca7e4915dd1622e7d2d79e609bfce90fe86e0326d95aaa862371515badc19ec33e2919b181e578ff5b493b24c04d8c6614dac2fbdc995baa77eff58da92f298029201be0b63d5d8529af292409dac83eaad4af2804e2e8658b816e327e3fa357faeca948b475c00fadc6d4342c951723643efccb71c6616b1af0a3bdaa7ba153257fbd3ce02f868a8c144acf0538d4a924c41776d0fb7433f838870e39921d659408182a376375e86c64a1f7cdf602439a502216d3bcb2a37afa4c078b5efe91118085ca95ff85a0cb952aae16ac43576d90e0d7973ce782a90da06a6858155f8345bf88cd6823828870593937d227b50de41cdce66f32da66cc15aa73e9449a7706e1803c0ccbab9861d1201528ca1b643448a4295c731a86310c6ca9980e810df57cc9b2af5542fa834a48690b6ddaa30e618c42bebecf1aec3f9f1a69a27df829f0d4128b532b1eb6f563497491e9e07ab7e2dc8cf2802ae74fe259e5a540e24a5e169d2df051c4684221dacc70f09aacf284d5e7a877854cd58a3eb75a2589e4163ca065ae39264e53619e2195a9481189a8e1bfb4a7a96721ecc236506b674f67554889676aaf6baa89d4701202704c0c0b6ad2e0d265766b34731fa8bd4c82df7a1c3b18613031d060ba336472da5d9373a1ae23d7040de189a73d2ccb332456ae53c03d9fb1da7d1616173947d1644fc5f585995b6fd8448b12377b3c501b1d084b660b640b79c346a2afd9ace6a69a0f372d31b28c67f2c687a2d238b89119c5b628ea2506a111514e38688c4d20ea585224a544b25a77c214e51c6e661b223003fdec2a5bde0f80ef2dd3595cbd734e8e85a7d97462f6e46bc787b2ad08cfc9322e2f8a347eff4a0c652238d6fd9c37c5e5fa085fc6f800657c3ac1f2122fc49871379baf84a802159597ada0e72304dba1e7e73a7654c7481a470aa83344afe28c3e4376fdbc609f7f569679fce81fadfebd43e4c5ac1b39af2b0857d92fd1710c69b654cf19ff76570a46871f1c09d1af08876bd49e3abed9fe404be41ab5e029e5b81b12aaa41e8510594db092f5ac0005ac2c0a269810f8061b18c6eafefb17c312a17037b244b51ef3c0bc067d2b4b487b1f6dcaba62b935afee17dc4590cb577fb686d5e2811ea45a4799f2148a5b65fdedbb887daa33edc58b8c20f32f2539f490f8211c98488e5a68e90bc5bdcc88518cd952784a4064401aec9df232f77f7dd82b504183b874b5009c6927296f216386d6fd7a48819a3668c72fd83387803a0852b109274a530a4e6dc970e2126e3bdb04aa52b5ef026aa59a2b2fd8a2c0431e2a20945490201d21df5bd7b133fe01ba78a7ca2385b0d410fd5e9912fbcfdd56014a637d5113156a3cc70ca251010509c269be7099fa9a01a8f6af80fa060125ce15579a2b0f1b4043c643042130360714faa682f46574eea60fb828013a2a15a4fbb0832d8055900b76f8c6796f124cb6549db8af939d10dd0a725226f15c90c1199b7a0e830f6be205f140415977fcce5aa2e50416291bc47734c842470bc12323ce80e462442ed0154107c149d29268748d69f797536454e006cdccf7511f28292955be07baa8ae2902ddd019dbb6a2329679b583811ac98128dbe27a101b84a8db20515eafde8bc68bd4f3086514c197ade6c46c87baed6d332cac2a063ddef61e184ea4bf73789651337833145b357285776fe2583631b7413d792ba66da87fad4e636d2441f4c9db704b3cb59aca21589f63735786d7e46d3de3537abf4b083fada2a3c938c9e93e23f0c94ada2130ac1732f300de34e0c23c6719e801a3ec6c63763e3a01e8d485deedc6632b02c765dd48ce88823e552f5236383ac535003d64c152869135219c4b7c6c7254aeb953cae14640dc5332f307784afb1f61caed45daf87d7ada6926f4a7d88ec6d9210646afa4766f254f932e64e12a5d4117d10cadf95454e5354f38447a4b245eb93a8797d741e155e77aefaab853340a6210ee211e9c565675b5fb81aab960dc2d61a38c0c1b0acc805e9de4ebd61ee03b77f3281d3be0ad1c2ed99d924aa0875fb8a0f1d71bf8d2e712505cf800f4c9c8b602606a54e9d603a0d0a008c462ae54ae3fe2abd7ec65978109ca11ba13de86eda16522837e80cb9a9857bc1812e822afa9009dac24ecfb1e6bdc0072db42b832a82cebcd48f9a721f157c76ba7868ffef8137ca8827087560cd6ddfca5b39f8e2bf5e4f8724d18907c1a9a5a270ce13d900b286397f551c55d05ee0ef29bb8abe058a6ec1cbc37dd8865a1c17c0fbd368b2f91c38177d7830952e274c8f8b45ed90f7389c47e69521bd4177b84e141206125847fccc05d87b037d0b509a7ed3db4a38991f13ce2676edf02aa10ad71dfd88adcbc6cc6e6c110ff3db66a46694377fb0de8405c4294f8a94485dd4ad9d94f6497cf92b3d43cd55313eb3dc112aaf1ed6f631a10e50db910802c0499eaef77752d953dd572d32e3772c66c2dff4efe44cad86a257b873bf26ad080e8d05090c1f2bae168de3cc969ea09117384d8d1831cff7909bc6ebc875a322dc127c5e3f2c9723175e528070672da9a552f3af308bc0660f9269676180de03d892677e443c2cd40ab56f1fbd1b596f537b8ce55f1c2674580123a7bc34a230436e1315cc3587ef47aa615fd00b5b913c737640d3000fe89e11ecd6522fe0a0fe04001bd09948119e0d13b88e5170cedd30300140008bc2d1a5b18ce0c766ba17db996bc7e82a3209ac5f6b77efde31aba67c428518b84d6f90425e0ec08d090d0a346175cc927ae68cdd0207450e99447a9e761ce090c62ff5255b5c7fd290cc0ec8cbe0986f877e5e1e3649c61eeaebcd55bebe38d65602f9357f52360ce263c2450af6a0c209e886b0af31ab6f6c48ca6be8bb909cd079941a3f76bc89c4335f74de7f4cc47b43379c17edf202ecfe6054bf15f50e734f45efe928c5fcbbe3827ba134089535b67bbef2cc51b2846e678801ea23b2265f9bc78686a168dc630a6e87aa3adba3f16a86b3dab9e2ffcb7fb55e1a940d8cfc4c65974c7f95ac1bc1a99675d9a46c0feb7e176e48aee20354b849d828305e29c3ffe8c44e0bfc91dc350d26e756b926d3ac0d89a8bc2caaf60077379d5005141da6d1f5d69732f225cd3e2a50e32309c96d3f078e01269124467ae579aa57318d636724177cd920e1da998e64c59aa30498161d52c36f0f616a57f345dbaf461b8f4918eeec4d8f5880d01da88089318b76c6704f5dfa6577389430488ea08b0c6c46e19516d4e80c89f2f9459d3d52c4705d87149e870602de93daf6028f1ad63a06c96d6cba0d888aae39b3cf5c406ff5e3b10913368e7cb4cca5eab65ebc01e49c2482b936b572bf3079a377f83786b2b4405b8a1143c7b331d71eb38ad18674bb3479598597baed3d3d5e9e89ea89120ee32832d69f95b1c091fb893052964c453b1969074c3eabc4e016a310fca7cb5c84f0ddb4714775d1c9fa8a41048b06bfa5aa78c82c9de9e98c1f316c4b0aa7bc67805b6768aca28c28b278e63b15bf422d218b20b23825ce60b667c3742b54b4f157636bc66b3e2929ed902f1be3ebf41e62f5a4982f76dc047d28973eb330e57e1e02e13128360833f2b4a3107a53ab5ee55ca850cb409376b73fe98d105f26986c1ac69e43263643988403c2b30d44666905f7b00f6cdc2f2f2933620b47a9e59dd1a5637ef88117eaf8a45c40fdcaa860aef1fb9aaee3455a7752bd4812cc3219f51253b310b45a1e1ce4606c7ef11467ef0e3887f9f8fd07f41a193e4607477027e5876d779930648da13b382e5d3624da3547cd5283fae231960d422b8b9d4d040d630231213e907299587e0b3d865e21571c5e1eb22e7b8b0d34c17675ad200c5d0b482404e17d61c873f2f4f283fb0b69c5e83be272c413fb77d2bf5d43a5385156ef6eb8aa1b562eb7788c40c34ebdf6d2768dea013fce09841a1b188f03a55eacbe5c62173e269c3dcd0618ce09934e59d0b69ad7bb8a83e88d1732a8771824ae4417031ee38f6995931d335dbcad2292667348ae53c30f75b6cec10ad248eec4315e0f670038bfce5531d5a507ab730c7964a5a890e9de9598ba77b80d18ec8dc44369d856834914b3fee368fe59a3881b2dd892e18026fc0767a45a299d5ddaa7627a099b6f4e6aa95709645a0105119cd2b03599404521f484adff6257b6f158f6729de7c7469a1042e1787a477937693673d01d60a897909554f43689178374d825aa5f37346aa97a71c3abd95005b5077a60d7c941940519c206c38a9b51561036bdd44a439a165df4e2955fcfc72450a3492514191ad02151dc5e03fca85ccd6fd5498664d82095cf287f4fe6f3ae094c08528a1fecb0644cca4a8e1d102ae79d8bbaace2b9502d78eae552c62764787d11a63dc2e88786a1b302329d9c1a9ab26d69720d9135186c8d6b8cc32b8f5f55c53e641432ee5f3ff2f2f37eea9b7a9c4cacb1a372c327851799338958cc8a80fda27d51e1df0e688c86387f9c4b934b5e9b76f601262558d0bc8538a365760880403b62dfb45875dd174f1a779f4c0bb277fd9e6cd758d46304bcb18f43e869d8eeababf674f13820759f642d69c98a06a3ab1389801ab520c8eed8f7bced62767cce0618880b7839e6780b335f0d4a7b7ca1c1cfcf038ee7aa904efff1d3cfb195c8a16b3066c57a2ff44104fd3a3f607874f072ac1d96b34386a6f70cb81f93bbe4afdafae73d1d5c549e50b90f49b5ca428896d7b3970e97aed2b157b2e6f5f43978af67f5f4dfbb1c37694b601bbf3669d337e7af70bbfde552902192547cdb339f525996bf8df9cbce5723bbce00e3753bbf1649430942756fc40837da8082e0226b6181cdd56e28408c68f3b012f21b4f20caf0005f6767a6b40030d121189556f53d5858d0bb53ec06c78bf5e8bc09453773a4a1cff87da675c6d633b1e87a9721df01353a20d408e0805e8c9ce9f06a60595fac8c542acd894003d5bc2f3405f965c05f0185ea224a8b7431796b56a7a0b34fa7cd77f510298d2a9b9cdbe17450158aba87bbc8f2233a167ab9023fdf8080fb8f9820d7676447435df2c815c551bd8b7c73ecc5db2d5d13fd80cd237d4b40fa9f345c3e3b15fc981f7476c58b258562f15b5cc4638109ea8e5013e835e2a30ae0c7c8696cc88ffb060ab659c35564e84c067f48319750dccb8987ed5ded28fbaf8121c232cd13e3b79cfcab0f2bbf17392869852db32c58ec2bdd228f61ee990c50e197961690e927068c7d2582a988871299fd647f46b0bda215526885a4c6d6287fb94470eee628620b490d60441d8088c3b94f8b0d00348c56fbc4ca78be24272835fc7346fc40edaa2501681127c10f22f09bf4293f8f09985afbaeba2174f4ef0637abeb0c10ff05d90e7b2fcdc39fd1699f95255a9b3e2119ee316adb44cc9a99b02b7be3a4de0083191ab4419865b98ca45586c3f0ce4737786f6f75213435de823b9d446a99c670865bc97e6467fcc4a1605e1f58ccb3b2dafc997273df5822eb11a4be4ae3154793c89a1805152dc678c244b6a7695e004418f1a8bb3068bbfe13e888aa0bde5c1c4be31fb753d33616056fa8cd8787eaa3f313e7443aa9156d56b2843672ee2c110570f9e4e74151dc8cd566c8f4824fdaf770bd59e8ea302dbf832539641f837424bba220c0f3b75b919518cbfdfc39d4b3fbe155f51504ddce775521f683d5f84bdec7a281ab89ba4e352e3f119d882014841cf410d45eefe3e3f5833ca69b4e049f3f4bd217512b6b8c4ee7f731cba38f83c0cf9542e523765beea34aee318375a03def1ab040a39050e3bf8332332b7d12bdad8ec157a7ba7e05ad6bf28a356e9fcb2230c667999add9bc2aee035b33f6b5a291a5fedbecb1b73519a1ea506540699c08b869cad8c31c174b16560b4d83d0a3de8a2aa0a93cec5632036f90195144b7ddba32208172cba8090a6be5a40ca81a8e44db2471c9f7d2ce7766add1e9d012c2d74e681f8b5beea2cecbb7bd50229503153beae4d6fea2086fe726d6ee63a1813779c42d237022899c394b6b74084b33889835e6e8c4490c25c87429c10f5e38df464f3c70debe959b7710881eb1e1262c49da68b428cef609e426a6b7d270abb7876be026625062df754966cac5bb1bd8c142da139c367b76dd440d8690c1c691cfb007ca003b273fbcb88a91f3a5d080d8c5e84fb2071d183992ac9378f015c7158bcda0e14c5a6543d04050a2cf1fd97d95ba338b780c16914ee7568fea7744b49574934b1163b00175d000f4dc2a5e5d959dbd37b26bf44dd85eea406e32198847f1fbe7270436f0787ce161143bdc5bdf3212f95ecf54367c7bfc741c73f14b5c113500fcad09ecdcfebeb157ebed4c88a84ee2aa89063def07a52b616df5877df53f8eadfc9b4a82064818233014bf32d6c256683b66aa01312e1cb57c55a0bf19b7d9d4c489b865b4ac957a413d61fccf0f627407031cae6cc7d052bb207e10e3f1c95ab9835e4355e9f72057362220229cc5108e02f8d662f8f7c14ad46f96585d5c742ea0fa72c730601b0017e7d268368ea6ffd129b5b4a53704bd61832e99775cd0044fee4572eb8fb400dd30262a19b54bc7956009f2f34680d05f8660fc53fefeab4271bcd9e1dbf9973f7dcd0bf90c27f5b438be4f164eb991406bb6baf15533e326d2bdf931da4bdf4309173eab999c50820849f1751fd399f9694af334b6f2a9711f8c744a1763e4e81e64333bc24e704824bf5dede3650e36c8b26f7440556d3e0d2dcbbf29080e7d55d779b8d588307d715be58759ccb6ffe25aab5df6cdcdb99c5c33a95a08265854c4198eb07653784b2e65948a667ed6169a399ca9ee240c401efdc3e6a87c2a3b410a281b61dcf130564cd47517f22643000e521cb152fd769c52408106cec9d07e427654d16f42ca6dc790634d70ac95e341282ed06636d72132bb453a2e8e28336af9b696cb0d5d64969ffd34245efa6ebab77b084f449efff40691c37c138d22ba43d07cad7b74233c698c4334737911255671afc586bc5ae5ace108892897bd87886cdde5387a1248c8081e7b4d0442040f021225b2c8371b84e18e0b401edb3e461794ad43be0a24408608cb2f4aa352f3d5444f66e7b2ac13cf41f06374d12f48c203ceb643d9eb090842e735cfe878e8aa091a9e3229727821cb38b0df9ed4ad737057d87bf78c06fa116b50122bec5712f3428827e3e1bc3bfc220290bbdda8536b8e8f592935e1bac11354df19a802633673208d9504559dab5949ad405059a613c4dfb2ad2784caa96b7366fed51af7a4fb174767c3031f35a93ba49f5d7c198edd8929d00c74905accca6507edaefbd848983f5b4842b47a0bb084deab0698c8a8a34686ab719d607f05659cd6a2b4c634477b6b88491c8eac0080c53b6686d7acd3ddd714cf357bc5ecf792884a3899c02d8198a74d7f373f22eda3b9b4e49b1613c430e9b40dc86daa5ac2604e501d6af3218efbad6239c0f78bfbbe82ccae4a9b21ab4a579f88800a860f1a55fe85e5c8b45317cc10a696c47c5d98331f1c694d291c13465e8088f245031aee52cd36151ec3e7dfb208c678b172dbc50e5e0374db66892750ee84a92249120c08f002b3f23a90db5554cce87b3bd9c4c734ee5ca138744ced88701bb6fc682d1d3bc07da58c9d742cc9168cfe921ceba940762c1868f407ac67c0ba25ad6298c6a58d7a65ec63d720ad6dd8f2526ab56a4e31ae29bf5d0205daabe0d9cd28f4b105037b620c89e45fca4edddce5d9bbc3069baffe2638f5ab4db9b0a7b38805890140c082ab0e3229ff87095ca30cdfde21c461dd4e239f6a49f6b5347fa2e30e46d297d4eb1bf319862b41f74e76979b8e2561ee11ee5d028e9e585559951be07bb1de7a624631752b59ed136b02b9d9227d1483c0060430f56a1a4e791416c7f7baabb2d87c0ee10ffe7ec16d794ef60bba1b0d48ff7f981475c1f4fdb280dfcb5b38418b30807c83726f849a69d532fa77cb2cf3e4c3ffe73ff1a70e337f4e187df215ebcfe857a8184400e09a79145ccd9963d7a8d7a660d0cc823f98efe5c89da8e84260a56672fdb39ddccc045c00f47231755176c322eb43fc963655f7e6e2a363a2c626173cddf5d13acb367c571426a6c3d96eada28f225c55ff6af2cb53acec7975876bd9972fe79de7b22e38b2b25322ba743095335ba52d282df827092961f41574e6dc82845e14a24d6a681c8948ca896f2532f4570a0eff951189b40a0702fb103e365a3624d5a2515eb01dc739eaf6410aa21b00ec8476ec3bdafda5cd95ba8b1eb51aa96a975bdbd120595bc631f3acb9af8da2ab5a04dfbfa3bf96cdf4e2da147194e9058d957c1d83bc6429dd85103112f5422267b36cf561d9977899e0dcc23df162b4cfb99c3cdcf145d83b96d25d1fc1e18274a5a3fcb25796f0f1b26aeedb0922263e7b8a8db9e5aa3ec63f7005ac641e4abd91a25a06c284803debfcc38d4442bc796fdde8b1fc8c089c7f3fa0b3abe994bc1d1e3e085fb52a08c555e3132e01a990e15a6f1ba069ecc7574be6dc9a0185e0d70a0b242d873767cd1f9e0d7bed131921053f7eadc886a34912e2d2a06d8fedbc1aef7f6ab8e9b96984a1a6d8c797948d1836f501da608d5490cc7274faf4b5ee9479bba7d9ff6469224824ea1c24296f0509c99c94cbd315242a428b922c2b82b8e382dedcc6d0af7fad6c23e4da94c43e90dce204100d43b2a989b2102b2d23fc65922afd6e61e275a9966cdd2da6b36574d8d838e366da1490b882ca84fcd4b4d2c4b0f37a5a23eb6885acdd522debcd5838546a9ed06519a92dcf6c597b832a9032f8e0613a293c99c4b69bb1d0492689bff8a2d17deb2a19091cc04b56a41d0862647e732f7d1637b837266110a46361fe3765fa9009823cb28aa3652cef856cb64f217b98e0d8bb9755cb4d0180d57b878b642cd858487a79898c852de4059f9356b3dcb164ec45c6f26deaf741a2bdb0accfae4cc0dc9687fb612c656931930c0e3cdc903df9a446676522f51ab1a12f8ab212815db56630ae368d5e16209a1877b8d74aa7ced88b12a97c2eaa7033f820eb4c0c87ae07ca8ac8f83616b7895b50707263598a9a217c3c2ce40c456d417ff9a75e01a11163c3d55a35d495799d78203447f53b35cf06e78c3b3b2449f63f2d10c5661573e4fe0d493b0f9ce714402d30530e9689824e7f0b87ba846543e058456733759fb0b3f0ec242a624c1d1b94915b3a81ebb6c53877a7a334500d73642947a948f975cbd13a87bc9d65811860da26915d176442fa9ff5c89115c89f3c009de769992f198e3e57fa45290cebddeeac6e728b07d078364e5bbf05cbfd642e23256e20e858de4c8ea8bd3960fd7e64d63d0cd3301c50c6802b2ed57ce8ac528e14c12af1b189d630101f6ba64c23db12b519a105a82be07bfd9eda65fb5525cd2bf8eb6d10bd26845d70dd06388edddf39af46ae4c26ce8840440941460e9e1decd4c8e0bc0ea55169306535794a07951d9866ebfaa0edbbe1663e794cccdcad6313d3396c8f69b7093e16c9733543037580d8d7e5ef43103ddda012ec422103e305c3349f29113b8ede151bb5f921f160c969b3cd3a05a8b1c2c42810c2b2d7a21feed40cfa66b7699265f248a47167afbe48fbd1b41f20cfa3d6e8a4b1498a25e429480dd44f50471061037947e2bbad279a04b101c8754aff7f340b3932315ffb57ac53fccea48b7eed925e9d7222bebb7f01d57bf62a006a49aebce2af1fb3877f717de90f74825b2c13b3842e1a67cbe51dbe3f8202520cdae84ed7de4f1e3be5bd8d5facb5f0717a11e600ba8388da84fb631f7d746782ca225d88a13a922110a3d05d9a37e04fb4c9821ca0c6f51db0948294c6cc066e588fc799b527623df59d19a0827bb1ca70ca42c7b3f00f65e001e6440fd7b8793f453d6fe5e86f5f071e5ce0f6e7e23e8dd5fc5a512e8f9c9357f278cf47e305908e308a1248f1f8a33afe72a8a4732752e2f86382acba8eef908cbf85724a37f44a578c280a5674effa6dff4b9790310e1aa6bd678c18e4a1d174214c31a31c1a8668acb9104992e8bc1ced138348c7be3e2eefe8d24d7167ff289cf205486f8d57f907118bd7a9b15d9680ea4669d61211230d00992870e1e4ff19b6e32b398c4a42e3e319de54a92644c907d6405b63c89ed2b23dc054261ee5633a3f4b71276b6e620cb025d75c52d6ef63b41e4c2e54c750c6027ffb1614f598cfb38fcd9d215037e9012d6aba9d3d5905253966aac5cbc7b2ded6a50be2e1756ced4b9321511ba76a407b68ffe6e7f9c210ae901f2436db2a04a9e339bb417c793767e1dcf84bb235aa54fc9e6b6dfaaff8796abd145e8e6a02e41c81088dcb6cf2a4402a49f991b9b71f087dbf06a7913236a16f1d11f289803f6d340e809ecb087d9f1eca6a399b82c6a04431ee9f9b74658351cd919c348cb00cc13858829426dc638b59e1da327b5b172506bae073135ccba1a516cff1729e7d85fa910c30d825e295c564f14fde1447d09f12b15724047b1e7dcc9e390c09447d39b19c9d6f4ae7261abf89935e3905437c7d6649237cebb774e248c16834a156269d00da9dbc9c0c6c60eb37382f6cf2695a4cd2430a6c86200b3951379c275e3c604824a89e4bec39d01744715ce7c4dad29c4033130be5b8502bad59b269be0de43e5129e2f3e90e6d431d69707325604440d4129e44148addd3e5e0376c29d1ffbebf6b9a327530b91bccf94bc066e7c68619681719c59b86a2b264cd1c6c2c7f89ebb1ed8b1e8431dce8c5c3ed02656cb44f59a040ed82f8a99187e354168202c746f5abfb93ad8d29af99d9a01717b40bf3a9d5994f0b9558245e63a35a5d2b5bfb558b7e904379a55173d34f3e4c446032097e40b13cc3aa263b33209e2b7dea06ebfea42baa1b91a1e4937502be1e36ac13674a2d72177364e10ef4d887c52e6cf858cb799fd0d38d9d4ed9866ddbab4a15c286b7d445366f7834861bb2f988b8b0511fb39ccd10444127ea48c0f455d6741a8996d15a3bdf9abca600d7dfb5acacc9aa3140f5b88886a2d211a4a3445b124e7f01a9f920478809fecbdc717557d599c6a3a911c2b371942475de1a9071495092a001f8b21f47b0e20a98184249b21741394dd3e8499252d052786b932496e72495bff06f2f180593247b0425d8e1c1079a0014d0bfc594ca7cf2f4ca7b2449d602950b4370dec843259dda9124bb0476c5d07610de70956281d12858187889f3e16c6ca9f46d87dc852431299140932a3003233a25ca08244940667c2741a8adacba3df94eb8f0489de4ea116ab4b8118c04f5aedd8fa762e3d587d5517342fb1b8fa2aeafc49301c13b7181a0c04a5d9240a4460b45ade3d8a656d49077ad82a9d3bedf106a1f6739e4313bc1dad65618d3761fdcfd877c398aa99f368a07939f4f7a02e49d7d9298391263441605ad3e2bc2d394d463880e9cac8fa829eadd570c5953a71e58492a40f4282457fab44a68702a10e425d925b5e1c977492cc4e9bd67a9c0702419a030d11fda51dcfd468ed2f0da0201dd1248eae3f40db4fee95ff6d83ad0f1a33b8902a4b801f989fa3c91e5c940b2d9d033c6ab23c7785785a7be8e6b3e3d98a879a7e31f792266995e1d1539fc337b15cc835a632583f0229d559f65d183179acba396bf131db4dc1ceff2f143255afb6ead7369052b56ab2538121ebd45978df5ef23623ffa4208241b7e65a93c8d89e4d787f6393403f40a7666ef0a2158cf49ac25e0c9fb059d64824ecd3de9a457e9e6b1c2ce8a57c48b0a879f4b52fab9a519b0203431dcbf28856843c1174bc71929de6bf7accf33ad4c3476bffaef4a6a00a8c2169542cdc79150d46f0b0b3f035a6eb14b1b082e601ec500ac25ef3e8aa40a442e2025e500a94dc310de5496e716619ae116110906ba241c4cef8a27248505dd9c03b359066551be8c15754ce6972ec9a105a1d442b8d60a818b199c59aae32a346e2658d5512f9c9b1f7fc237506a22c3a13e144ed184c196335f573b2264a1bf6db385e96851e219fd32da3d109a2af76a5178f7655a878760b5c27dfee9f52512ff06a774fee6fd4a64dd2320ce482b071f56a25713dab9f7f312217ced9f3821cf22b23f0ea998a46f417c1331d8ad3c9b61826f0e84000a6984097c4c744382f1bf05aaf3d61b4c9b5107c104b11762679f96748bf555eb259a5fad292dfad400ac833b5344cc6ecc36c654ad962c379b1a37860f161d44377bcdbfc8a91993a8521446da63b5404e4b0e81e12b45a80ca76d46de22928590e07eb12c52432548fcf2080ca0d476693d2545dfbe8d5a2d81d377c7d387d26ae6f659e64babbfeffe3213ab1ac9ed2b916f357d2b46f92d2932063aff2b8b8efdb02bc5268966c63c1752669d1426205d943e8ad5294f0e5734efa5e6c8900ada01a71dc0a5c13e701d7a492701559b9957870f5744c57104e3485b3de313e524274672c9933c80815d92193a4311b0d499bae004ba0eaf77fe64fe2f80096fdc872fa4f300fe924dc44ba9998e586400a94802ad0129d06037cb8b057edbb519222dd5da0d258066605081284ea5baa15996e9f079542639a4c654ef35b28905921918b230330f69561d32506be4b41478bf2b943791a19b8b0c9eaf8d92b9f07d18236c376029eec1bc0ea685d5c6f2c81494527cc2f53cc85eac133436190b289438c1c72591a9837e1fe0f902f854149f61688c0a5574cbdf474411135c346d52ab8b1a360ffdf701f78921eb4eb6efbf7b2d01fcb0fabce5489119d1e81bab96e224811ff7005b384fbcad07260009735777be26df2d0c227fb8a63f0cfdad2e9f180befab21019db0a0f9f07f3bd31c802e47a14732cddc83eecc08ce711e663966a821b0f3878501247f9e3f240d44d9f01d6d9240ea0fcfa069e3b4585fc1eb898580e55304902b1e7942adaec409472a64618a0e3abe0272f3ffcb8228c91dba9ddf5540dad195d713ace15254dc37b4cef42eb876057a36f1111a503e82dc98e001fb77a3400a18d53d10187548fdd63d1caa68a8a7ccaf35a30bf23e02c3350ac610837609fc830ee1c77d6e49ff312a38af51cfb3da33deaf78dab39c1a534692f7653aa3a24f7374bc1bb46a0acbd27cb833c3a18384811c587dd5736ca66b4713194d9b0ae8ff93f75f880bef2ead36f516b49cec18a12f78ba23896dec39afcbb8f6cd245c8a2f7072f6c0e84c29b43cee043b7bb1115b39bb680652a59a3d34c2b973e8e2a71a9e120e9cfb6f1c6f8c43cdfee431c22b826c0f3518beb85c7f20d03cdbefd867a68c10079ea500d1454245653961617bec5976b97d9539f3162c203a2f13d0799bbe31c709cda53c98b846d145c1d0c98462c8d1e8fa2314c88e6eeebe8bae21d8e876386a22c2e71036e14cf84a32baeb020b37e827e7ecd19035fa53dc89d8071e191f04f0748d38070e84e0ae84299ef4b7137d118b08863c525de76c7d0f05663a7aadaa939f9c02df5186e6a474d0ac0be4d6895988c2473c39888cc271f9ad36b58ef923f54dd6f9dea135d951fc080caa787410e876f5d475685650ba7d0a01f73f5911dc63f07530ee4e801a0bfcd7d1c9425c2077d8cd94f83104b7012c3dc706a97f72ea6d925d139dcc76346dee97cd25e079665dd9dee3228ffcd9c9906c53bdc780ae2d346db6d1b19d8d1f6ff8ef6fd74aef7a7bf07ff140efc612a2dc5d0b9b97537ece05da64a93bacb9e072bddb1017e10f7301d9e677f3dfb5d14c1669709d666f5a62de380625345be5b0d8c2b3f324bc177d5422e687670ee2b2a705983a785ac6628967c8c1242fddb5c4bdc26c2a262af1dd14932d1104a9d6bfc307848f4463f6b802d0ceb680ef8c9880cdbaf15cca946553d2654d499becad69b4eb4f4d766d3559d4f15457a98a1804dd9440ae427504356d0727dbffe9a986f51d26e0baea25f538566eb293947190fd520bbf3b0e86d018a107ad4ab94eeaf42df102e3216a6e409c61b720d9a6518a916400ac2a509189a23f47617d6019169b646fc227e62295baf60c7ce62f514761522ace86e8730fae4a2961ee7627c9eec7fa8593e15652d8d1fb28e2b0686fcf86848731884700fa7f35c0df711a0ee2a41ddcc957db51d0ba93e393b991baed64472bd567a5dfa1b760ff32fcf47f55b336d5b93363f78b853a75e6a4ed0d6c3f57f155aeecd86a7b92c129e6e21f10735b00bda93c51ddc4f94457266187e1eb658c39dd6efa3cb948b570b81c8cbc15b1476da73544866aeb6f3226372d85e16a45440aadc1a9292b27750e0fc301a87de834c7a7158c6ed30864a0dc24e0982bbd90182772cc47202aadea7bbc207a7475bfb7461d7455566b6d1e0a12fd124a6b019269417694ebeaaaec8eff30f7274fd098f773964c5fb7a8a45989319de8e3a91a90dd5b57cdd6c6bc99c8bcf454311f4c529263eb4992f0925dcda8192721a331f7906cf9a07eb65774c5957ac2172c38b0072ddd6f4ab6570e648a42ac0dacb62f7bca95dabdb682258a2e23ef7f2abbd32c864087b6bda32b5e4089707f15ebd9574c3a2a66252cffb6d91011a7365bc208c28843f7bb37975db108e04fadea3faa581564e11380805bf8b8386ee043f18b17378ebb238d4f1548922227f06313499fd6650b7ef86788f6cd8c37f4ac6ffc4970859a3920195bcde8d8f383788ce69d8a9b67ed40a8c36b1ac84d24db39e0722783b2b946ef7acad70185e2ae8f68a71b8a36a00e6ebf7adcffedb90a4f5bff0da1a6ce17013ad1d9725e4a4a703b1284648f4c5a632000a0f3a78065ee0b1cd48c6c338973fad80bcda5d75d270492fcc14d1d2f4e7ec79a970bcb2de673ec0abcb11b59648ff3937da7baa8206995dceb0d52e9c10261e682ddf6b80409d7cc24b2b9f167f589fbbbc831acb7430f53643f8467b4640aa36e30f318b4f41f78eb7149c04ded0d20bec11081385d0e99e4136939c64c2337a6c5569bdc8f0b0ab3c91367ed628cc8b4b5766923d02d428435e402c40fc7dfe4c6e227f3fa736a179bd5ccc75d26d09bbe712549da06c298b00e547a53bb58a9fbb5acc284e82de9b2d4f8a1b131c2aa8f614e1eb56bd8a592f5d5b5eb80d5d6b54f240974f9c50027307ef63015b43e7194081190f8806902ce2e353a5196b38a32cdfe5081a374d7c49f3336e3cad9d8daf701b4a5db7679943a4d3a1c3082a324916441dda37756b001c81f7bb23bff578a82075e03f7d91442885f8ce996c9d5ef2600fdab6fa6e2abcef9baa8eb066485395618a71dddf2e43a1e445695cf8e01a59412be20dd0753de9728d26da0d95825ab264cbfab65d62a92cfe5bc02939be01129de78bb4673185e0e705710fc4c530b61a2bb9acb91a155ae9ac1feb8ee2408fdab5e0daa892ce6f20ede1861a5ed278b8eb8cbb566dc3e58b9d4ef98f0ea7aad80620bb43eaf4e851f682a4a1fdeec2e97a01210f573a98ebbd6b64a5ada90ff63eeaafd23c5248b02bbefa66ca67ac1a4dcbc39c3bbacf813f0210b246f108b920e0e046cadc6e3502860d68e93dcd1bf80f7056ac7a85d462e6170dea6bbe65bab04da6f967caaf1cfe58c036481a25a4982bbd2625cc8133e7057c79d7abbd08edf4109706697b36b590a622552c7cff4a36dbb921e11dbcc29aa7785841ff0b1b3846838e8c3b18a4de714a297e053d5193fecdddb226f2d05d0182013382d7a71dc06d3c5464ba2120762d0900e33ed91be9b7d24ab7af03e7ea00818d27f44d42376cb64dc2c9507513b2018646523224d295361869c6109d0647ae57f88d7f512bb364c91bc54a71053e12e7b4f3709f30c03fddb5448cc292732ef89ddb02e9c1c9ed7ee4b051c14dc3234ce97156161dfb6fc1e7c97867b471f3ab84adee5222c1570d40b602215b2099e2364fb9f6dd1aabf12c3d99fefc96c766d8712910cd55e2702b1399174006cfb582302ab4fc5e4ac28d10f8e4c584e04b98c08d6a388849b9848a976edef2bcd6931bf663762a218c714cad24d44e49d77e9af0306669e19ada549e0048f50d3874a7022c9e570c5bac5bb62e2888720513edc6637913c94b4df75f4220929f63df5cb6e09bd91af0e34a7a8498e9d262a844a130553934c66db4169a25480e115432f02a1680a76177a9d5e8ab11d8c588ad3b2a6418dd769130518898498ab3050eb08a6f4254e44eec7a4f5f9402f626f6041b3df44cc2b595af5b70c00cb47523c36282298e9375ee2fa3bdc1f933fc286087fa9ce323ada2181d0562ea8748edb086bcfb0d7e2771199ce29b890174d8a8fe63978d15c9e0b6d403e89352f82d9938290192f0278a5b41e3f7795519e8f1b8ba9d200de0405db8a8a1cf5c28b6e639509f7208a91563b47855aac1c59a4bc4e187797834f1c0e24f7551501355e64ed4c0294dd52e22130005c53218b30990575001d37ab21075c01c4d04e750a0c828c5d17acb8049f1a4c16a326ab4a164379fb5128e3906ac1b98da59d6b407b562cc951305f8dc28a3211f104b41d0b100a5587d835b3f4a94a7ef2c8d1d5bc635fc8f27eb037cbf1a2768df3d59ba9fefb9c350416e6dc73b176cde855ca47c0c8c6762d4b11273f9cd41973ed71fe582715e7c190b5dad79e24f191f2aad434716e71543f43c0e87cece2aba74213e0786d89cbe3b421449e1bbb600da6d40bb0fa6d5814da4a071d2c4536aaa4fa39cd3fb8c88f92a628b97c2b3ed5d65578027c963ce62548595d54e666600b6f03d3ff8c5d106b690687313adfc9f8b92e864a0651daabf9d753a0c4053a0f99c19dc81ed41f39068db9c29455ae2281e8fd0cebcfdec6e0cefa0beddf94ac327abcdb385f1669d6ddaa17dbc8633be600f83aadf6e71d629ea7e394525d40e4761c47b0d6aaba687f23781229b3e1609a414083bccd2cedfe200ccb13c329eb94e95d4687ef8601be64ff218131ec34ad5ef78337b0cebf1f556173bd27b683bc5d0680dc3b9248fbd7bd276d11dcdd2c676530db8d4b7193c90de21f688ca509b9005e7768b374c1c9bfe317669c65656638777ab8828ef02cb01589bc473c9175495513f7edc3f7f11780ff4ea6b7e6e3e4c3a91a834abeabf00014805e794bd8fe238c1bbe22fc116f7bfe67ee88823c8f99b338bdcf6e1fe0358c9bfab6e26b154ac87fd187c93fb595e61c2bf8a0fc5de773f32e0f213bdc7c6169ef7ba27fca4839341980e6cf0f92717b16a9ec3d06dd6214c355fcd3423e2e5464c4bf927bd611d9c7897f1ad6c936bda5b5d51f50d924725c09527e4205f0dff2ef59f79de8f2d159b2217528f07ecd1f854c375c13e11541b02c20b740a2a30d3c7223a4abd7dfbd251a0b6b628b2f09d5d6128971c782963b2560d38aa9cd986693fc2ef2dd61648b176b2fb3644fdad77b17d79d6c320c7467a58d03258516fa6058b0386c31e8d607d5ba46c603e2676dba3c4a1dbb33e2f547123a86c3d31359547614a5ebbe4c30612ccb2b9828d366b6b452d9dba8abf5129c2564739b546f5d2a33c0af48a14a447008772a1e5c479a4fd1416c62b08bade258467863bbd358916fb510f43b8f62c07d41c7b27c88ab8c8f3d8d18e58ce18238152a8f21d7655fdcce7319a0f50f516c77ab78649d95769f52056a4d505f038e1b445665f3f3c04f96ee9224ad5ecc10e6f0a319d5c0b1447bd0dae5198257074ca78c38ef23224a752f1fd27862631f8335b06066ea01d71191cde55ff2bf8476a2583fc88395510dbdbc50413f45c21a3793ad5504dc637db3e8624fb19565b20c1ce361b92c04564f0b3b2755e958097a06db02dd7f4272ea4737150376b545e31ea90b194011306fce1a32282333cf50901053bfb2f6ba6c84a2c99bf0a0331e83bfa44cb9e57a43cb63034cd18222491309225c4ba2c89d1ba5d88b255e471b21a1da869a1d319fc88fca2574d7a370ed6d6968663d24c79487f70f68b834e2ac86c26a6298e11500d18a725a2e925926cde6de061b118d4f5ee63d9129366937a9373a6194a5cec0f510570240168d27dfa73f5ffc426deab4c3381876f5fdea598dbb088f872a3373451f94690a5838bd0f95e66602e00c55fa0b897d8898d3ad1e03d92bb15856ece21a804169c1d1d61d013a838f7fb085cb7a6437189ffa0c1021fd31c101f4050800f1db7f40b7dac9611afb0145569691abb37b6c400737e04572b9d265b80c51e30adc90c2d43de4d08a636bbd7240069c21892f630d31eda7d31bc6687c656b8c330f087c772b1617c0ecea5ccad2229963b3b99935c1e6bb8be937ad701086c8497a69a8af8b8ec50c4770a0b8dc2b84410cd2a08a2e9831a4056d0c79072cfed5f53ee2f003d9aeb443a4302446d78dd751af82171a97085180ee7590241b005743dbf7bcc4f98d8d9c94da68ac8802cccc08a981c2c1dd7d207a58143f7881367efb9c1da3d9c520610899d0738cd0f47091605095b461f68c04287ba617f0fe1979dbad5261c83b43904658b9b13368a2d55b98ee72afea7db6af5f9833b0af15b2f43f2e0f899cfb1eafeb1a050062141187573050ba154b187333efea755c0afa6fd9847e509c6f5ce360eb506ef7810869d74497be769c65fc09c16876c1789d83cdfa39a466f3279462aa6ecf43299208e335acba9c2c59e6b02b4e36212c50afb2072c89ba8de824928ab3c93349ba4d822418358c56dfb818226165ba2a612132ee043431b138873888927a1ef4cb1e2e865e1960e8c747d88a0fc688f37206082663a271858a5e3ac2cc82e3135470fa09c7dd05695846bfa4926fde5a61206855162aa83c931296411af15196512d132ac4e04cc78050571d035d67ffe450b96801a03c7bc60d72684bde4baf6075ad4d2d8f9d882c35bf34220344c089cceb1e19185b0935b5cd8f0c298060bf68a5cc9bfe91abf1d40f722d918c0ff22f1c2e9f407152d11789229b2606f30b855a341ce7d4e1917a511ea93fea630358e67f4b6bf0af60ec7fb73a91c6d9ca5025868eb7fcbce51a9c9b1ca175d1c5a890fc8e08b8a6e6de38d910b5681d3cb87827227f2c9178c2986b70ce7db30e5a01a0ba597075739606c6642767cdf4005156ef49b2b9f9f35d0610dc360f1b6b73892a8651a7cf323d3ad83bd606804cd4254b118ae9d19b424c7397218406e6632c0b8ab0d1e6d697d25302284c68ff5d5f81b2193e8f9d60f680373006bbcb52aea5edcf7eedbcaa65b30ae73deadffbab37f85554a4779b6f3876cb11205d8c983026b625d3bc3d7f631e6fbc088d6a4408754f93f737f9a32e2b60801456ca6ecd08fa5182e93c806dca0f2a0363221779259b1c5aff4218185b61d1654fbc7490cc9fdf0f8ec27d2ae0715720026e3210e747042055a4fd077a012268f3f12767a71132de99cbf2b59b8e46b0a18456c372088dea83cb003b96d99cddb24bb25b7039788b0d00efbb6770f5807f3167ccfabdd1107ed58fa6a5e5722b502491bbfcc61f7011beec2ca4a60cca2454112ff8fef2ffba9102df8264578ce5a4bf8307f02e4741f3f95b0a1f94a6c1a78bee3b3b19c2d83c43a22f0888dba600fc2f26bd9a86dc244c305157700811800aa50f9ee100017a96fff2136179b614801f727fb19aebcafc376a159e7eb10907b07102912757694ec39a0d22b1c89902b419a9f8cb31f43e69e36e47cad8a0487d08246092e57828da4b86c552c69cf0a389250067c56256a9d0280659839ef9312fef02c67a466f7e0e7e412424c15cf563e0fa71a05034fb01d0f0604cd61d51ff6b032a289beb17f3431f8394b3d921f58b917d9a37018cc49feb96a60ec81a2678269a019aa3f948b0c3afa5db117aa56225a701499e10f885b11c814da722dd8654c9f47cdc0ca04a234a60ec6927e0a5949851dca5922700d47d026886e05d017c7d0faa863b0ac061cbc8481381abe03e29234fa6402752252c81311a5e36f5f4df553a4c8191ce9692c3414fa1a87fce4c6e90fafb65ef445bca59b817305d80bf2aab29751fbdb82f9e4ff5fbb5eeeb158ceaeb7ae6fa42f30ec134819b69f67b406b9a93cfbcc89605996d9a2c17ae113da93bd6ab6a498eb6b7f5f23dead756facbe7d387c8a64f65807531ac64b5ef6d9011378193b2cbe7dba48782c70e06191692857809b0277b3820322329ee96eb9c37f5600b34cb84accb624d7c3021d7f880f2610d698c7ba854f245add65343e390b5f9f5c15ca96ea5e3af40f60559ff0efa40dba0757fd54048c50eac462816db134fbb3cad02c10a9868670e6bd16197abd2ad87470e33e34de244c102c55234680415e4ce970a4eb3fd28dd1c0a776edc3319fc3de4606dff13550e4383e1e9ba0390c9f560810b10b6247f1e34dc1287eb73dc7b1b0580f2406e01daf90e9f060b0b08713bc86a1ed377255ca07df76e636636a5c201a12bdc49aad66cf835b7c02cb294555bcd63c8f16e64e198b8b3dd22e0ea5d94e9aa02d6050b80c05e19b30965e5bcc5e9a46a9642359dd81ef193de14fd6519ce95edbd67ec999825caa0987502051331716fdef9a958ec23439eeaf3b6b7b6d678b11a09d597390009d9782485173de0af1daee1c4329b70034b7120a33938e45b78e117d64be17aee30963c4ae745944582f17c3a8a3cc6bcd4cd4c6f7bf6c9ee1c4bcfbbf6ca9d6a270eb486c93ef1a76f408287791d95981796c300ef67129eb7a4130f724a930cb4df93109e10a7bc2dd592662a4d9c97172dd9ea538ea97a5e18cd217465e567604737e7aa565d11f85de5a6c5464e2029344d7a818bb5837e7db4da9e61290d8aa9b8da7e50f8b6ddaa7c86fd541468ba12f3ad9901418754e61e5ef814e19cd6ea6ab5456600b3b6127ac90c53b63e38f6be3e38045da64e299c51a0d833c3c6fe8199483582dc0f9da4ba3bdd4120745c995bb4947e75e5c693e2b584a7055b957796cfb792bf4be674c9082e5891f8ab6ce6ff24097f29cc7468b8084c439b149e3a48f00eb90d7ec5fd9234e2d42e9928900a3115e67d94d671e90e5653f56029daf8c162c8262c29692a3fd1cddd7688eac2f8f5015c0203afe35823f42fc14e2b27f1428677a414c28ddbaeaae957360d069ddca8136c28f0c74ba180a165563526e1a7287c1c240cd97e3359e9c7b27c1a2b820b605d3f397b384218827a592f494973fc3782fc6e8857b72c4350e5be85041139d48b420cd805a15ef146e1e4c1d51d63f39c81b00da35e794a3e677f0c79d49ce1e6399dbef6e77170ec9fb1d7186f8ca76244b7e83c999c288b0b5a025e4f60375f03e44107ff359ae4b471c88c92ec807cbd5a99d6002978948915ce5b1c142e9604a4f78d826b4f7c3a3109fed91a4c920846b141b563b51dfba9e9740e59f673440e99335c458b4ce567e5c2d5ae96f076c1aaab50a5b11e8c44f811c503d625847d00c6e305ad61801ada36ba119b01472e7aa9a761d0ed3271a5d43fa05f12229ff3142a3f1b5fd213bae98b3316c322ee38c8a36ca19e8c4e531a43d684e0b91894640a540ef0a6dcacd3b3f4a14b0687f2fe39bbe7f92a77c6ad9f89038537e3ab660765c2e053fc1d2b916edc3c0270eaeb252133381dfb9638071a7e43c7be8e6e1a34522b4e652ef0c38dabcfafc2fcb8874df53da98531bab04973105b1998c31cf8afa44f05fa01d9dfbe5c7302b40553efcdf291ab1d0245f7c733cff40bcc8cd12a4a95cc356468270484fa9b857a671e14822ac94701c713ac939cf10b91a92c3630cb7ad0e81d09356b5962826929e71f50ce6575288b92c8eb362bc30929349696fafe693b97f54c3b730be36b535defe5b3842adf2c8caa1782dd278c1daec381b06e85f73912b996195b7aa01a9108c394812683e54c188070084cecc50311ccadd108576e46a4d2a6a737e42f40774590e940a49e0d99b25b3258f7651b7acc8018ac1351212b002a0a82cbc16ec9d8afd2d83d4f263d5cafcbd422d44bfcc8016b61d558573827f578b4aaae5e79ed057c0f7bfe95550032486707fb3d19c89e060e1f8b25213d0119c382ce2523287ceef2834c8a6feba9a7228e9cc5399d0d10d67309b2591dee000b98a1176ae08f4bb4c60991b1c605225be39f2aaf06ef9b28b4aa5bde18284ed987efec8a9d74084baa72dacda0c5f38ff18daa5bb40d257d9de7c82ce0986dee1123a85e4186401ab684390691b1da02bfdf74bc18f4582cf324541dbc23bea9ae1ff77ed8c5e751bb29f457c6a8762469e47058942a8259c77d7dbede125c5532e672a78bc5bacc94de7f1d8fc186e15b3bbe778a15dd2071f52b999f166477fc9185e39b4999c274c26bfc1c850e8855b384e4db9cbbb5aff82508a0b81d94488ce48c80b0d1bf8d84decdc308b841635d4d04b0861aa56434c5db938490fab1ed28cdfc8be80eea84f71b10276f51150493b5fa64edfdf707bc49d5c5d292b1a54697686fa2b3652042d737d0181eaf8ae60abad2b89d9f848e0bac18c9fe780a833e6b449980f87e28c7f352d840444adc4d11559f58cbc707eff63d8f1a0928109820ae08e45f20147d0569e84fbe94cd8224879cb33e806632fcf61d2e6fae9417bf9a9a7ab9d83a22f39e7a0ae6293edc7411bc485645279e8f6518f301a80a5ae94e42c1aedfdc81aedbdf7c86e30a6ca477486e6413961ca4f71b6c37b182a070a3dd1093ab9e336a6133a6a469443f1ae2596a47f0fbbe795465eeb68d64a34d67e8827e747106d70c78a9216149ccbb3cf4fcf1ef966e5a1ef49b3ddf670a3a657e65949a9aaa820a2a24cbc40b11e64c76e91a4b444bad544e2510541c114c7af806d888fbb0ab6525fc30337a749c344b74ea0f8fa33ecaea19d548e34e5b74571888a2d985714aa6acf5ac29bac513527df816d857390968687f571435a67856a5f8a48f64e3761f8f29fe70718336e582626e0c7bf345a5c953d3b051b5b84e3960a643858d96d672b06729fcfeac10da8f8e735e9a8905b3e90e908d8329f0a18b83b492f4a1d86a76609b62ca739ff07ad230c1f637d549cb1cf163aa8192816f74a08020c6030185680405b15e171521eaff18f4679d74e3dd7458f81edc9a15015b9de8b70d488eb028d61a523696f3717f4f6b9010923f4e6390a2247fb52ce57826b10e751857e8641ccacb30205fa04bca546b35c25e1a97fed64ec3093806b329d5f3657f32baae80b5978adeefe80319471d6a74ea00801c21e43c33962f7524b2f8302c99fcb80d03da267eb8b93ea8fc576f21a9f01300408dd3d6c011ada7539b89be9a9e68084af2909a35fff5644bc7a04e5e2185aa51e6bfbd8173bc8b0b459c727b8ef605c205aeebc63a99410136ee29e8862350b8bb81909abe59df4e35db12567b324020e23c060ad013b45c008b7395e2a1b12253abedd3ab8b4c90ae4d0a436781d1fb9ae6383c03ddaad33156ebc02f4b424429cc0a58b93d3076b879f2d53f78a3df720cfa796718b86b813a0bbd088a726c245e6c3d158a57450b4c83ee82320396cd51724cc7043d6ab5b6b0f5f7da4917ae6200b0d03ba5c512fbdfdd2fcae2622465f3ef1af88978f0f01c5ee75db01f44b659b04360719acf00a03bd752fa949487fe4d177312680ef4e392602ca01774b6720d58dc9384037a797b7f8d001a94ef0bf129e4a15d8f0d48da18f290d183468fac08b0cd6048171138545a3e9f916b46c9707485f0eb39d13804bb6faa01589e62ffaec9afad0363889a131d87f710e2e7f6cb9532e85fe1963c7a5a8431bde815f2eb85dd426e906f73ff0654e2a8cb90bfba5feac39d267f021bacb9824219702c0a99725bd79944f237ee8345d3465367d651f116fbc7c43773a0f0e94ba512d926803e579d416edef83c48c6df5c7d52bf04b8a0af6e242dd8bbc18ea0170b342544ac62348c6572df2df608e0340cf54197a9443e325982cc8dd8a5b6634292a76358595482fd3a0e1fb7cf1a2dc46f0cb221112bf3d8fea8decc438756bda559e60437b3ea5fdccc5cc3132d61ac7b1c73e66202cb4f7c28066528a89d821cc49d28546525b09e59546d1c5e57090a10c48052bc4d515f6965b854c33f759ab6a1a89d5b497a36198a540e2b3d436db6c97ba0ea082cc327fde09e4eb31d2cbda720c051f5f9b55f4682dbfcc234127cf31e41ab5fd8c92f31c663b4d06bf1e9f95fdfc89cf43892a024c53830dc70150bf7671b43c5af921dd4e0575a55ae163ab2cc961685c9e2313f7f6fee738ab15e26b13b6f63d885917e2dc140a98d096c8184088c3d63896bdd45013b9d6d8978f4ee491486d2a2e8db93b32f84bab31ee4fd8f6daf9c52afb5a99cf725b7758e8e6d2c660ba1dbe731e482234fe1a7d74531639ca1794fb4e730df7c720169509407a22690dd1685cda886cecb00be30d0782223a53a891124bda5bcecca73e87aabc4fc4056726eb93d59bacf1ab02725d01e9133f4c3967327ab5ee7efdcd5bf90ac49c2fc14a311c61156571f01ae44cb3a3493f6f594737441a4ba24c5c2655f07bf9700a8c6b3cf6ac727c9391ee75523ed6ac8ae64f44c9d98dbe7f54183b86aaf5fef3304a04f5e9d810ea8352d22714f8b7e66c00696f1f2b3ac9182aa1570424162667890b8299c9030d0c61c0a660a896f1f2ac30933410daa993e880fe8d98e94587706a64aaeb62c55de1e9aa1cb141824fe2ff94c516243cfa2c08e7620a4b8264fabf00563fff268ecfce2cd8b1200998ca93183eb835a8ffda0454e2aeb3cf5c0a16963bd40097d83d55b8cdf73bd77d8daa8ab72ccc83dedc6e7526e8bb053b14233102ea8235603a55dd93dbc8967935c7fb27f1c85b47ae275e8e562d4bc7f3f277ed2ea588ee45e479f4aba199a08c97dd259259341e0ac08a61413a4e1d8d4bdccd6a7b0f4baabdcac4210309b4b41980ac5b1c1b922e431286b67d1de9c7f4d9c9b86f2b1bd5134ac264b45f95e6e305a99723d0a2e2a20a5a8fc224b0dd1301a44cae87a9d82301f9f1b81e1282ba4802e152a1ed6a2e681d805c571a2d5164f461ed6d50789e88fc4dece42ed64f4acb43b73dfc7ea51e3048f20f9c0c7a05efc3df88b644911f2744195cc4e5862d167f01c331316360c2ea08ed148d9206aafd628b0d050355f2b69e9414da31311182eefa5cc771371412520f757622d767e3b3d33bd5882b8a60b842851fa4b2cc6f9d01f4a7e793ded8ade58c7255d3523fb746b8dbccd22557daffcdf2dc057fc40feeda1a8c485f3251cf8c861c4fad2d5e132044b78188536cfc1e20419934bd8043a6def1d90878ad691b80c7465eb7755c906d9ffabf8643e7e54f1b2288e1473b6a3a21fb9026c6089fe2157fbd60d2243fd7b58ea0eaf050074dbdcd4d9fb53f2e2893428b8cc90e2916d1260227701b8d502e625e08154d758f701a4a77e3cec234e796e8d120855caba96a74156ef1012d3e24fd69f01088f01fc651638efa9b41a2ee4b0fbc2367a71acd82115d5d9fcc2e4d47ff726b51c4884ad6252899bb12f32884a566f6062fb865138785692de5f6f29f7a04bc635a0cefd12b8b1aa6cc04a15966a0b67d8c20856980f8f22a6cf2a6d0dd5a08b6288fa447be93a44dd54a53bd3a04fa0406aa97762a3e8f2cc0d8e19e7c451a9512b36753b01d07632d7571a0e06617bad1f165b6c4634e2028230d25bfbd0abdf27bdfd5552e30d73664eb90d6e8ac526c928f969ce9d85e7f82a068016dc2ba3becba2eec0399d7d5d8683c5508759bffb0f87b4fb019e44d4a57d0ad04d5420844f19479d11054742682b6aa8e2d9ce1cc2c87b2da7b7857ff399a38748fc95e2966997cd2ab130fd3c691e3399fd523df787a295b05e6f9811b0ae84ceffdbce25a70b498eb6060fd643f504c676f56f9b4a528e63b0cf659f01f840ad54d55fc803330796235aab722f0a19c30898b3607944c8932332a3903131d833da87e7ef51e255353042a3e34ccc2800e40e8767a54e9c95e2af9147a6e1e24dfc3396f459a95b276e29140a8c66abe4292d5dd7a00cae63872c2122b091b7ad5fd1e10743cd567b77a3d77d9caae8f6d0fb8a6d1f8d3e69ef0e70480a034cce0d80c879c8096e8673cf87d9e97ea330b71eb5b28de2eb51f104bfa351f0d132c10d5849289f3a527f826bf242829bd38156070a0eb2653fec0a2ab8acef009601bbc5c43845ba7bd821b360371027792d889eacdf2a5d495c08c9c810b4b28689a82773294ef7c7ac2bf96f5c50ae6a05f78e38fe6ac16e23e7b9cd4c4e665cb3098848155aaa0adc32afdff6ac46293c37b44ce4334edc04f3e62ca7bea29303a8a56004d4f76e2998feb5a4636e3820a06cfad1797dcd1e2a10bd11eee2076841a8ecaabf712b0a019cc120b49b46b73bf6994d7acdb4ce4abbbbe2428941bc616fde3a3b0a69cd989e1d6cb062e45d686428ddd6c7ad2c9173e8aed724d37fbf1cd61a1774da01fa8db95b5230924cb30340bf684f05cf547e57a08c28434fb6d6568c701136cdf3979825fa2be1ed6f7a676666661edd074011114510210b5811b342da81800183df5c17c9340229312a271683f05b2ba5942949c92603a505a505980557e321175b9f714fccfd3ec61f31423fc42c4dfe3d854a368c8b8c3ef05cd0cf38ee858a89f336cff31cc7798ab4c67c442a991c3c4d7fc18f099778d426af8b1d4e249cd4a91ce1ccc673759eb3116b8d192fe1a9a41ce26954e4218ead0b652b8b80026898c856ca6551c989e7b930df7fc07cb71021c7713131ad318b8d71e18f6851dc8f16903ec3981283937b95fbe01c714d0f186b39490ae926fc80eb397db65211612c8b7d741dca49d9017262dfaaccc4348006c6ae81c829c2e532c0897716de1b9314023406eb8287964a3ff876ffbbc94848977a4ac0cdb6c42d994a3915f424422a5b596a514acb9f4a73bfb370721f3c4b010cd88c8086558de089b649b5cac454189d1595b8210e59027bdc67a7dd3dd21a33528967e832f7b1f8c7da047aefcd66adea85c505bcaef3fccb837f81f0af9145176db42c62a568416a68362c288a129049b2c931999963c1fb9ca84a6bcc44569c68fb23025b1089770b26348554ab3e4a38d5a0772a1a8d505986c194f41a75eb75b5ea4c1587c2ec69d4ba0c91333b31289bf9500d82eac6c0e0b93ccfc026c4f1b6917bb7a49b1bf0bbe0bdeefdffb5ae0b89d11a731a2e04f71b5a98ec1b4d23ad3103355800fe7f21c73570a1b0341f76d2ba4ee014f672e5e2d5d646a771896daeb48bfb466b4ef3e61485b72f79839608d2cb591086e09e5668c68c8cec1c7fdb1ce1e3cd457aee8df7fe6b7d74f210c971c646b3655cb836f239c69ade53e9f239cff3162168cb118e25a4c35af279ceebfa0732cf6f10544325e35a4ea5821ee56684c6e76d6de58c967e287f666276b44d3cc201c84a8a4963931a69d01767849acf9220acfecb354debabfdb370a27f3504e63a8b3f897310f8e5a655775c17f8f7029804ffbe800bbfc3a9eafd379980070f18a42bf61e8984c55f949d03d72edc4f0958939bdb28b33eb3926c3f93c9a0d126ab2db4b1326899020078b2a89e5c981921b2107608755373748e9049bfcb8cb95c93740262aa62e5b1b390f3342fe6f81c05c202fdd47befef26dddc805fce6901d4778b8f314b9326c08fb4abedf927556a293ca3c6be4ef7e9b1a6534aace2e596a2d11d6ef6fe63b3120896f111c4c3d98e98095c2cc50f366d5ca19ee7babeb12de6b9dfe7ea332efba154af1ef6cc82a89fdbe38ec2d1cbc91171c6484d021d8c76a2b4a870dfa0cfb0a800da76c58ed5f2d88859aada4ae8b0f4cb67f7810bd7d5979157d087b2cf594778cff2db0e4c680c0054d843818eaab52a1635aa99aba05f22ddc49a3257217c79aee618e33818e8a14342401f753bf2f68ec92e194b0199d238c17c41374867271518116a53256270493fdbf30eaab67256b454c2dcdaa241ff9572e3f699f275e6286c494693b3f0b1b1807cb6466ddba9e0f7e081046c14e5095114fc5e10a23aa9abd0f003fe663ff556d3dac2d88dbaa15d22ac8009295e7aaf5c68339749ce0e96ecede4c6c2682feddcce6d9dc7a830033d803c9ebef3745e6fdfed1ec01dc65fd3edf61fe739cf6bd0798c0ebfe3fbcc33c16744017550157a7b4605dfdeabe0cbc88005a0f7a8d031037d8606dbd6ed33d0f600ea187f0ddfc04c820666122af8ddde0b50c16764c002d0de77391fa3d3e97439de468de1eb6168e0f57c3c1fcfc773016f9f81330912fbaf27d1d3e924345800f27216f01f9ed1c3f713fc8e67f4f0fd84bfe319bd13ee1dcfe86568e0e93a8c9fdecbf78e5ecedb77bb04462fb7f7303c803c0b409d9eef163fdcd35e48f7a377dd2fc7db9898c8a041ae0c9cd86b0c1f05c604856fc237e19bf04decba090adf846fc237e1db3d8013f34c82861c13e8cbd050ef390a7b05866fb7403d036b0f20057af7c3a0d86b8cf957ff2626768a0a0c0d3960c5eef3d9b56df57efb3ff8bec527d821c09b79eed4758a3aa3020874fb6e3f41b7ef32e69a62f70076d47b6fd7f9dd0fa3629f7926f872bc0d8a9d62e7ed1d14193c8e895d62a780415181310329303c80b794afc7ab0351369e36aac4ff6dde3b4a06a5fffff8df7d9eef480a413a6ec1b6e7aafdfff77e66486bcc2646199b632669417c469ca5304daa57731a76a9718a1235194029f0f4cb6d4202d34c3b7bcf5856a215ec57a8a6e66656430ac9ce508d4fdc9f0e90f4c7e70c41cb21aca5d49a09230afa24d08324819e075da7a8f4897c26e2ffffff7b2f451aa9c8edf9c7bdd999022d11c9c082bf2b0b0c0e09b71cd51faebabce79559ee410324a205822a750c0241dcb266c3499649576d93856b2de8faff3ae2b18f98b6aeeba6aef6ff77d4ad6a2d69acb8a455d75c5141dcba8a8040388879880941d455f380dc805c6b036749bdc68f5f8edff4a76933205a633633c27f6d3023dc37cd980dda86e2c9bcee076d24aec34958cb43978a610645860ba2048643f7dab6948840987030415fcf48bdd038c271cfa4ec1a88529cee3af6de7ffdffdad3175b51382c6326544d99aa21871d3711a3af17d777d639752d256c935f326d986a2dc68a6b0c084d650ad606ae320f399f757d2329ccf3b18affeb0e4922344903f4b3d7a8941204e5353412f421862c214a26642cb76b2e12b17453bea28611a1a3c249d85071d5d85abc50928224c04a55be74546caebe7e795c2297ca2573d95c3abff73dffbe2f3c4e5de4742a775b0073a4fd82a1946ff591ac82878b0c98540c310b826bc38c49487a9b6973a28da1415fbf007d872e0597ce49d6871da9ebc98f1eca511c519fe2c42b27cada65c885c98daaf45214a405d71a3fcb6292613bad5bba90f5b3eb8391c30fcc37c8a9ab44e4018246be79d14ab78a19bac04dbffffff71ead596bcc40bccee544fc5feb3a148ad698ada0d81fb46b0115dba169162e50d9bc6eebe4798ee3233cb4c60c64f484b2c2728c747d4b141c2ba426e738c8cada6d48c26fcde25e8f9ea531ca59fcaba875baffd396b8d278c1924f75ff8bcec2733d2012aa22e1101333551bad313b1fb584752b8b3269eeffffffbbffffffbdffbffef71cbfed6fd75b4f5a6386b2cab085fdfbc57dd725531e3f2ee4372f0c4f8c4bcde2614f010a4bf8d883cc29fa1dc269fea48afe30ab4f8ec1fb5bd75d842e4497a2cbd105e9a274617a0cbb2c6ec99b8bd4d8d80cfa2ab0b0a97573ba067dbda26247a5c7008cf9f6a1de86c9d1e3c3ab58d6e52291666b1516279425eb00318e70c80316f3523e6fabf3735c3973df922e4c6d0795f9e8b1309f8ec2eb5631a6582d53a07bdcbee39db72911f397882ca726e969e22145fc0363bd472c5d52a56bee75bde3a798e77eaf51a262c5bfd5bbb97a46454e599c993093ad3ec9b241fb001359ed89a22a52b2c7cc1ddd41c4a4ff8ed72645535d5a4485d25134ee3062ea3adc78b6ad6077cc97f8fbafd9d51ce27c7468dc90cf03a9c206f313f2e4549180833b12824149a85e649089954dd687105a9748b72044a8a3d1a1f209482a9c83b9ab32562437ee77e6b75daeb89322051b11221c935c00a589c750ad15ec338c8bde7befef31f88f7dc0dce7d3f57c0c9ca348e6186801dafba064a69f75a9e0e6b83de77918496bcc4ae646b8090d3bbd0d007c77327e13e932a392aa8958233c645ca6689a20464fe59cbb3d7078a68aa24848e2ba823e2a457ce446b515060afa1138fce936aca845daaeec362d02a09485b4ac5ed26536ad84e7288e5ce4d0939bc641a1680d29b9d8846c718cb0978403d41b524df8fbdd7334066c015aa8e3672474ba2d0f3a9394e8e63c7e811e93a6518aacf632ec1a8e102413825605d32de2fab088f4ff233b1c88ffacca8a1a243ae6cf4e7898584fa6a4202f6cf05b719130ada239616af07358b7dedb4ebcb9ea018ec4654d4589b841dae514612ca46c463de5c4e42c388770e5a6a3d457fd61350181d5939cc2f06010df798831442624f90be1b10801da438c2c843c2f60883673251fcd9f9aa5ec50e1ba5db550da2543801012d9b3f4b638dd2ab08ef5bc9d6eabbb7b8603f112b678484a0ed1652fef4ca2a7c61b523612e1536f0462352011a1ee3cede51c7838994761cee3fed4cbb373fa654bb3d3b7be5eefaaa6d1a39e5bc13befcb849e8c7beff39c4588b3107196a2856e491791eaec3664dbd67b64ed84658bafb80d5542e2b7fdbffdd3ffef988efdd53ed6d9fb695ad534fe265f794be9441ce7e950555a63b66ec1e20da8f14694d063d85974fbbebd9e97c579eebdf7fef7bff77e040fae35669c96f8fffffffb23fceecf7981bdc45ee3aeb04bec16fd85148bba9eb15b5a63067360c5df22c7af227eba9247cca10d03ae4bc614a010c30d41dfa44dfea8160485f00e4ed7f3281314d07bbffb1faffe762f7fa774698d592c6d23056e68b25134e6780fb061106e642e314e0d6524f1e72842b33585862429a046968bfb16dafde0c84b0b675b06bd917aad464801dc88d7524b4ad0885c862f788a07e827ac42bdcee5b9af16b36474f9ce873afdeccd49da3e3f44c7e1a8f7e20767ab2c13d65dfae6aed8cf71edfeefbdf73ebfbdf7b71fcb59a74aa736166517076a445361c20025dfae3e7e347d97991ce5e6ffe5f87d87a120a4098b45d5e41daa9fd26cdc00e2be8e2e382b5e6f23731218cdb639b29cb9efb7d339b4219ac98f012b213461660e1613938f6a020736237644c6dd1c95eacccad657db98f487ad5e12578005233a10c1a66c59e23a67e3a62a03f67737d6dd2ec7f4f12f8c71e0e5d347999a1209050c4841547a381489ab749d03aceabdcfb9335c103d46222443b7e067aac41c7bd26688584e29decbf32d8eef963e5b151013504e162d49448477b4d094ba924c7518a245897b8edff6b7bfd884d6988d3219c4c9bfe3dcbbbeef22b1524d92e7398e5391b4c6ac64369dd3ea06d5ea256cfb3b6ddbb6fff7cd2dd0b68772279e239270884d85f4165303071c2aa0ab28988aa4ac774a503b4911c1c184e8db818947d3334789e1950e1d6a65cc64ba556b364236f5d1086ca265ac0e2261d9b94c79a10089ff8fc51d00e0b9f7bad46804feaf74ba6dcfc3ef899fae52243ce406552a5929812581cfaa4e5da368599792f8bcf73cdf9dcf9a6b51a30e31225c45d032f4420e74d298433c1da627d69a5921cf712b708eae5801bdb7faa67aee759d838b99e77b45ce8a987bec2c86fbf25cab89e33651d28fa6e17c4788a1f7f9fd7bbc1b8d4a282d2af3625676021b42aa001950b98dba52a362c5d412fec6a98c208d3467809e67e5dab3d5224c41a1bfd7260415dbf59b23041d1240c5d9f778635693230483282c2830a2a2d0cb08036ca5495062dea1b49c43e6387e2b9115997591973048410f256218036db942b9415f0791f1c66fbbae36945e9b0c4f9be759248e17ab3e6c411f64b45482be06ca7a7f36ace2a59b446a197b59b5ffffafebc75a63c67f15ffffff03f0ffff3ee84dd76fef102c38a725321a530476882c66c438271bd74c39ce1c5448ef7756612ff7b30c40b41c417fc6acc4425c554918a57445088d48192b8bff2fd8b5edfdd5486bcc7886ebcf62ea97e71b2e631c7f008e0ece18124b5956d0d73f40df41d82b41f92bc94d4b68746a8a59b99268231f709ecc29630833e8e9b043f47ad301faffffefe99cae772cc7bec347f833a1753a9deeef3f048afdef7bf7cb3e50310af16ae36951f24980d955cb495c14d3c7dc45a19d96d032f5c684157105b3f4208276d386368828095591ba97ba4055690eb5f9ff7fa1d39179c07126743aaeb115ed8e90776843f06715876823644ea06ef0d73dd1b1af1e8a02743a5be29b5901af9ec06e235723201eeac5093dd1e5d3ea7c139bebfaff7a07e8ef2e71c596ebcba412324b110197241b077d829675269242c0bab0e698c03cc7adc0390ac2047a6f756aa9aa617f9625415f83007abcfa130125544b09211b659dbed839838d95beb190ae2672851a8318ba62e9185558c1910873e52876859bc5c2dc0fec85f4c3bc228f504269880a186e39914b64c64ec6f4ed999707e588b666cedb561556fb33fe10326f77bb3b41bfffe807d46bdbe805068a46b0d20f3468fb77defb9dc7c0e1c349f966f981557346a1de9028cb9faf8d02372248179591fc21ed07e8c1226f276a656edb3c059a1a4d9f53a8a9d5143bed7a0c6cde6ef6a6c0b5118ee2cebfcfe93ad794d698abb8f5b7b5c8c005de2dfc8b171a5c9d2f74bd020d3c46010a6dcdcdf6a4ac430d7e1f292730ac21e7f067aeb8a39664318dcb56734607cb1ba7959b363a569fc9d0fc9b08a820ec85039bf12bc565a6bd56bde01b192ece545314dc16c78b668e9ab466cc3644c571c25e1c0acfe368ac42c352528d2ad2cefa06f35456df3c8013e4488a130e775c9625020650164ba9e5a2a1ca95d5da9abaf218b7fd9fb164451cb858aecc506a32115f9e23ab6db6e9e3babe24fe4be3cf24fcbf0cbf2be02c2ed4b6f7486bcc5e24ee55fe2c1e60a3e223261ec50deb3168f86937d512d61ee58c249575854d731c7062efffffbdffffff3f3b974403f1e242c589ea12a37299cfc0c84ac8369c88d474c5e4751db64ddb092b78608707e7460ca46c2a802095a190ae74bbd6f3a3695da7267d0795e717d554effe975281767f57e68104c76c629229b36882bf261bc45ca6a054c3343e79f192edb15e8b402037c1af4313a20bceda0cc1c84d3ab25585aeeb7a7effcf84734c29ef5dcdbc718ead350a2e4a10d919c8902fe89e8069a8c6a2d31a2c7e7a7113af0213561b058d534bba498bf11022ea6bfcc5956300ae930dd98aa648a5b609f0b33a1e545186abe51a659bf99e89f0f1b47eb99c3630776aadadc7daea355dd7b9d78f4c8a2370968e1c6b2fd12829e7a9142b8a55ef773dfaccc47113b4748e844d23d748ddbdf2ad75a1b2946670bce6ed6e5e3bae21d7946bccb5e69ad35f98f972827346a41d82de0be8c74a403fae2a40f5a8825442c38394f9a57899325f17a3a964654a668352c3cd1ac16ec0428a3b245f26147ceabdf75edf796caecc9ae3f8ed6b2f3143f5b839758431285d19c07af14a75a9b458300f98e7743d1f31f5de7b7f417739a1b5cf1569e4c43c437f9213b0416a7edd487458c45bad0f1b7011c1c3b056b6a99cebc08ad4a94b05e341d342ab1630636dda8c616fcf92b8fa033b4ac6b2b69798b4acf4398561c4d00779e50a322294482293ca2433d94c3a93d364f5a8dbe4f34f9ed3f081dba264327522726d4575ad2495746fd2d8aeb473cbc2879ddcb0100807ad10c15f733304eafac0e621f8b1c0ffc55c28fcfffffffcff7f7fd1455cee92d5d2db086d9a0cda71c875a696b6e57694d009404d003fa7e008abcb3561ba3a5ea302681a8d9a7068c0429073bf9dd611b1b4c64cece23faaffb3503e6be5fd6c9719c3c270e240b2561ad800a6aa3e3181b7b5d6163bb125fbffffff75287a37b57769769e7bb7b4c60c16e319bce33dc775798e3fc3463f76d3dc31244699d828018790e32413b0a68975a57810b162f7360f53b270c916f93e41d2da6445954d6259de9604c07d9d5151b83441cb32f27f5fa15778af238173d46904fe8f34aaed988662132dd8cdcfd84911d5980816548d5506a19781f48abf838978b4372192cce29657b70a623a74f57ce07c8d743deef8bf5405d42e6e6a4fd134add4923238613b56d5dd0136c5abb01358843ca35000004f5faf15920e8eb70a2e036d69a4048604db4383c360aa7693666d93b952255130c10e92b66c1ca305e788eaff8dc427474714943a1f21f91a17a920e544b1f55405c24a105c6de225f19de10b290eaa85510a67360511b614e8d8121572a4faac7225a02e2030a8620ec3c6442dd70430614e7e9c2bd8296a9a953ab2fc32c1bca16757910c12db41cada92f5424dc12a6e1d47d83adb9cb2d69871a58aa1efb335a175f554c7d3da4c668fc755dce03afe5f8edff7ecd62c39798245353744816f2a9512c95b98db95b784091ea80faca1291158280d352a49a3d1ed2a2ae79391a977fafedb691aebcc809dfeea8aaa1cddd103fe69e2ffff087f06e7aa3c7a86f22067f004a422c2d414aa1fadfa49a6e6a206ca9b926ba804ccdb4a2205806249082319041080301446e244d25b463714800821be7cac6438202c50441a0a83a1e020100e04026030180806800161404824c4e65292b337828f09f7156436bb5e355326c83d59905d786aa4bf73864204a58fc5ef32bca3c7b18e152d7e4c45829cdc63305905bd1fc6b3b42b968ec5262facc05cd9b078b1a9fb5de6c1e98df7111da4d22f2e79db7437c3b9d57d89781e0ceea39bed9d61090e921ad5f151c8e64f96fe61970a555ca1b33714e2495a7384efb2ae17d33de55f17a95484bc0dd2094140d05268431f3efe278ba9481448d4180f6eda25008bd898269d484dd2023423c29ed52351bf0bb228e1e5277ba2f41f562a6e7ed79e6001cd5f700e2d2571066ff6f796ce134405fe4249dbb767da83c818db85764457dbc752c99a5cd856f3c2c2e93b446eee23e8c69c4e9214ea2e734adcf5e2fce288a182ec9df274ac1e71f2575b86615a8f4e6b44376695ad3d9315d3f6495369044d138be2ce0af56d113415dc80f23728b022b117dc25d05bf3cd320e784978c6971de3f5c02ed88461cbed758142d3159f146d1b7eec9d20d49f85ee6632a6e417dd12f8145ae104a12a3f1d09a0ac63ab3d027bf067ec66a4edc1d563d4cacafa0a675065e0991c4521630a8e514f3cf64b30e4e8e8f244e5d7100195b94f79370167e2aa2898a37d7850c133645f3edfb043a99ddf722cde5501797eebf2a2ba332f530a7229a0de00001d727e95ed54f4475e99573f26043d741b3b174bdca7ec499880d29f2f7a7ee4307db686ae3115ad354c128cec264290e3946714d71b07d608bc982f820b4e287ecec5dd9839d708ccbaf1a5dae0d08beb6a409b57792a1fb060268c09af891c2fed64ab8c92f17677f60507ffdf4d12e7ef489040540d37f7f2492922a0c738b4d2ef41aee52001ea3c5182b7529ed647a7463ebf7b67612943211ab148ee219ff6d84724fef44824d61b0ee386fef80f71cc0008047731e22a78b59ed056431e3fd70ae7d553d4cb6265d99ca0f68d6427ce49af51e53b5a36caf70be2dc71aa137bd6bea19c6f62c50484bbbf354a27c5922c998d3842acb59962d8239f3e35fd95f0eac222725b9a4f7753d32055549994157273e03d6acc78a4fc7a9c4a831c89c24f550a42df416b5df0b11165e0cb77e4240aa9aee1e0183dc4a1e113eec04ed8ab77d0eb853a2ffc9d1dd6731f9eca5c406dd00eb9ad6ecd0d2240ba5ab1a29a00c9e2cd70cc2194cd987ed763e82b6366b9756b27f68a5b75b8cbeddb54c267f0f2084f7259c4e1f9042bab29ee77339113ee9039651ec94ff3cf238f7f61c15d0e7e6be8c1ac286a0cc6229da144fc77c3beaf3a77cc6a618a33763be27c524fddeabd6da191351da309e88cc43a9b7874947a756b82a8627f3783299aea1f2ab40e0b4f312ade062022224f4bcfb4ce28a7caebe47ca24532e55fbb8560f1766fb801d0aa4b4a4394b72a29d4359d21aa296afc1e82287718510084740cfdd3ed73a2f851411cf65646e68af36593630817158d3170f1dc1c8be16605ad99d1b11462223f2a6ae673ba68aeab9f9834dc9703ecc0f3a0934e94b3e031ef8db4ac2c41e839d2b3c1b969f8434ea46cf81b5e648a815f0cbf0b2bcb6e5433b9e61050cceea066522cf9ab811b0fee9029c877aa066143ac3aaaa5bdfd3105eeb95c5bbb2fe30edd6ca0af11a957112344a4eca7b4614af936fbde94d3e7cd40cde83d56029e4239b704afab48b944ba2e8638e6ec2c36b8157796f40216d649787566026dbb34a0e985066890ad04579cd636296479a53ee818c6cb2b075e4c06a8f8fa3ede702cda28964779bb80599ddabac86862d427e10073b13ef96649cbea7ddc4021c6af4df24e587bbab6ff8db9adcaa4f2526fb8c7a5f3a20f3bca969274f4f3bab06275c080e4bbd211c0721c00fe2369b4c00f8749686cd2dde5090b6b0886e26f125cbe82d4a23f3bf3bfcfc9e9c135670fb1051629c7a8a9fc24d748dc7a10b93100a71b019647356ddf678175dc9df626710058fa157ed7f7bf4816a339870d638eb8b28b2d0afd467c722885e711624f2676426d0c53ed5d1d0b21b594fe71bb4a493046b42b3afa0b0b17afbec9a5a68f45c0557ce935a1190f0b2db1716d0a3029cc3755aab5a97a0689049a620fb78960d644ed38174bb4182a61b904547c5588368cf3405d1ba7754f36ff0659b87288ba3bab0262042dae750cbdb33d3ca43b67251e80a1122214cb8b27cc14d2889567132ae2cc73a5925288e07dc657499e5e7956c784b2f62432ff257fafa1bd964185aa00331a93955fe15bde3276f4dd5afe004f8a13f826b642eca08912998b638206cd312297587fe0c05907b45c58319799b75fd43434c19aaa5daf4bad47dd147d0a235462fbd8ac265457643a14cf8b75459e7483af761b743bed28874d1a85787fac5c041a49c82bb11e99b17286951c528a1596407befbb48f1394d08c580586e64697597ecdac4acc1dd245140104bc24f68c440920b4b212ad4812f0e70609fd3945d407453bcfacbaead09d301fc82635e735c9d253fd192958c215e4adcf023f69c6f2c489f4293c2c3a4cc2342a038ad7b0326a5f83e3ba95a94309c5740ae18f4ce4e5a3c84f956315fe94a1288a9c10be18ad0b2e63bad6d118b5399254fa1d39bbffe4a7eb81d7b96b72b1dcb8915ea2c6836876877aa632f3fe79ae42b0d42a1033a4431ebb3b6e7bdc47ffb4ebbc182e2517d34d5a6dbe237ceafc71c84b85714cd1cace7668115d89099690eb6485860b3f207a8bcfcf2f94b1eb4b1bdbf788840ef5c790b988655bc59f0728d6390b0f349b4098e0712e39abd92888b322a72d736b72389444d1a015e0d3250cc89e4df36db86baadc8cbb723d34d0d0af5c570c74480b2eee88e6174d1cd6241e27ef46aae7d21ce0d6ec9c0247f865cba88b9716d035bb831ffd319bd26fc8c83b054aec64a43d978844d7e234492b2d20ff7533ac6b76d7c516457788c00afd3248753eecab84cb7848cf18d2110c26579e0d5cf214c596efaffabd56f305258a7da4662c394206a5e200e9bc19bc69cacd9ee034105a6c684faa27060092cb5421162d2bdbc16fb0481e53e49804e1108566b66349639a0c9e9089a54ac831e12842637fda7388610c7d22e42e6ca511dcb83c98df6498b613f21ed951008127354bf96b0f62bced901540d7735c6af0c8497638a51f5bcc507894c5511b0cbf6d682df3a81060bdf784d2ea63f01e7107be19625a119adf8747e6fa5d884d86ad668b84c1a9a3504c9d13309827bcb11a5f1aab10d7a5131923d8eeb0c9bc664a31a634376502242e2bc6a4b216108340f32aa27735c4b925e8753526dabea4aab1c010588839ffa630455069fb645fd098b28a02310a896898982669e8759e51a8e27510e68b57630da41f54c9d8984ec044011fab1d871aaaf8d2cbc2c7bda963216361ae2c1f1e55955debe98a36588c41bb1edc365a38ef5448c58b0461e6f9246053850c461032fa4f814a9240a7f7bbe05755f55b0662469b0ce2452220d057c171c55f5731c56b5180399798a2b04b818d1402667733d8268d1e8d2db4e83c6a81429321fcef2026f3ad78dddc4760c183d91f6d0d746f010d41b8d1ecc9ad48e0047aa6f48a08df2692a11d123e7a8f9564354ec1e5fc01e48f9f3902e35f51209ce1e4fec4611d1a33b2716cd74c3b8906f3bcb5db16624e653f5c7375508bce8d7598b2c05e2d0eeef101cb663e6dbdcb72c4fb89f4310a5aad8c340b3100d3b0556c6f28f604f4d01a5c2ac68d4fd0b146dc64e78e37e0cd28def01131ebb19998659fb4ad2b3addc1b1079cc4112e3ab2f62aeac6f28f0c5faf07367232d9a361ee84609bbc073c324c88bef2196660ef52984166d361d6981ae366eda4348057c084cafae96b94e6d58ecc41b16783229e10cf87fed7a5bcdcc023ed9b344e224e3a1faa649a3a305447753821864484920f5695ff07b94f01ae267dc506c16d2c83e62ebd0691ebe4f221da94aedb45837d0f65e47a79e6b08b8221d4b799b2ba0126c79e5f51295a96629d9f63a1b19ccabd2baa5bcceb4a684b16f46155dba2c2875884ee5a811d703964ee32b9bac7a552d9e828af9a7dd2935d20a8863b67061a5541654854c6f99715a189b46014fefa745187c9cee91216ce17b383d22b41fc783f12fb5d1b3b41cb3e75d6592d0300e657339ac298fcb2df17adab19542df3bb97cc20074f19bfd7c5cf5107a881289e78426c750d5925e3362b1e50e7d49f3e5fdf7eb452b203f50172d2ac9935c754eb1eba003e8310ff694e88804de9e75d46a5e2732a6c8ed0797b518ddea72e7a5e9fc3096c9085ba52120a1389a4a26ba6cabd5412e89c4d7dbf3612c047827abbcdc557660e39dca8546d6d8607f6e41635549cc0129572459dedba7e06782f41e1bca9a2779e4010cac14235ced5410c0712f277fac4182e77b5bfb3ce8fc934b41913f7b52b15d25d6870c42d57b257bad247f982778692c2c44d61e6606b690a22bea20f535a168fe551d43481187a90a18272c5b7b2756ba460278e75d5e3bc47e252c404b30464d68d737a44c1861792c8240ef1e78ecfc923c11d017dc5b04b7206221a3efb1aa013a8ac5280661017620c5023ee3886d2c28085039d931d12c00d775462051bcb06e80939a496a085a4319c445f561655c6bd682a10f858b52f4bed105fc6785c1190eb777bf1b26c483bf92737f6dec224ecc9e0cfd7f4437d62a692303865393f939d253ca1d8aec849404df444ea79852a333fe82b13ff1dcf6db576f6846f50aff510e3c4c8c28b541dc7dc6721721d7e2e4bfd43222b48b26576a9dccaed08743531237398ce9737b231ae248e8160798e861cd8b6a9fb8cbd1242823d68c26b522491d1410793ce191c1c5fe042e2705b555a4324a974b6a2e439befd32400a23f663108aa228e142bbc823c7ade4b45b908fa3bc01e51ef9b0ab7dd53c651e007c8158f4fa249bade8a4d34d4f5d8737d60a2e1e7cf1b7bd447bfc0e12171b1809fa4bfed0f73395c14cf76f4682c1fba414640a5dc0ec35965acb48878a0c1c0ad9d7071463089731d9128d5ef6c9d949ffdbe0adc9014a4922432bfe1f71d85091d6d29b518e0885a8c2a384fadf9ec1cf84a5c5caee9671d3f2d0609bb60c595d5d7b74f2289a53080cfcb801cdd7df0021b2355276c2279d1ca218dd8ce9213ad5cd288b3d7b380bcff9f7107a768d4127a6835b0db9401bd8466c20884f10aed812a4ba55f02c8fb99d636c7716c8d79aba0d5a652a58131891f333f590b7548ee6518135966dc3c296f2d06e2b3a4b374837292a0a58cfc0f01dde61b0ee917f1d4565bc9dc9d2266cc60a28a895fd7f7911813b3a79fa8ccf883b13032b8098a5be8cb4421d2aba132b7c42e52e6c691ae5a991b0ef71e7dc29310dc3a2a1523d8bd04c815d4deb9d068a2433a5ccc6b9ccbcf848a40f1361446d96cbafb6336c85b84d5113016519bfefd8d4c3407b4a4c136377aab94c0a106c24a2066423f858ea0a8b2e4d0d16845582eafe9c5a8d9ef18072e09d0c89444406a5d9b7cc9aa77186316f6de3ddf23ad88cd3bf4bd6ae1af75ae484bad2dc9a8176f2da988675b652c87682a0be264f9c6c40528c198ad82592c9f0909a255b9f555d3a063816f114da9a6c09059f868595f6883e6c2b1ca41c663f08a687bcf5ca51e66efdb90b9854a67f444949e422b0982a6ffb8e2821eb1627c9609531e85a05cb5a65a0996df973b4118b052399bf9726701999294f4253533b913a895f380d56a7ed4c664426d9a02c6bf83b06ac92ac9191461a313832535123656b11052f789fc5ad8d942e2f5271afaa3acc3625684103b1ae8db80832e2282060ad493d6a11a620388fe92bc1a3556f532bef4ba44b0e220448e71664504ab57cbe00e736146a452e7cc9da0f9761920a08df885fe74c664da6f61e85300c8c17ef7cf0b3b4805eb0a99254b674e1984adac2ac47fbaad87cca9bed5e30d45fa03be26d353c49f7a5cc9028aa94187609c38520d664e29d4118895760e68a8124d0ae89dc9f0dd691f6a9c577b7d32327087d5ee5702e8016d010593520f65efd394f9fb5e1ac59cd267150c2901879b33a0d9eaf7d216359e59210ee575afe4933c5572548323bd9cc68b744a05a360fd34ccd4bc5438a546b65d05daabc4cf360473bd15e152685c7cd44b384188e7314855e1507a728ebef6f638dd3c6b9892b3802a3b17bcafd8b11475c9e7cb293f9eb24b55d4cd02c177013e8443bbb280db85a54c02f16714d51a7ec5d670ce0d53430ee7d0b925f5d922536008f161683bcaf3be5fbd9f24991030945419ca488e6bb6f9c47c33beecc8d15199e306df9d9e852a7a6aaacf8f930dbff3f74c9b5d1fad5031614db3f2aa11627252a2726fb564bf35f111af02cd7e73264b997c8d2e36909bda8be343e33a6f4f07f97f90860522be4e927847ee5b3df9be6f5e282d08df5011303b83fef54461c5a4605db334362440c0a7b1485ce427c64c67584cfcb03f88d0b6125f234ea044123cfbaaa7020b10eb4bc74b43b7662d66b84890c18e0b02ec3f2121a4c4e05673a47f2207a39b239d68b6a9074fe1d55380ea29e3d1d27424fd213e9bf12ab03c04ec07ff3f93a29a73bf0f4bee7859582ba44fb994c205cc8d8d5c990a593a9d825eb00faa815d8ea2acc632b217905183500dfcdcdbe8b6a3533387a0f7e8791785b76e91b35ca3d150b53a9f7b254e91549a0089c6cd150bb8eb827217f56d11d85a2b5d50377af74128409f8291bf1fd5cb777f2966aedcc9622f04ad88d7fea9a229cea6fa09bc0ec97b538b6e3be94cab478d2f8b188c7ee2eaa103b8b24a5c23619c4f2c3ae8d6dae851d48d268095749d1ca1504551d28a9eba24816897b897ccb622a79d2cfae198bd8c1d7bf891d24788aab5410957f1cf9431ee13faaac1c93b4a52a46a5b91ba778f1e00636f51f5e24aa8e8105064b8dce58534fb1100607f2dcb67fc4646df322caf933c4ebecd1b3c0269294d9da479cbf564d3e254a9e2b1605e280bbc5222017379b2bda5c88a07ed72d86fa9393daba0d362e53b31117b9a59dc238613feb2b4e5130a8db66c89e085b7f45e35f26b7e96c3224a91b264ca01a91d85c08bffef32c10c2bfa0185143c1ef5508b39a9589e34c576565e1e60464de36e46cb384feed69b81d13f26adcd25d37215e99d707fc9f3939d174c9cc3703b46461659ee4e35e368d5b4202d70889bf193a1644443f2aef7c72adb94e85954cc6e57d229d0a1a13450798d65de1dc1a90350f39ff543294439cd99158793a928556c187131eca47bc08ca46a301e09ea1e75868f348bef0963833c0b44444f60af2bc8652d6d3a4dc02416ad4e651fd57514500357830a9ed979aecc270992c153944e4516b193c07ac385414f8f5bbaf60d234470a153ac6c6f4c35223fed049819ae8e998a8b75c6d97bee55b79da3009ba2125af0ea787a6476376d06d416edb66366c60d88bc6251bc446566c36e963e293a61e42c5cf8bc24b957b9e7307554e31e614771b20ece8a62911971e6b542c1f3906ebd73df1b4a8539f028f2ed0af417b68fe1255d30552cc81279618a695e1c79de7955b4b04ed4e8003451c010aee20f1e249cb427f056dbf0dce02b489a7108e3f589280f575c0cf9a6c8dd5621558b6992b8dd3d956276f7dcfa76cf4cb932ecbc89d4ff104e84b29bc88ef14d4c7ac2b1a0550b8c58d7be9adb66c4e53f29ebf6461827c44582b1c689f36c72a17ec05d59d373316dabdd93ce865b6f49af3ee0cfb02288404d1aca5089a3dd58272abc619b3b14612cf41c72c1b6aa63b3c21985a478cf071bb5edeccb5cbf2741d442cf3c4ed143c76c1894865c92cc4a3e9e8b357fb6913c047dd826bb298a7ed9ee93333705d019798806d59d6294686911e3af69530cc3071630521715771624d944323fada2401c9c0ddcf7115041e5e36077a34a898c68cbbe2c3dc8db1d658d5bda88e00154963197bdd07c38954c1bc314b428c90290702a7ef46deb3d2d8fb978cf45b80b64a4109ce5584d7290827f84f7d539848511fcdd8f465429dfd3051e4662903a13fd6599e1a9131ce757c3b3541b90544c86fd6753417b24552945969f7cfb9052b5750a0838f89d71da595020e2e0938df6a5aca3dc287fc7664c98ee34153a0406607914fc205a37b754e1b629315cabedea71cb3f4ad0210d91e92c9b8b8dd921b010cf1772b1a7c6ea8684a5adc0b00ad83d5ddf3c03a16eba0c8b7a94630f88b692952cd2b6f8164a7ba0f16fdfb3a418ca9052d00eca8a482229c5f9eb398bd4ff17a0426da0c5dc8dde06a957c0771163c0d4001ba526ab165c48bd9b76071c38a690276631a3ea407f180c668e47f9bb2ad984376fa6a0cfaf289dcdc0ce44087a9d1212303beefb6d49571558ef708c4cdc27a2599daff977f82a1cb81da5375552d53e0d260bbe482023902e20b6a86860829791b67ebe6f974503afb4b6baf478f24341a7554a7bbb23d44323b74ef4f6fe4347f6c79dd23ba015ae4a45ed0092b8200b3c6024a4df7413c2f0384412e7dc743532e41202a835bc57fbe75e95bcff51f990769818ea46e8c5569e88e5afe450350ef2bede8359826a980fd74601b6dc20bff70387abd641f840a1dbd86672727083eee830a7fd7aa02fc63ed00fdb0c5409a721d887220760375753dd3ab3f48429800a023ac32fac92867b7706e6ef94961c68a2acef82438f2b973db6f14efea9e57554db1763dc0f9700cd53d79137f5fc48d2df470ce5068aec91cc3ccb227e152d63542c1f469266490765134e0ff3a185ca6d3b39a215c9d19b14be56e2f43e350c6fa2be96c6ed9871a5fd92bda49f32024b0f34dba5650e10d47f788415757ee5094fa485a08e9254472630ebc6a4e2d5b3df9f8d562f2feb7fad2b5c2e6937ba8452a346c3ddb80a9db75b33143732dce8747757dabb842a8ebb298e37e57825ae4565c892b49b26b23fbfb39517baa12e5e78c3103f37eb2afa7d3e39c303de903c31e1f814e60f1c2b9597019862410444d93b7175983fb047576321060de917465145ccb80b7993a95e828265ba8882ba22f12c7bf19e8c814c17dc2813dd1ee83f6af8471b9e23f15a18d3a34b40d1e3214a9d289755f8d7e926e5ac455460deb0ab23d2df11100eb4d5f6499d1206669f2b16532a6fd766ce1ccfb44c7daf89a8b5f710e30aa665d7303abfd51f8aa9722b13e4559ddc36f4077bd4df996724e3bdb471d7b291325aabba63429d21d5c7c5a12e1d320e1ae730860afa2dac23f9f6ee25ed488d2bba4328e36ae0deeb8092425f7553f2c35c1d2dbbc505bc77f46a586142e49d86ddd2528a6525ffe5e11758d5b1f4893d9ce8ecdf6cd3b5641881bd4f65c5933a86f04d0eb761f81b1d468d4f4752ff4a25cc1480e9c81e29d058fa66be1f5218f44eafb428bb49d6c24f37b8a39c1acce44987136f94f12f4b7aa9fbe5b567415e59d02eca503d4413667394198497f885994796e58e975d4943603c7a3e8ea936051251a1781300490609f0afc51232dc96075253f231cf1eee892c1bcbf4867b65146db4b2112ded00f679589ad0e7a433379a683399526775d08a621a4895ac7994bc7f9263f323abaa8ba5095fd606a26cc0904cbf220250c40c6dcf3794dac8c053d3a85a359e4d975198524be158c1d28bbb6f723af2e44e6cb4e87bcc21987cf969fa9126ba38233c1775dd9e6d315031647695654e00d363cd1d97dcfcac237137c8b00f0f0a5c132657d2cb5ad3507fcd2cca0280e86f7bddbf59f441e12e8546a39dad5e1f044ddb5176049b3507974c3cf1a0d6702b62a80157ee1deb82837f1ec619d40dff4b37622546b3dae05318e7981267e5600fce8e5144356536b007552904376ca3a7f96b989ea9f94ea5a6829e9449954626c5f85545eaabee87cbfc292d20fd20ede470825c7509a97f8a7bd5af09be084fa835532cc8da589fc3804a67dcd13ecae1c77300e5084d2d089c41fd1961479ea29ed526c877f885c6ce1744ade9e5f1b716d9fa6be0b1b030e82d5be6ae6027a2f92b8c178a82896c9afa6cb461ee68158d3b200b41c1b2a504af2bcea4d8d89766b54eb6bd0a26e027b7d7bacbb566ec102a063f9141249138e4071551c388f7c82a3fa082e1177d78967186c8b1d0837558a97a3033c20ec369638f822b9cce74d2a415b3735222271b45d80374d2d27b9221ff87439d66c38b93e99c25bbf5497c905e4fe20293345ecc9beeaa4c3aa5e7223b8a1c9cc2015c54ae21f87fb8d7276aedfdf00f411316237a03a49399faa1cc52ffb05f4cf22e7c13b60a92ab0151b7fdcdd48aae1e22eb8c084d0735a4d0b9cb2c3302940f48acb9834d73c9de4385dcaedfbeb98c95ce0d02447df062e48fb85e15837eee349237b43206fc81cd34752a1e9b099f77b1e8681c70ad93703ca5551faecd18e07a012de1a505f724475e0859d214d8f6ad1fd6c5d14e0be3e09b40eeddc17e84129728dd454b8580e8e777087fad9ca5533ffefbcc3e383e9d270bc6eb17a2842979cb3d580b3d9b8a97b24824f104f21b10a65bd860e94e5ef8e08af0faa0b8f181b0774f65ab6ff01240ff05d568f4af8d221d5861363f479ef4c248f0a7905072b521397f39f5cce6d35b212d90a0c354681176944847a96101687f153c323653e2c08c0a059096b93e8dce12f042ef546b48543b78c495c270e86902ef7b63512af2427c3cce9258bce1f20bfcba113ba7341f3be992f29cd89a1eb7ff62e1884fe27f7239d4c3ea6842a07d5a7339b89d40642e9b067e9c474d4d29489295e9c130b4b6728948ad2020b3e8025e85318070decd7e60262bc309e326e74c8f4e7e4d77ca492629b368343e5192a57c84b37adf17662826bb4a68f2a40e9daddb5208cc40c12b0c577614b3ecf0610e1b12f35824d5649c5c0f3fffd615aa59bde50f653268849ae48a02fe0a5e1d2c4c922b1f8885b2dd34a95446039f50e2ac530c8459ee5645914e3f8eca8a25ee02a7674490b0d4553d35e39f73d00771e96105b27855441a327ff375bb157691341baef8c164f4363954772e9a0876ee083187d7c836cddf63aa452e54359d8a823f01241db615aa0fe3e46530230139bb5ff76c9729147b2e50d3ec6e4ced77862851b914de96ccdaeb97f82d7cac581388cd7d0fb3df7217cb2e55d2348b0565d33429f368dac091651914b301c8edb1ce70887145a10cd5cc87fa26d8adff9f20bd47e5257c5dec9c86468aa6c1b5bd2a5dba199fe4104b125e7f17bb2495ebe80aec2db10b1a91a1c41a81f43f6dc7c7095323db9358e7aa922f08955f8a888ff5c6a324b240400bc150dd03de5f810787138705084e60ef04a870914c53f9c728893ac568c948dd4d6c6b20afc6b89ae898b85f4a8da46c357e0dcffee0dc34b677e1c7bd59923f8c272ad6b6a7637acded942adcb046f53cd8bbe2c8b1e9198fd811ec62f481af30602a9e8813ee22e444896d560a6695aa78d85abd469ced9c4f9bbc46324ae8c1e2120dc912a359dc40a41a49b7fa49f156b74a2feaf169335562bbf4be9f47aa38e73e94328239dd48cd690a81ff9e9a742114b3520d6cfbaf1a37c61714d0a50717bee7c6ede488e7c6fdedc0392427cdf95f08912a9e08cb1619f9647373e0887842da25916744aabeb76d412e5e28c60004d7dfd39989e63d5c591c19cb301047c88ec65cc6510406194923f2da9267afb3cfb33d9a19fdc4054479013f5d96d5ca3f559484fc03b0fae20a0eaf2b431b8f602c715bbf33b2a3acfcbdd51c8a44912fea86aa0876acd98c9d9e55bf05204aeb7821768afb03758a12bee15162704666d6841e657da8e997643637874930ec475453923fb3f7fa2079a67ed25756ec1457fc9d420762c38fc1d30d01b423be1848c4ea4f60419fb13d56a5a8b057107de0532d7ad6df834fb4c31378182a9c43f44e2df0a744b4e3ab556b14aa87a1024b503b7af720bd0fe90092db175dc2902b677d8ee4f971fc60d8df8771bc9f3399522917263e46bfb96aa532e3d5f12ec0d5b031d4d26e610f08aaa7e107a8b3b43f578a3e853e15bc4908f5d37aa28ceb9a34b0994b082918d868b4a5e76c8a7a0bb4ea8b94c78fd2f84822c133c7dca8876ae56eedf2ef566740386141b0c71307ce4342d1615d54244135cfb99b253031e81526e016e867111d634fc06de152ecc100e5ac0604298a5e4389c46c67dcd1d0a94148f5b032231ca7df2596ee2fc100c318d797ccb9578dacc93edc06af6aa3204feb3dd1e9731c15a44884056db5cf15ef1812ff66c26a3f339805a785a2eeb8b39445ac91275a0a717103040883f29d40d58fbdee2f3871ac3995a52ebc6902d0f5fa0fd3cdb4e274265c57d4c2556abc8b1078f2e74e1276f343819cba72cccd1e75345733e7052223f62376d0f037c0c1b0cb7f0390d6ad007ba7e15704a6e665c2d0440800b4e7d5d313df18a531f7478add102c72741a6878a4f68805118d10c99c06e2692ab2eff3528f223dccdaa0ce7e8f1657d5237667dec181cf01d8d923d1690eba0905549a740aa0a79ed4ec63f2f4a4c86c9847d467ab655321949f47271bb9d99acfe8864431866cdf4cdbe5b56485e5e6efc5ed2565db2d4fb3a7aef247ca9f1747f70ce4cb056d37cd9586b6bcfbfb7adfb28a71d050abf845b743932e534345f8b96068fb9caf938ae321538a6fd798287561f299987452c1b08261e337f10c3b0ea031d2c667733ca466191aca03eed3ba0020b9c662d61978d5d3e9b1fc7ae05e382a297ebf0588482e2ca57aaa530f7290e786a84575f1f0970c69ae92487854e374f773a89e68d308ac818177e339b69bf5e57f295dffbfd357703cd9e72c3c0b3ae3f3d8eb5f8dce30557ff3f07a3dc5f7c23686b0f5e251f03c1a616c37ae3342235d873668bc5f8d473316cd4ce0504a97ac98ebf66245fc1cbcd84b9014ed7246871a892044ee2bb862498f7fbab92a2c8105cc75e706f43103ba64227e5b30ceb29a0e1335563b722dd0390d7cd1ec50300d6091069a3c28363eaa5f0d2f5a826d0425f15b1f8bd838c428f09173dab410882b4008757cafb391076e5ea562bc8152857f8a5b1ae56e4fed4ee9edb75023bbadc9bda54c49a6420880079e077ffafaf2ebe9542bcd8382e3c2854b63a0c10d96afdcb14392ef9f6b715ab934943889c435f3db09ae99cfcd9a3dfa66ec9afc0dfaa611709bcd6645623cfd83bb33c6637d9200dd79e78b7dc354244172e7efa0e2a7e9ceefa0632d9bdf51d94ed8fa6694481da56fa6cf9d3474ed0145489c601f5d773118590bd209f379f26dba30e585a10bbb3ca5278a55dfae7f0ff7d9b6b6f551df482b12a9af101324d2571b9af366e4dc9ce18e72d66383069b9b5d4ff218eafda592c74e3fb646548ec74ea1f48261fe1e165bdd72fdc334945ae42b840bc86a86ae066cc0a5e3bd102e20ab2f5fbe7c91d5afe0dd09d3a841809270c1640b18484178200c11d87063c1139f26b6e2e6844b1133b820050b3b4d9ec0e2c9105848c151111dd6638391b5dc2e8c9b82962e94b90c74b0a344a2ef4f5f1ee4f0643da004b616f9ca3b7f94b98e7eff74ec949bcd6645b46c71fde51293111633eebc6c8425cabde03a1ba1d173dd6fcc65fe1d9de3ab40a46f240b32dc11bc48ee0660085858e01abe8c13029619f3e03b7f72ac7fde3957a2c7bc2e6cbf7f45807f062cd8bfa3ccc91cc7564b3e6c5193620a198264fe3289637ca3a105486c5172219785cc5f2a712c0321a6ccb04c29e2a488cc5f32712cc7152e906cd941298827fa763903d08b6f4ed5e59cc32645baa3e4913950e2b038866be68faa3b7f88d7c98146e3aa20bf5e3964fe28672cc397e59af92a25eba9d037f48b14e43764cedcfc14fc8ecc6402cd631ef4ec28084968cab9a37b6698ee9c499c24ca06d0508815ea7b2fbf04ef8938a9351472e583af135ad7cebe0101ac7567247d2b3eb20531e19979cead141101fdf4522bdd8e9a04f5f0c82b32572b5202344405203a363bb886b5d01f296f474d8266cfe4b992ab15b91207625a42ba09356924dd9374254a4dd2a41222434a00c235aa316c68c335aa312c875c23eab4a058ef96e1062df28b00bb3b5ae416143bce10e4953b9252954b84eeca4f4df9be4f8be5ffba1d749ef336b37477954b8479fbfb76d80149c4c73eac4d4ae9f67fe2b7ae94697083a54a1cb472db2755f273c75aad4c59dd6b0eeb977ef318cbfabde631b0c5a7331542bd1e7aede551c8b06da56f6db16fe060755cf715c73c86398bfefc92719879f87cc9eb2909c2bf649d3295e4abcf34f4bf9fafefeb6ba4b9f52bdf541af0eb7faa316c2ab4b180bbf67a5eed9b4fa5c5d6ff64fdaeee53e512817ee128d2489c1faa140d188ec035a2fbff40bd9fde86e24abcde5795c5ce1ff9080499c11c47f1d1d1eddede8e62f149f0e5a1cb45827dd64bc03e4b02acefe1a7d7f9ec8b65ac17cb3e6e56bf0bfc5e36718121087dc1211d73d166b359911b5bbdc7544a70d761ae53c1c3cf05bf7e3de009ed86a95872bb3386eb29d6cbf5bd7598ff8eccbe5c5f980210fbac8f00cb5821911d19ccb38ce530a113f05966dffb8421445e6115ab4288428beecf22b25aae7f0f94adafa3d58bc785968871552f1e558ea918410bf7dbc3f975078696a1cbb5cb465996ae51962b3700978dc468c1fd565d887a5997de9f9c2fca1944fdf8382eb352fc2287349c023fd4d314085d2337e012c1fe8aef2aaca0ea03156f61531f489abe89cd96afb135eaa821386dba193e1f696c7b3ffa6df9e34431ce8ce4e13fd697a747a1501244c9b0b2283327b358679c2bb30f8f5d5543e61a1e0170fd3bae2d3603817a0753aa97aa50a661fd1dd2fc604799cbe1f71f4ace667d392502d72ecb6bfb26e5d9f184962867a32153e09732c0aeeb12d0491a05ad7494765dd7755ed7755df74d18b2c002667146d79d4e3887718d816108862218a274ad9f242c142ccfabb489bdf4b0684769142998984293a20a2226a314185185124d5344e162be90840600dcae6069004b186754b9a128c90f4d4dba20e30896207ec0983d3f54ba1f2d6650a80e648215c3d10731208194524a55b67b0aae613c2557ad95e9ba0ed5c9dc64e8cca053494a09964892a28b2ec09847a4f4a043e3c1862b5f9ac878b2c2912635a404e102cf16d3850ea0fcb044185d5810a34a1941413e4f848a50d082d942173ad4d80b1432aaf062c50c432871a0d3a98b11255d8a600a1aba4246937c7146124541e49490d1c973e94c496aa50251d4652d40d133860c598ebc308dd8a0e36b57ec602b824a134ef0185ac6581aa38966602465891c16285cc061b2b045171ed0a20542558e56a064c60467b2f8e20814443ab0e06516f162c9112a59b800c3044b924c114329ad5dd711398cab95998107d6f7755dd7791dd8b996319e201103871f2b64748a2a47384cc932061323199d33a32454463502fc5c0a9e4ea75a5f60d2306e325414e508841790688f4ec607967224898f254f1530bc20d102132abe5c5144161f295b0cb1859434b07021c504845a725aa9b0c608a6a8dd74f09122a3ee45cacdc6ac470c1b8a38c125f703a5942ad1d40df180be86d110123009a4fac5082f4e3091a46414430c5a1441f1a58b146778e10f7600ba8206140f24f8b0509a5dd7d58e42b941c1e5bad6a9769cf3f11c661db0a2852e533c11e24b9337cdc0d2c1d3a40b2a24209ac2044b1cd179418298be8243627a5d969e24677c91450b6480220defb2e333854f95a6226248a2694aa01f1b702801ce08ae09572389011ca082186e54609931a1c649a2502723218e28a5de7594267549b423de054128b1a0852ca0cc76b0a5810229427822e58b23395c0e4dc02e82525570b393881ac635db0749b7c94ca9c774e9f4926432142c59941cc1851247a2a80003d3972e52d4ae203197082d215a525b625b725b82bbd96a4f275bad5ed7a16c68a1e45de728ca5438f1f9620d294f66e8018d255c4b1839c102ca125314495b85c9ad0c95c1a62443a70590e7a71390f472b72f0533847502add11f28a20b115ccaa8a2872701976f8b91c335ed85369d4d06364676749b9bd76407247bd86c3cc7818062e8ac83263cca5c7095ba9c49c28724cea953171776149d7e41a4079138b288115ec10c878287428f1d451d20a2287aacfb202e44cc0129ce137970ac8be1240e0738b7b7b85cd385e249fcc18eb2c95194a221076ba8235e2f146d280e76642514dc8dc6c0d968d9c0680c24b2aa5c403c99f74278219110c8ba502ac5307d4ca3c3369d9ce1c17333aa5b99287880bf489c042c40aaa003b9c3775cb1232b01e550505252ca751e50c74a39125c57d85106c92179248bee8e0d8228ee76d3a1a14effb73c68b16db0a3eca9b5737c2c949e75f3db7d3aefe0737a905c2e37b5c8cee54c1ee198f72d69d02271e414390519d7c635ed8592a88974b02d87c9175ed6cd6693e6743624ccd90c911d25514e2a491cff9effee3e250ff99f07da96b724910c729b53522e178406c9e5725572664e195eaddb9647407eab65a5bb9456ceb0136c894436ad537b9272a71a772e4b1e3dbbc0856f56d41427edbc7a427d602a886a655930b31819d4ccd9c8d55c2ee7cad9f1a37db48ff6d13e1ad1f58f6643b6e0eeeea81f35eeda05339fc9d96c46066bf38e9cf6fa7183de5a9e0b09c7890983cf956447d4d2f7f321f9786e37dd7e5492a3925c4152417233357477f7cc6aa60813f8a36da946d1eaf4cd7cfb36abb072d31e3958ae29008801d261c325c6df48224e499338f58a4a452ea937afd63c1cb5e663c75312aa86caa170a81bca76fb3148bafd5f28ddf33ce9b9bc1921bc242d5debef1bf5fd3a52fc3270944bff1c489c727d33f2d1bd42d3f1123c86f211eacc63437cf4681ecda355a0d1a3f5b84fee36909774bb3da62b24e4a3d1e1cab2d43723cada56eb5f146f131deb157951da3bbaa8708300e8384ad65a35e2d8f75dadb8fd3a12472a818510d7f47b92d6b4570a04d595b418ec286b1ef368a719fbf06f5acbabb51e72f4681e4dac34e41af95e938e6dd0303974fba79881288a3f8495b416fb5d4776f468b4cbeeeed1dca3b9d8a2003ed02718d6a4af7ab4db1f8014092d4385b5e6b0b6d55aab3511d8b167359ff9cc27d3f59ec5c0c8a8c69d1bee7c79c719d2596d060c2139a76788b063fbfce80eead9356f9bdf7053ce04d95112c9281dfbd130f949391adccc4d466c988c4d1b22502e35dd6e24b4732e3b27716004e815704b768b6bfa5d5bd8916d3f1a059fda1dd9d603bcc9e06cddf4807a4b07c7baa73f6a70fb3d9038ac98db3fc391a3b8fdfd9df3581772d3901b76f906fba375c55602712c3f87a5db749205fff10097bf008ce34d92473fbf8d38be628d63587f8b7d74c1b1fa1dc6edf72689d348308ffe56e2b617a159d33a0582ea368d6bfa678ab063fbac6f280e876b18c3e417808327eae986fa5000734e39b5da8c133bba0d6949cb152b365bea6d668a84ff77496147f77125fd45ad21db647426b7df7d3ed589e7cc63a7d067b571a914096c5d6b74f7b7aa119d889ea84544749b5257157636eb59cf7a36ebd99252164a4a5289656f3779bbdda2d45c4bb53b36ad697db3c3a60623699246a3f99ce0f3a9fc913341481fe9237d62521168991736ce61fd2878ac9f2a7d567e6082eb0b3b83e66cce7cce7cce7cce6e7f9091732c7bfe178b5b94a173cb7ac8fa78ac0734716b916fe36ed317dfc6c9e8eb7439e500e9e5d2b095b01f53556a7acbea75fca9c69d3b85686b20c3edab52ec1f0eca1ae7b4acb99a9a0af19914923db24788c7a44f528f0b67479ff991bbcb6f9cc7d8c6c351ec7efcb0b95860479993b9ff56cbda5abbc763dd5168fd9f2752511445f658adcc421eaba10791d0b22ef499c3fa7d566796d8fe1692b5bb85768c3b17042391eba168c5c8f1c29014dc169ea134d408928d7fbb863b80178ca86859c1141c6890b5ec2ea8203aaa5dd9b9ec8c8c6dbd4c0afa094c7777f7db1ec110b7dbab5c2ded87db1adca6d96e77d7d64fadb6bbbbbb5b3f9ed892b1bc856d8f6f465c6a60ddfeda6f5bbda5caedb6ad3732238a1b73d96849863b8a2717a62822e259edb13e2da0a735bf8dc7b80713935212bfcc3906630bc7051da56df5253f4b2222e65a5113f9f7f4f8b004e2591019cb69a120ca846647132513a8f5341f4702cafc344f8bfd3de3da3d9f0e24ec06362deaf468d16571b45e375ea8ff5e5e4e7d2a555581de2aef51db5a942a8e72511ddcbac1ad3b6e1d696e9db935d6fa11b4f547c7b1c1fa4ec761fd376aed11248e8df004c9a35f2664ae199b8661aadf71551b5cd5c3747055ff31ebf49f7099eb8332b77eff27415638a2fea4f24ee06b642eaa4c7d17b5287f75048a1797be477f76ad857a4849a6535a3ea679d163aadbcb9ab4790c7c76d54b7498c3e4ab98ac7cf94049414cd2d65fa5cf8bb9d1739e43c1a5cd6db2658ff491b7166b0e9352c861f27bd24e4d8de03721484b068c3b7ffcae3d318e0992c77ce6afec037c7e1056cfe3c4df080a76850bbe446a71d6663dfdd842e1849710ae996fc2e42b777e0646acb4c27262fd478944e9cb2519e5ce2e9cd2a57c4cf399d0379d8e05588bce7c2b7794350b481c59248beebc9ef7d197092c5e210c9b18601ef36dfcc59d415863d8fa23e79cbe66ad48e248e6219ff9046053c73c689e1e650da97b9960a56b2d6bbde38eb2d62d590bdf7bf265029157a74248a1150ae17bc10e2a7c0d6370561e4d1b6ad8ae855dd422cb0fc60476e45aea7e0de6788330ee883050d84f82391e935318d67f854d0be9858d95c47acf9f0308ab6389f5c2b187584a16bcad5a5bad9c96ad00b9108afd117a60d7b07cf95b3fd362cc95a92f62f976611fbd5cd276e3dab8b2fb65e8418b38a8e06058ff4be8768bd564f9c796bf46bf2cae69aee9550f56ca48560b493029d173bf556a56b15c2d0a64cd2cf83495a2e0a9ce7c2b0c8011965fbed045819ffabeef437528d4f7a140104481a8effb2ef83dea451ffcbcd407aa4f25ee50d1f0a7b2abb70f64f53624e2047c22f657600804e6592191d5c3bc78523df8aae72bac2a94aa2a7d2b033e1d772e6b8ad4108fade044f52bd8875961f5ac9f2e12ecc33c10fb30a1eb7b550864f5acd0f5853d64a917ea864e58303c2114d2e27cab86e597177cfa3a25cc5fa5689842a15428d4534ac1671085fabed47f4f5fa9ff5e60d83d2dd2d48b52be94d257a75260c801efd6ff0ff5e00bf5397e6736d0787abbfd3032d8b159be3f4b29a5e417cd6b0debcf4f6bfed4d6370ca383e5573159f92efd5bec90e67150b1f2c7a737a30fe5a35fdda7f04145752c2c56f6ec97d4a006bf391efb7eb909efb1cb307f2d7a5c31453c41488bf3a5e73ca089a416f9fef0000715db1f02df7afaf92e4540fdfc1050a10bf53b17158ebf733f062bbfbe72b8c6df9397d56459362bbf8f98dd280f939699bbfd3996d820264a5a6ca0bee52e156a4a84a3426750216fa9c5c6a184953f52a1db75a644d26a77f7069e18ca2d39e2872bae6800082c5558485a020620a60d3c44805278965879ed19c1ddfe192cb79ff0ba4e1f2dbd9246b401fb996fb59650f4287ba48f04dac2446782db9ff3c4ed0f42451b6de1e1a62e1b6df1a956f0ed030d6ab0eeee1c901eb4e8cf35ee1e42b123c8e71f39ca0d8d8f69c6da47ccdf437e436a5c5be99bca7cc590395df6f9ce5c8b5ec116695248afb4e82c23680ef5f4a582fb4cc5575c475da648afeaf3aa4395a8c5a216fda761dea4c5e4fa2b39e2a620aff7a239aea9422daa616948ad501c1a76b448d7df7aadb66f33a7798c6209da72dd691ad7bd89d937cd8550ec0cbd27749e16dddfae516bde09a85771a3de6bc0e3fa8f2071bc30c7d10ce8e00e906bfc6786b0e3fbebf8ffe772507477cfae6b10c3fc8f904c5cff1c89d3850998e1ab039d1d7387901d8ee444fc698e388abbb78e5f69eb6fc5567bf38dbd856450cf54567cf99253a4c88f15cf8a2788ca8bca0ba521ad5c58b92064355bcd4650755175d1591d591dd9a15a43b5060a2db460fb79ca1e248ea2678a65cc3e9a7675fe60983f0438767af740e2d09002ccc3bfc3145c8f5202d79cc21f0df36f58cbd87354f707d7f8bba8587fb02523d3a3878d8df82d532d54175593aa4987051684503992c2de79cbb8e23b5f1948f76bb0eb386cb528774023b61f9457ec68afed7ef6acc57eb06f765a4ab9cb2911bcf99f943b5d28234d60d968cbec7e5d53b5c59d5b64d94849e9d616e5742423326cf7062e31a5cb0af51eba115e031e39aa98d101410a8ec08effe3ff5f877dcc975ce3a19843dd84f87382cc2a4d8d66eaa6a6d94f5bdb6af5cdbffb26297f304cfe0d97ebaa74a101042b00074f78413c482e97e349d2f2f3c33efc1b0808a8e650dced56fb49d2d233eabdac3179b7be358ef6ad6f48ec8dcf5aad5643817d4bf26a24d46cb5da0c133bf6ad761bc8da56eb5f6c20265d9bd8a12eba3d428b3d05f07120a7f5edb64e03752e74038bf6493b8f69b0e97fdaf2abf307d50067914248091457c28c118c934b369b4dda6c7afcb0f94eeed282b225287536dcd7cd18f939a2600d837d380ec63529141615e88548698864b243a9a85b36b9ab1fd46685ac72fb7f48d151956b0a3b4adb0f8f75f45b2defe8cc0788c6d65269fb56cbda6e2b6147c6d94ac039ce712e4fd5e353ed71f8849e40c9191f5a4d5a363b6c6a3690dad06c5a4e63360d9330ae9129cf85021f50a84e334f564eddff7359416d3878c28a36ad56aa35336bd9cc7aa3e7c6d469510e8061f20de0e3ca87e2ca5fcd30d1bab181a1d27526c0b1ca5ddcfe8aaa1e4bc98e7c1b42649c3af436d94777e3f465e38c923e4f44ad12673e99254011714dbf388366101841d7933c26710d93df62725b2a25b533ddce2551e9f28206d55945d18545ad27da40471aa8690df41e006676fc3b030351e77e06e16e571cae16d77458bb3a431593ac52ebc59f33681ec1c4ed7f89c3014e78fb65287e24b0e30c9ab7be191fa96fc6eab1ce631237836ed76ee764b650d93e69e7d513aab39f6a65593031365d7a3cd71deb5eec56b7ba4e011a2146aa40c65d2998b1111a26bf658376c1e408c865ad478fda05decc11374e5fec3885a6d0149a425368e2666e264da5c9f4cde4e0388648a039731c6e88c73cc78463f299176c4b20db8f41b5352cc16665e3b01e36d6b58549df1c01c1b846be8eacd9b056e05d0c104040ad1c365c64803da06fc030f93c990170c395861dbdc7856e6eab39d1edf71eeff11eeff11e1d38665cb06313e57cc6a494444444f46fd3d9481cc7c23cfab318c093801c275d8e6b811d651227551ba59594638c70ce28998d12c87fda5a403b3298423a39842ce2f64f19c435fd361d1090cd8e368e739ce376d0b810c779171ec6ed172271025a08917a71c030fae08b7ec7537698a0b3863db8867210c27d890ca38f7af5f8e1bd68c4125ecfe27ca616b8fef2837ccc4e6daf4baea3ac9368e3dd6a3918daedcb71022b5d49accc7182e9fdec3abea173fa9cde328a4f474dc63ed335e769571d206ca5a663c4ca07d2b0fe31a5d3627f8e23ac6418fdee45652e3de1fab348df53225022d7d9bf9caa9561920395228ca240838aac856832e4e0a4c8163276f8610d992535242005b42b7e6a5818e14497221f4450459427d068810e4b58f02d51e2a0d62555dcf0ea2987ba6cb464a442f1cbdf2bb06f4ea9b103b79fb2389f4fd703b79fc579c3f3f27f53c55cc394a371c1e17523a13fd05827cf7b014917356c20e30b2388640d841744e8e045530b3819660e48743f30f1fa0127436dc47837bcd349d258a03a799e941fb4b0aae7795ece29cbcbc9d52e5ec39c20e707ab3d9a16a027b664acb5b5d665232e5f5c24d2b091a3fb0225f821638c2623438461c293126c69820b1434ad21eb09e443141516325ccbb12108e2861fa4d0410422c8e1cbd20e3d4a78d1614b14594f1c94601d499283368357ab0f60a06a3d71d10275856dfd14771473a89f4fca70ecde76dd5bf6ee2bc728a5dc3f765dd7317d9a16b9a17ccc3e6cfc2bc73abb627ef7b0eef0752f967955ce9754ea58666e19d2f93ec39794f56b03df457c2ce31eec437e03f88a5780ebbd84c0a5cf30effde5b1a763594a29dbf110784b16dc62642dc7e6066841192d5aa08c131e702d076ca2b62308ca58b1e065232e4d6e8ec740232e4b50ad23409146c6822058036566b818b923cdad2bc36baf3b1f8c50af8268a091b35c461a69b48005091f23542cc002105f3c090242882544d04391d703141dedcd242be8218cdb458a9000a38b0fb3295ea8a103112e3cb9b2e485936a8619372f0b530f3d315d0d3dec70410f487c950b12fca9da308ab6a081e8491532c8ba0a0f596a20d2010d2bb2fea9a9aa90b13687872d37bc1b7840c1c7438e8501a6264e5045d0942a3859029850230a2123803081116b5b4666102921efb7a2cf34eeeeee4e5faeba6c136289e563e7cfff2a8b46e953fa1ce3a7948adf757575d9d6040a1d2db07dc1e554081d0d014083e5a9027fb16eb0e33f4d77b0c1b8e3d619de3cbcbd62ee375f2e11fc59364bdf6829caecba3f4cc34e202c3f0d650d84365a1aba2dd5f5f0cfb0fcdd657cf4990604d59d5c331fbce20d008ff5d9f2a7bff740fcbdd0d5bdf72c03d25fdf7b09d4f7c2159c0001dffb15beaf0f862e9def5d1160d917ba3a97047c4906be2fc9c0d0d5852e12c0ff5e02e07fe10a4e809cfefb15500fbe04be4f7d2a5c41e63dcb729abe4e779e5e36eeb0897a81b3e5b099c1110bd212b0927773f9584261798a965c65f9fd3b327fb964e8aa807f3f90eee9cba740fc3b2412cee8876085f7d02565980210ff6e7e1712f1901db623db91c958d6fda4df85360e9baf410c9665347422dfdfad64f9995dc9b50ee2631a1d51587e1923d63aac73a4c066e0e3679ad78dfbe500c25e98996df173ebc69ff903f6f75c976d4464c13a96580eb9c54e8293be521f84ae06c8477d08f251bf735f2391cbdfa1d8772ebfc61d77da106429590f27187339c55fc452f99866fc980021f1cfb1c4daa2b458d4a213b5e8a799f7a799f7ea9874412da61ce03a3d5fafbe661ab6861d131610b6619ad8f1fd69ae640284e4d2ff6674a9611bf4486a18f5a9add36c05841d3b1a4de875226a91764cbc1bea88faa6a86f6678cab1c48e27a14bdfd622fda210b5485339b2d89126d1a50ec293508b37c21513fb0db5b8a2591ceffaf9f2031c53ecf8cd2e7d7fb16e3f8e07d28f23e886404e183ca75c24e0f87e2038be43224ee61301baf471843d97fe0c81f463101239f99c660ea3bfbade3169b2303ad8d97d187473d61669653da0899d2baf8734260b8b5ad93f9d3ec6c88ca0eb1f33d2a44b65be76434d96f532dfd1be1bcc5398db4dea1b2d94e6302af3ee5f82cfe77437d437234dea9ab49e7ec7a415d0f3325a2b00c7d3ef82bed6ab7bcf868dbfe0c5a90f2ea8ffd5d025011cdf1f011cdfbf73e76bc87cdd784eb98def5e3bd75f2af8bd114a18240f1befd9f81cbfe045b5b468c34648935aa4b4a96f985a4b76a44b972ed1a61669cc7f452dd2afd622fd98cfe91fde218e0c58b033d409594c3a1a7d183efd6905f3ea864e58b9aee7eac21f2dd2e74b3f44c37a3128b0e377fb6e1fd287eb9b6fe8e9126d4aa24a340579c7d3ac2e55a61629fb80b9fc1d68c921d1cfb1c4fa20e169919ec00e3e2b6e0ad273b8f4bbb02ab548df5f1d8d6be8af74b0a870dca1a1565322b052ed760ff3634791e67adfd16834da8d7c1a3bcdbd919375d93684d11d3ba14b9fe9f29418c8b81ded56a5bac4e49d6a37f368376358ea03efc4534f1deb014d009dec1ab686cde49d66a71e2f3cf174b3f134bb7476b416691714764c5aa48fa3a37d3999c640051f77e0e7b29ebabbbb7240cedab94cd72780dedd1c08c1edc901799bcbe7cf344da4c5be71bf7ac2901e9ed50e76c75f32c81d55af02f597ea7e77b5c48ed23604c728c39c7dccd46c3cb99dba1e4e89c4edffeeb75a623d1c55b8a33c026f376cd65ff634e8416eca431b3feab87e23267dfc25e3c4bcbff30dccfb7b7cc3bab1efa1ec69b1bf561796a7575ce31ff392ccc31fe6e5ecb1e86f5f1f8bbe62987f3b9882f9a016fb5b178409a5906cc297d5f27ecaa01ccf6955d83615e8edba9ef939eddd53d07b70f40f9cb0a8c4ac1726392b152a1a0000040553150020281008858482d1703c8ca248d60714000b7796426a50301347434990a33088812808020618020001841863144344c703ca9d1b8d5e34610b76863db55b19ea89840a28345ab2fd4c6dca5fee25026a92dd55a4db83066f7d52c33c6b8d99ece0da1e3d76107141ccbfcb3828296852a87a54db77cd198782e34c1f77c4ec550a464cef1a384d6682de293e4ca857cba591d81fec0ba51047f1062149288b4b4b513ed04999e83b16b004244302b78b3e8c44981b4e29f8859094cadfa518091ccd28408a0fd3520af6c359374984a0fa8eb390c9819d33f032e6e43c7ce6c4b2654110711a6216ab09520891285f910a535981828668364e6156cb1f91bb041e482f1c2692b776eb30c553b93140d6ec61a8dd1facf0b6ae7251b10262ebd85cfd240374191032080685a63308e29e7eb913188bca6c98244409420dfc538f68eeb9341167d8d0f576bda10c913a47aa3b1d3d410ae6699d1dfd002ed89731066dac91a206d37b022ba4f329a5f203971b1b64bd221580d1b0f2079951444ee323cedeca0497434fe04b24ae32097dac9b73798256bfc4cdd096d3a3b61bb4205ab021b44e2d8456de6c19140ad6fc47e50aec9f513b10eb1ecc2535a428c2c936a05547f3a5e79455d0c8e6c1b751213f48f24235aba906a51b471738357c9c268b37e501278b37629a45c7c2597ab467ba17a485a180afa7f78452f1968f0b88b7d926ed7244f5e03ce9a088716c57921d51b0d07f565c2b02d6c70c1377e6116a6c5e93bc268b0c07141e0f8d3b97ad5246e3ab796cf0c15fd1a827d656260b3bf2e301a1a4477bc742c6013c284d25ed101c6c0b80a8de0b7b79b833aa9f60f3c7e720147e7d6c352f9cd89d87982294a50ff4f32427433a38c85c6c2ccca05e92f010c6526036e6c8538648bf3d80dd2cc4e303c901e01b5a1365e4de640243ab613e0aa8222ce0c424f0186887149a4048bcc1b86119fb6e1b7faf56af51eff044c829eafa9176e1e71088d1f1100ab859075bdb855c61d525e7532f7233606e34bee5220765eebd643cd09880ef122633d12a0fb9d03d98439e354de7586a404b2154fb5f2ecaffad4788931d0f958242e6e34432502bd9e61e68e0aad85afaa8bc269a27ca5bf320c401286f1e901f3da043f2b0ae19f526cc4b52c9a33ea6b736ebaf1ba4efa953ac3567e3bf78b88eb3d6403d901e164a5e2b25b05566b1576aa3a4130c699f389abf2644fa0be95a93550d5b21a2237ccccf724ae97e21a1112c0421bcee61262f0ca92a6cf59e0b06bdbcfa3231ebeab65f6155d4bd2692fa739300d2879cc90d3da8aaa81df6884335704f28ce7cec640768893ed5c065255b1b7434c572e0bcaad4d9b25a152761b52479084f94080ebec2f2a99e5650dda5428a84b77f92f28cee8ddf429c39a0814c1cfad7d0de0ecf4dc7fd3e2114cd06c6c1c1838412457c018615930743ae6d44c0d537e46fea4f587a959eaf302457575727d63cbba285cd7949c7db0c597ad62e9e6fc236a3fcd2b3903aa37c69bdcefbe0b62b24622604e3a7cd04ff4dd037599f12e09979809ad0ec73a5ffec78de3ad84dd12be13ae790b0850bb30a976f90fafc6bb82230ca963e9ae1938ab7084fd50be8d4b10bd1a32e4ace64ef79e7b294a4fdecc6bd4cab6961869b6da5e0ab06eadb748a176ab14ef7821989d7a7fbbf081439d4bddfde6e47fc25da88651696dc09f9709d6fcd5d710047b89b11f050fa70ab2a236da5d1e5b2c437ff5c9c0ebfd6719e18372afa24569941a7332207909e6bf7b0c4937b1b2148a384e2ab98f8c93af6a3a7b0234f81be82d7042d5702e9620ae45311148e56b2dd7004970a3ce174b5cc80e08f565e230909db0a3e0076eced5ec35bed254a4b4fd8eda82cd575e0cd09412a40230b807e3b0ee9aa488d4db365116f615a6d9b33c1f80b3a53f30dfd28b2018254944da135e72b51843909ba01dd12269064ae4c60bf165ebebd3d98d62ab61dbfb3b78dd87403ea9dd6f4770827554d1525b26b4f598b4df60e0925402433f43d1cf5cb3ed3374b8387d3374c9c1b454dcefb368e3dd4cac2d37df87608d2a0aebd0c362c86962d6975cf0b433db07da958efdb89f30a3accc1e7fd10eea93705ca6c6351bf8317e46fa8abcb30e79f5a72b4390de8b5d2d0bd9755800ba246064d60507997a5c2e8d611c8dd6c5f32a67841c6a419d7133779fc4419652d94a9fca1a8abae5ac0f8cf63ec052dbe11d466df77a9a418a5ec7a94626e45a74791e456c629e6066ff6e14ce6d9840e3e1d6373edb10aeddb321515b0ea9867a491ccddaf79e79fe774071e7c8c4a33840c9ab6ccf0bf0c1ebf8c5a4774939c3da221232b07489c0e2d318771e90b2dd3fe1ac24d28e66db3365993a17178905923c2ecf5a576b660eca7498210320db06e03f386e843129a8b0ff834d925cfef181c2ce2799bc35e2b522d0ae8164fa01e50239ac1e80914b4257850dae72cc8824e079fc68efad3aa47056a76e56d507d273b19cda2f4cae8040acfd0a1e5ec488e9df3f2a0314fc42ac40a96cc29b09ed54d37b5ef42533274c0be33240f4344e94c23c258e3f616a8985bf4c21edb9428c50182866b4b21124092533341b1de899a037036e316bc16a36e5bc706f1e708d218b742fb28c409d29cf00ec2c707d90ce210176aa087073b4161d473a780f189bb465a53c708c445441fd6ed46c5aa3066e0f6debdc2aeb39a3168d2829e852da24352ff4499bf3b9c9cf1f80559ecfd50538b32d522ee73a5c9c783169eb70b3d24ef29a1cbb91e53e6c960665abdfac0b01a34228390db64d8be4127653975fb523a2d54203e7d99766255fbf0d292e0cc3ae2e0e214d421e67d93e8c9cde04351d280e725e93be76279616013ec3447d935ab11a38e3c1aec2a4d91784890a56909795068c443cc4190986380ac8554fad7a47d03ec0c238d24f58ea42c5b5234cafa057b3744608face311c71873dec98759bf4c68d664a139fe4aba3e026a889b39ec5067982e5daadc1e945105c8e3cab9beb782f642f682278341c712af5c247a6b556c1dddcd4b78d55b4431f1125f1c70cfed8a3d837e979cb0e559f1268ae34c20385c232cf3e2baff7bb9c94e91f17bd8a46f8ab83246a54c45ce1f4718a06abc5ee5cc4bcc9e07d344fa74d6efa644996a63a1a86cf435ddddf3380391e074eca89cab4c3402853b7acb6604d55588858fdb1ea601ad76f030562b67d88c7945f28d73c82ca877a6e8911b1abc4c962eb2a4c541962da336ab904999e60ed60ea51bcfc550dd1395714d29d7c5c426c861717f6322e596c3790411ff5609185caebfd0d8b8d40559f02407b081dd64fe391045b71b1025ac8c6d17bd44a638970d657161b95df0bcdfa4174e78976df370c6bf1065f00b4d6f4b19c56bcea4a0cfc99f20c72a8145cc4e5641a6b229f527f37bce4fca5950e2f1d2649a69b5aad91b6210fe7275b3eecbc3900475d35cf2618ea510c2aa4b0c88af62e3b2504ff7168d1f05e093314309180b4d081becee9142a0e3108a8063edd394f8ba031579dbd769d8d6d3507bb74eff60e2d6c9178e0fca60baa208502c2d04054346132ef3d594685a3c73d2c9a06484929f5a16226318bc5e5217918454a9ba7722c69705cd569b20449397592d64a631b4445e2de21a261ab7e4104665a1bc61b5de0fca86cc939bc70d74d2dc93832e1f1ef2d116e7c42b5f7a24d3cb7c4b785c8b3e6057d8ede8044b9fbdb8ef82b2e1d48759df2aff554ca1cbe990da273e39076c543e6bde44d2c4044698502f0684780770ac36cf1beeb19e5fe408fe6a8dac1d204daa127ee1e792ae0c43db5856053344edb8860845014d7c8b985581140ef60b077a3391d5becb85087b1d5775611fe0bbcfdd23990631a4585c0b5270b4c39f994b80dbd0432e6a2ee858f0132d734ab7600a5ddac3c91288f2cf61990b7be3950925bb6b555bd298ced309337486d36deff703f63d1defbde4da768312f4f16d05850843684549e7a85293ec478dd4abc4cb5fc502364481f8e425ee649e72efe5d4e8e01e996ff2001c4044719a8fb6c318e874b6c27943e8306015bc5c30d2e39a64503df8de90bd73f4f4928e7409e47339efb5905e89b03d01843e7039d38aa59db518db999fce9e8f095420e5b2b55068e658d9afb668575a6102482102ae68aa516053ddec2e612f89a3374035d47313519062e1e27a641206143b1e46b04cdfaf42e31f5860eb80c860f313e3d70f1aa13d2fe9816db57ee6335e70ba9b14e63fe281678be0f986f883b097225d0f8c5b056517209b262700e85c792c4fc550d34711c8fe6461a2876c65c74f84354a122a62edb963333c401822156adb467fa80b7483d63803491ee983fbaea4c3e46207fba0a0def75b7e04596e375e2955a9123268805a57ad412cc119af896d7a7601ba7c4574541efa03c2e4e9ef9d2874d38cb84e4bb5a6c4ecbcf7c3681ff36dff396df78d212cceebe0758aca64b1942c017972155c27b7414000fa32c54ed1bfb05388814429d884f80edbcd8ed129d6d8db7a616e90607ddc2616141d9ecebeda3d1728619da2c33d8e1142bad6d170a8736e5cb2fe8988b035e56cfb39b89492d01b03313e36ae509c4063345aed7b1e44dbc941834828a14ded6839c142b65fdbd4a7653de80cac016cfd675b3f358794b8b9352df0c58192f0586b61f690caf358e98da32ed69e6aca308a7c0059e29141f17ce77a508343afea5591a123824f9570f80130840216493ba3181c8dc1823212e6136dda1765a218f35b7b824805a515e1bcb6c733209a09e29c8454c0f8f816318f3a6e21c88b90198107be868eeb924d2a50fc20050272845b5a99f8322e2e2fef4c6704f5e6b75fd1edbc05033c665090154a266701fad5480e710070c73397e3325218518ed1cff04f607e6bc596eaa43f4416fe69680769d843b3b98b85a94c74e6fe0d5ab24fe8124da69f1dfa884b5c571e3b057811ddb38ca4e48514a0678e98a1c1841cd3d0030aafedb54774ac8e8190f841ac330574a9b090066da8c5c478192fba586251ef8ee3e77ab4c06b0678e82bad013c46b2dc5f48f0cbb4d95a0e77c6e7601fd0f8f5910bcb2e8568b6630b80572ce8e2b203574d01819cbaf6e3df6972e9261ed79e7baacc04c2e60b11477afe19b1534d4f838e5c67967827f80e509c55a353dbfe04cd6aabdb7eeecf82aa70505155b02184bebf3ec813250e2ded379e4819a91899c513bf7e798947cd193901ff681a60503b69a93730362d602e48bd604e439cfc8725b5098267649183d04adeb8e288d3cbc1e00755e6cc80b7031b176d042e7dea58653b81f931af71f040c6af6bc736d714bc45f6f514768fb43cfa877675edbf16ce131e2ad459bf382e954e64bcd4ce548362cd4058650295fd19adf5489e0b8db9dd2bb1b5be3fbe755c4e7f787e67378dcd0e0be3ae137f585a8a75ecd83ccfd7f33b164c4604f1aa4a3a015511306a6ae0a663c85339b2b297472741d50d8dc84fff4b5cfe0dd31c6b45255959c046c6f0d667868758da844e0890fc1e4fecf9ca9288b98ff8d4bc45872159d5e8293fc067fb576001b4f1c0553cd224d9540015a04fc7e526efe893a64365ccc4276fe68963dad416773c7b9f712d19cf1c5fff43563d9bf03d171dc91dcb0e342b0fd82735ac728eac6558205c1d1126043a5e7d3312b2e1d09f55a2d9808b7ea58b8fea96c9255c48455aaab7d6421a6aef21341587398fe7cd2be1ed31d2bd0ef7f98a678412a4ef57f89c3e49fca20008b23e19bb30d79a118c2071b89b3a8a98be2a8a2e785c445ac90e6142278d0c9577887f4ddf0b2e015897601c6452790482bc7e8c3ef7d4b06ce19297ceb1767f756bb1bc19579f8cda97158338134b42880fd4b5dcb7190d10fbef71c91cf49b24834995b8e0203961afd892815a447b72a9738bc68644760bef46333947ecec5a269476eaff54265bc5b895b43dacb839f27616880b0ffafd734155a9a342a1c5510a366f1b2f8083f7b19c71c45d2981d15af9ebd1cf9cf041c284b3b27e70477961950da8f82a8cb7a33e90f071dfb3fd3e7d4c09215840f1a1761b8a7829847aed8ee460763fe1514fff6f9c7b0369b44651c533fd21b98b4c7463b7bd3a49a30fc2e312d3cb0699a0bef7ba02859baf671c66f3c704df776118ef6eef7f723b113fd18e540609cc8786c1e79165a57be984ecc4d9b85f6c52d6a5c07d2f63aa7180968029eda1e48d90cae016fa1e9f9eba6e433285fada5ff531a8bc03be0451c4ddd8f30ee5aa39588227f9fb2f12c5ab9a9df2b04c76597dc8793daa0d6ba5b81b3828893537007ca26ac55aa117caba1ed6a6714a5311750acf1046af412f1d463acfc7da869846ade5696fb08a12510e409f649864e20123cea99dc09d5cd5016200050bd0ed67c0fdd5c101c999cba556f7e29dbf4eafd9c9a57cc5940920375038420aae871702863a4d6a6138915cf9d17b063a386fa33edbd2aedd04faefeb7d09413707d7a5047006ac433ccc5b1ec47831b844d487bd1b38bccc81fea09e7a16b01ac46acb821f25472f018a2395119dd57296b5900179bc64badf94b77e09634d8ff4b28f511af3f21eb6d003df805f4c3093daf175e2a1f7c55b778f0c621e461e784b7677e7b2dc4017a29df848fd6953c1cfaf30d1548609915c88c5b5b35d654846c6b0c4c74bc71d00136329a202a6b62957360702b120f3047af6662f102c52dff346596c16a6559e497ee39dd29e78a723f698fe3e462f608569c899636e6182c745506c05fd685813b9af19ae286a54e5504e15411ef3d2be7fc7ffb4c5ad73828b8207e3ac9dc1ec1200e2dc50491651289ab281f4e7658c0042e5ce2d52079a464a2081f082637401f72932dff09bbfe0111f68948d15d8e7a368b68e2c74d10c07faf0e5b720d71dc0cfff6f809d0cfef55d39b548269fc3cdbf3c2e9f7765aefa1bc5825f36a272f8254b4e450b7e8ef8f5c3a1d445835f393bc8699bab3e84294e773287a9e0b737c6fc34a8db034b1bf984dcef669e52f79715fc788c11a908e1ff35709abab691315c98435641f776749e1228d487cfe66fe0da24a61c8b90afae662b14a9ea97a77bb8f567c0dd7453fd6f5baaef53ab47a3fab1b335e5d5d3b73d7318c8f45f7b68a34049a923129d9e8700424f6bd81f3927e9da4e2a6ebac1585994e0a0a5cf762208430e6bfc4c809ea79fa10d543869d12354167de78e2421a799971a6736c4afdd9c01e629f0595a34e189e728430bd197ba08843cd0d438f8c698dfe1112913489a0b7d0e376a00d7003c1ec2af3792596a1d834776628982008cdf6fe57ee6e1b27be4df9fd8a3dabad32ad9971903cf5fa29e3f5163bad6a30d33afcc2c2b103c855e6955ed35f636a466ad402d74780c72c30107b6b24909ed30e0c13b065fa32a334859e85713d70ba4dafbb7bff0f29e0a6f0cef1f9f24e8b77ccb4cdc9e6d58cc9e88db6f6920c89e1bc2ebbe47ae94b2a481c2b8997f3426771a3a6afbbc1d153fe9ab308dc00a8ce7b282a434497e5e7c6e2b80ba0f1716447e692ef889506bd8fc8bc50ec504e840c921bbb737606230461cad1286abb3e577eb27070ef54ce17f5ac31cb096762b6e1046dec0d1ad74df9e755a8caad40d90c193f322b9d7576f2c1a699245234e56bc0f787041dd0e8381db1f88feb04f0b1cb7fd7d01163c3090df4c240b5d3d02e2676d57c164f44271e1971804c45f1637eff339ab65b027babe3ddfc859945d67607692d99e19940e5a4b19b39abac0e23e2717f90f17120243f2c827b3f236e37a1a1275d8dd7a1a78e0681294aa79ce5ac8afc92f7eee5f8e8466b3d315e7f57862936beab0841985b8597ada860d9bec8e5513dbaad29c861fdb812f9cf66d444a2a5fe940e06931530d869ba81d07a1f3db5329d5d48e0617710c56925caf3dffbe208d3a1ec9d5e405f850c4f1688e0be1fd8e7ec3324da55dde94c31b8a24f4e2850647a03f6600106c210ffb11521d46adcf146557bdc6e2edee79f8cc9199f63674b07bc3f820fe373c3f915f74585d1e85261bd4611d00e9360de95b1f33251697326e75272d3fa220d9222e40c2d1c157eb0e2bccc942c836444336eba9eea1bcdffe785f74f471ce6c7a1cfdc90c0cff2afc73a0448c1fab215a9677e0f017cc7672dac490b610ce1594dca0ec3e5918464a5c80645d14441d1b2ff0d3c3147de8df1c8cf44a4fd4407a13b7273fdeb328219352284a21bc51a42fabd0e7b883dadf2f958ce268f7660f3b5d4a6fc73b195c8ab8b5a506c3b67332bba30e85861aa5524dec6e7a4a343a2be8ee6f224d9bc9baf54d0c3ab440b462586f50d7c4927e310f5b430fc0e2044d9f39dd7a4d40d360e5a1ead003d638a1a4159b6ebd26a2e956eed23e52009c0e5ee81953ce86a057656910e864335400a00f563e5037f52b3aa581f8f092fa0fc60b4ed301a318b43873f0e5285620016741d125c263f6f56a34c9b4d7a401bcde61054b3e81266fdff56d1175d59a13e9a18377d553f7a5506dce4410e89405194bf04283e6a64f92e5346922ba3c4f0182ffbd5e170fa196094d082915e91b056f79b164569319079b24a67811f45228ccb966fb3989f2979be8abc1763bc3dd7e7e59ada9cb10dce3f705d642d70ed69828d38ad95d8732e81a1bb1c2309bad20e1587b4d28314f565221f37ecf16fb1edc18ea5672cb01ba85a7fd6808f7b322175e3d2126ad112a8e23fe3a434093ebedf736a5260d59b551b6e40c503d1d294e59b5799f97f222c7055402c191fc4bcf65bcbf6eea5a918f069281f89334b66840d2ca94e9fd8b08c04baf462aec0613c070bedfe52144c3f6640b66dbb9c258ddc448c867c017912948f2e4d246b6c98ed159f9e902ffc4a643ad85376c72caf33e61983575c8ca63c364056d6140e6fc9a65f7d75688e232135e5748fdfc15e63efb2dcd6dbb066439e1ed1ddde64b1d0e3c6dd5cd7c55b0889f0e7c7b7726c6070a379afa233e40926d8dc6f40ac6316a5beac36242a3acd6c1e4f6dce36558edb036bc57cdaf13c4352c414a886fc63078f04ae46a8c28266b8932ee19478985e04c979cd71cdbf9bd50de80a131ccd06f4fc2e9d80fee9ddaa50ce2adf370df2fb8a9d020b81bb40c7cdc3839d4ff0e1a0cb2283ef22d9ffd7a98ed45b0a41fd1d40e1864fda3c28237cf59baf03f2f34a4446185f5f01d656218d3167711dca9c495ff889f834ee4b18e8240072e64cfe1d90d143777b806f84a3901fe71709a96020c1a0599f73870e000f0b9bd20269dcb4afa11acba177399ad407b73aa92ea7e72237d37201cd5353be81f2b90c06642e69cca085666a2faad4dd138026b6339a8991fef88f2f8e92c32104367fbde29018a9e6333e9ccfc3efa5c1e3ded71ba6dc43295711ee206168a04cb1926f1f35a82a9c2007d3373d79296f7d1aae0e9ad4a7944acbc5b24779b650615e5fea2cc28b640314023bd6f6cd3f39500ce3115fd4c3eeac95c83d7a45d5ed532487f2488f2e36bf31587c11c9618045ebaea20372705ce8e2850110d553a9b976c7279350e893aa7138a87355945c2d862cb532ac3de78e3c15328f87d06e0832b2d2811f9a8d0d4fb4be26cc415f6802c558cd8be694bf2c563246ee3fe5e997570173681606acae40074c3aa54d5a13555ce8811ed626aa9132123d246977af60ffefa7b9867f4f11682f2f04cfac7e7673e643f37ea5644c54d8bcce4c313835512d36443e205a018ba1e90478c95f7b9e8b4c8299800be5231319bb0d26b98e4b0d87d359b8640277e48bee0d1bf139b6a9bff0aa45bf505025810d3ee910a7bd0efb4ab9e65d3cd37da70d36d4a60135932a455302eab9f25964bbe59eae6d9fa6202454243fe20d02ce5a2527094e88beed096184dfe533f05653b2cf111c855dfbf990d709d5b521344683e7105117bd4c481a7e27a60c424dc3c9d4df59dd055f1b55cf81085d73bca03ea277a62968ffb6cb764fcba7071d67c64a0017e6a0fbc6be9d05b16f92736c701b7d5c8222d7831b0248b8936f5fd521d98b147ac6857333365d44dea1da907c1726452e7473bb08137f2a2371437a969a5f51556d979cdb96c07f2a0e317ae1d6813a6ae017fd26d1d4a5c5844298bd8e741964504c030a0b1a4e074e6ff08808a30db248127317eebe23c92e8ed58cabc5fd56a1dcd04bc7bd6e02abb2023a19d1607e58675cfd49d91551cff378a5a3c15a51b6a09e23aafefc38c76c911a834105536b1e266642d483b808648eb2ccc0297653ab15b0becf468c1bd97f55a5fb799b48e80ba4c29fbc672ea4aa4d3f0106fd98e2c35d234361a2194f2b7a50a9e249aa1637735a12a09f122b747eef14380c91db2f8456c022ca8a3d26245814395088c65f7c4dac8f35aa0daab50641550b502b0e7be55ffec58f03a756e3c5c54bbdc3947a21fdd10612907f4a8e85e5236bdacf94b5bf22b7f51c6f0c7730a9f999db71e767aa7e347fae7fbd730d645dedf324ce311c1c314005a6e2859725f7912a806ea4209ddff62133d4179339311f86d45cd3dd2b9543ff16ce77df72edfeee5fd3aa59f7e79f72cb083123b08626aba7a56932dfb6f96da833ff7c48ed472fa19f08ed15c7fb59e98e991223b481982663cd2014abf1499609146fd899071094127e5b29dc91f208171371176691811e511b7cea50fd8cfeb8e7093483db8b6067ed3759abc518089a7dd477592aa3d45abf6d43134be3cfb246d44d0e2a6f67d0e830446b734854c39201d151a4eecd6fb91b2b4269d6082e6b7ccdba1ae728f9988b8cd5bc51715f2b6b284fc5b0720909efc39064cc82148e832293962f5213dd83c3777ccaf24bd094a2a34c06751c6b29bd111f5a8f525c44ea2d4c9cc83e44854a1ec34d653c22f3c078296440394406c17dff61ac0c274b6b0c83a8d1cc45e7a13cbeaecf6eada20a3340c15e756e729572a671345bae6e6a7b38df6da38225ba739990220c897c3cdd11a225334640c655bd2a4d34bd4fe16e26d179566e7e85281d531d147287db62c6f0cfaaa0460c57f1d3060b06d8e7d82c9d9366e0132eeeec1e796b2050fc377612f2eec33df42d038475a36433fcd0ec8dae7dcac7cd297d0b24e4f858e682eb8484eab652e2682390f4a8e7e9cf0ce0aea03bbd9208bc2e187058e90b59268b1ff1725c1037f9cabd85c8e3496d2406b5c25b3cf22b14a4cb4bff31813a6efec11210c842859c274b633852d09f11d7d89091bd783342fbb6a76d9109f3eb24cfa569e7ee8105d1c2717f0adb7b9968d1d5a3d463c80139acd4405c258edced9f03ddc00c3694e8534fecc2778d57904540ec62a155102dba30de2616aedadd5f03686bd824403e70854420a4ea2e83d80ba2e4c7cc9d6cf208d9b6c32290d1d867b03d2dab4b1cd9bdab8e16637aee6b7aefebdfb5a9eca87e37e78b309df36febdeccdcb5ee5d5cfc10b5166b0b6c493d7527bfb994248c30d199f17a054f4d84bf2b7eff83603396839958aadad8588e77acbd9bd338cca5101f135d0359663b1fe1623bb55d4c10a2f7a42a4cca8baa110a860e3e3fa2c46dfdc792ab580ce823f70ac0c79b140e08b6ff6c2ef5f15660d6020ca9450d85ad984a7949f9865ff095100e435d838f424d39945c1347781b3bcb85c1832582eb139398a7a94410e3292cae7b881d8ac4496e0fb9cdb314b85d1d8bfe4260f89212eac21d2aa84a9576920b9e19cc7717fb3a99e5db97103cc63a1b8f10d4cff4090d303641234a9273433288f96a08809950f23607860686c9c125e25912f3c8abdd03c5101fbaf2b2677cbc11d19d1882c2b3f0a6b68098f742b10681c5e4b6078390f6bff03020df34ccf21ff476014d8074ec1d38b773ba7406d88914446150bd126e1c1b54536bf66f077c32bf5cd03b968a485124661f7a0c98ce888c8253346e9590d7c61b8159865694ffec62e6aa70c9235ea882ce9f8ce32b1e73315d884e66df85c5d02bb10a305262e2140c38924f6d2272a6f9bb4f66d307233d451a349eafd8322a9cea235463b11405de4a8d86b2e81cf3118c647547cfa1a05c57819ddce2c942ed90cfbf2ad4f8d132de338a76cbc223657f634969077fbf2a208e3c683c8bd5028862afa36fc17c556d017966fe50163fb041473816afb0f2d864a1a1388fc510b0aea201b31c452d171acd970aa852cd95c0e395c393bd68a1c304416d4c8711566520292c385d0bcd3fd26bd4a934da3b258ec20d773336dc2271790ac7287ca7912c45ad8903e2e4fccd4781938cc6d6ee566863a831f02aa536152206a530bf986c53b78203bb00e6c52e884dfa9e2134eeeb4320c15f46027a4b36eb860653e3a5a26820e461e94f26446a3b3b3f2424dd1fbebc15d83db4165a38d4a2fc23f17e460fc2ccf95b250cbf660828137ed0222455efd9f5aedd25e9e95d0880eb0707dec3df2a6f6edc9ad4970302854cd356e7b1de8ce6a7d7204e2f847557e0a252722e56bea54e3eb6ae3c0a675e0f2d6943d072d038909c798e4ace9a431e2714890e798d9cf4c9b81e0c34d801fb212a311fa543c6366dbab2848643b32c516d7fa8a7642a70bf0001b8c663ad45369ef21a18ced04d628fa84d3593eeacf50906468ee5211f7e721e4b66e55c54a19a10624b1500e5c96fda985c2dae4615907cb6070dbadb28719c031068cbcc83679780a750f1d48815f2bb17bf4040c910c84d5a036d90c6d08e7aa354aed70245a2e1b26ffc4b49c64ec1d3f73f145fcd9aeba153f6bc796f11fb4ddf9f6ae70949a6f2f6761d318ca5e7ac2f0566022c6d8cc37f0d48f0875232a6a173cdab5646c2c6ce30124f09fb1f487b4310325005d943eee16a0f702100d0e2a5291ed435fccd20bdbd92abfacd7d2f5532a9d89ef9a349980fd394f7bc579145d9da1c6d5ec730e8b1348d4a627fcc0e805f90c1ce78ae524cd5491417d00ba29a4e0c3f4618918eee090f92e05b335f84ce24e44dd33ae995a74d42874622b719ecb27104d71f4bce8302530f0594072948c77cde9b18e47e03c62fa69ae5c6a533ce4345267d57281b98013a72d2e38d0a8b5ed23c29917bd9c0dd38deba913716a4d56fb14d7eaa0463e671196ff956f9b56b6d94591eaf2dfdea985646e14afe202a58f592ab8b399bda4fbaf29613388288609859e49f78828397b9e65518a41e2e8f01456108aa3980f5fcbc3b2a0ec5304fc241fd10ce08e1b27875db7ff406c33c25fa40e1422c152194c933c20dc5bd746f68c2da4c825cf7358523b132eab9343d2839dc3a80df98a9a751f76b2956b906d59125c83c5855b33c75ec1440880446df9803816395cd5f6ae45cb1f2ee0f10ca961f43b8ec018b3168c30960614539ce5ddd5e476645f5dc0a9320b1180abc58b27e8e3df89490337e609f791966137c999aae205f423b76fa66ed62ee52587711cbde726a6c3560295714cb29911cfb59d9068afcd0ad3a2a42de49a60b18b4695b1b07e562498e993bad901404cd464c5ddd469c8c149c45fc31f7e322613ec99e1b1805810712ecc735421bbf2678a6b8d977877df70121514de2c1c99126a5382c4efa005bfe187d876c6b20a5decc494b789cf9c7657619cef4b71a4acf489c893d826c5e97efbcaf3710248001da897b2aa038581c3d311aee3122502c3554b0c38780626ba336eec02c465ce1f5f0e290d9bd59055f716a00a5e02e7f6c7662eb9f715abd17707d7c64f8853a021a92b694bc12e7a53fd276f990e4e2cb4c29e05e8ca86f9c63fea0f5d4053aeef2c78a6601b6120a7865fc337492c9863b9774b642ea730b719be360b06b374b0f46f7b829ef9c53befef591fb32825586094ad97529b05e1eafa43a755a4a111912b6546a3990469827c622fc8a5bde9bfcaa2fc66e6e3b22e591e8172d9b6b5c0c49861bc13bb14e22d5c0333f5a56b441a75bde4d0acb184649c4d44617d98d0bee7f70fa4e05b9f9873c70d92d8042dcc43f135da884500e7d2c511ce337861a3774d39403856d5342547ffb739f9294a2955825b475b33621346424989500331b853a253025158013d40104b5e637b2bfa2d235078d2256051288450b5524569c5540957745eb1821556cc2af680e6878c5ab165e5d78a2a41e48bba21be3886d21a82368d2deb438299db900ec2554d27a029b128389c1cb29f8601ad68f157adfb4275b18e23f026d58ef4d9a0ca456b6d3441f55391eff2140b0c117954f262a2d75d7303e5bbcec0901a6ff71b5482a45ab40f43854489ba0e18117ce45f2b089851f421fa251d7ae8b5faf9440ff13ca36b0fd8a170f9563d6292d5516e4bfedc47ac4f8cf5e0bd0a77461e21e2770f3886e1ab66ac20c41390be07c890ab7960a6dc53e78335efeb5a4e88770d13a3db6ca50602d70710fb445aba968e766f532bdc175bfa2077ba48282aae608f0c6d11b2cc496c4cb2105930fb058b74b14c87d80549dbc591d4ab65fe172f3e31666a1103921cf6b4a8c40b7afc205700a5e519d311fe1b37329e69f28b6722e1f88d284654344c82c2057c80c813eb162a54d14e62029d171200be1e711474a0ecb7272fe199283ffd6961155977734d37a49c8faf1498021d6582b05342a77eba4009649dc4a08e9d7666a32dd1db155d88fc44b85caec0f2c79ae1f20e7856e0af5cc601714e3687fee83b42b0e44f71a21a3be683e331e31bdc87afad814f1804ad3bf45bd910173f31968939af7161c6e169444d690bf3ce46a4df026234e089dc6f37aea8bd3077334d62f6fe4c9170bc46e723e60fc03501f8d32776480d7073f24928404da389eeee2cefc01d84641f5dd9d74f83a9e2dcb05f6736f577fe4c21dc68aa8c3fea664c610493c92a9b846687b294a4f0b8fd1010f826d0064ff45a7ecdce41e16046f969ef41c0192a2b36ed68d1733b391c10d5d2b58c899e223e0e2b9de130a39347eee66e429181b91e78fdda79dc1398928c6fa0318716b6a95f2d502578213d513a1990315959c73fbaf19866a540ab55fbcd10a3dd14279f99e3b3103afbd7dac1b3f1f81308da47e829f2cb243776788a1622fcc3eea1d3b8122d4398d8d2058998872e6985896c2fc89523e7ed1402a3c7d36a3efc7ef9c73d0e50803e984046329110cf3d236f4c12ed26709ab7890ab5ab82028fe607cef6a609f7bbd9f49caab0218fcc54df9a93d5a5104739872ce2e13e1a4c9ea5310b73c612f465857dadc04aa1141583f0ef36486c74d4a91a87f1b253fad22509a4c98d0e599ed40701ce24b09f24e5a5282b93a9db0d6ed8d27e9a2e59f5a9831945c8f1ba44c0a7c8b62bd59c3ab93b230e05960e5ec2d8f9b5507bbc09b0ae61a5cf99500810fa01e42ff776dfd0b3b04a40287fe88c44a1b4bcd61bdf202e13306932a6b16b299b9d55a574849092155b9b22a7c7b6e52ea137c04019cf361f0b7ccb25f8a99134d551836bac3a5645ac8b9414d3ae45a8226e4d5aca99e9c8813fccc999a751a4e798d705ed7489146459319d2e56b029bafc8b27026c37547bf6baa74f7f4f77d6dd746d8aa663e709a07c55016060d6dc44ea70210c79d7136fe920c6e2af6447e023486dabfa5ae024488fcbc464858c5de3041e8e510f20807dc8ce635e0305bd1827280f801824d2d290c30e8f5be7bb339e1c8324dfe0a280942996b866309af12e4276c9c2b919f0e51266406f1103525c811ce250d95beb256d7282dfb048dc0678ff2ebfe5db349109add03f0167cdca90c2337942df4f9cdedde02de3fcd0898c034d92a1d9c28fa3545e720705ca89f7668c4ac47566eed2a45780e4ab06d4f2b90c4279d8d4a1301aa360bf6d3129ec75bbb03ca4cc9b404144780c02f008e5b490106a2c7618ea4501edff8b80bafb59af4ec0c16399977e545ca7104a2b83abfd93ac4dc7646d5e323238c6009e56503c14e0b9469040a995379b5c05511200fcd71a658b268012ac80145a563da53c74215b9c8af863be048413306e097400b854573715692cb8b88090914deb9e1718cf7165f93a93fc6c78b074367918414e893cda981f62883f4db2c65bc7a4ae2a39b7074d66bbf52a02f3b2d87592b16b96308270119be6c62a674be84fb85b4293843aaa88e1bb5a7463a2ca65ae5842a0545e541e499d1c1de39c27046093a74587a795f926326cbd60a226dfb4737f2d0bb561837a2b8887bd60fb6b553c0f1af73ddd27c63ad030d930bc632fb4552852dd17a380738d6d97754124cdf4b741b624fedff99de4fd4b686a6d0fda071f7ca79c28dec1775cac55f7761b0d1464ae20000c6caa3006ff7bb50f5b6931063580671b8be341a51fa18e9c12cb132964fe1062e8d4d8414b4b40123b42048920f8e1bda4be11a9ce2368935f0de5cff43654c6029a5fd159f97c4e62e9e1359db0cffe3f6de2b141e7c768e11801572ed6bffb260e1753a748eab4e2d64c4bd4115568e34e49c1218a73896a0d4786c4e8fe6985987c678df5ce691caca4a67702a424ec665bbfcde16905e9c7c21e55897bd300de2985c3f3e3a33acfb111cf95fb85c6990086d150d36d3326c6f3fb244cd9c33298008a386858175bd0d0b35b00d0d8fedf75786efb8c1e2c14ac4f7769b4040d3ff2360aeabc8fe6981d188f4ed0c64130cd126d9e5e469bd77f00ca3afd62f24c7cd05c9441a71572af059892ecc9d8521345892207bae72d22e763502da25a6780c2eb94a6c2f5cac866b65c9d6ba3ff1dc665b6567e4396932368d7e2fb2119464bd757d68e850d5324699cb98ea30902a6dec9eb205af405556743eb2f0b259ecde9f28dd93e5911b558bdaa6d48a084f433914f99c985e9a453eac2922e3f42e5e4fe839ee54928def865c98787ad96a8c6ba0c28d4312ea1b1d9b3c89c87a4aa543b6ce2dd701317706ed00a921b160a22482bd5de33e268162041ddc0baf896bc2b1e9b96a5a4b5a1ca65df00326a3ef1e29bc4d5af7eaca4e9b64950f61c6afb2ee1b47d2bb1fc66bb3562f0f041514d2b4e8e27b752af1b119d87c0e4dc64508d37543557b5406744ac980b0d59e5e572ded4e55f8725df18eddd1ba3218a8a789b7f92e6959384373977d2be31d7d84ad858b3927cc7a782f628b569383196cb2903fe08126ee3f395ed0f8ac1a995d6752d03bfd2cb1defbafabe2234f9113cbe0833652dad76d47bffd5af57c3e847a24da7cc4f43ee6d8684d742307a0687c51715bf2eabd3d9f879b1ea6c819650c1dddc42f56df143d83351036f370c5e69ee01fa85026eab601f7b6282866d6ee392c954a89ea3dd333188c7408b952e38b51733eb78d7c00c9ca51439592247063c49d0dd4f78b880710ef33acd11dd0424153b5da4caadc155e13b1a81e4b4362dc1e58469fd434e42cea38ccb5ca872b33fbd18fc926a1fea2c9b0698b0665072d3063cfdd3d948aa061572bebe83e9301626b75a667409d3099fe4af77e5ad713818a20441c692beeec114fd967f45c9b1c49278dbc14ba7238155f97756a3498797c5e9f1fc01a2bcd7e5d771434145f4043281d5e01e3f4351353809402f1433488d0289baf6168762058d6a6d38c623ead09e6cc5d8f86dc2367045a9a6cd5cec74102f057942e8022251dc85413949c1b328f08099faa742385e02edd5de9a82cb11d140675669f21ef6dd4cabd4858897e2e0d369d8ceabeddd2c7d0d760a341c106e6f62af2f050530c5f70e0d5e19d2f0c9c5f821d9940b51043301573b7f17a2c87520fad44312a16ff36949c0f6c6b38f6c0e61ca4a6f5506dd75fe62b8a111538c4f35208786c991e9952594498d0725dfded960641cf15d38f445c5c5bac03fb4a06b763af038cbb9eab5525c4b7705c7c2a4f22082028600198e563cf9a34fdad3335b333f69854e63c8077bce57110b57e0ad68a133f5c1c346ccb6493dbaec3248bc020f1869adee45986f00f2a5f8cad3d37b59751fdbb4be28af77c860d17b2394c1c128bfc200958b4c5f5243e223e75559f3e1020f5ce5e36d9294b8fff5b98ae8754a0da78874d1a773356607e850d94879acbd102c3fb7e9d2b03c2b87141369902b0c93341830d6e517af8b9005fc17b36434f44744a6dc12cd15b48df33e27eabef505b3d48caa45c67c637a2b5223cee99c5b45d6bb0c47d4f4bc843b0bb55949b633073b68a770b3002b4ad3c58875c56f5feccdd2c8f08331a48da0883fb4e95e418c9a6dbad623d18b831958bdabd4059cee7474b955ae6753692bc4611411068b6fc62487bba05aa3f6396b9bc49844e6f0d5c5a774fa11bd75d0f60c0971ff3e5d8809b51de23a143d713be9e2fe032c52273717643e5e095297738cccdf678763b943c85a2410344917f42a023a7203e7833ba957828a2fe3c732fcc0ee1b88caed460f4aeca446fd8c5210ad8d594f05ee5556082d1f67e775a58992a4e2531529e5b2a3e860bb40a7797297f4de7c8ee202e9cd9c235ff7a1f6e659de9a598c011330f53716df2e062ca549819c69d80f8d3b9e345e75b8345022473388c290852913ddd52ca1fea81a38e8d8e6add2d6084e542ed048a827fa239dac64304aec259211cf489b118475387c774416f13f4852f44def9ac58977628d9b978a4c1b3c7a33f9460fc6d80bc848afae7f89c9b8b3327ec0d835cb98f82a60d83edc89ef8254174e9156733ceae52612d0911b616b2c45c56c162f3d61eec848437011beb0a7df3d6e9aadd26ca08f626e12dcfb197f78b516a1140501d1164b40ee1548652086a4f0976e62f21773f03a780667886728fa39e2d49c58a5d1d1020d29a09457ad2084b2e623376565e74e4d16b917143b176f8538f372391d9268f27c785a0ef3d3321e39aca780504aa9a1fa6fea5a1ad6dfb25ffcc6ea48cf93e20e0b7747d7fa53b50acb8e494047c161f62c21a2d467cedb6edf99e5a657303a4758d3221bca8ec1cdd6e43b61be64f5a2cab1ddabb1ab398b2b22d11ebe56384831315888035bac9f368cce9fe0fce2f5cd0af7db17d4a86269e3c668f60a4b501e24996b34da592b8215ad5e6198a71740470194bb70418b08221cbebe817a73a7445a2d7dcfdbdcd2ca88390ab87ed7bdf1d60fcc9e1cff8aab2044a95e8b2939fad559b71e19aa6fd5240b98a33a33af10d880fe6425d7ff0ce7a768958d84ca222338865c75f1c5b1d6d81299362aa46312a5e33190ab48ed907f95cc4b11cb2cea0278a32311ffddb9750176d665065d2623aa4612b8c89e85fd321bb960946fdf8f982a9abdcccdceeea438e4dc323da983e68dc1daa91827ba531b6292761e2b7ceb931050692bd0993dbab1239a6f6f26adb4532b808566aa375c4ec1fc9aa54d4335a6152386082745f94009cabfcfa03e0a8d44225f264ebbb7f9e308fb952f5d25c9dee9a7995ee29ae167860232baf2706cf28129508d0f9c7a64f159143ef288d9fe781691517d9cb6e6387e244ea16a024e9f4b6c344f1e39cd1d7319d1b6faeaef2655dbbd8ad49d51dc284490bea09d9f78ccc5252d5500310860b584c3204bc44e1847b08c12664ebc3d71a49e8fea33f4bd9823f04fa554f922a1034a37c89a586a16a5ac7bef3c1a0b6c4a5fc0ac0587567a328a9ea0ea02a4247af6ac576383d78b09e801e43a37182ea3231e0908ab940e549b976b24f560d20b73979454c57099ee34bf6fd77df8fe0754354221990b7d16deb77ad5eac19b010471bad4cb4cadf36126a02e816a415dd80586098eaa1b47bcc04904eb2f8f9034cace98624b1c375edf84497b4fc458cd99093a1fba4413158ba710ed6df4ecbe45505354790fb4adf15209fe2741ed833c00388723fb3712f8f67d8084f1f4ed0de56edb6ea7e49887f2bbc65ec5bce6e2658a12632e2a97904ae046f0a1ba50de8747caa23b07dcb14722d4154c4f55bdbdcda16eb5cd912959363edda38a326435d1bd2ebc5322adb5220886ae32df79055a7a2d410931563d6cd82b797eb9926b62a990448dfef6f7b1338acf246a2b6c1994c36d90ea91eef688f39986dc01501ddb550be846d222b23ac78eebf866e0ae721f05c1facd83d5893e56c889d000175ff5f33f632990e2428b377c332d0367f0f00ad6d99558996eb044ba855c957c7df30a93dad1feeb303fcf1d33bc24596decfcb138099b45d280f3b70ba5e2150a6e1b9047105e81bcb34a9cba39d1fe52a500df7eacda69fe7e077cc0a31cba4445ae123305a44dd166f0d05f1b6d6e2cf54563e9b2b83cc673c6ba84a50b6439328b2f8fcccbd6fee90fb3c8e6f208156f7264c09908dc592505dc4fe20f281d33665f6c11f55a74b744bf1909ada56de64ee85a6800a42fbcaf847c61ced3954d9987ae6d6c88b0f069edee4089624bd20e8a5eaa4feaf5f2e264c3ff37ac7a8188f4e78ceee3dbe76c95694cd0dd2a79887b9d397b94005ca0d4080765853d5aabf36a88e66f012c00bb4ad02b5d34980f8ad1aa15987b2e86e7534dabb1d58f3ed6a8b373f4eeaffb55265568a4a890a107029e3b080097fb7da1a2a57e2cfe945a14956916ac216d588eaff25190a00acf34f3eab781768071cca966c2f5d4d291759c7166900236bcf4c97764d63b0b5d7c6addf5f8a2ac36edc5a5648eba9f7e4a5c6e2c6c2f0521148723b80d3729c2bf1b1f6ff37d8fa37603b5815ec01f9a359b191722cd6c4081ba3e8ead5a11cdea67dc838c7e7ade83b40814e6121092c7885958f0926b54591bcb01459f91e130ee6cf6f6a569dac9af2cf346e2dc216e0e2903e3162475313a00473bbb308cd157a36d3febef50db6b2168226ae78eee595b5c49ddd9a21aef14033d2cbcdc289aad4ceb93ef332fcd925428946efcd84050d6aef88c731a860a25390b5aec94d1ba6c40679c40975df8393f14476e9535bc9c1bfaa3b6cd061e9cd4355f32290c2707ab0eb79924283ad97813e2d36bbfe99f2fd75fb26569025e0e7b79656739e8d0debae5999983589ad9321b4f900015cd6897fd2745b0ca666dcf164e8e088da35acb7ae1dfcaf9411f0af3c84814344eb8397c19ebe235b1e33586e42ac8124ce1afb9bbf657bae6e227640a7f5c4fba9ef50f1d0a9d65af1f7256cd7d5736a7dd068559b4187ee2b0e4085653204d645dde893ab5353373dd971d43d9d68b6f7b9dcff2c9f3ce76178d02a1811c2be4a84c16a5d982abf70c0d451768875ed314bd40d0403f6c7630c608a9963da99c76058b5b497348da098fa0af21ea5689beeb0e601345584cdcddfd8e85847a02b3d33579fb208766c8d91fb24305bf9024b82f0be572e739fe9df962961633dc58c47a36ea2133b2b0ea6111db9549cfbfc94fe25e2826f48402df7526368311f729c55637db288d65bd08c646c9a9aa06965a6ab58542217e60731fa4591da3a36b4a87b00165f482a7154ffe607f4e240988dbcc917b6efa421ead762c9888866978d43cd58cad93918c36fac55237df72ab3492fe503e3e5e0e333d8737357b2994132f2c6e1ddddd638d16dd5962f36d11a716c80517162bd93511919d6a727c4894358a4cb63fe65e26e269730fa5a4424c562d10cf9855deba8aaea75b1c8b5093ff6c863eb39c4e9156bd0145e61084a176625c959dff28c071ad92a893716533d4d420d78ef9189ee90a4f528cc1196c44f258a16c9114955828cc9250ecc31ccca58ca66786def95593c6535e56158588959604847b00bce61a3f4bb65331536e1c762ba3f0a60e3c73775b19c335d1fc92b392de1873dee74e77e7e06fef77d880bb4986f7d98d0e6f7434d1976234764ba7cc67dcb74811e769593e77a2badc51c5538db36607b491e0050fe2c59f926928efe3e54245ef339b7292c5e4dec25b6943d253af302f91d3e0f21f89e008b39d7c07b4e887032919b5d5e5f267e0c50065acd0547ab7617140faca7da7a41d4a8de52e32adb526ace4c07a0ae8eb963028ff20f815ed969f82945cfb9643c97b51557acd90f2559fa2c808451a0eebd37857b274d292c674bc51ffde63bb74deed39272be33e3a2f93ff78904ce8856067fb8bcadee6c22536678d4e5d960108d405442325c804274668e408d108d4f3a5ecbaa88e0fdf13194550491cd34a4d71f7047e3b5677819ad9e9823855918f56170601c67edbcc34468d34607cf84eb8117f90a7d7ca905e13740a8de1643ae15bfcb8c3006bf6b3e73fc94320e82964a315215dde237ea87035a2694a2e27084d14335c8ee9ce71ac2a077aed66264b54a178d875a4456af2e93472b3cce75681af1cc247da883ec2b7336ea58ed4063c1c39ed7188378434e3489181eb610aadc9487e2b175d9f4d6b5e9a2ce32618005f1dbdc0d1c56b899406a5a40224e614a1e40e122418e35e5b3c6c4cd953364640943c0b81bbce0e23de34bcb924c5dec0a9b9cc9ad81bd697255669764893ad337c42a3cd0ee150d25785463ac3452bf6b9378fe03c07c03234b361b070e55809037d0ae535063a90ae21235f4d34f114ce190e49ea3929713a9652da8d52e2265da507056905a0d6a180c9bc74c53f9379ec06f67ee7963591ae1f5730c4e8d8e173cd1f99093fd3cc753de86beb880a67be66705afd4c21046a01375e6844afc458e57a4928d1a752f0c009177e78ec84c1d9411758e01acc8cefe05e80a5c2edae487e94f6764943be62a57705a0420ff011d3f619366ca39cfe5c0713722df8871c3585c0be95d88edf99ac7d34d0609db96498123b211b8d6adf4d9d8948317839ec5c33c67acd37d48aba64a1b47a4555a2816d607e60b9c0e9fbfc503fd1820407a9aacccabcc9b798feea75b23965b981d291a786d23bab02c6f78057259d50ab8b25eb2c1d472879aaa33499bfc900787805e4b6115cdb2b4376a60bea4f20aeabd3aad4c6d23e6b9a25daef703351ec61f62ced197a92fee2baa814a856f667c5f13eb4652d4d4e84e247bb797a9a64985f81b97c6eb1cad7ba3b4f1ee106b1f2b1fdf8b79923a49d4f4385c0e459d7c4ba30e58a8a8d50a71c5dc9622fd98e3a2e65c47d2394376a4509b5d27825732f70b2e3626cd8064c539c72ddbef3af2888bd1713b4a5734bb6812b87d66c17372b96ded88c1b646b42cb1637afe8acae8b0b10e5886426828fc833189658551238f912563d66048fdb00d06b59250938dc365ae98019ff96341288ac23108c6335922034e602d24130e97b995be19da6346116708024013e96b30799fc7f6055c365e8c66b682c252f982d004b14cf99b1b8d5e0820ec7308772424f54fb41ac5e039c7ab584d9c3a9b1fbfdc74e4bcc041545af654b8d95af63a7265809569dfe3ea6e390814b022ed84aee6293e91608ddb86207b6bbafebff36510323e7b6d0c60b45e469449b1274f3835b202ea482da1a0539f126134e8aba2a6fe1a6746f5a7ee00251e935a708da153aac4a00f7aa929736edf9413e45e911caf36382bdf53243be5f2b9263cb9781f848e00eb235827dc6d9c41b1475dde07def6f42cf43181dabeec5bcad7e8d2d259704b368eeaeefa27a4d8841dbda98be35b1ff93a95ebefbdeb6190e53827be5af904dfa07d38da940c4d6715dd2139b1540646b3074614f5aabc78081f493d04ae869345197ec9c0e8c2ce331e7ba95cce86682f4be9a4c2c2ecf3a41ac9bc6871eae669cc6b9ecef0edd5d2860f5f30c73d09797998956a43738b2c4474e8dc43eb1c2934aaf40fb44f6f7cc84bd41133f8fd4ac0e28067c68e3b28235217c942cf11ec0e43e40a594527043ece4490f54f120f660d0fe1ae3d7337bba266ecfb0d575160dcce63c9494f432c2bb3ba7e26c44c6c8c354cadc494ba3638414aa3314f346da4ac46910a580a4fdbf64c67bc559dfebe18bd60be51f1328eafd64f052588ad3fa52791962738e054596ad670edaaea2e48325790aea3d1536abb11c688940aa353b88e22913a296b8cb42f3d82b330d66b2de8261665ab0965cd3fba32d257962cedd19d0eb11726bec9ca30705546619d84afce40edd343ed487eadcd36f94a93404bb28cc4d9d1ac8632f84ca360e94928d2f3a41b2d4f116fbde1ae4b82e7ae636d3aee958a78dd4aa36c4ee0fe29038ce11c41ce93519371504e2faf3fc01bbba7243d623ddecfd7320bfad86f6fb602abbc8206c68daf01cfc025e531d75613005dd219399afa2881aaf07b037d790ed2c24d781b037a55fc5e5f5933f5ea66fecccf15fc0568819227ff95586cc68d66d7725e6788d7b7468c21e596ac10a3c43bae20836de122bcff543db14a5c6b260785ed1744610c27942155f454214a91fe2a0c03aea1b089531dc40b50b9024530bde2645c99c3c08216d05052ec7e3d07634cc52dca398e6d46228b9c6493554b0ab4ed93236902943707c220db877be45c102e95a5d6a26f3c7353fa03defe8e77498b731ee32e4795e6a14e100133443e692df6f15af64203905aa7b27dab9dc8da76a3c7f0257450d0cac7a060fb265f8fb9b3761207e02861a06579a9c8a0d958d36327281eb358881cc11f130711eab314d0508c63a74b192b425e485297c96668f1f4edb2218625b6ea61b4d8909048da34c36a35cf3004dd24a50b2db9e7864c4972f5992491abeb352a9f550bb78c310eac3712f363857c5d00ee9a98f1605bb193d5651562721e641383204984c75d7732228ca708fc17adb68103be17a39a4dc76d48769cd1eac4270f7975d22b32742ef3944da81ba2b9463be14919d490c882d5bcf2416d1f500e4b07f66b80154917e3e41e87eca09f930bc250660ac279ebad6a0a5730a4b7d846550eceaa139928f1a5fa51013cdc66a99c6c0c1ee43e857a17b08326d05f0dd206703ddf5e174ac795ebef9f4dd8aa0f93976e016a7e912bf83889c4f07da08bdc082859246f6a079d917d6ef60f2e63e42a9277cef5b0c3eaa9eb947ea2151ddb16c01e860db12041e5d5af34d83ebee94e49c4a5447e9ea661d9fb79868304e22735b264290f419234f8c7673f9021d2b4579993fa62fec4d37797efa2c8ad81dc1cf07ce3c079b40cbbb84d6f8592aa9cc3547ea554c11e39093021e046d98a7381320d2a56caa1e6e10d8f103b06050f674ca17b254c5d9acd99198d9ebbc13c3a206f3abf5719063bff7a997d5322c956e82dcf118f8c148520e53dd866c17596ba069da1405f1c77fbed6a069d01fa19cee56a6f4cd6063fda4c5dba26fa906042ade45f84f38e09a48f89729276f7fe55a0e02c63eebbdd179c1af83a6359f436bc1388c86d8375aad0f6b7c525e90f52056fab15ad885420486152af2c77dd06305514a29135154252fe0cfd94bff42c6aa7d75d2211478be2871d88e68676b66e490a4826077b22870a6fc301a5ffca927ff1827c513368f040dd4bcfefd20ce91867fd960adcecbca6c0c049a941fb4532060514d07c9fbb40a868d49fd8c5ca5639b90fb66d255acd3a4ce2136b9c2861f54c97ff0783caf3eca13f9004805729d1ada987ab8f98850b4ab8b67f6ffd98ac3b5d8e9df8f4d76dbbbdbde724b29934c01df0a390b090bcf39ce3ec507777ab9bf3af6ccd52e468a0fa6b792c5cdc23146901a8e4f33c3b1f423af6471474db43d7daf5fb4a73f922a97697f4c0d60044225d36f6992e98bb09cc1f247b7d0d7b09ca25be8bb4c959481444998963246b9844cdf8663c38a90a94f103275e141a6efa1448d12072e261dd07009cfde0798ebd31f9e612945c720d36f29e3a29c197b28732a44b8d445ff243ca531315552c694fb6560f425161c478368acdf91c0e9340d929bd2e4ee87fd0c71b15f1ee0b8942f6ec9c5d694e09a652cc5b27d29a59452babbbbbb67ef6320818dee6f7496dda875caa396a7da763f82b1826662dd6aa2ec54c998c4181318639ad1624c6f32993e0a971853c80d99b470471bcbf65d53c50d893a4f8b2e5c9e4d8fa91ab5e6187ad46279e2a2e4e062df991372d10bb95014d2cf9cf44820c4f6373adbe0b4ee1bc34df9e2b6cb39d2385204b270793423372442c21da58d7435ca9f471b1ab53ce5ad91101ff578f63271c11db39c6c7fcc70b21d7974b60b39211777625ccce5a931ebf194fdcccad6d06a65573c76f5b2ab534ae6b6ee13c3959e102390c0c98f5c13655f02a61fe54c949dd8e6f68818e5b8d879e4865a5cd044d9a7b14c133451b089b241791cb54aac7047bbba1a781f147f863863e4c51db56af79b9552b232c9f2625e6ce5c5244bae64d67541243192586945127beefbfeda2fdcf77319b78d56245fdc578fabbaa13912f2148cb73f8a798ac868c853579cbcfd51114f91bc05bb921fb5a62ae5ed8f723ce58d5c9e3279fba31d4f6d6f7fc4e3a9fbf6bd57bf7c6fdfe342bf74a155d6058db21f8331d8200dd9ea20db7f65db2dd63ed12df6396c5ba0863b7a3457cc7cccc98f25d8a8a7241c4743b2edfe67e5bb701c01a9fc18c4e9c7dee99e1e92c7516bd49aaa0fad10951dbb027b88476357620834e328fb5703ef83e28b295f5cbb22d9c31d4bac21d85459203dce2ad1946a3c0582dd90adc9f661d976cfd83b20ee645cb442bc643355dd4c0fd83db7775c66cc10c57f56b67f822dcf44d98781ad8e8bf6534cb06571dde7737bc5f36ccccfaedd2161ebaad86ed802b1358eb22f245b1c1b44b333252277f4683c1aafc6539e8d8bd6ab71517a363a8c8272e3b3cd364b95dc59e8d1b8683f367a34d9be6875c72e28db17e14ea80b72f14617d405753e2435a6b7dfad3cd5bd7d8e04e639413b79b43fb2fd91a426db3761bbb2332efadc063bdcf964fb5d7d4eb39e103277f6496063fe8dce42789e61468a40163e2eb65d79cab37d2be3aa2cd6fda8957df6ae3a41397d67b189b223d6549d42cb0a59276f59d9be28b4ab2c365556c651f6bb3cb358b6ff7de18e19ecb59293c1b27d4ef42252b7d8132d1b71cf4d0f02dfec72d4ecfd8877839445e1ed16fba72e6e7dfaa497de0dd1d3211749e158c23773ee2d9d8ebaf088a9a2d1bd1144d8b7e054cd2829210967b4d8fd10231d57b17043a4d0a3e186b4dcfd420a3d9aeec752c97ecfcd3ee97bbb3f6a4d94849136b50b67387ae646ada9b2abec2565d8bfd7aeb26d659bbdb29536de0e1913c99ffc87491777e64830e93993c96432b58b2758e6647bee04cf184e762798c670de9de01ac3cdee047b0c47bb132c63b8ce9cc827388b31e12c86043b91fbe386a60af468248cd732bab7ddeacbdd8f1e15d9fea52d764fc25a8bdddbd554758deade7ef6ea4c53645b9ac936773f665d703ab38e7a3648de3d1b241fde5e6add87b7bf1f091662fbefb9deb81fc1327f1f6a2e76610de2f1d09ec395c6c599c35dd5a6d6946223ae9a03d72c524a29737c2785726d7e597f74c95935f19078dd2d3b10a8211d7211a051d967593632a35bb22c5e2e76f64824c1c353b6736fdd92d99878c41ef7da7b98fbae7befb90ed7f73a0e6ff669d5a8908bfe9bfd0df3e8b2b5218d1531db2793320db56ec94e5d5cfaf3b3168c4cfb6594fbabc49e3f77a7485aa41bf5ef1819d5227dba863b9e68b884fc257c684f512d83fec4f45bec16fa2456b89485c533ca429f45ec70a455caaf274fcd983af4b328cc5a6bd7b9384b57e0a85916a210615bb2ccb5946bc843cc0d70b1ff09bfe2faf7f83fc25cecf17214cb9cd11797a0ec3947f54bb3664e76cb39aa61cbec7af88a843b529c27cef5b5fab7553388c8beaf9071aee12de0ba76cd82fd592badf5658e0c01397b27b2c59db90cd73cd6dcf9cc9a65cae1bb91bea49f51cad2031316b234ab0fa1a1fbe0d8f8a03e4343949eb1cb349442a3dce0a640e18e543eed7c5dec59ebfba0b98634a8e8628e2568a65f6938faa099862727b213b986f780ebfeb6a0e39bb486772e529d3bd23ca9c83208b9a715dc7c99390d4502dbd6b2f3de769d673f7bed371409d8cf7e87d57e0be9731e9e813ddc217a2e74b9853dc119a13651f257b07df6f4ef54ad40f476fbec776c9f853d513494e10ed1dbf04e54bff464b7482ce8af207bedebff54adc04e0f4502d96bbf237b2da4e10efb5cf8b8453128f37fa27c864becd07efb09740cd88416be166231bf6332ef162d7b51af2e6ed23927d5ba4576e378b9dc704e91a68cf023baa5bf54862bbfe7532fc2c5f9b9bba5eb1a3807dfc1307b4ba60778008ea9faa151f4db3bc28822aef6b7a451f43fec9ef2162b0afdce28427896b92b0be8e4a8f780ef870c8c706d147d0f97289139ca89c2ee164a1f88166ba3eaab9804c00279bea8c5fa92e24cc5182c42aeb7d7a416eb6b5355d2a8fafe6fff879c921d885c3190670e5cbb254b419edf62a5b3d2dc333428a060ed156c15a8adb9b5e86209392b62f802e645105854c8c0410a41de50872534410a51a85955284695ab71ddddddf3f7bfee7f5a82e6ee9cb6d1e96ac0103570dcdc5a741104337cd3fde9888aabe5d6a20b1ee4b15fdd17d7e6d6a28b1ce4f16ad55f3b8c20a2082d8f2cd9e710ba90e1ba98411846b9b5206287a12fa0606db51a9133642eb7164486e451c482732f03d780ec9fe5b34c09941cd9d7cfbe7e102e66aee2069428e1ba34a03e8ea9f25e72dffd0eeebbb0092cb26f627b2eec7eede0de0b9be8e742ae314af6fd4ec46c18250b5130b07dff8eeeb9cfb270c7f6dd1dae383144c91e9c287f2796d8b17df713e8983b51fe5dd844d873eb7ed4ba508c01163fbae42c9b813510c7c8dfe1a26be11ae1a27f0d8b7091f4c48d118a2e0e11332c73eac5e72f66f92cd9bffb3bd5efde7286a439dcfe53762a38fa9c26849827c6249f2b7ffe7c314fdab9a88156b62e4f649214ee78ca96c5534378b71472663fc6c953961b4f2c59f4274f8da77004bf53fea29e9e0d91dbd84eb9798440451e63647bcaf68bac85a4395c7ffa2dbae2344fe1fc59ebef15159c824f59e718c5768e4fb4ceb1c93128ea1cc3e03ac7265de7b8c4eb1c97469d6392af733c723bc72452e7f88e748e3f92cef1a8d439f64a3ac79d49e79883d13916819de3cdd439d64e3ac716a5739c9d3ac735a5734c553ac773a573ecdf3996b873dc19ff8a4aca09e5c41486fd2bb9c33105d9bb29709aa7bab3b75996651a9d7306dc17852bbfaee1a52bae9c7e3f1c13d54e4816b84b2e2689fb91b6b98c7c3f0e6e8465cc084e21fd906d4bb614b8d86bfb3225db0d88f0d6a21579a27024c1866b8bf6e5664f90658b56ab2ab05fc363a4e628a741b81c9e638fbb39a50117bab3a65cddfbf5189ad2e7a49d8b295aab7d4a27d55c944efd9b527a04ed49447bad91fd587f66fdd3dd9f86335ad62cebfa99379d1453100cff57b81f70cd227dd29a596d13798a4a1b19c453f65b1bb56c028adcf7d768d2778f2e29f589f69ff0378a76a37c061125f8368ade3e82048fe06e94c8cb71f376f374699e1034d758c2052e1a727543ae39c8b351f54738c70d75d03c0f77ba009c3188653a75b27c70e2643983f8acc9fee3290903b2e1d9ce204fc99f429eda7151eea051f2378d74a7095cc9a30765f93e84cb40cca450280512e3278da7a898b9511703ccb22ccb320e44c3bde011dd3d74863c7e76b8a30fcf4268f54b9e8e2c0459ec2967626d2fb2ec2fb417cce0048d923fc3924fe9b38e5072d0ec23905f648a67e4599235dd223f43f9fe228fd2c3d187cdf467288af3eb4f968ac5d312ee69468c6ef1b0b43205d92c2eda1f6511ed6591c95a3d40ccf4e74f202e4a997e81a25fe613ba456ab8a4d32f2c59e3e23f08de3b599a766f4df6d5735d4396efb2669c4fc812896e19c31d1dc7713c355b4272743c35c31b3bce83e2df797ebf7c249070d1b1112e766505c0061c279da55b8ade7486f472a0f20ed73e900a778ad247b403a970fbb9c6b547f26b7896610c1a46b8d84de49e53e05c6a1114cbf3ffa394ca8f568702d72fd73ebd3ea8c9bd450f5879bc364073ce999d645cf56c506ae5bb3784139a9c7e6776c11b7f43d7820e44ea50071908fde4ede90e7a62d9e96f5acdaa04729467b36ad325f4d5e1a7fabb76cab2cb72bedb90dd30ef06fd91ba41ead89ec23c6583faa51fe05113b48b745a81fbb8b85b7777b7fc996538f660f1f4109eeee1d97116f054eae4ec246cc64b84fde793fd7bf553ad7b7d411fcce7a5751a4f8fe46847855c258239ca5f23726911114c66f523375781e47e8e1503fc625f6c7e3139b3fa86b28f5f2c57206a70a91c229fbaf298d9b05a3094e77f76458193db05858d4b8648e63297c31de5cb769f1eee98d9e44975466fb83e3c257592e0e1a91a8e7227cbf7efa163b39305fd680db143352e0d6806e7b511a179914ebfb88d970395331ed92fd1a6d93e35cd44b98591395286bb5ccce48ecb1c09239fd032fc45f1c12d933a51e8161fc1e18e578af4714c153d65fad4bbd78dcf738b1b00e5dee20643f22869b6b8c14d7d9a451e1dc1c8654f87fde28b2fbac8f3e70562e68e14a4d35bd6110b0c5cb38c1d2b7b579aeccf038320b9a7909b470a58e6464257cee1664337b42cc38c48a5c9fe95c653d3278f9566861911173d2392fd61e4e0d23123d2b1b6e0bc5f7a0e08e994120acee7731bee1891f6a34b0c2dcbb4776980abe80fa1a25f841123993e12f493e891552d068d81156194fae044d12afa0988c226b450f423d8315b0c17a94b1035e86f61182e8d19a49c2bba387f8c31b910c215ddcbee65f732cbb22c1bc215a98b32cbbc4e54e7a38c5efef628a3e7bc2cebb24c9489b4396d7b11113b3208c8efdc51b87797df85281cf79c3b67029939112662878b4edd1f8817c4aa8d10aea0144b1849b852d33a3a843b82b17ed006fdd36b9de7aa79766fbec562bf541aa10c03e78ee048af0dee4877b80843c81d6946a13fbad8a028f4b38b8bf29f45ec97192ef64b4b3aabcbcee8d319d23a702d6540042873b2757b0b2b86642ee65674315b71082d66db1d29b729371032377bf9370817c5fbf9daa378e103c43cbf51f6bb70d4b4bb8523286aa4938bdad7a744ec28e202fd320219cba210e5016286c07c0e45f4cf85a2288c8189d8e122102fb8d9eb816b16ae3db559cbc96e7bf93c2e10cadb7fb6d35ab9cada8f27edc79296c4444191edfb8c2426a7695be6c9ad7672b5bdf63d7c30d184f62e199e1f1a46c245ed6553d258cada57ed5da6a6ddabfd7cce7672eb5c74ede527e1292656ab954cd69e478f2bbaef7a46e99f45f4547ded63782aeb5e0bb5cca2854a481b3a7039b9650024778b01aed0420f34703dc8d868eff7c61aede46c2d8a1051c3eca930726b514409591120d82240343b6c28641099a6c08db43a95dc5ae4a1065e1ea0188dbcf8bc375c118c44a285116e0a24a52294f0c083123c4861720718d70de037065349154ebe25a0947c70f26e90720717a88c70b14262862fb9022e2921ec2429b71643417277cb0c453618d9e8fa499f4b7ffbd36bcc2cfb300c55a7cfe8ab4e5acdcd8345175a33f715a67081087f2ffa140b784cca9b7ea4864b92a0bcbd093701858c91364d00faa677dc848c71f06bb81017e9bb5cec0ce3b3771d17453a7f741f6dfe989a8fab4c2e2057ad3c7d178ab94ae5e9fb9017a12699fe94c1c9f4e78ca758ae9a31f4b5793333ba104a6590e9fb104fd11f99ba8f8fc3a6ca9fce4c147dcd5d2eeec0c0ce03e3a98a19eee8ae4ce9bb10cff194c3fcc7451fd7cd544d15a8f90c98b1c78cb0eee83ed97da6cac507f41967f90ff729a1ffed49e01fcb18cec3cf3dca0d0ee56bf8e393e764f7f8e4db2bc263501e0636796993bd4b77cbc89be025642ec123cd254c82471e2b580573e054c91e348abe10fe0899fe28669a45a63fcec874aa3ae6e90c9b6ea15fc33f8f2ed9857e0dfa385a058222200128095668010a18c4d027a255436cc10e5918c24117334e88a19f824f58de4c147d12962d2c856099e322fd0f4b1d17e9a360e99a28fa2758f24c14fd11962f3944fa60f9f383db843f16f5fd7f052a307d1432c614a2481bfab29543b347d9ece83ed9b6652f6d5c455ac91b1c5a7780327dc9a385173f994a1fdf6c46e90e327d97206ab48dcde4a44db6bf69a40b521717692c0cc245fa253377a454d3b46953e226585035e75d8761e564e8eeeeeeee00d72ce394524a29a5949c10a55fc2068cf7025c539699939d10be04e758e6c6376e480f7665091777ec58c3c223dc710a31a9b9e374656b7fbaea4ed6e3a9c9e3290f7db86847fffa4a4c08cc50891a32519bb8c9762261da80b32565d8f7493351367bcf3253c532839366b6e6cdb4992df04da6a79803bf861321724997c89017f1d4ca53df47fa1afe7a9194469ee435c453a5b7ef3e2323a5afe13cbf45bedd29da75aa04c67ba40c263ce5214a0efffa4c34e13d9a10727bb8c8c1f80ccb5c82a5135a32a1c524b4686514da7b248c6cb50cfb760bd95a2db2952defc9b6e44ddee4a90e9c4b4a92704707e240baf71c48b64ee3356ee3a9077cee4cb2b83ed3a351f6352d367ec7bad900de117f6f1511feb25fb6f770aca1cc9142b0703f9bf2285b399e32658bd3a816d2a81c3fd06954e7f1e6f8c14eb7741e415396b271e7958b9c48544f3d56be86872aafa53c976167f98f2cdcfad92b91bdcf68780ec1f3e5a27d15cc6346aee1f4d1e295f29967c367b47051be86f777ac86fb5084abdd709c7ff22998e613767c848bfe285816c1be920991b043f6990f17ed8318066ec245fb2658966059c29204cb1f922525cd87650d969efdee8affa9bdcacd55b9b941b8ccfa5db167ee76ed2930f7bb77439b2f22b41f4d6c6b760bf546d13719c954c4848b76895a829661bdc8b6878b3ebac53e89156efd92ccb5df3c6c122efa8ca7ba078ea9fab7aff5cb7cfb5bbfd0b7df80c7322655120912655f241a19393909c30004a00005c8a396edcb4b6e2d942d8ae511ea7047d99ab01417fc8acb5966c2c21d691c3155334b4918135c1a12267bfa0868977eb129192dd27024ba85be8c189ee2c011256da891d9f701e6245ca41ce836641a1ee12212ff9f69961dd128fa59b6845cc32c3715ced0ca2d6583abec47955ae71e95de4dd1038006f7eb8fbe4bfa26853eaef63550ac928c90eec8875691844938aafe484c00a3012ecc3743859095855c7f8e9e2bd1d7289433accf5d88c46baa92b0e178391fd0706f1c55bfd6e76a76e322004811c822c8459b4c7f0a9c4c5172cc4c4729c406a8fe8b7ec38d848b44fd24aa5c856329f374ecc6e72d4422890cf3b03ea441b3a351c88146d5afe0dbdc38e4fa75a10728729d22d7bf41ae6fc31de48a44b7541f60d75f02b96bf32e8b6e76fee38c2c42214e14fde71e0a0f8a9e2828b489123d7d97ec3da52f92aaed257bfa5bbff8535001a29709184d14a0fd3892e915f63d7c1b55bfc3df57cc683116a5e1991ba3fd8665a29811a3cddc181b722d5b9246638f3c821efe819641df079891709126e1c38383084df3d13ae301d72c1ee1085e1b9d5c7fcbc1a579b4329c4657b486ae684daebfcd39c391060d172d9ecfc18ac060b03de4fadaac224731fdcdf5e372b9cc90ebdb7a0a8097039539ad1400f0c6788e35555d3d39aa925a467d8ec5b138566db572ad7dbb05077702c9f5b1cb2db9085ed60452e3a9eca777c3f3c9c56a5bb6c7b66ccbb6ec16b9be49137d7dc9e3aa16b0c312e6627d19580239cadf4fdc1017ab8f4f1d09c371a165d4af31d026572f744bfd714221d717794278a621f7ea96fa1707977ec7d2b48ed5b172fd6ed5adb295f961672656c5f86a05d079b345fb19b62ddae75a53c535ca7e7d8e47724f20c9f6472e27d791e3c9f537efc6e7ece5d31cc3eb644bd7495136004c63868bd751f5f543ec8e57c4f8db9d363db3dc6ba23c1b7206ac3ef79a361cc507699ee100a65339803a9a2f6ac1d2c751f56308e51a03838eaaafd10c2307b76be5f68105d409003807d2c0d3029e7c929ba70538b91b9c2fa1e6a2ebf88e0163e6d7864b5d74bfc9431e66c0123d279a28d1f7d370bc99bab6fdb6bde3d1267d5c14b914d22ffea22d143d375db288eb2890ecaf3583a1d94309eb16d1df29eef6fedac6fdc44bc82a6409997de4cddd823e37fa0ca8e8392c715c14bd090eaea866a1a88aaa48f42e9ebad13582680012fd22b3e825901aed45db8b3ac9f294e87110e145b88ac688fe084ffdf054f33cf193450f4e91e86fc953fea2e7401c6e177ac8a26f1651a884b3b43330c10879c8036b069c8ba3900822d3f7690475976ea148b8a88545b828c79b800364f92dade2d131fa0a4d88e51926d12df42ae18e2e3e7a88400441c3883ca806ce99e9578dbe48290d40a63583826b16900a58663ea367d72dd98bdf65df1fa35f8a30a25bb2c7b96397bd943f36d04372a6724142030db343cac83efb23fac57ef6171c2f67b174992a1a3b244c4bcb902f030c3993b26ada67ee69b3d364fdae5f66f502f60d5d6e4eed06f7d973d2bb81bdffc27671f423d97d875998c94829849353dc07416985a0390b65ab5bb4bf3feee8b3777109e94919ed3b3cca9bac3d87471f34cfdf987051fbbbc51d656b3b43d65efba9fd869b70517b132077943da4f9bd20d81a65eb46dfae74001f3d782041a35f64d61ed4fe5dd5315a8ca6697f446b414b004c9b01e7fe9c6316961ba2e8a20d00d0e04ebfc13dd79cecc0e7ae1cc2538fc35344ec28c208578113c5711cc771adc914c92d949b4786a53dd5a667c3d23aa5d7ae99a59ed29ce37141913c0691b9af1f84a7c65bc353df001c0d4e4ed35e0b47ca3998b9f7971a8ecedb778883fb21380a963ca53df7cdc2854ac8553687af59bad27758bf4cec593a1a5a2587262a7bd61d66b87043cee42b67435cccdee21bf37dbebf8772ceaf315f72881cca5ed3ee7c3971531c5365f219375ff42658366a7e099e5fc2737637228bb8980d0d6db30e0d0db95c2e976baa4abed34aae59e261d1e8bb8836c9c8df1f638c7e243481cc24e1e85f69de4e2ac483878bd9109fd8ebc565af50be5e6ee3366ee3365355f2a5f923dcb538a7cd54ddbec9da49938e3c58fc4d40f3fc117c7986dd2dd2d3317a7fcbe3b3af11eea82d18b56e3c1b329437525c1a2ece9fe1e20693c999aad42f2d1473229e1af2222b1c4f8d33e60f57c99929337a30c8add1b2cc621a23ecd2e2fc1e621344a3e6efb07ae6e7e1e8117609697419102e7801506e9e17fc64ceeba647e141d3b3e153ca4aa777363d39f20ecbbeeffe5ed21809bdd648a46f9e2864f2d84460190d263c95892b4f8d2d94b3cf321cdf13ece129af84af28fd87613e641e8541b8983d0f1c93cbde65aa4a613b0d515a71b64e3e5cb38cb595e9abe0efe7305619e74afe55f9fbdcbd2a2a5fc3af0aee7c555e626e762addabe039533beaa9ce76d4532adf3f74b9da659e0dcee7aa5f82cc1b974cef95247c43fea575ba04f144ab2a6b4a316990e977d3f70ebb772c65e48a3555351c457f0bc74a93a9cbad2c1b5de88283b8525cef37ee453ea3cb8f4a366ae57bfb4102b2f2e3ace9e66aca6c5d376af4f4e76afe98ac111dd111fdcd5b2207ce2a0ffee6d9d85e058b125f522884fcfb3794d91bc2892ce54a17b2b8b8f29cd7d25b51c173d5e1293373b9178d3156de4ad895d43de82de7a892eebbcc7235bfb9df9e7a3641e64b7a4928a7e7ba4b92d28703c5eba3519f2e07b5f3eeb3ec6c7c1c455fca28ee7df91c8952cfc6e9e54ac288befb94ca53fca3a60a7fbc2ff74730977ccb2f79153c5b942fba587e88e5632cbfc3b7fb1a4ec223e9452f7aae66f6c31785b75544a2d00432ab84a3fcfb4a5cae8a74648e0f711f18344714d27fec2176228ea2efa2ca5facb9a8f24c482888e4ee6f8f6f3c3cf22950a6d4c7532b4f81681015a2314a840ed12275b5427da80ffda1b0cdb30aca0864966f029abb1fc197bbf07bfc0d4d20b30cbbd0878b749c2b9c96101b263c358a9e09ce2ad12eaefcfcf0c51d3b467d5642ea33fb5bc33df9d17f38dd6d09e997ced1f99e8efee43d2148ffc31777a43c4a30e1a28f5009520fe5992a7a3349e10d4fa62f8350d1af600772913ec61ee4287a934121ad9b57a15f63a2e051661451283fe5bddf9c58ad562d48c12999484ca6ef36a560fa8329f5a40d7dd229a43e2ed21ffdf723f511c24df574d8c8a7fd80f99244fa1ab3f30936e1f18218061e3b13bc84d54ae16a92d01ef4293d02892478d4f8464f3fc60c1a5af7a4ab65da3d66a95da9a493dbb351925ae679a227776de5f68105ee448a8b5670ed29779feebfa2927242393181304c4a4a2423a4fb8dbc8e136d9acd2ad5a69068f8465ec789368d3e819b930821d56c56e9f4eee40a59089243c8fe05ae57a870c72e3bc7499f1d028ea33545867c8608694dd6fc2114c4b313c46d7c55e4c727478864c578e0609173549dd053e4086c60031bd8d02c54ba7b36ba1f39e944f6b188dc44e41e22f7f41147deb6eba2fd2b663ec6fb2bbccffe67f5396777f78f22a785e1e8d266c33c5cb28ded39e9757872b17e874b15c7fdc1d55ed6786a881e9a762f584120dc1145347fd6205206c1c1e262fdf9831d2ee7dd29e8879492ecb58a0811d7f58be706c1a13b9672e9f4831777ec58ae72bec4371a4588fef9ee44eee10365be2cc015b548f41965ce90e5a7aa6b872338f1cd9252cf8607911d57cf068d6c4acf3acb462839b20e4716640f692edd13c8f2a5fe99bb355289478a9cdca3f29049b8d853aae1a4c5504d16a2b2b2fc9529dc11cca20bc772444b23b83fb9d8a55b72853bdedc8ee3435c94fed355c89e80ec07c8fe315a5ad51ee6c2223e3cdc71b2641147c9f71a2120ce2d9265366113368b00c1c9722087b948731372137a5cd47a9c4428100f61b46e8e88b272cc53e30ccaf2a92bd7afa3fd4d09ebdaa9c2f6765afb9c9d437e00a993fdbbc36d1e296e72f3486193573c53b038ada398deb86813c445f9998d8da6f5a6cd91281c81fcc212e18e3336639e22e22a0ecb60419f7b4e660a14c5c7d0203f005de1259ca641aa268ba2010f7498346f4043b7b0a66a72d128f977603d316da4983759bec89bb1cee3644d2053488e08bb8da7b610c506b196f6cbd47ee54113295c42e651d66c3fafe0becad4a9e2421858dc71c684b828df87ccb4e5e2140a9a31205677a41407d4c36d9e192099c2280c56a37daaea08b91a102f072a4f1d2a5ca77264710ac445a984ab047d1f32bbff64f914e62925ea3b15ea9738f4cbfc117cf6aba7c37f8b1de0e46e666a821c4f693a9e9a2e4ece2117251117251582d3fa3cf1129ec739e920551436515cf48bcc92c220cb6fa96ada822c69101e2617dd029b2a9a45a3e44b0176051acb940b231da239dd22ff0bbaf23b8f1447be1c295090a766faa567ac5be4e378ca8628f3474a5b9ef21065fa3b8d104f01a1349eaa2f7fc6a6cae1d028f9015658618515ee94761cead3afb4932f1fe25e797ef818ffffa7a4fce9f426d383e097947ca9f424d2dffb9ef75df7dbf69af6947e25e966373f8b62722c192963be4bee834d154926f3714009ca644cb4971a2da9393527cf9a3351f547ca985f93e44c158cae3f94a50ad595279d1c8c19a1dc3c334099ab9d4785e80e5a5559950584cac242099585efd02a1a14449f08a25204511a04d92fb48aba5c6570adc1150717919423b48ad2509a2c288d1428cd1528cdeb5533169b3788cd1dc4801033b9a1559387870b9e3bf0cc274e5568d5b4d1c217ca306d804a543e342484a1230c653104eaa155fe7a39142f9fe2e5377891547e83861b37dc70916f4abed242159e90fda5127afab47c84e0237be0a30395f4f1ee0f5042d16a3d74318340345c31642ea8e4cc44cdadfb86810938c0d8927d258f2ea3293bc925fbffd0aa23264ae532515a6519e1a6da541a1e9ea0fa82ba1a8a050982b1672ec575069f170f5dadba85d230a175436d7e7eba457a4ec19e39538cce80ae867272ba85a70d309fd70432819cb06713f6cc954c9b28e4b46e62b16e199a3998ac9e1e107b2ec19e39d26b0e41309f9b9b6eb9d1c295d37219972961cf24ec99f37ce556388dcfc060dde2e3452c08a6a3d32dd2b3873d735b6b0b3c2e992369244d2767e4159245c447873d6f477c31140b22a25b24160575cb7c97a912b9a19b9b0903f784e80e5c641e5cff3146aed83375516e414138414282f274fc2e9291c9d3c3f78dc77de3c9d3ff7d03da80f274df6edcb79b3c3de57ddbd976f27495f76dc67d9bc9d34fef5b902d489eee5a90bb1694a79bde37994d264f3f79d778dc359e3c1d7cd78034a03cddb51b77ed264f2f79d776b49d3cdde45d9b71d766f2f4d2fb7b0f1a460be26e83dc6d509e4e7ad76434993c7de4ddf2f004f1c478862c9005cad3dddeb8db9b3cfda5db1dbb93a78fdeed8cfb8c046283e4e936880f576541ee59509e3efd41d03056e67bf7e7d12f221e1e9e3c897055c69301e5e99fa361322029637eefdc047193ddcc213ca571ef3b00c8fe7726cf2079da6c8745956541a40cd0b3e1210e438cf189a723c498e5c3670931c6f415629931a6af2d68aae810918c84a15aa042220ab4d19f8d6e41c4c212d21e1f1ee37f8cf1e337793af0bf0f8fdf07fcff14c7072cf3638ab3f14c156d6d4012860a81f26cd4b5d19c8d1261c338a4373e60cfa14aca7f4acaffffa7809e8e4f49c1ff8f3f252585cea8609953309dd96ea68afed876240c858206d968cd46816cf405db7f4865564e2929a7534a4acaa79c60783a524ea7ff94ff94d3e9348156b0cc273c81b699a99a415b100933d14057db1cda666c9b6ad85252c209eb16f959057be64e4ca793c9743a9dfe6432f1749c4ca6943f7dcac96432b96436e1e90a9aaab9b3c94898f9849621870cf5c46614b6284ea770eaa0802613089a4ca63781259e0e13089edef427130882b3466610cf1a9ea99a36401266ea60e6c066cb67debc66156c3099c24983823d9f60cf9c49090896948020f86049c9d3019694981e7c135852523264e2433753e54576248c773181b87e683953466bb9179a1540307422304a2525a5524949c99794483c1d25a512f8250f96944aa52130b0cc25ec43b499a9729f2012c6b910b309d268601acb0b41282909fdd52dd2b309f6cc8d904a2512a9542a7d8934e2e9289148255ffa921289446a8d609949d85b4153e542341909e358f468ab9d219d9811b4284aa5d071bae59248f79248a4275d92a783746fe9495f22dd7bfd0789ff70513a0b48c2b8142d43fe8d85f9e4f9f218b081e43324d8f308f6cc8dbc7b3defdefbd7bb9e8eeb79d7f3bc20993d2c836ea64a0aed4818b906977115c921d26a8315ee0d2550b7c8cef3bacef3bacfd3e175dd7defafd775ddce277766a64af2384a4a18298596211f6693a73b158290a774758bf43cc29e39d1d675dbd675dd77dbc8d3d16d9bf7dd7bddb66dd246da044d950c6265248cdc818e5d0919c289492b6c145d17ca1a4edb364ddbb6ed37cdf3746c9ad6fdf6dda6695a135c133c5325574012060534594ecf7cf29c79e5810ddb1632d12d9e45d83397514da354d3b4d768e7e9d028dd5efb4da39416911571335546ec48980a107109e500b57218322bece8165b29ad95525a69adf4355a6ba541239b992a972c888421c07c4dcf680c90e58f5910f244e93a578982266abe568281bb682e9e19a2192dd4b27c4f470d35a7ee2238e4f97707d73f68aa3a17cd4898da32e4b370ab3c45433996270ce80f45ee28e653078a77264fd1cc444d1759cde5ba409ed7a48c2955a220474d9816e557bc8099a962c06b5574833cb390e54a27bd0874a6b4d2f8a1c81d69509ecfd591055c284180032a745053535353535353535353430515545051451555545145155554514515555441051554504105152f20c2322393effcaeebba7651eb40b0dd7d0a1f2836e89dd349559a4afa536ad20cf2e7a594d29f7a3a64a8a59440c9a1bdbf1676d9c312f813b4d8876ea1ff93b55cc3bf37c89ee2d962d6a8ece99f24cdb26c3c65eab5c22cd893591ca71ac0df510be4698e6b4d54e578a48cfa1ed7236554c735cfc91a79b8b3ed3a5a33ab6d22aef346df258df4cba5ae4c33572a3181019a4e504e292a2b8fc3ec3fffd05dcc0dfdf80ce996fa0efb42cbe8e15c3928572e0cb93e4f4f270300f207803922988bb958b997a3eab3863cd5b90221fe488504e013c07f3f7c9f28168bc53efc1ff783fbf1f9f09fe8f57abdbef03f9190d0f7895aad56eb4bf94fd4d3f3adfc27627ddff7a9fc27c2c1f9be2d168bc53ed37fa21fdf87f2dff67abd5edffbb709097ddfd66ab55a5fc97f5b4fcf07e3bf8df57d9fc97f1b0ecef769b1582cf691fedb7e7c1fc97fdaebf569afd737f29f26246554a14ffea7b55aadd627fa9e4febf1e12a8dc5fa581f0be7d3703eedbfef79f48b8dc5629f8d7dda8f4ffbf1fa5eafef63b8cabe86f0d4fdeffbacd0d76a7db6e77bb742df675bdf677bbeef472c9e8d4f0001082d0b258600002264fd10d2dc0fc7b81f38168b611f46e14b08bf5e2fa15cffdf4b11b57a52442d514bd4eac9f557563a15114b84932262895822960827d7573971a698e88729168b895044272f21d3ebf512caf54fe056d2ea69b55a3db93e0a0ccd64636d38251b6bb4b1be8d8593eb9f942c498b6d3f485a6ca4c562db8f5cdf44928d682f4d88a4bd46da4b7b6942b93e4873aba8d5d36ab57a727d50d35c353c8da5e1682c8da5b1349c5c1f86b5d6b336f1fc1bd37ec46236a6c920d73799f66585eccbbeeccbca21d72fa100f83037c411f1e186fc0871405f17b703e2aa96e786a03ac79606719565b1280e8b0ad1c9a3f0474f77d0301607875a91474f6bfa85e5474f57aeca60748605a334453ce5c31d1ac6aef230d42ff8c75599cb05e4127211f1f194ca171a26fbf909c3907ef91c576536362e1b1e9b97104fad1ca161321d9d24e4d1cf56bfa4fc28cb664d36838c7eb23c75f2a39f53344c565333833c3afda8c26043b0b982cd19214fa1b8a1616a912270c82393aaba5c435c3f2e201e4f9954a161eacf8f163bfd02deb8aadad8b46c726c5c413c05e347ef3d6898aaa3e33fc8a3779b7e29f9d1bb8cabeaca7f38909a3c1ad143c3d49a2f8af44b09e62a0a8305c162231231340c2d52840c3efdd2e9b88aba5c3bae9ed1f7a3974a6818fa2365d41f26e411e9472f695c456d6c6c6e24104fddd7b1411ebda441c3501d1faea2ab89aaaf1599431e3d081a86d64856bfc81f7d0f1efd32832e8c08574dd844d522a3cf51df15c448238f3e86aba66b081cfd627ff4a2a7b6ffc9f54700e4d1e7d1b78f7aeae4d10f0d337f58fa85fee83557cdd18f74a48cfaa3d19b783646a165599cd0b22ccbb270727d96907bdd1cdccf07985d853018ccae727d123c5271fda8b85cae9f5c7fe4bd151b1d954c27d727a57427d92aab39c956d92a5b6535b9fe3d7128b022273018cc243271fd98b85caefa237083516daa8e49b5a936d5a6eae4fa5e89365257b566a4aebcba1ad555adc9f5bb9225a1305a848b815e3882378415c9f5b92efb5c3f2e97eb27d71791eaa5948b815da398a8640b178c5341cc14d10880000033150000301410874422a15834101529e90114800b90ac46664a9ac9c238c5810c32c61805803100000008000001d0040022bf9fbdd6ed4597fafea30acc5f6db2c6f38c61b6a360fcd8540e4362040546cc9d7ed118fdfc3b514a6acad1220cf12f31f0e055abe8603a4a2a5692852893a5fb372dc5e184583e6dea577a76f5ee0d910f09554946a688a93119e562acee099622caad914c9b8ce6e2cace802364f842b8214b5eb68d8d73c60cc23272db41b4bfe14e7a5a2faaff8f10390bfe1ae644395d648270e8293fb3577018e7c97537d0168b7fb601690d7c031a53725002b991d980641f765a43673920b3023d42727b8b1e35634c722f98ee64ffa171ce517b2d82217eb107d3d50b21a9674ce6bae0ab6952d7d4059f8470ddb824aa792e641df4eb6237f7f6a462598401962d5655fb9c245e50494a6b8aad2f5b6af8bfcd688b430b8b2118c97c4c8f24632e2f93b64635767c805a61a85def3833fdb750006134da5295f599f1af37f7cc9a5ce83b6717a4942f73ac011f5c232c40de3bb49fc64a5b5197cc06928f27809c306c431e53d7deb7967f5ee8d1cc1b22d2760d721deeb291e38b3588fb47f4487b7b04c4e60b00bd144460cd58221c0bb69e30e4400426cad71ee72d5e60a820a31ac36c13c81983eba883237d306e1efc8470784fcf1352fa63b2025a1511015a1bb7cc304a815103bd13a38022e7d54703007a5a28c238c53c873a1467ba45a60aa737f07cb145776c344a9e2fbeb03e5b8b9734d911941be5ecf16863dd7b16df2e54db7b1df8353d13cb17f6d0b4eb6c7680fcd31f070dfb693e35b2e0310fa1739d9377890c78342d5550d50b09f8040c1a3d6b7a3801a1129628e05af6334bdd1adab11498f42cc832aefe01bd87f4effb8ab532e65058ad493ab27ebc9f57e539bf97baacee62cd474ce7e4901a121ad166b1b3292074ddacaf67a5b83643db699fdc93f1d6728ca83816060dbfb1b40c6780284a7f697c161839a9fc837eeda6a032eb3e46b073e731c35be759391e51fe970f7300f256765613d508e24e7745a63fb690cd13a661524166bb8f89a204f88adcebb9cd5a1c25ea5e2e312e43e5e16e9391ede2d0d18ed20ccf3f7c61dd0b5ea6ee47c483640d069c8959c0dc9483f077418898fc0db4c0afb0d9e04cecef08e9f19ed69ff19050db2d284b6aeb63a2f1793ddc387ee1bbd6821772681d24d69a3f234bf9e9b709698bc9348ef6ab07e63c222e9214d9076a76f1c164875d279c684b4834793e27a19f60e1df633c2b4e4dfdbd9bad8a82087d539c7f3e1f0787d1e242d4c2f8a69e2b5127a86feafb77e40a0a865a39039430df94d8d64bd7f04dc1fe76534a4e113128fe42f34d65febcb7bcf9a697f27cbf3fbb2d4c60947d8a3422faa608082dbed03705f96b621a39868c9c202a983cafdce60d71f8a63e7febbc8450a8fda2b945faa602af856dc73705e917b3dd711a0559e01593e78dfde1ce0e27ac2eb86feab56f66f66202456f3eab18bea9237f7296f64d313ac38e14c87f8fe76e366ecba3e4f904b7c629e19b92fc5ea086a461468a63e57903384785be69b7bfddc76c8c6f3aca76999b208b09be291ef2a91f1918dd9afd5150f1687d53236afb84ca36ce1886c99330f428152c993ccf7a20a76f7aaaeb124d430b781043cfa678bfdfb03338f692cbe30417482edd94e7df4adf6146d42fadb9639e800b10ecffadbe80f44d98c49d411c930924f3dcd1b0e3fe948b337af36412403fb39b9672ec0c797ebb53880ab444ad6be71ab3728b303dacbbf5cc8aeb7ce4f96fa00d0dc34aae86b82f3964b25ba8f8e189d671ddc4692d85a3c52ffb9cedcdc245bae6a185995ba56344b46bc02d86d259cffbf4aeaef3a484b8f8f96891c6d5e6e438d8eabcdd53c1a9b90e96c4c3e2e29e43da78b42fdda4693e6b21184e123361736f37032efa35df6dcccc0a1d63a25c136e31d4ee02dbd125659d371582c531478b34ae3627c7c156e7ed9e9ae0169c16e05281363aa959dc33883ba3eea3bb14cde722a456e96742c5347703f71e96f8611183095820a4460bec88d8a930045c154f8b8b6b0a41a3d1bef49da6f9ac85601899202a30044757cfe966ea559c1c3296c4e3c1afb629bb06b824d1de7cbb935ea8ba1faa5072ad10ddd959bf58e43f03dfe94b260b996067cb1f66fc21721b98588de29e43de19751fdd26e9be17a1b526ec77f6500e0d4be42a7e712ba8443a09b330807c58583cae70a45d65f6a5c784ce6721546bd1dc8429feb3b9eb3004ce165c2089ae6f634271b458dc27683b62fd4fef299dcf4a8847fc44afd4269a8a5030d7452311cd220e9c9badf5fbe81637c73b6fcd212e6736353a9cb81c23c58af43ed34717fdea7af26954bd12e6a49471a906743817ce1fbca70dec620275494d6084e49307564d1761ffe6b1f7be9daec46a1df4cf4dd47b51d189d432e991962180bc0f6715f4fbbb5167250045de087a53da99598f9680a6564f79b7a87463ffd6ec75480f88011ba9415c79a83f65d6a9db25ad37b521dc6dc701a468775c27f0d7dfa25719ebd233bc8ba28c9fd7fed633bad11ac49587fa53669dba5dd27a5343183885a75029448e3fca05fa49ed35d1ec01ac6d32f39f45e10b22569d944d188ded72154a92a0c57093476d13586f5d22e9bcea2130783ee528dc3255089d4c8683ef3cf55923ad73b21becf8c93e3f2326f8793a714a35c61d870bc23257bec3378fbc0cc9ed92d94d0325f331dd512606b240492753f1e80582cbf503488fe0d503922d2800a41c5f9700f31d1d38dadbe6d3dc89a2c940d6e1ceabd01b63293fb81b145a4026f0469e090afd5105874bd68813359f29b00caefee82a1cda70d10e426f97531482f409dc22cf79f33f37df370070e90135d081404f63850c75075ade78bc217f8b96a461b7cfe66a229deadb074d9ae94a7748edcb8e7afafdd5bb50d7b2f29dd22b2ae3cbc3ce7fa63a03c72daea948038f8c7940ff0ff057d9d9ac54f2467594730c902c7ef7146d71268f160e4cf79119d5949bbabd7f24df461b34ae402284b666d0132d2b3ffed55f9b9e7eec47ee0ab75d7c9cba02de477d6ca2898cf340007faff498396e6c28bb1a76973938d0c2b3410f6de0abd80146710209f8fbe7d9d87569918f70fd53199f940dc4c024325f947a3bb983499ea464c1f01bf15f4d83ad24fec09e721b039c8ae17336983c7d948b754265b56812bdbd77bddc10ed380ced3bb4f0f3f61d13f7f402d12ba9be9f77edfbd3bf70a39fdec51bfcf42fdde84fffe2463f7a173748bc61e25e36f4e2a35e05a3dd8b7affe9bfb8f147dfc50d5ffa2edff8d177e9c68fbe8b3724dfe042af17f5aa4caf8af6ea717a31e028ef6e2d72ccd195d91e927744ba73ab417c20fae4fa06437efa108d48ba5d910bc701d87cdf88522b4b751aeffff2087e10ac78b6eae2528c522cd6c174a81a50e0138ab1ec87e6bdfd3582c675f1cb44dd6f28c898a52ce78f6e9b10c9e1b6bb3d1a5653955df5eed0132c1bc4ef7e1422e1c77a92bedcf3a35a524e736d842f4158c1db9ba93b33c96b9b6c73617b1f27b5cca34cbbbd6fe0ccfd8c72c00e489b8c5a3f8fdfed3be40c656a8a6d1fa6954f4d5f7bc9d83643d165fa6d30b99c1ae136fab18559dde3d9d01aa73d69d6841bbd6592e2628d63f5965d80f3be9c83ed02cfbfdbd183a836c28829d2da2343ee74c950da4b5395db80b1e82a02c13db222466c82e1249e458a07050f14056b7be95d29ebc322def73e691c0b0d75dc7e9442f26ddbd49461987be0b9ccd499a45bb4fb2e970c9b616be1512d90ba064252c63c8584f2202a4cca97f0595c7814207e1b780e9c9ead5d7d1c843c77a3cbfac7a4db2b7ba6d34d2b0c57709ae1d84013335a83eae7b9431afe4cac3bdd2e93290ae8d72e3187dacd25f91d0aa010b8d936134774e8df8248d1502f6c1c918d7a09ad6643d1f59edc1ab6697216a2071b2046490e92dbd5d9f2b8d7fae0974c4321a701acbef76720d9d53c1cfae576af52ef547452ee3f36872b9aa703e5ea8b7f9de329fc04e77df63d8bd6191c532405ae758ab193d57542c2a222592798ec3307a4c23c60e4ebb020d8da9849db5ac47f01e8f2ec60345030b44a3c2d72777793f376eba4621b9ad11cf478614f9e193450421b1ab4a041136a28a08326a127b5d0830a5a68a1850aca50a082025aa8431be82ca02792926ad67be93f7143147b00cac749826a4c7e5aeaa40feba1f30b570e1c2b03572078323827da159b3e49fc290f44b9df729e1bce7a596c95cffef92a5a7c60f9ee324aac9bfd252c47480059fed200942e154b93e06faa8da18894cc848590ec2c2c39f0f2906e19661a381a366d7833ade83fd8f0affdfee7ddd8ba99b5a7932cd6cdd8e31fead85fd2d8bfe05fe566e0f61f91637233c7d00f5dfa8f7af5bf8caaba19e8ff8b048153e4b83d78a70a4cb05d94ec807ba5e2cd40ffbf20c2e1660ec84ff4e84fe8e07f910f99d97641a03bdd76336aed5f7dec4767f8ef0b3743c05a9bdd8c3dfd6b22eddd4c73f83736f855bfff1c4776377338fe425ca39b69545d73eb2da9731e134f69e3346cda2dbe9956fd4f28f2dc0c79ff4197fc115bff4a65a94788ae11ea12036fa689ff046ccc31ff0e3f31df0c71cea1fce66e66d26cd65ceca667ec1c8e9b51b7eeda2f37d358edadb0eac637ccf3669aa4f9d7bf19c28afb29ba1b7443fb8cfb6648682dd697b6ef9936612b56a92a63903ea4fe18a0c7b819b58fa4128af95cde8c6da8f300d262990d7788a2bb996956e2e8cd78bb2199b0ee3f84b7181afe84bf27aa3a038f0066eaa9ed37035925f66085989781fe02dc0a7e7c79b68e68ea159aed7f3e531d2fdc0038ca61fec420c18c38476451107f6c263fa7fd44f0bfd9fc4fff7f6f4b82a37c1410a8e562ee0771391ab9ffdf7f2f9281d0e262980c113326e85ca221bdb7f224815ffd9aed4c556923c936fc13228b08cddd321c223b0dd51c19c9b42a49e7080edfa3d3518b7ff9feea3fcccf4957548a0c05bd0459c56a4bea0703a990a32769a462f32a1ddbd3cab61082c525754a115ec6edc669604d18b14869a4fa7a7991b1b37504edf13d667f20968e6f21806c5a9b222960f5580be321cf6c4aee4c36ae9f072e264a7f2ecaf6b236d7e50cc5e043ffa4ff25ae27841a4f0b6b411e5fa578656bfc32d99831d68eccba708cbf6ef555ac5debaba10d70b193cc12e46fd91830ebd85b8261852d65a3ec615e287f90b21ffe3fc309349b92450010b895446591c0bc5ab62f0983c1598c5490a40462867b8e13cbe88ec4f71c4423df659a67242ebc60f9127d1fe71d5885da960383f76fd89ec9c1df5fc73c609cfcebf0b942f3641a003976e4489be1a19e20d50e22bc238e2eabae343b1f1a73abb309e03c06dc5ba0158369217da88cc3156fc285a7da0c3d943182f50d55a45f7aaf8d0589e789c2e944f1c0cf2fff752950f9d6ab046818c1df5b5d00c9acf01e1c18acfb0f9207de54befbd1e8c9c68afc3e36e72f3c2bf9038c0716c59c62e2adceecb5f93e1aaf38acd0066820d957ff04410c039b6d2e584cf456daa996c033ae3db216b9bb3900b8c1e16197e86cd4970d1e4a53085a888cd1dae277b7684db6dfc2486d45690907e08b827b43c5a512485309a32cfa120dba22e7e8f81bbddc4971240d691efd04c5c5cac69cf970ce012609adb19089322e4322bdbaaa3e2baa46703ad4af0fc696a8f0f6aa849c9075330bb357395c6acf784cd0f8ef6ede654a8c8ea122930e52ba37f135a83bf3d8e9e8fee74f2c1fc8c3703b6eddb96036ddda92c316f2dc61b57e0c9dccfbfa06d017803e26c636161d68723727ee749149e371fccbb6fffd3f914d5d0763509afd9575c0c16568784dbe8f82a8ed0d4131a674f232c3c528199a8279ca49df732b061340f61102619e4280302804e4fa6108d2b19fe65fa4d7adaec87af7a57088ec34147360e4d3aea41d2cb0671c1e877b64629f1980dfd96c496875a43c5a4c2da858f06968b5672c2ac5879f754fd8a1465979477fa8858a4a2689eca8cf34f6ee1a28c81616bdd1cc01731e424262642ee315fb71d3b82d9d1a181d0f640ae602653982d970058ab95ffdfc5ce34e2d3ea891666d62235db1912da622817a874d00578844ed1c199899a8e996872b7140945c8d10890e8d5dcc4396c0248586b2e005b7446b2b9544139fe3d3c1c1e4af26fd0c23e44f29d3ae98dd4ae483d8feac75389a4760c2d4c96966994cafb0487b20b96b66190d6ee783d61bc3d03ce87d6342a49a3ee0fd5644cb66f76b211f7186f0d76f08f29a4d18e466d9228fab310013950d2cdcc0dbe748a8177d24b4c03c867f10bb278f72c4e8dd524fbb19a68f6132bcca152311c7ef477fe0b991ae69758974a5c823a1430909d59ae98b2e415c1eb3d8bc9c92ca1283b97feb22300156568f6c2e128acacbc36f42e0d2c06f43dd953fb2d3e7627f9dddb11343e365fbb4133b96e7ea4a0b397439f1b9e06409fd6386aab245a00b9bfe0769ad1c2766a7690826d3e05f6db7354cc74fa9258f817b78b1727f214717d6cf84c1ef52ce8d3bbcbb55a50402f301dd848aa9973b5ea5a2b5785c053a6daf411abd132a023be8963272b33ef384db4a03d4134caf33ff94bdceb25372013be05dd99a72d0e3fbcc1e7b3207895001f8bf4604ff8eb2eaadf38a60b42a1ec4db4342b5f8d763a936a7665aa36caa872697e6037ee3722be42a2cfa054613ac4d002832a9bcfd7df1302ff00b2c32bb9f90590ce4b685d4991b44b856a45521e494cc49ba8f8f848649f952a6201e97a66fe8663b1e4980fc175437c8d6782255f28b4b863948d3889e9841582c62b78c3f9bd16c9d00885e9a7fa65a10388a660919453950e25150f542dc9c44a4aaaec4647905b9eac03238d94fde3e7c42cdba18859ab54a0ab5610d866e8e75b6fae2c61fa378fc078eee48f16bd223a277c2ea0d848cfe4b03e5fb67b92842f166ee3f9ac0a19806fca58b769f341e5acc5728bf418d94ec403fda898e952ba499959a7d24901660c9f6c44a84bec88e4e3a3942f79b4925f6b51f311eab858b898264ed139c972da499c8b31b6520df43223890cfccc1bc57b4e24880a451e7f881579c66269d773f9a9d6d160b9192ebcfcf8cd02ae45b99a3c42b27038123e96d4f86f44c3798ec614771cbe6621f46dfd0939877a8353dedc827f58809221012d2fcb30aabb72c0b651f41879db8aa098f3fd7a97c38e77c7d0b2811116949a72213877a87c0742a1b04934265abce87b5e4c45cf4908615cfeedad73282775944f6d70db885ccbd4e493eefc4420dbd1bb8e0bc525f151c27d1e51b4e82325c0cb2c0ff5eed15b71a9ae1416354cc52e6a8ef4705260aeb027b46a52531953816d91e5871da5e7f7ccf0bde97bf217a0bf68df1290458029c50f7da1c3307287738bc2eca3996f1d1328de5ba27ef79c74a373794f60829624bb9f117846994516ba395bec53daa9caa0c440d08d085fe51380ee68af4d6d103208f42f1aedcac8d5d4f346697fb2bca94ed7cdd193dace2c0d38fb09a07e72c9626934fe0ff41f5209bc32ddb6a50f1bf768524b0b8f62c735c707d0e1d713d2385929af34dadd36a4d170da1464fcbfe96fa0c861405c52559d9a332b9c29c4be61b6c3716a3d99f29fdf21257bddc05884240d268855c34f413cb4861634e04808f6a60f30a8e7fbac22e0bae40734fb112d9bbd951f9690467e4e16753486c1384e008558b11b429fd1fddf8083c318f6f1de953495cb3b4d9a43af7ef167f8eaa6c71579712e93eaa3d5416a71db0c806c596e49c73f461ce1dadce92da68a3562704adc27329ad1d50b104bc8f70ef81acd0c34021429d09c9ad4ba9406c1d255272264999bc6e43742bf59617cbbf3c81c20ca0b49f9a47c2d1fa9d15ce46f2945b4c2edd82adb0f3a4deecc2afdd555c01e508b188ebe45545a13217560ade97759dc4c3c92955d43d6675aba09c6ba6a71abdc15b4aa34dac2ac3c6108d73aad0ecde3cbcd3bf1f3daff1e967e676b5ad5490d2d41286b8d0bd0c459e4e26460eb70cff50db00e468acc125f43dc76ab2cd3f28819ff8b424f70285ce8b7b64e0cd346d9953e93b976ec50fc72e0f04905b8e85b0ae771c07ef288ff0d0ac62b76875a331c04d4cf1c9d30d93cdce9340262496a37df52f904b3a7548b424581a928c77991090833d5c7e47961c58e7cbb685723303fa22b0a5ce9d361ccda5b58c6fa8199847fb6f9f6ee814ebb55369082f13de92b7ce1191d00ce25c9c9eb0b47a3b6f5c8c4bc75071f94e9b6d8fbd4de7efc10badf51f532ec6aa7ee0f1624a45768b43fa71770a6db0216af984e4fffc8d29b5e3cc6f3b72df4d4e778ccb1173b1cbf81b6380d45b12decc9aaa233a8fa2944c566eb4cb88eb3cf95aae45ae9a95b6cdb35f59ead25ec54a9ee3d3283bd5256128458c8126ee5ed95715e69a9322f758ced0de6b83564de53cef66e844f960d13b7c06f154570d0016cff602d033ae049bff8789cd53c208f62105c9024c0c45d3332d12f2306af69b59120d82bfabab6f0671047dbcaede7c0aa573807a2712cb8b8d79b44f438a6a5abf6e3d355842bbb0a0bbf253af7f0d745b177f047d41e2972579056e6ad4898ddf70346b1f69f75a9cf4573b3058d2bdac401cc2205aad368fa74e5293f4ea3dccc8f603ca4c799207c0754fdb342f8306869179f56fddda5ad88a294d35d7c382bd644455c82b53ddf0af3de7977a47006c689332251b7d3ffb8cf81f677da128baf1b2de940e775047faa5d905b8c9dbece7fa8fcb3f87a74103bc49043364c14cc6e801f5e19eaba45820bfb97ec28b53cec1243e13b53fca48f92881183a322a28712cb6683f63f6659d0d02e1063dd7bc3f24780cbb4ec2c493d53182f8394552900ae44ce26fc7f76c2b57285bab18fe9ad4f71bd404a774644327152dc26062ced73ac2b462ffebcd5a1123b8d1891600823df527b15e72867f989ecafafebd0373cf0df4b14a919288554882a82371c5fca3da8108a749adc5950972804c691852c3efd1f5ca3bc9f6061b5fc208a6a8a781ba1044a0c4b0adf72890026dfbe0de0586b4fa7421b88098edaaf67aba54139b5d4c54ba400c5128894c65609808d46a8df89ce3838200ec07cc7cfc3e99fa10ddbb59ea91c68695c8483c090aec79c6cfc00cd1ad93a17f92c4302113ffaf1f467952b14963f9e976c1d5569a1cbe7b12515a07cd4553e23071aa587baf7ffe038e1ecdb1c6636a24fa017ccc3fae0677e65bfcf3ef27f33da79c6431410657b3c30531fedad43474f1ae6c3081cf223c734f727abcaef0ceee5e64810924b88746f107f0f9083cd600b08b464fee3b315ff4c4409ae11e749d3e8f22367f0b2651a966ec3a8da7f42ca9fcf59b02dab724d66d3f6cf6207ea72c3aaf4269e3aaf88484e549dc7b999240bf7f3c471a22a48cc9ba8c33afac763a0399e4441f6c4601d11602a20430a793dd48f7e6c7eefa39ea3c29834fab9497a1300bbc1a1b0db87584102c1433248bedc18fac36a5954a51c80ac0737b94620b7bc1193ac3da54b69833227627673286c5192bad206743085962d2087822d0f6f6ae4e716870ea1cd403089a72dbc022ca21f9bae0447a4915a6198b0159ad4ce3f88e831b9e626134b189707fcbb3d73c65db022acf4b5b0914b706cac7e0200379d7814a0f5029e04a75248f170fb12ffb31dd8c363f7e410b435e2a8578f7d53395df094ba4069e267d6076a4c275141e0d192b5b6bc750772c03167ee55119c5ff461579874058dbb9784e280e33575e16c71206ccd552b4a929c61a5beed98cb11bc3b990059b52ca974890615bbc06d10dc811c27652fe4de9f06805b1eacd93d7b152eb3336d1b7cf4afa30452e9c885a62c8696f1c6bae8f213a43ca52e566263a23fc112f033593c2b0831bd4b9e737ffd2618dac50229e52a636c7a3b407c16ff0a07b70fbe6f7a31885154d49d165b8c3c0720995f450411dcb165beffaa67789bd8db31e010c34b758ac8736555abed24b09b1ec7efcd58255de9687ec8bbe000b2190eb5e35349dcb4626945e6194fde59d83891ccf1bba95a20422a249da8d5cbd3a8a561bb99c49553eb8771004c4701be04c01848a0b8299d9daf078481c8a5ba05156a0c1c640bd93ef85955a69f0c9dbe3956ac24179f0b683b6772941308f46daa96054103c16174f4b5902ad0ea5d9645738edfd5c1b6825d79b15c8fd51fb223df61d5cff16b8bd14855f3eae7cc9fc633e2658a4caf3ecd4eab00ef91512227f89a55a08bfab758844fe34e9bd06df4a38cc604197cabdca27933cf0078eef6dd320be7c1c2de095be274c11eca08eb0aa6c8505a224c31b71821c3a430d6c54ae534c21627ddb1c0bd7b1404e01c60ab091a356d2dec6f10943b06afc44f6b7a70ca37fb4a9d4d10a849a0f70897b54061385a192ba1c68080fc31f116b9a85425069ee727b346943858064ef83f7d12a291c9894544a0788410b87a5039426971ea503625084426587ec8de2754477b2c5118499e33db90c1c6aa9ffa91a5b4474474a5dd087f7e8820a4fbfcac6f3426f964913974cb14a151d206392d2db1ae960c2aad407dda66917c243292692417fa897d85cd67deb86e167a739505060bca0e48493e5c8820fd13c6489a91ac73e9b64ed8ac7750fafadda29853979470adb228159cb6d7f4831578557f58750a1cdd7b27a261e6d521223a09c90ec847fa0c94e82b7ca91fd56e5def84d57e9f5ba08cf966029704e27406f3a1dc9feb0fc636fa83e005a890042646a11c1b44b279abb480d07a6a083de3a62b3d228404aeeb7079835b7905d7517506c294c20c3e826aef9746a1d457cd8d7ab8e7b7ef274ce04298cdce4932a2031b6d879ce18972c0ff51137e1bf8c98beaa2646fd1df60dbe397d7b6fe2540f7247bd625155d9ba4b7cad4a0d1e4cd2d82175a94a67329df783b8ac7686f47b3a2bacfcfe685e57c424eac65a5f2d52d5512db2eeaa3cd5059e94d852351765bb4e36a0c90a66b93ac1c258e2340beae179bc0735728932e85bf9ffe4e284a3a994c602f0235bb1ab7e09b9302f1f5543ff3bea960fdb08c748ade02fce24adef15671dd9628f98563cee24c7ba198137f87c7c1c05c9b6c0392e44cc5419693745400138cbe67874ee659adabc01c72f0ca76c2b551858db538d7da2fc52b832d732413874a8548a0f89203dda9ce0f9524b4746423d987a94e4f00534f6f064e91c3717c56300b27254a1d6a02f3c4f01bfa2c37193a8facb447c413f8d49ae4f506579c8d0ca9100eca239ccecf08f808f23570e8373c4dd7a70d449d603f0538cff497d7b92b5b3c83412d527e2a714ba9e19bdfcee4d36babdb0abe56b711be8825128bceee3e440b458a5106eb1a877df3aa9cc8ad13559e0fdd9b26634db32e1e0833b1f040ae0374c36938bf141ec78679f422fd8e64324c51f7eda0f431d20d7d1a12a273356cfad3dfe8c816d2a583a4a023642c45cede4666ab566431c722dd3311ac2870d84f23cf3e7f34fd49ecec083912f074a4681a168b9f9b176d537fe85ccf3dc57dbe46821c80a4b0064d79910c6f78e2020ce0e2044e9c780f88fe797b91b03cb9bbe65d5b51a5f2d688da20d15e84aa496e6c2eb337ad114ccb5661c366d033560eac033271872d2ba404fc45a6d90f7498aeaf7fd659892e028967c840eed4b3dccba46709dfaf11a604af8ecce608ed524eaefc1611d5e970262b1d3095c7e6e6115afb91d6c53836136de99b1ac14d4539e2acc63682f726897fbcabb2ed5ce434e8cf8144e4b89720b8c2868511f6909effbd72fa09a4a2c4f747d4556da2188af733ff937d602fd16dae52020596cadca6fb2f8dbee7c38fc8f8577751d0c950c5c59634027065877569df5809ad68aa61625fe3ac8af87648607b48b94ceff9e40b2882f8e41df32ebaa4dd1d613b36e33e18b959659c1440d899622266c36ec6cd9856a7532d6d32bcebcb1c51c445ee7bc54fafbd0961641a42560de951063b18855ac621593188b2126318855ccc5123bb1c452cc62119b58c42ad662889158d9007fb2cd4512abdf78b3f3651dbd16621e5fcee9db58e996be34a52a4db644e6e241b4f6d07ab6ba456c1ba775097a1b2fcdd294a69453020abb0da03eea00a69d2ac95317c2b09240666c078698d800f147ce49e84a11ee71128d91b252e78d947921ced02d326cbaaff2afbf80892452ccb91532de86df6ff0eb4ebfcab93cdef2bb1dbfdc7c9ee1f28b5dbf8efb737ed5e8d15425df124cd20d978783f7225873f3aeb96fb3d85635e4fcb95d5bf4831751ceec15c48c9ddbd2ccb90c13f7a48f87bf935e21fc7e1adfbfacd7357e6faebd571510330493c69e4d5672a41fae62899bb88c836278648b2c0246e31fed9feccf81214f7522d9717eedca2db1a2e1ed8b64e1c213a054ce846ca8610445f48c7282c7871bc88979d97ba9fadaedd0356520fdaea7e1f974312993650bd94cd00cb01c15148ac1dd64cab030017d758d0169b5aed95e9a8d50cb6563d192bd758acd1189fcac9d1bf1f8c18e95bdcb0c8908db1eb3fdb21304e78bcba9e75c722601ebaa9cd62dabcd99582accaf4200e36157ea1c264cd8abbec0f3d12b004b82118a341bbbab7b0c13dddcdfe70be846156830cc19cfb13558d2a39c25288a9cf7ad25ada65b1bb43b029747aee7c1d10af66fd2b6d705d7ba690006ad4d5e2d402ad20e7936014745c0464ad338818d66bd8627a4298601d9aa5293a9d4e477f9be17444d7ee6c58e2860a426818387cc998439e7b9b75fa92a43f3bc3155ca41d412daa0a9493a9ef2491573f1442af1a5b18cecab2461f27c047ff3fba2dda7a8a135eb231d3c673bc83e2377d3c811135ba5a1fa75d435a2a09f45f98ece840b64b5b0c69937595d23b59673b08d1f3ca1072e0321331168b36766279ae1dfe34320007c96bba3140144c373566d79f32b61e69ada289bf25665e6ff9f19fc653ae82c1e38dc88c87efd3ad45e362135f7651f5584a412e18860e4d8733a1b70331141c0dd8f93e80957e7ec1062fb91c1ad8bdf1b2c51d1f1929529b5b097c38578788f672fed2a198e538b13d6010424e6cbbb13d8afb4362ef36318d24e52993d89558883a0a53f9264eabc5a16d559b0033d0bc7646f7cd233fa1b53022cc848b9f8dfba1837ff28dbf2e8fc12da1027a26335a4c63ae0f9a39c477dcf59f68745a4690d67db2610bc5b6e49cceed3a4b32474c2fa7181f2ccf26d4b76e51e5eee71e950f3a00e9aaf4d55fb19b39744027527d5a1d2b81148383382a84feb8e019c9b0be99492bedea1019f21846edf2d39d746c8de38ec82113a7420b59fb414a1119ffaf3171aa4d403c3455304cfe96f020c8587682d186de3a4518b57ce2223653e1acfedcaed21c7a73c5923edd13b9a7cb507d00edf4764638a6c15fc8fc5fc2af872ca173b2ea22648fb59891df156f3433c3d356469a85f878fb00f075a47c5d31171d9f90fc5c5cfdeb5373e65a8a48c475a82d8aca10d7b03996670ef3802dce4bcd28d5e82ef23e93819a1beab90ebfb7db5effe87b68609ee829ee41523f3cb47bc0a1ac4c44a77985c25abe088169741b10545fe976b54ba963680910a701f5d9e40a28ae383c35166fcd9f6ae4a688f2c33803acff903de8603d1350bbb6e4c9c5d18d244c0725f85f6d24bf296daca634aa37757ed92ce772dc3f5757a11a8e98cf494be8e924d106aa077fd689aa336f43ba2d6839794f605d02292ef9e12687b15cf144a962f8643fd114028611ec8978c2183b7f5ae4330db2dc4832e9af3d176ae33cb5d074775d28a649766623604721b5a904fde19891d6e9cf28b67563b96fddd109216728c5e16d3e3ae1ab4ce8d880dc7b686acd30cd5de50da408a557e00d14c2fb6aa9dce0e64a51f286b87c4ca263c53732a8801881f7062faadd962cd2b1053d29c7100dc1a80787efa7ef3f00cf167db33cc7c5ccd877aeb9b6bcde26d91f51653076f9de49679450e94b3a4d554ac076ee3e25285ec88f376cfc4c5a4175cc5386bca406de1aad787c0f3699da72ddd96a9ff174db23e8daf9de25ffbafae5f1812b0536c3cc5650afde55343856bcb54fa4e4d09acc685c82f8ff315c88324a580f80e8cc508c3694cd0b4794edd294b642fb8448a71114cd8c0c56f1566ad263f2e11b0355b9c571126cc29209d95801a34f6c0d75fcc0aa8b44a63b720683dfb8c12e07890df1c2bc315158a83a1f5db5f70ab357d68e5a076c631d3be5aac1f40e4260137f9a0acc02a00eb01258f033cdc7eba57508ae3a268886d333b5629b18d8d38f54e144d0e488f9f5bfd5ac6f3e4d93aa8b228bfb58974a58fd39c2a7e606ca29c45e6bd8afc40d06e58d3f4836bc85c6c445b1bdddccf53864d1f498f606d7519dd26c60510004acc6d9391a01f0a9d94c1975c6be058acb334990c7fa845a867d7a05e72bdf69bf10b2ef0772e153b67871495541771836c9e53ad6775f229cc5e1a8c3642b77a723b6eb29f78c62782d3cc8d7a62f059b4de3010c4405a3fcbfd7afac15f12937caf8ccbc3f00a3b49d66239596eabe5db81c080bd4131afe8dfa51ed29b5f5b4cb40079cb65f21a76e9fdd14e04d623faf798d0025b816d42ee3cc9f0ed61387be78b7ea2005247234691478a82a98f7f21a0f4185eec43bf1220482c1f8614a4de9f13a2ebc8e26b78698bd298a2e0d21c6c451b9737a229a994f79157cc4cf48513743db0a99a32637a42068d69609ef194e3074008e0abe6007d0a2538f4a64c066bb5ee8c69f5247165aee1a632f52eb35bd0889382ac48647122380fe06c729353683fa0171611a056071f677a67fc01cf72764a7ab919c440c78bda629f5f91425cb9f60cb420d092355ca1eacf9211fa4dee0df2d5c33f2143eaa26b1c001a18c8751c0992adc0a328112ed01abd60f6e713d78fe9de5072018213f07e7b27f0af7813a7bed97b44ff3fef1276f7d4416507b78f18728a6f9279e84938c775fc49176ab95e78da67bec660ff58063378d3bf07bf4880d2e3de5bf269b22b632bb9e86b4c853c8e15729b5c4230455c811e099143bcf85805ff4729d31c0d8c94a028af66da88bce2db4c00e425256ae0c873b754fa3b55c052a1a5c99c51e6955adf6b48f49ed4b9bc849768aeeb2bb978d3cfe5f3207b4b22c11d92f5119dabc3a8a3335be80b82924aa41a37f3cc3250dac07c44df94ac30b75bc080f3d08f642fa7a5ac28847425b495ad5a0c028d5211a895b580c9cdcd6b8e8e3451f95274b3b9eb442e50a80c0d033b082a3e6c7e95479f19e630c41c80f8f978e60465df905b6346e5e37dd1930d0742cc60934d89175e97028f31329272d5bec763f1376c44cd3e54427e18684d09d2c0095ff0e7721beb828028c5f2c14db20a1b1fcb20c7dc5149f20e9e838e426af68bc8e8210a2022dabca8a2edae62b0a35372e7c7a5739bf0f2a242e8ea39884bd279df3181e8d5dc4d77282cc644293e8b85d62091a0bdfd4f18ae8ec56da00f4038a2a1137e5d4d25abf2dad6fc0a31e264efd1218a303731ec269268f662c863275d86ade2bbc332f38b302d5a9c51d9c5d2fdb4869d1f039fa520f0167fbc7d4f9fcf0a4410a75dd33bbda1cd349d0e5c5efac12097a96535e6b00fd516ad6f972bf71b7d1ac353b1fbf17a3fe3fd98bad7e45ec9fabab3bae6a93c107f14d4cbb2bbf028dc45190d8290b2c45b0f4825a7d1f04852de82f883473e35e3369610dad4f449188fe49332fde083732513a1fd47dea491a5f0635227d3c53743d5d31ec419e7ef65609aa42f042f1e592eb9a749c2ec37baa756c0220bf992e001851d6d1e0e88f14e198e942e3841c49e9339a6f6050b525eee699120e512b866d5120b62b65afe6f33fef51be8d3eadda3f2f49ed5c553efac81ae2e875e03be9b342c32dd2be5ec737741a972b2d5291310902c48ffcc3550c408a2185ab5f0da8a431b62b3495f2c67dbcf37a164ce0ae79cf7bc4f367a94223073e352d35838934e9f2d11b937d6d12da9e3621c6498c4aa950129cc3a24b677db9c8564ce162debd114287aa4547cbc3e874e1440f945fc27c96fe8b8d7919665b9174bcd1539ee6cc213407e95fb78c13ca84d35b1aed3c544d827367dada623d51635a0a5dbc749b4308e97f09bfcb49c32c1f87cee13abfff7ecb05dfd633422055193a625981fc9e9f67a3b5178835e52aa04414791733bf83b40b1717d166f814b1858eec34473750b569a94badb834c084523c81f107ea3602248b471a238524f3e85d31727c46227b23bd92cf4ca656d4af28ffaae4ff04963a40befb998a6daace5f4d54ec046c1bb57b2f8279029a06ac4eac645189515ad09680010028c3a6996d3caeb9300cbb3148c3de3dade6a8a19eb5b54e6f63a70d09ef72be66feb34b4c33731f9ab51562de28fb1dbbb416ba2ee00336f4d39802bc4a1a040c429c427c23b8bde0f814135beabf6a4d090e71d884fe5effc9e83d2000d156220562dbf9250f8a682d3b3616471a36e4825e7d2f96170cf29c3cc79b92c56f5b4b636e83fe0c632b20915ac6a276bdf05641dbd0b0570a5b99f555305d23a2e65eaf8519390248b0ea43441a4585942a0503e3ced226b6f78d438bcdf189ab2e50b2760bb0fae90d94dc1f9b55b63222d7921f0f6c4c29d7a5f64920828cdf61fcedeb549042095c99b6cb3d1ff111998cb21c40b180b58dd65d679b377cc39eb4096e537bfd6a05f33bb267c075a898ce0cee2fe42e41aa339ca6bacb1dd65fbd9221db10c4c934f629c8364f9ecc8ecee2fcb8dc3bed6dd02f24209bc68d12c6b6648afa8d3d217833ebac4529e8c96d60f790642ee0f89d5686ae4a2ad3ecc2f270416f2506f33c4c0a0254e7d1ed2788e5e9d71edbdeeacc33e95b419e1b37011dcdb95705db838246ca1a43464df0797ad84d0c19342cb83b32bac1d82d0f6dca08df27abea70a6a8750ad5cac67c87bcd1715309166393fb9ef7dd243f663f633879e5b47d45e16513d6810491ae64345c18ff09ca5f7058decc0e0f726adddd11b9209c37e2063a0c99eec8b08f31d513e550864962d643be2079f684558360e5d99509f813043143f38e848a7189081ec2cf379795f205914d7023fd6e4cd559112fce01108d0830013874535f891f13f113b102f977fc1418c615eabb9dfc654124084ebc7d3105ea6ef9a0b08ecec9d53fb00daf52c311d0ee09017d203a930a284c4e0e1b588787169936eeb2cb5c354b5762e29ccec00a4e1a059d8a0efc9c91be1859fb514dd3517930160cdd99aa86699370a37bcde17633ffaf5c3204513fa7b355b08c83b41f93f81ab83013e309a7c3ac895a887dd409fc142687cc6208a388fae4b0e8bdc698978606a43a82af809e2b9d69c297aed8e409d60123c24e2dd89d701773229afec517ce363874f2b337e286a025e88af503ecf34fa12735e611b3105479f6c451a65e274371956f93d16ed171a5da4ce9eb77d78f5d9d4e604cc4320def873fc96f760f9aa8e182d2926199e3bb05679dd8cb4359a43060219e9d9224f6d0b9bf00cc7e696d115b4b4356e6b287a53e840c58affb86b79ca39e60fd4fc7b29d65f8b2e01cdb027252709afd813a75b87b605127497f5c3e89b50c20323694344f9fcbcb235f6701c577926e03a3e41c32a38810e4c1c51a41527c9101e9ca3762a31122747140716378877328e2eb9d3441e2420ca5db921541ef6a864b9b570f45ef3548d1e0f1c3ba2b4b6e1d911cb8c880ca2adba02198b9cf3bb42c3bdd118db114b1ef2554147e2576a663f45918cd938aa6d593f336c781730ffa41d74475f8a1c8ce41de7dc1dadf53b2e1dea812d540590518c81c6808b1492f2b6986563a7d64373abdefa4be01917a8dc2775a962ce1180e82e2e323c2f37f40fa067f37a8646d2e6cd85a26ce7c17f38f60c5a267e55796c2cf2f3d5b08cb09a2e6c4c991168ba73274c11dcaff312656b2a8c6b30ea895fe5bef5c4b21f59485bb56bca5701bd6d57732b5f245c0e2882132d724e7488a0f70729966d7c0319944be9909be48c8602d231da0bdb5224e07867e897389476c7b769154dfc79802810b795ea5f304d4bdc1cf6b098a5bf33b404f8b69b01a33360fd06a6319622593bea3e0c3d9a260ad159f9238b1228e54023db97fc302993f25c651f7f7e815e398ba20b3f6910d776126700a8254382afef58e55340c6bc773853506ea56e2aac3a64c30a32004b995cad08c0780d1d452e6f8fb2ff0a6c9ea6f3837e4b663559e52d3eafc69d5508ae2c1f18fa38fdea198bc1d17c878f0b3daebf30482da1aa44f92f04c01d156b631466c814281806e687d5791f4d166beb6d950eaa7f8cf54cca2594c87957a40a1822055dcda3d8d916077d48188fb998a2ba3dad8bf2c42066612d55d67ab8d190ce3bc4e342186ee825149961baef90f4b77117963dcc9935faa79838d470811eda06a165f9f3d1b241a7bafd991268510b7501bb6f1fc362c4cfec78e5a5c1a70004a7960b80a1cd628b007f05864c359afae910c3ab3fbeb800236a4ab092f5bf130e6c3d3ecad473526e6e18c74f910a0b36da8b6c2af8bd0d0b710b9e56d95af80f7e8becffafaa592ad5bbb19400644ecc41fcda579200acd4c380812dc994994da4b444910bdb6851649f1bfb2458db3d9adca3f916d89588d3306fc6da74081325273fe1ec999ac4d26212c118f0830ec80f79b51f136da3a0a7f12813951201cedd3172da8b79b318924a8d749d3f61200eb2b38e6bbc9ee94dd920e5107341df81d51d4833a9be99978d3927c524139ee83355e5553d3e8101d4fb8d4ea91e4891940e622d34397702c085f1e64d507cd6b123a121f84c3c48e82ec4fea6b4a544a43444a4ad91b64ad4d83d636e66c68d5531dca21c2c54e918bb2e53e5ef14b04df8e86ea4f9cfe019839bb9739c50aff5505ebf627202a9daa4790952cc13c60c42a60bb351101d757a11629d0a4a4e0207e837bb50dc6edcae1a0496d2204030492231f4625d282134f752f94ecbde4dc289beda6a1302f47838c8e9b70e02600b7606f362374d6d1e84002d3032293a683508382f1c186604f06cfa9d157ce595d65941d9164895c5d34dea451e031113c356d4fb9b3dcc5c0812ce4150caf7bb50bb822e8ede47e183a26fefd2ad8c89237b7c8dabf3e8d9e69785245b0423f11b441488bfdaef16e962a5c5060726b3d31564f9d0117d39055688cc8a020f26c651a8a4af25778758581db82bdd265e146f261efe7ff505fdf2a8f0d817cb464786b025fe96ae9ab9779dad9e8716f9346460c2ea489cc69d0f00cb236ae83176765bb7530431c4e1457be63645734f427a08fdbd667599f0290d28b4218aeab110402e0595f890aa7304fcf404f838ebf675bdea2fdc521d90d4069f70c1a168bd7790a6c03a3ea7ec2beef4133989cf7894e3634b0f9fb9d56fe7be1fea6f6c410933e4a04ce8b072c1344839648562fa7a0866eed01e02eefb46a63ad54c602b10518fac9e8db1fa8624d6775ae1aef0aeab13f069269cd646edf4941494c9c2b11f9fd50eb711e16d2f5649c164f9bdde79c8dd9c50c0c751f85321102dfd81e5b890b1db5221f878e6f7e6e5937881dd1030a14280f671a545174d7ca080dfb8a55e71e13f4a7c469162f0df09e047d2deefb01decbb1c6ca3c7648d21b84bc2a21758703ec9224b22f83938d6e756c0521b8f34b7d52524e0a98309c9e4bf132c2611975401037f42eb7ff425c4266deb5b31b645a82854dd8b2d5265220f504ea298874542229595daeb193f479e22f35f522631b3bf40ec513f208bd16785c229a60626d8c2fd56d62eef590a1cd68ef48cc04da0c837e3ac724e2e07ed00f2033d02c817d9e371e79d0469ece637b3ca3ddddedb96b2b5aa6f4c0b325f6f1ea07dd46af042d0405d723cf283b05c82fab27682ec3c97c97e39bf6f6968c04740137e8f388b060d6678d4dab28287fdf1b2f2df6d325198c7bd65ac63472c68d602642ba0e6a7748919389a7a5a478563efb3c7e0d9f11b82e7161909441eb0bcfd0661e3970e0463d1c1cf41943f9f751847280c7991b90db2670aecc5fd6627b5ea791e74dfaa303719b1e93af6fb77fce261b92cee2812f24c272b2f7c44a08a9bcc3f173256ee07b22fe73c71b9291ba1340ef27844af9b949c2c84a9a116395f5a31239f5692feb8e938a982914a798dfc69518851cf9d6a9ac8933c453cb6320cf24a7f6a7faf0b1673f95ad94ef8881cd26048fd32bda1ee0298403d59a7a6096037084f454a8492f28d89378c0746996cdc6df9307c8213e36fa50122eb1473293829e11ac47d1293548e56fad5aae16de866c53cf80e5ae6d0240cc4f7e5fa3b16dec75e6700cc3d8af862d7951b1527fbb5dca78c97b6b80d4bfb64d05beecd47eb997a2426484248c73031fbf5a03bb97c70f44f875a5b94e20ee3d375d37d83866affddfb7e2ef44cdd81c58f22434c9185dd17a70dea7093a50e4f96afbbe99ec8229610da6311abb7fe748cb105ab2e73741c7a5988c39ea0d3233db56807f2042639d7d681e1cac0a029ca483c78d9089f2686ed05c620ac19d96654c28a9c60badffd0ae1dae240cd25504357801903d0a18b102e1a70600635e3bef2f345f49654f39a875be74a6bda23be99a2b7ed91d767d5f3e17c3a7adcd2161b1e2bc1b2a2eda5a8029e549ff7c303ee9e75152f48423a463a9be625228f221433b88f53f8673aa90b8a44edcf97f53fa369638f4380ea642de46679bd48848d70fb06ba1b1c926c5984dceb13492f60741b862ee6f043b8821862f03b1ffa377e9a96fc5fe7161f8388aa6b2b0f61f355b6ff2fb4af21843d1ad557244a245ab430a904b8bd10603143cd11fa69b8a8835b342634316722e093e5abf2f526cbb30deb6b045d6c33457eca4f24b0fb1ef072c22cff07bd03ade792d653b3de533742b547b70c727de775828889c0971c0de74a88c3ada1876f846868599843d857c37130d234f5f7e1e5f2de3d4d94957e83eb8e58c3672c3eee2b4f01698d4644d0d40001efd19d207174ebdf50691cd2cc3b21fd509de4e01dd4f834af0aea56d62243ef502fc52813b4c8fba0c6425c96929b1c32bb48ce48dc48678f1a8d63b043b5cb1919a7e5b60bd273ef50c7086c32b3dbd2845e4d0738cb52d0398c23a8300ad9a24f166aec167597051d05bf91a41c7a8ddb9c119a782071f78a444347a121706104dc25177d96f01a1bca50fcb7a1651c50b80856f682f0c7994138539f243215014d3df5eb5bc97e658c15d1aaa9c5298316c9eddce7e308fb50cb8ccf1255d218571ad230ebc9bee40a59484632c7b6d4c8c63ba12696c85de761489c7ac486d546fcde8f81f171e021c7a273c294219a44bd8ee250a421d3b0f541c084ca8719b23aabdfd1c1e81a4235e811e42d7f0b25e8544e264f8c775265be6facc01f7d7631f6888b559510382e9836cbe9a79a8722b721a470b838da0108523bee44f0c71eea8d4e111ec34fda71846a671b9e8f05e1f26a3d69b6e2ca033e19c4f0092e93d4c714dc8b9d965fe0e079da26dbcb27183c2d09a5c2e6b59ac0863e47d54a7842d2a8a4e2f8fefc27c5be455c685888bb2062389e52d8578cf404a3d0c208faf1f92e66bbd7b4b993afdc97df40197c8b52ea16a948b683caeacfb10ef1cbe0d179d2b953ae4058014da05577242ae7660434cd17db86f61391730ff0d00412e3aca09b998e051bc0269977e6c7f38a925250380c82cbde579ac05e84d05a8270d700e09a563b8b7e48891a201c056d7b995c1bf71e487bcd6c49448fa0647b90ca59498bc281777c47437c9972ef9df957cc59a69dca0d6a215ce959c28151d5e40b0bb554d6caf4a6988b49a608e20bc5081dd16c2f5e48b5a45b2ea1940433c5c33edd23e84b143609af99b8b6461cbc559b26928edfe247dd88205d159e9cf0619b5fdc67aaaa238d7fb0dfef1b0f295ee566ec82f23b5c133792606155a7b34a2ba3f39a7b3ce1a85e44c5391c470e9f847a548c6e8a55e860588965abdbd306aaba01313faafa7b82d9aa2a080b1b438e58aa208a987f6962efc37d95c5392022bc0645cad2cd296a32365e1f06986d3dc05a451345bd15cac527c6b19ab69e21318dbadc094596cfe3d984fbf49a0979262d6ab6d2044de1354a6356e359bdd781f980c883de98f2ba300b917c86734d19d4b21996b62ce68a93aed8229ba66e8db6a090e83bf550038ef3891aa3cd0f75b4e9ccf7e63eeaccb9e93c2ea5003d051ff2297335b68a193264ab45ab72a8ec60c40096645f5365a842bc6d20a76d4eaa65caf3e2391347786af18778bf83675bd46972cf7618791c4aeb3d04efae9867beb0467af2013a3eac6dbc08e5d9413fa71808963637d2de3f184367b021776bbe46a68ff6bbd138fc911d3dc2cb06451e7e32d756f21b9541dd9c9d393a3982118ca0710db5554c7cef24476c6b957b5346c89e0766cfa5f493be0f4f3bf31a2257baa1ad3af6ec47644ee56db01fa7ea450e7ba477faa54017951fe62a099a543e448619757742e0022bd291fdc4d6f66f3e29e0e10a14d879c23ed8428a66c023566cdc0419ed09c6d8a76f169f7ad866632fe839c59c1207c67c192ef838f029c2e4c87646b534bb3aa67f2a3b4bc9298e7ed8e909f7e5b3e944e47956fb668b9e246a530cecbc0c395974617bbd05cf1bff48a21b8ba1ec05830b1d3b9bad90799c1394f62e3b2d756d4d4b5cf3065e1cad4b6fc7cba65e564c09505e1866136a33577768a185a9c25dc9cf4edf24dd3bc94afd7b8fa1a32fedf4d73f6128575a5066245ea0a5dc16d97aaf4131d9af7ad3215f0e376baf1394aadb2cab7d7f5b82dd8306ddcb05d175eb2aedb98941d04451bbcf12a5e28cef9c38f1b66d032880291aa1cb18b291e0de30012f4566451e20dffc79b20bc6177b64fe20f9c3968f105dd45d65ca78d3d81c98bbdf697321029d4edb375f49dcc0bd27971619e5ba2e9de1e611011ac594233b558a5b31652b9bb571b14f21c6140e8411dc849d1cdfe0ac443083dc571993942b833a03ecf50106afbf88977e0fbb24d6241aeb0b28b132afb265b287152edc432160c93f74d8d748a8a5c8a47da540c120250c10f47df02294029bcb732860ea3bcf80776ce22d3ba2b0b005ba13f6e973253594549c06093af732ed6b66080d44ab36e8ea0f67ce95dde6c34627525b40bde6109bc4c9ff489cfd3ce2701bf19050350fb608927580109b8ecc997bcb339dad99c7374dd460f3c43e179005954db4105f87e50481d3e7736679d453a6d618d467120b1551c10eaec06c8f1d2de0a271bdf2f05ba6268b24e1d0b36a265f5a65a5ac72bfc2b611f99b238a447c14e3e8430f01fd09faf94a7e83e2bb1797d59b6260d39d9d3a24a6dbaa3de03bad0b3ee6b90983ea8c537706de7054f04bb9a59d950df5550bc1bbcc51ae730d1ac7d1f72e2418829bb5057db79d70457db01896420edb490a437b6c550ec806571a6a6337a0df662f914a83769bbd831ac374f226b629392df08733a36f70b527251c72a7ba1bd435022fd6ae9a578ac393eabd7374833bd64ad7995a89a61f5f14b207b8c18e6baf2dceafd336d1bb836a6ee83ce39edf94943dac9e71ce97b670ec1fb968a6cb35f789bd14719b2df5748c73813001832aefa69859d921546f57f6dcbe2379bee677e2ab8bce8fe84d4aa58d601bc732f93ca65e469d6879cb70e974dbdf1ebe1d40361f75ba2a065d667e62c00dc4787073a1afc5b7e12f68dfb5059a637724980db9b61ac8d01937c420d3960419738e80b63ae658e7135af7bede860e03de78de25eb5789f848e86bbc36bdb398acd0cef8f687fcfe303c48cdb25b7a1abcb27b5026c82ce453bc0bbc40528f523ed6c74197ba00909c2fc099c13f809c0c7636d41c794ef898001f5ad2e9ace780a45ebc31945a44505ef18d181977ee5f79d747f7a79197ebcbfe1a102da838e95f2a19895fa19dd1e87fd1b94b2f64e87eb12e02634446c50ae8d144ce80cf48b0dca5f6ddfa6959055bf610b9bc677c693b34bb92b78e17e93d5132bf9cfed44b8abb778b61110327161f132a1c007ae0eed79b41087360796f7dcc2dadaf930d1ce84debedf400c31dc6983dc9f0609e3d41328dec948613bd8aefe1f0785be4423a6225fe8193700639fcb355fb10877a368e334fd6c51def34b972c0c00ac2b5f54fca6aded9a09086ab3dffa9a8726963e0445ab8c3381dc4d7c5e33f5eeabc24f76d370a2756c107e05d7f1ba2c5ea43f2164d239598b2a1f7734d9344a466db61dd4e353bb785b16b7e99ba9fd413590fff3ae7565143dc1414ce1e6936b3ca0636f888e224ce6e5a81324a475c5db0ae52013fa60717d88bfa45bf2d5fbcbc9302b9e8e2e8df2f3da792dc56618a0261d26e912604c332fb591029427b06feb1bda0525a24e99ecc560139e086004a87768b1c162bbc596c9ba43a3e96b739f6f3e3f14fc39d1d4d361e43e89ba8c6f597b7957abbc1c6d1aef4fd3633b232793ce068c69237749845935a798139ee45b25eef07b35765943104807c93e16e1f0fd7c3da8d094e3ae3b10fe8181788c013dea68a96c35b9e93feb90df52ecb9b8069c4dce2bf365792e871fb50dbb44367dc8cf382972bee10b975486d3f701eee7153f4c28a2371c82dce1641046a2cd9ab54552b50a8b8c60cde911bb10b204da0bd998dca30c3cf593f517ea074906d6a2d7734820a9ff6c6c72d4af5ee2750fdfff23abbde3082597d3b5cf322cf2d85673d9982751e0e562252b27e12ff6e90e2cea848e6364e3a8c20b59bf69d1be67897d02093a891a5cc75a2b1d510de062bb43a2b0a8d43f43da350bbdb844959293254aca8b1d46a5a5d682eef7a882499909e0dae72bf23f8a5b1c2ee92f5e3391b11003162fd8c69682b75fde7b67ac6b485bddbb61ffc88680a2847538678941f82a8d0d338be776cb22756c060a2a12b6ea1d7db8d97b0c6ce4285c63af06010446bdafc31502ae98d4ce6c18db4abe99e32dac10a3a20ee41de5c751a63269b9d78eddfce863a0b552922242c5b7ec2929ccbe1a5cc2db27191eab153c7467fcbb9a9ca066c8f980e84f60ec554fc39a5fedbfb23431888040d82cb97304f228287f3c02047bc45210cc9fa1c8f925bf8f5913dcd99b29d26300bf4ca9e3a089c0316f20cd1fc5fa2989cfb23a575ca82307fa88adccdc2740f133511d2cf9a5fc89d08846133e7af2c2af6445cd14b0ea627046d92a4b02c5ecbf3184d25b04a44be29d037b8f8561046bb28093f52fe95995c8010e8d554170abb00ca578ea2c07287091525ecf0ea24920348f660793201e2cacbd2b59e4a20617e97cad036667833e7f1510da700b06a7a6eed6e9b6b0352038e96edeacd516b6861e8dfd27d1b57330ba7b3323c99b7144faa918a769a27fb323db41e0d21490076397ac19dbba6bd2570de6341b66fb9a3ed7cfe972616d0dcfe7fce1b62a79f3db1ce0e0fc22baa2b174d1898322923e2cd741a7e14e1c40c01da9a1b70ba84079cdd10734e172a26ec5fff6571762136c67f99e202e9788291c67a1c2ae5697343b983d1c9b47e6b0d65853a4e3521ced54341457c2cb7acf0a841a6f54a2d638f6eb2c258c804726949f96871387ebafa08a43dc2e38d4089622074f2a84b28f8a27c407e21581815ba75591cea26883131550acc1adde1a07c63416cd15d101233f796f8b13a3009a3f752f21ce3653e017c471d2acfca9a30530f4eac7a75d1346d0dc13e0da28599364d254b5e5c93ec7fb161d1fa17e2794f25b40214936988106eb318feebee0d4504a2bf66de00b0a1427c4c26c6ae4c191dce8de6eb20101ced93719153d79259370b0242eeedf72dcfdff6593f80f66bd9a37f4e8fb98988b9bbc7fbbd2db79574ae3fec0e2ee8da1b1e331bdb1534a96ee65a133fa1f07fd285e6cb4eb8cae5bbec23196db9838aea9982e9964bf0557f42a03b35c8980175cf735364e18d908894788c402c5290cba8d336ea22d8d3d263211311463e708685864ecd6a15d1b924dcb67e7ed127d3359996b077af4c289e4635403e06102268a65fd177bc443efea90731e332d89db8c35592f5b81054cc6acef0e586c1cc4cda7fe2b5fce67e51fc2ccd18f87978abc1d832a27333c9f13ad1275a0098ef9da76196a18ee6a0e60c4dc4bcedcda5c496f6327ab6f2865d0734ab2eb978925abc12a6de3774e527bedeb97dcf55d91573f1edee493097dda771944162ecd0b212c98948dc1bba610d50b17902ef59459dad1dc9a01a3eb31081717408f7f2181b9cf42f2b24253248ab70357ac7211a8c3ae1784dd3eeb688b845e2895ec7c902a630f46bbc2acfe4f3ec9b6a25eb1fc3e014753b4f6e8025372eaa6c98afb995294d778af345463eb05b0a10deb9403c1b04903c17e7e41ed01f8226f889cace1667a9b116b4ab03046e0b2f06561048980d765411d11d0a4f8837338b9722e24ce504cda44f7230e681323bb0242c35c2efbc91f4b4936853fd847fb24a4fb3f3035be078eacea2ab7404efb62e743520d345d2ceaa5fb4460bdbaf0e38d760e4c30f6023d27a4164662fd003bbc3e7bdd5509af55b95afd2e1781b0fd6c765f743b2b39ddf551def756773c3b94e62923111d6418a4175633173f265fb0fa14fdb4e902bd6062eaad1813103b87a1b7cbc4174d7d53d662a4cae4914cb7efc78da7fb3eb5da68cc1ac7f6fad2e48abd0f49a81ee0255b4305925e75233d01026a709cb6ce037b5ba79aff6a9572587e78230dfc264e64c5fafd3c9cfa7f345c0e200a41c6f754b3a503601cedf8ae771ee4b0eae12eeb2dbc1c9fa991598922c5b267ffb626f6c4fcba2065014819292ee44d5248a593428e1dff29d86ccbeca2cf024b3c2c449359a158a76e02e375e9f70ab531c8b06063ceaf72a20ff584a86ff70e2a4ff43f76d5987de09313d78ca8a92b71e93cc6026c537e109b67a11ccda47da950e2465567a9f94aa91ab1f559a558ce9fa8d6e399f32a0090184b5149320039a33b34eff4d9a3ff40c912fbcc4cb28877bd7763d39a0ba74ad20a22368754a03319eeabfb26906f016bfd7f9889240d36fe2d175b4e20be5b0e44788b0bdd1918c86ea7420297ab15e1c8448d172c5e8810c5a05c7db0b8a5ba4df5de8734722cafea4aad9bb7e9face2c1ecb157a82219fbf5d8ee7a1e1475c3985cf79d1e49e7b954c8a5ba25658d94d41dcaf9f3e35b335b57c1274fde2d9b637b4c3bb042603a554099d641ca29b26500d38c323a94fb8494167337742c47c2a78ccdd2d1372c914b7ca9d3b5bf1e3b301d6853f677f51ac5f967044f173d02ef8c73d4ff8447c52161f6a263cf9c1aff8ddd81f63c782f0c1b072afd796d122ef2fbd7baaa6b7f596985d8b4412fc93c3d241073a6dcf5ce4492be504bb147642d555d7e77004acf4a9d70f5672ec63702fd5eb3d2bb6a3e37906f63665ee3d5101797526a0910c0afcdc6d64dd6eacad3d65cb9c61be516b331a9cb145dda31f38844d18d0f409033b4a6f80f8d4379f0d6160948c9b00d64362f7b24ac4c06c0eaa82ce6813baaa7c701934a0ee0b4d870f547a9051750d6d1e7095611ec2fe903a845343b5f2d9933da090af98954a8974ba8bb93677f7f32b0bf1b043d543ed827fd1c6766d019cc5415b92f297782ef5a3ef33a2cbafe9f2179e19fe105c7fe8249fc4dcd84ef2a6cbdc6d7b39803179e954b7ec6b94fc0c81f5f6b6bcad57efd9b5e59be35677659f1fb6ebd90c6c2d855d820a6f6c1ef7489e52635fbf85f82e20a98f865d79dde2267a0a0d77b085780d2f2ae44cccfb4577e71941dd630ceabb7296d843c7f5cf8bbb5e61712534f172cabfb61b1a1f8375e1b9eb4ccf63eb269e35c89947d8eab4c20aa4db4c14179bdcfedae7b1fad9188bc08046ee897bdc8003fca210cb2e05ca7c9638382b7647c848502ab89c420f11b5ec135d43086bbeb7d8245aa89412cc5f09e46fc372b749581ec071b91a8f849e20a0632d44972cc0b202275053c5c27540fc4ec84eba625a09d3dc806746bd241847458dc44328f6f2d6e83a31952e9c001f185f4d2b89ee01653239a83d4a33e8b8bb2406d907298ac825491a86fc07ec5006622dc580e84fca62555564ee5178a8a4f308b18f99888465ce823e540c717ea36792bddf3f0ca5e7fdbf66deab845a30cf06a97cd98aec45159b94eedab43f8ab9f0d7867ee89e2877749d34274586c996d413c1186ab16beab0f85bb7e128750ed951c555a8e6b453c14a9494d2f06655bac5c945cfeedd9092ba44ab1dfb683cb7dbef4f6ea7aadd31108174db33297d4b6e21b4ea785d7d629b43e1e8b976de6346084506b695d32a7a032edce395cdd02428d0d1f8de4ab50569d9c5361f7335f213555681aa4195fb039cf98c15c4c45eab9434e53ecf38dce5008c2a1eaaf61a7a010adac3e3ae2564e41e9cbbe9ae382b19f1d38b81636912ea75004d333c0b21b58fd323b961f623994054c48ccca1c7ff1b7a7592230ef469681f007ca4f2228e1f8a952df070a4fc114ce1128f050de9716dc421db8d59855cc2256ab9295d3493c4af839a1b1f00f0e13ff9d135b669ea22566483787e63d83f3ba9f5dbafac7dd49e850636c01d84cbe8c08dfb70111f418aeef5173b228f33b5ee8d619b3857c9db0cd0525a03eda2606e80cb21a13d44d51845c0d8d22370ab6f6c6b6f16aae2136004ae966ae38a16c9f6be382f92779dc2a8e7af49ceddaa45dad4db9c84053d2ec52a62e4a0b8264215ff1664e8ec1f8a6fa2a2eb57959c49f4e73e69278fb5716bd445f6f3cfd54157a05823a89167a118726d4dcd2670ee89a167409f3342eb940607edb07f1dc15482b9e55f9abf64c4497b2655a190261ba0c460802847db0345e1d4e992b94e560c8b9a6c4a3afb9452b5b9d9b863d157decd65dc971c75650ddff956b6ef795929b6f85e65e5d1177e756e2dca8955ff7f51597bb6c85e7a6ad95255b37d8fa417d41fc588e595529ce0d58bf648632b09869c61e56a4bd180cb44b8763fce4d9daf764bf3e5546f081a77ccbf3f1d27796e693b3b5a2e186923c891528cb6995c99962394e492c1696d5d8286dc4e22ac486a8b2c4fdaf6edd341258a756e025cae521ab8a0a0756c48818f305e0a7a7b24015a314d7ad2050642b0b08094df774dc8f284ddfee6311aaa893e768438b30c52cbe8f6ae4ea8689c401c6d81a3e8e02566b1299cf9936d288c20372548ef81213adf6ebc91b05115ac157d09653889ecd2c0dda95553fbf8628d2233eee5b7a76db8912cb839fd3d6904398c7c6d9b7ee92984a97d9be66592db0037edf3b0db53facb93bfe5e529c1d1b3be0223f7096704340381d18191f5bd0a8d075cd813d8244825a824a202c93592040edb692911ba40fce2b3e34a30712c9c558bf3b4ce07ffb31165083bfb7ab46573d82fd1f43ddfc0ffa43fca97f4658e07f2c526dbd53250c0a788041eac3a20a38f42c8c44e37e1ec9eb8c58b0e8a0ed3db45cd45074d00e14b8733355a49b392f5a0fca866490c20a2195072d20358b7386c1b02df29eb27cba523bf0997478ae14af1107ba922c665a15ac513bbf7d235bab03a6b6a1cf4efb13a958f130bccaf603e70b5d0f620d01ec78f5d05e22db4a402366a11343f74af07be27a4617026577ea3ff1a4710a431db2a550aa62e86037e8c02c0d725a47e46d08dc1b850e4d1091b8eb555cb471ba696cc9fb51be44ea631ec2937a279eeb2062c62792a8081dd0571b93c122122eb1cf01b6230911507372446f509112180732cdeccecde021a982bbfa64de6cb8d240884084da166b06a41d2890a38efbbc2986dcb3720f0b08b60d03d4b711e6f1bb86f082035b0b711445648df00e6e107697999bbc292267352b87881a85ec2d51cde500c44748ea6888f36abc38a06273598652242f4c445e3de30aed727979a2bf06b757286fe50cf26daabc3e446fb9d5237faa0472f6211d539061edb1d8a576ea1a571a246e8ec2722bacbbcd55c021abda208521e7630aea6edc14b248f25911a28f1b2701c9b654b2549d1e379d4c67b8bb39cee9c156f806256d19a372ad7249fe28f1c2d646092d49e48732d43136b4451263264222c6e354640e9076d82192a682b38529b76a1d44511a3a30171b4688bb1c8c45516678768d7c912d88bee88b01ac87024a0c1e655c6056554d07e96435520c983859c2880161009830629a977caf0d84d4d017c469250178bf0a2606d3c9ce27553d97fddf7a74526f567a0ab3302f8682b8aa3760752ee97e3c39c1ddd3672fa2a6c5924cacd7b6bde5de526e295392292b06fe0568060cc3a444c7515e7461c699888338c3a72ccec4993813672ecd3eb3bdd5d0b8b69fd9d09e371dac6703e4e1c83ceeb92155707449d492fe8e2e4914572ef41f0c949b507ad48f42a12cc9ea9051a53f2a815cca9e27514ceab9225d9d44c9206406a48a5ce92f2581d0a7afaab546870667e6d28f7120a60aa447f4ddaf7f659083c1285c430dd96a78f5fa57f55c7c2f7cb8b0be7b402efd5aa36d29d693fdf9e55514ad862e65325e5c96c13258864906cf609344d112cf5354dc7cd5a114f53f450a111126f190b73f47c8edcfbed6b0df1e8f2d87ea7112255ba40f9942e9af6d47a3573439e29d2c1cc771ffccabd76a4b895edcf1228f48f3eebad75cd14c567fb4a6a7b5e383f1dce85cfa3624e5b59252bef00257bfe9b3d0b92e7db933554241b89f50f65cfa93a54d739563c65c3a612e9d402e75696ff6d0be1fe48593e7d26fedadc7235ecc0b4db4ac9b3fd3877eec264f4f1693e863ddfc0193e86bdd04423ca12fbb59336d3a1ef5fa63386e9aad79d323fa570ae5e35b422b18ce85e15c3a73e8b7584d1a1848149fe8a5f5a95f8aaa1424519bfd6a43a08faf442875a90f9b108be31535d1568fe8b7b75c845670266e23e1f64f36391218c605fa1aed853a82e2077acfa93b5c0f0d3dc8a5d86f1ff66f5ed4a1a92d05037961bc212b89a2219fd446881779302feeb840c08d96189c182445d33c2caa1b6ff5ad5dd4d96a685f3d1ef1da67b1e5601f7bfb9a7773d51ffdf6260d93e87330b4ea60c33ef6916747bc9a17775e7c810b65dc7101f7f4234f13a0ab92492de27d32be7267d9bcd662cba13d1b9ad73be2b55eb3d42e94b724aa8f793aa4c3f4475f54bd94efd6af9edfbc48dab469d3f8e2269415e72ffe624f343bff9a37eb72c41bfdab57311cb9a5b8a7793ce2a5df5f69cd54a1068214b1840a9658e2baaef710cc8464810b4339885c0ee10217b6cffd6f9beab9bb78aa4b987c9abd741f1ebf3dad9d4ff3e5f7169a07ff6bce393d1895ebcf854dedd32d8e0bb50a194ec0d988dfa9fe64f41a08871ee337ae6292119c9b60ba24a7b4a1a154f804da009f6aadbfbdd685315e596bad1d8fd8a91051416f41b7c6d8dd6d3514d6a30bb4f3b8cecead544747e30c7390ffad2957794c9b425ea624901ec9e752c085fe72db47737fd7e9d2e689ea4ead3cae7d8b0fa5883eb0ea3d87bcf798219e8f0dff711f6fa9624071a1f7788f0c6b90d9eed283fbd976185d1d32bab8a1abfca63f69a37f47bcf1e5cb54976ccc8f30920859e3ddb61a31cea8751094d46462fa93fed3794f7f3e8e4434c9948f8ee05374205ce93bb852bed8e0cae7cd8f6052ca4dbe05a9ba7204a0cd5b52bea4e952e83d57b6c692d27bba54db277a228f5eab3fd99aca4d0d031ec98f41bd41f320d449fc44972b835cf976446b17205dda68c45873c31298c8923e981487e091fc162942229c7c4bdd47ff788f9752ca2016ebdca53ff931708073f9d2251b2f5332057c8af18a314677917f7fed44eec168dbb139f68c3e98241fe5ba4b97300f46fbb849a67a24bf568e0b85dae793d8f74fcc4bf96e283f2fe94f72fdc9908f2b434c921fe3ab885ec71863f4beee97362e7c2cdb901863ac2ca5c72acc791ee7f443387489fffa19297468187540ccee06f65387f9728671ce29dd872e310258f2f931ec2d77524a29a5dff92fa5d4b02eac81067b355cb223f63fdc4b2b61091173e98d90d73a6f94a8e04215ab5895ef03bdc115a860a3c6ad800bd9c655844e94887c147df862c58a0d34d26224d402e241a0e76e3e68ce9fdbf6ae802e6defefdb6f1ea845270309b89117310bd05b16ddc883588c80227b29bec2845f7bd19db63bee4eed5dc3e1ce4e6a6fa7779c3cb98b61035c385f7bd9f35deb1e9ddb378ffb0ae147cc3d5d16020a5ad786340c18cf4c02e286a2b979a239bd0ff4e1863d77fcc20a9c8bf8fd6727e2cf44fc9f88bdef4a79f967c7a3de90ef8dc674e750384936f29b271af152be3baf88177eb73fee7da3c19e15cdbfa697237e41475ff674f4cdf103ea8684743ae2f616046a54e8e27a2dfc017577d4e9d1d7e47fd743085cbe1ca25c5d283bb294cd2e7c45d48c58a2b9deeec26615378edc98ddf8cda61e3c6e3c926fc2e50b6e694c921f12054e7e354825fc48a552a9542a954aa552a9542a95faf1e3c78f1f3f7efcf8f1e3c78f1f1df36d9723fadc4b450c1d08a7cac7cab001e6dbabcb81c37ec95683247b19829e912d257bc9437669af43ce0a00b1235ef9221b0d20aebc7cf4d7d5daed2d6efa7ad48f526370d3a6e5ca3c14ac769645d7d80e0a7fb857d612a3238c102718a263ec8ea81ab367e4f169ee071772575c911f55ba349bbb5ce57ea0c7ed8d867751051555188c41f0099fa2069824fff2228a49f29f9b9bbb46548925a6dab709f840b558a275a3dca717bd1e4afa63407f5101d3e34b24d4df8d46612b28a288233c6a5bb5a09a651936e7acddbc5a740b8a37ce4d8b6e41b516b1695ab669d12da8d622b42ddb329b6536cbb0cf1ecb6cf6d6668f6d991667dc6636e79453cbfa69f6a144859b8b9b75dfedaeaf0c824f2c6fd6d5db53abdbc6273b75c0a7cd6aa05ab3af9a36eb6fb67e76bdfbd74ddbaeeb5db31aa6d9fa9aa63d48b3211ae8b2da833c1ef1af47b1d588daf620179ba6d96d7baf5ac5aa566bad98bbbbbbbbbbbbbbbb562de88a73dbd15f96655956b7cd375b2ba86a71beede4731f62412010880b0181401b9faaf7023e6d9a11b5d6aa6db5dab055abb5a3d7823c6a9be68ff149abbf699b76699b119ab669316a76c6da5d51abd53dab456899a6699aad5bfd6dd3a25b50ad45605b96619a66ada6699aa66156d36c96d5cfb6ed6d3542cbb6b79f659bad992632828d886c9966b7f9715edbed8837e5effcac6db884e2c7e8e246cfeb95b156cfda5a338ec342214f32cef5f3e78751655e9d0c6d342293fa67d7d353492350937793f76af2ec297777777777777777777777777757424ea04dd1470f0d12452a3e3ed7a514a18f1ffaf8df25135f42f2231f1fa54b22dcc7187f86fdf809500003ba344dddc7efa14b99bca4fc15325bf155d3ba63f12122224fd28d7c4947f226ba923fd1997814dd890f75283e45177a155d0a931fba1c3edcb91065f1262a44ac780ebc01ba57d1c2045c186f224e5393a7df29e0530b1f1e99991ed1177dad57f4ded5db33a2e7ee1951cf88fec3ef8abc30fe883eec99f7c2ef4a6bd2c5dba2cb8143f473ab61f2fed2e43dc5e4fd67340befe1a347f4659471d30478c4a7cafd4d75c42bea4cb26bd2d1f017754d93a2eb9afe6cfaa6713aa7757aa779baa77dfaa75b1dc451aee22bcee22d5de73d7ae4d233bd8a5406874b690d6fb8946b57c66af54cea77fdae4f5f326b2a2e8c374aa8b5d6efdaf126e27429a77ad50bf97f2829154dd283186dc2707c441f87e57329d6ba34e3c1956209ad189fb0e7cf22a8c9d931c606d94d7ecb6f8bd54ebe5c2f1def8ed6ac0ef293235e0dc8bb847a70947eb3dcc4fdfdd766d56635eb6659e6350bebd2a73e5de29ba26dfdf4ad057d8e900b8a6f2da5a9d4a552974a5d2a75a9dc43d41ea2f610b587a83fd9d443f0887eadd5665b8d6aabfdcdd65a5d98565a69a533f7bb956e8f3da501758f79cdb2a5d8df3c1ef18678dd02eaeeeeeeeeeeeeeece1ec76be8abefefc5e9757ee32a87f117fbdd859265aeae1facbae45b0df9dd7ce214f99d0cb3af9c102c2dc709f1730170992504ebdef4c757fbaa7d3da155492fd6f1e588f0233cb2bfc0708ae655edb5b99228899aab4933597367f25c9a67997ff69d7d67fd997fb55fdf7ec777a9bdfd7e10565d6666d064176279cb726e6cd799a9642a994ba692a9642afdc51739274b8c41be1df2d7b0fe4c05e6dbab26b6147f0d7bfb28b61afed7f6d9f5429fa65fc2b96af9d4bcf002977df6d6e35b79c86b3f4748a83ac8b1c650180a4335aa513da23fa1f07d773b85c8ed3b573ca27fbd9fd86ab477c8fb8778774f1eb0e9023ea28f4ae2d2561192d0844b634a0a97feb66ddbb66ddbb66ddbb66ddb5f2727db0ea32b61faa3215ee0baa8c3a4b8139d109f104f78624fabc42630897e54824fe8479f46b56ea0c0b1a3bf50966137580d4683cd6030184c9622cbb20c83b9f4b19b13595fdb76a33feae1d0bc306b718b5bd47ee86fe9632f5dea778f47f44013c74dd5c647f4bfff6ac311c185cdf2dde9d8c1dd90df1eeb78d42b5feb78702588977e68ab917d374b97b47eca973e8a2d25fbfe0e6df8d7ca7173e5306012fdadf317f0097dacc3b1a372dfa836ad121eb6e384e05887492f302aaf719b2ecdff72fea603f1648af06944e4e997f0897bfa1c9f427e6370a228c6e054a1748546d0f694664fa9945b0d2aa97df956524a5111942ad59431312a2b11943232726686a5258272b56ae911414943d3c34704258be5c32582b2a6c6251541696393021241797303e425821247e6e4c0a822287574543111943b3b313211943c3c323311943d3d33ab084a1f9fd59d3f3f34ac08ca564b06a9b189e044a16c6e223855546eee7c0c27827365aeccc7e126af95e3fe7322385972eefc4be5a6abc547f32fd575a9aed0cb1bca24081894aad387bc04163eddf0f32f0f302863627cc849b856f864faf9d706189432a50ff908970a9f6cf8f957100cca991a3ee422dc70a2f8340050ae04f0210f21089f68d802839206e5434ea2c5a7132c30285901f8907df0c3275215189435303e641ef8f069862930286d00f061017af8345a824179f37d08f2f049062730287162f8d0b4c3a7174a3028735c7c38001d3ec1a00406a58ef7e1490e9f4e208141b913ce80c32713466050f28432dcf0a984080cca9e10061b3e91048141e9c3e2c316357c1af90183f2271489f48041d90a51d0f089d301833288e84392159f427efec4018313154fa68a0f43c0a932c327506865c0e05c8927730b7d48f994c5c400c5cf9f47303859e2c9d5c2852ef542deb96022c87c82c34f1cbc9095b814e6ce8cbee4538b9b2640ff87a3df72e74b98084a803e0e5ed8f3c1ae07550423b0844bffe4853dff860e0231117c40122efd183177bea973804c041b40e7dbd0316026820b28c2a55f8337804e014ca23c0880862e013411dc21894b1f85e6ce3fe910c08a200d1f5cfa01f0c29e4fea0e5013c14b1f46cd9d3f4337c3268232e803c0e6ce1f7538dc44f006fadfcd9d2f431703278236982efd1870eefc175d0d3911a481be8b1c149d0892e87b5e088349f44d741f93e897742e48ba1fe94c762238e289e08b9e08763e115cc127f4e9773b325cfacf03c3a5dfa2e74efa2c7c425d89fc89608a56044df00915e1131ac18dfe8a1f1497be498b84be0a94569944e94f9508627cb242eda59f42857ec85ba15fe2b1f007765eeec965d60762ae951a371456ab5e79bde96f7e386fe3cfb203df77a1149c88ebf0a8096c6a1ec000834844427243d7b137ec557dd9d1212b4c7ff345947a953f86162e741d5529bc5a6e0b9f34e799395d02b5c95b7c349f13f9d00d57d3325bbc725c28c4e273bfcb2c16d6b5dccc51824220ec4f55fc19a40bd3c64dae337d66ab7d7c34bfbe7c7da92fae535fa4eb903c751dfab2be90d8f4fc91f91b8f4b7fd373f0687eb7788bb78520380f8ce0ce5fed60d27c6fb100cdcf8462b8e80285123c08425c17ac87c37231e0ac2a4786c5e2e3bab8ccfac0cfad2feb4b8e21e8911f00724b3413db0ea08fb972fa9b97ca6e1b8d2a299fb09f3f6bc0a7faf3a316d8445bf10a1c7d225871e2c9fcdad2226875a03571dadab7dbc6837db77f5deed726f2a77fc9b897f25dfaf19a6478263ebc662e9a3baf9a3baf1b7a42be9522493b91fcfa54fe775dfa894e87763dad26bcb072252423f4e55f14bb5421e8016d29f569dc78a84f5fdae07e47bca294ef826acb4db52b4e0463a875e7a48f739f61bc5861623b8161d863d8d7a5408930ae4beb426ed43a90d66d5aa7699dd5ba4ceb30adab5a47b5eed2ba19a3757e6f685d6b5dcc506ae862402044b9315e1c66cfb726382438befe5fc22779baee7c136c8a3a3156ee9c73cef918cffc49bad332897a61166fc83ef371f069a54b1c7de0bc4d88357d421872459cf5a5aabac4d33dce7a3294843466196e6569bb907eb673a537c36fb8e0eed585dcb8e5d057ba3029fb907b75a016e85edd76b3ddabd354dabd3aeb2cf65e5dc693ddabc368b07b75b55334c8853363e6bd3a195b9894f9bdc1a4ec673402fc5e2e98943dedfa5e55a7bf49431b0dee080ec78e0bf049fbf918e09309d8e42b1f91804bf4e7cf9608fac431c26d5c70e7fc7167cb9dd9d357b1a5d0cf689665580edb89ecd7f79dfea664e1e92ff49de93f1b8ee8a3beccaf5c687ae14b2ffce4dba912d978905fb96d07f9558aa4b7f4175d5c58661fb2d1c8bc1dfdd90fb30ec70b2b7021fb5cdf69d3fdf9aec332e343a952800f3d08013ef41f19f37a53f5cd007df805f04204f0d8657875fef6e13555fd855cc089ecbb40c6cb4e645f7b69ffbbf52ffb5d1dd7e7c071b79753e526191e8e1ecdaf5c28c40b439a3755f2ed7fcc24e98554cb4279753be4bd58c3d189b21c44d97ff70a2fefbbf286ec23b71cf146172605315034e80b2896765f7fadb10e8e420144e34a7850b4809355637a4db9447d8ac2055c285d7e481ff3eaf3c52a87d4ab0e85ecb16951b0a0f64f2f7bbe3686586dca452984423060b9d857299f5d9cc801bbd0413e0a205ca8695c49046b3ce954d4bfb0e79b6159f5aa27fb6317720a48d00009249040820648d04046e6081be2c17cbed1df8c2c3e3029461ffa9b1d57fa9b99dfac25a84d9c8f26c735c77dcd04e6193e9a18d7c3d5b1554c8ae91b1c7aedd42a5bd9df5f6b2876710831087c32bfc6e6cab4c0859115591e594308c24d8f624fdcc9e1b898c4ec94eafbe7b85adddda5b7525b60d3093e611f726fbf729f228588c8f521863d932eccab513d69bf5e7f5d97bbd3ebe5f5d28e8cc456a954f6bd97b89eea64d76357ebecf060d765bdd512d572a5654b4b1f3bfd6d2dd9a23e950bfdd48921082eec94fdd4fc5a398e15f28f2ccb711c77594c9a7eeda6838ddadfb4259a8e0c8ecae62515a34dd187c7968e76d3e296c3e5d970567f93c63dd1d539b655d37ad775750f1943e5ce1f164b5eef77beaf54fe03baea123f75954ae585cce343ec51b27a7bc2f6cd9d7dd3df6c55c7a08fb071ce3b1ef562cfb9c97bf468be4b05c2c1c4cc1d6f71165f699efe7a7a14c156824f42264d60d2fc9099b0b234355c49ab425fad7a74309d6031463f8588b3aeeee2b9d550c974b3264eecd1dfb423bcd518ddceb126b4ded974a8f7f25a8749dcbee2d3c5f2eac3796b96a0dc7c35775a1431db0ea3db39fdf9aa9df39c864993155bee8575a46b55c7c8d45c9e0493e6c71ff049b4e9192ce7ce567136aedf115f7c819b345d724f649f8aacd73a64c75c5eab220befb042dec122cb27b27aa8542a12cd693822b830b2748860638deb252bd6441b3ea55c4d508241ff39d23adc3b6ab68c4e6589a2b9f933dcd4aad0a622e1489ee4493e7c12aef3557f21ffe20bdc9cd7d70ff16cd8df115da4c41399f892e7fe5a5d1299f052be5be2798fa7433a8df57c3542013e99cf75377c60d2fc906ee2e8b18252b5a60389f1d53525c709d23cfbf2dacc9b0093e6471a3e615e0e95654aa40fb0846517ddeef49b7efbb5dd75263fa9ccb0ab76bff868ce4965865db5bdfd57e8a0bfe22d5f49af8b4ad76ad77f752c1eebaecf3aec6d97c9ae458e1f5057fe8a2ebe78addc8ba86bc1a25f725e7ef824faf98d053efdcfa6e9da339386e3228dfbc732f930d2acf0c2ef565117ef9bbcb6d5d8526a15d5152bde720b165dbba47a34dfbd5ff84447262b40ed0ea2bf225eeffa8aba58d3df7c15f353e0f4371f45174f74d144174bbac8d3c59efee68fccd88a411ad52abdd22cddd2dda3ebae6b9706b2e5e0977a9126b266c0b9ab384b97fc67fce9b7fbbb43778eee7cca03cb7e892bb68fa02f5da214db6ad0efeef90dd325159f3885368d2b7336fdfeb8a5f4d3be28bd4cfa0417625431aa18e5b70c85fca57fa1d634e96911052db7dfc62c70404c159322125cc4a1e3a34728b2c4557d295daa1d3aae980b74497479574e7fdf8b94524a79a9dc519a6d70ae23a82ed5150336d117ff92f04560fa7225f172f1e0bac1bd5422bf64ba54dd736f91524a39752e29a5940083526297630f8303a83add1013c32453b261a68601ac0440030dca092b00a41a1833d8006074f3c98013c30b18fec49bf8929319648021083f3a20f9911779ae850805494806097914e8e74f196c2b213605e542402b1b06a4be702120507d01ad00d956b09595f997cea5a373e9e87caecd441cf0e96ae9909f51357f479b289655804ffc3918a43ff1643ef8f352a954176d6db475a9362ffc288e9b640bfd89a0848927f36bcd3c9c3b617eee7cfa32bfff5088e328ad95fb5c98541c1f4dac66219e542e542e30571c37d1560ba755b310c1da053e99df853b1ff3b230bf7a0c39f564301486c256b015aca505ebd103f3e1037371c15229ec057bc1606030950a8b89c16464b09978326756d80aa3c158180babb109b9c17072301bec269eccc92086134f2683584e3c99978a5eab3b5977be0418bc607ae013f8f423c014027cbae1e93f804119e3003e999e7e039832804f363cfd0530286714c0a701bc5c25804f343cfd1d18943408e0d3c9d3a7c1a0641d804fa4a77f19943533f834c3d397c1a0b4c1814fa3a77f0383f226069f6478fa3630ad814f2f9e3e0d287c8281c4a0d4a12306e50e7dc1a0e4a11d83b207069f4e3cfd8f4f269ebe0b3e953cfde713c90a06a50f05e50f35c1a06c05972ea864ac16864d102a458401200800031500003014088544a2e178208b135aa90714000d7cae5064529b8ab42487711032c6184300000000020000000040a68a400001f59b3462b4ac8652e3fcc8f5bcb07a8847bb60edc53e5f0a49c3820b8007c2c50a0e499d1a4022d8e5b8ee225936d5e22f13b35138385371f808c983825881a06e94d465d369fc2c60ea455a19748b816346f85d2be6f7622dc6cb8ee49a6d338881bf30bbaf1ead15960d4ef6a912472b3b053c4954ed6f90d26bb5dd2650d9644381eb1563469b36920387b8bd9dd0d295eeb3c4700ea7440e92eb7ed83ddafbb8f784e441670a60eadff00ad045ba8b1c83f53004bf0fd68bfac08737bb45b929f6a9845f1c19ff8c88c61710f84dad82c7fd2dbe3079cbd69aa05f505fe57b7920f01c29a14dda0d901ecefd241441fbb99596df3981dce50ced4516e00533e552351bb4b2bfc8371daf80f98edf21d116a1a787c8b1df0fac734f07bca6d2ce4b9c15c39cf3317bececda657c8ec8ac434e99eb48c9b3a7aa6fc3ef230e6fa4fb8a51a1a11ebb30bed043c30ead12606c95e258fe9fdbc1aee992ea27171fa7fd7d1f0cf766c93807ca2e2b453473326670754fb1f765e6bcd42c1c020e8419d2321a6b77b2f559b6cbd419f99bc08ac2cb6d682e273efaea98b202e2bf316682da73e18663dee786f76eca7d1a70db119b6c37767a1561dab5748b86f620aa3752b152c38be66922cdaf1b810de264c4c19a932138ed28027cbd081f6fc137ab18afef0a25a831a5887a4072b4557d4f075c3ba49c2029e6c9832455330f0096ad1514025cfd74fad4f91d217022637f28febe73578512caeb6978a07f6d64a1f59e25de597a11c25094d333b11125280716d75960857c6721f52a415ef5e992c2d1227ad0b99c507ec9b59bd676c26c60469765d2654bac92880a9283a57792d2551f55ffb170389189c55df062dbd4ae03e836b435cd8721ac48d15942d43b402e22460aad24f53536a4a9eb99ca8f9ac0bd507d1ab5a61ca9e9e3500d5a4c4cc8fe0d4dae31823d07ae6a2f4a30813f70677e2f1a13d9fff5c4420f49c01c9599b8a3f57e8484b1e3033ed9453445e4e745591871b0ad24ae239185fb334a2b5560fe27f49f2881de7d062c97260001bbdb48bc831fb07b78ab056388a1cd7134ed69f1daa58a7d3894444354694611ad23790e07c3d5e6ea64c23abbeb2c6179c61664a60827681915afae4bdd9513c7522e8d3a1fb64f7c1909b0d8c3fd86a20597422b146c526efd6e571dd6a50eaa9330461d3cf94ab35cac071be370c816cce2aa5f5d98d782e98243cf9daa2eb1351ef392b86722de3b850baecdc004d4f5dba54161ddb9191d4217b550dd7baad86bdcdcc05403f7c21841f41ed5fa002ebb4246b537e98472837901c743183cd5ff3f0d18a5124d8344839dd242d1dfef044fd6ebe0b967e8494e68cf75a57f0569dcc1954f52a9ed88c304359e2e31db129f02de3f54355c45a665658fb8406b04b8ec8edec305a46e5618c91527913cce8a8ef1b047b14862552c294ae3a2ef93af67b1f37774d1a91d55f6800d2060ef92afa08e754c915e90ec78859ebc6b90e2d1a359b1b8caa07d7bb871a86a44006437895c10804b0f0d3c3b048ceee0d0f09b618666efea9249b0440305d1a3d1a8f7f7005d40f6c202b489cdf033bb0e95755d226382c382935864af01d7b13b05b1e08ff00ba461bdf18f507eb6e8876856b084afbcabf2e85a3a0f337e65691911c8d8ab2d8670e213c37b8af5c9b4930d7c77f38ca41098b636f612d3ec540fdfd656595d7a67ceefc6f68cc125c94b207eff6cc31bd381917be5565cdecd21f298f4ba3b97cd27d174e3a7910c1472fb3aff40de6921bce99752fcaa4bda9a3a979bfbc0c32ce14481e30b78de05580435e07020276890c5b4e552900cf578fbcf081bcc5030e54f1139482de57e6b090a048c6141654d9d14108037adf9a8b6254a54361ce5ae768934a01c47d45dac0ea6486e7d2e2d98764fd8036a0fa7cd44aa31943bca38b3b2ac835dd94bc8735adbc8c20ee39a95231a479309755832af0e5936fc599bb93222bfdd62e20ea270cd26c34fe70839e6388f1c5b49483621c0c19715a8ba2679d68f9fbabbb3d64b7e06ae7336493cfa9d08f389cbb42975151cba157008efb3bca0a98fe5815bb1bdfbc788f041173738053d8c431c82a59883f53640146f18192bf9486a8a0ce4b874bcd7381d468364d1a4a169bcf606231f44ead2e37ce9121936dfe564c1a95de792bd31b1c0b0e020e06e06cf9e11915dd206e75ecbd46a804e00de2d6dadf20349b189700b162631d5e326a4151af74571a8f4e203a495c25556866c668685f2482ace70b18aabd77e51f2024f8e90d5e7a83ab6f0ec8b8d50da149378c88308a027b88dc2cee6a88fa417d54b6dca4600e97325c1cf32e321e72790287b19bcc809465986d4f84189396fb45ec2ee162b9f8ff2fc76c904a23ac48033b1f32d260efc46b211780a9a68689316d0562105019b18f723c9403adf5428600be91e724743460bd6e8603f1954e3988de84ecd0dd13eb722391aab42c8233e0f88db04502888c81202a2dac25fecce209660cb46d4ba251769b10896d7207e1f00e71382e4df820f291ead873bea196943250c9399c9c25f8ec41349ef08d987a5b6742c087f8434e2d50db241a4b48a99bb73c7574f660bfa50f10adb1e255edd670adea918a194baefca5c8e5d9d662813d036eb0643ddf0b852ce5e936d9a94d87961d5bf2b32904e86a0f0ce74e1327d693e03e537d244c032e7ca82cdc60d1b8408bb28a88b2a33fb0f854582328bb5ee44ff0b7b125da07158c601722c79a2516eaf21d3c07977b9f56b1ea0d2203ed9c9d0e8fd48799101ef7e202c29b955119084f52c20d9d3588ca111510f7e215ed75a1b124c817dac15cc8a32c5f4806567d0847f324bcb78a1aa905d167405c785a7ff50963c991cb14b210e7e371fb31cf1e31cdef6f843a188b00d84cb2a5702cd21172b77a13308b148257518a4a46803b80e27b20d9a9f3222f5e34a82d3d38836123e7d37e55b561a06f40ed21b96f29eac530ce4b05ddba8ceb475983753efc4665babf94d7bf7fa6c600d68476009c2d64068ac10d4489fda67c0f0133630644ec652e3c2698c7c9817cc8bcafbc6bc45e6ff05967ac0918410bd13d3785e3fa97230e4b3f4aa0689e35739dcdaa73923d9917c16f4e0e2e8f8e683b6720f717d69f47e6f45c3227e10560c7dae53000ac299d42eb614332893a118da19ae4fc8ea673b262ae24c0aedeebd45622ca17a109d923e36c37dd5385e4ace98dc641fbf5e3badc9facec9d32e1e52555b37317b5c12c8dd75e0e3e21714a7f9372a07a7e0bc7343de9881c0786f8e69e1ad7341140783126b9284baf620ef2ae2671a0a526da4dddf780d293c5d9b248ab4dc335d582205b58955f4e6d3316b8f479bcc2b64b43a0f07577ad22ead344589873060d97ce670e37340184048214280e5922a349065b83a8e241646b21418b644995df88b94425d582d4e90e6135d83ae9dd0360328847e6998e077cc726e22094a3595c7e96a931c9764e89c72243d2aab9f015c3b40c268710979615d746b828e7807c2695a977983daaa67eb063836c14514f5f6e1ce6982c050d5f601379cd640d27067a612b234ec0fa27a87d0140a1a90b632ae1a4bc71da0f2a8b34066518f22757560e3d08ed180473226a003f9a5b36b34c073056f517dce3a31af8ad1b2bc04c0aafb685ee20117e9d353dfbfa4708700a22bf7ff0378c0941f4b5481e579122a135e8a08dcd3a5f188d7a4a8afcfc7c6c9762c4c95831c44936fa1698c51e588ccb3c40048894ff32f1648b0eed65b1b503aa1ac924b315fc2350e374fa41da2f5a76f0550f8b82e6d7f267b62086a323c6002eedeb7f7c84fa06f8a65061e005f0fc3a22fb289b12417e369134024cd1206c5470d94cd061a70713f4392ee35f1845ccdf059f8f4fb301416235065d08ed4a4949415083075a0a6099b339482e6b46b63612be67fc80a613a9649c50a90b01508ccfa537cefb7fa96a7109f824020b1c9cc72a59c4f5ba6bddee11ac500f8d12da9bb4287b33dcb60eaf16f912a1ddb3af4e96b508a4376e08ae799624069ad6ea8fab1c7beee9967dcd708ac65d1d8af82a0e362a64ac881cdf49bd53e0edfa96015a6a50296130e863e715f934f269a3e621aaac055d352d52c81336a62e740ba55901e723ed7fd35913ec62959723284cddce4b29fa3e4d75bef0c2e7418f7094902a1f9e51b6280b94f235a3a34a58e8a080dd8bdbfcc5c63417f5ce74815b1f574cf7d3d34f99ddfadaa392fdf2fe9a375c9ae9ae1eac12f83379564c698455d145acd7739fbfc17417847fb5232af9706c64e9e2de11a5b868ba8f7ee9492721d8b2cb4054a085d0859b6db45e2328d4cb2f034770a3db5b197d0d403b8cbb740aa54cc872a68ef8de8cca1437f3e8743ed916199e3a297a5685c8c5aa0a7d11af229f78ba0710b42d32be1954516e14ee71572c8a968f58831a713eb1c77daa8edac538f2b6a40a5ac3d199f1130b22e01accaec2865a7d2d0b24961a51d2e2fa26f7eaace093208cdb8e73d1adc82bfecdc1be59bec48dfadf98045679a3bc2d86a624a4b24cab8ef7280ce03c66feee8fddac40af9a5d8a6b9d0ebe70e06b9066874ab9d9caa6abaec5cce3350ddc55873dfadaf6de82f34b78f87205016d2736e84ac712ddef1cdc1d34d76c9f8fc9d4fa327364ed7bcbcc47decbc7ef3779d3f47c24bae71791ef7b16b7dfa779b6c9ce87dd903c3a0fa137079edf0ca472f5b4eaafd8094b96abf0cecf76e5a399899730dd8ffda5c7198317719d8efddb4f21918f598b9bc5b7f773a813f163fcb825372ff28c2ef337fe68513df7f1d007ed2811dd2c1e5156a5ef5d2557d2fc655faf406f3e3a9cb35c743b3e099decf5d84537d6fc6af35006ad381b9e9a0e72b6ca0eadd13fb1e1941277da4012e303fc5f5307141f4d700d8b90edc3a01351e17cc16fb9aee20b1110ec3e7f1db662f60eac9c47e8be785fb30147d519c05f3c17596e3f15da266c640f6ca2e7e90dbcca06b370a7eadbb7fc92ad360b2cd1183a1035d1d9a08d83cdddebadbdf25f3a8c5d7e423c4cc8a9b94cba56c63e880b924baec9e5e10ab4a54dd94228307f52d23184107e11a451b902645478358281659fa16d45f8f1766638b0904539d3e8e410ad2aa144a7daffb6834b34db5c8efc498e1be23386101798ea0b788c1d163fb5e5b395b10a50e5814cc504d6d5bd05a502c869c6b5b77d6544891d9833d7a40a335b9771243ac20ade964db40854ab9cd3e97caae10d13b8219ef09bc5c17d34d6ef682a24f7bb9dc63a0c4c7fe48b864f807fceac55d2f4e619a2021cc356f8b8338b1d14f30d4672d1d8ef4f518fb271c8ceedc95714c6fdc94b5e744cfe5e67fb3826b01edeafb6928e4ae14985dea7df20d0483c80b2bd7604875d9d9096bbf353a72e47f29c054bfd31f651ab66ae8b468680c9a95a1e17c8d9d78e7a9a0ab53d3254b591f585b25270af0a940cb07cbc8159a112aa5411be4704d423821761f0a650a3dcd5ac0cc1f8306c018795ceb9f3948bfd5398c3438de4d9aa5fd8f4ee5a24a60cdc8517d2aaac2225068853c80c8c044c608e09569408bd250d62ed48e9879b107d42e14262596e8429eaedeb12efc2c5551e202675262092ee469a9239408a87d88b1ec7ebfecc2dc4d42cb855c42b4978973840917816287629bc4e220878d76d32086a557054f3431a52d4010b773a0651a44f2fcec94904ee35dcd8486c7d558d6920b4f8c2aff66caa1d321227412090afb914ffe1339f13f988c089b1c163093e2bb70c15a43157f4fa293d480c5e0ae9aa8f893da8cd9719d33ed466bd3c8ba9c33a4780b201cd369ec46b8fc0ca5d739c2bc021c1cdbc974d52f4045e99d0f19dc8beba8d7029538e3f93e154b82f6d2e739d6ea63830a48f57c4bc53042bb48f71ce9f4774265a47cbee407f74223e43ebfd9c77ba4dc4fcce45f8378b3879efb9f35df44c85185319437c2ee0f9254fb1711803f25b5394f0b9827a0eaeb92ff20d06fa567db689887cc7761151876ace8d4197f5d536a3dbd1a5be3b5a04e7e2149e5855569ae55e6fd6813b0946d1c2d292aeb5508d58c1282af20092aaeb24c77211ec28d3cd30d2f7ec3893a41bdd24a13771c7ddba462321d97d24a56eda62b4dcc05efcb3a510c4e8452843bb36ef11aa178f2508cc6e66337d9adf9816ecb8e724b7ea6dbf363ba9539d3add09ee6e8ad164535aca60aec80417f25f170b908b53f331e7533db409fd986fac99e855dac66a269f2c62bdb4ea909c52c87a6c835016a4877914a08aaef374ee276f2646fe5e2c7cc14dc919eaf6e453b8605d929c729521320ee1d4587c1062616b47d5341d674f3e178458ec7160b87d9a72b25008036423834abb8f7ab1c3aa65396ae64cb10bfca7e4089bd43ee0fa64a4a6eff1cccfbdcc190fab52b4ec8110b409ee9deb5a6f55455258335258d8938a818603e67e8234d99ea5eb2b6f5d5292ff479627c8001f7a2b590ea233134cfa90a404611c81be74fc0205693f569a0175064040d004788dc5a5af4849c05a94f4e75da1dc6c58607f3838943aae5e8ef2770e44e00c32590daf9c1969505687fd289ed3f38f2379bb47919a551dd87dd4576596e53d1c4bb66924e7b2aa6bec81338934f2c12d3c594d4614e35ca70f80d95b52c51c228013681f98a016fb5d6b22488bf62fc5a2450a94d1e08146ce5e225039cdeafd2681e08fada07ea97b1a068986303701e3b31ca11475be6d3b395419d5be210d14d7441ca89f2334c97ac2acd063678a550e5220a760a167ffc53f1352634015aa4039cd00ce49cd69cdd3a5c1214ca786f71edaf3e9c4b5b9d294ee153446479330df3a8658e63603c15f6bb34740fd2b6a6a8425c998e7364e12539ada1c74ce574a3ec96505f416706eaae7df62a77d77598e62ea0495df3ad30f5152744ae18f0df61337e1468942c7774577ddaadb39353aa9b2ab0b28e79552032fea59d14bde7db32a30c0ef80d72afa50e8664098d7b507ebbae453942510fcd3bb9b6a35aa7d88dba0142032292995086f48924d7f0aeb337ea5d47e7038567cc98f017255cd74e1739f4b2f3899c4fc0275d002e9b95f6e1ad52c90c58d290c52c67fdadff216858b239d1b3b3320eb16a2262edf95e86abb0154976b3ff9abdd9952ffdc03093c3dcb28696ee2d04f4e812b42448497835f2f49b82b36de54418692835fc13348a87be3c3e5476526085862ba4de036185b78f781c652c1390b5626007b0b00ef6f31f8195141dcbb64bcedefd119dff30b20ef50f150b3af2dbcdd4da177a2704af1551428d06ff01e777ba047e994022487af0aaad4af9ca598647bef54dab95882154b7455b53983fc724e8d97265211e9a169533a59954ff81da62d972c3fbeb99ba3fb4efba34781ca177d394b23a3e6fb40021c581405b269714aceaa550351f6154f83d1bdbb12f0552e647022f39bc5b1416b460197af7a5d6b4c068d6e806ed8ef6c1e4a546c4db66377903b2d83f9ca14b6b82ee0f018798804c97689cdc0b06910639c7c987d4a9f0f5c23309b7c30e9880c0ae7a518336ee47ed3379b833b070001f05ffd4cc490f53b9900ea1fea860010fdb6217b73a8b835e962825820e0c964aa21a54d5649ec65a9cac01e298004a12f674a94181a5013090ab1251a893105e4f5423a49983e294b208d47e8d75818bdc4125600af08665e78f84b421b20492f714fa033a56a419b229311029221530cf91c7f5f49132058dae5e2587f326208621cffac9723c9f8cfd4d41369013ca0b38b4fda11575fed4d7da62589d97c5f7e5a11f4e9b4cc99da1f16bf2339d2e8106604f50000985f426d88209185e1cfbe8bc74259f4a334e638444bda1033aa24b4ff2731ea2b0cd82609808edb97d5b32384b514dc461eaba9f06e40433a29ec5b03f3ac8dad2d9da1dd544e1180cb73689ee3b4e7ae498511139fe5d5fe0c89ec269b11eebd62115da91e4535bf6180b6286cd397be8e2cdd27cbf32fdfd5c9d2a3a2419fcea5131aae7ce6d9bc60c84b7f2eca31bdbab1841a70240e5e0e4240f1611ef35fb98f5bc12b000402cdd77afb32fe3aa14ca51781b10b4623e12ad27fe8672114cc5b8fa3d845d3f9b6ad127b4d98034a12f6dd737abbfb123fd1da649025f399a890e03bb7011a9012130531ae63c0f4738448dae4c60884d9ea1ed323313ceb6afb86af530f310b532db377404abc56bc2199309704c5033c5ecd539f0ca2e59e24e601bf0f26649579712b78fdb1e155548f8644a30c98bd52266a58151174a299a4cf8a3cab9b0644f412567539cebc15227d06d522903d5512ee37951164f3894177b15943977f093c240d9930380a07c94a5217b39211fafc180d43e6135717e33cf4cbb9010ece93b516a45e7755e1bb1c7826781059326cde372b0ef7a5f2646e89f50fdc430ef48cd6df3857905c7cfac6bcdd10d5e2dcd872ae4dbb88259fdd118ffdb553c44f8e01ed313ada1c3d89c4f06c0e17cfe762ee4eeb25ad4e505b2b2585127e9160749640916f663e9efba1b1369b09350bd3f1cdf761259e2e71de0d0b01d82177fe98ce3238285f33cd7a7b0246c62aee7f9a970e45bc2783297b932d0b1c843935d30f3b0712e6059e190783bc3f7b37ef03cbd866f9e2823cef50ef9de369f63db2a01492f3c5100f520232cd30709a8d32e7318bf4106ece152353244ed5febca000fabadfcf9ba5a8a194add2f475065839c97e8459d833bed1e540182118bf30f1a4a972e2c4e03faaee6c6fb057cb25335fe858cac52f501866c68540d0243e626548507866c07287351f28c4818bcd3e0d537eb0fa45f46bf1f4c9326bd7f669dd563dc60f9aa1f4fb63491b02523b4636484cc0d9fa9114185540888415100f68e00c1d0de880392fa3af070b682e2ba39ac42b28620409650b4e0cc5665309b2c81286b68ca428070455f5440665d02bbcf808c89bd311bc8ee27d38767926d8ee98cb4d26c4ab86a5b375a163c9fdc9dc4ed6a4a592164573097948ec0dab02c88f08e1f184e301364e5ccdca30d82335e9efe726d74922495147435ff4911b625367143ac2f1cb1efeb285a7c15330001a20278a0498bb2e917491f0a4aa5fd848c77cbcb02b9b58864c94f5cdfc7931a3543144f33a67b3b50fce7b85f93292108e564cd644eae81d27cccfeda714452a4888df2ac7104784a89bc1e1076e1f796085be59d927244e021e4ae6977c9e5232cafb2fc12cecafa48646f112c1f51af6b0c9f4b94d76615fa01345a3d295c0216c49dd0f84e8501c36c05775c872aa86ce21d22935654d02731a18c61184e70136994e1fef478117948c4a444e3b5d64124c0cbadde00780cd47c0c4876f9e6e56e7bcdf126d5849b0e24a84968683959a4fbfd82001860232ca3c24933ee8e96635bc676648cddfdf2149d6e0183daa1dbfa1d13697656d4643735cfa80e24dbab2bfeff2ba02d391ffb179bc62d7362f2d6e8591e79ea79782dfd8d52be6bf646018fbdba2718e5b129c3cad2bd2261572db4326c5bf2d3b03a5060037cf8dd4f1d7343aa2821985c2918994f0e499b8c6d1c8c26601068252234af3f68a00056ef4dd5cb964103cf6e1c1ebc00d75d2d5da80ec4dedd00ab8ac1c345fcc3f64194679bc4508335e25748c5e00a2cc23617403c90061ba8603bfbb4fa24fd54e47dadd4b0762683a9cacca8ea6345f83d58e48ffedd44cc0903865d45261e18fc2e9e5740cf783b31215c791d6e1852fe18a4ef3e77ad8d160d11d34e863ab719c35e809d4e841451c6384f3918532340d302bf1f8e2460c0fb9308bb3d3547f24a1accd5bec6f9e302f31b5b89b0eebd75675113f714aeecbddf40a6024bbd440dc6213aa6654ac5e7a5d3e8ec37290ff3b81760b68ebd47ff946529553c0058dd205ac073ec4f447740e05699905c5e53cfa172830854e4dd726f335f548f835241cebf2d294bd51b5a997334ac499c09f1cdefdfb7a420fc80d455086862948f7d7913dbd2a1f85d2fbbcc192e28ec4365f6ba710a2aab0b8839296630117837fa4b0a0c3946a4bed77d8b4d392fdfb4f38a492361e869c43731ffca63d8a66cb67a77cdced97e1cfe6fddfcde0f7e8861d9d77335c868b338fc4e909166ecdd31782d44c1e01e8b96f91d9b3670cc91886dd1a85b3482e926ef62c720e41c60bb5ba2d886ad83e2010cf75446d01bed7375a5d101ef0a6893c43d13bac14e49af6f16864ed96c15d60e9fbc4b6a7c617721e6080e956cb2c03eb9925f05c18e848ebe9542d252fcd0654494bb77cef30ac96de163a03206693980da6a5cd19b16c7955b8f53024e71516ac84ead95677193279a400ff01db395cdb8e86179dc5d0c053e3fdaee3cd6d952b9c77615a9c7f2241b5177d8b41f98cb287401d89d1a7dcbc1e38033701b3a3098d416a19f144eec078dcfb24abceec279abb5672edad28dac1489d7c517e02ce16fa0ad66bb73b9412839299c5b6a917e83eb67a5eb2909619d4dffd12a802985a8535f9a40194f9e1b0d227900a4e8fca3394f67bd9fabb84ca79f358facfa6a373d3162e8f4de5e0239be8c92dde7377868e85514b85b98fe3df0fb6deda7d81a9db1f4a61d15cf086e60ab34bfcce8ad3db16ac5566900a0597f0353ff38d1426ce59b17c3634cd03d3f126f02de567874506d69347e3ef145184821db5032222b1f6260ba10e1bbc2c30b64fca3093ca824a0baeb9e5dc0658cc924f44fd03c3029532ce3d0b24d409e8d806d43d18a33fe0b7dd42b8ed63b56c964c320395a07efc729dbf7d1d01a62c00b9807de1f2d9559d240370b775511e54b7206335ef9826c6abd64a40be405838e36e8fc3627cea9844a53d59e5e6a98e645b225763736ee77ada3f7760b1c5975dbc170db2bf729bc7af7e64ff5f45c010c7f9f60afff8e98fbc7486f01738dc44cf5292918fd5e3ab30e7eda3c0f0a94b9c15f10e3c76e243e2cb80533c98e1eaa08145260f17b14a527af829bb5570c54c1b9c6551e50dc667912e79aa4fbd5664bbaf5471c416c05ac8f95d1674141b208dea8f08dfd2a45858c7759ee822581ec3201c5f462a9ffea639cb57f9a0309ba1498d6bbf407da9d0e51a0795e2daeba1f5e0ccb05ef6c6ad4a43dc13b9eae1e9372a17edf1503f798099815d544b5dcd5eb7d52aa43b56d8b94763fd3dcfff687f73001136daef79e07624f5ae970d15cfdad567a366c9d212e289ffb47d1fe4fc1042c2bb496531757242dac9f26a49c938be7ad538924764237649667ca2e4970857e119d1edcc30c545afc68569ee0f13dbc7b273e3971355994e7651d6103ce8a82d04d310f211ac8bde7a70326608f4fe6bf64af12acd726017077e740992f079fb10a57565a94c68daf4cb0c2471b79418967f9edba32f6f90f7d6c9f156091c86f391caffe48fb30fc94f009a24a28800d21811727c71e1a49e81c51736ecb0a3467cd88b890eb961dd4b61fa10a81ef128fe0bba8fde8f38d2c5ce0281ae52725b0dd7af1ab6d781651a53d7c76a5bd51ffa660a5461847d91e43cfc8f7b15b4ef87e51220e239784f59a66a40a7ddf6790e1438cf5c9970c5a2d4c8148d033a7596570e323ee5f2118eb7cef9767de0c97c806439f0b27f86c40c93a9e314ad622886e272e94d8aac492c2f45451a7948a195f114a2515285ea6bc521355a7b7dacf9ceee13febfaa6791bdf5bed312f98512064bca4d5882ce0fe321186d147046baebb8b681ce88bfdea5fae1f97a0a8a52a89961911fb1b32fce2da20bf132116ce94a13baa53a36e67453675690a8abf677d3a673f167146dba3608d098a6782c976d7cde960f85bfb2d6d424a0f1b5217ff00c3b0df34c0eb9d584dd4d8cb55ad99314a17e38ce0de9fefa1e123795fb9dc9b6cb38b42173b6ecf3faf1a7ad27ded034f4db019ce568f50104dfa91b1fdf8d0c0d33d38e3b2b9126bb3926cb5138867e968bdd56781c2416a3e373050473813b316a558e3d030540839289a079b2838e75021f55c6cd3eb12e3939320141ef08862b121b786ced419b5f18478e3937fee20b80d61310d9c59a7900d0df795c3ee6d7d84032aaad565b23e5f24d1408e7c1f905ceebef25dd1e57c9324f6dec9cd70bbd00de4da857a68b586d70e8658b025153071eecf3556d853280eb6ce7dafcb8c4ecdacfc1454195865a29239df383010050bf93382496b32b056b1381b61ce91bb899505a683a162d16b5bc075ac1cc26117df5e36180f4badd13e690925ad266614064ff82ac7267b5e78172ad95d884b3b43f0f538482fd220d82c988d0782a6f52af281d5c6a4cb069e7403be9a24961b5b14046493f5a9c59689f16a9326eb4a04e5e927135b6c57bb42f78ea48d60ff02b5f9fe629168fc32e75b60171490c503d0049995cc08a7bdb49fe7875f44c979000052ed034be234b50c2bf9214d1b2aab6743337eaad63e0644abead79f32552992ce1ee4cbf08e5e1a9973f6e63d9cb13fa3b9993b2519cd5d2f114984ce0a50e7600b7da3bb71c5d0421cecd97b757b29dcc05c587dfbef20a29c8d1f872443ffaab4453003e8779a4d2eb7567de9ed0fb3e35ddf4ade7dc7fd7a3144f772aa67e0946075d062239522dc48d2f78bb5e2529b89b82b1103dc0f68059f01050a5203450eca4f28438d677025cfe7eebb738f2bb5ee540d27f8ee9131e1bb5eab81c2c40dfff956c12146a17cfd16811615b7756eddf2b8c63feab5e98cc415ab855709517a1a02f5d484390a66c07b432b6b6008136cc8f9f92784f94d7681ab11e252a87f48e1e695268d29dc2e83dd96be251d9d37c0bf122422273dba3f636ec98e39e867bba6f3651bfebd88566a6923231cd04b6d726d117b5d8d9a3ff42c811a258c2b1828e51ddd0000c672d8d863a9e36b8a6f67ae64294bb4d0be45bc4e34ae32e2ede9aa138de3d04b456a075acf7a0242e8b854139c773f14002c408f0e74523be478191462024daef62529275335603c0a25248ef3a4414701003b28d3ff553eb48a3d7d70f1119946eca88c23aeadda4041a0548609b1c95c1fe1c92419a4312849dd2ad0c87c9343d258c8a05da3dfbb581861432ffa7bb830eb9a1f31c8e040faa529c1648fff7e8265f42232e5d09a89087919bd50a70124e5f1f8a91beb1167805b0c114a028586d37583341f552b229738e6bd61d01a9e1c5e7f8296d91a409336657b7f966be19ec1b5ffeb1cd8b2e82d38bd3710056e3e15f620e387bf24881e8228c4f5937f77488edd434c14ef9e638ea8ea577251c91a299f9a671e87c1840bdbe061d8a6113386d11f609d12099becf3cd7468a57c3f3c9aaefd89bda18f154a1505a5e94322da9bf06246b3aa520e8283c8acb6aed279a64f9d851aff9f38eae3c70a56186878ec8f0528fea18139df39b1e47232a888e442ba96b82649d039eacf9a18c0e91c342d0a7025ae01814013921f6c4011e77d82da667ca2d421f006a40b22af9b0fceaf80e5438cc3b9db6b8f2f040e96555576d075e682e0edebbe2e2720472b037218322778cad9b118c57da97ffaa5d67c0bb6e818e0ae6f7caa54526f083e2857facda550e1e5be11090f04f395fadc3c34388d2307bfcf7d1e2a6788be989e9c797790a630fd7c81c12e866438b582c4fd697a1c70dd1d034553e360653fa193ed37c2997bb507faabef24fbb085b27ee8c78d6a0560fdc39640405d0d84f11516a6f4127298fdc67801fd2ee54980344a569e54bdd4a64ba602de9029047f504fef9a38064d3b1cabba0fbc09911b44b87707e33d45352224c766e28f7d3aba000ffde8096290c0b402bbf5608b3b0eb8e0045178e26f43c954b67d0c326d90b4a7fdb1d0b10c80d01a072e24cd3f4420c6cba9c22e69d699267e229d55694b998a277a549305ee0f79ef0a7cb451161622b20635f41ee3f920c7b00b79519464dff1efa0c90eda86216078022e167b28d1bbd0e92407d0808aa3b949c762369179d78202ee07342704b54aaa88e7a67b30dddacd41d8ed29015189872a27dd2471f559ca28318b05145c92fb3964998be26895ff64fdec4254a3f56e9af9e81bdf4cd522760b71703d257c7a3fd43589005432460621adccab1b5cc15378750d3182c14f49c7e98d47ab3f589fdbe0686deb58222c0f43ab60b618c6343bc98dd1ee9a548a72afc8e33ccc0db5bba295071b01e31d90c2b811c6b77c95e90c071f822b8c9a1bc13acda8ecdc837a66385e722d1092b1e580efab718a76c884f924cdf8975a291b921fa0719716389029fbab90167333e45f076a6efd2fe5f6c093e8408540f8e357992308e0a4a510552501a464a41512400739139caac036d3295e41160dfc2ea5a1e204fc036eb26e08a1fa61e47aa3d127cb47ffa71544dc45c670ad1eabe0c3460aacd7839b6d884f5f387462124f84b5881a03742f918300b0226b33008ba79028708dde1a903e6ac11e0a084d557f1f29ab13ef10a8ff3b0ae45a09af8cb39ea2d1a4dfc8a773f675f97774de420316ce4121a671e000e8a288197f85a3aa02bb24f11ce1b666f2976212f6b33eefecc836c9dd84914dd4723685f5917c40d8fa661c9c64993d3d09170c159ffc9b4203fab16057b42ced8efd77122128a841c1182552c1d150aec2ab5a4eb9eb26af9f16e2709bc59c92e01be075884053338509e129fc52fbb79a8dfaf41e479f9f075e7eed03ca1f4b52005d26decfb8e781c4e35c1d71420c94f33294fe5009cde86f528766b892d5298a5532c36a337c75c7e52a82a655de3dace689b5d524b781c5aa4838259c2754703d61e0db55af7ef3af0efb821223478eb811a1e93a8533b97f01e8b0a734ff210d6334e7c048babde7690dd4017896ad60860f9aad4921e92aa6b1949699d720e2c31c279d0d00078e5c6acdd4b015849a7eeaf04c61bf7b74159a841ad83de158cea36558d704e27dd5a2eaedab6b4f06d48b5962d15a6d35957bdb12d64797989a297c98d87fb305e366a32cbde260fc25bdd0b1001669c431dc79b1b64d85aae18c8c0c00a129d1ea3af7184e1011b7f008611422ae02e33d6f7bf5ee1b48db11d8cfb11cce1274a110ab50d905cad765adfd53c6e714c8ec7df5d140d5bde67f3bf22475f22f4885d30795cb76081ba56301e26964c47437f5e5d22c2fda8aa9fed4486bc06b090611308a36be955ebc21ea467764971664d2c0f58dbe57d7c3029da644587d18e5f22d4a028407a82d233f471a9919dcc8ec01d17ea07fa714a35cc3e13dfb5d7b5e06456f6a58c120d28cc01c02c0e15aa2706cd2fc11932f74828f04d0f2bd9b5ae98a49daae4c6160ce32f951ec91dd852b730109b527eacddd61dc867a0bd84828f3239ed367d6fed1b296f3a2ba2748bea901c4788da4d62fffc834cfb198c3b9901b2450cc389e978928f18a47b2381398930361f61fe03a8bc8bd369463d52f1787e61e1e9c8ef33f1783d415d7591a6758c32fbdad0ad2ee1f11c1e680b9bd20397aed7582f653303f4b3cc4db460b67d3bbb339648396dde5d151b32f0d77d52b9c112223c811a73e0330aefe0fb079bef3986ed92f5bc2865996b3aa413034d83d22ce347d861fc062ca4eaf69fccf6c7e7837e6e055baacef20c220d27674f5923596067c5bcf94c5fcfe6e580d98eb44c4b9a82545d8939ba1b2b58b4b3c1cba8c50b36574c6a17604b409722ca95eba862cc85f9c1e96d4dc1dfab035e8f553bff82884ea3324866e4fc5651e4cbea197c7e074e618830f86219624367cffcca314c6f7c705bead0f5d361026b74a04b0b8cdf7de439bcaffa76e08808689ed9ccd039620127837311bf083eb36540d2e4d52f0f515c8b5d7ec2b39008a30295fad1d9a4a6700546480b4849f0662fb572c3e498c0fcc317b8ac9c5634934ff866d2cfb2dcbc28e6e89152335b3a7219b0c3b1a167ca23a1285da05739ba2c15119a24f7e7a57d0a18549f7b3449c07ee6467d431a8345b72c2a181600b26038b292e1bb2b425698e1024ce08f6c5cf7683dbf9c7a0abeec1b67b9f710804dc1fc09340605aeadd922b826e1ddfa3f6b215b62b42fd978c267909b54c9ea4c4e20c100d5d5a8bf528afea580564a3c6f8f90490ff5325c4fc7a69fbd127667f15ee4beea1d141991d887360f93e5405c6cc0768492508a3e5b4fd8e9066d8bd538076080c0b8f3049e1fa0f54b863105373593dd631dab73dd23f53fd843452a582704a87145882bc06f8a7dc6179fd155f8d08cb2061b93499ff6ae4fae8922b808ebfe24992b91e951088f783c3bf55a23f5c93d851ac98ef89d32f9c83170f487337f2cdd87eaadc40ee92796dfb40ed60d54feb39a055a5972af5bc5ac70b3b365e86746761e3628a0db1ae1f00c1cb68d64b6eb5a324d658767aa9f0d22ba12e8230b7caff6b5ff699b310fb5c57221d8179476f5a11af24701a9f5830d94af9b473c028ee3b258eba419657be0fbf0b05f24bb546e6d88fa7ab35e2f19a00576b84e23581130698d6c79dd8d8eb964ed08056096ff6339ecbbdb4d88a2c5afeca5ed2e374521d009feb9a26b183b3dd20d1eb367b789c3030781be94746b361490d0f9b2a151e9465fab438490c7c70d7fca468466cb660106ba912f8b29f1b8291f307c93f639915f82fa5e0fd835e33eac695bc1fcbb7a0b1d5bd61db783fbc3ac93d2a4311fb4ea6f662b8c767c08f4deac7c93e0c83a2255044fd512858c6207ea9c79162c5a0dcd0f3a8b0540a75e1c81a7d3e19108e14f42bbb9f4c5019934e2e0d7cd2b218c5774b1ea8f0ae15fa00e32f598183cad88a83565e34ba761e28c2db998c165e1a56e746158c1660a3fda1e2c30ac0f50749cf22795498bec3e5c98b484f2e0270185425f5b2e6465723d9e89b595050d77a38d5c18abc6f636620c2ed6eda9689dbeca1bde9b64e6f382994404f9763b5520c10116e79a1215d6fa48fa7fb6e574e0e89c7e5b90ec69e7249301961248205d6ad286a7932df08353b908fbfa4d051622da53b1971227a3b69500e1ab051c52a1efba56ec2d6206078ed7b18fbaeb3e351dae8d15f18073859b1d2588c8b89a2a00d915e2e04638ea711919a63dde3ee57bbcb982d42dbec2bf86695093c5031b552037815e4d9304b5b972b541524425eb1bb23d492583c22235849f03a95b088c26b8a3e28d8804aca256ceed66709bd7e1d7ab1aafd763c1bb72b9bf17040c60858d00f322192bf2e7bbd940a8618e7c7b21c14121fccf9467b88db634e5cc0c23fa347e7980ae4fe1bf8d57f4355c04fcf45679f5b7358602dbf9713b3d7021254558b64125504bc4860b9fde35569f2a4825ac33f3a044311a071534405e4f4cad8f5b0382bebdf9f110bf9acfa43d09c98727c8a7f4961086708d650e2f9bac8b304e833d19ee25f058c7f4cd331e178373a008938d5accf391c037dc60ee8ab56128a00c4f867624c19a6e8d39b78c734779e873cdd60ebc70118352cf9971659afe80c1dc93f810dde1fb71143ab1052626a5aa4218bc19bbb5b85315cc422783abc79f9cc74d0519769706b78b083fd09099657f40fd3d47cb2cdbea29f5e9996ddb460ef7a1b3f15bfb4b4b09efa3d3170bc4147f24f56e99c1e97a118e7b24f43e7fcf023bcf311e70def6c2df9e7ca839c14cbfd052971c03b707cd51a6160dbc7142a32a8d74afe15d9b854f2afb73ecf5da80273c562ea1333674afed96b5217b370e934f114d6197f419d774d3cefbdf99e178407ffdde7656af0d8d8d83e8f82e95f43da5f0d42cb7901caf156023dfbf922b6603fd904568ff90baffefcf1d52e48b9d035d160225a11977f28409759cf2f5d781890ac06baadb827d979479d38ce6ba377ac28a7bb1dad6dfb4d76c245006829da6f65294d1ecf5ce91d9eeae4b26e5ffeb1154f1d587040a7ee6eb0a318af01c18e72be1664ccfdd60cc6f7ac177b363e7a56d0fd76cd1973f0fadc2fffe06ca7e236bab6b26516f7dd812ce925099c522e13e8df5c0974173a2e2363024f0568a6fd531d9acdc28eaf2a208cd243825cdf37ed948fd2f54d9b293c795e42eb9f3314520dce7ecfac4f2d1e138dce41011eecfadfc3b0f4304ed09747002642f26b5a4d65c248c9e838a5c7fd8a4ba9148fce0707642cd7fb8d29bc57e65e43b9de43d0c19395c344675e9e9cebe39580602121a51598e939ef2d46d20bb530bf3eed61e0de5aa1a1fe5469d676449b99c9bf582ce0b5fdeed67b0e70e8af045422006a5af29d3d63e2f662ce62c6fe327dcfdde697fb1120b48a9f9f1479ab2d7f9dccef78275dd46158bec763b050e2df77a9f3e876801d98527bf01d460442d7125bf4d7533d1c91ac12f039ecd4bfcf167c20f49d4faaa3a8c43ca4de3fbc8675d3666005ba8b86e876393ffef9e86781777e122524e05d2cbc26f9b1044bda45954612fa39e2d20d7c9f5871394131099270ebff907bfd452697112c583505e9b58a3da9776d0eb6919604c5d54c6ca121d584956882f3ed7de0550c02dddeedbc8ae3e8fd78d717c5987ded067a157f7671e6f52accf37aff441d62ca64b4f2a422cbd1dfc3940964bb233abb976cd74bef80a4754b4e0b11820524d7d6b0a2ae0a89c6024d49cefbbd64fef916d780fef191887c7186fd37eed33a8fc0aa11102ae9a6faad9e1a93042f63cceb71a03b35babfc983351e6a1a338abc16ccbb45b6b98baf8f54c9ceffc4febffbfa02ba2aff3060a90d9db0db0f2b92ce2b8e499240028b214741d916d4bb7c2d59cb63715c58a274ddbb799807b66eabf30135911c312d42eee6e8f4ea085de9407e02677e58a2eaf1b79d877548fc80786302727e0755d1eb61dde4f73ab7bb4e045148cc0f797d0ac6386f02406269aa7800b15481580191f7b2fc32a00f82812fec0913aea630f1d6ac1778d63966e9607eba7cf0a9ccdecfa384db66635744a4fabc0532eb05747f0ea851ec19dad3d68b1a41bc7bfa288a7f83aba50ca8ad1742e19f4f38e68533c3f57203ba5e050894c1dc88202e2c6cebe027a742eabd9cb48e215243e3ef073012539355bd3c807102a1d68b6b1fbebb094ed259a85c50a67867bd72f48f2233a93fa96090db363f11b9cd92157d73a096a3af08ab6b23bbdf8287b679cbcfb95ea9ad7361922d3e82a38f25cbd8f4d3392fd1b04369e8f5ab16de243d747652f488ac6fba96d9640bc642e10a227d5659be29c4a8bc9f5c7fc87e332fad6adcc4f3ddace530053b4d0124f74dcf13f3434ae5740539cb168f6855be3389f49cc2d8fd0bb7788323a5464aba52590f7c42eb006b810870d8c61ad0dc76834c72f395f0153499163a0aa3d404691b47242d3464eeb444c00169a115e15d7173e9ca5fcfd5d85dbd51fe13d69ae32315ad74c99ab8c4081f8c3a1359f6cae575e861e133e5cf2978f7e35706f1ce3f52d7a9e13058d10e80f8eb0481aae4cc831f8e798fdf09ca039179a03c6609a42f950b30c36a6c33ca6bc72579c0ff6b1037181de611057f4f92a24065a8247ae8a4d556b4b156b11bfedcca9678fe609704afb5ba3043fe1f82275034ded1ea406ed9b9840fc9cd8445b9b84ef418b9c489710a06bacecaad75157930995671033adeb17b10f34701cc357bf0f923fa33419eac65914b029af31edcc436b19b5aab1eb7ed3378d012e829966047a604ed307553636e3c6ff501397052fb63b87fda38eaaa56efd4bc51e8c398740378f3c8e3629848eececc5d86fec4860fd1fa06674e57133e943ec2816a3b94caa941b39c0b9fd58ead19e90ebbcb33b0240759a123f156b3947786bdceecf617b40fcd05ed87e642fba0b9a17d682e683f3417da07cd0dad4353414f1bb5a3e746901e7ae91174438f1ec1f4d07323480fbdf408baa1478f607af0dca0a1123cbb042e1ec4aa0c58306011356399520a43381101abe8b275d1848ccf68fa4b8f04cf286d7b66bcc74300ff5feee2ebebe97ed6081080b4290c22140cdbb26ce05b53eea3e02f43b35eb8e25a2f25d0c7feb65b376a424256767777776f29a50c0e0c8f0cf00c5dd775df8ecd63679f3e959f0f7ff7f03fdd037758140281b6ed6e77dbb6ed6edbb65161248aa3938c3289383ac9bdcae54090ec1bb809035251d9fea208401dcb38d5e7b531674ae9635b5b55aa0629603614fe7e2e3a08c4e111ce2ca63df0937156f72c9b291b0c90ed833fdf748fcf3bdd63647776fcf146622802816ef81bdef0de7bc37b6fe8ea50480ad48c019eb3dec14ccd148b87d81db741ea1dfc9c31bc126683ba0462adc5c07b1ac4d8c7fdcb33a5a4b60d811cd93eeabdc2e7d5aa65fddbd2acc64d6e7e62972ea9a54b1f558b8faae5760a2880a3ed1b7792f124d9bb2dcba0e3ec8ddf3f4836e85e96618c3fd9bd7bcf8eb387b20e83de0981ef6559f6ddfbdcab3edd655d2ebb8374f6d13d461f95a8f1386e238e8464341a8d2c8c471f06c12c8350c0e0b7efc35897279e2e4f5cb83031292919471292d1481445a25008040ac3cf0704bf0f63cfebba7b396edb342dcb7489cd14ef8a41f2f173c600bdacb6e8e2a84b6be38f4e92e74c19e9d2dade43d913752825a441d5c69f730574dccdef9d8feae361ef2088f3778bffe1db6d1ac3f342f06c1fd488861f60f101067731cfabe159151592c4dd2d11510e83f4418585a5064b4d85c4cc79424968fc28bac947a38dcbe1bd9c610c7a163ebb756d74e76c7cfe9d657b1e496ecff3bc50bb7c3e0f1f843bec85afb171a6b231c61cfebce3ba8f76e16aecee73d7d8d98745ef424c72ccb2f133d1c882475d9a8c4621f12131248642212ec489a110172a09e9929267b9e4091c58d6d89e7792cfe4982db920291149426218fa4cf4378e44ba3cb9f13fba24555cb08020088220c8b17020c8b2b98fe358587a6ab0ec1f63f57aaa89b2ad6b1b87ddaba37bb7691949ea2087ec9981269024b975e8d0a1430749926413481d2828db13811e02912449923b3a48335455869d6a1aa69a99ae15a602a1523813b25bd1350ebcf890e4a176ec69da493c5d1241ed1f261ba41deb2e01321bf4eddd6fdef2ddc07f9bb675dfb5e35cc26cfc3101327bbbe75d3342665fef17bc964bed9f077ed33dc07fba07c97dd4adf9a81bec4834925118721cd77deb3e1cc7bde3ae759a7bf54bdb384f13715a5445d7b248eb340dd33cedf898097804627bb61d735de665dbb37a65382fcbcabaefc377b9c44a20216a77d347dda511f61e5cf9dee17fdc6f08823d7cd40dea92f3bcb7d42cd3e5762fb5f12dbe3a4d5ddd633bbdce26c6607c88f456a182b2a90ecb405d52cfcbb22ccb501220831d63c7c710b0afe3967d5dbfa8639c435b3e605f164a751320832755bb395332accbeb939adf2a6661370132d71e40cd14fbcf2d665d9ae634a62540e6f3d6ebca34917d7da364a8d8d74bbaad2cb3de52319417945d5570c58e28412482eaa71a4177e6655ee61d7c7710ccc0307b981dd41956c9ee5825f18f932ecb70f7a962159d0065f801bbfcfe82b23b14fcecdb89a05bd4f1d3fdd31dfcbcd3e1c31f2710d8f82504f6776a413d674aa867ca47970fd858b4213ed33dc483ba07e8d9451750f58ce3b068bbe8db261289bc6ffb3acff33ccff33cef58099ff761f6bad498b3729555f747973225ca037617621c865e187a21f68e310e3dd0bb871f4370becbd641b97c41d9dfb97fbe7fdf97bb0fb463f810fc07d4de565f635a607b2f4db6075610976cefb86ecf06ae313f6ff5bc7f9ac32a799f0099fd62091cee1200fb02e1618d3253ee53ee51608094b0708595b821a863149965193585d865492b4a88ac56263c09f7a287460f71df4744e0fd63dcdb978dde3dc87dddb97f5f1d1320b33d1004ef1d0487e0384efba0ee3da87b8cbe9b8d462248140a814020d0e77d200e2701c420f80d04f3e7436c0c6aefc3df49ee712e7d501cf801c1cf07043fc799c31cf70141acef516ac80f77b7a86f34a3288aa2aa768c5b347a7368572e75645a2e756cedd35a7bddaaae8e2fb371bf5d073e78307bd71dccaeabc33b7830fbd5b1b35b99213b9bf65ca65bdcd4d5312de99221b2ab5b129503bf3bbd38b0c62ce96ad9d531d6b8460e0f87d7555996696832535059a6715d3a36f942624a1ce1d28e81c48bdb43a287b00cfee60ec32ec238b1d3256604ddf81877b9cbddab477cecdd2f6649dd314bc28eb168491d764beab00e3b984bfcf90484e7de52b1cfdb004c5f2c973a1870df615c1eeb11dfd3a58e5d7aef7ae0cfdd1dfb86738e6949a510241e3c86186277de47bae3b8eed8e3380febd85d89b1303ca67b84e7740fd1b117b2f4f40bb943f157972fe416b98834554951bf0a85ba0e040275a0cf2fb6dbfb0561dd3d7cdf5d4dcb9abebfd8bdf7197631eccaf7f808780442fbd5e9d185be3b7da74b6d6bdf7a68bfbc4bfbf596aa71d7754dc7ee3ebb833e9f78cc964617813e9f0ee9f01ee4eeed72f94262cfbbf74b971a57af0e4c2bce7adc465d9c63da7b9efbd1bd75ef47f7fbbcf82ee04118f72ef8ddbf4c037738771bb7d19b43c592b66396b4dd6f96abdb73c41c241f7d5e1c237d4bdaee7dde7b2fd3c09aaae4f6ab37974be3befb46ef3db9d1f285dc9abe3eb10e3254434ca86c56798bb3ecda31ad759c7db736db3e6de97a1f16f77595e477a8a8dc50b149818a1148421f8944e0bdcc89f6d8a4b03d3629cc81e73a92d423a84f26ba4477e73eb9fc80405d07dee048b2db61f292efdcc9847bc98d1b9bfb80fee5b23ba841cf740fd08b0a68a4320a8d2251e861e861280c8561d89dfbc2ee5c280cbb2fe438925093903ccb24dc3dcff33caf3b368277bab98e3b3dc7795ec6df546e6cefd3134321389e440c85e4f60e8e748989205d8adf1cb9b9db1215bab1974b951d2537f1b0d7bd249b9ccba5ca2ef1bc538956b124159e1b2aa3ea21b159e1b6288cbb3eab7559d7c603b675ac3a776f7f5dd7cd7bd39a9eb69459daaa72f9805dcebfa0ec4a644f5be4568c2ec939aefbb77539742fe310e3448c71a2e8f87b670374b044d9de4511634f8f21ed02d2a0287739cbbe7ba107ecec56d6bd14b36e04fdd3e568037cf781b40b88bf1fb0f1cb2e2bbf87f48b10e04f67e1b31794fde91794bde930bc1f128e133f173fe24714c5ef58fc8e3fa2f87522be87453dc218636cc5476df382bacb25caeefee5f201fbc3077d7b25251b8bbc83f0cb707b22c6b3d6f0df411ff3aca4ee2db6cbf35fb61ee6f205657fce1dfc7c8e33dd9fcf3f9f0fcac6f883b23ff0fb502a8932751e80b27fd01d715b4c7918cfe0b1311e9bb395adaa63daec7ed9b8b7747963df5f3c2697edb74cf7aca50cc6d946f6eb74893c76396ff58bb86b95e12af5011522d4b0c4b6e8a2d041e241f8d9f1b96f3883e7b2976517c512f26209695d1bd9b1117477c7dfa7c7eef8de39caeb0e2660ebb6b7d42c97f81d3e971d67eb3280bb8731deb87ba64b1ebbccdea3fbd665225cbc672edfbbcf0bc4e7bdd3d97197e5323ba85fc4dddddbdee91edb41dd437cf622eeec5e2eb1e89c2e5fc42d66a228040279dee7f3f13e9fcfad8f777ceef3ead6c73bee3e1e177e7448c36739e4388ee33822d0cb808a9bb7d3a5ccf672c9e373f01e36668ebbf772f9227699b2e1fdb39ae3b8bc51d7e5fb759995a477c6f77969785a7bd786f77969602d56f2be88253c5ec4fd83aa589950ed748420848bca25d68e65bac4f2b531c4c6b0bcab6b19b3e183ead252b91c6297f33ea852883d2f00043b2ab10d3ae893e49ff01feede392e839ef7300a274497d031787cebdaf0ce71cf4650bb7c7a6aeef8d9f6502ebfcf27407c772e6f9fb701748b25f78d03ef9dcbe5109bbb7519901d6f63774f97a38def9b77accbb1d32e1ffee67dee21367ef9ddda5edd1a748bf772e91dd42f42803df19bee21bed33dc27b3ea8ed1d8b3a0b15405d424d5512a44fa2a94a7e3003b0e8f332e05e747379c4167da377f3f27671591671f72e1177ef8a5efd12719b6824d2a33a7a9647de31c61863ee1808f8747b9c777acfc39f0ae8ba73dfaca4c7c9741ff3b4a44e7f44d48d697cbaacfb3ba8cba510bb3b18f23ee6d288f9fdf3f0a18bb42d8d2f816cd1675d091d042f7eccd8f686d8225d769ff71ecadc97e70665223ec7f627cc3d7c50fba37fd08d5ffaa02c0ee3b754ec982eb7639cbb6ff3d2f87289f7777a6d7807f5ac2406027ff6ba78fff4c4dcaf575cc9eb83da9bc63e3166657b67543ddb87156b07031d2668749628c2cd973cea45b1f7d09e1dd32f96c0fa1708baabb7a2cd5ae9f2c6aeb4ebd9331c8429601f5ca15313862aaa8842a7c6091d1004f93eefa34b1e1b631fe82c4144670925746a94c0fabe640b50cc1bf6739ff0cc4c25624976881b30ddf3df4b6ef2b20e992f798eef263782946813fd4ad6cf7b23c8fcb7b72fcf4c4d24dc9c29d49747fa9892bbb8c9671ea92e62c471f2f9d3c988e3fbfce9fbfcf5181caa4f2577f198130d83733a798986c1a9c0d4c20b1431b58825d9979cfe44d7a961702e7d32b90b0d63a24b0e33fffdc3a17ace14b192f526ff5e561d264c3e5d8d5892b57f91049ea6a905d3d425db46b9ccde19da7c10dfe765806c8ae956b96b69f6613777e5920ed959f616abe52f538d7137828c3a06e77acc3c78121df31d7f94ed104bb217b315e550b6a06c1fe611c73cf8d3d439a74f636d8958923dcddaf6b4a5b1a470eb2ae04adb2076c6d26c7bdc86aa4528c355120c6096a5b04a5296a58bf8b64e5594a52c65295dc4ccb11886d93b03e3b692767b7196322e6f59cb19c5b04b0617d8562481865d622aa8ca5214a5a2b2e7c959ba6e591686a9582ab374696b316aaed85b165655a20c506100a1a0230512dc40ada51040e51a94de52f5d4cb9963a3be07f5961a7585d216b358aea1809315eaf6a230ae65ea124ebc00c62a59670e02ea8aa52cf5326ca9a13d75a400c39e56786009bb7c15836c4f1d1998c0b2488bdcf32873a5defae7a4288bacaf2a0aa70c37d67ad5a92ccca23249faaac27436ddf6563a9885555655d153d4d4918206d60da7fbc2ec69555dd7755dd7eb4beb194615015fff2ea95dbd1462dbefea982866935465e575faec9652aade19d9684f7755b32bcb30ba8fe8489103abdac0665d2fad0c03bbd5c37af5960aa3aed8c3108b80adbf14e2dfa4485114a5bf6e2d66b385516514b292d44119c0f630eacadcd4f38b1060eb9885d1b95267607aa4a7bbda540648ec32dcd4b6a7154a88619754855555455f9d65a5d2150b43ddf2431130cbae426c5a552cb5845b708502972c2b2ba50f3f20a0ae94550733a50f3edc3d756eb2608507ceb02b6acfb0cd1c4b5afb7aeda4d4debcc1f680ba9e02469994b53395b2a15240a54993a4ae00bbc516bbbed245502f62077a1fe216c04ca12a11760b2d5ceacc26c26eb1c5b6ba08ea3eb04d9a29d446b5ed69d05d7f548a4eaa23c26e4a9394dcf4f474c3d8f4b524739305165ad08089199cc10c267a3c4ba30e129cd00125f4000b5498e8c55902b120092a7c41a706375698e83f4b32334ea8294211aae083243860a29f28140bd4bbb0aaa2ae8752a847c4262eccaaa820505449e56432dcb003278ed00129a0e00607c8c115d8a001257ce0026ca07a50696ad801112e60821b50110294225021050dbc00851349503c30413db61bd8f557c1ae6f69c1ae3a239062d712141960724f1d119861837bea88806797302c9e0d6781e7e7a5438becea14914d5fd1eb52555bebb5519dbaadd556145559b494b9d4a72d59d78ecbd2364ed392a8fa69b50fbaab91adfa86bb30c591dd3dfbb6551bdfbb6f33639bb7e332608a7e9601533fd66589fdb0a34b0f7aec942404341b3bd565f61f76f7107ddbbcef3bed3eda36bcd163ecfdc39fdbbcdd112edcefa8eb8eb723f6107b7b29b3bb11ee7adcee176fd0f1e908c477ef73f7f87c6e4abfddec513a53c46f3797dbb77b15c4202de93d7e59c41033db87dd46c86c6e23e2881d6e2782ee70334266737ace14eff4e147211e39ddc3fbf74df7b8ef807cdf5bacc5eaf7e9f244f28fceeccfb95c0ab1e9bfec7d3e5dd299cf5b6a886da168712d82eeed9d2e77907cabbe1101b341c7eff2d5d53722ec0675bafabca0eef73d40fa07b5b77363f8113cf7eda07ff218fef34d9732339b2b22d42edd7fd81dd22e98666fba073ebd48d3998fceec7915d03ddb4172209b5eda46a7b7dfc8c6ee7dcbf5ee2039d6599e9b2497321b23c1269d019e3a4cdc6cfaed9b0dd0cc7adb2887ed6f9bf744725d02d9a7d706d77dcb25761ae10edb3e3fa29f7707896ea94c08d9f49e672f2603a6dbb5cfd8bc5c1a21b3bdd36f2479d25ce2bde1ad7b7870e34e92b73cbb1e3fa88fcd651bbfe30d67affc5e8e1f1ef1e743ff467cefe1b73c7e0e7efb16caa0aee332e8a1cc81b8c9755d071abf2dccf7a01c7ecc2350bee1fce8d3f8f13bc9472fbfe36f60fe3ee6d1e85bfe0ee6ede34966b46df7f32a80874def83eeed5c7eb17bd33f6ac663c0f4d3c2445c3f96e95b2cad33e2ceb64d5b9a27fbaaa725617b96408ec0af1a5bd2a43bacae47d44a99b04be86ceb1445a98b47773577adb7aa8d4a55d505a2ba547b5d1bf4565bd985be528aee1edc056c5f3f6badb55e20ec2bbae90e203c20e829752c6727ec99aedbe679ac0e20a3a9d162d33929a5681174d7db5bf77137952d55e91ea30b7d75222efd830232dbd24654f751ed4a1b51fdc7b72b6d04bd8fbb293da5abfe41c9b059b78ef9d896757a5d94954b6e539b7565cff48b25b0ae3467398d562cc4f0e3e485e376e6e3857be14010d4a58f17ee857be1c4c0f9a028ef85e3c00ff701c1f085f3c1ed1ff404148ed65d199bd162afca5d1590ee57b66c6c4360a54cb6d56b03bb362b6955201cb53460e8c2f0fb409c117473c71fb77197bbdc0764e37bdcb3ec1b975db86f9bb771d7e3405bf661f107124561d8755dd775dcafeed3751fd775180cdfc518366b69f47d843b0c7e944110c82e3f3cc30f0882a0475d177c39caeb5c2ebd1e6705ccd5b0d8455b121dfb8e858e61a5cf31afebae9ed57584b4834033e1c107111efc1c7c109f83327b06313af87a738c0e6a17451ed1c107213aa8e5f80e3e88efa056554760b1b5cd65fb751a9b3e624766973237ef6ef55116b3288ba14caa5852f530b35852f54f6eb1a41a9654559b96e388cc0c2943f34dcbb115d9d9793066646797d939c07f0fe23ba2676734b45bb7d7856a7a74c97e9d86cccd2cf2328be0ae6220e0f1c2468247182776df3b1af7f33411740b2f93a425e1cba8a8b0b058528b257514b3a46e0b8cb1a7699af234eddf69689f96d92dd5fbc723b9e6917857c3a34763f43410748b8df1e796b9d95dbe7143870e2164467a730c19b2bbb1c363f7795b6c7a677c1e8d4fcbdcc8dcececf3483a927bba07c935dd63348becec5d2eb17e994536c968248244a150d78140a06f1874f1edb24ebbf0858fbd80358d7bd761dc799fc6c96caf822ee06ff7d1e87477c17c3f9fcf6f9e4536fe46e14f8bcf4363a4067fc4d6cd51a2a7c51ff1738ce08fd8c31fb1f70dfc755dee8ccfe8d2fd731add3f321b7f1f10321beba03396b49da451a9616909a2e4e3edcd51a285b0a4eda3c62c69bb11bc7d94d9394a3e3e8892237bfb4883ba2e14eb9186d75d664f616f9f45b6a6b189656e66112bd65108b08b5e3b326c883da7d0858fe8f8d48771a20f8b7d7471036da00dc8b6e953e689dea67b800eea1edf331fd66e10f77d9f8bf1bdf75ed7f33ccff3ba70390cc330ac2b410f04ff018521d775a00ffbc1f8d8fbc5b0cec3304bc2b709ca6d1b091d62b3d7b0242cfb9675ddce0ec63c0ccb30ec0dc18e61ccc35e6800579f260cc382c9c57be765586693e9d2c2ac32c6c8c6be6159d6d3b3f5683d594f4ccec6362ddbd976b49d6cc7dab40c0b1bfb818b16c33364d21d5aea8f938d59b74e87ec8abd806ee1fa1cfbae6ddc3d7c2f5f0cbbbab4ae0dec9c11749f6a5812f71a9674dfedececec7043c421e0906ec8ed4c26bac3edba16ba03f7aee37e418c755e2e8fd8198fd8d925f6971edce7bea77b211b3b27829c087247f46c4c0439269870018100ef39999a1f279b3b6267df9747ec6c0cc48ef5cbc52f970ed91b1d8281c2f05eedf3d32ed53cedbe3bf7695ae76917fb68faf3e1388ee338ee780bdde9bedc3dfdbddd89a217885af7e570e66eafd7bdeaaeb754ee1bf79b77dcdfecfb1d70e7dbc13b17fc30f8613bb32ff86133ac60df7ff7d8dafc38d918dfaedb51c392b66ff71bddd9d9d9f9de6eed09db171ac025ddd9db2dbe2633b8744074ba85eeb0fdd29efde3645f3ae4881d3aa42744494cd09361984ccdb69e612473f664b347a666f61c615395c84206e2d043a087a1768ecb9bc8fb38ee1dd77ddf72296edad76dd7cee552a6a61bbf6b9a4c8d4ccdf6c4ef6e2f9bee21baf6327bb676ef765a240a81c210e30ffe60ac658caf7d30bed67d58d340ac4130cb42966559966599c779dcedecd95996f5cc9e212c69f6501e999ad9d3c30979a56159f6b22f0cc3b80cb3edc2485718865b871bae50b30b7a96bdfbe304bffb843bfb3ecc7bf72c04c25f86bd97302c5f363efef04158bf84fbbb071ea47bdce370e37be106c37df17d15861cc7715c96894459165d21dcdf0b08834840277909b1100bb17d5f862fe14bb87fd0264a984c4f2017a551b002f890080a3d6de37edb7407e238d0774d97a38dfb4d73b97ad373c36c8f03715cc88521f8f984c087c010180a85426028140a59c1868bcb1d01b6a5ebb2308c6299b5a3d22f228f17f1c69e9506a7c2863b8c133f60b783e4a37fdcc77d247a72df87bfaf0bbbd258b7b51930b9294b51229408b5d50f03db02a8537baae4bc51c9196e14cc8c431b3c5f7212a018b9abc0562a3d0241a3d0859318b929512c51f607d50a18694bf3f4183da617e95fc436514aab67db79c5ccf1e1c666c1727e285976a5d72d8c4e5149fb212749e059856d5f62bab28392b6f2c14cb1ffc555596cfb931c5c56463c2460149d6d6fdd1b186bac922a2ae2107039792e5dd1cc145b82ef03b8ac86bcac68b62d2b9b6d6fcbea66dbdb2aea0ad5554ea5634b9fdb57555737551475a56696b5a6b2b1254f85e44408f63e2160ef5f1070698b503ab604de9e2a62c4963e4a084553cdcc18d6114a0b6a8767db9e1c22436e2cb5a62519b1a5902c5f248461208ca725925d1ae4f6a0c01fbd53e95892fd72852b9e2a67a6d8bb1001c6ffb03be2a84cf8a7ca843fcdddfd01017baf726cf6fd00e36317c734613d62266c6d1c30803f4b530a4fe0a4400b1ef800034998ec2b9d5992c19931010f1786a4c10d4f30d9573bb3248383232100011aaa30c20ed060b2af8accd2bb1004235bf8608926ae30d92d1bd9dbb95c69cc8d5de6ea32965f2c81bf55aeb32e996d651fd5beba7281eeb00199b1691f267b882c0bc163c6b06ecbecdade5b2a14bbcc7659e578b9cab1246bafcb8051308cb24ecda0ee8cabbbc2ac2476c71b739f6e0f8e1372a0839a991993b737edceb04ee517dbca93fb1aa00323dfd4675042d892cab43826a91e0ad815b01776fd2cc38d6c5b6d76ad53f9646f168fcf0697554e95632df669a9ec62cf5be912ef1c6b1d072430caae3e314c97e2ae3e2d0a7d01197659ed543956cf9e381c81c9705534849dada3f55d7d7d58068c77bd59f14e4fcd958a9b2bdf4aa5477a994d757d0d4b6bea277e5eef9681baa434db894c9ba0359da642445bba21e28b64b56b58120e1cc0940eb10e307dc9d121541562d0060c0818636b6d0c9e50038f0931b8c02e555e90639d815e24d755d57b55d765d11d0315d8bf3ae10545a2a0020b8caaa7df6aae8100eab5565b2bd6b4d24a6ba5352aa539ac922a2c2bf514854121865d62bca91750d5adcab2aa5bd66559d6755596655d9655690ea34a95495f0f8311ecf2d8a6210649645ad089020448d0f6d479c10d7062a004156e7a3020545a2b374bb4eedcf860a721064b606fc8d0602b5bd6531a524b29a594a2b2486fada5284a4b2c0809ac83438424deb0e7ceb13580010eb4e00225b0c07690d302948aa23e61c0d893e238183036e5b81b0c1ce1b3a7ce4d08a278c2918a5254b5d4522855a6b71459034c8f4345ad60e0585a7e60a12215a948455a552c3fb4b0b484986b4180ce8d12b6151ec0c2a69810851672c212310c4bfebf440c43b1242c211982e96120845daaecfa1cdb82532df694d26a4f2badb4d28a27a95695d6a0156da94175f96d2b14985af181e507ab0303287689ab0736b04bbc6b13b69ecf92cecc994aba61664e92523d4ea0a05c16f501ca2e51393333334f9828943d3745b153a42894ba86dced120fa1261deae60593881a76d5639dea92ee58d5ceec12a4a5b6e72b2d55239654514b71afae4a634b1f0b35a2c242aad01b3b8ddcf474fbcae38d6fff72762e5b74c68d8fde1ddbb1f72f8b303854dff074904ec350d3d59886a1a64d634ba2e8cd4ca94e65fa829952c180521939c034d8d5ab1bada2b1a4194b3ad26349d579d8121d628485454585247fd1ceec89c3119c0cad160f5522e24f931860931b7c2960725baf287385deb2e8144d3064abdca6b04a0ab14d9405d4408058a9499568b1922e8c60fb32e4f01a703d5684ad72e2aea1c8012129cf9bdef4b6fdd640c0e4b6af55a556afb592954a09a8cf2ba81d07946c1e16f36302db6afabc9664cd6c7aef6e28117a5357ea10941d4ce90e2d326354db9ef25023b6746f6b9db968b6c5f44777c4fd39f8eb74a792f69ffc1d0c6d007000dfc77c9f8fc1bfbf5e521d9fb69f3c51da802f5d527b6686d2d87bfc1dfb9c47eeb11ee2dbf32ae049e057f23a0a0edbcb195bd2c5a3aef418312dc4be348f97bce7a5fac50b029e966491796b29e04aa39c2cd9978c56310e547fe151c93ab5f05229fd04ea4a4567e9fa0d4baab7c61b93fabc378204b9f4d455c094eea95eb014472dd120d50c0e9649ac0139a09bdc576555d7c4176959154a6587b04d94ba804a56d7b122ba6dbf55219654fd88191addb64e542da89969495504f688d5a292aa534144fb8816786eec170ab0f6ec5425b94f139647ab471cd8b7e7b8cee998ecd7f518edd8a7a95e7b44039a86c13969cfaa32071d830d8a3063c240f60a541b8a4cc78856d3569041901993f6acd2484b7a9104b92b9436604a97140d42ae57af18d6a84ab2f4dca8d02eab905b0234ec2a8b5a8259ca2689ba0a465fded4cbd1ae42443053aaea55880e4baa4ef38a9a5a2f242060c6b0ea9eb68463dd8a4d6d29f4797cd128e84d25294bd1278aace44d5981cdd2b5590e629a82dc7356ec967ac30281a92b3c6ce9734a3b753a634bdce97bac0c74faece076d04fdb41973e69ff6818ae9276c4714f7fbaa7f7973e7107350c4733cbd2877ea20f69181cec3020aaa72561fa043ed4309fed66ef5cfe8ebfd51bc434d16f55f7eda7eedbf6ee993e617c2b63eff727ef57c3e06487b9f79ee9d3774ec370ff6ee5716f3773dcc1530a2b31263429de53d68d4a522c3f1c01ebb8f4e90218a692d4815492aaa485825e872551d7320f9c698d2551bf54df302d40d7a8246e03aea7d4af8c55b13650b79b0b29ae53b728b029a032aa53c7469e30295a518a5e6192a8533d4fd81475175060cbd2160533857a0ae80ed42f6a031ecc6349d4b51b70d59ab236960c16763dfbe97aa66170e661aea94fd7310d935916b3c17e7b65b1a5181ceb31dab35757b1a54a7bf693a647fa699a163b615a8f5463266c4995b6750ff0c4666aa549983fcc14fac952492aee6a96e4100d98be449cd59cda240d98de66ec023c278c3d3fd6cbec9a29bd06fc3dcfcd87f325f328f31365522c367b7b0cc3949a24fab9cda9cbcf576b298c4cd600cf97289bea44a1845d869b52596c158aa53ebf5119db36e33deb0aad2c2ac37e6aa7b48c89dbca944da6543053564077a09ea854149554d912f8eff32ea4c0f4f53a2ca9b25e89d8d27823f4efa2913b7ef84abc0d226a81b3d845507630b55384c708d5634ba057a7a2a8258b45e5ecae448b056583052817a918575a2c2a16e2de4ca4c0d74da4c01b8d139410aa894a9a50814baa8922a85d5a27846c7a74b1d14550b68979a100d1d81248db23f6c8b4984829cac6924ca4c025de2652e08b26d32722c0a07f6e43511445513936a5d582c63a41634b148d1295a289628a9a931b606ac66a51c9ca860a62b19089c10f9ab00218cad08424c6503b50842b98200a128c000aa60adb34df10350c3579f784839826f14302975427cc30389cbe21ea20220d434ddf431a869a409dfdd1e0793f0ee0d2d2589abab2d9219fd5b135e2ab707bc5d9120faa7b55613453a7aa36148c4a5224f2c696a6ad3adf2bfcca7b25ea5c4da08c2d89c209629ac2d38ba39a428d59124599b251dc257a0d98b299a50994a00b37503002068e94c0549dba99257a0623480869c119de400653756ac82c85342b58420d55f0485185a93a4564967209acf0c01ba8b0033574c054ddca95674825624939b9ea58520505ae76d5820e5baa3b96a4451876558b14d9da0d986a18fac300ae3699ac82aed8b4dbdb4ceeed894a5a9b4ada7b5860ea3507333c2cc91eb750d3a665d86589a40e8f27b3fce0fd04de0355bc634c939bde39bd6b71dc9bb6e98941319f2de0c6498725d9635d9ea62acf7d83a8a6a9b51430a529de02d36b957a8367c99511dba5cce6f41a30b92d8661f2b57e53ace2026ac8b6558b4ada4c6e6f09b8ba1d6289d812c9edad4ee856bc15dddaed31e03f2fedceb6bfeccdb624d59f06f0b445b6bdb546b6bdc5ee7d290aa92b9768cf6b63f6e46caa9f049e95c4db17044f4be268a640a03dafef347bbbba230ed0e74fa0cff0a05ffa24fed330a28bf786776a3cc9315b9add61e6a9e4261ae67b09cab8315b8ac189015ff2187c935fafee8c1de04bbe03df44579f9fc0137ec8f658235b49a66c282195b407c00530dd73cf7d7217bf75db6a4bffb6fdd5244f53499093bbf84976a161f25dbc44bbd038f4262f79893151a249513fbf244b6cc94d0e1eb3802ff909dfe41a28b9d6d3923460f2ac6f9c6450c3e09cc0e39fdc45c61ac6c5c11f0018c0734f7bc496303eb2adb528987397f6896d4b4bb3626561892a8861d35b9a56a0420a4718411236a882164cf4dc36c9b8449319cc42b88819e225251a871e1f7c3979b006359db1a4194a331420a8a9104bb2f31fad013f9f03fc048fcf634b45b62f677c7a677c3f8595ac3f197154a6efa709862c3c41084e10923333633a9994fd7e9aff340cce7518189c53c94deee2f3e3f593cb98661e2f3deef87ef2d33f7f7d3f9994e49f1eaf5322d7e3a58b387d3f7910d3444f34cc677ff292de6cfb134d8b509daba445665c571eff6592bbc8b42453933c7344a5d138631552c971bc311fc4344d9d038aa9eb112378bf48e2c507f0e7a1f1240195d651495ad988c0dc340b81d12c442529d6445cbbebbce34c5f7367f2f2dc1d98a7e9668ec6dcf45a1ea9beb1754c51c50d1d928df6bc976ea924752aa3bbc09eb7300c63ca73629b28b66a951274874ad626b65a6fa8ae4fe010059ebbd6120f4b5a62c66802f41a7aed8e77a27882f2d09eed75799a6813b466a650219554a90cbac4dca13e0433a5bea41fd8f52e5e80f1065d88ba322a60b4ba43d1d1e38cd5a692b5ca6c4d8f96ccde3e5ef71e7abd0e5b1a2f3de2e8fe790eefa177ffbcfea59646af9a09f5965653534f85d4539b7a7a535fe50f09b8bbf73a93b125d5dadd1babab5852ad480d8375c59f260fd3f2debb1c84e626ef1bb8a97b9db125d12b9e71ebe8ba9936917d54523d97a916991ea14b4c18428c14a19ffc65ac3d5d35dde9286ef0b0a569dad8d6b466a6d4537a0195acf55ce5864062553d52b3a83d65eda93d95b5a2fd841025a8d72c76a54676a553d8768a4ad62a2c914a56fbd24e3175ede9c1f825a9527b484e5a80a9185a967e12b8f658555555332a6b5ad6f5125bb9c4560ec6e9d0205452d32139d6c43939393973475bc1cd1346b4a06131055b843ee3c162139941a7b874c84cb1d6c6ca4eb34c6f86645966fdbb8c49b3347982a13bdfbed55aa725d91074fc9d52ac418c734b5601439513fea74fa07f34cce7a0db30a42ad7cb25de20f8c1ff344c78ace99da7eee93bd63038db61f03ff0200df31dc42e62f2b8ce946ca66459c6196507572296a71a9931b66d5fc3505736acf2bcf2649cd695dee8c66eb7208fe41eedd9d4ae691a7615710c989a62da0b44a75d61a6bc14c14f0667f61d3fc777ac63be1c3806d434479b325dfaa0f68cecf4b7a5513bf869a29a1e71e07f394007750c78d03f1d83730235dd790cfe349564a6678a85ed6ca39fd605b70ad21ef3f9f7ed187ce85f8ce860e8df4fa17f5af41d3c0dff397d06fef41dd4e13fe4a69f30533a139ad132b627fe09bc167ed3a7cf3fff7efafcd3e1418dafc6b725908ef90e3afdb6853fe1871a9da13560de384e3b7d07e95b12ddc27ce35304ff7b3977c23c5a1fe293474b1711c4fc6818501f993d207e3979769665cff42f1b5baa5830c3b6f50b371d755d06cc2c6c2c259ba4ec5b6c9bd92c9b59ee619d5ed3a3cb76eb1a10baa4ff813dcb9b56418954d29e0ea93cd8aee814b54467e89019a38a5a9aa63068610a585cb1ed27bde179c2f2dc3ae654d5655598655d15961dc35814ff4ae3c495d126ac5d61115f4462560fa3bce9791445da136fd73a045bcdf4f4589b2f03b8a43dbb3a51574aaa09ca099bebf5f48aad459d2967498d28516b496b4fc566bc5802533733062dc34c79c12c51334c523d1237150354ecca865d5f5233b862d79fe4d44fb1eba697f6cc94fa6f074f4bb24eee286eb0d042252bcf56a9a56e9c5802c65e9df65852dda194115b0271cf3ca861be4f4d19b1a44a15f1e6d425c573020f6aaa88e77d7e1e83ada73f1a273b78eff52f9800f5b49e7e9184f7f9f2bb665fa63c22bb5255b35925cb3e1c4153a1b0a864bdf792f64c4ddd5852ad02c634f584a66c2ae9d5530698af98b6e1accdb5369db5a13d257ae446e5ea92e48af4681ad33d5a4fd6d353b13ad3432467c8b62de9d2d4cc99393d2c3f1cc9a2923c3d2d3d3d3d3d75a6a79ab915ccc2b67da2b054399a565149962d636557afc41f5a105057b487af5e8029c307ca3263cc57af614b20d1ab0f614ba35725afaab9239ed268e7de52c91f2a59b1cc94caabfee97af3ed5e7de289baf27d5e79dec7f33cafb2f6077fa34466fe69aa4c3e4d9e8b9b3c870b93c7d4bbc8617217267a9abc6bf293e770f1bbf8890b1d43dd444f534789cc940a6b3a05fd70b0b76176569a5df1bca86ceda38984e4f63946a7a3dbd163ea493e4d25799ac6712cb92d29790cf5f1d3b45550281402d183e8418fa90f7d9a44799c77f16912f338f58843bcc97388ee42c7d88b6ea263704ef6a2c750173f4df3cecc2323a0a592d5b3fc4325ab97643a33ca43e8a86149d5c75c9d244f2b66d1072aa3007387ea95cd65f8b02bd3284fd3c47698a7696a9699525d3ac41f0dbcbaed609bf1d1713698ba40067d82ee60bbee3844815ff4d4954f1675252bd1194ba23b4607a88cedc2017081430e3400a83af9652d427a5949799a72c8d394f334e190a7e964bbc8d37455252acd4cb135953e21c486ba60dbbb7801fe7659690020023c6e4ec7092c76488fd42851498b431438890dd0229624e242b702b87d4562caa831ae098cdb92bfac4376d5d9fa652d9243bf354ad0a0db6a619f6d16360bab85cd820423b935e6c64aba4717f0d8315d16608397d9c05cedb2dadf5b2a686d924cf7fd2ccd8e2d8ddf77b88cc96220a841ad838631798a9631613ea82d7edf75d030389f3ee9f01d340c791db48541798a9e9634ba8c696469664a06b0a66d106d672c0ec6b27db17d7549cf51319776c88bca0eede7949be41d8ea202631c471827618c973195909731697d949ff4514e8fa261480d43bee43028d797316df5b9879b6495a3e4019ccc3c84425751b98ca98794ebf053ca7538bd0e3b5c45c3987c87c3fc299731f1c0c3654c03c0a1c3557ed2e12aa75751390f1a86bcca6150ae031540ae44726d821395e4ba93a392ebcd0eb90a197548c9d3922a4f0d42655424e60ef63d46768c9ac44cb12feb2e6b906d4d30f2348942796e01e469a2205d672a691f6aaac56692b18c9990ff4d1ec4341d463c794f2451f2b45b0e79bc27af4fcae3d5230e94ff39c8eba3fcffe45101f7daaf8682e626934361a28f989500e5d491c1139b3bce68697a72b6b5a9a41d2d99ad5d3381668e21e7095b64200c3f88e20c3251d4c0044aa820033030430ecb099ed00313cce0a00a3e98395e60420556b020072d6881c9debaf98735549a5a5385541b920f0918e5e44d3e7e1b734b4639f972e68cf74298e4f1ea224e261f1fc4348d1ae686914f13f972f298e80cd02d4c28a7456c898eb7283927e792e390c76f39644a7548148a93d7bb035f3a73ecd7c4c54ff0a7ef690ecaadfe7449b1d8f62fb298e74c0940c626891e00595341a825144d5552678059095072bbe3724522d70ed01decaf5c9530a95954f2a6e290eb8e25d9eb5c79f2b4a4933c2d29e76949cfd3926a1395646f9fb0f6244f938b3c4d7466c4f6ac2bd3feca347a0cb8d2301f0d307d39b3a04632621dafd8ae1c6df24c2c582cc95e99dc3508db5622db46418340afd054a792f628bbba97043c6f90a466d12586b128fe2cb5866503e202acdd850b4d3d41d9d8b8b8fdbd335ccc5a5357a81d660c17b72fae72cbc3ed092669ff11b2919029393cc461d2c99f4827350ccee8303d3c00277da44f30fe42c3c40ce02f0e83bbf2d7c303f0530f0fc02f7d1ac05fbca56e283bb8ac35da8ce10da0878b7ecb3053ec6b6c2c4f49cd6c7b4bd16c7b6baddbd22d01be721f3e3a45535794c8c1f2a7b53f356305f01c7e12c073f0e102f8893ee9701e34ccca75b877471c393ce5a71c9ea261704e0e4380e7f0137d4ab98a86293de557c67bc33633250826c04bb5a60aa92b36b644de7ec3f3ce187110e02a3f11e02a7abcaef2693a95cec3559e8387abc8b8ca63629c87e75039cb59748c0c3dde8811438fd763c89021438f971e71c8788ce790f1182c8ff198025cc673c4f80fff41c7b03cc6a74965a3545872bd89912b111e0a20234f4b1265e4698a91a7a900799a58f234f190a749a5d65892bda9e41395fc74804b9b53ca75255702f890a95b6b7af8004ecea83500e000b600b8d52fb17d714079292a591e4bb2dc95417bde93b7d4935c6b668a3d00725d62a6d85b1e6bbba3e852b44bcbd35deb5a73922fef3a65735d36dc9d719d7cbb334e3ccaa6070d8373eae103f800c41341b7d82ede4306e816261c17efe1037889f5308000fc450e5900e721eb703293fe22c3784acee12a3985ba253253ec77c876880e29d9c2c8550039874ccaf4049fdb532136b6644becbc2208da0cb8d68c7489fcbc3326796cff22d300e469c52ccaa10ccaa5a529ab916d37a84b4b05ce25de25de5d2e2b576bcadab36d0d104bb23f7101d67439c3302f961a0cd79a8aa26a8d4806872a76e07363940d83531de664fdd230961e6d45a1a853d6d6800ddbfc249947594159a196d86ca56c13bb562d6c9199628f80c94d6d4a04db45c0db6705aef3a7134b114baab7d9dbf35a2fcc944ad974d5f63c5157eab772a4da1e5bea2a158279efb4cda9fb47c3e0771ac8adddef4fddef7c774b9fee3f1ae6fba53cda8c71ba6369a6db1ee1360082e0f9cf1ea9bbd6cfcf4ff39fcf17fef31ce13fe23f8f113d7c8ecf4107e918518f37442291288ae245cf215ea463704ea08b1e13baf81ca28f3ed231a08b3e4d9f4f93cdd9de3ea02cca610ee559a74994a72994a70994a729ccd3f499d1568b0bcc5fce5ea64576a562a6502222c05653d606c3278d5cbba5569aa3a2429e12b1c732bd52dd4e204820e0eaf5ceb81124c8b4a42094465799de5c17f612bb289149d11c4cd31b4ac4ca13082aa8f5a8040cd704a29a644ccd880002400000d314002028140c06c421c17848a66889683b14800f93ba4c624016896192c31462c620620c19010000000004491002aecf32a98160f5caf142e33d560cfc97cfcdfa29b2b3d8c2036784258975ba7b7cfa8d06afa14b8d6071fe8a0c64984307339d4c435e232df53a4812332c5b49cea89e65ac301e07f53e4ef7629804a84e8cb853efd2aa7ce5554b323ffa1340052868391c6e9066fc6825c37c05eeb6260dfe7520c899e393decb8207c5965fc6e56669517c30dda9f423c290962a7b2047ae02cf6e8ab86950ffd8b58f4a5579a33ea203aafe077b2965c161d21916d840c1d6f994212d323f8ec2a8b35f2d120259286464054f1a1fdb3f18a6d1b1130cb38e68c0fd3b341e18c508a1c2e289b866a40a7534f890196bcca487881d57ca279f3249d52c2fa7b1d54e81f38fcafc3721ab13c30815ca138482e2fa28cfeb2d449fecb6901b715fe483d860613eb81c560686da14cb46e70ae5370612d1c1eba16bac2c23db3ae45ee9da9857eebbf53d6d39886f298073f148453430845a5ddee165641da9e17b001f09e309a95750b49e3d5e512dc24beca5b11d90959ec701204426aff111a395c1f76f5b737ed06ff26cfa0a65c95357d04a9670248d9f86533693065a49808c7bc28ad39e89f6727400bb9a528f20481ed9ca5ac5afc5ca9ff82f2b47d001ac303b89f0a7d9822b3facd55e6288245807f19cde5860e329c6004afb5c9133173b40e8aed10bd8e1d3b00e150e7d1f4092293984b7973818f915bc97383bbf4356af3ea4b1103112c762ff490b6bc4245a9479f621a77a8cc5c886af5195dac9db0e1ceb21f6a7e8a83711f29456afc822621495b46c2dd3cf0d7e93a19cb42260d8cde080e197f9cd4868c25432da44737361b2ffcaf2fbd8caada989e65c067cde3e354bac4bbe551f0dfb94e3e922f0395d8ef72baf8e26248fcdd338e81cfe2ba905e8f7cb38b36a71147bf2a932714b3fbf6b5660d7f48b52ea38db9a93f6effaab65a865e563fa53cdadb71d18f2bda411bd753d4216d0d2eb3102483d3480f1e239213ac83b037deebd07e5f5496e417e00c85500d058731b09ba540a029a02d49bba0e4d9845f1263671a87793198298098686aa56536c13621ae2d4dd11f3bc650c026c647ba90bc1ba851976cf8dc92a8d8bf933886df37b25a18a6a22bff2867d272c529d7d09fa6bd6fe75a909093b8e5439764e56168a99ef8902f2c58100078480a3ea3f1bdb70cdeb7a211e23937e7f93ae2d97088f51f4a61a82252a5494c19715c4aee72ed33f39f56b6c7503f6363516cf2bd3cd019aafb085e1d977e6493a3706fa6aa117f3b8352c66efead88ddf2f7d43231ba16e78fe9a91192c1800e897f54b4e2054b0d270842a69f4164c68694b84268ec6c3f8f5823fd8e07aed7b314a29dcb053290de100ec62007d10ae246842c73309ad872ad33278d2712c2bde10a492b698c0cae15a4b8220c6d2d03e26165bcb2ca6530c3d79a7154be5e8a1910fc9329aae49b8638a0db0870bf1d8b623d96c18dbc81aa6f3f11465db9cf136c807e58e8c7784aa4a8c63cd9837a1aabff1807b78feb8d325fb05847c19aeb01db1ccc70875bd33de414a5415c2db70f50aa64a1f0ab9cf3a0a0b37482e80ebe237068f1a642c5180e72e999202a7ea584c2832477944fb679df355a71dd34cf36336ed86c36b25e19ce605f88e83b9e7edf308c0e280236bc89ca55d41c74b8c17e7d2dd4ec456b89d43f67fb5bda73ff5a8c7132f0449fbeed02b5590475d368da57a6a168e6aee4a352b56d51c9136461b32c99914b84a17e14560039328b0f113cb1ac4c38431b76f8618599821df0173afac6f7985bec37b5029dea0add160890cbbb1590d1208568f9ac856e6b4f68be288d667d0448caf350b5709e426d27e2f839355d454e363d20e2c97a72924a4359de432a425c54f2d9a43d70e936e1d3cfb13f67ce5198029d02bd174b3b73cd3dd5c8e215b955fc544e476390c01450073afa8681d5a0113c2a61b3ac697a1c59ba09071aefd9439bdcd6a5ba83b715ab2aeab1b91897311059efa6978ccd91ace0c2a9ee06b6a4239f55f88ae6eb873096a89d3909c530b1186d9afb2907d9ce7c6ca518259048614187e83c018ef86164b0f85b6e13f85326e5ed836e77cd57eb8c2ff695e947405d418106a2f426f629197a323a214036e755cd22a6994a2712996d9c747685e01237bbb2e7083bd1d18c2d548a709827186d9c9e19ba1fe6a00a622c67590460a25fc14b74c81709e8a6fcb038a3be10599810262fe27122f556da1e216f7e1d5f4d4a266a798ffcda97422f9143f767217503271940c61cbad042c58c5da853032d97eb1dbd25290670001fd91ad57223de3395a21cc9049d0ede9fa6fc60763869eefd666afba307f512dacec74d2c49efb4c9bd8a7a0be72a45b5227e3e515f7e2c7bf342f5cca39dd01490611bb03f5b5e899f4a10983c053f87de7e5eb8e318aa0cbd76b596fa775466d9114056d216130f166c6cef92beb04c1169911a7f0a47bbb90a055866e52353d98e46cd5028245e1f259f79f634b017b5372d701a79a6b40ec3e11cc43916ffe52f46f48afca235f7d6e2c9f3b92ce7f91461d415fbbbd378671ce8420a13b4f0a73a7403a35e00ccdc86beec5946f1e538810f3ca5015db987a179bce877c44847aa216a89c01dcb0ca7523c350737ecba18a038415f0d08cbf1be5ccadce2c924ed6259048a898fad87bd081e041e88d85059e4edfd397010bbd790c6f93c2f304468f561806ec8eef9ab037baf741b4b5896ac19e2945122bd2daada39c110b16c8df92703384a613b2595ed5ad8aad257d49ed16d28b22157fe401604b9c8629f622796dc6a35af4252312bf4accb7aa350e226830f97522ae211ff373575664fb4a942e02b170a118518acc51ccc22ba1e9cdd21b480ae66c001541ad8b5e56d1dc7514b4e653acb9f21a4f0fcdfd26580afaa5082cfc57f88074aa508ec9d1fcfdab6d22ccbba42acdaf9380a48316bc289d4da873c532bfe9662c1204781c4891572dcd94b2b37d8df9fd5647ba07d0eea2db2056f954e7e5bdebced9ecebf320e568369bc074666459d27208f7fb8970130e85c5958dd92e83c561d14948621657d20cef709d0b515621c538cb7679103cffc0d6bca692b3993936e1b6d8b4609f7ab2e211775d8fb71ae117d05e96963921bb85258c4f20295d9e44f929edb94fb14fbfb061a63f3070b4c2898ead12cbe172cb075b86637c8c0abbb0200dc45a27e75312b3b9100b7794b73349d82575ccb875e58e442f62412e93a2b239eebf68aa37441551c427207b427a109f31513ebaf01291a73468e2b078579625bb627e691b23c13f5d9cabeb2a6ca9076e98bf1188884e937bc70b384fe13f6e7b2df4db27c09f6cf4f10cf1e7b896e36a7deb93a7270181c96a9158693a308da6c5e5af1ff16adb9f5cdeafe3a2a981796e71be8e66079296afe0924664028328d6156d270e642a0108ab9d385a463e310d2648276ec03755ce46faac98e2c1d8538f116a3c500844906eb98d91b4b0839e98c3ce3267b1fe7dbf0b40b76e6e4613c0200e3e3cfc6305e30dd453035c0e2b0451913d3b4badb46176b8fff22a1850b94ae2b358675816316eb21c75675917ce8d967ff0ac9f1af713697ede9a6c601c17f3168b0876e775d0327fa141528c6e940cd69e9806c106cbb824cd3898883a250547aa66ab3a3401a9f1d448bdf9fc4b32737f4dbcbd6549a1bf18e47babc65deedc2f964d723017673ff57e1fec577a717de417d430026c8463ce68c7a21bf411450eff150521d3fb1531f8a654e1ff47e609d6983e8d614a18e236256d42647bc955c720b953493a835c206c02153d8b267695356f7ed4ca09cda96f2c6490471bd91b588549d7a4a61f21808f7acbcf3dd4a810e88a55c1d217d2406a7635fc438a8548cb90a0a11f2ba3cb08f7176e693088e06b96f10d9097f820f4b4d368010c91ab9ea56c841d7ac87aee8c81a5becacc2e3121ee8a7b350ca830b07e88a0929683279b18b84588488fa1208399c10930b65f1ec9b0be4f42cf58862b839639df98089881ef3c94638de15200e0f1fe5d77a304423c68e68e9418b43b33c4c93008a3f2dfceb17064538c0d1503b2eb045572255ae7aa001dd7ab50bdb6b0a109fd8b42075c4963046c7e72fca20fce133c2f1a8643f80f7f4e297657fe5ed783f5b523a8f7dddd4eae3fa0f2799fd172da939f13f5c07ae8324016cd0618890084b17520e26e63b7f0455a3480e92c41e4593503e1e00733f24b6d50b39c95c082010b4c515c52940893a03d80ef2b949191715e8d4d950a3ba9f5e1d40882a7786b1817dbd333732dcf98311d0578c272481f39a5309133c91215871b5fff074261d38e115bf909f4db1b6001565e20eb43db3ee07568d983880d62ad9d4272009b29042cfe9f1184b94999f90eb585df31cc5ede2e51570ceed93599caae96f091ce7ea716284257c34f9be29bd63bed735018e05d7a8c64238942110f2d10915b301eb6c9562389bb8a0c95f4a6d721f007d4e3915ee1651b3984fecfb5cbd88e363c2b193c3bc0e2ddab189b323142dc9261ce7444342c9e33fd7f387061082451ccf290107cdc8ce8d92d24650b03ada2701183e3c66dee70363703473b1e538f5a47a8d5062bf35c38b56faed05f85e938c651f43b736c58107b23a2f59eb229759db85742d982d0fc3faf4ea454a832f64380907af76243b0d3a7cdf4ec87bacd3fce89d58760ed540662615d403996044a0adb4e32d8a597c40e923b5b8566f51e17275958fe52c116f5a76d40c83a2615615e99ca68b95245fe219b4f8d883512cdfc165ca4c3f7fc13493d97dfcbcd112839d1007299a28ef68210c702eccc76a3f68f94d6956f825101539c9b40d76e2a78885a4c7f8efbd12a3e87aabfbcacfbc124768285fb2ac81e8b431525984e8d2ad7d2585e777ad3e43c3a912f9676fd0dc7936300c76bb839cc2cd70c7d1c667d6f9cc2f7df03ccda8bc9640a5b2a786c2317d01237d6bd17625bef75819891186e2417d24258cd062794e290493bcc3f16a800a5d48796824ba516f3a4770f7a7ed1f6dbf8c7ff7542387eb84740911d4740f5451149c841adf5c0f8e8a9f13b2ca882bf344455533dd57c0ab4742915260d8e0fde47b463327c38d3f393ac34fbd6906ff45b042e8027160e8a2de59dbd2c0ca4851f1abd821ede3f14d54bcbac3ed2958bb74ff64c1ed2845f27982a0b55a6c3b02311b88d6bb8c53f1fc6edb37e66b6aae3d684cce7b72d60cf788e4448e0673ae67cf713393fa66def4265c946381fd342a06cf5db7f6e74aae3dd09814e710ca4cdf84a03fe932db8712be73f45a3f8479fc2099fe8a276146fd32272f992dd1a7b4340235dc5f17702d9a176fc3c541b4985546e44a24c5b28b79bc5b4735a54af97f46743ba8b91b36150be59a568688c5ebf960b8f43d1c469ffe4cb47aa68e7cbc49d433389db25fecce62321287db929c886c16447a59f1840515d6c05b87d8b2162ad916b7acc460eba617989801471230df1bd3fc6edcdfed0482de095d1a03c9a7ae37e73276b345b090695f283dd1e5bfec2da87a19a541227b1c414102ed20da8f827cfc4a540858f3015f6cc5c48ab4aaaf4c033eabbc73a3587835521f32841f23294a2bd8650ac2925425f48910a1b97fc15621ea0a1030b82e9b4e501c411a8cfa59349475b302e7b85bfc07fb4d0bcfde8116a0a6f408ef7e102ee6a1937d969a7874154ef18eee1f9b3fbd2ae5d8fcaa9467594f239dc85ed1cc474de87425d3e2c31f44fdf3140e3f5e846eca3d2697441e7e2721bce204487efcc5326b8903544071a8e01e01297272f2fe1c03c8820941c144c82cbc505662fc20326c81891d60f025a32e3297e8061d98d3d052fdc05e5d7721e42906e125a7fb0e8c628a38abf187d532f852027237034e6d50f4b5880d277d1ef6732d23035ffe2a719fce630a295de3b8b4908559d441d514686e47548c0cc078e74f8ac12d695d0c9edb51e6025c064cefe4bbf77de4ddf973355ca90beab41e029080096914962ed8b46f245eec3696b98b0ad62c20a7fb4b1aa0b46fda92a83d9aa2e0bfcc4ac538f0183e0daadb78779fc41f436db89e652992d2bf75c1d89e1de09fc892fdaf601eb71116e58ec2fbec26489e9b524a4a6fa21d8a2d33f16405f2c38be8ef5499ce8773205ca2fff142ee347221f53f777dc627e534cdde0e0be5965f9d6e6ee557c376c55f273930b37c7faeeb17e81aeb1e2243b474716d28c99c45028b211a536d69706f9365a3d398f13f0bfa0a176fafd24a46fdcaba2f8f15caeceb9dd00bd684fccbf14f5c54655330c564887296c7819402b9b6bf5852b72858683a26e615bb90d7e5b9e60ab35fe1315dfd699cc11c03ae0cfcc592e2db6c140e9fd3e47c079e2dd44631e34bdf254bdbbdca02b0360cb51de0e7f9a119ac842841e61496876c24468614df6577719b7cd0c4a395f92ea507cc000392fbe37ff3710bcab82bfff597021c570d7083b935c44a817a94fb049b5d0ea52c9c8ce443d62e9df7ed1205ac2f15f0457c2013cfca7d70a5ee6ccb6c486667aea137109356170d22236a2068510c618ef4bf895893bdcc42999d42ae218a747d8319561fde1f8d93c6f940f02c04193a1718a1cb6f2b649499a23cf9062bb14e8c616d6c4fe7effe5efd52eb6a2bc4d38f2fb920efb9c3b50ce730f4ba9f078a010c77be5ea0900c4d537077541dd8cf5739f4448959e534f0476b879cd894837271d748964c9b315de19aa1ed99c44e50af836ff00a2c3e75b3c43ae0c0c212989c884bdef7aa2109b8a8af8b32c46ad7a2a1d48e237f939442e4f7c95c5797ed5aa6398bff40fe52b929c91f549f4845d1850581838f237127df0659d8d92e6b2823b7befcdb48a8c0dd660c1f4d7ed9515ce55ae24e6e2a2489283d4a66cb68d05a75214609df795e4e7bc4e303b4f38aa92c649fd60d5e5243801b9e11be798a497f151f3a43b4618f4cc2f979fc6ac3d5fe792ad237fc33fb5eb1f23f28f95e5769e23a0e7019ff1702d41f5e9492dd1a88f6ab550a6761b988865a0a0d28d979699bf7b30d799b7d661b92e3158868b10876673f858460850ada7a3f21986f0aa902aad7e62d211270d8e82659e4701ded29c1c1282b487b493e0048738424a8d06daea6647f5aec9e79418fae3e0de84814f458f28fa3714e62b2b08327b5dc3a8ee6f3aa44bc9e1beba9d4a2a9285f144d4671bbb1c59b7510fc484f2c1ed904f3c0a37603f3d44884bd0cd81ccdf5d68381cf04c23f0cbec9499ebce5271187cd6ba4ef4710ebd44616e3ae272fb51a4f64cc601e2570f6df2355af3146292ff6363f6cfbf29ac110994574b576ed85126629883d600daf7cd8514e891ae4bbee417c12649c7917231d9f8fb015bc173d366023a22be7ab8f800898a5a96895a39066d047742041650d425badb5b6ac03cbebd1d03d7a81cae3addebdc3be7d58e6c299deb207da22093bf3d0076d0479c5219e524630d2c2062ebeeb912596e9517bcd00e334717faa2a8f14c4159fba83064c4771ee579059f3bc284e52e90ebf8177c02770b6c28ecebc348790c08745248915263f60ea680c7d590e4f5ae6dc0a30c3d4d44b3692bf345381a470d511bfe8c106ee72653bda356156a5361686a20c9f3d8a1c25a9f0181bdd1e07ec560482309536a82bfbcc39bb37db509e74e7408c53e9f0f969eb6e77cb08c302a6fb1b272eee02b61fc4f83bfbff3177017ba00f7bd5f09ffd28ad56099173376d38bd642a4bea9207d9063e7cbd3e19fee798af73501b8278591f6245f5ed450649c9c2081f9f288961e2fac31dbffe689e2f7f264e21eb093e55ff3ca0733b1666c5b154f271b614cbabd81bbc292ded6b809b0152ab6795e88fb917c53e5b66180afbe00ae599111758dad47e0130dc1cf1614e88f1dbf9db547b03e08f64182d4af1a4201d194cf4d4c1d2a299c867feecbb2e888764e8a1ed0eadb06eb32b3339d0bc5c6a6d2b048fa1dd9c62178a78085aac4213eb7dea674c46247663851419a64f9800fafb26f7fc2911409bdce2a235b5732227c9e73a573933df4927cbd45a4b3141d2a270eb17c86e2336e6a7efc81e707b309a7757a614504aa3221724597b2499abba83a1b1f8bf43f88a82ff6648f7714fc0e0cdcf5901831271f9442b6ff30370cad0e5798fd41e141fc854f0049e561abce47589d5b5b9d0f5747e3047459ec2bd3225523d2723af86f7938dba74112f8ae56081b49381f7b1ec0ff600ac4979dc31cba75fe17404ca4e5f7a2c3d3cf407fa6ca0072d4065aa60d4d5c9ee16e9a5210ffffcd80c167d091b1c69f03c0090310dfa8aedca38d81451f35bf51bb5488368b3fde3a4d07ee90a40c1f4bb2d124b94b84f47b56952317f1ea7e5a7eea2cb688c5fd6c88e792f6f1223713fbc8615b4270d75660ab0f861e07b847a3a78c1e1d9e07f0478a0898cc92e3ec86fa305de4c644bf40428a38f04d17bcd8915c0296309af45431205a2e04a40a9cd632a7fd2cb10d3d4b7c272bde55028cb9e6fd0c1e2f8241203c193a489bd49cd1adca78df0dd66736a2080726042231fd0059c27fbc29732985faaea807614ef5e29f7522ef105bc173b5a654e61eb4b5c723025cafba75a6e6e0ab613433b20a2562e0c0204c9d2cd4dd9c80de1d2683d22e000c75b6169617aa1e9cc96384ad0290cae01cae628b7eb47c40e590a8b1f1f7ee7c0644b379d38be3c544744288d72879463604f7e09a108e9951d818775be0ae61f6cee080aee08890a06044205029828dd95d0f6b3510b29d85c9bc9e29819078f805bd1c0217a2883ad7faf3d0b5733f8fcc6f33d571d4dbb34479730e0e95067eae8d2d8a60c780c8bac9e33af356879e65eca4a20094f816864e6acb2b2da54d68bb091be86fbc14cccb7d9052794d334491337423c6159d448c9730005b32888ef11026ec7904f9c541f401d509f0d3e7d906c928199537f701fee4e4139a867b8ca872a9f8c883b202490fe09deca307634833af2d1ef64b64e4d6b2657967c8ccb08df39b918fdba39ce869a5c8f97fbc29c05260057adefd019d675f417d28da4577f70ec433b4386a622171d33988408c7d220b89df0a1791dc5691d2955d9a6421054c5d7b6f1526e9bfd4a4ad9f58ec593f1b6f5d7167e1c96238f0cdf091ee25794529a02fe97120922ffd923c3c92ee330ee5dfc3d45bd2db380aa0a34eba592e54caf856a8233682ecbcf8a906d488e69dd5fc0ecffaf740e641aac1b4b5e33c14209a785bc380f77c26fce6b4118ad8df5b0a2043311f45ec00b983eaa5da0531994982e3143584d27a16ddce17568a4f4abd35c74b950fd60ee372a54863ce3bf27335065aae51206bf8ec6297ca1155efec837a8b1ba9d647b1b5a77383d61866af0008ad55e3551904be63daac81e46111ab1a32ea559b8af6b93124cade9eb574cb4464f409e91e59b115d79267c5e33b4645e5c5d47d29d223e89784935f6a2bcee0d66ce3e222691d9b82d74aceb408a6ec6a990862af99bc83e30a064cf92213bf90e38b74ac51d285b171510f5a1741ed88630f46424dd1894a36688f36ad0357e7d1d343e4e9f00b47bca6caa71283b691c7cc8a05f5cafdaa9d0a306674c1bd1a52f96fd09520cfb88185b059186a30ef000249a400e40b68ebfdd1b503bacfb091fd4236811973030c9e0b6eabc6e583f2c1e5064e2f770a1dd8b29ad9d60c9f9113ce53666594db054a9ee19eebd22fd7601cf0b376d0d7ee31e8fa81e10648094f0257b07c945912872c934d6a140a90d627c4e0bbcafe942e741a8e79d99e479094b2357ba914af40710e5cfb1c398eeaa6979b31937b17343341e10d11a4580f2e8ab024ad1cc73604e35bcf53c241c78f5bb3d4cf7136eb0f82833f20bc4d02514f393e8551dd210d9469940780d36721f4024665ed522e19f4dd89f13ea4497435423970a62dcd6d1b90c04cfe036d4659c2636e641fc7488ec7e6d5ec5859cce12e6ca22b6cde845078b98a908601ac57b3eba42260861c739abb13a1d965511368f016531c50c1b5596b2210e177ffb1744b9abd83445226481cf6a16e911de0237038a72a63b11f1faa69392060a8036912ec4a59c5daa618d017f143696b38bc3db5c5503940226e09ee7f92687100356950894b5457a8341b045cf808e2d3d71e329e1c3153c4acadc666b3d6eb0d98d1430c36cf8714aa1cf7a5a439122ba06181180a223f8340ad8904f777720eb491ab57c476ff1b41dcf73a65e74da6b4ace010449fb2ebd241c827583b3754f3121af7508e2663f416d7bf7ed317b15b505efe3be5130615b361ff768aaaaf1eff934307cf8ec4bdd7e79ff7f7701af79e668620f1fd6bf4e4c2911854636181c960ced2f37f9a1bed1173cd430a0345d43d4ac267d40d8a644b9708385b5d8cacc5aace09cd0c729bdad4009d2cd72655cb170a397c0494617ebb9f207df70763f925ed8bb5e5ee6f7aa536a815ddfd59cd820f8ea2cee9f5db39a5ade95c155678f9c3d5262ff1cf6510a4a8e2016e7b1ac0f33f9f509c102bbec9815ed500b0705deb3ee506705132849a29052b2336bb57852c2d4eec593ec74a6a765a24e06dacf659df646c5ac99e39c9c7adcecc0c14ac44a9ad0bc112cb172c377d2b1a87f8b2c9136e46b254cef2f707dd696a1b903126be16b34821cc651bde3ab32925f7d61602645969e340da556552ebd0850b1deceaa6f907cb44e25ed9fbfb08d63736eef63addaff99c05b37953a0910326b26af1f11358263479b4cbaa3f64a5b60b95aadd64f899d4a842ef3abd70b78c730b2805089a3595d23b73bcc35412e57b5e9b16a2403057a13696feed26e679151520b281888264de8501ec45d5943013fc80534570ce82986e7dc76814f0730cf0c489e4869b797a35424b170e018a1fae4212d73c1832a008ae10e73290d5c2a99f4691abd6b5542c8481f1719ceb40c01a0ff5c2edebfff037375bfd4fe97759f3b143b39e3a1011737b238c4a0aaa8530555384c403d0c3adc919b522b34a482923dde91bbc21b461088b6ce2f59296622a4342268b390a042504360c3fc6afd862c530d2fab1b6ca0a106e6276d911da4df23a69cbd8e0be268e5db1620fd2faf62db0974b1222e5807228e2034f9096eedd82491a284efe3246eb318587fd542ed562b8d75f0a5877be19ebbc083d7d6528be9adaabc9305973142d011e1163a1499aad845c09d1fb97785f161a4afd175123d940ddca46011fc9c1048d20f3ad07c4bf3b0bd1a00f4517d50010cda436f6720a6604dc04d7426a3480db1be67bff7231ae2f5f83c6a598694dd9567330c8b8e7262990eec284d97b45941335fe4a2db26442d8f9c7cc8e89449fc1bd7e9b9ce92eec122714961a16f1a2c209fad050b6afc714c5bd9d8cfe2711aa2e8f509df55654de7a1b8d785bcffc0cd7352965570aa2edc6f06a96fc0bd6e9228a72e4da0f53438c8e45ba377ed24a0976c756780e8798aa574a6d71c3d64cea13e19b46903f4453ddc8ae0e553fd7c8d3a2b47973d475c2281a0475a9394ec2fbd32c2fbb7c4c56c9cb7a59e99cdccb6bc544ecf05fe2e2258cf3a2acc824613d49e0d649b6deaad2973111c95311ee2c8e81f7e9dfc11adba84920ab4c94648b87354e714dd4d7756e9d894e1309ac1bccd3e87a06b183a8b3966f7dbd71469313ade043a0931d821183999cdce36d93b34031dfba8292de607984206afa2f2c111015ae92b3559e4b92d073d9cb84b37c0fbe0824e35da808661ee475d44469ef22f7372c6293952046c1ce56194f3df5dbadef88284362a20858043bbd8a78a65f4e4efeeb643e9f63e64d35432269a8556062e5ac6ffb0a7bbfb331c185bcdbd09756a1b92fdf41444c015a51e6cab81e17a0be4399825485a9d6f638730ac6198e317892981aaa94a98c5903278062dce217724462bc1ecf0843e08d7151b02608ee0844a11c1bf185441b4471e644d0d3e6a4d71ecffcb730a60faf3f3da240924a3eefdf7aae47cb22e02953191629d8d11392446903c37d2c359a09277181e1a4425e8d96dbc64184cdc019aaf51c5bccdf10b56093c8143289e7822c6d9fcf8d440fab29eb7a73a12ffcc74f5e428e41bcbee53c137828fbfc92775ce8be6faf7556d5544eab8a7bc1a4c48013e3631ce9cdb5d8bf3454f9267a43a19f43e2a8438eedcf706fad78cda0bd00713119f7f7c19b11927bc19aa42cfe2164477504ad7689db81397d8b0e2a06167f96963ef01bf710d725a87650443188c4a7e353d93b45ee9d8c889f2565cbd07d4105e71358e4eceec17d95e7db1cd53e214a34c20f51eef07a16e4fe3a40d61304e508815710c55ed3db7d0d8dc5347ebdcbbafda471650abc60af465fecc7f8b23907a61681a5ffb3b87e25cf29328025518c98394b6c2469a82ba2953b2349ecbd33d40c49b056cec53d9044d5a1f974100c50697c6663e1e7380a52e874591bac5e9808fc8d0db2f5d96447dae8229e2b5a2ee59a4c394365a034756337ca0ce7f252ac51213e0fee8cc42125649c361165f517a01cf407c3ffe42132601a4f79b0af13310596f24150444c7ecc5011a66db5ff415d0611e600b7c0b4c2a83909d5859619dc6e2fb7622a14dd75dae5e84c967b0ccbdfc00947ce8623a7c144019444d610789400b6000e1e31051fcc75e4aa2d68825a8a1d58c95a8f8ec46a22ca0c5dd7b721ce7db4bfc2262fb86269c3b4c53819fd3f6ad41c62d73d65799321b22c9bd3f8ab6a29c8b40267e1e23ef440de778ec2186740353f89e282ea9d06fef1ea409efec37b009afe5919c8810771c2cc890e1fcb8c4575ee075c3bfca14e5784410aac9433daf11e8742bc992295158d43dbdc7764ed8c88f0c46c1453ea3ca1615ad28387a5fbb91072c01409f1707618ff8400df9bfd38c4fcd9f9dbad2ad168e69ddfb22b07283d4ee98944b6fbcf0be31bc12b7136fc27535e06f114012de0d9eea4624a97c8d55e081e7a09888b0f6bf338b7f27eaf0b1f3d6d23e2bd9c30e971baae67d36f64db4621fd501c54bf788f9d484aec45c981183847e5002af9eb22bfae321905d9c569aff1ae2089811bb5de8a94bae12f9843f9990f6b8ed37f14f3250a825e3a31c0f4e96196fe6a924293341b3f0dcc274a4c407efb1959d31743d6c59204e40a0ffd47e2ee1e5005c724482f3998084d04f1c21b3b9d1f219407f73ca50780d92e69e59c70d6b13cdc2b369113a0bc072b3a625c5103594ae116723b1eab4b2829d582658fc9715bd2d6333558265d64c306d08c1f8e8c8dd5a0f596563620b61d6a203beb027f1eb6c706516f4b5f93294cc4d4fac10396d5f410d13fc389701aa1e70c97110e318313774fde56a9328f393d48b9a3987c921e96f83117820b731b86dab85d996051a735c95bb3ffea7c27039faa0cdf804699d5125bfbb56cb48bb32eb78880fbc54adab5dee6fea8a43c364d8c15820b6df19405b69f1bd0d3151e2e11f1d464143c993af48308f1a1cd29b0c2fc09da6a1143f3a90bdeeabd56dc32215c503186b9ecd3971988858b6e8762eef107b7d4d8b81a9849c3f894aa62e4a0e60e53b95ba822a705e996502c9a30ce9750172a6a82e6ae266884be08000aecb0e82ff1cb483f85fc096c30751baa6eb7f1d61dcaf8559916db99d14935881b83e4fcbf17faa05bef279b06d67d18e6ae5d1b364283dec66a646cc6a265112f24bcf891562fbb9d78b4f44472604a632fde0ab28af6449c34213fb8f93691e3599216811507cc4b997d6dd01839d9b50a010193e698c8eef93d66e48c14ccececc260a615ab79594a34f04c44b624842752c7793a219f96389152b7d13eea0b9a1ea4bbec157aec5328ef3ed973c89ed0704cd3443341b8f7d5788b7d3596eaee0cbcb54cb2a75711ca0e6a9bfe1e045f44f182ea0827ea40099e652638a66d2bc7616440e5e415575b11283dcb69e48594d02db149aa29019f49f854e86361fce07acbf60838df00e6bcda1f5ba8ceeb5707276c048f120d59ae14040dd1ae784accc5eb744e89d47c4a392cc07b79486a78bfae15e8713c4bd84d28bdffc74404e752ef91ba5dfba731342b8424372b66574d0f626c1ab552183846d9b5adf9c1c98afd5059353c1aa45e1469ae8f68c0be4ccc8b2756af0f7a92044fb8c56fd73f0e0452cb72a45acb515137c94254937cc4915c84b114aeae5356fd919c9f6ea9fb4d71d3713f636467759a061714bf36534940bf28cb57005d5e36e9dfe0914fc171f8c2b47c20f340887839ca963fb979338279613b7ab4000cc5b2d5c482e0d17129c0585f7d7ad57b5f11d538484d722981c44db23ebfa9cac53f21b710b39092f2431cd1f62c7f2e9f322cbf8c38692b448bfd832bdf283508b3b0ef737de7283e3e4c22173293d4216b365a89220bba0a512435bfd50f8832eaa6ee6229158183bbe69a3e1a86b3f9d8904a27061a87ab7dbdff90c64863a7040551355e28c6b4afd46bc937a609a6cf2008db367cda31aa7b7c1023f4e082c235caca6b17b7a9d63ddd62ab4ba1fbe8164b83ad360600d21b22b813b393912906d4b731af3f0b9598d028a5a1219489b69416ede37aff36d67e619f5cc4890356f96e29ece48d70722d1231dd5a33989a77ecdf453e61ca6119c3d97a06d4341abb10b1c1e5242ec4f5fc2e302a57199cdc45f022b7f7aa2a35f8355242df41640f4aa5aa16057bc431de22933bc3c6b1c858d179166497645679e1f5a1e19ab29290146666e8223269bb14235d92e526c64a56b0dd0b8edc0f1faad49657e544b3b408318ee1e453f641c180d65b6fa244b1efc966e3db3c4268759224f3b1598c9da4e7a7c1ef3ce6a3c32b284fb06cc2f1d0ed503456b3a9d9972c45a0a51a794d9ad689c5f9626a92aa053140d8e1e0979964e6e9ed9da5ade9e5c3c6ee86e5d0a2a50da542ad10e62b3287791a9bf9130eb91e78ab558e20cdca4f81310067e2b73f77a8677620a3ba3412ffec77e6d50a922b9e80e6736946e0fb80b13ff87c5200978ddb1ef76109eaefa7b02b13d720774eb9974a61d081c21bd63363287e777dec3d57c8710223615bb6b845f5c4a738023ea9735eb2321925140e3c0058e28f13f54616b59e3dc901a10386dc38669f457c18348530d50695c52b7ce314e9f0c5a6c160038dceeb70b0e0d2284aa794b337deca896194f864eb5e80a7ceb39c9142dcd065c606d1202c11cd85705cff462f360d92916ba87f72a1e36984a7dab9194e1d7341ef21b083f21199298e0ec899f5ebc1738c274965a856b19c60cb2eee72b57a2b75dc7d79503a75acf9c28512bec965ecaa8911c438a95868fb7696bbaf13e90069c8b14a601b6600adcf4e4affc410535546b432e60002c3e48e92fa139882869c5ba5c982983f94b0cb0bc91617b11452babd647c6fb00874f2b99d43d029d5010f0850c945a796a0d9932e2d28d50f9c7c84861d21cd89972377b0925a1cd80e8cd890233d81683a8150375e1c4f03204967538c81ae107b81a474cb3c0882c2e9f819f58095b7017185ef27e6446356ac66daebec03a3093da0cd020ee9ec100b173eee25c6f2405c807c8e3771cb5f0afe851a153334505de3f33d1970ea3c4f77e88461f4681e29f04aa3ed01213a206002c7f7186186220b9823a214913e5020cc1e8dbd5315888441273fdf783cdbbf19b73d08cfc1f671df92f571a5c674edde78af9bc5d06c579458ea688b5c8392f6f2d6b1fc19646cffbeed212768f4c6750cb3ff318cc52e2cc104b037091e7555c86b944364cdea8ff22d3352f627c6bd3c1a0e8ec37de12b31aac146dec360261a65cc9e63b9042b3190b6ff64afbdf1126b374f55b7e9ec650fab6fe979e9ab972f1bf48ae859fe93af8c16c3f718e3bb1e4a8f5d79ce7a1143a90e17195554da6cd230a99656c521d99b68ea0b2b45fd51af1bc728de328dc9fa4264bd60c9aae10897595d0458f154c3b6ec0d52b3c7733f6cdee353497a484e68321268c3f566126909beecb5e233c41ceb091af75a4314d48202f28ce221dfce22cc64c922987943cbc0503a9cdbf008d694f714041e401416479606def69d1c511058bfeb96089beb09340840a7708013705615e46d13691d012db8a410a1c7cb3cd80c38dde0a0aed280e5a981428db29341f7e877633d458d33a69816f375171eca1311cd664b8ca8e40a7aeba9da9ffd439585e51daf894b10a252c03c52916590b55da9584f31f55db09a7720a6eeb87a72756cfc0071db6039992e8ea5055b1e68bde3aac573487443529440292f0fe8f3b886f5c443ebf656109f64e070a9b6ee3a807339b5cdd9cd399701a46cfa8d93ae64550b0e55cde3fd6222ac037a009ae3dc9b79b402f291500b1ea12692b6f6ae98104dda24ca43a7c7d679081bef1e130125afcb7662f1dde581837eae3ab8686472595f699d8afcc6f8002fea71f5a53ec85c564787c9067d3d24e7c2fecd3d810d2977dcbfbe737f7577aabe509956b1fe9de27eea10f490f9afca7a27054df913dc0ea480d2097c3b36fe2a58ac5a7b3e24e7c689b4920be352ab50da20741a2dfb69c7fc5273e6ef85840cda44dc0b21567c1c4111796f4dbc323eb30716ea293332ef7f79f83273655046ab5c550c707d5f32b67cbe31287878b072ee8a42dd2763418a1eed8f9df57248456a719e7a1c5e401b60bc61e3ac470862c84a5cda7c2babdce224f61095111c21206ceac850472ea803c87e1df87d7aa8da1d7ad833fe159e4d6f093b538338488131ed7d445d58b47d501a13107d8b83b6786e46c6892e7f6959bd9c95a4f5f1cdf10835ec5afa403a9d19d1b1f189a80cee776fb9d0fe162aa0ae73babfc33044cd895312b52db31cf8d9c2aec24c6161f223933182787d14ab996402cf83c316405718ad9247183f84cbef7382a5684d8eed8f1017b42ba59724967c9ed98a385f224d2364525c9e963c90821cb13e3e8b0edea162d5d4d7cce53170499ecaa9af6a909793574fc773a6c3d2cfc931b5b4c34d54c5f852959adfb4fa8015a49b83edd1ebec0af4123492c7d262574d344671b60a7a7c10ce3cbc6154a382b425c0d59e978174ba54e17442295339cddfddaa8256aceea2f520aa6c09e9228e77e2019d2075248e2cf448151ef62e04391f89bd155e2155248074ce740a4dd5769521b0ed6c00a2fb8ad9aca6986d1ca2955f68c084d325c27939bff398d2cd2462f3862b17d28d4be80fcd2f1aaf79a0a747c22103823f754085b68c920ef2a1d4550be6ac34037d7a6ca98fd0dd3f86b72f61d55dd18f348d61b51f6aec96a8bff54fcd2f8af11fd95f53db18bf7f56e3c9641348d41c662c1d2e2959670a022707f4d0e089e79a3093d047319948e0961ebfa00936bf974d3a87d7301d61a77a472b90f730bace1c798cb20f42440a28e0a9f30540d9b726459535e93e24b00dcae168926cc97e77cc2e747a4dde184e8c700d14fcb5128c13883b6b3dec750bd829783b4a54e26ab0d2b0709a7c48b6b221d5ca8f3add5472d51357d486ff0a5990d20ec31d0d1cd797f7c67397c2b2ce0b1e2ac9bdc56d0b9fba22679c3a82635e66cea1a3266dba5bd3ebfe8fe75567a1d15de3810d68bcad94d0e7297e62dd242384d015bb8f88dc199f0336f87c80fe4f741334171a7139459e4d70e3247fe0ef1496443ac39fd817cde2c33cc5d8b2bda8d3ca1bdc962414d644b3b7a3237a7ed348c27686d11d69150138b50a9b4f3cfdcd971d462fbd71cf9bc154c0445ff3346c13682c45541aa95204cf7a4c6f002d03aa5bb54d134ea94e84c54b546fa59aedc32092b313f11cf933f3414aae86c766c649b35e19a5363bab524d8be01a496b8591530afdc8a13194fba1c2306e3b175d0c46e006404429a508ad38ede6edc0f5c99c1f7ee3087ab5121c6b13df28e497baddf9902c508d910df1203c021d23f429852108160c4236718578c6b397ca8f53220ad9faae8a6007231d6d7141689094e943d6b8f745bbe4b416f932f79828bdb37a960a282e8686a986af20bb4c299fcf730622c2a3a16a58205ae41a73212014f7b9f30445ae9da8f354cf655e6a1ffe1f45476104d600892977e35fc671172338a0211d22e96f6ccbe2c5783543e7d7553fe39dd31fb8b69e2d56319c92eaa2e32ddb3e317243b784d520999580316e2e05e24bcb9691191bc6ab8aaf3571e122a27bc4c8160b8b9c191d70902d7a3edf5b4034642463ea475e8275e281f6c95335c67b952ee2ad2eac2c28b09cbc0a7e0c57f3918b4f63f31c1cd65030f272f4dc02b00a01595deae9461274bb21d5af9455fbcf6b185937b5c57aaba98f8e7bf7f0ada301000e4d676af1a0a067937a6f97ecdb234c2507056860d4694825481e72410a9e554c60715257ab2721fd3e4570ec6739d61bd7dd41782b723f1278d0d29d91271e6fe4f7ef510359196396eb81203d7d2cb0ff1f85b0dd8601002416dac253884a4d4634d328190607dbf4834563c7def3dc2588d089c33006e6a551ea46075dfd71587750f33706fc0701c4f5956bee865bf41ad7aa4096a38b08de15561317f8005cb3a18bb1084bc3eb792abd3567a1ed2f76b766ec700b3c3a58b9db7682bb9db0c7422928301d168adc954de708b7bbe15cd247686ff3792148599ab1f3caa34fbc3e2587f080fa8c3333f987c2d3e71ce354b5d1af3a416e7e730a68a3a45ff3dc27a26a0f5843119e47920c7142680dac1255d8b7a4564654a8bc2a59c806a42e4f2dfd183e31e43b6d018ad6b5695e50fe6c5e4817e9ce9a7b4fa5023322e328e2502cbab34a0018d271da6b4ba87cc1bb6338b774f25648049d8f903b93de1699312aa64fde72d5d71fd8602d9ff3ff04ade272b1defcf8a45832d84003c33d97ec27fe1a7931674cfac65e0b297b2a56eacc1e181266cb6b623fda400b970f310ccb69f1dcc2d0dfac4af2223309e17b4e06f125844c9a270cf4adfea2d3533a3adf830a5083f8dc9845a3bc1a5314a8503a22dd59a4c7884382dcce33076fa7e8113e62c43a33886fea4e65f88025ef13a732ccd41c20861b45f2242ab9670e09c67d58f41d67061d993016484f4805e8028600489cb4e828b497a5725731581858cf9af4f63054f5956f4f82bf7bf9629cffdd6990995381bb0ee60fdf9ea86cdf1f569fe5a1b3bc637ba38be97e27f2977f95173e3c94390e42b0f5884f45484515efb1cc5125d190ff94d039493877de93bf47e80341628b422ac4d443d8dad05857b9cc65e9add3c2b8aa9f78a0320d7d3c3483120e3e54c22ef660728219df74db97a3fc25ee67bf9aab9faaf2e2b75760bc2161d8485eca9c2d5523ba0c1e27f38d02e2978f8124cef5bb137b8a0d689499af9018cdafa00654c6de99da8024031eaab080b1aaa147bdbe14513272d3f37056af58e5cd639e92a2f61f86ca166bfa3dd21f78c495b874ebe76874b177c44b77069ba4e7e1d76d136bd41fab4cea5c27e64920e011126af13ac93d538a7f28e80729102d478a9b79f19365e60ae384120a7a8e27295c5ef123e3a47dd8ee494ab1922f19aca04ddce4b0619d744c7f5208d481e59f4997172754d24983e58ce695fa71508c333e4145057116c665b71bc5a6814ac74281f5bf21788552b74f2b4d5edf2863e1f21c32b88425ae5487aaa788b2c0be4544dc3cf460de714d63245f42f019ed3e93eef21ec03372f16c093f73636b06c29d7e3d35fac24dad68c73f0aaf6880aef7448f27494e2f3dd9381696663f9e54dcd0a9dc9491f97d53f3cf91196fb4dcd3567481e28fa4afd97cfe65483f5fc18f961b25ec6adceccc469ba67213200b3a6064e732732177bdf1674ac50041670bab1f58b22c0f144b168db1121898c2236ab359298e4cc2c87abd34dfc60db0db57735c9c375202f13cb075dba40fd47b68e93fe326eea9f3ab69256bded9ba88761621d9d31457583b43c404c9c909ea67618801370731eac6eaa460ef82e014e56e6c20dec8c4f65cae74c0fd6068b23523737d60df0d445532dcdb419c0294909c8e8b617c70a91d8abbb51f0a1723853ae72077e1a2b7d75084c9451714f630cb7ebbd3e1309cbcc8438b74c2806978eeac7cc23e8137c23810046f720884c0cd4a2142996af7a322282e5652049405c10b301a539c86b25f0da9a9d8b04aa5a6d6fb2090ea806943f5f1be69c494156fa6b97df71cef4d47033c9922f8a3ee12b24aa2a49a3633827e89102e9f23aaa90282cd4751c89f7035b413d66363755aa90250e1ad1b5578b216df580abb0834fdb72846093edf677b9d0c439161d9e82829660a3a02de0c0a6d35fff8d79f9b14d31ecb268cf6dee3acefc74f87b8f48a2fe86795c6e2ef25a64d30718cce5bded33f7e3c268d7aa2c9a7fd3833bb0ba22fc46d68717083603f19b88b9aa5c58cad034c3b303038e9d64e545f87f2ae05fa3e0e83d6efc01e9e984476df88f55c4b240587867e0184896c844ce64f4c2382ed91dd37c5b3252f53f89dc99a65b7d803b7edae68dd8fc61818b7632b66b47d023bc1a74e95e8946e97abb2cac7a15fd17a980219029e4f97da3bd2f1b23af3b1b51a82133b1edcf5592ab05243637c5534d92c42f2022006c3a95a1398b6183205d2f61595bc1411bf959cb787b4356e0aa2fafee4f925dfc9ed10011023a040b22fd8c7ad4adc9d6b13c85d3a1114d314157e4ceb99b250f346c18d98d9da459d4d25215285706af0b9d2eeb200c21ed83d0590108ad34757e91f1e829387334ce39fb622428a3f21c5bbda2630dfaf0b6361965bac2e38b976576f45988983bf891a4f776d55f32865cfc43438525f52b29b738115426b622226f7db847014a1b06ca2d8e8f13ea5cd9ea0415b7917d41673890c083e810ce5286f8e9f43f5e254056c5ee4405ddf481b19701d3122c3cde4b6391fc172b5c555882425d42f592e8f3b5279fefce8a96dc9decb6234cdb529439300c27671196c8f67a3b3bec4377af1b03d01961d000e772ac3949802491be7bd12d556fc820d7777fe54160520807a3b0418b8efc34129d2991108ed82839da7d9c633126c53ecab27f1eb63d0086b65777ac26e13be65dca5700909951d4562e12781aac0ec5118be1ae70172f127eb9fa3c7046dfa60084b7328a5c6364bf5ba5771964f0a3aef417cff28a87532245ca8b2b1e83732d6d794834d5258f6a4760501fa4c2476c9ffc4477a5b061143db2547c096864743304f23092df41006453b8fc0cd25005af9cc8a0793fa6b0c951296dc04234bd1a8e3eb16f23ed5862775c8276e934d1aa40110ad2616ae89ebc45cc14c705f9aaaa489e694a773c8970b1d76065e19fabbba209da4f79789a9efc513977239908ba5eee225bc4e8b03d5847e94f10a2f9658a111cd728de56af84015ce2071190bc697daee8ef5c8e89eb2aa5eeed4a2efd52d1dbc82bd64cb4b4d7f5f99639eafc47928ff67809443c4a59288a33fe11d2221e869e134f1f5a5928401254effe055bc91aa05469d49f811a9dbde2439391d7294520207994017c58cfd70ba7d66706fe2f93a07cb4e4940dc3948df275a752350b1a2c685fa277179166b05961bbdb6c24f5459e84f980b8d85c20fd6c46c9057d4e7f7b0fa11aefa9711da257db5956595f9354ae96fcf83e3a9f3a0114b1f7193fcbc131aa8190fe56f6d0832ae6741165e822cae422c3dc9c63fa72e5f1e8c3ce8c43ece201d7da80ea728f22774ae7e4fe21b0b671f52b4c780f22a1ec459ea991264833ee38237cb797e1dd1c3c8e4571a525f39d588ac103b48d644a78c0b62a087e9fdba2ab2ce7715959881832241b2a8e07bcf1b1ac5b118a685e8a8c9a82f72f3e70d5d8a7b8a62a425dac57e137f03d8db4a749e8abc05120a05563642b49e800184ea0f5140c74ad836b1140d97796f891949249632e68c56e62a16fda1b9eab9c987fd5c556f439798fbfb905b60228a2dd209b204aa88b0c416346d690f444fbde19f47c3f39f2ebb8f05e90b96882f048ae0df2fdc4127e84d093b103e3ec8155d4a861cc0baaf37ae92711d53bb349d13edbf1e2447148d10926c6683547d8185e091b54bae4290a53842fa351def3baff0d1acfe8d16759198eea2449df3b42700ba4ef2212751a6cdaa9705ae06f7917235a2b29903a2a7283c61418afe03a448cd1855c4dd0324a8ba1831286a97196fee8cdac5ea054f25e646d7fd6202419ad379e3915d28187ef1b43c80cf95ee526c27baac138ed9c71720da5566477f7b01bdc7e58ad7254044901b67c3a8d508887623785da2f950126cbcdf5b0ef09b041de0deba00b72e3125acac8bd4feef931437fbbab01d42107106c650ea98b31d5d08b322c6f016c2006386ac98d7801714f182cec4b4c7ade4c24b2332cc6de5e7f29c5d0a0acb1b383798cd0519c0b3149588f7d64b1e2344cd4b71d658f39f92f5e51fbf9e283ade781bce6c4ce4002f019d9c3f6a98e7c0d49fda690d9f761c93df3a6e42eaffbb45fcb04637088018121b412d1e4ddc39ab5eb58013837a3f71890dd011f486e352ca3adc9e055e809b73a33bff53e848ba3987d82e574b0f6b46be87a0790de173b9833512ccd081710e16294d41da4eeb43a7aaeeb969de4dbf0388855265b0b718f87ef98894c61bb40092c57c812c8416df4dd24a06e9c20091192eb769c065fbcccc8647d60e581e3126b55efb1db575f05c6f184e4e552d0439b81e12a445cbd7b1c6b3276c264f8bf119d87865a53f52e253b11d9f8b6f8cf94720cfa56537762ec0c69242792c8187ac355b6a3c96a04930e261231dbaad2aff9caf2ed0210d6401bf2dc544d93dee321d9f704388f756c47267d12109400cbe1df4b1cb6e5d25095118bb3cfa811275c6471ca1dd600e13e58eec3e69628cf3ae2f2b51d6535d8027f8eda260041584e43d07e792e21836a2f54933718ea0b39ac8360be7dd2a8d5a565d3213123ac2898e447f7ba2e0dcb288b5ed44132b2ed06851109ac3c952ff94141ddd4d6207aeb207e63ab300afec94fa0810dcc50f23999a1015af31c522179193715fd5132cac98bd99c07606e12811668a5a690bd1f82b88aab7d35c898f4bb64112fa2eec080825a41aa48d49a956067758cca9c2e42cea17183d8c41740e916437afda1c605cc6c9dd091e078b2b6375c271d7a33870242d63375f2c1efc61c368e2c01ce9dd13db2c9b2e8fc2f0daf84076ae05ccf906d2624ca1cfcf1ec18a8ad9a3d2ef3b879a53d0f33f542027a392dfae7a46714472db589ab14505e5393e8c662ee0e1525c399f845143e9f83b10eb21261411a4a19cb47c235ebe64ec53f57fe19a633cbf8c0c203528dfeb6acaacdd258c361b6541534d4ace0ad1900fb10bab737529c720f1cdd5866eae4e8a83890b7069c5aec24ce8d84b2719d4e0d335d7da08ce6113803e0d1bc9692ef7dc70cee8a1e69ac13b348195757999be4baf592ed2e4b676f83e91a9c6ab3c03fb93b5fda4e3fee7a5ee91e52affd3008525f831c5017596a7b42ff38ac3f15ad6d99dda450fa0591617c737f55fcaa00938af347d754bb4f906a6628bf09f644756131f1d5e8dd0aa38600425744bfcd60cb3a8ca88e31a64caa14c662bef911da61364ba83a33b3a9fa577bb0e0e88e8e364cf9b269c3810c33798a470c1258a8c648615a20da043601b66109c1007eb1cae4b6fd893ef1209eb5a07b62efe9fc1354180d5a6d18f57951c8fdd0aebba043f8906f4cae85899c7b7b7dfadeddbaef2071bbd31d654de06cd337fe11d53ce62833737c68dfaf87f6fb0b6c7e2f98f3556dcde6d6ce43d0bd7b43e395b9329f4f675d1b612b510a84db9306472bb8d1f0af1d940ed4a5b78f750f62f4a3595d6b924593a138111e52887fff2851248d02ed0f21e5af531831f8601c1618689ab0918fc74762a7d1b9c0fe8006dd46830f3254a6d47f7082c016229a0fe27a82c24efb57ae8128db2fd1c7f20ca65308007b50566f3dafb70be08a15f9e77c3bedcbb42d1373042b34d81c958e1aef06c8d6e5aecc893e212a719ae61218f670db860a405cca812373690323cf9d507691f499c124e15b8c239707d07b034726323a1a385207dac6a64e4eb03a2929ce4b0188f35686d88950a12f3020c93ac02a719e8fca305e195370db0ea39ef8a49ee60f4c2cee84a8e07477786f03487c1f9947d52e63322d649c5444315453048de8378d9702333de04848aec85901f10668882a7b9018c4645fdc24cfccb72eb373c7f8495656eb9ba1e48c787c17ac5800058c562184116a2309a7dc1fb7a3c1d8707ed32ce1b655942aa1c963670ba7d8adfd5b3c213038eeee8d28a6e2fe6a359e51fe2e8fdc93c6a3bf591f64d603794a383d0546db71fd1becbcb9407358d0856bf991fd43d8c2b6282237bd90f6e0210c1fdb7077529cc3f03f5507078b97375c1c6432e50f7682bec580639726d06006f82a0bd17fd5da1c2d0f8a26c6bd7e646b84b7f5e0c63ab570aa0ae7e841d066cb1ab59ae9d60680fe7123b4e721de0cd8119a0f6569fd2b6a37b7f181fdae637c4142032ddc708268bf4ba075ccf05f531b6596fe0e876a9d45e3b5be17ffaaa3d15680e6fa10c74b718f36c4cd7a6f6941c7a5136bcf826c36b15ea87d45e97d645d3a2e23db64729f8150e19fd1b87ea97c6369417e9ed3fc1228765b27f3eceec524a754f5c2bc706a619f6a5500c6963ebc0ec891e85fe46624d3768e89817708fcdcd581b035b81fee030c2180fdb6fd7e34304a5cf07eeb629c95450cb759e0c3402715c72b52e91757047abc1c97862effb3f813793ea3487203fb7f433fff81b9f9c3cfbf875d0708b1151208f8d6fe3d818b728598ee522eb8b73bae81bd9e57c8f5d7aab7ded587e178b7d64cf791c8184008d0ba6d7f40cf24925261eac6289e094e609d6efcf110f03120314f217d0706ecebeddbeb77a5bb02102b9253bca9bba1b0119e4dda49a10e4578d2a92f50e65646e7d49b66b59a1beae8bb956c29095a0be3f628c743e4f76c5c5a9dabf909f93c2367fc4c7228257cdc541d3b4143a333bedb82d565c93f5d9255ec77eae8a609c769b46b337a00de860fccc67809e8e60054fe34e755c11d7f360acdd9ea47d5a42eb6925bae5470f8fc181568386f8cd0267853939f207f3d01a8830a8543b04d75a994a6555329571a9956bde124d77a6b428a21fbc0603143c74046bf98ce3fe6848b2cf5c1bca45b58981287b4d0e80d887804b3734c229eac35574030cdf6438810bb25a954aa23c939ec0e31883ccd50698cdf3930144ade14f40da8042ba08931258e26a5b517154406183d5cd3c99021fdc2faa0be910f9f26c6af1e321b044000c74769a12f73f62ab0cb23944408402ae8c81616363b630c708056ac5fd75023077df0717eb4c45c9ac6d1ae7acebf45a0043cd3bbd12f31ae2fc60403979f0e680ba6aa5447044524ea5c8dbb9cea020f84c4640dec89eb2eeb0813f381d09394042915be75731557055c8f81554449a30fc489724713cf5b9c76dffb310c10634a7f791d940cd469fb98b1142e7f647424ba168f862466917d98ec76cd43e97a24d5c502f84d4b6c8c317267e37db624c05b5c8880a1aed2ceac229be7d0e3599e7804c5a59862d438fea3e1e7b261d225e62c72a184fb9929916447546744485bcf73af3e679ae80d32c45528077d6156a52047c4b6b71111d4525142dc7b5e3d3d30a446d0963b9cfbf157abc4ed4d7c674db0651831ba5409f30ac7c01c30b7b14055818c447b13ac042e5159f8da00065116fac845dc6852adcafb8f5e1b380dd9b018d82db2e4eed8422797d435be3d8d0cf8a99b2dc3af23bf4a1452b91f80913726e4334b9d5758de5a3ff3105466fb4ffa7c7e0958ef1562227d91845a458b7dc7245c7a64c7a170dfccd524d0a5f7d863e9f756221676b1d0a431da5474ad1f27e43b41be0b101ac412f341d429e532381aa83cd9375c27b5cfa9b46f5898f806460e18b644d1250d11614a35d7418e05e4edb20217a98ae5f0a4ce79379e7782682b723673a28bb05f838690e3b8f7b5d4d928ec3318d4b8473738718f4057b71247b645dc672fad5b053dc3c76a662f22a5c0c5f487b3ee1a5fcc69aae567d2b934c6bbdebfd1fc352a023389f6123e9444f9f843a4da1832f24d9459cc6df7bced15b26c35f1ce9e46a2c99d155c61c5869079c664773ea0b2d2ab21af165c46109752ffda268b9eda7137aa6d385fad70159793fe3893e03e8911a4037d02a955d9be58636e3ca116769d23d9ff1ee61a7f718b63418996d47151b7ac752bd5d3d2addee17f4c93c6dafd4e0afdd4f22d9ad950a5bd362dfe2160d1f9d4ac462bcf6bcddc16dc38836cfeb18bba8afac03576bee667d686239dca86dfc2a6eafdb4786f726ee2e46647bca079d7d9b81bfd0aefa326b18e35f27283f8dfe7358225f7625fc6529a5d6ea08b89e2c8e8efd2fd4003e1970fd59e9b33da6152f8a2300145a841cdf58e86fcef1caf3186c3f0678a505498da7d4396e96b9676f22254bb988efe57c5d8b28403e5817ee1b9a85bb87ba9a29e2e5047e4c3caa95c0b0e056e6851478f8c8dec349781649438109813fc57298fe94e85629d0e15dd191de05f1bd538b87695fd4d87cec8c216875aa8ec3b86aee90bdb385e1d0775529f0f91cf4e73f6a508bf363aec87043ed8152cdba09e2c6fe305bfb1300a83535d832c09808dbe7293fd027936d62f2d113d6e7f1ddd88ea4ce36629f8f3f62e84c35db63a1246d2f1597488d9badf67f524748b3c99290d0764236dba17506f2c3e9b9be9434ddd15dbfb45edb4e22bc5080bd93dbf317b7f3afa18119eb8c5ea8f91b97739e5cb473c9b7da09dbcc411bc0865b496c5752e0f940bdedf622ca2ddd90dd0efeecbc9d7af90ea32f61c0ef16bc35f322580c66c61dc9b4186a1a805b0185c0fcc8d668c181df39ed953f7508c55900b1171c190bba2de88df48e87d4e89265c6a400c30ad20f44143cda5821a857c27d386cc17ee28d57f7b8f2100f42c2c063659c2af937db3b7de9b2ee6a4a2cf104f4274f0489dfcaea4c37316b8f5f17ffb4782836c95da5e911f0454cbad1cbe5c2a7e9e5f6f6d59f957ac36f8de0893666f0081e16cb5c7be00dbc031083c28d498dc04ed67aabc00524497e58a7f9c5b6a6237e6ddd14e3203499105414e3fe2679e6dd67d7207805a8dc6b296c73073508036825b11b65b3c9889b4e7a51943d9c77186757c63a0818379f76181bf5032502b9c001584eb5569c37c47d036f69f805c44e6277e9f8f198eae397620b813d86efb7467e4fe50d3c6914d83e5cc5c8e6163f767a093c0254a40e0d6422adcca04e046191ae95d8456b47f0f5850dcf77fae99de085ad101d08ed1297b529e848ac1bebdfd1201c9e68db13fd1f8b14f6d1eeb62ed245387a243519edce10063f6997a7d9f12f9ef8aa4c114b7bebb08e63f703112d557bf1de23178d872f93f7e544470812c7ab70de487639dbf753478038af610742b0b3fdee76a946d51fa6fd209e9a636103f4f8fec63f781e977c8d9a81b2bc59b7f5311430aa0836dcc11a84815bb9d8061cca984041ca928dde1f9dedab0633d189d5b73328b53b3b5348d8db07a6f04dfb26d4ad1f502e04696ffde9928eff7620861e25ee3248910a735a47b766e7ebd87607e38931b601ba2b71bba99ea7572b1389234877b2cd2da492df8810f012a4cc61d835bc09ba9f46b520b3551660eeff5fdd4822fb4f819e28d6d7c99eefb3bc4c04f7dde947b6d56c1d6b7c8616a7b4a9762dbc5b9068e79edd79cd1d67ed15372015c9d3953fe2d412da4e6d364ce40142916717840c567900c02d20e67401658025437153aa512b8efef0a8089510966fd5a99e4a46cc572e6b47ed0ba7d67a8f18d295eb234a165f0f7056254e0650fe57daa61d98b9936cb5876a8a8f3ea9e500de6f7e3179bd0aab15ddbb084ed2194f39c81e8430efdcb3a4628b0bfb588a11a189fee8a47f68ea034bbd3cd6976438e7d4dcda81d664766085eb07a55413f56248e33bbd7e3ba5703cd6844820f7b76ad303704998bb2fe9ee49284b5ac891e4f0920bf744a9b0721747a0a1c68910475a060d7612f2029a8bbb40ba2fefe7620b75d659d249728d435ad299de31e8bee2198650b69495859ff60f51d5ba5b15b66bf19992744ea363f80bcb32114403276e86d77d55b0332bb1db5f31ce062bb0d8531db70d6bb0debd0ac70d2a60d9bb12ae1b6a63bfa72a9e0dd4b0bfaf4a9c8d5763b7b30a3c9bd43b9633e91e6382649e2df02f44a46eb446596af341789623fe03cff24468e93ea55c96b1c8fc003f5740cf19f637823e451c44e1f0a1be06f38f2cb291722ab4a0de71ab7e9aa775d8c1c5d38b12e3f22a539a91e905a7633bb0c9c2df72ab95d46c7cf0f6f7c69e371adeab8f53aee7412fdb3a5416c1ede8fa134799524f2a01758cbad8491c675d41b0b2056f1aeb871442b50bc2a98db860d267d66a6d04aacb609b84a106b12ca6dd6ae91e6f55032f510cd972122492903c2c1806f17e06a633fcb5bb41d7ebcf6a808304af2551bd130a938992274ef6c8efa3e18c6f612dd1829df07999644b52b3a5e1c02d952cbcaf8d9052450aff837c1de605ccb2d2758ab275724ad6a9205c67d7053f00413ec9cd0ae6a946993cd3ceea921896ef6334aa2ed7fa8074319f18b3f303ccd9804860fcc1b5efcff94ee27bcec9b90e8581bce6173aceebc2525b32d845e8123b5ee1af3c7d9d7069b40607d716299370a5d8dafb50d45314d934fcaa918ead024a23efb9f80a129f31607081278205a48ff02b2a9a1d9445948a3bcf7c32ef10c784c11b334575edf501de8acc1609bae8d8bb823aab554e08024b2d31f07b01d9b20d0ad63116c187c460ca1a6fe08e049e1f8e39b643e8f26ae4b18062f406f3149fa7d65a77c9088b4aa62bd91eabd31e0f10c6cb3c1f5289224afb51532f85fd2023d427aaa0be035a57aa61d676497ed9f592ad058f64dadfca9c558afec2b55f019571d708f34d81ab4f3c4c13597f1017e187c30e2f40c4f3f2fa0dc92d68f896a722e14052ee3f46c1af4f090cc26562dcd84ae46e14202227536228502f96be0005ab7a2cfd61703f6224bc109400183930f4f0ed321887b6fd95df636254ece54c9460943f1dcb883160a448577b5b08b16bfbf72b89d7dfbd829e70ac164ab0a852900666bef8f3f9901b2cbda43efcc5db6fb99941506e3e9dfac127e2e52dd4ae27671298ca8f7b68aa455165c69d14da84859c13510b62740957cf2f4f97e45c349cbd7967f14df29d9de21cc162368da047a3608c75873d126d15164558342ca144cda375e2c5974d9aa7922b113a5f4b0a63a73703b72fb5a9e361bd9c346d1342d331b97a4a639ac249b98a016f35e166933ff6b91cc93d269728532007e238728cbb0b72e868a809c3e33d1eb0f7a8fff1e9551b75a6c0655619c8d7bd8680fbc40abff8775fbf461a98202ae684d9934a8e7778f2fb7c9181208388ededf1901f9ff281c958c18e2e1ffba1e7de58a19a3a070c983353593cfb7c9e866ad4b58be7802e309b308f1edcdcc9004ca25cc59b7b86039909f7ecf9d4f8d42876d15877c9164a58ae8c52305249f1339208b435508f9cc2c60c31389ececa2da0a637dab5e3b0d2d8978567e840a4a017ac1e83c1b3f8dc3943708570caec84250736ff657b7d93dfd4bd254a28455169741c287c91b9562758f65d8aca4e0a27720a1389129ee4f5e2de149fc28b6c516e05261ae4c6981d0d67c6a5f33fc9535ea1fb7771d8b42a7f09ccf7acb45bea9e271a45a78925bc8baea3aeb0fbee2773a831394bb30efe4ab0027685a698b1d1ae11486fe307eaf9856898e596eeef10b15ba0b732c394a636ac65acadc73e05bf72fca5737e40e18ebb9d8d4d390090af22c42b67178be7ae5f56f41c8513a269ab5510a2cdd9bc2c4343b8d6d53b254a322739b84a46ba8cafa3a5bc16d62cbe8cc19dc61a0ab634533c1fd016ef8d3bc916545cf00d556f840c70d11d2cd20072ab13c0b0ef674b83acccdaf21052da77e4478754adcd323f790d0cef81b7ad9d2564d57b67c559dd7ab6d7e0b5f5288562cc9d71c52776d191588092637dac957f9efef957bf0ce0afd32687ab62f4cb3df4030b0fa404057fc7c242047903daee15be31f160e7c954a85daa26ea347640eff58bc8dab6f0b537619f98caad1e2279ee887098eae370791b530c600ead4a1a5aba7a73caa297e827d2d8eb62d7f073e9cf13e79996fe5efd33b4ed0521cb17404320d102c35da214ce844670dd586d08a51967a050d9d9748668d4c9a22256028f06622c252bf96cd82f07a9d8d6881b042ccbb853a6db5aebf22e1cfa4bd1969149f29273ea64a48fd79b361f5a28c065fd830a53b41390180127792226df14ac37d7efc8bed59e12098611588fdab5bc7fcb38f93de56807a91286a50edcfcd99a889a2dbe6203a48f898e0e8938b33502584666c74d4ffd60253bc07b1993277bb8d325cf35f1bab2b82e9f4a9e5917132fa14bdce687137cb26230a43b1821ef6284404bfab507a0f7abc8e25eac79a81ff3cc0cf6462706553b5bc7d41042b1ca588a7e71fd198ef04eec768768b97d9bd41b7802f650fcdec437703e71bd21551515fb4e6c85e1ca88a8c282902d5c76037cb0de9899c5fe7c24734acd05b61f86bad0d1b2c7d18ae1c65387bf3e7c94f17b84549508c8ca833c95a3e421a4cb1ee5883b310c73ea511981f48a099dd02596d3d676c7383e1524c4b2e59c6e56afac7a4bb89f3228c6546fad9419038904f89a9a56635b76a3f13c02dbcabb01460ddfd85631f8b7743fecbe8e036cf69c9d47fd9362cae032dcdab8dc58691510b7400eb6f8ebd2aec6dcc081c1b6968eee596255e187e0783d631ac66dcd11f3f420b4ccfa6099c70ddba05497586c542da56335facfc94a3ed00fb8b2682214be94dd79fed76e43b9f4feb63edefe52b6f23abc12c32f46ca2761634024c30f761ad44efdce105d152637fb605d8a389effba6535b0622b6c42ad6c8fa9a347d03fb111235f670d9f59454d4b45a76ba3e25cad4a6b3fd9a05bb9226fd76c4c013e6960e0ec6b704d0ac18ed28220c548d9e82101dd7a5f14ee0a5692e7ec204bbf9ea05145df1cb495a5f7a49e531d86437f40a1a005ecd271962bc525aa558e5e5b96f7d5bad3f7587df3c8d6d1135cb75064c8f8e4305f37c282ce119e1bceb1346fdeef6e10c1b1e9a503497d552dd199c90ef4c740d2396a1a2ba016180dc19cbc822f472df06288ecc6db8e7a5bd9fb0c723554950c4b70614644f863b084e62f703b474251e7d01625c7156f72d59a5710a7ea910220ae696d20883a475128a372fc121b08397e8c0f2ad0ff162b032df353ab5f3951e7507bf2ab6bc60e80085a1c156d155856302817ce83fa8f8f21c9a2305b287fb45bff91734b21b94f1e43d76bf4f56b81d54dad13736b700522a94fe0cd9500dca217146458f033977f6a4c61dc73d4b23d11ae20f111e8abafa88f5d98f9d2a39392fdf387c9af83fce2906c28a5d3be58b011374119442a708e7294090b0cc7cb9273f1e4eab9d6a61706f72ee8d879a2ae87d89323fe60432b0862472b0c7c4ffc277f047caa4856bb6b8e3f429943ee03747ecb1b7d685823764171e06431e00c610d8a5b87a92f368a906236d7b3d0a37d75e9c133459af4637b60fd22d8427a1e629151e1221c5dad0d5d209f5128862f783c60f3eeb48bcbbc0f97035b632a4cb2dba7568767c7ad602df658d28a2a3039fd8de0c2a10304dd8fb807b438967a4320070a37d2f55b9d06f534dbd327f829b08447ca4f2aef8cccad79b1f26cb88ff172e69358ab111a2216bc6f47b905c9c590643ba9da7a4d1001842f60da29907eaa22768845547afd2f16387836c9899f49ed7ff0c5fb65452d8232fa126334871c3c1be440170b8857e6ff95fd2ce49f11a7619f3492c9e242d924fe79999c16cf6f29a7ff779ece8dc6fb9339292c691b2236d2d0afc1ac44d839708068b6d46e0a616b20e0ab82958840ba8a135d5048ef985ea338f8820b99927be66679c99061af9d16c4736855fc5227b5b6e2865033ee3bcd10c5b7d3b7e1d44d70c92cbc96a4757154f846e9c8354ef5cc5b59708b40a7019406f43717702e5a3929cdcc057111fb41a60054e23571107b5068ccb99da5943a5571d6d20df46c74086b39240f6188b275d468ad4166ff3073d47e227dbdf00f679f0fef51dda42259a5d82e7464bea9a7928731320fd5e98c515a5d1cd5012a1a31a661bf90a3efa7100f9b378323eeb68e93cd11d517355319105fe328bc9c79a8707d54164947a171e3441806ab59197d718f8da2afa0d81fedb53ec88420684275b2b7d6bf073eb2a24f992768a8eef1810bb57d1e1b2416346f6733d4e9f0b289bc17e3cfd84764b69e23b24c9d27e462f9e6561e1e45c74a7d589b0c8ae39e00b38ba9e9db3fc711a0c8f80a2a6c2da6dd8f9248b4a38ba9b982521127929a14c2780ca419583c8021d68ddce46340526eec43ab4996f1c682d802283278b96f92b418a0f8f936fbfaa131b87131d29caeae91798606ef3338a88e4d480f72a168f1c7f9e030e78b4468451c4e7be0d064bbf9c12fed731d9f14a243530cc11a572772e2e047f000fce5fb436310d986283c7ebda126a426a1f8b0001fd910663d022a31f0c8a5e9d62775bb8c043066a880f1cd6716d86f10c2675e62cb2569091bd210e542a4d2f8082019c520d16113bc2a2c250533366c04249837140164284f00806006dcee5276f8ee24e6d7958ead0597e0b849daddaced9d46d75472896be2a0894303cc9efdfe604935a86c1580adacf3918c626f5131302c65ec3732f3271db30a8de80da157ba44cd22c39ef7764064a2496cd3ad7ba70e09bc542f65f93b876c6201f8c560496156edf237cf630bf3c3ad01216dfbe1c3918db080840100462eb5845480c6757a9835f8338a1785540872a4a45044c60880ebdc6c94d8ae7242b470f933723485f24dccc18945b3f9dc8a168dcf2953a4146aa7a32c799c400742b4dcf9e950662d9e8082ab8e90c54c5381895b1080fb6efaee3467be6011994010c9c3e9157eae0560dd385068a4f58bf74c52874358f0ca84345887b8b58ed0d0741b8bd73bc58dc838f54390b534da7fc270086a4e799324034d6842ebc362fd884c636f8ee3314096c7ad533028207eb736388a79f4d4b0f4f7e2f3c4f6f0c0e67fad66fadb70c6b3c531d2cda34cc10ea67e0aac870c781ce0164dc0988853d4491d5828e6c88fd903b63022dcc8087358934da56327e41bcc1971ec5c5a8ca659719c44758c98c743ab022c68003385fb66a6c7c172c93cedfc099403555d1c3c0138016bf1fccf2021b80bf4611066748678582705454485b0a991854093328ab7f4cd107181e2f39738c098056379238ccecf5df0190ffe711ef3a1da0a3c635df192617be5e6fe25610e3a2bf48af72df328a1d05e81d8682db07cadef6e7b0b0cef0260e1900f4df95862519d20348b6117653acddd820f7477fa00bcbf2383b981e9d2fe0b1eeed0c26bf9480c95d58219398f806a01776e7b5ea18b2dff808e023630fc33be7d104acb2ae277df8871f24731f8494e10e0e3dc7964821441b6970d805d8ea45206880da172028d1adbc0ce5b86c1225f1fcb53862fa7a02466bb29cb5729891df597650957d8a0964538469aecc228722244c99eff5987418d8022cbb2600e0e2328ec8b4007071f62d371f468c35e99cc7940d5bc0bdf980ad917bb6287267a0a5ed601da47cf77ee05912eee63ffb7709b0cd6706ecc8f0aa47ed63200a15ac1a03a6fa0fc4a54384d04deb5732ed7753543b2afaa0cc2d2bef0414c96a4c622cd1b55d55f1c31ef4207845af05282f2ebe7e58985e13de1a62cc944851b0c232fb1212801b71154b0296a76deddab8c24a0b78717b98c1dec68254c0ca1aa50cb99d7195c3b08a4abbf8ee3451dc3452062226c1e6ea6cbc79945134ad96052db0569a79221c2122e36f05e0f85bfc906ddc3c306f2ba44a052f503e286ca9081ade9ae73d52c2218a64aed0e405683c530ac4141a40f14e1d12216f280e480bceeb32af24e6807b0ebd26182c062bc86126880d6a0bf5811406ba49c2da41c75aa156c10432bf4fd9557678d71ea59bb126e36ad61472a86747b341c3036c2d31a44a482d689b6a33f2b593dca1705a3087487ae9d3cc89ee4ba4ff08ebd2c1aa27522a21afaf0c6acdcc4a9c60396e51c56b20fef2341cefa2928611f2ce2366bd099be044628b9c39addac47efa253b8d33cbf4b5a6e1e24c877d28f2c4c0778247cf44e0da81b0c177732b14304ca91759737465fbebeb394617c69ee1be9c75558d603aa91301941834023fa62183a0887050d30704032d84d37f9b73e2e437a8321a8017ce38a2d5ab2e815c554b952e7c46f09ed56c01ee4ff96356af43445a6c4d56862213a592e3b791107667745b5710410d417571a0645754bd446cdc5b4db0d2c7460af5b00a6a3a98efda359312d394ac32de0f661cde11ce4c21aee5cc35bf99f4dca31549a5c8f4af12b4e9847c078dba564b928a9aaaf38492c3335414a5d420c724242b8377d4dbcd8771a85383f1c81bbb5f9c2a9941840b35013156277a181bb26b65f4536d4a0e2248831d8f3e1ad997e32cbf4cfe35c4b56936ab8bd45c705188f41ac266cea5c9f8989ee7fc3be3545d643024bf145c7e682474ae948800e1a3ca9efe84a7db5760b96d815a283efe305d50d03ae1e3ccb89603a89f1815440f88adc5afe810bba8e103c43b041f4d8977aa4c6223868c8643620e5dc1ac28d225a1a77a945849cfa785663ef5d87634ff2bb395e6b028e8a5d0acd88a5d68efb6955f00c9f061cc3086b196c5dd1d6dc0e8bdb24e405c0dd5259dca5a4795dc0b65b61edf4ef0863eb358c8befc0bcf0723288e7340a4cc6d68b00a1a3d85a1ba50438885695ca42ab2b7d647db0ff24e9da22fc6e235d734538615fea35fd9e3b1677913c2bb1e80674b0f7043b84cd0dcafe75a079f7e2821eb6fc23d2869b16613eeea32f6d008b1d3c226dd3a022763dfe44a72323e6853540723000df201c19facd22613e580f3a2c247d8cef4f0e1612caf12c25b0059b8735e0bad63fc336b36785a8000df38d3689c6c6284e8aaf42076d92e7040d5d600f6fe393d39c9c13a735f17227b807227282c8cd8f8c0e12de767a44d89000165cf4846f5e82839c96112b031def44268b8355339211ebbbfbc8660cc3209f782f2050b73d94bb59873e1ad70cc3561e09483b6257662110a021d02e2c8ccdd0950bbaa6b91ad01be3f4b64b33faff7c4481796ea473bce9071ba7877fb388a195317b4632b61ff8eb1ce8a9be46324e887699fb1e7b3d1d494664693c023d0aa32d01efef982a8d899ffa518edb36b1331f0ada9cc66db156334469245651161cf80f11f185bd960bd3a03fc3c3cca910dd32cecc2bf4086538e8e0ea08e28fd584eeaaf81dc5dcfb45091f0241e28019a588628a618f5858468faa25952b5ad959bee5ed96a3a02880e80be52b0d58aa1740a846d5275605de719124deb130736410611d715d1ae5b8d61dc8f37f6034bdf24383221e32985b96d97735039f336fa174f7820e754886569a726b343d44b9d8cbe1917803d998889ad6a541034999b2e15f4ca2f74c16f6e54a89efdb568b2031c223a30314b7ee8b8edb5be11b37f27ca0ca661b4ca33860a4a07d01328d34fa47d42e94521567c3c01476606c81f31129aa1ccf74106f5fd3fae2fb9264aeef238666d32a63023a2a41ef79857c79d2ecdab9217580bc832357d74449bf49173ce1a30378010250223e621cf7949971360da623c6a15c22d4eb1100ecf600568eeeee4ba170776d93a6c811434ffb60dbe188e12e2884992fbdfc38112908a990181bfb6b384900fd4ba293db7d8afaf0933b35aac211a35ed3faa53edbc9d77b196f1b31e8b15821380887fe00744f1cd4c7ef65e5a127b018bc1c8ffaad468cab849c4765d139eeaf614e5fc254d901e488041a8b7bbc58204a5a351d2b13189dbb1695f10086f06b4560cd04b66554c6e1f883b557fa68e5c519d6ac012bbd0c88ad10367c59fb225e0c0cbb041c821e950474abfcd93c68256073aa7384edb58024191c82c2b6ddd6f6de5bca9452360b230b5f0c4be2b3a8d5679df85d2ed59ea864aad5675d6dc58bbfb4e245a25f5132ad954c351ab4c5c6dec59fd44f38e4a2648a7d4ea4e745e47505615917ab55af125a906fa67808c8162f92b15f410ebd275b9a7d8a7209826f5132d11e02f163bf247e2cf6e237d3d0af88a5f8215c8a5869d5df83defa0816dae83ee03f3aa167f1276bfdd09fb821f229fc24a18ec5c7c824a14e08e4a0031bc03ebfa8d80b914f4f495e27f44970baa14ff155b681eb62ff91b3ebe526f949911fd6c782fca8f057f5657d5af446c56ff76d3105e7878527383faa4b6d9c9f0a97fe57d6afcac79fffac5e3b2d47f2fb1408bd5dd18a4573f629ad5e34f74585d67e51519f0adf17f57de12faa72adb55a923a31cd31550c2a56c2645fb0077a1fe3cb603f025ddd2a7aab0f8b9551b5144b0a45a5688ca452f4466b06f54718b792bfc456d98ebe1f69bb6293350c6a6df28b7253ca27f58125ed7293babff17287787788774fdff595fa1f0974a576bb5d6ee7d5bab5039d54347d4ef361ead2d04da0cb6083a067716d81de0738c3a4d6d1a6d5651a8b71d44b5b0e9b4b3bcda52f7e633f16974de66a8f75cb5a97f2ff7093f2c848df3308760e7772f99d0cc3fe96e918f27d5b376b1ef835afbcc0aff79c268d57ae6178ea2c212ebdb9279916efa22871e9b716efa26cf18e04a94b39cbaba09a1b9627ad011cb8d94108d6ab750a7c411c29eed24b5fc0b1a08d81ae9874c34dda24ae7e1d63df2cabd58b90b0a73b19de918fba9dcc950bb6bf5c5a819ba26c07d0653ec2f98d3e0ef7c2067b41929b1457b929d028fb217e4fdcdd41c1047cf44a4ebddc41bdafb20bea1dcb920ae81d173a8e961fdf1a839546260e2c896cefc67ae58c8b85f929cab22cd227d2b25cd6daee4edba1d0674a91b83b09f1839819777217ecf97968e048fefc26cdd11e1cd05cd83a2092e4187c2303c01898f77cc0ad40cf47541782a427bbe02fb01703426efdfaed01987b0da11986264c36ca643aea7b5c5e1d6fcbdbf2b81c89ebd48f62dd9ebe7f51a8add8168d662d85f134aaea0be3003f87c399e63f5458a1802ae3a9e3399adfb6f25cfa952ccab242772cbb397b19171bc1dfbe6b14bed1b7c2954257f522f4c49e75772957d1eb1241af12d4e3e6e96d795b14e89b24e2c9766aea3ba59447da8dac057d8c675d04642dc8246be3d778d6d9c8daf8e6b34ea4d9d9c155947d1059db2082eff711c17769c46a49c6dfde487f04efe3f6314a2332fef62359dbc0f6e6fbb0bd591ab15a8af1e61b91e06defc3fc1aa591186fbe181b77321d9ee761996108c6c6b19a8e54142b7a984c47d1f8a34c4750592b7abe413f92bba2a030e83957e347bed11f3f94e9181f94e90812ebf51a2f60a30dd25a7106591bdfc6b30e06591bcbda0630bec6fb98f1364a23b89ff1354a2356468e1ec6b38e7659a6c3e6c77a5197d620411b24d35bed5d06627d8d0fabcb8bc6078d34c6d106c9ba1a36be860d12f713bc8df2e98dfe04a5d5f8506c944a13bcd19f4c55a346f9a3078c9ff1478f63ada387f14bb89f01e367c0f8094aa6371066bc5109c40679f43548dcd3f8b8a82c4ff00e0595a7ec0e8d35c671fc50458da05772b0cb8f2d426f46454c5823564b34dee88dd8f81a6f84c62864e36b3c0368bcd18b4023770edc91cbf6768d5feaaf41c1928c372a996ebc8c67990d0abe364a23564b13bc8d3762f4359e46696482b7f15f17cd81647986f7cba2f2a4815d943ed717e5695d9467788180c63e654c00d3c21212f2f0d18def321d6379e4b2d1d778061895b5a0377ad6d578064c50d6829ec6b3cec62bb92883acd597f14dba1a03fa65fcd2048fe3ebe32899ac6ab9d42f43868cd209005531becb5afd969aa0acd572c852bf8c2819255343b554d397f16743419151365615005e02ac6b9f652b247819648c17c7913b07d291cb2f810412c8a82f0199fb1824d2534026fd0d3200dfb2f1452d536e52a20f00195e815db52a3e1259ab25d8057ad11b5563c12e9a8bf1f4bfae4a8e6e36db2bd2510292753148d65140b2ee06c93a97e9181f14faf3938d25d8252bc13ce00976fd09d6b9f4412c9afb7614c4aa95a7c5129b8cf132480a3ea8b68104dfbf24c1f7d14bf0b55c9ae099703fc18b74ac64ad3fc62ff5c7b8b124e32928955cbc71e363f4d653f037cade51505a8d7fe363fcd93b2837ca1865776d193d8df195fc0669f431481ab7abbfdca43658d00bd4d347ecf8f53bc6db206b90b627ecf9d52ea74f8b9b1390df57f5457d4e12f49111f9ed682e6c519e21a595274d89ae20ed97f55d7d520020adec8be4a92246e97dd14eb0a78775e97b5867bc2ccf794e4e4e4e55de1b47322f7d4fcb91aa0c97be374734cb500676895db49651528ee424557b97ee11fced6d6f7a046f7b1fb73723f8dbdbde7c25b7dec89de38f5cae6d20e323f825191f418c97f1b55c8ae06f25d3ed237825af5d8ee4f545735f77950de7c0ae2ae7d2af3b5cbaf3486f8b8fc02e9af378f0f6807f88b8f465a587674bf4b6bcad5abdad5a45718b6e9d74d7456917ed0a436b6934ae508cbbe19fb8dc0dcb215eee9e15ea7ee123fa1190dee55ff446a128560ca74b61909d83e8c865af72a47aab38acaaea2aaf567980d6f49e6b42a4e0738be22b398c30b67e3b75b0e4d2cbd8d3bcd488d2d78d6597ad7d027597c19f8e49277fe5eafc95df835abfbb76a5f1cd73ae5ebd7ab5b99cf5a8e41dd2bcbdc4fa6ce3daef795dbb76934add495e81127bee25f52b79b5697777773f8ee6ba5b0cbf9934d41395853db97710f6736123fbb93deb06f98f107aa362f8fdb4ca47fd4268ce9bfd39f98b82db3b2a70b33fdc21fb1892b76c47efa0808ffa6365f3d10517d02b2b6f943be88d79ac643fb71f84953337e9dbdc74faf5c2fc824658afa42f44c676478159b6fae2faf13ef69eb247ba939bfed46a2e1faf3c7abadc74154decd95779ea15bdf9157737d3efeeee6efe9e824beede2f162d91e9383d12821b962a6eb9e7eaea0ae98a5e8531885c8349f34a49a151344a4a65f6b8a4e0d573e7d0eae526fde2c31f14c7d63fa9d7f858d6d268ffa689c3d1283ae6e8ce9168e01c540fe3985dfaad8671804fb5f260691d71e99fa0969efab46a1d51dd8f9bd40bc4ca02cb3e539f48cb9ed4eb52b156f06b05758822f5a2a07fb9496914bd29a151e0d3a53bffa24e8ef4e439ef6a2f6f2ccab261d8a40356d67cc87efc04c87efca65b49f22c328264ec59c6afe4e18364d365d2014d23743d55a6232ca9c6b1a45114ec7224bedc5851b45cc2da2e7fa5cccc950b932bbba0de300c432ff498b1982b1dd263c4ca7bff601ffe12ac0cc112ac6c3b5deb520a140488c8d575620fe38b8d91340fe0dc2f9e7b7a13e248d5ab00e7d0a069d0f0e917a1b9a0179aa3865293b97ab0388a67069a9a6ef111103eba4172acbff15dffe96ababa26d25fa122e857bc11fb2a7cac08fa15dc0f54db60c543f03e543c0d82d288951b19fa15a54e2cbb653a82ded893bb4c20b22ba332afc90af011fd1e34773ac149f096ec9edce5e27f9f02824ff133153f7b1f107c8a20320488650d83154fb5c2aa0603faa6b20f10214580b670e80222a408fd7662235995e9c8800e3ef2afb2908fc4f20c82f3d8814e233203f48b1f937df8fd6229be2ce63510373daf6f57914282b49450103964f617d7a07354600e25e3011fcd7443b692e10d02c24794c8cd58d3e842593818ec2b4f3d80d05bedda3bdbfd3e288ef55c64d1aa55b792b940f8a8be587bcc4a1328e8df3471b8243a1665d9914c16db2590fa956dc9a5fd173f58dbed3f43a0b26cd8b74c47cb7438959cdb3b1c158b58b03cdcac2fd351b5b63470b3bed6ad4c3f05b9e28748085a1449d959fd222976e8557c93f6f28a5f4af12b4a26ab7ea6a192698aef7269e8212899549440e8ad7a113eaa5ff465c19f09ed2cec5b87e740dcac651f2ba48285bd181414f4dded816b99cb03229b46cb643a0254de3fcd7925d39b58cb266f24f9ad734cc03470d8e0a317d7ff850f36bc27aecbb3963403fee16bb07f4f1c8e73bc03a3a58728495479028cce3f89734a4bac79e1072c512930d1f92b71cec5113dec49b3c60e08503a7f1e9ce32c27aebc50e5480c3efcd1f520b24dacd4f398b0de9fb3caf59b0b0d59b6fee4f064cbea096b033d49e4c075474f981bbcd6b0a55cefa5ac7063a570752a22db68ae75ff81e569f4b50fec1932dfc270c4f5096a9ac44011c40e577a84b0734318354e9c40b1c4193d4f8434e7ba2673cfd1ebac0d7c46843d6b566f99e1ddc9c9c969aadfc3f3c91d2c2fdc8025c3985a122a705668020f1245e89cc8b12e2cb9a857afb5523a843b691e85cc64406934a7d4fbee80d21778ac47952cf05c9109f66425fa59e037fa94522537a93fe8aee42088447c516535f04a1e95b4c04ddc6d0d2ce0e1fe9e6454a9be7f9afbca0e2b6d097bdaeb2d61db9b36a5d4bdb5d8f4b38d566e2c7000602b4571119b65b36c96cdb269590cfc3aedce753943f83db0a51409496b69af63d2babb2bd11beb608460e68bc8aee526ff93295c97ef5cde95b082c775fd87acbc396e7a1d6feb742f6f8e97d595878f3d9dab3a658f4b4cd58087cd023735f02e6b18741255f84d36cfc1dec31b17567e588a46dfa2288ae5295bdd6c2e437e9a0bbd1bfe37bc84534b7ed6faa8881ed22726504f21596b10f6b1f72186a5496ffeb0d2e903630fbe0f18f862932ef6dfc3c49209a683f9e8047261a490f3afe926488a6106b5d04daf3c6bfdbc7571f7fce7238fb231ebeacc79a3464744f328cfbf2bb6cadc30acec906acd886cf30b987958408bc19e4444373c67df661ae1c4905cfad100378996dc74371de9f9fd8d5c2cb14a162011b9e96f7393347293e66e54a004d1f517bab2fc67bd9e42bbc75faab8bbbbab1c890700f5ba0fa97a03f89eb9bfa3babfef0eada5d19e2de5af51cac3731da7c7527f0338e80712a45f88230521f12e8ad6ed2fe239ee6f274a1ee00cd415f20065a69a9dc8eeeeee665d25f982ddaceb17320346119b86cec7bbeaf4707e62e250e1180a7916cd09958d656dd6e9595949576cb2663f8511fb291e826bde6f12bc4257a663c97e0a0848a15741da1f9bb4d745160b0104107c974b2ade964c43afe26d5a36761907d0dd2a9262853ec5dbaf7f86b2da06b417fa25da0bad785ad943221dadf55a211649b12b4a26ab25a11f7a26a6c7f9d3fe7c259cd01bb15a6af1432bde488b120a8b92e98d5672406f2bcaa192b96652375d8a3f5bcac7ec533ccb62414163d4283e0c56d67ca448313e93675f09b95eba63d1d3b966a49506e8f5a08e456dece94f5e456f3bd8d39fae37932e77f085c190c6f71aecf93a896593be73359e45c50abdfdd3b3442192a9758d056b9d1854d67cd817faa6cbccb026bb85a60183e93ccbd5f8ceb568ce96fe7d93177c1fc248be61981586597cf3d672b38ef60ac885ceb0f37713cf25711de70f22c4918a9e9f8823fdf3177124f2f9991ca97cfe76722418cfdf4f8e647b8ef1fccd8471c87866415bf1fc3347a2103c3f9123a978fe77a4d9f3db1c29c50f09d9a0e74faa40e9ea3a47ecd989898810201d78efa2ca7e2fd6bed5b408f3a3018e546b24a2f70712440891228e34b3ef410f247b1ce3fb3715c621be7f57e91cb1f7f7b2067ed305ddf631debff3300e19efdf40700b91cbddde2378ff9ee339003cedcc0ca7270090119037b26f748eb19368ee87395ea7d192ae388314fa1633a2d8193ff4e08c7a5b06ce9821f433c820e39d41b2508aa19fe1829ca9f86f369bcd1e02152f129194cad3651a2eefa678dd6ff49e88f4c815efa2c805db7c2ec9c70f8c31b6e85ffcd95d3a5e74797d8dc57b5effa039fbe0e7bd0cb2f3f0917f0cb2b94818646ff993646b91fde605d96a5afcd8391a08a6e1ef5afc4fa0ebfe2eca33242acf5a0bf207d9000ec80e8004114212218b3091ede4e613141372a4c24755a66ae5ad1fd4b766b89d9381beb4bd0a9288b46c2d6f844552f6fb90e66848b3feee5937db3e8a55e5cbe51a2eefa848b9585fc4a92b0e25b608d3516e4659e04850b43c5c270cada5d1fe4dd3893c48bf7b59c7bdeffb3e4ea23e054a65f5192c328e44a6bbaa69f4e6ade32d17df9fbde70e2a7f00591aacfc37af7961ff83e69c669f66fe0f9a631d7371177bf1976eca9d9633eba6c3b23eff96dc6e67a4da34945cc805dbdf56b4e0a8110b1c6aadb5d63a2b8199993f109c7d1f7b6548c60ed57f5f901b90d963e6e6efbb1ed95669d86330e154dd7f367b1ef4d6af44955cc8cc0d61ede2856154d9317c212cfba2cab6e7d96a53ac3f97b529cc650d835939a45e22f43267b1551b3333d7ca94993efbf731337bccccecdde0daa7c2b062f619ba6737280e19666b87bdff9ebb2bf8f1c7ec317713b54729a5b585ee185e5ec96b3dbea7e07ab796e4e647c115fa62b9bbc4395a5ef983b46cbf6d220a916d2f84829d802806b5534abb7a385ed147bac3ebe879e3f78da06c47836328dbd19746125d11f6c13c18acc26030ea0d83c1d88e46e6e7cdd40ccd4b3dec903f7eef8c3dc31755b6ca9ef5ca2ea018e0202e11ffbe2ccbe0bb5e82321da69b610883c528d0d974c387c5643a58a982383770d58e3ac4da3ea688c19e96da989fdadecd39bb0a2e7f78672e3ae0e08d3d992b450cf60cc7ebe5e9815b5dfcf946177fec59bf0fa88601c874dbc51f7b7e5fd4c7e47bfa9cbe331fd6e79475868c9beca4a7a7cbbb7293fb69a5ef5566cae4f23bf1d3aeab2f5aa6848484844250e813121212f284842af54ed1fd303148c6e459bf2ebf0a2aebb5d7346231711c653220209c5190c96cad503328d331ba4944880a38964bf6a0e60a7436ddda12a8fb9ede93c903ba513602c9748441fdb47aefeef4bd3a5232b4321d5585963deb151a4a1124d321b20a15a08a8e019d4dd776995d47c8474129d0d873a8fad77b325d2f39e8f32af5a00e02aa6170bd3cc13f7ffe1871bbac5d6ef27793e735aaa125b63f459e143f88e923ba6bedaeb5bbc334759245835a6badb5d65a6badb52e7577338347542c5b2df3e5a6bf2379dde51996339a06647eb6b5b2651c0c2696b32ed5a25a54abc7d7652dfa8358a9be32a4b74a96682c2d8d8450b0fda7cdbd6dd5668666d8b5964de6aaafb0aeaa8e5a6bd6d59721e6d5d555eeaab53c134c229a1dbf584f8b30d676fbbdd26672cf7afb39aaa33aaa3baaa7bc18baac2ff0d866c61276b3a57139eb876165cf7abdd27effeeee76f79ac70c7524c34092337361970f9c98615d82ca568366080a0a0a0a4ab1c23d8b829ccb09db84ed3f3d8f97026c15a96dd5fb120eb780c1b5b0e53b5f4a703015c693b521d9906a8ccbbb2f4cb896127fa84484edaf4a3c2cf03ccfa3d4a3d4f3a8d75df6cce091e9beb2d5504e18d660cbe27fd31d869219124164fd0d96b3287d0b44f5d24254e5468ef2cd3f0cada5d1aee32e0c106c05496eba100bb6ffbcd16b4a355ec05051d19a4fbbccdca4a4ebc0b363185a47f23ccf4b881dc370b4f40b6d1020a7a5217b4d3561abe5125dd2243624ea6e65458a7fa5148a5a7dbefe44641d497d9be66ab4464bd685f4e6efdf0d45fc9e6d27e874e9d3cc30c886ef23cd2b7657c15e7c5aab3f3eeb8080640f2b8db878998b97bd91d803fd15ac96b50d829edf87fdb13462df088b0f7ad67943f01125bf277c4465179837888b857d5134e75b3ba99d4ce889ad2f92305214eab2b53cdb717c4ff8880de73e287ca3cf25cb0e314f4e6d03d88bef03f6e2f846563cec7d8c9fa23432f4e38bb1f12381ae90961512c2f27fe217f549d19b1396afff17f5a2c90b2996c50bfd59ab662a9e755d2e892f543241f06259ab362dfb61d12fea93faa6beaaf0cba2df77f5457d2d5ef645d5beb2b6018b17df078b164ff446523c8bf74164a4c5133debfccf2fc5b3f81f2d9ee8953c64f1011e7449635bbff6d35bbfa80cf8cf9fdb4f31e0acd191bab4a5e07dd9b058ffa0c82bd6fb5dd0b972fb596859ffb37eddfe7eba948bdefa8b8aba4f886c3bc5abeb0ff28b434bac7b5d3417522e5a9fb8f46b1ffad54fc838ead3f26b197c1ef0f355f20f2b852b4e7145d19bff69c5335e8253f4e66015b8fb2c1ad6f528f0ea5393f565b979e6c3e223ffca300dffcf4c0b2fd65ff43e2e9aa33a19e93a2ad30003fce7d292f9e8f3be8fdc03de90b0e9ad4cd7c3a05e0f01b5d9accfdead1da0de0d9dd657f2fad54b4b16af4218b4e8bb0063bdbff20d1257c6e26e7415f7151e3d7e701046d15c58cebefa33ca63c683521c09367cd8c7fe817642b117a225e182cad3f4a6d16e8c864bb20047733c76b81dce9c635b6a8011d18ec6a3c7cf763d7e70105a8e35810ec381f9848e81dfd30811373be4a37e8f1c49fb81652ae26623c09fcb9a05a34504ae2d618cc09322043928909015658a159d939022442ceee2682ef6b0eff1e33f52d7dd5d5a3ef218137bb2971022f63a2e49c99f87bf108ebefe1e95a5e1a0b7be3fae2d2e49894792120f7af318d93a18f95e8f1ff4c63aef3dcfd2def4be288ee2286e67e5eb9ecc95abbab6e275fb3b10223a57cbe807f111a594f690ee0a380022a4c8048ce439a1a40b0e38a82c043ac9c94e24c144dc7efb418ca3cddbb53c1f4773966ffd2d0bbacd471c001152e40a6c617745cde5dd1532d7e8f2ee0ad47d474a7ab308dbcc2f86b05d9e36a38b7b61040af6c471e0f6b5346733a259da0f30363b332db4c0c70931469064f181cf152830e4d139a56d44b689d4613c3d351433110c00d8c8010300367254b12805cb7fc2b8306000c0468e8eca5359071a12faecfc63787750d55ace38887fb308169a0fb489c28723ac9aacb941883e7ceed421f3028d82c83645dfdf071f572bcc00658e95ae362028a9f39545091dfc20d9125f54ddc064d1943d6db99a81be4551ac9b788c5aa489e2093d7f7654a41e6043933b6cc8c0f902e50fd7f7de873ff5f78cf8b318adfa5d4b5a8696f6210e97a4c4438bdafcfb3efa7ddff77ddf473facb582e592570fd6fad16309fc40f0ab38d1a6658b308ea0dbdf57a636c04aecd69127d7ec417318e8efff84f0d10c362c7142672c0f0d4230c51c4b6ffd31a6d8d88b7fb257500f9a0b2a81c250662d4812f1eef7229974d2baff0b4b938e05cb2244dc843591b91e7c1f84dfdc1a726552dcf109a11d9e20a84483f09b1f4bdc4348917682f97845645bd7fceb37d5bcece1596619ed4d1c48863176f60c2bf9e50ef6efa9c4cf83bf07e706d02584307c5a8843a78a8eff07e79a4668624f0928686511a20c735177354d5df68821e148124e28616147131798a043854a0c717a07e79f719c335944f0218c0a557874fc36ce3589d9a3c21b219e80b1214be3c0b796011d31037dfb5f5cd9a506fc20c2c172d937a4b6a22af63471341b0d0694fd7b9aa63f4e02164e10020917e41091d504a54d0b1f2491c418189ae89c6d4e5b10bf49d7cf83e6eafb2f71b9e44f4b262f6bfccf54cb1afb37e9c26a4b34f6eff94d208c20449935573b1b64a001e60b981a6e08938394aea7a0e813450a74a2e834396d516188316460a0210f93ed7e4524e7a9c1179b4b0365a4d869d3840e669e30a5d0840f9a2e3cec01a3f36772bcbac2cada596bc240f29c8515054a8918923879da41c21155789c8051624cadff1361642d01ace3718be9581796351ff4c3af2dc16859ebd1a4eb416ffef46b3c954657e372c8527def13c0baa49b7f139227a8a8a934489ea074276b0571e9bc92095772dd425c7dd6b5137381cf3a23b1f7e044d9ba70a0f0b94497e13ce1ba2dfb012b6b3e08007e12d78150ae039f653dc4584745bd200498228c80aac189103cacd0c78d084ecc4cd5d1f9b38caaa7be9aa0a26499b9a223c609312ea278620497392c8039a3f3ef823517bde9b17f33c1843a55dc4c35593300268c0081043d6cc834a1f33207fb177c180996b52e37701d134cfca0b0020d2ae8fa0a2be7801d1311ecec9112a189cebf779c633e5aa0d00a814d1e2957ba2b708bdefccb38f62f977f77399c3e688290524709ac1a743eb4e6cf0c315ce999f247e7ef7554fbb8c476e8fdf7de7443b1f480c89ffd1e800f96243fa5647d90f4e0d3f17934dc5103adfffb4d5cfdc04ad595717957e58c5fb1609d29543f1539b5931694d31375a75dc7cda2aa4573b51c8bae58ea65f28d7ed5546bb9541494d357335757d10c1ab91e4b7ee5455129a5e07b4c29a5cc9462a02ffdc00fbc4a6af003c157f2ef03a9db8faf28b25829799e419ac8dcfa4d7730053f6c3a736913d6a54d642e6dbadfd9804bff2b2ba821a576886c4660154e9addb87123c9d9b38ee4d10b3e976767614d3594d716bb697e188822cbc2d33f080d03e03dfb5e00c8fdca20b4eb7d056e76dd71c3cd28ecdf1991cdc8bd2c389199650f7b26ef637f9ae033d51f99ac96803e7ca6ef4558c9047bd93313f84161c9143ed0335bda078521f936b4b42f99b04a3c7afca05ebd2c31352d3135b1961bc42b7f6968ec19fa13617a6a26349774b9abe6a33ead6558f3e119a9ef953af3fa49bb14a8494bb34f33cf10973484fdeb3e0314166a786347071dc8e8bc0438779e20e104892a5fbad0f251b77b5692ee8819e8cb5f84c6763f111debe5496bb2088ae50eed2c8ffd6b336a3ac1ab87ac1d0d2efcd9f38dd0821249e4f1da3da1ebe73a2ec0d8d6d379dcec3c436aebe93cdd456b18f4b0800aa439b024fa28d10f17602cffa0b92fa92cc2624fdea23920f0bb9be6e5d94e3cc69c4c7224d6a09368ee07ddc2b95107416eb8d9b67f37cd1f1c0011d25fc3f60af170110eddbc41c362cf1b37c2da4e652dcf99164bcbac4bc46fd36dba21102ba4c90284d7135c9c740ac8534706282f49949cd1750fe22ecc9b4bc4af3f9fb61b6382134fef4f5cbd1e195e27e9adee23e5e7befc017919ae2102eb873f42c4a172b4650d92295f539ce0a3cb4282f9c3a618ac96b0d0d54398239c2c40cc0831cc30c30c40d8f00f1362d17ce3771d0b59901cb167eb07374e5c29418f92266ce02282ae9fbbcb3823eab765c0362eb9d90df8e1e68ddbdfc2ca76ff0dced93872b29aec69a1872274fd1570ae09c91048ae902802862547e8fa2de01cef51b2864a982720a0ace8fa35e05c8c325a6f8a78010b0e6a74fcd6be92fe1fb2012e1ea4d0b95253a54ed39538665cf01a420e1417fb2509a71760f0ba82c313498c79c1ca0b575642e04c1af273ee290ec71fb0426588149888a0a689395b88c012041a3a65f67c807329b451e2e60a1a2282603b4c14910412387ce0a7863733a256e20d0fa5376f5240c1f2bbbfc8d35405a7cb9f2d57b2a4dcb96037e6035b6e48e3b5d52478cc6f2ef54b790e6bdd37ded7af55c555fdaef4cdf53274734644f16c60890b2678b5d113830817882438b859c3250f146876699e38e1c293387c10d0c66b0735468636704210ffe43ccccc390dd802cebdd1f52525fbcd00c12a75584b66e6e126bf9eeb7a424bfbe1fa3f8eee1645200185880fae54a1d1d927ac365b5062e6f4c08399af253a8cb045ea0a8b0c7cb6c81841b507091516a20629534ccc70c5ce1c2c2e684dd1b2420e2098b1816fb0c1093725548520458b9f232d64652933258a09ac424c10daf5528a4b9736bb17ce4899a39b82821358aad0a1b24a81c8085dea5cdd8086072910100365c49613aa37767449ca3548ece0850833292461367c3e40454b853c23e4e0820e18265db0842163a52b009e1a44f8218b1c2e376e1ac6165bfbc71c4734e9d2840a77febcf015e7ea082c3a54a1014f8b69231f671cc51511502c40ad3005065dbf8d7317582d71646b042724e080017f0e2dad8d0b162cbf53a73098d4a987e38ca893781ab5ff61073e80460a9413bc50e169c2821ae18a98ab394660bdc0fcce7fdbc512f6b45d5bbb60c2f2f78f4d4eca507d60e54f0e4b6ad0f513712e0153ea686ddda14a23a55b41bcfe7ffb679c9b8d9c1bfdc6b9ea37a24b7495bc3fecb7fdb436d3879fa681ee3b688ec0e3c2972652f880ae93742501441c323d8899d225885bf66fbfa56dc5b0ab73021b2d27b874fd26e73270449d37210821030f715cf089d285f4c63090ec10c3e5c89c3d403849d224820e4c94e8d2070a3e3d14116b3d863bcb969fc6487c800e1528a4b67c70a5e326c85ca990060b053a4b8a88cc1cea82f8a871fd49fd4afd3ce2386dc11081b9380022847308c88232d5e48d122f4f74fd4538d7a4c4cf1160b21c61c21c3b4e610984fd7e27ce353939a255c20c5fb0cec4a0eb6f28ceb9969aaf345bd0d8a003e78660a8922af326099e2fbafe96e21cf7d15a4285863a564578b50644db23b17f8d8c1c895a7f711dd7012f5c89838398327c9a36a5e14b15146a0bf56bc17b02c113beef697dea514a83e0afa465c9332d916d67ac84cb23f5a43c4b185a4ba3fdc72e8b3b4e2b961b5adabf99ea4d25b530c1fb50487aad0f3cc1dddddd5fcc01c3d184fb6f9aef49bd27858b3126845dd9c282c5acecdcb42df131716cc641abb0e0233e8aa186267e8baf98d37b196552b769bcb822039a72634c01017957bc2937a558900a1a49b861682d8db6014cd702044ba55cb69960fbcfb0f9c8730f5cfa2d34d62eb1c728b7eb3d299a7b7af30f43291d6f13c2f60f8db5cb91f8452b64838064a31563368481d6dacf5aaf5aea2d81d8cc0dc55103bc41a2ce16198a80220a0127744903860a092b6974b516712b171bec3c318208383c45608acd9826a4b4f067884a049e2840b5d277c6f1d12b3b1eae40a217da63351598aea3bf9d724e3021b1bbbb9b3ebdb469346b9d68aeadf8e63d0b50305ccfa341d65fa03cf1d2d2e2340cada5d138a037efc3906ac96a57691139f0422e2d100441100c9fded073180761189654b13f691746f6d58ebf614905f5ba58d95df61737bd106cf85f7bf997933b9494a7eb81effd17fab7ac087926c5b858ff5b41d6b7a28d256f5f2027916b68ac4764c68a416cc38566162d2934433e2dbf10376ba5d16acd52a2390bf0ad3e2fb1bbb53e0841f8a8be932596773c645dbebce3a1cee55baf6a05e24867d8812375113eea0df05177ae3dae3596ec1bca747009011abb455b10b9467785000d0b22b720932207cbcf8198d533ce6ac2564abbab47bdd2dd73cf3ddad56baf3dea79b54c4522b24d0511f60c8d3ccff3f858ffa622a2cd66445e4bda8ca856afce882a169e28e0115485aac752759735fa495a6755037f29fcfeef5be79f6404f635b0dca03ffca5fef0e91bb1a2e5123fec8df4876fa4646a242cbdb7f5c195387e43957c888f7deae7e77faa45e4675a9d79b8628ba56fc5155415485ca182e5a1d067b359a51fca588489b24f82d38d0fc48229a00f23697c445fe6e2d21f8b2eedb2e77883c1e8c3baac79ee49c463b1d8ef80c17ac6130b8265e3691af53f32742a02fdd334da460f6273cb98b9994d0879802eb3092187224a26f0bf90296cd2f18324d3b1fde247d696be071f2c996a734070d27ddfa433ea1c7d2db9c2063b34958354a5430c71cf7ea297be920bd55a2d2ff05bfd3588ea71c3ed37f2dc2cea8623e59e80b47028e2b2b8fd3faabc5c9d42eaf2f683b50b89773768dde61d0e5aec47887bf65310f76c261838edd2e2a42b3b879765963532fae2367db0ae97a735bad5432522dbc699974fc3eb5e65cfbf519ee3ad8160eb9fb85b8750ef89d06e27b95929601af59bcce16ee0bc08c6c19da386b46f97234cac61edaeca38d8dfe30140853a0140993aef4f580550493a8f2ba0cd80b0e758c74ae4661d4259d46e7d4e5183a5bf428a3536b1e8898dbd3b330e708df53ccff3c0a7172ccf96fa643a8c2ef81f6c7c8f3c790b67047e3fc2ecac56dcad75bcdfd1c1d760b027770d2112de2144ec1dff7bd81371a43388d1ed0712c491407fb08b9e58299e03fa0a7ea5f9ad3eacbe8cec2b4d8569d41f492bb77e7b654b71b3be0dc17a2f7efdae5feb031152c473adabdf4f5cb7ee9048ddfa1de52259c33f2b4ab0a7ad8e5e754df7f3c02b3613107c0fdcf16c26de2b794cf45e7cb0a19a06f8a312055f1cc166426200bcb157722f3692e08b648cc6c8ba832f58034bbe5f4f8d724427f2ded2663bc8fad87a990d13ad7bb2169012eb65654630f1e1069b477cc2ca94b0b238164c4265819a50b1405856d8cc303a59d0cde8c602b16942c4056a637ff460a344cd152fb37942e79e2695c8f46b5927fc0f0cc3877d3090cb4daff3b8e9cdd1daa931329fe86d3716252fd05fb54af4675b8b574594931355b1828ffadbbd1c429f487855f051abe00ca86bc02f755ace7a36337149548e48ffebbf9dd186330c64d030361dfc0ce89f3fd77b5a0e017f080d17f9c8fdfbca21208c8fbc653b9a826019caa88f34a2132cff39c332a4f549851e94f7e43979afe45d3427e59e17cd0d79797d795f4e4e1f14d43d43ae7b8e663d996efda125f6ca4dfaa58a8fe818456fb4de5a7e5abea87b8e5954e7954353f4468fd8f3d372e99f63d6a5ff6971a42a47fa32a4e52e0e2db1343f97dddddddddb8cd8e579e0d7cff33c2ff440af524a29a594525a9e41ea5713d8ae83d8e48f250d78f493938b3fb69f874c470549df243333fb57a3d04dffcf8edf9fe1f7a1a5497ca3750cbfefc9d0cd9052ead5ab57aeac2a4a7a851fa2c67419010a9e347cbe701f245ea0a39545893256f0843902d52bec00c5ba19ebef4d5d9428a1862c39589620c3010d5f446802c5c669abde01f382146b86025e983893c30e47765b76c05193821615f84481a5726979818915d498604415260f70e34685dd1a322ef0b133066a4c07e2d831834257133b3b525e50c24b0b64604053f501205b4eb4ecc042983d6bc6dcf0e503561f2c012185ea03980fa6f80aedfc6e4309240081820c73acfc7494112024a1650908726a1dab3d50728c49dce558dd00c2185c78f5f481c24ad70d4c34a1c1125364a0b268e1b2d583959850c598ea3da5525656a22a52f51ae54b1e282e866a8528fe854e134f8c17f1458611284d8ed417aaa1a22c22adaf861564d8a80043125ed6d829b7f42cd1c40724a25ce1e1cb0821784d5b7654564d5095991246e7a9f1aa220589305ca4f0b0839727bc36ae66e71446cbaacb9314ac94000689dd943e4bba6c0d01a5abf7f127e7ca1046dc3981062bbafab44ac70b9d213b9250994f141726ae28d127ab8eae3a0dc103d5d515255cd0551d6e053be03c402ced419592709677942bd4c7bcb03ead0edbf18245f67dc04fd081629243107dfc9060011f18be9840a50b4d0c35072f4fa27a4cf53e2519fa4c9112435757155da541881c7cd02ac18f0f55ea1c2f4bbe7a67b4990782d3bc7fcff3bc1c11c13d860a4f205cd1e24499230688d226ce9716bad081a1e2f0a5c45d4c68d343c39414a8a2c842020e4c1062d840f940842837ec01c7e4dac965e890b39abcc0b00397afac1cf4d861a127081d989cf9e1882a39d7f36ad753c19e33afa19d9a1ef17527ce9c33594f6c6a785132c2095947949941eb7a5de05c0fc69719b3cee6d1271a94784fab716080fabaaef7a6efe9e24212f73113ccc0030f5e3a300195440b3d797420424d1a3176e074a1b2ec3dcdd3e17a6f7a8f733a5d4a78d29e98b0bb7cd051c2f0635e581f573fa956d8adb1580dbd582c162b4f58586bfd236b9eb4e715a184116bba7469f2411c374d2950ed1133a60f173471aa0d59d773e2acd0eab29c22a94d874b952b15a97e2b34d3e9a08c993d2ff890831f28aa1417264e3ccfa34d315c21a30493242e64f5d179454998d0864b0b4ba8f9d2796fae5715c5f560a0b1a7bd94a6a94fab45741cab0f6c80a3a4893904389326853b66b2ac84a86ebc3c8f5259abbead4f7b4732ebe3ea57d50fb25b3daf1cbdd22b4b0980941e2a44ec41c28312133ed004ca983d7b7a1053dbf0f0353f8d2e613d729478b6696f6a55ade04e4e4e4e4eacce9a695cfbd9d2a471f49866da9b38965315254ae3e8319c8495217a0853e5cfd69d26256da8d4244142941139543655489eac509bf6de9b38cee2e3a422d56f0c0ebe9e77446769df468a952356a0cc10668bce13020a1594b8c1a383161a74de0ec97b0b42d079af8123d1f7bc5addbb52ba01affb458d8ee44fc7fa5e4ba2ea260d8912fda2aedbb0d8b37af5ea1745cd6cf10a2bae7a396c58e2892774a04243948e0ef9a244133ff8c102474b47d75cba45874b852ead95055be9b50cadb556aeb5890b126eaab0a09973048eaebea5b91a53baa0f08494095b8cd0d55ac3ad532cdc0a742be51b269195b5e1bc02265de7520e969c3e0f0ee95b2ac3a53b14a42e7d0b8298811484c1ca93f69567686994a220b2eda4697953349be4840b43ea55794e5f456fb4aaa957d55e5573399567e8747e5c3774bafcb2144058acce314e7d573407fe98257681a0cf9de33ba73ac7578e559d8571743976e1230a964255553427b402dfae86687043139ac1a618aabaf4c7211b8456d0708796d8b1aa7308f9c06317c62164878fe8d33a7c4474c79e4255752e7da12a9a0b436b4fa1aaf213aabaf4c7ab4bffb3c239ef896fdd396a9f2fca378591ea3fb9ed31b9fd678afac40765e4ced15427f6f74a2ec33dbd2b702efd8fac5fd58fe7e466bb8e6db4f48016053b23b28d69fe341aa72fa864ed158541eb18726800000020005314003028100a064442b180402ad8b5a61e14800c84a4406a50170b847114e330858c21861840000000c888880c6d1b00ba9aedd55cef67bda2ebcdaec4a2bf61641db5274387469f5db9f94fa9c231a4efccf569d8412ffb844d3a5a0748ae93d98b3f243d7b9580b882cf4143b371973a7d30cb26cba7721ed1def1024a9609bc78b07542d50805d6296c9a9c21f4223c79858042e20b1326470a4f28bb090de893c9d72108f154096faa02d3a411e127b04250e2be7f74780d0d6a4fcd8ced9763062487576af0ee5d4900d676378803d82553120c61447d32d5be9fc036c2a8aa99025ee5f1b801c527511c9b9558c57aac3cd6fa41ed3e8fbe7a8f31d5898ba61afbb0582b84aff92aee9450a5ae3f233f0d34a28259a48971a43b8c97de60ec4d8c1f5547dd1e74618418691892c1348ad289ea8f8cdfbbd6fed6c53837d3e9c5e075a00d70ec7cf28260f8c5940a4ab3cef54b12a900f390b7d31b3c1ff95933014c975586cb15e8b58422bc4ee9df96c85fa3927802103172a28b9f6f0050e38bbc52ebb55201ba37c1a500741357a80371b0c292c4b9557a967acd8ffbfeefd0423e1155a439f8a3c5f318a9433088b4df4ca841e2d9e20d51e4c58880233b759adc2707ef75f9b00e0a616fbb53fedd916ea71168f3ca1d5a4fba330e400b0b011e36f40d2ac6b3d24e7c17ae69a730b0953606f165d5b9f5fdeec2b0e9d03715b1a8f113571afe67bafa330e2fb4bf3fd2c58f20dc4f196e2d80cb68fe6eedd0d2d3cb4017196dce648663dda10e8d11c25e4e451131875ee06b359a3d3af76e80821c7d095c7ef71cafbd5715ed8fa63608269d725b75655e2e12c65cd415c2c3ebd0f70457d1f5a197d19fa8601fee4cbed6965092548a7a44a51d3eed14cf7bd8a7a718e1a666eaa6d602a96f4af43dc740c725514933cbb3aa737d212f3807d53ca24c0eec936c36ddc5be1d92783b62b247c34b3c0bd280c2c47efd9f3dd5e2256c240c4e2dd90c8f02fddb5c1169711b166548245a568a710c3e6d453798c5b2836b1966b75754193a385f434113a522bba70731c9b8d86f582c250ac82a382dc897b0dfe432c3f3b72433092fdbc00f4a5d1a0996d0def71ce37b596335dc264392a4077a41017a0aa9ab54815a297619a4e2066d5d317d18255d73b9289e4f129417bc4ef15b2bcf47ecd43428564e4773f092720d3d11b5ab4aa8e6304e6d86789553609e1bff7a105027b00e71b2355caa5aa7f328f9d0e1734c13d878739cc5228089a5763a32f6013732066fb28ab702f1a5d40c807fa074056abce80e916c00fb49b70909cf81506ca81ff1607f95a49e6b4c1c99627351f19c2353ef7971af5a5376002efedaff64938b2a00a3ca067b77739a01adcd456ed13a4252e8e8721a1576004e43ac21e49f9a13d0214375bb8dcdd6ebb145a8d8d00ce063892321363ce373f9031f4515546dcd9de9a3000b4c1e5a65403adb341ef057a8559a6c35943e78aa75e6091bf0fa022b1dbf28235d44944ba9ef2bc0c972226180368a68ba443e74507c9cd53594a0bef24eb6cceda611817bbbece8d64aa4b558e5be893b5145dae2015870c161109e5981ccfdea5ee37622d3c396173b5a791d2d6dff771cdf4eca0f85c5056642794f58db0ada92aa70a0322e4b9a4655f6d19c6262d5eac694f9d44336b59521ebefe6b4e4b0a6ab76bfade36140d4917588543d16da4eee0d6e254c1bbb6d23c128ab3b8eebf678201a0e78956715935acca420c2ffcfb5b54d1a6ed4e0bd68ba5775067f80e922e108df52a4ffefaa703f3b4e56e8bd67b0ba8505a16de0483d4d520d514debf9854688548da3fe8267381a4b048c0835d8ed1b145811f727d2cd63e165f106a33c2837d67c13b5cc5980a004d01335984982641e05c68423475aea5d00d50e9b165c971fa50f97666c022188279de9b37f00ccc21d4a893cad3e9f10f039f3ef24e0b02a4a2b6401d33c73516a19867ee3a3208093b4ad10694815ec00b8f154400152359bbdbe6d52d6482f6288dfcd9cd9904dfe20fe005543cf73a05568e4962c53f3690adef28b1197f44c2eafea6875b92c5606888261d40fbe8a3aa1c953a37bff0b539c364f7b4a076ad082f32d4caf34c7fc6b51f4c7b908fa0e7edc8becf250b57aeed3d94f762af879d95a65cd8dbb282e4eb81e6030e947178c1c61ffe84167d602b80911b07d6ee6aa1bb6b10b6de172abe99123e4845434a69f1e64d5fda083b3e8c2bb07305a614b4ff4a58bcfaf9176bad5f0c7482ab266f49e7f9f32db632d38d6bb87bbb3dc6218ddcc9f430965214ca738c68b80f9b5fdfd9673282221bd07f2793c908d4f3a8becaaa73cfbd3a93ca85638e0b8b02b6882fc054f3f3d9ab3b1c989b5c15237d552190023fad7ddecbf8eb642d605c0f978d5d159f75fd75089d770a7ffae8887e991ed48d94ac51b5978af9d07eb22a83d6ee112134ea444011641ef3478f2859151dbe3c08810fc50652d719d496a7792eb0804bedbd96d8a876b9ebe8c1b15bcc3808b5602adef672cc8fdedffe32602c4d583fead71bf22a6a00fc5f4a6453ed85f924b7fbce324fb43b62ad795f0d0baff2a0f88e9e1a852d0aafb72d767c3439784923321a3d040c517d46e8458dcde9286b19569282cb3b18b7226e4eb7e47dd94d7e16d56801e55cd38d592937885e4f717be855d0a5e8046b461df45f20a52cf76ce5eea2691e52e0452ddf6a570d4b426589f32558c4e0ba68a4d183887d2adc1a6ffa8163282a7296b16ae950c23475f4c9351ef91fe42334949272bb67d4a7ea1711192c96f333fa817cbb641477c61e37322527b9c60708f65b2392cd509de50200ff456c08e977a4d0b0260ad8d26b0c1f7df280e641a31d8356037831335d158b40e7dcc8edc9a1bf061f0a332ced17c072bb3ea870489fbdaf9a8bd253a209697b7284b733ec3f356341ecd19ab9fcd82b42fa2923166fd70647d1d2b2cb60b7fe8b2260b653c835259f537a156ee7c56abcb111046c55622f0b6d2d1d626f59849d1a24a777d59c8c3d70b842e67c5ca308e7460a5f856b643fabf33d2e74f9024b9d9e82c53e45b808a67cfacb4df2973cc6c5f9e24ff4ee0cf57e9617ce61c01ce869d38ee2dcf06909e1c7a4f32070b64f951e0dde0bf8b69d788e6193fa5aea204d69f439af6fbd394ed12410d67e777df05ddecedcd10445315788696cba8f0b4bfd4805de2bb7c70b1f4aa58e906d8367b77ec49f5b8826e7b52b59c43a491268e6730ac87307997d093952667a7b76abc2397ba60d1dccf3dcf66781ba52af270f5d8e094ae80eb032f61547f6d8c237a8e8a49b7505f89ed1e6960442a837d1dde41c5ed7bfbde6575ced020da4c86ec275dcd21ae74f92e5e4469b4439f2a39a90ccc02e4456a9b70dd1e5f4b493e346c698edc38074374b0de0ad3062a29adb3397a55a6b58125eb601de5a8e1005886e67267a4e13ffba6369b5884d78f5fd30b7137f869207f4e71f67bd7bc5fe58c309201fd0ed1b66c24b3c9f5d521969cde28293f3f804f72b92e0c685ba25be1b319bd4e4beffb5da47e05dd462b81a80d2954cf8b106b0e4f555145ffd5ff97657dd806b66b2bab78925915553615740e812e842f89ee9a7909e46fb1c0dc9951ee02e05383a54fb580bc14e3f2000eeb78e8610bd88389a2ea907a00b0b444c8e8c18c4800afd24b4b52b720115dd9a1bec94a206859c91184e73558779863b2043d800f55104c1def120389256c9132a4d40401c23f5bb0ccd66894008f861be5864cc0d71141c480c03c0fc1b7772210b75d10d5f5b921dc3e81f5ecbf6b6dd754abc80d025b27c894afc1be3b58b7c1890837eb2273ecf7dbeea9bc0a1c8227a08e5d3731e2a31fc90eea1680d51519bc896b076390bd5837a59eef7678c721d77da359fcbcffe4ae4bb99fdca326a07c43574228a868b931f1e1252869db0f7adb5e93aca8b53808b70792a011be41d16a0118f13979179d902a2a9acb2a9046186dcd7942166de166607dabe8da1415cd7a5f433cdeb71f6234d18d2dc453b5cae075324922fad88267bc8c6bdf8cbc38050f7177bfb9430feca491680ff7a0a69616a8879c2bbb628ac37602725bf239be285534fa6bd5236198995bcacd3a45276a2e4617a8b920b88f5a858a282401182e45c9e689a1c9ed2fc8cd21ee699487ca9be0be1cafe10e8562a94e3785d8dbaa5a0bf0275b4da9ae13fd5e3726cdf47171dd398624fc05771d75f3fd504896a4594b316e76ba3f6ff9d7f86af104aec6e415982c7486e0697144f9cf9dc4c31bb900470fe23d90641f41a485ce1d4bd5657e6524e23364e0d15505643e74117f2fe668a83c42089997283b65cde95d42d9603fe654ff5323520f493d168d67cab147ccb2af24d28b89ef0af4a7121c8b4ef841f8257ec9856263b6bbb3831ef12bcbb868dd41ef695e1456bee550e90c009ccb381ca856bd83185024009680ab61fdb28a9e72dddb0159145984b83da8546c216048497bf1a2724d59d0ef6dd326d3b3d625d357b902e2716f06e90b591311f5e009a209b785d2d7cdc9b263545ec3aba8f02000c6da5587631edab932a0fdc1112b5ef5d88e7575b227e435b5207de9712808e1b0476ff4254ac9e1a546d25190c17acb017e147d36a449f235283a9260cd3c9abf90c3697132c4362a88dcf849ccae5793c8d5d765587d62e9dc1b00d26bd5e8139826960357bdf5b6930de06641e8b5ffc8631bf38ac70862d7f89a2308bf60d1e08d79f986e8041fc2cb73ac6fdefb848879119f97655d03a04cc4017ca991e5c272df56ca70edad75e63dd1d710f20483eb67e22499ef54687b02076a297daa9c1137491459be51258c4804604c5c41c82d0382f1d5a9730944d1471d223b422d92017f2493e020fc25e9f5385226bba9a45651ce58cda656543ce40d922e9e42afb49c9339691e48753b6daec006bbf5f710759870627d292c8e22ade935f55f5f54040543ed8e4183f4b5280251c6d9d3badee10dafd953ef49437c6bff074503b04ffefa0cd6ea826930a1f43e9df10622e8ed19507820cddb1a0ee1927b56a277178943da2ae8e643ad3fa38b44b08ce979a3b7032c13fa200d77169d4e955dd54be3099883cdffbb332af363d0d1f2f16442513157a515d8e80401622e0e15b4b0df9fadb6f4faca73f4c13ae332350428defcfc7414eaedb41badc5483b44c086b5d9052f973cb2017106f6ca5fbbea1b2c1c1220d413d725429ef33d535925ba07f541486f114467df2198d653186195a37722dc250b87cb4c7d472f92ea7244a815895121ec335560fc6f05c8703d4eae0a5c6020d86f191a6a25ade42791b2893c75a6627892fb10b6c59eeb707cfa5f4209ff16a20b8ecf3ddf6cbc9df27faaa9a94d03447bb3100000d385332ba5018f05ab8d5a6b889dd5c14444e7f1a0e2d8ddd0f9e8ecbedcb04d24d4befc483b4697a2ac4f4e4203614ada300f02f33b7d29a7269004438d372ac45d1cb9334e5cda375656e3929922d238844c3115aa959d62f3afff7a9bc7074ef67daba87b58b2409644586ab810c7ccb73a664c8fedbed5ba4a33b0927127ee5fcf32abb1cce6d6adaf285c28be49c3c006951637efe1b8af8eb03a61c8af8bb72959379cdcfc818f67dd65d5fb3c465c24a6a7696c252e1cd18d0904aa01a3079fe3f19113d2a9fa1193666f7813b32413f2aea7640c57ce5848942050eef2c40d94723ffeb16b8e90274a221e9aab7e8e488ecc6b081dc3fa7d233b9c4053314037b7469f925ac38d9bdd59600186b0bb5e204ac1eb8a42d2eb9a7c4eb242589b333027033deaa10ef148427fed6f017c4b082e13c74420039744ec21a675654f3d05f31c867dfcde6432a654f8f50abca7c08485af6b291d28dc91298cf7a5ec6410932e527c6a19dafd148f115a8f9992dba7df5161ffac588449c45245854dd28a6e7e83d352a36b77c807d8ecd18cb8ea6ed03709771bf7ecbbceb063f87dd60f77f9413ae57687b8374d0291d41b07886cc95e6d9630f7f6a5edb1d265e153b6a760447f97f4b60635f7df923aeff477de54583b40833c44232759e8222bc3eec8e1b5749f0cf52fd4cd80f8769b29662346ffb20c5deeb5b62f279d785cd704bea3b971ac1f54510f114e843b7774e460704f6bbeeea3d2d9fb98bedd25cfbec33b00d5a0efb728abe104e2d64adb732700c39fd22227627efea405f1cd53c9363399f2d90c06df37e933eae621fde1a80f761a17ec6dbe9698d95704111f1c0e9888c9079413cfbfac531302c76f9c980329e5a6f813ba1fb34c0799b0c5ec63acb622ba386a2ce837896cfe89c9101072159425edfff92099affb2f91f47ef0f58a68787b1840a84204d2054a49c11cf931d629ab1173c5e56968c5116b142ada90266c3940536d1c586da39dcd845f9dc631f84b666c3c0e8ffacf675dccb0270138dc539007865591e05350bce31769af97932da402ff300c834235f4c88a8702e2d45d11c0dd7e1c94cf87f0ea87e0587ffd06f514fb5a099f903548b65516a1aac330ad7133768eea5c3573c32100a6151f64ad9d6e8f78a90d3adcf54b037d891c919136843b44dcfacfc1d247f647ae8757a0ccbae27b1385b6dd6e2246ddac65a04f4ac5a849c454fa9dd48b260a684e12ff0f8adf75211ab55c68b5f3b1a4cd135db97478dde255ba5b3d7138d255400164d2c0991d58401ce4aafe7e5c26b81169501781c91b87dc113998505a7827b60cda97fa4d970190b5308525727d78831574901d147d99df032723139601cc30a3e6cb249bb52e45fae6f9e1c1dde686a20c0455db6a510387121d28ae8a4c4b236914d50e198d1702eac23437db99c5e60aef56d45d2851f3c2402baa13f6611a9429958e6a202ea08668315ee35ac5d08ed72cb4a6a1b76cffa71145fa9794e50aedafae85278ed4b80e69a9540c41c9bff1baec2d92ea6bdfc0e1d6e3ff69c304f46b0dd14e6544aaebfe6a802c3f28cf34d99bdb3cd4244d2fd2e98bd34ae1d4777e9a160c6d1c92895722fc18dd37269dfd9cec7ffe476b245ab7f90068fb6668ae878417d49099d8222cc48c83354651038653bd8571c50467b3705e4131bb1d69a026596eb8b00db5a5d53fb194c089d1db4c66171f24f331d020319481b79795d1ffec83f5150f75120e5ac744157c248171709166ec87a0d70da5596953d94bfaa16027478f00e3753e45dd0f3a206247de9275cb1f59e7f83fcec8426d7edc11f1bb5da9ca26f51fb991c4c1e29f8060e8659cd94dc65a0527460430fbb06802cc68f0a6f4bed8049ddfdf1bcac5b227f973ea09b0c1b06e0f85f896b743012ccffc947693d0bcfda5038761ca6860c80d211ec0d324f44de936fb905f7c28d1df97beba9cba15e7c7c4054d5532c959ccdd180de2354029b731d0f6954de7e046e28796be6924d045d8d05f17d37f030dcd47cbd6504ad42afa9e379c46f4d3cc0a2bbbb79f7cf626e63ed0c48d2668c33063e44d1a2f2b76779fee4b88ccf1ef301a47401a468954c571c2092a870f3a4528b9aa82dd7b389d0d8a9cac8aa2b813aeaf67439bf82c39c90ee2349335b21493732d453ce3245df56218926f4cc6aa06fddcd3c7cd917cb8ca2d84cc63cf2a46f845a740d6209487c7872cb5eb21b2e6f5060b45f2f794cc11f5a8f445ac5f680c206ecde948e840057616629fc6a83a66d3f950b635ac388930baaa03eb68983126737cadd84e9aff9fd4744b08138191ca2e4d999d09754f6e6fe36a805e82c28de3b14abb9bf01b2456b7ada2edce636b573720ce20e44779125f320585fddad03e2c76bd9dd8c74f4ccedef534762e6ed2741d82d0149dfd901ec1adb52a22a2c2becfba588b576b5c18abce5835c7ad42555d0d12ef1a6e9e569bb3534a4190775b3350a5ee755a11b39fe8430bf7ba626735b258e3737ff5a50ff4352020b5ffe2c6ec6e557041b401b042dbd057ca195ef923bd9549d452911117a5dd974185520ae5a291d9b81a39da7f0028ce1d4f53e4158e05a33401683550cfe610d4d74921d723d1a8ef0881adb91e9361102735d1e1c762a59f50bf682cce20e0824b97ec84622a24a58d97240ba49890ccacb35117d200ed6180c10f1e98748abf11a2b336431c1195a52e236a592cc029c2d062b2e241d72be2cdb1da215111499801550b388aaef34f5db10ba3acd623d8d091b52683de0e760f4a8dde406288e147e0ad0534de18cd3f0f51f85265bf561a7a4d100e204d5d127422484ecc5bb25472200342aa54a0d7e45281103b61e8c00773c18a68aa928e31253319a5dc429aeb3e6092782bd1703801cb52b4e636db3c4c1b9a0d528df8781b978a1c4a2741860d6ed83b4d908201d7f3f4ae09e4a36587dc6bae580c02fbe973a2be867000d5849d1b19cd8412a33c37a8fdfb85075fee9a2601ef6961288cf921ec81f2f27de3257c5160c6549783fa258d0b5059b35c5633c6c258eadcb3035c86491971c284affb14fb0adb7ae354407e472617fc95b205de72bdcbf6f5ac0b7f1f61261ee96fa7e158db97c0d7998dbc6809420ed2cabdc3342260a8b6d10944e1729511e315f1b8cf22bc170b498cc184bfe0c818715fe5e1d5e3a74d75e239d7cf78fac70614eb9cba37fd26a6a5c98dde1f40da4e15147a7b01b6f1c19819864de20910346878823a990eb431ef9f5ff72eb76c58f1d432b4025530e4d14161d7ff756a755c405e80437d261201963636c2733fdd56fc0b6ff2a2d6c9439f8de084d82e0c1284ebd2eded89a10b499ce6eb4cbe7e022851c0a446fb004a9e23aa440e7246864e07f85ae41c4430430632e1097c9a1e2e8d1f049eef7b5a1562429f001bf2f1f3ec1e0e04c4157eee8a3329dfe5978ab066da6d32171bce650165d82df4b96ec5dc31177650e8dcb0cb7a2f5560bfa32ee509a3b713ef6d8500c0828cee3038552534058796c19381d1264b542899c13485107d737906b45f4fa26315e93344f6914b7efe9186d545bc557516362310f4104d69238c5a9844977a5b5c1069438667185817530ffe0f423c005dba840019a36a38fd2b64b3ac2cc73153f9c541f5c1a8c591048a9d919b0128c94a6dad91b1ab054deb63713cf6e8a1883ab4bcfeb7c3b200d726d2d8db8db2d9fe1b3c5e66cf7f75a8465684daae327dfdc0184fb3035ff90ffe3bc658c6459f5b2e24da8ea6e513d3d8d665a6ce32f26a4879429185e927804760baa01658db6f78ef2b2a7684d1de0743e1e483f70de8dd3a3cf6b0d7264031bdf92f18aa7a66009ab8e2dc0bf617ad7d61aed9f99f95206521121b72720dc6c1462a0bc8ad44f35a309cc29cbdbad0bade0e2fd40a3f3569243c701144b0787b7a0c646dbd7f4c6cf5ef8ff884811456cde73d066a998cfaeeb1af4b0191690a42ef622e32f5d713fb749afb3cfdde9bcd0deb81c430a403a9c581bcdeb99dfb4a71231a66028da9ea19533e94f32408969bce9693f6837303110ac58abadc311d4008f20afa0618eb623e07b99f0e01d19d891264f845650c8af9950531431e4f21219f905e90b2fe666e62eaea3322ea85af1ae59258f73598fde08e8c6266087ffd33b9a566eb914bce2972fb843c4201bbd753433831028879198b90252263a890b0652d20dc9d449350d8f51f231d5daff181af3db590f95a1886b775d8f59b410aff76b3119330812437c576e6ce5f7b7c537a79144e7167e689e7d7a6cde3f6263d39fd148358ddd8c0df4b1bdba4f982bf10a211210210dce4a1ad0213ef3c8824855612a530950bdff5eb9945854aed4364b94beca540911ff408cb4f78818e3d124ab65742f7845b70b181480b2b849c14f4b824b920d2d448638b2d22ed5ada7df28b5a558f85d88d0c22433cd4e4a92992fe12cbde159fb4abd5ca0225fe064120bb41f220f8f1646e0026c71385f814f7e549d27f1b04519eaea316bc040f4201a74b0888f8a3f0276dfc8f29850f6d5462475e86319afe15b0f485e386b3baccbbea3545e28d76886f597d66902748285c3c8ae77dbde13e51ed1bf3343654622fc2d3ca6c2f311b171553d238a812c54e6cb99db46ae5a3f5923ac479f587084aa0a1b1effeed654f81551804515305d6709f4896883c7952a390fca3689625bccd9241fb28b197ff06241fb3cacec79cbde32785b56760eb1b78bc26ab10b9b27d7175d90cf4004111cc85728550dd8d309763d22910bef0cebd509bb440390f6841064517f2ce09151f3fd276e97feb7a180880ccc40e11aff90b6da8a76079f3da01719e488602ddf00819c2888fe52964e8a79514ab3f865c87a3b14a78a4100a01a08aaf1d3e4229badc9a00c63fbf83cdf20b40da466c28cae720b8c0a2841ee940d6f3b6432a313f6a317ac7b764a2350d1c9a2e5ce44f0dcaf04bc39f4c029696242d24d905343a94ed2f3c3c4f08b3218356ad0e315f2e5e1d6deba46da8cded1fb0081f14b351a4736c12fe863c11f46af35e8e408f322b0401811c84cd1ece90fce2e17498771ba6711f42421774e565a6238f468315780dabf88854b4d780854108819033bb2ae8f31eca5f2a5eeec8f41a4b0adca810a7f5f7aa48ff68335ee02df1c2d92c1435b45bdcbd1805580c93cf0c2fcb3af757d9ba2e3a1e0b2c4508eb296928e5fcc9031a2f9a865b46c4e68a2b9829f05a5ff02084c82b6140740395cb41ba01a4faa27791942c4981257d8933ceccc1a8d67269a6c5b4722c006898297a17e54df0af31e3a3b419e10daa790e8fb7ace38f07c30882a8248e21e1bf23bc11ba760fd9c38ca3dbee0df42570e95e090c43ee6905f9c9c7b5ca6af497a4c78a6bb85a619b97fd949e8fac11a809b1831be5ed78831b5877f7652bcb3db561affd673724ff619e198c3dfcc1bd621d13f591a96c3c9d6dd72128efaadadb9dd403cf7c7ae31ce5469e7d46f50381a277969d8666449dac24cae9e18cb3ca510288290fd81bce2856cdf288691e1376bbbe845c8fa44426d62f9d87794c1d400a1c4d91ee0818f9a16c469ef1ad34e1364299791bfc4085d6376b6ef74976474b61fcedadfc995a3195799a07aba66c256fdea8fc3e9cc4894cdd3309ea2133109ac1ec15fd36b15bd8529cf0a4ae0c2aa8cb10bcd2ac9ca8a10a6418bcfcc513d600971872b0682d10167188c3fab90543f8920de62c2caa8957bc61fe381467abee310bfaec9f77f7c83ec8f71beac665d27e1ff965cd466f4369782b8659b39fbd992a561eeac5eb233007dee58821dec1054c4dbc2eefbbd20b85df417a287df6fae99299c3396ac86b393dda2268bbd7ec86125aaadfa8cfb52d94097fa9e217092dd45aacc828442838df3b7e4c3fa4b0110b1b4458a48794c68d493de3a03a613977048ec9d3445c3f17f4d4c9ce0f99bc4ffb7b777443247cc9424e2fec5955a7884639c1a3008ba370f96345dacf617c9c0a533d9acb349c563ddad79915af1e8512bdb00b32d283c1e8a66b96e0b95b0e89b5321c0d9581de6a6e8d11cad06a6d4d178d37338ff78e5f8f1f4f18218b7b33c9d72564723241a27bddcbcf710b77f052dfdb6e15d690706d6fcbdf7377e4006ee45d5eaf854981a9d252409598472a0861571eda870a4574ab756130adb2ae380cfaccf79fb6361b60ab19d444294de11662231ced2d9bfebf7e7f26ab69e54251bbcaf4cb6525e39666b32ed4fcbaf1cd021cfa4f6f8aa301fa9169bcedbac525bf6e59b220ff260e1c177a0ae6abc19f602ac041d13c0c98c0f06254794ef909bd532344050221a52cbd95d249166ce744885cc4cc077c1e9443105662bdcc0dc7474d50a973a992bead1b0a6b0e0d1db83b69bb20583f872b585805bb6a1da78dc9dd6adcca1ff55365789f31947dea47fd1579b60c7ca89606978b280979cbf863ae4a09f6f22e25a04bd4d89414c226d3b263b5ea8e247f221809d0b0e4edbecc0ac34f3667d86bfe8c702ae292ead032d8f10b9950dd8fb985ddbb21efa99c45328b763eb0defbfa40eb3febe9eb0c6e06c4c0e99640d7b322acc841b1ee12a0670da42cb6988238f7dcfc63b8c56e8a0f00b1102f0f0a827ea37c0f580de886c4341b516079f29e80d21c58a3a6a321059e29c851ab701c1075308177b77432d3635ab9b3a43d31bb468f076e0a67bd9702d7d547c000116defa78cd61f2c5df5d0339e4cdf87f95d4c83f3dc2b1c2bb98914f2c2572b682d00faebca4be4e6bf4a6b3468d1557d85ef7fcd17ea9197a77c4d9cfa63ea108f592bbd112b00d29bec4f4740a9637ca1ff18ab773e1f1a291de9f0c00ce98e6d26fd64b0ec6d1d2df36248c6d82ff4ca64b3a76292dcd041316cba35d9db37bcb95bda97c1bb349423c02a2b975347d105f263d434abe8561c910ac8218a79d48302bfa3553813b765ae85fd0bb4967d01d50f74299e0a9874895665b88c26758091eb38e71d313dfe0b08ab521fad687bec72aba6137849ace4e7ea9809cd05e6e4a418fbc24aaf40a5e880bc5e81e41cc2d31ad63aa026eab2109b741f0581fbff5184bf7f3781ad59ceea6d30f5e4cfd62ccf8eaeaf4209c548b814cb831378cdea33c2173d5ad78d383308357de496ae9b9a25982d36e15d204201e758a91952409fb96503d960e52ae266e50683519a890223eaffe815e62556f41b79b69b42384ffc8bdf70f999132fde0a2913945d9ae8dc6435bd9f6f512c7848f05ae89f9cadd5bf817badf3f667990d57212801bf84008e568263674caa2c5ab4838f6d5f364e2f055b20bca27fc23f2030ed4ea17826bafefa96c67408bc68379c41deb5e008e44326ac5129974f6c205fb74d124728ca4390689094f02a156217e2373f613ebddd18fa3c9847d660280615c2a8886d23a2e1c868a263565ff185c22542cef0487b900cd31c5c0b86d0770c28a65b257ecc79dca858180e9e3ee725171500780fbad524e2eccdd29419935cce4209329afa9bff3a2a9fe2cd460fe6d984625a4fd3b16add83833d8077a61e3029c02cd01dbda7990a09c9e0155f3e32e5f8c3d02540f9e384bf9cd591498345d589791f8bb2437fefd3404d878d1e7300fa34a384ec7ac9e4bde53cb835fa053cf9d8d165d7211b01dcf392627994948bad9ccdb08a7946d44ab20b65dc47c4e9ea84045465d658bb5e272edb475f7cc6d58a297f5a5cc7356c0bb36d0c350764320df8b0df895f69a2482343ae822dc22cb6b40bf5309831d9df979f488a3bc3f1b0f8f18bacb2153ff2791e72940a27986d0429bcaf7aeebdbe383df782947095a5829c434af587deb310c1b33e742f87db6cfc9e2fb9c539b5c4c1d304feecf8ee9fcb909c72488a07788847c66ec448397d11b9566869a3d3286f8286f4d0e888b7a3328fd3768ad807a2ae9df68c9035b41075190c987fc38e636dbd94b11406b5719bbdac97bc5d1cc96882d0d6e27980f77256ee97d0e96af4622b13675d3c60e1029b1a0164eeb1f261b8a729ccd97e886c14be67059606473f052fdad1cc7b0e25fa0b6499230ee127d52cfaa4e8ac72fb5951b1b89e02253769f855446f955c07b728eeb8b18e24f8ae5f509cec354054f4e8bafe2f1ed7bb855d2be805773fd28e76d05ec80827acb2ed14a17dd8b15c7a26d6f548162527acf08fe6f5b31130d1ebe093543c385906ead3c34b1995985de177810cb117482142793b1ffb802523b35853af8af282dbc6576a74408b2b293ff8a20578c5a83b3eea79b6927236471ff284eeba9dd31cc6e0d5a7084dcbc1d8729105bfbda5a9d6937a1d799b4f35e9be3de2c3fcc62fa6f28f02108fa81ea41a265b3ea03cadb767efa5f5202cad6141643198b512b2f6badb4a004cc2f026f0c5c168698281debbef1e9524d0a9001aab348907c883f224d04475322b2a9bbd8a647c6bf1c2d1d73e977b22074e195eac4b09df4846246d21255dad702c699b1e5be9051080835579642f23819ffe34674b0f6ac1a233eae75718f409735cb6704f558780906ce2d3b221cb627c048ee199ba71efea156f44220749772c3a6d4923bba1ec2a30d7b1e7c333409ac9b49e26a49a0639a23ea3f4b0fd09f35637929671763a688ee0b97f4a87b140a4e99991f1bb388be50b7ad97bc902ff323dfc3c610f73e2fb19aeffe2b48d8d5f2f6cb296868ed9b20764ce49fb1936a07dd0ebade27344eab7bbeace695d625854ebb9c51b403b17695bc8ca6ecc793a57ea8d7bc03bb044f3ea9ed45529449f9d03e2cc40768284387f7f30a1b8bfde1eca368886980fe64610200dca403e5a4d32ae7d7fe16c40b58618c1eb5cec025e9194ce6241ea01cf0c8bb740411b0b7cf8ec9374d69c093de65878c51e9fa5d701eb91772331fe3e16b11e2037019a232e262faf4dbcbc516abefc59443e3e5559e3e8b87039537e361823ea57dd0a75d7a2056e113692e18e708baf33a8a8dc37ca2346e51d792afb7e704944aafbbb2d31300051c5c091f75ba95b94da9d58343459d284207adc080287b796c26c323d4174e52cc7945ddcd47977344213e055f95b1bf02610944bdb69e892e9c30705b026512e9605128afb03fb9d688b206849c8087683cc4371db3adfaaef2b73dac62676eacb06fa2b05214f23d0424cd95fda6193c0a1c86db3b42937568073f0f471e516e5c97fc40da4d890b6416ae0ebbe306d8273000989e42b2967c4226cc10acc938587914f5fb3c9de1c71216f20c0b4a829900545f8d7945dca856ef71ee3282adf760c47867e102e78634cbb92bed9bd68844300990b84a63cba337afedd67da23f6afbc71ca0f2376f16fc425d47ae4044d6aec23a304a0df263a9804c9602b8c993fbd9926fec6601e87985541c96a628d4f5e2aae81af8ff6e8e03bc639c3156d7d49c038f781450e54e836400df231a61599b7ad259e03d864356e572283e560f5d50095cdeef12cb00ef96060a61b4cf51ea057e3689db88f10157216ee6aa81d212edde3d93094227db2a025b5c6a712223681dc2c31518e32a0dd11cd0cdd855d00180f307887a92b47d03b266681ca07e3d3c3d457740410a559ed771da5cbedf11aa84fe7538f5563ce02bc1bfe4a53da9bb6e8a1c3e4f387d642760550c4f531ddd1a4d4dae30fe80767da5901d0e925c810dc201f72fc2267988dc59b53e34adf26c3f9b349db0eb4af57cbb0a4fb06d0c99ddcafff38fa21b6fd2ac57cf2277115993c466992460d2408da61d94fb928810e93071fd43c54d58b828ae94e702a1d181b21a9012b18cd373c6eee83bd5163e970c24707081f630962696a3e6488f0d32bb7fbf8f29f48bbf072595eb6986229631d19ad2eeae940421a65c2dd1c1bb48f46abd838e659a13e9500557e2e525706bfceb30cd88c5ce5e3760d584127ed8f89e162ee28bf9df5a9133b27b69c74d8c083d2682bb90538f106caf9ea1758426bafea8531c9f3c336ddc76c61b6d6e61d0340a7974c450ca72312016898e718359f4404b2e1095800a6e070130a3f2d6fa5e4c98d274a0921cc801eb4faf388c7ab356e216dbde59076037fa90ce9b15a36e3934aa7d77cdd153e4b527fb93e30fffd727c71d902e628f3883f123a7234df2f5decc81af76c915e0f3c33956e57a8e16f71450f201ba8fd52b6e35564b760b0862c97a99b7df8b246f63a9899ac587ec8682fb25bfc1cf03c823300b741b4317a7ed2c2f7fc8fe1cc933cf3a7da1a598efd647ebd22b381323db908d8b623a0f7516856c89acf5b552868b95d1c3321fcb3c46653d3c01275f129a1e1502918d29e8cebfd309aae4410a145f54e113406c586c1cabbd50db70888517de3eac2d9cd6a821d7283e140b7fe410e2aca1511c81c30c8bfd1e23234f80d7a9c62cdffdb81139a5977cceae8706fe52a2da5bd789ffbad3a00745efa5cd482e9d3e304a27abf8ddeb1115e3df85e64981e92e159f2b05142c636aa63bccacc6b688f60d59e31709956cc8518eaf99b3a417dfda0e9bb56c756865a0a69cd9f80cd0a833e1a3b664306109e9bc5eacd7617d77735cee5408e4a22e83bcf2813ce4db114abefba863845299359192bd72f70a4e117fe5778b471d9d6887d16d7032fc615e7d48dbd0955d92fef42bab3cd7a749694e02d0de763d3775e29ab4682aaadf3a920d6f5ea3a79c94696e1fbfa751b45ef3a7c42ae21500524e6ce468f2fb966bcad0cfaca1a95773ab19d01d3572753bfe72074f65e2f88cda4f74903f72c686a0433e3996c28ba4e8ff0fa4156dd728902f810b7b55da7286570a03675a3e49bc0731a3496f6c65759c46682a305d78307a786d03a7809fc56145c2952876188a8513decf575ba693163ff754ec0373be1f3437cbb26d90c61d0d27a302217dfdd31dfadd554f98b03f9157a045c40cc1cf3c35d92b971a79a01336dfe0e2fb2b400aeeb2e1727e39406ffa8a74fc4f7daa2bc0af839906306121c13df8c55943c702493421f1cca49151628e53f659ce808babac8ea1dbde9be962cd939a24f051859e9ea9b052fe8d52817e5ab89bd3188b85bb5b7ead4d79dc201bea0b39df8f17185209aef254294b225ddb7e6f908b145c01eadee99c1298be022dbf0a2ea2075487106e7cceebf1cbed6edb885d5d86ee877c3f68237a9dea3c144f4cc68bc6d9363d63de584022452bdf4a37d387f9574a90e9deff82a315e37cb67d0c5b5d361daea0f8b34a494ddaf15533e1e72dfba2e4d32f9dc739f0780f9001321840ac79a79be38f7f7ed34e22cc9f26e52583ab057644220f0b27c0455fdf380eb024806d814f8fe93c4df5605ed7ecaa781131e5716a1625959ef0d1f203d0ec3a47f6207bb05c2e2216bd83ab37763d47e77d7dcc87c970f89bf8d2337f6a3ee54953ff89e8c36c9fd79a457224a4ef4c8e01bfd78007a6a4c037ea63368c8b97b2ea959affe835057fb22ddafbdbcf28aa1bd5b2dfba0c00fd9b7ee68501d56864d0411c3072b122d572c1adaa6210260e9aeef6a53a58213c9bd2a42430e7ea142f89158772d109709dae59dc50f63b7e23289160b0f76001d57ea12267609dd7a3d03941a6ce2390e8e576c41451b9eed7b4424977db6faed53ceae45e820ca9213254a8c5aa38a547a56ee476f1fa68b633e164bfa80cd44d26a7351218c683833ddf1ebc91f52a3320ee51ff459715ba8d14dc2c85324a03ededa577071c7de82687222ec4eb5e4fedd445a6043e860b7f07de82149286e26cb4ce68c870254bc355256f51141b58cdb8dc609eee1dc049d754872d035b7925637c67003f10001a958d08a3489ba90ba89b282692da41b549a5f3782ce8e1e458b63eaadfd7c176acc30866d0f2c028d9629c7426301b82f8572909d521faf35e80861cccb1fdc8f2ec1067d1eee7b2b4b1a32df920e050c4c3efe031bb6f8a20a3a12a8da52776190881e02d8bb8d419e4f8dcc09301b5e28e3c155ca14d32b3f3911069c0345f00811068c8e6e372864d18d754ec3107a4484dde7223fc0d3433ec0e043a1295e7d982c17c8aa2a4ca3796d820a29af532ef064a000ed20fdfc321bb4d3c2b1fabaa515770a931dadf80295bef3552ea1c1e95462d82ed88dda1ed8258e5e1a1f4b6195d9880738bb542eff7bfd0332346b700980b8454ad387b9f9f5ee41a40f19fb5b47e1727fc0bd8a4ca44a3f3a4e606721195c9b57e204e204da180e0aa16aeb0ab6ea0fe6bdf0dd3311811e489361423485ee3f9f23567592e1f7941e4ed0d9d5f0c7154fced74d0fc797903929c7aed2380886316599d8e20d869d044396f25d51c6eedd7e505a495b67e200a50f08ecd8159ae31c629e5b626a723d4742e45ab5032550055702f271100cdfc1635a5a4cddf97db07079b4cc02f54ba5ef4a1c5b49761eb40500a14dea25e9164cd5eb872800d6783e09d012a15b3c67896b5578b07f49645d9f996feed08156136d0c12e9e4c8143f2a2e83f41a6014f57fd4fa4088c2842bad4408d0f8395b54e548487864fc515bc290eb25222ce078e9a38d8569d35e8af732e8fa14c80fa21054d7b68e7e5614f7b73cc6c9236a5140581e646077e97e9ef12efc8a7a4f795b3a02afd0b872f54c0f157ea275f177e9a95d0d1f536ed29e5ce4460cb4eff707aaa6aadd75b40032ac489b96d9262c2daa82b1daba717fd5edff8cfcf5bca9311006a972aff2da1eb735a688124dbdae2f3e02426a87dbd3423f885053ce6780ef5b598477bb234f20a79014005d7e62b38014e69c4843a8a702ba26c578738903e580a0c8df93e75cc6c5159bc58dc536dc9fb98644c9deb29bd29651825b56c913c5555afdc7461f8cccef1d04646a321b3556197b2cd35d1e277cebd515fc1c63da3bd77a2932ea6f5b1669fe02c1b461720b515e2555e3990bfb525f158f8eb471752d60610f30f6ccec9fd3101db0c0c6dafeeee0d43540f5c689b5c5a90a3a13345c93e6d5a2194d3b5bb85bc9c8b8d13ad37423dcc811b709b5932c440d1c023b2c70638e4cc7d3f9a87109b6ccc9f38ccdfc10cf48700a2a31aef980aac3cb0e7858255e929ce9ba92a325f3af6fb17caade3f14912419fd00fe8aa4c0706d70e166060d70832e4d7227a86b09d0467fca4adb8b9d588598cfc59489e6978123a9279cabe77be1413a2738fc7e0c2caa393a92a534f0753ed1bdb4d448fe932eb757c1e40e535fe83d8c9b3593956a41bb856c5e570f1163ed615ae25e3728d391140f4d9474f0b6cebb253669287e8477482d04513fb3c04eb8b065c28a69de0eb8d4e4eb4b93fbf0c69e9e06218c670978493057be5d8f10d9d78585620956efbe87694df5fbe6cad27c07c609f6a5143bbb8141db8005cefc326d77eb80d88c4e981b92eb87a497a4a01c5df3fe3a04533a442a1bb287dea180a9b83b881090bc81ea823a1c4de18472d34ae79b24816d3b435715c915d9efb01ffbd0f00b2833ff57fa0f04a0bfd3418c06ae9671a45a0df0137402026ede916a25e91f8004ad407cd8efc48a11ca4888674b20884f61da1e5b00e8295b18df1dd46ab84ea790a13bc8f32e1ec98cacff246c135d720bde092b91ba9c73c24c3e38719ec57a308391500bec88a6fd9d4d08d08fc10a1ffaaadb126a54f55e889308163003b9d2d538aa502ee4ea0bda8f4baa77956018eccaf60bde2567504589a5b472e6882feaf86735a6d37f4ecebc42b8e3b2eeaf99539837b001f8d20deb597727876a1d3ff73912baab7d1bea31161a539874f27e49f4f6af49b8dd2211b746d1c06d527c6a83e705a0a7bc965a0c135b270aeed80b8529ec1d13b0aea78c540e1ec4f49dd326d14d65866f6fcda2e5f5d37f15566b2a70fb3649120695239cb001e15a62e39fc57f0f0e03c61d003d452702b9cbc8759c5ce74cc7c43270729cb31e9ce4b62e374e46a0a1608ddeb4dbdeaa82e980d9fee0935ddf9bb68e1398d61fa3766f3f020ca2759ce9a036933f8ad8b3c2b1c07bd2ba9e65376e4cd5d75971ad415da5716aa228d9985338dc9221eaf149a77e0611ed4f1af88b0064990cd2518b8b840667d716078f6870f950c1fa6134200c4cf055f5f716881cd0f56b216f1002d2180756d10052ff220b8ec01a19ccd08a5847a3175ce7cf9518995177c5e44a8012a62bae6eb2e01d4d349e1e9b1bade559a6336f6a4cbdf2632b99d248a60e3539ac10b7a71e5cab3c9cc5aeca0ae53a84acc1bc0e20894348e9e2f85762acc4544077110efd614a05c95f94f9c9eb91d13bc6d8d30c072f1c219b5dd7b1cdf5a53d9ac6e4d44d5a669086e95a6bc7dd14f2d18a38eb816864f1cc807b0577ab12867b45c84290836610992d0541364116b4657d4b03518e05b8507311d8971ea41e73fb6b5de610538ba7659519f1014e8081cdaf987883a61cd3e63b8763cfb8f2cd9474e51108794212c50afadf079320299bcbab89c6d05d730aea165a9d6d69f31eb415ec0c66298d52fa0f95808691cd0a660ec3bfd20cba6866e28909843703bef8e6081fb70b253b146222cd00d032d215d144f50854889d2f507a3605522bf0f6b2ee1967bc458396cab1a746e560f735a8da454d4da4fac1ff622717db5a589fec1cdd71e419be95f1299bf279981d48b0069e2df0bdec5b1731178954fac7a74ffa1ad2ceb424267368473ba41e1ae409e9af37dbaf51e9481a13b928b408d06671f7a15dd652c33d0b88650b6596fb86171dbf0d27bb8f595137678f6a0807152019afa73bfa45ea2adc9fd3745d60270f732eec9628e06f7f3690361ae9fdb26e7f60a41a7b47af605d44fc5e69a2072744eff25ad43dc987fca4c49b92485c606b63bd2f06522f9bfa906dac01cf516b15437fd7dc34dad2b807da4d6a0d26f40f22e7a6539d9c3eaa133d7cd5f4c62d0d1e9fbc599d2ac8d4aaa86b03a180d76261a5f9db50540b3ece8ff37e339d2cbdc2b6e738a584a676282f65d51a7a9556ea1b86387ef885335881197afd6094a2f46d5b28a5e8527a358f8e948d9432c91bf87f515277932909b5a67b47c2ccce976a0f4d508ca11e3f11139b37d5b25fe04be33cb484801862dc992723d3d5f62e00feeeb7307a673c56cd27d3f6d28295b16fbcdc9ef01fe0971ab6c39bc8c60dff302a9b6c1baf6218de0f5db686c9f4458f7c86ae1cf2f4dcd35e20433888f8dc1f50e1d66904111c6c267a7d42d285dcdda1c6dd68a86260aafbea5b57b0cff8525b23d78b5239bc658581a4ebd6c23b0cc9725be9623194e497acc2082980584a20f60b07897576328e3b9b40f572d7c13670c10ccc12287d55ae1eea03f00626e9e3201c33dd75061c0451cde6b76a8da27914bec2d3a827254ad15e962851ef23c050a0a1521ceb1695497343d2e794c8a6c34db30efbc5c94a7ea555cc42f7901321db04b8e8ec528b9b166d4865b7a9c908492ae919cfdcf97c0c9c7d8b2ad65b304f0529d9178a069e84288c55fb30e6e54d98a704b921374a47cebab2b4bee597ef4a38d3de8bac487c1e29159ade9aff8e63148e59f7c56e13bb04ecbc03220e571bd798daff3b38955315d7ca0905c982c9acc74c1937774b04c8aaae5c5fd4415cf1fc7b9e1931070c6ea086bdc5301305c1d2b35a586e7fb4813e10ebd916c0e9a697507d88ec602c63eae32a9aba8e64d85ee10eca33556211b4096b2ad007cdfd759c38e448110b516a09bfa5ea7f5e62fab426df2535c3355d3028d16eda9200ff79c83652da3a506cd158ba63a3b541e61ac0486e642870e0f1594bdb4f58faa8947fa4056cceb572e839369bbaf0905c7aa0ba549c3b9a9f97a947a5bf6951e372c9360aa76409f5a307bd810c0f9ace2efcddcc49f01e93f909c85f1e032614beb0c79b4cec146e2f716c6ea29b6078fabaa95f93f86a09577a8d3d47387c1ec4898e0d6ec4d325e3f38ed666157449e0ea644544c63d3525ecb0612433e6707deb97371008607aacc4f0fa44e07e923762c39d06da4e41aff9667e9969f8a8dacfa574900c7e6e9ad1f4b1d6c7070cb09c9e6189f3a9086a1649c34542683402fdf3729f80bc8026042168f5f6b466c5e492be9aa15788044c5696e658c31be174e553de3f120376cd1956c3b6927ccaea9869702b336a7e18d4617db6ab622606d02d1b6ad3ca3f94cc09ff24705ea9a2f208ba6f7d81f9925921aa13a92943bed61e58e458b5a1f2ff4756c2a37288b4d92b531d2222786e730751f2638b0c7480b9a0084fc83e148988c833466593bb7ca80a0ef9a678e844b3912458e64c1561a04839b1d07853596f1adf10690f6a8beb3edbf6bd261a9aacb226213c15b9f8e3a735ff43fac65a44a0c24ff30fc94800079ab5906d6841c3adc28c3625bd6f57245fff6a1e352a34340ea445d75ee2e2df15625b94a2ca0ebd73270e7fff5dde07ec5c80305f492b2e3954531cc9e19832a694ddc71ef2e3643427cdff304e2354acc758b59ff6848c1eac215a2f6fd3b969da068acde50ffe8b3800605b3e4bac3cd1f69afe03bed0ac5549452e84e1657839417c0739a7aea5063fdd3c7df42638374f583b1d29449fb2d17f6edb5c5a78944383bdcc8de1f9766132df503bec792e5daa5d3832bfbab7d2883cdf5027b505bcf21e02eb7c855d451ef8c01a06b2e231dff185749de5e775b925da222d18be0df288596b49d4c639ce20469892efd7d57b197078a2f2a493a488ef0aa19c91502ea8865502fdb136dc507465ef3dc7a32c74b79a7f43f892570c7d57db5b57ffe088bcf19d2d1555e85b76b44374887ca3bf412bd578039e96998163719f74868deb2815e3b39d372170a8dbf0a9e9abc2a0b99f4aa4befdc4ca71f1647420abfdb49003d7fcce9b55afe395b5151cd7268429f2fe11b53b2b5ba2abe1ce9c0f2ee5561f87785953066855231ac19d785f4b597cb9aedfce6bc9280f6a9771842741df4035f5440486db69bf6c5278bf85b65bdc87d49bdade283dc89c005c4019ea1c1c4d58468f03036f7da88519171af392e8da9eb3569abbe7bdb967020649a3bc0d142485b986d1bb542a6ecda4cb0aa1619ec9711e4cac6a160c7de4e7b7cdc3670dd3118dfebce56c53e993f74c8e6763ed9888463655cc086b950b2fa42c5d19d31a8f7172d80f2a843390e646f8776f93bd553405979d44ed236d0a624f5e6f7fc22098f12dd9b566c6200298c9015a32ca138c7d7700a627762c1a7ae56963616362ece4774f88dd666a792af48c27ce1b17fad42f844c7efcbb0700e539dff9f1b82c7dda824f9f79749b3588f162158b7ad3c00ff4659bdf0891ad54f9382f5377b5eb21907520785d42e0cc8c237faf924ae7fa09321b2eebdf96508946da29e10a116835a1bf6a07355bd48771862af611be15f4a9a089c608c690a5e12f43577b6dc126753d035ae2219be06a7c584f1e8bf80a28373710035573d3bd0d4e990e56c97f5ac2520a8db8e77a0553e1157e0bd28b1a880e056d5e4b84e701c782adfd50cda11c3f0b8a14bea7c94e1a33e3c055fabaddb971944a270dee1548ec52200e38a7cee122294b63031283484506719b88a1bdcc6ec43293c0b932ce8a595286dfafee2e3fe94aca548ad90d5bb2d64ab0d20306c7bdeb80ad2656132d0584d6894c2bf757f0af7018d45f8a1cdaedfed2aa2ee42a09ce3332cc9064483dbc119447185a2826686fc71d1862d7365ee81d261962a5bcc7274eec5f2170f59eb31d31545ef7955e95ef5d66590470f7ab4621959c25a5ca7e97e18539ff603bb23a945ac74c4dfcc88af8175166dd56aed1ac1cdc0e814c9de7267fbc4f7c56a5c5847075cf1f9e27e4ec98b102a61d65d402a329471c274a60f193c351c5513e7a555569ce4825cf46019427677ac9fb0095de4343340aab471754357524c0f536a475c22bfe2cf2457045df149a04792bc536e6fb55ec7fe9833e26106b421ecfc4488fc51880396d55394c2216ae16bcf3153bf4c397161ab67009a7dc9662e2cfd8d1cabe949257a7dfed5932ab4aca7592ca4ec430491c37de0d0e83a679876d586567559a614d5c14f7684367360a4065125bb495a5a9adb7281487967e3fc0bb3761fb720ac66bb3a11e69d000ad32454c7b514caaabffcda8601a7772f6e33f6e940cf7cec5250cd5d32fea9e16656dbbd432018ea87bf16d8c23f8ed6b9491f55f9f8489f85e093d20775274395a1efd763afc06ea78c62b865fc019a91f9b95d54c0415177b5f488071bc8690041b81177f760cf9e9a593cc7bbf7803a788f9a84e7f971611ddc1b193ec689366a44fa5ed3c5466fd9f80aba0cdf05b48fd8c6f723d0e8614845fba92e496d4bc27ddaae5f1409e69e05ca08325494cd09616044798dd65820aa3e2e9adaf0d03c56ebf0c3e91e6764161f41fc38304093bde7091b9283bce67e5b114d3acda63d746edfef9264307e91d9b12d7cb79a197048c3b3e0cb5c56d9d6542dccce0060f265a742f0c2132a2bcb057bbb8227e191ef36705284b07358e9e5c6aa1fc7ac6113309765598240e3085183a2eeab71a6710f58cd6743914b23e671d3fab9fbbfd0b036fd5558c7b812219091cf148a3fbb82f5d5d75a9993f05e7f58eb77abfcc2085646121129ce95ac94e9221d60bf97c96189568ec86a61540af6a175b830c382cb601a5e6544e88a8d8eed705c51bc5eef20240ea6364ff58481ca90689a926de84b91fe54a03e75a31461e4c8d20aee62513fbec5f078b30966daba36b6b4f4a97a757b1a6db61a2afef3411b2246b4babb10ef49130930ef56a3b936c289e56190b9a97f5b8a3c86c6543e438f2f75aafec789467f21b9ba33bef6d8e55a6741d7af39e2fad2843c7a1e52d5b16d13294adfd9de127ab36578b4c09a773b1aedbaa83313458653460efcdbf11500cd4d96a97250ec460d91968a34d332dbf1318592f3cd0c1de2013f9fc0f4b875f607f01128fce953177b54ca047cdd1f3c43a4d52975bd4baca29fe73ec6df6055888fd40ea3c4a20a1508271efebd27dbb9c2b8ed207d0f440b095a165a43485e1ffb4fa345104dd12b969cd180b0afdfc8f0974c7a18a0cec17be12cd48dfed82604ba5e8cc8786c2ba4caa30823db85fbdefb9acafaa5f6a09ba4ca6351efcd144dd3c437f2281dd4f63cc0155272bf3adf9c199d749d4d60029dd616bc7524c7b06c1f8aed8ccdd983d643a4a84023d882650cca08d41c04c4c4fa112a5c3ea964648879d0ca59ee8a05a47a028ee015598894f00c35082f9cee6ad4e3d00248a8cf3847f3bb43c91ab4d77924f4c382dc8e1c080ada1f3d80ab3e3c23e5f3d85a0e65cf941b75459abbede0b35f4dea64f25b982442f5ccb2f4f4743e31b7c70c18ff73d2f5f5d21673cdd23793d48d62052730e1e5dea923859d6010f22744c46624ce6044522780740be46b833aa88f3021c4d275f164cf20d43fefc9d4840710c5c6ec7639c8ea2585697094a2b14ebdac790935f9752beee0d893b202e62471495ef6013825e7761f76d10013a25cc6a3a3f46292a6811670bba47d5cc08f0cc95dbc20daaba0013edd4fbeae047e5895e769f64dc38447c64eb8147ff7f12e76c3efd3e15e19f72bde8119b6f8ef4c6043bf1b044937bec89f71e242053695a73cb705f4cdfdf64d8c565de907290977906963747114b125f29ac0a33f63473007c8fc6281c7ba48fcfbeaa0b216e00fc3dcf4782754726d9c56332f989d0e34135b38e9b2e1a1f873b24028f6fa936590661ef6575533954e254603136a07a41d886da0ac51cbcfcd3f5d689c94b1f080a7844fe8b4d42173e0dab7e12c715cba75f3ca71fa22ec4ae9cc63a2ab095b43208cca8af01382587f82b5ba8358a8c0dc3df6cfb1afc12515fc790bc2bd8c3c32d3ca7130d4db7a4835f585d27d38dec52c61aedd54881fa8621f95b726244e2e22b868bf686a1ea7747997e77a32af29d2ed311be4bc6591026b310ae729185febdfe17466671f27f2a05dc0b92e28208ffd1b10028e4679b07a10a4433bd0ef280ff7001bde1674760dc6566c01b26061b54343ae268d9fbf7ae34b54c5b548c8d693482cc2d9a5d730b0e945792c886759ac32fccc135a18025471171aa8ad9945536b4775ef3d39a67ac3c38ecaab048fa24b79a5a129407023ef5910c222791f660a04e832ce69068ff80ecbb23ff130582c97da1fb5fc82d6db8c8a50ba0f57d73bb6e4c753d38f42cd7754ff84f0c3741135c8daa6d1298b17c51a3dc2f9c5c2058385083569aef3f293dbf47dc6ac765a5268fcbae456ec4344380a1b40cb8bb191c534d949ba8e5186e3178f8de0d3f5f05eed48b7b935a7818f68cf068a91b2a47b4f032e47b855a65f2b67de1aec419a3db09e5a03b69f1857228321f4086569d1cd16eb51b3aa249af3fe68aff43093a9058972148813dfe751cfa2fce610b53544c11e134d55f44a13bae239937295e768b3317f149fb0e271af9a0a68ad146a52d5a760e238c65f7da89ddbac60591613484b54d94daae1274279a1c23d740eac4fdbe7ac4b446864c3f035939068ac2117e55e0932df98bc5311dfa44c3906a5429b9aa237753b4431eba1b086da1035866024ea2c09346debc4d551e7559243fa298f9b5b29c96ba92eda584ae75c101943447cedb77103a3d7db526596665a5c48107406cb1282187c26381dbbaa7d528bc68d2e6dd579b083437015c509108bfb53cbe125f7737841540e1c5092ffe13c4d548bfefa9b08e28ccc130f876c9d24bebfbc3d62fb7cfcda4352a556b93221335699c74c4852eac2569dcdccd2eb37f049a91f98f40d5836c0a1edeb3cb19f316bf1734038d6f9fbb6432dbbb5b2b774169b484e2a4f81afa80df05c181d464714db7d65c19e870937c02091308b077e023942f8f420b707243a0be8f04407fb2456d0ed2eaedcf3280330e9c8ab472d309257d01e384eff0b00e2ff6425c8fc36140ace92d6fa0bf8941da0fd6c3212c37d5df70490ba7125b19d6e7c1ad091b2ce153851998eb518846a99d02b8dc310e2eaca44cd8ceecb1a1c5d02a6f1e0e2eb25d89f19b4b988cca972abcf04fdadf5c3ccf5fb6907ad51d09f18b05fb49f6325441559cc0c7981feaf11dc8c26a1faa1d0e100b0fd77e3fdc3204fc38ba6bb88df979e60315422df574b4e6f53945311d409e7045fb6c4d9d9f7471cdb06f2c116579eb721d97edeedff274307a7dcbb6b998a53ab3565612fc466560c3268d88f542a77b2e9e72e2e0406778cfb4f7ab049e7c06c69970c172dee1cf7fb2c25376e1cf83b825d1e5fe8a5295d038afdb2cc66c72e8c39dff87f36c1eff486c5a91dcf174322b998477754be7c4665b8f019a5acfd06f4095d8827b3afaafe2bb3f62cdf8557f2589be0e4188640e494c5031279842136589340bc87517e5941ba334bf41f2df6c8938fba4ace8b0a8455609162ec7a5d3fb37f71dd46b9dd2048ca4618627e7d79f1d28f50120eeddb95a0522920335d459545c6edcae7c6d8b574ed184aff4149da23ad63222d84af42575e15679c4b23bdfe002b4878ad1ff28a2656509a6e7aef281dd20a6819d63fe74a2db9b2b77a1860767adb897ece3e2b64603460451acb172a14f3d48d2656cb6e1ea6ff0c38b5ca8cedf660f608180943238e5f327dfc78394dfe2e3fdb9867fc839f5c1a8b678a63363c50438a744fe1e34a2c071520a3b5b35e363d2494e4bd03c4c4b10e2c644aacc0a48e22783e44779aa7998287db6b2e7288995dbc81e6570d2296110e9e11606fc8b06b77a75ff3488199ef6a4f7de608baf371c2afe63bc8682f99fa45483d2af4358c135b03afe1b22d3521ca36c8bbc6a75df44cdad1ab82e436395c36101c4085ca014384d6ab32622e2b90e2f600485119dd648aee3ccbe9c57ec50958f904152f7936341313b8a82b6e33c196d80b4424f85ca0752ae8d24f3ba72e98a50b20f9c2024f27ef2f4e9341ad5acc75af59d5b45a3113a48faddad010f3e0f6ce5cffedf3dbe589b504be4155a3cc3373c62ec8035ec1473eb305311fc4472ebd668177f238a513ef72a7c22f97c8f7ec9cb4a1f54367116cc2f3b23c60fec1dd926e9301cb73e8a949ed61a2b75716fd8ca1fe8a260e2875bcbb8f92258a533c604c93027791e4ed373b297ad5ed06b6c30799214c2c33bf42a6f77e5705930eba1b9efd7ebafb9568c6c18d0387f2c5b2e56cece5aad2b3337f546bc6578e56b3ef5acba7fe98bdcac4f31f2a781f7611ff9482258e318c64f6fd3095e15f10757bad5d1098a54b3009d7baa475326bc4814f10b72fe5028c8d76f84642085c7346f4b6e7b112668a3f36fa9c65b2ccca84a2b10635484a2708483d5e3ad2cd8380feff35eeb4d73497af209f92d28ff3c6e63006fa4af3b840c0a86c7f908003b4624e1cda315a15523001d0d351ee28b2c613a707b697b6b771e4df36a41c6903e1c8ac6c5044414ab3914b423c16d6c118e9361ca2039892214285797c0e0978de8f18251512e47f05f350235faa62875805f303347bad0634e8be619fa2437a1a710eaa2675d00700a6cd9e1fb66d037482928a71e1733aa5dbda17d20552eb52f83410cb106c9b282abb9856c86352b567ad0a0400ae597db74c844f42d0aef604f73d88b95f61bbee2d3ad36c3827cf60e66ab34e2a324e106a70537a418f8bd15ea3133702827c9ea47440ac5a66618b5c9d6e9c6ae3e3fbb0cc036fe8507e566810289d915a84e67a285ea6d9b845bc80a05f9ee545e6a8732c8bd928892c24c2054618e598d65816e8707694287fd79b0f0c8bb73e0cd95e1e27d6fdda967ad9822de893ffb598ddbcd76b62031655f7fa94d739420c09aea9020a2cf020ec546d0fdc47bf5066b6067d0317cea1322ad58283534074fbe7ee8a50fc5559f783c54e1727a8614c50e94eabd83537b9f6fa07f6b0cfeeec8dbeb4d0647d448070c1268b441dd2379c7b880c2d15e324680807d64596ddf5eabd657963ea73d1b684ed05f4fcb661cda1f9d3bada70c4700403962fe5ab8c891b12ab6302cb72db1fec10a731c5c404aa62d4c1c794166833b51aef1e46270a175c3e9679652ab92cf0ac6fcfa95ed9cf238a52ba7f933c15e57bc83cdb1bc1f8542e7b24a8fb04b10894142605cfc8a2358529431c98f0f19ab713b442d106b4c0d78c2209067a82f8e5a73901566773d1d42286b3f7d01f7c4283ff2107bdbf2dff27c08830350afe23724bbfbdb2d017506f3e30edd42d7885bd46b398baacffd95cd8e479ba376deabfba8afb8690f13d793e9ba48b05be8faea9cdca9744aa7252b721b5e5f7c3e53cdba6817f183792b6057a5989560c3e5861929f2fbe2f931d796dbc719f8d28036cb6cf11720bc773e0e0f2960a1bdb85f15915dca80896ed6c82eb29fdb1f0b4adbf0c4fbe7eb7e29c9343a799bdedf7ae553a3d19880c03f78898d191c21cb258b1d8c0d22b53e816b9088631bdc4f808b2f1495c3857f7ad6071dab468bed7349a7948a1b2a584a9e730f1e4108647a4a2f8d60948f322083ab68c7800657903a313c8f4201251547b69f8018360b94f51fa231f209b96a1ca941ec81aa1904b19a7667853107000c1092525f139333a5d1f09c1329e17d3640783121f85ac99fc98e0cc84eea74e9e1a39cd637b07957843170baf1463ff0a91e80bb9862c98feb7cd65bea1283a1384cfa686399ea188bf6937be81d29671e0a428ecbf941d3add80dcb2570492f01dc10701e00b1421289cb91e87a29037056f88ebe0d7dcc0cc1b36c9b3fa35760720f584fb86db5635a78d8b96bb04817662797ba88db98727a4a30c1218c1613500dd7941f7bea66138ecfdb06db95ee6a74bc732f05ece8236af69d82366712c6dc95c7c757dc5918b487aa071c791b620b741dc074c836ab7278b71ec688716f274b085b5fa8923084de2648710901d992f7dfc0bd8d4b444087101f1eed2b5117c5c3b388a0657234d12af5f6221dfed20e7c351a3ebc677f652262219f8b60890b77efdef7fc25ccb6fc92c464c5503580f536a6c70301cb796076d0ed2ba99b94f45e9ca1b88375bac16ebe3828cb9c95180ad46cac3b84acd272a9c82c97fb619a9622013801467b4dba308acd5a32e9ff6f7adc56505acc12aa58a45ba8b284c135c7a7501ad05f8402f0a09f354a039e24510998e995cdeac6720faaa5f2af02a21637911e366a3dd2c8e9c166f4fa9b925f1ed44b955356aba0ca1753817ff680dd7cb6a2630d24a84f6d6083f83c9b5afadc0a64630afa5ab456a52a5f88e33900f94f518f98df3406c82a0222a9c65f4d9c63b0540142a7ed1e06aeffe57fa54a99a7c4f026eb38254b7431534df7b5563f28dd16ff29f46e8106be1694435798f389bd99b5a896f642a60fecdabd5d32e49608a8b97af9d843aa2aef0e036296d959b611359d8040c7c04537b326fca1ff44079d7e26bf870f3eab46b95eac5551653a90ad66526f5d2ae1c034314bf5330b6ea548094908f7afcafd67e376aa719ec00a629a15856b0586cca2e563d3093cb517e8b095e567f282a8870cbfd7520cc489d10a7dbcb2d9f526b017a4fdc138c59e5ef14ad5f628fff80988c268bf1f18fa17f78483791e809839edfb2fa9372b66c6600ba9b19e5720512f60440d3d189b74ea756c78451afcd88c97819b1884fd192b698c13adb5eb2d22a08bf5e07c99899ca9646e1211a70a8923d7f07c4d81474415b8596af240101d02e4e153926bfb303b51ded8352f9b75a90e80425c4d8193de5b60abb4600c06d0de02d330b7a0001c729d9630e0a2404db505fc385ebbc520047d9a50ff72fe8069508236a8ffde040dac8217572e802a591ee792b81d655ee9f05d72a1b30d076e955ba42ef44daf6dca18a3d73766ee2f23ebd6fa80ddbe2b9e3d0a421f4456ba16a5501cb4a41b1fbb9db1ac2d8ffa8d3914942cd87aae8cc639d0a3a1086d4256a01930baaea8578b48e191bde4634a947dbba88026c5f4f460ace657c219538145e70c340bc887950a1fa09a0ad1397fdd3d79aa2a6b75b0dea7fe2b5a18109062b48e5264a74597b0e0169f1ca575aaa4de5eb66054d1780301124ce9bb91051c3d78b10869da1024b909933fded123deebdc6a9fc4753eb2014807801ac17057b2500ff58d496783ab575b69aff98d92ab448fc28c94acbb213fb6a38d56c9bc41bbeac8e8375e55faae527be334119472c95029ec9af372ad871a57f36593fc91b143ae9870c90b1f19805f4c64ea4afce52429136c31d9a05d3f7c33b6f3b7d05e728ad3c36a8012db72e48bc00d7d8267e426c5873b5171c00d3a2a509dc20b889f288276224cb5c66955d4f9478188a1e0b47e809a1efc954e6fce502a82dea44296f6e9900983fc72f61ce70b31e237969f84f4f1e479a64808782a7282a86e6faaf3fb3db4137824842e3b45881d0ac386f92378b87fd88753ec6701fbb33e2df8f28bb62dd3505b89f67bd7e9e81163711aef1caa271093f6831475fcd0bfe35790827ac9846cd3dc01ec1247faa08e529825acaf34b283acc0e0cd0af777516a6f3de7a4a5857c44f478503ca73a9aa4f2996f68d2ec245e0c1807e94c9fbdd82b442a0744512cfda82d048a4526587cebb1c184e4e7c481fb0afc861bcb03c40c87980dbc48ff1973c8a9d00c41d00777c001f40088a2ada3adef1be0689b68878424de7e409d0358c8b4f16d14dbfb88430b40f896ab82be8f337b869572f860c3cb91cc5af570cc45304baca08aadf1cd075c1ce542ce896e052a8c133896794ad52810ad800aeae867a98ad0e43d36ac4dcfa2e491e116e319aeef87deba9a58493fc6587af0baad38db4b04eeb251e50190d725e8078ae367b5f0ce96051b93a2fa60e145bcf3fd3708d8ce41fcb0c9d1084aacd9c1dd4819d4618441040ddac99a62d26503196cedcb0b88e6ee4dffc183a98406ebbb4348cad361fb2dc0247234ee533ab0bfd89751cef16c787361e882a76442d8a3ddd229f5c78e733c20bd009678cdcaf65d5242abc696f9b606f07a73fd2434088c70f0df3a423384b84d047ea4a3780b22b107c4b7b24266bdb82d3822b4e9108c4f091c8d082f29854d4988b0e9ded7cf9065f9616ea1144e2419a727a04f59dc8bdff4e6ec26183bbf54adcb28505e9a0152bfc02b9d6548fb5f5afdb0461e3cc048d3d806af9ef5e585f95321118298724d862cfe085f1490a562ce7240b095add23f0269a86635d7fa18c2a9e55450cd531170581654896e5c5c12cf8cad81a3788589ac73fb25e3f032230bb69033c82934c3632d2e1fabc63fa72d092cf66788b06413063ba5b4007ee1730b117aaafa543c4a90ef2fd8f0d81c622250958f98a871f008e5834a8d83f379ab81e57e719a94e31815d9184c7ccc76c8c70b7ca4138d1cda1016841668db47f57bd99240f61497bec18cd506450c2048e6ae247fd28fae4042493bb55a3f1631190a22d5e3acde0d0642319e8a633c3ee5b6cf47004e41852ff2593b4a06395f7c9bdcf7785c819dd1352b524fee63fd305cfd32d6a7155f271c6d75f161d10ef9cf884c3a134175ca7d84684323f03e989d0aaba221313d184a35353ac094659eb59b63ec6d45e899514eeddd5d7decbf5fa600791b232780f400c3c8d55a86c41fa1da65d2e841de2bb32b044f7f2b0873ae4b9fdf7bc2ebd1befcc8c5f58f393638904c1964f6fc0cc48322aeb4ffebde4bc93b20b1b92e0e985f45f3d4e6a58be04ccf8c043db4bd3a8f130c335c09e80335d89179c152fd7e4be0d8102ae8aeecf506ed40948a28a29790cd2cd0b3f3e60b2fc798cb81c0d57a1956d49dfd40e6a11f21bb6617f054f2ee034913c8ee42fccfd4953cf3c9b927c590dd606b03959527419189c0a79c45f901cda2985e6b8049b64a411e20e78f0a457a1a6fffa9ce127627b05521de6d3f31ee8cbddaa073df4b9c2a1007835453781b3df140377b599bb3debb6586a0fc71eee81e7a073411d114f91e9acedb495245a30f4d25a10e2f676e5db13d338f129df6af825c872e200ef5f191f4cc5591f48c04b1034d10a3fdf627179bfef672f36bf612bfcef57b3a20a5ef4e53d61e9e1d550d21ca7b370121ac6798530f104d33077a981451e46689ce9738e08e46afe1feede7ab0aaf64420dbf884c7bc8f1e09ffca2ee074f0334bb7425c563ef6d53562003c1a1cfa1932dd7868c09f1b19c7021430042e94ad8cad19c7efa8dbf2067c60e4975c2641877b221520d5a90ee79fc9d3ec1106797510b0b0f9150a74cd635fe9a57f04feec3f3d6393f38ab44257dd5353a1c9dd67c3b76e98b1558ef2426f419e093f0026d3143bba38138c6e14ab7fc5ac3a094c554061fda9f455e2f8e8bc0695cb22bc3906d7c5b3ee3f92c1758ea69422271ec435b1104814b5eaba017dcf8a63eb91d6ec945ebe8946aec741d72d0130737c1242556862c1d68b5bff05d31d394442da74e4904626290784286435ab118ca1fddbc174a300a2047ae5c8e4bf258fa04d0084da561acdf1fa0f3a22581d6e899edeb458e0d70cfb455c90dfcd18652042721ae429d4f64d77da28115ec83f1a578aa27e383d2c1a42c9d99a43a267f4c6de0a35e900d75b21ce72b481c8a9bed2e120361dfa4f809e157eafc4596952282840f97bf18fdff1309077bd12f9348f5a524e0992e2f68644c8616138ae9cbba181bce23b468ca3f5c081603811fc2a3de8940bcca39524e419fef645ff5c769d5e2b7dd7dc514b5538bae1a4a0a88e7d8e67e3949061fc9df8dc4e4279acbc2169a3f3165ec6cb503bda856de630db3ce1172a317da7e56fc7cef84f1825df1b12b855d1242a333a43b9871d4494a591a830d4c348c54062472b426eabb8a68e8eed583463fd23bd337cfa32add64e91db8321b1aed608078c290dcb4cfd2b6ead8a1db89f1c0872bbef2d13c31e5f074268fb8bc4bd6988771d3117d284333e6002096cd741c46911c62cd9d582424a462cfab056fd2455c34c0ea7faf3d7a626b65a094ba09d91efd7d20a7a91b3a7c08dae2f9ef3b8e7285ccf9b810073eb64a7d09bd124dfeda5f69f9521d436cd7ee528dee4bcb6276f9ac8f218853d574da4e6281283d71b4ac1fad29e3386719c00cd9b54cd89c41eaef7cdab7a6810076f370d8a39a59a6f91620c136c3aebf07ad80632ee67b39168c7c22737e8b49971bfa57bd91c566456b31a1730cd83f4eabd4fd5fa95e7f87319a865c537aa9a20975bd36e27d0df40b5f3eb5bbb6baca83761fdbd71ab41f15d5bcaf7b2ec2f686f4f7f73bcf87d4290058a6a7247d027ecf2df0b1c7b5ac0aed11a92168807563933a741a85edd31051af2f244686f86775af38295e7563733ca3dc3c19dadd48cd3dd16d636ddc0474248b619ad64c11689c1445c56d0ab53eac68f340b321ffe600c4401b8eadceea8443ae600a1867535e0291c0862b2f550341fad71eec568ad53e2a70066b2643d22bb25e33806188fe2ed57750e509652af8c2a502cdcdfba8c47914d0b8523e74df7b8400dc09b0409f8dc27cc75556ee7939eca70e56906281ab51fc8191668e00b56d1100ef68a8c46b0f7e42205025675382ba1a48a7fe3225b94bc88a42abdc94fe21328885f893523218b8e573c1744aed77273ae71450abfedf9530680d399c51c09b7527959c2342251d2ac48bc50ebd5441bda124d3bb382869e47330e01902e8a2d7dd6ac8b8d3b11aa4d10ca23b43ac407cdd23a538be9bf92da78d791deedcd312a732f7533d29d3978d39bf9d550652d39051652c96cff1c47cf5f1a2b88287760d1d9e704261037d5361f722c5ce77cf092e6fb1b9861c0009335ef073930a39c393ccba7ae29709445325249cd66354c149c0a9c7c6cd150081f872fddca21320b12710704b02e127a01b0844bfdc703d409de19655fa5c8562b8ff1bbbbff8cc8e96bef6148c184dfa68bbecf996c327222bd871db84f5381d0596a730c47ffab1f23f19b9c0af04fb941c65840538a7074c28e433781eaa53452dbfdadc7722305dc2f95402ec6c2df2ca6256dbd345dd3c5d62a8d2359a193a61d01936aaf5ed72b0354ece183d78a9568fbe2a7d066bb1e15361625265f0c7fe4c69b2fd0159aa5920739c077286ce31dda5d22f84bcb74c187d1ddab3f9eda11367ade85bfc7e93670d8174d8e6a69238114377169c4be6491d6cc353d16d77aed7f612e2a1216f3ad91931c3a0990c20ac2e88eeea6d3c35c53781e14a95cdb84c1077101935d4f817ac0900e846f888cc3e274f2fb4f1b536f9a7cb89bf69ea4ae2559235e0483d258e8ceb421520dd6e442967f662038f757e14daaa86c7934d0b5fae885be75605e53573db0014716c1d3dd8d7429244770b879bcb0965135165ea7d5a8d43a9252d7e19dc7fd7126213bf4bce000ec10973d739ba9262fcc457f4c45db6ff7c2e78c49f01b566e4458fb15230b87863479f4d1067c3a8ac8cb4e62d15159a2f783e4bf5718b42ddcd26e54127744a2d303228934f19774d80458960f94e8cba54c8c18e017add93a422215b45f072e6bdae2e22a14663cfbb101e5d8f7ca1e41496d3529b497c8db1d13392d6b0a4356fd82f5c3d9ffa103d6ef814c51b2d33f383d0b268083a0dcb31d7c5462eb1dfb5bcb1ea117dc6e9d5fe866a0796b9e5412f972871fe3e6df8149bfe9db4bf87ceddab4067455140e463bcaf394ece41834bf0e3f417132f62f5c46467126d2920378cd4029404ac1d1bd7b5fa5430ad94af43105a619eb6fdc9199b6cebc6d5270b214f2fb41040c18e647bbf33e8128b5244057c12052ea144420f5510382a6b3a4f1f663b54c2e81facefcfd0eb8648d84b070b4b7bc85b438bdaf24477990c9eb968dde9ac275b2150b2365012072b1113d227f8fa3d37c80ae0dc23f9f7bd1ceee3c0c68d827ad39226f79632492903f30e1510710f3f7be2672e04de6632177d8781e6896f0f92f332265ee633c09becbe79cfb117c67b5e036f1e145e7efe3a1078bb5796817aeb64b48e9d782b058594b7fe03deac63c9e23bafb773dcfdf09dfb80b7ce69e00d5badb0e479bcf2b806e08d2746cc9b52870c0d70b688e129b6240634c461414d9725b1ba452c16eb588dc9627568888205982ebab4c0c498e5965116b9234d3e38f9822a96f579e662b85817eb58eef9aecbc7bc52a3fb31bf31c7b1f6e163b198e7b19823297dcc4fa8f3b12453beeb1c2719f39dcb006f1dadcbe79eefdab7cba9ef1dc676ccc5f7149220be3d03ebf5e21ef0668fdcf0de06ef790cf0e6cdc05bcc88990765e00d043fe77898cb2ca31ee6324ba987b9cc92aaea61d2caf32caf241686652581831346cd0f736058d869d2c211586a3013c59827ee61713ecf9c122c4fa687c12615300f7b58531274bc0882cd912923ec882b5f9c512a23a5f4668469f1309c0d068339929b87f909d4484e1949e261cec55fafd40883b71b06cedbb75ff430c516345c94893266b0a494442e0d152920460be7adf380373be63daf31f0e65da924cc7c7fdb20050b199e70573091c4d8489879c2298c962243d0191bebdba78a4819face61e0ad036f30a7a6f032b9c016730948ef72bdc4d76da2b6f912ef136a9b5e63739bf4dc263d3d3d3db987a98998ac9e7a0f8ebacc3d6c68eec93d4c9f7b9c9ee69edcb3c3e79ea81ea9a73d5e1831bc3062c4881143eb698c1b83ea698c8bb37aea3170d4658e81c5e7184a4f738c1cc3cae7184e4f738c1c03ea738c18319e983d319bcdf2ac6a5635bb9a5dcdf2cceaa9cf707916c4e799d2d33ccbb318d03ccb337ac5e7d96c7645764526936d3d953dc99e6451b2285996593d75198ebacc32293ecb949e6659962541b32ccbb24c26f390480f3c247770d6d3ada7d8cb61ec31618f097b4c564f1de3a8cb8c73453e63a5a719677ce633767a9a71c6327cc6784c0787a783c3c3c3c3a3f594a74ec7d3f1743c564f9d07475d661e2f68e6c93c5a7ce6717a9a79328f139f797878c6746062613c983bb1d8d6d3589d4eaa8d14565715ebaa625dcceaa9c770d4658e597d8e293dcdb11c6bcafa1c737a9a6339966331a9d89830c0307e7a06efac793a66d06acce01598b5f514ac83a37a0a5681a0d4f7191ca3f4f4148472ea9a40a6a72008e2faa87b0273f60acc5e81c160b0a0cfb0a726aab28aca30a9a79e6163a49ea4a09c6c158ce9ab9a9e2a3d7518ae8fec55ce42911e582877d63cfdac9ee6effbb49e7e753eaafc553df50f475de6afcce74fe969fef277c5e7cfe969fef2d7453e7fdf37a64af1aa52bc5eaf97561dab26b2b27a49c53ebfc6d4ada7ba05f572b2b91793cdfdf4fc6a7aea2fdc902d5a94984207283178a233e6d792cf2fa52a84ab0ae172b9609f5d15ca55a15c55ca55a55cd45db8ecca7d76293dcdaeec1243b32bbbb2cb45a5480faa943b4fdb3cf57b35c77cafd6df3a4fa950a2e9f99e795aa9ac79ea1797af179fafd2d37cf33543f3cdf7c8e71b75a586ac30e63be609ef09cfcbda7a9abd2aafcabbf2aebc2bcfc3e1b327f5f4b337e629ae89709ed2d3ec650fcd67cfe9a97bb8d94ab946d23592aecbdaca5de7bace75cdd43553d74c5d97857eeec6cca79f2e69ee72d7b8cf5d87eba38e8aca4961a5b0d66e3db556d6ca6659aab71697ad139a6db637d06cb30df3d97af96ced180aa55228b5666d3da54dd4a6096bd25a55ad6a5495f23ed73154aa3ed18a93607caeb96a7dae4e64a4076472b769aca75a3da9ac5aea738fb96aa27905d54a4f731bf9dc4e4fe7d656ee690e348ca739dca159742bd33a4f5d4e8a35a12855d5676a455d669a7bea3253a64c9ba07ca64e4f33cd14aa8bcf348a4a5d4aef481c1f480fa6e7190645c27a2ba9aa12a8649e593feb7cd4949a2ea7ff0c227180d283e9d3e929d6c4513fa15300226fc8cf21983e9bf69da74ea3ee1de7a9175147a29e448dba85a7534be43c7dea3e52602f02ff38c1d9abfae93f36e0ec5dfd742783b3f73406672feaa70799c1d90b6a0267ef09e72eeba70709817327f5d3837ec0b9abfae99d52d7d43d75b8aec99b3ecc3ac7fc60f544d74acd89a3b9269aae2435676efa8c299cedd34f376fdffac554b8c8e2b7677a30baf19d7be0adbbf25adc8137dbd4471747714d3f3d86139c2f8e1a3da146d6a7df266ad4482fcd48192d1927e43c0d478f262e47230a3b0f3857279cabd4cf301fe3db2fee3e32b617511bdfad849d2701787b9fe0e16bbd35d27b1c9cbbeaa7bb16d369288173e77e3a8d299c9be9a7d378826938c1345ec03496601a4ce01f23f8a708762fd893c079c80a0f5181fbfbf4728321254caa1403932daaeeee18b4c6504a455d681994aefa5edcdd5d9b74392b3aa5956552ba2ac1af68f85e8c6934f7163ca769d55bb86f0f062699b5e32a51ada15a2371c8e9816be925659b5e3474f7f742f73473187fb0255797e6b622a47f5d6f8a1f384396d4ade1b5a6ed19ebe4e4e444f5f1c084ba601e2538db3245e05ebadda246f9b5e69beab5861ae517d58bea5555d414a9a55e56426d3e39f4f530c1ce059e4eaba454943d030b779f6fad6d71f4c977a58ce7c74e28c5075766c693c9a6c813b851861962861320528a1aa8b81a857831e4c622fa010c5e94881a3f4a659823c8508d1fcffd71a2896afca694f267cc99acf1e3099bf074a12d5d1dc895a5a46a8cb1611235d258cae204c4d32ac26a14223a75e1646caf21106f8a51484f0f638b30fac1dc200e9cab02343139d580d3029364424988a8b1864559c6cf8375580035595b630d6b2c8c9ff4ae2b96877c0c5aa8c61aca114801968230330211020022630ffd60ba10f1ca78e907d3a5042282a7f7915ce2091dacc6ef89513a9e38a89838351461830a0b5b638772fc644f8088330a79c50132ed3461350ac9c1a4431363f50e81cc24a3101966ace2152356308d423cf80207aa11463fe8508e35043291b8c18d428a8ebc3143b17ce1c50b5b6387d50535e32703564320120c14d528a48d8c30fac1a4c92f9687bc8413258adcd8e147669cd45b9a54d2daf415ea279ea01618b5cd8980faf53ff9f10c5123eaddb3b69c52927b8aeb903ae7171fd0bc4eb84bb7492f928e9402ada2f5ea40da6d1585d030b628e1c620427076baa4b49d360572a51d486e8e2d061152bd5dc8d44208257063155ba44e4d449b9a687a9722ae5e768182fa1a2fbb1401f5f449dec09792c1993ed5aa3eb25f6c35e170381c9128a83e9a554c3a548dd35baa8f6454541fc5c2985142096ac838bd9dfae8860d4a3845e1c639ce215ca653aa3e12801374a678c24955a9ea34f6d16da2272bba658015a6508dd3bbaa71579d55b4f513f733f753e927d34fab9f399a55ad9862f4a481613bf206fda1efba3718c6034e82f5d4622fa75cb0fa3c4455cd7c7d5b474b5b754f85f7c40e225f764e7dda2e6cc1db90be5ee08552dabaee3f0aeb42167c87dfdb0aeab854d6a8de5f833cf5e99f9db246f52aa4ed7f3c921ad921f5874f4a29a5183c7d52eae385524aa98ea6621662c550f5a12a9b82690ca4221059d2821417519c2c4927a6fcb0c6cb135050b8304e071b84f1e02a6cde211af6b9e674d3eff4cf83dd3b34f472a8fa0bcb2ddecc50441d2734ac9025020b543f347591859b370fb8a26a8a2e4e4b5ca20cd162878626324488e972c405bbd4c85fe06d4e8761f91c4aadedb4d65a6b159235aabbccfa8496c03b784c47b205ad8073ed441224cd56202b025997df0190156d36a82d2caab09e9a963be30dce788eb010481d3f97b737acebfcdeb7ddbde10fda3985da62159827d13e8289958e92e6b62217a55dd49e385d501a92c8de2491f51a551f58857035e36d4b917be22d99b74ec56718d857c1bcf333c0e0d90135aaf2061efafade6d28498412badfc4b823bde7862001b286089288fa9a31a217ec83ba6c0a66401b301f162e0195514e6d52880ece42377c28d0a11916c67d04f2b8cfb4f0ec0afc832a856b94eff5eb1de8a3cfaf976087097dc4e3d74be8a3eaed417892fae81383546f98b7f37c0e3a0f98b7180414835ce111731e0fe27d1413813cb7ced3899d83cec33a8f770e8e409e741ed563fef2f9409e07b9c223e6d5835c7989ce234508548f3905aa08e4f918730a80de1ee452db75dc44d7e5083a8d250ce479ed148879831ea47a4ca440907650a43591e772940e0bbf503691475f0e5db1c7c4d5276ef0f418172b3257e0e91e14169eee7a39a5a4260b4faf2fa79678a185a7cf74e0f9e9024ff75e4e299d6980d0122cc95ca17a3257a42e359264ae443d7518a5b8b187f4f6ea1d501547183b3187448bda567dec48b02f6963d785ddcb1c1e3b97e008de4bb1cbdd51f6d79edd3e7a1e05b4cf25781fb4f7be7ddae0e9be054fffb9014f7733787ad01378bab49e6bf7b65f8a43d42673f895266b480f33fd0c845fb0202d78fa101dd807c2fc0a9e1e04054f180d1cf0f41878b3dffec560350441ff786035ccf627099e753290027de74e9577ee8c9d27d1dc1440c0d80d5d7df57e88c1851c3972e4c89103074e9c3871e4c89123478e1c4ae954c127a9a4424c7007b2aaa8833b9da0b33f1aa24042bf9c1e4c27a15e75b21e6a9336294a6a9b2febd2540c54e6a42fa3a4480173955339249fafcb5e4eada0f53d6bbe29265bbec7e7ebbca5fc9ed4bf6f6109a6b29ad8faf0b38cd262d55755d426bbe594d3174071ef89258850076719257d680a6d484ab6854f70965131dae0cef3ec75401190e3cb81c8a8510597abf07259c5e1aacbe73171b8d1e520d01577bc9e878c1a5d22ad89bceb5dd116c30a5cc55cf4723eb9a4f87cdcb4f123cefc4471c29b30130445131636a594b27a1478fa208143083222c75017e085d10813731f604137dc0f46438acd000b9e1960c1d365fdbafb67053c5dd2ee211cf074d8840d6581a7cff6ee9bd2ef87cfe70a2cfd9b3feca454da9f26ec4e601906a1c1d23f8ba74b11880ef9216f7f2883a7d110d3a84dc226acfbd77f947ef75fcb30e8880c816cd426bf0e264320fbaeffe4d016f61f7050143c431a53b00edaf78817069be14f0ecbb0470bfaaba8d0fe7a10e45143fb20c86386fd20c843468d2dca269a1f9d21908e5c5fc45ff5017b18b5cdcecbf561d7f35cf2bbffc9180ee9774d70f8e67f9247be9c329e1ec1e8d1f4e953de9838685b172833c84087d8499b7db5e09b4a9bfddabde0411ddd37951e58778555daac77e19536ebb78f609268febcf52ce369cf5b71033ac46fd91dbb5ffdb39e38650d6b4112a419dbcd8e5997126c1ad62a5eed3c2b3c6eb2cc70a3a8a14d164d526a38a2cdc5e15edc0de15e975a0390320517705ee80209969b44081d5ad02209324a58b9522ebdf7faa51776ef1c437585aecf35323ecf366cb28e40d183943254a0b812cd1559ec04b1829313966b9b6edfebd2c80daf77c3cf3d1ffe30e65a071fda5023c3df0b029b264fc8788155e585f1bac0420b3927aa5c959162bc36ca5fdbf5226a04825fb7e148537ffd041dfefa7462faebd30a8abf2e9d3ef44aa3c6d0f1d5874eaba2ca876e0bbd28f41904780b916616caccce6692ea6733b7a2f2b3fab3d96ce63ef3a4994f20c0db2cf7a8f95c7b219779e885a4e0f242478c4252d479a129aa5e888a205ec82716f0269487703c54715365cc1126c48cd9f6414becccf962ebc98a2253c65cf441377c46fa2097593e280806344c38d980c607ac3663d01430704a78c1e2c6ce1864a17c9014467c90cf27f016047b773560bc47f1bee689779f3f8037c7435fab157d0de96b2ed17cade6b7e6b8e6b49a9a365ff3e90378aba971f22184e0f30a780be14a4591f52080e0d30a7803e1f600de2e930d8f03874f1ec01b0e1f1f1f1f9f998f4fcde78e11ef03f43e3e3e4ef371f7f109ddc7c7918cbc8fdfa912c0d77cee00de6a779e10c2b4050b72ec04d102947106023449dea0d1818c159471f6e4673e9dc0dbec4eeec3d06715f016da09e3eff57b1d5f277f7dea00deaee700de7cb2c894f923af473ea980b7a3aeeb3aa1ae13eab24002c6132e44318498184617725a9e18b1041169bce8ac0d5d57eb3aefba3cad74ddedbaa3aedba0ebba8e76b3ae480742d7e1ee055348ace1b2c2105fc6d8d0580102499a2a28587435745d87a3ebba8e766157a40ba1eba4aabe8b7d8784ca141db468e382d49791c70c75c8b4419385863263c7f49d7bdbbaae9bc2f29d124cdf2dc1e4bb25ea7c37a6ea3b325abefbe243f01a82cf29e02d84d065b67de832177de832237de8f2eac3300cc331591ffac401bc8563a23c0e1c3ea580371c4b58791040f0d904de4098cd66b3d96c369bcd7c46016f3325a6fee8c8e70de0eda86b254a10f1f7fabd8eafd3ae94125efefa8402deee94d4bb57f7f904bc79ad56abd57c3a016f35cfe285847cda00de84aed415efe3e3d7c7b14f23f13e3e6b006f3e5ec44c7124d5e4837c3281b7204c0378eb726662781a05781a3e67006f3432f098144942c5430f53b82132661905c2122a6220b5a48a292c789606cfbb9ee789def4661e114fc8f3669e177a9e7bdef45c7a74cb9b9e8f47c4a3e1799fe913063801c4959d3b54d091f2ae38a2051ba2d0b085c998a9d37b337ca64fde96f7887865c078cff3eb39f69ce6799e7b5e448d82dc731bd488bee7484cdef31398b0c2894acc7b3ead98de73caa4f55e1340fc91d7239f4dc0dbd15c026f35aa344f83864f19c01b0d1f1f1f1f1f9f3180371f2aa5a3779f4cc09b5321f930e4e1a4868bad3168da2c8d2190385d2c5d69296901620c9b7ce85309bc854ce810c20bf98401bc09ddf902789bf9bdf75e9f4bc0dbf50d3ec33ec8cbdcf041417eab3ec8a712f01684bbaeeb3a9f2e80b7ae05f0e651aa1c3fd46c01e28baa3084c89251f9f0441b1ea86200235b9251998cca64b225a6a697c590c9645432d94c269b552f73225c5ef67a59075aa488610b233fa47132ca1ab04354d30b3d28d1828651666578197d994c2673a4a997f909562ff3e9e4c5cb5ccecf66b399d3663e59006fb3283a1c7f7de63ccff33ccff3bc15c09bd75dd71129a27dcb773e9380b70e0978931169e187fc877c1e016f4361fc8c197e67389ee1b4193366b86dc68c194ea6e83d9f46c09b870bf39dd78bbb37dff92c02deba4904bccd400a23f51b6ce01307de36005a7a03039632585dc87005d0125970a0a2862e47d80064630002ba40448064400d24fb2d0f94c10301010101016501750ee43d902309f14060aa5ea6c328736ce7653e04bcc968609af87bfd5ec7d769d78580b7eb19967b6a56c63cf4d9c677ee25cc7760bef3ebc2778ec97cf765cd775e448da41498dc771e04bc75485e9270ec39cd7320e0cd83017803ba3f0d840e4760bd80242b063f4e45d63469a3051c343f96c9cf8ff7f3f3e35d88f89f1f252d2cc14314163c6c398d3fd2cd153e3061050aab281fc61fabf43f3f3fe3cff8e34850fc8f7b9ee739cdf31780374f05f0d6790ae0eda78b0b2f8aee02f0266ad0dddde34fffb0b4849128b6682802d524c01a628a142829ba38350cddb69e1d6b218c8401228a09314d46ad1ed6c8598223674cdb17ba7d9aa8cd70d1c58e9d1e98882c196b6079c10e9415b22c01a2ed92a6ed75910e40b767fa64ca1457cc2c21a18597329d448a6a0617ceaca18ad35649770ba0cfd02a6a45afa8d63791eea0db5b4977adbb46774f4771010c2b25be3051059a468192161a9480216689aa76a17b46f700ba73edc6b507dd3cdd74909459810a39594e8cb94649517dd7335dd415ab66d52d8bb34abe893401ba63b47dfab650f64b17a0c3cf768db5b25736cbd6e97006f0dce53a25dd5214235ee4004697324c4b63ee98665072240d1138e4e0c41663ee9a5af8dc397559a06c78eea2be74639c80e1082dd4685992050d63eea8fac816586fc0c4612a62cc5d150b9fbb0eabcbfac073b7d5d5f9f68e78394fc9636afaf6a8381979f69eb27c6ff9ce5ef6a4a89bcf1e955775e4d95be3597d7bf6ae3cac6f4feb7bca6989164e4796ca408dd9dbca0056d5d40d5a5abc8431e68bcb7dbe3925103cdf25a61b9e6fd3a572ad6ca194c3d3950d52ee8cf93e01208924362481b28598315fa8153edfa82b85c3f31d73a97278be55774dbef9e6bbf5edc27d87e0d975e4db95fb3e806797d27777766597d3f796cfae27d7165714023cbba45c63689f5d675c552e2bd7d5776f25797ee18eccf8fc523267492bcd0f411c69a28b31bf941260c316255548103185c3985f4c36c9e757d3cbe93dbfacbc9e46cf2fa82ddf3f9f5f5fbe5f52df2faaef57d5abcdeb2a019e5f592fadeffe70df5f2e7f4a1f93089ebf275fd3cdf3e764e53b7f59bea5e89085082361aabc508df983c22205873270b898a1aa1af31785a4fb3bf3fd558de0f9b3fada7c7f58dff9cbdfd6b73df21986fb86e5be49f00c53f20d532aa1614f9eb47c7bbded5862cdd0897080c4e6db4f60e2dba753114b4c4144f1ed940a875c162ba272f8f6de12e2eaa9cab7d7ab21d8344121828b6fef94a0c47c7b2755c40bdfeee18ae8e2db3d2823a0beddcbd2faf6eb44f5edd7aa856f7731b5bba88ed0ca2111268a866f7f6d7179f394c4b77f57607c7b149b2fa1046f01782b8104124820810467017823218a851fc12b3502e147f01fe06d043a9bcd66b3d96c368b5ae167be02f036e3b2e56f374701bcddb860791144f02b8263119c2682ab00bc898084159f8004f809e02d01172693b9cc452f437a99cb643299cc5de629006f322494fc383a0ac0dbf8ffff7e02f0f6b3a423709fc4e6938e60f349ee03bc256dc1f2084080f7006f0818faeb52e6a2bff7de7bef162a7f3d83b7abe5cd1fe0006e02f07680abc5ea4308c16f088e43705a085e02f0168216249f6389cfe124006f3970e0c08103878f00bce17028fe86576a14f4375c04e0edc655e241f04a8d600f825f101c83e034103c04e00d042358782424070178433a3a3a3a3af20f80b7a322a4bc91917b00bc19d1a04183060def0078a3e15069fe830ffe03e70078fb6068686868c83700de86a064781b36de866b00bcd9d860830d36d8c03300de3620e2e90d6000c700783380288aa2e817006fa2d617a0006e01f0560077777713c09b0f31c413a08327805700bc114048484848c82900de8484d8e28b8a7c02e0ad2828282828c87980b720218a780f3c700980370f6e16383f80017804c0db0066cc983163864300bccdc822c4d7a8e13bc05b8d5aad56abf903c05bcd8390f31d74e00e006f1dfcfcfcfcfc7803c0db8f0741e505e0951a19bd009c01e04d004088f900780d802f00bc05c0f33ccff33ccff35c01e0cde3e289c43c91eb006f443e3e3e3e4ef3f112c09b8f6351f2362f6f7312c09bed0e7d67fbaee8bb272f3ac79dd33a2c45bef311c05bf7d4c40301f905720ce43420bf813720a92722cf01072e0278e3e007ad0f43bfa1e390def9d01300dec2b1c94ed4030000fee00d0037470c277868c2860616ae3019b38c22c3260818c2505141d584b546acc5d91f6bb3d462ca8181060ca5255fac18b3dc8a4511a346ca0b1c5af062cc13678b7c9eb9252bdbb6b319d86925969dd6b34096dad9665ecdacb9857b4b8fd05ccd33555a827da64fded227a8a8199ea9141d43cfbccdb42a532b5ac5677a951b77e46d2bb9b2c68826aeec1089921b732bbd2d52849517567ca801c99131371391cfddd4569e843c37d4e7fef23a785943b58415501831e696ea0009295c152290001366cc4df516f7b9abba4d5fbdf5dc59adf5b6ebe072558929b4b549f45c9daa959ecf35cb982ea4b032e78b992aac187385a2e3668a0c5296aaa81a738daa773e57a94a55ab36f05cad6a9bb75eb1dee69aeb56b6b89cd25b6ba9bc75028ba72d4a6019c2083b63b64e27e88243540b6074919a62b4f3d942bdb5516fad140dcf96ca9e9103c55baf2a10022b8aeacd126b9e465bc20d50a26043240b8826a30de3ad3bce0769ce5b3f810e19a7266f7d5a797187c987b74ea9bee02207c6135153eab079c2f2d6eb959cb76e9bb0bc753b303c0df169781278a31106981f1ac00f3902c0db501d38bfc1067e00f0b6c1ad63c48bb6173d04f026866118869e03bc8558bc7ba54639de1d0778f35bc6c9cffa67b3599d9ff90df03673306478a1245ec841006f426024015fe657e658e63499238137991bf141481fe447e02de80b187ec6cf7023f03643cbd7bcd6fc03f056bb5ef0f0f7fabd8e2f187fdd0678bbfee533ec81e8d47920a0ad261ec80d00de80309d2ddefbdecbad90f565872929d4e8307a3d5ce922a7aa0d9827378cde17ef7901c09be7699a3863a6836fad19bedbef9b9ff3a58b265d644147cbb71300bc7591d691d9777e3bc79d17df791178ebbccdfffcb807e0ed47ce11efe3e303006f3e35c09bb555b5cf399ed6a6499b335094694305cd651ff9963b61589124ab4c18b4ba45a3345a115a471be2695ea951ed697e698e694ea3d168349a97274f7309c783efbc03f0d6c9683849a0f9760180b78eea42e72d02de7a00c09b25026fb4ac2caf81066e036f1a88c9e165c8f02bc3b10ca7c9701fa246ed3264c890e1720af0d639006fb6bbbb1d00e0ad698037195c9cf90cbc66e043e02d839ba609273e0f7d47197307df36720e23a2cf32ea7bbec76f1fb9a04b1618508c648161ccd863a3c2a2cad5144a8818197be87ccff7788f120e873332f67811356aef711bd4c8f53d7194be6d18db711c1ebe9d66e4db3debccb7dbaa7c3bd21661beb9a0e1db37006f2d256dff605fd6a516769020924b4347c909252b46eb788d911fea345933da2edeba1f79eb497192bc7511bc59ab10bcf520551df131d67c0c77f01623c76397d825ae73300e5f8c63e00fae7268b280420924a0c074b8a0a3654a0c97178cc05a187b18cb309e565a80c3458a2a5c7668228831cfa7c74a57a4a6cc99a2092e61463918e322639e54338c5d6679ccf39804591441051620aedcbc30e21c1917ac70685324899b1173f1783ec66e6b8cdd0635aa8f1d090a291efb09493c96aaf2e1b1a34913a0f3b02328d62b7b1a45b0fc093a902163cc254801508cb9042320471bcef86e9423e899768198686ba2e940868ca0e83a5af09905bfe34585c38db426a21183ac2a4ab8f17b092e6066e170cf00d84bf0e679d76d88ffde2e4b1255bfd7c37df52eebabfbec5d51b889101878ba6cefe59e983dcff3bcaffdd5ed79f3d8d1d3dddddddd8d3bd0ed213591f4bcf33ceb79b6c8960113a8cdb39e3dcff3e94d2b66cff3bcdb34739248bad7b53a519becea0243fd7bd2d55a973ae8b70a8450a14d56df12b551253acea62a6f09fa683a51a34efab4a2d1bc7bad382551bbbe5df0f6ced1faa45050d446bda70d9e517546f597b75bbad087de668046c3b8c976c05bc9a3574cadb45aff30454a105dc65051048c1170aa4c513101c38b7d228999246e64dd5c928032787792207ac02411f355e990b8da2fa534cbaa3657595b3150da84a94992cf4568beaf8a19e9ab7b524a79435b1375f681f4d2ab08d4269380669875ba94b626f2c46aaff73dac7845da100e9401d4265d966027927427253cee30237d4bf7fcb39ef544187d29dd07d2572a6b1593a84dcef08233ccb38dcfd667d01e5acda991adc55abbdad1ef30f7bcb54360f034f2f669bf4a2aefdc41c0b788446db28a29349802b78056eb55fc877a67f1ee0703639807f3bc5c57b85e3e52b0b4bd5cbe7cc45eaf13c097eb9502ec8a15ca07e5baec7c5e9fd7eb3ab1bab156b4524ae9a4946aa006b7807ee7d365a5d4cac7f3f1547a74c4f3243e5ea9573a9fa00eea2d5628d8a39e44296d4a69ad409ed2296d16064f29b5e2bce29bb4ab900b1885fa9df41cd7735b910d24d94732718ade630525a2fe89513b7c70705d49f479057554ef84eff589624ee15d0deab8ef122b05ab0cdd40414c6db84a9bcb65f5a4cd755d9d5720ef79d78972470dd88a26eca0b61e36d8cad2a134498425a8a8b8e9614d192a62905649d800664bd60a70ea9ce922495012adbb632021a286640a5a773bf105cd171a543179d568b4a46e30df5eeb6eecee92685731a9befd0273840a576d018913df1728e674b0efe229a5746a09cdc35e4e2d2df161c59853ce3e4b973de68981b0efe5ba5e676bd349a5ec01d2d1f3b397626e8117050d4cf33bb3f4dc4e9bfa9c34ccedeccb33feda494f7cb9c48cefa56d94ed6c7bbdaead9ddddd5614bb5db3e332a5b4551a1878e99676c58c3db113a93c7a3915ab67013c15b3dc78193e07be7584dff246cfda44a331411323a7b7775dd6ceeb7c09beee15ba73e7ce5b3b6ba1cbbae72e17073258cb0011e610176d2472e4a042607095db4461be33b777b43318a8f3215f026acb31ab64f9399244e8ee4bb02b6aa22a04064f9c6d8614787ab6654151e3892577b098828c114ac4c0420d6188e1a28725da5833494cc98aa66638f294fab5497c5e4cb951c3929c132caeb61c41c324ca113b40d98208982634d0590858b36524cd97307ad0e2288c27335f48e141873996ea8b2e5b33f8e0058a274918b9a28729acec90c6081196890d341829e59d0d48ac4ba58820a58a22b848b161a2f3fa82892aee544901c4195b668718d47cc1c515122721963489b22408262b4fc8c81ae5c5105a2c258105951eb240020a17245230dc09828a1db301ba151575ad2cb261dd4651116c0922a8986f3a76cbf6db4b1357c3216af39ad0a11568420b1a66a8b2c4136a76e4949ce4687105061276893b346f12e7f350948d9200169eae9c68a1c41436a0204506cb56142cb4ea289101298b8881062767e80851c4171b6ca0bc982189272b9ed8290dd8209478b05205840f2e20b2b5039126b864bd91c280945a9e30816185234ab470660d0c3d7831b5260c2d4e88d9c004b080c185246ea69848a30227489ace8c8981d5111b2603435abc40a1c4973443ac3084851e6a20224b499418bab06034d02b6c40ca395cac283d01e2cd19236850be2801a28a2f6eb4d82f1a908ee506e8161a90b2091eeb31c0d688e4ac98818b0b39d430360f5acc9c8121d784839ab1bdece03dd5244842954beba36bbbbbbbbbbbaea3d924be9d46c4b7d7bc88efd8d8dd2dd66844770edd91432fe3e55493324dda7c2eb23118a2e426491662a6b4ea440d9921066182f0724499303174d9804c8d1829a8a8010d0b5b8c320b22a686a8810e0d586411f5a679b82f8ba6d3a656949c497c015334078b0f51e8d004cb06145ad82109123b381144175c6e98164a45236fd00cfc68421283149c0e3e60b1480cd9e1051f967491029735659c2ea7a4425e2ac0f0b457e94b1b36cc018e103302c6092e9f6dc4592ae2b38d5a6b1e7a9a4588295f4c85c16ac1c756530f6aa014b962087bc467a42522a863ea343ab504f5b446a7bf9c5aa2614929aae1d42373360f62b0a04d97d3af8cfa229b88628a306fa0c420358504c2cc2162f58513234fd82d1266c36cb3b81bd3c45a61a16ca276af7643d4f6f2baeb516575855e4312fa7643eb121cc15abfde61f661fb4eb677610faf019ed8a38a57aca17c8aebd3f7de58e09e3feed76e143aeb3f68b67df694360b83ef6eeb14cb078b3657b657ffba86b55b76a27de9947a67fa23e53ae167cc0455d1082284a02d3986e280fe74614138d4eb5c784b74542c0d1832a594521a5478524a29fd61810e55818774f39b738168c81ad2c59749bca43d65fdc101e7eb7a19ced802f044ffc9daf4de29bdd8fc3438d79f401d90e1c9ffa00f933524d08ea02370bea1adae82753945134cfc0581a4b8c38a55dcd14465fe93d3253b76ed7f9302c1640de9e0bb1e08d3fef360d705eb10e9bfd707837508fb4f7e20f87281d7f3bace5a5b2bd8dd149c30e913ab7d04eeb283002f9bf8f23fe8df9c7b5e8a3020ea401da036e9928a9756bc04f31f4f9e3fc406633aa52c06a443f6ed4208f05618c79047494db5a39340b126265ac4aab027851336f2864de680d11c9ee7b8359eda32fd9c63d2a9a37b79c53a82ec97524a7924e9142b4fd33a3bd6893688ef869cf2c69461a5d4e6fbf5d2e5122f6cc7c4baa8cb292535b0f979d3e5844d79a37be915e480099e16e480099ef286e580099eee4d79a32320e5005105e70a17b024c1c60542405e7aefed7befb57276d7e38965204f7dcec7d3191881e74ba91fd6bca4363b4d07e749b585eb1c9c67d31738cf2530709e56bcc019294617188ed20d5fcfe03998868e01967e5f4eb170a61d76650ddae28f16b88a796ef15289c9e7fbb04bc1b8248898c8376738030ca6b6a728613ee7fc5c0e738528803dec61ff4d98cbf97dd55fd76161fef13e606f7dfae7df77e7b433f431f4567efd097b2b5eb1622d3eeaae97d310d6439bd4a79b20bf4fbacbbfcf29f8fd0954137c7d53f48253107f642551db745728425802b5dd1e5a4f15ce40b69739c84b6a934fbe5ed1b751bef62c4e4f3ca5e95fe78d910a75b4cba430d8a21755e59df99954cad3f2ce78554d64456dd46be8b5a1364abf885f60af8eb7456dd4311d4f0bce574f901954c116476b0a3fb2fc0ffad5a928650d39030a53ef61c23e844ecaf4096909a300e1686061ea130725f2d2b1ac52b69492caf942e187901133bc81fedcc12d0e69c1b5d25aebacf235a4e76cf2654d18b63c750648d9f3526a59c923ea4547ee542ece53cf9154f5f405a9a33952af6d94afdde1a9cf4ae5ac312bcb34a5bc3b66c059525d1df1e80cd0231e26cc365fbe9cb175966b64b5b8e2fa7d1284807cc153ee6913d16cadde4667808a26505bdb6cf39bf2a0d57a056f0d8ed03d35e07ed8c4f123430a9ce5150d2270b67d77063a10820e3627cc863ee4563dcff3fc5a9fd77a52576b4bd047d20d962a1f5670c2420ce4b4ad8f70778d089e4e233047232ff7400a74e3abbb611ef2d73df0765d04224186f97ee734cc293c6d6ac3214f5d95daba164131f920c6891066b4c6f6195078073d7a79bb09d488fa2bec4050d668a74263b06b4a1acb43def3ee3d5b7f4c1cf371188aa928a83c072fa7d2e47e2a8a2c2fa7a238f259464d55adf9a43eb291a3f6b4468986a851eeb19b88d947a7f49d3b6d0ece35128628c073e7ce9d3ba30d4a445d2c83e554d5999fdf90147d0ef6ae10193c3ddf896b1c684081bf3938ec3fdd670e9e4d4822e9695e4ae999f6730b39d5870b2c74257d480cce73e9a50f9dc1795a79e9426c70467a69ebf142192772a6a8b3864b06e2bc71c222072b56589182f459193c7fc80cce33f7d28796c03e69b0f4a13038cf2da27acb145d58c1e8c08200d38056b0186254b025276013be5e623dc0a67061b18079c1302bdcd0a006bbfe7b833f2db06b4e2c49921cc02aec3901a9c0b397534b7080c18079b2948939c59ec0d80c8c0cbe6c9cc0ec68f968e7d17a6a6a70965f44983e290344e8a90dc5d0820f5ea59c90ac6c5194292b47a9a22eade20b6bfa7b2f2eb2557fb3a4befab4faebeef4f7d290fe7e06b8bff7e9e765921e4c973660f1d24da046d6e925107388d8c1851a98b862945e421fe1c83d15d9e1c814355d8cb2ca4b47eaa3a02f3ee4dc64f1e60b2446e9457d7481a63144ea9cc9a2d261946e735a9db9257ba9c3cb281c9678412a8c26714619278a1158cc3102c6ce28eb4b9f563d5e2e7d5651231420bd0fa4ff5cfaa4923ea5a4cf28e9134afa7c923e9da4cf266a54a35efa64923e95a4cf1c35ea242f7de2a4a720fd04e92590de01e9f36a62cd2c6a94c1cb3c64fb221b2b90f98c941b738e975fb2948ae159529d4953c3675995e59a1ecfb28d6bc9a9f2596ecd306659e76bcd5369490c99cf9329cf2734cf93ca749a4f5ea02ad596af5fa614003c4faa3376b8f83cabbe46e17038176a9b2775664dad2e573ecfad59e7eb4fa539a52e537ca64c358c993ef94aa954fa44b38461f39942b9506ba594080f9f69145df3b4cdd5579a5544c967ba6585c3e19a8c99d6f95a5b69c9cc97cfcda464ccfde46b3b7deda7ce5286c9e7866a61ccbde56b7f29526bf522aacb2563ee355f2f920a4265b3e4736f1d15759daff5c8572355e9ebd267d5eab2825ebd8766c357afd1a3a2aac5101f86def4f5eb4f30ccf1339759ce8ecc663eb39a85b3d80c36fb824e9816c460b121cdccc6159b245c9cb1d20267667398cd6641b33a0beaf9a0da07b99b2ebe0e14a192054d1a1cae08629cc1c152420833512b403131ce2c959fcd847c36f3226a54f399dbc0caf2332d78f81916121f74660c8213c307c189c107f93402bc052509432642332153f839c787f24b18ca3555a1c4bac2c8875e43bf6a3e74da15557ce88ec5d3876e2bf2a123d9f0a1275db1f9d04bc862880f7d070c1fc680cd876fb47c288525c3873e8b006fe11544dee9bb0d17b0b6662843c40a28a397e0450b4c6ddeec000693d1a7bcfb84026fcec29861353b35286a576a359739c7d734a8b1c9e16b69bee6978d9daf39cd8a15bee68ee46b6e6ba3e66b8e94fb9a27512329e5868aaff92402bcd5d848792121bf428e859c26e47308f0262404789b5581f520840f82cf2ce00d84fbc2982388acc912b0fbf3a70a84bc54307f8a3da6fbf09708b4004fec31fde5dff497cb9f62528e17ec0beb53f0f6f90423c0810bc06794bcc1f3e359c8c7338d56bdc705d081ac315d1a79620f201d2fbffe1291a8ad96f0893f3eb419620e31dfa406471072892828fa1e422ee4d591925eaf97985f1f8fbb5c2e972bc7bb260fcf8e77c9175150f42eb1c7cb4397e008a1bf3c0c5fde010face652babb26cdf5918b4162be357106cdc1c48f47f45c2f210fc36f8210e0c0651309bd9c1ae5dae77382b79acfc9e32e4fa21f4fd883c7e50b791e87b91762c92b317fee798f1ff351f05fd863ba7c1ecfa70475147d1ed2c413ca9f11aa603e0a8a1e26e61d3fc5ec63c7bfdc451f457f95b08fa2af799e412404f9f50f723a67b8cb67e82afa2ffce9130077c92301f8bcc1e353c80510ba24d1f40084b6397342443ca2cbf397909067c0c3133cfc150aefbfee9d21e697e8f5cb6bd3ef4b6c22e7e09535b5ae7b62050af3fd290261ff09b3904f480bab6b505d4688c2cc20cc3ddf13a2306378e0ed75afcb27e863e85f5e83dac20ad82cc4de537b8979ca429a7bbd420acc91c83faa546d221022b771100621720efc73855489548ec839b08572240a73443e64a4396af4f2ea54c9cd25f6a84224aac081cba89faf70be2c948f879e030792c2df7b5f2f1704c4eca3e8849f42bec7035e73e6127e7e14560481e993c7132f56a2fa758ffe100be7cf97d228fb833e449e650f7a763de8531e71e0a04b79e3e5a07310ba2491e7b69028a44d365ae5eb4bbcb28607f6e5c0fe275f610eabd8fc230a737324f219f2a02391dbc220403c88dce644494d14e654b04ddbcbe52fcf5da178390865130d3da64f1bd00610f17d3fc4ca53dffea8dfe29c0d68b1470feab3013d5a9c4ec54b738363f8e4d0576516d39aff6408584ed960f5d7bd29e45200f24848a456dc00df39eed1dfa2235b13751dddf2edb63ea23b48a2f6c6d250ed32031970ae7dd77c881ac5bcb38fdbf527d8b9b0aa60f998fb90573a62de23e6578451dbbcb5823798e72edd452ca9ad79dcc7632190cbf3fc98cbfb7786cff9e41d79afa9ebf47c4e5aed6ca235ec3e0fa604bcd1dc756fa7fef21bd6ba746f759acb8009679acbf302a1bb08547320a20ff90674a9957afa2f531349a3975f9f1247df7b6b85d1f764786e256a85a9bddb689081067ec1119c648df6581676c7ae448d7a007953c853cff3da1372f76b820b09b9d3f9a3fe4f0772f71088e8403571012a9877de3a9021e390071912935cb14ec7390a851bb887391536d8b18108648ea227d17b658deb138440e8e27520912a51a24653ec01a4c373eb9e4873962abd7233bcfdabe1f4ea337c86b61621d1dc86337edabd33e6f5795d77c6f5061780803b77eebc4b0935ba5668e0d4e9ea7adfebb7525def1be3c688918366a3c725eda0a746bb9ef1a5ba1ee37acfb5255127f7908226840ee4ca1525b5b97f12e4e11e7a83b72bc3ef8110085d36d1e737bceff2efde1ffd3f9e3db18e50fdf5e3d63f094e31b7f7b9ebbb61f6fcd67779cdb3b67ad9f3cf93da15d63c9f9ea88279e7ce9d97f77daffbae503e904bf0e5d9137f3410907fafb0fa8f98e7f7f0fce5f58217700fbd861eca26aa4021cd428da0a85128ff25d6eb13e6fb57f4f1a48e814e0bdbc0509832a8534f98fd73a5aa54fdb971c813e61f7d1d0c292ca44ea0e7851498a3fb479fa8d1154311887b78bd73a13088bb901529ece42e2414067918cad1c39cfb90d17bea7a547151852097519f44bff31d41b42320c720ffb290afe614be766e7bb83eff5c610fcffbbf2ebc10705105f35f39c8bf5c9f44bbb08717817b432b56c75be01e24a8ee4e5e78c32a42fe79989ba3fb0d79d0d15d280c02c4c35d48c893dac39c0a423e64dc212476eeb9f5ce623002730cfa2a9b6852c9fb044469fc60ad5c83fb7d31ee7f752ec9a3eb32228fae58b75ce274e129359a6d2b569656776b2c0bcb31f768bdd6c4e5aa95c39fab160c4f9d662003ce52ab5a9f575b6d43ca446d4bb956caf489a54c4b74a96bcd552d59837a3fa1b6ce758e32d127544a53294d71564b2b0ecef38a8aa75eb7661d8a3b52ef6f55adea2e9757977fb5cecb83b8ea9696966b748539970f19abd6561ddba38a4b54e1ba8cfa9bab73a4ada246d53508c30aada7fed5dceca6da561dd5579dd5554dd54fed646bbdb77694274c373dd3976d7ea889a8dbfac6563511759eaf2c4822ea4cac6a782ae569cdc1c172cc42c51e79ea5e488bab5b48226abdce8fcc9c126a931f4c4b12a5406d544b1e4d914730b12a81d52d1e2652cfdf67da349bc6b2906fdfe2a903a14632056afb311dc8999e298f6893f514a88d4aad1f40a88ddea6aede51194d3877135437c91bedd45f3d7bbe9c42c91bd3a9bbdc8ad94707c4d54d35376402f991c25b71e23edb377d7d6a72ca6287bc15f3131a3c7f5aa136da9ee76e9a59bc17d22cd4469bfa682a352959a146350b359a58cc707ed7353d85cdc9f4df0449a0df5e73fd2dd65c6c0ece13c745a9695299f947ff7d25b030374798cf90027384f9579580c01cec2035ac4aa4708e07cc3f97232cccc17cc8587355093552aa3ffaa7d8a30a4c54e17319456d551fb9ac64574fb39ea2d0b44a7575caf518aa33dfd42a47940da80e9e6a4db72f97e0db69cfa65fa9d19c92c6aa7c9f289ba88b8a61b3a657bf15268784db47304ad42e698f61faf2f288e6d2ca208f68e2d412dbb375f2dd813b8cfcb88fb82683a654ccb087f5f4531f59a5266aea32f1cc9a6ffb722a669ecf92357a08d3671fd8f3cca2798d1ac16440a8510cefcfad4470827dd452588d7d5ad5b64a268e0ad552df2cecf1996597a4ad7d4e56cc76b6b34a3238b8e61f8559a5ead46db1ac1aeb67619536eab689521f49292dd6c431a507d425d6b77ff348044a449d7a082af6ce41b3f1b4834b9dfacd3d4f658e9d820d90895582d0bc467f8226d41cc8152a62a7f927411e345136111673099e7acd69d3aa5825880cafb90caf89417cc42473f4710d3c89ce518350064f98edc7c4dcf3d92aa13069284c575667959478d41cc8350865ccb1e63e61909a03392dcccdb1e63fe1912b54bc404da43990e8e349e6f8e3492dc369614e05191aec9021ca9e5a6d560cca33e79343587c96984b9f4ec8a39838af8e40f15bc0fc3acfb8be52592cdb79a663a878783e4faa4f9c6d6434617abd04f246b5d5ef101765a2c2d4f493671bf9122bb55d7985c27c5b9b9828cd0276b7ce698289e9babbbb76b9b4fdd276e133929da7b4cea11335c37a991aaf884f4a2943f86cfcec401259bfd4467ba4a0b7d6feee4ab0c1881e46f41fa5e30e136775dad3195661ce0483b55725a6b676d14b3d4a6947a3c170cf0ffb6f70aedfed90ef1a7aa4e701841f05fb3fecf77c8b403a3a671ff243de5adb9ee83a727dd8b758027e42b3b39bde9c95e67536acb4a72d3b89628ad5d6da6ad84dd001f2abcbee61f7e68aab487ba80d6329d45affbc90f6135c00cfdbebd469deb5d6c3341b5feb0ff8ceda7eddbb61f5ce6aeb955e676b0dbfab6cfd39e794ba5d95d42ef7fc7385a1abda6e11762a529878ede76a6b37ecdba803fe443e694565cf3944eb5c6a39f45476b7cbd9598904963613eed6d6d6568bb5b3baa56cb2fa1f5294b246db6935afb25e4aa7381aad1b87b3611fe95ce3b834ce25516733e1ab6fcdad2eeb865a6bad3dd25a6bf5d95abbb02fec6f37279ace25a514b3cbaf7faef05697cb866e2b126934e9f9155da8eb1ccba3f6ce69f2887ad7d19aa8d236c2ebda5aafebdb7d87582193d21cbe0beb6cd7593be9ab053cd783fd70812bf0aabb5c7053b85f997cf5e3b9f4e888cbebbaeb5a29adb5f3dbbda06fbd29b4b45577b9e001f5d62b5618545a997c921a55a721ec2535f2aacbe594524abf1ab680561c0e050f3aef3b4fa23785af56da5c2e78807ddb137c40b5b246e75df5f97a8955d6e83c895a187cedeacf14c2fa435cb3ae80efbdae96736cffaab55d676df57ef83eefdecebf7abb8a82bd5d576ff50a3ea0beb5d54eea4dddf3660705eda5d89dcfaeabd56b69ad1581da8ca8e75a93a23698014f97ddddb5b6b5d6bfb6ddb65a54916aad6247a162eec0d31a4a29ab4ceaf0877d097e75e9aa617ed568f62bc561ae9e9be86d0090345e7acfce228a28a2b0b55a6fb17ae11d25a5b4fb01b5c679cdea5ddb9deb7bcdf6aaabf3e2555ddd96772b1bcff3bc9ed256ef1aacacacba5abdabb5d351c5f606a5adda236ed14bdb77cf8561e9347ca661f7368f2e885c1930c1f6cce98afa0e6560823a6a2f5975df4084053b3899e51286199e2a623411a647ea15f5c5cc930c306168c15e94d2199080cda0c4534f3ac3f3726a861ffee7e5d40c4d6e916fce5a69b5953ed1b408a952af62ee3a1767e71ee669da1ee6a143aa104a69167326896001a63344b2d460a6489c2c5e608213c50e647ad0018a226cb04544792975b93b43f5bc7472b077f5bb0b7a867dd77d9fd7cf3f30e4f158e8728cbdf30f873c8e793c8976984794f4d69eef78a4ecf0f5e91e4cb4fe852e4fea5748dd157eb596d2fb4bbe76a123b0cf7f2dc319e6126ad00b1d8173f581f4af9f972009400fa405671f483f5dfadce19343d915f575de7b3bcffabdf7de7b6fe7f6de6eceb94384246aabd506b5d5d9f4d59fffd11bd634b246f50ed613070044a8d1379b02e72e4bde682d6a64afdbafd7a734fafcba056fd7c6d0441ee18932a1664c70eeb2b25a09656a8f0a35921eeebbadaf76ccb58a1ad1af75a8d1e7d5676af09d387e885c71059cad7757d4a8bdf278c55ea3a4acd5a3cce03ca1a4befa8c1e7086fd0c27ec530667dbe4a304eeb2e45493292f3fdba66ad565f5911caf080426417ef59aeba3ba060bf6b956e56a95ac515de80ec6b9cbead102bfdc55fd561a3f60bf21ed2bd86585b2a791443ee831a79ebbacbfa106ff49f0d63988040b798410007d1673590c044339ded0e5311f48fff28f2794e32c0d06dd823b4011c81cb138e3826f18fbcf9be3046f338bac517d9603ee7c86049620094156ec81835fa2084901a9ffa884cbd5e5b19c76cc219a01000023150030281810884422a160348e534dcc1d140010899c426a4c988af4344d29638c21841043600000006000330d00540c49153a0b273a13d1800fa7be05abb2a17e253033f2bdace99124a6034cde255ba8a33ccea20b4b0330355c73d59f3b091f5ebf972b28d7173e6218449d09327d4b1d1435fbae4f13877a64dca9beb065c8c85c38e717cb74e01708a079c7edacb447039afd2f500567017702d67199708ed39ec060a3763e07c67909438120ea4294203a7884bd7bad2ba736a881d93e6dc8dfa1dbc607699ab77fc5cf773fda175145cc843fd66a6acbbf652fc2822cb30734e9eeaa8a33cee0110e6f78e9bf7ed7be6f8872e289e9717c5d98b50b1b65466f5f2a6e5b85743331a800be59a30aa11a893dc4188a6a095b432dfc3d640f4a2626e3ce587fe0295eb96e41fabc816baf4f1520491f240c131b24ab71b645651b79a102bf968e4ab0dea0ac7640c38ad72c55f4e22db1af270c0dc53f7b8950f0b973ab83d7c81945ce2f7804b9cd989c1d51895df683d7af94630f52c830e24376c7ad00a33b97843692252fcdccc1ad9b8badcb8885d6e7e3f42dc4a6204525efca898a14c9c63a993e98508cb3a982609fb7b2b734fc97077c41bbe8bab1b301268b650d3a69ce1a648ba1960d0d30f2a08434cd5644c016873c15d971f5557d98f572acc8551c59cde953c03d0680656b853303a74cdcdca9887defd7601286b11589143c2675fc83ab756882c4e37814be65786807c0a8bf7199c02522a6cfb1e663ee0310081f5c32e61e68646f7ea0345f64468feb69a6393b84a0c6e68eb38727cc0074b5f1162749573f63da3daf24fcc1a617a14a319093d1b0d702a563cc2dd9b6a8673b749ea319cc5df5864a724ed27102aa19978b0961cd368ca265a7b6b203c9beafcfdbe38997a94864b6d0f5b763060d2e0a0ae90f537cf6fa1fc30d6ce1e7242c605048238687c26c0c0a4e810bbb56d9b1b13cb8d444304cbe8b4cbd77793821be1d96efc3d75f095115cc2cf4f35f4b83640e6ac9418bf689d8ed7ae65f74bf9d9306f951bc4c683c5ed7a40cf3e9f31471838ff4bcf4ec30df83f0e7f42cdb2b3941ab6c2dc057489416a0dd13382e95df5bb3aa33ce9b803c26239c4cd6ebfe25dcbc8eabeb639d83e3c4fd5f8b44b037251318850f0da4f62ced29a52b1e912a944e5f100859e9dd51ce9ccaf20dda6f4937edd44007a09c8a9f7a238665868260265d1162a4331f7cecc0c5277bb1a989e6e972a27b169f934a8d8549a2698ea5562d34a5bc9c39b7f88c14c437d908170ccf3f763d0c071bde39403c7fe5fd3f444e821012089071799716389a2ecdd6c2b03619175496a480b296ce2842e9ad91efdccf1b0de2272c512d801a7edda3202b41d4de10377f98f5ebd191d1973766345b6e59f338d5e56376bbde207a0cd27354d1d1b16871aa59f880efaaaef7c4652c2b9fdd0df94067d2551dd258f8d81665542703463a1e5e81213adda6de5b7845115b581e5448b0a0bc48158b39ce68cc1196fd45bd7222d5dbc83d1609e792b48ac8a19c5a0a1277cd2af76206590f1622d96f76840b9682e7063a9934467bdd24d82f10e44e05c796a8ee1b0dd18dbc372140e8f5dab8a83b6ea359a7df0413f6add7955116d7ad3037067ac691059686430bbe54dd937b86d46e746b62df6a034d37ebbadaf5fef1ee73630c95c3584c9096833a061d4259a3cd4c7f902432c7304a3c351381c86420c3ff3381e18f8ff8e09ca93d16c2c338d50a93f3b565570d0124942d9a5d4ec0f7977f1b40bce2757d783526c7746a06568a90c13958f7763109b349883543b0f220c8281282490731f465a428f0a5dd3813b3285725b0571964b32c9429685642bf1178df867f38401efeef73029bee2f8b64eac5955e2efcc9b5cfd814a75f965cb8cc3b7da524b5917a239b2266dabc715ebef3a39bb67fafb0d3aa2f28ba9369459da89c2fe130904dca6684e23f1ad410a480a38a3fd0baf3627519ffe167a3367c057a13f4a2b1335c5f6d6533afd6441a25147175e5aba58856dd8c74b12308040a1bc309c420d3fb9b85d4fead41cdaa4b59c18786835cc02b8b10bd42a7c1e8f195d070b32a188828122453e265b28d00eb9df12d796cab960061dd0ca4e41033137ba668fd0150ebc5db61460dc3d4caa5f772ffb5305c5a2792d8d803c6143203306837ebfe6d2575ed2315d12a1151b47209e180cd4bfe4f9aa0bdf99d87c216b230333362a02ef933bcc1af4b1452bc1cd498d6f311c4e600bd7749460499ad3a0eb1b5215fcd591bdf898b22104b2ca2bb177b5a69e28bf9ddabfe6e8b3fb834fc352c20e3ba388317bce149b5891c43b7b2522282eb4b399840d1e506194aaa484214f7b961a9ddb183964baf3e197bd50f3ba40f548a8b3268d4f566f4a39be6fe123a1b95bc338bf384caca5f977737edfdab6c3913bfde772035cfc43b82f5858d659596a6c736b83c1513c727d020edd8efefea885b4681ce09c0d49b834593dff460d367be7becf3e9e313d6bb1d09dab10bd65d7ac9aad66cf8fef8f07dbe8ff4e094f7d2b757f7aee729a36e03d32796b31fd09100e86553a0dcaf71101d8c8be43d2d89ba18d3a2ee66afe0b5fbd44b9ae9ccd02148a01ed17da3f93a482a071cae24312b17f561f23937c5f94a91217335277a617af2d3593e9de6ed3a294d7ab50cc9b7c9900dafa269833f4b0733ce203838b916bb43bc87bac7925e18003e1f3b273dd51e3059c858bbecbd89817e2819592375874f7b43c6668b62088b3d3ada8eab8f76b40bfc0f4d59f966170de7fae7ec2be3bb088a5726f8b646b9f923c25dadd2aa60fecb7b417b26a2918f4d6cf6e92faf8c44bee0fcef1b838a651d231c4f7166e0bb5cdb2dfbb42ded429159fd1258daa91512e0b8bcb4ef0dd9d116c0528913105fdec0d6c28c16ea111332e6bc0516f8766787fde83e7d6e501df9cfb033757918b860ec30cc2259e47cb0e320b27c45068d0818b47e9b6eeb40a483903562d402193fbad327018af72ff98e2d36731040dc328643c09214c8419b3c4bff46344d1aa06678364f143c56d1c55e99ed115d3dab22ed3a070f059821d25f2b3a5b193d10ec02e12172579f1c10e43b40e227c027d18a100cbc9ed0055238ca005c17de42c2eac63f324237f18b6c5c3a5c35cd20c4121a3f18322de6dc0c961c07cf059b01a53ca91ede85913208cb681515c5e06a0d8b97e059f1421f7d2f065298202a51a7e5455a5a9e2b535b14c4ce474610ecea104ce82912ade3106dc23fc907d6f9a8665997ccfcf9219733344c2ce0675a7e6ce275407c1b57d680a58c79597ee0c2b3fae188e44f111f6c64ab980faf03d114cb2a87d758e9c18faa2178a223d767bb34c5ed141ff0d5c4036bd10f361b8c24e58ef081a7fed056462d02b604207d068fe059a2bdb6a243606186612d47ac87b133bac922bacd0f6432e1e77c32ea7a3da0b528b306623f227dfc57e9b8f39f1e6ef05573f14f78194118e825b689d8706563a9305a1d636c07082e0cca05eba43ff2493ec3b5fff173a97b76802ff8adff614b44bfbaf951ec4d46f355be0993ea4c3ab796cf15359690580defc740163d1aa92c33d91c8b8aefff83197ebf8267713a7c040c5c7082d7550f9223b9e5e0a13604652bcca4458d4a20dbd6aa127ff91396576a18fda7964bd481a3fe23833344f218e29e69f17cff3af4fd4cbbf25f4c7a365cb8ce10191ef9cfa3db8394d92cb5fa6748f24df50cfb1f065501a2f6d7e0fe09f1ace21ab3c4adff60d439800d86f685cb03a1cefb0f833578652a4decc1b91e4e1628c95a910a0d15a8a3e5354a494c3605f497e851a1f6d792359104b95f6da9aa165ae26ed1c766265961e1247014e04c039c7f7f4625d56548801f5e02e3d16ddc1f70f709bf7c29d5c2694a0713b18b224204505ad0a511dc815237556af6e0e2f83761c918eba380d094323ecf911a3f4126e1746eb92c56146a3b872b294643696d57949f4f2a9228f8e970d7f3d69c40ea960100960d8bb170b4b69371637aa1fb1c58c9a526e610b0667b1994ab0f659e78c7aa9998c73a31b710193f978e005b10c88b38e4b10ff6019da5f6709e15a29caafa3f6c66e487a82def60509eacae9bb687313dabad0ab42b4d110258a8515643aed6ffdd0b49cafbb8a23c97c25976fc54eabf6e111ed231c7ad7ff0403ff15b5913a558c01e569f9cd12226661b8adcffbba5bfe05fabbad4b5d048868389452e043481af259a7b6c9ae60b79f89988ba32badc471c6e4e0d26c47bc3d39253d8fe86822a9cda7a229db6251fd7814580180f9baad36a7a1c1f4c60274689d30fedce2018519fb708b2f547e4d517e6fe2ed70701df4833987dbf4b04f7c0c6039c32fc9d2b9f29d463a21395dff0bbd88591e60f3ce36733608551440efe0fb85919402d36fdc0fb5a292bc5ffb68a693ce864a2a7b940117090f823a117b226c00e4d0b0c517902bbc979fbeac626bc6873461cddfeca8ea7f1cdc19ac95329b31aaebdd21025b865fa236fac4f16c1b33db2a0209a55489e795e5ea54bcc9e08277efb05f08699ebd07bee972147b1bdf94595fbe51ff926bd3cdc1b3e29f90517733238d3e4f8959632121de438a790410381d23d15c46efabc90c97b079afdcb17782d26eb457d773a9e6da730c3237e4d7ab36562b24e7b2794d183949cf157abce9456039870946934cbf46c240496c27d33c556d346b00de728ac112f91dff55fa5d731231acb2d407667a30c5a809c4bbf176903a31b3014140b1fc0748d4f45dd1cda291adf6683be40a257449bac7230ccae564ddc74684be52d6ece2a2ddc5ecc6654d0bad07c36a302258abcf5695e3323116369b2422f516777ccf4558ad3429cf28034f23da9ced41252da0e5b39cccc3bfd0dab498e9e300f8bdbb07f51c602bd7a63c74ad8274999f191429fd0fd48e48ddfcd4a92a9a3c100d1f5c7267a2459cd7a5161de01640f0d1a5582a6eab9057544dbe7a7636b838cac89dc7e52fb8b8dba123ee28ef06eb6aad5b148d75ffab501e079ea79a4049889f967194f42aacab8234f31dfc5c6b6200be7b7e10733f46b9a1468cd0b7c0731e5ea5693fcf113818e1e156da389b7c5d85a01b0b3f9be1acae6610d88eec9a6dd61eeb0863ea46298a573e81ace2b8fef83e3dc1c92c70ee1a69c0aba41cc0908c0e28831a9b78bfd76c74c414e188aeff901c99dae8ce773a9c4478bcf34277b6e17c2d367d5909f858e39b8772ff39be0e07ac5c4eca8620619d8860b45a3bede26d62915373ff7e240e6d315750a07b6bf846ccab9705050005a20b2f5ab88dc4cd9ac9d15e5e2ae1920b6c16a92f583f8a8e17f9548a06643be779327291e2f3eea8987656cf45bd71cee78ccc2b0007cba6142585ead9622379ac3b16c7d5da97272e51dbd1dc2db5bed3f0561e520319a9816e0050fa2f6b33791ca793dc1f80a7255187004064ca667e945088cba65fb3b9a7d09d285d948830518327e75965b47f592b9f4314790be4edf9b6ed3a3c313b2c459d7678ff72aa78190764fb93c18ba485dc3a7a882e86689ef154b0d59d782c2e773ab7a2ca668a51814b3b2ca82e63e5ed5f6557d75a9bf80e6d9850ba9e6e5213a30320161c08fd8626c5c5b35c309ce1f15b640fca4bab08428a4362ce11960baf00412d0d1348f02beb8189a646c032dcca01afa46a3ec19241c7f804c2de1f7136704ddc59de36c38362c95aad27825524b197c24179ef8af3484ece917f6c639df65b12ccd4534a9e99a6fd9466230ba3ff9c5068b34ecbb602e77fe83d7c4b594c25d914d3981135de0032ccfe3f436f19cc5f350e55d41d565f89ef20c37f79d52520dfbe6433850e85bd4c8b34d4c4566314d90bbf2e16cf1651242b03a10b006d44ea92b6478712acffba9fbc8d852d9ddadfefa25ff65afe3b339f6018449e8df2b291e508efbc2b03e3efe086f832612a87976349b72ed0ffaa68b50d8049150368ceef50e71a89e05e40b36d19e1a6aaa348152acab57ef9383acde0708a26b164cfaf30a165e4af6f14afa0bac39a805822c4387e75748ce3737757bfebd0d5b85a378175c095e2cb7d9788466c38b33d35fdb1cb34a7eae4a036c8885a365c814f042f223a1491490a9c94e905733c3538c28854e1e9c5c423e8734e3da77989ff9be6995b2c91242873c541ca66c0cc29c422008afe0cdc4da819ace600c907a67d6321c4724f74cf3bb7f54c91628b3ea37ca5afcc5eb1d341415e061eaf743c01676def889e70bc55a8e5c75be43a234c8256b5b9ac95ff2ed15e1fbf7ea3e9b8ce098a6417816db685d130430f805c3663136c06179833ec72d4a8787afe3327a4dd16ba8632cb35c6a5ce50e7f6bfde02583060e5587a5306f306cc9e1bce2300d15a2758d0855c01d2e7ceb25d1c8a122397e26d7ab059263552f343f8d20917a614a89664bed71adc0ef1943f36a6d462f217165899bd10764441172c7f65ca6b290c95c5b8ea05203b570e5048a40b8051f461c739d8311c20872639a8a8470d184671b447fc2a527724878d20fcff2568326cb58cdac065ed3c50a89b239c4897c800be1c6905f9cbadbe412050185514d5d3f7506b8cce6ee0eb9f7bfddcb1b8a2051e486818ab121090302d8f3d9da39b5c99a26d559d06c79e2555fa92c4aad4e6c1ef502a95ff2ad0598fde9bda44a36246709cda27bde240828b65272916b31b88eadbd042b27b9b98a961876a72420526f1d175f602a7595c3142fd7c24a5b78871603d51b88016a245e92c0b9b5e0d01000dfdc3af266fa7db5465357e3aeef3d921619fdbbc0bd6941e884780b11f9d657ed0ae08d85a081d137f72b401dc0c831fd8a30addbea64827480bbd08600cbd15beaa13826a2df1c183f92fdd5f002e9945f19427c868ddc6ccd6aaeb7e2d8020bd5ed67665265faf474aba073129ec312235ad5c3e61eaa159cb52505d6d17c22ebd4e49cc7453ed5b778a2242b98d009ff1af37a41f12ed8b7a0836c15563a0678d83011d3624be04466904f3189c1fb3665a68dee972569ae201f83e24e626fc56f1074267a347bf0163c1400da99c3653a883b8a6eccad02b2681266aacdf174a505132062066bf28306f9907b2896b4c55e5af66aa62e8255883540f3a1d40043b3d263794f97f704b3921e3d2146033acea5ab7036c9d54aa87e004122f7afc567b3ffb29049a6ba491da08fb11167cbda5027abaac739ffd306af396c8c3ede3ab5c10e18d89b16ec39358e705878ae78b2a00cfcf87cb5527fc744231d4a0391a1d7188c27882f40f24700feda139418fbe198c58682c410a20ddecaff780dfa7a07f4fa17c778ea0fde6062ac9334639c2f8f8681270af1656262d6765b75fef96a9b954a84a6d55ca2f340dd853108aa96bbeaae2faa46916e3dfaa3fe7fce65229a4461ab2c2c67d16249f0a94fa95ec6781683e3e250c85ce9bd2780784c4384e542e6b23b1d41da62561de422d0bd62530bdfc0a42f37c4a675cb1f04d5675b0f077d2f52c59571e74ccf9e83a568f60dacdb7e8d0c3292354a75f9f0ca78270d3a8af868c34408e8e5171f434817a47232636d0b720c4bafa61b8453c1b82dfb96fb82e614a02ecf2282714e880f78c51b77d08d5f6dca1fd012f66da71b8e1c94d0c256e875ad555b7b8d661daca20445e61e8e41496de6c59938d79ab2e742731afbbacdf162300122d326ba7fd87b1618c5fdd92a5e1f722248b3917cca750a4c4dc74eaed96827cba9c1bfd56cf70d528a13cca90829d9ea987246e095028dd811cf406b3a1f12aab43b1162244f4abc21f457466f84f3759bdfaca4ad73ba44d941606a4728490ccbd5cc1769f5021d2da26398a7213f312bb93970c3c1f916176a7456b09187afa0c000b7c9fcfc19d6b1fce05bd78cb5bea619d33d9bddbbc03c0919df29452bcd92fe5b36804e82667f460e255b4b17a1ec29baa0f70e7747e57353a302b1f8df381fca3f66d0db3d23ef558018de9a6a18d933c470383ce4826d2856ed4656b06a56161ad0f46a08141c9b103b43b4f5d8c89b34fd85acbfef43aae40737a91f726adb75f2867f1fd808d64a3ea5db85e7bcb31550989c320db1555cd990c53a51dc61a914ac97f811f28b6e7b3e035838ead3a5234af34e8aad7adeb669657b92876e574b77cea117b66dddd3052e1b3048c963611f5a4f017d818f616003ed44d1f2b94fa5af04b8136d5c53a33a4031c65f4e9289aada290720de2d1a99e7d4ec1437ab24c24823f25d91d76974da99334af0f8fcad8c0b8feec324683bae636e0327082acafd579d3a190ef43ac0629ad88c3fa85e8c79ca8a7c2ba18cd88725d5e3d8af0db9fd8954be0ced991013e19f9b2db15838667369ffea9423168eff5727e81b16aac9409273ec45946c5c3c90f54afeb46b08099d47070ac907d3eba9be412ee4f3793f7955077a64f2491efe061bc87dac96072be70d5a858650227aa38fc973c36f62185a866b5d582e6f3c5ee7a0ee8312f605d96eda0f1a430b9303b3f85dfce619c536103942ba48719ce9141bb1bad9e336fe9988aead07f90f01801a30955fe3320dda8c744b3a2b3be5413102555f9b8a7098860cd7009802373597fe5f0abdca224b122228655359f6b260142a005325313f79f91e80d0dc1aceadb84f69ecbdf7ffe6e0dc539361018c81605fcf595553f78a692b720142174375356f92ae215d32b79671c375b77b1c08e3b8ffe1c6c9fdd01db1aeff9f4630ea9bef9913142c2d479656c3a0c56fba0d1dddfc9d256c7fddceb44841d01368ff21f15d9085ac2da25760c8d4614abac8aff9cb2b6741fe24b347ee5e757e5e827ea95da51e16561f3abdb203b3df9ec90429adec95bc5bb450c833c764e282cb800f1f67ea8de7864cd216ea8ab9d41f630f811f2308022fe18f8150829a9f0d508dfb418c07ea69910319c2241dbd725d04a462d19c8b595691b327a572d52b68fce5555d9a45021cb942ada4cb591339bd59dbad071d7d8d54740c2ab2213757e3f232e589467a9757879a814056bdd680a346bdf5532f72370c15afec9d04eaf9950ecd15baafaf5ee5f0fcc1d36d2aaa1e176e4fcd06b6586049d1d74a911a7f52071ddf92e1b922f16229ccf5574740e36e066298d62afa360806eb70a2c9bf8dc3f28d5c1f6cb7faf9e6c671d3b80dced9ff388b9b05b3a0c11416d4d406b16cc4dfe776c22072b19cd644483d501645e76209bac58fb3196d413cc06c5b509410d08cbaf4331f9bdace7a20f652a9965c307a2ccf177342aa03b45318a68bf9384a5cf41c971a57d32b5596574814d8f4918698c04e7a4d97aad46aa9b24ba4e25fbcc6f76860104ae3f8782ac02eb158d883a691645d8b1df69b4b5a99d42c4a906f4f50331ab305e1268fccc0d11027f739f8632b7be2ad9fa71acf61826cd4f3663cc1ab2fb1c11bdda865d104d6bd8493be180a7f0ee40aab90472e0815d0465395593e5882ec275224be95271f8a7896707dc7b0e48f2a6c8860f2ea3ed1dc03b65b1e0a3c12091fc4627dd93b83cd47b947e7ff131e9badf77f2ed969caa7fb18b7f62698b68a2b5974db9fd89557025702977007cc886b399aade320b0a29ba447ffd412b4fa543bad94247646e18a125d26acab695fc75adf50a21f50ac18961743b6e849a2c01f0bb62c079e67c527ee85d4d01cf90987e7b309b40d134710d0fb30ca4fa6225770400165e2a1ff6d045a93dc57a7ba53baeb072d39b00b99d61a5d82c0dc74518a0cb3893af08e64aa38fe7cd6194f96122927db279950b9981e21590db97feea7d3d85305fe99500524462f7e4ef995c03b3bf58b41a46150b61ae50f50374103dd8d908b8411409ca465a6d18fcdc89a0731c145a9cef3435d4202b83ff274c0b2ce47ec7c3b06b00adffa0999105a5de3813eb0d6f10fcdf4b0da5b1240d76290357a78d87a13c31a4e3e7b3d2115f9a078fc3aa5b499864a0c660060b07781dbb9307b752cb2fe83084e3329e74a0d15a214c82c27365a148a4611b4482e9802388d293407c0427353c3bc2562d7a05ebef4e1f4e337b9b336202c3d960decefc6439acac9eedfcc966a4387b5752d8956b0313c919b34344a83fcf6a4b9c9a8823dc0caae3b4dfbe1632770c4280b80b62e24d3b0fb53a973d2e882de0b3b0dd3c11630464fb71c11f1e853974d776d644e66b484da635838a952997227157f1363d49fa3c8f2fbdd70c360872c43e581652b10d0eb4f3f85be36ddee4298a0bdd84a742f3891de432fb5d48f33f8ae68285b6c02c79fac5bc8bece1bdc4f0f9cccca8dfa81c8b415b495b7138369bfe1cadd573b71f17f1bbb526bedb431d4ae9e99be3d7c1b3301a856a7538a11aaa5bc6352485bfa8442172d28c6e292d07ed745cdd4da794fb5f832ee174fd9e990c5b3d42ca59831903ddb24199192c862e6bd96c1c51c9a0ddad3004ba897c4663f2f14ce08f0e1da5dc1cd920a8868315662ae4b262ba5bc8d442b4721d1a099e9d1e309ca99e22a1b63453cf699fb1e52f05f1ab560d62d150c98024980dd7ad0c52bb4160dae43ad5657dab7f2b92c3d9481796eb767254930854d119e5d928ebe73e566c234f2524364962aa8b15df8329fded0d7350beba381ee35f80f5e2a4ad7f59c09b2f3a99234d5cf90393775dc388739b6cec930d6584dacc806e04a3c434082ddbaa18707bf0d49167abb0e53c51af32eb233f9d38e741a382c06773eeda7ede876612aef05e51f0a72ca8031cb7ce4838fcea3ffcb6731cd8eea419149234197aa8e735983596853a8d8c201e82e7dbe1b148242b3ee15000cf1e830b8a586ff2adb2969d4ef067f8a6123e361074329d3b3e19f6e23ec7c9f6c6cba7357f3092d81bac98afb373261a174114be5e16904c7fd44834ea86545e315b1d54b93a662fecfb29e83b89267e0af125da3747b1cbc25c76559eb4403b4db6f0a6e65f4c5eb48422669d7956e4363048dec723fb7c0d2ddfc0c30af92d24a7d46dc880ac2c50a83b5d43d36116b4ee83d712fce839abbc44a2391439ccd40df225c1be54c4999679c093996945d9e8fc4ef5b5e5fddb3513113ebabc91ca8484df590261f5872ffa1f41228f05a72e710352f6e0c76ce86088bfeb0738c6aa9877bd7955701049a750c22ea3012ec2b5fe81ff33501b2b931472ac388acb1823873edd3919e1c34440fd806d2833f65ec9ec8a5bf47c74ac17c44039bd8a0d3ca12c43e98d7677d2423fa25c137faf11e1daddf53a006fdd6a0a11e4c7f847fcc7e863bef588eebd8500c5724682be11f5b534f6ec7da272151d5126b1ff150a260592920a7352a4e9dd0fef41825861725e2ed272536e1f2c73880f88fce3751486d0b5a0e8ff44c3710cb4a47acbef0d347910cf7f3e3ae2fa663352bba110f7f0bdd49cc9d8b64a8fe7053b788897bfd015b6b5ad1a365de2eedab4d2068670b5289db2c6348b086e957ac320a79a1ff56cd088a31a748dbcb36a6b0a298887623d86c085c18d3352d4c9dd93c8436477b9b2e639fc46ab0149edd7f34e71c226fd904d2c66a416537777bd809a80a94ec44f134fc8f6cb49b3bc79120db4315f3b36216feba4000841525319c6aa29bb7c937a8bc32bb67db3b9a545cfdca588ac65aa1f0ca74eaec408046a836f0fa550af57105bd0d36fa75541e3d86251c1006513d7140a581704a6d55f2242d121cf36bf884deca03b19f07d20ce3b6e5b6f0e08edf4a14548164410e8dc9cf9fca90a3d60b3c99ebca4a5376e2f3d086ce84724eced4f43e7d66d8cec13fb1b7cb0641916cee70672cc27112b3f47a2c4c3de588ffce5630ac70bec66c998a543010f60229993170a77b9b9f5e809505b1173c5a19bd75e415add4dbc460b2edc3b81b0855f11254bc7b83cafe2abf7b14b709d17819e518b45ec8c28c0e15a04189142177e6a3e8b438c3725c076631906bfbe6c39c45c171b85fca5a9c560b8c30f55cc15fe68f0b5d710bc3cd1cc11ff32e77689e986a229bcab41dad57447bcf36e9033c79649b600e9eebca4d4f19fdc53e28dced35f7fa00825af3b9832e6aef2ff35e5803ab524fd6626d7b09c6f4f0350c80634c5f38d5e8098697e8eb6f9f104c1b2b2681c90592067e249939fa806b9b22c92154d2de7e01747d5394794d18837c4a01b7feb49a52e7c0a6542dec8b5b8f6524b7aa74b180b608f175779c441df99fc99b40f3ddc8b52fc14c2203ef00506d4061e8ebb90c5efd10ef5cbb25ad345929723de2983260574ca7ffe5160f0ff019775fc8d7e49b446a9d072cd3c7aae90ff8cc48b12e908bbb49272c076d08f7a83ba767579c04d3c3c66e30a759f24866372670f436692f37a4fa15f1996773b8db593064ed490aee3e88db7a740b48394d7f66958685ab3ef4fc7becf45dcb5520a0c0f9b7a9397e6147812281fb62857ac5e99dfa0152b8bb364fb08885b9316f3e2258f1c89909bd770daa33f340c6467616c90d26512603b38d4f267d3602dc8a61fba135f9112843cb34a96050eaf1f79852dfc0cb0aa9c2bda22430a72769bf11233b8ab88299e2582b3d25f5cf97279ca0d169efe603226572b2f0c1cedc33746ea95c47d73330b4142aa398f33a8ad16b10972f6d958cc54a2d731c4f5f6502ae653e20893ef16d287fa9887ed48ef5a1e2a2a0e39d219d565c914d8f4d57084ba991d01e714aa74219a83f04c90b04d155afb5197cc8b821af2fb8d1778a94054825aa615337eb92d2fa4fe20dd3bdb930a8138d7f76afe4223d6269cdf97ba4d5e51071cfb1f02ac44135da7bdfe563384a2851f53a3acad68a9c4680a071a9bc18cbc5cec0c590ac2f859809830eb3982e143c05dfad8ea6c0d2d20802c5ac2d35eab84655a0c18036700d5489f618817dd92881c615f1903c60274acc3249bb138cf0c7fde31ff92519893ee491fb8455851bdf64223777ee45c681f7ad1e358aab98e07063c7da09de5f0d5e55455cc14f6e37f89f7027e680122127977a145097051f3c04964e0823866d17f22558a69c6f903427f5eaa07dfa5fac678c5966d4b8a1bd03660d969e2148864383a96ba96bd048558bc034c22c7664d262e3f1e8e9b88bdcdae8ca605114e257a4738ac147dc85726ccd6e844db142d44e607e3020648c9de97cd34166e91dba71f111e5f5ea9e69213b1b2fc72cb78bef17ae0e96c1841531d5007da76af13d644e93cbb0f2dacdc7918d4e5603d15d46fe35c7ef7ecb52d3b2c2fee5631a93fda3ca344af17418f98ce7e83d49a4dda81e56b3f0296e18a09b173538101e74b0f61ef984b44a753b06079c00645f4be1fd98579b2fbf5bea248b84bca7375e32088a40f0d222ad5bf1149f8fc63f2fa4438ead5370117fcd45e410cc8155c7d29c75a0b3947706b1638dc2f743b5a2ab0f50d34347d08eebecef12ae65367498897363f8790c3008e6941f59d8ea2376655acb79a3a515fb39536552a4eb6148c197d381c40446b0c6148723992d74d08192dd8115e338c7209e0f70e8d004ec3d6e0a45d4ac8b19c77bbd2208e807eb6cbaec1b7ff0fafe6090d4f7c2b670432d0c62a60b1cc8221352d86160fecad9f33028d0b3a4494ad645aa1d17671be7cedb7bef64f72dc41b94a4c5390d1689032ca730fb86e1e5cd33c5925126e6f05058c7dc46f37fbc09bded17d6610ec49b9b36c68e853704dcaa2f96234a8c6ad1862ef4f3a3f2234fdc9de292f12f8682299bb570274c700054aa1edbff562deecf3c8ca58bd07209ce26a8cacd531ab48907d80268dda938d3a9077c53c2ca46b2bbaa1712c4add742c7bb38c41205d8fdf35276daec6d2daae01f9b8be34b507b82e17aff68368ddb014a7a61d23275b25a8131fa04103a713840b686ed02f3b3e3452cbd83e7fa0eea605faadfee1105156c42f556e96db25af029deb706b7ce698af4a2eac62adcd335e6b050072fe81b021318cbc1bc906b220dca7102768b35abff3749f57e6b14f926c87cfeee17eff0d2a3471d0fa0cbdfac10543067141e04afef78450e15480e2886a00f14d9ab6970e6701153ba4190f7e9e28b7b432df5408905237fd4480884000ee2a5c7352adf5d51033a32b0642b55a12f860ab1337a10a7f02a5a698022d91080df24bcc1fe008130c54440309055fa050328740d4303190e089fb4efe3058edbdc5eceb1e0dd1516930c9664148d0e43f49004ffbd97634dc37d80dcd1c3d588a7b6f8cf13d99b8ce10a73030285bb2b4692ed99774ba1204b849197c45f1317631e1f1eaa6e845fbe76fd8963c18eb2c6bca03048e89607db67d19b9905a1547be16720a3ac223db80333952119c46bae84fd264388495a7c9c7c5caa0092c900140c9c420b4114be5c2b77098fe188f48de6dfbe96da04317e2888bb8ec0e6f366aa8759e7c622b9e4c7009f2a9919411b2a5744329ad414544f71ec29358ff802e1946717053501e624551d87a68059022160de9c2f971dc598c88959c37345442a77362dd6692d5c15e4038c2a30eba3a10ea48674ea50340f61c5445255ec244ffa292d33512ae5118a8556e3a231c684b7d0523280c131b9b536ebccd28577a71e03b25fa386ad8ca885d913d7761ba5b5f04d2405d59f429b15296eb69322eea8c72aaf359cb2c921730dd9345e922329f2ba1190351cabe7c0cc2ff3e9ae1b92e53016f804ae70236a5d04b111ec4882fb1cd3d0dfef8d40f912c31ffe3f97428ad5d757edce110061065cb936ea00bdbd7f9e54e329210e3ab2455038bd304467ab248f0a6b8ee1f7f9f7a8ad0fa12ac491b772b581ecae8b050f786bbef42154cf2b69a53d6777e303f5acc444e0d503f5cb8e6831f3cd8a5ab6f07e2113f11b221f59bff052b0d2cad1e5f5367c0a78ccac16a3ceca0f1ea2a63f7f58d2af0f8dcdd6ea3f78fe3cf19446b0582e1ca689f9ce89dc3aefbe21e824afab3bb6032d05fc30279a3db528d384d297bed22dbdd25afad2536aa5577aa5b454a5b6d453ea774e945232a71a4efc8aac43e76e03457ee3ae1851c535f44619c4795d0cc767370e0a0bf679102b87a9a5e5ab5a306f5f3a4d72ff7b082e34fba2b0456d9c87901808616bb610c22340dfcfb53df8ff2444c3429cd80b15c013c3245583a84078f99dcc25366a56f0f5193c70084972dd6c4ad05d28dbfdb21964a812f86c22215286beef40ba8c8bd8e13e41c287b32e2d3081b52444cc05b65d27e8fcd7edbe29324a192870759f2d8323a269b39d5aa160f4d8f60837320e0c7dcd6b4b968a851caccb1d45096802cb031445971093c00433f63659230d108594626b477650d0c4885d872a3b44cb8fc94e836fa61310e28ea072bb9520dd1a131e7231cc0ed1bfe16aa4b7312c03369bbc0d713ad3cdc2dbd8f39f66d0ddc62d9e1391bf4a6784bca98fbece6b391d244ec64f1dc8753ee4becf221a5c2921a951f095e61d485ce5c2be89e7216050f6fb97501768cf6c4099888bc8cf2ec21bca14161e0a1478c6392245dc76be215181b5c9a3b1a631e5febac0f73b8131a26bc5bc375905402d9733e987137a388631a0eb5c76f1550614d65022e4043f5e71b9a486b4ddb0b6c6444a66d0f05079437b0d308db4ca323791dda4c6f2d2193386c52a6f05f630040255a9ffcb7666ce01b9d9911092c950cf58f956041f9d01a9bc008d6189ddb5bef2f770ac284453506c02431f20cacf43975fc529f4365332db5ad014d376c9bec4065c8e743e3b1aeb4dabe9aefcae09ff5d4e1909183793c6c5ce2bab2f68c280f239505715695a4633c98eb0ea3ca973f78a46c549ac19133342fc0ce619000657059e2104407a00d215a0ae75973ab77a72de410eb781a730c66d00b3659519897059827378e4739689d70cfc1d93ff6533dc21dd54e0021c8e6bdce867d79654a681b540b72b2e35653b68a124f755d3bc3c7b5fa444a0b4a5cec1f95b566c71080cf4930e8422d12f28dc013d1178e4c7ccb9ef9157a715cdbbf054540cfaa00f16dc9745063022f4c61d48131b31db24d150951f4a81c1f06a41c4220714176c74ee997b4ee2b3c2a31a80d7dc596e55387f86540d16359eff703658444aa6af8eb4e3a1fe705ab2456a660746b66e705643ca449302d5ad8b7aef6ae6c270bbaa3a7710714ab2a4c1225c080db29e89bca27fabcd0e31d5c9fa8fe609620261365c1fd59ca5f300e774ea7e7a0b8af010257d70864e4315a1496e700a1711376847d32c9132334dd36b881ecaec1d71fbbe9c842ded6d9f8c8dcfcf5cd5f2ffaeb1ae8132eb3eaab34763d7e91aeb45dc4d328efcc2c75c298a564f962958ca1e0ddba789c1bae82b7aa41b9f8cd3f0a77764301efffa6f1724a86ddbffbe91bb94ad2dd75e80d27d990f5f056b9cdd7d589df7ae94512769d61b88282f9cfec0775fa54642fcd84497e086ca15eff48e2260216683664ed9d0415d79d8c6ebf2349384e2c7943c024e5aa54a31917f33988cff1f6cef6852c46380395c5acd5fe5f76133ab075ca1ee8e7e63b41002bb97d9cb4d1faae3e9a4c7c93ccfbdc3b236910dfb28ea343e79f77d8de33c4c25c77fc4ba61598fd858ba28ff98d3fee8f6eb54461e061781971fdff38ff55e7b40e82f8f389d28aeec945e33195e63fefe70291bd8aed4dad0f0f977344e8c56ad08aee5e4013602c2e1431036c74aa0c12222f75e44099913843e6be1b659dc9205df23e76ac4b8b9fd2b5d8db80c20336c1872fdb455e3af289fb503dc082af1596bc05e5594624e06c079515d979ad8e136dd73227c9a2c151c51b4e089d78f0b37a60a55d0685de4b152a889b1feb44c74b9e9c00d04d6b54aa687d673eab8806c8f992e905720ee2c22ff73d05a9d626bd71fd9082150d2115140ff17c56d138c935b19e493ec00836cf3d0b13e9861b3867e37939f219b53f8537aab43a544f04932ccdbb93f66ce0c66a801866dd43bc12383a352f78a8557a1cbd42486d84b1d95cd79cdeb29aaff744dd03dc47f64fa86cefa1c249845b1a42979d623e1bb35822b002a211dc692b65596b53c4b141763bbb7de1ef8add58856c921a301ad9f863ff4a3087aa96d1fe816c34190f40e7f7cbf582742c9f04e60ee65f656224f0a3f54808a1f9a906333cab3abf5d8ac4b4afa3e21da0d0fde28fe3dc337594eb82b7e853a5ff075c6b82665ceb424c02f5f3fa45c5eb447c2212cac088c8ae256563a111ad5a0450a19cb10849144f73a8f56f180a571f11e3663465860e9a5e8f6b85d03d36d94c9c1ae4504435b525c8db1ed59062fcf2e9f1f1aa63fec899ea4832e50082b4be21c7a41d6fa0ad2ac1e99f2bed82f85f8f3dfb80acb5fa35e47ddd7551a3878de1f254377884dfa424c390a3c5f242598e8a93623fdd32dacd3695d1cd188f740a9203f5d5ce8613cf2971ee8f989650ab6fd42affebebe1fe0c89419316ed9ac687a997a383e2a030a2b1f61013449fa75d99e516ab5156334b4ff6aecea44bbca81fd813ab193616ef4e9a61783a3c673f69dedee941bc420730115c60e2a3f3d8658694abb06209c56aed16f5c478bf16907049885b980dc1c924b60834eafa046da8f830bff53086aa6e5cb479e540676387052c2ed40a4770c92cacff55b732fb46294e1b9c87a9391bfc2f688115011b0cd72b359c930a087c1504e630b2424af3e51a2f3ac3c62167564ef691b56cc9af10aa7fa1ee827b339f21c8f7b93a51dcf3f7120a58d85e27038530de2af1234447d0c91c8954609e276d5a5f2aa1d318a62a89ca119ddb20b9829b38d2544eb2da69a2f4d285d7f54fc694a330344c9684039744be67add669f021c0e3eb607f8c4c61d9d95e65064c4d7ffdccb0ff8c6d5fe746795c50b5308f4a4b3ab7dd655411c49f230f7678458e82c4ea35a44ea0e5f185c22f30ee69f5ccd325653169f55a2a3c0c82a2900f58ddec80664525064a999bba49e51460f9699d6df322bf02916c23604cd18e4966585f98b6016720d3d807cf30e8057175ef24c559afd81880156172bcbf473383eb4c094d4e460f353b632d434c22dd16835a5693da56b05213181c0a84ca028b5d6424f6b394146a2663251752d21f8124a3824d05eaaff023cdb1e94f59193fe0583d059f4008fba3a5e4b7c2d6f6ad408be7d0b4cd3b7225818953e54201ce3312a480650dbbfd8f8de4dca8a26deec2233f9fa8d9cb35a9444dbde7cfda1b601548498e51f2e72cfcb1a15c1fe7eaead673896680350bc11419176bf47cd04350e6820e301e8a150f0003ef8edf60ed065e40d59299e23d376005d2c136657e3e7e3571bb4202f8a9500ea8b904200f403069e8c0ced30850b4f183f2d50f0c8e4b77791a1fc515ed5d79782684e7104e0f2b7927f0db5fae3321bf85241d4bc0aea8b1008d10eb492e21851bbab5f3a98f8d0309b6e41f0487e94dbc99c8932de39746c40dcd0d475c540e63f398143cada120db4641d69208ce2483b2bd190b4827d101415df0ef77b966bf283f93d1e033dc94b86e93a41fb5b5ce426222070e2e086c00608d30eb80515080ca21a621be5bd3822023a297d4e941f82f375d92c59190830a67322b3594017b8bfb27cea545a43806786d86adb0f09588f70106042114d5d37c94e87233c0ce062e4d9d0b3a2f29a7032afecaf2027f47c20bbcfbecaa11f6687b5366d55a23b82ee9751a1ae388022eec8e72b15b801d8bb070d3b7e037f40d368d654383a8899cb5cb88ce3e156887965761be866d0a2506b99a29d45bb388e9e9c268074621f484f4c09e216e544e6d11d5b5a9bcdb7d25990c1340b221eca6f86161f283aa04cf12d1d1c29a4a41786bba89febae10e7a7ade4c291c6819d720f0203de081388c39aca66921bd0add2a684df0d927f804c8b1e87996b3c658f66a072c8a8eb6fdfaffd503b4b5aecba979bcf514e768eb7a085e5a48f2856ad8cd3c5c8ee52866a204a794f760997282baeb2fd16a405ff728b088f0bb7796c353fe91c0c0f7ade4574fc720d36350a625059d3c7e96580e0d89af652b02973c8fdd2b400a9d0bf5f3df97fa4b9f4a231eeb9d4457ec226034463d0cddcecd182db7e54300618786f9bc3ab708777141bf0d74ef59790b19994766d1232f69aa44e4747af697d44f003bc2a49cb04c05ddd5282641402f386b8526bfa576c1409663a36eb385be8e2134e6a33da86c0282c46759ae390d8458751b416ed31610853645eb64a151eb0f021baf439081862fc1cf134824b2f416c8ffd9cee16e438dd2f0f7ef2ab25459b53666cba968684c8368e1676ffc2706a31720fab541e5a3f4443e6e10e43cf4f7c974693420bc45a3038fdea85525739b1e682b8c12e62830540a2d8a90619dd38241f6c5f72e088857e344949b9561049c68ecd77cba4ca08f14d49bdcccfaa265c72314d89c259db09901a21d94d49116c4236788c5a371b348098e6c396a91ad8c77a69f4803ed8e1a531bec935ac4d9bec401cbe60b6c7a0f2530f7237a638f5a6c8869b51f7c296bbe7948484c88206cf2f1c37f0270b6314664c7063d64685979ce01e88fa59b476b6a54f2c36dd86d7368e037e2404deafe498bb433f80161111848f35cd9f6da45f91252cb694d1db8a41a0303b2bda1927b116bd95db2ce2a31f519cddcf9fc8065694838e58d294c422c05a0e8db4b9cc59d57351300cd5aaa4c20577d41d0426c6567a36f9d1e1cfed028197250dee0bd41b6de6c4eab346a0f30448803774394ffefd2d0384c9ad46c26f83604d27c60c3648e2b31d0ac8c4890b821ecd52b627b3ffb92e0a67028e0b83b5511f501eded6d3a5e613bf9b70e072c913b6c1a21b735ea1f0fed075b48d74fd02a1977cbd4f0f08fdc042b8210c13759429eef28120a2da949801e0a5646ac1031ff95a9ea06a1420cdb6882ad323c678bec083e506be7d38e7aa9e016966b6cc3eb20b22254e052635b5f00106d607370abbdb0651b0e4e72b943f1ea1dac043725da7917f0fd962058100318f1d2f74090e7c15925db6c8a4431a6cd9a17620197ab5560e452999f670e6e3afa22c74ba3105e6275916dd4f01c07c3f72799d65c1a6b8da80f3099ea452f4ed5f62e242dbbde2263c135e165bb8c0a0251eb723f0a02b05e0c173826cbfa8f0d5548fa9b212e34a86b34dd2720b6b9db8c9e29b9855c246e7e287528653b7fafb4c0e8b245daa10ae6ece89800fe0184d19f57a7833f1ac3086556494971668bed35319846020c6db30a250351e733939cb8753aaa94e250a0cfd61e336b2de818282a4c172f213263afb98a244438d970c3d8b8758f5a3e9b8f08906930f3c309bf1fb26b16e9a7b141b00eb63ab81ce7877095c6189e6eea9ba89c5121213c6ecebae391a8305112368de4fbc2e8374122728b315e415309a07eadb15bd9e6f4e99b5f0e70f92adcb2c6ee43ed8179d3bc5b40ae3679dda83baa063e5a16487ac59400177691a93c4171a50f027d55e4f9cbd5cfec8b32bf06edb149e9df3c479c527e5bc2e9bd669da13c6d104aa99f9859b078710bc9952c59f0760e1260fe2f05dfb1c22402278cea489bf30287c1616929c2e1a59d8daf2ac203001a67abbfa4858a32172eaf1d909aa27ffc70820bc4d091a2e3c12f63a412c9696866f640ee234607768c7757a9a49ec6f1815613b65206826b62cde3445d8495f0ccd2ea58bd7d75a00398f00a65d53d30845b556ac8368f52bbd0cc8385b894d2445b1a3b29ef0fa6df8bef334b48215c23ba3694717a6ec49c2d8ddf6b1473ff439805313272bf8fa6c0afd3535609a2025d6ae0e0408b357afea071bafde175ce41192004387d0a583b37cfa71e02999b077190ba1f84774d02f3fb4fce408fea49c0655adcc2af7bc885e40b770262711fe5b0018b47c7221098a96a03e722a5087cf2490cd477a0916f6f98283d6c1f204f29a02952c0d8597215b05511ebf49480af3ed248d4e95d871bb7025ef93504f5f7e56825001ef6ce26c6fd13c038d18e19c009351a3251550d86a852b5d703f628624dbc907129b93cc278511012d56828cf2327289b587d655d4ecd3c7251950e2cf20f9da37e6e0ef4af35be32e8df8717ca5dce50a1ddde12e70f57125006e7a273b91a4871836e00ef8d2023109d66c7cee5fd2c463ed592af221ed0fc95902d226d0b3fe0fd22b08495f935b6938e828dfa0c45c8e23a7271bcb789fa20818b3cc7cd8063852807440b71bfcb0130bf4009d800237a4adceff86614ee6ac9a61e6cbd6196d2d518bdfe0d4ce2dd6e2a17ed77b4ca48ecc56eeb1b87209ccf47880f2432e6c5ff23ced750de585eb81807be02a5c87ab70dd2376ad7c7d5766da29d8474dce03e8c438c3f22da541fb615eb76bb1215c4ac3ec057789998a1145fb2ecdcf08aa2f1eadf9d2996a376ef46890f7221ab29fec9993d60434acb903d0564aa574ec9f7f3000f662f558c4683626879458c63e50e805aa7b9612895bcf9dc40b7983b5a5dbeb6d537fd6d85f501c809d24cb1f6ae4ddf8d08937ba57be32c3f537f10d53ce5b9fda49dc7e848bf70979cc8b974939226e0461da5368cd4d3bbfe5b7a9097036eba5427cf9d661e1a8117132d99a14aa50bccbb01b6e272598bb5880c0263ecd92db2c694b67b05e38f96a2c40232b712985f71f981fcfe6c24c422831398723a89f2696b11cbc1b0966d503cfbb56f48e805e0010247e976093f74da6f0216a69304aa8b572188e13e75c3ded29618889955b14f7cee088b32f25883afa406aebaa95f89893d19003ad67e29b751279b07eb842f3076492a5cac8c782af98e3e5bc1095e63b7aaa2dc632a3dfd88d6906470247d770073d66f0edb457e5820e1ac9b5f337f5f2c34d7af399f3efd44df6cf1519bdb5e9643c2f3c8b3501018599e90ab5915eb1d40351d485c3b714fe8ac2120a0207719797df4dc9e5d7d6b43cebfecadf9763e511d30095d7d0ffc98baae826bfb31dcb4fa05b79de310cc2d63048c5c8a8e79c9f5a68312e8605fe650b9a41b8ea8e63580c47a071c20f32b185cd0824833f1b5bf80000cc8b550c829819632e8a7b02aa056c91158e8a352d30a457e49891ec462936fa28ab8eb96015dc80bcedea1ed098dddda808aeb26610a789be2751dacd736921862d16d115b9dbc0f8b5a2e41bdb4cd5e6a81995149a64c32cb420d952009b454e85192feca8a87b5ff14e1b690081372d95aa26c8405c335d566fd1678d6ffdd2f49c344546148ea350a8852b2398c29957b4b818bbb876d45ca5c736e081b2a183bd9d0ecf9b484a90d89971c6df3419dd8514511b617f03ef9984d7ebe2338ae3192ab6d04dce5fe366b1d5359421b525f794841198b2a008717b882c3763a8267d605db988d33dbb83e3292fa0ace280809e682f04582b892e0d1c4cea8b03c80169846f774803d8481161227f9c4c6fc33154f01b701463d17f169b1dbb6d27864c216b11bab24bc649296a4073ec8b64a10850a555a70ccda1852533dc0359f8eef587e1c934c5671b81244c09b252147899287453a5e22b160ca41c55f700e48121dcb472677450d42cf1b1c4d84a3d0ceb460962994d762e9b153527670c3927f1dbdce26d10981b8cb49a53967f605c175475ba7ad81a2b3df13b4cb08f8780b6f6c5035038dce5e5fcf42efa6937b9a63f40351f6b65dd28eba80b0417aec3ce1d80eb8333fb0d6677fd379d83835c3e2e9bbdb1ec567049244656d7567fb54d7bc04f3c56d5bc2a6a8744d3a14c0482e980f154539a7a7a4fbb96805888ad26ffc505315cdd76b4bcb1d8048f49b508569a4a0c77cbea297351e35e64fd68ee0decb1ff6326083238e73159d87f03002902c8148e26f1f882d6eddac427a95a479a24b4e4fef815e622d11a44d934ead033127511c8cf91bcfedb2b16c815f572a8124042eedd34484c58457e4977d2124c0dede4a8dd46f910e91aa35d14991d31f7ae049e732e523e4f118f6bafdad728f0813285257ce0f7626b0485dae2e6ff17286052bdb82edb0609c9c0135e11daf76664ae1d2a4c776022c82c50de1d1f043d883577581cdc1b2eeb613a3754c63352c458ee6011d1a629642b49c96adb45f8540d633688f45f606251c8501b2b3fe2ece9168966b27dfeb332fc5bd1128fc65b74985b81ff5e79c522dc268ad134a484d655c27270ee34568db681d5222083b78ff12274f1181f9c5d4a17d479c0151f43aed0d095d6bdcd78a1e92595efe514b19c8018a47f0f11f1d254d2588e52a74226c19fae980816253ef201349a547aafebc36c9e478977b297777ad5abe067f6176438d5e91b39487ba97cdb915c8c5920df8a33db6c499962c5852cd73e5000d87b1515c8529b8aaa1856a25a48b62ffc856a5700f127ec3a05775233d97f2184424ce8d9574b461b3744f4f613993bf22875b49623d03cc0ccde964b1710ddadc08726046b6d7ee6a04ebe21032e3e8a2cbe322343c200844829b1d7f528d172efdcf1191cc95a27b5cfc71a06ac10c64b580d55881a24b02ce47a79ec7a41b1e964a199a227bed7d6c6f214db9a3f99c72ee5f4c4db48081dae10b63b575b2c192acb6a2074ba01996414626f0d8a08589052e2f75860fdaa6af4a945264daa22439813998ee51e80c4ddc564d0ecb79c4eeb5230a0e51a435e572deef9e2d34c3653b9bb98e9817f47a32f588b3eebb0bbc1954a7f4451790d2b1ed83d14ca6f2820173b60113044381d3648f091677881b499feb8f9b54a1983c0789df761b22107b08b9b9706da9c07910f788666011ec8364cf52bf3a235734261637c33025457bed6f00e8bf0c25693ad3c7b620e7e314cb13a51c5c5967a124e0d9ed6daf22f49b19ab9b9d11624c30b1098f17e4dd1785c1a3e4049d26ed7953020578763b6c76439ab4be9c155b8ed93b31214294bcaed198031a132c607c2dcd51f0e63cc72d34d73b3adf22d9a15551bf19e2c6e09134c08b2ad9efce312e13045422b2614e649bb5fa4a3f5e594a9f50eb26d782d0618f82529bee45d0db24b4ec59647ff8557a35515ff095f32a3754af30a37fd7d28f769b570fa89bfac2b09ef8638925ecba9daf16148159f0968956a7c728f6ca50119af018b0c2daf143fa99a7678f8fe32139589df9d0111e43211e4f4a11edf467d094894f746b69c29e315325c8d2da1ceace8dad059e650ab5c118964f3f7baa27853311eee0aec8a58a4af7ae80fda9efc9d32b75bf84c7748e84177aa251d75d456b3ad553b5136c29c965bbf0232c839648aca324d97969219031cec082c225884c94d327a8f599223ef1abe0e7d03d3bcfb82b7eff71331eedffd6b7366c7fa30dafd69528d8041cba28b00071d4eb564209941d098c99478d124c3a687f91da0285e86b16edff771b02bae6c433635f584a675b367bbb2dd1a51869a7ed8141372ff8f39d8e8928ce8aebd5381e481740831509272f0619ed2f0cdd0dbb5d69e1aebbf03554a60ac6f13bfeec0bca962ccf52bb15b027ec4a1d078839c7b0cd00e4293f40d756ed86ec408e2d5088fe3cb9aa02284e8c787a45f61f383e750cf61a8f87e8dc7ea05013a4144cf41ffe6503048e629e4a56a9113325a9925a16ca4ab63c3870aba0f1a2f0cc09be4103c930ea120b017bddfd17055d9ca6d76aa06d8836553949fcdcf31d67e6c4045ebb8272c08f30ba4e2af953b453891e8c1a9f3a4eb15285fc382aedbf1c0f1589662cc21dea6fc16a8072cbc91817a6ad0691ab642ec49d5c7120591346516b0ce5e70e00a7d69fdb1de1f58b355c2022b0e9f3e1658c851c95d31311037d1d05ab486b7016cf21fe952f000b5daaea4c4620272972a955e1d733f2079a84160812b7a2cee0ec20aa5f11c8220a401ae4f51288cbce2f876649f71bcbf259fa746f820939c9b97a164225e9d1bc53c2fbf7bee6102534ce3a84d35ddd371e0ce6ae281015a7eb9c756594c49f1f47894ebaad8cc45cf7d1c49a22e1f5f83cd164123c5d65224ba29d85cc6438a5085c58d8492547ab098eb985e88138bae5a4030d3518dfa22a5ddb329b606b7dfe63af4525f46a3ff791dee5ea3529dc38be3d73271d3e5e8e7e599d2c5912b387afe8da4b1e1bf7354b3dc3b091c319b80dca44c015d35736f79c27d47b502b4a898fa8d3095cbd97b59279d0782f538be97234485adffd5c4f031c97af374e3088b0557b247db822a32e6c00fc50c98b9a425c8aab660bc686a96189fb63d7f4324cf8669c64b40b99b2a652b9fd3199f4a59fcc230907f7e241919f3c418e1ca04da8c23f55e14ec88baf269e742493a1de768685a46efc85eb8523c7c0e68fdc6cfae9aadecdefdc76cdb70cb15ff21e9e48843ffb5d34adc4389d3b47698b134a9733dacd8da6ac7177b5011c9b4da19ea72f2376d050c14da84453712c33a7607233b4e138dd432cd98d688d96606b14630a1e92de21a4e8b5ef5d4d298fc75f96b26affc6f6e115b372f81db7774194b9d227861d7cceee2a9770bb9134fd04cc4e27449c4826c73eb34a14b3d69678592eafb52f3550a38c4a93748fee8bff2c36d4c0359f65db3479d20ddc825cceb30873139417f1a7f8b153ea657f4404f9c24b4d73d0cebcc547aab804d06ea6d1cef79c6a8fa3dc2874ec2c44a2d71aa84646c0c8d20d5c8dd1ddc564e093d644664f4a7571e10dc216e9058a9c219db026786260b3fdce37bac2599445c1674d6987b1a150ae2caf51d8018e7c836a8286a893a2ae35fab4c1e04d0488e33072cac379f0e6159ea0006c512d8632db8365478d7270bb2a8a603a2ccf70dc69392dbbfc501ab040711cefececc5eef1f7a2677660412a08809d85ff73ff7ba505764f4975d9f53fd42a3a71f97c415bd11d01ae11d8e3189e5540da9a533334c64f0c13c248134738388b7b7a7c377950280953f07630ddb24e286e413fcf3b503aeb5d2f88fb9df3183ecb4863a963ca5e769e248f544ab1245196376972f1d8af17f36e59c45942c348cd85bd9dcbfe0b237665b9be8b9b356a9f400978ca79ac8f0cf30b3784e135ba786caaba6b2a01d60ff9a8a92c7aa5bbb4c4c01489655a560ee8f8be6cc0b74286d91f12f76ce45e32e21e30fb281d026d09afee3c3c9de52f45889fdd7570859fe809ab41a12137d6d713e1d9afa7986429c2bbb572b3b389ba72807d25316ec7dcea485ce9a269fa7ac6f812a5331f9b5ec7a7f3283464c6c0cdc2f06c6064948a23a476b447be2888929c3bf4cb1ad298a41d4ae2448b3684cb856087e3001e35b059a977a7cd9a8910d5a5101236bf3fddec3d40696ecbec427f85d2bd30ac8e9c4cd8c3a1130ae9f5b3eb46e331a8fa4255cf7494c6b34ecad78d8b322f32027fbe066b8f48889a5d01b2665af52aeb7abeb20ec4c0562b0260ce501dee7aa4693a91d1f84b6d3286f3ac3610c89fbac746b9e65adf59298d39e3e6092c46752592d55aa70ad67095fb9dc1943c5d8f6b575fa0853cc728a5e654040ba4295864ffdfde88afe26b0abb0f5d5c49bdbf076816af1ee768172658578911a6f6d4234361dbf6b89e66292ac6f807bfd215d97ce039ed12631933b222b0f0c911f1935cea6e719f19e836e3b177af5c7dfa6cfcdf2228915bfc8b5d779602c3f76cfd0894e6738993e36bc02a7232680c65d42243d4fca45dbc15e2da737423da3de039f955dc4d6166af6350aacb5c5a78579e640cecadf404a886b6c7a970ec783c3263a77de2da3b8af89c079efc51543ef54db570c2c65f30e537a83eadcd75180797d4937d7a8b9af8b4009f3f531e3771697581774432508008f1a0a001962e5a158597e6b9ed5b34b184e9d9212b477e67546ba51f968f94fa1ff3a6a6b69efe1aef7721352703c5f0de5f6f4947c70654c6e4a6681f698bf917315d2022cd69814e47ccd0d696969cef0ae306b5e062579e5c5ae7e9a013455f2b4eb0769fb3608d4b738a362e7acac808d7b8e1aa3c5795a8f7f8cde21b9dde1ec439403b39d75c9091d19fb3c80859ac738d0763a645b26466b8bab2e223fbade16c9172b808a8682491505059873026c880260fd0dd21f982b1f8243ac6680b423a9e2aead8e0754e0aef1a2426a264feb9e4f6fd8a6127eba1c84f7ec1716233a9ec46ad13c6fa58615fccc620b3dd1bfdf5a094638e8b9f4afab21871e3d0c211d917860a50c08bba634f54d529dd34618e175bbcca84dc10f3acfebdc6a32a1f1af13b31bdeea38936a8e88e364a41b843d9bdf1aa566b071ad035939200a85669cedf0792a3a29ae734ef959ffc68bb480c8bf7c0d930e411fe0164efc80ffbba9c85c95245d597d02e39cc8c9133b0f6da673416db986214c8487836c7a306b6991f4ab1a5ceec1c384404672d2439c04843fece151b05e8d19d023810bef2798b23bf13eb77de57461845e247c5a6ed70729bc31a2af40f1950985785080513d08a7db501ba8580081884bace7f40642451ac2e239655d58939cd05fdac683c30565cdc00e9a3b666d0750ba7c5928de0c9c46d11669413b7aa7d2076f664cc6293cd6e79c6631644a9c536d7b219f4e0315c2c4b766ac8d163d8c8c91506b292bc785779b792207150ba5bcdb284c51d1297556e9e91a334ddc80e9d41589baa358bc3a13d0e1d5c5c3099414a44be855a02a8873078ed5292f5342f17024d2f38868c9dbd43b1fad443eae04616cdb3c25ca00cdc11dc5665fd23f65b03b720fd8b90dccdb5edec62c2b5f8d06eca266e0c363c46c3f35b7da62df51cd96be1a07aae84443a28887c7f061159921dedfd0f6820d0e3303f5e33012e88d7fb3cfda316d46996aa52176f6d28f7f2b0888598a666587d26bb2936c1345d7def8d249538ba7f2d960b0c74fd9057b4b5f93bf94daa0ae8dbfd3330814b0fdaa40c2516c97779e051dbc93d80b4ce97960cbe6729f33a5554f92987d8c0851b8d5704b103a1b488007c942fc0eb2403d8e85eef3743c86e985921f1633ad4e86ce2ae57890c2898e2e4b6fc838eba7fecf447effdd95cdafbb03c3572e24a1ce99123431a25553ec0338ccbc81e86adf683ef08933b67c9c329a07cf499ddee7ffdf353f1117e38fa23db0b2fc8a31f7bd8ad8a486fc4094b980d1cd97ea2066400bfd2a02f7c0b4d8be8a10efaf432ab6b0909a5ea72ec3fba2dda89a87de03d627c0f7c98bd4a25f43968ea10f4306716af77b25a25ddc85800c233f56e172ba0fa5282038078a7da2ee0c10b11e33b2844caa9cc56541ace3a6c8d331833ab47b0a66ddfc9c75e26e9ce5824e20560673c29df8701eb4882f3b90d30e5ae68e5516a6dcd960f5ebb968c3a5f7b0163a1cffdd08f0eedb77a06220c2fa8b5e3fa4f20a612bd0881c1957a9cf5607a78dad1c045af1d63476d35a47b22b7659d22c1b569b72984f3e520ecac333e59eaadcc15a81f94cc65a9a1ae7d021a8e4609f93d8df226937dea46f9c731f2214ce2d225bce7f8a8d60aa26b031fbef4d2516578c318efe7a06c5f190d3c5dc0800c6b2f55651bd1ecb564b46f734a8750e455bca872d35ecc8a2928cb6ce85f56cb9c7ede55b4caffd8de9e4352e5a906f1409022572739f76430e32900db95a8861eecff1d6b9eccde0cd52510e600981bcc888eec26befdae55b90a66a7227621d5b50257b91143c762c906aeb1a90160513c9f2fff44a4db4965e2b7788f76229fd108366902dfa11aa11ec983760581ac6aeec83f8fd3a0f868fe2fc5906ed426ab71b4d22f1352222a91222ba856336a926d1ccddbca8cac28817ed01597a10b25e1dba18d5ab0cb3d096d0843915826ce0f8b898449bfada603e747d2d54c0be19f291271a92900d8770de1d799f2c9f8df91b88e6b30afbd4b316e48dff897416a11d17a288596c697625035653578207107515d5302687ba0425939087a5b30bbe12d8ccc671a8d494e70e2588e64a2fcaf275dc3a7c151956714298ec58a5fe747e3466aa98c89f8f2dc7f61831bdccc47f475eb9105d20bd65827e1574d8953d90baed3088b8f74c098ab79323f8fd8d42ba59317e1633c1d4e5d23021dd62464607af22d5411df1429d17e10224ca94818692dfce03801ad41c49425f876f0c085136c6a02b864a0e1772fa16d12d515788329cfb198135eaaf62a15113f72bb3f4f5cb529cabbc66b02a0129ed3760a58efbe88f193e08ef51e908f6e0f0e514f41b0788a3fd59c83f09cf13b21b5312c96d0c4080ca8fad84053dbe240a1e69b91d77c0c8b150b8488b0dc98516e90949aa302a5f81fc976ad5fbf6e12e823b0c015b8f962a56f89a0956f5794711ed615af24f8274a6f9468285160cccef0d9abba274415b1fc6cf77a9c2cc60479c30909357470203e182ab2346da6bcbfafb3aa332b5f8ba6e3bc9cd21a6072da2ff9b2c178ce0a385279d35b71702abbc1eb2bd90846354f24f9a4b85ff93d422979412ffaf0b8abbe085a4eb77bb9a338c5d5b099b1960d0a872de0bda71d90f9d2f14bbab45480d871754e7987906523e964d6bc4b9e812a6752bea7023cc7c3e3429f146a52a512c20db8dea138e004fa362d28b24025b5c62cb348aab4d28153377287e1faf7d1ab80ad55589656d304eadc9bea5465c23439c4aa5189f9310f69c679e4abcf9209ae6315f03289b7a62076ab1aff196976c16998837661607ad2dfaa403076369f85befcfb25849f91f74dbb285af29182bb40911f6e0e666c0528b46cf9d3bedd8f38ec2d124226f4cb19a78db1dfc483c0edf13f3e57a3d647c376b37bd77ad128d502c64fe37343befdb8f6668255cf750badf409984cd82448bcbbe5c0a49c196626228860b8e1687b1c70deca2ec4a2126190f637ff164afc75b51692916cf0843c64b4f2aeb7984706016f784b95a99b800f670210083e206d72d3c703ff46b5c7bdf43a508c39bd874147653de0162356f4c7d7da306bbf4f0a11d8fa65593e8f23bcc3852466370c3129f89c9d434889693b23694068372a417bd83b2ba2dbcb75ed5864e0a73812d9fcd6c61e7ab3071982cb2dfa2d1138b6aef766d1c40d38b23aa7185d94b85721d469bd05ef5b51a0829e3f7d78047ba41531cf77008dba00653e70fd1d0eacbb4b59f4d4b5ba9195479c5ef8c594fe65398cf915fcc777e950ddfcd5cf80e1e2773a3aa76f78122197607395eeb7c5f3465a46dbe751d9a72adaed6422eb9e5fe2bf6cee0df2a6e89eb4d029163701e029e59048ea2bd6a2288dcdc75020440260fb86712349a598789650acc4fd07fc1c6a5fc1ca9e9e3862d7d26a281f70e8146e298532e1922fb7554e6822eaf2c688d241650fb14068ef054fa0ec1a2da6497e34aef81b66d9002e7bfc9422ad34eae1fb01a5239a6f93ce9ab614c04af1d0c511819530551d3ef70709fa57b676b4c3eea3cd39044a284fbc8482f1447ced1c2d1e03c0400245da016f712a8cb7a46f60c89fca1d961c69f6b992c865208ae769d2d2d60ecf3273dd3020520586fdd0c103b14d6eeb994d09445e417abbe236085e851655ea2cf4fa322d273b3bf251440febf46c0343bb9dc086e122a30c802ac50f5b0e9f633fe025a9e1a31f95b1f23a0b28115875112a3a728677a1247f7b941a2abb453436230121be6119da16670f66fc9c08b63e384bdc982ff4a838424d4f3d4aa67b5aee7e0c430144d31fc960559f28d019c18a2fd4f994881068cadadb7e92ba99f76557755e4e81d2033590c4345ff0056034199505032c518d499bcfc7f6e32602a3054027e465db3495bf0e936424651c347c307eb7db342113ce9bcee0bfabd49d1c929730bf959e390f03486c277b3b84254bf8178519c5cc455d57e6cfcc3e42f3a139e12d046cf84d24d7f65636d142987ed993c59134a4b8acc59e59cb9833b3382e02e1df373a1b2bb3124fbfd11de13e544485b33b0e5b0aa2faffa4deeaae9f3476d5be821a42a1e8a9c0e0cbdc45acad8e4a7235d137eee74b1368b68c74664a52cb3e3b09b0b50e395371221495e709c6d935ed0843b130b287f4dd5b85aa0417720d30a520cd1c9c47d0d99bf66b14d8efc4d21bb4a205dcae6c4365d8bf4184e24f40ad5087696cf7a321361cc66ca7a92f176772ebde5dca6a19b56b6e1624d9fff36f0d7ab464f338fb6152c7d8f056904426d19ef652718781043d999c62755fc4b44c174b7694f56d688f1c27ed395147d576a8aef0ed08f8cb60295276f6708caa3466f9303c7734aedd02c1a045d31ae0217599d667b0c46659727c3bc32e6785c360cbc3ea2e59f199692751f709d758eceb6c03d7f132ca4dbdba98a1639e7abeac9c0ea70ee5a2bbcb4ddce6ef5dbf1ff52aeb3f23fd1516a5ad7fe49c642a4df3ffd72bc117dcff4b04d0ee8bb269fc18dba23507c910229e8e0891fb11a902f97a57c04e4914e8d16faa56587c794b01cd297bbf8084de85a32eeaeb04d2540261aaf648549ae575f33fb2eddd98627254b2c26ac6521dee6155320b4ce388c1a5d1bd7d96dac94a3eae26a3227317c3e3fee2528ccf0c0c187cd80008de561492bf5397888d9ab636fc11876357ad47c81c0b0bfeab6bea13ae81325eeba9165ac50ee79b6ac1d483082ca2bc7bcef98e5a54addd74224c96e865804a24ea14020955b5de71d103ee9b41fe0b911c93fa3933e4c6f6d27d91babbc8564425daa2a09cc75a4e8efc57513fdcf90f936e21c7e9bb9e5e3b17298eacefc1526b03dc1d70cb00cb118c33e16cca13882d8c40f92f65001ae4b2981476b1b7844289d17ef04936bed4860be40bf5cb403bf580bcb03a77f371fa0f78f4790583b886a2c11572b4aa23b74c7a873b781da714cdbca7ac06eb54403bb0a228b1f8d4ed768923e5e454d32d6de65d2520b9c6790ef0b17ec87f9181976f6d9cd8df5c4d713062357b08ebcc7f8fb553595da063bed5ba145705dfa2975feb2864c42e03259dfb4999956180cd2137e40a7174946c51378845fc52893cde264a5c35c0376da7d6047a3745ca77c842e087a67077c1cacb8b0e70698ce23e715d9abcb04c11dd798049df4e3f7a13d7bf41694bb4cd5da5fef0b2cc3979c8f5d3c09cfae6bc852d4873622a4f07727ff3db3412060708a14a73ccdf82b7b4f89ec0ddeec7d3efa754b24a73f179f274e4741bb2c5220f5c9d007900ba5ed106eb6396f66825e62ecaacd092aa7ca929e861e6e4bc2de9bb78d7306e82f09c9602c3692616bdb32db0c4123b6715c748d57a30798d3008043d8e432ef4f9fcf7f4f7648ea092eea3c1631dd7c39a68042b5c36dbd291d4f849979c63b6ca4fe937d4440bd5ff55f6d3a267219e96ad899954dbc5357c494e554ec8ac5b2e6afe631dc9dd12e9f5bb039004d11ec0995cf5b5a045c758478b403489ca18a5db054f62a9189b24798cb1aa3322206224a6d0f78850ac0c162e58060ffeb158c5ba3cac094284dc1897dad9427b85fe7425548922235814e15130498d7b1230f8cffee7b29fa208f5f3452e0e7802eb8f4923b17033069918f344c8a39cbbd6871ee23b8cf5a3732dc49c9c63910bac91004a4725d8da3d403c00bfc0555bbad92757c8cb879ae88ca2b11a0ae9ac8b1ffdcebe5ca3a41dfe23fb412c642ace154d8a68192f98f1272c6bd40a19e36343bfa2c9c58612e139eaaafb959aee3b972363e6381b088aa931b3506dca09ce33cc10e00ec5cc981e74a5648916d0bf559f6e72e066c9db647f30f2f32eb8c9d22c2ae1d9603d5b8a37298abd2e84bd3e13a4386877764b67672bcc6ee7b89fe875be2aa2ea3a1ad7d10b2cc397e0d60d5c5b199e635dd789e9443447fd136aea006de59e3fc85e65ac03a4c5efb44d730a7820c367d3804e2ade25b8728f593c4edc33b63d729de3c70ee4af6bdb85b178822f783ad401e2cebf643cf6cd92b987e410b0d221b7029ad62d68ab9e011d0aced4efdc6d17df9f0fa517e0560ad710bedc0d9d78ec2665c1ac063862f43a0734ceda8ebbac2d8f8710c9f8acb31842fb873c0b3d498ceabe8ab5f62044543ce697c8e5b091c17522f2298c0244ef7b0b9f4040c8389e1297113fb9cab4f1c09efe2fc3a902ede03b5d0c21c0ff70a25f1412b5d5af6d07a033373c427065d2379fdde03e16578896f57d896d130e83588a8e7693fa54e07bc943e367f0e483f7d02fa8d19855ea76596832b815384a6cedc914f14405ffda175009e646d6c171b88710825a18494b0ccb0ab21268bbd44d642ac2040d6421a378fbd801b0844dffd0ddacb30508124b4b319733c9cef1426ebdcf8727c3aee4f14b9e64f7da84cc8ccd41f22bb246c16603a09dc6dc1b913b6c1741bc45a6aa59a0877e17c3d2bbb3bb960f1b15457824cadcf4d7904c7eceb5fedd2276e52c9b61517760937e3667436593d64ae82fbf9eaeb88dd31c6cbc3218f74d715f527f696a110a1994a131f3b3096a6c617052c85a108145b0e470c30b507f163a24e71b7faf8801d4cf5a77e3fe53ac9830e6658e622b110244ff7392ed2a04ae853d29d04ec48db22447e40d078280c54ccb8da59ce276b753ce23fe45b6e28b969198f8ac1549fb5764a26c36645433322c4f7b58a3b224c1123042e463e44bde3d577ae9ed33f849b81f7ce207d075e33f9293ecdc224792a76e7680f021b47bf60b84d3ee364106a976fe3670e77bdb8cbb6862592ec25e2ed5a0ca7314ff0a99830887c72a3ff36e517620e62052d8f83f8b7e8902207bb2ef6a426d2d08c320e60357ad475ba0e6db667cd2b641c3470866901f469ef6f41a1fd7004551ed3086fb18d604c61bd816146d6cadcb81cba67f4897c52a535bb7b168e1dec5a381d648766493538e83fc42984e161e6fa5a1f9ca09dd48541efeec5f4892ed33993d2dadf8f5080a020348ef39c942661c2c2c9ebe0bcf5c25801e2a4bb8c0657eeb0a2905d5b0c7df3767ebb98a115f204f9b7c4fca3b52a50b4a42c71bd1715b4548f8efba692333a9b9def6a94222b032838db6b5114a147dbbbf2cd010c0c3114d5bda6e8b894c60f30fa81a4779fd38088599aea7161dc2617100e1963c25cfb2351539ab40a381b94c72b99dd51cabbfe323c38a716ec01b650fd933cde34e143984e3a9ed40a54039d89e199412a2b715492734ffeaebec487a4a6c73683023f85f81ef9d6201454cbce3da353bbadb93882a95231e6500cce4843c627150c7e4787ae312e142d055f4fc083932567a88348277cf1660dd6c8162b5491fb69fd2a2727085d63c556e82025343800169e5ac5a229e16ea1a16f01ba36ac9674ce27370fb339bdad4a5df963bf995c8573a33d2300bdcf9a55f47c04c3e66c494404051271cef47b770b041f996b927ada7bf49d18741d3d534ca71cad19f15514e39c05305b0f7389c1e2a7e8aff679d641ad0a638c4f9900bc70912d8c8af39029f95695787747d0524f00eaede1fc7f4d826eb7b8b1d309290f635948e23eb35fe5ced1a34be56ff665b7f0858d7317f505db239a57e7b96aa1119827e1f7854532102a4f44d072460dbda5a8170d9b7147f7f44a6989fee4458588cb555164a799b519e101569130ac978b5ac0d2450e4ba1a064ff21ca3b6fe2d8166afc61a9c98cbcc218afb41e457bc4173843b317e9bb3a9f7b452eddea48ca6a6e4169148cf4a8470b31048e18e035fa32e9779718d6a4b740d0b735475e5dc4fbf51303c94203090b6d8fb85544d6cec3423c00188cf506d93ec39a6b806934a4fc5f39a100b8d80754f4ef6031651bf7db45e8ecfde0d302d13ce54cfa35d721b79dfa22683bef6b789d9083343e65041686220b188476ad9db5a41d4a0549c1f2200c566d5f4089de1222f909c21f7dab1765b613912d3bcc540e9f1411ca9270bc1b6bf1c66c264e4709efb1db9f32a3111644997902a81bb9003a16d6a214413c0b0fd2e6a9705f09b6bacbc5d1f55111abcc617c111ca7e1a86fd3c540f1d81c653aa09c5a50c827f5d60af2376bfcbc7e452fd38befb4e6f7d084f8fc5989730fd63a4783d7d7e6d2b777ae3f927f4a9630fcc89c92b25abc97f9afb98b5b25da62e60e2fdaa017cd1ddef652038a68ec1ebd158ab38a948936b2bdf0e87a54789e081b2971c30284883d61220e635bdce97a06d22552d9107b46f6ade8b01730dbfa5e93b3348781a52a172009970b1d580b4155b3bb5d6056b09cdb5233e1bb5fd422407c1efce94d5098af9636d303897734f8627b903c7660aaab03f3e04130c408b5c1e105dfc19b02abf0649d7499fc678048535df39e7e9bcf0f0deee6943d5bab7a95df67505b15278b7d7b08b787e6b57bb459334f833b992af1bed99dd761f6f8a0c455497389ce3720bf330cef55e3a3ad1631045388756064f5ade629449b4e52ed4c4f983c7bc0e9be388a6466fbbc42698a23e3e37e2c47700a77a05b3e2bfc55666b405078ad2a5bb468f3e25a58cb98f049cdaccb49b6b0714b72d60a767b4d1eb00efa2211a10d6516a41468dcb3cceb316d4b0773a89ae9582990a1997b68b89ae266ddedea064bbac890ae418d7e89ba8de28ac3b3243699141cfd6faddbc8018ef969d7d7a4f7145393858eb6f05c20d119d626babc6edbdfd387b2dd82d30008c66b2f906f3d40fc406746d78726ac8d3ded5f67ffebd0c56265bec886c710449113f7c84401f45af35b345df03e44ae752448925ad6d21a5cb924145f72526e830155b25181fab72716d039d33fb0d16ec2e588be19fd831b1d4acdd0bf15130cdf13d06dffd84c60ea05606a6c22d511579a7c0f3461fa6b44b1987fe314004530cf4a71f9139ef9af0dee47dec098c0932389d0429524725d0087aeec9f44c0110fc6bd65beffd479f31bca19794b9d3609b8f6151332ace24d48c76a2c64b1dfc70458d9e2671eef9a2b9f7de2912480bb0ab67f531390d6b735d63541ac4d600c1b639f5981f99648a07324957d6b8deaa777c85039bc63edf777c0064c21532b09218d02044b5664f194e79cf7b5118397ec8d3cfdd0edc615d0521f3ed81d3ba78c9fbea60c01a847d8b8a1c51a8b4de9ecfaf2c32611fdfa40443a625b937647fbb0b67c1539301f75d96f1e0259273b8436b0d93b0a5034eff859f0c89021958886d71bdd8a94f385f6b25ef8763795f8e8dedd7e1038b01ed30b2a196e2a67b5f1a7443301b2b4feaf462e05c2d591c26d4e12d407e8603d2d3378f8c1091e572c7a07c413cf9ce83008b374e6933ea124696af193d01c20f455073659473bd714be0aacdf72624475abc332f05fb5d1c68431859f8beb1ba80fb8b70918dd30ee31c6a08116c726d03140f2bc8c76a23cd7ef6c99998dbeb6f91ece2bc866bd67bb2903d01b19d340093af3cdadb555d4cd047907a1dde8cfecc993a41e54a604791a9ece9f0abc86410853a5feb534e48fa8c5b738eb1770d616cd180d8a89731ec756bc677e9bf9920f028c65048a3e7f9d55309c19a5038d42b07ebd893d0eb989da7a3c0e8e5b9b65f5e2aafbd53557add57863f76745220287433de50ee54120a42d551b1b81a7a6416a3a631a5767b6b249dc927e1828d21eea2f09d952ee2da59449a62403d209bd099009395cd55a8535e6d1ff3d775a03cdd1983bfd4b634ec694ca9f51e6e66f666efe666e669881bed031f793a88e6b9854ba6f901b16e377072ef50d63e7bc871fa3df66c5e8de65a4afe3d8fd7e3e1be405f19d9df6f72de850719d3421d29c2c61881732f2aefb2a66631fd4f6240652ae7c2de54b20cdc90e08ee03aa7f8e7b093fca9eb3b299bcb27ef9d4adfaa9cb25f3377965b19d5e4bd19a15a54b7feef232e274a15bc91283f419cb6d81d172354762e9af570673e3457509e6bd175fc280f14a7400060c177fd4b2032bec80e6541b4e61b6132572fb9e2dcbf685f685ebef7e8de03bacf64808746e38505f890ed41701dfd4eb083f5bd1372ab745966dd44a5b6de9320591ff5e5e46342937e77ac980bb397eb18ea8dd16934b4e4040cefb28a5bc728cbca07be3b62768a1e4095a24b92fb73d61680d773a29a5acdcaaacf2e5956384b4a4745666e45d7fb739fecef19317104846cf423d8cabc2b868746ee0bbf5832f120ea83ff2d125854948f5d453578e11d49b84cca74faf9c76dbcd53974b766d3594c16cdea50adf144f3e1cdac34a2ac91ca72c87db504ae9a6831f5f364649429c5a9b69444ed665a76de68b3065d7e448596ba9f4ef9c33bb3b4784e6ba8736c7fdf76cda6db536e32cf496264cbadb481b69291886615894d3e9743a4dc1b5b929c8b71626b53525ed59075b7badfd6b0f14715d5e592c3da4ac8cadc1ab96bc435075985c77ee397f7ee7ad61ae1169506e6bcd27e8c7bd732d6da636c6a4172cb9d94b6d4f5ee073b392bcada5f1e0db78942e9ffa03b39db8ddeab27bd7c8fd7360a7132bb92da507dacc6f6b7ea2b12435475b69ac0c351b65d1a351e351b921cf62babcd35176376dd7505754befe6cc97fd624df335f7e9d53942d391967f2abb619f7d5656933ee6900d524b3a73d5b40aa29a79c1fe3bfdb2ee517fe8c0e6334825ebe72e4c7675f75e7b4f127e54cc7e7f295512d54be40a8210eeab1b861aff5347e9ce62e7ab77044576b8cadcbc89d7fa96527f7d9cc05dd97f19df90e71f59267e1543d979fe586d95852857f4648004305984203e8764bffdce6e7cffa4a90c605a4175258391d8be793d94ef1f4c3af08fd5f4aa57e2763e4614d5d2fb424a5db7d47890919a94b54a8efdba57edaa6d9f08d5bc3f42bd77d0b14d5bd6305b44041952869b94177777777fbb0268d2f6a0b0e6a56b1531bbaae35e79c7322fe3f5de79c23d15c48c3ded87b5774221a7b486e0b0e6a267f387a697c51a73bbfce39d79a73ae39e79c7d2a53de92c6dcd58283da3e93b7bd0e94e8a076b7f52d4f48c9fdaeabbc688b92162538fcccd6f307f388248c34d6baddddd90be75c0bcf0a9a0ca68352f91b8581952730a83206239729d0cd2814dcfeb476e5be76650b17cc76ca62cfa4703e833ecdc9c99f00420492c62c20adcd34f4693c6c62de1f46d1372c6d32fc31d69b0c3fbc01ac0155f5ecfcc0777eed9a797114517dce0a45a582f927b222b36e4dbaaaa2e50cfa50f1a2d64998ca9a2fe9ac2c4b2abd88fea56b88788a59c417fabca7945c874de46bf2ae38873cfef1d4649a381b991774e3b30764e3b3f743802a6fca1bf226f3de866d4de686757e596050160e8c1b638ccfe1670d7b51954567a4a8787d34c23d1808ce20288d755b38d4bf9c9edfade041752419a6a252c158be6e8566c4d678182b6ecb7b905b01fa945c4a2ea5cfe475993163869766bc8cca48a5ed5541df4393790fe5bed65c5cbe8625c2c7d9dc787f2fc77da726f35ec6dfb07524638cb57ec07f2f57f4352c91c6441f6dc992aa48f446b807d57488de45cdca8dcc42451cd178c867279793dc38aa30cf49da15be2288851a83e244cd180a436121482b1b2fe3fc8f601f23e11350098c022e7199b372fd1d887bb82aacc3df8126bd9cf459bb72873c8a0b59bf02887b7094a6c3dfa300b5f3a0d7849dbf68f9d4977f4d188ebef253a388c367cec225300aa8a431afc26f12419f36e32e3ef5f9aced4ae0782c16e164724c41a81f3d55ff08f638e20d1c3137783620832346e63ac237d8b35f6e808dc73e8a07351efcfe982dc2c9542fed116da6fa8aa3dc3aba18caad2ebea231219d3b7a69e18ca265a1e9a35b959195366b53f82dd76b6461a2b5fc95bd88b42b42a4131ba4e0c6afae5cb71860e3273708f3955b950bf31911f9d43f95c9fbdf160e0c7fa6d373ebd798af44d5c754fc2391e855f0c4934bbdfcea1a513054ccdb88794d9e930704438d281b39e4f03e5c0e96e5697890bf09429fcf68a4b8fe240f8ac112639b425181c20731060b0c0b7d582c7c222626e6275472e33a12f3376c582562de067c02fa409f98b771c3b69b18cb13f33a37d0073e0195c4986b0336a65c1b5f5d990e5b8a5a22be4844c52b239211915fd91cd1c79f229b53bdbbb36f150688ae8c872e579b2971475726ba722acae6544e869297db76b7a819f4813e5d9345144cff8c2fa56efc0cfad069e3b52a37626262fe46ccdff8986f3737de878bb13c1bb871a355b1615becb12d001610a12142438486080d119a31f8778bacebdbd39e17ec3cea8dc7e8dbb35501a18d75eb263a49d78cdebf368c99bf4be044db907a04ad07371d9cbd54ee8e9da45bf4e95527952952e87ff69203c9d556637d609ea7a8d67692d7e3030d9f97771aff2f0d43511445fda3eff33398aab5d66638f2c35cd433989b354f562beaa579b276a246f4fe74527b3d5b40e2283e3572e9ed14736027e994d297545e3fe04f2afb2eea88a26c76b2150efc92a5700f4ae6fdb98beb5e9bcc7baab26e65a36d52b2125952c9bef8686a5f70eab3f0a7852371587e4eeb77cad9667cd3cf67693cccd3400287faf83e7a54c3b61efcd374f8572f348e46d5bfccbff1d1de78fe79c356cf37aa1b962ff5fc367e367da13ef220c5d686bde7817bf0936c341bca7aa34d36ec351dcfc6573f6d58ea2b1b546583869dd60f78b225a734ecfbcad26f16936c6d0ce6a56560aaca524d07cc53963606f36c659b8181e1a135fa8dc6d1e86168c0d080a1a32b87f925ed618ef8675239290be4847f7ae0fb92e3c5e7333fd57a3012d6e18fe3e2af9ebfddeacaaa2740657bb02d30d8d14363ded4cf20628e7036ec83847b3093978bc695f59d38ec111d5e868709f76027588733b9fe4f92f4dc29a2220b877a9135fa97ae69133419ff6c46e62e3fa9ad93ecc1525847a93445cd48a469bde86b7cb496e8a3a5fe64af3641b3b1f18ea5700f1e584a8de79f35acf55c836d0dcbf7b21cd41814ca7e8cf7e7817bf8908036e33f2395d2dd7fa4c860984c3bbf6a0a4b11d9eeb12e9e62b19436e3df6850abf7879151af0c79657c6b3222057d74cdfb1297a2d47612db4d744f641e7f76c2c5e59db8feae79da8cbf0b0deafb49db95c8f13a5874028144686e8c4fe38fe8f039a0c066b3308be3652ccf0670e4b047746e642e114821bf6f705c47f846071a23c6682464e6c49f1fc31a323fbeb47c65152a708aca4a95c53d0b15e2ba2b8350dc2d7b6a98bfa3ce614170e5955715d5a05c917cb9524a29e5a961d4d320b04bb92b2921a4d5b00743f3ab918d884220f7caf1298a52d4df69d56b599665b5911559ef9a11edc713547d6326d050349206d2c0c4f7d17fab39e79c738799250f71f923cce5a0a11e722421224da84681526ee264fa5bd0e52652cabf916f32d0bb79d739c61e1ac2c9f8109dc4c9bc1bfad3be1ba6d3be9b663500ded0ab7b9cb2f026e8768fb3a980da9c94a58f0314d5df53967ec5007833df47f714d7c4c934ab01ef665eeedde00045758637cd0a0281aeb3ee2776dc8296e48555784a1251d92286385dca667ee96c249b4a44cb7435440e6afcac0d1151c41055c2e0633db4197661fb91eb5706b740e334158dd33847e9325655479a6b51efa493cec7925525e553547c37721034c290a3ee5912d7812a5fe732ecd09390ee6f35a56c32d4535b4469746512f207e926f819a2947ad1925b7d25c45770e82bf5e58f93e96f595d69c70e1a1a0cfb7790e58f6bf0a75ef2c761e4791f8ee225b7c66845d4534bac27d4572ed01372a52b3b96545d7dd67e4a3b9c50f684289f1b9f873090ab648c57ba860d6a5ff941ca212ac89fd3b46bd72c7fae73ceed70dd7d806ed81df8e28b2f82ae33c246d05cc71f846caaabded16c6998b0e33d29811846a82f0bf73c0cd1649c732f8136e33e86112abb1d3f831379a166a4eb5efc4893327441c9f567c48eeb570ebf14aabca89f940af225a554faad5c6523655b6b237db924ccaa317c6773e69cdfb78b98b33bb21123e8ed2b33e2d96c4ee2d23772e995cd6feaa9778da0d7af9c8bb24fa19e73deb77b654b5c6677789fffbf7fd5acaaae81cfd73dc78cfe68312342df93cadf86f0650af2f8a24e51a620efe137856e04bd39fe8ed4f0a7ba43775470bf50c62b25087eaebcedec431ec1eda7320d643a97ba3297051e415bc395175f6933fd596324487812cee6b13c1eee7f6ec655faabeb2ebe224a43e51e725ac8e025bf6d74d64f5b8a165f4f6a75d57aa566f03ba79f1ff4d144e8f5cb24a4efe4a602f53b993aeb9da5140a95af3b94b27aa6524ea6d762eabd6be853d46c5855496a5eadcd5491b223a1711fa18414424835c1bd7a2a6bf5ae7a1f8ea58e44cf9f61d76f7c51d5d453de3695a27ae695959ce39fd59f2e7dcbda4c880bdf396aa9e6c351b231182f5919e2605e9c4959245248d9527674f02242af73236860e0faa7c334a166347fdfd55c104ea699508108c2d934ca0971fbe2eab41929dd34f7b9e8a27bb670e2f3f7eb97c95fe77a7536bcd364fa794a304da855a7cdd090528788301b00aa7bf594a549502f83dc1973f1421863e956b2c950466e7ca6977a8c8ab7ba29b301a0f6f39d23296b49f213693633f260db8c77aa0cf195293b559ae78a13212a8298004571e5efecb84233a5c996fc302ed3b9ae88bbce7dbf11cdc9cde16f264357bac76cc7ad683c2be2fa1157f4d5142adf48e390c6d138f54c397714a49c3b0a3ae74177ca4aca92a32f5f56b670647f7565251965f52c04e6563f2dcb3722fb9a0cf5d6a5bccd5037ed5deaf9bd03373e0b80fa66e13077d531064372d2da903989cb47f8ca1cad4253127629ac73cef9b56dac9f962db54cffe4c7242e6a7ceaa5e90f3e45d0751233a95ea1f2a5beb577b77a6933ff55b6e464faa7fc918d0703790f54f8ceaf9984f8d3b8264cdfb97c9d63027c6ab95596e647843152d2cd684e9a6b418e839e399a33eb6ed30ff0923fd75fe7360d7c6ebbed0671efee4818897ffd33f083f543a66392efbe356692d7bb22f1ca22f1d2c64c42b0eb5f2f776688f13f7bcf3568dfbb973cc4bfc8e8bea7cf5a6d86db0cbb8ccc692839e1894fd0d0932204cd00c985578cac3c918194fb1efe9c4ef955ff7e5691ef73f812bafc4a4a894491d1cd80dff746fcb636d3865068a15ff764064ddcf79ef595b1ec9acff8665575c5cf9eebb686f4bf16bf5943a0f422236f43dee5d2e9500c5b30fbf4d1b249488eb71cf7edce660169adb99c224bb82ba73d91d36d2fc4af9c2bc714e4db6d97743765b6cece7daf9304e78f848ffb5ea7cdb49c77998218e0fa1be0ba1cfe002ebafd4854d1ed17c1743fcb5fdcb6d9121eb8bd73b97173a2f63edabff01c931003dc7e242effe24ea7ed892219669be0fb93946c1903e52a181898aade225ce5ca223c74e537eec1149d34b3e0133d1fd11fde57efdc02222d6bc8fb03dc6609797f802baf2207b8f267a58eab762eba40df0cc08f0e5e42dee5583899c2e7c2f7f09f9b2e933fc0a7b28cbfb8f28b4b5dd610f8a31b2fe711eb44e62288410c6250831ad4b08635ac214a942864200319ac58b13286318ca10b5de8421ad290062fbcf0e2ca952b5ff8c217b8c0052e50a142850d6c60831429529cbd9d10c000063094a10c65e0820b2ed08006349ce10c67308319ccd045175db8c10d6e101212da628b2db2c8228b274e5c511241c909ec865ac46ce7feeccf5968dd1598ccade3dcdf83501a71069a73baeb7aadb5d65a7bcd9b5f1194037b2751d18408b305e69ccdb2fef3920de1f315fde03b2f5951dd02e2577bdc22f88387ebf0fdc2cc2f237d7fc89b1989d7f5e56ec588af5ccac9343395d1675c05fb8ccbe0c349b887799a3015fcc30cc450f88acb423af833b6ccd39c0c0eb611b10c136414ea152e97b0b8fc3713757133ded1e1b37625c7cc676d0a0c96ead2f2249acb3c5c26c0e59fcfda122e7f466d68629eaf8cb2a1b9807032576bcc0796811f24dbd085a431549632d4187c1d96953819f898e532b419f83b2c993196ef846152e7672d088820a8981b96a734067fc616e164e0e7b0473819f83ae0b0bce364e0db807f9af3e79c33878b856ad898155c175f173314e66bad8fc6e0bfeda1cdc087b1386d0696ec0c7e1a6f7d0e3f73a0615933de47e74084de19df2e8d198cbd581e1a836fc2c112a031087f86a5690c7ec9c592be85f4d6cb9021c3926490483248a77769b1a4d3cb84616b7deb637c8c18b6c6a83546b5482c7c65d4c76f7564b94a9b812fe2b7a86559fc434563f019da19bfb2ee29e93d55f0f01589b5c80bd0663417e6902f9479b4ccbacc03063b35b2f561d011e932f6f2925957d66a69a5b4d28b44db0c65adc781bee845226b894456a39e83340f683a58c9abb2312ba84c519629668aaf760e9d08bded5a87e2ce8167a4cbd59f361ed567f466f4337a7bf4199d0fe347d62fa517c6573f6158f8158c0a069c968585a5d66a59d18fe8ad6cbd56aba1dff0ab9fd6c39ff3527b6145a98b3ff2bff7e1a4751e801740e9e23a12b330ccc17c8f5d8e7b87ff5cb7b77352385d92c8470f3e28c046ba17db82f1c5e8ee6ed9221adbb183e58d2f428fefeed01d12212292a3082272b8773b4463ce05914388d9b643b64d07d7b8dc3b0d63fef617bfcd70ff8e92733dc4cd41c343ab4271e1decb9fb04486b0020e786e7b72032b57c76d4f6eb084db3b2e54bcbbde6924249f9a3513bd739b7758a8f168b7fa381be9045fe1438f9362236ffa8db8245dd34a2f8d87b3694d9c8d88e7a5676767a7cacf4d8b7876763ca0c5ce4dabf233658849098b121625273c6984af4319c038a96e88649d50cbb8174da9991bba52a638d1351911fafe451982020c802e3f45b915298a294be47499fb8ac65c8c31e2589f13df6a28d4511ab3deaf8ce636d1d318138db9ef1c5390fefbb0f8337edb162635be8b36e63f4d1a7397f3bca18e3ef3244edc09101425d1a67a9296711f637ce4255d04eec197adf7eed3499ca76b7cc791740df49eb699f1312e07d49863024a63418df98e23699968331a288d39e780aceff0382fb450859c4d6b07247a07e3ca9ed931d1353dae09f7d95f2a2bb97c566550a5cb5bc65f06952ea4daf252f2cbedec8c562f324a3926687c923da273d3f294e8e137f78797ff405d50f0fc4dcb7384a2e55a428a121395f4d18805fcfd8282f43e1cc94a11a531d7426ea816ed2baefb212971362dcec6e5dd77936ea0eb766ebb6ddb95614b4da6dfc5b658d99a8cfe4f521f638c31c617bf0ea196483ec4d22c4de86fa71a17c810b6065b83adb5e61a17ae7ce7708af8cece0aae91f87c9d2544c68d57a6812bfd1d74813063089f9b9e8ced1ca41ce52ee51c172efc29db3977e8dcdbc3276343e80edd9d8317a596d0d22ecebddbddbbdbbb752c5f375c777812651ab87ec91d9c16dd6b6fdd3a929b0a90d95b76672ec2e7d85b8e46dcdc37e7eddc6377e7dcb92b7be7cdbd350088320df0a30267f09d09fa83b07a5345c9e80e9db9b573e271f3ae24f7a4fdd3fbe8c1076748691085a822fc28218ca68ae2961242099fbf100e08c2a9d4f6f14552a8fdfc343cec7036f3dd9d3608eb80da58b847efc088312675ebc2a4b6772d6aff108d47755b2c77ae0837449b71cf32a8d50da2b176d1c10bd13535f5facf5c77172c07e6efe1192a79512169114346e9a5c4850b1a5cccd052a2d59f8a2c1c9756baf899b47e9884c0971595dbda0cc995ac1fd44334dcd6662819d61028a9a3938ab20840ab2db69cf5ac28d3c1817f466f6bd567eeb4f77eb6a676af9b4d948cd09d6be79c15e2ae7a919c93d1fbf9de7bcd4919a1f36b8e9985705b43dcf36deffc6cfdc0cd8dbf5947b2fb42fc769aa4ae7192baf8a0b6ce840d6487dbfdad75dc7b5b938bcef9f3efd79a77bb1be3d3b670627b4228e8fdcf12e2fcd9fac187b8f7ef76cd4f982e3ba8eef299145da2d8e142f85e0efcf703bc48f5ea3c66262527d342708422ccef4b2f25e6644ae1004a4e0757a7a8f367a46c01890f7fda23ef97a86ee693f835a0590e980fa388f3a565eb47e3e2475bc28f1dfcba32202e650d811f7fda0c884bfdaca867ef239bde8d32464751b56bf8e55b168e7439a92828fdcac271d9416db7dd74eb1a9732665646587d46b5a932b97c53cb182394b6b965ead7994ebe93dfd68f1d82541202a1b994fc8a0dd3258a2ae193f8c1ab7260fa60ba800ffef013d0ee7cf817c000cc8557ce7c7ff983fa1e88f9285b40aa973f6d463d91ea4eaa0b20bc008a025a174078c113eeac865497aa2c574108bf5a38703e654d13567c847ad6e4a66792a608ab22476efc2a727c189b5643dc8dcfefac201510f0a28d04b307bc2192c47c7522471ccc766a0330f5c3803efdf6f0f94ea89379f4760b6d363fab4cb3a24cd221840ddf1942bf2a89023a555e402f1b58efede9bb8195009deb74c89a152358729b4933b9fed4de40470b2867084118807c7aa0df5602ac09b41e6807e1c22b07fe05e0850198ebef5f0477a475627b158b69f69e4dafa2cc4f295f5a754d55555f75ee7b5ab1456d063f9b6f82d59b64f528a515531a1f4217296a4ef59e133ff387cdca9c3db24475e32c21ef5adf56035e10c40c285d00e10550ba0042921be71245addebd0b0f6af53f664e056d90ea5a5711fe625e2f33f8f1aa0fcb30f95f2a090c35a3d57256d28c3ae4f60caf56e590cbd6250795875412109aebae19a536d3252234d7ce39f78af00f2721013a3932f794c4ec5c776692fca66882dc458e5cd78e0ab9aa4bc1f47f58bcf6eeac21d0ad6fd6249b9ffc684d9429f69b60bfc99b8b1cb9cc45b8af36e35c94d4fef69327377b73a2ec01f75d3fa4b2c4423ef77442ed2b5f5e12091f370310099d9d5be400971fd6c0050a17282abf6c5c5c24de6a5ebba6bdfb3054ea3d8e919dbb35e47145ea2b84ba403c945f7116df67098bca91b4c3126ee4e2c60b0e795725790c66f5b3fada35f0abf94ed1398bb83bdfa557a663fd7ce72c675dd9916b65fe99e8e7436b6a5333b97b93c841c9d74121f1fd9f2524febcb2d1ff6833a29f76fea34fcaa665b399cda79eb27eccefa716be0f57c9cb2424be7fb419fb45a216bf2e26b7bb6bce5b73adb5e69cf366f9ea48eef6a28ae90e0af8b3bbe080233a0e057c6741a0eeecec4c476fc00490632d6e3f77130052ef42e37bc91ad7a2b62736a0723398ea06f0beafd3818fb08e73cd85161b54be995f11307c7c51f937ab0e7a774b27b955a18101175c306168889930b485c691e6d06f5724ba14c8e9fa7fc692c26989804a18a8a42346e8e833065c963f0ae2729b81f3a96d57449d6e11bed464ae2a234e575e39f16a97fb4545fcdef054acb017487e9a2c51d2bcb04245ca63343ba494f20a77182f79e3108a8ad249af3c935631f293cf48a457d94ce756ef3d767797d2a573e9ee524a97b28a4ff19554b382d31b9fdd75a98477a7de1b0ff9fcde06da0c840c23f306da0c6c4dcc090354b35276e4be779982c4877ff5b08388209ccc10f48fe89a471949e248d7381202643a964d8291787cd4e5a3072347761acb4aad2465ada51286d1d0f414fd7cf9731e69997e913dc2c9b42342baf03209f1fbdeefbb4c414c41f8e6c02bc7c300557e204950c1c587993ff583bce295a3317e3935d6a5c6b0a8fc59a9474a21be93484ea37b9deb3cbe3b8414461a29db2ea460a460a4628c14053f52705eea7a52e9a5aa2a4749237ee1a9e11610d2f776650e85e85c573fdd74af7aded8a397c6972edff38a7a4e1b6b5e5023d24bd748095fc90a5506b19e9faf8cbef53ad6c7f8d31a51ba391ddf390b88733fb23dce72973be545e25de242ef1e91431113acc3557d02d6e1fecd24ba47e44422f61779f58354ea3b8a4fc508ad1f164ebb6c59dff8562eb2ec378635c62f73be7cea2c9c49d903547ea7b346946e8e3fd618b785d3185bfe4c8acf9a4e5de37e608d9d1a6377c92a2a3755454a0725744e324b098649732ba54fa4ac6ca9a524c9ae71695391485b9074407f4e1e3d5b2cfa29aa23292fa49c925565514ec9aafa4b45f58a442291a8ce1f4dea997aab9a152525ade6f50215ad2c9c9125add6987ccac2714fd911530b48b4f5a745a3ad0fff5484ca9ffd8cd6658b663d49a3954c29654743956f830216905cfaf2275bb741e10a6cb8f263bcf4c21a3bfda4f1a1a4a218309e7a183160886893d41ad169a97647fd201cd99f9d9be9a0c12107931486ac7e13f095d89560b362cc24a52a192dcbba4c41e2cfd9dac2813f2f9721d4f6b0ce08c4c509219ca3aaaa5f2d4ac159895ebee8e5cb690a52c9acdd580dd576fd961a7b0f2b890a69c60cd18b444fea1ad1b76f229726b5d1a7bea2576b48f0b9190c5715843f4d12362967f5f31b55c126a58c5d5d918a4f548336b9f1e0ebf285eab2c3d02e15a073168e6b971e54beec02047637a859bdedb7baf4a036d273ee0eba735c51323a08213bb7f148309b7a41565d70dc3668b4584d867bf4ce6d20f067e75c75f7d7f15b3bf76c1107e57b2ff2f38d96101997af39e793b72d1c6f33fc93276df79c73fc2eb273ee359d2be8d77f7a47c3838f1e3c36bf946bad511649bb92aabb73b766c8e7db2c21336e031285ad1fed36def6c406502e76db931afc5ce8def23d477d73544b29d902d2da70bbab49fdd49922dabe85f9e8b3709cfa8cd4a305a4b9810b4eb294cc279153efc355b2614e5db2ab6f9025ed6f8e529725d690ca7f422ab2faf22ad5d12973485d537d504003b27e342e74e81996a054a81693650701764ceb47e36284869119442dbaa74b5c4a894b3d89c5fad19749c8fb7e25ae35e47ddbf7379357c62409a5932d5d4248498a29a628661bde814b5d99fc97f3dafb7209426dcf9371b841108682101484265cb2a8343bbaa654e5ba7f7159d093d3992edbb1a39d609145c5dc9d8992fb330511bb6451b1527b09f8a69f00a1caa54046845eda585fad05b53d7f56ca68d708d1dedefd3f70db29ab38649429372c9af0e4074dbc559a8019859999999999fb5fe3a1c6dab7d65a6b8db935e6d6985b6b2f7998f3a5676326b225b97cf949154aeefb77057157ab82c73147611e51f9db9325508630f46408421ca8fc2625535811821f799b152178528324568ce0044f7caa5811022a7cdc6d568c40064fa0409283212b46d0e36a73bf4483ce39e7313e661bb3824a6384b0227192abc444e56c8793db0f84db71652fcc2460a2f14872bfa75b3f2859fd8c31c6cb043f27be3ff46faf73d9663633721db4d311a1775a1faeb146291bb3824a718089416d37a3ed1d3333bbe5d8a9638fd08231420a2d4b972ead186963ec2533541f79a1c45dea7feefafa17561ba6734946bd84951b9f2ff92dbf5f7eebdc066d66e442ca96e0d5db2cc755402245f5ecee47aa682d80ef7dee5ee75636fb3bc4e569ab6ff994d5b96c8dbc2b2f6f01ebe828f7bd0fe7b4595e1ac26ca78ceae99a18ad0b93caa5d63f9929ca297140150d19ab0408c865e1a6ec204d5f030686e3448a8931b22a8b688a0eca5df11e77c57b7a7a9acc7629ebeee4244eb83ba3953f224d972cd44c065dec1fc7fbe8f9367e8d1785b23abc0372400e08be9b9264ca85efae381b19d4f0bdc7297136b28a93818f61ff3d3dd745a11e98cf4af065a234565d1a97ace260aeace4da40dd663d219729a69735de47b71ad7cbe081e1e26d38de47338eeb094571018307218410bc2d973c29173e2a4bde199a5049fb844050a5bc420ab5cd1b0afa41a5131cd5f3d1c30f06840382300c870f0a00dac12279432d801d5e8745c2f3373b5c4f4acbc017c1dfb4164046a2524886152d5c04912917e2f8176978a0c17eca370411431886630701766027fb86aa94df491c21c55c4f88645f1424c4bc8fb6a874fea727fd94ef0823ad0aa548cf9722c55014cb819162d8e7451dd977854564df9424cee64579527c66f330c142a39ddf169067e5091d810ba4bef355528d3b8c6487ce695154965e26a5fed53854aa5f82cffae1ae0e915db4a8ed490e826e7b52859478e33b69a9a43f29ea3d8d4158c19f9694744acbaba7d39aaa29ab6af4a6118bc89ab3aa6655559665b9d7dea3d6735732d178ccaf2c698bb8cb22654559d5a4a448c4228a96beb4eeba5051b357514a29c5a1a2af7233496f0cea1afaf0e314cdc67f7c2842d178b03cfca8a4f1303dfca883d6e3c6c38f3c683536be093509ed67087228c9856ab8f0b348830b1f46d1366fc7c12067a3e3e147245d631f7edce99a1c0f4f0f1f5ee99afaf0a195aeb91ed678f8904ad7901ec23c7c28a56bfee1c3a1ae89f1508787381e3e74d235a3870f7fba46067b18f3f0a192aea101a1d085ff8460cf1b72364f4994ae895f614f920cf23c56fa5aa2d6650895bfd47864ecdc6d48501fe30506a5977ca28685331f67fe6424e68b948a533a45e77b7352303cb005651bb5ac6a5a14c7b38533faf9cdc289f966e1c468f99627d43983a2daad6c8d6f0b87748ad6058b69d11cf60d89a85ce2a02cc925a5d7c13e2f1a838fc3be2b8dc197b1af4a63f031fb62ec9bc2e3f2b3d228e46ca48c422d51a8e56df88fb39141cd879c8d5ce2769c8de46919f84d06f94f9341fe2383fca7ca809fc980cf73e1ef5c2893b40c7cf84f89b389424e067ead497aa4acb554facfa2d085b3a2d46d4fac98e236251615c180254963f05bac74a231f894954f4825232b3c702ba53066de47cfca362023172caa0b1615def6a40a2a972ac2395019d4645f16da0cfc1bf6698175c0b7615f9420074ba5cf6a10cdd5f255ae509b81efe285c97a13d3fbe859a22f56bc5cbe8083e5fbe26215e18bc3cf18da4e4f2d20f524630435ac98172599680d1bff22b984e1a44409295afbd402d297e57a6d6833f0ad7d4248606c886e7b62050c5868d0171bbf75cb80e1e486152b9834e88ce51b1df60d3919f83b582beccbcccf1b34060c7d1b1fc65e48c07640c58ca134be8eae6785867d42476832910d231a6d0e3fb280b82bba729051c569e2a0d1ba6c51e56d4faa308388dab0e2254309357efc38c3f2b561c5cb250895ff6415e13be3679b22f92d6f0993254fa395561a93a41ad437f499ac72e1bf0835063fda17a531f84ea5f2572c504914f05bfe9c96fe3cbd48c3f4d49b68d0a79e3ef5a67699da8ca97fea49ce7abece9294521b5252cb3ef0ab9f51feb441a7a5603c7c7938dd35e74cb62f0e7d45d6dd19b6dd19db6e4a3693219320e11292628c82503fdf47cb24230b8664f931ce3827cb536b62115955942621a3a79ed639e58c1163f4cd1a42fd68f492a76b78f4fc388c6cc67c4b8d47a9cdd0a0d1ba00a1b62749f0b91985820b9fdb70e716ee7c1e95e4628c314aeae9c74845eafacc9a229315df54c537cdc8145fa65e5a4a3ef524a6f4ca347067552f5263f0caa17a24b064b65326776edb2091e2452b42e789eeded3580ba07a71214fd7f4bb2a5df3b870fb21136dc337fd70a76bda131c4471fb2192e80574a1a2fad3ea2eade941e99fd167d1f9a0f49daef177a182d4829ac9dbdf3b8eca949b79921d1759eff19d6eeb9c17ce576e067778e00e126aff678e0a957656dc15df71f10df3099f244db43ca14e6626788e08a91da814cd97a445eb14cd000000009314000020100a87c462b1703c28cb8a4d0f14000e939648724a194ac32487610c21638c2104080800c000004040ab00f43bba040e275d5f63f4e25dfd8a4d628cb40673c650ee837e5504c7ec38df5cc9b8c0ef01680e5d0a6df961b47b6813b29b9ac1bdd74df3f429c8ccffc4e9e9f3d4989d35a09c18396d73c0bcaab04849d4b96b4f0abb6a5af2b7dcceff0fde12d4fa929d64e8009ca05c48e69ea15624dfc1f8c1941df3288f2be1164fb42ab46e8dd571f0892d1402337882fa43e34634e523080cf04e222fe63262aed847da155f76e1ffc20565a6661f82712a88a28ca9dc88bb3774e8ddbf0b0c327626068def880624c472e3956c2cc786df35c5318e6e751c2bdfc76ceafc1d928ef78e9273b2ab5058324c6e653d57bcf4c9a532b250de3513db824e0ad8508ec5bd6f2ebc23665a40be70345053feaec299a91122b1bb9a31695be4e75a6652e4272b038564c17e87068c32a8095010c97889e741df3cc2c390412e7a9a73b479e58e3839c8cbb62614a9d5e15c00cab4e4f8df77c4d8982e1fa448e8ad9960b3b903002c04c4118c785471110b3fc7b850b0247bfe670d20995d4a300916a54287dcf31c47781506344341fb4f3aa17ae47904cc167d364e08bf3544bab6b79ada3eac5de5cdbeaaaa8f45d17b4eea9c125ce200c86121b137ae9a3615504c866e2407c13cc821581553524640123d9f4d06eef6bcf0f9693c82b4d09c93b9debf80e457fc2a91a09505e09d751835180dc742a30cdab07d859169e22c8c843457cc6b93354c79916194c4b2dd8e7716b98ce318f04001db245818ce6b4009854b65b3fe2329053d769565a0436e84e7682d1f9d72efd02238a3368b80702489930735b15aefaa489247b4db4d6094a8fd7d4f05668d10e87890fa4a95ff1e104db3a7ded6d03e64764fcbba23a43de90c3d81f27b340d0f391c4277ac4e7a81f3a34c2fa54fd07f5d6beae9a9e885308177afc0b4a3af74f7ec22c46ffd2972affc5d99f919bcc2c39789460d11fe4445b55c9686020b513aee95d10b3539737e690c5d1d031135b203d51e4e8f81971ef0ef0c0ac740360467a9af01b4917e140cdfbf468aa7381f162c9c938f55384886b2db8301c57b5fafa07b0e17243984c0997b340209a371de6f3eb6c5fa1e1c0719190b9588bd917e6e20d7131847d8252670b16ebea01f84f5178032b2bae0124eb664aa65aaeaeac537b7d2faffb931cd3135b602bd4767fc65fb8590bfe6a21950131c6f0b91081158bf4e09787d04673885238bfa3b34b099812a620983db3f908fd5cb33a2fe88171cf54f260953987b0b0583826facaa6622de7404cf4aa9789860033c8137ab0a579a2791e714132bdcdf167a7cc2dcd39aac57f25340b6d7fa891cd3a46d21587d09461a41867d6a40158e5334779580a2e9018cf158d1ba3650e6412a2b4c16890093fa3c0d899fd89b1751bf2776fc53c7d6361d5330d9b8a6255f09c50c662423176a2071789260d9f369970d5e064d71babcb35229389571c2c882327f286431d80d8796ac8c1dd8d6922aeeb0497529d633915f16825d3dd4638ca47bf256c9676b2cad9c357685448bcee107f39b7503352e937b72cc0406063ce56d2db8f648b98395618c85efcfb8d08d2a7f6e6ac4025500645574ae3a6fa2b71f7aaff3e7f405da14d69479b02d36b2d17ad3d461cb4607a9877ba259bc72fae0b7a01280cfdbe21b5859413fe9adce35880591ce1238c4a9b3a343a1c1d0808fc8b2733c9069685100147f46e76112bb815a114e45fe82a338ad365518ba8003c534ab6061f2eb8607a13716ab43458ebd40795e52dd3b3ab101578a4c09d150a92845e78159b7a78285bbe70b157f9364214e03f8f7f7d194bfb65179f8660d51fa34e1abfab748b8c92ff6ff3a0d2cc36432a0204a988e905d3e0d17f66225a5e6dca86b5eee8fe2288d90b0e8e34a2fcd689150242f63f0ec01da89759be55d3781715283534533a95f2ad411281161c4eca7d1244217db4cef2c71e23ab6c514e925bfe18265505f048c2114e570695ff4c6b0ed317e6389040bd5328a06466ffebbff0dc5de7146c9dc80b67d2a665552ed44ffaae04377c90b3acb19756d6d4154d1ac04e16cf3d46c1deadedab3be06b207a5938a011257092ad7540a3108c377173cf7647c9e39c3ca3c2ca05d9672d83083998d26e5d0d6a86ff0751ca810fad51b1973e67e15b158913308fbe49bfabf21625ca513f084c14518586836a3c71d27399d6a1c7a43bea86f90eff02b34290dba239da78533e2f11e02cec73c1073ae89a0aba0274e8f1495135a121309cccfd228a03ba0072223bf894b709a4ef8bf6260dfacc9747341f95536b28d6d850333a1e3ca9131e743f5273350a31fc5506e7e1d62f99c98458d3670f938377274e207f9956750b3b6edc703b1dfb0d4ca5e5cb7101e73ef076d2390f9c382ae9dffe7308a38eb6ef60d5c432bb8e75526707d5fd3c76daecebd16ddbf60c59fb75d74f8c9b3652e04752770bbf11730d89b863183cf07d679b5d7ec3093e95f025e0bc768b26dc7559d0e6185f73a63da02eb73ef7bbf2586b34de92316b6b7e70a51818a994ad9f8a05747fe05b3a937474eb4ed4c4fd27f1946774f1a186ab477f60e6fb421411b6608d2390c4040a4c4f5484c46dc9f199d7c956d0264d619cf700a92a4bdfcf890bfe1a8177b35e22eefe61a918c79080e67ee95fff70e6e44d6161cc7b0d915e36c07a43383512d0a2507b7a11ffab50a25ce2df3e29e4a5fda3956cf974aaef5314cbf4923bb2750d2c8c2d2dc71edba6a31b7164030d3875bd60d2c202693685286023196cab8ec8f15e4a7c5995867ab7268bf9f72e757e79c0077c972d54e0d0c802d8516302946ea671409d070b9afbc5d44439bbd38e64106b3d3f323af4a148882c00e01084821d8599b9200f25b9ac61760cdbf99bdb224dd4e9874a601183ba890e7bb383eda838e7eecb22ac15dde6563da01f50116e9438678a5b552c95e6606e9b9d3ef228408c8aaf623d96fda2f16177f32e7f282639e42d6683106d5ec00af5e3f4bda06b460f74b8948c21b9bea25635dd1cd233918b9b6568897e01fc59fc3a8dd41fae67355be9b020642b24930f17919022e417b53860febbc02ec530a0fb544d2bf8d8d528de44c94d2872a17094323ca21c8a318cf2deb95b15956e25e078cfd9d88200f699bac0d08feeb19831baf726a49b01297faa6c3a8737d7181636bb71ba26d4e11cf95eac0a95cb70eaeef1f52f4ab6c4e6897cedcf16487673981fa54b902a6922b051b5aa96cb31793309c0048da7eeabcf65c20a026d88693f63744048947aa82c4a92f616854a68e9a022af003eaa282ff476bc3d72488e74b7076c1d37dfc3ccc0a0694eb8f19de331785dde0934dfcb5947c6014e925fc60095014e55f024dace7cb50327b44fc35f7b146a7ae0d1b64698e3fad1fda32c604fcf4926f05caf0ae901eba14d903a3ab148542a3d79fcfc2bdc34343bb514c61e9647bdccf85df0fcce505afe40bbcf03e17356e994aadc88750c2ac45907716ca64d01eea8e1bf465555d7d4fea95f4060dea6552a6525fe44a78c6a52f75816f12e0b01daf0cade09ad556b873f31f36cf4de7c6a57f40637c98dcc1731473f7f0dfcd625b33710fac62c42da8edfc73b0af4dfdfa2d548e09339eb928bb6be84b463102e2f5c9ee927cf8545586d483211c5bf065e4229989eb98d1ddd25467da5073eba5cf59aab7558fa5e474280b3a483cb09e14268f96f9ad4e66dbdb698198d1e09164cbfeebc0b8a5a30884f53531dd18eef90dc980f7a6584ff15dd32f1f526c7f333043081aea659bf1d84327caa1c0ce2dbbe69a3a8cd1fa1ce530fe3a49a823153b92e1557d28e6069a3a897c0eabc7e054c2f53875bb8e7d284bcd3d92be2c8a88f80167712d1191175df62049d331d5f9b3480ee021b8744b94bae6780e87dddbe15f027a4f035dbc46d07098543e23b15d5965ed396c825573e6af6f46200e39f59fab2b1611a233d35611706d2405f1cce6906e432399892c793ec3c42e2a17861a9dadc1bb413c3e501b01936646b0e2cc5334eb4385423d2090533b25baa91f3582037788beea4e69ee80be29f528f79d4d17cb308456023d17da84a9fe36c7e72a943a3f550c85cc611732428427288a5313848cd36850e2371a180f21d2497e2810e32bdb4f28efb0b3cb3496ad2d04d060491b1a3cec7d2d2cd6acd5fa3259d2c40d7eac2211b030358bd5249e9056f3ea93dd7d277dac4a4bed9085250b44383563f3ff093b14ed3f6b327f456ef2bdda952e3abdad0c8001bc134ee85321a35468a6d09e5f9024ceccb2e1a64b0b23c1a5bc4fd67b26768de2cabbaf5cadd8be0066092f66477e58b62e24faf0c867e418b9dbc53b53fa1a60718a1c75aac5ac874ea8fdf0df65c107a21907361adbc27e986d4bec2d2a86892c9661c6e4f36465e9988bd5f4c6f63539a118e11e05e367d1f688f661cc910555d7465690e042b1f84dd18b5e32bdda47c4707ea21da7a9d14cbf2b3a7150359c6d8afe779a205a266616adeac7ab776adfd766d7c5beed2a81f0040fe2d2e093211546d7bd667f9b8d81d8757791615a79ad48c7cc9724568fb8950ebc94156686d944217c5cb71b9c3660f8533c19b65011c1021962183b9cd1298e9bd30e8039afeee7880d2c30a7e254beb89c62abf5317e053fa2e2051394ef7c07f0298135087660cfd35eba4de2e4c39580e44ec1b53305c3f32b4c419830dc62f03ac1e17ce825690a9b8487587ddeb680c93a9a78f2e2075d8325f22bede648bcf6f629bb86830831c9891ebafb5b265ec27c5bfe209fce14ae2d4c10da7d5c9fec14b9531699b44cd14355a7060774604602aaeab33a37785399882ba316593bd33cdb84dbdc62fbc0f1d19826626afe6a2814d5b0747138c08c40aae08418be6d0d3914717cd25398d03b8d65a5a4f70c2e2cda718e52c2330cc0f69a70554f40d90477f6cca4218e043587ed0abf86a3157ce8b5fbe3f77cccb6922f222d1dd1a3efa30a4e287e858bd717de1056cb94c327240a6e67e9a9b8f0324548f16a9d05ba96b92dcdf9d3c867588d8a4f085beebcbf191d0fdebe0b107dd7737d831d11e54dccb56df2e6cb565b6d513ca1d7f7e4276bcfb68023c758beb04d89ad13dcef362fe4bbc6002acab3760bb2cd890eee3772d54c18da8fa4d99f7dc891095099de53a86187962e11344d5a96f0c4621b2d28d1e7ecdf38ed2eda9a742118fabeafa252868e4bd727ec052574c97350e1c0ed9649e7aaf9611a1d56540c084a73e673399a7e23e4001a99589d499e386135f17d642c9c5a1da0650c1a3a01827523910bee267359fcfff0f3d0378a6089c0d74ae821c3f1e2b88c9403c2ffde6411044fea2567d202759717ea28c160d4537ef5230db394a6542e4e48ca1fbb67eebef885ec2f91c415977360b5ed75680caeb4f5f4023058d4a8d9fa3052cea9f4d284093ed7b7d8fc8804ff2e809fea66665f33f0d5ae0e9cbb545b0b8c3bcb7bd65370ce83a05610438966eb9a232f74890448be39e042480856cc129003da2c0e05f2148a29d30e57ad0384b3b08740053ec212f72280c66c7a0a224b36c9a08988a64808e1b620dd8ef7deb2fad4214799ac61f05059ac77cf7a4eb8007986fbd8c63c7aacc225dd5e979193a6b2d5343795911ff37e1095f3633e018aa893f908568b6da459a75b5051065850fbb5a140f2292c38630588da665a3fb25ab80dae7e22ce8325fcb5695002343f0d0295ead47127655d3152dfaeed4456eed419863886f946c452eb25868d1a84e667fd92813e651e47c3a734a524fb6057ebe1ade708ad9ffd4ea5c001d22da3e86f49b2b91f3bea829e42482b70ac42f0dc82312ebc9367bfa9eb98010ad790139669f6de20c32bf955f6e5ce349d5d9ade7c6d42d51374c49d814929d9894c56f93e0bf9c6b0177ee7c0b6d0473a67987f3d3a344327c70e55bdb7501ae65a958c501973dcb5f808ea58cd7ca14f1f1c86ea2f6a70ffa1082ebfd808e67fc9114ce61d1a6fd0dfa12da9cf56ae37687a85a5b34a1c76ae215d3b0f36e278dcb9e964feac76f2ee9d0af4c85133620d4e30c05d147126e6396d694470f7c64a7c4e893eb2da6fff74c73160c490d1811048c87fe2967e442100435f7c980854ce187378585b47cad3f9c5591625464da182824b528c70525b82996f09cbe73266f92d820b647bfbc1398f422ed3aa70ebbda7a8be08eb90f483a36aec4c54dfea7f313919a04cf239e04b928a994391fa60d990227d671578c46b4d60504ccd1856195ce1d9b5413bf0b41463cc9e110029def17126bc697ace707659e4eebc42366502f2d1a912ce758d0f3bb52626834ab4c724346177234728a4a68a59d7f2bdb7b9a200daf873b269f8fffd60e59a73466655929baff0a6e3765a25d29b378d9790001de8a24aaa67de606ee946a4fb797fc9723cfcc68d2dcfc7b8c4c41dcd34e18bc239bb40fa943cd72b3f54b595cc525447acad99dc49ca2edbba6219e70920ccbbf0d9cfd3ea6308365f06a92d7848c412ee66af7974c670927f1599bbbbe6b65e71f610d30820b5f1c303e4fa2b37594ade251fd0a14653e7c054ea6c29c1dfc03a8feba6ac0322e5e04f493d4064067f14687470bb850f24389e980ac549cb570e15234b75c40107d901e92371a0ba36ac2e341c4b226a453155a29a5d260c59af6df3e04756a841daa6f2b42a702a83cd64e145fa21863196335dd688dd34bcf2d60465e8faca6d15cad55f521acd7852a97e992b13190ee0b8236903c103427743f87610b221811132bc1c712b3872cc1f85f76dae70a1aa7d6b3c2284053000770a27d193b3af2bf7c01f64bc5c1e4fd8d0413a7c9f5e00c2d23b9828c2471f26d4df8f28b0c1979fe634f9f198062e69e810a041e00ee61c9cb9697bfc4f167137d89854862d0a7e1f0618cd7d20cb1d7de2025db43fbe640e5357480796ad95bb640e79150b7ba7239978bc247d8a9da241e1ed06882465e6c9c100a314c5a73cc3a4b07dbf27a3e8b1241719471c0f6d762f970a5371dbb655390d41c2b82a5f6e14d01173644c40a23e49c17da01480667e4e033e28d7c0ba160057e9ef3b97bf804238694153acc8c3bf54c0daca1f8c4921f33a8384214c07dae2a6896d9e265313f1a27fecefae3a5a8ee9b661ca4f0420c9f0047e0a8f46483003c11c568cd19420ba11465ed6d3b33d4ef08add3c0e23612dc1a11aef0835e7ed64a6bc550704f0bd33308b34fc9ae772ca3905344b5090549759a7ef5b4bd97e2a3dace1196bce5fa0be60b5b817a8aa0040ebc4df0082e71590a8ad46f9ba26e7ee77c11555529522e35b136653dc33e661e9fcd103941a7c14965142f67dfd0b1cade543170deffbda6918a4dec4d75965d3a55d65367030e8327b52dc4cbbab64ddb6cac5dbed7c70a86d9333c5d05f79e26b7ce0274cdfdc808ccc4c2723b7d91970d7c5018e3f3611ccb3fb21a940d13ce4e15a7b0ad681016945ab17612705e7de7b891f089a4e11f5071e6a9c1ea404e2dad504def3b72a3409e4ae309642feca365f27af4d82c40cc4b89d7c99deabb69e2d01847ab9f6552b40d71471f22ca9940b2dad581d8f42dda495fad59ac9e9698cc0061bf6f7e70ef12aa98c41bc450016d4341a42c32362577a90ffd8270058a4e987a121a221f60bda9e527ab6d43540837e1060a16cc9803821a4b51a44db14c3636b52ee3bf3d327fa6c41bdc683fce6dae2651400d01570fde0fc3fad8a80c45c79e90baa138c6fe16fb686feb558c69b3c18941b87339f56fef06db25cebf6e136c3490378f1401fce2f09f93ce11fc864a703f0ebccaa581d41caaad89bfd94e62240bd89361c0c794be660104f092b65213754fae78b4e61eb9b402c00b398ede4a2a3a3d2e78d2a0a47c223907496fe101bc6a34dd739a0e1c20ead47db6c7de959cf26713cb495c60599325b0b69f6d29b4a44c924dfcf57ef248f24c5ff2a11a259e2781840d97266b1ca35da43891838e30b6c7e4663b517a2e929f3f8985203bf744199439b0ab4896fab382eba9ba5f580ecd0c8508f2e112981bcbc2bd93affe2c8aca2da44d3dda8352e649b562682910a7833f0dd1a1f6079a9088f0a40784543040446c1eee9c8b08753822510e695982781941f62a4d8da4e0ba6995a8ebb9c91be5ce4c52ff227bc3578df31fd7bafd1468089b61fd485c9f79db8be9792bfc212eb94ca154e158561f21adf5e5e77bbf82146ab27470b65cf59faa443154b88b192648200ddacbd7b0cf9881da98c84e05329ddf96410c2f64eb936d6ecc80e6962146a737e7577ec304b26739179964f1d944f4f0f5358615502556eac840a7368a1b94393cf691640c5ced60ec8ed89da084ad7ea6d611d111f9bcd6f01d6058ce8a23c0ce5ef7f3a8cc4b2adf1c84015ab6353331d8055fb29c0ac0d222e1f650a25dacf04e3d804304940e82f0c44cc7e1e37f64e811303ac9a254d34403b31dba73d9802d7dbf2126555d8799182deff642865a46e20875897ccb3780dbda14ba755213591484ff4f4f3cea4b50dad19fd4a4bfbdc75756dab0ed9f002ac85ff4587b20b2101dec3d66bfe44381c1d73b1f1956a27343b1a9385c205d08117118c4c724bce91006029fe5b5df97f5c8d0c92681ce1c7b7e358a898ebfdfc22bfa874dd4c4bd28e73b4314c25bf7f265936112e9f20d9186ca00dce5caeca965667c6cf84c2b8e0097a844887585401f3102aff6e0b50d80b5f0bd25ab9de9b2740ad9bf492efcd63c2f6f520c89e087006d880c10dba6cdd0f1e0b0a700547b409754cb2a16d6936f845926f6b58224115c7ae9abf2aa12dc90c9a098f916b6667b219f6dd6169ba003a08c7afb844c6d1b6316a522ac8b5593ac5b47e01c620ed5455e4b139b9fa2feb3c03ada556aaf91321c32dbc7f4c5b4abd6ef63be87b3b33185ec2fa2a2dac376a1955cd26194ae2e5eae7b14c7cdb55e18326f1e414302801bed00fa9748d0020822fc6182181608b0add29f576b59d4482dc668d3f9536ad41a7177babe94c27f532ceb27cf548e8e113f63e6d73b404f31853a69b24f3dfd4252ed108fb561389ade989c0a482820dbed1641550044b0c41e890c4879be9f8923314090478c986d706804aacb5623a2467d67240ad37f09355a0a1569a12f2846f4032faca821d3b1332c7b84e57c9007a5c99cfeed66fdb754c19afeaa61b4df4d8083430702554a7719682f94b22699461985d836002cd35956175a2361e12cf8aee397178511c025e06cd9ee106012487e41634a04bca2f994b53bb764394136216ec9427f919fe94126a58540679422c939cade08ba3a51c6e503dae455f805470b7012440127808808014beaaa4cc533d114220b2c3384bf3552076b201b44654edb86ede99c6797ebe1b1f4f69040785a738e065bb4ed3c074dc24c92459697581e0e325cf991ad40ee644b6cbe9cedf0427df6ae21c815fbfdbdd09a0ea338da63ae39c6bb8be2479f48c08ded738f3f89ec1553523b8ac73a01f298b9c63b82ae17afc24d2b069f4452c0684f6aa3c31550f8584030505183027d5e09cf81118fc65638a2164ca4b120148beca1920c28dd3e74248cf04e87efb69838b81f2e278f325b474eb4539391832496150c6c2e2edc44b97f23b808c6f6a80d9c7ec21efba9b2b557afeaaab241f0ae85f5051d92d054e255364770510605da8e61bca8403fa3a058b43bf7910c899d26f9bd25b524d4d2797489ee1b36af87315692f61ae67eeec26cad5bc0c420c28ceb4a9c04a3da40c9eb0b3ded53e22202085ac2a845496bbe7302707aad30cc4766bca5cc6126d868e43811c3d1b07d8ffa92c505d25832a1c76053d72de0fe11f5480dbd5b4a5f14fad45ab862a85dbd1a73eafebf0e1c34ac1c3e83b805618236b3b48a023f030aae3f49e431fa63767046cfb4664cacad7225a073444d5f89e67f2b835c764138e5934c5798d1ea26089ba3aa1d59f822a6e207488ea41128b97c3ca891794d07e1c64240cbf416986e488619ed4628c60cfa856c8f7634f950e88e801ad97d4113f2bc4dc985922eb56bce69ac8297ccadaf6b10c1c83ca32283f9590f9284618924da95a88877c1fde67262909c429e60b8fd26d72ce60365b28364c3a983718fb33cb3909670e9a496867427b84188b71d4099f75d02e3a560f01c14c5b2a22936cffaa006fb4e8f4cbd5c003b75c703ef7f9ec55d7e344200c8520d77e0098cc381d0b571d2724784dd09465b20c8961b39ef936a6e771807666615ad2a470c1559acb280f770b3a1004a753fb1cf89c929e90521e68f8bfdcf2d5c8d63afa2eb179c3bbcfa36ffef906c1666c7735be528d4e24acb9c9cd4435ae1398abe15aac4a804040b02b47ec7bef63ab411b5f78069dba68e14a64bd0afcdee0c805081abb22c7a13bd54a20aa17149ba21f319b4cde6a7e000c92a3ef02f4b0415454ae3aade3bf960c825b5ff4804bee9e9415513c51329b6646e79bca74f139502f0a8470566b0041f6e0ceb66ec51f84e053121b05be214f4d23e01c6943bb6f5d5b48bbc457f6cb4c7218c0e81daf3fbfbf41d71c348d88695f887f6854e6754fd16677f70df1d2632b50c667322d71501ea59417aa6755e3191c2da739488860e219ca54b6e4bd4f321a6b5a43e4166e7848dd51ff065266b3577d3339af03b24a96194c1194e6c226b5070027c37647fb10d59b6df8ed4d06be4bb134e361989d868973c13ea4d80b8569785f9c555805ae07240153e2f669cbf7504f664dd58ecf3d230df3d7a41948ce9308cbab9e1084e2206ba6f31f416732bb504bb22e175a122f43aea27cb7df1e1169e147e6282833a08499773c209189f22693f061a49641c29b943dc1e5818c6822b8b8d75454748f13a1723f84869bc557613e11e43939ada954d4bc09210cdd06bb59fcfcdf67a2ae13f65b27a6eaea3a149ffbae706982c0b4fcba7c2f4dd193bbd42e129f1227fcf0ddbeafba925550397f611cd93770088b91445f3e1b15378d805cc913e92983fe62708280cd71e201ad3f5654027b1772082d5bc128644efcbcc715b8e65654015ac6a9464a76823d5b4b30df639221784ec2d8e45d8897293715b75ba19794beb59ba5e1770b7b17232e9bf93d9590af75b07c6d315997488cba38b030fd4e9373fa491538f85c7a7a60abbd6a243b27a4b9c377eeef64fe45e704ec56ca405962e95705bed62399451ee86dfdb44df3193263b0ce96a6e4e0a3cdd048374a8fa2208d1a066f2a1604a9ac27c31792fc73ca85179ea5397fc2aaaf1ea7bcaa07aceea6d510c6b2b89e4cc2936efa335ea82d5526c7c44dc1bb0ca257cbeacd60ffca8a5ab73382f93b952ff28ad49693282eeb3835cae101159b4339dfaa927a579e1513a45ae382f4402fa2036da54cd18b2e6c290e07cf520f9f2bcbc758865cb76722d983e5846a08c33074f3129012764f9d085f2eea1cecd53dea15a004c3a5371043b7a50fad7126e010051cb7709cf235db06d00a8091e0c0d7c205235bc9bd1703d2f8f0ccca19c940a6a9ccfb74813ed642b83d8995654064381cf88dca3b475fcb9efc4443bc4569b9e116183af8d0e1506d0aa0723376501b77e8c03caabe38cf9949faa21d7cf6b9b8b380df45d48afcf61447208952c67d76d1603c4c2b1e20f36de5b1db7dab040e648ebf8573f83fd8d4abfc876115ad558781d3c2636608f00bc6f029645e01135a325bc9f034aca920a32e472c937be1a4be3266b41899c95ad7929bd85471a81e44fe4bdb6968d3d934e3f5a52d918c761510f30e833946442d7a238aba09e857f3554f36419301588b1011d9d64fabe802671a442c66a05ab50df8e2fd54a2300ace205dac380d2777c85e3d71950ffe68b6b732f3569c198f0071665f7432749e284a7215a71a50bf42a97abc603a376bca56c3d2e62f888d9d7929ffa784a4fae3c383ca98ac2e2bf4ee6e0e684395abb2f27f465f8f1dfdb0bb27c75ab048906c14d4c9161600b4f2dd90372454079be4f8e27e353e4139a998ba6f9f0f218569be9dfe704217ac1bd2140edee5d4c5ceeaee90968c79143f0863769632c5579f8703f612f0be8a91efe27d3e4be38a1015413500e41f3ecfb4fc30c54c489e24e0441949943ce61c802566cd778281d04a37788e6c2a53bf10d4ec6811f8886840a3e9585ef96de07559e0ea83957e23382bded5e740358368b1a9ea8a4a9869f9a045efc9dbe7762f3f74e4c00b126bbf9c3061092cec34a2a5288ed2cf3b6f4e54ed72d605e47e0a1ae1bd6a8c424878f4993557fb47052e01f6226eb5354065f1ef9c2b6a313712d60caac690b1436260646e4550c16997cada105e940add977e7d6096e314272cc34ba6259b307b1477520378a1fc7bc2ad30015099d271c7d180631311cf6a25452af902a1fb1bb198d5a25d03e75341bd84a3240be599eec469b663ca89c8813ee18f93c850a5c18944a6cc89e07865f074037a0bb7cd9ecb8bd348bc1110c48d5fd4c7768809bad817290981c11c6d1d0266d7831712dcd4b03111b5841ed8833a0591ce8dffc11bc991fe0edfe2a6a2db40f068bf765ff0ac3e64131d4963f416ff410eabd5e36cb2cc95ccf3cbfd3758d9176675ec1bac0b37e75f1ade9d491277c4780f0062b89aa2d9211448cd6c05242a9e00527f5337e8f72054189086192e41869e50bb9e5f7f854a0e716be79a0677aaea18f67ca237b0eca3b9f0427293e72a567991a2edaa63f34b34268420c3b5d745620e5d097f363c6f727ccb2f13ff8da4ab4f08537917aa7485cf4bbc21844c227009941ff29b6ef58a74f2acca256561e8140325baacd090c27581b800cd899ca4fd9c37091e1a847f09950ecaf1b04989043b5988829e9ac66b1e1f69eeca7323d692979d7ed6c40a2ec78c789bd93784f27c3c9c6b3b17f66fce6d952b02f1e535500514375f2be078cdd8e624cb1a9c663f31a8421a5c8c423414a27118a311640c9b4e72135f65c3362c0c90d46ae87ec5c9c7b876f82dfa7a3482c88798ec334c0867bd97d0f879c545bfa820cd034aa939df5136b1ed3ad6cec814d231c9458c45674a8efc9cf21a5df7e84b323447879d20e4e45ffe3c3cc9c5bf43920891a57b92fcd1adb8e237da0a52033099fc441e1744fd389a10ab3db73eb8d6024b44cf9a4f159237c0692941b41f5a8c4d5c4ee51534b9869c9f25abd4e0e3e4e46303414fbcc64d051fbc004d0c4f300d3ba11dd10e572db5a5ea82d1dd889d0862b8e782a8145250fec057a43209717aefd3826873a4987a68100c606c604b08e61efafa55ea2305070782edb6131e968d9e8b9c5c215d1405e04697aa4c62040ee6fc9e4d0384f4c15b73606fc287a9956c28a911f3501b1c57d903989d385df44780681f8d1950e05aac44a800c71c7b9af1eaa49cd34692a9772d75d743a865a797ba5ae1b71c0140b5ce53a84a4c2686dd954fe9275d4a684693e1b10f2bb75d3eb8ceeb243d5420c2b1e647f2c6464861dce6c46e9f617ae2d0813c20a8a3b800a9923915284401f03d1e440efdb6ae53384a5a41668370e71dd8bf9f620277940d14d2ca8f9d6b0cce01edf4f4296dc65536baee8516a421390e2a7f739a14bb1a0bcce0ce73a0fae526782343c11d5be58b48532fecd19bd9245939ddcea5d285b13692f554a4e51af931138a8125ae4263c0e48052ea8c486868838574b888fa9ce00eefb46a34f8ec692e7368e887b05213c33dd23fa4ba83371525964522b2566486bfe7f182e540272301aea7efef2bed2c8c04c96c55fc590e588590e2a52ebafac5fbcd3ae75923b5b97aababc17d47121e864c294bca4969e07ed40c73bac68c074a4ead4c6f9b38b7a931c09083036b120018127b1c86be4468ecfb22292f84cd80cdbb021a4e2823b3011b014cf8056d70ef8809b38633070272490606cfda9559b0dd6929c8318b8280e12aa83d3fc803a6b76c8c0770e83554b6c4819d86185fb3e87d2654321d459e3b87b9773164eb79927846a19fb37dfb381e9d4d441802c0d684437fef02b634a390b84c6d0c30d2718618ebd20557cc6910c254635d9050073b7d072b3db7cd4c7121d4dd7fe428ae8cd4608ff16890f210327e46de6cad34265cd43ada4d6255e1a5e9175189fc502cd7687fe8b6722140c9130e7df4cbd520eec97831d0b3981be119a1e593696894a1d4fb616484dd283743e4dce42c147916ad181ec95203aba16bc6199660bffc9e92117a03413e2b40c61a6d4da6e0f59322a345446fc7cb5a3b4d01cfc3f4a22debac89c14ecdecd58e14adfde86ed53fc42edc025846dcd626b992ca3cc247087a8c606b414ec03547165b1d04d4a09b276be00dcdb4d5698517ce40681bbd2c0d8c23d09978ce1e02f7b6708c26d8e27793799469e6286e21dcaacc65f2248654722da0a5020ee401e58c3cbad2bec94d6baec2cee0dee7d039981140c0a64b967d87a24a45c460eee83dc5e23e9e9a6b374035bd46e72707383ee0d479fea00f91a2709ad1f9581fe5f8213af116b66cd5561af12d98e129a13392d87acee74243e0168a536d51c4f4dc9248b8e6f992d104aae0a2399df80ca7c1f49bf38ea4cc0c8611158af971ffd1dd5050ea47c773e0902f06e6f22084460d01ec246953c20a89b5edf71ff44fa051639975d28f90e69f1c029c10386e0b5190232c18e65453e46eac207bf950bd20b980b42e252ea09321d46885aa0d96d53af1b9eba589bcbc4141bce213fb0e4ffdb26340ea2a3c9d68ab477575f8586b6e58228af2f670a4acfbb76b0050b2d6b7c7d5575e243277f7b8c4c9b3f07efc463e6345547dd09798bf6e19128197f15d9459e667cdf19259d583a7a54a2a5579e9ea90add44bd7168e4ce8491000e4a267f93a4869e8f9af6a3b8f0d1fd008ce7fa1d236c85e59d73bd182dd4c78b81dc7b903792101703bdc901c08d275df762e3a39c9f0cf33c05ce4f56dbba7901b5f9f6f7b52ee37a93fefb068cbb5fd1a127468cc109a010ff53ec6758ea6460b473328a977b950f226c2b471f0c4850670714f68e15d014f7b82771c3ccb81e4cef46e725cc4459323e4618d3f68b48fc9deb58d92ea5b13022d1382a678db39a7ca1b8e54b59b174272da4221a272ed50456ed3804cfd5aae48d56a1b9021ddbf52b85a4d2c0aa68897571ce7c92d663ab011889929065687f06fc6a4d6dc591335ef3602465a607029533748eea1444506bf20e4bb37084fde9a21d256cd44bf2fe653684a4fc74847ebde15cacfbade98ee655010514b9c898a8216fa4500fe14cb22a79a769c54b89f4fe558823c1fc0f7701eeca062835d28f2f7f739bd57401354989f38a58b9e37d4932b940d58f79e56b0800d4b42e1df94a6044095b72ac1b6b687500584d86c3d6eb823d992a375b6d72aa774a83ed4230b9d7ae9eb71bf6c525b5db9d45d20d62b8f0f33e2be74cd663b79eff472d9b91dc0d8b4f60194f6152efe028727bd82459222eb77087d084e485ac50b4a1e2ecf40b5edd8728a6ea40cb9306d210f410dc9fb6c0767d11cdfb6eefaefbb57f4336736474c18830dbde8b2ffcdf489475030d1676c1eb77c3630640a09b4a38f5e68b70030429e0cd38fe7ea0471005ca00c05c457556e19c5aaf609cf5a21d0e05cc8aca8b98a361587f4d52439e3ef2260c890ec2bd4805246f2d338633e0e9e11956d76c34375cbc20055c1a417926ca7a3bf28f0b2948ba752c672e64087057602e0d9712ca2de2300fb8c00127931c81080da3ebaf63b3bec2965e8f66af9099e26ae69b2e9e86e0989e74d7bda698bb841e0809e21559ce4e0239bda0d0c0ac4f8723ebf9670c6fac42e523b70b1c342e6ec1278e6b8c6b8a44026ed3ba99944dea9075c6cc97f15c99c6bd0548a0f2b54be916e5feb230eb013cf43bc6f6405108e4294c2532693e09681a4dde07ce2fda50c202a537052edfd2b4f5b58b62957b4fa9b015a8601ad5c31b12a05864d6a90c510e9f104e3bb96c1965f8a5897890762dd52aff970c1686d4af0cfd208bcf663f12e227922ce76c4a909b718dbb25a3a351aaeb198dd20ecbacd38f4094a2634de3cd806b6d18bd3dc28bd3967fe1d8df61ea9bacd3f6ef9681545871c72378e4f21aee134b39ec6e37fb3a564aceafa0ca8cf9aa4e3a7b4dbf0d71a4e468f54307002ef1a1c63e9f1b89e3cd932327002ec3d6e638d59c832ad11d31214484d720de3fc7f4994648a08753111d68a8df60845a5641fe6fe140a761972082e19249b9eb00862eb6828d2c465dea644c9a213a2a0907bdde9394f9a2563178c9b2a0f31420f41145edbe8452e2b92811661a4d7e1f965cd2d12b042b04d52934a3f3bc231b26aacf605ab599a09c36d5870791d7cada9ca21e41d9d6244b14b70318831505828515064b8f981997d5702b1ff60f4337234178c35b8cc4167facc061718e410deaa3259bc655f4137ac598e6d203b6d80cdffeceecfb0cb0ba253c5b8c33785cc2111ade14b8c3f2036c4c0e89f243f5ad57b4325906deac790af448c982b8c1bac371370b387d8c682118db3b3c2d5d64cd6c1b505bd49fd8d367d11407ffa91169f4a8aca90ed5db20add4718713b48aaa73490d74d87cb50974d738a289e3a36fcdac2e83c6cc5afd634d46810847d671cc659801658f1a98c23cfd857b90fc13e79e32ba79c824e0f7c8dfe5d1ff3cac584a72564d9fb43da880b98d314bf3acc0073cf0a71fa1fae4cbd7f38e4b1e916d07a91cce9a3543ba279da9db281293909e872e3cc686221701301f60f2987afe735e1eb6f728cdfe3544f38d8c6fa0c08e284cae3766cc1f4b90662df87482270f8fef42c09b184991e562799ed711b1829c3714ace11d5cbf5cd39a450a922d8a4e4b42327f713553d9ae81dc6634d4afc5eb1e98e6e7f8ce51e19ef298523a3bb2c84de54ae862fd016cc08472e0b1da2e8ed04ecb8382512cc0c61fed5633d206f14efbcd0b54f790ea46d4a8b9893dfe46cee426b50ed4c9aedefbe3832f7fa8eecf694cb70567f0d64b6d0afbbe886703f2e8de51f20d026bbeec3671bb2e9f2de773334c5bbc86b75afb92ad806275d621c526a73597ebd59ebd7350d129fef96427915bcee3617888f185fff3d44e24f94b210314138568127cc5a2e2ce90ee899b5bc1e5ab5ef229e883a5584184c16467177ffe25453c0a757edfee8a0e5298a217b03c2cda28b89a4fc9346aa6ae08682ddd4c3dc84512974b5a65303ff3aa142f999eb74d65307527b7402a6d3e97d8e6b13a432172519e9c31e184cf94d561b76a34ecb104ab269fe1cccff05e00ac33646c581bd93e2e0840160697999a952de7b4f21a40745237323621e44d67e10bdc2f5553e468e4e7ee0b13ac1c6f837ff96ce065ee425f45b9e751dfb0ef628e2fd8712498b0bb2287c1158701a23eb2339d3b42d102fa05b5f3575b6f0047f0e0cff02a0c3cd9b80746b06565d14d84fcc61b062242b56581183b706b1541410224aed79cb8be2ca067c8b708ca01d07c47ebb17bd32b2e6446b7889f6417344620ae70428c24b04e48ea74d5adf94053eee14bc8f914a91726bb6707eca98704f5a06abf5cfd4712d0dfc71c1864847cc20e0b8895859c435069d779e0e7a5af87f1c0eefb00067d7ed8c64e605b43b5dd859f35cda00ff9812f45a3f73473db3d4eb72bd6ad603463a119c2f3183231ded0609826ee45aad817a94fd5b564963cc83b86787ab68b4a94367d39132ecb1e1128ef024e0da8fd86111d8ea0083e26d7a8a141b1913893962252fe58c9c0de73025d8cc4befbd69fe18a782ed16b208133283759a37274038d555fdcf3cb42372b79a1b65ee5221f956450cb06ff9a039c4fbbcf24143b2d5687408013cb0d42164db442648e69c2bd6c4b3f5af67ae7473308d788c4574e79c9b4403c115cc63935eb3087f78a2876aa8e34fdd2f48f46ea7a2327647a58d8d6a1f567ea6dfc60ad83d9699db30fba4b5a724485a4c4424990f6112398704d0fd518a9f0042b6980208d06481a42992ab938cddeb97f5e68587fe384e467e96cc0e0e5017e5d22d14a56db32e98c7fdc49256b02445cb69205b118c7029f4e3afb6e7c8fd7adb7db0f82a80562f9a87854346a012d6d995c8ed2af57a29bac4eb3e20c08a884f14f471017df57807a635f7bc1a5cfd5682fd3236e64220bee7b228bb505a16046b540661c4f1ae9eec7c774dedfb954057a298d21faa85f2d2f69f5552579c2f2d024430e242adef71138b47a1cbab5fa07c008934e6b0766c2fec31416a8bf28dc313e07788a9bceecefdb4ce420ef17d935cba1c7fdca6469dd77deddc2f01d9aca5eb144040e78f00bca731c7f91470d0685dfb76ebc2eeeb7fc39c440dad825246cd49ef91d992dbd0624d84668ddec3f075090095c53b0a4443156a410b11dc61fc653b62e631d47542846a308909a9e91c961b9383eca97d53a5f4d5058fc0bc347e858aa7b496eff2de82975560b2adc580b9405160c2a33d8621c3c8c575975dde817f81a8d484185b66ab0250d17d1ad89fb69b1e104e62a8354f56873b3ec64cb24376d76f77b92653426cb03346a7405695fb0ea9465f3726cc4ec8741c329ac260a3a0633e4d56709ccc549bff299ba64fc3b9476b6bf53a46913766cc40ad8e6eefc03b5ac56287fd449d3d55969ddb4345dc9f6526ce91926b008e4d3de3581054c1e5ef0e5e431229f32bf050c4aebfbb46a3ccf611e6e877865569dc047005bed739affaf1c4a7710ea5c547122e9182ae0ed350a58676ee27c7c24294c3a8823bfb1aab8827baedd3380fd36b01a0bcba4997984a9e9354b8a626e6b70bef9795b3544bb538210f72eb57933eeb814d61d7438a600e9fa9661f458f845295e7a9920cf011b0793389e4fca1e4c481218fd47f8b81c598129690651269b31609654fbb821db522f8e1c766b00332c3611d92c11c183a6b968a3e369bf6b0578efb6c9ea7949a348d48c7a5502221b40cd27d8449be2dfc59a01051aa06a6a511117e6b2aed898310f75f252b3c0e085082076e75e496545bcbd351946c352011f65d1562f62f1695262fb47b5b20cd113887b9ee1cf20f2e42a40312e9532aba8014226baf4426dae4687104b7c11232c7a1987a7570cc90ba784ac79a0dca16af82d59a0e28a64c963aa543997e9e9a3ee4db05c718a5b018cb2190e4b79380e699d7e8626a25b75b35f8a92d5054240b9b506038d99ed3011983fa4fa1867498d81b941bf13060e7b60dd02d77abe5339981462c3fca52a36b858ad40502045e204401a6657ac92a6b92fc1c4389ad2b6af382d40ec8b1c257687b7c32d4b86434640ac070d53832ae2990c882261a1b098b707251d03a061ea69e95a63bc09ad0f3a1d8cfaca3288428d1f3b73fca31fd19974d18c6b1345423f973ea010753ef995c4ad181ce9dfef47b4a7ed0e6a9fc3ce4d2662a427e888ef89d027ca2da275698a07da4256c14e4d7859b49a5eb49dac6c5afe996d036ae2d3ccc03dbee02ce22d709b59845f0e4914c74ca0692ab49be680a0a48959e165ee7b8a333b983eca9603a0ce87f5eaca6434c0e205750e00d0256c4b6e6d1294c22517aceebc61d5299f5bff32c4612d7b7f109ce9c4acd235465f1b43cf261b8e0fa01798587b7128aebe54abe11ca2c8db58146871058ff4f7b75bc32d4266c3aec570691d48989056ce3a85c9ae072bef31381c24259512990b7199e6f0a69151b1711be09611e39ab80022704b3e6ec9fa62001e30fd3367094bd3e849c8cf79bde6b19cdca90e300321842f36c70cca07eaaa0da71a6a9e532fdaa9ecbb71ae4c91e920c54cbc223207816fa237c48e42ae2be99be91f535ec6eb7b1d8471f9582f8d7f94042ba564e019a0f89d1f4525b3e7a2a87ed8b642a0b1f2fcd7a40190f90a6d72f094537fecdc345acf325a4acb2163fb69ef12a6ecf045f8cdda50ac397b4c16c70089c71d0b57183892e97702712d652b8b0d64bb3a197a1811bdc0fcee2023b254dc978e28bea318f9a3c47bee57314c61e24915e323fef68eb2a16860e31b8011196c2079eb158b52957ed33c581c752afe9309e2d80761462672e010e75d2cde8c9600c6252a476c3de8160f2a8a78f5a9763ab47bd8ad221f25447f3bb1a454e262e0522302eeea039ba52f6a64f70fc0069bfb92de87f10c7d8425cd9b27c4264fab75b3ca78fc12736c627d32dfbffedac18ae7819e55ea48c137a48d768042c04cebc5e5c73930b8d10af54ec43d53c682bb925d8b66e136bf80f49420c4333818d30b4dbc3538146c507471ff0fb7d0578de52ec3bfc1a1547d65f544aec220396b23df1454d364c3c03606f1c3e0887178bcdc6eed89425afd2e2e670a0028306aaf50fbc9fae673a6c6bc412e4ea6f6f7818bb687b149e94e19f2e760b449f36c4dcfbad768692521054beeaadeccb828f519409a197768eeacac051e457a47e92a3c47dace8aa77a0dcbc77827b147f9a7079e1ec4537f8dfbfaba75bc49ab8e555e4a6b837fb574cbca4b6616a1f83b92822aa2e6fca66d8012933662cdead801fe6bcd046ec4409d650f1366314ac0cddef3bea78eb0c5f67b919b826bd5b5cff881468ab8c640597add1cbab772d4aecb48563a1a27eb5d0e0ef2b52ba2a05dd6ddd5502dc5399824a7ad85af7af327ed34857d9746c024c437b1b61b64c7a7a3f0d99e516f950fc7b4b5a45faf7ccd322b0f8886367283527588adbd7f39e4d875702be04f4eae0724b9cb35c9941b3e4ba51bc2f84b68dfb7b6f9960eeb9a5a450b8f712abab72da45d812185970dfc8897856c96e0c4140c80618394844640031ad3690326a23846917812eb9c1cdd3488dd8343c60f063ee123e0f4d13db8b83b23e219e896ce8420fbd8ff2af691b9e731d6f14ba3ccad3d3dc94e6d5ad2ed739cd946f68197009ec7dafe404ce3ee12b98f154ec668f693c638b3002ac3b2484d9478e0fda5be468697edec6eb7c9222bf57e4e9663750be8b619ea39efd53e28aace1c4f84a8a85a30636706b25e8e27179907b0eb73fef4cf1e13babd374ca3b03900fe54c265ae460b3518ed1f46bf45323508f0aaa221d83f6507e0d14077ce22cf3697f9eed9992f6db3f812952e67706265cab1b66e1afde6b5af5256459409d8c978f4762c36ae2f3ae5215b0fcb49aaab2af709f08fb5bccc22740140df992c551783391959844ff3db493c38dfb36f0ca243df6ae4c22862abc2ddd8642a6bfaa10a7eb84378258dd242954f545e44db068696a3c73a1ef01238eb1b0b17580bed80fbd5f85f76ca03e202404b9f49f1dbde654ec668f3f91aa3e395ff0905817f1e7c18ceebdc326eba5c90b1b7b683810e28f8887ff71dacb28cd4fada19057d0edc878e0734893203bf5062bdfadd74a87786e9f8aa93aded5808384988ed46098e2227c431dc166109920f732e37d4c063be9e9bb90f358f14757f040e5bf53a044bfa5043c5d8ba22e808adb3480c61ec97887c8425358b6af8a51cbd91dc666c5f8d68b1945b01d4d11b3150cb54d24085be867e790a376486b41f4ad211756a8141748e2a3627f90c67f2a695013b634dfa167e036549af0ba3302e4d6a0b0bff2f59eda3954b293dfc7bf74729a63cefef8c2a774716c4a4c8dd059e8272d35724345a8459137103d8f9e649ebb88421f2c29a7af0127250f9d8a137cc270d9495e4583101ac2da1b9e2807e31997e8a81267b33c4ab4712f3e2da87c7edcdc117cbe39fd5b9aff934441f7f1ad356f4356e62c7496f474433aec24ab8f4a5023624fc054b2c8a8dbb116747bbd391cc22f60c37c5e20703102c74186cc8db90a64c60c01cd36be2d4854b7a1ab743105f73e483e48e3230b8c699ea51587f385f32977ca9c3defc24af23f47f303a293a72ef96ce2d3644e07ef308820231c922c65e95cd6983e90d80d7cbf4b5b5289fff094510cfd255df3eb4d8d64d61620550ed9017187dce9dafaf6a36c4183fcdab13c21c362612685c7af695c4c1178aa096e4202133cd81109f4ab331fe0668cacb6a416de49ca89a67b0cefdfb38e260de480c86b5b015acbe3bc5bd6ad15e6774d6024d6afcc485c60285a6d8196dbf9235355b2a9e7e2b0bb3dd486998d47e67786f7a24db604cd53ff020a18bb946bffc56e604ce08f437d310c7cc34a31e1953b23d4808a442f79df2277788f479b45d65e59dd9f2f3e76e2e999fdff34bdd39fe67a5f0500c53426671d7a1a4ea789959874937e4017e27f6b52f277d49c2ecd05b9f1eae44aa762eedc4ba6f7cc44686e61e979cfba0cbf7efa89ad65c4319437622e1844b04015661487739df7f7c7adcc6fe5622a629c6549069356a93ccc723b0baa4899c314a603c63a01d54040f6e395e1c66001a609ce400759998750ec548715791acb10a41771fadcf9db163039bbd5ecd923fbf644f26c852e94245c66f95678fb7f76dcb2cd4a65291042695b76aab0d00247c48973b614bcc7bc7c489058ff3c6058c914385fb568f33a20ae59997ad8459d4df5f15c23f22a4d99d45ba3685f0699bedba74b7afbc5199d2c760960ff81795fa6386e2e3c6e4a22c07b576b4dcfea52e4f1d07b3d568afd14b8dd58e18568c6228c1e55855d36b3b93adb91c0c61e0b59d404acaeabc39b05fca6f2c121ca2d15dbf586d1c9be47d2d5691c4748e407caaf2e233cc1aaf9edf6f5cd72451707b18accd443870111e55ce80a4dece242f2df48175e485a20723e47b23216baae075d2356a3082546e6ddaeff8e525f8a5b64a8894f4435955ef83c3419a2290574e7a174e32bd61a673646626f6c3216a358a3b302ee9408aa4e408e23a9de5266b55b20e313c45bd886425e6c960d38371a47d7bb819b8f4e815f3102c78fbc53b15a16a395c7de225bf211d6e850352240fe848ee665546dca15e89cab7a9c53b5797f9cb8ee9166a21b1c0a7717b617e387f9212cce517eae7387a0be4fd2653cc805a016dce5bdec7703c0492b8a6b4e36b103400ce46a5d8dea22c5432ed9224adce1f2226a74fb55d5c18123a8d660364df7ad4618f29106deba299780e5740bcfb8426100fcd695b24ced460c3048752031ff2ca4795e8d2313a62334bee07b396ba606f5a2c6dec3fa4676cfacc8cb80a81bed3d10fc360a1a6cf7b13029bc1ec9a4b6011a8690fe92289c53ecccbba0109daed6a0186221819616c45392a18be90280897e7ed168b9863f84ece5e9c1e8ea963fb0dc4a69fd09e16708adacee88453c4178ea08fc85889d3df8c7c1ba05ab1ef394fd9773f3b959825289569622a5aaa92c652766cbc1f932a85846effce7d214fe03343bc7cf7396e9cca06e0504bc34728b981b89b1afa46903204a8f1b013e417bec45d4b8491db5d02ac205c9617271b6db39cdacdd383401bf18360f40e69ecb416232fbf31d4a90de68d87bddf53864d3beb9b590998d7e54a2e87f5a2c09522dff79b6e6856f641e35b457f89f32a47d3e9d57afebb21c7dc9119069e53b092e96587d4f9b458e6663c8297740e8c1e7eddb0e5fc12efee1bd61ca1da7f12db0825c544c6ecb2f82e4d5549bc7dcb6bc4a04ef77eb9edcfd7dd61fa3ba524cca10744cf2f57a7a5992ad74d68e4bfb9e89571fecce0eba190f723a03d509f8afe8b58c00a7a484c6673640115cf8ed8c8cc69d16fa0211fdb5d894af44a4680cdd57bab6f9a7fc4687df8690c2c60fa7df131ccb1a9b9bb4baf53a2a4d6c42debe9f7ba7e24c66ab33de230d6cd5df5cfb728f218657ec4dda8dd16663ad15a263ecb37c78ddf290947f1bb7e3caf8a67b355004c8af535c5283c1c86f1a06d2045e165ec655edf0ba72710cd3a26cc1534f4b0303da09ddf475c45a8d8db45e70652c370866c8dbe40227e48d0bd650f5ad3822594091918df47efd7003b9a536858ba0a5d67eaf4653cc82c75215fbeb495537f47c0b50cf3d83eb5c5f290d60a7fa470116d2175879ae2cb20328116dfa9ee2064163557a1c6e28029fcf789fd4ee87b872242dac1ff484d4c371c45be357a26f5d9902836ba51ac02a917a33a5ee6e3c15f96dedd080f19b21cd7a246abb3524e86eb40ae97925efa6d657fd9caf470813ea435af4f66532e9b12d42ba08b2d0c5ab670aabe9aad9cbf1b0799e83339a56285e14f5ed2e982b236a695fef87ce2b4f15b158894458163c2149a929330f67d596c0b61e7db48274d93dfd7003a573c0213e3377999e74c8737ad19d7b71bedfa54b76abcccd14ef7264448f56b5278f8c58d9bd8950c564f1f9a453f07ef7a95939670148475907ba58ad98d973aacddb7286e5294cdb111e97c2f863e43c1791273d3a1f9bf012a6570d55bd6adc08c743f3471e7bac5232aa13552fe603d0697a5c3df540c92ff0a9ff86306fdc7b3d3f9572315f7c62527ab4aba69b761d8daa7066c306396eea1dda56dd77748d30163379c1e50112d7a88dc3eb952f3f42e7d579ebc891202f422ebe6ee16001d16304f0ad693c1f592c9408b0b704c50d057d6b207d688867f54b85ad0d2b1af8f84ab2a1470bb2d676c02a9b866434e7fc5ddb79edfd6113cff0c25c1c1de6ca6f7fdf76d057d0e7c3fff20970464dcb6bd5143b1b82918f3a0e9b1cd5d57ab1bd74dda6bbcccb784c2e4fc1fffcd3bc33da5d783f2c9138e683b545b993d2e32eab4142739ec415a076244e37193277d5b31cab026d894323a74e403b5865b96b6627a01a63ff39ab49a51dd3584b28ca6683d1febbb94d1154a5de5f485cc40dfb229b1ce5debde9c21bdde69d482a4219402b4eec5662b5bedb24acbb4f5ccfb4581e5ecb39073dd81c33288afe36eef8c807fb32dd51fbbb9609b6da9c333d8186fc9a9ef597838690bed73570fa903fb13f708152dfeb21688e811cb8e27fa3e70e56f8dcf0dcc0957f379c7b60e5ef46d70d5af1dde4b8412b7d7ffb2cae6a09aefce8f60f7e552bb8f2e7a6eb065ef9dd1cd101e8bfbdf15a58d50a5cf9d94d428c1b3510bd1f6fdf3dad6e0daefcdc1cd2c1e8bfbe8162b85707a1ffff26a5eb56ef46593f867c7328666539200aeb2b89ff7a38e192cff4d2578a991c5cf973d3758357f86e78ee8195dfde3c4b2b6b852bfd76fb12bb522bb8f2776b400fa2ffbf19e821743e3743ba30faaf6f520cd7d521f4ffdfa0b41daed4c3e87fdd7e3d9a96706da757cadc802717b5f23fc75718a96d8f3ce5ac7d95dd417a76dbfd779ffa03c2bf285b2252fb818b7da97cb181ad15d496b080ccb2bfeb0deec4ff3b5564e9f82a69267ae22223fccd7131520278809d19c98a57a23c29cc58d259416f226553732855d75c4459839aa40c9e3b968403b88b40aa6f2dbeee540e7cb63e4193581be0829889f19089572fe521be705c14b8b51c25a90920589e15375e3da29ed81a34ccc7d8ff40b40555b1edf3b6e32c81d1d4fb785f4a2d57130cfcb26fbea5e2ad717b2648343bcfbc25711fd759f87f2ffca8db683d8db661d30c56cd7857d2aef0a48dec42e91eef3ec251359bff2740ebd937dbf46a2dd37fddabec1436e84a07f3370fa118e72588a7d3ca98b2d3931c5f69f77fc51755678bc5c94da2eb256dc5d17b824f44cb568bc1c0a287d0cae1ac78c35c7295985459b4debffa41292194717b5a8ebbc751fddf49ea8cabb1cbcdcf82c0ad6fd22c056f7af47cc7c26f6e241440e6d1ed85cfb9a3bfc5a826c7e16b06d3cb6839d399a1fbdb204a221017662c46881edede7404da53a4d249725970983ca4d477dcf2b0fb7af55f8860ab43df51979e28440a753c74993810ced57958f57e92c5cc1a6bb351fbd7f4f27aec3db717074bec5ff471153850ce84f03d7a85b1da00473e3bb17eb75608a25513be592520ee9009a4ab6c029a43349b4de0b5fb835533fdb6dd5aec4543e465b114500d9ef30084d8dc76bc5972a69cc0d0fdfec5bbb1f34179f0ae2c61af096226d74b1c20b430f9683d55542c30032b50ada3de729823abafcddf3e34532b0c92616f33e9425cd62c6dff65cc81b7a651f8ab348f02cbb2291076eb472d282c978c3ed436438863f873e4fbe49afa072bd42ea8bfe8071a8fbedf177b141d2dbf57151f92d215d33bb644ad20ae540bef20df28cf971a3170c0503fa09e72cebf38176a7773cf9f7f9640c9e5ba1aef2051afa5108d6d2dc35e5716d91097086f04e22df85626215429bc1ef9059b3ff525688023204fa4680429c2ac529c8f95a45e5312f9208e8f93e6aada28ac7867c1ca40b3aee0568b6e75f975e9be24f8785a0cbf784ce2d75662b4e352aec3cf9a264d967e1cdf04144915f55500e59e7a90869317a1a93e17025aa69c146389765d081b00e25d50a746c14b078694188961eb550e24c301cb0204f371d522dda6b2391af9586eb74cc3f1268a0be0bd6fe4e68a0cd501b2749ec7086e48a5a1be5918d9a24a8f7bf569b71ad6a9b8943f1904719490e834a9ccda9447907437189ca437b3f5407ff0c80bf20304d0b7269fa08aa0f9983557c9b691b3eea9c36954b8cdc6217307713f01c62899dffa7856a0c2d129d4e0996c0e4c37eb060032e9254617beea0df51731f43ffddf18731b4c6aefb49c26d16ec7912b4985e00fdc156af527c2144ffdd17d7a6c2acfe3d7d7da566be4506736954102948480533c35cea81092cd3d3c5eab5f2b6d88e1d8b8bc9771642b3fbc95b79b0223c63800087688a34a4ec953757e2b1ae431ee1c59d154d378a695d2bde011d040485198a611e73b63e2602bd255f64fac408582abbd1512cecf588b870693017da41887ae5b92f523f5ed6930c8f3440e449fb202e5c1b18339d514e45948f6106b0cbb1f8974bb65c9586401a442066e81c706d21eedc8de90098e1e716f4c5aba39603cb6573d3809deb37bf0949f1918605bd8e8fc3ada6c33901ad753b071551e2175418c17db734073ef9b0ff4f7d2971540f9fbc583a0f3921232afab9edffa9a74dd9e192df7ad4d6a007ea02c8d10350f5fd86bb90719c9acfcacaffdff1fa354ba19850ac12f52e725b95230008067ae0c6c3792974e7f5267db7c1e8704b8c0b35de5757ce9f0d58e50c7ea10933af9265342c874d0f32cf440b7c22e9a3cd6fda6178c59c787a03c8d5fd91715cc4400a33476a218661be70da39d4a96320c1bd2bed70a239434e61b68770d851675d13e738df65505cf3d80b2b1fc2041ea7ada323e520ac65a4413bac670503684766361d6e31acb6e622d21077936e543f5ccf7695107d372220a2dca733bafa3abca5017136949a80c8a21476d58d20bc593ddbdb4b8d77189a65f48de8306144a210fdb1948d038580c0523b3cc1ea76178358e440f83de217aef05a01da81cd89bc02098fe3dff22e4e4bfafc04fdb4264535c8b6b25147dd1d294221c68acda3822aecef4df0c2258839defd1509d1e976fc75e12378cc5f902b599dac6e40bf2fa63202146b1ae908b2f9a2a960862433a68eeec183684bdeb08595846d578294e30479f4e8b01db4c5e3b47fe67bc34b3f3e8bd1db25342560b45cd1eadbfe9ebf53414a5e7f31aea9b9e7af5d448a487fc3b1189bac1726ff31b4f5bc742657d2fbffa4e882b3969b17016d7f4ab506732aed4641bbdf370f74aa3f6854458011e1f633cca70b2dfba577a019c90d9f025c68559c8ecc320cda896647b55f4451e40926ec81a5ae710234a6d39e544c6ef8588244e60c3bebdd41b9bef74c23ebae048799d62cde649f34ac94258f857ac3407c6922caf91390b34501784186601c41d4a5690557985a247f7b02dfa39df33bc97f1700d39410032609c498f08fce4b5ad15f34516711c1aca68d65928b7cb59480225338090fc0b3a9544ebfa107e6e19baf478a80cf0b8607f6c986971bcf3f0a0f0a34ec5e1e3232f1631ca83d03329469b8499101131fb7682f4c04fa9b9bea3204d0f37c4237020e15a8261a1a57de0d9765921226931d9f6694fd22a92d5a9e79d2c68eec661965b29ac5ec9c1fe95f6a14b21bf4c8b2562f0134d9ea951c3905a257a35edc7d3f28f25615681452ddd52edd250b8426c5396437dc3ed57052b3d22a92619d2fa4c47dc7434d992d05b4a3ef05767054c980a126a483fc4e560d218b0f7e3e42bd4aa79e7675700c25c879827b421082732e7a29d96bfd4e0b5ab8c2a4c1f4a6841d8e4acb9f22a2a42df25b73416b123038e8166c66596f54324973c39b46bd85a1f6218cc14e244af308fa1426b8cbf07980fbf912541e6326cd59438022298aa588fcfb06c8662d4391ea38f8481182146c3ef15918e352c06e7041e479fd177ace664081ef5436801c042989440cda603c30ef53177a1f73e987419a91be0f52a1830806fe62a57b73a4c1ca261b9fa14e542233e929f72c2644fcc20d17a5f39cb483b383b4a5ac5a473c3ccbb105a269786f8a577ff939fd2de4d5da078847c59e14630ddb2b37c2909d584c2090670151b04d2f46efa65b3b65c7b07732d36e76aa9c7300b95fa1757020a2777fa921dde1b49ecabeb9a9bdd8b122b8202be0734b9b0642941d13b5e305bfa0905e3a4f5fe71865f05c9c607ae4e0c94308113d2773cd72eeb30794a3d057100c6ea14e356ea5ea9bef8ce8ade0fad170e0197c2b6b1147f544357283ee1f6440062e8f909e2bd6c17b56c709fb5d789614ca0345d0b6b6c8eb0a3c8fad56d004ae3160e99e0102aa1477c3323a92b5a3e04ba8234c3a5534db3238810793c0e564fbf43a6acdc20ffb9e36e983c6ab794d310d2d6c26ba09595848a23829a524b93d2b6d562e0ebb2ad0eca772cc943863c6d0436060435b2bb12fddc00319cf74aab64400e91f105152172b472fff0f86dd576a587e744a0dcfda7eaff383215cd42b79bc6e4df84d46a72840ec86109d01e22e00bb96ebb1be3e7caf49424456a21677cbf53ba832dee684c2a343d1c8dc64cb36bd6cb7061fca3eda59de81277144f7125084902f2987f0043e40dd0e3004f4ffef2df35179bdd450cf487acf3b202eef0aa22e8c253e9c0a28e555cfffcd9239530854c096b4b474b409d4760a6bd85a559856af0a24952d40e9bae5d544d7c546fb70f0670796090f324a57d1f4bdacf061e7f2da377783ee620de59835bfae181cad6c24d563c5f73ba4dc823ea8940d1d24488b8710dd5e11bca777b9bcc0e0ae4fa756308c03acfad0ab6cd9a38b1c3a872d541e4b4c9825e7dcc13bb86547804fc0d11cc54507c46e75d61662c49a470ae04785da9acf8d3a9cb4f3e6779ecded1b3e61b9a86f6e54da21b67c98b2c7577474a5585fe285aeb22fb6bb07a060648a67ad886309ef51e412ff8f34e0772582131e96476e4a9478411d7a77c01b5690d79c4162be3c80a571fb89d4e3ba18812f0f7ffc3979a4c723ae520dc005b1fdc4da84f4c2a9f8d135ba26149c182f1a08c6152362d24cdf7b142e9c7833dc9f43172c9462a7d352228e8178429fb2cd006ed929aa8aeff2dd0468f0eb67c7dbc91fd45ad719a773d36e63e6a143c1a6ed138d0802731ba4a9ef5e99c0c8fb2554c40384581ccfc5caecf0c335232ad45d63a0c8fe077e74471e537004c1c1531a5b450d60603efcfb10a01124bf8af10aeb64e2879349f431bd0c3700740555cdcaf6b585f2f8997a8338a5f056d54d3638874d2e62aedbe2a5c93965a81b40302787bc5f46d4ae893941231e88bf41c719ce9ebe99f55ffec6e4369255326abe8934ff6ce267802c71dc21bc8c0d48668405bdd494531cc385d47ee8514e83ac16d0e19d35d57a43086ba8576fb0a4eb83c4a5c0e2bc8646dedcd65b8d2777ba1fcd6df710d20478bf17ae227072f1b6eb29943bed0e396f5406cdc997fbdbe24a423ea09391e42ff1ddc118d49cd1f6d12327be7c283f50050563cc695058c38485d202292bc815381b2da752262fafb1b068776205207ccc6f3c315f1731f20268958e3a5cc33dc3b203ce30c93d6843dd146048230b61141d334705460c071f1beb520118a7f0e82a3e412c51da5fbd5b5f5b121505eda7987207ed359eefc0a67b54797114184b83c58b613fa2fb3afd96b984168a1ac5d062b2104c79f4470f8c9d59318231474691939fd9b0a5d039cae2323395121f0509b515f71ea1190024514c7baefa9255f0e42e4619159914fcaa986efdcee3663b5ddf6f98815e819407c485dfc142932e59a1015d4cc1a5f3e05b4dec262351f0390c6a2be3d3aacabd19992500468dc25eefb351b75f13f848001523c02b066e899377700ba2c6dd81cead1c6c02c16df0aa1020ab50902e0e59150994ca9679b26034ff77970f84a24cf97c92a98050329c3cdf0a98b7041f77e6466840ad5528ad2b72e07d9c9286fd00b9d9357c4bc8a460970ac2b4e39d5f67c4424c98c508358dc897fc7a7c54ccbe34f870718e8876183841ed98d32c2190d8d8f538c1ea76d1d3344c4dce8edd605a8d6837cf92d53dad54d77189431466b1741f5cfa146de2ea65b6f718f6fe0c81230a801972c8d5fe402cb5453bd8f665ff831142d181d89da8402b0e9e353a30b79b341b1b580e46ee5eac5c986a473c4ea49d7576219e891b6015ce31910cc2320a2bbf7f53a8f37f6db3e7dc8149433b13adc7a2196e18fbb57e65fbd3f678a9a7a9363198ea76c688ce548d40eb9060e981ac8348caeba1fc305dfaa2b25092111753598614b9522b403984ccd44f177d5536d14cfc287ad487dc763f4061294621998f5e7c3ce98443ac14aaa012dce14b5fe968cc82bfdd3980b95fb7337879c158b69ddd693e0fa541f5463d3c98a607fb607b4bca1126a50ed433b953384ac7bb3499341e38095ba6e82b8b09bcf863e42e10e7a36843b8cd8f4a4464b1e84d98d9df6ba206f838b80738e1b3ecf06377fe72ec6b3412bd47135f1777d13fd9c95b0a7c0fcb7cc3fa1523c905a3385e72d157c0dc691006306389da5c5ad93c9695d5c3c7c218ada60880239d1bfe7fb0387252e7fafd87956538fd71964d42fa877fc9bcbf35a3281ae21970952b7fb6818d163c4c148cb1c714e6c86b00b3f997b48809e5391e0b38bdd689660763fe8f629f12c18a74ae4c375c5370fcdf93f0b7c4ca24de35ad5b8ab7652c0a58135f352840d74c8cf8591056904aa4087fc8812a8eb03f8e7e2b417944d5f44d02a5fd43175d1c61d20d3fa3f1c6b2f110033f5a85c381fa9466244af634c024a103a9a1e232ff5bc3ca098b8c1e30df206bc79f03a1602c5ee4b9ef46f338df636613bc273fb749f518cd4dfa258844a84e76defe6b801586534f64300ac9de3fea224992ddae094db9e9b55dbe23a64b718fb37d8083354e299d50be7bf2d4a44b31326eef0264edfba4d33b492a47b40664e31ac9e49c96c747162988eca964cabf10c45fc0344bb2e37b41655cdbf38b222c3c68912a96aa1bad3d46ac36ff7054b8b7348fee959865352ea944f37cd2fa118f282c4792326e678cd15f44566e94f1ffc0171e45baf6c4562b2a83047e5494aba507ca919e8667a3ccfbb1c3c2a74edadf98891d93748f9334ed5592b9d91eabf4dc995ed7d3245154c42e12ca97d5815deb63bdf1665ad4f55a35ca16d2e152fadf524a22c7c7011ab3c5c66eb946626c9ab414f42506f6280701ad66356f9e4845866664d89ac87d917fcace54c3bfa549124833049b3c4b084d45d79e6c6ac11bae50b841866bdfd9e3989e8936a1f0268f66b0eda32456cad39c21af0727e70082e4eab1f069646f41ed4c19fb82709702dfa983f63ed1cbb57e04f0d0d82174c12cd45a07261fe76601991bb35c1b298b07f00c7b58d53f429a16d222f9550768ed8e2c36f6e0c25d31bafbfc2c738af40edd988365edaa08b984a4472b067b1805a7b3db40784c0196614b003f636e541d1150d6fc15d488d5eb1fc70731079f43238760289023fcb1e45434b22a92526f3f769c18a4482cb81c7618e2543b4f78040355eaf2d177d87a5c2e3a4b8ea2540572625a69a0a5d43076f8e27b21021d35f5c30b38965c329849c5acc1a077debcb5aa0b6de5c76abe294a254533dd1baa3d802bb872fba24b958cc5f40e99e232390c0e6309cbc91509e86c8d82df7695a100034aeb1c58a5c0894095b82b836c5cda655a4c55b9b67c4814d1d9067c51b1f0649debf2c0053740d595b9d4fcd943e69a526bec70bc6979b5062929405ca8f6cc883ce4633261bc5ebad00f56a6e0658fbb4335825511726b4a454fbac6dfc6adff83d761752db5e1eda6fb2d49440c760e52ec1d1b8fc8cb6e0353376afc475a6bfb8b667c4f454c2375afd24718f3ab5f526cdf54ffb5b4e0a9d3d159c5882739b73a3bbf7d4f916aa63435a93b1afba1419be5965b554ca46884acffee7d7c12b6d1464e7bb4cb4998bb15d009dc37fcd79bf63f99f2c622b48eff075d3ce8548efa586fa44e390a3c17af0273dcf2c5c760ace2b9823ce402e608b5eba25da103e06ae51613d6dec2e43a8a36b0add44d8c10fdc518313c033786163d6e9c9a73aadbabefecb9809b8907de55affd90fe2a519057272db9a922810599b2ae7bbd5e456d1620b1d8cd3f7fcf7dc48c15ca0efa72f1628bf77566800cc2a32278ad20cd04e66a93e1596a881f58e550cc0bdadb4f15217d8757f9decc7907fdba7824d2823c3ce4856db187bcdca14cf961ea0a0338b5476dc7a94c4a1829cf81d0419bcd6028c2451e61138d124a614f77c4c10e1fbd1dc8c93ff9075de8cbeca465ea4a33aea36863e5db88a24aa9037102e110f6482e6e2defb27771705c5558142d4f539c25ecbac71b89cdd8b089cb2d261a4842bc48e044f2518b54b769eb03e021a8a0331fa89a65af74086ce0551fc767c92d591a23db01df19dc0f79c76b9960f3319347536b8c8ea19b2910d0115173567d7515e0d8b8b2c73cddfd84d22909ba1039324db8f6f691c1151761b469056320c4ae07ac2882562bb1206441e2ecd115549a5b81c31b74c94a72847c2947d5a123c7b798f07a12291444d87e215ca933e59a0486b14bdf613a2f4d24143c75513b4dc9e2198a671afd235108bd9c2ff2bd937684f23c58287f8e968b5041972507c9b6b4f28360f2d1696dc43d0e4857bff71fbf1affb7c96ee8d15b72ef762ca7d7bb8e7dbb7dfd3ed21dbb6f74ec11fb36bbabd79d12d0d5328850972209688fae4394e104cf525105b62ea71675f9d475fab37cbfe847dc83b8857022e8e37b17c01e7d2a9d8a2579c1e351bdf4c91ccfd30fa60cb89e92cfa742d7ca0a17f1f8d08c74ea2f9bcf90936bb629856ebea2fb19852ed50b43b619e415d33eef95f668575cb017218599078b75837a8627e303e478011f06c978a1e023faed81da9301bca22d6622018c2b0f1d34aa10e289360318dc4568d78fa4d2b49f0ec0a0e213bec6d2a4df350ff10431a073ab8d81044133eab8a96f101e20aa267ebde3b0c60b3544128d6e063431ac1ff377caab0a73db387dc63702e386ee1792cd5879656ee9dcc5ee9fec373f9968a538423499cc85e5744900f13d1f4924b1fa5ff78da4c1f16a2e6d545d6850d5153540d957cbe1b82f4f384e871f3da3a8fd42d0c4316f319de0bd587f46afaff5b4a1b4aaa10c263a65a4b5539d7554441a607034511de8ae31fba9a9bba09e9978ca333437bb543245b87d26f9c3854342a401975f595946eb3a06599061b02ea9b38ba6500268436e1d2061d3208598fa1b426d43791db91641c6aaca1ba0be66f46d54a5fc93366033eb41c528d60b9478fff1814acad524a30ec7ce8bc35399547821384a5bfca7e626b1040c7d33c43472ac25769d8034e3146894cd959be380bb01efb74c069679861fb8a5be89218048e930a448023bf2683aa4ae00487bcb6bdc3e602a7392916187010e40c4f6dbd5bd7e2d037d42f896c01a72e9ac81c1c6dc3bbd8f26c6f697671ecc2701147b81932b5b0b02174c183b8118e138301f0450e749ee439f5a6697b3cbc99a1d6dcb585e81fa4e84571c242f9ce6318a6f2a11dcdeb5ba5acde4d3d14ac711d6328a431c3e9b791b1d27ad88a3b1aa9873da67922272e6c26060965a27006aef89e692b12be31325b614ec0d6c6270777e79111bd07ee580d0fe1d9a97045d8f3b34a60d270d4dbc191a659177ee8975f078a11087f259bd17df83555242901cb9e55f387dc49f81e92486f2515874d7fe342a84acae82744a10870b0855bdfd7960a750ed75cd66b77dac9373455f4e5403b932f37ecc5f6cc71e9be8b9e4e3b6a8506a13158af743ac28ed4391b469d461b16b68e90a1596504d57e7664271eed12a873390abb37aaf8dcb9f2a4f0cb966b53e7618ef6215fa71d8918681a29a1f587cc99e95484972fe1a75b49f33b66866a2691f881bc287a817435505a886663e7740ba1d265e050fd7b3f140330adf8fb2f45c85fd131da31c4f108ec5cb1ffe9c32f52549d66cedb702f16e5006f1f0a27d2b1af86f52a8f2f57add637024fe82de8b7f29148c74f4169bcae046db22f77b05011a67c686eaa406098e4cac9b4af6907f75b82409f6e162faa570b70fccba046268e14d27f76613fcb3969b959defc8540ff6d2e50dfdcc2ef409ae563919450f52a921581f324f41589cf8953c6d3b8a1b81ce464b52c773de9b6099a18679a96dc940ff0876462b35ce0af96b5763f053e91a49f00e8c778aa9589701560713e1acc29deae4c55c887e7c3d20eb2f397e7ce8bb61d3a74260fb098b4eb704a97912c91b7b1c06d360439b7f83202879c81947e5478ab0284b4020d9ad6ce11f22e0e112591ae284d90c4a6408022d038f141189d8d88178637c00ebe005aa180b307fd037a1c6f987c495858721856989cef8d6450365a3762258dc87c45667c8e92c576d00cd07c4a2320c3a858fbdf588ddb949c18f1ebaa0d3aab2cc27441cbd74b137e498af665313452d93b67ffabd7d0719c70d9c62dfaf10d41540ff1a3e40688e08fd174c63e68a3be61e7c9f7ebc82d7011880ec48d9a08161019cb578cb67070ef4b9582654135914bad9d4135aa818485ae92b8c1b90c5f71467964e4882c06041f4ff67b00e5bddf74d6ba133a53fa9667a644e64c620ea67ebb0165b037e5cd3727dfa500df2eac1ad89015247eb66ffb4e744da0419a81dd84d6a8f2aa793f830bb08c30b77d9e8b75f67428bab25f1aa10e85f986292797ae93bd8024d27a541b8f8fc7955b400ed54600fa1855b90f1b2a462f86d6e3fb00de54ac73cfd7d293558407695a0e4c3da13b302eb2b7fb90a03f6577ac734d3c56a194663b9db14baf4ae6086d6d861c909148de6acfb96b069b3d4d5c88772ac3f1e56ccde589ccfa8381f421574517b3519e2783b02a9b440dc93236bfc3cad90e5036f72ee138146b87f6464d4830c6be4d4db807c10bfadc808753938fead44faf34824b6b450e03cbac75f91882edec619e0901ad8b52e4a98e2802b91f3b48e73b34ed2eb8f4e10fe003338e60d0f478421c147ada4c99001e4c8b3b1063660e524c7f3b82e51b33b95da52e5e1057aed14c1f6ccc62598ce80c7b5a169486d23436d66f7ac3192dfafc81cfbcbc99b465a8e272063f0caad7b04018db5546626d9a9b03d99ecf768aba2902457c238c0d0dc5004f5f3617740eeab2b6bbbe416dae44d04c7d14ca38b0ad634746a276c7f010a06ae4badcdee374cba728aab5d042c02d7d646844bf26cfdcbd02f5587fa2569d0e9dabaa64778d595009e0417dd38629f5ba0abdc33f1c4351ae7d2a1764a19a91b8efe1bcbde4448889860c404b2ce20d21bd82c6f3c6f8bf42b8d0fef8509740121f15ab2380f3405c6b0bd5726f044aad448a7f3b69a3747b13b5c1c6941e94bccda2b7388cacd668b42bf1d829f401730a58e7082c5447e1ce4e509ee0c649db074e9fec043d7b9631668749ffc08caed3d579e098d5d2f4df2e3d040082dc03f6a11e01820576319dc76852d71beacc6b492bca99186ad01d8255f9a0189bf52d530a5ef714acb26e6cf7e6c5a8c42ac40c6f67a84844c1b61cda5b6674b51489b95e5820bef567f2dc4926d88b4c03a2e46df70ceaf317b53be2c93dfacf4911294bdaa28ca12bf32179a048104a5e42c8e2983d3b2d199471d51aa180491bdb0c450efa4fbe1670de181c7b548e6aadacbc773931923d2c7ee1e39d766c8ce40a57847500d709569f6c46db43310e8e7c1b6199a6896de3eecd7ae9c42205cd2c40f9d46f70ad61805e6f1272b269b7c228fca188c4c97fac05a572cc6f43837704194fb757aa1b7f80ee238a1bfadb3ad48a4af3cfbb32a5beb7c5aadfe54139bc9962e09903fedf87e191d0e7751cdf5fc8e5f94545534cdb0b35a66dc6fc39ac92ad6a22980bf545dc8e04aca4026ae47d5f5730d815a70d7d1faafad7edb61931ccafa7e9c669f8e2c4c2bd9d2085ff5db389bac7da6da2ddff8cc403f4f5a573c70ce17c14be5e7d6b9ebdee87554df806d1a09a8955434354b3807f436b6beb6d93bdb4b2bbbb37eda3050506ae05d3a564182795734e297856f69c139311462e64951464f9345aabb5e6235f63ad75cdd460f71d9830793a3f16fd0ef299382295fa29d24b3715896e6ade8c0f3e3e746a576bad22917d50261427d6dd93f6ed41e4c887374369d00fbef3e8adfec137e9af76013a353185c9090f9293867938e11127fe886fb076235488f0e96dbda6aa51289de30ad9f14d15e11b7c9bde9af2e8443a924f23120ab5db4f13488c50f8924a2a2c62a8181169d781bf09d7d4ad1a0525e3dd7e8e7cb1a77632e445682bf9a74a4db58ab6925f838aec47e426721ad13cf14d1d89442352aad2b972d26d9b1cc9ed92cee89e178e7b4ed760ae7f21bea9528e3e4b65d2fbce3807954dc2aa08bb90b6727ce3425ee86de9d6af14dfd449ab7d3184ff3a15fd91ceda8d3895a44f31b8a776bbe18939912e9ec85d6e9d48754267b7dd30d7415b49b72176226d255f0548f6208e25a4745d940a9c9db9121a75a01a48a0d15a76ffc6a8e4b818638cef514ae3a392521aade5f6d57adb0a11b4afc6af5e6bad713a9c73462f98e0871421a6d422d2576b9572caf8d2043fc0a06f9a37d4faf1ebcb2e5021f614383b136d77a250f663061b7e75972db2ba9411b65c91c2576bf54ab1287282ca10f87a7c93c23424f1cd7bf0ba22ce21fed55643f2b5ef67a77257cfcfe6c37cafc9dfad4ff173777a490a1de7a0af77f7ae37c96c27f919003fd61b72a710debf97accf7f08623bb4f08af2a7acf4e14f8a6511ca84b0c82a380f46bed4b4b2c4b516a494b677e73ab0f51e77d3a96830d2a120a3842d8fe03d26e76a0ff42b03e8476badb56f7f6afb55a39250a74a20cd9b01e2c1c89407a1c5c8cfdaa3682af9408c3e95f3c87bda4afecb09b23f9e184a07f9ed86c50d88b0fd45d38b6daf535ba7bc508a84b1f38b685a7b3434be23ef095e7a5f5ef8470b4cde6e3f5a68c2a617731fef7125de8347f1527c65168542793628474ec596ff24aef5baaec5ee9de2c9cebc0a3382dcec8e567676b71303e2c8d8244e61bbc18bf155ad315ef4eb94b4d65a2b95b1a255db4a0cf97d139b5fbe3943c76aff9e1604b8fffe05c0bd9556ff83791a6a615de016aad672146836167b6f0ec2d083fb61a99983247676001a1da5744a4a29add103ee2cd5034618849bc07fd447754c398c6c056b9bb77927a944352ac9d56d4707e5d1dd7e8ab0605fdd9cdc9b22a79b22a6b7755e27ed36257f6e437258154676684d6fe34571919d014f0869306db70633df8e9078a7bf76c3e28923f67c4b3ae194cbf3e75e280362cb3895549946a16c5271ac28ca2295f919dfccaaa928b521a66d6a4a7ddfa97d971ceb50fa92cc8391457c76db9744c2540f4666ff2fd25e5404edec00535ea712852f4cb1fe2467e70323bbfd3c91c4763fb3db0f0f17bbe19b10b8c838d60bcb3d8dfb1d39d504d0ce666407f368c0203b9c73ce49e59c734e39b5801a3525e3ddb028a28add70024efb612e5e008203848a283f5eb1d64bea772af7de9bf2bd07e7d339278431ea167b5509618c90d2e980582f93e965bf7ff7c6fc9f98ea86eb5880c7b8af37767ccfbea8dfb654cfa7f3fd493bce7b30320b701d3e3cc6bdcc74261306c483418d91b30614c60eee7de077f72f77f14f2c08a7721103e2a364ff08b4966b71518dfa81dbe0a6522e997e7d9788d2d267a42f9146f9d118a98842a843aab5ea29429d4df64afd2f368bef2df1cd18e79b115238ebfb9ef5cd1b1a156a8cefcd07a96eb1577d334608e18762add735ebbff8b5866e8cf8265ef99985f3ade8521d3fce577118ef9dcae458f4724aa98cb4cea794bac748a5bb430827f6484eff20c505210ff50387f43dd4efe98c5d113c016783f3837153da9e3adc8b8121bbcf687497a3486e7b300ef505a5979407e37c4a9e6ccf934ef79c3c2ca3daead4560e9bca901dabe53bf5e283178454bee76eb19604c89f14cb7e34f9de9bd37d4ae949e23b9529b585fc3e330d0164881558919def300f77901a19b2a7df1d8e88b6eae1236ff971c66ed8a1406397a3b5976106323c7631c4d8ee5ffb1764803103fb14ed5eb86c6106ec5266d0de458b156460e7428676272c5470c1dec445fb13569cd0823d8b16ed494861c182fd8a2bb67b16ed465029c20af62a56b44f819222855d494a3b142720a8604782643b616a0285fdc891bd83920e4ed8899cb42b41aa81097b1226ed488c6050c27e44493b0bf20a48d88508712244bb6147c1087bce489ba06121daca0591f508f06e580422ec63ca07ee6ed80321dc01291bb0bb610d609c01ac2f70ed862d707105dc5b3d81ba1b9680c511c8a2017437cc80b6720bb8e286b91bbea91801ad0a03c8dd700128deb183856d9838478e1a1a5eb595bbf1b48db71baed156eee565061a6e372ca3ad9c8b0b8ac6e985dacabd7db9f2063c3b732dd8eecb903368e3ba57a99c73ce297fbcb7a880be534a29953a3b136dafcdd1489b84edc7864fe7fb26256d3156f89c94ad3dfc8665be5bd61ee6626de2bdcc92ca269f154f6af89c645ddbeae95fda30b0e35f29dfeb1db1965df0a48b9d2e8620419015827051866d05202f4608439910724a1886214872e05738e1c47e7fe1154eececf735940901031d1808b1020638dbee66c51160402965942ff079bb59614416561801c58680028cf89978372b8c5052a77c524a0965a4934e246c0b3e0e6a8bec76fbd982898df80109d8c28a47830bb660c27ead15617c2f949160cf0779acd43819c64b8d31389cd764fe834e88d36945443f451f799aecf7566291088fdff161c42ea57b043fbc108f9225593c91e2582e47270923487cae6022b9b89148143f5104edfb9601d88ea61d71ceafc77cacdd6e3199757fbfe11c84d8f7dfdb6f3948fbd03ebe38873804cb2e1689a46690893896cd41627188538dc077e64a70b67b8fe2c97617e204e48afde09b485ca2adde5be9cd9b8c21f8f1885309b1e1865834d256eff445ce62123109c7f227e2584d06511f6cdf94e6fc1cab4412bd7d1a08c737241c7c3fac79109cfcc4395fd233e33d0e22e13a7422be793bdee3de7d1c8bf4eebd0ac7f215e7495d333b3c1837c3c30c0bd61c5ec19a834969d1db57fa876f4826d19bfea4b31ffbf40edf9cde467c631bd68243dbf979b49d31217876fe1ffbe9acb3f728951ffbf9885b058348788ce9513a7340dbf46efa9a773299282eb5bd9de6bdf752efbd3de44149241289843d2d7a0f8546a1501ee51c722bf217fdd3fe22ed413ce67dd6a2fcecd3ee6eed8b429ff57b91b6a124b63be242a0db34f754b55d8dc35171d94853a964646868680f15cb522a99ddfed1c8a854fbbd06946558e39302db5e32a7b3dbcf6e6d094fa2b0dbef6806b86fbf466bab1c2d67a1b1dbeba623e531eea54b63bdeac1b81a9bd6babe2d91bf811e8cfb89452c136dbfda15d16c706f756b386c5c874b7196d43f2c1351f897762fb495734534957b9fd260a4b80e0f6a5fc06d9a78cbd6db997fb1dd8b2f88903337f2851b31c20129a348f910cb3e45a3c4f738c4dc22150294f39b297d9637265198338cf8e50c653e1977fb7162675fdd9cd4387873d03c18f9a586659c4adea9b1534997d0bdc1778ebb61018524db891a38868292eb5fbe049b46cae490b17794f32814a2f4d29bca26dd6cde24e99c26689c8af42512b6a355e12e3306d6399ceae670aa25bbed3bbfc9a8b654dd982268670d5e97422293554e458dc8f0fdc522ec9cc9193d694e9b5824c7f4a527e9206f9353c24e708031c618430c1c1c9b9c267ce41c22686c487f8236860f0e4e0923226553fa918e6f9dc45e505d64934ef900e24fcdd256f14bbaa5d9109fa467341cf155a2c8a9971bf147bad9985aabedf857b39141bbedfa4a82eee5a69cf5cab58a2edd22b2d755af5c9fd6186be873eabadc45735e5b2fd1ac57ad975f97fb55ff7ab7f5f2795dd5ddef173ee6e76eb24e7ed3bdf9e28d91d218fd4515dc24a03862fb0b72fb812267372090e13dfd0384a06dda827ded4976f7ef397422b6fd939ca55c96f221fff05c61ca641c056e0852ec643b4cdb595b49184dd57696831a4cdb5b499406d376c332c74cbbedeb92d810e4fc9364c96e3f5030f981e2488c31fe129a478965f439d70407383812e50a26a65cc14416a60052510184efe1396f2c1a3ed156f22f863c6d257f458a1b388058bec6591cb7a469e8fa5ac39e9a82ec9f419e2a80bbdb0f1355d4701fdfd49643f85a51686ad156f2699c221041d0b8753e61d941863d0f792012c84369b81889a4bfbec634c6aabb4305aeab92408eb59205133763c3cb19baed1cbad9ccd0f60074b371699b45bb7dca4056b4db2201401ec89341a07dca4024906339178c7d5b3d5d83518708581a34709df6b144a225125b83dabf2db65a4baaba8514c257add6566badadd6deb72fd679ffd2b0c7a9a4bdf72f2679b05b8f3c7130639047a4211222a47cc9e3584868542a747636c7a0f6c70d678127a00e8514524ae909099952589fbe79296cc184d005522d64cc2568db9f4ec7a98e08427eff3e53ce5e37278494428a2f84704238277d21eb744c2e16ea90727c207d8f42a782f4e137faf2de7b30beb57ee50daaaadf2096a9bcc8d9cb7eb92193e3f3249c4a8bb40f792907b47d489190b3196306ae720f84abb2d4b6146bfe3094162e03dfc95a900f3e1c15a9fdde7349b5d67b14e2f7de9bb3e6f7dec3f7e35f7cf3a370a4c4cb0d1f961c203e4058c4000244ca94299fd1f8ef3dd820cc11a3ee30f73ec2f7f1f510bf08a598c9c1c08f2730a0093619e3b3e02e1962c91047a2bd36bef488efde45596bf21d96b9bbff8bb01defe53b2c7bfbed806d2663f4c2b2d42893b011d61cf64f5ce63a3255a9bfe7b88e1d2d46beccdc166159de38878737e33a328465795f180b76c06f87b9908a659462364feae6b016e3bdb73de1e15e6bad75409c87d67adb75c0c8fe99ebb80e0f19701dc79a47e8384fa80afed7f535be94d247753807ffcba97ab88f9ea5fc0d413a80d2ff4de9bfb67ad6e39c570fd735a315797e94f37b8852a6e4cbdfe15813a3917e8dbbb0cccd3965950e88d7396bead485ec7f0acaaec3b7fcebd2649db3d238e585842e98888299c8c27bab64c8b67f29e1d9bf5fe283893a7af8a0fbe6f07210625f6f5d62d94b8ffa7466c7cafc5ff61e7dee00bdfd7d78994a13edf7afb1dcf499d341e3316d26f56028a51f77b495eb9afcf169469f2a61242c8ede84654e84850cdf77d6b8c876ec98352e7cd8812da51771c0b15a4a580eaa5dfa1276c3a9424ffaf81d70acf8a450289bb1dd0868fdf735aec91ebe47ba87671d43d8752adc2e0625e6585267f02594d2c21eac7dc7729d2ac31e20969d2aeed8e158f2797ba1999d8cd7df181d10f7e134259f82f20ed7e183636d49b31f19dc23f0ed868468a044e7bdf79a0bc9ed270a2097fc13c592fd020b601510e1e4d15aa5eff2c9d7a45ddf0d676145b55e9707715d9757f85ecd138348b82611be2976328d0e34fedcf3e7eeef5de570667c30bd5b1f422ddf310f777fb0fa755d17d662bf87ebe3dbebe35f587c79398a392178cd9b1262f7bdff8b50b4b253e2344ced640821844ff35c54d03537e3e06c2a37a55c9ae3e0dbedbbf8e6ac126be1d1b6c45a2e16e9ffd84e6737f3b1fdd26df5f563fb35dfe99a07a18a12f0df135905db5e32abb283ecfe45f5bec1c418254ad85a7bf8d0a968780154c2fe73a75801cf9d53f2c33e6badc55aeef760fffdb5ffde62edfe743af3b1ddf5633bdd81bbab23d93e76a4524589fcde411eebeec12827ad97bd3824ca2392ca29e53b504905d999f780e5f298bc2485cb014cf9e6eb6282b90abed2562e95cae03541ea43063b73671491b3d46e5578efe1f733f71d86eac9feeece2822673475c33243899cd1b8535be91e6e6726535ba9a0004a77b99ac47befbdf7de7b937eab576bd9566b85be3d0eb556fef6a2d61a7dfbdc5aa46f3f6aadd2b727b596e9db975aeb84faf6a7d652f9f6a8d64aadb456cbb76769692d193fc3b797d15a33befd0cadf5df7e466be96fffad755f74419cca391c17c60b8251e213c96402d125d5e7eab13cd7081e12da115da95dc7a9a4f620a32bb5e390aed44094aed43e98aed41c385da979405da97750b952eb90ba52e3b072a5ae712aa9695aaed4322e576a950c3bc39534eed3a81fc4353811d4442217895a489447242a12d90785ba52cbb7e897587a0ac5545537a8090abd27ed3b14aaa70b0a4569df22b9e3425928f4aa68df592240e56b9cbd34a57d8f1690824257b46f1209bb6cee1e8c738628d056f2c3b02fbcf253b7c868b21b4ea9146137ac82e560378cea810aa61352d8f6bad3092e6cc7a61a472b70b3435bc9ff2d3207463134e74824ca5f3f8f320bcbb5974ad1d52dd536aa74efbdf7febc7267c0a9463143d10b39fc8d07a7929f019e2a360f8dc90e1590d067c8ceda17289f414a92245f20d9f7e9174bd0297c6c6bff66729a183d116fd344c800a8cf6e266191ca43f54c9369525212929b4c4f9aec3ce9848eae88e4e4f40ddf20ca0d1749bd1ddd11be11fda43801a71dc2dc682e910492a6133bec9d4aa2bc207a4969b739e922a947e9206f837a159d43c4dba0b0206f93c254f8339ea7dd7e9608c2767c4308d3e0827cda0d8b297831daed670923db532fc234b8208f76c3620aa54b2369372c9a9ce09148cdc550068279e99c2593e9f4f54fa593c94443166523ca29dd6c2cbc3817c6a3ecb6cd243d3fd444d88f5ee5bb611eb70b394ba9f40d07231fa59bb3c18698c8d90d85c23e957221917876760097ec642cc181101cdc9702c8298c14ba94d4394c864c3f3ed52e267f94ba29e38b2eb86842f8dfff8b0ff98510beae5016e18bc24b24aa6fbaf730dfe922842f8ad2c2888fdc99efb44481e238eb2412ceb4ee2e8bae1a231aab09001b987ea1c1aa66be3585cfb8a0075306f93784e02c9818c7aa61c7cb0038d6ff1372128c4089d892051b89c7f36024cbcb876270d60a4d089f70c89820cf2c916470e0508db773aeb0b753b6b418a667140b750d6fe57d8c47023d9e3723839efc54ceef499e27739aa033df9a7922dea615dacdc6d7b86a039b4f9c4a3ea62717412a3da1b4158677c314cf276198519c4afe8c9e521c8cfc966ece866c4ed9d89d7980b399c1e613c9a35f65e3b1bf0183591b5896c2308d65598565f909ca0ab7ced060d725030d1576114300fa6af022003b34f4793093e601ce8606833c0f46fe6bd803c6cbcbdd30a518e44175017be2ea6bdcb59af37e9662d1d0071e237f454324103ed1564fde0cec711068a752149b18e441010d0d7b2ecd0e9a3df5e81de651634483f4fee56bc8e490a9518386ea86aac649c31e130e199286250d65cf9b81400e46be64227d4c382c00e54218e4712a243ef733c8c3e2b695309bb2a5b106013eb5e2508d29978ba7a5736a88c4a920cf8a14f95e2a91b456db529248555314939c419e2d2f0ebd918a36f39644895262509c12c388623816cccbd3cb97398eb57a7943888e63c91ce15838761c2b94846391e80d5a2ba6b5e6cb1df1084d094ba0b075c88f3daee345f19831dacc0b8aa2b16a78f991e7cd10a0f5f2e3903733f3f2e3ce9ba119436305e065210a2128c62028b62028055b3ee48161b80ea8e33170e72171ac9e077d60157009bcc2b1462f1f02d978f9908963d578f9b089116d25861cb413654b1a21f7dff00d005839c6f86714913399c596fe4212c8a9e49c538634e79c73ce1a27f357ff60828de37190f40fbe717cc33738bec6d54a22c1189281cc45a64a120a250c974a8e85e272b50b914cf6744b25df2f359e861e18e564c58322fb823c4772b6bd2e8e1bf72d7933b3a7c144711d9389c764a1b5a614da4a7e4f4fca06c863446b41b1e5cbb9d360745cc744d26276deccc4713032153471e00e4bc33ce6111aec5624c7dbe9240cbbe11f1cf2bc1909e424d0966fab13b757524990f1354e25499101dc1411c0db7a2b0f64e0f235ae5a7b73194a5ab0188fc77884ee6394931b68b8215bb5cc4bcc4324c3856ca3edbcdbcf91257648448ad1f00994183e857ff03de36de9e6d06eb34387abe068961c6f4d35f44881494f4f8fc370fdc1f70c6f6d5cd47d5ddf060d7b1cccca12150fba589151e3564df281a47dbcccc037f896f156e50e40bb4d8b00f18b5c430fe06dea0a40bb0d8d863d0f46fe8c863e18f2a0be6003571a0278bb725db46fabba5587640768a8816ff0edf2f6c63dad74fd1ba795dded87072c68b92dda77003444b2a3f2f22792d4a7523b2acfc254528f64cbaf18f2c0a8f00fbe5bded6704d00d0f5614ca82dc49476fb61420b31376b95ae8f69d80395401b1a56e154f26b68b8045e818342351f195193196e98d7a8748d3834450ad58c400000005315000018100c86c3e1804834225787b53b14000f8390426a48184ae3518ea33008c318858c218618000021c608c908cdb002715fc150f350ecfe219508124640135a1b93cffbf7098876158bd1c16832dd6932415837952baaf4e477c60fafe5b6f08d169e015feb1df74b4572c68bb8d13cba4f07b70d0dc4da32f4f231401ff7ba2c7227c85cbf04310ea78823f93e4ded05f15bcd9d18b9d9a82016fe5e83f18a133c160f2674ef3ac438e44d47ceb04a1dd211c27b25739b8828757f8a9d8227977e631bcb5c95f2a8fb9ab5f1f31a2913aff03fe412ca7e1088c8468e73945a07f9c6beb8df0bcbcb54e793bc4ac193238de180604900937f83271d6ac0f83622d9cb8afbe11772d615c9f5465bff2b9be595e67a19420a1912b2060feb0891a6829998dbe1ea5a61824bc4f2cc0bd9f99e00b38877ec52ebb7bf617c9601bc494e15774bc174127a4884102b267430f44ef6db572e222d4d25e8274cd054dd85e7f0ce7a94f40a0d4eb9f383cb32a1cd6621c5b6affbf286829a0f3271a8ea8d059ce3bc011b49cff659cbcbe026d724fa7c6342096060da0c01daeed4f6f47c38d914c9dc23c1c27d60fd80fc053d2bc8a1f64e6c5358d941928caa0e930f55dcd243d4d095d4141d84da0c188bc39b7a71a9a3842cbac60b930022dec0186410fafe4ebbac9e765939adb04ada135696ad344e2e7d3763048fc74e6bb9fbc28c29441047aff4e09641bfb30ce08f0460a5056964a7f7064bef25437d0f049b68a7b1c4a6155f5575a88254ecd542ef1db348aa94e268b14b9f21f6d88e729c29fc9530f11f3211f8b31fdb1d2935bd9a959aa35213260aecffb21bff2d8c5e60749970a25dc3363ddf078155858115c773c1c669045ae8e23234c6e09dd22436216ff5d922e45bd83fd9a3373fd2334504b79e8f5d0971732dfb05aa4767b37b2ea9b3cb26502032f3aed1fb46bc3680890f653d0107271c5cab6302d640de941bd9ee2b10287c728b3a75f60d149af93ae03d6e8120f5c340033247b143de7002de2f53031558bccb9a997a628f3314d206e15fb214243a0bcaaf041fd068360d1d02d30fb3ea8fb9cf137a216eb859501d3fe9c051cb6d7e833f50dae44ad58a066182a46a14a154136578291bc8a3cc9b63e9bc521733a9edf925c83d5d711e15e603278e2c64dbb8489ce53583b9586f33500f10b01db8e0c62dfe17e63e8335390ec99118c98fce373f4b8e9575582068dacb393ce666e231f1a27ac3a1ea0dcb3f38809c6d503aa42830e8104ea382cfc42556376222b46c9b67a918dcb89a08cea2268e70b6c7d0802068748bcdd1014e3889b4323f64a2ce677a550760074243795e01e7c05d76fe23af42262c728baed6aa632f5b7ed878a34d6df3576bbfc7892c2d5aac5e1b7ed69834f144c04cd415e092e3a9e5212c45656dfeecfb51a7355be19e05b6497f4947aa5839dcfe8a4f9c3609e77cc25f7f69a564b3633ee170b341067c7ab441b51cf5fb17e92fef600317e1df26388433338e3e78c932e86669f81e4efcc8b7a8496f20ec0fe97a4d907bff6047e8e7f341fc947d4253076ce5a21b7371a1c8eb0827b5c60937b17ad13acafe89ac6d093b122b99089d5c3ce7e66742d31e73c8fed0d6b376679c1dbb58e68f4ab3c8adbf877bdfbf4fedbee75a14f1055c34103dd4f8919f0280e762c3b98a5c7fc6571c9f5b53c0815d2fd823e0b6c4831257ec6b5b05898d43984cb61821570e921ae9df3edcbdf461a97211054c0053be3942e58138f6429ee4b01b82ea65d1e97c6c4747bfeb1807acdc959ceec0741a75e70787e450022936326ceb3da8e2fe6c572f93468565122c325900a564c5a624dc7c59344a11ddd2a15b5a78ca3b58fbd6a747df29cd92ec1613a2266098d48207b90fbf2926043f792f5725529870b72f1799d4f9cd3ae0c1ffe6f3673897c4408c8b183575ba5907d22ea4c84a3917cb816b7e6bccf39f7a516136cfc86459691624d2af4c7b91933e26e55122e9ffcb8e8cbf988bbfb3d4f2a167e8ed0b0edcc03b9f6cfafae84e7a975f2c166b71bc8cf173e20d39641d6faef32af236b0b8f2b611327a61f8eb231d5c9e6a5a692e9b4d363fffb06f82766c8bacfc93996fc1f7a976bb3edd9f1296553d680b9cdba5fb6a9b312677f74edbf00e240963ed78f08ce5bfeb9e93b4fe1fcf9068e4d417cff91c5d3de703cae6686f67a1732230626b8cfa57529b550bbcb9ec2e01681b219509bc13af5f5c3c840620fc50817920b77f5b344de4c32777124f498d3631421ec616bad7ceb5deb025050b0a8d1bd165c9f422f5e2ad0654c3a4491167685acf07175f25a7020498b6287fd557685f6adce559ce14f1c9c839e3405d73a8a5dea8a26a1a84f98778a92db415a2a4b8c38b682556db9f15dedde1917d9fe57ff9ff52ac03b34bdb544a2ae76ab08b0e5138f4e60390271fd8c399c096bb196fe21e9f04c580516c33a4ea52cf869dbd4686ffb7cd526f9d3bd54d5404867929173b5db4a059649e680ee21912be70d4fd82bb3f343e19f2a8e30730ef0e1ba11bd31f148ba00abb773a704e2fd421417d3de7f646cc89c71d5dd2b81bd2c8a882de3c04cc856eb21c2d36b9e99b2beb95603687f0062a182e5ac939e41db634c1d5a606d1f879d86ff3b8e10801fa85695d15c71271b359d3060ef662fdf5c19281ec2e1dda1bb229744dd244b2c672d08597d998149b736b5842f2ece835a01a16387f117b4ec39743597f44887f111fccf4f6e151c454754750842d643010fcea63c995f426261ba0174399ccc00ea482731d0631dd1da2fe8c5d102a0a61901576a4232d8b40928a42549ec8085e8361f41e2ed4c19bd6a67ba7144ca6c6fe2727bcb770c301c5ebb122504ca93d8b403197fadaec080473f954faac55d62e7793fe815f102d4e8229cd0a9c9aa39e034eb329edc8384a5cb183f5c07babfa20d4af30f24530d8b58910e7066be8bcd27163c62bbc8b79704f05d4c8322908d4bc8cc361d1905f23f7a7869b45f4d57b4a5a81015f850c3255289fae42fa4559a18ba56d917ed822a44048506212b3f8ff95fb326c4079e1f79b54d195be89807f9acb31ebab6a52eb89f83ba8b700fb4c2a00f4dabbc16df84b1504d0e4451a05468511e23f30c58d4c40716f1a4cf5dff09b6a915bfb85a29e8029120ab536f3844c0a0a9508808ea6a39c404190a85e52fff15e9affc017630c7de6462f2076dbe2e28a3c055a7e11d8768a38a353211f3ed0d1d9600631167fa9835d5a16383f401e5bc20d061c126948d203edbe66afda8f112c07a39243268c0b09a56353b870d5846ef69a13ca9cc3e391ed1d0b2a30d42b21f0b521e5517ba4b1e17cb920d29c20e84d15a68de72b37e05ce4f3d688452b5a38d4cc01ef0bddc260abcf83d456761f18d0f245a8f223683359049755befcf3804233d0134b300c6975c73e5f3fe5790dea4534bbab6f9f9f43a9e072acd71aafbefc6e3d630360093361659d0f445e78ac7bd8219191089dad4b0b30ea437eda16eb1522431e989c182ddaec80e0f49741d11c8313ae0304ead02c928118e948b2a01e2972fa10b0ea034ecbbbf0611bedb0389ccf31c37123e8ef88b1eaa3c2a8129e1630ecf997352f0a5031c39e0f8577b325cc48a0aaa1f40637e3eeea7d2ffd5b99ee966e4b888091eb7dbd1f83b465e5370d5313eab1f9ac97a37e916618d3e60c4a9d0d9e9beeae9d1e0070e882210da1dbf0f78581d5f1da789d02b20626e64308323abfe73616938c1057f3c049fb48df04fc4a0d262e9b36e9a8532109bf4f4d40b87c50bd59fc53ea9d4243e5548169d1366843b3571669081ccbc173d2a1df1db2a350aa813b4f8230d51c07c558b0c91c81b69e09034f738257296bd9de326c456bee36a0029ba8b17c6d090a43da363558754525e425f83d0ab1bfc9c94d2bf9cc5bde342f72ff97a9df47d40c0ef25ae9fa62390b9be4d5462b03631b14905e819ee848e5d58b1453af821be68d8624993e2a4411eaeb9653943963fa4d2435d3428092aa35ded3beafe403c0c444f19e93ae3b89bb31f0e4e125d788e6d1b7c395db8500a7ee15a6b32b1644d0e509488b5f9b522dfda84f48450e067923448945893e604fa31b1275abbb92b6eaab9471997710e4dc736d33252c38fdde472d492c54ad1dd5739475a7736bb91e052524a29b9b6f7737e7c206836811a2248e9655f57f05940bcab983809c6e827982342b0e90e0e31f1353a0d2f87134b4ce03bd0c440b8827d109ed8e542f20fc5c1b05023dd48f7e9e29aa53ae9b89ee35fdd51071465ccd4f746742f144e6b13498af916e83cc9e8ff8e7b7bccc9e1d6e122e0a0b02aab2ab898c0d06daa6bbec0ddd8272807057cd50447d5fa06cc865a0dc5911b458f46b82bcbf07c437dcab030ffc8e774ad5b0e3841342d3d8b2179be32735febe3cfce929142176d9c05605e6712ea6af4f00c7e3297cbdbe1010b326cb2be268f9963ae4913daac239a5db0fbc5a512459ae699400eadebda9c6ad8b3f36553e2d6eaa5b24d3eac4f0cb939988db9ef2cd33d93e31120dcb7f4aef477ed6f444018291557a12c566a511216460041f565699e47de6a5c91f768944d0f5f3e00513412f4fe62d61b89e9930a9ac717e3719f0688a1513da978270c9c52bf2f51e6bc04cb1569b510db1bf86389c57057280a6e11e15b49ca3b549fd364313cf5ca9eee65f7f6e44773cb05a6fb10d3fb2ccc301fd9263b7e127c1e1c39d824f4014562c6456f1686f670557e2bdb1aa3109af4c639cf454e1c2ce66ff83c39c7d371504c4a50d02c065f10a886a1a6b2fa03bdd029ab2a34e2dfcf81d129e949a4756dcb17848138fb4bea596196954bd38c9a79f78ae1fd9bc45f835473cf4415eab1b81b9533b407b94e66df1cd034fc81f9a50114962172d314988008979f06aa9f7076493c190ffc778d1fe684ba73fee06afd02ff27951ca89899acb2b317a1e5726c98e4f0b872ec379ec5bc5826463398332d7266b54af00a7fe4b51c5112d725a5ad9c2c7ab561dbe81a00eb4ab1151094477c7e4d67c204558d2d79dea22760f043a960d737ca7c5d329524987e3800a9321997a00a23ed15ca44d30317565d0ec85840afe2e59fec74b3cba4a63e27a39e980994aa643db3a4c15985ed116132fd45545783079c49087b321b76e9c78b3e5d9afe53a55451bed5f16488465e1a88f494811180c6fd0b21a585bd8205e0070f581a3e0dab0fe480f0ac56e8a2f91e1b5c3381a1ad4d8e5728710490bd75ba67ba5d225fc72c07af7f7163ad64f8bdf66b522d1caaa3262db55c076068788cdc6b69a3eb6fc2eaf40bfb259b1d18fd0bb1247e353c59928c33b7e1470f14e082f7fefa0fe00f6ba72ea9aab921464b3ad1f14e1040cc8d79512b82ee275f95e5c9e528b85b5ae44113780f496371d33c8c0102ae4b8ba8310a719e009c2d24cfb644ee8442714770abb65666dd88804f3423f614b8b0b2fb4690ca48afe3eaa174971c10d7b75de9e25f4832a0d571e44156cad21198c7c2d33f3f2b1123e5a3d500f9eb5b8797a119910362d7e9039804f03a9e456390dec3865cd938d7ca6871aa60f73191f6e8ec29a55667d6b08c91bcb3bcf50b964995fd321309b72beb726916f9506da55174ae273738e0fe57f5b06e6e526c0eba5ec8f34486e85b29aef1d2b57c2060ba6cb1e9fbfbe378119f1e7b7a723cdabcae0330756de049695365e985081112ab477ac4cdb787d36680c9f7337b9881e95ef89fd7a889e5b60e9342fc06967f66b9f224634939f8bdd66435bb27bbf05e696e9f359f39ae530cda3b610544dca0f298c31a706463d09892d33e026ba7ec7680fbfaa77238c5c9856947dc9fbff2badc5101a188d05a47b54ada44c209e2068d4611e0bdaa0222300c69f5063b8d24a1ade148aaabc3653eb309b09b0189c020ffeedc6a98f3991cd5bddaaf35d903e0c56869d030010575fac1086e685836e502fc8df73939381e4087a6d7d83a578b2a5779c1debb930a388a2c28fb7458d02bac600017b80864f376eaa76cc2836f155dec1b80eba802400097994a9385441ca7385463141d5fd12d0e99ae119d3bea22c37800270beca43554b916c86d9fb1d9fa4a29eeb341e0eea7f04272b996012367810382a617351ef946fba43dc04a2eb891e2d5852fd20071553b9437d9cbce22443d63f5894d0ed7167df823eaddd72d19de88b3da9fa048054c878bb2b108b04841007c96ff775a57ece3a8d48eb028e54964998451eab58fcfdd1d10185b62e8c5a431454ce8d1b1fd04df2041ea48bcfbfa91a3f38de633b9f98b6c6a5afab6b36fcbbb15c949024f76862d639c713b8ab64e0790340bf980494ed7ffc79d191a1bc7f82f54272b33e470f53ce784f2cb47707d637db9241d671380eb9cf262517c247a2f3014f9086e8981a6eb835ecc912e7fff171110033a8517383a5b2e10ac6e5439d26f390791852e37a32855f6ac00f77e6986a80214ef991110ddcbeaa0ef7b110f00d6218c6da5fe58c78730066203da8ba26dc9336a9df0b76e930ad40d8c45c2bb660fe272d549779e86a251fa27f3bca30fc5b05ebf0e62274d959d0288bc396450c2837348d90ccbd3ae0ff2aab169ac22adb5ed57bd0d047556df15d3e2bef212e5e5d5da9ec56042a9b2756468b356d9f7c87e07cb1ded7a7869bfb3e41001a28fdbf4d658517e5496b06a5c0b3359a2498835e8514bc3fb3076ccc82db762169b9f607524d51c9b33dbb2fe502ea9d0863d295457cb37bb89658db0f4ab5ddf5dee9db43216083a9b939f2c9b522d146a678561bdfc66a918555135f44ecadfaf8e233e9a0635bd8cce1cd75cc45d7f4031d0bcdaa615bfe04870467f6da0250f8b3e817b4f8c8c9022b7c0a3766479956129400c8c7280bc425d303517c1a67be71f208b2929e8a2162ac3303144963e672041686d433c8aedd785735e0907ca5f6eb3e222427624fb0a9c4a824a147448cbc40f250e40c189912fd57a7a4788798b78e124fbca854fd1063146e6319aed3397d8376c5f24e043a7948f228c02753e146cc6862c4686ffe9ed0034910811304ecdb630f2ceac1c19f09cbd585799f586f21915c0dad9487963919183dcb440627fd5e7f9903be90bf93488fc9ba624c80d0910b6eb9efe1d3dd17f23789f43208c8f231567c60434d113a69a8b612b0e2e0d2075b0f8d0c4a8dcc71196715a9158c4c5b7b31600da828d9487e31eedecac80dda43b0c0b20d37f1f85c60804ab49167d22d5883142107775f16f5122d09918771b050b452682adc778b88295a625af7454273e2eaeb8868f73ba8c0b9bd44ef4da55001c2eec6dafe2fb474822f7642bee3ad6bdb042d46a01060cc0aa0239e2efaa2e9dda25cd48614a2dcc4ee7461347d84e3078ead35e179d5dfc73b397b36faa89de088ae911bd3c32cd2e41666f741a34deefd6dd5992778e888c428f03e15a740403b839b27bba393c041ceb010292b2a2a0db7975ba4d516d96da9132109edc764f5cdf82b7b9e03565e941a9cdb61aa880a642f91041e9c26bdb56e3981d078e4c88d75ee7f06f5d8d00c91d740a189baf32d4f0b91f113bf463d3f8b60958f744c90be3b94b6bcd3e0237fd54bdd941dc65e6a928e093340478a9b6672b888802e8e8f0971ef41d42883ab274395653971a1958dce9180addc7e9ce9a9abaa957ddd5fc0719502b3e603787955bf7774aa4f4c50fe426f7b11bdc419192ddb0b55111752690449bcab68d3b25d80c77256953d00a40d114983c6c76b4954c8c13c2d8181a8dc9a311f84b85b7175810c60440c5850b14b8714b34449589645d50e89fe54e0c3907be16c6ebda3cff632caaa5398da8d8d1234d4c5407298a574741ad7f2fc283be7a88801cc6dfc35c585125b71614f0c531ffa5545130331354e59e74fbc84c187948ff1f07c504f3bb8ea5d2b2cd071e3e0cf5e7a93eb19454412d0fbe041a9c51d25540871cf3548e5243bb652833e8dfb488344e42160ee8e2c149d44ada762f9b7ea6e81e27af54944c0a6bcb92445a74c1bc74925ce54eea71ab1283fd0a6de48c647e5ab6491a49959556287165208817d6afee92a70c4de32ffa73714bedf23b9a1f0574579bab03beed30d1889507863844ab2be26cea8f52000b4e7428fe3ce50999bdc73294a48a52a696cfbd7234c40ad4bd013b1b03f4ba63c62230be001e997764129d368c2aa8a262681242f991e781737a661b4c832104624647e614926c0c679d946d0e4415ec5c5682da3b0f892148f13ce5444d19dcac252ac79c081710217508253897e75110c4d5d80d4820f5162a43132357ee831ec5cb72a0ff5c2c85cab99926a5b8b84188c4a36032f6409bff25f77e0a1344a038bcf74476694b4f504ef8aec2dc22e787ecf2be415d7499eacc89e74344696014cbc0540afb46b7ac4a5d0861ac8246bbcb7056592559a9c4cc1221ac6815cd3b9d1a3a11362931a6eb528ba937a5394340ff3e28812bad08d2bfe9dc49c7da4b2a74e7ce7ea6843a858b12064b86544b00474cc26138534d1567584c8b7a1afd728fae2fa87a8daa6e80f573474a7b3747428e4379e841cd86bc6ce149d97d598288f8022d32fdf609eafefb36baf76ab70c81555a0726802c98701c1be14d0351a6f606780c2038835189b42669d18ce212c08fe0bb570fda4cab5e9efc2aceabdb654453660c775b0664a5d10388ffbc9d6f1f1d0cc74c03532687c4d4b8b3643397d98c1229002a4b8907f384c493d0f50a6038f0cc70cc46bb24547e7fa1fd8eaea33f925442a438ffe8d2ece4c2a0f8b87ac8697d47e8d13bfeb44494a15fd6eba18e479e170d6bb6e6238b2c78b6ba2fbcc7968356023607e620a569fcb5a687fe7b783de5e886adb65acf7f1c5dda9f3216e357ccacd5b1f74256c82da9cbf04e33f10928fd601334c9834deb0424e964c41b38d866854b95098378c75cd7aff17b8f10bae376bce400aa483d2068a5709659e318daefb2c829a77136030c6d1f4daf89608aad0cb28ad3f18b41ec1b9e1885007030d23c58d491af67e58435f42b80bfafddb0fd8ca8a1b1acb99ca1c8ffb3eba8c35304ec3f4d1c94a574544fada41cda877e4519afb0263ea80486101d45b3920ce01a437f04e7d05b97640c56bda0e58082e4d44d68e27c3ca2bb2d09be23a869d5176982646184976ed8a278391e8b502daa94c66ce870afbbf9438061f0a435dafe60a3714a9a63cc6e79fbf354a2aaaf6ab4f22705c56dcdffbcd9c6927c7be6d1fc61e06875d91b14ad84637849fa25c6c4a84feb4ab4b57d1c41294ae5f0c52e3d3c40461962f43bf26add8ece0215c6a3fb3df17034a95cca27ff04042f363477bbbde24bf211da0d1fb56e05e2b54f7812a74effd56bcaef7be2fbd323745169b9269d3b2dab48c9bdab2ba9b96711365dd44999b208b4dc8b4490b82b860bfce2b66e2b40c59d42e0b0a2987defe7a3ef0f48c208e4dec029339c9b0dcc85616c1e9a6e2d6add2642ec8cc360b9b8826e605bac0d4b2c220225dce96d4fb3f5f69979cba849ebceb678a1111f7df906c69d94b7ad2d2aa936cb343b36c347883c2c841c1b364eb59953f08957cab110dfeea7e53a6229af249036bef1a006582579532b7d1ef9f507a3d785f70e2f0ca198268afd2a86bac480e112d061450fcce80f005df385eb42655638286027565026588c30099e73da571ca1d915564437ec860611160a705d8906ed61d81c0bead7c36e724f288e64413fdb37a0b00e909c7ca55cf318164cab132ea4835ddd7306b233517060aa410fc02a92ffdd8120a4175dd3e84acbb5f258081738b0ddc0f2b15e83e4736d4def6fdcbaa1a8bb702e63aa9924edf76bf265850b77e2552985a7e6123cbe91e2a2b2ffbd041fd11151567bc7cd5209fbd0a590e0a44b041c5f7b5263da9dd3b7bc70380b503afbfc9c4b3f0c84c00a9ef436f3e5ecd021161d413553cfd81c9a446c5ed893e396d83a8fe0a582651f54f064bc8ea2b322f9ce489bad637c50710901bf85b5f41ed05837c4b6c64090a6a9d46798175c7deb2c4d7ca8ed4f2ced5afa8527ff86cfe097473f0e50f261b4afa043381137b1be1d2942f70cead6c3153d15763d82906d848fe716b5a9e8b497e421f22e0ba4c4123946961926efb085f467277a314e5c0d4e2d4466e055891467759d235b7cd9ea6e8ca644a37e881d00bcab49eaed2fea220d4380baab804e9144dd707f56d0371209d7beb285f78ee51f75e1aeb00896210663d3508dec8f1397b8326b8edf8c0daab6c18a811b9757e2fafc2a0ad1857fa0faef4009b5ba65b9a478011bbd6ca2ee6fb48e735ad276128b57aad80b1f37c207af4ea564e87d50156e2e52278b02194f72d8251d58bd4d518b54b07df3f4a4d7fef90e7fd39aed9c205033b92c6519536716258c76b9b3bc09b25a0759ef09ef153d7809d90a23882679a872c819e1270f8a9017bab174aeb75c0ef26190eca7ce88ee33e3d20759108a8936ff07ee89f40264da5cb44606210958494cb68bcf83acca2527b8b7beb892c06669fa6570032ae8c6524f3588f279139a38d9aa373767c9b501b23841b3188f22e12c66c9ce5f754b899d11769d00d4d8b3ec78f5d28ab8c980d53deb40f0b5ddc6034aae0f600b5ea4dd34a7565f44b9427163809f4c683aca4fdec5e1edb94512eec1f00a8ae564c5bf2d6873d106b498a3df70b168abf50592ee604f41217e988a9b05ad3ebc4aed5e1b4e63350779e9874b8e5e60f71a9f0dcf2e1ea352f9cb0a31293943f70b5cc867de132d0c1208608c824534058f5d284868c97e1e5ee4cb90f608870f7e43717b2e67ee59638e3620257eebd5eda52b1bd8fba6345bc92143d9c81b204ac0a98a928506c7a84b48c070b2eb8075ebdcf09ba525435c88f01e1c449e1e1c94e12c48c7558ef7e7957d0f2fd34d5aec58ba06856a44e9d34dd40e7c8b263856959f272151d7fbe15e76ef20c839067c11040b74e43404ac34ae233a700b2e7ccceba3c780a2648634831663a57eff307f4e8e57f07f9c075b8a97a1789e8b1f1b31b0f3af94d038725a41d181f24a414127ddfb650fcc4e53a3cf42657c8638d7af4a5288e9a52fad3dd2a65ab37c52585e013930571a9398ee81d68e4374a5179c1e4d88a4a7b37591aa14c627d70d34167ed27a42a40bec426f50a1d25dd4c044511f23b18b05648109a1a20ed372df8a3c03dd8448b6ed6f0e47051302da87ecc2198ecc3795b4af5560bd59fe4e418b5b50c92f980ce46d2e6a4e2fb9a56204862034ceeea13f0b5b1e3a7a260b2d65c85f5087f5a332c9739787c34d2d651e1b0797bd4f145a9f8ef4c705605019938e11d0a46ab55d4f35535f57b81fac5edcd50a44b6f64a9eebb57ecd53904a29d292dae4a82d37cabbccde1f46c6edd7d7d5a624ff6e2d827418b812b15f5c9cec5bfdabf97523bd8ca041714cb91a8cf102857a673e1f51e6e1c8f532f77edcd691c2218f6474900b41d24e4a6ba2dc1187e307be8b40dde9c29217cdc0216ab9b84b6867689c0ad835cf2d46c97717e50981a3a9527a6199944109b137c0f12a65a4da31e8adfe5e3705c14aea303b23dfc23e26398a9227d9252b0720152d464fde071fb5e34815cd37c0f44b2ba50b694d7d43f192c110f60da26a2b0a7e60600cf00fb8ae96737b9684ee54f125e8b0e7e6281363d824859c2d4b7870a8aa9e6848fa22da36757bd413b02a5168d8d42c52615d5870a5ad81e8e5d685674ae9bb0df10336904495c4481c81470289bc5f2897c3a3a2ec263c6846da087b7caac47495554bb2169a4277844c1b94e324909b8b311bc2d2259e835590890346865494de682f3a082b49550a0a597b6a128b5acd09c3142d53fbc2ca4394d6bd12d2d642920a11da05fc7b352163d68507d8ea64f19083ecea33e09bba96ad3bdea8910c2f3093f1d3e6b82c0ed5744d317177943eb2b641bc5424576a3468d183e91c11e2bdc76b9debb0eb9c8ec900bee301523d11b1131042a9a10b12ab847f914142218307c00412eb406d6add32d8b79cc3beed4ac1ee0b4e1c522fd93367bf4792f89886e8c96785883781dabb415abc7b0055106854ccb3cddd5d0d5341bfe0a15e1a2024510424d0b4cd640261fd58aeb0fee204faeebd272fdf288c0331d8f2a02b27d3317a6f99e41d6cb459a61228f2b068c29cc996dce7ea8f2be9bc99befb9eed0b303889045959ba5cec18267067723f269c8cfcd5587f92ee4534c287f92e0db6506493f0ba2e81992cc76f4472578d3e86e975eed1c3095409114dc6e888238ee6f1028d972460e9478190bb165e0f99a44e00e3dd71864d09ac9dea5dad653341161ff8a9ef89442d7d5799fea8328016124e472eb31109bb2e63259359ffd0c9ea80fcf44ea270287ac6c82812f8aa69da7084848f41ec40ecb54e57a3cf31d339396e1cb2af9728719e68a012dab03b054a33794cf0e527fac75fe9cdb1cfe746da4701ac82fd9996378fff895f25d80124e03e7c43ee1b2fab2f50898892b7fac4e2c6f84d35d9886e397aa28fceae98ddf111b20fddfed05e5b27ad2aa0e41d530c9529bcf4249bb84fb63a578aa7228e4922309552b3318b4fde82a05a344554466ae4dabb1ba1b3770717a4597da1947a9aa4089cdc5fc384e15dba2b240e2365b93b94948516f8702e1caa2962c217575555a249f0f302751be68dcfafc85d701a7cb73274a29958e7f25570449b7d1be933f752f17df5399df540b8fe67d320162d84d78f630e0448dd4e625569df859cac5668d0dd934626c7a487c230fe5c46319aaf7ee98c77d13931085735b008fb43e770fd4cae172492b0aa100173b87b944280fd6d4116c6facc7ab7a2462c1fb67c574ef02a92807c8c58d740bbb1ee714788539170f04d5676ce2dea8267d50254fd0b193935065ead210aac43d27665d03480a130565448344c718a0024ae0bb03c631ab91a02bea436477b41880d6826b5ecb0169cf40ee8923683402cb1ad50f1bf19cd599307f9a09cd5b753193d9ac9fc595da3dd2c8cc1c264afb9297b1dd841c5bbc2203775a6beb3e7fc413fdb65b2331509f3045f995ec3997b7899ee33a4e150ab506b698f3e745a11279fe57c147589fea6e0b284dce57026c87f376808e64de897484b24f47d050051910002c6989a4cafc490806e0e8bd0b80778471b93b85b78c319f486e5da6145ebc0e6ecbe627960ef184c98d8843446f5d324f2f8fcf83d58afc4c7158d29dd443f4911ab0443fd1311a301a0806f5c2e84c9cb9680b38e36a91004ee003d950a3975eb804748ce18484707f93ab06038098466557ae00a063a7dddc2c00a8b403ac49cf0400b2b6c33322d4593e8f78b6a142d1db2ec6a6df80eaef281df4c200e013f4d30099cb97ebee8f474472e15be3877403c6ef8eaae06cea9534fa0d1b364bd73ed70303a61eb875a2b139e99a0e751310747250931a06053061b25829e34a21ff87806989757d144fa0eedb4c4090dba6c0f5ce50dfebacd4fab0d4d248caa686803f7b7b7e6f6ae54033c813d1c17a2f1fc0b0dc9033987cbe11bd34d832b8b72b7884ce42d48250256133bb543529bb552a474d3dc60402c4e2264b73fa61226d0d092e3212bcf4a57933ffa352c14bab5ceec6ed1f8b68ec24792301eb7e543eeeb580ca30aa819d3e505c92a4a6add84c67cb6c2bc65740df9ddef4c548d95c3ec4d2a352ceb5cc2a36b3e1095213a567022cf08f461ea4292874a3b98db8d11adaaa9ec1a6e485f546a44e770fee87a07452eb13dfb63e18a0120d8894c25c4e2d77d3f347b40452223d8c0d43a4e9eb3c23e0112ad168d772d5c62dcc70830560422d9d9dd47e4c07a4cd91b2c45990fdbeb9a4b4747b1f42ce6f6e0d81e40cf33953bad05587df99442399b7c3c54560f740a0434b6349ff934ab601d18f2cc88edf7d013df117515ec4305480f33ae3d5a91700f6ad3e9c4d3170fd1a63910a02d68f1feb8984d6c957bd4ceeddd3662c88e2e6689774da57a677c049dd8f38b47e6fca515fec6ed38d5a56fc66bb14548638090a6bbbc4c647135bc874e1a3533bb58c82009d6679864130b3bde0b6d818a69762476a1930c8f7b02dde42884e8580270d6c29f45f2c1365c4aae9c89d50909a8e4786d636f732b3b7b0481c3a4387e89ff44425496a9cd2f5da110098d23f24b636e0505819fa65efa4012de5fd3c1b9c287874405bdae23c95db5ed35e92dc9bfb4620af691e2aee9df1437eaea41770ce56194dc02cdc53c1265dd77681cbac5a78ca988c7388b75d5670a13268b5aeeb9597ce93375cb953686b62e96ed2bbfb565cc0033f263098069ab09815436a976abcab6eb7695f3aed12ad063d2c4452759b0bcbc711ca143a56b119c8a5f7cdf22b2a393cd9a5a943ac3ba4cb19cf5a035d7bb4f339fdfe9cabc92249b16a9c2b953419cacce54d37b623c416164c42fcfe29c8dcc49e956c7df17c2fdf87a1230cf07f4900b34b1fc0c70fcf439aa56bef44dbfb17bb3162028a7e9c6bd3efad5ca4f0f6e8ad6e2c7ce7beb6aad9c24bbf1fed2f9715697682660e3ddedfc6d26d72f2daac68c7e5f0cb3eca32b4865c62bdeed00e5143f622e0c3510cc22379fb0590683001df6eefbc748795169d23eb6704b3c21e75436f222edf5e12eac5bc3336be653cd8b38d0242278fc323ddddcb696394c17cba462b1d352e6cb95c88ad76cc8e2b2d754d323b6a2473d4beaccb53c83f32421d823e21596d0de1ee3638a706147e770545a81100785484f6fa8f611286cd6e212172f321ba70f6493ea4d723e53f3ef9b098d9f590a9b1a5c14cd598902826cf3c20eaba6f1709eebc63603762aa76b9734948173270138ad5fee8ba88cb5039795d434b0201f8a4c902490cc2962a0b47053d703d8a157c89219174a0ea76e2150a4d409d54e80562db4370e94649d6b12e59cbe511fc59ca7bc9c860395ce7feb3610a57385e54c5208420c7eaa91708e2461e174264e1e3f8189254e6cf08d5abb8ffa3770a8099a97b2c57a7ca23f5c22ed36a6b577fb558f0f6ebc5c07266251631474d0dbaba69dd42352df8411fa6ec8f046b44c171b5226409bc28d9b3872aa7eb0f507b099ac1f87c2650626a2bd9f86d02a0e522e8d027541c8267ed2eb4bd01ff92b55b374b774e5949aee5f42f72c028a03b8b5b3d4fc8dce03799503591568948291190694757f2e558321a41e39a2a8f50a4270ff2b9690573d06febbe2cfc85e5dae642cb0410d4033ecb91776b4e8b022455a91cc8b804ec6f517e2555a1025475e38dbf064f0b57f99d513b8e1b09ecac973946346126ab77ba5a4abd354257ae76d56f3c1f939ad4bb691e670180f49042ea39325eb72c292c84738068ba17b0c6ad9c0e838bd39a43fe3ab3b3cfb053820eb14a1d244467fcd3c108d17d54b051ee3aa8ae89752ab55cdeff29fa012833409e5499f3d9845f71e06eeccf97485c18a4038d878f7620fb8ff18ff34ec04cbf0672ae82d54c78e2bf122512e6cbf05b3728829f077443f1d1252c88959e0c53b40a91defc177156b1a933b3558baaef648b74133440498221e88746bc40fcde938bd59cca420cc092a68aa839997b628412df52a8c36dcb435b30c2cf108002d2cd968f57878e81fab26bbaf26c3f7504edce6cceb6d489970f582824aa885607356060c263671ce5694b0405dcb63f6d5f5f9d17f4b111a51155002ea827a4f0b57d4b3f5c8e0780f964da68a556f3695833b1e06206a68fb52ecd12f09714421d6fa501d2e2b0e0d2bfa0db1786fa9bda5d3f945d9c60cf39222e25f84d817fded28c7dcd4408007ca3356b0170565a4000290060f6173f5051e7dfbf5fbdafcdaadf6b3a2ab408c64e887744f9aae12aefedc9dafa6988047dc66f95264344b482d390800a31ef92804972db4f59ca7ae8d70001370e0d6ea7f0f53f9781c667acc2a3d87d5376a89bab2a0cfc711025f7abfc47e75e9d9f794604d1338b3ecf664222a70d9e9c5c7a1edb295a9ab87f2269f1208bcc5453550538a8a3118b5e42054e03d84dcb61ab3ef06e589f5ced0e3b2858a065196f3d509edabed9f588a0ab97167a986561576a0a44b6728b9813aee87f00fc1cf07c9816c3cecb1b43e552c5a95e40a41b42e8a814d46bad33f0595a59e44892cfc006e124c7990213d42a7027c5aae9886743d4b11f776160b2c47ea27ea38804084b6b8a3e2cdedfb555469acf97c09b8496e3dd7c32e914e511eb4068c32c9ccf43aafb97a0ec83470359347e0c47e5e6f1360bad91b7f5f6c0c2a98cab7dd657a8736a2adf23158fb21132758b83f7a2ca62498021628a3a5c6b124a5d4a9de7ad23fa8d1d8a3db622f346486b875adbc2b7f554bcc1b653c724d7b47c70ccab02faea5dab222944a9590116a1a103387e1b24ad8fa1c9d50fecb526a95358b423efdb6a27fa4e707571f57ff4a68f2bf3125f481b464d61b73790dbab1b5e6c31be413cfa7a78b410bfb0c2bd33f041550c4fa9212885613e9a8e05e312e60c911a9df838891834a1ab392d11d7320c3b48492a33228dd24c59b7480479e7a5e935e0905f488bc41441638ae9476539dc7479ab04d06a7e5ecd9a3381ce5f342d51d2fea2a633f693455e36de4ada906886b86c61a0f76683eab770045428c2a0ba0e7e1db5a40d07b38c5173ec53974e36f5add92431aa18de0a21c277d8de036315102beaa3a61a5a8d57b77db61b3236a7fc2a82bd880d61259c878b64f2cdac49ec4528db24efa17691a1cf5950ec5d73e558a90d96a19d40d2e2af13efb33599ce50b858ea30d7e5ec051e244a529bac9e02b3c6e009ae91c2dd564c6b73628c2371481dcc699a94a7ffdfb71c9d8fe64e36df94bbddbc3535888b680ef56ebe208f51de1961d2be2bf0ea4b8db7de1a390108a2173ec6226eeb38bd947b21ea62b58f3c34610c14963449877a87d37833a0f735eee1fca38cae56da0fd46cf878259aded5c3003be98f170cf31a360a11ea3472c4cdafd168a545cf648afe9517ba2a89511e3d66f8c034e035289ea7fc80ed5e2f806a1a3d7ea3368bf16238bb291e9180ff47cc9d99a1e390527d369a173840901504baf4d7357fe2c4306d232e06239b323069155335b57d855603de820f3827ef2f24f4176f5744ab1c209f55eadaa2c648acc8a03bb06452ca14338c667c10d799b50720ef729b1a552940753608875c68d92280e72b9ce86a946fd93e1846167fc16300dbf2887f2192d985b6d56be57a5a750c05dab9f87424631222e31da54c796c2f79e960ce607fa8a59a84d5da699562a6fa97dbe0986537c5caa7f6de62be4fc2a912b0a946afc77b8956ecdea384b80b95ff28d9eef9bdf2aa4c6db1327a7031dc099b4415c43eb4431f28c0b0e6b1ff8732d665a7ac37885c82a385746346a7c44e7c7274ab4211b33a986bb6087f934b3762e2a1cb129dfe9c076c44858b3d93c18ca1d9e44782fca119445f2e66088d1cf2a24f23c3ef4278f0519bcfaaffb28a575161d90e56d1f851c78addff624808c7b5b5af93ea19a437052b4206054e04850ae318fa9f48020b986e4ee07b8da5cce9e04f2fb4d929f74e8bb85408c8045f8961969250d8c9af52dc542fc7e2b4a1400bce895a00f47111bdce93d1b466cc996ebdecf241289e0bc42a8c18b24a194c3bfb78079348c6384dd2b8145a9835b26b9b33a0034abdba4da10752c7509ad33d36817f81f22a33f9f8d6405e004ae1c7610531bfd8df3b2b1fa57796657b7407cc18d1c063a38e886842ca0175d2028cde99dde726ae37126b385268f2dced8361ec771f528f8a2989b3500e71c43e9feec7687083a9bd3c42fdc9c1b3830148fbeae63fd081abcf78482c73ab1992541fc4acf0fcbae299cc51224f0d299609f8ebecdc0f6241c47b7e6a87bd76353d71c9b2a05e7ce015091567617157dba7c99b589d714ee8b8d91fa3acd65a05f412708425e2281da76e6912462104520c9caa1e6faa167453f599efd012411d64c01cbb10e310e9bf24df71496c4d0b0f2be99a089a7f8d4d2a55aa7b1615ea3b185184f4c364b3f31dc15178e678f18011e17d54b58a867bd565755c65f500a2de1e1e91689cd615fc9028998b1eb100716825a43dfe889bd449143e735f30bf43e610071ba2c1a0f6e73771c61e031f4b7a68b00899d00245b1fcc329348db19e971081c485110bc789c1a6269bec2f97db42af86f0a687209be08b570b286b08ee9d86a049ebffd1a76f68b85e6f5ca7350ad3e9f067fc2a08605e4ab0b20cb38f8f0e4a7d16ed5a56d016d1b4f8773383c2d9cce0c0fa93f027f63afc8969fdc7b09f889a3356237fa3b46f189ba78b0a6a4aa3a11894b636825c00d73f86b6453b856ab2788a8e73309db7ea89048d4e1b035613828d5ac205a59bed0a47d74fe7256a7b3e8bb2e8da1b9b691ddbd408cd5e4d74c6abd6097445ef1a1409dde612babacf7adf6bdb576df554f463b9c69c783f2d453f340ab267068118a5d5fa7157484c3ccc7387f52ce24e6a2a98f91301eb09061f9d79b813853d670be943c05660a25f64a2026e8e3aa30f184ba959ab3ed97a99cea2f8296e15f4ef6a4d7d65cd12aab324b888b96b38459176b631720fb8c7b8df084241bb6396b9aaaf2146eb9f47386f725dedf4d9fdfae6bb760022c282dab5db5c375d953c44ec8c7656c914de51c0ddbfa90f1b9863a47a43f15324ea40bbd2450048d0fc1b1cee57e2d1907922777df6bc348111eb999d2e55e8b20a51a013aeecaae49ff72bf709bb1b805af9f9db989568823822386cf12367df4ac560949200b39f545360a4a011f15394fc2514f4808370e706ed06cc1b1c81c3be20b565b3f3741ff9e593d18439b16ac4c66d91ef0478328f01f8cff0c09066ddaad51de2c2a830973ccf193ec0656cb62197c522db3d6d6fdac1dd91268fd626d67002465d920c9280a303d17a407ec0697440eb66c88d75533bff0c921059e34931906fb84368b0a08613af7254342e9dbd03fdaf4694a3b1c946ca2bb837ef618798ec2cd5ba28597b5d672726fa4ed6b7787ea77c8610337fd11804a4f38a1b1cc218cc7a5cfa151cc4e98528dbec2f5b2a16108701c47814595783d1f5bc308fb5bfcc4a4ca5dc060d82b5b5ee09bb6f7934e9b340fcf8e06879144a72cb44a9457d50bc0ce5963e57aa0de07f3dca1c70ac9439e4db3eeb24aa1d4c364a281c170e07de5fa6948ece1bfdd76f8ee891671af3bb353085ed0fc014292fc2d3b703fee951449b2f69e36530a806767bb071c48d24f9e6ac7fbee304f1d90fc6cc29e54c472bb3d018ec7429f38d9c779d9b2d667e630104b31bd473ca4c91e80aa4fe976b0b1373002905123c16bd9bb5f7a683548957f3f92f93274ec6d7330320d8c05e4990806a7abc60fce018c9c94520f797de2b87aa3d81e60cc3f3bb9b8408bc2162e40893eee309928ee46d5aff48d878148320713618e399321d99c20ecab3bb03fa652ea41ed98cd228a30586269e155f22d94cbfaaf620b2de924639ed41520fbdde437fad8ca2681c434da5fffd7c74bda8e628eb1b70f0bf277b88123d572d9a9e532fad95cb67f1a7bbc10440ab77482ae61f3f57829386ecb83fce701f4f7fa51386f42cd467b3b3da689ed82c5d175a7592d3a7ba044bdab356ef3066cc4aea2d3c75ad87b7c7002435568d917425f5ee644a93aae97d215a3250d23b15b9cadd430cbd5bd7cbd7e6db988aad61cd23883ca44b1c549c14db7c137142b418c4d61508a9b5f88b06e2a6aba455ebd1c92fdc258b882422a2226606db352d04ca588ce5aca3c61be9b16406e39f079121418d4f85a8361a4e3a1f02a1ff55e7d207cb9966151297ce969eb1afedc94da53c46c435865e88867460ce78958dd8a6354ba93a326cd6e4516190e4f0be263b13e1e6980fb81d35ec96a81f5543a5dcc76974e2cd317c43951261954be898d13a892cbde465e2567d815b360d8166836c394c6fd1ba05e35802c25823b1a2c604edc5a669bacd61881bf39da2a9f8d4745218034534169ec52c9c3774271c19691c536e0deb4c5e66c693a0841d890e289f98eab786ee8b7735f4848e34f8bb3c6fe79b2207014fa810b8850663ff9f05681f5c0b7a2a34ac6dbbfe516661aba1d45d184567013c893f7ebb08ef013039c6445586744ff0433ec201a227926315374c35b6d5049fcf6ec6909f5c49efc96ed68ebef5a6abf80593a5d1b7e94488cfe3eeefc48efff416d96c800b1507498b86e186863a84f4a69ada1ecdc2f0242f599d172a6e75283dccbc3b69b42280e06a6905e0af350c8e99a13d9a7a07208be797f438481d3f4b759d2a0f6959d5fb0b3ee4c471e5b40c869477853b113bdf6c8642b232b729f2ca7b981e5c41a769bbe35cc6474c70be98602fba1df2b7e15cd7b24e1efdd3d6914f7991fae11b196328a428f5ca0e1d0c90651e130431186136108e77d20ea7d0a8306c8501121288698a887c50b1ff8ce02f09f75969e0ada33516ab485d81de2998aee10e29dc8b7397d006f4d9a492040b97d6161388485ec0cbfec7a85065a6a02bd1629d1a0cbfc90577b98c8783a32e286f59ce2f7cd8891baae7a017c3822818a24caa63544cc3f6d448768e6665fe6ebe09b5f259ae93dae1f2a1de2148c464dfd40b947ee8fad290e8ff98239d0b403f18187a59a781749d772d83c2c1cbfbf1d36df977522454e5623a3e7fa212ee7d3d222b57b9316ca0c44399beadd406a0553e8dca01a778d000102f901f883f41cdbc146d50d91d4f63a6cc34189c99226d0c8bb7e97c13e79d0b813297a742658b560b080874065876affac9e4cf88a11ac39cc0b06867136711e4c86801905ade1e47245c991bce9715f0d39b1a86aadfec2a990165f391c726946c9b85ef93368536d76a6a1a1893fa1f3795d13c7e6dab83a04ebb2652cc8d33ef0ff664bcef886adc9f8f713cab94108330ac9492d85e637faae442713c20b88cb7dd9d69ca427ae13e2452031ba8565c5af61d05cce221354fcde6c7034e65673b58988742ff8372515b73e443c27a15ca9bdc97c108dd038b7ae419650cf9b8a0a1328c72367636ac38f0f5740e35a63684a901638173f6d562d9382a1e49331024d4e00668cd80be5c645a9f16b45a34141632ec920ac20b0097c67969ae054bcbd38f1a3ba0b552e368cd1043293d52064082bf6bcb3bdf325bf74eee8cbcc27ae1a7319a4664e6514ed386d1f272d7b62459c3d1c6d74e4876254ae72896f87274bc27cf75ac354aa936254318a836e31084bc02300a5f586d2cf64869ea79a4a89d90b9809db6ed8d5dd0c8526177a7cc401b3ac91cd80553551cf8f00c55ec4471148d9b02e15d44e192736759a8b6863f92b4f74334b4970beb6f9f0fb89562f2cab0fa4c1a6c8600897ba6633202acf8654287120b07ceb3ec2575dc225a6d3d9ede76f9a3745a62922c204f5f916c53b7a4042121c6fa2ae5f70e7cc747e80936694fce2ccd79149afa5dcd498321068f14f40d5d3ba99c5a36a39a23e303d08887930ea6b674989f3af241613a88ce43ba32d65a0a7b3ade42c4eaa5831d8f1108cbd7ab66a17d4d2c704e18be4aa80f758bee86b2afb5c1d28d63aa7bfbe9a73da840931681d4a321ce03712b311ea6f0cf0a2430481e2f3ba02ee3b7bbabf1a6232521da2b2cb23c9642af675f873ec4177ce5ef350948700c63bbcf396cab6b71807a4ada4e5ab62a4bf38f1b18ee0124f4037ae1ae95592014ba9a0e02dd6a2f8fb7f224006777b52099cb3128226f40703aee5b84de0138df66550a1b1418012ac21d7032d8f7c084f8e625b0d8e33e60fd0425724ab3fcf5f673f8a01da9169f07064d465a48dbbbadc9bda59429c9fe0819094c094528111e07b9ffa193d383061a68f09131ff2031bfba86dacc1c847b1a7cb81c24661d0e72efb3e52031df38c87d4c12ac92b80326c4f5a9a781c5bd0d3e0b5bff3df73e7147ebb9eff1591216139f29b921bb9e7b24336820eea8cf451c9f92ce2e9b5797862abb5ea5ca9f57b78519d9f53366e4ce91c2e89fbcba8d44665d98101fd9f53eb2eb53d74786f9ce30fb337bd6711d97b9bdc35356bdcfa029f7d7a4bc7a7be5a87a3231c6b0b63eb4aa8f51556d0b8796f3b8f7bc26efb94fc8f6dd73d6de986560309015abdeb03e4caa85c39edcea2f88fdfabda0c2d341d67bfcd64dc2c23dae5c1f0533a45918c8eafd5937e68fdc927dd74de26fff8b9f01fcedbbbc6fc765abc5fad60bac4fd2eada7bbd6ac52cd64bc905b11ce41ee6f638c8fd8c92ddecf7c747c20df13ccb712c8ec5b1b8ef3ecf83613dc7ea4c1f8675ad839515b27ea68cb0f21be26f5f7ef35f85c3ceaab717666160bebf202dd67faf2359f1db81c13daeacfafaabcf383aa8c2802b873d19857b5c5df4764243441763524ad9f98d394a0b3d2ae55fc39e184869a4aab7480e2231bd0a775053692af33dec8965c79d8485896ea44d9552a95231a7e6fc96e2e0a49284e5338a01238a0c41133b0e51ef7250cedbef1d8494d43b517cf6bd743d0bd7bc5e3fef0ceb16f31dead28fe98965bf31cf94eb55b74bb152a9cecbdd10eced777fe8a054a8fec143a50d2e93ff5d9f76d2b97e664abb7ef2f23bf39d2c777e2014a9815ca18bb515a9fdfcc03c606142ba577df779b04b6f9414356d70504ab95ad1d54c779e49c14c89b248a556b1565ef9fb02cbe7ef63dc91bfc81271c41c82f97bf9ed7cb22ca4fbb0498679ea43e7a4f427a5db4629dd363a27bd49668c0d8773be6715a5a92db55d25df1107650c0e4a235706186284b06153e92a614fac6b0e1ec5cc44dae083993828bf69b7b7cf06aa3908f40de4b3101c827dd8537350023161fd290c27a1b8811c04a5cfac66742417739f74503bb9492ad0ff32351ba5fc884011494e9b64e77b4391e5db9f13578b75dce49b8a73fcfb46e274505096415a4fffbbf359dfcef714e6bfdb38bc01488755a14f12d47ffd3277f33aee40eefc7be17b144ed2ef79de24fd9d5573ce7e15eb95c8fc759e576b0d9da38313370efd5531cf6f4735f3ec273e933d1e930d3b28e8494769dc42a87ea55aca10364a0b15e917f88d677e5e1fef2a33b78d6e53c9c13695b07f60887929bf6b3efb3af7677de838e6a367d4abbe6f582b4c49e7f934f4c4fe7e631e7543fe503b31ffcdecba3e9ebfef2831c3843d5e0e729c88f4a47bef591e4eb4f437d44f24a49c9b3006dec06a647ce8f9acb9b0ebf9b5df2be9ccad727f76b5ea8965ae49f77c0fa57abfa1ede935f44215472bb601fd630e6374088d30c2a0358e336936bdf4f219180dc3111f1a4758f77444b1a80f2396f854f376f214b1649f60f6397f54711cd065fe3f788814016dfc6625f32cd677f4b258feed7cd141d6ebf8ea864db2cc85f9f8d9d77197cbe5c2b0984fe27af931ae97ef8a79d537c9f3869e4fd819e65937e686b36618da24d3d6eae7ea59379c21af5e47dad5775fb7e67ecc410f412fc74d06171b462d30f84c06234766f361f36396f7ba62ba96c00834188a04a960c3c814c6a58e929d3265ff1e25242bd97de2238d9d561d87fb483f7c8c44cafc37eba278622360d8bf991f56fa72de28bdfcac52dfcdeae3f56ae7799ee755af560ed57dde965a75ddeaa6bebbabe7bca6589f4aa53aca75b5b2525fd7a9541ff3aa57b56a5575ac17541f1313934a7ddff7d9944d7ddff77d2a954aa5fa2e8f8328bca211fa562b1808e598eb96fa56b77e8c13f62626fde021520486187c567b75b9ef783e10e3840d23d364a53ecf318b90935c9f933f781ce45a58c74121cedbebe81724c6f364b0687d41bc0b6b7dca535d1e9d99a3966a085de7795d6b97fa5ef0501f2c4725a2a5ac82e598a5872e62bceaaa1cb308e1e0aca8528534e48a795c9ece0f2456a52e56ea73c17c5f4dbd6aeacbc811242d0f78c008aaded56ab54a7ddfd7610be3ad9872188df0f3a53e1b1d90606aada8737dcb8542b96ea40dc17cabf5ae168e12e8bdf8dec662711f2bcec6c2f36af5aa17c3d5ae7e40ba47c96029d3ff81e5eafc82d0ac685b974793bdaed6ba45ae39ae3b26ebf7428792f1626fe498440db064987b83d6ba9106b66e1e04e2fe71efddd8a5bcee8c9e64ef77b21889c0ebfa79dd739f65b15c9d6b29872d20d118414a2f068913f3db870490f9f0c6cc8735726c1e1c8e3147c489c19eeae3b1faf83371c63aca1cf736489cde229f9e621ab4f13eeee7f702c255af6e1efdd8d7eef3c9711d57b9ce1ff61f976d1e256fdf5b9e98aa8e5bce5b9ec755cf63a1be5e188bebba5f7df75db5df7db7ebb84fb55abdcb672b9464b13afbfdd4fdb675b2e65d39392c60fa28cab6af110b151641747c7edbb7c3e3e0f6aa192b32772a216290bd1d557ff96e3721e2d87e75db099d637bd6ed2f47f275d4dad24f114709ba98eb9de5ae0b06f7537fd1c1f67bd6b6c0fb0460026b736cc2045a642ea8ff5be5d88409a488411581817e3b4d98e00899fbce4625b962ff71f0a9bff49377258babb2b32c96b5d6bbb27a393d72ba974a66982b73abb99487ea3a55a742caa1f7b0721c5a2039e92af7d995ea5b1fe3dbf8ccf5f16f7c16f3f175a81077e08f1107cf57dceab256f581d47cc47b7c271071dc3b8188430211c766048c98ad256ac674f564a8ad96c771b5bf202baeee784f6366e66bb59e8ccccf566be6b23c560ced2c164fcbd765a15ad9eac17ca89fb930df0e6a6666c5c22288a0dcd5f0ea9d79eed2f82823889f1ca9c70151841c3f182ac8d66511c3e380c092511c105a328a067523d7d158cca13e2531bc1a09188938b6181fd77d4a58313c319748928cef03723b18ef2f6ba6883b630a41e663d0f0b8ebfa0104241a1f10170ccc7f4062bcd7e56eab755d9d8cb742e2a07723b6d80a8dcbcd98c15d0dcfab01449519fc71a8185a0406585f81c9606da00d488373b55a308f7a1817cc8c193ef3aaf7dc574fc6cee00033c3799cdb772f3a5f35311fbe6858df9986259392f9648838fadb9121e2d864be83792c168b85b232f8539e83a88fb9ae0e85c213461e79792ca75da868bcd5cb62234862781d2c88a420de112f6a604818052decd0f9930acf29ede89ddf5eabadcf645fe2b8dce5ae1f54cfce6df3bc59c58f3767ad36e2b0277ec9f33d22d8b056573739398309db1f7a2db6abe22625e7b5ead939e7ac3ed49cccdb13bf64bad12f59fef4b07d8d5d7c45af9b1b0d2aadf46fdedb53253de7c4b38b593d177431165affca7131eef8ba850de7f48cc271ebaedb3c67c85c8cb28d6b1b6a9eafbc6d5ccdf1e3288d8dd640adc452a794fe1cf79ea43999ded09753d4d7c2e1ebe39255d9dc7d11faf2626adbb618918cb89147d18ddb386e935b0dba9e8dce1e39b495ccd9d1e4c9ca13f5c4bb56e2c4cee6b9bd4e9dde23e290ff5cd8feb08701bcad8bdcb63bfba50cf5f39585dda48d76c3a90d53ee6be7c8d54071e7189352083dfb9d9b73ce39e7f46deb269ead3957aacffb50d6cf91b2f9361db330e1950303f7b2c5b22b15fef00e2f6af9f9ed72b07bd4c453061c838b4be52e0dd3279d9f95a5216499314b9e9c13843a8f5cb064ea8357964fd302dbefd5d5db8c583010b1e41c6352d66a75d5f9a0c4f99ec3794999fcf9c4e560d49132f9b6a7cd9352a71408cd1c460202db34cc4923a5db0613f2136320274f077b7e011baa1f69dccfefa78f82f5ebc0dc1f899449993f7e7af0c63fc78b700feac08ae470f8a58c4eb954240623fe48da670a3a1aec4f96bf439b45c44cc08699346d7bcff10b9b44c9f1dba8c722c2326942db1010691b8efd4b7408e091325ae7e8a7750e9dced1afd339e2c72feed030812eaa3a0ed896dfb177e06407b5ec454a16537ca9a4c3c81d24e68e4f2ce920461b740e93a3d213536ab051e9892779d32147a5277e7254ca128790a507b9bfc654145990b24b290b0cb2cbcb22257791dbaa8a1a650952ca0282e82a58216d8edfb5826043f9d444a0c4894931972492541c678b35399444aedc7a820d37199b9a8acb1652cb20c2c68f4819d370d2ba523f8c4e48240ecd37ad8f248e74923289c32d4999b42118de8439368c965bca59e1f0e686db8223ad480b0776468b0db7229248c75b566c28899a84b039d570db22c3269228ac84961c9dc851490920675907614708293dc9f2e59638bb92d425f70dbd62521e92a85023c4262a3ef349aa65b96d461b51ea6301b711715c09362289e356423fe2ba13307154519f1526a2d4c864d2b644593f53adf5db71efa38233bdc8239fc588590730628a833167a0b37f189b90c8a4dcf8c641f93100350d86fa180ff3ee9f1fcd601dc0082a0ec64cf3a124e2581077f0a071b8a596c9af3fb0427821e1db09597e6cd00359724b3e029924652d71fc49da00fbd64b4a93936bca35c92ebdb6c4a6d7a57982a5b939449bd0f643f3a02f9fb62c499c4e0a25d196a31c4a2226a4ee96120749e8a8a3fc30492227d149f6f70f8f94b55c92444c4d92e986483269427b3da5dddd1407c98f6413a11ff992169f6d3bb496f6a323f93580e65f98c9a4d1bc3f49a26a84bdf2528a224ba222d8d78792e885812a2d55854dd19a46695c53a6c158b2a0736ca91f5a1eebb979705846e91cfd4451267fe2b0564b14a4a9a94e99696e8ac31a4a27983fac88eb653ee6631ee6c28ab41ee63ff3300ff3450060041b721b51e85b24916fb1841039e6cea15c420ab754abb5d229cafa9fea8f05cabd1139d988a22c094da21a26bbf9c0ca8fd9cb418e4a589cf2cc49ca464d2470da2c2a2d1194a5936001349f236534f7f53ca8e7e9b89ae7913835af97f12de0f532708e94c9d7cbafb9341716e37561f323edf5dc57a4a3b9307f89246534175623cdd621dc9732f9f8e945812e4268010a7ee0851020b88014589ef0040cc050220834f9ddcc9546f265ae449231572e49592b7e09705a0b4b220c0512f933c8b7417effc8a75f6cda881c442271e40c9c8c9057b2949228e2909bd146c541c932c276292ffa4c667a75fc60f5c39c327dc9c567616c82551cafc82d3e73c76924aa384ead9db06891e54b2b12c9716a5529092b493e9b59965e6af15954c2c2546923914140ea53212ec433c530d00637019446f2e591446271b11bcea1583639d85d9de458e306afc9ca53b8f2750985cff1393093974501c3fa9bd09ad06686a0c50f2dd26c5e0027b091269ba6fcd0220dc7b74d0779f560231293a631c9f138dee632711a1314dee65b38d89a18df34dfbf791177bcbe7f9be233d877aba80a0b91ec6d7bbd564c5c1cec6e1937f497f1392e13a7e5983f5f1c6c20357fdfdd67d090efeeeeee337e2ae9fce3606d3275dd8cd8e3b0497e2c5984f2c42efb13c2651a33fcce086fc83366b8fc195d17769ef1f27a97ce319d494eef425e1bb2ffbcde54b3a441a3c99d869ce13fe3fa6399452639d8128b838de4c5e9de09d4e2c186940985cbc469283c656a1a3333285348996ea230714d92f3e23f32c889cf6e7c7fa5f2c47122adbf4a719c49ebaf531cc7ba8d0fabcb5e39556b45a15028017cf80a0000621fbe3cfcfe85affcfd744252d6efa17099340d85bf71b72e4c6d0387558643db7a10872fa61f98efa742b29f224901e0f015809fdc00c0311cbe6ae0d062ec17237dd7d0c1c6b2bfcc87b61a55a3222bb2cc637110c9c8c13eaa551cec8f65ff1a45347058ebcc8776060e5ff367f3a594440ef6cf3c45eaa31cb613110a37d29e64dc9873dc4843e146dacb0536eca5fe560d6cd84b3ab781926e4b9b1b693898429b6328531883092953b861c9d35ea410298c5e3412536ea1dc9fbae18694fb5137e47e3824ca24abe4f6e2078e1b693637d25e3dd88f81fd3a7cf69b0eb9bf47dcd1b9bde6285e6cd1010449ec0008a226509e58f962073a8022085fd09cc99f32d5a51b0edbd2c518e7063a1931b032886ce759ec4fd71a28eee0aa53538c4c3cfec367f5630ffba18e952aa6ee8c60ea5fe2d870730382fff4611cbeb6e8a9540ab5d92071dac87db3f6f5fa07c11cc6a71ba7c1a59bbcbf6c3288ac110caab495ec9f8c20624839a0a6b62d661810dfe11ab7511f1919fda4ace8e20066e7bd70d8e3f218638c9ce4b819a26c7e748a4e73fa3de2e0fc19a59839fcb8c6c1f9477a64a0d83096e71bf159e8c56c74f4e021e2380f830c94c62b4499f5dea5acd8242f593057b664988ff94e7af293f9ae8b531a919467a0714a474999fb9e889459b88bb930add6872a95bfea5548dcdddd3b0808c89b1c1f719093c148fb873dae1cf3f16538e2b338a41fe6e927c41f0687314fdfdeb0b3d75a6b953154ddb35e76df7a9f9abf776f1a7c3818b63d33f8fcc4498447e2c4a448a40891989a3c4e8ee8622cec822c31e5baa1ea86426d8f440721198c1c89e249f69f0155b79b307478d8f3bcca7a71d57330c741a7cf49f9614e8fcf9ce3721ca745601471baf727e21f830c468e6cc98dd3d23b831ef67ec893de770fa9d3a34bcd9c9cecd56b0c5601c8fd610070cf7083abee6eefd8cdfedb64b6e441177302d70b6a7af05262889cd8a7b3cb582fd1d5e00246091b3f723472bfa2ac71785cd65f639723afdc1fab79bd96268a4f920839ec1f2372d84148e4b09d6cb4b09fcce099c3318c494af8c7267218b7442e395827f770b03b6fc0065360415484132c3929c0890774b043920bb65062ebc1098ae5074b54a7870e97dd7c4d0ff7ceed5154d1435158d13f4d8b6288289cc8e1cd13a8a8413161dcf64426c74d15fce0dc384e7dff9c1e51b2ff0f9f45a525a0ec5fc4719ce6cf6d338c5978ce436625d97e0ea5228e8993faa6352e7b0eff56f3a528b9de9a8a69075d32bdf145e460cc716ed165c9f1b7e4887d3cdf744e3cf94ff7e8e2b3fe180ef1787f190e15799797220ff3d4fa12f351629f42e4b370488577ec42537cd6d8a50ce17c28e3fbe38cf78f345e7e0c3f0b2bc9625921a93e7e5ba1f9f87d14bfab18e0673e0e19e05f1fff77c476802bd8ac60c467e150ced38f7fc467363e0ecdfec6c7eff199cdc7143ef603f81a1f3f077fd4f1b28faff38387082abcf9f931c7cb8f28bc7fc4f1fd71a8005ff3f17d7c5680877decf0d0cec7f8f84c7c16a676fe7efcfea9751fbf81bc8fdf41df4750002f3f860178fff82dc5672100fefa1407e3dfb82ee4607c1bd7a5781407e3ebb85ec5c1f804b86ee460b4f9891de8c64bec4136deb13b21c037f627f3637f643269413efe00e2a7709dc8c1f83cb7c603b9b5223ce4d68a6a84dc5a518c03dc5ad18bc8ad15c920e0c2fc0bb756d4a2dd5a910d90cfb75634801570ad284c21bcf1b16c131b40ce3652c0e100de062fb1377068936fc46cc8f0128e004008b0a3c60a78054c801574acd029ac6057c029700418c0a7906dfe065e52730a9d75e0b071d84f808c73c85f2b1a000e8756f81476d8acf03776e01c807cadc8713894df3b7fbf0d9a0dd9c768351ee32535366936683807dad08e8ff1d4d8f19807e7c0f3b5a289c321da4f497bf93ab756742324c7fbb8b522146ccc70ad28948535bec647acc6860f1f5886431b1fc34b6c0d1cc67cd4a8c1172fe17008b991039bc598c5b831b399a164333b8b21e350376cbccc47ec6be025d587ac3eca870dea6ff8c039f8f85a910d1c0ecd5e96139b7d8d9c8ac3211f5f513e1ef5421eebe0fb353ab08f8197549d9a4d07ebe01c748672be66082ce7630cd97038a4f31ba7f3dc0ff9166ead0824228067e1d68a028055c0b5a2f086b07fb150f3c22cb010e3e2107f0d5e626138ac6101f68a41c3020088d4c0995141851a2ac454f8ae0a560599cb7d35f05f166a1e86975416aef71f0b5f0c871f0ebfafc102ce8185af15611c0ea9f017a7468587e1e01c6a451e0e875878ef63e1bf27f2315a8841f3af16665e062fa92dbc522d741fa3059c430b433807189239400a87432d7caa6be1bb3fc0ffb8b5a27f81c6bb706b453362f0c0b5a290e663f0921acebccb85972b860b32315f2ba2c1618c7fe1257606872f17665c31780927e305580f5c2b0a631e864708f32d1e2d188f1a1e2c1a1e96478b8683c5781a175e3f8397d45a11cdccdb67b9508343980b380717be56140387433c9ea6c78bc7cff4c039d48a2c0e875c78cb72e159ffc2cbe0255c1e9a9189a979e807ccb7f0925a2b72b55ef5333f562f83977819e7f0e36b4531381ceaf12e04c0f4f8165e62f310d0d3108073a815a97038f4e3550f82a715ad703804f4b41fbf7a04bc8e44c02d8299485a907fe1eefc01ae013013a705792277e787dc0260264d0bf242eecef3dc20d889a42c3e90bb83dd48cae2ffb82dbc0b9785a7dd163e5f165ee7b6801d48cae2fbb82c60772265f17b5c9ce77155f81d17e757b82a7ccec5c11e45cae2cfae0af15976a5fabc2e85aadc46371dae387191e5952bc021a908d92fe704100f6890fb6e57e0d08497dcd87f6e90d144875f2d3c054439f4bc0e6aa00e7a428c8662a392135172abc046252780b2cff49194a63e528ea2b8da5fb747ddb07bdbb6af8fda36eedd49d3bedc46a774284a4a5f82949a90a2d4049538f3ee6e5c83ecd09821a3061683e6352313e38269b1ec4af5795d0a55b98d4ee911c7908c1147e2e837741377c7628bfdf4b7d894f6d3fe24946edb8c456c3dfaf6baae582fcf9fb37f9b3e9e67187286357b2ea54b29a794546c8d31f4ed7d8b9ecfcccd45d735a6d5a2aa7b8cc94dfb51f88bb27e4a2b9e0eba94aee8d54fc2390af5dd44a13ef53a1e72dfe1989ab3295d861186f3407dc8719e39cec7330d3be4388e435d1fcf94e25a29ed1aa4dbbbb3fb3b863eb2ebc29992e06e386ea5dabe1ac95b8824b440dec222ccffde0179bb00c82c4ba38cbeeaca9824acef8679bb3279ab81cbdecf6fc8965358490c237ba98da668475775784eba7da637379d531020d13927a560d859bdd76b06602c16ab1b8aeb0135e9ac1bbd712884ac37e764c1cbb3ae39dba1b8f164c765a346bea7dcf400930d1ca594db3014a73ae79c94ce39e79c94d690326fe64d9e60dcd4d3eb3dea7a9232a13566be5a1f63c854ca9a10854d8432c521aa8b1b2be5cbe0b0c6e01074ddc0609a170bdb95ea422082f47fc0439e733e2062f1c365c08e0f5e90e77718af683294e70a990699b99f909bcca1325d828a9329d34ab789a7cbb9216e269d93469933461da773729c47292aa57313049d14b6af7fb00576562fe626d3c7c00db592fa994f14683e35bd20cf27982ca0a0810be6539d4f3f38541cce9029c5614af5853d1ef57e436d1d0e67cc94e3388ee228a5f839b776573227e5e6e4b8704d4abde93dcd3929a5730ee1aa9e75b9bce8622cf48ce69c734e6f13da9c28c13ae1607b08ca95cdc9e6c433c261dbdc2975a7d20a4a77fc396ea35350af6dfb88c39a0494d7715b8ae3a4cd1c47e9c66daf2028dd81154ae79c3d2e21b85c2e57c4219f860c36976b0a51e79cf1a9a90bfb84a4461166f56a6c6a92405febc6e44570efbd32a534c60585a294ce9067ca514ce65669b274510330d38d62009c3bc41c94b1984df773be0563311b07a5f56fa80ad97e1fee4e6a03ca2713ef1868b3d1add640270976e69c74a3b4e7952710a2b4f60b3ba90d2a84a0e295279daf24d4ca717376777753da3de7478f6e78ab3fdfe9e532f93157709452dadfcee402317777f737af24f9b047a823479b9aea8a45540df78ffa9aed7365ba23f41b812c6f95d227f508d2df38b07d42b86dc31d71c88eaea2df3468063398c10c6e64fc603b47c7c171d550c7d1c139e232ff47c2612d62c3d43a46846c1f711942964ba4dd844532fd961f7efe9c28e3362ae3ec0c360b2d6a396c92c3f828a62e595c91bb2fce1564ff82e01e72e73ee44ebe20771388dc6d9bc4e18a10b8e4f893e26d08cd49e8d730b3f7dddd9295acb2f7dde6b9202b3179912e5333954ad1546a4ba5529d4aa552a91a4315369992bb8f372a69d1829cba61547d887a57c54fa28a1fa2565fc8fda7ea541f8f0e10d4901754617cd4a3be9d988494a6ecc51b360e12e37731e224a8979f84a23e224d90c831da84a8f79f9f01502f1f080a87f15331fb873203b88b7376bd71c9b9797159428e15398e286209415f9a40e5063d617c80e9064188c0053ed86290448cc20a2e4b2059a10497ad9baea6105418b15181844b02548880cb0858804495120c21828a9f1c40f132f445cd97a31217455021628440101e8e50c114451cb184142a24dc40891afc4083218ad8602081a3176441c415285678a16d44394726412a78628b2e44a0c310ad9192686202229800040589a11d6c41338016113481050d7ec8e2c43614df462e10e0b6b984145e50527cd19256fa58c2074108da61872078a84d528c44f08227484b6c4160916a6a7171394d49842888a2b0c12a8bd521f52322e9d81b2f4664d162450524f08226b760c2cb972b2d28bac1083620a628c16a0a1e66b8a691cc129bd599a2079fb25226450a602997b5513881a5839dc20a0c9629a0e0524d9b13ba3475f1d2654b2b09ae7bb358a6dc5c56564c9d98dba6c5882e8ab971d1ea800b1f720812d1424ce4d6c143a45d3db0a1ad913a3f1c04c20f5d40f1828b2c4b88410b324802942d4f4558f98126a7109182020915c53d39594a6ab71740f1c407050f70a89728595cf981a236045a93219878208aa2070f7c91044d6297949b4ff7a7ae35503be9285d86dcfddf4bf6d77142f637b205185d46a0b4850df296a352171f96b81df4d77eebb3bee925b6884d578e3edb50f30a2f4ffe6b96b1e9d26ffa1dde1284e6647a93bf04f8374ac75fdce66d340f33b921cf8bf259a58b3e63cc9d00a64002a20560c8a8a9460a1aac0b0d964209b410d170525043a2cd0f801130d842bb01461751687e61131f418375a1a110d4b485e657c710ad6be92d55b15681113e6ca1759c276f2ba1074f48a24d1730e188ba440e4e588122820f4c2822e54313479d27efcc15465f9a40f3cb7a2204cd8725c8400934bf2c258868dde7c9cb838a272195276f64ca4108b6ac3c797b071c6801a2f9851d41ebac272f4d0f6110d15c5e1a1e48e084e637d2ba96272f00b24479a2f9d531040d0b1f4039a2f9ad9182e6f2e48d49d8e2084434bf395c689d8c5d45960c0c10a67872a2f9ed1d74a035e91bdca5937b0e9385edc053ae9d6b768261b2f129cfcef467a88b3e83499b5a518c85f31d87f2a35de574f27acfc57a3e9b2e6145e6c72b999575dc4aef2f9474f8065abc6819428c57cb16d9a5a4658aec72d0c1e89c25b27c5696bcc8f27d36fbf3f3e3b3d1cd490f41d1c1e644fe48265e4bd8ccfce065089b8d3a69268050a34e92da6732119d7a6ebe541f6a26f8d2d4d3890e44d03dae9bf9d450d08087f9f4da9a66449a4cf878cdf1a962f9e104f129c987ab3f3f3f3e5c77bb6482fad0ecdf42fee7e7c78726213bbb7c36dd67cdf26b1bd1eedddddddd2e572148e207114b1238a754ea92e2814b0aba38e1843ac194269c9c6823dae483a0366a427931448326275cf2e5e3fef3f3f3e3e3b327a7354509053d393ed3673611b77451dc204adce2848f6c02a4c9d24515f02646082a6270e335d0c8196862c5cb947a1612a910828a18f478b309faaab9e795e7f49159880d2a84a822d329a71293be90770c1b92bbbf33cd72f2b8109d37ed20a00bbbec1fa7378e40bae81dbe81ed55d775f63c7bdec845a99a5ca439c6e40a22f82ff776971cc78152d6b5a228ed6db39d94b24a59a3260a4729b357c4295f7246b2b4aed0cb9e83ee9ad3553f944faf845e76255caeb7c615e3ecf5f23b49431f9a69f072957576eaeb77a9ebcd89230e2cbdc9c5df624fe9603cc535462f5e9b24622bc5c61a69186164fa9322119f464aab0168e424f3b7adb7eda77cc57c1aa1df673182f2a34c6d15d5cdee7ab5eb8c91c24690561b240a5a4a299fcab9350f94084309b209474aaa1528319f485235f9418a1f28810929d862072422120a50499dbb532680a6f86eb424d11c95b4247182eaee530b5b7354d282032d44d82694b4c8408622316829caae450a13f5e9bc7d8f64814f672891f3feea34f2a03147bf74e18f1e630ea7d1e99c2f6ccf4d2ae7932ec6c24d2802e59abb6efdb496277222d5a4144dc835d4d2142ac8fe1f93a229fb833639b23f211296849df329e2f0be4b0e467f180f58ff707b62dd8132d026f4441763add5dad7eb693025e568e43f0de414893ca11cdf6f6226b0fdd18d40bb9138f223fdcd822f659f23657ec3a3134391a6c55cb03569ef2e7c7ae65ea251352efbbac286b663b6063db1ec3637f68ca428caa18e1e30c03943d85047f852080dc1be5e0a28390429109eb0a0783cd1358f1c6c4a7c20898e59e16f792849f193ad93d18773ce392f2be2885f5b5e1b71d42ea2654bd92d2b6ae6455bca6ee9526eef60cff606c20bbcddbbdfdbdddde5f7c27c9f3863e32056fdf9f7ed19e3cf6f27ca1cdda5bb8c1ea354c196fef80109a2dd614330d852ba2aa6e4a85485a42208560055d1943b49a449ae28990713e21fb7f7b65adf85c8b60787f808aa48aaa24aeedaf3af1f6ea8a737be866c84d19f4060f4c1ccfd466b7fc33630d2edc13c739c1736297d0501aba1024d72ccfd09d9b64fb261d886c14cc1cc4417a3c7e831aeba7bbe3ba53ea5161f9dfa0b171f122687fd6beb800a1416dc5b915f392a4511be361278946e6a2721bec82087fe93bda3855ecb1ec4e1d9464741396ca4c69294458b945a3c010aaa56dd8580984fe430270a1c50a4292928b1ce2aa98d31c6fe710161fb3befeeeeee6e4a5fd220d1c138973a1c70883297b2db654b49fdc88b263f42c29265690b1726efe24e6ee4b3d0c320a2e2553a8a93287ee4476ec58f8efcc88f7e8cdea9824472a94a1c9740d28acf427f924712483a914fa41429248924156924ab48a4bafdf82c9450647f9fb266a5ac4aa06a5d350fdadce8c8d11192414012480249a0ec59af56b944e4481387d84f4ec567613739513fc58cd37dcc38a9f6296e54b776722fbc84d14bf412633fc5eab95e1f036d6e72b84dfa933fcd3aa323b560a63e856bad3936f01481410623487a66f099855d829c1e3f5e1dae32855f95272631f1194f111864308224a459a854edd7544109d5d0080000000de314002028140c084442c160304d035ddb1e14000d819a46744e1ccab328894118649031861803080004802100333345db00b4e95fc2fa31ca6c03b69f7a7e88710585b4d45a634da58cda81a96afadab428c6965a0f4ac51f625878700baf713fe081ece63d3ca3977693914e979c75361b5b4fe2a1b2197cbac136c79b33933725cca924a26d43b045ade2b82ee1adf7172fe4741b534cf5f1c57ac2c7f9c1fd62d26601e52b0c3e59821f7bd2b17afbe31c9195c2847b8036199ef523f902cc1db9bb8f06be3df358df7664a3cb74614008b729b3b4b7f0061e351804fb3260645094fbd9262ca377b8ab63148bc2af78bc282ee915eb19c9c455fd81dc476ad16e602c63f5ff44137f8567fb27f0a1376d2c880b59196e57878b27bab7c5ebe8a2506e4572311a04fe15ca692aabcf6755218576a5706a8b85649f083946b52064e3aaa6cf5f0e1a5d5aaffad6c37195561a9c3f4c4ed3e28f4fda107f323e4c7ed6de0b384f0ac1f9cc3d2f4542cc180070e3b5d5dc6ce3f2ea679fcb0d5038543029cb7a60f08c27e06d62da173d0449a30b9ed3f92490f792d0b066d01e8a35be063d570fe5ffa2ce9dc2d0f41a489e49f5b7981d2d134a68808b3de54bbed1ff94f51ed6ced78bf8e19a6a59ef24ae9a38add9d91cdd8bf8a84e29c22c7fe834600942ee77233e670e37e136b3ad630e2ac3389a5ecf471c0431246aaa5ca79548992603ae2c7ce098719e9bfd24d0c36a7ce323212d24229399652bb5973ffe820dac62b469715fec3c15c8e8d7efa62cd2f79e747cf649918f28892dc3953a1da76927a60573d88f9fadc147c1c783fc81b276e3a8bdf42ee333686f09b9618fb83cb10967231df607e7f2bb95951d89e9a88efa1a6017aa58af1cc42429a676d93d00962abbd698354c1b51bd456a6dc2a92c446e2bdc18fa32ec57b63ebe0411a901c49798e53a42d0ece903e8bea56b74c57817a593674471241ee8c3c4062eb890e845244e9fe4796e47994a21281e8b7c9ade2735e9da08115a64db1219b05678540449e9ca4288c272c122686aafd4ddc4273833f41eb6f61c8197ce7bf72f0026eec4aacb79cb72e02ca3dd8a344ed6423ea5602bdeb2b1a8828c82caa6306a300f0487c14bd2dc83caae6269019070ca48eb6ee94782cac6e992317278d926e138131b8ab96e263f7d9d7b2d482e698bcb081ba45f32e0cd6c60c93c261874f72a033f40caa68cce9161b6a7974394ce93da716ce41d005de6d8f8b14e8b507d525bd7cf36aea5c926fda0920db8f46dd4bb93f4533b916df31f814ffb13c835d0ed9bbca59948466480652aa5c3c5aba434b2625d78c5ee6da0564d7355aa36ce7c806644d7949c24b02934db28c954e2ea6873ccfd29cbdc5e7a24da84d5b50c58779953929fa5a9eb8f9791b0cf1120bebb17ec4e5f06ab9ec32f9f76830904810eea0876a0d0ed119626f27b1d57f1b18b478cb04974d069d2c507a4ee3e3efca33e77ac6be5413231aea1605da3247b52c94bff0b91b995f0a979ac1596aa0ba2c40e2c5cbfa47050a51d4f9158a249aef7efa4c37043e93ec12dd02fa6ea62d32f4835bb93a098de259187ffe717723484433ee0b7e5335d5084ed0e0713abb6f6614623143a6427280308a4e50b45d0401b59b0730f749499e14dda4fbe326774d6b3e689b9a6cb5d820177be2f8ea7d007faa237cedda82c9b2aecc8b1a209a921cc057abd47a04b630b9a7cd938fb00e1b1d02a2b2e1de1d3cea0dfa9756f3c2b958536a9b0fdcd4078947da0b33938e950dee0c2c18bf5eccea6a79e0d095f9cc1711565b14ff0ec63edca8a741c8651078eb48c3745fa902f4104bda4983c2a577e088e27ca35b24e30f8e7d20f3652fb74d725b775d3d6e0c5d0ba4521bcb29e6b20b5560757ceeafa080380b4c0ddf28d14dd9d2b3d809c1e76767a4b8deabc2ff196f2171eadc4e31ba0d19070fefdb742029a76dff5442dc9ed38295392d3d5bff133bc87ba5e7b0d9d8d2ae84cd5d65f176be939a92dbd3262d8130274f11bfb114c77a266dde804330928ddf0c46270ba618d95207a46b402b36a47954b4c44e11d60cec1c6246591a7397c779ca18eb7b82eeffa59a3a705567d1b9a363c5f5fed47a46425b519ddf93e37cb1dd3b6b82f7c5e31b72f541faf3709ca35c111eae34b83fea139769604a649f105192cb769553044b9b867643a693633733c281aa7280c7a442367fe90b254b772c46f3002cfc575c91b32d05c36b9b8b672984aa29d32211b202f37a4f89e5a8f5b99d1d570dcadf1a94c19778904d3f588043e841e2e51a1ca98a651aac706f9750dd9bc9cc629344f9956a1701f9c7668e0a3b505d1947ec71a547f6624d26bff0caeaa07b846ba4fdf38ee19429501dd3a185df3e9b392146dac5e827639df95aac1149e9c8dc98f6774ded67d58bcd441cb6880a1905ef45015f0ee3263a70de0ce2d70019b3025e4b1b2d3a5debce76c0f46463f224413f178b37d7b698b514c3afbb91d36910af493738ae7d06f38c54ea45660d86ada5d5708d757e1389ba6782b44bece978a2c9f07a7138eaf8f2b214d8926b72215ebf4686b88305dfd5688476acae5d37b50186d7f66e3f65e536caadf0d06e870aa4cb23d5019637e2586fb04e344643f072187e70f3edce89dfb2a148e707f4abd4512c9ca193920c40a87a6685f5917590e510c64321e208155ad7a96979130398e63e82227dfeb6446cf9e6b5ca9335fa84052ef6087bdc70deae80892952efac0b34f9fb569abc60615bd4d5a0d0c4778c5c25ac50853c0db2c88f31689e2cd632ebbab152023a75c9c0b869e48902df5c443e008c00178547089899d33c299a8bf5dfc98e0656a98c9cb9fd4c1bfe70af12086e1325f7fa4dd3cfd74f64c5bd02fedf30447a9b6f1e2d22b9bbd5cd1662a3a845899374819ecdd08ea3b1e16d9c772aa6159e94236af61a5db0a170d61ae4593496f26bdf307a49f34d477e0aff6396a04d694eeec0f94ca86e689eed335f910ca9de4f8afdda724da3ab04beb524cfa61e69405e8be3c9fbf66e04d02da6514e24a75d6433065225b6c054b71219c3b526036a51bc1cb071762c1970ead9424a0d834aa44a17d00c482497afdb3bcb8092e9473351ccd0a5b4f09ee0ea8e17387b5ca2bd208af41c53adf27b6344b07650ab199979225915dbc1de04d668a2688c5f5008e7da2aabcfbc1b07edf31d56d7fd7eb7f8a27d44a657318a6d9676a03b09c0f52e97670a798b67449e6bc70582baf3d162d9b898ba5db32bc5b8f717ca3f47ed1537aa513d146562fdf3b3edeb7a70ef6afc540dbc23ba6de3f0927ec4a533a817341b32999907632be5d4c2bee20c68bb8499bec616433e370fd09f572263cf26c1a190d49dda44b4a9da589444a074b4b4d8a9e1fca04a3883209c86423d43191c8ef074d096972e6ea9420fa67e42b4874a84f08cd4438b358b3a16cd9fe2443c159fa68afa161cff7aab81de40a933aa5d68f36f36bf5d9b9e9ef92c9853200d8d3262f31c84ae1bba3a944b10cd662cb0418325836b869c4e2f2818d53b477592293a7d663c26f22ce0e50e9fc0a16b855a27b3544a6ba5156fc03b0a299ecae00f05366379118f7d2b3e929257f9179375f1666f138355f8659dc2e6762682d1b5a15e1c6e318333373cdf8488206b0283181814e02008b8ca39c8cfc55d77f67e2cd0559325965881d7a69e4f1522c112dfa789ddf95a37ccb22a499e86fa2bef5a796881f27c74d195724b5c7347d9a978f8e76c909f6e11a5d16ff462adcd4c4a124c65397555699e7d2a52065736a99c9183af9b865a3bcf26cbbb8eb6d8ab72eb17b11c0145b87fc0c6ab6494207231082373b234fa13d5a2ad634d9177e7ddeb8bb37f575fb2ad94c072b59dc3fccfd568b9c20317a49304fd9955261fbab0e2a2b0d28bc23f611c9e297eadc49356ac435861bd7d15dc35d79fc8aa97de1d6c1219408d7501d3a3052d5374fa4d7d344451bb379a44c702418dce80109a82296824e2f19365d85e13f935e1f99ab195678c04453fd51b80ab5d8b3bf3b8f87ff8c5dfb7e86ea69ca66837765174b579cc30ba9d1c4ff9222ed8d3614b63ca3ba36ab07523c0ee91af96ca295f1841cc134fdb83bbe81b3ded1a5d63ea74246f41e3e6f70e4172ac857ea690eb73d2187065b245972e5d3a822850c521529c8a09ca1a2ea403289cca3372d7cf6126e219544fdb80b6ef86d26da9acf79b4dde78d2fc03f4d0ced51b4e580233852045ef17889a179dc8861758a45fe55c63be86f9977bd3d07877f61241215d595abcb64cafb20941703644f6cbf0ac4b23e9889eb0d7f5ad6b44c9718ed1e4046f178f4205ab734ef79c52a6af59799fba06687ebe21d8dc8bdb925d3214d620372f1304f8ed1133e3bc37522f23200239216e4805d5979d48ad7aa0c49b9854c3ab85eb075e177ed4c2fea42bc12cc81a372804c78320e52fe06a1de9bd5fdf5bad70043b0078f7896eba921c41f67ef2f785af4b98d4aec6075ab81c0d3e7841bc0979a3c855b82ae06d8cf3a689252072144f9d50e0b869df8bb969ff3e9f0c4de599216ecb0fad2b9e576e30465b32562586bc6b07a6f6461068e08ea235280395aa6d94221ca63cf5e29520015b471b2d021e502ca6c1502625a57e2cfc093ab0ada93cfc6e8988834864cea371ede9c9a4980619593aa73b12786a6e53f3b8f1ba1336c00638ee037322d8466bb69e57a93df0f4c02818204b91406ca792e2c5503355e00e9d96657a58e6029297fb2dee68854ff4207fcced83244a79ebe53784c39477da7bc6081e0487bab0402903cb5cb5c3958a377fb86c52bece076e1b2b7a331a50cb8a145ca566aaa626d0914b8b9984a82d92ea5e8c3e9e7fe94eb37632f349f5da08a0245983d174abc595560239025078a8bc5a72a1075cfeab11e0fb3c25f15d80a23de0b441f658cebcb3a9fe52e0a452a5b4087c2a3d9587cea1de2b5fd74bb14fa18e8b480d35f4ff5b909abe99faeefca1b44186f6b6228e33287a5993f91904d87339fa7ab971583fe0552eaf46241186fd0e0833bd1e2f1f1b7b7fdbcb9f8132cac4eb58e548ec533fc779208188f7d9a9485690c44401a82912f710ecd0df58320021ff9e4b4d4ef558be549014712541241467840a32ddcaf0ea0c2a03b184077f23ec5d66a7ff92f21c745a0c60d4a28b68807e354fcbb20a4aca8272eff0cce7bcdced3a7ab6c8d078181a5243d7d4050a433775837fc04f05e49b412d83710af609e32cb9f32c5e0f51012cdb754c12f0b2fe6b9a14c3e8383b46e4e8c98b541a22d65bee2eb15776d506a9c71b746f16d712a28fc558a44723ea4dada42a93a89c1014d0279c3a81751444386e86468e01da22eb0fe8e58fc5234812a5fb5a28a1cf2507bdf4418895bc417560864b6b1c09f2767fe053e9c00af127a3c0e19b61d6debcbdb382ff52adecdee5439987f352d11d5ed53a24860dcf55548098154bd0af2c4641dd865395e7097167d52bb7b20c7b0e0e00c802b19cdafde8e166e0023aba1a4b36c64c1288a9c4b3bfb39dd21b2d60126fd530fe08556d842463c52c85b041f04ecc4c6af9a8c22d9103937ba0cf4e3140de6a025a9dca8fe748a062ba7a4d1e13f43401d1f1e0f29fb573e63c5881a771ff28b22d6e57bb3f0782a1abd198661b748b3e7e7bc0fb78b2a166d901f19c2cb4028bd038825a8606cbf9499945f27a8d6d0bdbdbe1b32f2fbfdf601bd204c9fe038a85e9f0c7a437a00a344ec325db66817010e22d82f2ef92b8e49575b45fdb72286c341799cb2940e464f25d0335678d22e587b2aaa26b8ca0fbd516925e1954b6f6dc85a679af6fce357a38d179d1b8fe6ae25f9a705dca819e886e40700b6024877266b66c2ecbe6016f1292506547409662be9580401c083886c12916257e8fecf52e501a9d11bc0378760efcf455d29cc0d1ff903d0561d516eb3038beb42bb2667844cf4aeeb9588591ba8685840305fcc49bc406420761dfa1c2b4d8de35136a636f5d303dc7c9c44f7a1524c1081e814d68772bad42c4fbbe9379abfd54aa5992bbb5e03704b42586a89c0b256a6d67bace080307a97925970be060f647dfea588bda7bf06908b016c2bda77696a2bd17548253b224f95b55a5afd8f78d35f7bfbd348894033a86677991499ce2b1bf4c0275541e53c00b995659a6345ef4eae517c2135611387adc8ce7ecf38315f3b22d15357f38cd104852cef75e6c529828ca47ca82abe04261f783bfa409cb9d589531d551d2963898f840de5955061b1cb537a23d03953a0fd4fc57413254e7b2a07873d4e4912498095daf010bd18578aa7fc2958fe980b5048e9b253a42eff06c38060e0e40c86159d8de9664e648fd6b4b08498a9995e637d8cad989066b60045fe02e65f693adca533f0e721b95f6a1357dddf45e9a409614445e154205bbc307af2af5e3fc3d155aaa65962df876a197a6714547aaf3f069f1f024e765d36952790fe2c5d8b73cf031c38b127a2c579c21eeff5973d9f1d1fca40ee17600bd3b19233884448cf434a5635bf8c854089f78041a32a8778e39801ee47f2841d284f69bb8a6fb665b8caa111c8a2b8b2a349f14d2ca92877436752d416624aa25160b06ebd2c6f2696269d1c44fbe8e0676e9dbf96deef0c60a387f809a5d77d8d91cc503bd62324bf18af2db9fca9dc235b7ba9cb86e652a974dcd1f62965546b435e7491f02928956a189fcf45da471fe5185adb21df8f991f30bdf4003c7c04177a0ce1a3ff811fe51b43ad2580906d0012ba8deb63f392a4b0e257cbe5512e38e43f362a8010bd62decf35ffa54831cafafb9de1b334e1801c92a139caacf361af493bfc58ac1fd8f0d94347502683f5e62ad8ada1b4e8ed2b0b0931cbad98d949a45c9ba7e4548dc0acd85f1cf6519441a48e7ea2a9a874fc4c48af34ed91328e29959e0b26559d20392c8bbadcd6673922e5c73ecc557bf2c8bc673cae88636bd24bc74fa51a52456ea9c7e515c9b7a17dba703b5f8d150c00351300d47af1742bf0557c75c4f10417892262206d8eaf7e641fc8b6c66a65650e06d5ade94781db1cd4b721b52f9e8d93c82378f39ab8c190d96523a0288ca15ee26ce48b69cdb685a9bd385a96b264552addebdd7b64e607943b57932e12539c3ea6e00c735830b802b0c1f8d0eb9f63c1350c26b4837dc5ee95bab076fa4ef629ab61af6908971789f3cfcad04cbd833c46b872e44cba20b0320de50ba298453335ed6140b92965960e052d47c2b7c28bf3b053e20c997bcdedf4d48fa160b1ca3eebe8da34d79f87e2136bab721e6a8f6af4e03276d708aa41d694dd6f7cda701c2f26fd21fc9680afae856dabc972df87d40f543a2a37de0820c4154ea6dd89f5a70ee28d07aac676c826100f1651fdccc38c8c6e9ac4a610f2e32000ef60476056f48b524424c7bb5e54ecb0cde5469b232540acb5b32982e3e1fcdc9aa38ee68a768ecf5db72b30cba9bc02b09dcf8be6e66b53865ea7a5c101f5162f4f633d973059c425746862b2d0e3fb4a462fa8daba34f932ce2b70979301af5086c9169529e2183f2e64f781051f3308c87a0f91a1b19ee5548a30555f5b0d33727bb83a270f412408289f23008a96e4d13fb209480939211f953b4c360262693e6a8c0e854ba16744cbcc318bdf4de340b367c2623dc3b1997e0e79862273f0f69200c92ec2cf2a0c4ea5b644e92ee1e070d7a8379db5e1a38b6ec16418ff5746cec8352d0bdddcadaf612f28bf5e053aed3601fcfe4fb1390443b52f31b74841506c13dc28021b0d1a5ad0869d4752d7d9f3804b055e6d23f74116e9e07c8e31e615e569c781aa0e9ef2fbf572a6fd6da2e0e1a93580f6502ffddc86a91f8fa7eb89bfe026868c13baec41e69a88ed5a2b74175ff89b1e64c57df95c9ffa531d69b12f73947689e4862cb4d4426789e8d6f08ce5a81602d85ee8c8b514aab0822a3237dd9c4384a34cdd819c3ba65014a9c34c72468bc11c41693c91f979d243152411d29743216ba9ba6b574fc85d5008935c0790e9777607cf03a03ac3a263621c3e93ffa0437c4abd7c0886b4e72878827c8ba472400f849fb690e6c3fe6bc9163e9dbf3baeff2a849a4f2fa9ff54aa18ff0593c4f8503cf3194885f5ccff71e42ecc44e6536e59d0988979f3e76673e5ba9d7694ba8198904a962a15aac146f30432d2a0d1dbfc6136a7aad77f10771ab46291f33080d2213cd6342092befa5224e0561777da71e44f1e71d2b3e84b68af91b969908742d19fbdf6ed99609cefd53e6578105f3c7112635f4453c2e91ec095887f9e8a8e6cb8c1b384f45b0d8866582d6d493c9d51a02753657c07946dada44c0e79774910f3031e0fd9237975564cf71151d05eaafd9eb7a41a2f49997f8537b1c63228527709a39b1ffc85c98384987528b18ca44fffbaeab1f5717e1141160685e614eccaea237c3ae934a4b957a3733518b37a3fe22bb2609021917793b4ef8218207e18b121c707b24d4d5a94890101753fd3901e5e0a3d92cf5f43a7ec90f2965b00f38a34c8086e4ef18975f402757853c0f13442ff5328b42b0499e72da02ee08fc6102cb00a77fa99ba16066adf96fff0b699b8c944e8e8a6004a8286c2c8cf6a61d9820224905f4a68d2fcd684770484bbc702771af08ad7901d06f8b2959b89e30a2ae620f18b9cc57b17e84a4313632dba2fb9971440b81b4817664f6023de9d3e3d9cab815cc8ab9d0184018683012b3c56fa6c9485e524c3252d2e2708876de2e6a467566cd43905f59de162b177bd061bce7c072533e048c5fc3927992685e5e3836802fe12e829ad5824ef28468206ffa49d63c8ff1d2d522ebf3e1cef803e15049b00b2552367c3489745aa41accc29d0bbb618db4844c517c1fe645d2e0c4f1eed2b2c32acb920982cc82ca323a70f6a6807dd75654f16082712ef01e391f6a7820d20f54594c1b93d2343ef1bba34874045b4571cb0f937d37fa7bed16456f37b1739d4abe6685d92a131c9ac4af375ad4d32040a642d115c6801ad636e9a0d33d212ea35b0d5ae440349241b65c3a7bb9b4c0e101c8cf24cbd0e1ccceb3d599ea81afd0307603c2e18245855798418e2074bf5c3f519b1a62ba75c8781d0c19d180d338bfd105211e8b6f13215a231bb29d109126146ab4ce5c4906e254cf8c987d807c382be2c1b7707ca69b991008eebce38b6263f145c0ad86dc9dd9b63a36261fa7a85200afe0a1f8c0b79131746ec6a6d3a91b824d9547245bfb720703cd0a7493294252f244306beea9432d4e48ca083f9c86186e5ba021e9e59018c0008067efae3690cb5d26f27749c90fbaef7988b76a984e2b0b5361a250946d7a1fff4116e059cc34431d978009984f4c321f220a570b4041bd17685560303ca56cf79a32be9f6de984d6919d434ca36d5e6ab63ae1c5f5e5884131b4494be3a5cfc589d2d89c938748cc8e8918d449ac6952e2727fb1308c028c5c29fba5ab747165a126e3291f584b7d7291446ce48432545799865de627aaf8408adf530ff3679205ad4e45548ce5c463a48aa46fcd889d826e6f6ad7f3881386dad85fcb2b82990f3671f3002f28dd4233a6322d7c88776f5ddd83c7b4d44254d8237b95a63bab4aa9c46194f2b2af1b8d074c5ac8f3593c5e18be82811ddf65df852a29e3d276f49adc542b83767c13bd3e193ace1086614dddd177e529390e1192739d26cbe79f7ce466c8defa5f12f91456ba05a226ed41913b42ec459ffe85e0c425c299a97b75a5f0671e73a9ad3aaf6eb3651a2580fe251f992c58bd0cd47058ea4a4a057c6f2fe494838bea32df17612a4b86166e0d8ffdab2f74a1abd4346cb6793c03b442ea84a442a49b93d5fc009446567853958fbcbfcbd48fb4ba844f98d533883fcb5abc1055bf3c4227902282db614f8fc18d1f04bc245f1cf9891f30db565767f42b047e122ac449bdd4a0fe54af5e4b8021de59d12d260756cac674643f540885963623f8821d3fed7b005dcabfb3074ddc1cbe89a1ce9ee31c624eb70668f9285ca09e18e385fb9e0c6a14c2f31d79ba83459c01a5f69040e7ee131c6a1c45f5994ad30fd85f8dd91a337d63da007b77ecae4d2af491b3ce8fd607690c98fe24f2535a8082690d64e13dee5da5ec782a9ca516117cb71187635c97733fa3b0a225e6a8e66da3f4a5ad9e35eb6e72bed8f785157c052879884436e1ab73c8bbe6dc9fa87461bd6600bdfe9c1763cabc0830bec26f7e6db5302cb73aa1fcefab3f6559bd7b7593eb8d8d93a07a8d63ed33a83c0efbc6097fc7f49aa2e0c80235a229071570bbd37e1a2ec4e75f3458a4aa2c3587c01090227c6a5deaeb28a19bd401c6ffb7788c311246d47baad2cf960c2a9519a07c89a1ddfc59a21adabd476bfd3364f682956d8fb2b64e153d0b97354d982ece10356ab37ad0f896c0ae1bb37eb2e188c257a0fbab287b3a9ba0a61eed5cb00f72de7e190e381b089961e38eeda13cb05549f47cb698d073e8a8bdd60e3b19470ccf4aaa7013dda06e68d9ede5ed6fc965f2e4df9b1699f45528f85d729ace0b5fe3d339f3b48196e17207c36b0ac3d7b59c15d12c4144dc57add6de6bd6e0ad725b604cda87a35da09ccdd950c5796d78b5a1b5565d968f4211330ec6480093f8c38d80ebd456ba2267654d5fca76d2760bf9ba448acdaf99580296a22b66c6d6b2739bcfd66b3a2441fe750085006a329ee32632ad306c95a17cb11d41cb839cb8100023af486c45e39740ef021475e9b1a6b3131e1562fe34fb02c757c8b6959440d1cdea1e24d643b469d43ffaa56e54ef926880753747f6ea0f9dbe29b3f10d7d4d0d4e99f81a169c1feba6555b4b49c27b8327b2783ed7dd7b170e36c0200f3d5009d10735e9efac7f58159ffc09c61794695fb8741718298816c6a6a6afa0d10916e97517077a37a178558cee073b0e299494fcf8af984067f88c715aea3e6692e34e2aba997b2f026b2b7bf0b8e704f15e34a092452b49152292eb88a92d8bcc58650ae359422b0140bb01b5cf43d482588abd27cb0fdb42bd0b4d1f5e78c189b15c17df023f9ac5e2c2eb4944d11d3332a54e0fe1def954c1e0103eb8e2d9094e5733a0e8b7667040858f836640efb948e5e84862eef44c2618273b7c56e405c9176c1c12eb749c90a7a39bd012dc310c6c37abd8853154594780c2b817c29565e359cc045699a82f908913718b6528b20508913a3623f29725227479ec4233f08e020a1da4e2c1685b5bd14a69db88e157e86e09a7c6d2417d757904ad112d05455c0f53bf1ea4a3301d3eb0e5ca025cf19740c86c49f0217dde2ac61ebd2d58bd86ca5444eb310bbab7f85e579acc1b8de21aed946d7af59b2a2ba5c499a6230aafd414445f221e47c6fb40412e3b2a61f9263c6f5d80890f65d8dc16fb73815f553eb298e4861bd75263978c4ac820075d1b3b687bb42441b2b4c77112758a180c1d8502ca58c8a1097e414db51a026e5618148a8e87ab1eec7a6d79f060232d76d30819f3c77e01c3f8936071478036142371f77aff0d94cd2838f0da1bf87d2d6d5e0b0c5ad9264d5b81c4a9a39301ef85244b5e40ea479d020e49078b2b6e7af7607e3e24de89e1901d2beab31b8768b93514f2a1e1407ea5d9da0267954105b009160a3adf70b3704c8dd65475c8f8f15404b182c13beb76bb3e1aa82d20013a8624b5275eb0f76af315504e4bf4a8a001969bcd14136be674bfa7450901b18140a6c3aa30e6bb7b2db30ac1272b15359664e32f5ca4873e513588b7e4efcfe9ad117148678c60f8b6b23394153a18dc30703516cc62e9fcc573b3e82f6cc395b9f68ca46967fa65fb63efcf82d5515a1b39f70ec39f25baaf64b0dc04ad9d0e0806e8bea73aaff49831a46efa6acb8f2493704f115f8c1f1552035b2dab2623ffeb48e43c77e281e3e1d2650c2aa3e5d731f8f41473eb76ea3bd405141bbed9cc56959eea985b5d3f9ad151352673438cfc18e4801d7ea1eb44be4f0f26e650a115475484c14f18063f1fba04ac0ec2fb68be94dab9ab127c801a448c16ba89760397415a4d067ef38b635ded9217e181fd8c7333b028a2e2f41a8b583efb275503b711576caa68aac3ba0c6c3014a2a8bf3864fab140f7d6c66af0aa51b51283c246de90121775c02e40151ea1d1f6955790333a8c9d3078ee712e46e2a8ac1be9879fcd8c57e64dc8d72c154b47d267780a4ae57c093894e4c46354a58ddea1e964e64c72638c8b0ca5ff1414ab08f43864b7ad8f84d23a4e823b3ff24e75c6a9ed9bf06dddfa49a20dbc553c494a7ec4c596f959c5c2c62b759e0bd31ad8de5caec65b130c8b0a9140d1102aed33a16549bada0be176351c8a08fa1bfb6589af27a3588d9dbae850b0a912716eb3072ae73752c7a0ccf117b51c22467dc91e5631812b387d160b149e71a487d5e0d98f8e19d7d31d7d6b0765a1ff18aced070b1c0f4da17ad26705847d6fa249d3dd6a298220e91dbe311f993edfeabb7c7afa7c789d5dce3f85f93a3eec05ca5a6fbb214bac66d45262792a8cdb76aac0b4391e293b0950969b03a6032be2caddfa53a0e568794d81e9cae504021db5a0e92198961b7a0744c9e1070aa60f3f9ebc5295c498f7dee182eb035916ec6e341d791b8dbb062ff2384caf2072cc6e7752923c7b2ad46165be83be1454497ae6da13eae0598ee876002fd321031610a2bd0109368c90543455c66fa948ad1daa2a190ef7cfe9a5214568ef98d000871f90ac33e2ad8ec84d87114b433f1312eb7f13a0f61e6beff8a3c9f126f148ff95211d48bec0f14d23c206e9ff308f8a555d7d22089332c1d84a738914af11872b994f2258c875b067d499a5dfa518c8b533c184b812d3a27dde5291facf2ebcefbb401c3821f6c01b4be9f112a3e6b0eb520a55b2e62bded754be17e4baa8501dc94446188558228ae825ef00cd116cb5517cc415a3eb7f3df0c831b469870873d032332ff26727ea01b7c09063b3411837349d511439260eb523fee1d942586b35d9eee445f100be5a4ec77f993818c58c1a3cd35c36ac6232d76d9fdae773776de2d78a6bfbdbba1017131aca163584f705d7935e89c9c9d57d135f3e22f03a6808db233a84f50097e4d6e864e8f1b01c4c486f9f448699507a9090b5707812a7cc9735aa29edb021ed6c4665b7872891c210a48472149b0d4cc5a50a66988688866c274a96191e283aded1caa633a0c8cb23ac87e65466b23c77388c079bbc4025e49f36641317f9ba42f218c3a86c51ab6dc3e230379ad21e7e62d2a956fd5f8deef1c0e9f54461262949800b3d1afda5b280002282e1ea50fdefcb2af8c3fc644840b8022f8503f563f1a2c322a5dc552d4b81e64a572e58c8bfc484b0de08f53eb3d60777c380cbf25a14bd3ef17fa6a308613388ab0fc0688cfc92cdf0e578cb2492793910514972c1840e4157cf3858cec63d054d82bc3d548e3ad0fff68011e31119b5b1179284528984ef8034cd53bcbc2805fd2464cd72574e05629345e9e76f39a0542726888e88bdcfd0694a1b003f87323f55d3b15410675b9fe480502e1d2139df62195c004aeab72c70b9ce23f9095c5e5ff640903a0973ed97c0505f51733c2920e728647ecae095dc77147c326d72bb3874dc9ab856fdf8967f07f9dc3ba9d71af11e271933de503a98b4b6e94f18314a80c7c8d57860c1daa0b2a7aa2d56b1b81b71e55872e9e7a662ee73459469908a6caed08f1d58d55bb1f9407368b6d9e464b17a2264c41a7e68a10583528c1dd72d02de7200dfa68374653ff2026f0d1154118e972d9f3b20afdb0dcf88d5e7af80a8395001d9067ba8bd00196a5439d0fb8160c6a473a9630852b43b85d6c4740c1846d759394f9896638c1d3620d80171c574464f35d57195bc5e313871eb91689538bab352e2ab6dd469e8c00f09c08f0d60b0a3811c0f5e71b1f4247584c29cf77eb730b6c9863897fd7880884a7807abf172315b323701e96ea9a0b082ee684bef713f88cd5dab9b52971bcf7f16d26b959177ad6f97d61f080b38aa15964f3eee574c2b01cbe44c32c8bea97d6c9a85a2b61e2080f8a01bfedcb617b359af32073f74e0e36ec71b86dcc18a2fb3cbbc8a63e27d40b9bfc3eec4c96d831517c8e12e05c06efc616a3c81a83f557142bf9140d08345d58e7f9f8dd720050a52cb8f0844c3418393ee9f5fd6e6e752021a589988209fc8716aa9dd5aacb245ab36d8374f0289206d170d9485c8060dc00344332b0ddba6b5c84d65f4e81ad21b477be2d54cafb9046078a62758cb321b73e7965dd3aa2e8dad583e3c453a103c626f9c0f3fba4bf61ed7f0c682036a02fd675d73c7e5e177d35c059e85923bc30bb7c6b6a06e23596207de24d5ed688f93a6141025a65ad796cf7754f51e0ce57f2be5448473659d11b40ef6e395576629077d044833d4eb017ecb3018264c2483fb3cf0fc2897116cb8190fd6c91d0300dac11dcedd1adb945053c087ef23accca4d823299041889938a9af5c33aa395989442f148cba57771ac22c6f3e1d0b749f8479590bd08baa95f617f1392e660211bcaa3e12fcaf50923394d8320817a2c5f841c68a95364fb5540bf7614abd2c0da30549d581718023c8ee9bd95d5c7002c4d150b2112032bbfbcaffc56d9e3879140eebd26913f6d9474ca70c00f2bfb49580ea5c24200ef9f8148be7f5cc303140131b9ea43ea05fc69831a340a89c00cfa589d323fb0d16c1cf75989ef1ac4300a66324062ee450ef7ce7795152c3ac7a33649a25020b5d1361d030394c0391b45f04c908373ee36440615467af33dcd2d6553545ecc03c4715274c87d4efe4734d57fb6c825a1d0b082f4a0e555884a2c45b6c819f1695ef3c9f6cf64db43eda8c8801faec3b8d942454554fc05134763d74c766c151b38554d81a84121303b9e63f611fecd713557e6d35feea2ac1ad73868f93d26e45ca104eb4a7e3dd6f56df1c95f3f19e0208c353ae95b5e687897058d77ebd25450a0c05339851e06144aa920bb70557ad93f9c82bc6516cedc23b07b6b995aa61f77c6a72c0f004d2f127421447f1f813244d510b73ba6febe2ee25101d2bb48256cecea58c52d2694407231265704928d906c0299263ad7e0257450638b9f585d446ffe94c4dbcf3f6215b3637fdd03d8975f8f2417a46efc4b3f9acb1ae61d9ccb1809882595a3094adeb98f241d5ed5dbe7f49853e2fb3d219fae790527e7276e8c880359dae309e34435adf880d153925d4ae9145299574a40d9fdaa152a4537494026b9a5f1e0790d058c96e32261e5b404ee56e4d8119695873008a075023803932fc1bb7af72cf513b5b65d737569ab2c20ba5f4927d32b42e91fc5b0a0b69066a2f81a6e8cb59ef9ab405a092423e8821e35412c49f86dfaca9a1bb9ff1ac3405f6e2a2259f3fb7621da36cdef6b8717280eb191040510071eecc6c2ccd064e121a95dff7105cfcd55f65aa4a7acc04633041385989074c9a3b2688acb2b7336e6419266f4f0d81223e76fa754d3c80e6a8e3770970b2ce4068f6578c4bc21c50855bab429d7d3ff6f8c9d5febc9dee918d290bdd03942ee0e479ba967796a3072e21ce1cb6ee9576963becb54f5b952ca08fe9dd8344f934b3f631cd802893afc92d7350ed884fd7f393ac2bae76ccbc14f64a159488da8182986f397a460f420b11f14314b2b4f31848baea620d4b795b607a807beaff0587a5eb3cdacd983ad37dc01530c4f705c7bd286ce056ef4d48e97d1b57d08628162e49ade6417b8ab896c303065a18dc2f6d8170cfa0518e250e179d277af8a7ce8551a475b4884b3d713c51101039f5150699386bf64785c645abd8387eef3939ad0e9e62ce4575e5e8a09cdf385e3db8d21a105f92c1d2b4bdca96cfd89df683044e4efcfd0aa502c65d8cab77eb33e8012904b41f12735fa52898f06e2bc446679b3e326e71e760af49fc8a7a3590554d43713946593ba081f3cfb58473a2d7041fb05fd92fd624f3add0ed8832da45eba2dbc2509f8bea1bd2c3b0722d4a43f6f0b4cecbccb83ce84d4983f073a81ba4ec632e4886e83e53b3cfa562eaae094e980db9f914bc59688985f0205359165539e64b2002f4df17d340a61be77262234be3601d6086f1d511d54b925460cd4383aa42987bd88848da64efb769a37e23ba367a6665aba5c39e0ecd0758808f28443bbd89eb93c99f716c11659a3c9921e61e4706a00e4bd1e4c0fd72e2485c0e442f5c3dc0be01357e2f401f4557df12d32a46a9cef82a4dd2ebfdc02387f95a101669410a5a92dfad1b83ff5533f2ab478ad750e731059dd772b1695e3d6cce56054f1c70e05da55cbcbe12908e29c82c2310c9507e909bbc12c41555eee189a55d55a57454cb24078609a46a3ba89d230a4a931c15c117b194830eec2ee12c621559e63080f7e006695047084495b852db6df132979cb614ec6d19cd26a216d5faff1663fea00b944806c0e60b16e3bc0556fa576bf36071e8172418a73986331215044a25dba9510a2de132ca08ff38981a13279aa8f925aca90217511e57e19dbea2c5d165599ee07005ce6ffc50f505bc497fb7cbbddc294e36f4b427ff1c2c687b48f31dcd2d38a9b250c623cf795bac543873f355f356796f44f9b6773e114209e8e5725d6782ff403c968b72c489201b9fcbfd45b85dc3a07266d5d11ebcbc23002d149864f5f226346d47432300b935329b304c44b9ee10cae2515701ae40924ef76dbb7c3c4aeff5b82e318d71a027340c37873b866033a92c795294902734722e9278cd517a2aca684ae2d29670d333aab39ff18a5b04600d1579b9fbe71e157b2a52d39d6a8894f188970cdc0d37af3bcdc4657ac5d65d54051ce496a53f1eadc195ee3ac614bbf5cc95b2b8a94c953eda52f53861f590aa1547ce519e3a206a543d53bae688c3fdb6d7e6d1744ca4d5a14605c4b28ff2fd816ea782802bd93d6f16cc971a8e9641f9ca2e51b83c1c26d699f2a9e9f4ae5a80ca5a82a1247f0af42ce5f8bde7720f120c2292dcc2f5a9dc3d0c650cd68cea24280b8d401425d96e14d9b03c093ee71514adc745de771348b5a40402af5024e2d40bc3cf351d17f1ea42feeca6ca9e58513d6a7f31e228754580d221c47b4b00a97a3c1a13c005db99117435f3903e6c368b3b01e66cebee65375929cd970ba209a7b3165206340ca9846a091e0f06d8a3140748aea11dafb9c22e28b8f9fd39db97f56b367b842b2aa2512e7f251a4a5aad9918463067a508e899b64531b39e409dd5bb1cc9902216470f67f737d1d9ebfae3a72bf09a83b29d03e068b5b9fac589fbb163ece0ae642a3cd0e38d7f39e619471d7b1198b91ef4225820cfc0cfb60419af83169eeccc0ccf231038550a6b60fc928ea36e95751c42f003ae866d083e74c00a6afbd7a1b8f2754bae8d94b669d41a4ef5a143138faad63708f84fe857c52df6469eaee56409d8a8db0e288d4085f88a23373e775cc25e8311cd82467d4469baff50de4f11c3fdbc02a64bfb2c4940fbe65e074f8854c4ebe9ace649a9f886f80843d7935bd9f4aedea590a4bc55861aa2c24a6b4ac7ee377f0f29465bc0112f9298f85a3cb63679cebf004a268a074490538f24e547a49a98fa63621456eb52132472ca11430eb81fccb7e32eb0efc7889f302487df8ee2140f22ee0fdfa47ec47c0cd3edb2648c191a5effe928e9c0662f1fe70b2c83ffb70d34a8cbff8b390207076cce1b19bcd7c976e949dcd1c7b0d51b62f10e641e88a5eb1ad21915dce5f0a498b5f06ca36a6abfba264e8de0de3d07b3989a69d80dfebeaa7b114673996651a6cc42afd5789a31cc333349d425a5e979e9e08c52a5f1d14fbbde459d818842a577162b44f6f26c86a48c59db9c4884defe7027e69fe624460660f430aee037e84d7870449e5836527662ce485099d89096b610921dbf1e8ede45d3aea1b7763573f577367f23cecb7884f2f2158bb59da9b3099c678d07fd436095037f50815962c2609210d634309d885f3eade9e98aca466a87f565207ef6fe3617f2eec3045e8f4b6a7bd018a0102a45def09f961a0bd2ce924875b2218a4290bf95ff617f20f3edadef879b6f4a18bb1488a2e15e7ce3618b0d2bb916d104a66fc026f84f94e9ba0d006a86fa3b6254ad74eae5dde62334b44c4e4b2a2674cc893b8d4e6ed0ff9110d72f2cee5af7fa689766a555d1e198207f90a6e74bd14e92bec52bdb53926907c4e70d6ebf49808355e533d39496bde4af9ae4db1f51a18d641db8130fba8abcc408ba77d3c6c5bc911ab30a8d3d570ac08d89c73e20da79e547e945905cbf34ff44c757c45ef6a1c23ca4e523a51e47c16633ee964f7c2e09fc0d917f1c8a8d1005843540f3cb297bdceffc2b2aa9f0f198c2093172f0880bb3be0799f0443dd45350f4067ca838621076c71bccbc1c19692c9995be9376000cf7c46fe95a9d466772c4446beecdcb77ff39130c8c64fd42c940baee926a5537adb34eba0dd24b76dd27633e4a79ce553544eef3bc1ed23c3977b3940ce4c15f94615f42dcf46d49e99bcd0fc0c8972e03112bb18375956b3e828cdd532e55204b18cb3fc4c6558931de93aafce16a8c896f42905d21a8e6a4ad27430848f0090b0c0ed0093daa78fd6bbaa71ee68e4958fd411b255bd52ee760f38b3b0de7853b3657c61294177ac3e244f3d425d89bcae78885c889aefeb81c5b9f3a5770069fe03658dbfcd1e2f62b7385c61b94da46491322d0ccdd546f73419481124358eaa3169b24740b8bbbbd983221d51b3efb54384d724c346d8a3a99dcb9bd7453c18d78c1ed908d6246c1aefd1c58c1ded4befda8a22a4738e97697a61d80c898dc553c38bd8813f06214d8e265d6d1ee74744268674c90b59a709b08522b7fb4bb177a5a2eeeb64a6ce02816115dbd503bf7784a0dffc01cd93720554af2cbff6a5b62af1e1ef80a61b5397827dcc21a1b9ab4c85ffcdbe744bee9b01449a09283ee45251863fdf62aee1e8b3c879df3e78f3fcff83e02206d553b115dd10fe93949910e3f6fb2c6b46c54f1f68ab720bffa638cfe6026d536b90ed829aa4c3801a802ff4fbd2ef321287bb817bf52a89d90312ffe80e607fca912f388e39a90415132a9bdb35cc8918f12a1b1d7096488a10090e1bb1439d7f41e093710cfbea2ee27b52e70161217ae0cd3bdd4ade3a6ac99ef51a955d87229b9b365bf48339f71cfdf0f326ce830eff9a8830ff9eb23c981a234b21b4d47a7b42ae55e49b3e06389c0f1adf489a104dcec388c074d4685f1c9a0853e34d59892b1aaac8a3e3df6d606149dadfd3334c35ccb2aea9d98a66c12809968e3dfad611231d375ca471ef8d1bc29b819f7113617e50c770d86d4ae3ea611133629c461d6e26788afdc51519976a62e7f13f802134eeb0bdae1deb39a4eeccf73c316eb67089c08577eecd0063f8ff10782f63af83390e718aacf343322486bfb8c619d4291edbc48c862640958bd36de2b2da6282eb41d97e7dbfabad3315cd431dcf10bca5b8696065c5295a627886da8d26ab0d868293f39902b024f5c56327b0d6da34bddba975545b6f8116006d5091c74384b48ae9e82b60e6be6dfca9a41178f55f2f56ee159dbe29cf7f5955caf9bdd265552af2f206ca96f67b78267b907f452f84e103459940cd3bf6aee29ddd7f8747c73e3312d1d7761c01513657f64635ee61bc1a5135eb55342c8f45c26e8c1712faf01c165fc7763abe4c7bc9435816582d1e64c1448834b00b74e555ff1bd155105587c0f456ab2cf9e5cd0c08ddff99d1f12227dac0cfd26216ed5e8868a6538c559acc252ad97b541e3276cf4d5c279c434688c0c9343a6a1afa5fc1dd11c5c091c4b0f5a525556008cf05a31aa0de57101409200d4018de06ed25636bc9b8de5b749d50c0269505dc423ec4d6180f1b909855a495d0df81c3e39c5cb1fba3bbf8ab48229a5c1801182f6561de8fa7af380772fc7d59cc2637ec82f969b529475a01945105f95b584d9c47b7b322175c17e8bd880d1812144f4a41fad98cc6312cec773fabb50f5f1275387577d53e13c35ea3dfb89e612e66a27c440757b7995783c94f97d84daa2492719c7151fe95a19a69e78449b4219ae58b46a7a8cf57e036596cfbb3a5a83a992037068de151c55b8074f9d504621ecfe5493685f98f059781b240d29db52fb4374c286b8fc12e891f466dceb05f6fcba03911f32effd2dd1588e84f6fb99a15fc803f1229db1c5db9bda703c1c5c6109902a932b723d52ba7c18b88315cf226abb90c2f4f34ef5f80a452e277a4f9e4a10226c64f1bbe4c3859e0f1d9d9c1584d5c857b27943e6cfdb27554631c6b23b9e6d336c14d4c2dada1bc2b901e6aad18ae44a934854bee97cdd49b1af23bf21499b6a8ad1cb03e78e0d6936244617829ce6a90d86497effc1e127cf538615e4bf1379e9fc6ab87771b7683a550fddba0498d85650d9e60bdbbd3f173b61d40b5450558a7516c6750e034050a995a04ae2734e93818fe12e48417936bd588a9523fd90263bc218d0e34986d9ee5dd9d1f78721bf9e5d30e55df887e68440ca107dd1e4c709248f1e3d4d7ccf4ee79855ecd866c04ebe906149f9bbbaf15c7e6a0c8a6942463a8e8b973a6ef2816fcdde6e78bc8644f58bb15b62b1b86c0e41b79e12cc10e240441e92cb6b2e69730c7207a4ef9cbc9bccf8191b5d2f069baa03b982575936883401c187419cbde45a8c4884fc870b3aff16d29cd70e86bd8c082e0a821d8503a2c0db809534f7560d460ea140c1533414dc83d09c4eee52ce9022403193cf690e15336e1c68ed2de2174c15775e060f223d756537b85096d1b0ddbccafed49724942712b74f327828c9595e6bb1be1966227491f2ceb5658d2e6bd149baf909575f28a0785b6525b4b0d8b8f1affce5331c6a680111516c0375c1df383d8f50b94fb03cbf4e5c45066dd1452e08c24fb7341660708c32473560f77136018b1d472d76d6efa83b3777c474d5ace66968b1f08f1de7e7b2f717e15074021fc11326fc47f880f05921242335d7c93844b51e685426aa07d0d85bcb088d60a48137835d5b4f31f0917dded0d6982d0b32ce6685dfd60e0d20172f028093c762b30273da20da0d2b05572f540f994bfe11f16a567651038028e96f05fa6474f8a182d51e31beafa3ab935058a61f5beaaabd6368c538bd89ae14db6d8064b7095a45b532ee8061389dd9bc5e015b36e55c4518da5e80000f256028b3249c3d4f40a37a71082f7e86407d081a0abd3dd43ed04ad62fc3723cfdc1a5c910a8ab9e16eee02458bde028d7418e87e1b5e8c63a021498ad2b3e375a184396638188faa1c0bf9fe7a9ae53a0376ac07e0bc41d17a87ff2164531da96ed19302e92cc974c29cf1b61897248c71822bd2f0877f06d68bf9e31a9877a0fb9d2ee4ee8952e497e2700b33f8885cbc6100d299bfdd25385fe91283ec589fefefbe77b0849abc91b187f9797e8036915921de1fce5bb3bbb5c356da9c590270b662c865f5cff892a48db7908f0038f50b519e0ec3a98c6a296905648cf4cab1131280da5eccc11b0fdf7459102992a1f0c8f61143ec056d47d78e8954fa2a7436bef8d35c0864d5a71cb81d2f88a7f140bec1e5276e2b1fde6a2357612d500d6414e1605520d538b00ce5a30aeaecb62314cf8c6ccd4baa1760d65a14f5f04aff13af11df378027a2e18ffb2c7693bf72e814d4b42ce5ec07320f548c5d5792b1ae76ffc3f6ed91f6e1cfb0a7ae9c9c26061494dd811da64a906344a7747f82b0371a0b527901348ded465ca8772e2087f985b3c3c607f5e9882dafd14af32da7bf34952a52421d4a72703e10b4f9d351fe9b6294f9f8a46f5401d69622a47edbfbecdc760b0004f017a522e97cb9327e0f8986d9285a7b4663755848210a0edac056282a09b99c12ea007c17d475190dcd964c2ee50a5a0d55a2d974811303f27a6500802f9448015fca73428e6057ecab3086b91d6524b4e87b393704d48d8ac717aeb0910da9bbbbbe02d50576c7dbf639752c6f05ab09462cc1939a6c33736958226f9071f5921760522e9d692f033d3a829e14c6831412416e188a3c89d2d4c2d0d8e8a7d9a1fa4fd1cf93186691e106db780b0ec2ede8ee8356ee8052777b772762f91e35961aaf928e88c7c93f8491cad5e9824c29a4a8c3a15bb68df94e327574fc970528ac1986e700133a43b40c6688a624d7deb910eef524c05a292b71a615ac71e52366006c651d3f3baae973cbd0cf391b284e252074049b90b48aabc28f5703fda7d9322df003dd7eb20fdfcc74640bc9e04b4100a64e982af361740f21be1a41f2ff1c0fb67bb72e3f2c73c0d9feb9b6dfe679623c4798a10b605f0f7a3c9114d2bfd5e9600fbf97863e0a9886c3c1021870d3d3a6b195e336bd6a5907c0042ee4c68ba725e19fa53dd821cd9ae543e082fcec94064a730970a04e7f4097748cb023a6006ff2b6cfd058af606562d13abdb58ae2985408c91da0a434467c92ee617fbbb1e5b23eac0c08546d065f21104448fc8ec25081252a5ac59d05450578d20907b0d70cf0ec155be2ba645fe6b3a0718b545cd13c0d2b7f99344a5b4383b898922a760a701ee6313801db43ba8b70b50874ba2539848c5db7310d27303c0c12bae7bee2e19160c1679f492b7edcc082b5a35a96d7b94aca2018055230c407c6fe02a9b36c5ac1905933c4f74b0573da566b6b66a80f12cb10bcaf845304c773e97f66095e9ec4ca12e013e586680d439d3381114cf56a07edaf9aca9acab632132c4fea8aece8ab909b9ae4def9b21df63aba6f11c6e76ce60d8dc64d84ad77f87cd723be9d693d6931705939ace314db76d36bf8f1e5e3cece80277f1300e4575a341373089f1d2a37ae32a9d57390a0ecdf4c521ba95fd3d85b47c74584d5c50ab70d0bb15d23262246f94453524a2c3d74865093700f61a5a4a8788f954fbfe3b251575636d9f7423ebce8b6882a23b1e629ca417f199d4926e8e10ce6c17be1626a326215c3b08e6d632c860bce7f0cd135aec619458ca39c938651d62fe397b24b990272ddff671ebe4903b39624c16bfdf12f888965adbd3960d84bc34ce24d8245bce9026626cbcd275638437fc7fe06cad7d082eb632a1caed5aca1dff185200331696f61c069e10f3e116c695d93b5933dc570731207288916804a0b9650a16cc65fc5e41c14ad50b4399f0278e590dca631649b2b7c51c88829c340f60319ad07400801b0426acbf5e34b932d95845b4d4b3ada44e07a8090783aa29704a17945e63611ccd588793e9aa5c547405ca377d520fa759cb81e13a15a14cfd7e62d197157ce27d2b6d5f0407c8f8b5c05b6923bd590255506a5f72f6e39d9d0f382fcca944d5f74e61a82970ae72509654c6e3c8287453661ba64046d917a1b84509d2634d36bc417aee825a5a7402f34ee3a8b7100ab7c6fb20da1725383249cf42a79760acfa781d4f75a79bf45918c0b34611842fa7db48a165e8ec87a7cbfd957a4f1ac860190a963d6f21d1c9da0fb8dd565d8f80e2e4eec86e0cb2f5f5a53c030b0d2bdb65e8298b32ce587bdf213da8925b36bef6dc057580f7bedeaf022cb061089e83c46168609c730ea2643cc5cc8beba1ca474a6be02e6846e3d51887c764026ab534537025d8b592add32495fed45ac000cf92c7e446a51388da838541d7c8551fbdfb110333e205df01f1bfb7cff4ff2cc422fc7e7ceb05607a8d75af8dfe668f5cef0ae6019b489f680cd2c5cab178b6bde5781b806f46d4389e2261d68a32a1f41c61d15cd04608861af393499a42ce3cd015b65ccb4ff57415dc09c38b6e23e9c4806a9fb8de994c99433d6d1a78753e5504aae8b9c748b8ed20c41771684c42517b3ad3dbae4dd7c26c2f0734068297bb86bd12494fe65728e74882783cb8ea11f80a98685b4176fe88174de986362ee434ed5c3646382e80cbc792900287bc73f223c950cec25789e1ee86c80538798470f75c90ccf406b1a4498b1aa9d7d962a2860c099e2595ce298c2230df0a7829f97731fbc752c97566a670b3bf8a656ff654c66fd6389b6a2e7fd752200bfdec0145c37f18e43b6bf0772e3243f530375fd10505e2158c525a2d1c5cb8bc01c22d07c0c15842545c4a4584566962162207155ceada1c4b55d81ea4ba178393826f4be39591e12af15dd150f6199caedd2cb65a65aea2ecda8def904471e6c6a6f65f5b15c87eb3d2bf8ad608d05d23701ae4f31a1610a0d590733f26d85b136670c6929b093d01c91068d805941969b5caa61211afefab06a5858b7071ff4ec5785653cd730aa42b0d52c2810670a67d0063ee3bc2e6fc081bc99e8c24d5c55b25f18c19849ad25eee5f494cafbb19081976a8496eacb64dc9865e1fb2fa31c9a5eb146c0f33c5a9b22bd8340bc4c5ebb1097488694c7e69d1c37156ac642e80874f8754dde25e9580fb4f6ae2160292b00f52523ae3e8f719e29e218d6a2e632ef07556e11d7e4103325575cba54a85d0b59b8644be3fbd7e406f82c517d76915d33ae915707567122cdebfcda4bd4d00f23abc938a968dd69f6a27d1d9037e51f3d5c5981344c6fa0546c7a6d4581c2c520f44d0fc4ea5c89e3fa1c4d64464f5d1a5c1049f59af15330cf062f67668e8a24b8a7a6854f08b0fe1559584168e463d7b9e08b51ef8c4eaa7857e5c5aa801e1decaa640c966c9a318df4b57f0ee647842d1c476322a938143cc40890577e9ecaf8d70b18286b1acae5d0c4ae399d228a955d70374e68c85058cb30b91d42a5d57d309f7464a02dee3c3898bfc2d0a1eb9a3211604731a8f90679395cfd43644fa2050bc29d6bf6db9f3950b078f079aa12866349d0ad4aca02af14bc779f229da1b315bcb1e633527b3d20594b03c5e6fb86c1112c1a3c9be7b414209353622a225ea39d551c6220195c601b60392388f7e10dc6123a72252d2c99b5448ae50524101d1da74fc9f63bf60a2d7dc4e4d9304706a553b02208ac02e6cd1fefb2556812618b4b3d0bf5d1936c7307a7746a5429ee72c0aaffd1af7ef9771f4f35d7443c10775d380ce569ac0379061f5da9ebc52f7a0c423546a3fbdee0fdf25850d7f365e07ebb2e5e4f0320b3890f4d2fd582f719e58aecd894f0a09a3a5976887243530b54b93531e69e53ac21814799df687785ab586419dc2ed4c0ca2adebd3c73c505a260f7ecc7eee5f0656769074a9add79362f6a3bd73f5035afb643411d14581c4225542e58e924997ccebcdccb1c2cbc9d2200a140898c868e5ffa03f9b8c4402d254b7bf6b6bd5d9893d9a108b8e476e7ad350fd87db96acf58f60d9a16a6b74702c3e799610db457f4c3269ba10185edf2f8d05ccdcc6bb3284606a16910ce65042a9203f0d547c93b60bb1e0264133d9567af7fa4159a3faf829d3a84916b119b4a540f913046ee522115757cac34b84238d1fe96238036b1d40c9c1d8a9d46e26a925e58e2a16f2495ffb015d9a3a38d0a719964d1fb29c46a73819a4089489d2fb4e3789c50819b223ce5645969085e41069117e51ce67804450792c895de6964343c81e98ba32883efb9d8193bfdf5adf03502268e2cb5e0c5989d83d071b8b4afad2a15d99461854f83b2bf0f0cc2caadb01859c9eb03a6167f41146522b0f72569ce02b365eaaa80986421c4161f0b056d2f41cda0236549152953080c39e92fa1c74fb29d9c239c9a2aa0e8c0d24da950c3c49d387efb99ffba4cd1b398689ad42321f8c511ca72d5283cf6fa924d3dd1e69c640b59daef56164cb09a5870ce03b7f6106330f0e91fa070bfe31b925653058238eea813b4c620cb679b4736c7f989a9a4558957f67ccaf06dc6ca3b9d65d8c0425e2062b10fd0fe17fa70e9d321c9ad8358deaa0c8bec4d37e805080e4e8965d4eab82b56a70cdafcd43a46f9287c2e8e4357f2788adf225927dfd37fd55a691750744cd16520d9aebb4edd2ee85e8bb04b86d952ffed2a6cb885149e37105e7c7fb3dca2769471e196b86bbd91ade60b4feca69f40f8f94e8cbe76ea8e7cb6da2d53933b7ec3a17073737f5741e7bb26faaa9b20c10122dacf13023dcf7fb2a8b0ca457735712fc7062fd8fd40a1ff98824f7dd6fee85a4674baf08b5058198a09c5518075de7b9fcf654073ce6b67321544d2ababee57b3acdd697cfa69c895d258560c7eb3c9066288dfe0238ce844d74f8d1108225af1f70393449d4674096ce78da2d2196b3e967cd56ac3c10c54b1b5a382b1a57dfc541b04fb8cb5039ab79ed3f054223c0c55f84b1629e3181d541544b5caa694ed475879254f2af6538935d156669ec7c423f02a63ad72f7555c2e408b0b6a5643c2bf40b0adee63f89018195b6f61a1cdee021eb67239f2b88ff827d7c63c55bb50e208d683858134900e35a0332832064d155ddc04d04168cc68005716f5a283208e6ec08a053f073a508530fa28432bbfb6006ffdaec552fb7693e3771fa2a97d94e7000b96818731f5d993011028aa8efe029763d4c21860a103d55428e0c2e42470f759d8af409ec3de6e34553c3417f8b3468f0cb0dbbc3a359bbdaecf536bb0413edf5b3e6578b64c57611bd5954b7dee6e3421a6d3ab62641362baf924995f987fecd1b44573367590bb0b4281336546f847b49cd0333209ad72faf41268d8f29922c88b9ea5196a89fb6f1e2c46d4a80c847d038c34110fe32adc9e21f2dc15f17cfdab09e62475e9bb454801aef9e2205fd00309760512337f99b8dfca1b2ce296d1a95e53f04ebc8dfb7e47932aa0937772693c5c2c3c15cc9e92041b17178b89eaf0f8c0b0404e3b8287b13cd9b3163d29b2820a97fc16e3e768dec3a482d4f29a0df22b4fb7ded97912c48995137175c2ed3f4fdf5a8654145a3ba4cfcae12f6e6dccd024cacd3e5b376c5533c09aeb899c5b88a346f18ce7a3bd50d8c53b6dd93bcc567b096b6554c80b252de39168969cd3bd3d3d408474047f8782155fd5d325eb17960135f66e22950afd75cf7fd3e69fcc1f10078f2117d931782c8daaba1ba025ffbe1ab23beaa17e5921e3fd576fe482814e08cef5b4fa15c7414269a0dd48ab2d41b78dafe522854956966bf40c5569701ef4811b5436f59078a8c769921a81a07746d7b2590c8a7ace17ccd203129e86055d693bd85f807aa3c0d3478fc0c497e48881e15d851e9394d3e7bf7b06b00aded35ba15d26e0efbe78be2a57e01243add6a173db35147b4de7e0b09abd0753fb02dc15e43f4ed5c75a0e3675a4b438592234756e61d812696d8475b8dda8b84312ad3ee54a8411b3eb35569557642cb6b1cde566af18033071d87df2267e5eac51d434bed2452cb48d69b9bfb0a2550cd3628d67e13b53dc2fd784b69efe856372cad62614ac00a423b4ea8603876c4bd2981cffa759a9db40343d464240c0e270d01e879d9a7bccfaa634b0d0c9a9d848fac168be260375e9cc0386872d57d94fb5761d2b3289c8944cc5058dcc9e1325f05d846f796f9002b40d6a9e309e41d7e92efa73d935bc327f82f02613d488815adf84fe19bc87544c28497a1dac4ac1c1946a89b5ed025f570300192cf0469e6946f60df5fbd3c78bbd346119a4ad5fc3caf7ce890446a65278e0dbf3e9802478e3172e4d5835494d2fc4b848bc759d645f6d56e63d454e4598da12f3a7ff9cfefc9feec6583c486a237f07f9bd871a09c5202d460a5f85101f5535fdd323df203e0b3db4da1e8d13c042f47be8c9ef9aba104831dc92a97e01313736d183e7e6df3c62cb2dfe0f397f780dd36a4ff03970c5767747bae9a8ad72939440040dd32efad9b0db54b02ccfb7cf6e56efd11817598073c92b351ce65a4ecb878d1c479c720fb1885958c96d9c68a00dd0e0631176ef8c81b2befdde2be441feca96701518b5fb0c32d527c0181ab6b285494ef76006358625eb0a5a6ee8520f551188b73bbcb916240c1d0465e702156ee93162d8d2630af581e4ee0c3ea686f96a371d19433f1166b22c18c48ce5b6958e490b87f569672eb3a10543ee3339ab5d967b9371c39f310abc6b08e3c0a0e6c31f8ecfe8478701448ba619b9e05f3f5582f50c51e182a357c3b640077821149312b4367d1051aa8be0d02ddf5bdf69763cc4f3e1c66bfdcbf693771ca9835170ab12e830846b794005ce250ad3943724323d17c1f108e5c720cab0e955af080fee90349de679ad5b89c2656b3ea159abb042f04d5ef9cc119b777b90b77586d9598eff4912a1ed03e2b05929dcd5443fa921ff00c9249c5490f4ee94d936780594f1619d04e9e7c598fff0a17568298cb6270e3851da2fbfb9b86046b75157a5b4e6493617022e0c5d076399338d480d54904bae7ddce2f8824be7d77c32963eeef5942bc1c4a4157e14ddd10ef634f15a2f6705b8a5eac0e515c0c88a25c0fa0b1f550eff4c7735803061229db0faa5b4ad187e69531873efa2e7d4a54ea76151b53b0d20cfe2ae7f36907ac055022afd9f0663d752840668857583a20c9bae6613a5d8ddbaa0e54184d3c5a544cdad46b510e2bda1c98792d82b9b60d4ed6a6ec26d07b97e41b00fe45eaaed40f1075848adcad904035ea169dc1d81aa6129860451ebbd73aac591b62a3b0a637c9d186f5fdb829dd9f7eba1be465fd035d71370e80f546d8563882a6162bbe30a425f275e6ea76bc47e655dca25d27b99f247a64a3c8d8c715cf312f02c106fa75e5ac35ad4b6a7a9aad1869b7ad4654df2881908b7979443ecf49177b6e250dd0a327376ca755dbc95e3c7d2b95de503d9a5f1e1f49c2a49423102015af2b379297a884bc41b093e1582e1501fe77c63a031658430e36ec6c9c6f2886ba5364a09716ec3c14000f82fd654a14d04fa4b72504947880a0129f169a8184e12b78ce605e3c72207379617e6ecbf85f2412d759a80c08f214088b01097e77042a166e15eb3f6059d081d911364c07d0642d6b9c6d05907065b7807d486777104f12b5947d4f9fe2e90b1a7315ccf1c5c6301d95d886ca2998aa62a42c744a9115392c620f2837be12195eb46b5af5f89d49f521676e865c36d18ad9f0740553a6942cf701657c08e13ba13348504920bd69e7ac44e2c76636f06b508d10ba6d431aacc4ee3470073c368acdb951e3ae49f93be024de9121722a1479d234d2644d347a32a9f84fe4762a83d9e479e9106f1194871f3443272911d34ee0e4211cee5e13d34d401abc5e48b63a2ec56963af4ed4b457f451ad0cb2e0f7477f980aae7d415e441d08d89b3d4aec13e13aef0e058f879a513bf4b5b12f4e155400a8c3c77a0baec7d5c881a07c84f817d14ad85e7064f610f78a0a5ac021d4e753e61f891a75bdb4af8c4706371f01131d3e60e54c303daa45cc20ffa7aeccf702d7146198f32cb70aa82fe410d85bc09341520a9a0a86db2632c0b601c4ebb0fe368202d6a6d20b13ec16531e8b5e26fb633f195f2e3fcfd1528593a548a7661be49a02091695cc284c3395a56b6ec48e738a0d6fa9adb0dbcd11db84a8ab8af94c064eca268c0800ac5436aeb8021e07db2ea21d847d9cd9b55dd08a9a3b9ddea1d8d952ac96351e23e8222f511e79f92206fd4e3af78e9792e276d9fd72b93b621470fec80dc0b026c57ff98d839c4c780da44b9c91d2c3565523f66703253ab8920b898cc2c7986e07506b354c18b4f88681b29fe6e5e78c8e70f10c386a2b44bf5672fab3f71ce80b239592805a31531860f7a7d67c7ae3f4dace4abb3e0e582a7973710efae67f752e878a86b7d9890b0e6f3f198467b3e12e5ac2e092daafa6ef5ee6671c9c564f6630f4927066696cfed238424acea3ab57ac04212a7716111e7fba7742fe3fa6fe2ac150f2d41493cc14ddf5bf8ec220c9f10e9a4260ec262643836444841c4329a3bd243738c02af1958caf558494ef5418532499f220c57264403fbb5229efcc040a8678cdfc14b8d2194176378c5948878e939617e7837c2cac92a65a9f8b5ab2e19614b871718536c5493225c8005aebbcb43984675924bdf42d699654074265d582fa7225d4734a793f1f6604307c24f6b9d5d50a7973b85b873ece6e22d3d65928d9ceecaf351c6c79aa2603d41e70a489755c34c146daac0abd039e3e2493d957aaea81abd7172eba3b413279645a0a3b32a5089e8ebaf881d06aff8cdd2b487708b27587dcf57af57da931f59d4c8342fc742baf8c33f08a21dc7a660d30ce1771160f402e8abf31c431001d86980be296600efd7ecf3af3b7bd3530419626732aa849f2f8ac360ecc7811b1b4523426a9a44d9a6fb8b90a7f6811ac070784c5bd6bf906402cfb0a671eac3f4af4c17d60dd2bfa02bb2fb795fe4d8709ca9886ece65c65ee5cb470e3147cf945d5304c5a7c20bcf93230b67e9afb095d716f3286c69d9c14d6db3b7cf0a4345ac10d4969e25db96c90c804cd95e2e5664962dd0c2429d58c3b25b968ae8214e1092827127fdd445b027533d54ae00c656ecdc7d62f8e7fa9de7a894e8e3235171ee3224444707d5d32513481f97e39a513d71d1c08d685150839f9fe1ffbe26a11b82f820eeb58248b07815946f1c6852db00c4b989e1f572e74a207405b0ef39aa321565103bd177ecb1a4bdf2385e3bb7540fcd154d784f33d1751f8bab18e04f88be4a9f18513165eab412cf1e080093719a52a73b918a2feda9a5b3af81f81a16dfe201be264927e6e938385ecb2db1091adfd926774ff2266b49bb35f7b63ab8103573984699ce0fa395f5b25028b4027454813c8d2419baecacd3ef2866520d6e95bd207b58fa7f642e75cdcf1bc427804cd82d97edbbfdd3c4e7254a000186c10657048f567d2dd2b36e03d94f46d5c991e2e7eac3634160121178d0c63123be0234d72fe8390d82165f71c0b38268526e1c6837e0c016af66a86237fe734be34d6049df0e98f1aa7d8b996d04676225617da828ed066d4629073af05328e384c89c6d2644a687615a5ee15ce337a2280fa9c0c837271c40d026739cbc9ed01daaacc68981b3ab474ca307fffc61f61923925fbf6d7dbbf5babcf3ab4324443fa1f34cfd666f70c2f3010aaf920e18f06e270664706205531ec7d2f865d2c508d7849f7595014967216fd79d3dd3104e026d719f65fd9471d10535dc0e159c1fea638a501578b0a223f3923a26060f061c1154e782603296d0a476343ee5449fc7d41fe7dfb4ee4bcea113fe1d200ed3e6ce10a60f1aed2d13aebadde81bacf59f5f3e35c609c18a6d1b989594b5e28740be74b6d0a8977a77d31ff1c10707b8090118e5d7b48454dbe673846fe510a96ab15e82735e2da87682e22011ea7b0912e1676aa9fdf4ff892eac2f08626ac4696ecf43ecd261344cd0d26624f3018ab3a5b7dab1b786100e794ddc84f71caf9dafd718931cdb2e356e17011bc1950cd620c14740f12abca7a1f2cf8e3bef593421f6ad915092440c1f7c5763cfc457e050cccfcef22bdf2020c341d88ff0d972db4fc5bb65eb0e08a689ac8f87c2d5fae592f09d16844431eddacc5b29ff4cf3d7bc7482cf4cec818d98c194efc38c2a957f0b5279b38d3035ea8f13976741c5412b9b53f67cee615777040beefeb8d42a4512c5caf260c9b049e0b05dfe6f1cfaf7d0c555a07242c24c71fa0f63e4402c7804ffb31e5188207f190705d068640ff551ef40a3345857c4dfa9900a755025926afbc7863a54b5988b47834d882388967b06fe5068261ff0732038fb8e9c657c1f34f9bd254b8263b87d023e19c4663d11d2fcd1b912082406c1251d08c89aa31de79aa04f16effa4f3b448d0105dfd51c9b4f857c401258dd2c2479ac66176288b9cbfc691fe5abc81e484a80184ce32e2b9856480f409ba6f424470de076c8aad3946de801d6e2fb07cddb7bb8a476ffff6f49fe3b008c699f12a1815bd670b1b9ab6262d12dd6cac8f4aeba77d2fbc8ad6c39de1be39558d359a0e4f7c25caacf6338dab0f3b01458ef1697b40fb06d61d35f8eab4facde535e2604d8d8dede2bad44540204baca9a905b3050c24a07b696b6f1d713126d7f6e6c4ecd5b27d4af27be84cede565f896959703e79c50c7bddfa9ac6d92e0e8544af848139d7618515a6e113bd80a928b02560b66650950bab49dce458d958d7ff2f3fd97b932db79449269902d4081709db082c5f7e48c170854be5f38ddb730340c822250d5de16e4c4f9e702909766003439a8a82e872ea32e7b051797670b01cbfaf58be17c67c73839ae773bb72d8b821e5e8a524d0cba1d32b269d73bab4224eca252ca54b49dd9dce39a50701e5d38f2791d28b96d861e2d37b49cbba480f7595b61d45b471870a1bbb821e5b524a6977778cf165ec58247de2cfc0c1f6c72e0a39bf2291cca74ff72b52494291473ff2cc740a439dec3607c7a7bb7bf4a7d33de49f73ce39e79c3332cf5abfef3be01b42d0ee0e8ca81b5a2f07bb710183959797c698e9921893c50d39090a16ee9d99315a6e8f91320689db4486e31c4ff2c5b01954d465a1faf1902cd232d94b9a8a3f27b10f7e3133947e398c3f0ac917c386888a644647fda49999c1203e725fa235126aa4ebcaaed6801dc849f7556058ed8d1d187eefbab182e1cf8dd1c6f883c386d6bffb82a4ecff597e5f45ce9ceed3dda7e7b08c2fe59822eed218a31bda2627386eb194efde4c4c44b9a4d547d02e4abf564b5500536857eb059652fa6383a57452a2386a4e0fb7a8d482e36791c0b7e7b39ddb2b6cab765f648eb59be6cdf041561e6cb436d6e6581eac9b91524ad9d27d724f39a574b98203f1965fb8959195118bd38dc50b953215032abffa1658c4d0b2b4a09256b250c165e992ca12c5ad70272a990506561ef1e0c44b134c4540e57003993348908ec42045486c22eaa86439c25932dd18215e9316aeee74f72fdca937e1240d8b2efc07aebe68d5ba65b774d93fbd9b7f7aec2a7d988c9428bba5779315bd9bec726f7ab9d9b1a138f39c556a724a29bdab523696a649a7bbab5e8085d30d3929842db0b072436b5ded8a3daacb4b58c04086e198198a245326b139dd6620b1f388d7a993c4867ebb28bdc937faddf323ee356047091b218cd0ad9075e5c718632c862b1ef3bafc1f3caffc18871d25111c387e7e5c2e8e1c39f2c739994c3aa76cce396774a254c6a43be793d11192cc471094123739b9bb33616543aad09959d14c220b6b52fd69fee61afd971cc9973473c38ae4499d11922df29a8c6e58916c11cfa933f29aa44fbfcc135a52834499b9fdda130d2225eb915ab4a4a338682acd26f9da92a43821474a45499f7a943ad3714f9d907c75445c1407c5cdbaa1ad3ae964f5a8bf23ea88aa27445fc0ad78b0fcd68ac7087ce5f4075cf1a8cfe00fa672eb8fee3ad4e5628c27481f76271723f32554badb879471927e28a594ee5066dca5dc5962a3244223292929c9c61954d493fce9c1f58fb1aeb3a8b342f07a37d855a252935392ef40b1f18dbe219914ea1954948f18d49a1806292bf40fa7e4c1a1fc90ce97d5fdca707e48b939ab7f07baab813fbacbac909db8f26747bd184b0967c853ae64962d276cdc41c2e929c9951f9b9aba57df3ce5ee9148ca8486f8a81ecd14ad9acf8da6b8dae950bb1c6cadb556d053f40b4a29dd7c86a194d22837409d524aa3cb8fd5dd9d4e288d24919030a0e5d043a491d13c77777777ad7a1ed76956668da43d6a20facd0335e79c5fd157444613fbe8669c99319bb16546938ed057f415f9867c4312741e381e3e198f9823564d2b28f9eaf966f669e574c355d4edc8f3f34156c4c6ef11ea11baddb381adbb23b89247ed9940b44ea1e15a4eaad52dd53595a6d2543a1a3f58ed9b4a1f35d09306426a2028541a48a94a03751fc10f6eb07d74a3a2a2de15e290ed142591909a5ad6a38e222a8a92b593f4e9af50b691640fc99743699f7e242a44558aaec8b61c5da476157992f4e9b7f57324d78fcba370f4f01d2396dbe5b46d4e9bd3e6b4819ee4f1f8ab81ec503c1d8e84848484741bd4de3fc5f224288e74c5ca224d1669b228944543511ba0b3a2eb3ca2a2a298be3cf2f2fbac95cd54fc91e4f7b5ac3d85ac11c7ad90c6152528b77f3ba266dad5b376cdde67379c457348be544faad96dd553bbc4d8f8a1ea4c947c6dbfa58fa484240e1c3f3f2ed7fff7599b120abaf27db6a5e9f6dfdcd8d9ede7ceb4aba1dad510e0a42b292b88ed7184e46bfbfe1a21f91a9237681a683ece10928ca62759abb5aa279e198f987675f8c986746434ddaed2870ad292dbcf23bbfd35ddfe99189e2ded6aa77649fea48f6df56079a064b79fc68e131e9d281e28e9b3d3838d1ff240d1a84d08ddf020e1e1a9c2068f871e59d15d19c3a3630c0d70e012031159be60a617925e50c60993319230d1a4345121862a064d12e5d824325c3db7bf5a6eda8a8e485234e4f2d38862d91d7c973b2bbacfa0a29ee8ac29972e5df362de555aa95ddba4dab66d9bc64f679243b93b476c7cffc154ae949dd42efeaad1aaf153994c55ed3b0053fc558b422de50c8aba0f7709f2b681522a353905f59125439d99f93ba034ba98e9942ca35124a25449faf0cfc0c1c6e85cb524e9139b68532872d22657367961804985112fb6dce0054d84c941862f9a105152032f59c4a0336505d2636852da9aacd8c85944530db4c9c800a60e1c6ee0c210556c99620b1024a4a479028695293110ba390ae22ee7a4413e846c0d2fc49883c58729adb48245090ecb94140a385419838b199ca0618a25983063051158e800e50aca04cb908705874eb6a00a315e155d6c6ca58a3064162c4a362c4daad4b030336b2e2f61c1458b90bb144174a4d86125adc4328352f9554a27a2d04193b1184a9740e1854d144164d0a427c6307344d216488e3cdd00ca1022c0085126c97f3a861a43869e5698d90d5d459c237e1f733c99bf3cb3e2904bfe0ebe581a4bd848830933b752a9c92ae5158d3ac01d68c70222fb444296846be97327898d4186fce02b9799b9c6e6062727680b92af785454adfd5e553b1ab7cab5461a8fe42bcedaa7bf566bbfefe36cceccb44fff99a2386b573f78440a1dbac20a5ce9f1f84a3f7e6a066566369b7144a853a7214621b8d7ec2698d3ad88b8f7951d937c714bddad52af3a4948a9c919486c046b576714c98f7368600824d2e84c085d8f6fb090c4de7e4e16d9f8a1f41ab023290c49381dfbc4d78f8c31ced032c34c31bf265e94304c37a461a4f0eaf2529823b2d8d267178ba24cbe52da73139d505444948aee3c2a516c724393bef4a7f47f09e546b8e9b2dd2573bba6183eabff7760e3f2d3295b55724b77efeeee1877780831d8e0da2960f6ad0c4bd7fe37e45a2621505cfb355eccba22ace62bbf28ace63b2f56639962e0e1aa54ef793155f53ee5c5bcdae5dc8e09862ab7ebbebe70bb21a6db3de7c5baafe68973a617687053a9dfbc58aad6c0ea18b7562fa631ad80864baf5cfad38b510278969eeb2e085da702e62e50719d29c810ef94e872105744585b63fd586b8c528892246af891fc410b466ebf37530b4c80682287160b640470fb3d984394d0f00d0a804b171698b8fd35bc58dba2ee14a02071d2e50727252f73892498d4a00a315ac80249660324626ed8a51973fbbd9984a6dc7e96e52c3fdc400b0d4e51e46054c686254b339001cb9617a812499c8c74a00408b7fffd2d191fb0d440230d0c3fb79f03771e84b061e5c5641c034c8f17eb17c6f0e7f162ae6a220d92154a36f012a6042d585104142b9022248a246442746420c6ceeddfb1020417486644b9ddff79b13ea20511195e4cc61bd870e3f6ebf07b41a314e408255df400731b7698628724426a70842291a448460d2868bac871c00da06850f284131ac0d0841028b2686207238470a04f7e9861871b343bdc7eefc7914d5194e4d1e6dcee098387db5ac2f8e2b6184bb17effcf5bc0c475160489402a673aa20acf8bf50e60285dafe27ac5a1c186dd17c1287243b8fe9d17f30ac40f43525ddceee78008d142e445144710f1d405922a96286a42a68899217a040f5b708d8a41006effe66f231a253ce830278d128ac1edd7fced74e1c816558f15178e20f9bac283db3f4b68a0785788a1056278d14318424ac05c0530986a70c499249ef0428d4032c375296994e1808c0d9cdccef1010918feb09d0d8e5c193996b300c2c8f55f40bf840cc5eb63a4fc22ca6d2ed786d3bc19c3722f5ffeed33fb867f5fbe80c0e673b2fb2981fe3088fef9327e601573be6bfecf7c1cf3b935cdb4ffdcf845921bc6a37e39ac79e98b23378261aba9fb23d2177eda4fce8d55757fd3c5e2108bcc20ecf6f1887320f9903efd35070c6b4f55813bf5bbbf79d533d7af830fff76a1eb762a562c8a47da057e188bf4df7c61d9b3b9c286d10864b13e1ac917eb2b5bb03ed801187200fa90afda3ef1739e0618d61e30b42b30fc78c0f07f070c5d1f18d6fbd3a40386f6cab039200e6803d6803fa0c726b4ab483c3a6231acf04704353005cc162d1881c40526801c3172c50c45658864188275d0a92c386e85fc811428a5545686596e8e37c4d1b02a5f0c8bb77a00856da1a72d9c37d0aa01f1c155fc7827eb7b57ff4fbfd3efff89dfc7011056def003e3fbded5ff4343e40fe2bf2963431b41183f18e5fac1c11f1461b1e316679a2e335d5e3a13c48b3317009797ba38a281c47e4fe58f7d8e40c354bf8a4084a97efe2a02f66b7e7e8c32da54f7401a50df7b12ea7b1eaa703b72402e07fa94088256a4473c72fb3530c883008bb90da2f0010204c9978d106e0cda8165470f13bac127ecdf70470f136a583f2c579aa02e4845ba3471728390121d3330c2cb10234c469248dad1c304af35218ec9aa3fde5503eef72e20d18f92a09a5b4a1904518d5c24ddf839dfcfc0e9c6c805d28d31be6c0eea8e31468e3146fe3861313efbd1e5eff6a3a8c405d115e1f2d216545cae46760db48a2fbfe208dad1437a9c549393f28d293f4a016160e5fb38e103f253e8fee086f68e4293081afb3d0d92c023e0d8d1aee7eb8076c520137c9ce0801da0530f137c9c0081ee61828f131a0cdbc3041f27f8128e5b612731c78eed73e657b5ab26c822071b9ab07001119af8ceca6959cbdaa88f1a4916a38d0f367e3142cd680462f1bdeba793ace0e24320fe8a2f7f04c1b07f43cbcccccf2d0651f8c1c2317fe5b7fc5f10fff7e9b0254d932e4f8a4823802948886105162e1461e1b7fc5f023efe8f9f8338ae96ffe3e704908063f97a26f43939a75390c736277bde8d8239e79c9fb3f4e9345188e6a4d8c76fae77a06e927dfce376dd045b123e2905d9a368f57c05d2beba17abb5d6daaa2d0dac5a94499cec6666fed8625d1a586ce8dd24a86a7777cf1a389c30b625e386b365643955fd41dd598fec53e55c7731ecb6d2875d7eed629c30b6bbc330e388d969b2f1e54e939452cad60f3672fda49412474c954c1cd70a75dc1dec4250b68e76e9b5f272352d3b529eaafe6a70ced822efb3d540726a292d5563f36b4ffa1afd14a5d429a5aea57c82a1f4e987ac046a5a9d73d297fed29f8b2e259839e7a42ffda557306a75ebb8ae07ae0719ebd6691e09384f34e53571dd45be7175484f47bba74307f574c8ee32189fae1d3094470a1bd65a6b573bcfeb6e9ea6e669eaeeee8eb1bb63f7eceeeeeeeeee6e9ea6ee18bb3bbebc11ecee8eb1bb6377778cddf3a85d0d7267c667dbb603c6725d8c1e3553298eebba4ea5fab1e172bee1dcdddddd9ea7ea545eac7636363737381d4e4ed7ed80e9ec7777c0acceccb9691e097db7e76ad76aca5698b0692c8f5df3b9a006b261970c2a7553a15d42a914a282e4cbc684f9acc44e5c273b4e9eaa0d8c35a65d1c347e5cf7439d50e7cae722783fe03429700af8858107b7b870fb25069e3d468ddbba1d3036e4598a7948f120419a9a4fedc2f192bafcdc543d5457a54ea9699a6ac9d20559d3346da94c94ab69ffb409f59294540609150cec5119a39eaf8c0b37fc9e70ba1a2dec6cab138a4b5a44510adaeec62e4eedc3174a63b95a5a58b9612b8905d7a26407941065e472b4d81fad6ba35da0ab35032d9eb8b17b62b5248f8ad55ca04aa245921bfedc28eb9797b490bd786851247df852564ffb9091e2ebf6cb4b646470c32fe98ad8b9bb920f515cff0538a087f4511dfcc69019e23651cfbb8053dd13daa79f461636e4996bc7ccf26c070803a2fe28eb8f46fd2ef97271807dfa9bbbb8cd60dcfe1959b8dffd92d8f8b278bbb72b3d3d9e7884a49097282aa12c62c8145dd9c818b97b2704c61382f262a4a509113035c55f18f9c0022f51824c61d40119d280992d9185e102169f59f6c68a7cc9601fa6f1490ff82347ce11ef039a7401628a2b48514e13d8e2062b582283952658fc1caec677499fb07e1fdf157fa6152626929898388a93c53d3d5104f9eae979924f3d4f12bc699b8efcd4eeaf1ba2561237fecf2b8877b465e9c61f618bec469d1b674337be1a28dedcf8f1739a6efc6f034e6ec866e40dd79e7f0dd6ded8eab161cf8ddfa9e83d6d70bf91c6e8f51b677712c7978bdde532659df527fdd445a186e0e73210e63476489aaec89258e9ce2b2557b65c494374a40c076aa0854849921a4841c50b90407552c240de5885cf0d736ed803a60722b7ff4392c4edaf79ffcf81b8721d0716727831c5430b587870bafd2a2fd616890dbb2cb0b0bb9e936387ebeffe95055d1c51fa79648b5212688618b120ebe08a164a48e103d1520c508ca4d8279cc35391a7ec4004931d3e9916448244a0ea2f1d8858d2e1cceddfac0c06b4c88b36a5641b39a985274a28c1822e66b004032045f470c5081059d88069079833b1c405db9c4e3050d1900f45427c3c614c490285c3154756c03c041884c424f1c5930d98e812305ce972dd48148b8c3c715b4a0f47d010441a91e100b7a36ce70bc72dbf6181add7031ceceaaee4d75ff5a71e086c25c1ed570daac0a45f850a96b07dfd0aaab0814060f1992987a65bf9c6f60c255f1b289daadfa0b699c2860d05e4df5111d8be3e05367035eb536035c11edd73cfb0ada1a493f4f1e758f249faf8a758abf9db57d66a7efdfaa92fa17eeae9a7b8df5e85d4d70702ab0183ed280dec334c58f995958a4ddfb578733dca64882ad5045f5b08e26b03e390e8e30fd4204757787353418e3ef35b06a8eb43e24b3a3547f974fdc3d40da30cd79f2310b76bf6742aedf2b065904e7cc39fb2a416bee15fc305eb55daa5d42e7f1b26b63f742ab7bdc97b034203ebd34dd3340d041da44933c6e52a3704f20405faf4a9a669ad56cfd572ae66835f36d8477b8eda7375e1be066ef15decd22aeb909a0676d5af64b17fef528a31fe8f0f482b5f3ac618231824c118772c8089e58ff177700e7ae33b208c1f3d8206eae7e1fe3b3887bdee6c85f3f9eccc5ac08e7679bdd1dddd3d06f10d9fe008edf28f200e1b28d6fda80b8e69703fec6870fb5fd1a97d3a3ef1ec76ea86d129a86553197343d0378c4e4e7c430bdfe8afe182ed2a364c6c8cc1777c7a8a4f2fefbb2319db2c4430ba88455b7cf2dfaa9d601433dbe28f4cbee217f6e997c5271c21b4ebe7462a0d243f9291f2e3904fa055aa3f12718eedfb4d680757ddf3951d0b0c8e15aba4b6c4a498149feccdd1b73f26718e1867118a5f2384816a82018c30a28ca1821a98ba886165c88b2758ff00f855f3dd3b3637fc517db8ddf0a787f8460d18bfb00a64f6a94f1ec86c73c3f8b433c308fec83e63ff863f3f3882fa773471cd35b18373d4f0f3e0976d6e79b5dc0e723084247204cb4c4843ee7ce61caa98476666666610704b1a29067bbb7db8ddb12252fb80e08cac0ed2ae86329b05f6e98fa1d66075b8fd2dc437faeb8462c318a1c4a61f4590372cb0213745a3065af18893eb55ea192ae96adf7cfb538843f4b76ae6293e7d090d3481fe08b008413d3847ea3bf31ceb470f2a3c10625b4df6f6f75037917c79df2de4c3031d6cf7ded30fadfcd91da4879a88459f27684209edb241b2f56fa6900fe43c1f1059ae72ffe9d34d0ba2df536e7f0aa434a6224365034f2db4715d243ec9578361ad600bd594b1fe7c436e0ab98a037634d00e127a08dd16eaefa1fe26eaef22a89b18703d2b6b01f235c11ded1345d0c0cb20d0a78fe352500108b8f4b9c801e6f13b388766c1b8540b90bd34b270691797464a29186403857dfab4e6d2a735ab08ccf7b7c07c0757f2b7679805fc5712ecc17dea1916d43448fad04fb176c040df86094b933810c2e25cce21df9ffe275ff3a9ec39845bf1d01864be11351781fb72c49bbaecfa72aa08a9676943bad714cb8741e8df5801605783c04f7c026ebf622b061b59aa7c7670b95c2e1f97cb866b07578ef6439222656ef8a342c254c48901459a88a8a9dc4ffc5abb9c9f10dac5c307938691a41511a2e14d74f6493186e60f1532baabd58a01d53e1c9b55be7e8af0e0520a6a688c6465baa14807ec626108f58b013710b5feb378b133cab4a2581e2b59ae480a7205944e0afb9797ae38e2155d01031a2bcedc405adbb5ad8db2d3c9a26efe7d2737bbfae944cd6ecea9e920a56c1b2975d090989dfd96aefc9e06e21c7d5b4dba253a182cbdcc6443124c3610c17d5e8c6ecd65261b8edcb0f56432736c62a7a71dddddb3a7ebb26c2034ce245c186fb356ce51b254f1766358f598cd0a81df1f3cbb7576cd5af188ff23e70271c5ff9173e503e1be9156d504d90be72e699c39bad61bbc678b8dcfb26543cb86663004525443091bffc76c2525d9f812d4349027c8617cba0c7255d55acf700c8652d66724511b25dd907e2379b832e1278320e800cfae46c11f3c735648affff470c5d16e88126cff072bb01566548f2e235d7ec9e1aa47fdedc6cbb5eb266b4b8a141b9f7d2ea7e84c55d5b6812aac00ab65b80d56611cd945a97ff4548a862560d2d5d690aa815b95de2385a429d8a6693cea06eb668a15611cabd9877eaa0494abf437588ac5b09eb1f99cd66d5bdcc05604694bc68cd3ba86b10c18eadc34ad690c1cb75215163d0723bb34ed3dc5a2306ea08d4b691c8b89b7ab49e84b5b32d8b881dc40954e8fc2fa47d7becbd4abc783b5c1986f508f31c23a56b38ff6a9126c10a877e3d8aac837341ac170855ba98471aa930126c56a18f77f2fd8a107b8d39962bea1bd06d3e80663cf5e07525b535d1e819358899bd88979c666fe867c66ca80490d555a20328331b02864806ead3b8c4baa2082883237447dc9a26b6f3dd4a9161367cd75d7b273ba8dfaa8a1dc1e6a55774d87ddcf61cf6e43d510b5edd9924816499934ba2d97bc94502415a9249ba453ce87528c9cdd9650a1779103931614918d19630416ba0b6ee844b73ff4229d0ffdc86da29ed1fee476c71ebaf6d743bdd3fda19b71288f12ea39e46716cd23b77f26b9ddddab6ea17b7a6e994fed4da383341d0ae9902068706e775720d9ff13028e30b7ff03533cb1218c10a8211ca06690e28806a3dbefb31a6eff9475b9cc540315222e2e071c7cf5afbd566babcbabfdaa53a25b7b3c0e2abd349ec78bd12052727bde1b08c7edf99517eba9daecaefef362ab1bc265175c1b1b1ab85c9bdff162361fd076795ec78bf1f80c62eecefbcecff0623bf5fb1c2ff6d531ee8cf7192fc38bcda83a2998cedf78311d22415c194b57c6e378311975c272de7ab19c7a801b2169ee8d967b33c4e9debc8d17bb61065add3c5f9bc75179319c1b566575edf240066b9fc39e6b5bd70692280ce7af78f46d4db92ce5ae7af48d32267fc89aed5c628cedc5b66fd8091f482112d90fd903d7ff7c08c8a171b6a65bde57e15940f51db8c28a021da481a93ec2863a98ea871c16a4fb172a2cf200fc3d5684b55782c354e00b2ed4c0ba6f98f47a7420f3003c4ee92f794aecee82240e1c3f3f49ce52ee749fceb16ae76a20cb2e2dc7860c14e48c43433c060113c4255fb671fc8c30274d4571b581a494922b75a7f49dd2496923c1d1d8c2c697e1828d524a49a56c2aa56c8e65babb7b4ae91294dd45704d7787c4215b7e92ebc6b11c26a56c588a05631fa624eedc2edfd07ecad59ab8f33956847174aaa444b993df71fcb8b4a0f7f155e9a65813d62c14386936e15ac6a879b13043be44b9318e71e3d3a52f68ba2cee073580d9e146cec15d7ee981d972e36f5eec831abe74b1817172e3ece725304b37bef7250aab819121f6410d5fbedc1863f58ef812c48d72468d5676952a24c1ed9755484dd3544c8ed8e1862384a8941c21a45ab2160ac9d659d7859d613c264e51583a858a88e59e18a2896e89dd90603262890e4ab258ed329311482e931135a8745c99a1314248c785ad97998c70a1e7fba2d025aae571e2859d4189769c88a9d169927d4eb86832aac8663889a2264706433a4ea2d4e01cc970a244bdd15125c789121b1b259c6f2747525666d43e7c6fac131abc1aa5249b316c544e7606365e1443355fba0e0a9596ca4931f3a2e0524a44dd0b6c36a627eec8ab32884a29496944db110b388a54eb910c3653c7d2ac890d709a9e9a8cb1d1f10454932c353a949a28d5e8603a6a92547534d52f0ac8852764bbcb4b5e8e78505e885cf112a4ebc1da783186e566aa2a9682e99cac4e156f884d4df1bad8ba04511721c874399243171b7ce012c693ddb9bcc4e58b1156a0587b79898b9426d6a1bcc0858920ac767989cb932f4ad2928de82d17dfe037c065275af72f57bbc8e224bf5c2ae772dc4d97dd1d3bde32a7ade1c81e7357e3061b6b75c94d2965efc45433737f9f943f2ecd8bb5fcbe5aabdcba6bf77720c378a54667b3f30de6f8aa5a77776b2ceeb651add04066d33862657359976baebb594a965dcb9e33b2e27d62ad5ad573ead6a5b8aebbc85daa8b36d7765d8cac7a39558d8d6c6bac4d641bdb45d6bc9c4de41bc9d9742eff04fe362ef9ca6f565fe75b5933b5dd544da3aa1baff3bb4203e9a64cb48cd8f8354eb46e6c5a37d85aa99cd33233d71a575d8ff995fab87ddc58d27fa729b56d1ff3acb102b1cb596b4eed995da775d49b395cbc7359e386960fd65b3ec8e8ad16e470e19c18b80e66b00c0513a80b0593a71bd6afa7b5eab13ddf125a08967a5b51d0584335c80b38601ba8fd5085a5c0cabfb18670c0eaa758415ea8b0fa433860db330c049f086aae6b578228385802798358c95781936027a07f02ed6dea86278c2dcddc11f46d716bb3d9895e3da7ce4ebabbfca89220d7e9842cbd99b9a6db6c7662cde969714cbecd0d4e97d325e654bec1dfd7e6ce3975ba19bee2a7804c93a65f3e05384d1a185d31d8437b094a80611a488104c0285873ba30e3fcd4c8ba893dc6ce53d5d8696b545e67c39c93fa941fab163b4f5553a3f2ba3843a5eef4b9ce73293dba4f9793d221944ea9d114d56a9cd3ce6dce6d894ecab5da51a324a4a3244f5579563592d2aae9448f110b218da5552dc52deb22ad725ec79a361eb8f4a3cda573566e6e5d644b12d678e5342cb69675d1667393a2fec52feeec44d7549de6ed78ac4ef3a94065f9fce8f2a3534a69063c0ea42af8809af9a0340803413773d6392ba5b1035df3a377716eec63f3b3235dab945d7b8ed54d7082b3468d1addf40fe8f4389d464aa7fba49d375df33a243682ec9a1f65534e0058a0690ee8aecd27d3e7d4349d1954f399ea01b820b6a70a3f6b6303c69994d227d6a841d36a2ac5b5d00d2afde587ac5b8373d9829c34036733be4144eb1a6b7383932343a77a0d9077bec6c9be296f3ed779b3f3e8f557a9e64ec76c73a52bda5cfe2ffc346d2679b0ae3fb7f33b5e4cfb1d9eae8d5cad4de1df58844e8a20b4bdacd5cd2869894e8a9b75eb34a324a4a3244f352bcfaa66a660de95ea16d1208a429b50d5890d0317b7bfe38c63197e351519936453f1e2f64b2a4242425bede99873781d730e0e38f062f539f048e8cb7d079d4bbe54ffd344ad26eabe95749208823b472905f94aba755c13a58a84326a361b67449d24d5b22e0afb8236375c0ad4ba199d8c19dfb7d37d3b3b3b33bc18738ec8af9ae76dbbcc2f550d4bc5f2589105762d1435f3a002d759eca21e5c40e5f198c5192b031e8f879a8da1b1b49bd32f1f2af8787af2a102d40c4d0ddaeab95d82301084818db7b43a9eb785801cef45182182f05e8cdb8c1e6b631ffa3fc2f6b349efc872f3a00340c7eca2cfb3ebc0abcfb1400dacd181356a703534adb200d0b53ced39007c109b41a03f82efce147cf041b38b5214b83c1e1302ae4ec6080057e7f262f25d3e9d516ce2f22bca5a3b2c42841241e84fc5f2582cb3117c19002c70fd29bbe8e7780f9077a6d8873ecfa59f026f2efd2dce72cc442825666579eca236ec03251e45283a1e0fd69dcfcda8383e39383736cc37b82ec00bbaaed36a27e45b90545c92e45c74dac24d9d1755ddaafe51aad257daa99f7ad6507d26881c42d4de381da46f9a8a547239935067241a21971144c79f20f98c209faabd773a48f33410556ef7d7249f41e4545244491446420801c3105a1071c41219132a8ae8a1882e9a1851049acbc3f3fe5ebd7e5ee35b77d794f9e7f1ecbc8e17db296288fb3d71bf9fe1c5be3ae373bcd80c6772c5d579d779195e4ca7caf81b2f26833a419730b974098c2ed1c26486187d31d78950ba37378ff32a2f8673c3aa43445d4beddb7ce7c56c2ccbd2eed6e0706bde6b84d0e2d60c31e5d6bce7c56a3ed5a7bc982a32192d713def392fe619404c19242e35a8fc028275568b122baefb5b25630491e5fa6f5eccdf8b719f12d94da55ef36229caea01e28a5beb4f2f56ab7ffc2274e953568e73d8d30227ae5c0226df2691c1954020b9ae95f49f33c6f740c8945d9eb8330447af6c9729d8e1b480d21ba7f801c65c6c5cf7c14884eb5f7d0873fded0f485cff210b33b5e0c9f5b7d63f1ccf7f88445997eb4cd7ffc68b79f717a7b484a07922091aec7083289b130d447e58c249f642134635a06223a6e6a8344d78553974684a0000802008a3150000200c0c880402915028d22439d41d14800e6c88427a58369989b32c88611483903286106300000032223443c30de89197cb466f4f87236a24d479993b3ee8138bdeab21870e2d68856cfbf19fc80a72ac54fc99df77c9c50213f76af8857d06cd1427b89a68fd4e99fae49cb8cb384b4a9e7755a1531909343812edbcbb6082e07684aa60259e6279f2957d4f1dc3227167564fe189e93668f2790aa98b40fcc4faaea10e957d06102d753abab438340464ddb065be8edfec669c65033be9679e0793dd9836b7b832ba77d414c45fe0ce937abaf3e909b0ce3c6e4ad8b1ed89cc7a970054190aec49d58773a5c7f7eae52cb0ec038030615dc56f891e571b0cf04c89848022723054be4657739add347938325d84fff3adebace707a00f12a3c6a05a7955e53cd0dda4a9d07d5d367112e029b36737225eb4578e85bbf99446616d164cf9055345d47596e2140a6b15d9193289dce56127fe9eafc3184722d90c7d82a75a9833a06d69235624cc5ff06f48ed99b954ac4243df7d024b1e0698143979509ada36fa612872516957f2ae881c12292a6bc08f15b9865447f63f44d7943765ab534ac35b4ad6b77ee8068dce234ec12ad13c2c4c97e82414303933f9054e0cd94654edc895ba041c9803892e89d3e8c8909d85630cf94b9a19c75b02504be103edb7089cd9092b67e7ddcad8a1d521bcb9edcf09471b954ae12bbadf7f00c73aa9474f7611aafc39f3c36203a6efd1ec3ab182725cf3fbcff173b945e7c9269eb8bb7042dbabdcb5ab2095b2775db1c8beb5313cae165d1ac9693f7a5ea6e2c0ed03e4aa70213997303aa9fd56d9fcda78bc54ae5a1763d87a4bc5713400085ae0f10500c0d08a91067185f8b799327e264fccbb812097edaa2cb28d494cc8a74116c9d743b2938ceec2feb5c9006b2b10b9b08a6447b4fc5fe8da5dfbb6cbec8f4dcf5c28ff5e76f2ac44f9d78eba048e0d21a045d319e68fa077b309729c4d7c9f6a227b468c45a07425a9e3ba9e08bafd132fe4964a0abd75014b60353ec9518fbe70079f5b500e054f3fe55310efe1ea6ee9c0b10b94f473e9c6c1f81f6fa43867d381224d8671e8616dfcfae1aefed71cdb4e87f01d4971c3c02bf9568563fb834126bf6690f80b5f3b07847809fdcb7150f45b0f75fc9b01ca4e29921a458d9f8280fcb3d454d14c331cc89df18b3c798d1b12eb5d031acea66c88a583a3568e289ceadeecc62b416a74ee6cb94cd44b87a5273b0a023419e294c3aeb0b37eb1601057c9e85860f052590392cb6f9ec8c2b4fe6bbb8230bde0d65c3aa5ce343157c2eb5ae564430745a1728d24714826d7aae3f44d7bb0fae1c54579805e52bf50e20bdc78558d3c29a6724de8683011bda45128e844bc69d484d9849f17e94d937f50e5e050cc1cebd771e962b76d52132c73c19fc741678cda7fb79eaa1c653545bd2cfa05d96453bca96684d9625f1cb57dc9a67851cd08b3c7d28be0d06a2fcdb85740f781c45a5e48fb6ee37e9e6bdb6a4d206f6e268898a2c2ca14f0a4c3c1d1b566b62a6db5c1799534a2f2cc8babb5d306c93b2a1f94e7bc565dbb3648de463642f9cc2baab56b1be7b548232acfbcb2d6966cd0ea6dd18291923fbf0b51bf48340736e673c1c703898ad4988034b5fa4481247576e243961a7e8226ac0b1d56d409886a5d0dede9c43e1775046ddb27cbb1719f0310d251d212f8388f8e9319bb18966f6c58a284b299bd03c09da2d98152eaba0ecbeb0e24fbdd91a9cbf9534e880a255a55373d7921c820e4262ea78387f8ee47770bd3e42007272f7e7d8f063a606762090e9ca82394e2f8153be135b17c7df673ce4eb94fa728ff09047967c93fe6ab74b05aedbfd3fe9f4c0508bc51a0940ddb2d1d1dd27bd9aa3aaa2555f34184839e3e9ad5e98ea0aba93576c6188d2ae905d6a11d9ac66a31f0bebfa547c2c1eb5540a9d77b68983996f938034c75e133923ce9276b4e1bef9be32d8e62571834f6230663f1347875f2840e3b13eea3f775a3002eba762e0cec9183766925624cbccd10e01d11edaa0e149273b47dc0961fbe797e7412c6a2b1a0d81fc0263b06f52e04ac12adc3e707a99558da41d993a548f1b23da771802647dc04f79c6ba9768968382efc988c6ed38cce60bcc945714de0e2447456f1043c8b79407c634e6318f936e7abb8efbf321dc2571afed84ad877881043ce2cf6ce106bc602a653a835a7eb6b5e0a515172e514c654e5dd4fb4e2e70654642963cc79141e5e5d9c49491a3d6a5abbdd78f58dfe55eb1827a22d587cffc2ef0e6b3f05bd8abd47062be32be57a6e5b3fced0a2369c92d9b9888519f0c94e0deebecc1a84f087c5e94e54af39060c778b7df0a2919c5f835d4cba93aad898821f49297d331baf18e1c9280aaa8ab78c8852fbf427cb4e1f77db145068f1c0db9409a1ddef5ab1489ac56444c784da4b13b4ee3d9561a460f4194a484aab6d7e777abbdc45865056dc7c19b3250d519b698501a092654b888bee0a083939a1126e81dea866fb0c00a32679e64e1b9ae44965b5ed364a4762dba716e72e9ce75f084f4904741dc46787a55f02d9b266bc1ec40dd95183b628f870e32c676facdb3fd2a9914e800ed180a69376d9b0a174b7b1fc103864be2b74d8c2e68d6d3bc4f84d66e8116bf36c1180eebeb8fe3c3c3d404acaff435f5bbde69aa5094bbfd9f406c8a44baf598cf5c4c9fbf1f72931c9ad763414204e42d8ee2d78e5d01298468a39e1828a49a631081d18fa13bf94044abe80b31573bd7e6187d1b4064fb7ac91d4bcf73289b95f6184223499b64d0ba00a4d45048fd64dc4b14574046a86ed5079a2b853730ac2dcae67188e140a23b707848a567b29cc815303705473d67f7a59405465666bb411fc8ed1d95c994ebe9ba47d753fe33636ffffd20deccb51af5d94b86b81e2e12bac03cc2d12ac2fe1d5de5f4628d0cb6c6e4ca93d32401d31c3e4513a3238160bed2eee9855062c2bde83a7db2de5d279d1255e4af9922253f3a024047cb18c553195fe599bca5aa010682e7a5adaa153f2014d7037bb2ba634135494bad8df71b5258234a800b541e6813c42d66ebc8e9968d75bb5b55aac8c920be602ec8e05e8fc852e4439f7f8123a68708d2659f74b94c42cc2b1fae3a2a870a0241429d55702b81ac9d6cd8f07a61423cbc7a0c41afa827ffb878ea575706c5c4bae481277c080f5b69bc4ba92f1eae2cb70b84ac9318a7d3619cf289bcc010e5686594d1a5947661af66a8f6ba9203578ee0221215df2619058f1529f54a59251ca6e142df2fc6a5208e707b6027379e98306ebf12c1e17dcb9aa4a98045850c3f0fd06f1d0c3cfc34a281657862303327986621b4a4d210c30e7978602ad5fa2b4ad13dd52ae6e289f29694ecfa6066d683d1ec815f537c0e0c518506c79a786b8bd43728b1d9c69e7eb15bc9b7204384e9a7cfe42ecd8a46d5c68aaa6f8568b5167e9680012a487d7c2144407b797b3a8f5b6302df6e3e05b3c65b302076599543d0d4dda5b72a9b02867f3b190fe555e1c17fc051c55013bb57597e4bcc1c487330b5db7f41a804de6e11ccf7801bc5683f20e60ecca376042ac4528193423be16e141d6d5fc2d37094827db56802d41b7a19b9f00111cefa7b0d4423c4481828c912c624b2ce68483f72183cab7c4c5d807b45a4bc4fa8e7912da4440fc84ab417b9fb7a3a18d61e4ba17f327977cb2ac59e8bcbe1fa0007593afbb1a310c0efd97c9e0a6b3c451d8c6359ec6e18b671fe60a719a9f4398fb2ecde28b78f12f6da43dc7b84f96524e9829ad269668ea9c2ee0b8e3bb71fb22c413210071538dfa4137e0313c0c69842f06e165e77604fb7dff763538dd335f94d6b03fa269809798a13d20ca12a18b377812019c6ace59fb1f033cb38d06ebdb63142a61841885150687ff10083af9e2a9ce7469959c85517d89d5cdda47ac8155e7e2bf1c5a4f24baf4bbd5c53c9e76fa42442bdd8e344bbc98bc61811d2ac1bb658c0a74ead6c8a53c7b15a13baf5ba3c557ed7708bacbb87b9431a9d092a1d63514548ffee24ab3dbbc83ac9725313a3df827229570bf48c10ea26db1bc5072ae33de219d9946fc3fabd986a1196f097b65a2e272c7bf18e538e87194aea918385b208c66c524ec5c8c57010249ecbbd8dbda417ba471fe6a2c2e707c2bf0d4889e3a1f9cbda3a38e09a6bf8ca746228028a001d3166a91d1d90da6408a1a5588f7360051fad74b579089c64a65a3e7ef8b5f5f8d437105359107c6178e50b0ae66d52890999cb02d6d1b6680faefd01cd86cdcf196d9656ae72c1b95116140da4be9061825dee084bd522d1bf7277588fdafe1caff20efe512a8646d092e0e77c0108af5566867241b49470bcf3bbcf2975dac96b965b323cea1278f4ea8a5996e24ce4695c64160c7b059ad53e56e8ce275f25b0ac845917853064d8e0e71f0b550560d79457e7d4099fec89608b8233b0e11768aa2b0a032200107bf15663da43dcaa63c253b666fe9dc4c2d916b90737425c0e4794d396a3c764a67f49360a5301bbfb27383e7aed218333494537550f63395d84a576089348736592429cf21f3cf762e4c15a15b72489109ea16e6813701dcf7d72db99e9a20b2460dd91cb4105365495d442f7ec4ff43065535ad2e526e166f2a1bfd4386e2b649bc25c4512a07d4ba0821aba2fc85ea621526cc86cbd00477da6e5e97c415fff0f422a81c173997691913b96e8341829ba913c6147ce54de8e94cfe957b53cb3cd5ddd89bb0b6499451dd9b883bb5ebc88d0e462b10c85b931822efd2f0d49b344eecdfe69087f8ff44380915e3eb95c77c627132c4b3584372e186a7d284655682692d81e415558ddd33f26914c08c523d1e0c5d6f2308e3fb541def0390e0511ba746f86030c161b660051f3fd598f8d20e9cf138ec94a26ea8ff75ae4736a4dd45036dce812a03445dba0812adc5242550d93fa326d84cfee3259bc81ef76c842f1e0863002b32b7a6a6f0f2f8b44382673d33a7257457c9742ba6010eddf4644f68d18dde7603534514f3648cdf0ffee17d8aa22bd24555efa480849ad5e51cdb05f16541e3a25565439056dac8796aafdf5b8b591319f7e095727f5fae149893d64ed614e5e90918ad8c19b9f49f60ca21d51f209c1e34c423db5ee58741114cee6d40cfb75723e339deada6cebff34b612e321967287d9ce94f65c178287e03007c59cb9cf1ee1d18d96bae3fef821738c523a2028bf64814f62a7c9e3dedc7fbc6833f20f662a5813ccb1b3a638f886b9ab0c05b3395505ebd827da6411aef81af839014f2b84b6f021ffe31d7f04416434c019ecc2665655c48879cfb7b508a14a549dd83a62d62d193a12400319550915c2df2dc18b300e9d0446732013a002a30064213af4f85be82a64c2ba55e1daf780b0f57b6c3ea2612502cb1aa946c7b6dd4c914c4eae16115e65bd8dfb05ab0b3d1316a03c32b85f0e67ab4aa13cea35fd6c11af21fed00f16907046fafea0223f4f82c3662e390d3d7d9050e01afb72698919cfd72c9f848825a08dd87d5f8e6284332bc03e30a9727a389fb91cf60a3903c4f30f6081d02d65fbeadb5040c97ea31b4df27985d2b3c1f6056ef0d2fc56472e392c42f97b18889c758482aa6680f3b738e81a0bc29b133e228bc01d39096d297e64e350069f57a723c7913c60031b22839c2c3de5d7bd57bd8848d26c142bf140c11243c4d7058e8ce72618b9a9da5401dd2062654fb1ebca98be99755e138273e28ff746890568d10bc020e109624dda030185f4032c9e0eb604a060b2635723313fa69e193989effce1e03ef3878c0a1f6999eac8260ba34c174c2b77a100296e808a1f553a295af094e59d69d00e5ec48e21994a6bf2351a1d114fddfe9c9c4ce2bea51f890439ce0458c581b2d9d9a78993eae467b76747041c00bb97743134517500a512ef1711d0c8daf1f43e27fc7aa4eca0ca393814f308c2728e654d65bf3373b6869267d10333aeedc0839782e19aeeb1775225ebd04fbd25dc7bfc3c12e9b0f2c02416dc6116e0f42c013ca2419a552e83a24a50e217e173bc0d0a63b5800d5890b5de774bdfadad98f7908d9298f9f8f9b93527dc047d0cd054d668f30cba30e38db9ddfe1ce19d9aa3d5d2217a537bc46eb7fee03b036024dc4657a9c8da01946ae055878e95016b91eb0043cd4a091be0cc1c21d142678d0bfe499c0491164b5647bb3896e40834046c272d3b829a88a0db78355842d8c1319b40357625dac668ed87aa05d81666f30d923c83025aaf76c713fa28bd0e917040e5196af47607fae213b6d28ba7c718305b24ffe8b68df00e040e4d8728f88672594fdcbe364c094b9047e8dc722623a5c32888893d198bc4285ce5c71b1a7130dd64e8e944744b8776ed5149f7368e8b56af34dc6e0cd69bb506f0e56b1c6552a2e11e0f6a2cbc2fb9d79ee091217fa7e57121c03bd1db7f642240b8a819bcfb9c3449158a94b735c6f0dd011cd43d11a5ca463b6fd25c496eab9d2e4bbf4fe9b77023b32d65fbdc5f9701403362ba5b24028011d986235f8b5b30179c8a8d44c9d6a97aa3debee5ba435afc85580c38bfcbb3e33fe33b50afeab80d1b382d918c95e4103c34875cb8f198b61fecedd593a8bb2327dd12e4e0399b3d6d02c22f0f568ea7d246a8e832f0d54b6b7b5133a40c738b4d9d46cb7a49446a9d5d939bc0ef2b143d0fc5fb4ffedd9f9e6e7d8767476de1e6903cc3240037ef575b6e0851c3396d03c4a1cd17c8b09f33fbf7cb48eb3ab695477fdad6e0a926058216e08c2e9dc8e17aeed77df473a841e7c2804431f24d00e6313e0aae59e5d2577200ba780ad2704d67e6f7e2d2cf444bfa85ac610ee2ea563b86ef055f6fdecae9865601b334aeb51cfd92289d9cac8c50877a99e1d45549f1d09ca1a7884cbbded02090f2d572100da1d9d9e49693935cbe0854a28dba965acc6ec26ed7c47b7fb011b8c4721a0a7ad995af61cb329901f20b5a1b14300494f77bc0a2075dea81696f3723e9ce6a80aaa82fe43f22a6b0248f6f6744ecba9a08fb0e2b26869af431699450a4a13976fa980bcb51e9490d6d652f27ce11d1f9a7636993bb6526ba8f38b1623f64d1f92169f9f80fe28c33e5b12a3df8338fcbded89424d8e70fd8e726616f3cde3a9b3f7988ffec4647f1b2147a4b40daa755dd38d76ae8caba20ef35ab2fa67ff2ff6fec536c08453e8a4a0b4f6f08ce499086d9c66a0eb611887534ab883c126e88c448fd2654ae70cb0e6e37d24bb336470a0d0b15144db2413d8e59a0c6da079f92becc233dec62a2644a18a81022804fb3265624b4f446448cef2fff3310b55fa45c930846df5c2a8ba2fc7bd7866a7e686abb093ef0c41d32422623ed20412354df661bbf0b593c5aa25fc2c7a68332e81d6d63f46b645dc1cea7832f279dfff20e4c9699c6e7754837f5bd465625dbf0331d1fc7bf9a745618209734c94b8dc45b0966a6ca027723ac9f124310431426c502572ed7fa37559a5b8bab7c51c309634f91a6547f2ca25fb5f6b8fc7cebe1ee4dc41105fb38492202ae2aaff50c170b0f571bb22f169ed500ab9a80dd5be2682706b0687cf3a1d770f4da82bbf0217fd19fafd8c595e1544da7ef631942ab9f9926f26d01589266e334ba54abd30ea80d2e485bac7fdd1bfe5d15fe0e993503be466fbc5d7efb348f8d1f55440a81c24fbc76aee0f342f396bd4c9e496793faa22dd3289387019e2311cafc5a987f6cc7e1c742f3026cdf6670950ef85777945270a32d8603ef55adc0273819d3998c5108a250e8849c7f904b2d38dee4824215c893c6abba5810efc29a41f485d29a73880e1c1c817882e99836cacdbc72ba2a7a7c2952c6b71ece4047b1c41ac904db2f2e142bc0ce8fd99939904bfbbd33acdcb62b8842cfa8fa9d3812fcab158053f56af8781e4809741b14d00835264db80d11aa91c063aac911459229287a009e213da7652c4205555b0d3225a7512c028206720720f94ef6cae936769193b2762ec8f4251e28bc8d8eebcd0084d3324e656f5cf778439c5e214086b1479a831ff2ca2c4eff7dbd63b65f5ee3011a43e750a92e02c579ae5acd93b463a863fdf3f96e841998a65575518a0bc874e989ef64ab938cfef41ac7cb18b5f2cfc1ec45f65dc4789c75276620c74b2fd464cd0b852056e9e1b5389df137d94ae6311d350348af3088e9f41092d8b0dcc7002426bd2d0d90f728c2eb6877d818f61ae5c701ccfbcd560f81d2780c552a877282ac4df57e4ab9f3c3bb276b713d6250c81170980672c2fd19bf7145bcea186ae7fd53a4d4da8222067f899c31d5ae4d154134790f74979fa5e3df5056f175bbc95ecd3c1bdc475af345631c6dca234c6e91ae388a5811e2967a8bbb1dca8a23fe39f71a394de5667147aa9781bc1516b2db6722a1401d4d089cc74714310378aa9ba63ae5bd8fb42203a84061eb48c01b6754a214616bf129fe6270080d9730450d529ffec88ed835f9dc2b9373744bb4d07d3be186ee1a690eb9f726376dbe218f9f7216f4752a893d83420034426a1cb3cf87a6bc2306d973fc8e62c766b39543c9848a0309888a936d74a9a36a6f6257750de043b4e0f86f4b2b098781c5a4316d2e169342af04823e7197466dd805d14420d302bb5e6b79721ecc3b1ff11507e9b5f2cd314232ca6e56681b3400a1ebf2d7d4387acb8e82e99916a3b62738e47df3ecf341bd1a335269f711e29bc5f666e913a74008c063d9e673637220992079a556c56b3e071de175bd412cac58599518460d3705ddb83125d9e9faf61e37c66c6de691c4d66cc3548027d640d6305c2c44d095ca33aa2b215a960636167a816219cea5af9601ce5a2a44b2d114a59bc4a0ba9b82251a68bb6539ed5a0af8c34e0e150b71c13aefea69d24ab80607056e44f9828509820a7035d92a6f91311d69ee4e5df1ff4e4329427e989310b7caf7e38dc9522150b4eb58e22b1a59983d4b28d5709fcfcddbd1000e26694e087fc0f7d6a7b0f0260d909a2be06e668461600d1950c8fd2d98c074e3aeb24a5c14f534f3eb272c7589e61835b3868fa61e8e95004a31c81f68e4442eba7d10e7f9977d8aa29fce2cc7dd02c10427b01312b0d6864b348229c6d8cf8149f58f753b902ca60af79023be824ed4196f67242be1f1decce07f68a1741e2ec7c6dc806ddf7a02e4efc5f7e8fe4284b2116e9b3bf65f124ef08f85b9ae5eda8cca2642194341fe460f77fa0e5e31ac083638539bd86585b55f59686ed1b41284480e8e09ef567e52f1badd9cce2a34c5554474d06ec0dcc09bb6fab3b077b3b346d71c10118346ff05d750497abb9d7c9e15d55e207d41ae8300b17f195906bcbbbb2a17ba241e319257ad0ea706f2031d53d048efa12f0acd205081d622f4bdcff10f9e0f6250d9fc58fe55b6cb5a2e10346f9823c599c41ba6ad96ce4f8a4ff1893327fe51e8de379cfde0b40beea171e0fe0feacdcc15b7565beae3f7f070d8f578f909125ce87b2edc20605812d5299bb8fdd491c3c1b41cf3b04982b2af9106d022cc169dce24e1e1d6114b0fa34933a14ac333a421630d457f7f113234481710974b305958383ff7d39665616c396be4c65706bbd2006d59f42d1bc128491bc031c95db457441104b849d102ec4582f44532a18083d646e349d13ae02896ab4c0354b08e7d00ac404f95c5070e7725f05db15bccb0f8f72143cfb3e6830be462252380917737b2532c535e5dfc586dfc86b008760f3254766e990945acc601e9c2e0a1a4dfa63063123763574ac172fb176d4d2a2a3dd5f0e8a0a5633291a87473c40dd44b354fe3a47c6142467bde60a94bd8cd3817f90808c03975a3cd369d47153aaa4e35e43f1924b91e07541e8720ec05db6c24ba03b143045d50c7c33d831d77470b681676bdb57c1b66e1ae2372569221c92101ba75afecf7a4f23d5fbc44efd27d807c03bd29df1265a58c1e152e34c010c32a7dcd57462a7c8712f064566b8bf097e04a64007ed31042da550fab037536ea4f838b930155270dd5c89e00d7bd473f691d652dd1240410fbc3adc7cb62e165dcbe9eeda3eb52e97481ef17fd0d33cdd5429c75196283e4064063d06982fe1c4153a678c1418fdceb0e6a82e54d8e45d7899bb67aee4df5fb37e4e5e47b92598bc0d6c09acc600c311724c2e236f3267a35fa19cb0cb2a6ed874e60a369249182cbdd56d573fba66b9ba4334d227b14b05450e2eec71dbdd97c24867029254c1afebfd6eb322131e05a846b4fa106ca108cd04688896c988c0e3afc1b843db5d1fcda6760113699982e9e45dd6e76b2868429ae7f99a0f442f025a58bf39f09b61c422a137d43be88565af69caf226ee8cea7a63a907f75441d6b67c8dfd5cd73ad3aa058d7115080b3bdc85b49a419cdb4327377b166814d1e5f264291296a7d8210a28f0e064bfb732a96a26e878c9902daea421fa5d09f24c7a2d80f56d56b1b8dc0d3ea89361e925a84700c96f0e79628eb9499df3551175aba64a3117871619e9b39a99f3a1adf71f2a1f00a2153c7631cda723437400c88b54651a82d7a3aa8e56c4e3312fd03485d29cad503004fd6df2032bef32bd602a534151d8ff5a5e0c106df87e8bb923b555035ce21742a39fb28e0b1872928c18386148e1b53d32ea2b5ea1f9e1fd19552a8747e268dcb4d36f339c5f747e4fd6f4ded695963fe105d2cd9902fc19793e4a064b6cc6cb83c7932ae0345ff3b3a34660f4be8e8e444821b4656a19b5bdf0ba67b7491a879e3657f82dd507e61503ac89036ba824b365f066340a38050b3afb1316ec4ed0d9850d27281ff9a4456d3c304568faa0c987e6cedc6e267664a93cd68bb4ff6d95f46a241a7adeb7ab7a13450b19bd93225b1774703e630f266428f64ffe7de183656521b7597779c2b9a4e710c15d6609db25ddb764b5e2b54dca2c251eb0b2f404ccd64ff12bfe6b5aaf77e300eb79c6416262d2b1b962eb9190f78be1739fce5000ffc76248f626fdab0104c983e6c4696f55f39805455ae9a64ad401ec789a85feb802bc274a78874efea0a86191d4cba5f484a32a12b3617f8551dde4b157d44bd038a8a1bc3068d1be10182d6ea2fc2f734ab588dfc7a2ce615d1e99b3b2cd68f7d7cee80f1e1a917f454958024218db746940f5e4fd966cea45df4711665cd6a98e91b40d1c1a2430990e16e050ad26c3600ec20bd51c9b0ee89e7e59b08effbe884d71fc302794ef4ec9cd2c08e9778e4f8d9b599186df8f9694238c36df474f763c7e7c27b8201f2e2abfe33332114dab79e19529766bc590732e52bb25621a3ef92403d9ba9958516f1dd97829a68ecd9fc27b23baaf5d79f95184b056c5aaf8d1698cf1c06b43000b5f38bd6abca1dcc36025ed28879630aac8a70f504aeeac48e14a66f5311709e722757a47aca8d595985b6abb7f563007586129d7c0fac12019b17b72dc5479a82e7f5dacc8ee53b021054792c63adb5638b4e8d56062d13490d1402cda282493a086a5bd499ba1c7a0791dee7eaaa76079b7c436f306e1c49809ec6d2dbe60b479fe9438e6dcaa0ec46b6a337c81df3a9739d733134f0c063d8291d8de67cfba7d9137255e25296a9ac16fd31f3868028338d2ea8ca36deb91217bf01bdb4691e24b89f1d647473abe37618d3fbb81da064363f8e9bf5bbaba28f6b76e44d7c62c8df39e92b083d137927d48e2ac5c1a82987642d03b6e65b840730156077a4f588078d1919d830b8854932f2855100838f922e49019d62b756d6ac5bc5242462cf246c85f218b7a8fc08b8494e556085364bd6c4061142eb62c16992dfc38a5fa5194aa804c86a697017b3cce7bce3a26e274be823d15723b46a5c4e08ce162aa8678ce16443a2c512a55890450c740403741dea10f62d138b01897815d63fb2872e05260b5fe050a90a74a75c2aa69b60a618551398c2f69e570711731276d2c6f86683b7cfd3388bf0844dcc230e722b873c30c0221f8e2050ac0014e388dd3904a217491219e4e28917531815f033365e2585c2f8dc9b059df5c4c272563e39cd9922869dacd86841d363f58a6941c8a24412dcf45ebf61ed020a1b42efd4356cc2a49d3142f4be5af0013acf23daf0bfee7f770739e536650253080143e2c6cbb403e88b2dbdefe0f6fd166381692e233f907aaa2e90ad3141a05839d8533f9a36f492f4002b7ec33e843f46e85adc6a01d6ea696d56827f2ce9be852a0307b37722292d8fcfc89731356ce687d557d68c7d97f1db02b545ec2fcd9674131d328be8b76e01f23cc9ceffd0a6a9d0f7800d4ac1ae10e4012a23677cfd525d5cccf5682e1b33f3a94e4e40141797f3f7c9be92d5566bb3281a942cd19baf89c89786f4dd79da6ef67029c570bcfbbae98005ca839592e0689d6949de6c902db5234f3bf13993bb58b3608ab06952bd58d4add12f0e622384f894901488b1ec0cc40753e24793cf49714ea8db1aaeb9fc46eea91a5c4834e9c35e7efd8db8058803986a159800446ffcbd29d60962d87a9311471f1ac592b5c1aafe27fedea483367094f699041a19abc4795732083beb8727de1832460efed4b411f8ba0e4f2df501013d009d80e879263ba52fc09173aa57a25aed47ffe702d799ce0e1dee3edff83077fa89093a9972d49c3feeb7ea221e7f00b13fa749e3ef1de45ad4f507160c7e568629a32fa502fecfcc6aeff3272765171b1405ce468c04bfd3f7d7c4ce139a6a63abb078b0e2284486741bdf438a6b308291bb3a03e203c149608257aecca0f15d3d6a3aa095964f6d6182c6ffeb2b4ac77b728764e0e11000c1390d219114b2194c4eec9152fafa845c4f76b8e0bdf120651a9daaba4710ac296d64806bca001df27ff0afe7a9eb449ea84e7ea6bf7648e360cebaea3190c72bae445abd14fdb45d86d10fd7dc9c696a55182132510760b432804d171afc981544739474aaef45d2d7ca4e92729832f7f2f26d724a7368e5fdb62b249469276eff4c50754e1143abcc7260672d8ef8496118ed066a3dc746960b535476c2291f02eacb3bfe954a646b92dfed3d642527cee2c9698c187d3d482e7944b183cb481668d43ad1b740a142f99c751200f90a8e3c385422065278ce670db9af559cd6cfec1ed8bc81b9f9c01183388e7f45e94a566f573433884fc324a805992c1d131f9ea10291df5e74a1da3fa351c91247d29f49332fd8bd6611a02f2d117cee2624fd3e57a155290ab75a3f63abcd2b49272c52bb929f049ffd57ae7bb121b20858af84661def9b92a968d8e633736bf8f485520e8d7a1fab80f0a64791e2641764563a3aa443f622a402b5300cf7303f09f67f113f0df51687c4caa78a40cb81811b916ef513b01f305ef677c915dacfad8135ab52a5fa991a211e5ebce2a37f4342c98924fee012ed4ee70acf6706b09018353e5a4cccd0854bf21d4ae43d5e7ed79f624beae74049e39d4123a6fcbda40a45eafad291a9be8d2fe83009ef5c37e701947c3920fb40a38d4747970c902538648db34225f55831873bb28699893c597a02a71adb82e2bf96c166afefcb00ce9fac2a2a39cc82f220c0f282a7d993cc88c2d28d583c196468aac344ca665bf1590156cfc856f73208137ef42683f86d14121778e5b1ffff18a8b82384c6aa2c6fb4dca9977dec5e8e5f35e2d17f4321d6d22a8ede621644be41b2e5d23220f1f0702b5164e6b49662e63298c71211b569a151dc3a50cf309c1583599bc2512d1cd711743644fdad7ac3633584ba60495440deaf22fd3a41c29a3dea4783351dc23d881d4716c388a5f31ae1a4d32d4aabde8ea82528928aabc84f999bf2c6b912befcd872ed448d3032f53c4665fc0ad5628bbfbe11a92d9dcc867d75cdf488400cc4d2d9f19eccb4991e88e38d9a2fc9008914cc7d4d915fdc8c02712c50d58715701c5ee6a4d3875512819829364231dc311f54bc3c15bfe203d8d1d1d084fcc61675c0192f47f23e1bc0414b2027f7ab51cb94d9f00844b5916c592e2ed835c180d88cfeb3d5b3a0551f7dfa27b84c60f351905144068182d99c7b92d3b5c3172f88da4fc8dbb77b9bcd2c952feb0cc5e2bd9ce1860913f29c184c288a51365a6ce1f31fa3641a5da3784967d13e5ee9be9d3b147e7c96d9bf0672878617b3200406e639fbf15d795cd2d42f344206b8ac23a32c8a575c84a349d3abc82d358bc054aeacaa9b99111bb17350142d38a2a45bc82959e6f60532391496ba1491a3fd9e8809c489ad7be4bff628a80ec7402afd001fcd1371e97c8841f3d7075db6047f4d1bf146d85a6bcbe64b38a1c9b501ac10ce73c50c4345051ec39c95c2745443961e644b0d3a6b6fc404bbdf8d71781541a1357873ed92a8436a9174381a67b78798c29d7e4c16db1a0887e6abf293a6099ff85f870d9a859e7b3d2db057369dbb020d36f5728ea4eb93dc42529179826948897041ada3654d4b2ec6666c44b033a46b7044aee63ead8a4672bde509b3004579aa931e71dbf70e34301bccda232e71047d357c4d24c76d6da3630878a150247b2a5d611444142824b44db36d42ba6a545146aa2c0995417fc4324bf6ddb25c2107314ad667f91133fe87fec3f72446235e5d15dd4ca620d7f9b058071ffedec1f74907a4eb42f33e3e9b533e8986c1ed98f57b9fdada95b6c7f8faed7893b7eb531a89835cb44c37071bc0abec6c8b2b24c0661e77c3ba16d4ad175d93b0fb68306bcc6d0acdebadb07cb0ddda6be0f775b56d6fc96143d15c5306444e6343d709dc19cc86df1a0fcaf694f31e83166c73cc9e2dc13037fd04f476522a01b218c4b09bf88ef74c3806788780817f108d4a9c3f747ef8bb2935fd1bbc4f5ea057f69594a836d66aee47c8b20bfedaba1cd7e1f9b633d4d891f14b80bcd09ea79a9abc28d2fb9be6508e80f7999633ef4912334a9c397be39c65b5d7decfc1076e60f04549bf6ab0f5cacfa20baae405d99f546d9f36a562ea9810f002b3ca4cc062172be54c2fec619d99304eb531e2440d430f2ca12a852150636cae92e25398e303e7b5e2f32407a84b62fd4e845dffbc1283b8a8a46cb5825b56bb9f22f55a4c56224a666a8b3954a1b6e2833557b0c5b2e53062dcc3c8b0ecc5de6b573edd50c9c4c5119de5f5cb49d863b4edb68ff7984277b81a7c61d4c2f1c09ef1f7d0093cfc06bff813ce08649518f636cc7bd498580d20c35338438de633211cb07908c72d7841ffdb100f0a76478d05e40f5bbc66313b7ed318ca61e74dd3668980728b1c1707cee96900dcdd0de172732d17405ed14be354dc4040e47ce5e7646627a81ec0ea7174cb874ddec4ba3b35213e4a73e4c2c7ac314f820e3719c9fce13ad22ec4549dfc4692de8e91cf636a0fc5b159e1851220ba128aab8fea6f05e3d21cc2b14a89b3892908bae10fb19d7572f13d76dfda008e94ad477610d0ebabd311a11e32b0a02481c806dc6d927d9261049d33135a18008221381ae9f855b8d0e21454ccbdaafbef38cb701fa1c453ff70b78bc609a6eb4f9df56e7612103756ded22658f8dd227c356d051f43e28fdfb65529b77d9091e2588c9ff1fb2cfeb4b3a728fd4b81b2f4730385d55369919f7e8672415c63e202ab621587c9d367c4ecd80732057acec382c82be61aad070b29764bb809f1884c26bf07a0f1d01e5d2859488da2bd4e32f09fe486cd0807327a5ee8cf4f63ab52e96085520271e90fda10629c374420cb202a0fa6594f79111ccbd49e40f63ccb1980cdeb5b52d77942048b04851c58995b52d1a91c0b28c8850e586a3f3f57183828c3874d72b2dcca04e28439f71ec46dca4a46a877cfd2cc9096eb5894a5df3ca8cd1df4ea2d48297c49d475e0b78b10a345a9031b7083420e26c831a668e50032d3595c29e07485cc8d887debd89c00147245a46104f95e59e7d41f3c21262a5a0b8dd13c98481542cd5783c6e3aad119971ac4ffe1cc979b147390ebabd7136ab61aef1c334b63ecd07a49640d00093cb3fae50d0bcb38c14beaac1ea20de2d9703e2591992f3d33eec842063bb6f3492b0c7b63bab324382ffc4ac51369d5bce62e645c7f38ab6d2d5ba76663509f3c3b875e51ac3fa6ab35281b886d2876524bdc3fce41a3f3947f9584c3e7802b1356656b90df5259b5d3d4ce4df679d667ea20f9a30d17081a8f0ba8fdcc1830b216100b8c9775204d8e90a70a18e4b04a09ffabecd11024f43b9f18063913c2f8e336726445fc95d9451c6244bd69a47e63e7e3593c2762291d6a7d72517b44004b6555c916a673320f98b5c4d07038bb7e63c8b49141b4f36272c018d70ff392b4a6067294b5e096191676635a84d892411a02cd7efe034962b4b26ba2bf73b04dd2c269cece54bde03ae76be4fa5f06db48f1fe266dd67ba3231eef33dcd96ea33e7a9564c1c44a7589d45861b48f07e32c8fdfce94980dea9997f7505a9a23fee5d5ea7f1b04e5e2884e9c9b54733836ee8d61a60858b4f07fe58c062ef6dbd18ffd455d5d47f15e3e55df56448ec0e649e5961bffa982dac09418cc684c950982314b74026f8166dc657e6129783b85d01383e7aa0d306a0cebecb9ce0014a229f67eeaf3c4008640132bd5c7d1517e9dc5f06302d721cb4b3ed9f5b5bc41608b68e7ff63c621b3d7e966db00f730d9a5b5d4dd3849579911070cfd6d0c0f6e4bd7b1433889833b8fab73e58d923bad84d8d77a0ea82dc4422bcae4b9dce63182a1df44841759f7fb20053f944bab0be2e30945a3cdd2d70fcc454a54aa01f2e22be173ac6e9d316d9022d2c8cf20b852555cfffb6d3c8b7aca15e900265365fe2b64e7e1395ae748e82a6374fbcdd3ced364ee671871b4e17d79630cf13af5a492c8d7f63a1e74b7180137c1490ac29a3220fcdb0df482a0e676f36929a5195c75d50d867c0c75ad9dff20b1a280d02e2eb4c4c960a0118e76a5b6faa3130e734772c9bfe2106e0113628077cfd039ea7a3b410ba4b168538b47fae4ee6c076976352d002af909aec1a5bd8fdd75e190ed8a77da253ea278899094e9cef929a91074e4a3c6b29bed4b9495e091a156dc134836b5e60d21bb1d0a04be62f9d88d003b16275b940a54fbe6023ed7468c35d6460696da2edbba0f958786ca530d115872978afa9340e89056d3bb2cc3216d1ee71d247a68477339f180cd800f0a01b0bf2081bb4315606124becbd62199c9d96c1a68970e6c60a83816c01c7eece86bd91f7fd27e7954a2358bd8de50108d98c7c8769f035a3fcd950c203a6001770c2439cd1951ee2c00627925eaf7afcbd20c624aa1e815e9a44015f6faba8892937d8319ee8240c99406f0bc2d5a5fcbdeec1083a5b1756d449b4c102ea0530a52c89423a84dd54849665d42d057e5c6f30fbf370d93f1b0e5b7b8c074db20b8b6a012005c6d1367cc0c8572bcb87457188e382df961c9fe6c54ff6c546c499823ad7d752face988d8da3666ca164d493e19eea41a43f8a7187d3f6ebcbdf3ed730a6f5ddab850dca83ad6aa72b0b5aa49874e6d93383dc95b1eb90e98294efffd8145167f967405f20b1c996f649e4152d25a7301f062e96c1c30df98b123c6ea92151eeec593bdd76b76818e74ec8193f94022be3c6769ae3e299c4a4f74712fa60f68cbd420d67719dc2d23780cc3cac16cfb6e4453967f5d8403894ef5a77a18cefc48dc8af01e1140e3bafe552616317b1a68fe8e287d4b97969f628558707abc1b54f5171ed0d12f8e6145326bdf6a4f34d456ef528f0896bf10751f7b66a886b2cb4cbbb4430a488fff1c5b9da35501f71ed63b3e931aa04374295c36ff5ea2a46339985b8265c740da500193fe09aae1a5087fa02716df0a9aec640042315c46cd1a25d26808987bcc45302d2771e718c7a164fa818f5481607501a92f5232aed8f98e527ffe926ed3cf413bb473f9963e9273907e57a4e68487bdab63d297cf2803c2dc05b49a5b221b49e8737a09b330d697ec2097f52e4fa298ac48d7ccd1e039492668fa205c8c6827990ba4f3877a3aa353cb831047fc249b7b215eebd9f48ab1c6011aec800175a3d2d29195e0e9da2a861099a828c3a9e36175f2a8a9eb3529d03d910d5549134c13d612f2a9da5eb6906bacc2661511e469dfdbcf960c41eb910f151673516209f99a12bd08d673dd48cf41174c34b5dd118e1b9933f6b346c40fcb29a6e4c70620cbaf7463d1ff7d77828471b3d7bc5b469c1408049405bd3a6f7be566dc705712253676c16d6eb4b80a20b42a53dbb140035e372c25fce06738e63ce8255466b97235273e8f0218b1fb71cdee540bd9c0973ac8bf99ae9dc6d521e2c39b9ec58327d79b62e4b455e8e3171b96fdb4d534336d0692a22034332819b588c56a79bf2e74e9ac76f3401b259425846ce811a9d4faba9e14e8134391c4d7f36bc18820da4a671eb912fd170fd2431f239bc0041fa144bc643080f54a93bdeebebc6de8c5d6654602556602149986688f8f141de4e04749bc578aec2a0e8d4e195ce7b593442c4a3486c1a104b745ef57b12411f5d74734cdfc333c045a4d0821b4d889f0b208c7ea3f655bd078ad6aaaba82dd564cf4df23c7d42d7672e954125b08a6be5674bc1a5abf17f5097db749250dfcdf8ccd42f499c13a46bf1d9fce487f5c163f3c63df0dc02dd8ed4e8782ea851fda7a2e2a82aba6a59d1e9b8a2fea7baa071845e1b2bd36b43edb44302dbcd56a31f0036c16b254cb49e6c45d9f46f1dd5e0ea5d50c61cff313ee0479e29604bf02b29aa7b82704a1d9e09b3814a24327418210777e02be66ca6999e20c93d349f37013afacef56d137177193109a6c368bf08f04c724308fd8c343a2a72c4ab31e0fd4a1504ff27c63fddfd8cc41ab5d0abd46e746f379841c61f2322a2831f6ac5db27301a16f1df8d9577e2743b3eebce7b95ced732684dd0ccffda568b2694fee12a61e6ca16a78da6f4f11669147002ef039542f74ff1b80a0b85172e0a909f66d5d2b81039ab6cc26831155e47c51b39359ad1dd9ee43914e5fc13557a4193e2eec72516ff33ecf2a46a14294ff0db1dbe6c19df8843ad4ce6c364c0d6f40ad33af26e66c4ebbb27fde56c6687452f134a77d63e8deb85e63cd4883dcbda9963b1afd8685c978c8c85b3cd1380ae8483494532699602ee433cfa969df8b0507006a4719cf8cbaa71c6f06c7fa99f6386b1360867888b9e48010cc325e415c605857d711490a1f396b154d3d3faef0960ca7bbbbdc0ac7dd08b2d2e10b9baae57327c3c7dc519ac1089c0298623411c1f8a685a514165a0c9cd810e90301acd7b117b14eb5c39d95f038458b3d74023c3acc36088ae447d2db494cfc221d80c48e1901909b33c00defb4e2055dc7bac2c684d972724bf02c47698b925952c0d34b5d270befb3e7eb67d88ce4a03696169381383c03db5359db954a5dc944869edb2072a409751fae1dfb16d71e3ffe912405204da824bb61904d80bc0cf5e9515b87f680bac37006b95c01ff2ffafc485a80dba7f8124138779c07b32d1fac0886103b6bde8622e51ec68b5c5c069b0fd0671e413cd1e5828bb44628504642e24404519b223e451a933087947d008a9e8a1b119f0509668d07b12c9e36a9b00e75212788e9d3382bca58739d1a04790c7fae81f0d7549ddf0832fd80c3188bfa9877c44e0f7c1a76d69c7e94ea5b610f30a4a5c7b71a3769be22d3b237e180d13b7fa00cb580ab56d4be20c022b3f287bc6d1dc5d1b5722d703c3a4a5b5e3a863777144fbd6ec50030d6634f48e652291f44e996023c54c1bdd9dc4ba566bbf748cf0d734d257056f58209e5cc149e1c06264097e8a5b9aa7af50de3e0739427f21790041ff8c8a1013ed1ac245a8dd52866b019040a714f72ee22d2a25ae0e6af3b41cc99b178820f7a5c9252367dbfd479e3ee079835ed591b0b912b09d16f9d08a1ea41e1722f1164016b039b71edd226727ae482a818e4c0489b073f606384f86b711e3af9b225571f0f78127acd5760afb1ab5538f0a05f71af5f866798e2239c0029240015edbcd3803fd5423056dd5f69f768a765a76dc4994f6eda0c0f60428f6a5d86324cdc34c04de2a51a248282036c22f0e01861a458547a48ee8a0df29199d8a9264927097b1048c35c8ea021689cdf5c798c6a8fdf39392a2d5f431cb820c88a50dfada891682c3fdf1b16e63e410308dd10c0901ec783c1374c414e3c38d01fb188d512b8796c2049ceb1e4c0ecaaf0b5c56f919a31466fde27d8b072242ed1923619dfcdb0f20c85ae48112f2668cda979fcaa254333563c4f934fe0193975eeeda6a5460c608ca432f7cb3e662a4824dc605e1c83246ee9b22b71f28a7bca8324668f66b031bca1895b6ebe4866ec37be31ca6862c81f5b7b9ed0130fabf295df25f2cdf58f33ba655af78867430cbded8d7ab53fa19317efdd94eda3befa291318ab3fb32ae6ebd83352a18aba69ac9d8e0cb401d0802d403e6d56e68476fd431849b6331fa2f1ca070dd921ad9163d47a978b7663a5399dc62fecc111117c109e690e042598541862e663750ce10e8c90c291d517cf40c28a2cf26ac1a92b6469140fcd553c21e068e577243942ba5057b862f2410c66872eb3cd2f7f8c303ea02d3299e478152a27384f404fd143046d0280015fc485ca94c404af355960c846cda876d34e188f828f4c5086a16e9f9eee8d8d9130ad24522e7032d0fe9421810edb8708da7719209b7350d1d513b2f4636f1a8de1e190f0ca9be2a295b3ebd4bf0a225f4b5d62171908b90a26302229e8b91e5f80e059bdace75779077113ac97e8bd10ae6d642b216a42dea16a33622a1d07e9b6b98bc3d187bd76264f14f2bb898f7ebdc709e64b68e503d25084af56050b5abafd315455c493e6d0c541037cd5cd8da1ee79990889c443ba88e9e62649141f4cf5263fdebaeafc63b4173cf21a232e48f2a0762b52d3b4fc41b9177304e0a68f99897e56e9644fb49dfb42b4bde43e9032007e73486b335e6bd8488671a9db429b5f4517011609fadcf6e3bfe5f804539963f070d0559faec9cf427e446fb42d68669f900ed0f71ac4a1b3efb8a89ad3e198394f1399b9b22a62ffaaa471f5b1b187b909b142dc1e0365c46bf39f21c289dcc8d11f7e53d020a2d941c2b94277b23398e6d3b8a0de3d2426f86e947508c508200a0116bfcc50760b40cbc398686eb62b942afd19ae706b398bd6f922bbf1a91fbdc949c84479840c55f176ddbf1c4ab0576408f5069c81a3cfc57104a4e7d9a85785cf6610d9b862df51ff9eb5ad9d30a17ac5dae47a045d97bd2c4701898d51aafef2635d023d1519d22f0ec48f98596baadedd90debb4946fa25fd0340185135d51af895070acc460a16bd6ea35b50198c404396afd92553fb43b6278f411ff03f9b67e389f0e65ea6aec0d46343484bfc965988437232e6e6538aa41e9c505972c5a48acf2eebdf0863c196a622c6d253af8c717b78d3777e3153e7286a1ce2804d2e9c0194341b2916e797bcf968ef212a7da550a577a792af5bc8a678c3f0de8c21bd82f642bfcb5a4461bc1fd59b048db6f4f87e0b27409429376d0bf8b044a3a05624582a69b411be9e700194e19127524e2c2fc682a2e622fb294d3268d8406a1368041b9c28d92799fa778cb0c78075e42495a7f7133546a3cbc124c1cc6df12bb21416fd0052359ac336925d524225f4db12d95631e4ad7795dd215b8ea3fa5d3a87e7dd88f5a4728532b1fa05b49613484ea1d0afcb5e07ee53deb69803cfb54cd8b6702e5a646a24258cde7f5e877809e9fb0b54c80258906c5042a820f4f37f0b041efb98fdfd167708359accd6b21f0804eb7a2b7415ff5a4ab4279bf18275dcf33fabdb627988e5ee4cf459c88ad0c25186d249d62a820121906dcb9211fa7b22820a6d92b8bd3dd38a81e77ab84463d6f19036b8ce8475009a03940226d3ea3fb3f766011715f12cf159ed747fecffeed9c9b27052e30a3a252537c27891997020bdf1720d339eabd554ec6a2724ed322115a89343687361be487d8b8fe2e36a3effd297ee069a0550702fe0a76d7bf7ea7d7667b6990877fbfa0ac5dc70335b4ca6ca13618da4d5e97174e56dca05142caf6bc23d4c137b2b090d30f0cfe0cfacdcbdb67788c8f45635252ced3782d36f52be9b08ed43c8d6fefccd38c9739a1f498b6cc9c82ac58b9da33e3b302f44ae41cab513c430feebca00555168a93ee451d4d1362e8e5091720d8156b96f3cc143f562dd18acbf260fb60e317379794704729456277a2e26c56520ec3be70f0020c3f380b4129998dd75f704cdb44a8e341462a26387090297da2d04b815d9e5bc5d2b9547dacf74f7a246123f478cbe4a683ea23822097faebcad59b29b9ca0274fbca9e394cd3dcee8169cff5b6c9a357d65e248c09ede8f4a7ad993650673d3f0c9b5e3284d62859ecf2bec2797d6e09e5a953ba67133768a06fc8c2714e275754a8ab1a54a077e0596b97d69dec3207f2c3677ba05424ba33caa60ba4768bb1a5b51f34defa3335d55c445db691a84bf4121da615a1434253849c5b6206302c83ded597d037c0270d1f257358c476731ea81bfecf1df4501b52ecc4e2fdbbbb06af303036967a84deda537799dabc0763416d8c7d9c0c6cbc8c9e640edc949f60be9b8013d14c6fb71cbfba1e2bf93fb6c20c647a61e21346c0e1af8e2bb35db7765fb6387c11838585a00e9c559aea2405205781d490e7836283b3c202d6746a4851dffa3216e41c958b506c40ec0a62b856c6fa674ab058b04894267e917f86c3f5110a67fee1dad878ba3b8ad1d53f516f0e95d2a67f8191de29549a42395fccb63bb9fb09fa986c334fec80cc30757d7ac657e416bb388413619a4028e0b7f4f3ed1f16102788d56896be2794f4d61b9c1ca3285329643806a06561c26d03a8ecadcd6d55da867f61bb40a3ff12be2c60c80681a7b2768905ba276f852f98471b1d4b2401810c3c122305445832a60a173815d2040f24ecdea9e6fed19f13ab018d8efd61ccfe04d8512589a6f6c3f1b25a12607418513f42af84ccc990945e4dca5509590c04e946c414449487cda05d9580a3f724025cf67b8954d598e14edce76f82c5cff92630d51cd0006942986985772102ce492152f933e2a229f03639054b8b2a2bb8efa481efa5e8f4053b48766db1dd92ecbc9ba325a981237be0b50145cbfc230457a59afffc3b22cfd54afc7ac1ace333a08ecfe335d603972892ec8b11f2355ddfbd6111579fcf2bec1e1b5538ebe2203f7a346b40ad68b39f9b65207e17a1394abe755af5b2aae1d767c90bf168e06707f4d1945b35abeb220e83781bd8e0377b25caeaf704aca9a81745f5ec6b1136f21005dfb4553ed866874b5a98dcb2972279c7ec8a178ad37b59c50440313af326a8408a0b789158cca8f804a6a769aec69653cb175c38d821eec951287cb385bf4439566e48faa1303c7ddfbab74d22ae7ca20968c33a57b9f13a01b67cf465275c1e3ae78e783a3d94b5237c9bdc5669d313dc08c245544086469836167c9d1dff2b20c7dec125324f46dba733f0ce28490a1a88cf8e2356910be828c331f338792a1261e675dcd22d2e6486d02bcfe548fb9b7e86f01993884c72cf25783f31b68a943ef7c02f864f121a35b77c2ea6f327a8fe627a122a67f0bdb11ad5fada5e0d2f2f30e60a78dc4145bea06c588f114064f2923fc14a5bed0e0510a897f2ba811fc37c59a0d8bd160c812fb46f3909079f2701d424c17388a18332898685c5226c9d2dc62206ad6193655a046baf2041a7b4d17fd5f4438cc11d7d0c28762175a3eb409e0cba9c80055837e711bf43e3df57303096135995e248bf63adf86f3fbd9c67ef3f2cdf0a79662a0e91b13a7b3e17c1707a943d173e75c1f47b01880fb65536175b854fdf52a1ec777a28f0f1baed9b4a95c1a2e23fbfed3c0aece159a4a1232b4c45943455766c650cedd58c2ac2e160b15f0743e63b8d2e97e28eee4d3a5d65ac49bc320dac4af4ba1474d29c453799474790e770fd7ace07cab4dd5f57d2b4955eda05bf746d2b1eedd2e515a5aba4a8fe48fce80be0558ea4a8ffdd50351f080a302108067578ac2fbb18e6997ab0c7adf16d1afa062d3a8a60b4fa9fba1326ca022305f376050640bb633a721ccdbc31ef22e7dc391848e5876b055025789dea97879ab8d78bd0a0f28fd246d8c3bf850b76d4f15af3337d4adc299cb58f4ce572dbd1986ae42040e91c5107d19e24a8a164e2be2f41c2305157a847ca6b7d5b69476512e0a2698a47a8114c8d4e8232e9da778f8b1c1c562dc9c940d7449c44459af18a356301076b2eb667ac9cfa8c667a7819c1311aa1c98062347dd17064856c1b101e80c974d3616f3c9345700c079e786f80209c22147231caf11d3af5b60dca18425e56488b738e84cb176472db5edc36476349968c3f1a50a6a6d35bc6788045e4318833268771cb34176c2bf6f7e433321846f8c8c95a727b5ffbb724d80bdfff0398cb161d1360036bf000f56533342afb5ac0bb06f50ee6596c76c1c67e2fc70c1fa83e150d5588420bfe3db68919679487fdb6607940f7564471ca58573dd6cfe83602b8353ca45d3d388047bf30fe6b0137b3881052bc253e33f86d54e968f11c654626c78dc5a26295e189d251580b3a57d06ccf9ddcfacb4473b47848357da7948084812e0b0030307166f50645d15a66f17e2d57c295bebf238ee1b6fc6cbee0cc1640aed2a3c499e5b78e227bc608f12d599c5788f993ad0659c85914204963ab723264c59cf749c67a261653fcc288820cb942cf00db78ed1648b31745aaa819d99288884fecf6bb91647ceee96556a55ffe45b9b0c6f1acb77ca1e224758b58dbe3ecdc7e2e8344ac6faef2f1f1ee2d59910ba8776f1c607869f301c163084c4a674143e68ed43494bb49bc6b7d028d0199d24cf0868be1e30f45fe198771b46a6bc6a0b2032f1f310313fca245d013df763326e3cae386311425818c33dece9271580460d3ce24a31d8e06458b7319b13e5f3daaf6260bc44a52805928e06fd248b2c51b6de2f3fb6fd2405129b8211bc6339fc1ca76f11a2d5056c25dac82a92a300bae70bc7f1c6fe8f8decdf79badf13fabc02cc84c39f554653d7f04016bbdc581ca1da6ab96d4bcb01656166a5d5ec5ce52722754e99090378dd0bed2e26818dd603c48316b56903ac0d936d47fc6315481da22c232a3d3206146291eff1064ce55763391590dc964fd3030653031d8b090acf113c136b84ef2099017d5ab17a942be4af90590dd137943098ad1fe1d5d5c230fd2646cdad52f184ab7bc3abc9b7fcd993ce88b1e1585797c9777406a60eaf17e46e6bbee8b64a02fcb8908843e1fcd3032f2316ff45ec3518e16d6830a7ae40809d72adc7f773338745b07a8cd1c8f1ca32ad99b0ec1579d7198baec98b017b13ee2d2e7f8f852369412d1f5a9e6928805f50102005a51113382ff5e235fdeb5b125258db7a53cccf33f99ffd2963cc4e8f05092f9f4e61c070e5ab1b5e74b552a59d9e01c9a40d0893e43112060871c7ef0124960248ecc128d862f797833c4d819bec038e1f25b180db7fb1e4e284afce52bf5f825b7c73be588850a6f7b3d3c7968390b7c5027d3077341256ee0f574435c524c7a32a9132c967b4227b3b3aa03ddd988f6e08067706dfeb78f36451557f55197bc0270ccdc0fc3dd6fae20f7adf24cff63f3720fa13b9578925e863ca16ab12ed015d23fcdf189004cee041430ff72f63e766fbbf864c2a09367733922f4450ca208577aee7123650fdb584edd79f23789bf1ede15988e9804c1aeeb7827c7023fe545e5c91aabc608f978423b74e26d1bcde05ed8371acd14240a399f10a9d836e141eebc3d46d62ff3a1fbf49cda30433a85e4bcf08cd61ccca75b7f09afb8f8259a6b7a8519bc9d312abd3684ee2187b095c087747e0307198ffa84fa8b5a9e3fb7d5ca3dc18f537101c670f7de0360df58a876bb43420835115cb4dbba21b63517a87229819d2e8f411d746abd157ece40b00311b959a84627099136e7a0ea605e1d85b6c853aabe42ec050a06d4ae289800b9a9c52cace5bb70711beac9642197fee1b72682cc01b156cc53e92b424d2f93fd4914b5cdcb068e80d8075749fa656a16d6363337963f770ad6e1a7a21b627d78ae44be02de45e363fecf0eaf710ef94f3981527ce1c333ea528859e79eef6d94c80700102f422c9e16d2e97e8fbe8181fd54cbae0dd2c22e65e945407a851b20c44b19d5b572691fb483818e61eb1540554c0efb4726b3440eeaa591f335e7dea204e19b7c61eb61d1c3947933316730fe9a461012a098325160d58d4928f3016300e4c188bcbb8cccb5284f7372377dfd3689eccb1cb9da427e3b99e6dd49960b67ff98ed99c6c7563255129c1bde687e280eb5424566d0187872136bb287a0f273dcb33a48702741eef067642b4dde85e67a55dc4da69154f40348200bbe3cee5d4332edea54142cb53455cb1957d45639abe612b147b6edc10323af86dd602899388bffc47cc4c4d5253840a7862a23035b2a6ad855b44918c6e015967ef21c865d9271e3506df99c6f0f55227315a499368bd12238aca388145bffe092f95d39bf697e3657de10cf7b684f2da1f1a0d9d6b2eb6f74c42d569310afc732b5fca1b8de1cbffaef3e8b8433302d836f8e6a7e44f060d26c2bba23d4f6a2e624ccd427e1963452992e6355c2e2c9d392dec2de321c0eaa57270e1d11b5cd4837159b782a11fd01fbce12259bc1b5960161ed0cfab76e7fa53cf1de4559c204d4ea44d2d0384e5b7f75f995f250c2413c07db644229dcc39a7c2e5130f03cba9977011c9d3d146e05c34681b4845b2355b767b06f160a009bcc9ec407235b36b79535cdb77223073c41036b20d5414732de64242007d4393d72c8c6bb796d1692cdae17724ed3f6090e57f032d6257a04dc3e26924967b22ee009688ec9fc7591d84f45faa48de0026a545c89a89445542101ff91df2faaaa16e47070c1e51d4725dd1ac85a947b202164e4b071c5754e9cb172a21d62c89e34f2bb428c5b37519e9a1f4ba2615047598216b6240374c932f625136f2903d124dd98706365528833a980b413243a8eae2ee783de604e15d9ec15d5bbc9c40c4784c8d6291fc11ebea154387422418a8dd8c0548fb93339b01e1cb7373fee4c92b35844eef836ec108a68f3d7997aa91cb5fd7305fd6c13da4ed6751d048e7b7a33d8e534edd60c95840e4ec142019ed27b7a48f00419fb94027ce0046e56d9bf2a8efcf1a181c3c3368b473660902d412f967c48f40c905ca0f75f30d66467818e03908005e2b4603b300a18568ef19b47871ed975368431348e431552da140e2bdd6b5678bc08b3239b6314a5e4adeb9562985d95a7ae720a962627433c0236bea09b7fddb5c242cac5b6d5cae1b74e36b8f5308c00f360dc561d842e8e03a15391d1ef929ed86bec74d43584be1805284c8f5f46c58f9f96768ffbe431da232e79a2c8e26a4e6babcd2e9c33122955845b69766e60e383eecfaafb28cb3038e25917dde5f930bf3c7f5ca6d986d9574e62514befbe04670c69d80704dcf310ebd2114a1f3459956fa9ef7fcceda03d29bf6fba7e5b85dfc56b10abff17e22fe50f2b6c6910c9b862fd803d11612de23aa293bc5e2cbb595dd95cda41e8d29538820c493ba3931cca85f45824357e589e3c8718bf55658d267ea8432e9d6eda50d65d483b6aeab5c4105b530f391eade595c745862da9ae7a6dde805c711be747b2ed0d1d0d012b3c8661ccc53d081128efd65eab49e2eb74dea5393928a7a7c180aa8d0a93acc5a2493631b3af95d482fd55fdf885e5a1e6d71986daa184cfc6966494ab323c581f2358d8e5b54d2c6cad1424fd70559d349a14334ef0319eb1d575f48a31b9f118842cc18f5de9f1889c15ccd871900d481bef6610cec92658b57bcb4c909e0d52e84e59f99b41ce38e73d88d289ec06c9befcb5f890d852f8242dfc04bbf067eea278a53e65a66aadc403a5483576fb03d6608b6a6c9a0e498a5c196880d809b9acb1f406d0c41065d9d2840a903030a151c7c808198dc8993860376b1924ae41e25f4a0d03a125c54b554e68649dc0f71a3349c238a08e97b0092990562b8d63d793389922fd37d6fe8e9d00d882802cefc9f4dc7b8c0f3432aedf86dfcb73f4229ffe7fb53aa9ae6cbeabb7e06da5aac358d202d161008caedf3987bd4dc195435304a7ca6f91c21dd7e409abd01aa51c67a6b892a47e9cb325247ce8d63265a3569e9ccc896bf844af13ed22e7cd7d6a407f0e6f907fa71e548ccc2e24167e2bed65c819d52b7136f5693124f0bf33679c626445bc98c5b6d096c927b20dd07100ff6732a745fe694dd3827f7228817fc9c420225008e878b83eab65846ba1d57bcd53c85e044ad2c057d236ad29c6a3d2a555dcd7a4a8c1687fb42fa509f690224c09d5eced70801815c6f6b9b9a91f6e8c7dba5003928cd8aacfdd9e8efebf01d9b8dddf534fa5e5a22db6d862cb16aead16643278adeb6da5bc96d7e9ac96da29b7066a58cb698d9b5d1ec70315619a6d12adb1d244e35a5a5dc1135a0a302ddc3074b42ec668428f34512a0cfe39954f09b6f916e5475a6d817693fe47b565cf8c01f8d258f782053cd1014eefa418602446d15837d4d99f003bd39c44c93838769a38d4d717419186bd48da168c693f3b137545ed4462b13628cdf18937e6c7295359c6f000848f571f5997167b047d4b95fc5752c19314666ce5aff83aa8589ace7b6cbb867a71fb3fa4d3dc71d1bad085817c64cdb9d15f720b1c9777bc733b26781f5457cd7c28218104a694e573e4150c0e75e42508a04149f16f4b27cd44f58d8cfbcc3078f44230002a53d87b111bd9bda63ed2ddbf0e2814b1359e427a0c40415e030f2588262dc0f69fca6d62b4deb229a5ea23452964e67beadcf854fb30204d7e4a25a3799773b4fb3b7156837f0a6eca172c9956ba82e140b70e3369c00f38c0c8a228d50d262921548d3e28e2bc6857248450293ab3fd2ed5f9a60b6263945efcaf176e59180bc5d7446a979b06eb2958338a3bd14980e4f5efba045196c00310ff783e8ae98a6b9940aa7ec043a55f82d6c55da064449fb5559590495ebadf5d317ef1e234fc9aa78f04c5f36472de0c6993038e7acdc4a4cb667ade364329eadd4a3e36bc0d48aa080f3040265ad7ee58e3ea87b96b98cf745addcbd05dab0c55beb82591d2b2b67549a32e16a75d441dc3bf40956156a7fd75cd15d5e17d9cd1cffe864975a180a79c755f6995703fcf56d3018f8bb303edce7c44bb7dc5e95e084377fd43a88ab4fab56c0c2ff883c429e4b896e4b9945ccc3eb92ee99823b9bebef6f084412cf3e283032e418139b86cedeb686a4d07b91ba6a44cd7aae3e17934944f2abc0d93379743dd03fa9e21150fdf0b7dabbeb041985b150013d8711a84c8e6d5eee4c06ad21094503d4a66cb44944217853088069bcda95b41c3d66562028a928d7865b5b57bd43240adea53b47dfdcf7c0ab34fa386380e9eb08f4256a87f4f4fd2e060a957114fb532b8fe9c7d68568d03084f934e8f9ebab9f3233b961be3f0447f50ea1f2df00e8565040d9c6682a9fb96b97d8f4a5af46f1b1de65c706b74751a8c79b9be90aa0a107906794c5a6f7f7686c6522a562efe1b379cd30410e8f4b35f812480894c00b9e7ae3a4c838a935fc5290b90bcab298c0328ca536d85d5358d23bb8d6d2db425b6b6ced4f4ec14095982bb6754df82eb29f28c368b6105c8333d6b7d8ee491e9b633aad5063b587ea4e6e46825759ab5cf8be42fc14308a185f4499754d30be7b6513fb149b9e9edb4cccc92f75c13d4fad7a58c49b67fa08ddbcede0e3dcfe63e5f5d0e643375c5c23e8ab6de5988e558b9fe77f35b42fccc67815e5ecb843751c46debd839839cf5eff0f80dd82b6881ebc5ed724875b54e4e47b743b3c4bb3638e5985be23e816a916d53909f54121124895e2d8470b0ba05c0792ffe1dacda5dbd987e34fe50fe2d523b4a285a7d52836c8424506efea716b55ce543b09b39363d326b5670eef8d3118d1064127040ff058f1c1ece2e0fd66e53c4b8ae15a46e23a814a5ced88bfa97d76866425974944c0af218c111eb206eec6e63c9d70b20a2d8b3610161ccfe696c4caeae5e477c340ff593c7cd6ddce99d5e641e10d8ceaed19b2a7c887ab50f30ffda86f522fb976b5c978fddef42f4b67e634b631898feca4db9f4e1198dd242dd24a7a8e68a03a03d2b57e6569f973b77059cc4c112c51a2bfe215e120e99a1a66b514207cb909340d7b64051a80cf9de9a498a6b4e77e0903e98b8303998f417e2263e80b850800e36c69195e14c096be31b6c6b5611d6ab07c79dbc53df08362df3d93cac0e8893b083e5c7e9af3d7bff2f555bebdd9baba3f495eceae4b8d8aa2933e89adbd184e2d8dab988e170c8641c15c2257da6d936842d2882d19c649eae1687c5ac5a1dc2fede540d1ecc4f66f54ea6404362dc2d2d9f4c753bc566f5a77c978d24ba2b3528a0fca45e85d34c437f516588c305cde19a0b5c03340e408dc3499f0a4b99f454773c580a621ac4ac96c0ecd87fd59d7d55f6a38401dee2f16b16254797841803cd1c5402f8ac163883590fb8bfe3b060242042e073d289c6d9dc4b8a8f107201168dd32755c3d7bda67d65caf6392ab0c17018c88c8c1b42c28d1a618b5f18324fc18ba4709498df9e7d90e4b0d71b9a8e05b5027d95cef9081477e0d5c489ef07a882520adb028b6fcd97b2dd4ed9351549f246a432d61e5714adc46e855c2714a5c98d173f589e28812d7c9f76a2d30eb7b9a3b83e29f3decedb152bcb2d52dc8a12021d4b3cd0f4305926de47f1c9b22310313ac89738cf29a6820d0f7a2a0b2e2096a19f496f2041d103d8c579c90c2911df9afa8eb18d657829747a05e91a3d432a25bbc8c0669bed8e5fbcb037580884d09e05b040ef70649f252dd51f880834b59bbae9c7bb39c39ffbe60a6721ff8d4b636df452b6fe995baeccbafded176fc3594a3f9e92c133a38d8e97001cb662b796c445b15c03b9d7b0a7f2821fa38cb392239f1da20bf704a6fa3252d0a9f53f6d12a0c7c39ffe11539c8b016952a881790a5cf238e884e5118b696b9b73330963b503083d5cd81e510841484d6db559763a154e654de6a2eb79e441fbc96c8dc6b835d8ab3c03e508aeb9a1a099839a36641d779f81010b7dc09d3f4b4fcb1f74bd2d7edd80397a9d53fa05964ec18457e478b4696b563852b07cd56bc12c7c03c6b73ab0d988b547145060dfd6aca604d106204882761a428c7db471d1e01555d49b8a348da033cc93fb8caac8dd6f76233d9cf86c1463131232764a1f4131d3ef061665b331d897cd86789ca0b380cc8901ef9d82d392614a9551a668d7aa9370a6b722e4ef7bfb79599b076370a0b55690183e1ec3c3d69f6d1ed58934d1a6984893999a3898c748fb0c33c34800683d87d16e8644e137ae3dcff9725f1384c276783bfeb7df2217612a7775e4cfa38e2d115f5bfeecac44ea67cbbb1db5f1d263fcc8b3cb05f1d4a0d2c68dff9ab232ef869c02a7e2b0867c12445b33fbc530d3dd5a9a93d15dd67a031307361cbad583c2fb7741ea41ee064b9d4146b9c08fd459cfc0639776eebaa0f93544d6ad63a820078f48ec71ee430c76eec1144f2398841ddfa5ad095d8dde5927b014c3c494dc8f191449f822127812281412b749455ed99eac2914dcf50ffa83188326ddbaa2a1b7d0f0d5b0435fe8bcc95a7d5bb8082de44771c61fc3993fe8d971d3075dc18e4e377b422d98802fc19aca39e5831ef8e32a9c20c0ac60d50e17ce27d9aee0f994d05b9b76199528b842ccd0b1b0bd539b046242e096f8ca8d5dc32fbfffd66fbcfa865df39c687c0678202d68079f1386932e88efb020b314095dc13dd0c3822b7a41d282ed7cecd1699a6ee5248202aa0525deff241e90e9ed363bab0f07948f364c428d5bb2774295891eff70e8efee78415bd7f0b2c46fe270b29c8d50091531a0a89e3df6f0af3058973244f7fb156dbe0cc1e0c9bf1a7ae19e4465d3c7753817b42b2b4496cd3ea380f1e8bc304724c324240b299c997201dfc2fe8fd7c3cb116c544a018762b0d12807acba84b0df8245fca733e0a1aa2da7e9dc709769794dcc282286a5994efb5105958ee4726917442c8acec9132b60766b6aeb7da27d0f9cc0002f519f1a43a5e412f2670147bad5dfecfb2af73ee54366700a11260a7a2d5b4bc868a9d9c0c69c142e7181f39a17e3a3298ed95c766f6ca2deff95dd2715da5a2638b64e64bc006d90ee5cc91e937e24d5e0c8d698937206f86a61064473b1cd1831f509609f4d24f235e6f738c01f785978df697bb4811e4e6a7e40f61ecb3c80ca2df2be4684f19813b672606a00be7470494256892a194dffc19c9f562e9bcc063c7d34049bdf7010ac0be6e71920f1e8fc7f848bb4a1fc015f2cd9018ee0c53245cf9c1a2eb13cc40dfb8fe78680716a78f07d4fb0f07bdb498c7ce4dc372690659e8cdfb317e73c4efaf7727c9cd82605c2b9bed6763bd1f2155e74abf62328d01fc40a0a7ade559b82afd532985d643db29ae79bcb02bf273a16059b6054e26406d8322bfc48b76aa3a8d9acf6b550af439e9ab2e02d1ced1e7b1c196edc6667e8e9957a2022f04ba4a48ecde2724102795aef6dcecd7b830490eb1245ce64d46933a266380740d4b340e9342de84471baf0111a9479a999b4a2212006b993628c4039e1d5bf48b4d1f5190220f453e269d3e640f4bffacf9db4ab88fad580e32458e6e71c6a18ed4ecc7af838d1446cdd34c84f2910193003859d3c71c120af613205e23300b56332e1244a216efa39a1e2cadde755570e790470a1e807f418b87abc22bdbef2db4e8e194f916f1c57709cd66eb387a3e9bcae5682f5903f15cd73aa044966d9112231fc4e44bf2ad545644419d8147a2e968371c6f6c10befa17f77be26117f2386a19a46e9844ac87b2b7c563825650fec3a2ca91e79e687ce79bf990fac06edc97927a571dc7b596ce5cd869038bc41922161e24f43337d256b7a7cb308e43e04ca2397a0582094aa9a0ed7f38f87657f97509cd2bd806264d04e2f986db0af7d2fe0b464b693094ee58c6fbc5338481506e3ed1e26e0e102ef300fe0ce79cb824fddd8b053729aa10a18d0d9cba9a9a50e34aacc5a2f69724b29534a290c0af109b309ef9343cffc79ea4cddcf0e379ee98160bc89533f55859caac254ed4d3fa5d67d399ca27f70c9a8b14362178e8f5c0c40bc9092c5eba9f0d7b37cfc45e2480e9b05ccdbeef5fc9f0be45495029b05cce3ae675f55dd50f284114f0ccde66f266ebdc9bde0123dccc0043288c2fbd9e1c6e30782f1f67f76686f3e50023c7e130794006ff630e1e1ef29f23d4c784c3fbb9e16dcc679e673d7d3729b69c3ff2dd2162105549048e3074a88c1858f1fe87a3e415c11451145484162a20d6fbdfd4f87e75f2fcf8a15ba3fdddd7d6a644cb8441757b0d48d95016204edcd56068891645b1b2b84550608fddb8d23285e2e5b6562baa0f0b75b3bf58bbf7157262608dacff228c6bd59d6e28b8dcc21f0ba2f43dc5ddfffdd1bc82e9f631702aff165d8a8fd176b60adfbc05ea9357096d64e55cafded96e3442436def80b63e480ffa81ffcfec829ee7a20a1fbce5fc35f1d75189bfb0c87232764759d28aadc0de95e771e7a51f27dc5b64306dbbbcbeb0412275050553888e3c80936f6dd3bb59b05d6eea91a380bb34311d2ea5229638b94177e04e575f444e9e84952ad6136367e6e87a823a234aaaa5bcccc52cb61c5ddb579e222c618a7c94445d334cd7442457142994c26538a056e321f3911c711d15055995c2002ba475094b4a46f5aa97b04e50a28534019a2f4b911d03d7a82f452854c12a9ba474f94d43d7a82a4eea3ea1e3d79f1a342b04d69e209296774c134d0fe55b7584e9122451409f8a83b85093298bcd4ad228c2f54758f9a905255311df3fb2f59e816e3dec4ee9b01bec4386a5c8a2fa552fd7c60b2fb800c7005f9919312a262f80506f4c50b50f74808a4ba588e1450bf5e52fb590ee0aa7aaeaaad5f03a51cca1e5ee99c9dd3a39418483fea9b888378c3199c7909dd375ffe9b640c59b9c20938707074c5f336b83d14aadbb214ba47420cd5cd511f73bc43b8136bbf7cffe629d60bac97f91878fc8edf768b3d585c8f192ee669b8ee65b899dfc1d17c0d77a4a6a613b2e28e14adbee6bf25f213d31d61c213f33bfe48d71d89e988fcc77c57f3dd479eae33d2d1e036dd63e66956e9b99aefc1f57821de1d61123fe6699ec575cf83fbefc1adbe8603c0cb703d7e0757f334dc9199e7f191e399e9f663b823acf7f143cccf10f959edf823eb36320f80eec8aaa33bdec70faba7f98fb2e2f3c4fcea79669ee6658a15bb17561ff33cab2ee67968ba7f1f3cd0eeff657ec77f8f83f3c27a3f5d37f3dfd1bc0f1e688faf79d6f3f80f67db125e4813f9e9f135df753f43334333f3dd7f4733f32fc4675e2fee842701f79ae1fe049a4db13e86036a2fe657dccf0e09f0621ea8bdd5438e48cc3b07c37a311fb918dc5b3d0d7704004ff33db81e263c3ebea6ebf9d941015e8f0762afe67d74acf8ab5faf0788bd1ecf8adc11263c00e858f101f0ebd1fc1156ec582ff8f899e701c0d3bc8fae8709cfea01d0f5d4fcea7b7a7cccaf37f342bc07b7de8ae318cec70b680d9b841a029f199a27c1ccafc75e4d0f6ebd9a9f99a7e158f1d7eb3ae63856ec58c8fbae0710fde08cc8dac42f81e3c0dec457711ad8567c1e9c90b589bf83c3599b28c3a9d626c2ef961f0bd3c94c0b24fe0bb7a86dc5a71cdd567cdfa0924c660357ee43b952d59a28765dd45174a05f03d52b71c5f50c80074cccf072884d008108ee810738d3f1319c094db44c05dd23218a2a9ced4e1725f11f647e904932abf267b2ab81b3cc20842baea793820530f072884c0031e4ad3e86ebd9b6f0725061f1561d13289f590e90c13b16fcaddc44ddeabe025ed139b1633151b7208490a7bc01611254ead7c141133888046744ec33451619924f92d292cb24250d482ef54b2419e4ae26ea5e8fbdfa2590bb7668bdd810519191942925cd248c487bf151350b8e2322a1232225db52c26b8711f48341754a0e822a5777ca142c954a13b2ba39ea8507140605310f51cdf6a68584aad04f35834bbbb3147023b7596f639d03dfb55e37150c04e260c44a925405d4a5c24695ba31ea050c9a44c758049aaa2864e21328b5315b185c3ec76f0a06f68628f574e126ea4fa7937bca53f04f1c54d2ade601a56982422550a85bfd2e2f6303cab107b3e4aa97ea875f42571461afc7c7a3b3cef99b0b97858d241cab02c6dce5d2b1785c5c3c97f7f11ab5752c07c88fef53358ef967d420d7f29b629fca2d90fb885414540283bad557aa10f483b11691bb54335864046530501b6655f9c05321ed4dbf6a28760ea0b47e2d9906d0af30499b0546e9e5fb5543466db3fcda4755a782143354f7a98c603a15a498dda72a7ae9549002769f8a687e304a41423c48ee824810a9b6d671f7ad52eca3a4a3a100959fbb9a2077c160818923a873843a672b8c520ffa611c9db3417e2248b9f66094626fbc823a07ae21d4304b9d23a9a82da57e3071d4866b20716aeb3a2b3a078cb98b7ee7f87e48d43951543faa1707b3940546a97f8b4102dd140d2eb35ad32d3028cc1af1e52ed60bede578fafd7029070797dca60794054a976a6bc6ba35049774ab7f660bfac1a5d87a34c228175f11c86d68a7c54bce562d682472978a684ac7a2cee16f5d815345c78a6a28c85deb70c95d304a3a38df9a4b50a3dd8a419dd3d5b56b08bd5e2f1d7efa239208eb8f4a3a476d2a4a576a0f458d55b3cec99145b521d2ee98f6a67f62413f9729b94b4504b35ac954b3bad42d1f50d5950fd257cddc453bafe2565433d52cc96548fdaa210e32bf5fc5040791dfaf2272971ba960ee62a824a40aaafd511824d07e18a31cab0d97dca60cfa304baa57bf0aa8ff250efab9118c92bb5c1e86f556439696dcc85d2ecfac6913c6407e6020fd2edc0c721ba11983d56f2a29a95c5d2a6a2cd54d5579c96dfa67c2a01f8c52ed875182c1a2edb6be6566ded8c21f77a05fe1527c45a008eb125ea926c0acbb2e28bf11fe972e680b445a7c05520b448a1879c901d5d103ca27aca00a05e220a88771c05db30577b54cdaaf2bf57bfc168e611cbf808104319016686819ad7897baeeca302a32926d52788d8c2a3f1177b5bc1349116969e95a701b2d8ab8888d58c6cf483c4bb57684aa4264be22420821845648b1830ae1ff58e96449ed87dd333cea1e39e9a1b6d43d72f2aa5f4b067d28e207d8922d24c7280320d41863fcf81530b23bbdbb306e0c02080a254410e3070a34a254b10396165031a252444c4ec1e4494b13f724a49452ba94ee50e2506337158ffad87d3346fe49571b87a323c4dd3dc6a7eb327dfcd5bae647ea36af8a10d5ad56b146559b92fef1a1b36437e3cad6904068e2871fbbdef7a367663e712d1c1dd8524af9c1dad0fdfd57ebd27e52b7e19fdcca6ddc86218c0dc1584a57cfcfccdcccccccccaa6ead8a56dd6af8eb314f507e35e47e46aad6f9ef46d5fe424ed53910da10eb0db10525286f6466f61348de1ce833b2dc882d6e431a4419a734a1ca6e0654fdc162807ced357eddf0c117c07d949f504463aac62aa47d50b3da318543f8e355a76d9a80a6777a13f7b3830ed0f4b6cea49d38d303e978a7c7a1fe7c211e638cda93603ead3971469f1f3b18d69b9dd6f1cb039e44b6030bb84d0adadf52393347ef0e768bdd81e8f700c68fe98da32f88f045d21748951f65816d6b5a3d644549ad326a23158941e2073b28814510408879fd34ac6bd598320317381107923682603992762fd2ae1a25d70f9cf5cf40c3d1144f6a3f0e4753fcec911471d41c76ee9cef4aeddf5aee32b2a2dfea2dda2266b4707484bc9041f7e14bd81de98e682fe56b1d8b07b2904605921457d428f5480a275c8a23a448220550144b75a338238a2b30a94228032184393fdbbfaf563c4d5fd3e27e740bfe0946d470d5344d555180ef1f9fd66d35a371a6a6fd258d70072d1ed015a575bfb6626b5b335bf4f2139ca01faa26c616c399ee6a3cc688d32d7638b6663eb569c277cdbf3b4a193538ddd427de5aea84017caff94dbabbbb3bec220046b5c5c98fba4756b051291540ea1e1915515fb8e86ee8424300d43d9a0288ba25e16d289d3eb04203c96dfa6749558a8c645162434447d4fec8b020a1c6a1dd2555f1371ad9596d6f416a5d0b6ed3d05b3788c20d288e40c4194b98e0a00aa5378450861522789f0e19ed8332807841152ba05019c20b228a1340309801184b8ebc316a132180cc78c10f66406485d755b830d2028aa0981854c4d049f284056e58718192263cd87d2b9b55ef7672f00392240cc14a9527bc6f93c2a8df2af938c1860ba64802c5194ea278128cea23c5174de890e4f5439527bc8f83bea81f0bd1241c7d91048a0e5598781f0f59a905700203279890428720a0781f03a12a01860f3d6822031b10c1fbf807f5e3a40a1c91650d2d8890050fac78fbc6105d40c186104cf4a0c4ebc7c15d0268327406142b40e3064b78ed73031a2c3101850e9a3c91c46b1925a0681143411ab031bcf66942f4440e7e8cb0e4075e78cd02114a582449326263089e52dd5af02a1bcc2636d842b65bf4b05ff04006d00ab6104aeac207062b20a28ca230a6c44048fa20896d7728cee7f4af9020f18f8f105c14018615321002116c783101a232625f2839819431ba650faca0c0680a359c783103a336ba488289264b0831e9411a53f4532f52b0db2e7ec5585578da865fd2fc4a3503041d1d5577800666786182242756400359a5e538538874ce5114b1ee1ad8240aa1fafd883f51c0ea873a8ab254f7284a52d551f7288aacee5194a21a85a8ee51945894241555f7280a10087ebf5dc84057f8b3b65b4dbc9b66a8106a7377ee6a1b9917aa112305e5ff6ef03a8d4008e1ce762f3027570106023d0217982623dd829033b2a695104ac8c256886545bb7f1a08b539219c7046ed21b7afcdd57eeec639dd4afde0c7fcdde055fbfd29041a2614f14d92a040d45d61015000837e0a304191123453fc00c44a06eba40a6552cc7c8c44bfd5a287956c090d0f3d30920a8ba2f4ffc041610654f5e79c153012344cf8a1c98e2c48bca8ce99132db840648656f5e7587405fd360c1e6637185a4109597e49e77c3e40f0264229dd216f2b96c095e08c0a0afd666654ab79060a356910f4fbff253c623b6c51d04fb56a7d3714f90b7090ad31723408f4534035e105d4bf579d042c72176c67fdd099e618e393c806fd7ebbfb99770557efb1089598b2c383248a3cc8ad94f09c5b1e5408bd3cc86d48f01c153948041928157990633df156694a0d5e1ee46a90f07ab608cb12617839b0d292a421bcf890eba1b1e2e500b38417bbb98c842e951f5ca91ff4c24ad576b6ac1b647851e4416eb9a8c2ebee251cc4eb0dcccccc4c5be0b7584de8e74ab57dda6b230955fd61c7413ab2a0cb4ab8610572376f10114cea437da1d79d8e2ea8735757092f21d78fa76146f525c20ed59fa3780e99ac2177e718605b6eb339382d2dbe01f6db990ab6e53f3b236ee3af512a57abe83ad55f1e8b09daf2e91dc77c087aee4b050da5ea2a1fcfc79bafba4f67c0a0dd230bcaddd72f0ef2f6760eb2759ffa36cf50b2ad7f6b3ebe61722a58371851cba176ce38e59cd07bf24ecda5c57fdbceb1ffed122f515a1cdac543433f8c84612cc46ec476d5a8fcfc373008f857be45bee26ef96aa8de511d5950ae3abaa0b35b6b036b060cbabfb5eb6cce86adb24716f4eb19bfeac7b0f618e3d2b63532ba0e2c40f23636a5008da59a56f9405771b537fdd308b09827bb1939168fecd9d2f0a48fa7f281c26eb1f7e7c380586be02c15d6afc73f0666047991dbd2f0dac9ea4042fd75a88ceac28fa0905507dcc0d50110a658985f0ed59b4a185e54ff21c0ce81ecfeae9a41223e1240efc5954a35d36a1befee5e870f54b5d3380d6573dff5dddd66666ee7c2f4aace582abf270d2de91643a16e3143a279e509fd269639671c9dc3a6172f9de0cb5d0921841042086143b8b4b39821fa99b054f73761e99c25531c527c163d7ef835649082a038b01163a3a2fc8eeeee2e173a0dde8d095133f6ee107800c7fe06172e84dbc92451f81e37eec28771770508218430a8471114bebf20841042d85064bca0fef0f7b47f92a79394bbb29bdff41a9bb46678e2babb73acd1dddbd500d1f8bcb3bb257477dcdd96f2b7c952cafebabbbb9b4d2fe30388cf6432edabaa0c26b90b61371228d81d12a859f7e8072aaffe8d437d7331781bb7c6a8eeb535dcb635edeea6a24cb7f1e5f8b5eed39bb49389fbd4dca96e1a6a374792d1e40c22d46fce09eb7c39bf6777b7fb0e1c524ab9522e8cec85b34b03fd68852b9739a8a2892815be0aeec0224819a3ec09376edc4d2293f438e821e545638c314697d2a5dc957263c4d1342b74bee9876942d48cb0eeacdc8d9a9431d269039f15aedc9732c05df70e09cd3b24b48731a7bd3f8c50f3564508dde1d0344d8bdb09e90823fca27c7d3bb78cf2b5e8ee0eb390bfcdeee3a53a9170fa62eb5c4a97b225eee9a4e3df92dd0b819edeb75be3bed9edf399e32bdd92bba7fd939452ca95bf21f0ea2fc3e7b01bb69fdcddbd2509eeee2ee7cb58a12deff272f7b47f92bb278eaddbec4ede9d96bb48f8429352c884928909625bd4293504d527e77637e6ddb6a4faddd052ca5d06f0ef2c12a494cb2954f7f9d44dcad30d2fb945a152bf494e867e293ba95b28196ad0aaf65bb59aea64e8dfbadc763d7bc9437048ea24eef3a9db5d83565b4b0dd97ce358f3b7a2168ed369fff49bdc3d9d5846668cf9f03754b7e0ca90415b64c8a02efdaad0a5dcfdfde152ba703870fc4ac9ae860aba2ee5eebb942b233306851eabcc4951bb3f6490e8c753eafcb8ff4376345fd0e83285943231416c8c928909625fca19f7e337c745dd9aef13c2b1df0cfcfd52ce1680d2aba60d0a9fca7eb2bb6590afaa326cb78f3441d3bf26679abfeb39b8a97bcd085573d6e6b65b514a29655c4dca1871e07f2ef9a50cfea72a03ef326ff7e55017b6116a9161f7ed329faa8c10bac3f11282c12fb6dfcea5942edddddda5dc7ddf5d29d7dddd65d5de3729a5944364276385ee9b3eb53b5de14b295bca4ded0d74d4deb46a64c0a0df2dff0dd6a08042e0891306b2d55f153e95fdcbcbdf6486f2b7d3a426b5979a94319ea0ccf8c5a39601be8f2a43ec3880c4e971eab766049ba3d8c4add7a915268473ce1710db4a5615943b296ba4162d2806d2bbc5b8c5f86db3ea56093af6a65db89fbde9a71c849953e0ac2aa8a33808a5ad9247ac11d7af2597b48b819cb48b616d93c40691df2f8fd89d28ddc34164c728582034d81cd6615bfd47d4ee3a7eb141b5df8aec8e24c2128b15d91daffd13a040058cb0134368ecdecc6f61dbb62d764512bba30407e1efd4a35e3c85a3b4b4a0baa5f37af12be6317ebd36c6b1584cca5ca430418c2d05178d21336ca92f32fab203fa6cdab6a98a59edcd4a0e95c29e38b20088cb94797183c66eb537edae9815addf0a42e6188e0712147a4af5a2b3b75b314a5ead3a52611f5ce6ef4e0d5c6d18c218d81b8fd135b0371bc0928691bde9a76983b2b893bfd506aedf2a05212a7429ac4da790420a7bd3ff44d408cfd09a59dc991189027e65a9bfc5d38e8eda2df37285c6df7a7dd7574228e31009a1dc1b38271462e31bb8ccddcdd7a54a1951ebbe31e59e1a0253f2996b29a5b4c096b15a2b3eb8ab0019f4c36118ac9b613086318c61ab18e571d1804380dd89cff37b691908bf896bd100e797a2e15b9c960aff6b61213a8783636553406db93b3548c48730db6afa3b4e619cfb56b7765b319bb3b01fccfde66cdde2b6d51fb99515da943a10b6add9b470a0f5d7fa6a3d8975cd991ad589aa37f19777dffbeb936f9a75e3d6638ed613c75ee470a4c713d7c34bb2f8e2e5e5e083e88a27dee94d5ccfeac0c8cb41058777ea98b01870a5c2f6e6ac734e75775e943a07cb8b1034762c07c49f3fb76acfc2827efec2c1c1695577a1820ae939db1d3176cee61ab4eece37563585ce41813b244cdfaf13911c9aba38f3f9fe8a6dcc76d656ea37677116dba8fd701b9a2e2fa0f1357fed4dff9cb9cb7570980ab62addea238290ec9001359ad2ad284471a85b3bf3fb5d87dd314194c52aed7a6f7d38feea96b253f27dcedc4580b5e92f520301499d0e752bda86bab539d9a260516df0facdd99ced8d18738cbde9ef8e4037a36d4ab79a1a817eb3a8288711d53ab9d42d565a25559633efe6acf6b3a42949e77cfe92dd0a5de59cb58b5d204b42a35d3f3d3b62a95d3f73880a94da6f7a99a824a9fd26201392ced9a3a3a0da6f829982da197e527596ee52bacfe64cf692c586faed3f54b581512c7d4e1b5aea0d53a2a4d4b49a47712db84d772aa486081902dd2a807dee3f617d6c4e7c7e142aff6780fad9d4f9beeeeeddd7d2f4a75337bb25a44d1cef4d6b6f5a2efc2b31da9dd6de441cef9dd00fe2509bbacfad6b12756b2b95b5e9df42078410b6f7a7dfff13d7264ea65e68efdba8679dd44a4ee4452e73249f41d926d57e5804e1cb5d0f819a6149eb75777777f7528d4cb63bdd395d8d625d2ca0b0a2721b7941e7c7669ea9bde147e1b4511bbd4e4d58888dd041679cb16bed4d4f77d9ac4d7ffc4f07017804511bbcde30bf56ed9a66868e9a916b69d5e516ceee6ca687ffadd1f4568e32e8d77a7799bebf35e78473424d72ab2504f381664589989983828476e7088ebd0c11d47dab13c2a0462dd8c56e77999bbfb9d0adeed40a2d75761cd4527b04d1226ee3c203d6c501b7e987dd37bba8fded17b5999908275998d0a0f38272926ec1baf51f23590549981aa271d0deb88063341c8355570eea35280b75ac84886a5dabd52916b84a295f6a526a9a57f91c14d4308d512e6827f46b352a10caabe5d86eb15668a935701650886a775787eed0050e62aaf26316506095b9965a23a375e767fb97bf71eb3055d08f97f875a2f4d74e6aebfc8b117d19827ebcc4820de4ae75ae3c29ed140b2d953b5e0aa2b028fc4b4b9c630dfa319213249f737554d0691d4c50758b5237e8476756ab17d01b0da42ef14882f20b39def631e4785b170316ef188861ee621cac4dbf93c602c64ef6a67fb504fd7889973c692e352f49b9c10c2a2f25a17ad74d50212da4955a7eb0f96b13f5a86ebbb57d1136e2ae940f185da37afa787ad9f1a9e5b727e2aed46f5d1177492f7a3044afa50527e23652c2456a18a4d782fa662d62c46df857ec3e4c4affb95575f36ef9d9a5584075b45bed2d2da96fe96ae02cf4bf99e33fea7af96f15c4e5bfafdbefeeb43cea61385e9b16201f575bfe856bf91c5ccb53aee57777520fb9e55b35b5e5e3b7fcee4813a4812def93696edf3a99a6b774ec2946715fb7a2891c8e0dec2d2dabd898b767ed654eeffed3fdd4ad005f7be7602062eabe56e506a4586841c6ce0710d45f6a2b876a841f9fc8b6751c05ce9e21314445169851add9aa3371d06f32f3ee9c3f741f32338452a6989b99997bc70978c709982b779f96254b96342a4ca25a74d1eebc0da81754aadc45bbea6e979cb5d115bc90bf933ac7a5f2371a4595bf97dad51e3fdc6616425de6f8331583eca6dbec729f2bd1bdd92eaadc458dd433fe4e1a22f2f1986548d0881fca601212912f1501cd3c69d703820509c5ea5065c651aacc4a9a0fdbd6f00641bdeaf67f3faa3f8be11b61f6ffd12e93120a3afe4254f07781883f4f9157f5d700c35e75cea7aa1e84e7a2ac81b3d48ec500c8f2a93f7ea09082bf0aadd7eba583d2ebe575d1eb5589d064b276d58a34a3edb429ab29e817615a9190bbe8a7fee55bbe93222c48883b16159485ee1cf1bf088b533ae7eba4185f86ac18aa5eddebd7644cea9cafb5a2af85d042d89d15baa2d1af15991c01325000915501cafc14d4afb1b00ef56b2e62fad93181427aeb952c07589893b5bfa05ed43d2a8a52a10b2aa9fd3149e7701711e2361c838edb7011530ccde2c9f1300fd3f5bc749fe373743db4a32eddca4c6fea7a5aba56c7e2d952ddaa374ec5d0721b8ee1dd86896c6e136111b63bad145b107f602011d62e139436c749248a513a678f7430a5f6c7a28e0e812848769afee4e34553379dc7f4a62e7e94088edbf0d6b1e47f383ede8963f1cc4d72bc5423d7afcadcc7b31a398e55e6fcd7a846ce14ab5f27256141bf081b226298bb7ca4908c69419a10911603d26046eeeaa4dea221a2d97a48b324a5a52a140403aadd4bb248e72ac2bebbbb23ac3ba9957ac95f314984ed4db3a4507eefe8deec7f112693ad3a638aac4a51f76595763b06cbec81bd99c184832a552ca11a0256019442eda74b2e66a8ba7813a63082b2ea1e51f123a58d5a94240e29fbfd1ed89d2329b2aaead6d73d54f7bf9dcdbc6a9cfc68a2ba5c54f77b4add8f673c93aaea07bf48a97e2d1c58fd748a84eab746affaad6ce8484a51fd76a674c67c48a78606fd80d4fed97d00556590afa12adc647c004127accf0ed82a9cdd0c284ecac7a9fca37e33fca8dbcfdf4c48f574eaa9279e21a7ed06ae1f58a48ab2c2801ff5f389fda8a8eee3a9df8f7afab8fb7e54fe091bd6d36fb74c1daa83dde266f851bd9ba88e52505858b746d12ae847b5776614b8a01f10ed218b20d6d889c06b5c81bf6de049a04841880a2dc06fff21fc1b44cd70ecc9703b4c8fc73387c4ccb3b81e1a223c99dfc11d61fd8e079adeccf3e07e783ccdefe07a627e07842ba467b8130d7792b207e8e7b16b80ef9483ba4b80ef6445ed8f89f9990e053ede8e8f79eae22e3532fa6d403d47a6ac0185c7fa0d6843b23b94b5a3ebd9f131ef33c3e291791ecfa3ebe1f132efe36d3bb8138c07770a62f1d0fc8ea7e94eb01da6e7c1b17878fc8ee7d19d8276984c2fb437d39d62b1161c415f54076a02fa43813ac7841ced3acd4ca7d969769ab98bc662a759ec343bd1188dd1188c7e142856fb346b9bfed59f66f4759abd7ca6e2817ea79fd3ec24c6690c0e72fafed395ced1b101d169c2afba6f6e40f44fa70d6803da80dc455f1bd006741a1204fb97ff5387463fccc7e240f045129a7836bc701f9c41afd3ec3bc99c8b2fb301ed4d7f0cf7f3b3c37b1b0bd600fd3be0789b0f4b80fe4d057b800de6411bd03469da69837303da8068918e2e61c887fc063e7ec5bd82837e5b05676f5a4608eadf75474a4f71d9b1a2d64b865aa8831ad64045baf94e14d306fd9a087254458b8c644dd4456dd4324deb3ead89342937179f5e644e33ae9fec0d91ec9a48e6a7ee63223827b9afdcd54fdac8474b791d52b6152741f4f5aa81b37048a41ec75da90ea7bb7176879f00bbd34f0ac0ae86c236fdff3232f5c3a92ff56ba20fa736d18753bb265ae1807e2ce358dbf4cf1993c558b6480c60b18c3b1e44d8444de4aa316661d47e5ec23dc43de4becd4910b934995e9b7b49b7861a563bd543dc4e62f4e3182c167318ac610d73a16143d6d5436ea3c2ee4855aa162d19721733d9ba41388905d23bbcc4c7b19ea27e33c67c45cc09fa6d510fb54dff9c940e0d15f5d0de04d16f35eb6243b5f43ae7ac7d6e2f681c69f92df5289d234c78509ffa23dbb71c417dea59fc3c2916772fb4fcf631b474eb3631a4ba8f1142986261e384a08c52e84104fd5a2c7e148ebbb68ec51d8bc8f65b791c8b67faad5bb7f1fa27c36cebb239f19f35a1866a6f8fdea23da7e6e964c2a9d1d19946d0c1289dda5d1b4208996157ae614ffd8bb2e08442a6c9748342b7705a630cdd400701fe9f8efae9984c3a3a42e243fe74e4cf2e8716f4d3d149a165b748a6eea36c13bb6fb670defd878e4e1aedff33252b250e102286ccb00965f27ac12c084345408217f307439802082b3c18618801ec6005114e8c00e209154f466d4238190785a3a4c68662f7ad1b57c4b9e321323f9c20380670e154815339e6d80474ebec6ee04add290e8e92159b9452f288511e311a218c39a09470b5bab2e1ac23510bac6bc5ec466bd3405a24d47e1d212d103961c5a211002a460d01fd3a2eed2dae753a7bd3afe3457c80adbb566dd3bf424b5d3d41bf5dc2614e4a9780d45e8270b53b5d81ec4dff1301212293c95e46e4b56d8dfb3e4e659ef96658557f089f76cb3bc9cdc8c59c6e6ca69725a87c37457e7fee5c324366085feab7a279837e2de79b4c2693c954579288994516651ea32cbeb112a8b6d421ca505116bdcd5f7b43ebc6e27920519880086c78a7ae278735c21049c8e29d7e7b14c7e231c1a8051eea4d306a41027ce09d3affe903f4a33e22b9ab3d1df686c60d7aaafe43a0dfac32afccd98f1dea17652bb0bb4e1c8489dd7113ec4dfb8b81f49f382f6a625d7e8220063080000470c2092c56fde690bfbe39b4d5cf5f1ea55b33a0fcf94b86e236085a781b07a1188a63c96ba25ed2424957ac20455994ed4df71c9a4d66d17c02218c332df6c428aca042b43d8aebe115fcb0754c221c52a160378f88e182dac0b16e3574b592c95f918bdd1101adb16b2577cd23daa6bfbb6f2ee925adb3c1eb1765fe8a5c7051c640fabd9b42dd6a59b7fac44e94c090aa5c6114218c35f0ee4d11f4fbda32b00a1463944599e9e50dde222a464dab61ef34d003faedd295eecec0eeb0b0d5470be8a7c0420a0a58400aab854b6db5f6166db5f2194d4b38b0d24ba685fbbaaffb86048481352a5d33b67b026bd3bf6298b14691d8f110f92246341061aad01e43a090a8699150ddd6eddaaca9e31b62f5d8aac0e438e0366ec345bcc3f9d12dd8bd24517ede22b1e76b6ad0c9566b645403ea1c241acc5d2ba40db90b12250dcd34a4ca455ba4a3e34993ba0654b5586dad5ba1de09d5f89f27795252ab66e74b8e310054ed1fc0eef4abfa67d6f5f284921a5bd4a0871ff4e0f5d7accbc7082c7e1822830736201ac2eb9bedf6862814e4a2a59e5666080a7ff7b5afd72b761c4b8ac90441610757abd873937f228563b263a09f9890502c3644c445db2ef4755f7f5fd21f532cacbaaee05856dfc27961837a9fa004e5215eb2047597558c631ce3582cb6551132a2e29ceabb739c44c7b1bde97717ea511d2bc136fdffd1e720dc41a9fd3bd2a0ce1cbf731cc4deb0106cd3cf35e022b6ba7dcee94dbcc5ba6e606eb22e22a95f9941c5602c3e984fa894957592bd69a93567d08f6351b828857af91ccff3f2393a167fcbafc743b92342dfe5d7e3940d3c39fea56158cf678ea71d13d3af87fafe244327a480b292a06e7d2bc3e273c3084ab058b64a0ab0485f6f4e278516b7cecc0c5bd81b7e29746a141050081aa1834e6d32bf60a1df16c9ae731279c142398f25d1440ccaff796c480f26b47fc9f4fda152b5b761b51dc85f8daa5f5fa9fd3986a0442d34298e8e2cf5b2fb745a5c1ed5bf75dfffaafb680bd116105c70c8a8dd796c08b53d2928090d1cf025cec4a57eb3e280a84671a93c6a40bf7e9d5eee62201e4954a88813e1c0ee6c654d49e704b1417681388c9374605da621588714d7424c487b0c0bbab56bffff0f60db50db8642a188fcd81bfe1b7e7ab3373c1ef39810e5814ae903ce8444ac2aa8ffb641940bdd82b00603eb8a4b9df352fb2b6044a66049c8de54590a6a55b5807e5116bf885c60895d6c8e0f36ca38489fa0c63362193695356d88e6939bdac72dd6a63ffa20caa247f696963abb288bb1428bcc49e96ad52e201591a6d7b6d48893ec64743262ed64745a635dd187edf53abd511b3eebb933d2baaf55ffd358dc7a55865b0f72b4c670ec39ad321c7b905bd5189997e97a643ea6eb996ee8308697433799e286c704be8fc7e2583c31cf7a56d743438417f33ede49b6b55497faf2f14bbd0cc732e167dec78be158fcacf7f1368e4f46a72b762747edff5c8a5c8a5c5c5c680e98e778647ea6eb997999678e27e6595d0feb637e9be14c4bdce9e5362c9e1d3ff33b3ad35237593c33cffa99eec4ea5e68ef04731bd854b5807e2e45b0daef72c5a5687754dfef2265774af87e172a3808ccf7bb4c7131a2f44da921abeee35a02b7dbf2a72f6fa12f1d26bc90a62f77b924510ac33503f1d7c1419edcf277496a6969d91697a4123ade1b57c59311ea7da05f7c25750ecc895f78a0fe01b854bf12005519b44f2dada0fd5702201660baa4ca8fa5f24fee3eede3cb70ebbdd4980fa2514d2e45df69e8f3fab914d910eb77324a416ebd18c89d8cf6e644654f48b54f5bd47e1e2ea0dfc9a876174b54f8288e85d5501cd7991a324d2f21fca9d554d73875ea7c6ffc64743212d2d1aa274c5c7b35324aa7fc8f00b573cc98da5cb509a5c4a8d4ad75453d0c19a21101000000016314002028100a864442c16838a0e8bae03b14800e82924274501d09644994c3280a19638c2188100000606660a466db06ca6c77c0bb44a4d2cf73a91a619d4cd3d8e06f7d6e1f891bf23078f5e60ceecaac9eaba051fffb364a6ad9ea68e457a09c6dc4e2bffb8ad795329e0f6496ee7d3d37f4c2a78836ce02bf5718d181d70cdfaa0b71c2ff23adeae320847e921becf2bad713b0d70cd51e27ad903e28c85efcb88ee49b2302fe5b5c45a9cbb798f34d9e0b1d9875e987328d569f86f388a8a2ee4ee92a9e8cf4ebc3ba3099ae71d146615d99f72e8097b2bbb4357cbf387b96fb9afbf2fe1f21f82d73fc1f3bc2354fb121b24b56cb33967ee945bb336a64af78749ddf051b95334888924804cab1c4a48577b562df092351806bf8bdd0b58cccb8519b99426a8bd8fc7d1ec188ef37725e652a60030e5a5b5f80f3bb1cb8f288cb03601f3f98f49ae716fdfabb52c1bf43f7affe092b0c7c88c1315598f8fbd0fe9e7dc7b694bb7eb7acfe8e6b7ff50e7451385d007f52bf170314f6bfc6d69fc596c60be9c8e58b4b07ff00e6a2f92416649dfa973f517fd12e63be6c604e0b454730ac95ecbd80f57f5cb79033594b31319ec37d6e00f95567d7e6b500facfb77daf88454b6971a4c03e464935818213f74c1b4d291e7f041621dcb9d97428c3a90cc4627535be436c20c513719423064c10c08529824f98baf40e7ea6ee1d37191d15952718ae762417ae3702f75eb9d1a9ff4b0589462ebcf470615c576d7e11112c323d842f8152ca3b169bd92207e4e92b6b8031dec1026321015031992687ea5bf4bc4ae5341ca6fd9d375c8b92b2c6596682ad2b3ad8c7c7df22d646b8338cfc09aa5211721510121c94329b02c0a5d15ab0d88fe16a74bf7d4be06ef332dbdf8a6a535445f9a50a4ba025e554b8ff25606c27107a6db1ae904462d92e74083d3834e6cd08c977d9597b608f1e66b3741d3e4ee6d55bd01d1b0d3ed9e9d71d6ef1e73fcda8686414e3cc3fe1c94900069502992e0dc15c386ca028253165a969fa62cf9745f1e3b4311e898f5f99c6791a0be052803480794ac984fbb5f4c8ec1a1f4acc2596a66552da37f4dab9775ec27cf8a734496bb5ea46464cc32fc32ed874d0b775bab918f434d567afb4561e65a69a847bbfc31054b504b7766916b58a0066cca514a2251554fa4289dca6908beac56eaf51d9af45ad82beb937e07b0d8a886f9303266f13624af00188884b1fc5d580483cb31a506ddd6e6ed6b04e2c7ba4a383f2e9e4197fc8489bd7c4e2b65e858d2134934c181b6cc6ad76ff619c78233fcbc8223f142195a81a058c2f74385fedcd3c73d33d9a68378b0c9ec24c42d3846048f88578cde35baa0bf4a982dab4a45a704be8e2359361d039a958a58550c901433de7d43d40487c5d61b0412c497bafbd80e9d90d6edf735d887ba14e4dfdba822c16c19ae08fbb4b24a75781a77e49d879797a68330bd2cb478680497b8cc8047d88b0a2c1dc8f75e6ef0943fc7e85364796ed04a216ebfe3d32efc281a4356d744db5bcf2a951d9ef354b16720319aec5f014ae12e6274a0f809b0d7220ea1ebd154b48c9344faaa265b8d647c7b5e33d41dbfc125ec69e10b500a2ffe1f3d54a85ed14d42573080ee5f6b462bb6440fe078f6260f2490310fe1bd2032621ad4440e3150e42ffda9c1094b1e4961e4ea8bbcca5fbd4f2f274f73267ab224c1055507e087f088ad6c9daf5d6fa79511c7032785deb9c1b2f0a92644deb3012a02bbf5fd110f4c4778320d1bd0c58315bb8c44fe327b26d6129c1275989974320dec7f2be1748503e4350f7f40a2ec019297b2c30638d09c39e69e5fd4c527704cf0489874ddfac9f27608847695aa7a02c06dd8c13578558e4a7eb08a5dacf9f7d6a6b02430eecc9481e6ce90f36bbfb30e49961e5984163179826dbc91e0fad5d4b34a1950060c8f967537a1915ef9534e9e64243db84c6f4b132442c83553ed021cd960ec5dffb30cf9c9744ab78bec1cc7b90dc8c7a1d4af58448a3adcd9ca84b075b145a6698e44519efac2c50f28caf5bf576888824889f04944d0bc5bae98db53ad4e587f7e9f6b3969fe5a8cdfa87cb12c3aa0ab52e6c684190d14e558c475f8c97d0dc94af7131ac85af85ef4870409c9501cb04cbaa76a037bb8a8276a55a1ebf1248ff43d72501fb710adf4af96114ca2446962e4b13210c8c97fb2ab9a02f8654f7848f64f2a1497ca072a76cd9f9d2e06c253fa564685e4d5ad993995f3e0a8fe665809b9745e12874c63a6daebbc028e386cc4185ce7952940931127b92031b32beefe63ffc41689daccc0489262b8a7b921fe653ce191368f323cd81c4897a30e2e8dd48eb226dc1d7289022ade539813944fc2676dfaef1e236342c1040c2fcf72fe709176856eba934c6889867502a0ae8b4292cf43ecb900716247d04660445fc01d32e927c8a999a190b833a41baddb28cf6fae8f9a74518311aa10056633523bf201367e45d80489395984f5d84ab90d97a8179658d21e63bfa676f46c23d75e2e7b29e827d815c1d1a0dce40d5a71140fd38eed3db113c013d96bfdb09a9db2226317effa9c3bab0a21e8aac0e2647ba5b8807513ba96c9c721cf189702b95023ff8709aebc56d5ed15484da30d02d278b32b111da7d0fdd4aa0d392f323e5cecfef46596c95d668484bc24d370387c393ea8f53514a27906ee52f72461171b693c8d572249a36bb55b41dcec034eca2fe56c460d0dbec50fda5195a0806b9a0b25c8f865996c2fbb203578cc833c8375646249d4c995d2269769f8d9bcd61e165cd4460a1b0eec916d44955640e0eab0e69d3ff402956925a13f6a30ba42bde5333b271b55cc9a58be5161a62e5ca0523b49d293b81b9e68d9560044da12c9abd6319edbafc12be958ba40569e804697aa41ef142e94e6b4791eca2fb0e5b0ac468f82664fa605260f776e8085984458c3a5ee0a6f8cd7dabbbfc537e8644187a1fcad56f38c97e5499349ed05afb500d1aa986be9d500cad98e0c5ee79f9287189966c356e6dcf57d146ad1145ee10a8c75aa326d71a8f0e5ba3f86c8d1c707ef070e1e1664b9797c05cb850ecf106fc9f06ab296f83a7071c74d3ee146eaccc5405ee877f2d746fed27a11915b4d04c68f22cb4a928ba5d68cca7fdb2313e09ac6c87786860d857c3d9be0e80609d84f956b0c69de9e13e98d0ee99ae7838e21e9dc804870e04961ccbd22cbf8451103bcf01158acd00797b2eb512380282e6dcfc04f161412e372a4b4832db20ae4eff8226e83d9c3ae968532b6410780ad4cb37eaf5ec72cb6f6b7c277a175334d92c983b5c1b43a16596d709884e535a3a7668782e4d082a5926f4e0115b70da1570fb162a2c557304a94e2cc45a4a234d76fbf41ce0b62f790c745e3358a43561c930d92dbfe410fb9d3e10f64808569b04f0e186e8826c7784561164f3bd59c8bff76faba5f371c8b6c05b03ce1b597a438355b2e3d3d6d2ffd4f8cd3e8c5df20ec4cb2d4805ea05fca1fa463092edcfeacf45007c58e4e1967a184ceb99e2b0ce7f779cc3b2b4ded460eb1ef7f434b671024160e6f2791523a84f63ef2338d452fd8009e13a177166048795c58366ff65e873c79fbca77c99e1bfacd0b594d3b239dba8327020146e4105bf1e9655572883e47c2328d725999732c85588b588daea6d8da791f083ea2df9ab6b0772b44b7dadf7d5168c480de18bc17c059c75ee836d698be3f226c00cc1f95eb831bb7d98559b798377500dab7a9dfbb60256b92e88eabece85f4f532fa35b1d2c3e50c7bf9e4b2dc349bf3bb8b55c2369de168f9b5fd73e43c132e74c0fc7b2334126bda327012a5bdf61bb287eccd8cd257a5a36cde6e568466eafeb65097aa6596dd0b943bc66178022b69e546829f019cd15f47f9b0a3188c981fa4c6134e9ae9657f9850a7f777f50db11170d1e991147c8330a482f03c99e58671f29c3c79372fb6e2492b3aa26277d81a9703e8709f2a8e1d663320d5d2b4b6efa4727ce5d7d566b33561f6149b7fc4e7ac2914fc79c08b7bd647dc0a9879c90425320a1c3dae8a0720af71401128aece29493e168088c6b54f67beaff1f665ec14b3fdb585d97a15348cd3a18424e919d035ab1aa16c8c1912387139452243a342e22c11fcb6f5fa5beafa734455a55090aa4ac3bc5fa3426ba95c4c333ebaea7f26a58fabb04dd15c00d60234052458687c2cf5c0e3248172f3ac53fd99772c885535641ea50abec4550ecc5574d1e0052ad79aa55149a5845a2d5c6c0145f4659ba077ff23f1aeabc30daf294e485d42c59233e26a60a1087d992e2aec917fc287515b5e8c6438be619dc351cb20bb1893cfc85973e850f5d6a1deb91fc39bf2808e28db1da147d48a8f3cc698c06a104435b9464025731e748da60d3a33fd37bf5f470d3cb3f42dcdb03ca6f2d28d28a51f3a71ef0321450f0a98fbd0c17d935755608fd84ed6be9e031812f40f98f224f565ac225b3456b3cee2b6823f1f35f70cf7ce56a4c16ce67c1911300f8d00c825048c99c30bf1a3456881e462970af9bbe1c3e593e3f1009d29ba16de73a0b8b9256ad6b16071e8b22b4307449a669e030c21ff88e7de0ec8b5e40ac45ca48487a05b5d94adeb3ab58bc1aae96d223b39d824078bf270510882c82243d0795f609c12a56060cf66fc4f4ad18c61dff4a04427a0d1e40f4e1fb69289dd782a0c661d75feaca60590db386ba30b4958d01c10bd1feab707c74c42d28f56a42cfc3866cadc0b94768ccf3c115fcd15f963fbdb9af3c81853aba79fb6e4acf53ba892f7a70ba69e78a48b311ea1aab01ff69da4d8c5c84f2b80d936a660b8a317c2a0b6ff1937bea1448730b6708091b6f17586d851a799f550138ae1bde314d2323381824cd467e1028850ddc026c08133ccbd45ba46766e2f78f353a8227b233d508c4ef24b1a39dd3d68334a161ebcac3999fd16e9b2b8c8f90e2d1f85e0a0be8302bec270cc8c0b004075a76b2cb79f56b39ab0a06a793477e909577bc3604e2c930848ccefe789a8ab848b819c7c211c9cfef56e5cd3740f3e6eaef8b6024a6bff66960a406be4ed34dc3c5dc16bb5b49106d6b16b275a92a682e934783e3c6cd5ff261f2469500e97fa24e0af5d8921e4ee149f9c6b91f18d086aaeac60c9e398b33bbe302bb5557e9a2d406b0f4f3bad519529acea55c6f33186affd53b2b2be99410956fb4bf01ccb965f0765bcc88dfc14dbaad1650122ed8837bd342cf6faa76a8e49de08360eb14791169eb1946155897b311ade778dbc687c07594ef85ca0c7a258b419c86447bd05a5db8052050c554de003329682308d787d4a62875a5001aa6fcb25e0071bb79971ada9061b99487f0242090b486def687c388d4e0c92eeee0e1c3e9c0ee7f093503b9dec8e75f2bbaa07013e9d54fc0a61c27e133b959b14140b240ae6b384690c91ea25ce29545053a9b6c8cbc5b104ee7e3fc3c63487716018d146f6ff7aa57f0f5ea1500641ad0731cb83901dc21de6e2e03f253e28e1ee0bb13aef9bc27ae51d19a5f44f4bf4b1a7ca5059c43e0f3d86d91bbfd4b4955271ecbcca492256315cbcb8155be21aca720f077d4d33b17ecc495cd13f20a956d9fc42c510eb43cb19434637057893b764ec6098ac57085c7661729811bf44706f247aa962ec93254f9c44a7ae277cc5dce49f5af6dbd49646b12e90aa8ed0e7d95fd20fdcc635f9c0550d007255d8f56b123fdfbdb4ddcb2867ce40a1cb45bd4bfe803302fb0eb5d8aa6511446868b0876351c50d7e74d86137221531c982d0d71a2bff70053b70a488102ba523491c24579bc9816625b65f4408da59abfd17a052a5d55347afc926c11554785dad336c689d64fb0174ee7c7a50d5fe5b9dc4e8583a22a92faa04dede04b48c046c9c5ef492bc2a3d0a12312b4103d7854b283a30cf0eb06ddaaf863a258c835dc5730f2f8eb589432e7d26abc1006bc97f6f88d95bdc2e331dea1e8afd815819a3bb324909767738aaee6e1b0f65781fde0bef9288cd4a990fce100766988f5384c21697570f3ba9402aba455e30084670d8853b4d84e87e2ca9d272c3e448b834163d6f184f0b161a463f74df1bc0b66581920de532ba63e9baf3026ece06a02c761f734fda2d9fe01e45a6d33f9130c9a2e87b220e8f905a9535098b77617d87cce62a64bc5419066f2c70db95df886ac3e35570de34b472c1be950ba17213c283ce164d777e8c145daf82c6228f4abd56d425dc6f4222ae6d49bc3441087158297aa901006d4b922c3a85173dcda6a011f53ac8588a517baebfd9c49d21c12400140c154565710aba0e30b55ef80c04afa1138a820714e822d77ee15ed825f6c238c06f472fcc6a7ca8d7e85be88bd0a3a6cb8cef468dd64a3455acaedf778ef16ccca9a8215fde526ab87efc77a3b8d3f25ef72b589a55251447b93ce810a83c7f3ae8248921b4d6b2d4f1ae3e477148138aab2a5ebf10deb8542ecc910f0cd4e644e0d7c4374f5c8e283f9b105626614e46ce2302d0d3140d800138d5c1e0a008101e2c457565178dbccb492d359814c9540a15656b67e365a4e3ff815ecfcfc91690bd1cd9a649223a61850c33f455a06e3ba113cb2c11afe856975b301debe36730ef81f76119f09734f9346671823f633356faa29dcf9a311728f5e280ac19ea8343e9e75f2d51f28f3a454c72f82cc0868037fe11d1c58108a6d8754894d7350f3fae3cd9bddb40587a6b5bdfc244e17240d9cc6b7ee80359a9cbc353f92d15319c67c5b1983a586693799d1c770dbce94cf68e1151389d39947c7328a8f581e19ab0033349a19e2ff68aae66b7c8111bb00d0cd65338dc6cc01cdcd48064864ffc725cf792af5b44a1b42df72f6bf92527113a469e3d9225aa9852a5ce4f95dc320f30ec5c8d2576af634e082413215f80f43a72b540861a008a1a9441eb366a7dbd3dc309a6e18837cac74ab22c3524867cf074859782f48020c8f36e66e423b3db5b6f69750ddf453b3350f5196f24921bddfa2267f96fd98991707148f9a8964d02becf40d41f66c41be37884db314f612f501ee72f18464c978cba05d3b7c36d99bd294d18b8ee3774091fdc0390714ca9386030b4525b2aec2ac9a646f5d155ec815e64bb94db87e40c8f538ee8c0035302af55416d4508ee2201c313a97a96ec908455819d228d5732222348b775941c56db5aa50f4e6ea9b062f4c17629c6f1f6683d52dce39a706097698903ab1632b4749da68c52609adaab4be27424d8ba616e0a6040d84df3779f70b1aad07061fadd8a835912cc9539caf13a2fba8447e7823564421308e2c5ceb8a403ca00e1d96625c4b48b827e491c10422573c219350183043e52d24849a42e3c9939f7eca29bdbf6f9361bd0676defbb8014056d537bb07520cda630ff4a9f2e642a4ab64a3bc861754f6a17f5b08cf6daa4cd6864d2d7673c2dd139f7a139cbcab4f63f03b8c6e1360ff1f6c32747cb8651432d6e09428d9b30c5510b4cd3c266da46f6b1382c834e996158737ee6d2d0ca34102d1487b68fb8d746a936b25ffc7b4f25fab6be1768414e0b6df00ed9af998d90385d3cc691d9ef777d0fda5fb7037ba7f06ef7ed62eb0574896e59cd524b4c09d5398ac254be3df0f0c9891e9434ebf20158c40ae842fe8cc77c1b277c8d05bb44bf4d4aca51e24f38477678300e5b7a3420b03b6b0f2fe13016b4ac60746938d752a3767e2e3a9cba1d789168d20d73c6397c04cf8af8d469fe57d006d8048840b65f0c1421d4a68a89e1ed7441dcdba0010e71f13f8a113467c5d1b391024c3a6e75d53d3501fe8763409a8813f7a024fc6405fcf749cae15a3365483e89e85dc624c22168e6a738da7444ba75208c98d31ae98060cb6e7079b8f5457a5ea45926857b79e65f20b23123c262c32da1c919d9ddcd07a109ee43ef4b3263f077758e1b393547674a394156866302c2934f6d47b5606bb7b12f0d3878b3a962cff1759a9d7f624524a6980fab26151edd7c53b925a5026e49493da0f21a2f0c5c2b5980b578e9d6e506995aa68ffa57614d6a6cd61d24cfa94fea0c4f0bddc129a2b4388afe40d0cb49e91b35785ec36bb79ba70bd5a0b7403e4c5c42e9e13b221642f4214ef9281f44af4d8e2db91420cdda4dc9325714299c6c9f9c119b65975973f62d3c1712b5ccc7746b330fffd2eb6ac8bec1ce7cbe6943f29a2f31263e2e5536224b1be6ffac3c3912c4be199f1e47e8be15350a757d3127d135f951529c12def8f872a3474a8531c9ff8544dab84d6fb51a58dd0e2b135533cd816c338bcd056775855927d7b240a332063fafa3c480382712cdb04508f3832a65814ed550df1cc16947aa1b8f6bea5990c5e7453d75c32be19f2684bd01393c890bea47a279e065059c904a7139ff85c5c9101949f5d61d3e9f86b465ded93818877b12f00d8dbf2085eeaeecebc261b3237a0f09670c55c27392cf573b0a2cb540a17dee135e6700b4df660f840bb807c48231ca6d15ee8ebc5d7cfcd3d6ac79a9e6e17a36718ebd12c9a6ee0c21278228322d14fb43e0782cfb30ccd1046104eaf945e2837940ecd954c41f6f97cef76f97716728c4f9d653fab2553db2a490445d8499724d4da5ff127f8edf7abe57b4ad8c363d11eb02409bbdb139b1b64cd4792e728839ceafacf089344f756387ecd3d7d3d117b7facb2526e8391ee01bca159c6bada1c55ade91cf9f468146a0e3cf94ec90c07096b4468369f089338b64b2e4e636e5efac446d4ce060bd3dcd5a9f5a11ff4447797a056053050e072424d2c6f079b3e73e05ee6ad8340bdfe002574713c47e5e515d186fc17c7008afdb790b71e957c80360a0905e0ec3180eaa20e1e0eb101d6de60fccdb24d72d38ac464a82df9d2c887b11d42304aa6a12be84715a7205fe861b7315d9d265114961f558ee1c4202eefbcce2cdd249efaa67df460192d597893f268a76dc36e0d78380b6140f4b0407efca60dbebbacec9d1e35c9cfe78acf23552cb8defe302e33f9951f1af6fe9042a42c7b818ea32744350444a9207d7c1103176c4cb0c04a8e59f5aad46ec688e41cc70d92749c086571a90aa31e56899d8a15b97f63608223355330391a9da70f475c7ea64d6d870cbad7542f6983b1db07f38e23aeebdfc59fec32694508beea159ed70214979b74a1ea9a485b5af90b90e0cc96c2a07a701c4f2990024f059d0f0bd73e8a9135a0341b9fada78490f1f867cca09f080c28f78a6a706520c8a0ac9eb37e9277113332b88f0ce36af8432784b4a1773cef2d95d8bf9c4cdbbd6745004a4699db80edd9d380968f22e9b0f1849e179c2d3f79ddb8d682affbfc50108029d6e515c2c014c107c95176101827f055955e22b6f10689d878668568fa416006e8296ee05a02ed8a0852c0648ec9534a0810e2a19810ab113aaab30155c5d50c9a82bd135ec4844a04f451c093fa6f22319e6ae9f029cb8ac0bf959e15a933a708064bcf0b375eb4c156e5170442e63ea92a910721444e87f8578943fa6fa76c6ba34ece9d5c509f05c62b4bf81abe308666cf1db81b7eccb9c17889ecd0ae80051189fb4634baaa7208cf70625dc8175621192b02b57d3d0647ba51a01a217d6ae0f07bcda8f9e4e9e57e32d0d97c82f30235cf3a5a992792b2237e98bb746a322139225c309b8487447bfe49369b6ea10771f71db08e0898a37f6ee8100d29b994236d0af9519cfcf00ef56799243dd67ba10e67484164a4ead934bf7858142bb4e7084bc62411eca5a02052579503fb65ed789fe3151a729573bfbbce98d158f104e95cfc2090c51b61699ccb0da016b25b35f2ce91ee48bcb4e4af7e67c3015e2a128b371917c8d933823160b4d6631e331f3c614eee307e4fe11b1521fb30dc02109e1076c54527f653d66f26963149e2636acd5f85e8f1f550c58f941639fb5ad19e55cf24d97622d5c7716d54dda57bdd3c0281d72a87f36fa4dba4eec3fda49080771e6ed50e81c71746d90d8aad5afcf8077db2cd880cc430a9d1157810928f853bac69bed32e864e339f0618dd89de8eed031b6d363ba0fdc490d500c9373745b4daa03b47a67280b7ce4cd193c26c329b3cc73446d930814d3485e2104a2b2cabce557d8231d3c12843625969ab97bc5e8b532a82b33825a92b88fc5151d1d738eceecdde0016e05edc10ea25c328817e58f75a1798e789cc04caf3c085972ed6b61859f6a1da32c25c453b5e88a97708abab468fe8637a0404995162b53a422bb291864d9372e634ba78092323ee0fa0c3ab86c7172f240c075ab2c0f8bfebe780a0c5166f31778f77baead48e56fdf4a9ccbf899bb08988bcf465f3d28be6473a96f8e1c9c04514a471250b193e6a04af95b0a89825a91043a42f352bc3e426813b6c001192012d0d0b4c9a9e2168523e0331cc70f39216feae6367277e452a73258a9888aefc805e93d8eb331fa5b9b7c3dd75ab512412497799cb1315dcfd8f06b6dc6150aa77baa7fabc30a1e3a03bf25d42c2294856353bf75f279eccbc6d533dc661efdc6d7e4ef2422a45164b0cd83cc0893b436b5e9c8cdee0d1c525ed7481b6f9320564bf74aa27c2ca0d6d80373e9af65833846b24cc2261fbc99b85a1d0d55cb40969700ecb8aeea8decf14d172597e81809cdd0878ca927f28f468281c2f12b8ad34a26fbe7998a1a2f153807af18c09a0064c435b2c680baf25e247641f20e430c65f27cb28a0cedbe6aa2ecad238053c58bd50154ed883fd499d923abb498ecc09f0ef5537ef8bfcd530d82538a997a9574081e1305d8023205d33b2014bdd58f5281439a911fd38bb3b9c80ba6769a9b124811da8e32208fa569e53558105919ba5519ec2428d7ee13aeca6c25aad8dba11002eac8e9df3f051c46a9be2d463ccd6ce2753fc2eec5fb972861c812936db85f32c60ffa66a08fbdb6cf63b00bda9a2873a287158163d31bb0543d3e30c6ef65f77d90e58cf59698a133ef0ef5e06781c9b54e55ea54cb47ba2254e158220fb116a530ba7ed964945d014b715a5e21cc278afcb2976781f6285a392699fc53d8506958b7fcbe43eab4e87a3e278b1f4c4b3e8c5b265a4a8b5b5ca3cc2f5194bb7f1a1fb4ca8f122048a6a4c794a9cde1243864b9d0205dee58ee03146449fce4314f7adfe7a31462c481211729cf4e790bd09a9781009661b2f28d2dd19f2a857395896ea4c79c4d1c5a5018e5ab93b7786eec3e401db47c989944e3d2b3a9042ad2ee66973c06fe0bae4bd65d58592f1be36a19db7f1fc5efb972e1f441afa929336809a8c44a1fbe8b9334c8f5ffdba7d286c9d2cb860f002d33ddd6fea3d631b4fd8c3a6465033314d01d8a094fedb240772c0d0c16e4440750b1bbbefe7299747d85af4e65a8b2c26838744fa36a65c38d4f68131dd789f744b80890623302aba8858445aec25934a137d06c09dd19497a12bbaa779aa6f6a4290298f428a1c8a21d07f5c89748e67fd97f47b472c6f2eb59f92bffffe9ef9123a11c1b256a00288d2016dbfcc938c5c04c0ac5015d764abef41957607e011fa5662da1d8e159d97d84500e4dea912dd79ee19a619ec266df740130bbf6257a062bd218ae1d7ddfe84aa62861d7cedb9656ab65b336901d1a50e599487c7db5d587241e44124335aafe06050fb34020b35e3d951c44499ff7584733f382bb16b9f45437e6a0b08448a36f15e8e8123075f1345071c83a7ac5c4fa3e8c0cd0782e886359148c2cf24e1cd8b70d55e1ac4421ab094c3b43904f09da6b44927584fa6dde238074f56a09f4f111aa023a77f1abc235e9c12a07ea8af82c3da1a67707b05cfb3faa4e9040253026aa71d2cb0e4bb5e88e47de4fd8f00724244c88dc3cd571b2cf3e1fab6e2c8f2c4604b93fbec37a99ac49a43e5be05c47a6abaaa92a0ea0073889bbea0c1d260e0d885391be1e1139dc9b9aaefb83bdf810a2de052f5ea769f62898951704f60b815b76a07905b2f46c9580135cf148a9fa538d4190355918d82ad391e3715132d8b9feac729285f00a170787bd9c0440ce03d048f695c201ef90b113458d62cc097ed1cac41918f143526402090d4b3013f10f08a6fcd53ed9f4999e92336471f96d526e5b13c89322c9d12546451f3548a2086f27b46aa550cf6aedf0ee4f0b181129688ad558e67a529cac0181a540b8899b0e52c8cfa0f1c8a3c0270a92ab814302e07a9ec6a5cd3762aa88b2980cfc990e7a3124bb9fe9e26b4ab24a09ee0ba16d58ec9549f65bd64582dbf6ebc85a29c34752ad20d7dde8225ad3e53841c062e16053471af867759287d7560d9f99e5f2bffc0356005133d5592db14ddc7f4227513839365d4fe39714217f0baa67b990be02c3833ddb268c748e987fce17a17ee0c034234a0b0a49c9f0de142843c5ac22a6a7509efdc2309fd710817c22921844fe7aeca56791f9ac35fd7ba471cb54386802caee642c1370c453dc93231f491f85c7d6a86f1c0ff7fd5843c26f580d72788a3b56b621197e7cbf237e617b5889546dcecb3188e01cf9eb493a79836cafecbe84af36bfc2d2f7f662183d8b809e7d2196732043290fb5844db7380466a1d4f4e96c11407805ef94437b2977266ac3bcab49b79bd4e193b64df9c6f2b14aa330342b876193629cc2004adfee9e54357be54c36f036b1938bdb2a3eb157c965ab46c3a477a8778ab1c817b40df11dd001518c4dbdb1143828499ebe79743eee0bf3ad90d515f41462fcd77ecc0077f3b5f18baa65f0d87c3f75b252b422164a391a6304f6a28eabfba4f312d8b797b3dc60aa1bbb3f12d799138da9150824b561e5fc97260933d1253fabb336dd3546992daadfb0ab79ce38a76a0cb2991b8e99ec127231736e8adf3e562f3c51b2ab0951943a1b0acaab8a776f8c1b311ee044a7038bdc7eee0df73c23fd0e9c777bdcfb7768e276ccc22b8640c1c29fcb521be96a5b6d6e3bdd4973a126ffd8c9337a85f59773800264bd14cd00f987a98875ac7be84619227f30f178e401b04dd727f6c1240d89dc8e7d01e5861c86d7881851d1970ebf252eee9ef078bd2bea31eed08c3f6031ec1a7b240a6d649f1d5d15888a4fb4d7507e709b81cf61b9e94d367eb81ac57eb866d52df3bdb76474a6d86f6f6275eb327f5ad91a0bcc041b6bc8ec70303b5596c347d85ab2c2360bba5e2f9a3df8cba7d5353c02348c6b86ef71a853b5f4e452d5e2a5f6498aa07c80b56b41b56f982799ff67a2a758ceb1dcff750c5d1097962762aeeb19e7ca7f43ee4f132329811849a1c05101829622603a1e6d048ae95492d4fbf57aac1e41f796008601ea5b834251f19e311ba8e3211982bf0cfaf2a551b8f0b33eb7aa898aaad36dd51b76d838b53441971ee56c3b97be94e1981847b0c689386fec4d3ef984a828771270651e2b6f46b9978dfc2456b5932b6a28768d83da41c3a910f07138b51ee7c38484d20e28c68f5010cf8edc8d7f0f70610a17d3702fa9892f97ee55bc70ab88753b0307c5e6a5bde8012573ecc7c5982e5d0ab15d3d6c85f1a98097cd933a4dff654a4168d1fcc56987736986e28c566d69bcc4b8fe52844aaf85e4fbb7b89d3a790132639f6047c25f77cd874b76899abf7ac470602e7ddac93f3310ab50f8b1b06b8d18f08da4b77f81bf17fc352930451b21d21953cdd63077fb6e9625cc98a1cdde1e3c6f40e69a8249a5bcd1b75be414e4752b9cb33b4e8839c3477c7b6b11bdfd269e4c51654414b2a6a389a83c7f4723b148f7c02b6ca7a55dbb6c9ea45f0a2ed66ad743360e1ace72e6920743cc8c1a9339ab0c0fe554eb75229152fc4b91c456faf5181d00733dc97518be5cddf3402f5a1c948d3b712842707203ea53db18e66fe38bb57c43b7e917f350ca585d3a82505222a917922e43d93949320cc588236544f074b4f2e0532c1094e13271d0650629e5d48554849e4d947616afb9c212d340a68f133bdd40fe92ad31b1e5920bf26d41f9d1a0403f51fc5ec589862c4d8702df45d49d92fca53a58be88bd9aaf84fe74e697dc79b3363e505c45eff5138c7a9783ca6e05d706d88c0eb40af9bad64caecea04b74789a99d031f6a4231968214a66c53963364095c5f9585dfad2ab68464b8f0a062fdae656acdce71f8b74692033493ac41ddd075e8e046d908edf8ecc3895e4138cf60db10d1f8ce1f563c8615f01683f0c03b1ea942189f5c3c29c81cf5c1e32300dc7c59bbbf99b08f3980f81323f36034603142b719ea4aad0674432914dec3e8775d855cbfa7e873a59ff2cd9878d856f56ec7570950e82d36bb374f107178e0cc265714e6cc07e02649b06d60fbd4dea496e843181379a1822e0926c9458ad6a5f94f0d46293fc59bf60fdd3906e9e6c587c1c76e485d011c8b79ef84d097339f327161eafa658230b207da1628572dd943b4810f039f679629361a9e9a524a32fa02d8bf90cce24ca65a05b120d58c5f7d3a74c2fa40d490756a4a74ffc6f52e8b4f4e931f4fbf78284f091fef2fb180897b5674837e7051173f25a9e2da11d544175db1adbd59d1518817230a414a8f3c29e86f81f8e22fd8f523ed28595cd571404a773641ca9e583d3f28169203658592b2f69cff7900d08ae01b2bcff58535f4c04ca0f1286c8895b492a08f5d64f321f87baa1a2cd89c368e44f03a00749eae6c374a62080d2e704e315d54d70a0e9050edaa6ba89f3bb7e47c160bdf1716075739f228fcfb3a7b4687543e817ee0436b8ce8b3fdb07abdaf0ea667d3776b9d630ab6b67e4e37fff223f708c90e42a507b9ca7ffd3354bd9bdec2086d9994b90e79422c302929b524c2da11363c2de2f340eee1934c51d99b034e6290ca7e41dd2b5ae8e5526c5e030a0bfbf94dde4e9e1d8037f6bd5383b23d2a6ed306ee2408cd161f3418f229aa514c2734e4ceb9643073dc7e4223fe4c51fec3916f8350bf7f55a8525e0616e7eed9d2508936e5278319ce082f25889ee64a391de97a8ffbed140719356c71517f385dbede5567e6c5dbf10ad3ea0118e3a415fa1eec5765594b2cebe618629fd4a836f1267c368bfa00c0e990f97d753786d40e941015ed8e4bcdf2d4a38aa4075bbe86c3b8edb01854f6af058734027e6274c952acafcb30016b6551209a6f58480ab957950e8beabc847e1b18deabb78fdd137fb4265fe29bbdb0cbdcb91b59bd053ee64c3a68f94bc4bf350894e583dad56a2148585a4c06251c0e811f03badbdabd7a07e1c9e90f82e18b171407de9674cf2aef6977a11c373088095a6005329b0381931a6604ac5be5dd97e927639489da4b19c0fe26c092464ab56ed72b9b61e055433c1a4611331457c3f71d829f4a61220522e919860874381f6750244c649aba84e98d398242995e91fedcf72bc8852828a0086c10016a8b93a91e95e7e9b9abff83d20704b4a823a10a67a3797c2138ea8f3eb344a9fd3f00f806322b8433445de91ab2cb0e3e720e99b11c558d58eeb2f20d18d901498d30cf84c2e2b68d88d7f21062a284bbec816f2316a32124f2f2c1fbbac3826272ffee489381309cb3616d46e38c44c0ef1c571fc612712d659641f4a5cb1faa7add02323606b16607e4c0b70d4c9b1b0081fe65467adae3838a5933d6ffa57b8357e9d0dfdfeb1c31beea60f2850b16df3da89f07bece6abc2b8e423bea3a0798cf1df1c5d9fa4f9b11a7ba78b4886d8fa9d39a788dda743ca7fdde32001f0def39fd9a4823885b08d41897703b5feb52bec137c4a069d117fc541f2249259fe7279c3d21ca0c1c3d5927fe9ddc59ecdee7aa24845273d4dc927a5cf0d5dad4db9815f6c803909e7178564dcc5e586baaa2c3fb0e0b29b5c29e0150ba13735bf9151442c7f2d8ba46ef6be3df1d844e8462be0ed23cac185d0ed9a2c26b85f388481aadd1477d6c7e83ca1748c9b01cbdbfbae0b6bba23011bfce12e1a98ee0a0406415d2822dd7f705d529cf0cd05f7ffb990184019c429b9457ab3fc37cac44c0171dd129f258bab9f65b912819110073e6a83e91c011581f9034f7ba0ca8396253fd43115d6dabde9c583b9c2ee8a578d6958e7bc1401d36efb116457caf70d08ec847f60744b77276e45e3ab0eaa3b6383d917fae24df8051afaa74a809e66219efe41b6c3b3ddc58da7e0e41522fc4c3213c002f3d2f962e16cd171573c6867ec13b74ef566354c19b90130bc810f6f9a9e6e5bf7748dfdd151268865dda55a6447a51423f79f01ea3a52072173721b2d9a6c4374ffb3e3aeecfe9e49894d27b779cbb951ee8e956da0eebd01613fe14fce98e630de7ef843cf6ff9b8b1eb6ef7dcc3c7e5b577affcf2ea98697857aac3409de0a3adc62afcae690ea00a6435e98f5b6826924aa9fc0531893c504e72b8130e013f4862fb04e48c1b72028741e1b405138ba09268dfe4f221d4b13be1d1dc94462f14fcad866bad068663d6401905f8941f5c1f36b9c8085febf658fe2d6b8a1b3cbd2ac81d0104e6a04604abbe0cec1881db04cd2edbc2818da1f8e1be6800042664a6f1f8bddd61e4288e717bc916c67f409580591e5c9f2cb1eadb1e2164c9fe95af0d0779247bfcae6a94bc89bb31b9e0e2baba8c8a1cebd19468f531035fd8e133a48a1417aa785196e1be439ef82c31443f7edc098c882f8975c35a6c996b8e72bbbed6aaadae67843aa9a981aeef60129e8374b4b7f9c4096320a21a6bc93393ecc74486d3409ab596cb842ba2efea0530c38378d7d82924abe55b7a8d17f26e56cbedef54ec6dbad636bbb6f1ca041f70f3b24757edae96d1b0b568e1fad67167452855c7dabc1af51ba547b663d081a0db878a352fe219d209996478f3fa4a57f7ae903999cde6641897c465c29253d482d63912ba8ccf1a23d9933c912e46c69327d5defea8f84c641048883536939881afb896a568eff0c1afe4c93922b917e1214b532f275c41c2c019596ea510deef15a9667870a28f4ba988d6bd14ba244c7ba127d95387418c8c7a309ed8a25d4c81af407f31b1b1f50f4e4ac5dbb60ae3229d914607355061f52468d1202aeac60bcfc9a40546724ad25343bf9458be56d6e1e221e9520dc027e12e27d867631aeb43a2fa48bef52a55193a2a1aaf4aa7776033f3a5b3390a3761625e1b7a58a0a41a2ebdcf8fff391a28f04d3441fa94aca8eced32f197e527eaf18d45f3d701d5516cc272ca22c00b34f6b392153244a0b8676224ca7efe6d5c677ad9fd0ba2f641834405acd177ee0d768a590c8685ec403884cae827ea4476f637dd0929cb5d4253cd63c1c8b3f02e29b13dd76de37e449512d9d15607f99ed426aca1bef2196ad57c8497901de4d8b5a6dd104c4bf30964400104f2264f1cac2e4aeca59cc0af82898d1f56fa56fd64ef0f2ebda7591d10d192180b0334b136f6914d53fbb4fb6ec0ac35dc89cb14b08232757de54650ff2246768b1ac720068fdb333f2a70aa9f88d6c092c681715a3707c6614c335b84807f85d988f66582f933e3a998a9ccd46208246066845efc69e299fec7b2eec6d3ff54c7f28231086a1219e943f2a05d19670ca5746fba52909624ef5a895a9909291db5567466b21bad63f14f6ffbdcaad453a31a47df26455c188b964cd305c37edfad6596fd86371539110ef48c257d18ba396fa5b055266a4d8df99e0be77b169d8b122b59b064224ecd87e616088130eecff54ff3c7baae45e3085073288b16667504dcac102d5428a48bf961f0a560fe39bf75c779be2c223873938c9175759f07c2a4a11f530bc1360cc3ec78f4861a07234074fe203011e6be13cda26eddb63c54564071964985cdf3e114a06272959afc83ccf29bd93d5453da50687e9073d89038fa1840fc834b9370c7622e363becd34e8e3c304f14e7020f0845faa454f439e1ea618f524ecbab4c1bcba36da08a07fca10f3228352e7159e231a8521eb7f2d2583f3579bce8c933dfa7c4ead0b83790c2314536b17531d3af118af9305324d95e2580051a755f2959dc7e79c1e93dc244fb32f0fc85f98ac2e2dde1168d8c89b62d8eb0b4a2d8f29843129b6a198cfa83167b1a121c13248e76950ac23ebed171cca0dc1b3f08d423dffbd9596f43f2b4f37f434a7d09dabd2892ddff373ae56ec0977bdb27b7512c7b0c8ec6d0bf02be2a798217acef3e70a4ebad60ace2cd1581f81c466ec39344c0cdfd089948521cbe98c119238b007e188a0ba07c3bc48923f96085d8f0d100b06abdfa7c806964dd86c7d68e423817fac0f8a40b42cc1a8098745053037a8a87fae554b9b495d3ad6c6c6a6b95f08089b25fc27cc24ea9dbaa0658aa02b9434f19171c71c36d5360d102b92e40faafee2072ab2200e759bfbf55acabce63c02af0c992120d6adb270fc74be0920da206af78241be5de9bcbedcbe2c5e0e7611552e048ccefc68c7c61acbc6f9418c5b0a0c43c4483a39e74b518c064abd68891009116b6036d54b35dbb7ba339c3f05373fa92584ada606f9fd63992b64e31035d60cd7ee89bdb506b77a3be0b33d3e636c6215509a8e3eab1f70fb654c3cdeaa9ab96fad551cb544b63b748b2b81516176264b6b107f9a378cb1f1649d166b397b1316c86a67f0e9b8f048c9ef8d4d7e3d18e4502922fb5c7cfd6a6706a5406eb6f16b77b7f223058619b237c06343a3efba81055c8a968736c6438e9637a5d229532cf16cf225dc3bffa834af53b086366796f5119d93d31b79c56fc3f654aeed3fc3be25cd135cccbe532fb5f736bec28d4c2c661123bd32c672e45f93d86e3e574c830fe5d733bba6216ff43cfdbce84e5928f9ca122010cf592fcae9225599f4ef65a4ecfcf164748dddf1f25c1f9c47cab9d284960dbc3b59d653a3c701f196ea89e5d9e8805fa910f79492384e03f18ffee82cdc1f8700d82fbf81c5823bc007b05ab3f1b887f0a19732e70f182cf0c1ae462296d7fd325ec674d45d0402c9df234914ee19f92515dc099106fd54079fbf97978cedd367710c7bfd0b4dcfc3aad26e28f7ad98846a5f795cf414979c2e4000c3c4be8ef1979f563039aa4c025f3411235a1a40ffeab5fbc74ca5d86a48728415b8670d904bd271e4502df18fe1f312e520f396549e31222eea37159bca0fdc39a94a4fb14fcdfe4d95ccc7510d39bab651dbf2ce7c6ecfd197f1461d5eb9ef8f526799dbd5dca481415dba95c3082879aef2502bc001ef5042c4b6fc6e11e249e1eb0a9cfadb65ba10df197be6c5fa819df50bd53cabd8bfdd571664f8a033f9d4d2f026fa88550d046506a98e0e623ef253a5d127dcd1dec154009c21bba47b5f0a260ef1f8183438a7ea6af079333af578298c5ce5d865661db039a5b6c86349e7199cf385635e622088c1dc1f362afd468ba8c3df937fa40d7df84b286c3f2ebbebfce5c609793470016b5c820ebbfbac35b0ccc5869eaa1575c2210d503a288be9d539866fcc1dd10c44a736ff4462afab24363a191d6ed0dbeec63e62b1a23e686864dee173b2da75caf9a6c31556df39168be927e306634d598cdfc315158e07b17a9b7626ac0123cc9523b33ad023623a1803508e56908ee4bfc9620b200ff02a279d1b26698ff29f6b27902eb356a386114d4189e9bc5b5330d3eb0ff44b0a9e637c874de1703a71f085db409c1e2639ef9cdb8e75a8630cb84573bb4afa89cab891040809e0e2fb968a721ac5fbd49dae3bc742d8adc65a0e99fdb876c15a8ca34582ad20671639ce24bc27ecf56359f864e756a346d368c70b8e453d86502ff9d34d514de3e4688a87a815b9d18c773b4f56cd6a5cc6d991bac9dbdcc38707837a1af55bf859e4c3a34a2289aec36638aa66320d88ebda5b5ee03f68164b446d65bb77295e33f8b46321f418a4873f3eb15bd624a5394d1a795bb740891f9fdfa102dfef5862a40aaff8f83757e1059b4c8a63184170aa9a21fff460387a95400a9a030253646a9bdaa74fa262fdd749bdafbbc1a05ff876b99ea020166a06183bf0ad450c4a203774a247208301484fb0f185c151f434c3a003dda6c5b48ead202eb946a4cf3563c19e960b9e6e658b8a1bb3b4035bfa07a421c415fe4f13d214c2e4d9a42c29948fee728813d71cbaa14c54151ca0383bc0890c8def65d8076197af583d9b13e706f53c94bb2033735028fd5fa5be1c58a81edd0e9750612c1b63d9933c606ed0f9443439f9abe84d0c72ab8a37ba3db74a8fd6f621fd43759577013744b8274d4e31bcb24b331931dbbf7b5d78e61d8bd765dbf307ecde666bb689f77e462b806c1818c07a15f702ad56678c5d9bab25ca86ddb62212ae480e6ca76c2617964f20b80082be7a525d3567c8f44ce0addff3458e7e71d68f6c8fe2b422883b3f97dd1c62b401221de07b7aa21cb348a1080d6cec04abea4a9e88e709a27fdcaa626b88e3bc1530e44aa5e0b79ad0068949accbaf7b84c1e204691ff00dd076e8a7bb5e27113e1a99430be1f0e412b33af76c2f7462c988e6e8f17ec16dfe11b7f1d905ab1347ff4e603685722ae06d4dcc8d1cc828fecaf4145600e1e42886e944cec5c82dba37ba3e71ba9a6ebec22accaf0819295671da427f807b3bac1ffacdee0a9f7bf9c63c40ae28064999f210883e7d1ee28ee092bcb4d8f7682e73d183e7059d6b223c2598b59e988c27a671dfcd451b20333611920443225409491169808f899e9e487cf1c612138a0f74c6bd15566b7a60f97a7fea05f0e71a21ec7038368c22375910779231d581204c1723318c0718855de1a4f3470d76064a252befdf8ac74ad74c460bd81d77ba45adcadf91314c138087f85a5ddd84722c3c48abbdd97cfb5d8cf8b1e2c79cd364afa4d86ee3334a0f9d6d564d84f82104898d86c140c8b3427d4b37d00cb99440a0c39d2f9df9e5c372af68a258fc15cb21e2fa68badcbcab73ae4de136e4d5dc42e4d473c6c18432d081b176d94ebdf5876207dab64075c140b8e151c31bb182065f1a0c11cbb0989898fd265c3c089c7c5e55d79cc8ee182201abd0dc2a90571cc6a7d7118a2148b58634144cf55745e4a2634aa31c1246798590bb4df9c9235d46b024bd093e2bdb631c3a95dc923426c7ec55110df3cebff4b7d9813c68c03a6cabe499a09bbd20ea2b1fde29d9edeb028cc58d41b3729b681a72126bb8d463169f3216aa3551e0b9b6d912e0fe1c24c511bf282191c9dc6e5ed3fb2fae2af2269bd82781161836a3cf9a096061b9973ad3e7418b58981f81f75c83ce68dadfbef0be49b2cc889550568e0a08d5bca4f87b4703056ed6ffcf9ac4c5f5ec4115eae5eed2facb133d37f1cf00e920fb32f611eb30a70ab98fbbeda26f3c276396765df3e76bce729db5d39cea31aeaec07e4f85a811d051063a5678f5b820852163a24a7f9e2d1a70ddb1c064cde0f338250fde7c182aa771c9df41f43e4583bbe0c03da16407bdfe44dacfafc96dad7263c7068bb61a62afad8801d7cc325b8968fd8db6f24489fb1b5a379bf229c8a31929eaafd61b90433e049bc8d5dbdd4460a1a629dbf2d403351f3e0ff3507015aa2c7df0700278085d6401085a2bcac138965bf08232ec6145ba3dfae8cc3386f295859c69a69db9ccbd4e1095c55ab63f09df9f221c2420db062be8eda5b318f03207456c64ae81e606b9cca68024649ea078ff492bb53325fe18dffd1486062c0c6c48c436b3630efcc3955ebe04cc0a4dc747a522f8d0633fd22ee9c66224b3062afdbc0d0f69257a98d610ca8b73cd0ff4541d11399c40e92f92bc64ff9cb687cb19d8809f3c623ea929dccceb8d390a9f7e31ddcbd9d95c7b6072f505af324b03f49133d7a1b0300901983e75069d0e6d03b67195622fab45b4f03fe79511be28735de84a97323f8dbceebfa2bdf5d1a4879f52641168c2a4d80d8ca7549e8424d23443b05605b42ec72901c510d0c1b67c6de120b0a5822b7103801d98364968c84ff610eb8783c114ce1c4f7e0f94a41e1d11c99f7c3251c2686aba6e53c4f73a178f5c55727a2d313220f127755508e75a2f0dfa5096ff4301e351aee19f7b9a6e8c7e38ac5587dd41a4c0d062c34c83ac73e81baabdfb7b3ccfc0858bf57c1bf51fcfed866b9b71b5a30fedf1375948624134eb95c5244ffa2b9671576796d835e0280f8671caa11b3212e36300002fcb3e06fc47ad15ab45eb0a093092998d67b5c6f0630a00593832b5c5b6df8d0ffc89863e16b1196825b10ce918244c93b6e851c16960b0b3bc608f8f7cac81109297d18e9428808575c435b47231b0d600e5deff95bc7d3994bc8e771d8f8ad02c9cd5083ac97c0d55bf71db81ce47718c408c4db548fd75061e339cceb0636862ce662b9b3dc5f82329ed15f669c4057d620a5fb7a5809625f9b61ba4fc157ff7c8e849ca202529b31cae54c01d95782a84d22632846394008f2cbb270099d5ff0a8bf4608565dd4060d3f12d0baba4e31e767d6dd4d6f42faf403caecabed855322033ca84faee5261581acbd7db7078aef2d2e45d7b7c14b186fba0c91665125a561f763fcc7f21c4ed144d7ad8face4ea9123c7153bd31fcbb00cc1c5415e132fea7cc0cf41f0e8eb107832d95fae2bd1850b04c6c16982704f0fbcb0299d2912cc34a189bb319b250ae6aa0c0b36d042cc6f996057d5ab4cf8a7de02821f3b280ce5c1dbf296644c7ed51b1f6a6dd7e67599ca9c7ccb97ca8b81318a4126602da9798ae4d973d497f5248ebceaea98d45cea824f1b43eb9e98b34ad72fc8ff831c0fc19e01d3a7a2ecdf4bac1bc8073c91dcd0e7e75cb2bc33d6fab4430946be300033357bd7810d658ffe949013a4c269846176fda937136d1cd6b50431323eddbbe857a1834d25bb16b6cb8fbc2b24f6694ee5b5aec36e194ac68d7575e83009cb73132e3e3585ed503c06041b18b88dc69bfcd9eac5305f3dd1ceeb771fa9e1020a22ac9afe27a898cb25fc2d9e45282de47e8786ada06279f17d10418446b13d1e09e241406b66362c164073c26c3f2c9d5521b06c88860e13f1fcea89e35178aa3c059e9fdccb8eac81439658a3a139dea13cc7106f980b293a154166ea6fe0856690f678bbd958a11138331af7af0b7f8bbd229905ad2a97f6439c1b189050c70fbe98757d79dabfd1d23373a2afe730abcdd4bb07e271d747dd948c0162bf9fbce3b20662da204a114a5b4d0de595d226901b670a6dc2f8623690e5b0108bd3f3f5158c7cee64705762d5b4d31b51f532d67dc8f99691c7b1a6ddc4b0361cdc56f3092394312bfb31f81a04254bd36d573ad098afe7e581fde83322326f640fd74212f65811bcfdda1bc3e0759b8ce49468432da5c15a9e17beaf005856e959501290d5dad6773f6dfe33219ab85d481b8e016e529aaacf3c37834a23cd1c425618d2370add2077c152e2415f5c031f38d6187cb8ea32e60b0d10e5116abb105f8c878e7403fdf3cb1fbd946485a941308c181fca1578c41ac9f62b957da9cf53d01eedb442615c25ea5b340f069fb9320537f1aad4a8f4400586522ad2cb994cef97820ff4f4b4740ca8a1a3ff7610ce48961c4f42a2fb3a8037ccb684a0b334ab5ea8396379062da05907ea68b5c984379cd02a7c8f6946c98676e5014bbea547cf94e18a80800146a13e7273589f071485c80613bf893910d7848e1b01aa9cd00147a4f541beaca87f2dc798fdbcc2a4b6d37c4248a42313860e0bb4c39e4177a2ba77e3c8dd872a0cdb294939d1b5590f152b6815b1f3339e0be74e18ae68fe111b84a322ae2c15404927101ea6bae5761f7c67ca31621295b2942ff76c77fd74a9c33921c97918c221b35ef14325c5329cded8c455d492f8bf3757dca5f8ebf3f4ba7d5627f1aaa0f83b5920b8c346dea130172ce7c5ba9aab83053d58db56c780eff7ebdeb6b8b0920cfb120531c172081bb1d13607a291e1b0568d4c2906343a3df779c848ae9843267617c90ea381dcce14bd5edc5a533060223722d98684afa8444da1f3e7cde96c91970db1e49439b904a411e3c709b2baeec284ead8e84c0e8d35eba6747a618b70468b7af54aaea0b2b23eff9789d9b136eb38387c56089bc246331af29e41318c67614a8359230071cf86cd8328287326c2c89df590b69794f94be309d98173b7b379a6644e384ed6b806df55f7ac8765533ee0683bb1a367532caa03e8806b8a060b1f5db49a7efffd372e13a6dc43966a9e0f908ae20264f2509efa612738d76a94fea6edc810554bca2dc0a6928e65f26e14b039419e4a963aa81c5d322d70ee6864a2c882752beb5bdc98210e1f1b0789067c8602a7e0cd4f459429b53c676b29c82e7a748d37ac6c1a13e051e8ca30503eeca4d52d7c3e56c71fde11ebae95db92d0b6870b7b5caf226816d2005f19c5cd99f3db0fdf59cf77f52b8dacc37d6724e72073e38f6483294bf33c8f774d8b8d34c6b40b7d5b6da7c65d1b83ed172b3983848fc42d64e5727b331b296003b36979e1574e7e9198ea0b86411666cf94d020f14c4a9290dbb124ea4894eb1dcfc2c8a8a341fb8d918924e2c3c65b1d04f2675e7586fe13c94cba7a334019c92e8938de6911b11858d8708009de875552570b0c226aed8a91ac87b680353e1e0f2f38ade615828c337ec202403546e50f6269850b5da00b208eb098ab3190ceefec36d08b0f7b4c597e751c6655fce3508f703cd7d3b2c804160e0e919e4d7781abb541dfdf3ee76b32588e543cce6fee8221ff2edcd52aee743d5d110d4f6b6742f2ad186faf951b273836b453409caba6a719e4d5dbdf2fa6128b1cd26abffddd7d68837e33eb8994019e83f52c131fb4ecda3222a2779a846fa6eb6bb8abdd9891f821e8243704e4dde9b9d994b616a3ffbe47e9a01db2631b3a609584e44bc20e53e3de40b9e201aee0d094cdacd1de6ae2473f19e62e46cad6320da291b0f5e00fb23b7da87e07bbd05d248c5eb5b4ae7caba72279a32c7d4c251fe5d360f5743233d12c0463304d02d1a6d8bdcdc03bb365a9bc79accb87713a585e97893f7e9a170ba515aac4a5d92610201b57fce897c1d5732cb85ca8e82eb414e22df09875ddf5238158083513c4c66dbdfab47bbc5808199a4506f949c79993667b943d18e054fa8a965b973c9ccdc989e541e3c5134d821751f982dfe39c90d529fc240e299aa093fd78ef60d5cf80dad824237adc01ed7da26a3d7a824a1ecaa41e4b478fb71bb8d5bd20047580b24bb29817d7b8d27a40893ddaa255064974bd950afca4a6e117c87dc0ebe53bd583a1af19ec3e1534177a2ee6822006e0117fc0635d63d6b125bacb0f97e06bf7ed300891151ced49f9b04bf1e6c5d77e27bd9c2a86af1ee68c37cfbee38b33a3c57e3e609ae3c02fc4c29d41223c6a5edc0edce3e30033a01e2be6b70003612ef9119cb47ee1cf197fe54d4b85d6d17eb33c94056069cfa249d5ed3e0ee4caa8b351ce886efa6c7e526ef6dec8559ecae429ef62a827103157fdbb4a41692c46d78600f6ad5e772939d9c1f62d15a547375315d582dbb0cc9d22203846d209b6963746ded34925849ef4881c2876bd9face1d1a3f9a6072a15a7ef51f295e3c2f64f38c72d68f77557eae1fe6c77af04e9f8190ea02012ababa7ea0e1745e9585603ad979ffbe5caf3a4dbd4d79c389daf66bd1a1dbf985ca86f477989ca4f243f8de23fdd15f08d8ff1f8cd416cac0e4cb5382407881313a2bb9390b6ec9f855eb862e03985d5a36eec9469461379e002442296a2a3e577ce98cbb70850c8eec45c371e261f68da2e387150e4886450e6577a9e8b4435b9e8b56702b35f55291ba7b471fb6bef9a2e64d8fdb98b30f5497524e1780a0b68d1fc4a16f5e472739106f122b91178342299daf2b1bd480d10c8768437204f5595cd669fcea0f445d1fd7e12c61cf653e900b489d13f56d669e83e914fcd7b5e8e818321f9aafb03071dc1d9992d8d7f0db76d8139e9ea97e77aff18d31b706b4bafcdea61685023754a9620125ec0271f191c5b2eabcdd89993c35ec33ae8efdb5316681ab1e7bc3ee8337bc32865854486e15035e20a38bcdebfc91857b2a344f3a111ae649b43014cb84a03a5ea134d9491457f793dd7e839da73c1a05f1a67d18fcdbcbe9ff2f2bb176624734d94ea74bebe777d5ac8a41b2694a3407b011a4b42fa6e76fa2565e70c2e8cfefde6bcbf15d27891bf891dd0af75c0965346a582d8ca8ff56113dbbc4bc3c295fefb4ac4fa1247103da29ff7413b3a7aba865f17d1663dd5013af0d909ea3447385ecb7c79c90de804871349947c4f90907937907734f470c62d4e46a46678914005cd6b64377486b3d0e2292b3252f66a4e99f9428f5a65b3dacf04240d0fb7024c6000b23f14de67e162deec4a3a10f01e85e75b98e58842e5504e2318e8de7283b757fceac9d8c2b85a788e84b0ed1da4e34447b27ad2ef1023e61fff4f242e20be8802f17b7ebfa5ab8fd42dbea1cd45da74a0adf160686c2c5509d30f1c61ed5e1406242e7eda4d9a2ada8eb8a6035eccdfce7535f72bd93543351cc2a9e6fef6881ecee82312104cf978ef2c669039e05ecf4d4b6f4aab01092692303011f7360dc496576968cfb9c3f25eac353556c5900246825ea0213dd42c634dd11168f96afa4017c2cc89088259916161531ca7a04e222165da2edf4149755d51f068a6fea9c31d73ef29372938a8212182d57ee680941c3e985ecf65437562e6130ce552e2ea992032308533059f11ddd2d001132d2026617821c4a128aa914fc6cace5b258c814dd63efce7819223142758e7e238c4ec5a37c84055cf599196d41bc7a69da03d9934be3f3140d6c4705e8f1038a0838c2fecc536e741e3d44cfc9ee662be83fe8041f6cc1156255d9557ab09c464b29d967244410b5f0506617f80d407b22ef8a583773f821400ef9f12b9181ad9a9ac34e5cf1eef7923b0783eea60bd67db9a8cefd77bd742744b9280f478ce330bcf7aa4921b61bb62692dc0b911a42287b5c7977069502840e0d4fec573f3cd5e1cbc95079d0834883a7b88aa68123bf854abeae7dfc27f12e611ab59a92f60fe0395d070eea61728e21f430400f53edf426b11624d4ea96a5d453951f44716bb5f8b510416fd420f6a6ec3a4d71aec33d448457902da49452c90b582588f913a326ed07064aa901a2095eb4d04c82cdb23db131cd4f5f64a65877e964da6965f56a20323b65d82bf7d1355f22bc120e61400972c074588fe47140e2cb5aedd1e3326822fa75cd5d7d11b8f1bc0c3dfba3441dcca72bf5fe618c772bdf3ca661f2282fd6256d38e12fbe05c1e015e28431d0140165793494947b8283d877245be860f6fa458ab1a2127be669ef8faeb879def9c33caf430cb7e44886235d0a4f5f751302d5ddaa907081ea95824b908552aa12986d86613307acb04f2cd5163c46e416626e805d5faf4024d8093cb5bb2bc58efecc4531d2a3ee59219153891f476133a5ccb32854cb5f3e14abe36c1a4aa2761dc11007adc2cb9f32a74749e8d6a7333865ef20f8d883d38ecff751ad4d81e972a4ce15f610fd61a3e1ad5e7f7a05e5a3c9346eea41f0dc40a566b6b058a6795e963ad4f8fa23be7c40a86a0fd2af2ce1d0b46e3993298e54d029df766a02f617ac268dd9080604d00a8023bfeaf5babfbe645fe1d6655368cd6e24fab45415cd1ed48f3fdb4e17b0636815bb8e4d002bb91c9f8aabf68ed30fd30640174b4e0f7e536ecc6f6dbbc6d91f4f8bf967e867e5e1f63cdb33030b91e1c9e3b21b9a00e806dd97ce7fe292b3a60a21a94000f593bdbb1716e3fa48e0644fae036174ea22f7099b63e22d4f002b2de00dbbe355c645c2e75db82e1bde0949a1fba17128bfa130a86dfc95250f911d29e68a6cd17635ed01c3cec956d9700956363385144a492fdd49f9fb39a203b89c9ea519713aacdf46fe6111337ec75d6aab3dfac78f6638cd35324f02745877c1c6de0f81cd4313c8f6ebcf01ad4bb44995438cf138b559114cca0eff9daac73a8ea1311792cb9a0e428a7aafa16ab0e565c848df036a61e9263499c0c9c1b95c3f9e0ea12e9693be333068a6733385c8a3e5beba8d69f6d95f089d3dd07aadc92ba343f8510f02c374c5d3813c90da02c762d20cfefa710bd9f872ba3d2ad47fadc1c0ee61376f189d7084255559243005fc8f950c30e597c48c9806f28f72bc4d8bd054c3c30249adb053b0b1a8672fe3b2289b607a180e9ca347d863dad4d9491638d767eb404436487977c795831f4188ede3cb0d3b328085f71897382281f4a4926329ba3145b470f3950c844c9924c8240042e9e54a4195e9726a7fdb2fe52e00aa7f0444fbc19465af18e2759fd1651968ad89b30bcf020c0425c92879a4ad406ac977f44309a877d655d46dd16eb8587063f6d2159d99738dbb1bd7c50106681f141ad2379d08dbe3683306922daaacca00edaf9c92fc8e49aa81cc0b8d3cddff700e1403e266770e84bf17823b791b3ab0d81aafd8b9ddc8a0b2e4e9b797961c2b41658ff860119e29630770c8c6250458d67ad9dcf0e8a385bef2c26957e58a9dfdaaa8155a00fcf0b890a9a3149e7c731d99a272963e395aa2f27d9c31b62175c1a177ded44cd98b37dfe8d84eb95adc0fad2f412f8eb7828fc2ec742e869e88d699b4580f9932837ac8c8cdd452cdc8883e69cb288cfbb2e89a53e26a1872c5d6e2ad04c8a8077d9163078bf5c6aaa931831b0270056b5b41aad4767151a4e548fa54f80feda2ee212a09d0587a07ad14093ea6d608c10bf820b79852572f7e26385fafacddfbf351168ababe88ba6e9aa752ee18cf663850cff1b30003a761753f60c2b74d9bb923057f15e2a460e91bba8bec5a447420db516ffb0e842b4ba68060b1f75a3b053e24c2ce079c2dca542d8319b9ecc87e681a00f0f760f1cbaadc0a5520d02812100463433fd0805286b37a747b02514bda729843c38f27cecd262482f31cd53b576692c7c8a520f20cb595536150fc9ec3b0421c87253d58d32260fc9b6e3e53b80b8be6c356dc05785b88cbb8dbe4da31ded87a97db385027e555ce8b612b7180451441ad32c00c3d3ef71388a986cc46f84efb482ff244f530f48693b19577fd6b8a3dca1e4ff1333ed56cf023c4ca195034414c49f8976d4a9203b50fa27ae29dbab8bcd7ee4885c7dbca07349290237593f09fa363c4144527588bfa045e1d5380f88cd6e3c3f5c79c05a505a6e44b402ce189512e34cdcfab9237b44c2d693674ab2ee43022170081654763150e494d9cc0c7d070bba7dbe05c7e18088c6f0e173b3935621188ee8e764eb0f5e158ed1eb9a27873c006fdee5b10f9256d12f1d4b4c661ab4340042d025b6206f85e0c9593ae28e2f99a73e713ff401278c1a1db8fb59d62c0ddc2f3c3c1ab44882d30d4ad43ddd673557fb9fb75d0a6620e002018c08b42f17ff073ba8b607c15610e43b9d96829af4b2269c910c6ed115eb4d33ba50b37394675580d330e4be0abce069081483fefb3bec270962457af8e29cf1ceb542a89bc479d9a304080e6cef18d6c114f02cead2eeb916ad25ffbce402c754dcb36d60e1f67f843e2324c58f9f95f7025ff88946b2f02dd376024447b971f75a1a117e94089265b456c36ff844aa25c00e7e834f2251fbd8ba65e51615cca6ca5cd38e84272de2f8d47e40acd5b584c35c0f8ebb10c2ff93dee3200402b22ee7c50ea6e0df73f0e9dae6f9604afe860b93e2cbc4586c5cb13017c601e0b21936ffb2ab6f24ae17e621883968d9e9693d0188272ced1984ac0077909d6f9d0a34326f4175aadbd1a7d92ef28559cdeb23fdf3c53e2dac5c03d15001b1644ffb0851fd8c649ca634f023659fb6455b5cdece98c0b0cf9c68744a9f59e356ad21edeefa28c2eeaec5d627bf7ffe84f75dee58188a21542d49ee84046e28b2960aa814f11e9b5a9ebfb5a2849f6036ec1367480b13003df37726673219bf14632270249968a959e9e4dc461e8b5e07f1a33e1af6d22b04c69d0accb85e78f62f284deea83faa01fb826991fedd56980e65cf9eb7897e41a0f56440216b1429bfe4949c6bb3be5b531ce4fd95143e3cc1b50f8cd344c1fd7c50934ed5a3dedc79b45e0a78d276acc1d9b891dcf23829a6d9c8cdd300f3398573d5d6eebc05fd8e4324b9cc02a9fcbdd04d47caeea9e97f2d8cb3dab40cae610b1a3b0111c29fe3f9654a43f82a45e74ff20efd341a24bc751671bef087be8b629d241504c5a2df71d9b64e0da7d98296ca7823cd982aebd4108a96e179eb472257de9a2a98ebb15522224b1bd87e8bcfd97a3bc0ea4db5701860a9f8b67b94e010b6001180ff930e340ccfe5f6d03c8e59e00770382180e97e6f50d56e132462211440d5d03bd18f5d9738e2a2c49db82168cc3c60364f6581c2d1fc342162a4dde87fd8b372c5f8d96e97478c12e82cbea833e5591519f82e3e7c1b740d60db62e6ef4f00ffbbd7c3fef5e060aea0a080b1b95afa1adb8a5c17053db0b407376f814fa4168c388d63f51067aace7bad25052e73ddbfa4414bed8bb975b5b102bd5f0da10f0a1c22568bccab01639d4591cdf1f9722cf7129d78af92e9bc223d74a20dfc6de32bb6575675b9e22e2e77950558d1d20d947556f965606ba3fa7ef169c4aeafc38672b232444ecad47d13330fe39d1bba173a8de148aaf53e0739f70632b9523f914ceb30c68cb01c07527cc25b7dd9e451819cb0f8ebbb8d50f6c6bb097656af53ba9816c8bf0d66faec11c88acb265249d4092d091e038e65e390d9249ecd81485cb3e0ace8b920e886c02eb83e554492fea27680571d4eddb2bb7847413874046a5190963a5dfff45bc17d2dccb034e0f778a87c5ad3fc4cd5f5ef7fabf1a892ed3382580eea3febeff57732c192461db9ca8a02b32d676c048f9e2cb2026bffed97689f23aefdf1591047592dd5262e44206da0094b64511d6c9f508cd2e904794ae67809c8a170e8028bab0ca37815b2fdb71b106b848d6fb6965dfb51acfafab9db7cbab6000dddd2d1f7cfc4ef80472536ecc630012321811bd7fe106925aa4f202e7c2e8a750b2445c89fb3855782072279e55c3ceb19c4538b52fd353ed7b2572e6c3a53e68d74cc8ae44bcb64f1cb7ad9f0b7d16ef3a34b1e40500c700398a445652da6c5d9c45c3ee69aebd1520d2dd750bd4990999f04e28097a8532e15fa35805aace737d8daba93181155ed3bdd26c23e6be2bd5a0da9ce333ba410dfbce501caf3b1ea85d699ffcd948ef8cb592279d439c3e7f058f24e1db420741fcc85cc9057502dfb10be4845ebf933e2c4e1a4044909648ed419769c25f2f073d0dfade874253c808146b22bfc4ff72ef35863c6be52ed3863b69ab302969e6814b4c98fec0e527ec3e161d68704a7b6f8c07448c07f10e5727b8f29d09e749303d7523058514b4065bf011e01a2640eb462856bd61c1a247e19a46a16b8172ceebb7adde6f8e9868e4d02aa3584f0281a079acb34a0b98b81c64f82269724f909c997ae8c9e800983b2b4fd31bc099a7fc381fc54e4089634d5ba3c0788d19ef54214db92299a03faff2fcf0be1211a0bc7e4762f647181ef183a28cf10fba3cf4cda3f1d965106dcba9aa3ea53c112d3e84ac49224d868cd6111bc959900a85670aee1a72b9da88e4c33442dcd521fab492a08ac9561d10c1ce7d0328502ea0af16b9380f705f9b2a946deac2df49b9774bfe63028677ac26646642bcd8e007b2aa36c8f6de8d5a4fe7ead5f14ec968f5888ad6dc8aa0153595e1ed0ce67f711e76b77d86d1e25911a3dc6cfd5bf5cd50b88f879f807b6985493354fc4d1814a21a9b27acf0fd1d31875a8131b82142e35069023849c6a3f5187be2a4b49b9d912969fb2eaf8a08e9b6a95b205ade289d8ae20a5794ba4586dd8e99c4d225646c296d0c15751bada3534ad130794c7aa716d89087398d3b7e1545c2430d201d57e31d024a7f989d82b36770285a176e94e8d35d5e122adee78db5d61fba8db486fec8c229403cab423c65fbfdc6a0026b14e11b923901f231c8013c402afb1508a7dcef37425e75a0dadae56c267e3f747a1c78085e1ac8d30ac98abd2a62c82e7b11aa41b6b38c1980867e7c62ade99c3f4e70516c02ea5d3a64da67fc15079827f97b69da319ed01e75f2a1db5f7dd5aa41799ef488fafdbba0d4e7c5f79644944e82f5116a22d816e75b5d4e32e08e1503569104698c2124a0344f415d9da5ee2a50c9c2dbeb96dbd3b5f7bedebf93a4241153b108d18a08a752a9f3c1c407e27a0f8ace38eb0c8021f2cb907027b992d5724ac6947bb33c9a967bfad09483dc336eaf02da7f0169f3250af0919ae07cf0e2be8dc075718a90aa6f1615140f94698938ab80ebf99d78e4c135990e3829aa7dbca8610e4349177f466bfd880bc2d556236b9ad8da7c8d0605cf98a44c05a5efdf2e4c49c34025081b2c8586c419261f70d147792a90d6509c7ca7974b0dfc3954e88371cc437247d0ea3b1e4101c675cf633c933a597ba23e9051f27e04a0a138de89901bbf00e63ce6c94bc15943bd0becd22db7b5dc378cf0323670052327d0022f177f9282f8c8982c17801640f27ad0087fae8203b68bf2a2c279aa102751645a0d05ca054f2e7b5397d3a4210979607428863c4088ce86d17e0e1d16f1c3b0802d9eeb269732284491b4d735c0cbd089fef1e933c51cb030267a377a27b81111942429d72c85d8587c2739540385bc862f25f54860d52c123be59b617280e4c5785a3d1bc410f493835f4c44c59aad2bba41317b12f2aae0d675bd98e0e808a02ec3449aac18b8f704a85588393bb28a3c5c28c9ed0dd28201ea0431893f76ee63b01a0a2a8751d07b8421075c4bc56b75962364499baa49945a77f6098aa30ba698fd2519ceac889e7661629a67a99e5203b56edc2ebc941e16b113baf0f0137c69593a4fd469e35c3c20567a628d39f5f6566bdfc809f9f4bc1ccf2fcd2d642a09ff1fa9c8951ff3291e8f61c0706dda5c65eb4444fdbb615aaeefcfba3990e6f1f19928b9613842e1fb00ede693919bedc32083c4fb881aeb531f2000d8ca64ca93eb1ff4e44fa26d823f828e53068b879df00b7adca71514b2e89599f788371cf742bcfa7a5a47ca40f18af8c649f56bdf58c5de8b1fb29bc0e5306c6a968720f763b602f1c5f4f0d07e7411177187307de5fe3a1eb815c63884a284ac13a32dec0b4d2f9304d53bbdb25e7420536682c3f7b87aee47e4d47b9bca78ff8313560be77c578f3771bd4664798e67fcc15b2b7e6f5ef9bb52e74597081ad1080d54c772428708ef6c005e479cff6bea4062ec88b5d467a1c717a2414f0f50e22f009053aa1df053e81ba31eeb252a1580cedbc9a9a29eb7b0caf86866a87564e56d79166c9f9a67bf24a81b462eefd17fcb259ccb231477f8d4d50d997768951c2ce6381f4c2e0d5ef0ea28b6d55ed037447a22fb62cff2c7090178b51c076c470225382ecaca0866677fd40c1a8812d188c06b6810ebebac25ce30a56e290619003db88670a30e3fceac8c4784790e2846d6099923bf6aa407b419ef05186d28d4cf2374de9667a0ac607dc355c2e37d9a7d87a85103ae063230559689d7259ee416c13755d7bdeb6325ed03ab5a6ed92260754cbfac2cd52454eaa6ae59ab572dfa4899b55eaf4da58adc8ae140ecd3d0d4f8f2f2200ebe9ba42a3d37a994da7ff6ac1c3043b5315a288a4742ab0405c95d269359b8cf94bb226ecf8148eb01675af2d49af1e23cb41f8c994eebb7e03d13a4ac66a8f0a9c39ab95274c8c2291667c144d88073b75d9c98aca65e08fa26665e6c5f60b26d41f240d00cf8d82824b0ac6369ebe5f4fc4d3389bb5c33430310b097a2b7972b3a638b7742837c019e73e0bc0a9ad1254cd82a7f37db69be7b4f05f3479a0b2a7ea469411e96016b5820c2037aa486f01c5ffc78e40809cccb4f380bdd788bda521ed9873116248c13a70445ad04096cc34818ee696a469c45aa4bfb98042b83303a0abcae8ec7a76671757e1f460def51f46ae55cabbb89eea3711e02e1e13a5ea09bd865f68fbcf370415f2647d0eb12674a2f6870f26755c34a0a9e59708879d3000df891e977d48f36477e5be63daac334b385fba1871807d9027cef558082d18e931b992f98e3fe21549befae88feb20945f0f5ab28166a4ea05c6693b76f5684f8bbbeeda5699473034a1ea7c8e96d0024f420f0a8d436a3058b48858009492205a02ab32341cb1192911f7850314581a2557caa14eb76260e11c9757a8cc662fd230633e9c17d6093b9bc03bec7ce1ef183d449430f6ae3f0e2065e6088e2b449dca61ae2f87a5b79c4cc4e36448db92fa530745149f8b4502d5039a94024584714b1244aa318f450212db48b09f44129624a2def6848a315a1f91943f0e0f0c678c902416262fbe5f62729d39dbfb517a145e00b216c7e0eba308158c09936de59bfd821466f04a1a8114a11f45479c2de3fdcaf01304dcdd033aacd68a592016dea803bf850d13325c364877a59bfd0df0c7c24c1943c93d87486fa8f4c8eae7e8336adc6fe554fdc503f38cd6338c3971c017f3485ba8e3886022165f0ab5447537ee82e8ec05eeb0de5ab32488bbdb6eb9a59432c914ab089e08a40836b0211730a9f040c57f73cb175158426cdf1bc8a262a9cc169a80e5cf39b7192e0e794e3a055f2ba170bd9fa0052c29458817bc4959c9814b4cbc4942c3c5139210b74f12630528e4400b1172449490c755b0881c98c4e444bc1f51f6970971f86fdfbbbbb552d26cc3917b04671aa79314b0044f565229a9ec99f074aa6e75c0850c7ce977dd9cb3fb3c574a6b8f8c26dc9abb96a7fdb4cde5e1a1efe882632f9bd58c206175edaf73ceae94d6223de35dbbdebd7ddb81324c50081008c453d4a987c61f4dd48a1841f2dc6c2dec0486dcd48a785f40dbf6f942196bef333922f3f8394b2925b577dbeef65bac36317780b92da3c81ee40be414e962e21a2597ec39cef2dae4a99da64a1ea153fe4be0c28210b8cb36d03c4a976d9d2a9e335520509e72722938c655dae2290912ed8047d923b98c52c7716815cd9cfec39cd13db593ed3ea01110a45f679a69a174ca7f6794ae1e57ede9e9e9e9e9716131bb2e4b1b84123fc45c7002045241cdc0e54f574af9d25a5be78bd6850c5a98eda579d1b4e9067a597b36106859d3b764cb8365591eb23fe7f3ef8f97e6c543b7a25344f6afaf1a170fbd6ea9b357db5419b40d37031e2f55784dd5ede2f25c2f2ecd47e526ebdef98964f8822d30816d5d00f7dbfbe06eac5492650cf3f3711fcd5481c039c553b3886cb7cd6e3d2fedf2f8df1effcdb3dbb64d5b43c4450733a243ff51a6c6e678e89faf459413b87e67e5e7bbefc09b6752c5cf2b11411f4ac8cd8fbd73534aa20659883749b01491caf64924131ec40f4885eb84f8e03c3f049df2a709637e467ac687380e7f98d4a155349d7ad236b569641034f20538f790fd3f6090920b8f96952d0eadc2acd30f396328b849f6f63b25aeef924f3cfcb878e8a1b5ee2423e0fa3bfcfebcd693d66ed3065d239fc8269701ddf282b10c920351f36dcb434765899aa0652d912d17ce4b4a29b7cd72dbc6d92da45f0d0f61a4c08c68e1840d20c32faca88ecc43a68529f8e851a66ebfdaf123c807042acde8991ddb124e58816f8c92ec189629a0a0e08a78db0b2deee7569da0b879d559e8701c5ea5ac3a3c744fb901da867f8e18222d783c9d4ef3646bb5ab958582a954a7ea7ef7a48103b67f4149a5a4db111d3522fba366ab67bca76a3681723a7913a7d6d90a65169ec05226f321d74980e9ea999a8b179ce0132d7fa7b5d61b1e8a7aa6d58255e179081a171faef34ba9b596f6af4eabc9e38eabb1452941f4eb5cbd5a6dadb6febd72ab2b1b4517830c40ee07e5b7fdfc9090a0674aa0821cb6c0dc4d008a1023829864361186087aefbb01af109958110452e95e7e3eba5619a4e82b78f4e819ffbf82bb67ac58db33e403039479a4e60e44cd2792b7afb3444d708887fe16c8e01618c9e7f3f980a39fa694b37a1f8efb7cb86fef6391705e5ef801c3e0ee3a94c6c4542dc207b44de79ba1a86fffb4440c5e6812a65af579ce82a301b6af1f9082dda909764a86f50a1e30606eb7e004db404f487a8604b5a70527d8dee8f9b40d8905511678220187cc6601c8fed5526a533de32fc4f61488872e313e9dfec3d0c7535e21d98ad094bed002dc49908c0ca372f79ff6822ce9c03b22028f3130c4b4e0c20d1b319476777ba5d4f321f3e528e5c21a343131506042428200e9194a614220d06cfc2c5b73357792e85b3a439fcea3d433d23361cf00e99920423c94ff7f73d0750cf8b6909d4a495d24c29465c933df5bab5fbf16bf4e9dfc2785c1c50f6962da866ec1e3e944b374f24bebe4c2a12c83d10e7894ad16383b991d98cf73bf43062d99fca187c8bee387996c5579d939750f092141ffa04fb6403070e8a18b8ac04dc063c73819fdb1677576cfae21a76c1a3d60ae67684b36e9197fcfeb711a027b2722f0285b9205d97fdb9a481c09e5d20fb53324c11da72978942d5beff6a7196020648ba373526e878cb752b69e745f144ff95be95a11a729b8b67030f7ff91b5566be994ad9e81f5cc8e1f41867c402e00d2c68755e2e2de9e7d6974ba1d53d5e2bdf7627c3afd43c0c58f027b6891f4dc7b3bac417323b6e35291d2d55f94a460071f8220691b9967764965a65feac35a209e6d8f13113888fb0441170442627ea12cfa52e35e9a197ea615358007a15b6b7fb3d6c6784d0d09b6cd007ac66d8c614c0050e0e39b701c2783cb6117dc21c7711ca867e4dfcfbbe1578ade5abc9eefe7e2f6dd84842032a9e2d655c000085888493a2b62206e2095f92325e0f1c2444be0f1ced4c091fd00e3adf74af086a1fd818c492664e01bca7ccfd039e76724049225a3c3c0cde3467ac6891429454e2902099e9f32798c48e9e6e98cf0f03c8f7fe8e1f78c4b2348244bb6dc3b0d818d4cd50f9eff1877043ae52647eee99c34b80fe7d327c50de719a74ce3bb393d8defe60629947022d278d137ca2c4209393deaf44ac48e824edf0d34fe74fa6e4ea83f3d8af6c1e2aa0f6ca6fca3a3257f625b46bfc3633a540c0a75ef1db94aa318a61826d22886a944725d526914c324430638cad22886298689348a612a917adc11cc8f75743f3207dd79ca34be2359f06008fcd940f3f891d1530c2fe9a09b1344637ef57af41535a007798297fab6d95b83682e74f48ccba879d471850a247664b9739a471df54ed5011a4b3f1104b679d4916fd0a2147fa6be6021d37380fca9c39f0710213059826ded26a90e1d17caef00cb3ee5607fe9de5a46194b4e4a7a235b5a9ef0023109006656204104dd482066a0c7e1df596b398ec3714375030a1e4b3f642d744946d76cb33461e04adc7716646f5f9fa1f9498efb7cb267b8b0060d95fdb845c06e18110a19a9a1c80624c8814ec21616b0e0d12ef9ce63298aab8c345922c55548dc0232870539d03650d0351a58b2a4695b88b49ab66a1b8ba3c585a5d56aad5a06b0913924a8a66b41152e2cad568b0bbd56115e335b4d5430454af1bcd0c31a343788d09a4664aa64abd5b456d35aad9694b0d010624c8473aa6200f0a8a7f11201330ed07a71c68f2fe4168d38e34718723f8ef95a6c9ff133c09b194f03bcf190f0041588495c89153c8112424389d853caed3d307f0347efeb770152ce39e766ad0f5324604563ad29fb1741c2d3bdb4437ac6575d463da07bd00fe91e040ef9fc55c243155e41b4987001105224c024882f4600638a123310fbfee769e09efb4ff75cf7a164d7bdfc0ebca1223fdda8f92d9e86f813f12fe26f044493001668804179ec59add6ca8dd24df68e754e0839396d73b9f879f3c733f7b558715eb21d9c570e4c2706d3d969513669b3d6a24aca767a9cb6a2094fb3ec39b09c9c1cb9dd2bb79c1c4ae370d0c1dc86f9ae299d272a600973058f1db36965a0b3cca19b040c06f7634b21fb8f6480c79e857e88052ed03677d4814336ccadd37b86ac0fd15b11eecfc3fcf87878e8b2db315540b00091a1b7b6612e902042a2983bc032363a4e3368c47c0ca753783a9d4ea7d36948080a292995297f499b1fef2480d3e5b8bb5a5929ba4d7ee7ee454ca1c0cdf4225eb1c28b5fb1a20ba59472dff4ee4cb99003f6bfe11fe32fe35fa35523c0410d8e90f2a2010d9410fd6fb4aa8f00c3e131620b26a69002d1bfca4dcacdc6c45cd1c9c097ebb22a46a6bcb3e8c20b79830a29d3058f3a3818625a70e1460c47ad556e2090d7f746cfac74fc882101e6f60d1c07b8c17141c0e38d1be149c78d79e306cd498db0013d60d9ef99699d9446e10b0c0fd8bff3680bacc365b923cb74848347d98a52520196dfa809dc5e63417bb2b635bb9a3d209f7bcbd58092f64798184d38c9bd6c4d6f01d203124429a02938ca1781cc9de9773f213e5f8317c94556f2095805dea1c3c3d5b679dd305f6bc378140f43ebc100a548add6aa49dba4552b2c5a6d41d95a7131c483e30cd18acba097224690b04eabd66cb55aad56ab855b52b6e41154ca1648b63ea00ea7e520d754b938e3c9114a741141fff96e50480041ec36d097c4974841133fdf7d49608c103f54ee8f5ae882ef6f7886473945f8f27b0f7d2432c7cee248cd32a700af2b1a50e509038480770bfcb255ef54c5c062b158382c995a9ef072d592904b084fb21741cba47c458b2ccf5cef289764cf63697a0da8f24482e12907b7a6aa86a7fc6fe058c1b2254b9014707c81c1972072b832c3813b220947ace04915bcf4883e2da55652812b187545eb113cc81e84ee6e596773a5a36d3a09d92bed7bc6bf4ef9d3242195fdc74a83c1648ed97e295d51b0c256abd56a65afd0f5b6753177db2e0bcfbb6df76e77f37a26a60859e60ec6f3be50e80218689b9e2a923fe993563ee8ed7bd7786d533f834449e0d0c37cddbc39e99c9fef1c47966f839c744e3aa7d763bef70d9940d7b260a79e0f1db437da33647f04a2f57af3bdcfade703071802f945f47624027dcceca1ffbce780f9a1c71f4a7e3e94fccfd33ce4f305f1507a42c0256022a0053c14218161b8f9a1a0eea50dfd07755e409a21b3d99039677336e7a453e4212874ddc1cc50f6072273d0ec3e6ba51224ef54cd30fb3105a6e38b32c77d7f1eff819f776993ddc79f2a05c81c1feeb97cd75d50daf80ffd90b5cc5fbafdc11dc1852b060c2c9fd29186c65dd228dd17eb5029698cc7c4601fa11c43e3073cf68ecfb953bba7bc9bad3b417658f58b0c7cc35a25045cd4a245e6985e535fca5a6b95524a29a5ad7436c476d10d8694c620bb9ca19dcb23eb43d8b23ee4d1b6ee4c792857da4cdd8bf1749d5a75a4b4d6564ca317e3d3f4acdd6cadb1e365e5e502548a910181740073fbe439383ce5d0dddddddd60d8d6b67fc93e75ba23468e20a1745adb45156b5753d52b5ff9ca57bef2d5f6bf7dab2f78ec552b536bad9d3c46ba1c0c8657f3681eaddfa3d1e4509356612642383028e3fcd1a37934ead1603cdad722cef8d6ae12a447eb19f7e2c2e00f25e47da74a115a7a2062f066be9000828e18fa50425e4261628a18026f1a084988374910908557eba90a71adecdc7f3a3abde819a7319a8247eb1a318175e0782f38620bc24631c0a127658173b8d654559ebac3bdb2f38c1ccee4e15cd9ffd6f08773678fe635758e9ac0fef3eb4627c0323b37494c4e44d2c33cfe4a7f437afcc96d83af170fbfcbe338fc49dfede238fca9776b469a4bae141ce9dce888491e6f4de405ae4fbfdbc5bbb5297876a9897a70c5dfcd46031968898937493e267a20422cfd4d129915b8400a91f4f861be1b9c250ae24d92ad0ab104b65e8cf137494a5244124845fe04795dbce6bebfc7c56baed75caf19d5008fb7767bbcc6b7bf5ea4479baa25361cc1f9f3dd333989a6f7f76a53b5a4158aa667721297307951f4a3f74c595801267de96f6daaf06cc6f842afd094d0cb439c509410e80bb13ecf089df22f7d1e0fc9f3bee826c0e881e1d1bc22f48c0c783655a1254ff0044352a6c5c90ef3e58022e26faaa0882631b173d0ad726177cac5f1a76df1d0b5ec7cb7766b3de38eb3c035dc059e75571c0f65140fe573996189f1d4565d52859e6e0c9baaeb450f13b709b05bbb6922688179fcddd0274d5c018361b3ec8fb978cd163cf31a0a7655685ed3e978786b18d6c574aab8cadb99fff1fe2a41beffadc91c727be9ed4c5557c53b2bdeec821e4d093d53eb743ca4b5293dea36e7ac2f43f055b0e678e85bb2ef64af381e7a8de2a1d7271e7a6d79e85286405e6e9b1b27a7e43a164ecda9af3ac5439f6f5d53e53524704d7b8c67ced04203077882e30a96651e8a2627c56b468b2365cd5532071a8f972a70acd6135714289ee0bc5c25459f16c76bc655f61aeb45ad4deb0b631e4e09c85fb022c604cced1f33cca674f72afb64ee432b3047a5a4a3dcb9d743b683b9d39cc19bdebbd91f393f554b9630b9e209b62f5fbe885466ff695eeff49d07f31e7833a3f52a42bc4922c222ae1c054710bd5722863e9490d0e3c7e00d4a3e0c38c403a974af44ec6e8d7b37d08d0d47703641cff893a06d386b89a79cfb84f8e17d2d524f089404430f9a6208dc3153401022f4f313c27bee1302f49fd615430ffa5a2f8640d906027d37dd83042f5f88374940528410bdbf49322306e28d7cc21622e843df0d0b59c49b2432a2074a96e3f04ff24dcfc7d3d5ea74b9df31b94eb23e1c78b35aedf811e474da4e1cc771dd412165cf4e9ee6f69709d7e56a5503b3a90a3d7d521757d52e2e9a4d5508acb35b4346c6c73a1b49b34c2f7db0ca5cc1d3fe88493924d854a16808c17ce83b47871423c9483ba1ef06ff0d39841e83281a601e3f066fb8093d06777841e837a58232c94c32d38e6966a2f5f49058a416c945c221bd64b29d19adc633c2c9f447936c84337a8d72603ab10f0cf028aa896a221e51cf88356a8d5c9d95394aacdc8feb8c36554a44faa14f89586bb3f2ccda332dab6d24cd4c519413d87ecb1c23566e560545b19ea16fc1b145b04c65333555a1c734cc26d954d58bab499629357dc9b4cbf19076af4cbf7b79486beda674393257e0b17bd5997bcdcc6b5020300cfca2dfe5d0ef60f43b1d1a8345a3039d9398c54e9633802e68c403f66f506609dc3fde004d4fe0fef14a0985c6a70fdbc3f8f4214d15ddedad936facdfd0f79c21f525881222a5bfda653bfd3e7be574ffd499b1fe29eba73a313a93f5d31c3a4e1e9af7eccc26cb6bddddddddfdb4dcad3353b199ea9f9fcb66aa9f7ebe430b22d616678b129ffabf1f0c03f7e7db36b07ed7e9f758bfcbe82684ae6364b8bf6fd73263896603e332c7fc1c98d531d1c1443d3d13c6a8c5040ed93f0b3c76b0d954896233e5dfc1443bddcf443451179d63d445dbf011ad5523238866a39968369a8966a39968369a8966b249b099f2fa45ab483b3365e345e798309d09b3b009cb81827591789c9cec0930157a474e814792cbc5fb49e0b1c4aa915c53c58d66b786001890661b79e0e86292ab6d4223cc9ae1514ff6efc0d1ac34cbfea515e071e443f667b58ae41af9d036f261d94739ae5776028f2096fd4e5ad1214aee26486ccf4709083ce52733c93555239d99f2bf17e311c995fd4930d2ce3c9d2a38967460b9493b4dda69d24e975ec82369a7223182585b4916e4fe0b4c28e1d039266caaee095a55bfe894ffce8e8c35c7da7524120ae5820bd6e27cb5d6335eb40d7f192c239d8a8a61faa348060a4c59d9df7b408bddb717e47e8da7c77ef269091e473ad93bf9753d5d8deb78b2ff4867a433d219e9809d2c8f9fbbd30970d721e1e1e31e8c736739628a3c5e07798925734cb0d6a48d1cda468255091dacd3e962fe9dcc4b3b8862d9596398c75a2bb1eec5ac7c414b3a011e4b5cc06c07cbdf03ae783bd94edf662a73a5cd14298712ed2ab17e5a8287a76d82d457b6d64fb11855ccac4001154bb0c1171a39d801104a485181123c88f27ff8e808ce814a50423ebe3353423e0f92effd98ade99a38b41a4f0f65d1564f65559cda924f6b3c3ffae5c2d189c976b2943c52ca60171701d7f0b05fe60a3caeb274d02b1181fc10c2fd677e423e0f026f40fff953952cffc754cde06406274f8a028f279a1786d0d90081199a68e954670f85c86c7fec388ff34c56ab941c91850a2a9e0441881fc210e5cf56ab90f8f0c31180d8c1063c7889f26566783555cec3534376efe94c5ff60595f2f6eea58707f41e1878c0b8d2594389c76b3abfae838c90a5958505baf76edbb639f6504a241e4af77bef63c182c5caf64ae45c256056523025370d285bd801f7152c4ff2b8e13c8992e5778e22ca36258b2c8f1b4e96d89653caf73bef7ee3de7f6c50ee0fe78e7a3e64f07c845da9cbaea179737fa02c3d1fdc7f74c0161ceffb6ff5037d0fd0fb77b33df11a0725cbc3285e0302f116f8852eb07f4c0c3b786308b88b7902df97456c9b945d05eb8a144c08b1ae4421456e19b1e46fd7371cafe92b5268c9f237295e439d64f9db6bdc6c0f12c992ad566d406707263330220c2d3d88f2a5ab554a7c3862063b48e1850a98e00351fe67e404bbbbcbf001ebca1ef03ac516159d424b8c153c6e4f54fd790176c10f6d43befc6e82bc7b61f286e304b6b3a9f25ed6409d3f37450facb4faa0affb3e0e1c2dcdc82501cf4e4e1ebb67dc70244b8af2cace2bcbbfb910f05e7adcdbcc7910a0473cec0d67aa48d029f9524a29b7d726c543f92ebf868734629ac0bd8988181d01dbb86c364ac876674ade0fcf9414a164988fa281bb281aba1bb69642079707e6c740cd60cafea61e0e7ac07e22702974e062caf36b29747065ff8c98727ff7a168f06ee8b80f45c376c3fd6dc80541f7f377035d6748d7fd06a2846cdc6f1ee830799232dff1d94cc9ff7cdde7b599e2f1d84cc916bbafc5ed6b11f402ffe943f934d66f143b31d895574d369331e018b2cc31cb048681b92d7a98ef50e86b51e4938a985c31f4a38f048d83d5330518db0add04903874c33479808b30f0406126e25722c27c2dbca0c3df8f2033f5a184881ebf08fc01c27c2821f8611e8341403c534466ca8583695d960532c76671bca64a4b4469070c5a6b9ff37ad80d0809034964aae40c64ca89a016e4e954670558a1a7539d693a47f7f46934ee1cdcd31f75cd7dfa31ba667b2a6d744f3355442e2843f3894c95c4c1a1e1d06a84572ac914c4c1c1c1992aebc2c169ebb22e89836363200f11e1dac14e60e64376304dfe703c43260d0162b8b1a2ddb0c690d96cc8ac9bc6d5c14026b18330a8b09cf01a828b9c181280d8a1cb116a2003df6d33e551c224125207728996b4d24f7490d283c742137894b0d979942dbf2f93b025b88ae34bd8113119b894abd8bd902a76204a0a018142df3d0ddd0d211015c4f340947c2f14fae9450c812809d2107a0fbc818a1098f7fe06fca1a7c1bb01e6bd6fb1d399c958f7b82d7a5f8b181444c266caf504f64436e0d176e8cc86c16054b0ccf3b71f25ac450d34910e837ec0f15eeede6dbb1b0cc639e88b4ea954f252e90a780c67d8724e2967a9546100a273d2f952a25ea09e0f992da556ca1b04774399c366ff2ebc179ffcff8634ab1db256a945910ecc39e79cdd81b14791c9553a7f80c7ae753f9f489126481c584d5a50b24b19c464b29d19cdf7514b398eca5a913b041a17b3e7ec39754e940af1f003b20699c397d0077d1190ec2b48c984852930fd2a25c7d953add92216f090c8068cd4b0657b1d1010424380186eacfa0aa5a91df1221d18650ef91f2e2697d0d04c55911a4d8da648ad464343532b4253c214f20bb5b452da8e82668f2c5a789c461d569ce001e4c7cc4a6729031cc77195fef6f5d7983764e400664ef76ecef6b0426c90e976ce21d6cef963f2b040aaeb58556a6de3e0cf8f947e3e4f3f74a3253cddf349e64fd77d3e9fcfe7f3f97c3e1f9a1a373e5246102a75429d38a1b43a91b5c689132f2400be00e00bee2f9802e00b1ee52b080fef550d57d170e0eb6ba0e92e93362516ff7c405982c9cea7cc5664ec65c4bb0b6ae382394ae974f723f096fb4a16af3cf64ec84a162cb84269fb01c380c1a5ab2116e01852b8ac92fd633ec8902466360822f3e63e03998504e99d2b331e60ee06721695fb0a163d1c104adbadb5d24d090a90a0822e5f4871e5072c390b4210bef0ac7ca10208b58326c45e3df05889e2da8a4513362c9b28c5c85cc1024b26e5be82050ff258c387ee7a4dbfc4d2617c8626f5680555dbd9edb35dee7297fb6c9fce76a00af29c867cbabbf727732702f5d759d41541615ceeaf6d63adcc4d9de4b1662a7166d0807ace9153ae4fe5cb43fa82b641bfca1864fa2da5c8272e994ca59435ad92382d65fc6b9539994a1c87ad80dae0dcef3ee363637f521999fab5c1a98806d87f94c99ec4951cc8711cc7715cd7751d2c092db82e888b877075c05b367f7ab7b04f647f8a89e05fb318f1850b9a05360528fb5fec7ff2ffd07ffad36b04bf17e3d3697e9f3fbdd81621fb7fd813945dd79d72d7751d38d6b0ca1f10242fb875912d389e2a383e05c7708223cd12558c283e55c94115d03612fc217350b0db86e4e1aa2aeab821734b4526e8ef66b91805bb4e855936ca2c6305963f3c74e9ea943f0ecfabc80e3de34180ec90fd453cc0bd39f5028a2c674b977582547e673ffb6ec1fb04ec3f93fd5f68d58c01204fd38f5efe8012ec4ee9d456ddbfe07c75ea2714d99fcedafc0945dee17408e9938262592773b4999216e4685365b91e8e6772b4ec5f061810a320108d366663f2b911701fd6f4a2a3df32e387f6c56c815dc6e4ebc6dbc9fda0feeed3cf2dc9fddb93dcfdf54d4fe0d95b600737da5405894d15c8b72a5ee3ef8163d740e0d8b4fe0e1c7bf601c7968d1d5b956272bfe9891a341c6943d666ca8340087496ec33fbcc3e5b8e2089e5f15670ac215708b4b8c57031b1b8cb0efdbb96527a0da5cd95bd41bab926e8c28932659beb43bb51baf9b5d65a9bd2970c130c981b010b22726799af6021258fb359cd6a96aff2d8b1099b3ae0945982a7561a9a30fc3f81279abd180fe7a4217bb3d7a00acab5d2a7b9b2b6c859bd68704257378fcf28c5305396fb5d78c275ff9e94524ae7acf3d5a9fe391dac94d6fc6b9c2e5e0f37680111be3042cb124852b0042b5861082ac4600a311e4076fcd87ae04a7ca0430f7a8012a5d6051044b702138078d15e30a5cb1044b75f64e7aac08c1b58c32afbf388b2c32ae10a50a80f5c903f918a57043f4022073c2c3105279e888e037be5d060670b0cb0881ea5633c80ecf8f1c97d050b166c553c28fe851676db365015d8735fc1c295474c9bded8b2dee9d915617cc97e058b13e0d39b725fb9824ba6b9af5c41cb633804eae311b7f67e9dedb5dcad31d04fdaa032867ae3deb0f36ef42da595567ac4f3b4014c8d01523da36b7878b8c3c3f622ba53ae6fbfa396d6503a2f7542ef8d1102a5f26bcdb4e6f666ced46be8579a1c43dee1f30bfd0534726a08676cc66695a9337d30633356435873a85d64572aff7a089220c8cab00067d5a382d89f91451915647bce7eb2a74bf5e6dad1ed43c4c3cd7e6ce7ad6996a3f2e9670169a356af47955ffdfa544a6b6da6dbdbaf3efdb8cda78f4a69ad9f0df47e25a2eb6eaeb70e64adb5d65acbf5ab56aeedfc9e200539a1a3f47b7e576badadc056e7f7a4dda4eb689693369baa6d366593d3b97e313e9d7e0c696856ae9347fada6653452bed9913a4aea9ea7cebd974a68ae5b2cc0098cee573e2e4f16e3df903bad004dccf7d2f74aace8c11c8f4e7dbdf66db6c9bf957db61ad3fc1dabdb69cae65c6f9cab5d66dd331f6cea7dbebbbeb0601d7987c79aafe0e4df8ab130dcceb3657ae4fda82e94f97d78cdb06eaf0b082a3928c7f9301e643e008aaf11a3fe5ed759c9280c7958f15b8c3c32ada64fc9cf1e389c68f18f5e39501de1905058e17e76d06d8db8ce22a3ca5bcead7938c20e0b16b9f2170e84767bd7aa67e91fa5e233d0d4d18fe9f4eb56580e325fd04496fc1f1549fb405a6f5432f9f8710afd9401f9db7adfe0f2041bcc67eb50011afb1e093f9b9b205c71adeb463ba37c3964f26d36f9b8cd33726c9324a5f6793ab64faecb727e37778a99bbff91369637b19df28b38c9f5e0fbb6d3f657c6dc1114949c66f9bed21030cc1964ba518a697f16d3fbf528c19e33395489f0d72f48dd2ca08c2e07b08135a79fd1d2757c9576f2a297ae078c21f700c73bdaf6dcb2d53410f4c1952f404155aa8b0122383dda5bbbbbb74f793875de574752d33c6403981ef3bc824335d9920077dfbe73365ad33994382ddab6ad13615ec6650ebacceea6c2653896433451f09aff93cfd4ea78ad7c43a2b9d6caa422fcad229fadefdede99b665e53bf7bcdd416577548388c49669299641e583b98872ec0f6a5483655a2d94c656995688b4e515397d067e29929faa0cfc40534cd4c50b4688b9d6c8aa253f4692783ced1b039554aba5827a341234088d6d122fd8e82e4120fe9739ce989a955eae13813ab5405fadbd75e3629e5e65bed52aad1ef60f2ac320f618047138e09c7f432e5c07462259d52ac242bed9466b4b691f2da5c4933128d5423f1907a586d2395946ad5843353f4efc5f874faee65c2c9f43b98d7bc3a24ba57f7ea5ef385256c29d54ab5124fa9c7c432b54caeb691259d92aca453c252a3c605471999924ea6a299975a85da53ab3cb58b87b4be7f26287a867efd4c57a40dfadd3571f1907e979a87d43473596b7569a2f967dae261cc155c453399a38275266d68d13613ac5af48ce743860a59a9556a955c259cd2ab94538239aa092c3d93ec0778be28d633a419a9460aa351a894ed963541ead48c080000000093140000200c0a0603e28060402a9b75c91e14000b6d90466e563e9709c328086218062163104104000300c080d0d0d03600aa6f51f7c6452d3bed19786dbb1cc6d25b12c513d53f0ac8726f99bfc4546133b77f145b0e2bb1e1244e64537a057c90742224c15a379c1e88c1dc3ae8852526b336f0d93b49e619d606c5ea37050ceae88e8f08ff4c89f332100ef468364504fc2e75181622355c7d2a60c698cd1d8bb8ec44bd8695d182f4af69651c9ae42a1ad918ba57692cc86654e6bf7d346902b2c640dcc980f2e8e542c5ec611804061557a731274947835151564fc2b965ccc57606665bbafad0c4408b1c99f8a6a15800b26f72a22833265d8a42dde873bbc8521c55dcef82075365cc0a2634318928c047a97b5a8d140c5f03759f14cfbe00b3a4c27243fd99fe71217d6617b791c2c91fbe0020ebeb6c78c6803b109cf68ce9643040243640995499743b9a6821a6e268c1245f5117c47b804f54e8e30920d0e423a2e384cc2ae513c455c63815365a33b248ccbffcf4544b339fc599c283d5ff151f7f14664b3193f8a1bbdbd425e66e544d836833a137c553ae3248e56ae63f7c7a53cbc02509284c3c35a45af42f964e24a1ffd2b12d70fe155beef480e663632c74f8b6455929e868bbbcdd185d1f821365638a1097c6e145ee26d37e45b8e521341dd2ef3cf4b2d937bf2905dd360a513f0b36f25350356df5e4bc5ad62701813ee5fc7321f71bb7b2c10af9b34daa38d0017b33df8792634b633cad9c329ea41dd9bdd75809f14fa3b8d4486ccf07c5b0ef9d561f74033bac762d133ed31f6ae4f83a84e429990fece0c78ef9f9eb9d620f2a7fa0bf0a8e270efe743caf8333cde87198473ef652aace2a819bad3a11452b2c3197f946b6aea94ffb619d67ea320e6cc6007a98fbde53b1e175a28214ff8bcf6a0bf90c4d2d396220b48fe9244d0b01602778393e45596045f69890490410d6aab2d3a7406a042a4644b0286a506442a5748fee1c56e1592e65d0294a6d75e82b4a9faa1f8196df98fcc85853e8b984917e885c80a796da81466d7026430c1c0b0e504157290aab624f5361109ae07eaa2bf4ff98b0f5a49f20b29236c1ee47a3d33cfd675d351f378dfd8654f918a7c9a1b4b48c7a7d2144ae8d42f9cab92e548e1cf394e2713c70e3efc8c2fe09ec81fffab2b24d29e5d706808b69f4b40f53fc0d7ade7f6f264783c95d03cd66f971ff240dadc308003df1373d42a6a92c78f60ad69bf63d22a16abd85f7ed794bdbbdadda0bae3802e1fe52f602571d826c5f347bc2354f20d80fa53de2520708ec97e2de70cf01e4f6526b2fdce234e0e6eaddc5c580200a5d8df36dea10104832ed8712d4857f931d20cbbeee04c24c82577dc75e2808130f95344a84cb5b814728403224b5152931e1f120ed81b38816e1e3138884829de019f062f40ed08c76500140d0d20ffd48a4ff43cef42b969a75bb84e1043a4b6a967df3ad1de98570f7e242409d620b8f36d102ae3a10c149e0a7285a0323606f96d4e7d192a83dd7032d3edb0d2bc49a0218de0feceb819f3dae7d6540d94ec5367178bf3ef620a02ffe421f76010b3f4b8da57da4854d36b405314c4df5d01fc9c4cba7d1d23442ba917b041869c7aec5e73f6b3ad5a06a8b3df0cc033cc565ad2a9132072427e935309a99fce6cdcd4a1821dcdb6c7659f2cb0a39d4862d57d27ff218cff36725d8332d94c7c7fb7e37407e39097f5440df52110a0bc261f1cc81469995e00e1ec24205c8044719230af2ec50f2d07442e5681e6dcd132e3863de3d9697a66c394be830af8c3b6b08391a3e601357a578944ec4b30024aa6140d46ebae7f294bfb1a0d9f99694f523d6913f8905e9c9443ed29bc1f3ddce659025c6ac020dc207458cd54d012b37a2eaafc49256a6c96e2de0573ae507b751c2b16d9463d15910b1cdacf25ed6c188726da934b455663047b5d464beb6c87fb4295fcaa9a7d2006b3652f7686ce08612571071c629772b3cc68f4d87ad531a5e4b87f15a77b2c4afe8b9171123d80c2346724504d398250957a7dc80e9d522255b4d0c0bfabdf3278cc298ee0f0dea96b66b26b07d82d5ec5f23deb28535118df23b5c78a3a82b64b07e25af666638607de654c1a6d97f8818cf99dea9816a8b4dc8adb951a0ca0d92b985ca34bd374aa9e349ca70e12912cfd85dfdc4faa524ecb8802ad782a62be3b0d138352f4a81f056ce4dc865169abefecbca5bf8a5a0509bf3012d6d84da46cfff94d0c2be2d6e4ee7a6b639952dda9c9a7ae7ed9d923bd6ff95fb3e2d96bd764dd473a0570e5c4a11caadde0417bc121a628db958a27973b1581c23b5077e4502a14c9975724961ac918f75710076ea7006b3f1cf231a6518d6cc7826c21b8e351ee63ae212f0941ccabfdb708e89060f01f936e7a79ce8eecd78124676eaa0b88b0a8dd684e50ae53c77bd517547cb001dd0131f94c387a685513f39509ede7b6ad228e5404a5c0868b6f583e0a740109f450dd38132acf0f1883b2596939f3caecdf3b928a34dfedcf0b08c7772f4b4c85b72d0c29b1617b9813cd6cc183c312004c631902e95375297e6c0782ce016469fc6e9b21c150452a9bff3c6e65a3da8b414def8dbe32823e2c7430a34ba3c7914ca07d4473af963350762811d0e4e56a2cfaadaaab71e5a5aeb164fe74e278ed2cc91aee539e139804c9c5ff1b49307807a2bcae362b1a511462fcf8a9c914c6cb40d4fc7bb94a8bd3e39c08932957e17b6fb5c6d05ae633cb9314e5e68bff09b26ca62fa3f1dec6425295458f34fd1a2901a1a0d8a5c5e95c5536d7158f859f6f355826bab590857206758b854ea7d05d7c146c93d36417cbc386f7a8dd616b5147e359269b661621c80af44e67c7d7950bef0f12a481236d754018d7d5b6df397985a171f9f4e8359288053a5620f4a487efbd84b39d35574cb4d77952f3e0f71a80cabaef8e81ca802881c9775755d18bf41931e493b7dc3215e4b38dc426d249b43e36c8ec2d4a54212f5091bc8e1a127c0f67c7a526e0c5e8a7f6d28a3ebb4f5362815767b25995acbcdea5a767592bf542151e2feb5b82be5c940fafe4d2beb71891d13fef4445659a00df5d8b0e50b96220d6748478fcaa6ccb1fc5616f2284440451f7a3954ed6d0b1bf8775a8db1150529a066892f47190489ea2b6f9c6a797d2f3996eed74f137787d82e163f5a3527e5592013e9e333a0f55c909bb1e607022bbe5ecc287483e1e6f6e102b0f11fa26dddeaf205761229ad3e7e4c01992022654b8035d50562568a1d4786494f4d38cb29b564dfe735f6cad2b162b88b635b594d624b6a98369d6055c6d3400b3b48d25f4d169623da58818ccfb610f88ad59ea95dd3aa8eb644fc5aab0c54d3a96750f37c9e0b248c295bfcfb331ae5d9d663b4a9b4e7b2260dcd449bf91e4a26749f2dc14da56acdf651d68610aca1f1ab71fc177aca217b60b9346b9b0951ad7a7842efe00905021c6220e8b7e62ab89f92e3138fd186b48bb1e37d9074be840185ed87ae7c5f1e8ab7a81aa14a1430fb0d50520d9c482c5c6907d7673515e766c7e6e6b856c8664c87e428012234324a13fc78e2f1e590cac40b5327f987a801e0389aa4c3280509f9356c8803ca8bd2ab62259c100ed28164345a40bb5edc2564e8c1568e627c0a266b73dd61136d5465681a35516a620d900b824a9d1587765fa5631902f6718e58547859ff17115e4293de58b4db99aa96e052000100bdf3de437472477f0fa4340e0e8ba012782ecd88d17e0e5581778f747d7f70a7275c286f2e4174afb0b6578646bcb02ac4e76147a4f5fb77417b4b5a98219d908f1d0ba4de209221872d9ca107b7233627e9f71e6595e751ba8e7cd52e19601af0260a3def89f2866d1c9b7147c0cec6f25cb3ee4993cf0bb22951fb1c274a2a16bac39e5e310590af082eff5266bd50c05b5e80d982a07f71eaf3aeee23250903d7837ce3370eb1e6c91138d7c39be98815c39b3842368d5eb831bd6dcf424716bcfdf25cf842526cc0c12f0392404f816c8e636687225f747cd91bebda2f24a010453caf179292510ee97517123af21652fa9ea95ea35cc3f5242243230c9062b5c4ab6dde405580bfba1c4c1243d1ab23ed7784c558dfd8d74f0c414599daa8c077e7ef4137fcc0c2013c12dd8d8823cd436f139cde00a29dcaafa5e7a14bd70cf5b980f8cf76e397c8340c33a37c54527af66f51c3de9ee5ed2bc214ce844c7be0efb48807d038d94e2ce4fab78e19df8134ceb0880e3bc45650f40a40d68cc896dd99a6da3b914b67487c4e97a31edb156e15c51101c85403614750dea4ff55ea5dc4b771f069bf911eed0fa0f9667f8cb12b62e0a8dfbc0fe6f3bbf17aca2837ca7fe81306896900526b90c666b8a67f0e990f63d00991c88a9cc18caccb35bbbe6760131abdf07d7192f07d35a91a918ff23b56fcdba00bd1c7f8051a41363cbb8aec25a028ab029d4499ec7705af8969bbedb99e5783a16dc9143f175b12329d8ea90064b7adcffe9e2aa1c9deee6c3293e4d8faf2120d9e98684232c9080563a2891f41b4cefa96e8aa29c2ceaee43d489c57e90bed8c6f0e5dfcd2fe32d1c00dca4bd1a997ee956436dca9a9e3ae718d6ec538259a3d389589f6a35bacd3ef6b98326417a2e1abed857276c6a7bf3d278effc9b783269a9955366d19f5699a758ab0e437ad0d94c7fa9cda7d99893713894e55a595c25c54a25c424cdb565c140b5dc57359524f4f62e1088be83a701a4c64943cc9ec0334c3e7fc279b0cdb0a29e31d436a6c833628d3a9e8e90cc8de508a7a444e17bdbbade34bab97a9ef9f5a405a5981ff9448acda0569216baf4b1d993a8dd1b361a6d9598656a268525b1e5cffeca02fa502968f2e85e92c1687a1597199b5bf8793909b5fe63006cd65c8a61033f84ba4f60db4cbd7c3b72fdcbc6913b72123fd0c6f19d065939a912137a2fe4c3a97fee409842b5a7291f41874a32159ab552994c006110e75d62bca6b0f642cf3b43ca27525e5a68809aa243b44592210df9a1fb2f1789850c7ff75dcc2d3d2e57a8e7367bcb65c1c2c5969c7a06c09a7fb92e5495728324cd9b223a2636644c4b7b8195acd5b72307338aea9927211b60fbd41f9c020ce6dbb6c221dcc20d1f1c0c41a8b1d8d28f18daffc5c7e0ac30511ff0356d28aa588297bc6d0893fb5e8386da5123951cbfede7cc520a6dba18e70cfe59802fbe751c3d53b4897b66d924638463e14cc83fc03c6646b91a1fd2863abc3fcfb36d713a2d15f0cd783e457733a9d28837dbec7d3bf9aa48d02f7e3ac2e787ddd9c48e571e779e61683a2f0fdd10851c4039b6da499f2be658ac5d4b5468a72b448022746e57e51bb24acc489710c0a7f51f6636720cd0a0a01760e83492f64b0eeb9c7c048b176182e433174731a34dddc31cae75e7c4b4985142724a80589d0f7a20c3412e65c51bcfc7b2be10d336ce75c20fe129681c908e0da87d827624a7e2b904485da4c2b5a19208d068e7b463eb98c6e23f4507e9a27aa34aee33a0e44bcb4850f0ee711cc9e327ebad9f595aaf9cebdd6d3c30139dc639ca063abafa61a418d46eb3c0733a0a9904b4c0aa4e61ba869c09f082ea0946c3804af695fe85d18f1af25d420f9352dbba731a058d758097794ad9536d3ec4e4433be31b5b6b0b6e9fe5fdb699b3d645eabdf5dbeeaa9e2e1202addc10d354e3a8d407dc1c242046ac4ce95ee4711bd5bb30025a32748cb1962f0a30dca465cc6ac4aa1f2a62da575be16d0b97ad5d207b985454ad5b044fbe181e9b489cbf6b1a3e040e45f129cd57e27df713589a45783efd9f9b2f810b27247b41b5f845d83d86f6f89d511f7d896fba432a18c4293c884852ff4b3e2240fb38e871fd50263c42c45d96dde54eb4f2ce9a23f30a41042b3d8342fb07fcc9155350c0c0e07996a1a5722304c01a627c8ee061197ac88b338d59db6e854e1a687d5e8351ebe05bf98801b509779f4be071180f708df87ae01e889663269893cbdccced3c47f1740cc33406ba87f7725d9f992b2d7649eec452ab8a502a8a22fea2501fc456aa45100eec400167e65a93c57c6f1ada28c336b738ae48fd5f910a5b77b347f662e9fbe569eec0dc235c752854f3cb9430484ddc2135b3021662b94daf9afa0a8f39a64aa6aa1b2d362d2eaa12f6c0064409f442481050b5be2b1b012beafe794c4413c4db6bb67e373c1f427b3ed7cb18e62be3b052d1749bb303d8956971b22fc8a4b1af68987c8303e207a377b229b757c01bb9617a2ae2a61244a73c1a5fff7a122df3499b41251f5872c8136b461901ba64b1d0656f3c1599b2b327d09237d09082a28e861048a06daae86b718fb8fb6f65b9e7039d51cea4c76f054335e703c3089b655bc7ba93fb24890784aacc23aa852fd3f984376aef9321f4156bcf51ae327faf78aecb4002c8e92dce059e251a5b0d44228b320bd92977544a14d575b34b8f72ad104d8ff2b649f8bed4bf1a7b44861bfd1dc4daa1fc0a425b223ef663788fd89abb6bfbe3e10e840893dfe6c12e3a607c02bc7bb42664a2111748ff058479cefb3cf4dc52341d109001cbcd83bff171bfe2f4e165c358e791aabd8611bfdbce3fcb7f2477529f7ef537ba5eaff55a4b40eaf393b510c412fa282933323098e454e73aca24f95447854111c1dfe8bef7bb8e6538dc6177277f7a21452eba8dfffcf1d828ed52551f45201115b086ed781dde76ac4f0d6df63e4e24baab1167a53411d476db32533571be558367f4a433ac629493725d6b6f6bb276ec51096e6071b4179ea271bbb00b8efa6c30495fff936308ddc3c39504eb411a853bad05a097fcaa9aa03427716aa6f312b0478d30088ad19958cd97cc6ede01ca71704136b8cb2e9475302cbf78c40848801ae55e427d374532d3f60d637399bbe7a03e5cac0974d7e244001e3d7ec43fe1c605692a2fd0c3e7e3be092fd41b03bb85cc2d2ed6207fb1fc8c8b7784a42972846bda78861b57ea929813d068a8c3b3d9cfdd3fbfb0025a95693e7d54a50357172ed3b48585c32a602c70994717658895d3ca7585688225bc018047f32465084ebdc73fab38bb621e8c22dce4b19a9e02b68e3c44cf1d7b261e0c0362396c6d76eb4f1d984fd3e726331b2213d3aefca537c1c06bf5d626a1e1299037904538bd820c02df0035f0ed3a11121a7e02eaf346f1eb6cda8623078c1d5088884077621dc45f584d62caa3b8b4f3425541292e5460ca21ae24a1db73d53c09675d5e4a06888cc459160028e942425e47832222142dc95ac25fc457caba7b1f83ef0aebf6d3b822c49d9fd9381b969f7b009aa7929ac5d8fa0629f1c319fb0966fa5bb9f457e0569381b7a1e16dc49ec601c722a05af4ce4eb1f9e035c6203982017659d476ab85287f2cc9d5a7085734eb4efddd7035abf9ba60199c10711731ec6325678e8e00ab9919f4808bc532477b5efb7aa74abae0293deb587689310c50743c56b4dbdc4ce8cb3a8e2e1ddbd9af5cc2150eee136cb1dd61d968b3acfca7124ea2424cee90c754884d31cbaaa7d851cc593e92666af81360e53072784b1445f904e45a9e90eb3a9af1414dcebb6d51d918f5363c91477f629a59c33f3904cfd1e770e3f4eb66bcd8a05f880df64f09a4edc8a20d28873310705d0b8d5dd79182a5cacc7e10857d331c7e13d1cf50a587da5d6bfcbe4011d6b32a1bcba5173881d2c025d84f74e35baddee74e80b3486daa44062aa976f00e316c71ab9be857ca97551819aac89c01c1ce69bdc32619aa163384d83a5f366a4b3ea1db54c0278a1be863aa67958a73fb9e94e926b118f46a5f680c73df48fe6c4236f99cddce27870337955dc4821d136771c898ebc68125487d88791ac149cfe2fd7f84b36a5f4327e6c06c66a023e541b33db914275b2e0cdfce1a59acabdf04ce9b43aec2e1ea1cd47337c2641326d042ce4e0fcc1650e4f7fd4b70283083b353db641f4e4c829b9f4c377c8d64eb02b6986620ac6d2089c7ba050638d4607915a834887c31245e7879e7cc40617ab3422c01fbe501666f839ae4b8b0dd923c35aaf7015c09ee4799e2cb782c1b783edc4203d47ca0ce54dbba5a594eb0dd7e43484f640de06e1f0f84a4ba2abd2c8e680cf4ecb86e13c0a77cf5b94061c7bad8162547fdf58c3287b3debaa0006a9b8392c31f0a12a04b62917be3c9ad9ed78b49ba6dde6780ed4d1372005dbbaadd94f73b08f3551b95b0de1b13914f47a0c0d72997a9a2d7ab91afd87e0010f8d2db0a8cd74b8141e1b1227d435394a02ec1d40383c9350209677ebbe307319e3e4700b5f0124c705a275fc7f09f3a78018e5cd48f7c46cb0cbe2409a8a580c1ac33c9ab64b7483617b420577041c6b2c4ab0e2a903bd0e7f034a0690b5afcd0b314c88590699c8aa09baced1540d06c5a3e9e8bfc1585429c383c764b9e7a4be9959db52915ca9e2568fe1482d4c5d728d30f731050ee8e9a9d11299e8c15f77990e208cc81f1df8657874b845d3fa25b73bbae507109687569a79005d19cbdc2e936fbc0a40bcf768fefb85f3425045b3f6711afb92a6a1e63efa93b32b4844fd8d526c2ea4a0a1c82bdb6c57f12f04d03dc5f8c55be99e5d41e8706f97eeea996a3d7bb52773e68f1a73d83246c284c33e22889b71a60b156b72d506cb6a46ec16d99a6b95106b24bb02a40851ca72ddd4a570bffa78052e7555df1fab5652dbef5f1fd737a8ce938c8c9135310d6b0551c8bcf9cffccfc67f83de3fa9b5ccffaf96db4ae410153f22df2629b24e0cb700dea5535eac39e89dea9a485f81a1839d325a1c01706dbd2fd7641cd05d0f641a04c374712ede2877a6b5572e3264ee09cd81981b8c85120e74c86561ea732df9e31178dd96dad9fa32880446a33161edef13f0a00b5873d00746ce730ad5d3dc049d186821486f5a2fd704ca43690bf9c69cf1330e44667402c91f27322bac4bc5876f11aaf75d9cdf9ca48f2fde2471c5dfbb67db6c5cc06d771678eb646b2a7b8bf10414ee786d594007f0386b59932a09476311c872800f2284c53427cf8e8e4343a40530fee5499ff2417d73667c520b1ae7f60576be70a309bcdf81209c7e23ad0d70ec47bceef786537e816e9e8ca711bdfe011bc7f22790362f828242c82674c28af01fd7c1a59e2a5c6fc64018fa9a1a43058d1fd5cb1d68fbc2785e4f8342d37e48c1d56049d32a7d0827f0a240728036dc504c29e4630e9886021404527b20c6ac70bc5987dbcf915f0d8ec778a41c153196ef64d8a72260e62e128ed5634b990b8e7d66930bab5edd9ebf2f04d34bc43472343fd65f0a6abc8085e662c142a60fa9aed5bc484109b39e1184c6e68e7e24e511ff302d3509b7468f60e84fa7a9f4689fb3a5f7c16b52fcacbd8687bf5957ffecf5b5d42816575d7438c4aa6918c22e3641354cb7b125549553256077b701c8bc0f8644ec0122ffbd7a0da7a8eb534bc7696890bf22144adaebd3a4b54d4db921e88306bc92724be6e268968bfbcc2237e334961b29b081292e2c3d32b4ccd96e8eaee2cfb7ae1a2241c96ef4a7cf0e3d51d4cb5131d1ad4265bb18f752da0bfea40417c4de81756b839e4eefc84532616a61f3938511d6965abfc5fc9764140a3e216e2b6c45bedb762119eb4605b56fa2236ea94069449e807ce9240d736194cbcb013f3b8d9d8eb280905dde2500009ee06e1a3756a78a2f3bdd082ee80e783abb3507fb6eb5de212096417659f8f6652e8b046d74e6c1177c54d94941b4c0ccc9d00dff6743aa69464fc190c882863d07379a1d8a530613e126a7aa0ee565008c0a535a627623da2a65c87e811da0b1f25288b01a843d6b2ffa30797979d1e039d86c75e99497a1e1943ac68321c37867f0e95a9b4611fe77e530a51806985b44e8181ab12a9579bd1ec617353f66bed21c6306ccddc38ccb359d667a674d10eddd089dd067d3791d90d28f0c8091422135389138e29fb0a6c3cd0c34015319e177276c77a7a3fa81a6ec6e4881181e1b404c2c38b51f60774015ebe91391cff6b51ac7d0c1065aefff02ad20f7dca370de2e95243eb406f3faef2c55caa7f09236964fa36553ce9659cbd4d54124f746dd2a71661500459d875b3545dbd1bcf7d07dd2bcb47f9f072686eccace2364adc22defa89830546376319d06a66a17e718390a4de6ad13143fe13bb98960c759ac6ac05ec42027c7959f800ba66f411b27abb417e35b39ae5af530c7f061fde224f3c15dc2e997e3eb6af8c8d1047898b89da6f815e9ac361c2e3190c8c9cf5498ab189fcadc3563e562f07cb9bbd80c2db04ccf8574836d1519efe0fdb18d4a558c2f0e653ac64fcc272d1d33fdb98d7e849b87c72b7e7c464eb64bc3dc92a3a3aea2d1050286c21c36af86b3ada8aa57190282ecf4dc220f300019b599ae0e2fb95d3f5afd4bab637466c64e9d6b01e323bbeb056df8928c1fbb8f5afcb9f2be88ae2eb9ab07a329fb9637122433ad7fbdb813c5884062b1a777828b47a72422506867c13dc182b5acdb9e06ad9f7a43b8574db0e6470f41c5389cc5265d981985219ccf1a1c0c05b896a200ddee29b6e330f60b42f106cafa9fe9d0e85d750b0912c700946282fa5968212d63a21688c2205acd0ac8dd3597c8a26138a0c38bb3b438d110b996e4b556fe0346008b5658e1dc15ebf6ec611b4226245f7db9d65233d9861da61a322a33316d01624fa1301dfc0fd857cd2fb1547f3e07791724ece62cb3639b33095e23439ef5832c9afee5c9844ffb4927882c95de2e4bee534a237c7d446581e79ef2fd8083d487764bfdad24a159a1bfb69e6566f5abc4d177463c49f60dab6a2a38eaab96120d9075e8fd661cde87d008dd28422b8cd3fda80a854186429030fe0940bfa00c6a0128430d8b5b7061922b982cf1c3949fe580a6dbd6fbaf2763ef8ec72717f531c793883b8aed887de2030a4ffef984fc262f0c026ffa1c990d11ba56757ad7b736683a89b66412bf227bfec1ac1a47c9ee9abd9c9b42546d44ae90dbfbd3bcfba0a4edb22042c47ab1a71fde7606e7fde2c69cf9c5c1c54eb4ab4c26d6626d757fc304c83f50b52addca1291bb7a7cac3cf1fa3f0e109e2d80fecd075a204726ae892f891d2d193f95962e3cfc8ad11c811034647160ee76599fd4bafdf442ccbc58e25e62386b982960aaa3c43b0bc4b0320793809818062218fa01ccff84bc32254694046ea8342ffa76a80a2e67df1860649b746cda8e7d8feb2c666a1c92729a8570e65aeeac0737aa623ddb9fb1ee88f78d4d9cc602870717a0dbd9cf0722c00914e3705437f3f5c1c4546d8dfd043ca970b899420783e4fd43b183f18a16ec6093058975796bf8ff555ddd69d51e4725f6d6c2f555573dcf4b01e091494cb02fca61c48effcee6b97e06b838aa9cbd08825d1de870a6e1f0c9a13955b97179f2b382d3d118ae36b6e8dd222df61f09c2993d4e95bcb28165c80ae6863b688fc36e58abdedfe32a6a601799e42eb7e530bc9a8c4e8ab01e59cf7b1f91b3efda8888dfda552fa56c7397f1b49c4a5d8ea72269d48fc0b7ab7d0538cebcd5277339300330faed7e1fb73576430057ff453f3fec48150eb7fabd3a43d78b84e55f0cf7e386c4a8e8d66ecc22fc4a7bae17be21b953abaee2f6275d2c936fa35bf8f0ea369a3a383e2d9367f4f393c53006e9d84b0a70f301568af74896762dfec6a159fe90c4ac4a91ee6b6bb317de88dd159bc097a124144ff283b72e5c10a3e20be29f09ae2762840ee574a0f5290ab9c8c104c6876e114301f76fc7bb9d2bc2654b14583a67c7a55e05f9c78719c916f46c2b705d170a3876bd7844815a08776e4d4ee74ab6e0230b977b3a3e6c5cc29e320253374aa942ec4905358b46f6276df86d9d140c9578d908f448c1df48ca125775acd9ef433629783aa4147d4d29e235561db95b0c07059e8048018b7914a21710c7f642418c0b39d871a07982d076c6c3614c811586506833b4c58dd997f34387fdefa3ed584db8e8effd6e859006162de23cf46324ea19e2cfcba50e02f83fc0cc5c0f6cebb5e40113dbf60642619129b7da7dfb3b92e29a86bd6cdb75343cc6a73f03f77525fe32a420eab41b9f460cd358caba192528826cfefb92224c94cfc2d9144cc85ff9f387efa1c3940fbe7555f191801d522687936dc8c814a438d6c411d9d63af0d5daabbcee7ab22c2479afee0ce1fabc310703525212c0c631f269f0bc6f2296f850722f8c2c4cb516588261aa0812ccab7fbdc0e14fd0316e86039ddf598924e598d437f4b4e23d01d664f1a603614ed064b7658fcf2d66b92c796a1f851db7aa2b654581341b124a44be899a64b4470c429140539490f16b1e375dff16da18437ad0f199bb877848b82179b2eacd5c253830685bc434ada92dfa54896cf67d762fe370f0df56b89c3c0fb451476642908041192b957522761cc185061e5b9ada372e4a35794a9ead5fa0798ef708cc9214ef879196d452a0a8ce3b1475c55a78f77e4412560a84133dcd4c7272ff8002e60e711840c87f12bf644958ac5f94aca4ab179b8e0069fc6e8630b91c07df7ee3b840ba1f8ae481dac5d0ccc7489eb8920366f23a396e005811e5ca6991de257be9ae53def2530c0304a1fa4508220a79b480168ee380bf4ce6a637758d80f5f6471d6f72981db9d90389a25166a6ab7dba7cec2d908856ad5907d05e357d88675e2f4636e2997835acde50a50e5d6a5d9237cd25edec3949e63f6c4cd50a5f90a69a279179027d25b5221472d7a80167e6d431d288b8c9684776d3ad37b47c9694f984a816cbb0daf3297fdf69096e2800060ec93715b8c82e3099eff4bf1d3bd98697b4a1b15a2edeb5dbe93c082c3a776df32246c69d7498823b739957ae8f1a68184d5a5bd1cdffaa0c761a8f203ddaab3c1980cb1da24fab25505dad2a6d54431e64d5612537910132a166435f64391985459e8287a6c2b34478e9f817446085cf9e6fc18bc37f7558746fbd52162429f39117057625487042bf60ca3ec5566017134096c08fabdb04a96f3e7690098c24f8628cabdb396ba79f30ada53b6dc03c278a64a9d6442eaf0175ae828e0a0944073744a7d52b788b7957121803ba4d34580abfbf8c5d7f0fb9c075deb3f47633bcd7a75f700b9dfd58c164a2cb8d43595a97e8be8ca12c24aab89deea0299f261fa88822446056a482168dfe2e01f3826229d4f5952e03fa6b5e263641ea82352fd56f88d0d90267b58106cafc2fda4cb5b1474d22815228c9dbba5952844f075720de0d4849e066d05dc59c15814cf1a49f9782fd4791ccbcd324f3143ac5d8219abb35d34db26005509aee35633a202924b1a896b048e928103adc45cfc070d056137fd38d11d06a952641acf3aa27184d9a79a0760362ebf38d73df451fa9e9421acac8cb684bd3300a5327bfe4b8c29f332727867d198e86584c010445b758179fb0b8f232da2436cc090dd5e50321a94abb7bf25b6a378e6903f34ffc5ebd163d4ffb795088c1881829cb3e208cf35d69bc82369af9b42e0f601049d86abdffec04fafb303cff70c665093faff6e2b24c6bb6b1713de9c78e8a51050a6eb4c43019d491c219590390097b2727772fdb2d2ed1752781cd34140274ee206d18c1218659669c4ce0562c4a39a92901177fd109b2e244173e5b4e4652949e1483ec8b6766d6c4c0aaeca0158745e8f8a1ebdff053fa148570d1c44aa740fd12972d5c63e5fb38c0b131975c8601078e61c1d3756fe7cef6171083465c521e6a9c30cab92a00dedd92a1828719d4844fd1242a71d3bb8047599a0fe2bc09b61836ff1e21bf711207830434721e6993afef9d13a60ef2ecc1bb8d86f96c0699256910347dc33a118c879109e2cdcfa1f0a89229c0b0f8058fa65f90e6bc09b5206d10b7dae6b14c62c49653ede644eb26c38d2c119d4f303caa5562a5c9347a871181a96cbbf5ef82f62f41b3d2458fb8f9938bfe20b433b6b88695bba1a886d2f99404265501b7eb7a233f0b2ba5974357a87dc9816c41156b490d0447b02702d16a49104d7edf8217028223b1fe037b19873088cc2417dc5725f353275574bff9923ffed57dd8e34ebc3d130eed9b692b9f28f41388aa21375bb1d7dc092b4c70f91dd42502a03c8a50e70b03b667fc6539453e4c606712025e79ecb4cd0d9e4308df6ab9f52ee7f1321c196364f29aa601c328eccd1cfa7c0b9ba1eebe427510cd290cf73d7ff244fe382962da80d7ef31c24586e94dc4216e8e6c41e65af4a523407114ef4b2a3204b7116710e33331e40b17c5221533c0bb65b04a19345858e2cffa2d3d89a83942bba8babdbc0416324762d419e40cdcd881fae7a033994d59973074f870993585219cd7b6dcc4d63dfdcf0bb6db1ef1341ea332126940d5d2504e74268354cbe4f5ca8ccc4f9281517de2917b37d9003594606903950f3a55ae9b25e50313b504e96ff9644504d1b62a3f2081f3a48b3b7241b53674bd47e9eac505514667b974ed8efdff07c22c3c3d041d76ff09278ca3451d09cc848e8cddf1e6e7f201e4a5f9e0de7d53d386e3755bf67dbc8941d7247a645cae543502369d3acb1301d5c325ae7dd3a624cf2622eaa75944b182823d805a3fd4dbabe927a91c44c3bc2aa769e2798442b6bf7b35fd2f47c852df4d02365d6e95d7d25c29fc1930b88d3125a50c24fb2f4f3863caea6a130f94c1e6623c3cb5cdba16585c2ac31813b16e204c0aacadfd186d89cdbfa624562ea40e128f3b51f5d5ba8975eec6b7a18ee6ce1b6a73821cd3089289e8e21f6f9dde2561104df971502a5f0b525ee7fadc53c0436b1828140e56955cf47a5dee753d4c2727c179ea5fce2fbde30220be2f3bd6ad864c8616fe2269399808b6cf7ebe0dea755a77f63df1659e31561b3483ec721b49453f64f888ba0bc27937df0eea368b8e99a36e068997c39aead17eb09b7a74a0bcd823cc23dd443172197d8515288ca823fbf7cc7dce5b9ff277bfa74cff31e75f5379812897383e4386603460b0cda7c376768a4aba9333c4baffb6c05cce73cb2b3fc1d18e482a35730f11ceef35bfd831358ea3788e7693d5eb6e12e12843984010ee61e6a37764fb57740c743625902e25297f836c6c875e5cefbdd7226d56a9cdb7e8efcbd7051159405c8cfaf2379ceaaf3e4538fbeb282cfcda2addf18a6b1f702c8697c4288d347d5a0f2bc48f5fd464fc4dcea8e6f965f688251fc601f89d8f2c8d30ebf4813c14d67e2d4399567f4ed4657633f0aa326a6c84ad434e25afdb74afd010052713bdfce5f2582666940845a382f5e838db684253c20790425b219d6558791e9e3caae6595bfae314cc6a984801a134c122ce0efe8894150ebad8bb521e30ef013e670edda08f638a369f0d1249f1f3fb8abaf7585e406e6733a72748b2c6072a908d33c86c6f9dfbb8f634c3e4d0edd5c2e864b44e715c53764a9116edb04f195dd7c555909630c649e903705465725fe2fd12553ad39b9e1fd116f4489b6f4106553572b28b32d3dcdaf68917741cbac85a7803a4ccb3d9cbd7e3bf2736d43f05b74277d0e24194052d32ebe13e1a6c14d2ef24cabe7d2615946b981529f5aab49f45276ee76814b230e67b3aab84b3425e018a9089914a2163be6232d36555ee526a9467c26001ea1d927a2929fe9c0cf9bbf2eb2d9dd0a1c136bc97a8345a80c1452b5a74b338be9892a0a89f1f2b0591b4f17e8a92b4d408dd18014df509ca59ebf592a141ab5c1d19d7f2dc121ae5842a401e3c9dc91685e971abb98e3f686c2b8fd2d9c6e2f59647e770feb5687e90de904e989960c75b134f70b0d7f09420df75419e2e988b8d7376c3df30a42c91167cad03e403aab30e5b97b360facb1b031f1c0a09d0916b078696f5075e1cba4ca08a9d217bfc33d06b8686432277bbee5b32b20ddf2630c4b2e5b040ac52a1332ca09d978dc8d6c53daa7950f0cbb8d5c151a77cb76f4fa1b620b47cbd2816b40e44a99bc862ea9ad9689fbc95b5fbe351279266eee6841546220c4f2978768f1f3664b72bd8adc0582f659774d2f0060e02e1cb7053f6a44a9319174022caaece893ee6c3e58b2ff953da7e8263126e4a1dc9aaa090c6104bb787186e1144101db2e6bd6457d5e17135b1e0a3d91ff6bc6e6867c048d7f3c38e94751c02a72175e4a669c07e3656fcb6e99a80b9f5cdf7c5230fc408bee983b1d19a2d5f79a6c94feb9ef4830edd10cc3e355711212e0a8371319f8340c3696a825818e8d31aa9f88658c0dc822636fb0a2b3277a53a697b337f62cc2a51e3554ebe22dc4ea0315a0ed6c2a171aef83dad413407438ae9bcc64d9477c00da330b2b6ee90213cf25b98db9a44defbaea0458461db103c3f385c34b7080d99d5e08644b1e7f2c6cb906d74184fde3c1c93a7e50830b765da13b78e66332cb7cb6ba447335e7c5dba7481a391e3dd148d31da9bc463788e0500f288c168b04e66bca1a182cbd9366925f4794a4a714253a4ec918e9937310ef16f43c056342f919eff6f14d9696058538243f3fca84e1ed269d4f462acb68ecff5da1682323bca7c6e829248452480185667d6d3babc7093a164052b6b882aaa1daf4720164d5a26b03571189a7a2c8d9e9fb0a50201cca6249c13ae2d371d7370d45ca957ba15b125b5cb3f65bef08694113058646c8a757fa6a4603cdbd61d89194ebec7d46f3ea47fd166494b3347a74b4066a11aae811c03149d08d649061e693cf6514a2cd6ca8684f3c5840b653cbcf72abfc043826647b0b80efc042cd8d29ff8c8a827fb0a34c8455ccd9897a606cee05d8f2680149b792adb4aad962e15852b9e8cde99c73b9f86a4dd2eeb05f1140efdff20066f9d8e5c2c4106b9de2fd940b3df1d22fb5f9c1452c23d39c1bb60df8d0888a34e1a88bad72d37b20885b1f22a5ed974534309d8384015f012a6652e8a771f67e8d5a836063a03e8beeaa25ac6e64bed03e5399acd97d991d8cb17974d8f88031614711655701eba1ececa57f671876b43c33b35fef9154b4f1f8592a701a87b4e4f398e63e069ae0de812d7e58b2f273f20f417f20dd1702099d3ab955daa065f111f603b2de2b85363d3f0c6766e5ad8bf5b1d002ba2dfc2f5ee4a771642ab5b6d0e14b9848014dd403bfc6851258caea3b68950985553262bf0cec57aba29080ff3748a933d460777348d779e6f2baeae81a2641014116f5550bc7b9a14578f8325688a6e480d7d164950a4cafca5de85ac9164d608be2e46b3e3b41b12594a5f6a86aa6aeadef16bd5c0bd8684112f371c0e3625442d71a9e5498ef67fb57dcb52308881cffa2414fb08a2929468623c8841b5cac3147638fe589be3f6df2066bc241acc3da5eb131998aeb58f273fc9a15cee5a2df4d8252efe066b31b1991094936dba7418b3cac0f25bb7391f9059135985ecf9fbd3b2931d78454028e8913853c2db9df4747d31ef24055c8a40ad59226197f30d9b25bdb2a7b96d80cd5cae62d986609ec426851bfb6d25f2132d5d149c461f9aea50594ea088429f9013648f1acdf589ba3e6abf220e6d6828f8957b8fa48b3856ed2fd6b0cd15d1f69f2f4e4cf1034e589f1f954c8f0db326bb77e12595dc45208b5bc7022f249373fd051596d491c880c54ce69db0e5e0b2b26f8d91401ddbb968382ebcb998677031a91c330a644a2576790a61048646f2b0758d58aa50366d032e4e7bb7ab985b6295b6345033fe6ba1f625a3bc936a5703c16e6277167fc5d2d31055dfe4d3c371db2bd64efd9fc3c83d1c26c8b20bcd7663b8a34a2238e6d671398020a5beeb37cbf24b35b515e0ed124ec3547a951b0345ffa2157a81fbf159e64636c553d0b80a77421e1a0107d4d8e919020d437846925af48c2f24524fe71ab7d287999c60ef9145436714d1492331afd5c1e70c111356ef0ff311b7baa20e02ec8ed5a3311b33f179fac088be249560926e68509278af7fe841a78164e591ba086c47818a4071638f0cdbfe22191be76334520f53eaf404e04e8f45f7732a8242b79a38ff6aabfdf6f540e966948924afb30a0433ee7c82a86880b501b81238e36da905edba5b4bab168a92c0882a07cf1c72655294337f7a6b89ee535944d6a0a51d01f91dea6d876aaaa82fdf37ba7643f54a8a7b39bc94be51f840a015d249dbbbfefdad4065ac8aa8e14a0cdf57627d32b5e8581d3673898af239dbcc8067f001fd85976e106bd199909f4bba3875df39c2740a572e7fe8e41916ee6e7e6ad06f4d538e973b447c38671bb4e380853a98d2d4ada30926ff1815465eec2e6390425f9ff13c4cf7701616a55ce3843b980eea35d9c350445cb9d01373ac2632d9f6c8e8def5c6fb7ab0266e1eef9aee144ab714db541b9874adcf30c3e475888a11bac6e58d3b3903155b8fe4a2a1d170446d078054a86d42c02d187a3ac9e966d654451751a6eb09a16077adbc758d80b8f9c3415b0f80f3726b3616df8492965c9e8a28899215d8020d42baeca7a4c017cceb14e1542c4e62a5f3e8079217a6b855bbebd7df1f9dc9826c19cf624c24b05d520d9dd658f19c58086c5a9807e658cb17871c139e9d4de5a8c2839d7179e5e0854fe8badb63549ada6f3e0a61edaf43ee6028edbdb820893ff1f2f985b8ea841e78461f43e9204cb90e51072441a0429c37936fb4b0e3de836640bd2893d26f2965b323e00b751c271570aea5bdec2b9e504e80ae0900664a4faf88e94894034d9f3098cacc575a4e2f8a008bc6062dc53847d89f5b97276b2efe03685d546557674436dfba802f8d4bcb9a7529e2aa0a3a22a6b44d985d1729208c0e16866d49c35ccc73c00730ef5effb035b3e9586b8b37392f2772556c24d54812c780e9a9a5c2790f0139524e336adbf847473d9dec3ec9646e1af6391c583e580802ab2a51838e6935a642fb199e9458619a3e3122ff0093333aaaef62c8776d29f8305232ac23aebce97c4c7f4346c5ebb8e39cb9da35ff21f01d12a770a3aa0a20ec2f5c4eed6b9bdaa35127647eb3902db30d4897e8e15410851608ccd82c28707f1563a2a2071e104b4b18652a83d1061d34764b1805023d15184e6d6c90248935e8576cdbd71324b498728d213e180a7b8d4470b1b3279c268e6443d903dc9c16bd51181e2406cbaaa34ed62d5484c74adb844f60cf428ae78f5721acc18bbb81ab925e39491e1674da689254687e5401161e7d158b3462c1bd0fbd4c2f48cf6f32461b01838b353870e12415a95708a1e2938713969845d131955058c100be1f6c7cf4d90059f9df75d81676823c8a140d2b8db0212d2cd548a472aa122a975c1a47a3adfd84201d5652fefdd024ee34e2451e2950727c229d9938b0fc9c33ae3cab4209f7e50364819304a82dfcbf7cda8b3222c1df07c2ca6af902966ca7a8b3304e994ab4f9900a27f10748160b81544d05ea833a627c881194ce8ee00a3afd2646ce7d8e2b9ce0667b5650ddbc42b82573600a48f7cc8ca37f1c9e815d8e23afc4da9480e34d262aca2c0ed623b37349120c2ba7b2825330c311a67e2306c3c8b98ac82ddedad1136f6257e09ff50c5feb0e1ceeec4aa501e3f742575eda7a9273530d1ef4e8e550fde6d3de8fa3e803545b0eb3f0bd73e0e57cdfa87b4af398b87da3ff22ba84d1854be4108d7c5524b80f44e4ad518faf8232b4217475f63d1bb8edfdf16e042cd59fb93419236e803ba16a100d74a8a6c40b47da9bb974424d4a89a85c9b19b68b72c445402cd8942897f3e2354568b01cd926a0407f7bb007da4a94a14509db3f8680fd9e299615bbd089ffba6b82934a94310c219b0959d2d492fb5641e2778b8d536aede29d966ae4d4cc106787ed06cb3ede5dc34d9f40f936340e349e9035ac9e0dd1d2a4c2b08df62969e73274ec3874ecabc0486fbe9c5b89e4f02615154eeba7190fbe42826e6ef51d0f866898776bb1c3f85e883bb0922b96abaa7574ead95bdef211c888f0b7d808b489a3c9a864c10c9aff1dbd615c27bd8943085d3175e81dfc3a69a846e6e8767daaf0463fcf74e94a03aed790dba7b0d110abf0365af5df32aef69e5fbac9deb7e19d992e0787dfcd34d3a852b97bae39254051fb473d2cce07674e192d141820c33c82df9cbef1b83d8919c722591b4f4d7caf8860db61d441cdc17667d74b6cff967c52fc1df74007090744f3da99aced7446392dcf05bd7a125fe8ae16f6f9f3cf92319ff18b7c0f4a525424cfa0080ca32057ef50ea270a1d251025f5d8800774e82c64deff2e3e73224b6409c7f2625380861b1de2661609d303e3f349eb41387359ca8231457d1bee0025d452c84fa668d8162c2fdb6c2e05bcaaa726c03659ef5e571f57175e15385943fcb29823b2cca796034b52f47ce521540468720624884e76aa429f05d5f94d15314d2c9ee9b8109f42014d91e143193dc824e9a84f7732f7a4c101d93c00c12f4cc00f880c7cf1b8b792501d22d5b2dc27fad76516f26b1dabf8d1eb4e551d27b1ed6c2d514497ab6724731423a2b46a14397bd22c47fd55249c04bf9f1da248484aaa089b488f43f61ecca7af94ca777fa0da51d54cb2d6253d1216167a440babfad2c5cb768c22de344e8bf5fa1e3f9618964d842608a9335171aebcd6dfe787c67a324ad11a0bdec330887bedbc73d6d648bc2bf56ccda107a876de4ef2ff2384ccaca3e4730753626c31ad3c5f35644e1aa31b7c4950e60271c09beb61b30a6a93ecaa5bc1506107edfa491a02c6f778dbcfde76133cc77be7581f04efbb75c178333b13e32f6c04141ced98e5a10b7d6521c696d6bdba997475a6f56a2fc6476a0f464311279e6437e23330fb687af0ef9e73092107a5989e38383d13eb0d8e4d191b7aca8d2afed3a38a0d88fffcead8a44e88ef7ca4d74e65302acb7d8251ef072d476729040d1a2407340fb8d91b24958a5e518f5c55e66e7b6f12a01457d4b81e29eca84af61da735f00103caf088727979cca67bc878b9694bc8bfa4dbe1dc8bda354384f49cefb9bff5ab1366321448f4d4ab21a678d3ebf9acd4fac06d32aa66c939223ebdb1899023ed613035106eda242f3592fb4c696421349f15755a8447265931bc0a340e3e178e6a508f7839cee4e9ee60e50be65f173d47264ba9fddb19a36aec3848036aafbf5e6bcbbda4c68b1e81b36f1a08139344a9fc140bc0a964b243da391c39e893416548da449bb1ef699d4fa49f7ed2283cf672c7b212a71f8c1933176090e54ec8aad90811d341cc79a53e64a9d94bb0cfa213cc8221da2077aa0b2f83ce5e692999159b627587c877e2ecbcb54abd15da86193cf42dab2a617b637e30eaea2f13aeb923a722e78ed6df128086321cd30f5d0cad5bf7c473bd9d048c94c690d6bb0eb1a4cef2068eedf77fe53a16f335c6d67d2a763f62274ef397f55347b656f448f5b0f15ba578bd056a9dc83a09e684f2dc5cd6bbf62bf99e1d13adeb59785917396f3a5a3fe729e26b07f4cac15cd681212ef66464ec2d86c7ff0466322a35bf449316d2c1535ab75f34b8124ed18e865ab261d2eb339740b07795271f75ca989d2954bf93b324a3c1ab94e52d57a3dee814e285fba18689b8f10d9b7eaed4a94d101389b18c4d972dd77d3f1055627706537012b1a7a675a95180ce2ed71660981921161ee03131506be6486dac8e3c49ee0702039205f9fe400c5e1d311c6b3193b9771b647462e2bcce7eff5fb3d170f5497b3820db85b3852598040bc89cf8476ca8600a94d39006cc0f1b2ace80de90e469956de692cdc7190d07bce86ad5b5778c215facd8666d458ab9bf7574735d493fa918062a2f04fd3e8e56c5895d5312356d522829067c22b4843ca22294c7767a25337f96328ec4003bbecf126927279d972f14413541c4045562508f40e6bc816b410c47b4b9ecb06d500155fc0f02ce36cbfab8ac4a1677cb960269e9c69e5361a5bf9a2db697c641cbacfa7ef74a5f5dfb6a20f7b831525642310d3ee9e42fc9639dc49340cc95ec5a19a8e76428c01bdb8b1d2d88067ec2da7e06203244963989b1519b4e616fb575e3d6d924ab6a0d605d53830ae3654a2ffddab83883223645e0164acb900fda315dedf00b24e124ccbf506ae29a0e69bc60c4fbac96f8e4ba3e1d2e6d7992dfb1ab5302a1187a08a0ff276e9e7684e594c7c6665028445d2ff111fd37e52476e836dde38319fcf00bcc9c7ef2252e820afb01005c432c08aa0b559e57c012ad901c4a0dd7a6170ed135492ea6829668bdeee6698d11bd3f567e2c065e7d33b3ea6fc216206659b25ac06b2df620a72ba359a3bc0e11e896a74aa96f1e660d0149579585a114582733c38e8c16a0be310b9d795a1837e1118cf7a01d6e641060ccfbb27fef891b9c1e556228b9a8388b1efcff4ed4f3b7086f437702f68bc7bd28b0bf22e6890faf53ae72bacd806a3400183b3b39ac26786b3b8d35778aa43b019b77f2af88ae6b135dedfcf2695f506c5f2dab4431f95cbf613e27cc20519dbe2d9824979a909367112ef1635d7df68b26c9cda9a992adf1b23689ad801dd99d65f96e4c93d6559234d2c6cdbc261c3df443e68ed70a1a5b4d4a832a40824807029c6689e67e3991dc9b3644043a74015089a4a4b648fd67e4ffa9c28fabdaea147c3336486a4bd1404a778e44e1e04439a236e1f6d12289796cc5a89a19ef0e8a6362a081aac5b600f01b1d631ed0c42db69deb178d84643b8244362027b9963b48565ae2578618834e6a4215a589b078688a94d4ce6d64c97b1697f60877b0227abb83b02d3761caf67ab613f4ca70bbc48d5881fbad4eda18def8ae9f81e0d0e9c12ebb18b0127fb88330efe28880439a8a74e788e367ca7890a38556fe5d234412b46824997c554653397c2069cdc46237bd26e42a7484e481d085b4c0870838b9dc369ed66cec8e611cfabef639443df49e3b574eb4f30bc16feecd93b86c2b939e43eaf5721e4dc8030e9642c64f71bac924d4387fb6ffc21b614e5dc37563563047e5198a76fcc46e8fd15d8c749180b1a9511089001d7355bde202d016b81895c465f39df1b5a0b1360e442aeac77c76a159f47064a588b86837df5529c91e50389f8a9b882347a94e8e6710c14ae0265b8efd3e16cecece614d113adce96ec15b52143f28d0e97007183b877ccd0e71761cb7a30e3079b059e339e0884a0c90bc29495bf3905ed3be240d1cd0322510b302f1b4da0292c66ca524680788b71b914941060315c3b9f26c5e526baefa93408b3b8583ef0d102ad9831a6b5bdd95056b2a4bbb63b2462bea625dbbca2b1cb788677f1b1aeb1a405fa739fe121a28454ee9699ce51ba11e1521c94c1d192d3e4a910eaa97add2de81295ab967ef8a771c278c2e1070385d9c0bbcb66afeb528d1d2e950af98f9fc1d8e9974315f981c227a05901d3db5f66ee2344060a162a1197a73db39ad31874a48fc3107180ba155df8a43f17e53d01aa7df587163e1ae6cc2f2ad1f9e55916483e562d93bc7593850982c9c86d22dc8beaaa1b93a05cc4478139df7a5884407cf7a2f633e81d36a126831f78855c8bcb565e2dfe659e63205ee43481280f34d2b1a30ff830ce706e740e6eaaf3c08922c10955f15281713bb14a6980f133307a1f2fbf482c0a8215a1890b62f06e82a2654cc13376a1808feb101f3a08c0a9c719828a1cd9f2e4ad757c9c405c7377d7a84c470603d89c5649f43240861f6e1bcfd1ab32eca0c2753aca611ea039622ffb6653b4e15c2d7b1a0651fa857f955cf3b05ef97b5c30731d057daed0aa178ecbcc72212eaebf54cbf25ffc8ebdf80fa00122afeec8e01eefc1ed16b474e61e4e519b926263a91f649de63146b4b312cd8b818a722804e4094c61087a057908c968c38c805d33048da0b77a0e88783f4a1fd8998b8da283975dca9c60cfc4c5392c3b27ac72f682944d59ddc7cd36f4483b74ef6f8ed42ed83888b12f2cc7a03ef1d8a15fbc3ad2dec3e4697f28d5638545cf3695437d486154ee96e86bb55dbd98e3071c06db5288153e2898020f82a90e2e3d60e56b826eaf89ca93fd1b54523ee8325e290cc4ddf8fa11f5887c8f0a70e9cead01870ceef4b50eee5da5b4d4d0e8c6c7837824f8dc7a5f53ba6909af5a9e553d018c5d435cc148d3a6cd46445cc56d10f7d1290f284aa251b9c607bf17002ebc8888401017d9c3093eab735270c9ec2430b1763fa9872952f7dccbdd4de97ae2ceda532c1e50fb5690d56383ff6af69e0c67820087060104bf601a92a21186646a850bc1fa8ca7483799a2443dfe2455945f6ffe0486f42dde3bce591937ca9b4db3b322c01f292c103558792bd87260e6362c502084730f803c8974f3d0172a30973949f793edbc517ed1997c5bbc9c06811594969c54d379b04dae558dc040847a1cadcd91e84259c57c204085a7fe39c5f0172d55b0f5cad5be89d938de6c78f23e7b4a429c20852fcf25d547a24af5e2d22263e27395d2ab2bd1404248c64142371b8dcc30f44e5387e0867ecaa249fec81845a533cce379a9bcdcf5d9f9438638d9bd6a4715d74b4e6d804cebf44d689801f3676b133933f40863f643101a1ff71b303faa77f0f00fc233928ee96f148b06590e1ee38e5a76d06c09acacdd1a0af3e53e8ebb95507125e6be48f8f4f0246340ac239493f661b3319ee892ca4f546e4f0b532390bd1945ffa318787a61a9a0669cd435dc1eabebace04f19493334632c51c160294b0bcf8a48522591d2086c86c441722407266be88a57f483f4eaeefd44c776f87b0f4175380aa9f80545294e7254fb34ca402fd0ef9a19c5841b314c29e0d727ab451a60e6af343c8c096b52afee07648d2bba1d295f48692b7b1b66618bdcfff0c75050247757010702cf27bf2a8c8474fe3e92c33b8aba5d73bc55b02e2036f88947119f2af1ad384ead6394243da3983a413d5d5b622813cd1c5efb9036efa928d80fb4ab22192c3870cd28b61f8cde7304b1f88bb5e4f7ae84f98f061fe3805d6eb9f9fee1dd7f7fbfef4e653c3fae06918b93a28e3abee4ef37b1a414742f8468a9ec3091c023404a947c600018b84867a371f9549f28cde05428756001628b98c53adf3fb8cb48094ba78ee91f5445017c815f69ebcf1a5f2b9cb66fb09c2e6988f92eae5bac1729efceb5c2a436cc6d45ff12c76950cf6991583922dc938962fe06f06470d293d2617bd0018c6f7c0087775de1390cce0e2b43935f00afcc71e5aae9ca75b897a9878df525a0e4a60780d336998e3d6fb1dbe50959cbf44783a8eed5e6b733a7701b682398a05642ac35b1af920c5703e47db409f183e7b15e405a5c6a51333b602d5f099bd549648063153ce8f6a67e5c7aed554e5fded576777c3c1e3bef2a7572416b860282322e71337a694576fcdfa93f8b8df5a7cfe37e5a19c40d3d7ecddb75782214d2ed86044007753428d8842a2bb0a0e7defe75f40af610af5f1ef35c711862aea145e7ff18838294369dc1a1a39ab8b5947d096925420ff28814cdceb3ca40e7318084cd2e366ecfa86344b514a6817be5538f507862f9668cb28004f2b00cd9a32f17301484bce138099e63119b037112899d8fe3b27db6b13f07412376df6e3c9d26a02f79358b393eb9280485b27d752853d40d74b232a6e9b0f64d21273d6f9938ce144b669dc4e2082e835cde2152157c70dbe9b1e021399cb3b5d8a6b6908ab6732e9f022770f173d4fcf4bd6f4705dc5cc1d5cfa0727b070b04b8b77bb814e8de20637bd2e393e1b8dd2c000231108cfc89f9aec4e77e2d84a50c1d8e95924a1cbe689fcfaa91fed5ae86643564ad0d0328a614ca48e58e55df5aeebb99d136272f0e4c25a282f2fea940cbf4172300235e2d728b35343a80ba794075339092051703d479da0674db54cc63d47c36ab58e59d04ca749861bfec243522b0bdc71ce008b1cbc90aed897692cfc10626680d75f7fa184d66b3ef1fd8a887198797180b63c606f3535a401c82f2dbd34117a97e917030085b2284b0a8aa13eaf0f5e35b92dc99eb2394daaee0263cb3d95f1834c482be3f5e7bdc0979cf4d4bd1e3a2adde8b5e13dc6d3abfb6eecb6d2bcf89a84cdcb88168172cbdb209b7fe0c61c091595574953f18ea9a46cca1616de414654fda80251b37400b4938cad28fbd0e68bafa80626b7f16d844c3fdfff76a47df027d62a2faec4c5410cb95e90b5989973b7f72d5b8207313cd2e87ab8ef205004919e3714cab90e4ffd2cc13815787fca2b5c48c2e34146dd016ae46849846e1eb85ba9f776834fd1207d1b1d3c37f2d69baa832f2bf2d6fd059a4bff1474035d30fc39992cb99fe56478462aed0fc9de9de1bfc4f8f900d82b9cf3b3f9f33eb4d69c72abbdb25be9125b227b50fcd9729ba46ff13eeb6ddc31e8f994808e67c289cbe16c1de660bcb4dc90eea60430faf89f1d18dd4c414822d1b8d7cc41854472dc0b202a84c13feef6c364a28877040846ed85cb9d9539dc8b5678969075791822f2a1cb145659c411baa0830d8cd1f1db8e95d213c1380e165bdd4d35534e2dcd6bee61d480f00efc924893197a66593eef42446e55f2c3f1af103467ad74c5a183588dcf2c213354bff33f75d1e7e14564769eaf0943a05fbe9ab68b6c51a6911faea28402a8492602282f8bbcf21b3467c1d65036ba720598cacd0b1e9fd8bb79e52724408dfce059c0023f754ad85db4b6a4418caeded18667ed2d68ac309d11a028e736226f9d887bf31835da5b2bc198add01be22b952fa61a719be7145950612f4af5df075d4f23802f3547d5c2293a6ded05c2968a4b61765a17f3f9c473f863de3b7c455f764b513e2ca2536c0a3c1d5a75560d5b8dcbb5d32582bef7a908d4eace67f2aef3383cb853aeb6309350fbedbb92fc7e6d5b991f52337fadc0a3ad39ffba2757b036c6c334b715ac6431305031c3037e3fb53f24f494c72559f3017497180f3deefe20ef5b984688af1dbcdb651fbf12dcb494e940dd23e4f8c5f1cbf809ae3a6d66cc49f31c65d21f6a2c310df79eb715029ae7b53de0c61c6cfd7f4df5401a172139ae5445794914d903c9bf4d883d82269cc40e6aa0e2b928ad835903d1926c7080100c77a3265b3d357a9459b5f49e713176d2249b26a002bab5eef9326b72bdbaaaff25f1bc1b47141adadef5b7f570adfffc5104b121cbc51d0fdc90e9f151e20b736298c980b05c3742a87f5f9b060d5af155f78faea04a6e51dec0242440fe50a0cf5b18a8fa4e233753f236ee4907b3dadef4b7a16796d5e845b14a6e2e84f5ddf4fbf1d4aac8fc4a5009c58b380d82ca894303f8b47945a4428456d0cf08c5cded307279157d4ae6151932ce101074261c8c678a658f09d0025aee2b988ed4bca590034fbfa72fe7b0d2b6060208a1508f51d61cab83e1767cceb02fe0fa5cce07ad59a343848d14ad94bb970e11e5fe316420a985a9f8345705cc81a4eb644d1fbc7a9e0aca0a48f981bba0b472f720406189b695ce84ebe6ce41a6073cce780c20cdfa085fa00f97e3882e0d826038c5c7ce79d0acad3834765a4d9463e362f3fe2b1a99b5e3f78a79739571f7114181d84cb0f64e6d7e916656e25338808bfec68e8230bf2c635db7548da43b492027d78f886dbd7c8effd11d245c9d938be6df3d28cd7b86fa9c9b3c83418c449284888466c3614a697425300c81fd6604a9153f853bd5f5299c232c5fc60488d2702de32e4b5e9507388e5cdfb979e943a35a87834214666f4db73ec7b480b07cca04588870a7268511b267aefd921457c2e45e52945acf45b5675de5916237af7909d08120f88d965f0b1a4a14a5b5e031a0ed03b41c713ac5bafd6697f2d3724ed2ad00ebca801d15ed492a2df0268db7e0e4af5b4a26b4f7c11792aeb06fff28801680c49199c2f0ae4569357fa460d5877ecc2575690a4f477d9b585b47b1a85764ee6151d2d96e406d8505b3408f788f4b57882a08c3dcbba4099fb4c808c03df0aad629e23c5adeceb4fddabb808ad023fa641fb9cef7d87449b795c207493336b4117747d95c3320043db2300512d9a02ccb31f2ff81e318d485d01345610b4aa44fb4a44969439e218ef7e32a2fb0fa79de9ca3886d4168b0ef311901022b3ee8f0e0b12c84ccf39481f545b35f712206325965a35a9a6130120a34e341e13389f615a23f986cc055af20ac5707530efd9452605c461c0c496062c9f4374ed4efdded87248ae25c428b62b75cadfdbb637a7be98905cbe4824c4e77d2f9c0dc16aaf218d1ddb6510c70d65cd1098984106120eefd12dd403dd8cf7eb118a1b3514b35367169da519c8a92beb9b3a47954350353c38fbc8d14c299d8a44e890ac2f1e3b4d2d7ae4ef60b1ba510cedc272c4d8b4896e8577a6f2336d9aa3208a7cf889de7c96ac0d8dc24ba339b40e14d7d780592a2b6e4f3ba6759ee14479560467d409ca4998f092ff0309727debe6a337806479cfc46682bb2ea51658c54b1343eb50d3f0fd1e990dddd33a82082d840725050cff4460e0a82be9885d72723d5385abbab8c33922f8195c6ec42eeb9298d5b66de0759747c2bc0c12716e86bb48947725a28e3837434a376e524eab6ba14908ee7536b77c3ed7a219f249b28b690d5c87e622d5e69c325d8c607a5752c499ec90a1fda2c8064c28573e09fda94dd08ca4e9de728aff06bf6f120e6855d84a6e46ed0bb936503c982e95c66506dcf0cab19f13f74a83ba688169a4a41891dbb0386201f91addd3c6838555abdd98773621637569de11056e79a69a86868b2d508d241829a834a1522f77f2a5a4702d80c04f39d3a017997c622ce06486a6a2e1a35d3fa48a24749a2faeef33c398bed184467a3876055f16a44c67a1907cc3564d85686dade8ec88ebfa600ebe63d900d47011eb35135d6cc63cc2324f08c74ee54301a068bed960dad64794f4e711dc4989d0fd13511cd09342b79514cdcfc011fb9b34a0dbe56b4248e4d749df3e56224498151631863ea6304293bde46a63ca94b294d623d654077f078f25e0850b203da0bb3bebf8a4be5ef5eaf947288a01062c8a39e2a4f3f2ae3e6e0e506bb49a9855c3faca110a4e3db33409e2bc3577c976ff34420cf8731650e95e3af53144bc1d9d5f098fbfad8bc0434c0f329591d980394100c99a249e76a258ea9169a9e4dae417f85ace6ad47fc1287cd38ecd9620e697df6b009fd667948aa566d3612a199f86056ec8428e18c595d61a041b981fcb1f57d0c9fa18f3f4e3e018d25eeecdd2909550b3ac4c55dac9f4e4ec9b2c75407fcd12bc4a4ba256b25a9d61646b752715fbf4ba9c85828c275ea66d09f06f3676e027920b47cc2110136ec5fd62c14e5508bf87a7ed06156d21392f84bc8d550df8efcda4de22b00d4f5e92855b53ca29b4db5697fb1e2b2d00dca6de658621e319a57bbc731dda1fc9170e980b94ee6a05b72690094dfff2d53103f6ebdbc5af3da4e94c57f070491ceebaff0638423ad99a70546b92031987c557309f473a72c4b931c6ea33ca131e9c7fbfe66a6b2bd7f999b421068a4d77eb466d06c115baf6d20348273c87e912918598f28b6e492309e34afd1f264e074070e3749485fb8e576628a2ea6a3ad152163376e7b30136e4256f0ca43f8a3faa1b342091f7187db63a2838ef26c9d253879690067d0cf83d359104d0ecfe4a56136eb380d51bbe1a8b749b3d691e6ed28d7e18ca66a66a055060024bf1d3b85e7136f1f50ae5d898aa2a4554cba4a1c289f2e1e8213a16cb73d8301317b7b1c77f41c8cdc090d9f6da65a550ebc3392aa87d030c474b5c0c00603405c319832c2575a593b3b0f6bef336ceaad5c3024e1c43aa6de8f833905d0e4fa59daffff2ee05010351bdb9000214540ed324f08fbc4fc327fa44a165d2d0f8c173696651b27208ef3415cd48156b49cbd2569713ce0e8640bc6dede1f8f96deb890305441882ae74e49ba6aa23e63f825b376367d0b7f0a6bde029331f001d7cbc04253b1942267c75d5b55b43236a1511b4ea33dcadd2949df2892ec1f738fa23386ef4c1419d1f6f0559c7f9bd5c49db69b231f62214f3895e01c87f0aa6372b7269ce61847db04626090130bc34dbcf01b7d3ed1ebd3ace8204ac24d2f2d0398354b354bc480a1b9a1106c6b152d676b4ce718b6d6e7e56f8a602f48f8c94f0808088fb370f0432a3e10eff80c5d2531222002aa158a579b4418629d603ab766105390158ba4b3bcef3fcd82ec758513181b33051d944889510959af40cd06d4d0960ad9a4c7a03909aca64b20b28216e0a026b31aabd0a14be7f3659ce82e7675f42a41655d5ec622486bff0eba66a22d9949a7031d5683042cf5edb0a91f1d88a08ff12892ff2fecbdcd608310cb2384dcdd38064ddd893911dab656580c944b508112e0a2153b71b604a43de0667c318c75146a131f07ec2a5ffff47208f8748470ac51f47104c0d6f50cccacdde3a886fa19776c1e44d6550a8c1e0f33c71d9aa3ca36001ee3e8bb38445039607579b6a5fa356cfd103dd317976436729c60f671a0761cfb98769cbecc44a9d8ff1f6fa4971bab1dfcdcd027ae5f435205726159f08de3cf00273f472fd076b6dfd0326ddb799e5ae038c1e1f0c8f3bbb11f352d7020259cbbbdaa187a565fce14db7a240e52c822348d182269293f1d042d439b1f2e7090c39ca411c0d400612775b91131981e9d7fc01538d83b1c3381835546ca3f652dd66b06916f185daafe7bb2592ccc4a8263d08f8394e37e8803233f11c82610491871698d230af33d4772088523c04172949243c51939e49c02e490bbea9214811e27daf38c6840403e267bdf0a8e48061e8999454296d2dbd3fc5893f87336fe89ded0ac5d73291c022648bf4e40d1658e95624dabffa6cbb3d2e006a085a6e6c60289e7893e6f9ce6160eab2cf3692e393142b703a1dc92ced78074cb75bd92f0752b4cfcec0386d505a1d4034a034e35de2018c943d35c17a8773be6776c49a27833b30ef22f5582f1ed11adf118bca957de8e3d90359b29d57a0cf64a87117ab6c7d2b435f5f9c6eb3b1ad4de7954ec578f7ad69137ea521d007a3e13aab7fa88636de8e8d2a6293211f61a2fa7fbabdf1c027f730dab5bdc55057b4967a2c45409149de7db1e7c95732b033cd4a74350a7c2c9b5f780fc13f34af8443d0136f176f3458da9db0e0f38a0757b111d60033c36721ae6fb7a5b8e1de11dad6739e8a084a209baae524b4b30ce410303d700941b0db9887412eda3cc3875d342a2cb961d1ba9ea78b3e25a7cc1f6a75e43d35991688994d9dac5f832b373c134e327ad7f084036affe588eff9f5120def00824bd9ff1c836d62db3a8f1b409c354db0b425eac175528a41e1e6236ed529d32400d0be890e8da7faad5734506135c7db59aa4ccd1b8f332e82282a055ce1afe0b4b2c9a333ee17ebed5bd6c8cb359b6c5863fef40733de9b68e278517ab7a75027daac587a5de3850f22bd1e28f3148fd31181c665bad7c590c236d93221868c66e92e0603407368814d9b366431a808114a8bd7a690a68053ac41dfaa764673db824cc730c21310946459980f058dc2468ac5b5357f1706038090d66ffda2d9900e769b785091d7083b08946fdc86b53cad29712661b21c6c911487dae3c257810140050098e0dae4a25a0b02d0b08ce8772e53a8f303c4a8ea59d4a204d640a7fc00c89bfd97a205c77635d27b29d19f13a4c8500db24950007540a5409a26a5b3be1836160f0ee8373275c5fd0be028beb1c78eca0300bfb3c4efd32a37d5697fc0f78998597b2a83c570afdde7a33b97601c49316868525c7a6f8b1a6db549f3021507661fd41c69c8ac46eb050b0b0f03d1bbc79a918ba643b6d93828a14163da2ee1d3d8678bffe3f60ab1eb27f217e83b3615c2a7db650a00e9acf4530c369b87b32933636f3b29b9ca42719d19848e3b00a3b2c9cc1e178bc19e99d4888d4259d4135c3e4e63cbf9c5d653b03cb8561ca59d1efd822dec2a4333840d73c6cad1b1967248803aa86de825b30d03a4a0786b976592b8f29a89ef6b0c6a3c33f3a8c7b36d71696d6a83caf7e8c81cbb34d5d15c4e4c97018021e0c7e1e088721341c8620b09ccbf0b150c1505e3edc491c20d44ff75d5a4684fd2496c84df6de64cb2da54c49a6dd07490840084f8277bd41b924957030d8b0de2042613746ff54938dffc2910278e42cd11dadc2b480288c0e57070f05f08e2f0cec839095e42b470847090c5398d70d7f870930b1eeca83997239090c8319ba9c040676f9cb18976967035f94be70f99225e94b95fb25cafd32f48549175f927869dac2cb92173077cb652f57bc54a934a434d3d4195d09e31d4a5406eea146aeb3e43d947fb892ee7065484d20256dba5282be81345d428ea9a9cb756ac462556a747dce9729a66ef9986ef92f310eff98ebf8dfc98909399652c889b9fea1ea753d7262b8256e0c0d98d2c639218ae9fae96397c6ceef48ccef47add84976b998ae632c19969bf924ada01d26d7a3c7bcc875e451952825d7f1272aaa40acfaf29a313dc05372941283124ab75c03b72f6c28a15cf7af1dbf2b907bc7efee28a3340f8ae98bea6b0a4633aa7afa59a6ca64191548443665d9477fcbb22ccbb24c957de5645dad5e8ee91e0af472055221de6a24b1e1f61ad32d956af5363356abaf79954aa552a9549f8d6a65f3796354a0c7c47d8d27b6fb1a4f2cea6b3cb19e12188f4bb7da8bd56cbdbde85dbdeaeb48f0eeaa06f4963607a4f07abd66b8ab9a9ad5f7ea569be996d7f4a928505b25d7a9f9d517fe5d7dcd475ff58543542cb0b25ba9577d46e6addd4a3d772274b02221d0ab7a12bcab52d17055a0b7d4ad7e25ef617daf4e35279bd38cd3e9755bf5adfa19aab7517d0d18b26eab7ea59280bb58aa9714765560469f26f5adbeb0430a3da1d083127a455e95d01b13daa5db9f8950414eca260a4bc16c7a4beabcd3cfafdbb685b0fde9fb9e1ef5dd709f7ad477df0d07de48c07ef71448816fc1ee9bbb0930eb68ef7527db5b6cbcc37a95d65a4ff5a3f428feb69dbe7ea7ec6be422001a6c7dee378eab114c17201b3253e4125631b77ea4ef5436ce51adbeca3dcdc7ae8322e1840dbcf9f1e08d03f8a6be7befbbf391023d30dcde03d1c765b72aa86dd53d10754fd5ba95af2a222cdf7a6bf36ca063f74f5fdf93dc91d031f040221dbbb37e7d1511367bfa59c7ead67528cf7bfba7d3e9d4d9d3e951a7d3f661954cdd3a7d775ae24e9f9dea6f5f28996e3fd7b12b4122b2e93a58332f4a281b1361ddea2f5dbe7c5b410e94de226824b423145b6d1e0fcc7b82fc890203ce9c3973fd457fe3d6a4c13c753e8b776c3fbf6edde77df5b5bef5b78fc538eae5bebf726048e37e55021db8812c9f9ffcd367bb45e39e605b4c144a5d6a3cb1a76df3648cedfc31f6f0e9d6073bd29b9d0f8eb971ce30ce19666666666696cccccccccccc8c738699992533333333333333c7676e66666666ee9a6954d3346d6a1a28b9291b33232981e1123373f99de9b28bb9dce572035dfe21274c6019f05abee48f5d0422fb74cf0dfd2f095075d5d74470f9e5aaaf7d4a74b8b2244a78b8b20792aefadedd50f0277bbe41acabcef94576ee0451f0ae0ff54324d7c3f8baaffb9d305b1eb1f1a3604fe0e790bf6528ba31aec0f2910c4337be6e5ce13a18c6d7ed911f9074c9f72f8875c99b114e118bed507814ec7510e7cb16e37b817909ba5198b9fcf17252144df146c1f4110c2f51bc0cc576396956b5d3c6711daa63ee50282ec618511e073b789cbbbb67a908b2dc9c73da54992ccbb2148d52159aa669342aa5d8b66d9b6af59793948abaaeeb56354a4d6a38cff3bc1a9b1965d870a9542a65330304338353a954aa192c1b56585c4d4d4d0d8b468d1d68703366cc984183839acb49530471c0d1e87cd0a0d17522c41b9f831b29cc4821c58d8d231c8ea59042e37292144c9ac693cd779c0564438e0345e01b6fe2b322c8a0b4473bfc70239898ba5be4e67523930316d84841d9d4adfa45b43752ef6c9c1a8c437efd6cc41cb2c5aa818e495fd6a01d5cf92c71b8cbd95aed9c2cda625df99b0d20ec7c4933dd8a474b5a39382ccbfc51be76f0d8be9a7327ebce28b35a9f5f070f1fef513d3f4bf52549a2c4ba22121101331e208c4977fe115c80f9331ea99076e251ff4f9c1ed33af39bcc9ddff5922a296b4d8c203f4268beea3aee02baf3fde53af3ff2747b3601cf34f9d8f5e526295c4cef7db8111cd175da9ad3b69df976e457c68bfdd8470e36da68d7ea56fe9b3e8d7af88915ac488bddd4f1e53878ff75cadb56e5fccc2388e601cf3bb2f221173cc477d1129c5a53a1f274a638c11e4b64fbbdad7375e1c32361e95b1612f399963264f03c270e116df0684e9c238f886d207dd699eede77f808090de70e7ce4a97dc90deb097342e366ff226232c37b355d61a4cc772ae98e6c9f1a73977d68eddf92d3bd65db86ec5beae79af7d915b5b0a9d5f94877aef8b17b581216c60489fa3df71da17e1de48bd1bb77dcd05e398af7ddd456ca6107a090b1b36983bbfc1344f058b68f58db05aa9799aa97ed957a9b6536bb6c43af3b3a2bb929747cdbc99ba358b502e38c76c2f7aa95bb3c7308eb973e7ebf860a779e857fa963e8bd2cd061076a75bf1881e350fd207f2c5c10ca6bbb7bbbb7b7fb7bb7bbb7fbb19ed567afbe32948b428bfccc9ccec955677f7cacceef39551696626e9164b296553b7f8690c61e3f31c8206761678af256dc61859bef39da79766a65b5b8ea6dc7e8d88498c123793dcf8d24c13c86a0a6a9d7e26d79e805af2f904741bc5d4ad3e01792f21b46a57453a5c21c695299ad0f2034e962084624198214a8272d1b40ab2a97dfa3e21c184e382e4b5f6992c4e50a1484f0a50594651e5f60f892fcbfa287cb8614b8381b906f91192fde80184f2d0e1d3ad9b1bbab9b29aa6699a763a699aa6695a04021e130fe6d5b0833d982784448683f652c2624aa78445120e19066a705285174ebc80c589108c604106599cf08005c6440b95262d5496600f2482d0405abcc546cc11b7f084ad9e541021dd93a4877ab8b12789774403a31b6f4ca201ecc637d23c36b70bd88dde3bcd13dab8f1e37ffc9c1b990d37fcc04604816f7c54901f2028547c1b581317beeef6eadef4b32d31476748dd3fdfbbdde79cb391bad5ddb25b4aa4ab7d93f20054e57587c160086218600c63ca327767a50a9420a402dd43a47429a48758b1b15a87d2557bc65dadadd52abdabd06da3463187c7221a817e41cce1ee52ca393dcae871c6f8fed12ff2aed22d97534a7777cf56d8b81a91dac73d3ba8811ae8c9d64d9b9c9269ca446b0084773465a24db4894c97bb79ec3d5a750bbabbd339bf38a5688898a35fbeacee2ea5cb68148db808ebaf2dc9dcee4665dd19ed920405e2f343731590c1c50a1c507127983036232e7f3482d9083eba27f0bb6429a58ccccccc53cac91c276ceb9899376666adbb39a3cccc92ebeeb7ddcdcc1c1fa5e9b0719b16633c736ba3b21bc1c838e494280a82db1ff932e390f4f6ef600f8592376009f3ba9bc75f7fe3ef060c126f5f01cc60e74b2b80176cf6f45da7eeb84eed70e7d6eca7c1d964e350b780d890973c250e1c60ff7a5d9a876ffd5895c237c17b86bc47037b58417a4fc97bd875aa4bb7f6b0a264746b0f2b5d8a6ed5424b542dcb530282dd2a74eb0ff19e087b11acbd61b4b125968db927ab73d2cf5e5ad7894cb309286c30234b17194e59a058ca32203e3fc63811cbb99c34660517a7c90d5b52e40c7c860c0e402d28e3862fb2481ba488b1ae06f0adaf41021bfeef845ffb6d3f6b670a032c11c3062e2980e287266ad0400b2ab8017682273e88c157a84882871aec808232452e2a62386a32a4030b53acc89a1cb98880a8f8a2a40534306212e4063dac3086182b10b1e51bf3a50b221a941ca1030d1d18030819604f14210415192803f4c30dc6b0c08b0daeb0c534832a6680a042898b6c86a64234c152861235405942822932b0945011f21284192d5ec0c21e6939a299944e8d9430028b3284ca489202a603658c2a4840c5921f8c7e7a00d901b3c4046820838932412310a28b2c0666e20b33490c51c5080c247e7a00a1446368884963988c79e18637665297a005bf20ab59d50279fb594b8e1be2dcd6e28bdbfd56862dc0dcfefa3ba4e0360cae7e203f407e270d58efaa5a1c716f5caf2ed89095d3ba91a4850a6c929877e0601cfd524ef08fef018f1b3112e1d1e3c74f90128658c0042351ba07393b373cc859c0bdc138bade480f58e0d1034810160e0f1e3d800439da24efd89aebe009cb483fe40ff19e0c3c125d524ee8f797423e8777000100f33c805bf2654d143b73300ef9373edd5b4a29a594524af93e3bc7952f79c8988377306f91e2e5caffa0791670411edd9209601cf2bbd81bf937d30316f8c78f7c21f287c89f9f5dd9cd3ff9e347c8104997367f8e9f8f4fc9f2397dfa23e1f8fc287375dcc83f69fc8e986001144410e6dcd96200e3e8e74e7950f3848ce41e8184f4a7d07fa43fbe62129873fcd13c21037e8e8034f7006700ef98f3faf0cc70eea0091b72178ff107ab1082ec9544579649a9384790e878c0824746072f47495a4a40e4ea1fc23d1c8ba1062bf8824989d213ae7e13fa39d051b3b2f5f7d7c338fc913c469ebefe3fba0701b19f20fe250c59a289d0f537a179e4f5259a045deef2124ccc74f3843d3e12c693c17043ae8777cc7b57cd350f2765a174fd6df3cce81b6dbbbfd38deedf810c7e78add6f292072a276511bba1bc9cc595fbf4725216556eb41d39c62ca2dc5066e1248ba0a52f9696b891088d3cd73cf329a54ebd97e6f795602bfdb6c5d8b13ffa330cfd1c4a3024423fcbea6759ed399ffa9c2dbb7b73754ff7076551d1f58f13898314d413f06b52ca67a9810c76909d5286866e488463577b254fc863e209e9a049adca8fa398a8242413a3d5ba020f768840578255cbe69c38d48041c6dcb00e6ad8170e7e20c248577b23f26acfdfb3ce539dcdcdfa99a6695fb625939fd52cc6937dd0fac9e66ecb1c8430981bc54431514948ac424c14033b3ab2e18ac5cd958c55283180ab2cc33a3a32728107f3843c218f8907f36af0843c214fe8d6bb7954e24722b1c8837935784262a21724605242882948c42086cfc28298112bce32181bb25852725dc26219f1a42843ca62592cdb9221654c64b12c96c56e1522a74584bb5c7fefa1ae2cb6146328c1114148a941646f7041169ba0181029609692650492376673ce5004773e3fa57306d1af5f4a39e54f29b3385710bba283874f0fd651532c0b910fec475e25e6f0a32aa4d211b125dd0a97296c604a587880d2400deba0066a58ac081d3c7c7ab01aa861802111031b1962359ed4d821c2bac5fcb239e6f91229f617467e7914734450c23c02f24ac7fed92d5f7e51227544c25d714609bb1241e02b913efb047b71b99a316ae85023072d559aae11bfcc37e2d3296ce0d6e6537213932e3ab8b2a363e75be1df04995148cbd0cb351f894bd2a7e0111b2db8e423716df3b32c2e36de293f00ccc0c6094417fd69e30c9423578d155cf3eba0ca0f2f17fda4993238bc5cf2aba1836b9bd2bd23cfa8040396974b7e8c840b5c7206c9594629a5726a5b969d3e3b9dbec11b2c36a4b0fa74836d411bd0c64404250a0b1c94196f98fa140dcda73e1a308c378c5745c6861c148e832836e4a0705054efd34cdea3fa9b79a8ae8614e6527575eba1bad6de7ee17b5f686ff785f5725fb8015dfab5e3e5404844038d6459466146d890c2284cdacec86c1e02a0ab22636b98c0f6c76ff26ff48b23c4e6625ff0de8410c1bb3977748962c631411982fc4db2d3f83edd3e3a115278bd5e42536cf1376fb2f38cf1638c31be12182eb11b2c72c98b8440af071ce75aa620ddd546042a15c5e3baaeeb3cab658a132d539a584ecb94a0ab65caebae68b8542a95a271662d2d60d2d282a52d68f3a781e5a530222171f6f4fbf9229991eedd73628a259164105dbe3d494e45632c71e5e5243284aebd9c6483a62b3d4aa2e68946fd990e5372b861ac72022221a28824a594f2654607483f87091bfe45d2818414c3b494524a7a77bca76b18cebbe9a7775ece0999e9670bcb3b71a7fb9bbb756767277acf8f65f10598c7dcd8dcddcd747abf5b8d2d6cbf8f0e6a70fa49b235b747bdefcff3dafee67d27c8f750df1fea3b0185ec526b41e94df9a1be2847f08d72b1ab4f55b079fef8a920c57b15667cfc78677cfc203382d83cf7e5cec70e005c98f1364fe36dc023ac9ff13bd5eeb87b2f41cfeee9e4d978de73bc837d7835df8c8f573f630628c57bd5d3bcffe6f9306306f8aa413d772474bfd32d4f89616dc01d6fc8daef48adb5efd3b467733d250a054469a4d4fb8cefe61ceaa39fb594ee4f5f58b3fa54b002984105d280ef3aee60b660f2e16b1f76ef491961a8d4e9e32b3defb9439dacf7f6fbf3dea2be305ed47be7c30385785fbffd4eef7927ef7442c9477d2db7aefef6657ffa401444e05bc10acad82fafadd1c639e1d63be4bd73fee8d68cf7e7eff8fcf9b48779dc4923a5f2fd59c9057e167fe5b7fc2c66e6e73ba7cc6e38491d59ba348d31650c21c618620c17ac7072047039698c12dc94991bded022ddad48e9d2fda5f42aee56e411b7e22ea5fdfc484aa66414dda5bb79ecaacdd394c1e0cc99bd671e65533044d21f50ccd18dd33c138c4b620e67dd23e012e92cd60ac7c2322555c65461c584b1c2e7470c00dd8d27a64431c40b36540503a6c8f2850e33c8e068c8891899191ad26dd313a730dbcd086088748d8ce04f84bbb55ba17c96df8e8325fc44a06ef1dfc8b9fe19991748b7b8880f9802926b599d74238176b5405df77459c8c69fbfb2c1ca063997c350fe8df7d46a46e79c7356b6fdb12412d9bd7473838d4f7f4546adb5d615193bfcdd8a45464748142634148958760665553b71c145e7719bbb46b37129eba13a1a68e0361aeba13a32291a6ea38126653d54c76d647cfaa01f8b286a0cfb41cb02435a3938ac203f2c91384806052d01e225414131f89c73da78d930c65848b188610c6318c3dec6ae58386ff345d716399b4fba58ee929d9df1d576cd8ec7d8f8ed3d93db3a1fd263533aad1365f3b14b6a43cd93a9bebf89bcc7a6a7b491f7cce8f19e9aef8f4b912992691eeaf63d2eddd35d62ac7956b166d25dc07cf1d67c9ea47582ba158b458fcde83ecf6234a5e8952408c644c80994db8f728ff33a1ff46954ab8f6f1f794f7b92d6695b836efbebe60547729d7ed5e759bad54ef37990c33e67e242eee4f3a16e41f128553c072a63e337ca87663e97be671f613096432e7dcf9ee97ca7276f57b5d78256a990c24a0c5ad420c50d2e70ad72687ab2f40516a11dd8cb10a723dba7ae281e8a8041411484182daee62a94f8f082a2302808630c576738dc9e2bc0d09a9a1659ad47bc6e9069d28f7a00f1f9a1f485d2c68512ea0abb89b131aad3f2947197262a5cd311b7dfa729064a734a99969366958b55a64481d2c39108de21f4601bb5919151151a8ab1582c6ad69255e2b6dcb08639117ae44e236bc47aa38e4cce6259eb3a788cc558cc88226217814963118bd53fe47b0c0c9428e14748a5419630964c91050557780182a0a22eac30b982c30c605822085bbb5b66596683154eba3056b4100b52c28f908a74832d304441c5881a9ef808ac68010338dc408594157aa0411557bf7527ac706259dfc4c30d5b4a5278ca0fe79cd3846eb1fbfcf811c262593ba594d5d277d7beaf5f2bfb76e8a743b6448aa9381ef9d49d19ac15ed30e3564d26e07254d065d104c30db956ceca722c8e5be134dd3027d6c376c38fe4de8cc06078d33711c9ddfcf3ec6ecdfd6077f7ee76f7e8ee1e8a07e3609bcba0909b25e81ae91ff9f1d65cd9daf18e5f00b045acb5d2d8c2c65a6bad59acf1848d5ff9477d596b6d42e98f4829a5cf4c69a5b5d6daa08feb30fd9a813a2aad35ce2fbe5c0728c2f86964b1c2ece91013389082ebf0d3b06223121781ec13115b7c1150ccac8b24c610babbbb06195b8186784f5db24ccc318ebd3559379aa76aa7e7f70d0c5930a39684d9c8a19e0e79ecbe68f4c52aadd36fbf19b91c51242d322c44dce903f535fd2252b78c3cda85e0dd6894858df6fbc1cc3a5dae13ddc92dffec918caa73a31ac038fc7d1a75b35c475225ab911be5621c8e85081ab9519771b8ec7c1887bf7380c5b296c9fdc763ecde27e7d8282dce2d9319d7dc101fd46e6f72655b22e563cf60f1943fe0c91532e8f2c4165eb89001188486b8420a2c443891dd7006168033437452a47cac17b60a1e66ad3d51f450868c0a6248020b1619bc5401434c0c88204c70669e49c2d53a850a4e6550d16a7fd55a3b65bcc82e279559ea6020a55319b4eca70790154e4e13191c1050850d604c1103319a50b9000f473c146186062350900995f1d2ca20412a4b1937d478add28f7a00f1f991ba9c54060a207e28e3442c48093f4292ca1451460532b649e9de73bab733334b28ac30b112a5ab0114c974fdb510b1e53ae864a2f4943e1bb41d7abb404884452021b0088b5984c425b02b31a8212356630bc6311b94add3df8ca3bf8616ce3b98042ae994dd0872cee65c3e0f6144b9210786092e2785e1248ca0cb496030184b9793c0e872c1b8020611079298c8e02c27310d5d4efa02e86ab99cc4547457ed2d1018b437da6e1c5ecf2382e03d3c62dc6ea4b388f0e81e9ca11e3f6217f5aa82861bbf8421163061e8c637e22de6c61b1f277a519473a3f7f0e1c1e33679c18222b85cb1a40b225cf12bf77c80092d9e2061850c96a27891412d1955262ab6bc2086c601115662a57100486096a050f102222c2080c30f4960c134c311583c81e205ca0691c5994113a6055c7f2dc61a262c0c8921a202860d5c04c80228e9c9114a887022db21872729259ae870fda5d71e92f06c30a1a18b262b5ce7c0e888319ca081090e5cd033c3ebca0c576ee7b0a56150dc0e23c3941378c8ad62a0c2230631ae1618169651c722a645c8e0f6f7901eacc0465754e2fa97eb3140a1b26281612d302869db83b52b5614550b93890de575b71108063a0139a16ef1e734b1b5b258d5b713a52c56ad54d2fef123c429f5eb59248271f04faf95c5aa4fe9577bb6538ff6dcd7fa4e9f0e7a237fc6edb94ebbfac074eb6f3282d0406f59dcad5f2deb5bf53fc8b8ec2bf7dcfcac9ee66b3ef3defe8ccf9ec53d369f655cf7d56ed51754251b41d8b82486051b8f68be7e8cc52e4eba3e4721d5d7dff11e1afbf57dbc27f5f52311bc836f7d13fc6b951aa1dc5a6badb5561bf04874a552bfc52e88fd196ff31d91e2813f3660921af048744597eaeda6fa683eeb3af5edc7729dfaa98f5d34ec4a2175ab7e06c62c9f7a81ed8f95abb4416451d1f3baccfb446812fa3db0bb21217ef722c4ef3254a7bd11bf9b8f9f6aac5f956e55aa1fc6fab5beadcfaa4cb5353286b424514474b7887a7f3377e772162c5b82aa5c79b154c9e2f51e85fa94f692664f9ffb5abf76d9762b1897fc563f16a55f3fba4a7d386f29a5547b1fef3458c6cd0802cf2a77eb7c346803087b0283eafc2df2cbda3c44b8b8248230dfbb086c579b9aa6f56d6dc99cfd5eccb4d89d8f7a5dfe53e56a56eb9358d096daf2037ff10ef953ce26eeac517aa09bdc70bb216d9a4d642fc6b102e7981d489b6a8461c3bf2fb537c2cad1eaa466766c00613fd8d989547ee1ce65d6d12df91b7bad5ee38c0de9528d33568b20d4d74dcca234cf8c9136754f1c826549e66741302127cdc35a82b8dcf9d950f3d0dca9a50450eefc8c282baa7266699e50439a48cd930d5d0d8977d4afcde5ced955eeecc674ab9b98cc4e04a1881103f00e0f1471ef3eedc875a611b788df9036f98b36318e31388756a50536d4906ef33858a46a5b9a277b7df6d11b700e7ae6cea74dd4ccfc902ecd2c13897728c13b3c509322081eb0734bf3e4dc993d6d629dce47fd9801d1a69b3397eefc399728d33779056fdcd9fa90365530a75bb2a9795e37ba253f7624c45b3b21b1c875e46b1f5f61548f9040d61da16f88e4d61773b7fa9d60a74d68eb9efb0974601c7a243714407df713408191e8f465afedcb80b82f83755f26449b74801fd0a60c5cd91d2d365bf584114a46bc9ad0e28290d11056aa4009151892450b09c438c502bbf1cad18dd27950774a29e8b656ef5975bc1bf30e957fcad28cf3e7aeff769d8b217d1cff5871c68b83e2fc378fdb2cb7a5fc3715c7bca379074d6ab54285486ee46b3754e1c6a77e33411444a823acae475a836abb2921de9342cd950da2692d8bf5df6aedbc926c1927bba7c326ba7365c3079bc5249f773efaa2debe5229d4a7bec120abb7e011ef57efd334413d641ff541eca32ce85556e5c2f2509ffa20a84fd13c0a6c3008ea57e011d5a37c9a9660c8c52e1dae331f003398ad63c3075b6fea7dba89bc271ecdd6cf8e477f028f5e076b07080cffc657b7e6a794d8b08790b6344fe84b77c69a27ecd735ea2adf4751ba877aca9d51c266aad6b268e763fbd9efdab7b2453da3dcf9a9eee6d5367bc875c2308ef9aacf693ef0067648093d84028f2071a17ea67eda9f1f85521f1297f71d4182c4d5dd8f97fa90b8b893001f41e24a3d771260570a157ad19d1bea6b22fbb591ebccf7be3e8aa921d7992f1b81c098a45bf3532fb0fe3da45bdd158839e8c61b7334fbfcb7eeb52f4ce17e5bf789e024f877e0f6dc75e00d09fda717a1ff84e4fa747deeb4d3f6d1af40cc41db07d4fff01e141893f4fcf1135f550c7577d1fc369a4fd3c451ec68a9b5241973043b2ae2d2c216a322948a289a5a56807577f774f7ee6eef289b8bdc7ebe61076e83b20b15e7659a77c71abb7d507971ddc34724bc84b24c9b1cb7c21973c39cd8b42176e991cf8cbff26279665986041537e4a38e09bb3db18561372d4767ae74629c11e27664ecbc9c74a6e8e80c11a5f36349594698e66ab1985246143706b48551aaacb0f5915c305ed0fb32a8b2c24ad974392cb6d951aac46c2c2a36be9c018b0536babbbb5f97de0d82fcd831074731efee590fdbd6fd79bc9fd46e9452b28a0ced7c84cede3959d528adcf62655d085350ed344f1b273b5515d63f6edc9c5fb829a4f46ece2fa81a04d7aa365e366c75a0a403251d2861f6d8dd31bacbe93f65b777b0a45977890f1be784f3e8769432e782209fa90d1cacbff59e8c5eb6393cab5b39d8ea559b9a8a0aebee973f82c05991e41c2af8e5d8fdfc0e883df4c11badd33cf1468d13366e1d45cd23cd4a1930ae96f1bac18c11cb8b4872bb5cc9379a7770f2632782bcd3c130bebf8c6007fcc667b7123c21bef41ac197c286926e1163fdd87a9d3939d583221beef0d8c1573af9a0994b909b1b713ed0e1f38326b3c18520cd852635b22afda807109f1fa8cb49645c418616daaf82f6520596f6f283682fbfc120f5fd690aa73b5f08efa8b9f327ec4df09efad3ade937670bdb57038f4809e247a46c605e1f54b0ae33df7f6aef3a027841fecce69cf3e70273d24829a5f24b7d2941fc1b3ca202cb75a483159412bf6768b0e53ad21df4719d1bd8e8df1feab8d2bf7e907e5a9f56700414b4b19b8abbbb4f5412dd8a104288bb1222ca5d754b4a29b593104eb408114429a5a7cdcce9b296294cb5d6da89106bb7715394a67409a090a8544d77653dea50d5080080006315002020100a8703028140241e92655d3e14800c7494426e50301488235190a328888128c620630c40c600640c294343a20ef928430da1d327f81aaf15ec598013979bc3590090f6a4e2a1f2b6611b9e4fb849d87d20ad5eff70da56ab36e39a615856562a12e5f62587742833fa763ae0982b72bbc87d786ed64ccb798c268049d46446e646c73c6f25fbe3b856296d248463032746af3c3e63915b937e3d90e7e13a3fef36ae41e1aaa7d4addb3a9f7c06b2ab100fdbb5562aaf6d42a6281f40bea2222f58f2c48795c50064aec11c9af30398502e662b6d9ec62a5a88f64d4a5e6c829b759c2950739eeb9006f962008012c9b2c140bc2f1d3a54ccd3bf764d81e4f11583e8fa7390527a726ff0e4425b27c121c7257f655f0c2cbe64bf4352957168889c39b77d12c2d9fdb1bdee593a93c34e43af3dea052c0bbb025939e628ea6599e6c1a94b5785c9bb59ea8e61fa4128dacf7f6f2293d0d4b18f214c5f1ec7a2e714abd945b5b7e35ad3e778a01b4b959aae0504d2fa7a162d92c4a0d07af198afeebbd29d1255050b917dc689871e790413ff93a6255cd6bf14e03c84446fadb5ef5a257a55e45281e8b2b6ee35ae318fdbc6069bf55ac16c6d50f295291507aca07b3441447772d7bf5fbf6e94ea7f779e87f273852b5d543d48f19491691392f0314ae8831efad1b1094b6ed69aa442b05507d9ec2bc912bde35052118b0ae69fed075ba0196ecc8bdad5321509695b2f110da28569bb9578aa85058b2cf3ad751803d9da1117493e69cc7a66bb15a243e85b2a73c0f23c044d2da46d91e9db40cdb7e39f73714995715518cd44618ad77a50dcfa6a584d41fb3a4dc3f99399f8f499d0582f04f7445558a7543050f6c5aa27b42fc2a6ca135b6632b77c952d8f9b183214b8a856596fc2a3904b6fdc7e081f88be255fe4a7142614f7844bfa99f6338a981a42aedf67d68da6fa5bdb4b9a0b940436b17874fac88987ff3583f8598951546b1cb6f550915401b38c838e9a338641410f043a88e48d45c1174888c9e777455704c8d7a54018bf89c76171a49cf99504e028b1674bb0519106dd3407a022d7b252ddcd2da99e08e99fe04d388c6bc3758d4fcdc4c39f660cc3a3fd394aa6272ebe8ed0bead1b32a1afd5bfd3ca5d5deeacb9e431a7654fe244067b2871831d379d527cd705592f3b31dfdc1d58fafc2a80963d01b8b75fa6a7acfe39b4e55f290041bc78542f15e25e73bc7aa3646df4fd959c8bb2fcb6d7a28ad2b40fae660f48ed97783251f3ccc4f417aaa08f8578d5557fb627a4cc7b9afda6a71f3dff2abdd0f110c935d6a23299e08834a7b67bed2122bd39e01d2725904a39970ed726a5710ba9c55b881891bf4db09d18b493da18aa1c25daf1860ece69a70bb5dff7701dda51952b10bf085d55bd8de4baa375680b0b43707031f4796fe7204c66f114da71cedca9992f7f98d5e54d3eea9978ded01947eab4fcb1284562e8fdef25112f8e918174dff997caf9460403e46693d0e7f12c10eb8115a6a24b36a46a015c27778affbe44c3e9fc43509d05ccec185aeb8c0a6841265c787b78f487340931ff777aa7ee9d122da41d8e09fe6d7fae057b2cbbad454a40296fce08e9c9b0dbbbeb564633933562aaba1463ec031f898cdf47dd9f00a2635961a1b46e08ff0d73c51e2e3b742da024030c699eb5b4ef348b02fe2d332f29d8e80c1c90cb0bf11c0e07ae13ded7f450e80a5508eb7a90fa7744da52305592a0a307313a26de74354a464561d9cbd321d9f9af095ead0f50d1382fc1faa595dc48582a1914b8f9b204634c2cfdc86c4337abddb82067825eaa479e321a7167332bd13ed06da65642d2a83ad35f7db762804a8faa32f8a7e977ba189f388feb4e50beef61f19d36efdc07abfe6ae102b1c07e6b363dfa0f9ceb26626b8551e5eb496199c4d3e56ddb7b134d90e1b7edce1121543a4e1553cd9c589a5321f376f0592ca7d728ee58091e19951d32192b3a83e1e71adddd71ab4bc6b65243e0192d9aec9688c6af66f87679f491d5ef06c39319d3c36617311a7b34f5500997c11e8bfc529ead82f13cd7715acd44eb73ca3cb642326eaf68e1f0cadac869e80bcabdac5bc17968da7c4dd03ecd55b9ad3c69acec2827c111fb39818eee05cd24301b95c88fa9918c4684a31e9c2f0a74a0051c775d0628ec27c472a07c54467f2f02d618edf6530d4b6b38d7bf22d643eb8d6e05f350109744a7b53d2b9c1d71e9f5aa4a867f653d7a2c594381d1e0c7767476a9781b57e4a9a3d7fab5be7e9fe9126600a1380df8908aced65e8b396904468b60486ecd76c58580fb3bf1739a8d8a5812abfd9975b00d5e9cec7f21a6e8fac2e2aa4789dde3eebe642f853a8a1ee56474698db5f6b05cad9b64c9042bfca8c70032f189b717ade16eb944706732d19518ef7e4bc2a56f4c09ff3300d49ef301f43665c738afe106a62e566c115209ddb3522aecf4beefe3c2d3151a91dedde33c281560ffb08e68af2dca44df7fbc5de71c647f82f55b9fb288378f63a26705d230a4618ce705c15c58aac3ebfbf7d5fa5d95903341ca4727f3ea1a8a2cb3a9988f380e1817f00b83f56ee8783a6f76a1e920155749540f86838674b830c34c55a7201cafb92f5b70fa6f12ec0be10a9646c2f78717c510a1b48645717148fffab7d764095522862bff0ea7c85c7f0910d053f1ef64f94a33465467c8e088e7d9adef137108247e52cb734325ad360467cfd93759b5d29b0b4f36c54ad47b3c3826b65a4c097e7d0ad76fa0fdf5077ade1fd13325d5f5fe703430bca4d5489af17b2109a5c6bfcf8afea228c8bf9d99fefae859dd63fd56a3d984fb4b04b9c4bc47bb976e9ccb01de3a94863fb3d8f32d62b53d464b952ccb0232da5beac627d8bbd6b91502568a8ac1380f42ad69d95310f6bbd0326dae08e6030903054a53e67518182e7164432f9838e4beecc8a2220ce106942fc190bcbfd91c205f3bc6c0d9ea8d95ebbd592029567007c8a5b9c4856948d33d292b80347f44037a21a578f548ac5a2926388d6da8c8703fea90dca505b0d3b15bdb694c8af5f1d9624c6e64b36de28af7dab4984234aa1d6d285468d5b4e5f102863ee45a9132a7279ba1ed53f5d0f08fe724ef8828bdec3366960043a96e67d7a6983a0bb89068d421d82c304573707caafd69b1048f200994a5dc1ee4acf36b658a2473c6d381126d079037f8cfb820459330905d78280784107f21092b6771c78636884aa49080629dbd1080b2ec645099802ddec69e259101d7cc1521d92e170802e313a420824e671c83367a387afc59cff99a454e40e5861806033007427276809c1c79f357764cb64d7406b7c0d028c6ac43b442ac41aae91ec7b2bafbf36654e7dffa0033185703a71ef540cd34c70782d7af5e6ae12b58cd119afe94a17c9bc7638db8388273f726169c2c27fd6c29d70592b9379b917f9d9a327808b57f80b57acdcf75825c7d6292b8433a58ac5f241fb0306dbfcf73fc60d6d5f9bb3c087a7807cf8756d5bdcd9d051e16c3e3b108ee79a59e426d6095ccf8662a08d4f03869d0cc207fbe37b0bab84d118c81a6203c74bb881e03373a890e267796157b120c3067c445f6632f2632a14bb8764094c021d28b05e0157f149d507fced6917398958feaa433c242e202670e150ee34140e74bbf9d6c1cffe2a38d3920dfdf6a8cd093d548f4f02e111cd2be501f55e09ec81e35decac73f3b68562a71fc5494d925dfc5845d7064b06d412fa86e20006cf11527d1eaecb2e2b721e60db25278a19e15d0461cdac3faf8f46f26e33a0fddc4cb9a8909c56cb0d5678c87778d563d8f4492790dcb05791b6d58e50a84b637b58daf653a75a584f06b095d6e845e3ce823a64f9f641d44a300f525cdd5373431411123ed408bf144b3ee574f6e474032c1c419b204a1f55b73148502473b2367de39b94809fcd1218aced8fc35c878ed7cc941213fb862da0fa49c593605fc1c4c2578dc894ac290026903e8929499d88715619b477de1b85a406a9d2b941953438bbecd4b00dea79b125a42df3fef82bb369fdf86ff88e074cb6fad734ae586e36d78448ba7318f23ac0dec57703bf7b24bb661d6dc1d4a04f39250ebc66eec1c2c924563e410898d7e7444fa5854d1f7036a842e4017231c896adb5cdcc9514d8ed6dd39abee2e498b8f2efd8ae5b93cc56a32b4e80067793958ea2ebce59516bc152a39de8e73c097e48b323d72fa3781d2a20b4fcee52fe6ac15c3baf7eb8ab08b7575a1c9ef57524a7184037d0bf3288cd41821792445924708e2187e3426aff27b6f98e7202c91ce5190a594494528304c713bdcd3c80540bbd8f8492b479b65772d7b203f059c8181d83b3dd3972d2742e91b976830d3f48782a85552eedf374d65f436b082ab551cdea07951932c8a9aa689a30966fe1ab302fc1d82db30a5d69d09bc692e49a27d008a0f81874d26c986f10722918fe00c802a4aa396a299c16d6e9c9bf0dd7889b78b95506cbdc4f4096497ae01f43aa4432c2333b36fe1552405a7c986a6f0e06a638a96a687ced7a0a18788b11d3f576ec324ffb8845bcbee96308a574d6b1bf75fffb780ef3a9cf004d31b314403ca7556cd077e3a8f52a3ec23213a39ab7559568801f7da60215c7cd4f8ba68673877d0c1027ff52e4c6aa4e0d512cdc1206bcb0d5176f582b10d5e8cc71252f58a7fe0178942129982f83629e08b47f1a94d40e5dc473c6388cd70ad78bca912adf7efbd477eaa4a29191f73a44f10c02df50c5f0695263908550a9edd55941b8b01e1a1f140ea787b07b5b4e17336ea03732c068a824fdcc9f2249846332c1327bb8cb547705e74350ef2b57a2628889dc28b45e2eef729c667a1ac38deaf6e9cf3600d2d4343ef23a0681ca400ca8f6df3361bd669579ace73194b2004b627c79d105630d6b43748709ae43e403c4915480df706a4af994451d50f96fb87fc7408251840b62eb8647aff7996aa3ef9a67ba1e4709c8614cc94e672236a933acc59a6695d855fc8c1d76e1600e235234d317ed9d13d91a4341c3d4da60152ecf02abb4dda154d03a40167b0428118f983faf2d2269c24b002b91de697dbbf8901583d1bb6c0a2750522df593978eccb2c7f143ca94222c98e3b5ea085d5cd4b13555d476a102c6a6b611771f22dbc18341d7234f8e03dd10733a61bcb16b3c099c700099d57886d3c9742c28249e97c80e08d47b20a0c298be163f6a6022a96401e83b5729f49fc7ba3ba6fee3eba0cb8debe827dab646717d01a4ee6bf0c067b3c8592bfbab63f42b413a7c9ce841d04d5427fdd283206259c2682967790b56d0ddf96933ab249827df2030688a93c3a0c2decc1bd1ec7961c0ef38dbcc8bbebd068145eeff4131eb1ad7ce2211d84a52b9326b9a2f4bb0455a5cea87570dc455981715bc47a68b729fe5f426f8b9580bc52e27638a84ec595276c3722533e3c42bdfe19cac6d95d659762bf61d93557ba5050d59e1bca55f41d5da9ccf4a135802864f34f03c0d89a8ad28bb2d9ae55fce2c43fe8303e9d929c831492d273da72d96785cde20ed811190b24fb1af38942e9a7b6893d34b5a5cede17b7544a51abc44c99e9c9720455053434b5e8dbfd039197e6a01f854a2c3c04e2d466a2cdcc7eafb40d1b781538432092fd7bb5ebf6f5477552e4273cb10ba74e6756dc66761be41b11757250b866353360b1435dfc95a1d2cda29d1cd6c5564b365ae81eb3efb8e57d696f6d079e6056c07574d192270e28578173663ed39c9c779e383e527aad98d55f82315836d3d10166f4390bf610c30e7172ec404d07c1f070b63c3b7beb8926920729542b810ed667aaa25fdef89d49205d59e4d26f43d2b8ac10b8d1d85b2d8f80c34826f30b0dc6753907788e4edd158674589820a1c9880bc1b8503a11c1c5e04ee44e6f4bebf1814418a339ba22e0830266b56157e1dbb526876d610bcf6d9d4f8e51cf4d89b77364a022e9c55245bbac28bfe08d275230054a926bcb18fff3a898795841199c8740210ddf8bca88880f5fd4b7f6556b2128d3ced65c57808fb071d38df6053380b7e8fe7ffe4dc802d8075b858716133743a341e362794d22156067f859c17f193c78cbd8d76fc288df4ff64d22f666f7925e914c6d4ce5446ae48fa09b4c68e2072ee770c4716b614a20dd0936f886b447f2e4bb244c90aaa5316322d81f96912c788182b16fd808e564c3ad6ffaed41298ab48a91c371b9cfc1c8cd3d1240f719e16d5796b2c5649c7729a027000838d0be1bf9290d74f9e638e81d65dd00871f7c5a6f204f6f0fa09aba110aa28cd94799ac76ac55b7de1412e6d198dd112228f2d12c2a01814008c8be6a6ef89beb852fcb5d7bd5f482a5a10e9a4013a2bd2330c35e27323625b173e68c0d72673ed14dc695f9d6c575a4d2c0035209e1c275f7e924a074bc161552f74006a2def31e232e1bbe56e7dd17d775a36e9d89862a5512e1f7255744f10986c64d0e6625f1fc62097dd15e63cedb61c25560d880eb865e720b130016f768c661ceae291becd6422e345b403b5aa360351e5d195d8500dc2e5ec1d9ce5223807a32eacc6f7e2a80696209cab5e6ff077442a5c2966ec06a3bfaf81b01dd07e5459dd37aa9a4350267bb33fbc4ad106cb067f9665de0ecc0ca8d75e3be94d6b88ea1cec0d25fbd742ce2dc052c3f895efba0e34a11ab8fcda6959b87c531449b5edba732c7c469866f161d583353cf70ae363b8236a43d58031e71769a0bf16238b412bfb6d745cab7ee7432e71c28075c53cb61c88ef387f3f56e12b7050f0c8f4822f2156dc99db3eddbbfaba00ab07cbe656045aa45973272e5dca9dbbc032e0f72cbc02c8ede53176aeadc29daa2b40875a0429f790f6e08050f1337b036d3009636d046f97463b4a6a87c3d8951d6ed7aa5a8a5cac45812a45f8fa956ccbd87a8c467f8d0f8308b361f0565141fd949c854eddd5236c012a0746ee9ec3b81d5f86e4292b39651b3a299c470b130d8c952c6ba375b422c085488b088f4aa96d5eddc4044ce54f076dfb56154b752c9edf80823ccccec787b260bcd1914fc2722ca004c0c2c095eb1915460d6a32e2b81fb848884f7a7096dea2d65984a6ef99854a0e483246610c68e77a7e03aa9a587adf520afa966d1ac72ad0332e7c94c2db548c16ba7b2fc165b9439d26ecef0cf15d5ebd1ffd20a2624d92f6e199bc79ecc24ade0ae818a081b5b99585d4ec1f0bebd2a056047c6e7bc27b59aef5504e024c52ca0873741581ede21687bfd5afe118687c10f3323edd0b77b54244e81775377986e149d38e5a427162344d2e1e2bcca16bd82abea7da02a4a6e934c2337d2a36d49bc938bf273d517cea40fbd9291f8bd60c41c284c33cec06221191e4f5af40d684b3a243b4aad61d134d5e2b1140b5f281a014a7e1b2ccf04059085b497f64032e0944a8e7713419ef442e3f42f1bc68674bdaa7ec86cd259888610733a85efa4a15223778a4c853fd5dd136fc1ba2d51efa0273733ba87df58fc4bfa2b165481a8a88b36b449233a161418fe23bccbcce22c4b33d249e78fce80d71020ac8839f8d93507a67bc89506ced2a7168e8b09fcaa11db6554be64d62d3dcc523058b563541dca6a1e98d19a6f6bacf6611c3c99a65f7c68871834ca4ad85d6d6415d390945aad324dccfa0c792651f5224f3965e796d650836c7927ec0327fa568893f96f36feda82ad938e776e12233335adbe1bd664e57cdea3cf3111686db3d79965431c1634acd79485da0117584b0d75e6728699dc1583be24ee38c41d69ecd71093bb983ff53c75cacc6d481555643708444d3c4713594b50d045aaa863894e1ccc11a5a56ce969b38e63f99d362d9ddc24101221451804fba2a2232124e50670441b54131554a7500ce72086947b1961a902bb0da63c3d317d3d950a31fbc17990736d70b8b9147ee8f76f08a6db980d35aea8cb61f5857ef7314322590ff900995d7bc4ca7824435dfc4949416c6dfe592b7e1a42b3e7d93f1d964ee4c7e13b610dceb5c3bc88b5b4d9e88f047f4180d242ae75ea171af00e2cc7030377948a73a00fcc3241d9b443e234b92b9ce5c94ee1f8645713834c2ff3979789a34a06b0e08a0c684dec0e68c500d60b092eb64297719cbc51f314967c68e6ee9f6ae24b06e3cb7b6507e6171cd81c0411b4062013cc5e689d0cd553d77d401f20d20969c19f00a8f84ecf2080217e17065edc0beb2e08e7fa934d54b0d2c34765942ec49101a65304ee3034cb510d5149757431a45ca8cea8e7eb8b39bbdb808ca0d25938aeebeeaaec451b2d01c49e875647d9798400f3cf22058b0a9cddbaaccb94b955788e435e24cd32a35001e1db301ad8102208e9d41d7c414c5fe95d259225b50c1644327a8cee9c83302376b91837a465ec94c5f83ffd3c02241e8c3cb8da9662b506c08121eafb221068ebaf8877683227281812e63a64ced9d0b78f00ed35d6216294ed0c0f2161fb5b8c8f6030539c4e508694d700522f8b12075070900132aa170950ba75df1f72ebdf1ce64124de04aa7a331a1c8012d79557d7756d2fe7d6c6f6414348fa08d69302edaece167933d27729a86514abd82011754fe17153acbd1ffa8e9ad3633938d1ea6849728681264f14cbbd1f412a6b91ae7863b7de5008074b8062723915d6b23bf9fe578d370c8d7f6a4102fa54bf32d041757cf26214957d2715fe2f71295a98bcef145da85913153818ee03fb13ec3f0cd3e004920dd27e3130c15fb653eeffc928c30011c2d9bededafb4f8c12408e3913ad9da424e0978272f900c8df2553f7a620be5070c589e77a3866127b96fb6114a96264ac0232c2996b54378ead28d8945c246e83cc603091c2194e3d150770c3a31508e29556a1dd5ec588684adbfe8986c14698395564bb485cb1708001f96764db51f7dd0e11f7a4ab934512c250108dad8552fdc88d49dd199f2657dc530b21986e00ce9d229b05f640abbe3f5b4a3262a339ffb02246e69c9bedc4e4fb33391d6963d71a09246ef861b59617a94211123207547b3a3badd903899ba5babe47a2ee6596f394f1e0038bc707b5cfd54f67994288c66e74ff82e1736e6220f9fa9c012baf3aa4f2ac63050219c90d8cb3791c0bcebad979c547c31ead21be3064c493d52bbdea7697bc79fb1a0d570e6b1eadb407cbfc852b9e8f2902805eaa16c05e726247fa02482255caa4122dcb6250460ef6211987b6016b48a35bfaf400c591679815b9ec2e8d1f3e508f5200a9e19f002719aa70e3f24d68765dd25c48eb7a14e300f88a9381c090d7ba32010c0416d13578f4ac68241daa3167826795c021029555ba61180eb28a66af5616c4e2749c907b04285b65b4405fb9beffa4851407d9f9e4b62163b0d01be844f71d5f60dbc4ee53da10f43d9dbcdb7f940fe54d7e4114860ccb21836b84227bec4d34f15e3607f291900f6cd97add388704f4f9f661c8b064f4a41e4f7857ee2bd67425a3b70c6d433087ab5adc5b6e5edf082bcd6143db654e626dc9d7b9a31d9548b49a37caa60ce491383f26b0de091e815fd662dacbcd64fab6c43257d067b714640a675db459111db4a869a1182c470d11cdde56d175f1e1305668845d8efcecd7f0f7d93f042457bdcc90efd16a3b535a61cda402283b563255b73cffdc8c4ecb2497d4e1db1e0a2257eaf032c737f6b24d881bceb09f4506f5ae16e599d9932d982686a5ad5bdc7f35ab4d93632d8c5e45362f7c0db302fb60c695e957bcff3dd5f089e55df3ecf8352a6ebb8f3d22145ea17fe083606db4fffc7a2a4541ea6c81d64f708270dd0a4680b78660633deecd9ce9026883d16e59af52d8a58f2ac3537a9f40d7a18d39ae8fbb191d918e806edfcebe8dde82392dc34ee8f11b1d2ad748fb4c91eaad77de8d6aae1b4a4556ff835a5c479fa2dfb82c8c655e9fb3affb329887aad04ca6d9f486edb4c6d73f95accdec051951f4a31b332222654a038dbb73b89fc04b76087c07e5574a91968b0813f2faf711654e0414482140f229ed0d0e2462c1bdce0004b1370a3c9358fa1b5efd2518cd6aa99579342fe7c5872d4ecea808a08811f9957ec795652fe12d8af4171bacb856cd35ba612bf503bb9b03cd7297843f1515340848ac594b0ffa3cb024bc5df860cefa1e279df6413115bbc38f4fbeb1174bc4ed1e719830c7abe423054284ead789c10abbc4ae4368daab3d6db1848699d0debd03b759eb4fb91a8a9fb4d9d46e8483408526ef2f4da5796af52ff70f9a3c2d1507cd1aedc96abf4c805a9731b72b08d8122edcbd9efcdd72c2aca2e4fab2e53bea76fd8f90fea3f23a7b767d26940b11b57dfefbec16735aed7c76633333f89a8ab94aced6e9d4b81109570341842cb1511f74fdec07a637e8038028a10004a460567989bac92ad40869d34ba3be7cc0b68e9333e7b902cff3c25cac346689628ae8d0a2e1b25c5924cb6661441f217b4cf423af295e66e272190bde9427e74dee508d43c59a2d5b16892abdedddf497d02420de02748f3486173e886c444228f49c8b702c848a97c82c23e8d97d9ba87769741e68993a3a3af763a2aa01da8b427c3e8af26428e2ea9ad0932dfb26975be0631058e797a4919d24e0f7b24910a19cba05efb6fdb2c0359efb050a19097254c169c4a9fbac775c21c5b6f2a2dc96fede26a78dd8ba48e09bc947fa932d874c1caef05b10094bf26d18f663d5b8e29bc4e4c8597d7bff30545f07f505c7b0040bc47b82b5d180515e9cbb980802d25df14aaaa09041b5ffc65b5db8d7d0e920a13315a3438cd8294612670201a2e9b9d35ec10fac1fba6024903ed89ca217f2dbe1d1b6f2d8a88177821765a53845d921538d5d26479e785efc5af7fa915c8605e266e82dfb2eb9f0cf41063f1cefc2d5d2be480358883e46eaafa0a433e4279677e2605c8a10cdc90293281d07ea67b1ab9c36ea27e258dadd25fc96af363b1f3f791983e69a7242ed003a2de744017a2842aeb787e107fd14f4112f4d60491e77483f5b43a70ad54aebb99650ce4c2ae6fc4e08edb05e5f2ff08522648a9e0bc8187d0a3dd6c2f2fffb537dc626ca763d13a4312e617bc7d218c80371e1efbb08db52b8783a45be5eff62728036b35f7c9600a63f77c34af6f2b1567c5d4bbdd6f4bccac6b67cb0644ef64cd426d3593c9a3c9bfc99f35de7720edb0036043a49c5df4a2d649c42bac420b044a949f933c118d62713dc4c378482c536903f92c21d3de9cf262bc290125c4584c1c82a19e93e386cd5e32c47e49bf6b7da68e5dc388b8f0900da243fc841781550d0313ea1ac1d3b576de5f11baa797085bed78a8e5cad00b25807455637b25f4638de78ed5aa23eb156b719876cbf3ccc393f2eec2f4e127ee058399862ef6e177ac1099442100a32a7b85cd3f53da97ecca9f4deafe212ab05f9fc8600107e2330703a9766465d6033b16440d4b1eb6fafa7da821eb00f56551b0ff5a042fa559b41882bf4da3ec5064ca45b9eedb90d207dd49b8cd959768885b142a6bc35abed0c1e449f059d3fdd591f7df8dcd911b8992c88f64379352c52536dd784b13031ab138ab410974a61222fd17bef3542e445f0c5cba4f417d499bc82c28f0c2cab23cb95292bd6b5c32ac3972036211c4a04d6cd9205f4cd606d62a7091b954d075dcdd51f7766eaf9ebbb207ecc8ebde21474aad8968a1e3da90f6e907e50961228845fedab02f2df9024d1dc8e48a94ca15e96a6d9652e34e8bb331c6264361878b4d30d54511b6ffb862f3ae696ee63cb27684d9d24f98d87a653283cd3010dd03a15ac31ba9a493d67e5b4f0ef98294051afb49b0cdd795046d98fa1538b09868a5f0ed837245832f17645422701adeb20eb5cb35c8baaa5755cba9146fe36b664e68f19236a8e0807d48a15c03daedc236a51bdfd4f216c33128a25c94eefb4c841cd50578794b7ca44ae85f6d68c54aad1c003025e5586a7b3da79156a50ca45f4b1da2f1e4c79b95c8c5dc26e7aecaaca75aa0aa0ed41cbb8398acd43e2992da78f5f5be71ec7b8786b39e1f0aa673409c85883fbe9ef7299cc2158ab75fbf5d2cdc60a3da11d8e3fb6e07910a53d07063ace5ec800e292854428f265ee145cc0b81e0d8bc254770b400108ded7a915dd0c403729c65da136ce2226d20902800aa8121ab534a192d8c2c268534dc8aa628f82241781daf4787ba99d79cbc2580a81e15e01fdaf17faae57bddf527574d6569c0f8061579f8db896054de8b9ea44c51690b1c5ea3e7ae16f3e9e08c58dd314653d3b45c5c4b435068bf89981fb191d849439e7638241aa644244f5857fdc7b7d42839f772f5f4942f3dea4f4286bf645bc58b02165ec37d1fbb11fd493e654887c89003d2539b2c836bf9accf42f18069f24020e484993a6a247d99f56b1afc61a44eed5453e56910786bdcecdfd79c612d3c1bfb9cd8fd540f49e2ad6e0ff5f289184bffded3432e1841699b475aac5a10dabcc5020977e15d01c5ed11f144bd383c0ea9f7c792211b1641f0b58bae5f9952b51de56f4c092d1b8feb0237e6006da24a3878b6c09749001dddfbec36f32b55fca76886fedbaf4a55af7028d6bfc85f2bc52236ae7c9e85819fb75cb61e4ec9f20a4cc901c07766ebb584d98448b48b2c6c580fb8b7c9ccd9ce42ffa0b1d4cca61faa3475e97ce70611e138968cc5fb434805dd376010bcf147dd8cdd5fc8b1d0c09cf21ade0bbb4c0e7506ca4262d979e7f9c484307e72e8410e737d242c31bf219c67d06fc422a7933dcd647eee2ff7f054b5caf96e4f3845be633512dce60b66e8210c2e11051d5529ea9034b43b711f680ae520abbc7c6e64cb16e4dd914bbeda5ffd9a08f83ec35008b27d475662f9dfd0d40392ee0fd5034a01cdbaff5dec4809adc26f8bfa93c3712f06850c9d03c2db7ca42e878f59de4fb9172c56f95343a4c97e44ac3f61d466cb44c44279ae73c3c63854a86ed5928de77c66e5a9a7fac0c2f121f74fdbebc35de2f94e31c378f8df0806570b0566abb668b987cce858b99f69256713dbf37eab74271fcb88129283c022c0394f9a6a0dc7414ae1681a57ae240899f6372afc9e4e2f8466c084d72bb97878fbcdc02de95a37ab6d191afe10f7c9d4161ca44359b2290f71a2d04564126f3457251e44e8147624d04fe8cb7dba6ce5b5e81416d3c982c24cd313e22f83f16821fc292a55c2bcbb02c7cd8a8dc05d2511e855e5d34070aa6795ec16a76dda2cadf24eea8c3bb220d413e2916c1e5368ffcabe64100014a9550a7b9ff43df09d94bc41ed503b3f1d3dba3838b275c723a224e3d34ebf9ffbc71373e3d53211275f9999857665edb28ace415d21f789ae1bea5dc3dfeaabb770aa9db026ca10e203334dc07526914a00cce0124a3e708a4c46949e408dafad26d2e2001f486d1d617cc9ecfbf5e2625b91ae63e5fd0221ac859fa7d82b0b811ff30033598eed94a2b23f05846789433d1213094eae2c977f6c016c79f0683e01ca231f9717f3c7be812238c915050e6ac0717f245de29ae7b0f43291e075439b12eb256feafa72fbce5915fb7a023540887c0a340c737af9e911f7c5c3ce3a6ffcdb9b60065f50c6124f25ae1e8805960803d6f0d89d29bacde3d9cb258b468a1cb9c0a37853a1bba2a8b3820040f0b9330b3e2870c0d20b2c12a47eb554d86de42c59308ddf9067b4be4b45e7529879578dd65647cf5728d7866d3a2e1de1f9c1d58f5db07c4fa8e69656b9ef90b5b15f7e576e1bb246bbb3c72f8f3c943468cabec0e50831d4ab522cc49924b38e3527653efc88dbc008e6768b5d7a40e2a1dadb3bd46ac18ad25ae792297cbc0ab062f958a5cf66f2def1119c6e3382ba89d5cfea8335699fcfc4f52693375511e87e2339cb970136703682d49ea15fb020849d5c3aac8a7de8e1da2cd00fb94362ffa532c080f78f0dafc8cefa046faf547ac9c290d2090f6e51365223eae0f8a09abc629b68e7a8d2b39bdc3fa261d59b132bd01142aeb63b0fe78a838a81f65478f624dee79e85fe12dc30d460e737fbf7c8577fc338b416dfab53bc2fa02e4bf8c34d0f64c1bd4d0729982057c81c40e4604b60b8773b0576e676b8801e3193dd5b2b8736e2bf4cd6860d7b92f16df7a906251660da02fe244cf963e6c751885523a483a93e2213fb42f5986fab8d9eddf71d6e471564a647306efb3cbd09a88c4162374f7e525c35ad21fabe3d63422e1612ecf7148c16c9d818ebf6104ae0b1e4cab075697631d2024400b842296727f870daac29f1cd8b62d627fb9fbee8dba0935607582afa40345fd06d5bbf93634001f124597294d496f83eec4d6097c2fa5bc2079bc26cf23fa14b899a4596203424c7b1dc8da10eda4800c27b7a716e874d19a7a51c5c38f373a6d394edf5a0869f6359cc6f18b7c186c02fc3332ad01ca9ecda540315af4d19c02578e0699802007b38fa0b8e50f207cfa9774bbf4c16fc9f6955df256907be8f585c28f3cc1d4f9559eae988fe3f401b5dd801c02a05f7bd812e3dd2f2cda57a20b22f64bf6a739f3ca7d627daf7d171d339d8c66da4fe53c112bba582fbf6aaf2ce55f7b2502c24340e54364c1e7e7b9c1e6a38ca8bb057dc1d49b9ccc2895658b5ad335f16b58493f94ecd1f39372c073682af0d4a399e1d8cd44b3403e00f7e1d60bc6121193ed293edb33e75d21923812c0cd2636c1643759ec9941f3faf2e8fc8069a44123186dec2f96771b866087bde70cfacc3ee56f03669e1be500ef20db3c1248b7c80c210a9dd6ae6d340e9889063d321d90d880dcb57a139819bf0ab42f0b8d18c98ff2c48216e8200200c243dd03ccfc70f09059ac8529e9cec611f8914f68a64c0bc9424407d953595d78e85db591d197ae26aa0dc7c39e162d9fcc3fe4bdbef57d60be2cb3470760a6bcb102cccc54f6d2d198c9e8f2d0e73c51714fc3c1b28ed1e57e58694e0b6d9bcf41cb81674abaa6404c4ba7911e2710b95eae6dfde88c3d5cc16939b318bde2a00159aa81b999aa24d2ec314c2027d295570fce126f013a7a15c5bfe2de2021bc2c85d3bcde1707cb680df84c1b34dc8e742e9d023e69e4b02a55c52138ce0f9d9bb999785aef34d2390046400b08c6e2300c6c8fcb98e63b718373a30286802380cfb53ba979359e8e3be734314327fe24a70c8ccab4c3a408ac81125445dc561cf89dc1d5202128baad427ef53b1c7f91cf612a0634398c14a325c7f0500361ac0008f0131fcee41e75b44e8ee57cf3b3f03f37969a920b68d0c326372345004199486a24676d20a8fea489a89cc0b918bfaf2a6ea8c94d59cfb9e589cfacc94b6a015869219d17735947fd084acac2a3b926c1125d6bf818b2da494dd6a82302909129009592e6f7dca1a49cf64fea0d4ad050691114a563ce3f46d6faa14ce3802a04ac922c4e6fb404022ace77269a9ae6ef5909ae958de303952b8654ab980dd7809f35b718955332c8f2c4871c05d199641c638a57c3645e3c594d1693cfcde0c5a8e1544fb1d77e03aefe8f63036115d6628e5443a623a5327da356026b00f280556c1341b6281a2ecfb37d31d83ffc383eaa2b5126c2b401f3a44268b462e420a25e29ce93e0da8c49e8385ebeb2593544c53d20e6467da5b75dcef649b034af6bb144e46731fbe4edf7b05b99c3358c9d04d5e2261a93073428ca56fee412258bf906b4d931a3b6834b6056a9662dde0af1abc3b8114b1b1fa40438707b332c8a333671fc6b0003b033342bc7fedfa30086a8f1fb20506060ec7594aea5364a2f4f3504d1e653a61509bd04d79f5d1a191f9775ec791c3d7887ae147a112febdd6a0620fb59245cb0020dacb0eef36d54bd0ffe598d1f18268ed93f68bd2adccc7cc7add405c7b1ec0e4e4f81ec6a22c93138c22076d73e825b818be5993e09bc097759cedc9846b0f8734d3936bb407b0efac97bfe12db96e9932fb9ce5b7a15e14e030085c7866a2cbba8c4a022b47ed9ec6dfb1a7713ceae088f8470750dac3407e076096a9363c2bc2bbe68e80594677c61036dd9e4fed8f10dcd4e806f8b2a1f155f5ea22883c384cf2e150b14b18db5355e1adb58de8b0c4f8014971c7f256b01ffc4b77e0480c47e9fa894775d28f352c40437688eecc64c3054d2d10a0cda4df989dd3d6a7a26571d5c98a1c5ee8a581d2c8d8239cc494a25f23ba22953ec8e0529bbf458c2b537faca0b3a18bbf3a975a1a7e5f89eda979b0941797d297b49f1ff37e80a0be72074c5bcab174227f4445eb3d3cc2a9ad804f18f9c658e993b571dfdc84f69c67bf289048595a0ff4e7f895576276395d5bead9567193f070a7d5331249947be58ea5dd9618e077bb69862dbaaa58a6d88b9fd67dd44224a99200d8563e23e432d4315d5d85befbcb419fd9d1a07ddea59e109eee36ce0a6e4a45c8bac13565eac9a30659d05eeedc810df9f0bac90611748e9436f2cf3dadb7cb4c3da045e591f897fd7e2875d5030f8366569e0d26cf8a80f65d5d3c0b330ed34481cc080558348d7049f5f25f8014f48ab0fc4fb3c79834d0502e6bf532230e1d2542b640d125d78e67e125ab180d7fa00620397da7f27952a2c552a0cadb6edcfe2e64457591ee5ffdd070d4103f8aab0d0f8762a0b28bf4108e7c590b3c55f0f391059e0a27d953fd78a81ab7fa2678153006d69c956de23c9cb2ed3d395c082eb676b3ceec83e5d48533f0138f715e6d7bedbc8ca97a37a1cc16c4152bfb447a1edd22b40534fb9ad430df6185d8fa034f10be51c22757d44c01ba140ca5d074faebe64d81752030ffc708905cd6257abe8eacc56efdb55d27b2f0a44aaf4b8af2970aa9beed87697d27d69df617f5f4bb552e07745568f12437243ee1f6c5ce8a93bf3edae98cda73bf6b8f628e0fe52514c71242100903bfadf568fd8e25fff95ff416ef68430e64d4b7372999596844bd9d6f06f8002d0d2b470ffae93400419995981e25891cebf90972cf6755c7bf994f70ed1962d5808b8702b846911ae4d5e14aa7b7347b4352e96fd88e0c8cf202eaf6b330bec6b14f0cac08480c59f8cc64c64239b7dcfeeb77ca48e1c34022d01d81764b25fb98f042e58c8c096c6c5a224e153b4efe5ad747b3db50bda66a1e576c1692ea7d7846f59139cad63c02a13094506c02730a8715e61e0822ab1501d0f8d76bf355f14a5ce0dcccb770fbaa46a2089a53b8ea7f60cc069bfbead74adb762abef0afcadb77aeaaa014b3cf161e515ad7c57a49153c65b426ca26fe4286919fbfd662b1fc1df22cf8a1f868544728a4b643e634777319ee90aaa70f6979a9f82136220f9e032984064a6d78d177cc617c20c9f6f5f195bb05fbeb4d90f30fb17e5e43c1ee6c089c4631b91dfa76b99a17edfea3c7e1615f67dbb01b2c44e3da344831b7f46c8102e60b3fd80bdcc7f96c7afa7dd7dca175840ff657d8e93169c6074962d35d2d0c2be40739e294113468c7f22818736cc5f8011ccaf713a1dcf997242eb0b6f27804b57557b6f006f6315f066b1f56e91c411f5caf102fba50fb5750bd29b1ea8b345cff6f04ab2ef6ae06c81172134ddb80b55e6b806e95ae38409de1f84d05056dd8367e8ed06d406177fd72986d0d1aaf0d22c39e791b4c2547559de3514ebdab53445207473c3070d1003f22045190914d7f8419a127ff77c64fb9eadc8c5b54c37516c4397f841c3a21c6cce3fbf942484295c6780a88768500695668158b173863ed274a7c23e7351ed818e66e7f98e27663ec3339568c0d1102042d92a3a7d70c77729b9792dbe9fad06342d1073cde6bb2ba0967b220a500cd3bd5c6ee9527a2307fda0e66b732f2f2a138cb008feda376e56ed5e310ad8936d10ed39efae40a650b69cad018f149350c3b6ed2eed21fe59452fbbf18c3530e26bd454d5c1e2f64d958f8b00134d1b0f1f10d2f1ae873894bdbc3787e47c198709295f61be7c249740471ee14c7df1cd7349785226356305e3bb112da42bbe13fe64ca79182ac699f2a99bed6c1a00a8de1d373fabac63daac1835b2d73844e98cf35898e4a764fb35ee89001c472aaa21d78a2ec5e0a7f4d6b01806972a9b1ca3ca302eaee964310184cab150e5012657f2e2f35fa6f6aa5082a959c3a5b5fb62bc0beffd65ef05fb4e4a1934badf628e74927509b8a2df4cfd83526dd891c538638c620610da5fb27ee1a03d7e67281b2ab6da455aa252f33f00c720eccf3178ca2151f7ebc84ec519073f488438e13abf5dfb7dec41369c4dec5424a31dcbcea3709496d57b61b2ad87e3b49ae97fbfd9fc84f908af064165859f3b96e478a949ada334debc2d5b28d78ac6475d0e0f50869080695b47cbb26b6371b6521f05301668626d6c5961dc05ef9550b530ae522dfeddc68af49e5ae7ac26a2c5031a8ae810255ca3bd39ad1d4175ef45a348f30f2fe3e05def2e474d85e199dba7479c0fb7b69209a974366431628ca3245d536dc8709e3a24487c712866418734d8a19e058f54653e5033d42699ac296220f197c35232f1a592e997964c93964472b9eea24d08bd43ae2965a86780ddfdbfad407d2620210b4ae82913a0bdc20becfd197e91a2e52dcbf8d16056479eb8afe59102e1eb7af8fee3c8e287a12cdf719e47e4b9cf65153be15b4b3a65ed38108170e1b9912b4d38177e0ac77fb31e7a259f0747f5c7dc8e24a10902b8e39e094939cc2b35d10634f67acaf55081c349fbec25e68699da4cfb95fc07bfc36a6c2386904bd33e43cdaa459d0d1c027cb45b8d7ced5133e573a5d0193b3bb8373611121533630a039d201a44acd558d308fc9504c46d6bf5071b17da2cb569e829a5691a60e83963803715211e0e444a3f10a300d85bee7fe572cbc41a73d324b9d7aa1a7c35fd981f5be21679a6d4e31e4c350ba1f28c6b9c5cc40f07b0fe066f1373cd5c53ebdf67ca326752f32cdf56be02d3f0bcf33d7641cc37a6c70c589f432de54003166422fb1756c440bf59e34a4fa6339f1898f9832306760d1f2255978b1403c2733f692addf1d2ea37400b78fe2264210a1d154acb1a1f9815a4ac4cf36fdee05db7a2f42668e3a1874902b545e42a80066d6562a357287c5387c3c0279e01e41f99161ddedb7f7d3d13c5838bf5e8c349694e939336dd5d3b1f92c4d44279549ced2679c2469105bf154ea265a3bbc9d188c52fc14ad440d072498d6c1861c658201a2e05400cbb2c26beac469301046afeee5916d1ac543e2d72a25922f0eb636823a25c6c2c26733443a8666e9c008f134ab185c9227ea61150a7e54d0b4ef390ca60cc08e3074bd08d2a52f8266b6f7ab0ea119ed2013ebf9867bb4cf2b805daed46722c0f9f7a022df85f34390141f0f1840c8bc5875f7ca111475f3d363211e885c60d622c6d416536bc7204ed3f0e37203e392662c5dd16439090f47bb230fb4e48895196854240995e10b4b09b8031fe328f89b5b7d7fbbdf57de8ae330af8392cc3a6e8f71fa11b1177702d9f409ac0cb101e31a40635d982a77b12a7c4de4d5be7f7abaacbcf5891de1fc1ac091515537c0378c4804f12615cd4a0a03f9338b91101c270eab0411d38a6be46a26a846480c1faeb9f020eb83206fd00fabe91f611c22ff02ff3b623fa46207fedbde7ad7144fef44f1ad6479127dd97286dfade153ff00293d060810d9346dc9a224fa38175401ef4834db70201acf1df91c82ea5b6c9e546ad6e403eb9618143ab44380d73f101dee56fd92dba468a728b7fb262ec91289fd7f3cf9dbf5392ee4b473dc12d04bdb23f684580b82e1dded248f1d67b4ca655a7b6b02b19240d4dac54c76734ddf32ae1348b585970d77a2653b77ad64a4307b6ded2e90523f0549afc75e1a30c9f2857f32376c8224b4bcd0b5b807936a70896e1467d236548c637d5923ea2065272304b645111b7387bbfe80ba906ccff00f77dbd8e26e0f8aa4b152c0ba3d6de8718bce2db904d7c3a569f955dfb6cc68423f2421b029124e7ca4b9c8625651f4c71e3cf09a2460b0e78d2c66272b9c8fcedc2809764ed0d2aa0d1d1140738cd5e3b824b99a68a3baa4d69254d0f71533f5fbba20141937efe0d9e847432b402b1fdd95a149ecea2416a3a086576a2f2b2b107215ff9e30bb262b10ae574c099241d7fa72deacff75c5df796c337186d4111e5e6a19d4abd3a62a0d50f04d9de1c2c9c95c4993dc6541ade3adabd22561f8766aa07b2e4aaeee0b0f97e6960c2cb30ae564ea0f6cbe472b28e209b13a07f99649f7601593726942a182bae8ac475bf038dada61e4f89f47c4b2a215a863a334b610fa85f960f12d8115070efe0998bcf99ba4cd957886232a65521e516af6f341d49acfe3e2b8919db44b013e87645e7fce02b5495cc3bdfe4503d67da2e90c92927241ae2683d9b580facada611ec13f9ee9ef12c1c6c729c66c08d42d243cf968455517b0fc8a1cf73c0b48713276bb111f664271d1d34b034f5fc0758f1b5b633a0b47004c09ca0adad524e3ce3d1255f8a5f8108255142de19170c69f7cee2730b29e0b01e0522707358ae5a9c0ab5bfd9f178ba5963cf6c2405a1e68469db7819ff1e71f30cd1e287ba4b8bfed100e9f01700d052a60e723870f05276387ee056bf942b741644af89dde2a14b47e257d381ee87bc92b394534f92dda6bab1af0122739b5eee1524dd1ecd3ca04f0b1089459a099e9dd22ff079b64b6e739835420a82bf848769ab20f22e781e8f6716c11482e58a80974c3e11ee2cb4567296ece2aef1959068744410f6a20a3dd7192e4688dadbce1bcb05317de787d5d929eed422e06e89347b5bd11f05549a0b4b222012b0a484d0e2eb68e55c35cc50f599321f81845baccf490879a1e0032638cdd0caaeaba32e3bf1d45152a4f1112fec9daaa4ac3df68b4124be5b97d2f4b75707d367c9dea2f16c401f30925133f66bfcdfccb39140ec61cc02a0e6fb560d1de2812dbecaa6a5f05594ceb1a69fa2b7cdbd64ca6083372e6c95f9c0a395897f8daad0c503d07ed736df637aa30900a5abde367370fb13251a4302b1c912d9e05ba4676c092b15ebc8a90bb905d3d8c9c3bd63393974a12eccc0860d5f5a37a396c24b7a5e5548128b28ac24610158f95ae784ce00f01904e20474837f7607151c6900d118c3520601ddecdd419c2edcedcbd8b3ec71a0638f0b3a4aad3547c553830ad39c3398c766c546b50439ebbd5f406bb873b87f560e6b23fcbb19206b4469e265455d38c8c8075ff339c8aef45553a0084a6df4f6a1c4fc466568476709bd0b86744b158a7d09d19112f6a87536759bad08340edc2f301888b0756ef7685a078a28e2d50edd70c8c1a80eb20dec203858ec1d660baaa86e0ef8a669e044c114606289d9f4b99a696c6b8fbbb67dc2448d9e4669684708ab674b6e5123b1af105c25a2f6d9d0d16f2eb02fe0fb42507556557f37cb13e6a2ce6cd1d17c838b4f711b443bbd9a30e7793a9ac7a5bfaae93b7104dddac94243153d53e146d12a4fabacbb7735bcebfe00ee2f2978a647bf36ed3a411c5e5c7fd30741d410cf0200b90da4621190b7c27baa577f08f70bbb4df09531a0421d5f6bed1721dc9fe4f8a5e2595c97f9bf186a1d46b54c6f0ba103fbca65522319a199cab8c42643c008d1039d41fb4f11b25eb5a9d7e7024ad2a66e88976bf5dfcbfad401dd9f5c035263abdca104e80f225f4799c1f4c6ac651fd8be21c7369f67074f779362baeb1ca4f3f509c167b66926539194e4cfcd05134b25212b83e6dd7fcabc308f6ffcaacc83b377ee135862b5135b2ba9405d5ceafaee7ac963ac3132b513bb8c27a10f4bc6af12482374d148fd4639a22eb53a9684cac92e30456d70670a44bb2dca1678e8948a9774ed1d276db5fa2394700e2302750beb6a53932975b61192c3676dd12595ff76c961c46e0582b739c68c434a11179df27f4f4e49a57603e41eafc191105cb9d9b97cba019a7eda1ba6fafbb9dbc3ed23d24b1bd65d6ea72d06ac586ee2e60c2efd39bd7b3444eec6d49aeee69d56e4b4f9060f45b0a390feaca047437c8ea584b8c7d0fe58687be6c6620256fd7fcbe28a8313b72c6d5dafbd31951a0af9a55d823c8b3f8899d956669220e56592288d0595ab96017c28afc193338ac89e987e5b50b2ccb66d44805eef609df65313c73a2097332402791c65e857814edb1ac78267c033e9a1129cfbc10974dd332d85c6d7c715091f0b036f062b3cfea7faa79b018b2a74d075e73365c949833539d56c3b084c6fa9ad06ec7d70ab527a00d43255d35406869be912337a4c0aa39b380d2c0058cf44ab211347154c4c215dc2493b7a06b49b6b61f6fd6a3fd87786d96e1160d2e0a3726aa5cc0e5cb8da145c6936831d45ac2197b4d819c50fae1acffd86b166c6c0bf4ed4be322efeeb58562c96b3b8a4762526db73771fc16d79933c7c160b4002e2e6fa8b981f198b6a7b20cc8e7414f63ea258331e32020361c5d40a2e9a8ea6fc79814a1a8b22c6a15a6b604179de098b3e50a4595b1d584377ebba381af24b2475b6b1a8bed642f32c87d5748fd138d652ea0940311851878b5ecf2d9c631be48c5ef1029b4840a68d3670acb9bfcc6e592b7425a58ef3a4b0c17960809762e3b1f3e3dcfe963338d7b1a19bac634e776b40459cb062585b5c5d9306dd693ecbe9514232604c56cc458f04072f93b0240391411edf0793eeeed6acc1023502ce9f60aae4e3888dc6f4d955ad874bb50400414ec382f0a851ed3e01825f789512be4796e086e1f7ebea5efce6d33060794611e813c62d8df1fea94e5884ce9c01c050ae95eb0bccbd16776c0003c78cbe20113bdf280ad714ed3179c119f38f3640694deeede8432a68ae75198357ee9c4507fde2ce5f2175508020586b8948beeba05cea953e63049d49b3a7b5bcc82f5fd841c9a0b07ba095a073b9544f1fdd67887d65683084500410383b07c137455ed9713cf186500f2b62b611651b42b11e3108c12fce63c1b8fc8b2a56e4bcbadc9b0adc5f4c91a4c136a9ea8bf100b56cf60b0080fe63ab0bd44e770039e9ef6a307d20878e03e08a542ab61acd79811e9932e5995db2e431964b1116709be536b19d56541aefade288c4205f3803a58a43202eb24bf92027f14d9c1c94935d7ac8de1620337dcf7b9eaec7a99ba52f8ba2b85875bc5cfa9cead41fe1c549df6fac88fccd0905ccab40e477dd8d16f90f32cb7b1bc54faa525e2cb0a00cebb9dbe80eea93a7b5a50dc1d0bbc9633ea325d2f85bc1005da3bd5e616913d6691e970c96658371081550980a7109fde5b24956cbb3e36446f5f89c022f7308b99c644b7e9b67903adf35f97e00509b43fe4c27780892186b3cf8193ec89a9ee287274dc2cbbe49435f2472d0a0a6258d573ab8bf0ad99d59ad3d0022510c5f73741eec35c3366b8ce52c9600062fcab09db37eb2ed51639c52c435603cf020bf60b87d2f14de22194e63d963a417cb854e0280f4d596d35187474e778d993ebd65715d01f9951d7e1fc0a5f4a9781eed366abf7f2a9c2edc0aa697de69ecb999d7718653662bc37376a21aaa7f351e9e3a56ff2048fe54030dfd03121c117127248d5b7c0216f0a0a1887b8b591aaa0f1ff994bda91301dc75bcce455bec89451f35ee071eda3c1bf9256886e7265ea5ceb4a8b5e4992bc64e200a64e18c257696ce8ae1a7037208f5eb531c76ca22ff9b4e4a12d90e262ff4837f8cd63c1cea9fa686e3f98a397876a2432bda123a2ea04d1980e7efc2061b81d74ba7f2b1462d01464fce48e2a8f0bce3484e16a749c1ce876400a9afc04c1cbadf67cbfe634238337bc21aa67850b74de73907ce081ceb41e4c1a4dab17d255b48e79c591bee68fc247fb5246bda5f534c2c630b94f3ecaf370fb0ad9fa389f1da7ab5bf2ecf253662edfeceb6af7c3cdf9a7ac4890ea3974c67130a0b2c12dd6514d1a2e5336d041b281b951360bb2b71ed3fa21dd002ba1c6ff2dc81623c44f035fec2ffa8fc3cc9181cd9f73e65b65d1ca88a9ba20ae01d123e627f1a625ffad772a1befbe5b2558b9827cd5b0f67bbe16238c26095e5f664b99fedceb1213822d1c19ba703cac521a2bf5333d5df30a8b0f82b24fc2c16433f1d8b1c9869e4a322c3df855df02993ff8ea934cb1a6da65385ac38fb16077559ec972346520d4c0f618e54d9119659a403d51c0b9032e1d5bb87247e4c30fde3f46a5856400e7d95a8d731b960416edac21b8688cb7ce5bfc1e29565b6e3473c0c2a3d8e2f0262d81ab2f1699633fef8db322fc61f7732ebe132c46bd413860428094957255cb17b988a3a3a73abc950a4cd2871926505b4b6b5e499dbcdf6626d72874d7c362c348b5df2d7c464ca5c2dc1b8e086bc2e0e24557ffd636bed312b06d42cc9dd14828f6f635deca99e1ff5ac78bfe7fa7e2e5629d5250f85f2fe33bc0d68aeadd2f80b501c34dab0ba94acca821e0fcfc35c7116b44f1560e94fc336992aa85a10ce9498dc13d6036edb23a944e37a7ee9cb6954671e53867acc5a03ff469e36ab9900138f07b9d50e0c1f114c4858ff16c200d3238c785578048c09ced4a2891e869750ed1ee302e1a2d0707573224395a6a60b6fb8729b6eb96415335dd85a066544fd51e83556b08a11f869d6250e3e3b8c93d089e3e57f06fa2ca877031a08ff25f8a33d14f26c1b509df3c3f48acb7d2b5a8e7e808a5191c7d21689a81c0f0d426e705e0634ae300a102a0a18d2da2fb687064f6394dd04d4023b6c48df78328268e4825d71de650e5a26de55db4ee02cdbbbf572d7a4f3b60490844b2d0407d36869207c0819adf163e343c53eed412cdd29b82317e7da3cbf6869bb8c790176664ceea299cc18a8f2c9a91c606e3de1d67121083f0bdb8f543777f5c4e796827a45912f92194c19e5492d51352c6f2e423bb51ab43fad5dbcebaf7d8f7c8a24047a154e410d3446e59223450500ec32f618e3bc6929a9ab04b8bc34dca5fffad64578850efbcd741b2a6bb00fb9a9c3619289e1f085ad2437862710237360bc6bc428a4d5cc8de619d5adfbb1786240c5b5a4da62a4f9d956d90aa40d6d723a3132b810fd7bcec6d33dc262b83e869a1efe869a447ac0d029b433186f3e8e32e5937e4a2e6ae468622a932a6ac2448d5b1f4655d901594a670824616670683ba28198441fef0325e48880828eb54fedc4274cab81c0474d6ab8837e8a529251a040296f0e69061500352864e53e54d0bf198de8f11a9f6b035dd18e8139682d2c8778e61ebee3eb15f118d58a40160a2072b711564f3d3e534aa31b8913b2d1e202fa54c0cfc074c68c01a533a877e6d7737fe8e8afcd08ec8ada7fd9152a223ef0f702384801819e8569ba3151dc7b10ea3e0b626ba028f8e65900f99df27edb85f538c2fab629226dab7f268b001fbada16d47c0f65a5194bf44cf2e5dbc8bc453c20eb0ccde0c9d16f7db14af3dd123f00118ef7f254aef1a5756479f8d701d64125525e0a5163cb06cb3039260e31ad5d715fbe1124457e72e7075288eaf4c75c8448314ffcb84a1c4b3df9576b1d10172fb3295c5e531124eb7ac1c69743fcc1c4b2cd38dd4e8e4c87ee17ce810fdbba7560ed8556ede41a94a4b073877fd4614531fd94eac9e95ac717e6607996a08f5402ab9cc0f17013cf9f7423f2764f8ffc74d5cc527919a82d3eac7d59c6b83feb7997496132533b941726dfd87b7eb57033ad4d28844e3ab82f5d8e16d001ca5912147c865072e4741c94f7dca1a0c29ff6221b4ee79097892002c22f21fb50d41f8186f20da67ee0b80891a3244b96638b4dc7582677bd6a7eab547a61251a24c2da66c67bac3f5ad2cb57ffc72b1ef9eb6b61f8bb0bfb51bfbb16d919b28b684b1e5cb2b849a942c528b37e6c40edbe7e7cd9ae322274a11da193e81dd0cd1873c4ab64a737273aa2d1a992a37ebcd4804b4b49f80524698f8b2ce4f7da308b7464f4bed5a7380233705e9987f8edeedd5e647b9b1fcc61b364b76ec7df3e2eef733aa8697ce6cf26b86a3508fd903c9aa6c2e4bee6055c24c027c0e4a797a97c12e31c7bb1473deff7be979541c02e7d21ad475b228857feb48a92d51267fa4c0fde9e70a26583c9d8e9c66f60f67ce11b5ff9962fbee69b0ff8d27cb5e72f5cc0a827e7f9e0c2eb3004788be14f99a7b2c56301438478fcfbded5342410b2a8e7afcee21c2b0842d42ffe2660311e2a6fd4f906a47cd02d33eb15a7e1b1113bd7001598b6289901093cc4216611709b1540f9611bbe5cacd563da66154c614a5b66e228c662814d42fafef1fe5531240842d4efefffac1621429244bdfffc9fea09592419faffe77955db904408232f7fccd30f017413994af0be2ba3df3e987f2ec4d0aca42467e1722ec117f65643dc16062e9e171774d0c9b93a6566bd6793b1ac1dbc04cb1de6de64ef220f2379560382d3b01d0bceb3bc8e50414dd6c7e1ab48e0af31d6ce4dfc8ac3535418115ee957f824a4f474182a7a5013c9d16ff5344cf56bc4bb6bf47e0dcd7805aa9d632a3415b03186e0fed2ed2976c53bd5f376dd71684d52a06c75d09dc9a5fd0a9e33564fba0d2506ee2666caa3980b9291d9e4f9905a1c67a946d2645d1dfd0ebf47f1eaddd78b83e47649cc8ea1466ae401df28772c25c0e4f97f7a993351580e74271ca17823355715d126c99ebc86c168307b9021eaece13b8fb039ce18b157849b3d6e0517ce8d5b16e5e71215e852b55b4ff30450d4eccae2e5251f0967f5c5fc9590633a35866f0f4217765a82f39d773bba273a6c9c51769aa20ab9ceff1fbb26295541c06dc4c79b0e260932104c1a680e8197d56c1e354f2275da1540738d827b7e4287264fbee0a0eec290cd62d378dbe785405ab228b4f7eec4992ea67376a69927096eed5316f781e30cc89f51279b302654c4c7d62c45169106b215a853d04e85e3ed03ff3c46f485465e6ab93e82f66a2f9ed1b031c2eacb7e2b95a92b5980fcb7545c52311832ed1530cca995a47d853df5981593112630cd6c1e024e6814eb7a3ee9bc6101fb8d69dbcd900eac87fdc3abdfa0aa14f3b19fd0b1d10c92e1113850add892cbc3029b5a941d5c4379ee95fd13b01907b06d4927b18628f704ee451b4b696833d9c813ef1ae01ca1fddf905e485c67685e28a5e5a4c62b0f6501b2447d70c0235feac3b3badf28e8554e6391ee607280cac786ea8023fd315f02df49c4aeccde98ae6b29775182208bffc7d865a15ea792f67b634de3517033fa00931425ed8b0f545f81ebba66b37c862237b54f0df5c2067dab786f4f58a8413f0cb85e2e7919c7f5a9f91729c617103d533215cf38803ee3c7c5156a746077935e46a694120c6472eb4eece1c568f9473e1a3e0eba26f1682dc9522350b3537781caea45ea1ef9a0c9e12622b42a246785dc918be3d01dc85926c7853bd5faaeac5437b9847efeb566cdd1c5c55956703b89a5731a85637185aa94b9d81e2be2290d775982f42eb70702ce47181c6b152da306764297ae0e98815dd6f91a9878e1f830e66c3d1441805a9340ca4ebec3e5a20a8e5bd6fc1173472994aae06d4e3f0297a00cd5de2b0a5011ad8777fed99521563127df98debc271f8990f499827a95a025160256abdbf12c58db9477612e66037ec7a9482b90c387bdd445fb72a4bf4226833845854d7bb5bad0714597e43ea54cea525fb254536501908a745fc6253116bed9827ad645099f8dcddebff3d08eff7dc180a49a852f592b6bea0841383520f64a4f477a5b248ec105422a8bc58b44740af4f5007759d68322f233e83ffeed00400f65cfe3508b900e9745a8841d64a84dcc6d5cf0fa1456a6ede4ed36a0301ea2c92b0af9d3b4a4e2f12bccc9a6f8ac66809dc5af47459b1a882d90785310178932829a9b1ca57e2a2ed4dced754720fde7230d4cd46aac35d4caac64978231416dee8e60b93fc25ae1161e88a2e24a94eefe765f96cd4a366e2140350418255f9911d126ffe315c7d1a9cd233d64ab4dec409577c581cbe8aa5ce83ff92141daea29b63208c74f9baaafa908ec7f5230f224facbb0cf4038aa8c3f24d9545c2900bbf885ffc8cf326517202372dfd65c52c337a8b363fa9a60982dd632d7431b2bd6be0d185175d6c93375959885da882facac13e25b288d841f7d62d79bc95611e2688f5b4ccd42bb8b9cd20c5f33f2e42f1585f5c324c3075143d5ba95a53fa71131237b166ae1fd6a3c521f7fce93aac96c40db3ffb5ab08facf4b174f6136262e3313da5cd3469acd01bd7290669b80cf66de96a40765b80c2cd99869328bef9eeb66cef187ceac0c8d0b55fe80d6ef9d663bea7913ed8102d428b14060f62c2244b8a225c5effc8b6a381fb7376805e9736dbfbeae8a3c38b54f2de21a9bd022b64f1457c18d05cdc7aeb5fde2e1dcce7465b3aac5a283b746126806a28e13ff2f5503a1cd295ce846fbbd3a2ba376703f017f32657d822be679077bebb659df4798441f4e5118bf420210c67849789363ce5aad661f1da7570f789f4771db722b7f7c09a9750a158ac8441ad4457bc8880b66ad5e3d6b59114cb301b1e7cb7713077d24acd8fccf6c8f0e8e69979abf4674c9d65280764de70d599dd5494fecf8e07ced56cd3aaf0cf6602c9a6bd6e5dc46e9c17fe581e0bae7ec478edb0749ab5b9c7748bd17d940d181fd9b0f4befc2ea14467cbad3e1ffb6808a479197bb354b2643f65f6d70d0c4b89fefb4f51d2469fbc17eed8a933222e4369df7184f4ca76ef277271703ceacb50c4e69a0709bd12a97deb18cb400935fc7798dac0fd5fad23a689b8c6b30ed190330e6656915469af0e9ef4c992d5ba508f710002c42dc6c0b5f19555d64429d473f9581e9f3214d0200aec3a048a111b9d5a20165a4d0776075c91a2df4974da2b04b4180aa2622f8e3f845bec416f9b828f3c579df5148dc862e70adaf0169c3970cc09e0d461d2a9d707e5afe66aa4bb168f90ae8c378cd8e5d23138608e265a6cdbbbdb967b4b99529201b109c009da09b394cc4e2cf6afb96a83b12e7210d5bfa3aca8285eea05a093df1e188faee9f9f3be4bb56da3941152ad3276bb28a3f493e977da3f4f3649c926b2896c22a36c12d6ac9efe2630a14c135aa47529d0a7e5fe8d80d8f2effe5483467c5a319f4aa562ec74a51c9c442f55a8fdcc55a791568adad93eea16262a7f958db16edb564dd3c019e4f2d1c5862e2fe33b0672f1d4ad4331de65a972954bd552515de4572babf4aa05891acea2a53b839ad64ba98bd2bb4dd7bb24d570ce6650385dd7f5d9cefa368b76dcb08d6280219d41cd52c54e81312075c1b4d81065a5ab69e4cf7001a386d1a88d5250c3a87427e55e7e3a27e512543758e732851abf962018394bfe4cf9da8b53a2a873e46bb098b3625ebe36d39036d716b4fd5ca925b9d2528be5e9d54ed21673568f5cba7253da90a251656fa97eb45408e896ea65cb876e2d61c3a9d5035f69c5300165ab9b605f15d8ad1810a807bed24a7d0f3cfcb462be9bae39e43ab562c0d8ead85929e96a1a57101bcca5c3da9c49feb439d37eb4a0a013d8030f3fad94dd605b6cceb41f8de8dba869e4535495496949aed212940c2cda90a08673b6c16cd16cc63e84a47e83b19b66bc3598d4173eb190454500b7521f4ad755bd7cedc759dc392c2f5f3bd2392d2f5f737de792a4ca3c8d0fe7ccabc1a46aaea8b3bd7c5982c8924b3322ae9cae57289764c7bcccdf10f332321f73438c7c167cb0e4ac598248235f4ed7952b89e096ea773af5ab9b1d1aecca1ced5337296a614ef3db0ca46bce9c46a8866d3473d6a4b3c89bc8e9f47d2c2ab05b31b28f5afedc1a4f6a94bd96dceda34c05569a15631a50b362abb59f1f90d39d56a2cd9d5b1b35948ed234f26b30a92626a9397356caca59eada1794d7b1c43b55a0146a1af931a04cd23452baaea4d4e4e232a7d0365dd375a56b0ed1005b061c924fa90adc19e2349c6269f9c0a4ef4fa0f7f9387d77e2baca8140b4e7b4e7eae7a3fbf871dd0399df5590e5e347bbefbb227e59ac0318c7f73b6efa7ccc3f819b935ec9ff3e1f9f6512f31bcc5931b6a144b9b23b791bac73626dd42bf9733667f2b520f99a4bfe2c724af94340b75276c769d86477f48af9e8ca7f495fbeec76f48a674d237fded4cfa25e397143ed0373e6343fd166c26693b9c1aefc0d4653f2777824c0cf92658fb38844255ab3a247a88601a98b33da472d7565b37634cdf63116b7ce872adfb7bac35912e89cf994d6ba63db364f7d3fe4f3fb6fdb1697dc041e0de565e9b1a0a647fb0e70339a5393993e4cff339bb7fd9c9cc74d6ed3b66d33ea395f7bbe3fb36d1ac7693c63bf47e7986ce823f333bd32d9f0f2fc4466d2e5b9baf3771ef5737efd97472da1d2fa62532d48541ee224a916cb719c0d53573359937b200f0c485797a22c07d118420d65264f6d3eff0edae2df402eea151371af9244da1a8ab2d32364082fb5cf4bc7f8424945dd2833428b1bc6d8498aea559184fae244d7840a73a3cc08248430c10a7e9019117432814cc96c69de285372a404ad2cb433bd5094472b0cf5502147eb9112b40d399bc3cced2e02ea48083c9729412f53e85a5e2e953f8083974aeb520b10496061f982a8021184d349298805882a5e3e2f6227209c78f18680f40141c4d27931f3be8140418b8956221811a1ab0dc4084e1c5784211310f5e546d90f50b8210d42cce6c50f6704a3754144a3304d23bc36185499f4d28ef8fc0ba589e4f6cbede668ed424952d90f3f278e899e1f4648a2744736822a1efd31c5488991099cf9ea515a5334b698dbf6449571631553b8f0aa505bb8b18a294dbc26d4bfb18a2942a7107411c60898a0822ea610d57a63155d44a942097682aea76788943d53dbbc087213dee723ae6e76ec74b4a6de68eb4cdddd1d638c0dc61d3b3d42b8d4af6e90264725ed944b29bbbbdb3b268a15d3faf98874d36614abe8adda82082264a8f2ba460fda94ae4de9ab50457b65a4424165150aa4e6cd98289ed96b80a0dd7d8b2cf9d569de6956accdee4d69b2f62eb7b8d2a4942290226066902f5b2dda68cfda0439aeb43999a7f6ae4d6df29c9af62edfe7a4110633b34f9e93e79cce1a077c0a757146bbf165a55b8781ebcf5b37832650b34cdf594632598a6aeb8ce4837e3204b206bf1ced13dd36e05c9fe453505a2ddaccdf36707d72ecd3943347760ecd911e575bb8018fdd27693bda4ce7be93d1fb242d679f79901b95d46f8c42144a4642c06c31528d0f54fece9991b165a362d4a4a649cdd479b273626b1ce06d7305618444c9147dec86aba30b842ece8492dbb99b28ea240d3c7b253f960a83c190902e8c9160a994779ac7f69de5abcb933a73549d4ab3dc89e929aacaa4a43b3972e5bbec592339e9409e05b9ae946f9a39699ec9afbdc3d3abc8309fa596aa4ca5aaec26688309079365d704fd347462791b4c965fa6af6f83a9a6980717310e696a42e35935d9267856c43cfac7935cc9977ce6acca3c5026ce89a155d93c935de4622b5a90510c36f4b25525e47b50b5bde9ab1675e21797b346b8c57dfc1660facaf23bbd75ff5923dcf2dec4f255daac9a06948467cde221927e8eb8865e4b94bc888ab4291fd5391b0b6e33f97ea7ebf727f0fb5ef2cc69e48fd3c820a7913de434aee4537856afaca95fa178b6cb93ae87cfeb07463ce1e248149ea0d2aac212432010220958b4b4788e5422127b77aae072cb65e67af96f74ec78155194e3ce22887027bd75d62bbf67d759b3d5bdd3b287150b37ca9e5881ec8924424df8210c2634617523b343077dc914138a64302bb2278ef0c799eb02a5a6e7eb386a997e02e5a6594442ef0ad1a2d2ad095137ace1a0b8721aefe12e6dea7641c4924c71e93cd4391d93ee91ced996dc0eeaa025ef9f18ef14b2026b34b0a7a56c401116bb9286488053b7dfc84fbff49884901d2f25b2a2180f21bf8bdca92ba457d2a44993e987182f1d358b5bf24d1ac7f849e76c495cb9357fbc35645011d0adfaba61ca6f273db9dd106de46f1acbc7f8438824c5ea8ed4cf06a66eecfe1e1a7a25bf7fe40e524a99944ad5da16e02b43d786161c5a2c0ffd06fae975fa88becdaa706869b15c146a377eec971dcfc87e62d2f2f1c3a15b2d760847c97e622ba457cf3c18c63864cb4b283ed562a1883a37ec17c3984713d57041f5ae64fe5e7acf3c645c38a706afa60d4d374c310fbe31b5f5a086fde2a28649ed8d966427d15835ba7293df430a94e8b88bdd625275dc7794ce916fea3a93124f3a477ebf9ac520586aa2ce8930f91d6ba3ce495df90d6576e53752c7999670bfadc0546b95cf02b692d32c39cd4c3e956fab503799baf2532eabe6431b2585c31c96ba4c6b8ab2edeeaf938824828ab0a819c2220a114caefb74f76a2afee036085e509082d20f74e08550cb07082a4614d10414539e6044ebf5021bcc985306f24dec85104e0083225c4781eb3a0a9e700396f280b1851a410d294bab6370710f2e2f5c2d1e78f0a089588b7e7c2ae4b2a1b6497777d7a690a59134eb98741f5e07b593ce09fb875543a8590929d7bb51c6441458e7c4a6cc09f94a03f195a8c33b8836edc2831a32910a07eee973b603dcd3a07e3d112a07f21191b318c9534f6464238b1ae42c4a8382a28d28359c690f50db01fa3e708b52ebf2a41aced494d3ccdc1a1d3d3828ae4b6fc7ce3a718b058c4ed3d970871b765172f75d773b17a572c6f33af6a64737ba4d0d9c94b2fc1e48fff73edc776068e476a68f5fd78145fa9a38fa1b186fe42c2902529464b085d1125158a2053ab0c10e4e3e4d8250842b8a9082a528b024973141848c891f6e58b3c4c20f5440000323e8608a131b9114da164a8090040852c070c117ddf306b225a6902da1e49e6e942d11c40d6b92645a73ddf91a8d590dbddbdab7532d88f63ac83b6d0e71a9a96849db54c4d925e57479fc5c701123e77c9753cef7b942602e4fb4e1ef31ddaadce7facc0b7319bc1204af83bdd445777ba47ea839e837820e7abd42b97dc9b1e650c3081575596a539ba82b99f0723a115413aaa671137a95fa5a23cd9c738558958faabd42a184261b49236d4a499f4129e79c39e8b86ea9269bb28b3246eb491a514c6d760928f5df22cc61464a8fcd39256bf4e9777372e0949b9491a15ea5c2888a2402788111dd9a8042e9c6719b0f105b3899e20a15aa7842185e852733254d074d44a15b1584a0c9b8dc2873011897de2873811735e8aa697ef5c1831bb388310837b7467ccab3f351534ce421c3385ac759321e2091754312df1005e67a13b81accd5bc7a1ad8797cbde7ee03f99ee6eda2eca101e5859b382ae39ecb48982b6ba4d1aacb800f007ddad8023381f6da420196af3922a894749392adc796728b274b4f9ef8a005471e08888cbe24b5b381d70413dd5265797d2fa827213e1710fd701aa29a6e9411fd784f547aa38cc92ca932398262a31e124498b2a9f083440f5cac0c21019361e50889224a0522245ef507158e683d3241f980a82e3756e1c5108a503d2c3c2e2acb931b54ae069f1315c5e46bc20b22baa8de8d557841822953ae44618a143ea0294c383aea426eef6813ff745f08557c696ab68d3bd14b376db2ecdbcd3531c6186b842acf958cd37673a45b25020bdfed5cce550bf785eb733bcd637bba3eb78b1b6baf45d79cf6b429dd3a6a56de6eabf96ce9ab9a1cc933bd72f7b0af37edd577f30964f74b121dd7c269d5ab18aa6a38eef6fb30f31529354dd3e6b39c3ee7b33ffb9ccffeac71d1669a3230e36afecbe783d300e81264a63497961a33597cdbb4169f2729c1b89a536a9aa60551c94cf6e79e72fa953a83a8fc0eca4f82dbe5d436ca993aef3bb1d4169717d303c02b5130dc8489e175aaaba514641fcc2f31649c74b8f27ddb3eda983230e38ad380cb17445e171929cda5a5a66226cb49de185ba28e19a18955fdf4491618e0fdf6a914f8802f884ac6a39d33390db00c0defa38edb541895fd7ff49d01a2ae4c344ced12451767ba8a1e31a3a3d9dd71e6b8e1cc9dff9e848fc7ed246677eaa035bf4a71270ba8b8f39f0911be82e14a299d854ae288eb97b2e0e49d155123a84370c9494fe25ac82cf9c0f5285a4ba4b8fea9244c70fd47b082278c96b80c892faebfa456ae3f4f102d7f1a3aa7df5f880f69966c39752b934a492020ef211f2ce48a36b25f4ba2cee936ed9515b569bf7a25bf896c2f69410dfbc78ba02ba5e4275c196d6c2ca14e096a560558b28b53f22be02c0e6a1af96e43dac245050aa9642965bfdc5dda4f1767c28e638c51fbe82d4e54ffde9e6edb877cd907f751b673fbc9f4f203d2bd2907480c1c6de4f7e387dfceeac8c19f7bfa9b8abef6f2aaa84cafc0141895f64aca6f69525b2aa1ebaa2735172535445d192b57d3b4f8fde8ad066a43feed3b1fa0abf1f61254dd06555ac72acd5a2a936a52fd0b1ce0a0ca1548b8b66d6addd6dbb64d909d6cdf6ddf52b66d6adbb66ddbb66daf6d5b6f3ddbf7e81cce31fdf63c9d437f8b7793bfcd6d6e739b9bb6695bec429febd66423a51ba54ebb9ece75db6fbefd46799b74e398b30cdbb6dfb6df78db9e6e1bfda6f47de8b66ddbb66d3407d4191563a7ebcf1375e2754dfb1873620ef793a7a757de821ad2e8710b1725d564329976fa46fb9a1590954439079aee9c73d23781d1ca9dbf5d7f18ae666f7ae5ced2e1373a2c18b587a757fe2d4d2abfe42219fd4e0897b2bc6f298c837e7cfa9132c84e3cb0a548b934ea9c9e0695d2ca20c3a0c86ad8a302cd8acdb3c333883af32975053d9b20b2620f7d168a3a9c5a82936025f4a822c5a46edb3686350de541e5d027485f696967fba6a8e93b93c9b3296f24e661b228c6419f22b1b79f9a2f6719166de83b987216c750cc839f8838e8d3a8c3358836f46bf0003683e91d54f9fbf89bde4745e9338c3ec7e8b3117d3ea24f39db420313102f851e68479a0eb8867d54748c87869d9e594d75606c31701d31dcf8eeeeae63e604953f3e2a0895fb437777df40b4893f23e4d3cc52d0bade80022811628a0937fe90a8b37d84620a7bdcf83aba8f649a25c4695a9b4888ff451e12f0a2cec99a6ca442734082ef07ceb83299bc794d9ec96a57fb3022b5c09c3bc05e5901b0480e4da61009cca490dd326bdf9f0f4fa56a051f005e777dccbd5efd74631245e3e2eb8e3f70013941044a883599d26a5fc208a727b0b053bb9f046149a640762bc1089a0325b0c0a509319a03308c3c24498840054c50010a4270af3b6517631f0f4f589109a102309c38d998dc30ce188883d8c543475cd14afd3b59dc7e224724bdea8db2236e70b91b6547c03a25747126d45c4710dd283bc2496c71bb3724df913a9672a5965c2929d6832857b252aa0fe9459a49a496434e4564c919932a2f30ae1cf22215849ac595ce83fb24ea9cae7c9fd19f1a34818874885a449c2b48692d4554b6c08fd39d4ba28dbcb91dbb7a7503ea6dd4027c6503a3cb5d4e0493e802544387b9c3dc89cf36ca995e9e052c6ae84b34775d222f16c62489c823461cd38633894be44a7851fb92a833eb0e72a55c6cb82396b4a23b1a2803ce1fa719026791d3f8e426d154c2611d933c7318157fd2ac8e4da122a5ca5041b188388d7cea51a1a2599ecddf604054af81a74b6416451bf912a857f2c74ab491df3f786aa0c3a28df427a2510fae741802ba35899c4665e78fd3483963a2faf97296caee4092333993e124baf25d8a501df6975d3fb12023297f868b126ac792db4f3bc0d4ed3e9ebe648654ce1ca65957c23a110b6ac8b325af14ac16c58868ada9994a88ea633ec64bd5f6a947bd94f13387392bb652d565d86f01a9473d7f36c416cca3602c10b78066bc0fb40504e4c34d0be6637cea550e7398c354447a251de634f267801e8b39e4c7809e922f037424a7911f03f41bc418e4c38031e6085d0757e2844ec59500047a256772260337a28dfb803b6451c31b37a28ecccbf7d9ea6e21d812e915773ebaa88a361d657c5043952aea983cbabb7bd7755df775dc0399cf31e57ec79f93ed523ae6b6116d68f7831adab8fe36a24ebcd2f440e69b6cec95cf6dee971bf5b92d1dc9f61caf4d81a086a97e22ddb371b429c7f517b195b69a66993e7a7195d2e1c3b796d8de797b9f9acfed2fe48f3c8237e34d6e1acd86ded51a455ba6f64cca863557b3d4ba76d3acd8d1a3a8f1a186352c1d3d6a6e74ec9899b99cf5288e6251276946db1b7a251b08a8860d74e5cb0e9241a07f3fcb09885e3e9a05a44493ced17ec7d2955469b5e326b5924cc481429a467e0f0d5bd47e39e9569da66f76acbe5f2fe8a6c9867ce486dd3339b5c7765653663539eaf4cf97acd3c709f2348df3f87692ef2e1b48bc9e557d3f01efb5ffec8d12545510efb5f7ec6fef7327187ab7c835796048ef34795482b269f8e39110330b814212154a2b917ff62860427af48e9a55a79a6687204c89ea7e1d41b6d75e3cbaa1d6da10e722a601f3e0abc5164a881aa24c15453d86cddfb6adebbcb7a1dfb33e57034d1dc8694c03c6c130864d966ec41007a0826a88a25e51d44bc281dff436f09b6c741aea80796f7a09daccdd54a50ed1a0c0e0126b339e41e441b949d4e16f2742ef76031a0292e6f6b0102a1f5d1a98470d11077ff7e0f28726287ea58b33314653a45e4f4d63ad5757a35786dacfd5ea5febd734eed12bf9a6590d7b5cf92ec4593c1d0d3d76787a3ccf7b204d412df68a3ee773b59bcb593905e3904277fe8e6f9a34b231693625fd699a420d99683ebb2603ddd98a9dd39b15cc836ff7f70ea3e61f130dcd8a3b7af40ecf8d955595a7929a32e7734d7a45d42b29b55fbe6792d49bf1c9cdaa7949433a7dfccec1062b70e56fcfdcbf7d077d23611e7cb7dfb6ee879aaaef4dad35c7a1fff436f49fde67eb1a09e3d08aaec6df166fdc8a2eea781f673a8ac43fe536f46e9492e3de01cc832f17e57bbc444c534a199366d7fd06863b785dd775dd16bf8e3e107e4ea30e601cf2a594473ae9aa332f5d826e5533f0730f849fb352be831b7d9f2bfb6e1606c6e1fc4d1dde600c0d0d0d0d79bddaa2f2bbdb04bc5e2e977c9715fddc38695ca9f1e396149594be9892f4452b29c929358a8842bad8f24316c71cbd45a78aefddedaaa28db21920dd289bc1948b7aa183a204374a99134b644e0c3971a44609624b5c37f458b2155b12749945de481b4dd1a64590622bab7f0b926639308a52e40a4249e99863e42883115d94c7ccec1236e4ee72c282644e4041e64411644ef4e0a2a4b441c7ccccccfc7932288e6450507179885a6550142da1476644c89c2cd9d04670235169379a4db959d548607b41b762d0e4b60b6e38f343c71c23c718b99f7491849dbd8a2e9a74d143fcfc0733590e5e37da22dd2b9c0cd4289301d2dd8e6237a4b01b6532882b90c1d09d09598e78fec7c7ef2851e7f80cfc6ebbee552ad56b2a167ebe2a88f6d345490d7d85ef77211fea9c7f1bffefeeee6ee377fa93215ef0e3c7428da7f1f176b6051bee705bf815c090de15bebbf13b3e760ecebb3b03e91eea2b03867c65dc8b36fe32fc5e215fd02fcee3802e1475e86d99979e94da9c323e7457a779dacddff8187bc41e41ab569001f48d1b179e5541f8711ec78637377c79c9cde380497ad5d335e955177d4a449b3e219da4449dedf6b3fcb0007ddff7e1fce9713e257040be2c3c60cf0d0ecee7f89be7a813fadc171ee73be6e43ccec7a8c324e85b411ee7f9f38173037e4b3e2217fa96c480f4b1912852fdeff545893a35dfff6511756cbeffd38279dc7cff87d439abefffa4744e8eefff8abe26cde2f9fe4f89a8a3e3fbbfd98988a883a3c5a5e563e47172c238fa5dbeb3b959e538219d903a0652cd237d48915639622cb26c2c5f5163f92806501584ffe66f6c98639904e1018196b83144c5f99bcf5119498d32247eeeff8def36d4dfb871a3c7def8253a9c1b3770703ec7773972e0e0fc4ee700e3eda89703c772131c9095e0d3cbfb4f4e5e1e001f694e4eae0e1c609b20daf4f3dd62781dffc2d7fc8dc703f6fc0b9649d0aa15e45d00f9fe00a30c3baae0c48816cfefb40b2efc4ee37cccebb021c5615fb061b5b135364cdd1cf6c6d6d4cc1cb95ce81de6a4736e449dd36d4a29bdf99025e6e81ee77bb91004f41548503fa26f49af5a9ca8375ef396ee27260a6f5ec687df8bde8ea3c67e62a21b90ef8dd7b7e433faa074ce8defdf62b69898ad4fa10e384f5dce3ab16c0ed7bdb121cbcd8dd5e1e669f803c8f03c9f2347cfcb00aa6e2c931a7e8697e1bb038006781cf08bc5601ee6148b30311940037c0da00c7f00f0c3014fb706fbbd64003f03805f91ab8627d7f73a59e91cd6f79f90a20ecef79fb63871c13c0af0fd27299db3f3fda7a4ce21c037006c58ab3dbd3e470e168bf5f4f3c1ca91e3b7cf478efa79358aa841861aac11d50d3d5fc3d7608dd0607dc869fa7bdea7f583e786202fc3cb608dcc6083bc4f8be783a83720df1ed086925610b0fb018151ab00a7d7e986a7d70dd8fa0280f74fafd7a905f215d1a6ff82ec03c6d1efae181fe3c38f066402808cd42b9cf77ac0d80a0232121724b5f8fbc1f7c6f21538968fa24df3802a9c0f826375c001c8f77ccfffe8892d2332575a3dcf55a24d5b15cef7587aa463e8e7c1b1d4c65295f13838d6857a9572e1779aab441dd6e3f8d0c6003e4c8535a437f531950386c7f99ea87313ee086fc295003efc1e1fa6787c58af4e005e3e366b080f1e621cfd2fdf558f0530e4cb020c373f04c8cbf0f1c3c1c707f9f8ddf0e365b04654ab372273a525c3c7d68f8fdf0d3c1fc41a51e17c9037e22778b58258950bac0ff24652407862a915e479ba15186f10d048c441183d14b578e09268c9609770e13b17400100c56e176fde0530c7cb00c6d60ae41b0464292b206add388b12394dbf8e8fc1863486cfb1393f80198fc38636ee106fe6f1bd18473f8e7fc1863b5e781b1bded87c8d0d57352f001bbe0bdfc38629003c0f1b56d7b1210d800d717e07d843b79fa58048e3ef3fc33f8712f9c76089fc7558227f1c100630470f289bc6ff06f4a2cdf7621e5fc4e18fc3863b6c786363c3558d0ddf050b001bd64b635d6e6fbc8d5f7dafbf6163af56785f01b4cf02182f08c6db0258c4afff9d017940d50adff33cff0354ad6075a871832552b48cf03c0fa82744d05ac23fc8fff8ca450dfd2d4b0fec0fd570e6df868d07c178ddf5a0aac6d3221ba0aa060d4ba912d782517dc8852891f6a1e300e4833c7f38f8f89ee7ef861f1fc41ad1868082d68fe7ef069eefb1465a9062074a5a3c5705fadc196068a33f869384fc8424618cc180e17783db8f0243f90286df0d39c9d7f2bdbe97eb0bbf5792d0bbe109c96f2073b913920e7303759837fc5e3ce00fb0bba2a559956c97bbfa7d881581298a08c325450955884264ad8084294ffc1cf1a18a2d5add152d203fc0d8ead8fb01c656fc164043890b8e5a3e027176e5cb774d736ddba173c218852b5f26199157c4990688384b8889babb4f7717d2b2a9989d6cdb338c838498889588b1b6c5a338131275e6bc3b744e94fde0872bdf48e7bc70e50ddfb440e8154244953f82a0a8c32c8ff8bec7031df0de076e79dff95b930062b061a1fe5ddd6c31d75bae7fc85dff70d3e2952b57c2b8b4b3e17477374d54ca49aab76eeb492bbfa659b11581d423962a3a6666a9c5d4228a4c0b1b5cd4cc8d322da8c7a01641dc2bc9b2e04116449452ea7d590c65f1832cca2c0a182ddc288ba283981b655160208b2294811a655180b0a072a30c0b29373e78a30c8b1adc08458ad80d6b6ec482894be3461916425c7ef9e2311640a81726c0d088124386c7a08d1b653e38c145c1dc28f3c10762bc183162c48899e13d6186974aa55233542d5354de8c193366a864ae8872c512321e5f71045fe18a49c98801837a7169997152059971fdbbeb36e4c0f59cd05da0ca5ed56e4a9f11a58b578b8716285e941bb42668847b4882135468f110a382d6fc1843ca1a8955baa8568583f613880b25412d1e645869c99fd648bcd204133f2d1e6810d1923ead08841754e18496046f64d1726a8dc0bc4840458b879a64879296b435061e1ac88aa4d67cc9030b13ad69673a069ed2660a2320d192608ca245cb41bedec43e0f8496508e52263a150e461809452dd3735f84ef0254fc5ea565c4abb4bae79e6f07d29afa95098c9126f66acaa04cb9ab1b65506ac003a01b6550aa5c9b1b655090dc96983303141f781579c4a4a5db3c6680f203e38837849961f31d6e94a0caa0f870fd8bf8055d0643386808bbb8889b7011c318162395a8692e4d4a970bc99188a45d50b0b85884585c1de4ae699aec20774d5342f712f421dd52d3244777cd35d75ed3a47bf794ee447a255d6b3999db0a2e921d9b4a305e2d4e80e3de044ee09bd1c0782dc097ed04e2e73013bf1f33707602f1b78f36464bbd5e4d3b9d388102c645503861e65a205d9d74c322520e0d4921790239248784d096b4a7b9b1575a156d499b694748199b1439776bda9c1a93a843870e186e60d0a10307ddb64d506ef3658c919b5cf99352aafd26618c635a2eead59c9d33a74f3be9d594db64e758b3810da50bb990bb5c0817722122b8163045bbb929349104031b10694cc10aa63c0748486a514ba994df174ef861e3b468b38512b83375f9b9f7f769d950d2a2efd3ea18f4ef289803f73e2d0d7c0e742aa7057868716094b3cb8c0aa24e7f06a58d2d062375ad4fafc943b85643b856abd56af57abd5ef44ddc0a9de7cc22e69092d3b826b7b99a45c41ca7429c433d0097f7974ace6224174b6b0a49e9fa7792abb095257fa7562ab072ef6550bf2de42a617fe0ce5427cd582ad64feafbf792b7bb6cfd819823939a913889a3b2c45578c656b4f72ee2ca3f6c20794da00c190da2b81340d7dfadc8a06e7a26cac92e9262b1a398d4424627672c7614a3819023adabf4caa3cd94f6c0960276943e5a81caf5f72344ff2dca5123cd98410d7dd64bd72510eafd65918439abe5fd65cc5930ef2f839c355f4ee33f934317f469bd803e2d18d0884fcbe55b409f967f08882d97efd883015d1ed5b580467c5aa77f017d5afc0939fde95f5858ea832cdf029ebe6346ce3a6a24ef246f25ffaed239a730dc0ae338dd0d8c32274697bf1fa00df55b5e7e38d46fb132e634fe2cdff236b0189dbee56d387d8b95474ee32edff236b85839e434fe2d56fa5c2bf2c7659074bd9c2525ecfa7cb9f5598d1854ff1857342e59b91ef35918fe28a41aaa56d7896a9f420fdc3893baa691a4d3c10271269445a0bcf2d2a086abd56ae52303f4b6d5a148bd6e0514c661d4b7460c2a5fcacffc33a0f41097190697df288c1af66c76f93b9751cae6790a3d2063d075d169a20d8bc822b73f202c7f62b17f6261e9aeebc053fcef1b8cff6df1fb39bb39bbeeebffc0eef3c1799fe7c52fcee899bc6872f7f931ce08c63ba7c902db3599d8fb08ce77d0c4c28140e26d55aba6047d4e4c53c052e30555d25ef18ee7a1b86d73e138ee44fde5595eeaa67594e3fef3c17176a666a6be65435516ae7a737e6035794e54cf33996cd8bdf6f139ce869d955c67a389ba03e58248a23f97f257ab691ff3db46e7898b71f372d3c9f8ceb24cf97dd7814328bd016c80aade780c1ba6605036a42d37d56b962dcae53f81e17674e566c567d4395098c79194f4e77e209534a8de762463f7b4eb6e6efe57ce7aeaac68b459a102676c566c56b48f8ce6c0f858344dd6fadd4767b9b478d54e2a335dc096d3a779b2932629a594d23483ca51ba6dddfddd4890042171fda93527b156f221afebc2efa429cca3e5a56c798e659e668b0db597df0477247d317554b0c7c75e996a8ca7f63a2ab795aef605e3e829dab792a6f9d0a54dead64ada2c32fb8bfea293fa0b2567614d494a4fcee414a713cc3738a54bc6b6ad932fe553398594564e21dff49d047b7ae5aece99627bb9f1c08034ec7852fdc5862b171b7eca9bc59ef83fd0e3f78c2e9d22c63ce414d2c804522983ca492349adbbf7cb222da7e8762a2485e414d225a79046740896effde5fc0ed048ecf7a86f90764febd3b8bdf7b2735ede6443986ff9e8d910c6e6e05def5d3a3b5f7e07e8ae671bc907c47b96ef3c30e551170a05cabc784f3b4a396ffb5c5a5a687e3e1a09cb9c2cdc443d39f146e271def71ab5e167b79eef518ee3fa3b93c96432592b9787d9ed9e73a75f987b75ecd246e2e27d74ea2cd473b6e55f5eec4739ae839030d76d51a0ccb7803060059d66c759f84fa0fca850bb2e6d24947920a1df2e4a3b662306edda6c0d29754a5f4aab496a1bc9a649fe9d96f1caeef796d684e03ee78c514a19e54442b2b36467c9ce929d5157a464f622ce21ba38c3f186bb851cb5cf1cffc872a78d4de331fa335bc62db2e6f7b7d3c9714a8f313637c432285e49d8a28b3361bbd7dddddd1d638c53284f61a55e6ddbb601d160c0a861a442859538894a0e1528d24a4b346095d9398ee3821c65a4737ed8d955147ad71de8e73211c771dc0f0d7a888b1cc883fcc78ff490037990fff850e72459da7ae0df45e68761529999a9c9643255a0c80e463a4ffa77260e250546bafe747b661db8b66dbe663b06c6935ef933d846b11929aa3f043a27072f82624ee9998ed4add24b41efca4b417a19f4bb6977d37cd334679b03bff414b48610e9b46822375d846d6bd7d89903e90676583c12c6e1efd2a6ffb011d9646851431932aa94ccbde96de0de647daeb615f13bad036447c1eae8156d1bdd510d6dd870ea2c25f33ba8fde6a345c1bbc8c532d4ab96374938906a88c371441dd416fe22c2e9bf0fbd8b3a591abe6864d434461e46a3771a7f4a6b4d4debb15e758fc7e874dae8691aff6ab2616a5ace86e1dfee0a768fe2475b8177461ca673a8840dd685410911cd0800000000d3140000200c08078462c150249e89c2a83b14800c87aa42664e9b8ab328c7619041c81863902184182020024033325b01e6e643c85320020e1db535aaa8092fd9bf7097e3aa89e9d32fac44a288189be6d263895b6bf817ee3e18a4019225e13a59d23ca00f2dda3de1765dc185fe179d96d4aa3096054d889e9f6810be9383aad2edfcd42158aec518b6f8dc92cbba071308aa26926e9661b9adac80e7f83f5c89a71ff0bdd2abe8f5c7179b21a7c15b67f9ebda64ca3fa9106ac65d32aecd3b41c1f4d2c8e2b636cdc38722ff74127a04adcd02837a37c8da4c9cfbd9b7ca73dad6681922accdcf5e6d726e579ba959f5b85d1ae18f58f30935ad4dc6dafe4465bc2111ff78d9b4c98a3306a55afe7b92e90365d24a6c2aa8371bd2f85ca396f1d85bc6da67c93a4a6ad7e73b700d3e648237355dd887f12d13959f30da790bc9b06a1cab444552e36931625fd9a3956506eed35b0e0db422842ce10e9fda6515619b3d70cf1eae94e9ce6e11c804120a4f33cc82b2fdb05c3dac4c2b6aaae1093f6cd0b054a0f8efbcec6f52540fcb64122330ff1c8abfc413a623fcd9982776eb6c5c4d7f93611959354b1c382d94094ba10171301fb60063bf645f350915661408762eb5e6044f7f0ce9d39b34821c072ce6595f853a0413e9235ef61180b672d6bbcc39f29f20b2dc99eb443fc47d77beb938fdf04409c1dcd76cd385b10968aaa009cdb1deb7f7c65ee43defdf31a177615c2549a30b669104150fc8da456a2b8f25b1d2eecfcd4504e6eba8848b8d0a2297733eb0bb4e7d1aa31137f4412e0f7797b9b196c44ac38764f48329ceb4d2e0f06352d4052cc5a8e9186009f2fd924098964ddff4ae08b1bcfb6ad4bee3d7a1deb8c03830571862831b309ee64e71d9cbe140f7ab9671bb22d62455896dcf6b56cb2b96f84c86dc91a541ebbf5409ec0913873bd16d3d5c5a16e309bdb3b31cbffce33e65ed6edc1c3f1ff7c07e56287f4b21aebdb8b8703b8f78baac29d88481d08182919184badfba05909cc43470ce01f7848a30460d587c3b0f7b3392d92fdcf814aa462173555b85beeb4dc9c535dd064582b1db95f951f065620e82d359dcdc20db50255ca6cf28078edbbcb2e948ff0d7c984d190e0a46eee6ac6784fe4b680131f46201bd37f826591ec6f69526ef50601d14aedd558e08e60a5fca30362de7f9cdf11edb755f0ad04b2562717b51c5edea4a15d0a667bc94be7b5e1f01403bf61ee2fa5e4a42e22e42a126f4e20695025cb8d5854601c772058c3fc7803ea4bbb85b1d7eae6421a1f78abb617810189e66178ffcb41e9098f6215df4a1a1f426655ba18d69e5387f5225034190bce22a959a473d5ec259869435e1da6a0f790b7266bea4213f7f7de49916c622fee5f4d6bfe666d45e7c344f22d1a3467594a5a9a911c734d1e3904cfba034b26cc95384f638c5178cf08369baf521e79cefca3a135e7a0d1a4128a311939aa0575bf202c28ab06c81c77ede63147c4dc39d978d1efbc0af8361917544750aa04023567ab29eda808b872b8e99ac63ae0651a1a2c4bf3d520ad1b99db9f930e28cff6c4687f9c8f656d88ddce32a128bc081c1f6c70d9b557244d7f5258ad88add73aa0cf23721f16410dca294fd0f1b2c81d815edfb307f1f382b4dc5a0e7b051867ead78a9097ab9b12e205400eddf32b74420383499649b0132afbb3e9458a01eb3d147368fb5bc26505360548db83039d2bdf7072b52fdef99797d90a777154100a7960bdfd4371d23b185e26dc4dd18dd592ab9b88563b965b3f01c7f6430d35e16bfb57785068f1a03a5d971a580aa761d436012edf5a73698a30c2426f008b261888d84dc05cb70a1a6d1203dd6e581863791258421a41d630851992a10b5d8175367cce3392cb6dddd27f25b7ba3cfbf4c084e2142f99dbd768c69a672e60340c86f5425cb20b7f3d8e16c6d1177d02fe099ea9b27fb6fc6ab3bc09afad8666ea6537d4334d1e42fed7acfbe376af4f84fe838042263bc55e8ae64e49c57985898f56fd1546a25475fd7eca3976ceb2eea8965662a092a5ad436c11e773bd51610653dc0ec984d62ac584356dd89d9aea253e6415d74d6cb4fc52eb3a5465106a13ad9fab45d8c2df89047386e4f893662c675c07e4faeae771ee609689b34041699f64167c360b231fe0abe5bb9ea7995d778ab678652dbe6a847ed9dd1ac0f858511c6780d606c75e69caccd7c48db245b9390fee3700024c1960f07881a5a512bc111df9a93f62378bdd12fe5fb34905c9c2f90773437500a3f4befb441eb04b47c00fca7fd6b4cb64cf43e457660b406395a7d49287ffa180321eed62130b16b64f18cdc0d9025da847e99f2d975cb4a9b8294410d98023be7b4db707d5691c676ab14827ea0c8a17aee9e62d749139f5ffbe2eb31ac90e7a0c7111e8744660f5598fcb7966a05b98875d1295b4adfac23200e36550ae298515481b15dafd9a287f51ac73d581d83dab5481a1f3bade553ca65999658ff768a92bf8549cdf62612375a66143a5e277cdf9ecd8a56da2f5ecafdcebe56aa36cf997c95531de5d53aa44a57f28339f230838248554c2a196c22e47c38f690aa74099a9c9e2199eaea0704549a2226adbb627f7f39853e5aae82709004037d2a18989505831d7219bb6f30100a163a1da86bedea2f5b18322dc885413b9b2c653d84d8f86e09ec025080c07f46c5c0cad19ccc32e5853d8c380ac10ca23f7849b20c51a40b6cd1198f94d20aa9003ad3ba7a181799686c7d1089f773ed4314c2e4d04b0b02c9e2ecd1f7697b4ef8a15dddcd689114ddc1c312e90911cf7d19c61fcea29d7bd6ab8710bbfb11620fc710d86f30ad0f929fed8d9e6938f66ba473bd230227381d46434a5373a9b36b71929c4f578f978dc907d5f22468f0827d3ad785d75075a3d409c7f96cfc840d62ee3f96155265022bd29c1fe3ecdb428933740b130df7be9c051ac883ffd32f95d6234e89144769cdcafdd547a656c141cab7d4e001dff0658e10c60edb0668659af20f8d4ed6828ee7dc04b75c0106af1a7ac5c9949722e9035ceeba1b46a34fd326153e4440142af910fb36d8d7af83b126cbbc3d7dfe990ebfad4ffd9d5dd4e4f15ea67a64cbd3c294ebf0b49e92902096a12ce44b12b5feec8935218015dadf8688ac3e101cd35247f7271e8921702e596151006111b465e01b7bb6aafb3fc9bbff22564835c0748c606e1951a567805a81e847863d61abe434a583d7ee9834c72da858d6dd85a8dcf87844118c0914d35b08c5375d5aa9000da6ceb3150bca222bafab93054a3b774edd95903d7ae7cf592834e85d339893cc7b06de4b41768296e1422d7916a8193133d52d5871b2802bc8bafc5e928f9e00ff70a218388706cf36923b729336491a51d5469246fa32ca4e0b859c413726dab624314b63c809df8a376957fc1d6edfbf2392343d1f31a4a31f7ddfd7eda2869cbbe984e2d6222a176d7b85fab9ea634653c2e227027016085c6bf6c1cf276ce42743d76f4cf4c734f85735005483b9fba7c0074aca6ac05594a1b30bc48d3a30aa29b003518bd39de7aef2034c4ff13b9b7432bc01d2d57b2227e509732bf64222b98be99a20efcf20fcf553129d59fd53087dc42c7fe26a3d4bfae89a2954d23489b05be0666c41a2762b9bbf72259da3fec507d7a218c54dda8ea1671ad8f11373cdcf6f8d3fab0f494ae429d2f8572ca1e3c998539fab333921cd42ab00d377690ddac63602bdac62bc5ef9822d6b05712c78a3e8daf0ad117846b3fe4dabcf1a1763c9aa624418fbf0689655a555aeb400c6ab931ba570186049d17303f1e1c893b77b6bdc1fec1636b8f819064ce1b02af9ad25aebadefab29f6573e9a2367bab3e15d60b3b60607f9fc982ef209888afc029440e897ac79ffad1ff7e38f1228e9ecc84aa3b698472506e3d877f183cb64ca8f0a39ed4f51b1fc7ade89641417cdfe05033ac275cceef5bacbc834fa3a87e89c289361bcc238471fed6aedb44e6c40758e8813eef7f7e0dd64cfd80f69460636a3bd6c76c12e79c0c13072f832dff1aae681bdc962009de7892c52951f9108bc5d17657f6c0d984f692ff636f08390ac6ee173e3e0a3851e8a24f08760b2ffc07cfcb20ff36023915e9744c301e16fbee64411bd5259c8d24131aec55d31f916d649e9aa7eb4147d2405d9bf638531f7295c7bc82fa2db3e396cc766c102d2993210840e2a91480556426193f85da85c768e2a16fbb4543848a0ff51d5bd7fdf3f442095e1eb27a26518aed5f79dc8aa73bd1fab1856319c4a57f8d541f21467f1901c3fe8e21bdfdb6718e27d83d73c991ad3a92202e3719c5aa5bf38781820f967a4a68f8a356f21c0d73ff662998e463be586973bcfcc12a1141ddbd3369f621fb28f17785937f35299539b695663e15f0972e8e4d1e46e1565b94fceedde667eff35ede5ed1985884d95f44a6d7112d3a840ed8e7c18b88e0090724d206928e52037fc16bb1366b8a40e5dc5ee8112cdcb669b4222d75f6dc388c7ab0a80dff1c6cdc6c2a4b2837eb421778819ef8066c2afa62c4d763af2636b69474db7f179a20484892333ab427d605f04b517492ace8307b354ea6faf4d3338fef14cfbb01fdc89b67063712175a7f7c6c9910a7bc6d6b0b15a8158b620268f42f68a6e0a84039df50c54ddd452670cdddf80ad6020cc15c3d6447cdaf603be52b7c015880b5ca9ce1f2a1a1206840a04a4889b3217c63f31ee576ccf019384b9d82ab7bdd592e6d8c9a93a0d45035b840ce8121ce74801352452a750aa168143d0a716c963bd390dee1bda0022116f3aecde00e0f8cdd8748e00aea5cd52cc0a30e7e2040bfeae7e6018aa82ef8c0ee085e2132fae2d8769a975d1aa41f2588369522f86e628ad195fa0fb6780620c2e3166153c9cd314facffd07077c705c0ad265d88f50b9002556cba015a31847ba78890713ca58f4b58b3894880921600533177782dede3adbbc1876b69c03bee7afed0c3c4e948247f7cf5bd1923b675d9a664db19b779467ecdb2d3004e33c7596b440500f6ea856ede4822f613ea7ea7bc01661dbd520399a030c7d5d34cb987b2df1436e8e4a05ec64e4ce46c75792573e6a02f6dc8c83b10b39089add49ac0c3f564196c080742568c430e11c457d7b282a02cd2d533546a32f29d8841f84cca045aa4929e992da9c04d4d627ec774d271ee5c43126d849179d2a19f16da905d9765a116326d6436f5a62494b63aeac60fc81b5de3b5ee13bc24215edb08124b0a71c6775f01b584dd93979759896ae800056a54e35052e9b9ace7106bb41f69419979211a8d24c28833ff12cee85a7fbe241fcdacd26b767abfcf2be2d53e8c8ae542c728a9cb48ea51bfa97e558fffc33d9c0183220145bbcb08f011a143491706577a1fba41bd41aa78f831717b8a029a531a2615bf68b5017e5cf33a4ec3f08a419e2cfac5ad35a9a989fb1c136fd4900d3ab0306d9959cb5639db68a847ca42505a37d5f9b07e0bd2f5a968d5973f1cf06ed6c7f55d0b9a3e4d101badfb1b01328f7d9b5e96d91c47af7318c8653149b03766a44ba798635b782ab7bba0780055b537e07aaf0d40dff931e91e5a95411ff6e98c5340fbd0dc13487647f62e1967117e179e183fc0cee9d46b5f0f5002389a238708e035266521ce99ec2d950319353c4f67d0f1332b699235e0c9dd87f4e8d0677af8645f95594effd978799999063e3c73ce022d799d98070e416587369f8d0e17f2f217d3e5328d09fceb18eed2b8f2389701ab8d86c5a885123afdb00c79576a6884e25673487d8e192809b3febe3677b46eb23af365f3d90f88fd978d903024c6a36d1f381386ceaa975d4cd49fae4e609cc6ab39ee6b0f6d201dc8da8bb20a985804fdc3d88440216829a082bcfe502cf187c31af756440533e863dd290918b95199b07cf0c343f8b249ea8ae098dbbd296226dc93b64f267c575db50a03d1b7436593e396db7b725b76c317e859060f9e7bdfc85fc1cb606db9683a48474567318e2a393683a08da4e05f9d94310e882de187f276ea0e822a20fb7807b794f4a5e8e0daae761c074d526619a69186cebda1f53febe79f3d220b2b0759df9b62f2bda0dfb132241a33a0c0f409df3327055feab4f663878bd85ce36d6454f197f905dbc68e5ee40dfdbb9413a8e266f8e6a62f8c103f00ecb14d3f7e138b40becee625a8611cdea0fec5db2e31405ddac1b9787f44573094224343685870aecb27a8df8883a92772717164e0fcb74917b1a0cba356936f5001062fd1914a9c03f4827d456a4e17d59d7f58ae910aa53f387cf487227da31cec79935de2d75f1146503a127bfb5c689e113ae565f214249692e9c69a9097c99f3585d7b800563eac68cfe7ff5300ccf83335097f211174b4b53ae9c1004060a4f25538a31aaf4d83abe28ecb9aeb06cfcc7717bc80a20ea1e677ef2658a7f69f10d45a22e6ba00c647f1d03df610e4998ead69e24d262483da71a00940f60a332b846ec806fcc249a547582bf471c69f424cd0be71577868cd6054a929c18d9688875c490970e108d6372daec4d925b041c04624804ea82f6eb0fe5bca0100a15f322885997cd08991f92b416d0bd1e6be30956abaae5300a3f638012ba9c655aa7527d0dbb28d065a1e7d5eb7df599e59ec8c6a97a12e4bd87a897ee8f5a4fad38aa5a8618d50aaa13a83b19a3b8048008e987bd0bb93c09316c1ad0fd2af65ffbecda3ed10b0e1e3da1684163e521fb7be30f5e603196524494e9ae82386fd094b49d0c8c0a1530a865869d00c65573df63b5488f29fd0c268303d181e4c985a99270e95a72058820dd4d1c4088b6f1aef2ca8616659899767ee524c2185d0535f3136eae82088b6f9f76f7372cf67daa92c1cd83bb66450c9fe20f7ac567d98d35ceb3f39159ddf8c9e3fd1f377f09f40a721c874bdb1fb6d934a8954f134d7f8e08b62730899caf1f14f7f9cf9cf99fee05db4c233076ea73fb166c5c91911bbe8c95462be75eacb06bb27edc395e5cba6927df99161a4a83624a3fc708e04b561719b6729335b755182676f7557723cfd70469c683ed441c97d38cfe600e4013e17649fd58aa6f4d196e071e03cf61118994d2c762b143b0b589eaaf4834ac37e1e25733a62e8e04084326be6b7718639f5b2393d804745596fc55337850ddbc280247a8d333b965520aa60d3e7f830b080d7f7fa0525d14008137b8e1ea43c6d7a24e886e3073f7314591a53b58226145e9e83a6e712d6841bd9b4f64d0d715e0702696f0042ae45bd47deb3279c138d5f309ca56b419617a710ec6c667850514ba3c16365048772d3e794ed1d576cc167c5893e03680d6e3dcf1aea8feef05bb362db377163ff9b349c8dc87c3879d84986da2f461431965630df7eb38621f0c9caad458f543aa654d9295cd15af49a85f8a243966da7dfd6861e71c75aa40295caf73c5c1f6c1e8e653ba984f7ecdf3b6b90e7c5714570f35110b24ad4417d70d7c1fcca180eddce94920107099c29005537e018c3fd6bac150905de324edc9b17e04ae76513dab65ae70c7144df0471c5fda0d348ca5d1b4cc6c9c1b7e41943eb63a77f957ed13bbcfd3d0c4b2fa20cb0a492c6808c9491e7493c48e217cd5d16b273191b020d130b2713eefc5831ae4b591bb610e950fca305396483bcf57e0ebd9e626ef748590c54fc788d733707f9e65d925f1370a28dde8b4b4133b855432168ea6d391341920033133e1724f0a1448ef129059e66cecf583dca028651325cb8657580eac9a9a18461edfda2bf0ded8d52539069b6acb917fd49c8754cff450707b99531b08596fa5bd599082ec4b575d2cfabda0da3a25a2335a72e6efacc7e63ec2c152082f5938e4c865c8a683a4f807b9041680f3593bb614b2620d87b8740898eb1122155aa44e73d5b2f3bfa7f482fd0b463d6c3f2de85a3e2c2348d9d73261e516c2847d45d4ecb5af76cf305d588634de4c641f9f0ab4cae4541c83726e2157343b2f0e75302d0690e898574b1f16ecc092a9b45fd7bc08a6a4b7e1fccc9537dc8d55fed89fe71d3aeb70bda545d0563142c552f35fa9636a1e2fdf8aba08ca1696801a24a237a64603c327480cace2d75d2a5fbc566c47ee8da0c332971bc0a0da5cb886bf2e57ecedb502a15a4a5d39ff51f3518b62376ca370dfd1eb16337b50ad222afc4d52a73c6d93f7e3a68e201591a76171d6060a0dfb5fd085f5774ca91ca0ac79929515eb131162d8afb4f35331a75d53c9e0d99f397ccfc166f99f38228e083c2be05c414a4d0add530fc61c2abed12c80d33118ecb7b1ade6ee59be52a7c92d2d4f605bc3d032b1394059a207b5de1d16cd982ca5dc0ea1fa92f4ea02b45591476bf77232bf1f989ed020b1d8929369983203bd61163f2fe47f98a1b0cf9fc914eb23ee21d449191811dd31cea1dbb9f19412361228f7da7833a63c1ed798970e7a45f6e0751c8d179d7feae37e58567bf5fff38af937654f3fa498fc2b4a72128de0367093b628ccfb7366d92122f95d224a41079d322e9bcdc70ab58a720e3a023a2f0cef93b796ec9a5e9bd0c5c6f406f123ed072da87d306b5b674d46a9f33b8451188f9e3431306c1c522ac65da9ba6e4de33f129b0b91882bccff5d4579035cefdd91a375edebdf90e906f2a7e33f83c797c1dc4f6b9544f5f0176f65a104fadde36dac0878a9d995cc0e7fd7582732eb7085c3408e5551f0c67cee6737e2e858ea63ae3533c79ed95c39d82a58e38be788aaf79f0999acdbddb00f0d1769b77f07ac532182feffcd893f1029bad47cd25d1a8e139f7a3c4e437e69275be4b18fb7e928339b91f98cdeb9a0dad162108a29620fc876404f6193df507782b33f467deb56cafb6fcb74f8582cb46d134a001eec4345ac04eb60e1037bb409b957756d0a253ba24ecbc91c3f20c3b1b9556cc05885c4de7ea96346edf6fa026e66786b6d4f3826297b55b8f0b174bf9725e13e60bbf22e742cae595fc495661365b8f18b08931e653b2f93c5f5ec038a0550ed1031f9e7316daf8ef9414c230b939b0b89023f44b00613de2fadd04d6c9d0d9e7909373920693b2298c3150621f8c51327bef07fbc9cfe5fb1ee10ec3fb6f915620c1a7c2642e5e26e0df4b3849022e06237a7d68a2c802a6261eada63893c83ad615597d36351d3dd0c475fc700ed43aae31c9d53fa8daed786410a16fa0468f6c31c9b0c029d8835e7dce2bf9a3be906ae2d734f710018373baffa43326399cb84841e3f07e3ddab13d56b3bf4db6ca40a736a6070f6194250542faf9fe55b31370eaa2997af76c00c8c0c4bb21f18eb99a170277970f737ee55bd1fc05f4b899f0d08b1f50fbc616e98f1b19640502e5fc96d1d1775b197bba08b3e382183c702162e3e2457a0b9b9ce400769da4ecd902627278444d33a66dbedc5bcf8aef7644a7febf231be96d0ce3539aa8b2f878492cef45651156f8b8c88857fdb94dc10f28f7a59e8b665cb462d82d28b0e2e8b8c35ae1009e1c1ddafebbc2acd3d5d591885486fa6dcfe667481bfef501d4169fe878ee29868f87f90f1a6fbfe112774429a6c621b9088039abf9daee850e651e993cf815371d866e2031b77ecd5c634549971ff91f73d0ef36c100802837748e1872000119170c00263e049bc12557c9fe1229d579967b8d9bc2e3eecce706b15d06c7741e1cbba2390b331f9b8d0691643e8b52639e04bacaa9aca21ffa9a9b35a0e64a82ea3d371f02c835f6c71826bca88af055f22f7e83e0e0cbf696d7fbb1e73bcc40e87ab8ffb8b6dba420dc6f06f29461fa11124608a13db46cca00e4384910c25194d65f560923292f1483120a4c3a2c94b2ae49973a91b21085ffef12ab46c9df2dec1c9a8bcb01d93710b6917becb59575ee463c5a975e755c32ef3ad90106b9399816cc3d72eb822a8fa69b9adf14faf52ba74bac3782f6e408ebbdc883e015584f435d17d61ec7ddf868045552be18b1bcc43d3a0b4b5f71050159b3db1e19eb2a8fcbe14c8ed0e9e55816ab28c4142b81762709fe7613c1b747332fa96b52736a371feafe87b087e44815529719bf8d512fbc662f70d088c0b1292868043376f9dcece0a8b1a6b3a6012239ad3e42d19ac56caea1a5a6acffc96c1a0ca79e285e3de3c13299d9cbbb3b8a51c89552c811d99a3a82975b16be3bda1d47e6bbe3d3b5b2e8f5bb82f313a22a799a48bcf11aa2c1fe90f9fddbf976a521a4ba5b47ce99c0c7a65576da2dc460e5f857359c52e58325290ad7f2792e468d3d324e196979938c00a1863424b4ffc0090b08b35e287540e7923fd6f738b48710d9f0d4cbc562e6c9c8301699dd43b341559d00bd13cdefe509febfb598908a5afe9a3afffb594db2ac401ce588f570d36f2e62693fe3894dc29038d0fd445ff3c1ef092ddbc588704c1dcfb122e71247c975a96b09bf6cdfb62aee20967c1116cb8ca97525f8dd966dde66f45e741dd701e019cd254626359dbc4437049386a9610ad9bcd48af991173900ae0b5649d0480c15cfffeecc1240566c9915f235b6625041a14164bcdfe72bd828d0d752918e8dabf9880006fafe75f5ffd84b315836229d3deffe310a49115c009542c5be825b6af6313b83eb623639017424450789fbcbf1c323a688aeaf21e98e10a9ea9dc4835f109b76c9066506e4ed532e0880fdb82812fcf46124f704bab959b668c8a8d3666faf2245a18b1042da145c32cee12c4ee75e6d19cbe72557c2f7ca80583245323394df7ca39a92562230329040d004b05c33a3e5dded4172656af85d460be7c1507ea3439a4be15a2bd814b2bc5e05fa0fff140a3d614ffd3ae44a00a7260666a97683357172a53b312ff7325a1bfc84acac52cb9ce7b8f29862b451ccd36671be3ea8e15d718a637a42c0fb11efd7c70732c207a5944445fc28bdda669b0a38e564ac148081b8634247d2f98a61e9841f7356d323dbb62505cd863bbc3b35cdb1fe62ce72826a9af45b0cdf7ab964d62626b4a9ba5fe186f9b2fe7b9b6c95b97f9490429bc9542014807598e0d0d41aa99e6b792bfc483b577c422e0bccffe5601841f1f5b328f5ab44a057a66a9c354ba9d9f53390d75ce7fa01b9050661e38a9e08c9965aee5ab713aa6eb17b16e8036bdcf509c6144883ce9898e8bcc9124a81c0487f077a9abf78494dccfa1086da2d5857be36d826c9a0d8eb69f99c41effbb6007b80502d31068597d678042ef532ab304b9c05acc603cd11c6de7d8db883df2e2c34be179418aa5eb14f041814a02959832a0c60c1db6248719dec66cc17dadbbae2bd2e6351bfdbbe9edbebbf8cfcf9f9169e0b0b95e1970d3f115c940b40493064c970ea40da203c46dbdc4ed26b0d3e8b5fbe923cedd5af323190dc91e9bcd519e880a995dc421b57132f11f577b280a87a9afc21a6dd174756dbcb00d0511f772944648b32655f91260af1e082793203dc8fc131403588b8a46c3aa1faeace7d993243e77cd1b719d1643fdfc9d9128f9fc452cbf678dac9190518b471d366a3bff1199088a656cb2059f94f00f8e5d676c3d8f6011275b0784f048af65f805677a2c8f2354b5cc3910cd1a9ffd65358955ab58e0df3e3d754aa38d546c625875d2b821de90d8f7d5120861be5ebe1298b69e2d3b108d9ec2e04b7f395d0696f5e7d2374db943006b59a98bcef821267005426692c59a000fa54b4e481f8534ca606cc3f76d0eb072b7631d057509e251b7387a3d719e4e37d8c8c04e55e3c6b40969734bd2bcea8add4718175693952d73c08e18566071c15782564ac6c1408495e598f50433fbcdec09c4267c560d6bc5a32bb5e2173086adb84020201b511f1f617786be7236d24e43d04c23206799cfab924c6a2b5894998301e5f9797ada89a9da0aae2e6ce9a87d9542de3b09e318d4f123b5d30a25639c9eabd93c2050552775d36ca0510462a0fdff1014fdce8031a2fa25263d35b270913353acacc0b328226145c0c71e2752e47bbf592419adb423a744ce4d61c6c832ff8b85163c8bc59b7a0783b862ce554c6806c207bad6e549dda4a652e3f21f1104f8b519977e5c41b2ee80771a01193e5e70f42229eacfbf37c1366abb6eccad5fccd6ee0c60ea6abbd735a56f04e9f248f61713d34cd0ec85a256177026b89c56b238b164dee72ae0cdb59263a03d341ff2acc32eb840cfe876ca7748feb74597cb4bcce0631894aaf5ce974f6b2eec70aa8333782324177129d24f81bec1bfa5e8411a6b474112c586b2512b689fc69911064fa4b6e306dbfc0064ab492741c3ff3a0a6c7120c6e50cd153b4475ce9e21082b6f14f98a9e72c21401e933c84d84d1c5fed07a511d247e56dfcd0121823e2ee03ecd6b11a0b094c2110d22d95a563a66667dda4bcf129a27ece11fdff6a93fcffd952b611e5a873f88176ca65383317cf9c13df3249775e6ed561c5a5be3441c9889349a9f7651e231d7c7401aa675ebf891d678230b7538c2a52e32750348ad75f4acab916bbb036406df03c0845b10fedb3432c376d3fc61a7c90adbd530b9725f861dc0571b9a92ecb2c74ee4a0e0b12c6d10ee63d393f23a7b6f264580518a244a4bb0c2de7b890dbb366ea2d3fffe5038734be24350429a9292bdaf03208c464626363d2fbd5708f8a5f2f576b6b89e2e7ddcb8bfd9d97b5d0b0450d176ece273d3b378e2b0f4e40faee57ba959099ee1d23308553e1b67bf8f48499077f2bce5d4e1903d9b11171882af0a0b06841de498858e9c0a0cc651d42644c8ae294893348bea65400bbd12fb6e0eb3bf4f58858d1f0490e1dfc78525c5efb258b92e5ac11999eaac458c454b89be07e5305b0688b8376545622fe98e3a4a4c2d80d4c88ed2bafb69ce8d5caa7bc5776f6da3c922e1923b58ec03a0cbabc64d9d197e537e2a60d9ef5a6333b70c8f70473df2b9258b4a5904ab40e09042a157a02f63a13beae56477b079363a4e314c2e71a5efdaf5c2f8f03d42314d8e607855bdeac7a2c65699423a0cb2632b36d2e1dccd7cee268b5f51a3e91af56d1c0de6df8e60d3afd3f931cd9405e9ff53487bb47523d3a73eb9d1216c16aad39d5438998be64bd6313bd3448600fc3e3b2dacebfe690e28ae0909abda33ab81af1ab67b8a828fb5e07fb2990e96b9d9237cdae2895574041a15d75a5fe1816ad4b07f27ff81d6b8653e64c6e7064edd463ad6c828b905327a7f5cf6aec88c3b6edf10071e2f52946ac20e8852927e5cfc988d5267eef77dd584702949ab07fb060d205d6f10bc7831d3e203ea040f1909032dfda90493a984192e4d8be5fd774cf72ef22ccdebd21308118888fdf0eca1592d1d2b32686ec8840fcaded5fd87bfeedfb1c8848e66b5cf1ac23614a44c43ac9fac59b7c7b80d42ea971de21edece44f3f6c2e16dcc88c39c0d1050d3f7744252ff3e325a014e87d5b188db5ff0fbc7bc39726e2effab0d4ab2a4ef20abf26971e94a482d1e661557e048a07eff1a2fef68d2d3d967b3efc00d1347b52f35124c3e601c290d1fd06fa0b6650ff5624b411a0349f7df16ffdff2fed88cf8ce336dae20a1944a28a988911a934348bbc370c867320cf6ba64889057adae2f90bdd518a3499f3c003f61ab9626726e57729ee3f51fc7dd31b5e24071e94fd7c606d1fc006b0a065c87129ee939820c33589a10a91d8d25af0a6ad35efcadb826adfa6f151dc80e48a9a21a5b5cdd20584f03386bd1974791dcf6c8bf4997b7f0eb4f817080f3a7587954e8bdec86b5104b84838ef780df2cdeb298ed59cd6a114adf3ffaa2e9f783249dca237f3b785bab3a85709baa1bf00b4105d9a58e0357be2fa1d06638a1044ccbb43f1f0881fb10d577c1c462569e9968715b4b081ab347431caba27167ad9c06bad4f2dca1cb7c296be9558bb925b661cdfcc73f20be01499e1f9619e2b3b5aea10d3824ce6c8d3e8f22f0c846044dc20569f1dc1a94464390ed0e5b4ad6fbbca43cf76b963e398ae548221e5971a5566bcc095bfe1d34271f95a62bcf8205e2b6e1e51acacdaaa67502dd4d0932dd392807baaab8944b754cdd7d9d7984f23a08bed362b2aceac94330f6c60d09eb4c6d0aaed563ae933cee3c30a5fd5f9679a86b95295ce056bb7c41610b2ebb3039b7ecfd3d31c335e1e53f1169c88d98fbc9ed663a9b5f02ef4709f5d1d15b444fd0c74a81cc5ccd2e74242594473a7130501d3a66928893f0324d6fdc0073370281eece1d066d71ffda1eb0dfd8d91ffc91ce575dc3264c7a70ee9550dec951df7184336f041711cfdb32ebbb38a093b85b2dc362b8e1bd2780f9ce2fa32c3f96e961917a95a748535b6d9d616cf6f68cdf8043554ba467b64b263941304287e9e423eff053ce2c422a28e0b2d6464eb75e41f84a7992810434f9c835adc043069939bde5a3cd691aa37ba7fafe9b8b08650194ebc4080e1ba0f9ceff1fe5a04299596428c816216ad100815b43ab8f3ed1f176030989376e3d98d86314ab38a99792fcc1ba530d930d97a0a4f2936e279a55e05036038169063c8b15f0e47b99a3622412307e1fcb57fe1d2a0cc0879fb63fda3c30ea1f748e05c88c7ddca0032f8e55c9a4f1ced85ba56685fae83c22b26b198211631c68bc1cc170ec35637ace884b10992cba07c3c305f0266d7f5985dd183c21e080dc34010ff9d2a34becf51708f898bdb6821fe22849502d0fd3a04deaf3b324b2f5f4a311466a4423c20d133e181a717157525a59e3ae9d5b53a4cf281959d4d31882734eb9720446f84eff9332da049a950464e78420ad6681491ffc3e5d6c05242e6038440948da68035b4e7a3bad8d8044678186180c46a3f333f76e6cdb602815666c39ccb92b6ed90e5e4b7bf389ff11b937119d0231606410b3df64b43286d8361adde54829f945bc4de3dfe575734f7c849089b8c880274b6d7bff17bd27db9e661a280a53c25b6445c28a06255a033d18cbff3d17ab98bb720c7d98f51508f985733271c4cb525eda26d8cfe1fded8b082cf4c9e1e3efbfcc46a1734ecbf241d01352548cf84eb7109918e7f137ac2be6ed896f31616f80b27a5ff4a553fd49f90600b069557d17d8987dbeb48dfffd7e372dd05d81393fc02f467353c3040e003200c81aba679470638a96f9e94051c285735048bdddeaa8ba0bdc62bd1ebff514f641e50502daf08277155de23be030fd015e897cff83fbc122135f148f04b1c744eef031aa3cba4bc10449c080ddb1d0f9f9efd0c4199ca8e8ba26a09bed765f592b12e51023f2719d7e6f997f51e141ae6ba11f351171b3f4dba7046ac7fb99116f7a0b8d7a18f1258903a5e86f527adbf5b2b692e6198a6436b1c1af6a97348b2740e2b869bc64d45f254806dc418ee62acd93f5e17421beecbe09f20aa1896f9a717543cd81695cc4bb26522aa765fd2c68bb0953ca037a3185ae77f7dbea7bb906c1b64f02552f263fd7b0a737e655a8537d13596c7b874f6ffe91d8d2fc8274ab7ff380f3220f4a831280a09abc50e654e1a1aa985afd46c023e2089a98195a7bb607b358ae8f808cd32f28e95e92a43192f4aa8c861796bf31bfdf4023a1f71da23c352bac68ff80d52a66233c0bbd130534e812b336db3300c78111ff80d7716e6234e0efaf90839a93ec516cc3d00bd2eb9b495405be9c8d582c8ba35320109a9e263fad19da1fa9abd7674de1020cc0071b364807fed5541f1a21fd9dd2de110dbc06fb664607db0871485b1415935c2a66bb163392e3c2de8838c12a5a15c095c5b5fd9004b0dede14d0ee3759b449b37700994449465ba06b72f8a4fa8634e8a31612673bb41d70206dadc5f2ee0c53f030039ce685172a8a22523b0a6680eb68821b24aa1761a48a1db7d5714ccc9a7baee1e75fc648e51faead30d21919b1b29d576dbd030025b5f310bb03bc3dad4557e36e09476b194dfc3ba195ad93cb52c8a0ddb48c0c7b1096ad0265f3f245337b4a0852c9912b424ac8049b91e9fc2db76c5273b92c40489ff8929868846a882b6e0db3c68dcdb2d5c4dfcaae832a87fd3af62299e306c0c59702e8aff2d3708d1da0f8f1d2ef6030636bd374806ad7716c397d7cafa876125541008eac0de2f883ff33be157e9d7975d5cddf08bd926cede29edc09ef58b395cc4727a62f511ce03dc96b2f69c8015a5058b504f18f4bf2f2d6b86f60f7b512a26846ceb7e88c08ec737d6a22bcdb396bf5bc3bb63e40b63e995334a648f1c28178efce617db9584af1934776dee45f201c4251110b90fea55a1eefb8be208de0849ab6bef63db7d3b19f5220e25acbc454f6df99296e44e1daaf34d752f7b285113ad9a1f1baa349e44614f4fd329def16d2ee468d25fb742f87e6f2af6e9bed014f351aafe82eb5d92042da6fec12386009dd64bf362f612a92e9e137036e5bbc0b5d2487e72df6ea540a4a9c78e63e20cc7d2931f391e006f87efd3b4e7939e01e78c11fbd44728bc5ed456ff33a48fa83e3f07a6c906cfb75d0a63a28b71d61a2f863b6d42c754278f49687a9aa02ac0eca1a838273b0a0164181636fb25018405e1bddd0c998df4e5c0bde960fbfff4bd963110a18ed76623d2fe03b0fadf3e3d032606a7c78b285bb4d7e6a0609830016b824af6496e08a0753f1b70ed888f4cdacee2e9a5e1dc0f0e7997ec9ce76716eda6c2388e0df76cbe1dd4007c13751af8db1529f24ccf8fafb5c7360dc0c457174b404129e38ad3515574da50ada6f3c301a813de4dafea2713ef7bba85420912e3d3c66e7d06ab9dcb7ae9d937fb73c26348ef451294724db722e2518addb2af6a28cf3227375efeab0c48398b9dd15f281ba778bb41d44241d0ed49d5f2a2505b04c55bfd17d6d7d8d99cfcc51e6405d1be9df1225699a1bf1bcc5cefe5a1c0cd2c822599ff65cd7250d69049374ec0a45169f47d2222ec97b894e682985387c7c328031e80deeb830b23665b7c5ffdc344c92d6466074285bb1806248ca7f9121cc426cab2de5cb7e7eef21ac186b7313534bef3a4c0c48222acc654da1c5cda510ccf3622e460b81172774acf83aeba72516daae134dbded8715a789b4cab4a0d3e02a1b08dbcff5a038134156583d25f4bc13309e184036bfb60ea863559060bcf3bb2e8cd8cd9e981139d9609423b81249216fcd181876b35118935380e7d08bcf18e89744d5f9e2f59875ce63f6aacfe9bd98d94accee6dcd3e5a376c02072fe4cea765ec4043e012addc7e62ea09c1c72e999bfd94aeffdd90a78f18acc2feb2c260821ec4f0b178104fadf399110a6e0f24d2fee95faf0b0830720ec65bbb649fbef40b25c880a50bc3104eb81fa19fa75401e8815f327c19a6febdc01d8b4592029f196b61f691e5806b46fe24d5c973df63ae3f8f6302010ff7b1d680a6479039669bb4020f9ac0725f2a319f538916a84b47ff7340e3fcd4fa7058e8290a635de705d9e352529d53e53c5c1191a2401d04088241bb2ce9a07da9e70b397c22759f62414cf92cf5856246d12902913a1a2218271503755264aaea370dcf62d2f432bee1714ad54cf732212e390c83ff326e1fca4bc9569329c4c06f025b5b3aec2c7f2aa1cf842c116c2a4c13419d2e9ece9d2f19a1c4b5ed30999e07f3eeface1f273ac77fc55552c168adfa95bdbac0c12772efb6c2f342c3c925e2679619af0cd3b77b5454097ac0e1265e3cbd376ec9b5102191349c08f775fa45abc5e709dc7b203b50fa2ca04ec0127d75520de672168c7ea47fcc2652fac37913146482f7468f4196c1e2abbd5e22031e15978e49457971ced9739d3dfb1d95639fa6011110ab8f6810898ead3ff758d2f23634ce3c18eccea92c4e6cc0cf0c25dd1d97284edccca29a3bd9c79af64f07d57487c0478f4ddd908699060cc8a3a303a38638840e4d97692d0fb56f110d98866e010793a3c8a500b7d17689c4f9487c1add5032367be6d48e5c66b89439ec61afd642c73b42d3f518e1d55320dd508b53d2c2991cb546fc1d447875d462992b99c6c7713ff366f60f2be7ee972fc5423cd7fe88b81e098184fc546256b7cbecbd1a89718ac8fb8abdc57a0d45193859fcbd410ee878b469d3e9e06f2a7a6bd19d42f756e8fbbb21dc9b06e4a583abe65b9ca4ec3cd08937cba8c6870c55c7e6ac279c102e359c270e30aa80f138d319e33dabcd59ce33782bce036cf8e004f915746fd03b8ef374b69e0a61343b04ff37618f5bd473cff7f976cb7bc7cd33418738b14ac9de490037bd1caba155449a267f0d951cf7e0635e4bad92c863b48656a42ed8a116b28cb51209df0e8b210e5424caa2a9b44e2ffeae3d578fb69e0b44817d2c451fce0a27f01820cb20f8b5ece82e28218421205081f7320100a72e62dd5469f50f5dd166005da8a2471b82352c6740129e4b20837b84d517dbfabd972ea6a80bf9f55e3dfa54b36c9b35cf36486e2849c96fa05457d2233d1486d9492c5ecc0725e0e458926f28b2c031175333999ba2ebf7480e276d6c965578de927e96c71b436133823768de463dd3df618ae560faae9c75cb31ef1858913bd12f541b000f86c54effa8d06b327477eae24a77c76a462f85ccdb99ba3317b59982b0adebfa66a7c6891e3280087e346f19c9779baa167c42f9974b3f572a05cf704b47d2a1be8582929d2ac9419ef681d72abc26621d9cee9e89dff4b870384b5f35fd377099493fdc217338c940f53c8b41b4313652d6a3c00dbcfa05819e625c350fb2b16bfc3057c21ba1048e2d212fc19d5313f014d88a4510b90540175bdc1d8671f25b95951c57039a3095f44fe540482bf02349322d6d02d34e1cf117a24ed732d8c4648e5ca5845d0cba45acc457ae3cffe0b81a9539db7cdff4278d9758b74301fb3390ab49c6d8dd1ccb7b5c9b59906b370b769073cfa5c25a128f1d7447a56d2c45ac993c21ee95c17648610f556423945c051d3abfd518ec83f28854e04b95669041e7e8fdb6d39429e3f2048f1a34c12947e2d5c04e9a40392d8f6e184a648caeeba54476bc99d73e4ba50919cb0d3bfbde9971862dcd22862c88d18f3229bf3d153cb2cffc2cf95a3ad67ff19ccbeee521c7e1a2372836079379a2b4da1eec6c43f7bd54e7575f0889b5e000948d12e980f3d20b59a6ec7cc7e3e7325f34ec835beb8f2d315afab9211c31a5367ef5242bb994ede4d731ef6fe7a0ad43f26fcf6221c187f93729a904b2a8f9cac94be90da450dac6b81a595ecaedf306d2a11fb581049649a6028b64abd21252656f7192f37cef55f9def35190628a26823553b9a2c169b02d824f05acc38e3b6752da05787f49a62348b593e3a04c62e2574f5715fd40f8d4a5d5f1d60df3e3c530d3bd3babe740eb5acbe48f512ad8219de8fc2b08097a10eb4f299fa5e48a0b0284d31a882cfcfab43248e053e6bdf8f3db0e14bac7bfc6dfa7b5fbf0b19713cfa37641f893d8969264325ed127ecea1f9bd67488da11eb3928241d946cbefc77fcc682832389099c5ef2a7e931b68c2af9f6695c303805ddf891010de4f863001148e1038f22c8e3619586450c0c125049dd70c399988a3703f35eec1e7914c26238f89c8f18ac91ba769aae8b2f229f6d824ad943b4f8027eaad127fa02fb12f3422f6e7e8b2f9667602894534f4f802a9ed0a281174b15a275d3b3e0badfe484b64aa7574f1bc42975a526f449a0c53eea83bc69dab399dea6b995da829db97a4805f2ba27a7b02999ace36e0eb465c6ecbc6ef46fbed5276cd564104b6fe2f76e3a4e645c016180f47e81854d0051c27f67949b05051c89a14033073d6660f8f29aaa85ffdd01d1d4c2b4f00115a8befcf18e62ea5091557fba9458d876c0b76bae3b58883cb1330488ca1948ca70e5302477196a3dc4d6dc6d4ae688e0f6e093182f13e1db4c10701114a281e129406f5e2aa356f9509d0dfb8045bfd06907ca7b49c83edce1cf5bb519eedc37759454380c1b019245b91b9a7f10c0f09ad01314ae7918885a5d1016f43cc87416f754bea1f7cddb6028bd004e5ec143008fe55b1c4e895ec4e8264f779a3cad5f803848535ec546a201d989a2b98592b76d204860e7c55fc508dce910b46d7511c44b6446482fc61e05f5a80bccb5dbc626e35f6f9c76ca340240313bc021ddd8dd5516f11ddd8879fafe5eae56d05170d8ed69cb50e55bc3eedf1b7c0e005062b8e717cd23362ca201dc1240ffc76b461f69ab6921247caf4ec0252f2eda46d106a3a8fa1fcd94f4e39809c08b69f813f88bfc209bdf7ef9f6eba1fd58dbcff9b4b8cb3d8ab2ff3bdb1bf69b31f8ad064bb05f0974e7b0295cc92084fe10f50ba00a582eaf76781c5c8be6ad63b72cddd516af437a96ad45871b93b53a9f2e3c926d5c8ef7d88da7b0b7fe4c65b89b6795a8a8ce47f5e8461fbb4161474d2b1d52dc6bad929bc301f5c808e12bcc849ffa55a705ba95ca1dc07b3d713a540588871ed3c33a72001925742727f4ef0fcdcfdce85689ffe5f8969d948b25f789a2105b691b5601cd9e7a345946bdd1f497a9dfcd2c91655e76ac4f10f4a249fb40a303394905980b4a07ca00ffcec1dd010f1c6be4e4a7c09b8293ebdbad889e5a0c29b0883d7de949ed79d2a1f29ce7bcc39a6aaf3852789593bf2d72597d9d041b873742c1071e0ab3a5b546f8c415d1029aa3529a7df1094a7c8507c128f3077a2851bc34b4bc5a9d1b6eebfb931747448131c63aa57e97ed2fb5537318932f3abeade07664146b6f248fa45aa3825ec17789bf95a9a3c19d249a0fc8579631b05803a9ff10faa4030ad5367319a29db21d6e6622435695e3337e9d95d02b4862ec779cf315eed2b5dc719a58821ae1c84900f60398156cc3ec2c0a1420a4433df44c632be699210d88caeb724186f52c19ef5892de7cfa09fe8db716bac98925c77ebfb87480eee26aac1b190c31c9b1cd9a58467c47e60853f1f78420788f035ca55068c0d3f2f9321c96309533ec43d672b1db454bf69b1325a6c5ab501403450d4d6207adc2fbf1748aa926e974fb16e507561b0c6e5d96d9df1d295046a16699098f6fc047ccf293aaac7c1a381a5ed5bc5f9b7e36944577083f3d73973a88182c96064a667193b42bb2802d278690c70629068bd07d83ca55448ff1fc82215355449f2f9622ed5cedba3698f820c3a44a66eecef59026762910d0aa7cdd4723312170ba5e1e9ea35ca4b9065233456b313f9096d0f0a78e773046350271cdf6b57118cff49a32134df1b822285ccd202ce9186fb30e5651d27c33163623ad16c910d0f9c1816f08aa0ba9af4336cb3c175a71bc0e004773fdae7636093fd67c951f31044f4d3ebfc943bcc812dd2716333eb363da87cd70312c9f021ad3830d60e814a6181db1f1a13de1331a194234fabd41d68799271fab24ad8f7c6d9d258840621f867fe4de85e98e0a1b828d12ee2510c75d769a79ffada7c74d52c249b019eed67443a83465af9cb5a33ed0826ae824a7f7825f9b33c859994b86597ac8b57471d055cdb5d0e673dcac93c25a7a6d4455032744d48e69ad9c0f5e65f65e4bbfc8eed66068c89bc77df580bacf02437d4e6775b3fa2a1add2e21c73d0c5270ed1c9a14ff80bb98cbaf43a0b079dcfe89c04750abe33052c84e30220bfa95e414dd168817ba68aeac014fda51eec8e83c2965eea1a1be237a0e5c120aaf873a38847f3bf7d734cdf170b4e71d8f8f5fd25a348582bd2017d20fdfb0fd2f77b1f5cef00ac894606035b8ad9a6d9c52849e834511f37b81150d93fad1c580df40cf5a3d1cad46f526203d332247f96a68449697fc3578a5c6d284a0be3130a2168ec0657b1b16426f17b1300a5fb53c1df756f41c49b26642210027c66b6b359ad4f0de00ad64b50def4f43ec6166b474925c5023ebc59cd52f9c7f051f25f3c49b8fa4449711acafa849a31a7326fb55a9ad7a2049ea7a39a21c01bcd2e756c0c5cd098ea8683ceaa6da63c42a42d21963e155fb22fe30760e758cd40263fbbc27c7e073145a1f3a91f0bc81ed291cd4ab575c9d59a96f5a6f174f09dfe3e0ba893238c9787de3ef03b9d944a95018e2461e814658c579525dcbeae429f7a45b49a9dcd56341ac16fae8143fd6512a2ce4e7b6a98165ad953dcf5085ba305d5c6bc1565f46698b0e2a71be84471d2b7e5aef4d6349cf5156fead4a16ab7082c8451e52de1d28075b150dc2063a88acf547b60fb3bed84361b75b1dc20d852edea16b41b09343a1d2e553279197905b7aac115120fa20bf04f000ad23de48663ffa4ee4ee18555b648f70f043b732b4b5720321cbca3e44367a7a17e721da3bdfb3a8cc63d67ad48c0d3cc6f60de11e1ee8f331dc4ef677a9d65407153786861b32a38d69e5bd11c5dc2392a5313d9517d03ea19574d8332704a31ea17845137fb47f8e8386d1dffe8440a6713a399c8ee270fd5e63f965c2d46de44474a9b0bf01af92a94c26779e999551398c53d1abc3f4e3a81d828e4584912d50fcf15abba3c9fbe2cfb6f00e9a81ac606e671ad2a9dbbbec1c74300ff0b5c5676d611d1f21a88bfc927f6d607e0f87cbd1a2bd3e22da2f9c88f96dbf80f73a0e2b3d99f5fdfef4ff2da5cb67977a321a1e4e2c00d64742cc646ead6ea14bf4e1b3e01165c986162d2be6f0b34cfb4c4b96948f98ffaf35a0a8e37fabb72028a6a766f938f93836b1c93afc135029273019ec1a2f4c0afe5201aa526850b2a35a05eb207d9795c10d450a013446815ff5102b4b87e21605b4fa8ffbcdb0ad74710eeb870b8a8d0272be6478b915377425306739bb1c9a5988eaa0408103efb0aa04e48c03e1ed02885a34b6c2bf963ace672a44757b5172330f8983d79a46bfe82532ff40f393eb26b9390a130c43297c77f108e6eecd65e3e3b8839f6dd0c2331ea56351f44c250cb32402dd0e2c80ac41842f006b6fe2c5e5454cdd7d4a23f532ddc74d33b3eb487a6376b4009aa08e534d5d394e3fafd4eb5022b282a268359e6936a1080e919b6f6839556e470736d72b65d003683915b155b2a3fa043f56e33c7d1314cd20ef22d72701bcef4725b48cd75ee2ff9b05c79ff4985394494e20c6ab60653cf7d719d1cea3b17d7dfc18af713a0a0e4e1a8c48d6700172dc0d94a2b2334865c060dd20a7bbe44dd75897cc62b51825f9fa7a38ae0068ad71013aad6303f5ad36547286375b911af29ceb0e39f1906d2248ea4cc3bfa0afeefc4ae31f3d155fe0a3c992e58e658da21433ce5f0ac9d888a7592bc910fe914157209339b5ee6c4dafdf28e8b7f3b1c7b197c2fb1c0a879d0a7863652869a1b43d6be247f5c9b68bc1531a83ff1799285340548eaeefe1ea54af8c4f2be72a572f952c37d6dcfbf9c781c424ae4da00b17d4bf0c0fd4aebedb88fe37aecb9865caf38dff1dede43e299fc1b6a560c81c6ceceb259388062838e5012fb4a134a2963e32547457f99527ba733007970151e3cd56b88a09c7c0c35ed058d94c2ca3156ebdea9068a5b9cff03a748cbf5536cc0d285c7a491291521242246ee29462299dd09f2b6aff3a4d404fb73a80498ee2cbd0238d76b24fe99dcfb73fae620931899de729e03dc1cd0ab755782b13a1c8a4a4c3bb18896079ff78c425d0405bd7a773df0d0b4ae43cc58708aa940ed1064c68b21f3f9ce074bdbcb763ec631c20cc3cacb2e4d287375e2fec158a6a7829ce9cad630df1273447291b17ed03ae451b9d51b6d6acc9d6f3dd00b5a342ab5647924dc2a2dca579459913010e8231f55b66d6a38bd0fb969e407ab3c754741902aad47ef915c57b4ec4d1d588fde03a454b8c900028c8e33673b8be28fe08edb53386b11182261bc65d7a8da28a934000b45db60f4c68098d3f47f169f4f79476a278243be42ef56dd54088c2116c0924eb74f929d62abc0c53e364793dad5a6e716fd49ff5d96cbce0cb66c4449bdf77d291a7ac1a4ae7ae05f6aed4a65557fd17098ea92e715415494af8ca70eac98e77618531cf4c85e05df97cb314759f04521c7afc034b9f96ba1429c5d79957b3738280ca7c157e2f00e2032c06856b528e07703dac741384b4804dd1fba658a04635a45b6a3e452d59416523d494080cbc09ac2aa294a5a6d1a7ca179873ac175c2555369b5ef5a5118a9a97f0e74daf624b7112621e886c97236dea9894cc9167d2f541a0f1d848585a17dd8e21c2908a3f58bbb519bb83af303b0ac97c796c7b1586bbaee605cb84506d4bf2c50c6689312689f118e97db55bff606311d430deb4373c1f78ab81ebfb58e9e0a2c875da923bcfb3eaa8a0f384d806e0f2d5803be151c266b0ac910a9085cbf68d2b97cde0caf6aaad13de48def05f1b953907d899d5b5ecd390aeedffd2bfea3ec1a082ff8593ba05b96838756732a8a111cb0f715775ad1d468adb6351890386f2f98c1788b9d102037190602450da33d0a9935ec461664a9a3ee5d799fc250863028b025ec4fb07eb77c8fe07180e6f077c23d0ebbce94c3e208c35985b9ea1c1ea65b27b92d7c9103ccdcec21d22e26ea1456f174596066176d50e002dc04b9c958f03c6c22cbdc2bb82d88daf9f743d2f00893bbe2bb18036fe000640e197ce7efb53765b37b57650a4db29ab3d5ef2e6f64889ce3e9e765d783fa6a5a07ec66244297afd0e10ba9f92a6d70aa6a163051bdd2a58f1d9ebc80ad722ef391e2d64f71504d960a520ba15b910e483405d31c4f9a68b6013f20339530f46b48609ffb60e58ce2dda1d5fdcdd327522e46691546ce1a93cc442d1cb804455a457433e892980035ce36f5c4acef7bf87092c50c70cd2ab4a20ea0c39bdd77152892d47a866c8ce71289da7600f9d0a615039b9db139ebb5fbb84ef47f807849c2f969a8846e74a0e60163ec2edae4f179aa7ac53f3a1928ebf01eee528596d558e35cf76fc9a22eb7fc34d7eaae5ee03b440ba9914c7d550d97379dc2d25379647485a5e1e48f87a6f30cb11b6793c063ec866d4fb6f3b1120d906ba69630065b83e6f487ca9e8cf21c3ea88c0a60147f2f8285d3407ef2f52abb096684defe3ebf385321b2a1ed7fa6905cc0f013427f8fac2de331157a0fad1477f87dcc9d1bcb5020c979a1ae260f9102b383982662eadec33f1b670676582bd7d35dc1738fe1855786a4a1b5e35745e36c4a2ea47ae6d2a9489f170a117f8f159c482568865f45222a8ef69fd86c3afa5ef27cfdca98c144d7577a4e313e349a1cc6c031627c4b74e0eb4c828841cbc41dc7d6decf5701041f54c5ebce9240d3170550f084d4aeb82d44b1b8a11ec5890a622ec6ad4ee506f24009c4a584b0a2b999d745cd830309e509c0eca6cf1f57d24d1d92729ed6ac28d83cfc751cf7599b0f903237a5a64ce6be7b729bef77bf2bbef8ba9114c92f5f355c7dac8d236ff3f24456e01aed017d2c452c9d96136ec7eb416f627ba8a8daedf73bc858479fe518c15e29536d86aa13e925018b35c60bfcd842679976b63ec9925901d18052de227261da6c5dc54b8c78340433a8fcdcfcd01a2dc49d9700a2a717b8c166d065f0460f74f3b23e12d35b9ed22dc92724e633a02ea172782620d15d54253b027844fa4839d978c2b2be1304a37c673b1c95829b0f67b7abbf87086618038f6d949ff06a22a7dc854bac2c497ca19212fa867ccd2328bcd54990f89cc667f6e2fc286c3fd65f32ac99875829c4656fef30d2c5f546dda79c22246423c8634f7043a18604f34b6c50b608724f952ff0214d2c1cfb2c6376f7fdb548112f10d3563dd7fc2c56fcb3212302cc0f09c1d6b80dcc9acde40907a393c8e08208678decf1325c7d2edf8120209e7317fbce6e5dac86f6ad0cec4e36483504db233f037bc744579f7f08450d1d04dfb187825a55b5230f409f29c5134751b4475699d3c64a63ac5f55ff8f7d296a61691b75ec437ef9ee0e8d3c553b15f2fb8e54662a67d766d30500dfae820399bec4ec71097ab68857e469762b99f6552ff428f8a0003de7c1e7f21abd2afc84b2575be4b1abcde6b4ca51f9b52d283eac800502a08f2fd89bc636fa0475f9f56264a8ba0c5ae9bd2e227f021b19046fee6c72ac9ffc83a523e0aebcf42af018622c742e705e9fdb05485e07c285a11db810f39d6d5ae5d0a0c1b2c8e7f3c835e0f90163991294689f3b7acbaf978b9ba1e7204ed4eab576a71cf3364da94a22e6190688c80c831e59dd8767268836b4eb8d73cf9b4d60d4aa4dade26c44a2c32e5f28d6f1f4aa097317e19964f48ca341d2437ce56662a58a6b0950e8c2f935197534af41f71b9f6f5706cbab4e76d9cdb1f8bfe460c5827e0d9633d5d23549fc808e4871447e5d4c7b428c94700353492f5937e9fe758e4b38f84b6d0e231f440520e6b8c681cabd2a926033dcb9face6cce3fed35422950896bc1033170836ae9cad175589a553dac1393b9b165adbe755b4dd809b2457de8a7f824d503a4272c2ed8d951065bd1a52a55c23528f77a8301d298e100ef73c2717ed121bd47f3c824049bf21fc70c28f01a7890c4e435b4ed1d55739fd9b76deb45242e58dd2b09915f2d3a030dbd3ad7391f043a10e36b167460d9bccb7972ac2ca0c25f831ae7d9310c8033fe1a6b81096c93cdc284b225fd909835f11441ad83534c4e4dc9521d83e69a126b872d95e307c9c49c0defc44e775e0acfbbab746080fd849392eca70ba7b0347e7010d1b8936948551b1f06ff2624d8e8f53038dd00f6a3c2ed541792c84f5fdd5385cb5c3c8e06555ab1075ad4e647146444e11940380e203d9317ead881c85574832f433ecf1a9d3b2b29888a1e3fb4e38f878081b99b7f049a6d518cc77d8bb6419fe2c1680ab9734503c68a42b69bd791633c923d589cad6943d81debde2e0c21b32d8aeb420a6ec2bc7b26dfbbf2e09bd791b25fd49ae5fbc1752767ccf513d59aef8293790c53749bb3eeda3c2d6337e1b825b89b7c48d7ab3c5f7d851bcde84599fd05f1e26bb52f8058d92d20c560084ba64de6eeee5313c464947e8fb39afc62b4ca0322038b8c3062d5a7f4e6be05daa62342288c20c7101a3554d79148c1d2034f35e647573162d897d3303c8b0cdbe3c8b156219f8d47a64cde93aff1e218a6ab7e90c2a1dc10d1121c9f594ebf37daddf07f80660eed5293a2d6f81fdbfcceaa72ec39329187111adf1668c9012a2387d9fe307b4bb00a80dea8e676a6c85c65644545620b733aefa3a9fdb15c8673a01f26ecb741488707088e75ed2dd9a41a93ecc882889f2578c51a4971dde06e782ee7200000a3306581e9139bdac5f790e59ce635428970222958fe7093992e1bbffa333b28b43527016b84009f07aa3a27511cf4b0900212ec4c5b9e361170405016a96cf85bc334a9f4e83b9f7dd9741a6b06a3a415e1d2a6c5e6bf585db41afa81862a1fd98e24471b0fc52cabd71e58f363e981234f2a4c906bb7a7babe19377d316bd1559f4f78f1489d99eddac05c1271ad21d59cd7f31b17c6e09f40151792becc96a9f5641fd1416e114e901627a23655d9246ff719587b32c6cec1010232425ac19221ab75497733f3948c4c4da69d4eec9831e564ad27021837f2b1603d0cc0cfdf6e172f825930ec1d87f3195a7c80d8c88824653b3a494b9044a01bb06b8cbdfa4932e50be6598c5905030f33262917811da8c26526dfa27e0acc81d50ce0a92b2cea490051d7d67bd2d3d8c40f71f4631feba8e20f9041bb2dd2dea3cd84ee47fea3ac0d98eeeff4b13a9046a7ee78d6ee3a7058e41a483185ee0eba31730db22c7a598ac47aa2b4bdb828c9a66a7ceea5669566d70c866f9857accb2f44ae55924573175feb7bae5658e5eb8ccc507e23267983c189f9b16d2ed22c29619582635c4d5fb6bc364efd89e6a8617d3b138ca46335ec7f60760742c33c07bb2870ff30cdb85f6260586f00b7c59d5671480be7c84df226aa01b8987f467693d01ea0ffefe8634ee62571bde602fca17899f5cddd0a446ab1d9a6716ac7c67b8b188966ef1cf21039c8e3a059340758f77a6692291cef5aad71e00d480d27b5c560affe15b08eba1dbd23980a8420981b6ee599b12707a10863ae51a049e3bcc2ba8c1c113ae893c920fedf959c142b2d20c180a3f88499d2931d6b1d69643ee3378dacb8105f6230114047cb61a1d123d5bf288cf7a5ea6390dfc749d841a7c1196ca50048fb19be3f5a515b4f5010f59ff843fa4f486ed24419c1245e9726141920907955e379ce0295818a1e899a50cb03229442dce120a1e05bbe3087e4ba267ce68a2d820964adc8c2561a4918ee6a013f850bece24a7f1a62e231e16b0dbfebcdb54759ded25b7806051a78dbf24c0acd003ed1067d09d4d9d9fc51a1f1c3b19384834a17278bb1e51099f2cac6ffac670df27824ad35443ef198d2d87e19e5d6f815870196ed25227c17e0bdeb1a61d481048fef0b7b12d4784cda37a47ddf0c84b534aaf3c1d4b708b39dacd2c03f7744ce0cebd04dc3f06a13cab25ae3d476369dcaf489e43c822519bfca2e6be481fb0612ccb079510161f656afd5bf8b9dcb7b512dae2d0583f01e6f184036f8153184c98f64087ad6720537774ba175ef877232b142a000c3060a0ff7721e79bc24880beac33c66fc63683d8e65c5b4d783398d48c66041efbdeb6fe2533e61b5d01f8182a18aa1089bd0cd8cdf9ca704599c1a224ba8a3ed7866625045c63d1c81106b8f267e428d2f4e222819ef855cba9980253513d040c6107b5204951c8ca5f10a4bd945235ad60bd8f418c1369884b34f608694ebcec0a033e848e7814d700961a681dd0a5b031cc1107fe392ef92bd25be6c65a332bbaf0b95802f0c22408051f078d77587f4c01641a878b0649ed188b0978420663bbf5a55d5ed05aa89a156943b42d1bf08f3cfc18d561912f5b50591860d1a64325514b3a3eb7158b4dd6f0463823c51776ca6f5c0d1e1d61ee5b022d43a237868c7c94b029452c3e11416819a27cf34001c95672e322e95fb39f2f65e81c0adfb2a47a99c992e5ed6d944ef7c227a1049012705ed2f4041fb1e06d7c6246e18d6a5b24fa22eafec9e21c807530a399ad6953206465c31e0225c79d24c0fdc7236274cb58466e0c224d94096880c0d8b4993b83544f360220695bc2f2b495816ceea5d9185683190973c825b4568ccddc7a498d5554c5f27d3c9b940cfb549d7860268d05306f7f29a59f72aa8b7f474b85ac4ff47d5ede3cd3edbad6d0ff0b5c939940917e6a610d3d3df0ac16860c6df710b9cd5c7d55b5f192971fe1add09866b6649f0e04cd09a61647d5bd42a87d7644b93f05b81abd7506067ca87e0cdfd3cda45c955f59b4eb1a63735975cbd43f09d264c139145ca6bbf30c3e84bb7877cc6f58798b3c331a3629c44e84c439f4bcdf3eced73ead8236a2e8d6016aedf656a9ff1b0dd33484e60fc550f4c83f24537aa1c25736362d5ed4c58992531edb9d6dfcb33c1f6027a408ac6fb9180a83357a77058d3c26cd4a83406737afdb26ebfaddf9fa31cceb79b06d368ce9bb98cfae6648cf1ef66f74331db0b00c847cbe50b8907e6e422c1ffe96187f4ec4d32d941dc0adacc8a104a4b53d9ff646da20bb409b889654f9975d4b2108e14ae15e80dc9ae3825fdf9bd5d74ce98c6c938fac3600ba56efee4291b5109b1eef3209b41c7cda37560b5264268ad7e2cf74485e87bce0b45c9914b164af9b6e950943cbebc62001a57bb398653f94f973119b1e4803fc61717bef3fd0311843ee8f18579b272b03de5e474f7f9b8932250728c6d9e3cb5a27012937da453b1b116f225703d59fff0244b48cbb837b2f19e0ece008bda76502ed3fd87cfc725da2b580d3e0724ed31c0e5d10e8d2ea029d40eceb6e0b353cbbbf38b1474321cf11060fe830206d9447290644737c8f58a38801dac6b12f7533941cb18b2a26d006cd6e999ca0743c3b274e954b5be84a141dc75e1a5e36db22da71d816fa789b32c41914a13bcb374d1b60c231e03a36943e328df96cba255fe8ba433d815f37817593c1d5b6c13adec15f6bc0da68e0f5516405f580e728ae953e88ee8e9b4433ebaf113b38d8abbba6c917c1c0a4d2ffce36fdd80eb925111b4d6cd564333927c078dd8c20a132e22997bb26bc4dd8c1b23a0dad613ecc2539f7f1d06ff615c7492a39de3e07426fd04fc4b490941cf8a62a7f744dd82ac70f81a58c6f91bf4f62f5a40f762b8c5d16d593b44e7c87a79d2adf1a297d3d5de2399042286a7dabc1b8bace4ca2db13cfd0e74da7907c4bdbf4f04e0b9ef4d800c045fdc3555606efe14737a938c0cc5b6754214d089ceee2194821fdb803dd67424fa602778c84ab21d3b3d6ecf7fc8a49aa20634268af13341c8ab889cec81fcfa6b91e4abe215534616a6649464043048c4736ab38a125141bd3259f47a81368303c641c6060ddef4b0556a2fbaf166c0a26a156b41ec9c22f76be9bf65432bd53ae64b989f41750057f3ae8fb3a7bf0a1832ecb5530789886d3d3a91a85ba76d192d15f71602a50123103b08dca232a1e476e688287b8afd342df34c428c121ecf3cb908ed1cb86722a0aaa0efb0a7db0d8f054bd8757dc7c2f50d9aaa79e4af436bf157c2906eb93eab3da9bccd1d8e48db58f717f6dda5b43c61259a4022ee0eadb35d7f6383d4cc767b5fea30a7cba060ced2a22eed63d2dfe1cf470410f056c2298252a063847491f9722e7c59615afcb4d349dae03bbe20339c9f313a3581c78bcf13a85668d872f1faf8f52d3c2d78e1f8739de7a1de167b52aabbd486f298106c1dd44fe525b7936f720611daf6887d90fb6e7fa470261cb3189455c546a5766214e5edc8e05b765c846616c686ffa8e45a9239f5e0e551e5eeb548afa1826e24c1a5fd91a0c87f924716f2fd261fd3e432fcbb0c080408cf5799359d0b595042ec90468ed9f5e83320cfdcde6f50b8537c396cab1aea843a0b42153c5cad0526d8c2d2628389655aa35b2eae905aa14609f0cfb16f0de3516c4b93fa40265493e3a910c2e853d575a1e40d39acc504fea563ced667fc2f3e083a8a503d2efd37b4e2dedccf0eaf98eff2dcc30d7cf46e38121f052859263860d40139973b7741e43e40ce9958a9d200268e248c6531c1aa64d05b519ebc8a59c923aabae955c86ae398d2929e6f3af6e74f8d69ec2bc6b05537a9c4bb4585a45dace021f214198de50cef1c87f0b1ae236eae3f50caae82f09b17010fcc231ce96f246e42a5fa76e01ab7c415d440fe1e969a45fd4df9e851914fd4b8c959c9091eff0be967143b9437875263f82c39d07c7c5f852314cfbb37008c96950d5d94d1579bd8c6c3fe3b889a57b9fab85598cf108ea9b73c321154cceb5a22a9d71ae9a7c61c53d0bec6b461f98f9bc9c47746fa8f39915d0e09b806028346e991f107ee1b889856f48846daf5101d06e844df2f12e6a2ba14fe96001c204d414033765819c13d7c4661ffc9caef5a9ff6c6d3fc140186ae08aa63acf00b3e2cd0fbacb0b4ab8a286fc7b43c9516cf47a73a2918c209e80f9d61a030ae73d4c8ac6706a30928eba58f410ceb516f146d8f5f066a190d7d70f34791cf9f18ac8f836731300369b9b8c62f616d4b43198ba1d6628605a0723b8cfa760604ec5288968afa95c7bca3df71dfe0ec604964073df1ae778ce0ae1193cbc54618a71bc21ac2676757eb42037f96c9383f4c31d381d1c0f72718ab3ee2b9d5799022b27edc4b5112dbef088919565a22b29b4318ebe52890c6afd269f3fc4d606112f79a50de1048752bde4f98363135939f7aca49264d5a1039a3eb58086ef7ab39c65c9ebf049c35e52a931ea420267e8ce77c85112ed2e5f3994574b665aa03a37def93d699c4993b5566690af53903c3d89cbf43fb82d5267e500a4294f9acdb9b3a77f246910632b9c5c37faf8abfcf99ef8d69eda2ec8fa99a19ad7461c30c330dc334b0ac017d428068d6f7794be0d71227ea5c9c854cccc53132b71e0757b17c0da4411c46525fddf889147b80df517ab1c885c104b30307b02053bfaed389eba4f4bd368ae34a9293eb2702ed4d6cde1bcd973523e2ce5e23fa9d8884c0ab99b6421d3b8d9f2d302b21d63575bd72fb24fd03b48f4aad9c1d7a21f5a11a56063ef6da3890b3b758a01a68126742fb9fbc555cb3717815a6690a213e9e75fcd661db94892b7c1754753e9a80069c0000cdf98c50dbdaafe4592c8b7879fa5b9e0bd73414cd9fa3cedc40786e20ae1fef081415ff757d178a088eddbaaa11f953df5fdcd63e559994ad871bbcddca5cf18f8175e8da8a4707378fe53355c0e6b3da7d38518b444c3c148f1910412900418cd4fe0ac67f4e840904e1aed2a4f2b6b77273457cd90b3a150a9f7df7c4147d8964a37a2599105d02850b5c2f352e99e2ae5815fbd06d3b73d0e3e984a0536f2c782fb95e954c459cefe269efa236e4f255fdffd2082ec73b23c7a1382aa6d9d4ac731bd25507511ebcdd410452384d679b1d4fd39526636dbcbc73e391ff84f9085f212298559c8fe5adf718cd69d2610a4e91af07076638a820e039dd24827ad0b49cbf2c2afb6478f1c90ca72ab970dd1724fd12ef053252132217f539aeec2b41c8377d9f8c3a3167c1982d7d67e1b3540e469449c97a22455d48445463520430445bf1fb432292f44362a5e1cca1dd2c9d8a14fb833cac3b7a3e878d52c997d2a750c715ee673de5a32aa1bb70395397ba95220772dac2dae524af5f5431759b35af13fe0475f353ae93d875618d0deef841fc8fb94ba4394c6fc9b8542cadcc678a2f93ad95ae7d1fce52d3782e28caf52c63187ab0e895bdac28e90a149854e9d10618d345911a83b4eaa07b17b8285dee0433f02fd36862c21e40bed46dee78aa2bab8555d377c0525fcaa173a0d62dfd71caf08cd7cbde2a1ecf8c75ff406fe57c9daca74f48383af790959a1c7d70c66f1ec012f7cfdb696a283a5d4cf0038c3d3cc0df15129479ea1e12b80b2c78f5aa102586516da6c7ac6ae6cce334b926d7e2fa340985f60cf27120c5da244129b91c8689ede2c8e444099c6e215f69ce28ef7614539f6598fbf4f3cbd0756b78d91d2ae6d3217676252f6c239049edba6d49f3d39781d0c633b3a288e0c88cd3ae23cc4e0a23f49520bb9bf9f3c659f361e0a5f5944a4f949241814be7a2d63026d3ce9e81f112f15c9d5a18e96db40b63609b909ac2123a7e3290cc2a30e5bfdc3db666c388e07ad64f54f18eaa6dcf6a911b3a2a9b61fe92ec787984dc84eda198a71b90d83ae2d2c420a818ed43637a841533a274c89ee78af1f50fb6401db9b2901a0a7e9e2d469688afe672f51cf87aabf8d4e9d35960a6cc5a7011914daa9474261cff8d1bb887e099eb1c97e88d2aaed4c36e0534c551af5821f73a96b522c9dab9b554ec44dc82a4a5955b93a3bd1977e45a5709b016aac113f2f29b0d1e52db8e0bcc1717b53c3490a4d04a6945286a919dd6f81aa3184b42c550cf2c44413adfbc71f3d9bdd81a693d9477f6b694c6dfa034dcc21280133c5b72e14f1da8f54fb4c0c0e124a7fc999a058731615dc04f6431abd1de12cac7ce4d70bf4b87bf2461ed27f1714b9f7ec30ea945eaf3d4999df60389d129573a8914959f43c9cc43dab8bcc0fe3d3914e4a6719746cf71d15ad43b33ab2d74a4b138f933be0eb70969297e271096c83c9134708ad752ce162522a4aa9baba6aae9ba93517363cc305579412b929f17ed87412ef0fb725d31fa5fec355ad4cfdca620948cdb53c296a002a5b5f997af82abbab424f7c175af6075327304d1e1b49c7879ccbc6026bfcf732be37955f40352ddfe5c3ff426f683e64ea86cd5c2d7139176cba31d80627103b154767b4f45e04827b13ae4b9bbf88edf3286063cb0c4a0a53b78eae7ff4d137e36d1176fad4ea46f71c91344a97449ef4f329fb9f09f8ae377a14761ab96c5a7b5d335cc68c5379331e66b1a804780504acbd92ee67f0613449da2eeb2167aef690fd4d5abb334c44a05e279e0f8d935e378b408673c1c08ee672aa8b33c9c4a120dd23c02912b9657a95a495cc0143445c52c53c2b1801ecdeb975c669be50691bbe747abcb220dd929514c3b6ad3c972fa1bbf2ef62b706374bf6f8f4e33e3bd539edcdb54f28da177b26f6a102481240f818f1bb9858ce84db8b75ecd6710d90610f8147e1af11cc26d6a72822a08cee9407131096caaad29e91cab56c224dabf8e1c0ed9026ec8622e9cd9a932e1d05fb314040b6d9c30cc08490e1d68e4ac061bbcc1dd5213c23f6df2514b002a162aba994313f835ceda600d15762b8378e74009df38870e01532754b5e1c08520f5dcb5be93ab3fe07ed82b2ff93a2dfc65aff5e0785939f7994543fab2e73e9d8e3a6b90ee66aace32c49ad83155b5a3cb381a259ae594192313f095ca1f74a33a2d505d115e5f4340d4cd7905dd7b36394a91daaf5fe7d04bd95a53098867429a321834fed00e7a3399babf9cee6210766ad3147d12f3563747c8c46f8fb8c4d82f5282a985c60581d34ea02cbe9c5618a7aaa62bafd2e5f6ed374521741c4eb3a050a7abd2f40a8c834102ba172445e5327786e226a78aaf8544da7ef19a0a21a12b9f69787890f735124696e6d08cc6c049a6183af5920ceba9a0e05cd48c189028d66e03038f08f9e0f0f9ed0972a35dcc587074efc86b60dcfa18ec3a6d79733b2deb79d4c926573d34c33cdc2485904c945c2805256cca329dc8962af53ac474f1b69216defb626f79652a69402cd0aa30a2e0bace33a73f24f8b791c8697bdbc458575ff8a4ceb77f29cfc1c93521ad1c9efdec9f9b9e915993e72502277fc953061a7356ae69c449c9f63ee67194b24db73611087a11256c912215230018418336148c1c1271655050816cc20ca0e68c836262e2c8525c931c149908f447e0f11e9b385de23c967ad562341a77f6a9172472673658f2c76ecd1f9c1b22586ed87798ca1e609bc29534019bcefb558700a38050791efb8ecf23632c2d23fb0945f4487a398c4953fb5d83ec2e2622b08dbc489c74036b24d4e47dd4bd5273553d7b7035b261da86f4fad1dafe94027be23e5d377598ff4e11ed9847964aa7bd5abbad0257df99d04f2ef9cdd5759bc27e2dc7d934a1ec18cc2326c5b696db14de47429bffd89ba2a7aa8b1fd5d8edbfde45405e0529f8b937a29085c4400bbf46d0fe9c26f20feaab0a781f8e7847574e5e0188e95392bfef1b71e78a487a4fe0b89c854984415d250032c27304f0778032cfa43c00b142ad03bccc6f5a761962198cc7b0abef421d23d3d2449036951ce37c1c5224bb64f840b300ff789d08479fc4fe819f4acb572ad52b5aa22a897be120db0d8069b804c96f49013b8011ca3a13f0438b6a5b9ce494025a4b1ece329a0a1dcf9250829f10f7c922941894f6ad385ed9aa5638094793f435393f118a784f5fdf5ec5820cb1a0693f2b91f7feb61812e53227d7a663b6fe16c633c36fad0f501b5c589dbdf5d84564e4765fa4b17a59ac7380659ac7493fb4859ff466363a3b9fd1d83a32db7dfa5786c46b93de6d2fed95d3332bafd0de5b10f5c4afb10f3f42a0ca2b2202e4856fffd1706ad421f621997edfb7d54e959cfa40f11b9d35feb2acbd75f18f444e63d117772b1c9b8d8e0511b759217b691dc71c1b2a746ff44e33ebcc663f47bfef4cea33ce6b2e329fb4c0acdf519f58930c394d3985233d5784c8659b6f74f45798c8659865eb6fd47a5d4a4a2a0583af3f91dd7b57d9565fb09d2dfc2a015645b2a4aeef84f90767131b52615e5624a4d38764f96ab2d8caea3f53dd70cdf44a6c03f93045ca1340c3a4c3604dfc4094c86eb2e5c77434a1984ddbe9f815270e2a2f4e9e9e9e0ba4361b19b348176d42405e9430236b2a2ca94b00c09b56547b5a163feca6ff961fc4ca463feca6ff961fc5c8014383aa15d0f6deeee610b6d610f6ddbb6f9a6ea3ad5363f8f1332ffc850ff05c2f66cfe91a9da5c4776f4603c79f2d399339fc87c23f38fccb74df353dfbde7b15437fea5b55a4bdf7b198ef4bb54775329faa3102674dba80b4442701f21af658972e79370647e9212a2ae4d8c6b4038ddf94b9a6c923e9fb9f38e3a2cc4bd8bb44a4f88dc994f43182cfc5985dcd94d4faa70546191fad2c3225ceabbe9f567447a2f5345f8f6e8847238fd3812d6ab251f2a8cfea47456ee35ae1e3a98465a40b18cb6a8a107976aca245aba020622316548d18273225a729a452d7191745f5c20dd7e9d1fb52c5feef853d6b52c5e7a7466186b9bacfcedff6b38f2fb53f9f303daa87f39628f90f6e2ca97a187e3c58e4ee895732649265a1310a926184889ea9ef400668d163b503982882170c01041c510333013250c19c47031012669498b263152f50d2f096acb0715832e6fd42736341db1c512d2146034f9c0a22586332d70811950b3da144fb5299a6e9896986e5852a22d31cd98a290c12d9171e2a6f06650b088babc84c513002e2f61c142d190145a98a7bfb340babc94c551cfe5a52b7a10bfbf7414164d9797b050c262cb9545fc33bf5f56e11ff92dab304f11f3f4b7a8b0f34759d4aad95116cd2359c443dacc97451c7559494b0e97db5830b054367f14f987ef9626fe797da72080d7f911e6e347cb418f1fcd23e6e97fa1b12c6ef03cc2d0261c61cde4319bef20df04f8fe86923e03f8fe8e923e401ec7f77b518e6f00fc58efceb3fb189149f8d3e079ccd6d149b74511ac97871076f53c8e6c373d11945782ec471e9b3fba60b0a32cc211df8a939958f8e7e6fbd96511168f1d794cc7f78eef9734d9c56338df39df3cbe35f8b697552f8bf522c81dfc58fbfdc801575868810823c28c8922ebf724f679f20226a2404a811268641046d6efc1cfb7f33d9858acb85864c68e7e24f67bf0a13bb9d8e2f73bad45f1fb0312dda9f50108c72a3e4f385ad77bd06a1f8f923bfde2bb9efb4738daeb7af7201cedff08c77a3be9892077791c59201e5a6692e741288649930710769444b77f86fd455211bf3f091900f42f69baf3cb7cb193e67710a6d01c843ec2d1def93ae108bbe206e15843b08f3e1c2bf70847dbaf01c8036417734076110704e7ef00e7eb0061619039001008c82ee200d15c9e579b71e70b0064b9d303da841c1b471738fa1d65d1913c33859c7aeed84cde4c4cde8f3bca228f8da9904947dd194aa3af3594565c9445374a96df7a43d8bf6351bfa4f57b3e40bebf03020a71a12ec1f1472577abd55adfa45f2060cb3a00bee303e6e19f4198a7c745a621c7529c9ccfcdb96ddbcb0dac739c2fc390453a274b0e676d2b76533ae30a6b451917012ce6f7fa03e257e75cae4d115524e7faef3063dbca921548359c1f5c6e9ae264c720979b5cb8e3bcae343db8b0a3d7630b3bfe3863c515779c63ac196bc3c8d1bb30b8e3f49966c98a23ee386f0ff1d96da39bf28d8e75be5d529ba75ecae336669b67d733cbb69e3fc807fc23e5bc9279faca6f81cca27bc71f039ee8408392e60627b850c1850cfcc2d17372255f69f3d2df0556b0efe6dd58b0b2f879f773c202278bdfd36f8479bd2f8515c82c7e3f3f559d5e6d6f582a97d4c40b69b094642fe1c2f5cf995cad241031b2640687f97f79a98c1a57c7e525333adc51dcb63c8f81f4c58c181ccea80d1199c289153cc1822333aa70521031e29ec61a5a546360e0d660c293506c1d27ad4104fdb206525739c99db874bee4846461bfe474c5a986d40b4c18d8e20c982a5fb0b0c1822ce8862e3fa0e1828b20642e032d686b63bd653d77df9d9c0c6669bdfc8aac7ee4a7ebd5ea93a44b92aa2debc1c259ed7ba0ed4227f4b25e4441057b17e5731e37f9c7a5e715697538d5abb593418ca49452f69592a87a1d83b9f2250952a908ffcc2b7ba4cfcb76effd0d0e4a5a1e480106223fc5c595b2042e769c63f370e5d3efc62ee4466b5d78222b41eb553041eb5f68592b0c6a59f744a4c7a94ee85ba71379e7ca556d38b3f5265077acf437954ab5a99a7fa43ba5a18a76944a8514c4c893a2664dbda6a3dc09141a7f87026495ab54461ef32046423dd445568e54543a14440e05ffc87b1b8dfb7494dc513d5d7f26b09baaf57b6eea4108c74944f6dcfaf4c78d03df08b03b1e497960c9952107e873e3928e923e4e7c06e5525c74f9cdf76045ea55852c3336f53ee4727c5d2e6402bb56ca7714fc04e6f1e7b0c98d0db657697446b20dac7267e662908bb23b4c0167863027912046b01c1db1278810108c4c6f22494536110d52d6cb54ac742309a69b3fddb308dfabbe827db9242faa6747527d9deafb54ddfd75aa262724324d48d2470949e7692ece2db5867e247970a914c4c89dfc8ca371a835524a251eeefc795473a52b79e01f973e25f8cefca6ef466fea38aefb1e4a62429314826642445ced9a5cc9c94cf9fc43e975a500dc1af3ccf7af8645ea75251decc84d4949a4cf7fc30005bf63274580796a988479e677a0df9b1b5c60c71f770ae13357f5b506e9ba1048702445be50b58275cd3eae0f472629ef63e2a486c26bb0192ad5bb5a1dabd37155adab4a5d95ebc7be2ad5bb5a20f30e0b24223b90be0a4cbdaa03e9abc213bc70e4baef3a958ae3a7cbfdea258d586e7425b0f443f00e61ceedcad047b071014ed79f760fc55bd15648aaef866a851d37a6fb338f09a93e05d543b8d4ccc5361e05fa4eaaa4d1a492110d04c94516142bca636d93985251a4a448619132937a62cd56b465a7f7857f52efef35c13faaf7f79c601f9f89b9fe55b0f4c8b09cb88fe736f328fbfd88e38e1ed51ad3a28279b8870c00caebbe0d2b3276944545567648417b505ed4cb9bdfe0cd7d2a92266992266992f657d2b2b0db9116fe09a2632d235af4575d2cd75bb456975611cce3ff28b0e3c734b6684d1eeb702841e11e0202941ea2036565f4f540ea1fbfa4ebff6ab2db8f1e94085d8eafc18eb287fc8072f97f8a6dd1a4cf36f31dff5aad85c1be456bd1feb2b6b0e396449332aaceec500fa48d264a5a0fa14f7bcd5a6dd8719b1d6d43d791f847b5fa4448bd8bcadf6d267d5a55f48eb7d0e0f8a2b5c5750d7a2c01e5728feb5f8bf6869371d1e9910db751bf691b6e85330277e7cb3bc331c8e31ec24973529a8b238dfa44a8779b71e544fed9de7f877fe88f921642b9fc75f69abd845c74312d5a8b06b686609ea14da845ab2faf756a6822200afe6d2245511c4d70e76fdf24859ec9ef2151fa8c5046d623e44a23cc235370e2e226c2f41040c3bb55162cf3c324782d143baf8e8bd2c891244a681a9f3d2406e5f6607b24591e3dd854adddbd6d9f738df48e7cd58fd576331cbfe7b6cff7341c63abf7c2310077e4259e0b470eeec84b3c3bc16a38721333b1440e56614f00eed8b32f8c058172b995663ec3a4b7e77dcf00ff2f85ab72226963934b9b8a924c6a35b6cad079bf4581f33a6ecef580c718fb36efefc10d9f064b7f6c1bb09bfa49ee6c6fa19ae967b0f6b9e7e0d6d53fb92a70ac57a5f256e093eb758f49d27ad67ba08fdbf548b25d2b853b7a3b5a6f58fb9d7faab0020dc40b0a89c8cfab4003f1de5381dff7fcad3e37d86b25c0054fef81b0cb9f02fc7a20ceed5420ce08deb794ece7a9c055b8866d55d8635cdcbef583b5ff85ed3d1157bdc7bcdf5e877f54bfa140eff83d8679725c2f6c2617b7b7dfc1b577fbbefa0794ea56ab2fc2fdea9fdca0ebfdc72eaa3cd089df2e1c4003a9f5e5e296a515eaf8cef6dbb68d4cdb77d3f6edb47d3f19350b6c229d2de4809ca53c75c564aece39e79c93fb2d47ca1e51eca4cf342f8caa35d20c2c919428352efa98eb689e60dcd7ff14d8093172e5d7e7c005a8de4ba954520d988489905b828b484a5c7418039026111746d7ddcf544445ca908b4d672e36d3ed222d352c7f1bd1f92380fe0cb9efcb565eeae20597fbf25786e20f1d58153bcedb4d3f3abe23ddddc31f6215763effa873477b001ab6c2b0fcf3a3587edf5a0940a2c80d3bc974acf3d44da689c945f79a44dabeb89804755d42492835ecd8720b549177779f21a5482a92c899845c249a332992f987c745e2a2bf9c7496c0d267b67d01665b38db9efb544f0a34c13f903bdc073d916dcfdf03b8700b89c81d19cb84d426db36946a8d3a2efbc8d9ec09ea52288f75b54584a05c74aa86ae9146211b7693b20da96147b9095d7727a799d3ccc94a23e671798577fc8f881ae2ba6b0999b030eb86e58d88320193e26237c91d9993c4a1f6022ab517c450531ae34a49b2a6f443d7783042894a0dcc1960cee45cae8151aa817101982d607200f34283aba8effb56ac9a134f3527b6b82f175935279ea839a104ade6844dcd091a5eb526deb0596d653ac946d20f2572ce5ec3a997baa0195d7be5521743574a99fcd99ca3e331f9d28a2aa8e02434d7491fe06bf7ee76e7d46a2cc1e570dcc0edf0a5fc39dfe8c0be4c84747777f7c66ddd975b6cd8dedad7cca43bbd63f62e77d29e1fccb367b355c58e5d44655117298f3a2bcf4fc425993b650ff1a02880a192e40eece34e4c4556f88706e1f1c1e34616f9911f71df3bf0cefcafde7c4e3ceed8456317c9d99d3caa70944341eed84592863bbf6bd845128af5b8df382c565c9c5f6f17b93865d1cb222b1ea393527a247d640ebd339f7b9943fb740ecdc976dd51e6d03e2ad79c431e2651711e5aa691f4995da6973b8d26cdc5e94ddbac50bae80cdb499f948e75c4ae3f11eaf338b2abef7bcef52a5768a32e43b97bc8b99cf4f500435dfb84c8e50121d786a391ebdd68e476accfe99a5f575ad89dab9be7c2125cdf3497abe56ab95c2ed7a73e2097bbfbeb75d42cf712941296fa9783ed8549cfb59fa2db5ca5589db70d5924ac563826b9ad6aebdb706402136b0703c32271b1be8725b858e5bf5e32ec31be53bfda1f6bfd9719b69b6c38e672fd80dce8a8e7a75c2ed7cdeb58b263d36072876b9aac72f52970845dd70df802479d5bbf053211af4592c463dcd72fc163bdbdebaffbf88c7beb3197bddc33fbd077b960d595c8ef32135ce070b970b44c704183eaf36fbd388ee3386fbd6b04217734e227f475851e1072b99003adf79e3f115aef3d90ff0a5cbd937a5fdfb55a2b70ecb92bcb7a9165035b9191fa9a7a58ea6b792c16108bf575b256a96d05f6b52077eeb540af158e426eebbbb7600a7c698079ea678081d4777d2228318179ea8fb0f187dcfcd8af1f656cf523779dd6dd1c3fdae078136064ac7d22de34d6d77a5938c01398a7fe0d884203a93feb4bb0b3f15660ead657e262fd9b27e22fd0898bf557600a8cf363bd2ee992ae67d88f7f5da3785d40aeeb9bf0cfcdd7d700ff88c0ded7d7cf000f797d7d2526f0cfeaeb2f7918f738e1587784a3d5118e30f0720f0bc7dfb9dce70847d107473802b93761eb554f443ac816e4fbe26b038e6d74eba75a774d0b54bd05f9b2eae54255385de47e3b819d59e4bf60fd2b135773ef9a57eba8d9e4a47d8477f87b94b1fd5fba8d8e8710b6a654dd91c94ed27d9670f7a960cff63afd402141401088f811dff1adc77bc8587f5e12c477fc613d3d4140a065ea9ceeceb1b0f2ee8b155ba83c95e3f25219a72e3de7e496a2639dde7808d1fcc3d11eb241f97b248912ba75fdda7c4a3f02ec639be40e553dfd24fc23c57d5846bfc7f08f53335694cbf4172f9742d1ef28fa3ea3ef43f4c7a67211c03bf4a9b894523ac6a5ef5134845cbac60022a842232009cc435fce6cfd542af53585c445fa24b848eba566c8745343b51a8f45518ee36837f519a78de6d23fb26343f1d04242582f9df43def3a1543c70f24bf5bc3cc93721208422e333383f337667e16f2ae4714db6a1acabdc58675f2342d1bcb72b160479f61719f3e9244d207c7cf97461edba0e496fb2ee43e8d2477669233491f86f2f2d4c5694b1316262b4e0549ca75a55691e55efef7378fe4fb1befbf4f85486cbe1506e1dcd93d9256ea8356ae678541af7779e08d7dfdcd7721df845c7e7e0735b0c2b7ab7fadfe067c7ddf026dbe035bcf025d391e54e1e66dfe0355e0a27a1558ffbd0b54c17bd7b74015b8a45e850e6701acff1e09ebbf5785486edee62bb8e3ceef539d07e2d487d5104702de775f6b88c47b5818d47d17ceba5f418523ef8538f59fc874843835440189f7b06700cb8404f5783f7212ec61a1172a913b5dc8857bd6df709c07de3c7f47b2e01cb948ec6ce6447267fa6c8d6dbdebbdd7f15c90c0beab1f1422e95e4718d4246c583863a8efc79eb1cce65bfffd035c6ff3fc1df98e087d1cb50be8bef548ba6f79add613f1cebf2342debb587ff32cb4fa17f73823d46f29d9edc706a3e6cbe50fa846f9ac8d1acb1ad68784fa07ebbfbd8351d3e5f691f4915836a29b17e836f35da033c99df92dd093e4cefc8e028bee7c16b88aba9dd29d2ee405aacbd316272c4d5698a828dd29c5d2d0672ece15584f385f75d1051bdd814367a543b0d48ccec64a67333c4267b46dbbe1c0cd3782bd74cb1961f2a093ce66ffa294d2fa1c32e531e96c0be9101572d1673c8a74976ef0c34b83271a9df5d89e69e8cd7660d1b18ecb49b794aa862d3a9054dd9495f73d0b04796715ce28b72e0005cca8ad865114f4de631bd1ed3cf6bae96302f45bd1b062cdc0b2324c6f3e7552ae4ff7738deff8f78d14cd34d6b53cd6519a45eab2f16c0c979f3dd7718565f382e175337483e304385e48e570e1fe0e3e63613abc4a9f758c1a48712774f93bb079873ea73a1d3bbc1ef2d86c81721443b1cfeb5bb16ccbc7e65f20f30ebbc096d8d456d8576e4689513dd7ffe6033a32a3564079877e0752fafa46b077e2781e3fdb7c234c18ff70cf0f6546851cf5d9701cc7e5c8a82a768694bdc8f19e36f0c1caff8064c743034f070bec7c42c18d8dab6559fe7a358e3005a57a92721d619c6c6c3ce98bbf3325e152233424647347294512f97499544316f28b54924cb2493a9d79c9282a72cd6c88e8c76965d2a2fc398a0a9b4f56a061b23b9a1af530523b66861c29444b1b95ad6833da8e36daf5adcbf577ff4de98632b6dac6b4356d4edbd38606fc718bdad65c7f6e56052734c41171459cd1750ecb063f72b42e48445e54b841098d991932a208c9462ee97a54191dc03802c3830db291533a73478e8923e3e347ee894373fd39288f71ad688beb1c576ba572bd03f72849934f46445469b6218d1b1477c439e9708b6656a154d3e8145645d4b93cfb358f3ee48e4e9ba109d79c2c5cff2647381591c6f52f2aba1d38713bf859bd696badf5e8560ebe0e2e07aff301718003d4f5f1d7c7fbf8807ce87cf801e9d437ee061bfc061fd0067576c3ff0f289c5a5cf0a7c75c177cf003022bf8636d2252830f483e917e121a24737bcc6d299fc70724bd1b82b87fff7b7c40dfe3713ea01ed30622ae063f35f89c0f48031eafe303e231c1b83939bfe303cac1c1f91c1f108ea582c3dd01fb8076e8d0f1371f900e8b82a30bfb097b1c1f10ac9e91e5789b0f28071a17078e7f7d4038aa8f94dd7ceb03baa9b51a70b8afd7bb3ea057b5f9ca3e5466f3ac0fc8c64e81e2ba3eb8aeb71f90eb6febbf0fa835a7c470ed4f8f11e0da5f7d40b6aa2eebbb0f8805e6ae7c8801958568266ba61ad1d0fd7e7a8ce77eaffa80be0a553f206f8ab9dded3ef5017555a5b2351a74b8a91450b5c283cb3dfd80b8ca5049730629774ee618cea44fffe876d03a2ee8c019c019fc65bd69c2120f9cc1b72b60d6f6883f6dcf9dd7fdf66c2e64df096d3c17024d0f62d25c0145ca07a45801992fd4a8e08826d9ec6287329f943d94b03956f01d3d19a6f4c80083eb2e652771c50a35318892e245127c05952c6ca881092a84963023840a58946e2df42b0a98242927b82e658aebffe30372d8f439a1b0b4702325953b1fd09c610c61c844f9e1fa03e003726b04c31977feac4c47777e0845947260c3dcd11b1a43050c5aae7f07160a8899d09627345d1cc9e6db29a7dce9c3d39d3a50ae3a2770c3c707e4358a0a6463a2e842a88b3bcfb800e64e17d0b8f38530b513e470e76ff001cd9eeef93d4da4e123092703d68482b8ee1f7e405e29653971430d6684a2306a03871cb230a2082dd6388951264b143952708f0f48f613df0508565cf7af57aebf654106d71f16e57a0b645cffff805c1c6296b9a337e6bcd1646606b5990e3528b33b5f8397620684355674e106126f58b9f3796c41b1908dde6bcc11e38e3a6b90b9f3e7fccac6116da0a08d31eefc1cb10bc709200b2e32f622481a40dc39bfa621c59d6fd568e1ce87a9b14554943bbf270aeacec711b282205b9c90cdb767dcf93b6038a0e1420777be0e14b49a22601fd044a20069b0dc39bfa651e3cecf61ed15466948b185174bd880e5c911474ac40055c30a5a5085939632ab236e3e20d96988aebfae3f8e0fc8ad1557a4d8cc33d0c0b9feaf0fc8ab0dee62cc98a29e91e5ce77592a526af1829a6205d493194ddcf92d580c397fc59c39778eb1c31862ee7c9be5ce8791b1c59dff49dcb95446edceb73d50734e270fc6347dc1820d6bd6a011e0062d61b061c417239ae04205623a4aa158a1292300406e841377ceff8ab04b68860a50b7d8becf35dcf9732ec9808c3bbfb355b0b8b3128961f423dd0a9f2863b46004c5cb51182280e1850e3824556106cd16776a29e3ced79df2272379d36c1977562ea3d1155ae5dbf9b0e966dcf9c3153562a8ac11a30617e8c820061b5b7421230a32b450410e30a5fee94ce6ce47d2ef802b766842a3459724216445943013c4175ed2d882846c92b973ce0d5c00eb39e7ec210677d221e9eec3430d912c8aabc195bf7d40724e1ea0c830bf88f12c228768ebf9b0f92fceef9963dcb9e5863b6738bfb0fdfeb48db035b7dfd7786cf4288f9af7b67f736ebd14869000e46c48120ae8e76f1a53534a72d1db8b95ebdf85e62252d36c1acccccccccccccccc3c6bde3de6c82699a57f99352977c80b528f24cb4e7ba623a9749f2413946ce2c24edac2ba3592dc896aa5b1dd514eb347185bc43f7dfd5300f7399c6b3064c786a2428d38f7311a1271d1c3105a4d510bcaca9e1f3938dba77e76ab5ad5b2688808657bfe18605f34d8f11bcab92c2ee5a238ee398072d9bf4a3baad554615b61d8fe764a29f773a394524a2957297742fb9724f799134992462aa28e7546cac4e44d4c94ca753a747dcd7524177dcb91547a4aba8ed4d4528382a15fff01fda95085d4f7d750052e485221ce91fa380c60594dbd54234b3dcbfa55a8218e0c7116907aee1f507f0b55d854e08264fbfa2a70f459c6df423d72e708cb28d011514a0f89f58a32147d58269bb2a5a4c2cdd6205ae3514ed236c91937bbdccc08069d7cd6e9e636aeb7965376082e524ae90c093ba3fd249fa3b03284e18ad9ec7a3b01e0f276841a444f4869d09e84b0a0431e432a6a26335d8f243b77b880b0637bb9352ff48bc736faf2e50c0cc2b1831d5b888645f862f1180e7dbe4eacd090898b4446f5e5c3aa909e232ca37420b87bbbbbbbbbbb7befd0c9dfe86f1ddd7e22d9ec750fee5bb1a3bd7e89ac13bd04c5aba38bcdc1ba62472f6219be0cb6df3eeb47867222fa44608feb44dee4e217f9c5634a1efbde5f3a11d1f7aa991de9576e5efe3e2a82a02288cb31f1dce7ed8f73fd92ef0136af44e7ca4f821adc4ef5dbc8c4bbddd7be595a2af0b74d6ee1a7faefbbedfb7efb9c10915e6570d6fa12fc037f1b70d60a67f65bef6a3d7f0f68851c0a913b1b5c56d8e3bee3f2c780f9a313e11c80032d253b7f864e44c425b87357ecb9aa4abf5383e1e5f61f49d22f9ddf5e5733137f0411422484cb4b6050b9fd495c3a77ffab73aebce31b5929629ede667287c986053bbecbf8c7bf0de5227fff469b54187186ca0bbc382282698b0b88be70d202f565cb99285577777bfcb301fd2cf6b3f4d6b1adc9c5d943fcf91d94681ac8fcadc963928c16e7cfde9ae4938b93131ac335cd542ac53c662027ff84947f52df4556f86707fe49fdfc8d1bc33cf353204705f3cccf3963c70de9478e693b827fe4cfdf90601f8eb6043fa18679e64b9043a3cb5f8e267db834aa14ce89fac2e592eee4dee871f9b379c38e9b530adcbedb3c1e33b043422ece39bbe85cfe594d5519f5c43f3554807ffd29895c9cf379f430251917e71817a7647250765157e11f7f14dcdfbbbbbb75a4389a8b5365a4c2e2e2944f1c13c845c186e590b82e2ece0d8976e76f4843497716793da4fefc714c0399fc135efe221cfd91ab565c9ca9ba7daa62a9462e4eeecc9d4e2e4e2a449363ea2215ad45438b5b4a5f01134ca7a73f88108ff192174f21b8c798bbe23613d4cb6b9ee45dfc080acd19a76ed95345fab8f044c605e700f5d6063f8a955ad8719b71336ec6cd5c255944aca2adc68a641576f4ce7ca9de19efc90bc313c33b732d936daaa96ffec1a11fde2e00386c5cbcf74e5b99cd4c1583a3b633021e1b2d70b7974ebf4a128c70537a73af355df7ec39c1b01c84186d34151debf8152d9f5710445786e96fc8360d5d8da41656cab7f26192872bae74a1cee9b516a4ebde6cf95656d92106dc943e9675ae58b93dd2a25b64a718d77f7a524a9925862be5937044d6393d3a8f9ab61c3310c940c80a146a849149314d20d1b4c87286115270607011628b62563b1262b285bd7c517e8f9c49576a31e24ad595943ad159a2aefb7b6d24494aa04372a75f26b106146186f06288286492fbe24a2c377565921424c550c30f4db04008990ceb06353bdadb36cb98d56b76b7eff8ebf3bf953e384866d00c83384d0f464db2a015be18a891c90ffa155acd17b29bb7c1f1af7f854138c220100c79137249fdfcd73f91f10bec5111b5dcfb5a9e73ab288f71dbcfd51a151137653843963b3848a42877b697611047cd6e689205adb0123293638d95276436377f1306f58441601bb2a01544d92b14e21f6c1fb4022f21ff89ecc1d89135643fd5e2ba566803c51a520df907dbdba8719fd49a91357437f63015e562183bff83b80ba5282b9005adf05d914666f32bf8973032f9130ceae1c526e4f24dc8904baae579cb73aee5f9f7dc77166c75fc791d4cf1e7c0ce3907ebdb6db41c18ed7f9f7afe2851dd5ecbddaedced3ddc36b147c8f644b678fa420d59d00a9e0c45c8e4afe04a78219b3d8e64c8a57f0586816c865c52cfdf2e31ec288ee2a5442e6e1dd256127614af0d2ce90e771be90f77a35ceeb6e930596a243dc6badb532afcb3dded6911b5e2b1efb76a6f6f1489bb23255280ea7198efdc9e12758f7380d4b7be1572e0fb54b7a5c01e17597471a34494687b5ab43d35da9e1e6d44defaae3da3bbfdd8b3fd285222222ebab851224a8579b6b7202d72717b1648adb8b8fd0aa446140b3d02e91690d29cdac040b6af1487bb7d98c6f6b8b83d17fe7071fb9112dded5b34dbafd9e73992281055e2222dc145da3d415ca4b017d8116ca5aeb978847eadd6d207b4081a8903f8a7c88ac7e493f1056fc16f5cfac2a5cfdd335cca2058ae2981e572efbd40c971dcdb802e707c92e322b5ffdbb66d9da5cf44fc55abf7f56d5c5c383eb11f02bca752aebea3f45920e86bbfbff9dd466d6a9562bd6585ef22cd71f1729c94cfdfa63ac1007d39b62edea9e379acfe704fbfc53e55c7a50f868247facb1124cc43bf47fa38000d98a4308ded9a8bf4a9ffd85f3c5fcdc0ea544394fb1e6aac6a68be8a483e40be6a48ee50d885cd2891948242df11568425e4225d4111499f959ad59a22302e0a4dafa88698877e58b32c291eb28654439725345543aa21d5900f927ed74a0012fcb2ad24584b1debf45063a5b7b8ed996b227d5a612379cf7ac816f6100c843ea56113c13cf4c766c1a50ed3d36f1a92c7bc383531d1ea9385eaa84bbf041729a52f345b0940422915f6d0c35e6047ae494ac3f25fc74c3c36e2b09ea1926e0f9180a404133cc62df111c5b2c02a41afd277c5b00ac7fa8563f54255980a5d65d80ada978bf41b897e27d16f25f6793284193fd4c098a28218f4d034e6a1ef42c24e8e4a191ac2d21fbc43bfd61ff4075277f9617306a90bc77153c246d8a5c91dfa166c24f97673e961e17d16d5d7ef9ec5b0f2994629fd5612567adc8f3d3d857d16c03bf4e9536a74847984f80774652fecf6c81d5a2bfff0a5ef3da5dbc6711cb76d9b5d2277e857b089dca1ffa2c1ce0e307d26fce397d276c169ab41be5b107a82883f5e0796f33432719f9e20e28fd781e5f4bc9c9fa6f0cfe41f7ff91d601fcb32620d75958a06b31b2cbff36d68c361755f4476a44e4fd4897fce78ec691372a794ba3d439f5c94f29bc8a74e2ed23343d825b2562965132676c99926bee499b8bba7ee9784bf07f090955fc1253dd4d825b0aa8116567567b8c4468d1d37a3ae8b8e5d6258a6f96c2561a340b1f2f212144e302682e8780a299a7e0031c3edee7e510e6dd50729aef44126dffa80c6955894aefc21872b7f38e3caaffec91e3555b667d1f1005a063180000386097bf5f8cab992c67523643d6cf1014a4e143d24b510c25e558cf85092fd9b9b7fb60ea6d89e5f114e871f9cca5ce6dbdbd7c114dbdfdddcc7802e608045185e18d1a4e50b1d6c704a2363dea11c27b9c971dcd61cc71cc7b96b35065deff617547105cc18578c3c2d2cbd5cbbb2448e2d530c535579d938970151aa086e4b8d41ab57b478148d117725355340650c1555a031a26a57a27c406420cdc003928192d11a1b1acfb16515c5ea063165d41003c5aa08314a681143db418c0f39b6309d41bf07dd4027b3a5bb9c74ce3953ade61dfeef39a5546501e3f7edfa8fce4f61d09dc694db4629a5f37bebee6e2fb270b6a794dbb66d743ac81ef7ced9d7c674ebd9d2f14fed91ff46bdfc1fb2954f7ae072030f5d88c62c41937d6118f145942ebc009305e7051252bcd0d4644144171630982a5f5aa04549a94b14162e60ba39b9d8f1ff079b1eec387544232a74ae2771c740dd2de7e4e6e4c23a677d29c3fa757fb023eb4fc445ffee21dce730eff48e16e507b7ce50aea05d33f4266444b6d7a30c9677642504b01109632fae944f85912321092eca6f6db13a6bac12d2148df84b7f7f25de61fa3dc454ad396e8e79bf9f48432eca9f1939c23cf2bda80518e0961192d45e640aaa639daebb6f7333bbc150b4feded2fda0eceeeeee38707b9aa5b2ccc1ae3213685b5c3c6a2277fa7b44f11f06eb6eeedfd1c30ceaf40637aef4ca58368272c75acbb06ff0c05486872574b049f0e0c3151ea8aca0b01aa4e195b1365d7857d81d61be15d857114dd8d7952aacbd5c4bc1946f2805332dec97c613c2b6ccac58b02f31df0b2c0ea48f05208ad8c186d5097668e16bc3e6b85cb382c6b3625d976b56b0f8aab037976b569af85eb03c2ed7ac1c7d3dd8d7e59a152a4e5819b232abe9d0c461b18561a99268979b145051d3347a55af565b85c9776a4d07a11cee06a6af05db4ae3a1b12931bc25ec8acc6a09eb312161b9cbb51cc2dcb1c6c0b22ed77240e27e6f58d5e55a0eb43b56127238aa16462fd77298ddf19728c7715f144b6adc91936660733895595ac2cc12115b2c01d1ad599aa2021b5e5e7aa28cd5cc6a7079e989283e202c7879e9091a18d65e5e7ac2a8cb13543a339e78c183c1daa4f968b0ae3259d8161317b6a5c40f16c7e5a5305a565dd81c9797c2d4a0645d9797c2cca428a521a14a1457e9d25cedbc5cab42bb238c494836d3918f086b73b9566587d592fd2ed7aa10756cd4aab8b0c474c3fd2ed78ac6b8a3f830ce8143de703c9932f34f8ed286b960fb6fa65876777751eebcd80605b6a5ab659db5fadcfbef31dadbb92a5539b9b9bbbb85b9a4ee5356777766669693a3dcc67161bd4e5d742b7db2bb8e1500a0e0106704e6705299434ee6ed50ae0951983794502ef674f179e422b7e760cfed5ce2d48e769be720bd28a43aae0ab921e0300af4e5a1534a69081342e9b7ca73b05db85d37ce1b568fdfdf39a4f7f5790e6e2003cb2e3aa8a30596bfe3d5e7792c16c7aab7c1be30b8e0a65fa494bfc74bd2ed996309934fdf46ba668b5a1d40ac623ca59452e2dcf0c33ca597e24ea5ba9d4d4929a594af27dbdd5c412b77a8949c6400d610b67f685a2a3d29257d59fa30e6a9d3370843ca1c15743c9fb92b1f8998fc9eb4a6aa97fa80e495dfa5b62bbf762aa9f28e72f779fcf16062f47147a6cc9429a5de07b47d29d60b8c175e29ae6eb7bbf1a67c495971781b8861e70ce7938bfc958b379b72d2ad8e54d575d17144e77d1b9d751b9d715c0d473bbf15edeef63101a62b96a42c2b6d4b86558be3a8d0cd169b942e1b496d5e95cee88c5a1852373886668e134c7e61c274709d95b13a766cdbcbf9720ba673a8340d1596512d15aa11000000006314000028140e08442291382c1c1496517714800b869c3e72501b4cd434c8610821630821840000000003022333b3156a6a0d6f2f2805f82dd5c280c80844689d3ec0e77f98d92335ed2935457e934ac91cfaf30b1cb140cd351cab822c636994f848ef8e89baef0d9909481e80eba70408720ad38ced15d3e529b6f64b461100ef2e303be45807f445972867effb8b80fbf54de40c6f566aaee68ebd39f26f7fd47711384f9339c281bae6141fdae0e00130b92ce1d3186a540dc5a21e18fd866ba8cd685203b59f632032bd8d56c90216cc17bb9d7fb40c478fc3cf07ea82807d4f9ede0218daa1eff1e67094f394daa250bfe07ec16c2842bf72ac51bb5e8d6ca69a4386411470601e3e2cfaec86d96768f0333fdf7340367831d3c0106e248701b703d6d2cac6859ba0219da94d59558b7421efc9e7eb7d33d153622504b6100969222b39d8ee0c9c6c63157316d804e3b05de037a07ad981303024687e9b9b7da7d24c1b1b4ec49e36fd96710d66eb0f1959e8450c75c0b7654688ca574193825ccd2ed8c6c6c3ce5989c8c9c95eca9d657c9b7b8d5fd0a1235d6be6e3d9a3e4f6a094409ea7f7e82477dbb18052c9b75c5e3dcc5cd67591bb88c329dba785147314ce3deabc7974709819333d6770f8cb78200e324c50126df37613cb2f59b0681f108c2a2499ae0b964b1aeeb1c5f6eb9346b06275782bc72549da7e86473e08261a3f0e72c5a39804b35148dd55fc879ee1991c2c8cf6168991cc274dcd0d93243cc97c1d5752fd5bc69bb907f844f8dfeef820d8528837ed172e415f60224119f5295518c24b07ad5ca94d02be7311d2a197a0bb7890693c9b7916ac6a936cd4678e3dcd9cd0a30408f9a71aac46b7f1a26715f03a3603fdcc3db01a0ac13ee19898372e4c41425bc2c98963f74f1c9b02802a1e3a3586266a15f38ec7715d9f974332ff4c7f14622aaac1c40405b4804b354fc9ed17ba057c55f25b16b02e4a3ca4b7f2ee3a2d952c96dcb3eb64c6181453e7118c00548c09367c3836ef397fb7c26ee9bbc91855da8c32c73cc4b36ed0f5985d40a619ce45a34c0adb0b62cb375acd36d9fb89ef9230bc89d6b8ce4030e8871025bce813938c1c4bd22746c201193879451a76cf0bbfd8a37721a670ecfec3f90055a46be146927acf770556f0e6888b77b488762622569572f9c120f57ca802d49779856c42981a6dd1ef548c657e4be179968ce278a0535f41af6cf8018dc898b38b0432eb51b12f02a67600ecf14d9cc0aeb564d56a00fc842e5158ec6f23f70a6ab93f4c0386d73f476422464e2671cccda7043420bbf26f38e53f3b824561e971775462ed3daa82ca638acb06d31b5f5bf5227886bb824ff2fa838251398676829ecb8307391675aa4db073d711197cc7eb9b07ad3213169c2dc8127293a5d95b870b7523911289ba8720809809e85be5b8ba1ff4acbd8420ce38d8286781f670ff19517fd48f9c599e329e08fd48d3800131cce5323220b495d982202056d21111816d887bfdcecac530eca3a75d3341a0b101f2541f141cb21c9d65859c5c9f712b8d9062d8affbf8585f80cc244977fb18b86184a0aa0954e638e2091bb91bf7d544bad21567ccad2b2421f26b0360dcfa4bf1e48252e0ae2da91b282176124a13e69a6c4db2ced987ddb120c2963dc024450c646e7816715d36e6e0eaa113ce65b1e5ea111d67fbe00fb2e90256e096b8084462d95acef3a2c7b39a684f6a765ce44414c4b71b7681582d3b60a780e0e6cc871472839c21875d2cbb9f076c3fe0d766cadaef9e2e78767c401cb75f81ec32c27c680be12745501809f44fb330e361b32295c57b36ca4f8d252680c72346c5e4883ae4451fc711a6e0320d4fde21792b724e2dd3361b82f302f82e886e0325b4a86292ce7acfcf7af47732d70d860f91910bc1f177a114139f0365ecac96f3562efdb77c9cc9b58c17d0f28e45cb03b1e0819f83c87c68c4d496514a24f8929fdba3f11b07bed4914fea19ab0aec5ebdbb74e5d66237bf44bff0b0efc3fef15dea5dbdc7594bd4d4a12ca6aa5492c942f9524322becfaa9cd1c80960f7fe1610a7a1370d8cfafb16685a098c616d5fc86d0ba541094d2ffc79db125be2044cdfc80797a210e03d4cd6dcfae8c8959280aaddf0a6ac5b7a9dc8e07eb306dd76bb16fffae872be5036ba882d3bf765c50c2c7c2b9952a5f41ebedf2b3de2675d0f056ba23eaeb71fe12592a8ffb8e65351a70f5a3e6121679dbc1a0295b2d0711874c08f05650982f649144fe351596c710faa4226c2e2100fb7478d048627a2de1d5309329bd9acafc9059d3343420d116e26a323a19a34588b2b6ec75affa31abe1e24b5f05cb2cac53ad70c21128b5ed6b2c1cede9449e1998cb2145e1af606ef4d60d3555f95e3f270066d1d01ba192114bc1c120125b7a769abf62bd4c7a9b9e1d91e0e7b27341c52cea10f7289bbf6c02f2631502a2a0bf0e72ad16860b831624647a3851302863ab9077e926952d302a6d8101472a69019193f15525b8198bed2777d37e42b9fc9cc94bd8a9caaa5b78a340f41590d238ef690e559576f359e2d49e8ff1ab19acd5b5398635cbdbabc1cde4df5d35aad43d01eb7972c8ea26a5bad7f11f9359c9411b0907f76d9d261f6a205fb93f305ec232b704ca9685b42a04c312cd035063f0a474a0c5450c1bfd4783233ab8dc7627c6bf4b0c701a1fd52266ffb5b2b2264bfc20b3315dd3f7c2154cf18d4256fc5ffb4e29e34647370e55736f84278781a931c6ef7c362044078c3d7346e57e97e2fb4fa9ea3a8b2ac9d3927da7e9ac20658f61813932200d62c2a3b3c9802ed8514d5d4fa82b784abb5c2f1e094fe90b0460d6be10ecc13395295354ad045e42b5351da6f406c6bce2784829c8d82b09c4f92029a4356c77fcdcc444661bf53dac428fcec091b2feaa3c2e279458a6b75e332fe7e79942bb9268d786724b56714f5e50a56596145257ffa94fc9dd37d280537aa5b8e3966dc7a0756b5f8e3d8909a443fa5262a2f095cc7af9d92099d11e8b1c07a90f8465401c961a7bd8e985640463ee3319ab95ce26db50b37009a1b44fe90b1edf90cef0456ce9ef8350072e079e51442f06327ff69f146f42af7c16d08009be2870184a1963ae80053640b586500c903f7ff5549251bb0b7071df7171d390445d2f1d8e481ed214b8307cd05636180a0ff6278ab232ca420783f806615143e0842c08912a2234b10fdb91e13f5d679a0eecc090c4d2382ef2025a0df34a24b2bcb9b910bbc41844cab0963812d74df603cdc5e81766e9b8466272a02717b1e17a2bb389ff43970c26be3aa13bc36281e9e8004924b1351efe6c3a3e25d3c4324a3d6c974e089f48dd01070686ca8d858d9ad5dfe801459454435e79ad7165830d5251e478442c456858775e04cabae054f720e4a4b1ef534cc4792c7577c81df1dc3391303dbfe040ca3421f558394f7f1ac49440ead7c9d5bb61add16cc9edf2997c2a614b119be5124a927d3fd2321d5da9f8c60e8111e12e34be1bd1f3528c85b8a4208b9f07bc693ff260f211a12f7dbe25a33842ab8536c8e7d53c283f684c080659e894f23c092c41084792f5c645998b5ec9a0ea240c09085470795cd61896cd3da581125664b07d2bb827278ce036807b303837840efe301b87b11ef423894d46716b43ee0ad0a9d6585374b20035a2c8207a4de9599fa12a3985df2cec2149bff54bea55f0faf953486db20c2f05a1494aca468fc0906ad85ea8ee84948d8edac2da41ef3b31292cbe72919e56e7b826694f0e31c0197c6fee6db081877e6392956c901d95608607f80b83fed0c144810a82521c59b05033dafecd98139dada3d356791b296473c7beaa6a1ed2135f19f39ff9975475bcbd5af18e170222e71621e05c2d570f6420a0e0da9a8fc2a8f488c71b8c1ab42d0f100e5a3a9fc38599483763a847c978ec94a072f190445d7a2a9462708a3c04e783031bdb724265930415022b40954ccdf928f5c33df90ea88798ce1d09ba42dc4db7ac79416626513672a420c92c391188d7e59c9ae48f367614372d850637c8ba698931190094638c83c0b14d7f50a2e300fb7881d41056e570386336564a7feb5d232ec304a7dadc46b1ba15628adb471b3b8c3d0b9f9d1fbb0be185efee1d6c6a81bfebab0d0793b316539e32e3cd74916a401c08db4d0d37ca663515c01d866f2bb483e60816deb868fdb492b234f61e3acabc01bde9771ba655ad42103f1854fb64291dd24caa596d8155bde408659a3742fcd242bf0e2c5008384e191bc70abfb0e7b21937554a4e05cc8e7b7824ce0838b32d60a7ea3ad91c107a046d04353dba1abc1c0c481da3647dfaa25441001ad37276d77f793d51ac76646d625a146d282e2574b98f7089507f877278a22b95c87adf65e04cdfe68bdfa083b50ec5f8be84953abbd3b7b8f2c0e81ec0f3d5ce2c458f4c54dfa4b149d78b3d744559dc91f1a72e5db3b017bd78de85be63f3692595fa11919b13eb4dc52418e7f68418fe72310c280cb9877b0b62754b106a17fc8a8ac63680d632cef1a61747b2bd6a1c3d534f6b871deaeb731edf0a37f9e12209f4c1a813318a4531f737287f9604d492f531f9bc47e15a7e3f62936c1d2ee36637c946d62a7eb9fecd04c628849cac2c725a2230656239fe1b689ede3006e00a277f858e1533a232247406e63dcf31a69af7fd4cd2940b639ccabd5e34de195fcb6893af5b7fb70ae00d47fbe602ae9b0b2cca35f82b8fa67f93011c4a36e3ad27b2e8eb983d942cb4dbf45dc9ae731549b1b41c7168bd62624192b550f27ca47f4be7e5e6fdee2f942e4540eeb4c57752a47717312187fb602bcaacd5627c321a90e5fcdf77ec345a1c6cb14fe2a37172628133eba5068686327080c94bf583201e52a641b9742f36972ffb76be88e6766cc9f50b0cc66c5de8d1ea4a3fe8fadf1c85bec386198562b2229027a9302d24ffa5897b8856d6c90b68c2be4ba822d31825c8da4df4b646249b6392ff7ae5c9ab3577eeba4425d2d7be51d287b8def56d476cca5015db1b9fef4791e6ba060a01d9c82a582f66c166a6d36461fee2fee649703a9274a0d870a7ad20f8e5557e971a74c25b25289076675e7e64cac67be7850bd3bd21175f39803270d54943aaedf6ecd8ec1fe81ab9621e2cf5dcba9d6ceb668d57d09e4bafe8dbefb1dd513081fb3ffb612994d6b5dad10a809b91a88dddc42da2c093534068c2b098db24a23c3ff55b6479217110e6671f615ab6236ac6e9b3f04442daccdcaedaee1b1d55cace972c0d8f9c6063c123fafb657cb9fc2e2a700c55bf08c12a6a7ed553647a66a5998b9850b41e3ff9d97023b1228c9fde9b562e264415b891b94ea7e133666ec288b50ee24d5020c12c9cd239445857585cf6fe5c7486c48a174d4cae27c302ce8a27ffb27061013ceeec921a6c8faafd460d61c69366d4ce2011bbbf0ff1695a2517cbc79526759c326017c823e9ddd548e2bc2adaddefe46524ef06edcd1424f3e0a6bb87588f893c2bbd3d9aa3bbe67e89bdd2b23b20dee73532be600334a99b050878138320c139dad293bfb1f3eb509bd65663ad7a96ee727e8145d5c74394d6078ddc34f224534bcc02ff727c632d5cf5a371b3258999d64cbd7ef051a72f55d298ab5090449ef2e991a4cb83ac11503a87125c183abe89cbc8b776fcdea36ba66f670c449d5219811cef7a886e1e72e508fb0acb55b225c290bb947607563ba78f54238b3771c20253d881d07b2fb134eb7bdea7e131e3c7cbcb1bda0537035809494d8e4dc520beaa142be93d89c25de185d180b5448213015124dd044c6eb5fddf6912fd652a487522e59e62092271428ac272a763d5c00ba8e376025602800153dad4d2ca674a70c14cbccd616e1e6529166a8b8c04cabd63801cb47001b8ea2eaee7e86f9b3b80b2bf5bf809317e16492e3b31e48cdf5b8f2e207880f808e6afc5b93dc5f5bfce319e8da25ac4f8c4a0f74391ac991ce5058c74f38ffc50a24e510708a6e267ba9294164cddcaf0a82480f758c7a6a4194eb953afc7558c461193f0200ebeafe495b3341a0cf38377d2dfe0425db6e1e9871a907c76ed9a29921233bd1231d5ed78a9fd32f23bd745e07967498a472c3a8084f4bebca5bce682910bfb0e440ce7908da436bc018159491809ed5dc7cc74c57054a0469139640538f3795029675cce3241e88c73b1f5278cb712d1ffea748cdeb8ceb0d035404f22e846f8221d391557bb72aa77742c05481a61649d41ce9816a8e5997d81c2b637b6a23dbc8f68482b4518e3c36bb9d43fb0e1599db7abc8693663976403b44c2aa94860e182de384e0d624dff11d3c6f51584f49254a9e2bf6758fcc465969767721b4ef09e1cae6ea30a49489a821e50df43221d2b5432677cb7d0d8a0fb1effd69d254826625b5fc28961efef0e8b566acdf00f7813ab3c6f8ff265436daeba1d3a415e44bc218e93abd180e12364ea87d547a3c76dce746e2f6d41969d1b96eb373f36d4fa39d098af83becbbf3a9e672abbde1372a7b343135283210caf850768a3950921cd5271e73816f9e48d11413cdd8e80968e4ac02f4592b991fd7ddd1e37031d3b516ad9a80f7673369bf08d86e552bde589633edd92eb9a817dad80bf35a8e3589bd3b32013f91785cd053e7664aba60dea7b09fa74ec8d5ba33d0706787a7daf8ae1743e8a7f776d536dab91ea44d393ad72bc7af1723b95e71c05d2f1acd3149bdb29fa04add82132c414ecc0f216885896d18f5940558541ddd49c673d0b821ae944c491d915ecfbb257e21479b3b8218442fe1b49900552051fe513d817d155142211cc9b979780cc490588f51cc7ff206e2128d7dd01ac58e810ee1ea7d2bf0d65f0b7ef4bdda7cd0d4e42be4025bfc551a72312cb8acda643b858cd83dd26a54d2ea49765786cd2475d17d8452e2f95b39c5cfb4338982d234d5985c49a48cd43cb02f654290ff1b058653e4560231184d23d9336728bdc0ca28495796b19f5125fa1739017575e1c83e81c436e15f8b340c119c6bed6eea234e3d5fa12f44af86a500f777e677f0adcc82fe90a883c30d277cabd76f5711916b8174d96a5efeadc4d40a58c967d92aa1f2e781b59d5a9918d7de784c08a9851afcea6862d98a2bd458beac66a4fcb42f92bf303457c8eee094a08a5a7c757494146cf8aa11b8ac6f2bd4420d4076490e2bc4b1b25a19b65bb79e760a97ad29d850f19545cce50eca7b9fd74ebf8409a7ee942f78f0db295dc0c51d2448e32e9db5864eb3a889f11428b45f92130115b36cf4ac9e78788dfae99b20a9d41ab2bab1e86111c9363b4d737e7cb80cc76e881c7c3a1f265ff1dec0ed58bfb46d5f14957f3ec08d1c50e19d8100f54f111866bde52b2c55fa39851bd6584dcc455ce156944b1cfa22ac205c578c4286ea21eb2ddd829c6803a263510e28e8bcf69376d0ca0a0b22c49dbfbfafd122cb4ee6be4d10caeb170e862802146536f9b8f1024da5711305e0686107d8d163ecc5faa2cbeeb79a799d23a84babd299f0c847869ffab3cc171c213199fc1b864330c1675f47dfc8eea1df374487261cedf10e9a23a0cb013fd89edbe8cd1e1f20f7e4c0f74e3fd0db5a4430ab23d0a402593e4001207e216d887dde41f9b740f1ac209b3ea912177ac64725522b0637bc259cfdc1a1609c562ba2f561cfe05f0580d6042a764a4ac24cf4ed79851b9b38850af7e990b903f44025f5b10538d6454b81e074968bcc5e98714e8169c92e491d3c25221c61eb5aa4782fba6f6d099e44a41ad7ec9ea01fb24286854497ff9394f26093c049d522a05b63008c580c96d3a2d4f32c984f52cf1d95fe619f95883ae42506bb953b25de5f7732f10985628fa45a9922b72aedaba09e31a3fadee08f0bfb0c1578bc58915cc7d2fc2d5a264063ec205101061ee68bfb542941e1ea2946b9dce38cd82d34bf8b112a9a1f5edd7f5b3f28e32a78a1b12ea5ad54009376dc031a41a33abffeaa554ac67dab6731042a7d05828fdce864c0dc534606a6799c142c98cf7a89f2180a895d2918abcb2029c1e17e40e5de4cacf1730f06cff37f2a4bbc46b2dfaff21523481df412318615686979e63ed922f1b29ee85481831919a0ab749000f5464c453c176333626291ae6ad2e7032335c03f7af3c468d230b3f535b8c19a561838b22e4d79a2baf400058a10ce64d41783e869614eba3fc6cebae243f20426eeef98fdf4b06cbdcf9c9a3579b9d50b5ee86879ab08e1929068f5eab10d5b6b9fcc05e570803013f29d42a72b1d267a565c8a6a7ba3718917202d768e20e633af6b63a27ec4fe4a4162c4f08154b1e9929e1844f8f705defe80267b24008299cfc1f4a3751a88087df200c5b3eb4c1411ad656c5aab4328a19d761133d9375d702123ac77b36f592264cb50b72d2840a2e949da2407b9d10fa032f21e2259d095917125ead29920a7a4efcb658b24d142f83b32a207a381ccda42b5d28ff72d5c162e5db3f1f6090da386820421a80202096af8f51f9b26d9065ef7956a64bdafd08accfb57b798ab48a45f6369d6ca1290601ec189bf8af07e1aaf84fe46b6e57a25c6cf1a7135aaed5b3b37eb1516321eb482c02c804391ab100030186c8ccb99b1d7753f4405b7fc67789621a5d45bb1d17d8dc6c83b500acf768c54d8d74c5accd89f65e95388ac156e0d0968abbcab89023ea6ece6ab34deec469c1c1cba6441602ffefc0b2419a25e35470edda31dbb35b3fe2e4c6d26ad3c7bfd248fd4398312ac151b91f57269559692ee4001d1a8f06a982044b5ec442de6dcca4294217981873a28b57b314894d8d1b241419db963379c6afeaf8c3613c65639f05cf004a858fb3c9c3b06f964368edf53629a6ae9a3c28ec56133130f66c89264d61c56aa6e695a26454454036ffb3c3fb6b4ca94be7197dd277de8ab4e408d6acb1700af3e7d95bb2b636ceafa1a8f652796d4896fd726c8e5a009d2df7e1344e1b44aef608f8c850aae8dbc19f35930a2e545b8fca7e9ba1625a3a642eca65c857e15c34813c4b999fa1af5d85a1e4155e6697425d8a89164456cf2f96c2e61d59c0d8e39d6da568d9eb38dfa5663e0cdbfeb4ceb4e14349647a26fd9ae55dee007d7f370db90ead7d021a2bffbfac154d2f513abef03d132819be4a72fbb54ca15a27153089912ef7e6bbe1f4bebf3b8b5cc169ffec5d87e8aa59636b13cb82568fceaf8b2c4330a43a88a70c4a55283bbdec65809bbd5b54cdfe5401098fcc01450cb523e4d240429e52521c458a9d5f55e6d1c57c1e06cd2dfe18ff4483f31dfae67d2d78adf691d7eb8ae185b5159ed2856c258a9a1cf2a7cdb8c863ad48976a9175ee9584350f69473471f21ad791cafa83add022be6d89361fc087da8de9944cfc5b6a699bfa3bffe33368e76aa5df50d5c4534f432754ca1f78cd8348a3038fcfc55d70e4ea32c5c213346cff238b5d79f9cf0666264131a8029d41a15cfe90257dc99901a844a286d0e293eba1d3904c07ad7a7b909c847407425f1e1f7e44e84b276ac80ea0337c05114587d1f3379442d536eb2739d765131edc04833b25e2f8569d24ae89afdfc324a4551425b82dd3cbe281f4285d7c29664c34ac3926a44b3e699b05f908fcbff0c2d1b8df3b5ffb17304402773f9b13fb9d5407d1a19400518fdbf6017ae1ad6ed2740182b439f48cb39edfa7c8da5791a33a1bc54eed064c11d83dda945d2d2677100327412c9cf8fa90cc8845a363a4959a2982a1b80eeda960fb233e09e7248087f3c5f9683cae09372b18f91d79124c89c010d1c66864b4fcd3e8ad9e8d12ebff420cd69c5f01a3522a7cbfee89d22c2fb28544045bd2ea82e97ffda2236f48b50a7e44efb089d92e16a580c792f9fdc1aff3a1a86d746a7205ecf39ea175c3b783c559268fffc7e2a77a8e88fe899584d7eefaab10c9eebbee85cffd213cd4f01c5cee4d92ba727d2bed35c4044029e5e923f88c491ec10a3ebbca8c6a834bc088e3084f3c9ae8d41e52e359578792f713bb96d6e70a0bfc06e99a0594ed4f0c122ccf5cd68a70542e1061d26ca81e04fbaea4d2c79239b4f859a0edce10a4c09fa15bb1ca0a1b5fd2a7d0b4ecac96d70428063d606f8065e856aac692e1727f7de5aa39d8fb754e59b9fd78fd11ed0d6044d59223d5435845d884fa9343bec8c3ce2e1e72527fa9820a37091fc33c6a12c5efd3e6313b0d0e26437010f2dbb4c951a17d2c5779d0548baef086b1f3be1a0f9f8e896eb0998c991d2361114be5694d149c234591f5a705433b37d58c5e0f0ee23e3ebdd6c1beb9c2289996fe31e7949ee5cce9d8ffd03dda132ece87c75c1867da9b18ed0c6997a96b8e663f7978b89df4dde0204955815ec1d8b693e1daf69e9f0eabd58e5b538d91e63b2c31e58c5893c501664f70d9df2c8d67cbbe0670ede901d3eb3bd26921200e2f71d482ec203180069bca3b40aa0f53d4629a6a347a49ed9c02ad9db4b8292a827c9d9acf42704d535dfda5e334ca7ff6b4eaf60377e06ce372e7ccfe368c3fbd2ae8822c5ba27783fd703922f7bf07405c3f8822d3e9512a03ed3f427104660fcb83d9c5904143f9b4c8bb0c52a114cd0e6bbe8dccc2ac7e813e3af472bc07ddd0edae293fa018b2915e40c322ee2813933ae5901b384bf3393004af8f2a7b5e0080ba0eeeb1d6eaf29ac5054e17ba21a9043021a841ae1afa6785503666cf28a486cd2c85a32b6e834590f1d60d7cd674192a6094909967de51430fdb8952250f549d38c3871ab304ae20e076bfa9c919a779a9c86892e6be878aea4fe9814f72c846e00f26dcc3d9b772699af5648d05d4917573f3a4a969ac1ab3acc6945aa6e3b66ca4205040b8c9656864676942704b17b31e0123deb8b00b33f178d392701fb523ab112ca0c7b90357816b3de94c8fd686c47af241c55158cea5761b1b7f7cc519099d22c1baa4ac15a292b4e9854bb2e4ee49e3c85e03559cfbf3f5ab4c16444eb44975bf4f979cfc8300c84be58339d3079252211c9d50cf0e96a94e3163126e83fc3772c93560da9bc484a7dca509e22847e497da7ba1daf270fc141cc116f7c39764031879238e3ce000fe27451792a700058369f15ed65a898a30bf0a36e5ad7b70c3962da5b4b51d57e9d4f51195ca72193e21fb445e396d821c814c103135479185bcc59ca9fad3c9447d86ca6a1e618eca7e5a0bee5893903357e3f45eba065239e14912c831e78d5cb014a31c7d0d03aff14353b28ddf329d2531263e2b753fe0af3076562eeda389fa2730aa88862f6e56cb95674c6eda599799f22ae062a9223657babf4193910874accf235e7c03d27fd65def47b29dd8cd257fcec14888c70cd85d80d960213fcc3c2ddf0a8dce0feea54c9d52f1dc6ebcceb9b2606cb779cb88f0934c472d72cffad83db3fed5689b7b46a9550b3a544a204fa9e8579105dd7210231bd619cf804907be102a1e4f4a5b82852b32bca669f148adcf14b847ac93bfe0a5a4b0ca168f250b2bbb0fc824404652e1abf6ac94b4f040e22e51d1ca909a40b4f8aaf1c51cbe9d8946da3d30ebc29c59114fb994db7a21a8b57a86023602a5eedbb28d039f3fe22c603cb252511f161de871b925b5925cafd157c828368200ea9222fa7cc4135302317f56838e8897626816263b2a3e2298214a2c205d8c05ac42c5bffdb5baea6edd923e7b409eda31371f7430ddef9769111bce9ea01d243b7eefc8bfc8ef4b0b4c0142b806bdfdd68a32398455d6e3df90c99857057dfdeecfeeccbe3c7284e45c00edec2700ed798e2367f5edbe73471374ef8aaad32c250ab561260a974836cd9deee2b9016d8b2fb46b98a16b62c072d606c8d2c2ded851d530cbf36da849a890d7c193665b63ee4dc23760e0a57662aa3a5489c49d854026aa5add61865f26f0a1367c1fe8aa33a39a06b203ce6b4597b6b575f486428c06a49a683780accf08fbc3eddc1380a9529d54cbc1758e5902520ec99646d4444cce6c7821663bba2ba42cd473986d0dddbfd850056fa54016ae3d7d0cc0875de2bda158f9a2658001b02f8e2c2e0f62f55b587126a2810bc85d0bd08d5cbd27cd86a4ddc88086a363cd911eaf57baf255814a7043016c9a87ecea68cc7b06dd9f5e86761b1d25f4475ff469961feb91e280cbb4529c9534b7a84cb176d097ff8015a24cb184144009838cb06672c83d7d799de0880408ba6f2ca231c2fa2d7dac873672d9df607e83dd49cb5709550301df2aaaf8ed32b4d61abf03fe0097203fd43d307878cf0ae34522877ce16750be56024ae715f0cc54ce8b00b2f0fcc1a5e61bd17cf5dc1756a378670f6a929141d4be4f01f481e9635973fa67b9dfdb20024a904576d5f92026ff69e613e1b246cfbf238d3486d78aed60cd068fe47a0efd77f97b53cbff969c52b3d4a9ccc3c371b3d6a069f9bd44edb8667c708f43dca2932cb237372d6acb0e3c3ee061d7b8e3424aeda1d958fcd581c20245972988a59d7c153f8268c5e784cb54a126c523816a4c82f93852014a86666ce0f3612d539038a68b620f1942b2573f99207f5334206d0dae8cd6de1a4440b3df28c3486fa1ebc163d522aa1747533edf5bd76b0d0c575f0188d5a7101cfc3112e03c4ae820dd334d7628bc2d7b84ebcc6e32991985cc2ca6b87a136468e83534a4435864080f755c5cd862a8d55c64ca4caf5d95c70789c3543c3dc04c397394529d7ea49b7ca470eb7194041344e0a4bd7a1c557c63d58f486644ff0c926cc8674271a7710a023d95f55d4294ea08cbb6ab552f4dac7bad284de16f009690a7071e7c2243872fa9f1d2c64270211b4c6f6e0dd438986a51e142cca1f3005baa8f0c887ff891add8cd61b095575990fdd5b4c92a8c30c26814352da71fe3414e3c2c86c37312d06f162da0cc162513fb05613b90f4283b18d756161e270ec6ca89c8e606c08541a6a6ca25007020840aba2c3e4b232163608b9494ebc87fed7d107ac8df67ab216e58c0833e3ffa9cecf0effb74004b8bd1d9420dcf006fcd6092c945c0d7a3229b47027e50ebd542389dd259f12c5fa47f70848e85acd7f2a05176d749bf1bbe03a1ece6f5c202c4e0cf6f6d78842e698130a205917d317b95820e634e721c281424db0e1f1a98a57dccf6bea6d7ddb28fe7f1c03c5a3283cfc202a1cf73a71b7617b9b82a4eb6c28fd50e41cada0a335388884aa13e53a5ac2c84fa7bcf5e029182b9c4ce503383b0da3990d7092d78fb864187814c2dc55aba974a87d05827e8dd9d128d6d47dda05e3d41f81d9e616993fd96295ee45c73487fe8c8a04618ff4471af21ea7c3c26a563416c614c8fef6b0afe11ad31c274b4d7404df961c4e938652f638d6422930fb9ae1c06ef14ea7e43a015e3f1b411f2711c4ce45f09514a96b471029a019acbbe75b0ed07551a7b8ee26145f94fba0e5446817c7bb67e9ae23280f2d2073798c1e54ef785496328639022482d27191d1c7bbb80a6c6853c84930036a4e1d163eb840d75552596ad8a42ea1ac7649d998efdeef51298c064a312ad602598322122636d799bc76b534356a68209a3aec6e5135366addd7580f873b46d07b22143a53aa3a0b3e3265a7994ce6a39788d7009c4b89f1897b6865aa21946db03d0be600d985a10ebdae55e12d03c01b3549bb2ed5108d652c290d363bb89208ac6c04c8e1e37d085ea165d8c4714b4891e261301b07274ca3be48fa0fe37fb452a4a3c39ee1537b2ca78fa023b9448fbfbabeb893fbca178186cdb873d4cc0832aab857aaef5d6d906a54f27ad6643c1929d708fce2b201528bef3ea00f105772ae596ea88fa6ef057346d5f053c1e088290e3203f620d09a26fb33cd41d534611af4eec2621d3badb026206b6a93ccc3d42fa7bf47514acca459c631d09cefa3675f880e8979d39afb61b897c3b5d9c689a262aa82684cf87802cb8e6c4a8a9a5a7ce4282d6f3a594585ad17c3b029e74300549b1117630922cd51dcc17edd6f511233cafe4baa59fb355d836f3b7d3a8dda010df47e1567a99a47060aed6679f66814a5c88c63c270c6f9f7a71197032b4b39ac38401bcf79f9ee78ed1620f6549fd20988e2c6a82dae33e6a18547f187133c65462774de04dc9f966cd044b0c75457eb2d63a53d91a78f493854d4f101acd05b24dd2e89c59dd5013c48b49164f9f5fc32b22ddc3374f9e8b47db0c952401e4e61561583a376c869d25170c48f565bc7da8c1eae4520c8a35eb8b6e1701763f130b3633fa8141945af74d65345bcbaa018b2a00a831e643808f6e0b1d58d28cecb10bb3280958a2e10945775afa3d6809ad037332fb181016b983d828b0dc1976a91f2b7eaddae3e432f29fd7186f771de73ec7f369a31d38c9e354bac4e1cfb6df99ccf1c621639e8848e70f567b24c43a2fbc85f8e9a6a97f65e1da073416314d0bdd36eb3c0be631b9f4f49014446b2178b37b433cf67476a2815f018d47e0510e0f0ff48654920a0441bd62e5980172e6a6c82556c793d9218aae1d0176111a3f0620174490826399ab22e0ecd7c235450764468c987b2ccb57eab1eea2151298c56abdec17f15e552555a32cc3d6ffad980e49c15830690a327012c4d238abccffe0bd27cd413b839fbafbfae2db980dfdd8d6d782317d01000de686a7452b20d6aa17ae7a924f033778034fa6001e8a3434b273eb2cc8bf2c82e7d4ffdce358e9485b70ecabd34ff99fe501ee84bb07e0795369d8cc171c5155f7f26cde0a4550f2db425c64ec5b01cd000d27f3911d369eb6d9e4c2a0bd6987151772a349e446aa1d90cc3f266c7faa09f69dfe1b46f356882f3ed5a1fc01f18871a0c82d465721990904222227420f0ff661aa36b69f4519da4c8a8cbfb3751863304466e18a8b57837b63a209916ec9acb75c406248f267cd5d6b0e8ff657322b3d0e6cf2e773edbd222262fc35579d1b2be4c39601ac9f6953bf7d834eadea432c62b3183cea983aedce566997f552d0d814714a18f04390a011e9d0c94481977462ecdfcd9f6417aa74f537b5b79795a70e01374062e97f5f58abcba3478322ba5fcb32268699d6d560f7aac77c9b5a27e54277a069515abb52cca87fc4b578a6c5b3279cdc4c6eec23fef324ba88b7ca08615a77f787b262027e90edbaaf2ead1450b4596348d3be0c2c9631d9b920656e55fc2135f93771651fc3d7e011eb726293789b1916871f2a614c39e15121bbd840875a9312d82967952b210aef6a4e593537a463e96f836f142261bbb6ad5f0c0b9f089225cbbd3f5b5174ac1166f84781109278661586b3f234bcfe18bc747d1e7719aed93dfd25b590b706348e6ded5018192b7883d0a4fc5df72517defc0a8d69d4e73c469f0cbe00cc36c0873a328199ae0632f197284b2b5aed7fa8db1a8d366efab377f361909919f74aab29600ba3a530db4a07423d4aa46b30eece3d12b22469ee7fc10005114335945c7d91e6236eb5660e7b10604f80276a0c3f24626f24a7c103361fd88dfaed2cc271387394b46dd02c6b0b4c7fa980278c4d82d2b6f918ebe0716d263d6ea7088ed69781fb5c3156fcc9028ee21da195f8599d55e31f6b1565fba714a9fea6edc45e243ff162531a9c22543e12086a80c0e5ec8e6ddd99ea25aaf94ae6cf161383db8b9b60c4e13546c3ae31313a3f006b1b444ea0b6b4bf88d3bd42369b5a279608b03db0c72b2ce3704c1b68888a3f8faa1b09d681f4ad9e9d2c9adb2089d85eea3cc887ccf90008f428e92eb71507b932e41536157e18bd9caf53ff0aab2fb2131ebc746c21e472531b1400f94a44d6031a6e8f7179f90eaf427a7379234103d933a1e774b9e267992df1070e93b9a614096ba45c39c4eca4cb2ddb574dcd7b70c0b5f1a4f8e697a13c7d8839c2194fb2caadf3a020906a73e76b72e8a6a00251501c4288ca53aa8d3f6daad64b9ece919809965eeac8d8c47920be14a54a5adceaec32ae0cd1a3a1d8820f29da115d5d06029ca3e72c0836ad45324bdc7ca6b0b93eadea826266566dcfaf64057ab2922474e97180a2ae2c2e39c983452ba434c02393ca66cf8c30318bc1814997d4cabfa0085eb2c9227ac09d24a644c912ec88fe996a795b0989343411b64b65207221f1319516bb690250ede80bbae74760c1428a5b8e7599395038959b90d6d3a6e662b44f9cf3e1f913335ba1ff79f37ca4771e6073cb76a38eb25cf2230c5b70f6e6a0af2ed83296e231b89ac46f9fdbf592e77e2579438526601faba4145785d2df79dae498f673ddf618e6b9b915071c4734dbea0b845a908878435a78b6575293ca2e92b89a2ea537ec55fd307fadf55838ef11647bb9387b5ca2b5e9af1a7eb392a5a5200ebb34fa2254a80b37a471f11991ab5c3d27e8aa1056e8a42b7a51c53eef6f594529b8b2c0666cb095f8658019b11b8eaa32a0e32918d894a313ffb36ef649b9fbdb3fe1758828220ee646f0255478f19a63de51f1da0f78d89ad0ecc3e9583bfbbbbcc62bf2a1b60296f739d6412fcceed519cda1b85c2451f60447d1cf63ad82f38377875fa231333e71d714019a9a6e1d841d29020103cd15ca9bfd89a7c01af21581ea127fb91dcfd89182626d57872f64718ee937bc7726742ef86db137abfba37a1773b6ea69edbe5e3a6dd4c7bf67d7f2a49a3a21d98e2736b92724d3fb021651d45ad6c9effd94e543942c1fe8cfb329a7ada448dccb818b5781a6e0312641d322a9d9b26518314a2464756692c46bd5c452b8db14ffd3d12c89dd9881970a2d41660c4a1a4886a8673adaac7a3e0974b63303359e5c2e9030eaaef74f0169c44b04ff3d533ee0304c75c1d77e5a3256d6c1c565c92e8b5b932c537b33e12d13239e9320d1ecff82e5e876a9719c8e337c122078c653e5422985d4ccc3299fc528ca5037a08c7ea079bc0a8c163273ed120b463f24e528a1117429ced9078d638e14723024688ede433f081d7cb23a04f71625b5d804bfb9ca2f9b7df2c66dfb01398a6cfc71f93804ffdc5d0d5d99e7cccfa71c38b0202a9025247f7753101ec819035f189ba620da28e12dd9b9430e0903281b8eb807d60a1220b0097dbe7db5a15a6b97eeb17ce6cad4271cd9fa164590377e978d9063e251b4dbbf8b41927e36f756a002d718ed44ed72e9d2078fa0bea808c291085fe851c3c4de675cb54e61aabffbac6afcacf8488673e25b35dd6527ed67cb3464bd1ba1f441203c753b32d4ae5bee8fa4dd9357c58f0b585c7e5b9029c4652e5a3bf926221c2d914f56b8a6e328c4e4bc77c649343e33108869922d49bd293401c7661fccc5f176d3759508fe44de878115a88cd3bc16eef8e30ea54997bdd214867ca03a7130a57736d6b96bacf9291fa2f18f4e26640c707a583160767c085c5bcbc3667f4083fc07c66764c499656d94f7006be51a905416e5d0bf1059cd436d57f51237fd0b55386605c310f90815930d216b7bf353f431d356485a3a10098e10c1215e4e203176843cd9c364ef6608bb50f1192391e70158254acd634244944d91edd45ba7d1be3770972174d3406c49d015af6af2c3b410d1d486f9dbcf2aa7ea5c7fc708c83113b7bfa9d953b3c4ba1409765e94c95f10bd6ac98585f92df2bc5875eaeb790b3fc5698aed3889fb9342e8c47148fa10842043d4da79e4f512e12e75285ab0ce4c1b17fe35dac6d1f7019923490337cbf06f2c352c382e8b2e3e0fd1db6e288063b7ef07497213c1c5a8e77dcb3348849f3e98e49476594c59fa36cfd26fc6a2eb70227735474c9e61f110539103ac61e6561e574e35ad6f160be2d0282046189efa677e6df09f310a5631c47c48ba2c2c1d5732c5b826c13fb2873f26be218bf7c8fa6c2d6c5877819d9ea43821e19abf7d3ead7ee6c828ae283cfd113c6530c73561f89b62f60b7fdbe287ce15bc9a0f511ca83accf4d3df2324af7b8af7a7f939c5b6c27849471917318a96dd047bfd058870be396107b359c2559dce021bcd1b84ac4926479b8fb802442402641853d340055ac906b6ce500be39f5db1be3eb8d815f326115c5d8195303919a989098ab8a1d1582d50c0300ea283d491d11f3887c87dc769ad7756af07108f4753da8ae031ac105eea92603225d12a61de1318cb2237f579885c318174c63782e3487b19581c73d40c7359e17109a733950023c8a185527ea7ad46d6adc52189c7a2627dae881f5a030dfc0bdb1f3c43464ce46bcc1a829aabf5b7de25e5c9b8adf1f21b15282b71e4430d23ce3e8d0e2a2bf100f720c4db086b0901b0a19c604550a795e6f8b70472e0b9663fa3feb198a13c5feb0a2952e3b5cf05e6c285b4286619d7abdc3a7dbf0cfc46286ddf6b1e88dd349d80f35000f81719fd1d14262e48bd2508615d78ac1ea247e7bfd49a501940caf5ee0c2e12341b46a1e7515307b05d9d09923693215ce29a3b0083706160a9c9080fdadb5f3509c92ea6d4c159af7829b9414b10ebc648a4ed142ecd5fbd93190fc16c9547ff925875b5841ecc02e3dd9bdeaab764978fea050b91bc19adb1728e1e0d3e02deebb3c7bde3433678982a5a65baa937c7f2c6e775678bb966f1dc55b065c53da4974d51edbc61913e8d3dc721ba30058cdde041c71233bfa9aa820c47627f138b1338cededaa0a4e97df91442fc67ef37fa06d09a610ba5fb3972c8dbe1bf20449e299096d1666ec96818a0a6e1445cbe135c665a5c364226c64e0ee287a82db657737b9b316d9e9fe485011e5fecea91ea6eee49bd79264ea0ef3962bd0d48d8f9d7731f88293bfa3d183c4165903fb1396f4ef39385039a2d6cdb34680ac216d5689e55db67e5be693e1676871876f272e497053983890f693d443dbaf794e821ba11b70313d4551ea06faeca1d10e2ed89f4e2701276e7f59b240d872612efaabee24118d99e99bfe823e13566f388085b3075aef370849fa59aaf24c8bd10c3984ee502fed0e547895aea4169e4a612ee63764f2691a6b0277a1473fa791fe1e1e40757f35179c768dc72548fa62e3080e0c0ed7240298f432f2c016bd2221a2f610e785bb28b012c0db61bc0a502d22b673e83533ccf763e41f32f2fd33c03c4a74bb8c3219713c5a66868eba4a506427aaa5a0a7830a53df036844dd568c0ab6e31d1bdb1c7f64ced6114258827de9a788481d8c64372c78af165b8e5aa2357d534acc3417c67ebcbcae946fc38e0840421d5e3a5bd79540f100ea437388d6cd15b80671943c5a0e039c9dab376cfae58532a96550580371095402583570073f3f559215cfb7524f73a206f28d6d29f6e3f032f9274bd1363b43c35b59f715403c8e9c5ee08ee72aff3b102a39cf49a06a7993bb825d94e0693f33e8d943d1138fcdba2a6f532d6d1e8b02579ef35ec28e2798e08f60f8c21a6331eaf32bb01b9e6199631b93d10324cc5ddc66f93627f0d1aa6d29061b8795b16ef4c1648660305f9fa204dd2004c0e5527c92fae42992d2f5154b7e18ba083d23bef6549f4ddeb18892b0a8cdfbc62b96f8605cdb903d80721c903661d85eaccdc76ac0fef14d815b6d50a232ed521ac6f4309b00d4923b7ef89c2e885da2a5cd248287a0f2bd18363b20df36ec22502f0c29145fe76ed61a6c1953495cac9d8162873c45abfffc71f697850d132e521cf764a4169e3f6bf6f1580a007172968e078876c9946bd9627bbf6099a7e941b478f0f5d3a42479a48f5d049d4041f8ec40d47745bb2ea6827c158bb8bfbb2ddadef3f0665a564b4a669ee3d135459deca1db706c27bd5afccd5a48a8974024c5a7f54548f424d90136d23a259380a3bf7b743353d0d3dcd6d11a7e2c8b44bc2f2d9b70ee07624bdd848957689f098b012d1c28336f16e9a478fa90d86d907301e1ee5a745dc3fd4b52929a4a87b92e54746e6e2283aba4e466ce14e41a81e695c5dacbeb77cd34646f934a25d4fc1df28cfb55cabfce63154df37c5e1089b24127ede4891364fcf0368eb4ef61fd4ca9c690fada14d9bf145f4b2e140c5acf4ca6ac701a1559bd603b6f40f4eb9993c1508b083b0666746978ec2e5e278d48d974fbc96834ea6a63e143151136c4e3ce85acf03459681915f184bcfcedb7302a50c271791b8f83615fcbc3891e569f9afab4b57c485f608492933364636fc83435658cb00c7d42467b0953d68d662f5d02d265ef53d07e170e5c6c544fd468e648d4f2f93f88fceccac26b19902eedc440ac42b2c02ba87d0e179614e38146605028345c04c009db0a3deb2c0b0b5f085ec854c5e960e2c4e84d909f41d66caab396227c69f613468d1ce307eb7305ff0feb4fc6954f31029bcff2d114eaecd00d317362835ec8b95a0c5fbcc96553f92f4184560b57c146baa8088b4f713fcf759bfe69021a3fc84458951e0db5ace810396d8b15370b9013c296d0e8b729be1bfff01ded32304844727999f074db7e92d6723cecae3435d80b1d94dead80ff5aab02d6b7c4ebee8266314bdd2225b89ae082aeec64ea3e98f009f470d13e0fa98614026d3676c3f4061111b5c40af3a7fbe3af42b2417daa13706027e1d753cd81999e8f85296740c89ae050d62f617f63455bd4d538c358946327c6a3b0db9a8cfa453d2421ed614d5777da31dba60109e798f2842c4c1fe580c51dfe31745fbedaadb61a86ba57e74d38c44f66ba687f9c22812231326f4da309d8a634634562db1f915c3710cfefc231dd0246632bfcec6a2c6c5102e68f0ecdb8d52c36dd5795abe26082707663deab46d7a8142d883d6e661bbea3b05dbbf06f41ec635c080c9997427e2b7e456ea03c9526b5626221677628b1a63e1a77dce75f890dd6b9132e7cb5c59dec530b8475ea3516e240149ca79b1b14c767cfb0fc121b9d71b87e09027d56d096f51aad1374b42bb4b4bd4e7a7802d398c6ed577f6d307c6542654dfdbfd646343c12e65dc7a4a920caaf61825a932f8a1f20f2ae636d0ec3b43e956ebf39721fe9d3b02f3c84f0c33dcc9597faf9e08a9890436dac34e07fa2bc55b523d05859352e9c3fd5f5a63c6460127e2f4bfaef176d65bea61e48a667714ee7c2e709f377501378e590978bf2d71a52c8487edd1a392e9fdc61cea0d4056db0bec435afd2435c5e90cd4660fa71c4d442c5e57e3d8e2078dee076bc9f6e26a73b82a193c5740205224b04549807f0c022c5ff4d93cd77aeb7ebd51ad95aa06974dcabc5836a5c8b3313371de212f81aa9157a7d73195c1fdb8d412c407284b7bcff11f72381de4e9382f9aa7ac5fa7b016345175f74b0ff78571b7ed081677f897022059d302f391638f31c79bda8886dec9103d98d1903eabd248ab8ab3ea2e40c058bb0c92b8b4a1d1285b76c336d53b826ded3e9bf561e1e66ff3b9ee295d6af2dd1bce10dccd8e9114117fd040827ce16f906fc728200c1ab56531a6ab5747963ccfb0c3c67e0051eddf1dc1aeabf74749485684ee34e0c847bea22a205e1e58e12e75142c308169d90860c9f2d0b22c4636cf3bf568fa72ab67bd79abf83bdf4ae229105f1fbb940c6da199f5231c641b67afd15fcb276b75b070e7fe54c26b405ab8aad291520939e3899706a82a3ae288d6c2aea79f9e45eb1e2b10bb0283f04f6d741ed72967e7557c8df384a38ddca61c1507d5a895f0d3bcf5ade086e19010dbbc9f5c84812fd09e80e609f336e51a24549500653650cf0de222fb4281103836c174c902164866d16558df96efeadf60db59190f71b7bc8c544bc8bc601f69d14de1d58609e6e6b82b229b8c3fdbb62e3c3421817101af5052cdf69ed049f28915c007866f299cd0c0fee8c4cb634d1ff1fef707740aa3d09205e83087f0c89cb1d18dac1b830af843036617c3268da5134f04a62e10ce741a24997e569662aa212132758e6aee5f3b60a5b6d245c42bce3e44c48fa7bdb2004d2cdf372713523fec3c04d40255d605a1307fba9889aa4ce29a88deacd8d9170309b20672a6b5414716c436164a4b8941b210edbc3279fc42afe2749a8b66e906cf026874504a6220a672247f0335554103627bff02ea8801995289086a4b6a03811047b0994282d8c12d7b6034351a1343f08b461ec10e8a7ac4a113de8c5288208d2ffe29e1347487f9796aba0d228eeaa3df359d2f795fdd3839b1e9ee69fa58856364287ef3bd263167e616c211b22f4114a62c4c01d89905a14aa15c0b210e05bce37d0fb6d04355cb1bc54b159f8ec096554e5b38131bcdac007eb31c29d5d1dc0010e74562a92011404234c3b5bf592a41abb78632a497b843a5f3c6086eedf6e2c7586ea89dd26f7b03ea4689dddd6dd9cb037b6eccd1a792a0768742891a6b5f08127bc9774367b2ccb3a714c8b6d033c9d95ee12746bc2d0070006d520b9813f3ae59c54f91f76fe49160a08c883600d78d924fb33d254065b816d715ebc72f77f4055648f7fa8feb74149804f19f12265c69b910b5a569ac6f88b4b48706242c93e42fd2b7b2b62431149df7eaab1353349f37bd8e4ab97d21013da994f15739c3f38ffe08a313dc8d05a8f11eb6586ccf2ab4e3e8a11b7522c7a28e51fb7cd71cf5239484e85b6b7485e74e3e3466e653b6502ebaa9b0a36c295a4fd1d1abf15ed4a869587e7291d35bd18c2be4ac1a9526e2d8cb890a24457427eaa0f77323299251279f95cc8a7329c116011168e1f1f49ced1a1f12b4300dd332065495be26bea86c9b5838a34a26720c66654c2cd0809601b81e95d86be5da80352b75a8adb36de04a0732344406c617110a1d14008603794e721a44c13b7b9fac111745f44a028bcce7222082af67464591ae7145ca7eafa68fd264289b53800ef83fffd6408003122e7f9f98ea5c12f1271540c17dd089c57a71044809bdc4fba09275baf5f560311dae84c377f2d70f691ae2cdec39f16c8303873344825efcfbc9055c590e87f7df1b809777d001441650f7813b0dc1be16e51ef2d2c3b8286cc75591385991bcaccd2e86135e777bca2c8d6521e7c99eb552dcca7e9a0f3e3c075f3b5cb56d7e96e1b5911a2fa5682ab5ce8aa9ab0b9a1b25bbbc5906eac2cf71c8690f8f8c38e5a82ed608f0edcc326099bbfcbdbaa6a5f61077ba2c54d7c4a7ee1cde327141fc788246c14df4b9c964c764d5fbfa411d418cf22c7a9076fce1bc6db0e8305f3fdf2444b24537274d98747075e490629b41ae204870d6f8d2842a19f729e2cc91fb013c41dd34e8335e0e64c4d43ae35e4d0999c02571cda5b47a039755324f78493e2f0fa562fd34cb1eeef761aaeb0708e1a8333a2984ae184243a2439cdf520f9a7bbf04debd212dc4538610d8ee735cefa7f23664640f3079a06f049c0914ebd43e07ca9639fd6df0316da850b61971829c417ec38aff3233db4885f07ad31d78da52326a3c26aedad64ddde6fcd5cc24dd4390e7ec8586382566ddc87b2006c251ecdd097c8da2161a1d67aa01500da099ffe282944d02f52ea18c40760b248448a4f2cb7440961108ac479846af7a38a434669e813ae840c13427ecbd4207286ad72b407ffc9c5cc272f23b3d85e4ca7009c7e0471e522ce60ec8b1e694d5fbc551b3340802a2a66005db83f9f7fa100b1c1ad5180d75e36f914038f515f2bcceefd5e61893a210a17c88e200a5da7a00489fde1b77e890ff7843ab7e1ba7fee54abfd9e277850a6c1f93e40e617da8cfa1725aa2220e7d6d694b0b6a6f8f25faea0c453900a063001cab37a92d65f3fc114f73bba1824dbc95e883058b5d3f5f85fc9af54522be39c1aeebfaf80081e26d44830e9b7935199306a150db0381d7d41df297ddfc9b60ad2cb81c286c96b2cf7e095a38b573b149762524d2fca577f562f8cd1014cab992b0efe04299a933502493b08d2d61130ba2e8d8de180c95477e3b27d083a771fea74c58fb5bb7c9b6f6de34edbb4ba4757ae5c2b7d34c877592b1e7d3eff142866f32a51680486e2efb4fb8fd50654df11942c9332b6525c69f9759baaf2c2d1d9d0e9b65683db45691b30d9229ede40f145ee641174be9b14ad87a21c0fcda2eacda3206c3e77c0d0f69d5100585d39cf3f184a9f2ae229d1ace60d0ee5fd8e919e1b4a1f2d8f8e25e219998f66a7f36d702ffc2b26d2f60af65ce5367a385b603be7567073310bad2cb0e376b7b52de0f3a58cf93d40ccff941fbd80ecb72445ac178338a4316f98e353192e95d26f262012554dfe17f4936483e3653efb1bba6c0598d7fd411aa4da2e591dbbcc2f2efdeb7393830e05925ec54d86e2ce41ba155626c151790c07f52b9bfdc9d93e68f8d66f6499b75242bbceaedc3bdf2c3c2f8236aa9292452d82f5b2a197b6c4dc8446f25341d856e65654f2851edddbf05c495bc21d222bd2e46a3791dd1c8f031ffa6dc76758e836ffbfee88939e034dd1dd6a33b56c3c8631717b6836571cee02675e32407962dd165344a1b65d8b044f3410312f4b537ba5a0a7a0a1b25fc186b965b43d3d2b42a49c48d08d2f81f825e23796c16b84c7950a35dd528f97332cdfe2406f10e4f3b092a7d67778eb30627295732a28b9213556a99967d42b2ab5cf1d6d5e6b1fa3090ad152c6379dc5fb78ad0ce485386e0f6d2eddef02f9769d6b494c67eb0153ad73e4033a8e3d39a4e4c90240ee8e2f72c4126a351ce4c2c4b53860ce872817600d829707eccd63d18e093f583ceb846ac5e5043d5a086b0893c36eeb3c5c7bb8b5f870bf3d5ba5645e3aff2e0eabd9af8ac5d6fb8bce1dbde48c285ec58c07de2db5a4d888ad929f658a44edb06700464461f8be08d8d4d168d7aac2458915a9434c57e208c6a12a1ca84d4f2dad888b42aedce709d90490f588ae8c65cdebba69b075289a9fd64617a6c69634b19a5da399cb6b49538c0b70a19366577655e4e8f7bfbab696264d3ce388e84c11310bbe0bee5833a01523c716551e9d7265cedf2241c0fd2b4b601f35cb63eedd7452621c6d0bf4974b794be9cbce2a7baf51e9a9e55e51ca50aedcef34723801a3154d4d99d7df6732c52a78c78dd56c2e4a01a9acce77d6da88cf041b601c296b54458b3fa98909a1ac7f9536aaf4db3a9699d21885ab9e9123560327e7768f43d400bcfdde163e4114b8e16be4136f36cdbf3c0cf8f3211f9f186b8b544922c5f3f15a4b092805f8b5f13c65c61c6018223db7532aed7e06ea8658e91a8da703b08f729bf2b4da0d4b666ab95c00ec7e4e7910494ff0db011444216a8559b75b3662a7da2ddd1ce8390cbcb4e4d572dc34cdb0f00fde5e9f442b962b224fbfa85c3f9287a072c9b3261c188475488f86fa23b0c7b021f010cf19b64b3e86dc936e8cde07bfe3ec7e64f751d33e6293ae409425254214cf78665bbfdd7443bdadeb7c408712c79892778785bc7df5629cf2a292a719ae55109ba7aa2ea5529f328696424db3c361fa1669c0328b25a552532a07a4589e237c9b218dc1430591cd065c211f9827f467b42175d7df2d53315092316ed7c0e1e087dd08a5e0cea2df1d81c8232d5f6964d568244f5d650f674488b19a5302b8bfa1d2f17a4a859eff8c593e1309006a57477b88abd1450f12829fb0231e7484b8d26c93c6a5e9ceb094b4f4d2705b6984282f2dc6b5f4c013e9c4aabd1c03a9a69c63230330a6b4acc8024812f913e0633fc3eb910ee969b8aa6e29a6d340ac088af17c2766d288fd52babff777e088912a98bbaf4bb7d06b78e507810ff72f5f21060326ea6837274ac087bbcd822b0274ff92efa2bb4b5f7c8620bb1ecfd793adcd13e7236ff7158140d75c9f4a86fa78ca6be24a22c16ddd31b780e76894b8482434b95a9aea7ee04249648c396aa99e3b6b13e258fd098cb00ab1bf475d87c8aa5eb0413ad04b43d32a37b0c1812357bf500875c45e431b0b320bb00b2f204c847d5e108c520fd15340c2e698d1d1468a8a3b8fc1b586790885a13614123ad95df07db2ea87c8977f623446266513a1b268b3d34a3ba4e318daec2c9586f3e6056687261d08632c05a1cb80a76f985005319a7e1d268e87658e56fed4646231ae8ec8a3ccc31cd98b1a05ccb8da028e13c7f2f8a574ef90dda7f67d9b86dc8730cca0eb9a5cad46b8ae53559907da76a396fe71df435dc3af88a3177c6b5a06b0b7a8be4468a83ac462cbe3371c89d69866be77da51412a17d0cd321cebf594e6fa285de6c3446b58a069f57de369265f946c05f5eab4ede65ff64711a3a3174240a0b783eb7ed0eb0eeba91946b5be44d9e668513106e4c980e5a09d6c4a8bf363011c592fc3429251795dc24ed554041eebff29e9de3191791f3ab311b0389170e42b3bb1f71c7eb1f3432b0bbd7dc121819b5a810788f9f83b6bcd9d69147dfac9e970068ca330b227f5c8fdbbc2a875056e29991011d259a0424ce201af754e632de6f2dafa1ca76dceef63a59a96fc6ef956da19a8e721c1160826a8e0a70fa7b508132216572a1f82f4b4819b78ea85a3bf36d8224f433839023e445e1686201ae101a98529e5a443edd15e2d3648166e99d80af6434aac1004ccba7a4eeaeed55e46c5ce4a1325664164a19d97bebeac86ba0f2a131c7e75895d0cbce55910f87b2b40f4ebe8de2f02c58f54cc2600370c686f3e96d66e534d29a214ba61d8a26c6721cfb81f3e7c4c34884a82a7e5cb1e625f633533eb9e6b0a1811dfd94254c4e839df6faa48b65bf10862d1393ad93294659386bac7ac3cff5d18fbd188750dd40d512a36b8218006ecc4b56e5b7f70dd3c844621196128fd1bd2d7ee418688ef8cbbf9de23ba7e5519d9fa35a5f2bb8708ff710869524bb63debc6fa630b963f7413d03697af5ca2be3f0c20a4d851fa025d5da61a7aff8c21d43609182e92069720d974cfac35c952b54c3cb3fda977340b82ba9f84d71d360e46a2f0b2919848ec269ad973fccebb9f19e773079c3838b33609110b03b24846a2a8b460bef60a531ec4fb2e82fba3b175a68e70f52bde374c0dd31e55eec0ec3ac26875fd72011edbb755cc288ef54d2b81e9149e256f2f8970bd572029cc297044a96e7a534fc9fe00b4f752a1fd6ccb4ee7fcf418abae2a1729a32eff38f8c7d5eb163175cfb996e58d72a678d773753caf3353685ce5eb3088df2e85a3f9148c402128a293df0643a39f32c2539ac8f9b2cf3176be09a645bbde71b21364244bd2578dc941f64f2b1b96fdf203652d258e862250a12376150d17857e438185068f3980c05cf2de52a8b6c2c78f6f69e4775c469cecb967d5dca1c5915b9c1edfc1adc94ff935a9d6e7b85f5ab438f73bc6be1f6c9c7c399ddce03082ade850bae27a5c2f3b52c3644004caefbaa223ce62393f083817949e8046deb97b4f2ce51dc403a068ccca7c393dc9911cf9797143d304fdbfb7b9e4ddcb213a6739414de4c779abe0c51ebff352cbaba390b63dc183d93b9b5c259d8540ac643143a9a106bf50c74c1d4ed391ffcd5cd6e26c9e6388034ba750882fc3451a96bf8f2abe5c2000bcd609d73d642713587d7c3a20a44a0b092f8d9f3e4eb1ccbe8b8bf49022b13c6aa1d30fcb3d2da73b67c76bb2e5a4366d786e41d3a290484e3f7782c03205508e6347ea1131ce1ec86eb44754fbfcb2d6aeac82b705a2ba0a2a53f12d4f64f94b120c866aafdcc703c189a8e41e4e82f9944bde306ab07ba809cb4042ccdf2674e803ec3423b8b18a7aac2cbdffc66372a50f126825c964503a422b6b880649ed1e0dc385afbdeca538202ff6986513a53ca6e6d3abfca00944ddb73dacdb58ed5c406d4a9d5ba408d5eefbf1620f0db14e1ae309ea559480ed4d460e27d375941a5d89c63ff1603c84fcc7f817c8ec37c840aa345883083b3eae25120a97e330f10f91a19703e4530ab70119cfdc61aa08a320d605790c2f3bd55bc6d214e1fe8b426c79d3831f0be25eca3e5e3a038126584e14a42de8b73afca11e72626c4f43108708f5e6c063c29ca240db97317d0d2d6c3da86ca5a918eb7cafc5ed0c12f49dec942a5f7d6561e78777bf20ae413f60fc9f9295411af8469d031c844d711aed55ef35663ab5c04ddc7e12e93f13752dcfd47be8f690f3ac97dc5b1d2749b2602c042e1354d2b0ad846c8db4ad296de73a56fecb0d7f752e0299816ade9c974cc730004939f95346ecf219ae7b46a02f89b1255138fab7a68ab70e972b67192ae8347a2abbb172c4c1b085d10b71d4622432ba842378920c3f6672b23082c7ea82a0e77fe9fd72429cd2d8a02ee6e78ef5d49604270bfd7d9ce6cfa30750743b65eab042557e151ec03cc5508df6c36ec0a969c3ab264a7e43ef49dccfcb318dd8d356aa20fc1d0e401786fc41e18a183fdf1719b6cd3e569ab9c3ed2b780636f57cdbe26b25af582933d20ea9f3ff4762ed63a8e9726636e55bc87824b9a9d8123382f6201c22b55990ae98c9225c58a5be8310513787707a0276e1b290cba9511f3241bfe38376fe8a81e0c61ae81e44940dd789e1ed70ec8cf7a638840fffa7339180ac8e08a2fbe4c773beaabedfeb6a4512b96d59a479067427a7369bd97be6f7a863ddc1fcb974314412e3f9defcf3250d372df861e01c4710152c651f1f0ab98434b662b3b74e6fbedf2905a81668bab0399764c08739edacc38a9cff97f7ded4ecb01180b1acf09e0b0d58e83622c14cb880f3647ce320c2df0610a45f022ca7ffc2c942c4b06b1cd171be97d6d60516c42a8e67308acad177e222530a3b38b9a75339bd5835885e3a683c6e30233d587f9f3901757d97a4ed553dd717adec2f66d0952f75a6719ea8890fbcb311e672adaf0d1a719a8a747abe10b47bfa15da9e22a7f17c4a59a006139609b026790409add7842e7d9f1d96afa0fecbc90f680a56bd3e9a4f04ee791457fb46d2e84fb469492256f367529cb10a21fcd82e504369b82da780b4180137535e58a6c73edf4d2582694ec9a46a2a8b0e6103965cb11b9bce83412335ec082d15d009e6415b5d1735ca713ba9a1a38fcb89d08ed96eee7fe240bdf9d4a95ca5a4012d9bcc4ef40de0d63af53bc1e08f3cf555f689a2153e2bc80c45d319e203bf55a7dcd71fc0e2e9bb19e95f813305091a6bd62bf32cd93d3312a83453b0c0a407b57823667f9efa2094b5ec3457963177985ee7ddf811408bf611ded3c46d8ee8a34522327eefc225613143d44bf63a3db151420c1c52b5536f5246fb84e8cc0da04528cace0fe64fbb26a00a281c5f23d91e8857a32e16e6cee9a62ff28c6c03de91e4f43312609d7ba1a124a2173f8e109d4e8f330d428cab04d2b430e4dccaeebf2bbb51878782ed7e73ce6e9b4b89a196974ad3c97411d02ba94e49d23daec01bbc541b24a4f4e3260830744e30897613ef776e63a94f6cec4a32f407dcbd83dccf515c0b135a15973cf982c7a3a33e556cfbf897afbeb507897f94adc1ff52a464bc14540cd39fea735bd45bb7069e203320a0929118fdb3b9f312650ea363e53cb4cfe61c1caa8280918efffc743e957931aa91ffd5ccc818e778009a3bfd8330de0a142c736de295cf4191dc764977c3ba47a51030084c1e3c09ff9f5525ee62181721b74a420c0893f0d2235f7851332d53978f453b77742ad6fb4361af2dcbd0395b9bd9dbe771ecf9607e17d16f17318b9874c4c200f1c47401d0616da987a0ba5047b6ba5e518ef62b43e3a024a751912aac7243f8dc1af6d275bc9ae106e8b8a75a37e64bf9387ce9a7db286294e6cedf47bbead2ae626b3ce1ee8e5a2b29407075c24c5cb4382c819ee1a406b9de06bfc8f55edbfdb03b39891c4148eb4dd3468ea7d34b594b007424293f49a862b38a9e0e722032ef0b1344201c7f261588faf84a5557ac6bab1c43d6d6d21d025c863178f4c3b0a8b414927b60803839df27322a558c2b6f67ed52db6b048feae246949d055d324bfe19accdf428368298fa87a5602e172bde95cbd59d9cb978a77e16f2e9bf20ce0143519c62f791bae8a6934cc3e2fc2ad3c48fb7e8c1e32ca56900fb555bd9c97cc37a1f94a6016961d2586c592a219c1cc2d9a33efd3354aaad3edc6bd8ef83c3bbb1a27f334e157150126c1b9d7142e2dcbd62f4868f2e1d7ba57ecb4f4a918133b38d0acfb415a3670d6c6775c838000a062a613c53a147ff37d3676da6fe8d08b70ddb6434c1d312ae189d1a8c9998863a024ad8a95e2e3b3e170dce7083f6672e8a06add7e92f66efa62b9018adc8a3d235a479e6b61db114fa9c741e336f8e4486a79c2b66f50ed08623fab86e523904d6ef11f77e6530706708b2e53dc2b5415858475aff0f538d7a3aae8b4d04aa8c4f2ba72d2d0d898a6b8d1a5aa1d0114de0a29c1eac026cfce926c2067786262eae7203be0c419171c048d47850ff214baeab37e5b077b52081e2dccaa7896ae2e4c8f3ddd5ed5cfd7c97603f962880121bba3efb92aefd46a747ae9e29204a950e52ba73f29e290221833b32849e368a86168041d80f104ad10f252e6311c2e07188cb3b44cf0dc87e9428ef0dd55f9f275946923087a6c75f3f14e0caf6b2b5a6bb386d217ac00706fed06fd3c89b7882a7752a553e6d1b7485903beb3f57f0ba104705f54066436e486f57d2ea0f4e7216bd942a68dae4e4cbb9194efbe634c2ab30b46fc69edc80d90384a430c85593b49fcac21d12b3f85b81a1d770a37b1cc2daff2127d1a9b937e80f3d8d8131e2c1f1728fa1273f55226ae13796529edf4656ebe11c2e220ff2cb042e8b9c6dc72a3f26661f6083d66dfc9777a2f9ce0c7b6c437a34a1e216772da4e2cab7a4e37d856887bd09425dc499eb3beb290f5de356c537651ce580ce4b3fd0a809f3e04ff52643a397fe33b4c7b7ad10312f6df464f0c00161235546bbfb587d6fc96b343d3ea578edd337dc51b2c4f904f988b6076785f1bb777bdcdf2ffa08361429f3e72fad2e0213c520bbd8227dca840b384f6d940db0fe40dd61a7b06a993405fbada210468906f309f0fa5a5e8200c5abc21d7ea44a06f728927413146d343e59d8a31c7e64177838f9e09875dd33e69344c6210861f110e44ef5bc1d16a63c0781998f2ab88f0ba8eebf970e583e8b1ba79ee147920ea2da706429a30ad4360f3cb3a4268150ee9457fbde8e3d90b7591d504354868c741a2082d26e53033ecb806541b1b75c89b9f3a7403ee7fc84d70e31475166ee42e8d519e3049be21c1184895c02ac02756326aeffb7fe237caad1d4dead18346ad01638aecef51b524886ca3a315441947bc7e3b0339a036205da438512ebf8ac66c2acbdbeaf5a02e23450f989a0e44adf5f85998ed7d882fe3ea050485342e8841892836f307274e43fb932cea3d2c36dc152dc4f39b27306bb6a04296ff653afb09f64477e0fe0070ddb0e029c581d15d41f882e0d581bf6cfeee52e80f9594f75ec33062ee0278c24f0268afb7fb522cbea990934d75f1b190f7a09ea6515b9356344f09e3c8a24997a478f89a21402bbb01550894747201a54f001f50fa039ac899dcc9350ce9576f96b39166c5e9d2e3889f162a4e1edaf90bbe19d4b6c86e2dcac0634cea208f6e693da86baee23fcfcafccb4a3ae551ccb584fed98c6598cc60012a823a1c4bdf9cd2a96df5b0701f6a7a9c2e7ee3adf3815145f0e0469ec4da83225c2e19818db9c76819320653e789bd5ed9cb650839d80b50ce4882b319fc48957cd774be4d4508f6202138700a82d28e86f67868bd885a5ce7226a540647c015249005473441ef4debae9a669162cd03eac77160e36863a6947512bbaa9a05f3adc73fac4f30212697bf660484f100d02774376449cc9d869058e22a0d02b71e424533b9f5b21fd0bb56d2260ae55c5acd964c90c0aa02505ab7f81423f2cbd4f9a6492bb2d9ba9a6365d673de7d098dca8f153d9d5d9f83c4f5154776144533a3bef05901012179d00deace29779d70ee7d7952bc9f090060a4d42d004c865ea6cec995b34f8f6cbc72dfa3ab874adcf3cbd634a2d072e97b2839b556f28b23590ec9b212a1d59171af8930d6ce946b794ff0c4b589b52e74a3c4b2983f0330b40ef7b7de715fbc7b314f0a40b42807304753dfc1bdd8274ef188beda56e847005341aec87db5de49b94dac4b576af0782c755164d0a51f754b540822099ba6990d40afb8a9e883931f7071cfc6e4808aa66d2d6225c039ca680c91cd8a233ac738bf8b201d0284893471cc2d37319755409c00fb779a67b99131f673a2fe30012d1d61cfe4c9397e0711e43bb4eafb66ce1bd29233416dd42bb4ee89b992ae884c4a42d680c1f0376b381e602e072f00e2311407a942c987548ca37202e33ede75d7237220689b2dceb8731edec2966de9fbc33ca775937a0ae39ced3410309982a9175262e298cff374e53fcf2eab853665ac6ca64f5e4f2220ced7d4f3170f8432b1fcca0c3eee2e6d7cf8ba738d71562fb9e04e713e60b2fcc816700e5cb23288e5cf30a2d4f5a64b0b73e9a33711f23a69d40523187c1d3280a4c343dc73b3b532843ae4342011edd17671af047ce5717376b1e70472748d9b5ebf3ca48523066dbaada81788c2059d900b736e0e011628b46cde7b3aecbd551c078f4560be0f05629104b4fb6a3e8fc1be6be158b39e2c68b555f7057d39fcf96ebcad053999e3d9dff2afa3dad53e23f86b967e187c5730de522341e8eecdc2471008079e0d1ac8f69f0d040859542592313ecb5bf03fd4ec6f283c0149d978b76d1a25f035beabd577be8f88ca8cdddb3769e0b1d1c3a391d0565a25bea674d990ed67cb1015218177ad954a789cf959cb734e453af98d63222a11901898e52dec8db48471d441c4bb41f0ee923698c1c2690ebfde21260f044332018b2e9fd24a5e7a0790afa29e8f5e881255a32a20c0ebea9ca6efd728a449679a618d1470a4c8e6e35e23f2439e6bbac6560aa9cd5f121d50d65dffdf9826cbe8139d61aa794d98bac02ac49de4b8caca7f4548df8c46c1572a2f8c77f85d4caf4d7dbd8e5e341c0dcd82d5b0d4415fa1b6d9a933eead473757932c0697348bb7e1ffdc192ff7d46ceaf304564bd49354e9edf0e9b9c3df20ef4dd170be9f420b5b51cde93814cded758753c35f04480027c741167720549f5af69527525015873df296a82c199a51c7ed1a2266b62907bfdd2116f7149f1919f12dca282df2626ce0447b074168719d2a4bc5bd28511380d3d8ccc6a37bdd503cf39df2ab7ef9499bf529469cca99743e081b21600f44c229d27ac366a7d91345f2b09298ea06c1adbfba8e8a2898080ce51981adeaaaec472b78911226032a6be02030cddac0afdaa0e27219231f51fa75b88ee737ee5572d695b0502a750452c0039bad48b6b4ef56bb21616fd3555fcb16dfea079537b8d31ae68cd6bad7ab6d70c955fb45621eff50fb51673ccdec1a20b2984f84053a0fd8e8a150f498af71e32b0f494435fa88fc55b947844435e71923df74fee47638609e7d4399c8c9c2aa4f0dff4ce440697cbe3df499d337d864a56eee71033ea13ae48946321ff806324b4daf84059113ff22ea31a44096e0c5334c2b03979e4ed2d73f8affa9c4627d9c08531f320eecb3e2552bc26e7ff752303d4856647263e42325511e1c1b757c9aaf48535672fdda6ac8aa0afedbd563823ef5054c8a99e8338fd5a36d937a39caecca63c6a10b61f421a7cb2efa5cd1572af45b86d3b1a99dc9eb51269adadecc5c6611df1d32681e6c0b264b3afeff04f8d14a26121f8dc55aa2eda0affcc6a51db54a121e9c8f2d2368216e6e73acbcf91b042852c10e1be4838f6c13d6b0c0b9b174bbaa9ea5fda52c4d2256d4f130ee603fd1d6cb981f72fa14661495b4190e9e34a8fa7e17cb6538f0df099d95b99de240ad00a6e6b2154143efaa398262f4cc64714ede341a2df42a9a9495734b5ff50d3954d35f9c39268d6158795a77aff85a62a5a6eb0b5fd897a5d51baa5e6ab9cb7e0a93613df621630dcf1f2599c2355833bbb8fa1054cdb9d72799da1ba369aeb3b726301cf8074c1e67fd670c279ad7f2d16a3d75a39b938dab8ac6c37956a607f1871982b81734637d5fcd689992ab008ddf0221a640dd0669f33661f1afd29ba13cd5338c9ae850300cd22a8956974f0f746402f6c26cf41eedde248e8af37c22a6728098b24709aacbd4f4e726f709a1f5b01018da73e14226ababe2e05616fa6bbd057c65199110c72408db0ec488ffd53863093c93f54d370f8adffe9a5969f6b401cfbfeb100b46d80db64619e207ad8dcdcbc492049a8a3eb08667b522b817f29bf0b60eb41f6250daf9e6f33815795ecbc75e7ea0e1d8abc5212bfab9f1c465e697215b6bb6c39879d9455bd868207e3405fd8299bc00567465ce99aec80e097e1d84aa16efddcb61a9622c9da5ed3bfb79d0f4e207b539419781d0e22fbbce4194c8c230f4c529783f485340d5925bda0da5920d0525a0dc83de6a822638a921c4e312c02d30f5fd35ca4895f2fd865990f3a31b1875c79fb4ae760656119c9cbd2ca4b48b705ec48367199a3c037ce2697be12ffb6dfa09a6bb15ff16b463a6464fce4ab84afa275f1b74957a329cfdd12722237137ca972b14d327e1ee5613765d687774bfd3c89d478038dc28b8f50b405ea25b843162d0adfe597f2622a18671742d22a5a7f0077b3b8ae53b100f682ca45c20f7540a102a34806a0f6348e88004f8a7c6b2627909f02192a728a8b436f488fcf0bbe819476c74b91dbf51b19d44aab3b9f4c02d973faa83181f2872d60cfb61fb0ec2160f035aac7903a9f93c8179803828ecbb962928d76bab21308abf719447d42fc7bccb666316fb0264a5d03b2146a0b1f92435687f8496a3dc07fa872452b334323b4f741115800b1137bc61cfd3e2aa920e3276f7e220052ba6489e33db6756a192bd18da85cdf0cfdcb3ca6bed96978719113bcc36c09b74c06a80c92d313abed2ed440af12916835e154059ef775c6d256bca558886d62692ecedc6b08a5e1052d047dbd6ec9e52e8931817f15bb9340706816e57bf012aee28daf13ac2c210807c599623f8bbd36afda616d7ef3b47aa3d0ae4d3a34d4e276ccc1986d114292b79c2336866041abda4b51b2ee43ba5994f7e6293a0068680ec1d2cee4554296d4582bdf6cb5926b4c6364ce45faa14d7c8fed7d88c5229c39cb6cc12919b7cb2ce53e4987a3ca78316d28a10775c66faf92dd39d468a530f0db540a6dcd002ad6058e443e2b3e07441303ba35a2765b30ccd1a20e6b2c5a880265b3113ddc688578d3dc480e5ca575ebefe80a9220669b31e7013c8b1f5d8c0744e6e4a2f3fca18d1db7f370d5e45e1dd61c7abca49008c1a979ca38315558c6721b7b7c7629f4a26ebb84c82da59449ca0607590712072a7ec517e1642cfee759fc40f9a4a8aa7e48b5dcffc026a99f598d0a843fc4b3d28f76feb03aad550a8f33b202cd66b10a94f3ffec2bd09be0d1223daa4099f4f109fd89a3473bff8a19cecd305296cd2c1d3d712bfe830a94ff773cc1f1f32a7ec7131cfe3fbfe3098e14ef2f1b773cc121fb15e38e1aaf62dcf104878a978d3b38a840f9558cb302fdf8b8e35681f2a790c2b9db4f5c39a564e3cf7882073812703efea0c84f77239d9cee283f46ca8f75f907c7cffbff8cf797ffba1ee0388fca8f75bbfc78e97795ab4345b8fce01188941fd4e5cf474879297fd69d18cbbcdbf9c1ab9c039dea5095aa40f963f94d8c25c8dbf9710e3761a8fce0920f3bd5a189b3602c41a8126309fa6063094af98c2548d533966015cf5882bf9d2dd26b2ced91cdb9c6f2c5b18c85636b2cc1a63d96586ae79f638979f87309ac221fef319a73285b8cf3ec46052ac285798667317e7cc7ac403f3eee78e2238efcac71476ddc5145fc71b41d797013773f367160ae7ab6a8d8bd4a194343388bd021052f6ba218a152a4a5aab7c50c10a81aae88c6e8ee1824ae9c9fd43cc15171f0c4c0dd0614f8f8e84419e13346c89814b2b867cf8627273015ac8aeab9be44ed403ea1a25bc2c2921c8874a9b2430c2ddc60820b69667bf66c58b25b7bf66c2812db2e23b3fe768b69153059bedd9a889feb671842619e1185acd9dcd3475e31cf88fc7d8bb30c3890bf074ec6d1f46bbc10c50001d3857f49b32dd1f4b6cb75868023b7dbcd6b9d305cdb11506fb74a743b72fb6109ed97f04dc32548b8ec8842ca2b14cb830eab88c4bdb707178d15dbd69bf1d3fcb3f47ddf5e7b7f3ae8a0f7aec07170a4b5d60ae3840b5074bbde7b2f7d05a1d4078ca7ad32546753028412755aa7f5e2ab4d00aa01a7ef0b94191064ad8952029f7b521b0586ed57367d8fedd96b9202d671cf5e930f9b7e98dd15c5c7a6dfa4b4e987aceb0a809026318e31c617e3892b15774a0d6cbf0afd439fef3627694b7449426eb3729b45fdddc3196d89663d59bbf5a811278cbae9d3d6b3c29045a331ea7232a417886fbfd8b357836ef76a38da01d8b307856a87af076fd42610fd2a282a9e94d34dc7a32e668b2be5fcd1e7004875ce31e5f04881032eb68b2105d0a03f657080841cf55d24da12edd49d5aff1c3b76b5fb669b62ba70d0fa63c71b799c1b746d6de57edd065a7c2f6c8d7df134c6358b2f9ed812653ee81242342cf4117b5c3c3bfaf5d23b3cae1ed12784b54ab02cc826c0183e715188258468bb4b5b4288aebbb4258468dfa52d2144d35ddad296d8f9b1b1eb585fa4f3a37c346d1d6e03b6817d47ea2dd9ae239d2da8ef9f1917ec3afa6c41df77dd758758c420088215873b65118b4a9deeeefeb305b5ac8ca284cfecd993e6554898dd36a713194bfcf95ef0de9b02075ddaa72b377cff8e3f3634b831d6849356eaf9f7de7befbd56c37caeb5d6de39e7acf85a6bad6d62b1c699c75c758dd5a24cfd099204ec4ae997b25dff47bc5703990fbdf0d1c89a10518cfa35705c4bcb0a735b69b59aad00171d4b3a36910055929ec67bf698a496f44e18315c7680e8b08a8b4b0d4030d1205ee9bc678f494915fa7265916985122d7722cef16131f9c21f7c320d552d1d3448c391133219c949961e9d9326579313195a349c403979e14583e9e7a4070f8d19783420c1a241c3520f1155faee29a68c0abb9c3c1fb4cf958b87b6564e71ae68704f313e375f7c3c64a0418c1a34d0d92105df0c30194dc4d7620b5a0be27be79cb46bb105ad05f1b5d5ebc55e6badd8af9fa05ec3d65aab000c0063cf1f712c9673b5b9b5d5abb5b5562127ba41d85a6bc55d2d304118863e7f6c884ece90d6d27ee95fd6e9eed5dd2b9db7eeebb23179d477a5beb1cbc6e46527e9f86363a463cdb2ac5b3661f943f76c3bcd8baed5dd474bd66ecfe2394167e0cc5bdee328a8b7b2f8d5f1bed5faae539c73be445dfa2be4a995d5c3c1cc6ab558f9c13bc3148338639cc17a9fce1616c419b3b0b5969541bfb35a7d56665a129f36b6d2921ab0a2d6ea2ca85e2c56a9d5dea7d6563b9dd65b9f564a29a52c9c591ce982ef7d5a9f627cb3c5f8e67a67f9c3133baf7c2fa8c0eb05807d29a0731e6716638cabbdf8d68a2fc6d7b23e8c59143f16cbc41f3a498c65326b593f2e196b30ae343fad18cc1fdad97dadb5beacfbf45a56be61712d810be1a49597b7c24adbf74abd844d7f7ac55e2dab4585428ad2a11ab6cea8b5d64be928028b85055e75a8bc913542312bdda83de9162c2cb0edfbc05cac0faf899c2beb3e0b9c8d17b8165c1004410c7e28b23e3c21eebc5c366c2eb7e9385de0d711db17bc5c1b58005040bb36b09bf5619dd456d6389b2df057b0462c367bb9ee873ca2ed01b16b033b498c4180b77d1f1fd1ce46f049bd4e2f418605ae3a1be184585160142e1b76d30deccf8f6b03bbc1ea762747dd208eb964500bc35ea11051b864d8a7b96d4e929241359f43ba45abb302f7fea4f39dc43decf317fe1764d13230ba14a55eaa0ee119a8a25459f96d7f28bc4b81a4cb9c45570e8b71244fa23828310516ed5487418cbaa075973aeaae230ca6a44b4772245dd20c1a763b84464facd75a6bad0f73d25ff8fb1c693a128d4e1af6822e35590a817186680f499b3a694ad62198eb145474292474e319b156da4e4d6dff6cbfc7e3b087f7de9b4791841dfec29f9645975696832e6dee4dd8c313991cc8ff022bbac43a71a907a90ee99ea33a74dff111cedd2b7169973d5a9adc264e11977edb5f64aab83b86571548cc9558e7e4f612ebbcc4ba9b0a5a172639e91b69b6b8aa4058d7735bdafe3722b18757c465e2e401cbf6b73d1ef7e4853b7d9a4453faab4234f559cbe2065d6988a0195d5f9cf4ab0aa5b8830326d06d7f1d464fe8f7a0593ad34182bff0bf61b41d7538c90124ad42993071b6bfe80fc25ad0e5fcfdaf4b68a4ebd7af73566b9d322eba9c56fb2b7ded3630ce10b5cdde0e53b63fa563a9c294adc3f7bdd44b9a9b9130dbe1a493fe6d865ea43f1f21c5c9b6e8921e89f4a8f4383897a263a3345638f1dc9efdbc0c6c36dd3d295e4f87dfcb3e90ff8a13e83453dbba8db2d96ce803711b8bc701577633e876009623b7b992dbe6d3088cf6dc0eb0b273db7c8201ce9ebbbe03b01cd5d1015858a0c19026872b81a2800689113b08400757020c0eae8ea2bfe0d2e60ad200bc44fd703efb69830babe83302d0c1d5d98ea98224b440e14a70f9e2445921e17c260b832bc18fa836fd39a37ee4361d75541da5c28e845c2e37a4a4744e209cb4d279367a84ea9cac3fe991da042659eb10ab08f733457b6c835f5465d707674ea1281485a250148a4269d8af84f69d57204dafcaf7217c9e3342d229b94d33a1daf57dc99bfcc9fa154e10bb0cf2ad62625080e9a27e9d2d6aad0e85acd87f5087c291648d55b5f1ff478aa6579eab434f7ef216e911926ed73bb36457d8ae17fc98307e66f06cff9f1978fb387fd8d3cd9e6f76726f8206df3ebd9a30fc07f047f4b48e671eda3a9d3aafba6b48e8bfd354469e2de83f929e4e4e1d74cf18c01fd1745724e199a49e19a81dbee614e1673edd3f365e7bfe6b370181bf0ebb9be4eaeb0a3447f73197e04ecdd4e8a4d49783fb96aaaf882f47060e991ec8782103854c11979c313c8cb992648c8f9e281f7ca27ab0281caca29428a55ea380f47e55caf27a4b3d5dcf042b316e7a62721073839818c41011930ba3823055617c61a8c02cd8b317660783f5ec3a9623ec395b4ccd491d0ca5d42b1823a81f36ccc959cdd09e172feec5c9ddbdda9e9725eb05a9f724e7e9cd93d4130e4f23e83df5087bac4415695c6076ba5c797581d285094f17213d5d7af8c08880b1295122ca029dc5847e12e302c3092e29a078cdf981b991b97648f14545cf0d2b7c94bc4867bd2d2b6c989374c693b3614ed259d55ed10ad2e3a1e9f19e7a3c1c7abc283d5e0cad90a76325fd9eb5d65a4331c50621e3c2db51c68963eb63547083337166d423e35a7f74c385cfcadf9ab172c4f08380479aff03acd7b54e9d9da72f8159a70e2ebb7ef07883f57484c0c4b1c63c5eeb366a3de2aa97a5aa9745aa9705aa9765cab4d2b12b3cb50e75410fc0c68755cef680441d4d394007b4dd93e782904d3f7c7540df3d792e00010015ef8845676ae969d1814da84de880f63d7b5780a875ce5aeb9c63497375ce46b0a1f7fc5aa7bf5023d5d3e2db7488deb3a705879e96291a8512a13ea18492244c4eb0d8b317c50828bdfc927103fc30931bd7d751f150f87862970c3c143eeb6fa6e1849d67f5aa02d5b1b658638eba5bd6c8e69cf45ffd552023ba74a95aad56d3e006a2f0ca49ef9941e3efa941e30f6ba5b5fa94d3d1bc5a7f62ad56b123baac6dafb95cae2af538e9b2e668d45adbff46d4a3a63661d44dc47a3a6df859acdb2347974e67fbf72cd1d8cf6cb7e55a8dac79f5eab5d5c263769abffda4a47fbf9f4bfdfc2d10254ddfcfec087b9a745913f5cd6d9ee3008706a44f22f0532ce9fcee36129cf4c7016a2b60cf1e0e296cd6389dbc9f674b3afc36bae1511e85f2a7525e87e89609e40f265666fb0e13177bca9b2dfc26e4248f155dbfac559f37ee232567fd459beedfa59eb3d6a44cad669bca5ce6ad77141f6cca8c424c9d5fc58c311166773260529041c2044ceb1849631843fb8022f45189853c3726e438852ce7c9f6ec5d19139ec08bfd428604e0cf9ebd2b52b6893d7b5794a8aef7e2ac63995a3b7f78a3e7b3606505e39e627af865b75121b795d8f46bf435fd1cb3b2a60eb94f055c29c264bb266097b4201fae1422da7597f369d7729ed9735a4d3ab5d224aac464d79f6f767d5b3f4b09b3eb3f0cbb3e3985875dbf0665d78f714312bb7e8d1576fd1b48767d0f78bbf6a8a0d9f5395064d72721cc519531484a7a4e7276cf4a99a5257a7f6c3b663a4f4a447838d2048820b872fe306002115582dc70c49c2a5c39af40207649734b9eec922ee9cadb75a454c600a92a360c596303152fb80abed975c9905d85e85a9774e032a58e1020e2fcc055d73bb4d8738b15a78d731346a59a2df2e7cf7528e7d8f8453811203071ff3fe38ed9fb17e1caffc15f844bf1138f378c025feb58868041aa22a42220949ea1dae65990bff05701842e45155b92686bca2cd66848486d7fb2b43b7b2683a4e8326717552ce9fad425020e27fd9bd89236443a903fadd2e468daf621904852529f5a587d189dc5ea18d3ba03a96a5fcf299be99cd9fe3031cbf031fcb74ad6b28e4d1e1982bbe7d33b5225b60cb2998ed2f6d7b43d6bf4e7db71d2368b0dc21c61a2a56d7253518b4f7bd976d11639e24c131313279d3a9e72d2a576f572d125d6fd883ed1b72b45b0c525275de912cd9e168ed04d0c83013f3e8263cd190e6a10cd99dafe319c8afe509d2b50052ac2d50f400b1a639224a9aa574d1835660b7fffaa3b825f06b33787c9f67738b9deb77fdda53c4af38efc2b92149517fdae723f243f9a4716c9a93639f12c94f559a9ab9f2f113919ab35212b100d065d7a159c1bd1dd814abb2d92d9a5d8244e61dac1d9fe98896fd3d17817ee42a55027e6e26891375bf88b5b660bb72f36e53a84776293cec9dd03ace8f3128af87bd00f47639d9319efb4947887994c599ab29ddeaa0ab4455bb1cbac230a91728cb67f50cef641103ae7fcffc3bdb226eacc6d372d892e6542f4ea124f931724bc76575b5d5ce9ea0c189b698b681aba461422a7b67f10f8f8cee6107ef06705d878f6c1cd6374db912c2257af5759c3f20a98b6bf687fd266423d1e77f317fe29cce8b2068189b35f13723ab31f43e6c931a28a078e114d0fc36520235300ed46ca7c0ed9affa95642ad48585e522986c7f11866402cd973d6cd24a303f6b2158b66ab3fd45de2e6b33dfacfd8a74fecc4b72930eaad1ac76db9ff4aaf586f24f36e855c0b4fd69be4ad2a765f01ad4783bc9f9f3299fa063324dc4d5f68751a4a14be978033f6bd37d7976bad47b4e0d2656d29f0e5a8c08a7ed2f9bc141e6a0ba0ebaa44b6d7c0ac542479ae42494db7eead8e4fedc4d748ee98fddd1c6caf9a32ca2b47f4c057a4ed25aeabb5ffc7745c789b09adfe3717766d1a5ffee1427a7dc3397779f9cf4df3847dfa92be5a47f79cfecff4b657d088da68f4e1bfd0ab5fdf5bd6f3485c5c42190b6bf8641ff07117267518894dafe414165aed991fc23124d68597ce9f1db6d7f3bc38814603b8a60837e7d1939681dca03a56b6db6b8098974fca15fb469fdfa658da784a660f26c9607ea0505d4b6504c14a26afbebfc1bfc39c1b186fd02d704f2a7f46f5aac09f9fb106d0b5f43831842346dff0c74fd1a3ae756182d868dd3c67d8c1e1bac121911298b4367fb3ffd69727fe26c0592c968414269fe697168e418ed409460313853db5fcf397dd3669f071ad82e5d94597c181ca6ed1fab33267ba23f053d27396db8050551b3b96b639fb50d3a21479fd8130c0b57bb0c4a221482d1625bdcb584a65d9fea4c044dee7ba24bedbeac61b19bfb361d897e10555b1d6f4e926450ed26d341e4b63f4c84c5b490cea290dbca7cb316540202ca28171a854767a0b06c6f355d59c1a90a73225353530a1d08fe10de171dc89fccbf5f2206dde371da5ff88727a8e832cf5908f62ac8bd4ea723f982fed7340a4412add525c38a3ac7d1e5bb0fbdb5b646040b065d5a2827a8edcf32725bc96261fbdc56b28cb69ff1217a66fbdb1e962b56eb8de8f2ea7b5baddb6addfb46b7fd2f10b7511a285620b69afc70a4f1d92ece5fe31c4771185765712faaed17fcd0e5f4f960b96a6afb8b5b68ef8711cd092b1f41416eaeb67f0d5b24cd8af1fc897c31adb3a0d9c22790ff27e04517fd41dbff8410ba9cbe6a839b239a6306dd4df0e300cba28d67f0412a7cdd99d1931e8f7b223639e93a165574292ed9a7b3db34d23496987e668870770856ba149778967898f0ec663d4715685397ad358459b5e774cd516c12999cf4135e1c601c1e779480139d66f04cb5b144351f94b6bf50fdfb9306836224d66c57a05db56bd639e6a0bb0073d7668b02ec40ce2d08d81e021d3fa895b34ddebf296dda6cfffc60d5aed57f882091e6e8d0931f5b9f66f1c44f97a22771414e1400d9fe96674ae7aa6b6c530f1352dca4952caaed7f628e2e6fd3d6e59e0f696fca504ceefcb232d12feb948a45f47b546abf32d6ae0e592807f2bf3996d415cbf7634155f1644eb0a6ed256b69bb7daa5775a9565520af5454bbbc4dbe5dea9f12633a727a7575e5f3494951515555fd7e580a2f35353939f178b9dcd11112924eb7bbaa57eaf7abaaa2a29292f2f9f4ed56ab69fdf7c96de53d2aed9385ba586ed399ed7fa78c9a059145251ae9dc56e21ab6eb942c9365a3dbfe96c90b37cd98b94e8a16c1eed2ee8cb6087697aed339e94cb4b6bb5d0983c5448d9bd6d4886a27e86d7f212aa132fafd440aa87a84f66b3890bfec8c3e4147977968e2a87c546189207aaeb1327a52fd8577b0e957217429a3b31068bbb6e0e85ae6d277ce843651266ae8503a43a0ed3a6ad1882e7dc724efea10d5ed64b21533e812268b7993534871b22f6a9cc43318ca6da55807fbdc568a52e2143ee34314a7c668fbe39e055db9203a716d14a2bd93fe013f5d3374d06de2ebd71908f56de8dd01fbf78e739c252d613fecb10eba799ec7f7ce6cceb403d1e731f1ae318faeb76066bfc48ce76133fc3eb39d1767f7e94cfc9e59fd72b6d9f93dffa5415f33ff1819d021ed3b333c8a658cf56508b1cdfa4cdfb5777bc2f820033b6e744954631f38cd568748fbe29d7fbdf06bfc3a2a08d506f78c0aa2c36ebdfe70478c0595b4ad4b997e694d521757f3e81c74e31fc16ed7e7786dd7bffeb067b6f37a66b5ded15a6badb5d65a6badb5d6f8f5ce0eee19cba2bdf37ac7e5daa0f57a1c816eea2ed1c580d7ebb5e37ad7df6f5dbd1eb776f4757272e73ad4f24da0fb39fbaa4fbf5e5fb67cfbbe9e5d2c4e5ed7759ab554305f58785c1bb818c0c3d362e9b7e5a05bffdc23d0ad3188f5f7b864dc5cef931483d62f16d3fa92fbc6c0dcfacdd9d3e385caae0df0eb075d0cc0af1f3700bfde2f3cbb585ee3e5b57cb44527bc3cb7cdddf2b9edccd5fa63b8ab01afd74f5d3968cd47a07bc7840d5a9cbb6cfdf6bddffae53a50d4b26a5db9edf5f75b74dcf61a47a05bff0dff5edfce90cfdfdc2ec5fdbaef33b30ef4fad035a3ee9d713af9faecb61dd75876a068e3fc78569f01f541006797ae0fe122b94b867d3d5e204ebec69dd1355a7156dedc2e6f76969d6cad20877d19f5c110c9441416727beea820b97ddfc2d953fb8e418265df7a69b77ef9c200465dd42fc57dc7320472ffb47e04bb73d0df667d8ed766fdb589421d18319da17498f4dc4ae9a9c249c262db5c2023f8616c080d6e40ff0271b20ce1226d3b964536871bc505c1f30226496302510c62cc353aec5ac9ecfa25b9ebf4eda30eab6b83cb80a6de0d1a04fc3a28ccab9320d8bf33fcfa0d9830c4af1f8a60b8c17d700c12a67d1f7cea6ac07df0c590653f8f7604bae9a6cf654727c50d539633546ac0cc2921aea8d0c31034430411e288e8d33b25335a85233b3b10754942e587234c004207dbc3884b08f72356950a5506636460431297aa241fbba92d382464ce24a5b9d2868722289a3827b8f4b020fbec19f542ee0a8f1d5e0d545fa4003135a488541d2d637673723c9c8eab6ab66181852c444cf9a5806986105062d092c30b282072b593e46532d8c30c5d7a40522637e5070ecd115056766bbe38c17946e18a055bcac8fccd161eac2d3f0a90332f030d62d4b02017222ac0496fb67f0c399b8ac59e51447c5bdc338ac853962d568874994366cb0b576ef0c942460c12bf165658aa445c543ca0848a931e576d9a086901851100d1d4244ded52e4065d47493cd24f557e987075050b0fcde38ac7912a518ed42401030b5f1f8e0e6e7060c495c3842366d9c1c18546cf3547c4271a668c3033a488122041330294dd1c384e4a686cf037465c5fca2442982425cd4113d5c3d4e391c64a19293d233b33f072e81db10b02258a9b9b0a4b56a81303141e53b5882342a480d090e60913a8224c389e119d3a6074637ee051e6041a3227cc39c195292798608e1923b4c441e2b2431217fcb5eb60044d112440410d12324962d8e03c8d140e2d4cb9a99224490c4a3ccc23783033b526cad512145a5444a00086252a729c9a1c11dff8eb5a83911d283ec41197ef022b29323ea0b869aa1240539115a2f05a982a43c6880b89971d12f8ce85225090c68815b8c83942c9d54546d5839ba6125419828509b049410d125ec478a9e3c4881b2f6dacac98d0634b151c0c17ca1cd1654a0a9a22508c50231409e78e4840b2467236615edd793587c841f9180209262b3af8093680c4046d8ef0f8a22509aebc19c938e14a0a3d48a11344085c394fd8e5949a55f3575590d1a3853252bf332ec8900111398009e2064a130ab80fb6ccd0c30824a8d49cc1f97b7055e1944fee5802aaccc9a1094a0c594eb0436a119fee5144bac064b4282251448aec3288862f55485cdd00a4044680c926e420dafc00864e0b5582a871c720082a494261474ad41024f2751f8e0e6e701035c488a821543bdc336a089a5d92546e70104551c0c0b0030c535ea692c83cfcb3bf2e22923466cd94951468f9b106ccf886ed1fdb401241a4008a481c253de0260a70780042b5bba283959c5b12772ba658fdaebcac91aa2a4272c2c297375450c85dd5148ef0cc54e59cd6cc096382da820e6c7e1c4164cc559213ae46d778104d32c8fab91774f7246df78c5a61c88d15580059f8fa7074708383a81582b8db281aef19b5c2d12e492aa5f0c6a0e74f90c5163db78df2b1746995560baee84a79ae99f66a5110baf570d9e3a04bd1822c5a2c63334a3ce5233cf00c0c51aafbf7c246a07331640ee41ff39cee223691e0460c1c1944a1c064fb13b128abe67146aba6c8c11f7c1c119836d7249de810c4ad451a1954e3627bd023203923fa629ed4881e39e932e368023ae9f380e6c01440748e7240537cb93176b04597b77d23e2813e5851465890284b05105dca9af42c075127dcb8a2ed843187c814256603dcdd5d1acc166e55fcd031d4ae855d584c076d92d4708c74fdcbda8ef7dd778757046b76d9b0196c29edec92e812440273db7f27c96de5ce08746e2b77927674a01288e4b61965425248ebb1c31365b28f7d2c4674abb42412f56ffbcbfc7eadd59a99513c9cb63f4d45939699d1fee5cf3a0493e599b55641973f65e829814aca228ea89cd1f6d76047ab12d54da81badafa181f31c1c9d74d55ce38398cee00855a323540e0fb6dd858e67b04ff6331c9faefb5755871ce7780756b9ad646901ab4038752ece42ed12fc8155f9682b65b02aa748429778b7d34d162fcb4ce229cb62b29b8da854ed5626312a15d5000200002315000028100a858342b160349848ca623b14800d6f904a7a56184b645116c33888610c2180180200000010600832c8183b3bbb9d1e9fe67f3c15ca46e85d1abf6f84251c08645486dbfdfd98e9838ab26a95843d52ffbf673a93e03b436397becc590d58ed8860634ae8d9ad3b6c70e49e80cb751efc639e6c3c2bdd613242937944e5a297f524b6b63312ca3226b049ee1914eb878ac78a8569d9145cda443b34b25b294dc08fadb613cfcdde2dd8ff78079f1c3ba2a6996fa4a4a036fd94fe992d0007c61c2b4a2fe315a83e3f4cee0592fdf43e4a93884564e43ac3ba41380bd7c7ffa8ef790250cdf2fb26ce351025483f9326fc1b473d54e6bae5b48a972d684f8e2a156e6dbeeba25ea550ff910adc83ed5800ae158bb3453e230e154eb1a6365cd90ff9b0c04dd56940ffd4caf111653ce10258beb5bdf69b41ea041619ca59877f457e73e7303bf6169e37fc5ac4bf7bb3dd4d7f851f9b8e291fb884c4f34106c9b1c445f0e265b3a5ead76d03b718b423b01862a9799dbfa0e6eed7899c00cd08ee0dd983ee40923d8535113a0e3825e19360a315df7900e241f92f63952059a17e419f936f4e646d9cfb48921db7342e3c78e15d2b3f8bd1eaa5339fde025bffe31926ea3238e8bb36059f3f70a4cfef0850574e817b2971622e08c677108f6504cf323e901375dd87dd1b09fc6a413e4ec46e3a927ec3d798163854591b268a0f1ffbdbffa22b65975e60113170b7e62a0c8cf6f670dac3c60560b695622d3b56b9bd33f87067b2daf183dfb5b5304c2a5533c0950f45a3d019848e9552097de2a527e329917b4e88aa0178a8a5cc7d4cbbf3aadc9049a5a2afb05e4d085cf8a9e277ad75584d4ead65c56da00dbc2cc106d70210eb87e8cfc2fbbb8598107833b2c438dc7d1fec894a04b123a3279e209bec8da41f8326b593fc4101616105d97d5c645303bc3b61f194a097be806f6d20d522ffc22a5c217e046d1070744565a528eb03a2eb61158c8005b505f9dffba82555772703e44136de91f4707b780a99077900fb9f6a3d3e1c087d0f5833c0293c1ea0ece15a943cef1144a8b83b06e2fd2c0af888f2c9790f61d7d54d03fb27ed305a9a6504957d7cafcb63525cfb3adf763d49610bca13fd2b5ca587da6048bcbc4c451b94678be903cb64167a623238a7437e8c34511beaf3eec5f010c7ebc06c085c843550506883eb699daee9a1191bd759417d09d4f75729810f4923733169a4b276c974894a1b4f6d60d719e60de0a9e89703a12c41924d4cfca98ef7605acbadf9114daf8879ac1e5c600b72fb575460160a5d071c991896d2994ddb471223e540476c02614dd5a0e06114c3bb29fd4ee4853626d6126ced2a46cb8d0715cbd1600c17606cc2b7eeb1a674dffc04c69521baf16e9f07776c6a67bc241e9af9e5268ce04c79fc79998c6e92abcd00fcfd82bb9ea3ca0588f26fa9f0022822a02267ea1011b413695f07bfefc21a34527f30cc741d432c6f25d9ce57edad22f25f0f3baa243d4d181c2ff3a35a1c07ba1f7063df0442041690fb8793a47a71cfa098f56adc0e5f4f6c2c8bd03618fd6dd9226ea2630b42e96c610dbd667eb69f82f40a40d1590275b75a6a139ee818fb608cf5ecf61af4675e5b4a4ec46d60c6f7d8f272544068f853dc2ba8853ce2b8ef47d4eb9073953ca606bbac599d95106838ca1bdc8ca07a19d22aa86db39cc6c9be72e3bdf10837999b83829b7670d389a25d2526b8ff0f6a6ffc7890afedfe009d88dc15b888f8883651081fa5dc56fbf04ce9d51713150573593bec0d2ad8af291aab2ac95b9201e30847594f10b81bf396269ae977e06967ab9e95670c8517bd6ed33e35025c06c235ea6b58f2132b30b05116baaecefe8b35ba778e0b0843c9e6a688cda2d71bc6e2372f9f7db78931142950ec8680c1cbabd1d8fbbcb6e40e88288cfdad2c971be2652b53f45d41f6f797afafbd99c226668298f680dd5f5b7e9f12287ecc400aba735d63c986f0fa937cec2ed5e9eb450660358f9bb85f70fa15fcf124b9e0dfa7bc36b101e04626e754b5a11790376daa2495b6d25b00eaab5ad243235eb77d9a20bdf0e013b99fa3620f4cf43e7e90bda21b3d5bbe4f749f4700a5dccfa958070adf6f20649fd28bbc9afebb697de500143ebd270c5d6eff5ea0fdde579817c450cd5a84143e66072154f867457144807d44d1fde20128757bfc6d1d9af0fd824fa127f0abd3187e55e4c70af8c47417804293c3bdf2234e61737402f6ff839ebee8783af0631f9bd05ba0b645dc43cd3d056ddaad2014a665eb7db47ec82645466013d3351e7cc21817111b88e2b907401d19b17185af483cb9e11c8276a4c85efab5e385fc3283c46f6c37d1edcee57122587c64c036f745c24fba93b0279f055e5243b4a3e579e5fdcb22a822754f3e94b222c2a98b8e8e99f34546ef7782b28590d7958a2fcca0b7c0b70c225b0ed8ca66867ecc27f4f51265515f5fa61d0f1b5be161587a5bb3c11e4546115f8a761776f36c18e1135f0a9113163f33efa399927ba4dc4511770a10c3a7db80a5eebf642c357803b60fbdd843577401847aa0e68bbdd08734f6d31dc5c3590836f5580c252c8049cc3c455ac5bfa4c12c38d59d0aa0a7d8d214f5c359d830dabda155ca20b954ca8b09a149cd80296ca61abe47f629301b9b1a4b9cb48d1d79972dd646099d872bfb9c81c13218f111116a1bbb434da8920fba72ea1e341c43eb6d65a4e5eab6f9b377fd498fc15f5d6ce518f183f1a8680fc4ff39210a4d8d8c608d3ca2273bacc7fc5ba2a30de1548254cf074da43e5980357dccbb17a9aae05f9cc37ed46ef0abc4c000ff5e1c6bcdac9e687abd2af35d04a4767a7d69c1567120ca885f89528d55d782af79f883149fdad24dd572ff033d35c220383c252839c92103eab4b19adc893c20679cdfbfdd1156a487783db434310025bd1509a3df975a19d79978864f3de54d0636c1dceca0e9777b8e7ab076e9906b357d3503faa800d30a28ba2f97785c7154acd4f369c5cbecbd8d8854e47e3ff551e98241364474976c166cc711a9a70846551264a8a40c33f94e43434b48fef5430bc2e2e7be3549ab70a76f0298e66e67ba9b4d244c81ae3d8383c32404c2fe5c0f984fbc1241e55fe6b06bc788bd579cd8c907bba83a9a5216d8b6ecea9d73f3f74a83b47bf3cfdde5e799fe1efaa06f077e54db7b705aac59201ceaa470bc282e9e9c1460b9be1ab4d79455828a0bce4d5d772b7384251c9900f5afee1e53e8824c62eaeb2c33b9352609c3e6bd87e1a607000bae2717a7feb733edc58b1d93c28bf507b81f9573caa6ebe318c07393fde243aa17729e96fb1b11052bb1cde13fa3c87266b860c7ea1d80cbc33168a00987ada89076eff31394f325615c538589205b5f64b9e480387edecf471710ebf8f395d804de2faf0712cc808bb480523dae629bbb43bf08f7ee68ff3949f712082884da81bf185227434ce799a2718adda092277949d81612f263443e79a5147ba37a8ae073cdf341448e7bddf74fc502a81c1b417747e947edf37654ec0fb639eb39df8266e830e476d5d59648af05ceb3bca7af92d2397ee3f24d6153a226c575b1e22527865b9459c972dfac6e9d1e396a17338c8059088e8ba075c9e66b8996d7dfbdfa83fa55c622a2e8972b59049b0dda7af5695d14de5a59608c56edc358adc4df588b60caf54adbdfd6829021d512b49b01adec8a90d7d75126c1ddd914a70e8195b2b4600602071406ec1fb269ccceda3a293ff80955c4f370ec34be2cfee96e8324be4c308a1608ab120ecdec0631e528bc6b644d7ae23ea142039c5cbb62488c5f68a41fb4e1db6e553de2226c3e048efd766718b20e975e74aa11e7a8966802a95f69006a93c37e43104d03da825831fcde4cc460c785941988411faa4982523fa952dee14d4a91c430b202a38b8e2125b91898366b02559f875c6fd5edfb5c5a26a081c0721aba230d52eef41b9eea4803d50909a553def6a604494cbac185562807670c2f7189b443600546b36d13752fd487b8992a0da24c8b54d5caf668577a0840c437da9cc61a2bfd6d7877eab815b868e39fe12e6cd32f4287976a0227b4590250f91936ca14852e1ea50c702d28478345e77e22024b1cbf18c79a605e1d7815dfc03fc6e9287d6c1baf902dd6ac9f26d3d8692c243642eba130cdb3c763a8543dc258272712c9e409db21b5b13762fd9f588e14afc9e881bd08d88a41a7a26eb1af10511fc76b40ed765554f976385065fae97127c7a216609e239de2a359b8b0843d844f66159e9aa88328c444ea4b106690150c19ac0cc1ecbb32e8ade8c60f049d4be8e4b25aaacc611e1aeb331eeedcdc5c5049b00e21fec0f269786bb56941ce8a2e6b77a40a1aa18e6408fc614856fe48124fa2761c486d1e74b71de731ffe9981d4bbb7a99dfd3de8cb090346dd1598017fdeb7e0a418890debbdb3e56b1f677ae0266f7289fea0699d47a9ba166ee4fc6f4161e0cd0df7f37155c870a99027ef72203772f0b0a1cb9e4e5c2ecb34fbd977c88b207d31983eb0470c44ecd16865d40cb8ddf9503a0e852cee8d4dd4d6c8ecb7dfc06ea7a1436a60d0e81a5afaf8928f61ba76375d10c883e575d79ea613639284a2c28e11845c7d9f36058fedf9651a6fa3db933bd92d5fed24e821679f6ceb999c8bdc81a595b5854e01b9a59ad274ccac41d784d9ef1b8bdfb0c413ee4418182c743379ae03ca0098e07b6bef8026446ddf5dae243f20cd24dc10f4db5df4dd8ec308adc547c656fc4873dd5a096d4ccfef57760abe4e1ac8e3f370d121552657ab56126f39b148d7a488b60e624162476cbaa48caf6672d450f765f9e3cc04067b0a80f017c8f001188be87aa7086acaa76e6b960460132c9e623c2a6b861cf1932c5ea455be2dc74e5cd5b3c34c0db48d0f0cf8714892008909edde83904d688c6c281a4305ac704b04675fe0fe6bfef590f3937a6f4eee1cb17ad896cf091b9dc45fe079a2b6954b6b952c91cca324ba9863bbfb25e178048ca7f95f32fd3c709357a9118b1d78ad190deaad8dbfe89a8e13d8072be853d51b928ed360ce9830e9bdf8731017fd25df04bb180fe128803861c9de815363df1d0cb260f3f7c6cc6e6036be2e1084a261e5ab38360afdd8f2b63df481a410de2ba1d35028c641f337a8d06f0be8f0719383785288131919392345a259a33a3c7a2efeafccc3651b877adce8e525134d489679cab8c0b5f170761f70dbcfa81029e007b24f5b11108336e2e8bb075d9feb9f151c68366c94175cbc4194cd0446a05721d4a291b4b414dad042ad79e40e2188b1b6be210f9d64e859e03f57e78d72567a35c319e154307737b1477d01413528631175e363484662c44b95df0cd9190cb2bb6dad0aadd1b0fe4943780dbec21212f1d7c2033c814560d386f2728aa19c404b1eaa1668d2702bbc76ee891ce189fdd7286be494de124ddcb75c1d71d96d68539270ee218e49106c0e602e03f734fa6339a5e1e8c827c6228d9c46ec281d9a2cf0cefb48495c297b3a6ac0e2c2ce3e05abd2f6395c047dd01a1d9a5b3279fecb584e993f3465b71dd378b5a49c094d5d5a53ac51eb6a226056eb56b00d132b3b1d5fdc2b4172589b2e7f44cd25a934d2adec52bdf9bb8cf210e5789e296c81960275c70a7a5cd7c1a4095cc47829eae081500394b411096019f4d390ecabda400f81add6b9ee6ffe15137b908e8c13c21bdc980c5515157076845b7a8ddf48a3808e860efb0d02628f06c05f6bd69af6ada78b0a6dfdf57b8a6e171c03025cef6893bc57da0b49d4c513dd0f270576b255163fe135962fae982cfb558af81db70d949a7438f4c650b1ea61dae7795888751ff5b7a5743295be05d3f89ce20e5271f3cd81b48687d2f361f51ceb23725daba85f82052b00faacbc99663d9a53261bfb59918592752064307fa7393b2d9c942f68df67a8476994fe2e763467f635fada50cb953d1f888bc59e211edd8cbf7c79b70ef3fe25ca67337d8ef95741fbaec9c9f607ddca9d47d04b91f53bb555b8c18e89075f9138ee850198fb99fefbbc3b8c8f65347f485e3b67d58b14ce30e2f9e58f0ebc8599c05eb0ee565749c8291ac981f33faba30805e2e2358320bc198a6c08e9fff3afb62d816513e9e23d1d7dbacdb23bdca2d35d231a985504178e49f04049be4d1bbb4c4072f2347d09dc6d3f50f130fb19c6eeb36c7f674d2258a814d07598c61e1c2f5e5a17bcd3ad855075b8b55fd0f133ccc15799a60395012a73a6041924d222842ecf3de22289af3800e5980291d2d58c05519329c7993fe5d2924d6934625c693a7516b72f115bf1dc225108182f6664dc2048c11c60844553d03a04dad3137f487692ba327b4844ee79263f810bc9d87713b29e16a6045a826814c0383fa85f5fb129f0838d9a50b7d30dbdf1c04d60a472acc64b61b600414436a4f39baa7119b5b8fb31437667ae55c7291ff4a15dcfeb58ce97655eb36c1e781ad7cb59e84f4afbd809582002cf5c30e45934469fad9379e8942b2afcaf8fdeab50949f54d8dfa17b1d5d99a9e55ebd849813f186294923cd94debefba957c3f75a67ff8099d0b92e0d2d3e038949af137f2cdfd716022beb043501f1500ee0036a1801a59c0271fb02e805bfa9b5ba3e359d9b39b888009ab1b005e16b4cf95faa4c0e2e1167d68c46639689e0cdc80821d1d385efcf5248aa8e825614115c9abff4efb44e2bb69f28b119732bbdbee646b8395d35be3b6f5376e429d4c67dc6ec836da8126b5fc7626191f95dd47ad14af98185d04747bb4cd8ae42f22346f41c60ae3a759f67045203410fe71bc95cfc2db173b05d1943532ca300733260e616d0a9407bbcad51703cac9fab6f3028fa7f0c8307a842243fb908447d8f8a26d93d63c1281a733927918792194b8d0a70811bd1afbffa7971697ca2c9da5e6d78f7f03822df2502e75042d2c4b8c582599b2c8fed9982c83fdef836cf66aff6614144318e55a2fac503fa462f514672e32b35362587ff1cf4e3f3ccd554680fd2de3866c8b31220e7c343ae7486258ad0647b64e052ef2e634fdc2f665985c9f78a2ad549c779cc7acbeee78067df6ab265054aa97f67d1083ffc16a2684752b074c4f807a542143c62a558fa61224152a48cf00fa73720b896b486b439b6ccf21861ed72b0c1ac2edc5c1cf0031640f71729e352993528c8b122d3dd6029ca1c323b69a15154508d62815d6bccc20179bc41fba826dfb829287db29ed5a73a827673b766e0992613327c11e67dd414f975cf6c7ddaed5934454c87330cf13ca20397a4f9237e1b1722fac34d354180837d52c49281cd66504587f295f853a45356a9d799017c843f90d234441ce40be208152e373cb046228a0da414049a05eb32564fe30b9acf1f05acc105500ce3ca856a27643f8dbb19880f78558e2c3abd9970278ea99931e090675b22577a8b2fa2986ae89c45388078eb7783b7d4b2af0317830077540cd4f0d263949a45f28f37b37396847a56db4fd1d0397c97ddf72640c1b5b82e2a482adeb3e5a2c70447b834e78904dd759305475625cb02490aa78bda21028a55194cef2f359a3f78694daa328d270a0d92e4a3bca3eb05c6b33821c86c8dee21c1534d6d1701db0f88c7cc06b848543e7ec076f1197ba61a60c47a6041f4815acf3198a78507d7b1ebcc476d68225bd8c19e81db5802dd7daeb71439a769d36ba29d2367c6735df4bff2595d528896ba4cc96ffca998de1fa09ac68db0d27c01b48c8671701825cea721d917a1821a6da5eec695c3d1b505583c4db1eece1c5143b98e10a870cd90d17e2912fdc50f73f05c123ba10b9971c198c48cf2e7f87668e78881e2e81381e8a3e2eaaa502c38601d9c5be201bdea818980fc133e7771b985ed1161600da6b4e10ce7b5f9bbcf650de201b74c05584401f40418f86dace272c85a1dfa0c914c45593e24ba9e3c0c8a3ebc44f29d235b11b4d1cdb9c7528880254eac6094c6c04929ae5fde0b49f2619027ced078f5cf8b71292e9cef6f6e1d0e75c8b539cbf92e6fd81de503370cd5b480d1d83efa06cf31cfb0da80e739b11a05bf5e14890cef56e089a48320c8eb050913d58b22223a8d9edef6b914a2fe4b026b1b3c2f34b3e8cfc6b60fd5384cc195c93ae30b19ce28945db19da14a00de8ed326587f145f85f59efc3feaf115f42694d4af2d05c58b990a9504e519045113392a7f39ea160c0c3c80bed5058e9a3a7dac88387189f4a5bbc8d6a706ac1a4ecab9f007c7fc2c895c358a9d277899df3b098a93b02d1c18793b4ca6213d97b46b2595231544c73548b7579dcda1ee9ce7316cbc8ea85cba26f81e943badbd4619a23ba960374109cbee818da526daa7885f9e3b15f6605800260bc1db8dcd0692945941f4bd0a584ba8c28673661dcde09ff2d99ce7cc59692f88482d4debfadf0d599d000153ca19a80ea4c087ed9687245120fe057a122595fadcb0d60b499c08e04170e85c3922d79c6fb36c74ac0154821c8ac4ad145300d8738762f9cd04a52fbf8819233212e0ff12ce8f6dc219de785e722077aa75a1ece47eaae7e153d95ce390bd8341479ea049b8ee47b74ded854854eacd8a1f1df72d3f0d5b0f08462f54fd416780585d2ccab1a619c38d4a6fa8e7cb935a3324a51f502d4e02a6012c6c6086b955274f2b71632c1cee6a6595e350a19c4c528ad79db46630360d17d33629d9a07a567cce4b504f4123f3ca9dc0aa308277788fc4d6344af30ad5bb0b35a1fd9e8bf6fb0eacff809319ff3480ac6cea71fda6a2e6e3320e61179a0919187baa9ef23684e90259080e00225e9c09f40c2245514966d4d1a2081afa0c66429e27e0132b84b19425b2bb19571eb94f4036a1a2eeb2048bd9204b3e73ec116196ea626d31121b8bde45c7a60724784f33dd2975af97138da88ca7736176a814e837de2d666315cd7e801c8858bd933341b76511ac962b9e69aa231f0c2604fbb1bcba20116851b7b0af94f4387c46a4bcd99020cfe2b86b160d3ed9a0f587ba349c4933512e1d78ae320fdbaf8d14ecbbd459415896ce0f92ed0901d8d3938b112ff5174f2800460d352c23b2ebc546fd39840632a26043a51312a35655efac3ecad9dd1c912916a273131d2cb51f65747d623aad364b3b539e7398f749c2e6d0321b13f1fad7a232c1012cb2e7009ace539235866e2ff67523d9ef31121b3ae29d37938b0eef361a3778c1136648fe37d3b86835252e5cf57a545ee10a05d019d4f451662f95f5ad315289b7661aa418dea9f90cebb64ed3f4e7990a0aa982b001bac6822f3abbc527a28507c166d830f0576867a84bf8eecf23f59489fc9f1ab344cd76c0dc8d520e5113c5df27501319b225b3b41b24284caf46e25a886991e23683d61909f0355050395117a24034628f590b72fefd9074e557fb29a4efd7b58218afda9e326329abd0d16a3ae8052dd3ab6b036e2cbb0fe3862a0408b9f70444704fc215d113dc0a05b87b12e3e2375b77b51530c9ff50d2bbf75ebdf7e1c6ff4954f12b39a1c64c597eaff04804e5f659d6a1ae96d1c039dc7280af46c6dbaf4db619b0ba1dd0d7bf5c76246a847fa066f653a9d6137ec2a03754bfda95b5bab5e57e927b36fee2ce68e47e2319ed4c2eeba19d7904eb976620450e81ab64ae46561fe7ab5493b05b0423209a01b454053e72882144209b37de0e028960c41b058ff4605fe4fa7ba115bca6b0d5e97abb0734f1650602ccf0d0fb5ac92f5efedf56d11ccad5562ab990673951d1d2f4fcd12277704b7223e59b27c020bbb9e6d74dfa1368f90eb490742b907c280761d6aa218e3a4ca40cbb86e5f1bd90e0f65db8665c8946934b847766550bd42a2fecd4f2df7728f257224f8da87f1741845464765478f222c29c3c07420509dac46ae2ec6f2dbdf76bc5e21b5a6bfe4f9c96376b0c9b36e0144b13a194b0900d806afdfb448c98431e0c6d355ac7eaff01428c169853862f8a1a6f366c1cf200f78f5df520b9005414fdb25ddeb32dc93795da1ba77a8864307386f0f4ffc675d4b17dff211af18f24d3f7babc1c2b9c4bda7ce24f2892914b816304d615acbc326fb3dcc13fa8ab92efcd33ad83a9a32706ae0546fe74ea7c598cad8c112ca91918da24fe0ffcd9e3d0a431857b118a294f905c7d69d5d14098213c6dad5b762625e8352fa9918c56c2a3dcdc464726caec6b509efb201cb90287b5ad3231465e679d599901fb3c5f1de60d35d92e27e2d65013c63ef17515954ce7ab13c2b87da58a7f3f7c56914997b501c15d0a6ffc641b637f45411357a4bffa6f7c7947ff700d41a90e7a254348234938ec712675c9c1344f722f9c04698a57ad646819632a5743c42f83dc0cc7f5979aab22d233a2d2690ef4768db0c1afdc2ef546702fec43601c857e0e04ab09173a3ed2cdb028b3c2b740ff664c882290b93533e4f476aea97f0c3f625425e6fa2e4c2c1acd76b5c59c5afde0e557e1ffb55df37d343d813594cb17555d38be0337fd58610032c9abc9d68d9b9cb66be6c858a3a61436ddba06ccf4cf80f2573e136131e44eb107e97058489492b4f8400ef533c1e5a44d65f01adccb0b71e2bbad4dca118820744cf380c2e5e9f51bb63e9fa5ac3a1d8961a56e2c5da130cff6a823fd892faa14132d2b63f1596d9ddce308d92a2bdd72c711a9a37aeee4f1267f59b0fc0e4417200b9422bf3253b5efdb6294ab2f8744660f2fb2b747e6bba99a5cce9e66e5d7b86a56a4ac9bcdaada03982d01a7858cc262163b7b2a76d6afe5c5b3e7ba61224b8683dd342087dd7bf61d0c23dec044c9db793c1f394316e9a40ab968c1d448cb4aca3586753b01b793570bd1a5a2c21e1bb5dd9f5595b512a3b1e4fb9625959ee765ce37b2c4ab47296028e85a4e9d78a1883b8f8a3115e40e8dd31947837163c0cb9519ef3021e964453afab79493c41f6a2b141bb110e6f98435cea9ed0191035c0e21e061da05fa0181d94f65534f8f8da5369c97c474d6e87e9ea3b03ce2f8d3d632540f14e3ba7bb461793c036309c5b05a76516e231faacd831eb92d8744a76519632678f2ff9e61a29107b469e1494cb65240276494a79d871e66aadeebff064183a2f2ca6ffa7eb405d095b0af27079a00b4785b28d65914ee27c0c73641b6655fdc7107a44dae11aad6b8a9a4cee00dd3500d830ae162c0f13f5fca4fd181b6c81d2bfcb322d23dcf41cfea7cadc6128d86bdc6a1fc6a2108a8044152421153b62e9eb30013400de0c98c3274b81fc3d3c4525b3bc523159c6fe79c0c953dc331ee334dcf32fff1af25df317171cba5e0d695a4f8c6cc1bf43c07845eb8bd236c0f4ccf39c79a94ab55b335bd6742d079da28a57d735afcd74c1d0e19225f52cdf4ded733670fc108ee63b3dc6a341d55162aaa6943bd27f2b9e38648ee3c059e32f3107382f4ce38b481b17d8d011a81bbc3012cb026cecc6e46351b3a8c86f55e4eeead5e7bab25c4b40d139f8370b327cb63f94b444e3fadef2c12837fa87685965cf20f09464a30018c8d6ec3f50d495b64e3d2e2ee287d622f3e6d199946c87c6ca118d3d9a3190c69318a99c80d1227be7963082d41f5bd6bb19cde7400211d530f3706d04d931c066f813a7e8280a85507ea0f2c8ccd0e1fc4eb9b39e2eff2e323bb04eae598ca00e96ce3a8460399bd723748b2a65219af6ed976a60dbcd50d3815070520d359cfbed5c2ec57a3a99fc544813a78fdadd6b6bc014b019046f6384db3fa7adfd33523c38e40326b38fab5d8db7b15842ff75ca709856fa022ad0b83ae3084236b53047b414c0047347b8b8b491c24f4a32212c3ab6adc6f5385a4c5e18871345831aeb539854f71e3e60ca577351ed8b52d72917115c318791d87e2c58a43f77e0378e03dde2652739062c542902dbbf78dedf9a6140b738db622d8014b08efc1283b222b433a42cb887030c2fbc5ec68ff70d117f0621fa9415b374d1ad833c8f83996384fae0ce49602da32d07788ea45ca0e6e5217f7e8951a92443c0346fd0a5c232dfba7ec07bca9502958255426ee0d624bdd2640eb10d26a778401b65785ae872f930cab84100b1523a257510b27fc4c6ae02dd59f8c23250b6ae660191dd80ca8e598566e2ee70567b672cb3c515743455c5acad3af71036ad0e8ba110cbeec28401cb72c4bc40537c5d4d861344e3f71e870e302a0a225e06bbbd399ebf5be60776a4d5aeac7c86d34830d19a6b54a4412591aa4037b7a13d38925d89b41a1e7b9aaaaf08c6918449a45db733054529ec4d51a52ad21f27ec0a1c44a0186f19e4a2906d53434e7a4bab7fd081b93586f207a5c48313c5f09b6d4a33a7660498fd1a09bc86d52c026c104e8901496ea9220590b028294f4059c15cda030fd0a88e31197e8434b8becb46adb7027400eed6f93a08d33679846e5b9c7d18d84e708ce27b506831fc1e642df1ee3a8f1d99f7ef72d5a7355652f7e19c0949529f26c2caf31866e6b9bf464fa2630446a7e59f8099ac4b19da4002ec79c5f789823029f256f1df29f3d91a99cff0cc4311fbee6b3742ba6ad2acfc78073fa4e3be40ce703a095e1ee31f6c990cb87318b54fcb54ad166ca56799fb833c90a1523c0a62f9e89c071c490f4a6343da78458b92db92c936c5a5bc1553d6bbcaf84fa39160b5d908f1ea1c46f58c98611e9b38d879c32ae01b203cb96d8ad25f8a7c82297c354db945b6676e037131700aaf2c20ca2f8ced264131bef276fe2262545443dbbe2bf3ca53edcaddd25be8867aba9eb8e478c89ec51b5323b4965ac67e3a71f1ddbb7810e73dae38f9a326ca448d7962ce156699dbf2f7f2cb63200fdba9d9267187db9656bbfc0772150d1014d37471b9afe8b39f338be4f3afd0902fa9b3a64015dbde45e37231a503d293aab2ab0dd084f148a259797db9d61c1600a0a6420023e5daf554580213fe27361f2ccad93005c499682cbe860908279352351d7a737aed949625a00f7f8db83f8b24f6a0399cc55946b1b140b1056c4f227d0f19497b1a5163f201db5a7fc5353c05cac87eefb7930d5835a3d4748ecfd5a70a04542e572a1c5a4c0811dcb87424ea53caa59279cffd02654d1ce8430cb8665bc55bb9f3f3cad3de1b2fa94e3e7e15d6076bce29c56aeba30564ffd676088deb3845adc3960bf10495a2d31afa43f8708c5c7d44626a01c2d4525d9176466d4188034976668789c150370e32d1a0891b85e6ceab736ec581d875ea6958772deab5774bca0eb5da96d764324140a5706005d6ad4bdf29379a16f681aed09d5b893ad8e1b93d111ffa44b3071460b55fb4a158c023b7b8495c9a0db60d0a83a445c75dd4db244ece95f05be724cdbae08067087de026b2bd1339476faab4050b0ae815d1da48ac2dd72041364bffad1d7c89c46e465ff60fc3f1aebe528992a95b8e7ac8a364fbe13bffd3d3bdd6b9fa8e049dda85b88ddc8bed71827108a08840070d149ae046bf005ba5f26bd353114afce451f3bf5f892ddddd2d2e2ede89341cbd74d6a37e9bc7ca2f60cfea6bfb39228cfc8f39a48f3e25971fc7ce8898923c497ae8bfef1e893b6d94abd06b55f92fba68f7f9f68528481e8af430978f6e493634d3fda06e7ee0858aace20223ec739e9fa57c6c729638cf131006dfd87101d56a89a914ed86f1702f200b911f41ac10c59e626e5baad1cfd17be3bfe003f9703ec2c75c6b1e2f42d2f290bc71a0ce6809bf52b104aa249398901fae72899380958b1d578d711de1704220ca7187fa89edb5c06fb550e461f84f6239347d2a89282b0479a6ebf111779c48a9cc51eecfac2380dab0411076b2febe016847d2ce239cb6ec2ed96205b7b0d6df708d97d346740406ba9f8b3bdbbb5ba4c9fd712e742394c6aee3a2806eede9e582ec85f299de86f32516ecfbef7ccc34e929c176f7d89621580f74c1165f625392ae69b05b0be80cdeee5ed36717dc0cf607867d65c6bb0644ae00be1cb4db946db3e1011ff78902ddbb725f254e7d0af5669f4b246b1a1134c3caad7b6464decadbd68d9ce5b620600354784eb1d0ab42398993acc8004b055eb5ce2e29f2087d982de7f243706123d87e5bdea806fe4415b8e3759d872566738d8c142b39678c251a23380f46bf095b0ded3eb50536233ed5c36e80c9dc11ab89a711b24832d422a65c98f2e880b72c1e1599a35933b12328db47e1a8c5a04632c0eea7726ced03d276e893d81fefa20e82e94a730dac252b4b2616b127af0c939c30e437120341f09416632e30e9b0013b1b23a04060cc9b1416a4622e960f96dfe9f62598622b2592ec6bd3879821a4237c15a33492ffa0b3f677142a87faee33ae49f55ce74f9f57e252b32665729bffb95494aa2fadfcf37e8e3f62f3d9d8a726d7309018ac777efaba882ea2a6c073bcc6b0caace325eb5c503559dcb14116f32ffcf84ee80f82ad3abeb9cf0ff9e56f3f3e0ac130a6e85a2fd513b8ab4079ae0735163dcbb7bbef12cc48c408677b479339087af48a099508c8c316de07fba1d4800a7aac7159fbbeb1ddfe3ae380b9c811b204baee877b2d1814f10b5e4df97c3255e486ac0442a877772090cb1b3a4f2d06a939a4c43c23e158f3a5e3af35d18e203a6061b78e6caa333d171fdb184b86135165531fd536d59d6eaa6d145e2d3835be4e9aa34189037cbb88d338386b7e8a034a2b35dc54fcaba4e1d3e69dd4aea999bb183300bb23d37ccd64726af8b32bec6f8c75d4057291ce0db2316af16df03ffdfbbdef676f50c1fe51f9afd880468bc40786f2dff7537c7bc7cd5768f3459305676773e27638f6f2d8b31b5e6466b47da9e00375e733b67caf30363e8394dd928d9af83c25edb599ec928868ea8335b113116b94496b21300cf52ac3b9d6b64fbf6aa47cf2428ac6242e450d88a8319476a0c246a18005157363c094b102d5f4620a53ee94c01dd2af70766ddc2f840fbe5b4830478e1592fbf8704a297dc8079527df44ed90a439102ea22a36e7a32f401f2625ecfe2e9e7cd3c4b13a3319609fedae5971a22af4b2cb606d83ec018caae0925d8b3cc25269d4af5e7b281b04edfa299efa25577759c4d341c8f9d3c0c1d664713f0f0b1833dadb088d7bf21e66cbda587a93f6b33316e22c255a8baa344173caa06f9161e002dbd9f461635513189adb5e1a7b760ad135349bb14b1cbe0d5186ec02d4c9ff66f5bbcc20a9aad128beea8ed4df78dd3f12fe32f3de255ea6946b4feda8aacc7599ddfa0c99920b6c563ce05832c73742fd06a54599a49e6575026eaa007d762a95303de634ad7e9ecfd2dee77c1676cbc12fd08452a42fb47001601bd35c6fb5d9e35b746a134819749110ce0afce7823956e3306baecaa62cd2ce199cd0d16cb4af4cd1dcb7a7aa4296bab1f73a1301925d55eb4827f63fd974b07806ead34ab775e4cd35c124b8e480084b609e715fbe4c600e1807e840d7972287807210d850d52a5b607b1d941b5fd23f2dfa9b41faf843bf529146184ff00ff2ca95871e9e1709d1affe1f9c629d7a06e99e8e6e0b075cd1af1120e9607a09d437bf82e3313cdb8c228eec51a9322368d8d5f5e74f41f23bc2b24ead79557e778a886a537068850bfb5558f99c99724abc8a284eceeb74d195a7c4f20ad68c186ab65630161c55b549b4b868018f73580aae50a68782457b3c98530c1184bfdd7c113bad5c183df7e34af3928073a0bf1a44e02ded5b46f32b9a942c1f1a180fe31c082a480b3bf16e6d439e03f24f258c48ac1486fa550aecee349a49cef1426651edad384a95655d990bb9406b55c80ceaf445221e31e93e8ee50da2e2811d22ea7697934cf1fbaee8b39d3bd390348420030150d98d1a47dd744f31e3a3a2e4aca259acb003c0e19a63c4432de125ca26f156a0ea27a5e0a5472597d1b8186f6b7a53e454f562c7fa66a3dab6593741abb2ed31c5cc36228f0b0f4d2eb6c1d3b4451576ead29b4b0a64eb830685f7b1eddd6f0147e5b24328e83731d5e720f077a1df09577121dda77512675218e5821fa3900a81bb5cc65991e3a895e5269b7a554c52a87a7515d51da2db571748168bda34921e2a4054eb87db881aa479902d1bcdd1da8d7992c59dd9b05a62c1a2acb11ca14b7317003eae0bf10e635c3b54bdbc3f0d9559c5c495cff936f34e14167b8bb761dc17bad45da522ba713b5312f15149d2f5be5a4af1ecb22ae822848bcbff5cb6cb1a6628bc0e21833a715f9119b99372c37772b602083d11e6410d909b67f04ac6484eee23cbf23c7ee8cf868995c083dbc0dbead6cb4dea56d322caa05793cba89149c33523f28f274644e9049b2ab01efd7f56f1d0adcb161dbc122389a02c70a4abf431e1ead56198d629e5b64af69e4a2b72587dfde0db1ba04a3012f81fb93495a956291b037b002b6720b6bfccba5d462310897ae15a91a19e0867745d4a11f4f72703033d704c81fa1f9a7899912c8d7f69f57608b051e2f5454f584833ac0fe4ff738d1f0d44ede522aae494b66809077e633b5b442317f6977f2cc2e8e79c4ccba8688a8ea2baeb98afc151d142551a49135f572929ae426c4fd33f85835464e92c01ba607a0b77b23796b757fa6bd64c95400a7827dfb1a18f298f96bb83261a81740e52ab9c074b41c0c4a25920494f2b20c8d75bbbe40bd9b7f0bde7d9e6c6f381755f4a783ce331b0833e26a433470d86fbe11275392ff47b3063fdd3b2486bc081adfde623f481e84cc0c29367d7690468a8d921446cc45d8a8569c046725ec7834633a8936c42ae64d3685824a9b5aeb2f9b27246a5661e6b2686231f173b6033f068b424a925db25951c7a6033005080096c788af8f4ac5753b71c70480cf57ad2a298d1d4bf331928a68d4c46cfaa755f46cbd57b500ba8a367c2cb2ec97a38034ee54ccccad9d017d39bd1284783845ff4a0b3fd7b893ee6908ebfc8b6dfa2ce573f28424ac5e5e810a9f370af4d2cd3613d993f24474a339e8a363fe3cedb0de14e2929294eea920154b6ad544ce2ca6d938188c746fffe4e2513f723a032cf5974a69a798da8628b9bf04c04b1017d5f1aebed9502bb62de9d559ac96888793ef41435d437c604709f80a7caa6cd4d96a6a5872a512afa34d6b9fc2ad49916a44be0cf25a1f814ca68cf67849b7f3ff0c46495e292545997eb2b182bf8c44a8d552b86a1abcb2fec058f27fa5f3a37cdebc04c44446f781dc89d285e320ebff9c6d57139d2c79db6bbc3894bc4d8ff12ee5fe7b316120f116f721f86e33f1bef927bf65bc493a75978013c6a747369a83298ee72a453a9ba3188413b8c255c9affab5006c859a066c46273c8d1b502c3b33391b183706040ce12817a74503194fc27df2c6f3fc32b0fc377f279b3132070527b5707533eb13e1eca68152493457e646ae485540122eb04474594c5a6d667aeb3723e6652ac1abdc0de80d12714a966b88402403594119c27a04a16ccea89c84ac7cf7ed25b209105ab4ebc08264ae7b53af843e2a7f7b9a813485cc3f8bc3462e90377b4f9afec23a357f04d18220ed74b41f7a1ae87463b7a94914e33425cbdb704b6a37b7ad711091d9ed1727d818d8af260385a4837054541851906bbad1aa3b1f634a2ae215d18819ae061fafd42d7a8b418c5f178594699015c0df3496d229e09aaa049a83c8cd806caf2005e1f0762433adf56c78af598d3d6fc0513c7f94775e50f2a14ea52fbe51764f638bdeeebc22dc3fdde2c9a526efff111e7079329e09eae4ef97858706525c3b52ece6afa718b8c238101d93ece6a9fdd62abf5810925f83504ae210fb0e0fb1dd980d61ecb2ab32daf594a9d863a790acdb7da9bde2885bee6bfcd768f435979545d68699acf679dc3f3f5bf1f668a8d62b867963d020788b7068edf13451a636cb2d6ccfb7cae8c806d041f9cbedbbbf6ae7ef8103fe67a4f0f793fa8c7dbce26fb5b4e87294f58a4373dc2831c72ce5c4a03dff7d8e024569d1125cf8dff7dace8323e238a6318a087f2ff4e1650c941764a994b38d57576c783506b2981730487b5e23901de791a8fc04f8ec010a30785841d764093b3ffdd0d2a9a943bff2e65bdbb1a7cd303a0d538c8241e82d60f72132bc13bbad2a9f100915444445a1f56ccfa80e2c9a7804d8dbdd852da3cda85c1d185557b92cc728c96fe1f95fb9f586d82b215054b27a89d8677d7c905ffca826888d4ab90851e88d68551ed1f98f373491d61ecadebb6ee3a629c0f99d476c8a69a9b096cfeb4f8a20efa672ae29ebcab5da03146f2b7a9ce36359aa7f3e852c055dbe52db9ba425ac5a4049db95239e614808224d599a0f69b7eecf2628b7d015cb357428e928ff6dc73f3943c20c059916d9fc684047ea74d33829ad65e07c186dc7c9d5a943e4e5088a63f7cdda9ed5db56d3f83da81bafa70408d2e74c10dd946298a3dfc5556303aa21dbe3f744b0508a081b88a2a3feb32f3d393853547d907b5ab3e89d4107b89602eae5c45d0872af57d4947ced09b056127f8e6cb69c4b7c00eddd1cc27aa9bb6a2971fb8696491446ef2a3bb52dbe3d08fa3325b259d22856ac73c7ef90da8f40d3e5059256251658584292dad5c49870aa5a0efb1c102b02d61bc8e6a37bdee95615343ddbf87953b7b63da6cbf552619436f7371f4c781d7187b26faa3856223201d1815f62b0a4fa681be64ca8f8c56ce4ff64c72bff90a247de90ee14166ec46d97d25bb66039871e6a0c31cc39d2b8cbfc0a35b74350288be8309d5def4a6d2f4f9488c76ee89d147e7cbabac66126e465a9f84f533d50af2645181c64c769d00e6c03fbc7edad82cf3c87324b80c460b7c32013a9df71a198ef8ab7fdf243daf09e8e5dc6fdad85a2877a55417ebd29c7551468809e917dfbc0237b19e54acfc83b304a4a865a10136341874ec179eb9e760d1e80ee7a849fb107f1309eddfc00efb179c16a259ff9d3db948d34efcce22d067080f767b3218e7c84c092a460ec08bcfa00e57e584970911ba593f68ffda5fa155d0c03d4dd9d3eb18d92ab0eab8aae5c3c15d2d939d87dbd3bb74450aece9b42c2719ec9a9036ece9dbde943568318c2e5e9d0f0569ac0dc8dbaff1b7398845993307ac5aac34e6d27cbd144abe74d6b6369fbbabb737014a1a0119ae0aea0e215817030a3fdd37bd1dbfd7b46ca8f02805deed0ec65fc2ee9618fed86a3c1a29c89612975e02ad8c44e88ddbe9de279e78ab06a09fc578d9083a26e1d964813b5dbb72de6e0d9660e8a46bafdca1fadbfdcd5a030352568fe2dd7f54f53ad5f3c544c0493f9e5eb76907a0485ff7d19055a207c83a1fca4baaa6579d3519470afe1387919aea9eec102abc41ed91e76496caf49a9b33f76ee0ac5064624de84eed4e5caaf7ffbde70ebc5422211e3673e8ce2248d8c01ef2b080098d113d1b6224d4b978667f5098a78c9a9e01df675d6c4637799501faf4cc5a8ab545100387b55b7d502a0618800881eef76a64e2f70f243855afbb6a7e2d5c1c46eb20d583550ee84a02eb241bd8125320a1297e348099f14a7e476fd2230923098bd3b6b4fc7b58bb3fa985f091a8235f82fd07033b4719d87cff54b435907165dbf24cb73822a6937965c82e6d7f035677900d259e6a9b51598b9bcf0e5574a116591f11bb3225c6f72049f3239f0e762eb6e186c0c9efe085a492710525845b52d751b73222ce7945bcc0d67e624bf33679842fb8b7979bc711a0bcd2ca9ce971fdfa9b3a9228e0e3c63816b474181b70fa43eb349652dcab9cdb94fb1d9b4506175ff26aa7c261d8ec424bb30341ef8511f04b1f685cf5c3e719104f4462571bfa36df95116f5790a68be59845037fa13b27ca9391c5011408dde9f21fe00b2beb6abe7ad5bac866084b1b46c2bf77cf01a0cc0e97137774246f0a4640a2e9b7b73075ff581abda3c032f9af09fcdd977b5ede92c0625761fbdc28e174e99e6ee844307129ca2a546f1e0e9cabb8e79b2c3dd31c589da604447a613c57a9cda4fbcbb3f33fc8f7c0abcc7e558a88de150d1abcd4bd72d64385846db08072ac6dcbea06a8d91441737e1005b6109386154c99dc71ad1a44746198eb4007c34c7bd27a0b9f0e41a2a948cd398d5cc998f01bf50b80186482aa133b817ca15c35ae34885df6652af025df3927363d05ba4f18baf09b982cd55f0539effc5a50a31f934dce5ee8f4eaf6b955b11a6cce07d19c91b25d794f637f7c2ae4fd0422fa15dc1c7546091010256201a684819c96f63f1d02df07cec7285f2f008b92c19ecbc151eac1a87eba095dbe1d95b8f860e972c793f5c63c8aa44d83d769a6d2844221ed29b2aa9bdce0819a76a23a0a5cc77ee3d7ca47bdafaf76b75bf1fe9594e2ade9f54f1fc09ff02bcab9e499824a304d19e009802b93a4fa93dffeb90410c1720a53444dd829b04c1f8613c472ec3c8692e565eb143ea492ff492db6800c6b06a8d35bd96bf8ff502b3a39a52e1aba4b44c86e54421c09af57b0403395ee438e4d3a40056c3efdb3529285cf244075cb626db3be4d1e607220272f3d115fd4ce345f844e8685316b02f82ed37fb9a8a978ecec03062ebf1dbb81228917700eb1324487da9bac6ed36455bf48b64778c7f77210075e8ea71c830ec2bb2d38722a0bcdccbb32083cef5d9f7cf7523b77b9f7c6799f01a487bb2f7f9d5a0c6b8d73e05143a39067d04e27a1b774445de3a316c598630ff9bc5dd241e2c09890a15fe1155503d990d28fcc20eac578411e50cf05b863fa87337392ff675cd86fa8f94f8672ff306490e529926c242eb059c9bd6c7dd0ec2fc05f6a663d8fa237bb27e5d127a156dfb0fbee524ebbb47bb5bf6a5a8df7d6c3efee7a023105caf5de678f37f3582c37957ffe812962186903988f05311ef443c3bf0a4b4ad055819e5ce5f2903bf46924d58a2b6331ecd3d24ce16093a126a5b830cf5a7b32a889b1af1a2a30c2a17e77a615b2f7df163625c661ea4ecdbae1c81449aa8fa3e6da32bc0f9c8800702fa230350a7a14d3371aa30f648fb2173f23d6e4287f2cf4cf2bda5492d2f78d67b183b72c29f3dc0a5888fc5f254af9b142db0967d2761179bb5146af63e1420023acc1a2e83fbe5fe14ab97542d124a8a8739f627fa1f00ea48f9d61dd950600ac0dcceb61797696f84f30ea246a7c69dfe34644f26247adf1ba5f121c8435ea1a50ac1f2d4b9111fb1a38923d5290448f942791367b44498bb347489bc5867351735c6461dcbdf9b1998c80e0932265e18bd8c96ee94ee1fb614a9a76041784dedaf834d6f3887fe69f79199ab1f6e1d0dba602ed3aef7e516dde89901256e7a6339c47444bd88af1f1b5b0f348a39b5a1dea54d68ec27929ba77a30ac0ffe87e91078ec9f89b69adef5ccb05814f78444ee87b9e86742f5f0baf034025da27e694c547e144da627b747ffaa3772d94bc8e2f03b1edd6514b0200fadc696464bd3bb181da48a0262995470858b1d3729f896b5f0f8c1844925173f7adb740ac49b64c86f31e148d2e63d2111fbd17e7b4d0142aff3d0ba48705cae8b109b45e4a778231136ab29ce50c1b3379bb181e6794956513c37f93aca9cd26969d4d8052a8658bb13e09dd39e5d9844818eebb28be3ee4c15a9c1a4f429c0f6b25001c259d6b48f04d936c60b3a3b55589875c5f06b774ace3a60d969594775e814a51bf333db1e84bd070cc6bb4fc59d9b323e76f46f9d218e99097be35f3cfb67f35f21711c6dcbb2ce8eaf9390948fd111de18cac007d304a89a5d914164a3c77c504805f2eaf48d6e986145ac64e55b4424a65fe542e0a5ab8e84cd0456b12645c67f5223b0643637997526e01e01a42f68370a77d4c00b4268175d7d4756a26c47bc7851d6286b1e5283dc4d46ae50948af71a514d39237d8771c6dfd9f6abad9c75a68a09e54efd6407928f4e0ef0078ff08acd2017c8d90a02b97bb1d5d1299bcbc0dbbab404e6f354ad2e777c173d4b937938f68b4e03c0506b4365e676b4e49efdb99d12342ba0e7cf5faf6443de9e010996498e0a0d17b4d9c25a5ba5fff166f02b9f466621b74d3e03ed7eee9bee33ec504983f6dfbec127944430d590b09b6b407fff74208922f9acddc60eff7bfc59b4426bd9bd860a5373bc2d5a04b70517b643f8b8915517d6a22a5a69965bb9aabe2ad613669b9bfe738971f559dc379af36e3686c31dd8a5fcdc2882ace81436db7b9901b416d47a236d2e5dc092cf06b869a9207400e348038e7519e0a0b06d5505ad53ba5c6338464cbb165bd48cd03874cb0d05275314e4dd4a86e3303d00bb00397b4038164fc88bff8b9aa8b141e4ed7000029aa974cd95e7c341e9136da4fd110c0c2874b8343a557da7194ded861420524f2696289625d035845d3bbdff8707954e4ac6aaa9e6501d37397327f52c23d96aa19919d646d57b6ab87ac1eb956b716e0421aabe70f4a4078ba20e149b2662b94608050855c0b81116a3de6f981c4a3502d3d8438140ef3d43ce0fc2727ba56792a6673b3117872272259ebc8558772e28e321c2c5de41cf015a407b8823f9225e89540e7f01aa471219682fc2f91a886232dca408a557f3f0f11adc678c6e777e582b0b53340bb85391dc75712875c1e45171457f44dff5e6a9ca2be52eb9aa79e6bcac498b169e2e1d49ca9a1bd94b7e67d4a34713465eb9cd2b4c9a843594a54322225463a029a6613191b1636ca05b59bf33fb435d86c448044f11d12a5103f702b89c9dbdb00e40da897428eb52576adfd4f697933c3f9c46c30553a54f9aea22eb8ab8d466818b6110de984ac530b521f0b03071b8bee0d40d48a7d7113cf8239ad49ba8788c5bd07d8d1aeeac9f75f7c5a8dee32a0987ada236ec16e9742108da0e567eb030b78a36c210159987a7db59c7bbb0aed1e162b40caecade34b299df888c96b535860346bbc313d249014b98205d53c5d9d21f9f0a472667a769abf40c485bacabaa736d7806e853241b89aba849a9f73767e9105da24bf0f115ca25fd56dd5baa9def2996707555146ad2e4df321ac80608945265a7ed2ddebc73ce0534921c58dc673e5597c9ebccd7563dfc5ee2d664100717bdbcbeace326f33b1de359dfd6375d383f5805ebb5fed50948eeb41cf91bcdd20782bb7d4b879ea09c2de105db06fd9a5d642571d4b45d706abe58f52a4086a31bfb8d62623ae64f4a05fc9c980e2da7625ccabca13a2bd49080da076c50488c42df574cef14767e023c612cb1ff081f59160d9275f35e188a5ac2b88fdedc8156b6fc1b3f03afed635dc343b8aaa8133da48a6e36f7193fb6d2de97799481bedb7e4ade64b0d45822a0e02b4882b2604450d49ec41dfbbe606a4fd16bd584e3d184d5b89bad601ef79a4a34e1e3bdc1df0cb93df3ddcf17ae18a46b4509c3341772f6da9f4253844da428470287a4c8441685fa03822ddf7463e66afd0fca2e33bdb4aa42b761e91d0b16defa4c307ee9f8eaa16fe14d0e3b4b605988a18084724371e3471d9e8a23ed20992dd82628d7a0236654a40a43d2d9dd69e0b77528597cd233c8683c096c8ce25b6a243db31fc2a465aab0dea1b1ce84ee1f4a04f5adaf488680ca4e8cc6c2a350041dddfbe4029ba6e9b555d08496b5052b4abc90dcce7e33716377b10918299d78092a75af22ee81568442e1188d0e7ed4922b92d21ea3e97ae8e6f1aec07d18b8b1672c3248551c447eafd1cc29808b4cd6f411c1ccfd4ccad586857528cfff83332acbad2338e92cc69a2af685cce77956e74fecd750892d356c9a71b1d3e62da27e587f2f383d4570fd8ba93f54ef787dfb31a77fbf4ca4bdf94e61c884c9e00f2913df4f9e8bc3a6ff43a0f304ea89f5bf71a1010feca27f7bf8c27ba1f9bd1bbabe5701b28da7305fa4c127f59c255a0162b8dca1a8c258391c9f89972dc1215730ee26de3c235471b675a649fad9600be2a94e0d4ffca42f9a23c70a3ff849c1d4616a902b3c92fa6ffecdc858ae830719f2f7c04c26df0edfec7644b96c2c7d9bec6d7e543f4a11c240c579e528bf0e22a3b09dcfd7d9d304cf4e9092aee540266faf85e7e85ea4a3aa7600c533328ba5ecf7f5b8af26bd9e3d3fc42910fcea81cda75a64fd04688ac2fd8a90f90ca448735666d726523b856ed1754ec2ba05df51ca2432b0a9779e01ba84420949207c6f754d683ea2212d9fadd33e4fb61635726c764ef98a6270682056b9cd64209f1744e21687dd84425a07070cec3c3cd7f7b0080f4f565712d6c44d0dabaf59ee0d41b5520a6ac4de6505c470cdcc544925529e5bd6e2ea8f7f2f096006225e1d9a316c0e0583da21a0d4dbd1adac486178bc97c574fd498beb80691522eeaa09e8a935b5bc655ce691b53896b75d1eca6eaf85f7e6747a22c97a450197e83a108c84ad7393c3d80ab4015cdf8b4da975c4c33b6eff71c51bef19842f267dd31b42a75c06e7128ac7b33203c363cfe7ebce5ca21740429953c39cdcdf2ae899aaadf45c8ca499fe413b1a34b3c93f77cb081b519d66850f1cc656c4c7bd3ce86fe322ccde345bdcdac934745f005358a38fe0e567455fe14c1e4111793c095c5347515bae935998a8e6bb27a0c62866e9381b8408d266746b03f0dea22890a259f59b5d8c6cc5647750ae8821d4dff692301624f1b8ea431a7e74cb2903a98c92cdfc1ec59baace0cce11680a228db51cbb9a6e2333f36754444036a1ba26d5c3090b29a0eb2c8eeda9afa0033a8e7f507b400c5260a7512a77a1b0cc78b5db07898912ad9ac2a92512f783093ede98d2c0a068643eb020804a1367d289d77154f070c696a2364d0ced0d80733617214f5166b6db735b9a5942925199606ce068206db8733269ce873dc7252619a62da4a15c8562a6d30ae9914424841d5a418e2494b3184939aedfa2fd972bd55aa1b90ae0969621461bcae4b1218e0d2cf48835ec45745b6b0264bc68d2cdaca38d1e178149b155939a221d5b41cd141528188c43a10883627c495fc222b3162b99247d83efe037884fa310a71b19ebc21b1f086a5f2d8173201bad3854b6342541a749f063d08a8417f8e01cdba26e479749d898eb8cde963a22247c33eebb8cd4c5cc9a7a93f7480e87c31fa90f40b53f82efd5878a1566bfd4fd6141473c30e2f5264bceae32a2af92dba766ad0a8bfb9f6e3ab586e63fa4d3e956fe5bbc847c93fc9f99d67e34a559a76f6cce18615425a8462444546475868483dbb321372810de6f8c1861c1454a58f5c5cc372a4c355745c3b3c301f2a3f4041427cc4d201cd0f3ed27149c286dc6ae570cdb5d16cdb46f38375b39dd01b0e1ad8edb76d9bd93e8ee0f440b76d33be6d937eb596d1949bd2a6dc524a7b595072a7aa0c16d493a99e4ef564aaaab7cf53ecf78988e9f96482cbddde7a2ceaf916110459343f6ac013626c8794980c1cbf7f3833e79c5d42bc737273ce39853aadb4a3e6cd26092bce8a0c71edbc60aca11b227e0019da31840d593ba8b0583ba8f0d4a194529b1a57d2c6c695fcc83282e1121258f8c09d526503954db9296dcadd55ae54b22817d40985e23a948ba34e25aea31dedb8a7cf3d2d715c486f074217eec4911cfd5a30cd8d3e8efc660437704b2659b797972fb5089891135ca895a3e30289583dd0fc20327d477ce50fa200002836fc9f71980c9a549bad7e344d54b0a661dbb6cdc49dbc92091bb8e1053a2f0a3179a5b8bac0cb95cfb18714b279e1064a57fe9ddf945a674b30b87a42db6cf5db3e23ca6221f900b758879db08b7760cecde21f40a211007c9034e88f82db2409eb09494c0c3604419af9c3d695bbd6aedc2e71dc4a969d26e02c95885c9a7a4cb0e933adcc9f0934ab4ca1199b4473368bda043311618285a0cff5e9ba62c3099bb0cdf4f3846bca4d6953ee26614ab9f96c939e5fd99bec96bd4929a3091eb8a107584647c9592f5217719beda3f170c6bf4503d71f696fdcdbd61b778ce0fcf84da9b34a8f9dfc8b1194b59e4cf574aa2753759a36b17a45d3a09760fabff587c925a262176d4e5f5859576c4863fa205de4747ad4f7855fbba944d335a6f767fd3811e1be25f39abee33c8ec129fda78179b788e596fabe50c30fdcf914477e2dd4c69191e2cc526d6a2d8fb7b434e8b4737ad6362e646485c6b5aed1c249bca575b86b61a741f3a36b0efaca3f48738cc85b3227750329a57c32e44fcee6845ef9f30d2b6c383303ce2f35657b8f122693c2e31f67fa03ccdddddddddd1db99b3f768c3ebaab4b055cc9c399eb252f0a7177a66917922d1c8e70f9c1e10ac601088bc3ab2937901fac192ecc11b65f8683cf16bdf84d916921fec2802360b21d0be71f51887180fcf911e08f1f08e2f3cf0f044240203e7f310e027ef9c57814c2bacf0241c7011c03999426329e9a8ca70b194f16329e2a643c4318b055ca763892ed6094858b22e01b6a7dc350dff07256d4692bd79f932ed8ac29b121783b5515c1e5d8eda7d9e201ac8a26c970a9d18ddf321b766e3f8dace1fa17ce0851e18593a4bbba5146822aeaa65aa2e4f2b3c069fcb81c2e795fa1bbf153a1bebf9cb9cc993e14ea4b4f5127957ff7f443795f85fab27b1ddd975e76a512df06e9d735e8cf7dbf8ed287358a52fd292e5fbfd28f2e5dd7d0ff6493e09f4c2a074db68d8d5f1a83d33185a03eab57af49b96d1b75117071a65fa88d238bf5d48780eb56a19fd321002952f67b9f4ce0d66df66e29fd93dd3ce1c808ca977376125c9cf1b1f363fc7e3473b39e8502c6c22f9cd565a106fd5d4e1af4a91ab2ece21da322a2584e83de6a2267fe269f9965f458786152a4069df68112366c24f92ed973f873772db15ef99b3eaca52a23b3fd6103215d8f6d99499e53732bd4dfa86b36070a9a4f6344b3a2aee1be6d224c947635ac6bb61aee4bbd9a877eb6c19dae892e7ca0fd7b8fb94d23f5ca7f6b24fa0f82ac1845518ebf6cf90b09c5621dbbfe3ec423c4eb8f230aeb1f2ffb3752d708d9beb0d20fe9ba14e26626533475d50a892808a480c2e3688175f9257c4f1fc6a30a1ce91aca23447f716666f64874f9e55b81bf24aa5b2abd4f5679f77322b9f35b4175f953a1ebbacb6ffac805b006805d79b9c9375e0a0303030303235f54f25b417543264148ee8d4fa22261daaf6bb0ebee0d98edbb0fd2d6c6d76ebcdf8f8dd7ff23c2864098bf666666ee216a2d3c438eb45345628922f0fc1f0d36cb7f7c44d4780f0dbe3c0ed6d3abfe1c1ea7f2b89f0639a0221b23f2f1714992a9718cead8f0e4c5e1718c897ad5d7c56bda814b3fc27c0d4fa23e8e3d4ef2c6d30b304f3d8f3ae9553c7d3cc51adf89eab8e4d8a70fd27d82e1d876e25c314feae9e3a3e0362f53df37be3d1b35fee579a74f9e6cd06db89df0795e9eb39122c2b93c8f33bae17145298f9bbdc7b9389e1a1e07e37a381f17aa43754e5427a43a924a7a8af4038f33f2b8228f9b799ccb57fd268fe3e1605c0fe7d3204785231aaac20131f78a1f72aedb31d21841e93c93e9003c29c223c811e6c7f78e05d658fd8818c1f184e50f23ed8b3ee6c73085fba705301ad1930d4afec2e866c68a81be6d9b94726edbf65e9128e5b75109013b4b9fcf8faaaa10f6313fdcb66d7b19847df8f42d062ece50eb2b5afd6bd03f9bc3c568b3c518bd32b52ad58d510476a75e0ba652ec1125ed97eede4c660e21cb1f76979b0639a72cd56ddb3676e61bd42f4a6f4aa9346f303d8f81e340b831dea053745e4814a1b4c901dcfe11fbc7667a4e7a268f6778d299b4a1025dd384ad3aecdcd8da6eaa7884187dcc9f14e84c7822f23f883620c4157fd1073f026c0e20801000b7bf7aa7588a33821c1310b9caa090411634b81d8f6ee881eb924e980f46c87c3081cb7c1881dc22a59c148604db82ca60b34d0663a2ca603e3874cd2d25c86f9449019249e99149f1c1c118aa0d4d1d4a46989a28d52a71e8a10b0255121a72429022f2e546d98e11152e885b7cf739a78caac159b7e8abd900f9a9306d67b9e052cc3da085d0ef3df006d50ee86f5e8ece0ba17d00f9d3bb69d0fb93393d8085d00fe2d20b7f50f086944c6bc1adc8332342a81aac090913ecb4a0cee69664c5589cd5598f1094071db8da35f4e3cbf5ca163af688bf64bb25c4cbb147e441d640f6f3f6c25bc95f2e70fbb95d4c578635c2156e37471134b035fd588869dcf9716bb171b537d6cdce13ae74a36c67045a70389e061a376432a5ca8df189da0de1ca6d12f88b1d31bc885d54b9fd577ad0c28c2e908856a8d4408bdb531811655444222ae214415a941163ad267789a78ed0a284104630e7860a717c28c1c7143d64400228464d085a44a2293e2e74c4f032c565c1eb0a5ec888b0105fd06a7297b409a9db5f7881a2171d3824c942854a96b82d4da83003b30c6cb9fd5203482880cb628300c3b8fd25d4196c36b8fd7387132ae4000f362e4af0285d4a77e92ea5bb4b29a5cbee0215de19e5b6024a43b747b8cdc4b93a89d1b30dde00e04a0fc13280423812407e4ec703c897e185c44800c93cafa7f10e02952054b475c3188b43e4f38b222922bf0271259f26d67e2401e1967b9c6d1142faa1e94ee386aaa63bb376c18aba26641acc870a5090d0508c6866c4cd34578db5b88ab0024ef55bdffa96ff510d995461580bd6ea9f065da84ad8b126a202e3fee9a1c23458bb60ae76f96ff4889de940c859ae170facc7e7878574b3c40f2048372cf055ac5697c4e29258a6245629895593582ef8cadf2528496863227b4a1133830dff67ac0c2af04642a06bba08cab7cf8a2bf941e24a16e18f11941194a1923b2f95d16506a594521cd89667a19452efc667451db8a1a2590ba8a5e364e705ebf1a1f21334bb32f3d6ac85d4499d34f444decee9d68b895eb01e2a3f4155848662b36eb50ddde217ed157bb844614376b976e4ad95c86bad354788ae4fbfebc76a42b75aadcb953c1c59b7529526539ce155bd6ddb569f4ade4029d65a822c292120ffa9f5d4a2ab772cccc77f7c09ffe19a506d871936641a0d49a864a57b7eec215ff66c6a993577b9cb5fcee33deee33f0ee4415ec5853c366b338d5973571fdd10745d4f72916243d7719d9ed1d613c92d9925b7dc36a2ad7aecc617aa07593836a62006861f307cfef0e5963e769f0562e9e6be44da472a58ac9b1f4036c6f15bfac00fa449a2a44147127ba4acd0984c3eb9807d2b47c7f544600f3334441505b7317d5f7aa336fa236c18878614d9369667800dba20212f6cc775b4734443d292d439edc4f57297bbf8e8e728f5850dd9c8c88ac37e701e6221a642692bc789ebc503ebf1f911a2422826c5ae035c08e82b1080b061ac299159a27221b326aa999b1ac3388b471d1256fc1bef364efdf4fe4722c751972e721cb5a8c871f4e4a5d02b6714ccb0f4c338c4f499369d3fe467e2aaf428aff4434a27dcfa2f361ef5fe11b429ccdcf06c4a258f94dedf8657c3337d91ae317da1925bfa8634e8f6d6afc88984edea70d9300ebdc4d59cefe2e588abf99d478006f817912ee9fc2152d221b4eb47b721d487c814e9beeb90d8a2005754150b2ed424ae2937a54db9bd05ca1ae8e8ec91884afef0732405d0b5f3825921c2ca564d5cd77d4a389a894653d19e0622f195bfeac786ffa999ed47f6e4a137ee6deb8d9b6bee810d33530d8264786246151738a92388218b0d53c4000662f4f48cc24a495996e856fabaca5f27cf977d3dc61efcaec3d78ddbfd0be96fdfa41fa428adeed483c0a5b9b176ffac0b9d3b9450499932438544aab3b20bab8c8d10f811f7c0458939938077c8109cd74eca1cb103094a297d7f4aa9aca9aa8a3d94e8fcf95be2f7dba1c4b4a5242a666659aaeededdde41fc95ee1cc6a22ef200236060e1e446415ff92a1583bc01da6184ca48880fd068f2910a3bebac35cad267254a7a2523f58b8e830d2c3fd8b0c10feec5af9fad1ba53de79cf2462b062efc35f377bc6472cb946da174977444feb5c1f60eccc2b77093ef8e45ca8cf9c5e0b4d0d9da582cb95485f6249dbceed6763e65779b098ee9b353debea841ee52299bea2c6da35983fcf288abff3babe09f55f17497df4a777aa77bce4daec82184b710092ef8145fa7115ff1779b5bebab96f259b7ad0559fe75d2bfcabe3c2edf5002777e52015dc383c7fd1caa97d295efc5118ab00f7ef9916fe983748c91d24759961c2798b3d2a7935b0df292d3b53048299d3fea49d91c8343e9178313239fef74cfbbd6d29641a4b26c521ad952379c2fa5046bad75933418614339a56439931b4f46aee06ad730a78082b777a4c1686dadfd93d22fbc615daf0dfacfc9f21143f9933ba280bb6195ad0990dd9df29854b971e84a8fc2458a181c6f5e8ebbcee56f7792208b78c286724e39e7fcb9c497f8e581eb3a25f36bb4f14f753488fb12799dbbdb25113bc690324ab9830ccb36274711d665e75d276b0e1758fe4823c1075954fda5b8bfd0c86d1e526c68595e6d4a9584054477e8cf6f535dca0397bd8b2706c41b4e31a46db0bbaec18e29f972fbfa4c6d97debff64c5f489f8df0e0c12661558f75a967efe645a1eede9b5bbd6874372fd26eaa6b9ed2b8b9fb072af72f9c3d4d1e7771a7d79d976a30768cfc29bf24ac2e6ecda193d2126eeefc3c462ae507c690e4e6ca9f496eaca45ca58adb27a5acdd8c371934cef92ab8bbcb96e125fd6dfb42faf373f94a754e4ae79c93524a65aa732e032066fba308b1a5335fe1e2cc912bfb6d7b29ef1a4c75b7942dc8bb64defe2a5c9c095f7e8cdc4689affaeb91a545fad1c69f4395c816b9d8157fd24e1f63ec59ec598c3f5ff6638d8fa88ff1e7cf049a41b3ca1492b5245ff5f631c2e0f818f351e6638c405e747cd51fa3eaa38e1c1fe985d93c4a43c291e43e5a7aa885aa6ce91c1dd7ceab837c7e603eaf0ed6444ad25be7b68d1b291e3d262e758571f1382d38926070b8e7d7c56b9fa6f2a2e33694c66979c19143874a26664b0701fde8c8b103078c8bca61605c9cc671442ace4a51dd66dbd016db8236a1cd47c6dba86c3fbeb51adca2a56b5bced6b3f16c3b9b136aa483eb9c96a420ed02f32e2f4f44603ed9a0cb17250a8582f90823bb06251b447dd1ce2f0713356ad4a8f1b3a9b44f5f974fc60b4ecb161a57f3711bae56f3a9dd38726f5e181cd64aaffab154a4dbaf6576748b3aa324b7e9623e4baa7927e47555baa0a4aed5e5f4aa5f87d739e95c2f3a6ed3ed00f9bce8bce8bc5823191db40fcd3d79555efb3415188f2f8e7681f962ec51435e4a43ea555f182f46d0dde56b5aadafcffc3883dce6bffdfbe5abd48df77c6c7cd720e2d9ab635a6e237510161f1fb7a134ef97db705adea5513db770d18970b52ea803ea7e6a5bb6174ab334171a8a36692e7dfbc03b791d50f753f3d59606bb5697d3e934d839a1f2d3e3c373776ef73397c4d5e6dc94fc91bf53fa7cf919c3c86da80e3dba9cd435f39989d8ca9d582effa44da459739b0fa693dacca96db9fc524bdb30f378fef99a3c5d03f3fc13d635a7e79f3d510499e79f3e6e0380e79f3f13a86b4ccfa5e7fa5c6b5712256e33f3fcf2553f47229fb6b13ebed2f131cf8f82db7c5f23470894cb7b369f43f5fc54c76dec8b0d8fda19fbf2d84e63e9232b3cdde3f3031464149b09c582847cda149fe3d16343aa333b1b9e896d78a5b6e1d58bf2a678ef7ddcab4379534000e13910ac8f7dedb03e2e3c1f4f44723cf73a78daa8689643b5c30555e3c381c3ab31bdbe3c3c4ec733d11a6c1352ab4c5b4c5a2aad512c94468de8910e8fc6e8e7d19947611ee5a13b4d5db4870ed12a148852995387ead8f0f882b07967c38bb786c7ed78dcab57fdb554e383748d1a445c64be18d4c71b43025f144a9e88d47814935be3e3c390402ffd5e60e39f283d7d3c3d373b221c23ea5be3e35c34aae39aae1b5dd8f0e645795378bc8b3745e785f078aeb98d4b4ecd3ad9e9da75b5cc785c927db90d577bdd7e1e9fc71d799c158f330a4c2abbcc9d59e670b139e6c84025c8c96106c9a4c49ac8c2c5230afb8ecb787a9ed870535fbf38d98e13b13f1c79fb416076b0ceeeeeee10bc3da5ac325dc3325d53eba71a64e6139f98bb65cb7c7d6719d54766fe2927663e9d3ed9abfe18fd67609bb54586f550abb5ff20c8f251eb7cd9b13a08524a5991d298742995733efde992fa0eeca3f4d12fd20fdda5bfd847ad2ad526c119e3f761bda53064dd4ad427ab54d65607274827f8c3ba939fd8b66ddb367f2e514a29a5db7c2ecd8dcee7cd9fe99ccf74d2f94cfd59524ae90c32e79cf488770e386e97936ed55fbe038f50e2ae336ba48a4e8bcf3e6ed3f5c7065d176acbeaa85cff0a026b4f53b16e8da04a656d55c92fac47979f6197fdc7fd5fa5b2367ed4483de1b02efda2ad2a4b7319619a13360804ff552a6b9da9145d89c3baa6671d07c1ff8e5b98e4943c05441ff4e7098775ab032de064a4fb84c4158da288eb05893ee83b13973251e291d020f3e57704432785eb908545dd5066e4208d1aaaf8228d2660a04089018a0cba68d2044a0b25aba176af90b4b383125c81c20915425c4e5c3f31b8e206242c749022e91443576190a960ca8aa036321cf1faa1872bd0c86195c50872e091c140c30a7290e98092f59c80d474e82181123a780285e7052c28da81a226021cea8ecf8b11b6d61c2fc6d86c10e6010632d882d8da5b10ddd01149e1b6583b8b0f285995d3b639099c38830813d151e914c58a922c0a1656f5b22847dc7aa32cca0aae4b0db8189f7af1e8a29042d7d457cd6c4c08643da8fa1b9f40e4e24a1eae3f9b24107b485965f5675664b16a70e594e8f56f08579670bd74e5b3d19df23b818cca764c0336f8376ab029304a4fe6d1b0f1559c84c1d6ca1d0a37426065127086bb676c09defe5eb324f3b5e4c5f8e7ecc55ceac5f0d3af77f362f8fbb6b040be1b8b86dda8278364e7336b7a31fef1fd606081dc286143d502a29820aee2ed2840c455bc61bdd5bdc6e0747f3138fdfcfc85fcfd31b94cd86370a6e9c6a789c169e15be228209172a79352ce977c1923c379937453a6c1286f86a4d060f42f49779734181fe763e2c4bd1c2eb061bd318c71a6be9817eefca4945f0c0ed31daac34c85e86c0e351867d0ac31938deb199c944865b89411e3253fdce64be60bcb3f3fe6a584870d2cff127989c8c76147528106c5e098da608c89af189cdbfe7efd0b3fe0c5575219967dc6889a80f294326607ef64c048996159e5d276e5981dbcd65aebec9162b9fe84492965b2588ed9c1320e342cb79432615429658cec1c378e91092baff4a48c31c6783f19b3434863377e526ca5ccb0fcced3e7469e3fb3d25aeb116d7ed428aee2cbf7f8965699b571a32c8a0d67d81a37ca5e67c45e3ce87cb0a51b65af1ce0b851f6a201f5a254a7104d81e1045f6461050b21bd05cf169e29b2a12cea13244c4f3801a4f2962760315c88216bad62031616b476603c4517002287249c5001184548be02289ad81892410c5e9ed871a121270429f21a7a75d36ddb9e00ddd07248d6de287bf55cf1aa210c8bba51f66a7563d81b37caa064398961b91b65508e2c1116e6461994285ad25e8c0022e660064fac34d10110655c491a0a01152d21b41c35517198500cb56a8234931f729aa882061a103a4c812509328ac030a20a17d41b98c0c1073214e08610c8300322082d6ed024041aae7c11a3618b1f6698509a087269028a106a7562670576888a1d62220d505022a2f6d7524b62a1d59278cca01011c451cc0c2eb8010b1a8c217bc1105d06133c2f428850c338d23942c30a9f2a58bde2544d5dfea12246869cd0c931a0fc909299b137caa03cb921cd09fa8bacea628f8e9edf3006874bb75e7afdbd8697a84ed6bc25a26a5032cf99246ca852c9740d3f5ff96313a457feb27f5c9964345319c90f9f63cdc4a18a1aacb8fc31d1a6739beee371e5734fe316b7c87decd3a0e49e0a8b1bf748c9a99e5ec9973dded3a04ea77a29e7367bbae6f9c5e4c6d067729b68ca4f05fea95538594df463fc614bdcfecef4ca9fa6fb0164639e5ef992229f55f11b202cdab393eb3291169134a884a5fd4d49250d7ae9b297a4c1f9219150c8102e016e94b274c4575f105f7542418e0809b5d0d191cb0927081ff9171eb92c241406b9fc85b33be2af52f97714abb3eb6f246370fc6effc2a5777e4dd460bfa702b74a507072c9bc12638ccca49995a0010e96b04196561456b4c0b5b5c2d0d2248a0e3fa0402565c8c90ab618ba0112435b9d536e60f0039240e3099f257a10c51336c0dc5082181238f4e004195d0510674091b445b6e5e544965ac30a4e30c44b0811d0402bea394510510bcf0e5e395988318616c702092eb860a28809338ab882022a5520219b618633b610d2321b6a49946105165f00091181109d74002052f0c107268e0801101a2f1a60a061872f4af063430a4ad01d0403b4308a62c6163d90e24a755244d21726a0214a113f58a18494256288d990060b7a88a808a9c20808308e802d61040970a045891a1422746822870e9f7da8b4cdb735b1646608000000043315000020100a860322a168301827e26a3b14800d6b92407a64389507b32485611c830c32c418430c01001865646486a456008bc072d2bfc4599bbdd3be7203dfe2facb79b7464e100006893ec17be89cfacce1dd5ba9ff278c7cf94f14e267e1e3a61ce0927daee3e1f9e4e70134bbe5c898d8c1095b157282e7407bfbe40b2ab7de261451d09b7db82c6d5e756975cec27e8f1de241158e00013d3544067fc58d65c94c235f32840f4760320bd95a12b4a478d64831653aa3da0f1dfee6656c22ffe8e5517b26f8337a04ed21dd89f7eafd0c453d9a085c700370cd1d3188bbeda4ed6990c0894f7682a546884da1ae527b190008641207a08c72e483d211a53847343fb293045ab50fdecb2db5c8500993b8dbc1fb981478246446edb2884814937898df7525191995e9d034f719c65c2005b312bc20fd0f422875b8262bc37dfbc0c461d53fc502b2981667595a354851f51a2785fd31bb9dc8bd7534f40f96c2c3f1669284e30000746fc7c9c2c12ee161ed25ba558dd0633e28f96114bafdb98970dc00179dbf40039b1dc50dda22af049b4b1fc3034d13c231999846421c3f286082c360824b8dc16686b2be871bb51fd4d0bb8ec9330ad49b42914ae9b0d7a7a8bfd2c559cd659046f33e361baa391a83bd59687d7e0fb22e9d7c74a236bddd223f10c6f13e38b06c4802d5a04cb82444e36933da577bcda1a62237806927c040608db46bb68d29094878d0d9408e6cabc716b3f9d055d313e829b9eb1ebfc14201fcf1df0d43ee95dc6c26c0cc70e4a25cec1f2df8734225e090accc303a6670b2daa8534cc99441673d067bb5074c7751e466c1f7246148c16c56d3ffabf9a0207884b7e381bcbbe55b4ae92a1104422e55682676ae0b3f47fb05a3436eb1205fea70c44aae539eb35e0052a64735ab5e50e1760944ed7355a1f20fa3cb38a75d03d4a0dddb74ce17dec7e8d59a200ec7d9e9739526516b552fdd5d70338a051e70d8005ca7b4a0ab7ba99196bf4d3b31a621f4b1b9292b68b1d43b64260a39af7d0b42fbc4a56ca338eacb0e64fd73f074beaab0ca6440e300a5773c53037c1b04ce9263306d1b41dc7879ab05c343e44fc05234206ea3957862e703aad41243b274dcadc91db4e6af46c05285ff78b7e9d16dec290ff00e4578515d3aafb73d0a32263b79dc033bc0d822ece146201b1303deb99306085c252a731ef65819d8badb655938d2761a92132fbba19f97fe1357546cef0921f2a588d3194da8af8f68ada31e26ff790b688275aa2155f61d21a1268a578faf5b9e5eb9558f80d6beaf1f2f3b80dcf357cc60168ed207144d80309c8526b2d670c3a63028bf195ccd220fcceef8a166c79d6e311dd359a9b51080493fddb880392d892e5d2064cb8b9cf381e64faa2fe9eb9b4abeb1b21a0c362bc2450066db4acb891dada476a07d59d200ad29403cd7a1011910c86a8f8666a05edcb9adf0a2ccf29d78174f62e411efb358e102c139a28a14737e6e94365a9affb2ad045feb70b38c445816a8ae67507a4c77e67d2fe1e900650f62816afd907e17d746a73f861b034d2419ba7fd63146be478a5295ba6932b3e3195b66b8489151ba3b043361ad52f9d5d706514bec48daa731cb9ee683c7de9d6c6615b3771aba03c3f50d16108305332143912131d2cbc3f399d8cb34e9c44526cdbdc1419e5b28b59efc872744df526f7201e1288dc3c247ba0888b338d3f5ef27453e95f0052c4fcfa465d914af83096013a842ed214508d49374e3bbe7a71a502e54d4cd552041bcc022842765e02accacd42a61de1f6baad6ad3e8571908b849c14bee2b74b450b7c004fad8be35969f5392cd0670d382232e1a0be93323fb796b82f70f76db27e620f457d51ec022d2481dfa668072995980b5e95c2eae9fbb9f66d8e86417e2e91d29e3ae6e760221791cafb8c1d49c09729ad6ca58a2876eb11dbe0b179171092252277018706d06a78fed33320e2cccbb939d100d74a94af4c2873695d3d6d0700f5ed4d3b7916e76aa6dd469d467306bb7148a6dd13e0d54e80c16afa91e89e4b9aa672a064c8555c4f0a2d783ec05232e683b2cc208eb03635495317212509e9e527819d9ca0e6d9040344addf99006d560e5fbb4927ee46d60ff5fcf3bcf318ac1814a372bf3db2a46d7197cb23e5115860f4be448f83a7099018ddb89bf228bccf6d137cf64c98c49a5c095d270bee2e9c83a1d21be5041519f00b70b535a744cc9cebbf98a0493f9920405b13aa89d824ff9823ef1ae4560c6b9c714a71de433aa73d75c3314fd0c360992a2e590e73493403fe68cc0ab635d43b00546ce0187fa84cd6758ca37e6735deee3bd4c33f40ef5b44376800c170d20299799c468332fb71b149cf7aac08a6f8fc79becc5b1ba050f18a87b6fa7a827cfcf3a9165e83c8ab5348ae7ca431d185b741280b7fc0c2194ac8d67f060acf8771ad60cb5c45211a0e741d05b4d98a76e7475aaab9162e3ebcd89df192ce04d5133ef90f08704e264d475aaa2500a6b916fa566c51d16357d3ea7f6a3cfbfca44232c73b1597822295d2845b67a028bd59bcf388ba2fd3d8e3e46c9bdbe15b32ea660cc599832d9d06866203b5043f02554750b8b89587f9a26e1d46ffb428412e6ac7583ce4a699107e842b6ab755aebbe08ac032cc999089a1e3a31ee3563c8daf73f1b667906422f8a24f39ec1892850473ca381689005498b6f439844d2c4e340c9ac4082317d826b2232e726703f51027de4c2140cc023d83b59c681ce784a93bc1328be74d1bc0c1d9c2318f12a867496c47ca4574fb5e690a5364ad30956391b6e4759509f59dcf646ec01785eb346f0efb72c647467265c29da5f6b9acb1aa683fdea0752199273f2463aea34bcd1008b3d3d91a1cf5443462b9355156e6a47de436ba2c36e4b965b344d505ffe8a7a9740394a49065a6abef3d1185df242d01314cf3bae49659cffaec24620b0022502d778769a544e6606878cd03c3d41106a76caac064ef6e1361fa06435994bc227703b9369a77c8152b802257453cc8b5de7618b83ba0f77a067989190d280ae07e990ae1e167a6fa835597593dabb9b55eb68036f5834c6446291daa33f145596f68e9adf5064ada04e0380aa20aaeebefa1b33272767e9656d1f4c60c7fadeaa1e9eafd623ded0c2457cf6ac194eec0512633cdd2e2f7f404e71c07213465253b182d1c064500437f42204a3974b15db674f85cac005488980e0f9f7f519f0ec3eb99468cc9f844442883420a8f881e51a4a91dda051f46abb464ce716ebca93c318b9b129e952e194688f7e4d69baf4ab3b0ea4225e4fa48a25ab07f83050b2a0410077b71f7644913736a6e109ef4599be6f6dd1f394b1aa8bbbf49a189f30f7f1946ac987858b845f92f95c7138e3e195a974c37a54dded202fc98840183efd3bc88fc17e379eb67ea58f5308bd0834370d5cbf72b0ea89dd1251fbb66eba54fd621385690f3d4ad2ac5b9cbc0609c64c4ccf2f3b15c66d971ab8f27b606405a2f9756ada0bb6a31ac1490f551b0cb216b63f37fd1a3220b2139e81e82a4661c02115ae9e2b88dd422c3b0108d055621990aef9d78808a455e17401b4ea6ba7615a31160c29de591ed0bc3aeaab9f487c0e41d6a61374ae189bae61da2e1f01202cec2d3fef82d2f6f82b11ca8a72aa0a695907fad8c43d1db3b2364b525bec0bd9424d49de06aad102005db4909af5fc12aa4f44e24913b2e3e3c7701074e0cd26e20b92b5339469e7307bddcc83ee23d1ad8f3159d23832eec29c0827481d5ff36697118642c8ddaa9ed401be21464f6021a0e89f94a8c65222bbf0faaf3d1b10377f7381b09ec3d74e2468f2449903a8da5bc5352b91673c74fa158b16e040e2de5e4d975e6c534dd4bd01a10804501f1db9c8d9eee60d0c5024cc60c918287434640a5f2004796f212b8717034a2c0d477984964cda1929ed9510a790ffb854f3ab474258109e53024ce4b4f4329139eb9acbfcc47beb8f8c3546401b029229c4df8404e7a3d798abb9fa258587f1173fdbcd87ddec18446a3f674181cd46f1b16e76e5d71e4779ce62831a9c7df4e196e30b653eb48ff39301fdbbe1a0b61bf440b4d960177f05c6ea2f024d27c8a9b7d78adcb3df6d092598b1bfd87cecb46776f3f12abed1b2913100a77c7646c7a5fbcbc79cc3f46d400cff324f71ead6763fdb488abec574c2d8485b2a807c0c600af873fd26e5480912111b176f06ea222be871d7313304076cca975db15602962f18fa6104a0649f15728b34e34e257b7cdce7c4eff9a878a9c091d7c2fe8fe3c57baad9a36e53aedff56f057f78b36a7f68a48df4e110f6c9fd4ee132b86a6c3d14ebb0d5a22f6a4e6ef48923c7789965439288aa08764b8f3b24cc751e9c5df0ad52543fb1c7a05e8f6b6215fb042f7af6b66001c12f4a20cea92a9274260636dadb5a260408409dc575ae12bad000cbc591dbfecfc7472edae983051d926898822714a56d404bc219b9ce1913e5ea31eeda1fd4a410b61e1a2788511ab92867448f6b004687c8de8e5b5f34c6840b4beeec511952c7a7bd0bba211127e50059590988a10c896ff2b4a384a0594783990041f19d2746c42fc6b46f81fdb3750aea9f64409f17981690d5cd80aa1540040ce1a66207e651787d0f451fd9f3ffd74053506b4fad33d32ba693c42b5db1204d6ff1e501c16aeb488913b394fb2064ad91137d6e32797890cdfed2fdac04d17cb21289ea69ad755ef1501dd9127287457799c77ed6ddc04e048926803bdadc4730c1de28da33fca3d9baadc11401a8d1b8216ac04d2c4736c718b117bbc21e16bee0c9e22eb2c480207601dd95873291dd27bd5c76fac7834bf6c535bb89438dcb493db7bb368b62a7c9c25a7639811e7a1b5eb59bdbb1f56f5ae3dc2469a6c4ad7bc45eb4c36e696b750c87b1a37f7d468a6d26433992a87b1fb88f3927053ebfbb2ad9c9434f1e2023d29d9fca31f8252921619c1581fa85b712c293df0f5216ed49e42cf799b2ddbc4985cb02a28208a82ff87871442be48ee340e168a0be89d2c7dbbd991b96d45a4691a43818a57ac2ab9324145de74f005fcffc0abe213c426d18867ebabe5e403b8fa6b202b28c6fec6d814415c4eb940c2b3882fc812644b54ffdd614880ea9fcd96508980685ad7c04e56e94a0911c157e4603bc0feb430f4216a2f2714ec84b1a8fc55b90086acf620565b3200b030b786a4c40777907630583b5c5d56bedac03190449cec7268c6899395f66ff6e5b248753c4fd0a6a5d7814a927ddb94b96f6106cf61c82cd73ed578a9863f0eae16f9475c2afb0c182f96787cf0837ede629b151fda19ca85bf2dfad8ee00e17670b23e35646292ac397ba1a97f9ae47859b772b39733f81a3a7f63cc8b910445a7c2d69370ffbd2bc78b2692ca559f7881230e56402374181a1ac32f0d38b1c4135aad91b67f093b2b0d6960029131e32424e3b81035c7e5397a7044bcfb7ee505f41caf08a0ade5e943cffcca2df633c027a0ad8ee7360829813e764d4cc7355a2af2b019a6cb48673ea9a9670f3c2b47bb743402329391905182aba7c872518570f0bd802c1bfae3b19079beaf4e9352b5840e75dcaa2156720ef92926b9b5556fff8af34c4457c7f17e576c821bf76e884a947411fb56806a10054f7a356f46d83bdea4439b0e0f24d60cf770f29e37d9e8b6d6376dcd302ec709507c0f9c23a377d4756027ca951266f5749d6df95f9b9e6431f4efad8475370fa26569c08e8ecd543155609b7208d3f3652c55a7996a8c8c7ae38c352dc13ebfd56e90a36ccab3716c978f0292acfa2aa29faf35663a781ff0a9a4eb52213bb7b969524a89e44c264525fe6e80f1ddcc931840ab83eb894f887b1f8fdcee3b3ddc55ddd6b1aeb2677943e955be63e2b117a9badc9269208d2dbe55a0b7f608819801a0232d6d229b984367c1a3aa862ab5382bf82c1886221f542be173f344128ce9c75d6028460fe629f6236b558f2384e9844c79d64cb36d4a3784fa2715a148680a3eb58dc79ac39d7becf680c9a8ee7801c8428639971b3eaedbc0e708e3903a30dfad5a124f816614f769612581636cd7db9102ec25ed589c9afa7393670427b6cfce6ebbce7509e5177c661a7d1cb2c59f8e61af8b3eb8e2b645453394307248aa5c40f6f7c713ab1da9046c6403e37893b7084f40715297fd176d4a5ddee60a721966354403ca62f95f76148c31242b79e086ee1a5634d2b49239e3230b85891975092151ed70da4c380d2ea24c17ddb8966f1a0fbd84eaa9be238327094d2316a153dd9530162888622997e22ede43888b40bb2ae388d3a0b0a75964b399b23355165abbfff772b422bab0a1cf2a610339a7f6a091003abeaee24ab1cec1c2ee259b45bfa951b60414f4e22ce31b7c25952057cae695ec8942462091d66d9031150db03df46899ddfd419efd02a580c4c7017be591f819b8742257aa93b205ebbccfc52a76e2d0b3ac6574664a4a0d58dada4061c95828939bf3aa3365c57119f1ef4c95f264c8ba4f3bfbea4429a0dc129801ebfe392314dec2decc5517483fd70a46591a89b533efeed53a1ef8cabcb090c9afdeb14a7419f5577ec76a0e16eeac529ac24cc34eef02f2694075e1d74c3c233ee9a558a36406e06e5cd652d6c8a7f3be6f822d4664a439562f33271ee1542a59ab68b6574a2d19f5b449cf9a0f4cb19c1884d386b28eda68d8fd80904613dc110f3c2b15abf534e6a5ea0536803d27e89e2826e546082a72498903a3e80b922d578cba1597909fee9fd717be94b15e3f8a8075f2269457196b6b329ab8b256604b9c8b32d680c5e73f501b53eae6b4e9a465af4626b41a2c60b692e4e8e8266a9a14812c63e869f637a6639519c631cbb75dc41ce90b70bc0dc7ad44d5f740c7ea656081803679022095efdf4036a8f2799f60f6434841d78aa79541c693ced5ff9da8175532e74d5c7a46a4bf1d8ca4445096f23be92c1e7052967a230565415a65d51d32b4593c02b2337d1242816a0d51cfd870f8dc9e56e5739a9d602dd9eb7c123a7f29e4640dc19fafc4d1bccb726ef30937847222b8239af4a8a81fe85db0a127c7ce8d0e1003232a70d4b99a41bd3e19f9101e90d519c3413ff6a89f45f8dffc79d547ecffc40b05e9fd8fc96b1cd1fdd2e2d5a3921c3472b36d6ad0ec783509fb19995933f23f529a124f10ab4a0db9be8e7fe423baa48edcb0603f840ccdb14358518bf49aae484eacab8360ac39630d6af9ba614b2d41635a12cf1fa32b19d87f437ece3f56067ce5fa67b2fc5658b06a739d271bd7bb75dad3fa2390db7e5c8d58eb4972cba382c2ff0a1113f31f929759f4368790779025a4b4fbbfddf8882f1f17617101558e18246351fd27701896d1edbef0d144388fc8722c4e86687b1bce2baa64001cf4e13c9ec43d4cfb1972fb6b4e4f6363e377f760507c5acd29de313c32761da341051605f4c4356c841a22f822c9e158a5c8e4d283cd3604072b816327e18a8b5a9fc9b1cf331a9fded59a89d7222fcc960317ad4bbe22704cab96e079c17beac8ae1f77aa64fd15f8a84ecba37a918e17415c7307d95758ed7db161ec3b74fd729a8b4d7ff6a943c5eb18156e45e53d1b658978b47e50e1f4a351e95e7ee2a85f655b398ac286d9d9e12b0edc2b788c5378c28e330128361751a6943fde6280f6260aac25a8cc28a6c64e5db795ed6f5fbef52141d1322e350a22c6da3f867b627ab40971d94a89470ebaea233e7eb13a667b400a4d52a7e2b80c84c76b72e0f54595ce7a606639f26792bb9b88193909cb4e957712c6bc9a630544eb5ed724da22303071ab3e888030c9c93741934c5e84226ae1599fd67e911cc43bcad36f3118bd81b9c964ab81e3dd9a63af583b330c6590a123ca1fd88fe32c14c8ea0d1ed39806c20b2872baf277a682734b11cefd477e5b952fbe3e00dd7fbc2c7d6f6ae6936c654a425faf2c3dc9484614e330b13f82e72de834c54a28a94823ee38e57284568d17abf88ca21a991c767ab4ee2b63c892eba9e1548b8578349c5e8de754a8e0c9347a5e591fd519492fb3cc2a8f03d56d366d0c9dcc4d7299ae594da840e6200d016b972bdfb8827dbaf1f02f736c231aba4290e788a15a6db78df07433abf71d62430307a62d8a879daa271e17cd69c4308e94a6eb92dca527d4542a1baa5734be6b462bd9c63154307b7595873d1a7bae297a72dedf8337d21ace6c32c1ee0679acf2b586212b99a776d5a9999149b59bbfef04a550671865720d27fc655a2d2c9490b0b1d520abba9630d72099a394484ec3794721029fb5aeb8b78a353567d9dff0764e8773c326feebef6573a331e05c62bb2af1125a1da9daf4ea48563491f0bbdcdd6616d179be3e3b9b43f45ada6edc7fa024d9cee484d74137b25af2d76e46cd56fd51655287550d63f0f47d269c1739975eb861cf7ed0e5b5a3ceddd95a02da20c44536cc65b29039b512440eb26e348174a759c9cd7a4a01ab3398587d878216c489782d61e3df34b58cff32f812a6d63f7f19efc71207363a219ac03d6adf15468de0d212b85c8e542581ac7092033acaf2decaf471c63e142e16f2e12b4d6245db7f31ab9bf79250f56ff1b3d5f5d757c0195d16cb379964a3932e585933c86f176872aa909d0274b1ffa6647b5c4610db570c4a090fec08d7991f791b835434a839299989c62744cc4c539d729fd60df465f103d8a1b4eb0c0f4dd235622457b363f8b8df9e0a396fbacd8d4756bb28ea517781f79b2772e56f21a6f8a6bf8e107aad92fd948706bfff744dc092b90462ad8fa4d489e39f55d174d5621d94880aedcfcaf58f5174fe51c4194015dc0e6be75cf5f6184d635b9c2c53f8c5a48919399227b6db26706a564367de6bbc1b55bcb89150a357d9ab37d475ba089b46452d5202ad3c3581568f8c50a0e26b09c07d2c6cf4d0bb83b9da8410e80df6eb83221661e2fff1badb1a0838baa69bdef2b10c64d68487360268d6e71115dc8edef587ef6bb27e33ecef74c33539faa2556450b238b66bef90964afda748be0b2628b6745d4a593c4293d46a8d559d8150f96029720dd7856387712d3bd2fa6e5ef892de3bd5c5cb470513cc9458444b6211956ed682136231ee956101deec46383f48b71edc644a2b9577adb06e502bd0c09d1765b19139e460a300628b7c8efb4a9fbe6a94d3791b9419972a0deac8e9b48dbd647cb33f64e4c68ede02e37ee9b0898c6fc20c4d16e3b39e32b543e6a97ccaeca7bc7dbdc619062a5f9331f486a0322ae2a49800bdef3a2cd2b28e6fbe7eb41776d425409e791654ac9e0a2b0e7f442bb3748ac1e290660b02ad0b1f8910f6aae7be78101f0666f82304e68a03ec70668395a63397e4ca7a5066d6a33f824a7ad7d1004fc34e75cd7253ff0f9ec6d4bc9e026de0f7c80aaae58a50d2c8c87aa61704f6114fc90c39dcbaa81128aeabd541758027d60651ebb0f4e4aaf0f8c872584592b8d98539df3329cae024e2640d113f33554fb1ab4e8555b1670f716750d4706fae0558af65756d6d73b608826d294d069b952de5d5781bcc97581c55367c75f496ceafebcaf8e628001248b3e2a4157830c2228aa4e7120a5b497790f673424ea1503d37611e4a5169840b64cc1740d1c290e99fea97eb0309711577645058a1461485cdef7a07f75435ee26349cbf6a24476bd275fd2542a7bf76a32565cd9ca75d8996583632842b71d0ed68a8f61094bc5cfa6a9ff699745a9b34c863f35456fd30ba9d844b1f78e38353d040608ee153f4dfa0117a1e07758072591df87181762afc757f20d2844a627f4763c49a32758e1eea74115e88ebd030ccac137897c38ecbfe141dbb3365788611ad4d8f497d42dec1c02e713389372c09745592f5757d0c7702f5b03cedc992365846a34c229a6027416f6b115e050d0f796cf479bafcd6b383c0476cf13e25e80d3292a21cad80d3004f3d520f10251cb39b0b142f984a74365235372951080fbb9a63632ea1cdac47198ed698d629ff24e10d00d6681144c73a9710048ae7689be2d418357b2b740333090618275c3ee5009adfb0cc82805caa878c4262b8335f868b47d0e214ebc8b91bd3478203616156a32803b33ae9cbbf2f364d90e01349a30846db55b49053bc21033ea5c50b1c3aa6cc96d703aa1f80a7538211bc618924dd38f61b887fb2667b00cd730a2d2f321eb70fe501f2c863ae5a1981928801ae4a5d2668fe80d1f0b8818a8e8ca565da73510a32d3b954170bfaebc50d26657e68066c2ca819377806a09227964c2ebf169c404621d075a0364c37c6e892a7dcfb0ec878a8528498376473527114579e5568029ca5308f9e9930e165ba0e7f7852ff77dad751e1de4fe097e1a00a1fab260dc15817609665fdb7541977e830b82a3f5047afcd07839fc6cb5eb09660edc74edcf342472a0a1837082f1691aa78b953174a5b072df76156498402f492915b7e6023e73781f9f1aff91c2f8139113257da829ca051453d9d6e30e0b9aa48397f74df939d08d1e351973d25bb231965f1cfa43fe824a6ed3428801aa4747c01057c019c3a94eb96f7fc079aa8a4a71ac2d4d2a5a52efdd1c3c8a05aed53f04a71c472680928a450adda390f330e2991d005d1c2354d0f8a8ae95887dc000ed560ee7667a07b351cb83464d37fcadd3c9a243595316e5bfc0cfae4b28a64cfb5096902e94dec01af8a7276dd1b4714ee0f6c8f21498ca99056b5967846a5059b256dc02535006b7c30f0bfb2ebe7cac5ce8a6fcb6480111b7ee40479a988da98390efeecc2deae37c1341eaab626972bbc1912e0cb5882f9682120c8e9a1875bf6a9818203a1cc78956cae74764183c22b523dd2285f1081ea1c263af72c22a219b70a2c88b57d6d58f33158f49470913af057e08066b49bcf63f9b4d89e87754910cd2d9b70191826235cd0952714e3f30e42719d223b200a1ee73c7a8d0da5eeef1e6ee2c6aec8b4f6c6a5d97ca4364f20d28f014338dcc8b19746440efdb8c4302437e59d1091e50a3beb3022ea695117f96c200707b07b9024d8d34e990b1620b97b7825f60e8765f8016418c72ba3a5e16f998d0eb1a8d930fcd0d6cb6a7c1667046603c3507916f899c0f415611d035ad5004ffab18f42927b7400fe18ac29aecdf10b58f879ac99ae9a4774ad0d7aaa150c1178ece79cce0354f4f0358fc86c386e627e3a1e5f8d5bd64197d8b09da39f771cd4e95e8107f3c83e4f36e900e484aebdf76a362c671cd4d7cc616270762d3679744bf6b57996ee8eece23238e4ceb54755f79602e6d97893531979cd59b2be24611c044a0bffc7cb2842bfcb558b1dd330f0e2cc84f938a5f12158ea5044872bf4ebdeff7f77a1512686ce3c8610b2534ef7647df5c7edb2f833d357462b1643212c652d9ae10a860844d6a335607ea4925fc028d4e9384d95ec73f41b91e4abb9d0c05d4f0e6dfb68db5c74ba9c0111ccd77b2c3d19c0f5cb9602325606ac7479a9d9a904a8975262f33c907ccef825221b6b1042b3251d47d7a0cd2d3043bcb470e602ca72d5c351f952790549049f4471c58629e2c321f20c78520028a198a92437721d2d555a3dc3be17291933e6b62b04edbceb9892cc051a1996d2c00651f4665a37c8d649dd4f18de2012c400484a29c2316f7ca675c7ae94d886b0944cf9212ee4a02139fb5019716b7ecc5930bafc8a9a33847c6167691c0571f4a4ddf274715f489a5c4aaa043a279da79a77947becb124b102e9e56715e4cd4d671ad84eaa812f0a0bc3917301e8ba7aaba544fa47db219781b27b64a325832303333cc16e7e0282caf8884c4424cadada9cbe57c65e5fa29b22263d055f71c90a5015b1b9e8f9714a673487678aeab7e1582454bb50d9b596ac089c6aebfe7bf08549b2b1a168771367f9a942d7898d2c25f552e3f2450449712974e624d9a1e74e9f431cf44f7923190bb2be721698d3e3476458e689d2c87ad9f92494e520f4b6e26b83c6eea20ea2d5960c35e04033f931a78a1d426714166cc250f6f16735cb337b7c5fa5623f07d1da6b9ab3b1c645a2f6c67b53cbff9a69864238152bf50910af0208359b1274825e3c83a893b75638eca211c7901511982d73a686d3aa55c1d3601a583861904cdc1d9040012d71f02ba5166f95581fe527d59bb1f285939443085a517e0a63c064854a19537957cc24dcee8c03058c8d740b1c1524335186d3bbc849ac04babcb08d7062d488660bf4ec93327c2b43b41dc143516993dce67f97b057cd9a98b0f765023cc1df718fa359e3e428ece257c34b328d2965abb4245bdd1c587d0754b13de823364dc4ee6f297526a820de4441a2e45ec5e02ae7de92cf1b9ef3d5018b70b402d9ba25e3a558724b06049dd9c8b0b89ee55bb202c61d742554437b47949ef639d0ee961a1d5b4a995bc26139507b33216f1a6f4982b0aa82d3041768fe612af500b0de12bb1e90126b0ef00e8067a911ad7004c621b56f2854d59f924aa15df2250dd5e75dd53aa3d7768e7bf47c84c53c828a3c56dc3fb87029c1f9a51b8c6e714fb03fbfa1d2e22a2a7f86825e2076ceddc6f7c6352fe6925bda4f87caf1bdd4c1daed22c3329244d67483f2a63ae5d23b0f06d8910f496aba4347161231f2576c17dc96d8ea316dbb675881865b8090fc1679b9fb6becdc9d342a250a494d154866d8640e879940aea71bd18715a9403b6253595c90df51943017aa98917653ddec29a06623a86c2230f60923a75417a28ad85e7e00d2138873647ccb1f5f083882bed2fd4308c9feaaa242481a3ce76942bb7386f9f3cb677e0cc237793760def9829c1cf38b0c38a0143d718d4613349ee0a6c76f73b4c44568fcafff6c1b8d9390a046498a40229233efdf428deaa3bef96c8c6a1da87bf6f249e0dd27f47a777c613e7e395a12c06069219026184a4aa3ae9e45d916b1238caa02869bcff6e8e7691c89d6cb2b4b66e146523abc3137e85713499f84417e1f67849178634f23e737743b4792e6b1274e007cf95892ff1ed1c409d33d2f2d6bdd84fa854797be7fb6fc314d9ec29c550de0b92353be19af50619295d850234835d0a3a44553670dfaaa5791f5e93cecd9e9898a4900f640a51488a61dbd2298fe6763a540c1db90ef84e53ca495d327141299c09303ccfb74e37d607589f35f4e4036c6d09e60a00288852a0af5d9fb550c0495098bfca2632dbd32436bb0b04c9cd0a4d5ab995034be0d5b3443da7617138e5e08daf0f43ea17061c19459b82f34d0183e8162a9d0e98e938febf1714394fab71ae4537d8dc21031de14dc81532640b7d57887cca476adc2a8720777a32cb22e020372c94c96135c574700683cbc2d5dd395f1349612dfdb453db9499350b8c7a1f84f5ab2b316b97940bfb510d822cd58cc1842d2f5df555e9e1091bc0603c49b8806f1ad16f32926229be906a9d4572e4d33908f50277ff8f83fe5f5d7af80fce371a273b1cfae24030b354811ea261b69d27577c434ee24aec398b430b3a7c80740ada15da273c7a12a6f8b7ea70f183d5c4c4b2ba9abd15c1181acf1e59e561368454054a79f2693b1e5a2b2d8d25c3a58adf0d6877c3931d071e50598808a9bdab0bd4948b763e67cf5395ed929aeede45dead881c7cb4fd24af4279f032bb45eb99ce6a1c26157a2149c46479f815b974af7280c6ae39d7dccee4f7a1c9326e036f7e575b87b54b7107b7c8bb4aabc1a73ea62c98126886cfb87f8779e346bd056427415469a539f167de4f8df611549672f883528e332e417db9736c47401f44f732d2e3895ca2921194ccbd97a4638f84f798bb0526c8c9a901f8af87c21ba6ecb57ab5ed80c0c4b70b6cd4b9190881d3160bc45201c7742dc306ac53f70e16b1190853d165489c7ad0208692f02a741c847a2dbfc793d662b41269e69cd33751517c8f3f8c59ebe6bf3e89be039a3ac708644ac0bee219711879c3d6dbf1e62785ca47d75b95f092e83ae9910dc7eaa2cb4fa19d66e29f9779e3f1c0b624d18bac21610f4d5946c8ebf8b8456047826b243d61b99071c81d1ee1cb28b3b19457d001e23812c4f844ff72446c7beda8a8fafb186d0cdefabee2b4cb19c088bea34e9f4b93713f06bce8f8afec735087a8b0a48743c1047073d360b68e8cb08b441c67257401ff3f9593aa03db48e3eef016ba9c0666eccdcfd03bd322b2d49bbf9ca0c8e7e5a1220c8a1d7cf379aa80bdf898d09bf2fa0726202501d2df86731b358ee1bee03695fbee64c9b4446cc3fd6f497f85acbcbb8f205e71271aa42651607ed81077bd5b63d42e2b8c39acdc8b47a249be93ae2ccb4eb944d7db5a888e541a95d68275fe623e759644831b57e6ee82cadd76b07013ff70cf7a0914c6f4bb8530edec45c167bf29a217ea9804ab2f38326663b79caa37f7f4ade53c008b9db69653a91075d128d30f7f4c388a72d760c04b3fe73b8e54f8d325254ee9ec1be5237fd644a80f8e0359963c9c57893583dc4795878fa4103391ddef4a83fc094544447a02884ab448058940de82639ef4c9c94e8436545a1dac8dfc2c5b4f31f1687210283d630f7d46bcd110e3233bf7f040fefdcecd4111e4197d3c584f540869987b8001f6332d5bafae0277b1a78c834edb7ecec9924e4b596939edf904bdfa6073f085ce50c3adaa14cbea5964445b35afb831d4209765e48a0d54202bfc78798d724ca83cc02585408167909cbd3e81243074479ba83cc23d31b50c50c06849085a7261112b8ed093e36eade7a695ff8c3f1bf521f021ba8947059f010a84669d6009569e6cca02377b62dde168c55fce172a77a3fb8d594e76c57869ab82c898a0c28a9f3c61b04420548ee2498692db7957e24f7ffa97d9892ebc8c74bfa1f1b720cb27a2b0cf0548c4e86ea65e0ca93ba092682de777ca715ac12c24e084ba4f5b3026e48df6dd88236ac6e472baf22a30ee632375106b826b2eb7a64426bec83d5a221e632124e21a40e76950ab050833b143274a211d834f7821781fe69d7dfab2961adb600993867d3c8216d4504f0652ba79472276bc8cf451380bec14e30b97baead5727ba753a522270405804b6e5f17a70e4bd97ca6b8522e7ac52e25080132f1fc0a1215d6b1a580bfbd2670b2f3d44ee1e1ce436930c96d58dd2810939ac27c9e57838f912d5b7c779f85614cef8c7d4b102ea6b82a80665d1a124037f0fa0a43e2e6b7c9b02c50d8628fe2aea08bb224c063807b96f64c85700574fdea190f0cde2ec43e75e1e134aec2409bc006647ebc42f20e066f0496f60cafb004f01da0f89a3735095a95ace946f82a40ccf4d2d3cfc828456f2813d269003c40a4b9669931983717eb07129daf1f749b60b3f571ecb491a3dde6fae214b4576e1fa056b5c452d9fc00f721562ac8611a5ac1caa20353ea9ec4a9c5d2a18c4f94409140de13d0472f5ceb0db99e321572e372993f1e110669acb38e9844139ec9ffeae29f30fd9041ec78ba7cbd1040d400fdf09811602940a57414f34dc23dc01452cc37fbd7ca9e075d9b0ccb3f6b20c62698f5732242545cefd0df6241deca4f0d2ba14fd62d193beb473e1370d0413531734b4e208a581895202667a9022247da2b6a27e98cfb5ceae91a54acc01234e830b1403ffb3484183c1e5e181f14bfe5ddf8823a0205542736a7891df1fede632822f463ad15c052df0f8d78c3efc7c741801c30d37f93c812ffe0445147201b31e5c3b5ead00bcc1c057ad681b3cd0db87a132bf9f35298c7338680eb24c481340897e71f3841486c3859eb65cb3bf8263117ab0d4c31589fc9982ff1e80254ea1969dfc72746a2a27136ad5498b4ceac15d53e856d2e57f9227eaa35287c70b5f23a7105b304268fc07f83e51aedc42c42195708dceb8596e320ca944b362bd5cb3fb9297e749bceeb12d20cdd0f25d631e23bb66989c14e233dd119de7cd5f5de838e2fbd4a5c9099b8182fd085da1969813af357e5ae20bd1acd854394ae94dfd93338f635b8548ad9e0435337941348dc71aa1560168bbe032bb4c3440ebedc5771effed2af9abb7a351c04d59ee46ccceda8df2b9747e10cdfe7137a0508c9dfb5bfbf72a652f7efb53c1102b21939f1408fc6596c5a8d0a4d40550d7cc5ae968b051d554639e8af0dbefd9901f4f605d5beedd7c55c4837b2852107a471a50968edd7a814c98ec42b195451453216d1a43a93ed56123f5d1556d6dc8929ef08dcf0a49364cafc2e0ef0336ff9b9d9a48daff4135cdbc546f5c1ab18cbad02b35d89c1e4a952655bbb9ae59c89de3396cf12d40bd3d618900272a46286a17c93bd5de8b97ca7f9134d7803f804e2b2a2a9a516446aa956f9c6e556f8321a0c6fc0617a198e680d3d35cb684f3f2faa737b2555ec996bac78d678741de0fb9ff90af670da4deec91636728ec43257323950e123c11a356483171c0d3a6478ccee72f8a789fa13cd83acdf9d51c0c2945554aa01a058510fc1371e60f26c79fa02b965e51b7722861107c7c2b0f58e33244f2386b26a94d6c2db356c66838eba9329fab2ba37ff643fd796f67e21b7c246b80c4709fe229f74c6c1107f41aeeb2d862eea0031a2a5cb45bc87488721203dcb23f80dce31dc6260ee52b24ef62eb3301cf9bed05e4b397d8f0025cd9672e00b7f9b7696308654b9c281de5e2e3622645aa2089133818ef6e0217aa61dca94564bb044d56522ad9fe7fbda7c14030ae65d1b3dbd880c7d08cd9889d2d38181abe24dc74a6ccb35214c0c2b967d20a1d68266db8cf6da6eea7f108fc00c2466f806fec3f1f0140a9f1b757268d00abee2f512a980cc968df32125110c297b3318ef0898d5e446c1866e1a1b988c5888c59fcc9181458b0535e831358f4887df1d2c90026aa141101916884b664e03e4e59f58baad7d374fd995e1151c80e3d583023a593fbf626b88eeccbc8b287bbf751905ab05aa6763596fa01a84d49f98c7f58251d9c214f604e6254299dad5723772e10bfe5f86d114ef3a0bebfc3ed931472256058cbd8db545c35e402d92b6ce48edc716b06fca902dc717ed48a2629b585b3505bd81221f0c0efa968e254f265afd05d11eee8247c59b91dfc1467ea6d82ac8bdb3f940623179938dc42d9b88d0cdd3389e1fbe1206b3a73718d39f21095ace69589e56193f8ee01ab3ce5e4fecc39011fc217dbab6605a357ac84d5af845ea91f906b41c0832a053b934fb21faba8b1e5e2ad107069681b44faa865aa8f1a6fc8df09289ecbc9a3d3ac21f11abdf8eaec23080cf9c79829907a79d0fd3c56ae346d5403d0f7335d32ca40abe5e0b92bab075325faed156d95578a7ea056618a4179f864b3ec7e90b55999daf0deb9a444dc33de7660d3550fbeb5b79077535b5056a7ffd2a7cceb5625a38de41c83ad72365c001e59933f179cacf40dc96fb6c9ba4a78d5f3c1088d99cb57c997aa98bed8a964974d0f5d3840a0e8d997a2a41283ce0e5e23489bd114443172ec62055c49fe8ad1988d778d7a60643591d2a65c6b199171aa4ba3060a066d041b8ad53c3829e993cbe1b3fab2d4aa8c54599337fd42f9623be951aa0227cc7f9861faec1ec6d07b8d43fd623697678cb83a1a2ca63caf5fa0b3d7207dda1f7330e196a325bb476fabfe9c13e72a753ebc943dc18610d7e7a3f7721dee1ec49b4f336f06f123c1680777f1b1de9bfe68cd21dfa1221c6889629c9f869939faeb39edf9fafe3b59041f76c53c3457a63f4fd4fa43979f13586763ce4f44fbc6f8a5b2873eadc85888f12112d66fd8b1b863c636184ae803df316b2755b6ada7d622c5ffdfcfefb0831e1cfa0843e9c59f7ebd47a6ac42c24235de43283d12a008d39d91edeeb40f1ab8baf3bc5594195e18bd31a2a53c08d7df66e008fa35aa333912b2bb161c7b55d7f1798f182cf65b568adb764d6b76c55eba261bbf7ac3e140b178a0012a8f2070da4689cff808874b060a8f72a19380712465bb8d7cb174a5cff80142f70ea3aef4105d56930da914c4859216eb52f0bc58a90dee0aa0717695b15333a8df7340fbc4bcd8117331869fb13bf16859fd0ce00a9bd362ba4aafb0b8b0539cae8fa1bc381d0ab238f51c1879f1baef2798bc6cb134f515a3f587ece8ea97913f6572e33db2b28fcf1f3dbfee5245a65ebaf88270454399b6a8e345750e30272bc02bbc67c6c8ce6bde7540afe9a0103fa0f9237f286d8c2f54d38c4644f64a7f1e3173503c3071768d8219f9d9b4d5047fa2c60f91b5f2cb6c792ac1804c328d581e627dbae654af956904541179220aa684ed806c4b3a363ffc5be1cb9f7614348b80dbb1cce764991ce216d5e92d0249cbb282a5d5df2c63935461f2943cc9b660fb2c8bdf46d65ec2221dd011d45abe05c9c21822e820ca57cbec962395ca80e7e86d18ef2038d12a09dac15870890812ede0a21d97690a78f10e61e5837c3aa848d2ced1bde0b88c4a501a2d1314b8859c8f2e881b91b600708bcb147dec89cb095ab8b86cade2b2118b1551172e03e98d2d1e5ab4524cce08734646cdd87b5bc16500b6522e73885e0524c6aaa454f6f03b96acd30e1528f5f86fd9762fcd2ada4e490ed6c6949e63c60bade6be86e2083edc190809d0308b9be161aa06ea9f407adcbf5dc4bf8aa4f0664937112e099ada7b3f9a384b6160a74027045f6a24b9477c4d9c1170b4e47b61cba4bdb8a437962e4dae6512dd060cf07cc1a7bc616e44a15bbb4ab2e3bf85049fcac91edc35701a9fdac3b7544aaac9efd7c6bb3ac496f650d25a8614d005a4f0099d42b91a9c05594ade14ff739fa2190a6673c46e1d29a35dff18f826f820f1fa572975047ccf7a22f094ea83f99bc56a51611b2da9680a941e94d046273f2b2385cf69c2e481fa74a645c63f48ac2ef983ea8c17a7db1a55e3d25099ab8bf5e8049d556162323412ad0778f9748f5248c0bdf2ea5b2016286d44ce8ef0656eb57608a35b37be17a8dd1fe912c7ce75edc1c29dfaefd1f8aa44e8abdf1c380d248887b4d11a48b2e155466ad1d06396811809b97583d778eadd63789eeaf87ee328ed9139e10cd16a2311537c7fe59337a29a1d7dfaea4ffa8edc15deaa468f4a976a62e296d03d63c4ab6d4d617e8436b0a37b1fb170cb684e3c07840daf004a7c61319826adb2048da236d9e83be685c771c3507f252a750cf1eb099e379304771fbe5afb210547cac04995b9f43a5269393cf00a8e1cd430d94ce2016450f47286e615bf53f1908da762e958d0cec6493a7e24f701c0dca81d366e5546d281ec27eefe20b350f2c492320fce5687d331f8805734cb79f5c3607f6189ad17e7ebe563b850fff79e98b0e4d9b56994ad0347e4e2df09d513ba3491689d94fdc7be904fd8ce0b9283846ee7bdf2763828161bc53207ec3b53bc91cbb100cb3d5fdf7686030d7508ce2e210e3a159283d5eb800a8b9c080c57e1cd761ed2f260008fed73c4a2350f7a833e2cb483d1ffd9ce2681297ff2354295c992644fdb40199ffa8f12ea4183a156d2f496e5a14e12f39af0576d2374a12bdd7c277b0ce80c02bc262dbe01cff91b25698b58b0f6649a3049aba9ad3971b0508f65e4ff836f0975339f408914cc78f7037c5455e1b3da6e70de91a341c70d5c75a147749c67edf0cdba899214f16adb0d8033d21d85d2d06143b750333651cc51b274385c0efe77e3ab0ea4911e2cc5ff64da43fe9b2b89b94446935fafeb10097465141517a3b6c9383925b800fd70c3849a868560e4a79844496e219eda8771781f7aefcd477d30eeadac375a8a59133ab811bf5f01a4e04442ad5e739632bac6a7d660d5760cd6e5af8a6ae09f0842addd2bde5942a727d0e0e4270ff9268431a9572bd7732cd70b2fa4a32dbf672a8d320a3b1c82d9ebc9d76ca622ae61ee8ae0a73b763c49dd09b8858146ab36eefc0e73feae241a238acda8c2da414774e4d7dab2d6905388fd106b8bad712cfd5c2ce0976f84bf5dbf7ff18ac37beed75ce017ab43936512488cc629476f60bb45bdd6381bba544c24bd30a0d1df55a11bdb32813c3b1e94115750ca42baacc971ee72e40970a989483e172c2660e9628c845db1642ba3153e3736878ca829d96b1ccec14660c8feb4df9e2451b2931d1b9a4c8380c099e01547bfd0421682ed5e00ad902b6a8b10ffb80602ddfae661aa4ff1b7c524da889b67259fda167dc17f368275353e30fede386ed411a2bbbad72517f4e377eafb931d134e53a2fda356ea3bde0ea8cb23daae54c93295756bcfca1163cdd2a395375787c48b83a6ca80615a36ccb2089f26e4353e9d9ae1748bfbc3d7537d8a6e46f49e2bbc6fb8cf06095ed417e5d658cacf9659af2d436c703d23d7f93d0e48384ea7295a0beaf2a2bbf16400604d395279c9806e5f67a939489de27a453b1297686f94615d5eafedd5063ab4976f0308bd604ded86b921387122cc55df06464ae5ab5c32bac622bf8a73edeb4925ccac31b02c9e372ca6bfadc2e014209c7606236d031642174280698c4e022182e6845433681c67cad4d1e4ca0f7032d5fc5b29ca6a7d02b95fb0fca61714dc9291398c715d10fddaa3cbca3ec01b2b4deb876d06fc3c39c1f6885154691daa3127c81cb7d28b36457cc3c9948e7350518226a4f71837c450ff08a29bfb6292a8aa7f6df99f9548664d0e544917268c7f74b4ed24e01d9861393435a8847a904c788beea115d977ac8f1edd9214dcd7bbf014316c4da087fe5e2010be2398d98be83f1a5e0470262bfa90d3d6d46fbc422e16c3264b7581115decd19a0a469e638f714b6c3fbacfd42d74512ea3be8cc7f426c7f2ba477a29cf7961c2b7744ff3364447ea5beee6dfdfed1f2b8fd98c4580ae0e01fc7dd50ac0e3f56ebe7bddec467168364218286d200177c3150594cc2e19c522c95dc5882ff4b41ad376b52edfd4047b352309f303fca0d93ca48a2158364858a8b0fbf95d91a57cd9cff7eaeb95b5af72a88aa6f46f2007f91ddbf580714f8af2ba3a9001ae4287829b76e695c2d17d709573aff6bacf57e4ad96a8ffdd396a45913a566f7f7dcd098b98c53f3cb869ba8b17bb5b711b68d0e5b49a7f5d51ba686abd8f26082d6d8323aa389ba31c1f36af2aacbc56a839197d40a11b3628f5c3c4042b2f32b073848e292c554f181540c3286394af9bd1288f93a344e25cdd59024cc6ee272d56118ff736bf6121b1a9a97e3bcfa9f5481fde5d38378771e36589af399646b21cd6bbdc1fe0ef5b26bd67fa4a0b26b91ba807b646a85c8898178fa27bd8cbaf0998bafc6ec9a2c300d8754bb2a1b36be9bb08d08190f6ec6b01a96415f0a0f390d4c59d3ee2ba8e6cd1a248a5bcc87a197f5cdaf63137359ca880ace65fc72816d287644b4b723c1f887a1c0cf35c7958600dadbeea9973adae9280d90d1cbf24f446683c1ccb7f13c2a4f4d7d11d21538e73514e50f071366cc56028074b4070287406eb1eaad727d965532502bb568c682f5a6d97d9f42537e9524ec922d6faa0de36a81a9aebe021975b8cb552bf16198d900c3c7724e8d6eb8ae43577cd74ca876b8d14f0613eb71c1477e2ac31e871b3164adfe863698b237ebe6012041ff9ddc0d6f32f2677dfc7c72303775f12c47db7214aded13a94ab7bb36cddd7b85e579d1aba53f163c4d10890ef580c2800b7ec6e4846bfa5c9ef28789ebc22e47a8eac4d98cf0cf1d69a27d238ee23846a7100c06672e4b20ab8940d7f561ce6e86e204867913b61692b57a55ce12d3dd127afe0468a097695343b665e0bbbd879d1be854bd261439b75bbf536d4d6e55d015a7ba4f34d70dd0c38860aa35e1d00f9e902d023bef8455b49c54d71430adddd4d59f919a6b1488f3375c249a3ccdb517ff68ed22e918fb60a5cb04b34211cc14b4b5d35d7f9f0fead96bed64147d23b7507289efb1df02bd8f87053b51790ccb38f0411b0a427b2246b1c77ca260b95c1a5b8db7363f14e509f81e253fe4629a6c767180a32b32445d64a8b1c44e664429d942728419e7cb70b99bdf7ed65105f6b6a30862a5e9937424656cbd340eaafb4c1e808f865042eb52c689edd727c0fdc8ed6ad877f82f27d12d8d08d1a837b7c85182ebb54a083590237dbb8f19028e6f4801fb8b733dd5991ac511ce08d5d3ab5b403802b3ecd53cb176280ce70a93d7e28fa644580c3ef7130a63d8a115ec27398840b329e1b15082a50eec5a7f6cd59c1d1a916d3ad86e77cbb18a886c912586c7734d9dfcb2a78355ee4b61539eeab5340830f0e66c22e95115464953d0aa2b47a8e62fb3257c9c7cf2a2234f6c3dab1230cc390aea196935e744ad33f4cffab4a8d50ea9dbef413b1c1400052293a9811ec0fe570704833ac5539c5710f4d20b07229a380f1a5ba48e965c53259c5a37de9ec29e829e3303da55d032658634798548f212606a77cb60890650aa6b1d2c58c08ea02982c34aa1beae62cd44729f6e77e8ee1710f40b4f9a3e02fd64c8d79aaefc1e4f54862c47dd57101a6aa7161d0f3210d69a2eb5d74d2980b84bd446214f6998b3e1be6ac1c793806f7f11cbd94f7fe51898890b983ed3472b127dcc7815312eb99fb566b0d1089f35df83cc2580fa9f68686848b2ee722aa30de022e2ce4669b46700b79b8994422642dfaf26e9b62808726bedf40884afafd8be05c42c9691a4da4f87f0088fee7816ddf048a3660b70d5ef94c83dab8f0471f58803a15dee2d5530f585d507b3eb58ffcf05e343ac606223d7c137217e0b28751d0498def814b28d72480f8c487b21fb8f4bb6fbb987facac6468c9e609297edd92358c5ffc87c2807bb4c3a923ab9b282264053dffcbf789ba0934b4ef7b3d72c12d8e9e00144c2d546b8ac4bc1fd901b63c8ae3d4535da4e34232f5558fdf3e28284988194be72a4ded25c73d92b047bd9d77f621d7200ea0648fec567bb9d5ec1a3e80c6da378b6e35054b17b091feddba2da2509ba5490c2ebd19645f63898662160e66d2d5f27f52b56384438d4bac3eddba53c3fdffd2a15b97b27dd993bc510715bf5b97d37c1027699e9881dfaf5c2cfae0398560f084ddea7812d57a0427a9e801760ab7fb94eed62148206cc4d4c4635a12d412ad7411c0cf205fea3b2039685a8cdc40e35cb439a8981229ec8537683ee9a36eb641a01324bc229889a61d3a82b7315b72c056b2c0369f754379a25560c01bc2ab9ec9d9f91fff5288fec6ce953112e416bea4cefec6991d168b77be1c4bf96cb4c8e7892165fe2a5a77e0e9796218170db8b858640d4031e65d359828b9cb2c56244e1bcfdde0559a5890696cd36eea605d1ca363d8d0cd645e0d063b150b89014a9d6c39fd1d3ffe5f90ece99b8205465d9e45705664d68c32f041b2bbc477d432f36d990e449dcd81c0acee32d89b97639f19c7e438aaa8a5f9d21a194452da2180466abe4f2370d049bd928a1e6a5cb736a3ca554cf07c9257ec1a69ffd72e4c6a634cfdf79abe0b03736eecfbb0e75ff70b5c5fd4c25a8c367786c7e1b1431ff8abd84e14c65364d3d98e111cd027e6686997fb9fbbc089cd1c71cc6c24356faefdcab16c5ef06893cbf5fecb10fd5fb6ade24cc56e9ae433145e9730066d6db0f56b0b2f79a131773ffe7700eca5415a297fd0f59578ebe1b502dce05d36d91ee2c912ab45faa21a44fe153bd7dcdd4a428b26e0d0a646e7e611186f702ed6427df1a1529ebfd179e083087f648cdb27766f5217a0f535e2d53f56519b72ba6661fe03813fb8336a2ea75a0adce0dcf4fac8c3d8f18bc7af886313fbf98019d2c21ba8286de00fb96f9495de3ccfd833d2aecc6268716d3e2bad9b444fd9e97b813f2e8b0c6643bac499a0e97b814320728b487ae2870b58a29951cc24c16d79424348bde1abe293f4c41dbce3df10483fd7ead20455fd20dca453f8582947f06308c75e52b61386f45449ca03e13cf91bfc571cdb98f904e3c9b3daf254e9032534b977e6d0e1e69c663cf6d6008cd8d8c2874e49f85bbde8bc7e5b28cf255976f01e1285521555f08492076152ae5539da56efe536fb40b496b56174b381e64eca6bfe35bc192912dd62e41c47e8fdb4070e6483e3f69a55a0c507ea78948d90b114e70909093913c15f6ecf394f9aef14d9faacf7954210207fbc88e10e7ca5d0abbae15c0d97b93f0685773360026ec25270c6b2dce70b7fa2a2e377d1fe69804ac0b8fd491474b30082e8bd1f3e6678694725f4286f381f90a9d5a5468fbd914f484dd675392267350487641e502aec21e63cef141938d3aaa9ca3b274714e1d92c17cfdb77de1188ae0cc418cbc7ae0048ec64204b9fe0a482b96430a4b4a6fe10fd7315781a287653dac010c56ce254193866d127b12d8a2e342dcda4c5ad20cd1bb3d432483525cc08f98116b076ec1892268f91d363b476f1cca734f9d2e1631132351a13f3ae3a999db693b691830e097423d7f04c0c94848f4a321e5e749848d916d33f472a5ec5a18cf5284de3844a3e22328e9dc5dfe62db4533cd6a3c2812e0783a942090cedb418b947a4278f2238d585a663610920b1daec413068046afda1ca11bfdd20dcb054a0aa119b56683269af4e2946f4c0559959f57aea8824c6b99680bb06039801a1d19a74908e4347e8d9576fc5fdcc97a2ab1dd39805da873b9e88827f280f4be49e23609e26382ec14d574944a4f3323cf256641178d7f00a916060989bc20f9792f7688d7f68a2fc2830e70caf9acac832df020d5d04954f46cbef25a88224473162c9301c3b32e1a6b33cb448a1391d64b3cf2405eca3c7962e7f38102e788dfa0ee606fe0310920410220ca7ed227d19ce1fecec518218de422d7adadd5320bfbf0a7aecdf73e0f995782c00a4cfc3e2207e0c0af98807c919a4273608e26387a53613d59562fd57239207478d038246577315f801c0ff33aa9f7bdb57b53c7472610ec2576b2d845b074011cec6c0f6d9db621257ae3520868a7b8d87653693ad91cd3d361833fe61c094ac1af27909038632a11472d40db0a372593a90b3d2f2bec0077da3129bf48638d983e5039dfc1a1ee0174a1fe53be5218ddab801af566a3380d69ee65a5dc2f16440d5dbfb07656cd5cb1d6c2ba98e4087e1bc5edff913c72610f090c504e8710dd78ff9c0c1c6c1745dce952b6e972cdfe4e33887087b45de07cd405414b40f3453c51c827681974cdeb5acf9cb8ad201481e50320e1a975acf17ee7b371aa8e0b353640c8ba002f667e90b8d1f9cc7642f1871103b4f171efe5050d9f07e6354b57b260f64028cfa23904a1e4959135aacd141129637b4d51b7974f1088b33d003ac7d4fe7c30b978bc53c2b485d136befc8c496a7835fff9d11dc2f0b4b5cf620ff2e38df60c38733574d86dffe6bb9d7ad8d096942e60dcd10ccc9d48380b2386cf60c90c44dfba3f7c788452b82fb1b588c1edc748142a20314574ee03de82b268c2f3057531d5badbd05313ec3d87f2ada08f7d4ccedb7088f5f884bae011477587abb8dc660ebf01f0a7a9809a89c41907e1dc6f69c307bdf52e7bfbdd33f05894f5100559416f48735f91a4e62619a0648c1d840cdaa76970accceee31c10d3547fc06c53cf66d11a6d81e81cbd73f3bd63692caa6a4d7cb705d42ed9b8f8a240599b46fe7df4bca737e1eb8cd3515c0a22f7328b1c191ccd8bf3e8a0f667e103c81d7b64a6e9c47c3bbf8fa234b71c301e4124448a5d7e365e3cf16c6d3525a72b954fba3365c4f7831c0ae6d6f84aa8097289d76eb0850cf4ed56d8f7f08ad051b1873f064d1f263562c86c6122a2906bdb60a27c6ec6c38b3bd6db63dd090f972bc258101e825833a0836aa50ea6f157fc2b0db9c355e7c4805293484a0d036ed2e0963a7daac07214144acdd3fc76bdd327e1876db6959d18694502ce1560dd65bf29107f5ebd4796fe502e78e052edd772e1e15d9fc84938a5e0bf5bd9d431d8dc6667d3dc14275b29977b128638e38c1ab73ce244933e393094d504d8ed3e35ec96d03e3f238ee03c12a94b028e73c691b14c3a845a0036ed66888ee7fd1b30aea84f2b2a3a3a312a3688d7fcf055b432821aa5ee20c7949008278de0902c2a1d6fbd32ef5df0772a5072ef500c7ee72c5f5a5233f73e106da6abb74b760a33609acd1de5233cb8e3cdd100824ca0f8cf29da87e3a70eacc957efe143c93542665995399f6c256e4215665e6bb5192704602afd6621d1c30803d1c4d4dfbd698e52cd7a0815b8fb5a91eb524e3753d5770318f402fef550439a0cc78532321a1799928640663c3cb901baf34cb02a40e803279a6a007b6b7b2d376ce2e9b9c8604ee0de03eb65b834fb139161e52771c88e688e8a0e173a068981e975d08eedd34a0e863a22075e90bb0bd3ef6f9787ef7f3767fd4cdcb5df8a80bca01f5afc455fb2aac89594bb7feaeef9f5ae513efc887240f590bf510a34dac71aef6dd79ae9777b614c113d43f819e68d8cb460208ba75c9e4f5209ea7389f30e291e754e43e70e4e8b6ad7eeeaebcc549b96a1c4efa6e9a00b3b60f74d7d94fe141400b641365596b89fbe1b8e4c30bfd02cc5e40a4ee631a448bc2f71359cda62557c0760017a02fa5c2d92c2838aea9710dc9ac40300abc67082012530b17709fe9312968ee13eab1c2e2281dc84c020fe664c383db296b94dad86d914ee422391f0a5e10cd2c40e72fcefe2a667d334a0c4d0a80ff3562980a01a4ef69c000beffd12e04e2508541782691c5ee564dc401b613daf486047474ddd70dfd33f5e7e5d9cd271bec64425ee878b8ae154ee79a1f10f258769e29e5b94d8c191978651a5f4cef6510729700b7ab29b691a6cf8a337426c18359ed022eab25f0c2383cb306019968d0e5f8d928b4024709ed35310329176df29112b39b168657bb54bf4437176cb66f6320587911e42e05b04849bfc78008ffd79ac56e16b74d196dc8a383ff999c4ba175c5239722e1804a08a6fc350b62b37a28c118bd3345f35abce07cd57b295011bbab9e7eb58f35f463cea8c84f17d732c06310a107ba64e44e27e22e57ba5dfc6e966c05df9d7d650ac30b7f72305901bd02fbe5120733be36cfc8965496e967e072ed8c73e10ba3c552001ec9eb2188070bb3e0bac140355febd9805c3a2414845b177def5a29b1bfc21c4d50da9ea1026c891dc71b3bc8735818845c19a06cc1da5c08c28aa18eedc8678101cda3fb77d7318cd7de0842d3f15fa13cbe4bc6ce38ed8a2dd7afcea53801157ef26872dea0255748f8d21099a84b59a5b6e0edfb6f5e1526587ce99dd21369d8dddfbb433dab994313a65cc5c6c2e19a0949a96d38a52afe5de5b34b31f3a0b133f32bddc7ca3d8a24e9614762914dcad07f725769460d89e69b9c475c1fcb9f5e98d97c296515be94896d39a196e24579e354080425e2517fee2a9470c0baaef72a341bf3b77b420bf2138858052b81771c68a3aed697c2e018bfd30e7524e6bd96ff64c1a76599ea74433ebf514dbd5080f1cb055024b20e8806c76c40f12e270bd6b75b415c29c4c09a1f110f5b039b0fc1e8d433b815f815c1313b45b94c41342acaf9e14c20aed5fb54044e095d6de7bb6ff2370eab158e0721942c08c1436aa27935ef263bead47a0e82bd6dc86185d6654f71b36546dab9355e308d915316c26672e0a976000a83add1e76f1a7655e4862e4267e0d913ee4b908765390c887b4c4d2683d8370a6f5c32103d3c7f9b6f243ea20ace165d026c9404eaa69fb95b3092aa9ac61a1b6eaa7b0a964c0cbe69112fe1f7a99248de55e40051c35682dfa2ba91b9ff2a2f5c2360c20841cfc09b731dcf196ed7ed7e6076b59aeffc212967132ea223e5c62195d266a53ede4f5a48db7befbdb794524a2903e90b0f0cfb0a387e541158deb001992d3944595b110e82760463c7222c445b9a327e2983f16be9086d6ee988e5f84b8ec1406f3a0cf3a5c72040da1ca134f1c7f6fb03c41fdafdb1ef3b14142c3be94d20762c524195294044f7f752ca1d4115d366aa0069dfb9ef4b2eb12fb59131200914bbf747a80d0624eb3eee60df1b6fb0efdd740a57b04412c1c8d0d8b1088c2af6b4a9612cc232b4aff7f8b5628e33bb182f4f267375df41c1f272482bed931558fed341625f42dc196a0558ea6c0739b0158be1788ec7547f799016b5a1974777df4b236a33ef2551fca125d1bf543eb7f7f7f3beb3128a27a2016ef4010ac18ff910f0329f5f4bc7ad8e2c8764626c273fb0657adcaef8819c6ee1a31043ac79845cf3a5f3d0839a67be742fef75fc80e9a637dd02f3a5e7c8313ca110c358cb5139720c5f720c71c430cb71c3e4c8a7e3c82d5765144c4efd25e3cbaf153b1d3f035ba6a31043d373681a61e92f9a6ec562307c4f3d166b79ec74d363a8c7f04bb9077625512acb24cabaa70bdba91cc3961c435429c7f0cb3d2d39249b481ee6eadefb1c002801a6734ad991070ba89e6cbac4d0c5199a19ce1b6a137b21cb92254b2854ed93684b542117f35985dc97a8c2edaf38343df9ae6628da6f866233141f1c6aaa705b859bf651859a91a980ecdcd5c89e7dcbce65dee72acb3468b9bfcbba20a07df79ed008b4fadbed37bd23646ff48ab2b2ef449a9dd33d614f186ea7acec67601c7dd89fa20f2ba78d7528a318e751546059ebe77c3773aef446549baabee5e92a6a2e32bc91c51335b82008b6021a416821430d766063884869625d9ce970f57ac219f3996ddbfe58b36d333bcbb60f4836a709f25bf6a85d9b35335bcb664cd82e75d436203a29ccd5fd90b9d228eb1a29a2049e7fc52b1189a8d3914fa2ed7bf084f8ec739f007f67bbb9a661acd234efd971e6a7c3c5e6ca87cb9289a53737af5b6deb81596bad4521b43f298165932dba38f38a48dbbec85ccd9c81eb8ddc627a7591b9b2f1ca5661a399a5d1d222d3c85c59958c8ffd67ec695400ef8980f729ecadea21ba0c6ca448952b208844ee1ab7fdcc197885eddcbb4b16761c5aed2cbbd9d9d5afdfab57a8128598e347c23d97ad10f5ab3b5da15eb9e3e63a0a6e1997c14dab3057f671d7227365afcbc09afd290a96bf1a89ccd28ad1cf5b8d0a0b7c762c322249c78e454588b171a80dd6b2fbd365911143fb7563534369c4942d2f4290ed346f924714f9436d56748608efd8a7bb9c3e161961b4e7070a391dbfcb603c4e88331875eb26e4110396402725303d91d361b2cb5bf2e9a8ecf2528682ef6528a97f198acf2ac437e177a92223b0ec58644495fdbad9450461df88306d605e0e9363425ef7971c132a3db6e4e1925528f4bd33e56f975e72c78feeee88dde5d30c7e1083dde5971db39412e886b9923f31c0da9622c418bdfb010185b4b4dcefe0b7fc6a17ea2e7a27a555f5d3719d8ef5ce4947cac28f61a4f72f0ce5f4fa41f17978d22c602d945de85ecbd367abe62ad5926318730f9a1356e917a793d8951c1a03bf567b7582dc53e755c639d29b15b5913ff2070bc6d122cc95943ff58069247a25b9db34b92ab53ec69aba2ad201c9082858d006940500e105174810c4132fae08e59d30a304471881830b3e5be02fac847103104df8c049285faf5a0263d5575e444d81b126ab8663e0c48aa02c84c041861884b52681e37e611798628c31c62857a01698b0d082f5f6d96f06ab2621b4dae766d2d0557d684f55a1bdcdd70787f6f12321dbd4fa68a17d9dd66a3b450f3de0a8c272aa204651114ce88ea0573dc2d29a37b30260cfe8a97be439a90e46749491da54dbb24cd3b4232cada9e9abe3b53d349a65975aeae1bba4526ae5de7b69766a354dbba5d9bb7a330fcc5ab73b9382cd71a5d9e77d81d87b2f0eb235b52af808cbe79c99343d3c9b225a853270ac1db24376e88533ffd3cc03735b1d2df3d83329d41c5700d856bbbc4af56364d3cbaca30c23a97d65b6b67b97b157e5084b6bd64e6f1a4d6a765ddddc36e345967cf5d892ced4bebaee18509a42e4b4844d163d859150da12167dd0cf7021613fdb7ec94c8b3fb4d36fd18643ed57b6298efdca2e107dd07752f3acc89881b54ca7b0a23618882c8ac3019bc668e515ade836f0b784fd441b6d091ca2f8228b14574409e92550b489000d8c78c188066eb8608dd092606ead23f7b7b76bf4e46796c0de5c755226dd2c8684cccea217b4b03d1afce08c1a2069454958d95c0c4a48ccd417371b0237b3957e42608454cc0c959f28366abf7a0c11842b5e2a6686ca08a8903243ea0c011871858826943062b243931a2451112841031a34202387272a48699fa99899170445c9b25f3d72d0c5d31c77a4d7e8f1dd31ce108f87a04433a21531462fe6310d118a2f8bef070ec841901060b0810403a41e119491a4840d4d4091c20ab5e2842d722083ca952bc4b0c2441542401852016c071a680d3e182ce0448a2c5be8b0440761f0d0031eae60f103274838a14c78584a47f40475618215b081c30d41d882688c1e8eda70810f22e021d6a0491b9e0cda9cb3a66244c037219411a58d0f0878ee5814850dcd4e23570aad2172026094e0e707276cd8e049f884102548027aa10734863023ca1a5644498ad203eb836664b46736b318fc40050d1740745c4829e222072e98a0718120846104c61a50ccc0060590710229ce80820a277ec2a9f9a0c605c2cd820a9357c4792778618c1904f100052df8400814f85083268094282288709e51658cab695570d055e1c2db208013a44a71e316e14291941a48f98207dd8c8f166ecf726cc94dc871da11902660d7d44ae7e9354deb1a4691d0d6b4c7f8038a16b3fa4829a52b2499bb6a0fd00d0504d95b764dad746e9a250b03a8dc1994ecf1cb714098cd557caca934c618634dad7432607e461d199f64eea8e912a32ece08d977d2ebac50769b756c08eca63adc236bb3da846d879df5389b5db2d3a70d9c36fd80e89c288013602431697bc4b27bc29e70be7bdd7339c6bdcbb1ee91b2aa4cda49e88e07c8b218722a2dbfea0909d8dabb28638cf42b6dda03939bdabd977259886af77259c803736b9ad5a6a582da0855a1fb9a75aa36c1eee9925a46d6f6816dcf6f888f10929bbd4212bae957bb27d45e4dc87e63da970821b9d949e801ee2b093dbbd6fc62e13ba1656771da12d5d9ac190b5428dbd506243a132cadf6dec7ac9eadb34a2334136a5ccd6f023bf6d7b44e769d24da4ea2d2536626f09c50e511384611e5677e25f4ecfaabd108585da50b546a90824a0d4a50a9a1082a350451a901884a0d3e49546830c30a151ab2a0424314546848820a0d41546800a242830d5468f0a132831b54663083ca0c57346c8a9ab4df3163ac73ce39af9c5668a535b7568ac3ec668d54d73959a8daac919aa6527dc774c1894629a554c618e31ceae283621334474927142c7496ce4bfa484360f78c919e4a216bebecb152bed0c9484494c54b049c1e77e574f2729fbbab5ecd4b46be747f956cbced75182e88d46ac0dabb6ddbb67ffbdcfeb2d973dbf46bbb84c05ccdbfec2567b5cef77679ed3853e3344ecbe86377779b9a097367ba0581b8a76baee645d8d14a0a4144587dae66aec3b45fe0f801c18103ae8f978f8933ce7913c29cf4af18678eaff43b416eaa67668c74ce594f29ad9aa6d1c9c726405bfb940c98fb5e02491c210d10f7a5dbcabc5e4a96470df8da4ca3016c64499815648fb98a80dc9aa6992b24b0d43adfd9299298e58d6cc7af8497de990e129965eb78e06eed49b48dc4015bcbf27c40cfee806ad3cc558f558c02f6c20ec1858998970822dc1a4a72521e4f70576dcc6ccd559d01526bad35259305db4ccacf39e78c9a6655982b1e4f7077e7ac5da653779da77bead7ce965a260bfe99abcae4c66a9db5d65a6bed7606e301047e95629bd29762259f129359234b3f5911329841d28e3298011602ec2883192cb18b7aa03136abc9a2529301c7a21eac6c7b0fc81044b8b1c1f32ff99be796f2f57345a79e4102cbdfbf62b654a934ad6a55eaaaf843270e6d0fcc8d44bab1e70f9d2477cf7df39cf2542ff73dc101db6a24314b96fd44d10e48453b1c15eda005d10e4aec40c4bdf766da0e3cece0c2d4d8d001c9073033e057081bbfe2504dac0284821bf6fc0834b206cbd5fcabb4e7ab543245d62ccdc48083cc5549e38c10c35190a5296de32eb769598d36daa853b716549b9a8c31464a29a518075d2cb233bbebcc33e657ca886ac71bb5bd735e5a4f1ff3eb5e0d78bb6a23de8e1ede3c6b39cf6ef6d6cfab1edd93dbbad2abe74aae0929c9b8d6da6bedb66d29c92043ca2a527a212519529251eb2595524a4946b555076f765dcdb26ebfaa0d26e5aa17e3e96a75d664d36ab566dac542dbac8b181b57b9ae66a6c8b2d6eb6a66e2b6ceb3b37b72b95ae99d732a81c5133e6091441058a88185932d359658e4d0d5a88db0069634b069c7222c7c8270455204ae40ca32eeda1a357c4515fba50ad254f5dd90a74d347cb828a70ccb76037847f84115ed0a1fcf6e23a04194b161aa38e9dea0858ee083269686ca40666a380da434926093a5bdaae8a3e4903d30ea41153c8bac68627a159315b7a6461638025600691a56d9a4fd3a6ec17705ab762c0ae2c77b011f890c7c12030b7ca2f2d100c55704f69090017744746c60981d8b80c0610888199e143dc952cae2091b11304282004e90a8e1d48e454478b1eb8e454650f64b651486bcbc6ae657a462036c2779c9cfd777f9463ae7ac3266252c9ea38fed8443ca39638c31c605e4cf49e9a4b6fe3b628c51668b2a554460b9390bdbf2de1d8d288bc9fc9937ecf90984022e684f2996da1eb20a303a35bc18237605183210d9a0adc1c40627301d7810d386f0ec2b1e5d798489528d3d099a810431821882062648108315d620830c23267ca428431302ffbca41517ec195f7207fb25935eab294bd05415fb1533b3b52aa07819c001069816641cf1821f5278a3891519be3802490b155061625321427a4ca58c4d69d0824d8d5ad8d406b86e1f5d9da86cefd907c4531551c16177ddb50f48d7eda801b6c196efd1696b2465b2e2349a723484850869266d13465065b2a27c11159be37e3f209c86e5092cdcae451b181dd4e003b2e12ab06c4d0b4d03c2ce6a152cd8f775d60c00c8d5ecb5586355695415b5595155111809cbd176825fab5a654ba3f883c6686b9bd2afd23aafc04113cb449a4974881251a35aa51ed5a48a45ca9f2d3f8d60d44652249ae423a594d268e34c9cd922a449a35db59be87df690850d4db8b08320b27812ce167a28820734c47863480b4a4110786441450c28be3efc00030d5152f1438cc6c31a409f12076a17cde0059bbe522a6cd8f43930133848980f4895322843d59a2c23d0f071e1861ca42007d81257b0f00962892c740827943d7d30624fd49e3c9a289201095e6c3ce238221870e147873046d003500b427a1a6a536358c20610866883063642fa9b59a30501458ace5aa31611158ab47c4068ad40cc39934418b78851541105187bce6b41ec79550ca8d8f3f761cfafa440daf3372a289a22cb9e454457ec79970fc8347202850c315973aa514441a9b26c53aaa274892828f06162450a788014d29d1a6e48c2871cbc18e2899002b1291038d894ca5df74d754eb15fa93d8f085f313321c0c0853d5f83c2792cc49e57c1a0077b7e05c49e50a4b00f4faeb82d6aa3e25ac02f150482ccf984149bd2973e203456f48410de9c733689b2e79298ace1ea10964de93b1b864eb0270df60472228d003c118ad7891fb2d9a382242030ccb0d2441055c42c5c98e2680a1e2c610224342839d4aa7202bf542ae9440b7ad35b2056f02369954de9eb0784c260cf8f30f19cd8f352b2a8092176013614fcf2f62c620269cf69250f2c9dd43ebf4a4571841a7bde7bf5f0804d8a3f6815268e762c62c268bfb4285bbec78e454c3cd95285e35bd186fe4496fcbd7d9d91280edd68291c1367a814ca92d1661e519b39b57503369434571766dd4802bf58806153375e6018cc2edf695a65aeb2a0464bf0b77c3ca236968dc8926f018b08b6bc0d13cb96493629fa804293b256a369238f86a23cbd42b1c853a459a386346d79bac4125bbec2668dcfb4f142f94aa74d7a020bf221e2a70820239ab020e808293a98326b5ed28ca11f889e5ca359f39a624c31e20f37668de6247699dcc0c313228e5842fe7087f6eb66b131c6b740b6096d4259f233286806cda02965cad00c329a3fb468706886ea50259a463f94258f9484848484249360126902e9008a77dda22ce99d48348a57c218e678e734d80ae3d7f23448b1cc957c4f4891a85111be3f17e836b9582ed24dca60994ff603f3d19a683f1268cb67484999146a438daa645382ee1050d684e80e6d29a594524a2983b6bc465b4eb14947cc9a29d406ab64d26fd09697521a6d29ab6c79b46592c601fe7e51a32d4f8d68157a44b1b0e048122423e28f790dcc213a042ad9894945c41f1a3012afec8a0483c16257f6ccf1ca8611e1c3c427e8e7861f094a20c98366c326d9a40bbb3ef74793b2cd1e5eccab6cae9e474cd6fcd44b4c1d456855f1870ca22c8db2e635a26934ab34099232658868ca50ad42142465ce39e79c73ceeaa31d511f295386a89432458a1429544af4318f3397c0b51ea1d1c519d550fc2a5edb119c8faa479b9e1684b8410c63c0b0460b4cd8a082b288e0e80c1a8c5e10460904d5d08d08f368d6480d6a2f3971106d6eae6a326f44b0276d01b3d1833de751fc81137dcc4f8001d1e691150f050d15f388d21be69ef20d293018ac0533a64d4c0e29a1844dec337ac204366b6c8c883d4d7b9e325182873d4f816a54850062cdc99e29c0336986e080295038c51ff525c4ad8a3ea28f486d6e7df69e10d4f44e8bb2eacd5112ccc7a8ca1116249a8405c9a72655019a473f41b01883f6943d4197f6ec9a8efa66d095fd3ed3f7874eaf8bf84e935146192f638c8f31ca1889a048b1a57ee119d2d82f9a1d1f24d2dce0c407a130e8e294d4a35d8c1f0ada75ea33acd1986fb9472a9f60f70d09da56b944035018abf10e2b35558929351bd91fe88350fa20f45dd4b49843982bfafaead9f1a829b0bc8e1b601f414ce1420e493900418d90ea48297d010eb60b135cf4022b367d08944635447383431f845a27ba58f3b521b0d2265145aa288928b6dc28286aa4010c8cba3003055398b8410698a00007234002055108c1436a99533133af1e3de28f471fa918f91939c53455f1d27580c89a8f32a079d16c0670b01d69a48602ba4c36efdcf3b8607f359893fd665a08d4be96d596e6062748ad01892648004df1a19902ab915ded6acef23b46d0423909e5895cded7eaae76e4d7a956d95ec7ace273a05680e3e33f6f9bf3a917607b7a9577f915cd0d0e7dbcf7759a6debf6f2d57676845c9ea777bc47aa5f2c20b17a9aecfbd6bec7a14876f68c7386341ba1d9d10533c02ed83a0d85358c5f65b0de54753dd63b4255bb4a37e91db0fea5efa8f07bc2d354ade3c2d7f44ea47961fc17cd0e6368fa2d65d0be4559f73de1298356eba010c3203b3894757bc273ef4969d0757ae9a797b49006a0a40ea5f4188256b762dd5bdcf79ef015875aa97727eea7d3bb9fde759761f7d36950fc217da28ffb93bd07a7bc73d22ab3664e9b1d3f54ca114e72b06ffc01867d4f89681555f645ed7b9a82a3fbd9a4e63a31dab78e60dffb7aca32b455664da4c2448c7d77008181ae96736f39a7c11c19729721f796d6e95cee095b34054a65d05e86a0abf4d44b547eb0ec9416b23f65da840a99210da24344f7d408a8c9ed09efab943ae5be0edd5b2953acd1bd1da2363124daf7b6890daa47f7301a744f9188eeab51123da2363144aa49b07def05da77cabedabcb07db1a881e735fdfe5e0265f34b54e1e92788dab4fc9ebe4415a6be5d4d875986523a2d7d969e4afd94d23eaa6bab4c05dc9f5ebab68aad52ca473295fb964ca5d0a0b9baf7a6e3cfbf68502b66d2a0fcced17b429c8d40f9d37bc22aa0d4a0107cd3e54d7a47486a97e927bd434d1aeb1b445937ac3f451ff59f8eb4d2207bd4f5d4690a439650c5c0afcb26200974cbcfac7ad01091fd25371b5aac620336b0a0628d1f4891211af13044d20f5e2862054884f237a7f40cf0f78ae6460e75d1e36eb75b9bdd356d7a4c96fdec118d348f665a6ff6982d6e6cef3448390d529ae997fcd95afa5056cc60bca7048cf7de134a18183528847bf71875912194656d4bbe84b87554d1c7fc29fa90d74e9323e8eab496c14e6b1ce3a60d59354e59726a2412a4bad513ea2e68e46fe471e483e016162f5260440fac60a1458e37cc08a249176c0c3144281f56792caf927f343aeae2cc6b4aa9b301a698c9baa7f96a9ad3b9ba47a9815a6388da80f6a8c710b41ab440e9a6e79c8e9f633a4af3946e3ad62077974983f6313c69d0c63086f7da09fc7b4944d424086cbcf103173f5c84f7b2cac5072f73dc724710a39cfc967e5f7e55bf3037caf1a7e3d36132be6c69c16ff9a9055f956578ebe9e939348d19a36ff904035b6badb5d65a6badb4d3fe00d187bdcc3808905201af1f4b1e4699805769779ae60a9e9fdd410edb693330cb366badb5d65a6bb34dd31ebf96ea9b2a4bd836a1b4b49c661f1c5b421352ed83c3166d7fb2e2de6bf79a2e21a25680677779c2bfb9158bb9bc3e963a7d87eaa4279355aae34c0f6cb5b4c05c667b12c7631e8b818fa1def2588ec754878151e588694181386a4c8e21aa0587cc018012e0f9ae7eb556aa77a887bae7a96fa96fb9abd2a31ebfef78d6acd075dd23ed8c04d9dbef0adde3ee3afd922cee75b38276b969e6a18779cd3c422eaac10f4683dde955e7013f0ddebb5c60a7c1ab85d4c33c875ef57a987b981c29eb6a555e5156b779d1ce1ff0ac9901baa9facde67a37d831b67609bbe7ecb51a36b3ad3c9056accb3e12ea9edbf797b64b1eb73d5d92db71e6273bee13f291e0ddf360ae36575cd63296f7be322ec84df6aeebb89bb37bb9ef666f87d8e3591387cc95d55e60e9236359faa0b204caf225cb292d2e76c8a63057b60a12377580d1d15b4be7acd46a5bac35d62e76d48b1fa5f613c2dd8f84ec9f102e462ee358697cadb5d658af3472138138c6aed7b68d1b942a1829e205c62727b03c4755d0288b470c4ab8b175f494417bd373eab1e6d13c423ca6dbc7507e25d8c721a6db0fc1a79945a8f5780a4dedc2af7aa73bfece173f2057a3ac6da60d4c4f440080e1fbd3512fc550edcd5c6db75984c9da5ea3d8dbe74df4b19d6e3a0feaf874d35d270dde5bd3efebbb4d4559db67dec0f4f8264ebb4cdf39ddd4e113becbc47dc7de744ee3bcc5b043512e861d3350887d770bd47bf6a6bb6abdcddded5ddeab06b563ab4db777e1d79b6e710635530635d44d280d6a07b97f8f3ca0867ae939a77f9ae7e311727d3f9da7c46d1987b2b6eda74c84b2b6977095bde518de50d6b69ddb6ed8dbf66e8b33db9c5c105d9c9935f3ae2e0ccb7da74a9505f30865e7a9ef3e55b3bebbab6ad0be1ed4de9d6ad09e76dd950cb831ece879db63986957f79def9d06b57fdfe3e779d5fba777e8bd2779a75a719926f38801ef2851ddc396e86c0cf394946ecf6ec6e54f4877fc91203f143aed660d5b23379f09d467df7b415e375b7e66233748b2fd925b0337fbea57906de46667072b85e13db3f602d7931378fe95b25bccb881e967dac0f3b22a20e631be4399815fdf957aa835601594f453666e348d50e6260d52506a2dacda0958bdfca99740f5f46bc94d3ffb2ecae8b8f4b5f4fa92e3f507e652b43c29914536440788cc3e213a5eca322693e93a4c32a1cd72c26c3a668ee9b8cc698ea1fcb4aaa44a443a529fa4ceb05ec2ea65acbab1eb106a33823642f4516b46137d5424e05682f7929e26616e8fbb84f930a940354f4e52a64d1c9a323daeeb8e338774597255d3b41f70dd3ae0a65b3a646eafc1aca84dcceb4f6dc0d7773af22f93773c26d383794ad8ae973ef147b6eb7cadb556d37f97e9a7375dd3aed277e89df992e932b9f4981c4330c7f0056cd1799b630a269fb258cb4f8fa18e6f6fc51995651065d5a7ea4df5a70aa3ac4a2485b9aa3f2991ead9e6298a4e7af23d53069776d59bead5872b9d32d2cac2ec99735e217329a594d218eb8d91dee9e51bb07c8fb98af4de4beddc1dc55df52ead912bca8aaf97b5b44e19abbc30e8688c3b7490c4c647234a29a53b7480c3485612dcbb5549a52463aa5473564ba7acf5d64cd6bb655207f56e43ba8edaceda8edead92613b6b3b9d75fa35b7addda6795fb55bc77d9e0f94dec755b4f26ef69d3d676d66337b79e9a5cdb26b3b6e23c36636cbb7da37c13674937ab5bbac6d24891f88363216b3f65a7356b39ec4322443e38834c08f1a495cb6b01937e48867e585b3438e78588e3c24bdab663f20dced57c21c228a79653b966c8af33a572de5af09a5d969a4366699ddae4b142f2f135e30a0bdac6427894b338a44318b4cd3322fab74ca7b89770003c75f3ba7cdb2ac872dc6e8b2e06cc7a22dac58c1a91d8bb620da62e85ecdd6b903232a9aa66938236c0103ed6c0396adb1d5cd8d2a578b2318ea868fd5620a1cb30da3aa45112f320a4e103782262b6a528b136ea3c964454d0b08e004d941f783acd63be7f48142c37ec5a11cfcc003c2a61d8b8228a328081b0cd528580e65d9b5750791d64f5aebadf57e4695dca1034dc3387f47b433decdae7d6361c7a1bf569be338bb4292974481e69a57a0d76cc6711c979d7edb344973a69d524af306ee0a661a0241cac0f514a5c78cf7eed2d3da290c501533d32304112e0eba17148e9f34cfcb553fa9ce733a8e6e7a47641ec3d3e931cf79b98ce651f108b9547f390f8e9f3e7370fcf41cd55f2e3f506a21a7e378cecb5592880e3270fdbc945164cbbb234ae44542cde787526a1373fa224aa84d8e530a734a8fa92ca282123a2d229425232345c8e9a6fcd213ca1c859e5046eff4843b42ae96cb3c75d7ce0ca18cded96112b66419b662a9b73cc60f943152de18b5e85df44688d4cc4de70db599d1e8cc0c0a312c6d7c05c74729adb5f18d2658866c766f4624fb4a286d2256e00805c7564ce6313906fef498dc7140eeeda0d438b3eba47ec5a153a689b979799189d17199bfac74680ddecbc45392baad09747b2f9c655193b9cb1d121abbac49fd22f3979f627e7a8e8c7e798c3e1d879e720c5f4ef339861cbee99df4c08c3a8e8cafcaa6bbe4d261f2f71cf984e2522dcf916308e618e680c931e44aff1e8be1c7504f3d667aecf4964b739193294b1fcaa2ffb20442e11211caa238734569fce90798c2884c1bb9e4a8a88829432031e5540486149b08c46537029266af99cb71f7448a1849a26466405c766766cdebc68a944d2fc2ac71d9f4ab99451f1c655dca71faa59358edde7ff346dccc51a5d3b1af5d2943604eefcb6253243b5466de8ad22983241119fe77172e3d695116adba1584effa8e4fff6e55af79fa6cfbe9b8f04f7a47a3195d99d0fd65bafd58c0f403e2e94e67f9bb29977e43755ca57f7a6785420c69282bfba8fc4ce8b2771a4ae9b2a459f8b49077a1ee356b7bcb13363f209e56cd55a6b99933f00a56b2b0bbcffc8a43de3def667b55bfbea7a661bc829caf2436af30bf6defac7d69dbebfec2dbf3bcc78e9bf3dbf639d548a28b15dc608c165ce14118e3ccdc2b8edbb90cced76b560681533e992b7a7b8a82897ac0f359d6a95ad649820d303f29bab86b0de186e2d4233437f1c7b4a157f96855aeea3e3b006058eedae92630eb86b22e0d005ec03c42f63cdebff3a0fe72f9174de6fdbbcbd36076efda85d29e7679a7f7b4f6172dd3648d3f38d97dc7ebb4ebfbce4b8bdcd9de80802d6f03b27da7fefba677b44cfb4df86550d3ad961c0489cc12c37e856083a090d3c9850f6a1a14f27d26ef2f7fd13ba5db13e4d68e420c5f9ee519c36ebd9ccb77732f99c6b5bea310c34ff30869e7a9ff3ccd43ef7dbfdc55ffa241ee2f8fa18b1ee43428a4e52fcf69f98be61172bd1c751e98b73c07c5f392652e86ddbd645007090a314c5d0708f756ea600b06e6600e55237cf9cb372eef6c2d9cf992c1eca9c71026c3dce5392f4f699ed45feea279845ca9bf9cc7e5308f212af5d2e20203e39263784dbbe8bd6739db4fe6eade041912698878d13ca9ffeeaaff34a8b954daf6720c696e708248292513747166d668df1e3f835056adf10c7c770b0c70a5a57f9f23cc55adddbdcfcbffde089355df49eea5bbb897ba735abbb87f7a87d3de4f61e09708bb8a50eb877082b48678997e3a9cae94f55aedca3d862a6dd3cf04fb1786d29d769a054e0bdd0bd96f79c27696b52a90b080640706db99c63903cf7ae75dd249cacd5a2ba574a359a5b4d65ab177af1763adb5d6186fbbcc2bb2a30b0caaf8486b1624c80d0ac93eefca3eb54bbbd43bf21a4d02c63fcc3218754b4559f55b3dd54ae6aa66d7eecaaecdec3bf29906ad567d4543eb9e97309a433d8fcce769e6e1d1716a75c8fcc84909ea39f8a6e7a07ed226143ea204e6f3cbfd734449fc519b0495902ed2116ab303bbe4c07109fb69a2fa4b4a39a224c95c2145b105193a42595be9389b5028d3512fa176b8a4328f904be631e7d1f153cc6d6e1de49e63a59bbe43ce22474454d8393267106a1342084421fc9c29221d9936f18d98cfcf0d403c3409fabcb9e338d3db918f2c3157f5de11205d1739dd2a954ce016f3ce647acfad3dfe8ef78411e9c9aca95d7764da804a766a455519d6779c0d52475082dc2ed44b3bf48e0e0dda534ebbf04d7a4766d342e84f77cdc77c3ee69463984a1dcc2fcf915daeca2dc791611e934ba997b016c31c385a0ef358ece5b1d4518fb93c563acea51754cb91af850a82ca47949488c279c4cd14195dc5711f1ce6b88e3d94d8121ce6a88f39be0487385e2b0c16e3f3bdf41cd3f1734a8fd13cdf4bc75fc954e7d7c221336364727ce08b4bc904932a65997f39a6548a79e93277edcc1096f4ce0e139b5b38c09c03478e95fe5dd65a6b95b5cb72d47ff5a517cd16732dc2244cdac78fb35c89c3f13dc7a74b5d77dbddea12e2ce4a1249cc39d0b3b577b9158bc1dcf4d8cbc17754c7dc32377d48cc71c40f482bc771664ce699ff2e9379641e7309c321e49aff1e9379e84bd7360744870ebd2364ad76a90eea9d79d57730ab6eb384c916e48f74414a1aa4025e5206fad22d30ff3d861885133e4c46fdc5bb4b6e899f109c9981ad52e9bb4a8b61d68a796f792c767aea339d5a4a18e5b5f46833e5461767b458326ab2d19f9e338f9a3f7d9ec7a47a7944e9b8cc734e7f395d66a36984281d1ab43f3f404d82e4fe9172f78f4824f3976a5ffdcae355c7ebeb25d1a594fc971c8af94b1afd00ddf07325d3b423f94359d94c7e398fecf25356e9564ce6a82c731e19b5c9a074f0780c4fa7ebe7e8380f1dd73aced3d299327d29cf7738c7b0d65ae7944c8a501b972bfaa81407497670ebe4277fbeafbbfc01e2211e21a7c8258688be4ebfc85c55f923adccd5914e1b913f52a70424253cd32d191492562cff1f427ffa90791da7a136fa5508a5f35af3e04facc1ed3a3e3fcfd3a2c14d83560b399ddea5e3f3a7532debd072fc19c76372ea3b32f85356dd2c5f5e5cdecdf039863b720c4fa14cd60263320ed5615eee7217181c609644aa1ca91ac39fc7503fc5d05efe009db20c2af18801af667e2a4c0f375b8e746296514aa910aeda9857b0d55a4a29b5dfced96bd6da2a84b3797ba5290dd7ecc5a8b4d4d18857cbb678b74c8b33689996698a3443a37ce9867b57e234a8759ee622370a07e52475ce2be1d71acb6eb35b58d672d4b97ceabad3bba33abdb3c324d57279fc50a818eaa7d80b265a7592e02c1f20faa8bf1901d200f513c8fcc00ca793f566dad4b09e06c8fc524fd54f05681a9a9b3d80374d089355af33fbf99520b7cebd3d4ab7ba8e6bd15f65d6f4efb1d23dd45ddd51d4c5fda477e661d88e4bdfbdeedc6f82d0214528eb336d753563bf1e3b3f2c5d057ac2fa19a31ce5595b1e60cbbf16b06594a1bd6cadb6e4623d513557f2317365840269d139bb262a1974046acb8f20df9a31483ef1a13bfa18c2116cdd7b3087aa11da2e66d54b6241a291bf91c709e388dd9a535e6a446ce91d675255a6dcb78c0231acc799d2279f26e3e496266b55fd3051492974723fe8e85d5e80e58e4551ded871ae6276b4f202fda8cea103fcd2f694df17604c28ae7c81050e5f7c313444f4450df15e5be70a60d9d534492b755251f8c7840ac00e64f8712289490aa6085f52ca4b0ef97461833d87aa1733f022085e74b139ee9af671dbef0764d3bc58c1d6b4d4ceb2da4510f6bdd75a2fe7192ad8c9aeafb3a6cea38d332baa56e510a5c9f60d63d78f60eddd8aba10418d64dcf0440d2da8628c246208ab11b112c0f0049337acd820ac3af810850ba5712902bf686a6abd96b032f49ecfa038d9f5c74b55dc0204ec79db83110df2479513c4049144022ea0d8738bae8b2fb858c206f88563111748dcecc085133ac09008e389305e158fe355f15a3c8e57c5991942bec938d3b35fa945336bee0f6ed7e3d45a6976d5344fef7c3b25ab634f58df7d19b4f7ae3d87ebcea3dd6b02d70f002f60ef9c7718b6735f8d61479c397db47b7769f7f44ea785ace59edc5056adb56edb63a87de76a957682e606278894cb449693cc55769a95e09fec4766cdddd995c41fddceb22ccbbe4ff3d00dacd979a69ea7cfe1280756ad6935ab1a14f27dde3bcdd3ddab8fe18ab2320d567d1ad57764ae32aa7984ea79348f8b6af04edd695777435999bc32571968af6466d0ead611caca6e46965dd919fdbc05a806b5d3739f1ab416d834a86950bbcb35bf7d7e3b687590b9ca1ec3d6112512267d342d849ebb0528969ddd02f39b26725f8fa471d1c519d41a7855a2a13625ab419b658f61b6ca4e93fd263b4e266db5d96b763a33cd5eed7ad9f7ee2e7a0fbc3583b77bcdb7d4fdbb07b56fe701ef4be79ef37de7bef3702f3d6a190d6565d9bfdca2accc2b65d9b52c933fb6075d9cc9563d567365df713de6ca76759505771f52df130ee9be6930ab7771af9ce6f40e7d4f685734ddbde76cdbbd4d4559167fb5a2b9c1d974a42c4edf5096b556dbb6bbea370d5e0d5edd326579533257768be13595f2cd7e23e3ba9bc3bdd33c423cdeb9e768100909215523f4720c574ae6cadee3de5d303b0d655930d3ad95b53f756e425d9ce96cb4c9be440bf1633e3721fe122d9caa70aec25953a79606e0f8ebdb299b1c8f2d9c9c313ad21a422409e6b345a316b5d9f1fa2145a80deaf54aa88dcc637e149186cc55ad464fecb5abdba44559b6250ba110c31d3986f4a73c319ec7a7787e479661275dc00c67b6c8d83cbd169b3555d324ac356d668c82a440edfa1d9f7ae50a67845953472057d4262553d1c794ac7acaedfa59ad8eb1e4fd158d4aa5efad2129a850e44812253b309fd2e7b51c677e2dde07859ecb44e8e73cf6c121d52dcaaa2dcfd325c4ad65ba45e93c077a74dce53199a3ded18c3ff3e95c6ee5c84222ab1e478e453114f08a5dec5ab95cc2f1960fc1f1163d24c7c1dbf21cfc96d379e8f1734e6f798be6993f3d862e398626d3756498cbe4978339f598ac3a2abb68600b9f8eca3174c93144699beab118cc63a6e3c75e1e73f9e9394706ef5b1e431c19bc475d3b65975c84b2ea5fb2125344ca269cca39bd45f3987ebacd39f8a8df2c041fa579845ca69fb4ce747580d8b74ca76a84d56679b3cc62f827f07e0865d5ab5b343da2d14a0e9d7abae97282ca65dd73ee3d4ff7ec316c75ddc11caa46c8bd931fbdd43901886bae6a78a9021212e446218632fb7d474121ddb7e770d7348f76ee9be6117269e7ceb3bdc3f494552b65e54859b6d6396b0e3f7863da636eabd2bdd34bfbd287d47b3d686e286bb376667096e64bf59edec1afdf31dd623034956e9f63aa37c5503781b7df7c2d1aca5acdd576abed4ba67fb8ea96d7994af5a55b50887de9ae7ad3e377550070016bcf3e3b1acaeaa6c92b7d07bfa4c1ee9f09976ebaab7453e99cae37711bd89d262c65b0d3ad15656ddf703c22263eabd8cc1b986e7a05f99341e9e24c1623b748e9e411e2d15e788decdc63e8fd7b4e774ef37060f6186add3d0d662a95fded57f63476d53a6559d55cd903e0050983767a18b6cf771aac1aacbad69b55c9801ac38e2d3ab5d3bbb453eada3ef5cefc569f6919ccaecd724b4559d62a51c16c509c0d882dc1617dacfb122d7c41660985b8fbe0b03edeb38ff9d084f54b70486fbfb23c8618a2496ba79d76da9395aa5b985b7a7b695f6e5b6cb52ed6643b0bb3e73a2eeb00911cea34cbdc25834fe51c37651c7fc93157b56201a7d0a8146dd6a44d0b99aa1901000000a314003020100c0744029160302295f468ee14000d87a44a6e4a9b8ab3240a520a196390210408010000189099d9340508aa01bc17b98ce51fcccbc20a4f3981dcd85b3f91d6094c4bafe720c129fdd04098e845f71f89357518a2af2d250dee3fe09c5f14d2da72d6987ae3968d7664833a916582a1a661b2495d803f4b5ba28452143531eb01b68c81afa3adae22e062ac39d1b1b5d58dc59511cbd5ac587f5b73f0276377c0ffc98567b7dd912bdba67376e44ad12a11e15b672575c1ea0c9d016aa803cada3e14286e65ad081c446dfdb7cf62dad44175d826218f3130c544aa15c8a73981d84b3b73ec91d143bdff11ab6d81a80cb4f48987f221b0617db31f522cc928541f5ba88830141d4e0d670322a649fc8a495d6928941a74b74d681bfe06c4b203116075505ffb83f40978b8c8aa8c8633cb5e13e27fc302a6542979c2c219adbd8892cec898aafdff49a1b4adc03b1a4c607f289060b48843b17a2870889ab988f04d2cf8e5d25c2d82cded510dcc5a6e108989721c18b64234f750f110a444c8bfbc0f62a64c27e1b25b9a4f321c42741bbb3fa1034865a8f5983e3e7a503f9bc399c9b3ef2173d1c5eb19af03f235bbb69dca0ef84b16a13eeb6ecc4149a6d5106f40ca6a2ee19f62b3359750d1a2ee88371afed6ce8a82e79dcc852f2ad21369ae222028320c0e70800ce074940f7c8ed0e6b7f1cb35a7db874a1a95675278c4db4aa286dad81804ff5b49ff81f4f14a888aada4347538630fbd70e379354506cc2fae9ab535f10396b4501441471666e0ec562c91993afdc6043a0ca6d04618d041f07b675c7221d5fdb28c4eeb51d119a009ed97fd5af5dcfa152207f23114e3bcdeebd7b25a25ad3953c9772d6e44acd7433d5cf596df88981ac070c6a2d0b5e9004e0a341933228775a995145de4dca2cc15312fff796045c35682b9cc1b5e1cf2c848a6f6f3b321013021d6a4b4eb280c9909824e5cf6f95587a209a4046af5c2c8a3c60ed4377e5b3a5de885b0cf89fda2818e9e01f359a567321457f397c559ef42677d4f031fea956638db692fbbaeaf06fd81fff649ea58565a247c47e633f536d952bdd780b277a8b21b688c91d4546595fde0e6135f362523fd632c3c654f1afe209356fb6d5ce494bd2717dface5647f1c82b55095ea12ea95ba99d42ad71564c837a54719a31ed18fb1a64fbd773b293a229be5497c289633345b3295db78616800f765dab2d750a46ba82bc296841c716be4c846cc5ea2009ad2b1a358fd2ca0cf0861897b1929bf670063688f16349423204d04dae324b569a030c77ad3899c0c8954e5cbb15c5710c2cb1129d6ee7c21ebe4345506645b0e043e5647e7a33fd0f0d8b050826417c84413020550e289b35ccc87a9b95bfbafad06d0860d30f0e86b4e66fd02ee0e22db6b5c6dbf1c0fa050d1042afbdc1dfc68d96cad4d3be0444d74ebae5d3cd6eed6088a1c10fde797a9fb059f7ed123c8a102da3f30bc12d50e0ff04700a1c814a925cdecb04e8f13b750fafa473aa3ccaa4581c41f5806a8d43c48a879c797770e0eed26867e90fe474428b866aa978949c65ccbfd60a5a3e675264a75b9c27cbc20650603162854aae9ab956ce7115f79e473868f19241c8c98c9a9892774d0a9bf43fc9093e35405e95fc9657c813f703f5450dc3c93565d7f5bd15034498f1cc845a03ad92fcfb35a6b08281a79344246c12ea6b4df2dd789b5ce23ad00877b57fb61e8afd3ceb6f99d60767767fcf6e7b1856c2d2bcad937e233e2f9661e958c5a6dfde1cb2b6e18d8895bdbbd7440187824d94a1752b6ccf7ed65606976bb66fc98f224e9e8af46e72dab983b23205d373b60e99484b3e6ac63f6ebc799e494908d3aa05207626f00ad9f249c07aa0f02b74420de76c28df8632d6cc7b88c92b5811c1bbf1f0a4d827ccd7f00c7aac1108a6888cb338d02ae7df1970f812fb7a92ae451ce78e53cc610304a9e8e11303fd2de76e846a5eb81c7a300df542878b4a2a24717cfe5393ba550abe1e24d82570e59c27bfe536af13a43d3d25f56da394f0268b5a793472c202a9bf3de6b66eef10771a741d8c1bd112fcf4a0a6154dfeb943fe8e77209030ba8e50f18e996b763c46ca996a66ab9d2d3f200ba6005e034cb8f327cb996d5ce1cfa797df36924a1f4a52436d4a3e109f8318f47b53ef1807578318fa2fa0e33280a2490ee15871bab886c28114ccaef5a8952bf0875ae9a50b34bfe6f43cc2283ed1ea55c25d35d90d85ae6d665a9e987ffc4a8df17f03290e0495a96101c4d31edb052a5b8a76dabc7833a7f853cdfc2f0c8209300495051958156b00c526c2391a6b17779cf8fd63e173e8b5a5094979633943bca5fcdeed6b64373600fff3f58f557d73a2facaba87f2d2c4782bcd013c0e6aa69dcea0ee5d74bf3b95a33b4d0f9e8eb4a30517215ad5279d7633c4efdebe61461c18f5503d85459efe8b7b5175661e12b131da49c9a7c338e0b629ca32513074e817b5f06e7eb8415f14124863ce197528b382e75b001276533f3d4db24f3b2d4def6088e8ca819558d1ecafeb9c07807a8c45cd4404990a76608018981c0346de1f3ae3cda8b34aaa452fc529eb08618c92f85ae915d82f00d710742d7144609bfb65a9fd8909301526c7e6e34b4c04d9577160ec91349b65cfcc2f3cee9abd78d3f7a2266b521d64504441b42771be26cb6eab0d8ed19a38417743b9050ed692df7d501bba28b6f892b379b60fed47f093bb1018912b80e2c7cb30c240a19a17b9cd441c8358edaec02ef0477bca6d79c4fc7be2b9e150979311b303f389342ded4f032252e4212f20e07328085fdc0b81d4e42311dd13b58fe448814a8464c0909cc4140fe3ca5f9b51174a57157a470aabafed1cceb4af131a11fc08532697270387ee099e918de682f42a23b7fa6ccda4cdaee634edd612a9f592b58509b33d2a6760a3e96b01b59d13e233723008d0b25c8d55fa9bac0c80c9b9cb909c3a7b641015dfdc7936e4737a8eea467d1084a8548c2c753ab069da41eb63dd268bb07256e72d0c081a47bfcf8bdf648b21ff06a7bc3536cc0a37fd02153f19970a7e051c390f873e8bbdf79c744d8120d9298b2420f3c78b5a92778f6d176fc60998ef5d5e5a066d7da244c6ba569f718b32126bd8d67f2280936ba050fcd922946ecc0170f3b580de9a488c5b2b35079e83037ee94abcb46538bb3d2a46fb6d95878b0d8d5535b29dbeb8d030f4e554611d81b36227db91e957eea6a094011613d2a821301edcb31d1a746acedc67959aba00f7fb09433ce571aa92d01ec542969bd334ca4e4471fc4d7fa09a5c44626e22e259e1a9eb48edf4543b672347e6504464a967c25e5f488c4d8187d349d9e1d14a7f6d97bb5d7a07a6590cd0b1e590b5eed751561085e642908b4cea8359b4dd94502b95ee76d014c44527b1c23b90028d098610a225e0c91a88ee0c29443bb5fbc3778923f4f5b4c0e62435aa73a462b8b724aad1182082a7412312983a5c63583558d6be3a9654f66eca9517a5eb9e7a90a12c4adad3de1bdeb730f2c6f13912bbe1aa1930221d155379de6317ce8d92282634092a69b521b3ddd662cb5955bf81a43a066afd1f85faaae94f3dc42b69bff2444d9b5d67db9827439e5d5d77697a3e2980950d14b3eac50de6e93a7032f92f608b827122657742553e7e13a899b2d565c008901a499788cee523c3c182f725a98e2b6d54856c674e6153b4b009676f3796e6f6c81bbca1fcf21a0f987ad4604e0665c318d2c53fa704ed73abb6e0a956cf10e37cc96449ddfc0598c2a1924faa414c92b98dd407ce64c082714d88ec7c8ff381854fae42feba1adf6e690b5a058c8160ccab8261dbac326a8cb557db9bf60043b23a3999181c0195f6b509897043c7610e62b950d19c9c38953677188d0710d8a0b0bb4e982f30f65378b43c3ba519d70ef4953d99f537b8b68702a3f7e2c8502adad03caab40121bd3746cde14d4f8508b0d03116ea897832e346e704ddc31dc31f0e30bd49b25dc033032058438e602294b70c8cdaadc5f3b2241d2e85f0e87e90f7a09950d3763cd4e0add0b8bd1d8a23d6dc37af664df0a9dafe1c9b7e36532742a7f2e0116e651db713ccbdae3f5f8108041ab1da6a9b4a63f086abbf6161c11a064edda247f8ed0e14222d7e075db9de91eb5a093f61406a00c635f16cf76e1dace7641607d085d55f1f14f92dc5f5c5292b192a34aa2afdd2c8565987038c45288dc18a7255fe07751e8e90132f9b8cf93e4eafb1ecf7c0a1f4be662b1dbf1d8408dd0b369bd903aa9f4dae918c372095c7426ddae3f806360172422f1993c586689aed6993384c01af0b5db62999f1f0520cac823f2c2b4681b1ac7ecc228029f5c3f483d5d02c938b2a2c44f304f423aff21d93931e0e76a81da29c59dd326b40cbc9b26a54108de5c32fcfa1171aaf55df85e3c1c169189cae92d336bb09b1a4816a1e28b7627c3a55819f4bef8379ea3e4ff26e8617d39a26e2eeafb2e9fa81275b5cc8a85fe322b3086d8148d267d8f16ba02ffc6aec87ca1dfaa24e2e09dc6c01b8139567d1129ce4f50bd60725cc4e0274d2accd35ba303b429794001c71c0cc6aa5063ff8c18c66faabe0692c6925d09575c2c4e261fcd12105b570bee113b4d8c9418b5beab8fe18fbe7c7e5594ee3c1f37646e6ee7d7aebc1fadc341643daf0d596de698e3fa26022df4b114f0136a0b71205917fa064435e85758de38e39665e0429f01bc993792721df944551026d75eba9611194980c27a1171e25a9aba1c56a5e9a36ec798b6b77212f8863cdba496f78fd1b354802f0cdc760bff3939953f00929e088a7d78ff7437502d6c3e5bfdd2b2b816bfe899c4bc49903861d11fbc693720bcc9f70db999379aa8c99067bf3d97dd622cdc3435af4be217a393739fe86ab0e8f207fd861a1369d6ebf53325966ff44413c4095706e6c2a336b6aba8127560270a68314244a582d6bfb00b9f5c3053ecf7bf20f57e98ccb197b02ae94c9413f1998abca4516ce81c46a6a8dac3db7022f06b083b8a9a80bf95a0bd21bc954204ab78acbbf497943f5888ac9ef6364297b45622a8827531e80436e7b49453fb7a40f9e002283fdb36fa71243a277a9171e0dc2399156292477a0de5125c22284008743729ac44cfc05f187d6d7603dc55f80fb5d10ac6399113fd3f72811cf027195fc126cef986a2f3934ce772c3cc73a675de990791057fd5fcf72be063621b55b10b6400499735025319b45506d23f8808f98470987dcfdaf5cefca2fab8b91a8af23900bc01db88bf6fb7f819ce3382810c94cbd35905866375dac0e2e93405db4fd7a62384afba1bd682016b5fa7e06c0d449808b1101a61166fa92af79a4376c5fcd6a16b61ae88d3d0f65c6d706b7e764018a5bd41dd124207a3f9faa09d89539177173977280c0b36c8109d4ca0d68760669a750c6d14ec9ea118f41060f6f3830c5634816d8240301954d18005aa15174022f2603b17419997775b464cf5e5f1bcb65c7327cf84f5a68708cca7827e6a6fad524549c8fa5d543b456318e8026e651a8e93f4a0f580e2727ef0481b25d9c248ca1d0cc5309fd0be861417740dde794b432138cc55ee7a5f9f1dedefc6ed65490aef8c91455ae7fa9b229fcb842b301f4f736111a781e8890798bd30e92eb629a507b1211a997c87ff5332e74392d21f4364faa1a37a485fc1d07e276fed06b43d8a7f2ff53baae1714abe42ad8b444f37a9ee1894312e88645b96d562f1d62270ba0dc6a30e89506586c286517d1d632fb2e3e97fadad82ff9dd1f5d7163d7319302272e0e2960b8d60707898dd4bd5a0bdbb4c4878484298a070210cd6c052084ce8a1993cb929162c1edecc5614a847d43328e10a10b94ceda983e786c8a3b217e2e7f80eb330909d8987a047a4992870f4038a6c4c367c01dea88095e63586b5c6640256ca5ae87c40e30f6616420d78ce62e4999ca06fd3696957b840ea13d00f80a858fab934bc8061e2450a15a3a12b854bf65d7cda446590e14f1fb3d73400a6bbbf4fe1b504986e9941d4926470317f2fa540bcc4c31e38712d9bab81e4716dce62285472debb0d316d824fb7435503039195f600ee0e64db937d27fa908ecefe9f91cf09ef53fda8f255995ff1fa7560514aacf9d3de62878b2cddb50ada11620c5e888209a2436feeb370502085632b7a6637deb4fefffd4858a6320cfad097fa127eae2f69112c9aa61bad13f6243d3cf1669a9b716014ee41b53c3900d5fae38fce70e76a99b2c826b3f2701862890ef66185c5adce6318b036f6bc14c6e03d2a0110596000eeff69419ce79854e8f63372242d61073243c9158624b3fe362435c76fb59ca0cb8b96358e40b85cbbfdf7fb1392890718047f5121568b99df85f6b93a8b0ab213fdffe3832896eae0845b655377eecc7e2c97ca622b1ce79b3e5280b80f3425538de410b07ba8bf89044af4faea46acdb6e41d02b19b98aacc7a0f94c675c9edb8223a6709144d6822091fe6d06c37478b40a3fba09589854e2fd30f1b754b58be65a2b8f7e6a35466a83328dac699b9d4103cc1a7259610c83fe0eb71289e968de2d68c084f6c53a454fee650a04a7bcbae8b3dc9aa899b4e712c30426a009ed5fb6486396b4451d2de96f727b24de2784211e8d4279c6a4d49e369358cf2ca4f085f0304756cd293a4426d1d10af1e1743fb39df8a8f6f998765828c0b5d03c926b948abe136bcdc362fec61259eb55f71adb09a86f40d2248b9168c5bc215c0efff04c93b7a6937784beb4292fb411c0ee58791b2cef242d4feef21a15d7fcf23e2db436d4cb25ad202880177dab4776136454cf26e35e045052080ad9b0a56bee4aba1eeaf5f0e494f89d62ab188a4d5bf4916039df1d23af66e5618853e719a3e0b68492865e82bb87aef971e98cb34c3b35ad26a116439150672633f3f981b83b7ae3f0c707b22f7435900a096a82be982ddcec318f6e2649e69e43b6310b0ed33499c19f8712874820f85ac951d11d91f301ef6392835b031e758c8c5090dd6219ae6673d7ae994c437e64dc490a968492a1fbfa90f4213783722371e1f960ee37f292d1e1d1a882078644c832415b4f9fbc8d0d08db34d7eebc2018358d56a0b20d1bb3f7c52d7ebef643fbc2c6f5357cab80a19af9fa3f352948804b7383dbdb1eb2afd36233d802dfc290627acacf0b73220eb3bbedee40938ab94ae0f3da13054996577ae3ac5f7c9ea88265b2d3cd7395ff3057c91b8bb5cf0ca4d6520078ac8f3080b3d52058160238646116a93d532ada814b8e95bc10512d8b288516b12a3b7e7b2dbc43292e8098e72464bcfac323bd07970f92b2cd8384b4296e2b7d6ef810f62985a8f26ad089e982d85bd1dbf2da0f1b977060d13f10684c7580cca801c24a3887d20e88314fa971ed8199da4b06e0c5c8e30e922b8319d0adcced669169196b1531da90da1f928d77a0ed8ce1bec023b0a9430757950eddb8f24fce3fd6e137f9c838332dde04e73204c02954645d64d668fac5f2da18c3654561fb0bbc15c14eab2ae3654574bb13ff986c6d84543b38a68f66131cfbcc1832fb2e47ecdef74685bc815579ada7781f42aace0d1da8f1a0b228e60e5de03fb35f44a0f6f1239e481e1942bd0618654ee4abb0e29d320ecfe07ab719ef901602af127682476c27181923b9913add415c040350a29d5683c1d4af975cd48522a0f2374b5585492a643187625a88445f5a3bbf89a04207f63784e5e470b8935908fe5363485104f0b70d56cfb2021de53bd75f5e6a82719894e77b4801996d9cc3dfe8948d59a26cc2258c67464f8a17d665ec720654bef0e01c326d032955c8930dfa7df493869568ed72bf622b25d7a08f0db6c1b4ee34bf179083f5b2d4167c2d73cb466c6c693eedf16a4ee86c58d5cb3257855cd70359d51e1a31595691055a3e36bb3cb5bc7c661276815755a6ed5348d0499aa9ce4a336858958a536758e80b2a4d1db5ade4f6373dd7ac6339888275d1563a09b2782568bc761b3a88db2bb5eb6a78d52a818e529538301b7d18d841d2b2eca33cc61e813f13d86ac7c9fe378c6fbb1b6e1a1475a1db02c760af5b16fbe658daec295082e48764a8c78c0b7045c1706c17375381a84bca55f0a905a06946c5d4fe6423cfc337066e40f5f1277ebed38a70cd1655a8848a08b654ccf8c52d8a967df19e2530bd442e10011b0b2c5868385cea2bb46ae37d64b05bcd849fcd0c9bfbd6e81b5744ed11f41ce6f25ae9d89c919ee164524d9aa14c1ec557b0993ac53432ecf467ae8b1477fc723b690c1492333a35157b326bcbb0b474b9c2a2926caf0f1d64b3a389c432fb80c0bdbaa80cc257447525a70f2f0010df6655e8411c0ae03efd6d87801bd719cafa46fb3c54e45a3fef74bc90194191f757cc29338868a6d52286030ec8a6e73c28221bab5c128ee6f7d0990c58e2d30facd1d1ee9127b2c13ed537c5c500aeede27302371b4933b47e68138c89c3550bbb80ebd7e83f416a74605f175b9712e6fe58de3e7771f7b6090f09510f50375e649e133f7700900af4df612ada165fc18146ca5ac2a31ecfb34e80d77107f88af8d832f8e5ee41fe418704fd643c82a079424f5df8ffdd64058e5ea22b2314bcb693d7e11c49a01495fd0c34a090adce8a898c4612279fada3eebdb3a7fb201718f46cfee4f8bf052f6c57f90ac59bf799e63b53e1920f2fbbdcd843e11aefe5813505207e01567f00dac71ad8029953c189c54fc301e80c6a5a721e116b5faec17ecb4280810bc7099ca1ca94a24a793bf85d7d30ac5510fdf2771cfdc077ca3e68d0b0b5230450b3d4f79154130e5714efcab799b70fa5f3ecd13fd29f3a6d5cf98015787bb3a296aa906b761b603948132c326e36dbb08a891266e06ae3d022ef26ebecd65bbf9853589630afe810a98dbc2b56a1bcfefb65566873be825aff1b84e36cb02f7379a8492b01b696c2fca12dd682da17851f586cc4d6afe5506bf2ebd52467a07a0d33c90f3221306c62d76d84fa12529c205e976507ba4678633b7e01d7df401d88863147e12919f3f5a38678c37b1044c2c2db0dccd26e01b67cbdfe4c3af2617f33416135ba1dfdf4c12f61c7ae46b4a616477b445e69e0765d208b54e7dbbd796f5eec2f1d648f3b4b03122244e475d2af341bb427244db72c699f2b8e41386e90710991d59c160dcbc281a54551f71154334f48a46164fc6758cbe2d6d23b995c0b084e8976501b19328d526cf180b4934a88912086e88e1f003d4af1c4812dccf1260e3637efa1042378efa361c1c1fc4b1005a03864d0f8f05324992e5c68d1bc8bf6fdfe79b6ab1055cf3ffb5f8bda10d2adb968ede73ed59a5193c4f616ecdaa0ed617bc656df01292a498f738ae570cc6dde20c60659a9669edd00fedba69833812906730f7c379d9cf52c3179e08f6fc3c24de52a8435d093b96a0577b7ed895a91a5b5416247a5323c34aa6a205a530b8cd6e2216d016a8ca796640baa49f5a8479926ecd037e82d8f2e88f9cb65756fc47f413e65912e79cdae2673fe296b34aba465121dc1d73e0b1ee2c74f592d6c22a965ac88aa70f2a5ec835dba3c7bf8f3a72aab7ab0d5c2fb7ebe7054620c48c103fc38cdef425df813a13ba28821a917e701e97b1df7f6f67ffb0e0e424241d26443ab7b0fdea4a9263e8e22e4b8825499029bc1ce4991394b954e67e20921628a073cd11f9c2f7819b344b8e9d036a537a518003aee6de940bd87350c2c3088a343bc0e7f349b9872be4959468fa1edddb4c2f7931bc061ca5d59030c6180b89ae39dd4faaf0490a093f9183e715016154d318f702e0c599b70695d483c495cdd98cb84c0a46d4a57aff3fa05ddeb5635a721f7392bea712ba4cb1fbd5b38fad4328a6d7fce18e81122f1015f3480fe17c0a4ac8668ae800531c86d975100fd8b2047baaabe3d4bad497032d0a2e44c53abb60d809eabdc1222b0f8f2b26396e9eae34f341f9a087eae1b1565ef25c21a77a4532d8408afda029537dddc000b540b3c0bb4e04c54d17e36e99935675423e447471a6190615a5a5cbbf11037081ff72ee861a9c14c10063c5bf1c32fa85888edfbf0a7cee0dc00ef1c16dce7c2cacbaabdcc759c3171b8e209ab474435498178c8c1e91fa96a0c079592df46403547939c87f977941d8acecbf1f8d479178378f17f726be1ad60a18cdc304e4e19d00592401ca072b6f1452d59cb1babba5a9f6eb79aec27e8692d7a57df38496fe84eee2a7785ceb039feaec4d2df8eb1336c472dbbf20e0c083d93d5f28288820d3a2d5c80b2130f74ee4ac5b217f0005e3283e1dd7ba23ccec129a2f3ddb2cc374513351f29d9b640a72d517762d69f35746d6467c55bfa71865092fefdb82d1d7c4bdeaefc22d5a4b6a7e15f07c89d9c8df21d60e80758686bee1ce4c1d77a8ece761f30b1c6b56c76f893cde82790c375ae9b1441b125fee3638e6f4c83a5a97328279d6089b89fb9c29b0b9650731338d65a8abc2b5337c90fe69846cefce551833ab1a7beac584755bbd6bbc01474564706ffda70ddb161d60af830fb612f5b674c7c8b86bc487a797f9eeec9dfc9bc681e5bdf201789bb3d5829cbac0aa04553a76b402804e39b8992ef293c1f97425b1a0f5d48c33e0fd2cf2122553024827fb33717cc9ad0d8ea31f0d0b0266a7ae76fc54871e5dd0de87375e8365b784e4aaea5fae0baa484fd1ca52fd1c060823e080d3ec88691751000d073ff340281b23a1b36f6921f3e0973352dabdcc9a2261c6ada09bcd9e4c00861316e132b432c30dd6044064d98216b88160c433e278c8ef7dcccd79adb07345835e70a9bfda754d6b1f50680b57ad4a9d3115ad0d4e504506ee182086f43175626e8d29c7c2efdeb6706e9dbfe43977ab1b87f3b8b93f24e4da53a595a46462e576665fcce064ef6ff41133b1ac0a5db93d65efe654bb7c013eb1df5ef0145fabfbe4099c01a8b266b527df4a80352a3b954f9b1369b3252ca97b8a7ccf7d56284436c737447c18c8bd6da6b759f049b6c309fb2dfc09609d1854d8922a8b08a4a7911f324fc0f0138219b97dbeaeeebf7e67a8e0dee47539694521e5e90f1af36be3c9e5a232a2c2943ccd66e4f0c29e536188c8f32e2435deea3a402b0842e00bb1885892ae06201148bb20a77bb218be30913d0763dca68fcd6fd25746424e988ac093ae65204b6767f385aee1ae4874d5b4993d62825ed7ef1c92ddcede9dfb078892712e589aedeac1c48665876f57e9428cd8b9d31bd55a378b5c1613c5156f9c765173cd438c28846d7957f5e519e3b53c5820a2ed77bc911140432715331ba4df12d04700ac31d742c2bcaa920cbe3f0792bb9c0bf69e50ddb329b9964678e1140bbac333e8a1347dbbdc090fbc58b19e172d45bf08a57d24341ffe01f10fd4d624d3eafa4e6b3c55f3eaca3ebcf27f03a5238295678856a74c9f95093448b2e94864bb9aed1f5e101d4a29b312291f0d013166f59958b2e7900771ce7168c6eb41e661d1156e7a0a93a2f3c3b6f3905f8459730e5247ade049c318fdd80c21dc9e8da70a2c648b177f878fd5e7ef5b85ef9ea27b3c9ff980e14546942e467f7e1aac6e86af961a061ca76b07ed1d54e0db4528d5600d9cea12bebda6caa67b77c8bac66bba9d04d507817fd24f7322c7988ea8009c7bd33dcc08ec086b4214797f7ea822f2ed530b00d892f7899dc2b03171bd844af5a5f04d46226fa4ad817c162282e874383074e90ac9c6b9114114b9354ffc7fd1b3d08863bddaa1473db4ce1be63147af32604461c0e0729a38da7709fa3305b114ce098cf6ad8dcf71e8f711e15e192ea9f06e2b77dc67733b3b627f52daea963abd939af613027dbe442c60758553bea5ebaa0df5beda7034ec6acfa09b41b8e3af7344ab3f55f4d0446783de7e328666ad4b3ad749dada685f3d5281a1d09f4c7a29ac088198df25c363bec8311b000419acd08247b0cc48d6e3ae168efd6a803d382153d900550062af45857f30b6b679a942c28f720a244ce59a09c5009a1ba3dbc5f8686275f82c6d0d30a3098ec48cf54cb00d46cae211f58aff62e7e1f207e1600f3df5a6e2a96b973655e5952bd67de40bed23cefdd0ce4fb63d70c2abf407eca9db3275b205529c18c8b31c6508c04f08d319d230b2e1039e8bebad7acb3845aeaabd53b631628ff7d4798e8b521baa8a77124cc8b62cdb15d6cb043d7388bc026052511d583253c03af6a5c7ddfb5b861936d7a9ea9d0023c88eada0fbffa8df53d2c2efeb6402eb9c758a7b70b312e765e5c3720ef411a847e3f09b93dcf146f7bf0f7c3b3463edf07c68c1a66d2c8776fece80fd02e5a5dbf33b281e72df8b8228d3a428021130c3dd39f454793ce2bb02c52f53591a1d63087b081a1ce46c872e8947b243985f880da7dbb9683a0960d754fa5034874bde32869620a9253b8aa3f33f25ecf06e577ff6c819031ea09ee6e8a74338bea0f1102656a9f8c5859b179b674583858641c434bc15c00eed3160793438c4c9de5c667f875d2f1916ad47528245c34eecaa2507d2f1ed3d1eab5089f4ded4430fc8c5e5acc922561a7fca13bb4cc49d956bbd803d809ba94cba3d095bb92c29c9270d7d32554b12e20931ab83a504466f82e5dfbb0fb0d1040135b0692c00e4185ab91e771156cbcf57bd54bead6a5c4dc1360d4640fdc045db6307ffec3b09607e3b0aea0bc9650a50bf213f0bdb7aa83dbfc8bc40f2399a27df3b78a8b9814a6befbce2e92b471a5a26318c888c5dbb85cd167bc20c4aa9b252438f185603bd3759044969b8a910e19dc60ed4458bbb566e8e576560e1ae384668ff1a8448f80519e412951a8c67e46750ba6128dcec9f7d0ff3a64f07ce8d5c0e409d9fa09dde8176e0b0cbd2868f9e3dd417de35cd243774977142dad8aa91a4d5c546121bab34f916267533936f0a8804f825511aed93af84406cf759d7c91f984537895b6ed54831eca47d51a717e0285ddd61476a4e994a3a338bfe73441764caaa8db1efc8c7de2a468c46304a3939e0ba797d562424c89a3338f8db0ec0563b98d430ec2caed17ce080bde1a24fe66365a6ec3074c6c28760a067e0c839c407bd2a12196807627b5338350e3d52a24df2fd94f7d53e23281fedd7baf0c0a3213e41467fd2ddf0cec77b17c44891e157e88d5295c6c12dd7031cc2729a5cc668a41d1374a7ea6c3cb63f1082aa7762d368f307da97148ce746d72a4828056db7396672284ce520451f81da0bb15a3f9ace1853d2f6bfcbef4f2f0e0591dea6e957ca45d53a1d0446fec0562d8b1dbffa192c003b4326f5e1a8a067a9ab05aa1c1cc549e2df6f06204123704c6b217fc706ac524be93af40d24ffc347ec117d7bf6417a77c895723dd1e52eb5dce8caa06c630163329fca61aeb903e3e30b4ba38cb3f79b03e143486f02c316fc0043ec0144958a481aedcce12ce173c835fa86c0d480d589f00382c29a79d786f5986477f95bce6a31c4099d451e689a0431c0d4e3983c6e1433a988ccb3da9dd7a1f0993104a0b3d385e90c0004b4c9bbc10857da3a99f1722cd7d4a3d8f4cfc49baa874389a6556b794c78cbf07040c4e623876841e467948c04b3729064065ea6527bfeec47d1a7f19acf3a57dfeec9f66c93f3045ae0b5ab58d358a2e3d5f03156319fd64dc7f80ee7bb7527ae633bc45c6558d5d2f03f414e1cc9f209642c50103a957a5ba95722a1a64bd1ac44c510668eddf7e35287a30b8c1ab0ad874ab0b4b2f038142113ed895676813204a1a4ccc6950be90e328ad16c495eaea752070abd03b48aa9d325f7243f5f7165ac98f39e8309531ee04584c773455eb1aee07c211ea3e4bc33b01f6c38a2fa110188c9b761139f5acf98e846849c27109ebb21135c2495b34cd758a06f732053bac360ae56459bad9359027a880c51f0988c53b2429efd073c67db53753882b87b69416cb38d02b85a0464f9b3003b510ea1cae96001abee57a06c88ba534d6a3cff727b42854e43015c72968a83d083c7a150e796d94d70959463b59d1f1b14ffb468439362ddae197c2bb27784075c8019505f1c824abce8732586bacd337b36c1578816176ad08079c0287803c1c6fdfd121175bd78d5719dd3c266e02141a581e895b6c0a81843436f943cbe85f37f7245d018c335e209529ca10281b390a052ff32c703b56c74009fdef67d270a68633288a79aef57ef182147d4c49db6f1b9e6f055b14ffda70cddb0b2bad00e843aaf3fe8b98e869177c0fb1cc032cb1cc82a25016f49a46abaff4f692f5c9c7ed0558b74a8b3b2dad5647cb2f73ce95565ffbcf5d4ec411eeaa3567e668e055f0c8a4e293d43f86a460448440449aac776c76eadc94a4a0b1ca90f90e688592e214853e17ba73e989b309ee93692fc83aafa48024e5d996944cff1ab58901b158447a03272c77a939c4752eb1abe78df863cc52b27e3510339833e303c1c96efb04e87415ed9fe831e2c1b167d0dfa7124052c5514d68bb41776f5613b581df96640f8f6d39691e459f4693e57ff838c7b0d4ecbbd19c59b37c2cd257ae250a55994b26fd43b2244ee92ee1a34752056a20271ee1726dfc6f0f237bc79559c37eb3eee93675ccc103f54fb14dda1706b790699f3e933c9e8f0af62ccf8028dac5f1bac044449126e67a1da24f4a1959cc1e71f7375adc42c9ca0d976e741a0c78699530067f64f28d609d5fa7e559358caa20294d75ea581546e0a0c63a063292c2b41399933178090896c25b5f9b98aa7897e3b5af5083a429768aa306af4667344d4ae1cbe44810a6082485d6f64019882fa895a24f5882e785f13bcab489d0f5fc1740c556075ab15dc5a845344265186be54a0ce6c25479a90d686c4af90be4efb3946f763a2c4a3bddc4946d2106bcefc804c31109166fe339cf350745a534adaad4330df8944b7bb8dd325a32462b52aa435980380b4a71ed8e1c022ff4a23e1c1a23fe3466a8b01f2d6137b42432748d9d0daf3746a1e1a50d05276cec9a23195e96ae6bf65dbdfe59ce88a1ac66e6185e07b91e99bdf0dacec6943c80a6a1e661cfd1d7d6d2cff80128407ca64ae5eaadd5c9f82c7a09dfb35a0c6f9464c619ab055729fd8880172f99d5605865e957115bee0520794ac4bfab03bd79387d81c4e1b1ddd3f01e4e0e0a97be2f9113537b41bf8b494f46d0b7b24248eb1db56b6eb139c309e6302a1070d8ecf351006762322f914fbde7ee07a4ef67668f012fa2536342428bc04c1b137a2ca5e99960ca94820c0b2074e60e819b6277d434a240dd8308e5d46a45afa2012266320cf6eb604e5c03c4075a2750682acb98c800b09f206c05085d76f0d249ad0e07b4c4c52e4b3d6a5fc7c8988c5b578013ac8f768c360ec3983fdb1108b19a81ebacaa63b40978d5d060a764de6ba8aadacfaf95c8909d94d2ab7a70979f53c8cc5cd770a67096778da59ceee9924a7e0ef196879dadb241f5e0935d322929d5543d563158c25505316a742f7653f77ef8b205900e879e54ecb2b9adc263625d8560de2d60ecaafd5e0b9cef8774bab82ed2e2f9b10a1f6df402b0df839b697463fb78c4bfc3eb65510cb9f16be979829d5a9504d3b111ef440e9ab8a89c306345ec6aa39255809ef53c70eb3833ad7936bd0228e1d2559b3aecf2fa886a3f324233682c44c14ab83e69d1473122af61a92b5282eb7b94027eb8c8a12a64fc3967dbe38c847045d6106421ba12e4107940510897ad0701dfb41bd0eff0d896d548865c663a8385ce64a073c031f61b7797feeb2e0c6b794c0ede4b6008db4c2705bd4b56f602e0c3d67151555beda25dde9155d22d98164217043c43cf2013da983cbf436a1f76520bbd0851e9e08a2496a0c4abfcb6c0037d9beed833ea064d26ad5d95cd899b48a031fa66741bb3f9c836bc32f13bb3e2db61939ddd72bbb312dc199099e7d9344ac11542586d8a1042ac1462a63ae1d857500a9b72381c2b1634d2137d76820fd07d6f0091eb4de9d485e7c422ad358bb0e144c4cf17e08c627734a5ed83a6d3efe0dcfe9a497e4d6dfd806edbbfbc9b076b2c57dfc9881ae00ac3a994911e2d0172dc50695d633d9d0716cd39fa34a0929964e34070f5b0c9e7a2ac7d19f44e3332437af889704753c0bcaf83fc7bf65f7f4c17387d0c489183ed0078decc18bc85a3a99997c5d8887b7b14d406ef5cb3f88a3ec101e80b845c3e74928cabd892621d3e34fa0d4442e95d73c21957fba95d18d68d6562a3e9daf86235e97f91deeab103bb13bb0b2f99340b7d8d474397b8bfd67706a2980c1c8e8f51312ece43c9e89258b03e2d6dde11a0d778dbd4b5269ab7f69fe16aa11f9c6a535484065e9566ad45560d8e85704c739c69ee4f905171c4e0dfaf4ff417cbb35d73943196d1c05ca67a15bae365ec0268e6dae552cb659c19784bbbbddb00c5cbd889b761dd1e60443393aca3d182913483c7db614b69a64e270203cd5225ee88e88a9da07bff23c7cf2319337014f68fcc338f8ef92257ff0093fd2387f78f66e23fbc31269831128dbf64dcc253c1ca7b3029f5dc82a3ee9840074f0f36a744c3ea5065a2428c9934f419715916e191f1f05111688ae19318ab9bdbd4b4048bc9497685d40b55475a54124e1308feacbc6e5638daad4a259ba6f27438da5bc7216970f5e25e392420031a93bcec218c35fb17ac1b24422410ee197b5bff7537df6ff947e09cd0b8c213d67b32beb257f3103d43b1b3ab45438b5f4a98fe0286200885bc3ad5ab23bc70e853de1f4e9e6160366874d8c7d2b496a6c7dc4925c8d0c1cacda92d73df670951f6fe58c830d468a681428481b813a35bda2a6a31ed747f6a90019b78ab32652602b2816a816cea8c3ad295efcb9ca4d16be08cbba6f32a26dcf28782372a7a992443e4de41315bc6ddca461135a285dee2db4ebc30b9dea44a067c4f708b7300dc60700b64083394eecebfc0aed0e244410c10cdf8e3526d337b3303775dc15cdd41c7956c54ff71f8a9ee2c1eef70a257c31f9f49ed4998840f5983f8370a9ad2b29dc283b86d03dea029a09befdc17b9b9f2698f73ee635df03ac975d5910f991fceb955b2281a39ec26a42236b1447990d9c45229012caa1c6a460f539409b4ad7fa290420ae16b11c18024151c5ffea450a7bf5d2c8c962b2f25d3e354c63ad9c5f28525094663fa9a3c7d8b185ad918eacbadaf0deaa6546f49918aa96110e04aa014f4be2cc6567dc07b2eff1aa8316e83ca1e9e58958113800c0528645c463b88547214e72d784b1fed319b280826008ccd0064d0ceab2b60455158e5525e32caa6161a076412532e7a0de5e21495afc06273229bbc5869d6bdfab1e5149c07ddab054ec3ad92242070545889fb26e9b3f5a666c0b40045d193f5c320af4f22a89e7f5ed197606318dabf07c54891bf682b70c241551978c42d333db59c1ecc7cb4e6851d42203e27665a111110df3864a9e3d692b53dad500702e93ea3c0dac8447bc95a50a9a08341b2d66ed538b196fc8be276762373b0b1d6d02342b80dbba718d2cf803cab20108111950b1a13bee4aa58a371fbec8df59faf1753e3d99b111be5ee0c6c347567a046fe7217a491430e2170fd0a9eb233f023adad4f62025a82b07d61086b99da8951d3071c2083aa1d14f698055ae2a2cff2778932aa6369e12743463a8156038db789a60c9dd556106386c826719133042e25c5f3b37d686588a221b308b71db706e13f894aa2dee3e0e93d9631f01c3944f3c38451c76f619ec37f7869a82fcf48684c2b96a60125ea15ed1a170213c0a29102ef217e0cf246895b964c038acbc46382ff97fd22f8e8ddd77d5903fa891f562af409208745b4ab5b2875485b0bf0eb4cebfbaca7acfd4fbd0fab04bf209c36bc20f6c539189e02b43e6c04f4611ff71a90b5f46655f74a804a01ef04a612c4761132d05bdccdeebaef2d4e21fc1b61e2152a98cd7076c7f6edf0814ed0a6000ec47457b7774611c2d0886da8a36cbcfece80eee168b45fd2b122cb7157fff370385eef5ee282c41a5765587127f2358bb0c34bfae45f941055cef77f2a78c5117c7498a50323161e8073ec16a7e9d4a8799ca7eb7cb2c6143af458a263d2439308cbe6b0c89c3b5c0dcb38f2117aea60a649af2ab1e06ada782d35376486e94dc08a3be09120379376d96e8d5460493129ed051a2636c91c04a072aacc3c42fc8573cf02b8e2aaae6a33f53344824a075109ea360ae547e660d33ad398315f04e1816a199576c056e23bc5477b521f39df14a114c486bdd42296a68d07185a821b591844fe399fa12ddd88764ad565bc7adb6eed00b5ff6b4355c7c9fd9f007371bcc83b24bace6fd40301ce56f1ffa085c5020bb2d1674e57c088615068e3803a8d6ea6a918b101e4fe8ba38d132f9d558fa827beaf301426ae38b2de9198fd361cd09653e099cd0a9ccd0144d798716a838a1e414341e40cae940b2ffd6a6c251222d32ae083cb83d619a07c1bfb0acb8bcf61fe248fa525b7bd6ec99e2b3131032b107ebec39342ac84b1fc28d22daedd5264b9356fb965531b768ed358d0c633bdbeb9028cbd63b55e4497173f1d02f81931f4ef8f9c63150a901385ca7048f41099f32c0d647b734a96234e0186c964434128d1c8d5f4920f706c66e94920629fd754b5eba9b81454bb07265c1d99237011e3f3c40a2935e139c3254309f92f94d1460a8d6166285b02d993966f5ccccd37f9f7262182b99877ab9a5cca1d8a9f401522bf4e7a5e42adde6445bb6e4f69044032d24aadddecfd5bbb255aebed9aa1acbf97f9269bfc1ce17e5cfb85984b4d02cd6dee16e89bb0cc5a82859bb9b08fdb57b0d7f1655fee1ac1a678281a8ec74d00a603fa9e419e73f6f3872a0cceb4c5354ed2bd32e5842b9455092a8f38fbe4a5120f7abd4bfdabb1631085731ccfbfc4f5d0a58f46566f3d24c49c7b777ed0d663248cccaf24e83c8b8c9b5244f9ceb63b328882eb3501b12ea5082fcde834846625d9f233614dfc0f72ff0f1d004aad087900604d74fabceb1f978f6b60cb7af8c4dade92dc3495530423f28d41dfcf35c7e6edcaa58d7cd17d27d92b0745f971b78f34230e7f538da7f1fc077336bfd1cb312997396e3fd20c50769c30d73267cb8d79da3ec5a9bee8b3ea3281da6b45abac177db68cf5e4c24f98ab2644d992dbe68ff64998fb24e23f84e6982952204c5b2c1c6412bbf309cb194045a07d85dc214b6ece0cb5a841a3e04ef4454d0500f5fec05634dff0aa4baa6080c55f8853a6a815076c8a885ea51756eff6e113a72960daddb08c2d65a23997b3688b61ff5829e1808cda8b335c6ffb456d32cb49936237451425f411ee11191c7f3ef3c2b2eaa5a3e9c5dfb90049fea9df5b978718a21820e8c848c5661993f114243d26848d52d33212f47fc97ee0f15a049bddd7deeb5a46be0a185ffcd42e7e9bc3ad519bdc4a739b98566d65ea3375de90dafb929b7e7167c427d0c99551f897fe6f135cd7030a51ceac484ac08d5a27ef05a1dfbcffc7ee70f3b65adb655ebc63c8ef66de24f2ce016842a7411d643b6ee27d9844094b101d3ffedcc93892de80aaf28847038a1d13addffde33ba1d3dd70a6fdbf053c6e1be43787885b479d39111f89ee8002b7109927e7f6a780b4070fc46e4a2fc9c5cf97004b9ff210b8fbac05b64cfc098af841cfda7e91780666d8c3c2f518a94f7c4a0b209b47b8e0b0f2f4927bc1bb532f2b921098a6315e1b9c0566b6d928115c2761728ab04861770f3d121a078fafebce5054e82ff3dca0abf604d51cb4af44b11bf156a9fb02570de4fcddf8e34b7e12f0591d82f3a02c085f72296860dfc6b7c5dccc407443a6bc2790f1ffec57a35bf9cab92f64c1c677892359162aa2aca58419dc936d056ca99f6cce7df2dd7e729087ffd4b0cbe689cc019fc96e609a004779a73d68f56aca8afb1bfdd6468a0e5032a8d57a9cee7ea3fcc65676d49c96a465b288c70135daee7763d7c78f0ee3c3ff7a53e16e7e020da84dd1651600c8e24397b42e9ae8486640abf757931b417b5c10ce8635af1eb0d70d5f48238bb103b75cf9f781c19689743e7bfb1187285d4307aea8c36f4a7b9c651af420d5ad363406c4e0117f849087af227f1ad66338c9e0ae246b06cb84ea5e2622399f775fd51d86523ef0e853dd7f93563ed48db44e7dd5d745f21f3a089edb5529538bbc6397ae64ad441d743e87e061098e2220dfca0f99192910ded16fac96979e9c73bc410349840d1bbdcfe2bfe3ef8be80a8d852789685cba423b8a35fb3ca325e84e55983c03c6c201d02dabcaa54144cf1dc4d03302ff2f38d701b569e79edcea0cc11724f747aac3913ae478b694a3c40ae8a1201e5f2617a8e32bde6e28e9f1560ea4cfe25c570e404e7318a9e7f617fd82f8049fa146c4f359407d4db4cd33666e9681f712bf64803b5205f3e92c04cc7c074a0541cc39ff8dd2dca039cc1c0a97dc41ec4b8629a59c3d6141f81bfea79ec839a46ba45158200bdbf64f17ffa751d952737c99ad44b3b7cc67e904f8d9377eb6c2e933df956e52073e93450a47f637787f52bd395b7d8eaf9546605bd3d779a05ad302fe290dcf409b23dfae5454b15d8da170c7ba836c655269ed6d2b574f3859c3aa8a199ebede1658cc9e489b57abbdbf87d8a6add25265a058aa710ea241142a033ee2e9472f2f389c9195bc73ae74de957395d6b08a4a5ad5f69ec0af1a1efe1080b236919055182b25f4f5e155797a953cd7f0ee20258047a05894fa6d1be81f38341cac12bcf33eb6c33b7649ab24bd8f46771899820f87dc828cfa02fc91814111f2c20b554461b0856b02d66702b0a9e88b15b08769394e0b04cd708231afbd67986fc9c3dd3e12ceab5aeea24487caf28c9e2f62e7b0d51416273b8196e6315296100c8f6246b36e10d5705dcf75ed76ec3c9b59534b0aa9a2614c523a8a120ae8e9b68062df8bac05666c40a0aea93ea748b336c6f373262a49889b5f7fe20fd3922787b62080c90d453309155f2ee255c00d420c368432741bfb4645a583a89058e7e30282255a960c5c5a1ce53820a9a3bd226d3476cf993bca9fd70067fa0c97b2480ebb1ca5371d55239161056c5fa1437e2de80bf2b08613f593b72e6ba8a5b157b45e43aed252deaf10ac4ef4d5f666e500ae7e7dbacfe25dfed6cff6b17fabaf1ddd93e36e22fc8dc5ea9ca1a75b66e3a89227cff75cdfb45923443dfbf59d4c637864e4c9d23e74011b2229e17cd127c89668f4516f67e2cc6c2afba137013fe6f638e64e68e47ed5b9faff73f71fb650e0abbc43d991f790ce98179d57cdbeda532542ddc42f5e3915e38ac40e9b5ab831965f9d14499b28330baa3f5ddd2ef648e5fee3e6715a624181fa27bfe9ffad5b86ea8e867e2c7372da17b1774c75a6f3fdb926591bdbc72ffe0f8f330c5a6f62d9e47f72821752d18dc204c75086391fce2281c59179a72919de162a59c6d8c4156aee33f10982e32d6208b1c0bc3f581862f2bbb4ec54dab0187b5b391b9e4f423e412d5400ff531c46dfde2c1e4ff0ffaf8fbb5b47e91f416110f412ecc37bfada692fdec6edf318edb73b30cab4b322efaa8ada2c06fdd8ddaa40872c6321aec38510f4c9791dc9235f9645744f77b3088716d55b7953b5fdd73464eefe4a541032796727c11ecf13362d011b10181afa8c0e70375fd3cb9c60a1b8b95c4b8d27909c37f8cff380763b9a1c255f934dd5cd7d3933ed0eff7ce53eba8afce90aabaf0777c800155080bafb8624e3933f0cb2cf14881357c4759242ad7de48a0a5113c73d03988677cc65867c6a0e89c8827a69a311dc1c4df3adb58f84667ac5310aa0949751434c4a546b137d5679353078671526c10d49b9d100d35eb5885f2007bf076a9f71e86c7e72949bd6c1369e0612073537adcbe8c4480f9eee685294d11084538d85b086dfd5787d343b31b4c592e784f5a15658e005a0fa6696bc7e5fa8f9ede8e59c399fe04c16be2936762ad438e7520eeef654fe548fa5c8744e5f8ba484964aaca9746c2dd3636a1509909c175653a92c574a8e95cb537765d9f54e460f314e621e8b91c4d2ed3dc800ec6a5cce40e5c95d8c6dcdc84d9f37ecf22a95f725cb86d6a2586877a94a91a00bda89eb391d68f12d3fc2605cb944a1602d179fd6204db16ade911d0c37bed923c5eadc987393a1026384e9d9f13393a7230d09d2260cd16c592121e00ec79b48dd322e4c0c4cfc8410eaefc45e60c95e2ada5aa659b7392ea948ffa1b5df2e00e539c6d51ad47f98a49fb22bdfa168598f80e499300e44801d54d5cb774d4fb75a910fd7bb7d3bc191cf59971a8daed825908cae184626a0b4052581dce9960e287311c4e77f8f54d4f75a8e107456c6f26b5365fcd6aab8becba7c27913634a8fde43288f7b1e9406c6c9b62c6e552aac5f0a2a907fc072059063170cccb15fe0546e67cc07fa4f3f24ee756507d1ead61dda4d10253d84f4c33880bcdcf6b30dc52c302bd251a8fb832c9189ada6ce5ca68bcdb37f2f316ed2a43bde04e682e64dea4b34f69af5569d9c78b25a62bfa12f4ffbf7ac6beef6a4d92506f0b21103d60694b995ff7fec7c0fad50784372a97a3cfdb449e8625e048e6a9dda3475dd968d824b0f302519e159c4188c4c7addf42b9c7be4f118041a621dbef821eb0054359a10fc7ad7340200370314845428c6f1f05581aed292cc102c11fb27fe91f24c0dfa95196d134838eb6dc52629267ffd5de3683e98479fe603cb7dd2a8cf3d8e05e04fb34404c0cb70828b332608726088789c067f20f7ea441e6afd4f357e3f9fb276ae8178fbcc324d183f31a92c1a25ee7a40dc1c80ba7419db430ddd0e5b2cefb5941a153a0c4776e607c491f90fc3725c3710b91493366eb507c4fa11258871ec424d0a8aa77c9288a3d95ffb2e6b5ddbfef71665af7acd1a1f0b1881431104b095da326fba80f48a0d518609b3ff2f0978101b417fc4cdd93814440bfa3b60a4d9fb2c0d224a1a95582041e03d2217b7f1aceaacd22886277c3e0ba4d4ee1963069beaa501f768a90c64b6188ed92c7af1da6b405da60d70291cbbe6ed5ad3b8f5b42ee261aff1ec302ffcaed8538f2720ab815317efe300d0663315ff0ddb68acdb89b85b493e0b46374cdfc93b52135fcb02673fd78c30178694255f8d2e8079a54fce1bcda7838439e321686beb2cb587b82827bd79ffa5cc6bf74294ef5d0a472a47d00de72347e60988e11e90746aa36dd851d6e1c19e700cecb67438a8d718fa5fa22de04fb8554fb4b06e87eda47c354d0bc9c8eec25af919c6f36ae1b5355efa42d0a4901578035c82ef0ea2c6af624d21f89525e39069d2747a66ec7119c261ba3bc22fff2c1f8dd14e297caa44864936fbfa9df318616d66710f8d460e168e136163a33ce9f636f5129d2919c045933d4d0180613e94d5ce61902c626e7b35a39717408a35decb0c8e58c880df508729dd75d60f268b5d7f1aa1962e187deb95822dbc229886f9fa2ae111fac4e7adcb9966f92ba60f747adf881dba173b00dfc4c239098ac33cbd72cda115b8a80b56dd4592fc1aa89b43e99cd48084b66b418c237036b21be31f993df0283e142e53f920e41eaef92e6c41e001a3c3f325e1573a9610c21932e18ee0265db1122cb13f280f70536f01b53f2a0cd00843019d3a247fa490d7f852e99569d98ef4b5706258b0dec1af39930fda862b131984c2d1471b2f2b65ff260d8e1e4a1ecfb13d46c95be6b496a49568defa5a3828871c3f127e8b34dec2e18c2bea2a0e488278812484b070582452c4a98a6710bb3cd21f347d6ce893d7ee3daf6ab15aa85ca23d88218135e78e8be2bd4a6ab07981d43aaae6853642bfefbcc97082ca48c405288581e42fb3426d2d165ca70c9921943dc4a427234411c94017b55562ae9d11fe9994620c7c9854db4f967400a344c88a5552a9c4688a47a65de41a6bc03fae3cf4cb9d0af33d9ff8242732a20805f89115ebe7cbb74ede705328e11e4bd6ee35b8b0b144919d402b10c87e471aabcdb77af0839a3ca83157ad1a2343b51803c0a6da2a8ef32b853249ffb22c86e870cb62e6140f6d80d8b1115902772415b119438dae53c9ff90d142c771b7a4fe98bc97c9f79be1fb2a0d16af73718eee107d53243948d204ad94d882bde18ee7751ef540f498371dd342b45d689ccf339a95e62a5e415057d69ec270b4978d1d10e40bc049b952ee58643397e05214c0db25deaa177d173bb24e114886eaac7ec41f0effa22134a06514943ecd9ca27961ab14785c692eb3117dfbfd71042d8209a1ffd9d79b320e42128892ff58a95124b7dc262ee4c5117de438b2acc27f14c81a394024036a3a3cbf59b12f1dae5a93bbbd6be1d0bc9a36459b22154822d4642764ff4bd2c45fb70b5aa12fd11ac9bb68f79f019948c878bd43fcef1e84c7f4ba7a8c45d0bcc5c9c003a763ba83d0fb92877a825f47527040c7488ab6f1810f3ba07b0daa93f6689298054de8ef5a1f3004879c72db8512ede61bc0ab66136a75b03261ac8c9e2e09b6ca94dc4a3e3a785cdc91a5cfc4652fd6c97b15c9e320b406c1164001dbe53fe5a825e543f88f1227b5810f91e4c94c632c71f203e7d3d3e96a6810caba6d60dc9d970dd61c40699586fcd46612278bc6d57210eb4f312a0aab79685f9093d5d97761b882fb3317c8a77f47306cf317541fa4cd4711def3d6fb59b60beefdf0c2956b39d1b28cd7278a5a71d5c8f4457eb7165122334099565c2a9de977bc38d6707cb87d3de76e613d1cee7d169496a69166f776ea46bc73c5f1ffdf2f6e4eeae7b6b722dada8038c8eb7cec590dc64084947684176eb8dca32d0b53b8b6d608f356ed691877c274036c36727948c415bf73155726215d0bc15549d188aae14068a5cf4f940c9dbead256a5171c2c196fbc8c1dc56d3fb178579db1ca96fa5a8e74c2efc9e0e14be23e0c3898d4ada9eaea82ad4ca8f244446d934c179dc2180392ed87e306760f92038de2e869eb3dac6cddd38f480a3cd357a016db7592984e9701607d1bd412b5b00442a3e5fbd972f64cc40486f503f75b559cd8a952e61b3f44d57d5ab4b7fffdba0e68b7affcd5658026921885fe54042d6a9fef7f31bd8e12bda5f601fe2e6fde43bfd0ee0270809406dcda90f421b2f7510d01864d88b6395b2439167fefa03637560ed5cb9096a9ff811e9ececd21f26e97a799199a3418f795fc81d85630856e57de684299b82bb3d921d9c7649b4fcfc1f602ac47ba81f65379d7fe8c943ecae7eaab8243522db0ad724a3878dcfcb4083329a1e1eb4a289076d939e6217bcad32c9b4e885d170ba989856842b99167e4d8bfe78cef2b69f224875a9c11b5b72766481689e4d8224d904645af170c9455ce94a8db2c07ec1e8b7d00b54c2a548e45eb87a99288210b628630e442488bd940ab645c606ef1afa9683ff04beb86c32b913898ea213e42572fef87ff482338c118e19028cc75d95da15949dd066a46f71c228525ea1847dffd07a3938cd0464ef9aea42559b9056d387617a432c434433f8bf3cd52193aed32c33e739975b4dcdda12f9a4f819b09a645e36da450a06e060ba00acfa0525bba028874ea506a6789d5c16d372639af1c3d09199866478dbe4457a563cc0d2126b8720a58c5de91d010c66b5eac2f0c19dc628050d107c9892b16cf503f78d56f31fca4c64ac6ede7d88ee2b86024ba17603bca7a78f3c98216604a71a3cdd60c515b2e381a1edb58b1e9e3edb6473c4a737adf743cf66f9b6081db3f62c78d36de953d2d003e56eea1b6c667a1d01871d25f1c2588260a116e4870bf6072c3e99e860455430f2c4c5d36d30ef19fa3d856e2291662532b2f91b44764d60876ad4d4321bea95e42eeadd69057443a56e1b166e735abcbffdd8f152781b6d444c608fe0e569e747564967667b92533dda3ed45cc709575c4b6aa96b976bddd2d60a6eb8a2eb060ac83fe7d7431cf1850d305f4d178a050ba8e0b382f2ff3815b88b80d2cee076bb9739079b918a8c5e6d932aa48dc0a1997d8af6ab7298d3dbd9c3539ab29269ac31650237f917e9f2fc40d7b408747c05a403b5c62ae81662f189f34898d851835aed0abb3f346926627f1232643349c882aa5076a55b45d7cc9c3ed3ce36d30bfa5286bf245b94d983510c030feca395e61c43d2d190e3377a4022e4c55b04de25dbaa999ae6639039b2d093fef982d9c50e5f9d7ccc2f8d1107081f692af7de7309937923e6352360d960ac13eefa1ebf7c7692a1a65d49d2691112a58e6a42139c5d2cd8353c2cbe22407c4484d9745e187fa5301b0d5b07a63bf8a82fe71c88bc3b8fdaf5d25d144bf665befe4073c7d1b105ece5e508ead5cf00b6dd1af4d04039b93c054a134995d49d227bb8680024f5b6003f1eb9373e957488d73d0bac96b6d4598a7cbb91e22a35416c737ef8914f3822f8c8f73b55752bd5744e3c4685bc74cd25fba78490549e081e06456c654ec8a07f5790d4dd052c77b614ce4cc97da8c97b7843c5040c0adeef1eb2c67e838e4e4693e1f797260942065b1d1863d7025c6bab99f3960a764b8da2ca95ee2f35e0a00a0c3ce236869060d95f5ac4d7647e43adcadf99e7846d3e6f8cfb0d3e6c8c1678d38e46f0d412e00323106f21e22fb696b27ee1f8381375a3a495a2b48765b615fa89c46fb45ddd933f1397613e454f072c181dd358bf726a84b684f7edb1fd815f62a19c5f4603e502bbc47d822847389f5c62c73ef5a6ae0b2317515bb87a1a8685f9efaeab5314a021e69ff01417cc3456d2e73a075eb93531467240790f6f4eda5266addfe82ebb7396f1ca2fe932891088ffd3c262d2df466fcdeeb0f049200419275ecaf7451aa49d06c25e18528904932609bba9a4a27dce1e55f9acb6de703eefdd2b01c55f3f3eaeeb0a9428c3d3cc21e56cd01d2e5ca8efa99a5f001a967ec73d9813f72743a43ea5f31f9beb29c5798d8965f813702b08e2c5670dee469a4a04021f818464ec92d4cde5021b6c85d634a9dc6cef55ff52788d79422ee747953b109739d422ba1d4cd3eeda385a623539919c049bad5e9755a1a2187e50c60026e9ac17f25fe203da36a716e272550f4f2af7b380ffcee1d97e3a678575d0cab95d6bd69d038230ca3244b56a72d943fb1c640e47dbc1512f564cf9203b6549bf7947c8344535b031916ce389a7ca0c64047cf103ce09a1cec8e73f64ae9d52623ea7ba75d03a81ac938d8393452f840509d17872cbc2433d14ea42808e147aa9cd5e0f439e0fd01342d67c44e8cbda644bd3e55b351d757cca1a233f69efa3f4a1163d09bb790ca1a6d7ebd7e3acbc9074d61226592934122b7c1e5d2d443bc12630c6950c5319391588223b58dd4504c8d19c4893304c623f365e90baa3a9240b41e5ccb656dc5071d07bab8543940373719e06a10d3fdfef8ddace17ba24673f4b7fb18b8f854511a7786b6b16974cc429cea9308c36885bb76a6d4a2a299e521c051f96a7a47cde387c9add94112c2ba9f5a283fec1966836ba73c293b149cdd119ece93eaec2dace4d7ebb393dafcbe40d1f436289cf2f3ac19a2ae7d0a0c978599c2e6413073c84463aae20cb26684dc3e8f997f29ac585bef360e4028bd91547e064aebc395ea9512144b46a3bbbf40647ca32b44b68c74cf005554e2679031f07142f2987829f92ea6a8695dd4f1f03290bad2c5a0e5ac2b70c3947b53f7c0ccbda8f8cd6125b2044d33301ef4e12e114e709346009e78601816dfaa0e32899739c45e5fe25df11e30eb368d23c444802169cc7797cc2eb6e9eb726d200c108f4400084119323af5e839c6e50ac508b1831a18a233c7eaf6dcebefcb8453f21111d8144cc2518d39aefb1354e1a45f3cca913d654334284d28c4ca22cb2ba513b684a3cd7cc36b8307c1ce69757c9f603d3bc0a7e34677c07161176c73f038d27bd78ffdd01ad0286b24144a23762402a89578291a38665410274a1020384b7bd8b656319f9efe0b50c4b727eecf433025b9c1b0acef3b0a384c28d8a048228b24f302e0e30a61be760284df2c0fccc09059def4a69a89ad989679d24a9d1cc485939dc03794a0f4a2c1f3eb9fdf3ef7c50460aef4f96311646ee1dd863d6860be32173fcaed58f05a4bab2c55074649bd71f8d2e6cc4559e0ef7c8a9ac5b09dcea61d819a121b6fab44544bbc71d8bf1e6770ea9372b7b011cc2c066088c3e345b7b9fa5a4f337f57c47fa4c3d9ccbe3d1bce3b52f27450e52569a399fcf202c9668aaafe288bb52d310638a082d9e7a355d6c2dc032015504d4b61dbe9177ff9d91e60e79506a20330dddee20aed2123c059b1ffbe85b7711f655d9f0aedc2327aea0098c8c4dd9dd2b2baeb60438750827da21cfac3dbbadb8b3d6182c14c8abbc4970ddf7ecb2d3ba0648e3600e4aeb4b12b1073c3b72cbbc8e69f18f3387a2393722bb2d6d9ae3fba5330cc900dc650a19e93f2375deac3bdef5b74e8d9a53917b6b7fb5d97d9564b6f4b20d6639afed80890ffbc4b1d541529107477912c110f763e5cef25cdd6f01601dbcc45eff100d119f5a64288a4d3ae3934a1b3933643598184f857b876c4de430baa3dbc2e794b6cdfe7f4a0f55e5a091896a423bb9c4b583886b6b99d0822bc28e23c00b00402e9f8a740663bc82bf5daec757a3c246dc45d9400a5c1c9eda86bcae7b361e00bf92d4ae642137f98979a08ca88b370b1c80cfbc12fd593676561a114243136a4aea920e260964962808c1a078eab1ca143cf563199890fb82f0f0c3adc5d5f05fab0841fd1e71872d7f2b445a40fc2412c6104e6676d04b9ec5f1fe37aa9149e22e52327c5eb5c6e58db3a5871d1f4e5873125a0d95477f81e133e618a4faedf0972f504144d1c6c30d77373146c9c7b20f1d6a7d13e42935cf3b5bfee6fb538172b4d97e23343df50caa6b2e32994ea87b0e996ecb7d8653139e38332a4ffb1e015555faf4039ca4e66f91432b2bda7aa5f969d1dc5a73302ade55bc6337181aa4aa112d4caefd9e64405c07682ebac8dde022405493831f5dcd7248ca08536dba50a06935b0693f904357779a60928a8796151243d988b43dd5f2a9354c4c62568876cf09e62131ef11eef54306df430276f8374a6de6b1e72afd81fd3ff5e0ba6a912794b154b57add32c9538ba3aab06315bb68d3095f96ce4ef31ae9cdfd3731b2c9372497e72d8552b2e7b2bd5fcb03931af1c723bd842fb9ba2dd47d3d3751a0a8a57c9c6d8adc7eb8914b6dae4cf60bdf5c1b38fed008b8e6c2f305d49d6d899bfe3c3c73895e5287ca141edb68ae7476075f0adffd512a84a443535ce226fb994f8876ed113490cf0772e604eb6be8d41007c431ec6bb47c4a4e6f1522111c979171bf6c565aa8d56a10c0153131d544fad46534d38589a5d077314f4151450db83ce28bfdf99d2df0379205b861b10c3b30b8c0f77eee1f624d234cad7c7b67e9336c995b1bc78069e14acfa3ee858cdc1ada5cec38f25c49ff2ad53ca817e981e52d5c4424d539720a94be6a6fae8b5f258f8e4ea4f22758d1aeea28c3c0f8d7c5289e9d438b4f5ca40a663facc3a0370ef535cc07b02229960af81295e904b3bbc03a4526bc82825bdcb85d72b8fb290f0b9b60f64e5b923a65c284273a950902f14f0a414843a91b7f4e6cc0b380b89ceabefbd258c3ab893703606f8e2601df7a2185178ae391c19b9702dce451cdec23509896f98bdcc4c06521ac5971000c2d6b9ae15cce03dccd1cc5e42b217da2cb999651116ee255ae1e57a0e62754981823cb54b466f05f9c834908478e674da4776388435593838eb1d1ca14023be328ce4043baebefae31b899a9b123d5dc64a40dea430229c8e5da945a62be39b9f810323bd642c89c2b2c5f4ee7da099f362d3e4458e5db17365ce8aa21648e72c8f56ebba61b0da5acdb8881d4472d676ae8495dee6053265dbd0c6a79f6cef364e94c25445ce758e20709dddc3095a77908e4ad0a2a8575b40b810b8c1c0381eb0b012ded3b08d7c361c4a42183df30e1b5a91ae8993ba49c7fdf84a3313c0d74837e6de271296c65638d640bca427c9551d2f34190251931613be5988991c5528c45f3bdb8dead8990242b0c9d55a17e3ce6e60b074e9be50237c384ac613138b0c4303b9e7623fb6548e3c5d33c180a2f4ea04d8afd2dce2578f5dbbc9fc0902dc5abbbcfddcf8f019b5e95fd407ae3749c24bebd63907bd952f02e2d47b3903cbdb06f99c495bd4fe6327fac5994fefc4e550e9a5ecfb76b44d5a1479c202e6fa4a1a984af0b2a79b5b7f42251ea822075e1c2660dc1ff456d597659892e5ac91364cbd60e19c9c892d04fbe455e6903ec03a2b43e686386eaeb78cdf5a81d707a318babb2e4ca12cec8c8c5e23cb12f914f38ab4f42489b38b4db4db4630fe20897a299ab349b56a681e09ef1a00b7d2a0b04de808842f508515e6552dd7dd37a96ad1ffcd253ef4a210d0392f3063f45ffc79d69f5b2a83a7745f3f7575edf5f350e336c2a4ed9669d10f3635038fec55e02a7e8487aaf9667588f2e2f9b10a24e1a08e89b1b00b9815e25adf153d3fb57e8babea22215a3ab8d2b4949a5319b2c822a9e6b00e08c1b0a64ddae46f778f39eb84185d5d5c0d27a45b014425dc6e4ac7238d124a11db7c4c23081ad567827c6eea5931c19abe82bc364fe37cbe5c3446b77e903d7b75ee9f0399c78e8f5a6867764c16e0425af01f819bab4c1c7155588953c5471fcb0fe67e6aa1071bcbca8c1590a1058e5ae55b54fb915f6f22ad7dbf9591d06b25c7ca26bea37418121b1265558cb31d8458f12874b3c83ab25c0149073172c76d0db448de11c9d15edaf3c996f290893b1605697f95e7b4defa5805e27d3e84f776a162e74bcef59a051a286fbd179b8122d22a61f9a3c6ff40738c062038c95391c970522c4cb3434bc1f8b3d22b92ad2ef30a606cbc777493200e1b17e2fd4c5312d0d4e6a8b290a6493ee2f05770c86453808c6f0492ff567f17b381f2baa7d8eb323c12ac5ea9b55aa451ebe2837bb6c4ac5cb4baef50a73be9e051127adc12434daf49cb0c72d491301b490688240b926446f6608eaa255469a6593471cf4fe4df175b166070d9db49cb08c6e5b1d0999e69029ee4156f74683137852e402452dec9436bf25e5246d7fda6df42813792ab523d7922942220b4a3c39ea213466391b5c569c6178c0eea82a7b53946cc0352bad803ead1ed1e28b27929381c2344fe1dcc9e71bf58045f9aee8a39bb228f17aa8135e4b14c41182794ba38cfd8411af92f20d9c13904a53c0fd44f78b9a4f7e39ece582611f7fe4c3ffa6dc268a29bd7bab5af45dee0a228cef9edad751dc9c9d83bdacce83fbcd64f9d1847edcc4973919a58a20fd48ae212331a82d717d9b55d7956a64f209afbd3a9a1c6e7a6268af93e843fd4a237e02f330020e21abc021a3e72ca8f7262a8d9e2805fa6ed6ab245ced92286b42d0f25f57172e4263b970cd381d200af405bc47af3b45ea8a1d9bb28d955fe140e5bdb4e3d41d2e9c01daab73fd5f74fe9aaeaac2515c59e709c2f4c6d42bebe97d1f1113b5b25eadd4bb384c4e2c48313de887a52e902b082cfad93331dfa68be127462951c8de4b1ecbc5f07c5b60fe7cf8e1d8893dd9a929348674b0020d93ed8977ca7ca6de0aa2df6fd563a71084e6b959fe094e0dc619c5f6bb7eb168585d35bd0b990d7a3fa457182ea9bdb79993474fd97458101a8338e3636da1240528f490cf16165e0d2b5d88d65de64c69e0da2a3dad2b5dec84f1dcc18217e2c2b3748efefe00647acb4457a04ba039cd8f07a6a51146876e8c9cc1889765b2d1e14bb5249e38e0ba2ec45dd814d04b15c56378712dd9937392d2730f127b2588b5389fa36a789e2551d4625aa39a82bcfd31aaef041691e309c447a3e304bc786aea3e6e0a84312f003092eb1f2c9aff27e64d35e88b68bb03df25424b8d1037f42343575ed96751efc970a529a9f0b1014d80c7e09d402308c2ead12f33a69077b2740f3672b7d5eba1913fd99515c585770b71868032c54b42768246859cc438857d095bc4112f8733cb7884f706d45c87191b0fd98b64fc5454d7f6d728f6b03a9bc32a9e839fb521a656d9e46d8cfaee25811fc261ecf08599a152ef87fc8160487326d564af6d58efce01d72a50c97152209f4ebca6ec979fd091e50686c3d9daa79e2a3fb11f6c9997e8ce71ca17e77c24e0a5cf11c621766157dd4eec987bf934d078aa47edb9d607cccd78e464948370d156fcbc3f50abe8b2ba3038c1418818800f280e0aa48bcc882b757c4c13debb44c172be5d20a4ae7671544062ff8e1b2193c9e4f4d3fa0cb2b8fb13250afa309d9567daf3674441e1024e4eb7f4c24ba12cbb5773aac6ee4afc30d64e13e11368fee381a253785f1ec48887608ad7b9787b92e1371de884393d3f1b7d0ce91ae281d03f649b7cea35782cf8326ec23e7586a6a17c4f2f7ae0333d464cb1d2937545580ba61123ff1511be76f67f520b0d08e313feb10359dcc86eb7bf431f2ed30be84217acb98000cb4d82f88e25f7bbee21ec0f0404106886d1cec9976f4b0e2e261182101959345f6c256368f23ed0df36a578643ae1b99153c2ab342e86a65686a13418f1a4243ce23fc4d6140c433f9d91036cccd808d59064d9ad2655d7929d830c4883d81e5173e537d4ee85a3a662530b28378e651dad0f892b13712ef3814d2f3fe3daf9db29229c6e4f415b6b02fe3d638ae2c60c0492d19c89c8b54af7f1909b8bd674af8c644233ef54c25d6460d6280a75416a94784b364825fb3d914de6b3cb88ae4b0206b98e7b5911b2d22b6469a64556b4dc3c98ef19c44ce5f910304444a49058dd7e2acc6a32c74051ca8beb2eedc2e67f9bcc268964ea5a170031d88be26052c4e6ee9c1936a86143784c6b0fd37273e65033ff6aaa4ad165958b72c4e41f952dc65bdd6890768ed42ce0a18b4016058b33c98c99f8350222f96ec89ff1d1987a1b10dadd0c518521da7c642a1e01d1603b7d2d2ecae213521016a5b30f7b8bcff249b871977542447c4a5cb51e3c612facbb430d93c0a5fa36e195d47b22b01c0900a79dfcdd23d4aac80de603656931d1e87445541f44086f1ab28cd18238c097231258f2ab2f912e4b155c62a951daf8a51045b896fce4a6cc735f26a9c85dd6867106b913744541aa46773a225e2dc2f65d7d85cb59a1e11227a98903ff2a679eab30b25bc9aa3ac7c37956307174800d09bda68fd547ea63ec377bab42bd39d0c6b91562bd1143a3ac1567e8b38fc8c7e937b356c1466e9fd16f626545e66004f1bced64a23a036d28d9127c107c7fe0cf98fd719935db300e8b418195701fc87d34c4ba2a948d7e3356dc3949af5a219e42017804d416a9da94f033567811dca93b788106945614715133c3e019ba14337900c597274d6c28f46e1af2033604c6053f4d019a06b1415657add604802a4c3bf974ce32ad81493958b335717645afeefd69fa417e25d5ea43008ed470726059ef070de7fae5fc677145059aebaf9effc9832b50f4b0acafc7f025eb6c8f5e72d71900f84d81b3921f8a2847b97e8d1b4ca60f9a9f8a6e29eaa48814130cf5a557a931ee957e8205e1ffcd8cdadc50111b8b3f855b2daa4d31f558fed32a8b131c2795c2f0260053f0a6da404f34cc9a5b629e225e1e4324ee91673160d9064add58f8fb9e1e7d9f5572fc704557e20f83c94ea2a1f0c13d20462e1caac22a682266fed5140ffb2598e7030908cffe74f5d5123ef0192329f672bd21e937026d552b0b77c562ee251b330f66ef3f88d5110f23ed02d33be852721d352bd45e5a628aee4b58564c3120be4b3330611d0b1624f92dfd7b54386d5c5e45593a8143c4fa211a505e210aa129d14066964b8007647c06f500861c40cbed7f000196414fa03097d81bf24f1126abbd3d03b1ea44a3d9a045c174a668243445c2f00c317665ac800c8aaccb20af88449adedf7c83ffb8ab138fb7cee087ea8ca8a658a4400b7054b736599530b9c0565391e497591ba5ff8ce0b84344a049559978384565e5d7cd75bad69623144504855f70bffc1dc5345909955db2b0a5d5e77eca7dcbee4b7223d0aa44cf3a3a3f4054abbc8bc97fbaf4110ef4723a05f7cf246c4d9f55c3d3cd0ab92ba73b3419ad987be676f39ee5e41c00814b7d3f5c731389e72bba1fc5de37f6db2adfc47d4ff013de284a2888d8b6e8d600023450509348af323bbbf01a011bc71ce0d9f1bec8876938f70ba71018177c7a4b61304055eee7df493639ea9ce4f3dfea1eb8f4dd2ac5708d80cbc88b469a730b2b170e499662bda1469ba831d4c7a9ccd979823ca5e0f01b9bf50fc439d8d6ff16e11f6a5aa358fba5f6e17f82ec4b425753e32c6b51a1157fe02442e1a02ea6d61b3477123b4f543f84546fbdd5c5eaf845f3343cde9ec44285ab56509570a0c2790828aa20d70c50459f08984042ac5e08fd5ec6244017fa032375c041816464fd663b12b958089c514482f3811916cb9267c480e0d7382247a910ccc00a3a4203f16748229209f761c52904e3ad8fe5193059c7041af487050ee215174021ad6020d120547a844c558e8e4bb49cc085f1865725aef5f2a11fd70592150357fdaeb766b450330f23d7747d285661a401c906f2a7fcbdb18efdf0b6305cac38e28f7c21a62ce2cfd0dd778d1c54a37ddc87c1decea79beb24594978c396b2dc879b35eb8cd4342254f9aa5abc2b8448015129a3ac3dbae13aa4ea8cc15373815f1a89e13e5523b4f1ccf82e3d475d2a752bacb41beece12d53d12ea1e86006e5442b53e9d44bdded9fb1dc5c5ab24dca685ed7c183e6aa47be71675e209cd2d571b9ca21b24e0dca64ae75851face97ad5bdd1b91b9a2fddc8fea99ba61c349d6012be3b86dcf01a5a6c01e75b6c7f31a966f1c64d0283ca1ef1239bf398ba4fcda6b8eb852ebdd62e8105a134625af16843769bb126328a8c6bac39f62ff89213fa8fe3996b60863af1975a82857e9bbbaf676e292106afad76b3ea5aa95572ea801b189abacfce14f939b3f828e39b91307b214d857c2779bfbe9b991a4fcd3f1cdb38ada8e48b0093ae21e947c13f13465f1e88424917b466b5373db50d460833a2fec5d48c1e8a5406af2969c56a33cc60145f73dd76bebdc2b5d7fbaae2336c753dbd24dac9ea89d64e268ee0be1f0cdac13d70b00ae14b2c470f9962de7569f7dc20e57d328161ed91580bb173e08aac346f3179f337c65a7470909726c25eb7bef210e04ae77d494ddd7dc4246b23ed4857173e9120f84c644c2c4a3c9d70ea40d65e2d8108a70d90c4b73ed381e3f91dfe33964954e7a18e4858d829dd1b7d2c34b14a7bd84f716dd887ec8ecb90a1314bbc55ce1c42e2c026c67b4efa469a46ebcca1af34728828033b17d1cdd246d961b3fde4d9d8ce56a269294e630f460886bbff93bce1953dc94a79600dda4d29b803f686f0466ee452cdf0c4103e5b48f30654269d162256070a3a52eddcaad6dd4cfaebe7ca40ee397b89b91f270b5b1a0a242b58eada573ae3f20aa295cf3ddfc77c178e9bd533d55fc2a765143f5f88a443e0d1f6dc479813a081bd88170b5fca05b39c56b7ae0e8dd02632ecbf87a40b0b0e9671514e40218e0f47e20ea2d63abcae68c796806ef1d0510ed3b8d8875178ba87dfe5a3d5d6e69abd5186fb38e349ff0c8f64fa8d200792251a8df1ad932415c30d64a3e804300b50edb1263ff4f5b79f3c22ae63758a15429063e4a9ce779e650ed7e2619cfc39b941c6c792fa88d6cefa269890837d50698f2eb042bb1b3bea3413bb2626bf5bdb544dd97640c8c990ec35bdb2e747c4752b2d5f1b68b9d8e1fdf150b63b84807b644680ccc8810dfac3c4660d653ec5ad1ca53ed547a16a58d83d2ef76d38eb4a2476317664b4e1774ec039a310ba55e3050b29a7496f42ade841abff36fce91fd282418bf309d8d2bdbc97f03cb02bd8a68bec7ad030ce9a2ab98c20f4ff3e875a1accc75becc75de9b1bd005db7aa9ee0ae963d1526f25c07c5b36b95d877cbdbdb5b596106984904df6967b07670ada0a9309296e8565adbb60d9d08dcb552e3219f722a63e7232368aa8cbd8fdd852a5f08e045c5eee727002f7a997d06557619554465385dd9c4d3e1f16964da1234d847cbe23dea9ab53094628c635ce26dee7652e970ddd9caebaa4321e964da59bd55fb06caeb0cb0923ada2ac905ea6eae36cb2497d96a3c23e7809ccb36097769e98f73e884fdd27b8c395d4c4922a6004cd866e58644337e0510d9e85658d5be808f8b17dc02342ad531f16961625560bcb5a479d85a585bb8985fa285119fa164c64c658ddf472c5c028ad561fbbe9e532f6c2f296f3c4581fa94fccfbb2a11bf02f970dddc01cf44940ac75837a0c96c51c751496c5e07e01b1ac9b602233d6c2f6c8e532e6f2b19bb8e08ea2ba8ca9b0cb62ed3c31fa6a45f5970fddb81c856a7283fa0b96d123d405b7b0501fe91114de19da5161d7cd95c0bd4b02348acf8ca93e24855d236d92e94b08c1953124a428b6c908162840419419de193203b1cbe21e2ed70f9fea523d2b5161aa047ea44808e8298ad5d8bd228a29414b10819f31f0f4f548f5b9d87503fe1efcc52e7b9b548fb8243051975486ca50eaba413d75d453f608298685709fab5025aa4d6a11cac5e12a4465a83dda8eac9265a2b74d455190929438a4a4264e89067151b823ce87da547b34a336f308535310dd8e04091135e18a9232a5f5c85621cacd32a540f688da242a43b9ae454f31191bed5137b3fda2c1730521a7046bed72c5ae1eb55698ac154f5983c71757725d29b5d65a2ca9cc0d55566c2bd5aecddc59c816adb88846f0c14c21e59ab2c6bc2b852d53578fa6b972d96b5abb5b76f745552c658d9babac31ff693ddfe8ea31b5b7389bcec0b2965a4ba5b5d6da5ba59aa7e4a0a9047994452ab831594a19c21526862004708a0b93a594211c0d214a4c0a8e2a158ee34030aec8380181b1c52d022329d5048c24543c640004460d563c98248131748f808144c56388243088b8f088c1174c2e3c9a1cf9420a14d01748271e3040fae24809d40e80f881142152c045a1dddd3d820f5a66b82d33c0d8a01f45d538adda8de3aac655516d837206b36dccd8f40d4b432965bc4b1cade191cbed799f7801a7362ae09807408034a17f4a80acd11f71d04c310a54dcf91185dcd4ab49503c091b2790f69385a7e18fa5c91d3f7186a68a5202723d775b03b918545152391a5a268f5fae5ed4205722bc18e386604af16249ae1c0c49f0c00b141c4d991dc56cd040d4c514268600c1163509217660ea99018a0f885c11ab579a786288234ae00045126e2808101c0033b8a3d85d7471c2c79a568754a587656ddb6cdeb46bf255e805b4889f2cbcf03a7afaee9b7d199bb81ec4aec692eb24b557cd4e36b677a1cc2a680777eabf5bd703b483bf395dc63cd7e9c46dad66f2b65b15b4dfd46bb39ec3aed8ed32bec16d8c82c4382e116ca898b8a736f5f622b5d17eb4058c043a8edc793929c5516be56453303cba6952acd5729ad6818d86f45d38635e88a58cf653a85dca268003f08cc9e3e81b0390a2266b7c64fa19ca2ed4ea0058c8f4b3714ea578507c521cdd50e0470b4c1075214510452f405dfc80882e8c8e6e28f0a3054bd3c50d6e63d14594db7a2a4b295d1065304b295df89047b1bbb56ddb50445d00c14250c36745173da00f97b3e2818112e276597c44b8d60a10e87250a0607039265031b89dd187c4b55164702d0ebc2a68d074b9177c43775b025671572640f5700194bd2bb8f0f96c601a4309308c60d2e2bbe16e594a61b2a28814e74d0ec51484ce6b2566e0112ca7257cbe1aa0ba29473c213eae0747a71e521b0f943a261d3c4bc431cd5eb46ec714a42dbc0077f060b6dab1c4d116492c3b8e90b638a2658712455bd400b5a3073eac1ec025b7662925882cbeb8ae2574b82a226e0842881c04d1034874bf2ca50461e4b3411033a09c00e20b941220a2984eb2104d9af05aa7b485c5b2a2aabe9d6ab538ae51e0e775ebd435b79d52dc56eb4a39aed5c241fbe2b1adbcec6e7141cd482957794e9ae7e568449dcaa37d3374e179679d7653d5fed136ba39556db971ddacd6696d53fa5915dd4696ca7df2e4e1719571ec69adb5da8a716c9575d6d35725ad977a1ea5946af6db42fb492965053fd937a4945243552fd5a9296a9f046ffda444fa31b6d8531b56d4345bb55b53aa564da96936a6066fc27cd03e658dae9a46a5a494d22b5f2df5e1a8613ec88ea93b6da76ed6146a07542a85da41ab9aa6695ae5aa45a52a774aa176a8dca9eb68d751ee54a958ea9492ba94ed2a0a35e712276e4ba1b853a75d18b4cb9dbaa229168a9df2154db14751ec14f0d471546856d32cddb4da9dbc5367a7c7d916da96b87ca0ddb6d4f5b6532a95d2f181a95b2b0569b529149874eabc2a2dfe55729af669dfe43eb96a2915daa7f54ce33e9fe2ee5d10cb4f3b755e52152a2ea7a42a4c4a5534950adcc15d854a71a72e85da813b45b148b4d453c7516127d23cb2a1ad5f97000653eea6f5d4514aa99d74ce4e1c0c4a199035bc6ffb1aa9935a8b46d23aaf97b6ad851f479d87b47472c22557a4a59352d269e9eb3c50435a3a29259d9650a9edf4f93091c8b983b449bd53782e994a72e39e4b5a8270e73d1004519f08cb5d54d479ed839e324de8cf293f61c8daa9772a9ab241d9a6684553b6a328db14ad68cad6bdb586b90df5a1c01dde516f42e444c83b6d4ea609df3bcf4dc809b7e4033794138e6b27a9fb71a7542ad53f345027a13a70e0c0d140453ef084ea3a4907f5914e92baa7d49702797446e1689bd94463a36f6c9717c04caa22230fd03fa23c0195e49dbe2a2dfe95934dac69c5762d60a76da8dad43fe0ef037eecb002ddbd8bc212ac27eff42555a1e2d27d5e521526a56d56b12a954a1ecd20a4ee8cd279d3899bd2d1b0a0ce9b5190f0be1934938029c48004c98c329dd826d23cdaa613a8d4b63a9da6d74c608b22a0b2c50a680af55d1e459fa2b8477b0f112e7663dfe977223796a2ae3ecb658cbadabb04545f5d02de59f0ce77ef6bec6a4a3fa39f3ef413e807a5947efa7ca79452fa42ef295d9db24e61a88ab250905a3a9ba259aac184de6ff89d2584f92abc07c396b3c2d663c219eb1d3af5ab7b5fea3744bdc31fae4b50a7deb57d614c4feadefb894b63a094524a29a57482f435d441efd1a728a5da5d9bec5ca7134729a534891051933e715dc775e1e428a5de6b388194a452ff521ea67487d53e0bf37baf676ef0ad907598d5cbcc3a1aa6955f6aac29a594524a29a5f40b99b85e81c09b47b3ced904347be636e79c4479ce9ed9cd8cc412162b202ecfe3e022cfc3a085933cb7d8418b1ddc68d5da71db964518797b12dbb66fe08ead956d8d81a6694b45c81a02b296c50cb2b6e348b0191b99a290a9109a64fa4a7f7d327deb8a2064fa6301834c2ffee4a52072f79dddec7a9e702c3c4c2bc4c8b59efbbd1c0ba61549b9d66f9c0b28655571c40a62f5b78a2ab9deb646508b888d1f1642c8f595d3214ba12229d76be08e7a1623776cb5ea5b79b25eb9ce4c2279b48142ae5090c8416c94539c1825155965268fd2ca08799c3db98ef3a7c84c523f8f2a144b72c541acfe5ea41122d7e3d0f1230a1be47a17b4c85034e5fa189268984931834f0c80a298811441b94a51454a9922895ca55029412deac1a6816aed205c913b0541b8a1d22040a1d11f0f1ebdcbf580f9ee4fec929735d32c41d78f0e492e15a81ec9933689a2ea2d1fbb88dac47c5ee291bb458d6330852982bb4ae4792933d21fe4f92259e38902a4d0410d53f4a044d211b196cb5eb0a432aacb5ab405cb5c3055a232f32a2c63c17485291295998fd1222a338fc1b8cf1da58fa48d0cc2094a20041f7e6a803284988d9cf2c3153c5471032664c0456cde5b7171bd49857b105d1d751a54cd24c12b31e539d2a63c2f8e1b24c12642cacc1791e72b0e52e20779be5f77a910250a8679cc5daea35fae702766b56a5df5550ba6aac21d97ab7e43d9ebf7ab70c7f59853a0150da23293b628d07c18b7f5d55b5fddc3fc150eddb81cc432f02e778543372eac1d1815be8ba6fa4e0bafcef21bd55fbe3acb5731ad130da236311886e35af7ce8ea3d24a3bacbbb0700676585e820d2c77f15c585c5cc29d969da19b161c039599677dc787cab45ecefa387d5aad17164b28632e96e7065188c0810831c021892a2c18c114c5c7053830c22836712fc134ddb1a9843be0535f85a9efdca33aced54f7d857f93fa4ac6502d2d78876567e886054fa11d49655497b1126c984d845cfd96abee6aec7a40cb55bf69c13c31d56f5abe7a0b7635d6b969390b964140c66650142a33679389446526d344eadbe2d8fd85563ead765667b959e1a9f49d96973002ed73ce211cef7d97b77c8775968fb3c9f50097b7fca605dfb0300b963d3cf1f4d6c27672fa09bbfa542803b9c3342849c663d0200b08e193055208942001456caac2d4ef86bb08660837d5ed1393317c039fda37ec855cc94c5211931199b1a1fe1039456c4852913b498b93ba82845a5c2279e0c4143b58e20627a0c108c904912b54c86003228044d0442d32298a72e4adac5835ddb19de4f92ea245340acc0882285a22f445097e783ea003a415fc8c40ca10966230605c1ddd4e62667025ee0195a1c51d69d1e5f91ad603a0224c7c33042882e227f728e79c4d45500535858a9108a664294210e18c8098004d2c0010ca18c105f3d2c2a24a815e770d6fd7689c27269e271680f3c466ce13ab719e180c9f84574ccb85b5baa8ef748bb9dbf3c4669c2756c2796232e78909a046c83171e767c29600c24bc50d804cf826ae58424823844b23546146a8a38a3bca2218006000e882bc9b8412453770018326b0c06118b640c51d4317c20c5871490861086388e2be5c2fd746043c22b269a087e888289e986204857c4204922668608116542089cd7b31303130a81b68d00da870ce5ec2e933c51de76c0251992353dc7102cd2096700a5d71c719b452ad542926f68849cabba99b9ab99b7b526b23e91b9de7cb11202a4fb8f96e12e4a14014b81dd1011db1f11c59010b8c8832032745a6789ff77977092d68891b012350ac70c11531ace88045c915393c2185174d4188cd9fc249349b00e18e936816c9a8e2869afd5c9a07e8cfb924e95c5a229a524c13e6d2d84436679a55fa4653cfbae707a88f3009caf38da49b4a4b31a94ca566c2b9208fed844e29befa1270b877893cab30b538e7d25c622ee5f9b9c40442cbf0d4a6d9c10ba30a94219c48697ac10a080620911345fc1c55a6254c5298d83006f733a5a3403f00c113db2be8480a12fc50e9ba201a24440a3a2016cc3c9452131bbee87ee8664844782aa2a02a7e481555d164060a1e152dd1620bfa41e8062234883269d231f1c10da896231bb4d83a30c9082b8cf039c1d6c3ca1e51a62178e88a862862927a617ac2754033208c1cb1694130f8e960b064890bce8a804228a808278e48c11d71343b2289a62bbad7f89da948ca122054284b9ce49b4a9b35ab0d4925dc4016f17364c318536ab5e10b3ac346441671c30dd3062db613ac7a902926937bb21d7197e0a4b8e43277b3fc65d10a88d778ed8fac2f59c37e2fc8a5cea35c22218aebdd6ae00ef0165c01f5d5d27dc91350d9fea2edb1726912d9c360adb5760a61950d57667a5593166061dc7bd5479a7c3a4077fb02c81bdced6de48dedf60790363fa47c2269be57b65bcfec531868469135ecc17022d1f3a8671559c3fe14ce2f640d30a609f65c38898852e80cc51d69b23d4ddbb05a46bbbdd5f238891e30635c103746093f5c1880086ca44c79bb36411e288f7bbd0b608fce14582ddda32914a8adf4c41185a6486c42895a389a82aa1aeed84c4cd4e6fbf66e6a51198e76136a030be3b664668f3c6100b2060df2000498267c404e1be40d11481b145a66fb56448f0e79bb473f9b3d4c236b6c36fadb2994b9d47903f3f6c9b48d73e9ce5a3e07128fd0046df6e2f6b9d1c81adbebb6a3041c6e77eeac16b5a616b777b8d56257693193a074c7566ec913ba6f17fbc6e9db3893b7c3489b894465b66f504899ad6d9aa965b64b8e8be2d27c3a1d694fde66dd4cb2c6f609c544a236cd8594d9be1d0021b8942ab5b86dbf615c4a256f6f226ac371f7b65abf28d2d0d426a24c20114f521bce08256631098298bc647957d3a4d48e233579539f562bad9516f17a89db423688182cf74ceecb25b9a1c4da08044c3b18d5c045eed70aa630861824407aa267063cc45ca0620532fce45083134dc49a132277371058b8e4a6a9f54443aeb57da4c8d408ae05ed03947bda1d7d172e4e0c7bc185d1672a4f7f9848ab9d339986a088ce9c5017f2e7cd8c2f0f779c4493b6be308896bfcf50090b56e2f3180b9e455aa68b4ca02cee3889be8fc8e503ff87612dbe5cc8138fff786429b94fdac040655aec7a09f268e1cf9ca33630502fa604a0fb829871be83df3e8a2b7c07c717c4fcb59cb89a8f0fe7c3aed3bf6fd875c23792ca8c2f882cff2e64e6ee3ae81682ef4210cf642f143b090e6e2fc12dd462ab52e08fef3a1ae8dbf02cf282db2a7c27510d97e8f3691999472e5b9f59cbc86cbf1fd4c6e5ede113eeb00b6ee1381666c1db75507a1b8e5f38b600b0c471aa06aff0b6b8a92c8d3ec00510b7cbd2e8034a0ef840928c2ca50cc183d6da6669b52137e94dd16e1c59d61cbcf946e1e86a40aa3cca2a479703eae612a2264813091284e06e1430d1060e1ab6c87d187c48929b08936ced0788647beef6b552da9c2eb3bd77ef1bb8c33bd188913b8eab4283161fc77df8c7979483bc6db7e08eedbb66b1129436e79c2e3d452c41c3092e0132a5dd5e9f6e98f3b799a4a411519496a8000b1ab0582266050434b8c206552031e1887cf0c108361a33e8e0891e1f72adaf2445b041d600788088266640f26a92fb0ba8dd62b15ed386910c4349461eb821d77a1130b341891cbcc8418c137041f070439dd157a0d96c16d4ed406485124d57d0608a26b8cb13a3f463a2074648128a9524294518cafdd61834e4fec770e28a1057aee4369a3111259f7880e244a8041be8eb2dde19dab1d736991bdf583c64ce64289ac5865c87e1306098ee692682594cc666dac7eb6a1abafa12bb10eaa0323809982dee2899c490a648870a3f5aa861092b322c8941c547c3c5594a11e38909c410420a93267476cf77ad2328ba0dd2d39542e6d1393367f2e83cb1abbee79c3cdaa434e0e2cebf84a4b8f32bcc7872c79a67e00000591e6779172d2810ae0a5e93bb0135d2a42ca458c288521145b82206194890051240a8220c1d382052800535f2b241f970f24a1b94cf6c264314b358bfd5ef5ef9d5376a0f5ed41aabb55f28a0c108344a35313c60c28b072b8cb458acd7248213345e281081095a2cd64b08caa1604aae324c22101100ebe539490a034aeecf579652c210ca9382594a69da4183464ac0218c9e3cbb498b3aa7542badb5d35a7a512390dc53084f98fc5824f9e4054c32bd9d6293ec913ca112c91af4f41dcba98d4b63791f7cf7b5773f8565329e185ac8800a328a92447acae21bd9cb5dce43ef03504fdd94b6e3d256c74165e8eff2fba8cb0cc4bb52842cfb348adc2f03b952842c8d84667d1a2540a13ef26414d6d1d171a145104b250f8f7229cf4ba60e8fb20a8747d9b4cdcf599e9f789c3f199c9a0d9ebc9c99c1a91f95a82e2f8a2bbc33a4b17c7579188c05ef0c59d6592effb3f0ced0d672d6e55faf16bc33c4b9bce5f2ad960bde19ea5eee727916eb05ef0c9d5a7fb9fcbd2dbc33e4c1bc75f9ef83c13b435fcc612ecf713178670874d5d72b71e19d21d4651f78ec75d7e5c5234fbecfa118e7e29cbecc4a5e786728f5d7e55fa12bac5d431f13725d430f137e5d436be85f4256d7d0bb84adaea16f095f5d43cf0adf35f42c21ac6be857a1d835f4aa7066e4c917eba4b0fcf0872f66b55ef8b0211e0faaeb121e0d23571a09cd329099f148234446ce01c293e74516f0dcedbcd53e06e99497925c8ee5ee9dec25109e6c6d88e381df4f210d478e9eec90772bff85dabd8d078b8ce5aa8fb26cf1b85d36dad38fb27cc2a3c5413adb70bbb527fbafe6d34f9c97ba8e56c9aee13ee4e2a117eaed57d74153610f9ab5770d3d2a1c39978fceda3b6b07f1b85d89ea3694e0e9d60eb99eea43ee65d77c78d46eb5184ea7e60d07e9acdd3ec6e253db2d3c2f15caeca546cee668d7c9f99ea31d084fd670c0a750a86e30cc99798619f3794cdb910d81d78e0af30c95a8ee4910c4e3900c7eaad0e73115eadf51da65b26bbeabaed98361bd6a0cd2b97a1d0eed65e7f0794c75eeb273a8b04c768df6fe28cb415a823cbe55ea329fc7c69a638565293c6af72e5b7d88eab26bc69a5178d4aeddfa3c261bd23ee45e85875ea09f3f853d68ae37945dd3e7c2519647fb209d6b8cc5383930e431958374d6b076b522224bb22ca221a8a8a74ace814a9646394cc963aabee606b56a258f5e6661bb72e5ca17b9df948824482a10caf2f348961f79f24ca294e5ab0a7c32fd4cd294e9bd14bd47e509425c74878be25082f233b497a18f996710ca812bcc152c1e79a8bcd47828963448ad2bd4cb7086da0d5c619ede822b8c3c2e8be90e6da656d77cbd6bda3993b57186051ff3fdd678f03caf4f35ab69972dd2c62e6ab591c3e9531f92725ff3e128d76357c53ef0cc477cd44312905b650f47463d4431eaa189510f2ec83d2ce9eece734ddc9ff779af0bb96eaf3b48cd5dceccb6eb58a81fabcbc7c4c11cb69134b489ed76a4979b3dddb6ad7bdbda7233c4d94e83c895fffa064ebde659dbb1b0dd6eb7d65efb3c35624aa6a750b2bdc624cbac99004a26214b231324c93b30c92764699482a699e9a5b55db7dd6eb8e6fa7dd4c2ee9bfde99df6cd6a1f67eb39ea512135832b68b79add31674c09401767bc4b7369b66db51782019e2c73057bcccfbbb88bd94eece2b00f31db5b2c9eba70c67ee291278fef89a7a64997b59a0d52b3fdcc49e5296bccb4286b8b9c90e7cdf48db13f93a4489659e6a09e5caf9dc07da4daa93bed8254d0bbe7817f909a2ba594fe4469a635be5770e4c996fb47f1d8dde543cc5c78c2ae0e0b992e8e52ee5ca77d769c362f66ee1d9eb286168e9536cf37b5234f3ee5cdf40d577555ec43cc3b40c9d58798ebe9903cbf6d33c4d93eb9cb16eb088485895d3ec43c3fb188478b7366d630ce7cff8d675a94dca420f0de6dd682e7be81d887d85131054ecaef2eb0fbe9339407bbcae17152ecc35e7e9cabc33ec4cc6171a6799002a57cbaf71482cc3c3fe3ca1d6b9ed845bfdd3bfda447bf09a6e0fababb84d42c9f93ca129ffbc29cb9828785482c64e68de214e65df2dbab4b621fa2b51847d67ed2a77dda9d3c2167324d161ad79e93a85efb07ca13684e2acfb0eb693d9d213d05ab9099e70a3c8ae427356ac7d9fa9e37ce717a9bf620b362570f7aef14e3601cef5986a377f9b7954c5f912ce5be676f740227deab06e6a43210296b8cde250bb4ef5daba190296472df401e5e7797909ae7735279fe740ab260bf61219405ed130b9959e29176d8d5633bfd8671ea83cc6c71c569993373cecc8db9d3ac43da3727f2769b35244864eed6135d3ec43c93391a38dc9c99fb947ea66ffcad56a5a1e998d06a56db2cc88276ee1a9d916f5dda9dbc0fa4699a374da695d2d6348c63cfbd86a3b5600f7b4e480b992bf471669099352c61943332037b65ef1eb671b261c3c645ed73227192b5d70b6925e34c9697f368e858bb6b2137a38b3b722eed445f29a60952b39435469e3c47b185cc7d823d6432779abed1b9b34e4e2a8f356f1f9bbb98e986b387c7f9919bff669e23cf09423cecd246318fdc58b30f316b75660a0c89dc367a06d31d5ddbb557d7867d88621e6dd4195963fe083aebbacfee9b50beee5e057dd077b49b5c2833057bcc77dbf6b97d72a76f1ef58d296df35dd639bfddb3a08f697b4cef9b477b74b8b6b86db7db6d4f0f113dc78409f78e88de1a95a048b6df54600a2b95eab0d72c4202890ad3b4e2532468491328474e28358fe6c2ce4599c3e397b99abfb06768b46f1cfbedde057dcc2d05f6004f1b1eb92eec2cbf168c0605156e5c7821861ea0da5eebf38e54f1b80de663f58db16bc9ed7d9ced16f4314b9024d373e736b04777bf6ec395d3501aa63370c83392c4c84811233f46467a72a822c73892a537e38b2b8d72f0c9d2fb3c278d8af464ce89110994f2ec31c54887a02c8d8c1019e5206474a4c748072a463a4031d28168461733b8a074079e848ddb2cdb7bb2d29678941f9bca3008cd45f2b38a3ba3b8630d6a1b189aec8b7c94929aa87d553ae2c41d3f8bb8a326e536952b8bf2488f8ef2d847dca547b5fa646984831179cbd2088727d9cbd2088726f994a5110e3e38ea296e9f043d59b3d74c204fa0b7da477a348d0867946982f6f9644e214f289a16cab4d13e9616d444b6d782e809d397ac413fa94c1beff6530c79832eb598446d3cac399907a04a4813ecedf422dbcb69f1d1956c79a0d960db225b2d084d285b2d28c83e31725a52b647b2867dc5c1fd7b0779428ebc92b78b1ca5b9e34b1e7bc6009ebce104c819aae529ededeb4755b6af1fbb6c4f97b2fd88834e9135ec4369437b2065eca9644b9fc8f6a34cb6472d5a2a6efd488fb699d7e4cd4b18b8a3d65aeb9c73567bcefedab76c4c0e423f33d581dee87637d699b9a9c4e4737da5dd94360b3c4929a59552140dad9999d64c6b662677aa003326d8b4b856ffe0d523f4e0ce8f2f54a7a878528e9aba094f5ad5d7a2094ce06016e364f6144f315ac045acbe3b4fcc3bcf768a5d3754a69d9ebc50dee014b6baf06e71e7574088a1a76d241212886610b5b97122fb5c2eec93a0c59db721cd87701b867e0cb3fef4e9afbcb82b262e0cb3e9732372a44c5f86812443d20e18640d1aaa40833b5b8bc2ca51b691a5142b26c848d0e0270a0d7af23c85d237e6c1b8f276146aa3fa4a35c306d7d57735b622238b3bd28d226d452c0134884cb52be8c7b8ad81ddcd3bdb9ee604bb6b37e7044fdd5bd75377ed4e0d76d7df456ddd5adbfa35aabbdddbed3854d74d53a7aeebba755d27ca6a276f8c7b31ea293c6a41b9bfa271029d8046ed88fb098f74b6155926ed1b1e6992c51a666aa22ce5fc68c3ce1470842761238d2318d012a12441488e14e91b40a8a3c0839f3f3f3e3e3d3d73366732590c31040902030c2fbc90810c5ca06fe468394086e4148bc5711c8e903c7372e420334b5963c32e4d7b2be42159d74159e8595c07b2ea5c38c27c324d40a6b184058f33b39c6b9d7b2accd1f97e3a2b1c57b3cceab04eeadebdf9e3d33367b21882c0f0c2055a941a90997552ff2e3fce28122223cff8e91b3a393d3e5c9171c22bf1f9f1a1475c916282d8ced07d7a90b4480206b19d21193d3366d50440fc8089d8ce1009336656ac0f4fe8d013db191ac14a530a491115dc20b633f46aaad2377472ecad0c9ea82028b633e4aac2941ae2c95292d8ce500cd3d2fc22882b63c47686bc25a51a92f894a8c8bc24c4b87225b633d4ffc063f8f639f5302a2d26f50d9d1c2518ef0ccda7ae8cd18316c42cc6b19739c7e29c2944cb30a7cf1979b28675423ce3e778868f0c3ca387043c6336028659796158930bc3aac460189387614b1f86294d0c4b825169916a5aedd9b13a98fea4f4f48a47a256c803478896ed735617d27297bf7cc3ae5a5f4221348faa6b770985d06cdf12e66c5975563856fcc26a96597eaf83b284336b61e75598caaa501621df30d51d94aaece1311c2750feb48ab92275e251fb57819ceed1539823237718a70f64be353c5eed521322a4665810b206fd2c57fcf393b51e961e2b56aaac564b59a342256baba4ac9d86913bf3484394b53365ede36a96353cd60afbc9f4348680fdf48d110604f3e91b1b1e61413498dc110634246b3a417264b6562012328d23194d820c5e0e9099816887493c5e1d1d1d1d7b20720291efed94564aa594524a29a594f241f50a8d1fee943450307f689a8408d5283c7e74c912209f509224414148901c3952a40810d0cf8f0f05f251ee033fae76d0f1d847d97e20ea3b1014d0cc12510896e4412f24ad23ac2217e8fbe17c32ad1f1e694f06f2c90fd359fd9eb3a5fe61f063cd1faae2b17ebbccdebd5a29a594524a29a594524a29a594524ae78902bdebde7574d68ae4d2d32862716bb54a18bd55669aa6f5d43899a4695aeba0da8f4f8f95a62a4c4b4a76234a22fb68c3389bc57da4551aa68d3255bc4da61f6e731cab6970e8f841811667d1649a7944f03c4fa6bcfe50debfd0eb5272a8bb07765d278fca994a52f7bea52cd861542a957a9dd7c20d057a391f46719ad67d07714ef79cef1535040584c74bd51007f5eede10eab71b874aa5b421d42b2733284446c51ef82e1422237763cdb5eb4299edbf506630cc19d27978e4c93467c66c1847bbc5381a8ea9b8089e84598b81cce79c0e645ee27c1cf8c3ada8a32a085eabddbbd70974373c7e793b3dc79e38ef04643be1713bcee9326ff77702153982242889d01222264d9c14418982c4d114242792a8282db5584fe387141e6512eaa88f3434e041d0bb76ed34a79ffe79dea9db905c1a2bb81f250271f068085d99fb33a73f8aa20883c1febf5eaf56abc562b1eebddff7711c577d1eabb2a19cbeac914a6666445184c160ff5faf57abd562b158f7deeffbba66d63a6b9d15ef0c99f495e36ae6b603e9ea16e26897b902e5ba6d5ccd5bf71cee40648b1677631fe1704148ead647dbd1114522938afab3fed0bdc3dcb67577777777f7ab562b4dea64e0cdcf0091b2568efbbe7b59ac56ebf5fa613020332d5a7169e09a9799e6e7cc2c44cbf542260ebdccdea41184471a9be9437ff463a032fd428bfd0bb44c9f022d73d38005a0d032fd2159823492dc39343fb10e90f919b105d8cd7fbc1ad05281b580abe3434107880d9e4c03c9154aca386752404667cf967426cf8f022ddcfc68800a0bd081020e1b343322ecaf16eb7e5ceeaa534f67747474eaa7101979e4c93909c89a2cd2f0065a39480b88cbc2a3e1c3ed4e40853a3cb3ac93f31ca466d451218da03b77320a8f3b23cd40a6dccca8e7f18e2d24a7258e39b28cfa3881ea69d84a1915d6c834527051d7d13a3a3a3a3a3a3a3a3ab3284b29654c562e3c7919d2d8e1ced3ff853b3dacb59d5e84798ebc3dfd8c9298e7c86b3f5aa47fbd1ad06aa9c0622de05e1ddf8702c7e1a8af362a06c293e573e4695a8cc13bb21918bc2313e7cbd0866f2c6ea145fa21ed65bed097f9425fe60b7d992ff465be9c9ee370744d8e176c43d2740d3dbd0c5b902f3762d7c8977fa7ffd13946c03258d7c89783a76fc00bcbde35f2e528adbe3c75aabdfc9e5a14b6d5e9710c712c395a58c6758dbc6cc8cb59a7a7e91c2d79fa1097bf7cc80b1e7aa17fc2b20bbfec12caefb6849525fc662a7c81214c0c67ba26c98807a4b34e4ee751c98c08fbabc5ba1f37778682cc2c259695fb2eabf53a6c4847ec0b91911bcfb4d85f783333a27818ec7fbd5ead568bc562dd7bbfefe3b8aabd6a18c8bc6c2533331c9e11c50d8b30d890c5b0164fc2e55faf56eb757916cb75f97b5bdd82b93cc7715d535bb56b6a0befc8cf503623e3435ab0ce2103cb44123ea475f0f5ef1c2460196c840f691df58a958c80657f7d48eba957ace435a4f5fbaac435a475d52b5612836543dbea152b81c1b2218ee5f5dc5057b921adb7bc5e760e182c93791ff2f2d687b43c2c5fbffc12caefb25a7cb5585721eb862f5408fb6a8843c335878299184d84b984b5fec2bd5c2e5b2d374e2cd62fcbb70239150adf4b5c2febe795089191eb6766622e8a30f641260cd6dafe827582fcf572e91ee4ad56cbe941268bc5f24e97bf97e57b90f9adc0eff21ca742b9862ed6112223a71e6466d4d0c441664e5d866118866118866138795eda1af16666aa285a188cfb4fafd7d76aa158ac7befeafb581ce7f29eafadf7c44078722b8979d72b99e91c1ade91cd6c35c78677646267b96fb7393abc2383795c0e0fefc80e9e72807847f64a7d5f8e14de91b554a82bcf62b1dc1c2c7847765b7c56395af08eec7b616199cc8795e305efc83818172c93f9b8e480c13bb2da35d4d5c232994f2b870befcc908ac132d935f3f230ad9790eb9a59d36f09bfae996785dfed9a59d335f33764754d3f15b6ba661e1582e1ab6be6bf9af953f8aee9772117c2c4ae99b735f375486b6e3878dd628bb3bbbbfbb638fb6b7176d71667639c962df6479edc58d64fb481420328d0e29c530382478116670b2dcedfb4387f34a06f344085bea1428b7d63012d4e1d2d4e145a9c386cd04cb145aec539e7691cb9f3ada3a3a3a333afa3a3a3a303854610777ea66fccc09af555993a3dbd8e0eeae029f59127a7b08e0e0ac4b2c50f476e0ff7093787375c31526e8a691491464b9848b074bf2c8d627034dfa849a59841fca0064fb2fcb999a1081264e9938464081db29c3d1c1841134859d84006443cc8d28a078a00220779944d44e88188895c454b010a8498411e25d310288e6636e4512ec98288661ef8289572ce3c908d28c96c96658ba00b7d2367629ca3e4a874ac7775452c19aa110120002000a315003038180c89c422812c89f24c95db0314000c81a84c624e99c9634914a4280a42c61862000000000000009121aa310271dbb505dee45e166a3cc1d6ecd51b99581753fbcc2a3260ba6e197f26b1426a0294ed3fa7f4031cfbfce2340985b87e807562a759160652ec54a1dfb5dcf299fd4f63d2be29e1fc7a31ddc9854a0e06164e5be9c7595e8405ab1191fc6d8cbd433fa199f5f14c7986380cb15274e780c38173a968372ccaa06595013346b8f61d0033dbdc28d09e4ccce12ae0f3850d05b5b101203d61eaa088e556b48c280d1592e927c3befcb9194711017fecde13621d130c03116f9c27d06047550cc6537ed87d4cb773849bf2432c0688427cc22e099d82a520390a950f59230ffce7bbe09fca2117c6d2789a0d39bf97a6a32e99038e80851fe27145142a08b65b38d1ec2fe4da0e03eb339b7d034c7fe640c446cb9dff4e8aef2b0cce152ac279360d6cb4c23d1f5030f94e87d3ccdff7b5f3032d76051a0a370729eda8effe3b577c5fe1711a7f939589330c2eafac8a985d7eb5e73b301a44d1157223ef8559ba7cd6e3e32378aef832a036f8c9cd22f0e1453ef799f8b0fe28e01f6cf1be89db0e71d3d489835861205e689296f0cbe8b3f000137e7647537561a9fb86a37229f92208e0f24033e0d889b8cd2dc2df5a18905953d79e08a75341a4eb913be53f20e5c0849ad90d15b43b434b6fa2408709bfcaf566af964182c522692eaf99dad5b2001299662eb2ad30528ee8bbf48ecf7655645ecbcd758eba000e9425296caf0bcf04277539d0555fc24ac5ca589efc6bdd94073683686c4e1f429ebcc40c67ae31f95df81c84991d557f6cdef825236583a1a10dd8bbed56cd9ba0d6dbd9c7a95fe42124f7d005e64d99fbcb6d69dd9a740d25b9d3d1570bd843a0c3175f7cd17037632b3910dacb63ad47dc750b289d4dce604a4c3979e353e7fb6b462613b06c9f81c764f0e8e9b21b25cd485acb77f9ebd0a09cc6d2cf0191e1392e25d9e10ba412d7d1ed9530f85a2532ceb9bd7b81628b24fc54f3b7a31a4aeffc76212b027d2f97471eca0a5936c69c904a594595925a55e52a83a243e5c146053f4e7c70813ff8d605e714d1ccc9f178770459577719c15befbe2b60cf83d778eef848d304ba416f6f0c0fcda1a2a6fe6717ee75a5514290ea13737932b1329073a5ff0184d14f132a6ced3434aaebf55580fc78108c9fd94d1648ff360812ec7a0a5c66454f98388f481ab0b0c4884960cd10c661198dee288136a4606ecfe04c109c4e824a52b1ac8979ecdbc63a7c408d26bba9ee11456f09e7983fb42056565d70404257811507487a78c4a1339e846054a512deb66a5d33f6d61704feb380aba212fa54575aa994974ef695d8918978013ef92d1c55f7f7f73aefc30a9dd43062e91dd936d1ac029d72bd4950d7dab1b72718aa02bc1c81d8c37462e5c5f9519ec03ea74fd713c2aed4d4bffde8539f6d134663a4d42571bf8bd5047c5688e15024a9c8fb76db2b6f9890c4899cbea6ec303a013cbe95f7107867bf6597525b522432ed1ad4f81147d83b4635ff382e1c4dcc02efb8c2ff33fca5d54c1fd8159e84dc1f1e054c683aed611e539cfb95aa9bb4454867885b8ce1ec31f8b605232b2ffcfe33a5f5d46d85a09915b61d521cc9edffa2b1aa441da005b530312d690e46b7e36daa9e62e754e60d543b9ce54748bf623c532236595409a857da8627167571ae51e84790d1068e15bac3904f0c2a703b5d6a18bb41e6417502460c30efd34f4fd8e8eb17bef12c95647780c00c37088cbcc85da97016bced2aacfea87fcd914b44d829f4c9249317167ac0c1b6855053be9e2c2fc43f75aecb80fa9f601884dd9ab2e14ff9300fd09e88a932ce044477200350429ea44b0522d21574ea9111cab8fed99058fb34804949b61fa94a3129ea95bae5842832a789ac66dcbba90257dc14c0ed4c4aaae76c5e015c264db3e0a4323ba7ac9f996410993ff5671aa03909c70b275daf098bbcc2ff94926dc401ad90a68cfa3ca4fab3653609de186528aba991455c396831d287d426c1947176036bac639b21b4429385c60afc9f8e3518dc763f6693fa7f221bd225ff3e3fffaf23d2612383519d3e1b158f86926e53606495d41495af587b86a0e822b8d54a0989b5b61d03a73bd871ca1b7e08de0204c362882b8b3cdc9c5d8e6718994117ce758a1587000e269024e90376dab2d2fcf49aea452ece46594f2e64b906977cb0d84049153be891f774f80f2d642696e5c1e2b96c86b85cf1c8024e347c617e14431b01064674c2a913965bcf29d30e48e473ebeb6601e85b0ea49a5c8bbb5786b03f7261e4ea3049710a261e6bad8b0417c03cebd97ab65152d018193a725af18f9b67598b4992c513ffc031c97e6de403860a9b26e575be3746164262e252980284ea6490f0c17b076be341ae086edcd7970e92652a110e22832b231b64152d140dd2a659989cd2372c160cb23793d52f31641e729fad08f49631342f08df67f7291ab52af8cdf661f07171f194120df481283ea6e278e64c4694fe4214317a1c4845458b4d3235ee123cbdcad11f3e36a906d1c6813cee6489fa4ae60d541dba94757e4bdcdf214fca6f19296b19538bf07d4e9595409252762fa0868f02541143c9b216c8dd732660ac44b8e9c1556f5163fac9de923323c4116a920cbfe541739276e4a57a7973e37000027eaf27e5397b765145479be6dce0e0dc041cdd813763573cd11625ab0e9150b5ef2234c6d1350fd3bcfcb479748dd646f3744f13950f725cc85f651120fe812e15fbaa06cc5dfef924b2c7a01b4e4886cf7d45beefd646aeac6cc2f73c7cf15c156b8f394373ea75e04c42e76f818435942352eea9d26f4c513133b3a3f207c837f373c0e2f730172b30bbb4c177f699e79138402b3fde7930c4829fb7abd4693b6be5ead7372c07465933959dd2ed0d2319f6cb36a3687f289aa1adb44ea59c9c057d76b35bc58a230eed99c2f3a29a9c1f76b428dfc1859019871940b0cb4ca906955750df0eb14ddb806ac323ef096001ee721aca57b62fa9b894397c61a2ee64234ad62ef2cbbbacbf2f90f37f160f799771999b03effe0723a3bfc1711e84a241b2d8726b1f35165223de8b4d86c5394dc3d4df2c479e48ea29c13d2a6c0ba63dc182b3d53e44c6cec590fc86118c7d9783158585e04feb023b897c9f0b7c5489484d730e3343a9d5aa07ab31fe8c0fa43a319414ca94e1a0a5973d2b7066f2cc7cda0487162c1446e8a31d3be9afe4ee08900544d323c3f46c47a4753e6bb59c107758476f8cf30755079c522250d686fc87445c8075c00a2133baed3913d6214a69017416324a59e06395ca3460431065171694ba924b4509a7cd43e06dc82f1c8ac207237777373b8b5a148d4d03c79f65a37572a8f008d73c68881d4792b61cf1331a0294a775a1c5124317996492a1971a6aa995adb8de36620dc484e057674f648c04dd43c05a68aa81879faac46715bd6092fc3012ee9786abc773d2b49edaef0ea5c2bbe9ad6f27b3fb9e478fb29e70589f9b399e53d7d1d4802cdd0c02bb679e5d7a6066c9f020d39207485fb65bcf2931f28ca8c2d00deaea9374f3449f42186e7f945e9cde5f76bb8267497778df0c79428c301c3c15d06aae3723dbf1ce4580acfacd2dd47f66c5c19222c32b3f1336d608eac3183f203194bacd57927addd7936a756beca8d138ad5658fc2d1957e2c003776396e7db108a949e0ae7cfe3faaebc083a6af9c9563184e6267d9ad2aed98b5af1f6a5af1777fca113cd3f5d90d31a68ca353ec644c8aaf5875f822461f2820da000ce88a72027884d9b8090d766946c362fcca9f7c931dad167890e1757f26024c34e9a4a565145c683deab9f8fb0b651ef71c448456924edf8d7e415e51c853b288a792285f9097eb7de7bc5ba339c783166163891962937719d7d43ee94080519e64e83b2f656f9027c08c6e908929d4c40f4cdf1434be40fc6750643a8e32d784579188a000a17141f6219f1a72a023e10f9069b4e31fb10aca0867c3079dcdffca8da88f5488184ca8724a32b1347b0aaca33c24f585dcf046286cca53938dbd6e4828192b1afed1d1c53ffe619f896d95322d907fcc7b69c2504849df2484bdb15fb6b17524d45c3f0d71d2b2be38e7e0a5704a2c56eb4d37f27a91f44bd5c0c2584c9ec06031b92f4dad7737bc1f024b06376351d86da5b4a47ffd014d4b3af6d8e6e30d33b65cf8d1c171d930f74ac58c9360a66c8ceaf651cf5401b4001b2814be4c021a82532b04972a52d257c28e1ecc01e1bf83f972c918052eca7eafbee3015491739bbe0edff09ce43f06d135563fc521ba1fc00fbfcd52b166b936a6a8b5592e07e37e09a04ff49f6a3d4a18d9059da301c36fe9c6489694826589005096cb9e6da630ac9e77491ab34c19039e0302abb05487a0c35e9ccca61d6439663618e8ef68a150e6542080dbdf666ab3b647a228c734e382149e85a2472705f68709c579fe90a43077f91b5df8bdd6cb6712a014dd76048c208181705925930978c3b64a6557cf0fa4c21d0682a2cef0ddeb44144e32c1f509f557d9499eed551ee46f05029bef7ce5a41f4cd0c51a2535e93fac9789d2c16c3f0cde34ead2786e69eb82d976a2240223d3faff5cab93d6ff3367fe04d04fc64377ea88f2a2da7312d090eb25835d6572f3fc85f57988fe6a12ceb538d037134d0efa187929be8fea4338a0fac64ae869aaccb15ddfa44d73fdb31d59792737ad2dc3f12f6b0084f33c561db9bb2f02510a06c6ac395b2cbc90ada03336d4ce4e2d3df1ebbd8d8ae9f5161a41183833379b9f22240c3ecb48db5345801e061ebfeac24ad581f4a5c7ef615305fbb95cf20cf9b2ec34c4b00935256e4f01a8328fe95c8c6295e965c14fa3272aa1beffd8ea213903c4ee4e59d4ba06c247fb114ed4c62ca89e54b2e6a4caeb8121b289ed8b4cd9c058a6a9129e9abfd2eaaf196851a741cc40d713d6bbba67eec734c0c43e1479f830e146119ece1119f4107a59391ea6083c1b649bfae73b8d260cad8d499e6f1e45a6d6d3f9dbad78eedc42405508867c9ba6ff68b3ea372e49be3729fd1ecfa66bee833491ebef9acf84ccdb4f63567ae1e7daa7bccf7a4fc4e580bd89f8a7311f2587e59f8d58671b69bb6c512fa55e9df687bedddf6b49898a9016ba35824641f07b5d10b6615cd566d12ef0d006a9399b5cfbb7e0763a8119a09384b9cb229e3a567941ff0cb19e91d119af3f07772d630ea2543e669d0833a980a253438578daac02602cd4db8ed97868a3f0827d8aae114b02b1167863d63f72c79eb6a140f638e4dab09449c041c0d0de5974af36c0bf14085ad301e559335c52bb76fb9d144532b7424a9c0a38deaf044a235089bec56591f4136a5dc1cf25364cc289b5de6051d2c74edf965924ea7fed9476fb946af8415a8ba2c33899cf0a778ffd531e15d1d6dc99b09e519e6bbfe11fef80d69ec3a0c2618914208260357228d4beb6ed7949e2e0f84cedb3839b27d57483c6f5344f47d4024495be5b3b47aa1427e2b566bcf2f51c020815225fc6e8e111c131436e1e356ecd420b0db24380c54496275ca40838de15923c776bde76204c58218aab91dd89de689b7da4441bfef136b1cf54b830a6d5c494c842659f07487c1d00359294d6f17f5e19f2fb03ef65b9ffc2f42835abce0294b3a01628cfadc1c8111e462b517c644861cf88add7d064bbdc133952212093bcc464203fb4610aa8af06bb9061c1fe31796cf31464ce5401604fe1b44dc59d8089af18854795a8c191fdc99e07b9fffc25bd6b4e86355ae734039be84717f22e3dd4e4d1c05a02a9f93a6808d23fb86657b520693909726d23ac3c5954d705907addabe3f9d9419c8b004310a4de11fe9008c8c238ed9e52efee8e92b891704a365f94b6f7f24c909f7d958c57e24d12c87eb8077a62a97630c3f6d51793e0381bc662fa1c54c9c663cb6d4a21352e7f606d5dc06ac6bd66dd5666a74f8cedc28c2cff684b1dc9dd5ee2a6f7928949b59380ff1cd57dd6be325309dca610bf2a19335abf619b7d62c9b953d30f464e53963b07ca4c6f02dbbbd6b9939724bb25ef355753271821b42982cccba2318e5885baf6663b4abe2d5a93fe3eaa8829525665f00c7ffb644fe986d034f11fc7c88b6050b1572b14d136bc5cf58076b7be7f7cfd9ce3abc56481ee47bfa375fb78cfefaf3c12f62259862e99ad20ca0a6054b6790b6462c317ffa9f94460c92e477ca1defd54bcc1921d529d2f0a0c3ed37d34bf55f63aacb05c817882ad6d732ea015eb4317de033f367f3a10fac89c030da01cd0da3246447671e5404de2d94f9873f3c1427ccc64672be9a0521809fd1a49bbfb8f5e82f67f2591160c44e603face8a2395a0b5097b4a0db2261f68ee345a466d0020d5dc8e5bee2fd0f2068880d0bd2750ce2fae516ff71902dcc074d15ec0f8f7b6c25390364e2ffb3c49302c34d1343fba8a3054f45f840a1062383bae3b2504889adcdb12a915a408299c3ec5d0f84e4d314247c629a9a7355832f6b506f310069f21f7e1c0115d93696d418b7da1ffc61927e5313fac3ae1c9784d4519dc6c13cf1cf1a02422d257ecdf6d05af6258d676be9f32fafbada21cb5a2d4ad96303179cc94dcc4b495a3e9909c6e9b8b0d2bb91ce4aa611ee549d4349c3336e9c0352589efa5ec4d958fa0f55be733b8d933453bbc199a8da431f3545a9cb86275b56326de89995232304a561cb16215384c60969e73963f5baa2ddeb97c78f246cd11990e64cf2761e546feb880a8162267781a7e8f278e0d8a630a85d3ffc3ee1bea77afaca847efe5ca00d5d33c5b3f069324517624f7b18326053e75ee470d6acdeb33a9b22271258c7ac8eb248ab6d7c24ba3ac4a3c1e82a8d757361d73c85425569d0bde46ca249e86e2ea61490b558d2fa227f1c5a769445070e3814e6414dfcba784aa39b46d0ce71cb576c45898a2f5eeed9e3f2d77ae412e3577451488effeccfea731edca5607c340effb92fec0b282301838a80a20193a54820d14bc0bc369f628c7121e93b6262be6ed25e4367cc9421d377c4c47cdda4bd86ce18dd78faec89ae1bec96a3c7de79d60a3dc54d21e8b8feb284fb01d3b0580b041a10c8b0802c54281fa48a34fcf5ef30328ccbe1f877f3e44448f138f18a5da10ce2f6314d6d342216481b7254b4d22436f73be321ac2b569d1b37a950d3b2e6a3a4b47865ab4f4b7bffc5bbea16508abd5490ca994ad23fa5e02807c3b0635631d968a01fe44ac7e00e3f29afd06f71d7c7ca38591fc02104951ea9139b0d2d811c15cab0c8992b0c95a9cd53fbb46f10df4aa80471b2464d4cf5d04c5a54305be3525b73372ec759548c56797492308530fdc82b4e7e53959d2d85b06a2d5fd1f2a6e7ca1dfc1089d2804c92b3f7e5c68e1b18893b71d8f3c85b3a0debcfa876fb41093216d43d55b7e21a36700a3999af772fffa877721df1407f9c4a1d59bdecdff473ea3e72cbaf7f10fd11c138c2c5993c12e4b656d3df543c0546a33069f7b893089c74df5e5770a5a0fe962682cd3220d8e15f8850c943de09ba22d45440cdf0b16517c94d89b6d15fe02db88f2abc3288eb393ad0da45fc72a63e84394f5769d95e7dcd400c04cfb3134d8c1a016a28da34f44600b1b002c934d629d10acdb374c74b692157089d67fdd903556eac992d59fe94f258a5ca6d82f19d17477a1c19f5225235a9589112125e631e1af77433d9004d8dcb335cd2e569a82c989889901488dfd89d674f81121940df522fc2d3ad7fb785daecc6d7f037472084677d597f586c46d5fc5d2276d00a0b5ad77ad9421fd6cada94dc8c79a8a84d1d86d1f98ffec907f8530a08c2dd289546561b24526511f4d231375c97974243c74ea6bfa6fd57cd084430d713bc43012e7c3a36e818040afbc983f01c5f4963c4fb9e5806e1ea9ed36a0c2d9d984c87f1fce771e6bcb05eaf45c3bc75f04f17eed6c6c7fe2f1aad040829866ee8122c57102df800c1d71319a276bd59580147e4d287ef637b3f9fbedc93dfbd8691fe3b9dfad92cabf200da813c2d10969705e351705086ff6d33d86f067f2f1e395ba99492ce2027c6efa9c583cd3f1f7abab05d934857db508e03254ab3750e7bbd2469e69a62bedd48a8faf3e321d0a74fbfef29c084eae0d3850e19f02958a0bfd2c42dd743bf6b406318e49d1519a5064c6c494f8c57b8eef8160f7f5a024a38efc05e91d570c1b3e101e3ac2ca5507c71ea518a67f583d922d7b0a8b12fa4126a4ac790764f82c6e6a6832b9e9f211eb01205929bff1a74566c8c7cc68ddaa52e2d4470e3c0b91a60deef4a53c5bd403adc11ada50581d8de88b7cc43454c47e1d984752596dd85ac32973ae6796e7840880995ad46195752b1a2b531602564c42bbb8a1f660a7417b7c40a39ce7f5e0a53c0aac8d414c34211db339e8035d2d203feb53cf41d3e8a361fa0d398b11c2a0a525f5b0ae2dd2882ff8e6fd3b552baeba5a034f1625b4cc8cc294acf87318c06a1b4c63a0e4d25eca4ece3a465a483c361bcb11f0c240b42a1a25ce8f86d1f40703493d646a51f2b78ee20d49aa737bf4b2ff56f5bbef686f9eb821670ce0b63994868f6be686f02463f3b188cf674300a22133fe11e3fd2acc1b46a20777f533445c5051a6e8827229b214b12d81db34f3ddafc55dfcae231d1ae95c0da53c7d47b8653bce7c06d9efb2cf099e6bb6c2848a31559e00d94978f814eeb69e523a4c44c0f681552b25517cc295149b0b3f9d6bda366a015c80f31ae5cd8c3a85ed3c7d6570d18f550d8a47dac7d58ad5a9c6eb24726f72ffa0f36409488ee38e0ab35850d9765463346870121a40c00187db17d6766f780a4c4961b4495c8704391070d19535458c83f76b30f8e202a3183285151f7d2a9fd4b53387fdb64638c8a7cd501ed37b4a3db9c1898754ddf51fa218fc300a0f2095370fdd1f7b2cfc85524cb235955cf09c5d1d63c92e61d30abc015345bdd749848c0e0b4aed53c42695157270774820987c7e6e4bcca9fd56577631031add55153b81bdea7199af78870a7aff65aded419a563a478e7e4806412237cfacdfa0e79df8bad05dfe3046e54416d5345c763b758e702a35ee34561fd11e9ceda9e809dc76a3cb38e81919e0d8a11935100669a5aafddb80bfa8734c291d297990fc6740d5ad55a4d4d1ad43209693f4b7dab31291216481178097fd650a3fd378397470269d0b0facaaa2a436828ede5ef01effbf5869f7b33012ca3e27451614a6d5dbcf341e1d2ae82bba921a8ecc6242511b80fbe59fdbdb55416be4b8683b555d4acbc5dd6b58af1a59cff5a01ab5b00e6bb8ce7d4983676fd6884fa907ee63aea7668f53820e17ffa9168d060adedf92bf30982458a4b672b689b2ca34b0fd139bbef320b573d24ab43a43a357e6ce9963f07595a647292f626ffa1be9df537c25a98dc72815027097d047190c94136838edf443b87ca64c11aff68b282d58748f1d79f285388d7ead31cde65978c2136109161e69d0ee390923f63c9cbcdf4cdfeb979de2350332ceb25068b4ac6769899ac86a50f7de601e86163846af0c371d28efb60359258008e126fd26f50400cc59db96d53f2337b8211c0a8464d520c32eae157a3002d99468c00d6f6da0c454ede5b656a5bd7538fadb4de8c348593a2e4012b43aac2b292a826b94dacbc9db531a621b4179b4087b2051253ebac94765c64d36e03405d74c8bca411fc24046a08053e35a49077b170c71c5b4e1bb3be5df93b1be5b7801440d61125d927e0225f83ae52996846470912c2b6737635b15d800e7682d42f0a3ebc685732ab6eba22ba7d36f8470d1e07974ef7b23435532b4a008d4c0bec0a1d4d11ef89c631ebc8eeb7d0e3d84072a61273a3e0e3bd8e9915548e3cc00801fb963fc0c7360c25dc13d3ed2c16ac3870bfba73c4dd3b66789cdb77e35234d6da63d73a6975e8eab5dd2e9993393d78628781e617b9ebebd9094f1dcccf0e4f0f54e85e942520b3fbb3003e0b677db6390d48eff94714bb5a98b3ab87fab33f49912eb4ebb310ce3aafe046dac94563763b3e944f5ed353b9defb97c9abdf3f9fcd030b80de9e9f099d006f6b292ab5646384f8387014dfd0d48e2843cf7811ad3d1d3ea0b348a8eb194066fa635eb117f1979dfa28c766aaf932d96d8fed22d637cb8f9dbca4e9ab03dec299eaddf1abad0641c79e850a931251d0662895ab2a8cdb7c4b57b2108ad6f33bdb187abf67d1d2461bf419454319041b9867d97a7da51d80f276ce88f0f5dcea5ec97c20a813ad83eca2e11471b8bd7774d75bd7bc2873a9b1b706d529bfb339d17f68177f874088bb295da553855848a29043ea37a0a2e79a124773ea6afb5d9c9c87525603043823ed5da03e25c02b1552cc66c28ac4a294e8648f387f70b24e96f036cb648c4dcb6831a5b023c44a94e08ae56fe93bc73242cdad83d0d2a9a9e5fedab3b1f62431f5c12db8b76ed8c59a3e4dcc052cfec66a0af4b49e2eaff97e8b2150b734ce54c7dfd6ade284722e531c782ca95a306a2c7ad83f09099f46ffca2720016898a05f65c62961086fd23ee2ac10d13d1b57de7a8e4e64f1d44adb835b2fd884300a3078e8101660946cc715d6f2b02abba0009845ec680089d164a01713e7474b9ea86258c29fb5f90f24ff281cafbb482f592acce4a931edac36801e6137b1d7d8c82e0de2b49b2ffab1472f5d4c8f14b11ad5f3cdb6c8afd2c36347278a74aeebcc8efa70e9fb57d1ae317d4771dad7e25063626e588479ef9f8bdee646c0195dd4c561b8c05f32e2e801a3445ebbc1f7b93d8e550573334c9c8b9472cfb77ceec51beef6d2d8f49e79e6db2926267f098dd66f29ad00ccb927e6a5716cb3e56de047bc40c43c0cb9e2a3828b880d8f3cdadf5ddd7d2ebabee46c26c7035993db505dc7e0342ee063053951b60c78d40deacc8cdbc2c9e31c1ed65799774430abf10d00a5a886127502d7fbb5c5440dc2b6569f0c56c3667ec366b2cdb6d0078e8549f59263c46be230fef2cc2cef262d218809ab8b8e117e48aa601b05e0874097e84f51a548bc4f7702e0e69fe451b5001562212d083cfb1e812448f6db31b8e704aafd7654aa0c57c944d68760c685a96908e510884f243f1bdd88fe9bd990810d989639ebd6b963e3aaf73ccb96350302c6e2124b3ccf7aa91f57909d5f5df956971751f4d265e3618fc9333d939b67f20efd10e97983f2c6d2bba508796fc09ba98f786d276e4584e53ea68f204f086958c436a5c51dddcdf0256d35edf7f104b53dd7fcc2d9cba3c33cce1b051d09ca87c398483a2de1112f1a81997625a5834e00d9ef978f47f4b504caf3720ec009555bc5203b0c56e3ad5ad876bfb2544e949779d4d5f4b7ad72df7a0df737ca9182ed198b2b3a8f09065600f932df942dc648a078b16f49d310c7bb6fddc1b0861b4051ae9be45d38246231c1f889e90c57836cca9da17f8c55f7be2aa5e938c260fcd7d5c93ae7ee8e9b86f30a7939e2b87a997056d23672037d97cc7527084deeef55fdafe2e9bdf252e61aa372ca177da1d8d6964d22a1aaef99d55b1945d21cbfb27eee3ba0dcad5593351bb9dd20ae13a08bc0600610d7c4ce73fb14073810b6304063a65495613622f2e34c6100d625875b62d144b9cb6a24af656ea0813decb5c52e2569ae687da3e0290f42a70eabab50a5268ecfdeef1dc13b4d79784664176bff9208516a4ad1dcc7a1cad3e8d9b08be72335f49545142bce7181709c56e0c1eba2e3c49380ebf17c7ad9735e9bdb020552c2490df1a1b1f0e97826b0fbfd546caaa433f5b803f37365f0f5d78738b90ba8dfb3b7113343d3abb89a5ebd63d1e6a23be676bad51638f16d514b6c5b55f9d42864a71f4bc91b91287c2c2691e62e6a6f52bd4ea336ea5e1ef6e7861a22499d047a163873ebf55fc1345fd793c4487d9b8ed6c1736f6a171f6d058ac42f609e3e1c76935dea33762ccefad1b446d6babbb85f52a7888a3c85b508337ed7b8c94b7d9a68529a4bea959785b365bd0dc1dbac73b27a507e60680a583fb126f7df96ab18d8bcf70c46e16ab2e49c516b545b83295bbc282b7f5f26e5c47720f2f3f6ec7fd752593cc3a73c95eb51c4395c010401a41286c7ee34e9221e9d232a70841d279fcce7f343ee998dda979e318201bcddac03fc18f95321742fc078b4448ce22e3d0357135b78a595960eec4afaadd6ee68927206e59a9837d55c2357fefddee2a7082c2a4e3dd0a8fc997e2df17c1ac23b51997647150160f5b1834a4d9a7fc34b771cb68ec5c8eafd4e9deec57d337271b4542c3a27bb9292ba45a2643e6f368ffbd8b749eb3f537c60b014b156f4e87f2f61d2cd3b328a7d0362d9bdb674cdf755f9e518b111e1c363835263a4aebcecb6920cdc887c71d6de7e545b9d0aed5d4da7295a9e52fa84cb7a1093b60c2aac808a00845a88e37541a4f25f00fb3dc33579248cfa1ffe2b853df86700e8f222a7f438903a297e5d24bc30edf6bb0f98eee75e3799534a3f2baf8793e2427298fd17a63e687dba5cf3d2d8853c3279fc1aabcd233534a091feb402995341675e30a15387c956e9639f431355ff20b1c00d8d30a36632eae09135be795fee4a9bbee96109409fe3e33ae3cbc154c3cb7084b5064d1e80d9d94cf0fc9fce2d5525ad9d2ad993bf2f1f5a95c09547ca9da03a60a5f1638e494aa1ec3daf7edde4520c53e9db75a362142285a7e2022c43ec69dd4bb6053d90847915d330f5c2c2149d83228803db46d6c3d487f4a5e46f0dd031a4e81b269001c41b1fe3037e8538e2663438efde8d4e4cc37bda4ca2dd3c9af3326a852b92bbcc02ecee488b1158f0c85976d85ee57b1a96cdc18bacd15b8ce32db81c35f8849f66835d7de8838b1cb0c732f32a57f9308877cf0016939207d2677124f00d1e6e653beaa84b009962c1a9b912bf43f88087742dba9b96c9b8284048cd3b62b8645581628847fc63451d5feae6f23a7d9db662e510f26abaf9daccea8c535584fe39cf86b0ac9c9a1dc14faa8ee9eceb9f41a2bd84490cc2e6104e7741a89dcca1819df75d72bb5ff07899f0c123c0f838d14929305626a9673d0d699d27e4d166edef308b4da94d4fca40904e2a09aef5945a96e2f0f20c81d3526d402a125abcc660c00914eedc3f70570672705acdc47eb9c9b6530e913afbfddbe53c681bd30582b9289c9e97238cc4fa65f18eaf4f114b9ba493b318a2ce3da9ba4c483aed933cc17fa93ae8854750bce5946b8a075400243169c408da8fe91b5aba5e1c6e4106d29adb0c708b0dccbcd337a52038388fb07410f48789391d707cfbd164721d89276730db6c0f524e68b088f9242ff927f9c894ba890e8008f051e8f889ed7430ef28dbeda16978943cad04758eef6be023d34d5b88c66e40a6aaea706e830c3198f65bff8860ff615b6f7deb38fa40f353fb964c1d91b012773e6b3c54480b0c82105131742b493da39fb7f6c69283adf74b49f25dac1dc47ea8f7fc6198890080d05c4b8cbae48e57af3225d278c493216982ce2da41583e0307c36fc15bc2f085aff943858a5b1979ad956bbfd262d472dd72e2ec8c337bfebd223ab3286ed86a9869f754ca2320f4d7cbb0d47aaf65cc06580825c08885e870819d201b1243d3468f35ffa99c3b21c4a9f483ffcdd72bd86e990a6d773cf91d6ebe70c8c548a90b164f167eb7a82b82f3b149e1dc664cf027e42272b2060333cb745e28b4c34b0e093b52798135c9ee61caeaf49aadb8b41b93502c0846571c79948f46725c85cba3214641625de0a3e906ec3f6c3d56f3093c989395364e486be9c6933f7f200a5ba9d51177c1dc9ac07cbc89c4c37168849c5c0d9aa4ef1812a3c01028f9a84162cfe77cb4193a3e810401b8c7f1edd3c3a2baef624218064605df7847d23485d80033780939fc1ce02ba77adfd45532c783b44ad14d7c332df9d3dd278c5b25e76cf0aaeacc9d45e965568a9a10590aecc4c631e0d3ab34898c6ce25025fe907168f58221ed699cd89865073792a6bde5e14cc2cd5b689e223cd2cd7ae34658e686d756075551c484700f7b214a116a3724148cc2462a77aa35962c01891c49712d4de54d25078d49ec925fd3fc93b07326acaefa78f1f7d57736abf6a2eaef2e5bd748c539a883378d75d3e01d78e24fa04d483516038b3936201186ce67b5f50e169066416b007e20bb106a20f9e84893468bde58811841865dd82a816ea988cf984b30fbf813ad60afc61e97c22ce16d5a0ffe59e22f9fc0809c6c23cdeaa0e06f4bd3c550a3d62f779f203413c768214cda370c960098e3ab582cdc127a3643f5fa1f4dc939d228bdf9cb3455f6d2899e0df85988ca44731135fa8b9512080e66f43e8f1411933f649e63e9320e08c802b9d0b05f579c4ae350588b698ab2c8f4a2a9185b3a0140c0c2321d3bc3206908583762559a31540d86d201c1ea0c1f0ac51b9e57affe289d5f0f91703915635744daa130e958632dfc8980d280abe10604a128c9d18097fc5b37cc93acb2db5cbbe4d33732c88825912fd18cbc24ce6741b0ee7509a500108ac4905e4591fbbcf52e90ac7fef5215a35a2076c922eed838f7a559e41bf9a1b6cb825f8bafa45878ce88e35eec71b4e393a18f9626301657675d5fb26dd526d2813ee3765cce736335800829f60c1e16ccd37ff39b15d0addb94c617ac4906704b26097f8c05910284462fe65c8d27d4af318006944d4a2344cdb9c83c10db411524e55396c460180133360e9116e696b3c92dd3524904a74977d400e723b6d55e3758a9580e55da76c46bbc85d6b24b84b38b90145dad109c77a0cf15d11f6a949d189077272ccdda02c4610b9243709c8668ca833812e722f00d29ad3f41423a30ba1d853ef81f8cd9fe1462f5353c4972e505a1615e66466683bc3ca1253757dbd6079d06ebc2ae42fd943d1f3e577b6c12c68e539459a4eedf8981c9a4e6d2945f4a56e2791fe2a15dd057a87abc5ccc10bc201b2b2fca43f86acebf3084c79a9bcac90776147348e952dcb46c1be88dc1a7d8f80d00366ed69c193485ad84736cd61d250c9f2812366a844613b0efa849793df93f7585b030fe447ea4a3a3db39059ae2f7314b1f1e8a4f6ef22ce0706c32ad40682a1963fc6876e39a7c86ff716bde4a5b3644fdfae452ed055a03bcbedd04f8dae65b48a9a10528dde1097d8bf918c9dd6930fd8a0bd8d2892f615b863783bd760c3342718e3ab66b2f6c26e59a0bdeb1947c01b60d748bde97ec3038d02b165cd70a4599242cd6ad1f96262ca0c3328e095df6af83266a39b70ed6018016b80f5f405ca051f260bc7b27eefab87442f65bdddffcba125813394f399b0703b1f0e0b442322262d0990a2c399389d6bcd81703d3c0b81196e4b7a99d3e1afcce2ae10603ec31c756fb401b6c315dc360c177455ec12ca30845a0bab87862ed426676b25d2536d55059856be326a724d129f42195f3d1507754e32bada6e2acaa54ecd0a4d618c8c7fcec6136bf21ad1a061c1c085bb0b05ec25b831e8b0a7f01bb9a6f2de8dfd0e3a2cdf41101674a51589b1804370ec0a5e7162a8e1aae4b7991afeb5291ee6fdc4a329fb1800a967bcd33b10705dbc93ec7efccd6feea312f857d66fe079bfbfcb2d43821b088846939b5120e65b4b204dd87a7f26597db5f7d4d95cdaea937bb4a692fce56be27bfa19f8562a7054028c920a94ce98556a096565d0a9a1958869429b0ec707e3accbaa1e5665711a08c7735a2a9f1937b9934c9ca08c2f388987fa93aaae367ac6e6d616125692a6720d173ad4431989666961d1ca8db4f70be06c029761a1b4b70be9efe485e41ec25f6a229987722038951340830599ce76f5bb8d75a8dfb6d9baa19ea119848d6328981ba04deda034be70e418e2b5fe1831122988a70a4464213dcf442168f50d5ace6740a73a1c5c62270708b55faa5360fc69343a6dfbc5819f7372c744cb58ac64d059b1889c806add67d8db9aa86735f9444dd10ed067a82db14768e51a625e032cd020128bb0cda2aaf05aeea33091c14ae697a30e92c0c2fe00d8cdcb32b2664c99ad9d9e45451e9d9638849182b9ecc7722653427d09249216cd6a41164626a3d642db6fa036a34b19314a06178bf8437ba09c9826961f612701e931130ebe601b8b292f9ec1681359398e484acf0a85830f58c620c8bc3d2ed18d9ab7f8c07c5c705ffbc90dbcb009df1bfe1cc6e598d9f0df679b0c6576a71b89f24fc3888cb7afe177f870fd65d77c4562b77fec63a007fc7f4c8119a4d672023a2362ae2206e43d1f5cd8865d7e11c3f745fe61e700e2be057fc397ea585c06ef7a37a553f847ad55b84f382161abe03a0b7fa6e3b0cc4a1e08b976e109422a1ac3c72788632c43adf4e4e7363e8711f6d78f6cc15ebffb44381e7960b06e914bd5d9f8a31a87671cc80d19d4b1a89d33964ffbcb19ca19603efe5e4b02867fd3a684eec585c480403594872fda58780675ec358314259de0a0c117d3389e6bfe717ec17ea2ab8867034622ca18bec4321ef5e0d4ee423911b7e8808f5df24f5aa0e2ab76da4fb5027f5f841d31ebe12a5523ea0c52491fe60d68995a01ea872b2b741f987b060f8bb5be0635911b182bbf5c940ce986ddb5364a03daed2ccd9f5b493216139db4c34e7412e5871b7c8f76650e3f54a34f582830fe111bf0be57404af16bae540f31b69b0725bbb34080a00a20231a9affb906265a09849f3c03b10027a3189a7f91ff13fc35e39744b04d3a8691140580705d57532bcc1eafb8ee1e3b6b108f203f130ba874751ef7ad7ae704a2e8a59623891e5adc7b8637da11a5b855f7c90e2ec8f676b74eebf3f30da1e5b0f071a2362e25a1d1369d0c636aa6006c1b9050157be9c68d09f1dee1033cf00b0132ff674c10ac01e63df63d28c51ddb86ccd73196b6f2a7f583bbd6b36c0b14aa0608bf2d2598a2e44db5e66405854cdf1ea8e73573689e41ad59a0ea293afae2ad61ee6e21f2344b7f8f68668d67e1397124ba4b054bcd884f09d5b0a476a09d6c49d0c73b1769beff0fb183cbc71a70364041c12cc890897414b9d3a95a1b303df52782617e2cf2e729888b5bf28af0db504d4a0ad4607303064578fc316b56914f3db4cd196440d350a0a4a451e251840488efa6e23e50db06e794e44cdd4c5bfc90436530a343601c04868fff55b2d520aca200c8a41784a50168bc9cc013192fb0ea024d45b27ad33199664ca6bb1511bcc7e805ed256ecf953e44bd5531dde82dbe24eea8c228d2d615f13600147d907994577329c1b4f0cfb21fb656c0339a22c09c972f50a3faa7db55e46a5e80c6d5bc2ad21c01d4f16dc0a0a645d7283f3e10b194cde8132656a828abd79a84a9f18e5561768bed40b037a09360e0371ef55b610f524c28bd698ab6bb18a4920891e56c5e7b4704a206f362a67c946e1dfb16842c6d86e015235fea22ed1bcc5ab595d644546714a54f94750afc597e5650aa1e70311ea6eeb0b35ab969129a4ac3296cc318779f24e44a1acb9daa509cec5ea88c38b98aa858e22f16e324e8e9ee0ad56ea370f8b15b8a1d639b6daeb1dbc09c1843bed3ff02afecf16d91171a6021da4c20d7a6d0f2a61c0bb08540cea138571c238d1886ca6670b6aa702a318c9ced37766443ca5da2795e88a8e21b7362bf222a7abfecc172617dd03e77865071a8db7740633d4ae9164f22236bc238aae6ae212c0ba906f30bf402873873191f764b64e47fc2aca751d1e205bc19216fa33c911f7febe821903874c727eff1d3979260600855d7bd3971a681d607595202c5db7f6833b5d4c59fcc995863f4c54a1bd5ba9761d4f4bb30689409b3e8a41c172034f07d4c46bea3bd0d43c6f12d1fe049d125e06779f0e3e376e8eff3e5cc07fb2f52e4a6cf3a9b959160f30942bfa226ad9adf6eb6f36089723df0e107092a781290a117deccf171bd3b3d1b70c279d64ae3b494aa7742deb46e41a6031628a939d5d3613227ddfbc1c34d48a4decb8f954a10ce9ca1fe7a2d45926b5f110fde60c17e5e139c640f1aacb67caae6e860b3ba8726c4115d24f860acba51c6d01f135765292cf848056362fb814ba7d4c554d77ad7d153fdaf97516e4d940112c3f7b4cbf6bbe5343a1fbd958be835349ee133f91505e561f4065381482ab6bb8e221df8dfdf45ba9433f0c174be8fdb624253114ef02cfb1c84bb720c4fb11d0e8339b72924b02f68ad1cbbcd60b3c4b29f57a876fee9c35b40c066cc0e56d0c513c384fbbf87b16db5299a826653debdee296105dcda377501810408a9e6435b74f132b147a0cc3f8c2d63e94e5ebd9840845e5909325597d5c31d03f9a0ad9e617d878a08b4c98e2acf49b3c4cad79f50b75e93b5b1754b94601ca02adec6882fa21004a5f47384eeb5590baa6a0076448a048f9eb04757807cf71a91ff8548144259a1d3738eb46e248f880bd65e2fa1b35b066d76f9bdef37219bff8a87db4dddbd23d304997079a21684490d8116cb08a51b12151781df6a0a726f642df9fdfa4251116873c84fef3679b180a3caaa85426c771f77a6bc7fbe787024012fc819d52d054bdb496694ef47f08d93da22b29ab08f83250cba989c662f8296c8fed903af16f746572de6c0c1440934db7f811264341bcfdfce6b44d5ce10703562ba28d2181affe82dab0e69d4008683818979f2fdcc2c9c60a980b58634b214b8635551fa5ab7d492b873f30da05a97266a8a6854a4d3a182e51783b8411d9288001ef933e93c813f3a06d1211a0bad89ea4ca8dd68312da41da38a6cea234fd1b5c5ece404a46b9aa6e7599d7d0a50cafce48ee8fe31a7e3b5477191b6c47657cbea4a728cdd5ee7d47cbe60cf3a7a2cbe06889b6071298b43ac915b702d8a51c9b47679b3a41d26424a434a3014955fc81a0acfb8ce6d161ed1f17f866b31565ed511558aa12ce1046a9f7e71d26c0161a83f8f44e9d156de9ab5a94139762e771bb176bb7aca574809654249d42373a6da2760674d318a07109278f9a8e2463d714213c7638bb5e196ed7e03365950b2838bfc3c6c7091d3dd4508aa74c026a851103a3ff444bc1d910c5bbb36b75757d3ae513fadcc1a8661214b70ec6f2450c08dfdad4c9e4612bcd25c526f02026f51e60593c900c174a73670ca6d51a9c33db1b3cb73855b504c0e3b4c6b306769a1a3956cf6b6b0a87e686d078afe4859c875fce9028d1ec4b79f04e9c6ac865821823b28a0f6f3540c5b2974232d19f42accc539812c2a09d0a7b23967a82d32b1f6ce200745e40defed69856d81a2ca8f4db28eed1be6f1a4e77ac09b11faa0a3e574faa974e98bdd1395607d81663cac7e90b3546ec83e1158e347a807f2e1b2e42cfaa481bf115428379e83edb5a1e36becb8a6374ba535b722be9c5501fb3cfcfde09176c055f3d514439e3ed55b180e860b26a5397f423ad45926c88330c5f3fed239eee518d4c7b42cd2cf1d757f902d97d86b5a95c0aedcf3e9b93aa8e225baa415f7c4ddd75b573a94943f5d403487fe579162f79fba83106da053c6201cdc5a06be4ba36eeec412987e84143400d2df27ef42122fa3b158851dbaa742af3020a3f1aa744de71be8c82235788af4671979e4e7e351406bae84fd66cf29f201df701375520c2cf15a1f9be16680956dba475f60c24ee828fe232625a66d9c738fe6b8ce95e761807228ea73812183e13437ca8f6c8380b90131a90ce00656a69088a9f6ca0eae4544f94ef5abfc5aa4267c7df34540eb2710fce12ecbbefb8978edfbbaede0d69ad5f7e9d1cb0f8fb5c9223c44df964b31ffff5eedafce97e4670814023719f6106b9cb6d5bc740b39fbb819bf0bd9713fac0e1ec81d78bb135999487e09522c3fed33721f86ded3e7700d678ecc88d042920a1b66aeb25f81f55b43707c45094b7c72374d4156b80182a3b69aca73a342216a85dbf668eb8e20b6c3bdf010a9cfcad621d08184f2c3810446e09ea07a87e93cac1e5631caa0b6a9e6352703a79808e8b2d17b11f18949aeb66b43e692b3558adfaf486ff9cc59d7ca8bb9a185cb127e3ce0ad2012eea83f0dde754e5840ef6f0b0889c1d3cb060b1ee08843049c10e2084fd3be4f720716817d3a40d26b1ffa31b960319f7f34458cf6e3576ad086d0b07da1264a6bcf7e18dd2ccbb4866aa6273ed6d6376dd5dcd0fc5db77a7f331dc7a37732f988d292a3b41c4e80816fc244b9de3fd9ee791357bd8fe7a2d0e3cdb99230745d06d4eae1e8d5e93bd6a85ab6f704c425148d55a84f4186bbe770d1100b560eedd10f2155d468110b97399fcf2a1a7a2a3af07fa204725b2580cb9e12f8d2f9b0a8defbd89d903fe097b5843b7c5495d6ba919a7f207d670e5dedbdc3af37485781a4048b9dfee9b0940e3cf1fe98d48ac0e5750ff0ef742c5159e30517cda980531e95dfc5b3f38291c0cfbdffc4d0a421fb1ca00fcbbf58b1820bf8a2cc4e88f5a2a833ec2c9750f3d7dd72b491e7b72a9cbf2ede90f7421591cfc24966c2a9f83719ca047a1ce8612180bc720aa820d1e634eeae203812e0e26d59bbaba6f6f3ddba7ddcf38cca6fd83391093d8e7691a26216e8b16f00d089637641c98b30cfa81ba387fa620cd6c5932eda8809f8937fde33138d807f545e5086ff03b5fbb0b485488cf2ddd4056b5101a005374317edf90667b7f40a53ea6f8cd0a2ab7fd37bfcd759f5805750ce8912a8782b32a80586b5c27a4f1bc44e22341ae5a3aa57c7d2b7618d4b6fe6cbd6e0a0c7a0879950cc891e3db53ede4eef411565cc5dadf1f6b26e437e1e2834f99a280990c964770fb1f0f54044728da375850ebd4e745a20077229528a2ffaf276d93aaa308afa579fc83ccd94cb1595a4e9eea61ee8e685c6fe82dedebb5463d3893fe53ce423a4a960f644f65069017237ff0c948493a17b490e3c64e809459a05d7fa6a2cd5fc684ad1f2683e724d25941cfcd72c901177f29b8f6483aa5b670b9689f5aa39defbad7ba2f5639b971fcf24c3ec5d3929e3f4175d0237b83d74f26069f0f5e322e8cc2ffcc58288770037315487ab2faafc09dbfcfc904460692aaabad22fe7eba16987bdf2d52e0146a2c1c5e3b78a0f2dd3c1c82dd4a20d662a2e34838b0169312fbceaab15396ec1043d8ead1664130f696839639d3430b7b5b9137a3de74d0829e5bc3042669f0a3f960595ac3549c234e1dfdb77893ea4437b574a364097865f3edb89c614530f69b5528ed1a070d22ff73956e654685ca15df1caa6b3714ec5854e990bd3f8e11442b4e195ca761a85a9cfe1f5140409826c32820887095578e1b581c969e74634a20fbe7e00df5462dade1263119f2e8bada5b0fdec8136398a2a8fe4934118cc7b9218a4612677888653443098720c46b43230fed785a0febc8e6b51f586206062b48accbcf5459257674051e782a4fbde6abe831a26e6debab10294416ed06ccc879474f9b574bf80f115419f3af8527838b4070aab2c23e1016fcd02630cc7fff8149501956a51f982652906e8b6cd2f5c0bf741c2f1a7b14e588bad2f39c2e01304fcc306d3065f3316df65678bbc5232938d8ccd1008668812a960d7020203ce6e677c9abc525ed4251ec9ac2f4dc70a6dafcb56d9ac3676dcb3b8ee4a3f6b86001f0be8c217d4a2d94d26463d434ddffbe81830d881a251bee46ca6621adb2fb1f5a6e68dbf27b9eb9ada6d0f852c1251a8b29774a2e115d8cd7368f9610b46450679f4ce44cc170fdf9ea24c7fb60e68d7929333147919665ac1dadac0bfcb6d2dd705f1091423a1b012e306b8ccd33de5d8514404c3e4b885894bea15d0619cc779c032b8542483467fbe1fdb5064f7e7c6de346a208e7ab920a4321836d391bec864d30cd142a3b00871146a2fe78599156a00e3cd9064364fd7f9dadd671670641cecbfe680c8dcca7cd6ab40945f6b674085cdd839e54b6fb8ed3b195a7c170b044ae73f8d423e8615bf3f0acd6123479df617c6fc116eedba76a0681fe323f349c3310ef6f1bc9580468fe536e40150435ee5d02987f7648e5c59248373fd8e91a28d3fcbaeaee6757519c3c1393d9de5836bf9ca8f58d5621cac36160e826a004f7745f3107c37183c63674f5ddd10901f1451bbcd8995482c873c562bb387166078c23c7a737ac5d27ebaeb94bfbb76be54674d725b0a7e4421b4db4eeb11ee208aad37a30ea09f91a9f44ce7cbcdb2b41f53d3e7812081fb8726ad21b591f4cf068d2c10edc4b073145cdb07f33f5c9acf2c3dd128d1c617fef54d98f49560daa8370145ff48c5044b47825e1b4913710c651752beaaecbcfa8104f6bbbf7e8951400e7d3ad23d306ff0873f30534b4d2207d936f9114ca8091c350d93165e3d71e8bc41087dac37495af6d3f0e8e119d8b5184be4d26726e14934a6d232643154a639fbee3ab2625dff57c96a14ca8eac85dc44bb98f0dfee879f83fa0a6b190718fc19602734362bbb8e8bbf708e806c6bd797dc6c62b3ee6269754fd49dd51f6618a1c069456f58f894c593a3191c5267f215cd71cd289566ca7e6561ce37ce72e784d9095f593e5d445af2013b2a3cef756875f4a9cfde96d115cc89d8fdc18a2a2da467af042c7aee099615747065666f5cdae678fce6ba07f57e737514dae452a565189bff36b8d70e4aa72b2e5ef6ae8a7adb0fc5cb9c67985209a9640d909764895bc170307ba29b4032aa0345f06f2b62c908370a6fc344e9ff51b1d4e9e4ce4356abc79aba0b678baf26fa43cb108519980f0bbd51a1c0a31a448411067ab1e6f54b9b882488702db28be437d5be3c5d06be6d52770ca389caa2c543707079b863add778fe3147443b1686d05eae6072fab075eb2e679f6cd9b6044c6c549fc05faa356855927cd5b495264d899965570d54a0d574ad5ec931b2d0dfa15527dbfe5417b4add07ae9699f991bfc10afb9ca69b99f2ebae13634e5721d6135ec8cceafaccc391e4d205f1d6a12a81ff4390d299be9baf4c9a4c437c8a8049619ee525a2b821b8e8e0d75262b2d53c20cbfa34d6980b5b14b21976f314d3d4db68dd233c6c7954643b8c00d4749e6a5aff1ada64ab6bf1ecc4bcf2c9c25d22e64e2d7beb0325371a9349ccb936cb092cb89ae441f2ab35f77694779c7a1ad60e2c8118f031b07cc1168bcc4f6007a6c88c8409bf5051e34e0b862a56d1c10476d3e0111954069027354e70f90508f88e2decfb2d30ac491834552fc7979217f2410bd48d1b8313243a16917132838b196bd545f4f9534c0992de7139e0a2740ee4ead65add822859a032bca0b28161bd6f136d1cab22ba99275273989910953e67012f310953c35ed6b4626d7354466fdac20c936659b9df09f69dfc03b4e75debdac1f4c957f71579bc820f9cb08b826b47080881911a866c02238660ab14fdf222e954aeba7d7800b7af992b49ca70f8941cd81013642184ab2b63f391294d4aefe99826e273b54fcc22757ec02a41284c8fefdecf2166c764fbd206a5d537f669999286b4f1840156ffc99f25ca85651aa6a00e5281899158b2fb1aa937f0730980bf1ee837cf61879534935757b412e965e7b315d93f86373c7992ba92e41c494a2f31708b96331d4e33a3b0a77c2d370e36489f06c5be59c992948e703107837a39665bc69d71ce335225f33aa6770134c192fba66372738a96dc9cc1650d97a950ad66782fcfc68a5ecff321d0a0d3fc1db14c0ac2fce637db604b8db6b3d8479a125916bdf6f8b441987676c89f0210cd2425bca6d38f6009cdaf044b4c94fe24d52f235764be0e990c4c245caccb35863c708ab03c55a8f56c22d4c826c21416a13aaef4fbdfe94c6ae9beb70fb92e2be636bbba107d5040b8b402ad6ea6d5a66da50da26ce8dbb202bd7e60c97e1ea9c6a56fa80c0b51d8ed3acb784b8c0bb6ab8e3429a01ab3f3d4ece52a27cc7bc20b1bc4513a6c930a7660ac32ff3da5e68f0caaa71dd8a1827d4a2c5af3874173b4f492ad15de1515ff8560c673f157bff7154ab0276dc552df9e0e31646737efc5297e976ec27a0b3a411245ef4152e435b6f092a8028c47ec7d6566cac457014c610d0346f9cc985590c07a18ee41e3aac4acf7ca2c7319ab2aed4b3a9c6d102d5e85324718a9d03ed16b467c546089fa13daf234d6f591cfe37c327d3bbc17360b945deb4195053d0404baf74d8cf2b4d7ebfe8b654f7caa3e8f7bcd061b5e4b2f84fc7b6f0b22fdc108c8136817aaf70f687e98e1014835613b65b61d50ff50ac39f5d051aaa74709ae871e660770fa020d44575aed550fb5a3b7676d9173da02911b060693ff645aed64d6e2b67df583f0c3fb39b29532f28298dbcedd611a66eb691ae14b2b1e5a89b84e7195d5803e00507e6ae002d94567d2b54b360b1f6ff4bd9e9b7e1c86ce3a71820889c4889632dd8f70070646eb81a6d31134db7b986779857ad4341e21fa23e163dc0e54b4e8854375e99f2af439bfa00c9c54c4d5031dac4098a69aee3bfc6aa68a821d165c8ceab5746dcfab7906e68da8fcc8d69e658863901842c83e6ee525dd8141824c7d4ecbdea719b67ca444d3453af07dc32302ff9a2dc7505c3e33dde73bfa5932bb7058dbd0c81b79b570e62122f2a7102a1a1f172d7f11916e5523855f3f38efef6d88d2345825801a625a5d32654d456a7ff0c402ce9d6b1f025565d412f3f3380c9213998a549713e3319f9f7799533389f62601232c3ce5b06f825ff372d9a14703c4be5f4528844ac0b01857b7a796f0f34ea35e4bc402d59d430aae1f0d06fb86afdf8688bf63c4d9c3791b12a21c209950e7ed127aa57746ee98dcae432423535e54500291e769c09c4fd1f95dbfc99e2e02f30a98f39e495bd830d39e17abbb1e09c615da0f80f4c0785037dafb94461b7975dab73971bfbbdd955c108eeb285e460390d470ad1d83da16afc1869290e37c453eb97042b4472f6843d4c306c4f7ee51d383dc956568033ab02082fb59e248b8438c47aa3e341821e19e64157d2fd7eb61b63ae948b4dd389a621d59c7c4e361c67da569a884f0e4ba6ab9c2b40ba7be690d4c2611a8557406fb4408dcb5b7ea2c3d598e611dc682d16bf2f561f392667a56a1f399e4725bbd81c35b7926a0d39d65325eb6a33473cbaa8041f8d3e529739cbc2a8090c0c3f04fadd7d32ea8fe6c101c1d1204eddf71398a9052a79a9326e7c0f6c2f76cfc1075cbc048eff1eb810e88a17e02719a1ad1a217befc8d69c97f6a0877fecca7b3f3f0d63296a113aed8209cf0358205ef5e64370aca659b5436927387678b0da41e6d6b678f1bf6b222ff317d095ee574db084fbd6465223344200f80ab0aec7c4c6eeeffaad166a7da9cb0ef0fddffbaff7dfddb6b7a3289004475ce1a7c24a90d0300f057e6741a2e56a00287e0b666424001a18962501fba7c7ffdb7ff6e004ba19c52a39fffb8e8539a3eeb9fbbfdef5dcf3db15c0f6595440d2285efa058017bf98241244f451b7f9feae0713929de9aff0ffb7ef477c698cd5dc5afda94765b7746f83522106ba2ff84883da8231dcb8ccc621960144f286c124eda98203b82935d65d04f390a9b9083a94500f10e83c443111e7a28447a505a90014d0b662b0d9841b83281c9c39dc0986d9e08ae9854d7d2b6316f0d6af3eadb9dfd7fa007cf3ee925ead9589ded818c2f7a535329b0eb641567eb9877957223c6db67ef5cdd67a5f560aec99719392eacc5b8ae8d40a81c12ce980b57feda6318482c899be507adc7ed325e5220682ce40c42138bedf1e26fba29c8e6307b62888672f941dc4507b2238fcece9da6dca85925806bd5aa82730abef6acb59390ff2e93c1be6d09550b7afbd57699abfe5523a75658bf5cbea2997fa955a6d7cefca427c41821bf068b8718c52b9df42137ba013410a0d4a7761f15f343c76fff33a6f21e9da324e323d10b0fb46edf2f9cbe4461e907e50dbe4a9b4a2c54e9e677b5dccbe075c2cb1d8df08604e5d68d33ef396c479d7b7f2e679d21525daaf512172c80e1184626c297c62d1ecc1426d99ad2b4d2685c3a3b1fa1b8b8193432b3dac69b0c11ab5c6857d26576b65139ac6ed01dca392c34e73c223b96d181da179dbdb53bb0c15bde85bdb31cad34a0f43ed6099760afb5f37b4921d06381d156921b0c8a1ac7c8fea23ea1e57c6c23d94340fe5149228d24035e7240f7984533e143bb45933a93fe13420583cac37c939de72cb5e6a60bdadcc3f7a89070a6af26991b95cdddafce39157ca39337984ad2b4a234d73faf9c46f3c2beda9e206f4eadb1cba0c215bcf32072901aee65d6320e567d5b49e9a11355a6f960a60e4240a4efb8f5a3c8ba434f4652ae0d1c0b332eedf8bc0c4e4d85711a70e0c700c154e36b5a960864f7c1bd29570c3a948ffa64dd9d94d50aca978f6fb1d7b3fa32190259bdde6e0cda348576a05c4232a692d1a55c3d65c3129289b11f071a079e443d90c3c41b322dd213a3e5478e633090ab4f2f358c0706d77f05213730d86401bdef4f931f32dc0ff186f577a41c97ab56781ca7c37c0b2a426d8c0b2d242e5e8a684b5698c7ee1769a9b4a8bcd530ec43a7b95dc298b4bb9f6201756968542c0b926546ff762d30f5f30096352b78e751804fb931cbbad2f05d10c9f34a1e09b7694c0f3b69693de9a8f0769338c22955c97bd28caaf5f5b7fd3653ff04f5a5013761f2b09a12e7594f10942d0d8a28d07e392800e389a0d3842504cb8c536a410f63836a393e132083432f7ffa400108bde450feba8b2d02f8504d3356347a22450b30c56001694307cb8d61bc466a8ed0224080800a24d151b174227a3a9952730c3303542ed8952c6fb8752f0b6c6ea8ebe2310a11e2b285ecbd2b0c38acb9fac46296c03996ca529427ded143550dca8b8202a20703a1a27d356379d7b3842aeb71b5dc08cad1d8007a363f0a4fefffe94388d4ece95b6c213238d9403989ce7d56cd547df16ed86f935867b4ddb785e979c78bb48d3ce6d93f6295ba64c958bc41e936d7bdb7b2dc94ef98e0c6b9a893c270edb96928ef24f19ecae141d13f463b70780b6049db4840241884f251cc28fb8e464104a2a8902c61971e2c3f8985424b24056057680b20ab448c1b0bb39aa7d11db97aab5c9458138a2a964bbe697dc0508eef7f02db0c14365929732248d897148cb45ed39027a6f218c867eccebefdd9f8452c82c1db1a0312988c5e95332fb23e0d0e8aed27b867879977edc9227fb48ebb8507c3b2d66013b77221191d4fc062cefebfa288f5ad0b8b91f8842cfa8fb8366732448756a9d5b8e5730f065013d3142675954d339a439881e01f33fd407bae7f10b760c13e54cb0e347db9761aa7ef3fcb7d096f444d4d491debe0bfe40f59e59a1ad0f0a32d0e0bee1f5883e36d7d39bc7bdd96e8807ffcc59dc597e107a82d0b73b947622045f7b2d839e16924b7c34add6cca5f4bc636b02a7a1e73bf07d03ef173184c4084dab38f733aa8d33d54ad80fe08190f2d3f5d0e1387b3cb0a9357e0d11a7bf8391858e2ed4ff3f0c87bd39d5facb7fb2952a6b5c95c9282e4c9681156582784330e1bc11c032ac10d6f521dbbb67bf707d32640cf1ed2a4a5b7c50486abb2defd6677155f3a89aa5abab40dc7f9a6d2a6d43e447d6e5541e1ccd4524441344f33860cea970afb15e7df5a676cc9f0428a0f253b80d789059a1d4faa2a7d0690706bcb09c6f5369673e06c538c21b19ccf321bd97548b7a1694d7ffbd74d572c6880f9e03a66fbe1244c953bd7fadaf40026001321eed96a20011f2fa602fd9ef967f24048ae48fd2ae8346fb87ee917de04a237622370816288f5dd57d0d3473d55c95c39164e7e8376183548baaeb84c4ab5fdd0b5f0a720dee47e104019729004f5887dad470514a1f49ba52f691d56e95751fbd4d8617ad991e6c4bb445bc5e6f66b5f4a316de4ac20c9fae229171307953a2783ff200b028dff893f2faa522376e5a7548f4a97249749013d167e1f2aa238a207e61953e8ce15c5fb44fe822bf41ff8515a26404d3a9cccd132da1eb3f33d7d4c28fa99aae7575ee83b9d56166a78eb395c088cc7ca026f518d081b28bf2aac0444995b7786e9926c08a4cb5f00cbb121aebcea45807d9a5d22419d74e70a4528acaa60a4f2490742484ef815f0a3aab214dfeaacee3efedec249b47cefc13ce7ac2a687f07da18d427f2b70072c0be37e6d190257bc69504b98d83b444bed5cbe812023cf30da4798f9e3e1eae60d04c31f102dd601660d19e8871c88f33294caba4ad4e41c256aa361d43e37043de50f68442d2be8f2407ae09154d10057210df418ad91cc49c3c8818610bf4c300d7c2aeeae636eca531fa470d19d142d379b74479f17c56020bf173f8968c8a99a6287409d83b11535d6c168abee9e128e9e1d2ed7fa7ce419bbd43162efe34a98ee77901ee919ae3658b68a3322615ab1209a5900823ade591e8460c70b395c334e1567ef2599333e54670b461d946e2e93f3e262ad4cd95efe5af0ac006ba35eef1d4e9766e20d46e917aa2074e6cd9c791114c440eafa97ad5538bc8b7f6d42224640487d3994cc42d2d0055ddb2d6d0f77365802039ee8e63cd973e245249d9fea4b227f6d64a1d6f23f75d7565114c083e52c4b7248b5657ffbce6d86f384dc73159c47e2df7ae89007009c183555cd0d90166242866d03987c241cc3eacb21b7ab00f438e6e5bbe1d0bd8233f723fc05a1459fb16f00e36156cbe263dba8f352d7aecc55ea67252defcd46d22438ffe3d2efaf0c32645e797b80e63efa1f47d347d50553ddc08d9080e4749bde5515b899bf0af30a0c22b0c73bbdb2901456dcb2c8dbe875c4013980072fa676c35c3e80b3d934c0cff50c6228176fff521b85607577a3b337d33007a3b5fa721e583f04d1c773f90a7aae725e71d7365a9298353ca0a4e8822b52b05bccacaa1ca735c7efe8f7c0a2db0be1585e0fe01c112540a5cf1ccfde5977afb5f2c8d99f6a197125407faf585acddb3126a021d60e84a24d286fe1f7dc99009320d5b719924d002c2c88fa76b658130d04ac13effdad784041a418dc02cd41b1a2ab89f6a0de9e8cb7bd8ee4f39554f4722cf52aba586f312d021a51490572f6f9f19c4fb70ab18e599603cd65eb9937362f8d2a5c418a3c993a14ad030d4b4ef6476ecc3dab7732b4610d4c840c84ec43428584519320e990c371ce74d137545167d03184be4a49cf02b5b02be6e7b00e331d2dd1642736ff26c0b8c717132cb8e92c0603e35c073b6866d94a70e511ce4292adc99414205eb767ab112b7b9b41d906d052c28f1d8a52c0b8ed7616f88386fa47565638bca22935abfb3116e4793df271cf83b8e2a050e9bfa17f8cc967613412a1297902ae7e7055ec54c9ac6da1d6867da3c6c16b47f0ef21db0c94dca0339614224a07077431724312e60d50413bd66e7fe865835302b8b0db8fce74ce0aa1a604e7c4c108a81c6eb64070575fc5c7579b3009d3415d11a13b36e8b25d59d7281e8e18d40a3b918c5004c20687c7d6895a7af1b208af4250ad8fe2620afb35078525407b78d55648c7d3f1a1812c3b7721549bd40b48828a1d149095de76465e0a1e375464d71d718f3646a07ec681568821e98871952362c7150a624d33abadd4a5228a020d62b1c9d5c435471d00efe8b7bc6513e7f04f37e78825bff829035391f6005ff4b4f95324d3f5252dde391b121db42f021172204838845ef4fe376123f85814f52ca931dd15802edf3110e1770a26a9e37e2712b4fa05ad42a21869c0535ffe5f6cce3cea11b7b5d53830f21e4ce6bfe2093708b62a08d2025e6c920cc428909d8b2ce7ff71a20b85678270046b1903d2d8861b419a58019ecd01938c573185ffa41342dc89f5d3bc93c30a9b0ed454f70d8904bd150c642b8accdda54d043f28cb9e9d7f9c275955980a807f61ab142e2a450d11a6431bdb73cc22582dad6d50b824236ccb34b79aa4c197865b5249ff27170c332e107ceb5667a2160c22b887fbf33b7a6e842c3c4f386b39d1cbee2e8e0c17fe1d9ff6d688efa43e372087500db023e3e75ff6139aed5394e516944371a7cd4afcbac78f426ddf1a0c44b141e2f7e1726471a6f81f74afbd007010fd744316bd7126d52a5535539c84ef0b04807e9c68b418d9d49cd4fd550eed07d67f306ca9fda489cc4fe0af7af77eb1eb76374cc11c224d2b14863c8a6c1da748a4f8b5e00448b2986618fdc848799b6f4d010c4a053e6786f8164d101069e974bac08c303500131d59dd15191c95b98eef7ff7e2e80d8b0c8e7a56703478597676b82802232cc2208c51551c7f288e2dcfe9fcec6f79c81176c5113a10dbea262264efbdb7942905ad1570152318f8097d22f809fd03f013fa48f0138aaa38a8830741f683c20612fe08d9170a9fae7f80d426eb86a9c2e4efd53f537a851dfc79277e852ef34ce915be13bf3f6ea3411dfea6a930f9c04f367e12b2bfa0ff6159b4a08b16040c2a4b7bd52ef357759372429f040281c40c7420d1817f155626fce1ab9ffc719df84dfff741b52827f441b597558bc920aa16932ddb6b090959f41572d1843e2de8f740c532b437ed5728bf6d50916ef8ac5cd00783ff2bca09013dcbfe14e5845cb6d70a6a0ad95e2b88eee7e99a42f607346ccbfc153eb1a826d56f0add30f51be886b1ff73c3d8e15a10a3b0d2aa6eb2f88625cffc6daaea33cbf0fb6396a1eff09965ec2bfcb2f60d3ef0d7ef3c447f846c53fdb2a0db54ffacd8e37f684d20902d3659566dae5ff6fb66b1897ed9cf0dfb7dbf4df4d9ffb94cf4fd81e8cf4da2bd6e92c98bbef3455d277e9fbce8abfd3c5b71ebbdbc87f1dcecc8a0767c704c5a92da86d235611f8ae72d986c5f14c59f0ce243513b2a41f48af96f5e9b9d6c68d9fcaaaaaa2aea2683f8de56dd64abe651f9de9f98dbbd6c52e57b318aa26aaaaaaaaaaa8dda9109b2f80a2907fe64119f0aa7faeae8572a58c4f7769ad7fabfd0a234049b2919f47cbabffd79a81df189c21796b1a3a1cd6ff2f7c48fda0debeace9c3163860c99e1dc706e28662866f865f86518378c1bc20de1866fc3b7a196a196a1dbd0adee8c1932c3b9a198e19761dc106ef836741b6a19b60ddb866c43b6e1da706df81c3efbfaf2e4c183878faf4e9d3973e4c8d9db1bb60dd9866bc3675f1e3c7c75e6ecc9d1d38303272f0f0fefee8e0d1b356aececeaeace9c3163860c193d387978776cd4d8d59d21634638279c138a118a117e117e11c609e384704238e19bf04da845a845e8267413b609db846c4236e19a704df8143e85734231c22fc238219cf04da845e8266c13b2099fc2b5bebe3c79f0e0e1e3ab5367ce1c3972f6f6f4f4e0c0c9cbc3c3ebcb8387afce1c397b7a70f0f2ee86776c826cd4fcd4d8b176756add9933668ecc9029223347624ecc90982fc12fc1b8601c7ec24178e806eff053900d7e0aaac14f76aa1bac4b728367f053d04c911b2443c20dce0db94131416e302ef8053fe1af3b63860c3a878a41bfa071281cfa866a41db5036740d7df6e5c1c35767ce9e1c3d387978776cd4d8d59d216326cf6531f94b8ecb70f92d6bc96eb92db3e5675ecb45f4277f198a96c901e5a0621e3c7c75e6c8d9d383f393f739b8947f4a383f461f9b404afa24a3a33f2a51f44544249e84d0d0f789a00ffa411b7dbc84d9bcf8994a4c132e52929bc446476e12972872939888849bc442436e120305b949fce3e2389c53d4294e9bfc3d93bf679c3639747aa1ed4f0e817bab074e438bdfce6b93e8ef3943fbfbfd121b3c2a223114d40e97dce4b0eec57fc60c99b9a198e19761dc106ef8361cba0db5b8ae131048240edb866cc3b5e1b32f0f1ebe3ac039794f0ecbbe92fa2b223114d41283acdbf849c94d0af55efc70f2f0eed8a8b1ab3b131492119a715d20502814ce09c508bf08e38470c237a116a19bb00d286413267f4fe1da8baaee9b484a7a24f7e8e88ddca2aff25a4f455fc25d9f157e90f8c3f67f821ee889c4505053cb443c21741ffdb2f449a465723f14f8a96bc24d06fb5efc79f0f0d59923674f0fce8b9ff9738378c1b83239f7d3c769d2273dd29151510912444327865e08c5a74027d6579980ff6b127ed0e989289c9a984eacaefb848e4dd32f43ddb0326fffe793dcc64f486e3278f7e2671eb98d9f8cdc6490cd8b3f68f7e260dd8b83675e1c24f3e2e0dc8b9f1914f3e267b26e302ef825e7df33e8f9d81d0022e8a4031cdcdb9b162d6e6e6d6d6cddd797274fcb110271184c24e2615ddbfe70cfb163e12755321d448119755314e553f7a664f6e9a5c56f18dc3d7c17be3089e3826188c4648a87dafd7ceb3a85213ece61e288299e0b270c3384438561f2d3ee87d9672ae4331ce2d06227bcb68342e163ec1443ab7e7fafbfbaecb342610eadfac262feb598c7049b291804b2ef1443fbfb9f140e2df0818f26d580f80d8e1b1edbb3fbeaf098a93327e78b1e5c9e96bb36356b4137c93e0a04b22ccbb22ccbb26e12f8fdae6b8743eb8fe3d0049b29fd60fbbf7c438b5f27bd363f1068f70a3f183ce209a52e8ecc338a56d273f812c6ca101478e96004ad1eb6580921ca0a1ba480ea4959f3c2110fd800e707ada4ebe102074d9e94152040511445dd5e146d22d6ec9ecfe7953e7bb450372986e35ee0ab3f3789be30e804d74abd2876c57aef05fe1a2caaa8dd8bbac9167d1665a22ccba2bffffd501445d1f7c698985f4c75c3c470dc9b51b74fa8fd7cb50b96e5bdbdd7dd64c6d8fd31fea6fb37f304db0d0876af98941b3371af98f3f59cbb3bb7c32fdccef33ccff55ccfed4512efbef7b1a358e0fa3b0884cb7af809e73c9c02e73b9c0267353805ce753805ce66700a9cc9e0a730bda7aebf3e839fcc6456e0ef99e63df60da36e7b64f2b31bfda5711865e3d83b356ddd0f919d63bfa4eadef3c9b271cf671836eec57875c357ea13ab73f849ef4b1edc9d9656d38653ace11461f692ea9eba1706b39f549fc1d52ec5c38f5b0fe7f51d5623a3ea4da67169dc33f8c1e46a17e609a7aa7bacddea1606af186ec55a56dcb6e2b5755ded52382d8b37e421d84c4f77d99c7312877bf36b416b73e23531eff3c2e3623ae2501854f13b855155a0dbef7f443bb79f0c2dea065c311ece98e95b750ff7613cb80e9683f5709e94baf74365f8ad711376f09352dd869fead635337d7378bed48153e5602d7bf829676218d42e18a6f7dc0d2e453d3bb9d0a6eeeaa6e6093693a76ef78de11a6b69dcd678adbdaf1d4ff3e1a7309d51542f55dddea4dba16e6eb7c79249e6a7faab9363466f2eefcb0fb5637f615a67d9671bae85a15d5318daec26f3a35572520aee9de0e09eade3202015cedd7aaff77aaff77a2f4cfaec0e662016b5d39393a7777727e3cd9fac7ac3d885213ed1eddca4f3e11fbbe7a2ec0dc1664aa27c2f5e7f555fcdfd2df44e70429f44edc2b47c6186afa261d630e87bb75077d027315ceb42eb420bf43f426ad2dde0d8f483eab8490c27a7c84d622d7a25dc246ecb23e126f1da1d4e819fc8558353e01f72513b37e97c61fee793a85d909b44f95c22769319887d4dddb8225f29488196f8c8d8bdf83107522e17745a53dc4bb364b7c6445c1aa4e79aa2bd3424ecd60cc5a5095af3b3976668b7261897e6f75c93a6717e5cccdfc12f7be2b6f6940bba687465a89455e8a25159bf8fadd542856edad06d8dce5d6618669977fa9e4f2d3a7f165bad398859d7e92ffb65fe02df83cddf97015db9e6cf9513e2a0b34fdcd69ecf772da2cf278a337ebd88f304f367748d7b1d15f3fe50fce5fda13f3789a2ebdbc8ebcf8b533445d55612762f9ab2bf4fcb98c020364d87e2d807060d39b580a6c1344d7f4e2db461ea37d5f55d7557d5345dd7fceca519daad09c6a5f93dd7a87b6950bb3524825682cd947cb27b51b8372d6e6d6c6bf8d997070f5f9d3972f6f4e0e4e1ddb1795fcdbbbedbb1ef45f6d76219f3f7c15f999eabcb5c3ff84177356ceef0f2e0e8edc99953870f4f1eef7baeb1b5b96979c370ee2685afa79905a26f4edd9bbf0fa669934c4e712ffaf3677abee87b7677677dcddfccaaaabab7699f580732c0c20aea0a2aac29abaaaabab229364ba62c9bbac954fd957df5d5de55657ad34f2a1a6a856c127dd5347f0f7b7816b4062d7362bec4c1bd69c1576e6ef80a0eeeed4d8b1637b7b63636b6b535fcd4f8d9d797270f1e3c7c7c75eacc992347cede9e9e1e1c3879797878f8e9ee8e0d1b356aba0cd8406a9afe59fa739150d4ed97fd60b15fe19a356bd6ac41dfa09b746260b18cd97ed003812e13f8411f84e1deb4b8b5b1e135fceccb8387afce1c397b7a70f2f0eed8d8a9c14f0d04fcf69d5268fb4dba9b3f80f7e66fd16fa24931a6e71b7c326167a9f0cf86c4fffdfccf45c29f64571bf987fdf489c5a18d2c2c2ebdc1fc028b4e6fdab0f49b3927ddcd4dc69b16ddb8303d5fd4ed1ff69adcde54ddc39fec3a2a9be79bbe939b96e9f9e6a4bbb5699d0d5fb5e1abb83b77732dadb77782cdd461d457536f344ce7306e07d7ae4e706130debaa618c538b35556bb1725be44606a97b661867e08e88182867ee89dc2b4615aa1f09dc2a87b421f44f4e8a340ebef87e23812449625b219b54b493c092211087c22314dd3d44d0289fd0a7f1ec711d5b549d46e28e96e411ff44e756d105ad7b241b8f5d70c84da1193a85d98248e53f756b79f3070c04fae3f3f44a7ba56f8426118344d81bf3d745553770be3e86a27e4427a41a7149a29c9c6bdf9d33689be2db0f1d34f9be2b8374ddb1f2017e8cbda1fa034ae2d86058761800f44ed5220f09de0daf55322ae6b811e288d6b81dca44a268d0bd3a671763f3f695c18bbe4ca97ecbdbadc7edbb62bdfdbfe7c6b67f7f33f6e52eacdcffc04021f984ce3d24febda64decbcfbc371ce63d219c309981408c31c618638c317e8c31c618638c715d9b44edd86759d72e99f7dc34eecdafa6699b9b96373836aed520e8ef45273aad7f275b4f0f0e9cbc3c3cbcbb3b3640c9560304042403555d39a0a0249673e9455db920178dedb5acdc935552ef91930f6d528ae95c7ae5f01f9066f4f11351d3f4f10b5955f5f1fb60d7f5f1eff8b1ece3bf01fca9c1690183e6f7f86d0481c2a0da0769ea7c79f1630d85adf0f15711dfb9f40e5db9d6b5f266f8f8cc5fb9f69d4b2fd19503725d34bab2b418c6bcf9e97e1e8daeccc91b3d74c4b0b21709be42dd6659be4a31137e5a1f3fb149cf5efd8a6ee02be0d003832d7e120ed921d16d96e56fa24ffc719b65d96dfefccfe3cf394bb9552e960cd7867b63c7ea0a21720012fc84ffc8e94b3be420983f4d5d2734ad9b7146a1cd9fdf06c6dbc02db50b0327b5feca22cdcd9c245dbf5335aba99ad554cd6a9ae6aca6eaaaa66a66f1d69d3143664ecc9738b8372d6e39a46b46d355f52197a0d309cc32fc32cbc28065e997f9cb2c4b1f7f198b27a6a2a156c8360a4caabd4097d9cf143e73f84ce0337fcffc79e6fa4cf599e933d167b24f7c66190ebecb2cc3c3679661e1271bce9b9965b83fd97abf205af0e7c7e4f752f88a4d9257d6c9aa2bd99aaa65b831ea859e78baa1b05d6fc34f49c1fc5df41b025a93543729e3cddf49a98bba52dd6d50eba23d099d70d15c178d2e2d12adae5cd145a35349b06b891fab541474e5945c34ba9f09b0a0111d7a94c62444fafc2f5091ae2df65191150e15253dd3138bfe5f912d36100804a2c04fff89c6c4492606e605047e1260d1fddda75b5d5f73366f4b4a2a26257d52d25252925252928924b0a4f74a4a02446371e2d392be7d1a2780eea7253dd0d37081c54f4b422b02ffd39298bc8b46872639975c34ba34894c89c4e7175b4b7c7e303ab688860960d21bd1300144faa44f4b72e9c4f0d1e77fa423a3a21224888a45494145266cf5c42213a90d71100d41f6c519cd1817d9e1b69cd31e014551d48e8c1a336ffe667ae6cddf4cc5d4bd39002c884f4326e107938045bf21b645852baba2b87b38fc160abf83c16f20f0fbf7fb66d96f14fd5ed76f55fdc6f8a5a4da9010dd64ebb11d80ad1ace1a116cd579fe141274938d87e6035bf51d931dd82a65e3bcc1bac9564366035ba5766232b0950c302c6c85f5f6b75715b64a1fbb5249a4bca9c99b9abca9c99b9abca9c99b9abca9c99b9abca9c99b9abca9c959b0687b7a6263625afbf76752125a511193a12167db920985622c0b86add226377d29aee585add226f749126c957ea3bfc30792902422260e5042b2f4657242376ed8b02143061656559594d492fb048d856b3d317dd20d1b32b0aaa430c618638c31c618638c31c618e31f34b9124fa42f9323b196f46572446c26be4c6ec8dbe494be4c4e88099322a7d3888c2c484c0c080cacf57aaf9f57af9865ab9b44ae491552729fa0b130e13e417b4a729fa03125952041244454e2bfc42f3d89577aa2a4177a2698c691fb04ade8a8f8459fbe13d3383a3272dfe8d327c3348e904efcd1a72f1604c4f4483482dc2768ac13d007d17072fa71d1d07ebea5e1d4e4a249612b4f9fe9845bfc2525134948c5c65647c5c656c5c65645c5c656258a8dad48141b5b11151b5b0d151b5b09151b5b0561bd6c63ab9f22352056721374da22419b94f20a82cd9433facdf5d32f6a503b3772716f0e439dea5aec54d7d6b5cd3e7bde6c27e54442ce76f8490d9b3bbc3c387a7b72e6d4e1c393c7fb9e6b6c6d6eaf632dafe3b7d7f1dca6bfbda7e6fe069de85a7fa33732ba427200913d7c25043fb58fab1d376cdce12b19586af05595148b27a64f2afad22d7eea377cc5a247454825be040924a227fa461a127aa197327a2939a43f7a0f027a20e250086493d43ffa32a34f42729fd0a1476ed25f66da7bf465466e5899bf47df47469f547b8d5c6691dbf8a984cb24e1367e22f2670ab9c9ce7bfd99416ee3272097d9ba4c2253e832812e937565bcfe4c9589ba526ed59b74372710dc70dc115e0110743a134430d9f2bd9d3b49c44b0eedc8049340b7df73e5cbea5ec6731b3fda8ddd36bb49ec7bde8b580e8df8652ca62174d1e8ca5436515e762874d1e8cafc653ffdb6d8c52a555e6be83e59e3a33514ba4f84dfd82a75934eccfe13b434609c2d6ca068093f4d6513454be8d2a12e338cfd7e9bfe3253332f0108a18f161dfa6c91fd5fd045858ffe5a649ef9bbbe73e9653f2d36815f1674e59a40576ee8a23da1639f2efd2aaf25a4433f7d1b7981385bd84079d7a2ca26caab16ff4d8b8d9fd0a2d0895fec26d55eff46dfb4ac16c41984e013e057f927c1f59f08bfca3f197e952744f49ffcd0e17fd27e95d77a02f474f9818a8db2c276a828095bb9cbfc25b1456ff7135375ddee2726ea763f31b3dbdd4f69ac1a8b5d4fb0999243712f9a3fab2abbe6ec2c8b2685dc5e3448284828c8f5e0c0c9cbc3c3bbbb63c3c6d5d8d5b1416950d0ea6e591099323f4b73ce41414141414141414175ac1b742628c80c7e4255759833eabfba5b56e375cfaaeae455d5ec6feccabe9ee6177a987fbfe8fa6cfaa2b9a6efd93d675575c3fc5377c952f4875a0a82cd940cc6bd681bdb5a5f1e3c7c75ca7e9f04f86c11f83f967599692a869ffad19e6b6c6df8a9d59cd3df0b3f08a64dfe9e2fd0ed45ffa737f4726c7a7084e0e405e5e101e1ddb5776c7ed8a821227e95d722526317b4ab13d69dc967cc10adaf7e59fa3f333f32443f3267e83b7cf487dc9f9e90fb8313e4fef280dc1f5eebfeee7edc1f1ba2fb53f3b3fbd565f777c6dd1f999f19fc84b2ec30e7e4eff9a26167e8abba654baffaaaea8405ba49b497fda1e94f55d956f397ad9e535545c3fc73d3bf4cfdf5bdd86b712d9e3153179fe51797a1bd39a9f63acbb2d35cbb7e72e553f7d44fa678a95dfaabeb04a69d6bfd53bcaac138200c54018aa2288aa21e386dd0a2ef5f26c7f65a684cf656e8804e0b8d6ef8a48c952967b4d0e8846800787b93470b8d2ea8e6419e377ab4d0e8800bc46120043e5a68742a153651b4d0e87e646874ec57792d34352dbaf59b6a6f3a7493846e51d01d02baadea0a7f2ebbba8d9fd07f533789cd9656b3a5f7e726d93f5b7a7ff8bbb3ca56f631aaf6aac5b0b3fc26d7377fbf297ebed9a983367fdb138d89934c0ccc2b4907715e8a3ca16811d565022243faf4e1e142e08e1d345b4ba007b220bf68c400ae621c707bf1a3014e0662b2605c95180a02d93509290410901cbd82001180470e1c595553298280884394820618a812b4675502071b68a06640012fae8a865017f0842880c68cabdfaa764065040f2ed802c115271550404196204068c44021743df9089c07e57b3b780eda03d621ddf31af00c58865f0cc23cec027e83eb700799031c86269dc997581369d2d00897c0443e0424940661206f51220ea640fc6359bcae29463dbbabdddd2bba1bd8574da55b23bb16e3323a954826598ba3d7b20ba9346b8de6babbfbb38cdcb280f8e8ee28dd16d1312ec5beb69a20bda47e068d373ac58e5ec7a8a8a232ddbd765b3497e265c8f8a9a71f7a0f3f4a31a0dbcfbc8c280c3a90c9939797f1aadbbd8f38618126299e8e63cbe656131995e289cbacb9e5750ceb3a8275453995c6b125626467dd2df534be69a6448e45799975b75bb74478a49ec63b95c6b1282fe5528991e9d5a28992a3d3c87436d321456ce9dd718347f983de534f85228ad43d057134e24e89bb224dbbae3e448832b46040c004d11513dd9a2f324e1e9429638800cecf1b019464613808591344d4a20a1c1a2a609a004395236f51680e24004b4e398c0b35a3ba36646a5083eab130bc19a2ce09a79c163f44587b720e12fca222a0e1454172006a1881a706392e3f28b17ef042935cf246ed408dbd47a6ccdd8172824a10cb13ba975869e9201d14daa7a0ba95d69e9d8736ba817cf78ad7dd6c708c0958e874081dbadfb63cfb47cb463b95b86e146d779ed3dd5eed2a70c8c69899d2d584e6bc9660cee3580ba611acab15424b71e5e2c7ccc6904c8c634f0fa60409f6cba5f39bc8ff2c275209d26b6be9ec6e19dd0a61bd97d26cf9f5509f24812b17cf82ea48923f2a511a994ae41f9162ef6c9a8d7d965389dc6282f43232b798cee6d6d892f9d568c6ed5176e0748b1991c6077322978035914ae45b0be4d6dde418f64d27f28fcce5d791eb8d9f7d7437946edb3ee6d14b0c69c6d5c239f695a3db76aefba85c7ed36c893c3b32c9fe087614231b5b76bdd36c09e6442ef9264ca7f2f864c6b15f7254bef197cef73a3ac9c68e4ea73181234e802958009f9e9efc13200ba093ffac67f14efeffbd88747f564bd522b5c1fe2ce06739bf8e62ffc0244e302548e6bff3eb2896a47904eb721ac7661467cce8ee1651edcf5dfb33d7fd4da4d38cebbf893c82393f8bc9d1aba1581c954b20495eb9443ac9829ce8ee2f2766481a8bc886ccd8d53c7e1dbdbab88c30b05e5c5955b9a09a92ea6e16dd9e12590cfb9a5fcb779a2dbf89fc76d8a61da6d00e2b68875a3ac97f2d3fc53ffd1fbd904d25f29bc877223f4613a6d14b69b6e47aa611aceb8def5c2abf897c6713ae61b31d76b5c3ad7638409224af4489ec428a355f79045bf2297e868c7f7a2fe5f167c8782552c9912b81a8a8a823cea68ae38980ee7e762b446b32a394cca3d369246bc17436b11a13e3183e22f5a5440231025901e5c9214478e8e071634b078f215b07bc3fbeccb81c1925156542d5cfa0f1299e9447b1a8a69369242b0185140aaea7f109481df932e3aaebeeb56e8167ba3bc5531327d9d871ab898cfa32e32a761dbda89c625f2dc6cc94bfaddfd74f4c771fcd98ce6353ccf8d5dd28ba1bed3e21d5dd4eddddd4dd4c279acc28afe598df8131f5349ec934eb52f159cc63b3698401030bc60b185730ac6054c17001830ac6140c291830b0b0b05e605d6159615561b9c0a2c29ac292c282f102ebc58b17572fac5e54bd70f182eac5d40ba91730aeb0ae5e5c5d5d595d555db9b8a2ba9aba92ba82618565f5c2eacacacaaacaca851595d5949594158c2aacaa17555755565555552eaaa8aaa6aaa4aa60b8c072f1c2c5950b2b17552e5cb8a07231e542ca050c2a2caa17545754565455542ea8a8a8a6a8a4a8604c614dbd98ba9ab29aaa9a723145353535253505430a4bea85d49594955495940b292aa9292929292e292652c8ee46eb96656a32a3c6cc942d9c635f47e6b24bd9dd48ba5d3f7032975cc6ee76fb9b47370a634599ee563291d4dd457d54d424ba87ba5b482aea2a6a0aaa797436f139b7eb6e05ba559f8e5ecbaea39714149655b31b6dbbfb8798d675f73b95476417f2ebcbaca94476f74fb7e997feac008069bf29013582d48d52a12a8eecb5315a9242c3982e2958db004402d4c00419224b86520826094a369892fc01404977bfdd392b6715bb335650771ecac3a56eccd7d84cd5135683b7b4f3757702dd663c5c48b1a928aba8292817c730a318578baf292929ab292317171595d78ba9af2ba82532aa79741a995d514d98ce2652c991d962a98469ec6af35e772b8f624fe3bd90634160896ef35aeee2448a91353f89d39864469bc108e86e12dd6619ddad3c8abd8c3f72bd9798d912acf929be897c7a26472f25f28f67cbb123738bccb8a4d9dd54dd6ed6dd0b748bc9289b347f6c1fcdc48c679f84c9c491e495c6572e3f498a2732237389d22c2bcb2966d63c1290e4bd8e6262c6ae0bdabf74b7936e5daebb87dde217dd4dd42d76bd8e6248e3d7378fce265cff5fcb6fc25c8e1dc79acc28a7d9b289d147777f376ed2dd4dbaf5d639f6a576b7777a7ca5f1bd8e4aa699f3c87ce512e9343a95c7b1a318d918f29d4823d3f94a9448a7d338c65c7ebdb1bbd3ee36eaee27ddb68cee6e32a3ba8e675b4b8c5d4b3131638b264c23930b29d6a28bd96cc185147336cd982db890622d94c8254ca317d4518c8ccc08557505d6c5341aa1a8a8a0aaa4a0aaa8a4a8a09a8839c19420952d9a4aa411ac4b6cb974b620337336cd98512d9ac626674630afe3598b26f3d82cd2a2bb81baedefee254bb12fe6f16cf94d9cc82e2399b12ba3dd2dec662e994c1c44119ec1b67b3edfcec4bab960100597a2f6b5bc8cb666c22cc6d2e6cf0ae60fa23a52d7ed9c7b04bb2ca74cfccef6c52e13e3c76846d18c26d8ee41f6d362981b06fc7ed5b2fcfe5014c5811ff82b8bae4034e7dfea2b9075c3328aa268ce49ffdf3b0f7f8c963f759d2b5a5af424da9bba65682ffb8e8161c057d1573f2d26d5d492f83d6c75cbb28affc3fcfb33fead1f0ca6bf6f1ef953f70c2d9615bdee96a1bdbfc7c5b2a2dffb7087bf6c7e7fc9d50de391be9a51b72cbf61dd188560da0a8bf8835898855e8c825f0bbf7f303f73308883b883aa8b34c0ef81617240b7097eb99fdb247f0d2f465943ff99df1fe360917d3c14c23e5a5c7b027c67d59e452a35d6d85c2b3f951a5ae86761304a710df86b71ed99dfddb528f97f4fe5b580ee33ffcf5da3f25ac1ef2102f9991f7fb018653840fedc4321bf229b6bfd9e2db2b916fbc0e21a951a5abf67732de0077131f86830e83e01aead435a2be83ea123027cff27bfc76babbe6ba198a02deb3eafea86c935c12fd7642804bf0f91061092ba61af4a09a288200b8a37145b5afcc1209b5fa0a1a5e1cf9fe68f3e1a1d91f5818fb6c6f65a2911f5d34f43a3f25aa98b96f673d95ecbd3d4675db6d7cabfba69aa2be52775fbd35457c2b1b115d7d850970a15a782aeb1d195d5789f0aead295d578f3bb01694e913e8a2ead8c20f3ac6ce9c5ef2c5b7afd5361b168a8e9af13977628ff9b7fa8e89fc112c1207693e89bdffce637e71cfec7201337547f6ea8feb4a1fad586ea5f1baa9f6da8fe5f43f5031baa3fd850fdc286ea1f36543fb1a1fa7f1aaabf6da87ea086ea0f6aa87ea186ea1f6aa87ea286ea27d150fd251aaadfa8a1fa8f1aaa1fa9a1fa931aaadf4443f52b3554ff5243f57bd1a94cfb7add2f8a720adc66b67f4fabb6a7c574c14f2a1a6a85684e9dec9b3f59868695de6c836b71ea73d2d3b61b307649fcc9f5c3cac2fc836b31ac2c6cfd5e1be8d7621810e893aaebc445b9a05f8b653f8f02a9bde2e20f3dece7fb0502d1ffc9c036ff5a04b6c5327f51f46ce9950b5a8beaffdca1904d035a7f55874174c177a0c7c1e4eafe8645b9a0ff910b72e99a2afaae40eaf7b3422f26d76fe257ddb0f5d720fef5106c4c435dd91f90465048a4f1430348e9fb93e84ba7f43fc4a13008fcb16b32bf0f7348bdf9958ac9a01018fc01d9dfcaaa6b5afa263e2d7da44f4bffe8d3d2372a2a41826848087d39f58380d0d74431a988b2c276a828e9999e58b43fc4a13008fcb1abeba6a5df282b6c878a929ee9d3529785a719e175826052d2505191d0d05050db0209859e3d3fead987ef494545fd4343fd6ddb2f14f6b36cdadfc2ef1f6ad1d28472c347dfa1225a52908b568436d4a209d921d1a709dd0eba28d0657fae9075dbd51d7ad52d4a895c57cdd380b05a259894d4b94c105559a090d806252515150d0db5ad50c8b2280a54445196150adb7668a8a82829a975548760bf61c55755762da2fdbdfac0f730f5c9d857437f9f065f5555555555555583c157d3f50dba67f875aac31e46afea22f508beea23f5c8af8adf1ef9551f3f8b8768fb453f08544c9df37cc5829e2f26d37669fbd7a2ea86b99bea41b0998298c5b9bbbbbbbbbbbbbbbbbb3bc519c56e5875ec18fb939637b8a727fc3f77d2a5770ad33aaaaaa8928924a423a3a21224888696848280da1fe2501804fe844e5b5afff4a5d2a5ffaf3b6386cc9c982f71706f288aa2288aa2288aa2626ec782c5cbb19d59b1c28c0a156452a4987b7a7a945986e2f197f9cb41a1f82aaf45e506e56a892abeb5380127c51437f5fe654d8f1f7dff42e5f4555e6baae9abbc9614d35779ad1627beca6b4541b94fe85cec9635d59c1e75bd6e85eb6754b86e2685eb649e5c9f43e1ba1827d7bf34b91ec7e43adc0997e9ba45d7b5e027f45d74e995bef195896f7c95f48daf90bef1d5d137be32fac65745254810f5d9f32e7de3aba177da927ece39e79c73ce39e79c73ce49f8859a2e6126d3cdbcea33993ef7aacf7431affa4cfff2aacf643adcab3e53cbab3e53c523549fc954d5575d570f2022c4c78e1b3664605549e1a7fc65feaa5a0a2cb4c2afaf0d8fafd5e9938347af0ece7b7f8ff1f0d3ef9352c46232cdaeee8c19327362bec4c1bd69716b635bf3675f1e3c7c75e6c8d9d383938777c7464ddbc9c0aa9262f1c4f4128944229148241289ef6444fb7332a225feef934f9e6f9898dbbd9ef4b7ee8c19327362bec4c1bd69716bf3271a1327991898571255555555555555555555555555555555fd5f13b39b24beda547bdd750ef3b448aaba66ff7191863f4c5ffd515555f54f1e3df0ddedb4177f2e22fd7c12c549346cfde6fa67fe3ae56985cf7e98fa4dd5e8d35f876e59d13f1389c4afcf441a0afae13a749342bfbac9f6812ed2cf278f7e5cf49b7d23b7ac48ed7506ffac845bb6be3fcf4422e1ee78f2aa442e1369c8dd91f6aa41aeea26db070601dda4901be426db1f3e906bb6f402dd30757de0b73fea37d3dee0f74bec66fa0539112fe8b47b835e44c26fbb5d3cf3b71f177be4b79fbcfd3630f60282cdc4fe8913483ff44641262426a7bf4c24a5273e13c9759ff8f3483cd8f7f74e36a95fa14f2af658dfdfbbc51e3fefef958a3d4abcbfa2ff50110dc33f7ca2e2d10b8bf8878ae81b155fec74a71572dda4bfee0f31fdd01b1593456ff442c5a4bf4227825ec854d4d142afbed0e84ffc595169e9894a4437f90f44047293269ee82691fea7c4ff7cea9a2dbd4941a162bf4e775aa0905b14fa62b16c7dd7ffa2d22f1595dc24d29b289e2dbd496e1851f8eb23b967f95ddd61907c546caabdcea41b159345ae58ef0d15f10ffdea2fd097777d2017887826ee5ddf4dae1ff4406e722d514c3f28d97e338d582416811ea88c047eb577c80d237e9308f4c462d8197e20b78cc86daabd4ee1a7bd4ee29f95ad6ffba4e8ed86ca2fd0073d136947da0bf4fd3adba0247e81dc6453ed0d7aa0177a6637d4d09709b9c9b3a557e887dc24d0ffbcd9d22be48605b967f94d0efff740ee597e5bb799f612bfdf9538fca4da3b74c3842e19fea2f3f7fe06c5dced05ba483cdae79b55bbe7fb2b26d5567738977f45fc427e2a5fb1077ed5c7afea2441fbfb9f9b14f2ac5adcebc5641a1f5edf8b4921af3b76bad0498256c88b71d19fc5feadfffb3fb99b1473b7d799ba49b5ded3130c067b88233d43df5f83167f328defedeeb9b69124c1fd8d7b4eb2f93acf930d097ec2dddddddddddddddddd598c139ef685df16f33bd517f320bfcf6e98f0f33bd517be139e56f8fe3fff838192c327be93102dd04502023e90fbf33facd03df30f1bfe20ba61f9839f64dfe90f147337a41ec2d7ffcc5f450cafbfc1a253fdfc23ffcf45eaf17bfd9d61febfd75f7f9daaeb6f5a445d2bc1660a531fffdabf1653764de37b7f683a7eebefd315f50702d75f7fef2ed2ef93eed6a9daabbeea22f1103e5dc7b3b86293e014e88bc6a88b947eda4cf9e76905c1664a4ac1bdbd69d1e2e6d6d6c686baa88bbaf8d9d797c7c56e588abace87d55565578c53b4b3540a2718ecb1f4e277e26bd15fd3ec823dfcb96c31f964ef6585bc135fbb7ef2c95e328def0d7e9a1d5a1cfb7392a04db37b1d2d06311cdcdb9b162d6e6e6d6d6c6c6b6bf8899f7d7d79aecad4773c65aaeb7c0e27f406a4e5c76dd826641b5a0b625dfc6cfb88aee701b2aee3f97d12d6753e246d480e603b8088af1111e24f213efa7cece83c3b6e349e1b36f86cc8a823033f799365abaaa49248b1a863f174e689c90cd393f9a4b9a4223145435f86dab856082764dfd826eb5a50776bb8212d416dedfbe335e2fb7b1ff0fd1d0f7effbaa1ba334267cc049921034466ae9d13f323e60bf14bdc304ee83adc1b917bd52422725d4b93e8cbd42691eb6e6a717577ef6e3ef7e7cc156326136326d399788275e6c8d9d383938777c7464ddd193364e6c47c61c2bdfe4ce68ae40022427cecb86143065695148b27a64f2a1a6a85675e1cd3fa376e5fac26e44430b41bbab81782967dd5eab4ecdb6ece3cdf760306c84f310c7fbf69dad4d4b4ae69d337d7e1f0e99aebb3df16d1d5fd598b65e93039fca19b31909b445fa0f7f693c2779844df61eb26d7cf8e7f3efdb0d44dca353dfe7e815a3799f6b66bb1a9c8f65a4d2bd0030dbfe9d3fc6d11fda6626ba5c5a4130f8b61e92fbdd8257ef0f1a3183b769bd87f7e7ed662312d7e316ce8c594dee02fb9497f974a004b90009a087a1b58c806ffc8a94f2b14fc7ea1d10bbf28c9bec3a1d2d1ff1ee9d9fffd9153005af493fe27fcfe21fea7c513c562526e0ad337b968525cabe9a734fd4fd1e9f49708f4cdf5d31f169bc31f7ef1f18fdbfcc1dfc4fff35e0c2b6b9fe83689ef7ed3df75cb805cb92697ed095d59fbc3a72b3ea12b6bd7a74bbfe9c3e2107e52d52faaff45aed7694e8bfeef936db268a9d8af128ffc261599e8ab3ed251d1a85886cbd05ef44b90e843f27775954aef90eb545fd4e96f501107503008fcb49804b642b6d19838dfd4466ef3bc18f88ed117bb67f8052afa9bfa0be43af30f3bfef9bafebabeffa4409f64df16887d53b48c5f541874c352607ed16fa6f4d562aa8487a00499eaef81df4c1d88e9e04b0771eaab61e0c8b021a3868cddf087390c8b5356ce8b83dfe460efc5c0073ac1bdb341dff1d07738e8fb1efa3e87cff33cd9dcf05bfe618ca23f849fd0c74fe8b3c04fe857e127f4b16e046d527c89c20dcca68b1c5ff1eae05a821c65300018217dc2c3c3404e94a8531000cc44c5922b5d61c12edefa72002fe4f1a50642ba59e74c2be97295919c093b015746db79008a570d20035341e1d849bc383e96207306d494f5901a224e64850a1c04ca9b0fe9a8740dad31cd25b7263b1067cc234853d6630bf0d06c8624a1bfbc23c600cd0cb5d186e90fd0a883ae050cc14ce2f0a0cae111d4679a78c96e6f0db81a510478e8cb0eee834f107ea56a81f6008833478239e307cc10a775c079fc481b5a1b51b4d25953c47a0636c09d3ab88309e2a2a1f0f0055bc113720bf61cf12e2b4e7a288b5df672a02da76eb6e410841670272aec489b3cec909d327c407f6ac882b5e8ead200f0e89a881549686aa2ced53079e0777764b8549a1cfd836ae9534a4a6ce48732edc31d1eac450e04d7ca8327436080059e27e58d9b0946b50aed90274044ab2528537224cea79632e295f938c073385e43b8041c06ce4475839d2976c0687670c853357eb004c10cd017a341e35823b772e53efeb6e38094833454bc4c8e65e6a147a41be8cb73272a3cb41d01a6dc0c7de24b1c8cf7c9c9a0b7a0a005d729018aeb30e2828558b81acd96bb6c468acf83a0097594b263dfa85be16c8eec7805418ab21e9f34e7c1c9943ce4e70b572085835405119c87c16881d63081471f81010b1dc18c075ed2bac1fb9a4c7550d85c6641c70257d175415fa520415ff9aaa1e77810c0cf0ee09363d872a683e45ee4018c48a0e3c40101577133e370339c9c48ca1817ba92010e6a53843780c70bd341b081d798fbe1220c1100de4006137429e387dc5684cac1d05001c758c1c56522207a8a0e78c8cd1e2e389f0d40e41821e06829090c90b934a8d376e870c19f0102bd35e3067ed2a0815fa991e2ba15275c85177668262eacb8c338d2b94b5b73b9eac277ce2670024078eb3d174d5e448d1eda95e3e5e88ea4d613a288f355b9e06fe8d83cc60ca92c77a401ec838c9af3662081afa874b2141678ee40923afedcd2e16956c0205b355befc8f1663d6084340f14b83ec36bd6458f878100a2760b4fdae43353c27c870988ae674e029e46628816c2d6ec3a3d4cc14d3444750f2f90d059dc3b1e06c414dc81521b3c449f302801243871b34d0f988517073620091f4ae7ac0a3e41870ee6f10ee1685080fef5c0970fe1612eeb21336b96040f790e9d0c1dd5d4e5752480b9093a7c3ced840bdd163707e7695f38181aa61c879ad65c6e1077e006cd11182661bb3a753c4d011e320a34a961049dc15881249ea7e22e1bf9c6e01869b2e4363674f065d7077e24dec94b0daed007d054b40e44b0e89666988e720499a360e3d86e3f68db092045135fa0d12cfac2b41b09f6093f67fd44cfaeb35ed0a0854f61388814d01c8b040ae41c30d071071a1d8525611c073859d98a989c2e038491c9d8c580f11832290dab3c07e3664cb1381086758cb023a7f821828fc2c230da059d9b7658007d600313fc001f25b295095ef0211582683b3074e81f1917cbc8e1a38b9ce01a8cd9007e23832e6e042de93520b180672c4bf41bad0c3cf8c68b93c0c099fc80d103c7206b466e5b5af12e2b42e0a8214ac02da8a004cd91010d2ef772415740f2e02a9ca981836b5bf8070890a40404c00d1e460182ee7024a82df072c59fa45af411443e680f3a80a05bc0ed390e18141b88c64607e1800f4d028f212e018339ad82a983dcce25dd42ad8176c184396d015d8ae31009a0b3d2b17ca28f9786a1c70679a9e9751f9400f12a3715ba88227c50a02b6ef29019a4f09712eef89d57daea1689c171a499a5437242cd072604cf7301073ebc81a5d7679dc67b651e4376eb20a06c90af484040dfa082541bf0848706f2454cfef232d65348ace90edc30f5102eec4a740eb8520418e4a60572f760670f1f204015462ac18874ca119eff30c017d50717f49c2e0508780717273c8f031cbc022319365aa10dba84861db7fb1832087d6c1c0f0c026dc4644a4fb5451c4418088ee45206f7f829e01dfcc8e0392143dc459122bc3565cb91e8a1d35167be3896c0473622f5c051248568b117a41ab84785c67bb3731e5c30e1252d2861a75713d44a092978505b81b7e93104b311fda461e0d85a82149ae91b093cf015cafa643574453c8e08876781e3836b0de186dfd4363d266e043f1a53c2f5825cc871229c799c2e096407f6b69c490d1572d918b5af4860c9bf47a86f4863c51128f16b631614ad27062ccfd181b519096f99498b28d7c5097239762e354353e72c38994359987ad37d60de54075053139942917148bee0410830cc3788a4f5118d19b2d00c12749362148f92e6ae8fd21258a8879456c79e6ec5678fb34d11620a7ec63a694c005a8e0864eda600bdccc10c489cc954014d40d388077910c79f5cc983152092e5bea12c5da6f4594614305f1184114c029eca37ac98a01211a538d2890e07eb8340a3f074278321f1c6c144c0361da499dfb1f09125686a75094e0a1a87520eaec7c4a9a76091e3575a2893a3986d4bb1a203dbc153e1357ce8e5353ac69a753680af5c30cb44dc70e1018e6986ea60080d214c8e2b89ae0ae54b8a9b90a2f3089848c928cc00510cd4ccf803d9c86b58b79718b11c862b6c3de42ec97d9624fd870a05bc22ed8296d1c4c181202a692a46b034171b14e81a7208c2dbc4c8cdc480caf1c84042cf590200ff39b9f9001e18b513488733913a7c8720017022e6cce1069cd090b3487c909df8c0c663a00151513842e938bc41f23513ac70134841f968c48e17893292e7da5e5f8245d86ff00ce06f8230c26d8c35d0493648e16cd810f135151881f9304571bcd67014425a5c0b54137e6adaf507735c1c0428b8757800a81f872ad9cc0a5ef8870d6bb8ce6c8877a17ae1598276e0088aa260a51a02ca401007b817127870a217a5df305bc3ed063f9cb571cc5034567019b4c8f25c9c12ba4c043ef98616cab4972b00c8781f9070e20c565dc492fa0c762ce82234bb07033c908100955e24c2061fd94169218c0ee0b63741afc28641aa168443f3700c01e3b027890791f746353af1c3606af6502c5f24f032ad26bff121ce9bec74c935c47171a13381dca56f87cbf1e0a2dd7298c01be853e2065488f5530e24390a0326fda3e0b10b67b8b50871811b312ad27446c030094270d03e6c20c17f480edd0ec81d5643034163a9b185eb5429f10e15ca74fd3df1758415f3096a8363a00340b661c90f588a4d4e6db5b12ec288085e3124074fc15269b6bb1afc888adbc2055ef09f9612ada54bda2d4ca979120602d05c745f8dbd20e93b789c9da5c1078d854e04ad078136dee3cc8d26735ae132d83de05402d8e13f1934509b72c0f121e238ad5a58579cac4acd5c941c8199003d53353c1091ed8a2e7eaac0c1dfa46cba4886f524312890d38656f0bc3724f2153e3f8e03cb0dc6b1278367b590d338384072148ef425ba15dc812068f01dd0a62b40e606e68aa27a0819e0769136e66c5bcfece5e9855fe8c14cc6a29bc1e9c08821359213075319e2032c8156135f004b9c8653e6e812c4c9008be94a721fd2eaf89a38237ac88721f86f60d14be884c077c3278d956288864001a9b681d97ea6cc056d468299bfc0c354f70995e03150acd0462cb2dc83e79496e00617da59c40f6fc149034c55ecc08b9619e007a4b0c141dc58a5295e214c246a47ea825d9ec700f7037af4830b73a96242816080c6891a1881b79421a16128408a979982c54b90836a38ac6f1a53ece01a5cb834117d495c4594295d2485119946071fb409684a30930690b4575c954ca487b4152330fcea4e109d844c005a870c23603025a8d621e512bec1c905e91054586034756e60abd7c54a5945781c11ade600c8513024bc83c54d808158d1a5df6a886ae6056b3a081b7c389790366f75d820fbd08ac0bfbc49e3787018680de414d066454a701f429cda082cadf790a184bef32388df891ae6201adcb58e235274df0b479f6304cb451043cc4a6f6e2ac683b82b99427fc9d6abdca0f2b222725c4c45106a878b94d7e1f80133c0b7a63f0806e026f060c70330d2d65d94c4b9d2b180862086267d038a312fa001980be131c1536481d23ef09c69148eaa3a8b955fc60300b48eb29266199a1734f135cb361ca0819768383306337ab88f2f7be9171f537886160a99860f10f00bbd249ea68988cc04445dda1683d9dd552e7a03e1038df699701d8e48fcf44181eb9941ae4b1026692ba45a6729f2e25456780113e3c8b82129f114c6fa38dc0e53d94693252d840b529d9f0474de9009ace286053c0c0f3fec011046da166c2d98f413208bcffa019d308d62c6ae21fdd3a74f9fa53d47258926534a7ed07e6d47c66606fa61c40f9da2634a453f9492eca830036d4107cd88390394a11a2f0c20c2a236436908a94470cb4b50b73f4c0851020e133d586d69088a5e481a02861fba1b46b7516cbafb6bf9cc65137986f4621ebd9448e3d891f94730e71f9d4631b32e3163571b25b7641e17f8265c7ff4429e21bd7ee97cbe67925ec7d6461b9de1bdc6b9570ae46bff784ac289ce52a12f3a6b419556ccb2299addbb048e6adc3e005ac37b8d91f68feaedee695a8583b8dd3de31deeab63f7ac2e801dfb8a4910e0aefadad8875119abea13f01dc5187573d41d037d08ecbf4e1dc5f9e89ec4ee982d8291b06315c54e07bbabd807f012ee19b369d2bc129d84bb3b868189d8ec5e1cbb8add71de728c027f5558e834584f99f20c5f3146a73210634ff173e54ed0a9608e2c0437da188ca3f9094db1e74e23f038deb8dbb66d6f471dbb1d67b10a779c629cdd5d780b675d8831c66a008e026314bb548e0a1ab14e3e0c3ac25c3cc5468e7af6c642f0031d6d8c54fb933896dcc534de36d6e0ecaaa3ab0f3dbf61cc6665c7ca8e31fa58f87bf2d47d9542a796a41c035516afee598eb10d59f51f46f399bbd8cc3d43f92f889d5d1ddbc04a58099bc89ddb7f5cc5d887689b516c843176d5d12fff317930c59e3af10512e6b1067fd8b958e18a7d0067dd3376d477b8090c0327e1205e71ead9b163cf7213388857d4739add5f78f627ffb9d0dd63b81206e6d559d4b17b96bb4a020f398a3d451d060e7ac64a9e33c628461d06c67e8481fe7316c5ee9ee5263070cd8eb2a8bbbf782f52c1cac82b52cffe73b4c87fbface01124253f813ac62a5e8fde12490577b863c7ee0ed56b9335026ace67c44ebf110be6e01929caa9638031ce064574d86b22c51a7a88052e1c8718df340116d47921a0b80c328005493e21c62a1b3e2c5012628731490a8605452d601889635ee830647a5104fa950ebee72a491f0aae9e4f4725d1a30495440c66b11766c9e2a554ac8863716729c90b97be4450c70925d0495207fa5129ddb991740be96e06ba551167741abdb654acb52a8ca8b8d1dd4aa4b379f4fae3d2eb533c1dbb9866cb66abe2c5b88c4eb33115b9bb3fcbebf84dbc8c47a698f10773c964e2d0927a1acf3c82399752552fe39b4ea412e4922593b9e45a2a5daddb146a772b417201b3de697caf6358175269247baae1494d7b298f4ee3379fbe78298fed13f329c9833995288f62ffb5fc2373f9c5343a9b770274e33b78072c86afb00b1c6e70bd391b3e04729062ea4ac6ff8adf806e8c0619483d8d27eaced22d539e6e32a3cc9a48a6121fe80f9d2d689423e4b084861b79080a8c6c78c0cc0e4819c8c835e4b928e105aeedcc5b95ed1a5002d742811b7db2b0c860d014e5d8c873374031e52bcf1b3d145840eecd94a44c36f7f43470c5c093622817e9a1eda2c70238a117618ed1a5fdc243001c984ae1687ebca53b6d1803d658f465f5ca9806ee806003ee080fa643c2990f1f725f6eb475309e9e2e68347c91bb21430e06410c0d2e0c41b243992d7ab84b9cb80ff4b82c4965e561286f241010c24971480e77f8ebeedd7481010913306ab00fb63e214a04e1be71eaf054087a6886100980096ecc601244ac998089c15b0548e6bc0f4c1714aa6c80d1d6f4c575c0214705254810b7b5039cab10810a33488ee01257468bcfb1b11a92029b2d09cc68f307a81ca1f2c0912e29a0b0e64bcc10916341931b8a96a03992207e4c9c98791236c5e95a178c6120c10477960820e6286a703b5e4764587cf0f2e1033f902cc220f5704077106a123061845699890988341c292ab00d1c8d39dad05d02191c8e586d6ce8c4dce80b7ee8ba602a4f8d1e14dd6c150441e15462021747f7580c2f607d19138027d8902c69546e9cf88084ac1bcb8e8b1b272bac4465ba95a0d480c1248f96df5a77a663422785392e619f3973f2c0b47ddcc0d9e8eb53c685104a1c10c7e8c8024f1f09daeaee7e4b216c7775faa4d5f1c07a3d007444474e9fae3d553e08424ab340d4ebc3430326260990cd0760c8eb13250749ab46c58a18ea5d9f21096ac45983e7446d4e0d1f23da90692a729c9a02a18e4f0e5658be3c687e88c2ccf05123c20d3208b288e9f2668e4f067932d87ac3e67ca2e50b9f2c617228a182333c9cc902c7c79983114b98c852a495a0850f025b804c69736004a7226d7c6aac50d72749d5095243d6f83455e1da4ac5d004b882c607f8c107746234e8f33ce3dc734788387920c0210d104e627b62c060ccd701c3ad1a88f0da33820d73624c4fb8c0ac21d913074158056e48685a610b913d5352b8e1068a2318da8ce0634fd81a9bbc1c5e585323c68d3d423cc052a2478595070dc8d86375a70af85642c51c0f557b90e2a8bc69c3050d173c2cf6f40cce292d3445c95281a90f006e5b7c5862ed780b92d4d7020aad96ab1f7a0a78d167a8af832832829a2400821b03fa08fbb66c70c7c3011b4c868cf541fb9cf800e72e3961e74a0b7d7d462f657359e8c2acf0019ebe1c300c80e469aac80452eaf4b1c082b744e7a6d627a3bb9b8f9c3e20130a70e0ce1b2683b0bb9b8f9e1e22fa2ce9a0cf843abd20dddd7cf2f4e88d21e353428509d6b0d0ddcde74ecf0900387a93671ce1c8a1bbbb873f19299bf044b13c511faa8af77508286d98679a0a57a71aa0a0164ca125845fc6a8569ea88f1f0960529194e7cf088a40560a3a55219b83c55281394611306de1c99e790e2181f27b9129082298c3336da11cc9f0143a5d139ebf22225e63a42d522d6c4441232e51d0b6e74ff1a798a1805ab045407da2a42b58ac5546fec932d82fcffc63aa850a54e79e39a81ea12c8253d95121ca0298235db11a518f54a09a140e09877e453f12ab91bc278a7a94c94449d93c9b92e8d86f359940b3843f2a10ea192a07800a119650f16ac08ab402498988ae06738a0a73ce38af99cd3f60129ad7226bd08f1020d0aaae9e57b40a6d813a6b9491a0fc96d2314fe21c14201545626f44417388e26e7df7e1d3030d705cc05b818d9992210eb8e1d0aa31e3c55279c74e0b14ed0fbb1e412008903e6ef25e58ca22f5c6c5464f90c30c6f5440130207722da29cb69839b334994300c1a717435e0a1fa8a529800481038200d1916349a904893a12d438d820edc99689a4a5728998030e6563cf3e7c8a2002c991122480665061cd09684200a1832c0d30b0a58011038200e1f1c6cd9a3625bcedb0a186372aa480c684305fae4c910204df0c31a031a1ce83b5e7d18b070ea0211f0f7272582105124630938103588e5e5b0a203962000f1c31b252000ddfb859c14b1707d68e5e0a08c023078e18cd839c376e585843c208663ac8e08106d6121080c78c18592faaa6520401a1dd87073938b0b0c29a144818a1830c1e70a0012c6b71b6124052a345549f1e1f3d7e883724b9b55d39c000a90bb05c69c284eed727f3c17b523df808760caa01ce00cb39159e42a53c2a089557e427b184931c693dca465e849670123fa1a0a0dca23f42623b3c121a05938040bf955557acaa699abdd53560530bcff5b7fe50227bb5feb209211128405cf64905b258a8f0c751a1ba852ec9c30c84c29132c15325e2f587b2189ac0dae0092c40e885b22042c155486911d45519283c67f8b8012405a340d4478a229e0088a2020f8aa759404b36a060f4284391799146ba2286a7aa2e095923fad19a927540a9f234fa19201c120e2d9083888c6d028978ca70fe742479a05d7f799886a10cb4416151a26ac27f5c40e9e1829f0a19d6d83c5c883898da005a61a03d8e47c844114a9f8039804e2a1254c50a238a0816e888a2411612add4dab0cb871535cfa0d957172943aa1f2f2029c7588daea00057182a9025e6173c746413c01c443c812b8fe1107607128e1cc0df0ee1102f19223c4ba02cae806a96d050050671b80a847902d91d4a5c579e696e5357075081690c55050dada0d90f05bb4305ae46c31b3f2614c8afc45092d3110915ec8a1e04384101b251ab8ba18b173c84ac42743d4ab3f2d54f88a2781beb6f05a22dd21e28960d4f9172312521f563bb320c1c318a582089df0b2801000956b14f2813caa46af05441446fa42b52a51f139af433954d447946b5f0fc95a1d09c3a711580c084a592830df0ecc870a0c1172b6a4f9834c3be8e5d49144082c00105141922c487003bb2b05c3c39359d78744d0a7deed4e9a1068d26f7c8688d6b73271766001c35b24c100983aa9aba11e8c4c87dc1c0826348a7d28c0002702851229d48e612e6f12c88122532accbc824d2641ebf82388dce21604de38ea31897510c693c332a8b1cbb8c4cb3aea373b924e0d8656412f9c13c728d9901f1321e773031fe38923521e2ec3a9231392a8b3491cda3f2a8c3cb08d6a53432b5961c8188199d43bc8e4a33a69023d3cc699643c9c3aca93c3695cb0094419c6248332d2719f2d87524c0a93c328d42944b96ca306591a673b924a0c9e378643ab7b2b29ac82f24f3584056d6d772c9246b565d9935c58c67cca35389bcb2a22ab2c5c4a95c229dc8a6d2c824e2a534fbdada3a8a7929cdb8c0ba966438bc78dc10134372318f42bc78289146b0007e1480c30bb99595b59595751ca2c9964c2163665eca23f3f8752440ccd85c922d9942c48c4ae6d1c90407f3a85c12c4e8347a199dc71f594ee353b9307b679731c7d1b92cc00b87ee21cea6126954723c5b32c9c8de264e24739934fe601ec9cc8638b78ecee59997d812ac79648211393a970530b9b2aa7241c564caeb18d6b5f471542e8174656535e93232bb9663472fe4997219c0f1c6b1693c32bb943c98c81b4ee571ccd9344b7abd585453664d2546b11c46a693090e31b1b7ab89fc713ce6681ec99a38b3b29a5c5b644de5b2693c12d07583ecd8841a5b7ab1710dc1a5d7bf747ed3eba8446904eb225bfed14c89742a975d48a6f3cd96461c68b99edd2894cde3d2ab8904733e5817126cc9b3506214fb7a225ec7a6d99b2d8da0816d29d0dd49ba35de75534549454d9de1d00a4200912149bc5d8c37995147ae25d32915e5024a8914631ec782a0fd3b766bbcd14832e3d6d1693c4332c9b6b6a8942cc5da247c47a699d378fcfa246761499a66ef7514e3322a8f7fe4f2521a5fcce8541ec790cc231993e337910fd5e418d6a3bb05e0612709db5df43a1201522448005b3780140942c0568ead1e6f0001e0e8f14a2398f399c72d2fa5d992f9af55d45494145498b1abeb18f664fdf984f2043ebb9fcfc6cfcecf66e0d957ae7403fbd7dd6cdd569efd7b3ea13c9f579eddcfa7957e46e95681be57a2442a9146a772d9f54d8c4ca6f199cb6fa6702e95cf5cbed7118a89d48339975c4f6f54c006056850002f818ff1f4cae37189f3c8a5c09929ad02102880f64ee3b3f82ce6d1d9656472047b25528912d96c22c7be8e4cb267220503ab69544d1575778b14ddada4db04927453bd8a153ff56747e6b15915250575f4621e9b50626463c8cecaf211d6b514d3a2e175242343329dcdacb1a671890c0fd2dd64dd22d9d1dd5ec7b28fe18514339ebdb3e91433337e1dbdfe28c6856c2a8f439acca8a613398614dbd13aba7bf9a5e471f4323295901571368d3e904ea492c7024831a312990347133132b277ece86c36691ac1841cc796438eca2510224a9448a6730801595964cde39851e9ec32928d2d03c8caea3a7a2dbb944b6493793ca3726146837914d2dc621ec99818c7c2ba96625c4c31a373e9dc62621ca321838971ac0bd95422994e26c7ad63d3c84583ca85990ce6510813e3d8728c8812011c5e3c9c473131a310afe319f3d83c12703c32737435916359594de5316ce9ccca6a9a398dce21c72ea551cca8b5fc52f268c25c3a8d5e4ae30f3123f3481644cc38c65c02f16a36310a6932a3c09a4630a51913a90362680f38e1b3922479a7f18f4ea3b369c6642e036832a3c48c2d5ab4e0326bb690e2eafae2ea926a316565ecf2ea9a3a721da5be5e501d5d40857935a19c4b2f6398d892ac45d369b66ce1442a1133661d9518994b67332bcbc95c92919935b78e6346e6576b0008dd515151289c4731164ee391a9e49d4b201fd57c31a31225d24b69f647a6f18f0664891dcf8e625bc6a6d2c874662d81348f46984b2613470258cd264621c7e3d756b38991acd9348a0500d6e534923591379a4da35897014e3025c8e3920280e8163e1520a4bbcf6214217374368fca2de6d189dcea3a92355b741dcf8a68e9e2e4f4523fa3f8ce63f3eb2b857272fa1934de4b792ca01b45013563a31b6d0015a0511ee88e46631079622e9b2d5a22c2e6d1dd52ddd8c810b1637a43ff0c1aaf3c8a6d39bf8e625b5e62cbb585b3e9f5336674319bb84c77b7754b409511223c027885bc01bc8c67e285ec0b7009150618e2342a419e19952d8e47a693ab4553b9443abb8e6262cb2e1a586632ba8e052420459500958b8f816576c48356880add64464d4551412dbf9448a8a398b1abe975542a41369b604ea310e611f985742a8f5ec8772a8d48a6f16c899100292a2a17cde319d2891c4332c9b68e6348a7d28cb9a5441ac7965e5e3c9c4ab36557d78b748a99fdb8e1cb9a1cc4992a2782d2034ef37af3215cd8834d38c3ea2436a080b970f082ef1113e44ea290fc78419bccc1170abd2345178ce49241770142270bd0e4c98f4fbeecc2c9ca0bd0c081fee1c737f065015f5941a38f84a0c245ece4d06439c8690fd4355f9304025bd017c431d9b1b74e38ebe37dfaf4c97dfad4711d3c606a2447f4712d5a707c069b3eed706c6067dd013dc20b416c000c30ba4632ae13b0e183ef1896c17140e8e36ecade729c0c12bcc99cb776bb149d04123391b2848681b9968d30c1e00734dd9dec1608d992a59712b9c445d454541554d851cce8050563caca8aea78c634eb723f81002757d363ab9bf8800366abb3d76b12172f0166c7bb5204f90d330bf8033a5887c16b05172aa128af3800a9173812e5a4e71acf21274cd7787bfa022fdce0a609755c0c90a7ae1a4006dee06d860a27c3064c14232695000e0f5743e4cb5afca18a57d5d0e6284bab77c922073dd1e3e7785222c83f5818e34e0ae4c073270c391022a0961180370ee6c092d663d4e4029c858019503ac21d68724217614684b708d2221fa1e7087fe294a3339093ea5f13a0ccc20e1b1ccfd8a4956224e404686449d9d0bce01d9e6cd4a39e20ae006e4e95a08c999671e7e9771fac651268c6a8188461c1cd4c90f3260cf0745e10c03ef282a8810c91e1a617677a0f10733c4b05557a0a98a2ce62044e6bddc0e6167e8293b171c33728c28e17d1e1892bc9493907494a783309d7794ef8d147a06c6812b20d6858ba26670132cb59ac0aacc44b16b5d8d4d36f7eb0c9634a8a9e6509891c26003a27aa0101576240ae897084755911116d666d0a6ee08ed828cc608761487ba08540f5f1191250e36996ece06f2010bd873d2ade458dea5b7c40719da72b8f6185af7ec1d474b12c4ff908d4d2e30480b352cdc80388f280eb29d242b3ad80418aa6c7252749f97ea34205e3d9bd409d1170711e9074e0557d7ccee34599d77531eb353747340276eefa4e0d19640496337a051a0cb2939b95665368d16e2f945a07261f7204475fba81b225cf2b22d2357a0082db2e58ea2411bcc809140d33d1117d54a63a17f09514113c85a00aa722e62a77398288bf30c2987a545be1542422c8c83b288f93878047408189f6e101a4063343cf19f822a37d58a0c9f1fbc3a13c48e3145c91a1939eb8e90ce890759a1f23f80f57deba498d09e792f1d32e2c29b9919c0397e5809def0e4cee9aa00ceed23ea8331041021620e96eade007144c444308d528061dbe818d0e788a91059e2446c978674c7811823a87b2d66c20511fac458731bd656db3538d1d3a0a490f1e64c11c17724484cc1c2246af1be465b635731c88971c8ec2da967e210b155661001c0d6442d0ffcc58e7e5c8c2a99102f848891e52b721201a053115647782a7b3a883818708220bf6310526e7989af3b767819610035a37800252f37dc5d05d6a73b231294213f1e1261f99326c2e1702e02f3c50fa0416a63c011a6d1ace8e053aae06071c81a20fd96a0cb28939f4dcd964e042ac1921cbb0c3059e42d892bc84814c2e01002eac02531a2ea2019d1f30c0098cd48059be23e62eb7d07182f3b92081fc7ec0026a34c05d0b6124811f70c2a2dd6458d16682c93e02bd81e32091d3574c78f23913e0e8346fc48924a0e21d18b066151ed8e04ba6d0e4095022dc6ecb8c7ee1a5e7273410cc0f84b0c4cb48d1e5b62823188eda8d2c45d5868baed69ca803247cb5a60576a35382036872e753700ed83deeb90a70f4ba8e5b0bb88e821b5a0d1f0e98070b2d9cac8a965cc50528bd6605221cc29925ae0325a15faa1ffcc8c90e8f299183dfb0420f4dc284b91e3bc3978b7a4c389fb9199da70857b7a53eb094bec333b0ba5206a05ec81ba085a5213c39e1a0a831140e883a9e260d087c154409bedad1c4a7f8d072302f6a1c49113d2e83143a3e8313261e552382d67245ab7180d12773f1808f237bc8390b641574113d14e4a8a5a7fe223504fea53571303844af832701df8069aedf9c42e81058b4e04fcc171b8125e81aa08460068a56a42bdc5de57e63f3981366f215e79ab4063b352742e30475b82e1b8a294a9700858466b2720d039d135733a796d1dce8c11138214007c08eaef76ec0b593999a2642f98585e832683535446512255ce0677256ed0196b586c1062c9cd4c10aae7eb5e9ec86008f134706ad714306e6f101933cd75c01bf0bf451e99870e2254b4ea810af0b8cc09b1aabd81395de5ad3a68d354cb50e31cc905fe8b182e3a151838de6ceda4e49ce239059c03d00c01c6cc21339cf612ccd4e1c597a0d6b03679dad75092c247034747cbc8e0728b0091818bda9003a4f2b4af90a29643c8f47054e80151f709e5496bb4971848210e64a17991b2117ad9003030d6104b3cc14ed854131bb50c05713e1f241f78024e7f8880376a2e3ac81481304ef186ba13fdd939fd0d8e357eafab81bb3a1464281083dc390b8ce8084af8cf7f6c4d3b84c5f4a537329232f1e405703cec21036f8050650ee864f055587377c7095501e54b800058dc15d9ae54a04e13c6747394b073877b146d02a3461711338486a5f82a4bdd005c966394a4fb1019663a4b043b7ad68d80624660d0307334e83138f1e428697cc04e14713f1c0912f70c445ebc08380a66000321d421d25ddf5c400a6213597be9082859d3ad88012d1730fb2a285e2b928e33f4e44bb5c48e12918e105e7e8b2760765a078b683a59f0a503a114cccf41e9b8fbea105946f3037e51ec809e32e0539e422410d38153138f0904b08cda28f95fe006e0377c08689bc83d3a959d86282234873723037c470b01ebe5f2041010eb3a707b760e8c4def6662618672a1853014732ea4393f48005f7006200c5e0451a6741862d792cce9a1b6990d438eb8556b2b0ca766e5268ab1b44670305a59fbc79f3a5ae148e66051f9c0f0765fc0221ca701717921d44114e39ed075d1f4981805b1823d74d2474b5d2034dcc418b26dcf78006d8c4d306fe830a54f8c7151a9c4af024af12acc84e62eeb4983c464c8499305e020267b29b2d7ccda24c4e769345a7b7be0c391910781a2dc7101c0624c0d7f0bd0d54e3ae5b801b22ab199aa135686184afc0e78047ed0043fb60c14413cb24c1077ce5e0105cd5d005e890e276d2b635881c3c3fd2254c3e42147232416b9a344727d3d1eb525508b5b00a51a4d41f00705d883137fc2c032dee001561c6604a7c6e4b979620040e7c450c211acd8e213e75d6d6498c94e07c2e36c8782c00f1bbb422da8a97386e77c202f80933afc55ebd6c4ce045ebe0c058aea1a3481ee18722e9046960e817de3cc148f49cc8e90b6552048682b80b6bc29c862b274c830f47dda60db79c3b4a79099ba47e42a4033e40ee876601881a6f81843a9fab23cbbfb8105c4a9e13d84b0a3dba0335ae793033c455290a3ced85ee1441ca389e1d6ae8277c47601a7274f02144f0bce425041f6908021dd2c2b879c020953106851c418c1f1c074faca94815818ac02a90374832a78a05e9c1217811a6af8298e8008845e12027707a0e0f3a9fc366a517c080887e51a4e8156d635ac999254e421b8a7c6278d44d57449eb541906652460abb908276d0d30586fa378ec4c6c479dc896a23a80490c9ae7c83b172b2d30e1d5e02e6465eb221801f917282967910259730e24573200282f6218a94be5ada732f1638e82f14285bcb478fe640a9810f215ad352e838e92a40f2600b8cacf0b3a60a188a15209aef0400340de74f3b137073145b4268271c5098089a0e1a86055930199623f889cc921a617100df81c575732fe32971304083dce9d218ec404026ebf276d890ced80856877121c23db2967891b928f94455b28b7633e0313b18e1700c80d3349642ee06cc075985748b0f2146d4c656875ecee820e3d111c081ba1ce0366865b9104120b9115fd838908f1c9a88065e1a88188ea0c0217ec8416a04ac55808e702b0c7040b3ec98b5171d4fd98328424f13410dcc47ccae5d1654f8091e2a4fd1e6cd2d7ad46938270f0ed7035effccc9ca370ce1e3368c5c1d2707b93ec281109a89c20dadc3ad0d3b2087810be165e6366a80a0ab7cc9200361e1d4d8ca1003a0c7048e7484d18110a10c5ffda044856d77febc610983a0f2f1199a3c5081a8cb72b13422d23d74547c9842044d620c97ab907bc0df98f1a1637031803fc3f8681a6f3dda08cb0e5f229b38d6999a67b11bf3221978350a5846c84dba563f632085771db181cf40e4e73a8820c099535a98cb5317dc23690addc2710267f5d89351a8c100f718414f0e42053ab8021521a46e8a40603a2b4e501ad87e2ec08919b88811322e0490127681861167e3c3aa67ac6df123504b58c690add6620305192f0f07c702020d180c03407c042752da880a0c789e9e377986a1235fa3d4e520ec54b59612a20673e7052792e54ab6c262a0dd4c8800bb65d0d6719aa858cdb0c979014b3a2ec643154c1c32731f74967e5444043b3086ada700d3705110b26e33b422afdde0e14d174ae82270585dc5d10abba0a3425350c3cd6d9c01f019822e303089ea4a14f435f0cd9817008293ae204a45ef15a0ec1b335e78138136a96b872caf591004fac306ad0b60840595ad2047f35980254d32de703e63bc1a87b326378045721b566d7cb975cc706d909a0bdb01990c8231fe0688d814009de04cd0b41c8d9818dc4e117bfd8ea0a31ba891c6fb52a8759963f1116080733450d2fa865e6e30bb2dee2584235c8c015a2b922f3c9a082757d0164454f12e125730589c3d8e410a202e02a80bd6d3c7c6ef4448e3433600b11db2329d2369475e404d7339468c6009b092fd568580db086db9509e177c2475a2a93238c1e1a8ac1a4e045bb84f50499fa84b93cf2cd3740c1d55b00bc61adcca0f06ba091017dc881898396e8a887d7ce08317bd30a3711c81a8454e94c144b825725d90ae7ec0e9a83ba870e07c64e0e11f5e609a841f62cda6c3ccc154bcc95b4600c1a9002104b72aec790615e8c00850f9d1443075e5334f80fc063dc816a244fc7924041732038ea6c18b0efe640db3e7c0e9f3160684c12518b0837bbca9702b0e20739f00a0c11e14af6021ba29fe85a40de76100e86401c051c3a4a5712309a5ec2220c7eb8080a2115073a48d40d9d2693438f12c341ee037462cf12f2166966166838bdde091591d3dda050b76ddc05e1187533c821db073e12e343042ce82a5ab03388b6a24053b3a8625542bfa3c829d2578e522a814c0476660a168649c613738236a9f1506bc4516a10c878989aee19da0159860c993ba9adc97d46ee0ca1118003efcb8094dd0b4094602683705c8e90c885eb898006d701057ec9c889713477315a5a7a84182dd04d1fcc68a29b88f0f975ea00b02672008a5db18e20d05b3800538023914d02b3370c82f82f4789bb788d7fc302203b9a0e66e1950417f5050ed4407109ef5e5ba1bda03bd27f7801700f4ea0586bada98c74d1e02c29e4ef568f98bc0d56b405000bfa054e168b234801730b1e54d3090721fb6ae34170562da756242e735b0d561282c9dce9514685c091730171448c87164f8b80a3604642b3b38e93837686e06842f3c400d4b9cec08843ebb018776c068c8e19c3a7800444a3ec3c5db3b4878e10f408027833952c0ad6e2ce52215a0741b10759882068a2ea40d1cdfe213d349b20cdf212fd93d68489077184207dfa3830367910481d7ca68a149580ef02abd1b99c40601380b087c908260c58786834740fa850f0ccfe0a281128951d06e345072b82f2b87a3412f6b20c258ab30c39e3e42e0cc537686e65a8ae24b7250e833463f7df5820e8e1441f6a22c25f80763aad391ede12e3e22bce9d9cccd201ff40b29457888174ec03d3010f48733ee36c4b8818e39a203fb90c780e3711a711a0ef852e75690908924cd4885c488e063eed0d02a2260a1bbdc65f7f06004cf52eb018b1d81c065186de0298ca8d307b441836598008d9f2922e54cf8bc351d242b1c8d101cfe43d30d3ea7efcd9f59dee40f6c58ea669b8ebc42dab22f5023015d2b4a826d8020035a819c54be513c22ada2c3d243c04bcb410aecf806755c478148a64b106de1e016083c870f5c198235bc8e8a11420be016b98e2950daade4e92b141fe03c849cbe01e3885efa78a13100c384b93015e029623002c768d3e16a63494c83541e2f3bc20d7e1b0ae03234d056aa1224f0373accc812d4e9701850a49062f000594b20950715c2bce16e28f4a1295405d174faa8b209b7a7960b03a5a1b820dd8b98b6cc54e28d05e38aa3781d78036da4f294146f1fca18d043598c7e43046a39883b692e648eb88c1b167e850e130b11a302a874ec16853dcd39658c1901100000008002d3150040481c0e09c5625914e7b95e3a0f14800d80ac5872529fe75992c49033c400430c101900000000000030510021182057d2267f27c616f916bdc6c59cb3e2ab0551f08604a81be6275a3a556ce37d65c681add4ab607a82e4cabc60337e6de1b9cc114dbe3468e288fee711b8b2a679a441c51074c46ccaec1e7791c1eb3dc9ad9cacf0ea86cb5d4b817cb9423a3e329f62ae5649fd1c48630e34a6e3dfdde8a5dd63ac024a6425d9b82da846ba18d34c363c0e4fe003648461bb4ab1f97bb1c9b6e15475788efc7ffc197f979d5a582d211fd974c00dcf1ff864054ae261146278faf43f480f56dde81c7414b19d91ca338f6bb34c1c678aab489102e9f727fe2582174d963f5151cb06f71e7ae8ce487eff1eb94bc0b51e52313d78b14cc461dc7f9dfdac738bdaee7e2ece4b11bda4f0d7b01bb505078bf1b0bb044a2f24346e69f918d5a50fde8f617e2e305c7afe9ba05cafe6e60e61fb9a9ec1c2dd81a2cdc1f774bbfb140672c4a5ec03b807f025548100328cea6a4c7cbfe000fdf15615becd96d0a63328f1c91cce5e4f98b0013340166e4675b13ef825cc34470776116fefbf90671de0ce7e521c6774751fca1767f1c75b3bc6483705bebe9c7bf043fc3714abe3a355cb7970446ef33ddb95d3fce2108bccf4e2d215661a84dfa61ff1fe9a2a959f37ebe391757c07fd57fb643712c1235dc3e8403ed669855aeb9e3df376f96d3a79373b5cba87482c9b2f8d56bc4a174f417af16708608a30984dbf8ca5486d026536c1262af0e18d60d29dbb63711f140963e4200923e27f1d3d6239fcf9ec4582dd0adc68e9238d4e323a8234a6a8c42fa522041464ae9b8681ea0c6a521df485135d7bc8e8129b2d8db2e44767659e04dd300c305e5860974f405eaf6eddca09d194ec4619d15af754e0a6f548ab639d8caa1145dcec50e4e2e67b9315ae7f612e2ccb810e533f25c1395df6ebc5409c0f116f20773ba75bbf4dc521c2e0de0930d401e3a7373ecf49797fcd4e2a1e49539b509d0c82d0bcb23aace0baf48f265a1c4140635e805ec5ebfb1b65867ccef72f5ab8b345a119bdc10bcb19caa51b80f845b3a2aa9d07bd0947d4ba88f9b817f8b28dda5d85c5f9b93bfd66fcab129cc31043ae4f48fde2b111e36604216367550717698d65c61d9e616695152d678d16ed61c36a86f773046c6475b7672b39512773c9dd6b7ee9f6d0f8bb658ce8f382251cea4b831dd39eb1d3afe291e7921c69f2b821de5e042a11a35e5d84eef00da0dfba710c7477d7680fa311d91a90793f123afd6ee6ab7d20a41db0b5e3bc4b797e31d00bac4604a990a7f1de420f54f174ff4d82f38bb768bfd2e12a01f57fb42c7cbc31b8afd662f30527e3bf5d8142fdfab1cbdf3efe7cfb2db7f843b60cdbf4b70a73b4a37bcfc7e820c7d760726de5c4f6f76228702d977dfc2c01080ef737d1af4c96e4c481071f7cdf1636e90d10ba54ff7ff69f08b892cd271462f373222728a397a738ff1a5de91f56adfab502e52728fdad1bdef46178f91db7fe698a977e9814f2099976d880c963adbfe18f511d87caacf58ecd3003af7b4b6cd1919845e8d898fe013027eef806ac9c929fef151a551504210e47b8a2e12f948ff1a528b0021f200e3e9d7ca301d4c179a13ed1c121729811fcffd49cda677d1064292213692184ad0f4a0fdff7d02fe7c6f7e6a9efed47e315dfdfb1697a2c625cf76492fba0a41e72f40d7a6b0a13e2e84ca11b40efe0e8876958185bbb179766817fc500abeb8f4e988f17f0bbfafdde73479327a8f8f7ba16ba14504f45f6bd2351c4eddeedfbe716c2dc437eeb97a1a51f865fb32fe003674d0fb98b775baf1ae1baf415d3649e3cf8caecedacc0a3b7c2d2dda06fb552ba04bad0e9227aab95c63dba572eb96b34af5ebafbe8afba64d7d1fc9593ebf56b3af38cf5fa32ce3c7d7dd7fba525fee7864cca6dd2185db5f555631d1e924c681a5b2c9558ad5e2a97685fa144eed05d6de96ea0b5b2125d447f95d2b943e78a25778d86554a7147f48a3ebce1ad31feca25d38ffcbff248c840b6d7030f309806fcb0dffe6afa76b57bdc4a7b3e8034f3ccf9ad2d737e2f0c9daee47b1b122347d5f7313058d8c4752382f382abb72cd277f96c365831e02e5ff08b939eedb564c7415d89d497bc5d713083db08be2c9867f008e647c64214bc0dd427a6f78ca5fb74a9f23cb6fd08543a453a5f3320ff1f1a40efbf349df9334af36881fbbc515da256f3850ef4cfc8cbe6378017fbfb54fcf96e2f8ec1d7765df83717429eefe2aedf20cfda4bde3956414c2a9c5f88767fc57bca603a4c2fafc7e77cbdfe97932e2dc7dd890295bc351e832d8766aea34cdcfde4bd3424e9b984ea2275f19bdaad1479a4d57e1940961f6b25ff097b713a0aed86a7afa479b43182f5237561d726e8c2c582faab5ee561b91d7a9e638d4388f24342cf6bd7d08d5bdb339f515fc6961ac8ec37f809d6eacce0170d9de76501435350e27dfe3a40d5433edc397bdd8c7c56e018a0115ad138e5ebc9ced9b8b5b5598dbf1fcd9542b0d6974a1a3a21eacedda77f0f0e9b3b4e87fbdf822bda98c1cad75660bfe3285e90cbd5aa0711e73f7d58484633ec9be5d1b22bf0273cea24bbb8a602e1a472aae51367bc1ff5f85440e3b03163e3a289f409fa53bf1bacce42bcd3c37389771898f7f8df1474911feba714fc61c27a36d1b606f6a97b9e4babab4537d189fec3510f391e64edae7fc303dda320c1ab222c79979f362eb8e9ec0961b317609affb5b37607ebe979b3e0e5c9bccdf7ddbde3d3984282918ce510f9e6a18f67b83d2cf4e1d8936b54537403cbc77bccd680d6ed76dd516b1ff509f9a8b0d6db403687f131e0ea99800d888c1ae5ecfcb6f058c02a00f51b2decdf058ba6e1d885ee1e7bc29ea53b98ff5bad9dccb842462ddb5b46ad4cfd246a4b78ff1f8ddfd37df89edf61ed5b22a8c3995a5ca955b4670f8ed16e5cf6593abe4c789577f476a7b08dd449a64419c6bb22a05b7aaed2e89ee6223daf22427ee0963ebfbedeff5bfe4ea54076962570c2b578b608a27c02bac06e67323e8a32be70c087f754e9b6a26c9fe1de885df77ae3a6926380f21d8306a0ea59221614b40543325e100fce30902c0dc254cfc185086aa68729cae1e631037fdfaf95ee5b1dc53db1cc3842bd862cade97332724b3a1768d445ffe13d0c0dde2c8080c448f97512d0dbfaa5ea99639066a31c21253d535aee881e864964ac047f9adcf28080d3323b38f1f1a29b19185236ddab0904b911a4fe067858154c6acd12d91a5fc137233fc05b3b7ceaa5e1c1ed7f119a0580765210bdce43391e2efaa1b850015e11106f4216dc0472a19a6c7be7be3eb30283d405410ad8786520d2d48ecddeedf3ada75b917f3bb5a5a594e39b0c984e860713bb3dc29a26b8a10bcdad0d491b06afd60114f2239097a6b5b1d65f086f9865c0fe0e12867a221c4e1d15c482680479238dfb71ab7eb718e1a218b0c9b81d2152193123cbf7b5c3b40c32bc5ea4bace1375903c58ffb6e70a50319c25e235888af8a58113db94100ff333265a201abfc50f5571a6394a809408697052f5b9384e5106ee2b78eeca15de41e1cf8778624f755c5a68747aeba86d06bac2ea73240a672f01c52295dd8340ce77e1a19d9f0f201da45b7f026e298148b64a5ab2bae99df0a55fcc5ea48abf669feb9cce30ecdfb0f6937cf51d89ed27c99bc2bc3f1743f978eb64338fc1409284107fc5f91a27a29461991dd6f56406dc72cbbc12e31861d8a26f8b222494ef0d53a8de48398a065851c9d13e7ab63aa9fc121882e3002a4e792257d9ab79ee0f82125eae07e2268cb7c8ac50c16c46337f1246f81de8e63b4cddb10f591037a125e2e8f178ca6fdc0e252dd09f13aeb00e875f1a52fac80c3326f054f613303d9ff8457b41de6f07bea8e67f6978ad8e14ad3b0be8ffff1e14daae12cefd97f6ab0df0832fb1ed4c9533a0ebdff237324cdf03681ea087da00366535019be7cb10effd4b1504acec041b1b20708b53155c061119f388718146a22d2a05d915bfca04a701e4ba9193d2153e9d0156c3430e2e733a95a92f23c4b4036e8f50f570904bf6383fc977596904a27a8e41db33fc58adcee085e6180e0899e987b8b0285a9e83e0f8052ca708835c120c8974ccb8744fc1247656caee62e373507cc90cee054666b81b7b282e275450e5b9703b73a19ffe63189704321b706815ca23141d8b6780f69f744a781082f3aaa433b15fed4e45f501313cda2b105402c7ca50d15142b9af3260b88acdce95d2cfa855d8fd19605cf15db55a5e911bb6140c01dc9b9a803f08ce0eca01eae6e53a85675c171e43d079c5978994a06faf0a52d47e79e7328858406301dad2ca76206263a8d8cbd24ff588c0ef88637a04e9ad3cbede1629060d888c0e0b939d2ddc12c0316fa1bca5580610d202b11521fb8b104a991b37169eea95e3fd61fee26729010555fe8eca4532f5c2bc82060c2f6907a3e50d57fa0947635da34596a53b2960eea30145010e844959fe4002d3e3b19b637563261e0714c6c22c65dbac75a72c72bc26b929daf2bea241350852e52be8a558dfb4223979f3fea20d70d5ae1a21d721e45c42571e590ce381d0b945e924599725c74510dd3bf72a0c67d7224812eaec59b935b53f84c07ed2ae806bca30db2fb4ab26409835719d6dcd88616ba657ad862faad9e9850dab5566c986a1e9f019e22b9725ceabf9628ebbb95530588ff447a7b3faae5d91b8d50413402ca129b387e399276da041201ed43355723d59a8aa952f4774f1e8fbe6501e3720926083889d3144a7917f7d7ccc372b73c8e6060ad1c31c07995b6e768b54173f9e285e32117f19d2e2b1f08900e1b1e4b2fafa619f50b045715a8f674834e83947fe8a0209dae597975d5c7875c96e49d233f19f5e0efc4c195e09c03777df996a2d20f3db7346bf72e2fd1e91ebe2b65880c58d7091f968fed795f12e0c9535c27454b273671035e91946aec830f3e755abfaa38a43ce084c90232e98d3fab34316d0fdbb9e94698adda74169712e95b0c26e1c60344e7eae81d099c12b229d3702a97179532fb895fab6abb9eb8748f25e9011c9c1b61669d71337fd7a3e596e24400d08b958db04a8642f0b5f6edc4d0de5a5f9eae3958f2647fb44e320a2355d22608ecf5c99b74c7a71948eaa15563f2ec04f2ec57046c2b25c5a3ea9e1d076bf066c3f334ec3f9534a2a4d957095cc4a17ae005d439d87cbc9682eedabed49dd47e7d40f950551c1c89e6d7ccdcb08e5c46230b56f9c8992d64f3d90c19663f28acfdef8ae6131d694304fb79a9f71b192197a2d34a0d91e7c6b44231bd798c63652ece728caec35b387d4de697ba6ec95cc9e7d73a318116e0796f604e77918c032a62607a431b711573a03b6cf71c83e9c4c96d4595e088847cf9b7b33322b82744e16178c82e1c3312c41e17e1879bfe84750c729612121cd070bd05c7d04dfad4e31d54be2bfdfb43704b24d2efd48ec07c162e7d0a3157dc6f116d643b1c9467182da86a5260158dbc38c60af92809f3ba80016ac00b8f874efce6a7d1f1dba5feef47c253a855e8241176096db7929878778ca970b30200d62d0f8c4bac865f5a0541051af5b85292bb84a5232d008bd4763d3d5c2ab1ef1902e5c15dd9d4391518ac554a3bfaab35553d2bd70c8f0464f44aa43eeccb18bdd390bd2d6e82dd6c740219eef2a072a886530ad94b65dbb1730d79f54647592c9dc5e364b5bc1159d01efc2679859d38a99fd50358b0221666a6c32970f890ea4e43b0753654444e5023c0c7fda599d6118c1cedf86bbc5deb2eed734d5e446708275065ff80b6733803e05135350ab06f72bd1f50fec51246864dcca6c67f933a94b56d67f205fdc6b161deff12a3636a58764e76b2fa76a56895be495c642a769a3e92d1357c1678d22b9e8113b6b923249db33bb9a82afb389fccc15f0930635bb5995bcfda8fac5cd9a62bd162b0185a151b52dc915660d0e6b62c75027ebda462ad61e883186ac18f7fa9ce9ad017db19e0925261fafad6104a570e5a95b43df9d5342b4677db3def631e60444de71104fe5e278788a76a2572b7f648ce219e767832290f1a9bf164e89d60decb53f7aaad3bcbb421e85c3136cdf3d88ee2aab9d60c2eec15757c9e904636a4be41ec976ceeb9b4fb859da9b0726e3d30307c7f3dc2242d8f745b5e1e1da2293a5b14a8b17c957909e697a8e6172e856dbdfcde99295d17914b6dfe18093365f6d9269b5fbddca548194b7c900238b9c312125e4ab9d0b57072fd83b348bef96438504b6842a8e53f5165332e2dcd4e912ae7ab67864cdb9ed178d1d6343fa303654633d527972a219da1b11027401cb62dfae198abdfdd649d211d4c69626124dfbf68800dc1226905406b35e426ed1e63329cf35cabd1123bce5e56454099887fee891750c5f347ed88de7e28c64a0c13af779dcd02b8a8993a5fdb477df8fbb3d5486702639ce59ddcf4911101e1642ed30ade90876746f33a2635ad57f6106db3485e5fb81c6cd8b746be652a66e047494892b109006e0412b2aeb640dd116355cd8644235e2d92f10226ccb494189bc12a014a08ca924a5e07b8097cda894dc6b33853fd3c6c51941fbbc965a8a7289b8b7b0de84244aaa7bbb28e5e9390a589d4899a54746de6b29eb71f45168842cd479f115b75509055c6a190f0e152c7f5a6c0813c003ad6677c6a0d904b55116f28d9adc2592fe99b7df5603d2a858f59a607dac684d81e1ba59e2b53e02d6e888cded085970f398956005ad340a17090e21eddaff6cfd6f51ec912aecb46ecd0ac6a860cec56684a2828cb452c6901a46e9ba8f9b3f18fab0c16113042264508a4d70a97441ad8a17e8ae696abb394506bc9865722459db5de8d048d084ea681b6c17d58b641bc202b4f11727ded70db177bec5dcca4c671beb7d8cab3d4a4735a1f636ad806384dd0ba83eb515befcb36c6e9be3b9cb4b92ead817765e3e017b17cad87dac1404ee71b18429fa6215a8cefa9f43087ca66c387810727d75e3820cc04f8d15a2c050c2b2974421fc5675e4a0d4f06da040d58ff924233b961c2ecbbfb82ca8950281fabd1cd9c63441b03d00c5d5341ff3bb3a1df6765fd54b702180d3f63d8d3b5c6d9626bb7fd7537213f6855644dc565ab55672aa600b4bfb5c8511e961cf9b9aff18a0084e56c28d0b318c74321aaa462a622352608abf8f946de0b4291f525bbc6d13e990d3f06eef96328985156eda88bc8aa166a79f429a25f97c5f17683f7cc8904f96c3dd670d948501bf4b732c9a5768b432a507e8fd77e28fc2b64e3f8beb909d8112e81b028ca653d5820a3006b894f2d0c8bf3d299e59b9ebd0e26d22ebbda7d2b712aad235813c049b489fd016f99d40e25579b0d1ab93434277be43e23275fdc0a5532b2f76a6df10cc810c0ef1d37cabc036498fe049ea7daafa01ea999a545c77c54ed04ebf83413cfc7644d29d3bdd0ae32722557c7d546666f5a1035367f4194cefda4c875236d9747a6f7d028f2e44c9f6063802bcf7499913129103d5110df72ce5768c80b6f39bbb7c54910b426cd14d56482e722a9f376abe8941406f0dbf11166ee4e4a39be74391fa64bccd07a3ef6af5448cf66877500ff174866386024154c218b37326f59e3378c5895d5d32383ee326ac6329f969f746805e9cfe53eb6cc1cf5c5ae5c45b97553bd37a15de6f5286fb8fb4a81881f334a8b99ede47efed967095c6c9e95db0cac816ffbb5c7d13372b7422d68f79440502467713760455a415a0057c5eda30e1d66236e79dd1821864ba52385db5d4aef47d0eb66cb6ec7ca43c9c525f32741676f9d553c1fb7357ac4085278acf373e49cd1a0c1cdcc2e3e97985a6bd5037765d0bae029de54ee733ed30dbac900e4327284ce6a65e73bd476900e8cf7758ae84fb7d42a8110faabb9b7ed0b0ae896a536b9e7a49b12d077c052d164407fd0730e7ee6d05305c22efa14ebe4948609ae7a544f20665736e2e0b04a339d35c41c4647e0bb1e326a7c06778731427d749f3f215b3dbe482ccc859e4b03273db39ff498f12b719ffacd7c5161adb5a238fed9d7cd95fb9708e8f4eb923ba4093584ff233965e586e533984ddd2ef1822603553650cda46398493088196434823fda48c0ed823352076ae4a17324246388b8e25360c293a5fe06a3409900039387fde5435c70935d5dfa944ad28c7fc5b7297eef256083a7bfea0fc0b0065a8d2401a2eb4e8bfbb8e67c7c828e36eb1d459896cbb9327d1b2a9b5dc43d8c3acd8939c2f72568b792166989e2e2854c11615f425f52fe3503016e82bfacc1cf4a5abd2fc05fadaa045720ffd2f931e02f9d4c93f8df813e87fc4c0d3819206ab16c1963877c609be2874aa030ab508117c11c95d9c4661ecc86cb9d121c77db9b2933501628cf544cda5d39a0a8e1bcfdb9ffb199c5707a4a172ca8dcbb5b9548b23c982632d13b74252ca9fca8b5a45cbc5d71af22edfe0ffaf198581baf7ac22dde5ca523d2716558106efefc09549815406e70d38092b53569e043f168b1be900aef124e733af56d33b725d2565bd16c6a425e5d4ba7f02205c11835015133bf014e226ebeaf211446b92c915878f9c3b7e2534488e45153fa7bee9974a803dc8afa34db868000da2445c30df1d88d769377d13a034f27fd1e28b53eae99689000a8be4e4938fc220ee5672eda616aaa83c019035817f893326713b72c2eb1fb17355815a8267be052923f9c4d66f2d69275e0bb6abb2b819bf84a59cc2ac38dc19e3056f8b0335630df041ab5df997ca8b23da65ef8e6f396f195e9c5a18f00dde3e1dd257312e4fa72adb4818836316ef8f7977cd38481bffbbcb7ff1d4e15dd6b3333cde5d6a94f9e5ddb631da412e1c589bd5ec64976981eff8b3a590a3d01ee7ed5d230ffcbc2db848f1b98885ee1d20aeee34be4be0ed61e9d0e113cb15b128ce5099b235f285cef0656b148f5d6cc7b9e34e4d659d91cd37433e26549dcdef0ad880fe8a11cba113b0bd6ec825ba839d2cc2078786934fbcc634340e10b3c4b1cdc5c11d0b24703d57ada8c519a0f3b94352fe34c92d3105422a8275c31b6edd84bc53ab80207a514570076503a6bc2b082e3401d3d9514a458853fba518879daf0665fb225914accb6d4c2be657d092315ad95184c70c330b9528ba5d5254e4d8455e6b9f848af650452e462dc9d7704afe509b200048f7340f49e7eb66c374dc9296d2df0fa1f02cd8bd4969bf3df4a9d977f6593ca1f040cf3e543013f0d9473ee1cd88eda566066e43fb660d26bf685f67af5331dae72dec64a2f3dd1e7f6adbd04004be6d6ad02d6607afe3e0b40f51021946ed63c76d7ac90dfd0536a16177c2d16f3bdd20d171713048b4792f9b8869329f3a729ff1e3f70e003f4e7f52f76b1e02aa1886ac6e4c80bfcb20205b8413b3d1217edea4e8c621c48cfbe376ab008ee7af340e9b5dc710ef7f554a3588f9cafa37b3a1a103ae6e5e512fddddd9485feded2a9092b7bf749a426bea2274c62d3351137dd656892cfe664252346a8c6b920d906a4a7c68294670e9fa2ff53e163effd2fb5fecfc2d7dbea5ff6fd1938be3154649bce2dd593a57a212bb140662974c7d63176b5dfcf28257c45ae118dc0d51623e05803431f9393fa32353979803b4d2e77b4c03f5e3380876e65965c1e45114c851c6ac6e77b76ac93a894191652cabddf9646ec6bb5c6cf0c03e697c4a830c7163366eab5262f629abcff05ea0015db7d1927373b4f7683474441a843a445a59328dc51fe163939705116292e73cf76e08a8338aa2c843bb11f6e040e7c34e111d95b50e62dcaec2a67448a91b601993aac5b33ae0b6981c6d115eb53294a29011f152ad071bee48f9cc56cbe50e26f45e31985ef1d8fb0561297e7167923d343bcb070260498b29c5c031ce9909dbcf74ce08e8c55c83abdc3c9591e91dba4f1e6bc22b2f33311b64c960f3fe8d7e96a681b9a102920deea8b75fb13d98339329d473e34a93e8c7ae3a3240192da523318ef7d54685d94159189f92fdb611464f360fd1171a5845abf4d8f12e0a1f92d53bdd34e07526d944317e1fc136b58697f145d0abd37df52c652bd8394ccc22e0bce48f66338c8136ce52ad88ae157b4dc3f999659b08f999e4d95441f5e71d2dfb25a71cf36e912ebf87eb69327c4ebd4a26293d163bbbcbbea74f45771b9a0613fdcdc1cbcbb7f93c8415602f84a8827048c517d9124de45ab81ab41cd43309c57c6704ba96f62817d78ac0bfef218cb5873be99a3ab2f899cf3b3619aa5a36d4f5ac50ecbf04e6eec412ea85d408d07da32f132b26b4ea7124164a04efb411ccbab74d1f7b2dc43b8cb571976c3a630d65350614896d5278e0040dbe843b6c017164d2e6f64578548cc813a8805a207cd5509a09801f4e575011669228783be00e64ee083e2487925cfad691f1ff987875c40b697b19018a2215bf65a6b992f60dd8272b809e2e29a9147c33a3de5fbce2901bf3fd4c00f06b5b002b80455bd79723e6d04182cbd45e49bd554d2903db8abcab9aa84bce64dbf95c866ac37de9d1320e52d8e4eedbae0a8e6cf5b80348a4041e641d526524c0368d67ed7c82566b7ba82cd6c8cfe1df8526223989224fe35563ff43799095ab70e66e3201b52e198875be0f3907750110fe521d800addd04c01bb81a1b6d75c34773bae60d93a36367b7bb57876a772f4e404691a1c3cb1a07d9da06c5cd20374d4fb6374d697ef76c7efe01e8ed515d7bc7abaa9f70235fc83556c151a8b8f7e4e352a83d6264315af479ebc7dba83c6409361495ae30acd4382cb3cc4f30e311d8aff14327fdf98d06b953e0d4cc1837d2837790e4337dda04aae2bb5fd1dc0b43402454f3f49006cfec1807b4cd88cbfd51fe997f0c3a1bf029c7eae9ff59fe137d205d74e740f03aaaf90f1f90ee83cfef5e4d00d66cfac357a27ecb43caec9864b3250aef7b446f739b9502e323de5729f3d5dadb15aef3814d5efdbbf60360f4807d4d26eb0a1ba1b1162f0c6b67fbce1b579e3da228310063e7db2882745d8b21d07c95f3db4e8eb11f6d8fc1d27f479b2fdbe2d092419f68eada69510d5c23ae79a25db1b95804ee1da54e6d419d20aa91326e61f2ab670755e7f067711a802bc0a78cdb967d123f7dcd7289695cc58d51890801c757d30e6cf9cf8333b92c822f8c0c24dc65e28ac5e8fd4b8230a017d85a2d0b8b604432921b223d66631c3a592e0de9523950031229766e02aeb45270a29c917e49f9d004c0f1bd8826ee075944ecd27fbad35899255bf5c063889cea8e4ed2df1c51284fdcc491429bcc969369266985bbc787427884d6640a8bdd8a79d3c90fc44ccfb38e6432480a49c101c74a7c504b1275d81beef6570b02067ddcbeb359720df644b6a9de8d61ca1f8710346ab1b0de2e2a37a7d158a7b557b286d5ffaef5bf20013ca295dcd694a31d0c1617008887496cba0be5cbef0428b2141a664001d56be857bb11f53cbc97bb85a93c951172406c101545c1033b70058a57f6777c356299d62f4ac8b6256b2767989f4bc6434aa5d099b1f1af483a84ef28911d7b6cfb7838c7b3a46d71332cf7c5f0aa0aa9d927fcb1d59c6e76a3e0fa88566778715b7ef08182939b770e0cb268d395ba4d36fb6b7512dfe0f0d302ac61b3d7e3f9df6ba7b5c0228faa4036111433760c26e3038f2b2659d2f68177d8298440ba53209096d5765b380cb6d21cb8fc707fcbe42696fd218d9f474d2d190dc6f9eb5079205494a16ea0f63c8d1ab1cf67aa4a50ec27dffdf3094611e6d1829ecfdb361e206de4f16428a5480214439d74313626351f6e89e50f119d950a13d1bcc5b68805a0a39691ba23218504e21d8fb07641fdc5ca94e5688d98bcdf2a5b3733c4203df5c4483ab07e1784c9a2534f1209a1e23b892f51a06f24ebe3873113b08fc4bac88ad9d077ad01d7aa6250c84ffb6412ffc9d09bba2775a32be891e8546197493a1a1a46f3fedab585a2285ad3b0391ca3f7283b4845d9bd112d5d1cca181b87c34fad4e2d3aa89836afeee1ca0499e26dd6519e5e2ae6992250bfbd852f5a26ecccfdebd450c162b974c85c391055254f86f3c4f7797c8137d0f7a794b9f62883f00b1c9ddc3e0c87e1b1ba165470468762010ca3832408161c499211857d8232134b1874d2514f5281b1b7e9d427dc5dc271d2f60e3ba2d6f6abf2de31bc08150782aad386f1ff0ba21609e537547061073c54a12eca597271853cb78f24ccfe017377d062c05183544c1ee2f3e965f39ddf1a970da95fcc87c9eea9aa2e017bf86db0241f4bdd3c08076987d7513fd72389b96c1740b2795244b4fe06dc67f60647048a0413a466b6eaac72fe4873cf06c6c6ef444bd00f98300ae8d55a410ee53d00ec821391494b96b6bd96fad5ac3797d43cb5baf85f1f0e41ccd1337643f8b3e5d61d646dd820057cfe5df15f985b4c769f2c7ab61527953b1fc56d97259e164b1cc3b6bcb958eb13a4907c227d891391bbf9c6f357183dce6ddbca41879b925f0a8d2b9329e8d26e05cf343e52e6d2effb15ca761b33c50fdd1a1af90b822b61ca0b179d16fd6eecdde6cb3586e0686cd5bbfe9707f66b8e478a4e69ebf6c4a6540c36851efd59bb77e73660c3512167285e4158956225d896645fa6a07ebc150586690fbb3a59692c0e6413fb9d2f44a112b49ad04b942f2ca692b21ae80b2627a6d073eb34c2ec15b775f29db32000c7654bc5996375fa6cdd2b21930376ffdcddab5d9996e168bcdd0dc76b8eed170e866a2b83a6859363da84b2407f4c92ba7af88b642da4a882bd2af4cb702ed4a142b12d73bf033c76411d4f7fb095a93b8403629a182ce9ab463f6ec46ce065afa6707c11361d251d3f09048974c63b759feaf5f7ef5460b9d864c8bae98776727baf847c9af033ccb5d927d1710f1c0e8151d89fe0cc6fff29eb2faf69f8f7b52ba11ee5ee79e57b5e5556aba58452024e989b1bcc41482d1d07b36779f8eee2af476a557ea2db9ab9643f949d6472230e85dc210211337d7629344e82dc0f5d15dc3dfae84212dc99bd0edf56b1aba9b3112674a5794954191d3be5ea9d8e621cef9820b38d3709ebdc31ca07b6a273ccc00afa772e221ab49c8679ccf2ce098f32b83e20f8f8a7dc8f95fd9c7ba27c8f9a4b4e3bd4772be5ffea34e4c393f2ae9f1330686fad016f36cae33ad588b0869a20083342640cfd979d78da831c02ca692dc5b988d354c269559289bba70830baa30f98219e3bcf24baf9681c0f392faf11c44ac1bec6aea2db151e6bcd1910cef0d1ac90753f2f43a3574d0eb666cdcb4caf2379a198ff193586a3b1ee3ad596bd344dae7579e1d21b47df13e562cacc2d02ba3853e7dd4de503920255fcabb07ff0af2d645184183a3ce237abf7a68e28e05a147db73f6545366d2ca78f24645079063f0a4236f52c53ea0a02fd1b5f96997555e8ffdd526b4f0023557addffaf086ceafbfeb680fcea91478177e46e479af70d587433e24802d6e90942bd6864b2b540a7c0d8080b58ed05baa57f499a9deb456dfde995de540e8364603c274cb50e76469f2ccbb9cdd2371ed02d9082e2db8b8d89234a76de15bc94f28327ab7f3de5089bf91d8126e920a71535c28d0134a9bc96d3e2a939174d56c8d4cd2d7faf7cd1cf1d42dc71f12d01fc58f249cb51a512af828138224dfac8c291dd5cc50d1203f3ff1282844a96de74caf7222743b230061ba4fa8b3a31e3ff32e67f7485cb34026824b0b2e2eb72c4d695bf8560e8593ab6e77d9c8093c84dfae8f59d242d0da1d4a0a7dd9726e974285a7055d61a77117f4d8a6f2104fdd107f4a78d894e804f14c1266bd8d97127cc852ecc95fad1ce68a9450bb48e511a58d898162c0636623d2c40902faee34431e233994cc1c780b63b8929995993112c257b41230018d4a460357125eaa23d0b2a006101462b308d57648d38b7feafe8509a937537c9e13471be2ff81d496b08b88eb00b109d07a4aa2d4629546e031943710c9899a5e0836af9b0a766e00c41cef8017d24669caec26b866b0c25065d86e0a5fea47f73577c3fd90fda80d426f6625773fecb8d39b99baf8a4bc413c2b8e1b7bf3475daca297242504a4c0a6006ee135a8dca8484484e261b08aae3dbd1b2f776840f4c68a1b0207efa851ca373174633c994950c2c3bde627cd7a66be683fddf2e0e1999162b7216f4ae3b6978124c34ca6fa80d4274126a9bec0040f0bd0edfb9f86a742dcdf749fde8b08c461d0239b5f129b14f039de679fc620ede5d4af451e24da12afa9eeeb6897ac09de32f0f7e2298b3303395a85887880aeaae717afcd2f5bd547a0cb6e308044f79c82aa1577997f251899bbafff26360c965d358270fbdec0bfb116cb9e9391403d7cd492f50941b38c9dadacbc1875bc59e8bd80831c39113d34194447e2281943b103761f9bb4671e56aa296346882b425e63f52bb5a8514d67261d0d274fc9d4b36eabac77bb420ec2b2caad4beb07e6499d4b33c708adff54889d21668369fc7090b0326698abfdd4b5300129d4ba43cb6ea215aa7228fe05681b94634069e6e4dcb9f6fc886228e5db8a0c58e55fdb05ac7460bdb5fceb645e5372c059e47d14b1bb9658600ab5306fd6e32a3f08a5d37045c87b4ec044fba621cecc779f713f5fda82d4f0ccd23476fd80f2c0ce24ba6d28adf804b000f4d82e23201f239a5797bd0473ee419b6aaa164687d226aaee5e2981ef1cdaef0313ff5a29461c44d7a8f7f687f67e90502423490d17063e63e42ad9e51be60d8be92219273439e98270d11e7c1c00d82f50e882ac0db5c65bd712ff869ec9a96201df259044116fb4d7683c4ebad352d162a99c71c6c5bae28ee2b6a598a79c7307ef4e7b9a6a59191240cafe48a5aef442efbdeb8479ab1191a2d612007a7f2ad0f9fc375707a8412a5a29af23282d33f1830822b73176720cca5360b6b4f511339347134d35e84e24efb2be8caed8fc13dc00a696dc040fe15d20a506e46e44397d9c366102f1b9c02c70c4bece5143f453312fe6822bb35315b22ee6c65bdfaffd620829baa68b62829ca138033d5cac4521cacd946d4795c9d9d7cf4f3eb1b88e3eba7bf4b4b4c0b1ca31849479fea5d0e41fc311d8dafdab56bb94d6087acc06118a82018d8831e63b98fdb8f792c2769c743cdc6ae4223a8b3f21a6491544f6445fafe7b069280179bfdb31f5fc9b1707d80d11efbed290f1f96a4b7d1c06e4ae12e0381f26a96d68dd7038884cd1f14c662b2f6591a88ee61380dc9ac13629729bb650e0fb4b3a81b7ddf3c5f556956eef432eb1635525c922ee2b56f76bbd538bcbfad22e352897bca43835aa4af1750ed1617f06ba3465b34f13c7a802a6e4ec43ad58472990dae1839378520462d470cea4752cf6405764cbc56c51c49600e6e985177626110bd92a42063019659d2c5bc9ca7f3506a061a3a43277b7c8a25febda509ca25c986cdedc1d90e99d28934d7ac6ad4a541ad037cf2287d5e35a030acf96c88fbfbd69438780e66bc9dc315c208e7d9a70edc2cf5b4a1488a3ee7e09923df85708fca268639362e5b080890e7761a048742432317998951e3e56635deb8f0d57427afc685cc345d64dd530955d298afe5bebc9c68b25bc4eb1df26a493c80877bcbc1dcee076eb62155a6dcdc8012d9aaa89db3d5b65f75c276c71056ff6a82d0e3e2f5c542e36663fd43f0f02b7fe9afb416b40c7d29f4698a38121a4fe00911a83d4ee0f1ef82739ed8d5630965d81d41d892c8f381e59ce73c9d7158597203591636bbd1d9b11d0e7894227b636ce154963e1a36f44a242eac64b25920e554a4343479d60c46dab89bc678a5e18a73e96746d7bd026a834509b755a3ff3e1ce407f0f4073e8ccd7bf143b31e0952cabf222f00063ceebbba08fecdc8ba563963fec62f8c6257f9152ced37bbb06c1ef7f427b340bb5c019b8faf6a6a4a4d4b2855f84df3c0f19114e711826c53ac617c43157a929a325e9d45d05b6349cbb526a2f01e3eccb0547e0bd4c503481c7d98569bca140b47e6cf20adcdebcdaf73c9230828b3bf0ed41f3f427821b43717071882096e78e8361dc06ccd0eec0fa8e4f25ea7110042a3e6c53ac069ff83a4c006f1ef876d8dbb21c4c4453f002ed81920883171f167247a1b31dbc7ae53f1500c7d5f310a4b41d0d5916207d1b988ef2c13c4dfe462335c12c313ed233aa78ce2d945d710989a683c7537256b18a89a2c36a3195f14078005c46c239ed14293655bb7fbae9fe1435c702aa42f04358ac2e5128c0146d999a898e6b1025034d8cab4188fd622fc93ff40f54d4543f311bd67b54ada346ad4409a28b43b376711549ffd7ea409e9d0a7ded0de2f8a8385af520beaf8763971eba1ceccfa1427161b64daa6d447e33cea343b2d4ff9d3272e447b8cf3b48af6f224946a6229a31d478bca067963956da0f154cf805cacb815f6923bbf8ba58412f52af2b4a51c8d6fa6f68ea5aeee167c3a37e9028f4e0b300d01c3c928dcdd9e5efca7a9cbea24aadb5fdc259b80655d320fb516bf0795f925e9bc8639d7724634136fb8a1a17504b8119936c6bbd1e7180b361313a9e4a607b8be5ca1ad00768bdfbc8ec4341faf1072a3da67a3a056367e3c0e27f809a72f9fceaefdfa079c307b01640ac5b456852bb785c85e0322ed42043a5cc5f73b7d5de9e2b090fd27c4609ad26f53bcee273b8a12c149f9b018286babfe51acf26d16091608d469b648aeba1923c7c8a0b89a1925da90510d7c2b285af295d0d3ecd1cc17f76caa63039c304120f33934ce165efd2b4fd758aec66b042b7b67ef2efd578a25559940c74ea2d8ded415c9ce841d43b59291a5c2caad6e9561e0cbf8b40a60d854b2bebecc1069b19c9623c7dc6c557ac17fb72b1eabb9523d71de0367fa89319f0708346145c575fc512e39e3d6136e6ca92dd95329d08ef4a1d6576134992a68f4d66ca2878e904aa2d22d3cc19886d4b99bdbd29b8c6059eae1e25f57d0dd0b3a9bf63b90f8381d38ad9657e4de00da468b4ed131c0040236b6301c7a69fa1d36605bea18ff7129af0c0b807bc7fa23a70507aba59c4326d654376d0278c9e10be9c5b79848c327d95b3add9f73f49fb26669c1a582a6847fb2164c5556c9e60f3ebb88635df781c7f06df46c9cb98a13eef2f9f6cdb6897ca8d4c335559608a308b93172d963e7240328616f971ae56a3384d575ae7d273db964dcfcba8f787297d25d63a1921cddb362a1719f0a88b300bcd9d9d623ac0c481a0822e21e8521db882582bb00589d6d4b90bbd3a417009b59e0f702d72aef3086ce885874b3f51af0de940c96160a83a97df7f0831253025ed95aa5abb2dfee2aee3665486b72e5f6119dfc6544219c3c57270e12ae45e8c00497e34f6c4071699fdbbb0cdb12228e21071b7670e6863c8d6240bfbf0ecdcbf35b5285212103a2b87f8e1b03fbe8c79549c15861f49a3ab3d05cd03662ab5bf455806be68275b3c9c111dcb6418e87c59d22aa90a9c945ad8f3954b492f7fd0acd8d308d4834c535769fefb1bf8b5f44058250865f1f163649db1404d98faf64f772042e7f10d0855a9023982470af04d83b05c261f858db10e580573c91ec089713af5cb5ed96e850930fa25e2f2395f912b9f98ec1219308cf96969fd7c30e83fcaaac8fd8025429153062c1188b86cf4c35095e6ff54a39f0bba3a034ef1718c848e87227b7815eb4ae9e35f635a7f1de874dbc73bca1fa439a5dcf696f6dfc7ee121f9ba293446c2497e0f2c427e9550ca3a7002f99a1927e9f7f411f5e1d55029592dc5fd5af57427070dadbb6fde8098dac94f6e52608895082a2e79224a12a3bcdc831c6ab030cd70da580830120b2ed55dc36e42a7c676f8f6127e142d38a450941e61917f672b2c5bf1270862e23b338f0fdf9def6056de008a2080ba0a5f3548d78b9ddb8a95f67a0b20ed1da0331382305cf828fea48c8e0165b8a81486e9de4cb4209acdeca4a29ac78473b6d8f996070a0cfbc1ad9cb3cf1dbe6cafc99f2b7956a2acd635fbd3e012207ea42105aa7443b4440494150725a738d3cc8f643294ac096e35aa50b8609e86d5b7923c619f1bd44036145d98a77a8afb76a67d66aa2b1764c6aa9466b669843adee7c2f3a28f2f922edb9da78952548865b0a495ea5425e530fc56770b3d02ad41c6e88e44ac7e5de83465707dd486388232acc17d0f3d8db507d550d4cf2ade2592c91efd28549853ab580b5ad139daab4dd1f86ac10805321b83ff48cb40c47623ef248e51790ac7b24928e779184f38f49f0c2efebefe2d5b555261b91e20f940b687218c06250c5364f44993b77e6ba348a4f1a71bcafca6f2556c7e7dbe25485ca02a59e5e83c118792ea940c4f6b4bf319562b1b052b4221ca8ff4071f60b536035b1e274533da775e763eb2f06503ebbe421dff2f21ea97a0e5ca05684c92e4ae6a26f7051c07efcbbdbb923112258cabd3654084013a5c1ffa50c6a1e00e26d854216fabf65635da809c15d4970c030c282574fc5444f14ea088a98879be41f187125e137ac05560b4088106354b4dc1fbf4fc52f58d543773c82f08d5198394f7d1fbe5b2074f5088546fbb93703b3ef46e7c95f54132e460499f981626b7ebbaa65986ec5b765e9b8782cf367df7196e6f370a145f243b2f8a5b63b1e0c5b23702d606f43d1120fd7921cd18fcc22be36d1f3b45d97198ce741aa4c9ac76aa65b0e287c51e0a55ea0d06274118be113b969661d1916e71c559d64d7c61475a6aafcf6e91156bcfca3969e426425963a272d4a5744d5d63b41ed85c341cc43cc7ca93f85728078c4dc013371c5427dc938b51e982b8c46f9098925ef357b50d8f26ba15e27432c512271a820f7ed6bf7af663253ba78f307c2baa09a04136d59fa9e09e69ffd91338ed35a73047e992ce472216b32d83011d066c60a0a3bc177491e600aa7d2eaa2fd8460acd134781eb491ad14246d560355cc4515dda6e83b94db915003a62c34432388b1d8ee42486be8241125260b4596c69850af0c543c7fc597cb01ab29db7700bbee72f8f24bddfdca3a0fd8d037a8e7064785063d23715c89fb47454a2e40840cb1ec52e53a0bc0a804e81bac815e3dc1ce64e4b2fcf138a22525e40cc4f8dae6dc77141af0d669c71d6771ada28f9cfb80f4f3fc425a8f9e56765b850c653134f9634f6ae5525b65801b80704e8152ccfa31f03951f7ddd58f5a6c80756c817992e2fc3ac000d81d9fe4a48f129f92883b39c40c484afed86836b897c40b584076fc3505714b230f44a30b0f38f12545dab164ac30000cc2f13a512697941552890825c6de85659d541279399772411f009161042a3f5d1a2ad1cfa407bd97a6f4cb4012bb9ef54e36c9f4499fd0b4c2668bfab3155a3b5e7b9ae4bd614f3e3289c7faa1004c2cbc7d9705c998971922d34cca42bd36441d3c7d735cd4df15129da43217c666a1cb04da93d70118ae440cf3d7c9247a7514e2bf634322c9ac610ca52c74fdc5da1f89aeb8e0d7e2418ba0760b01ad2775c35d84edf7d8b9586ad700b39301e89ffe59a5d00c80e1b8daa69406b5c64c1ff02659c145c5c900614731687dc038590f029dcd9e7ff0159734f343f9211f9a5303eeefa6ccd366e095d8fc0c94114205de7bc1a279837ce0db8180da9b8820f09419041d6ef02b4641fad7318bc52bc4073a0944e10498a6ac33651c072fdcbb254eceb7078ccc7b207ae13a24ec81286735cfbed167b8e88bd0ec29fa33833dd8f0380d527036da9cb2cc9209c05f1854c9719e08806fca6693012cf001797b18778240e84e86643bdf96e8e7138fcf4e4850b26810d108a31fb6e403a71cf840e6a8139968293447a1069bb3380c0ba32b9322da37b7e38078ff5aaad78da340393f5b55d6cdf1029ad2e146a626c8f5b9b97ab52d16c0e5bfaf7cdd2e1260e2c9d534433fd6a46d106dad47c1f5be8727bc1c67577a39b2f7564e048e46e063d5efbd9b3cce882b1a0e0ea5396916bcafda2e039c7a4a00b3d807a5536d92c02eb7c30cdf3ca008780c487f6ffaeb50986319f090538afce3437c2ade52cf825380300f77579600d7774af4fdebc508c015cbb1370210875203d58fc080be0804be75fb04f44d38607f0402f42120b0ef20ce2cc0288031729060738fd9f64fef8748fbcbf736a2bb969d496bdad6b5b0989ffbbf37ef899a7156b0598558eaa07530c88053cf5909ec0671c4f221c3d917e61aea591603048dc7dbda09d6a5c7140f06d0f19c11509765a711a1853adf9bf66788dcca1a047d924a345de7ac914e35628e177e544999ff1899eb9a47b71c5d6a7f7101a79525d45d5791751f41a30919b75377c83d5ec760f811a8ce9df947a207ca35192b24f01e164498360525ffcc4933fb20b285164be3472fc95a032cf1afa50f599a49d589c1eabd1e74af42c74b4b8a98a5995a969f2544e0a0b4e09207649c5589414d78c3a64a415909838087be83f309fe08087c2c187e9aaf518850cc2bb9572dc0d995521fda26b420c4122e4c91f5ff15f6e8187d503830b517eb18621e890dd7232ba5084bc178002ee7a0f641e5621b8967002e53d3824b8fc2991706e2f44328b318c8bd4fc468d21b4154ec2d44315016b62cfe1c22ae8eb29441d10b7b9324c5c004af303e506711fccff49b857c30c5d8027fa934022ed2ff59e4ab468ba8f7d5af7f93fc308b09aa599afd22e5dc5440beaee235af08d64861b53575c5fa000bf48d9512e18550579b798b2b1477b8c24214de5cbe363fdec0276a2d074271a48142398b26c96a820a744f71c0c73df12d1ce19e0b13651c36610f011421a57ee4bb993d88988012e51b8b1efe69cea84870b08bbb99959c4c313edc2038fe215539fb9501b80e84d372e970b0a3f3a5bec78a03d854fa415e710891abaa89529f447b7433cf1eb89fc2cc15dd993deaf87598edadec61db8b0541784dbef0a4c1e06062d911388ec837d9c870a40226e2d5800dc711e58ff18a47cdac4d18741b9187dc57489f1b8927103f735ff633522445c6aa7f550c6cc988a81e1c5ea81be5228829875c93f34a5c08de61c61b521d09cff35fd31fd274c135049de6b1d6076fd2c591b5afcd333564d9014939024c7b518abd9b7a74163aec849cf974997572b30c1092d515f4211a84e1656fc9a9c6fb80f5eef8edb66dc7d62cb879c80d162648d730abd8a5c204de5a0cb9a696c9b1bf16238d2ffcc362fcadc2c74e03a4614605cd4164d2b679c668ad2c5b5510d5c5065c72ec90bad3c854b3f0a2636f542f1f52413c193c426302077770a92ae56c5d9ed7e23fb3ef2c1de7a9bf47eb14f5c165e0c260cc3f7cac95a4787bb5e0cf79b1ab525b2f92013bd6d1df333ab1813a254833fd89336a921757f1ee952faf8eba7b8789cd1b811f70383f0ab4f9485c2badf8f3008449e08e6c32458f37612614597e93fa70b644a10e4ebdce164e01c12a3f2896eb7fbf23266db47fdbfc8427666e4c3ae205fd81a7346e551b6c930b414f25b7005f66afb7d732c32064dd53288b9a3015d10d19ac6d5f0839648bd9d7aac2211b867c26eaffd461d9cad4253fa24ec1424c388b552dcf6c0e77837063c66db02a0506354f7e19460c0916c1a389b3a7cadb6de4a7f4ccb0f98d44e2682f9289263b6a18b436b136106ebce4dd11141297eb27bab65e16ca0c21579b2570e186d5c38381cb8aaf890ed99f6b5434cded67898d829204694ed5bae7553c6565473c237615f95fe660145ac250369ba1fe51313eba34ba2c4902a5378facd69d402df387562c857d686cf047aa9839c8350414503bdba6ee08d684f5a663de4e80c6b5ee5c504a271802d28ba1dbde3afebee8f105aa21f6613c33870424fe539e2b00a81bbc8a8c2fa99d2e4be8d35ac4a9dd06d3450de4d937ca539eae9e73eb0078e6be4464d72e1ead9cf4118800a2eaa759d5fafd25649a3665516d0f7060c24de218cb58335e5bf00c31d1121f6c88cfa1359985cdd734ec806a83c20528bde46b723ebff82717a5cfd7606fb8f88e3a2d006e588fc08b4d53cf78362ac234772b85256b34f536754723cec996a05317e10daefa18108f9b9b3a6af1dc92a70e52ddc53b343002072738d9470707742a585af0da35caedf84d1a8a14dfccb1e8c306fc366317280b23dcddbfa32886348a5f0107283db6fa5d4430a1780e81d57ade9195a0ef81f7fc2861a4a61759b106c5b64f11aaf86117aee41d7d5c9f0db1c0ad5bb51eb4b4822d4cd429c7d494c3e4f94812e6fd4bc871ee088ec05fb8b1670ca87d0e01a0e66428491290ad352a127f520fc2629ecfecb76572966c5e35cd4f8bd9f51b831dad1306e935cdc4006c30e458e9f0f26db3e718d0e7b90ba2fea0d23bb729edf547cc9a1db91644f63078dca9343b98ff40359e41049fad41d5bc5099ecef0d2b96b97e7b54a5c8cfd02553e3af8ebee3dfa711e774aa54af5a5ca8e14d4b9970861b8fc153019cb016d8f15d325373bdf878a9133cee97b33254586050205ed114c33abc82675a9f8bb6bb5ae8f934795a2982f7025d42aa91f223a9601f7fa9eb1d34ccf03165f941d0f38ea8636cd1dbb62da40e1a18a1fcc9f1f4c42804d95333da7b18c925883533ea249235610448286b62948c2075cded6b3e09dc3d975c5916e6c642e0c722005d50ebf5ec11bdb6f881e040e15046d55e6f8d11eec73da2cce83d5b1b90a5810c7ebce8802b0fc78a8198d630f162485914d13ef371fb0a103715da0d30d4cdb382d755c1173748480a537d15cd9bd5f03bdea6214926fcba37fa581104bfe6ad0ada24c0af7bd3804f3b5442823df8be69899267ce905c05952b67808d8f174a755f874a68a8e82d30f85a6eb9460fe5ff87a2466ba5c0610e0373d45568d788593224fdfdb610301985a5769843e6028eac36a56ec12b5b1ec7077dfa057b1c25d8a7362231322046392a33c6d61aa9885daaa1d3f755dad850dd4e72d4077ac5bf8062b25a66408b7201c8ea3a9a435b2ecce60dc948d7e06d9801e5c283c943f8a6833845c70c3ec80a302efd024610e05fcc1c4880432230204383d5c69cab6141f5882e3540366c5a724d1512d9089d525c89b48703229063af1a55a4be8c9b7fcd476894dd5cc80170c15ca0b88e33193933b97085890c012c0650381d31fd011ef67e0d0a2aa8bd61febd02d02f792657f4e8ea339d09b5e29f818392ce74ec3cb4121db943a0de903783dab6070249205215827676818cc9ae833790c0ee4c83a16a4d6de269191917a09d07095fc7e1e428c02804f7a296b9df1e51c760034ab562b4dec7ff54ccb2b24a4c2966cb54712d14b39fa9d87562c4352aa49918500195a54a8c1f3a65341263b67ea26bc490b4a590711231a7e34e84d5428c11356f0b444cac36e583495610a32ab6f2eb4f9220270b7718132b9e7b30542b34f62d883973f3074b46ccc42fa09a328378f3b6064c757c92b0e18eb899815f5396887ec94357f9fa25a84e2cd515582c7599941daf723c681fa6d4167200023dcfb5eeda66e52ade9defd5542eb1666b4aea0aca8b09819fff7940ffd4e92a742eada72956b9603303d9fba251f62a592ec7830ab893f906cbb59ea529ca62fc392bf7bc55324e5c7fcb8e0ffde6647f774f9b22f41ff2dc6e1819615b13fc059ab56e4f851ef5e3d74def7977d9f04b3c84d5ef0b411606501839942d050fbab231b01c4cf185a2ba32071eb5468be1f76083320394484e24fdb5e5644ffa051bf1dbbbce4944a7b8cb9d0d1133d3214c8312b1126fed9c0498ab58b043457c310021e7c02aeaa933289b8b0c2cf0b6d08bd5384834a742de55e9c3a4418a01f5ac4a3b077ce0dccdf32568c881d169ae86664b306afd5838fc8c80214b5ec0f342826c8cbe16c2b055616c5e04fa421fddfdc2c23da45fa858b08320c417c08bcbf80d98fe34ae2cd434bb5d0f8d247a171a6ddcd7fb429c147cd5537e9d22bbf7c4a18dd011103aa5a8c2a21b1eb962aa9c89baa54f95f5dfd41a00d995990bd8aa1a42e91a1d9a43ccc0eb187948c19a87d8077ae0a351524053e6d8f28a74689ca85aa50f2de52dd9f9432669eb7af61c99df10d81945524d9f34fb68b4f88e32097136f1421dfb6b46994a19c58a41511e53be664fd24500cf5dd797e331d1969d4297ca8c8c72fc0d178e30c4f1cff2a893e71246090b93ca9ceeda75601431e76f8a3c8151441fb52906f3ce082a3324d91428806796c6277e75ca1d4750380d46019a76333b7982c4edc2bf6c18300a18362793c248f7a773f23341bfb17feb1c1d5f69082ecaf6b32d06b73bd9732893d48dd8eb0805eb3f630a34da5941cb71a177f9ce7ba5c9350d81c1418243d071561fa0eaffaf94d9b7ee6862fd2532a7e17b17d0556e7fe7a65e846fbbba2ebbbb5f5f26325d66d0cd1c2f6c2794fbcdcb81c9b15b69a223b511fa0d9854d78030c041a85ba9fa842656d90fde17c543f0ff33019e148ae851890f59e0067b6ff3b086973678f81b24b4157ce9d1c61aa521c41aa87d3aab2647fa3e38af167d3294e34d6ae86075d2764ed47e9e7494654f7b75e5139080febc1cf780aa39f980a0fb8029311a498879f7f1da0cbc9202747bfdd488263e711ac80b5558f911affd2f677ce26f3b4cdf8e43e8dfb330f37ceada2df1c1c2a715cde70dd989c869a9971e338a82831b168ec51d77587298f32724205e4e7436330015871a798f91129e1029b27b6c86afefb16fede451c72330b40eae822ceca6caf4a04249133f8be4ff3d0ec6f5d48040fe32aecaa81982f9cffb101ceb5181c27c4b2494ba3c57e3f078b555319a3a6cbc1e280dd074e8246be9712a13502ae61d8c08bc66cfd9be821297854e01fd08153ce4365980e2abd83bc86769fd95124ee4da7b7ebebbeb415ff48a32f8f0f874ca714f7ee4fe53ceadb94e976b885d209658dab70202059cf5829bc49f7d292995bf05ae57a66bd9acfc879ec5955c954fa21f1366fd1ff5517fd767fd550fcf066dceb9922dd5541807832e0d4bdb4643a6d83005c224de10b8009bf81a40b077eb800319cff750a26de8f2ff92b4acc1f12f5139b9ad7b50a808325254e742898c014b4b170d752849e094812e57e88e77e663bfc09141aaa60047732ac8cc71030e82a3d2204a74696d02ef6e4104aa6e0222952644ed9ff808c292079915839bc1fdc2436aa420c2ccda85c7091de71208319ac24a8c4999787aeb1dd43862341d116306da19f2cce57346d5dd91cb01b8f58307dd8f683476b599a8d2da323751c6990660769d6b0b3a2b28b5f2e6d45652ee545f50c006afb7d911c370304713d4f6414b52b5e9dc2561e8328d21d1a94b7d2ed8e4b0a83c61828b28144342c7a534d557913efdaee977b6bfef186ad3b5a40e20ad3472a53990c5da7a4f1f18cc3e1682438980a743d3f9e22ae7e304cc01dc112ba5322d7893952c70f910195142ec31a13b943d95e9663555dfbeea95d6fff342e89a0c6a15ebbc6eac0d0c77e0404b6f4d7343eebf06b7d41c494eb52b18e2695c1a225ca39865782f1131c184c7606dc772e009d3adbbf1c03674dd7dd90aa1a8b50c6c5be373796648f18c2f01429c37b8d70480116ce71339fd19478b0e320cb1aa0100be4a7e2efc56af349e8f28e4664707ef79736943190a7d51366fc6b5c5f4e931243e31f53b094c539be4a9d2d1bcab9ff1c23283c333852e6ea40f9b85ef555a1429e54920af1c3cc214e0551b0afa828e0c84352c40c50ee37820da9709253132cce2c1d91daea2189f8a01a6ef3138115311985d050c865c78fb56ee40eb190cca20288ea91561c62de14bf0590813b7706881cf28ccc31e4fa352e10a76550f7be2b6adc23b42467446174ce3104c13ec6f9b92951920fe9f07731e92948b094df1567f7bba1cfda0a814680949c813bf6b07dd78e27d66e593768a683f44271c8aa0101932331e104791652650737871d6d1cb8992bf9bf5308e247a57dc53f7d76b86a617deacd0c2fdff32b0e6fa6985c1f7fe3cd0cb640b48ee79d485853cc61cd9edbfb57dd855c8c9f5da87f570438201e06567731f2e8cf2ef85be5f6a04b380f83d83ef9bff86b391b81be71fc889e0b90f35cda7e1540e44dbb07ed9e69d9d30c51588e5ac2c26d88b29cc66236b396d36e00218d706a76f6e2fcd5e8ada45324203944dcf81e5c820b6c07e19ec760fd431588fe24441265648c1361321f0cf1b798ca11f019f976671de4cd0178c744135ea216878d036130ba703541410adb9c685990d8f7ae5af07d268decbcea258c226d6eff9f19201bced34bb7ee7814c5fb4c647952ee5ee7e74ec5f7243c9f8ef2275bb2726fc9327b094e049ba7652f62e7a6f61248fb79e4f0a38617e6abfc1b040a8406018411eb13e6164574dd81a9ce9c515d5c7767e3d4c4f071eb6eb31da2fc7854c3b724aa13b8f6de5fbb628a0ce0f6dd5b53626a38f409b860ee3d37f23401c0e5de286f3ef515c4f411d1aae55eea4fa264fc4112c18371f2223dcbad950f392ebb5599c1ae8cd7419295e490ca2f703194d2b6f8bae2cd51812f9b816f52d0a8631cc9758111bfd86d29e7b590476b22abd387a07ef542320f4ab3d416eb2ed1e4c9037a970f13237af6dbd6ad422eb8e800a530f7e0ebf99735503afa39b8adf670c002daa7bd574bc1fee4f27436a13c2a474a12763926b41ae6b0488d5500707f5b0f41c5826d95619c14ee40022f29a8f4f89930ee1ed4a7c6a93ed129f60584e129b03e02624cb5a0594b798f69a755d2d943cc64b18b38b599444ab8d8e6c1bfbea016f53921f8faade632fc95f5f5d683f95ede5a1fe2a3d33e2004570b0511b7fef182466881c58d540f7e3bb56a249d1d8ac94ff611c4a4e1d211ad84f1199d8b14084a4850b64e42d804bac6dca4d83159d93b9a4c923a2e8ff52a886f3f63f99cb28f9b9c96ed9e40bbcc7c915bb2c77da7c7bcd9aa9e9139039c0d2d120aa51427f34feeaac9f12b18c1bd15be135b1b02c1b4d3c085ef34b55f39c6a12ee75497c16eb287e8a0809923288666ddc4cad75ff7f33e96587e866ba9121eb9b9967d542ddcc569dd07433952596ee46eec7dfcc49a985bc99d5a6a2f2660a803e81a383a67fa137933d937f763c6cc415eccd3c8d2481f8cde4c909314a19243f9a6e08829d1e29f11ade1a63cff380d4d87ac51f7c738e6ace3c446b7a6a5f9800b19a2e200520d074c85461201854eecd224c0d68b515d68f47578726b94b534c895dcfa539b65dcb2867dee7b0471432cafc120c4bb36e7b503f3dc402e7b2a5f91a5b70eeb2c268b12fcd486a6fc0a9d30c97d5d65797939a9b2a0d08c86eba84e6d283015b237b0e3db601f63e3fa3161797dc870160a5daa41881ce0be2ad4e8adfdc04c622b694afc97fd0f9b4ac344b803628fd215fbc44711ec3b9ed3e26b252a0ade4d8090c063bf4caf6077bb7b0aa38ace29d581af99d144e9c928ea556de9b072463a88a8239a877abcc2bbef131b82df1a3b6e6beab4cfd2fd399cac4324c7144a616142f1a20ed5eabe78809c904efc8e49e439a26442154eac554bbf900c4fde5ffe0530a8b881761c087cee82e4020883d4ae2dc958be7537f1f2c2559f72768c39be300845b47ac6a18bd62fe908b0396b428ca31d0742d2b487803d00b0944845806fefb46fd193410b03b07300cc330b04581a320081226489432893b259a096d92423663b15686feb98756edf93974642190dee2502b6e007f9402db1bde1cad175c70a89c681420cbd7099e6109842f538155627d0b2c51ddb04487481c363f762091af24eca5a4bb3fc96ec5632739c51876b8ce1a4d1bf5c0e1284ffbb8896f4f239e5889062b1a80d1f460cfc4054c8510100e5a5161cba1498b9fb6299318757a0770f1b11504cda6df60018b42114836bd28b0c4429819352d0b1eede87e8d06792c4e020d566f1b30c62522621d901f8c202760f86d09186b1bbd9d840b810d26942124e21936004b093e33ac2c2d8810658be773f729a9868e8d265c222542519c70a52f9af1a595481503b64e782cf7b01996719a21025bb2f04b54c2ce750a07cd960a6f702092ccb42b7e7392403274a2f08adc0a077fb21c5d304ca26243133f84cec068208a54e74bc90db6030d06e1c03118ea41a5af4600908be05244d004a7cb439be18fac24922aabd9c650358b5ca14a69328502e4a3879d17a72f7ee2144a505896e9525c928492077231cfd8464080500c97569f516349112c3f31d2c61618a04a11339c9b8498408dd71f24135892720a60315ab31125018735241253850a1bcc40986205859f097a8167b006fd275061562a707d215920ff912276351ef0f46511082521a89b652052aaaf4aca0b1257153c2d8163c4308f9506c63a577bdc0f5c163a2518d542d3de16d81e802e04545708c9d8843421211e12e2c110bcaa0c2afe2870f1f366521f2748baf618427055f83cb469090eb92836ecc4e03482f871f93043b4f469e9c34a6b01e90ba53249c4e04451818433707a382121fae4b08a0c2b421a722c09a425d0db0d454632bb3e2e5b7cc0da14581db2cacb32e8a8c683c10331048956e400f207c896b36c11c3958c6a35557047f908e3c88238af38d30d5f126dd5255db82923820d9e030dcaa808f1c4302cf0c718890a788a2fe440f2cf4d81721293916b5f911987cc42592014f18329869615175a48004cca9bb045885200c0ea211811274562e491f1d17244eb119b25345c2453344233c3f913a10e22f89298087cf268357862b29aab63a5c597862a8767351cbf1e81aad247018b404da0861ff0425d51269382fa1815b02ac0685457e1813193d664fde081c40987300e17c548c96f8a88c42fb9ab1b2fa3ccca2c962840a141873556c8266f989591403f1a6d4000a3c93aa22cab6a0004202e768cf971a50a19163d859cbc78109834eac95ba328235d99c464589991712d7a34c91cbc612aeaf4d9c185ca1ed68c269fb8607a334470d0428197258580ba26e1f8d25ac9d081526334302aa71a58a5a7eb0f9a54f6a3079c3298506088aa6119e0557ba074193362ae4a2527e009335d7c9e0411302134fe51f02192627bc44a55d54b8f042d3f6810d0f3f4e1cc219a7345a3c11b442463bc810f6e75c828208286ab0a85120a0c94bd897329801a493aec2e552518c18eb1f930ca8c96dd90ab1122ac57557e3c61e174695415ec2a851f2178585c58558a625b289141f0a03009a0dee341cc03d387042587536e98550d24923a60c90a882ca80f1b077c57125101735038b16e99d081e5c7a951ec07a01330546c3bcc30236d42926cf921a1c49da68824500240b16a706833b96242918a92114998405122430b92902774c00665fde1f330e3ef0ac10bb628c5724a9120111c8410d9067e16bc485aa9c263888e608a3f339a88d1d306ca162d105804fed84d38c481c5f11e80e3d1004cad6b43151e4d42142daebd5030c0d384e4854af023165714745e679ea91a5060b2e84492c104c20f435419ae05546c5242f95ac1688a1f2ccacf1d17e1064459dc2c9177aa71380408e1e4cd8d3d376040c33c5919103cf63c2e1cc6a8c551db4b34ef79f5a973610e087451198a3218be0c750c414a5548782136e701d5b1c24082198104ebccf3ca9491820377d4f4109145d615c30b2d8c619a6dc7469b198c9a21593885aa47acae209954788a83c2038c21c0af3058737f380644255d66e0f1e428c812078fba6ce0f084c3060226b063a75627284b5415a46bc8a70e6d1875b921732808c42db82ac3eb3a4df26468aec694826d6083151725b81d5d267829b4715697e30902417caad856840a5ccce2d66910d99002040c38b9aa4b044acae50cc0094b8b141c0d0900b9964694180879192003623035f7856389d893168e76b49a1408443aaa93a3448b1c2b37cb222aa8b4598367039a1b332e38e8ad304f5820f270eda207362aeecc89220c618f7434f942db82d005a1049c383b837058050e7162c74815ad3342f888002a0a5d5b12ea72b011e0215028aa86bc362b34190a43b36a737b618987051844fa5c5b4c85c9418d5287b46c0ac584ed396003a1ad2d2d1f84531f9e6b61e6a80013236ccf2030b01191d05c529e7984c6814b214aa3079324f57be2d37e49fb32c820ccd612f4428b409d4e7d728c4e48a544216b0496c7d1179c006dce1abc49e783879627040d0e90a310d185ea0002108c515f95c610fa0d669920921c01cbc943b9256591a63080f41566a7d5a501a92520418237097d4444913a1c4daac21aa8401dc7ecb618d5a1c0e2b444048218820a4381495b126260b5bde61a2c6e3432ad8c6844a6d11e47848d90648ab11f385a26f5215a39b8e0b0c712d6df7303c75c12b24272f44060b4886f4a579d386ab29f062d85521a3c2744a84f159a138c63562659e9c238a745110a90185d61128391266802084531a62400485c64a8ab0223111778c899c220d55959c38331489561a52452316eb6762c0b5019412291f36a7ee148490115c28b84385d5d20c014b974b4118526eb535b14adcc66c4f4608f18a7aba834225ed23c92611bb9a930e980d5a7c6b90b48302d9ed8238843893199da6c7922eca323a35a28168707134166889ec4dca630b0a322f0d2325fe83015e758ad54c4597bf340c21a463e7918f08093c2c016f4045da829685d0a247043e66914ef0b23d14c8ee863e2011c0e1664c5129e18ad128439ac21f5dbf3985c3306c74f0c002d3b13f2aa671ad020c327311ed5e03000d81ab90f024b871526d5602e182325009be410770081ac43a2346d3163ec91818888569d9dde9baf2163e2106e239f19911560c93c5da194a0699cb3098056138e4a4992821a1c821615364a15a2b131644592bc2c2e5bb660352b694959514bab6b65f4f96aa10d3c7489f485e6ebc2a83ba2a6d8409219a349110ba61c9e383879b41b44e39ac552e33d84ac245a9b201faff654f8e10586001d1a3f88f0c0bae1c3c49f03614820997829ba0c3a13a8c695cc02bd0c822c1694c14310f6c44b2b7dcc7674154eb87a59350aa9c2a7a05111056f9c0a519ab5aa226d2834e5460c0ecf31444222f58052014b42883e7d301d320193e52b859330568b5d886d37169ce5dd206b224a8284d2a7b0ca051a2ed74419d715d024bc0d0624bc5d3d898fa411d445ac4fa0a33d45e25c11c075e746062d7a1e309a235dc287774150862a074168d809e0566548b3a92225c323beabb2139502e4b1d0c385a1d3071f5c890871b91d892400480403cd1c6df108c6105a622d5e302230578106a799c5822e187311ab2c72a51e4190972e28718c6a8f3d155b8c816526aa3d223058d2a11007cc1044618ed12e461080f1509ea0d954c6511d202b390c6968da646af1a6c0f58f9b25376eb610e0b8f0af969cc4cde803b866529c85b0055afe003bc0c80354e6b49c5c381a926eea5cd1e176f7c6491f86c7ae24620ab448dc09dab4064b14879d63ce90862677c03e0c62c9891f4830996eb111a408a08b6421969ca91b4f668c38e2754f0532b3287dc0802694f5cae1e4f0994e2d72f42525ad0a53981e845f60d0f5d551312a413e7ad40044506e108fa6b13a7b7577d1ac5e066c4e048d4618973e800f3af4a0f07a6413d90850818f940a0bd6c456198490274af8f54923b7e88d2817905406973858844024b1912981b38418358174d4f68417a11a9cb42b555e8a50d014b5e338c608320b4588472a51fed3c2d5690796b8020bc44e2c2344b04af986d0cb32519e075d59c67878148f987b242435990e2a505655c51388355674c853265dc19092b146cc15204e59387d7541fa718344919264a5d095d4c4980951a23d7f6af4958a691e4d551bfcb008a2c007b0f40705023b295a745d85a0a3a84ca0813630875d15c0d0222757e20a421522d4b8ee299a5e0df0d0ec2496e7c19e4f95cef810098186abc019a74d56897e0800b127ccc59930707f4cc808f9b425484c9b4c079a8cc5130628b9c1d27911c3a2e0c992821b586c68894123f674278215d5028936285c74829ce9e1d42690830e5b7a323edc2d9d76274a1c98bfe02963c33c345ec29abe319b20fc96631938c1253b356af571076b618258c1e4a9ec130b2d2e7cc0f69757ea110ab0334e8a7010c096d0483465d466aaef0725d80633c049177d149cc111889f58cb9a4327188989d6988d24a226ab2b21a9af1476a448e77c5dbaf24341dca1c3e0196892bc2cba33492d2aa3dc0156b7b6b7417887721c7165151142866a4f3000551bac3d6cce409b5f785254165e51f2eebc00e2534414e38694b213c539341c3ec21463019c0c5849b2b01c81dd602b22409195c325992d4007bc86405b4c5400f48e7cb9189b72042907491726a665e8d01428221e3fef8ac38d95a33711f4e74307317e7a74da2cc16bd4a5a94c550fc04b2c240e88ea4b0dc267959f1f220c037f182ec1c60e2d3b0d1ac15a20ea2e9313b93527897e57a34d2f5ed732940f343b0852d81174c39092b5018355720941841a38b1e360c2559200cdc2c7558e2282839038ac39d4b435cd808249182e2e00a2343689d0c6e6520815854e3a13aa90681e4961c4e7501ce108a435508a1157596a4c060dc9f903875aa8470f1e247eb8bcccd8681442c7c1849e950d1bf464fc893dad602134638789a03f814284753522b22a42c527f6593120ca133760eed46954b0d5a2eb00d38612373d024391bd60c10719d6c469830c0b5f984f4ec2a8398a22d863252154873f0bbc26124ff46844428e02b42c81f2553b365c0284c700061b846006804d5ad490c74b18251d6de2d4b922e9498ce41604b01a4c568261c4149af26b3106b59e7f32122bf4a130a1718bea80941429604a4454ab3073d834118651c94193d5237937e74199a0d3d097c1188d33885f58d61ea9296e22be7449685c10772a8384c9d70c155b2df0a4ce2b3facfeb85092a100c907ed6fb9c149041ef522ef0872d9cbe213a5642cec2d8d0c3203b2f2203900e45548eec025086c3251a93000f56112e90ef28d20c14a48a4839a768e21956aa1c26a53e18aa0d90a5853091d90ced02101e0f506aa4814c5441ab004e2d4e48a8e027848aa22753266d8a052e54d97230b0a0f0ed61d8b1d666cece18318248b4a305a735d3d9874e9b4a8a0d225296efab89916495055e4850e507c7b833fa4849050c2d073ec4a8d232b18b10f8d723ed8ae181682c1c2b5c9819e274ed27ef0814a03a6c50a59b30a6e4f8f313d61040758e1251c93b8005de96d180509cd11176b0fac783632c6402e0f214635c992417ac62cd08c29998054ccca2632804e2eba2bd7e59434480328ace60869bb14b7c08d024879f8823c6a82630b0d063554e05885096ce2a669a603ae855daaa3e94f893e5124008ee862c5c4123a2b4234419ed87022a2838ebec0397f11a06c9965c190c4c2e16e1297424e521caab40c83db555a2114f998d002b1f3fcd0384d22d26240c190bf127f4c105221e8bae18c1611240874d43930e410f603ca838f912b602bdcfc71b9d3b8c6242a17b798c085613236b473c74e0a23a3e622bc387aff9396024d7979797cc460e04688cf050f383c7dddc1f2a34f0c3114dc167ce42c4063734b525531c268106b08034c4d0a9199386397c562880b241486483daae200a2360871c7170434d3bdc414683a022d6430ec49d009f923480ab34748ae13122a6d6ad4c2310c96a81386ae6d8fe6204b92d69238513ef22241c80f9f3160baeca1324d018743812548f640a3087b7860596426c5412cd96400d6d5c6a1331a70848e78a16312e5f307a38bcf252162aae811be6812a8c04c0d0722aad87062dc22a9469b963698f6de3ab435b8eab40506a2692516dc53252f17b09d94aeb64390beecca982c2abe0da605f2f8a87af6ddb1040514a377865d8f14021e0cba5a3494810a16571021fb0c47141c3422ec3bbcb91b81a48b878bd7baaa1b4efdbaf2fc7b5ca57a283c6bad9d37d26e5ca9953d28806663aacd68d449170fffa6d1553523d496bd74976dbccdce78bd6484babebeaaa7be745d28a3aa68d501fcc450a2e32ebb5f863b7596c67c47fde652a2a44431eac85183068c172ba47e349b7a764cbaba0c1e36d8051a36d1069b85797b817883757f7c75cbbc0714a4dc0859d2a427491190bab29a7aa3f51badd988990b0548208908055f342e4cd185663834762003c4c08187a0c2a615e1000873683480765db744d900d3b8430f02460d109352563a230740cd92e6c0711800ca84a11215117230d5619401ebaf479b2b0b48ce286a859206497cd40422cb0b1ca29608b2b0368548f30945a21d200674fd483218896a9dd361590d24c46bea01215cb6e9000652267d400d023d9558406b3df528ea00053448a083bc2e31d2ea00b824ee8da4eb1e083f37724a942ea6348ab0900812e356140906285cf14053cc84d241a8b562a85788b26102c51f4503f040992b518290240ca52d8ee0047b4d468b5abc510c403d1492f82416a28d8807be6fa093738f4f0352c78402df2909131a2e92145cc26a91c1ab8b4b9c167459a416ae98d83ae442514014c63545c4c871a66102c5cc6cc4c126010152e4d0610728868f9776816e41db0e81f00852a42b8e8a23244f766c999ba00845164da022bcd0e2a34bd3a51b49a67818a8eae352a91eba67c8d091c3af4affd169586bdf02c08fd9b5b5b7b566d5ed8973eca3aefcce815a73107dd1fddbeae3ade8c632a7eeabecc2b3f731b4bf1cbad413aa4ed4d9b044dc2bc4e15e98a285658525b4da52a91a461f92c125076504674fc0a39b0b65543f3c6437116605f704ebcf0cb81b92945b6252b21808e4dad16d22e046d02082158fac7765bc26d5588220ec52183c202cf08c50f1bc92c226431e205b111b0cbc0205e585a850a06e30c8a1c42d88383c94e81d1c21dad438828e0f17182b0cfced180ee01677e84e9e66446af4a8c11fda1dc32f7f48a92b7c9a8c1daae3c4c5112a2e49060c58955c01822001924fcb809274066cca11c962ca458940cb2e24e31d3e1c54481d5994262aed051c0066a0b0401c891233609261e49af03199934689851f924918d9d7a63d301c2c7a011f90936352a284b3988e0814645df888d141a70f92758c95c81f9c0a8c2240100b0706550428d91216c706ed114b070f31a0c1ac35250a453242c5001911213c8889927609cf8d2a505eec842974231209176f4326b161d4e4d18a0d356806c72d29aa5b55feda2420205b71c1fcf2b254350100ea702707ee9a349b635452195ab3010e8f2a1b934578001c20833454700b99450851c0cfa8392614c0c5a8b121504187c558832b48e81902459d2994704cb191d5e88eab0d20971f8d67a42c358a989d0d3239bbfe49f50a888b86d26cb012e687923267733088f2755d256c6c924135a87baa99c98093298392a5642d53db23e704853d7510bd4a10701f04c0d46541150341b722c92d0451606012a26889ca164569934e45ec4da01c7c90375ac8f1e1654a5a0e36138a3a6c49a0b716806e11011938473d9ac0b2608a1004549d0c8692d730f0e0336f6d8b46120de4c2ca57820c279a50c96bb0090ad60336aabe0a972678f06348cf908304b72b7fe4cae40c4af2838d21e9eab08318bb3d018d5e902ed386460ce9209f01242327009942cdc9a053a8d383a6013b6b23dc6e94f17148c01f24133c5001542a312f107b8e6b052cbde10608588a0a3e9a22c910799a695831c3b050ce55519ae1963483ca5891dce82b54b6c02a02d323bb133e22842210226e6c4f94099a3ecc021ca28182119a30e146457a9000c5f4c89e1f5932944e3d0a8fcecb235bc8ceef6f080620871c59620fdb5230684490698a0102fd499046831ef7d8c6544871c2dd300582bcb2eaf0a2ae0b9b197d270439eb00a9f3a6f18526c4380e6768ce44a52090c1ab02c58b142044df159243886d1f5163cc7c9cd870c81307c11418eaa4558232690958088712eb0a038c1631791434d0c4d42b03c300c5f7064a461b026790ef12f2db57e6e4c01061d193a02f039dd6e6a429d322932579e9804f5c3ee27dac7562e6ac114637517d8a32a22100829c2a1f1287b2cc6080e68555171d8f8952fb215f58d45ad7e010674e2215803a91a8f4542295fe929c2cc98a94d05383eb43a000923e019663964c3d8efa30eaf1f1f1b17ff95fd05a7bd05527c8f48f593469538e46fffbac00a7e6f65c538356807b6b737be31c7ad6a39c2dad5d33932e1e9ac97f8ebd55368b7ab3b85b7d956e2ab7ae752b72eade7d2a4b61ff7ef7dd6d77df6a755ecadec7d039963feca13dde53e9ece1be650f1bae6d0b6b6df3071360ba8d2d4daf8d2d4d30420942ad9b678a6725c8680d7b378d4d4363cfcccca0bdf5765253b4d6afae2251e7c76c1a1adbc6aa99995d6537e6d5290b249c24f6aa488c69adb75cdcde4aa714769d5bfebcba3b14e6892ddfb287e1292a0004a8a6a8064c0d1020201ea1a735dbf6cfadfb7d3974d3552d76aa5a7cc2a79b6fd8a576d9ddfd95c2eedf74558b55ad35fb3f9f6e797e562da669adb587db34b5f9ba496b2da8abae48d8cff7fb76ebe7bb4c0abbf28fdde88efabdd9ebfbced1dd5bb7ddbfefa8df9faeedd42eef51bbbcf76597b0cbbc4e6b2da6abae5ffbbbd419eedbe9dc7dca94673ca6a289d66d72cfc745a70dc2746883d566ffbcbf3dd04a25855dd9274e3fd7abeb696a823eee1e60ef27fbf7cfc9fe5dc67569cc655e7d7f53867b1ccfd03fd3d1bd75e3b827febd7e79adfa5886f1640f38bf7cf0cb7bb27f97b2e732bfebb21f94fdbbec5497d967445efd6b6177430bbb877223ad759fae928754c919346b0842f6ef2f6b61f7f00308f6f7e9e7efdf6ddb5b19ee897d7f77cadcacecdfbf3bd5953719d48dbad05efd662dec1e8eb530dfce26ecddfffb77f66a954fb7b385dd43e7867ba22b8dfa1def0df3fddddde33e65fe55c9645a6bb657aff2fe1dcaabff39ffe6ef50b847a31eee8978bf46d56fb5d651fe6336a652cd664f35ebef61dca94a654ca552a9f112adb7b2f90f79af6aad5ba8d63a4d6d6e4a61d74be5d9371539b57fd8577f8f9b8afe09bb7364edde2e6bf7c6e23c62e3a7f29803be1d86f9d4aecb6d4bd765de5605e5efbe718c77f8a7e89ff2fcf7a94a65dca570ffbf53a59cd9a5fcffde37b8a1cafb7a8f9975bdf57631b5afe5756d97635fed81832daf93bd0f9c7eaef77bcf3b84fad7fb05e2c9707fe7e8df9761dec21dfafb9d1476a5707f5f3eb5ab8b7a1f03b6338ff3a4300f5464b631b7f6c0d8f729d4577b1396bacb403c282cd8c273dcef64efd77a37ee808750ffc282dd4ef67e2fbff60d52d885a5eeb25bfdfbd2c9de6f7985799ff7cc43a8e70b6c7bdc0365ef277bbf7ec865d8a57abf7ec8e525ecf6f9b87bf853a8ec5a972ddc01db2efbbdd8f71d72f943dd18b0c77cba6cf7bc3cd3f50de2f928dcab5726bcd77abbbb776efb14baa4eb229e7fed9e22eff3ccdff6ee07edd565a7723f68af0e4261efdac92ed5e5b3f2c02e73a8fb56e7bbafc8fbdcbeb8fb7599c71dee193cb3ed8bbdc752d8f379cfec540ecf797b57d97ddd277ffa1850f6af22ef6bf7faa2bb54e47d6def5045bcb803fef6f57a2d4c67e5713b955d42d9fdbedaef3cf375799edb2708776adeb2aeedd4d88dc2de8e773d6bf76b61c1cff95a78f679b2f7eb0137a28430e270c1320741b4019e3d9d6e1c90eb93c4c87830a1c8bb17ae8e85e6a9515f91814555a63691ba5f1f3c7ecc7fd5b7a6cc7dec6ed8b588c6702ad486a0adade2a3302aa6d0607bc5bb0a3ccba2d8deb555656c9cc8a647a07e0a0d76a8c3300aba248b62de10691ab47a63c761951667a0ca1381788a92d08106487be2f6a81193679de79006618f8a749e67d7a228080b0de589c64139e2e194650d0167a3b42bbb01620fcfe1c836e64209450e22138f80260f041f2a8df3125b228bc21f53ce31ce177e8dec0b09579c814c06671c09cce404d3438807a78ba4262341840e0b342d35b36829a2a4cc22a1698286922d43487153afaae29a48cc876608427a82598c084f848022208ae297649c107200413327a03d21308428c048157088270df3a0207cdbd2351b32461bcd0ca9a83114215748af4722aae11aa1a18653bdb3e15f41bc21d4f52819f801448f137a61e8009100c1d3187bccd93b0341a1efc3262a108db86cb90f67886858aa59f4e3030d33bb2f160cd0f830f8a18187487f9e013e9819f1d005cbcb8dc403131e54a479e8f3a09524929a2bc60b85870aa9142a16da9d2954c0d6a14f07251d7c07b8c30e002811d6a14118a410618b82f06cf0d3e01a0d6719d8f018359863f0437210429c51726c7d14085aaac26929585d100c23e822905220e75612410e80306565c96b24c85c14680bf694090413cbde14083cd2946096606698ced802c70781990453c0b04d356c2968d3fcec9305ba74f2b7fc089673546850b9c4a72c093c08c403167824d00d5c0bd41cdc2c72e0e1c8c149e530e18314970082230035019a0194d10414046410e40fd21f97acbf147f7c7f7e87fc1a11f859e5fcea5abf047d7cfa92f4c17d6f9afaa862f74594e7e0a3033633a912f1e203c207e5abb0c1d30635561b7040d9e0816ec383391a2a6900a3a185060e5e0ad698688568d853f4f7ae80d823b197b7c7a717e8aad784ebc58cf4e498e80dc8702783910c534419d4f246e539e6edd0ca6be6913dc2cb8467062fc6141e930d6fe7b87b74b7e50ec5dd863b3b437652ec12ede8ec10d4eda94b5247ad73ab9b626c6e3972fa0f3e2ca0c93a742c0b149d44a481710343a1c6f0405fa804afb5cd696a739adabc7ddc17610f6ffe369fb15a6b5d067b351dfc7612505495864f6fcfcc7a1b7717eabe55c5fe5667993ac3bdcaa91d0af719b1ffddab57d9da61d985e7aa34803acd9a76ee3457ce2dc3aeaf6e29ec76d25a3b77dca55d865d3489d000d25a3b9d9bc3bcbfde3f37975d78d65ad7d07a860c3168d8d2ccfa2b3fe72fa5b546b1b7c471460c8f3d9c599bcabc5ae12a9b20f1ff1c4895f6bfa732afeef7a5532ab5d625b483d84c2fc363ad8d4c9d0c5d18044843a66a4c95aa12004a00aa4c551103006d9b45dffeb79cdc9eb25dda76c4aa30d01fb315aa9cca9e6d6931e017c98e44a0a22134d8b9644595551a0bf12011e86c862253873ec0e91f31236b568c69130086de9ca5991159fe6ce2da60a70ded05401d702051cd07d9884e57714e42d4a84425e32d40018422830a9faace5a289a2b24028bc9d3c08ab38b862317a33824a2409895f82409405f1487210c575e44f9b57b63463d09db96042648a1ab7688ea03a81cd5bd143bad90f9088976b97862ca92e307010a99ccdc61d2982087f5f647064256c43368285510a54098b6ca531f49887038a1201305c60c903cb978917dc87a6324a560858047806c7400106281a972f729503a47e72dcc0f71a1ad11f98450c7912e52da05670f4d891e4354f2aa139702837b75f4a82951ca03074e5716863369144c9b495d48218d2871494620e3606a01c9f188a547860cc93145f9b9f91a2116d728ab7d49a1920215864d2467392a7ae300c718223153d2503dca804d482a39c02afc80f97333c40534caa306186013bc1201b881e3c4934e7c020cea7709b49888beeac47e1ec1381b015c7944844f32ca9f060c1f0c05e18b2a519d8151e20a26684314bd63ea06d501ae234412f4b0a195280e869e87302142c0101f093e51fa587d89820bc2a94a172b03ba94fc4852b20ae3e108828c065f21d7124eef03485b625b56015618c815286408704d25301885b8ac741c9ae9fa61a1abef8f1b260d78162d8a0136467158ea34218b0c53d820313e13b8120c7af999d8c04086195364e20421e69501296cd24c787bff84da5d8044f9ecaa08c438a4c3f454a9ca5957d91552b58dcb495dded68b4d7d8ab8d22c8290b268cc558b394616058458d225039d1e599420bda93a3c7005d4db062e9e045c88a25886929eae3b422b28d4c0b364a3da05d5785cd4008b6ad1540c393b360ed408d3c0e711925f151d486cca1f7ffa1490bba2e71a24c681ae45780c3815868830575041694cd39324560b005e65194cb49840635a66c9e9cb13a45b1b09076f771394db411678e24baf19329c6f536032931cd7c6b86e4c896515b080c28c70069c4b70699619980ce14332868aca68f47b3e7077c1cb8284dcd75a1b03d6453e1914e828387135c08ccdc271c4820e47390b8317e6e254051843269980afc213c6b350778fbd8ac04e0be4eb90d509592dc50e244092f019fa1be041cbab2e0e884d52758ca6f8296114bf7a49126c550d21a4d32f84f1d797b14146b01d30b2443963227f28f3f5e9cc9f076a5a5094644c4c5d70ec752b8e43ae1ca5494a72645085c613066517338c24aac24c85ed61586364e443104e34a4d23246398a6c2983a48964a20a95a69216911c44924d583daf888c498b0081ebcfc8e00a07385a312aa619a815550b1fb0f8a864e70e0a245b741267542052e8266b4cd18c134042baacfc504842a3c415e320176db48b3d3d2cb13384442c723042442d4114529d3134e0922a9ae4e8c71e6a57d8c08aa046cdef6a19d681716e46234077ce1ad87603b1aacec414be517b96ff452fa35b73c1461795a843576f2ab568c1049ed246a05bb9a233cacf4ac08c083b1c201086a08645a86ad20fe8a046c3fc71c22179a55222485d4af21002ac6280cd04267e2cfe18e569c4fa1374e297b160274c9798ea8b091a4422b89286e611aaa0c29a4c746ef05d497a6548f1c80e102325b8e2c028c272e5b702ebce1c417971abbd3aebc1c246229336e48c286893a3d50a3b0fc8b63e211ee5f0a2f4e583b0490b2377c8b63ca8d1465191d50191946b2080130a5ea801937bd4600a59884b8336729dce04ceb5328ad948ea4bc8180031134512249a6646a2984ddcac4367753e24caf163c429878bd6ce0b33e957e393681a60e2a2e9c40817223b12c1348c80f4092d4a926a1004680fccbc8cd182ddc4e09109460a4c5394785841c86654b2cc0024769bf00c2123dc7268aaf1081ad8a878c8114b8139009589e11629348a8bd62834595c35003939f48884c186ae1ec22a6d6dd0229f4391b604e9d3128705a6288c0b1851390a0faf04d160492a9be4c3c2968e0a687457825006ad0d2224847017caea0984335a109279258da26423581d3762df0f59e3d1e8850a3c04c00a55d092c84516012b4d94e59121810498e0bbb449cdd58674470446dda2ac3d2370aa689a54555d82754ac0d10953542af235a67c545c69c4a0700461e247043549f8b07ea39d2b223ee450b3e0348a516d2910054d25275525f0101f24e36260710d91084ecdb8e87a12d82260058f052b00b9996a40b76600cb4b39e19048624c07d180b5466b6448aa0ef19824a604851b08b61c31748183819f170006253e71421b32c01815ca000ab63d2c228c7e804a71c2bf54206e92e80948901a0209859206815089700aeca526d8e715254ccd2cb6a1a40bc2a1bd356193106531b88246069a035ba8b0d832a08ea2198d905a6cb05998e3d5cc286278e40f8738305fccac303a102d1a80e7d8230e8e149fd2644191e2a6ee0f121c0046eb9e3f523ddc248341e590df800755961d493da93b26d894031c9dbcb82de1c43870f13384d185d69a230c6c3cad096486c5c99ac5438bee24718011f2d6c60e094b1fbe8870dcd26206d36298c60602155c45d9874109285998a495c644db0139b6ae3931106d1d80e06686d5149c10be9d30a20ffc97e739c005c2440c1275424094a6192b26f86ca9d87bb22578022ded30cc0939858fc945a93c2eacac40328d0d56088278154781a354e21d3108675c34a9c437a6659295063f432c016e41927a6b51a30098091d16f82b12671258515a33735b32c0914121041d049d09a98a29da7a8502623f74e214b2c16a99e0c7c5820bcfe2e18dab26722810c96c823177e552a9731c4450c56294f6f0488131ad8a3963ca78b7e71701a2f5e2345864a36b134a204759c94ba808d13f85dcf868b862b4c587cfd383998f16625828ca1a2d547929d4d8e84745c6a03a8aa2c4a914c34dd719e9e2140d5606a1f9c5dd8de84a5480256d016a8c1e0f1b3c2c1145d5838a9a3e483123cf51777a717a2b4411b196a12ae4d5dfb889522630c380a782b30c10016a58900894bde1c18750baa0b02bad10804d481878080958938d81f1142a37b88ae4f8521066c9c983475300bb90d060e2c653451622160f91c060c868e2e9cc0290780b1b32938d2a0e34e049226666a6c294311c9cbec0945014e0ae451db44372b8b01268299305eac7231145dcfc9c512137250aa2614f3e094d0a63c5d308a9b5510f6078b8120626e2315133c50d0a6c0c7c30fe99a04594168c385cb0cc41d000072329590c8549232a89674fa71b07e21afd48314068f1d1d6868991f1604291ff48539ef0603a90a1dce2ea58689e18dda82443925da28a3ca0ac32b0a8cad426d28fa04706911074aadc84f5c1e3c7fc56901005a3ec789388d193ad29731fbb1b760dce2005ed0874110363358653a136046c5ba474c8296a938f87988fc2a8984282940e0cf113a10764f10517de55e05916eb255f057112e315d4912b373b19131a361f68d0f800a18f7d2eaa2a63e34436355245891212607c3afc8571151aec50874194a23b47ca42cd3063e2c75516c5bc215234164f4e109e793969c9aa1b3b0eabb438d32629ad3142193e1feaba4e04e2294a32878c1e072bc4b44b148a60a53d717bd4884917e0a4ce8c261b313454695a36296d168077c4a642421c4042c0ab41d8a3228d47cb8a2e4f384b0ec180a5455110161a8a21dba3344c4c75587290862c16ebe81725d484a16325939262c0cb110fa72c6b0742513d6db004886d90354b69577603c41ee80cb33d1fb0d45cf18474641b73a184e25f9219c843d63a369c5f3f060b0714262c45a4fcd529a3454b2a0b4d1e083e141a4d1a28fd0451b246a9245b228bc21f53867a688030e085c1a014ac01a172cc529127a53c4f51ccb0111ed0f26b645f48b8e275e908db40cd90505c92c9e08c238199b23e6099e177c304df19981e423c385d2255d2d1054fc389b32b232d41840e0b342b99999b22903c168212b3d252444999458236543489d1e3880a7c6134946c194242145261cf0604703a6d98b25555714d24c683a13283925495981520b4aac1c602faa8d2f5a8c8cf8c0a195442627a82598c084de408022792bad91d7ae4121045f14b128e93299700037510d902e42a80a09913d01e31321ffe5c97c5694a1580bb077d24a4f001d9239b30044f87252e46aa80433c791501d05cd5c97348718582f06d4b971c08d221350976d0a05bab8a369a19524983885223227ca0c8694e5d7285f47a247a8f2cc2f0e9d2133ee4c1d5a83e01830007177190d3c386a4ae432baae054ef6cf88a5ee810ef6242bd2d6d5d84ba1e25033d98996e5102ce70026310eb845e183a4023e46c1ca07e9248d424328db1c79cbd0a7cfa30b821fb732063f662b1d600d113be1954e6287862e288dda42c2a108db86cb9b8197d0e7c19a5888e2524110d4b358b7e409558c5f1800309c1992f33bb2f160cccb863a4851918428316e964c920c2a38205250a14b9113a66d97a5e48122861d721948a18d09395004d53bcfad79f67800f6645566839e3e540032a3ae2b4b0bcdc483c3031c549ca49a0d18c276749ab9ea73330b4219de42ca2bad8b32380cd70a289cbf1af9989849243888341f8682589a4e68af1c2894d6fbeb648501c61956c34c68dc21527da2490c529908d63a030ba0a0b126f4ca902416069469725f28ead35084c3ac596221432e0614fd90a1cb315884790ccc6cc405a0457418e694b40210c1452518f6ead5149a20d7f3d1ce8dd6d39fe61c3b836c10117c0b80b515430ba59e139f486822cccdf1a04a11ec30cc9d214fbe266d2756bf8e0116cefe4296c1417678043b3895032a307992e9f9c8a805cf569f96a86931cc559e1b0e18cc2acaae6c834a1b93243921b4fde0ea3485b0bb8442da054a411a14381d0f0ad40d08889efeacd8fa025e944232b43aad33d95d028a942a2c98bd583e8d20c8942498a668670e92222a6d08b522e50ce8e345836b42707581ace32b0e1210a101f28d34107d43ea940128870e44e159cac3c06fb4a921ba0867861908bb3c20f39464e4a8e23005c3a7460c51925c7d647c199a82107769dabb90e5985d352b09aabf1a34a5c17862ac3395e8ca4e0510c7b430282a2b24d7116852a9115482990730b492848606374c8b5f0f10609085356963c46a26024faf104cd4d8a9eaf1d6132bc20fe0a74d4323fc5a546185981b6604f9940409063a96f92b251899adc9b0281471a12900e4860a166ce014c32c0eaa824797184bd1bc4048912515ea0556b3a630b1c1f042a451cfa1cb7d801a42309a680619b2a18912ef29c928282bd3ab04df3b34f96278f0e5f44910d2a5147a5d5c9b0d114107e82acda880ab3d5aed1b132d3924458e240a20578d09e574769fc8451a141e5126f64e4e2d0a8c88d40ef8dad194aca8cf939c8924106a3d564af526c95c451ffd2e7ebc66bc81b5b0cc06443ec704101b2c2361b0af570af0820f09288ab414c054305ae000aeb0b3b38256dc0aebc6c90612db551ca297bd9da70794b549575004e87336f0503312a511040c1c9854b0c212967d8ae8904414171b7478a9c4a573fb806d726b479a46192764b3a3820a14ad110328de01bc63f88d309d05f9c58d707292e010417d798409221938e2d671a1696904e00ee9e6e40520830a49bc275a66a10d68eb6225ecd296b01b4a463a8ac7585a2c4a112a8108f235cc033fc5428b1b17e400024a1c28934376f1d7ca14b6f5020f1ba1c6a510688262a9b2911fa6e10887a25295347cfe387067b7286f61c32f1f96479c571820c82b56540ab454aa34e764556d91349c115d2f0c88a3462be3c7ac1e38b6f86d5de972d4f2077eeb4b9218809982c2549e63c3c72784d99e7f76b75714c7ea5e024c8cec91e618e0963c608b181fbfae4d2e80177e0090d2f6b0f05697bd068b160f6086a13e7620f896614443478d3e40c4729898e408f204571094a9853441258a39ca70472a475c443932082126e46688d21b3e3b8c805f6228aa120253ff23c93a2c22880039541c39d49574c7c5d13b7843dd520bad129467228d1c84d9bb13194ac62f74594e3a012e92a83cc0e4b605d0c6c665225d275651104f22c9216507bb6128500c36405cb83e39e130f839c2a0cb2729428111a4c777a8cca487a783a6860110b840406e0854aa743e4fd21f068910b57893e4b459c8452351347aef04c72d471d5ce7948d497f4a26994a2287610a8745580688700e59eece0f418c6800e87076b5d5c8e447085c210a9cc281f444c3482937465e8058c2b377264a8a525b3e04402f5a04acbfb0a82e7088c650284e72b393eea0293e1aa4789b3040a983a0864e9025485c5ef240a1265c600a2203ac61b7a553020bd14ac31d1064192e98a54df056aa1f60a6182c01be50df7458a2154e01c1ad3588ad0189138c660eeccc982e01b6d8d6421218b16c60f8e4f960c6251e80285fe12c02412538d4d823f485a019a96689d75d8a5921d08238823b40006c801a83592129b423a2536d408850303001983d65f58f66cda7254446496250823184d8a6a0a313ab79021cb90c5516b9d34fce4d6c5b588131c261c0846ad351894cc521a104bca48f9a2896ba97891898806b068035013b4ccc133210bc99530154f1838c2b4bcd811ba5e2d559d3f28b6929ee85cf7212eee3fa4adea78dca64f058517371a85d519f2a80f092ac53e8b30e8ad26881ae4b921e29cd2426b2b2f5bb60480b3b29001a0b5580d4a3008587910e886516baeb94238461a8e00e541a1afd00a7d5ac4870189285a57496054412c99e20c86d65c7e10138d6221c50883be9a92a94b1ad5da17adab664c281b9bc2c143eb2e45bbab9f225ab6d65866536d0c69d884425755a223a04f8f0eadbdba12ed394409506bac2a608a5b6860d0c80e899c39e4b4f63a4395fa396a9db546d8a20fa3d6c83457b74228f4d7a1a6086b5a678951138643ebe4191145183458178f245a6be92536d23ac9d8dc1a4c4ed75a8b0f0badad9275b4de12a1b5150cadc53068ae2badb5d65a6bad75524a168d346f6399021d3c6d58630104899660a00a9932f09904a78a9b11292664de8051585ab05428e7918921015aa858c092485ab80a90d86763b9b1117dc4bd120ab2dcf81190c7c618a134475f807d430271f822f1a717e34a96ac4725d0964fe1e94839576a0c2e5830a9c9262c4c0c12356259746095a4e8c0e3885317264d0edfb049f0b2d3df3d561889662637aa04884183887c126a0518d862c3cd8bab08006c9e5e6085f92137a0c6f3d20847846a5ad8591b794d288160af1aa64a17a2295b9af0103c54f5c98684298be6beea1cbe1c30beb650c18243bb12c4996494234568cb230788b8ba5e98007bf4a2b5a7eb0895b48d800855f1a072a70c1e053518c912d984452a7078f5e5cf0bdfe60e1a01b53cd6264e0eb0e16ac4816cc3173663346070d30307e01c2f5568695fe830bfdafca625442da6a550bb923b31b52373607768aa08893e6518a0e0e22354b7c4f45efd59711748c1244784c418b5928d2a65e8423ec8b24a46594268a546c1a11d1f65550d5c6ac08114a54997ad2d49016b4075a161d8a2cd2dea01d8861d1a84615d64e2e531723618954b4a58f52562696874d29f6ccabb3e78d064ced6c623a408a19d0b566a7db4a8667554849111487137658d8d3e7a0e98def52e49d20f13c03791865c33681477fa36bc59a48543c112514ed01002318344402123638e80c9493f39241649262ab9d103c2862a20399d515d4461411e3f58424e930480075a5354fac4b6e07133a30c0c43970f01ccbed21416922ad10b2389d3031c8ad0d828223f6d956160936096c124feb971e1eb4096a21137404e38eed8717495434d0122055f596bd640609b07b880166e397167881da40d0b43dce8dc0759466d213d2224502c4b6f540440a6a1161265040b4ea01862bc60b9062e06d7f60ae5020c99c3d34801f96011db0e4d85a6f061e320c580bb0d43b06031349d3075f0d3d7a591ef618548d1e5c649962e6715162081f0e33ac4039706556408d4093401e6aae962a2516aeb8a9e2b49330048c196a861531482502ac4200d5d6392d6a0509440935d882d91ce70e921a8aa90c790ea8db12f1abcd0b2784a8245b9f29ed0f061b9c4880892519bd320132cae199dd20811aa8264c59b1250d8cafc3c884dda74e1079f2131128d01b35261e595ac34153222b3e84c1bbb29ad0c4d4691b6ad4b56381546c41560b290e92227e96e855805108b5d7a3512417152e909a63d96589508120790da818aa340efe318377cb165a82fb430a8fc59b2843177e9aaa551988ce14f2eca9f1c7d53117e55b61a34b022f004cd850c472175781da299c71ad47a7347ae91d9e21916d71d0914dffc910236c6859ce79b1f44453f38d5d9232ac760d2878cc110fa825105139f0eb908b1b8472b0e09288b710b810af16588844d5c33c00e602dc9018945a1b26d2a6509d39149c908925c00524beba2e62925e5f666a729cbca9346391e1ffb96c514742d04302f7d81c0d380cb89c70b0dfc30c8b128c3231609864a1396058f2fe6365a40558874c9306b8c05a6b01d8fee122e091ca8466c262f2c4d2a2c7a7bb47b42c080e3e221e515e49f134194101d91b11740c0183e396d152c2539f41c067af102cad37b19f5983f5e081235b0c103452fa9f5e785a396c4a18a919b4962eef6e41cf06bc44390e6b1c4622046c4a120080c7e0d9280b9c2f045da2582420b0113b20072291ba64100199da952f141cdc11f2b49b9030b1834efe0f07395c4d263243b20b2e2f4dd71d4a50ddb8253eb6e3bbc3fb7d69161978aa4a2a002be9db47ef6b6b7af9977eab63d86ee32a7735f9fdbca7cf55e025ab364bff7e861a1c327b02b7fe4e194253bdc5a6b2fef444f1ddbed7cc8ad4b117dbca71381436bd639f77a3d665cf46fb07dfd548453c4d69fceada435eb74bd68cd3a9d9bca61178636eb7135e62ed48d76b8d7b91db4d6ba825b35b75ede5a6b0c1a3975645b19ca7bdba1b0fb5b4f9dc2d0fa2abb53a78ffb2297df3e85d36c9fe15ed742fb60ef71b469ed30532a43aa8c2a8a9e892e89c260c9e0789e4277d46ff77f5fed6dec37ec7af8dd9d706c9fa1bd2fef3dba135d6e655b3fb53ab719dbb795668251011d4baf22bb84b611746e7b0cc7f3d359d6dfa7cb61b71f726aa736e1787e3637dffeefef6e389e9fd539eac2f15cd7aa695fad354b2dfb5c110f3a098a066a028af60ca5d9d8f767d9b6fab73ff77725c43db1859d3dce73ee3e75c27c7bb9c7d1ddba33a2fb3e713c079f73bc11ebe0a5ca539655cefe0a010eee901b3aa732ef6dd3ea3f2cb9160e43b3ccbfbfc00e8d7d745f9f9bc382dc8e8246f22dcd3a65ef63e7fe6eccdf59da63091ae94c74eea69ca615d9fc4336c59a0b429009210db1c0f08ba1629f63796c577b3fdcdbcb9bf777cb7ccb55b2310edd65fb7dbff37d79d3b93bdd569ab15517da63f9f7d6b9cd589685ca7d9795fdb8ef27aff6b84addb3bf96b9879b3377dc9f6564ce3ec7b2737f773b7ba2fbf266b5f743e7d8867bec77d92e6bfb15e632e79dcafe667f9f7cc73d7665b8ef3e959186190c0980f883b71db04ee7ee89eee6fbff2bb7be7cb730bf3e5fd85fb9754b6199ffdda72d5d60bb7708f57cadfbff97f237da177d0c22ca9cfb4a25334ed1d7353f6f4383f641e487431fac68ad5932b4b1bf6dd6f20f073c44f200c40306ad35078d2ca4842c345378e8a691856bac933b791ada042f6fa9fb9d68cde69fc9bed973fefb0ac732ccad5bf6b3bfcadfcbdb7955f471d5b9677f653beb8eedb6c71ef65329ecb6fdf3a799cc3dbc677fddd1bd0d73b6edfff32a4bbdc2be9dfbef6d3c95911d7274987344588450cfe9dcef1c8dbb75bfeff72fdf654e679fca7c47f736dbc27c97c12e35ee726fb7676ef6536768ec42f7fbf2c33fe766841cfc3208836dcade07b26de7827090822b04f5a2ee7e5d1e85f2e7fbfaf8f5532bf5fabe1cea52bdcc9950b4d60934924984c9990a966696ee520eb92410e8e8dbed1edb8dfd6db3abec2a6e070e583267dee7754aa573f3eaf5b9ff77a7ccb1cd72f9bbd13d968cba61778f6d67f3b75d09ddb28795ceffbe1ceadc66ac62bfc2fcb9afbc8f95ab732c4b80bd55767799730a95f9d3b9fba1fbc282ec6fe1be0c7ca2035368adf56efbfcff9eec13e7cabe22ef33a0543277d95c9c0cbb1e300eda079bd7d68d7b95031fadabdbddd7d6fdcff9b7f01ced71d3cbcdb93e23f63b681ffc73bb0cde83dde687dde66fcabcf9dbbd391f85f7e6e6eeaa89ae0cedd168b349bdf60d7213f6aecc9b6debb66efbfa66dbdb985b7bbccbe69871ed3256e43233aedd6bdda6b5c3cdb6cfead2b5f0dc7bcce4eba3f9ac682d7f57b12ff9606c3ea7d62cdf9bbee3db426e68d4c2737483631bef0dd50d1db4eeb1bc376c5d9f73718abe4ea964fe1ef3e9afbad31ff5cd6b3f6cce31e3629fd7f2e7dcb5aeed74804ae5f5d96c36e7f634ec01d033a3f514cabb97cbe4dfe39e8867d503c2f752af83d6dbe7e97d691dcf9ff7586ee139ba332cc9c097e7294f4ade20328f03326f27befd53fb54de66bddd575786e7dd651eefffbe7cc77eb3efcbe15ef5dbcb540fedcfa9bccb9c1df65798ceb9bdbcad1dfeb197fbdf66cafd2568addb34122fd0f5797deeb6bb48bc177855f6effde7e796ab1d0ae57479787c5af71e4761c13b4bc83b2677af6603f1ae31ffbf433bbc7dbbbdfce53fc7f2bebe54973fa9f3ff7cc37dd1c7d10dcf31e0dd02bb316cbbbf1bbb1be6503ad6bff0e74d1f85f77c149e6bc6bddafc9dcae1eff27df76d928db97dd1fd6debcec1fdd5ebb0fbc2b3af532af37a8f36affcedf19c815db6cbe2da3e18f744f7ed6dbb3747eddb657671bcf3c5d4be1e9d6b7ba2fcbbccdfe69c7f7bebfb7acf7b7beba9cddea35ea6fa383ac7a8e71435dbf6b6a59b73b2767367bbed7dca44ce557df9f7443fb93e5a6b7d853935914f91724fb43e84fa77cbc1f8eede48b9bafd670eedcfb966621f542ae7a0aecce5e5fe7c2b95cc38f9f7b6da8c7bd547e13d1f85dde647c6bd5ddf1fb755e53da6b35009feaba3b5d3f9845be92cc0d01ba6b3b03fb7d259d03d86a52ed58c4ef9444be3b93f3b34462a41ec2ebbdf9bc11ede9f4ffbb4b72ed49d974a02548e84938284ebb1b773be1ceae2b1541f473b120e506bb6f57e5aeb358d84abd21dee71975f37ba916f85b4d6bd956597fa9c916f5f906faed69add73d77e38d737c441fbe0b56f388c5b0fd55aff69a41b18a4dbeb36a6b566fbf5ed328f6728946f6fdd8a6ef45ffbe173fe3b3aefebdbe3dd09f784094a3ce69fdf84092c7f5fee0620eae5be6c7b836cb3c23a9dfb1af7c4beafcfdd763b16d986c606888d85d3b9fb17dc6cfff36ee14ea57a688fa91cee6f95ca157beca3bb4cee51fef715e6fd90cb329ffeaecce0b7e7174847a8b5ded2483607c83542c8b518c8b53fad75a046aa8942aa3dd16cdbdf978efd3bf654fe9dd7b75ae5fbfab6fbcaa9d2edecadb793fb12fe73ee2fc1ef6abf63dbbe3f9f42e179ff4ee5f086f6ea8fe70ff732bec7b69c4fc9ae3187dde7d8ee524e75b5d6641aa95695e19ed80f6333d8f743de87541bd39aadf23edd5f42dfd7f749edffd33d3be1ef525edd51bfd5f6a776d97d5f7703328d0c32cd8bd6ba8346a639371b7799bf6d77dfe786f9669dceede50df3dd17e990696f1a995685441383444b6400ed55d74cf670dbdded61997b3fd6d95b0f75fe2bccb714767dbbad1deecbd7fbe7f4733da592d95b0fc59b6342ddaa97b9ccefb8ccdb0ffd323c7bbb680ffc3cc6532a995db4bebeedeb779f32e7dad723cf5cadd9b8ff9953779f3291670fb466c9e4fe3bec77d41d633291152ad1212b386acd6eb8f7e7fe7cca6464dbeafedcdaa74c6405a7ee50fe56f7a19f456c32a572ccf0f3a66fe7ff61d35550db7d2af7a59f5ae79871d13f6b87e7de97dbcd49f7e79b1917a7e8ebde974391ec1024cb5eb79777dcffbc7d3b2fad2deff287ddb28e642d68ad0935d22c9166affdd0da6132a7b5c3ceb1fde5fe916637cc4e68ad971a6956a635db6cbe6f9f32594ef57174b7c8324fc8b23e1326b01df6ad193ceffedcd00913d87d7d65b8c39c1a77c032145a6bd66fa7ec7da0139ea39befdfc2dcb7f397e13e9567bae9e753a572fab99e626fe1432eff3ffd7cdaec5057e6cd16ca619937e776af19fb76cfae198d13d7da66d9bfbf535db957afccb6535dfe429bf2ec45f418769b7dd1fdbd477b8f3ee7f614fd1376e536b6343dd9fbf8e5b01b8dfbbd47a79febcd4d3f87f6c10ee5b1bc6cc25e9e5bb6fde5fdcfc541fba0ec7ddcfc7365db40d95cecf376d9f473bd5de6171718cf4d3fd78bc38bfe457d9739d5957f8f83f6c1081ca66024041cc8065f59aafc40323843ee576b2d85dd6a95f79dfdfd0eed6eb58d2d4df06c50efe5ae1c7340d9037a40ad359bd600925221a40cbd1ced32cc633e4bf73ab4bb80816b6df3f6b2fc39545f01f3a3751b5b9aa052297fced7943f7fa79f4f9b716f799f36137b5c05a4fbbfc7d29ee84ea1318fbe7da9c7cce087c7d75c2ef1fcfafeeefce80ee1796af77f87659750a9b46b630fed816b6d731bda3cf7f7d3d4e6e9e7d338efe7c51d865daf34b352d9c6962688f4726ead7595467ae93542764132ebb1879a3def6437b6b6bcc76b6d735aa252f9ab1fd9f5915d1dd9c524db4aaa2b37a33d1ee322d461eb5fbbe756e976f5efddc27cb7ee76ab9b33addeee6d86f6c1ef56e9be5be56f95ea22b70afb7406a496951fb354de63f9eb5d406a6de9666f3d8ccc9a22b1fcf4d6c3cdeec6727763b959fd52a290585c5aebeec6f29510a455a53dbd0c5a4be5e169a552498744c2d148a40c8d44ee69adb5b45804ad058744a6696455248dacbaa291553a34b26aaa9155751a59e54023ab1068e402451ab9a0512317d0d0fae550cfb7d7a1f1ec978382de2feeb0d45db6bcaee57576bf07fea91cbb75bcee2abbcd3e9563df7658ea7e7886dd28ecee77cb1eb6fbbfc76dcbf767db2e73d9c37f5b70d90df3be3fef4ffe52bdfc67e8feddbaa772ec3e37dff0df2d7f6ebe3f9fb65de66d8f67798ebeaf6b25b3eecd4ad93eb67fefd1dda9feef2baf6e2f6f784fea4e6b293bada5eae83068cde3ce633c363636363636b6b5b5b5b5b5b5b5b5b535353535353535353535b5b4b4b4b4b4b4b4b4b434343434343434343434b4b3b4b3b4b3b4b3b4b3b4b3b4b3b4b3b4b3b4b334383838383838383838b8b7b7b7b7b7b7b7b7b737373737373737373737b7b6b6b6b6b6b6b6b6b636363636363636363636b6b5b5b5b5b5b5b5b5b535353535353535353535b5b4b4b4b4b4b4b4b4b43434343434343434b4b3b3b3b3b3b3b3b3b33334383838383838383838b8b7b7b7b7b7b7b7b7b737373737373737373737b7b6b6b6b6b6b6b6b6b636363636363636363636b6b5b5b5b5b5b5b5b5b535353535353535353535b5b4b4b4b4b4b4b4b4b4343434343434343434b43334b837b736b635b534b4be97cbb1a752f7742152c056dc2b48c5692d65414aa9b56ee14e857dec26c2782fefcb1850a984ba7187bb54a9bcbef05f6f7d1fecdd3fbf5078afed70af2ae2c9deaf7dbd1e2c08f7451fe7c9fd7f3a99f7d8ceeadf5e777de1bfdfc2739eec7d20ecddb6cb7fe653c5ff01bd5f60dca9f387bd1dec4addf8afe575d5f9d07b3ebbb84fe5bfb85f399fe73d90ff168ab7c46b634bf356e6cb67c4feb9decb0df13cec2d9b7778777f767e78cdc0bfc040bc261e9fe0dd5f5fb3035d1fff2db4b75de6525ef571952f714eca993d7667c41e035e6537f66e5ced879ed9dfb9f57d6ff31cb5cb7b52ffb67b1d76a5309ed420adad1ede20ff1ee59daf9d5f28ef7c57d9a5fa40b96798fe19b0fa0775e34e9dfd622ab559fd51def9603ca44ea2f563a7320a13b496221b8b83f6c12fe572f3da0f3b14f67e1d0a7bb8759b50f9b74d683c955db857ff5e0ff5b28f01bf7fede05efd6b01b97fafbc2affb6098dbffcfb8cd803dbbd5efd32ecfa6a0be375d8fb89a2413626b5a5c4b4960a037b120a85d497d65a4aca4b8639ec52dd18faddf6ff43689fdafdea1fdc70f79b2f9779f4d0efb2382ef31614daa7131a10f00e50f63e30a6f6e55de3778efedfa1d0792938fd5c8f2fee72eca74ba5b29d791c6d6aeaa3e96e90a0405a6b407ff4e7f2b58ed9a3cd2e5f9fcde89ffcbddd5dd437e5efa14da84be5f0b57d5e79dfccac52b93cd77a68d3da612ef33b2ef3b6e906fedf61aa6f611ecfc541fbe0ef9f4f01f1fae7d33e475666a06c4ea9f44a65dc988138681f6cddbeef522d0d6a3bdfce4b2e7319ee719fc27b7d771d14992f97f6f7dd53647629cc03a37ff2fca7c8ecef93b71e5abd32a1eedef2f7b5d4443cf977a97bb78cbe7dfe7fefe5b2677e2ef3bb2913defbbdf57e6dff332c18f7c4660bf366dc5b37d1c7d566eba14aa6834913be59f557f8152a7c19da45f818b037e30e9d5b1f573bb4f9f2a77fa5923ce8c10d6c91a8c4bd2f8736fbf3caa973ed5e9cdc97bf69f5efcbdbd8d2f4faa2fb9bd2a695c7bd7a65f6ea557ebd1e59bbd7eecdedb26bdfd0847bdcbeee145af5729adafc488fd68f1e04e001a894305056263727b7c9145b774c8e763e6560fc27473bdfde7b1b18b1155bb7d9a56d6f1e42792cef2954e654be2f015e021004928bdb149aedeb9f012868ade574d5a2405aebde7a786fe5a22a45afd69a0e94ce0b1c64597647221266b4d600ca901943f5719ed63a4c536b0de68bd6dacbcdeadc7c8bca828755332a6c168d130f7f1c422a17a88cc689875565344e9c2aa37162d4fb1890031edfddf473bdbcc0c12e5aebd6f5835a6b2e5bb4feeb3160341e94e7aa3cfb668fabd13851a9ec71341e5ceb540e9b79d9c7d5436e9cbaf49e19f76874ae93c372457f89236547aa8e210a7aaf57afcc6bdfa054f6384d4d4f2d0b01aa2ae4878c65d9b18d1708f8c6b65c2e5e15ad89b3fc63c4aa87a98722dca934da5be8937b28ec403828c85c067200f4ebe3dba0412f431ede9d5d1d5d05d6acec91c204b2310911203c70d080c1160b03fbf2eae2dad2ca7a7c940a51458887fe31ebe5ea35869e0d7e19e6f287bdddaf56b9941e54d5cfe6ffbc0ae551b3274eaeaf0ced71eca1bbedd4cfaddfeb69ad9b68ad992c99b3fb71973b95c71c50f680714d59b1c39deaca3deabecdd8cbd0fe9bb04b25db656371b439ed8beef21a7bf9bb7ad01e93adb5cdbb6cad6d1eabb64d1ef72b7f7bdb94c26eeca7f2cc0f9b53b9dadba6acd8e1b9b5b659b1c36b6d33d47d9f33a05219ff40ec7c27fb77b9d6367f68b3fa65ff2e01a9509bdfe6b734b4f9ef4f1ed97dbea5a1357fdcab6f9ffe31fc52d89dcacdb85765b843e30ef8968626d87645378f00982a3f5a5a6ba572cb731576b79f1e3f669b6d5774a3157cdc3d5cebee78b3faa1aedca953d98de9a89e484d61981a93e22365474a8e94a394123d9d7eccb6bcc7493d28f48f59efbe4f3e85f21ec3f386fb56be1c1612446b3fee17855db328ec4e2d983a303525054a8a531e126e6868b0ff229abd8dfb3bc379da3c4cadb533cf9ace93958780d6ba7a95f124aac2f3e70e9e385a6bb2ad2cdbcab2313c50f030c2d4f9f5d0bd3becbe7def19dae3a8ff9c4af5d05856ecd3cda53e8ee7bfa5b0dbf2feee0efb972c0abb661528ecd86f3feeb7652f1ddb5d766137ba7f97fd8cb86177f36b3fdcca6b3f24cb433b3b9b41989d9d9d9dcd20c6f6eb6319f6d0de7ae87636286158e6543a37b48b78fa0df39857777fdda975e7fde10d51a1b52683fbdbb47678ac19f329b4f95d36fa760502baea300d48d171fc310be487bebef3bef2b7fadd3b1f5aeb1e5a6b1e3b34083dc7d119969ff309437130b580e4c878a27184585ca3ac7622d151d11b0738c84ed42939c02afc8039916082572200377098e0c344f45527fe632249943f0d183e1c324115b4218ade4165c22d511c0c3d133141f5250a2e08272b25e6f07004414683af0410ab002b0ce40c9480ea3834d3f5c342890a808d511c963a91f09460d0cbcfd486841a0352d8a499f046020781188774989f48143aa9cbdb7ab189c48316738c2c0a688ea87478e00aa837be1160ee08ada050236f440baa455331e4ee8c00a403894df903d088ae45780c3815865854d40280575986138b57dcda483878fbe28819329c6f53fc625e010b28cc08692c22194345653456af81d6da18b02ef65d9be038624187a3dc354ec057e10923da35ee90d509594dc57580575d1c109ba414ef9060ab6a0821552cb203469628674c14a55094644c4c5e14d3243932a842e3c93a6a0fc31a232320ac8eca20692299b062ddf1bc2232262d82b549c53403b5a26a1da39338a302110f8998fc504842a3045662993384442cf2308931a48a2639fa5548642ec33a30ced148dc7526a6f08dda333fa21275e8ea8da5590b9d517e56026666144dfa011d54e9ac41491e4280550ecc587f824efc3271b2210457d2d03c42652919523cb203c4883cdf9923282f6ec97433a2a04d8e57f2014a5f3e089bb8f87b3a2092720d04f09114e2d2a08d5ce7bf42c6008899297edba1b33a1f12e5fc29bf1a9f44f3402c47c308489fd0a4c43f60373178648a113fcb0c4062b7294f6c362a1e72c4d21291d32834595c350221a6495b1bb4c80711a20d2e6044e5283c44eca0a3021addd520a2832710ce6841c82aa5ef87acf17054fd4216012b4d146695c586744704865d15b0ca95460c0a4710277c22223ee450b3e2782b25f0101f24e5fce293c016012b78783c2fe584432289beea108f49624a94c180003028f1891382991061f403548a1330a2864042a1a441600b51c2d4cce21bb0000657d0c84083806aa74a25c2cc0aa303d1226a148a1437757f90a8690c069543be8357d494031c9dbcb8bd6dd8bc3a708011f2d6c6ce6ba8c5308d0d042a5e09694cb41d90633bc4340527846f271c9239842178022ded30cce1d20a24d3d8e0d9a1884690a4de5ad43020220ba53533b72504449c50b4f50a057c117b22ae5c2a758e8308dc42cc1953c6bb3d6e944d28811ca5255766b4c587cfd3838bc14ba1c646bf2aae8133d2c5291aae4cf5485b801aa3c7c314899891e7a83bbde9e1940d1281b2373cf84ca560e0212460b592c6511066c9c90348521f88583c44028b21e5996c5471a0218fb40c4c094501ee5c443781faf1484491b7289a27a14961ac788ad610f198a899223e0a27a755ad3559d9b51f8e69008353566f995ffbe114803492d65b4a52da26a5673a299da093d26dc0dbbdbc27da694d0546f545e5a5b586f7b4a6eaea522effa6d4fd335586fb7fd249dde5dcf7f6c338f6f014ba6cfb61ccfb64efa7f5d41fedc6d0df5bada7a6043a95c3bfcbd7ba6bdfd0effa7f79de8c88a7f55420d9bf4b2aae293f5b5a59585457545654492a644ba47dd3643ed8c669ad5b0449a819adf58632ce884928899d8482d05a57b974120aa7b55df23929f94ca4b5ae6ed9bf5f80d6777f4ff44f3a2ee6c99f80c9e783a76ef9b39d7f92bf7d340848903c9d570b5218a4c892ce3bfd86c69e99c9dec7ceb3ada43240550000810102a8024c01a09aa292a2d2a01e1f8d12150ad4274f9d38059042b0c7c888586b4149107d928630b4d686885a27264100263f54d2babbb10c47a15bb929f9613aa5692ad314a6a9475308b674d2c396255a6b0f28b4d6ce9df400656a0f6f490f0b3ccc85949285859cce4d4d16ca253b345e9ab2a4f55425ada7284dea50e5464d123ed08391daa0d0de07e1d8d03a95c3d5abdca91cae7299ae17524b645eb5d63fed6b3d25892db904a5359ad65a824e2e1d934b469d1669f745976b3d05e95172c940ebdf37dc12f6eee7b25be56f95eafabd55aafb0381e8ad5c4b0602d0cdb83b6ac4b61d71b37e7b798ad12245538900e0002004b091d65388a60e19d25a9fa5453dcc937f75341c522a4196d6fad5c9bf0774b41e2d281122ad35ac937e2d5da6c3641f8b40b27f97050e24f90a01fae367aa0f9f38537040fc43deabfb4f63297ff6b55deb1a34aabe8a385522b981858ea95437f6ccccec79088da9d466f57399df5d5921f9e814b9a4c24c1f172f18115e790ab102830bc0d70751972e3f66d68016d5f4f3bd2b944b3b9f1ef353494da13108e48086a693770e74f24e4b27ef0e68adb110f841bb97e7794aea7d60f625f52ebc25f522e88525f5b4927ac8eb97bad1f89b99fd640635da29cf55674f667075877deb96e525334448e68992e1b2eedbf9fffd9e1753fb626a5fecdb79a9f554982f61b49e02a3f5d4172f5a4f75e1a2b54ede054adee541b18752063e5fac6b4069ada73ad0b963658b909e1c5aeb29111e3621e6ad7d10a4b59e22b3f7168a8f874017b4d6005090590b09124bc4426b0de04912288056611cddb4d65217747cf8c311a38818adb5d40c486264718038295a6ba902114050ebf4d048a0b50ed01788edd2a34e43d35a4b890063c320c0d82322adb51422362a5e2839e201506b3dc5877741d10c09333869ada9b06ed499f4038818213d3a49e5518ec2a0b59e4aa4290789503f10b969ad030c710e083285238250930a47f2ce9bb16eb4c7d5bc37b6bfd47a6a0beb74eef795b93c7b2f6f43e7777e709d3267636fc72e9d3df6766c6f3d75f74477b37832dca9570e3895a5bed97bf41af71911eeafac38bb553ad6cb7dca649d51bf7b06b74ac776c41ebb553a762abbd626b4f9dd4d28fbb7da94bd8fd9b6cbfeadb2ff3bdd36ea77539153c91439756c7bb93a6fabd7dbcb2d7f970cf6ee98d36e37ab1d0a8dbb54ea3eb92befef263665c52ec31efaced1bfcd92b5319f7eb78dbabb8cec30f656b9c32df7b187c776d59d7efed9bf9bb2af6e36eed1b8cb7dee3307a994339d4db6bffbfafc54fefc4e273cfb27dfff75b9dcdb0dc7bcbfde57f75694e31eb33137742a95ce0f7d46ecbf4bb7d399e87eb84f3b59db9b9a1b341a8fed76f7e9dfbb2fba3de63f76797593b55dfe1dded7d757c7be4b3616f5fb7fa773b7fd47ddb2bddfbaced6855d33f975e7e7ef71b5c76cdbfffcdbb7bbf006dc6cd977a151797edfdee2f5d105e66dfef7760b3ffdfbdc7e7f4b0d4ea9736fd87f116e952ea6f6b1817d7d50eee5bd074817f7a8376b0d3f78a833713b9db0dbc25cf67e9bfae71ed8d727ffeb7efb7ff136eb849dfbe550b7cc49068fc9397fff9b373fec06f6f505f6f5ed292c5357b49eb2a2f55415ada7a84c4d49922c63026db6703f84f267b353cd58feba3377ab7c3b9ddfeeb3f28e79e266650feff8bb5f9efd4e4ed8919ce094c23f66b55492ac4992cc44928c44922c44922c50b35be616e6ccfaf6de42841ca9a4b55ba563fbee3a349b1ff6fb5f61debad77e78ed87cd6693a5b68acdeff6dd75d87087bd1fdc77d761bbdbd9a97ee9dc5fb1bb55ba40f6ff2954eed1e89fb75ba5dbd77ec8b6eeee876cb3d96cb257fef6b8e5d24f6ddd66f373bb2dfdd4cf5efbe16609ff58b7ca77dc0f636f6db2716ff9dfffda37b06e952f37052b8fa3bed9ec3267ffb51fe2f1d1d92de12e7328ec59e75b549e9dbbbbb2fb7d55b1ef6b3f9ccaaeb57fffaffd70bb55baffd76c369bcd3e75ab74804db74af7d93d40badd6cb6cdb6b73c6eabf3779d3277f2169ea373d3cbcd66cb9fcdef7ad96d369b5398efe6dfd77ed86c5e9fcdd66d5efbe1de72cfb09bcddfe566dc9bb0875938106f5f613ec7cd6693957f6f5fcff667d46df7b62293957973bbadcb3a9d7d4b3ac2c066f3b352d87da3d179fa77ff7bf3fdf7df4ee7fe6eb3b378fb7f96bb897f6b3dd5a8f59414ad3580a9285aeb129a8094de04a6fe3eecedecfeffbdf57eb1cfd38bfeb5afd76b6177c3b5ee077e59b1fbd145ff629ff7a37f83bde7f59ef77f9f4a5d3dbfe8dfff8750cfc7657ef7f9fe7c14de0bc45bf2fdc0a71bcbdf953fe7635abb5f6097f22f9848e77de097fd0b287b1ff8392153fe9cef5a4747c7633cd9bfcb2f98a6260877be6fb7fc7dbde7c98add6fc354aef63bbb40abf763b6d4190aa56bffb56fb8fb7bbf27f2ce17fd93fdbb642a76bfb61ff2272c28ff6ef57c1fb075effc7c14de83c2ee12de9315bbdf5fc6bd7fd9bfcb3dc5eed7fed8e7c55d56ec7effbf2f87bd5fdc653fd8dfaa1b333d33f0c354d75a13986aa5307c8d613f4de0a595c265d2f9f9da0d00904cf0d47acfed96fba793929044f0c7e53f4f1201db8fd9ee36610e756ed8e55b6a4cf2000fad9dbd7a95ab7a76ce1d7d5f6e37b71d164c1a60e4bd35e0d4ba42b20010ad63d8dd5b29f57c5321a606a7da1e68a9059b2a0495074676920368240754933a4e2735049dd4573aa90368e463278d7c3ca4918f703432d41f8d7c0ca3918f4634f23186463e5e35f251aa918f4c8d7cbca0918fac463e8669e46352231f0368e4a84d1a39ea8f468e3aa391a3a4682dc85a0056658544b0800b149e4682b2d2c84f85b4d65e5aed471b682d40475340a10034b73a43a17e47dd2df7dff63f0b2063a5b08fad9dea979bfdcff96b014faca8c40068623025a7f5541c810184ff0af3b2de7af9cf1aa69453705a4fbd2d49022031582609e001aba5f6e4f1a93a3a8d4e526de9eb5496a36ebbb97f37dc5f965f9f5a4fb9693dd53615b6979ca2a1f5fb7cbaf095cbbc854ebf52d95befe7dc9c4309a7d6f2a460bc68f4c70fb9a991d6ad8761772a4d6b0d404fa1693d75a6f554852956eb2933ada7cab49ea2a0f5d404ada7c8b49e1ad37a4ac2545815526bfdd449ede1c7acd65311a6c24055d23a8fdeca4fed6f77028ab14aedf22edb65a04680aa8272c21ee6d05d16e5fdddca67bbeb9af2f74db74ad7e3c7bc3f1ffd3e0aefb57bd79853a9f3b2ed5a6ab1d3a01fb3d3cff5fc5aefc7c0c1189253a67ed87c39d46b1b5a07a7ea1a8bc6a299bd7c0a82d6530fa61a683dc540eba9adf594d854d88ff594834d3ccc36dd6996dae53daa97613e056c3605db8eb82df444ffe4df5d6a1aa27f75f6b154a9ccc42413904c2bb4ded77eb8f7dedf57b752ee7f3fa3511f53a92f32530179a63ee1d2d833b3676bd6dd58f6eef7edfce5e64b8dbdeb07954a0368bbac19e7db797967271d94ba515816fc736571b1cf7b5ffe723ba5d240b309f7b675a74db7ca9bd5af5446dffea11ceed1a87fbd87360fe5cfa3cd29149ef9db7c5d283c7b685356ec30a3198cd8b4665d5e2deb3dba77d5959d51bfcb9cbd479bce4dd77bb4d9dfdea3bd47db3ed77b5e8f36ddaa2b43e3665f747f1bfba5b57908cf53681d458c5a2b5254d4416bf6575d59d199a2ba4475345d22145af79e97a8cb7395eaa1bfeacacba8f771af5e6597cbfcaed9e7586e7e774ea69bca2ee15476ad3195da843ddc2454c94309397e4230082db5ec7dfc3eff9654579edb657183bb6c43dcdbb80ffa711ff446f5717490feaea0427aafdd7305a160db7e7d05bd69add9409d0299090424909ed65a9bc11eeed1407d0001d12cdb614f05e404b4c5b797add33f8daa7f18f577a5b04bf550d8fd336dddfd678b8d7bb429ffd64f143f20b4667bcc6ed847fd6fbd1fd4e5fdbd7ab8cf23209aecfa1cebf3a6f93462631fc7dd021f185a6bb63aef2fbb53a8cb076d4f25ad593267f5f7f8f7b65fc7f6e652d84de4fddd6564d3cfa7637bbcec51dcd341efd9da7aeab065d737e67d7b2febf1a2d85b3d40b46e7bec61a99eaad61a50cf999e2a9dc751b33fd1f9a39e43f330ea3cb2d6ae523937b7178704cf093c7b78d2f010b813473b9d80ce6dc6f6d92964878a9d1c76ee22d5415467469d353a81e8eca043472739c7cc9cc3395b5aeb78aeeed8b9b6e5e436d9985219f5cdbee87ee7f67f3b5bde63277713b7dd549652605bea4c818dfbfbf2decb5ede5f2e7f0eed9fffdf5f78fe2266d83f79d4855b98b7d7a7df6572a67228c4f914274d9c19719c7136c00105e70f1c229acc99b6e5e6d2d000df28eceedfa36663fbc36e5d1a191ae0a6b0fb36855d579db73c5777ecc99c693b6e8f6d679f5af7773a59380c34f2cd9f375ede607903e22b722a20e0d81fdbb6135836ea77cca53dde6572d977efdcd87123c7cdd58d0437001c1db5db37f6d7a37ccbcf79b9d9ef5e61de3e7f207be5fdca5bba3687a2b489db846803d846029b3b6c96b06173b726d49a276bfe9ae69a026aeca841a1c6e904b476783bfdc8da6ed6a13087e39ee8a56666dfac7dfd76f639fd36850dd8a79ccaae150a5fbfdca5ef1ced31876eb97fe715a6630d9d1f769fcaad2be530a73a7ba2d976c07ee757e47d4eb8dffdbe747a5770b3b0bba3feed9deac655aafbb7ecc2bbd76d56feeedbb476d8b9cdd8aa3bfdd4fd25f4c4b83fa9bd4f863bd5f729954cab87d3bc6940a41980260c1a2168f2ce5c3a73e68c933384671a989163c68bd69a659d72ffcd26ec9dbd097be7de875c562a5bf7ceb9a37e6ca6b6708cb6cdc8fecbe50eff39c7b619fb7d0c85f6985bf9ee755dba65b7d9dcdfddbbd961ef67e8747eb83e77e77c5a16dddb6d3ff489b03b873403a8f59397e9a4596b87cb9829f3a2cc99d6acecf698cffb736b992a4da6922663868ca235ee891ede308792e9d092d95af3aa9b614c1f4d7565d98df6c03156f418189a1d83a7750b7b78a6eb54ee77f83913ee53eb1cdde1e7ccc3cfe5ff44eb4031553a317a5a8b41a0a3de2e8c913019c054d29afd2e983a5ab36008c100f8b2e50bff22e7c5110f2f33bcb47529c43a9defe6effb25b8716f991df62fb40c9e778fb91476afb17cf8f9f5ddfcf073b96cf316ee52dec25edef3bffec3cf99ec97dded74f2ed74beaf6bfd73bcdb2fbbbb7f5ee6ffbec6728f975dacb45d6070ea15f67097c1cd0f3f97dfe6dfdd58ee71f37db9dddc5cebddb94ee57e2e1746ad357bb777c70586d65c00a11d863db475771e1732764b1dadb7e0d8a2a759775b3bbc65bfb3d7d2476b560b23dbf2fdb5c43efa5d2d0c58b857bdb7666994e589d66c966a3cef2c675a6b380b16472c4fb466b1c0d0ba7dfd140b208ba54acb1ebe5249be6205ee55d9c3adcbff1545adafe869ed77c54a1fd84a152b4eadf554e62f9f65289772797f0956c6749542ecddde7e5b984fab94d15ab3fffbd84efaa9542a51f112fb281d15454f47a56b4aa3295e60a9fb3fff777baf66dbfe7f87fa78c3761a3945abb191d6ecb6dbde8e855da9db631f7d3b0cd335326a76c3eede3cb1711130ee8d808d67d6eed76835fd7cea68ed702c05871440dd7629553a8aa3d65118a354b5d61a831ca50a4a1dade9a030b6fdf32914149a8567291d1427db7629943196ee49257d7d7aeaa67b62a5ff27533f7d82416b2dff27635a6b3dfd7cfa8480934a5a6b2756984eba932acd96b5fdf7a92cbbfffa329b14d24d8068b68d7d34ca994d3ab4b087632f437993b10f47dffe3bdc4433a9c30487fe6ebbafaf2b3399b26ddf4c76eca34cb6f4924a4bbcfc2d7b5856ec7e4076dcabd57989df123dadf5922d259db4d69a5bf7f77e4af8684e9d7b5f6ea7d85b782f498b243dc99566b9fb3433eb89f0460206c98c040392cd0888518b669d2d99d339b6e797c3fdb027f6bff9ee471e8fdc39b2786482113d465818691a29502452911e45a0458898d15f427f6ed8fd129cdb8c2d7309b72cf3dd9fce6dc692c17395f7d8e93feca115c6f655763d6cb6b752e66e5ced719ff62f4176f7e7fbbb7b4a367647841d4268089c215c86f421ac103e4296b0bfcb3eea4a633edd3fee9f3a4be1f97ff7c31e0af3e78fbbd57758504897900341cc0491110484d6daf9e3eee59eb8a5b0eb1c241b1c1b74b6ddcb7dd0cb7dd0d9f6412037803c8190fd88f403cc0ff787d50f2a1f5a7ca4f091e803836659eedc66ec86f9563ae30e5b652ff3bbed749aedbd37eb742af98e63bfe5beec21a847901e853dca34dbc21edacb7aa287425d39e6d51e4bf9fe2f0f233cfc903cee7660dab165c7e20ee70e043abce880a2a383d62cd9de5cda5f37d18dab6630ff5379ecbb305d9db36cfaf9b495ddb6cf7d46dc7cc35ecaa5b09bd86537c7a21c5872c4c81c4eed241b83fbdbec4ae51c334ea9fc551f036eb95d75567160c2f1446bbd9138b66eacb971e486061b8f361a77eca31662ffeeb8cb3eb197399dfee5dfddb33165ff8e797fed6aeca9f1a406b3c6001a8a68d8a0c18106d80c443366cc78d39a75b65d8eb9bc74ee2fbb543cb6ed1b76bb1cbdf2177030f63bf679050a7879b79bddb18f4a61f710ca63a6fc79de7f5d0ef7a93c3f3bec5d0fcb6edba954b7ed66d7578620194d6428ca28d39a3563fd8cb8bd05b2b17ee5cdef3a7774cf0fc6f082c106460c185218582f02b97871f6c2c51b17375c74177f2d3ab5e0d322490b688b0b2d368b514816a05804d25ab39b4de4815beadf4d613b795c4616fba8bbbffbdd27d543adf2ee13e29ee827f4c4d727c2eebe72093cee895cda63a994c73dd1b7316f612e9bc5d32fbbdb4cd9c23cb15bfd749745f7d8efa91b76b7fccedfe994c2aed5bfaf8f6e7e7d61de5fa8cbb26c977d22ff12b687e3d86f0bb077ab7eefb6b7f0fb76286ca68ceeb19059e4b1b85a1149b3b24f0cdc4eb240d83bb7d921d4bf55c59eb8912b88ac98ae987040235788a98863e774adf2deef150a7769dca97dc32a52a8e053f1a58280d6ec76c0be1d0a73e8f6f276a33d766eb31448528c48418622138a2f2892a0e8d34e32b4b13fe756b2663daef27de554f73d84f2f7b9cb9cbdd974f60d73c50eef963ab7bfbb71cca166d4cdf7bf72f8f72b97670fc7b3fcafefcb99d7f7e572cb5bb8cb6e9543ede63eefdb65646563775fdadfdece1d423d5fbff22b87bbec07bbec13e3a2bcbfcd984abdf6c366b58934313571c6ee25b244a7127d34db4be0f85477f7985bdb984ff7e7bb849ed6de2aef7f08ed53d9c32508680d48a28bd65a7f77d3f966736e0e2f4ed1d7cd75d90fc629faba2efbc466dbe7e8becc9bdfcb3c96a3d7b7accb3e71b1d1228fc5b945adab19ad351bcbee6e3bec467bbbbfbba7d0f9efcf771999d3b961776ccbeef59dca6d748f6dfd54aee013dd19b1efb853631edd571eec8ffb9fffbf46af559a85ba52ffee1df55b8e7975b730df8a6af496f9fe5df6898a5745bdedfd368ffbde7cef8da7e8a577d4fb78ce5ac8ea05ee561c31ef2f74c3560c3dee53f9caa974566aeca3714ff4a259b95fb7ec267680fd96b973039f605d13ef8e2e3003a060536f49a7d7ec40d7e7dc30f77d8963d298cf75f6e7f29767bf3dcc9c81c81e069c0959326b8f6eef996fe459eea0d9bee8be9cefb2fe5deb66a5b07bc8e5b2efe8f3f8779afd2dcca73b76fb546e5d5ebd726ab7eeb2ffafbceadf98506c456bd6d9746e3f3a3de65ee2f5ed31375ee05fdff6fbdb77787c7c74761baf6e33fffc367329d8b7977b7a7cf736de8bb7ae2f9cafeeb89bf5f8f09d9f1b0f110ce222a20544006cd49bb1d3cfa7d3cfa7ce6dc6c6bdcafb14baa7d099bab90bf7d7b9a37b31ccfb6b3797a606f7778e8cb9cbc6fa21d495e7b9f7385addd29af57558b2d8bb897cda9fdfa57a2bac07a1ddb15dfdf3f756b099167637eca1fd7b19666c3bece1fdfdbbe5192ec393e7e7f701a744a8045129f7b198844c29340322400000001423110020402c1c0d086442d18438ee0114800160c0dc54a13496476914630821638c21020000000000c0084201cb5e88f19487650c7c3d000221aedcc3daf7c1c2130146331ead3d9285c0bf99ce7867beb8f51427f0d72d2fdca7f0ebc00f0f89f2875492f31f0cdd4bf06262ad1622820ff8e48daf27eebb58cb4ffcef0a9ed74758709b6a0acf8b460fa07578d44322e14c43cdf69224ac9bd2fa816761284383eb24a6da5c0b9ecec07a95c07b81539f920034fe81b2ffc1b7add59965299d2ae2c0ee0a757cf068003f972f4fbb7824f3c4d58885c99ba7273dc9e4a2c57ffee70629fef6554bf4670ba3d79aed1e603b1bed183a8b9cc136aeedf5118be4f5ba55a0fe0877f003234ff33df995fe10f6bc961a17d3ab2019396414307b15a722eb3874061228ce2c37bf2ae29bfbb3adc3910009efe5ab5daf5f6696dc3124b83c697f78177514764ab34ccffe865a03ce517e8a0ed932161927a9d0afbd2d616880ef253b33ab80ae01185853ca17927643032118791be6c4690eee9a108b5428fb84f07d7e3dda5d6ac0fbcaf767669b9908c7a478a17748539bb7159df31d56984e952ff368d1ca6af4a0ba960e15f13857198dbcb23d4b1b98252b9477af84a9833b525d47f23df9c3e3cd7ea8152075bead38e47710db16f1b977620b8f9da587346650aea2c81ce78a8567eeb44a231b3e2cc6ba5f9aab907a1ade371a33bb32772974d12f2107ce41a1745dc416e4b306770ee6ffea484f7c3acafe50003f8152e8ce6dc5335c1011045ed3a7d31ab80717b27a32dbedb002466fcfadab3ba1af9d8f932fe59f2123371d74913b466300974d1995bd4cac6e65d2ea4c29cac0a9ad144592305c14cf62f5b20df4a1f71714ff653d4a6467a7a82ac3a019714f52f96b93146fd2ed870ddb331b42e481480401fe7b80c8c19e7c0e023393f9119e8aa77f76bcbfc705401a6700fe6ee7f62e73f56ed7ff7c65860f7d008acb5548554aab79c50922a789c54dd15abe7935b2ac07c226190f3b446dfff6f57e2c13c3e1b57e9d9d29d2eeb11cd1baa3b6899c9f203ba60a6db24baf37de22cce28cc21d9f7027d9d09d1ae7a2b71ff0e731531e6ae615ef4ff239a2e5f32a4cfac6c76b55877e1153ee3f4764e4dce57ada38bd02b0a13414afc8f27b78d7f759e6671670022fbfc99ce46b77e9203e794bc9e7a50fef5e64b98533df8733ad9d12148c0cf013aa60ea3963a80cecec73404015dab1869c8a98a53f9c56d982416711b342426cfeaf73153fd6e76d34c7603b97cb2bb61315f53a98961607e238702c164d2099e725ae049cd284638b33d537e4109a09f7be28c1046cbb81a58ddcc4d4d29a4ff6292ca4071b8b18aac104148108ae9e5ef5212aa3334f60144ef868058609416bb24ee107a088bf250180f7440ba8e39a40acd45b543bf64dd214ef69e7eb0676728ebe33c72ec1284723ab741c858e81e122589e7adc3ac7d954c7c921d1417edc798f295cf3260ccfb96381cba3711450b037d306034868e254517663ddc307b7b7c497e54ae6a9bbce2d7f726a5dec9c69149dab686551fddbe42d42f476b1d78314b28f8977eebc2b0e37dc2ac6f9c9be5020a1e720f1f1abc6575c4ee4ae85e2025ced931be897ac6f037e212f9e9d7cfef2c8cc11bf47e05bd176da31166895f88d0f713bc7a6e77b8ad2631fde6ea145082d0d8096451fb114dfce2c062bbf16f77366d0cf11e5d7235e369af7f8af630abd38615b3c9713658c09136b3bf1ae0c57ff194df4e978dde9b7f06bf25dd86bdb29dcced9d5e04e1087ae9adc5ec6e79b091fe8d373b8cc6c1b9db908f48d413c60fd3ae2c18c68e733ff4bc47a42503cf2423c6193f677efd99490a470b3f8cf5506b5f3fdccf9d7a697bcddf59b1fb00ffcd3657dda38daa490cedc19352e69a2b57eb5b1f30a0df1f0bbe333ef7c3b62391d4c28d8f16e8968653db1df78031050cb12311867184f953ef7c6dac1f360dd9955c8e4952626e22bb0a55b570034e7d309c5b1f17197cfb80792d2a871974025a7c4799bea6166d00ee83e5c8bd7a8d087fe6e7ea0157ebf23c1575244909dc745d4c2ed90701b317915f84a90006bd8a4a75b6f4e6f77ba000c31e5dfe1dffb8734bec77b828bccb5f91c30639f56bfbf16f313dcfbed23f7d82773b0a8502d05bcd7b1a541c6333cbe9d1bb9091b9977a88e17fb074ff8671d7a6e3a46dc05eef2cdbda38d33a03799b3612afcab882b68f03810aec5cb0d9142f3d19be87836b87fcbd5b67825cc78f03de621ce5636842ee8c21bde41beb4b0e757ea2fe2e732ec06d6413e4035d62a0c1556b5415dbfef5c0b873bae384483bd9bcde7ca67506cc664c41f8b1da76b5a7b3855a5667741d9d80da2d4ad388f245a06a86b11be43e0ebdcb6d972292ff582dff516a3f4a12a32b3a2bc6de5494d7ac42228e1909a6461d36bd4db0facdc7ef05097bff197636cf8fc2f3971d479665ade222a9e8dba4ee97fd344bc80caf362f669c6c410d79ad1709cb38f8938ae793bd4ad63c4e7cdb89ffd95a6854d31e1b2006fdc929aaf4d23ab82bd804fb85e0a94f7a69f0aa59099ba209a215e78384ecd1529bff3c3fa8acc5a77fe8b90d0a115ffa73bc345870a479eba8aacf83e35661aac0e44bfa838a87258a4a13cc5ce6537d6faa40267965bdaaf254f93789ef105a8a5427c58445cc128dc92b61a03e13c753fab35af294a0fdcdf032346107753c35ee928eb97090347075a69d9155d44b8d5ca272cc08cb71d9ef43390e0d7d2fb150b14e213918b0e21ee844769268e3a23241ffd22a35b7277569c756bbed54787279ae029f115cca5ca48505d28d25eab85cd086a7da0ed55a334311975e8d79fdce0aadbb1ebf2cc3a0380860aa3aba2f3a0e7ced7461118df03946f4f84eb85abf5f21ced6e311ea6ebdf58c4f2fc0f583d5a1f0ef14f8bd90495c7f3160eed6eec18c84311b53d4fe20ee87ca08966fcdd9421f6df63d40b1e63d8798572e51e9b68971ec7705263db25b21bce32ae3f5f58ea0af9fae5d03490e054867f928220eb738045530478468b27685c1cc40d965b19678406050219006accef3311d040faca3613e36089cf9f0c64c64f518c189758386782ef0bae516aa59d8ea25b77314a8e17e7076a2b9e22c291e7dacfe381b8f948cad254276acbef4b8877192724d2ebadae3e8584401859abe3b175ea3adc122e46b6e709ef822e20fd62e1f2b662a0fa0f46b7bc26ed2bb9129054173423175be3c4307be60c4923251718c5bf59acf40a7cb2b9f0875f22c638dedb7293a933681ccacd1f790ef18847f9219357300bc33a1b0ddebe611f8c98cd848084ffd23320800741604939bb855fa0568e8de7e0b379a2a94e40320d52679bfe1dcd60cc697d0b56f0be581e23f85efa3317b91ae5420d010778b5bc905bd171bce89572dcdf581a855c167f75125c6b3c72ca9265b418eb8c346d5212b40a4e80bacba4d70843bbaf3cfbdd4428bbf0242a65c08f5d22720d780c279b6421d061f0940d7bf35bef5deaacc9c35ac310cfb2a912a93774583d04ddedfc1abc6908c0cf6a17c3c39640ac6e13773c1331c5e10d0fe55523691c30500ab5d81082461a706955c5a41abd37a1a05a8ee095a55db0f844d89e7acf0f3b6a08d62e71ec3848cfa956a2665e05b6d09315c23de2249138ec8c49ba899891bf8068901e4b505cb3ff4c9843cb733a557be28239f4cbd7f8268a2e42fa40f69b0b899262169013a870b42b92b9f12eeca2ddef3ddb0a98cfd49f7e218e8dc99de378302507448756e89e08959f0e9483631e6169106f92d0a2433a1fc229545fe1e66a9df0076b2a6235c14d16984b89dd7d02ddc6baa23c6f95f0b7bdcb07882fb3a76b4128220d68cb0d2f04935411f94f46a0f3eb0128ad3569da9dc85646ce6a63b8676ebaf72dab340b244a9eb256a95026f528c74cd0b2f668151773fded889a505cd9fdeb9c1426a9dc0adacad60c0a3baaea5a635e234825216af89fd68427e8869a0387ba5d75eb3380d06bede46929850852753fd2abbd8685ec2ca4d546b1ef51c53d7b4f8dafe10c6ea112b70be41855c7c6bdb5b9423fb66be2e56db28a72ace5216c53f610df237e797e7092e1c2267a519f16b52880bfba4b41c4c53e42c9870bfa9505ff5a096f86323b807fb10d895d9198d7c641b8e60553b494b6aa16130c98639e8c5ce7805e9c5be6daac88759305f91072a5dc1bdcb9504f1cccd8bfbc06486a6217fde38ea76c95fdc5f03322e87f84cd96178f12c2100adc5ede9af2c5964f8e6fc1b689727e4046508d4aad1f31939953b09c42752f21c880da2f793e2f5744aae1b512c38a16e33a868bfc7f2fe29c53613749a9474da128bb32370f65334f21ac1950ef44ff1a7ed7ad99f2008b3a145350c8bc52fd89bba455e8f35587078733da1aa0b3c3aa3ed6e13ae3e943831d80de1baa87bd67a0a255a395b79bc2204ddb0b6c0d90f03a2ccb9ac6e2d3ef80c4b97f97776dc8fab2f51624cdec4d86fc36a69f5868546cb579707f29042dfe5ea8c0693f02f99344d5b4aa49105c6bcc4996933c6472baba6a69a2a2c3726fc2581dbcd441776f57d1480ff1706d44a8ff6fd35c46754d75221cbc5d64cfea57ea81055e9d02d5bef8f4581032d93e041d3929100eade6fdf1a640543321ce0844fdca0857a45e0d2cd48242b06d1d550ee2f2aa45c365718ade002a18ebd9ad7d49b998c5ee839a4b640ee19bee4e9e18eb0264e49134910bf46d0fd95a584dc2d7f9b18c184f970c33a9562275694461bc68918be3f0d5d8674c9c8d4f413aa33706d9ba37a7431a19edec743cb1aabd73d5508344c8592b45915b34ea59761a10e75e5ca1c05424808eff9e8669dae74ab58fbf490e99b91700fe59eebbfb7765f0468ad009869316625b65f30e80cb4ac3867f969facfb5a446f30b57d1e074e85762e0b68cbfe00dd78b484d5232478d0df33fb9532a1cee422647ed9105f463161ff34bcabc5dff375c6601de558de1c90d0f3dde3f1146caba3e3b3aab0e416e85f57406bb4e1ca6fa956e2a83945ae04ca9ffd1e48585fb1b30929f954a47d5c4811e2604d0ed9cbad59d9f68e33375d5d6e1ccdd08f095056718da3799a2ae586eecd1ac11e1f9224c6cb8f7c85893502eedf212731766b5f0875ffe7e498865ee2521cc599c41d617060d46af94adef32130293ebc3bb29c99544b89aab4a3fbcc9ea4d6ed47404abbae5b006efec6b815011d0155a28b2594e0a31e1249d4d25c899f7eafc2ed7e5c84b324cf02990c3edff7a0f6067383d1b4bfe2415a2b9169fc19c6066f65417fcbba333678cb0d30e05089497639734309ffcab675da296d8237e9c3f0a4b8c73a24271a3a67314a43740eb3dbbe5f905f1f1849fe02fa4ca6768f7ea505c93fb1122f727917253dd41abca8b9ddc94f86e7fcf6ff8e9a9a6e5a562da5e2679f2d48036515c11164775871c90d24587264564509e043045723e697e23ad5dcbf9c4770d477af37a1a9eac5892213b90743c171b043a645e3c9e1548a3babcc30d0494e8bbd8af66bec8cdb3246c20171dabd2cca54cdec066575649a993af7fad0032b559150c354a54420b84259bc7855e84a1194868037798789854d74c9a61afda471fbfbac2cf0b4306a3c9e347b7972afcf09bed1988fc8f2596d7506f3bd770b887ac733f8fe80282b6cdc298f69790423276566c0450a057d5d65d0bf1edbe30d1891f6c1dd51df694010e9110a212dbdc078cea300dfe4ebb9281bec1705216d90c95eb1c9aea1b3a9d6d657e78b40a4043a623d6081e98b78b484c6f1a6ae21010887b57a1690e31a248162e780928f0e600a69814bb7caf52fdd51493753d5619687dd59f27c6cce3242b2baa0c87b8917575dc9f81fab14dda909709c3b38b74880030492e0720b359be30508212a7b2933ae8e9c937cabe139d3821717479aad81af3dddb6fce7da06b898b9618c719c5b0018036c4f248aaa6652b7e8df8b45cc21f857eb91fb3e0120c435a1a36c7ea7d51b80e04ae4100e0281de74c5f83d5c45a342151fe13ca287da00a048122061d82b86bb1739e62dcc96f65791583cfbc89b84c068d34c75415470658a53825d7fff33b54cd3350c71ae57827cdd462033cc37b303c785a8a6267f1c6d426514ddde3c6d1a958e704159389bae6769ae7b7c6fe26c8006d7142a0764919ce8ef9e437464faa36ef83105caf7464ebb72c118ec24798828ee275e134e72ad641a65b10b41287aa6f5d2248a1ecde587cf9a2c94344f30b9465d42ca5a0310653f022ef0b47635e1902eacb880cd994ce7a5546b6a31108da2a0d1a57415cf818c341b2d0f56812fe9bb9b09aec0d1705835968f14db659882bc5332d86feab327a9c5d95a7ddb09332f76d713429fa2f534027947b23b4685a43c7ab10d4dbbba9238e582b8edb233095a379fdeed0e38626917d3088a9976876d34d2679fba0211c7e16a4223f5fa627329ad8ae6385b6587160956f3ce7da8d77b09197c625d120b88a4cc0486ddf2a411d426646130e4da000121c76602930d0029bf7b5a9fe564b5ad0693e376fe5ce4755c0bc93e6756aa4d5f4591d33bd6a516c02265a2a6c1386d0a6c95f65f1d2f65a9c5171bc50ef1c85be47dee5545cf4d4ff81b66a5819b97026a7dc91b3a79eed4136f77a71259fc01206731fadf5293680af1dee76111f03da95273efefa89761c8a4a1bf4150fc28943c21ab877e4b3613d3e09b7d69823318832b313dd6e1bc72719affe9c8734c05c71242aba39a8ae2a6562c938a8d93d73772887c8cb82a86cd9a8171f6d475b984bc9190078aad8277c2239fda977ee11faa6e8e2ace0943bea6feb90afd5071640e895a20a71be4f68e8c14298f1f1abba9788f7de2c7768e89ee3c48cc35e030edc45121fd2ca61f4228513a16cb0d9a94b0ac9bce56a26437055895fed5d8fa00a796ce266cdcfdd72f505d786b226ecb92df99018f5923ec4ff17db9074a5948b71904fa72d359c227d0eadff86df0a8018a92f4946934887434440ea0786abc522da61ad20fc6273a759c93ed591d95c255c6be18044ab5faca4e5bc691aa23460895e207f034deaa9583aaff04f88765f496d9a2b44d4c7aabcf8cf0655ff6f643a0b3615d822099235c2869e16c435600b0ca762323f3d640ad046c0787182352484d0fbc680c4e0b84b94da0a8297220fbe490a885801abc2d136af43329a14dcc13aaa81442ea07e3de2fb4b7cbb2344e0ec9f91ecc20ec41389855b5617020d41926007920b8b2703bf1ff4ca618e46c58f976a1f198d90ce32a3beb8c27084c9d0cd1be8926be884f8b4b129319ad43d460b7fc73c55ca5bc1d1924dd284bdcccca374bf2d89dc424a81732bbd3c0c9f7c96d1e686a4ba0a631137443bb41c55fe73bde6fb4282b91841984c457704d25a323668b4ab10293a025d0dacc30e7ac1dbc09489f23335ddd2ed258262c4c08d2a7761234c1e29b4dbba63d8dffbd079ce27dcb59171120c462ecac74aaa0859fa845760d57488f8fc58683b65168794e518825eba09804562e628e3a36fd283867d72321731c2b1c147a014c99152f832c707f4e4095f875ae80762397d5805253825988915575b71471749d0dbbb7250dc4324b685c090fe0abe2a7bb994be03578c49964e979545954b872fc5d07c477aaa966451867e364a6cc3712ec1c17ac9866dc4f2daca7e5d6c2b7e522fbbfde0ff66da38d025d6035ba11d3646343a85ca308e3d6c97d63f6459d19da0a9e9a7a174aa24c92fb106a2db4a6522f44d9a96a4238fc3a61394abd1ea36eb1ff20e2d22901a92ce288478437a80673115a2faaebdeda6fc5f92ddf0f2d06a6736562a474f517666f4f45664fd090280bbb489c2450c740fb46e691405fe38544c88bbf3d4ac34556d23540f335e9c15ab63f9f5a2c56709bd76b6bf8142e5da394e11c16cd0d9636b4c4b149d02aca83f09659cb2cfcf1e5a69577807bf9e1ef1b26e5ab6d6102bf68b3f6bed3b33b6c0c72bd7320f17374937d2c524f46fc5fe3a3b3df387c6e2a709a4e3d4490bf33293fefeb5cf8efe70907bc29da1ef3031810cce1acd44f44e287e453a3db417e7eaad3ddaca13ffafe34d4cdc7346ba7ef02c74324b68667de3448e0f023b6b359826fe4d26d116db2df6cab119701360f6f9d08f6ee02f07a74f494e147e75130ff25b3d72f0d30ec770007a2e43685b7c4abe3f08e4c28d5c1697dcf2a1238e43fe1803218da200aefa8b444c4350eb4c511fb4ee14727c8f6fad95c68cc4ced099fa8c3d0f71e4abdc51a76bf435e166e70b9eaff57a5440e9e55fea6aa0a25a8cf2c319d5c738be4819a1cbf402c55bc7f1e79ec8e68d75f6a08293e413396dd80b1e64572bad9335c45fcda2483d66028adb54d0b3bc3f6ce9509d161137c0886b7b30cc075f8beff8419fb38b13702e6f8e6f9f1dc8a913b306d442c5ab817257d011cc8f7ac16ddf082294e950330ba6ae30200f9aeda1e9d7eb7fb100f2bd8788ec717a05362226e7d2e373d847be873cff96dff5e9fe4c16a88c0889c31c95ca2868536c84fe94af3742aecded2c2102c04c8e355ad0da45109189a2fcc155cd5601e5308c3fd9bb5112b03bd48f8b908f602cf6522763f38a8e47afd3a688dcc33fb4e7a20c75228f2b8b2450717c59791ec0a3a86c995720588b2dffa836777a88d5c7ab99e8a267ad525e8ff3e131954970d3fc2d825dfd5af871ee81faddaa046011241fe38d722919c5918f293f6b2653f165deae49a3fb1a3549105d57dac5896e42474ad8f72fe6fe7f9dad246aef36e413fdad90f283d90cde99512a3dffff9031e0f97930cdc506369e7bea2b448ef4bd8fca5b59d9e4d6417b56156b9e64078b390a81b857d670b583553b17dbc142bdf287f6c81567f47d16fea6ea05f579ab50e2166ac4eb1ac85486a499a1163e282662f54bc7f3460e8b7577e875e2ecdf51275cb3a05f3a2c5de7c04a5d119379b02b3f2c74779b05c99e5878adf54d8421aeafacdc93a722754d10deaec7b4565a1e2eec3d0501532cc1b352f4388728e0b09932d6288b14a4a699bf03546a7242e3d45fc20220ae8e84134da8a798b6465ee841d83d593ab4323e5ea829ee2d18c840538d71da6b254b80ccafbe04acd83c572f4c4e9a0fa637edd9efbff67cc882952528be2fa41dc3fa559dae7e4d5254ed05f13fee5af2585572a4c60cf8873db365ffc8945c2b6aa0c2e4fa8b84225fa539e22836c2f5f18cdc622a69f9ee22b8bd81102b01f39d3ebee08b7f31c122dd11dacc259eda357e20974e1d5bc1ba7de50d6ab4417a9103c78764ad26141707e9a75e80f8cedb7b9ca9c414a71989ae3a7dd2a9369e59f2f1827ea24177a7be6105b06ade844e6e2ce003afd722f612d441ce21ee8d77f25e42209079c665d46a453c30ffcee7f00c543d01afb38fbc5f60131cfa252225a4a9b252abc6d83724cdcbfed84ff0fd49cd7c325cfa619fcca9e18a5b07dc7788576210fe256a35042bf9aa156a077668d53a7e9ee88024e5fb361358c5a520916efc6684ce6e29fd33c88e8c7f2e8351540c70405817755f2612a23cf2bc6195071bf306d13635b2ead83a5da0b1d91a57c2ce5ea7ff8302eb044d1c79a85540e080c59f3c2c6c1c5ae908055f2c2590a2f768a6421ba5e8b64a247cc373b973ae6bc0b3ef40ac88bf86e899e4c883da6eb85d3b16bd526b716ac2baa897859e86dc594803fcbfe494dbcfbc93f2760091e7c2322a67e34d7dad155447b869aacfc59e3022209d1782dd36d6da52b845a032b8c826717feebd4176c84c790822e506c31909109fa9ac56499890ea3fbd56a7608adf2bef32f150ce8ea843d440a149894257e75757060d1f6be620e45bf2d2ee106545488a059700aa2550e31a28fe73a1fdb9dd409eb6027cd69956d1c7635024974fab84246d346298902c3bb17df694afaa65bd0e5667c6098a993ea6f5bd87b919351479807014aa379d1f843991a3dfe9c4d09faa63da0917b4489ea199f939e72b868a43f226c26c778b4ca48f2374b5a83e03f76f12908fb40d08bb71bb117761e319a9d386502ca92b56596c8f23141fe198757450c0b3cfc13b3c476950a501417fc585954375a5fbb6876915f413f3b505d3c74b90a6c53461c8c35836e13a9d0c4d9058569cc4bc1b5cd44dba530db4eeb4af841115fbb0550eec2be63b445aa67a7446cad7fe5194622444ca86accf8160d0627f0a9f2e82aae377995a36dacd83973bebf7bbc5b7daf4fc4e341957a5979f5167071ba7e8c5c870b4ce0ffbd890dd91f2932cad587f3539a10dd0e1368214d2d522e52dee9717b852e618ddcc91b406b774c4a252b563c8105c0dae0b7bb99be97dd8d5d29d566512669282583fb825805724969fee86f488b42cbec043c8e5a7b6ef1ad2de8c2b89f98c80f765cd5c742786aa526113f82db08b27b87b7c9a1d4e6fe0e8d7675f66d45358707cde2372b2a7297ab0a8281f84fc04ed7bd4bce31ce6364886efb190267fb7580abff8886b141dc4508b8ec4f1cbf02547808d93fe05ef1e115374409998283865626293009bbf7fae01a76d724c52897fbebfbfb59c85620ae1dc9b1316178665eacc056dbdc9e4b0045db5168099e5007a1962424c03220a40e1a794cacc39b0df14986c417425d4d3d606b0ef96e4374466ccdc03be7cfa21a2cae74771c201bc07d1ad7155f531f690b2d0a0dfd94fc8e6caf5d17e660ec14f8e2a732286a72c38f66f4d29a6f89b8c332668f1e680f2d44b63b475a1cbc8d23f41ca7067ed93384df75c5ebd0e9a49a5bec343c52ad71bc5cf1a9c46c677e30b5181e424cd3db42174aeb11ede6cbed071bf270cdb81eff9af91e400105a80f04a51bd8468730011b383ef308dbdb6abd371de28cd91719c6592f9eb29a7837a0b8178eed9a2cc048e0077ba294ff98440c062c0e9b4e004644d2e39e94cca0ee7160a25e34381d39a8cab4104b80e7ed66050feb1f043d94dbca923c8edc8da11aee8b9e34d1dc949089a115859ed6723011e879e43c688551a9494c5777466c1dddd6edf39123baea8c914ffdec6d5778fd4191258244e8d78e7ed89df59cba3a5dfb37da41c7fcf573e5cb4a30c04c74c5ae392a039b5a356750d9b472b9c921a3a6c08ba122d91fe5b6da345e094369d70841ebf6c9cbda62f07a2f52c25601c5aad4a4a58a80c3a7cc326fac0d358cba99ffd4eb15272214eecb5757cd67a27f1221a2cb46f7888e3a376425c2572fd4435d46d83e612a824a19b0c3100d17a01a6df1ca930a7a3266d8d12227a26889a4cfd983eae83ba6dcfcc52e541f4723237f9cc2b92061f657f361fdee6d1b6764dccccb33ce104d103f72b2473534427ad7109b0ba9b8038d7bc5f54cbaadb692f56dc10164aff9f43e2c085b6a2e86994d718f5001aaaf0afb5c6c122dddb81e8e45ff1a46324cb099d68830cee51c3126f3e50b595da4c121a3c363552946abdc0fd6577c461dc25ea663c1b0ac5650a9de97fd3b54014864389177dfb9aaae1fe7ab5952b3b113e4494604e4ab0381a009510d0397b94f9a84f72fb27cb92f4f9d73a69de32436f7b8d5462c7b1d7332a2e178e37288e114b6b64935b36a9214e3e7cee9e1d5e32c1beae3ef87137548d0e2a6cf966c9d0f73a9d755dd19cfd43eec232575ce1047a1e5033c7ca9d3d348a3fc5cbddd0d49a81ceadf23b6dcc78eb7f953a139e9d56cec578c9ed524ad81a6befe3eabe64cf83895c990a560ee9cb71cb7af1cfcc5581807c5de11c05b2ea7ee3109ff85f502fe22a86dd8fcdfd82e76f4ade48cc7b281db41893001d2bbf0250dbde31ce9fa517c3a70520f4bc074f398768361e6c424ed3f3e839410c731c903690ad93b23cc5d0aa04d560aafab969a104f47de6e17ba792b1f82f039a92fddf415e26d9b35df3dd8a1cfdd0c4f954a732f2cbd11597bd6b145d9442e4dfb4b76496fa30ddfd18169e810426f057c179a4f4d8a49a195daf64e5f34422ddc438cdd5f8da9afde56998dccf81fbfb75507ba8eafb60ddb58310e242a469e1eaa216469716386be722db86a98444355d4472e4568b21f94dc4410c2277ab2753bc73fb98f344d4d2d6c2b835ada60ca1ed7a29425e631eee94318483eeeb2ea7233905ce0c25d359e7ab06d0a48b4d721279a776314f68b767467cc7e367ed0a93bdd1fcba3b29cfbb8e6278c2f90c91c227940671181cce5f20fcdce0abc43cd777c25bebce8cf7f54fe6dd41ae709a8bd78d063613508a43408b37b8da006868499b37eeb699b1e2d0aa3d882c02e2660253d4ca0323ae2ad1dd4f150e515bec4c3ae6182ec61352f3bfcd4e3548e625c59cb905739a9448d6e0fe7bfaa21c2a303b9160dd7cbeb049da4e1604f7708ac55b6ddc0059034a679bc7e7c9435ce71cc866984b2d26bb64ea70f431db8f4d60e4aa65b0b5af38629feb5f3e84a035ccdb38d81d79e1adf61dc90e84c9c334d0200f345c0ccd5bd66b308b9e7d694722232c76cf06d85baee0cd0b15ecb50ed11295970b5afe33f4bac3b52ff6f20fbfe679dc271c976071e82bf49b4804d98ea226eb34f9c5cbf504cd8942ce67043cb452b09061567e221d8ed7fb41316aad450dd904942424b3779113f7df1fea063492566fad6ce56527d70746dd4cbc8b1d472436f497f76bc5f118b7e98864295e097374e5bb1b9fd3c7524f4a69accbb03dae3c735ad1e523c677c9c38a727247f4d229891195e41341fe29ac9c566b7f10739d8ad32a843a5123264ac76d885e0facee01edaf27ff1745b2718c1f258733e26a6c3e869584c99e7ad2c7550e4259e84c03537407485a62fb672dd9ee818f92f47e4075ae2e9cb59fd42f1feb5ac684a2f64094226c3becf41e2cc35697f516208f9071abe504045eb1e125f3e09681bd2c44666d61643eaaa322ba35c1e5caa0fc660967ed4411b0a02c3716e7ed9eb6183b6b06f56b32154ad1c8b96f0f2fce3cee41871de1da0ea6c7d292615963fc206f2166f126ba567d6919bdb27a0cd2051d49c70b1848c9186dd1f90a9e09584c8a8b229a02207788b1996111590dcd73088cc57eb007169683bce64f0e3b4339873ae221a7235f7c4be105d38582ae768b59f086e0bc6aa896604be4b4d2c0f33d48f4c2fa0dc7fde52c136cca318e1299afabe93bd35647a2100e62774cbc5c1716a9372eec15430f0e6330ec34685fd93aee333724eb31442a702bfdf7f517944c2f3d9fc142987742e09b482247e2421ec6a454da59a4900e68349feed7286c88e17810b0689705875ff19071a9350a0781e98ca0d1ac8e2695478b320f50be76dd9c444098a903a4cbc802a47e793b588fb0a46831768ee7cbe76f59a71f0da4c5114560d057afc7c634da30580c4296dfc34e79c49782122349db0eaf4d14822f4c3666acbbf3688c576459e878de613bd0e21490fe9916b3f4c0f45d92d92a952206da0ebe3bef3a92bdef9cb7d1390773bf3968443c5abf74499938dc0bab1224db8c35fdc0d1d3c7789e2e64d596586568d35c7e285b5d964eb7605675693f136c2e85b16d9bc7f44380c901c23a4bdc7df5b84ff2f5bd62537065fa30ee4e49d5b8056f1d4e8a2aaf9927c02011fc857d458a8b4c11755c2daed71a4eb1306cb02df534a6860473059d5b3fc656cfab3a32c5b5b6cf7102a150986a41605bfea6aba5ab6c7bbb7788ec9389baba2cc5bab2894921a604118631e78eedf1faf16883fd9c211ccd270e2113d250ce7105240a1471b0b450d244b9863666e45582536761cee8933e6aa98eebf221fca2c77167a41abaa2241a1abbeaa8db3c96d54b3e3b518b0cbe3f02fb823e41b4e4f3e24d37ea5d4bd88496b0e5ac9f123e0882e3352a822e92b975d8fc18c69edbc6844a84d6a30bf4513cc3552cc424a01be2fbc7e801d0e89b3e999dbe69808ac6167aff9a18c3c650f381357ec126e555f862569c092d23b9fcfaed3ae4b3647613a96b5793b263a986db1ef89d2194b03168c9d7ea8e063a78b89f169be6f22c2e004c6d556e42d31f651964ba84261fd916a316dccd11fcc7e81702b5e638b112222827ed39afa5c0b02b5de8ac5df140e8dfd34272d8968ac667af076ea10d8a8e5ef4f1c722a4812282ef9558054e5c97cd9c8f093110bd7ace563848ace38d51f241d0ccb802bee1ff1d998ce0aac462e9ba0f048c43d482a28a0a197d5cfe7db5883825a7305a797efaeca5e5513e3d3b84699e4dfa73109b50c92aa42a1921ebdb2c19f4183ea671c6d26e92a51ad5eb65d18acd79c9b29379e2880535c8365ebbc18c872ba0a6ef0a7a24db258036b54350d3be3446405a3d1dc3abf138d3da48f7db4694d0a42df4a2e2914f55ca1e6e6429803c540114ddeb9e9141278c96164e831eca68f27a2b48def7ec04fac35732b7ff04c4ad17fcd9effb103cad2b2581236512763ac7874549aee81ac990c398d73346187e7e6370cc9e5acb4247415530610facdb01e75890fb75550ce0d06607dc48670c0c5fc12f50728010f32388e0716bf0f3865de94b2c482fdfcb1efa3962cea0f66d73b6f2c31361c6bfa157f4ed0aa7a88efd59709b8087ac61df6f05882f110cc70bc05aebce7e6579a7e899adba1931eaba97534b3c569786dcb0769bb5c25d4ec3069fea6ef074dfc4164e3832f6321bdd76c6896607b8369bc6eb97331e8cc2de6e29cf912c45c67e4384efbb3bbe4303c626941d27c49c3f3af9c68add33275bf90b5b12394911711b5981c04566594189a62946c3945c0b87444909fab2990153d5c716c478d7124aced477b148f2bdeb0c84a49d79091af89a2edd1308113d50b21e43205eb842336b9dfd8726f2afcff2ca8a38d05d5108cf954067586ff78317a37f66291f0d5add91be5fb42af691e7f21e4c87d2a8bdd2f32f14c7b2339817e54400645e50110174b4ef20c7ee224f11bd1e8db9ff0d06ecb33b04c5d3a6cb11d49b627f08b856103aab28e69a905cb2181f47e865039c222a6340826de18ee54b618b79a0febc4c7072446e3762e76dee6a69c6ab0db58e083ee4aaea0dfa1f92f74084dc051bb65b9f97ba5cf4a44235e15a5d38031b25a454af6ad166118a92bc57a6ab43669d9551a73dcb0e586a1a4295e24becec948b656565314babc4ec6fc98f4e7e72f27146522a0c182b9bb02e568613bdc1f9b9fbcce441f6a0a7c9f6d4d51a8c05bf2a8fd91255107cafcf90bd58141de688dd34c660f36fc9f00f783ffec02c8e568148f34f10e4f54557262024a103dd849dbad2e03511d9f48e60a62d35510c0962ba8b7a0293577264c665bd8925bb1fb28597cbc5ac5430c579ea491bf5969037af57233d20b8177a86396e33a58fadc45f4c94e6ce2dfe8b5bfdc483a78ef5e6563f1bc4327c66eeb66999dcd6fd25e5611ead71b032f17fc1aed7525ed6f1caa190d49d8d69127eb8e4017c9aae0effc16a62d760682a08271c0ad973eb8cc8d770cf9599398ba41ed4edd3afbad31f6e708553e827b57e0cc29420b56eb44c688b100a752eb3fc6c4c0dfd6a0f8ac54b9dc23bebff76078d1a5bfb240bd0dc51dc308d794557dfeae7a7331f3ad350c3a07bcbe7c36c3622416379035ced22c7f6aeb01f58ded11162df1ea5f4b3ed34d5ce332fe448de6dad8742f6cf377214fc3669978b0d758507c9cfd552e92d8258b5a03c7b9d6f76c746926cb383bc45baa6af710ad037c25670c27c6fc567f0603cbe9960b19c50ac3b244c9b897bf793a59a8bb47e667de69620ac26565b6364c338ea74979f3622bb1702418226a3f3239cb3442d37741fa456571fd2ddedaf5236a44a90c4661c33930c3c3ef08e338529da1b39456452846361f7f86a42a3c54c597040fbd1ca886d1ab6818265b83b7f5fcd47bd244adba2087edf4362bc76e586a97fe398f7fef482ca02ce8a5bd36602073d12d76dc401f2d4ec66e670efbe84817e42ce40f2411f1b5817084412c2e3d22e02ca937cfb7a8e53a1b015d12f394cdb4c5e3b8cf687861e64bd31f0c97f82d000f5befde08f4714c24fad128d0bb47da07f18e2370b3f0f92b7ad9c94aa7e337ad5903d8316414370de818a6d82f1311495c63b57d90ec0a8f335228340e80b714267efef4e361e5d1d044888feeacf0e8da91e548af3f368a354f30ba8ce148cd24d6eaf1025dc6644f8e88201822a7235d168257f5a0f93e97c6d2869c43c49ce643e06f88f380dd7a6db976564fb15918938990f43d004f869878aec6171891a383df85add9375a5f456426869a0e2a8f7e0eb5b687fa2dbcc8a57fb27c19983ee13c89e84f35fe4d20ac57031ec2adaf23d3f46ccb112c0b1c9a0ecff682cff85775ba6d51e9c17c3019710b803a56bcd9668dc2355a0c4346b22833c371634f8af1024fa615f889cf19575c71ef37cd9d07ff4e141f85edd6a6b5c8f9de789cf13fa47f67cf6302729f4bd2f1df5c5fbe1d2c5017719342de3070cd6621a918590aa6d01f7315eb10839779260b998a99bdad8352616ffe71a485b3ef278271f4360c6bd0fed642dd0b021b8c955f967de1a9ff95e9824541cc987e0d1cb4c1ad59f7941ac20974cbc80dde7a45d1a364662039781ccabf3af81728011b14868aaf45618b041d1c44eb796d7f2748d53556f18e137c73dffb6795b37b5f25007461c30a582898358878ff4a65bbd04b8a3d4d5b1a1f97726db0a6e219e5dbcd75189632a321b1c9e97d12adc881c9a3e61f1595f01e8ab59342914ee88cf79c544d286749a4c3ea5055ac14da5746cfd2a1da619ebc1e9e07e598262778c259964e2ab25386389fffb3cc0ff06da8b828033291854c3774304b502b676406c5bc0d19560cf6c3efb45e32e0a1b472b9063485a27af0eb40ee67ea3791c05ccec01127bfd8330faafc41d007039fdd511217aafd722a8cea9e89f90d1cf6163752e23f58d4f1da46d4fe694b23d8aa212ddcc1b6fb4614f574799b954fe1748b4f94ffe05108b8e00f141833ff81201127b80a411c4af9830bf7fbe819f9bf7270f34f43a572433cd5c87d91168befd90e0db2e627f47b47bdc5db7f83c58ee034bf0c5dc9af06be0ce85397f9f7e96bf91db6e5bd56489468d95ef84e2be1cba57d48fbe691ac7fdeced61f813061f8747cd406c775d4049e2f9b792370b3732b30f0d7ed1fc2f8a04cb3abdb50fb707989562292a1626868569fd5f950a87c9711bad068bb34c971ef465699ecf194ec2fbe763541e2b5f9668f9de1c7e012dc4866a3677572b40d27e68b80fa43f327a56c749a1d17ee15ff7a06fcdda8e174e317bec865a5fa9f9300081bb03c1dbf7f7803cf3f3a28ed69d5c655c76b4f27478ec76049af19924a1c18721dde2dd1b8f2c7824cd725236e540cf359da143f66399d157a5f1a7335162565cd7a98147ee7e051ec4590e929d44e9ccdc9507dbec33237f3a5b5ca37f4b3f7d97531636211d3bf33de5ec61fc417ec6e3ee4360ea823a128196467d49adb5751afa12c262e683d26773079b94d0a3fb583132aea7d48ac7cfa116d1f026279b98198c7840f8605fcc0fe04e63d09f144f1744186fd76f4492da9aac9e7ee1ed8cf1d2202fcf40054336c5e666ea756836dbeacbb1de5e8c5721ad63372e897fa8355927b815ced2ac8c6d113bffdc0e2d6743528675c8707cbc2de80103ba0e28f91ee09e2fc0d4fb925615647341b6c645293fb42fbbdf5acd48e882c0c22fe16dc9209600543cf01d9faf8e0bb686a481df6d3d7ae6f384450cf3397a89280e020017c4d501ba003e6a243ff34c982cb623b0ea682e6354fbf71e48a12788bedbf85393d07588800462076744763aa915ba119a50537bf44ebde65172f1aee0248a412c115934ed2814bbcd4914151d78b56e43e3b44ae116e70cdf0c1a2b9b610ca3bf63104ef41ceba52d94818a84a3f6aad439bfeb2c0121f49bbb5398bb1c98f78a86135f2fc4ee5dc307455777c455640c031eab0c1f63b3b0b0cccf57b12f905670ef1f74052dc68c4170bf8464ab8fe51a77a65d99ef6ac27c3cadecee3470ad293d90c4779c8d21266e5153873794a5139f9ff7704cd08eef6dbf204c21320ffb2ecf9123fe47a710f7523c93516b23c951f6c720c34a890ba776e8bbb0f2218985720810db439519cadf6bec0fd41a0a5a22bed9d811e36e33a96c1a6a9b2630e9dad9b59a043c31c21cf6d37f9f94834fafa9bedba4b07cc215618360c5717aa9d1994b753d89ac30adf3d0c9196bb1e5040d0deb0fab391335b9e29fd472ec87b4c3f64c9d328a61275f6e5cb2ea10b231825d7a15eb53b97c172b410a59261874a32c89e85797e0e04528543455bdadb323927fc3768ed9dbb063a11e701b901cb4a7cb74dfdd4a6fb58f07d47dd4fe671c120cfc1f7430b0e72d06c1beb51e01c1fe263f3d33af9aac1aa796e2ddd05381a0bbef47af058ef5c4dee94d4b16143c201b346e709535930d4d21718dd8599aac0c0e39004f63841eb2e358f1ecca330317700da626c6cfcdfaf7a106c7698f32c39d564ff04c8ab5ab2be2b2eb0fd2fa105421821d2edbc9b4125feaf8df52260d1a089bff3a73993a576b893ada0e0d04aff0fcd018f336c8565e949dfac9dca28b89c71510c13e09d273f3b4b7bd41393fe25f19e08d67a84bcd9c42e333dfa54e22a96451e94c43ac27620346f1128db8444c5192e1a395a3780a8d0869373e096805fa4784913ed48498b800640e362eb8bbde1f004c366619420a556793b2e36d8002759940ce78a411d141c8c0489e5240748c9d3282de4f8f5c1a7658128aa6bd3a688062b1845d18d43099b5220bf819827fdf0a6bc8a830fad3945bc86e16a8ce8ee38cc32b24e5fe1caa8e50d9cbdd9156d6811a4c69a2110a1caaaec0b16fbb0095187d6e8edec7b372aab7646e60ca8c47b0aee655f68c6ef08ead2b9ceb4fc28fa1f09d463c4231c45293c2aee74d3fa3b1d88367e9e1567c1d168e19df90707be33d85e669ee6dd8cb7462988eebcbff8771e8f83ef144f6776dba272a1171ee7f34a84d84d6847537ab85907db1818855c6e56bba9c7f2c722446487e77cb7b17d3b8ffdcc4f1b8da3ac64d367cba9bc038bed06c04a7b65eecd3471598a712ff8a7048bb341a0d3e764b7ff1aeb473e892365e11faf8b25646ff84fa6d3464748f229c2d110de9a2d03b773c34867e08234ebf61a97f6200eb1fcf7510b7aab141ea51f330b054628f002ee596edc8445435cfd694c7726a2164954bba16b53a26571625d6d78aec1b268e86e1e270a8c89b74731d0d03576fa03378caf67a3441e6dc63b1741c8d38cb1a8369de85f0156057a507cd542e36b420e9966161684c9ad25ed557d6b92c39c572f4501b767809f52755ea0fd449d122a10258c8d9eec2aa3d9bd8befc0569ebc237bd68f043fd8bb7b82547c7467940fd8941a465b4dabcb3121a82e263e30c4da47d293b1b9a0d94e2c9b300d162d4f51d7d0a8260f1b5941d862f81dd07fec6d604b7f158d6301112b3e621437ba0fd6febd085067de2fe04c61cba5835eb6aa1b0c2701018c9652266aa3a7f5d7950ec1b7be3c0e57bc63e18c9fe0f6693f6dd01f40f58d18d594401df6e608cb621be32abac18a57e087b97271ca2996195e4e2b6357a63f27c04b39bba2bff4f1de72bfd4594a2543904e2eb94e0361d0892b001ee992f7aa52a4bef70f84e4435c88f52574392fed0f13e057a901adae363b5b8a4f6ba012cd3d4080dd4a08fa12fd14bb2c5bd448c1d6da56fa4395769a9a396d0710f122c8747cda63ef68883d8cac72474549aebc7f2db45dcfc835ecfa01be02d5055e2305e6a8d5275ae89c163bc3bc42f9edf1b0be2d6f6703e7fdb8350987dd9e4b63e934a0b7a5423cc97ac3a8efda49b19c399d69ec891234ffb13c7d033e810ed0ce3f97fe962ab4dc969b511ee1ed416576fca1b5cf70ad09ff934bec7a23103002947e8cccf2df9a97ef1feac6d2a55d47ce9b51133f87a0835a92cf8a541d21e102059cd251d07ee8163041cb85a8c3be59c080f5e040265de02924f9b84be9cdaf0d70e1fc3030bb6578fed0772e0f4bed1577ba64cb3ea0daa18bce91f0346d119c09909c31920050d465643e8eab3defe9aa61cd87f3076afc55862f81af3eac1a738be30a59b94d9c33feb6b190f9a6611d6addb9f138bacd93a475d65e1130e2751a2bf0247d48f46da82ffd6e9a14790e9039129737d46b86250a7be254bf6a78203ea1017e3ece8c1e96f7989d074b7c417c46eb4ccbc70d4fd26ed6318a593b4ec9e84bb59669bf64222ceea6235a1375ae5c2d51b82438da6fcd8f17105ec101e8dc859fc53bc31d418001b1d9adc059f88b9c980476c4e7a8ebe0c4a5c83f505c311c3a0e8a0e7d32f541aa50ac51f6af5ea708473334cf6598ca33eb2b6893994b24c1c1b888cefa660aeaf54dd193caca1a58ab3419cb77c9ffc9008bc14ee1ec108f104a526abc269ee69dc692e9fa3bba5b6424ce8792b83c1f63939edbf4f19f8824a518045c5a55f278cd6efaaf0e8b7b7d67036effb40a6b054035341dd1a0d4ce90d6927629182f0e622f06a1ef09fafbeefb2f2409bb40322c13db2f02ab53b5511b053dc504115c9648797e81121228366eb821df972daacea357f3c4c246f2be1ee7f2679ba34277af103fc075c63d29b42efe6a3bacef6a34fd00d1ee679f9cbbaf8cb88483101d35859b139d10e68ad0c471849b45fd262a8a0fde1d0c94338e082ffed06ec61833dc4ac9d1f11635c3a5cbde4f3d5ab8138832479bc0f2d89f855643d63e7d2347bb290129e77fdc2be23daa29a14d9eccf047fd2ecefbe4e0c55e13904f32910e0f15e204cbd4fe6d25c901863355d5981823e2269a5e92b4a3cb68361cdc63cdbf3c01d941a0bf1dd2f1cd36ac3878ed12643b93098a98d84ad8df97dc005c25029739dba76ce1d259bafd64d77842a040a3e0405c3d051fa70a7d561304a35b020107144fcec89a87e6cd9b9abd8553c7f8be5af8baf076119858a53f717770b7e8257b824563be6d99f60f0f8fe991a7f32f93c5c3932bc2aba273ba7657ba68f307f67fabb9e1e52c91ec089619786e2be610038746e5e7c59d5a50a7c65d2cb8b3e6c29eb53d6a07f36c65911a041511898153be717279876ab3c565006d70361b10054b36d30e5d88f30707b0ced8a583a90edf1e26d6c49eb173042bf02a8424c8169754830fcb75f9129843d576a98d2ed6ee979c0ceab6bbb49a0bd24dce3e34c528da5e6239a386dc6a8daaaf6d56cb59cba5c54a946fcf54df8bb9f7ad732db12b50f29afa5e49a41b7776e5f0c9029e3a8c198220c6d041adae5a46bb467a32e6f9c3341efc952dab6d1bd26cc0c7e88d8e73bf0c3a332c94f087474cc390a1ef8d6c332fab6f79cf516e67b17778decad962077e2dd747ba8d70257f5216b7e9da880f27f2b731b12ae1c2b4c21532d3dc69db6f75a0637b3178b5383bd0d8334c4ef110944d211880136aad0da4bf5fc47772dfc90846f5b3a36619785ce618633fb7d6800d6dee1cc793ebbcf5faa5f15c74c265b0f1b5fdfeab08c82eed4109f291ecbbe18c0d81348a4c995869e125edbab9a2ece9ab900df42a9af53188f3507b09dde051163f3726e37763d7a4fd6270da932d18775fa2cbbe4f8213cb5e6d6a1ec2233ee2034c3acd90dd6d142390957c980d52b7c7d4ddaa960a50b99b23007bba94d4b17b7763625bab8006c757eeab10050d870b2922634b633ccdb30ea7f7c5bdd04977316e34d11788628eab2b5c7853d8750452264e550c78609ce66887a60f1c77d56aa5564ab9c094543dd5e0daf90e261d121ed2e4591bc67face3e99aa7c7a62303d6be72152a6af83cf5c5d89fbd7bd1abcdbd8a13f9d372fd4f5b1c3c49c2673cef80ec74668022554ec1665a05e94f4d2d85c70cbd1b2eca1998139c96a6b587717db1719c6cdcfb88b69a98e3dbd4a3e87492e5b2187864e520bf091b987d86664f033fe93ad21acc549b2442c9d4744f2bc20937c4746748acb243513e6746aa9c02e294237d253ff4b7d047142ef00a028c78ea008246f5b35c98cf20b7da6466bd9d9ee203546b6eeee36eeba9e1fbd64bf55bc9cca0ef041a010753e7ad4cd95d9aa1a08fa863f695462f6f4929c1fd4228a7a5eac1d146c4e6bec629511ea065dc514c5f1051694226fdfca06bacb210f3f38c4b0a04d3a1c1ecaff45600b4977b9d087c537f67838289e8e34ef6362708a402e7b63267e0e7b02e6775f7ddf0e82dfa5891118f77384215a6f0c978f14201c710aa06eecaaadd33903f8170c399ea7906b7a6e0e17da30a6eb5ad1e8eb3c730cd43f4f033219c47108cf11b1059cdd6c37459896c98c89f85f958228909248740a223d423717e189a4d9503a65a1aa5214e917b0eb1aace9bcb3eba15fa74ff15045132527ddc57757f354f9f990d0beb1e311ee3ce5fc4889c59a67c5d13bf41a8e1747e1464584a426d8fd80dc29ea039a5aef64543a13460020d84461c1ad1e8a463182f7be9bc8d4ec06314921b1dddc2f8f3772eb065bd33189b7312672f0730cddcfed3bf98f06b5dcff397c30bb35f31ce08a916440a89e295ac743fb74238dbd7cce7f06ca56bf136e333055cf5a13d89f16e40ce20d2156b9775ca26f8f95b33a7780c27170cf131134a88530e07d6b049358facaaec43dbef1e91e48925c38fad8a90a75dbee221acb4cb98615bc32198b3d884b3173a219653e7153fbfef7966dff2717b5795f9a5cf09f1841e8a79a91d173090662e6fed8e28a1b8fd12d48587f3cefdbdd402d58c74764ca5dc87302d9449750d58d682990f2d8f4f5f2a4f7711f342b759fae74a45c178ee3f5faa054eedee62a9ef313d16101d108cc1b93d9f5f85daf6c1fef37ce73ffe60bac7f7e38b15354c913a23739e5c925408f949927fe9dee31e88772f2ffec00b3d01f88889271a23d7a55e3b6d30297a453249352f918d9b09570f195a09d2582e2efe7ecf3673566dc000f9c39b4b9e131ade43a508d9b9ec60dddd9e7502b790eebc382fcf55b09534df089a9d9b5f4084ce4868dad4130a42d970486fe6550ebdda30fbd0fbd88b2bc24a0884b0185836714adca820693371071181f67d8f11c4bcfb23c2e04ece1dd520e8a918d0343b5ada595e3f3ab71cbc28c4a083f68899eeeb0427f6c6fa519c3bb0004023e3067056ab381d11cbb16edddbfe084b7c89de6c76076ba97232661b9967e92d75e9ce1d087a91199f4d5be3e601b7cfb30267c873276dcc948ae7f20a9000e9d4f2723615fd1e8a3bb3baa060cc2430b2103a8c5a357542fec4829332ec9ba23600f41efae6dbfa879430b289721c194e8585d7a7d534a8ac915c69330f1a6cedbe821372f5641df83423f5c5962b7b6c5761351d70231a00408dd0396f99c015af406bcd9ab46f67af9341338ef003732ba80c8adcb528f69f0e9618d3fec7e7054d62b4b4331cfe83a692330fa9bc72c3a64001d594f20d5a3c938f524d5dd0b52db1a66d6601e83b5271a71b0476108060d3fe3638e13c195df08382a2c3b6c3f90e2adb2320ab8fab745c6fcc857460c0f551b125c17193792b563e937753a42d1f6486c3b59b1c730c2102d64281983049f50889588da59c48aa8b030b2c8de0ad268b4f14777547786305bd545aae7f8b2bff4e1ba344ceebde508c5a5965f803870da8787415785938634e368a4f5a7a5a51c4a0ff81bcfec98c09c4502439892d567a90fb399d138b6f171c153ed1e97b3116bb06c4a598a3f39060a8e719e2c8624d8429f09bef2794d49d7a1b5216b79afa2b26b477349fad052b9e47f4444b9d950344433096a7f2a8f24564c39927838015599de17c4f8b6bb4dd97cf0674b0af6c1b63333f52b60f7ec94fe8ffa26da36e2a0f0b90df7246b48198d45efa582a269cbe2adf29638f52fa35d58e9dab9d161e340b38b386a97e8c2006c0f3008b54dc64a03a080b30dc1838a0a515d1b663c1242c990391e94bd7a41fbbda71b8c9893cf806e7235c08b728aa6b11a57a1b82d7c5793fb4c3ed276496960bbd63a5f775cdeef73a840dcbc4d53bac17385f788991302cfb3cd92a8f0b4139ab50705a23e6358a7052b81e9521c0ae16781420a38821290f2e9996c0810a579a5c04a3fdfb5f1bed512cac9ce2b7ba589d249753895b5e3a4ac248d26879fd852fe8faba349e762ad203b4d952bf1a05cab8431abc03bc808a9797966d6bd8d31f094574e512f49f3bc8de1c367d277aea3c5d65942a3201a724c41a660a2f50abdcf6067fb2276e61bb99280708c7e7d54d6d38dff9af4124a66e1c159a8bb49453bebdb25fd2c07d06e593b8a0e18546945e662b08cc8385c718bb679be37c5f95b421f6e01e0513f505bbe5e3a55087b4dcf1f7fbc9237e13d78f5c5ca192ab311e088480952e26033c6609f390e14c1fb2fba3d0064699e76ab8499045275f1096d8da1a9fc2e4a85305a24b5f4c8e9f943ec048604fd372d121370fc812a9dab7741ef5d0678e559e970c980484eae5ac9330e16ef36815d7a7ad05f3baad878ce094da56e11a1e67280e162dead8f667c00f6baa38fd145484e77af5395931b08c03de34440d9659d9b953145d552ac465e4fd7847a362805cebede16ec2aa92521284a6cd182ad86d210fddd76c7ad5c25611a899070b9dd3a3213a9def67f5e8c8cd1e9f4d994d5a53c1fe4130f3c17a0bc027ae3d77553b2a1ac4f4d5e6df7ca87aac455cb08977e6cdecb6adea23d7138b55db229d10cedf5a1b9820b3550b5b302e05e6ce7e2b935beb10a4f515ed05764a5a2a1e1c7ec1366745d8a320ad34482e40138735d183440044608e624757554a6293e57c5e5e90c422a6f6b9b2747707f546b529ab4413adb1cfe55fe645f932cdff50b092d7b01a1050acd04a2ba30b0bf1bea520b2616fb7d6a31da60c843cf8cd65d65ae21b204170d6895619960190a2c1cbca60dc12e54c276fbc01252e85f05f87c5a810cf32334a88f9718171eb319cc72d6f54480bd18ece6064ce1067f0ad4f9feb40a616c4b99f579606fd058a4304b302520439374940a3c2508e17884ea25c193646a7dccf498972bebab2a830107725e365a6aeda604a10444e821fe755448074c7b9d96cadc567b5d526cd276d31259fa62c8ec0bf66d827442f9564de6499fcbf3d0be1f15cd76a711dd2516971b904c08149991504ec54ba923d02a5eddb6fd446d53463e40eb68fbfd2e3e437682bc990efc22e28819289f5b1f529bcc429b123f4a92e273e5d611572892b96b3411bd3b02a1f8c778d0be1669e35ca041ec2adc5591dbb863fc5bbbd55a3d0f290438d3d672f5007d744785eab1f75cfebf14e359e68c74594bf29737896e7ab1365264823ebe3e2d5c5f7e744a19aeb75fc4334a8b0dd485f705df18989284954a5ff3cab1e2b2772d21352193de5a5e415fbf2d6014e89fcaf8a98541416fee282ae371bb9ac7fde97c3f5a56f186044e5733c32317c288b655d00b9a10b80c654ed85e351e47050aefca45c766f43f1668cc2f545c3f9f20ed0e709f0c3cb5aa1e2a91226d4e849232de570bde923e9a0c86660d5a2d88188d06aca96d215032fb94f7d53435da80bd76c4eeb866944bb9f4a28b143ec7c32a3fc874122bdc6bb077c1290a3c39b4e55fd2caf4fe361f7afe521bfd6d24f0ddd3a9e50956457cc3105b3f38036a4d21e94ff3abe4efdd88c5378b9b280190b7d45bd879fc4c1c20569e6b89c1f1e6524a8b6c0e83bfd274ec827aacd5b81fc30e408f472421b49ea520051ba6e9e152060a3300bfec50537fcd16e5c8861cebdda43b5b41ef34c608fd186b51afdaa457f030c6f25199d9d61521120d377ad71e92814062ff090e761418a42c44d3721d5ab30b39efe65f1963ecad643dfa00cd0380a02d7b416500e89176094d56abbaebb4b8061de36f18dfd2fc7abb446aab4cca9f761798b110377443f166da7a0aab5a08350297c8c69111522c385396a853097f409a86006d8712bee42f0b30c624b04adbd544f02c83ad47a76f772cd131c5f662c21539bdcdef7414a4d7b865bc46d9e770bbe81bc75a7e634e38174a25415c45eda2e631c4ce817b88ac9e0164f328b2efaaac7096c5244ea87b481b82796171d1a5760a3f0cb1b77578ee9877ae701adbb4563c7b9400d83cd464aa677dc66e58ecc137b550389a13d413754969c5116b457d7185df1c2f8426595d7f7e32908f4d257b9d780a0b2ebdd0e59525081234c151089480a51dfb041932aa1afe2b91285e54fa5e502595ab956e4e899ea3caacafee8448b4c006137f32509ff6f488458a504f1a351e09b95b56bee7853d88a1bd1e8d120e13c78f4589fb2a9232531c37d69dcdc7bd0d3de9f11c99b3018c6a5e87edb84680ce3c03c372a22b2f0c67c452c7020fe974bf2533f440d1595226e0e7008abd3453b86bc352f3daaa1746efdf23065b7bd792470b2e930c069c42bbab8f8db4b0f03063efb78aae702f918dcbad9107a8e87415444be74844bf73e409c3e9e0bd8c7ed04a8fe3dd63f6de4a91fd2cfdaa263f8686498ddac8c88120a081ef9c68999c88524e23fd664a9931143b522999aa7fe6551accf81fd1c60e5bf75992f7b785ad02fb517873787f90b610fbe5971bb51850d3c7d7f882fd81d2a6a932071bae70dd7bc8e6ba440e46fa686b90a2494a6b7017da0248bdd9cd86090667e6c259718a3762900e1ff8f812bdbe41fe0d9145492c1b8890f6c2f3d21bf376fd9bfb0308694822e4ff672d658c26a7fd43a76aa651b3f7bf96eb09e684070c9ea8b652bda4eeecd37300d4dd29d985873d97913894303b5d007137917a4b993dfa369fab5d3ebed7e272e1a78dff6b6f8c8c8391b5bd65548d95785938b621e36ca5738d863343a12ce29e130f6051ceeaa95ce0fdd161302d27689342a3ec5c02c339b27656c400d820d8d8acf8637d272a7a83ceb6bfe46322cfe5ad43a453da62b2539a942db4d2788f5de58c25f32540546fe83beb78836f2efc0c66adf3b35a739ffa1a2c61d7d0202dff9e96cdd571b16a51921f5634ca2ab37f1f99bb9dd341468882054ad63c2ca4176feb392f48713ac7aa4616f5901a465905c9ced91ff8affd5011ed3b75228b1470897825e37205d3a0c4dfee1e762254faf52e87d765f4c0cd428fd18433ba40891c019e2583a37cd2eba0e1230b2a47206fcae9205f6171f87ba1830d6f6f1ce7c20ce13bf6f62320047029919da64db926904ae3b3cf9a40e1de1a7fed80ab08b4c10b64253a84c47afe88b95eac2b0b64d03137525a3b61a775b18f7080ac9f52490dca94911caee48fd2f81fcec160bbbe705d0e6238dab4d7c6986b7fce11b39c95376ef77e741a2f3163772d21456723a5eb43a00ffa5669649ce40b788e3d32eb90ecb5addb84dc40c5ff589b7d0d390465f0821ea7ef9de5d67ea271b5ff1f0c64ea4c2fb1bf68d99b01c955925c511a76f3f9bef716584c5f905de8baabd836524c922fc1405947ef4c9dbb1e7e7ae4c69362161e0d0f68737f3d50227f3a021892879c929c9c4302517bbfc3b0fff0a6b4d3e94a218ca28c64b45fadc52618a4afeafb0a8c89c5a8f7bba5368578733180b5c54d63a4397b2155a1f1c781389d7db3a3d2ff7106f5ee2dd50e7df4924b9d1a0c475b1783f2fdea8b284803e2cd4a5eafd67aae0b64dff08ede5e08bb4cf504cc7c177842ecb6b083922bd0f548755484a61d215d3efcd6f153887b05d12e6d056783fe6a9b14de3054522dfe5b30b0e80268df759f03bfa4728d7e6de2512dbabeb1564735996d3ff4b447a86578a4d3de3c0fd7fcb0a82d3c36332e99687d5dd4dc47eaca140591408fcd9ff1448637ad2d2d5099927ad14179df70b2b1876e35957aa302c71bb9f77039bda89eca0bbf14a87197cc352fb386b14b05dfc4d1458465e0f506dec2c73f040c77da3643316b90139355b14c46cd0ac8bf1a5e52129055aadc3011ce59ef7a5d6cf8dc3b33d381888db5841ef228d87537e17312765c053a95d1e3644453b7f7921cb66815da8d5aba3dfbd85cbc2d8629e5d398a8d47fbc1bee455a0f1b937661db871c043748be731e4185d963971d9b342ecf192ee36b67a0ae6f48e8a7a343d128e575ade733f347cfe871b655f8ea1da287e470c50c3ddd283aa9b064fac346802343aded4a69f09372f3ac3e76b4c0221f30fb97f23e9951b864c0e03a50d5ea1acd02038a8e20f970595ad51a586137697b3c13c970c8af41477b8ce9772ca09fe60659650b570c3c13fe161038e2223f767b20a7a8d1e6609e2f28c1f6c38cf9c40d72adab47b1f8f9e13d6e231421bb13766f0b436e8fca995142f619d2751764c4983c6f1267d01e2d5d9578f79b344a12043d052db7d380e9ab8ed013428d000afb50883c643352202dceca7aa49aa5648cd3f6fc09f1579414ab1996ea59c07741bfe3851c5bbfaeceb30ac9d4a21e221d698b5507166c0c46890f74cdb83f85af84f21145d9658b5962258730a4644c61ecd5b68313342fff6e2221c07ec2bf312d92c5719b5710b44b07d5aefc8b1552a2f826444e67dfbf94e136f46e2794f4eee815e121270168f17138c02c62f86802ecaee21802ea01cadfc77099995304efcb1882ec17a9461ef5262cd12057999f186184561e9173de199a1e45fd86cbb8a3235d5101a9e8b6b80f1404fb35057af30e183987f4f274e40c58993c992567dc2c10424d59d7d3c01822a669e4d9ab80a130f9224abf6f40302b441cf70315d3905720c7126b3b6411f4010814d70471347c02288916491b60ec2400224ed823d9c008216608e258db805100748226b1bf4010411d804773471042c8218491669eb200c2440d22ed8c309206801e658d2885b00718024b2b6411f4010814d70471347c02288916491b60edd2d97c15ba6ce0dc66d876a43980d01364cae21b1866a359cd4f0d675515bee020d55a0ac76d599a3d0908428b37d9b720924c4d0e6b65143de011513a2bc96d6aa2b80b0c22ed3455d3909324cf192b4526b8e42c315a2c4b66dca2388f00335d54a0d79075b4c80b25a5aa79ee04212b4541775e52bc810454bd2469d4dec95848a5082aaf42ce668dbfcc6b0681134207ae8e5549ec51a390af39a662e13e6222886084e6ddb92a4f125d86265333c3c2019b31e143a7148d0d165a96894d4ce411039f52c8dd87c7a3ea43a2bf1183b6596a986c95496a18ac3f9025a84811539ec71049031122542d2b80d981de2835abf102ec82e598a71bc74bb2599779cdb4b7d55840113eb4de07da6efc51686e32ae14b10018d1aa67781d0c26a03508ea5c13695db74ffb5c512e7390efdf90cc005f7a6902116cda9bd3e05758d38a32cf132e6115418bbc915c1bef774c04086d56ce4a219a35f403c2edd04c9869075c4be25e671425063417b216315be8a744fc6504cf23d4ef1751c7ff2e950aa29bde05b968b8fa882189b2e689a7e6a435601f1b7198d7464907e104879727da894dd4e14aa0b595b1df14e2e4a8e94c98bb8442e68f4916140e4dd770e668314c807a96e2e197f339e36e2528023ec3d748243b0d1259119352a7a7a7b08be6a80703635a8a378f960c1e18b6c1aa91adea599bbf6ef840d5feefaf0e7044dc990812f8bbfbbe68ca78248686cc896422f151a9b0003932eb366b61c1f22f6ccad91fb3982baeb9dceb863fac819575b8c0b8abf61a9492f29055c9d734e1a333da3e8fd08ee8e1afe7fed02bdde84b727adba3a3286c23b9ac148909af854b11d1ca23de8bb84107e231a50f32016388bba210a9b1223ac6a7afbf10f934f9d7ed78ab8fbcbf93ac8f50bd4fbc5291e375469f87476fd66625c310c1616905d144c5b2057a0e4a6743c9516aa72f52f0c4b90fd52fff40211223a7baeff97895de8fe390951b172257e382d278fdc7fa38bffd8826ae098e4565c31e0cf0e23528f463515d277f6351cfafcc4a83700222d46d836f449048cf12592522f322e011a25f40902843b3e8dc34c7d670886f7ed875f777f0688759707f3295346870827e24e63783aa911619cb7a74d91bd281e1ff073d6a0793773240c14a67730e112e64e6c7577477a47ea118806e1e9c4ed3feb8d8f3d46c57b0904cde02a1cba3623134629ed4e53819ed2901a4478c5af2ec82de240e37c146392b45d0e408ba94e02fa22e82df79c2792d01da2dec51ff6e951fa4512de3feda75120895805e0c2d707c56cc18cdb32839a61e956c74cc991767d753f5128e48f82a36d9491b3f974e17a64e0ff41a025480528b1ed8504378a5c88b3fa76c1e7f8cf006955967478991b0a40219c2f6586ae57522ec23855af14d0d21aa4c282434f8f3eead0a95644e1ca7bb40fcc778b89dee4d0b026679ac11a12be7f251f9640140e5056c346de96527ad0600d2bf2566330f1fe0268fe3bcb07f696d76b0e12881e1389c0c34aeddf22832b020104230b44e7042cdc6706147961174c4b06539e03a560e29343fdb00f9ad8e3a1ff60fc1f448e791fed17bc6412fcc51d807c1f9d8bbaea4124c4439b38f43ea387c98ddecbe0de4a4d5a407a21e36001ff6103c38185916ff9bbf0f9f76bc8ff860602f0af37988b93341872bd135abab579609e060410b0ffbf69bea85c8d8aac2430fcbd924970a0f8ef3723b06e98b30ff3003e373d95f74dafe231233f48762f6e8ea6ddac8b237d978a1af61fd08067b9c069adc0a13516c41fc04de205a51dfa9d45878681d746c15a8325b3b9610b4a69320ca5c6809faa1744d240498bba39f8884cb3a6e4efc6b51d726111a88a8908b431ff5e5e402479a79899f389263d4fa2b9c9d5b37014da41dff54fe2d39d5507f523aabca8c83a2a8a382a00023b35d0bc43a388ca190ae9c8e34e6e99839326b4bdbf38bc287d6c5cc2db88c12dc7ae46ef415890bd2341d82ef81b52ca921a3d728f2db6ead7f15712d9b7ad92bb2d111bfeb67296dcb64f61873b1bbf8cec9e50e92fdb47954dfc4365ebc6900a162c03152b41858d02ec6282201745bd2fe1f4a34b6e639b4da5e726ff93f07eda2c0fab78f2dbd5db026aaacd6eb3fec3b0badbc41c1f54600c6a537c9af18f366ae2e9f43314e00cd86a41d05b107e9ed52af109dc1e2ae11b1a28524df473688b056f89d00605253f8771bf4d7da06dd9a09e2067b3d837b753e45214f2df8bd747937840653d3fd009400c3ec40f379ab2852743ff0c49093ff74accb8291f097cc3835a263727914ba7923f1fef5b960fe23b4c23e7d9e81139414baf97ff68f0051b0ead76eff7f3d9cb186e3e380c3a4d4fb60b64a71ca127649b762edc58c68722eaca4e99186c5ba4466710e242d8a9a627a75fed9b2ce61b9be49f65b292ba1ffc8878546f6ce74523d25e32a05908c93ffc119aa401c17cebbadd5ee0489fc0829de3e43e0cc61aba00cb89692175634ddad728e99f978af53a256bdcf08d8c2e4324ff4984f23354d49c2251ae6e08938ac14288e0caf2279e3bd01bab160df00564a505e7be40b5043a40892fb03e5cd7ff1af2d45b6808fbfe0c4235c6a817cc5362a81d1c5d711dce5a04afa85bb56d7bcdb63e7cb69e5c05fb5147fd7636e279e9ee1222c32036a6720b332379a60fde6116fd98610e6e80228fdc1bf732e111384aedd75fa53e589a5d3dbaa4eb7da8cf63ffb9984c264101ee2ce7069c7df958f7d3be669d33cb0c88da92f4c6f1abf4c51f7802962d339bfa4775eef06932c025dfd3279020b8a29a1c55bc8a71739616833c35f4df11285c36c0d64a1956a09afd396dd7d65a196c8dcd95b11d090f267712d580fc8db2bb411fd351d16ed00fcbfe4b0fdcc96fc81e29858337bc77ac7beda92a41fc741ee8d521def1273271bd325c9adc3aa6d6834ba3a3920a6f5ff805eea1f7751339ff97ee4c1ab00768454e53b15eca382922450585258159bf5c1e187afcab806d37e5ed2305fecfe8dd20e436033533b26f4ccbcedcad1484a6199641db0a52c5d2c0caf1e12361f051883314f007c049271838a0f7f01ddc3c178e68e5f1eb004c843e4702c7072d079fe175a5e9d8a578bc78781716d9cc5c3daa9aeb4e3dd5d96c7e40c50ed080fc3b115784e62323acb9ec3428e626a316414bc4c6d5ef2216bd11f6f98f3f37ae57c59d481afbd4d92a0c9c2c2cbf6a8f3fc7b2d567994e43b2f8774a289913ad55f4fb85b66767c4462187770fde45841a0b944543f5795a69e7860350bfac5b70378e0ef613a0e45daa60fa9fb2bf62f9f0f7140b686ce37022992856b7d8ff0064e023005b037072004996c3b0dcd023e201326dad68f067b034d79bd7b784f1b934413aee0afb7c06efea44ba6f671bd6adb3b3a34b8ad4cfc3b764ed25f99f1720bf52d132fa6be86b2a97ee4ff1cafa277b5c7fed43f752fe78fe8204eefb1a2d04ed8b3e0ef8c924f6af5216f9574bea3f0513855fe164f94b3ca7fe29285cff32ba584ab1105a5af1724a387a8abca25248eab6a6c25d54e7a92a6c592d535729082b72caca535ad7d45600c4753d758596d7525a5f692a2cbaa0c4b2feabecdc8bd002fed5da99eb2de4086e7d2597bde6624d74d95477417601d6ddf5c20ba2f2165fd2cb2abe88ab2f65f9dd4c7fc115e07d0a8c5e828b68306311c64f85e96578271d865c88e75262c0525c8316b38b316235a66c5e8b2d57e494249943935745195caa3c4c9641aacb3509333f65c62ecdc4a7cd93aa337cf23c4f9fa10b743d85e652a2f1d768c2447a51958649a6d7e934be5057acd4d4a51ab956f32bd6536a0d0fb9ded16bc805bbb862534a3642683667d11e57b521c9f602dd4615eeaaca4d947463d56ec2e2bd44bd21c8f764fd0616f0ca149ca5846358c38929badfbfdbad23d8a8019c8d806c46f031d14c2ba51cb63bdf91fa0d099621ec327907f3e866061edb6fd118fddddc5af887d9d2dbc348914a4d6f79bde61fe07c04ae2a27ce9a464ef0b36dea8789887cc49819e01b63d2e761b92199be12de6a22afa4c9cf50af8a573615f28be7be8521010764083fbb8eb662b223d1cfbf980c92e33a9c219f8650f74e0d774557d00a8cf5a4ac47b54d4c3cc93069f12e61155bc0628ac69dd2d18747a748df262982da65fe99a5ebac0a137bda9a5ccf8b1eb29f0907c38a43bd3bb5467edf8af2bb6a232838d83f510b037bd9de6b46e59bc83bc2da8eb151978497cd37924d3738bcd2580e6526cdb1e01d391819819ce8ad3d03f65879fcacfb99215eab903115664e9b9b19b2efcbd8031c55dee6415e521fa89a747cf38d46017d4b1c901de45c6ea2d48b7574fd6c8bee64e1b6d70da8da7a1019fcb3f40a218fe0290d3f95129e4e514612fca34db8789f8d6d7154df252b04262b264ca8c62dca0afbec89d8eb191414cf6384cf6fe2a7a046fdf9503e2c76b2664a11c00d00eec48af0d7580788058058048805a51c7d55eab94e2ec045b99046aab169b40f5709f0910afe4eaed7f78ed17f8432623a9825c32d2f7146bedc28c750bc85f88430439f967542d8a95a909f734cf7c5eb46818b841c7f62647baea5315b7c7b8f88cf3cf247d9b37c1ea749301a24dd11c53813df69021f072d7de720c3ebc20c09f93570f3199e62aede7e6e54ef7101cef171eb926fac4a8d47f8479c34f433424f833d45d303326aa0dd6400e998745eace34f29494bcf3a7acca160931b6bd8f9aea5649ef76e389ef351ee18cd723d5acc7503f98990f3a7f5a14daf978d8d58afe73fb007f3da9e43c54873d80aa0c619f316c1c52dc2fd712a3b7603bf8a65680a6b7c5a9fde51f61e19c627c248724d851a7471f258a746ea85c7cc19e8807e1ac19964fdf03dbde23a98482f42da79c0037966ebd63403da53ca6426d9dfb988e71cd33dff48edf7c58f3f11eaa5de27d7f07d00d73f6dfaf3529fa7e9c69fc348b7bd15daf064077d28c5dc12efbb054706a2a980d01de0ee8b830ef6a3f6ef66ed51cddf61fc707c9d6ab89bcbb65f53d17930d39f9a78606cf44d0e2e38f9fc176a629fd5431600cf350acd7ff4fed2559d9fa4afd9a4d60083785af569b47eaf754ca6bfe9983e5e2f11c1e1cdbeef3832b0ea5dbf0766d307c669d562fbc0ff3bda2eb84de1190f9728e3bfd4a62309d315abf542167e202da00a8e73702cb126559b83217508dd235216bbe0cba470f458e394a610154c457b79e8e5df82c2cfbf44b90ab639722e443cb56787b480cbd1f75fe4a395f4465fe41f6087a59fa5ef151e65351cc204bb07997bc4e22c559ba99908d85ae8cfc7067cbb65deceeed8eb57937898b52cee04fc18d00f8e06f8c783c1c03f781a599117f01f1f9d3bacd477ba57889369e31d5f6c4f48c6c9915986bdd8da7f364dfaeb1a72d832ca880609353b96f73cd6caa6ee07236b5c3ef4fb3d8a781b6c8ceca438c3b39a701a9a15f38dfbcfe242aef69a45173692fd44f1a6c60464c6e9282a06a43d9ebb9f997dd7d53eb5d98536e030eb06876248c65f2498da9c44dd19bc05f0630689c6ba3d1cf37d3040786d0e4c3dcb55055daeb7ffe9f37eecbffbff0de9ecdffe808800e8568e4c9b7ade31995a06c9f6eec665b1d5a979b3d744d7c5298f6b199f26675204e666b06b2b150b63b29921470fbdee8c7eb7a255eaa58ae0275c852a4d80b01ae75e49c1743f74cba3d31f0131cdea39404bde6f5a61e2e69a8779fcef12dfc1e206484ce821bbfbe1bb8ad9385bfd8a5e88e595178c2d69236b9ce93e3c3684de40339e9e79c786f88ae40b0992775c779a9b507ff2d470c2c1b0035a956d0268376282057534b769a57fe7e01935d6c71098daab4e8a0e9558b41f348b5f02fb1d0a4fb1edf3d4f4ae3a64f44a3ee1ebc394c11dc98be9f4764cbe257567a9c7244400e272fbb8d6ced051edea56a8a3ce047cad3252a7f7df83e81db43556c8d7649b5e31124d449c4bacffee29875c1f19592659346603ef0192996f49f4b4c353272ca75a7c19178b730d059bb07556950d9120a14539cceed75fdb80b22b8847366fdc77580bf7d0841236dd708c3480ce328a124066dd6faf43372995319ae7b293394348b5b096c198c788059610dd389cdd7cb420b34ad77bba56e5097a1f5ee7c38806ab09eb795b79e401b41c5de4f1118db32fee9fb3c6807e6bc1cd1c98bb70245121a7add69f5e0c0a5269542489c4f20b4f6dd77fefb90cb5a19143d2d5971e7d7c26628c46c606a659a1372bdbd77d10f9337b02b36899d611c2e5c34186405c3066b02826c738cd513b326c2ae1513830b009d067c928b71f27de42e9a97e41ead051f3d9e5712e7f4481201f2a2200150e3294a72d9aec4183334ddf3d331f07ffde7833dee6bfef39a9deb4ad539d610a54e86f05a0251e42664c9814b72cac1e9724782d164548cecd12dde7a89521b0407a78e2ae672e3cb5a3622a00d41c814eaf2332c6eda5eb916d14422c232f608585b70beb81cc366c52e182194dd424067e0dfb6579ab24241c70091c92627af67842c6cc6c216283450a8458aa9d79d96d67f079928765e699598d2d22f935d7a40e37016cad046ed104310f4b108049491b5865074a81b67d6841ff2f5500d0b6a500ede8eb2b2d6611d94620a711d2dfb5b6922b7b830a086fdb20d85cf8c73e18b88ec9eeeeeeee060f956a67a80b6126ef3147cdec0e45116c10720d4092d03a407cd03a40be681d2057b40e901e0108f8d021228fd621028fd621020cadb5030ce0c7e6c892230d68928b113c2417233e68928b912a469034c9a5081dad15c98a5826e8c0441a924bcd4fe93011d361c207c9a563813724170b686181264b84a1b5ce126034c96589289ae4b2444b935c3a4ad8d1241725c2684d72518237c9450921920b1c24972498d09ae492c4099ae462f5ea930414ad492e4948920b1277b426b974903042070991e482216195681d973c5c7c40512ea026b9745c80b426b974ae115a90d6b95678b0ecb94c34c9e5f660afd09ae46261d0241719c9c502915cf2684bb44e2da335c9a58a24976a9be4527f482e51b40e0d8372235a87ca26b9f0cfe483ea4c2d2694394447dad124171986e44275246f924ba4438b5644203a300c928b6c1d3886e4827520a8492e54e7f141b5ce63c18ba2f3a4d624978e8ba3e33cad11e1a3b50e112c78870813447c905c3ad315a8090cc965e2924b67081d5a6b9d216d482e43a0c03a4324c96503ad2384091d2158748440694d72693f409d0ad0a1b536a4530116b43669ab72e1d948e7082f3a4764d15a83e91cf1a449d9888b4b4b1ea14e90267db4dd69d941dbe461a6fa88b2929a0c054a953d31d76716284a0d4dfe259615f3568c131996a1f427576e6259311b3cfca7639f2c6395133c1bc94638930d1fad6dee50cd7c40b9b54d1d547cb04e045af2b0431df20802e40c9d07404104ab3e12366198e8031285f2539191d1922834d25216624591a6c72419d127c3b2e7a96459464646422248052424a423a40a48ff9d02222921893e19953d088920a24f066483f2a69490a4ec4144884842326c74c9c8c848538d968404117d3220d2901ad095419fd00793b2548dae2159956564b0cafa549525fa645206655a464646ba3e1611a24f767d6888006599cf7f978a4856af987c92ff249d060ca04dd85fa190283b9130f0c25943912729b184f45a66a6c380a9880e031ad05ae31f9aa7a9ac6d44358542d873fe4838938e023ad05ad3ddc244a0f7682012366145a41f5074c0e874a2e874a64e4788d6accf83f4c8e2d2eb7c8d8a084902d29745457accf26ce91a591a90266c94e52b8b44593ae208ec8365ecc847ea00d1f9c10cad72e2b292f02a39e6babeff0585caff27e1ff1d0378a1b526b58e0100d08eb48e0f47a8c93e3459cad2c43f464ca04c336197f517afa9aa8f93e9b2dec9d42d6bc2b00f92cafa4c150894276912e98963938c8bcb87721469ca923461a09ce52c7a1186813eb953c13e2129fb5822ecb9243d8da53fd2f4912eabc3e022d210fea180c8843ef36019064b3cc360cc0810284b3557ce59c857f9435656a32521d8ef0f288724194f26aa46171499258648323252b78a641f38e42f51c66030264d4f72c1645eacaf63a58f484dc8aaac6c9485608fe55d7d5c9e207912234dfcab110c16d285c06089ca573cbf0cf6dc7af92bfb19181c444612024412e59024e4ffca786589469293acecb12ad989ccce682cec7a2a584d1469aa3ee42283c9886ab22cca4e5ef84b13287bb625da9f4b2409c1ae8f0402e526d2c4993cffd03cff80e0200307265a6b7048406b69d8a30d6c8f31da1e57ece1c184ec215b33c279431eb371de2084d61ae70d56bca1c9f51dc91b86e0e8f185d6f400811e981e503421428410e1d9c8270f0bf0f6a30e6eb8c224c1e10c961b4ed0da34a40d5b688366031d6c884200e8408702cc610839b4410011b8c3b5b689038b675ba2e7ff7b8fb0217af40129c4a1008172f64ae05031c1906cf6a06aaeac7a8a7f6b9b37e4d12dea453559cd9555180908948f5c9965c1e891476b7f3de1d908750632648f55a3cfacca08204ab48d1bdab0b20419d2684e94332cf4c91a558daa7f8cfacbf202091ac70b551ac70ba0c6f1828c1d1d681c3b36d03876bc348e1d47ec10620020bad046e374018dc6e98211e840a371e81842e3d07183c6a1c3058d4387178d4307168d434795c6a103d43874c8340e1d505a6b0200c2071fe61035ce1c32733c699c3994689c398634ce1c4334ce1c01681c39f2681c39c6d03872d0d15a8b00028058c001e480d2387228d138721cd1387238a071e4e0348e1cad71e2d8a371e24043e3b0218438c2d05a534087f3c30a0018c0c1426e1c2c3c691c2cd8c6c1826b1c2c488df3040434ce1300d0386ed8c10d35348e1b5e681c37a6d0386e98d1386e94d1386ebca071dcd8a271dca0691c37a4681c3796348e1b4b348e1b53e3b82181c671e3008de3466b9c363a3f1c2008021880d3461c8dd3861b6d20a171dad041e3b46183c66923058dd306168dd30695c669a3374e1b4e344e1b4c1aa78d228dd3066d9c3626d0386d34a071da3840e3b4b1691c36ded0386c80a171d880a371d87042e3b02184c661a38cd61a10024080017a3040013a463460026cac34ce1a7734ce1a6f34ce1a6634ce1a5f34ce1a55b4d602e0430f3eac1181c659a3018db3860f8db3c6a671d4b843e3a8d186c651630c8da3861d8da34694c6518389c65103368e1a14681c3518d0386af8d03869c4a171d2c0a371d298a371d260a371d20042e3a411466b6d0007288001386888a171d078a371d04842e3a00146e3a06182c64163048d8346d63868781a078ddc3868c0340e1a4b5a6b3f0c3180f603018460c01258d0384b3041e32c216b9c256ca07196801b6709b271ceb0a371cea042e39c2184c639638cc639a3058d73c6081ae78c6f9c339a689c339268adf920c40f0ff8c18731c8e8a1006a7040e4431c556c01e850053a9ac08134b4d6da0012a087180548830908b0c41d18686d738599ea236087d69a091ac70b33c8212bb4b681a33596236caaf0466b1b2a4ca1b5d6c3460aadb5ca7a890214bac05b6b9c3ad4d0da134079e3466b9b36d860a1a3b5cd1a6ab4d656364cd8a4c1042c70e870a3b5d6364c364e60a963a300163bb68047f360a32b14da82132418274e4439445d139cdc9021739c610e369af4226b6352f5917294fd34d4945c5953f2678057d5132a561329c811821ad095b165c5f067623df1c3148d138714ad3d81b23f20503e927d14fe5af8c224937d4253ae1cf2eceab564048644aac08465d933491ae9e98443e027e35f8da41a90a491961822451ae9b29248d2f4a9ac9a17c299bc582f1996a1544c669030844e6b57f630a1fcb2d204e70a72060b853856a003bb262b7420a6629281465c8ed6b2ea69706b2d88c681a38cd664e0a8a2492e70c8c011058edb9ae422b9649f8a09c73e9feaf311754b8222fd27f92e5521892a0cc1a9420f920be8abea0d35bca185d62417c9c5ca860ce9d6906e5d4f838d727f50b6b29a2a17918a48133693b3296359b766f883a858d514ecd3ad4946a2fe12c9bc9449452423aa4f45c592b28b8a24d57c13d284cd6455fe09fd0910684d7279d9597692592fa0d112ebc57a59190347086fe4810d2035d81a1368543e8965c564d6cb4b66bdf0cfac978f11cb8a695da81105919c811e0992fc4866aa0f0c15ad35ab71d2909ca0476b8dc2320502658ac2b21338d01a35619527068c224c21eb11562302712b543d15d6c5ab51123c257b9ab0c713bc1a3541d48426046982d49a745d2f0991fe754d1649d835f16ad45d28eae509932830f8090a2b2902f324260a45b920814952e441fa33538d3a07594b405f85f295dd1355b2132a56136ccab69a5847aceba5ac8073061e4440a1cbaa9c2862bd607fa4b25e3651b4d6428da304266cd06802133c58f6b4b659c24ce61faab5cd194a68adf5d03649686d33466bad07335adbe060e383ed03125aa3e283bda6e283b5d67e68531ac70c22b4d67e9801c48c1f9020032470e1e2f244139311249254030a823d0d10e9a7e4c73e304e9cd0e4070191609c3881912669da1cc108ad6d8ad0364468adf5b019426b44d0a3d564cf3f942baab58d1082b001426b9b1ff8a03522d80605309b138032ff7ce893f1d6362690e102882d9e6cb400e23725686d43822c3658b4c662476b9b2b7ad88c201b3df98d08dac68ab693c03cd11a4b1dee891e604e0f2c0ff0d05a10209284d148418048343c48c2e1410378008029089020402401ec80090328e30ece0e625ac39648a24613d9c10f58be28a36aed0855383a58436b2d4b960e923041d181170d0b8d2a490925242c34aac8a08322a38ed630cffe2c64ed498f3cd967860811174c94651e29cb587e90484282ff95fd35027d72ef2e4918d13864c0a02141424614d3e7ca628c903184cc011844383990696de259d6a24a15588c8187d69ae432469526b9b440053f9345a2fc1e17caba9e0aaab2aa2a190e6880832f383868d224170afb4842f414217a8ae4328d40bbfa4491261a4b84e1a085f32cf1f7cc7c8a88c1479bf88b71853ce47a3164208617adb52a392489f1013164a42524c9059fd15a1b41e3dca00a0dbb26ecbf7bb0ecf1f0d63621d880a0b5d6c3e603adb13c605385075a6339c0868ad6361f464c935c6ca0048e0d5660032c88b8b8602e2e36f0b4d63635ad6daab4d67ad850696d43336aadf5b0c9da94fd9e2a31ef39c2c205ac5d40b4b699024a6b1b516b6d6395d1daa66aad0120002c7df870049600acd0c1039b05b4b689b28169ad6d30c0c285ccb22e6a03a5a5b5cd93abb5cdcbc649f5a1000087199ca08ed6364d9a686da6fab4b6b940c3729691b4b661622111e5d00cffeb48f6fca3f0cfac279064d60b14fe19f6b95e247262a6b2ae0cfc4b3653592f99f59281afac170f9697582ffca9584df857c94e26fe534d353d26b9cc7c747e9054e53df3d1528d85818a48d39169c83424c37297a61a90276333d5471252652a1613690a8d32eb8909f4c959f512964942fef5cc44e59b4cfc73102078b2405676e54baa46a02cfb802410135ee5204024199999acaf3c237da6077d7a942450984897258942232e83c9c878b0bc44467a0f285f134802651869ca3e418064b9882483c94843646464a421924bf6a10fafacdd2d5e65ec63659ff748530d08cba01869aac9546aac4c5473edd795f5543e03d284c5c08a315c3f65e72cc3498a54d7efcada12932c65465432589a4612284fc99290bf7acf98f457fe9ea30c81e2490662240f9518690a7d563921e52e595810209cc84fc95a728179020383a5234c943c6912001067ca1d4a24c1e1628c865d1317567031cab0eb93e433eb89285c20c9b0919323fdc98344d60b2fc2d902b40593d69a011a678b24b6a0a32a3b5982b5d0430b31689185d6a6201c8895494cb02ad9c9847d9a541f2753481292592091f49182c8c800919248d87e988908890889bf340591992223497cc896de9359520622f1e797b5ab976942469a9e7b0eca55b03405f98040d6ae46427e265f4f93a5ca0292754ba2622d8199f2f535f9c253657db229fb73690bcb570d489a322c833ef4c9623269cace7a8a6535f929590806ca34d7339984604298483519f44866aacf9465897f7e4f96b09a4b7a9d419126feb9ae3c815eaab28f224d5366599725cd541f6982b1a048311694fc7d0a49dbc2b0bcb1f4225db94bd8680a82011149933449536549427296394db7a6589647622249323256f6a3cb12853e03b29d48d3f5d145a4897fbe3e8a24e5eb835959c8baa4c9021d915c96f9ff98a1e28ed63846050c3854c800e00728ef1f797c663dc1a919a37d8c05e54710af636a86e054c1a3fa483522ebcaa068817f95155401b5564496244b488c05459aa93e9c2a42da66c990bf4454acd01a874a18ed338ba68649e3d060d15a9b86541f2233154c11a3308cb4d05acd4ff9ca428215b1f8280aaff92678cd37c13f7c148533d2c2e2a328a327a69a9f923d66f111c6c9ae70240604ca4726de56324972e1640168ad8d1a0753010713419b3e54fe45ca811736c8c34118a9641826559e571963397289807381a04d918529a610c5154515458f42471145144444d183047a980250008e6805bba6ebb12a0ea3282b7b1a8ab2f8908aa54956256501c618a8cc1251594d95a91a4dfd67160dc552441a6a1081a50870b48d924d92c662055010f81418b4d69850d48f182c2189f2a6a87cf5038e22309c0e6cd1da860829bee90dd94f0302e5102601a9b506ba2ebc2d10a80813ce870c6da6fa60d7e4e2f2a9ad4d9965c1702a19865b4762300d0e05383a1bf94bf9e28eb6430e02bcf543c861af50fffc4ca1920fe0aeb5e3fa7e7c0f7b8fbb0a5c33dcfce97c1ceeaf3f9f07b08452d617f3e5ef6e287986612a308c30cedd27d439469e21c8b2f4921aeca49edafdeef15fad1dc289abe0c9e9a62fc377a59d3d3f490553ca9d9e77bfc7e37cdd3df5519126a1c17b3fef2f6beed3deb7eec12223ccf9ef5765ae704a9dfbf6d48765571651fc338a67d17d16c830cd5a3f2ddfceaf35e75914270cf3af3642f953562ba3bd9efa60920bffe59dd7e7e68dbdbb0c3df581f235c3b308beebb36ba7c05dc30e37b5556f5b3bd79efaa8504084379772ba4d3977317eee45a0b0f0cb92d64c65a4d0da0aa1a7beacca533323fd9ca2d9032156afecd9324a756795b03aea5c756f3e3a697dba3af7f2dd9fbae7f7d457d5f09624302d575e992814c2f6bbfdedfa8e9d47aeab11170528bab869dd4f5a7efb9befa9cfc237a2b250b74aa660def59e53be37797fd76a0bdfc8ea2d0e8e40a2d087ea407c175aeaec8d0e424727b4b4e7bfd3edf8dbf138a1a423eab12b8be40b8daa9885facb073bf87fe9a35757cb2dcd9efab2cbd2b9084f75d9d9cce783d945ede6633283617edcddb73bcffddcadf4cdbe738435c34c679cbf73134feb4b5de37b90c62861e67f650fc75a4a37e7737aa5e63ace8d7397bc43d81fbaf8f23de7d67d56e30de793d256fd2e8d0f27e7964bc651f3e7bbda3ef3d31d9f734b063bc767add0b9ccb5830e5e0a3f4db57c997e8ff1beeb20448203585e58f5e50fa5e5fdf24bc5aa540afcaccb53736e5f7ff6e56e85ac4bf4a04b14ef769cd0426ee7acb33f261b78fcd2b9f7cd70bf0de7688a4f35a2b00f7d918267865adbab6fed59f2c73d5616a106627d8fda095da451ca2a1d9d363f5d2787bcceecaca73e0a836fbe48a12e0085ce00869752faf265edfdeda31978023ffea8a6f9e6d8b773737aeab3b2ea43bdf7dcdacfa99d987602cf5a3f5e2badb33ad21b3df5b5c4286911591792691259179f264c64511906d2d39461201d83ebee4ecaee667f9af33c3df5d554394479b0ecb951b0d353e7eb1eafd6f67ddf535f7d9725b22e30d0d148f73feae6fbabe11518b0d03d4ef3f3472de434a6d62ba0509e9fccf6c2cffc6928691218bb8227d2561a6594d6456a2f74b752bab57d7dc7593bcdd0564f7d314a5a5af81cb5c0d8a2e3a8c58e5af41cb5b4c4346999266c9af6d3d4e4eb9276a58b17cc6385f371272d8f37ef989624302d52be48a19838c1cf638e544afbbb7748a5a73e3b3571eee5397b84555e97e9f6d4079d34815f7cf6edece05bfe34472117c0b9dffd71fe9391daf7d453df949d338ca2d9947c179d4c70dcb7d72e5f7cd0b999b3a73ef78e5882a1cb5067389fea2bf3734f7d1e2c7b64114ab2feceebcf19b3ddda424f7d5616359044c71ebf6b69ddb49bc7eea9eff987ca087b303ec1f446f8669c73c258a79356ce97e5eed7ed6b1ddd346b4f7da007813235611424f8b98e33c34d35dfcfe1f3d447a75423cf11f7e23b829fb3dadd9ef39df5ddce9efaec5fd6912b3fa1e5a32f52a86a842a2205134d2c8061b6aeff834e6738e58b330b75b7047ecab5ec16beb97b86b2f66e515709fcdee5ceddac5de71ee5f5d447c5f71e7dfb69e2932442964581f84551034002d7bdbfe6fb57df4c67af9efaecab2e7dbf79b3fcfb7153deeda52f52a82aaeb4d3c1fb2a94f6d249659d6fbfcd5f7c9b3aad1f9fa638a7b05fa1fc3cf9dbd9b5ab9efaaeecd9eed99aaae59d3042bbe17d3d338cba9f7dae0cd8f92285a242b1becff5973d676df5dbd353dff555f5a1e0a359a8473af16f4d6bb74f79bf5fa3f6d4f7954551b1ae197b44464eaf9e10ba2beb76d9531f15eb9aa15e9388ed96fad2197b7d56d6a73df5c108318cfbdeaef7ee94d6ffe8a98f5799a22cfe606d8951d252a4e5484b4c4b4c9396fd4f50c9305703ef5da7555bf7a08bf44de9a98faaafce1729148cbb2f57de6fad6ff2f7a6f3d497857a9c19e94782e5160747549c2f522810119bafccd1be7e37b5534699a609ca3e4129dfadf0de4a638dee4debde14a20181263caf9eefa7d4dbcdf7eef5d4d712a3a465ca427d9afeb2764b4c93168ad77865a2f897b5e58b142a0fb9280a1b5d14e50021d9cf2c51812247bc991b2408102046c00b2b8202f0a9bfa88cf1fdd49b422714edc7ea04ee9b13f2a7ac4c547315d1f28828a26723221ef51e8adad827348404f85374c223a450041ef557a72e2bcb4340e001923e60882a16950c024238804e280561e1a3e04fc9204dcd480d30820158100b800e50c01109c87f39a00301cecf0481006c08201e901f20110710c2007c081faae450040af0280b4459a02008f00600a9223dbc2504f02850b6400020130078f2e35155a8970d75596a8c587914f6a1a666440d8a18031d2b212c539914b0801f4590810c200ad0e0608215455a131728820809382088063060010a4840878300207e3880017c28000106d0830002d05a6b2b9b1596953e5a6b7bb437e891871b5a6b47e0408c06840c1dadb5150b6cac284083430956143943175ec888e262072f3a2604203a478440001d78600900fae0c30c3cf4d1471f7968adb15ca1872e3040853e6416a0f08212447080147d09459c118511600069c11d2e095a208023946008521ca83ee2c0850dfac08315e6d0471f7de0c109287e10a0081458a20f9600b82101288040187048e3b38632f67857c0255021003c5c988881061a7ca0197dbc810d4afac0c39138f4d1471f7cf00008428cd1831621b20ca5667419d110d51a1d2042870c0f2c335840195370798202a8cc618f2478a107208043ca114e0f2a440d171c0f20f4c0a20c43501a5042c4114a9ce081287ec8a146124fd0630a4a24708034bad0a3880ad49102359a1792a002124811b2863b50216a5070860b020ee0863ab4c0220441986c870a6508e30b5ba8210418673051061e57b0c29216c4318118688105501809630a1f4caa580311e4d0811f3429c31c497a7803113f08e10e5d0d43906105699082077038c1c10680300522d811a40d2fc0238937b0c00022ba78c287fae20804b8a223801e5a00538420e2f8035400046c58021e4a9085216268a0bb000e263c000b53904a504716870e88f480023aa6bca0a1871d0cf8821a477c01822a3c60051d882105073fd4510039bee0e30323e040141e50f3f2c40755e4a1842f7e70041e8200628906582048a260025da1111648400912a821822b9620028514398842065848401942165000cfc2250177e4f1640c5df0c223860184380108b400a2058a163d743703100839620f22a2c02c7220c7160690c21d241861361a9087f431bb04453675f84075c515a06421054838001a2b6750a10650888c04410b5908d102297a4044920854210759a8c2460a7790608a3ca618c01c18034a5cf10510a4400a18124ea8d2032243d00208d030c3192d5b50d2051aa89842002b4210e58d06f9908d003c30a2b5e6431f7b08600917b860030df48100006821012eb8626e171500b1810a25f8228a22a410033478b1c71bc0082100065d94e18b2990810732a859228b2304d18221336ad062072ba0c11569a0a00c4a404d5a80043908406306320680851f7ac0010c11904348062471c00a02d270436006193421840e9070a4091f6c815369028b3db2e03861c665210c3908410e2d10e8411f791842943efa50020f7a80a4954009085a0b81162ac803881e2ed051c194243ff00f24787811c6112336a8416b60946049164bb2ebd38c3c12509a80543da87ad04c011fd835eda751420e70f8410b421331f0a275f1448362810e0adee8a02026006e6863a50d6c58a963a5096d8509274840c7044cfc28d2c30f262c2000192ca1442b801001e81d2e7cd8228f7d1581e96c91822143aa990f66022df8c0ae4914aa924392124948d527b461a6885caa990f36f3c18634cac5650148fc7061b1e3c7fd217fc41f96a58f4e166598a490658584601f501ee54f0e8d2afc9952449ab09a2b5fa184d65a6655f97a09c8cc4743f99d455126cf1ed51c99aecf962e2bdb30d5c7c984fd0bf90b7bfe9d4a1020d22bc2aa2eaa4a0eb9b8f02afb4832329295fd4726abf2954cb7da143a52d2684d4686ca1eab3e5594e1822ab0a8a2aa22a60a254c3c508346850e8660d64b95254d13067ac2df89eca7ec4fccbeac2431cfabcfc61e86c34431e2e4736559f430fcad26193642c29f8ac52bcc84ca0e5a6b18288ff887e6c3ab4f7632f1eab104beb23e55ce1612c9e5ab0f480a5959661991262bfb48d748ca7ea62687ae1f5935512c24d2657540644dc13e975451a991b22c59d81269e24ffd35da8f551f991a4988753d15d211352050feeb08093c81c15260704c110ca344c246a6064840aaa20a89bfa4c412521555484180609fe9ffea9dec0153ff4b02219126ec459221f2e6858f08083412c948ff51a4091b5934b9efbf44dfad297ba6fa54398a55531591261999914c96c1302158efd6f3cc8834c9c88c2c0d7c4092969084484292087d3c5144d98912d28b6a3c203de8230a59dbaa64646424dead29fb54238b4875476b6d32c2082158ff0b8a24544968ad795aa7c255b58b482e390392546d426d0879a1b506d309e5a0b5ea49951c735596946324ac4a76221d91b0d0e8e5673236922423561623fd957f671115d2142a5a6bd811fe9c1799224407689ea83e4e269925a4259490b8288724176c7a42e21f7a9807813e4dbc743e1868ad4d1dcf073c150081f2113ba34499924354ac6a4a7e112681f673a926bb9e083b318c88bfec8c1245e2ff53f599309db3cc3d585e326113c62b890279f288a4caf2c8f42a081019184732d28b6a2c1919990cb340d8c893499595853256c9f40f1019e9477f7d16c23e55f6ec0f613f533d6848e699f980248c8a0502e597f627c33efb23b292c8402429cb2c11930416e2f9af0f5958b786cc54b18c48d390eaf3840505d4ab4fc644b25e9aa449a64607c959c68c10e510104c9ab01732636552361205c1b8342161122380261d181f5afb517f502c7b5e2e078ae0c0023890000eac48010729d820c51d5258418a2a48f146135952900900212205998024099980e422b224211390804842242936f0dcda52b8a023451541805057567d5c42bf2bab32406ba275a43c118518d6f554b495281ac0f2a3d32d168e1366743650d3a6ea230dc1be0f19d291f2808e06cad0000c5a1d3fe60f49864d1c3f62863d0d287459658802a4a301056055b213170f9697787e63488a1ca9c93e1fa8ae917e0c04ca1417ad6a1d27983c3102eb7a2ab0eca3a5fef160211797ce1314e8c4e498249d1819c508515ed0291a4e89409f295436b2b2c728d163d8274464639f50070a1d509e20b98040a399eb9d604f7359495ec90f08d464a210ae9e5c167f2bc37e57455666e7650bedc7037e0c31e589137e08b10982850e7e5954302c43f164190af6c301ad39c1b3113b1fcb467836f223889726784cf1989ddc105ee54b8fb0aa8891acc873eb0815653fcd150a752e505d2024c5063c585e927d40a22851328bc6c5a5c324011d26adc5b1a48cb6246bad0159f264895bb280d65142476b6e74948cd15a10201d255e9cc08a35749400d11aff297be2445a6f9d242f68ed031d6c072235dfc4cc55a409008c818006c8205608c249f6839386009809a8810745d436813490d19a0018d07e2011d3428dd15a63994318665cadb3728425fcf850c00a163be461456b0d0898c6018454f11c41052b58313a42524287004c5cf186f4800ab8033a58d15afb11c6cc5b1730228dd61a0b8b0cc068a3b5a6000198e0089720b6758204d13a41565a07481a5a07c81bad1311c2deb77c2fd73dfb4bea2901bf3733875aeafb5ed6114ed3e41ef536f609494a9380a37ef16af978ffb933b72d603103f75ca38451c2eb1ecd7c5e17b02001d3b9f394335a7eb97ed7b19a0c659a2cf5ec0a0a588e806d7e2be13b1efb84b2677ee59192699a588c5027b42e3a4add8d55d2786d74735f67edb40fb99d9efa661e04e5f86a7c2f52a8104b1164ecef569d9f3fc942044c37b7925f379f5bcd636419029e964a3d7b9714bee8eab30801c33ae183b4f2e73ec71d044cefb5f4756df573ed260702769b5f0aa3a4d9c94ef965f901e67dc6b9dda5704f4a9ff401e696d6ecf4e3dace6d6b0ff0db33d70be97b7bdfc2c8033cada3b34ab7bfd7aab9065876e02074705a38a9a556d67be7ecba7398fb775835afef59ca788fcafb288cb14e285d7594f6ab21bf8fd66703161d6029217c3d4a68df652e3b1958d74c2da7d05a1a61ac9f030c73747d4bab2fcf1bc6e8a9efc628a9710c9cf9837a3fab35bfd463010b0e70d6346f9b2da516601103f367e59d7c736b5f541373a90706cb0d708c2fbe0debcb92ff5b374dee5161e0f97e6f1b75a45d5ed735466b3228068b0df0cbf34d5ee183f6c9df174a4d46bd9a0cce80a5065857a91fadba520bf9dc7d9ab29d45217702161ae0f92fd7cbaba3d4c6de3318b84ab835eceff5fb6ccf3119cb0c30a43a5b6df3e3f7ee99df943f609101decf619451c7f8faf35ba58c0196d4d63923d5f4d14c399552c2004b7b1f772fe9d5dbce0a5f8069edf941d9df76fabd5aa574018ebc66d763951bca6ce3ac7206850281a50598ce4e3f56491f75bbbf9a2bab70946992ef514f3e9ac8022cebbd96d6dfb23acda5f5d46795b0ac005fe9de519bed7e9efaa8ca9a90e50bcce5adfd777596c2593bf454f7b2cbc2248b0a3075d2bdaf30ebee9eefc8ffed80c50bfcb36637e93f7cf0bebb6f162c5de09e379c2fdefeba8e3acb14e00d73bddf2de595ca799fa73e262d475a6242d69564bf288a0f585080e1bbbcbb2bb9e3b072fd9e3a4df3ca4452b09c005fdae1bc9d7fbfd259fd2311350534d21794abeb49cfdfe448cb345dfd619e5b2f537d743e39b09800cfdf1c463e61de7aba5be1e3010b17f86d75fcde6ca3aef2cde8c860d902e797b573305b47a986eeb5c0af7fd2fc2ed4b46b5a3f1eeaa9f860f73d11dd0d584a809deccfa993f7c6a869a62c24c030c308659d93bbe96ed4f33d618fb06481a3ee37db6a7396cf554eb1c0704e972b8f2e6f7ba7bc57042c57e0eae08e7df787db661a39b73cd93bf9888ad8f7a8371f4d9442601901e6db554b9f9ddf658ecee1699a263ee98b148ab38800d3ebe4e697c64ebbb3d3564fb41c6969e233265656319926acb2e85b018b15b83bc7afd653f317f7ec93aab932bbc54a1f58ce5cf7d7abddd3299df55056567d22142bab984cd3344dd37c34d37447b092071cb9e3f3ba386dbdef23c7039ef3fb4bab738cb75fa8f9c08f4eeda4bb99ea5e5f05594c32967df2951d6961d212d3a445949d4c932887a609cbd3747df68159acdc0147ed3e3b0df76b6df33b0dacd8e1da28e98453dee7a67b15c2395fd7fb78d53b4b1ef7ac0396f19fdbf352fb3cf5550fa2ac8aba6f6efbe880b9fe27a9754f471dffd239e0ca77bddd726df9dc37f72907bc9dfcdfb4c2aea57e92c6013b0a339f9d7f8f9bea5825698969d282d507076c27afd1dafaefeafeeea6e9520f9b60acec81abcdf76e6b79dc9fabee6fc0b2e6acf3eb5ff5c708f98a1eb0d25be57cd5bae92685f349199fcef45d77d5ddce69132b796029dfc5abf9837a469bb91b30e52ff6eeb4eb8ecf87d2539fd5abfb62f56a9a2a0612853ef3417963eebd48a140b0d206fcacbcbcf24d5ffdfdfc79eaa393032b6cc0dab96debd3d7bebc6fb9a73e6adb07d239ca873fa8839535e0e791d66cf5730835ed74ae61450dd8c2db73843ad21cf3acdc531f461da44e56d280f7e635ef4dbbccf36ddb3df585acab87ac2bc934cd9e5fa669822f52a8953c56d080377c3f5dec6fbba50e6a4f7d533c95edd912a3a4650afca14fcc344d13b52f52a8d10a1e16d6f76c75efd917afac35eed961fd7b593419d4a9990f08f41456593903d6f9722db7e5b6fea3b44b33e09bb5cd35f369a9dc943b9823f75959f657867dae1bb352065c1f94974bed688cf4c5e7a9af8aa5a94b5fa4504056eec05a3fccd769c9f58bb57332e07f54bb6d9faef6ca4cddca1830e47ac6febedba7dfbf7c659a08c58039ed774feee4dedd51c81fcb9a7a90ae2f0c8e3a28e9b4efc218ad73d6cdaff63bdd724f0b6ba59e5ae10a1830874e6ebb9f73fd054c77a692c7273be474eee7a98f6e60c50bf8f10de1be54677e2995db53dfcc57ff729d0956ecc079d6ab27a776f2caf5cd5dc03c4bf76a8c3cf217e7574f7d5320154b34a5acd4817b76f13e7ea37e0bf9b611347262e758e102b5aed208a774f4cd3a1d8df2ebe5f5f16e5f8e90cfbff2680a0cbe2a56e8c0f0a5b3b753fe1e8d9c574f7d1fcafa64f9a2b26b0a0c4e93f562650b98df7fdfbbbeaf6a2935c5b29d9042cc41ff4942e7c0bdc6adb5e4fd6e18abd5f6450a55adc881f5c3b825ddb3db97f1c238b073b07eb6144ac7dd535d7d7a2f02ebb0a2054cada3f0d62e6d7ed4ceaa4751b2809d959f33d593bbac6bde9efa38cf114f13c6af4c857f567d2c2818e83f2f4ff39926ce8b4c13ad0f033db742147c7858c102be0fedee4fd65a79b6d679eacbaadfb9033c539555d577051ca9e33b7fbf74dacba75db1827c6ec21b2b7cb3d27b697dd5c54e6fad3cd6bef5530a07b6d5bd7caf5b0827e46f4e2956aa80e37b2fb7cd94bbee68cd9efa1c142b6f60282b859c579ee38330474f7da05188aab93e64cd649515928f0a983bf75ccd10be6a35d7232c5a184791d629601e27edbad2abb5bd0e66d18551a6699a601c4dd3344d93ac94a2ef450ab522821529e03def86fbc5e7aeeb3fdd280a38eacf51672df35b2aeffc4001f33cb39b9267ca21cfae3e01cf1ef576fbc5cf8efeb6f48df48a1bb842eae0f39e6b86efd5fde64a1bd64157ed75d24e09e773b5bee8ec7bb4e6177f6ad83df5495a45a14f6403bfbd69959566ab9dcd7086fe5a0353c8257cbf678e74d6688ae6c3a9089f1ad86a5e63fdef9c4a6bb70361946834c5b240eff1ea43ef11e56b663ef8a0aca481e1f76979de6f726e256671f9e695614ec0dac2af923b4e398d533e553da8be1a91b5e78bb9f057d0c0ef2c75ce5df7dac5eca8a73ecac59526604e67d5f6766da5a73e8a821004fa2d99809f7ec7e3f3c9dfbcdb3afa22858a626509583b69678636ee3cdfd4719a40a0df8e9e8167ec99db6ee5db5372683df561a051c83d25e0f8fb39b7fbd53c6db4db531fb44e568171e663c4d22460abb57b91d2ade7de8fefbe6206e6bf6d7e2a77be4e3efdd4aac834d55499462460ae6f9ef3e98db0bf59e33cb272040cdfdd1ddfbed1c1aa9d854cac1801d7dffbb57c3b2be49acb5a04dcf7ceaf3b17ebce33c77c8980f7fcdde5fdf7dcdbd16d8a646508f86e1afbc77769773af2573d88aa9e92704e21e0bc6b9796e6e9acbdf5664f7dbc1a5917552335b012040ca59535de3de53fdc195220e01cf3db344eba6bbe371359d47d23ec73cdcc951fe02a5fde676ba7fba78bd9531f7c3ea81156f7e883b24a5aa993f74df7e6dbfd5d7e73ee3eef736b7faa517d59e9019e4f47c7f77e92d79afbe501ee3dcaee729e9ac71d779f322b3bc09d6a7d6fbc70ea1be3a39efa602c03c3a8e7954f56be67a556561628873e1766d902f5b9a2037c5f4e675daf6edffdf3ab702633558699a6575fa4507c858c0e61d7174e3969e5fade699aa6d0a8aa2f52a8152b567220ef7435c2e82c9c14560761948fd24ca185ffbf217d47b33206de8ef3e87495f96e4ef5f3d4b782034c61ae0fefaedd513d1f931531f0d69a424bededd4539f7b542c11051a852ead99b146566e8063ad196637ddadfaf5d770c94a1838e7672f87df29d7fdadb601a69bf2fbaaabd6f1cd6187715403ec6ed4724e98e58e3dbef5d4273f2b34c0d54a08dfe5f1be7b25e79efa282bb317580103573aafeb56beefba66fa3cf53d181a55756506d8ca08b576ddbefb9dfe8c3034aa64801de71f5fcb3cf9ffd4d4539fedd9e862f6cab0b812035cedccd75a0ee5eef9290cf09ecff5eeaa7bfd41ebb8a7be29ca4e5e8029bffa3a5a77b597c25d3df5d5fc9428ca4ee88a0b309dd471186b86fddd3ab3b776a505f8b97a65a4735b9bf34bf920d128c6b100ebcba19633ff94cf4d6a3df5cd28efd92cd45780dd8591d27a5f8e91c6783f2b5fe039f3db33ea879c5e99e567a2cc8bf00c659ab0eb2d7d9142cdaca80057cba595d64647a78dee3df579815fcb48adbbf55a797fcbfbbac037cedff62f7cf8e4ebf7d487a50077ab79d54ed26769bf90f2ea43a51a599575594101fe17377f97c2f9749c91af9c00db49adb63142ed2ca5337aeaabc9a0f84c80e5c72bab7c0e5ef934ac5c6047619532ea5ca1a7be39537da65c212b5be0fb64ad79d3a8f38b0fe6f8a816b8da97577fd7717347a1f5324d97c5647faa0c659aac5e7d284bc54a09b074fdf59e1f69e7af4f2be9a825094c0bbc32d1122b24c04ef74bff39ed3ef3eb1c75e74a1658d2e8ee769af63cb5acd2531f7d70050b9ce1befc42a97bfd38ff7aeaa3f255bcdeb3affc51ae2cca7bf5cab02bb0a31f358434ffcb9dbe4a51566693581901fefd9cfcab2f954ebe8bb2b279574480dfe90bbb86dbc9d7bfe77e4e5919555f0d8d2a2456acc015d27affe6a721cd6f77c92404012fc099baecf48d93dfcedd431760ed609c32dadfb7beacef470bb0db924b7de9ad7b4fdd9f05f83e6bf7b679732db9e4755616e8c834d51f2bc0eea97b543b1b25dfdbd11f5fe069ffe13f5a239cf76afe430538d63a75844ecb08b9abf08717b8be477586fc218c99be1ed3a485fee80243bdeddbf1e3cbb2eb9c02bc9fc6dd639ef66e29270af06f27799fee5a1835b41f90087ba209f8c58f13e039ad9daf4f0ea1851c468abe198eb39113f7e073ab922c60fc3001e6fcf2c9afeb5c4ff70f56e0071758eefeb24f0ba3ac7bf6eca96fa6b240d4cb18f6c9aa1cb23559f697888e6aaeb8058650be9c6174fdedefb7df7b5a603a2b87dafd8e52ee5cdf53df4cf5b93e5934df911f25c02fdf5f7af543baf97bcf8a1f24c0304b78ff29cf30df7fd7539fce5f7d40d49b7910738fc98f2cb0ecb54ead6396ba67a8ff0716985a271d87cfc6fea4acd7539f8b4cfcb8024329e1943172f826b5f3fd1801868f73b9dff6d9ad7c70422550099cf92102ecfeb9db2fad934feeb6f4d4f75c7e588173cecf761ef77e17e583662acabe1a9005054b324d35204b04e11125529ac0924cf0450ac5e2c6a60f0cad7c7d574eed8dbb73476df220dae0e14e69a17bd1517a6f8df352bae103d7b9efbc356e6927e777c0146ed875ce77427be9a576c031c3ea6cddb9bbcaa79575c02e4b1ae9ecdbe939a5a674c0af726aeba3bbbecd1c30ed5457d8e57331c247a7ab72c0d9da2e29cd79534f7def31b189030236701062b38702366f0062a3076793c702366e108db2c728fe14cf1688b369c302366cc0ee759a65e68f3fcc707fc4c0660db8baa8a176905ec9e1de90aa01435a39b55ddeda1da49f8d8c6cd28037e71c766e67ccf372fe429745551f0a943f21abaa015922eab33c02659a8f328a0d1af0c3e724e51fa993b2f28807b6355af72f5d8492ea49c96781cd1930d54f3fdba393d3531f3403e6f1f237e773f0c2f8a27c493665c0ee76cd75e4f2752aa39551da02e90aefc0797617f3947ae73eedce9efa68aa0f7575f894d890610c62c0aef75de38bd4bd077ff330e0ad7fdf0bb3b61dcebd3318b0ee77776be1d5ef769ef90bf8e6ae7fdb9d7985f441e805cc3be49173ddfbb303ffaeb46bfb30be7d10ba4d17e4a4315607af7571c6576f744f47fb64ee9672dda97475e0ed227f764b7ee73f7ba9a73eaa5b5516557907e19b50365cc033eefbae72c9b596d5454f7d54ae2457871b3ab09e3de79f55ebcbe1dbefa951629224c1924c4f0996649ade4c4b4c9396a724264992699aa1620a7c34c3409a9aa1624a3463b305eb2ea7d0d63ee7ebb04fb199834659af94b252186f9d57ba97f39bb3ba28fb96b66ee4c07bba47f9d6b24a4967ac71d0dee7cc16ba98ab84fa69214af9e2bcb7d659df938f567a65af17f2fafb59eb6016b0cc0f1f66b95f7c906e8b855a2974d7524aa19d103e196dafba72dd29df2e4749f515f0dd5452babb76f3edffbcc40a7867376bd4fdeab7f7ac6e091c78e74db986364e5ea957056c6385bce7dcf5bcd1ddbc790353687b7d3aed3fb76be6744227a629031b2ae0e8eadcb66799fff78e5688a2f9f04a27744252733305275d9c523a6be58befdd3a2be79a774ef793baf34eabfc92eba9584da694c29c565e79ddab733af732bfb6d37f7cf6adf596621305fc76a64ef2393b95764e07050cb39b53ef98699c3b67ba790276d64a5d9ddb7cbb8f1bb6c428a91b37f07c79cf4c5dfeeedec1fe97cc46a269ca62d306bed54538b7e4523e7be55315564cb06b7404fbacc6081bd83e18bbfef75e4318e7f3d477d780d9393a9ddcf4fb5463de77e7bb7646e8a8b5544a58a59ccefd8c5c73aa771a78667eddc34b9db43ff97b2a3e187402d6dbf658eba34e3ec96f3fc1060d1c65d5bdbfed3bba6c698cc1a609d8763beb7b34ef6d9ff7c7d324b7d830013ffe5ed5b26a49ef7c7c2f01c7c86d7472cb5775cdf19df1688517c6592d95f1dd791da4f27e8f6feea75d5625e0ad25a41df6d9677d6ecaa952cf3e2d3649c0fb9f7d0d279f6f5f9ea319787fde935f6ddf7e37ad450276f0ee4b6dcdd7bdf9b7821e669a283c02862fee69ef7eb1efba6d360286b4fff36d6376ffee63111eb4524e19e78bcf42671f84fa769af95357a97d1e8980377436f61cebccf0a5cc7508b8efdedd8bbc66b9a37317061b2160fdfaf3c7f995dd7dd6948c4d10708cb5c2a83bafefadd6316719c906087846eab6ac79f6adffc9ff01ce17769e67ec1cfa405278eb93b44af86eacf4ba17657e5bbf4de1ecd06d7a8063759557c869fe0aab7e3cc06f39849cf76ab5dcb2eacd0ef0ebbabf5f0869e59fe5a60c4ce18d1dceed22efd1e5bdd101a6b66ef9326af9efcdf72424035f19219d9a3f5d6184f76d7280e9fe3db97efaf2efad7a3306e6dae6fd60d559bfcf537bea93f00a85e21562b2c101e65b3fb49a6bcd77e59a72602306ae3fb7e47bf7fc7e56e8ec129b1b60ad6fdf7dcedfd5f2bb7f130686b7d79ca7bcdd39d79fb501de4e3ad839ed76df9cab3cb2a981abf2de4ba9a5d251385f95d7f21bb37b75be58f5dd7643032c39ad56c3cced8381b9bc37ba3be7bbaecb2e6780b97ccaf5edf19fdb6fc28d0c3097b25f7d6987f7ddfe5c059b18604bdfb6bbd6fbe09471e64bbdd8c0005b6aa1a591ca2875ee5576b179017e716e2bebcbdce97fd64dd33451cf86b171018657de19218db25319e96e01deee9f838fd60b218c3cb200cb0a23cdd5d5f87a95fc21b65901aef3defca4fbabe37efea0c0b4186939d252a4054a93163ada7c812fbf396bf7728c35d8a800efe8aede955b19e38ef9bdc0d07d7d11567aefe4dd4d4f6d8951d2525fa450d5a60bace1ad967edd2f3a7bf7dca400f3aa1fc6aae5eb2aad9c3fd8a000dfa79ad69a9fba972b8f2ed89c00bf5d67acfabaebe47efba7c90418feebf7bd7bd65efda88b33d87081217cdbc577f5cbeef5ad5f0a365b606961edf6e9735759b0d102d709f5ae5aba29df7d3e4d967a75059b126079e175f6337f6b3f3f0d840d0970ce7443bda17cd7f238f3a56eb0c902ff8eff627d76f7ae69fc09b3c1060b0c3b8f7456d721a45af27da97775b0b902dbae6d8c8e3a0737d7d44e93db8c00dfc86d8df96b9efbed779efaaabc69131b1160e7a475d2f58f9f3fce471f76818d15984b1a29e515ce3c2174f36958fac0d53e8cefdf8bb23ffa721ef09e13c617777cb1ee7b2b1ef06b28ff5107b38573773eb0b654f3fc56bedaaffc78072cf58c9de75c6dfe4bdf0ed8d19c9fd41a527761a6b00e58ee2ae3d3cb77add34e4e074cb78e91cfdee7be19c23b07bc5f8e6f731bf5b66f359403ce90bf5ee1beffd7ee9de380f5bb94c6e73a436e1f7d7080efda7b5f7dd4d16beb7dcf69f735e6f79cdc4f5abb079e1b5e17b7961f2b7fb8ef1bf0e4f5c1fba08dd5fe8599827144413df0eb9553496fbf95cf97f934e581dd5f5a1fcf324ebde74f9374037ed2e677b5851bcebbf3fcd04cd3a59e7bb4062c6dc073cb0e6987f27d94575336e01721e5bc7eeeee52a9dd1aacbd70c2faaeabd7de2ba993aff3adab7571471977b591450db8d74d33b5cece492d959f060ce585bbda59299479668a061cf5d5f97fbead36bada210b1ef8ee9de18c37665975bebdb23ef2ca80e50c58cf77bcefb8a77e0f463855c062062cfbcbdaca496bbeb35b374dd364a987bda8269bb30cf8fbd35d5208f3ae0fd679077e51fea390e739b375927bea938f0c3846fd7bcaaee39bba521ae39e7b2e2c63c055ba3be5bd31cf7cf5e494b5f045b994be48a12c8b1830ff3aa3beb7f69e298d90250c58d38ff42174afebdbf7412558c080e77b8f52a7ef479aa37e2c5fc073ef1b6f9f34c36737ac9efa40a2d0879ab140f623ca54f4c2a6bcdffb964ea7e3bb0ed4a71d35de0a2f774ee7fc68f5d4376381621726d4ceca17ed6f4969b59ac83a66bdd3ce67eb9417c679afac4fbebdda71792fb49a4f4f7d3f33633511592fd334638166bc32110b17f0943dd63eafdc124aada3945652a2cfdb192aa6c417295410163aa28cd4c237637cb6be386fa5d04d1aa7acaf4bf9ee7aea135196be48a19860d902a66ebb4975eed0eabd6baebec9f4547c58e6c0eebdb6b9f6feeede59234482450e1cfbdf4ca3d599cabf9a7beaa3922f2b73efeff3eb310a240a7d2e4b1c98d7ddf78cd7597b7baf7076c1a2052cb395966f69dfd6fafb6501430869ad7442caff7eedf60b162c601e7f5ffab2ff7331eb1906cb1570de55d6f9d0ee2d6bd4f4450ae561b1029ed166f91dda1cdfbd5a5b2a052c70e01e6be517f21c2d9cf252cfad0276ce396af53bb7b374947aeab3f0d13722a437be39a1b5af5a6a9f75cf3d68a9dcbc3a9a69dd9efaa669a2c242059c5dd5d76a0bf39df3423d052cfbd7bdedcc1ff73b29a5803f3eb7f7d5747707bbced5ae70c11205ccad7cf8f21fac75534d1fcb1e28d354a907df8b14aa86050a78dbe79cde5bf3cb3edf7e028e3dd268eb7cd7ba5b6d9d261cb0b881edbfa867e59cc71d5de7f4b681f3fed865df3fa786f5e927d354599f8c0ddca7945b73f7aab4ddb9be06761972eb62e5baca1d7b55c3c93e67fc0eb78b1bda9b0686ff9ed64fa57e2f5d9c4e805bbf173bcdb95a289d4403dbc97fdba7ffe5dcd54596265849dfa4d74d09dd7331ca4a6de494de69fbe79d298c82850918763775bf37fe7b5e65f4d4977daa0f45d126458c3c69a284d2242c4bc031573ae5a6d272e9bebf07de9a7c5df94d2c67e0a0e7a86473877541cb61081142082108cb0d00002311003030201c8d06c3f1905c3c69e7001480025e825c92583e974983610ee5280a828c314601028841c610909993e20628dc1c94a137fb49e3be1d807a738079c42fb5fed77bbefee57b3dcd4c18be46089edee906bdfe06b9ba9beb535f221e6e0490f4612fdd23831cde3002f78e421c39a80a9ada57c0f8cb64c801d6d59325e7c55d9c5c708a751827aa9774641395f6d98cfdfe9f0305df70db5ad79a577767d17f923467a5f277d6b8639c604dff21d8dc9366f241ab26d9250a6ec3ec4381310ac6f3a99974b395c89eb4c68731135b13106a25fd87709ad875ee67358034c2412e2b487bbd3e80737796136dd709578f2f5b931c6706f38d4ece3964c788ea13a0f1c147e088c540c2342cb7259d4a36c0a47f91c270617d2291404c689c24da9b3a74ae0143d740308111e1d35b360beef179cae711d780f432649794d2a62474368589f902d4c7e8061e4de55c903ad799ea8ab9d1ba7fb863cace12ddcaa6a8f5ca5e33fcb053c000253fae906ec13e17da2d4ea06a02a870f66e1afa37191a378d28430fc84104751e80a13fcb92f28ade82ef3b1e49fcaf5bd7c0b36a61e70756d7fd04ea94e5d01f83a4d4b68464aac8766a1fa345315958d377ad3d756c0bb121114d0fd4f3d0884603591e10c8a8fa1987ea22963e9587cf1c411241396b76f28a547f188c38bd91e96033a95ebde466c705fae4fc68858fdf5ce46adf4527214e9b2a68e212ed6477ccd7bca47f09985d88e104bbd2f48e44cabd54c4a8358b0cc400eac7edf02cc58eced84a7796d4bfc71369518aea454a0bf64ff9ee1b48fd9a7ea1c5147960d91a2765069220b48985d9c81c29f57dab335b621cd07d816e9af7224a541d9e29568ce8dd52c3ab69c58b7b72c72d0203005380bbc779608858bfffc8a5013593169be7a0ccac01751b9608770ef09642829c3b210995612c3465943f2c32c95ae4399f927942e7bb38a85825a7ff7b7c78c25b3c26b5eaab80e5f458b061ae0a123dfb1a011b6c13721648c198859e388ab2d63e7337cc32682594eb2e388d6321241059a3230c1530518faa60ce3b2b19f70d1d3d50bcf3460a9638d99290b6465e256b65f6380b803432708d1d5c570cc89a0cc4951b2c00d07ae0be0cc839d04f62d195655257a1734b580f7ac76fdff94f76a9e24f18f86bba94358089510743affb00c562d46412cd31e7531d940227fa6ca72f626686eb96019c260ac31f175c292f3a91a8cc238349ba8221e38bc8c78e9fd08c6dd955ed4735ed6b88292a5ea6b6165046f534406d6b27c4c204e0dd55986c0292510c123f907bb1bcd35929c72643504c7bba7dded41aa616f7fd3f9946947af9dd1cf7ab432a8969bc50a9aae395a910f928e29fdee50126bc17e8ec338282b85b00180bc168cf57aad315fcebe3964e6e202288ecc420e5a960405a8f9b114e2bf36ac801e9b589f7ad0696e20c90b0d1e759e62209cb40229d8b7ee0a26386c5a84cc16210340d4f8d935c2a12f5a1379118723474c2ac0234acde3bec2485d10c5ae94545a0886a6f7001df947cf1b7226065d153eb4684386ac67d72bf3ca2935d8550e2ac1f39893eae4854c4129ad00a8f4f2e38e428b08619a154aff9ad90ce6ffda0f3ea29d1ac4d5175606c1e815598df74077495467e5964a33bdd44452b1ae96b90f32dcd9402ef60a324c68c1ad6532563f9c13578341bbaee1dc2da144d0042cfa0710fb29c9de407fa580f5eaa55c6ebdb3537f3086a3b9427e14b7497cfe90f2cb8f8558c0173c8d019032dcdc511bcf1976581087285f24f299301d79410c2db6cbdc8cc12b8eafb29d396d833cee835689384eda78393e45b78735799eeb1496b131540d010a460e64cc8591353ebd5853a00b427b3d2e1729793052ce49bcec12d0abf5201c1b4d72f866786a7402c35f76d6127e49f620c54ea3b9817fdd0da0399548c8ed911e76a0cace608657009a2f28d3d6e76236eaf5872be116f61e53048eaca5d8cdd0812af9078504df75fdbe1ca2da83f06d939e31315cf729664e8cb483250c2c0ad988e57654f3e26c252f734074ee4c8b4df6fd2abb2ca20930ba7414715ff46bf8d984c43172c55cbebb67d21bb4181862456770f8d09ea22264c6eb467d9671056ca487844610f84d8b8add57d7ca9d37a95899b14ce1c674db5a221b14a69bd7fc0e643bddd9a08401df2bfb5bef93e4c292811b02331f4ecf46d618a8148af449f55519aaa3f6a702cdc38d154a7827118529d879d8eb2a0b1af1f002446bc1e259bb8d31778859c4b04bfb72517781cbc8613a5e6e60930a88413e3ad52e85503d211a74ec0ab0e00e7901b9a137e851b825d94fd731751d39746f520412a17500a093e79e235208355f6a1bdef0ce6ee833b2be11eb65235722e6caf281ba207a26ce4d34d14a5afd2926d95be6a4b36a5949e06d059933caaf492ac495a30a577289e9c4f49563afc5c7ca94bb5a523a5aba6880ec68a82fe7edca758453b7a309dd154eb28424ad9b0fd1ea046909c4411b1ce4dab2a7ce4ecc2b4dc0461a129a862f48e47eb2e8c2487aa96f5b448915246a7a4b3dc8bd23373a0b6c541222a3e7c61254cc5b5d7a7625d10419068545755bb3e690517c109345e313a4f5dc39d692eedf12e6a1de94552aade906fbc90808710c9540f8b0adc8c5c6c01ae18f880839da004e80b15f565a1ff1dc1d0c4087fc1dd1678fc6bf793d6121f2bb3e0101ef01ac4c4599941d370076fafba2e1a1b40d0dee28ec0847b91046f94d886bc827e84bc734129bbf6bb803796747343a45be70d27dd4e9ec48b4c8bd2ffe342acbe571d246177fa0100fd28abf1b8d48a432406d560589c61914dcc168c0903dac3b1fa800a5431d2ec357151e4c1064f77479ad7177995d33d68b374e953da8380b2e37b121f53fcfb925cebf4357b4a5d43f380f1d6c2e794e9414d4f20b45d15e3bb99f8ff3b0591e384426b019d87598c0521980076c6ef4ffd32cd567096c8230554c166688bc54fa8d489fd39f6655b833cde629b2b5310601bf7977f4c462a16fba4e9dc088334874ce4c3ca5df2be533f79cf1732ab827b11074029cd5986576c9c40269bc93760821ebfb07871d7310dbc8a51c73c07f18887272803dafbc5a5af5cbb6ec4f8b6c4eaf2f0fdc7c900742e8e8a52a40bcd7637b192fc69096b0a567271c02f142e5527e2678c76178d8f13bd945d605dc4e1de48c615d0402be0160120c5768b96415d71aa40cd32159025e924deab7aa1de61fd17b070ce88f97373189cd1bc7c4e22fce314c897cd665e93d4b8dfca3792c42c8a2dd1290c3717e477b13713428bfb8942f7658ed1bd940c341ffa287c94290cd6162ad9014296941a7f5486e74363e530ef7b8d25c99681e06ea9e94bff5dba8200746716403c496b0c8486080067ee9347377043d9ee50aee4d24447ed85b94cfcc8e6ae99c5ff3ff4a4fd2c685f70a44e20a8fe6b3f37ee92003f467c9e882ad6f84106da8ea668447821ee6e978935504e73fd816683c1b26be5451275690cb7013e2a3a24577c1bdbb5de3732ca94af61ec046bd4ef21750b74ebbecc25d1a1caacc0f4c901a50b20763bc2cce8167654ee6b661943f5e61cc487b411f958301b6c4fe472c4568509c3df80debbfa9201851560e0d75ba0e7705fc877d8ac59107746306992c0ca82c45b65e3951887276ebcefc528509429a121ddbbe2427af081e651d07356ed7626fddbef01569ce8f57368da974e8d3569230654c4518a0182912cd337eb5bb4d4d953be8c2908040f3c75d06172012076287e8ebbb529c266493489c8085fdb3534c1796d9ebf9e5c037fef6c9b174ccbf1a582965a82bb7270884b5128a4884b6f31ae851ba708e8bda4a06b078d16387bca54ba864889cccaa3ec106d93fcfb06237fe69fc537ce7f966c55af1956dd341b136b44c9f0837c58d78a54cde0725374410234424231aa8f6c40acd0f1c665f27f02bed133b3c06ebc7eab03535f7cd43d9e35d80a8dad3976116d2493d23eef7ed0b12affe3a06a2d71ccc3af38f9cd845bb38e420d5e989800c400df5a9a7960875216dde27c97cecac72640b4cccd0963480a605ef280db729447ac6bf05d49524b886023bc371303582ff3750edbae87a6edb9c151df201fb1c762237787ca44e30531d84ff3d7f77c42df39cdf617f4516c1c5c28003de3d83b6a47f0a8a1bbaee9c7f13386787aca30dd3ffcee04495f3443569b6b3f62e8bb99a946cff9e0588b0dd09565329d4258e7cc88635e9f8dc883ee9978d73bde83c6380c4a8a08485d3623f8c16d96dd00bdff31fb00ee66bfff18c841b8918d8ad409b946b006e1b78c7adfa1081cca477505d94f03e2a3b118a02cb25238cbe940ccd46a891cab23db5f62d444012f9963de9efe294e207f8b02b7f7331398a1e65868e3eff2f83892bf4eabb0049495cc381243d81cec6852b8a2916429ffbcfef596492906c8b918c3c76c671b0e0cf0e590e5e4281f5511e08360a77fa245180c4d1b51f2063e23c378ab791c409c6cec9ebf9b98105a7b2b029f69649f7d60541f141547dc0bae1e8365bfa413120b3c5dd1705c8d1c533fcb649e7849a9bac0af732d13cb35e8d81f3f6b4b7b7f006490812d0dde7faba818c526a8d5a61ff7b57351012f326dc2027f259015acecca4ded15328504013af6f6d07d9cf48c31e450767348195cfc9f03f4cf6e8dd7acf62bcaea9d4822b310799197554316554aca33bde09d831cf8fd808637ef2a7dd4bebd5017a6914ec810f5f1896872ff0567e68e65e122d39d6caa48c5e472772f0e34f9d1af40c70e1c222754419c432996a8848f5a04a668706caa23d45952d88455b4d5df7d47c3cc5a1e2360bdcd8f3cde5043ca05116dcf761f9d24a00cc21ceb53cb0fe901811b519ebb6230825d3de90e69fb58dbe6b10d32c24dcbc782511ab29334872e121f4373d24a1c8461e1a946fbe978c41c563078563f5e0047b707a7f7e75d096e443fac749937e040dc51c22e39cde67c9221d2874374db4b490279b47992bdd400b6696cc2bcb5eaf227fe3f058f2dd0932991c1fb6335da16315a605a81c25e24594a75374b502524651d626a38c64cfcc61c988bb19f6722ad29e8c712f5b4006cb3aa9fb5841a6d566b4e938df285bc80640455552a653ea84f6dc45ae73d6d003ae864b27b710a6a27c63a304ffbc1883c891d0dc2c715eada9465b3608802d9bc9b48c8db45c95a90519aaf7597b185bb0ef848f19069e53da63fcb050444bce6793c5a6107a6ed58d5544ff80f0e0cbac4dc1e2f3843be491b5624519530b733d494ee00fe58d8c0b50c185833d319f4a19c0f61aa0b819ad49ed76a9d520becb5f52dd0bed33717e15904d33b7644ef2bba161cb0770561c99a1d69159e392f409b3c4f9abbfa9c96c83314d10d5f8f260277e1623cd0eded6eedb7b5893f4c1f4c0e3add0a510e56fdedee409fc45515c0c6880f80d1a70073c7772e1184588824b0907a8a1501f58f3c115aa4ce53f1567bfaac9aaf8d27305736f1038b4581a39ceee9732c7c88ea7b95f100390f7e3041a740d68d9195619860b7dbf40fe4520b7f7f41225b5878a505829b7a3bb2ab3a302cf71ed7358f349f2dfd11193850ed612643836d3e6f805b448b2c2f2690813ada02daaa8886030f7c5f6f1ecaa6de7b2b966eca1024b3619e0ae20209caf56deaac954a82aadd169aa9d1b4a1303b413b22288af409130e049d4fad83cd06c5ea130f1d9ad89bf51690a42d0452bbf3994f97797ead5c581d77fdb8939b2bb12539fd1a5e223da78afdebdd7c59604be36a7ce8097b7f86bfe7e316412c1919280eb074257a9354d59b59f246d528f7098a95143f325492686f3f38682843ef79e36700f40940edb008649422c141672a98a5f908f2470b1d223933e4a6a94a37176dcefe505d448efb8041cc7628534a8beb1b0c86b34d0a127f2066b068e8dbc14c3369edf01e3692ccc57507f3fcabe035a7df185a1484499714dca447c416b76f65ebaf3a165dce30b7c7cd84c2fb07c33fd63db3a2f2336433ba69e488d307582ec5597fededcb6f319f6cb75436d280c541793fe60049a1f1d21c052739b5562d22fe20781ea104601c6b208b8aa021e340e5cc73ffe4d1905d7b3f61727f4d4c122c1e06b070441e516efb5e6b17c9b8fc09b1cf19db3e0a89e073fe4a73c2c3c1fc94023baaa1a260569be38b533d82819d63f9f89b8f7feffc2655c90b263b69c9eaa75c5a1e13a8f9fa55b85ecbcb5499ddca96283d39cc10bfd74c2f7ad3af1865f6ef31c6c0c39407fb19761a75108d7103ce003cd03564d000d7536ab93b82750730df3a2bca4f15921efe2226c9043b84ff32a59dff009c78dc8d06784e44fed63b5f08e653276e13fb21938cb0eb19148adcc04dc17a624a5c3e547c59a0f2a202bbd7c8615fd9a4dfd001b9435c080f0a982b80aab913bfb3ba87009863ac3b09fa432a04ae5cd27139a763570d29b9adbaea9768e182d6ad3b9348946694df82f820e52b77f55e1f1e2833ec319907ad65bfd16d1c2ea89c18c2e8d0718ce16538fbf1795b74d112b7393a949ae035d646897802dc4ed116a43ff010c04c13878b07796698247ce6738db6eb30abd2d08c1983bfe6164d16fc0480f66d7fee4b7ba1a3b66f4759ed8524ce2744a3da002473a8a192c48c734f88245c4d679fe148e1289e15d815df6b783d5d99bad00020c9a4dade118817a156dcb3bdcaeef90f5b120753034448be0c0b26f2fca3615f10021c9c1d573159476eb377ddcfdb5d21f86b7a29d95c946fd961ff64944330147f8b4afcb82fc7aa875965b422618ce0e98a16eea12947bc5db3eb318f18056694e35da764868c34be85d2a89b795c7779b667fc9a4b7c07d7accbcc5999bafa6c565218f1cf4f14def1b9ae7ff240900e78bdfe7be63749a0b639b631e56e0b0f4c163443cf0b0ad317c788c91fcb96ccc67c5cfa766be2fb3715c4e29f2e393338f8b2b42a4c233e5b8d565dd18b5e21fed299a11626f930f643951d2c530b27e4029f239006b343cd649a07e77ca73c87eaea43b17ff94ee2f7342b83f23618961f547b64616859b2f3fc5e951bab9198423c1df003515b924c60a6c67f1a59428d7be23dee3078bb7ff148320ea7de69b3149dc75f29bd113f8f57bfe3427155f1bdc3414e673a9610a2dc2b1d0cc27bf0c8fed465d29dc7ad0ef6d87bc90f7ab6d815edfa18b5ddadf6432a1da0e0e7569cc0fc1d04a709204d8ae1493bbc1d5adb4a18fe2624f8b773a8fdf0a4e40fdbcab780385ea495128775d2679e8df4664c80f703c855febbbeb773ea31553f33b13e3a2aa0bf53b21ddd65e0d350a26b5f23b47a9a689bb84ca67acd4ebb9c116363723f3ced2e26ab69d08dd95e6cfec5cc934c3e68d61b08125284862f25944b219e44bbb3013e9a8180d94a375513ed7fb56631caddcd980098d879875ce669a94dde0acd8d186be0ffa01cbb30b1253c89823344e055f0fc7f2618f70be084f2b01242b6516d6d02912408d86f8d90dc7c9939a1064767cf947417bc64fd7f84bc1c8e3ca60defa4767c3a9402e92928ca82d8abb983a996b46386e97e654cd9745ec5066694580c38514a59b2cf2768455d30e82aeba7e15f3a64a507071c7dc343a55cda77d2126330e67501c5e48e2ec53120d847b6c61ac3b3a7a388da12af9d0b4522d34a88ddd4f410e9fe88dc17f01dddcba7170b00ec839b03b07ec4d91cab337e04c10b81131bd35df6a375da0abd6f7ab84a6fb1b00ef33bd8d5723f3433070d8b2864e02b872fa0b3bfcf7af1dfbcbf305445a6706ea11ac691ec1e4b56c25be748290908cf7cb65bb6114c664b0d8615cb4f036d4dfe3e8ba7fe06eb28c8e2012f02c8e42ef6d5eba3de7b270fc2fd7ce1fea17d47e634d3881adf88f866c1710b56db853515f6390e39805df3970feef2d3145ead78c4ac824c007facc5c8e78356cb029e33922a90da56ec24370dba4559e9deba5e837295811ade085cb1b395565c3f0a72b4237fc312a731b80aa4964abe49f36025f864ed78d7447335ea7ce5f1164d390353e13647f2fa96b273ca1967d8df304ed48c7fd0d8f1a9ac5c0774e2003a94702d3ba5f6c1ecbd3ab7351128d727fe143dd054260fea7f761299b86cf82678b1cb86c765815400f9ff2318c1d4b6054723e038074e2ce7b89414381f36586482760d350d82c39bfd96d3a831cd35295439f7bfdf94dbe9a0b073c00478a907c0386157f06c2c88b4f6f71249bc34c0ab48bf734cbc4ed01cebc3171e779a3328b6473beda6f2806121d229e374f4b6ac507ec6dd2b42d089323a844b48009303ee8678c2722173d6ef6623a55fc14649e9062e8bc40ff5cd51e5ce7962fa5d246989617089379e1674451b5d246482ee0f308d9a949eec5a4f73435d3da7d37cfc19247d0ef31a3fe4244946e23a81fe3f912b3c6b98889e982efb8e859aeb3969b55f860d0c84872e464ecadf5fc510c2f7335f2effd50f38179aec3d12328ddf6166ca24e633717b98086e071ea07e4b41cbe9612960f7eca5028fa6d9f76655666290453ef079792663ff66fb095cbcc0c9e7f2fb77369cc8c5951cfb34c36f60e20b607df6848e1195f1320178e41a167720b8314226a8f756404a314cd27299b192b557fe53e1e5bb9b73bd0d2cbd2fc903a4a546885893c38106321dbcff6c5f9c6a21365695f63ba098fe1e4475437f111faa0720fd604f8cdd7824460a9103c5ab079b78600bd6f87840779f1f697aab21db4180aa8e1d83c5df9ac4fc362421bdb5376024072da88970856cc34eee7a2eacc746ffc4c7b5302b837b879ebec767aadc84de9475e22a26ba5c7ee4cbaa29e7a6f762dbded12ec8971acc1166e1b6b13ce0a1faad4c2f788204b4a002ddd16033f6ede6084cdd63728f1ac0b2e53f47efc0b645a6ef8914e631709385d712cbb63aea87255367e14c2673c9967734a4b21723acef325d7fc620b2cd68f0fd884d5bacbf59a6fae3daa0de8d9f3a0ff1137d39be0a9b11b2077d2b571b9a077be4c81c8c389d135fd2917abdf6938af75a3c0bf40fd0b2e2500dc5fb3700817d8e7cfc53b2e19b0d72568b23ecce21429859b1d345be382711f933dcd961a2be92a7fb11f39f941eccc6b739ed04584ce55c7fcd938a4ad6e4819fc4fe1fc8d274411231fa751a791353ad170c818973abe3ac501ca420ab860a037f232fc71eb0a021fc0116a6136edda16dfdeb30eeb118e35213ea0a34fd0eec86ae2ace5761dda74067721dd9ef831373ee3abe6cdfedf79ef4820a33d709e40ba317fc66a460b4c84a079658cd7403944db28416539717bb35cbe8209296ce7d2af8f5b1f4d938a82bbea8cf93a8c5b413f147b8ab7016e16006c4cfead0d08743490a928249647b59dbae04493d435781ff45e7e92849c97cfb4c6fff596e20ffbf353487c1577be2b4ae79e075888ddf2a9bf91eaa93870c5aba3846b3334b91d8b2162b8215a042c3f155f20ee0f86220584c87c34502079e0ac9848d2c02e8c763b9bd6296316020691e9ed48850ea624204797faa0cbd73f556463e83c8673058e2a00e6230062baaf8366eceba87776f3a23cc1f2998051a13e91032d184ecf360d07fa8dc0616c680a8ffc6e396027ed83473f320cda683242aee93ba5b360fc6472395f7851435993dc2fe828406c5828ab75e790dbb5b848f65e20c724b7929a780d8308dd4ad4afec29ab83a0d9702a0d4d3a951636c2280294542dbb9eca77435cfff7772040d46f35e29312b504098512290eee08f5b992b76f72c447f41b5762eafb4c4bb65cb0a2b0489565940f6cb1769abe53019678d058682b5959e1cf037d3002d3623af1e52f548b78a4e2f99b912bea9fc178b6f19ddcd31098bf479555383cf040c1fc40b7e64842dd9809f06ee1d2ef5ab54f5d4bd4ed1def4bfd70e072a8b3f2653bacb902270ac5c325978d9cdff00469bc58ebf22e44f0ac79c6427b6de9caeff0e0bf3c9582b58252ef8919401de4026ff00bb906b4c6997da12fd10519df34fac95de611a2d733325540698bcd61d79998dd7d1612279d5aaa605c7196edbb6de792bd6b597acbfbc00c42000d1712639131654706e37562b9ce6c94ff82cd3562f72c80402b5201cce40b5ac955b2c12507b845e396bac9f26e83ead70e2df9fb8cd6531fae22eb586bc12813bd06a1fde1206fe442ee5017dfa193c7475ce733fb9175783430e82355c0c0273eb9bd41e129b8cc29d21f209223b872bf7a94c84f67462a36a5f8a3acbfada3a570595d0ed4f35909478f702937b0a3c1675b2ec7072b7b4c0c4ceb79d916ab5021eb6a64bcabf1b6afd4d6e6816dc9a5b4bfed5cc5f69c951526f97e0a64ecab573ae45bb97b9c4316597d56bf223b142cefa51890c2aec9951bd0425d8aa4449019722370f94984234594f52bc7b0f949b9a07b230324edb200c2347742d6220813712501d3f93205064346d936080da81d9ef19e90bcdab1f6eab3e733e9f376edb470fcb0ee357d027cd757db5d6c4cff31a513dfae319604ccf65d371118337dce11b140c65a4dd1518a1cc0e171fb4fcd7968a5d5024a5ec864c4607d873682c20b23ccc568ea57de486ac362d99fc0deea5949250ad3981386844c8847bc81fc0228f95252805ed247fe50abc22e934961eeafca16a4dbd81e70b170480a9ec3b031c6de682f27f0eb7df29c80da39698d59812989a3c21382c35d883b306868cce18e3a3089e8b0068d640a70bf573ab69a21a2cfd0524833ba995e8e586d597804abb7ec982a5aa7d5f5f492883a8d25fbf64aa4a647160ed8bec81610055007a800beb0badbcf10e120b8aecf8f4fe29e900ad1c1f24c460ef1246ae11294888e4c814d597b16cfbe8261e2e8a59b02f285af9f0a77924751a44c4b3cb10f52bb86555a8cf171759b109e42898e71484fcdf3530d8e03db80c3fe79116b250acc147fa8cc27285d8a571880310413dddce7977b1e186f53d00110e0400c613f77e62ffde2250d52521e5f6e64dfb514419fb2452523a5dbf1fa3f1bc2b501f8337b071042172cb6a7c0c616dc1eebd2e12357b9368d87132c6328440c84cb89ffa56d63382b14c48506b9a136e13382fb909dc10848d091861bfdcc9f66773660d5e24a4fc070b1f041d74066a8681297115d754c30fe802e965b9dfe2c9cad32868e17f23136879d040aa6c3e058287f00455dd53a4cd294b452631e503dc0a540624635663e407582c0f517455031ba955168c29f2abf7aff3b4f063460cdd110e7306f82e45be825c1218f12397776aefe1010c774a8518093a8829551b1bb7301ac8fd1912eeee3e00d35e9fcf9fb8c3576145f1ba865449ceed8bf9d3a48afc067e18fb04982a12e6297b33c689aa510b1e4615451a0960ae11962273e8e777cb2bfa17da5299489dc48e1633465b1dbd1799a6d0eeee5180aa5d0a705ba8df126455827fff4a26a034fd6da82946a71074c526ac12765200527c1457d014b9363b30ff544c5ab1a1a0d1fbea4f0f56ed0947c0dd85fa6d4dfad658c1ebc4f4770f7ddb532b27233508f1100d6df93c5c91ffbf16515dc47d372e6858deb1b6aaffdfc4718da3ee8b76e6b810f80e9cab9789f04ea08dc47405819db1f43c466e51f2da8ec50d61daa7b30c4ca6853bf9fd543673fda5372a98589c8c96ea44a74208b50d461344b407587fa73dc2fe11465b561c6a2961d998d7957ac59c448cf68a8136974d10c46b4825b436b81a68c79704053b13bfc749860a3ce45be6aa962f2fba67a4b1440bde96a5808016f73cac32453bb32fa0a01addd8e838ff72add2def902d82b49d3d057fd8c2e6eb414ac979eea57dfa6cfa75daf3103e566842e8ba7dda19498ac4979e04789e37aae54ec463438a888ded0c7ca7e6d686158594a448852c4efed12ca4769d28c58940093a11256da174f5ea46f04ce336a2b100e7276e59d0b12f931cbbabbe2b7d7cf3d4136e8ba9265f83982fb3abc7dc19be840a1b10b7d1542219e05253696acf0e63a89a2973d8b4bbc7970191de0f5c5c0eb074ece4b52c7f392dec2008f4b8087f98ce746c2c2eaffc4de5d27fa62062c79e5aae8cc654d83431c709533ab1f72434121ece9de369f16afb97488a922a7447f78cce77ff289c5ea9cd582998495891e11184fb22751b587c628d1409d16deae38d96d1ebb0025e8e0a07724cd8068a60f2038543f42710c6b98b84349ba3a42fef78f82b35da440011b3071f0047545fe03569822eb0d93e471692f94a0d99ad752146cb7d97980af188edae63cf82467d6ba33f177612f2b610e5251157604f888e259c7a3935209683a6ddb872e9f09c7ba25b2f882f9bed9a93fc2b34ac51058b86b1393b11f447d608a9322cf47ebc31f012f76e275307df2f8fe07cd4519a0e0ecacf1647147dee3b112c4bb99954179f668a792fc80db829948467085d0ac966961fefc7e639dd16096513d91b25f64952fb17d9a739d49a86183ac96de56b69657eabb5e3e448e69d0e2a84f1f974b1364ff6822f298d38529309d288020cf1f14a6c924bac881b4a84a4702299e0a4adbcbcd8f0344dada994dd123502f9d255aa2145d9244f7116cf93ed6b1943a793cc7990a7bceca79c55fbf216765a7b7399865cf3e4fbc13a0c97302cdad333aa1394d2459affbe44eab08f0613392e75a2b3560151a0321c2321f2bee5878386fcea6dae7691c05cb7c46d21fce2c5a143175035ab24e8cf520a4c72c37fb48cdf392ee07e688b1cfe1e6e800f70fc4380b92a0e33604b74ad1554a58b73cc7f945d4c705b89df9ba854a2bc56a2203830bca0849bc1601e802e1a90c96e0bfb85eadc42a897d0a78148c2663654b172d3ae5d94e5a74e367ab24aae2541385dc415b51d5b66e806bd4c9544f7fec326146041073d36f3c8fc402b53f271e0231dd14e051f8d3a6996879563045d9a849552ed020765d4e724a48abc97a4f6dc744aca9375614016c60c95894b239ebeb591409853a8d92b66b8138e701f742ac334b2e2dbccb84861c4154ae9a91ba6b3fd4d5b1c284673df9f6f68648f0b4bf68e67f330a0ec96a99436981d35b39d8292b1b113f32d92bc3bb1b7a44678beaa6724e605edb03aea86fe258dd1795d5f51f55830760fd0492f981f9585a626e89455d441a3eed8711ce2dd05cd0c372647c06b48e141e2d179ac0e13665c80704989732af79a9b07b5dacd3e705914f1cb0820978dd04d8fb7a4684d2577cf04646f6435ac60bcd182ac1d0ad0ba4c023e2daf12ce2606baa87610d327d8f72b8d475746964141457951717b9479fec7398600c2ebf0ae7c7668d59e31e58b5c9d2eacc71ec0eb98dcd6d0bb4d1ba7574d3ff7501e0d95d085d5d5ddaabf626b30d23b215c521930d30d5de946974c568f668aabf83120a083b17a0ecb514388e5797768256d1ec273638675f801afa0158666c3bb141ebda00d996de495ae4dc430329c247a05e06d0f24ecd92bc610ef0f0ab0734cc5ed44da43ebdc66a87c75e9641fc47f5647849b45c592d61b45ee7dbf19f0fc0fc4ffd46de8f19da700ca641ce5c7e3358a19689d85d442e1516ccd0228edb1b9a064b7650efdeeff3eeacdab5a6d52d7462a87e40e45fcbfa404952ebdd2ea78b61168773604a33a655ee55da95ef27eb74109b8798c09bf8f8a4c71de05b90e3bd8bc0014e753b6106cbf96673bf8ca0b3de497ab0836140275a767cef439f9d169dc8ee32f4c4cdce17ebdd84aeab4c976711ffe9c47656471885b47947f3410bd24544b17cb84dfbd6e4f6047bf79d7050f60b2a49f6c0afa6d948980d112b3c8f443fe52c94c90684ec4796a38ac3093a6acd8a4b0d919a8d6bdc18706efe627cd8a4b930fd5bcc3812fe4d4eb34d6f95b16db5ab3d3eb4319cdff3179f0e9eaa9efaedc0b3e4fa1a2ac3e7f82dc57c58bb622085b11fcc39268b9ccca2b8057691f69973861f74dc88d3054d69f54c769286e450478079d40facf5424c64427cbfe572c74114eb041d905a0e77d5a299e4c62fe6b870c0e7748f34e8700ae30a55d8d825a684da69db6ddf719375c6c0a889a583531847e56bcafb4f71bd06a88c33d677fa46c8d95644ab4beef2597827f6d39fc3fbc7e16f3b6f519b3b813bddd2c4dcd2a7d57622abf5a52f2f389e6167c29300639e835d88476f84367a6308fcc9ae0961a5e5119f1d308e3f02b7816d35ab9f016f560faf83173731123bed301fad665b5431ffb080d09796a713880f9ca08ebbda381b99fe204ef09dc04c305f388767ba11ea5d1c04899c80877a343ce1ca0df0e1eceae8544e1f53e45b21b69739c48a8941b709cac1b028bf56db3ac3bcb65b6e37cb6f4970880b67b349315ab01cdeb485e3b09a7d88b1e5fed61eac77c6fab7a30e3cf2ad2ac37d1d107ea490c09b5671b5c5d97b2b7afb8d2768be6b7dba7114003a5ab86b2c95235e102f52d9ae0ce939f5e41ae74599484b03ed02107b0a1d1d11f07cc7ca9967879a25de633cc797228323093d914636b11d9d35360c3247158b09388e99ab70303d8b7de9cae7850c9bdda7b9aeee43b263a44eca51f2af217848cd3b3626044fe630f65146cb2e8ff9dc62aff6a3b066b1af079b2aaae4a01370781e2b4c4140bef4c06e4d348f9087ce652cac8961ded63aa3f8565ab8e0baec23dda197c62c1b42d9feefc5bcf92ae0f53a6e50ba483ef10262aef591162ed32ff9786a79f003da9f609f2cc50ed4183e8e61851775c878638905fb411b0722d1b3bb0bf1f80003812a2f78a6e3a64e6a47a15c1b4e12975633bdf5f2e77543472fcb05ea67c162b31136efbaa963cbaeb0a9ff8968df74478d71a900b70c4eb7f51d210997994d1a8174df2038012403bc03024020472ce07a07f338a7dc6deee440cc25b296e5ebe4bfe77426a8dda2793fc25c7512c85638bb47036078dc6cbe49b75f12fff3243c4a8a87ca206272c4fecdb0183bdcbb85dc3d76f96da8d1719b7918f4591e853cc6b09a7001662020ba845baa461fa1fea5fab58f74d942c01173db56ca743d20c7b4c4b02f98dd6eda42312adc25617923f13ff160b8c934fe1c9b17dff8729359be2c3902e22e3f7f28511ff4f32bf7e9c694f3d2d0d07896e56c6bd88d808d5b4c53e038b0b097b95e6a169da51128b001e6bc968c8586bdec4e3fbeea1973c680c5b9599a4b8235d568e75faeec133fddb822fa5ff36f42bc828be9b18ef62b94f110277cffbab8b088b477a3d380f9fd75aac5827588179c03e9d881c585ab0f9946f119135d6191e13329fd9ee9087ec4515b3a63f781a65a004dfe9e9eeffea625646cc2e75834cf187fef17118599db7ceed43b9874098d45986673c0d45185c1ffef806dc8812b56c49a2dcf65d670dd7c5bee67a2a8ac2cf70300cbea4569e6352ee2b12843bf9704d8a0ab91e40d08725193af786b5877e9a1aeaaf7c50b6e3a3dced8986ae371aa4f07dfbd59774dece19eda2c7dbd8d7a74878b77acc96f63343f98bce91d71a31ef74e1677437be747d87741696541ecb94f368fc3516f2c2e5e0a75ef621abff198c9331ffa8db13a1970617fe7fec600dc1cae0bd9bb458fe37276c3a17bc3fa6947b9969561a97824d8bcd67c35655ac497173e67669b6a2734e60daa192c7851de276a6fa8cc2eb5c767fe85240cc6f77f7796f759e180861dc23b1e30fc9fb9d1071d09ff79704e12e1075197238e350b27ab3ebb37e5f45f9bff6ef28ec9553a2e2fd8be58461f1dbd6f928f55589cf49168f5cbca2876607496386e7ffe5cfbccb0b2866c40272e5af0ec06543a6e1aa3efe7cc5a423a4b669bdf0df93d3a52f8001e5eb448a5db789692c04593ef5350497d7b5f091ddbe94ec06ce488878e0b39b21ef074b7b088ece8dcb35b71c9943bdd6c0ed4051cb46f1fd6ec149fd9a32edca0eec483d5cc77e182db6d0e38c7ce0db053445f223e1cb11dfe5696e5106f697d10473373035a0d19a1d758b74d5c18e8775d99b23afd45e24766d6601931bf3f78c5505e144899605d3ee81c9671baa881a5f5f438b3d45e1b86772bbe8037b3380d5c2d5337b7e352d5daac71c21a78bf8b1beb1e3c9e17a0e58adacab9dfebfe16bcda8a2935c8b3dfc14fdd5f9c649540ca65d0899b1f1bac1160c38486592aec043463c851c8d16fcb93ef567a42dcbc2d43118426123a856ad358d42638c53258b5180d8d4e4460d7bd1a7c60be0c9a506fb2e0620e38aecdcd6cece619435f0edfd0ff6604ad9048d7de6615dd14ccd1d9e855bd29b9db2370e347d5ada4dd924e8a3f9f92e1ade2edf940b63c78dcb5aecd6e5e1a743294877ea14cdf2e0af4d1bef1e221342175e9212c7d672bee3a514eb2477d1824d228f7767549d82e9d1adb67129dba00febce51fd736f5159705049cd938107e0fb969adab7eadc8f7915e266b395cc6a811c7efdbfc447c6ceb8757ec06f6a4fc71d4724d03a72567185ec4d8416adf25a7ccb8d61317d73b434d4ee11919c1338ec6ca035dbd1af81e74bb8e88f8a87335c899aba62697bd86cb52ac32159010e153e88c2c0993750b612d34b7861b48ad98aa2729f1746b7b4c08b92181de349ecbe388647bfdfa40917bb2173c50a7c28321c67728cebcae93fadd1e6f78acfcbc9018e9c5d45d1caae6e6205850dc1da057b768bf1601f6830caa1526b4b89ad6a39aecf0dc08ebf6ca4c344036d1d81571897b18e4863cfd68f34f8b5fe29a3dbd0ff92064e27c5111d98e30f75b1a54cb0c0477137080892dbfc753136cacc3243bfb1ad4ca14c6dc91db3ab1ed1af2e51c13ab8ea8f4050a3c975942c2e68eab0ea2c0962a3aea535ca4f4c4c36e088096b4f7ad605342874da432fffa6d096ef3841aaad922d5148c7fa4ee13ae18bdc8e9ceac119e1157c9cc68aadbb58ca71519290b065810c12d4fcd89b3c10837b65880d90ad3bac577b2daaea40eb7c43aeeac797740517a16d8be800df14411ffded04dbc4543e29eb0efa4c107de32a42b33c377cfbf2fe1701c269ef9da98dc5486c63da8afddbcd32b2f14859b8abdf1a278ef4460dd9afbbd197497fa7ff038923b791efa9f0b83939605186a15c8e62cff4ca68af650b551d5f51089f1b3a074a04a7473efa563f9d0975243caac18d8c2c735e378817adea9ed4f2770dae2556d09852d819de30bddd5bbfd48a39a812dfa5a0a878a1bb68c63c19bcc6b70e93e7d9308bb6377b3c033c77e965fd2153523f2691b0969ac88b34efca1dd0e6c06b745da26e66145ba360862e30675662268788ba830f8d5f12a16fb0a776e03ecf085aa7d5045d2b79220846bd5b4eee0b258b5373945b8756ffe2a657e27d26b4b0606e265ffae738e011a4b202812003fbea42ebbf57166f9f847f0c1b9fd15e6282120a30c95ce7c36a87cf9bf9cd0a0cca23877aeb49db4eb0b1c4c371dddf9d223c8137581a2d5165d5482bed5da4f81fcfbe82d03cf97bd798cc74815a658e0c20796f328a9e1640bbc4f8a9622315b959929e7377430ac82e905840de5bec47d4d4d63a5d0fb88ab79f395c4ace578f4f8d22b5bf9193f8f96d13652efacd468eec3554346ea122c2ae89a21aca7cbd095f206e8f7eaf821a89c3ece13b587ce7d9daee0283ebedf59ec7116833fe65428051ea01dd4537861d7c0328570dae99aa4db50b6a994337da14fe03fb87b2a543998167369a501ecdda7aca9a6a0cf4165c5f33ddfff4adec0d3a181b6ed4e34aa80525c039d9a2dc293d9e20f63722732cb1373e98c23a27ef0a2acdc13e8b8d6c92e96daf6d3410c5157e8d809a4813a2949183ccf6bae5c586b4b63f4e0197a9c91f1bfc477037005230820ce4e517bc7686b1aeaccdc856cf20c823a58e514ce960d342130de00a4e1bf90d08f6cc9c4d9c38a15c41d39dec6889485216a7dda3b00c7cbc4fa020ff92c507590d587b6fdccf19b4d42a096ce963ede25840121883b05ed2c57962a44f161aee5546654d90747a324c86395a462ed799f284bee7c9842ab47e1f401adaf361ceef47b39c3b59b17dfd773e53baafa9f4516b030c52d50eb4ee871d12cd534abc7a5d584774420083ea1011e3e289f5dc24a5bf2552ba37b68caa322cc50e3dde3b3ad5037a3811d2b6811c1e1abab1f30adf35845055c40053cec1a91c0ca1525134cb654a90ab00658c268f1ef1e44e994350398177df66e70d18f1c071f39931281c560083c6538f5b43b6f4f21cf057d14a7837b659f054ea7c275b1b39967ea98b531a1231f791fb6faee492fbc46481bab309bbfc59b529b0445b53cfd5cf5f231492ca0f66b0b6573c33d3267e44c214a702f4a93fc56b4df70bd41dc04e09d4ced2b3277c786b29d9a3124d5cef9b40467dc6441b7ef570dd926e004aaa70d92eb50bd8f18671a947f6f5096ceb303d54ac197504a8b4c99662bcf1bb93d9d2605328a1a000f26ed1a42f149d34ad2af2b62eb6a86961195d53c22265f2b1e0482cd92dbb036489eca6ecd9b4da9002d49e395d4aaee0c02692641f3544810c9df602e0030c61af7d8b104fe0247f14bbc8fa407406807534ed61f5f955cedb3e30974f4c118c65dff04ec355824a75e5564208a99da0edf8e4654a539929ad4ab3fcd399fe0031ec286ab6714c1a05015f5a609b07cc7fca9a89af48a766e9ea59bb51391d49427a1ec69f2099826f98b4b4715751ecb5e1d8320f9d6ef245318da827a0750e7ab66d6c0798c54d16304ff084c2160932726b0c01e08b858b4549183312593898ba879dd4ac591cbdb51a4bdcc2ebec6f5d5e984f5a29e45dfb41b3664aae57e46f63fffdf040d8d8882d414e085b73d22e1e1938021e4e5bfbc4c452428975e8cfa38d5bd15669ec68937a2dd61f4b64b0d58f8809f56282225e995b8c2caba279b17e9f25898729da7065118beb4194a4030ae364e0fd0d46e7b9134ad091e4783a21cac6c74426be7083624a5d56fa2a2588f47418b76a88743a4dfc6c1fa41f4d49b12ee42902c359f249b4aa8da20790444f2d606306a56bb3ec4fd5b39b97bb3c3904a489ab79fcedd79d2be40ea40c9b130bc8412e14a1541ac557c0c34fc42c035baa0fe41c2bd592a0be8a3e970d9ad203caa5317f509d4c4d30b028ec91aac1ff083fc0549fa86b724f7e03857d17155df3592205620eb9e433e8e2e2087d69b97079e24474a82aa054d9537343027898f6dabb5b0e75a8db62e313fabf291f5fcf81f45279242cffc94dd99d131e91be46864e0e6037ead4bf52e80c7d7065c873bdd177a3b2b4f229e7ac2a0412e9a417e73f9de6307c2ae04b0888da10ac05c3bdb385792c027324cf60ae27851885a2740e70e9ad76ccdd15566ce984af67d0e19bdded4349fdabc5cf08919bc6bcf6a4564cd883127beac28159be3f570bbd9e6c89d17a703cc0973aac317664fc0c1534efbea685400c1773549ee41de9a15514f0129266f9f31ea0c44931672d597b8278432a69aa647042a8940a468afd277403c2619be84806cf9336f4770918acf895be2994fcc519e5e3e1954bb2d5e9e4f9cf08f3b461b0032081a29efa0a4b4850ed13b002af5c58735f4ca5ebb540964a95e02c4446c43f8ed26e22f04c3f8c35644713df752ddd9586a20e44fe1a8a831c637c03daa9d7c5846351f81c22aa23b17421cc8e7c4a73abb00093a8260c9fc776f7dad0168b0e18d6dd51b538cac3fa47f8da3cd46ab48e3bd02a33f5ce005e607c16b10068c70d40a8e7bbceb4077edb158f0de4f54b9606edb01a432ac881951b710c42fe8d2102d6de2e642afc69268ac15076d2acf52eaca7029ed0c099a1d71d4b6e2c42333e35b1d8ea5ae21fd12669203d76f9d6e00e16ece4bbd540153c2abeda22bbbce8ad26a2d1f37023700cfaa6ddfd9756e6703663d049c1620e429380834435fdfaa1d93db2a318dddcfbd92dc96ea09cd7cae206a1d71a0d20c75293b64f335867140545909d62ab7222bec32ebd3e27d19d34fe568c8714675759303f244d96fdd9bf3c9357a9e6f6e335be11d38038bf9f7b3a9d2fdb2fd34c8c2fa9c4344647627e09e61c41852358e3a425c1d9367e6150a09b0bb7071605e1dbb5227d88a1d7295f4d87c8f9c1971a3e2480ad65f75c1768aed8cbb5969f42101aadda183270ba5b2c6b99d999302f32fcfad32ed961ac45d300a2f62368fc2925d42e4a8e21b49cecd51c23d5256ceba9d3eb64757ba2cf02bc8685c16b34bcd9d3e554abb99a38579911786a70a6e74a6557cc381143ba2c3f9f6d8a67787be5d52ac1667d201e1ea4536454a3ae0a55a12112252202d1bc85b383b0f83afc3c94cf899401e49a8d503df450e9fbc42dc8fe37c720906da8adf3b00300e6012ffe277794565465bf88c82f82d60b247449b24e66bdcad85f098419cd21fee123e90f22e95de1c36242fc8d5bc2cc3047895b9b9d2d2033963ac0d0951fc8330cfc1528bf2dc5fd31cc383b9f91e0ce7974a556314a5a6511701073c3fe61b03a2c644ecbd45ef13c4078a4e8cd8d550335d95d7d3222fefcb70f57193d3993f1b11bb0ef9188e89e198bb7b2c6b801d096086c208a46536ab3d391cd6fa13e67a61116ac9bf6a9cca3c204d5ef39e4af5cbcf7a14410fd2bffb0ffa08a40da63e6acf707d7291c7a9402dd0d1d33a7484263b499877e76818f738831b2b03177d36ce503f28fdf7ec3588a3ed4e7ab89998b910a98ad94b72b6df7d6f3ddd77b98762381e060aaa65ec6f19f9eeaa72191c4cba4b45d72e6de4125ad5f627bbdb2eefc832fd0cc47810770c45739b3839a2d24c32f31d6335601ee9bd65fff37a6c7724c4fc2c8822ba39b2987930b4b161d0a0c26abe0bf886327f697f7bf1add05320c344a3a3e5db734155925aef03c3102abbb919a9ba6cd0e554b536e3e63a81fd0a9d6387160f8fc0c7f31bcfb6ef78af8561ff8b63b86eccc9ccf333d6498eeacec7a499e1fcfd11da730a100d544a40910bb97814d354425238c16fb0e203254fe343d5150aa00b86fcbf77a246db94402164fa4c36c4d589cc29e48ee4d1b6295877b98e5cb068a00de00636360ff53002556b189f145a3372a6c90dc0b51ee4549bbd8dbc1eccc21e2490e5faf6c8b1572189b7d3822ff62ef339461df02da1769e1ea303ac1b3887f57c019773952cc091931d8cbae141c23b5f559af9f7d89e992260d1a42b84c2463f517bbdf591450d0adf6405791a8cfc7ff36788316f60ba30c8af8e313914fc62801a208288281b279686790ec073e7f5806a101fec82e236a04496ba908ff64929614efe3f5672d7fbc7c6a95366d4f25d76ea84c09d0d0cb2657cfcebd4c3aa05c828c3a53da86e27109a4427eaa4e52306c4d0029336df13c1f73ec4782ede4e0083b49ef264ce23961e9ae8e36758af4eeaf597f02ef58ead54abd09d10c98517e85267ab4c02b564c587367afd6ef0192ba632b29ccb499875e1aeeab8cdb773cd8787e6639b4b9df839b2d03ec16c7e686de7edecb81014d2a3b543088231c91fb08764fe9ad73d618f62e68b4b1dd96ee63b4e71fbf92bf2734a04d24e865fd93a45c3e2b2358f2d5bfac65816836ba65b21903d6596775732247e0abad6319663c1d13caea3a5bbb20bc38c98daa4d172c2cb66b68ce57da86aa64392b790c7b45cc6d5d9349adc41e892d6a59b79fd5ba71261bff83cf73d27cda6bf34083eb2987507decacbe9faf7bf3b006aa5d1df10fdbb5bfc9ea9a806ba70f5a2e5e78e7d9bfb08d411706e4ddfbfd2bfb8e4fec3af4a3cde02c96dfcb92d33d96fc98c5fdbd690f8e1a9e07faf6b8c27437adb8d81630c93bbf3e9e33f173bb856f799c4988b074bcbaceb3ea4c9cb904f0c6212d2d363e148e269dccfd087fd32f0f6f7d0f88b08f198bdafdc31c0767dc283986b03c6646954c4770074cf89a7b1e4712c24e29b16bd3d866d99173465196dbada39782b9a3f3b14f8615012272ef8c3769e7cc3caf9ad82f67445f179baaac78f7959005202c0026e83cd3e02845878896810942d26806b3048b88e24e5fbfbb4c204e962e61eaaecd3b8ed0fd755c06c226d168dc1caa0e7c941b38d2079520b333cf5b15e21748f92de66415f2d43c1677fd1c683ec893366bd69349d01e2ca27c6f05f6ae79997a340f0f51b981380246d4f3077d86b562700bc0d082851a49be2ac08f37fbbfd33f99226fe8a717731c9a5050ffedb2408631927724dcaff78ad4b9fbfec22f627fd1ab5466f52f8eed67a0987b096f13bb7e81f3c33d4ccde10dd7af5906713805dddfb612ec703efe3eaf17b1ca11f15c1a14b3bda1cbc37c55bee9dfacf732bbb8f311fe21adbe6d8d0a0dfc2732a57a61ce6dd2157d51d5a5cd3449fa70377527364e9373d777f7106d26be7e7aa67f27b0f33488a8d40c69e09c524676b95c60a3b2f9407137ff1eb2e656962700704ab664809dfb649d0ff77dd2b4e0b4cf6f536c9f34793a97f30a216dfcd7f97420302ca4d0ed111ebc0162c5093bbe06d1c9c1d0b113752aeb608185966757e1b022938202d0dd0b5cb816291f4260f404242357a4ccd1f29483a3ff14aaa1a5c794ce07d6899479a33fe47e47def72467609d2806af355e217124ff3d034de46fec59532e91541edae065a061219e14d2652c1846831db9907b6472dcf0a463d2922c3f37b12363da09adc2c34c68add923a1d1971c23f44d2d95ad1cdd3bf94a739e5354ad069909a9e67cb75d7b4694e61cdd9a941fd7734c1e038893b1379778992fb673c20e56cf42a07a7efb9183c3e9834897b6c4a2415fa04771877b368d445e64294669c12a391332c9e2706dbc35b1ad00e622686276ddc733a6ad01efb35bedc12b99f12189601602cb2d8576e73b113cf3836265018650f8b27906d6b16a44703147033b608e584a09fb00668de85aea0ab5f3db13cfa298d35a4268bd09f5d6a91649019c007b9aac7436a049eaf9f8821becea84f3791ce31e1c8f7c27a72351a12016c1b5583b744401882d196fcb56a5ed462bae973bd09acb3bbf3cbdd0f2ff3dad778ed85c9a6fae97f695f2b086fad4f2f483041e34e56524d2f50a7e3e903512d83070986b0e16daa7863152807774c73e4753339eb8a648eba920f2f7edbfe7096bd1892ed496c531b7c733a0ce37f1c2b153a5168504c20c71324ff3517668e6572b30efd19fd8297e282ba6573217c2eff6f2a2fea06393b730cfa3cf3f5094f065d6bb8f5b9823656c0642184e0edd53e1955d5a1263e0836766cc67bcccca2647b395b9bbf5d5ef65046c04008f108561c766eae9f0159ddb8b5fa53e11f87ad11c6471f0c589e4f6ac4fec6dae11b96b28b55b84824e2075fb60c01dc8581fe5a51f416fe4e95cbc148bc134739999c2663cf437ae2c27fe37e1e98721ddf166dd1e442080fd2def35f4a243c7e4eb009059cf6c8b3eee8fce1af98aa5262595950e343917420c66bd9b2f60ab473e94c0f766166b290109dcdc3b19c339d72511157fa55ffe4b92372106e930ae0b47f1771be2377c665cf0df9758189fd400a906acc510a865c207b35c91e30b360956c633a14b6bb943d3dc2921f34be54d5e50bf65ca4681c5c227d1c2a6c3d5130e5015b10c80afe6f267c982fce47a089806bd78ca3c8a34fb8092a571a578cf5a52c01b08daa2f225322404470d86fe822ba566282642592b2a219c6ea42e2df9872eddc67e461886c1c085aa3c628a4c3c1f82d0122f30a09ee50e7ee61007845797d9604955162200ead2b5bf57cf0769bd7ae890c80ef760e15925cbf0fc43b3ee58bb072dd1a7560bf17e24558276aeddf06c4a11516f4991b071fa68610be17b551a145124a724e65d4c109d9f77ad3ec62b18c9bfadf0432245321af879636262a830a74aa7363011d8926465687fbedee01438c05994de2cb829842e7669d91c50b656b582992dd1bd9b9b3c62ad48372a38ea095ea8999d2629b4668c4f638c2d28073b86a242766d20958c2c0db5a314337a05833e13dc6da8fb5a505e40b11f3d6141df5b5888f8157774a18533daae63291c0f48448f02ffe7c9de4801ab03118350ca06a428e9376791674af24bf1352f810311b2e7d194424d8f94a8761b4873274c944a39984828d9a59da57dba2a166024d134a65534145ebd62aa0db3996b1467e6c5717f95f2b1007d04d37b042b10b69ac99b2d03408e0ca5ec29175b279146857d2ade5ed1ef99ac619ebeb310beb7b9a91031d778389840bd56f50d7a0738c3a5311f91df2ddf45bba79c456a200f40f560472d204811bec0c95c53c01ea9df8899ca51c94acc043f2a3962feca2d47f7948e85b3d614524d9ffe595015fd5ac8a900aa75aa080e1490f3f9b9660a1b74c4c7637c53ea9206b55241466102c3c04ab6a5c7f67a80dcc898cc3251a5aef279e69228c4874cd3d2fa2558ae4ecb24b3991b97d5610fde2e70a5fd19e1d6d10efd5b6b7cd355923957457c4b9248a4f6840f604092e9d1e2e821501e6661a505da97c3f1b1fb0a505b53ee251c967cf99c41d3a5c92226eb4a17803cd28e231f4993b70dd54ed5060357a0b38ac501c05f29d84cfd807e48f2477203038958224ca6f8ab313806b970d1313e7407f8f20400bd141e6dccca61fda6361e7fd46b442b61465b4c370a0cd8ff1df505e70b01557c1bc467aeafdd40e51165764a5921fda9b3a1fe30e81be052a26cb936d8947b5f4f5bd2b4befd617f8f3a76fb7b5d77ba46147f8c3730fa50fd77b2fb8e1612bb4ef502319d42366657b55bafb4d89f4d2e052afb2d553b5a2dada683b9e33bde8848bd0f343889ae2ed53b5058ad2e20c5e13520707c3aba56da686857efeb68cf0d4ae9b76fad0df2f8954f9b375f1908c3f4d1e1820a02aa2e0a2742a215131ccf22a944ef0961c00b41bf685a9d37842fe590e3ab513c787bb943ca704ac48c932f339ccee32d07d4c56dca7f330e6af355f50e8d55933fc63964fc2f39531d1d03f35495ab8ae1fa6be83b3f150e6f0d73a25d5e84daedabe622f6e8200e8c3e3a6c14637cee03ec7af458cde7043d20fbb4d180c0147697c7bb57b0c0c9322b1e553965a12b0c19b10ab20e5afa8ea6c892a0a0a60746b287e0a57e80ada268d959dffc270ef818bcd01c3108d33763d02bd9b61c9ade87f3adba5cb87245634d1f409f018e63a958a45d7758de4d4d39b8e520368eebb349ee0c3f73a86bcc6f4c7cc521c4fde9690fc06468e4c1568c8e99c79a47a11017f22d89175f1e995848d52ea797010dec29ab9ac3d141cc2cd5c1ed1cc165458134e0c289d349d44e28980504b2f6605f387e0fdfcc3c11f2282ade9c83fdf4bedc3a56f82aead2cf32b51ef607492f7cc7a4bb72a5733dc277970e2bfa1d53b00c68286fd952f7ca0ab60211a44033e39e4bfa23ef94c55cc1392294fc48655b9c3a498576a3250699c70afe41c3f2280396c76866fd7a90d07a888bc0bed05685a22cf7390782eaddfd446e91dcd88eb6d6ac0d24968e22f6803fab6c4828b01072428ed0fb8f82c075f8a4fc175ad6b3f27e5193f3f05f58af32ceb2f46858a7e498195a1ece76589e8f43e602b6160c0f51153cae5dbecfb04dd366ae07c6dccf3a753bfb27eecfcb2a2ee91251ca8476146e0eaf39e6f85e1748c7dfa439d69ae5311de675cff4e715e867cc49bcc38c2ce8711cdcabe7f26116bab164eddb55e76eb454075ec94ed0ef61385d96207e3fe0985d0762769d44768eacd17c246fbaff9a295f1b54fd13c84e8d95da0ad434f801f3822c7a2d29116955ed9d64efd8b97b920af36c946df9835322ad33a1179f9b7009c96f2a69b9d2667afa43ff9f236f3332bd996f81c6d7112fd4073a9fd116d67e8738e30a5c5645359056b6741e4b76fd98e881ca8de78ed2e8865ef2436e66bd224abc9c3fc5b7663b9f1c018165ad3b442c8887e16578756486de1d119592281070a5524470cadab7565980c22bb20fa0244991840ccdd65c25c3b161943379c7efaf25a847f8c43187b68bea302df878c4c4c8a56f2adf782845c565a318670d5a1afce7e22981d33f142d90f7a659ae84e3e91ff56a34eb076512e639f9f46ff58ec0486de5f11bb9f7dc092ebeb79de6a27e66abe33911cbf0b8c2d9495cd736dc9dac17ae2dc44750d7a6ea63e90ea0aedd915a06da27749935b8ee0596945e38ccaf78def649729fd01112a934db454df799c66df3eb0daa274f315b11d039fb6d5d0a2672977bd963ceb4572fc41592047f8c75ea55e55521d02e35e34ef876811ef59b6008cd930dd97ac71bd14eb32e909effef5bf4d16e00f4d46f1f67dbe95eef10be510d709299a4405760d500e7d8294ae2329b11a26eb4ff9b7c32f0265ee4b9598d883c1d19f8f98f90cff6b8608ddb4f3311897b9bfb50b83d7d9c022d596b1274780a83b91b5785608bb991224b2f43aa646ba436e8618e4b48dc78807434531bc4fade69dda0e7015be013f1c6ed8f183898ecc9b8c0fd1356064df2b7874c00d4a6765612b1992ca72ebea6922ee32d9188e58130a584fc39fed030b7c8d9a81d1f3ae3345824a6cead3c09ec0812bc7eef8b39de524ff391ca2b19b7561647de7a81716650ec4096f0f01658f56d90af7a4d23cb2feeeb8cd77c10afef34b536662a518fcaec9ea7062f78c6461f80b9d1839a6f71eb1506db5caccbb970b579ded5c759eea049d5f01b24426bccb27e9b141f6675918f9e4b7c050b38f7082d3979dc7cc8688f95d2b756e792c656f9ac8bfef543dab47e5872c8f37c135508d2f78d26ef75db2cb844ad09d84cea33b8494fc2bc9847a1d5ec7f2c6605f365b66b8e7041a261bfc04ead2e1d73e0071dbd3d4d706d0f5e6af33be6f368e1b0f6ffec377ee0d9eda38a027789f5cc180c4a8ec417554a18a01db20eab5027816bb7d9af11de3d4dd3251681be2d8703a301e579ef781a09edd33d5074b250b9830887d83dc957f15ae6f0afb81cef35d42cd10aed07097edfa4d03f727138d6b2a20784d53f4e5e4b026c361df9dfbb16051f4e65f309d01a0f8bcad9be46e83b42b232ccfcd26ed1b43d7daddb4bd3ea18c52ee6c52138277b696caf1d0b82d50bee19fd1668cca597c8ae79d91b7e0f3b8f76fd9c1052e3d7e7a578b17caefb64873f0b0337ef4f298ccd00a8e36c8cd57be305e0c44384f523b6fd5c4613ca9e5e7895f1dabf8b8e0159f00453e6e23b802df2af8fb88acfed4bbeb9524eb40b06a78d676689122267d56ce0e6b7b5d84e778d41f7b551c8c3421d705137de775d3963aef9c884e2506038745cb29d3184e7a1c483a10e6c347787fb9949133ef868f6f5e9218f321c38d2db6954ea7b996a6c95f6be432f298c0eb03f9df8fdf81431e4773fa53b8d6bc829931586c0c4d15dd67e4496bf43d5cd258596da39c83a54cf137b7683467b360f23e69ea2783a4a23204c40e56528758656b29473c5a4054281b72957203a1e8dd8f52a5b5287e1ab99757be2a7812b4a948755133f436039e0de52d4a18440480312dde1635d12082ffa3c9a00d0d2e96a0213d4b500ce802c3d455bd0850bc55f26da42afa80622e24909ecc112e1134655b0a04b0eb3e486329a313c3ca31ceafb93864e2974a4a57f770067f39a63ce0391eca57878aff184629c8055728da3bd00724e7275c89b01b7c868e87af47ced71c439bc5e2d310de78eb77478ecbd68d0198b2b83888331a077d9fc0644f52ecae65ed769c4ba908ac5d5ce4a21c9e4b68456aa47b616158c8499da5d136863e0e6220c59766d62f8d7f8232b09e57615bfcdd8287088cf5f03bb1629a8141f8509f6f7b6829067d871290100f89e9550ae24aaa3dca01b1d05e6ed28ef82b914333ff92bb127c08977bfa1bd5c93320b6382defd7b51e537aaf3c006f7c5b3768d41725111e2dff2ca60981140015e143afefcbee7ec18e4aa7d3acf410ff61fd46cc074cbc3cb7aee9d9747d10733669fbee88a05302358b6ad88ba1bb59a06042970503e2cff2495ccf98738991cf20566f3f9b9a65256fd7b67cdebcb435e146ce5b82442d0153c98010341d26626c7c19deb767173a2c70a3566b6fda48a24edd2c4d95f45138b8b3bf4125e00cd2cf8aba1b2a262d99c65c813edf561742850a4c721bd1ae18788b3da161d7500400945d69fb06ae3be6f43be3d3349b2d25053f6f0828fd34567109d2a7cac0ebde2b880c9cde77c8ffcb5a8641d30ef1752ac952f86a4bb098cbcff946bb7dc53a05508c130bfaf4d397362c6a58b9e6e5218e692c2ca418d2887f848bb0a9ca058488e05ad321f7bdd69233981734ac1fd6dacb9225350fb06374c90ea2e97b84bd3b15b9b74d0cb1ad47ce56b95870323002cab8344691bd8e21a274fe3bf0540cbe150130b071dd367e97964e8203e6a5c801c88af6c19ac6c7cceb553d7b614cb6df0c01e663c2b21871d94883c004e7c9a525b9ea4191380b84fa1b1fb6bba163885d3b85fcfe76fb445796ef4ebb52d7dbea9214c803df9ca351b6f0cc7c1b8a0e9f13362f73ee40b7a99b7ca315c0db34e79ebdd531950349f4a2ad577b909a11f936e0c63cb41e26f798d44111a4b94422e2a49229ef76b45ca84fccc8b53d952906a420f52434c1b92e449559d48ef9b54042df9632d5f5b006ce5b71173cd736f48e8bb30be60e969dbcc64bf5b6a4fdbe323870c66849fc14ceaf09b07a789ce495f61792e78991a2df0e80ae753f41bda407855b3990968ae05bb95630f764375908b0c38de980feeeefc66eaf320fca8363da8637ae02575f828fd0d9ae553ea567edc1a1fbb677ec4ec6e937b71546367b25aeebdf50ece1e529c91174cd6d5dc980a7c29b58031f09034334818561a750738fce31bd7bf2b4788f69af581cdeac4d0ddd04a2c9ac2e04e218fe73542e94121e16a2a4ce43917a2f2970ea4f3fc1d57b9b1c32802dd77e0655be3830ce328232208c81895e4f6de4b2b4506ef669723e52bbaa32389dcf90e1e315e1c74a30d39169154b6789b6e69eef09fafda951f01d05f8d13ca692a7f8a0cb9b938b9daaf9242d03cc161a7e45036230a789c0823baf130243cf890d2678e03de4dabe2bd9d73c1cb25be1007f65f2ed8ea96083f6711a2976c758b4ebcc2e706330357089b08e35a8f0605d64886bc214c7ebd6b299bd35454549a72508bf54c5580113040f84708bf1724263f498d455a6d2f48fd9410ccc445f5d44ac4b50eb30adab68b6a4f28b3eeccc28202d0273a4816fe7f755fae794d4bd5da5062d7e60e7afe10cdddd51c2a394b18a2b4c1fc94b2e309864e4d30753d0dd07e922159e0c4f36095091ed3dc883b774c9906f686f99f7d98f0eb429a30ae818f22a0e5f99926bb323e6ebcf6d89b7ba7a94d7968e2a159fb864bbb107381eaa8ced992f0da7afc77cdc8c0106f33002fe6bdd08e6b5b8e23963ff67dec343ce1e092372820836b3424c1dc012089719675409636481ef32406806510dc0a4c802bbec6d544c1529500739be422fb4e27f9d4c3f6d851c8beb3fa6564126017f5e41a4193c7c0e944ecc97d34a0671c3266805004faae433f71eefc5dcd499cbc20cb6ee7832e46a7780f21b7695580880c9a6def8d848e4107c07297d53b8817352822e4b9cfed2d697103256ea387fe4f9265789a9358bf20bd1d47338280b24bb20e6caacca2f37040102b0983a6b06df6c9278087e7b6fb8aff7b61a7f3256d08d3ea08fb84f950b19afab5000b8d815583577f1f8c8dfc6729557ec900e5e2f6c48fad2b20ccedb8a27e8ef7490573351119acd6fc8c34ae4b48abde748bbeba4576b02e2b7729db14d49921580492c461784ce960a3ab44c0245feb20999e94694ec7a8e49dffb99d985651bcdd8c2c3eb400c9ac6dec6ca2f5c5c9550e7b78423296c5e387d68489cb2ce1d9921a0a6240737a9a642893d07cb4456f3ac56f89f8773b349dbe56f3c2f448d2eb0a030a6b8ca4104fbcfda0588dd9b6d801dec95c8e3a26dc4106bba481c8ea65a49e1f2c46ec46d65157ca515ed90f158deaeedb26dd4fb9f21344cfeb821c4a5a4e08b173c30103aeece633b5044f2da245d00eca5cd6ffd01721f2b7f548fb7007450ad87ee429792e12299569fa40e0b597533eb75cd10e92aa03f1a56e22546f380bea5a602f64d8686d3a4178c9a0424e9cc6ea28029a08f3546aac8fa84505894e27000d691c4cc4f0dc8d4001bb0029f38f2ab6e79f2bf5b12b494259ab8ae0230e0e524b62a6bcec21f17f1276ea879898e03f2f0e521c95e4d510a8c65eac635b236105011c619a292984b397a0bb8f152a102886aa90d12af38805154d06b2fb46c77ea63b6196b0a6a80fba5b77cd18b0037d70f7eb168e79ca9aba379571a8f56f4eea836ddc4a09d1cea484857bd33a51a0151f73f52453eecd8e4e862f0e9500ba608bfb4edaa05337171080386e3e01b3a65b67d1fd01eeaf6c82d1f8775964a900366e8d0e361b2a1b940506733c81686c4b450e7860af67a6b98dc437f56072a2822f33ce6016035135710f7f2ccf9f6fa5efc3dff535b2543f19317081792099e72675e938aef81b1d860a69251e6298ec19af9e35a57e5f656edc03b97a76d4f74174c8dbe2b21fff31c315850021019e8890ab316ec969a484331fc100a534b4c3162e96fbded677cb7f232e38072e884dd11eac7462892121c8b5adb068adf57a60ca02d20132e07143fa8760ce089b2479d8b1f733ceb8aa7e852d1a2471a55466c46280319721ce6487caf951ba873b33092b98d6d8e47aea7fe7f32fb12205a241c8e5bcc505b2c4395e0ae76992f1124ce15dce416695db23f13e07afd4d35e23360ecfe4df645e0ebf037150759bbf5d8e19893f80792687b10c5e0dc4aef22d7d26c32f1d3fe53dcc58b844de57c19ceade72b302d93bcbef113de2e7b77acd7af4c3c198445d1178d03d4e260c37560e0451be7a4a9c28f2b518b744d0479ed18268500e452482567d60302a8d4ff17057e9695a18b45bc72bb26c60644186c45b8d022665b5a32742d3e299035c70f8fa504a4594c0825e33b097d9c9ef7aeca52444a1e3aea78c5a99e68601c19e7b39dc343f4411117067d71f70a9b0f2ec383c6cbaf9ae7c33b8d089a27814969a5cff164cfecb3240db4056cb0869deccde8301b07007748a190452fed19663c737118a8eed4e84e2411511c3a3fc40d4769c56f757d4cee2596d286e401130f90129b7a6a1f5b8605621a8c669396993db75db41d0a2686c104154e817b25470aa88b74824fa5ca521a38ee96c72ab7958267386354c12099685401ca7ba893d0fd97167ca5c7c107f2db000b2978b94ffe79ea62872676eb355b6aad6db2185464de947c7133a3ccc6828423f6c4c1e3baffb238de660d7ced7397f83c117cad5f13b8f1d949e852f60fad33582f041805c21f3a7d0fa25be701ce2cc9b46f0dacb6e31b4a5fce35e160452c3940710fa28491c481a10c57e868a7b8945f2327088c97e8fca3ed8521c308ccbede2b40c0fdf3fc80e2c0f398279ab060ea89b08719e90df655b68b203a55f64477247760f9a544c27ced3113762a31efd31939c1abba6d4bdd6ede424780e2ad96658c468e1cfd16e02e5ee557f8fbeccfbbc2e34084090f097d160b8c48338a195c8e0b3c5cbc5192afe2b4c3f0a9edb8bc98fdf0e864d2c0755042f3e8db120c37e44af40431482ef5221edb7397aad7864868cc13fefd2e85acb9d0ad3fc3caa4b8d1c526de93f8ea75d039e8c51ab4bf08ba7fa70e3a85ca01497c80cba5fdc24278a2b47378254cf70e4b278d06d5a07d9125d3eacf4eb5033fcf259203649b2cbf78ba5f249bda64e0a85c10622a012c4ec37ad8bd05fd3072d9d6ee37ee9ab9129783fb8a09712b98aca697553d51bcdf4db8fc0b85a6413b711af120e9cf5c5300b3f226af06d460c451d4a102fe8885d50d3260b25472ff00000000000000008011f3280c47d34d726fa00130a24cc3a5a4a4a4c8d7f08a71f00edec19b5c1e89d65ab837710eb90dab0ddacc7652c940fa68f995bafcbed71c03b9beb258ef678a88510ca430d5f4819b6cd0f3c2400e7e36877c730f6a0306d255c7fe521e5f20e6537b8f7a4359e56a8617c8f13df765e65feac0ef02393e4cb75f99b6352d33b840ea9388ff685bca2b3d630b8409f598baf73dd0bf6881286fe1e3596574b01f0e666481a0e93cb977f61c67c104c20c2c10fb3bb42a6cedabcc5dd48c2b90db3df8e82fd66feecf0aa4f3aff5d4f147863e790733aa403ef5bad025155a72d1c10c2a90b26d14f31c07d2a167c583195320c78f3612fe779b83290c2990f28268aa93b6fb18b580066146144895230df5d48ad72edab00105c26ad54dbc7997b7ff04527c78a5703fcbf7ff76513398e10492b4e8bffbe5e6ceea8c2610add6f683b7647bf690c10c2610e2f399c47e1c6755cf580259232b4dab9e86feca0c2590836699897674f85269c08c2490778379ea5026d4574702a93a5b2b3c0c1f6fb01c819c342473701dbc7fac6618c1baaf69fb8c4bdb4a612ec7b107bf8e194520854fff89408c8f29d9a155ba0f571b36baa8353bcc1802c173341d76ca4e9f9275632b8c167cf10221902b6fe85a1519f9f072636b05317895c08c201034471e65f7c26fd31ec6153d60061008eb153dcebffe16ac193f20dbe5331bfd30e6c7f10c1f9073648e99e5e378e6c2337a408ef13067b5f96532e5073378400e324f7794bbcfb47e4698b103d2a897b5e647bfd61f3374408ee6fbd2d969a6cdc9055156374fa3c9a6945b5c10c7f53a6d3a0ed7a34dc62d08ded9a53c6588eb9f64d8822469a375a173ce94df0b9e032ff830880a326a41ee923179f50f3e78777920831644f7f64f1ee750abf2d81cc89805493677367e9e9cb9fcc616191a0764c88298b3a61ff51c6cd6dedcd88a0559b73d7a4c2966b8b164c08260e972b41ed42a74a40764bc82b0a9647574e3fc64c615a49c2262537bcef17bb08c5610af376dae78274f7146c0860d30fe4618e5860d1b5d8401c6172750c10234cd860d1b3666208315a40efbaea4dfbe3ae75805a9327588db1c2bde265541fc4b7ea9c3b938e939a920c50af393d33b1f6c0e2ac8a172f09ae3ab8b51fe2988dd92e129742ebfcb4d415a8f3af61847f252c594821cc7e1a8d5e6704de79282a0316b6a8cb0fdffe428c835ea39af592da6508a82649d31a5f68fa3b0d08582e8c14a9477f8e771180305e93f92ea6a79b54cd62788f99663f534bfd351e50962e67adf69a7bfde5027c8390cbaa6b5ebf9df83f1822eaa188015863e420627089e2ecbe568fad7ba88410a180c0c6825646c8298b2edf2617689470c5280a68790a109c287c153ccd36d3106e9c656175f38cbc804615fde46d2de1b5b7a646082ace9434f7dfa5041f917849165800e40c0b0a0a8a030a02f41ecdbbfece9cbe3762dc312e496fbd82bce8aa88e322a4190ce8b31db468d3187b240062548bb614dbf7cdc74fa49106e2ec4a96e7e8f292f09c25f8e3d694cdd73394a24883adab1fd11d641544810662ae61ca347c94da78c4790ba728aa1fd2b1dc8c78d2d1a1c2fc088019da074e0fa20c311c4fafa38c75107b3d3e40c3e02366cf80cfe8691d108a672f0507637a8c508d2c5de88a7fcf02bf537b66ebcc00b191c321651d8589a77c88daaa87b1c698cb2b5b55b11a41b150f1e6dd98d9a01198920788e73f0416b35e778340132105136641c829cbe9e963ba518829835f787f714eade968c421053ea1ccf394afd744e08e3cc3a5b3adcbe0fc81804595c3fd8d294bb175f7c4057204310c41cdd3f7679878bea0782ecd1077eeaa167bea0294006200812b11b2cfbc57464fe8198278386877a8aa79903460c6e9320c30fa48ac90ddb1834d9256dd83860c4c0868d14c8e80331cf061bcffa5107e9c8e003b1c39c7b23777c355509c8d803b1d3f3ff655669ff4e861e7e8fd55af44f33a928230fa48b58bb6a9ab68cbc772c96b176edc3bfb8918187834f6daa5bbf0bf71732ee70c4976765767d7d949b9bb9a48799cf7330d9b0c119c6412ec30ee409cbe870a1c3a9d0968c3a90e3d4f4db3fd7064bdab0b15dd40e64d0816cda1e4799b27aba9491310772d86c6a5daadde1e83664c8813469d61e7c6aaae815671861b03e187b81117481001971208dc58a9a4f17aa72101c4839bc780d9765f7b2f20642a7b09de2e3a03474ac1bc8a99d72dc31375a7a581b08ad56f7ebe2d17f0ab16119f716d7aeaecb8ad48cf5db5e636b5193b10672cedd1ee8ad86bdaa6c1364a88198b165ba52d37c1c056f6c65bd8c349062b60619b50f193cbab1651646172f08e38b1b5da8b50a64a08118fe62443ec77a27d3194891ea97e3703f98dd9c136498819ce3d0de1e3ca67eded8b031051965208ddc6c6eb467b9f9c940ceb12fc46cd672cadb00037461800e54c0000db061e30223e8c20632c640e88fd275e83ed16f9d0b8ca00b19c81003399c59ec1c8d6ec88ec24070aba01a3bf2590a32c04092cd901fcdbea9e538366cb4a005c5460b5a50ae4cc617c816e662884bc97212df0be43ce930ef393452d22e106e373fee932f30822e6220830be438ba196bf1688f41db02714653b4e6f6731c262d10376aee1cd3b9f0713e0b32b0a018907105a3800c2bc8a802ef119e162d73d6a255153317ddc2a7ab5c061588ae93ad713d65da0f19532067be0559d50a0832a440d83c1e15b517e6ec93110562f41551cfe151be7e18ef45066cd8e8a24c0614883377aa3b918c27904a738cf93f47962c877120c309a49872ac9b3fced91977194d2046472e97613f9d3b98404c592cc797827f4c762f81187bf38528f377df98124819a3e66473b8a93d9f0462ba5b11abd0bced2d12081bb4d62d7d6ff209651c81f825b91d34876d37a10c23107358a92af947334d6e11087d1645fc83d55dd68840c80f7ae2e1698e73f80f81e8b163befc71be59374220742e8d97f2a608640481eb780f5157f7b08f15db0fe771d9f1877c280308a43ef7d3108d8f1e3f193f207974d935ef3f79751d1b41860f089751b9a3fe304ac7aa8deda2c278c1172a601fc8e801e9e3c3aa7af0782fda327840ee6077f33a7fa5dc90c9d80121244367b407fbcf1e193a208e5c84e599924a37e682b4796efeabc64dd3c3052926f7e8e3c893bf1c3a0b60f045173438baa001de2d0892ded5516e85188fbdb115032ffc1cd06c8db6208b9f6e4e4721bae643052af0e2a805a1d52efbfaafb5d669e809316841e84fa1c482770af6fa2c88b23968cdbff179394616e4cf2e196f3db12007aba4f35795a3dd342c08256fd9f992889bfb8aedce4cbe2b93fc66cc2932f681ae205fe5ce3daf187e4c63c3464d21462bc8397659b92039adafb161a38b3a5690336694b38ea655695ab911865ab911c62ac8f9f55274b3675beb50a9821c6d4563c7294a7ddb1b5be78bef028c2faa5241da8f7483ee7a1c49ff6923062ac89ad7976e2b7858697363ab8b19fc8d0523c629c8f1eeb65bcbc6f7fcdb8b18a620e7d9898e99f43bba8b14fcb7e08a05314a418e67fccb2c96ebf578638b0dd0010894dfc01b2f54c0011b376290821c3e4ae9d8af9d3edb82157861c3c6175ec4188589c242513640418e3aaacac14b9768e6132415e9bfb0aed3eab19e2079becd9af963e3a3d47582ec710edf2e53cc91e58a055f8431810b8ca08b8fc1094279c66cea1ef7ae786c821cef57677f5b53505640a5896a53beab545ab4ae23cc2cdbf53aa80aa7b9b1a532889109a24db6a5e6f84da2d33582189820a54d7a7d12b5fbca7124887109728ab6f46c9bdce7f0fb170d30410c4b103eadf568f28ebef385179669312a5194a8126312654312b781189120cae75a8c39560c9b3d062408d39145b94fe5958e623c82d4d7397e63598005c687711bc311c4d2d4ebbc0f8f63e4461c7994c1b2071aa7f28ac188d4c545b6c2b4bc45434afa36e8b7c6071d53622c82b4593d95bb635b66a70872da8759a7542bfb502b303e0c304a06acde2d11e49c2ef7652bfb8cb182210622c8d381a7a431dcc3ae98cd0b310e41b44c1d7fb0b1978fc3c0b30003171841171d88610862dc2a9931d5ca106d63148298cb3f75785a3d63a912829c671d334775e84a17631004ffb89b3ec51430be78400abef8a2020eb8f1022f4060c3c6bb0d1bef607c550c419083a9db58f59852f34f310241ba5f35fb70337bca0604c9c635ca55d0649a6d8c3f1083644ceba033c6ddd10fa4bb5dcf8e6bd26d332a28c60b304a1f889972e53a4ec51cd47c63cb300cd2187c209dba4926cb818ad4e70031f640b4a8a8ced21fc7dd6a0c3d105c5f3dc73547fda6187920071d684cb17735d57af0408c35d38fb2f7f331887107f26cfed0a13cca917dfe045d80f145172c00e3b7c078be400c3b903a73aa4994479e65eb40bc4f2d51a973d414463a1c63ee8fa2efb7db648318732068ffeeb5c5cb0019a880015a0ee40e64339ae5dbcd711f0752be5cfec71069a13d7020da78c8946bda1ea7d7ee0dc41c072fb67139a5bf9a2988e10672d0b92d2274349d76a020461bc8a3b956ddd2c22ad52af8e28b23530531d840c8cb99593b97c6502d0c54f060b46039c61a4867313cead09d62344751410b1e8c2e64f02cd062400c3510bee3d035eae359f9b81b2f2819c01b2f282d401abcc030461a3a3bcbee74ebecaa480b7391d9be5cdd51f5826c410c3410b367c8a5546ed1fe3903f9bb5ba3761c59e6586298819815be2f8f755ddc19a30ca430f7ae142e2607a38b30bce00a43055ebc0006a9801864206699d576e88fad26dfd8ba6276408c31903bee07a2a9962c2ebe410c311053f6ffe364745ad8c3409a0f7a16513b62f36124c4000339a2357f6746637c81189d2abfd5b4169415dc076278811c6fa73bec50e9edc3b0e08b2e54a082621a062b30c003366000c3020cb0e001366cd8b0110687d1822fba40cab8d8a94e1a739a9c8a10830ba4b8af61712fd1f119630be470a9ad32539e37cb89a105e2590e55a1b3c5ba2ebe3876656d3e06e731b240e80edace83e6d0aa395820060fdd96cf77177334c615081ff72797fc18a9f7b002a9e6abbed2af2c7aae02397992f7a8e2217e2b15c8df7e9fbb5265ce9a624c016d559bd62c35b3ef92d419cf1b3f9edd13882105d2c7ee91c96d859ccf0785f6683541be8faa9bc22eee8d99207a6eb0d0d1b89820cbf47caeb27bcb6f2f418ef01836ea5982fcdfa62b22afbda94a9066bc6aaee35031ada504c9ab037fff4daf61da4990e62f6ab86a0ceb3992207f10111d6b8a8e737c2448bd5176e5e20a09d254b7965b678e65a38f703ff43c9a63c6116449cb6172ecbae34723c87ad1355ad724328511e4504b34cce6e0ad2b8b20d4b5daca27f7c82a8a20ccb9fd4de56d53371144dd8db7d9b1b4ae8a0882bae9c7a92244bad44310c45a3b5ee5e7b754439034f5465ae67bc8a585206e7b6baa6ca27a212504d9de4e2225f5e37a0641bc18cac6ba3a69c70b8228e61d7bc4a31c981f08527e54e1444342430e0872701f8739b51c7554f90369f3ea5a660f73e5b41f08956205d70bf7819cd13b78183ba367950fc4e01d7547d33ee6d903693336fc238bf1e9d40329e5bacb8e66e681686a192cb6c65cc6c403e1b5bbd7a32def40780f2b47390737365bda81b8b551337b743eb3ac03a9dee3ed38ee703fb4920ee4d03d3787613144ac9c0351e675be3df8c9edc8813c1b6d22c4b378dce340f860f5973b8eb8dde1408a16958e2e4cf7e26f20754ea177a264a5733710d3aca6c85bf45e4c1b489fd9b5e1773943071b481fa57a2ce46e7acb1a887d7239aabc25ff463510df22cc5258c8eb30a68174339b5305f3d189110dc4cb7e99a79a5ec4c533103f776c9ff3e7c5144533102e345f582e5bbf109681a4ae7169f523cf2e2119c8616c4e77fef8287fc640d09cc4d5368ab4e58881dcb9c2e6299b8bed090361f3aaed34e728c51f0ca4a8ff346929bf1eff02c9b636759c9b6d2eee0572dcf4927b613656ef02d983b0158ffbe5c30c1788f961be5471b517eddb02393385db78cb4cd93c2d9063d3fa303258be0e5e1608fef7f159da5b8bc1c302c9638855aa124bd5ee0ac46ca1a792e77055b4b30229a6e397b97cab40dc5ecfb10ab1591ea302e183a54d21fce5c38d4d811c2422eb453a3d3d4c0aa4d0139ae320538eef6251209d66c92c97b3a7ac0d0aa48e7f1ea5abfcd1517b02b973b0716dd509e4a83bff07e9d6e1df04525926977cf9300d328110f2c1999847951ada1248e18165c7edf953aa4c0964ed9ca953ac0a5a9d24902a4da66cbef8b71d0984fe284cf3e694abf32390ee2a5c3449690c1e4620dac6782bcbfbde962290c3bebef2ec397ba68940fe9b959e4cf9a5d2432068fcac75fcbc294708a413cb20a29f7bc31c0462fda8aafb755fc84020b427b7f7f707e40c7522aef1da2d0b001f102b4567ea706d31b800e801d983fa9c03f530571c01c003e2e5c84f959b3c0e3f00ec80681d790e63b81c325d014007e4b05267d856764a5ae58298333a7554b1e472a87041900f955c3bca317baa5b10276645cf7e53e6a86c41ec30a4b3a3b01634a716848c7529ad925d7a4f0bc2a5bfebe01a1dfd310bc29877924dda67e2210b5256f15cabf1713e4b2c48121bd45256badc0a2c089b7434cea50e93545e41f4f88fd141b43bd6ae20e5f4ea402c5c250fb782dcd11b2b1b6605293ff2d170a193165e05e9725469b3a3fa9f550529e34f74bce02ff1a682342e7dc9337eb4bba820e60f3695564e41fa649d73453e854f4d41928e67b9f1632bbf14c44dedda29c73036262908b5611e4acc7c5a4641eae83ed0fb2c6bed4441c8d8ba36e763ee86821ceb51e84a72b5958182e471eef4d33d9f517d8294525dec5c9b628c886878826c32166a734dea79981ed0e804316bf8ce548fedc3d9474083136435cddb71d853a19da3b109b2e7b0e3f8d798f215380a0d4d90d363b5555a7f8e61f5772f5dbca0dc7841176a61a8c08b1778208cf72f2e405b9920878ea378ce3107955a8309727cb1af4b1e7989eb53334a3265a56a4dbbd7b7cf5546a3d652011a96207fecaf1fa8c58ffbca4a9043f9ca5f504de5fad1a00431df7b98d92cc70f55436312c4cb1bd65cb49604695fcda35c85d0af3912c4cc51f0b49d731f07252448139b4b83646d8e65d1780459ceba3fcad659fc4337b60a6938829c1d3e0c554f41ef2baba4d108a26df67afaf8d63a94998c2086f220a2ccb27f1cb1c581c622481fefe33bca2b0f27db80040e0c2fbac037d05004b93c0c15b73a988a656d186b8920796a56efb31c22c856399bc7dde9bf0ad1060cd0000390060cd0000350060c90810a1840052d5881177a08c26cc9bb578e038d1fe5c6d6172ff0010d439037548e332c475aac1c8520e69e8f257c3a48d38c1034064143103402518038b4ee66e423344ec253a3355b67df94622ea0f107b2558e7366fbd678d57e206ee7a8e129578f54bc0f84fe4da1929ea72ae7f84098da0c227d7932e5a0b10772d8c1ada7838cfb8c861e2c1719b788b52e6913ab1aebd87370ba3934f240d2545e394e669a3c76782085a575ac7b398e262e1a77b03b8576d34d66185da06107c29b4ca6c666e9c0ff3a1063f455a82afb28a7f3020ed868020d3a10324e79d79d4587ec50a0310782e68d32e7697e754b1b369240430ec4d42e3b0be9331768c48194e3df636cfe67eb78638b3f40030e8478b568a721f2eaba1b5bcb6f20fbc4e7e9bf53ad796f6cb981b02afea125e26385e734da4012fbb883c528e6df7137b6b08c6680061b887e3fbab26b4177e75c03d9733d545387295c92a8d4404a159bbd1e7f6e6c751a8896a394a38e838f79b5bcb175f65e80f10244830d689c412f40c30c46a30c34c8e0c4faa8868f874e5b08688ca13ab732bbba54912869cd58d2ed41868618881e74e4312b471a6120a964a8d21c3d07d924184841fda3f91d8fdb79a9a0052b90000d181046182503fe45036cd8b041e30b64f5706faf4eb573b4d1f0023168f4f89775b3e9d334baa0c678be5e1d2b502e1063b6830df54ab15b3ad85b2075cee739febf0d25626981dca716ee69139ed95a09d0c802394bad8ff94b264df3c61663816039ec0cf771aee78f6f6c5d81982fec7c0e1b1d6c77ac40dcfb28a6b01fa9750ebab14565011a5520aed68c5887e96924bcb1b5d5011a54205f0a936bdde529ca15c614c851b952ffc75b9eeb8b2fa4409a0eeb0ddb88f0287b638b0c0434a2404cfe3d9dc3d29ccab307d08002512f3fa6f877d9ce9337b67802349e40744bf39e4a3b5c46764e2047f11c7ea934cca609840ee3479acdc2d3c6e5011a4c20e5857e779cf6b1ad30406309a41452a541af34ed5910a0a104b206f3e891f0b065af1b11a09104d2c9688ead7bf16e1b0924758d761e79764a8d681c819861d364797abcce0c0d23902a65eb49e934ed4ad3280239548adf17f5349a771a442047121fc534fba83d4d011a4320781cb54c73ceec33961bbb8486108829a7eb9c691b2de67b41011b36bef0e20b2fba684118198402d0000259bfd4e3b64a8f59671a3fd0bcabcd3e5acb5b65b2fdb6e36a4b9d62a21bbb001a3e207598521973a8d696b31068f48030ea5fbb31437dac6bc34618468307e4efbf14447e3f465518d0d801a9d4d77632f2ef421a3a20e7ac701eccfd723f3e17844d9d43d23a75763803179f798e1e1e5597a2730b520c6a1bd5c9c6e3bc670b5edaeb6b22b6b2c65b2bfa3365a796744f99510bc29907a2eeebf9e282b42065cfbbf2f1f3f7b25b068819b32098ee7f98d7ffed48970539d8acb2281e521c66c482a4ee2fd6fe3d36f6e9800562062c487262d14aee43bb30a61e66bc82182aeb78569a3b50ae207fdc1dc7d66bdfbf268c3644cc6805c1d43d6b645552bd34d561062b487135c752395743b5ca8155906390f3ec81e798c36faa2eea54410e64367aa83bf1569f19a9205610c9b8aaf60c54103b7a1c858edf2c9f7c9c82e0669f573ddea620df6c90fbd05c6a1e2d05b12ad6c7e3c0430ac257ee503a3a4af182c728c812a11a3c72fdbdc94441ee205d59a363a935aeea820c3342418e193c3fb0b10eea3b2808e1361f6cbe86ba757c82dc26135b16cd73cac31304a91c6a0ee2a59bea4e904e7c7f3a4869f238e704a98376bd106d91977387199b206a36f9f7e4d181b7a6f0304313e4d6bf983a6b3a455fb6861999209b7c87f33dbdac416e39ccc004492f7568f62a558b39aa39ccb804493c7f98b96a89c10c4b10742ba67698d2c6d4bd12e48af2d98bb3afd7174a10bdc354c5892eb735274176b34f5a619726c392208d68c5a0fa9ac286150982bd8647c47d1c5b9e2041f0d4d8f5318d566f38e311c4b0d183bc12df101776041762fa7f611a4d44c28c4690efd232c347c1c37ca80d1be586198c20da56c51c1f7cd4fdfc2232b1ef0e6d93baa8faccb1adbf5954e9f8334311a4acfd29cbd19908726c26cf2aaf0fa272cc4004c103ab4efa52556bd94390f354639a0f0bed1d7d63cb10a4a893a9aef479b9f88dad3227cc280461b3d494e614c63a8ef1126610827c63ed3a6dadfd9e0a8ae962c28c4110ddb3fae34c5bc59cdfd8226bc20c4190425b7594645cd24d2ecc0804f172e72bf36829e7785b980108c2a6fab4aa1dddbfce8dadabb62db33f94cff0c38c3e58cde003cdd803e1830fbf9516cc92c53598a107e2444dfab6d92098910762cc251d5d1f485c775e9cd3c5172f6081171278c0036c184561061ec8713b6cd7acccd5617f07b247b1cd5fd203cbf9b20339cee1a55075e1f76239a30e648b9f5a26b263682d67d081acb93ffacf9f9d33ac197358ea2ac562436a22ce424b4563ce19bbda9a9d2107f2987c5c693be6269e381073c5f2af7b1ce5f80e1cc817d2c9b4634f56fedf4090cdc96465bb817496dfa7299f6a666f03492f85cd719abcd7920de4dc3189df9463d8c8ac81902a953c0e6b73d98a1a881dbc53c393f9d89d06929e8dc753395a4d1e1ac82a1eca423faeb9589f81a8a952e2722ca7fdcd402a4d7a1bb721a5737019c876e16379f704a27559d4a9784e33bb134871bced472ca363c59b40f8e8bcd2317dd2390b13085fbadd6107e61248d9728e9d3a65540d1625107a3c6b77e8703cb26c12c8212bb67eb1d12fc5482087d21d64a3c7f659f52390b452e5cfe073e52946208d664d1ec66549b7b60844cdcb4ce5a15acc37114829ef993fe6e86c350e8198a3f1a8a2cf73fbba4220bdc7b4e961a2c9c3250844cdff61fa7b6d55558140c8b95a0fb36264ecfe03f2a5998dc152e903723cebd61db6ad7a0a7b400e8ff6e2c579400ad50aea51b8879b2901ec80943174ca181b51f510800e887ed16ba923ddbfba7341ce8e35aaad96eba50e17444d79fe735aebe328c72dc8d962b436079bea9fd9821cb53d0eb914fdc2bdb520c9fcb5a9748efd61450bc287b5de753adfbad82c88497fa6f207927e1a59903bcc34d1721ee52873c482a0fd6d3676bac95a5810347d546a25dbf0d3d4780531ba07d78f2d9de54a355c418e43eab9a405a91c87a9d10aa24dda7f281f3e5c4d6bb08290d54973ca246647aab10a721cd8b87c4eed39acaa0ac2cc7d1ca52e8f2b86660135d44805a1342c62367dc0a1062a48a14ef3556612037b0a525dc7a1688c615390a5d3c5ea74ff0b0d3b0c354a41caacccd77cb33946c6821778010231d4200531754a793cf01c85dfd42888e135daf4d9caa8a40a861aa22046640ed9e7399877508d50103ea4252bd93c196a808274a7bf613f47dee6cb1a6a7c825cf591a58f71adb27d678104ba8b0a230c2e430d4f90b36d87d65bd97563c70b6a748298c37270121f1ed6369c20c68f7ca8d8af66b06c82983286f6bf18d6eda10952324b31c6cd0eea6fd6c80449dc23eb0eb5a43eca61826c6db93d2ea44aa87109628e92f5ceca9674e5680a352c41fa8c1f4fba85c6f10af6156a5482d4163cacf8d8fafeb6508312e4cff0de8ce9f63d342fd0499035e7c89385652f594d3aa18624c83b1f15553bea524a1b880479b4c57e3b59455f7b638bcb3c07f8023520419a1f158f151f470dd90bc2a8f10852de8bf593afeb39e8388294d9377c23b4eee5a31184e8686e64b4f2c75033821873cbe53d900f52d622c896a9f3e5202dc7ee48116454b556b655556c84bbdc5b8fa4e54a1d25821096374acd74c80c164490a3c5830ee2f99ac38720c54b1da5ea860ea8610892becaf507fbb1d6a56dd8a85108d24797fa68e3e614cfd1341858a1118228ead96e733f63df3808a259f6c979c7d7b8ad750d4110f3e378bee9250fc5b561a3d408847fbf29df77b694930c08d27ad614cacb3fb8db6afc819b358d0fb329d3e8d24c95bcbc99a93c4a821a7e2046efbad41757c7dbf38116f481f4a12c5fdc0acb98960cbe68800d1bdc831a7c2078e638a5acba4de3c71e88553e27711efcf26b3d9062ec380e9f2aad4f2d0f79183c9a0b219d34071e76b9b9b7b50db9b68f9942a456c6bfc61d48f2616cce9bc318fca3bc0a56501e8c1770e0bd00a30336f60223e8a20535ec40ee205307e79dc5525307528e6d34d57a3a105e35a6ce82ea071bae31077298ce5f8b1dc3474dd7900371e35157d5111e3125e196b727d2624a637e8d389032fc4bc4d47dc5c66e6c5549c059f02f9801e920d48003e92b87aab598ba2aaf1a6f2065f2283e48cbdbea670d3710d46b2fae877a17aa6d428d36106d76f365ac5645a7ef05182fa0f7028c1774d18230b050830da4fa8edaf89cf5b1056bac819c24baa31ce7fc39e9b8b1b5a506727c9737c731d4a5d8c11b5b64745947a89106ab8186d2ad7186b2ab6186aa1a65208a5a50ddb1f1cd39b60619883573b93cba8aa5e3f9937d71582001578117371ad00da83186d2f6c3ad258377c4d0a657975445b595d864a5de5f0afd9d0eb23090f3e795b18a1ee5f35a1fa80186b293cff487d31454306a7ca1184957979394994b35e9b03be544bbfb5e55c30be412cd4973d833da67d6196a74811ccd9ee78fdc761c360e181a6a7081e051eef85f3dde6a0fec37d4d802413e3cf9bc99463a7e5a20c805ebf08c413ad8baa4a1461648672999cff4fd743c2b15410d2c90837e7c744e152ac969c38aacec50e30ae4ee548fa3eb7c19b3b202f1c3f730e71c2635d413b0c00b305ec001ab5185837fba6459dfe5a15181b071fba3943cca0faaac31853a6f558cf3d264ad143a91f0aed42a138bb092ca31c7f7816eb67d5105a634a81185b29135a0405acfb1cbe0218379fd044264701bcd3f26569e0206b161a380f1359c408ee982c7a07ebd39a8d4680239fcd61cf8b9867eb00613c891f66ddfad719bb5bf208c2e5a10468d2510ecaef3c71069cf086b2881501f7bdcc9fbd37e14ac910452f61c26bf68df1b57d185420d249033731467ea418ca782020317541518b880d011486fe955391077035dc308e464fe99599d4af2df30fe045eb80d1bc60b1b54a308a48915b114fb5592a92f2c508308c4f6a87ee38cc5e5d1d41802f182cd87ead8b3ebfeab410d211043aaa42cd6d53b87b9418d2090d74a4b6394f9f1d85641a90104d2e560353e2e2a47fba9f103a2e66cebbb53d6f00131e61872ab3a6777e061438950a307c4088d9a2bda4cec470d1e10bfe22f64fa47f173596307e41c538c9ef16956690840504307e49ca7dae27ebc6ae1ce0551b7937c941f73446501c005c1b387d0f3583ea87c9d2100b720c57f47ef99c543a6b82dc8317da99d6693adbc09402d889af96b3a9d7dfba100d0821c7634e573ff99e99959103fc7b36257d4838dc98254f1277d6da900c48264c12d5daa1c061644f9df95baccc1fbe608c02b88d1323faacae3c0ed0a802b8872dd9127ed98e375258200b4e29608b392d74a9108d18e7e2e9ec36f9d873c00ac2094e6b8d3e5d6d5d09f551073e6f830ccad6ec78f2a8861b9b71d35ac67cd4905299c8b9b075e394a290715a41ced68062b4b5797730a62c717faeb31be6afa9882742b363e22baf7f52905f17f62bda3b899357c48f187de79ab9d519093e61c9baddec5a82848978306d991cd9f6d28081d9d79973b88a7a020b4c84bc75dd137f313a4e9941f9bcc77bea0274825a7b2b1de36e6d709a2ce4be6c6f09f4a3b9c20bde459d2907bfed904e93e5235f736ce743441b6f8b7513aa5e76c2688dd39dfe95b65cb3041ec50e199632f2df597209c9958d21c47b9f39620aabc6bc65966138f4a903a7a75dade6f4f518294de3bf6a0521a93781264cd515e4e213d942a09f27a786ec8f0031009a296cbc689f3d4cf3e009020999b44687767c7d507e01164cbc1c3efefde1164dd0ff7f170f165fa4610dafb435d48cf0872088bdfb9692986bf08b26f7a501bb50f1f5704c12a86ebb0e39c2cc61341d8a8cf9b9ecb5b1d11e49dcb5276973b3673085236a9983655eeeb28862057f8f56c61e51d580a418ac13a8ebb7248db9a1084ca9759d122dba3f020c8dd7ed143ba46f7581044d5f8de5e1feb551c08c255749c7976bcbe0504714a3d798e3cbe69fa07427c1091dbd6fd40cc963fa6e550e663f43e10f54dffab4755f4733e10bc72eb5679948c9def8168b172bc186bd70349fe324f661c7f8f3c0f04fbc05323afd3ec070f44cda1b997dc5fe97e0772cc5af999bb1cafdb817895e5f3d6c553cbeb40505d098d0ef65963e840d4918bc163f9b47bcc819c83f8b82d87315b2e72206e30b79472cae6c18e03d13ed376e42a1cc871dcbac12be526d33790b3c6bace59cd3a3edd40eacb51bb3ce3cf9aa60d84cb1b32334f6b47a56103a1f6e33cead89efe336b20f76c3ee93067d440dab19069a3e95565260de4a8f0480be91df5a3812815837ff4a81e497f06b274e87621c23ccedd0c87f53b8fc4e265208e66ca9482cdc4e7642059f2cdb11f9af963c640caabe1d1833ad78a1103e1743aa8a98e1e677384811c33871de6143f64340718881f579cf864be40960ce681e55496bbc30be4f3388e7c2d3cefea2e90839e96f24b164c6a2e90d63fc76a39efb2c25b20b6d7bf5a554c59ac05d286b590ffd1eaad7b64819ce34cbdeb38d847e6810542ea8af5b9ea67fe8e2b10eea6624eeff0f2efb002f13b1c0fbee3a1ef1d55204988c62e0d651e5d0715c8819a9b7c8807bdd33105d24f6f6685cddee44b81fce9cef2c729dde447c1cf14bff6b94381f8d934fd3cd599659e405cef99b177f9958a13c8297fd6a421c555de2690620e347334abb9ac6502394c97d7524a5fefe71208d1c1e7fc514c324d2590fb5c6bf6c324903a57687b54d2f63924102373ba57b19c3be5ca11c88155b47c66047230161eb6e33d4a5d1188b39eb7373ceccd1281fcd12af96cc78aa30d81fc41e323cc22638440926bbbd8a13e445a412056a8cdfae9a2c3090452751c5a0ed4f3878bca0f4893295e5cabef69ef03fe43ae8ba578007a4032f5bbc908d3a83d003c20464d7fec06ebd13c003b2085e8785763e5e83d47007440dc0a0d9eacc4b3e3c805d13b5679071555d3072e489731fca58ddebb1eb720c710ab1dbfc6e47bb72d88c9a43d68598e3c87bb16e4ae7ccdd859c74f6e5a10e6830c5d66d12cc823ee973e271bcb55cb82741f3c654cafd271a8634152fb703e34fee84f0d0b82e70f246e735885ff15847fcd41c694f323bf2b08f55562f639c8259d5b410e5fea838a861564fb8f53f929fa9ee15590ed3db88f2f2cdeb4ac0a62da97771c3dafbacaa9207ceb7fa87a599e938c0a925cfe787c547223e453903fd6ab2dfd38ed8e4d41d878398ead9159738c4b418ecc393d57f873c99814240f1f3d679bf562c5a320f9feef75c67fc65d14e41013d5b33c14044d9efef3654db13b404196accba14d6db4ecf804b9e364975f6749ebf604695d267c36e738feba13e479cbb7561a33bbcc09e2c739fcd757a5e8ee26881fc60e1db901a720bd9565eb3075fad41424d1f8ed71f820766629481e44c775977e7c4c5290ed5653ac54cbf98c8298a13e4fc59429871105715e63eecc79eaec0b053178d4b6bd32dbb90305398ed3e2a1fbc6d9d427c83907a7593a678b567982149a56e72aedcedb0942e47b9a393941d89c1fc6cf3cba1b1d9b20a77aa7b4ded104f937ab3b8b9f0962a5658dd898a7f30513c47c7f9b83e8e871545f821ceaa9b8fbef5f7c2d41cc1fff95c374aedd4a105f3fae8aa17f39a89420aa69fecfcdbc97c149902397554db999fe2109d2c511d94b95563e22418e4df6363a8efea30f12a4bc39fab8a263f5d83d8298fefe8feb1c41c8b5d9e051da8fd61a41da58e9c4c23485d31841b81a0dedc95a04a9aff7631cb7f25a11448bbfb2db0e3f8d89207cf6a8b472541041bc7cd721089ad5b62cbf8aa7bc21c8596e3ce84e0f5b290439b45c8799eb32672704e9a36e93b1cd98291f04d9c27290da1d9b751841103ff95c0ec473cf3e02414a9b2e9bea0208a27f4b7c8ada6dd1f207f2fa464987c50f84fa2cd7c13f0eab2a7d20bb87da1aa25e6a613e902ead7258b428cfd93d10fcc38f26a3ea813c1d977b58fad5a0e681b83bbffaf3d9b1523c10aa3f856dac0f9ecf3b1037cfd7b4f686bed30e444f8d361d945d07d287639992a747fa814d07a2c966668d9e5334ec3990c33c57ee392343842d07c2c58b4cdfe89983aee340b416176befb5145dc381101ee986f49c427758bf811ceba39051efa31aaddd40de520daa6e2d1d5fdd06a2c71cc8d6a5d8404ee93bf33bfe27cf1a88de736eb12fbfc550ab815839f8dd342ee1f93490c2a2564eedddd93d6820a7c98b6fb14d53879f819c5b9d1ddae6ecab19c897d25e7967eb3f5306a2c68c15ae273b560f329034e96ec7193df7c740d2d7716f0fca3b8e2206523addf4fc7c629a0e032975a0e2e621e6328381306ba52a1ebd3e5f207dceba9753ec8e737a81742695614e774f835d2067495fdb0f63027081143569a56031c7972f26c01648eb41e5d5fe389a1613400be454ffdafe163796c504c802d9634986f6fa289543002c102b696a6df61c2af604b802d9d2437a0ee9e1592780150851bf9bd42cdd2e86005538e366d4b20c154841d73c9c13599bcc14481633f7b8ea640a1e522075ecd8bf3656f454a240ba64166e3a1a0ae4aed59c644b53f227104377dd632d5fbf9d40ccb137565d8ebd724d20cd7ec7103a5e9a622610b39c64beff387a6a97400e33738eedee3cf228815c9ac7b7e392e84d2681f023a69dd51dcb4820bbc71f7d8ecce4643c0221fa36fd524de5c508848d21c473f496004520e70bd71e479e6f3eb604200231f603159d8d339a2d0186405e0dd97e6735add5124008e46a97124dfd98232d0182409e4ba31dfee143a425001078cf909e563a3f20f8790cf1d6a136fb80f8f1c273e8f017d6ef01f13bb20e96b6426fc303f25ad2b4af1c04d801c9534e3bcf71ba981702e8801cd9268f6ece3fc63b1784bd1c99e6d0527e887141d6387ef7d6157ab3b720ab6656e670630bf25d8af9b1630f37a5b520b9054dede1b85b3e69410a56972f5c7016a4cca1739307d90f4459904c626a6753773b170b729f7cf55ca7b0207a597767cb917c1ca6af208775bb16bb8b15347505e9ece6b5c3a5ad207b47e5bf9ef3782d6505293abe7f741daae6495741546d4f9ec2e37b49aa0a627ab610953eea4c271544b1641e69e4d6c771549023abdb2ddb871d6b4e41ca1b52d4bca4b233a620964c5ecc61a814fb2805a15db396d986be782105f1e4ea4dda320ad2e5c0e3102b9ab3554441ae30f35c1ea3edd3a120a467cb1c660f63ce1b14c4b81ecc6ba556bbfb1384b06021cf763ecbec0972f89e3f7eacf7f6b813e4203c5a0c7b4ffb514e906b3fe4665337418a176e9ee383cd9e6a82285a6dc9d7da3b3e334154cf59b6325e7d50628258a99284fba9ba899720e967d466dc7bd3d01204f7b87ede7babe7abc4e7a25b528218f52d376b6cd30fcb49107c3f86bf8fa245a65212c4ea8ea3e25d1909f28731c90ba92b6b2524487e5b1e1dadff12e523c857b1c3b0dc1cb97b1c41ca591ec6144c77c4d3089256e7dbd9c7d0ec30829856d5e1c6dc6cf92f82b839fee8e3b8295bd21541cc1f6ae3a70b1ec94722483165fc8ee53de8381a11e4ba88bcccabf923fb10c4b5f8f3160f3b6c6d0872f89a3d0e272e04f1e3282f3e861aff9210c48ec2e59997e61cbf4110a387db41640aa5d11304c9c3f03874fbfc1c2f10a4eef1f19c2ce9ca86802065fd29f14bd31fc8b9c3bf8e2236e768a11fc8962ebec7d9739559d807929a7b9c63fd307330211fc8b9ca3b666f14d99c3d90723aea38e7460fe40fed943e180f3cf8c803213dee7a4f57fd3178206ac798e27e3421de8110667f6dd153dcaeed40888fa9cf89ece0731d08fb326da9e3703365e940948a52b70fa4679f036953fa3a8e9ba173c881b8693c8ee3fbb801c48164ff5d3ef1d717ca1b001cc8a1a371dc443ddf7803780339c595f5d81e7c85780370c3e3991bee3bd7068265c7e9e3d051270f1bc8f15cf458d4f8a4b606b2e9b4b7f6fa076aa9811832c5787f18a9380de4cdb15d577e8772d2a181f8d5af6bf79795e39c81dced39d477864da91988d132660af631727e19883998cfbe4ec7b14206b27cd8fcb1a46e963e06927a9cb432cf2615230652ff4796f2fbf4fb612055fc9cd65fe37cbcd800c040da5f8dd1726738bdd800be404ca5e1e79ae205b27a8e994b7117c8f6f1c5e9bd87615c2e105e64dedd3fce7fd12d102b897e181a2373512d10ff62cebdcb4952d32c10ee2bbf7656e978120be4f85dffde5e2ff57905e2781c9fa58fb40239df7a4739a80bde815520a6d6ebd0ddcbe72115086f29d293febd7c6e0ac49f8e47d3e5a71ce5a4407eef503db78b02e157eeb35e4ad5710c0a248fc42eda4739e5707b02b903cff5caf4f6719c40ce1cfbe5f9fb8f34644d20a89c060b171913c8f1fdedafd6327667099eed9beb654709c4bd4bcbfdafd135492087d9637ee091668e8f04a278f2f830e576bcfe08c4cdb80c365a9d35370249de7ddf24b3777011c89ad1ba5f6e29b7071148d1c3903e231bb63a8640ea8ee1fb19dea36d21905336e65c3216577610c8b1f2ab2d778ebe18088493d99cbbce4ea3fb03f25febc6b47eb994fa809ca56264ca69d5b3d903624c9561ebc73737c703e2b4e74843730e45ad01ec80945e6c34a653cb9b01e8802095a24a34d636852a17c460da39b63c152ec8c179984543d9ba7904700ba3e5c741c7ae2d08f739d42c562e567e2d88d2d1e9239138179d16e4d8b0d7ff2975aacc82f8d9ab5175fd99940539873df9689ba7522616247d8fefe776f27d581033b3c7bbfb78053986b2ec617db8829c528eb9dbc24545472b48e9ad3e77ce1cb42fac20c7e139e718ed42c46515e4288759ec5c62315954418e8f3e8cb13ef95c2515e4541f890d1aa7a946053934263b0f6b6aaa3e0529bc2ba5a0a96332d914a4dc5d711e65ed30c8a520867ed0f4a16cf2554941fcdbd01d75fe20a68e82a8aadb7dd15b2faa28c8bd9aa23acea55969284849fdc4f393a5c51314e41ced66de1cc6d6113f41fad083cc8b4bdb1f7a8258f2a993673b418ababccd39470febe304a15f2acf3bece7de0431fc422da69ed8a934419e73f9cd61bc782991003241eedd201d772fa60c2b2648e93f56490726a695bc042987b377db082d61fd7fd62a411655d1888c171d858b12659c30f758430298042986ee9cc31333bb5e12e4ba8b8d6a11ff179f48903577ce4b1e58577b1c12a4185d534ce423ea2f8f2068e7d3bb24ddb1a4eb0852d6cd518c32b7dfbe3682d0d17158b854691f7f8c2056f64cf96e3386946c11843dbb8bd774992f25ad840014410c63b96eafe3b5bb3e1184d7ea92c99467a17a44106567e62f6e27aae28720f47c77278fa2aa576e08627fa65cb5e35108c24b7a47540cd3e14509414c9592766d54074112b1cf61bbeb797b5010e4545a212d3ec4546b02080439e7e8a03eb329c97b0041f8ae8f94928b1da4ff07c25e7fb4193f4ceec7fd40ec1e8fe3efa2db7cbc0f64f9eb0a1f3f7b14d1f0e1e02a65f3e9d80339bdf8fa6acabc468b1ec861c749e4e375fe30e53c903fb6acde81c7dcf14f3c10d353cc4387e71d48197b2ac638bb495bb403e12dbc76af847520e57c94daf107cd194307b284af65ce6fa50ad91c88b51e2ba9e95d2a5d0e240bba6e9bd229cf250ea437570b7ef1d2720b07521ce94bfbb7f3602201bc81943389c6a81537103665f44f17cfcbf66903a9539acbc8918c397f36102f97a4747061335fbe06628d5ff6b0a2ddae66d440be8ed7cd9c3758ff471a08bb3febc954357f0ca381983a7f9c7f2e1352ed1908eac9926a05ad0402300339a7c73776413bebc79781d8297242dc3e2af530642047ba9646e637e35d7a0cc40d65f1fc2c473d570cc498d38a87d129e947370c644f1eac062bf9ad1c050331ea53680ef3dfe4fe0259f5fc5257eb42bfe905b28daa471fbb7634eae9114017c83a53f1c2556598f6708114e9e11a3abe05a2e5f0a0352b2d1d7c2d9052ae3cd266730aefc802a9425f473f9ea2b65ab0401adff54a9fcb42a5e81508f25d229bd33a8e3dce0ac4a82295b3e3380e3f5e05e2e6fa57f8d2942a35015081f057b1b2934f81182b6e5b8692da8e1f2910433674d459d953282d0a248d49a552e363dbee5020a7dfce351f3bfc6d028ae8a8e4cb646361016128180a06036140201871bb1b631508001834220a0543599c88cb7c140003382e24382c1e1822120c1412260e100e0a0c0803026140200c0683018140180c0c88e1c241903d60a9b9d06828a6f4c447dfc45284119d2f7c30544b51d06fe8f83388e3f8f0abe6b24738ffe8b32e321575e93ca186cd739be775e4833ec31eb03f015c4390c0a502ae5d49552844af4e8445da0b69bd9b4c95eec94e7842b548c46861cede8dfb280f00caf0ee876fad9f99f3940831dc7cd151c7d64c9025782149e4a64d6fc224134e361516cdb13f7c46f55a810442937b84f5499dcbac246f7af38dbed849c653ee3151043367f223844f05f904165bc6c60fbcfcf0f3f58348b9c0d108eda309af444f33657a65f8fe2c1f53311eaf949967f839863fe2f0673005da23b15b96535ce2374f20b269bbf548f4b07c0f5cfe65978b8715034d6a7fcdf18961eb43d4ddd2488fbb92318cc17e181a28a7a738c71cf0b86b1edd6e0787d42a1d873df8f23b5c7ffcd1f5a39fd379d3748cc3dfbed15547f7b09c4f8d34ac9468357d62ba7435e06b8115b4d05cdf9b8f7fe0eca79f75a3cbd5b5f2937ac1e8c897dfff70a313645696b15dc94e87e69514276824fbf2905ec7c0457111e75f6c16ca65a95cb39b85368d4147167e9fb2cf599ff1cb9b47be5cb3a6c27cbeee32a250d1c36d6958270a901b3d5643ebea6bcf76cc538f71ea9f1937e8c28b8ebde2fe23e86716f05658ba6bae6326f26145e45d6c2ea85e6f8ee111b4d15a90b1f30e6be1e48f7ffefc331d75dffb8e796c19e7b715415a813d50862e72c47278167c7247320f8de93581a894dd6ed750939a2efb22bd209d71da51273be3b1b7b8fde8b3ce74dec36ebcf588e83eb07cb9a5cccd4e52a6a8ccfaad4144f933917be64d9521c5c4da3bd5ecf7cf043bbb10e31b911b4e2e61cbc8505c6bee9676508a9ed22b9496a7c48512fd94640f25b1dfa3fa53c5c7941677f17083872e1ed943f094ba332a16141e7951784ab1b289aac21345e0a15aef1db1a2ae954f29f3a38c4bf91c28af076e5c2895511eba7262e57f18e57b3075594a5df96c5efece05e5d8352d43c0fc6079aecd9c361307733fc74986d50ff774a729f0edf6d48edd6e5ae62d4c2bdbb9e3371c3200d11906a774496804ea97c4b1a210b5288956e437c4c219b64469aad93c40b30d38f84a181c5d648c347e323a1a0b1d59466ba3ad18a9c0cf0fc921047cb140b7807b2c702d808e057a0bd04b5e489fd00e8b9a8200c52dec2de0bb05740fd017035703e861a89700170bea1160bf05b960408ed6a13e5dd902173f2007b49bd90e090caf0158f6c217017558b85f009716e80ba0a7057703d2c7a0cf00798921c77a01d0bf829e00b79bd36fc2ef06fa1ebf67c7608f7330b4b68409c6f4b332980686817aa2c792e1282f8c1da2a8f754529d7684195c879b8ecfbee2b200d8a07a2e967c5557c872b9c5fe0855ed426563a0aea628b71c6f1b9e537625ca79c0f12ba43cd595e3eb70e4a83313b92dab0f4e2967a8c32ce9385bd2a50bbac73206b687d192cfc06404ef44b75492cf38328458f11e4953a6fd9a97778ac2fb42348a17847f2703436224da6f116567ff87e3e61bbe85ab3a77d22dfcac0d10c604ed12b52cbb83507489eb94fc2cec43acc4e8ed9c930a956e230e79d6597605aaa5448e6789c19372366cd35eefc53d2e3eb34dea54ac9d0cb435c2928b695d32de3fcdeb79d5c3e5b3dffa4bf30132d53d0711c4209072b486d4d73e7d69243d5510233a34debdc0825c938117393cf096231a6ae028d82b4feb902cf2183f40547ecb9ba4000cb7611f42759a19cfaeb019b330e85f616220d5468072a77b5893f2fc5c2191f552503d31bd530f47b6677376438023c151966441c6541a177cf7d180171fad2c373423eaaa2971b752b10ac2e17d95b6bc5dd1098b27c1f5b24f65b54d976590265b7ed4fd2b8db652a792cb3e6de2a65bfa45477c38c02bd1cb065cd1214cc67c8dd24b229d8e55c4eb007b3bc55da1343058a67234c026e14e2380a0d1ff07b388c4d4a27bfd16d27e19f3cdc5d08b597d401c444ee41d8be0532b42c7525493d10045d2bb8e3ec68d4ec1705a6143c65beb52cd537be51b3cfbcd723f0a16f2e5cca3933cc57a3fd1deee9ea915f631156ac5bf1687f08db90d20d6a110475349c55d12c134e274a25c5218a6bbbe7b0b6618cd4552a1504f20f19f8a9d443c858e513382601365713a4129295a67d7e3b8ac6ee8ac8b774a3444996fe25a0188c6e23400d7fa7a5b7f784b64d94a612ac0afe8462e29f3f8d83bf8931a90e799ba32a62488929826345c7061dc3f72491b51f6d72d328b314e296fc4f90ceb454bf8f20d5eb20e6233bb9c68e780b88c2e50bfbc9a31a5a25d4bb5bdcac703d27c619fef5a58525e335ffe0f69bc9d83764cdfa8b22a44cb506618ff4800a2e7b73ff2db8b381d163e3df2eaa97d551ca309692685734b41cec843999d6daa550b623c4923c2db94257d3582f8c78ce3076416ec66069e20bf8fb4f121abb92af46e1e258640b833a1db20df556fc6f4fe476c1a94152edadb3c6be3b614aad03dc69bc21199f20d1b7da10344d27a470f77edd18a14f7dc8f6bd8365dcbfb2da6b489d0662bd15c60ccc909017cbcdbc91f08137dd732f0c604b4ccedd4551f67570ad5075d8269a0d0fb95e9501542d62c655c65bfc6bdb9741a0a9d9734bfad7e2989807db4c9ccd34304691d1d69a05c32edad1f1b7b320da8e9e7da3a0e2b8ba0333cec9476753f6ad6fee798a36ab19f4063a50d414e0658d0b18a20b52975804ca72e25a68039b61f5e396b11a3098074695173b919f3736c5ccb754842a2a4bcc21fc8bb34774d233fad7f21c31eab54fa84e0fa823febde47c676289016a84d288c8d019a2adec058288da76bdfc64abe8fc05c2838656a0fcc42df3da82f057e734831470a295f7d03782b157d0de3aeb719724f342e58479d05cff4e0546419a90968d8856e9fbb864816b3244282d73c3f948e32ae9a470589112d58afc183a00aba2dbf223bb85aa60d7cdd5f1403daeb45bc03f9e7b5b60251212b5ff7e21310035a00662fd24593b89125739c50c96c5068eb57fc85a75632105b95450a9dd0fac55b43974c19c84e61a6cc810124e05e191cb7d615104330c26937aee40ab272520a2ef10c8671a01a87568dec3085c03e2190f1a3791d4dc0357e803493507b29e34d241606c123c7ad02c8a75ca09022eb9086d08f3bb74ef8ef545ad7be1d7b797e05b64fb5b0a532872e73639c106911b58b8e166070ee38b4946f6ca98c462135dabc034347fd9d976788fc4fa291333961830d97efb77677701f304d4b83d9b1f45784ee7b0d8d358358ca69243851a2936e0584190ca024f8ced2be39ee7fb4f1c44dd71ac8d364ae94ec99d5483e2aa0c9c96be571e7b49252b0ddc8042a3f6f20dce6ea9ffef0b3cf74d04daf3be0b1e738ffe4c73e2a532f6c274109ad164a66cea88c9e8c2aee77acf30e79ea358ef6d7ba37848bfcbe831a1381aa4299653b0b9a80b2aa8f3aa6acd5ddb262426fb9e3722688e18a05395cd761bcfbfd3bdd75a8311290413c2db413b1ccc960f47f32ced03d7386f34e3bed09ee61937ead286f33e648500e4dd39232367be275cce24cc4a0c89c42e8424634da53a03d9d778e619ad0a42f8b9e9f82d01344013d8b39c2388b20ca308b98ca383988929f2cf134d24e645194096262f65676f381cf1dea5a471df36877113496248f74b36abd60babe62d75a264a1127df22cb98c951a54c481701c1dcd21e71bfe39d7bece316254e6e32cabffbf5639d75f2de3eaea54e4b5fd3de24cd451879e506424338c525c3b20b23065502135bde5967dde9cae39e7daea949d197063188c958cab36f78ef318e3ff95466e8a44f44e224a716fd6f922ba59c02ea93213c119c58381fe0c0ca14f96d4f6ca9431d7ab5134f7a02e373be54b988f672073d0711940a0dab0f939c9c642be2fef78f75d499ce79eaed7d330b0b17abe1d0b3cf3fd93b41274e86b399b755f9b23467064cf6384c893b1691261f46057b7d65eda21b46dfaddeaa86fb794d664ca8a1ae124810f865974d1d2864f6e1553ec0d10f2bef1291cd28685388cc849a43f28c4e811e70fce5d90cf86c4fa0cdc886ab0313391ffb7ebf94dc7c3c6ef424c1606308f19142164349b3439e328f07d09c200d2eaa1a46515d996b8333b0cb1598894f8d7ccd7ee71ec44fbef713f0a2d50fcf71e193b2c628ee921f6ba108a3bd84ad5c25f002f48a62ed82cbe5824ff8f2f00e5f9c8fa2a9a7dad8b9f2f627a0b24332e3493481c030cea4a3cbf711cc4ceff15eba1d0c3048a1a779c13dcc0e8f011e18fc2b11670d7f7b8631291580b3d2174bf8f8c6b6e7d464f78ed272cd9aee70bf1796a1a7279af71f99794c243984a9b106795cb92b2fcd470c13131cae30a3067cbd4c7a13403d248df0f50a07983422a4a2b1974670c690f5dbdf70a0bb09e9af8dbd4ca620bab166acf480751c0e0dd630f752915544314a0b94a18a90dd0163f70e40db8118610c568cfbaa10e79120741ce19c3e71cf115db05e125b3c89b8ae23a37964199a6c615eb431a9bfbf56656ad1a83aada773e02e14c6cc58e95050e79dc3c81b05d779879c949f06f98bfefb91c582832d8394c62c1445dddb82eb699fa8f829312c584e8706e3d421e241e7a2f4ff1904dccab53ed3a0e97db4f23ae7d371b869723fefc2746643d1b8bb2453222200c05ddec4b21fba4b6cead5fd9094f98a3b62a75986d0b91d54f4de2e3d2ef254067a9be381740dfb904b07341a30abc2ec037d3add84e956d6fe1852da65771877feb80e5841dd367261ecc256dc6a0bb2877a210d12835dda9dd0a1f7ca8bef1ab9684ea92452da60c17ebeba55c57d2cdff5668355a6ceb3e94b561a3c04414694a41807bbc6755d82da065f062d0b69e0ababf0f63dfdd1eaaa7f354a97c59ca9c481ea9b0cfa85f96bac2a5ef1e9660e12b9e1ac2f27b54c1c669e6cd4f7c6e2fe5c2894d9c3d16c6db597d27ac9eb805d378b69c002acc61face120eb236468c620a29cd01aa5b696b7ab628b5049ab75705908d011e1b2d4bccab92cc52d3893c7c99f9c04827602eeffb716bc047edbce2d82d3d16f694ba9b576846e514f607fd6a49592de22bdac2b04992065064485caeeeed633c9c56ce618444b63d490a590a3480fa5dbab4842775f4eff7ce6d687f213fe962a8d1215f6c7d8d75af40204b068d247995bac030bab91445da62176031c701172ac07baacb4b55617fb94d13446be888a1b87c81a91745c6c64f07a0ed25c345b2db264b0c166dbc9143975fc7e047d4b46f1384579c260395f5349db26dd3ff86739db44255d9c44ff3286c322f2ea15fb057d03d104439c42f0e0c52de6fb6074254cc9a1461f5d641fbf34a0ff07cf5e4cb9bd7943f56387d01bb6bf0ca3b61aa6c37ea7646cc66ce0ad29faa334f7005decb3e06a918d4ec8e760c5b0b45d028d7486fd69c995738e114a70067e69b11528dadf24b22a86e08567877832227e3646d6c62a7b925cf88a24a51692f6416fd40fe81bcfff52677b5ccac691d28d171cf8a1cfbc78abfa1b9e0543adcf6298a7518a7f5c703004e2930f2e3a3414d5f76e9b1d7cbe94d964caacb5ae50a013d5f1794475d43322300b93c3f2814181f24ca79d03518b0c8714274b44e364d5ba2db8c2ae3fd81546e1cb2f20a9e530e9944f757d7b4bfd1a27acb29225ff2c73503f26b501e4979a29888d437bc517d45b7168790c8e22286fe13be99e007b077cf5c8014d89918ec10f6f85b4539e85f07613257798b1aea6084a6971807c34f591944b2a48bc5c1946fc19bd1f005c552498ec087fac2c1aae770a91197f9b3ec9f5338f817b4744340f93a97b33120e9f3c6a647a394da4512e8f4ad2e0afd194a3740826401331bf93eb6d2b2e856a7e3eeb50003a903b2b3b7c51596e4e4d87269b56025e372e01958520390b64f90991c961893618033cb791095004ec032342f584dc64d91a57685b8a4b78464aa4a05f63bc231d80d917a28e9903bbab18da0bca32edeea956f9d603e3e6646a023e6a5e2cb3513b2fffe783750de22edb8a49bea994beea0d98f26d749d0db128e0581a6ccd5feac47f374be655ddcf3ccddb8e16892f14944885919bd67d6851d9f946f37c72d36432ca6524b2b26d04127648d1d7c1f8c5206944d048c4b88b328120a6256202feac428f86cc7877d4512795c1ee91bbc8113d9933cc1ae99c08a102ee8f10e966234dd333a994f08c8aa62c2085dd3292e8cce8015b54f9c917aaa7627fe8230a776f66917826cbedac84ae0804d2f55668a94c15648b4801ad2c4384acf9bb96ee7293afd811b3416df1fe0b18f0813226181c26689f2b9dfccad86816bc97f5a93460b602c6c8136cd0f08ebf518ec2277481128f28df94ec6dabf2184654816c3f3b1f9f98fc7588c2fd1315da930f5c12f7d216081bfb36d3b65516eb969e6925f0532c8814e4b51b58c50c222b759631cb989a6cb2e9a6bb88660a5ac2ce4d3065c400e48ae2d0267e43c79bb251b91f8433b74265096f5c3162b92f8fec08891d5c81fd9d4af79260a4df4857b027301c572d65141496ecd21bd8461d9263098d236b4e35f0506cf9e6042a7892cf57abde0e520cce474118d0225b6072ab42eb86850e8ae5ae319d25fe8e33c8e21323758a1e90fc2938e9909532ce1541a7f28bcde94897a7ab2b39ae5ee68c170dd8884b8ca7c0a63f849b955039a78446edae8b176c4c6366aa435c8392d79e705098ea7a1b1f7589c4af1ed550c061d2e64772feec03cc7d28fca5d9a7aa299d801c5564439401b50ee858db7d38c12e4f9144e1553436519c6e017710d0acb57541a18dd7c5a957e42dcd5ca3fba0bf9a8883e05d3e78a2ecca491376f7919543ef8bc7c5ce480f836268cee3a0456f0ea905d0329538fc6b3157484a7ae9ee22398bc0f4da516d0a3201944636f385ef88ecdc601486ba932447aeba33f9aefb1f2832b2470f8b07a8c8228a32afb28e06096621eea08076805d01995bd77e4cb13d1cf47ff7ed5f4310f629db507b1bd6e6be066078c4a4cfeb572d75407e2ec60163460ff69ad78138843121a528c3c7b46da1f021305f877157757aaf5fb4af0e3dd284955de8d224aa8a1aa570c94095e483b36edc964161f777450acac6966c8bd4532896c561b0e81204cfbade3bfe9282f40e17a557e3d39c8d0eadbbd6fe114e2b69da124f28f1e4524e288953e44bf0c59572aa3e719f3864b4b8e46a4d4fdf28f73f9549f772d61d81418534f4bb2ac5db583c127457333e36e19047d42b0b7b0f5c49c77b10540fda25f4f4d242038910e38133ad061e47ec2dacc86731e24f11d1ed52b856b8126e2516465beae32135c67dc6f22d6465787cc0f4cedb9cbdba1e8503b8293618c11cc5efbb9716fc765b115fa78dd1d9a28886a9ae0056b2021066b725aa2cd5b19e922eb729596c868f41629ea151134ed98738ca8183e4714ee72e7672bf35c18ec1e17356f0ffd7345f65c3b4d7b71d71bcd10c838501aaa6ef56cf0238388876289132cf44a215da2a8c81b68474c221d2efd58656a86c121ca68b4a4fec94a9c3a4ac4cd2845d82cdbbfd3578b400111d4f99d3c554149feb67909bae59756abf528fafb5840244096ff9c40c538b983c7bd3b722065df0e42bf105261247516aec3f365774c997e634f1bec076090b6511008bedba7e25bb6101e2bccace6d3154d47a357f2ca799a3f9fbd66d13d64e464bdec54d4c5f678b90a5451e6e5eb43ea05ff94ba31617a6200858af89148622cfe744a684f6db4792082ea4e7c5f860c22c6b722a4bc248606ead8818298100f412bb26c40926511a3f43b8f092f59326a2f0d31f1d95e4e569d92b21f539351844a5078c3f641496d1b8dbace79bef6b1019df6a6ccd94f810eaf8c7512955abbaceca01afb42fd9c8ea34ae7d25e80a962bc2633c6e9b6ebf1551e33be1fe5cd35acd0c79c928f71dc1be1c1e5bef199fa408a08369b80b9327042f62db740f2960d910be0b9233452a2a9c951134781ae9f3e6f31b4986c1e79dcc0db20e426ed7a66b1c5dc034c89047ac6ac497a7e3e2f5545393e0e07288d6d9c078b92b9b718f06589025245ed297495d5820127d3f0f326dea639f783c90cdb24dc0d2bc291b8c158bb4ab01052416f6624c71678d931d6e3a388d2b949102535b88c67686718b896fcd82527085f8c23bb132ee72ffa37ea6c2ff25bb27afa43eaba6bba0ad5eafcb258422852ea2a3c202d62b75fdb1d4e64a13c5c64a1c6530fce23a9c1a371c0cf7f534575730e7c224d202bd34c30b663b720385f051be86f90530cdd850acd279237f11656c7d2347865dd8dcf31cd33e9eb726648cdf9812721c38460a998206366a14645e104f6592957c5895e94f40d7de4f76c8a5ff7cd4983be8e6f5d485a6200a408bed71663fee93573f9080ff6d40c22ac6357e4e3f68f102c50b457f48908015aa8d5003f3018aea49697293f8973c4c0c08d733094e984b271b084b13f9a626899bd24dc50c4b3572834ed00591c1d0119ebcfe7a787522dbeac11c2fb89dfedcef25e30b99f967a04b7899dee804210ecd9ee26c06495152e860ddea8a45f1af21b7255e92502e0d3bb93a2ff715b511ad1f9738bef25a61381a3c4d07b97e6202dd6ed8769a90628133ba4762bc204291e30a350ed2fcf226e0650c076763ae3e3c50ba51251c1ab3c1094eafd292ab32e175ab7923b04c640ca51985dad3e7bea9ef576e9f5671d665575512de48040c32a7c779095462bce0c99d51fed26774383ae2deed305c2d2cde3d4a2389969f8b42ea1884e6cef9f7d80ca5435bfd10440f0d007f070d06c8d564dd5db0b0d12ce44fe615058e95bf0e9b6b8a01dd87e414b4517dee2bf106736fd26c041138f6c8a5f2727d5dd23e8d6eb2934682619b1bea5e4b1621d4fc14c23cb770430a102f20275e9978c916b5de4f3948bfe32a8cf911a18380c2ae49df0eddc9a9cf04152dc193074b4e950afa099a8da24bd7a2ab14737d0fb57cb6ab9f480d7e0c67d8c0ffd7123eef3e09dd419ba434ea545e275efb3ac75b234561d5bd9dfe5ec7e5197955f070cf0a819ccf924abdb0c635308284765ca41da68e467801ac11d690710187dbbafabef5b1e8486fab4ef8425e0cef31963829678bf05ae1206f83c86d0a6305029a9c181599ee735bd352de6c43d9b6ddd053582d49651dc17300da29bd6fecf41ea61175f2ce2687f562c96191288eca61ccd94521c1af1652181c5b20c3be8e159d7633c856f45f85df97cbc5d93459118ef8ff22869f0f35358e52de67cd067839e9bf3c69e524d9eda2487e9259299fbb058f3440f2d1b7576e8047444d3493eb149006c0e50ca5a65549ccff1471c98c7b8e3a0b82b0ea04948e249e248374c7d311f4ea78b13f87b20415b8d27d49e0fe229ddf033a7ce72b09fac0e361bef3db80cfab8823660a854f58df6af9954a228716f6172b6372a7125718f907f629907da19ce76f257457ffff6343d07e8cf847d57c94910121250fc98c9dd39e31ad39aa142c535e2ade6965902d9e20fd8169d65d4065930acdcc56ee7de8baea80cd997982f8970fd3d85e45223cd4e10f99c8156d12ccc303ba5d649080fa201ac921c2bdd874d6bf5ffe2a3c763ea9611ec2b4633173017d6e86f94a87eb376c5d8c144970c46fd53f66220db7802544396d3a5d0d35af03104fe8cb3fb0111f07827405da5a4ecdf27beaee59b98887c28a76840b2f4daa9758550ab377fb538d49a63493b3f897fe1023bbd618a81b7047e8d818a3cc5d08aec111c271c37802989130f6bc796c9d17ee138b235f10538bb58e53913536a6e537ce57eb2a55b9b622ee7435a8f1b27d01ce03d18c929cb32e9c85558d07ec4c42e820a364b8d32768e84c612890e015e950691881ae7c861ef4c37a3578acb472398aed27acc9d817a9bd2c37606bf10db64bfb5daae8993093c1eebe86a9645733a9ec087ff594c99b9161964ec3f1e88bb036c6647e209b9f0934fe07283266f9663b2fcea7c6889f919f3df80291c61cfec9de7da736db897d51d92dac64f713f1300d304ab6f6d3cc5d1a370843098e42b0bedd89855a497d2ccf297b9f63176c97c4b249e740eae2a0277ab59424a4f5f0d60ec91ff869d30b667f54853fde68ffacbe6d33340d7e6ecc99939d847d55f9ece04249e34af155b06edfd30797218e245915c2e91007cf7d80fbbacd0c05cda5f55cc2728edce02eda18e1168c55028e14c4700a3760b26639ff0000000000000000806ab25122965854099629a5647cd02794f5c5ab4c2949995224bb8377c199894fd77343db22f9630f806c0a7e0ad509e9740581f474a54ea76895c4a681f02a093da5be34e7990002cbecee5531681893073cfe804ca95295ee4c498c657e40bccbc785ec09578bd8c8f21a23e8e2868e2faed0011e7d406577df39b5bf28d125867c40a7b3d4b37439f334c43e78ec01991a296da5d74fe1c9827a4088fec668299a2678e401f56f11b3ca8829f569433978e00169b19f6c23c9b6c970068d1908078f3ba035c57c4a48364b323c1d0cb00352535f6791286972c554f0a8033a4e95e9c6ab4bc96350b039dc8b1aa8010f3a20f26be7e9d350d9546d647581e3c6efc0d105b90a78cc016dafc956ed4eb5d35143c7d6d051821c6b7240a99eadedcdeef199d8c822863cb6d4b99c2e87d8123ce080cede29995b656ab11043088f37a044f29c635666979835e383871b90fff1d926759f72db581e3cda80522671ad525e7af0600362266abf884cca1a1066aa2c3d9e26e12fb983871a10e2e29faa29574e291f078f34a07c539b9271964573ae7383071a90ee9b7634fae50d1e6740a71845ed64fe1cf5423503c2538c491a696df02803e2c7dfd4b236e5fad23f038cadc1830cc8b08c37bd9a947a2787c00c2d2430630cc8b4694c5b0c21c68e1531207eff4fefaafb65db90c1230c686b11ab7472bc64d2c1804c6192c2d3d62f2035a49b9469ab6b5962c2e0e10554564596b816e6db972e78740119a3a7b204d913a7fd0c2d243003b1e0c10574d8968b1b3d4c9d4ad9024a7b5ec7384929268d3db480fecbb917fb4256826623ab86175f74b1bf45d7c0e187011e5940660be7d15ded2ac924c0030bc8f05b7eda7e5f27df02870df3b802f2a4877cfcc418d25982dda1e373ac0d1da6881550be6dc9bc3c97d45c51cdf13b6e148f2aa0cbdb226c67cc1653f23ee0410574993ad9797659724b86021e534067ba940f2bf77f0e2d2640ca071e5240a4d37eba1725e59032018f2820524dce9dda3309784001399a36938815dc72f27071e309e8ce49345524b30f6133f37002eaab74fe62a4b690c3cf802620f3e6cccb96f7673f7cc741810f53353c9880baf0349573cfdfcd5343c7e3f0b30444960b9bb6f1b391750bf05002aae47bdcbebf65179380d291ff3a7995908058598b98ac72047466fde4e57bde9abd11d0a7a48e07f9521db71701ed1a2e21a96c1381cb21992e53da1e02ea667e829d92e325b2105029feade5b7099fc4270828bd1a9f3df44a75a74040ddc6de48ee77e975f303a496a52595efe20374a5480a3eeef500251ae3ac04f1909f8d07a85c22db77c8779566ed00f5be662bb259af4aa4a8e0239075b6d80778e800d569d9db4f9c6cd0bee0a2461983470e1027b34637cc66ffec35742c79c00c2d243063010c50c0c707fb0366d0989181cd813e3e3e6afc8ecdfb82070e5216c94bc46a121e37f8c4a79bd4cddd52f94f404c121e36f03e7f5d484e21e151832f73487193878f4c83fcabc4757386531b9d4151538a15f3578aa06984870cb08b38bfa61868a7ea2305bf2ccbc9c2080f18946ff209f749e9f43cafd83e240b96d24d75666f1158b8227d9d39c3cd3676ba3f3e5a41dcb6cb31fb8bfc9895082c58c17c29ad16dbd54ec946d60ccf2f667c8e2f74e0d8a267707e31a3865a8d1a665d68608bc5e188c0621548ed142fafc994c3e6142c54e1894a345397bfee9ea185046628028b5478bdba11b5c2021588b86b23f71ff23368cc984163068d19399eb9f8820233b490c08cd3032c4e814e2563bd45d65c1b755320a269486f99b9a95e2e057aaf420a27c136a9d821852667c6626e506b14a854ad2933a7578d5e1105325bd74ef8fb3879b250a053ae544904eb2817bfc5d7d8f123d0117471630437920d1dfb801c15d81dcb002f2a9003c78e0c60600213f8f8f81a356a7009bac60c625fccd0b112984183460e2eb8f8f8300a7ca00600ec800528d019bb26a29b432efe09b48610f2e75c96279cf7932b295daa25f1bb4041058a0db0e8c451eb45238b6a4dca463ea07206587082942a63b2f25cb1620c39a524f4c2f3f5599c05c70e53ec49810fd40001169b40f9c5d5b898dbfe5992032c3481d44ee5e147f3683e79261061e2dbeea90f265019acfee263ce95a489c525909f249648d0114d31c1c212e87793973fb9a4743f615109f46ee40ae6a623263f61410954cbddc7ca5c9a594f584c22a534bbff5e5c128810ff245ea5d568792450aeed29b905cd796a4820adb3b54d24f996fd08440e21e50e49c284133b62bf8f7172857023904192dcd68cada12e23507a22e9cde9e7fe3e8b40a78f49ec0ea2617214818e9c5a53ce1381580db3d90a16238908e4a5b057f9a48740c4530befd0100849e1c3a493cf0fc142204c6b4a7596f259c91002edf139249f7ca7f4920681c896414e362708b48b86b09e4db57f170864e7c90b173cc9fa0608f40453d14aedcf8e95fe800c2631f764d2a65992fc80b418d29a658b244b92fa801e2fb1d7a56224edf980ceebf92a5cbf07b42995258d955b9b5c0fe84e69f3bbb1efbfe70175612e8af58e0764fac869714992b67d076445cf2ec9c3787a6d07d2c98d7d631d501e2f66f9dd68a203dade4cec5e6d5daae7808c5ba7847e9add580ee8546d3aa9f9a4a48d0372d2c98b64221745382065d624ec6f40c998734c6ed90d289db5b3b06f1b901d395edff877b20f1b50636a5d2d5fa76bcf1a10a937c74d5a5f0de898e292ce45f0a0e7a701114b2edb2f664971f36840a9dcfedaf29f01a53afd56e89aacd8bd199015ad73d4c347f5edcb80febe9ca63664b3d39e0ce8ea8a7dfdb1ca3ef9312062f9f67dc6345a9117033a5c3b7d2d4c7be9c38090bd98dc9d7a93cc830199ac2aa6e82109b5fd0ba8545a2ef8e7c51add0ba8ba3b15df24e594f32ea0b5a2e649762a3fc4b98092941a73494f31857b0b08d754c2c3cc5a409c5e9d8c41db939f0594b08daa9b23f6eb6201a999f9e35f299595bd02da4abc3f29ad71da5a013ddf93e364fad9c85601e1a9b13ab56f45cea1022a6ad02423ca4c909c29a04ee65db78a493b2c0584c42b935361f1ad4601a593dc7e7b4baa8e4201eda763a6d32720235eda2d899e64a6ee04a4cea6dbe8319635e94d40ff5aaec78aae498cce04b4e8789680d23acf9ad24bca1454023a6d0af1276f64f54b12d01fa6436b75e3e60509a8cc2984a4ea4fce7247409c72eb4e7532696d6e04f4eeeb24adf52987e64540662a25e226b5a6a57222a03378b4d1906c3498868052c1337b3d2c7ffa42405e7b49f1fad8fdf120a04fd69f4a2706022a5b4a699d64aaeff90788d197a44f576edcac0fd0c147c2ad777a808e31ceb895f294721ea0ffc2c92c71e25b58778036d9a7a2327b2ad7017a5de444dfcedbcc01225bce78fad97412491c3412d3e9afe60608d397b3268d0d50a915696cf2ceaca56b80fa684afdfad73440aba5a896b17469bd7a0628e9494c6f099f0b2719a02ea70b1ee71403747ea7dc13dbbe5e2c6080ee1bddcdcabf0219afe5f1153e27e55d81cacd6c567a2b5032255f7b0f795d7456a0723463fc975bdf7c15889f187f2ec9a4af5b1508bd4b4aa60bbfb1c2a940c66fddfa3fa1af2f2ad0b9d49698fc29d0fd6f163deebce49802b93166531793d4689d52a0e574eef2a37e2c2929d0318888693c47818ecfedbfa62850f1c3abdae5bb1c4381f68b6595e1a3a72f4181961496548c75dd21f909e47f69d594e313f29e40a49f68bb21dcbd69d846065c8e0a08efbcb18f25735fd4a680defe2459fdfe3bf735b29082e93e96f7127c4c1b8533cdfd47afa0e06546d84e22a912c9e2096bb4f598a3f69b24911464e10436667c191d1b2d9d2c9a8098f1681dbed2774a978dacdf71a3b6e063862c98800c71d7bfcf21a897be046447eb54a7d54a96a6eb54faa682958e2701b56e3db1be2c73060b09c870e2274ffa39611ac142164740e6cb09d92559ac90851150bb11c3e978173a295a0494ba2db9dd9c35b6a9aa900511d0e5c134e5fd98f9229f47862c868048396367c6d47093640e0c5908016d1d633d6b89b31c571090ea55bb1a37f8852c808032a11b3bfbce543dfc0374d2d4e93dc6f0de39f601bad3a948ca2922e36f0f90112ec653bfe4013a73dc5cf635292c067780eccb299bcf838798171da06ee33757d42d07682df936d961a2678c6891060788359debf3ab942efbad9690c50d1059c5d37cd2e6268fd9001dac366ef23ddf8c740d90f39525464acf5399845e2c1747842c6880ce77dd9af52c2bd3ee70804560068d191581195a48604617b29801329348d162e47e8d8d672103a2b6cf66d21833cf22066bc5709ac6c25d9d050cd0b162fccc4afbf124fd8a7d6277e94a8a4f3bbb621f51114fb63a92d38a542c6b56c326551d6505f2e28da6f97cb0f57315a7e99047bd27cffc46155df260fa647ecc5e8b9a173b012c2f968b1a4e0a462ab2ccdea7a6624905155a757688215586e51cda9d4223779e74afd7d6f062b92823e5c572713970ecd8730a84c8c78f9d33742bcc14ec0466d098a1821d5e7081baa8c00c1a33bc8b1b1150418effe2023368cc984163860a3e025beac572713f80610a84f599564bd3312585dfff8b2dd64a818af943d8e49f9f4163068d195b6cb13466d098f1f1716380410ae496aca4bd758d39a36614a8d3d3566397544fa4bdd8b7a1304451869946144f9e1642885e65b1ce4d5b092314a824feadc26846f797a0c10005ea442a71b53c8dc1f8047a2f64d4673746498d12ece7e092303c81ea9353f598091b39dc09d4aab7ca5f56dfc8264ea0e3aea770f129e690f44d2072e4ff64cae3e99c9334810e1bb28bdfc6bdfa950974987b4f298d09743a5d2a2b12fd7c829740aea6d194fe1d2cbbb7c41b9365f66cf2ae043267e729993fdbe6764aa0fd73969bbb7812c81c9f64cad3227ce69240847f8b244d67d34f6d241093af3dfb9c7df01d128864caa29ced8ec78e7904724773c3e42cb389d911e8df4beda9724ee2c2d30894b632dbdca172ea31235061e32c7ffe4efe6611e82c3141d7d655043a2e939cd29b930b622210dfb19db917527c6a11812a91d6662c4acc0f398740790e49cf52e618026526cc43f890ec933a15021d73aadf738a3e494409814e6232654edeeaae0d022dc92ec7139f732d0705813cd57120102fe3b9a9d7e93b378040e948e2ce3e2fca84d41f10d144ca75eaa45db88b1f10a712537f67ebf40fe903d273bb6a8c9cc207f4b5c9bed8895d2a6a7b4095b40b1e72f53924450fe8a43df63f479307c444fb9c90648aa994f080ca5eaa546bce496fa5dc019922c89b4fb68c54323b203769bdfed8a9ff52560754f28d3169363aa0e42dc648e94f5e78e680cc9d52fd2b2997d54b0ec851379d1ef2978cc730e2802aad8bb4631ff1b3e460c00155f94e06cb7ffbdce91203186f40b67c2769e9275a57eb02186e40c7d3b5f9d624c93a6e234b5300a30de8d8f354b263ddb23c2e3e5100830da89b35fb9eb03fbfd61a509fe45acedecc29e7e70430d480fe346b49b77c432e578b0530c055f011d001230de8ebfb3db99fe8da351a10d9c46b3a1b0f8f4b9f01e923a64d46adb8a1961950b97583f9a7d734bd29032ae6a6eaa4a4860cc8fcac98f879e97115e0c8b143c77bda18d0316d3831bb5d92eb92821b490ca89a9479e95742f2900a033a09d79cf5ae3aa709b1916568c00003c272f8e64cce142cac2fa024aefc65af7e953ebd808e14b2c4dd38b3123f5be0a8916501185d407f5879b1caf7e102b2fb3de33ce724adc3b1a3df0b1d5ddca8008c2d183be43ab4a25ad8ad0533ae6223eb6164013d9e34defe6d29b18f0d1858e82e3f8cfa269da72ba4aeb1d3325f5640b95e327db1d1dc634c1510b3414c4f8fe6d6b7a880ec2ceb54878600c614d0e1f1eddb6db136a55240f5478a89a9252d245571008c28206fd4a36eaa8ef9caa1802cdb38f2de2592bccb13d0321ef3b4aeea630a13a3000c27203745fbd253dae50602309a808a533ff1747993c41c13101bd2a718a993d494e62520629e243547afcdb15d25a04f5ddf3ccbc269c84902aa63f5e45262ca5f4f48405f24ddf4d56df2553b8c23202b9a7bec2d11ef9c9203478defe2c6165ddc280f80610494a5931953dd65c91f730d805104745231a2a7a96c217c5f02184440c9e01d2ec59ce8582d8601184340a96e0b2999dcf9925b088855374daa347562476a94218c20a073f2d34965c9ecd01608a8129194d49c9ec6f1fc00f54173ba9794575dbe0f50da27fe4166dbd33e3d4096e670d97ee2fcfce96fe4d0a2c0e001c2259dcb7c2ca9bbb68dac1a86c0d8012a7af6befc4de192e6cc021f1f5e70d12380a10384e424b2fc272d69679c008c1ca04d93d6bf773e993f2d1cac6a9fb582c998adff460e2d60dc0055b1f4624dc6bcd21b7f033b72fc094ad06be3e3e3fbc616306c80c863f369447e52b7a90688f1183193f2ca49c3a701caeb2d890d62cf0011f7ceb333573293a86073e458c3050c1960ae1192e54a99d1cdf17ee304bd34fcbbd0c0c7075ac0dfc8a14596000c01460c503d3927db4ae6b9d8481b3af6013426904809183040c752baca2e6b89e0c7c7c78731af40c96537cdf44d7233d67305fa433ca6ac7ec12af536b2b0d87c51058f5620bcc637fa5b481a1767056af2859c424ada77e25cab40854bf9f6d3e920d16408043c54818a8949678c1e9656ce531ea9407f9ef924a2b9929ebb14c10315284d7572642c4f2a081ea7405df453f9d3249dd48a6ce0e3e310207898029da6d4d6cc9e8c6678008f52a044fe8b9f963276449714683ddb58619310c9ea281062dbe7e7bb89029dec3ddadcec4c9c6b8bedc2466fd7f0e28b1a25c081638b0bcca021815378028f5020dd73cab9baaefbaf80e2902b859c4d75e9181b49e36fe4d022053816f0f151fee0f109c4c59d9530cba437a5afde7150a0a8872790934bc52442ccdaf55e27909fbcd2547de78e7d7171c3868e8f1390829c40c51cd3e4762ebb909476e0b109f4e444df2093cd528c268cda2165aff816376c748d1d37b8f0c84465a99a22843c264c2053126b95e9f12607c70e527a895ec5b6d694c578da831298c00218f0377268a1755ae06109a4d7e6d79454d8ef12972e1a60e5510984f6aaa79864dcadce500235d1d44cbc87cb7a9ac724d0ad4987d3fe9d539e860e1e92409c5c75e5a677d894f488043ac36b6c8adbf7166719133c20812c91f6dde53df5e8778a171e8f40c59cb193c7ec9f2ead8dac52020f4720dd3ce56f86d98a1ebf7185041e8d4026110d9fa039fc524bf760044a578d674712dac8c2f6580472c2c65edf0fe1c673689453090f4520620c73b274d2cb125d1b4963c6c7c707e6203c128188917ebefc3cb4a2f1f1610a11e8ce5b9fd3e9a464d554d6e310883413239d5cd646d689c0c310c83ff5d84d9f647dc8e3c8e14531e38047219066f2c2cb44fe89e12704d2ed53df82de9cbc8340256da2eb69fb14478971a28899049489545bd95742e26690802c759f7e99d6b3de47406ce694b47a8ed5f11a0191efb256eb7a8a922a454047af9c9ff731257e8880b289397671a2b5ea1050bf93626a3d19d622270454a6142d26698c97ff20a0a2279d249d0acfa002011d1f1b3626c96d67f603745ebc9c3b4fd1a4c907c8897b395dfa6fd3bb07a854bdf94e7524cb0b0f1093b4969a74f2e7446a07e84bba84a55232d2c775808adb316cab2b8bb8c413317280f40b21095b3b993a7e31708092286aff621b3cb2e90628b1eb727b66b2016ac3835c6f926b2a6d6a800ab9ce994c3dfc79c54656b93c440c1aa03efb42d379ddc4ae4ad06f8346e51e62cc0065d7e3ebe1a7cafa95015a628a1523584e5763316d881103d4ab27fd9ce486fd39c580016ab5aaf53b53ba59d32b902233796633a9a45872052abc6a52da49e7e4ffad408504396d29bbe385cf0a548ceb15c4d2bd0af468c7d3c93a67904fab02d5b93d938acd5e243915a8bcb33152c59684735181509f28d94edc5320ed534ea718da973fc71488bcd721c70e1ba392530a849a6e767ed8a817724881f29cb09322652ad9e928901e96727e4e587b444581d4944fd27d7a0baf0905f27312bf92dfcd9b92a040752675124c2793fae527109a27a3f724cb9cb3f4043aacd268f872f1b24d27d01a3659bf8a8513c868aea974b0d02efd6d0265a949888c5ac50e9e26907375a75cb4cb04ca574d7cccba988c0d132899bf3392cea6ec54bb0432932cf5cddc9af79925d05ef28347d2592550f7ed1b2e16fc752e4aa0da5c3b767ccf95f92490fe71639e942a59ed0248a2481e5e2450a6fa7ae152d0b08b4002dd13ef23cc4e1ad1f911a8a42366cefeadf018e20874f479c956423d58ba6f94a034027d26624ef2ac43ef4f8c407e8a154cf9798ea8498b40a51a4ba9d7d9ee224911a89f71351d2fe9ff5f89405b654ef5cc14cdd6840894381d92b6fc4eddf38740a4cdbd27763783cb6d08549c0bbbf7f2edbfb910a8fa5a8fa53369a2850981889b1a5b9bf919b33b0854d868792a310a0259b5f2c945726ada8140c6145ab9b953c8f701043ae757c5fc3dda8de70fc818ae3d3de6ff38931f50563d331abe2ed9ef036263d3abe8f556b8940f2853baad25495fb214ee019d7df3ff9c8e59dd377a40c4f4e641454f78724b1e5097bbe4e4302b363a1ed061f2f3f9a7042de51dd06b3a9ebe36cbad7776409b07f38813e33726591d10e93672862869934ca2034a7d34297d912fbc9803b2aae24558b5b8a46339a047237586d8ead79b1307d495e7ffb6bc9e6a291c90ff79c4359d55b6f41b509956e6713b5d364dba017d39a7fc114ce68f116c034aca06936d2adece7d6c40c9e4593ee4cb63695c03c256bfc373b43af952120aa00693e4beada4534a4aa6d28012169e62a9e5d150d6ee7d26cf50cc2557b2e7e3442c99013df162959c4bb1e47465a83a3567ae1c5799029001793142f8d21062d2f7efb851945080312054c366ef524f110a2006649692645aa5ace4270ce8dbdccfd8730203fa84475237f1c236247d01a539a31bf53f4c78dc0ba535bfcefefb95764401ba801abd8e25c4647c5d9c0b88b5fa7473776bbad25b409d5d8e5441757376b480b6788b965c6392b13a59408ceec6ca99eb43eab180ac4ce9559fc5b275bd02ea3d09eb9c53592a6d0544ccd9a5f93e39f365aa80f674f7245a79eea3850aa856cb314cce714a676d0a28297ee2af9fb75d2c29a023986cf514369cec5214d0299f7cabdd787b1f28a074c871af3c6cc3549e80ba0ca2d96ebd13d0b925ac7bc8370119af49a618839da65233e1ce242dec677b09e8581f9255968e9ad2ab04d4a4dc55df9cf3c4759380c8b9959e5de3a91c3f48407f5635dd0e4fdb5d8f80ded8ae79bd520cf1a34640243113535d2772fb590444aa5263ef69aad29344409f1223395ef4b870e510903b333b6e1dfeb6648480befc96b53d4b21171304f47c2c9523a636d5ce0001b1293dc6edafad72e507a8ccf5a63df7f3012a9ecc71be2fcd6db71e20462e7a4c1516c6e2c683f782fc57ea2539d9c85a52801d20f443d28a2d6e622fd3012a790c31e79c22a638e600e16ed5b7e172a5c90a07883c692ca458d96e347203549d9dfcd08b13a1003640cb6dd61c5fe11952bc06c88949483c3939272d612114800628adcc79f9d5f5528567804c95e995c2d5e4ee940142ddf5f7f35662904893e2e7bf78016080881d2f6ac430d1f10a442ef1912e87ef7f5372055a3768f6ce1dd7f54bad408e494b297c4bac40649f141783559cdb5781321fd1b32cf93fbfaf0ad4a4d70dbe5b314fdea94075e77a0fd570625954a04f760adae16537254f81d29963a191ce94576b0a74856825bdc5f6f6540af46544cdd6e62105ba375b659f494781b6d4209e82a75b8ca928d06652d32757bfb80a86023556b259e5634081aedb6a6d2d53eb39e613c8f69ca542ce9a6d55f10422c7fc67efd609d404cf139b976a57374e20cb7475925ac7fca53681b00fc1358ffb49f26a049a40c6668b29f74a46900964eeb1d3643a7bce9e74600219ce265fe970049740fa9e8c24f2595ee6c0200b4ba0929dd024b3d99540e44f5a296126a8242925507a2aa7c5adbf12c19b04fa3e776372689d4c7a1d92405d9293d385dfd7cd2d12a8bbd29e4ba5942c2081ce1f35fb55ce7529332864f108949ad5fb7e6e8ef1d34cc8c21188dfd39a4d871b8150f188514c7f6d8a8b11a8b0d22cb1165904e23358bcce924c763c2902ddc16d26a679bb64fa44a074e6182777ae371e4704e24a795a7ca9af9cf5215093e37d68301572e9b021506fc144f6cce1422063e6fb107343082b1302bda19e27e7a7fbd33308945b2c55c9b2bad2250581fe9cafb262ab4020f7644bc813c53f6c060894c9eb9b9e94f9033a8e6f3e77bb9f6ffd808c4be71b839e5b0e4b1f1026dbc2a7a0933c668e0f28a5babac4627acd11db0332c57b2c99b2162f8205bfd0cc420f281349f845b3902817e601edd1642ee778279e193c203d579bde4dba03fa2566678dcb15553c4f02aec09517b2b00322add5c73e15452f48ea80945fcb48e9f37889143aa0d62675ed998c2968cc1c906792e26cd29720642107947cfc7a68b8e280beb8e426c305316d4912b28083b93668885765627a832dae262e597cffdd8032899ebe63f192babb0d4a08714b95fc246d36b022dbe1f3dcd86ba894b214f9b426353fabc198c2d7d7afbaa7cb6940e4785a4fde72cca5c268e83de64fdd9272f119487391f2353c3be4d70c47ddd19c5a9b437ccb90f6ee089efe22b864e0d3752c7127639a64c780ec6950fd8821d55eadc1e5ac3a61f0643c5fbdd5a3c7150cdaa498aec1b39bfa854cc7f44b99c2ac9d5e486a04d1ab18630e2dbba0c9b88eebf212472ee432a9f38b5bd84db75bd76fb4704e8c9ee462ce8fd56441d198da447def848582a5182b72468aa95e011143dab294f359967956703becf564cda52ee6aac0098b413b2591630288f819bd94d5674a130f0552529b47b549b92d4750d48713647c027d19372ce3fa89eb5f862750d253b2affa6523cbec5c27906b37292f5d36ad357078990c4e2073ce1f4bc8d8045aedfb32e94e29737e12323481b25c26bce4a6fbe69ec60c2c3232812c8bf4ae49273181383bb9bfd8771b92e40f322ec1c7e93a8b9e7d4ba0f4c964f2b3a55f0f9a4a2075b737d6f28512a8d3d79c5458c6371d9b044a25d9903c984cc9ff962109646e7fa5c895bea453787c901109b45ceed875d51ab6a31c644002196e932ccaa69a98948f40a9e7b89617b723509972a6545a338d489612a2aee13c6990c108944a569d4f49cc92dd3216812a71e9d7cab46dcaa70c4520c2767fe4cebb26424a1764240215235ed2ce7519117f068d19346668218119d6041988406db04fc2fa2b3ca7380476e8780ad418828c43a025987af9a4af3ec225c31068710bc9224a0c0233b490801964140275174cae76e70b594d844056e78a938fd720909ed992cabe8d8d9f17043a2efb768e74205021854d3af5474cdd020261a93ed88be975d5e4ec51efe27e406f9d5edf90c29d36711f109baba3675bce0774a5f0c13e9faf25b5f780ce22f93462b4c9e3b51ed069b63e4c6fc6f5b479406daadd8ee94fa5968b07845fa9f29439ac37765fe0e042010e81a3828c3b2053a574c226b577cb6a07948d6c69122d2d99671d5031c49828394ea7a44c3a20ab435c536f79cb2a3907e4984a92f02639a06253f585d377164b1807448c98f73127b3ef170ea83e55cf3ade713d65de50d277e92ea4931b107ed9e96dd5b501f5175bb379c706c4c69e982462c535ddd680b019cf0b4b971a905e2a6925c570716b1a50b3e7a7b487d9cc242f41e3d02105196840e5ecf594eb4a67c69c016d96cee54e87980125374396743bc1532969cca0816540ec6564b9cedb9d3d27037aee7ec5cd1e037af34c66e6c699f82931a064aa14b256cc33d10c03424eb5ef5ab6c0803a93a9498dc5d1bd5ac617501633e49dcfdd9e0b7b01e5316fb6b6d2ada86217509711839574bbd8980b482deb70f1f57d934b1f1f3a8e8c2d20c4bc828f69eb6f846801bd2bff22f16359e6504616909e9ab7df74968451061610717b433347b55fabcf15d099a2b6ff1fdee1943e3efe0b13bcd7e83fc10d645801913b679cee597a52c12a20eec37bd2617f7fe652041954407eff6b8eae6a9875a6808a6f3aa9f455261f4d11820c2920bfb233c4f21817dfeeb8a1e3c609ce0c2d1cb0e3868e1b1ba851e3e3e33f3e9e011f1fef1f1f358e8c282093ecb4ff314693249101057448c173364f1e72b818175cf041c61350a95fd2eb3d4cecb0b19165650337bc500051a3c0076a18600a329c80dafff9cb18621f5db69185663670c30b05e8b8e1c5167204194d40a9082975881f2ca60d6e20078e54638b7ecff1354e007390c10484d8f9a6f3dcad9cb98dac7c818c2520cf2fe7949e950a642801552adddba2c7d78d6cf1858ecf51a3c66fe15dac8db324a0fe269c5ad2ce315c65230b59200309a8d2bc9b195493e4e8d8cfd15929407a0484a6b0944bfbdc33b47040921dc830024a58908b95b6b4afd34540a72ee199279c8a08a86d0fb7c14c6790909e818c21582ab5f425f131ec376a542507640801f55997e61713b24764040125d6dc5394df4b891a1090f982e9bcb1c1f24d3bde01e407483d53a6bc3def08193ed0addb645e865c99838c1ef4e172a7d4eb333d1b64f00019dd44f89fb58d1ca91ac8d801e223ec275d21298fabee90a103a4e7b8b3e12e478c4993838b2fb8b8d102193940a48c236a3a668edc5ec3011f1f3abac08102193840a86c59f0dc569f73551dc8b801f22c7216cbeea74b5f946103544c22e5521f217804193540f67bbac8fd9ed9e66206800619344086af92f85fbf295312077671c306326680f04fd33d216ba68f181b59fd859f24c89001cae4f26fbebb796bcf163a6a2c40460c502aff678e1c6233b47000067020030688a4c47eeccb21a29a1b62bc0225fd4f84c963d23e7c6a78176b16f8feee02471713d8f1f14163860a52065440e3e343c73e80007588e10a64b8643a6b98ae4ac9d1058ea2850426c0800e74518118ad40e77dcd69c153a946175b63479f7d7cecf84fa6f8108315a8d3a494f0d495ee2a6915a860f1e1c5ab2768d2ab0299e7baea3ea2acda9d0ac44b3a3d16ab5a92bba840a96c192f25b93905aa638cd7b1ef68de1753a0a48686bf18eb3e66aabfc8b1230319f8f8e0c0173872bc8e18a5408f692dcdac9e19939e14f5310a5198bfe35aae8c8dac2db658f7fdf8b8b139b4c8538918a140c65c9fdc684e1a496f232b0628ea6314313e91e52c95732e70e4481f1f052111c313f5614f88d10974c530d5695a578e189c6867378710378535a16e82a43d99ac3ffda38e189a6082e77549f6b9b1b3e38b0974d1007381189940c79b8a263155dad11013a8a44a25eb58395730635c0215b3b62661399948918e6109f4698a61c763de724e8c4aa0f347d2fcf98e68c2a20442c285f6e6a0593cc7492037e4dccfbd5459ce4902d91723bda8fe7e7fc6001423128818fbc1c342121208f5b6b4d86893b3ac4188f108748e14d1c2daefbba7bbb8440c47a06436714bcd94e6e2a78d4096de184e84d54aad96d53962588c406d29a531231237c45804aacb4b26f1672ae6cea7c7008d34c45004e23685dfce51bb46d3188940f5db5ccc9e9336408121c440c4f5a9a19a829b892cc63884933ee5f2b9e605310c7187a5468dd15453bcf090e44f75c9d58579b113a04079b15c74515a10a31088fd1b4ff25a62422f3652035d54c0cabbf8a2461738aeb8b87148108310489d536aeaf2477e2c5a88310884a4f79cd1e4acaba559882108b4bea60f93fae45bcb18814075780733117c3e520c0b31008134d30f89593f789565ae0a31fe8030d9b96a7d533ab93bd6ad1010c30f68b318adc655ac24a6c4e8033a5b728e0962f0012566f3a7385b613938b42af0f1a1a3043870d8b0a23183ccb0800466c4d80372d7c34d687219395f0fc8a4b5df9e3e29651dce0332e9eb9ed0acb9f2d5cc11030f3762dc01dd5e29f94acde4b733c7728d1d3f82720c470c3ba035addc8ba45c39ad062b461d1017433e0bbad1e5540a77c4a003f22e62e54c527e73c8cd019d3bf2bfe689f2d12c3614a0821c5a50e003355610430ee8949674fa60ca2bb86d23abc6165bacedb8c1c58d2d62c421e57d593151a2b603c71619f8f8d0b103c7161690c08c18704067fc601f2ce4f2994dc678032a5c73642e769d8a8cc44211c30de6ccfe7a4c176200c0418c36a0d43afb8420295fa76a23ad72ecf0a20931d88090db9158ab3177ea567310630da8cdc1c295695e0d6889266272d1da54ada60125e5d2897d33e91a4503c27efdeb2d5ab0fbf00cc84b2ade2adfd9b19bc1ceca936b4b59ca80926117ee61e9e366cfac54f000f0410c32a044cef789ff6ec2c53406d497322bf1299d662d8901d921ae56e9ce8701913c2799b7a9327bdac1804eb319214b0ede63fa1750253bc1a345cfe9767b0199c7b2da73aabb800ea673ca174d774fc25c40a42cc15b645350cdec16eefdf436315f560b0851ad8e1f7724a965b380d2cf27793de6f4bec502cad492ca71b5e3ec75ae808c1ac7920a298adb75ac80fad5a4fadd449212d72aa076ce3c9a6e3c91a45201996fb2fa068d3559a35340c5b2ec32c9d4b85c540aa8f1fddf94abdffc340a885896ef7c434ad2328502eae2cbd59509cb3fd12720de939ba5accab9f77402caffba274439b1b9b309282197f3266d3a66b99309a88f29485277d5e184b904646ef637a941c7b3974a40268b9da8140f662359241206c3a15028100a44c7bc07231400000010161306639158384b93cd0f140003503e3042442e18221816128a0482812810068481a150180c0c84c2e04028180a8611d124935f03a2cb139b1ea800673f226b790dbe22fa1bcc05ce1665d4c1a1b84a7da14317628682d8c63866084aaf9d41fcfbff8afb94580804849c2892f817c6ba8b19cc2b41140cdab7ee79da8045a5ee48677d2941665b5127740e15c2b50bf4e041cd875993ae05e838697714df84511339c71da9474179abf8601f1fc4c9b8bfa6d3ed0c115a16329dee058935d29fcf3a8f380524705fd2b541ad85969c43048b6932081325f326dd37dad53e3198fefeede3e96ee50087f5641fe06e5d08500f1d02b0e0a88f5ec4928c570a7f8773fc09cd0e96043fc411449b71444983fb83a70b8ffe05b495a312ce98b9666096dc554370bc5383a2306535444e8cafb335e7fa775ed2924052443bc974019244ad2ea2acc16f3b4bc5e97d6e8628d6b760a7d8143e6b2cc3445de080d8cc6e766eac2ae1d7aefa7cc7c3a9b1d61745368fafe4765e22c720a3684da9ab679ed1de536dec1ff7f2b8bbc4e626b1e66b2af0514c12b98e6761d45aedea4982884b2900c6b59fa1589ac44cde006a4d4b2119ad2d5742523453af5200576be03897f855fee4d5f270814ac78c29cec1872981b31c517995c1d7d080f52d807afa3df3e6c9de8263a475251a2613c2830bd1b7f98f4a7f7190e965fdc94fbee5acdce1bd09307a543dcebc91e9ed8a746a26f582fd29995079f84f7ae9c5e45df3c009be0990e76ef0cd3be5d724c8c4dfa149d2ee09b9c183a50d6e4ea4b70046ed44b73c6cf50e36f37af7f6fa0e3809b6986c1706773d2f8ce78851d0a195d7c14fcbc0ee65c7beec078887a78107bef16e0ce6cd33fb4c5ebaeea2e8ca041abbe3158e98c90ceacd67ba538d3b7ba729aa1b2212bebbc179c9ce620c1202e36e611d9022240dc8fbd8ab81b88c4784e7c0c3930a68e939a01ec15e7c672fc99395a959b027d5c6ab9b0c3f5702d4d8039b5046bde2803acadd6d514d0df23c1e5ac7d354b5cdbe7ac2d03b778ce3717c6ebda6b8d715393daaf42755e486176bd90c731834c79f1f0d8931544a94d0f10df63de94ada65ae0f8647a20f430186752398cbe8288d94e22069e6d6f44becc40d8620ebe835f46f9f91751d8ee10482f4f871f17af78d270f350e2ffdeb45bdf2a84c54d1a322f2ab4dc0d323801d0e55487249b1d95b2562c8667aa52ce98d858493cf819514eb231ba3940dfbcb4628173895e332d7cd2216858e1b564f94ef555f3a965b70da2299018bafdde6420877a498b439fe783aab2412d5cea89a11b1587f778378a39e70f7e5ab3620864a607997768e9bb01844a6953eef73c5ae6a3f8e045c6fe6b38acb23f1c4f5878d4ae785549c14acfc9d716c9440b6ff82f406b6c85139bc286427aad7a384689fdfbb32c2181da82351e1d7df4104c1076471d0ef6eb28285fc571bb2dc1c80c870fd933b189912debd8674a91b92f9092aea76c892cb14bb9148b1d974d3add12fc605d3d557606c081833616539fd68262523a8958088a8e04474caace5cd761b2aead004d50a2002f8ace5814382f44cc0b8e486521325ace2ff8004dcfed42dc07c6ea4693217801afa52866caa194f68ef2c81413ca07f58f4fe6750dab5d4895d848ad629c34a1480020373ceab1ae7dd1bc9c9f1ac59cdbed9ece3a360b0d99c3991895f734f9194c258e558a3ff31c9fa30207f5eab694c7bf50a34a0f88ca81deb6f4902ad5bdbea60bc11dc6f5fe86612caf6e2641e5256bfacd77e15321f5e4787e93ac5b5662c25705eec4408cab0845e14eacecee97fd59c9134233e5d97d2623c58d233698d4c006f0ef12bc0e07f34c49fcc92b38f88f27728290cd5e543919148b0095bc543c57b1aea8008d40d073e02b1f2a430187dd48a8c9c68b065d1882f7f40983446b4f41b68491124794fffbb8b148febeebd8a490582703754014960ddbc45154f29fc7eddc40972d96d15871cd02c8926d5e988134158119e0a474aabfbe8375aed4dd09b32a65f85bea350c656074a810182e594d603210af94bb891f4f05b11db484d8e614a123c7662c8a8899f1340c8d150835c118113d2346641ad5d7307bd130d3ca979bcf68a7693abc138118d29f4093fe383f7cf89c37340ebb32304c57d4b7d69997206a243dfa1fec8159c37cd95ed98c237fb6355ab6bc3eddbf730b0560998de16a69e4b230b9692ccf30861077e33771db027fad5578f905f7bc5c6b674a513f820bf66855c46d5e0cf5fc67dbdb1a2233263cee4379b5189e9ea1c230affdafd4782568768365689945974c830fbf6c9a202b544081332e1b146ed944fe35525196314fe9c6910c1ea002514dcebaaf81f2d9352e756766d8abbf791f555d957531ad0999b353bb8bcb10597e9c43711414961abb23b69e44cb4889a9d56b4b8e30223fb592759809293e9c65b64020a6206b7f399149478abd6a47632c29d0f5ea1336e041d0bc48d72f90ea190f1dccef612b4a2aebc7a6c1c98aed3d255e4aa1b8b60af8abbaa8fffe6481b2259ee07053f359f4c366e8fbea7e7c40aa7056565a4b4984f077294471bab5c8a0e8806e6a79e5c6313e9ea0cdf9350c8aca67632d73e896e2c8cbb0b0809c4e07798ff033e20dfee8c6723138f625c0262da34435171690c727fb7be2447ae687bd04f964d1aa47c1138436e52418130581a31a6a5255ae17123a3577bbc296db940bf20619cdda30d0d39fb143837b4aa454f8a8bb1ff8328db41f493603eb34bf921ad38db93799408c5b633a44dee1e45951a1d0783a43807f8b0e56a073a61038725d8aad1279b583c366e23e53800a405016ec04b41838e9802de91e0f2f627fd154a1bbca41c5073790062f59af320f474d76f212b6008eef17c1aef30043884f00607d0f16db729c2b229ade552b1edb2d7042f3602a641c3424e14fb06eed5866f47276d82294b835198b23baefa7b5db0f159aeab9481121e0bb1a4d275f3239f24fd408464308c77050ccd6446adcbf9751269c0ca3b7bec85f4571fd1a1681fe45a1975bd83d40533d55a626807dabef20aff5052607769bb9e7e8a246c872423c57259d99cf57009694886e15a9e45be8302132f0f01f9bea6adc9a235cd5f8a1cbaa025c30aec722bf3b814e10c60afe91b8d99c05ebe5e534872f93fefb6c922d6fa7d62c0430cb70ed2311deec913187c94e6a62ccc41c6e7b574ad86108d4b064ea178588786d2ef23f9f4570c64e3bfc882df687406b38db83ba4037ee9b7f43da2556e959ca48a5da87059476abc54c98dbbc1b38cff64f77f4bf2fb7a199d2c5365b65c302e37d4a8072822d0c3793105c0b88492f845dc039a134d6046c3ee3ea7436d03e9081785da1cebe05ebf0d15b33f4f8758c49b71db228769c50df56ea804b4f64adf87e2b732b3641704dadbffb405e8fc710862aa566d06f40009c51e2e22712f1f33ed5ae85225e5c18e5e0dd0990168e1930c876843667ee110633c09561f5e43756ffa869ed674c0b09912bb1eed2872bb6ca8bd46648fbff74cd5be41a3b949dfbb099d7f75c521987f7f19a8e15f214a66c9e3c68cd68b4865c69733bd3049cd0df74df8a786703a8c7772ea9dca2f5898505380828472de1d6c18d2bbac50bb339e304904b2e3cd60974cdb1c818f3d78d825de8d661c34f4e4c6755685730b9447b6ddb0805dc9c5e68a162fd69d8dbd0a580e75436c54670b1635106af1a55b36759d0e795871604aab64243d6fe06313fd48ff133a6b1ffcd2ad7a7272aa7a4eb5f6b5d4b2c0e097c84118407d91ca0f910f18d4a24bb7afec8868087fb225f15f1e09acc336312d4b6a803f83dfe6f2015df290794c0ce6cbd4f4d8a1dcd3ff5c7ae8593ae7005b4e8fe801f04fbf0cf4ade9c9da84e2ab80ab01781d546c7e8baf443330c2c9ff8103b6bae38451a9ae23a287dbf5289d93053e6c78e35206236484d8f01d1ec86aadeab56349d00d8098aadc83e119053bf724e06e6910df048a449104e0008f5f7781da55ecc201f217e5c1036b1e68e418bbe4d9b2420f5ee444f944fc4549977dc57d31641f534ace7e2a09d431cdc012dd94228eb77d33e53a3b65d95e9a9cebc313c0f46bc6080ab29167b0aa7950336850a9bdfd5c3cd70441b0295f722313f9df3f16903120eb8b6f4667192c3bea5a23c276f5a814cfcad5f0c2923d870f7b4a369c3608272fc15a4c196cd26975b70ab70792aac1def2b95560c171e1fdb00eb05e5626152efb06b62c92610f222925248eda3a6aa9a8f5a620e10b491882b8fec6fc6ed5e45934b784a1539e2d7ce01cf610129caf2869fc6e3049b93b71966ac2803ec0fb56fc7df7afc05ff13a850f73a55f81fb9a8c721c4722c1048924cf1f91c06f41fad922819a348817e122a105e1680e10a76fbbff7bddb2d55d1e397255f07525ea76e932d9bad9e229abe5bdeea5aeb3ba1510e20e5f60982e872eb16e86ee615d18badbba2b746b74c1ebcad1cdd755a37ba50b42778e2eb7a63b72343618c0e9fed965ae779b17c45d98f67af136b6abb377042f9cbbdf7b19de8bc71bf22e58bcf57c1c395413ce7414f29c963f60f7c94018c049644604618e00c17499c5361f37e6d62fe40987718c8ddea0283c9017f063a34ca927c642133fdd772d323e11d0ce23d35682733e84b32f7184ff77ba4c3d628a4c5731f27845b464b2c99d77a4704e82fac9cc1bc12513d68e1734c6114c1c666f06110394bde93ced1016e9906a18625db4496288593b55a35873889880ed7c420cfc0bfa1ac036c83400ad0cc6fc841e390345061506a0e16051d706e5b26c90cee0c60094c13c03cc07e8116a0ca00c62185cc783e5eb8f273adee0d3a046198cb9a613af05060f0d7c0d809806634060e7831b28788069c2c47ad38df3d6e2b9fa017b1a27cb755b6069b7c5b4d2c5e74d0361a8613e4932ea1ec6727ea1a138433038808609ca74d08131934107c226936e5c84439ba425008a006001f4013c010096027c61f87313a280ac0369046c058c30005b6003000d003d409801b80ee409ac04a015b01866b24eaf22365b90d8cd143a0c00158087011105b4014e00103d0033de51867102127d30106a6d76809fb018df217f9ad8c1dc1bde4d7c23d1974db0876870eb872ad23c9a608c664159897bac5e6a8afbeb6a40d53d3265dcb34fd9878a8ab925655dc7628e6631be6f415f2a4d7f5a046f04572fa7e84e00efc68adfe0d240a46a1dd085aab5f611d6d5fc2ae12bb2abe447a51727ba664b67a42a241cdde02f0a7372abb901ed833108701d6020a879508d20c2608e0199cd03e83176dfe2aab4810eec26406a840d51099e11458399caa814b95683590d76f7d375684f1aa431b86ec063f0dc00c70094410c038f4123830d0330069b0583659c012a6b33a030008cc18ee706b35b642f8d8ceb32617c4ba097c01a08319a8779896c939ae0441c2044d8da60630a67c649e88d287d41f399db4037eeab053275103a466e16009403c0b404c6b8540160be0cc28ae606c0406596906dc3e90a00b63960154551dc622e40ba400e002901d207420ab82e603d06300ec12db2600910ae0f44061e400ec0210708dbe0e1ba0e008000600be00ade508c870650074005e0058dad5b208d998fab2c5af45995c62805d54a368b4423b40f0e96da87014233321090c382e8b2803db97ea0f718a7c93d36f438e5d72302dac9a061254926f3b0ad9bc69663cecefb4152bb994d022be8a59f72dfe3f40781834eca4ba3178aa15721caeab8bdf7a5c87a8220ec207c201641004f84f653a14cfc55c4a644d310a04c4484f4e3f1f60344e902d012f152eb956104ce3b92daedb47f2e8200750f02360d44d4b2c8dfa5e8a6006ed013f4523c1c235893216a9860b1b324e92ccdbd7ed36dbcb995783d5982e6c61844ca28f669929a4b1c60b614baa95e272017239b1160c8db038985acceb7895205be015a834d5637187d75461e4969aa2148c5f407680c740716045e21402c170d3f27d4ade20d6620d288b51433681a1d218dbfa67a35d75116fd9f861475752be0fd87cb44dcc2b5ac333aae389f068b8d1ef3d52a8916b49311bc2612f6b787c07fb47d82e8b246b5eb72fa158eefe162acd13ad7e23a48b5aff665f2f4e568dd2dc78aeaa6ca31f03df47e1a1f56d321c21fee12e8d56f09483091ba3cb905dc154dd31aad49f8eba6d34239ab052702b22ede82d1e6f02d79db2cd056f355cfa17b5999bb4438d6a5f31c6fde0fcb0ef6a587f937b9ed87deaecbb98295c91ab27d41f5fd84a944f364ea50b860c17445624006aca38ad4d85aafb73790520d23ab8293b6ee1b1be5c326cde5f537b6a90ebd622d92c4c5a72eaf7947031abcb04212fdcd5872edb245ec5158efe1840c8bb2bbfadac8f62a0dca0002f1b957f3b8b66cb82d716738407d7e1d07109b24de170265a280048c70387370e82aa76cec7f23c171e089436b563883b8a727c6ecca25b8e8f0a06c3ae6a49cf3f9c5df745f3c78709f27f2fa1e6338c01347706a6b4f1ed73c4e47fad55d528c435b4b1c26f46e8e80e2fd42145472b41e0bbe5b692870c381bd03716f96c95835e42641bcf452a238c732d9a7300a8b8022feb73c9cfec60e18713107e332cdd98d8a771549683a332fa50a7a162d0e09b90d37a47d1f14ede3a78c05264d123cde40f86251c892dda0d486947b30634aaa2100d77fc72811a880fa1db87a278c9351941ff7359cd1fb65740938f73e6f0a71b05a778a6bd1a38cb1362777981ad607b3506c44b4682182587d5c3a6db863348cd0e20b1f9e4eb8c10f4242f20b3f58b0aa7cf00acf28090245128aa75d41781f8c09f90c5a2ee7b3880b8aebeefaa320660bf577489462b965765d8caad0318c9b3fad47d3f868875f5daa73a41f0e0e0b2a973c8e7a8d94c54d8982cc1258a313a8c82ab614dda9e203ce78ac108a1fca3c7bbc614744846d88a77341d5eb89441562b1d4b19dc3691a32020a71e874a38c23ed8aa809ab7bd522e484b68dd788267042241c7455415253a160a49b9026e98120ad230258b518d9660af8c292bf7fd5c32e028034be1557d6da7208d42eed31782005485730b4e3c546c93720181bbe192038323ea0266ea53dfc291d08bc1dca9addef3b51ba6769669991a33913f254ccc67bdd8378810b0ec1cdbbefe6fde97c65e03778c272bd76902f80bafd83e013b1f3ea03edde7af5d7b54f67187ca9fc7172a3851322c5a8bc640c2378aa2c6696b3a7b12098c8bd2d2357bbd57a1da15b3482fd2ee408ca7984fcb9e9e70996d76d6908c21fe69e44e305e9e49bd68b70f8e08be6dc267c5a827b55964e093ec62037aed5da8cd0437df3d481ea339a529dacccfa6b94c30723b42f1ef3055a07355d4a8a50fd3de7d22458a409b30d68e8d09ca21c27e49d7812e27db19fe9ae8d54e5f918513a7e9c4f4a1234fd35bf82decccc006775f6725035772779fbb9c57664feefb6eaafb3ba823b984c1e1c8ffe02c763ff0678efad69ee36a20a78b76539049511464bbeb30ab0781f5d21a08171269e55edd192e1c29199089feda33558f45fb061619e23ab214ffd1634f701120983b59e3540599bc511093070022c2be0d17554887e72d0ba1413aa8c4b30f654ebbb9cbe087146dac666104fee4b68332b6219f8252adef99570e97ac4b1024839b94a66f9a0734918d4323a8bd9a9f8e8ce52920513b24f83dbd4c663629b142f788ec13d5b70ef38d414a1f01e1bbf6e979a69159a21f081de121d910e73d19f5096a87c23c978799c45eaedb2762ad75bcf222c43de3a7d5293b3be9822b0f5b5661420a5d1b5b7e862677b6957c24979f8014405023443b6f1c3eaef0c104f238dba4a62d3dab0c7f490ac4a321b196ccf21e6243d862b72f2ed2e1851b1b489a15ea97fcfd53bc2ff520cf7d6d7ca0ca411a10ba7d4e2483a8abdb7cf8856f795cae45f2bec3646a1332f14ae31eab4f31e167d46bd95c1b5f353dd3ab073df790297d3ed99d99feb16fe80f44029864e27820ca97d4cfcbc84aed1aaafe6cdb0eb6111759cfb59d65940b8df5b84063a79703cec3a3518bf218492c22c0ab1b8243f5c64df6dd1511b3d7832b4fe300aaaad62591f8de14eb52568c70c1f139b84d28e33af641f7dcd5165af35d0a462502e3f407c2e6aa26148e271b365658fc3895ec72c5b21b94dc50a169694eac373ba191ef4c821956ed5afda5a79165a845423ea8a9af1490e94abb93047cdd67199c800089afedd274000cad19c612b4d982451c9e54627d4dbd430d8bed3c128ef311018898911dded1ab70a9ce3f807a0e8b7c0ac193a54f2c15c1ad71b0d2f0a97c272180a1dab21719cde0a2e93b81506e59da0d3ea4bc6ed9c25ded24a5263c9070615e38672a344820a929cc16c69cae8da1bf4bc8362609c1effd174820ac82a186254c18b221fd16d97772cb93a28c30c887e24274873312525936f678e5abd75abb772b94dacd49a7455ed959a35011f7dc7078e4d96631e82cedb893ea0c3dda8872e825b3361ec36438711ab084f289a67a61cc840f67f5418ad0f238227ca644834a1ca0bb5931f04ce93162ad552a288004d4abeb2b58924bd0be0811c3ebba8c359bb4c55c274d821061d628efec8a5605869fe828abaf0fc34abe6f309df239df7f831bf10ccd5467074092eb41fc2b4d45cee0792e01a5bc9ef36eab8b7223f1e90403f0594fc9955f645ad969fc8f844e3e3ada8e9e956f5602ce77dd7351f87535b0e42987c82e60509af8cb0327e30b4b9c0ab2869bc0fca4f665da41c286c5aecc319bae1c9b5d6e457b0b9c2417495a15f15caeb14e294549617afe3218005216345985d97c0615ffbc54c0bfd5e229abe9227ce9d6b77bb46485b4987207c4050cfb451f46e87b17f3a351c0971d222977c615a1c12044594d7e9161c56cac40ad85f1730381cbbac3b93bc63133e6f3f21f4a6077ca13930bf46b0c73264bc03dc4a4d701546fe75233a5e3844afebeb7cfac630567a22f1f0534fa632d18be96d6fc718a61ca6e6d521d4a41b28ea8725b78d9ae1dba554dfdc9dbcb8c0d53c1cd5beb38b68b3535a509e05a23ea9c2bcb65b1d598e50d4d0da1ce82172f8bd57ab3c577f6bd5ff8312f8dba64af350989239ec94f53248b25d8c1fa2977110a8e3a04951aadffb1de72c1bf582e0b7912ad160518d0a6299283e8e4d7efc77d1ca1a19078c0c99cce9f223550e4225f37a9e5ecfcd71be3edea9f85cab8c536e0d1938ab1f301244c6291c30aaa629624996e11498103adb3edc628f16a4917bc6487d9ec9f632d093abf2b40759767ac1dde5972924bb95032ed9e289d849f5a753ed132028d05b7383c16dd03b2f890032383b84c862bfbe93c7bf56d2407949278e105038f3a68b30a3953936aac628c6d2df29e74307603d869648d3eec7f2a2395168bf09b48d8308522fc7c9d3364608268c9b1049027d8712680402a6a8969b3fcc39edad30419d186a5da2b118ec397afb02fe25a3d224d4f34583fd731ba89e291222f24206ea9c04ee6d2fdbcb0161a44af9fa99da969c2ec074e2c24fca86dc92fdcb913431ae00155ae4194e5c3170aa88c91f74abe1debbe114191acb2266eeca4f82d8815bd808530d6f5d0a9ff808edad0bb5b8778bd499e1a30873dd36b92279c8991d841a62c4635fab2e46ac413140d771226161294204d7d32f5598785321030880d47f1f61332b522eb5b73a9bc0d7f6d15c49137cbb2ea17f3e9371c23b75a6ee88d161f47d970b46dc73090d08673b4de7bdb05f29e2253d470249f199e04689155bfa66173fb0d411b6625b958fe2a4e538e096d66fb9bcf5d702e122f5c216edce2ae5c9542037cfbce434ea879cb8160f845cb8c18e9872f1c5e289ed1524845fc90564301b2799b2620b817b1f72895a069395bb2028b5d9d623e8e1103d074266928bd2914679b5aa54f7fa40a4b6d003b619dd4d043550b7f53b3b4a027cfebe483b09c6062598ad4393128fc9788a6b9cbd747af0dfa66a84e4aa168546a5507e33e7ddb9f4c477798aa5ba821bce41fb8a9ed26ad049d891e0d03922fae951e87c85de3215d8924f04e1795087c253f965c04067f40cd51091fc7a61c628e2e26e50485d79b5e67e019b573d276a03c5a2aa0bf610182c8e2b4eabb0207ce93ce497b63c3cfb9ef922e809ba0c860d71a86ec209603b7c340295d0f6c490687fee4de2f376a4f5ab7ef03617e8800593ec7a6c39c4cb4ee220bc8a978ab71c5248f37e0032b56c1d0fc88d8e6f56eea451cd266b37b96062fc033b3306a3d821db776618ade7871324286557dc8059b848b3a3dacc35c02c939dc9bc7525376134b143ba77895d1729f00f58908968f4aa38c14c496eb60a8944373c23b0655f1b698fe387588d3fcff88edec1b3f094047820aa0ebeba657fd7fcd9c06335b805aca2cde6990e1ac920c2559a8e45b78a6a91ae056dee2bf1c9bac37f5ef1516fe3d037478d7f27d34c28e177ac7ee90808e9d75c95014f5ec1cce63aa9ee6d4108e1bd4cbde1c200f53510ac52b67725496fdc04cee24b5dbd82df59ae0d7d2c90324a970e42ceac3d375fd150c877a152cb04d626477776d25c64958d82a017a3747f48be6d3e5691328eae94cd30ef800656453ff255a806b18ff720f965daab9379dd9e808c9400e106cd92aa874f0137e5ff2737417c2d70355caef5928d590f7e7bb3bc3ba13a98143d996a8ab1704a8ce729638221249e1b82d71615e397878d06507691b13f4a966c3b97e101dc5a25e6ec98c2f03a47f5d32d9815daf91661f702ba1392fda102595083704d117b70beeab58ce707db8b829a697b6e695142110dbb7601607126bf7e63e9258cea6af5e0ba4dccb37c5a6e63a0c755bc0c3bc4f082d99dd41ca74115d88276fc705454f88e086d48d3394f9932f7e65c1f935236df1be986211486907cec86ef6dac83d3191a9e13c3107ee058bbfc507b7beedcc97642279aff978e0de7a4f21b6fb6f47b1376dece447f72e3e3165b7c659ac0fd59ae110c7de7e78144c5fe7ad31540045da69629733b134e42596876270bd9f6e5b06f6226d7ba494d5b975eb8221c4c6392153f432eec6025f7c1ff3053101bb1e681dc808c0b9604a006be42ad6095c0f72c1be36a09430891e935c8f729f60600e0a967d30e25cc7a37f05daf2a77d0f0c0b9548cfe5aeea2890ce9b809bceef16b35fc83c2b9a20cc781073e186508772a31a3197efef398b4591c5d732d92fd383fc46e65c7cafd641fbc47ec9ca6fbe675728874910c2f41200d65722a8f19f09ae5f7211797da033e500f8c7dd645cf6079f3f6e2bbbd869d7e1308859cc3c600012f838be1ea6fd8786362eccb53e4a262ad70fb637341ab49fb6221a068b8924de5e2ec2717a9c218f5aae7c30abf040d820ee5c71bc3966a8a882dc4954038e41919620d22248408d1324243ac94e3d7f84973771e06f7db31b241b460238409b48ae9eca67af4dc96f7c38566204b53ae66ba8f545e8b88cd302950d52e883aabc6d800bcc03f120eb56bd919591b4d24ba6bcbfbe102cd6119636aa3985bd9d909d7fac491f526d67516cc484133b3ea4df14e5c846b709122f2a6b0332942d80c2dc45c21cd55fc6811222c335fda92f694e97f53a9edd26eadfbe33d2a108e8703ff4c72e59cd0fc3eda03b49e320512fd1b2353c80440d632b83970e39fc1a2d0d56cf2185864b03340a39ccb022edb846c0c3450b4960efcffffffffffffff2f4493ef84fffe32252996ff485eb6644a29a59422ebed1600020080464d4444c228000000f0a104600c650c7b0ce9698b3b42347260fee8dd95da4268e0c010bbb4ea885a9294740b73d597b44acd3f29695b983dfefaa47cf6169e5a983a5ffa15e516d3cba385219b6d091d754e883a0bf3af6d091b93ff26823cb6b805e88319b230fcfe4fdc4a91b4e74e2c0ee93dc5277828131266c0c2385bf2f565719572e71506edf6fc90d86f42deae30e79e1141ca7ea710732bcc57d9667b9d735e48596108a7a33e2af9b897b50a93965ecb9f42fa8d1a5561f80eca6f53d27b553a15a6d9d9f9d94b29ad74a83056eae64dd291625af51cd0a1e3c7abe0c759c10b669cc2f067416494d8389d4d6150edda0aafa14359a914e6f95ceb28b9fac42485f147998f08f6e996fa280e11654278b64c14e6ae9930b1c2a434e10a85c164f7eb56d5056183c21052dcdd7edd76380f8f2dbb16e40f667cc29c73b1bbebd9f23e4f9837264b082f1e5e5bf1d87a63c173806774c2e07a27eaf4444c4f9ec7f62015c6b140e1844167d66875ed111a791ebb09f37b89fdfcf62f5ad4dc199a300535fb1d4d3bd1d1199930e75adce754a9f44ea7c70b7cf450418f1660c25125397597b55f7c09833669219ecbd6881444418fab779b6109c37f1241febeac9b86c6e871d0f9005b186705979570c10c4ac060c62454304312e60aa5114cdac663abd46046240c29893bd9f3596b3fe2001d3a0acf600624eebfce7e752a08c68c4718a296e5e433924bc40a3130c3119baecfb7af346ac6198d584e3f9bb6c9d67f062388a7435437b3ad48e2b19501ab198b30fea77e6e9ba8d5ab3314914f2c7939fee6ff8c44985288cc4ab221efd6cf4084d137dd531e2dc25662330e611e3b591fab93214cbae77f5d35fb74d017c2a093fdec64c80961922ce7f9a7ef74d0d0208c2352a907bd123e6e2b088345bcd7197bf98b662074b91c2b7bfebe4c4098e4958b789e940beafb83a53e8e049d1e3a7fe607836f4bb4d87a1f0cc1d652cccf1c156bcde0c369bd46a9383abc446ac61e0cd6595450a6ef53ecc90c3d98f2add2dcb6c3634b0b31230fe6942375ca49a5fc5d9fefd80afc173f3a60bb89197830fe45eaccb75c4a558cc0032890c38b1c1158c38c3b185c4f9454cf1f328e815af0630c317670e5e8000466d8c194726cfd74daa4c876796c551d8c555d1546c7f6d1cfa083494ee968ef12827ca4cce660961c2bfcd2074961e233e4600a8de0eaf229b34ecf634b8c773c3148c5c1e0f1e485cd49424ce8796cb1e0c5808339e52c6b99a84c8f288fad30ce0a76788f5f33e30d86341f523692fc6f8d7831c30db5972c2b654a5dc263ab870ff429681f2998d1863b5e291bcbeb5916187c91acd8907feb8c8a51cbed1733d660f2127215d5c25be97c1f98a106f3257d95924f485e60461a4cdd36416e84121a8c333222f557eaf558a3a0870f30580333ce70dcb549954e2dfef733cc60d8bdb6747a237ddbe381196530443397ad8a6a9f4f3218ee3584dd079d9d43889ad00233c66036d37d3ae9a07771e30abe40ef6230e556d2621549be350acc088361546b8d5652ea219d603085ba1439c56b1e5b30f8abc08c2f1892998f185d3241854b8f83c4f08239ac56b34e635444ef5fd4046674c118415c55be4854f01f06a93209cce00222c8df0a9d174fa9bd052bb698a96684c91e16bdfe445adf6a5a0e716086168c7aa2741039282149e4786c65016664c1b0a22edd27a1cfc3eb583076a916d5b10b79e78fb7800e1d8f821fcf438c138120ccb882414838bfed3c59c1f0a637e2271b6dfe7f1518191f4b780e51c1642a899b20ed7ec79e8249f752ae58acf6e84ac1f81d826fe4375da6fa2898c6e3eaef274ba37a2818abf2bed6ea3c55fc090611763d8f9891138c5f4a6b66fd4d284dce9572bc11134c298804d99d6ec7de5e82b12abced6b742598634ad2933ba824c1701e765d27559060ec0a769efa2c2f7f3e8259bf7b5295468af8b3118cebf9d7277685bd3017c19ce2766ae52cc266b44430e99614ad4ea34205770826d9fbf9f536e27f532198fb54ec94aa4a2f950c82e13d889a3441d48a2a81604aefa174f9a79295833f30896ac6a8904afcbae803c34a8e68eaea7d57c51e18920a497e4a3252eec403b39cbefaa0a51d98454c881f25f494caebc0583697ccc63edb867260d0dbecb47d73a77466e0c0a44bc99ba4a724ef7c0b73d2a9256f4c322dd716866c162c8ad9570b4310b5be63175a184fd888a0467ed01eb659184398501f44d7c79065611655532d9254d408562c4caa2617395f25551f16060929e46b7eb98998c8788549b5a67655b0cb8a1119ae3027d12f2228b315a63041c478a7ba7dec5961ca0e1efed192e9a4e12acca6734875e5a77e7c224315a62c6de94a2791cb1f4119a930a648bfba5c962bd41f0319a830e6d64e5e8b73f14d2ce314a60b22879cc32b4c7e197c21465591618ace4c8f56a53795c25869f47dbcdf0b237e52185b84f63d09f9c66f1f85c932bd63847fc96bb9288cee65a25fa33dbcc443610ef33b41458b4061ce4f76f2e35cea1ca24f187cff4d86a805f7527bc294eea715a27baef37427cc1521d897ce09a34d1a95d64ae4b7f4d984797b7ec4af962c7dd284e184adbf5c3e13c6cbd290f5bb60c254a77f264bd60f2f299730698f7ca4b4b225cc13cb940ad2b45f6c5c0953c54e9e3bfd4497252961921f427aca3827610ea2cf540aefa729a6244cea9334ad257fbb5a46c298df1ef94a79f9091d240c9f420e3b9d74ace51f61349dbef7763ac268f625fb4b96852d1b61f0ecdfd9e6c25b488c11e6d3637d2a768b30e554f1ef742bd947880c45983a840941752491d3986424c2f4ab56a3abb623ce4784496ddc6999ed0f616c8f7d167b74fc456c08c359a7716b750b61ce13ea2ea2adcd4248089377f290f4cfba7d6b8330c68bc810f2ea3afe128431c73f4fecfaa0464d6404c2243977b875a820dd0784c16f2b7fec13e14fe50f264b53de49ee267dec07a39c96185abb23692ba30f9b68cb5bf183f860b0ec9d7faea263a87f0f6651aefefa97372ee57a30056132deb3f36758506120230fc6bdb8eb4a3ef1479ff060f8941b7137fb65bc7207a304195b5264dfaaa476308f6a6fc929c4519f998c3a18bcc56ae43afedcc4e9601611174a6335197330e40ee2b122c48d4a3f0fdf7a800c3918740822b22d54cc0b417138cee7b7e84b65c0c11c448c90f7343c79a4f4f8e28cf13fc81bca714be714c2bd3bfc6e503eae56db4bd40624c790267a2ca57d2990c106b3047997548bce638b140864acc128717485f42479764f6a3056f20ee76f39693085cf1abd904af5e72d68308553ca2765532257c9cf605a8f31137a2c0fe40546b0030332cc60ce2ea74bfaefad875119cc21448ffb12bece572683f12f8e85d277f37a8fc7d68e18fc18a38a658cc1a02d9b5af48af3d80ae30b19f46841ca108321d56b5ceada925c213cf65646184c06187ac8f882f1ae54bcd3ef51f9b49d0c2fdc424617f294c5b5b26394fa981532b86032b660169174b29f4b216c95e72b0006182d7840412d98a3450d952de8dc67290bc679b5907eff8205b36b84f0ad112f447eaf6012412cff4a5c4ed728c30a66fd582adb8af85199c9a882d13fa676c413158cf9b216fe749b8229094d37d3166d6b4a2998fbf4c88f1121488fa405727891a3030f860a7ebc05f00432a260929a6611728b4919117a51563220030aa6b33427399ac863abc7a3a0ec90f10473ca75eeaadc9d600aa2f74f6b524c20a30986d89effe4884ab37888d1823070043298608a1353e21e3b9704a9e07c183bc4e0f163070a4e5f71208717392cb0010b5880d88f15ace0f02e30821d2e63094cf42f932654ee820c2518d64c5d258e0ae1e421460bc2280d909104530a497639b955bb2821c190dae2e8d73ba5627b05c838421d24585d9cd01f3742e93b828a62d2635f04b396d09f70f27205b789604abf6e7954420ad2528660882afae44f4f525962194230cb65b7c86ff35d4a86808c2030967310513ee5b0884006100c5b27cad6f75f245864fc80333389f19d12e52c9259858b99f987d1f67f0e2f7274a002327c6010952f57a7740f4c71734f87ecd99476110f0c133bfb7754484254de81d992056912c6fd4aaa5690a1037369049547b6dceee939305adcbcea8deb7eb165e060b3f2d4b985c1948549f5ac752ac5b6309c7f87fc92221aa885f97228f5956bafca2e5ee42018c8e1450e72811c5ee42016c8e1450e52811c5ee42014c8e1450e32811c5ee42012c891810ae4a8fac3006861501ff285641f340bf36df5c9d0a2f47ce78518802c4c2b93f72ed2eaed7e6261fad21e3fbc454b161158983b46671b0fdb29a85f618e79352116be2b8cbb71fa4a9ab415064b6b36ea55462cd78218002b0ce1944d527d8f515bf1308055985dc6b345104b150169edd1feb742c110ef54a928153dfd283dc13cca930826dd639eca2fc186134c6a2b5b774535808d2618edd44eb87a8eb86033c114255ac9d878f809528e818d2598332bfe49f0e8f2214909c65dd5ad94ae27c1345946286f0da56ad448302551954a9767c7c7e70866110d15258d3ca5ca33c2999252f76e9c16bbd946110c5262f98d2e7b3dcd8960481729869cca4ed1ab2198f4c89123deaaee332404d3843577d131f583f083607abb4e164d4bfaa80f108cf79236f4841d91defec0a02364af927c9dbaec6a870d1f70b29d9655f2d995acdc4a82f25c27e555ef40057264c1460f0cf927cf4816a517396cf0c0a484bc891d7fb3b103534e70d7d1156243072675f75c3db77f95201e5bf8fe850b888d1c1892c89f243e34620307a65477797356bf8539a4e7fdca75796cf90bb07e7c18619c1f20283ca8610bd36c250bc2373e6c7fa943472d8c359694568f94a2efeee89176ac408cf3821d3fc6f931868f31ee6861f4b4a026ffee565f7c033a74a01f5d6316069de3acaac4d1096ac8c2bb50291e54b6496ac4c22c41878fa253f810746061ceb40f2284647a853907ad183bf15d61503d66b1b42a45bbbe152695b399e77042ac309970b90ba1c6723cd12acc55776af4b68ee948abc23c2ae28fb2a475469b0a4352f333d1d2830a73a5b017b93c8f123ca730dd9676d57bc514a67865beae6ba6bfe7529884104bf5dabd52994961be091ada4c674761d2fc7491b253ba0aae280c3a210759e967280cfa6d3c4456e94842090ae3d87f3c35a7b6c49a9f30ccdd8b38537bc2f49dcee35cc3828876c234162fc8b31393a0434e984cc8bbe87aca339edb844177a82c53c91774af09d35faaf689919d43cf84f94b09b93a8b61c26c6a1743a56797304e2e49a9639cfc1c2f4b983bcadb9c748f7cb94a5479cd3c5e88114a984b6e3b78abe6979e2661be10257db87cee3d429230255bcdd39dd2a7a61d0953bc7339b1f240c23c317412da97f2085349d4d1cb731d61324d8d54335e3afdd908c3569fa890d3648449e3fe3a09c95956928b306688be7cf6f0b23d2ac29092e7cf71c2587e151361d07233313fc54fbb1f228c779e172b091535d13b8441a88faae7354fdf9d218c2d4a667bb6bdb4de0a615e974f39a5d1a9ca548430463c6d937f397b2c8330a7fcf17a449257a11584a5d408cf16d5409864f95ad6aa74f244409846eba6495e8bd6f9833947087a74c462632322a8e1074fa9be997d8b697daad1079388abcbd7f5f9605095e2647f96c110e30703b4508f18888109a8b1874b73c4e8ca963e827af8f802c1a8a107d377d20f573aed789d6ae4c1a443d2d149ab7d96fe78307b45919e32de53ceb1c61dda4ed97dd310d4b083417f97c6a9f491d7d6c118b9adebdc323a186347ce53093f4fc93407e34a906292434a0ec6bade5117947625861a7130e5b42d52ee52c829c739bc10e3c7f0f1018583298c4849d745b255a8f10693d6fa081fd1825ec80de68edca5a63c6eaadd6d3065de9aa47e6b8717392490c30b31ce57600c06600d3698c73c879d3ba96edaa1b681473ed45883b13f8d8ee2574a430d351847cd79560b3d41597b68a891069330912452a89664abd74083c1d3887ecb779dc1f029e8bdca24f15b12e3420d331843b27cb44f4249fdaf0cc62f1d66f495c9fdcf6fa106198c991f3c9a5da8eb2c8dc1e4be3f725ad4044b9118cc73e69e774d0e83a94ab487d476afac3850030c861cbd336486673dedf81e3eca2650e30bb96d2419f910b2bd23063fc6e02dbec0087678a086170c2a04cbfe54a96af51e3f8604ce8f1f0cd0a143878e3b2fd4e882794d56f48a352187b97ff8d8b1a3ec0035b860922e1e16e3922973790be6cb1592d672cfa31e3e2e705a60b4e2e2d78d851093a30315c8616ba8910573fa110f39d6cac4bf779461c1f03b372a7c285dc1d4a57bc23e68eb8d9015fa121d266944ad82e1ba4ffcea69e40b2515cc553de6148ca6a2e5bbdfa2628652306ec5166141a4a4171e18c7053e56f01be881811c5e548d2818845e76f97a14cfa2c3636b470c7e8c410a03393a50811c3e365052a80105934bbeb8f8482a49ff4f306fa41ea115979ba23bc174633b2fda414d30cf4c0afa932817a1da1a4c306d6f878817452895724b30850fa72ef3ec530a5b0d25a42547e7cf7f1fead648c29915e6d62e312ec6a85c030906b11125949838fd7eead01183a700116a1cc1783accf869c993c2681718c18e2f6a18a14611c87e72256a5550f57374000239fe870f2f50d063033a74fc0f1f1be0c3c38bc3c30b1d3a0e0f7478a01ddee3fcd0410d22987ff4e82c3a7cce74088fad330607d4043586c0750cb126d25eaefd3584c0c9b7bae48a113b65c4ac46fc238477ff6c3781a04610cc3dfa29e2c7b29e588df11c008259554da78fb752423d7e6bfcc020d7cacd63a4d4f081299dae512732343cab06d4e88139e6e9869cc9f0cef2c0a074ae70372afe4815edc0907bd743a79b0cbb5407869cff1b312d2d07376be4c09c1a2ae4f2f82159122150030706e125122f72fad130ddc258f51f64bfa57897cf16a64b1e258e524ab5308e92e4493be84fe349b4302521eb2aa5fdc857691606fdb8ffa7eee923fdb2307bb41823fa66db9e8f85a945eec48f948785f12e896821e5a48af92b4c3d3a5fb858a7a3afbbc29c733be44b5f2b0c42c32ca5eab410b1c22047664fb4d1b5a0f92a8ceaa393868c4aa7775598afe4b8c889512a0c7a4adac57e1a1506d5692c7b8ef91b933e85395cde115f399ee6e898c220a4e81b992652470897c2ecfda62ca598486130137f97aa84d2ecec280c6266abc2728b8eb6a230eb7f4e99a40e8541e45b08254e25e9100585597ff64fc734ff2e7dc294837c100bfa52a990274c19297f96081725d79d307a2a693da626270c39efe7ca92cc4d1854a43395b3d8923e9a309f10e2a14dcd8449a5979830a92e7923826ea5a8ee12a63f5d499fba88a7d559c21c7408369653ac1266cfa7f365a1464c8a51c224494f389dee24cc27df53d427692a4993844146c8412e65c7421e0983c9b46c2167af325941c23c7afd8498fd75d1c803683cc2304246ba638c1effe3470b10b908d0708439a51f21d7d327957599026834c274a269ea4fe99958d532c2dc218494213c07971ca1b108a3a10893c75eb8abdaf9774d2311a69cfbd565afe9f1511a88a0710893e7574a233927b116f4e1025248c310063d623176dce58046210c97125d6d2f4cbe29f1c01f638441831006bb1b1ddcee4a55593baa500c128025d01884716694d029ac099d6f9246431026ef935f9263f75ef0f058522e30821d04a0110873ec868fa8286a2ba7786c55a9aa728111ecc8000d40186726c997addf8454a9950b8c60c70468fcc19c6387cb49c2c70fe6d4981359e645f98a6c40a30f86286b71e95ddc25a7f960183da53627c7aa24f71e8c575632e1ecc24ce7e8c1a443476bcd2ce5c138d7262e44d08c74311ecc6b29e974081eadd4e90e866b91f36556713b757630a89c96b2e5fdecb7571dcc691284e5a492106447077305afe7603ea16a5455ca3811ab1c4cc2b5d54cb69a1259e360d2e9cda4488e26d4aa703085caf26b4a863adff10de6fba4e76156758329bab5ea8d9fda60d23e99e529e8afa85ea9010d361852a57bc4fcf20b5f5a033994f887b36cabc1906386998db491182a69304c129109a2344ca48a866554b7673049aaca39e73032f4e8c0e8fea2c78e02041a66305c1889eb7ea73218529bd5e5d2e3a352dc010d32984d0991359574e7736f0ce6a44dbefb7e92a9f2403dce8fa62106e396d929ad9643580ff2d8e232031a6130888fc925333db714173018438675ea0ba9cc925f3088e03a7fe2fef25848c30be6ba3d5d1df2bcd58334ba60b6904347ea4eaf3c220d2e98bcbcfc65d4e5d1a6b20563e99551f92927768eb460d63ccb639d7f1a59304995fcdf1643d6010d2c18a2a5c2d7cf637cd1a30556393a000119d0b842fa6572087da226e7e5e800041e1083a740042e0834ac80ba28aa53e4aaa06587f0b1b48ca8508eb77b9658d5ff14bcf81f3f84c4ab1029a82182ce65894295a14be724173e6747030a06719524a70c214f8ff4ddc7050aa903d078c249fd8714425c52044c41c309264b33e779e9b6b54354a0d104e3a5bbd789ae9960ce51a32bcd5fa2406309660921c5de0c1d7cd55482496cdbe5ea6466b59724184b8f9996b3091a126820c1e029e957d3f7c5d8b147308271f2e627e53f5779c44530870d13d22002f94163084619fb0ad2a3079fdf6808c1602336d56fec72e52e08c68997264999929ec409084653fb5972d7fb8139be5205b9958305151f18f422de281d7f0f4ce9b24972ed4c153f69f0c0e0a94ded56c4d213fe1d9883ce71793f774ba44807c6f37862055b16b939820b3218cbc4e87a9ce00bc42075e0620c26e99561adda4e000239bcc8f1002f72382087175c88c1a0fcc7a3af5dc2602c2546493939a52a6a309843b7ec89adae0bef174c3ff73ff715824893b401175e30b5779ab594b2e5c4db0593f670e127e77aeb52b86034251f72d03c21b4d72d986c27bfb5843d7f1571a105d3bd88129d729cbb3765c1209224f5e157d725d75830ad885b8af914ef9d7205b36a444bd11742b29859c1fc9545652415ae4b7c2eaa606af5eca36b19f2a4840b2a9894a8cddc8acbb81cdb2070310583ecae90eb93c8ed2949c138314e24716123e6c7a3601249aa46aef72c2a87a160dc7511596947c430e9134c27b1455beb4e30fa9934d70867e12c32042e9a60ba9d9fd4297e26a4cb04c39d597be88fb4acd312cc21483f5341fe4a308a1cd958cba355dd9404a385102f47cb6ab2ec46824109dd571ee71fc1b01d37a2ff53ca399a110c237ae9b5a2a80826ed0a2123c42ba5fc11c1d42167a20515c4a5bd8760ac495f6aeb4adbd94408e68b9f2016bfae32bc20187ffdbd4ba51308c6dfbf32dffbb338db0f4c1ff2bdc4ca49eb758a0f0c277ab3656f3ba6ee81d14de9542ace26a9b6a9c0050f4c173d475d2d0b085cecc014314d35f5b42c27a5837af840f9e379887178e802b8d081298cbee42aca72fd3b02173930c85848e3f932a264ad085ce0c03c274109ad161620dcb88551a4a44b2f3251ced71cc20d5b98454fb8a4d0b9728b78c70546b0e306376a612eeb9411bc641e5b2c781d3a6470831666cb266259287516c637a12b5b18d30d599419dc8885c95cbe4ba275eeb0102c4cfff9a4c4aebff8cab9f10a83aea4b69f77728559f77d94ca9e56983fabaf2aa9bd48aa6785d9ec5fdeb247ab308ac5ad9ce5abc294915f4c4cded34b2acca9f7735095b6fbeb830a532cd3a1ae740a9308cbd59deb99c218d6262b7b904b611cb51da9f65ac93a2685c94fe4742e1354a7d48ec21c4e6c674e9c84c9a9284c3afa094bfa7d41f8190a7eddd3f485d59fe5030b0ac357292d5962086d577ec2a482458e25644c68083d614aa633af333259e29d304951957197acf3cbc709730a93a29a878e90e468138690afc76d6de409096ac2a01dd26d84ca69fb4c184b5cf2f827debddcc384b184e8309e363a5cbf8421e57e780ea5a3851c634b98f7b48f9664ff1cdf4a1c724e3a5aab3754fff162dc0d4a18c4e525768c9a2a7112c608f934469bce9ca42461be12f10ed79eb61709e358c01670231286a4cbabbfcbcedf2e9030858f6f57e1a4278bd60f52801b8fe8ffeb74ac4a49ad3d6e38c2dc31295ccfc37b4bc5632b4b0e6e34a2931fb1fb541e5b3d1e8c1ddb831b8c30c69f0a29a5b1195b1304371681789693af21facc7343114d6e37695982e846226c15371071370ec1e954f261727e431874f4ccb9321d739a17c210eca3fe09951ea4a9095108095af247b3076194a02ee40ed956f44a41986f747250ba5c3d448130851839babc0208a3e5f1362d251afee28d3f9847a44fd229faf887243f98cbd2663d29bb0fa69c838bb958b20eb9e583298aaf768d52f76052a6d27db8d11d2b453d9893c9320fe6b455a2459be5aa570fb88107430a7d65c1f2c38724c437ee503aec60bc98232f288d6c592d1e37ea503ac80d3a18928997484ac890ec173b7af838ecc38d3998929a5daadd8865ff016c1718c18e00e4e1861ccceea9b2fde5dbe89ca343870e1deb861b71305e468a139772dcce1a0ea61165ed2b5f35b25274e878bbc0087600a01637de60ceda1b3b5164a5e4ac1bccaf1f45c56a796605db60caf92de5e69d2deac606f36517f5989393bb836b30475c53d31f394cdc37d46034132a736ae5d29fce8d349823ddecf528ab14f51b6830477bcb2d2bda3ebbbb7106937eeaa43e54688ba3ba610683bc98adfd6cef793a37ca60cadbde514b8b57c2430683b8978451fd94448d3280851b633007ede929722a112524064372f953fa3e14069308f93d323dcce7c21b6030577eb6497a84b4e4db146e7cc120b4f7c6cee5a032747c891b5e30a7fdebdcab21dfc4dc05d385def65a8e77aba328dce082f1e35302851b5b3084953521e2addcdead055312264cdd987decd6f00b37b2602abb6c16163ea468412c9882fcacfd53e1154c7a93ff4792ec851b5630c8e812e51e2252094f150c6a3de413514b7f29a85bb8410563769813cfa3d6644c25b8310573d29be69f423870430ac6b73c5aee515248fe18230a06cf495ddc4c8420621f37a0608eaa1fcd3ec78b6e052d70351ddc7882217b8c20fbc3ef0493bd65f920f9166c0c6e34c1d82fa293d5d57cc10d2698ba6bbde3d8245965a20b6e2cc1e491d3e3d98a1226fa028c6ec1b5e086128c29722fe41c35143c18ef3b62f0630c1be346120c3aa84b2fbd7f186e20c11cb48b9d5c4a1292e7d10a378e6090189223c5116e71a1118c56f17392de41e7ca3e9f70a308a65cf22cac978b96983be106114c6ee6777a4f68139754a6e1c6108c37d145e4578e571e2c32dc10826965d484f75cdd47f3ba7023088694a47ca4f429108c2282cb79a57f60ec984f5a1de70d1f9834db643d304a3a914d97f6dbff4f166ef0c0f8559d3472b2543b8991e0c60ecc495aa98a16b46f5b6903377460122a3e44f292fc79261e5b7941b89103f32995eb3f8dcfe576f870b4c10d1c9854e36bd46734b0710b6325911fbe743d486560c31686682a084fb9c7730a0a7a1c1e68c7f9f13bc640a7c7ab0b6cd4c2e05ba3465a487eb31e8fad1d63f80803c7b0410b63e78711a6feeaf25c31f8e1630c31bee0613f6cccc2fca2b3eeb482ca6fdaaa64810d59b45f3ac2a8544f004db0110b6377e6c9b5e8326d9f0bf87d7cc07b7cf1800008c1062ccc39a55442256d31c61e5fa4b40e788f2f1e5001e0818d5718bb7cf7d5a4c7b54b77fcf007a34f0fb3c315e64fa34d87b79b099eb7c238a63a45ed259bd39b15e6f3d5881afba36472566190924cc90e613b5c945561be943a2e73a382d0321566d151d7fb427d9e1b5161da081326dd760a73340f59df257cf87c5565d93085c1eaf3e7fbcdf9527e29cc22b248c9233b8f92a328d82085c1ddadd5479448fb32176c8cc2147d56425061420adab389c29c82c859a39939f1f3a130087ff79cd539284cf7e3172c7598e7cf172ad8f884a9c3524cd1b57d9d9127cc696147425ab913a62c426a7f52561277e584c1a35a6caff2d46a7713674313665955153112f74745a06023130691ff8205bdea603df7781760c210e393121f4e6be789eb258c97ee49e52889fe5ac2b87bbaf3a5ec59d96f1e5b7a011b95305ada73bf179527bcca63cb87b7a0b27cb8046c50c2e0ad1f7afba392c96412464f93e6a2a63cb6c45b654312e690925ac8086aacb612094818d442107dbf3c4aa458000c3018f008a3241146c95754cdb3786cb98f0ee8d011835781950d471872fc0eafd297c7ee10e38b300e36c2242dcccf5e9f18f128d72de513f496084360631186d17b57417ced2ee28a30883bd7b85393516addc1438c13015c1b893048ac906ab4ae466e07118670daa5bdc44f756e71b0710893d0fa1144f5bd85f68518b930b06108639bc7559f14162196e9870b982760a31006fd6e37d59142085352737395a15e3bdb5153808d4114a4aa7d1afd258f2d04d81084d16e24e995cff2a6185f30da036c04c2a89eead2e94ef6ba21200cae9263dea82e1173ff60c8593c7a3c95479e0af9c1ec6313e2df89858b963e985f924ea52aebc3d27c307d14d11dbefb2ac1c61e4cdaab4daff6ae77d583f9ced44eee982f69a121d8c883513f87fb096ee3b15d3c987c248dc8d953bed593106cdcc16432bdd32266866d880736ec6008a347ecb7e86e4d0d0736ea60f220b48810ac4d090bd9a08329cae8d01d463e0773b0efd14e29f5a69b7ab0210793d08f2129595ddeaf7130b9450abbae5116a9c43bd88083f12bd5cc059d71aa93de60ba4f5fb1f7e38694aa93fb1caef28b3461a30d26115a4f29a5fa7b47b5830d3618428c64a56a5747bcc70f367cff4e39d784b3d5c0c510a9b5aa3cc42f61230dc6acd8419eb6a07667cdc1061a4c95d4c7cfa8f8651a9e01b1d9e15310f601c186198c11474878ef53206c9481fb094a979d90948397081b643068e9d0b2b02e1da5b6c1c618cc96acd74d4d84eec81183d153e5369b24d92ffc31ce60230c0655b9b2ad3cc90618ccf183d88fa4c3cec21f838d2f982e28bf383a27252d2931d8f082293f7d8a1b26be273a166c74a174d8e08269e6944ab1adb305a34cf2e0def37df2442d18428811dd849e90ca82514f5feeaa95a4820961c17096532a1ddbe4b3f40c54c1c615fa6c8b78ed41a41ad160c30a46db1c3dd357dba882d1be924a0fff11ccdb27d8a08221477a0f95933e05838993f37f0929a2658b0936a460f2b0703242eb4d50e228182be7b2021ae82210e61165624472bb8451f91863c7d90bba008429c7c941e81cecd1c51f0c66ad95cad469aa2be8c20f26156aff4f77cbed57dc451f0cea29c3d397a7d323173e9853c7bdc4c8215edb2a460c9e025decc124f2c93b5d9783f7fa5de881dc32ae96164b4ecb25c66595c7e558177930e720948c079338a1648896fc1d0c61b47dc8b5059d906307d387b0b1515969ee52ea60d09e22fa76c790f6153a982ffbe5245216cdc158792e6e435f8a34613998caed67f7542ca5f811ba8883c9ab47abcc2f7030a6555d85c932a1f6f306b39ce87a28ad2b6bdf0d8efed4d6bd90ef3618c666473d26082574c50683684b3a279d53cb56be06737dca773121e5c8bfa9c120feb5674cefcd964e1acc69b498846812349845b6420e3a9ee811ef198c27e9c4c7d488559d640683c8d041adeffc9f28cb60366dd2ad574edd5f4b06b3c715e5417d4356f431987f5c67648a540ca628af7922d1e355a961308bd0297f72ffbeff140ce60c89a7a36a9712a37ec11822fb25ed70f23d7bc1f8a66294e9d7cecba52e1846a5c94a2fd9f4458a0b06b7394f3a725d1a6d6ec1a4fbef55f1f1192ad482398ac5feede423ae74b260ec78d9c38239071dd32f89b21c2dd6c515aab7122919a8408e234317563068a899a560caf4375b227451057318114c4cf3573fc9a860b64b3a251d6f76310553b4fa58b9b485ad0b29984f6245ed1099bb97e3b1758725e8220ae6486f96acddc29c18d005140cd9548a9e539cbfa76b812e9e60948db5bafbfed0eaa5a00b27982bac8897ba688271849e24aae36a1d72986088f541ebc48c4aaae5120c61c48545cba6549afcbb5082e9ec2ea4d39d529077d9d14512cc3f59649dc7df05124c7a297bf4c94b1a77bb3882b9be73f2edd8ef3e25231844859594ed9b72352a8239a724eb2116fd4ea510c1f4a363633452b5c53a04c39ec5b59c6faa922c04939f5c08ab7806c11c33322b773dea4dec020806c9fdd5253f6d48d3f940173f306798a9604ae90edf52bbf081b1d7f356dcc8ceb66286a08b1ef0712e9e081ba10b1e60173b307cc568137bee7e29d7850e0c3b229e4eb1901c98eefa8425b53b8f452b401738381cb7281d8dc0610bc47886ec496504aa10386a813868610e6f75ca2fc83c6195c2318bd281431606eded5371a4d8f697ca99ed7a220411040b74ceb42452ebe7152635cbc8a2b63ab2c4385c61d6f13c65495f568580a315a6f23395fe3ef3d8e21f63847162e0608541bab645caed18195a3b14e05885396fcb640baa7a26e8a8c218c9f3250f7bd2f3c457e048c51ab1cbe4dc2aa830df79faff90b495b8cb0a1ca730a7136f5aa2785eb2354581c3144631a1ee3a7c964f612e854975f6e3a9602a0825b28ec0410ac37c0a9572aaf43979ca28cca684d2903f7a458c8e11384461f0ad49229d8f4261b0519194ac4cbbcfd5250207284c49ccedf89f8e081c9f30feda6b4fcae9963eeb4005729827cc56ebef13ded65bb50f903ee0e884495e4da70b91c309a3e525d1baf44e225ce80b314e03b642806313e61f4f5f5f16c6010e4d98747c5a48ed23a6c2a7878f2fc6f8c2fd6ce1d5c4331c9930073da695e3ec85a5944213e0c084c1c28e2ca939f991011d3a7c0981e31286a8ea5d2aeb2ec6174b011c9630888fa5ac7476f0c81a18e70c02382a615c4b6f76c9545f6ede030e4a184b2caca8fad1244c2afe8e469215e7e475030e499882c5e9d17d15ea6e1409739ec992317c7c000d382061fad8a74549c8b7153f8f308ed6fb0959734797c511a6723fef950b3ab2fe177034c27cd9322a52b8583164461853c28e79ad68957517610e25b2462ce74e948822cc15d292bc38499bcc3a11c61f917c27057129b953000e449822fe67cba682bef5cb214cab19f321c9791c317118c238dae385d0ad3af9f316a4adad008e42982f8f485d1f673c4625842978e8e8a95f9f2666042081631066eda022ae7e1546c62108a3889697d19d6139cfc4c2802310c6ca0a1d4d3f5ba964270e4098f3228edee51d1b8b0a7ef878c18e3f985db7ba7ef4255bb0796ce11670f8010db9a06224a5cbfb62f180a30f863979f9d30821a8f438182cc62370f0c1dc2142acd6895652761e5bc9051c7b30a79c7869b2cce688b47601871e0c2a6d7db8771232fe6901471e0e7def29da4b8e0a7cf8e0b1e3c1f02f76f4f0615e8001060372789123871739bcc891a30315c8619054e2c083d1c54ae8e8f0f5d5d201c71d4c6b228924cb1144468e180e3b98ceae430a2070d4c1d8ab2b49b9fe587e7dc70f1f7fc0410783e46c59a754a837f9c768c10a88e901c71c8c152f4273b74b5fdaff8b1f1db0030e3918c43ba66e279525e8290ee67ca7c24d6585e736c1c11ca673149592b6b5587a8339e4d7ca2dd6f57992dc600e3b39f78bada647df06937e8be5f9c1c2e3fd6c307c6cf19ce1a7fe2cbf06a3670bbf2192505fdeabc1549ed55bb6934a25fb34184fa4d79756bbd2c9a3c1a0c4624bac649546e4cf6050b974dec77ccf2999c19c9474b9a092bc0ce694b64d8f8e9d6a749c0ce660fa9310f24b08d5f131acda9eb567c46230ba080df914a13ce63018ad4c8989443955a683c19c52a695fa288b25fa178c361e6b39c934f131f78239dc7bffbdf32e988256fa07153d544f5c308ea89ceb78d1594b5b3005f15ab24fe88ff86bc124177721c79f05f36f7ba7b60c1359c782b18267a85eefc6e9e80a665d9da01df4c80aa6944c76b0e4f1228aa80a46d16ab774ad789e4405838ae54e52e25330c4fef8b17caf5387a56034314a799d1295e41805d365bf3d2f21924e100ae61b0b923a4f88d721fd0473feb16016f6526e493bc1202e7fa9bc4837c114743acdd2527a4cce0463e894e5ddfe2f67b404e37e75def64709268b6b4227ff9c2498d355882e1e238e940f124c625b122d2785ebdc3982513f7aba94438e114cde49a5a435d1b4bb14c1ec1f3f480e9fd4e5742182c93be88920f53fdf5c866092114b4242aa08c194d57d2fe9e8a372962098d409316d17c7a4a80a10cc1345880861fd1fff0f4c41a7a430dd3b498c7c60b234119dfb64fced1e18de3e26ae89b3559b07a6f8d38f63961d1874ff73d63d25414907066dd53d299d8794710e4ca95ec4dc8d387060cee39fadf2c7c4c9ddc294737e1ed949a44c8e6d61beb8a19358758c8c702dcc66d9d499c5fcb5245a98d64a92a67d95567f16c6da511d47898a6cba2c8c3b9f2507ff6c2c0c418faa58661941051716a6921c8492e82b0c96af653d0811ca3b57984f049d1672bcd88e6d2b4c1a79e4bfee4acecf0aa3486ccfd133d56a5f85c9f74e3672ab0a53149dcee397a958fb7a6454183b8790acd5398539888c9d89dfd4109bc2a4b34ee55c7223e85b0aa3469cb595af60af92c2a4d2724e09e13ee57214a62a3dab7efd3b41a230fd855edd1535ba5098c6438789731f228ba030a8fe52bace4e7a57f90953987a53c9af4f62c91386cd3d11f342e8fbbd13e6a4b67763694e98fb93f84caf37618ad8a284bebb9a93260c2a4b293b8bee37ca84494db5869a0f260c3aa496c9e9829730ddf8ed5aced012465d09d12d7ff8e7ee2a61308fa4eb464af2d41d250ca7c37e8a1cd12edb4dc25827aea16f9df15149183b7fd4ee14499df42261509f462511825504cf20617cd17b3a7690dd61b34718efea2e9f8b50d12ee3c21168c9274746f48d309cf4db2b59aafd418c30ddcaa8d4a31e448b16618c356151d2f99cdd8a3058fde4f8e9fe257c1261ba5ce5973274eb5d10612cf7106f52101d544a1dc290228f78127f2327a50c615c14c268715ff943b69a988b10e624418d89d892a7fd41984f9e522a22ba31b6208c9977279613084698bc189603084390eb6c97a405c6390c70f10783cc308fbb6242099df383b92aa73b91e25cd2b3fa60eca4faea29e573c2840361b4c0df013a74e8d001062ef890b8ab85c5b68a1223685cecc1a4f4ef86c7c9fb55c5636b055ce8c118ba839e1c84640bd97fc1451eccb972aeaa1cc4c8faecf0e159c42c718107534ad7c538c5b8b883b194e64fb81151f520343b1824498bf39073acd85d07f37bd8e74ea93e5c29e960de992425073dd1a6da1c0ce226059d56c6d4ef2507e3220ea6ab59334fed972548b88083413745e6fe6849b5161e5b62f808e3cc175a052ede605ced1891176b29cf74834145f50f9776f695c436186fec8258bfd960b478359374de3ba6690d8614827ab3ef6857155683e153ce4f09da4ece6284b1c37b1cab1f7f76022ed2609c94f63cb785305e723d70810673b07c09f17d45776c22072ece60be98b5f392565d52ae80e0c20ce68eee21eea19e15412e43705106734eba0b6f538d9aa8344fe5f2602c1009c4c17030140ac4649c2900631308001838268dc462c1483499957914800355342240362a22241c1614128c442351281008858261402814068301a140401c141acc59bc07fa4a1660ac704663c62351c7ff3ada9207a9cbb1591ba42d7925e07c90dd44fe3c7efdfc815a9d8ce40ce24222b9b2f583dd1b69be171a615d2457193106cfcc71965d6cd23e2d6b880709b8d32332464acfbd83f96724630c83e9cebab837c3e46736d8cdc3b1d1279d87f8d136b285f93d87ec906907ea9fa0f1c631169ef0fc1e1e3df32992c2cc2e411e5df516fad022128dd278053fc7681884d0a6bb6da0044fb0c1b5d830cb1e4ac7c6eb7a7308e116d062b364f70f726e538bbda48617b74538f3363aedf2c077df20c4f9077b6283c58606b2d137c8907c3594534e7524612387c1e71166abc0aa94fcec8c812b4ebe1b304afaa0938cb1720a30e924647b3cba67b143064763bdcadc55f5b02730741e56104170a33d96408b5ed837e531f4c42a2e06085a4cf2bce7371072564c9dba50c65f944d6ce3064be83c6e84e7f5088f3b35102ce8816d845802163e7f8918bd2fadebbb099701b1b8c19828f9ce5b31d764c2a838097f22114ce2544f7e77a7ebc06b49b469ec8719123480f59b3db18d68e1869d67e1c8c3dea90f0cad12433c4f23bae8973d28c410972a6324e272ed9393674e4d1480279ea1c7e4b276fa1ad75dcc65ce103fa599de94da513f0c72b7025a5e59f804a369a58aac815fc29d6eea597959459b9366cd460716832d14494822a84b781b217a0c40a5159fbc6ae2b7d603a0d801df8b6ad97fc4f23c8d00bc73d784c27185443734f6a2bc0904fde2c61523d114f3705e4d9de97b9e34be0297f80ce073dea310a7dfad3c8e00bcccd1486428f5fde134292eb022687d8151a8a168c096278889c2f5f33f43ef602c7e9b608a588e17d1fe38ad61cea68507c163033368b2cbef01446e50c977a7b2e47b66d010595ffbcc9d060470ee1165f8d0e21ca1d365df4f6be416731253bbb59ce72a5fb53656bc5eac53daa076e8663038d7a5c3016218ccc9aac3bb6e3eba93fd3bbccd3d3451f934a7e51998544a70d7e16c22292a21847a824ff10fcdecf71ecd5a12d417695ad29295b66aa8c1784fae883120ff31f29f4f3c69e15f8dc9691b0f76af86f26290aa64ad4a4f33032a76392f33c1b1104582cd0036196efd32a13141fd05260786255bba8d2a07c43e6d4d1b4f7929ca0a949bf6d1a69683bd018699b4033d58db6bcf8d08149bfad259a98ad6a083829aebd0dcc50636364660ddb6a6b5c3e32a00a83f121342a65ec4673ff61fec09dd92f56425f3708b03e104988c6423870dc63e1691d70910951e09b22ce92f2381a7ccab56475b81574fbad6f83b9593837879901dc14fe5153a15589c70447f8c85bf3261ec2691d5730bb652529a23eada2a4c60d88ace9690228c7c14d7bdc882f2ddc7e521d548ae2584460ce8f121934f7b0471971001bf5b7b0b707ad36bde8d8f31450c707c3e4252a8eb8e8f7110f1c6155dc4661b6d928968bc65b440a70754f56baef0e62c5bda59737fd5f046eaa19fe522acf2972d6b7f2f448c28f154ea95d8b825842e1d75ff8d7176506bf21a4fdbe7d64368b0787ed205093be020e053aef6080c80ebe8e5657690e0cbff0b8f4c6095edb2855a3790c9d5c2f4923d3d27aa4608090206b379b94cf9827545cb2b12ea9e54f4f1fc42688ec5969ad709ace93781789d3b6db785903a5001d2308d1f8dd10e1d5f7782be45c9772406e5ab460be6670c9b2e90bd869449cb87f810b552533d67545eb3896d9fdf5a69743395dc21c59bce855352051407bc05c5b68d24420c505d6f10d4257daccd7a52257152d68c4fea6419dbf161669ec439c8ee1b8897b0eacd09aad23f42662c14131fa82ab626ef6a82de4798b78d78efc7023daa6b0894bbf01ccc64af2ee03f5599ac21256804ff02eb70265aeaf368939f91fe6ce2f8942c17791696dcb8982ca0c1ddf30350dac7fd2302b11668c3efc7811aa10ab682b4900ebb3e56a5aa7b01f4b21a8c59d97d8795ec2ead59370ae79b75cd1440470aa811c395a01b363a1446b38696ec32a7c29d5f341efaca55efc2765945c4a9b1e6088fe679054a94d41d1619fe04c9b96489d83ac80c2978aa59b84cf7bdd178dcee7c16311d0e9ec47b47b114db9d9e3bc96f68d64bd3dee844bd4a80edb5204da2d35128d39104a002485c6cc8543885a544b45425ab942b116da322535c2f53aa279543d11f70ba9ba6d26e669aa06b5db83adda338d72ec9fb18885fcb15edd9c629380fb7d35eb176c87dcccdeb373bc9823e65c769fd8e5be3e514d31cdd9c6db60cbc16839b9f641a8da3ef489b13e5aa28d91f2d89cef75179b28f7ea1306297f4293489a77ea11ca938e406c91d4651a29bd4f3966d1dfc0dc7ee28382f48312ab09f67f718cfae426afc062b85c9c429d4dba44d718d71faf4ed50cfcdd410be9d48745d02d00fcf64b147dd488bab04d3f60861e3caf8cec49aef0a0f9542c1af651fec68e2cb0007d9bc3eb529b409d76d8797c8714980cd4563a1d808c55508bedc04fc737ee291553de6d779c0f32ae94a4381735d0557edf33d6939cc891da8a44d95036dc3025197c3c7298492d1b2c67b005d09edf6373f762b9ae0767e2e375e8540372b97a3f0e8ba2bb94e785c01b1ed1fc6e5d5080d9ee646e6aa05e3e7837e281a9e370b34d7c5e4e49d5ccbd0d2cc56e9a26e2e2feda5cfda6cded4ac9f89984311da165661567ef5ca67a4f9a943ce4b980ac2fd64709ca71a66382b8575a38d018a98cb7a874524ce2f963b1e6065cc08ac0e739f4d4e7ca8a638ec884a513916262d270159f35bff2287d0f5e9143de03da23e56d956a9475424bef14b1dbc8f09b8383b3e25914988817d6d6a4c90fe724276a719799ae08a288a3ec2fd9ca62a8218cdf611001c465898cda2be2c46d3f222fa4699fb9449db6dd08279f15b90f1c13c67aabf72bb3b5b2d9fb32af62e264fe8388fb517064c00c2501a1ecf6ead88bb305923d96ac171b210bbe656c2d840c7c11d490cb50d9fb395e604a1849e5e3c06e1a6a0f768feb3e63650df223c4a8e07413ab7736a2bd054a385195f3115c67da4535e787005699093015d354507385d51978c04b2633fd83ea44bebbd47da9127c38ad942ae64ccefd30cd6f4ba84c532c53815ed8500f799774a67469a0ceaabaefaa4176b363f3fe27eedf6fc8b93aa37fa928f9632e94e8533fa874c85d1e42edf9a54d6d0d17875e152898a141f0a7ed1cc604a97df5e12a0e7d60d68747d97b999b2d6cab576a6561191c1f7631e404890885f91ade67099e54634dcaae96234558d81b3de78a6a7164010050c54d3312ecfc2d508f6d42152c307e48cddef8cb8720969d959383aac49d82d313412a11592b808a480c461c3885621d49dc6f2865c1d38e07b131d44b4bd8eefbac043f79ec641a38bb4e46530d413b22575b8b6d952e1b40540e7fd2e56e14833b320c28d132f5ed605eaa3ccf52fb4f84edb80daf0bbc3b3f0ef526e112abf5bbcfd051c540b6b2ebb2f98107ec1dfd73afe756b23e1da9db9a574c557eb286e5d3d0c425e5648e1b2825733b5a11892350559c391137ac3e9ff52cebfdc467da2ae3b5c638825fe60d67dc99f55b1265372525e6eddd10396123c3822891a4884c11e53bb4b29e0dbbc403807d83755f28a7e30e85a178e8601614fe91cf37487289f45cb07b6006f3cf9a740d6a315d43e6bb35aeafc200930eec26bc98a768a278fa91e442e2eb5c353195274ae54cb552e46b1f996b7377af229e9ae651f36ba32e01a2ac0e04e83e5979a0cb15cb89df211c190d4640047e6bbd4c55876b7f9b3b1690b7e8caf0d0a4f0e1647e8aa456ca2f34a2e84e78d391a6dc022ea986596bb3d13e4460e998a1a11ee731e346de892907211d4e89004570743669859685609f21c09a69780b671f5c336bfc42d5e69c5030a1b093454e0272269874a91b57836cfc850202523a12884c36ae4592f874ad979bb765e00adc583a0285d0e99199fa9e0505ade834cbb2320742619132c20e173ac01c258ce55e3c1caa285f2bb8281b5f1461c5dd05e8dc65d2dfd2e1774329f12092403a081059a77256eead4959c6db68ac880dd77b90b0d6820f952675fc4cd474c25693c29e2f0199e768660e153062dee5c18330506d3bfe637a05cbd3dd70393c058dbf77fadc8d768ec8d457358fa7cff497d89ef71735e9b0222d032791f3631b2102289cb8280a216d1efcc489b82bc35bd30b3df6351c609ca739ca08c9e7fe28e644edc91f74a422755811b46c2866e8857badc2eaa9b02505ce3236e864a1342148915b50b2feb1cbee2ac14bf7b6606702791a9d15af90d1735a74786636a9bcfda3b801f445d67e57824438a67ebe8bd531ebb284406495ac4d2f5fe79a39ee8eaa5d2656d97e206196f5a297c91bcff2cb9f2ba25acc7740a248a61b12dce6bee6c628a4ba0178be796d5bfc6d9097c41fcf219764a6e457c75c8a81ad24d6d4e0cbcfd78b697c74e188458a52054788c9113b974147d459a57363a5758a08c2c1e93da13d43eef8faf4bfa81423f2397a0bfb22beec1d5f450c9085c2a400010debeba8a823be4fd54f4c646b109a443b88123038227249e4fff2d4e6d94cc6b49b5d514693d68e67cee54644b0b5a07646291bedaa3f2990a80d16e8f6e77e4c42acf02c32d35b2376622bbe0e0b16a13260d9114fce22480ca003c02ecca191c780683eb6cd9c24c08a2dd114769825cfb93171a25e665c4c96057d3362c90ef1d608514d88c73cbbe07fba0d01fdc51d055524253f8d70ccebf21bf42702ad334cc4d2950fe0de697ca247a3f50a0d2913194122a9580867fba3b6b5f49932f093d42f0c8aa3485cb7aeeca7a0652a26142fb3615265a2f24f2aa0e74a555771b20a57175b56a80ebbc42312651f91dad0dae008d1a11b69bfbce58d804c6c351d568ad3f368313bd94b1eaaec0346afdc696628915ca8c1ac120d5daf60e08a9114f5bf3606be5b31ed1cd60969f376ef16f77b96ef68ed92b6f2c6e29e6e4257b20316d444c3438c5fc9021f1515ee0ca28ebf5ee1c0e66c0a1c76fb657e9d7bcdb5d0444026b0574d8147db4650e953cb96222a6c60ed6d881b74844e203dfd0dd61a02396ee2ba4fb7247438d89ee76f04e19f8c835582b5ed57b0bfb6d5b9a91232f164104b87665092ae4eb9057485e843555b18443ef36bc4e1cea5631482c39be9a06218f833a2b9675dd4c31941a27e733aa639a92322ead7a64ac6252ab735913796e11b0097bd064eddc41a0826292a852a18c33c85137336ab025357c602e49b5ec8af73132cf96fb6d25bbdec09e285fb1521c7bad9571f3be38ac96d36d504cf8c92aba745e60a3b59b39eeb5dd5f4d10b1aca205442ac38fa5390041b12f7a644bc032271dac48b37864ac92999371bf953e799ef201084c85378a955a6f1a2062840d204431c555c0e08ab9083eee2e8e6c3de7ea7e17384eb46e17808fd3bddaecfe4fbfc46c18175c2b6f8b4afbcf1b305ffa098816e13880572e76d3f4902b84d0024af3a0856ca38f45d7c5b43bd5797b8e97651037b7cdef4cdd12a60f4214f1f8d203d75fe26624aa03135a82c40921d088372c2dea50e09209cc46c984970f57a3cb4623a9568587335f6713b94556f73e479edeb72a3fff89e9684fe1b6a53b6d027e9df1285f173efd82128c443112769e8111f360ce07123968a54d072471825c28c3d522365399adc95ffdf56e59ac47472e9f0303ba66215ff93560f28cea70f3ce4e494de47ee4229ee8e99198bb3f9bd47c97323244fb1adad1af823b47bdc5840ce2ffa00ab95295b1dfb191485e4c389a041c985c8b01e344ee7d085823fb510138c9c25721423a893cb7106215ad15ec0b8008ae6c64b727285ab910592cbb63a6d66910366379ab98f3f574288e14fe130e04a8c548324c629f3a741046e6a0a468b3901ca38a5d524bcf50b3461636c38c1559cdc051567e8c594b66cc422754a7ca0c6d55b27853e0e6e5228dcc8b24978967fabcb54af190d63270bae580e15753612d8e74654c4ac521ad17dd1ac90e27a7105d261c57572e8baa4ebcfccbd50084dc3a34ed27d14384e999f33e298cffd3c8d13efc3dca2903302cb577a62d22012cbcca96f54f9fccc6bd11152f82752baa7a4315d27c5f3380952a0c488dd836e074c5862aede70b59ea408d5291cb103db5da06a38352258ad6d6aff9687156cadaac8ffda47fc41365987aaadda6eeb3219d9f847e6ac27e2a696c4e641e3276a0aab7bc903d7e8ab8ebbe3edb8f88c5bf36d54d7079a7ee70b0132592e06b8a51016092476c5f12dbad772b9bca4e6736919d1a53111419f638f7d530fefd55d3f977575c5fc8c8fd4bb75f66f25ec33972e200fc6a4a8d4a04f0b33c70b917dfa8469e1442bc350c2dfc5f08300a3181abc0bcc058ca81a0769a7fdb6073616ce6edaf8f2f1feceee0257e5500534774df3a54ed07790162c3e413531fcc38a7c58c021895d641adf80ecdae81d415718c8ec1685b2474271145c06a3ae600c35d20211136f0dd2cf13c2dde5e9825d6d75282eff5de7f4436c8f22329e6df553d012af771798e93d8f0f80ef6037244eef449927b401a49e12074a9ae00281a06240e1527f1b7dc28c0e95985f849cbc53a6588d265dda3f1cb9ada95b8dc81637c28d83e266155d1887a4861736c605386fc60d0aa959a82f8d1f38dffc9661c9376a6976253e494be5ee356068740269b131fc54638eb380e2e76d5e77efecd89bc7dbaae95555a2cb26772efc81f30d231b72301c9d64cabc37d4bb75696df24fdf6d44bbcc9305bc21fb96a5109a5a92c2f08e0c8ada207512fc9586cc89ea1e72b360854db57176adf9e4af016011f50e1c1af363933e29deff061df5cccdeb3f9a738194dbafd0e7a20ae0a38f8eee90805715faff2fd50e88a25bfcbbeafa4f77c643753e632329e32054b3b4e6a336a92a6380075592afda122cbaeb5e4d8ae556755ef2a21340ba78b351e355c43e2caf780067a368bcb3242932ca052b5239cb4448640f9aad25b2a06541e4582d79cc4ad142f4ed50f31c6a1ccff654ec34621d6699f84a8a4c1f5889dd248e10ffb9393e6c3526409c154e82b6cbed27b7e782203a22aa768fac00632c08eed7810d78b0cbe423c2f2b25cb7d4006e1eef8084e9dbba1f17958b33864badbc2cf60bbf8e952c9106a0a0a20c7beb8291d06af547b9c0eb05118badf949f0cbd7fced30b996d3faaeba128b1cc8ba8cb6a1ebd8a501e4c6d693e90f2a649a8a63d28b1940cb6328465d0c13c474662762f0d5975326b7466123699b6eea3deb895996cdfa653557b853eedeedede3ba3fd557bf18c8f801824b651c8489840656e4248d32dd0efc0533af98f77b9281c9724250c91039dc36458d3bac0e2d287015d780da8602c52822bd28acda4160b4a959a21c9bdd97292b8c4c67b6b7dc3d269379f18121ef3ea97ee1d00aa55a49a0613524e841b9701b393f471a5c31c0a484028737a2cf6aaf3a0176ec67e6fa0631af09c532e36aea55228d8264798056f33d8d80f06990c75378504b54c80983a1b5d5c061f9940f3bb5da2c1c7ba23950b51ca07fe1fe76ad8b3b8b9c83001d311085b9361339c4cb99379da6269c8b60300c1eb9c7f26e6327863612b4b1c6b31cf9a7943838a6189c66e66a3506947f86218ad2b946d3b8a31be18b73b4fbd111633842bc4f16904de5e213775616112d12afc6b8b7ca6c7dfb284a2cfc553ece3620cf04f103b21d86e22342d31ca223194c9e8f02e160e8a1bcb27e00e4a637b91e19c31f6e45eb41048f96b8d0c3af39c3be19b52a02306d5492b9a0dbb9a107ed800604ca2882a083477e9c02940a580a2ce2bdb88ede354be9cba340ce252f96972a4f5addbadc11aab352e01d40e6c97710a3ee31ba2d2f730bad8894cac398efd156291887faf27082a399138e897dc0005358765053417b4284f27c40dff04970f9cb3f4d2c19d612878ab8e1bcdcda072e9bd8d9b0f3777b660bad63c6f57b6e45b5092aee751040f561441742b51edba26d1c97ccd61b74ad22ab084918468107104e423099b7b78a601dc4bc5d020faa2a6f44423943d832b1a1c2170e1680af56f360c806d83ada76044f97d2a1ff2fd0c84cec6378a7a43765589d84d2b90becc838cc529ecc873301be4139578ad2c11c21871410f6c79106bc5a5a65a0c1ea57f202102e59a87c5c20b13328aa63a10a06e84c4bca489731a76d75ed5be9811606903b39e42884aa222607cf49fea3bd4236db960cbf49d9206abcda6eb623acd72245c7afdfb72c7fa02a7e53efb547268c26fd739a1c1a7bb35fc775fe2e8ca3fce54570f8e110720478deb9e03c851df63b75881c78bb715f07125ae477047e437483657351d6e06989780160b9521f4031040a6ee9dab71ff5d270d147df76955dcc5894837c31c826fedf32aab4896ee546dabbdbcba0ea49122d3fcd2f94c80aac90b7ab9e025ea197ff7010db85595a1d7b88507e06ef81a811a8957e966e0614b244561cf4a635b78589bda596a3eaca7cb4a1c3342e1c9c61968c958c3441e7ea1450661eb716f5871f13d1ac2f54bc57faa8b2e1caf4dca99667e5d27fd839fae9aac29d032aff87b75bd509ce50c692aa9b6009988570ccd19a05a9cd34f3192980277bd2fcab94e15001945a460bb5d07b99d5b622352c66b4bf7a32d97b8f4925dc6567d7f9b560fc2bd2a3db0b3fa95a7881574dc01efea280260536b97d1d881d2519b58c7a0c424836fa78d97c9290fb26f6277dea97283277d0c7e88349230369c67bbeac752e01abcf449cbeb7fed70b8583c542c1de7c7d65bf2b07e5c5a30085af3c7dfedb7c2adc2c0793561f0227d6305da8b98fbd5b445a60ff830172dba536ca599b25485279c73b2118a6322a86fc546656a1571927faf4182055bf185c8806696970999c091d9a80633d84676e6191fdcf78428000be8545171982e04c86986cbb38762adaca2f0debeea0cb628cfa7ea02837326e75022ce127793015240b0ec0c0b14b4331edb1c2fe57211dd838bda7c9a8322c6ae6922c5d9d230b7a0db39d1283101489c966ba969b8a61fcf170147530f481f9edde27dcdcda5df70377ad6354321267bfc9663047907caf09332c68568cd0cba36cf1fdc0661066752c55666209a43fb53c7974623144158a462425dfc728b485ff152ca5c8d4e4f725f0abb73d8893618e79cfa7a48d350bd97760c8c470bd5bd63388cac997d12352921a04d424d9427cdde1802b429a106f5d703dc6631e72742f4113818dde96efc638a499eb5689297289e2a280c7a4a61e01b0c51a68e4ee52c0aab5dfc3f3678c791b09221ed17d3e1935353441570373e1ca974d0f777e1118aa068b5c5c46caaed4d2a3ed316fe7d051013cb2861ac942f27e25d40876a693ed7f1428efa1a64a3456c0fe10b4b543149a951a90ddeff5040b4e040fc93d035d3c6bd4d5a1cd1f4ba76d2d99a092d1aeb989e69b6330f8a4923a0e031d16dc9301b1efdff450082ce65d6969b8d64df89c22854e03233062870f7ed0941bcf2fb7d30589938fb3de290fad5c0a7463466f0489f5ad80cf25ebfc689fa2a193350861f955c01b0de38122a086bdc5287aa6923a4262b9f3d06c3216b74bcb91dc3aa31a52a6f6d586723da9a7806d22b32fbb34129551ae010e0e7fbe2d8f10cf284bc29bd6dbafaddaa794ae1393cd11de5c21efa9c9b2ef7d9ca6cc818e8b6c413cc93518422ce824ce2de9a5ef847a93ac80c6dbe84fb53623254ea6ea6532fb91baf2893bb6d09b43956be11df8515139853c6f350264c79f5beeb53da1acf78516a27a22c2b071e44fb134eb4f3e405e2c8df3a0373bd220c99b46904074e568dc31d80df617f145c85289c79e047f09ced712ea2530c60d2cdbdaf7e5b0956c9fd242308687949393afe03d7dd9526da924eb153ffbd2a218b5407069bc0a584deb86d9e103153bbfde987f7dfbfd257157afa8b10747f2f9dee4db20425e2eb3714e0316463bfe171c56971927a06629e069a8fe907b963822139fcc40b168fccbfa4a2ecc24b1993b926d84a489ffafa35170dd8a6091d20c2fcc035b7beeec827a41270fbdbc0971c753f7df4b28cc4cb51b69018a8f481ab9e059eabfcbe074b8cff0f06bc5b5cb8b939591b682af680ae2284f389dac8948efcdc2ba4d19711e679c16a94163dfb38ebf72150fcbc782a9842feca16e8f74e3dbb7840966312b52479aae7059211c313b60c2bd7a723ca00ccd8cdfa721e463f1d911b31c283346c12dbb33c9c10159414ae2640f223ae8e0f5d19a51c8199776077920c4b665efe5fc68b1cf91e5946aa78a711801945ba9bc26f5228440297884ac09e7a4cc6a862b139a67580e1e5644eed9276a28835a0ad01d3a59072851c2283b188d37b4aa733355add536efcbc0f1f23defebac42372ddc7544e86612a0316ab2b3c3cd0e105948a2e1ca49d744ffefcc6bd03b5fe819b0240b0da536f50fbc1fca088c1947b7241cb23f938ef0f4596c30f2d639ca4ed4611e378e5e12ce81c0cd017f55aa030c19a79902a0031c8da83abe33cd464d84721f91094e7db33e289d5befbdb247f0f3f93b09948bb869f4920ea62ec08811cf88985fb9b247efad3d6717567f6d5443825e381a569192dd8c886704230229a82fe0bb3b502c5d020d2371516a1d4004bc69ce55cedf4c4d4cda048de12c11df9e8f30a344cc909f42000b226772b3a770ecc255ffa7ee9f24574ba2cf3988e08c60fc9e9057a6a00a106e4b0f8dd1a0610401d4315a9d904b5978510f4cc0af021253c48c6f46872205a5de6725326cd1622a166433b4935174c99ff2cd0c54a1ebf6882747978083de149558fb2379abd46f966640d8126555cf1da3c84ec950267d1bdb057f8c2a8e581581eacc5df1b7b56e404f09da2911474951861d3d966fe5e3eb669ec18b1c410865bf1e3cc94c102aadc963add830031b899a40040147597c3d78014076b708656261f6283133bba6a96b338066ab85eea9716b26fda331d2c11d6c54b7b99b51716e48d0a0c77805ec4dcb8ad1acd0e039dbf0045491313e40c4ab7d4cf161d18eb1e99bc1dde847b9d2c03a72960006b9ef42096005dd46a45576b47ee48039241f6c0b6351bdc886004d3cd4635a63ea7d971db794bad4fde139ebe5dc84b72c3637fc1623a89cd35d75930f1887f2ade454182cf83b8d0f67f5e7a5e0e09a494984f87128d29b8afb75d5ab00ca47c20404259ebc5f51d88be59cf194c4cedc8202a5740566c0a77d5533f25dd9a971486336406adcb33e871de0b6a34472ab15ec026a74677b17e2013b86f1f7adc1195f8e5d7dacf6231dc9fdea501e49e099878ace0aa357f9edf9e048694048a831e9b700b3b897366a26001f07c39cc7772ee83145430e9eada0cb7175dcb5ec132f81432fd4db9c725019e558da1a9875aec450d83f1fd4c93d1d58c581769a73c0ba033c3f52fb6e49bb17546bf14ac23b61a5350694bdb70b55e9d70969e785ccf2b3f8970221971cc9e4bb070b24c371d7ed8b352e1278ad05156ae3d90eb632071bba04a47b029d65f0dd1c76e6f8e4365be55b03fcfe31950120cf7d16f538c939cfaedb4995d3e119d98b6810a28a51f8f66d09114e459b6c74351e7eded367e549a547d2880e706a4628d068b9089da5f4c7442c5c4317c7a1e2c3668f6529cd35aba5b0eb892d9192e168958bb04a278891807c07bb94e154487f746d6232b74205fd756317fa98d5672c07f0d7597c94dcb79020282428841c9b1c20680fc29c15b99b26e61896e6c328692b08b4fd42b0fb337cd278f7766c68f492ecb70cfb4da4220edaa106aff39c9f3f3cc84444c631d6e56881490157c2725a40ecf01999a43d152ec55dd1e74c99a2c1ef833ef06d08a2754e680e6c0f51681835577460b65ddbe296382cb3f28beb6a2a426cfe3572e601adf4be94aad548fce0d9fee294be12a91523da9cb4d340bd36af5ce1eb1817b3fd38bc30cb47bad865178d4949969f85dd1ab8c9dff101dc0f1ae7732df8319e7e567dbbb3cad4c1a43238eace57d11c1fcb7b915a1804a73b60b1568ce965dc66eae286cf7e0e7f34492e8f80c6d782b4691e106d41083048a156ebf2bdbb36acbde5960e407939f299a43fb9d744f5537eca0bf2e48f712365559cd998885107a060318af6f38b14a2886ff1f44457539556d61426428176d3df122c317fe094dfee6f84ddd050de18fcbf9f4aa45abdbe055354a0e9f3ed2c1f438ad29ed08a4656a16789d65ad17eeb6675a16dc7230c4e787c244bef98da70e7916f41ddfb3039a5db52c72a14f4333b66d5fa186b507c6e5b60cc393980792e4706ac8658397e7199903b6795bb3d9b9ca1a3bc660a8122899f8ab895c3d66bd68a5bcdbcaab57a9d3d850c426700a48170892f84acf5b4a163edb6fd021ba8eed04b11d9f2bf5ef91950801dd4283d1eccf5b10091d5058b49dd7aa5068b6cf03346a21338458ed12080d84e38993285144d78d7c74098742ce3adffefba1e3805110fbdbdf219bb9239c49950c789406a053a00775b722c3798621fad547130f394af359343d930aafeab5e02953ecf1b2777c9ae84b0858b8851c1dae62a550282ca539ab61e97352d60dadeca8d2a6cc5c43daca30c65723b12865a8422b2decd40a498c0947aa9e65298305875dbe2923be64680f3e527ca5f64d98187d8976869ea0fca35cd0ba504a28449419da04e59f149dad272e703a7d7cd6bf58b95df1a2adb78e90950143527dc996c22abc41289055b19dd252214f6baa32969f86e05ce1e1af938ea9ef26b08d671dbc595f0cb2a3e19d5ea2afa7eeb052eb6af703a0168c838f47012a33bd3859fabf186de5bd35c9f890be11eafd882c6731febd63dd4465e212cf69e6b0b830f7b571ba3a979dcd129f3ce614ae0a961483ddf1f146335bc801631b3704169eb055593804b520978b9cb6d634e476608c93ebf28ddaf12d8083a36c55e69d08122d8ae7c3c06e1987096fbd73ac6d4c085c0e32da91b66ac83a9343b6b6348423d3a291b4e00c34dd435c46539e4bc11dec40a2cc7f754e0784da847c3e8d148e8e89b684b084f9897a76c4630e8761ccf3485b070a420a15e8d823b2c5e8e061ba87f15bf740e323a97bf8cc7fce66742e28f389e2002cf598a44d754e71e0d780bdd436ae6f5392edb56bec99e0821d0a2f99f235f6759ccdec8a8ee99b34e523288fb25c6ad1d9d863a49e74134b09b2f2641d85088180d14a579c18cd22ab8ecc53b26467334091210b56256fe1dbc1f8050983534135bc5056a81601c15487a9959d6682a0e9d8c23bab22f96c921f2139fb41078ba0cbb9e9980b82b7533e98f9e5af8176ba7eaac45a3ba915816a02419984130a574f861eab4fe861fab47a957ef8fe22c3847d07e80974c6793751d0e5735ab410ec5a0a25413e569c500b4b9c24212e64e431b38e6907cca7a347b76866013981a558db0a88ef9b0f08f7cdf845f004032f5fe5b4fd9f70d53c17e25678e3d6a6b372f0a10fcb31c1476da4d3655e612aa3cf6591b6e315e15579ee238a58831ff21de26138cd445df87e2fbd0db1468dee8b36cd6472c0fd08bfe020f4ddb9cf3695c37354728eb535f23bf3f5a13d77051484abd9406aa4da3ec1e20f76e53348028f410d216d4ea2427ee1c0641eafa468b931b98c963de480519aa81c0563d01e41a1046d15bde60d984b3fb3aeb130e8547df8e252bcaf53551f4290cf3ca4d4411cd5b8f08db97410bdb18fffb3d74739fdd710634e45e1ba7e98c2ac5b98edfbc4dbda7e4bb13ac4a5694a9b92999768b13be5079deedbc638bb58ebd0fc09d0299641b82522eea69b03ab08eda6b3f680a8c0fd01a4b23bbb33e84716b6a4187c498c9da7c8a3e16d7393ce90a01ec71c35d6d328418a2b4b7c311a6242b928aa8f846878053bd3cb3436a158d453887899b28d7b43f3298a94613682217a354890bbc9ff29d2e057a96a05bcd9d04618006923bad097a8c394883ceea399b52410068fca45d9703a9573981680db706d650253370b40486fea23a61d78b4f0a18677b40a98863f2a394351254559b7af202d18967c0dff264840cd063bc6f76bcfb15134d20008495560aaf0c2b4299dac1eccd202ce2f84fd0a3340b2a4d001ffffffffffffffff1f82b5df368b319a912925910d982274cd9c4c49ee9452d22e4548b38410078772ce38a35417df0a610b9e0a5ec9aa6e327d85e0b3a52749506284603c9df6d476d520d81bdd9020d8fbb879fde4d852e123109ca4ae5db25497a0f1f2840f40f07e99b4825d8fd62d11e1e30f9c5c9fd6a36ee7d0227cf801b9696317f346531fecb861b294d0a1d27c4089561994542667f690aece9f417a48b5729224155ea9240f58f25451f704df68c103da57df3526cb0d1f77604baaef1417999a4c2a83f061072e9df81fbffe4225295d074eb586dc9804d549923343f8a0036ff2745352377ff03107b6727ccd49c9ca31d9871cb81c1dbd043dcaa2571e073e796752e96fa9be5938b0164de592e4bc3edec076ceef693ffd70035731b78f8ca9c4a298b4814d6bcad2c88ea5dc1d6a949170a4a1230d13830f3670573949af8177dbb5b49f4dbe6b560d5c9a9ca4685b3a6ef09334b09eb4a39b9ffa4f92241ab812941af92705cf4bdd19f858b9b2b5ef66e04a70cb59c5549f66ab0cac05a9a6e46628d7932703a77982509a752b95690c9cb058d208eb93397d5c0c9c6528139d4705738d878153cfd02b516e71bf0306364fd7854e4ff7b89d2fb065d144c83739f242e3053e4585bca4e676814d41a6d3ad0d95d9a25c607d4fc916d85c7b794555a9055664c8341ba52dc8a48f2cb0753af55e94ede5dc0716b88fc14593d0f36cfb5e814fa144d52a69b3820f2bf039bfa90a9ca44295fcd3ede9c94f361fd9694279928f29705ad67d71358399891a6ba421053ee499f7681aaf8fc9237c4421f9808249aa2468dc240e3e9ec00933797f27376f9e94167c38811f21bd3cd8e511515a341f4dc80f26f029fb42473b25e9f416fc5802dbe9dc4c4bf501158894297c28013f92c079ca4933f72b93609ac1071218fb20d55fa447e03c643e4f5210cf38fe871118cf8d2f4abe94a3fe62b09ee487ce9d462b344d0c6eb4826d55d222fc330caee4121aba3b96961c1206a72656a7d8b7090623946c92d2bc17186ce8914943dd6fbaabbf60db3684d68ade17dc792a29bde093c5ab13ba61829e24bce03bf9e6363bef7bff76c12555da378aaf0b4ee9bf4956996451b2970bb62a266964a8d7d0112ef8bb6bd134a2242d1ebb05a326e8cd1a34976856b6602b69dd50937279d2cea3166ca7a9bb25f57ad082fd6849a958901d9ee1310b7eb368906992e8233c64c129fd69d45d7e9234a76edcb871038715db81860ee3110bfe94a0d22e68922f2949b060358f1c1dcbb257b0e367cadb4c6bdc245dc1594a927da87ca93fb81cf06805a7fb4c0853e26e3e155658297be9abe04d522136f24caae0fd476e926eb954f0ad6e3ebeb6a1af360f54b025d9a7a5bf9ec9994ffae0710a364cdab3b354a2bf96bae0610ad67b3dc813a5dc52182d8f8e6984f71cb871e3c60dd02863f1e0410a46eaa87441a8ee9827fe3cd03f788c82f36a178f1b2cc5a04a51b09ae429655247718b96503026ead88949aea88a26a0e0359fc594b3c72428b1fc047f1b335a578f9e6093271593a0d4e453baed049b470693d79e3d5a479ce04bf5724a56f22549699be0477feda2aaa509b63a6497cedf65823111b6b9fe72d75a89093e9ac674f2fb889224fd127cae0aa53a7dcf43630976af53774f7c0d1dee51092e93d232c9b684ea7073a81d1c69ec000d0f4a9cb932641493f149701794be6e0d7e0e35dbe12109cec4f82a5e3ffa644c73a8e560c75903c7f731238d52c323125cc9d14431dd9c2de6f28c83060e1dee0109365b472b6d4cef45898e32d4f8f208ae920e575753a2ec4a2ce1e108de640c32a469b2fcc19b844723f85c194c8b9512959d3be3ace0c60d341c96080f46b0e9ed6a4b12bff177a0c722f8cebbd5a2a2c943118cd4a0fdce4b7ca003a151c65d133c12c17b68140ba1e59582a3078f0622d813a6ee4a92468399048f43f0314cb3e74cdfc3107ccc4a1b4a905f9effe351084689aabc7982d2fd49ef41084efc1efb8bf1ab5e931e83e03495f6858836b5f73d04c17b899e45c934ff78ba4720f8b5eace23639e9845f40004a3c274e9fabe1e7f6074f5caea4beaac26c5c30f9ca7bde90f3a3f99ac79f481efdc9e973c081b1dda1c6a6ae030441e7ce052ba97a8b834f0d803374a4cf1d436534dfed2f0d003276d9283fcb8b649a35d6ae09107aee4fb49796a6b81071ed83b5d259392755e57ba8b81c71df89c527b4ab2d576e02c6e05cb663a1e7560349f72d1a93e5b52ad071df8983e264d2a4bac2c5181c71c784bdebda2fa9b5af78d1b42f090c37f96a15b4fcc269b72a8617183471cd8750d3a29a54b59c919ee031d8e050e6c924bdae43146dfc06549cf262c055139c81cc1c30d8c655ad0637ad96b5e1e3cdac07add5f2769774bcc0e16144778b081b710fb5339bc4376d21a78d31a742939eeddc1430d7cf4ac9ccc9214ac8259923d78a4814db953f74b77b405b9071a38c1bc6ae37106fe565ce3dfbf1e66e0634e258426954dbe179581d13311a19a4dfb5e4e06b6e49df8a9dd39058f190357e979546e1a91f97931b0c0230cbcfa5d0ceba0728e2665f000032748ff14a5e40b16b7fd029763b2e05d4165fb3febe0e1054693184a1e95b4a54e961c3cbac089d6926f2ba8dcb881030d1e5c60ddb7922c36da811a3ad2d9c0630bfc069de9d3838997c9cca1a64629430d149cf1efaf024763071f40f7d042f1c0230b3df0c04229a96c49e9e81513c800c70e3caec0e8c9512cf7f647f33750e3e4e8e4051e56e0fab3f44aa9eebfe972a8ad8143c71a38cc30e3e4b9c0a30a7c5be64a7228953987e568ec20bd1a8b020f2af0164fbc5295b339f4041e53604cb454677bb7eea74b81d10f5dd799e2a7fa4a14b8aab49b93f4d98430cb030afc7bdc7fed24e301910e88a8e0c68da584c71358153f99a57257bd64d3747b21d39ad4414684052040836fdcf077341e3d9ac0de7bdaf1b42113787b3f5395c4cc183c96f0e7a0eeadb67d734a70bfb2ab640d9ef9d924b8417e92d3e4458bcac20309bc9976caa336a8121e473868f6601e3a70f030029754e5e63f5516e3f1302526774cbe620c62b0be716f645e1525fbc5458c310ccef254359ecafd308630d89263274b76229328523d8c110c46a5d3ac1e2cb5e86001067fa25cdc2c54e9cd970a443a2052ee30c62f38d15a7bf54b4afa821f8be9ec05bba184c56c4a2d8992c30b46a72449f92b6912d737bb0b36a8a594769464a245d118bae03b5f9910a22fdd829f0b6e648c7a416d4a9a4b060e63e082adcf9f8277c6f45aff2d38b193744d7f8da29294ba610c5b30222284b2d87e6290f1368c510b6412265e275d883168c1664f233beffe6fc60e5cc71965168c2ae519633459316a6fe230862cf8d829782825ef8f7862c17f9958ee35c2cc4d12168c363d25f733464dc95fc18d1b63bc821125449d0eeabc315cc1962ac145f59f8fb4fc0d63b482d323cad2869e344aa9ace0db832ccf9d31bdce52873156c17d0761f6276352cb1a17e858030d116c610c55f09dab71ec73926249672a50c1e6974ceb25a7e730c629187da357456f9029f824479bbcfda552b0415e499da246c6fe0e29f813f5a0ae47bd24393b0a2e2fbb9910325a274b1105efddf6612193b8c89250f059729328f19358a9070a564f36d9327fca9a9ecac2189fe0a2862a795662ba642ee932d4a0c3189ee0d2cfd259b24f72cfed049fd655f24bded5f10d0a63708235cdbb1f53d732d18cb1094ed694ae738a16b7044d0e35d4046f6b2fde77b2590ed21cc5189960347b8fca5d326fea1500961803136c688a92e4fef2129c7afeb898ab6a4ab9312cc1de2571c3a4a88afca44a707af99da44e21b4093d25d8132c9bdcbc9a49b0e57a4254334512ec07d91a534c37ca458c0423a4c82ec9300624d854d984ce1aee7dfd1a35ce380347b28040482c2810020b32425ef18363c6ab800121aea840482b2210c28a1f7c0e3e4256718110559011920a1c65a4b1011b21a838c57fc2a1638d098498220221a5c00112428a314246f111220a1c2121a12023041465a4b10113f2094f7805423a1181104e6c4202219af801b21192891c3b4e0e058460e21296f80784548212939044242c100289478c11e2880684340201218cf808598497918010457884240287480822763820e4100c0831c4484821c808214448c8200421819040004201217fd86123c40f6ba0f1677884f40124840f0b08d9c30342f4a08307212179a8103cec7040c81d709491c6061a1062873a9491c606764420840e38ca4863036a7c0ed4d0f182909039e0a840881ce2001202070784bc01c70342dcb0a301216d7840081b0a10b2860484a8c10021691840081a0ea2db576a39ad42c819384dea926c275ea624d32166e093a0613227dd2952082903db79d71ec44bf2cbb5092164604df2b19445fb2163e04f9450fe25b73c081103276bc3ec2ad59d95a430b0d1721c4fa74fae791e020636c676317193a44fca4ec81738cbd9a289e24167315588178c1042bac06b569509ab8c49d712c205ae35e7f7f092ecdf3c3842b6c0dea6c80f99dd5dbf0fd1421642b05042aee02156b01b1908a942928b102a242153603578ca299a7952042152e0dd752f85c736773745815362923757d387b424090a5c3059fdd28db058227f02233cc90eb26b27f0eea2e4f4dd9acf54d4044644e9e6ddc96d5a7298c08da9d525416b96c08ae7cf25c9254609ec6b10a5f573c61cfc4d029782d07ca2c691c0077d6984d2ad8b5ab247e0d4d3aa25f12e33890931029f52edcd042d2565b61483d112ed94d9f97268136270f24613cba3953e75e53078134fcc3dfa3561706b9a42671e6da67707838b2652bfd29b5072536070d65d9a4c8a26c82fd8b5338b278961a6c902f1059f325832b92f63b014a122407ac19e789d5ea54ed0b4e006c01020bc60df4ab6faa611cbcd250264175ce9d34912a529be958a08105db039f74f9d90765e29cd05ebfbd59e26658a31e6331020b8e0f398ca2173f35b7096d2980e392a4c525a3a80d8827f3d514ac9e97b32c704520b465a5cb31599aa01082d523dcabf4d50eea11c6a3d386ae0d8411a67e8e8640d20b3603c7f125cc3322680c882517e9bea372ed201738f008905236a73caeeb939e48f3e8020b0e0a3b8e9a0946856ae0f20af604bea8930cb6c27e6d103c6155c12d2d3f9e577939338069056f023faad9be3c80ade6e63b60e7e1f937aabe0c6c5a2e7cd29aa60f38465a5249d4e0049053b9aaf7aca82b4af5c4150c1470dd1b932cbf4a84c0f1e8d1ebc09d038c19ab105c829f85cdac583aed19f4ae74960404cc15d4e65e9293fa5607e29d8ec1ac424a541f45d52b0a9444dcabaee4a780b320a4edc92f46a89907183eeff090f44149c92bd82fd9fa8c1f40f120a76bd4e123c26d9e4e000020ab673e607cf8cb9d12f904f701e2c288bb6a73a666c871965acb18384413cc1aae68fd9f36695a5b013ec657d15696e262729ad9ce03e69c9d5a44d4ce7d66c82fbdc8f49a5925284f5660e209ae02a6fe4556658bbd899e0f427f1b4c7ca63824b79e39f8c5bcb01e4128ca84a1f426fd06b5f2dc1862aa59df1c272e592ad046b3167f80635ca4ef7fa06104a307a299d18fb52e5cfde019904a7c34dad05159704a75306252599aa5349423acc681c3a7c77001209ae9212bcca644987ab42822d494e654ac82d1d4b7e8dbf010e47e324a78f60d4e45319f234a524e938829319534a9db51a69a47170e870a38de063bcd3594ad71c6a387e878e3474ac32824d9fe48f5d3ae17d5d0e355d047f92a4b4e2858687264114c17eae687f74ed60678124820bbb7451b4c4aa4a41104430b2c654c34709c722400ec15512ee69617992bcad2138dddd5f27b44c0e4a5d0029049f427868095d5a29a58460ec921494fc309d62a74106c1c6fb3359cb63347d2a8820d8cd96c41d51b9f6c6060904a34ee74f9a49fa768d20806073b65352e9b1a0eb32903f304a886fa9e05ae2f9794400f103771ed2b3e925e550dba40ffce636792699e807207c6093faa90a17a1be25bd072e37e6d31f99046921d2039bc36b83de781a1d36481e18d1956ad544d7b29ce18115cd9973c907903b709229591bbad39ab6cba501c40eac65bd1f694aba1e755207469b7b099179976d42746077fb32ddf5e6e0a101640ebcc8f15c2793ec3186480e9cac7d32f5fe68bf93ca3280c481334193ceb7de14edc900040ec86dfbd0a41583f78104dd00f206464cba2df9a43041bd9502103780b481934fdc94544e5e9a4e9b43ed9400c206ee366f0e5fcbadf974c651e3a481c33009206be02469bf73e568fbd5a2dfb1a38c33d490f6ec6ec9a16640d2c047f18a498c65626d4c9243d1c079a94aa117425b76122d02c819540deb2e91d7231cc50b20660029039f74c59c6642b53d3230e26d4ac6a482cef7f11c6a18049031b026c4dec7648d1540c4a027a1f7c46c9e257d72a88184816d1fb99ea4242829b82887da1d1040c0c068a851523ccb91ddd917f89895a5ab04ef31917a812df135df20475de0eebac6ec82454dd3b9c0c93ed38ad1f4984e6e81ab7a2d4944994a73530b9c75526d13bb4d5fd2611340b280370c040bdc75e6a0de1b45e5b4e650902ba0da163c060b205660d3cb845ec76c0e351d66a41140aac049dfcb1bd34fcab9947a8d4fc91040a8c0abe7bdbe923c993c2ae3066598f153e0737e4e278454cf7dd93a1f804881ff13542cff549ebb3e059d001205d64e5fd61c734a921e0abc08cf29b9765bcc99eb27dc95d6622acbf400c4095c57c926679f4a13d812eb6c21f39d3c006182dd8001c8120e4409ec6a68cbaca1049204d6469a264926b9dff6dd408719650d102470e28abb9e1c2aa3d00039029f44ebf2cfea811881b5a452a47714fd218e5fe3cdd0b1061a6524c7828f62f05a17c72a5c7c456972121fc46054b2f03be953f6527184c4c730b8f44c57daa74537f386f81006e7a304b529269dbac38f60f0f1da47bdafee6726f800066341dffd94ac5fc29372f4404762a2f8f8055b2a9d56fd6d1b252c39d4f2c3179c523f41961aa19d5de550c3a1c30f7bc1a69135d641c96ab24a6ba051c619fbc10bb6849fa67caaa1a39a39d474b8eee24317aca5ddd2a1f4d3e73cb2343e72c1d5985c2ff56c0eb5e4d5d0b1c60a1017eca8c99d4a7dee24c7cba1a696f4e0e316bc06fb7e15f9312799ff341205f8610b7683b4aba4bda6d9d582f5d39d46b7838dbf4b0b469ee62cfaf375a6303f66c1c52e7135a5869d670dedcf80c1872c189d569564922bc925be170bf6743095648e25d36fe90f1fb0603beac52489d9822eb93b3d7cbc824d32d9694faedd418b07860f57f03957f251af396a5f7e78f8680527a407536a4a464b6ef2c10a764bb3866ccfd3e163151faae0d6de33b98eec2b495ae6f0910ac6b28465a6b41f4dc5930f54f0ad412649c9569e82d396cc4dbf824cc17b32b5492f67122ed252303a2f98d2a2222bc8d0072958ed54fa738f50ef190597419e26b59a93638d322e4bf0210a2ea749a729e59862995d10f1110a4fd2e063b7e17d80829399f4e285160b7af9f804279d50feaea5d64ba9cef0e189db62468d5a31e5cc2696a07ebae44b153e3ac127d18b49cf4c449550e104779298f3da8ab5838f4db0afa657731aab1b0bb1e8e04313ac28a544253572b4bb650567942033c12915a2e47ac760828d95c6fb546dfdaf861af8b804672a831a93724ab7e547e1c312dcc93159f4589d6e83f651095e7cfc94185e7a9ea43e28c107ad51fb26c9153e26c1c9b660aa5490d92f8456f890047766154b5fea91e094bafbbb9ce4d1f83990e0ac72a66c3249b9c9b48fe0d2ea2e78c5f112d5c4119cdead31494ec2949db2116cb55d08b3d2318251a74ade5892a84aaf16c168d64bdac332e4b649119c9c3e222f27bbcf2429115c92ea27747b92d33b8d08ee34dd73f4989957ee211899f362fc8c9a27ab8921f8ee1c055df6cd4065ec50e379f02a4062d8d805a723a69d4c2e7313437603353630821d27047766a5c6ffe04770680219e008c02c6ce882cfd0494e3b5ab289e9e782cb16d763a7092e1825febeb67b82853e0d61e316bca5cd2234d96e0b2e6ea9ec1c59316a1ed9a805bf7532bbe5534a6a49a2061bb4e09452bfb391e1c1d9310b2e076fcbb150aa833673a8f9d1614676408405863bce0432c0f1021bb2e0feda2dd9483f168bca93429d991616fc07fd1826cf47ab2eafe0c3bafc54b04a933789bac2862b38d32aa252b2e015d2dca10a1bad70d34992a68e954950618315bcc99284961c4ba6443d43616315c73a1779a9b575c2862a38d56499f6a21fc2462ad8cd7163887e8b71810d5470a5838ee3a34c0c4acec17b1ba7e053d2d141ac4a385e8d348cfd8e93030568e838364cc1a6a04e6a5b58575e136f06364ac1f68a56be544906a1f3a4e04fceed3d56a793fad12838d135a9ea28dd1542a260ff3ea5dd64a1e5e18682314956b2cd9ba79e57507057f2c9b53a79ff04e527f8b8216f34e595c5fc7982312fe5a6643a695ed209f6ef45f5e49c4cbe708213939cbca296656313bc78ea90feb994ac69f2c34a664731a54cf0ee37eaf95964ee2c26182163509ed5fb4ba44d6d470f26f696e0b488b653966b9250e295e02c941421ad73dce494e09228b353bf4f82753ba93e439a761c5b12bc867a925292e3e9ca3a125cc996b3999c8704a354d23a9e7794acf823d88a4990392829e408eefbafa2677b1ad16da5474fc1b38ce03cc9b9360877f5be17c1eb87f6a46e6b67b28a60b7a4909aadea74a38960930c5ad97992747b410427d46e7b0899739d500fc14979b5bc24499df836b26108ee4c7b680d6e214c6a849fbc12250427c62c4a859a9441307a93a06eda13045732733a3978e6d51e082e295de2156a792608106c49a1c53f704a5ec97ce9397455f403bfa149123fb7ee031fd4988ae982c707be2f76921ea36eeea43db019934c0fa676a7e4e881ef24e367bf9424213279e045c98ea69fc5ba4dc3039f7426b17c33f97bce1dd8dd5899b4872c794dca0eac87e58d669dd283d875602c9d74fad9563a7d880eec784e92f020aa32976e0e9c242f7de718240736e7d149bc2de75b78e2c008edb14268ba71ed150e6c858f506f55117254dec006955d2f878d5a86cc861bd8607265daaccd461bb8ab357137c91dff1cb4c18637931ee12753b218430c1b6b2836d4c0668f47bf74d3bf24c5461a4c925269266b0293081b9b2c2583a78cbe3903efe14174c93168064e77f4cea339e63b4f9681ef92a25f6fe7c8c0eb7592d2e59391c1c618b84aa2f30413f37e7d490c5c7b995f98dca047fb30d808035f6951e425e95cc73cdb061b60a8d4dfa7acb6a7ff2489828d2fb4312525c8b7987f21d8f0027f962576ea3fd1c4f564c14617f8a04fe538da3bbfb7c105b62a77b05bdb2449a2f6bbc06c6c81f19ce29fe451a973d686165893d2a72e13a23ad8c802a327bbb27cb5d4bfc5029f97355d6d34e560e30a8c7453aa27e86a3de9a6830d2b702e1a8312c424515214c78e326edcc0b163c7ab5176931d3b8660a30aac7e29134f0ad961f943054e7d5213ac325360a3f549bad64188f52b05ce24f94c0cab73bb24250336a2c0798e7edf5782023fe65e5a493c3d81b111226e235df4aec9098c52275ae89cd20446a77839322659f7616202a7192ce766554bea5f02ff795599e3599e8abd123841e724bf577ed24f4a02a7b52e66ea64e9da4702db2628612587c68dfb1118a14dbf486d6d18814d9d26a7a68b1783df4c27c813535d7d3a31d8ab9c94543ac89296f4617072f694c6cd746170b24597c95b7fa27a1e0c2ed4aad58827b7f41c18dc96b4a5e3f525a9e5bf60548a5a828ec794fe6f5ff029f57e2ea9a315e4dd0b2eb76a4fdb4e522d6a5e60929bbd470bda05df71d4452f3975be8e2ed8f5a867b6f9dd92980b46f5a9b59d14734b352eb8f5cd258d89fcadfc166c501bbfeea45d30215b70ae6a72684c4a367da9056752434952455389262d181d4b226ff7be7470165c0861725af4b614159205ebabe99944132f863a16dc5eca5d8bd1a4c9212c38a9c13e09aa4fa6929d57701ada42dda4b8825bfb3f0beac4b482fb1ca3a5aab4d4f10c2bd832993fef6457c17b4c6e5b27c68f9e6455c16f0a4aeeaf94cfad940a5e4f8ea2d7ece40f3e2af8a0ea4fe610a5f2730a5ea4866a5d6ef3cf4dc17ad25e6ad95298e2c5df6cd19414ac97ec71f463ca28d82d93d39b4e276b658b2838177d2b29fb7daf5942c1499aa2a6d51c149c2e133bf1ebdc98fe0423475f27d9042d523c9ee03b2695278e92a4136c109e4feeccb1346f0927b81c6fc73b269de7b16413bcdb8d85529a975496682293739a0caf3c33c129e9f39ea7937fe2252658d1df31b56b2741acbc04bbdda582ce509e4e092dc18a8c9dc7758495e0525b9b8db6cc8c3948094e5d302933693ecb1e4e82cfc94a27d9fe4b4cfd4982dd28bee3269e924bd045824f7579425d88da3f0f128cd2142a933a1fc16a560efabf2d092e9e231899d6d6253f65924e8de0b3092f41d3de99a4338213a67974d2a05e8366118cf6cf77e2b58e7ed614c149e28babe6a444302608dfa0dce4c758294490710846542949aa28fe49ef38d4d00102320cc1674fe2bd8659ac32071a3b580c905108ee93642a99d26939aa5670400621ecc62163106408e2c808047bfda92f6dfc34b14c3200c1c8914186999cf2077e5f83103e2a3ff811dc91e1077c4c76d324aaa70f9c50a5e2e7572e4965950f8cd6b04e92b4297be0245323ad4ebaac40861eb80e3a6a8d4a7932f2c08bd7a8dae55407c8c00397f25b756832f7a4bc1c6a7964dc81d339e3c939bd7edc92cba1762b20c30e9ca8164ceb75d42c73ecd881193be8de803153011975603d534aed52ba2589d38191e98390296e7a3c3a07c6ded4c74b520c2663490e6c7bb21499be387052f2a094c6df9c82e6e1c09b1c51d2f3e6e5adff063e37afb4c6246f0ca1ee26c87003279624d9bc4bbe0d6cd2af1da309ffdc3c1b18cf9e449b86d8698caf81132508edf31d4d52a78c1264a88193154a4a6be9e641f334f0494cefd692c654ed68605352ff5a5b9f33b0264205bbb218c5c363063ea78df7b61a53064645d53db1472ca5e89281eb3cf5f450f14dacc7c0657acbb154e5741b12033fba64c7a44f0d039fa435c193a8685552c1c0a9a7145a4be80b9ca4dd25f4494a8f5cbdc0c924a8caf0ae74812db5495bdf4eccb10a17b8fc499330a54eb6c077b09839ed64d0e94db4c029f9565a74bea933932c304afe8a972ef4f54d8905aea39fe815936f9e98bc02275a8cea6ada4cbfc95981f33fcb718392727ec8aac0e7334125490ea9c07e4a524fcc9b625c6f0aac267552eec974ae4a81f7ed98f6a6047932ab287056527a461166b91ffb804807c88002277f5c8f29c9ff096cfba7f420c4afd32891e1042e68cb8f17a2d2e9e94de04a8c7d66b1637e13d34ce07468132f68eb2c4a102d813f6d8b9fb525fd3c303d90a104b62eda7d5a4b93c0679273ceb429ba7fea8d1b68200309ecf5899fa1c46c52473c02a7affbd5ade139de478611784fdf3a9e245d6dad87148313d33f3f2529a924864f8c637687e618b494428681a7064baa595aaa199626630cb36ef3bd3244189c9c83a6a0a1e4d7bd15120cfe736e59e65101065f9bfdda647757de64c82f1c10e20b0684f402470342783146c82e0e10a28b5c24200417380810728b91105b4c20a4161e21b47040c82c6e8404c78a915070a2e77b368f99d2781228b8d8a9f9740cde22de7e82aba0ae3d5dbe93edc1114f709f2e9a4b8c7482f33c3a622d4266d787868eb23ab35a92c4334301206284136ce9485141ff5baaae1514239be0d692cae9e3eb78b118d1049ff40761ca52434545152399e02bd7350625567bfe3e6d05868a114c5477256754bd3251111680c00c4fa5c4c825b8944205cd55faa4c38825b80abe59e29fc9afb1198c5482d12037abe924098e1d65144af0a2df637fa7924cb0580eb534cb5a8c4c82d3ae632f3eda264a3322094eae935ef456cad133f7301209de3ef7dfa71d1d0f5e8f408251dfdfd4a2f7744ea14770496adab6134d7ac5fb7204bba99959ec7d7354ae869146f0662773c731295916150f238ce0820ef51354a917c1495f425a10a6f452b48c2218fb92562db93a9208bb81841144f0d62975d0bd41f55e7408fec54de7e50e9d47b31d831143b01edf4e349556e4c6fc2e460ac109fa3535461506221d1029c17fa06e84108cb0fc9c4d2679b79b3408d65b83ec2f8d5947e705c1ed6eca29e8db03c1bec5247f5e3ad12ba901c18eba1fd9b635a256f207de4366d15969f403afadf795fda4f00cd9481fd82efda42479343ef06f63a6a389d5a2942c8e61640fc9d316a293becb8a61440fdc6896d0567d52f7b9250e2379607f7d474925ff78606bb3bab4c90adf64b761e40e5cfe8faa41fb5b8ca54ed60e8cbd6b6a8ba6dc5879725718a9037797295da31f07af46b20268c2081d388fdd414cd258bbe21a6ae84863c70e5c012c61640eece59baca997a436d1b4c3881cf85c797777b532e6681d46e2c0e8bdfb1c16baa2765a0e2370e0d6d5dcef54da3e294bd830f2063e8e92f9941873c58dfde7a0cb6081480746dcc0d8fba7dc3daeab49b00d6c92a2aa57e8531846d8c02593abb35bae89b0201846d6c0f67dbe5910164bb093be61440d9c6cc2b3495d29d77e360ddc9718aa2ea598f16b4503a3728a2579173c2be7869133f0391aa4a7b79c19f82db133f9c8aa14d455cac09f3a1dbab67a7dcd1132f06affdb16bde4451b77e0386e80461966381a27c7198b46c6c07a974efa2dbe9628131c236248bde658f29b1f065e4cf068b2796c339141e3b45561040c9c94c744c9f13a1de40e86912fb0a1d64bcc4e8a3e96a61746bcc09674e1f7d983a9021ea8f13b5e8d34c34817b892824c490e39e6396b2ef09bcaa3c87aef0b235be0aef45396077d4f4db2bbc28816181ffde72e32b7493d69c14816b81cd49b49e9372a8d92112cb03a3289e6f1ce1646aec0679b762ead66e9c44b6a61c40a7c061933e4c976d28b9f86912a7097b4f2997479c2a267840a7c14992eefd253adee91297031791e593ac69c55a43b220536a58c196e518d025fa39ee3ff4982ba66a0c0276d61a2896af204ee4247c9991d73025f79f3c92e75caa1d604fe529e65aef8b9eeba11267062526a7c54a9dae6667c0e1c68a8b103644696c05ba8a42b64821125a01543f56e6b94a1460f10e9309204ae5d3559c651524c65e8081258edbe386a421a8c1cc1fe20efe3b6852ce5502b56368411237c27eafbc2726a6887b900dc41a4185c2613df2d4c5072facd40c78c320e0f0e8e2a88108353224a2c31e8ffbfa0cd406418eca5c979dd25ae9b021161b0975e4b5277826fb0241a3ad2d88186086edc703374e4b871c35800ac20120c366534a9d97b2d09ee386fc6ab61e666e8c8912e1001069fab84abdeaf46170b8014447ec18dd0e639866aa94a29bee0baf25e12b4ee2a73b217ac9a4ee29bf4a44b37c60bfe92d4a799edb40b4ebafb29257aa3996b74c1b965f094e2a5e48233134df6ab10fade232eda54bf25bd057fc24a064fd5da824d4aee5aeeeeb5e0b452be28a9f593fc3e87da19651c5a14b24c95e88634c941eb30e366c1a575551f995498246539d48220220b4e4ed15cb5df2ca8ebecaf71d6d841098a1ac78c1ddce0d5d01688c482bd2bd162c9ecdf591ea821020b4eeea07267c8134c127a05974f4c0f72552d7b87aee04278093aded1cf4ad30a2e7ff345272bdf4b1f2b382579aa2a6163dbe95a053f1a949fe6b7efe8e4aa829331b308372566f775ad20920af6cbf2685729d38a292a5853174d4e319f9cc7049541e4145ca6e0a3f3d48e121e0403115370195334d9ed419b684a271029056f192aba6f50b75ebe0829d8171f1d5a3ddae434b981c828f8924193ad2719f4e6e707661420888882f515152547f3bdbd73ec28038d325286224540c1c9a5e25e1a3475b39843edee13ec061d2a5a37d4770ce550dbe109fe2ebf56923c28d969cca186038dd367668874a2eea42b5a283de5502bc3810827f875fbabcd50ab7aaa224436c19f9b26a944f3b314ea308868821f119592ae98d7cab26d10c904d79f4f924a495d82ba2426d893743daae67fa8a62e510a55d299f2b4cf07efcf8337114bb039c9cd452ac1885f9a1e17952fb492430d055006114a70c254d377572a879a0520092293e035b89874bb682ac7aca163109104e76572a7f6dc57f2c48844823369eaa4355d020946555f5b7fa66eb18f8141e4119c3a7f4bcd6b9b954b7498f18326c18d1b3accb871e37ed066a4714619685b10710427c93031454962231853d2844adb5964a9905d4184119c12577492a925c97c259145706262be60e7af22f8b66ffb94dca3ea9626117c3a496bfa9c434932dce381410463c93adf58d2374ab987e0d56232e984a93ff5d51f440cc158c990a6b38df2b54e21f81baf33293455d35f7c10210497214d266dc2443de58a0cc2cc90396b72a809827d0bfa49752d8dbc9c221208f6845fe58a75b6621f1a420410bc6dbc0f3596794d880608913f70620e25c7f4bed666b93b88f8814f51d1a4eebdf592280edd83481fd8189e64eed4924d87121e44f8c07a95a855fc1cfb3c8511227be0e249351aa2a2318b4c0e35bb44440f8c12dcfc73ee330f9c24c94d5741a8d09a8407369a7cbe273a79776b776033e62ec13ce665fdcb6c41c40e7c7abc721b557983d0ebf09d76f6e8c05636415f65bfcc81ad52d35db72972e04f87ae9233dd5a9ee2c05836a137d424810397a4ac9783c5f10ddc97a63b59b43dd53f3730326792dfc2d2e8dd94481b38154fe3a82fcd8d1b3bce20c206ce426d89cebc8a1c44d6c05ec99c2f54b96dfaa0881ab86476272f574ca6209206b6449772114aacd763686064a5bfa9d24cd25836a52072064e6b4cabd131bd4f503203573a97a560eabb268894810da2a46f766daf6b9b0c6c9a307d92a774573a33067eb4abe792241d317049c5deccf4370c6c7f95c8ca75498dc93141040c66cbac926230b7ca962645e40bbc95ce7aca92242f70d65fa24bfe92d425bf0b6cce3b99d717d3eba6b9c09ee865cb985249297a5be056838cf59e9d161853bb5a51a4af78b2c0278f975bfc3566100d0b6c670ad1d1e1a182cb03912b70e285aed1ee6226b9c70a9c5d07934967b60afc6b9252345b17a579420546575daa5d93fbc29f025bfdad664abfa9874e0aec09ddf8a14c22516043d8965dfbdd77060a8c7efe9e2cafcf559d1d224f60ffb6648e5e700f11d221e2848476dce0570c449ac066858c7bfafa738a4911265c6bb96489495493b61c6ac98e1d3874ac91dc263b56608a8b2cc193221e45655eca892881d1256f8b36991c2249608489ac14cf3a0e11247031c95b2254588c1591237092dc0bc24ad65032e99c27c1084c102246e04d349a6a4fa662f0499bd425a71a11834d1a5ef9755489d031c3e0a2e78da58f303899afe26ae7dc984b4a303825c36af34d25b53c01063fde9b5f84101ec282bf605df332b66867c317ec79f2161f9379b554367ac1a6d412f465ae091da90d5e70a56aeae42dc9df0f9028a89432255259200e88511c46510cc0e2ee1100f3120000181420948642e1703ca0e992f91480034c2624563c2a2630221c1410c6a1b1381c0c0442c15018180803024114454131120299e900007eb336170d149945f990159794f54ee4580eb34913d103912b2ae2f8fe920ce777b1cea5bc36281654e28f354ef8f420d1eee51bd4b7f49d69d2c830c589743f978a9c19bb356a1a0c3251e83839e5af8353874d0121e7ccdd0e04c223874b5801a7d0a6d92ae5f1acf9ffb49b42339f72cfaf9e34fc416efa0745ae4952fa3b29dbb06bc93b72f605ee33d6f04a1caba9c2c1ef6c4dbdd956f243a7025037a5fb3a07e888b59809030cf4d265f79275ef4601cf9d62d03c1b998f96ccd33d9b0952fb47fab41c5a06eaa9824d9d236e1f613fa5847e6bbb971b5d8b8375f770fef400228669b584b8ac6276c006c24e18901e692bd7490f04b5c5b6b8155ee45f26c6414b7e11aa87dda51bf0f0a67a2b627114ed5e7a40a1d37980bdcbe86cf9ee6d1d2573f17c8e69011ad1dc7dba71a466aa522b1690cba9da57a4edeef30f477bab40d5a3e02fec6b97db20f24ef00f77bce4c755d922da9b21fea468b19214439671dbb5327bf98611127ead48eff502e775b1990eca048ca0bc2048f33d1a887dcac22c9555faf4a9279e6b84af14d2450b22a16c407dcdb1458988f1336b72a232563ca21d9eb5db86c47d92670632201985a783479bdb6a5382c9191e9beb8e834581461af305091e86c9d600ae7f53bad96be784657268ac34ab31618dff15f895287d1c6889ac2fe41b2ec00ab440494ccd854200520e2fd5afc389a33af242b405fea74048ed1e2ec8e7e23dd9da8d1659103730d6d1e0c202b8b024714347ba21a2d77b406b71b3e0e0b44986b598ff638521e3a55780b708eab9b017de326b58d01393058951512b58b7551e21368a8b7db350588d1414689d473ac5475b7295ec475f62eda052192bd87f5fe4e44d05cc1671e75e5ff6db9bfdf268396da4d9897051b1d8289447b2e3337089b5d5240c7de21e743d76fb53e70e04996296205cc2de1b53ce8e500c2e8bcbbb418814b9948cad0adf89c5d50b029648286bf51f7574e630cd666c6128e5405c8ad930b7f81cbb7f8927be5f57e4b81b9ee9c3e8cd0bbbbf0a095fdcc63a30c7baa5bcaf1d559a99d7a5f184548cfbd2a7f12c33b3892dcb2f2a695d976f17259696fc52ad54acf92e7e362220ce6e6a410517f67c1d729d91bacde03ced9f8133007e9a6c55fd0fc9a04d377aecc19e72e3d6c1ee51cfe1ae3d3121d77be61214cec4098c5ab9ecf0362d2747dc402521a599b2244b4248302151116621e81a5a45e77c4a30754c4eb3cbe1e1561e40803035846ef2782826057c323eb2c0f2a7ee4b79662b584b3069d0728b1dd61a754a8591b1c2ee9a1840460f74fa6802ec75e11f05d6efba1124aaceff7f37892602425229da3df4a84b83782e2073729ed654e5f52924cbe71ebd1421c05b6b2eb6af7b915dd1d6e52e8e090b5de0e5a5d623a64df162cb4aea6389e101296250585e480f8ed72dc78b0ab80fabb0a685846589c7846b5736cf83274c626efb06b11d1d58e61108f8e3209c2b4f30b07aa64445dbb56a125441632d0b65d92250c3587173d60a3d75d6bc517003bfeecbf1abb37255a5b1e78856dfdbd33004f7ff4a5851ff0183f90b8cccc639993b2a739788a830ec9bb2a3898a628fc088507521aa3e2bc1e4bd88133f6f581496e6417adec6673d48abc0f93586b151957a8f3852c4e6b725469dc197342e26123999b96d807ee7df611d7b0f884edfd71c6262915c5ac0d26167591f0d0aa898e9ff9dcddce3b0af6f1068871f97f0bcd314514a01b984faf03c1895cc886a2a2d9fa27bd37ea1b70ee44770b969ea511de32c6c083d35ce48ba19df07500b2d461848f71a406106cade50aea57b036164cba3b2f2921b33d0f38fdae15715da2a4fc8928da0797e6c28f16b8c2c64e08994081959c8beb3bc089cc2ea94e98259d03e18984c592f19bc80634b19eb8d43860ff6a96f46ba03911fc2782d9e121f84504e5283a3b98f0fc95c52a2c4b4428e94962254568eae7603847f66d617537bad6539c45f3cc996d0ac886a732a3827621efd5a8ef52f607f3d87074ea3aec0a13484ca486e8cc6d01728307140d9da95036101eb094d89f33f203d2aa5d28f70d3a100915eda00627b8cfcc2e10eea5b1d81b99cca229630706c8a60b9014c5b01d6ca7ade388a3af974ed98817ef55439e20163aec1f9bc5106871339dc3a09b3634074841fff1299687d0a8280e576dd88b30ec75b23c199f225ba927976eef814817d1a77732bd1c3d29e1ce641f3279f822e0dc12395cec6b4e6583b884570ab7e17ba413312e0502c8957dc545a6affb04a3704b6478070c9687cdec8bebeccf840d60400b831e96e24127656a04c7ab6845ee4d4bc0393040fdb842c9796b5be6842d89d664bc79b51edd2d606935e37e3e32162a8af0c14cd3e0805c6085350d0016166f900a5706068224979f0ad08cc1930590b2c78c240d1e0cc4b4717be683139ced82f8600c0ddb4fecf8e212219a906a7311d2619ac0653396e7555a7dec0dee37c19dad429c67a1e77850bc3e06c3ace99058eb98a42c8847f468aa80425fa6b2388e4ce79d6177cc0f775a1e06b3f9d8a996964b8360f961aba4b4fc6ba66ecd814542171ded44457a478cda94086938b882fc89f4136085607d08598ef8e14641aa42d7eea11fc12c24247238d60ad1221a64bc071e7cbd659f04bb1572e5533bff311677a48465c1098748292aac736ec9789a84243663763dffa68f8005c4e93a24168a7a3cae82fbb9938a5047d95c0d49febc7637ceb46a80f860945ef7e6cf32f879b27d125ab8754816470eec000f997b159e5aedd5144e59179f62844188303021829512c0318ba469f35209f64e8456242759d9321f2e68e3d0636ee11f489d2f26e1f5e52946771ece4d80a18045549412eb96d4651dc2b731f53bf6869e2e4d12832249f39fbde2d67fafb6b46e9ff44b122631c60b52e99fe7474884166188c8eb047206cd2ed2ecce4441015f541b95b272c5094e59af521519e2feb77428c5cb92b68caa2714a5cef2a77fbfa00719a3771f3267a409d2e4f8016c968423213ba85be3e13b20d448a336c61228c883f544643464f4c037c238320dc75433b8a85aab4fa71140950dca438f2498700d63af524d0d4c361f23c0ead755814879f4f4c3b74d33534e12abc1080ce9191f8f14966906ebf50d22ca9e010d01018ca4d103d5a2c9724a09595d609b803ffefa2d126f4df24423dfc7357ca792c1f5d9ba19a16f98696d10e8de76ba9b2ebe1435e9d956003a4502c661ee02397090bea8a62dec2d6229064e18ed45391949087677c7182e1d2887f8b7a03fa2b63085fc9c0ac62d9e7d7dcee51ea261c6e5490333d003062ca049046b3bbd3ba997aa03ba5d2d9fd4f4b2eb680c44d00124656af6ec15c8850df8da019cb6e50ba735af0a0f719733e4c6cffa7c5ac8f99bae7d8fe6f86bd18f38638f4c8a6e4bc60aae249c03940389d42c2a2f11abae35e9080232385a067980c33dcc3e3bad7cfe9176b8284d34078aeffcf3fad53081cbf6065e0937af7faa46b13ea64f1a25b39e342fdcfaf895b6301518219e3a86b6549a9b93c97c2ad878e217c50c050dca1a26bc04ca129dd65a55eee1651875a7524111096221842e862fc1b86e807723bd781103c8d9be08a67b688cada4ebdabeeabc2649bc60a359da6a02a256a1d3c178071f040e11d18cd49a934d2062ef9a9e38faf5ca7ec9001eafe9875e7bdc6610045799c34cc040b0b792e2e1d2170048284f09949999181bfa1dd67dcf20818d08c4818b2c53d03e1beb641c9637cccac034f0aa9326e8a87e5a5a926bbadb3ffc6690b7b6bad96c2cdc4c60a7def76628634eed948c86b7ccbc82dd8a67fd0474ac4673942872bff2e7e0d0eb51380b0bf0960a103177849c1829eb0bd94afbb3ae9bf551dfbda0f7f2c2c21618004baa88e99dd415237eda48ac6db1a14fec71025bc9702d02170b4076b208d3876da60d4dcb2e7c82e092e61486a1c7be3487163233104f767bd36a1863ba2aac820272fbe1333c478c6f3968dc01dd8aff3c443c1d108435e8dd708f6b097fa7d367e223b506e88bb0a96df47cf0fea8b877527080cc9875a4edaeb61f92b604fb467d0f5221437feb050f902bb6b16cef47f7a2f135ad9fd78af58bd029a739b75ed94fde631610da773c6139893f8c4c6bc8aff0e7803365cebd804e7cff003388dfbf11e54f576b4d48d533fa4551b7e1b4ee06c6b363615a82065b5b152f78b55511bcf1c558e9d5094ffada8f452873cf7db63fbfdb34f126b8ba3e4f5a0a86a858ca4bebac84cc8cd915a3571bb99a632cf20321ec3014e7850ba6f38263b393a6c9f5ef4c04c61d81e0e488c2a42fe63f1f1092254a375ea1d57aed5a39e5fe3f8be8f89b48e5cb5ade3f904176f996b68ea15ecddaff618e95da73d03be830eb1b43dcd97cfd92f9ae73d1f1c085f16a686ce911f9b5ff004a2069ab8a60c34868288132688e7e3429b51ca1f712a1d8265fb5dec55ec1e03340eeb8e7e711a78e804af9db4c3ea7019dc69ead0e854e4a908dafb2b0447f42669718cb5f808db6e2c3e5a8d0255843226f16a28ebfc11e986c9e600e0cd89a833896bbc9e81c6876fa4d53cf981c72a76c272f46f8193f718c609bd03b26ee286cfb6bb90289b4cab1ccab032b27b79ab7aaac56895b42bd1b99c35571e8b8eaa95741bcf9b9da8e9f2c56416078a28b410d5c2c14e91fcb666107a85aecb9bf783521deda01665127a07f8141d189215d6392c28879af244ddad048a2b9a772f08ccbf08de25dfa5a1556661363f1a8bc506ded7db1471730df6fbbcc688c53872d6e4ac2665b4fed2b2ee7564c20e34235cea0f9ecd58ecfed14ea9f4d831014d2c51ead9e272c56240bdba83844cca0cad0c194720cc838568fc8706f20512deb27e24a597c3391fc67f2de64bb059ea8e95a7be45fae143aab617cac8554eda7e3a41209cc47a616b0169ef951a3323962fdfe3be7f8a15e7fa36f538c9413a815794ed0478b234ecdd5eb8969ee97b4af2dcc488b51dd5547a63bd180e1bc735150a594cdcbd53aa2047e2dc7df85652f73c7f3142954c634b7236a0cf8f93f142420a6fa497b4ca4593ada970428417b03d1c2aaf92ef7037076f50d5a5eb538c3c7726eb0df9dab85afc6089520a813b8a1376c47066a74741722d1b46fcc656a10eba03b67e454d57b891621fa62e02f5dec1674e4ff71049962ce7eb8f19f8f9f1d6ec554a2b57b3fafecb428c8dc3aaa685ccc11a15058fee81346aa3f63412ad11bb76142a2261e74a3b0354db7a3614053dbb95bd2444f7049db92cfefa9c57f05149620391520e456126a5c5e4a3dafa16c32c1089ae03b56ab70254e8a8b2c5974a2a91f95e851c32df890c35755c7b27e3de2cab8ab82c57332b16e4932f10d9496f51dd9ee1f1c3c778ceb6e84344b8febd2c10944002ae5cd20b52da35b4d5422b42f4f03e181b93ac85c15a9c33e970f0acaf44a81747a0bc3d84d73a730ed46e095e0887bd7a4708cbada6a44b0b6e2577abec02eda5d8ec9ff0604190957da602ad9669d55438e84c80f245cd828aa3c2356d064c36e1830c825c5b0d204d0cc3c306070fa86b9c5502d57abae62406c2240c182777d3e442d40ab7c5ee717d0d165382e34b74170f9801231b17b18af930c51e12d5df0d3f008dec09ac6447b52a3e4fb371e40f78b4801adb7ba3b4f8875dc4566b94cc4f85ad88ec8c693553a4154a1f0a9108e58920650c1140c9b0d0a01c52bd19191f418a73fd009b5aeb02d3a1f6cb843fcf944848ee0090ca8186967a267af1cd9e406433d9495cc43b7b25b7ce1cb0b6f49fb92687587dad83ee7a4273e830d432042c426550b511e159448ab414832b2cf32eca498b4555adcbab14a0bb8ce252dd440f7d2f1af1bc8d519878a05bece5ea483e80c405d8668b58602a19bc75f91be84988c2a0950ebe2804bedb2e6ec20a08ac1e0df1599c74fb9907a223e420b26bc9c4446323e6ba245688b299b9cc5f723a4337bed4506d0fe1c380e17f6cea780d66aa11c02cece31349199d17e47299b0f82642426a811b49ded538cf1f585a70fbedaa6c1f6caf551a85cb508d4b8fdc22324b35ce80ef3667eb67f016296c3188a2a84f408a4702ceaefe10596fe020cd8a55fbbbbf807910df7cace2f7df62dc66157bd940f1478108882ed0373ed201eda624b66af7d57d1483b42b1d5d1ba9ee0296427a29978dbb27332d01aff24922cb9405409b143bf1d63c0564946523249a628162b97460adbfa26adf4f9101567721c12a0281786983d5ca92127a3222830762cb30eb3190c98a841ac17af8e8df99107143528bf5fe0d89c5c0d6155b95732ff70a1c0cad6f753dfd65fbcf3d752ae07aa5b8a88f437773cc94238d89ab3a569d95dd2238d11d08910c45f01e5e202be46a547cb30a04b80aa68ac740484bd066da777c989879d6ce9367ba9637c187dc188338b502b75c57e4bdac77c6de118af44dec408708b0e8f9db101b9dab7f75d591f0ecb1b0a003ed9c58dacd8a1b2008279d76374299405d00495029ef1809e79fa3b1998b337978f1cfa01499d07f572a4254b74609d8a98f25838aa8a4f8b7bd08d610040883b3e44af9fd881a303918931006c3cd70e979f45550b7fb1ef87fb9e02fafb392fe65f9fcec2c7281a1617aaff6c13fe466a5b6e7eb7e9e518ae04ab1187246ec0be6835bf91ef0e409440d9a865370f4842b5ada5e4054955bc59ab2cc99ea75a302dbfb943956b150f5b6221e60e92fb88266ae598398302483890913c387e90a90dc99bc57fab6bb546449fc50d7f769b994e89f081471000bee90c0b4f5ab5406b33f0a101233e92cb55c944ad19cdc91d251176c557a1063ac0f7de10138f03f55927af3b82d85fc6945f6d424809e0b4bc9d43f19936e9cbcac5c05b999899948e2cb738dc924fc89a34965726ac5721af11f01454be90931c875e409e8b9a654dffa335b2b88913086c5a0dc065a01293c977c8e35b2a556aca450c7af855236a0c2abd19d82a5a0bc40874597134d11c5043478473d8b77835dc4aff64bc515cb50f047df0b63140edd291902b8086a617a45b42a549fef01c6c0934300c04a00a5e97fbdcf26654acda111fd5050e56a805f63b7b33153e0ea8ec2463117bc2246d4210ce140da82168699042a31d0dcd4a15aa272e15c943996b36323b3589c55fea7488e73596812261c9e996e62ea305ca4c6ef78122b0c0300328ebbd89765219a576b689dbac43b9f6b296eb604a82a5780f92b9e51a553b2b7d9984e2043e72d16d94c73109343fc5df5a68cb11533880d8cce60b809f0ef5b3f49616a76eed829091ba1f1aee0728c576174d5003cc8926c55911a143889f8fd0a5c83a6babd9a434f5773aad55b1857bf6a1faa8cee7db5996b167820f63a1760a41e41447db00020e9050c4831b7b112bd5a1a2de85e43a6d15a10194b8dbfec06ccef0a8a012519f2c5a7b162e9bbe508c943cb252d705e036b8f2c7e6830aace1dcf2b18c6bb13a2c207bd0f2580a584f0dedbf265d182689d8b9535752874aeef35f77673418419b264a10b9c3ca41c9f860e7b72eac456fed8fbabc495846ff14708d308cd42d82a7135d60c9a3650924b25b15e471ec06cbbf195f1f654091db3c360af40855896501fa87a78c12555d1dd35e85128ff6280fda6462af891ca27a7d826b7f5e2bbc32744ec8ae6db5abc26c9e466fd9694e2f7e8a9102baf5c42a399c5300c2bd4d2944571fa41f9554ecea38aa3d58284efb326048101c1094be3576274a766f4a323dd2e26b93cf9b58e296b30209a958a5c5e5a1501590d93734090191d9e2c4d09bb5ee7c2a80c83ee01c970380c62834c30a730d917400b84a65c5054bdb1751d5ff2a758690eddb6f06f772700012329ae58a257ff2087e7479e986782bf4e00ad4549fa96d4c54fd75e8206eb3bbf1e4a2b8f686f7929c2e7a4cbc8683f884dbc447be0ae0cbc1821358730830bd94ccbf34988e0c17a0428a11d4b29ce078d33a8d190cec9fee2492e4fbe94f78cf52a9f81cbc6558f5e930984650da3c47d7a2667f752a114367be1a341747e3040841ab31b64fefaac2704ad0e7a6b56038533a0af19506b81bd81944d5638c3443b2283360d85fb40016e979cb446242b694059683a1b052954aaf72b660b0cb93403ad8f036115c6ac6408efd13c9ae1d4147625203dd20697ffa70fd09880cc74d4c4802875402588cbc6f52fa39756246e8adcd6c5138ed1828de022e33ce965182278621c2ee3243a72a1862de32dc07145cc0f8b36b2a819a72108af77fc3f2d84e1a226acb57bd99c1803a8570baf1d7a9e58a7f510f4f8ab9dce125f41084e1de2f1dd034f1961f1b9d1ba0b7fcfa6520c374229f4aedbd5f7708819ee152e1f718356d7814a85b8ed0eb2e7ab7c25f25dbf0d8c3949e51db4c8d7365758d75e79330f3896b889019a400f42bb339905799dcf9c1b836b5fd2cb49521713f766a4768a544b849caf7d8db9c5f2c96c717ae12641c72471e088f031cf43c93dc05b8080a2e87146de6271fd271f877f1231f5a2737d816d8005e630bbb4590343305843d64f6ac34f67fc2a49f8351df668f33c9b5820a85ee86d45f328d189e98649c81e6b15980c5e692ecb5a574557b5d17bb595035b6d8c64f1f425f31b431f2a722abb594eeb4b5b13dde591c4148d79504bd0e8f94f7d2f0b57a0dce88a84d7f911ee5e68928603869208885ac9585cf4595ad45cc33aa6af0191b7c6d9dfb7c034070ac9446b83c7c3a4092242f04bd9752960fcd094d6367d2e6acb9c6220f72193f4b698c512ebfce0a3ea285d825bd91886b4c316120bf7b048ade62f4aeda5c19e897768d5673bd6c4e23c00b608f8797ecfe1d107f30bfcc4899f781e9569c4f12c3614435267312208d18cc1ea19a88d6c6a1381b3c9655e11a93498f5bd6ac0ef7678011c704c8c2013f89cb9a5b2ed91d6a9a04906449c0574d0f943306d9184b0bc68f6c09736e57f7004a8c85b517e5eec449639b82cfd2cf511c05a6334154025925684dc01b0ae175c617feef70223aa82072432aa49464730977af7b709bb89bbd0d3883c1652c42f31414a129233f5c78f716b0eb55eb4d757a6150cfc55edbb57d6b9f85a669e3d607161fd416458fa8280a3a0bd487755d4071348f7c91a481d723ea578633cdb52f891d7f9798b1d3278c0e18c31c1281350c94957f5ed1d925a80517e4fbf84d24def96c4c1b82c032e8ffb6aeec08a50bebe9a2a2dc61967421ba9d257101c3a4791362725407ca4f6e7baf873ef9550d7f631f17ac940f76cc681dfa70479c385bb667c8c3a02bc1d7e738156c70aa4a36889bcf9eb04255696380c0a77b8236caa3f6e5f7ada48bea7f841e8fae217b33a2cc78233888fde59217a97f3ee9394fb09d91a67d026dffc7cbb3fd81718e4b326f8a44b860d1ff01fea4789a32328f93cbae82f8309f186c5dddf5affcd9aa8bba90726c8f0b3e4e3e3596caa3a41fc14a9fc2de903e4057bb05ea0588e4921241808fdd35ad939846d50c86d6e131eec794de1a3ef0cd72228c06dcb8416c9e450c623945020bba690c003b217d27c51bbeeebff1f7d3d3f66e4e4a31946de6606542d68dd648d2cc984c8084724968581e50fb530b39df89a172ca1b29855f8c24ce8e0b1de0f2b884aed1dbd41df6b50f7db53529cc257930d8156a1cd9ca001f75a40ef9d498f4d39e4c3207610b3de0cb29d4bd7084f4437f4b7549b8df057422a0f5335b13eef28efd910acc2aada298abed71906e4ef8df80aa9e6658819bcd683dc9858bec8d9692f9cae4a297e2419d20684ccc7bffe4d9253a24625849572e1c574810a4638b782876d7032e4f55045ef9061d1d89347e7a31bb90668ee8d313970d6dfde6654e4ebc40b591c1fc18db80ca4516c54bc1a6fa60134eaad2cad10878fd99342972a1654c243729b78469e77a06dd32b353461bb5366d3c6a79385f95c7f9c94535da0a05e96095fa3e762ea37ce7352fbe5b751dad2c38ca6c690a29b260f42ed9bbacc806087e69093ff626a4f53319f7b914665a15fa81e88766d5fb94bf5d3a0ff21d05166a0a5cc622ba298a4723b8497f3ed1bc9cf0b646ac1a2c0a98847e157e44d62a6523967d26393f25c9f9f53a8589c0f3bc240ab43e28ce1e420c3266d0d4553cc9b7f40b72cd9d844042773baccaa1405ec06356ecffd5017e6e94ac4ec4b4114246d8317990d687ae452fdf9d3c3427c650af27b79f0e182e3d469f77fa2acc2955124e5e85914490698c6cf679d9bc3c477073108036ca11c150e28c3ae756b4878874f4b01e0a0f2796fa61ba3e9cb2fd88718715ae0eefd0a881e015667b3075032a244061f0f161afb71535b34d96322a8e09c47903013c6a67393c8cf6f79130cb1678b42c8c49acdf8806e5e0e20de2cd0d5ee958fad4875220b1e5551612e174694ad29d1c3eecc045d1d01a29566338ce6c6ed485aa8bf9ad2686bc30633279ef50aaa3e6236fce18057d09a04223ee7ccc1ddb107b98f001a494b85ac14eadc6529b8fc8821043f43b69fb68781a3ca31311f9a296008e51b4feb7cbe30f801020bf923ce7d45e2e9ec32d7133b3b23faa5246e2886814cd7c206bd7150fce6dd6bcf93bc97f7303653655a1eb02794885c29140c20cbf5867e636270e27d1e2f1f35c7647cf26d0a09a160eea0100d1390d46ca170f459580f868e42ada08cde748d4fa17f07555d39613d1daebdc234ff48797684642c241629a441f7a03745133d01b861c020fb601d1d74186430928e93ecd6dc530657c14dbf29a1d0d514518e8001fb0fba48901381df436114162a8337781c59fb7509517a22b43966d5449a2bbda6465585a20ec63e7d384a5ec592b8c7143cde873866c1a5f40760fdd6030e08076e1bb313f08555e137b1a73cdc2aa4d0362388fc99a3ce1c3de8cdf75a60b86e992caaca7af629fcf08605a0b232d893b1ee5d2df3e4741273f3af4715b53e47cb6457cef315414e3ce15d5f1074623d0003b6c34ce4d1d20adf0cd8c8e053f2c8a83f932d936b0ae54c70b8133dd3a4f705527eed393c47da9c9ce2e015eb4bc7625cef99f5650458d11d96abbab9857a610d9b97596cee7bbc131292c9d72dbe87445de4399d4485797128cd97d93740545e81a56505ea7b288144d4e534919298b22159333ec9e2e318d2e194d35631e18cd9c2e3555da6f1bda4e29c93928e857f58893f915d71d2a3c7f1c7481b89120780bdac40f06fb857edb16f54449d157ae004af241540972a9e70f23b888a8583196975b41f7018d7102e377953a504d15ec2a23d42c579f76a13b1f9dd7d41b0cfa3b8e5e17f44418fb26c7a1b8133b945c5dbb769e440f2b643ceaa7d08b906e1602221f2cd37bb94ddf3914e15e032663dc287338f40ca455baed1e3308ad3481c83577a625480ebab5c91522330fa3626443d1b034ace7306cbc320c678d1647e564659061c0f50461dddf4792261c20d94019bd319d600062b015047852aba371541d8677687cf901d38c269e044dc4ec41e733ce2a973574a12725464316bb87d45f525e09d1ab16f41cc13a7ad344f88dbb97e139eeceb555d15c7d66242a2ad6962a701dc0eeb9862b03307066a0c0a9388c017d91203083d28a7987dcd6e7c3d1ef2530399956b4935842e74bcac4518fe978cf6044c0005ce95b36771050f3a12f726d10370a57ae7f9d158a31d2705a4f59d746f9713d9f5063fd8ad3840b6da1b15c9197ede292ebead472342a292f409c319c30a4ec21662681f7b56241c8a717383e6b936f3c002600682eaf55ee16a13cbc22e450d093c78391a7477f28c9d77b0c63bb281d2cf421777e9f443c9aa38604204ed03d9f1aab211cb9d7635af60c7484511fd83cbaa39d1f19d59e12f646ffb1a2b7c4e05f6b14b59e45a505cc5b6ad63226b76cd26fd8d14fa89c80d7b2b97ff22b144071d95d975b8ae423604d282de0f161c89f7d3f50fa3949b85c1be8cf1a6b3710f035693e4841ae73b01266eeba44020ff0aab15dbc08162f41a1735d7ac16d1b33a0898bf190cbe3fbb1b74811550c95202b78ad6e2371adfab6e305f3d273468025f1266582a003f6381ba63688e13eda0eadf48657876a8ad4ea6b4a59992bd97d7bde0b4afc593f541eb52411db8064bd1f05a2f24bd38cd820c5842244faaef407026c010ac00e0308deaa871ab1f6eb40669b26bbe83ab9144e6132a2bc01a30906ad2f1ca62ab134597e0ba0595fcce14b214d61e1600c9e65dd685a1bea78ec54105552ae452d175c5e17bbe39efaea5430b9ebafaf9036a03dc17ec2528d020cef1ae40563fbb37663994742427804682a809863d17464d8780bc82438e1740c58844846f9c0f32839fadcc938bf85675fcc56ae0f5902a3bad34f581312a35d8e30983227f35e8f4d0546ef3fd57805a478940162b428cb04d21565ac780d7aa1fb7f5194120dc5fd9c3788541fa2211580920d9304405a53ecf05fbe701121d1a40041ba39f9528255b8274ffd68e40a9277e779486021aba01e2acd3b4c6ece4bd2428d4135150f57bad5f89e4aa27377b9d3df0cff7afdfd943f522a85cb61eab2dc3a5d908b673e3c210beb106f69f91bc92f6f4b899d5e37e19f375affc0be031c5cfdf1b1aa4f127290fc9d3116a3a1134f9a045b688dcb631b5e1bca0040a739b197f297e621ca0169b0a58cc382fa91b27729daafbf07f2b86fdcb01303cc45cae797748aa216aa3a3a2a1a2bc3671b45bd0759243dedb328f74f5156e6e7382533d05551419151111e50a512d454c641831045723ce0e6c790803df5bdb39e224c370268affc4894ef3de27ec4db2119e6542726721f59b2279f36645a2591c5902a32718634eb7411685ac4563540c99f03c37ec4622a0dea3b0319d2921db48ed64d8df45f745b6814bb942b14563b137c79a0870a58385b2c80cc4f33e5f1fe89bd862299e0a730a3852c930f29e9dde1f7b1cc881e80117de32bfa2c3fb644fa1bcdcae67b847763d0af1b6b6fd6a1d4a42a55f6350a0d2165fc46e52b6908205c71d6a2cea3ef4c877b087ddb4d0a83a2ba9aeb859d3cea7783008542eed7b1c9784b77139488a6976f7c208d2c417d07d8f3680e6c0f7910d5f4109f160e823cd2a0df55fa82b04f7423f98fa5c46702f6b03582a2a884643fd06c3fd075c81707346764aed28bac260289bb2ce8bf44f44bfa8fa8cace3f07edf9301262d3fa66b5e82f90f7bba8bd55fc2bacbe4cf9399138e5003148b212d988db820bbe4cc6f74570643ec4272aba88ae6957b8af36d4f29f1819fc967e43e219ab312cf4bb0c075f79b80a69509c5c2146401c854f04a99f2a87099c8c3f91880d1e31937d4ab5329c7e4791c6a1f5f0f7deeb2dde31aef2c4362c56a56c64f136077098f722dae5155f471ada2e311c6d58dca8bd63109a9f8492f43a48e39693dd58c7eddb6c231e520718ce125e23a1e020a60999a4e749ce010d9f7e5e384bafa9c6ab37f9820fd1ccaab82ced8ccadc3c4bfff3e6f5d3492958d610203367c6bbecbcb430dbaf53a443911576828966b91851a796ce2980f2bd0b804a539cea9559944e1949a6a19a6d87d00a92cda2385ab0b84f1a9c40c7cd6ba0533d4546d05dd85f87bfe24f6be4a6babc96e0a063b5f2fb36cf08f78f9aa44d507270a09ddbce9a1e04783c0d945c86de6aa2201a8deecc03d3052abbac2cef938a8c7dd7d41b08891f3ef5c251b052e36366d5e43833c18698ecfd95d63e330d2a78a6269f719d985d1cd001b8781a25f0ad7ce128c3f421bf21caa20c36acf651c7d891c3f3afc7911e06576f03b938761f575d81d048c9be96fc8ddad0c895d10912f74663f92af40b8b1a1268f06c300d81392f997057793eeca3f3fa0ca11d9440f1f37cceb31caaac475e356b8b8944319cdb58c0dc3a5c87a0468898ff14eb21318261a47fc2f8ca11efd0ed9f0374b1b0c3de698da93189b61388726321710e844e9c52833430dc7ffe753c6483c668de34a1d7c563a84f06022ad19e03c29dd5f905940c3960ae8b53e187e74dc9d915600966fbbf4598cb80558d1e5ccbf818009620099d926282280252323801a39c3610d61e670351fddab42613c12df1ce2272b277966f0266708d6c1ce16aeed939b5450384c618fc36f8618abdacac27cbb25982d29de62614172baff0332d11b06d7904e701b336f7ffc9c90aa5d58d04386abaa83fe2f34e3d235d8d6bc5f623afc4b7c71400d4bb3225b334c2fce9229935c9a6814f156b4db3c339c09ecb7435d8a31cf8de15db4362ec171b304d63f554a80637921e640a0cfe925a9ea5e64635036cf888f11da2710ee2914c2b09485929db3078f8d5b80a85f9f1d0820c4819092f67cea9cf3e0d9f85d61d926423b2c04b77862979937822fcb59ddd26d32269262871d2b960aac6bed629a0758ca1983c91c66dbbb962dba013e18a4df562cc16750dbfffffc3f5b48ea057ad3c76367d80943857979a6896678d91402a1102e0864ba0de84aeab290b408d87e3616b5ebf4bba731c1a123db8d94c380c31d81fe8dbebe23d80190a5e33199c2c43a030902e0c75c556b155b68490477f6246046e370af0be3772cee36c1883c5f81d40ae1e51819c49311a79f4a9ce7d85e916d117cbdb78e95cbdee8055f6ad3b186b9e1b8ecc927ce32f4a17fb57b828eef26ba1b5545c69df3337c7ba72b9fcfe2fdd3c1f5036a563985becca315ec4e24e5ebbcb9b1d0912b1074bda678617191ab8efe23b40fcaededa87d06be6c6986fd14273fcbcbad6e1eb04b3e77c2271a3f3584fef5eeb7320460a395626b4b88a931704a802dfb988500c8eac9f682b9ac49b225792af56b36bd1ca157984c86dabf13bd609e57c58690f62a3494e7c47e089e2673830874dcfde480affa3491b8d46535aaebc30eb63133ed1490d6e63f32d9e03190c08a79c543a8fd2b454a05661ea577fb1f55df4441bc5e50868dba278168ca05494d64e39dd7d7dbcdb0b88a9e77e2c9c2015fe6d78a9c9053cef1e7aebfc2c2ae0f09cbc6da417d47557b393a6be4a8af8d6013ca46174e11810a2a2fb2a72cac2a64318ce33841116a81008b12e6b40ca5d6577adb748716a2bd526d8207b4bf4620acb71e0b16a9426a8434164ba71bd85dac3ae10bd5412c1e5998b936690f1dd3920c910826311a3b891111bf9acb18bbe51f62820ba85702c6cac4993a35e58e43284b0b29e74bd4b9d04d0b2576fa1b0389d9521b94235c8f0b33be0924f3ad285453af6328c1f98ac641b7f26acd66186f3687afecc61a22e7dfd5e85c3bed9e1156c28836100036abaa9200a262db4eca2e8aac6dc2b82fcd4067668f036db52dbc132ab95e0437e152ebb7613657bab7aba14abe710b329a3d1f90fdd285a125bc40cc2c769ea1395c5a9a6285c368ebf707d9a6828c7e269d133577dccf15e878e0f0aa8a8424d0aa920287edc41a4ad0f8e22201e168655286b6b6d172db642c9a04d3565e2d37c27ac9336d7291feb0b200a5c92c1c9ccc52f248905bf368d394e45110f302aeef45b37c475e63638f262fa9a6fcb8a2fbdc5b9ed82a1a9d230c543864f07f0e8cab3f049a3b86ed2503bd7a63bcc5a6a9d7735f98dc877b3d89994c2aff4b8618d964877c59b4adc45ba6587d5e88531b6176e8807f4f2b0133840f99252ea2e4b18941e3cba4ce759888bb92a457f195394b00c5c0af2716e1b586af4f50c52b1b0dd12501e5d1229201fe44236783f0c9f96fa7f134bd06bd21a2eb75338b92aad4dea4117ec59175051673adf91aa7d0e0dadf2b8704a34465c43c7c083bec18d6bd049b8f379f01afccfee98da089ccaa7b3281fce921daa49b425babbd27c22b9b7355bda0179ce9865cecbdf4867cc3b1fa1597c303f123e9440f54cc62e965e8f394e7a9e625d8d9cd1ba8b1549662a423f4aa06836855685d7a56e4b255653879ee94b9aea52906bca04bb0520a3a4cec5b429e643614c4e1cdfab25857dc6366b18d592b055bd81664627dcff02fd6a0ce0d79f4d1bc6a9e9e4c778949122a2d6396bc62676887a01bf8bcfe1d504fde91a543e8d8ca9e11c31fd76975fcdea47589e1a71bcdaf4153b7bfb9f82beaa8c3bd97c5d2b06b3420920c870a783a6fbc16cc7d3c20f03e41d711789f80eb08729f4093eba621745b0076cd559e8582a681fbfe88ec4e55d919e75591083904fb8ced22e041649dc48f6a49267d4a7833ad657093889996445ef225cc8c67dc91d8da608771c563e3f0113ab0032b75c9704f618ea4c314099015018c9b61836bf3327e0171a62065f424d49db0e8aea9610e458a1f6090fcc18d3ac9fbbb4dc28a66692b5c530cd01395d4fe59f3df15ef406b428f0026065b5477012775abafbffe699ca94056f3a6d04e19385937766229c21b09a8e105d8281da12d376f70e3c84d0ac7a0288da375a3649f5096f0b324ae6cb8c7e02f19a813e57b5fac8cd5957f1e02bf9aa48770ba01056100ba8a641b3b40f024073c0c3c0c3c0c3c0c6c8ceeb4d6cd927d2bb2f7fe6a37656626075d3c169faef7779e88888888c8bef86461edee33f6ff7f377bcd80df0686018b01d001b67a2f5a056bcfb9d45df34bfdaed5c90c44f80002106c6c34200182c7fd984bb10012a9825df7d6f10f5d9c959e44f0ddaa648c52b92d44a844a76c0d239ddcdf5e6f87558cf6275453b0e37d6fbb25edd5eaee2f884af99cd2e95f84dccafeabeffafa543896988814fc23f775c74ead769d433fa3512ea49debef60bc7eba4894ef5eadb0c30de9ad320a05575db993cffaf7e9d3df46a0bc09a3bb8f56492b7dddbfcba98f2ffa04ffcfa575f0fbfaf986ce469e60299ddcdedfcd35ecf4c14ef0aff73aab37b4fb3ad9637541449c605ee19b5373eb34f7ee521ea24d709ff6451d2df7bdda4ae14d7d37d2043bddb9e45d6f5d77a24cb094f7416e77e5f7baae3f26d8d5fee8a7bd6fd7fbf51227ba24b224aae4d93c1b51f26ca2496224099ecfefae1fe557bace6907512458ea187f7d7f7acb63af89449060377dffdb72e75ce51cfe5848f4089eb07a49bf9e9aba3d7577043bffa296d0efdb0886efcd7723d4547e173565043fe93797d15b0abd9ed6458b3c19298235d4d379f829ec5cbfeb03aefa6035ad0969234d6362aa694bf4aeb53425c0b4247c25fdafb395796948807e9e34b72e90c4fd45d38ea8b4b42dae3dc80f57560920741082080934233049a615216dccdda2f2c7577c4b23e2e32b9e1f2867d8b4b7b421a610554013a2ca59655199777f696941607eef8d525f7a3d849e529fe960303520f0e690d25ea9a57d3b59dfc5405676affd80e985da5617b7a770535e499bb2f8a3cd87d683b510ce392b7576564ae7bbf5351e7094b44f1d9d94fe6a39ff4d7db4ed006da00a4d07ec7af7bf7649ade71776283b6839e0bbade7d2525f7bb48e5b1cf08571d36ffbdeafdd8067afb3f6ca6bad56341b30fcb147d8bdf633d69a7ba5270da30bad06ccabdcd7ee7af7fef2df7f539f7c55a30177bf21df9b524adfd35cb719f0eff0ddf760c7324c4f72852603a676fe6d25bfbad3e71d8458b418f0a5af4a07ed87be77cfb10603f6b43b6f2fa7effb49deb41730d73c4269ad93f049bae3e5ace602be6fda5dadbe55723b9dac2c8ab278bca256707c0eca399f977d6e9845ac6038dd97f2d3089faf0199be38962fffa93c0824815a2305cba43d8a2838d6e5400b05cba48d35d040799f4c92ce3cd119eb64e2219fafcfc9f5b9b44daadc2d2a67bc4bd304827eae3ed2a46b5a269854b9ca5388c26ada2595a6a49cadbf344b64b7a89833985609a60d6894f84c7ffcf5f9e88ca32f06da24995449927c2b12b893ad2c7b4cd2179806c94c7b0494e3f3a42ba9a639d2bb6e64da3dfb4a9ab23446aa45aa3ced9eb53445aa0cb2ac295f7e9a248aa625e22b2b6352860ff411a1202c24557e5bd7f7d20ea18678ecf2632a694b2b84827e763a3984b81de77472beb441e0cbd20491a09f03c95ca2accc9ab80e07d300a1a09fa71025d3fe800ff4b31fb30f090305d0f8d8234bd343e2e49bccb276befc4da63f0bb43c241ef08e6c0a517660d327c33a201d700e28078c03666970c037a01b395f5a1b900db8468eb491a6a9016b5a1a100d78c6db2057129766c6fbe44aa26965ec642c544954c63c2565644c1c7f81c6d8996962d00973a769614c30248e97f6453685282f72367d2fad8b31d327675388e262d25fda165d9a16fd809685010d8b2a669d9da71055d3aee85df79a6645effa8056c50e615a1a15bd6b9a3605e8e7ec6201936952a0904d40a0455185be3428bab427bc34272a9d0c9403d8a4b7357d28f05c26c082f92b9469ff73e63f97ceb83c70a5da389bf908f8547ae26170fcb53d65715023c10ba32fa4f6dafd23084381b3b9d5e6453cc342d70000e86c0aac0bb4050b3693022681f4162c875cb912a6b2b8cc2b18b66d04004067badb0c804567ba5b978dcc95001298b140590cd7199633972b58bec8641e5b02f3b9eb9fdbfb3bbbe45adfd4a704ee6e53f8ec93ae7ecaef18a98764564916789298f12031e33902eb2addac3cde38b9ab208a1b81bdee8e4e5adfb55811984a387b9f5fdbe9699df7a6be4a3d44e02dab746f7fd7bff3dfcb9bfa28e5a9e919024b2f3f74176eef749cddde540b5f083eca5ffdbe113c42e88082c8e201024471ca5304787ef0632c8af2948cc7071c697dd36dbe63b653888a15787a8852d62d8a07acabdb74df07f9aef0c179dd60d30e38ca276dac5552095f8c5236dd603ae73bb34a8a58256517787488523646eaa19c673c39c02c1e1c6e9034aba4900d95967ae5a74c590a786a30c043c3f56700e391e162018b610a5130ec10f642ef5a8bc7850acab456aadcfd55599597c60a9d70153aa12a74c2541268a8ecece8e4bc53322f8687767ea6f849ca32f64ab9e10181d4a8512572cac888888888c4297481844421a710536484a6cc0e126030719227598a296388318810c204222212c88804515098261db50c0675550bc952431592d569c823f55c62526355e62c49a99b916c0566a6400ab2a5ff55f8e38cfc4b39c67f04f20ce6eca810a533188c067883026fa43571cd825290ec9b0cc1e8eafdd0e7c8e497aaffd7d33c8922cbbb15dae3882e432ae6056489851b63841ef48a5f93f8dc2155fa54d934d198d9141ae49022f24f9022c45282d153a81c48061ebac539f2cbcaf092a1165c03133b11fc09775b45c1805214ccace74ba09a899d3181be18608132c3308c090ef58dee037b407692651b74d48697cd0c6c60f6cd1cb5d22976473944cac8e1d49c0590d39fb413928b7fb6988b93d70024726c39243d44893490b13bc7910bc435c520c630ea424ea46bea3988b8d3a738d1eddc25517ecaf7dc5ae16bd152410cde5eb531654c231fceddfe1ff04f5efe44c729c1d23e1e242b785d44669a0e173f456fef58c1b9fb1db94e0a83c7e91dfc073606c094bc34657228e9a998346c59a7e6681aed6a760ded278c5c29166bbba56e9eb49d8c7cba69237cd7df994c9937871a81c037f0840b58814304346884e4988e15a3b82c4289ae203228433ebff4e1e6b4ab348648ea38fc44e658d2f246d429eed47355b303c92114bea25ad068ece22fbc39d956dc7e7e8434f9e11a05cbf177cf8e0fda4ea18345b871e0f2707ff2cb4a96bf665e21fe2ee3086598d2e85fb13a45591ccac672f6ef606b01a926c235e641ae157c11d08f3833f1b597038586bec28d26d5e687bad2e68410c9530b39bf2a713c0d8af54ca3b8929515abbf4f1314180a910b93b035fc8a28b963f575191e4e9b59d1bc43734c6e86b1233f8a0031ae721282a3b86d202b1acfcd0e01f7f8b8b6202b04205513f4e38c161ff580506441b2949a51aa947099d2368bda7b6c323715aa28d80c3bbfcec604808184fd6f6d501b36f71520fbaf257cc01c2efec76e1803c05eaa8492c13ed453977195bc0eef67e115d1847c29487db7d60567d25fc32634caa8792ee613b34bcce831d91047310d8b06c1486b710d8b36ece7c02ed7d0ba6e7c0f3db15260d47c38bf5d9389fa1da655cf2486c279130a930d2a81583ba5c333c72e8b718001a7ec1aae1bc12ad46171b9bbaf718ed4c7f672a2757027659656d7c34d173edd6b78e1d97ca033ca4e9db42d2fde6ffc59fe7512c881e8ffaec8ec26fd100d66c325fdd74937a022203fa90c8a873403ee74dc21c9a7aff54be2861942509b604b9b2af131cc2d096d174075d580e1c24211fde4002a1a1a4e864f43422da381230b298093c633288ec3e513e51aa990f2603193fd82b41acd70e332a32eafcb6f8217e2eb2188bd0a04a624bb8ff9f190097920770cd6830f34eef58cfa445470c490901210a0906bcf532bb6307ca878c69759d50ea8e8b68a0d4054269628e434435fe5db25103f04d802f0280f3643d9991c20aad53929e840c7b9aa35b91e858f85680a4054911762e5488f08ff15528207d9bab5ad8c4d10bf905e38ddda038eca97ec0bd673390620ac83501b365b6477e4a71627b6c756dfed991fd171c6c307d2bc1594a429ed4fd63344da717d29b0d18e09a2edd6417ec79d440bb0401612eace082809bf8ea4f475d8ae1e1aed55236c01f1221e433c1148930ecbc43ee78b34879529943ef84706412b04915182adc167c73e9c36ad8818c12aca8e5b98ee13da73be936901276d9fed72666dea9d57e8051fc33fc78a4f440534de4e99c52b827a061f1021ddd13874a51f03703d160396f6d2d554a50658171d6d0ada545b1cadc2f0f882f1f9573500be1e6a62d63e7872fe41c34e292d8b0b", + "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x1c207375627370616365", + "0x3a636f6465": "0x52bc537646db8e0528b52ffd0058e40a065e55c83c1a5210706535e98046e37c1a4da3713e8e377d86082013c93faf1a710a05c5b22b3802a0d57e50edebe4abd953689af2e1fe49d309ededc6f8bc2ca54207f1b0fe9b41426df2f57e6d641b21441a2184ec2db70ca71cf7172b195d05e2b1f2dbb9912ddf6c449ea42560b902916745542ccfecfc67badd5f572079c5d27f74fc38bcc133dbf5f2d8be1c6f0f9e312b90bc62a73c3dcf9c231daf0c6db015b63f47b65f0f9e71a595a1c37a4a4c8267b065179f0162108d1e9cc3bf9cc3cf3171f8976796ff75fd99eff3b41cefbc7c123c83d63bcfb3ae6cf4e7fbb3feccf3ccf26758045b61e739a4316b129cc39f527c9f3b4e98eec413f23f5f67ee38c1dd89976fe7cb983b4ef49d8879e97cd6dc7162de8927e453e7f3dc7122a6c2583e5577a2e6dff9dddc7142c70998c79c9f9a3b4ebc54d8cb4da6c79c6e1aff72d84b859d6e1e73d8cbc19beec4acb0aebb5861e2b979d8acb0ae3e210feb4ef3d3c3f3c5b9e3845761debbffc554583d6773186fee3187f5632a4cd32e569877f1b0987f77825e556128d4592a6c9e5461a48fdf61e3bf0a9bf3b0efabb788e2c10ad3b47b15362b6ce6dec579f130f06285692d8769c7f98bc3c4bfa83014ea2e15e6728e3b4d85a168eec2b9fcc561dc5f54180d69d21c46baa94fb05a2aace52e2e5fb5b8b8d4db78de69663ceff348a34bcccb698a5c93bc97d97d2e9a69d4c0ee624ea6ee464e9ca2c7b97c1af812f3d28da693e69148f31339971328be90c09813d75d7ba65173999a4bccec60ec207e6d1abff3707ae1c180d112f34d120ece617d1c1cd2cb4b3d4becce0277d8e130ef3bec30729ce9f538a0771c8dc53a6c3c0b06ab33b988afdf21e6f41dcec3612fe70107e7b0ef382f70cec361240d068c6f7c3d4b7339ab61c080b1c361dc77a83018304ef33cbc78317318f819d2eb71683e63f3c2c3710e8b390e8ba5c35f5418eb362f8e7398779bc3c47af396968e793d8c9999dbd0d07cf5199bcf1c76fa4c77188f7198e931a48ecc7938cc741ee4cd6d78788cc35e6e7358771c968c4cbd0cce650e1b2f230ffb2ef317abd56d682a6ca6c2666ef315cd5787815fc9c3b4bf38eb30f12ca9038cc3b8c3a8301d60bc56980ea7a139ebb0f97a18e9312a6c871d7e5361ab0a5bbda5e53215a6527d5561326f69f9ea3097af2a4cb5baea30b0f2308efccd79b001593e5361aa0a537de620f87a98f75a612c36af877d3508e3c8b39c87c3bcba04e3c8f350613bd42724cef71715e679475518eadf8b7f8791ea115f8579df652acc3b483a78d8588d601c7999c35cea108c23cfaa30182ed7a1c26a85d5bf187f5361367fad30260391376071c5056b3041916b8c0208a280021cd0c00227a2e072623c4f4cedc60a7bfd4b65c691afa93c71f834333197a9b055eaaa0a231a420fcaf0044a0d6ef08421b862885af0012c94e0085778031418b8620e3bd5544c85a52acb5445c69187a9ddc4e1bf1c366b128c23ff52612ef509e972e274548599de529fd0713931cf5261a7d24d1546440325725042032b5c98210daec959a8d2831994a005568ef0069713f3a6c3c42a8371e44d1556aa32b8aac338f2614d75cdc138f260857df50996cb89ed5e85190008559c41075c4ca10a0e5ca4fac45d4ed458d1061f18010b45e0500697137deeb0aeb218479eabb0adea4c1c3e4cab671c795ac589c3e7c77064ce193e8e21f2e599f4b176029b95b23c2bc2c4a26234ca9d4fb5eedbbf6d049ba5bd1bc5666997dab57756a3d7fed1715ebb4cb77cd0cb6b54fec6cffc1232994c66bb2a21d150527417a9c68e38ee5d5737faddfb5d7d492b2b575735a4a55fd9e898b0f4d252dbd923a09f79b697c85efa799ede46b645c877a55afd39ed86c1c7dd92d2c4b45bdc2db6f4dcadbef6af431af39ffc9a4f0c98cd9ac556d33eff69201d2fb57c6d0c67fd1a9c634f708ef21c36ad5db3260d9e0e8760db442dfb041f0321caf33f2680c861cbc737f7569e76abcfe76ecdf33f2e8028364b1e0c8590b66b963c4f1b40bc28696f67e5533d4a8bea96bc4cb7fab2fb3ccd00eeec7c67675ddda09fa7f5d697b47d9efeb800225bb61c0a4164bbde482ae5153c2b92c48abd435dec0412cb07bb252d3fd52db67cbee1fa73cb364452cea0322f76ebdececf7fee10399aa79f67cd1d224797da795ae751bdd3aef9ae5b3c23b2c4ce83dd9a767e9e764b7e9e6f668f26a258fe6792f3574a5969b37a8edcacaedc2c7919ce51da1ed9cab1c3ee116c963c514b89e463fb75ddbad2d2f39967c85f3a43e4732804addd27417a497fa5a497f43f92e5e73f3ab69dd9a14dda0bd271da308a1d02db5ed0f6bf06e9486d089678469094592020ecd006f28c2059c50eb158f9fe1c83a6bd209571684304bbc5b6cfa10d29b3f23ccdd353b6143eb67df93b4f9bc5ffe6d8358bfbf37c0e8be8ffccda358bcfcde2f3349194437c2c99883c6be289e5191355ec35d93e57c1f2ec0332fb99f8e68ab6cfdde266ddcef66f67f9dc3bdc387dfe27c320a23ccf6445b6ff49b0ebd6e5bebdaf82d10291bbf6bbbdfbb78d5db3fadd489bd53f8028adb4dcd9368736b84a9b35bf9da7b5919b352f43ed9fd446693bd4fe4dc95da2e7699ee6696d049b25cfdddadea7ddeadeefbac5b6cf8d6c3f2e80b8bdfbd78dd2cab0ab2c4f0c98396916dbed2a06cca2700edbafc16d64db8dd27e32dcdee1106cb77723db6f1b5fd26e9721114476bb0c8168d066cddb10ed760e6980cd92e7e9efe350ab97c86aefc6dbd9eedb78b773b3baf3cc6ebcd4def9d7b4dc39a4a19da7bf8f4321b87aa9e54e7a37dedbeedb78efbddbb9593709db9d9b7583d8eedcacbb84edcecdeace33b991ed36b2258d40304bdf8d57c6ce7f12e446b6dbc896c322a8a5e7699ed646a069e939a4412b6d963c4ff3344ff3f41cb959f27cd3f547b46c43d4496a828fe50b449e3111c55ed1f653ddba2cdbefb3e6ce7c5fa677a4ab2f768b67b22b6c1fd5adb6fd8f250c449e31f1c4b2bda2eda7ba7559b6df67cd9df9be4cef48575fec16cf6457d83eaa5b6dfb1c3260d605ce61cbd37324727441db2f72d791b460b7f87dbee9faa363d926268964cb187cac9dc066a59a25af599ec96416d52c798ef93ee6130366b366b1a5cde27348839bc5e76996f9b807519ecf241de420a7b00324783abc400712e850a4c3133a844087233a40f162f62db44cb959c30882174d6eaef02205374f7861829b272f4e70d3841b26dc3879c1c40d146edc702384141952594871612c010d196eacb88172c3c59bbc48493d513541e50415165454503141a504d5155aa8d8a8c1a6ca1c814d196c9a6083832a061b18542e7eea1aaa1aea194a544a5c9837a069c38cc16422eae00608364b9a089e0efa0834736827a866aa29b414216506d983f1cacd6c9c328ae1c4059810c860610c030c14a7282e598c524867581d896992da629c6284622c1a4730926034921a4345834482ca8967855fe1506e8553019506141c6c6c5092823ac3677027640824149e13bc25784af092f062841a28ba093456bc2bbc2d68d670f3831b22dcf8e0a608345f40c9613a7182834b1c505da8a8405d81b182a68b52175073b0696273837643ca099a18dcc0e0a6052f452e4cbc48712383d1099105372fa0c9018d110c10686040f3021a17d020a14101cd09663e40a2225385d4941b23bc9861257b19c3b990fa408a891508565456655839b192b202c3ea0bab30acbcb022c36a0ca92ec04c01e303981ec0fc0086072a29aa2f94c0f01ba0d88042834a0b1a2e4e5b4059415541b501a6099511506f5015410302b784d2195ec4d0222585859630b480e1d4821494d4155ea6d431c4e820e62846c94b182a19c427353db8e9412d434c0d2a959839c4f8202565e582182a62761013841821c4f420c606340a340c3153c4d020e6063138885912c32426073170a8f1019582cb075447a060407191f2428a0da92d8c21a89962c544bd42c5425552a5a834a835a85b542da4ce2046e1a54a8a8bd417547248b561ea80bea134869aa21ba3d6c1a5d0d0e0b206131b6c72f002c54b13a62b2e56c07c20c628660630538091024c14bc23981dc0ac000609cc095ec0f04206510a2f7110b97859c3cb1968baf0d2c50b1c5ed0f0f286ce822504a92637499a0b07428ccc650ea7c1ad70e9c2850ba52cb8d0c045062e4c54503422b8cc4023c32c828a832a0b971a7820e82db854815a43290da7295aced0328654185ac8d022861b2a503214132d5d8c2210a7d092861495f148cb95b148aa0c2d555ae69012c30b151a33bc9401f5811637ac60b07ac1f804a7849637b4a0a1c50c27282c20984b6881c34d104e56685983eaca694a0b17a8265aacd078e1b4861635a8e6d02287131b587a80227253c5cd1437436829434b1ce611525128457139fa929318563538b98185c89d7047a7379ccac0393955714a7272c1898ad30b4e31a019c32909a72b4e4818c1e07dc0a6072a24dc063653d85061f3031b1ea886702d88598847e074f02baee4447069e2a6c94d0eae841be142505de135e14b7815cfc17d702647c293a085414b8116c58bf029fe83074143018a0a4d1ac429686ce021c146089ecc0608aa286c63f80e5458784563175c9ea043132930a4b4908a22264144c2a9780f3626a317c422883cf09e20eea0b48593145444f06c3089a8a05032836906304c9846601281c9c86c024c142622a52d5456389980d445694ae90b252fd0a881860d363a18bf307120438552184a5a40a9c166072e329819b8ccfa0b1d4533c2fc800b1c5ce4e0b28254166214dc0c5248d0a8c0c8a1c50929265a11bc28bc88e03818cb50b3441383cb1b545bf0b238135a8cb0394199417c42348256861a15a8b6503d91b142cd139b125ca4502da1822075839e02d3c594bd00c1a60b95145aa24c1ea456f042454b13442288509caec0c84095051510522db089437d02660eaa2a88b3590211059304373a80b9721ea884d0566a90a892e031518ba09d81c548cb131626ea146e62906aa20604372e30a581c2e143a855e81dc0c46016d9cca116552ba4ae10538072c3cdd148c5860ba42b2f418021e26151a34454417bc14549e740c5854a841710b038f1d98f442bba0b2a2bc42b46324c23960fd8f8e0352855a959410a076f42ad625b82ea09364773082a2d94d8701dd8044155454a072916dcb0601cc3c684121a4e564a65d89250a95022c33cc231c18689f6831fa1240655106810a80fbc23783df0a0e009c11b82578517048f0aaa03af08de13ef0a1e148f081e103c26de128f069e12af061e12cfc88b8117857702cf041e09bc127847485b2071415a03490da42a2434782120a581e406d216a42f502b5e11af099215d21c486f20c9c12342d202a90ddc15dc0fb81e703ee0a6e0967036e0947032e08c7021e05cc025e15ac0b1805bc19686adca8686cdcae686ad0d9c0ab828b8147028e04cb075c18d8013c1f6868d0d1c14dc135c110702ae08e70447846b82fb00c70427dbae6c6bd8d4b049d9a6d0a3ad0c9b18b6306c60d86eb0d9605bb229d96ab0d16093629bc16685ed0a1b940d0b1b151b10b61f6c471b16db159b13b6206866d87ab0e560dbc1d664f3c1a6834d081b0fb6237830d8a6d89ab021419b83a686ed039b4cbba2a561636223b235a179415b83566583421bc3566473623a610b81e6445382c6030d0a5a12b425684ed0aad08ea0cdb4216842d082a059a13141eb8146034d0acd4873810603ed059a12ad061e16b427b424da09b425b40a55034503e5023503ed02f502d50265032503e58246a152e813a816740a140b9a85ac823ac103f489f481fcc11254099408b408d408d30c93cacc6226616231a130aba03d983f9062f09830a5a0534c2593065ad14c325b3091cc15784ecc272613a611ed0b53043304130a2e07da141a074f0a93890d077407b3890902ca83a682123d85964247810487fe41cfba088d84f641278136e926cd8366d2475e0eda067d03394582418681e6404e416ad1016944de404a2167000322452047101b9204121af0e1e1800ce8c8d183811d16a8c0048e9040042080a301442ce006025a03f801000208800f39720aee0d9fb42c4d5020cde923a423033d4174f824d1d3f3f5e4f1c3a7a7c7434161211f2574fce859a1acc02f1f219fa0203d2f1f24625055601e3e7a08c980102a14155848c8c7c70c4a8b16d414580aec828a4290124a28b10013eac90b14143400044890113c84e808aa81837a020d2a0b16f2e1f3e3878e2476f4f058a1b06000a09cc01cd0e1c32748075413764031a1a29cb0900f123a38a0c3878f0362504b609f970e1e4184f4bc847af8d880100f2825f808fd001244c827a867092019f8d103062a094b00c9c04b08901ad415dc030a095c5147601e3d7ce810ead1d323885d800dca8a245e48fcf0f13103f2c2411981857cf4d0f1f2e1d1e3e3a30118a82230100dfce8d1c381201f21403d3d82d8d70f1f2538a0c388a388c03e3b7e00f9f1030803ec0caa0a1e4076f8f0a8410d818538e0f3d323d4e3f3d21124c4019f1b3f80f41012f279c088120257541058c8a727488f20d6c7078d209f1d4278000932c245001415acc30700504060203c8408fd807d76fce821d4c3c387878e201e4184f080f201fbecf8a1c3878e0cf4bc7e0801b263878e1e1e3f846800066a0af6f9212428480f90570f123f7af0f8e113a427c8a787878e0cf408f5e801ffec00e243c8e7a5c3070bc503f6f1d1408fcf8b0319b041ed809310d291040caa09123f7afc40a287500f0732d0c3a3478f0e582808c84b47904f10202b540e58067524e4c384837c7a38f00aa2844fcf0f203f70c0af1e4af4f071031f25827a68e007901d3f84f4bc847c78f800120365030ef2c98012427ef0d0e193c412f679e97809f508f510f2f9e183c40c4ac9122f15aa061c44091d2f211f257abc50281ab0cf8e1f3a5e4235282998870b6a06ecc303080d4a06ccc3c747a807891f3d7c684003429210ea11ba41c580857c08d1809090cf8e1d425ea08c5e417af8ecf009aa2818300f9f1f48f410fa21248811f502167afdd0f17201bf84845c1e3a7a78f81002240921162a0973c0e7a767470f1f191012a4e705c4479016300c8a052c14e4c343874f1236a815bc7ef82881848f100d0a09070179edf011f2d9e1d32348cf123a94384a05ecd3811e423d1c0802f212ea91440a95027e09f5f0d1d3430685029f1790a11115c54bc70e20433d8400f9f4bc828004f109d2419d80857c90f8a123688532010b05f9bc7c94d011a42348cf0b48909e1e41ec0354a81230123f7a0409a243891e20af1d3a7a04b142af1d3e370345c0401de10df40862837c7e828048a088114502f679e910e223a4013878f82081840e1c3ca046c0422260a1a38cfce8a181152a04cc011f4182e8e809f2e1e1a38710d7cf0e203e5c3228285848857a8275f4c8a08a58091d2f9f059c5020e8400f1f3a7abc7afce8e1822ac23f3b58504e7010900480d3ca69ba8193d8f1d291819ed56c83cb648338b960996b60243af0d3e3f312124409203b5ea61a388890978f500f0f9f979090a0570f0f1d407cb0cc34f0eb878f124874e0a707c8ab2703407c64e085a58f8f0ce878fd10a2819ed70e9fa01e3c7ef4e8e989e989f101f7f113ac903d61d68565a28f67329995449466e3e0c0c14106911cd550a5524c0c0ba5699ac6d2582c140a8542699a6c553727ed0edc545d4b3a3dd29c926addac4d4ab7aebb799b7336ddbae7a493d26eced9a48e6e736bb037ca31b76d24664a6518924824d24bb74dd339a9dc482466dacd1986330ce76c52d77573524a6747e9ec30409ab4b7a6340c9b449aa193b6c9c43c79dbb6c97c818db9ebee3ade5836dd4a16d836cec424d6a648ea6ead6b0dd5dd1c078029b3c783c964ba697a030093dcb4d9b149068d690a80e6858c9d9b6de7058da9bbb9ad2947698394d4b37beb17ba75530349dbb6913aecdeba023060c080d1cdb2a594fdc3c614a0bd6d5b77bf749f5826d01ded8e3b6ee6d3c6ddf488adb969c7944696560fad430ba552ca3e9d34bab50468d3146de1923c71696cd1ee529768a9d44de94ba9d45d4775a0a696f1148196dd6c49b588e2003a7152aa43a7433707409921d02ce7d4348d599b544a8dce6ed21d76989969ba6d5b27b7a6db0b0d4962535277cfd991ba8ed4cd3969774dea6ddbe4d6b5d82412b869a0dcb46da3dd1d6d26757754ca6dd33a297da0abd56ab5516dd3b6ee9e4d656fdbd6811be3a0cdda4637e639672687749b60f7039a9bb5b971f3c631bc75cb8b035a76bff4c6db99f6f6434bdaacd196529bb49b1b37b3a4db2676cc744e9ea4b96ddb46290d67179266d396dd34dd8bae9b4c99e396ccdd27b909a0012d27234c3c37ee29657793b4dee8066edbd6944422514a999b446adacddfc64c29f3c6dc1bd7cc711c33c71cc7cd5c3373cc9cf2bc0030333737cbe6268945f0c6bc6d0d6ee0c6d273dbb6de5a72d34d9b726b2a9969f7662ab5a42db36d2d7beb4d8669f7d6dbb66d74ce4ddbb4170cd8163037136f3c3bee3965774f3a5b6e3ed08d9b376e663989d86633656e4ab78dca6eee6677377773f3c6a68ecaee9e74764d33fb46dbf4aa67dff47b76c71b336f1df354403765cabcf1e4d9dc746ab4b937de366eee283785e1a6cc24526f72f22627edad542a799d646e3647a274e3baa6dd5bf79413a460d3d9bdc9493be659d2a11ba5245aea2675dc14649eb3ebb6ee666ddb36e6266ddbb635f346b78d763cbb6d6a3769939372cfc9ccd4460f5d379999e9b66d53e38dbbcdd3364dca6ddb3c6ddbb690e5d6947b6a9b26bb8dd4dda6deb68d861dd3ade3ee9867d80d80ee8618c3fe0e5dc73c4921a52053bae1882a51c5a0a835d38d6b66ba49ea481d6976dd4dbbbbdff1dc78dbe8c674a35ad3b9b1649e3ce7a4cccc933966dbe69ccc937677cc3ce9e4d975b4e7d6716f5488de48cc1d4f962c376e8d7976ec6d5b33f3ecee3aec6e92ba9bbb5b867436eda6ddcddcad81b249ddcd3c9999bb69d3debabb27ed96dbd64d29a54d9b6edd4d696f3568ccee6ddbb616e6aeeb3a6ed3344d1337ad0b296d4a99521a4437658c8d32cb6e6e54dbb69c9c70dbb66dd3b61809d0364d54691bdd5c9be5249d73d23927695239e7a4db46e2596ddbd6ad95260502012acdd45b379b394a378db74debdeb87590830e57268a9b03414094f05162d3f1d2c1a347033a7c7cbc7c904040cdcf0e203e32e0b3434710a10c08b13e4804f920f1c34748c8470902fcd09a5902c8065e343f3a76ecf0f9690d20006709800f48fce89184908e24eef90cf9f8e85942871235314800f1d183c48f1e482001c4478c5482867d7c8234d01304e4a56307101f3e7404e97809c188a951713f3b7464c0870f20413b1c40874f900ae6b584cf0f1a981816f641e825d463091f194e09203b583d34e01314a4a68274f8f8d8b1fae11324880e1919a19e257c78fce8f12a43032f213329f661099f247a5e3f7a0405e9d921d44309991307000890a01e1e3e413e3c8280f4b40610809e00f8fce8f091811e9f1e41af1d6076e810faa123e8d5f3eaa144068408e118e0e583840f1d3b80f8e8f9d14347123b34a00120ac000409d97c1c001f21219fa0204a00d9d113e4330464874f508f0e211e3b7c7a7cf8690d20004176f808ede010c087010c20003c7c7a80bc82702068874d90124af428c163899ed70e1d41af02700076f82ce16339e0f3d3e383848e20202f2104f8e0c3878e1d400440c807891e3c867a04f9f0e07179fdf009f249e2478f9e1f3d7428018447cf6b8790a097d00f2045cc58c2e7f503c88e1e1f1f48fce821d4f3a3478fd08e1e423f7a04bd96f0e9f9d9e193c40e06b8bc9240a287cf067a7c7cf0f82124033d3e3b746820c8e7f5a3c70f21413c84e808d2000108f003488f97101f40847a38a0811e413e4330867ef84c1ed8879e1f407a0805f90cf5f0e8e143c7508f8f123d5e3d1a00d2a30120408282f408f5e8111222f4c347e807901d3daf257c0030f4c367e68856682622fa72708ca8b5588c238a1135516ccb11933122aeeb1c31494404239a30224a245b6274c6982846148b11758e988c6d44b198169b5c2c461423d2723011118d4926e5e0588c8bc188ba1c44928b794493e62092b1189146896244445a8e582c464444b41175399828464444a46d3307c7648e988cc91c1c23229a39623216eb1c1c8bc562445a0e224944149b3988644ce6209244b1ce412463b1185113713988648c7330d146a4e560ce4124670e26222222a2399888a873104922998389648e9ecd886466a984900e0e92344ebbf536a5fbfaa322eda685cdb13c4322858d6282dbb65d3c696cfb5170238db459dd8944eedbe775640fdd6334ab3bab59ddbb7facb9f343e374efee0fb663d90e04ac1f9ad5491488daef0f760c1b481aa56d69793b0d839d72962e915dd998d6fbb4de7b5cd96f5cf557e0e50aac4a8a807085e7191230589e219162495ebd314baa3c63ee88ef2ece1de9ea9e9a3ba577bf2c80f7ee9f375eefabef1bc0c26ec009b634aebe4b57bbc471f5d50674e28b4897f84b1769149256c9e9de78379085f52c87348c309da74be7e9d3d884748975e55520d315aba4e80757f8264c73701591aef0443a536d82bbe20a1d50aa4df0152b3257382d871920aac241ac40862311e465b8007101b3d388b4d6a02091d9ba0516b6c6f24c054cac0a92d8d1f22c0570b09f89a9bd61fdf45332d26ad3caf0469f5ea65b77befe6807c523563baa5b928e375cc07cd79f3e3d0d17d0d38add9af5673b5b6d86a404d6a66401daca6b7fdb0ee9c579ed9a7619dae84f69b72a44b42f5116a0adf60e173017a06399736614db096c166ace1de622eaa29f230ed145cf3ce78374ecac4026ab84d29127cec419b5f0c96f275148e4515a9067f03b2c31f3fb26bec8cd92efa36fce91b7d3bf1fee5fee6e21ba99b0dcacbeac62b3b40ac3d28a6a9694368a8f56ab9dc34d4eb1fdeeb2867cbf2f43225a4a09764844bffbc7f248e4190aa0d8d2bbcbef93e00c6980f5e77b786fbcde4dff4c26533796fe95c6950d2a9359d3a99df69360a90851664da522a4cc9afa3fe04d602d71ce0425f7ae5993b553a982cdda7efb3fddbddfee1c5ed24bff24a88544fc7aa5d279faa3a110f2dd3f0d946127df9da7797a8637bc773f25ce993771cea49c337f8854c68435fd527ba92ddd340601711599ccbe58acf81768c58333e8b5593008fc6bb3e239bcd1634d6f5bba3802d558d3c1110808099a4ca6ca1ca3347e14ecf17a07bb5e69fbe0655883b7a851ade932b421636081e4157b8998b0a6da3db20dc70b8ef2dfc8ff9167dbb195bc9db82a366babd56a154547694b927be21312a9e5190aa220246a966728c08239c786fbc7e319ac0c1b0d16354a1b720ef7ae591c0dee42b0ed1ac81a88d472a721cfa0d1e7de813c833bdf705df880a4e5b7fce3d1f20c0a532c0a0a63b0285abb66b500492bc7205941ce6979d79073587eba7853e9e1c17fde49efcea9240dc4ade52d077946bfe521cf60dbf21e6f5aaa7cfd1ed98296fe9bfce37a809b02fbc1526c0f09e259efa47a63b63b873548bfdd8f0fcf7af587f769ddd7b4e6de63cb1ee83f2abb66d19e4541a33f92769e599e4521b3ac31a5dc78a9bd9d0fd06aa755a395d6e0939762b7346ac3fbe879e769b6321422f6b793fec9e68f82dbb993dea41195f2b66dbbe78d5bfdd9be7d7af5beacf76dbcdb4997e327c57e9fb6edb7b2c14f3862bf6b964eb15fedae41d24865f32cb1ec41fa002de9126c96bcac3f72ee485773a38eed5a88288f6a5637d273a3f66da4409d95e11cbe368ae3276d9648b9f0d9d03ec72b6d68d7cea110f3da79ba3b4f77dfcebd431ab35e22db6df3d3c62169bb7148ce6b7dcea1ef16304fbbf1ca4fee72e3baae7b572f77c959adb991edecad67cfbe6cda2ca6ff7ae4fec950883ef7af411972979cca460e3b3f2b738cae86f66ee3c6cbfda71b67902e2287ed3ebbca1c633eaca17dd6ee3c539edb2aa8a52e69e566cd9168931a193ec91cce1a04f83e938ded9b0cef8127ddf346d4986ad6b78d43d20e490b1e6c96dcb424eb3987c1fab35db215bb453a77f64cd27e1cd2e0ed2436cbbb8e052f431ab25e222bc72bedcf76f90e3db0a27886b4961bcf397cb15b3a964f1ac56675969337b6cb4a9bc5ff4ce0b50775076b8a377094e3a57792572fb5debfcb71f69516fc550091112c730cb05eeff31b81403a4d20ce8b760251cb7d5b37ae64059296ab3cd81ccb8d32cde26b27e2e456e4936ca5fd644883fe45d066d57bcbbdebda2cd251ddf23e9ff2beafdeefa47fdb088addda3eff7da3b41f781972b348ff46b6e0f89a76fb279be52cc9665dd0cab3523164442bebe5a694dcc896347640a09ad5db65bde30c793bb16efe66719567f248c72b2d90bc72e5ca15bb8df7352d5f5619d2e00a36abcfa156c566f541d46f58dd623b4f47b632ddba9d8fc133a6d59ef882882cca02f0153368d7bcbcbca8563233312f2f320a5186405436f90934809a72148d8a6d0b4e4a07b22c809cb285e5b7f46401a8ccf23f12c85c00963dd0f30c960328713c9ed1333ccb67b985bd5d6fccf62f68271bec25b2340e96d6db75a82d1241d2ca8be20964e95a804c76889a2ecf9224b143e06dcb8534e413a23cd7e7421b9b2cacc15b58f98f3929a5eca694b4a5dc5825f96f61f8984d50246576d6b088b6f4731c9296561e2f91e53390b4933fb29d23730e5f96e0d3ce37da0824fe688761aff6cb60f8a78d6c7d94f089380c9767ae5b255224c7b5bda8c565a45b284baf0fab5dc75e94bd0c8606b08bc876799ed64669a459f457bcd208182c3d8c2f4e1c362401020c80d0248a4ce6da2eff6d23bbe428a33818c10c3e200322b88814c971c917b5b898489176712f42804b7e1b8b10e0821de19087193171e8e513d8110eee5b85f14c1c7aaec28e706c9715f68943bf551d9e38b319b701044c5062062cdca00b5270b18b61a8406417110ab020c20b5e6005141eacc1c52efed5b1f41ce2b84ce69246ba05c3ca23ddb4059f0f763941152b6379760229589e11a463e7af562f91a9b5dfe959ad024d20ed97d61bb394c322588ad5b86fbf317be725577f6cf5c7073fe188d5ea0f7ec211d8764a017ec21157a7a4fbf7839f70a47f7cb094bb596dab3f588aa5bff4c70188cc2cad4a86c47ab0c2117ab0c211e665bd4bd8f991cf2105b451490734af5cb14a643322a0411446b21e1263292ed2f9b7f4c248074e6434084bb14a643d58e108b2ed0044669d8c9f70c4fb004b7191aa8ca5b8f817b4da990bc0dcc3e59909a0b02f6995c85eb6b08326c62093b9b80e897555c6d7eaa5f506b1f3f21ce23875610b3598031199ccc50b68b1b3f274ac89b4de70f0b14c22f2ec0815ab599e1d316299650a33535abbda7289efbb0037cb54d91a7d3db987c8a102882ca5b5b294417cf29f1c6b481b4a4b24a5cd10a426476d5cddd0e835a951ed3d6e72d3b4fa13026dd3b46ddbb64ddbb66f9abc36fec80a030657f44c289399fb1d1241647fb802c52cfff625576e168b72f6699f9b36deeedab7f1a7fbf639ae6ed49feef36c27b88df372fc7ad3fe6992fb47b9d6ddde9286e4ae439ae5ced39f06ca91d3e678e73b6edc36aac9b9868fbb452f3f3a5eedf4725cdd90dfbed51fedf26cbf1e838066ec76d4052608760b88b3436db777efd36efd705db7ba7aa588b21ddae0994c26b35daf76ae0e6976fba7f548df52ab3fb402c5ac7c4b4df611124cb13c2341127b4d969280c976eddbc6c9cd92dcac4bed24b25d3b95a6c990c6bc364aabbabc368e545bd59056bb563bfb030306e2048ab5a448602044d052fb99b6534dce53ed7c90a7b95babae35faf373bbd4fe334fbf6defbad576032d4ff3b4938f7b889f8904562811449dac5db328058062969e5e9ea5a519f8b83fb64c3fb05bab1bf3ca153bfff36a8bc49067e7251376c6f2944c7cdcc16801fdc70510e7a59521adb3413acfd3f36c89a4f4f9e679fcf8660452e604edd431809dd74a76de00dda29f9711b568b5bd7dda75eba7df9d7b476c9c79a6e2899bc5cd92a7a7cd92bfe0a994f2b3112cd9912eee7358a34f6bd73cebee2588a08a1258b15266f9db91208f40a294b5e55909da60a595eff0869459ae57ca421af43c0e51cba7a30dd1f2e7788966ac6c7856b0f4413a965620d3157be79b2d8f9207a2bcb4dc03e0cb10e840a29d55a6595296c4d26f3b7c854ce6e2cb3eda84e57fcc334aff3e22f0a5913907acf73b50dbed5fbd6dbfcb83e38d5950dad2158ad9eff4de9967905ee29c52bddfe7c39346e69cb05ef003e2ae5cb932874b642d3d4f7f235b6ffca17548daed36da6e9fe10dfaae97c8f6d97e97e395767be9dfb8b241bf9dad0c8500cf93a7c111485eb1dd4be32a14823ba97ae3ddc62bedf6f0342c82d200cfd3226062e9b77ffc35c8a110e1bf7aa9fd660f75b6f45295a10d6ab752bd44b674701cea2cf86fbcd27e679e01d60bdec70ccb9cf3fdfbc6790e4b15685a19d2d81e8e77fb3c8737e8b72b641fb09f77be0c8590572c589973ee77ed5f658e41ba37b2258df29b94718e766ebc7dd924a9cde1f348f51259d2e7080b3f79bcd4326580f8cd38d96c93cd34d98cca6653366bd94ccab4cb0011fcbc77f6bcad5ed17a5c9523cf703c1292961e1c83b46fffc6208d545736489727d521cd922ebdd973ca27764b48fc0662ac9009d52da1ee1b88b9507f0331e7cb744b68bb14f2ba73422f2fd54b7a7f17e23ad4bbdf2ee6b77bcbb987f586dfea06522e61bda76fe1bd5faf5e17975ff0deb70b7df59a4c27d5eb52afcc514d7aff7eef7a4da6cb5f97a34eeba517eb06522c2ca7f58647d5ab692fd55b7a18fea21ed6ab69a2d4ea4ddd74a9ddfb95f7eaedba8198df7ecd637ebdc7d4cbc2f253bda7935aea653991624a5a49e6e5a55e99975f51fce5bebacaf49854bda2c974f117f55aefcccc4ccd6ff79a7a67644cf53395461990f4f134e456afa5f0d5348ebfdac79ad1a5e9ea97f9bcff36b556694295befa484d1ffbff0dff9a7324f97df5eab2bddee657bbcd38fe761f69c6dbfc825d53535afdb27f524d4d4dfd35bdd65b5383f26e434373189851f51819aebbcdc7dff0e3ffabfd34f5fe32341f7fbfcbfc9256333f9da8fcea3531319751a99e7a8ccc637ec1c7c4fc925ef39b9814cc6d7efb36313397b1f9cd6fe932bfdbc7d71b536fcc616062ea5d1d663cccef7798985fee31a749a52ea3aa17a65e98cb3ca57aea17f554ccaf769affd7d452536f4b4bcd6ff89a96afeaadb94af5ffba7cf5ebfda6de5a3f536faaded44fa7c7d4fbf2f254bd313f9d9efa95d500a97a5f527ff905ab0c66c9cfdc4606140f53ef4bbd307f39087ef5fbd51f9825bfaa57ac1b88f9f5aa0eb3e4c5dbfc6eb7a9b7d60dc48cdf69eaf5bcb3d4cbf28fe6df2fa9de7cf57adf63eaf50e920efed27a66c9c7fc767fbd2d2dafa957a65e99d3d0cfd4bb5a5da6de0edcc008641082a532bf2e5546a6de559541d514f3552f2f8fa937e572987ab7274ab010837d997ff92d55fa52af4b15c3cacc9247fd768dc12c7954bd2d75033156283c4bbda59fea065256a82fd61b862fd53bbf308430a8c13690bc62fba55f5345314bbe546f58535c159925df6d95c52c79b0deaf6e006585b67bf57a200b2fd08213965437205a21254577cd73bf5d059925cfd5bb5554b3f857ab1db3e44f74b97a429e6fee8388fd54b3e451cd92a9d4dc2172c4b31068618bdc75f4d93ed83bd2d5b31050b16dfb7cd314f884442a7e7cd374ca1e9cd36757129cd3efee779f767f765f561ba27cff88acc197c44aebfd636924f22c044cec7cf7af41158c1688dde77873d8796ebbe9e127cf218dee3992e0193d78c6f6cf1d18d4fb3a73c7e57d1973e7e52d95a5964e553c93ea4d89b66777ed5c8519834c9cfecbe832a2460688a4a3cebd1f44acb7b3b454c37ac5cab3940c8b98efea25b2de3f19d2f04e1ab7e7408dec4a829e1b79667bf08cad0651bb9db2a4c2f62ce5c4f683cc9dd55f7e3b975f11f59b82f97dea971523835e9582a9cc385dbd39ecd57effd2752e95f98aa8caacfda62414610d69e7bdf1c6bc717e1b83a8a5cf317750ef9e04cfe0debd07cf20d5edf45deda3461a64ee5c368122e3894e4b996db662054a95275c854610575f9bdd2a4f6b3d7806cd3177a46ce2c8cbf3a9fc9450643cd1713263d6e1ce0a14cb92e52f3b398fbc7c47c4d2e0194260c4f6b55389d2adeff3524ab7489f9753baf542a55b5c152ea4952eba15739e3b4118a70bfbf94f085165c57effeb64b6eb8f76edf29c4c85ad4efacbbb83dde2de5dec16ccbba3baa57af754b752ef2ed3ad987fdc37ca28cd9a278d524ab3a8346b5e354a2e6417dcac97c38cdc2c98a7466e56ea0c10bbcb3ce6f332caf6f9526f0753af6853324a977a275363ea7c6aec461932747458ac3f95baa29ddd6fca822008be1bada85dce909105600b536fca6e9b4bbd9ddd36192c2f25769ee7fda63c0e56245dab4b99cbb9639c7997a3beb908214a5910a2ccf99a16dad0ded756e3d19067b57f1c3a805d4d1c5d22ab7df56e1c9256abd20e2131246d9fc8aec6229e4be63cd31bb7f1f20c1caf0c6abcf288e55309d22dd5e75fdd8af9fc12dd72f93cac5ba9cf4b59b7c0cf4b22dd82f9bc2cea96916ebdfc6e9730e95a9d2f8b6401d87214ab7d35ca261fe9ccb5b09c4453e9a52ade637e6514b693486c776512f0571ad94e4a613bb9c4769289edcedd5275f5be34ebed584f087175be2a664c8d60b3e6614654b3e65f469966cdbb8cdc2cef20ca65f597e7681c7e77afdecefb043f2fafc03350d5e5a8afaa944d1cfebc84c2335eeabccb18a4a55e192cf5ea683fd5cb12ebbd7653bd292dac97ad58fe57af746267bd5cc5f249f5ca999d7cae5e49859d97218dae3fdbfbda68c54d7b5fab3fda3b990d6968f5ca22cee1bf362b9fe01c3adecf264a350b1228b6b03c3362248f742bf5be8ca25b30ef4b24dd3abd2f9374ebe57d69d42dd3fb528a6eb9bc2f97742b7c5f32e916ea2d1079060516563eb1fdef03bf8de0b5f1e6b01acc2f6b713acbcb2f6f61bae8f2cb52c297cedd42fd32153bcfdd4abde5332c62c7824f8df248b3fa30a38ca259fd9751266956df65945234ab8f1a259366f54f2337eb74d3c8cd323d1cb959e11920a2ce2e7984df303fbddc74767988aa41d4a2deec6a9ec1d4db752ff58a967f45eb526fcaf26fca72478d120acee17feeac2e43868ecee56f2ae6b7b3f7b63bd1769dedceddaa32e3b4d45655661c967aaab78b11ebe52876de54afc8734756669c52bd3cc54eb05e22bb9ddf218dad3f8f67bddaf9a497aa746b3b9f677ea33792c66ebcef73db7889ecbc36beb405d0aac403f2b396aa348bdff5473eb16c139b4430cd85e0e39bdb324bcfbc238f4c1cdaf2ec9acf3171e8a71875bd7289a5974ff00c797a59c433e6e9a56cee74a7ffe628ad700e7d37ca2a13875ebe8173e8e99f839e6e9c764be7fb55e8e513ae5e7eb2d5cb503451b4b4a394524a7966e588b239e8bb2996524a7fd98aa50f42142dbbe8e7e9bbf9dee1ae773ab177c454efa4ce37b4feb46c4bf2f1cd9551ec3cf34e908933cfef44e6a7b8b37d76c94f9e8933bf7115ad5e29b393a1d8223bdf8367f4e793e019f2f339e60ef7f94f8e120ae7cc73a37c3271e67b9457e09c798905cee9cff3cc1dd964e2cccb90a1a3c362fda994285e86a29dcef7686513f924c8dc61d73c738bed9556d8b88ac6552857b1f39f04e5c833db23b53c7387070a268dc35338a9e2899de7b9c303c5158dc3f632143b1f84c8965d3c8382c93c37b2ab3feb8f8ca22921893d14466c179667b6cf51ecd689a9937e59ddaf8e65deceff3e0e6fb46df9ed342c62b4f2535697787bb7779f67726863da3ecfecf61e1320f2cccab0de0eac57fcea4d79f59e542fabab5caf0cbb9d6fb6fac3512cdb107572ca808addc26ee7595117763bfd67229d6f6e1b59ee1f6974d1f7e567588464e27a976dbb4e1453a99fc5d2d1b19a0c2bc36a67dee91887bbf6192e0008bb7909107fba4b99bddd61f347439e25bdff43bafc259def8d0910bbbaeace337bfa25a29459b6b70349e3959674e6d67779ca2deff21db7f8f220b7bacb8bdca29747716bbb7c8a65b8d5499ac55dd62baffd1b5bd62ceeded8449ac5bd1bdb48b3b86f6347d12cee3c72b3bad3b1dfe18dedb4de5b595f9a259d01a2fc3c7dcbba7a3b7b5bc6f58af6b6aceb4dd9db32cb1d8867c81ad43688465f9e7b12736756592508cfa0555ae11ceedc7b946fe01cee729470e01cee9d3cf721e68e7c3271b8cb90a1a3c362fda9942882bf0ce5fbe52713c7fb652772b462f72bcf9755e60e6cfe8874eef20977694516000e3c839ebb3c3277d8c581f53294af5e7ee2d5cb4e3a317596ce954768742f42dcaebdad9def937e6591e5fe4923a4515a59d42d3e07d4c9ac64db8d40dc152b2f8d3c8105c71515598ee32ec3224875d5551b221332fbf2ec1012439fbd44569ec876322bcfa18d8e092bf986ab3f6d64d986689324377c2c9d1079f644124bfaedc71289c8b3278c58f9dbcfc49d6fae8eddfe71e39596eb3a51bc292b7f53b61947d6db9ddff5f6e93b14e29674192ea0c6cafad3d79e6062b5f74bb3dc35d279fae3508859bf8367de1127ce76d36f57fa15ad3cf30e4f9cf0376565bdf3f40c10bdb34b9ca67abb52bd62e3dc94ed87f5a6e4c8cd02cf33c1f152bb8d2fcdca7b6310957565439ebbac439ad5ce9da749e31355589e196962af68b7f3607916022eacd8ad2b6596bf9dc31a5266bb77ddba3cb3dd96c31a3cb3dd376939a4119c43ebaddcdddddd446cd2d14767acfc6bda202e55b241e2f69768b5bf586c107dcbf99dca72f595b2dd5f9b0d221dc60691ea2b65bdbf48360814513608ac2fd196fe4ad9f02fd00699504143271b64aa2fd1b2fc95b2a7bf4c3648acafce8a37050d7d36a8a5be3a8b7ad02b655ffe12adcb5f2eb6e50c24adc85e291bf3a09768538739ffdd0a7a89b68673e467b807797ecc3839473e3536e7c8c38ccc3dc8bf8c2bce917719559c238f1a633847be6594e11c7996918573e44f630be7c88ba30be7c89b4614e7c897c612e7c887a38973e4c151e41ee4bfd11b3fce91278d20f720df8d1ce7c87363c73dc86f230ce7c86be30be7c8d331b551ee419e282527153e590491675a30b217647d3e4623a068c635337f6362f9fc79387d5e467558cc8ba05ca5cfa754a1e8f2212fe363aadb7c1e158a2ce161b1f1361f029ba9b117c7394ccd3f2fa64496d387982a2c06e32f1e63bde6e36145502e53fd10003cb6facde74125a2984ab1b09c4a87c554582cc6710e8be5fcc561311dce7a6c87c3b0190f8bddd47ff5213a2f8272892c2996d3a9e4121ef612e3300e8bed701d1ecb39ebb058cc558fbd7c55f30fe9e1b19bd713cba9540a4d87c1d421b058ce77782cc675382c967a79cc633034af1fd2f2d8cc6f4aa752a91486a65867e112ef12964c2617f13a312fa9c7585c2694cb612e87c55ce27b80393d567aeab0d8cc690e03401d12cba947e063d4236d7558ec74d5613198bf3c967acc87981eeb2c5c2e1fc24385c576a8477d9c7a240f8bb1ea11e930ea117d4c877ad4fd453df20e8bddd4a3cbbd6bcaa61eddefb2bed6a3bbbd1bebd1edeed5bf1e5defa45a538f2ee9b4caac4e538f2e3d2ca6fa4c3dbadac13a44a6c262e15755ec01c8c362a5abaad803e8c3622c8fa9475f0563a97ae4d5ae1e916a77fa4b3dea6a1194cb05556145332e98e9319778584b85c54a67a9475c2cfca91e6d3546b1d881145c626d42c6a409a2d0450b5ca61a2bd523ad86f588de1079fd69f1fd02f1ec7e1f9ab1a4f3997a1de9433396abdd8766ec562f506761454e7b021c92604d433396d60b24d190a40c29b0a5a1192beb05a258ec400a36fc05924333b6eb0592f440520c5650628639aa44532904ab901afb79a48edbea155263b57a8550213596d61fe6ae03415144a152299966f57fdeac3e65c2377946d050cacebf348e67040dadacfcab6d1734f462bbbf38cb9d87622cf7170bcf081a92b1db838660acf6d716c333828654b6ff9a3c63a8e3194322e51943d3caa1cfcaf3379e31d462e5d066bbf3493c63a864bb2109f28c2192e5ce0f79c6d0c9721534f18c216a670c9d78c610ca6e556ce119439cd5ce47f18c2193d52aea85670c350ccf18f26ccf1862b15d532a9e31a4ad78c6506879c6908ba5558686670c75353c6348b43d2bcff08cae27e2e444c127872004116c96e4c903bf9b250f9344b20df0f55fe2e5275626527bb2d7646714dbcd2cfd1c5fe2ed9a4826446a6f27b3f49dccdeae4937e3f928cbeee60e696a9aa6c18eb4a9cd0ff6004df28c6e40119a2679bad346fa0e693437daf8a4c96aef51fbb7f18c699986509ff48f949a38f4de284e1cca8534b4772b1b970806b6bfd9c0760dbadd4e54af11923f12c8e138e4a81ff34ebae1791d48d2a8107996852776d6788077521d42ba7708b08b548ffada183a000440b8bcca9a38f45f58c47cd76b44771000e1229d742fa4a19d6776e3d1fcd7a18d93057bd4be85364e76fe23813d8ab67f8964c740f28a06ced28580d5be1228fb3cbd000bd85b013b69773bf8580241f4ba651a0bdb473de0830091ab3f64de8959410084abdf35d6f21ffbc0e7d24761d8db1a915695746104f80baeee63776d8c400f56b0e28a0b66e93525436255c64f38726156ab97fe92ec84c1e7691855c042d177e415aeb052ee5c0189a5f7ae5064e94948e8372853ecf60f8a154bff991ecafc86d5aded949248e067078230fb99be9fd50deeda398e3ba972b8808ff34a5cf78fe49d2dc9ab35ba934eda640defa41f6939cf238545d07bf54788c86eefc222e849e07fb6d38395749e49ea88ac3686f74622fbf01f91054de336deef13fc094f49378d44881021627a11661f64dbedd25584d9873bed56af8b67b2eb1b270d182710c3dfef93daf8bed51bfeababefdcb5776823acabafdee8bebdfb367ae73aeea75bc0ecb88e54eff60ffc8a74b6dfb77145aa35b47fffaa473a4fff78f66e5f65cea940f20ae945d06fda28ed26ed67e2d981b200cd84e597747e9061806eb18d4922afbf38486a0527767b77468047e4a05488825a4d9e8f985598625aed2c19ddbaecc46ad7b41b719363b51fc18a61b5e7f0ae3d89b943e4c8ab06e81dcdc5332a7061b5ffd02dcd6a524a79d3ad4dd66d72ce64b99d790c0202c236e7ccbfb69b6e01c92b565e0be2bfb61b3d4035404058c939538635b650080e94a102fa7ac07687c1860cb11b2936ebddcef397c89e7fbed9e87a87d879b65bbdd28e2b05f4a7dcea0d99ea16f76de4991654ec366a2111f54a39d8ed73e018dc2845701bdb4a7985636c441019c1b68c63301356be671512093e963910e959a4bfa9aba3a369da6f7aa75ddab5d8c26a3daf69073da08593293461fe4c7206225b69f9b28da03c832d9fd23048c18814886c9ab6699af65150d32e4fa95699c6d6537c6c379e21bb10852b2c6af6a40a3b2fca7c82efd6dce96458a81bb6fc798e2905bbb94ddb384767522a6928ab6c9ad44e596bc28c7965ecbc9cdde7f6b97d729fefb6f939e7b73515cadb76b97d452f6ddb152dc3766dabb4e31cb694091f5f3be519dbf91acf90f68766690f83d56996760eaf8cd53e2f38039d6e5d50a677bc6b3700cf38e774d71ea35bda6578e34def748dd3fdae7e98eda01aa7bbf615cf9056fb48a34cb3baf9058eb7eed3f20c0a5db05d77d97dc57ddab62bae02cda0b085e51914b86051a3b4a42ad3ac4ee39c4dab3f3c9b493ede4ee26b7856f6e4495b16f171ffb89006d88de1b7f3188e35baf0a73b5b9e41010a73ce56a3df9dc7f64669fb24d2bf91740e85e0b008ae373ce95f73bdd2f2c17f0d86a367ff7df30b289debed2c505018d630c8f41f217eb2240a286c582fff7b47e40332cb333fbe4bf412163cf3e9cf77e6fa7558c17758c30bffb1fd28481afb1c0a417a7316ac3f24120948729d36321d29512829151fcb1888f473f604237bbb0ee41b8d008761b90f6104858211b5dcaf9d6b4efb15edc63d47b7ae0ccb9dbb8c94e5b8f370437436963b8fde992eee4750b1dc2dd0adc9d3dc149207b6c7b6a926dc51dda2e738ae329f78c2911b3b7fd3addbd9d9673b9fc333e60e77f6769643225e6a5b1640e461ca2c400ac874bd435d73bace83e559164b2c9bb24072051652eca4e72ab617e08428b63fb1904defa4cf90083a521dab633f9337ea58190a21edbcfc37416fea582e2c627a9fe0c179cffbfc46a98537c208741fd2d5215f076ae18d066518818e0245a4abfb9022d2b56d1fb29d0b8fe83ea43ba23bf7187c4fec3c6c0b9d30b3f353bbf7edf4d3b7b189eedbb531e6b9b433cfe0bed598e7da7e8b98461491ae1d0101612f9115a50a44ef45b81f7d97792eedf4a6b3754213fb7de30fcf7e07471b5ee934ac21cf023e1c7f7c7c071f7e8635c61fdfc3b38c97c89ee44da68b23d0bc7285082944b497ca64a571f5854db0d284234d98626f2ccf9a704513a6d0c06f5c95c2300c39f01b575f695c7da11672e18df04e20625f7dc3b3f35b6da2ab302297578b70972e2d1c95147160fdce63b50adbb473276d35a669df0e8b75df6ad15ddb3b4dbb766e9b9ff6d5476362071397d0eaeabba65dcabafa342223db218d79a96995274e17dbbaf3c2c7375f9b1e3bc22546207c0cd52ce15958621e6ee7f088f02c23d89d7f046c88eb058e7689a7208e2130073f443ccc39c40173b0c24a17b57378847898f3b4932a76de49143baf8538627e3a38862f8d43625eba165240f5f0db8823e6a70a2b1d45faa781bf39aca47a586131074b23bb52e310f0aadf8c43548f396a1c02031f73d27889ec954d449e3979623f6dfce159eda4d18667b5a3fe7d32a440e9a89bc621a59b7e1a61a59f2e8eb0d2c573488198abced3a81166facdc19179c677ef1f076a235b71848114809d1e1e667aea1ce288b9aac2c487a77188ea43ea878c87c586d49ce5a8c3c49f6e1a613f4c550fab1f9f1a87c060e0c3c35c7eaab0d4612f6f39bb6ec6213058781126739ab74b0b71947eba161e213ea6c2885ca6c38c30e932556dc451d27eaa43c49ffe71e00c23005e5587842f9d0bb78a23e643c09bce32c2c2976a6c08cc6fc223c0da84eae04d35e6b94e0fc798e7126768f5ea582545a58335e6b9c06f3f8da68b63285d42c873e730026285810f6b91d28fb6fae3433be9db4fe7195fbd3a9674af7658437e9e34fe98b209d54f15265d2fea10d8eab099c3644ef39b772377706c42f59bc38cb0d461fe6d2230b2fc84239b088cec76cd52255061390a56ca40e499168e58fa2bd26b41968528d6c9ccc911eb44b684274ca08209b226c898e06409b32548b1842894c08512a428c189fd40501b575cbd41b2dba5f52c37c5b2146e8add588add0e406446bd7024b3db39bbd9af046ae34a3b37aeb46ac36e27d9ce7268a3072b1c410686360e406466b7271c29fda6c2a40b665343d361b5c6c28a3a6cac4577996aace6e05f6335458a80703941e432dd74940cac3ccdcc2833c6c2a3beaa31f12851acb1b016dd251ebc6a8411b9628080b03f97650f97674330b256ba5263d15db00e7658d15db1d2c19f0e33c25e6aac549b30a10e73a93196a36ad15de15b6ad15da71a63a94577950ed6264c7536042456d657580447c1caaa84f8047b35254dac0f7e624f646449a103c08717e74e588bc2976a91b0360184abf4b973fa2e7440f8d3c5b973aa45a58bb548a91e6d0f4fcf854410d9ad6af50702442e53bb4aa731b18349994c5c82672beda517b9abf4ed3788ddea4aab3844f99bc3cab00e090f9ebe93059035257b90a7df420a5c161efc0c71802f5558e960290455445d8b64f8e409c4b681e51915536ccbc0f2ec074ab02ccb331fb4c19e409c61b03ce3c1112b9f589e3599d91896673a980204640347129ad82bc41c641eb057e80a4d5e2fb0f72593f9d882bdaf2332207b5f4b8e04d9fbf2c213cb07b2d1017b85946066f9404278555e3007cb17c2cb228a05e22b57a258be0d194d54b1cc572c5f7ee1039296fba79d1b85a4e5a40e9cd83b0649ced1feea2c105fb19fd7953986e6492b47fe37deed1a12faf01f4b16883cd301141bdefba7dde31c22dbde0dfab04677f07204ef8de13bbc41ba9495c3f176959c23ef1d1c6f7f439d059a7390597e375e698938d964f8ba77b7cff3dd385bd67b9e0904b39d94521e4846feeb2b39d940b20bbb9d7b37deee43a2f541654cd8db07e2ba60e28a1deac69fed5308beac3d82b7bbf6813a221f60c2060d6d96f421ce0a115952e566d1f7c896c70bc455b1dafbd540d36e756543ceec7c93be7d8e436de9bf6ec931fa1b10ccd293eeec6a8f9797c4d1d95d4930dbd59f3e9fab35f8ad595a7fe6ac3ffcae40307bdfc96d0c1f778ba5b4e1106c9963cc1d22de891ccd7fa49167dd5f8351b490081a1631d9d59fc66da702884860bb2274b80a03786cf719de6893e5fe69a51b3b32048fedc2217884f8618162963b8736c01a0510c1c076610d22230b944376a9746346a3fcc7811bd7815e574923bb3e12e88dec228decead086d79267e9c62c932becf6f1321bf4b3ce106809221f6042668368b3b67a67874550a0697f265785a4ec2b65b779f9230f04b3775a793aae6ef43960fb5b6b6ad0a18a774bf6608f5e587914132437b2fee8105162030ec860513173524aa94627c5c1143bd90a3480c41f4a677883fe9be310b541b5df1dab3d48c76a15c84469873426d0a9d47e70c48499d5d060598a26b6dafe67029256ca1bf35d2f0da084357a5cddd0d0f0d3bf4244569e02f1952b57b0a0e3908ba5cd1a353458390eb9586ed6ac37467b6dc8cfd7909fb583a8ed775ddd90f5f559feebb3523cb1af9675658336d181e59f2c5b2a670d6400c5ce77dbcc6ae76ec9eeed64bb77190e2144b4f2d5e9581dcb5bd73ab6c322ba5f697fe4bbae2f6ff7eeced354d8f9190249cb9c73e55b8aa793bb0424afd8ede04907df4fba45229124a941cde55dfb3ef9491289443acbc5500896c77c942308ae666460c5ceb37c05ca608a9d9fe1f88f63088e25f0fb563334b7519aa129c9262b1004576107ae4efa6a456a99692d6656abd56a35ce98b697cffce53333d7fea16a56d3caaaa6035b40da2d961fd559ae63afeaaab3dc9867399dc8b61cb919f0302b26dd5a5d3be722334353ba0df0df3b9a1298049433ab155b991148dad5bb51daeda0d5c4d5e96aa335a48c19afb4aaf355634c0c694cb91c667c7111c70bb3a7f1c2ac69bcb070bc30d4b432ad58ed2d636b61b5cb90064b5dd998ffd9e8b9cb70888dbb38ca4f32d1fedbe3c7cfeffb08fedd2becdff78f8256fb98748badf6ef0b4faafda459dac36f55742bbcf62f0cc3eeebbccb95e5590b94d81914cd00890c96c800890c8a3ccfbb29c846f7affb3ed2bf77244f8ea6cfebc2f374e903c3f03cdd853758e0e5c12a99344bfbc7ee3cbdc45f3f5ef68fe377397eb2bbdc421a5b7d49cbcdea48b6ab7703b6fbc78d00d9bd7fb1bb8495ff382436fe97cd2dca1085ccf54aa4c85dffc8aeed4afbed9f57efbc7265e3e6b62a9aa5cd93b42436bc6e9c574b62b50b5a4d36b19a6c4294ef27b28926a7b09af833b976b011f06b34c431fe9f218e1f56ff3a7e9bad9a45848f2592299e91a5aaf33b59000e8a9d578db7edeae055e7e9d575ec953a56c772b8f2c1b60f9643d51271bb8ebd5d84eab7ed276b10c032e7982ec7af5ea2aeb18d44568eab83e355bd1770f03535353533acc1b235e71047cdbf09d6d49ca74b251a9a5f2905cd6968de210d1a7066e633ff24088e3332464ea49c79095596672ca8623f151863ba10a64a64e5681aafbcf2df2f6cfc36cd888afee3cf6402676e0a69cc1cfc56a00ce5654206c890019aac43680fbb2e48328fb9cc636464646448327f799191394f7f049256e69f0465642e5357376a2e5f1386520ad578a55d9da3f9cc6966ce3ce3ea5899dfd5fb5e58637e25adcc67ba97496566e6656666667c99b93653573762fef298bfdc7ed95842ed48f8f2f2f2f23286de0c8bc08179789887ff64c6206a651ed296976d8a97300cc370015df8b0ae6ea40e3e75f01f38be5c66ecac34ead60b6ae63cfd7d4244761b2f0785822f2fe76970643b330249fbf2ef4566642b4f7af96a549d67aa46b63163aae530a3346a16cb491c940bb39e76e406cbbed4d50d978377411da4a8692f07858362e95bdade6d8a6d0a4bcf32ca264469af76c45eedc8946e954a5d37a55bdd69b7939626d9218dee7d45b7a41c39a4004f8f7504f99b63ade304c72ba5b0936d69642bfb8a6651f0f41f08d65f7a098e72049180a0a95e98355d8e752cba6b04e53856587dcc73710f409a4cff34b0d24b9304ff6d200816816341eddbb892674b6457374cdf2e846952a91766e589ac0c69c8f34c59573748d7bc24dd229dfe238df7d596f4c9edf2bbdcea95f5d5163ce94654d81ccb33a3a21834b13b966746566260c5b62ccf6230b302832d2c0cb08001130b83242f9883fdf8eb400e8500eb6d0b3ebc1c6f773b6be3bbe9364eff4c41364c176fa374d3bf53e5667dffb85b62bd40d27e37d5cbcdda5ebaed04080196f4af03416949e7696f049296f48f049248e7e92dbcc1b2a4babad15dbeab734ab3e865f592348b4ad185a5ff54b28808248b142922ca1fee6c29779e6e42bc938a6d27f492dbaa92a2bb603d8551163190b962748a152c38826b08076044ae9b8340c75544c77524af19e9d6a4d22d699358b67756b1edc4d2371636738a4d3b6904d85c2985a5974b6a5f51df523402ea2912cb96766bb55d49d15de3d9d2d556c746c098920090d74615c790d7c20588769e8638eac7cf10c7c777d80076d95471e2c8cbb001ecaab59b3872ac1e259a691d2754b28916cb33174861f9ec599e25e9c2f265da149ecd2dae9244c4b63c4ba28565d1ce3927f71e9b03398e832943175c4d9b8bc0b140129c73ce69c4b24aba1a2cab917a24f1349209ca4bdadcc83d00a969551a692087b45e98a5eff18a457791486057749776ad3602ba0aeb1ee3ce3d80a65df4c8ef46767158c4e4c6a3a1e6591226f6d540d36af5ce0d94465a48a32b106765179b445a7b204842441a55182d10a591a567242c9178ff34b0a4f5c17ed7ddf33a96f5ba51de1bc16f23b7fdf346ad6edfd88d97d608ef7d8eddc1f13bcfecbe7fa5f1ca57db96ef4e225dd64b14d2f02ec7ae7a35b6c9f6e38f413986278dab1bf3a4cf7abf6f8edcb95b4ac4b008d6770e718860bd300b7a531c8bee3a9d1b01a70a8b99ce3d00ef30ee01cc8b9fa761112c2b7f397e07c7be38b2cb341e81ffe418d6b1f346525863f3fe8ddd79a6d791d8f678e56558048ed534184b446964591a81bda580c8722f7aaef7d536b42a3fc70b0b1aeabed517fdf60e8b60d91bb3da5dc25e7e3702d514313f93cc589eb5000a3bcf82289665b9df575bed30684863d6a1ae6e959b757986376058ed462a184bc457db3edbb8954035566adfc60bb39b760386bd73bbe385d9cb7fb59da7e30c6fb0a451b3f8439af5661874828837653fa984931cca7f2db94b32cd92e34db3b8daa994ed15440922f6b5d373efb33869e56fe60aaab06dfb523b6d15042dcf56a085d66d8470054bec0bcbb315c8aa7c142411e19d54752400baf37491e89de45da640f4eaca46cb64763e269359920c6f6827d5eb6287a8f541fa6a08b6a497fde8d4a40dc3187836f374583a99becf743a9d4c2cff44d3799ae5542a892553a9341221449c944e489f2309f4de717fd7b20d3cf33e474ffc362088dc49bfa0dd3e470a04b13be9dddcf92a77a2783bdbd9ae57869d2f4aea8ec2c7309f23ccb7f1cad02cc0335858763b8e6e89db89e8d6877a10ac6dd6ab331fd6cb32a1ea4dc92be2652b4ba0de2eaf695b8e22bdcf7aa95f944e468e28b64b23058248fa12b0976ec1fc65641c47e4e09cf9d318040fedc0660d21ce1d71e2cc37586fe74d7bd9cafdc1878c8e368b56b0d217b991600b7bcb56cca00acb24128944a25b18ca7aa50c8b981db1d47e0c84d8334bed47c1ae7750e74ebb05de3b57efebca29ecf62b9bd8ad5eca71dbb9d3900637e39934a441dade23d88e58daad8d9e99a3336ee4223e4b1a6551b3e879e667b92a764bfe9320780e619c40d4aee4e480a2bb4e6f6141756719c1c6e17e1ae54db7b63ae7ce69724a58ae8d4a5a6ad15d2c478d62e36807c7cf44441f856559b6620654ac90020b0bc3b21552583103263278c27e13d4a4a0463349239176ab466a1f6916f77dbb74fbfdeaabed77c472d6437dabb774eedc3b2dbfe199e5db4fdc3ba76f4775df5e53fc69e4c631e188f7356df7cd54ef8b5ad235182d104bf5452d07f208a30562585fd372e0bb0af1234f2d577fc07aa5259da3f74555306020bea67d4d2b9b6896be47200b40aa3fdfb97ff5475eb39c56352b6b8dc272b56e3d02d9c3b6b13e4a9b45ebf591b2dcb7b61cccde2478582ae7706f52f626f1236569fdd96a6c62b7e6bb6f1bb9cb4f1bb7b38cded8356bfb4db7b81aa46fff24c8329eee8df2dcb8844c2663a28b31de74130765e7bbeeba9bab1766b9d3b16aa77da447207ba0a7e7b46b40d36a3434ca271d7c1f83b2671144f9edfdb3d54eb241ec83955ebb2f6ae5190994de747133b7f7bf1e413906fa6eceb1f321c34ebe72e58a154bab128eab3119ae23adae6e504b4f2dadab1bdae9b54ae76cb9b544435b80278ea5bdd39d1f04f304e10291ad88c1117bb26c85d11c2c87422c2193754bdbb4307b3e089eca9b56e30c39a0811194a0822fa4400055389642021210410d5354410393b9a33327b7235d540ab45e1f3756fb0fb20ce2d5b13a9a0836ab88200c6105402802a50c3508c01422266238c11110742105084b781aa7d2a3524bb0f432ddfa2cfd7906ef904edfd520ca205e9e591cf96eee00e1831f5ce1822662b0720617bdd82d1f2cfdbbc556c4208aa52efa18bd435d7da4e4045390c0e10c4370d12a9241bca0953254b79835dec8d321886ca98db16c450c72604b96ad888191bd37fc84eb2d0de7195373c25109b0f88008cc1006176791831794e00854288115b2e0d2b128cb37c2f24c26e3993becea5c7cdef12aa929ac63f9ca985979f2242cf5d52415964be2af5ed1e5607db9acf796c9959e22a990555c01aa01009489d3dd3d934922524a29a5bc3744b060e830cabcb819533675448d1fc51a9a119c91193b1d1a83618eb0404e0c9cf761385370e60000a09a28313c00400500de3cbc9f03004d7262182d09d2ad0a2b225d45a4ab8874b51323baf5e2826a613989a59095f3fe79785fec96d7030900efdf74ab8bc1a5bab5e1bc2fd32d6d8717a95c38383a3df4f06ed254d01e7a782fd1993a3dd436024085f5949c0aeb2813a7bf034eed99937ed250da08469b641fdf5c7e227190b44e0332691536842a079f875614e3f2ce0f6201cf7b6ae2349049c6111ea9ab13a72f4e9c06aaf9c4e9b3264e5f67e2f4794ae627fc64767fe19349ba252465954992204182248a28a23872e4881123468a8a8a881021226552d62cbe94c160b0259658e2f57a050912c4870f1f492491040f1e3c72e4c861010b58e088238ec0810387114618410411440c31c410410411040f0f8f010c6000193264fcf0c30f3a3a3a3162c460b158373737ff65646452a9140a8512451104c16ece4a9b356765293930845162e665977a0dcd8ccc4a9582797141b5741b9d3205a3c38b1b9b3abe86664666a582817981a1c38b1b9b3abe86664666a57a797161c1d0e1c58d4d1d5f433323b352b9b8a07058307478716353c7d7d0ccc8ac542854e9e0bd7bb2961d8eb3030e0b860e2f6e6ceaf81a9a199995aa655e6be1ce522f5b79d23b5f95c6e99fea6528a127fb3c4ff61991aa27f38878459e11ef88178587c44be219795274eb7e54be2bc6f19bd2ac6ff649f9aaf8a27c547c5b7c537c50be269f161f93efc9b7e4c3e293c21b3fd2f81935cbcaf6ee33d2669f514c0ae6c50505ce28142851a24c99d2ad0b5ed1adbb814eba753b108b6e5d0f7cd2ad0b825a74eb964028ddba22b845b72e0b084a1922081e0380a38c1f7462b0648823658e7cb2910ca32888d308a3b9c3aa32a7947e390a43b99d98bab762c7d9cd6a744699ed05515241ac216d5721f15748caf6c52aa4c6767da5ec1273875d322b8be41189c4ce1b31774ea7c3808bc66128a57a39ca14b07ef5b29359cb49f5ca7857af8e9dd5c2a08b966a8d88b0546b64645aa32866a935327c7c734d32db9e4c95da5e433323b352c5c0bcb8a05a58b88d4a9897173736757c0dcd8ccc4a15f3f2e2a2c38b1b9b3abe86664666a58a717141c1d0e1c58d4d1d5f433323b352c5a0502d3afc05eb3058307478716353c7d7d0ccc8ac54312d2dff8c586a4e33fe36af2f7e03e33ae09c85c382a1c38b1b9b3abe86664666a58a6161612b557a273c723fa336d5cfe8a5fa193dfc8cc0d96764fb9f9114ddbaa66f49b7eee963f235f9a6e8d6a5f9ccfb1f15ddba7fcdfb5f15ddbaf5e3fbdfac5bf7e636ef7f5774eb8646a4dc8ca1cd084619c371043f86b2118432823323a8c508ae46f0c908c68c20166015d0094805bc029c02ce9aa55570c6d5d96705676012c4308a94d4936dbf61144f8a08cee6cefcedb85fd1f4fbf0c8dc31a271a6cc9d2a53388a08e5ea5c19bf3c3b8133db4f75516c1fa6ffd27741b5b08c516ab3955213792850bc2ac3282dc3285d8586516c3f8cd2ad8b0aa574ebbe8453e8fb21956edd5458a55bd70bb9e8563fb4d2ad5b0abbe8d695f9eafd924c7cbf44446635aa4603342a35fe0033822f2e23653137eb544df5deca97c6598a54af0c2b5952abd4c492352090f39365bd92258fd24ada4ceb65d9aefc8e62e4e31bc904f176932eea267d3965ee9c71e41439650bf1de49f39c4fb620e3de75f5f213cb4d9954cc1d0aa571fadd4c74927a62a14c2873871689ef4f29dd32d1f7068653fb4aff532951a4453dd3c2ca7a59f6f6142cec6d24144a167dda640a2ca8f0aad062767a45b7da09c5a25b4f4eb5e8d6ac5b623555252da55ba5da5a742bac4ade6047e9d6571b8b6e6db5b7e89656696d28dd9a150652d84ba1f4cd4d1019191f28140f10b400c56144123487f67df588ed920a9506c19652a4943622b7905b10915a482d64175860219d38915540b08b40b065920ae257bf771451183972a4c8881122454553468448172d6b99952ebae0c28a95ae22b9e896100856c945539155ba2504825556e929634f99229dcc9da6d2387d2e6c7717b68958e9641ab1fd8d3d853691462a30a46106d68866f596051888581ccdea1415b440047b44b37a2e896204d602cd6a4e66039ba359fd89210a482c8f66f58cec0d43b04934ab4b41f80212eba3590d038519aed820cd6acfa8053db0dd56bc8088b5e2055dd8db53c0927722a1aecbbbb7eecb6f6af68968d618a45941f848c2003cc61ccdea9fc61f460b8c478c31461c236b3462640f8aed33942d66626462bae8169029a6c26613d5946e512aaa98181a2b73c9ea7d2a8586e653c6c5ead3280acd8c4ced2955ac545955d82c9a4726929e62ed0bb4681cdec2abb79342aa57a4d2d59be282c5a471788ac6e12ac42ba87d0116f55e93c134cc143ebeb9348a3562648aa2a226448850d9922eba90c28a15232eb84852a54ab37a5211e2b83aa7cc29ed84e3e814b409114c8208420a03188026e93a1a45d7551d7a44d2259de75123d2a4483c1d7a644e692a54a4cc28df5b8a942d2614f0bdc5165a849f4fb4d0028bd2a793d21b0b2ce6154edac90c078e28e611ee441061a4a87b10414c22a44f19e906304077d156bcfff003173a3acd6209cd596354c15434ab8528ad3753f06cd22c192628941420984443d2db56e71251ac6c34a76c61af7c32d34162db0a174c616fe764ee482b8dd3ef3a514c814ea415dbffda8991ed6a45caa415284be4932573874641932ca1522ca14c96d02996d8399b5191595128aa98d48b625c33f4c9c4e99999d32513a72b7532717a466655e911244613a769134a059d49990e3d32c554e9946e5d2532ffde9f5450efcf2addba4a560fdf9f5cb8bc3fad74eb2a51cd2e5edea7b26e5d25319408ccfbb4a85b5749ea2def5323f238604622c6200c806a1983f84882470e0b1c814367eec85456e3c8b7579ba4d3389d4ee5ee6ed7b26995a7515eda0506556c9fa58d41ed9531e83847f9042b88fd2bb1081222b2128b2ce493c6e957f994541409c5f6651544f92bb1b0fdaed220f8f8e6a2be40a482d102d1c969b60491675198581f6cc582bfa2112885e59902886c78701c929cb6cdb02a80e8b793201a4925889725ca158d2cf5218d6cf84b8b58a284b7c20551d8ce8697a10d117c380e492b24657fc0b39559885f47faeeddd38c7609485eb12b0510d9103c9115822d58a588d7246b938c354d3216a93b5db6c212c5d297a0cc9dd2e94b4de64e89be543477d8f55bb2f25baaf25b9a424fa527968a2527969a4a334b4b252a8e585a2a2a2db1f4920b625319567a9e79c5ca2bc4ce4e7a7985a85994cc6b92151fdf5c71c6b2cc44b60b67e18c39e776bfa2ec5c298a14f17a455ed17699851102ac1c2f5ba10d1ab1f8093796a2805144d1089c334b51ecfc6765eeb04b5674044462e7bf277387f4f96fc9dc21d5dfafcaef37e5f78bf2fb41012b0f17ba70f2551e2e7031f32a0f17a85041aa3c5c90f235293a82c47e463dde965b6ff57608b02d44c6be52563b059255ac56ef69bd2dca3867d27a69dbb616c864b5cad2ca7ae9af28b3532c3a82c46849133bbb20ca8b3352958f6fae56c5886af37c0a65ee4c2a9a36995d14714aaa8aa5c24a4785384b39b1fdc4f669d1dc99473acadce9298dd3ff92949188c4f679ce2347fe544a14671429472029ed11ed49a73de96b938a49c5ac3f8d1891a2a8c888089166b1a60c49175d4461c5ca112eb83052a54a11950b69b5a9348bd517d20e24eb0f5b21adf69466b1fab7a78c4d10351913a1459d11f08818050a492a898cd13529baf5925693cd90f46595b9a311699cbe912e0a31494a93c2f6ab6832cee94b2788b7675be8c21a39b1ddb39ed254a691b6d25dcca2e66212e92a53f6444641e45914227d6924c58b0bcb152ca826533402fa72d62dd41b465681ba46c512981797aac98a8e50b1a4098c82efa26ebd2f8d94dea6b7786fde5fa25b974f4422ba75aaef0fd12db19a4aa8f77fe85658814c7d9d6e81b5cfead657816afa06e896a772b1bc2fa35b24960a6ba226c6a5aa30ed089289d3efb4a289d331a9aac9264e5798e664e2748569b389d3a81696aa192d693271fa1a1513a7df9a6c8bc661298dc3960b54b8c045ca3617bab856c5b24d8c4424360a8a9b36e2735e1ddbb209520a5d153e13e7c84b97355854b3b8d6d0ccc8ac543129981717540bcb49349542f0f3481db76974b694a35422f28c0b58d80bda96ef773c83be4fe219ac06ce0acc22e52c7cb4e4ea13391a5259d58b6caef9264a2faeeefc94c9454fe46828c6ca17e15cda9b9091c964ae22302e96f3bbade3de44cde7229d4891e6fa5e64babc37618a2293b98ab4b84c08205284c5053e34f1654297782245d3c5f2229aebf4264c321797cbf9075d2d2752445d2e2f425da837513393c95c4550ae1804102152c473c19c48d1e68a799176a5de84a98a4ce62ac2a23a1f25abc8ac914719f6413e35ceb00ff230230dfb20ff32d6b00ff22e630cfba0621f56ecc30bfb00c33eb00ff2a611641fe44b63c83ec88763897d90074713fb20ff8d24f641de1b3df6419e347eec837c376eec833c3772ec83fc3676ec83bc36a2d807793abab00ff273a4ec837c8f1afb204f2463a99e517a6badfba67f0ee4ce9791a1dca6d1893afa11f9b14d76193ea62e27d4e9fc9bd33c154fe7a358604dd414c5b85ece7f8bf6ed7cf085fb0be9de8b54ae97efa04bf8d28b542e543dba3f26960a3bbaf2548feec84c69d7c9c880e07f73b311957a76e1e3d9ea48672e3d3c8b379d597e3aa3de72be99442c5252f9f8a6eb4431f5ce4e22db1dd8518e7e3e06adb02526cefc7c4aa3f445312e12504d900dc834c4cdb63d0991d4715567e2cccb9838f33c13675698111367fe8889339f436e44b2b5271f778b4f7d7891ca95d249c1622ea71600c0f06a665631a2cdf9a818363cbc28c66573fe6172ea696454fdd40b8ae5b116d02600f53432230c1d5e3c66739cf3657272ea6964c6f02918382ff85d007cd0a9b0984e0f2c9b5407801d605600d86105f3c245c7d4c375b8e9a1c4b2190140af4abda0581e83b99813a3c28a542e1e2a2cc6b2196b76b82af5826279cca51e16837139e1d423ae85f51d463d020f8bd95c877a447a518fb4c76a7e538fe661319baeaf1feb6baaa61e9968aad80398a947a52acad46e155619155819e6c6a51e7595b6d4a3adb2542ada1085dda9e0d391b90925b23cf6f1ccc8d0882c8fad38fce9c8478be51e83798ba91ecdc75277395f146152a8bb848f81578992a5f458c8a2f1c0efabc7c2d8e93287c5c0d86a88b9038b819fa947dd61b1f032ab7aa48aa947dc53a4c7603a96b73c56fae9b0184cdf7458eca51ed1838f897791b022d2058ba1ea91aca916afcab0d42352154f5dbd11eb11aa1ef968b15b7d472b8d81f5e825edac5c8f3a862222353dfaf8e67647ec147f6faecc45593e68f97452410cd26e12fa5c3e21106c8111f2bc18a15009ac48e5523dbc50a9f4f2039958603ea5fcaf8af152d2e503ffee440511485a0e09e7ccb3153a1da6c28e7e4e2f1576f4532285dca7c84f58aa100b4b7d49a94227f15c94eaa35ba52a542a551f5bf0e8565885c2b0f2d0c2886e81550804ab11331cddfaaad0f7551c5758a05b5e15f2bc6a8166b1e649558844aadcac42dc81fa425ce52755481ea8eb0f90bc2244cf39691643915410834cefcb2c4423245c90c2fe483627979b715774ab0433eb5628a55bb2e5468b6e8155c9936e7d5c946e7977c1a25ba414c8c9704ebac5a53a187af4c3727862e73928dddaead14feae807258f7ec42b57ae54b15410e93f0e85b8ed4a47207a4905b1c62ce73641944d1091d8ad0a3f9955b1dcaceddce1668d33df751c92e666b7979b694fb62a1c92ad0a4bb17733da9c6c4601b0577ba259d19e68326d892643d94b9b40a14d3c7b67145af40451b3771e99544c9947ec7c4f692ad3485be92e6651733189749529eb19d748aeac62d448aa70d185150e89132758482af3f3979b21b11349129897962aba05646aa9b0ae48e57259d2f2798e492300f52295aba5e54531ae1415dd02aae9641367be28c6e522452a750eca14dd0232b99cb362948279a9dcccc913ae49b75c2aac2846e56aa95c942913679eab3271a6d8bfdcaceb88c4ae46f8645056feb5d50099aac864339ed70264b2432ed6fb8b5a09b20401717608c64b79f59e3ea4b24140d20ea5ecf797b4281759aff8a198d3773ecb170404841d6ab1de5f9b68fa90ca8625965210508d1d72b1f73eafdef0432aa0924c26b3de5fd372b25ef04331d63b7ff28c20a06987529e77bf0fa9ac94b25eef3e5a6c0bc7b29d2a904913a96976a93bac4026b007203bb002d57415d6751f8ab1f7ab4a604d9860b47b91ca45fa90cade16eb55a09a266aae5cb9e2ea6aacc55514e3e22aec66abb06b1526432b2c15e39a1586ea01c817a95c5dc51e8017eb7a2332b3f24c7ff909ad972bcb724d8278a511cfb6a085bd6cc5ca8e118dd38702254a942953fa4a233b2f8da414728964229bc8292415b20a39935774777777777777777777f7ac45ce2f48b184499329a8a86266e4e489911159c5c849536de33a92f75d31ab828a299a30592285d12b89cc4a159382797129b2009123643860462cf164cad79420cd929e8f28dd2225b145b73a1e50bac5e5d0c202cd9247340b0b1ccd924e8c6896fc1323d613a61d28a25232bf9155962c2197c098344b362122a768d694541891551c91b328e41548a493662569f22db162e78de8d69538c2f38fe8d6a516309d371ea7f393e8d6ed7c74eb928274eb7a479dff9258389157cc641554c8299a48264b9a35cf621dfe0f7c1917e62fad1b1344b7eeeaaaf387e8d69d21a25b1726c567c6259a352f33bf1a5f4982340b890f194512cd9a47cdb78c3c9a35cf324a23cd9a3f8d399a352f8eb2a859f3a6d102cd9a2f8d9248b38e18a5ac5957ca9274ebe30249b7bc2a51748b44e548b7ba2946bac54929ead6168548b7b42d5ad62d0aa559b3b59056ba259f346bfec993276cc5f6e5922bb3b80c4594bfaca98197f4eef7bbf7191ebca6973e4f17df72964b44b3e46f9a258768d69b1544b3649ac5d3ac54b30cd02c54b364346bfca159f2de481a75b83146b358e3cd5c490e8b8f6f6e37b15366af8d9fed7dd278f4b3929502df3d25deaffc1a94a1102db3b26e348c6842babc0a23bd09d01b89141d75df38ee5d05026268e399528977708411b9bc7f63917479b5c8111010b62f5d7466bb687ebe97cc1d76a552a2c85d64677793addb0c3ab7b31dc336006c3f46b7f87dd4168c6cf3f8f88608e2169ad8cb58d87e12dcfb3ec03e8fd2f77e8e17ef7d0b7087852f827275ef1fc15558d14c0ae6435a8e8394fa4830a60f81813506c4ea4680a94f05f321a5caf293a9f42135e7de27229502bfcf83f990b0c25c3e7394a914721f32be08ca95fa40d0f33ad2612d75082ce62d1f672a7dc81f7a20d8753224d561ab3a24a6c268eee2c2795fe94362de815d4722a9645207499d4a2593faf8798791dea9562b1999d4ef91dec91c167e88ea357508cd4c3ddace7d9d27b3525552eab0984a7a979a575ca4c362730a4e84e1032e987a34e4a5c262405cb9e272a947f3a80a6b61a947f2a71a9347b4de741caa9c20042e93945348e18530b84af5e8cacf2a13d6a33b3f04acb0988402086b30838b3b2c26a7e044189a707df548ab22c7a1ca098cb8bc7a442b28afb0a109677091ead1ac54f6408a17c4e0eaea91acdd8402086ba0e2e22aaa073013e52fb52b22ad41281fdf5cd9c4b63422997cda120b482252c8ce08072c09e5901031ff8a624e252c4782189ab1db7d4823f52a69394f1273a7a5b2546e9cf0deb97757d8cb538c344ebfc37abb29de7e97461079a68529f65e69c4f62511d18a7f89b0175bfacbb3a7f75f3236fc8b5ad3fb496816fc6be5a3c59eea0fa115ab8c66a562aca9c6e06ca9ea70f58a3576ab37d28695d5ac6e28b4a46a807a6f2f4fb17d0b7c96f4978b0ddfc7c1fd65b2defb44906cf77e10a5bf264fa9b361954959b0be59f72a8ac5926a4ad69bea2a085aae8adb6bb3daac333beba576be52536c4b1ff4ea2c734e1007a9bfa8e4c8d50a94a9a04441c614424334330d2001a3154030482c1a0c88e3389034dd01140011a5ae6256a089c328062a838c31c600191000000000200d00005fbd3c8034762767d9f49eaaaaf3353418be532e493e1ba587810299c9b438104e13e9bd8824796ccf0aabb2c9f56c95273f1dfda8ac62a5998c15f231ae550678c2dbfd423e46d562bf54f635035d5bc9d9084b8af3634e337fc321881d009cd36525b01823e11273323a03cd51f6c4229f15db2eecefe05d9808eb8829f34b303a0bdc9ba043e3bc8776ef1e76287276a498f41468ed9cce515fbbfbe1b8de6d769bea988eb6456b80a0aba77cd5a89b803ffc2bc5c193153612eda7388e703774663ad9d65689966ca0fa402c3eb687abab569e780ae35030108d8ae351f571d3f60bb8f2fc0c47daaf118048d6e3a6bb7c50d1545cac052e9d7ce4d6abc794ec5374122feafa26230af85e495e1ee22651946872e3908a25b0668c87d148bd09d34818894bc9a09365826348c119a8e01cd28253fb048edfc6f4abc667d404a5d0963cfdbc091cd9743c6253153c0c8610da51ba3c4749a76b7dd2e30d48c7d0e18e326c663fcc4d187210e52e490bca5255c58955e0f9563a695bb434a1353da35e7cca125d974f1ae9b2830cec440608ca44c67e1fd8282e1c7e9470e685fe8ebb962372b33f1c3f9d215ef1aa0978c346e8d7c92d143991c6910e859dd892e01fdeac4c9683fce249d1ffc96407ce5a2a25b4eb5a718a5a7ab4906228c0f30b21c0f7a8e5872709d0d061f9bd227eeceaaf446497a02635488ead769ecd18995aa5565dfdf5a0c265b007bcd880a2bd510b7c31e11576f6d16c40dad9b11e06e2e846a94c0ce5bd7837bdb39a4ce5f0fb455642a784d8d9ba8fa2fdf3e4177b8be00a25895dcd71630f3d4dce22ef69e4f8640bfd9c4c0e845666368738682ed825e04bc097081c49e52cf38afa3393f93762e76bdc55c2533ef26a748cc09c83caedbfef21ddee21b6e2170b71930dfe8f096e9b53e512cd0f8d0fc6bac857a1f1c6ee07131d4cc2220d797dee1d7286832c457f90e5a210b2be8d996042c98ca824cfeca0ddbf35b39b3b4cdd162fd6e0e078d45b312a26354bd292dfda295367a1741c9e9eca907fd4e02a8b40db0871b45cf26d18645394791bfdb58b5a8b2632d2e17391632b9db44b07e3e58821eeb806d53f1eb97631ae73b05be8c255434532f5a6b4e7cdbb7f5c20ffaf0fc569fc51c476c0ae8aaf27470f8f5a4bc9bdd9fe9103611630c19e87424278aa35a207473d1ecec3d7e3461494c9346d04f526e45376e0a06d3e8adcc24d6ba26b1fd424d107412f34ece769c836fa88c0240251fd7c4deb635e3c5522805037840f113d934a91af3d81ffcda8c93e88a2ef2b45b8512c5b9ca96f727140248c981ccf717473f1baab4d8cd6769a9325d649da31edb2dba5c9479fd3b6ccaeec3633493131e226aff09d63afd560eee9d9139ee65d88d8d43c75daeb8ee82496ab7503203853ade4c7ad89fde762b7f42481ce4627de72637016452ce86c9812da1dc02407b281f6e7420a8239db0916949672554368f99cdc0e62c506280b42d5bdd9c8d099adad9754138f4918c6f69af0de70f6e9033fe0e987d5d1bfc8211076b705bef205f68e2fff06de87a7b47167f6a90b08cdbf3d25903ad0b28275b0745002cc7a74575b501daea995bb20cf3f968ee9c6507159815d81102b709c77188f40ea2ad7985a45b8d047961ee08d3332ec4b6e07787c2f77dba0c743d05e7f571e1d54c1c14c2253a4a71f32ac75c09327ee842cdcd859d60c71814bc24a6d11cdf9c6617e83b76e0d5d15d0388fc3d114c406ba428b129a8ca5fa9c2b42c92d31172e2a0119d49ec26b3f3388e43ccee5a0565716a4770f12e8a79dc7112c5aadf66d2285a9df484e2cfa57835ecd29bd811fc9cb8b66d3ec2f95503b9f74594f2652c5bb0a798b436f642f24f269617f13a855f9c945933eafa9cf5f74c0c4d43ee88bbe4df9f6555b8a3952e35567c9ecff9ace31042a3b20745bab0892c0244884683ba769131701139501bfc8419d48efe452704a8d8208aea8b02824d3ea087b841a0c4924ae6b006da168c612208b58dbb22d2462834c2d48cb62ef9e40044847856c0b44c5d917168bbd16a2e3e2ef91b770795b722917eac51956e1bf0befcf62ae738eca5841bc9f1d8aa39a0e5faf1d1c4d5caea2dc23642af62498edc88f05d214c2b44c44db86a69c9facdd9124facab8700efde7eed2b90cc406361b8d99148b0806d28c2f690e244a62cd0a415a7ad6e145d384614f1c316c8946ad58015fa5be74f53ecc8912a0cc2b689510eb3cc760c3fd070e6cd8d6cf1860763644fc28240d16d23d90a7fa6925b3457173f4dd1e5eede4e0aaa0ae428ba70a83d269a261ed776de279dd8d773192465b598653accf3bdd468049e784035b2f47f069e748cfd60093a0b06fb112fc948c5ca2b346dafab003967afb32b7b2ff8ae5fdd5c3580a2b81f76d7aeb9355554bd08d4a7994cfa12dfff72afac16234e7d41b00012604c7a971bb1592118829cea37281666e67cf76a851d51efc16d50944945c333286f5c437d053bce56b06fd5c65159273de316a5756d59a7cada967b0a15edc59b0524fb04c4d4e7797048dec6cf10098b01f78389fd81bfa0bfd90a6fdf8386609af1d6c23d8eb8a5dfbcd05916631adabea974d45f243e3ae5656eddd5fb0548a6b1dd55f795a943b8ced75a5d6eef682a4a378dba9f6e5a663d9d168ab2bf4b6ee2f282de2b5afaa5f36154b8e87f6d7f7962c1095d9a6483faadc431de98af46683a78a8ff13243f716fb7feb2e32510161bdd188b54118e8fb152d58e551770111d6fcba61c098edd7a454728fac839b237c544cab71897f2507f9d733cc79d04421108500a6f884c915a2c6ba601247836ad43ec03780258d028c6184e08c1974ec20308c8aa10014e9a1210ab596f8034098f9ea7d481a1640470a729866cbe7ba5033ba48d249a0153a879f293e282a34ce1108b34472d3f07ab1529a07826c753d154a4a4f155b6a7a7eaecbfff9d0520f605b73dc512045eb423902940fd5b863cd0425386205ab6c2ec053cf12225f06fbedcd949f1ab3eadaec9f950aa0c620aa78194b53b0a1224ef528dc814f446f0babcea9dc379e68168f88ad7ec6830fdb0e625151310d14a5e9e3a2a87ac703020d7c6fa558c63a1746b1ea9a9d33eee453dd707b2c1eea871fb3cc47f3ba5b4e8f9fdda0de3f1382c6bbe0e580a855ec6cb8f2b91e5d5895b3dd66490e195c169ac5e1bfa1f4abf9a5c5c273387fb532bd39fa3492f54c1909695523c9dd6f24d93a3492f43890ac7b193156f524acede83407094652549617ce9b33f3835852a815e2c54972efbc431f60949dd82ef4b3acaf42ff8493dbb940dd18a10ed4a1ee174ecbf6313ee8f92d23ad49cb50f0249454dba4a42435e125e7f07b4e0879cfd39ebf78ca66eff909fa25dd70a8422d312ea5cdba445a6ae894d6258bd2ad71aea13aad1ffd9cced2b25d38049538cd59ae8866b4b245ba2d954893d69ae6e5229c0eda06b72aca1dce688ff4e2114d9961630675a32939edba34eacb2c6db290dc6594a22be2fac2c4010e70483bbeeeb2c2fae5998ec82e3957d112c1f71504a97a8c0018465aeb27136d74eb67fc3e55e7330705f1a2af45372ebbda1acc61b7f79f6768a2ccca85d74a8341e3b49cbe696a3b7f987e69c47a17eb57a9e7e55fca5ad7e59031b371799af199085b1ec90865e1789b8eaf4f050ae0be0d4cee2af5539838572aa770a64e92b31e8e9c51c4f18e1d1d2277fc21616cb5490369e9ab458baa977e7f94ff4be0449554975c921614bd4fd96c192c9727533c6adc52ed21fc4ec86c69cb5bec7a53af6b076f16efeabd1c924b7e25da55eb8e9f38c6890fbd9624a10968b421c76976695e092abb8b26b91454a333f835c5cfc25ac710e100c95989f2434d03f185e3781dcf8133d247c5b40a9f9f4bf28fdaff5b9b7f4bb260e196a3e6eaf7e96a974dd7e7a274753fe05e3f79d7c5e94dc48dba934272c15bc5b77a97e7f7deaba04f251f66f65fc2f77340f87bac34b7931e573a46bdadde7d0a52cee5c5f47c63fd5eb25e07773e3bdb2e8015a0c5c4cf53d312ed03daff293bda05d72f001c6ecb0027f0b9405a0403d285cfa0ca5d0731ec40994288ac823f1a1022cb8c8a1a216e6a88a814a2abbf258ceedb917b15c63d8edbbbd5f66ae33d3e1e6e2dc007c04724311a3e582d5d982462affd1ea7c73e90e5f50f9df41e07eea4cb1ab1ec4ab3a96288019ed26812432703f2a4fef4bd3205167f1585865f79ba1a4e17d1b247a5b3c0d1ed065907a848f20c520d598da651186ece45378881f644169189628673de0aeafcba86268cc93a2a81d16885e157b019fc84bc1192724a0cce1abf5c6fce2510660006911794eefd958fc7e24a9c4ce55ddb112a9bc55680042c7fda75cc61a8d7281b15e998797aa3d135b392bac5d35ac0728e4a3542f8afffaccc34dfba02e981c3df2530f7f42ddb4d36f300749efdb087dcd5f34c5b20a3521fe0f443bcfafc633bc1e3b20f1f5f550aa7ae20760d7bd315a52ba58be2c084e723dacb9d9a7c4dc2dcd471bbc490a448b00373d0e81447273589907331fa2ed8de2fdebc7908e1faf2b7121784efe3a1811839f07c6f5a0450831dd834ef8af09614b9d8c1b724aae5d6500068d3c0afd7a5a31d5e72f6e6483ee63c387ccf077bd0c20ca73d48a542b35c50a87a9bddd4402dd0ad4b9fab69378f7b6875ec5a81396a9413eab68a89e77c18c2167ada311661eec235097067e9801750de045849a7166b386d72ea4d8e29f4e594cc8a019118a7c3ffa598732cd4c3db67842bc8412cd0acdb396406223868d501889ed181c24a625df37e1ad3f817ac24bd84d8b7164a17ef11d038a4087c6241215a261d412850587d2a0410440eb37b9a4c49a0292ac00ad1bde5434bb3387108b69b0d7bb6c1373476ef6d015d484cb26b38b79e1bac366ee6213fbbfc44199dfdd583786fdad896dc0e22e45c8a1c97a533fee52b5af44bf1a53fc4f1e51e6251584cdee100c10f7d7470039fa020421799ee96d346a4c2515764654ac24e48b2e4cc32739365fc7e8212f2e3f7c460ae791d7af865d642c56b18ca65d19cc531528fd8ea3066e0e7ce6f3b38db5ac1e819aa5923a3f72bbe43f9e8cb3e53bdf29c48097e1c832b8c822c7f899c495a0a0a36cafff1c5cd6e5dfdab6433f10c0356bdc0ee7f725f0b8ff47e8cb749856e7a3f9cd82e78979d336779729d680d5279da2662fe42ab003fd484205bc37a0d3fb4966cb3c986fc8edf7d00e677d100f4e81cb4253af8a2b19cfefbb23a59d0c574c0375db7487d2134cbf3c2791b05c312acb813b4e6cf19417172eb45278d24bebab46332a74d2995a52d97d09965c22dad794b292dfd0402483651419fbf1a016f4b82ad3fa12b06cf3da66397abfa71c5d9e6db6439d77d7da84c330965e2d38fa6734b4f8603ab633be2968eece994c76d708519a1d1899c725a9e0368d2a07696e2386b4f7a2f01a4d3fc3404f373aedf2eee8f02b26b5441b63ab9ac6832da7e4413f66b89a54ade7318254b4ff1efbf05b507c6bf88ed3756bec243382341ec91287e35801fa8bb013a0cd2dde86aef2f4e3dbb51fb71e04d6ac922d522956aa45c115cf8d9fe4cf6ec6554312055e9e37314b7a6cd218af874839648513163490e1c70811f174b93830171c17b7f342bd426c4b63d8eabe4b4ee650cb9fa11ac3d849780f81cd632aaae8cbc0cccf72d1dada5e015d34203eba9fb3e0078bed68a761b82e316cda40154467053bc0861bdc97070462331a7a967f2f8b05fd408d553f92777857184f756eecf5abe0f80ddca02a37c44311a75ddd99664c558f9ff9e954abae7854ca80e1f133a9c6755b1092586eae97b9f2878ea928510ec6cbf1e531727b92b5a4f996dc590a93b24b5c8bbe65c188882feeb8397aa3206dc62f0a090dd43053ec96508230318fdf0f9e4870373d892f9400b00889306a73583ae7e31dd2a9c2611568fdaca6627d2a635350c31ba87e21881f68de02758f0ba789fd223acaf2d97880f655f5ee60a5f6c2b5c99cc76f33e1347c5e02b7e23ac617c12c007ac844dc16c76bb046090054198c3a4425efb7c5df72a63a99f4cd0c1d97d15658323991ee1d78aa5c9c8570ed042d6f5dd1a7a576146bf5d5119f9807a69fd2c8b29d6f564a4960f42dedbc34a8943554d38b9f99a6eb90b768bda2b3317ef3bcb088d9c011d71338d1cfcbc030628b309f12958bf67a9b83d05620ffffb0e488e1151910ecf6854e9280eff4719d1f4f3966464f70e4fdce4972060d9faede18dfa5c92c0218961979b2d45ea407b40175c974b1460ba67b1f5ea717d7383ee9769f0948b5ea4612eb4f753e4d52c23eaff8dcfc3aaf59485d012e3d40b72d005724bdbfeff9528f7b4da3d3e702ae7af61c58c245661ab7cc65287b2f6f868220c1a0bdd84248897c4aa4f3d789a6921a87524e90a3ef745545d5a719eace219430c91c82d9b67b7275b4e40995113555d9d108b425d0ada35ed102697b3a44e06f8865ac6d399df838e03dd7179cbea595f56d12af3e3b00fa742b62658bb3ac84de9e7224375bb22aa83e3cb3dfa73c1feaffccb20ee7a4777c393e09c4f3452c4f605b875917260e157d39437ffc3f4ac3fc1def0ea8bb7157e6ba152c3b7b420a2690562d2d3a9b41e420659dd3b20bf51379d35f1c3c81ee4407690ae1b6d7da3905e2bef9aa43dd26879aebee223bfce4f5d14bab75ced71dd5073fc0886cf7b4b1b747d838420f9a432b435786bd8308ec0ab28130061a62a97e36cd3b9a3b7c990ec67ecc84dc3d375937e808477f68dd4fed1ae9472a59e27e405e54429b69e24e5849a5724c1365b8d4aacf14cc98c121c632dfb90273696ea501dc289adb2d36971dca7132ca4547105b27157bc8ae4ff2315658e560e15c209225518c091d3446aadf7cbecc471943c01f3681fc2509805b53fd2c7d539e7d49bcc2dce42686dbab1c49ccc60546559f0d69fb6fd76433d6d870f24d327d7ffa49cad23fd7f89b6baf0a2f0b1806825a9334187c65287b1e7f87b2a32ba3dc7d8fe7dbcb14c777c345c9501e1fe6545a45730a6eea8f76a8cd79b0b34923ba828650a4e14a55a4cf52751daf77cb0c7ea4551dd56d092641400316051372ff66d62bed48da7b95bb623a5c13032cf57a0065cf89c5c8e0b50f8f9edc78e5426f1b69d2c6f98312612fa52ce3916ec81fe893ba997bb459afb427184da63d428967cd2a0a51b78952675fbf4ee13a00e850ce992b6100f8d7dc57e4888794472234397fe3a9168863106a4244fa2b44295bff48650889476d45f308c235eb81a49fcd55b0b3f50ef9df941161fc9af24b94d87d4f16263524f93fa51afaa732d27fe21fa69df1abb832a783429464f821daf0d596bcf5ad27de4fe4ffdbf3aed824515b04392d7b48525c4ed7bc48a07f150e876528ae50becb8015c7a9dfac3b805f221a401a7844c3456a8c8f7dba2e1cd06ad49e94d8c735216e330612f456c18547d2c097de69859f266b5675eb600f775d473a6fa3bfa835ea337d0abbf7f495aba04ed250a53da5e29ff85baa0a1de5fe809830699a0ab8c8f0f792cafd08733520ee5d1a2f3e47c63ed1a3fee6b0ebe9de157ae12c4ba0a2754bb8dd5e0d9541b2fee076b4136e9463505aa48ca51ef6dedb8834f0e28531ab98ec19a85a28f2ad225c10e5255ea672a215507a760b975a2e74050ee5a579918e73711f7e9fcc512bff693832a2546773986872390da29a4d81be47da40351a9a803bf096b904512774de0c0d08720341c8dcd73144df2f8dbc40108ad9031560358b8182e969f47da209a162f82d6f8a1db39efc7a6a44d00060e557dcba5f545ba85e9b7f050fe6fb928134e077689cce0c41ef1e14dad0c8e7e6c95e150191cc4aa44640ce85455fb143305493863a2bcaad125cd5abf205c52915c4180285c4ed2f84ca430b1af59a0c19a0dfb182423e75366700911d8c64dab877dbaaa54a4e690a3366b5f9af09ece7d86723ff1155b69e5575cd9155776e52b5de94a57bad295ae70e52bbaf2caaeb8b22baeecca57bad295ae94d73c0104cadaf14217411fd33b7534bc7c5db45bb5dbbc944dd552b98891b32c0eabe87d44528f7468bf787f5a727882a5c997fc37e27c86c7ff9b4f0dabd2e2cdb036ef1beb25117e043a310330883dac22996cd965da83d2b331a3377a5e3db804f59770bf525191d2dfd281ac79658dc61f78e9bfa6405d089a38e3d7695f6d91cc1670cd27f2b831fda944400167bc14a0f030e0beb09991a7d13643404e6809f939e51346fc42d22a101df487045ce41a800ca7bc37c0c342eb1d40bcb41d21b7e82a02549dc345596915d14c9a6a0cf5b16568a34c6353c3047079628265f037b4b0d62f0e768b213a05c62200411a0a748a38f505bf24de8a340c1f83085d9eb2c06818147e79d2225d755f5049653b33797b97b1ac24ffcce904dd52d987c3f1f2733861bc4d4ff09914489c21db1c5b134c65bc45b64b8efba6d74f58382484dcac3ad4a170335393c3bf8da09f4ffe0282dbabd878244bf7f2d0c4667f8c5b2e181e14942f5b6e3b01ebd8303ae4847b9f0bb5a9709a1b211dcb126662e4ecd04395b4c9477a75b8195b507c38fcebb6d501ad5575e1dfeda25e115d0bb35aaf58c74d8958182585c3829886d2e826b44ac581a6fe836075494a94d7421664e1753ead345f09b10a072e39624dd40f173881726fad64cc42f5b39256206124a385222e35cb754609e15fd4938b2e0c7d04398f0680c5075a8d6b562adeb7678d31aca66fe4de99d19b1f59530bbcb53c74326bb37ac65649f3e53669f06123e86230b57f19c6e41cb5e5056c4c01b609d1ccde2315b834059406a292685250e51da308f983da13d7e5caace399cb9b726dbab433180d9e4ad8492481a9c0a7d86a5e8080b906ff5884a3d718de1be32cf651883d68ba38b6a70194a325276da118735891443f057b947e930b3db2192f8eb8cd54c7138dda4e4914a59b200a4e13051b03c0df2e01382d703778ccbd9032fb3ac3bb47012c97c1869353e77d44d425ab73a4acbcb1096ac13331df24803288d5fb2a1fac920737d4b60e83945a07a6420b45328317c5e07cc18ca1130a4387a705c8846128e60833c841317dbdbb4f2bf1433c6d052a69e41e13a3f3483dc8619a9829a140bd9bcc4e0036e4d2240ce4dfcb43407575fed05bdb60cb44d1202b07b33a305143d844d459825772ca07440a424596296274a9a62368560b6a1b1fe5b3b2003032f1bfc6b623433f706c75cabb31cfbb1613968ba77818bd62f879ec46907d3ad7a94578ba4aeeebae05ad4d3049dc81fb222e2dae8f451fae6d16c99c164bee1412bf37b8976c9458b68ac0fb809735ea71500b69be5309dc5e7577ce7e59fb07d70de07eea562b42c1f005a8f0082907dc723881dc8b26fd9301b2ab5d01825ee36ac6926807e2b3eec50ea4872f23e2a1a920790016254374f3fcc6312c2a280674ffe1439b2c25f20061aec6dafe8fd3f11d515aa9e3810a77eee242b609a1f26c1dd1106d8c213a89cf17b741c2d07d8e73503e7c1e7eaa8da05f19b6e1b753270c540fe5aa48c15637e48f736508e3184301a2503080a91995df2b7a72ba1204d44d0c61fb1ce3a290467660d82c4d5d49029f887fdc3533046a5e76d131961a12141e800279cbcc86a32c9615aad19e46a6142e4a6fcad33d8983f7e021b3afdae5ae9c4d317380b8dd27995aa799f8dd6bc34dc69a9aebd0fd02106ddd17822f54a10c50dadcf8e1800485a0dd54630b446cf189c458a9563f75ab149229fbfe17768f1e37e90eebbd4925323a2a9262860e3b0baecdb02b84f7847537c7d5475a778ff3d91b4d551237dada554903ffa6e01530c15beedf4304a99db6d04e94d3ba8fd122a7eb57d037fa043d93f44c284f8e62721a341bc68c6cd90f8e0f1147e6bf1f16b24155640b44504ef025e11520715e3d75879b692fbbd0211fd6f13ffffb8bd383d949961dee17f498aec8c3090a92b9242a08301db7a65d08a3eda2839d6eed855443c010afcdbabc6bc7fb33a36bb763d2a6e646c669317a8d1e6677c29146cf201521fbd71d2f1fe44021839c81604a89803fcc798226b61b0e60013f6a21903704b5c233aa81ecfc637b4d7c9deb47459d9f1732438d750c4003a1b58038767621c485e281532123c372b1b62850bd036159d80c70cdc83a3e1beeb7ab45aecc5788fcb1d12aa89adcbda34c9912c6b788510d55f62f0d30d56448eae792a38340117895774876881071d2e74d6a1c5172b47ee5cdc8134a4df8471bcb30c1194b00b0ede26e3369f617e5d20cbee3a1e69362d935de073d4558ea957c5b77b80ca5c19776e2f28ef6c2ceb449e686722cdcb9ad46248d2b2a6e522e38e00e8914d2fc86bc4bb9bf9af4a079e196106cc139be2c5a88dad9ad9d7ea33767ab4e5e361ce3269e565ed170a1a9839ffbab0bed78cc31cb25c74462b3c5b073b3b0bf11f4b4025bb47fbe4e5f7b77cfb2cff32a7e13972785ab5d6d87aa54358afc4d918e5c7e9c755c3da5cb1994a64129cd02456982acd2812aa5c3464a0321cbe55456af8c2572e77154676b3cbc28d9b095e51a8f50d09a3ba3ff97e467d21969469ad1df3ed70339cfe668114e674f00ffda70eff77b1dc7af6f94b0340d206a4a44d67c65d30105db262d6b0cd42ae43732d75e08130a8a5a7edada9c73e2ca4748c6d9f1c15653aadc88e2ea035608fdc3ba6a2f5933784f047872e6d8f93c3842ec02ec8230ffc7fff1ff79d6c787b2da05285f0d832d1a09f4000d0a5e1c769177b9cf5bfd6dc04553d9a50aa0d64b130bd4e891614757d63e483dab57c86b85e84a0976747552bf6e702eec87e8e254f428eb363baa5b67dccbd9a0b6585acaad9e5c8599ffc92c4ae85f89f843780c08d576c35abec629bec4dafbc4517becd669a6c1e122fff1094e827b1a0c7444ebd497bac43c8086abe903497eacc9849fce4014e3cccd82b387dce17a6c0dd787a80eb9c3a2bcc1dd2c34f0e10895c08ef903e6103d400f900364d086e8a6c73f482bc9884d52c0805b46303039dc305f3b4b288c9ea796580b58833257f41316e1f22750e0376511d0475d07c8b14324d7eaf47fbf67bd18ee5fdf8dfa631a108143ea3deeda81c50e4a76e2999e35632a4a7f70b60890c6806bad0d27e0bfb451295c2b1a64b217adafbe81e73267019551127e0a60157ab14ee2a199926cc464903fa947b0641ab6a799f80a37539a334c7b33d823574d1d5e0b88cf6f0a7ecd68f10e5873895fc8a57ed63e1deab34c3b29dacbdec5cb662afe8e8d97d88b2778c82f1ca45392905db3a285d1f5b9b1d101f750b572f68f45f5ce558595f645240f6e96a3ae31c1667bb09c31a5263735fd2d38f1eecede6ace2f4056df45e15c5ec4ed3cdfb2ee8e5117859dea300e802d3abb2021843c5e184ca6703c4fc052395a802887971200f09e399b04786b1f0fc97cdb3ffeb6310a194df55adcc5cd54afd6797240aee37dfbc557f2307f928221eecf3e242c58315117b35493d90e00f0391ce1f3f2f5a723614d6d4e8b533d26865d0fd713759c85804da0b9502b679a2d6c1aad7c23f2f6e60db60ca58b1d0218da44d6b7279d6ce63afd9510c64a125594942e8dc8b2b1ab8a6609385e1ab6e2265341934450896caa18e1c5e32df25c9c89303aaca66aa6a05c832fc085e51557f8b6c23520ff61d392a7ee8b97337a6964a343e008bc7de88f34a8975562dc88df8a28a6727c476806c013deb204421dc03fb38c8ce8861a163f69bee1639e4055803791934d2824c37859a69cdbced273ebc2a29af9be35c3e999d2ce5997528e43d2249737eae85d4e192931a81f9b4eb8ce6db3a932ecd7fb022c34582a094db254b36df044d2663eb9b8eb75183c8e5525641bc71071a1a90a74d1e2189566394d4d03cf7723ac0e74153a515850c0a410d763161f31b6f72ac0862f43e5f0ad363e7615605d6226a90c5e20357a0db7af48fad0fcac40e7abb0358660b12139700a9000f53505509abbda3909fa686aec81f9348863c1edd7bc0d1009eb7f8f8998ad132e2b0e42daee99f39c97ecb92fb275ff9cc58d755adefb34ef37b0f3e6809dcd918e55741c3e043330417844ece812ba0d6a653441ef5849e30bbd91d5e6d67fe2dfe13b33fe9cdeea7652bd3c685f4c66a626098073e0024d9bdce6be8db335d2730a503377ef9e4ea0ce604b6c79b055f3a337e1e9b1cc10b582d2562e5ac9304e9652962fa3bde199b0ec60858363a484f737acac43388d4f2e8a2d0cab7a35b448167c3fcd6ac331cb283479d66660a12419cdaaba913dec4a579ec58297ee24c517978395a79f8134f81b03c6a4b46b57d7618630421913cd9e8672962b10d0bf2a2c3e6943338cb414383a7dfc40b11bacd0373a5b5699722de0a66d5915cc5fcb7271d6ad1ddb0733360216454c5991e101c8a4ee325644d625cc48b0ae13b57784b5a19ba522b140b7bab305eacdb241a50b5871b216b053b02953568785cb8690e037d57762777366c6967b5b9adb6acb8018674a70d1b0151367182bce1a82155164a315942f56520dbd670fbd4266c1ac9aef5a28b1094df3d2262581ba59345df13b2acbcf8d9925fa77bfb2a32bcf71fc323b8d9ff289725a10f13f2cb27d70064a4e19b83e9833ce4ff897e121261dff3605cb3561cf7d645ee6e09bfa0436a8cb4a898a92296a5c1737f1d8d0ea8607d0f1331537cf7bfdea3b2b2c733663debda471f308a9d4b92c04bafd47e8e812a337d0a5d521be076ce2ffec2ecac038525ce7056e7d825a71aaa84c2abc32812d88db70d398a9a592107a7cb1f11e6bb1a71579316e745c49a8e2641ca88e8f146599049fa3c8f290c468778e5847d484275001ea69e82002f504aff11ea95b7f56320dc5c50da0daa2e0e9a79e261d4d74d0dd3a8736b0d1245a661556a8c39a1fb625a853dbc53358db4738f77a4a6b13bb67bfff40c09c898d85c6fee3712968aaa5f32e06f19d802903e2e821ca3b6aba06c944d81fe9e1013cde151a30c5a9b3fd29a48392b390e22b7eb365be46408b2b3c67847b3cdc55ddb6d36aca99a01cc892ef8b643ec25eb43dd1aea2bfe49dd08b996fce45b9302cd89a669a0fe7ffbc145763f4047456c67f91fec41f66319d9d81b72436698e078dd54a9994578884b2b4d2e08e8f61315484c4526ff22462ac2ccaf23f6056be9df16044f8669ed132e40bdc307aa6e680274e8aebf45abcfa686d1b3b2ff9512ec5925c879945ff2b882fca61ae414a382a6b7d2daaeed03f178f03cca41323b065c55e0b3a8fdc38ff02c8c537903b906ce25b78feb408fd286ab102d9325a4431776eea8ff60f1a9c165a0f5015ad3026c9fd77db35e1246357351a85d33845d65ae1af4f603c013011a339744ef38698269548cb92151adb3eb9ee3d49a028a7c312c08bda7b9d8633b3ed22ccac4d556f8c68bec45976aed5d4269d540621615ffbb69deb9c56c065f7d8676728e4a350bdbc102021d3d71d0afcc4e9e8ae3db00527055ca4d8d0434373a179162aaec9fb2f938707eedb4095ef131f60107e11f3f57208f24831c4771ebc23edb54f3bc3ff2924d24a039fc0da5a223b3e6e86073933fd26fd8e1bdb8652dd8ae8182c45d6562539f8792f1028e3b4e06494e305261b4c82b09b4d9fa822e44287a54738df6056811c6a5c84a29ba27ffa2c987f513d6d912cf7ea99290fd2d764347705e368a16027ff88cae1d2e58846cae3d412088ba066261c7bb4fb56830eee5d7d9a872aafd8fb3508a794b30be37d7fc760edd80cd1a7cc73f56ff2e3851cf20f8cafd097a04b6db1692ee724cfd957e46170c53e31084dbb98eeadfe40f77754b6861125feb1c60a5e0f65494188fb5d054d46a07889d6ed1f6c01f044bb25b061b26ab8713ec032ead5b147e17e40e613cc92542e1232acdb2685c7af2f5b5713ac6d655eb8bfa4a01a7c9ef5537d08a0e8fecbb8fbc5999edb6af5faa21003da6b9d80998937eccc43d95ee245c0c3b39aae0ac244ff678dbac548323c7a9705a16a4d800038b0937a112511980f7444366de7d90d50ea3eaf8cd2b65529d5cc61c5c5323c5a88fbe2568d1a8108a2fb2ae3f187c450665a8342954099eb98d41c0eacc02a132f943b63717f93d633059f95197c95a98866e6b71eb8e4e07405ad822c59e5a216e3fde0fedbc9668fd48bf6640e0c469e4078571e59639a08bf1aaabd5c6b0e40234ab221f6e670335bba812b834e20297c200cb254c0909e6f36aad9a42087c16f5e6c533c34ec729cb3b453c2dd6e430c08d16b755df5ec909641e58c5c720beff34014ee2651b8ea9961ad7c273268cc388d2bfb7376743834eaf0ee281d6ae69c01226f1d8fde012836110c6eb875100e39d391166127111f32589a57524928a59cec28aa00209c93375b0e7d38e11f87add837d17e14af8120337359381f22b44204987ad3923438ea62c6ff6c8953a0413c688cef53a6cc98744afc18446c054b9828bd45f3a5de2842b980162e64b088d7be8fb2aa23227111e1a80eb5e2f49cc92b38201005d4246208c0d5cff5f53f0f8120558dd7a660bea362ab325b23c87ff104aca3a123a043ddb07681183b87dfd753dd9c14434429f824c2ece5ab03a6a5c5e267b551f610f17d0a00071e9c9ce480da80e8f5b365b5277430ba93fedbc830a1c2f328580b326f36b1a0a642934db2477c43576ea6202b85e7a92adc27fc0d6c5446d614a254e20f5ece0a25339482275033bee6d8dbd09c1ca029705a7224093ef4db7d1be605e581f5415991ade501eaa6dacd7c077f5ec19926c94ee3052a2c598f1c144d8c5bcee01d0c1f893d0401add22a77a8d9b10473117eea0e85168b122f599378eba5fb0c9093e57567c40f07bab8d315678a32045f0b439b2a452a4d48818b6fb14d2b274e7948892756bd32729b82e2feeb4da7c81d78d8e952dc6cdcbaa9e739a57c246d446b616193dad11e34a6d050dc2f35eb84680d4c654352e12d3d4bee141d0c39d63b21e398af5f3581f07d4abe198b9a38677a08b66da4598267edd35b145b8001c244e3c68a11f9cb811f376764d9d9e60cca7cc406d3213944fa3c67484499e22cd2a3b60707eb0f2865878cbcc511478d786ce30d9da05a93a42b9d4539eda5b62d0ab8f52b1cf21f66a1ab6d989834f8497e287db258deecae4018a852358118f2d5a547ddea26ac95c2b1064d96356a43de60c546416289a4d89b1467649b4d4cb6e836e24ec28ce14e96b0b08e9e4636a01672e298065977d6a232493f5fdbb25adc0e2f2c0d29638d3bd64b6e29d14cec313edf61e3f9303e5e597a455243e8367149b234e4403b291f89f3afe542084656070fb3ba3440f2c1c2756122aab1a801a2732b97ccc38308b2019af123592efe128960b1ec70c303b52bd326faf6f9d048ec040b22d4202b11a999cf3c7cb458ffb8fd0b076bd8b817589fe3405eb57f0bbcebca2ad43299962e7cee0e6c113b4e28a17febbe6b0bd157f81f64b947e8365031c331bcfe84e112d50f242a8e61c7c4fb0d60c92f0472fd323536f0dbc7cc8d0a3d4930f1ed40305f061998413235849e776b5789df2ec4eecdfc8c91cf179df1ea7d8a71127c848f4c77d760ab88e237ef2d365433d3c860e7ae552b24d1265424ffb66afa032e815751ba15b9f6d62ddb87f42d692837acc64d7e42680d2d0a5a4cb8371d180a7f77e14c1ea34b4ecb03d1909a705da19e0e199f2c30eb9c8cbc3b7c1d2bfa9276d07a92b1162dca12cf0002cdc5df50c1428c9f61433300a89d90428c9b821dcde21543babcaf1f8700d9f832534e2bd189660284f769459302254e3e8583ed71b6bd653c0e72e22f3ffc202a6fa180cc6e65032e0f01161ae7bee54a77fb0bdfcc9e109086c3df3ca6c6464194338a6a403bf478eca8370087baa0dd28d008820278eb233b9c3eda657a72fbe86391a0ce83fae948552016c5bd52ecc117e8423b1bb4f598a98ac74634d67de60daf4590c66dbb37c60636ae4c3165a9e5bdb6f8286cec8ebe68515d274b0792528b4a9b79451458275b4d67c5a5d1075e42032418b9d10e3eb71084557bcd91d2a4adbe1c815f3fffc187f177b1f3c663bb2847f9aacb7d9a25a0425f6bdb3ba09be63658558fc0e9649b952d08bd83515982e77160df51b2f05511e47a65f548bbd4ebb63166a5d2d0edf50ae5d904dc9bea8a4052b55e1de642ea16489d7a0daff15f3556a6963dcb18f4f181ccb78deebe648a8a469c77f9fbe48fef62f4844b8755febf68ce279a3ec7b80d7774d62de130164896491b810ddf6cee34ab967d223e1e3d12cd6c61a62caeec7337d0c8aca10401b1e49ea257a02cd64bc595a74e6b52552b74443fc100ba67240db13ca5f0c8f58ab00636858ea7b226d99724aee616181257ad7c404eb7274b408fc51cda307a88d64b7c37e96f5351c6f1eb238c0a531acc2efa704b1054cedeee23c602fee70ac150c713a3923bd20a39baf49cef646adf23423cc55be389edf162d322de98b44d4e6f89741d466473ec85971528d5d1ed06c13f11f0ebac55f2af703ad1084548502a6333661d2e6af71634224b3ab71c86485f943da216a91678fa50810e5a4a57ce9975e02455e6f8a635709f4dfa30e2636a1f35a56b202b806a591c421aab53a04d319312614d30afab6cb6f71eb33920b506ea26ae1d11be4e7f3d31289c46bdc1ca226b09afcdd28a137733c25b2a068286113dfecaee700f280e09b43b999f32912c8f4aaa1e098927ad70a69da4b5b66b307f3a269557e8932c8d47dafa7a28b012db126c442233980a458d96cc8e79e53cc3311208103aa984540a40a1634b186f75adde561da023e855126d7601ac6fbd54ea6593fed870465e51bfb225752a8fd1cabcd696af4836780fb4fd3397c7a627bb36f158e0e0a75083cdc499409524d68ea7515770fd23a4b06925bf1cb77a35e0a56385c2336bc8c0aec183b3ba1e2c628e747217bdc1bcb7c34f4d6c7ddf06874cf381b5b505a6e8aa34049e61c7afc4fee509558d5cce74b3de69c80afa7aa8fb0c9d9bb225139ae09e9f5297eb52f7c059a7b3b520ac0e827ca1bd5b37dbdfaf7ff44a0d8670bafc3718315be2320c62a5e0718042c6d5537866ddc3ba1de513d22ddd414936ec0203704938a2b00f23a489cf3025ecdf36bc3ca8f3ee7b738cba4909b68ed6b66e2edb5b9407c86968be53b820ae09531dd82ff4c0279c8a7bef81a12e1b8dc5efd1ad6d6b49d1c1ef4dc2f29ceaf69d23e2212eb99742dded46e39ad6db787ee9c21f6c452f7bab86216545ba96fd13316bd7563ef25d8515e91014dd823060f72c34089ecf0747ff7b0c67c203547ebf215950fd45a5e6f7c222d3e7d16b2b8f949ab149c836c39de657e63c88f2743f99a2a027d2bad33c59909c9fab7ba439d7338f513adeb936c3c7097eb462e3ee6383531127ed5644dabdfa654795c2d29b58d13414230049c3632191550710da62b49d728bb9fd14fe97d074ce0ca7211c49a520dfe6f13ac1e469b9a51a049f3b061a4df39360fa4c1d219270475625336e22ff2d44686da8c6e6094279df22062b4f02c9228ed78ab0c9429416ad2759c7f4d3ca676453ede0c257a064e8d94341d7ee09157b471610aa4681dc5f46e740a6099d4983c2ea017350855fff08911255d2b1dfbce82042ef892c4e88b25980df22762e456cc5a216aa1b7afc766aea1323032509e4011afc15cbdc9fa1574052a541ea9aa2bb03a497110a9631cec1ed9666ae279822c1ddccf7f0630c0509f559d433925d76a62ff50ccc486683182d569b18ae4c4f8ab2aceaf15a163879400046318914e8129abe6a6f6c816a031071c89fb184620f186a808630987800f40cc381ea73f10856861922a407f5fe66fe93bf69cae59932e2847ca60881857759616b9725679e5bc2875301a292aca4c48be9a2e8bf471ede20e8bec29185d1aa0b993efd2f2eec6749b002f2355e0b9e1731524125b9466a04257b2908abccb43eeb9c79e2a182b3e0c9b5c0007d4fdf2d7c7eedc5b2f714c1b0563d96fec8bff26e033c8a20971e6b40474bf8603d2285b51f1c3c48f9e6268799adf8c45d696f8e08fcaf6f5e41a6e45eccb4918987477058230373e19c2474e5a3e3d89202edc25f8a3ef3cf06fdf5a7925fd00a69bd4c511353584d1d8925284345d049609f61e71c73bb914c4dc21bb7e94bfe5c039ebcb0ac69efade5563077482d4e0788100afe2f2d631bc0eea47142285209e95b60b9f8552e88dc525d0e1868b7b95165fed2990aa5956f0e58e068a5340e39556303057ad18c38200fab9d2a91a9821602231ba7c2a324f4c0d4b54a61fd09bf6cbba20f6c3794fd4b9989d77d47ee33da5431d1c018e27a35ac655542e178edc1cef89e0ff3fe59ac944da8c064ec5a7df9120835e4c4fee39332a4304a81873249626ed74994db5326c889a4ddbc6d626e05c2e1b628c024daf2d6e4c89edd48b577ca48df3184ba66ee9a11d3a191007f444f486261cb9cdf01ec67b467c78760bb657030ea4891b1fd2320d4a609897a4b9ace835134f2824703102b1d6ca0e3067984fd312d76e41ec624714f1f70134b4e7f8a7ce4b6e0f692acc71e90e8f0c14dc4a1cc36d1fe09491abc42b761ed9694f1c6cd992ac78a6ef1d7682a7d8849c5ce28bb2437a067d61115304f171441b0a84381cece033544e196d48be670b7af036800b29731600c249688eb3a81d3579cc37a80bb5889fa304339208b50881c1ce26fb300ac0197b794bf3e01e82c46eb887dbbba916a556117bf74d3b31d569e7e1265bb57a27b0a3edd6f2dbd78fcb42073bf994929acff19ce6eebbca2b2a84ab0e5ced80a870ab080ab43572096756705fcc956e83bc9c3f3d2630454af0bcf1e068a5c63f05e273083fc7a95eaf2994894ffc1b2d25d010dc881b6a0da2f22e39a540af89b5beb4000a968558de9abc90f95c6ad901a9668a31bab69f1dee89557b3c0ba2a6e219f0a89c4f8f578303c3684d10c036767746f291efd82f2605c42c03c05fcf2075f7e4c57d0dd53d4f8aefbf300d21ffc070d888672f007cd6c119ff10ff813ec982d245a13a7d9b548584f77d6f8e5e78834d08968535faf7c2aa779e36528c1817cd47e0ecf5423223282911de637e61459fb99041cc2fb15a526249821e359c490cdb65d717add3d9854f1cc5e39a2e61e2bc059341eca67ee4fc0d20a20451921301f2db0712ba68c74169b708e01aaa70b8ca4bd0fb8445b17770db829eeb4a1f9658c4781282cb49b1b18aabc10b1d7c30f43bf9b6a9af5adb48f9cf70dc7e0e8ac35fbd9f9656e27e8b37e36e0356407341bd7799fb6dde48a420b2bb52955a50ff5b18583593892e829b3a89d8640ccade7bca9cfcc2c44384b81f83be063f49527951218fde128465afafe510ce1d5fbef78b7d3de3367ee74ef60056ce15254ad48815474de4d898641fb04c5e954b201a80fe849caebd480fee2da415d6b2cde4da6116489950f93650757f03c7dee00036f302fce77c4f0b90b7bcefb50392fa16af3739298f8b449f09dc9f9f7a10f4e9a96eee4d8fac31f310602e2e59b6adf30f7d5c85a769e5ef822630848368fd5bbc59e34e6c2ad33070f804e793d956d0bbe1d32305009397f0abb0829e76e2af005b62cb62bdff3e695d7bf3e1eff71fa7ad8e42fc4cc2dab4bd19dd8bd498fac3a0acad2fad2dc79f2754d07a2a50631933f61a9172e0119d5348258e03d2576090e9dface99738ff96357fe618df056d88b3807d105e7baea2d1eca8d8f3eebe9504161288d933a15089d162c63ceec7d9ee3f2f7c063041fd81164d7fd78b60525f58a84b14f4d6083cc59238e93a7b230026c8df9c003019311b8a68d32e54176a0d453885b7a3c2b3b6bbcad7f8be822565eed164c5ca900c5229667779905b20207e98a93c1c49193e174762f8520e2ee9a5a396a4246021fc296b265a4e219983f622d2560840b4e2356c4cdf12fe5145e675b60120189320102a9c87e041ae751a7999016663c30c56b19e643d8a1bbd4a6b9f1f9f1a65a472db36eeddeaa5374577e5ced88dfc81d61930942b332bb6ad06ee41edc52f43dcaeb85d37b0bbf3156f83cd4909e9b7495ec629df995ee871d15163c71a83eea07d039e2777ec0d1ff4af7757ff1f255d2c9f9eb775ff35edc473b13c9ddf7fec336e4fc55b440a224beadc2760f04949470bf26cdfe157b537037bfc5b36a13f933375df1304832c53248d28c172718adc5971c224cecfa805eba979a201c65f97d9716b56037d095405eb726bea3242ab9ca7fc3dede2a7f8e7ec08da2e95c9ba44dd2ee7734665bc4070bca496bdb592c85c5f272f0a416cdd7c83c54382189abe59bb11741159792943c3fc3db66effa5851ee03917a2d0ebbff227a881ae8d193f5dfcbc8e34af21bf08f79aeb349a4ba00c73d6dcf4c476f489ebff714682f187a7a3a0d422e0e9defe0e18eb8c51efef976f19d383f5bdc20a778fbefc2d6a9fcd40b155211f6dfc93586408ca22aafee48010e04a90703916418d84e547845d8e7716070795c91e431f8b6d6e030e770305882a20b1babdd23afc63ca1d124aa77b6e737e332da1f7fe3d1f3f9f7c4d3e3b981f77d94cb3abae7e08e28c1dea1641b7a7caf613fe4c1609f5de26784bb4fc2b5eb41b7a3890c9e855dd5bb291cb00133b18bf07419da86174751c497850974236c3cf1b59807f476344679005b88cd8f8c23e25b273518af8158760a3d90220a435af98c7311d038f4feb660820848d153e598ea11d2e3c4d7274e5a1e617c1ba41f1000eef0b71b0ce6a1c76361d0ee750c49f823a3c94ce68def559168d8f130b18f430b47994980f4caea4c05b6a6bcc9e91c5d5f671002d228394b1aea150c8101399ecba0a1008d659d23d2ebfb17ab05cff30d9424fcc3d2c8129f529135b0f4e24a616b9ede444b3928bfec52062ee16247057a8975d9539bb25ae496e0a70297fd23db869caff0fa44ac436faa84a9eefd2a3237469425255d7b8f22c6148dc822e14ed83da44ab0803c132a2c1af4b614c7dbfb27ed0d4699eab8016ad606497d99a3067d7c3a1ba780fe49c3e241b964a8cb00258202044d1f82d6d0a268ab66b82f62a1dd5a8ac3dff47a959aeb5bb70a18772dd0628ad2fe6b24a9acb76d3bb15b0907a89bb542aa690ce357250cd7b05ea97fc303da4f47713160baa2226106cb9d8acac57886a2a0eedf34c4a11e282585b78bb5e5a6bbb95258d37483e79f3eb0c6f8c7bb2fd7da2ab5c7e73c44a4fd52187996cd4128dd338126860fd61821067507345d69529291f53c814241c4a3de07d46d8becbfc62d622a0865a3fb3c8225fcf6eb6c906458543c9fefcb55c4009cd2db4aa879ba4164c103a5633b06e4f0376c111d52ca2df5b714be7cfc4f0fe307abc67373b34e3358d2c4e7a915e48223d2ca6d800596eb956c58203c7458314ba512aaf3ff3d537d9aadc36b2b51ed3de5cf8bf7ff13d776d68d8475ee85f2ee2bf512eeda5254d178cd1aa7b5950fccb844674c1bd4b061901a84b30e4824796ffe02686c402e85171bd651acf2fb0429f660057308979f719986423eab608600e189aa1bc181f8451594c842200e5281c5aaaffde4ad0244d3141466bee265ec2c63c199a9d49595ecb608fea95c11caf0ea56611e9e72a0e3d92bb18dd74378c70dc8f136308e09095e9e112279088d57a74f581b4c48a066350d3532da0b54820bd86947c0496888b904c9b567df4cc666f302cdb0061dbb634fcbc4cff8116fa6a0380f6326c996ac03abd6ad51fe3f721e4b83c62211d685453c7f762a22089cb729c02d7e44a69f7e995955e3a9c8182f53338bac2d9eea59880cf0c35a683c400cfb70a4f766e1210a7adb42eec382f26400cb980be1dbe7790c1aedbaf156134fd95ad900a151859d49088ca96007e55d980247b9a956fb6eeacef4b6920095e9b94a779ae63afd6f0c23610a86232453a118379bcd09d56da20a2bad67f6d93213c80ea8e901d6ef5a6d58849d0356c7346c92cf3fa5e0df2e3f9a1435ca5a5a2f05f704893a5f7a2dc994a68e3823045b68b03377fe922ac079dbb37b4003990f5471310396c474f78f3265b114c76603753329cfd124506f1bffcde74badca68c25b915a07d8fc3e8c0327a5ccc98081f60f35862d85c1af358031c4d16df0a3b2bc005fc5bca6aa99c29d824800e678270f428455e4b5c64895e692eddc928435c0a2d9c997a34419d3c4f26f8d7fd0fe3599288e90f7357a45de7f95498c54a7b121a260a032d1584de15aa65f0bfd9040fee10dbcc3ebe5e14a43e271e6818893b955bc2bd5d9cc49a71cfcfaa53b2bd843cc52d47bef6cd8d51a2805b6a7a75089b9ac59a2e93ed90e5e25f4915d205140644f5b04a9bcea63a348da79a482468e0aab48132f9c69b71516b164e5e5d3cc9df84781f9593279d22b369da89727f9bffede55e3c9ea9d1a39e6837968ade9bc505b2cd02da649b8d3fc945301c79f6b4818f0071216a22a1d9352f3d1e139bcc8e80a8400613a1f7615b1c294da9ec45bd2f060d35e47d247aafa75ad14247ddb810838a8891f5e9252607f8780098637bb9c9cda88f6a950a9ee9401e29701b3251be7da04c35cfd0e5a149c7d1a23d65d716646dfe203435013ea082a605fe29e5039063eb10ff6a7342a90282764c0f318600c677eb1c83a458d63697f9ca50c0083b3d8e1bb90b1d59b061a4739228599701aedbb1a04b061850e5047c8963d7bf251e2762cc3bc8b0a1888d5e89e029e318c45ff1a4a6ca41ef69755c376c0ba687042988f80496b6d721047797e42c2900b77d4100f397c4a0724ca51e3ee823943d991899e7978d5dcf0f3c47818fe45ca80bf44b30396ff3932c8c068978db1cdffe8cfee8b7c0200d2d08360764194396998d8a1006c6ae9487dd36f48562b694cd8e542406499773c6997f3c6130c3d908c1f5babb42949e9223ad63a8202ba94fcd32c88295763a2345268bf41ebd9566cee8612111588f0084918ee8db663b9658edf599a004568f2e6c4ebec7b80ac1a7ad333354ebdf2f364ac32d62bfaba77207b395c8d64a7b9bde4e11e4415627e0a4b355aaf8297bfd60e65dd58f891b6299004f54ecdaac9479abf02409b49e2656b0d20dc49dc2bdfdbbc6187ea2171710e67bbd4336cbe030d0a9848ad803180882ae2ba93fd73668382ee8346408f0211b2be6f75cf891ed03fd3ffeb555f12a1a1915aea2f13b2d03c40ed44bd3e04cf7a5a63158d6e4de1cd958b7a1050d5614fbfc066ea14ad318b327575607f11966b7bf9f05a8e74042659d0c3999679a664ce6361cddf6538b977fb4c979126b3140c32676a77eefdeafceadc1798ebbed14dcc0ed5492041a2277e8949ad6a9f568fa9691fc768ea2d2cf83c6f1ce7c6119bfd66ba8466e16f2ed24fa98d0ec515e7294ea93065175de103ec3616b71828db76074d758d94841b7c9c2c4b4284c7c3df4625e8863495fe6c99b6ebe19b38fc5d005f6b2856421137cc1ec98c612e682212fd6c400b2fe085a1d8f59c80ed9a001c05fc40a921369f41c1ad1e2ad76575e08edad1e9508599bae542a25379e020e9187059fdbe16dc7d3d68b3ce22062bce76e2b0e9b4e3d57b093da1bdac3caee04887f25417b4c2d4e16dd54582d5994f7ea76b4c19622c2f481abb274c78f063c19c7ba03136924c7fa9b3509dfbac9ade1a5dc44d7de93eea98811ea456ba9086aebb47eff387e405ec86018223d24fe86e21ef13b24d81ad394c41f1b97d42013cee035489f316d4a4ab3495df4d66486fede3bde437ca3b54dac4afffae0af88f54d1eb538800ca192b6c46be26fa5ddcfa4de2ace14bb1ac7f766770a368c508fe1186a1f87c1b2b4d2e4b70aa37e3f3cae0bb9d1b59cf3e11c5b6b5f1746f7a254b04b280975370e2a06fcc2173f73d7821c44c4e5b56bb0c7510f0e72e685ed3d627c9878b04254e290146f37dd922b8ee076c893bcba1c54aa0ce13d10cba1ab982c2b94d714d7db26390dfc72be927dc815cc6f62781462a6f651529d6002be79e13cf5c357e41549608c60282f420b1fc77c1913089e24e8d96642caebf863fbf31f14df75b08a3a5aa7f601ff5e5d661fe3f08233a1704418ceb0ec9115d9418f5b627fd689bc0f9e2e007dcb3d2b5d1c9c1dc30b3db2f029929ad862fb4f99a1a313f4640015a03b721e4e9aec3838e757a6c2c0d12615fc669ea71d2a0970d770875fcb4ce16a2d517cc3ac6334a9d46c703f9915bdc0a44c1426f2b818561ac055c6fa0f585f9690e3f09ff284d9bdf4d0ea9b7ea31c4fda62ac62b8978a1c4c8b416aefd272e9a23861ae60e2a7bf42522e015e3268090793416cd301cb7c715963c6f4a0ba7600b58288283e584fce16b3a729fe518862d553487ea4da945f3ce8a0fe734ee4c73a818f0a9e0040cd2c804102e94cb14e8737f0236ef07a851d600a9ab29eefc47cae39b6adc526f7b30fd3aa4924c97e92521c5c2d298a5be5695a6202292a992fa98f1ebe9678397ad0af2472b1e4d3e8461d251bb7a3a46851399db34d408180808f841f1000395beaeb5bd712e05f981066ab44af99352583bca27a96a592af2dafbd44d3a4718e00dadc516477d918c2441d0a1d39b7f7edbe596cb1184d500ac03b77eecf4125458615f1717d33e70db22f955c34e1c7045d13d716d4bd2a526fa3c9932cb3255cb5a1e0c9d6242ada3fc79e7d3fa099092ed0a15cbaf4845a8fdc9a7906bba554d1aa19b10712d71dffc0f9d16bf2156619d92a7bf73d4cdde37348e87cc55d1068ce3efd6f416297de99d66c3d9fa5668457e722830064f1a638f329fe80f570fe8363c674a995f6b90d828f1efb3fc786a61639ce37540899f8ce3d199497db544f573014bdd802afaa13329da5bf97278d28868926681b0e8ad61bd8726de316067e8bc46e972b7896d110b588e4078f5276d5e878a559ff324a234405379528a03ec527063a388cb1b28879aa280e205daadba8ccf7e4de50c429c9bb0deb1b25a39a11e19ccf29095c3761e48395172210a6973227bcdc6341b24ec08afa4c459422a854acdf2e410e82a3d263627b27cba16aff49a5c9d679ca653493ebac114d53dd45548fcf1c615c626ca49e53e280bdd047210d12e2970a48e44aa547c49edb875443c625bba39ff28c2a1bdecad74cb20539bd25118273afe70fb34e53e60b8f1a22491a3bae2fb49c69ce632d0701f96ae2e951c3aac07fc98e4c959f5d34de333ab4b6d510843f3f420529a9048397fe90f667da71710af0c6f7dbdaa2a44e7754b5ea169ce82eda526f9811bb9b9e497969d365345f41318d667d34c6ae8a03b1287cb624ba207b417f7a9d1ce656dcbf39b73d247e9b9be2f41b4810483fab3c64cb3e950451fa58eb7fb5654afd755fa34ad62b9a8c22fe79797d2dd327cac4453e90cc7a383cf84c71185ab8f38fc34cd12b6ecdc988fe3f604bf30311395b6cb58a76319eb74b310a25a66e492b12e63ef4509874c3185f40fffcd5c853c75517789ba0d796c3d6f8f87e9b28c651579d1154b460068e2e2c1c77025231c2c76dbef66d03f6fecc0697760efd5ad1280a5e024e42aa5ae71f2265545e0a98133f07143d7ea68770c6682d7147a8aabec3709dab54312a8bd1b78784dd2eed23dd96cfa4bc1f1c6cb782f4bc0d435c7a39f3aeb7b5c4cbb0255ddf0ff1ed9fff2f424daca50ae12ba06d50b1dfaf904fa82c3cd8710058cc1d72ab058829b8d744e390d0fc24978d7ca95e8d736793ba70a639e8f1168a23f67eca301e6efc6ed13c83a32f02ced8357e0f17170680c35474497e74123f5e19d75287e056b6be6b90482db16b25f84b7fda0e337ce547db2aa66008704336a6fb4e50147818d09777e498e0111708cf6ae1b5f88fa4d3fae5d6a25b8f438c8326bae8b0e2a6a8eb507521cf064cf19fd0adefb2c479e85810e7b4809f4fddeaa8dfa8f549aa119642997902b197d1ac49575a312f34776f72d09bb95dcabd8274709766e86e459b24f17a41b4ab70daecec47951dc7aea6adb0ec37bee39bcc05a5829c2088145dad31e869017b1d8fd348e538d16ba5d1bf823c032859e82803e30cf113eefea8e6492c2748410a45fb52343ae9c4787618826f937448d46bc24cdd54e4344a086ff5ce49c6816f913d63794a5d4fba405515863a339428b99402bab02773b1b21584a6db3b55619e9e9f11e5ec74b44d6d980c3ee593c95dab51ad97916132ac03e4ea1ce0480edbca22f14a054957fdc6c6ecd7b8a98821e426aa82032679235ab71556cce773d158f5b3604ade37de962f826bf49348c63bb2705c242802646037453ef2b3b2f6a173024d0d0fec6cdfc7f688e3cc8ac527136d927d983a93fc55eb37345b72b41f501c03b6491cd51e8b21a85aaeda4e361448dca805febf10aacd61553fcb91390ad79c54aa4cbc9eb8bafca401735eefaebbccaca8be31e1486821a194859c6641164e0573b6986029312e7bb6ff30d2437701a0c32b998fadb265567dbec0c1ce520c9322d877cd58278de5705c26a1bc40d0a5b008919ca0d9985927d8d405ba6620151fd46b402743a67abdfd626c0c1c1507ddf5ac9d70f53450bd1f092dc81a154d2fdd27f2e380b4d51bb5d235b0771a86e9ad005abefdc60c1e90e2daaf52d78197ba11197d3e885c3a0b483c2b5cf153e13ce55853c56ac24d3b35fe2e435568d5948ac880c40ff1a587ddd4c00faed42f184b0c19c52f1a54ffd8975ca4ab9c79d48cf730ab93ffab02002b717ac18c9a736acc60e6176fc44fe8ea4d11477befb571799de9c196902b646d780431f9fc5aac381a11b4db6a9abe9e8b03d35a7ef221c93ca15657a8ab184f23a15816432582fefe3252b6046800ea40a24adbd30a73d14f0bc6f4aabadfc03524d268b8dcff10edbd59f6f2ca19e2f6e7fb8cac28d863518e0e22e1aa10f4e87c793cedb1493872a5c41e13e38bcd5060b341a2b46b1da17e6d52f33246e0658685c808972195e206c42ffeeca5cf7379abdbb6baa8f909a970c3fb6b6474fb6f9b0810563a555cdd44e649804c4934d55f8b4e627a002f5b28ae1f1ebbb6748da9c2f7548ec0c5030111ea4081a1a90b8fd9fc1503cab32da2ce19d605b7a856d23347182d04620b2434927902d299312fc61b9831a92e83963e280087204a69d86971ee87dc6f5632e17ea2991bc5a5541e31552a8eaa335a4c0eab3ca080859fa1327c2cf731d3e94e208949a09ccaa326ca62a43355c8f625235b52207185783a59a2fdb3fe96b8b95fd4ab88cc6bc300c99b32630007cb664f3e4938c87bfd5d918b32024c92ce3705251fefc1b3a7a36e209c97d15b436f7481a11b3a719e403d2dea521190dfaf72f440315f8a430e514d305b6200b693173bc2c29d508423e3a9144767baca654e2013ba16c545ef2f2db114cda42ce8526df7a82d65c5adc4ad06994816a89469a2c9de4b0ecb61987ded2839ba66129ea1d3a0a75160053c00c678b1471b525c4405db9dec1e2ed0100fe031f7907fc1dff5514ddb97711cab1db69e278e452290616176529bdcc1e0f2009a98fe17c7518db1ce301c720302c5779d4062077f2892cdf19a444f176dada3ea6e5d9e1977ee423574666aa9fde88cf01ffc396e8283b9575961df91b8af2a240187f7d1957dbeb1d0eac772f3307940ff59fd04094f2a2900d22d1224516d15a9948b9c3fbd4a5567a59a5375416fbdb8905505771e601ed69c486b062889118227d417e771ec689024d3e07d44febb13a91c55b211a43cb2e07af96e49b7e099abf982312cc77eb335893086137b936cc411b5d102c86d637bd4f955ef9de47783e72318026ce0af4cc531067e0532fd13fe53c058461c4f85cab9fe06d9e8986a6b41d9a19b3b81f0d221a6c3ed82924cb0640af2a4d9b1cb7de8db84c5718b71f4031c650417f90fb088d9e77f07ba3c69a0f64799b1f839d98ae0b4a69e5c9c377608d069e2dcf92f9ee246ecae169b0e80905512c7c299d32aa4ed0f136f2caddd27113bbe58a0694a084909a0f191f74d8e9e3a6847561ab8e61fbfddaaeb1096ee00e9298596aae4f5ba9220bf0cca0c8e04c0b7535657759cce7833e531c37da690746a2c9487d597ad06ab65bd0517cdd67696a416b7169c02f5ae3426ca0a5593140ae944432fbaad2afe59d42bcd3c85143af0748627daef31ddd984cbd134b4ef4af2ff70b5fa93751c944ef75723fe19b7a27949ce85e5fee17be526fa29289deebe47ec237f54e2839d1bdbedc2f7ca5de442513bdd7c9fd846fea9d5072a27b7db95ff84abd894a267aaf937b219b0c7a199084f5b8ce77241f418f4f11d18ef55ccfbfcdc5920675f567fcf73a6620611cdeab73416fb534633e34a37bedfa1f0de881986413548122aae9c73e45f3c9d04067c5901ca1cafae03ad34d7a68a0db02d7cb760bd1ffeb087d4c1b315a0cbd97e1e145694fdaa691e400c6d0006fc2e81899b3af38389d7de4b146b814db627ea88c6c2b2507ff7be6a88ce238ddd58a7c8bbb118b8df03d4071a8535a8de392a90231d5309db3d986fdb0361f2bfa162d3b2d932556e21070cd2954ab0b30cd39b11973e2dbd0cd02614dff643bdfa116953bf161352b64b64d147483e5d9964fe0b503d91e7717e10b89bebf2319be34d596e01438c4dc1f40a9b04e7baafd95f19ebd3a18ce3c516e2d38886a9bff4d595183de72477515d3e3b9a8c75eed0fc6a626d24804c44698d5362757bc91c017431c0f560a51498157b47b516e72ebe04fe87998bd17073de42990ea3f0a19fa630d65e3c10067e02987721d7e592a84022136f594f0a60295c517acee58c639a2b0330c656d99943d5ecfc71ed455207c4dfa85f4600aa7c5c2f2d9711e292e9f7bd79b48117db101fa5f5bd4a052e2744132beeffcda5672fe543bc4d36bd929d686e0a87a5fd7bcb2ee454952dee31bb5c69f9cc869b7333ac4b1da9c113857c758cd6bd89d14a50294f4b43846cf87b51c4175a0838183042e1fd962b2acd0a76aae22dc6ca694c88c3c0656dc58f34dbb0f4c3d764e68338c0f9f0e48fec71b6bedad9868e8bc97db3c434903b6a9824f0a72d5aa8d6603c7f575905622d09689ac625b1ad8b92030f0cfcdf60da8d68d2693e2a5acd90f4dc81c94f83e993c4eee25ce0b0c04b5d2432d7eca7d96ea6b216f9f3a14165ac0bd3dfdc9d9c5bd91188f67c7c3e927467ff84c6064a3f10424e83dd8953a9f8319fc1fc596653115be19ea2808da33f20f5bc2375e9904e69f27067ba72324e3a2ee97c745e237ef4d088890014b2c6d126ee1d2d5d88d9d8fe9616946bd598b1f0f228198dd71e421d000a54346b7764f202db441ff5edcc426457acabf18d3bb666010f734e80b6fe10358abf024744ed73ce6ca20769f552ae06a92fee500a25db2d0f0523bd82ad15e01cbf8cdb65182f99baf6feeb8faffca3722f9c3820fc0c7528031eb10aa743e7b42b3a42e2e98e6a3cc5ef58b9227fa4c91aa5b1a190e6cbcbec7c30d5258f6ef3fec6937f2df8fa1f07fc29b01de49500d25685d1ed4622b1061b14b2a056ac2fac506c04f32bb4115667b5947df7b2bd3f8e8294c34b0363c62c701840dffd8fba7f2416bfb0bc5dd43166d4f55f3f6f048ed59904056c5c39cff7ab4e4f03499c623811291d72ce83cdcc38376bf61e5de0501ad60434143956ba44aa8ba6dad3613aace2a38a9868184e21350df8a5f0fe06bb9b7bd3c16d2af1d46ae698ca926942c8408c245253e3142c09662104108c2d8fbacdb12865acfa8124ff10ca77966a640689552437548ad6aa0e5f6870dcd97c1b0c6eb7343710f5f9d33202d06c671e2d0bcc3bd490713e310b1624e941b8eef5e19b0839a6cc51413870c27c8c481c5a9e11697767a44f3ff4d3881494ca998ff2de6278168b85ac726a6162070bfeb308bfbb667814305f8b90973eb562432d275e8d961763bd67d278d2b012f6b33fbabf833f466acd7ac081027931dbbe3fdbbf299b03ca03109e208a485b8614986eb51c7d568a2a6d4adddd21f879a1690f697c2d2c2dba46e1ad1c37149560c490fced547b8cede50d96a3b7ce300cba972f2fb8395b012ed8e58dedd1a6b215c54ae291a331a1ecc71d97773e8e49d627ab5401604d7e079d029a3097d17027e52dcd234dd4096c847fa88373e4afb310627d7ae057a751c3cde0a698d2544bfccf87bf8a03a86f020aeb6314b0399b126ad05016d5e487b553ab9c2ebf98bf4f5513973d89d4cac3a42f31cadb6752a5f2fec2c89581bbff1e37f05b231f4fb81b66a2b60ca0389be74d0e7c0c020d307bf2eb41f6a8b63570393285bb3d1942256dd157c1609c1721c7931ad52171957edc6ffdc06ce09b2160d328003d5badca7fb532f4c6dffe884f8ac61097bb50c53529a749c8f514f95e0b3f89c32f120dfcfb6b10a01b0f603512ac5c9652ab200570d95845f7c145b0c1bf1e5958a3ff940566ad3d4002b5ab88d5f6bf0f972947eaa67759110cfb89d31b2f82ba84dece58cd51c7412017d972f563bcacc98c37a40e6b27d056eee4ab78b37ba3a4dccdd255ab242532181b2b1b40135e8e4b8139ffb68e48768a26088ba7cb99a2a0f4d6846a119ca24c6e38a5eff999930d16b974048aac7124f81d7d83887da7630f6361872d74a9dc0e9672f6db414bf216098fbb17a6f0b06adb36d13086d8d9f0532ea795666f27ef33a02ecf3bbc411b8e34400302fc738e3e91452022da74d2d0388a12a70581c63a6483a247a3a26c95ece12dc58280034d2af47170284e30fc85f6a8be0d319a0131d26b12d80e8b12947c70b10b9116a252c14407ef87c5900bd41e0b2921ce0f77731172001d2eee8f9f3350752c653574d62d02d8dd2e23837e5dc9915225dc156f875dcc9227639fb72222b86d4cbb87f9e7a8f81441f79bc9c172cd7521a2dac4fa894eeef65e3ab350553038a36e9856bc6cf44b5f78753a388fc42c5b19964c24df4d45fb50c0ac619652732304eb02a67a8bc206ca05ce9bfd6d18e6e32224dfa071dcb38907e732ba6ea4209b555bf9cfdb5222ef6a582811da8bcf8918f0accd8d751c1767a17baae6a8cdc66e9ecd1b08b2db88b7e3fcb094095d7255052f362dd69b04182a046ed27a5ea802219df624bea9f7905123c70b3a218364ed10f0c265bcd4415828a435e2b97a5f55119fe60f1696d003828c71c4b573d1a23db205d37ac331b8fcebd805cd8415af0c168fe70ce781b813bb3e24cf072c2c9729d91674f6d7d24469a94e1d88665079e9af80423cd9126c8076e58ff143e058463a01a057853c74786c81072e9639bc9bed48264bd24501db92b6d2d138053eb0864f6a009673acb8685f23d731c8f0b56f1368ada4c5110406859553b240d98f37224b551aad1673cd81a930a35a66fc928a575a7e298d60e01fa048d552c3a5ca2eeea5cd1b76bf149575b83da05af98347f4b0dcc4b2b86080ea7795460a66199a5459dacd43630b0b0bee12aa23a95745299acf4c21f4e64dd6102b4ced191ecdaf7d9881de45ef40f95713faa17644ebd02d444041e1d44250d5a20ce3a4e3a255e714bad54602555b127149ccc7d8a014233b2e1f55a1c1fed0c02e57b9cdc77e52c830235060314a13a80d039bb03c1496f7514f6a05e979f3069fab846dd2ce27b9d8a678d47ab7db28d10b5b6c9de7befbd03040c210d970e18c8fe9e85835a8d3a9cb1299771b1d7b46f73ce7b694b1abc79ee92064f3a40eb8ffbb81cd46a9b9d441408b3efb7edbe06cfe6379d11dcf711dfa42d653a8ab05aadbcdb783f41cf5badb66df36eb35aad4e2bfcd5db79aaa70e3193d83d768f4f611f3378aa1cef61795abdbbf77677ad720386fadeafeec66d270fdbe4af7618f6ec4098495bc6f4b758d1da755ef771eb86b89cb36d92c31fcf77a4bb7bff5ecd79ffde5c0971f5d4bf56735db7fa50379d859998f0c5be8fb073f067f39be36026b1552a7c837dcce0d9e4a016b4c1ade66ef31fa9e27af4aabb777757d9c5eaceeabeea5e9b973f25ed5daaf21774ce069feee154fe5039a8d518d20e045777a07beedd3dc765285fdae13ce53887671f4f393983671f7bca431e1bb98a632b726f797ceae7e9dfcaae9a8bc0d3cf08b34b3b7cfd864f37fd64a2d9a5dd752f5df75e695d9a96e7e1eb6509433db38b1e685eda5bfcb9ec6198e6f95c3617816d5fedeb6b86e205cfd3308cccad53a45824962c4a6dbf45d4376cf31f69f3d96c3698f3ce61ef364d62eff0318307c4fd66b3c1da399c731dd732ceb5cbce839b7399bbcdca6665b3ca2e158eea2b4e3be46e93f34d721cce79ce6fcee14f49db5cc3f9ea4e7af4cd551aa765174e6ec050df644dfbcd35ed37afd5a17c7157adf0a7a4b5d66127c2eaaadfe0efe639d9c70cde4d0e6a3577d7cd6dae652ebb6eb291d5555f5d25149bf52d72aa3f764c4a60400bc5d5ea36871d9368c3fa76d8443bc7ca9f2aafb293d89cf78fb67d67a4f33ec942dbff4c1df8b3397c0b7f3626ee3f52cb0788ce05c84934c175283b3297ed5cbeed4e62a3bedd5cd6e0d5c38637d965e4adfa5b759b0bc5761951fd5ef57b54ec952a7f43adbacd0dfe94f478ff586d937373286dbe034309b3b139ceebe61ebe3994b11dc7b9b9f71dd8e63ff3067f4a54bff97603a4ca4e62af0efb0b6af5ea36df24b75abdbbec8cdcafbeadb0eadb26bb060c6d9353e1d837f86bb5cd61f7816cd57fe40acb5ee52ff6eaaab370ce6f30ce3dfcb5dafbec5807ba39ce5937c7f9cd7158cfc9de7fe60acbf6f0e7fd74da79205bf515964560bb700eb4facd7156bff92adbfc26db1cca97cd59b9255f36ff912bacbacac8bd2a036d8f9f97835abda53208db63ec0ec3fe999cf605f994b4cb08446a2d037d4eb4c70b69d9496ca00e3489b16167e427749ced38140e32972859926362dbcef25e3baf1f3b6058ad8f769493d6db11a1297942fc10f98a3ef215aba669da9543e42bfe47be628cf1b55377a8ce79e4abdea721e4a04ec3964fcd2c1378f11a84590ecfc6930f14058f933df25f50fd84ba7e4ffafef4ed84ef09bc56d3e6899d07a6abe492d1b0cf90f9a323f6a4d7dce9f42b7bb49fcec9d8f6d3c9f4cd244ff5db76b30b04daf5b46b76d50ff5e52ba2e0c5437921a643784aaaf49948e2f0e28d6c990dee9c4c3e1d77864898fc1d32a4e5250bde90a6bf974a4a233edda49dded60b1b616ce9fa9db6d9033e4d33079726d2b67d669d967cd11f4d5ff245af656b7f24d77198ca97d5be6d3cf2455ff245b5fcc9be37bde29daeb7bf267465f243bee8796045ed4020f41e07631cea62bd0142386d0a370d8470da1f21f0f014e9e0c2f08617a112140d2fc36c25f81902c1c04b7aa40483122d6213a20d3fee31d7de1ef3fd5c46a210edd363fc50dfec321264329de3388ee3f211fc235ff0276cc2976543902fed6a97525b6de691af485f1d00d7ac914d67ec4ddaae3d23963b435ca44b451afa1405f93484d0e37e2866d55aabb759a02bbd54c18b0fdae95a2b7723a5f4052fbeeeec0cf1b1655ce71008944634fd9c972e4030457ca404e97919e423c308010a810281c4c31f4fe42bc6964c58e40932e4a783225a155610f98a3f242cfef254c2e6a119effb775e3f582dd9533faf434fa6530ee2fac2eff0dc0d3cefb4a336067e0419b3808469872f12c211a8d49a8fc6993ad4e18340215bfc99308d67c2b420f9d294c89786a6b5531ae0b4d3e62845beb46b8f3dd8685732639c8469bf97b3e15a83c19823a9c9c3bef265ad5c9119c62db2e794a97cd92cb5d28be9105efdc7a551c22265a63f6b9c52f2e42949e1241ce8784cdc86832090d845c2b46bda231bde1757684d7bbca25d338a569404c99e7bed4b648fe99a90d65cec12bdc89eed9ab6c51c04959ae3306d4839edaccb1894691d4d506c1f14b2040289aafb3b61139532dda3abc3ed10de67c8766118158e6d01d9d3419119e39948c2fcdc19e38084cd538e673a7928f7a74e8c9e5761d89dd6693698034a3a1d2f6c84d1e1a09dbe39c8e3e940f6fce099b1d6cf6b4bb55038f60fd9c37a6bb650377b2bac44c2e6298e6a78657a7e16c515a090e9fb25dafdbc12d9431b769da9bb492c3082e92a1c9a7821c8a76f46a2e523f2552404234fda34b4b7d4ce0b0ab9b125633e1346632fca83770a41be8ad01ebc0f5ad1f49406d34c8a35e50f604b232b8f57648fcd1c70c9ac653b6c7bfa223346258cfe5e7aca5fabdfdf7bfaf8ac5124842323c85b69326521da9288cc3b1088fc09b7b08e7c0de1c9bf666c898451fad886f741354d29851267514a9110644f3dfd911164cf1704d3b45d22247b4ea78754a31dbb9346db84695f0c5348e28bb641104cdb19d7923bb22766d1a45582d3420851c0350ce29c30cdfb6fce39eb35d55a6bad9bbcfc668540e87fe6bd346af8db6978db0a0281c0df6851406bad1542084fc58b974f503883276f0426757cdca1deb6ec6c856debb5fc48ab65135a322e94079711560f30747c7cb402de3e5a6b61a510422f9e711d2d5a0885d0070002a9148a9cf447f7d07f73ce977cc1f94dcd02118ea09da6b731c9892a3dcf0ff99a73ce9d25328a173f8568533aabf6699aa6c9dbf97be986828d42586ba5dc9523d8a8d1d4b4673ae18caf35e8d5dabd26fc339968267bedd45e25869dfd8facb7569b735e9bf5b227c6deb639a7b4f3b1e921e5d66cdb06bb1831a5b5fe4c3ab918abb5875083581a59cdc2cb1a5f0f71ac31cba2572c1f9f349c32fe4c265acb5b59f8e029a4149e3e1e887eb1617733c308c7a65d8aa5c41fcddae972a31ba5f2536bc9244a9a5d2074bd7c399999e653945a36b8a53cd06a20e8bacbcedbf9d3ef6b0931bb4c079a2eed40dbf6f82d9f6e31bc09c7ab0505c52d3db39321538c616c45609730ef8207a2a66b8f455cf740f4f3f72e7ba0fa799bebe7ab8453cb304379f9781c63e0cd7f3507c52d1fcd4170a9677632876c8c65b60d629791fcc1c726f142d4f50541302d3fd44350368438c2cc43f18e7cb5227619a1a736b5ace2c16b1da345ea58ad7639f9828f314359464269a5a6faabd50825bbc9d1ad9eac49e358946616a723e395afdb1fbd479ba3bd41cd563a658417f53d69579127b3d92c85a64ff5f764369b1535a50d614f12f9f236b8c1362b3dcd2e23f4f53447355efc50ffc81f791243eac8571adea7d3f22f799f4d8725637cfc91f8ca57cd177fadbedf3e61d2f4d8eacdc571f1a7f829e9ed9be4b6bfe2767aff291b30d4aeed40f1a76fd94715cf6524fef418d4f5a7fa7ad3cfbcdf0d6af57c4b4ef13e56cb4f23373d234bf67c708aee88740cdef74b09b7585bb01d7e85de52695e664e06defc05bd9abe42fb988232ad695adf399968ad7d264c49b1d0d7b85de24aad440de46547a4666a244b103590997644a4ec8957c6a02c7edb20bc54be2e1fe7b76da8d639b3c417e61be1a43610bdbd1ef723877c3ac628d471094f53f93a5df93ae54fa8fe4827b581aa07f5b61459bc8d683ccecb128aadd6cf7af87a20584fff514ae9b72d8924f2e2a950ed5af3adf35fadb5eac8176e79c1022184f833fdbba7f7f7f1e6fb09519abb343d6a9ae19336bd56ad4fdfb62169f43399686dfa4c3069dfb58ec2df570ca306f514d38e08ccb2483b14e1da350c9b5298a4a5878e1d93d8b6e6ef49d7537c5b83996269245f1466265ac5da634744aba71fc0a6f33f324a794db1b6b141d843e9e7e52b7ff183c730f6503ae55cb36603291b3e365093d8700d1422ffc1d8f0305f0e1a0ecd38a76c7067bb86b74ffcbd27d7f6bb9c84ad3151ca75a7f28af7fd68fb8347f6a46e6f837c5a7beaf6f69a7614ee300b7bf2a56930add5365bd982ed136fb7f8db69fbddfbd76aeb83f219638124b26772975792faec395d3e8583fcf099289f96ef301dc233fde4992ecf7692607650724e8104064c7f50cd0a500d4c030649e942a5fee24cb6e069bff717fb98c18bb39e1a547a0563500a87840302991752c28c010299976f50fa2b5008bd02a3680881d0d348f3bc028164e1a97a5e99324021304ccff9791b639d841510167b3a8931f005fb43f58c4234ec4fd59d841490c60d3a892aa006b0e794912bc24c124b5062e1c124306492c064e94f6b9904662906a50433eb1866678b5a9ae238eb896b27420cd320442698ec74bc948e38876612d7c418266e001b4a29bc56c3472d504809514a472d1008bc901272c8210c1452023d84402613b10928e48b3d730c0381c0370181c04727a09078286466269fcd4b98f465a9bf4b1560e3c9974bceb7664ddbeb7ff0c81817eb62a8d71781af30b85dd8cd9e9d5f949a95942446d77b3a4a72041b94700915ba4f3828de8c25a5d5d3a4899356cb37119239ae205fdabfb824afcc98f63923999e33cd2c2e49a39ea77078b123085a97e0b3c52b81839687dd79c0811429528a7c64f7453d64daa514a564daa3a4d24499762952a65c5994549ad994962c8aa646ca94972cca9c633665f6374f31c9b41c8d266c7eca06329bb9c859d3fcc998cd28814224967ffc98fcb43c1c5e7d3c979a9d58b93461b027996b66c26037529a09830d931af6f7ca32a5e5622be222c55544042d198406f8eeeda5b88ac0a687b2295726054203ccbb8a9830c5934168009b3fed307ff31049a9dff34848b2fbe0fdddd9f2d6498ffe64cbfc953064ad931e4d3390cc4ea67c7ccf143a0ed918b940028a86490d939018416fa98dc79219a333a67328bffd74782533e6e3b0c7e1a39719731d3e95df1de2df9c75782433b69a3101dc46c7e18fccd8cee19fcc58ce01d0c58c7732015e80ff380e064026da01c00370151640268209e0afa370ce440500729c731867a200e4e39bb08f4c0404e73f7e718f4cf4f2f1015cc3ae4c94f1776e318f4ce4d2c9443e0670d87760221eb7eff1a4238e3afea6c7756e33951fb20cee61a21e990a016444a8f7d0b9eb1b26d2c9546e6444f73a990a4af6f3c8443bee5d0726da5cbf390b13b96ecee3294c7493a94c1951eb1e8fa77ec24451b6f3c85480544c94ca54162023e2de63cb54746444db75eeca545832a27ad75798880005c85474c8884cd739904ce5ca88e65da79808275351c98870eefdb8398f132053b132a2d47b3c07130d205371c988ec5db04c654746a4e3de05f0ee95a9a46444dd7bdc47a6e22323d2ae7301642a2719d1ea3c6e838900f0284443b200642a3e6444f4aee74c052623cab99789f2a944d9e9121345211a92ed642a0c901179efd1e3a74c747322d6895627b2b9ea00c8546232a2d3757226b227aa27a2273ace54a48cc8e63c7e4c24efca443d32d176a2d3894c27d27e4f25ca5ccf0013b1ce23135189329d4ce49d287522d489b8777765a21d27d271a2d689709ea303bf260cbe8573f0131cb34c18fc0d66619e09835f61241306afc236386e9930780fa7b0cf84c1a370920983ef702c9a30780ec7a30983df706bc2e04ff867c2e04d58c984c15f1c8d260c5ec3d10bfe84c1575c64c2e0295e82e39509839738224d187cc44042b3e363cb0420f14a41a5112bb43c8b5be27d5e0f19227b925840a66594710ca596d7928a58426ad9b28f1a362c224b6bd0308908359a05b322ccb4bcb51d08f256b6d5b4cf2c4d68da93dee26fd6684f2d9354db7f1a4cf212473ba16d1f3f3b2373f616bb6a33841b4433471d4fb180d742336d2d1339005146106934d1c41a32eb82305a2cad7144176ff420b32f227be097b63f82c6d4f64862d0f61690311d32ab69d98323316b1cc18410665a20b3bf3306bfc420041c2dd042852a6bc86c52db2e57b4b55dbe68bb92595be994380d938698a3bf97d21c5bac271d96d79245e858d31066fade6bb3099b72907bef1d428cbe5cdf9b3f2d07edb4bd4f90215d3c54c3a421b068efc7abc5f274242cee14f9e19ce8aa045dc304a53b6a76621a398b5b9614c52c6196a09986621a4208918ec0288b0848e10625324ad1e889cf278c6c6cf0b38194d20a2672bc1584f6ba3c7be9c5fbbc782f7ec913587443cb68256209a265d9f13e3f458ef4d05bcb23b10007820419227b6e4b20866829ff9d1fd927c80f097bb582c4983f1d22bc0e4228227be21060867888828b299e88810ab478426623441234e0c0851c578864d26b0dc1a5bd8649439ca0bfd798960e4c3363c3ca152e7849f382116c5813060819885ce081015b4c5d7ec03aadd6cfece95283290cdb058613e70245c365241e359448781f142391f060cc43bdcd9965c2e895098bd1a84a596bcdb2080daf5e38e54f0724b81d40a45617292614985a83ce443141153352400497fcc21b56ccac9822cc950500614607c41b2830405c8102220c30a9864943a0e0c6f6d57f9f7c84afdf2084f0a7d65a7db6395f73cab7b62ae3a96bc38e027436a300052092ccc69e311e993008e464b6960fd89b7a939ca40085dd087136938d0091643617993069421caab2ee906a98248415d352939a3051ca6863072daaf40c69205a0004d20d37e6841f62f00510346421a31c6be7c56a9824841abd354c12220c2536b82359e065c6b419a39a9c696264d19216bd2451b2246e89b378148b6e12f9ba3366e92b8e328a8f88403bcdaf8a9164170922d84e338f0ccaa00c76448ed8ab9d5ee94f7556bf61285cb6d3433141fbe99bf6539ecd58bdbcdc3263f4f21a963dc804885932e5a83461728b7cc5c7592c9ab02713265d24d46b2f170954cb3c1d112d36ffc88a65167c24a5c5b25d28246ea92d1d0fbb9360af7a04a00c7648a0703f69d72292762d7a8947f21555392aa591339b1cc34c588c62cc2c91b1e9942441225ff15de77d3b2abbe8876436f94996b88576798987e39558149b306942c2bd7612ecbb4700ca6cde0409140e0994d4b7db6fdeabf7fa26f34c9a90e022c174bae950867a9323a8ec4d583c055c24a0aeba2a8b40066548f6016c28af4c58fcc532cb84c5dbe028a9351e76c90fc9ecb789230065523a124e371dc976d46187844392cab268c2e251d9353f24ebf2272c4aa3098bdf7091098b3fe12313166fc2ae9999c4d672736bc2e287645a7e4d58bcc53f13165fb14b6626b17986643e13166f026a684a4d8726bea07827662444358268624d04a00c856f50c60929d6526936814b3c17a0a0993d2087a28c2e6cf017dedba002404859411befdb5b0ac9d2969127089d73d630ed9c6f7df24c09869b1388197ace3967181a67fe5a1d938090e1ca7b3d2ddf923188746a84671b260161a59660bbb5d67badd77a4fc3789132600b134c91d4c2134d6421dba0eb5b5daae83a65b51ae14318484a4552c8c86abe603c0eee5035b5c25c35ed4d785acb4c521dffc5bebfd5652466c9a2ef9bf0f4cd4e289049afd4e27df657beeaa79dcad795af6a0fa41ddeedf6746bbabdaff7f5bede5b67f8729fb3e32f776b2f9b58eedec6c7189bc4136e224df5f4de6bdf347b61578476970deedc1f79837721dc892ed40b73209886533e56abdd5a6bad5d41515b6bf3a759bb02296d695b6b6dc53bf2e5c91b3c1f9e22998e8c5119001a26fdf08515148d0d5ee821e5782b180b226151423883b8e617a4e3593ad4630db580c3192f5819028a14b050c00e3b0cedd0430d41bc808d2b485dc868667913bfa6cc48f46d98f40314fdbda8409be5ab45c0a04294c31417741923035556b0e4c42c8c1366f8d07073a03507f9e4a0fd4c25525408238823c65021870693823766d0428b1d7690d1d80ad585aebe831cbc0f22fd78b2a76787d90e53ec973756907483d112359491d1df190b010f532ca960c30d64b84096439c590e882a6b114a3d5a1076210074765af2057fd8c134b34e4b8b6dcd98cd3f93f6843fd4d001449ab116a53fc4d0d436a594669d562b084fd730e98715fae3a1929eb1c19d554718e3202cc62361f1b507cad797d35107333a742151e0b53e9ecfc96526630edae9d84152e0f1f0cc18d7430c7a5ee770feca14d49c8649476e346d9874c406d27cc388da78f2d592ff76fa47be86481bfacf75a5eba14097cd1e2425cd9abe888ccd1364f04746a0a2e191c8d865f049c2343c0764cc9bcd6671c860d251527b0d2f247b60920abc34fc13d9233b2665f0163f00890c7e400bd4e0071c311b928086e7892d34fc94cbb80469780984271b26a9a086fe86f40390cac817842ff999b56850cb50c220b579001246f2057bd530890b0afddd86d168e6501b26f590a604efd21ec8f0d4b94dbac5d3fb1933d0fcfd2a8dafdc9cd27453fef2172313286dbfe1af5e038ab3234bc39ee9d0243b23d5344f81e6afc7923c48b9039896d77959cd6af69d917a9bbffa591fbbf98a812827635eec78ec161287a8c4bd3e697c240e4eaa50bd93bab3b3d39442a41d1c6aa01ef06920fadf7f413edbc59cb4c1f3e90bdf549e8b9d084e3ce0d3134a2df2e06db2f3e06b75f77979f929c2bdd9b5ca46b8cbcf4bd8e1ee1c3ef7c992ab5503867acb2e1b1bafeb561ef4a0c7ca2ed681b67b676dde9cf0eb2ebfc25f973f250d2777ef9b87399b1cf1a7a4d5a96f507ab1d68469579d3b953dddc7fa6a84e6de1d69eeaa6ff86bf5b6e236cfe3f2c7fa6a85536fcdd895b0d5b59bec1d887b778f7b778e7bc75d95b5b4fe2363addcbd9ecb5f97835a6df3d37fa60d463d854ff9e32e1f71ab2bfe38985dddeadaed718eeabe923d5dfecfe464e304321ddff19a8fb8de3a8f9f8a746411e81cca729ec14d3f9ad2e33afe4f7a81f04239706824e9a5a8e7a51190fb8c89c075d8da719ceb78b5b23761f36fddf5cfdb9179fe3361f33c26c0f1a1c583b29c8bc0849cebc8b39ce31ce73bb237612d7cbb0f68df5c710f1c850399cee18c6590a7e87c47d579eb357fa64b2f3cf2149de7fc943f53169a7db313db326bd1c91f70bdd6fc5de9a5e75d184e9866b313db5f546ae59c7b77785e12cd405a5aa7df2090960fe4bc7eabb2ca1944ea16fe009cb0883f90f32d7647903a2707e39c62396bd81dc199b38600302135b4922d2f7a89374f65ecb7e5438042a61c5e5a4ae142a61b26c961d494369c53463992109a42b31d905d0d803d1fc7985226c1a088ca43d823ff51cc35a51cbd6d22b98a677f34e64db84193d8144b292441e0e0564ba4bee639b3c8406548cdde2814e2c99eafcecf0c54b3373f34a32c4aa3a63fafe5bdb98c29d31851ca49c0ab14c8c8ebabb7138410d4a640f573be26c591a6eb878cd04aab03e29aa6f9153590b7dd44f264bfe2061e0b0a892d7f038568974e646b51cb1002f9e8ad073453241a5fb3055e9c5387de8ebf1db30b84c72c149b4625aea5f5daed3c9841bcc1a53f9ed9e58d1bfabbf38d12749387c7078dd1e499b13be768498ee75e0f49cea81b66bad6ea73a66802e1790d93dc58ea8fc70d31df71c30d2cfddd22b145235a48c2d1c30793de40d342b2a98c90522a2dca65a47693125a66194b18e25e9f343e4350baa36667d239d9c0818d2ad7674864e38819f4f9f8b4b4e8c067b261c49cbfb98817ef836058938c4904cf8fb391a489305b28cd40451127f0c1cb192be0620731ba90c1060be479b4f88b8d2efdfd48aa6ecc1a60c40d6b9891c40f4f288de1469175830554059470410b21a228438522be98bc1ba9c98466e95e226412dee9a753f9f2726a634b1b471266fb475e6cc2dce59094e832bdac36bc746da30533d7df9a5b44781fab29659d4ab1861a69ccf9c30a8a58b3c52c06a52122d47c99a2042b38438c11b229464f3331f43cf5347343cf39e9bcc28c0ad7cc0bda0faa86496ba459c3cc5c3aba3e697ceebd535628a332358ed4a8410d34e437968e1a60985a3e48184452234cab81d4df559a5ce88e9a9d3468cb4779fa9a29fe94f2a74c0d37dd9c73ceee668b103651f02006892a2b3ca1c4525112301811040ac0c411461916b43230a411430a0718b0f032e50c2d6020146ac258393a0288117401030d332c1a6bf4d0e17ea194f2e294461421eef549e3830279af8b69c4962116bc014497135410c50b64644fa8e070c696305a58b1f2051a4a687871d261e8052cac585a7306961d5a50831927a802451826b88cb18406111b1a60381dca942973c51053a355b3f3068f364c2a83441916d01cea8d347f3ab74c11f29ef44267a74c97fe5e93051b48030e3482e0210a196c7821001d5890431c444c69c2ca9a99437dcd7a9ea9c3ec8ca533a6f061a3b576b024c70c677c31c5172564d4ca0f3eb0b085136364404117347068ec40755a688c60357578e20c33a833e6e8a60e66746186137194b102193068358d54bb335ea99dc67866b3190a32ed5e196234ae06efbb1dad4818c42261b0db0c1c240cf6e775ababcf7fb868fa235dfa363d12338c687a0bc8184a46cf819a593a52b850c4051852c4e00c37647487063267d6a02085138e64748c193d50338e5a938699ceed3294260cf68f649561431958a2a07447cdce09eef549e3237b884cd77cfcfcc43e66f068ec88d85884b7934299babf662c1e9e2788cf901b65291c651bec2010339cb07ad429eeaee18d721ab64fe1289318ca3afcddeef0e9290c65124759c470c2ae7dbd763abda7d8740e437cc2995e24328c5c5a12cd75349bcd4e90f99cd1f34364ac259bef604ccf179131a8349b9d80826c8c2eb89e476245c79ee740a57f41cf1fb979314a29a3945e6bc67efcd850b828ca50af780429437d0b02654896ca50504f5d7bc422409d078cf7fdf8215ff37404140a17a13e24fbc11344f6c02c34bb66202da8fc817888d414c319a1994d9abe6c94d20a81c8273b92c4e832bbd6fb448c3c4518319b41cb11476864d5852d5840c38c2a92b6f0410ba20e0e4a77d4ec4c13dceb93c627c6a813e977ad68b5d62ac60b5debacf2c646a7e528152306317c98370d93c048417f3b4794c0b335cc17c0c00246d10c53634d18c020ea2f4804238acc3e56bc2f08ec8b335f2cf5f78a024a9f9f2261bcd1731e098f6c6a01031668a8308b010c3cc8e69623a8d021ca1712cc219b623a0ca43096e0c93eaf2f96f822082f2f428e38724801910a904823d32183156068516208255090451648c43f1ec6df2aa840da601c729061e5062c38684182105411c31351c8bcc146163288c50578a0102a3bb6666c480731a6d0a0a68c1a1f6490c57fc63090820a59989141054e9021db59410e2d28614611474cc8e2a7820f412cf144171690218b5774b4a263e4e923c2380a030b44eadb755a29b935725851f2e20c0b6962204b52a68531a644a9a18915c8a60b6615fa05104639d8c0851558f8a0030c866a50011b6b5a30428b9416c864152dbfe8d2b19776504242051c4c908619d9921ecaa84133871969ce90c9fbc81e480544fa8287305c2c088bb10e6e9c164c8f198376ea10898677d330e98b12b42cb3a4a63f5647249d1f3c9747c3a4252f7eacb114852ab75a3fef08c40efcd3924b39743fd392663c9b86494b30f407915a308c1773e464e04519393cbcc8c2d3f162091b97175b32d8e105095c3aba40a3a3d50518aa9c2ec06480d3c510dd4d173aa0bac0d275f1c2898b35ab8d0b34585c6cc1c512375c08e1a5b8b0e1868b175263e6607563da18b3a41a13c56a8c979b3138b0c654b1e941063ef1441c3e73227142c343a152cf09c5103de77f402eb268c1461c443098c1229b6b289d9161b6461858924033a6a8bf1d7ae58927e228e1cbd10d67be58a1b4848c4ed1148a236d04166460c11568b881660c345bb0d1a7328a9e7802063a417cb6f8c2ce33530d6f364cdaa28b86485b44a1650b2258264ab790a1c71628b45e8046ce0ba2c8e00544b05ec0857b41951d2f9092d2a20c1e5a307142f3d381163a64b0a2b9884cc3dbd130498b16fa6bb566ec470c1c2d1b315eb43c314cb4526286f050626cc0e9c45441716288505b1663fc948598ce94051336378b213c2d656bcdc2069c2cac745950d9b060a38545163bb048c2e9d130090b14a8ceb474b0b082b294624194bae28dd41566745774b15d218577c510395758b939d8279e80418dc14def34fd69852963c3e222b552ea5445e0d8dc90e359612595b2428a872a834757c50df7c5db8e5427179c60657241d1cd85c3462bc3b35b7095d22aa4d8394329ad0289a694d69f561537e89ca942051d67a84083736647c3242a5e40c5153729a0dfb8a8fd560a85cc7f4162b79e4c978b75dbeb740aa3bff215e9db8477f00b5b1c44bee82b6e3279400de8855a3dba037a4fa03a1008bd9cc36bcd2436b8f3c5700ebff3fac113040a511d3e0150888dc76a3d750885c06d6bf264a39c0d8610c80ded3ca0bdba0a5308c43b277b6ef257db0b41abce5a1dbe3c2f73f23559f983d2aaab5418f62a7faadf080ccd7074c299122cc1e50a2f6410c25657e18ffb545761d509c7fe992a0cdba615c4752aeb70991503f83a9d3e85fa52d9c39d3e5fa7ed1e94be9fe74e9933ddecc9d76cc9d77cab25612ca9c6fb583d2f4d235f70252d96add2292b1541d29464c37322bb4a0a292a862d25ebf431833c6c29e9658e108894323711f222d4804a1168842f5a9b86a0656dda36ca49291dcad38737def07c7c968e4493120c3c4d0b225fd167c81a1ed730898a2666ec870a1dbe82a9d650548c200355a7c6864b23e56d5ba85227a50d651a4247776f60719a9295d466d5b44e758c1c1355bab9f3e8da142f6460cf1491a28dd7be1dc817d2bd574cdf4bfb7e30cc113b666bf91bc14e58d4344d0a2cade5d634967c594fcbe9f73fd23b32a588d29a8ed6b4b61f54d272fa8f3c3263a7ecc9eb45c1466baad6e419931292235180d1df6be9ca150bf0caf1849927ba88c35afb24ce6291515bafeda351b462d1d8ffd817b150ccd136d5360a12b49d326bd1c039725002cb1515a411a30d212b54b8010642fc908215a480a28d0b050c281a39a280220a24346db4c1716ddceb93c6a70d4a77d4ecc8d76c32b9e17dd41ebe340d0a861076baec8c602a5f337ff5f7f1f40905416bfa9ee766d5aa66e1153b5cb143db20ae3dc035cdd49b2df4d0c0095190a00c34d288e38528a06862879114a4d0c41839a6ace00d16048c88a24b511c6aa09004145164f902d0a07026882ca680c1420ce08f3132bc40030f6198918227ba424143d71c4e3494592206545a58a1a80a9a22d599a11a8ab61c8de00b24296f3831cb00a22943e486192ee040469635309e99c0153b10a5d04292182db2da041461a4864880450d15398461630713a099238a6192653891468a0c3ab596358a592263460b3469a0106b9b66dbc508305050a1640514526bedf86814afc42c5b9ae8e1080aa13448084a9492b40214327b963167c73741c46de2875b46135c68193a0d939a70a18914ac0f638c71af4f1a9f897384af1a8296af6d440a795d1fa106f5148a11daf29b6c622f743b3ee60881d4cf849697948b1dfd56b9e9044a1a214531993553d94365a64335ca2d51274c1ca89d32b41a660c561961a86095f18649617e0883430cd16a87ef0006f131c33b354c0a2343cb33bcdb3029cc0b4dc3a870212d4363e20c1364f4b723e1d8e0cec723f3c7359c343a6185134934ec3e685d29a5948732bfc8f0be9d1f1cab080fa7611213474cf4d05f8b2708b9c40c977241f31255ee123318542a871c4a375c71849814ccc022c50b3b48d1021960c86898a64c6c19736a98a4c41b4220c5396565e20a1344458e204972a6674fca05ddf921830c51628d9effe9800ba84499997db8f0be203f5e1049092c7a8afe5e338a2db6b8d7278d8f9185108806c62ae1a5bfdbf5adbeacbe4808479024c922ab57120485ccae4a6ce95a9fbfe844c397d6f51a5ca2ebad99ae73ce4a65c396e7e4369dd65a6b6398ee035547272010780d0a5175b5164220f6d2e62ae54582ce2c4a5a780d939408d34afd45259e0218e08dab614699360257d362964ef2406193d1ca0a56d4f4e971062bfab3567d830b03963eddfba671b19c8feb9c1cad48587dcd9b89b322ad58b1a20461d04a163eba1e490234fc76e2ee76287be2517fd1486699b17bb774adf5d405cf250ffbb3feacb78f205ff447e48bc6fcbd5137e1ef6d3a0efede38df5637938582f75addacf20a657a3575229c1e7fe426cfccca38ffa251771c7c4d327f7143a150289bd64d8e0f29defc11251f513c9c5327c2e95225316ab53a9cb1251356bf527dbbed44f8099dba0a2f99b1a332cc9719276a329bfcdd1b968cda4a85fa5e462b15eadefc79dd075f789f35f7cfbafb178df0173b233dd6b47c0a7faaa7a49472c977cdbcbabe50a84f95b2d65a6efee638ff6ee37c5ee31cce184efee4b7bf666c478e46a8162b67751f51bcef1ac52d7610885b7eb2f8f04c58359ab0fad74dfee44df7e182371f8d627da1587995bf56ed887caadb1cc8cb2e104e4ffdf4d4539758a876aabeebfe336947a45bb3d4367f334bdb5991d1bcb244c64c1aa4304a62b26c39f272a5a54c6386cc9218a5304859b61c4999c60c19e9c3f3fa991d118eeb88c859bc72d4aa46d1680cef943bc83fffacef7d7c78785eafffdecfb3ff5aad7dd6b0e5352277362340c78e9dcc30dad813a061e7c1672d5f5512005f36b881d775545949235a69a3765d67650b2b615841036a00fbf354aa86aa144581d28e8800961000182ffe47c6335fac6469f8a58a18fd41a52f55d0f49119e34099a6b48a1577b6d41bdc20f696a24a268c262181f7fe789a4a25efce94baa2b2745bb8a3cdcbe9df9d21b5e9df9d856954e63235094005de7c122af3d78af9fbebde7b3d9904c2e865fea4077786d4375316bc4f3e520d0bd59655c0d42a504018ec168c5d28b3d8c716efce8e1af6f7ae77a664546565a263eed8484d4f8f5a7e71c14ad3f758d3da9aa5a8ad21d3515b63a6a3b6264dc74f5bb3d4b17ec301c2600ff774eae88292e68218cd8525cd05321bc85c3003358039377ced8868b961923ee52f499fee438af79d3e5f35afa5cad7cb70c27c48f1eab5fc9d1eabe96a6b967a76463e6bfa8edb04a0c6abb59aaaadf7089209bb3f13565f61985a3f6b6bef438a676fbaed3cb8a7b7b556771edccb790d4738633fa8aebe6bad5b3d55a428abad8abffba8e2bdefb5f9a5531512291ac1a612b744a37814b7c42d54e296388b6f1b638c79fe5e6e038ad7b6c9c58e084adaa08ea4bbec6e93bfebe55446cd39a7cb48bdf6faeef0774df9f35a26539cc10ed6dbfa8205a9eddf9be4a08cc5197d162c3e3386c4c707c98cc52c62ae442f2dc55c59c1bbfc930bd3c034693e78db79b519bd789a63934892e369da57c350b44fae29a4f3ce69bd96a7cf79c22d099312f5b15af2c5922fe985c7cd66457736e3a13c6ca659dffe428311bd4d2ec67853ed3cb0324bc3b61cec6696b637fde2cd24b39cfeb580b4cfcb4efb995166e93b3b22f3add81131cdba2352b3f427916e864d6847e965e6d96bf2f05abef2756ab96c70038f4a693f6796dfe14df9d76a688dfae25b8d2219f5953dc8d7162a1e4f4f9eea019548738c991e1d030027170384411bae0ede514edfcb1eade11e2dade80d762693899b3153ce540ae5bce9438a17ff25699309df8ae6aab94652aed10ad7c8051e3700ade1007c69418c8eddfd3da264c2e639f9821366611781283b32613e5cf0e8cfc4b129a554a39656ca73e4da3c653c936a5c6c4ba6df3ba4636f939b1d11d3b7ffc8ed47c2240767eca6ab6987f447bee4f0627681a03d3ec2a6799b1876a76d28aa8eea622a7f77753d9557279cb0c93de22f497fdc4fa7d8496c8dc31bd64ed7b82b1006b3dc2dde51cbcb915eb216c240186c087b642d28c117eccfa7870c69f821b4231287705bc7ee7479baec40e0206add4f074542d8c2b359283eb6fcf561e47df04b0a575a2667fe5a3d3afee6b0cd93c76a3d89b14a7873fd297f4231f3f8c817fe2b887ccdb7640cca92d965518588009c6bc4919b623c59a97c412b691b1bdcc181dba1033a9ba762b4a9fc4d2c6db52b299b3fd335efdb16a3f6548a75cde46520a30f8054b7b945717775532a954a99ee4d2a7f439dbac5df47db74ef79a9cc643690fdea3ff226f5d5eac6bb297b36f58beafeb1b2ea56bbf1cef250effe09e5a8ae99525f6553ceb5b9f6cd846df087527db3dcc4e20a0f08f53a1f55da5147227bb4d4efe743e02e7bba4714f6aec2a877d85ec39d4dfebc1c3314d9638396a4306ca127314a89463206a3c976ff91b1cbf71173f65e22321d5968f8458a98de24b7610a797ada4f2c786cee40f6c41cadc8174f101fd9037f8ac89eed1be66816dec7fa3410e22bbec28bfdb17a7eb1bf98994c2dffc8cb1e56fe865a74fb97599719b1f48c4119fc32eba123ec6e8e4551037aad2342a9cdf4da9b327d0917c7d69865255152a6e0d00368f885284d6fa9733f614a39cad1739c906c6a29e5e8b953349a9743fdd337aeebba0e4baaebb8d351a87c3a93d9dd67420371226cf750a8fc09c92f7ed1cbf285caa7efb0f94a188ab789f2db2943eae5af53d2be404a981825fea8ac364af122c548caac0fd0f04b1428e69450a03c1228ff332dbcacda2d93d930771e0cb546e3cc118bbcd2715ac91fbc1492d35a69e5e76fbdf76e5a7d3dfdfe43bd1ec8de24b76d4365a1d975dc664f5948b6297f4395c56954a21811c54a6f29282f243b4691d23e1a7e41614c43d10868f805852bedf594503478245a6432a4b54349cf2442da31e7cd72b523a21d769e7c41687f39ee70c6504f613861a8fcdd0d5f9b8564fe3de54f68da0c64caf7dfa59740f1f6f53673f2c535ad362035d7f4842cfd6af86596a6b547afa5dde6cf88762b82767b243477b4d29f503ded3ea0bf19c88aa0d56b35fb98c1dbec07da8144e05ab3f99e1e098e2a440da40ad68c699e86496b7668a4be3d87516fa9ea99da64012bb3fb607e832a68476a4ce52b6e1b66b5e4abd6abf027acfe845ff255ff0585a24e40c32f2728b5cda76b9ad5ac6635ab6956d3a0d5ac663f236ed56f1bb6ade1ef036d4d264b372d7ff40341474deb228f7a68ed48e24f5b5acbdf9cb637fc3d6926738d9a8efd85a0a3edda7d503b6e913da65b2da8bfd843db2fb1af1953ddce7f3c36e73a23f6acf03e5aa784f2644ea1c6d25fbca933327bb3f8a36d6f7a2c8a1b6837e569f117adccfe626fa7ac45a318bffd43fd64f353deba2c24db260bfd4365a1c75334328fa994a82f04d57ece581435b048e4cb7e39e1a8b78e37eadb9bb576339d6eb2a62d03dddb6f1a1755881b7cb1b77b9f9094dd3dc6fcc131edbdcb40f7db63fee21641b8df3c8f7b77940ac309db7ec29b874ddf523cdd6188a6395cfb6268a6ad05c1e9e2daaf1993b75f227be6ad6d2b24d1b4fd07c7b48f193ca179c24be4cb5e855f136641203914f6e90ec334cd61db290cd1f07c1fe8fb014f3b0abfbac3d04c7398f6097fb0ccb98e8f2a84a06ffaa6dd74db3940fbc984bffb4dd229515f086adf363daa1037806dbaa92362ca461d55881af0749285c65452821105b30a780fbec50188861a25a429b6f828e91970062885f771cde2d4789103cc501520b498018b20aad8020733d484b93e68a4285d91c6061e6ca0428e2a727451dae0a1520f75fce6e13774a43b715b8e461d8e5b70ccc271874f82fa37418053f407a74065f8b984b764c64e32e8fdc88c6de7feddd33f0f5efb20992f1e4dd130fbd8e241a54e92e38566c95794d2e57318ca5a132685cb374fd895f3cc36c378f170e79bb3217965c2e6af77a5755f9ef4692c658ad05c0261760661769c5d31ed1c1c850319ec8ee8a4c9318343a6f579b93463453deefabcf4d2bad7f368a76447c484baf87bd217e79fcd5331a4241725cab8c8c309f3ee7d93782573931174bcf511769e73d8fa8e1d1d170acddfe376d5b7d5f6d5b7af246612717cb6f917cd00d5c3deb41ccc85e62623e47cc747d0f11c2e4d46703de73aa8087232949cbb329cb0f93371d53010130ed6ac99e374d54f8750c67219397df5d35719c52476971d119791d39dcc06b27975ec40a89dba1433634b4a49cc84593261f339190a971172de3ad28cb532949c1c671336ff7f7009ff8366f2bf38c3399401e0db96835b8f78849cb732141ecf390e863224c379ec5c10683de724b472ce2910b3647028c3f999395804f18847448a48f188c773decaf21df36742cc527ba863fe3a0af0b81771f0900c7edb4d393e95515c7632fb7b350070549ab0f98ca398099bc7382e4dd8fc71243361f33c7006184e58543a6127b33faf8162ce42f3ca95f99866c65a3386f379593463ae19dbb1b93014d7a744e1407644e72d0ca5f52939cfe038180acea7e46411e41cca7870a0a328e738b828e71964172eca398f4cf3273477609707b42827739119e7501695664c7a99b0f97b9dd8a6dfa27010a41da8248bd6cb4339eb185334030c0010000315002028140e89c582c17844d1f53d14800a9ace465a9d4a64490ec420c818630c01c4180000000019222334541d00d026f02272c0cec0c92612a1106fa86a7c73bff7755563630ec38f02f491c7e1705e12cc46ef4c64dc5fd7d39c44daa970d29749e7ddea0b1ef9b4863413f5a8b5a73db22031b613c2d3a8c47515eaeb1d8437e663f228926289bf3536a073ea524c2b342e0091d82abd13640b760b5381cd705f5dff81ff62065701546e43530c80f337a6ad39ee12b4338384cc1bcfb64f12e9f3fbd5a769244a463f08f1a298e416e64f5a7ea9658885fcc9f2a6f587872ecf0bf891c82631ccfef0f53474d2a6fe124748b0d1a546fa6f2c34b2a2ff03aa854bd47bcb12395577144be5fcc3ab4bd82d81a7391fe1ba5691cc6e0ba7581cdd313533b88daf86baf736ac3397e46792a4bbf6327ca1f9c1311f047012ca4a37c676ff1d00612752cd88f330dce63a76ad8612edeea447d482faee14ebbac05266f237c8f246cc687a108e6cf00446393fcb5d37b2822a9c909a5b23a6a0a1dab729949c7b0759f663487312e7a267b5d95b5f4a67f3f1d3ec226808e42908b12ca5d239be58fc8165508a8bdc266178b274a8e722ee588d47a3aa473f33213bfdd03f9ed2e414ece9466a5516156573a984a3d80151395bc694fc782b005eb0c839e5e6047f7c58d6eccc1d3b8fa93041fb1da4664a2ef8292e466ef5cf34388e89b11d6c3b024376d233905a81f925b5364a1855c728b5cde72695ed2b3098a266ce125aa7bc208cb4436a33055c3e2f38e2509293517d4b8700bd553796b5b26b06718038faea6e6a9f719050dbc390104c090793a4d51cfea1d8f95f2e06ae2dccfe29b99e97dc37a4a13aa44025252cb9b445f22b76ee2b281e326abe7b7d7be522cc2f9963068d38d9c2b8e0e9b7e3f42ebcfe3d1da8ae1aec38069281dc0e27bcef2625edd74a46e9de8799aca6bc2bc49295458aa27890220ed1ef09c6fb68a084eeb73b713fa6c7e62fcdf62400e1ec5ad1e9f6abfe0beeff8b777fc5b7ffc5816dee67a3c576b7d5e0cace8257bb054d40ec10b3f715d88508628e22f104235cebc62922f3891e51a67442e131ab790c75f84a347b118d06223efd0f885c144ee554c44d19a3c631a35fc8b3f8e51aafd70f149568bcef4afc75bb04e1fbfa7c21570ad1472dc8019b12e21c4800f02555267a567bdec681c128401a2346e2f174d673e999171b70a63ef8226e8d4a7ffd377881c3830da3bd2747bf1296534aa0084e50cfbfcf2f07f433111e62f2e6b8f7deccf138eaf29b7d87de4294d751f144ccc825ebe405b25ee5dd2f37197deffc85833f5c083d447b500bce2ba9462d3249061a3af7d297ecacd478941c9680ab78f3bb888b1b2b17dbc62a1ff2d902c40a91aade23c399bcd67c90358ce534c202b90fe5fc0473f8c1dfafea6e92ff0e6d36b6b0bafdb9df7575965a011da6e82aa96650f4b6ce53d3bfe9a830e2f3ddbc781c65c81d6ba057f69fb8ba183c81328dadcf26b4c7906bdf5165f2a4d8e64bcfa2362992f151a44f6e3244745621095c80c117597f5c1743b97b754fbe3a3864751231551d09525b37011f223be7245a6f2bb178c666fe72fb25b5e2088c976d4da6e14e7b48d59cf27cb1b7236346b0c96d1103b00a14db61aba52c12c1a9d626d22294dc4c6b32ca8bda67fe1339081177f51918f94b4af947136f54647a6afd43676acea52db50dc99010d0cf00562a181fc55e8db1e5b978788b8bcf4ac0211f83702e8c94328b8e5e1717cd6be1550f7141561878aaad0acb65d0b72a630af3f2b1570f129496294b12841cf38cf2e5227ea99b64415a6878c16018631f63a0c1ca231424f37fbfeb792b63d4be69452cb9d988d7c5680b47d07239a924989a19a4454da113204d5620745fbfb49f42cb9b1232dc6426bf321e63868445ed66e77f17ec00dce0b8375562e12771ce12b25e9065f39fc555e0967420e9dd0a01a3483a7dafb16e7441c279f78002c2642d57425628ae1a14e703a97d88312b8c622c183964376ab1bc3df354ee6f9c085755bdd96a7e34e3f94d0458d65c64c496b0fe807b54cdc2085818c66777cbbcd346e303d490d0df52f705362538b4a9090d8f108364bb638ea4bf1564e74c82422267a5b4a605646aca7fd6e2b94efe181b57907a430722a2dea663aa7f45fd4a5e93e0530647e374e6a6452f5daffd7eeb4e524b86cf3edb01f0ceb6843a72ab47d5602d94d3349c1ea1d91584c089567b189f38f1f4bfe49e727703aa3be82fa686d64d2d91b05b258e584e9e74342b3660059157e11425851a68a75a77b8dbbedfad7c9a2b75ebdf1113bca49236d9cae97b59713189724d3240b31f62bfb17f571ead1bf9f5b716c4791bfea5a8aff10ff207584f9a872cc5b1153b3ae6c27f6de194f7229f7a6e1cb643debb02b94717b9d50e4499b686db320c6d2697d7c613949eb39294311b72a88ad19aca869412ea319a1e7c480285dc022dca2dc7c666919b4268f223fb4230ddf85e175ca684aeb0f59c21913c002294d8d4c515d8d3b5b3973254d791e0e7f2f6d4e5b7d77cb66ca9401a430ccd612cdd43b82e37f3e4dfeaa6295219ad3cff8cd1fe48878458ae86e4eecf8c0a71d4909c8c650c79797ada60cf0a1ea4b450def245e8404c602594f469fbbcc87a515d51eba1895ea3979200b4670c197a263281e55d936f70bc5368e492cb4bf8588943a01e1ad28d4a70649acc71d5904ebfcccc9186b6ea690972b3baf4992650170cf60a08c392b422b9112e4c72cef48b101031730d0b475499b828715e84b521e4643a888718bdc71ff1405812841450964ae539176e591f3fe4acd190fa111914a08caa5985267b1cfc78063178284e85c57294d100bafc4d5a86be7a8001d10b13fe286bdb44cd23872e5659d299f90b535026c041710c1d40ef86713656cf0a8614f6ab2f69c3ccd12d54f08d8dac5e8673ba6305d89a11c8bfce56207943dc08c0338bf7fa4d218645a9bbd6bbd1fc3cf0659f363916498c67d796cabed07f640604b577d88b4399b0586e20aeef6105090703afb6119df0a45056309af08c6a2b0969f724aa4c3116f656d4cbf0cd5ebc742a76a8c02c4e3fae5ccab332b2b2302f46c578727ca17452155bbac47a3250abe10a82c19f0823d1cb8b73c50cbe5a4a1cb960731193aacd7080fd4704027024c32d558109e093089eafc5d797d8fd4c52ad54317dcfc04c33d68ac3b2047588937c1ec83c0df9b4b591accf8471ab193421ed06bc1eeb23fa74f2a9534f635f5b3f6a43ad85d3ed8f983ca48006a49022a7227c7233a283dc28eeca68385e3b80233f13ecfaa3de8b51c9ed4dfe4dca53f7aed01a0f01fef45e6baf0b84eee90dbcf26ac0f782714f5d2a3e93bb54cef114973b4da1f0a26f17af0eb5fcb9bd7845bc21afdab5d7bd45183bfc4fabf96cf64fc7cd57a5dca0c2fb38ab64816abc6ba2611e8fdab50b8fac1e834cefc7b4fb166a37b1d2addcc65cd8eb9305557005a78e4f5ea8355e4abee5c90ef54a35a13efe4648267455cc9ac252c44794898ac2f4f8e4ff531be729d5bb7c2ccf700c56575aa72491fce3db687d232bb1de02e6c6c37e2a6daf9746b3181db3da6e2adf48241beb899d75cf07db0d094e8a870043027ca495fc1aca2419aaa0ad2683b13891fcae9c7c01be20720b8499a6deb477dcd108e5d6943c3fe0d48bc3c765294443890e2ca49cfbed08721baba8de08260b198fbc3aa06aa9cdce9286e226c922335968f5c0679397cdea2e125472cf33d53e729798e5fefe94278f10222e99c74e5f38c31d4bf73baa41c6b166b630f175547f63fb9cb61536174a5ab2ce5cd22cdfb4ed9d2e3849e460cc9d23b019ea8a9f5f46e23e73ec7f20d1af40315ae742771675dff3ae67aa58c7e5eb230522b3ba88bdf5f88227d9f8f26bf416c18d1a0340ec6d18b4340e9ed725abd52b8d3d620621d550dbacb937851b8a58b58c52516a8ebaae6c6756b4f76bd325fe7ddb976174c98ec9744f5cb22192536440a3312c9320f89ea0e1963375596c52f604b9f1f1a7514f8da7b83f171d208bc4986c753a20bc21e2e99fd0cd546caef9531a8c48776a82a98a76f4ba8f75844a0939c7540254936c607374905fc7d23593a88d2aad1cda97756880bd937a93f63d2f20219352c5e99a8347648159f662ad8412bffec74378206e562c7c434a87d41905b0f52eabcb939a34a6960a1842d9c9efafc393f0c0830cbf8d656b3318de8fba68487d2eb8a02b9475cc51eea54c9566792f9b1550e85169c797b9a768919ad704b63172f9499abf233fe027bf2e4b88c8ea31b665b87d61ce24d55827e74c94cdb376b240e95b5a26c83250434fb087abad1da154258b726697a83e508832f036342ede518653cd378b52d693c5edd70e4c8f736c317629b798b04dec3ef016b8f6f2ca74f1999e8761d7b5c15035394179cfe8d0189249c7b8f9b5b3aaec3d9625f16b1c56387a9ad4c31fa7b76521a3007fde5e4b1cba6bbb5f7821f8b9872214acfa0a4addf46c739a9f95e387db26af2e7116542b856639156a08e9ab5fad392f833f24844237d6ec5934daa89d0fae688d4c15e03c003ff42d87d8c0791bd1921cb3fd40903dacc8725d02f182c3f913b8fb31a57520c105f98e33dedb51ff7d278886e7b0f5eab3170c8e00d8c76a23a2faec7fdfcc6e6ed9a185d7edae8a5b837b062ceea9f3e132d6f692c1609813686429365b1668392b37a79b57cb07dd99c0418823e0c9d963aa1d6726dd8cf5848c63459534306454d51f70c00444485f4978e4d81c41b60fdf63b19e1d9d79843e8e8c25d715ec92f9425f9b132c7747e3074e6b454e044f57eb9f89b71fadca26827c9058761f337d1eaac2ea46b8c201c531b5fa5d19fceac01bc6201d78aed217441c432f0088a05a990e788a0ceeb2d831cd6ce1e26881be1295d00e090953153bcb88945ee1da39d9c2c5c7255efa4257dca34085c45183f17aea3e898d0dd2b08397534dd9fcd18b66b0c869a1c83b35edddd52ec3b6c6f83aab84ff36a2329504d61d6082d74a9ca8917038ebd5458a3408eeb0912f1169ab26c3cbd38ea38070688c34c656b9996572bd48facd068c06eae656bc576af7c8e01c0a5260f8ed39420a2ac45afbf994834ce5b42f3f9811a7e45c689d539d8a1018f4030596aa39d9b45972ca0a4385185f6300ee73ec725dd9d5cc8f66db83c510e3090d4e1a93764ba3fd469674732f4c2bfccf5b55b91048dbf4e0839f24448dd999adb0fb4857c1a2c862e45803aaf7db41fd9d0047654af29c03c884365a3fd12286d7079743d3d010ae53274b697f471c80e52501fa54513d5543d86032f785c3f1df64a5a5aef229bd0450327fdc728744e6d460acf81a75a80592fb3a33874b3d5ab1474d53d9b9a85dd03c3fb1e10d042fd5c4a8b1d639e2facf4092385b9828e35204292a9e612cd0f108504d378c722c34f89ac5a3490cb0b009e50b80399e4940a8b60010dc510ec166d939db46a96314ebc9949b61e458ca8ab4324e1c1779aa04d7299e55409dd35968894ad54048fa60964ce22546db446bed71a199369a5df11d1240b9aab2eb95a86d4fc41de538c921e18908369fb56543e7792ea8696aecc1592d8d05aae5e915c3a2d4df5341f66e44055dd6ce5215e456b9f9c0414e1d1b61cd02067919a3695e10a18a4e5cb01059b49fb1098af07477628f20b187d8ddba36307f583529395dcd97695bf195c39a7a032130fe292798f21e03d3986e5e212640375cf31700e12951665f11642e3b018252c1699e8ba03192eaa376867abb362a6683a90d81dbdffc32b36a2365d919e516eca13a098200d31ccbc0aa4ba2445c77a368a29af53a54284761f9d01cc9602dea58fb5ceb723e4ec9c939174588b9784053733f194fb0405494114e58df2a9319f1143e2c090be2db50fcab371e7d43339574f546cb3760508e8b87b65ea3ead01c8bc5b7c467b233e5ad1314152923f1c8fc843b6ee497b50c4655a70d2c3a11756001d6243b311703627ad8ffa73a210c560507b88e36229495931942c2340a3ecf698e39550c5aa2e574cdf9b61b6974499832b439615836647d94b1fe7295eb83e8b534abf0b9a51711706b0c37112174c3a7a703ea3b6b6d5ca01a8d6e5d0615235038290fc531b78ea24039c2ae6b36b30cf2749803cd0ab22e50cd3ab319c5f3243aa35de1ebe1199634a342d5e47d95d6b63fc258aca749934ab99b4c7084f6f848f71f6154a7add91d8f7b3fdcf2ab6c8f618c79734a62e1259f305d99afd3ccd5e0719089b0254908befd857a4427df58562a1def167f707690b0e0722850d2e8aefd0f1789bbf60a186bbcb7bd1b51109d7ce947b1a288d241cef3bd72711e27d2d2b20f795258e06c700521626c81e0ba9b1f6a618d3edaa8b1f3fdddf32e10b4b3e62d7d985f2095d16cf3ee9f6ab522ca073da3dcdc4b5d4e3dfc8d2c15d329d81e09322ca5fab6762aa379479312078a804dbe4a20bd802b50bd0790f7e27f5285fe99211f09ccb74ceae69fccf75cb0fac77717c1850bd81f51ae260da2a2eb74e45d4ff6c84a5afe3855b7b3b2c178edc2dd95205513992b9dd18b598a34a2d802eb38c73c9c7a6ca0a70d92e8a5b0482e77a0ddf8ddb3ec4514200615d30961ca0805ae5aae38d6667407127048a75e87e9ddc561cc0b9fb0acd25b153abb93170d3ef3b568bbc24c28eca40a882d1043faa0361bbbc8512e5362abb9d6744e69dd35af9bb931d1320e39f7fef4b5f6d91cc2a24e856cad24dc6fc8ff8d9251eb799b9c7fd995fe72499d1499d25750d569fb07589247c28f03dc26c051925d3a6154b52079eaaedcbf085ac319cd42d2f26dbd0dcc25c5fa1e6a4857802c58d6f1415d81b5315dab6c812c67181baf10433e2fc659e006c03d1b2b9b5702aebdffa9e303e7f6e2b0b7cbd55618558678dcb1476542ce4a2cc60ff2115374b4f992cd8f3b4d570a5421571fb6e515c54ed3854e44f73924d4a338b0f3a21c658a18e95cf2c9248226bd2cfcf5c9315c5ca7c891eec7d96f1ec02f091951665489d0cd4d6052a37725535d8c5467e90c4221914e1c6c0f36f87c025543c84864f209335fdb7ba4cf684d07d021722707c7a5fdc9ca327900b0cc87e0f0211d95dd7686dee1232c057bc7b7c05a6e6551d56a4b31b0ea3a9ff0fb224b2f630257c97ebd24521bfc4127e0589f931cdc77b01f8a9a477ea316f5eb0773334e2359de572ed7633d3d43a7ac7bb9c1aa1128c9634ad3f6844cca418b78ecab5a0732d1dde73ce1a1bbfdf3a25b7963fe49a8d09606b865a0a48da360ca726910817f7081a809c2abac63711073d2ae1270261ec84d2a7c8efee805191f99c553b659bcc3c374018080f9dc0437f9aab7105353f7cb454b1502440d1063208929af68a3932b001281b1d8cdde5baacd5ec83451a680de13ecbf4a2d53a5bce40036934ee2d7e6396ddbf17d110118f13006762b9e908b7f824c5192d2538de7b426a05546be7a9c224990f212e13044b4cb7877fb102e686763a311166c9d25b5d2b9b2c0612a86f94e8d476e8d24e3a5dde47666a379bd0706ed7e11da362be748b3853832919aa89cb0260f1a6f273f69e71a9077ee06c58c7507db8de2148ae340723e1b12e04f075d66b371b6371c66ad746a1686b725021fd15ed407aef1750c458ac1b24eb351f5c400c5c87cde115ee054f192041b51a29c922cd2a59ea0218d537f26dc408b67e8d05dd59a0b231c85a50236142e2be154af22c846579ada4ca701c1afab780348e16c181848c0928c9deef0ea53e6e0e79a49f494c1bba847010c31c33ed998bc9de1d402d5e983b469c5175bba728df446cbd4834d20e4fc7709b4b0663710d4cf841e037c90fb323a627d007d61d992c46295649d8bb5d550fdcd22c1df56cc7b15f0c019003c75fb63e4b6f0449d2d297001b4b40188d2d786d7e0a1b2b09d2214aec77261e171a289534afbcf88377e401f14ee7e773c57d1a0a39e0ee4a6076eeaec0d41fb7e379abbf4b6cfd531f4f1c2737005d24f32aacb4298f24427a13a605e970d98cea56ab6d13a1ad790024172e2c6a4d651663ca529ee28f6e51c8ea0a8c4b8ef623b96f4d16af6f70467a169ea2cd3a65adb9de6bf2340b7f71b884f7b319202ddac8264107e03819fe5fe3383342394a11fd85c87d89d20786765227545b151343be34f43c083ab40a71a6d9e34be11667b53ffa0dfcf54e74e9e218ef84b7840e28f345ecd6c520b96473ceb739d4e884047b96b707c7795f177b50f20a279f93258dc3586a44c158babec5810e0181b855a0317223855338e6b6826e656735bc5eadb51fb28db260ad78c4b30952447aae5f62b6a199611e7fe105af384cdbef1c4f83230b8503663e7095f4c82e8cb636e648b1e79f99360968500dfefbfb2dccbf0bc21751b0200c7e7f6aa8d78810002a75d98405c19d7955891a90011cf2c401a4f68344edf84e0f3d9442c2abb2168b0174cb160bdf8a4e113c830a723b6e967cbd11e3de0294e3e152773d060c039a7d0b5ed25a16d69c230b7ac4b69b8642957951a5b821d853442c51fdb1718a9f841317322c9670058d701ffdc88915326bbce3c5df4e9a79a4f93e371ebc9fd28980c79f173f976eafc300cabbf27be2c8f47f005f0ce4934cda0f87762d310a5a17238424814b569baab8dc63a6a92b03b969aa0024f407fa298dcc47c93820dec8462493f7a84dbd3b2ecea9700d561e6894dad676684c7eace249a196c40351bcb02e94c0796f18fe082d12dc5ec41853c3c1fffc061618e9ecda7d183bcbd9487852c7893635d01cdc982ab9e83b56e9a1d2c184f2ae651f818a46d90edbb24f9dd863dc96bde0b88f6ec9fc504c156c1a08fe7cac86d58b3667805fa5436cc89158880a61536d361b97dd0ae5126cbb1b463f5fece497a7e2d69f1443437084225e90a8c828992c6b1a8b04d73a37ba1cf4e8e56a9d91f25d39b47d474465cebfca53668a93a7d7150c5c2405f557fb186a3a05dd1776eb63e970582c477a6a719ed4b730399c0b936390c363bd41a391e073f252309475007fde7ecd8333ea3366daaa30e87f6e77a30df528d0a04e0cf1b8117ba7694c8411d9c77c6c799e3841df683a6efffd3a5b8bbe71840850b4224e8d8fcc9fd0ce42a5ad00ed2c920a8887254623ecd372db7f0e3087c2ad2f7f2794dd7f9c343628988e10c239c420ee04ce2cba9a266215747c27ab3467423fa23fcc58f0943484861f022f16c61b5212980dae06a9fd0b3a79fa43e42ae73145b6ce5d1e3e990b9183d4dc1d50e09d5e151754245b9963f6322a929044d03a07122fdac8ecc03d2fc45929f80ee469c0e77a4cfa0b1987a2805f0abbdb1c1db4695bf55221588485d4f616bcf619d33afa4317c2c44456caaac3b60595408793884a6d72a412282420940711d5cd62155a9bfd69f1c1e039c34b91ce9f812565cd5f0f335a72b51c9c48cbae4037b190e5dba51e2cba18c92b092d850c5c19f59b592cb3e40765548b9ba14911a6a8ccedcc7bea7f48018b71ff7315d73e2949e346a8d22f50c308dffb18fefc5a844430356006063852c46bd70d9f64509485ac2118ff1296189b9154faaf3bb48fc35e11755d248e0b35227740d719ff3dd1ed8ef26fb27d89eb329e45de4cbda6243d6f1c3d8a3bb07f9923bf6c1613fe986e17c185a855ca2a4e9b61a1037e30ff2cd69ac93ea1918ba505ce728527a4f0868e9b875f6b1df1a1f7751dca33ef560cf475c81aa5a1160f4ec1727f4ea79569b3d4f83fc147110ca4f42c88a90705d861b9fdda68152a702d93a618b6e434f5445e27ff0656756bb8a473212183ec88199abc686d94733109be2839b12e2b0508ecbeeb777b2430833c6db9250a0a4ad40e51019e91a4f26fed04c1dd4c13f3b04d3a9f269669d8fc1bf01b8f81df3cd3e50f123aa88019fa576a2ed7593bbf08ce2bff93887225314ca0a47dfc59f687a79f838af89552d37e2710d47896b9762201bd25f5dec0db60968ce1bbd54a37f2ac3b7ea14011aa80f7eb56524cc0c75f0546f6802e108a0e394762056822ad53eff7ee16c78be8d597358aa4da1e06324668984ee21b79be00d58d68dea0a2c22abbaf835ff96f24fdda0f251fdc8f75c2949e0354339a43a1b791b92d5a7f73092483d4f4a2e8876ba5c4fc8794e3e288830cf2704d66999e05818cb5c19896c3413b5957a19d2069d0aee404a52ed7c4c7b1ad78cd490939b5aa8aeea3361406356d52e767edbf8eb74a3ad34acbaedd24901622efdb24054967b5bdc8cd18d2fefa44bb2d95e294091332138b152e53b8fe5a9cd9ac969f33e19acdc8b9a17aba8098f54fcce16793ab55fa32b6f29588b72dda2c00ea6c7d735c14ebd843fbb5b078794f655c2e13d170d8508997bb750058b2a1cc273f2dd8be91cd340da1fabb40b9818429db4e5e5233726e392ba0edd8b82581269cb7fa5e729384ec07c11f8905a8bb295534a20e8d36b62bf8fc78a006145c3a5e5a12bbd7d3bc57b6ec42905710c0968dc0f5fb1246afff7c6c0cf37b89bc22426abcfc302dda0fdb8630c9d94d4e180c2fb0878b2b843c71b57b1e39ad4a1f0d952cc8c16ed54ce6aaea8ae9932797a405952172a3602317630a74fba216bfaee6355fad25296c94c5e7a1cc61c1fc98a2c921d1081c7c247e12ea69a2b6fa7708eba4793147481aa6a0140594563f00d0150dde482b677c87f3a8b57d960a76eba364bb73d1229108ae7c389d62f05964482a5d63e164245aa7cb435fb9a4eea334bc544eeb2fd182751ea2f2754dc7832b5c727371259195f0cd5935a2374fd9f2a7c19efb1a6c68f145226b86e983e0f315b720309f962a594b06d6e34d54cd488afc5bfe0358bea7a9253e447a9076a0d3f2d4e443e47d7b08d0ad722a179b79e9eb1d983a7f1d020c455465dff4a96cfd1d6250c7ee38b28e9d60dc140a94d7cd0f2a23cc5ce5b63ec98133d5ec16e3481d6d9c6daf22b158a0ecf093d1b3b047d9330765fa422857b0161bdce92371ec3efab1a3d256e55cb3ba8379e369a2feada527add83d553cf3d05fb6f41bdcc81b27892434b1953a885824ed689c9429526a366681424a7fd9120656de725986d219041942ffc7d49f2d8fed079278d83618adf84a88d587a923eb35537e765f97506a09c325d02f1aa2db514d40039bafe5968f26ad599f5cc919ae3c8f3cc7b713393281fbb6a6700773aa66d4000e6be7e29c312dc8adc3c9527f206a9556a4dc6bea848c8209223aedf50292bf2711966041e7f90b584de55a56e441f94b136f5ed0bd625de53f795db52710402b7972684e53f6e913a0130f30eb37c0b5ff22185e6d36468ac6a818ad3c5ad400e9210eb7418cfcd5e2682c031fcb3e35190b8a867c970c6a706ee6b6d42817d2b866d630f1f99dd97cc97272dbf9f5ae1f193c9d2e7968cb16e2734e84c437d468f5e9af8c34a397a6c21ede43f54167be3775b46dc3c34d22095e2f54a7bfcc19048a05904a70d70d117070338e71a23b2eb9e93f0a12e1aa8e64c400c724a07105fe68cda95d1575d94d75abc6002457bb75f7f2b42d06da9a7eadb887350e43ba6ca0d93d61a6dd88838dacbb843a8e3579156892ba6ab1caa69d1cdb4cb509a1a1307bb6c8a3539c19192e3fa6855d3002e2e27d26c5c7b0eb81f72ed782724eae4daed4805e2a132f8826a076274eae646f92fbcbcee524211b3c3833c484253d49f8a9a3c8f0e298765e79b5e1bb63045dddff8954b774f0848426a2afee83a9e4ae5a09997d4441f82056a50c63d771aed26940465e102b1cb98938665ae05791a7e2daffd51de0be68bf69284902538371b48e3224b122091d43473adfaf74ac3b411a39ee3c40a42f897471e75916256639043472aabda1aa5dd227809d49a2f06a75a84b17f572c790d0fb7d9b41933cedc087ea862257415499b1f97450dc3b0f582031d012208ae5cbd9b187f89cc6f7c658d7fd6ed2d034dbded11def0976446cc9d63fab09bd0cb6fa757d4b8617ae9b93b8d63b74f10e893969f31f859f9e2c7493541106ecd074cd5e4d2c0ddab84f31342dc4882333568a01f48dd1f8c1faf70b7331cc87a267ae19ed217d06ff2399d0910c7fb102d2c510282141a8a9c5120e6031c5c8c682425ef325dd1f5193b1bbd067fe8637c7fe01a01dcb0fa039dd0fb2088b696c75d6205e1a70c1e87a03f5790defdcbef21850e30b76e287028883c7a97bcb28a2ba30a88a8a7585f9969ae0bd3f803eabe317740d0d76f55c1b4742045d5d3f4c291154794b13f3bba1e0d09e50aadced5df72ff17e182bc5941fd71037c0069a4cd86f9016ae5578daf6f3264c13ebb5af65d5f06d0bf4ac42414692c4bb1f315c993cf92faff3b5fef7c5603ba5cedb58eb7c5ece78c982e7a108b4d23c12da332ffd3107a27a08c45931f23d19265f507448b36d574c90e11c2e88e9c68ee551ac65f439e0c1b156c1f22a37308a2bba934e64b546dade7abd5be9445613bf449dfae897b60a55b9d539251aa39e726f532c4c9d6dfee8e6a1e009b6a74cf8e4a12556d50cda18a9ba9a2413e292cd51ab055f763488d7d37b6ba90cfddeab66378bfacb0cb4005991e1856fa8f880d65ddfedacf9abf2615954ce386ea150f088232c189c1c8546f3609f5e696b7e3f793e6555bba21a81805211908b49ec29ccc4d6df7faa6bd5f5ebb1b37186d4aac81a737d44c19af94390d0abe002f069ca08a04ca69c6a628c7ae4f4abc5fbac7951099b812dd9abc4ec81612ad62960cc48febf794f4b731e4da9d51ca636991f2e48962889a7133ebaccfe1b856e62306d617118989ad56aaf435baf3ae2fc67a7a3168d71b23bdbd18dded89a11e5f0ceef60283cb821593d75bfc8525f903c5dc1cbc5fe78890095f780477524708827450e8c3b37cfedc8fbd014920e21136491e5684b34b7c6c1784820bb75a3ea18bf6b0249e258bcd0bd7a723d0eb207caa309a62dc6d431b597190a64cff55a0cb82e31d842d79dc88376b1165b9812e680dca32dfc0a567c5538f241f42dc4891664fa80905f83556563b2e6bc8dc6aa47282273bc27524adac539829a54f612f68d43e8176cda7a339b5e1cdd2020b2d3d027d4ab8c9020d704e392bbc20ee5c24c2bec9b27a548650f76962e872535713462094a7bc40dc65a3687f9eed5d9bf2ff5d7fcf7adae92995763a7251a81841f59cf29aa3bb60066f94a8ee15dfa379ad428772fe29d9c55b18923e484ccd4ea6a3167d21c9da415c1f1a969f1c5683f1f14a4ce3a4e9a0fe79275ef61cb21906c8a3ee7c22351cac5cb19f30291257a876ed67c8da5ec6daec32686d37236d77195dbb93a136bd0caedd65589b5e06d6ee333c6fdd25c56e09f64201d1b324561791cf28cc454dbec2723f4e14375fe01b6bb2b30a5f7226c70a572962b3e2ac5e249f49944749fe84e67fbc183e77e60ebb0990aa34df1033fa6d20422677385fde210b99d04d0d3f4717ebbb540e9cf357ef9668a94c90696027a03791c717a30f2f463cfe187d793168c71f03bdfc18f37863f4e1c798d717836f2fc6ecf863bc971f035e7f8cbebc18f3f8034386b5f1b97c321c71c8842e6d28ac44ec942752d5995d188dae4842cc53b6a6cc198157afc0da17d29ed33b65a90ce49442299065985e1876ebc0fa82cf7023300838e56791a4d7b94d44087903918fed1d5330ba0511db6561b4f516a050b77b83f90401f8cbcfb53517825b842ceb9d15e0c8da3b864cc33faa5180282e04c24ec93cbd196cccfe498aefe459abf20099c9f12b0daf9f619acb5d3707c45dd6d976bf774a4364852d8b8e0b086ee0b5f6920a5907c967934954ffda9cb1cf75ff6874f55e51a91b24f184ce7e51b04cd80f16722ace3eb8c9e5f4b3d6902486f4c95bd5d969a3c767261e9114ee12225e1bbfc578310e2afe56307aa382dced462bcae1a3a8d23cf095c2d4b0f54c45d393aefbdf768e917ca34ee0ad0594a63b40ceede4c3f3363382d877024da105f9d04343bdbd9245e08019eb433696c3bb6c7b7962ee7d74cda73e79783e81ae09ea005260503e61b586d004641a0cbe90d219f1337f8fd8061ce81cede5b55543a964fc629cda1242cb3f47f8f14151ce5de9b0b617d30a643e1f0906251727a30b7badeb1cda50c019a471408eac85ddce9fbcd151226d148b912dc81b229f409123838145504a60eb3990b8a2185d046eeb2b154e913d32a30f507f7e168c6b626bc3d9bad534bee658bad49a9d155d9b9d3b185aadc49669944f6d77eb2d486b41b876d7a9ae9955c04d3fbda7a11669ae6ee289acbd18fb4ad215b5b0ee768cd70636a98ef8b2617c619cee9e49a7ad3e82d1c6d117cf2870f7e896276017f73bb8e63aee7edbb704c3c33cee0413c5cfb2d57c1674d79621d8c2c16eacd1e066c93fba248297ca2d83ba5243dd9a864e93c86f629652d44c6a459ad6ada52a35d66e0b80c3968e21b7ac7a50ef73003cb4e31e46e831ea59a367d03ed92b2f0bfdeb873bdf24e48a08ec5b56310f1c4d669d04c72e278b23b3f1b48597a81f00c108d9a6e784f26f576a2e0b7d2440d4bfd146f8bfee12421d9cd4383b0f6f1876e8c78c35a17ca0a635f211a9651f1f154176f389d065978f6825fbf8a808b29f6f13bc40f2112d641f9f554576f399d0659f8f6845b32bf26f1ad853723bfeade0bfc45d1fcb7c63ad64581550318266cb1d582e0960de3d6333dfeb6aa2f2a6cb6758c6d70b1a7e17510c60e0c9d7c93563e6199351e036509143971a4c0452227ae5ee0c281b57dbc25030945dd61a0844e615ed0be5482f41fbb563cf98aa36f4a948b52b9b13a3057723396cc74ca9bc84c38e3914a34a9426dbe0b32746919f7e3c0913168fb05f74d2c0c7f9a011dc7636e371d98672cf468dea2c4570868ce44ca189465083ed20910952918479353c187e04dfcc82128a6866daf1fae5f350693d6638f0418ce8ef43d3c9e40dd12cd646962c365e6f083af6ff7e11acee46a1a1d00fa12f0e3589a232803ae1bb5fac179d089f75a51b0b7fc4dd38362500146929d21c434e7ae39889c1802fac7e40f1293249f70d0c4d22147c176bb31d0b3818e0bedaad1bd0d392c31258c7a6725468edd9d251cc49bf76db32d4d070358cc53f50f8f634c7c7e8c8955944c69078d363696c3089509f144c7f4addc4fd335b3180900ee7a5f093a94e5eb179091370d0065fd67a37fdf7c5229d81acebab73a44a5db5532d71f19629c2c96efbf7531d708dee1b7de9ba41d075837af26ab308d05d73f231c0611fac25c93c98431e0bd2771d05ce080e61d5c1f0093728a4d5aa6fea14822ba9bb69e535d4414d29a4817a8a55b429a1e7076d2708f448da65d09b03b5f56ae9302d1e05f8549646de0028dffc31e4ca7ed3c68779e65c60cd965e96b2e18fd067f75e2e9882646550ee0626ba74b0baa8cf19d276149073ed397b2f67ffe354caaca3988125bfa37d69bf55c3622e9801d85bf6cf81fddc4f67404049aba4add5ccfbb5eca0ee2d699af1d3ad9906499716474435b14baeeae171635e5774bc30218c8b327e2eb42a50ef34d4c5b1b56e80864dde5c285476147e71ddb80c6a4e381027aee1c16596420e44381670912181d3e2a10e0d35bf78615ad242de08502760ffb108f7050da6a8d0fed3ca993e79b5e2c8216b0eadb61bc53a9b9614fb87a5bc5363e0832df4321e4ea6254035751032013ea08beb67fbeb8017a729c02600b392d4290aa68e8f3ce6e0496725c98d26d3e4d1da8a06a15c1ab2e9a3925da58cecbf15486ed93e6b07a85f07530e194812f64e075dd6d3b362800eb0ac8b3045f80e03afacb4f5fd7f78eda657745b2990ab667c8f7709bc9440a3c9bb72f4a8879aaebac4aa01aa3bac12c2165a52d3f84479e8b047d0edd56388c1e1c43cc6397938d4de8d1ba371c74c38ab51810cdcf3efacef039fa8db1e29a427fc5613754a6d62ee354b970d39365c1f5d107ee1a4b072b9aae7b1269bc6c7ea1cc7d521ff1b0c9b8461bfa09696b637af4baeb26c21e2f3059d45d7ef295f1e1ef57d368b3ea6094befde0e93302e2af5b3717ed881d3ad84141ff77dea9e26d7b67077a489e92cc09321a824ab7d4f223f6f63325f41f635255ab821e5f1d87ecabe8e6c5c29f3c36b9816220c4c5e8b1d92774f72ad76791f7b9171ec16090385d2066b37a140fe9e04e8077208ce1a85991e6ed2733db576e101f64384fdaddbf05f2b228c7b81836229773440e1a52c284ba1ecf71c3e75a75640cd86e7dc179f63a93254b3561dbc533ff34a15ab44b4f92312fc68c2a6ce03611675fc15ed129fcb8d6d330f6d0e8d566aa9791691fc0a5329e620b6acd4b02d58e934ac4ac7fadb32bc6a47bf20bd6a0800c55143679c16028d0f0d42329ed3f4cacb1f0207063eca3d4aeea9800678dc73a8729292d25ec5ad76aff7b315408b08137659a770334397863a4b6c34a91ee09cebe41df6e91c6ff72cd07d6347e59e31967d9cf683e1297673b705fd960b1637b6c00df716f786bbcdbbe5e26ee0d1fc286134146834cf8bc9024b3731a556077fb7c7bcb35ccac10de90a266676189042653cd1ca3e24aa95f8c389134ca6ee77af13a9c3aef4631b51dee5e61dc45006ac27a09a8f3a3340c1b5d1467efe6a89b617b83cb79692928cee8f5dc557faf5a39ba10be8ed486cca49402ec205d7e5a177a59b05910d1b3394d864123511b80175b7711dc1c1579f8bc56c2a3ae52a3fc0eb144a794c4ef37fad539a093567b73fae30e195ec01499caa0078f3f9ae0828d6b051b2b2863f863a50d5c7fdb34fd02ad43c29e794e07baaebdee00aaaa2b5e7e9284cd26df731ba13037f89cfdd44a3165a4f8048308a351e65ec82ea8e1d240deba64510d958f6d76b6173b226c174297af5dbf5cbaf5579638e3d8a62fa8f9492a38d9641e576932ebe567c7357c1b724cdb1d908df13a17cb7510bb7e7c65ad596a75739a669d4f5722b2b55faa0c4b0ad1950c40e98124583cd1d0d5fde732004411b011c42701581292bc09317da0e70d8218530203b9490978b07acdee5e6936a808d6254fc924687525ce69192e3045b11fed8b1623c36fba8e0b839ed6f821e571273b8e03d7557c976cdc907ed06212035d7ed43e9087ddd474984f3014c08ba4eb9d6499352d237cc6ea225fe760c739bfea18d1d1f95eb5e58435f47b7aff33659a37705ca53aed0c66f2db5ab60569886184e0e760edf02ac8efa3859d8d3d24d91b373fb18265addb32be689cc5ea2dfd5c91c33a55fac783c20799903b7ecd036884fcd88084edae2e6a77e65609fd4b38a604523a2dee560a01672a9bfb2502340d262544f011e460ff8094ac154e9cb7fe27ab85c5962b88a092b5a802c13d1b97bc3f624d408adc373ebe8e0c0ca65fdb263a9c6ca6a74d42f6db407a1b434e6e6cf9ffcf0071fd62788070d9bbc3ddd0cf796a66c08636015bfddf7bef4aa9d1eec3ed0b6d7de597d95356ad72cc4a6b07e9840cc34b3d2e8ea770ebda989b1ff10d03f2eb6047a20d42287584dc3c3defa8a60f6f1ad0434d1d3772270fb48b6df036fe2e95d03a577162ce6e4acb214ab22295d255ce46ac76e213f3413069e5057b2be5e1657bb104eae5dce870bf73d747ef10c50bfc583844ff09309571c5444e597905a0342b00222fba34b3c09abcafd8b2e06c5e3f97a3125c5dca15ae2cb6e99afac89198f0dfc27d0db4109c92a5d2a3d7c76fbbbf6a57a656c68c7a5e711d68498839a7660a78fed9330ac7017db34775415df02146a4a046e76130d924a5d401ed4bca7a86c9d94c69ae33af5239c3fb4dae39b41a2633ef4c8612525265c0460df4705f89c1a8b9ed92cc2032becfe313d42bf9c530ceac66ace5f2699dca967bff2d313131a6ee54e0167b98f995c306f44527917d19dd1e3f5c9f58cc08685dfbbec7d2ce35d4ae810daf94979a3e1d9cf9e069884f2d49392dc7bc0bc5b12239034d9ae39fea921a92ad4ad4634568d326b1041ce5043c9b65f2f8962afd6d48f12d75d1eef16afdbcbf60fb7208b0a15ca46d66012a9ca799c93d74a93b1cdc88b4b4840c6866cfe59972f5b4dc3ff40febfb3e5c4da25b5005d92cb38bcd39b7a46234dfcc5f9e829df9c5af1f1ded44aa9dc3ee15187c68d0b06c4a760ca00b371cdfc2b972bbc326a71b7ef103946c926efc8a96d245b719f16c8361439f6b64dd4668baee38ee101708d9143b3ebd480ea787db912ea36b22d907909402099182b325140fe455599e6eb04cd8aeb8a13ebf1e20f0a6da0f9c6f42f2dbdc78314dde05aed3295d6db2619816594818ebbfd5af82c5238870e6fae0f6ae8818c05ae8e6808b3584b64b063bf93b525e48439a7a0056a7e6269050473c219c1011e0b52832cf80cbda5bb1268fbb73dce427204ce546ff6f5a8530ea737f744acf81049988679d3fedd8c10c63368ca04a583711a70d3156f868eb3e691a6e6c821c3478057c99ad1d5e0f4e62012ee2864085a177ef81220cc3799c29e0f5021bc65d89c3e0b0035b7d19775096468f3df68002880e7713a2319c4dc4a2249bfbfc99720ba0791feca3ae3441e0c3137ed9372761f328c15e5d47d99db6cff84de86873bb11c19ea0e9b9d449166ab19eccef576ccd769d2fec0c019baba957bddd03fe4bcf5ef06eb123fbd874eede042728950f06a2c1d14f12da205e85019a8a559f68c46e4d342df58f2f0bacad297a619207e4220d1c72ac9f0662168976620cb9fdc8c80bd4683f8ba86ce47642440e1c66cdb0c33a1b6b4394713acfa3012efb53114dc31df0c8dbb88053405a2d481921c4766c03e6e04c9a7ad34e8c942508212b1ddf5f70d6328f1c39f92e26290072903f804e6bedbca91cd48f55d05e24e80d43d4524b02694231a97c0e4d85b7dc3d43b760bed08c647a5e3ee196688c4787f92d89fcbc68240aeab1225b315a1827280bd08461c83a74f3c346cd516fef20de9b3a070a4a6cc8d9b60ef38dbd72a3a2dd62509a670e3eb11277a11f0cb80913b64c0b32bc5af79c46f9b0a3ae68b59f3e45b4fc83396a94a27439ae3ad63f6e49a1060567c2c1f66d2fa34cc107b197fc2ac6beb00fd6c763147a39e326ee6959c0a38ab7cb821c3d26fa40692692ce988c5e48392ea0b94e7a39a6045bce50419dda116862f0ac35709c307614c8f9df99ba9ca43cd08ec223ae128678c9d501ea366ebebc77440118f54c0ad246b9e823a183433ca2baeb86d3b0d75078a5bcec0077d9d20b079f0b166e8d30304c3006df481b4f133acb1b9840800647f34cbfffdbec77e7c044f914fea3f9fba0a157762fac58660a3cbb088c2a6544f88d9c64e41fed194d8909c3fb21f79644dc3655407c4ce29d948d8649bb962a422af890ed96c81f3aa125890c79d7d2009aa43eee64f8264892898b43306f69822aac5cf74dc87d6928809aa5129649a4c3bc5d8fc971833a641c9877cdbd685304d7e049d058afab3e30fb6c3c4bd86aff4904c880e265e98093b61097d9fea0b600d6456daf05cfda06c40e7058f290a86678513496a7fef097d7f98077a1f47e00573c5d00df49c2820e9f6d330528a313dbac9c0980fbea17c7e8c2a66f76fb10bcb415117d79d7347603c4f02dd0f82b84c7b7c2a3fca5e5a3e69d5525130f04a7d820d77b6ef5471b1c423abbf6478029aba0114574a4ab2a64dc2a38338c0778e6a5d1dd609fbad20dccab82d700b3fcc8643fcaa9260c346ffbb0a8c62cca4202f816a3df9e81feedae648a853809fb35c5192e1849986a7e3b0814cb02fa568d2f4693343f441da51055cbac1742d33960b490978b6f5a54abcbfb345bedc89f67f2d0f56035e147da03703e2f547d8ffa351093968333ca32a13ca94de8a0ecf2191bdbfc7d3a2370f8f54d3895e45a4c38dd323850c20183d098391c0dd00de61e66608f9adbe7f329988875df8f95ce9a4df452129cdb8cda7f99b737eb652e4164002191a2fa9d8f6f4d51ff6aa8e3b8aebca22e7c300908eab6a2d6d319ba1200ccf7a631e35ffea89c110b8e3cf4db13c48dde4d8a33a2dd3ab66e9fa38169a96eec5dd53a187e7adc1b19499810b29e97fed80f5126deda19ed540471a69c552dfb27e620748f0df9756b8ffe77dd0f3d9e93e1e7f9aa4cc807a1904359571f4972a0f2d909906d7d13b73c12e7b5cd4a32c5879bf0ccc61f582651144f9df5aeac00529cc5c3039886199cc3dcb8715dc5810eab040f7576f1bc0adb29eccb31282a922ca13a61c4687f82cba0a46f21fa75f5bfe535f249251df7627c74294319e38406a5d510bc4cb2666e5c147d1698fe8d9e7a42fe573a07076dffcdf4b93e7e3fb8e40bb65602ccbf35a5697bf55d6bc932cc67ffc7cad3757f2ec8b403cf53fe577ade3175b16ef8cf2222eabe227939e20461823d2f512b68ccdbb5f61740a76f95c6fdc7ce4daf964844cbea7f1a3785541e68389a965bf08d9ce448f4ad1326e12ad54c3b212d4d97c9864c8af8142116744a96cc60494c152af967d4eccacc249d433f80acd24217a93b52d6ed3f74f00c40c4c450b4c23e984523a20f5db48a6f47864fc16ced96da6996368efef2f4c78931d58926afe2f31a1523d6a7833986972b317b00f59206543b845572c948c464fd450771a628e45a1914350f9133c87c66996cb305dc370a5c1f282a6a96f5b9437a3a3e466002627538537737f0ef2c08c31ae25774f4336b53b179037cff0d66cab1a283e7d33d4e4c83dd07917d16f8f65a3523fed3b926a4d52f9cad4b8d0fd3c57ddaa91726bddc7e25f19f20f00aed133455eecff16d0bad7f432f50070c6c6342d948eef7efc5800167a8a81c3641df977e330e8379691705dd50bfb281a374c13d1f4fa0c0ae580907008d3c608bfa60c6e38a59bef1439cc146bafcb207153206ae24b9da2ae1a7853e592960f9b6743eb9a24be2b6a990476149f9d318f1af6282b023fe833c04b722a92dbf96211f44811af5d1b152ce9182c1ba1294cfdda2533d02da11194fa185df2157768616200b3106da7e5edc822e9ddf5ed2ce1d6437793c48cfa3e7f777be840f5a8fc6e476966d547381b5834d5c9203d52825e173d955254e863535081782688f43b4073a643e1543c3573605b932b0b3910917cd1e7b7f8c9cb8188a5ede123a1865ea3987c417135b55ab8c23ddfa316a3ae1e944898f6c64424885e73486bc49ac7dbead37bed0360e16651a17ac25dc1b503a7a659e74c8dd8fe8b5b7cb96a190c4673ea8467986878dd80237d1a686a03a57a1e8728c4711710ddca26b174da79d50160031049e5dd6f065d8358a97844ed18b3d7f44741db2d121c27d255f640b79ad93853c00ef2786e965db5da8df76e101ab22e67a44933000ea40923e1c672a1c8ccf9a57a475508014d394ebf73d992566e9f07d51eefa35f3c62d6d86df67a22bf70ce483d07f8f2aa7c4dd57feb7b71129047d8d503b96ea15cb287d9282c78a2df7ea0de7752ade5840d005bd32b0e89dd12c5638184457c7359013ccbde49f920bb7b66c4cd47e3207dc4e6dc1a7e5887ff29b0cb4fe80630fcd0ae609406f5a7532b6a5c36b9f4dc9859e93a4640af12b422fe68436ae6ecbaa7b92fc55005fa0da3c601fdfa4828b9368c23ffe9a031cb8aef94a38e1081ab766e61f1f70f823cbe0f288f50af7d408239e7ef55bdbeef2b682f28f68c4e12b60361fd9294271870454526bb47487bac5a8ecc763c3798134c36f6c0442cd25ce850f10993604fdbf7d876a1b2108119b64363f1e908fc4fcd81863af2a26b72b51e368e621eafcd42bef49c98dd17b405f1c8081fdcd5647610dad8beb9e2a1a1d386c67f0b5783b99aa25c10ec3224fa2f9d7a7d1a43cb81825650c76f727dd661be3d822ff49ccac19a4dd4ff2f5cd4e19c49f5dbfcab7f10cc856f5516535ef2323df61dc3fb0f602d866cec8d779cad253d11180dff552a30cbe5de66e206b0481d4633b12ca8cc1f33796dfac7e7ad24be595e3afdf4be80da8a11a7bb541e18527ed99242c5d52073c2a731a7373faa2c68fed113dd8b7ba4719ca7f0ac9757decfa9a03a17a39539caef73bf49a209cbbc3dc697a47466e5a3f8060457b75da94bd783ce8950e757358fe15b493520f948d91515a321335713b3e34f8a38510c0924fdd261b362bb704a68b564db6c69042053fda56a1022aaaa41089b2e1523a8332a54d53d57b96712332eb79761173d8a11baa75069d92cef6590795a8d0172ccc22dc2e91a82970ff1999449217812bd8511b8863e2dd41c86be3019ba3273819ba88eac4eade3fbb7b79694202466d6988e1ecc3056cbf360dea9359ef59e12b06f9be2979227a6b2974c883a5c2251a8ec02d78d507d0598aa2ecafceef06368ab0431a598890aa0e7f757e68fb275f7905e5cbab57a43f56dbb2f81d94f2485c8c69005f3f20f6bb5a9212b45f894f9a123c7543c75b68bf39fa221d9a4e53df9d182797a7b3512d2ffc2c7b093d03e8c10ffc8aaeed1af46bf8596bdc89efe49ba009d7d711681bc0c1e7da2ca1325282c3eeda952d3d6c9317188964eee8657dc8546d852dcee5d08d5119fed8fb3d2e0a7770f840291ea7e60b39f99606813bccf518f68a5074f4d744c87ca1802cdf708cb1ea02fe66581641104334ce69617fe36a5fa56e4ed2db5fac135c81180d6f620072afea6a41cc2ba997985e582a5b1434b7fdbca9891d3d9934cc7ce62e74ed213c21b9fbe3acbbd41ba1bae0bc13156fb7b8b4928375b82ab06e590755805be8e738a204e44bd3d82ffd772bf6f5c23a26ac2a2285e9f84422cc28e2da21056bd8a28ac57120777b858c1dec4495a589ddda96cc3830d12061bbbab9b45f371fe1d43d5fb428799a54fcc9d8747bf46d67d54fe63ac0f02522aa0522188bef2df67181bce6ec9523f0f569ea415b4d1dad0ff85db643fe95137fc683b4829fe033904fcc67722f502cf0d593449b9d1ca8742bc790c6d0397d1e2b4032fd9d26ca56d2e2d2c41ca90cc899c2105c1db3640f3b6abe81bce05822359bdaab459d1af62ebcdd1a81f7b5456dc17aaf07f4bfc1926cabe8d6d87e0ce9a3f252e1c9cb85f22e64f53397812865ba6cf0b5236b06958c834676c13f6076ae63f90ffaf93aa1e154cb9a30db62ea0542722f4109fc901323e0d8febe37c0d0f4cb9ced1902fbcd7a9408aa60369b2d60ca82b784ea22a86d6d57fe36f15524d7668cce4e100fd0ae5627a0c42f9af16cdc31a04abf48f543ad62b54ab9a700d5a543d9faa02766b2c924aa80d243af101f896cf731b002c594ed93efb691d557432edf2f07a548c3de1e1e4614bfd6501724b8b472c3e0dbce09cbb33426e0199231d0545a9212290c43b59c25c2a62b85782004d0d6c5be5c21d52d6e7a31ad3481a893acf2d1c21d1c1e3e9d20e0215ada7a58070ceb58864c8aa71718f3020a1a0d6ff4c61b0b9ab37bc8fc8440a9503b26601369f50a821ff3637cec3474d3ead63af43ddc27936cf8159d10606dee963ca3180c5f271ba330c4b8cf1374a9aa607e0cdda8b3acea881c8ec82f7ad5927f86a2311e13b354e394b680443f884f5d0ccc259fca0cd6f9413d3b84ad97ddc1b389c00bf559ad5abbdfdd05c409d9aaa3ec91cc5eca94708da72a9fa71051df8e9798f21b816d018b83ba199b577705c8a23f84ce1d9a38f2f3a010ce0203f7aa7e2e6062dc0742607881c8d9af8e7e85d27bc2a35f5ca418e8f783527ab1862f6ec0a8a954da3bc43c7da05120f2ddb063bed110f847e131df154ae23333b347376f15cc13193645c0154d6c6c9b0d71ca62cdceac5a51df5a4fffdfb1e66f61597f2646ab6b966b84753a55190967b1f98e0cbc3ec6489befe6ccc5448d59f110c9e2805144ef080c3d753960b1bac3d535b04e5cd4ccfbcce9c7d4c8df505aebd6e0aede0363443c736b3e2a51e402275ff983e31b15a0efac265510fb4eb62b1c2852874ef4a1fd7e3fcbc66f0225460608c7af69ea0b28a2458cba1d18a62b85f07c7342d0d1ad49234a4e32a4e73dd802e0e99425ba5529c1a30471744f3a1ae3c1508897e62b19d548efc1e11731c742883cfb1793bbf35cb4cde2452007793d2922015fc18d5fa490eb00084cec438241bd542fa608ab4cc41f197d425897710650e7bc5354abf46a1047b3e8ca468ff6d441445ca6dbcfee81636a96caa602e82f319b22e10c16e22da202fed248be192457986fcca9e563a4c072d182a198280d733e4407adca68a783515fb435b83a61a8bf142455171877431315e45443b0fcdd5aa34efa1820085d3a5a4afb967b89c5e43ac4d3ad6bc481b28444a9e4e886ee8b8bb9046c8a1838b6616bfc3f060c98da875e39c925685709b4a7505074d88e0b7d1cb784a1d72e576433f74806d5abee8c51e567bb35b9a3b2856b6a4333a4b779de42fa131fce5e83e9d3d9ba48d1242368a94c27fcb723df41621ab8405dd90b3c8d1bf49da28214d84e62856bce58576c452ab8216e54c7f64bc0f3fe0941a4507c32b86350a8e71f33032827011bd658e34ed5496cda743e3837d8b4c64d9dfc10eea2ffaca7a9b089193c7ef88539071ee7ce107b4ccdab8e5eb6bf833eedcb901a785f5fc6f9d4c4cde9d731877f0d5d6662a4343974c867df934dd61ebff99db0b1ff6c3b71c3f3937f529c6ade10e21e11b68a889540aacba65aca0e176d96612b0a941abb94f120bb1a10bfef00f81fee89020e7b892a356a7f948cd92ebfbe9b08a436da4b3fed51d2402351c7eb645229219b26ea7c16f25358761b62ff86d8bd6869f5cfc6d1df6a7948ca1ce8fbe13cac4d4eb7f5dd86df5f569ae8c9f0a02a2680c9353ce5fbc1a0aba55f77205511bdb42913cd7b29993cc5b183cbc7b76e6840d34e2874dec12618fedb1b9ca97be1b4d7ed83920fed3a22299690da0e9ae20525726cb81d37bac2f164043683ad38083d02a5b8760458b3d6437ee86e3e804a208f467d690bd60f3f8c730e00b712ce27119fae92e682904170008706abe7c6b49930200b101b554ecb3266756880e2c51764e07e95d71229f6c6f81e0bb7bf4226394f33c9b3bc02f8286de4ad3f676b0bb0f7b9631ed11731cd26724112e95bcdc4f42c785e13b7d75ba42bfb6c461c3879eeada1261663f493d17b86639c6697de972ad84cda933b25117a7a37e8ab9a707cf8b8acb2d4f4bfefb579d735521bf464d2ab8be3e0dc8cc984af2ea10423080b2b1c5191a95fbfd36129836304dd40678ad8b7f6697e8fef51084977775b965075e237ef16113f343418037fa0a4ca064d6aca7bb220003bfda8ac5ce54c6b655d40f156edb388ab10edc7d32a0fd75ebc625fa7e565ead9f99dda11d6456ce69c2d7b1cf0cbead96209643b5dd2b382acb82166406b04f8914c1e3e01b6c99a6f4bfa53a030cf1d8948c8685b22e480e532718a7b84ba435ca398442aad6171f90a1a9de4e4b52cc6d38582fe57b2dab04573ca2a55960e0ea8e89e10c821df673074f21ee1ae47365f403d77ca083d99bab6b61b980610c0237afae86165c996acd2699d044dbdf05b66b7579020e3e04d7c4aae07479026a73f5683c8f67c2277a04acab652fa9d18b301da10699aeff0ddb6ae683a27636b8e3c876c0e78e26d292b04a85d6e421dfb223d42a10cb54373528514ff594598e4d7fcccce7c02c5b396dede8345812d3832b46aa85b7c83d5cbc211e376d2041ef6fa6cc30729c5132782f8ab090611bd7f41127786282c61d19b0253b23037295046754186a895bb6904724ef322e467de1040ea678304aa453488efa3bae1c9af7a5aac94e4a486aa5d9da35b28341023ee12037123bb8baa44c52964792761791ed633857d19a0012a741b97435ee0471799117be7c25b7777187df074c5d87c4696d9e4d4a26e6c7907a007919c25d76b9a163523bb95b97f4c646f322709ee9c242c738104cecd802202e43d60a9040301e9afb9b15aadcb87048e8a826a5be09bf707bbb042f4cbd32efa90f6222b5cc57e5d5c420ab6a4a41272a265c4556fc3545d85d7e29bde6f7e812d057b74746df0e29d91157b4aad6bc353d39504b61ea6f4685fe658dd3922663cc4a1c85d25ebeeed9011b39ae6fa1c3ad3e95d24405b742323c808af271b821350fadeb493f821e1741891b0e2b85b12904fa35946afc7eebfb22efd94c426a476a1942a3bb0133183a7846de760b7183295d3440105766e03c2440ded0b35deae493192a934378afdc2aea4c9b4a3f42d4f74f5a32610c48390caa1848ff3f2eae3d298eefecc5003f4d3d198dac4b6380017c8b00f06a47e6b48c0289682c6b15d2b22ba7b7e6e49d24a1bb5bbb2ef379292320c35157cf99868b14ef206ddc6382ab28712836fd7866ebe24ef9be35c357ca259683e32b57d624cdf16446b28167d8aca263744ec2ba4c0d7ba7723b0b03c91616d3baa9646ee2af12ed10e74d104cd05686f2dbd4780eed5dceb986f36055ccdfc7909c6300a8d8bdd99c61892cabc7b7a6987814b561f29973b64e8166b80de18bfbd6b1fe820599dcf6647ac848e99ac2c34297934600c9db45dd62d145eacd9a02d397508bff97e104680f51249cabb9b64a96430b7a18752d27f353f94dc4c859256f8a6eb4c09a4d609442981898ea506f2e56d5abb716f462336608c95c5dc093c2a85522b9a8830e04eddf52d1c11db13695edb5333f67992c90b8b555decbacafc7bc061f6b427be902784a09eaf0d1816357be879f0b035932331de5840a2358fd84d2d123304c34fce83ea7677892e9845aac4c724ef2ea0a5b106f9d009b9c361d15c6b117f6245ef00ad46256c42d42572b6de9e92b0ef0a422766f22d3098c131deedf0582eb5eada55767c5ce263f5e252467795fb213e2a47fa6db767976a2657ef7418f50db00351e78a192ac1ba04885593b1dc25432913c5c6c42c8498dfbea37fb77111e30c57e40217d676d80520581147de8804e23e1bdbefa839dad1e5dd7d3b0afc97bc15c2ac346d0dad0840957f4b73c685ffcd6ba1fbe3d33114f685b0b489137ac5952d4272a301834c41fa32b69be8443120f9753d5204084ca3b332e570aeaaa24e77bd4bad0cebc84a0073bf9403dad4777259a97a6e8e0767e1d16d2a7b85aebece775299fd66dee9658021bf27c053f6ffb5e6946727abc7ab194d25491806bde5826a54ad5fd445cedc50c7a43580444e2c80f9eca7063a3f90d13fa7a881ccc3722d2748492fb336914051bbdcc5b8d73cf418ec07313b11c5030f8627926d6fb1898cf59e912e27852cd99ea43c707fb63a25bb64a76f6e32e4b22628185d13a85cb698ec337acd78d6be7f0c912c062b9cfd9e92000a45bfc4076ee78c4cc26e88963fbf061dca6acfba7559b69cd8f9c6dc6a9ec365b8e6ef3eee6528c4c015d4c40e2560bd79f6e68db01252ecd774fca160f0ecc54b91752e126e5126dc40a33918ebfcbafc9cbe60f88fd54b8fdfb574f88568b14a6ff62f8d9c140a1657fe1990c3d0d849e23a190522b4fe6d98d4038fae42036d454923664088eccf44dd5fc0e0ec83978428057d2e4f115b1c2a295019634b6346da49443ed9f01736ecba263585547571aca6668eda4119890be0da5b6fb6e61414cf3b6da92e1af6dac2860b5e76dbd21316bf49e50ec8e63959f6f7dd0aa3538f461a7d5567077a55734246e8603b311d86458282e978c235b984f3d818880a3bed0e42c60abd42c6a492ddb1dae85096dc791e38327de7edbc662f8ee9ab16a9c67ddc97270345268118a950f4514bc201d610149f1652edfdfcf0b3436764404c452933a5f6aec85dabe5156483ff31373cd8cab901111ad7c23409adff846bf4ebe482f9380b63db8110488434fa528aad8a881cb906ceb68fdc895b7ae600e1e3b0151801b454f84e6f324898bd7c90ff9a6b42672b45cc3ae02e790a408a8d10d8f46f3873b15db5cc054838fda1443971a9ed5a9615743e24064ef9faa876a006e8ea0a042843dc1d346986d940300f2d03b89c0fe4eb4577ace8f3c92beec1b3169d07d13350f5f9122a64e63167c15d3eae22149eb960d8b3bb246b94aa61480eb82fa99473c0cedd8800d8e9cec3259ece45e9cefa181cfc5f13b8a3139a11ba60d6cd6674b66bdfc11cc091476c5f147db917af070aad3593bd0e09aae8398f08a1dd968126aab293bbab27757a1333c83a1291e2975b9a63673e3ab55e3c4d0c2a4df72b0a7123c566409c02fe78a476e3c025fcb279eefcc9349f8751d8ff83f25c362a90c0b27b0ef381d3c0f174a88ba58b6633ecd798c0172b04c2e815bac0d78c7fa40b7d80f7c8f7d01ef88ad5bc344e1b3bb9dc33275c6f3f1cee5301c42d5b40d0ca0e1f4a10f5a20353677f61b9a214a8e368f51fd48691e450a0276f0a8a0295217c372aeaafb10f47fadaacde575440c19e5a0a387cc016c825b336a2d334539fbda48c913062977b2262c40bf39da7bbba5b123965f27dd75b80f7b8693876518256d3748b1596a02ed0cfd3bca0531a01cd4769ab956b2d16d09497561dbe421535b43fe5eaa61e23dd6534245ccec505cdfc7c621ad6128b6074ff143e202fd68ac25254feaad25b68d670d6cd2d5865976175c7aefe2c2812b0cc00d515ffb4e02dd23808f0e6057aeefad11f34d263aae332af258fc5b82e4a9459551375c6f03c5634121df14d435557ee1f5e3e456687293e2cbf392ab3d202f3aa78f010bae38f32005752775491badcc5575f2a43d5d9a2f9369b61f79da6977827450563b5a15aededcd521bd78e8508d4ba5aab434105e71bb4e82f4424374b07aaed2276882652473733dff44bbc25ce77964127f0e5443711f3df1010b468514a918a1f8cc40aa0a27e7bbf7dc532940ee3b016140934da1cc44086e54aaf14ad179e3ab2c69ce618fa517769865128cc36d7aca2f4c28483022c0356dd59c2b835d253c3810d4a0ce039a08bd9fc67abaaa67551607f729b19b7802863cfef7610cec92010b2401efd98a1d3d6995716b1a78263b695c9d560874fe20ad9338302521d7337b12daaa314f51f54116fde355a142347f52774e1ec0dee54a342c28542094fcd2c41c43bebf125010be60b7786bd70e20064ffb11a03a8864cd9217bd228706b6c6872268d2fc9439a4073a287de998a56ff78080a2193eaa09846ba8bdf26bf196c241ea732c69474ebfba9aa333d719b54aae75819a238a40b7c322dbe9071648e8f572b251e998eaa45b9fb70c24e5927f365bab85f35748fb565a8979f3b04dc5399df1ec353ccf61df1755fa460b14ac247a5fbadb6f9aa4d97c806e313bd3317577c0d9cf1794aedf039e5bd28e560cf5688a1d1a0eef00e8ab91d53b0e8723f4b29ccf42044d395f7305b1821026a36580cdae2e706313055d5debed9249e7aeb985908727d86633423526b8f649a5b8010c7e34ac81ce7257c6f74eb9533ce6c5412cae0ea374d5cefae95c6697429d606979de990ca431de83e542b5a768376726e9962aa44ada81e18ef29cd6978782de4aae5bebfad540a43bb0b152bdbd59fce7030abc572a82065237ffe0e1542c3143018a8e3b6b63f5068aa920a3c1545e1db3f0694d8b1c88463bbccf8901392531381d75feacb506edfd5e861c5573308af0630d540550702fcb32f2fe0a5fd9fc295538bd33da7eb94868d680a438f217ccdc02a91b16d0eeec31c4846e90bba9e4c9f34f88c11c934829893f4de3f941e105e2f8215b859e5af839b82862178fa94e8d5217e2b9dac47407412aaf92db6ab691788bca5753373fc2c643820df2732dfea469478d12f064da099ab9e82c861675b3fe525060cdbb7146b19da8780d2e57b2dde1b6d43fa96af6a37fda756c610fc7d1118741922b82c380257f7752b4e3dd1501fea2e631d11768774f4bb4c98e25c795416bcc2008df732f2ba661d50cae168f16a759a149646205cc29bd2289e3e339c3f462792ab6219ea5f870765f18809f80f1dfb28548260fe92ab9d8266f9ca8594e01096f7c5cf995011a86f6cc5757870f3af3697ccd6df08411ac7e551ec23cbdf1e7b51288abbad47410033016b79347f00fe1141bb0a0c4987201c4eb041e4ec4ad0d5820d81d251dedb6d55977db5ddded3637b729528cd1a586d5daad029233120714600e74ecf7ed364302989828289813a88e5e305f9c5d8a1af89a2d9ba00374aea87c7835b6a93af8dff8e8ff6db74608216493bdf7967b074d0d850d2c0df539acb072c8d25fdaa70f5cc2d7e5a11e2ee1bb41237cd3848546dba191c96432994cacaba0d13c65153e9d4ed65a6b6fb5db2e43253c7f9a3775b991689773f04cd2feb81e1b18bbb4ab62274e50f708346a41c96e917a6b80286009f76b80d8c0fdc63cd769609eeb76a06f83219edd7c0cda9a1ec920201124a2820c624e052c2d2d41a1c9162c9f11617a19bb60237d0e1ad86e2287b0f38f4a132f384fa49c03083687150bf1a584297d9e481668169477c892957f54a2b0921119a1bdf756ac98d4df77ccd083061b7008a283100b0c9179760da68b30d760b25a9f7555a6eb11e3a521a5c5745816d33d9cc1c480617747b3e8519aed608cd959cda2b5c8c4f09ab84ec2872156bba80545be1e1ebba6755db1fa30562be6e402321d814d835218c6adcbb131db8dca135db0dce9d6a352e444d11445528aae78ac8753b853af28470f6c8e2facd2113a0b2c7270050e6e60831ad0600652ac90410ce6bb0a2aa04c018317b8c089142d68c282281e0f281e8ff778bc1c43b01d847317f57317f5131cefcd132c6157c104733cc1e69882cd59511296d208e7b0827d7f5be250179ba1951c63d888f3ccf2deeb2aeedbf303863747156c1628c3c3f2488839aef473b8c03e4b2b71081a412b2fc994d458d020fc0184df35002482445877d384cd4420517c62f504d213589e487a62cb134a5fadf04a068658eb6d3e6184fbdc23969d6256e1f8fa5377fa56b7eed49960bd7cbd3ed0f75004e2f98220bc2008d807d8b8be273271a50956601f1ad7db431189eb7b9e972b566004f641e27aa5942fa2821d680fc8155c5901182b30c2094b2c033f2923ebf982a02db8c38f4a50152890b07682afb05ed9ac67e3e9a81d8b0836dbb0f178bc942ac64b0965bd566fcd04b0678700f60c08d71981e8c49e516f419bdaaba7b740ebf429ad2920d89cc25115776a8cdae3a39491f3d103976ecd04e0b743007e03c235570c08d388b1da418ee624a1f583d78c71879f1f7820d2ac39a459d302cd9a3a346b0669d69cb3a73c9c7926a7db5322cebca96a67cda19ec2c24ce24e448a38f3586a928d5bf0fcbc3d458b9d704a246ad6346ad6bca259d368ce39a734ab7670882a69d69c5da575f2f194d6e92b9e41a1694998c66b1df4b1410caf773d6d765ba7d1ede27c54a969928766d1ede2eaaf28af4b9805d1c010213ad840c30c3b729a455f28d22cfa745c1ea06073c5143bfc65a559f453d3ee56bf7510cf2e4b0df43152acb12c0b911c2cdfad358b66c76a430861865deb28cc42ebd62c2c1109363fa51f5a27432c989ea2b03cc4d23a0f267156345884e7b5586510ee186550b35a1235abe550b35a0a35aba3976675ecd2ac8e5c9ad5714bb3bab334ab79749377bbc80936c7292f9ad2a459455e94aca4e9db454f9ad54d9ad5ddcd2e2a5ad24126cdfab1a45993a85973c22eea295aa78bbac9934517145a2761aa25a959314a3927d5ea36059ba397d6f274d01ae2126c8e5ea2174c4fb91f718a929df4516e6978168cdfa2a559b4b7504a3ba959f4104e25edadb4fab81063dfa88518050babc80793b2205da9623445ca21c482e17b58b86c49ca8274a58a119c224516c5a1288b64912cba64912c8a43310ec5a12b0ec538f4040b69e2108657d22c3894d42cf8a864e3731c8a445189bc8c43cd92fdabeb207ae19766492f50c6212ce5e392d691974a9e44a25dc7d0fa0aa8589b7d49795f5fd7755dd7755dd765ea18bf43ebc81bb360e563146cff7961a484afb7012e1b3a292fa594b7c88c51b66cd9b265cb96dd3f8b9593b363477cf6be399e468ebb4526e668e80cd36e7d374da249525e99fb58774b4c6a1668561feb2aa640e216453841a48b70df21cdbab6ea63cb60b7bc7cd66aed20cdba6abd3a34eb9a46b10996c84bc272fe0339b82f911cdc871b0e34f9b7cad108c77ff1029f8fe7635e760fc3f7ee93104208218410c2d3dff18b4471e774a1974d7b47220c9fa30a0bbd48d5591dd42cf805422f718b85a7bfe0bd69c2be2d38432f18292ad9be3a223cdc1d607c49b0197a895f9ee600232dadf320fcf0e328d0d59714b4a7c960211245b8aa608a197ad06003870310a6548bdbbcae5db7660231873904620e73201cbb5c719c5dfe21fbe326bd5624e2ecc221200c0f0ba60e30ead22c7a1d60a414d3c528582ac402435e97b1203c97485a226989d112231cb5678844118edacd9328e88852108e48144d1c5a47febab4a8bfef98f9054cc3bc3834abaf69a7acfec9d8d4cdaa98ee451cecc2a03e3b1f20e6b89b26ecd46cc769f2f7f3710746699cfec3da9c1c771c5a87dbb0799ab3bfd920b405698b91a2b4257a2dd5f6a97d6e374d58eea66faff87151ab983b867dc6a8327d7639de22f374adcb30086b5ebc28296dd9929434679cf366eda6f788b5e7076fdbc645adc8c41b2422f2eab3cf2e4b233c63941845d36ebc79fe7a785e8fbb01bb66c5b40827a66029af038cb434ebd9860942d322176c7e56806cb08090203834ebbdf7de3b948176fcba15101380801964e07180c7e3d59b6bdcd131400c0520c0006010808e170200009cc7a33eeb6e72e058ddb8dde3f16e4c60df0f63a6d7878979de5d2e32b17cfd64105a08ec5b7d244950adbe487ee2fb49b8561299161229391b234a464af8245cab6d8c281929df174912aed5879ff32289303e09aad5472224838282e6294502975a42335c6909c1b5fa31896dd18b64c6fbd3178906867081175f08918526b4a0d549645af32291f727c95b7d7f80a4106209285f942c0501a9d5974f625bf22289f7e70251b0821350b0d842165ab4e293c8b4e245f2f3b85c41042e421843092d4a68f5856012135a42d8565f244f49064450e2a40b1f7031460b5e28ef47288c4544c1f556f0c34b60c10f3f27d8eb3e24ddb9f9bbf666d5284a6451e20a3efdd4e52a8a3b53682a7982eb15f8fe4e816d0eb1966d19e7a3e63e60dea385f0e9a75aff62fe381f34ef62172c8d478509169c67500320b6f95594a3d2d6ac23ec43698d5578d936c252475d552a756ddac8b6d1d5466d842b8e67fa98cafd90bff18bfb217fba6d1dec1b925a8fdd1c34b0399a584873f364089be973fcf751418115298fb00ff74f95a67bb36a87da81baf93fe84f290cde085959694cd398989898cbf9385d56b32a95a91b229b67d055743d6949222c26e750c4a9573592457df50ca374879c8f5fab61637524a42071051255ba78385230eaf92109e1fbcb04f57c9cc41226a8a7a00ba64c50cf4330a582041838b5dd7453a871ea61686c914ad28b5c92f2c4f9904934d160b618eec753c2999ec89124dca99b214ec974f958e6efed5c4511a73e3fb372ac44714050bf6eb91bb05ff45751ccc95e4557d15534ff624e16b6949dd4490fa75edec401411d3bc7dd403ff313f723f58b61300a8cf28660f98d03823abdc6ddb09d5e1661658e84167ce337feb81a52bf9155cf2c8cfd3dec6620fad5330ec8104c8f714072c019280aa68f4a716706459c7a9a6b37d79867375bd5cd9771332b471576d2dc5cede96695bdf9ac54f7f04c97e33a615da6c3719ddc9c764f09db7c75249aac90986275d5d3797875bbba374f2ceac6cd6fe764e82d16124bf0c316a35028d4cdc7446cd478bd8d8dae7f713e6a64ef5e6fbb7e27e5bbaee2770fdbe81eaed1554ca3b340b3aedb74439a751de74e70ee1148d482d2d76aba8761ba8735aeabd8d4550ca39cc676d30905a025c45b50e4a594526e5c67ea581d94d238f5366aee9b550fd3dd74abc6a98fb9ed625e69ece56bdce92449eb352954a334ab9e5e3885d53a196a4f55af222964f371bd613d5b9c3f7a7391c9aac7e95ec499715677d3bd88735934dd1c6a56bdadbf8ae24e548a38f5f59d34e36695ea669595b98a703d9d8e7512aecfb819c404ab7d7b8e4aa9c7306c260289b03dea392ae18a61545249259554524925eaf266eca9f78829790ce37cd4a0a0e66400304c27519dac1bb68736db7a18054a699d2994f361d2e9d7af5a877b3dab752e25ed60a4a41d87311c396eeb7a7434342bfbcb60e47cc86e621dc44a3d5a12e9cbc7a34d5da3d868160f88f03ca4915e98a5b718bb28569c57108b162c7876246a294e271ae983342bce29a59452ca390fa5048a30b640a3d764959748e3d0d3b8043b2f9f1f79506da1776887c8044b43b3e6297d0cc3c2d35aafebbafaaa87afadcdad398ea35b7737e502809bfbf1a04854459bd75e4d0dcc8543110e59710273c9f9a887438d33af041725ba28f1c52e21a45a22090d1c38248ecaf9a09f39920476fe435f6cc32198cfcf80553cade9593535980e5a8938a80b8722ce7cad276b4d2a15f76f2c5686433b1a562982dd708643b80b3677d167cb2963c70e8720d7867884285fd2839dec2a3d8209289e2c31c5125296b86289a3c7aaa9c1ef42ba066f50080ecd9a975d10ee870d4936c3a1254350490e9eb721879784730e454060c0b9c8a4bd0941afa1a049a3608a46819446010ea2920dfc6c600dbe986757cc9b9bf69b20acb43de6a6693e40dc37486c7e49da83f090b843e7c6bd070cea1ac916fd0e94db7ea121dac63dc717ab65946ad9f5a016fd0e1bd63a4398360efd13c2f373939bf6df94c0c2539a55d4cd96bb3742366bc768b67dc61d7be9e9aaf00d91cdaeae1106358b3e2ac13e08639f9149dd217167e6c2a088434f230e4723ce7df126087b3d1e06a9280a96e0596dbdb9af1be775613e307c5d1d875985614e61b86178f37c76980e75ea4cb5aa54fded6a17104b4b4b568a4ca3289da4b60ebb0d129ec794707c0d10ecd1f4231324e17818ec3cdc2f98bfa70375ac4375305dc66edf5c0ef1193b3dd6694fb5cec5c1bcb14b98c9e530af9d2e9b54eb60d851dc515d0dfdf6874fefd158bede3f993e6fba35f43540ce9d3b4db5ce0587de1b40c6de8fa9361d4f766db360fc4dc5204821415aa76ba7b335abcbf239cd6aee87bc3d686856b4e1061ddaa66d8fc7c3f1f2574226ecc3f4b557cdda3143eb981e8f07a1d877341484e5b7c7439bdc0f790e07a02c9e8faba65ee288e1cc1eb1eb4528c6de03f6221467d8f5c73160f6e07ec86f4f872947077c8f8ef7d12654875192b86c09230c2845caad7b5d2d22a19430a284d14058471d34135c290c4acb7056a5402ef27ab81e46d9723513ad7e1543a9dc20775d55b3a8ac57bdea55af5aaf675caa94571857bdea254feb95651757a1c5b22ae921215caf6b1d24398ab3a0d6c97ed55fb98530d75790eb422ef93a61a76a16bd4481cd1ba61b7d8a6ab17f7e90b20bcef0187743c45c4d8232d467908be4e42bdc82f3667a3e5dfb160c35d3cda7ab69f5508af61a7752d7ae7a5df5ba943009c270fdbd474769d6b5e5caae2ce32e0ff6faecba766d300c28030c8c09835230cc4d9707bb767833d420c4ae5d18c6614c3ffdd7b3c774a98eeb34982ebb867a4957b0a99b18b38205095f22c8b06ee22071a77f5d48dc89bfc28032507c5d374d64e73a68a559d7539d9088733da60b12712e11f466bba7844f1d44c2a68e6254f7ae68d7b12e870063d7515dbded1e123e75d00a367512735d8655f2b3929f11bec278963d3be51a50afddacbbd8b1c328d96118d931ce4706b760b55e180684e1a25ccf1c81056f389b8259f81d0911e1fa18582f5c557bd0b0f3e00df5d9b32cfb95d14e76c14ad9e9e5b92e1fb33aff765ccfd8ac93de2c6ba8e7c96efd8ed8cfc99e3dcbb02bc58032d4ebd64b31200cf15227b4a7002b95b0c4474256b086a15010cec1ef28082f66119647259082b5d384d928a5945e768941e648ae86489f548ab3a87b47dcd96187ea647f75100c880566814e7490c91192226c00fc8e84b66098cd649727feca411303ca20e370c6b3eadaccb51756369aa66932d788c4908367dc228d652eea59a5699aa6691a1019a82ecfc8c45c83dddca1cf62fd2a95062106953278b3c422c011c2254d94218cd7ee1086376318c5598c145f13c7a1d6c13e87e01c52d258a6f4ce8e9642afd3ebe611d8447a21921236573c714771ec7208707ceab093b8b60ebcb6658b63ffd027b9605f7086cf9ee40265a0b20be689199783863a954a6d9f4fbf4cbf6e964a18fe85958d95d4b9138921e7e0cb138ffaf57cba451ad32765c10206d295fcaae0ebcd80af18f0f51c7cc54314355d2e3e9ea2e02517dbc5986e47deb103cf0da6ce57ab8217064208218430a6e71c0c210c345d9e7aeedc95624018602486b906f3b03d99b83a31c5620e8b055b0aa62a95dd62a392a24dc182e94f262b989e33c2f4558a41a313b7d9c271894b947ce91202faadbbbe03eb593525a6a7b969c2128901c3e796823dd5a7166a1cfa29306d82a913982ec1f4a69b6d2bc194099e97624831b64e8a0165a858c4229683237629911870f64c2406223160ed58965d831b76ed493160a492144306b29ea0cdbf156c06bc25748e70c2fb81a7a561c60e1f0f01e0f974cc4f88b19beb953df4f4c106a61c03301c19a0753cf1f4f9d9115c032462fa882bcf93e1658982ebe321009ce36f9eb0f179be6eb37b4954e01c6f96f2793a201e099be5163bfac8d9f0eaed21fb64420d104f7a6d40e148b15676881bc725b4b229e472422b9b429e1746b4b229849ee0895636852040288b563685c830a6586a6553483685c42c514862a9954d21388aaad862eb7264842f965ad91442e3042d58f2c4522b9b429a0542637091c5522b9b426690108320b62c2db5b229042ea10a2848c1c4d2522b9b428298cf66d7031059433f5ff3a3a6e701dab3f7e00384eb9d6c3f78b0d34d5d76ae3b691d67ca4c4eb8f788261e271aa7653f75dab9cef4d971a75d0fad5dcf0f1e27a73f4cc407ec44bb369a3aee5ad63a3dbb4119ed20aeb3eb61fe01f640a40fd84976ed7113b8a6a0acc55d21a61b94b5ecb51b94b5b4aef1ec800c006727dc890039819d64dcb96b9de9b63b3d4ec09eaedda0a7a5657a47afc76b739b5d8ed8c990025a0b2041144fc7c3b9655800098a1e0c0f6759f7931d09500bca04028a4907292d4d0bb2bd47e7703d1680892badec1ec1a109563071a5095630d183568681f0e36ae07192fd612223c04e82662bfbcc909713714ce77e7f7adcec3d246bff5adcb33d9d0b38fb1083893c2ea4f8025fe789bffe03458753dfde1f1eee5f8b7b4a1a952998607a7980441cef030c2622b7e800d39e201b10db4d9c8f2041d003b5b24b2e0705604a4f1d24d26e32dd1f88a42519654849b0081645217a86453f53f800e1f9df4461e3f57946b8e72de1fcbe601e1f6230111b3320420cf0c5fdf4d3fde9a02652fa6b99fea80c2108e70ec2cd5da16e657f2dedbe88c3136f1179796a00c2f13ea4309108448104c73f2a42f0827313e1ae8937720567235d6c5d10b0a53deb84e896766be2b50b55edb3ebe186c6f110782d2dbee7b484e3351d1478adec4e86626865d7ba20aeece6e0fdadfa02aa2de344eb2107c34378f311dc10c85b028eefd1521e76f1b20302c31074b0f4d3b83ff0b410018a81128ef703ef1fdccfe1794184e17572fd880864cc3f185259c242e7e5e1794184e58dd7c9cffb9113d2132c825ad70deafbde1dfce32a303b22bd62ed744569025bef3c15c36648f4abe6e0829d4470090cbae07e5381411526bd235b17951764c1455ab0fc840118b8a710c2f274422239848d876f3a2fca518add232fa905653e72b23fe7bb48ca200aee6b30287b32d5a0615343036150f66422c242a8a46157ceeac6edfef86e72e050c9a841c3a686a68b1ae98500000087d548f5666b73f369bae88500000087f556376ef79b1c38543266aecc4dddc76d59a53289853010052d3c4113b4711b336ee3363ee333200d9b1a9aa794a3ba865db1df7317bd24a884bba88bdedbb24ae51b69751be9c66da47b1ba9bb8df4db4890a88b8aba081a69d8a5a4a4a4a4d404780fe05ace31187e09e053c723016e0c1ac0cd81410057c77d11a7350cda78734184e094284f84201113212121a12111a746cecd10b60f89b4c6ba67471b37bfa41c6d0ea941c3a68666c66bed9aaa2be3cadcd48db9f925e568d8f562a36c9faee9de1061b9fbb46ed5ec1be4bdf7de7befbd0bed10711e841042082184f03b440940dfd8420499c022f824ca946b101a11111141958c9bedccbb382011f6511b35681cfbb379bd7e33c4109a192a193344a80cabf126473e0e25162addb8dd2554e2262ac3ea756874e3e67a6fb6ddcdaa4b23395119568964ee355ded6aa80cabd406ad4169501b5a43b59aa3b263f5d26a6eae5893b9d9624dd34c37b3b086735997bbb9bea4bf0cab3477c6555d1977e6a132acfea2a7305b0c7f3384853744fc86889b216c7cc4eaf564129ba1511134ba5eb42713b71d2acdb8504975a1928c0b95662e5492b95029e7cceb41a3d4cd355bd563cd5b2fd9459668b23e8fbdfefabbfc90b8c3ba5d7493e3dad5c5715fc4b92fe2dc28b153f564102121416ce891f35a73ce79a15787b0f0e69c9b216cfcfc74c1150c1fe96f4e60613f67e69c9c43b3eb5d38e79c374458ed7651dc99f566d5c5c23e82f415848c8282828858e2424b7e87b8c3a38520125c511425a8042d998426520c618515a820063768c9ff10771e169cb0c4103528010fa8d8414b6609428b1f680109236091424b1e0ec51d992da0004b166004c183245af2de3461239c12e5491113a22118f483d0908813bf038d3188be10abc356e48208090962438f1d39acab6cc49117aa5c0ef04e703c088e1b441f09504b88553c50ab4737928dbe3ed06cd4a061534333e3f178c4e93723938a8141f5c9c46d5a865d74cad8f0f1b831c2f66f4c60e1bbbbfba1407bab9d2ccb32883df9e6a358bd90a40c4c94e6ec785284299d81ca132b383e86d669a8cab911c2660b830074bc100000e0b0609209bf3fc1f20409149bf0cd90bd292227e6587b3a86e645694b7dde917362acaff5f5ce5f5dcf0f8e5cbf219743c4f948c4b11f67a435c6231168b64c81f6569a8d1a346c6a6866a864ccc8a4626050f664e2362dc3ea45a78c8f473c16368700e71efa3df8d003c47d8b400c24e27e5f1fe4fbf216690ce49481f07b7ec04933fb3d1d11e286b1659c92ce8bd60bab19a6659bc66d26ee64b227948541c5c0a462645233323266543266a86866d4d0d8d4d0b0a941c3067e9c8f1ac726b031c22898113ae8072760fcf0d03a8f8a932f38bec813254f963c71e229bdc0661b85879c0e72620986183a1192a20b7ef8e1265856c1f44ea424e1f8214cb614293d79f1f13d67c7337a0fe961d15e520ec5eaf550261b1477626e84a9b66f3e2bfe86089b21518c62ebcd9744361f31c2d7354964af67683425ca93222644435e94b624614112da91c3ba4ae8459ceb3d1a02118433912346cd537f043fcec7759a78a151765d1f205c6f11206c84e50e8ff5eb63578ffdb82edf23d62e768d4fdd8530dd5e1a61e1b1ff9c8e0488d31d82690dc15610a88b04a82504941e0560a09610a69f6cd75ff4a9eb2fac76f3e5d1ae0fc44e4c774801ad1fa01694ebd763767962926cedca7c7dfdc3194f3d76dad55f5d7d0e1bd8a8bbd1bee93d3e7dd3398ee36e4edd3c022a82c0c217313131cf3ed43ee6e67ad4330cc771dcadb3fb2693e9466a60d3cda89baf2447487204b6f64668b07df699eff1a19fb7375fe79e4f2693e9cac7823dd9b1f7f874df480ddc377337cb254f92c004e7ed661ff91e7a1f1f2317a6f7312283e98dd0641f2319ceee6324066737520367f7e9c15edf93dd077bcd4528d6c9eeea369b52b5cd0d988020dc60890d84c00f468e81df2a5bf837c6d1142d90098dd3d9f2193871dc2580335082fbe9c4d7c8475c13bb1a7983d820085c13af04805af4ef68ca127e4753be609984cd2cdc659604de1216e8cdc1bc3506e0c92f1e10f83d1d31f616da7b279df07e12e078160cb28273854854a19de437cc5e4f5688254dfb98f342387e098eaf4db046b7d869af5428519103fc34edf106edb1febab95e9ff3baaeeb735ef3b49bb3a3f36530abd2706bd3bc3cdbb973f1dbb66ddbb91baeebc424816018bb3988e91ec95a50b0531f954886b15f40307cdd1c84cb01ab349082bd76f466205c6b0d01a08f6b53bd3cd973865d831bcc4eb91bb2d76b28ee86f879ae9b939b739befede60a81d7a0092a84b0841c6851d47a0f07bb197743ddb81a2a571b501f6b270f9bab61f321bbec660c6bb74a245888042b610c98a4e16ab82e0e07a02c1e97c375f9ac4dec3f18087c043f2e071b843120ac5eab3d177e4fc7690322fbd36e7604d7634098ca0d5e1a7aa868d4783a20acc262f81d595105c75b65b34c39d0de3bb9c5cababdf862bf2b9bd5b1cbb10f6299620b7e47306882f39b02eeefe0770403299d837b498a12dc97397167062d6d81d6c933d810e408064af03beeef30030d35e0c1aa545dc0fdbfc76ce1911558b458b8350b32a1a9a6b0c1efc80aa2182e98a6b0eae205fc8e64f0440c51480d2101f81dc580099aa5182e4830216d5568607aa2440c7e47514ab05d61c611688e6af03baae2094ea9f03baa8208d3c82b58f82cabd49e4ac68c4c2a066686695ed17a2fb5437bf831de20a920061847544c39fdad733aa462e8f4f8d385e205cf674cf0bca5e2098e3fd19f7838fb53276f3b79fae959bdde3af3359c0e73eab0c39c8efd746be837ee447fe2b1e7c13210ee60ba7c7a637b7a733eec7bc453978170ae3ca73f8ceaf2e99abd613b76c8f9a0a7aede7453f159378fddedf2a8b89644b06efd60f7706d9ddcbde0835504fb36a9b2d13029dfacd817bcaeebbae4665faa597066c1f11ddfefe5cc1468eff6f5681991582883b63517d950860c5f44e29c3d17a9b8fe2d612823c61eb32cc3aeece6be8e1dbb3cd84218bbeb90ab012ee17a8f5ca0045748bbd7002057aee04958b759e9102cc490263f2d52eea081c7a307a8847b2eec034c7c074e18e80a23967006ba222808fbc42841b8de1eac046548291cbd04e5671484e5e50084216a401ac1e6a74503ad2303472be02b4ab863861d384e51a1caa655d8cb4fcbbce2e8c9153c2fb56ceb6e88dde4a97e35513b344ed440b38eb030ce0be37cd45bb7544e0c9c8cab070d7593a6d941ac81c703b5cdaeb10636a0c16c40031c981a4861892167030ecfca0df2c9170cb91c80ae200ac23e40594409c2734a10965182b0bc3dd14b109ef7021086f81e6d812258f8fcb260964365305b4c4dc120f3b2cc5c2ca960653613eb0539234d4174c04e9f61b042082f48218413462861eb60ca17c0e62156b1da55312cc4b079aad46036fb2c8eb3b3a96645215cf5afdecb094c29bd43b0355e308585a669f0e21e31029a463b9eebdd10760ef24f9468a7da3a19089cfb3e44bc430f19882e2c659184e3b3912d706109df078815df5d962db1d8274f79e8edf9c13c727619de703ca79431ca18392012f7fce06b86418529596ae82386aa4481eb7d8f75bd2c57073dcd1387c9331f9bfb21b91f17cf2bef8bf7d61568b27578e62374f205f7a7132ef807b78c9d7ff4fce0397b620372e8d3cfcb03fb47ad57977fa8e1660a391b2aa6f77a8f88e1c8d3137f5cacfc8369730d8011c64b2a28fc8e9218028edd3bf3f1af469ceee4136c1f1e205eda1f0804230c82f6de0f01601c098467472fe79c524a4a239d3276e42204d23f04f028bb4fa591e0824df81d1dc105acb5aabe5fb5d0adbe6a09eedbdc0a3c9faa3f608e87be4250722a0bb8bf5221f105f76d52571253e06892312772a1d9704749186d4f473f2f494cc15c0680941e0d5904f196965ec4c959d272a0690acd85114f4090db16531ed16874d529d5f4026c5b4176c4126d835d86df1111129cdab0708412d83bb2b92b746996e9002c2b60c15d6300deb553173bc614d456ab80e1119113f5bdaf3d943d99b84dcbb00a63fa8140b0af29b4a71e8f1e7e4008e79cf23c3e4d852959a8c072de0cdf503bf160e1df911158f0fb21004ce99c52c6d80d9f8ebee47ec8db074221e57e08607ef2f4fbf0f6fce01c238e1c9c5092e0ca683e56bec7e33d1e1046d92365b4f15e804fa2620f3503bfc36eb9857d474658392a820beed13a8fb362e361106cec890f422a46efbd1704cb00200c02152ea2c2f043e1f7e24f385e1b49b18bcc511159e2d56daaf86a718468400551121c4c91a485fd711090542c618c2c5d2891450d5a19bd598529d6d588435f3b1b71e88feb6eddd0498ed4b68df542dcaeaa59f14fc62a35d85a504a6fe23aac566bb50cdb516466dd57e86abcb0d8f73de2d57d750b6912beb8d345a49422d3b66f77b584cd2b9b59f2ac282f5b673bbcad71679bdfb6ad13d0974f750286de8a09889757d968970f6f69c871b7c6f49a09c49f0e81f8d305c2a65b3381fee910e89f0e8479c0d9b79fb2f7687aad88c4187da5f619492cbcaed996fd49a9d9c05fb0713c1df0dd52ebe6a58c5af75e98451acf9bd34da10aa413161e0853cb6d38f290fb31af659fdddbb4db4d7b8fd68a489c5dac7671ce4e4a4bb3c8174404ad076208b760d843bcdbe59e8e3e0d6c817d474a98e00bbfa322c0c01d0abfa3228e704ae7a8082938e5e5a8882638ab70cc1103c7a32296c409733a0a3b0fe78da1597147b3221436ab6cde3bf6e140cb755df5ba6cb3ae8aaf54b3ae27accae6baaeebba829870740230f03b52320526007e474aaec0efec9ca729b754b3a68cc2be66d1c7992d2c1aa2811da00c10cff350e487d6a942c993c32030e4e3d1550521a432279c9c0f7875721259c5df1a7b8786c689f428a775e8eb1b5e34d810a7c4d0c6d2d2129697422a84768aef3e91dea1595db10cfbeb1ec628a4ef33377e7f46abbf7989290f449ad51a783afadd3f7abcc0ee4022c8a45953ec7b7e464d1aa75fc5666864d43a17b402afb4cefb94d6993a4d9ae0bed69c0f0985b6def921e27450b31aa5035b230e3cd255042ff87a0d10f9eb33bfb6e0eb91082c18bb5432749d4a196de881e57d17ad97866d37f080eb87d0fac9f540ac8a5dbf86eb51d56d4f47bcf2a6a743a39a2673d9c5c85c76a9c74e7b4f47e572b82e7f7139609737036db2eb53ae86eb31af5dcc511d0f76d44f5dc67e3ad7d5c8fc614e65afea6a64ce5de630efe9505d76aa2ecb9b1ebb2c7f7ac6e5703dcb57193397d1d500c13e73ec33b746e63540b8db73b733bec9aed67a99ee0710e69eea72f6fa982e63af87e9785097dd556774a88ea7de9e3a53b7a359f313c3ee0cdc8febf5da342b862ea70a9bea4b8af6e2a861ccd991c36a9c9ca321a460147e47498cf04a861b430b6c4eefc0a01d197e474354c179a5830fa870b62ab9035b717ec5d95a55500d4c5b5629920d3c28c39429d0c0611429a59cf28707e11609a79c904bf77bf2cdf978174689128601619072cb1629b7bc39e7944742184917d89c839f549a734e4aa9e4f268d7974a5ea8b6cdacd6f96e56a9ea63e19a934329a534a777e88e95502eb159aeb0bc2aee6c52da2995a6e4b66bdbf61a7a8b619b8db19f998566a3d2debb76ab5895b1e3456fe36e85fbb8bbbbe708eece79a159ef4f4a24cc8677ce3adfec9fc6d9f5f4d1b7479cb395a4134d9a48f996a2209b7c608579e4eb9fdc6e374d63e139b9c6dc8f0d78d28027d77384eb8138bb766bb3b4eddb75fa8115e6b94e6bc82b3c6b9b9e55a73fed533661f30b2fe434c66ddd3b993a55e3cc67501eebec26e5d6720b3d3ee2690f06b220f366f89e0e09df23664103f4047ea72f09f8ddf774501ad8c6ef688828570e8823523e1f7ff3e69f9a1feff23cef52e21eddefb19e15da6b1d795dd755a452089f20b2b179abfc83e9e97d77f4fe34cb0755427fb17eb0d9f0ecb69a59b821befee445bba9c30c029534131bbf1cae70afba761b135bff82bcac0cf38a5ed7ade161a8e43abd4e7734abbfeaeec7d0ac54ced191b8cf8af1ad43bb1a1eb68090ab734e573bade9cd3c60fa2e9b755db2b3b94c6cbcb9164d1c6844a954d46eadf161890f4bcc11a2a9766089b5a22451f08fd414a224e7e04c24062cb1fc8023b661d88fe099811e86cf72e0026188e77cc09b83cca452b3e221ccb24bec136a5b7dadd6aaf2ffc6e9d31829c7dd233b5a5064bcc411c737abedf62716ae5aebda84b7c2d7696a73aa6c3077f375d44d354ebf5fb352dd4d13a66ba76efbb56ba66e5e339dba874d5cf7cece4d3a61e1730adb482aa95cb5a0c45b7fea88d4c7b06e58a6b0b4c1f2efe6fad3e9f5daa993af2779925bb36c4a65f3055bbaf5077decd3ee49f905e804a3134657450548d28a171cdf44b047ba02676905c7d7a7c2de0e7cacc743666c0867a84576f0cad3118ff376600f1e4e7c10707c1e008e566011ec7b86564e4a57a38878ef611f359c064a61df11d214b88f798053106907f7f5125f08498173c55e74c1ef0b28be58825350d0bcd0e20518f81d79c10467054c6af3c515f81d7d31050e007e475e3cc1acd699a75702eafb3b3a01436fd5fb02e47cb0aebb7ab3baeb44b2f33e409c61b6b10982f6700fb06cc13c70764d6e5a5723f7c81dc1dc06b14bb91de37e7115f2c0eb039c5b56dfa3b91ae479600e06e55a7be005cb6badbdbea743eb6a302f869ae3aeddc0036bd973fd512fb56b5a767373e76e8638d3aeddacbd48cd9ed5c75f447860ed7e8007ee217b918adfd3119f5deb32ad3e1d583dd6c1575ae1ec02bca617a9edba128521281444e0ebba72b694cd152d578420493063ec2b3b20101420488104164a20c109286e60a10b4a983006163ed85274e5c9bc02a55e37862ae81524b22b4e6c946eabd8395bcae68a0eaecc00e7951114cf0809f9d903f83ee7839c0f79aa3dee2708c7ae0b250c1f84dfed2ed77b7c023fee861a04964f1adda00645f0620a1547086d01aae08ad005e4e404611411214b0f8e9002fbc1d2a3395b17495c709957aeee824ee0eb3aeae20bbeaeab8ad9839c2d65c3c511d6f03be2624a101743b8e2d3199ac0af4a0a301745b89fa2a1860a3906006581eb7be19ddeedcdd08355c566fb8eac5469f94c1fab745dd380a1152958be31e480402c6f8e14cbc2b72f0ed78619e555a1913e23ec438d8d69d75883db7b3ce4e37d10150f31ed209eb7e739008b25108687a70cb4780cf659f319c5a288130f8d6051dc894911277ec7bc3987758b15e1f8981477205286483b7258ac787af355f2665552046af5e161d03b08e766827fa0c01b1be9c2413008fec0a0568f0bd39a3e0c2a72617a797cf4ed794bb8efc385fb662013e01e36c2a0563ccd4d13f66501c3a78505f0a00b8f65e5f1b8705c001724785d64013f9cdf174a6001092bad781b77feb813cf8a3bf13971277e47dc89ef2193ae23bcf783255b08e1770dbfa32da0c488e177b44593fb3e856ff3763e35c5669b3921cc420515b5eef0b263c2394f5347d8796d7e0c61b766a56ab39a6840046224633754cc330f63b789625ce57ccc1b9168b25e147ea1d56aad4af5db288156abb52a557e95eff1caf879e5edb4787aefbd1785f6a5bfe09721962c6f073e7938f051a44cb9c2a80a8611098cbaa4098e9745c0370c82425ebe286de16281b723e4e1c02381f1ae3ca31d33e4c4bff076580f004f86d6c27d32b41708033cfc82bfb4ac2205af8b5f594da9ba7bc70c28b012bfa32d82708fb86377a4165fea4d11d96cafac5b8b2de07edfb6922b2cc5ef480b2bcc12f0f4e3a7129b6dec3628acca26e755abeabfcfea7ed3408b24fc8e7650840580dfd10ea2c8c6d5a659f2ab66c94f2836db6079f9af58ad835d4aa322ba60aceb01e2181faf93be91114338c3b12fb44250ae2bc45b7d1a85adf911710f4f477cd4ba551b401e76b7718185cf363941da0f889f8d17ea2028f2f0d25a0e68f305163ebf22e027eb559a94b6ab94f290473ebe5aad55a9b429392030b064a0574a79eb130261783f0281664b1fb0c06609e1944de9f54ca7c516f7402f58461cf88d76f6cdcff9a3717c4d4f170c9be019b887a723480ba5a31d28e9c32ebae8204e01106e20ac5ddbd551f9291fe32f797a350cf062cddd2081fc60997137f4b906f481b0c4dc26df1d9d20e79c734e0cab5b1128ba2861d104890a17ad59021c4031c50a1584b164a535e1115598a05551aaa1af173d65d2088dd249e97ccdfa418cf683182a05f083309c68620744c00195316ed0658a9151128420055115286454994263dffb620b2192e0032f4d98a0044eb8800116b4b8011644e0624415139caa2ca13ddb493183252a499e6081136fcb0c8ec8220c2aa880a50831b82d6cf6a5b228810ca0800225285220654a9212601106161b14019e000c7ba4257bd6caa6a5b2fb8eac9091d7759f3d5a923a7aa2fd517a53f6663880936863421094082dc9628c2850c90ec4b0c284276c01064994308f60827b02524cca388930aab5ee9881890e54a062bda04a599b951157907accaae16c61127c02a3c029efe82809a69a15a52bbda38171dd2d989e30052c62308324300822064678a065064ff8820931a00124828b54d2ba08e37a42d40109706621513190ec1195a2232a45cc13d0ffb0041f5c5832254cd9229b47d0572444914754a4cc2360d0542283df911111700c7e47466260c1885a7778d9618494ab2f2bd80d0348a7b059c6d661b17e95cada08610e863c105eb9b54eab54d6c6d7666de789b1764eb360d71d5aaf1a71b6a9b3490c7196b8f1bb4cf3ddc55aff803535c307c09ad4e69b9769de8963a703bf55d7282612ab3965133636a5f4863e8f8442d87a60a13c326a7294459423232ea209acdc1ae7c8680a96f81d1949c159da134c21ea0e2f3baaec7ea004a18f971dbd3fb0258f75502000d40a2272350fa07708b6e8fb13a87900bd4040d121fb3c1043b045750022bb424228a0453f045b13eb60aba5090bd20de9eabbdb822be48208f58838f5532827e2d4ff40d10146f9d857bb3f16d6c31befcfcf8b46dd97f0af55e9aa5e9ea7043b26696f956b7cd6019101014587ec0201b3cb7e76eceab03dde1f68ea6b6dc4b9fed3b37d7dd47fa0e8602fc3fe078a0e33ef4378ed3ac06b9a0eaa9feecfe9aa8bba3f5074401dde9f1c1917751dfe5ceffbf388733d76db4d1d777fa0d43c403ebb0e12fb8fbd3c767588dfee0f248a3817bc3f50747896dd1f283a64effb03832e51df9fa01f283af4e1fde1de7748c47911a71e262706a99f6190cc5f0b5ea956ec5e0bcb743f5082a4ee0f6cd9a31ed301a101014507edc2a288733d3b103728b0f4f3a86b2f8c1271aeeb374eec05e2070a045e6b9efeb5b20bc4fc75f953176fea5e8beb5e2beb5e6b13eac3a32c8ab0f6fab5c9494d107a08bc16fd04606bbe47b7625f2e9824780f3e7a9a9b2756fe61dab44f0f3b997ff31e81027f0436ec52eb0e2f3b2609a45c7d59cd20aecbb08298831378d1deeac279bb9ee344cfe8822f2964e1d14d2523176cde20fc751d61c1045f5f5d3368d52c198faea801c6f03bba420bce2b2cc0232c868e727005d985c7c586204286f8005313a6d70b31ccc0034cdf8386c70362b9747403234c6f2397e497a31b58814ff81ddda009ceac251a466db4c37bcda35e3bdae5d4b12eeb72eae61f2b7640852aa05037428351cf3ea61b5fad56a9e798981ba981639eb3cfcc3c66045868c21658e038ceb43dcf380e1c3862666666664410850e88100593c964ba79e6abd56a151313d3dd2140b285252df4659e6f1c878d8d8db5f6872638213464573535352814ea0729a0505a8252c1c0c0a8686868ae1d28a1c514644ea7938c4aa532994c57132c90886182d9b64d4646a6bba90e6c9084311a0606c65a3bb38cb1e40b7b1acf374ea7130a85925708030c2e50a7f13cc3860d1bdbb6711c674589092b666666666ee64ee379a6468d1a3870e0a071736c01952cccc0f4ee99c66dfc5fad56dddd3780428c2bfdeed9c66bdcb871c35a4b852360199a999979f75ce3ef6e863d48a2044bc0205e60a42443860ca0a2295140924aa58090a24549131b255d2031516363638342a17e70100316b00045535353c371dc0f12542ca1c4a96868684c2693088c9e70a50b938c4aa5ea6e1128b1e403281a464646c65a1b8224ac10018945a1503f1441041254a0b6d3e9c471dc65c5132570c0e1d8b6cd6432d1272e680218269be7150e1c38ba7b3291948224bae6f9c66ab5b2d6ca27c4c0085f2ccdf38c1b376eb412172a5350aae79919336e64069ec1715ce7208b12483899671933333326930942d1e4074e30d578cac6c6e619e6392543c68dccc032ba5bc7055af820d3784c4d4dcdf3e9392695ba91193865ad0502ca0aa2d8e2cf366e434343f3bc3ddf989898dffc538320148c61e33d3e3650b779aef11a954af58ce3b9bbf74666e06b73f308b4c084a52d6abcc7a7c66d9c46cd338dd3c8c8c83caf9edf755dcdcd230852f285151b366c3cfbd0788f0f8dd7b80d9a679bab6060609e6f3cdbf84f73b30874b0851229d4a851e3d9c7e63d3e36a7f11aaae79acb9c4ea7e719cf356cd8b011021d64218a1fd0a041e3d9a7e63d3e35b7390d99679ac36cdbf63cf34ca3468d1a32375f3568c21145b0b1b179f6a1798f0fcd6b6e03f3acfa09070e1ccf329e6d68d0a00173f36402152064a9a9a979f651bdc747759ad79c9e65bead56abe7d4738d8d8dcde96609841f2479010dcd8dd0609a671f99f7f8c85c759a9b618ee3c68d1bcf31cf34353535dbcd3d852658a6a052a99e7d60dee3037399ab6eeee3783e7d3563c68ce7fbaca2a1b991199806c7cd5d2483a32b3232374283659e7d4eeff1391de6abe7ed376666669ebb671995ea466660d5eae6d7052170a0050c0cccb3cff61e9feda7c3dc8cfa8d671c9f2143868ce73fc3c8c8dcc80c2c73e3e6235cc88211429c4ea7671f1ceff1c1f1eda7d56752a9d4b38de7130ccc8dccc0302693e9481329004107db762334787bf659bdc767751cdf6e367de6f9c665dcece3438663ee6384c3313772c231cf359eb7fbf810f1e93e464cf8742333f0e947c914c2e88203078e679f1beff1b9f1d571c8789ef1542a954add1964dc1c0224289dc0c96ab57af699f11e9f19bff1d5cd76e6313b1e0bfe20841696d0851b376e3cfbccbcc767e6337ee366d453cf327e63782c782991851b74993163c6cc67dccc753131313137673e89c1168e666666666e36fd8586420b22b0681b2c6b2d5c72021a90c0d6583d1644a1504018ad20084c5034388e1301162ae420089c8cdbd8d877df64329942704417903491f11e1f19a6d46b54a8dbf7f8a06edfdd3dbfa8c2022aa4dee393ba8cc7dcdc9ff11c739a999999999beae18e7a8f8fb5f6e61937472e8c20640419326e8406cb78f689798f4f4cce3ef3ac922143868c6bade9dc7b7c4ce78e42a16ea406461de9c1106ad08254ea466870ead9c7bec7c73ee6a92c8342a102abd3a8540c17854d4f3aa6664480008002d314002030140e894462b16040d335750f14800e9db4485c22cbe42809620a19630c204040006040600082496000ed96806b671b9e3d887a4e0e3bb8450a48138e415a7998f6a914f074621215774f9c057ba66d50a1cebc20935336cfde9a3787b2f26e47a92ad74a1a58546f10687e04f5d4749e0a8ec7d9b3801d5f0928df47964e2a9cc58eddf82ecc848f9c6fc44bf89663d391282d8daf00ed454008005f48030ba966b27062397cb1c8f7ee8caebcc1a893003882af0300a5895912f634eaa21f3189ef692cbecbf48d49d5bacc8fc6a7d825997e19eb356a8d23f4ec8a178a7a30c1a604fd6a579680f95b6499e9f209184b8c111967f12ab8585c5e8c29c239b62931eb6ab65a240d227fd8b95329f636a1a5a8ddeb58993694ec8088c4ea1a347fcfba6f5a14237784c6dd6cce41ff088160f1972a864048eff7b7b86760b457446f4e6e674330938bf0e3eb73db1a1b0fef92b96cecb85a655a81ac386eb3758eff2b8768633509dcad7d87be2b8480a9afd4c9adf553bf30b9b5c020b874cbc508c681d7c9e4d68a5ea5b6d0482ba4c2f2b6dcfb0bebac80f2171b507fb666726b373b20d0016cb7825887c8dc1bcd894e08ad0d98b2d0aa5646a34f01990bf6c8b894976133f8096e3a43baf667c393fa3726b62be563e09565ec413aaeaf1ee5fe3ea6adefdd796a8a067790a62e81480a7f7eca8bdde03c1248766bb9b6bf036892ef041514ec100c5756d061685804f17eb49d707961c95eb81cd49a2d7e3c4f64141ceb56e86c7f4e1d96d95ed0e7a1830dba5d7f39d179a72b0585e125cfbfadf39cd0857651858b588e8a6b75675a214927d0c3d77856b554954cdee381b00890c613535794fc3e2b42d0d4eec9d98f304680014b1e130128dfbc95b893dcc45aa1f889fe1b50ab0517be7f1d89115db922819027c401f1746d61a2cfd43bd50b82e18993d4f4c391e2778015e9fd1f8ec6dabf136885d8c8fef35c11fb0ff145b5d1e166bde1e010ebda0d384f557abdb8e6dde487fdbba1b57e504833e0b2ee313d14611bbb074684372debbedfa188af1810f9b092c83113947ae9e5a41b303206840bd0dcdc2666c4bcfe8a71ab6643d1380c7d59698d735101a0f154be14bb1b03a8dfa4bf20f6b3a4b7c40edb2f42b1b7ae8f1e4336910791d8179a6e05a3a35a44169e9ac4021cd8f6abb7f9bc1aa06aa15295e89c894efc3619e744fe9f8374dea8840dc8223065c4d79553afc5745b50318c6a3c50bfbfc1ed9e20b1aa15394718776adc95316f94605f9861dee477dcb8391f70a06adb08cb95ab80c18e537178a8649f45c78c02ba59750ea55e366f93e058cd0879b926164f47bc213b2b94998404819cac9ae6bfd90afbb68d828c9e07927898814c9ba84ed2b5423fc862959fd519011d4323b2f9bd5fc50d91e0e196283a3b58ac7e4dfd01a11b3a3d4250e1c9ccab78cacc0f3790e281759d92b97f82961156a28901b6f1593354fd36eb228dc225a41796d2a2ca54c541dbed9748808f193b4520c14f616adeb350d36fd6fad698e726eb4cc86095452b9197902a07cf0639eef9cc4c48f8e4b51a1a549d3a066d717e34280bb170671f43d070d2b51dddd4bd94cb481c6d72dc3de2c15a0674771f2b33a13330d63a4425f4a7de558c5f99f27ce34808237575bea5b772b1b68d577cca1f78b329a72900f6f00fdb19ef4ccab14b40e9c001eb0b025950bcc3a00ffe4a3b46224b18291b33c1ab5627a87d07d35979a5b8a619862b8aa560e3ac0e291648498b76e01e598f4434a03042a444d839740924691bece9bf09389b4cb9f1a70ac3e3d3a0adeb2ce52561f46c786415219049173bb760e5f6f91b19d83a17436f8b6a0d462e3bb68d37d465d7abe566fc60fc1ab065fbf2ba96e4b680ba48da6a168b13eec3a52d25cdc17716d18ed3ca8b3151469a0ebef3b289af1444b47347b238018e0c76d3a0b65885368d0831b59c075ac1ba133cb2f8e8d2eb4d7513e2485bd08e69ee09caadcf3cbfb733443c2bb161207f2334de1a0ac0d2c89f42b446d85f61d7f61a4a596026fa34fe7deb8e5058da543cdf05c3628f4020b55fb5035a8148da9d6304ed8ea1d03c3204a74adca0b9cb1a40eb907a8146c3a0086d4d74054d5bad072b9a3250ce767e0c51eb2bb8651f17dde80f9f80af0ef3fa8ac615b0a6eb4361c3304947a4e59f30b610d43748101802b0a3be18e3c1d2c5be9551715909f8e4f0350822b2874acdcb069426f74ad18dbc9bc833b1f8f189336b10271aba2866961b0969269f28eceef7ea33e4c005d63845eb587c06bcd4de38e8c325031e970005a2e2e724d0fb22b37a45c987a07090fe5b6660b9ad64740983e829e90c5c0b4344d9bd3b8c441d8c4a6c2bff467c5d672a7aa02223060750550807a6cd8b278b9ce49ef10db27467e64207c113cd7f2210c2763d78a9fee64d2809886c403874c5d94b0ac291b30ccffe8eaf42b4b718cd08bec0f9c2b1213c8594a1621bf92c423f02da8daac81543da33db6396b2334ae1206eda877c4d5ab3df35bbb4b8936fe2c126e45b37e22a6931b317ee0535b491ce5defa145380b32bea239d943aa301d9735ce47a26881b56a632a67b5b821b73b2492dc73b7c760d1395f1ef0c0e5ee97fd42b4c3ced102fdef9ee4a864a4055127855a6a500ac03052434ed0ff9108f19179177de84ac47b243077e04303a845a0eb5107a2928d7b9fd57c6913d9e873cc9e90cf03a29471e2d311dc2232fb210c7a64ac078a8a21e785c833c302e473d22d1122521f19360da9d33b715266357fedc0d2571da4d8a0342ebbe6d0ace22ff07988b08cd11387228adfc415c58e1c26b28f24638cf65957f7e21fe44dbc34b110bb97e7ce754845768c34b85faf82326756ef4c53d47d8794ae34f654da49c7a2e7190d33946b0df26d8a9f87e09e6f07a74722f66d8d51144018f79a2ceb686d7d090d02df69f2694884a6cbac8f1a4c3a9f485b665d0c86045acac2b7caf61cc0688d3bac3932db567b570dd23e189255745b24439cdd40d64c79e4920ee13ceac15ae6a2076f21c249ca6d146678d6347411da80f65cd9605701d653c1ce0ad9048b603dbf2bee331c1d5d42964ee1a5e0e22ca1f108d3267903e60a6d19946ef4bfa00830566802b96fd09a78d1d077091aca128a27132daf2ae7a98cdd2caa2d80b8783a2238c7352a6fc4f06c35c5f4f24e84db918d3ea565c532cc4ffdb57a722efd64f1ca8cc687d3b5d07b3a721b652aafcd3091111473b59eb38817c31d0275e9ce729c720135c80d3051525aaa2169631609affbc582aec7275dfd8ce07dcba538c4ab1617a05cc8ce0de4511417bb084c6e44f8882f9cfde5a0eb2fba847983be342b250e18def9e9e2c0fdf56d5d09e2632f5bdca92401924c83b1833b93568bf9c69d8892be9aacb0b0cb1d8d48e4aaee1f91433ac77f2b2b84506ab178034b96db9cd4a4a0462632ded9a99ddd2b6772ef5666b27e3d2c6310a58afdf9e1c29e4920fef4951f44be2c85c930a7fe3b022c58084b3a1a15c0327af70ccfe8b6c1654136ab917e1c2afdc7bd5b9745b2ece6c85ae1171b86fd4702edba66cf6f1f99c670875bb00ef7810c532476771b6617236bbe27d781cd215e38eee9daaac9cbc8daeed0485c34acd18e8bb1c4f6df122f6559a53cc406d68e83c24c0b57c8f191e8dd16d6ede63bb70fdc4fd07371867963a4b43c5370f44b775499a86d1d72b9ad1bf501b56a49701a20af6a22dba0174fe7b2010968b45f756593330f7b3dd3d95c51e4ed04c6eda538ecf51463184b4a51df02d35e78c19ee0b7f853e3e46acff04caa19a971c91fcdb3b04a8d62ac3bac51cf6544f10fdcbd79709356d6b2fbe574a6acd61b0d061b3fafe6ca0c7a4c93296d661ddb7bc42f5e00fdf984bfa29eee5296a178eec1c772dbe71c1b309e4c3efea962bac3821f9183c76af0aa7ac312e23a30b2089f6134dcb9ab06c1345d999918a35d82fe84f54977aaf6a1b3f90614add8146ea1df6f4f41f50f0f513d5504bc73e576893b3aa6141f3663871cd4610666a0f43728741079f17bc3b27b25759346766b8ade1fd2e909b81094d3805e306e62136f39f687bce26be63884bb3921e80fc99264445c3409c9da327f0825a110214280935036487da6e57cfda7dae2dedf9f359925205a13ee2b26c905fca1d1d2501249869515f76a99ea3102a0b2e615b814c6209d05805a747adbf520cfc382d6895fb2d0137b76afdcaa8a59ec66abd1ee1e9b6e57d536326fb14fa5c0a7d9ab2f82ceff38687f04c2a3f9919e38c3a23618c3644bf1ce96a4103428b70f6ec0a7d1ab15a9cb3f45a036ca15fa908017d7cd81108cbb4b477be9e19ae8699e6393710faea10e43806970fe2230c257d78416821c362bd5d780fe25ba13c26fe23f95ef65d9d5918c451be8953c0ce6cf43a67e9172ea43d0ffad03f651f5cd3c39a46b1d94ede81d57748f837c2a41180f4468c0d9c8e5734ee92d3ec58b2c428ab9d99cf2fe5e3d5fea14fe453fed444d565e34be0ae75a581f45f73351f4608a614263668258f8790e45dc3eb8f45c4bc331f8dc5067e1299533d3b0507fdec44f29c25a8336571895b04bd2c7097559a89fe61344e843415afef288614f29cc9d7ecdbf9e14da4d3f54cc0fc14f5817745f702e1b3ae6031272afae9744d34b1d53b43283fa369c7479597e70c907db3bc4a639ce2635ed52ae155c2c42efcae3f87d8d752b22b9a48916e135b6608c1fe535f3a313b31a773113d5b183353d4616e52ddad22afdf9609465fb49a36e12ed0be6db3bcb0d4b06c8412f9502b08da104061dab11350fc99d159387750da85a65ca4d5f36ca95dcfbe0046efc331ba1a2efdb5af6526f07d141f56f325ffa1b13eaa3a01c707f9fb93d367b834430a9202292a8ef18aad9b275e4861319d9c19a8d14bceec6452b54f4e30fb811756eea92cddfa7461a28d7458de68c68584ebe88b21eee98c0b9b0d3c9b61302eb0f2bb7eb12c24f6c7f93e61446d99b2d5521e9c32243379ba5e35f0311161c38d634f31ec2d4fa0984614278a5612e19f4ea5dd7b51b84551d521afbdbec57ba910e7a527108f1a40b89d1d0f4aae7836f5c9f4a9aa08fcdcd1f0f43da30219815b8509086e5cf86333f46d804c4d7683c571fd103d345cd82b5baadd6989e37d7330d96230797af29c0dd066579d9257ca84f7e6711a67977f9c44b7222626ed081aba02c83dbedb641d2c5948ebf9d3e66124bf8e0691f36fab25320dec4d601d373b5dcca674cc9ec07f5ee468172b809bb3198de181b0904ca1bf032b752ccd4e2b82cb314aa4384b0853059065f8c6a0a746fb8798ae208f7cf992ef693d704d96f169355947264de350c61aaeaea2c4fc2b821c51ed871d3e6a22025176a87c26980a1443818b43f4899f89ddb1bbad6f64b263a2b598bad41498c5fcc66054c0a1148c10d6050d7d122aef0969c508eaeee450fff3a687f99f98aa8f89b75f10cd815261f010c94e07c4f0d8ddb7e41f276a1ada092d8fd7b7a5ef25c3be7dfb632b7eaed7f1c9bd09f23836780012625bb72bf0b3d01cdb9d03e79e90bdbb04cc6c426e98ca20ebd750a4f54a25cc4592c7f217190c922f2a71f7ee01086789912a549b2803b060107a92b150fa42e2feaccd44dd4d36fbb6d07529a0c9e6c2ecdcb56892b6b02701303bc5e3b0c6251895d065e1b4c9e44aa759bcacb1e5ab28f88b51e8e9370f1a3f2aaaaa3d934b3c4aa1d11f8ea4a5bd54fc99edad3bb1a921ab957f299f77baab4107409c4197be8ff911bf107002a3447c68ad9be4e273437cc24da146d6e844784c62ba7995cee7ce77ed5a50e5902000bff690bb066b303c436a194ded03dfe0cb857788dcfab3b8f7afff3fc25365af61e02cfdd02265146da67157dcf48b1074f984433c751f58413ddb65a5ca597d9fa65c61953a2d8e2049e387f839f238571b2e5aecbb10bda5d48ffc8ec0e266dd03f90f7af9745163d5797b015f47c35cb9ee7ac9e7b171939ab2b56459b83cae67ed16ffbfce7093878a3f365ba787e420218d53eac858909f8d80d3de1150e7dfc4da9094a48ec3eb4f63b61f24ea52455c704c0a79b1bab98dedb2eec78c143f15e7b2bca999c17b2c76048132c71b5d3b6490c8f950e90f03ed24a9574ed448dc9da166aa53978c61387de98758926977ceb0d9038b03f36f3a57fe336f501e80eb87f666e3934dd1cd05ba37c7ab35170bee8dd18c66e71e95eac0f0bcd4ff743b7a701c3120693cf360c7243bde3ffcc5ece8a9f38eb55f7d9fbb12b9c03bab2b8bf98114316bdb0bd859fd0057021eebe1e1a3a17082981d894e024b7c3a58887fb2068d00400f45070a01e806ecd4d0aed0d113a782bcf9306c349d011f3822d9c795587ce4c0e80997a208a050741c354161ae028a7bcaf405de0108a051645ae212f2cc6b0405152f779e0aad187f7416e94d43b3086176c65d6f00f9da3b635a58fcf2ddf20941780d218aa04d8cce6aadeaea6d2da9c0020deda3af21b5b450ebbcd163d04bbc7fe3b004733bd16642502c157ae1ace7f5fa81d8d6e4d0e784e68f7407214bd531630406aed6b25972aee16361b0fdd21208a1c385491f177b163a15b2112185faebfdd41af2a65d05720f94227c120b82cfd05ca84ecea0cdb31c81a231e10809383ab59b56ea654691eb33e407d7e9362af16b5df7435d2e0b7a47666a20596ac50e1156fac3eb6d9a3876046359ebbf6a68fb40abae0c6ec4c039a273598b5d2738a4fc24ce7133cbb2781f45003058b34270da75baa8f5a3b2ab0f034b07241e75fcd887e1c5ced7899654e38abbe158416c474b7f2301389b75dc9a9063d0c3c6819d2059767070163e6d440ead70e5034baf8e0ec20606d168d98be56981ff5ca44d2e6e8761c8760f66f16828986913d4ee437f367851224a2cd49337b6a6b498e4443c5323e22df9d94d9cb9359b868f25019309f1f928aab577644b534bbcf01e9114d4e2d19f157dcb76b86b2753a992f623f9498a0cf9598e833f4678f89c19c03fa865ed9356eed1c81f3e807fdfe7f9f1fdd372ffab2eb7d608b6a08bc6970831fbaf7b6ecb51bca829a42b03c6f60a7db6f977d33c3295053d2c61b0da0e8de5b64afde288b6a0ac6e6bf611bdd7e5bf6950d4e514d9d5a1e688042f7de967dff53ea05bab25c2a48fc36d1c5db64c70ec114a9d154eb4983673af6b6ece81fcba21a4b31bed540860edfaaec1098f38a1ada3405d13e4cc7b88aec64de32491a75caa1f929a3c3372e3b00e7bcfa4aa394fe1c7b33b2430f300f8cf675cb25b0d68a739eab65d7d59a926ece6e2901f899fb94172c263b558fcae7fbaab388bdab15dd5315f2018b2bb8ef97bfdcc634f2cd433faddac600c84c5f85605047831827d2d001fd271603de6e15d487d162503a14a529759ccc61f181f848324177ef7da284e30c8edcc8104177ef7da284e38c79f8dfe3262740a8b3533d3dfe7d06472c6408a0bbd73e25ce7d06472c6408a0bbd73e25cefd33383548ee733e749b6b3464e2de6592214e4da29021e130a304fd7c515c7606810740e7f4bc5e323730074e7ec9b527b3e8644818c8e8a93fbfe2b28523c92ce83018b9313a553e7eb645bb45228e56559876fb7e8ec68f8799a867dafc12a433d09642d964d8eec2dd9e187803a1d2340cf75ec41eb380ac9b2586d71a41006e226452585c87f87d6d50880d007020b27602588c2d124ddae873b6c6faa97126b625e49f6e50445b7bfdec42dcc973f15b44d676071aac7dca934df8bc3ba402fcceeace82735d037f9e14540de09b7d2fbbcbaea9c0a15b7f2c366034be00026b3ffe09bbf8276668dc4fdf310eef833bcd5366ce1c78d135577a01ea897067170c7b105f0917f4081bc52c94d1e65f0d1aa0f3de5ee5c25e9449400a59ff7f047a2d86ea31a3dc0041dd82daa4c50be13b6de531b7fbbf69f3990a85c6fa17d71bc1e930c25be38ac1c8d5e72ceed20b64dbd0b6f405da99249365c9ddbf95975a22d9c5f21df47823bc5b6ea8b4dbde852bdaf58e64ae6712c6ca6f54f29f4fef0b830efcf1ce58aadfb7035a1f1d662cf9235f075f23235db15effccd11ff0a27550877adb9640ffc0189fd0429a197d38d7484fa5c1dc0b40714db6ab2638011eab621703e1e04b50f93a6cab5f18959c38c7850db56b1d2244479345cccd69264f704c658959dc984d1761213ef0ef1e9c70e540f065e1c33a47ee9b0ee9784b911c879166b662f700a4fa4ebaba1e96fb21fd8ca1332ad85647828802e4343a640987e8bd83e3eff30d04846a44d784f4e4176858b803015cbc1a20de5db9f87c950e8ec65508d6689ab2298e0e8798d641b8d5d2c2b75854401288b66db20ce9c87bed5ddacc0eb2b5b256eee0a20ce05944d1b7c4571377c26716bbde6546763e90a13c0cbdba438a9ead2304897703544523002b6a55eb80e93ab60d2c1ef25cceb688015f9fc55f55a3972925a7f036c064972a6fcf1db288737d87529906323cc028744abab5b10c19a672f67ef71489edbed2973bff5b0f0961b4fb7f5f19a7a457ee641b6599fea558e1fde5bd70de4d42c43d7cbdd2143fcb9af515719dbca7a62e24172985b66e91c6784b6cebe2d00226314390129cb0e23724998dcb6cc999156c9aadee1c2c038503b7c18419622b46ff451eb9147f443f5234f08cb6d1762f122ed24683f1d746f744a033cb3450635719e96f8dd39a8492b76118da9fc902ccd106d37e4cb3d7d02ba76711924d5812f5294a1699b29a0c616482809eaf189c1e50b9d8a4e3abecd164a5535594e02ad66e6868c0227f5e176c3d6b4ff9c02b4ff60115fad7067e9da0a98ca80a213037f43c3e8f1693a2e1997e3ff2b40c3e29d1f02ac958a1da3f637f50a2902b151fc555b339aa77a1c3a2d7e662c7af77e17a0b1edc10bc2640639aec4ad113f142c45b57ca31e5fca0814a4f419279e43ea234258b2bb9b5e3262259a9d82055383b33ecc588f0e4f9b4e1f7492be3af544e4ade6fa5affefba7b12b1296547bb2511231fe82a676ed4784974304deba5c82432b7f8a7d615a3fe7a368e3d6778c625be2f69e0beaa0b194c31fa77ea288b741e7146c1ddba9681468287e559252dc7128b5753bd50af72c70aa8641f940b86494cd91269b61d0570e3171a4935426ce787df3b1f0f09e40a81b18b68437366d50b34c1584a0822994bc0a44eba5403d5b5ad45253c1873acb6ea3738cc61e026d461d8935d176275ec13835ccaaf23f3581b2d72826ddcc16944726eeafe095a411bef33fbce5c951b3b7c61714a9ea9d73af50c6ee805d6e9e07286922f039d10c00880690050b8afaaa1bc11466ce27ff3f39fee5fc97ef83e35f7cfe103e76faabef8f27bca1ea0e554c644dd52660f7f3ffb3e3af0ef39773cd2a5f6a99869349649f7f0fb9cd639dbeada49a84eb18574dfbfb96dc5d61835317dc457891cc1a6539565018672c3a62aa5fbb1c9a0418a8c5a3ced4ef5d0880e4e8e29f478edc7abc516fe350d8ae2347343f28b031a2561090c454376ad3de80e31b77ec8c7975f6d0d74603e68b2df8609f8acbc95001c9c2c2ca9eac15f6a5f5d15a6c96bbe8f36bcb3132fab89690d315324132cf5ddb163f6aceb64f50abc0db791847e19ef75fd0ac57b3e39f43018ae7225086d92e805f0526006da21740871bc716db14bd5cb54cee7ac546980207988eaeec5abdc80b77201608236bc57d38c087da31e69f78e5d354e7324dcab273fde3b855742c86505bdb6187041e462f14f5aed2336022d7996cbed4a4d2cda94a1e025116c884f8ffd4349e74f273a2b7b5f464ac30be216abedea0656ba37648c952c4a74dbd1ed9d8a0b5b2a372c5d64287ec9e66147b0541d00b9624aab86a054d01d178703debc3005acf13a0a82e768730c18932e99993d98b5324c5340bfe62bce6799c651d67821f04d035a51fd244fe96ff8853e221b8dd3dc038ecc49b0331d097692b892eec5e52ce017882d92f83e9c58b84164880ceecdd464f910eaf4721981aa1278b65fb6aa47af73273d10fca991a648763aaee5c3ecc8ea703ac1c39d32703e9f79a87a532df210677b1652a16d9e3e2fcb66aaa60bb116b9fb8e40ae10baead2a394b98068f4cea76b74ddda907b7625d6fcc54d2688594c487315fad32f8c895558d4882afeb64370684d50bc4c87968e8b80e49b2e774528662f68a37d2bb88e6b4e6119b9023f0110381f42efcab49f38ae2bfc452b52732863511832ed2880f2c4c219bd8cd3aa850371a17f1d04dd04c5a40318691bfb6b576c7a9d24025ebb9599a6faedc305a1e8f984985ac0479abd8b5f821462d2e29bcec436788f2d23a1b0b932b4d48ed497a647e74c27231a70530b8e77dbc509c12e418dcb8f3578c9150211fc263c90f79985cd4f9a7c79d0a713b07f98fb5f835d15b91b13ae651d890d5b2257bbc866bf5dc1188e217f30362f5e1694fd5546752c6d0d57b43ec7e0f3729baf8319d9133bfd327e22e2043c4383e9878079887e7c21ff8a9eec74fd8d7d7ff241243fec8fe0f044adf150429965d70cbbe873b11f073cb96ae8a8618e8193a2c4374a01a07e16ccc17847c060e4dbe508417a697beb099de2ae1082443ee202b9491162a9e4a935119463ac975538c19489b50b60c23113118ff16c494856e20c888db83562ebe8f0b2c71f2012e0d2a0cb26a3f3ffe1360979362797d79eee3e62a198b1b47151a97cd6750789a194f4396d3c87efa329e0664bda75fd9c1ecf42f337819eb442046ce0a701f8642ff32662624211049e474ee93d7e791235a8c262fdd03962221234494b177e62067cfee0af91d03edd04936f900a797f9c61bcd022506eedee76bc19dd56cdab4d459eddde2046f234d050e5c690a6fc006e78a3a8a57d0f323eaf7603206d458ec898c242d8ae09ddcead495eee050677b013d7291b40f4898766a9178041e035104cd100074914cfdd93a3d8e924f2844d70fde79d3a2e4450a47e7f1ff3cc60c9a8573d285e400129cde388c8131444d1a4f3221cbab96d3ac2931ba84f48c182197072fa933c3cbe953f2c5485ccc18720ca93d9f9b3ed491344b6863eb12583721e267903f32343f8e3caf9a67a7c61aae3b0fb29c08a9e2bf57f2f4825d0a5dccfe94b756bdcc90682ca01013a04b5f3fa16fbb08464a22c12c8b649ca551160278cbb3ad07eda4e23dabb8f8fafcf0ad8a2377b3d08cdc9e6b01304093a1da6759e7ce62aff52fea70d6f0841d376a92982b8e724b4aa241962a30effa3569549f9729111bf2ec1b428b7f81f6d3879a7c1f1124df02282b143687ee403df221f582ae80554826b11343614b8f525a199fe62b82dd30b6395dec0d318b6c134b112801710721a522329256611037d5fc844d0d446860bf29aef37a082660a2fdec3163bae08e7170d18ed5eb8f7461e5e70b18f53aecf5068e1e8ebf5c29275dbcf000afb8c57ebbcd84ac28a242a55de8519f484466e59dd100270e2b693850da3857e4dea4e32990cfddc0d6e08deb36f2757553260761f71240cef82f32cf3d09ae6ab631ef28917c48e46840c8399e887d05908906bfa05450961dda17413643c8d7180b52f0824e2308616f40118ba9e362179f6af5f496424d103ab25ca2ed0322ad91791efae63b0d6d1a17f90b1cebfe5fd612110c9a36299b33d8d4f16e84be8c01f09b0c8dced0aef55167a0913e1e5d5c50d4a03a7524b72a30f262e2dc9ea34f38d0dd18eb5c2999118dcb926a7031006a28464f5ef96731a4ab9460ab5971ca8afaae104d0171fb83d5f0f1cd0dc320f8dccac979cda2d7b0f298845aa603f169a3f85e60985b20b88307416fca1fb4ebd1d11a372208cc899474bfb4be62b011218b803ee83dcc48d10c5243b603c9bb017e9a0f4c814e80d5fba9fa50ce29ae0188fe73cb54c7215f3f6a119a93678139c271e570e0fe801dc31f3d87925784ecee5176dc25f98b5caf7703427b5be7818ba670d66d1208209f1646b957c3a9faeb5d282f7b0bd6403bec522b75e0c9e1f2bd2a39a7e22f244bb4bf3d2688ba59b41ea06e9919ed71d31347d71dd6d22ca79f38071f1e5a2e2404341639924f0a27ec8235e81bdcd9d692d20a5b0e48ac6bdc6bea1eeaf71f353b2ef5da57355be7fabbc31a1d47cdbdc35a80b45732e4a6c9627ca1d624d8529d4d5698ccb7d2aac50da0055dca269c478c5ae45834f8c7faa28e66875e602b153d5d691c4334726292a2b9d1c56d8f3efab00d6538668ea5298ec6df39cc6e6f6ef483154e9cbe284c0b909787e3ebbbb297ba9120355945f5cf715f5e0f69d8cf1786b9f6bd75223dd28dcd6ddee50e6066f18adedabe31a41c01edf4b8613ab14494236873c1ba95a39c1ee823b01c4e814edd6748e9191400a5634f9fd57bb29b902a35135a2208a1410c07fef9ea38a2c8c9e0dcd2064e64ab82b0abef8f880066116b82a31f703065a3e29af895c7c4fc802ed10f1aef036e9baa7a0a033ac82af5254fa69f6064cac025bc13408b5d0d9d5abf5562fc2939713864532f35317aebd4607080daf94be9b6dffa343ddf35ff2f85af15effc37aa8ebc967f3556bbfcfa834969ffddd7d24ea1bcbb07339052ecf728a60b91a5a211058aec0bdc68b5d0ed3d9990d1a961ae4f9ad7e4bd3b178ce9c900a297fc40f0eeda569472ddaed1baff03caa8dccb873bc17875249e4a09e7b2762627b32b348f0d4d4df1de2909a16bfe5b96fa7c91fe8b56a5c45120b62682a3393bb04cf111781d942d040a5373a3e633c89bca2bc042d13771d980fd4bf65666f513646b18a371fa3df27864f247029141907a66a48f55293e7ac6bcba66e5f5dd97e30890f12828b2d7bfc22f380b7170434360f85a2046565ef4c34320c8a2857d166ee31dd7e72a93f383116241514b24702cb680306d1bbe89a7e8050fd35a880329c7692e1961be77f3a26f2eff8e67c5515241ad52bd9b97af8af2276f4428fe5a089812067aee797e16a31fbb5dc4c570c68c6ad61a0c3c910ca487e0f992eb8ee8f498b54ccf667940a4380bad11b03822b7fd284b16a15c387f419b32d8645863156598f45625cb3ff2c0680128cc82210a6e59eb2f0aece0822ba17f9264052a808cde57562855246d691d0e0dc99d93cf19c7ebca635bd08c76312844a5dc3ce998957a9ebd62383f1bd4b3b80fa7fa9b6511a1d7c92f79c4dff32705231a71f4a4a0c1f984c1d4f2d42131bd4d4aa629421d2077929a82446d60323a35b33e52459ef2666fd34df8e414f849b635392566e342b2eabccea39ffd9822c6e7d3b1960869134d35b08c3a585c1ede54659e3e46bb1153ed3610465aad6d4ef4fd222c42793b96d639d6cfbb759de23bcda4f11b95a198d58bf52b64cc9a1f4c86408cbd8274cd2064e1fb8e721c5e176e951b4dba210368774c80438568f3d9bdeab1f8ab0449ce8307b8592a271e5d5c66b3ec5ef4fdfe7ed8f4b200d0fe8b20bd6b1e4cd15e61b3e8017301cffbb9c0ef67a9d0a152fd06ca141f3526f073fe0c84bad5c839d13cb9b49159af791748e302e73061fc0603cbcb62c1d6c9ae5ac089e2fd4a97cd8f3308b13624bd4b65bbe05386ef6ca93406916d9b52037ed54727fb58a12e64b246c0c557e65ab8a58bb678a52a2c92110ba3af0a10a6167ee20f1a41afcf42901ddf383399ed86251bb7f444dc0d82fc775c22e2e112e072704807f466d944a368391ee310b5b4ddd1d761d5f858b410a6cec4e724e6f67307e10086db02fd8503a6e3b45103a0cd1dc0aa4b0714386056c958c667b735a89b48ad693727f58e45b2e36576057649b4b4b82b71b7f48d5aa88c7e868378368bb0b9fbb2b17d37503f08dd4c7eecf94f1962ebde5c63f18e2c5d35fc3fd637cd537904c18c3762a20f59efcff91be79762021d8df193119302cbeede3f3aa671645bec4e5bb1fef24f674ce047b8b0e580430f8cecbdbd2f664b9f2f474200c7b6f2e60ce9c0b6cdbda94611cf9659311e84246f3de98cc6178406498861edcbf10b0ca20175e76a239afa75125394813656e2c1710fa967807f0f7a41813e41a20b8ca383fd94bd1bf19393b02ff469acca6998120ba665e5c8036e43bf16b4e2a736a0ff8fb381119598f08cc8b32ac19c401d5206047655cc7d83842bc15ea955fb98eca6e8e0fc9409762a52bb46ebefffe4fa73f2d9da1eb7acf8b59164605a1f7cc80b1ae7e5bd69fe412888ba2bcdef29a5ba675a0e9532c72b0abf34bad211ad8123b4c2612e999f2686eae17cefdc37848a71863bcca2167bc4720dbc030c549545b417e73cebfcfb5d23f3106396f04a8436236b8feda00080c5e884d3b73a25e3d07aec851487d810762315e4f342f6bdb50e6bfe9c0f988fa53e25e014608fa8430eeb5b06ca6f2caa4e54af372e7969c4ecce732810020f81b9b275bf4cbf343b4bb20528ea5e5250a034116d64be295a99d93c067c7d0fedcf31e01968291380ee27f48a104e522a0784981e14ebce0c2d19195587fa5dfdb600be20ddd687b04d176b13c7777dc423a5022b8b2bb835e6c19ec15c5d3610b796e32e14e9a8d8f86ec891df918addbcfd62922ced51e8c7ea5d6c8e48f34d2a984b6a8a1fb865985478ccec5442ab8934ef19a9f36e064b67be2ee0b64f710ce78ca05cb77f4b8db5aa06b7fbc9a7c35147d24f3fc621c31361e5ccbcd641134ba53f5d28676a324cee4c61b792717d839950bada14644206cc735643fa8a860cc919965eeec2a8f3ef6661a2f4f6fae8b6690c1c5b4bd25f7227e5dd302e1abc37f64bf3286eca91f010cb495a5d5cbc00409f5c2dfdbc58612d12fe2e5ec02bc143d4840b4df8a5e3d1ddd6848ddf8d2ed714920f452cc6b2766c3062c6a639d72f5689093a83b1300a8b964edeef1e61b53081f839965edd7103a008a160c5827ee4a570824daad76b178b31628f341c1ffba93eb3c4ccd7fdfc0da5c866f7854d44a44dd7b00fc422004db84c06bd8957ab0c6d41f23ca0b224a1d1f03ebbfaf59dbaa6acb6f3fd3760b0d0430366ad1621e18d9c3f8a6e612a468ec732f4798491f62072b94dfb7900976d77080e9aa2301c45e445fb1463757186b805415b197561fbb500407ec38c8d38e052c038b575c48d4e515ca4dc955e160d779d9513342d44e038b792e2e84118b3f8baa4e7c8a0be10fa2b8512c150c20f3a1b06d30ef3178ea571bca89d2f860ce95695684df13ac092254017040ee204b357987032746c00bb812da4ab6c370b008c0b580ad062157576c32232b8f0e4be4211f2784c33f90806dcb488571443125669f21cede1040a533b495bfe5a3a99a8b14e10c2da6bb27710a5027f9dcb7e5e95240f6123b4eb6d21df58ceb2d2da0bb9135e2e2e121321773c8c53ff2c359abc0f13360e26149550d89b5c6f6fd786cf6d53c909f994683d21ed454c6afe228e0a95f0ac4116e931c26ad26d9eb005714f409e18fccc83b982bcf70d2062d6612ced375c5f1af47b8117391008752d82df892fcf33e768965c2fb03776d28d1da62ff40819f0df3a6a50441c3a24104ee2aaf014f29650b094a0a531b6457797117085e693c3bf426f414beb9fe14f380320f22f238844f313cc2ffafc126999bfd0a03502bc58827d19fd10b5160249ac3bf6775692c691657e1716ac7c95c21c0d5f5ec0ae604389e7f7d53d95b4739ccccfa9a9c366673d0072d933e29976a06ce991ea0b2e267b23257f52dc33113b4118f4fbd69516222a4966ef432f7b0c1d65e622c36f5983eef9365cccf3b2bb79d68ddfa14aa1731075a209dea7c772fd87a8e8b221c8d218d72f2eb62cb7fa30041dbf78f23f52d1d572d30b92826448bf3373da2b624bb8de82b7388ef27726d42bed45c7d27dd1eddd76893dff30a3dfb792faa2db2cf4724af873dd0c36eb0c4f74bf074873010d3c0c0d1e4d879234dcaf273a9f5ca51d8dce0d8d7e69e1d29cddc580aee4a6a50a7d21a9806ed030af910ac685292b1187f68d8d9e6df0d8ade15d9506aee60cd4550929249e4f1cfb934ed172a455a0602ddaec33b234ff7dd17743621cd8088ae7db7026b2c4ad4827c85957f881a0bd8f25e70f6e604a6a0341b2b2b47eed65e7930dab8a51bdca2437fe8ed5eada16c9d2a605e1a9e359171d5c96496783eccdd72501c67adc7d766e48c46db98ebffcc008b89642832fdc80e289769fab94a946cd7c5ed0b77d38f81ce71524a7910bec250ce5ed0f6074f49eb641bc7a5bdb6455885ed1cbdce58fb5fac3dba552730904b2772f3600ade5e79e94b539f429a38356e82db75c8577a225b6cb8962a9520b5e3d2c39cadd9492f1a4a18174dcbf8e196aa724afee0aabcf951b126ecc61189e3bd49c6ac8400d8aed3b0de1a48156e8be750fd1e89e7437cc3425b3ba30279e39f33eaf5107f9f2702d4ab013c92e1c45021daed8dd252f349ec7601714d794e6da4d34ffefb30b27c964578c1734ed2836a9297217a0618d6708e5c3c6c39aaf9287e97ae968236825fb07d878874aac7e14335db2f108b1140065a8d07a91bccf49d2fb3e32ea15a5577b925b041bcf1c0436b8d1293dae32a8f42a01c9d8222d5452ead672bdafb38c935845bd6ba4ff6844dde2263a87b120cb5b4192e730bdbd8487b5655fdd8c4ba2fe4b0cfcc18e269ea06b4f95a3740c4772b8878855f7c0fe20c8ccf61b8f3050e8cfa455b3f59ad9fd7740c975e6c0d94eb7a62f35fc17dae6fc25c79879a49991ca9d144878500ceb4828e9acb6064f3b0c52d9d48b0acdc2e8864844385a32091857477a4343caf0a04526955bcc090d1dbb949888cf85a112f08e592e21388e87ac6f3e2ada61c2bf539158c906414cc3de867e0df342149e9ab639c7bad69a368786858ba235aa6995cf2ac41c55b3b50c39271b717c41aeb9f3b8a3e5ea76349e47524784cca8f89b8fd33ade73fa589380e459cd243e38e4c8a9c454c5b1e76cacaef8003e9a59665e1d926ddf8dee7d232c3ace54f7b16d7f3d39cd9826a7e28b04f1f922c8c48ef3c871bd3796767cb218dcbca6c509d376ecbe182d95b11a6e999e24a98cf6816d0f8d9645bb6f3417ac597af911c88e692e9a5a9185c09e65c8d630571b657f9c1e1806b0a70ec27d2177204dc814924fbfde877a521f51d6774e6419c519bb94bc62bb42af06ce62540b340eb63e19bb7940d2088e7efcd880428409a82a7325a63fb0f47cec02c62be4ea7f363c640133288166d1bd7a2588f74a19b03ee733c903e4a29de3841da267a5a30a653a98d1f9250459f6478a05cc78b42ff3298fcbc9ef9bac727510f2985b34a1b25dbaa37451fa82b9c29f4c8f64970d59919ace217e5f188cf809c89cefb796585a3678371b4950068d384455eb5421dfb0a9e1844a12f38e9ce4d925450848c1c779e125fc0f5336e1a80b72b37645f8622134e89d2199c2f02ba4fc73c1a5245c5cef5ba5fd4b44d16c55936f5027894b857a60d22732a4889f37648bc223d62112dfaf10026dcd57ee7ec36acf8b99eda84ddce402d6b3d6d488444756a1a83028b203a78e043bd81d3416fcf2970b08f6290946344102532c84239dafd48a44e683b9b29e1a67263e853f729a0dcd7272dd6480e459345f83ec7ec6d94afd1280bc75a4d324c4d8e753f21f8fac1f785046899fee57e296de35cf76621ed6eefac58980b07a067b98b33ac4cdee9f264471b40d0d8b372fb9c091bdc5bf4b271b09817e95b1c8c2122511df04b88d463d3e3b237149013f7bd58705871f60affc1da4a582652a9a43c251ccfe9c8893be8dd0c3dadcf759caa7073cd28a5362a0129f7b477cf53066de1cbdf7757f2b728aef487917cdd7b91da80ac9bdbc1586d19985e4e42857265242cfdfd384bf062cb93f3f2c7f9a385be5fffdb3c094daa147d703d16cff0e1ec04d2e6517e2379d87924f56c7217a01426ff3986fcc577484ea96403772817198debe4c395e9653b36dc1abf0bf2a4e467d40b6656cdd3dd1a098cfbb8f415c4727b47c639c41c1cceb172fd40e1b1c590d3f665347d6db2e32566f9fced493895831a0aba57556b2679d8a8fce4abc8b561a5623129a7f87559628bc86e6b4070d783de9361b0690ce15fd70abe509d83d0a4c1b2154e279ef9da8d64a0b66ca16e2cb90762fbe6b7d212f82e0dd8807c00eea5a49b2bdf453c7479ed58eb89d534d6dd98ebf23b34b06c6baa3b24568056a70661e524917a9254da7caaa9fd4628317660bf98deb22aaa181cd0df103c145c9b7b2f991caa0a8493515515eb1c0ca4a90f1e885eb5b0bef54f3aa10b72e67b6ee1f0e595cf1b25143386b8c8537aded3badeb944b5b87f284e323989ac755dd6a5a672a3fd72fa85c23c699a83a850a025baa1b5d1857b6b81ad8297b0afee49fa48c4dddfd9e8bd553cd0aa33d5509ffa085ac0c4bdb72a8ea21f8907a944f160448f959474244dd9b6a2d23644175a1b362fd0fc62cb9689ddf134fb7d3026f7604c4784a6a41674d4b66a884a1c4dec92cf82a4f9622b02e9b71e56c86167bfe412d1fe82a524744ebbe2a4926f16dc000915e6ea3ac71d5952625897b303384e8e1d04ff7c9387573b5a6d31d45093137fba63873a9a5cdf8c0fa01f5bf91928eb896b060d24855d4580eb45c42af57ba27062a58ef903223d7335375de210bfe939a4f31a65c7a57d30a73757ac37e5c8d1bda73a38f0ab64c08fa5cbfb705703fbc0a8196df4dd311f7a651ee055d8462ee0042987d5e5d5e4cac271040f77a32a3d14020f550813b517e536bd1ef3dc2ecc77259b74e5dbe1285eacf01fd10ddf109095d5655e413909bd977e31f70da9baaf84cd7bce1ad92eb22dd1ac1408781f74a8e37d4c944d5e39c9a0281bd4faf5e9c2d3ab96f24a8aa620d63f890bb17c5b9b3808b06a89075506139e7d74a95f9addd878a4b627635645345bcfa3cf99ed210bed1997607c948f346286e3c91ed5d673b22a7ce41deea01841cd940e30a89f5a74545c34056f7c938d383747f1b4b5d2bac596f6f51fdd2e7ffb338af71c0e2a483cf3436d94661c5db1eb74c64e222b286f493e6593d589da946db2e70c40d02e25d53af0d49f37a096548ef238210cefa236228fce33ea342bad999c39cd926a4017ee3a6e2deed91a78a0ac055a596d6e58366277251319f4b11c1931a88eeed220765543adc51996dbbec16c2ea261e0cdcb5e91414b19a2ba7a3438e6300d33cd0e3c7696690118ea4d306778c8721846585ef9e52c42b1330270bdecac75a062a9bc2ef9380ac4bfe06f9c265fa8adf2729737a2acf32f6898b97f542366f9c6d569cf4fa04a2b8d4568b401cf121ad9c4ff637712de6b09b5f1f1243b7f904643b679d6943d0ddf008c0a6f818c1965a411269f749363fd2aa307cc293dee1fcbf73ed2ccddaeea237dc079f6c3bbbfe366dd9d9279d27071c5f1054888bb25f6e7010190d897d6053cee1b4d3653090809f77630266a4c2c0ea91bf23cd93a8790f1129e0836009d65694e3e54c3e439672cba13909be15b4272bd405e70c7698334c73a68420feb10bb29e50a5056e48e2c8f4243ee687ebdbbae7449a08318757d84c4f48453895185842b5fccb6c811eedc3464a089e5d05bb0d19122756618fc773d659e16f9252504ba43f4638b865f0f01c17c88121df8065fb6493934296883a0e3d818bda43ba7e3c1f4deab61e0472fbbbcc93a51fc28f4e6696dedcced0b971e6667f63ee518371c1e25b914c3d9e8c0c37157a7f50a6d15a8a0010306ddb1ccc9c8867f58090f21f4f9c00275daa8ee4496ced407617572e6a9bad616c2995275a255210ee286c4e82b9311db100e475343432569c76c2f084f16ffab8c917998a271f1e63428b13942dcd6a1dfbc34eaca58384476a8dc2142481bdf36488ff5d15658fe1cf848b752b8dd19046334c8a0d327f576da626c58ae2f93e47841749996f7176af5f7263fff84ebe858a7249abdedac8c83905eba21f05bf9e27fb98a7c3e4d1825634527ead98f64e38769967c75f352c6832d0edb24f0eb4d0b367efebe9118a8782881b14e5ce389f3e13cbea226294eee443899c031c0e8276e17ce49566e62475ee16cf3f9e9a66b23ecc9c93e627b68143e8c0033c808c0f2c3328784b011946f71677b06cce48eec812c8578e76d3db644ad372bb730567ef1b6cb377619fce732acb8744808102ab3f62c420955c53c36d527a8d04a44919d11ae624319215dbc2a9ceb26f026d27c72bd01a6520f1b00bb5d280a3a042c76b08b137033fab6e55080d025386aa532495ab29ee0660981777603e43998ab5f163655aebf395424ebe4427378c58d6e1b63f2623a764cdf9cce3a93115c9cf702036b3bc38c4dbfe66def9cee13c3570ebaa00c5ecf9e789933d358ea17ba85d4e0545fdb1ad29d88c4add85c1ef26dbeb228099079cf52eeba06e26bce968584baf2868c20102989513b152e5d7a9597325a2871ad00d0b06ae6c393bf5315b8b466bd3209267de140737271fd2780f4f443066574fddd596aa5072c44464d42487e2078315c87d1e0db42d2f434bf1979115e4730cd6e047e4a04f44922897a84659698a84d7a64c20bff917a07422064d6341a2fbcefd3b2de4061d8cf811cf6701f858a82055c8cad0209ad248cbd257323a45520439b9e3cd2f66fd589192ca6583c122cc073eb1f86030f59a8fd7f40b1764d4d4ae97cf1ee3f40b8f42e7a941c1630c59937b5e904cd73da5ae1ed4dc9018a31e318a31041d5757f7df3f862318c428789ff863efc2ba66b0f9e8188c022a090359732efa1a62d9a24d6126acba981b2d0da9b2385b8b7be87e228018818204606835707bd31b0ad61baa8a83224d74350f9511f2db7ba36ada45720577a152dcd2931cf4d51c97e301880fe0bc9c719a06b518afb959f601a16d718b0b865704c51ffc0bc2da7fa55aea41e458d454b0352aca31830c89c31eaff29667928c46125808ea7d292cab35f9f5661bc2444335c3bc996f80c632c2432f368aa360083e0e10af754ebce50f0553f4cf1bc22debcef98c43d82e80a16f4755e0f064be54bcf55ba0b983805844deb174c95a91a41de7f7bee1b328fd31631a3274ef03f9520bbf055b84e55cd57f76a2a32134e5c74c2b828666800b47a69f13336228987f0b2df4d643ae7f6d5d07ab4d45a6d884f97cde9d3219b3aa562c7c4a3459b0eb95c3c10fc888d76f7957a3ce0ece2965b04f29b467eb38ca111355fb49fcda16521693970005d0ba1532763d3cadbd3eb65dcaee6ab8a102c5322dda572e01f895c3d5d023361adc6150be9bf211e7414d8552acd531d03ab3c4edf28196a342b496797fdeec2165618c1f8114908853ca22980497258b192932d39d79f1ae19e787a6ef7d1829376b5538c36b281bbaa8d3c4848295010486fa9af16e901a80360c35d784c475de0b4915345956b8d77f78582982852fab11ca6228a1c3a0d6583d5b469117c640c88a021303277ea473ae6254aaeb589103319020177264ac2058f2ec0c66539afc5a00a4e9ab2e9b1a4d764499bbb1adf0e0c3ba7a8600481baba0a40a747200f4aedb1c4352e17c83fbfc1fc683b25ecc624c217bdab139d651ba77c04353cbefc49b08388d967a60562624f2df714a84fedd4aa5d1d0d09bdcf22de1cac694916863499be613c53de3bc3491b466ac7320343f5eb7075083d375c016b14c395023729259eeb2d396c8683c2385a7595a08aa39cb622d4a84b73432b6db5edbc3bf90c6867d995b4c50fd8efe4e8848ca2fdb45c6f181b9d1bd2042acab936ef965e03b3e16502cea5ffdaf2a153f3442a447ad047a1f4565dcc25d6441697c9da4c1b76a631a1acbe838c739f590dee1acfebfbd655c1df7eab520393de324f0464a20a0686658ae6e22558e429a5175098ad1b042850e7aab87b69316eccf5c68ee2728360701e543f43b818e666f23b96a9042e462ba6510932f3168702855ac3e481c2d0a4448eb57ac98dc5f1e428d4184a892cec64fa1bf435bf053d0ad8f56ef53742538a8b000052195c492deef9883c0e7d531be620820e4779b709f131290a6bd217a840e9cb3a6d6f7933e986c77291f8855cc2e95ddc337b321541f44d2f5cf1f066f26b0fecc9ef52e39bcf4b86e1be24df5996ae9dda90464eb0c1e39d9a6c8d4a419a32e9f85612503a9d3ae9d0f88caf5991dd2874f6a7524c185163aea262ed69ba6858e84320875db036c45a28f5ed3f4adc39580941f60be792d0cf9577a9f4dc15a881a8395ff05c318e896d2f8652c55617f00f05a85b88f05985bcd1c9d517a8b3b7be2c895afe2245af66f6ef0ff40abc84e074608f29ea40deb12e2254ea8465eea36eb49002a5bd415a3e00b57a9005bff2792f54cf7108d505136ca20054b0064a73a1d909b6ed00365dd62ef10969184a54baa6412a684f688e74f665cc32c169153460097c402fd2c52070cae3c7c0995501f6f1518bba9c58b8dff69b1675eacd8da6a624f6083854e12b195d23b6c1cada3a5a779b04f527e60a30ccc5ff76b4dbe3ebef3ba17f1061d9b6ee76290f540a0a32e4628004d89e91b7b5382ac9dfd0b8efd93366e3acb5585f126be0196254ab329a4c431fdd7b0285867ec1f7336c93a79dd0a3d8c846c26df6c2fca49633c8c9c328a4556a43a83562685c8807b58380f8420e88bf938538a385a5d15d1eb3f832ca943b2a949d242fcc2e77fc430e4d147c0030df290e615a6b7a24257827412319b6ca02f1f17706a004803d82eb871c000dab95cc6fed25ad88dbb47cf8dd2a475d5a818e94959312cdea0ea853eabe8538b09560e26d90337b870834901b53ae4e94fee7794af953e7f0bfb01c78b472998f6b89c4b2380add53f8fffaedbd5f74c0fcbd6a6111a2af2252f620fa9797fd5119eb6478d8e35681123d27fe880e31753ec25f72b311786701bc1180d8ce48eb302ad674b493af7f700dbf9f70740f79aa540c0174fcdce4092214de4db117b60bbe898856ce7e81d9d103704f847caf7579692c01bd3f4fff8895fb5de9244d4b134e7578745f8d84b2d32fd7ff9efa0d72de086fe41ca9f7cc0cef1d2fcd2a1d9ebedff12fd23031155c96655040c6bb7628a0854053e5f96e7db26d722634c3477018cbf1d4f983381726a24d02d81931a29cec644536a61e3e31a805307c8f79a5ce0391b6f838fb08c3b359901fb9d6b2fe9facb14383129f8a0970e6b2141b664a3a8b71e1bcefd1d03461064048e3b27697e501dc67ab15837fdad358a04ee44f1d5ccbb1b6ad0346662f43a003d11db53a73d2eb515aa262cf706299d02881fa4b72ad85f287b656a335d2874b798dcc1380865f25bb343d9ff3083ca32ed184d0798c2b9c5530429cbc8e98a0c1e81d683c5866621184f5341dae41fb1900e055b2fd8966351850290385ee18a400d819d17bafa0a59b6f616b45e30f733731114dc512406e25f1c0525835c92c31a3915d0e846f9b8b2a4aa3222c7f34d0590553fcc35069620248c0ceed23344a282865e1d053526d18e07ee3bdd23c28cded5cc9e630677a797a1ab9ae0eaac8b6f6f98d06af37fc0faf3246966656826105f0178a01c3d8612f310dee8e1d9153762a2d37037ee7f616e9b77ffb3c7f51cc7cf19f93715414e4d08e50e493f114f31fa03122adcfff93f62feb524dbf945f1f401a3d0635d1fb0ba40d20a8e4342b83b1c5367b87d702343be84513ed5492f2ef4b79299a239cd75327f8954caeae592148c6d2e44c815ea14eb889644969160c4a5a3f28d14e1d2507629223419934b34443c4c32e8d25007ebab4cfa694b979cabeacb1a8ab1e1cd9b61e054782aee94d8e4284aced5c079877744c4dddc8a0feeb289d23508a726c7cde385034d5e47f887c63566734c82d4445286e8691ad4ab1218f0e12a7c2d534855b648bd731823494bbe641f17dbd6f3d6fb7b4b3b5a30994af41f772c98a831dd65caa1295493d6a651de3703d4c33c65b9c383ff7e787bafdb2990eceba5b5ce548fd199cc1265f12a73a5654b2fa995ddbf354a91d3e00763a8376492de8a7df143c5211d7ef5eabb8799806fe9a4d8c0d7c801877fe97c551eb1f6e1e24de91939fdfe6eeae26d4c1676fc2500016341f8ad07eec0cb0ec6a057018082df802e2a0601894dd05f45ac77801c6bef16e54742bbfb169f0fe03d0a7a58b701d1762b5d784be4d24ff53784a9d38c0a89b8827b62f1ffd764fc749eb37d299102125244e4a3dab728bfdd465dcb9a47a8794a04b9f42b14d205a9ea4f88c841c8263c9533477b1a981263e967001f2be3f0136a23018404e82c89af7bbb544371ce3375b900657cbb11dd0e88110ea9ff17bf11940bcf7ea9d8a1dc7ce733069065c24cc8285a92a16d5f3bfbecc8d70bfd318c81d4526ac181b3cbfa10ec5d780a75c66ecf70ab71b89c6a2ad95781b32a38de8e9baf108a5492e72ad0ce94a34d4ea5302f042c663f00f188285fb31bb84baf602e75bcf1fe19458541c2d0b2573f07916122998ff27c3c21cd9218c2476357189ad1611218ca56471870c0eb12a08edec19c22c8077d8b44c469c5fc78134988140843338e09e72da2851a172c9ab6b5615b444afabc7f35e9fb20c4899b20216f4c57849a071ede5659e8f2764570a02437c15f1315a1f5923c485d86ae7b00592bd37e9a131983bed4df836c89c8e023ceb4148ae7c6c38423e209f60dbd64bc614bf89f8d24b012838b2483cf389c99b70ab9dc86e862422ed09fa23dffc06efe10d588c62a3fd3be7d81aefcb2af1607d40ee83d2000d8c52ba002b30b8dd34297d13203cf2fd3bcdf2bcca2c5d43caf544b3509f4a2ee65adb7bb4349c0338e1b0827f82b884522d6e292a7e887179bd0d7f0b75f98f40610745e4218f1bd64c821693408bdef78d5c360496ccb5e6c29a5050806d1b209a2ecbc8582db301093d96bed06dc8d29eb4998010311a6b4802aff4888a52b0309972a1a8fecb3e629b1ff5e5bfe027201b6bb23d089a183161d403a4f950e96dab57403599e00981a10a10f2ac5722f7219a8fe71454f926eb7d061a5b941bfd39116ebff79504f311a1740c72008fd755241ec2a746ab0c3c878ec0c268219dcf95c0e8474f518a0f924659be49b218c394c3869e649c9c4c05e83181db8fb6035c0846045b968444db9139da8f78de602f597f2d09d1e65ee1dcb5f05db6e45cc8aef18c4868feda9bf8da15a0400c1ab2fde539b8ffde217ea4467a352e1aea86d882d5ac59e1175d66b744db8e9a1b67c5dc613c22952424e62c5e131b8f2ab8cef2c8e16cc3aa4e096394249f0d980a91810348a14150565a08604e279719f63f3e69afb380233d1558f281710d29b0e874ed5586a83d7f729931aeeea6da3dfdb75161ff2a4cfc03735acbadc1a6c5b1cf9c52e64bc46344e08a806f327cfe02ba4aecc365dc9c299d35e44823ec1eccff1ac55e9c60d8267251a59ca1b0d6e8ef7e015ad10b1bd5dbf6a3ac3c10f5d026b21c11d85d93113cdb025821c308cf8c9830de17907f9a1b700aac30f3cdba02eae82fd7394db2b3a1b5546935d76110c5a4a73ec5594da4d39558c789aaca1e3c2146bedc99ad2bcb42e42dcc14910ed462466976db21a380671334a1b4cb03688e589a2165ccc5fe5ed798e8be94657316f9094a7673a6690543ef8af5209890ef442ea21cc0a19f237cb6c4aa047f1e3ffcf96825c91c2ffbb0746402d723661b1926bc57f86918d0d557bdc2c5370ac23dec1a4f9289e7005bd84587738ba9aa529a52b9d168dc0f0568b98cce6fabec717a475c1a064b8988c5b461c0f2941f61540b14c193104f6ff0703c73453bb27437421a23a86594225f6665b8000069e6d5521ce7c0213499f0718bbdd3969603120fd069106dd06ea694f27281009af822bb640bcb9ceb6ad9552bf7dbec8c0ff9600cabb566a11672b236ca8e97e357be82153c4ae27323635c2cd469cfc0b53ebe9f49fde55a973cc01f2124240679e5a0d2dc4652b7098fcce551aa55b2148ffb3e0e91f9a80e4883ca5270d6e21e3484ba483dc4dc8ca8e3b2c9be3ff2862d0047129f5516ba819460d704275803b61ace4d60610af3bbc40689f8297537e836a0d2c547298fe913fd8c2dba45c3f730ffa0c850a9965790090f1aa930622433fd0f87a82f8ab10ece4a9675de23e1c82d074b45b764c87a446e0624c9607e67c7cb7971d0acc37c635cf03b8aa59574e2bf8d7491c1ba62df0b43624c5214b20bee88d0164ca46b1e2c116c328d9534a3c55df18ee0a21812d7e88ea9d57b4e5d460f85585d90567a4355c3fc442a8bf7df06db0fc64b422b6e868b472e5b41abb4612b90481caa37e0a51e228b7ab8f5353dffd2bb19cb49cfa68f3fc90b133ba2b37d21f11e08b8bae06148c0e00f11685d8f000ffd0a4c0fc3ac2975c075a85944fa9e006c6c6b30a2372aba117fb4aeb2f387827150f7a913a66bd5200cf84b3366db742b533bdd58c549a0428ae47c8035322769bc368ff6ba251b975a3e8810f1e25c901d11fc474d17c0c34775d39b62080b48d5e47caacaef0f9a01648e358bf751e641fc2e6c316bee800d61779468f2d75bc892ee174d328c47617fc0d980c98bbe8561f2312651952c139ab4f48031a44ffda371459c3903c7613cb087721d2dce3eea072d595c3fe02c27ec756796f42b616dcdfe0366c28d1618fb2b01d09b52f783524dd1fcb269bce41a68bb9722df6865ac3cc87c239ed33df6b5d8e754f73dae35b9ecd8ddf70d6fbc6df9ffc428426b044bcf6e1d7e2f0108678000ff16f0baf7ea085e27c1ebf159f0a3762851090130a329dac41042c59cb60696116f8b225fe296cbd6f783e1134baacfaa7404c36c191e1cfe3cc70a77372791238d95c89bc64fe1c678247c63fc533e19ee6cb7248f0a4396539f2fc13ce0c9e1c7716678a3bfff846cf355937567d6a9b0d7762f5d0e90a43fb36340caf23c01644f3b0754c667cc1fa58b72082f0ed8bd8ffde226308b2170ae9153124c2ee278d9070b1d9218e345cd669d751863170c5216cd0c70405ba8d6eae7859165c76ca2aec2937dbb9ba55e20a8f0ae00cc58dc25d0376bd9d0798c42e6396667d5d3aa98af6075d24fcc8956fef78811c26d5f81b5c6e406675b55d3498b0b584eb11f4b106fff52d5850626010b40710811a23f801a39be2abb244f06c89a9e912f4f0252ccc01c76191d6d623b15a70bbf51ad95dd46b41955a2e64d746e5d6c8b18489c196f1b687104f7488b32e2a09110af29953ec6e56d87b7312f247ace2a99821439c30dab7a9ce44e8252b58ce552900a42c07cfc361fed7afd3c267bd2b6f8505c1d558f534f92ea04284f1faf0eac49b1c77fb72c5f4302f1209220201d184d3ba8ff80794f4e6e09fba46724faa26da8a1c477f1d9764e973ee616a60fce07eb5695934c100cc1b088f76a11a4fb6b43fb7703b400e65537e8c8bc6f82622889fdf0f6f125207d11eeaf03357589cec65bb7625117724d2e3ba967e6b2b823e2335f70ef85ab4d380e964ac42a73ec006cb955c180134a1c3e5ba031d7486be96a5a9f391b610db5fcf2aa49786b3bd51dec1e68895ddcd61f20b26cd7046dfd02fd4066964587f70d5ca41889f1c153372defdb4e827e45bef3fee9c78e137ad60978723690af9b8d9795c0550cb5bfd6abcc4261102d52f12be23ca970e862953bdfdb7907d8fb071f723da43d7ecfbb9abe4043daca95d1195d5b005031427bfc218b6fc03f7568081c2828e1ab41098ac7564b1b864f0617f185b233295a6d0bcae050bc830ec97c1f4aae5b1d5da8bd77dea31f617132900aa87fb6783d472df1cb5e1dbfcd698ead194f48b4d4f69a977f4cb901dca8c17e0909eaf31f1f75a3be8294140b28f060282d89598f80ddb6844742a547fb9717b6d334bfec93a3cafc54a12d84321ca6de04008225096868419275aeea46237c75b06d523000c852d54c3c722361da5417e05155a1625fcd0ec4faac5a37ceb0d23e4e6ecf82239c8550e221793bef8afcb459e5a7d26664be123a2100904595fbd1197c296331732539bb2496611f3e962f6641e8c567e0993c6d01e8a98b1436803c829bb9c9643cd7cc51042a0da50f5cba18bf5d3972afd9b666d49d48552dfe10584b9176dc363fc0d0153b732369a38e23805f37913ac80e5126e0ba07d6c92f98f692d42c4b164a41746cfd80190bd5a115ed6a1a7597419133932b77f9077064e1eeb24f4ce7c23d7dc3fc2d548d7f787e89b9dac57a0f655fb14497662a22133576c2c29af8088c1a8e0c4d654a6429a6289e852c7feb7679714b544adfcb756044a66f7c39cb5d1d442f6ebf795effb7c49b3f77bfa569abaece2e1dbbcf5e4b74c8a3709d270844d3ca06db99ad6fcdacbe26c409e7d47d5cc19cdc639edcc9b353a2c6f3345930b65a0790af5d79dbde87ec4292eb0aefc464831581fe2dbeb38c4a9ba750bc6c1e20a1c518cc6d4cf775b76cbc33c24797f111c41540d021b2d7416a2f0e9e81c4b3e3bb893d8b22ca2bf4f768ae02bd4752466b346713c467d726d29cba2c250898b56a59245ec1a66476c59120a00a1175196631c432dee0c03fb1583328ecb51ab8be2e63100959e7f9cd2cad9f2f3cfe9c864dfb5d4e9597421400ca315e354defd909b2692c25f5f9735e49868b0b8330d2062b9fb7949fb2d14379ced38690789f7392071db2e67c05301fb33516a1b98dee6e4020a69d4a12111587087390f265223945e8422ad97646a5078deb412b428df1b493facec4185ab2ca94a716f21dca259154faa41cb25ac5367d41e3c9a1bfe850ab511d2028e977af0b209670887bed763415bb63561e483bf1e35011122e0ece71e3c59f1d195c809128c751749ada4055cdbe925370599594e2742c02d3a8c3a7abfc96bcdbb08c51443f83ae500776fe6ef1cd8993883fe48813e91ae919e68ec1664e701074f2998536e58ca030cfa1307ef6a4ce799953666ccc2c22b1fc88dd21f69947840b58491635ddb4adc4e5e87f12f9ff4c581c604caea97b79ba2ca19e530b9f78dc9465d5b7cac64c04df821394a634101951d8628a5a19bb8ccd3083cf0764d991dffc54f582847d02c0498e4bbde0e84921d78e24f12dd6e025da37bffc8a862731c7a8ce34074c6202f65ab7da04a7ab2640d14b0f39744d9be8ac58e3129dbc7f3a2c9b19cbd71a0de34a2f992e83c77c501b74036d3e72fb9b6747d5119c1f7385a48870b1e28d70bc33d0eafbb97c86d6faf27680d16b1897327dfea8c4471e03e2c2647b05ac8c5ee988a8117479fa9096e7fd0d0801c4c2fa97d2a26bcb41396ee8c05ee6b245822f691a2dac66d4fca07e85f522696465cec963ab20abf20a8bee68e4e726994d4fb58b3238714023d5b4db532666d7225edd95a30598009f843e0de7df2b2391f85477aadcb8426f8998628ea318ddb232cfc3298576686de190397117a8cb00b1185faf09ca5ada64db16ca745e47bfc6ca4ece9ec5876d1a30aff3d09288246c499d745547944ba9ee8156f8feb741664ba401a0fbdb0de1cd645dd1eedc9db368bba29e438f0ea589d73d84cd62f23c20e3643c5b38d6bd28e3c06d358bf5d228783563d60707e3e4ddb6db20ba1a80fdf6ae86423a0a8a4dd2d3804a7034fea8cbac8a5dbd4267920a224b10af01da52d28e824113d40ab001d886ff399603c4058df2c80930abdbebbb8bca6513f9207192cbdca180496921f4f7c085bca8fc64d9de029aef4524ee7c8202ba03a519a7af11c4a5332e1f21f6692f132203de9e0281d01db1153240ebef036adee29c085a0b226db10a27d831e7bcadf7232c1b3ee6eadebf8b76e2fc16a6e9fd7cd44f1ddf19dab933cda4f1ab38199e075f3f4874e9c4de6979a4a9fa5c23d18517a99ba53e411db23f3b63d89248133240b4476c0192b76c3f1d137fd81d152747e381bf786db84e69dd4dcfb15425c2caacaca54bc9ac65368cc87c895869f16be8de68427da04cadf90fe40f083fcaf21da9f1bfd0ca3975dca92c3a8579596fa9240217642b21c6730b77051ed2d9a039548c8a930a222943aced189fd2da307691f996c8b48b488667cd207810e07850844e885b5edd9cb6152289ef186c17950401922417bd59d284b280219f0907e2c63c7dbfedee1a12143f86c57b83461f01b5f761f20655fb8587866e55a8eff35aca49c176ca867c8a367932e36c9113482b46b453a7bbcd7aace0b9cf3ff9141becdf7a2e68c30773a20ec1774d66031fff3f29c6581c9eed77f935336946f7c5010dc299b2824dd77b3e4a230b0df22fac17f9b4f4c2f6cd2b399e953998d41c770eafe14c0218c81397eb5693260db3c592e600c3c0c9a3d0dff8f16027cb2d054d48e224bd63908750f3da0860153f2e295621e6713f0c0b2144174900ba009a2f2acb9bcae66d14520cdb78c3a3a105f0deb75ba7941a8faa7eaf9e8146b7c6da2074b5951c41bf229a3a1134e9d391faa0f1219745c9abe29fa742aad6f36e959f4ca10656c9322ae311201679bb708528156184d570a87fc06ed8400f8a7215caec0cd8782480e04559a6c750d80d505911bbc19e79a5b9ac38cafddf06a1170912745d21d2dd229c6f86115cd2c18f03077f8fe577196ce30fa02080baede7b0e4c0f2e381bd6243fd716ecde6c6910ac0d85295117397c9c0427dea8478a3bb2beabb37e4f292f5e336dba30030b2071973bf7070b44327c2da105f87e84370589a524f3df626ee31212ec39b8ad52b95a5ec6147f51583b632a4b28fca9c163f2409432b01fe0d2b497bf6ec631755bc25ee9cdd2f619f565b0a3a39989321e3e3e5ddd9723209ab0021dc4419a514f51a962a8d038023818ed49f90292aa788f0aa65545616711f50ea000cc7c506cacc5b03c7bc5fb7fc4872658bd2901252072df1570d053ed41dbe36e0f0b2c6ad24b1f68272be8511417b629f604d5bafded6ea66734ad7b54ecb5dc8ba96f2b3ef43db99ef594695001691296cfd60d22dcad9e22f49e554ffd6b4d56362d19c233dde656e35fd4b96ef0df2a8322866ea835707a5f3620970e4dd4dadb1437956d4eddac79f2672d22ccf20610d5f86fe1678601770cff5dcbf401d479b5a7421e3eeeb9d685b54a925827e59d6e3dd3933ae4c380569e953d9ecd5e5054880f45d870251ef093529a25c05386505d0d1b579e17654a9083dd28a5aa3b69d1782059e3e439dd81f9b1d84cf44a80c3de4af47541e419df3f21f381ec0db13e8705d8ccb6a0a7653e726e721f11708b6ddd21523c456ed7cec08b78f77bf186e0d170b4320bc94e5ee1e0f91e4b72568d4e2a7fa56a653ec1654229909e75b781205fc6644b5814c4900498f82864e1e2e31f9b2d755bf3b5c438829a33fd18eeb34445e65802b7c1b60e8d1bc3834f926930203674ef189dacc44034c7a844475cc316b4183f103f93b8f3c8c36b43ae4702c7eb3994500f1beaa0a071f69fd1f814ba567e8ae5396a63a09978a253cdac74c5c3d0ea101acd552048e4a3edc8efe325aa8ac03c14d9cce5d0a03f411ea7f6ba2759bb9653fb022968246f507a7fab7746201ed1cb6dd933eb423552bd504d799ac69c23194c47a915889f635c5217d6bedf3b1aa14adb214594a56f075430c27f8772bd5bb2d3fbe5d3cd18028c542c525009841a17b32888c72841c250a6f5fc316ae5ac8921984ac5606b5b12e4e493ddd674b8119601ec021ffb5eb2a3bb44852f6751b3e931f5f04bedef1afdf8b6f7cb60bee96875218496632abeee2f3bf6bd79a2949d1443e7fb6f084f883c20d8ffde4360d61d840489a02221ed5d10a690aed9b8bd5a481886840161489f7d4cf9215ba5345b0c6b7764ab7bf950b68fb092429593807c6b5320f99eaf0ff99d3f20108c5418aaca32f53b47f80c7df4781445b5086c46697bb95e8d6ff564046ee301121de5e88031f37041d389ef56235095c42d112afc908123505295e327d554a46834a8c7d7919893ebbfe95f52bb514773b7a924b70ca4722531883fbe445241bc1ca64c5032632b0d42d45932e77971ec7ab16c1588d1ea5a658f3ec0d84c4a64c78157c5d95cc5e3c46dcdfee6809201d42fbd489c7fd15fd16af8dd5798d27686d491800fc6f19517a7a1e889f8f2314b2eedeb0e63725ce40183eb3601cc27710a249c223cbf2d938c34c3529e16ea0a80c0221897cf3dc59d38d0d4b7047116975d0644b574531c5183c398836b5c9de81ce6a657d2633ec814bd6e8ff3824cae201c0c06255b8c77b30dc6169d6f8e65cedbf2977652cb261b58d5680e70ef85f8a354583b30c6776320462df7bbe7eef5fee7325ceb434d02fa9ced7e75e92ff2f62f41d7d1f443a5f00e6cea8075a2b6ff7b23f13511370da024f5ec49a8fe504ffad043dbe9670e8a0b6b3596460ec02681d0ec55b5d94cf740abe7919669e97daa25f45672fa8594785b58c446ea251f34a03f21130c5b8d602d31ed29cf541340b026803c3e21d2b20484bd59a3364357854dd8e22371b71f7e66681d75797997202726c3a17fe24fd0e2d58c125734d8a46e80ae4a9f3941d9e1439ddea2e3d159a8e9fa4b7c8aefe7445b1a0e9b52c0ba1d333048cb944d3392f6489c863ff1ab533213c716fd863c476bf14df61712b6fe103753722f3a4342c211744c9293322606d7127f7b52d4bf15fe8b9e5aac6893a0b9eeac3c4907567f60eed04c56fa9ac2a16202fe149aad10af9c45ce64b03c8fa223198256cbaf41975b7a70c754020d504e8c1f73bdfacfc68e287ca131708f6e06435ce6d83d6ad5eb14b12fe88fa5636a2543ea69840063c322676c1815e32f792ffc2fa84abc287b51f3180d4dc04504f499c401029cc35470af4f196db5884224ce3a8e3edb47b37451d1ed43a81fbf71de1968550b80e5eccc960e6590ba1b61f9c9c397182eea07bb69b6b71d078e2016ec4e17782a76ef279e4f1c7d5254c0355f20474a7670bdff0b5ed92622f4a65fae41198cd379f4cb031b040084f5da85dfc283719f1b8b30f94720068294a516889327af57c6cda12fef835809917f693a4b8b90f9a245498b5a39c08d225e3b3f9cacc30b1f16c263c80b317f09bce91b28b0d537937ebf1330798c915bc7511f1a0dddfdb65c5c4b545794d22fc3d29e80a53903f71d48f4cf9941f0aa818d863116826e5e326185e1fe8caa26d21868ca422124f88d1d8b3864c68e83436da1d6433d2921a6b2f375c0d0883abce5d9544aa7b57ca78a530bac91f04f3e579e5d7956d9a362f9592d268c8647b474f90e01e76323ede3ecf36acdbe892774879ecf1b8b2526a27578a1134421a5507b760598a635adc4902cdd4b5adf70a5a4046256ae03b80716abd7a96c804b438be88bdbdc199f0c3bbcc56f10dbe3b7948539befc9b30bfc3138011e324b197463d4374653971ed1038aedfc7b5d41874042364719a5e33fae5c1435d43d350d65bac011dcfb66360b212ef26fbb8bcfab892e8d4eb62b6f3341f82181cae97430ebcc28d4d0353a2f0637668bc40e78d3e52a365d5a053a8adb348787b401828d4e17f5858ff1bb356075975f5d81cb017f2dd87f76423e128f462b804abb1bd79c34693af85ebd30ac16ae360693c3e14abb7603e8d6cd2d89a4cf1bac08130b04e3afe1c8b88d2dd534553272627b42fb7c14315d3d34eb815c25af13bc605ae09adad0db2902138d5d950b488b9c71d0ccc7210b05a86bd91c73e4f92a150fc824688a43140eb80a744d1e60ec66582f439a452c9b6fb8a3f18a08212c6f62e2012ccd73031a4fc71f7a17c3c788bc92149a06b36d004584108c24970a469ce9fa40f0ab312bf07e9bf75f4fa6f7fb041e57d1234f1d9e8449e56cf92c75bad23335d706aaa576344a83427e08393cc000f866d166ec0452b95532e66a5f4321a6d62c090174218bda48997f3735a44e2db431add73426143952f0d2ce1a0a42737c2f0ac4be0909d466f0bf6d95eb408b9212931141e4863dc54cfc348ae692e1272a8501dd2ba27ceac4f692c1215ad358f7ec6fd82e41fb6c74ea13af9cd28d5140215a25e3266c65c6e183807cc4fd719aec3299fade015efe847cd54d801c186c3114fcec80d82c1719407620fcf1e1562e566b2584ab7bf16a47a5e5570ef336e08f3f3805ba47a71c2ef7235eb2032450b19825ad35fa6f8a13ebe024200aad921b70ad8ed30a0abe2f207e5b5122ad0dcfba2ede104854c76a6c0cce8d0655e7f2360f1ba112000015e6b090e4e93d827a30974e266a5593e0a1af83c202152ba1cf47ccb0548bd330024ceee758c1076bd5f237e6cccb57880983ef1a86053169e4302380ace961a76948832c842bdbb5369949ccb28388695a02c4c41717da8d39b06e1a3032b5c7778f99b725aa1310291cc58e1d10dc7a5c296f90e92ba20c94ebe8620fd9826516cc79015ce048b92221b97219f3d297dc395e834c8300fd72a5ca8cb123d557c1eb1589e6eabdfa3d2e55ce192eeabd934809407ca4d0689c2c191d0bdb6141469e931d2aa29e45ba79c0aa80979ed43ce1ce228cc6c323191245d1c0e910e77e82e02368a5c74afcc1ccb9a02a5bdf27206c4c19cfe58632491b70f9cd279f6e9333e1906ee9e42218ed4c9d02dde765afc078effc71e1ec0deddf2c0ada910e50a7d622befc7a5f444012e196ddfa85f87c2b8d1ef42013361ffda56d92d3fe089e4208ad1957c5d38e4cb3a6ce755c1dddaf54f440fba7d155b4db95672a20ee5e6e2b8560972c5a58c33627cb5de52328976e9e3719d599172541be70f2f17f4470804627b4cc4a5e799673a2d9ba990a7f0ffc38a9ba14a5ed7537617ac1253b99eb7120b2b887d1a2249db4f85bd9888f4c5d8e544f46a0ab971cd502b669ec0b3a683a7c8083d950416af175c57b6c43d7785fb2d4f86ecaaa6267423865573f97aec9937b9b1c5106de5115b6842439197ef0521d58f96f6bc4296f328927e833baa1bcef78c1ad7280ee151e8746f34453d61fd82fd16b8be486a26091117421bc23902a90e51a149809d853ba5e29b98b30668425a55d28363938a46819718d66834302736b79a39a79339b7bfd29f8c272d3b53e82892f8bc106cbab4df5f6907653f398cdebbc705d26cb7f627f8aa9e75f764514bebb0ed34134cdab16697f8f5858fb0862d35d905ee738c6d656803b1db59ab84b5b831cd8d4fa467913681941f437a3fdca9193bf4296c1d08d299874e8f89bed5d4f4c2e2113ae83af81aef956b7af881e57c676aa280bea055fc6f3d651914bdcf8eced1c1e962d42e089d2f0b1fdfbb54b1e9fc171b35b9bb587c972a1959980690d24c9052e3aace5ec208531451c788afedeb888c444d43b866f47e443eadca9bfeec0323ab078ea5f96a8ecb0f7e5f0acca7b2f78e9875f9546115d6da7297111ee671f9cad36ad5b475233254194c50f79f513ee3ac53ffffefdb2770389e17fda28808f8f5098923ea2916c2ce1a7e385c27b317b71a6968b02ebcd8b7eb906bada41e41efc4e448017c5ed08bb6353616b01669de11ea639f3593ffd936e6634405d707587cea75443dd3a1531fdc5f20d7471abe3995988ebd720be59d04705f77b105f67391a849af08fcb484dea32b49f9849fa81dd12b1451990bdbe5e1f97d11108c87a0e146dd345a0b9b8bfa1563062249e0bcd652c0e823212118f01b0ebc7457f5455d00848922359132e6b9ed7215092dabb15585b2472ffae2f564ca7415f2012ae658c20ca040fa6b1567977408626a0481d1a812381cc45adc669fb9570f26bc63c6e57c9d3edcf2cfb13565104799321d3a5737740de00af14e42169d68b8bba9d26b942b8208434d1c80f8cc88c483caa4265d4006e24d96a9cfb9128889747a457edd4ecbb59c09c6ef919d666bb2bf4461686921f0e80a3d7dc60d37cc10bc445816226af91342c6ee47a7f2033ec7cbf506e4fa8799c8461a411e9604ca69e674fa8ef7e81742985fd50962bc01a07f94349b69e6338cb2fb37f3039bdba682d3cd53d46d8aa77aba123ee7cc2cfc281d261c6b6f7d735f2a47ea21925f51bd0628a27e4b49d57c88c66cfc326c2a10b3f07e800d3536df6adc130fa70b8011d79d21fde151a17fcb61853a4f37955a8253121e227923163d2dbd851bda279e0c450f9ab5683d29010603b5080d323a836ec9bea900c19b95a953a4045bbcd93f6f717f2f3743e8f25eb8369faf0b8573d6efa225ad92ff66e8294fb42a2f2904ddf8bbe67b7ce001c8074157f425420b8034911a53360c9f95dbbe8c5eca649edeb440c4c0b9e12e2845e407b6aefa4f88ec551c8302a3b96fd994689451f2166d3fd18b2c30fc99f3c2c2f9e4d0a8bf902858973f8280064a8ae345954e48b688f584ba0e8b6b0b487307c13395d2e099f91448f30c247c65f0c082874fbd3b64c18ab1a23fdf1e014ad80a1d21c1336da2ba4a6aae2fa46ca4ba332d2e5fa0aa900088f037bc9d442912520fede5039533c623c81393fc4494d7c16c9d9d15c78bcbd1a5a102bb1a282d464dcdfa12608572690c2a4e28627ae8c668fab157653d91b796a723aac09cd4d6663e99089680694bd9336832af0f465005d858e768f75a46979f0b72594371c6b38a2f4196cd013af302925a37d6db5f2851a2b0667c55f782a5ab5fea547be6ce6c167d9d40a813823c1386072cb00ba056b503b84b7edca4270185c88f97963483307e7532bb7a2d9279f301415dccb697662d915efaee69c9fefda3a714b211c7b94e8dd7f7c7895031caa153161836c22a85b3ea11f6573a00ffaf1e179b0ed2d4ebf3de01938e5c90444b99c5153441105f070fe03ca98b8bb2ab0944799264f21647c9b70e1d1c90020aeff96759308c69950e021a840c1200004307140a4251bf400de33539bef6867e5c50acbff8e965f163f1b66a94172e00cf95036cf4746030d4351855ce2e178582aabcdbe9d68d7e1ac9ef36698e86a8bbab4942f6de7b4b29a59449ca05069c06a10676ca1c6796a6c18bae7ba4423c4bcfb6c4896942a9bc48da1d7eb510909e692d85997355c018633163ac608c1bb3c3c6187fe9516bef3621e9d98f69c295654abe965c6e938d3c6758a8c2e34c0d676898336c557945c3894b4b9a1b40a2c2a6c4da5aca61d2853d4eebd79cc223ed174e6b07b578f298e4dffdd7894127e4ee5e04b93b31c8fb15ddd7f7bafaf69336a5bd186bde34696377aa4978ce39df379bd487dc087cfa33eb340f83dbdd497a933b39119d89a3884d3fdb2eda9d40b75db4bfac995ea8af62d9a9dff3b2d6da7bcfd35a7ff664e20afc3e3906769ed7799dd7799df748d4fb91c93c3d7ff403bd0c1f301f48f6f39ef8d3fd38997e86f04288630539c4ec67d48c7ab11f2df889b2401c2b1059801bc4ff88e20824ca7e7e46fdd0ce07db2d73c96a51933ff62fbc28774f7f035ed44d11a080bdf9d9132754d73d389f76e0a829aaa820b2b0059ddde3ae0b82f3b203cc2436dd42628abec36b733e520907582e7ad428f0dfd732c3620b3a3f53fa22705bba9ce0b6a8d9f427933bcd0e66d3ece07b714c9a3b4a708ac7ce034929e44d46f5856b13604bdc9723d4dacf7e9fb59ffdaf4eef3fbda9a3a0b5fe5ea6c53169ebbac3d87b13120dbf98d6b107411d86e2f73f3fa58f8f3882980ff412480c65f665f2e7471c41c87c620fbe4c1ceb8c89f94391e64eb3834f94521cf7c447bc2c617cf1f4c26551c16539c16531814f31c69282f4e6c7197c491bf5961314a70f87dae1144b10a455fa130882dd7b2c40d9cbbc1fc3efc097fd18c67e74a73b71c4f56338f683b18ee19ff78f81f81f9a742210a20f4d8b23f8b2180ec54ff43a20d0b3901f723f60b9a492fe0bdff2b637d812f70314ee07a67d802d715db648314b29a9c553562c8ef8c1976e945d1c41bcfb3c089a74221f9aecbf9c6362cee2288b7d28823f861f03f1188a2cba159e78c1063fbcee69c67f7115af0e601bdcde7309c3e5c8ce9f3525c2f8317e897f8afbf346dfe14f1f901b8da0442e9447ef419b474f6431e23d71c4df89eee44eeef4cdbae5e3e2667f7b6e81d2826667a1b2bf0e9c1bdb1d9e51081126a557fecd6954544123a1041c8206821375b1ead2b4bf095e971e76779a09883d75f77771fc79cfefe2287bea9f6332eaf31fa559faf63f4a2f8d7a133de245a836f5f93eb5a93862eced3ca7bc08ffa57fa7f6fdd1a98c66ffe3b4422a71b33896d854443145165db37b4fda38823d29adee9a17513dea4d1d85e94dd8c71ea9ece63b77503c3f8c807747a7ef4e3301b2a7ffe9cf2ffce76340220b706b71c58f3f220b70df991b85f8efa78c76b538d67d63e23899369d3fff3a7d6f9a1ddc39827b3c1aa50f6d9493ce6638ecc05aed03c5119ce09c312d8ee0967d6cbad3ec0094893171ac1b7f4793bbb3fb5ada4dab0e8b0a52096c4565dfef48e0e00d93e580141d56d60868f7435afe1a353aa2eec424b200f7a491f0dafd10b42327baff851100e71227ba37eb343bb861cee0eebc1fbfcfe2051bfcd09ec802dc2b3a5064016e3067f0135980bb93b13004dc65ed41687058a8ac38de7711e374fd15f771add96fc4e2e8e208bef1673cef4bf1c2f86aa51362d06bb31a4edc9430585a9f2b5a91ce2b45861e04b6c8d1cba151d6b5e98b20778b19b6dda59439c4b0a0e8f1425d28a97ba16e910b35aff6c592583ff6dd128755638f3987a13c35f6c7706a9458e1540da7d4ec00328d3297bb6adc4816e544f4b3b2b8b8d45ca80b75458f31acda1e6358f3af66d60832795738f69873d7bbdaf4a7173d5e28aca57d25cff6b6c45189b3c79cfb7296a65be2b0aaecb15ed1a94d99f2d3a74cf203fc74065aa37bfa34cae994fce03e5d428d6cdafd4873c876278e12caf61f9f6c1773bb987b9c57174a7240b7f418c3cab958143592b6a925b74d3fcc51232c2a4e3405b569ec698c318db1065c7113766dda802b669c488ee15403ae8471a2319c6ac095714438154e85b7700a67754f6ee48924e091463be7e4075844921cbc208d32172582921fdccff5b0fdc70ec6a6b90e4868951552490ee8672e6a145649221a3a918548367d99b9c2a92ffa6a5771b4bb56eae3dce2582f98da60f478a136fda9a5c718d6d4a6ef5fb4bc5df1dab12cade67331ac58574ab6947244b15dea1a6c89f332628378f5d05be2bc6e7c1b3a5936a0a1d21104da1247c7852b3980978b153a3064102e8d0f5c1aa65be576a1f4cf96b8397072e80bb6c4cdd9928227300c799ac3820f0d624bdc1c192be82f0344075de9d0166c89936384052d6e899383a387ce400e0e8dc196b8ae2dfbbaa0436c89eb7ab2477d77e8a02d715d4174be75cdc80048eb38747eee161de70b0080b6682da246dd8ad6b317c096b83848e204d9632df3889103a594d2aee63aa753e96a07d258d7bd7cef46b0fbf940ddc43417737bef79f3ce3db35eaab239ff52d5fd195f657fa90aa4f4fd97aa62b28f067aad7b6f06863fe63d4520af751f13b5d73a7077a1077af33f6fbee73dd8bdf622ef3baf1357bc0d70be09afdd277a046fb6341773df7b45a9ee91dc732762bda471e78ff76423c35fadbfb1087acdc7d9d54177f9bb99e6626e8cc5db79725f4fbc7aa90ac83df0f71e8c9e1ed4f731b9068d415b06eddf63d0a641928806490e9c04598906098432fa96d1e3ecde2cbaeaa5aaeb1ee09761b4e32946c4beb8ab39fb77a0e79c73eedee6b965f7d24d7fc4086e4acbf746fdf3dedd4529fd484eb516a95eaa9289d56bd93db01feaa52af067bcad6afc1dfe5215d659cc556bafddefe4f7630e2fb8b3d0f6efc42a89fcb32eaad93db89e63a51cd896b83b537b0461d33b54dcfaeefebe9452ca1627d8f7efb798fb3e7d2a01b73d25a220788d7e09afd16fa24710f277271c40bdcea3759d28057ee0df59028aae25251a83b098b7de4b551524a3af983d98544aacabe0033360e1810995d4571b9b1533c4070f5a629ce98243879c264b0533873444d2e8004a301f3e9a586893c2101f82d0f0b01136c585344e4e4c6173c31a3b439452e084025ad4306551358511138635f9aeb4d6a6a1dad65a305d9dc41e1d425800db738b62b34cb6fdd9946dd3a80961c1565858952f3a32b49c06a6d99381f66e499af1e606640694374e94e0c0a6070c92783459dae10815d59d27974b9ea33c79a49417a6ac4063460d38573ad013651545070a52e0b2448b88d67a3284e788160c14480c8d8f18be4bebc06caf986f7fd68666db5d4fa03d296531db75c4959cb351c659bcabfa6068c28e1e7fff0fedf9750379d1efafb3af5494d50702b7225e935c7094ac70c6eb628cf1993d6872bc1124494c5258487278c4a0c9014e0d3db8de9c8982218392a60b66c391093c795931b3a76bca8607e4d02567ebc8d79d22338906b3a03cbb00cc8684668f315209af7d095142deb047252634cb5ebe18dff00d9f39020a9170a2f9b321117b36fbda1915cc80ed7144955caed621b0a15c904ddb12c745c98c1b2721e9fca4e84f5eebde86217c62ad51a359cd02c901cd7644f7831e2da818e3effb5e04b93f3108b40fdafb49db691eada38d2f7637e6ed5dd2ee682cc09d45770a61ca7745a9a719164d91ee1547a13b3219814e54fdc948f6f56742f369259ca85e5a89135e04868054c28bbaf730842e0cc31741ee500c8ac5c2c71fd6629f3f695fda08bed8dfc7c22f697f3416e0f64477bab4b12239b612cb8221419a4029a56194f647c139ab09734a337bb440fd59c2ec6092e0b56981d9c134819a2029ad34b9697d6967fd2281bc68acf3c77bebdf6bf5d0aadcd3843bbdf78a417623f9f6b07b55f852a64b992c5f774e95a11296fb4a03b5834d561724924c991bf4cca9624ae3b565878d3170d698814395d4b4c495468f121d58881cf18155a6873a75702ae0993770e00d10252c2fac797ae265a624c52044a98b16195145aa9870c478d395a648561a9bdbb0fddf873dddd40123a687a8224c6ad06ec6c0a841ab8c92269bff91174d23dba3581ed8c4757277178223490ab4cac8e0036c16499a7a0afb7293c188993a36a7220910461c9581e20e020995c1a16e19208d1c16947c4dc9c261c3443616d3b4b1981664595750a4666832870a123c656860aa212c84e3530319383e0658810b931c6156f0a18e141b343fd008cbe12ad812578685a89cf1983239ec561915f6a83b243d7b327bc8906933f47564c1689f2f61b487a54586876db934b8258e4c936dbde8704b1c991af608a2c0cdbd3cf864dd046c2da1649aec0feb246f719c1051c1c89d2533be1b131e4e9cd458d3a36a2b866fab060f0fd55613b80575711293d3d29030184e53446a71648833634617122e78406c891bf325c4eb8e9143bfa87f686a9b1d34df004683d61c10dd903dd769885619199e313d360b7a6e5feebca751d4e813298dbadd467aabddfc766fb77baf3ffdcf1f7fbdd7aff8026f3b616c9f9a30b6ac49d62d914f3ecdc1cfeb720afb484e89eaa661c07cf122c591d2f2496c8903cbda321ce1ee1601d0482e8724d227ea3189f65abebc9f065ad62f83a0f952724f5185948b18fc09e634fa84b4acf76fd5334969558fa6f39de662ee5a69dfa441dafe5215fd6ffa300e7d01cea101a07f3e1373cf7c3e0bb4ac73d3fca42bd058b2a83ea541576cb1edd693ea0b3181f452d52c82631f531425b0bb8622547ae70cf3cd181afc99510ac2d8a381664220740a9f8fd6f365acce7abdbeddd7da9c4599f6bf6fb458dfc9d0b6fcb9515c9f374461019196718ef9c944905b0e79f509b23fdb42b7c50c9b05d9203be7ebee674c2f55b9943ff35409ee0aa33e90d7eadf3dba3ea8816695d25ccc6ddfba0cf55295d31761eeb9df6d80439ee7fd1ebd4de59eae2d717b8aec51c49edb96a108be3dc90125e135fad74b8f2236a5b5dabbc7c715bf9b3bf94ccced695a15e2cb56abc13c79bccb6100f224aac9481718366a823536da5cf9e1e6a38d8d92a994e6c96de5c1a3b5f3745132d74dce47b9236934951c7002354ac24186881a1d5c5b48acd8e88b801a45c00724357ad8c143d5c636c73025994f4e36056d14e9440a1af6b7e9935002bd6c6e14f90204c712948dde00f69504469515933d36cab529580c9be2c0a46aedcbcb1e6bb50a97870bf7f546665962448a080e35babe6c047083868a9e2e3b48f1b0d52966d73c5fbbd63c7b761580ad5e3655bea0ec7168c42d8f98ff736e4dad5b5293102e294d9aaa9054253d6509e382434a933266c2d45add5af7383b2aa5b5ceeaee5e6bfd9f265c7d4b5578db17fb62b1d64ab363e6aa74ce97bd68fe58df565abd468daae6cb59757fd25cfc087567599b2bead3544c252525252989248a10ecfa5dae722775600e4960aa6a71b457d47692adfb3942fe1633ec7e475bea7e46558ba3fd421a6076a189fa6ecb218a9f7dfff340259b272e1d608a29bcef684c6e5bea7e46b679a29406f06c0c8b200e4313159c55558eddeea11d0e3ffca4fd39085ed0663083a092bbfe18ad405e14ebde03111afdfc846018d61005f82148f3a165ad69f8321da381210a13a128e67c3d8cef83210a1b02166d68e28a3aebcb84d28b458f7557fb591ad5aa7795ed1598262911140dc29ef68404a144d008966e112eea7e41f7d711238c16835dc52300eca49db4915cd315ea9c18fb58df667bf76f9b33fe11bfedfbbdf78a2268adbdf6ce39c1a011c6baeb4bab5dc5a44dc5fcf5e5e46ac9f9287774b5d43a04363471c8ea44fe61b219ed66e6f5126cfb8fb5b924c5145a7a04c14189bbb3e4c4477d7aacd26c507dff135e14544517d3a92835dfbfc47c57f15469dc317abe09259080fb32413e8d73bde85a6bf1bde268b1c5d68e60c515794bcfa7a3a3db454a89d1e38a0e3c6066e8d0aaf3e4c4a446942664ae58e00382e264048c479c19423450a2730373da41090f2b39b04172e7c60d3b4c6ca636b66267cc4cc8071b3324b922072b6aca866f78f9fa8a2283143755d6981962c3f4f8c251d3430f261e5eaea8ac382571c2f5c40309172a6b9854b0060bc887354f406b8254a0850396141e7484c149ab234e63e8c448a26567660569f6353b3cdc2618c843230c0d1f4d3c78f092cae2c221c89baa176c778a1a3ab2353172506306bc41542dd8718ad2b12d717694b41c59ac0c0e552e8f3a5a75969c40d2b3af73b5c7da9e426ea0952a75a0e079b7dc17ea2c09fb41474a29bd5c92524aa98c8c71fd9c26656dc41fa2a09f1f87284a70777dc718d3292f4d927dd23aa716ff262dc8846ff9520c9a2fdf37dd4126f6dcd64495f9d65e546b88c2e94eb273d6a946383b51c5d22ea7c7aef56d412f7225730680dc55fa17a0ed97f9f4ada9917c4ccb529212d164a8c548c9c1cf313f9cc0b052e5a2c02b8fd71d2b5e769a78755d490ac23405e44a4e073a31b6a65859410f1d2e3a7cd96e0f6a6a846a5ad8d74a1a3d77084883b3c7d561c14e8f1468bf562435d280eb09862255e268d9604baa610a92adaeaa2da9253677bfda3c6cf7d9465eb1e1c90c4ca42c39b51003c698344a74b8b0048e17296fb454f066cd05471b67004b0f6462c478e187145b8e19575a7b72c8a1b1c39b27a137541b08cd664824b2f460634bd491203e6cf8073846a6a2c420468855960cbabe84bc21cd3c70634d942d40e8d860a6025fbc48d111044c111c38373e3070830300ee1aac215190cca023c90fa11b5cd083955352c6870d470123ead1401c591c8950366ea36463dc46cac618e708e4d1c1c54c93950b28b0e1a4213e58c9e3e5250b122b1b168566b3af7961ed7144e7e50a0da92e607cbca0c34d95963b372238920cf121e5d62686056d5ec8e07279c2060d9b395ab29122c2c36b48971c2bb6ab676a2a529a602bd733a7a60ce961c1ca469e6da7940520602eb991607e9ce9000a0b352339b38ad4a2ba82c18817a9222aec8803820d1a291cbee4b8c1890d76be20f5cc1818402473024033b9e00be4967947e226196925c7d421b1d4b0f239439e236fb68aa4a30306433c985a92ca169c1e7570dc70003b3ff38d8823d9260524f6d0f02e7c6fc4329068944c3a206d464d18361023efc835328a90f432cbcc24f34b0133cd5422801c23ada49a202f5c93c900240f46f06489e225bb74b28b0e4b88a4b93385c61ed76175230b881c6874b8f962e584654b488c8a571082ddaac60e1f6bc519d0ae0f5481e89c5965415857b7c6766c723eca1d51a975086cc8b3a2b2250c9c4ddfb9bc28c4a6ef66e407ddde55ecf67c8f9a2ab264cb8917e99bfc20e70ce64bdee43baa6cfa0ee5453e9bbefb901f608cf77c28e0dd4d6e0de1d44d4182094036c59ba2a0e229563354d8144fe1b2c71a0e5634725634cef893151313c63ea400b67fb6b44a618d550a5f2ed3b4a150e5df51fa815ee4a21451c026c0b46ca5027fce364c63c29f64ab7385141647d0bdbc79279a00e3973266982dff87694cd386df692adc863fd34c10a402bf2d3f12cd4c23909f6493610af9488ea5cdbb30405313e44b39bd30a6b4d65a6bb594e66e9ca06f8be83b407e70dfc7dac6d57bfad47ae2e4a2e2c54df43803c217dc67217396561f33b922c641db1f6bd5ce2e2a4e3536cd2719a0ef67ab4f7015f458bda62814981758cdba51a339458928bd611dd58e5ee6700e7aac504d9b7e0de25eee6ebca644c168ae2ec90fea4f7ba7bd9772ddb0ae289467d17c8b87a139d61535f2a822d4c89928115491a923a8dad3bb526e530a858b3aca849768fc14bb9aa7eea29bf1da931775f4a92b51a84d5f3e859ab1e9d39c17dd1b58a6bcd9f4861e656e534a7f04feeee98bd024e407df53addd63dfd1c6f9f8f1c7581ced9cf15fda389bd4282fea80cced155ea17c78081d0b99eb68fe98898ed16a07646e87e20bbcef631c74f7635d72c48bbaeea7a8bca8889aae99459b6126d7342339f09ab9ac1c98f3daf47277f771c4ced96bd86b58b4b4999b6061b274d0344617db825396e64321b7e70993ce273dcc9e582adc48c5096a748212cd2f6182fc80feacd5f6acefd89a40b331e7d1ec84125f11d861142407d2e508aa815454facd3c262285b4129d064468719c5cfb828f69e3f7ddd1be5d0bba5b7c3416479b45276e6004359a8d47db6bd8891e471c8140820aa299c26b93d63a94d65a31b62c36e0b56a71bdb65291dea07f33f526c61863fc483ea27a20b0a1892c332ddb6af40119853f823327023ba7314c2ea9c6628c31c652cd67695df73677d318ecbe625af7f6f3a8b75b97f3e539e79cf3fe37e79c73ce39e79da0d7e41ff9a83dc16b76035eb31af09a95529eb0c7117b032c54a4f01a2d6b8bbc923285d7ac38bec0bbbe8300ef15fe53be83348992cced0d7a6899db637ea2c7a9b4959494929e5c69d3c750b4f7b51bf5130eab146e5b5a2d296dff026c69b5f484a79c39915b6c44fb8f40d3bf82f6276d822ee69622d24b55b588fe36562960b9c136d85aa7a65dc6f46857f0d25a67928621d4226ba7a501d9fabada39ab9da0a4311a5483b4d7a6ddb21eb75ca5a4315e90d1fa24aadfd8f4675e9bbed07f6d4a69ad62030716650a6ccd191b45e106226c6cd023c4071b362aeaa02dad6460d9e3d08d8ea1d6cab8a156fa41b4ded24a460c1bcba0655b5ac9d8214309e8cd8fded22a8696941fee0f2dd52ac6940eff00b7b48a3135848160f9e299d1d67a8dab4f0bd6c1e26c0979439afd408387a413c26f31fd81ad955c9a402b1850b87eaea290558c23fb822dad6428c9f1813386a8b1c10994571cdb8a1f418cdc643c81f3c6266d94e0928ab787e21f36e3282d6d765af190fb22f01a76f4c830d289146cf67d152464dbbd38cac60a695a3003a685193264d1c87d21b9a272a62ea0951299a3289d49842909a37fac949c58294d611ab010241da642d2b30ffb11e682110c43ce47b9230c43ad436043b5a19c37203180d94c002abe9c87487c52661f083cc90a7bda73631d7ad473ce3a7b4e5c18d39e0f34678bb0187b7cf89c73ce2956d9083d5f4e249f07b46f890b536280b49fa9d10827722a8a78a245cc8486a67bac7683aed8620a79517d291a6caf3efaa9ff058164d74e59a3d4a1ae8423d45da7a40fb4af186483ec6ce6673ad82ee435bf7b66423f54736be723399ddfb4250eec6a8fb21d9742a814ad367631ea90723402000093150000200c0a86c36281403011e5650f14000c799e40644217ca83912c884114c4400c83300c8310400031c60063945114f1030ebf3f7bbf1a49a739f2a09f884faeab252d1d67a57e17941018b364c070e7f23da7e32190d8cfdb9056986a6c69a1f4a5ab1281a512bed24470510c7edcfb5c940e406b2b7f2d96104eaf553f85dfa85202ae97644a04d155d72584945a8f7e754bfda1dcd49cf4a19f980416d6996256861cae31200a02d2a92a84e8df224489133347f4ad9b7dbb940a14b3c4563a785d3fab44905ea32e19b8940abf8430f712b384006eb6499f53aaccca1759399afdb5c500a3d73b8330631e0784f58e9c624ce982d32fd5fa14f5d1f75dd327fafd48a920ea1a4969c1b157b21f88fd357f31b41725e868d390b2dd41c075738ec2ee47ba84d0ca6296a057eafd5a961a4433aaf515a5696cd5afe447f7fd52d2a862d59d7e4b7fc17fc41fedbf7ea50256fb4609e1aed6e8e7f2575932104da9eaf3a27470da0a7589c0923aaf8430d7c554c26dcc7def96165ab6d4532ae0b26f2e19d85d8dfeea940e2ed7ef2f1174d7304b0676b3304b09e85ed22811e4566d9414c87d35fb2bb754a06c7d4fa962baeb9825825d8b59c2ad62d4c7dd57faa1ec5bd347a42fdac7a81243fc2c8197341a7d91bc2faa3f7abffed2c358adcdf7b9fd4af553f65fe917f56f5c52009a91f8454aa3ae4afa068e958a034a8002c5e4c7f52bfaa5fd7c512a506cb72b216c4561fad04520e52867aac141ba1e78e95f0276d852c1f4c6ea523ea5c4d008fb6e0ab8dcb6d0d7aea55c76f5368f2d01b5a191e044c8743f20cbcd52c8c02f8e6bc0ec0279210dcce1094c5ec17c996e3380ea4b5be76d1423ac50cc573200dd45b099fa02c4ff9985057a69163ededc7b26913d3e88f6cab3d7b8cb6d9f047df24de93475e12b94cda5333e110fd85e409a6f5806438e5938669dabf7d24ff008b0e659dce2023df63000806b64f0a5f99cf4416cb84311a3b723f102d0b77069ab24e947494b4a4bae1757200511253fc71923df88d59697e53dcee1beefcec1ddd1597cc5c3ec7bf9c2e22a81bddd6f248fac5761f99682cf6e8c56737f22fb03c5910965f1087bff9398e2538c400ed763105a555afbf1d8adf22028d966d16e2ef48ac3bf551041f930fbaed68de7cb6cd5cc39e812e679df73c45fc15ce924cc36d57eb7244c0e003d2baa9b780feea33ddc25590de3d84029f58d0c7be98485523514d08002506f700a028ca595d0eb117ceddca5944983d9f5a2aa23ff90d588a06e5e3a6a27839dcc89bbf41f80ade7233485d4269296ca990ec15089378e6dc54a1f1b683df45550c7a0adcd23150d6794d67f592622f219d2aff34a0d7d87a94a377f0afbfe4153740d1dc17f86df3c6c928bf9b012cd228e29b690e6a51d9b30201aca1fac78ba73edb80933354c9391e28281d30f02d4159184af22685ee981d7e553b4f28b353732294308dbb5cc83f2011d731280167888cb377bd31a2463552a99c5b1b24c7532b78405cd15547ad2b98bba50cebece465f8e4afb1077b278bf8b23d55c5f19742be42db6bf0ce5ded2c604d7ab88a5e9ebc838057539e206b70dc3a01f0ae1504f6a172710be718680df7b3688afe1435805422ddc62833ac55c489d4f32c6ba9fc254d0c46748aa302a4edebf7a73f687e7be9b17cfdeb27fb5ce9e777dae07d839aa32613c7bd37096a73cf3ca5f6fc94434053bffa28a4cf39952b58536393f2367d1c1d6292a5074db868c9323bae3557a9570f86b3f973fd3f51c0e3a15265181f4d20936abb8049e07b533111182c8c2ecb91a210d64522edabeb474f2d41b75bc743edd4fb5b4885f22045a7f4a6562e4a8ed701609f1ee7d3360e1597929f6255183d12943f5f0d0531b11857d1e46a0f5bc7058233f3b73ab488cfe393134e199f817e5ebdf25452291fd0c918e46b614b5990c26ed813a08656573052853ff0cae15bb3fff64df77b4bf5e6bd310c421d2736e43ccfbc5cbdbe22f5e2c09387d8db4eaf187d4b5756a53d34c4a6d187d481dc66958910d4e8b2af7142974b86dd820e65e240dcb15dd39466083922581340906101c6dc92288d8e84d7f3ce6260964aaf24f8af42770dce4ad90c2434e3ab0ad5282677e1e198f70edbddc34e30ba59a0483c180ee78a0d6d420540adec8a240fc8785434efc92d14c9aa2a80f9db975e9fa3ea90b8131208eed9fe352830e5d9784a4ded827cfb77b5ac6a4230349a3462aa15393145657190d358c4cb6ac944192c92302879fa5a2fab70dd701e9e8639ac208d19dc020beae4cc48829f4d7d3e4015a65edce2c5db116c8aa6f0957aa7d72441ae5839a595d0ce5d24be560c8e97d2776cdefeec71855f7bb3948d104218c34e5cc169216cbe0e1e0d1e2daca83ce7882ae29e4b8c826b300343aa007345724a071ff04da1b85cc56ef57661d702d9dfc2edc41c2f37c187a7b7d95ffa9b7c800253b4bed4cea74088df2df025fdf5c44c4dd7dcfe0532ad7f22108ee42bd79bc200344ad1f9ba99f37b3b9bc41a5259d961b21f20edede464f1b5f92820b6b4e4416ad37c3fd9a3d5606251f9ed5efa5965b8a120309de7004bb2881679bcc891bea5d17c6e4f7ef0e561d4654241f1fe5c35c7684ae2091ebb71d74da418a6e4057679864e11aa684d529a3f1dd0fe41a18159145d43db4aa2c9b8ac174460733ad35183fee6edf8b4ff2743107a245766f31d9180d4ce89766600f8cca40dc738c3178e16ca77679cda73c3b8a3e188438c9938f9878b440cfe3abb2be1b932aca771ad8d4771340d95e49251bf0e469088ebb7a17c13e4cf229cc7d9587f4fed3d9db9f42c183acd68f06dff3db61235757cce250b7c3ca2f0549a44241eb60b37f1c98d290195fdabaeba1ce04c7b97f1836a29b1dd9cd9dc956181ab464a5cd8b4b8db6e90b5ead518a323873e82782015fa0a94acc41de032dde209c04eff552fc61ce6ed88c4186b9a4c5b8ef370e7997a0aa6f18b76b07670a821f1b6ab4092d37296b7444c2b1ac91cdbc759431259741de07d4e3ec643509f4a9fa5630673385dfb3d871a8a005dafabdeab286548c7fef94bef896e91504e590596f50beb91dae35c98946afe5789e532f962b1b9d0f88caba906a7ac46fc8037d16d56c700b30e05a98eaea1a2ebab351aba6088aaac6fecf848b99f1ff45ce63ff69983c277a450e49f397ac7e265b9d047f49619fced6a3294c1c030ae6cc1c9432476f3f29c37c5cf52025c65e1d1a7829c6654681f26b7c9bd63200d6323349444522d584fcb79480803132600adf18cd6f0fc3461dc745e0ca5587969451785c76b494aa6761ccacd6846cbec04973162d2ee552606ce0d86cdcf303df1810d9b2f0b5903e18f9da837f4613cb040fc6bd1c35289dbe47d77bd4a76882ad41a9b2d74f52f69308bd0715d0ff4ffabc9e86838ac6b270826af95a7bdbb60467e81665bc0051a8429c96bd93b729de4cb361a2429c721edc88c310efb820082d777e9971745f68daba967b41354e2f7350db5210e1a771f3a4cfd5f39af5c2ba6a9c49c8b0490d073cae86e031fc083a3fafc60c1edf842c93414cf5485debc0e108dd4f6ab09f27130cb1e4f7ba903307ae7e5448168f211b725c1c8063b9c54d42ce7071b25ca767ef96a627ebd78bb4a58f68925815e7a53e37acb2dc216b590b3103f17507a723e9a3c7efe9a6d033d62582aa4682ad9113b9e65703a97a86a91cc6f2bb22551bc6ee1a770ffb9012dbd0b7b1a42cef431a4a030b1f3185317492d7cda542bf3518edc8532380701b56d78815e198628d250d3b54542440e65f01a0189b5cf5070a5fe8e4c15403aca1196fe64fd13bf7e1768f1be2cdf5c8176933c15881db5a5aaec4a06b17f9b479f9344634f1d6308bab69cea67f2501c6cc743e7254f3c8a997877e708ee1bf9d47cca4fa70f62ef321bebe00f4969bf0d234a8029e0146ceab7aa9e75bcd80b36e126dbd99305110d18d9d45b53cd861731ac09d44743fd50a255f8fb8c70a947385639c19abb0e00b2b2c9f968b255b6a7e9567b0f5c0443a3863dbc434534da0fed40c92170b32c9fd7a0a2a21cd21d780c2c5e102f33ba99ae128e68a91af6fe8e2ba9f112e87661964584d46be4e935d6af1033cc8468b67221b64389dcb00132543e89c678432b944590d1aa42ba9ddd2f750fa215ad87453106878404aa8b8b95862fdfabea9e0f816243db8e04faf84284d805a711743f58e198aab7f8de80c8850c6e621e608d1827e4dbf2af300fcb9f4b8bbb04e171292e33bc672164bc4008a480606bc9bb34bf5b43892e515d1895f0a620d853b6941dc607b76ff35598b78a529aa31cf400a5c2178a26cb04fb62eccf7edf370ed92cc620ea0b648547ede3f50ce86a41d7b1044c889d11844cdfd0afcebe1a95eaa19d55c4bae21da952579fe15ac7ec8c0e0b5b9cf24c4de5ce266f7c011ceda2862d5a231838ce0e04c830616a9bbc739b0d618124fa34e327e3ac897850a4c91802e4c12c48da23b1f3cbf430d35a97f9690df7f611fffb9e4d07094344ee726d8722dcc509cba24a2cf8da243065174179b1b7e4b8842feca23b877bf2345d28611c2d6499b0d4791f65dca92ed32931222d680d7d14dddc582a3f3d0b04043f2e39a4d172365a6ebd4737c19c913fa97edab694d17a202365c8caaa1804ab55af4cbf00d4f3f9d906e878a90d7c6b668ddf6427da162f32d45b5648c0aefcf011f86633560ff75e911457a8a201f03db750c0ca2f9c29bcd063cf563c7444dc58ab7939501e4c49e841527221cf6104f7dfb7b44ded87af6e6ebc971039666d8265f36e44f809d0cb30e7213c9fb3d879b3522ade65f13f688353838acd2d2c47870a6854379b772cfd020bc4885c32040480a44adae5e8a44a01dd0331e5706870d46daa0fbb679b664a55c9b577542b026530b1cae1b45858592fa14dc2fb782a1ea27e0fc7bcc24af008fc1a02c762ed427ac37abc2b05dec777262ca052e1c1863a0941159891d8ae5fa81fa04b43592b74a1c1843734bea4babe32aa3bf696145be61e98c73084f6c5e249ddfdce7aec724ca93a447a8f7d24c3c03c0ec29100c04a6ed640270776027378e79df6b37c6eefdc1c98d5b4b843250e144b1e60bec31013c085c14deab938db808c3bf5572dc6d9e64f4dbba93898b9329390507ac5498410a145085a99fc657bd77e259eb03075f2f5431190d399f75ae40a492365ef657e756943b2b736f84a4a3161443136837a15d799900dde2d663638a71e47d394b2c65178e78a101ac0377ac19006568bd3fd22541a39a79ccc5c078fdf4f9cc23b098db8d9fab3096b5d1d117c8797492f03b0f851fb962dc6b459b78c2fab7d504c8ccf073983e736dcc15aa05d09d0a2ffe23a1c818bc6f0938faacadef6b7db388d72a79d8a624ab9fdcdf55beb330670334711c05c354e2ceb5aa18c85b4aa703580e6c4f0b42b831da8b7a14bcdac1eccc2bcd42c28f69dd51b3a0d758f34520cd41055e5de10a426186d997607f2336d39fc82001f063afdec769e5a6b0e0c5b56d5191621853cb11d5960f2a5bdae301d403ed3fb0d1aa6b27cb5c9061df77005e318b9a4e7f97c0b0a72adb59f700d9a4f3385393fb54ea3ef82fdfe4c7f7bb45e2f03616a8a4df14e9ca9b79f92b0ddee861c86fbb1860c2616d4975355a02214dcf9e0524128e94eb590e9784255ae14c0402377d4838e38894f1e9dc497f68bc08e57c63940a1adb1a95fbc37ecaca47f8f610db9d8af787a88a1bb11da07ad56e744d771b156c19d95c72602eece6f0be93adac911469d8206e25f6bcc61628ba42e102bd68873a25146c551ee6043da9a20f4bf1a5d1fb0477f0b9bcf8c808479d0414b0dcd795854c6660532ae2c102ca2bc833461f569ff0da3922308ca6dbfa6704fbe7c8bb9f9a923eb2b7d59e811e8fe63569627e6a79cdd0b448c22d8c9a222eb9cd14e1082931e54c3b4f827214eba2255125dcdf01b4cf75396dc591b379ef7d52a8b6f8f65ccd7dff4284325412f070a46c71ed09ba6aa0e0d5981f6c7b183ddd5818c5eca6c31fc3227b9de26ae2ab5d6553e391e48c9538246fd17c056979e6c076eb4083c426fe53365bcc81a0ad810d1c7105c09b05d3568e685c4added8d2b6a1c30c17a86448346eba29b357f1d18c87762435ea574dbe9eb0bf0f8a9b4716d08206ede8897784acdbdb095bcf86aa581dc2fb02838398bb6bc43dccaf51dae79477db57ee464e889f12c4a0fa7d5f228a0486b23cc1c6f978ed204930ba4e49d30386c399734ed8356782126a147719a4f7536130941b16d91d3a4f64c39bef6732db92541cad66f761100a6d995c8d5282d32a59471681e7473a78c5b84a3475f5c8ac73c9000c6a666dd73d4c44782a48d12ef245f8c5ef635909c13425c426c0b6ec2fcbe9a1ab1b62607d249fb1cb3f4c4b1241fcf7c4e9f29e7a1b4ba8a0dd67fded52a918e270ffba872bc14861dd66a5da96380940534c36639c31c715ed283c1c1395557c9de6cb1b19912386caf278f01cd8e098e69e39521737aaf6eecdd85bb6c61a84ca972320cb3e97c7120223085950045b74c565444fc6532487be8f0f94633d5f3b5966b0cd3007c45b00c47073326e1d7d26931d30ca5a81fb6a00eef5c65a89bb093e7f93959859a84a0cf1efc34ca7f4b05bafb936ff82198484883bae564b9b00b3dcddba8c32d4c81dfc8c3dcd193f771e78f1962eda0a69a7b064220026ef204204f0b4c20d99a11693e5a3b7c3d8566d179bb613bf7d7de25450003146346479a2803ca8c8b20dc91aeb81b37cf743cce099143741f8be4305d21e2e458c42b35eaa70e758e7af4e9bd17cce208721c985d336e0e473032b8a96d36363b0e91a7c174a010ac27fd7071fe0cd13722bf897c240da64ec8298c1860683738b70cbc21918516c96b8bc0c7dab26975a5c0cf42cd089f03be22be8fd77c78dfea41c7e159d8e1d78d7a607891af15c5f0dcca8050e1e01adadd7e4b58e19bb54713947f0d4b789ca2756e376a3b41e8d486684fad2ed9a81afcfc4898595aa010204c1978cffbf563824be4c02a89d8f373ed0753a764dd3b9c79aa90e5d5c065836fe1523348da976b6093b97d37d141930c405b9a256ce0275d7eb6555c3d8011767547f41388538542fed020d2d1d1b6f7b52eedb451285b7b27d1a129d070297478479e0ddc2d7f6aa45c8a95c4cb60c0d8cb89c450f61bac8180a2795ee8e324c59b618f47f253bd7a1e6480930232ed43e1fd7ce918a77aaa6e4aa95fa00d3486d991667cc6f97bdee75568fe05dad5a6a4f6dc028e93d4195101c2144aa35e9905a5433938c1a5c4696166dcaaaa4c59cd5293cdea06baeb879d651ccedfd57a7913032147f321f485a5a6ee186d0b3462156657fce6672e4d16fa8c74b4e77af5a2ea35496e10eb5be9a2cc11f23f001cc74304868180b55181809a202b3732344c90419b0b4a361328dcf04f28d0d8237981143bacbb82e107c6afc39b22dcb779a66643c1c145e096bddcf72d9df8447fc6919cb0bd3ba7df6845c96606b2109760474c7a601e16e7941ed1884822883d449e2f13a7abbb8d688253e1250a8ac84d2d5e1261939f55dfece1f13d2bbaf82751e34dbcb01969f38c44c9459308ea9644df7ba1cba315029190f9aad09e4184c23a137ebefa9f7f13fc373695070be3a6664cd137f59dbf81b02e45b5d1006124a6ec8beb3c51614a90dce40c997fc6d4c01550ce7f80eb98fecc5dd03986a831aa8b11622ab8952e2bd0a064dcc07baa061e9bdc08f21764776e4200ebe66b7a82f27524438d7ecb39008b473c38a25c26c22d51f1432861cf2b5b7a58fca963a467addd50fd95fbccb3b18ae723592375289b4dde84f8f14519153c01175a14d1540e5722044c1a167c545a8b02d7217ff7469ab90053d16a3eb629abc57ee9773e0a9242c04a1cf66d357d3fcf44ea480330f414fa3218311c80db2126c7b807cc27d37bf1b8ee50b04c3cdfc6ec0323d59817ba529d31d5e9b9c223d24dc2a3cf5590d102426277018954b31d674a7585b93a069e67004a9345a57c264401c64bfb2c942b7dc9729c6939b061e33b8cc5fa6f441212ad8aecef8986348ec1bad573e71c3a191d741d3c9307dcf9db0a16c6b16bb82fea8fcb3f9f63a254b427e7f69cb69c1b6c04ede89d07a73eefcf9d5e76b4413ba1340707e493335662369b3cd067a25756b61043e97e748318fa67fa54876853359557c6d6c29c05822c4407e6cc378345ca5eb7a65e555cef9cf11e2435552a16f0a83c59eab5132a111f3676546fd80f79e8d7745706a6f00453674135437a181d94185e9de4895e44421c474394c5498aa3383f056a0afe208509cfb1ec703196ac4b8ac36f9ab8fcbaa84aff4317b5d9d65faada6b27da0c023b401dba112b89ac79be3a610e050a4b391b7b2a0dc13497607fa250391157167ee158bc0367cdc6c4d9e08d7bf9c21f4a977cc4fee2d2dd4accdbbe6966e9bb0956a818bd988eb05d3a326d3d31a014f7a60249d43c92d099c935d69f113e7709881b2ef3d156051b3dc8dd3d64f14a7e10c753c133e19a9e0c3d2c816c7910327c55a9ed49959581a271341fd443aad216964c9de639066643c8131e43fcfc4fde1d3bc416477fb879c2a5e72a1e3aaebb5f9094e7639cb6767258dbd41fd9b34ca20915265f890e1bc951cf18ac0898c2d64e3f9ee58e285affba84b93313546b1c418c983b66631c5931e68e2793b9d3e9327704398e54ce783373a78cf93402683777f881dedc11d5a4a7af472c99376cd06c88b899d9568aa824bb8147c094e54591926b30cd8ff82ed943af3aa142fc2426aa11ea8a6d4c80be983d1223c31fe0f627b5c44f4ca0923d08fff768d2d13edc43ecc7241afe4f5eb787116a73771b64a96b8cae43d6998bfe68808fcaba86a1cb45ac418119dd0c52a0b3956356f6cffba46091fbca72efdd731b04416d438de14b67f88433954303145f75ec1ffc601ae3df1ba0c7d110ecd6ab34f42a1e736c2d9d6793343e840e6ca41fec02495f0fd2c2eb994762eb36f802a976793f0abc85fb09b8a19b5896f3d9e9e68a385aa48d6ba5fcdc813a42a8723fb41b164161e672d966823871ee5d23beb8a9ed2018d2e6c5c24338b6029d4a1c47086ab4d6fb72e35a012bb14db7601bf78113851531f5f059d81b9fb428ffcec27ef898d1f8eb6be75381f1e0d6aff240ba8faf7d0fb7b2d38f0c204dd17a66fda9503ea9c0ab990500f267d48f8dacc09920c38efdb27fc0322b81d031112ca79d39bff2ae558c443b5a2baaf0dfc4a323d89eb1cd87274f66a7591fd0d69ff9919b02c852b1b6af8276ff9c7c2df09f04b765514afcd2742a1edf5fee7757ffc2c9882eae0a3d9053e55c974a6336cb0dcaece7f6172a021bdf90d23700337089da6aef9ed649b1bad80ed2304f77c3cbbf6fd90b30b6b2ad7b6f6dcec92f5a43803a3de8d8212af91ec1c635ed075c2c4c98b5fc9b3b18a1fa9c4242251977279ad621ef814302d1b7ec27822805746295eb99c33f9e2b5a035c686a5daa8147c828b6d587c9721d9c261dd36c93a1b8ea4491893abcc3541779aaf4329a670c9b9b3cd8b4024c744251f97207d249780aef7abde5121c37ef593fdc475001aafdb5355defa0f5dac107311a15e0ac0ff1142318bb7acf4dec7ef16010c484fcc14c60c21b106c09c2a6d4498dea6f38badd524b3b3a6f3ed2cb46219318ae8b06dd89d3a1c5c5d0bb38305ebff77efd51bb79ffbe1014ae79f99f0a1ceac14c199f51d626abf3ff37d817ff859b48670500a35d62e8df3da7549b6c4335334fccf3302a84debde0be6f8dae9fbdef4b7cab8b38be665f13eb976c307442ffbe5979f8fcf409156fc9b725cb8018bb16ea508e33f7f214493069791cb89a5c1d111788eb45afde6d9bc66e899f424abd8715bf75e6a9ab0ec103be6f248ace18d25189e1244a6a344915e8f0bd6d38421da5cb4ddfb4c21492558accfd2bf4864069139c07321e4b158801216d87bef9c9726fe2b73c0a0c2bf6cfbe62604e40cc2cd27cf2511adfa2ab845d85bd98536fa6cadbe2e7b9c54492887dd778586274aad79c1b924986febb3e4b60c620998730f41b3aeb799ae5dcaa38cc8ecaae9f93023177891f7d82d017f48b95619bdd2e8e8b83189567ffebe4cc185eac670a424f413b10e55e1e9f271e9c677c661e022376e2ff17b4fd5ddedbec85c9729f97578df8e4a93f809705304ab6a5a7fa8dd93858bdbb6708f18b4a171dec51c52e238cec51e9dbd4e7e80470fc1c42a63ea2878d2a08db8b6989fd16e712eeeea574629190d7c9aaf5300f99e44a5bdf3a6f3e1c159560eed0a778194f8d0ae9c8cf5b05f790fa41ae6b9f47aa63c37a0d0f72c8bec95cb0810d7b3e5e0146eab43b47f8d29a0cf1dc78f80aa52d59f7f5d8a95163e5c374fdf254a5c123e3cdd455e2959329211c182a55f7b169b0e1e7707ab0777f9d2ba4c3c9ebf73a27f107e0f749b5eac3b25f09b223102bfeef1ab61e7203d07b5f74e65eebf7f5de7725697ffba145f6fb561a784006ac1bbc56cf364074770cb0de0f290a8a14bf69abe815ee653e039dca12081ac065c0e801eab4587709801f401ccee051ba58388056869f6eaae910d0bd0083533a38973fd040a48b208078d713db163b59f2e0dd8cb169989c4369ce89058434bb6418fd6aee75607dd753e136fa914ce05551ac5e41d52cdcfce1e63964b6f0b0dcb08d42a95a4ea30f40fcbaca86df996944529412e19cb440bf6e9baef9bf125db515b59ec6f12aeb09a66bf663fc8ee3b30a5ad7a76bcb038179b165cda3ea744d4af08cec3a43d81dfef28ab5781d816ae754d7b2f6d4cba254b1b794e206e3106c7f8e6ad3a50ceb689374fc2895db3f4fa7d05b3fb474b75d352890283bb9a5839209bea305578646fdccee242429955be25e06bca5c1dd73b8f42c5b715a030593654cbd62886459f02f195b7c65ca5e0c8cfe17711faa884e86893dbd3aadb07ccba44dcd598bb0438d94f482f1ea6c73d04546e24fa2d649f51aa41a343f468753e29944c744f0dafcaa1a48d632897b69d9bcca3190bddaf191a6c313899da98246744f2d8aefd45a55a24e6d3b243bae48ec2c74b6359f4cf8a586ca4205505501bff8a923c782dc93a8bb6c903f1c985e522e2a3080fb0eb25c01173854e04aa421f4d628bea531a3ff9098d1110c8603c2fa7a5efb542626e1d8638cea13151fcd24f37eae266964c4f2bc22f6f76253878b4596599cd563020988e53ce1bb1111bd4c6a2854851013406fe626a1e12714a7ab267b5400a9ac2eddb5ae612efc2e09028b6ec7535311d39e281baa353d0c1932cf150f312f3f2dd77a92043c611b6fa0456ffcb500c1e34153ff55ea7bf1319a459d100ca2aefd7b1038eb92a4618a35a3e74221971b8c261191ec12ddb3882a761a1ecd6a4f166d801d5c822a4a7355f18fab0dae01817490d851794da2ba9f81480a33735f4a8f71a255e212415da94a39881e1b42dcd5d169b5e2083469a2c24d6c89b93b03c46ea12e3993912cac897588ca391af68bef832bae166432ec98021f29d1fd71a3ccc9b63a7403c63adb24bcc38f55c025131a72cfd271f2747cde842e1d8aaa7ac2a3840957c123e436f49aa80f551ba5fcea50f18b8b19e570cfa840226bd3d5aed8380e1412ee27bce7beaf44375df013171523b8958c85fe5bd8bdaa3d4e3b7358ae7e58d7215492509466a8ec715b8f2c791894509256d9d19acebfbcf4385523ec55e5484a6d1f0a093917246589e753300d89d3ac5b70d996d6f6cfd0fe443ccacadde512dd5aec7456828e81db2da04538e5c7173d5d2c13017a97170339c453a7af40667fbb303e8823b003d82296bc0aa880d295c6f6411a128f4054756aa8084fad4f5142da5f07a39f562ee0b324a0fe998fd202d08524e2f1b0c65035e41e68e3682b79baa021d9082d018adc305d36539fc8f3b0bce196572cb120d9b5086e369bfe4420ded1c181da57504a6e8eb447eb9fb34746b0af411f4e1153c9ef39d99fd34075ac5c124ca066b133a281ba1bb1ae8c35b1a2b04045389e10de89b39fdec772a3f48abeebe07e43e7e2f5e845080399972ca88cf628b016a80fb92553fcf07bf7b8cd7b2da9d72aaeb893548b60fe92db53e59d7a00ed63b1602a78afe5c7caac58330a7489062c6f6062e9414ffe3b37f617d0518d62e2fe086694ab597d40472348c87487021450e6bdc5315fc172e01038a3e163dd6edca9589f0b09a2508d7d9cbe9548ec04d968aab8ce48e39a30bda22f65b9b3521126281486be4e5fb91fddbfec5fa14460ac9489564a53886f5e7f58182871d831fc819900323c1d142668117b03e87bea20097f35bd6c2ad7e8cfe5a70743d1b53661e6934107087d3fd714db31c9892ce1623eedbaf7166f0cc4b11bffe991a9ad44b7b2928b438da199e54054c6367fb0414502c3dbc1546c14c0d2996efcd550140624baad1ce9ab3f97095849c1a9a4f9e7640ddefcdcec69c34865387a93737c39a1035510ce408efac8806ea2112b7ba5301ad1add23d559515b8f1171a2928bffc8ed55ad2169eee31366e86eb9af47a1d899d3f8187e581e9f8cc5d7490b0506b8ca0c834ca25f389249880ae57439febc4ab8cbfdb1cd793dceb624fc36bed71d445efb7b547dca6f5a52f10492d2fcbcb1a2c734532a24dcc8b8443287549e01f906014f9ed27130c3297f11088b23c16f91c7ed342c661f203e14b08c4159d7edc44eb0c34518d9876bf45205c2988cda8875d2ae8ded83be0977c93fa8248c17e804d218f5ea7c4f4530960b9133f2c615408112c23cb7cd020f746a0244bbe72862bd0f38fe4d48e1db76beb289f72457cdfaa07346be6c24210c481825ac5bf014d2b60d7a6e3be51a483a0378f52c797156482e0ce1f89e7152f4a81051ea1a1d69696c51ac5c2a4c639234ab9ecc7d1d99d9d56a0bb7d67150cde17ac7616d37b3de6757d41ff27a0253abbe0b2d6f5d46d1a969a71f5373e87dc9e9d40eee4f1cb368a9af1b54b6f2c5aff739982b3cf68bfd7aeee02170c96306e9a8edc95df6f1be6bac8f718855e586e27316e926b9f5278e25b8335e1d449e06ea1485e6764129024ad04266a84e8fd495c860f33217660e1060257d3ea2a37848247d5f0d40baf709b0b1f341e8572588742da32866669362d1f382fd0f6117c01320392975abdc07de1aa5069e5b36cd9e4ad561ae99e0e2b2bccff57c417b8c8905c49ac62fe6ee5a837cc4c8f5182c39392fbbb3b463b48452b74d746f69f791e8d549e877d0cf7afddccc961c88c800be5f60359d826aa766bb2971e215791bf5b817c881f495837d0670b00934fe786297bc469df288a94a25155dd31adfec7a245b9f630db77abd2080868811b95db632b7489ffbccf897684317832d54dcd68538510e20a69bbd71c4788ad1164f22a1ee6cda32cab50de199fe16c634db76259b795c82dc68ab209ec2ee38241aa0959362129988d499373964ddc027c875c4fecc625d1d23567e908a1769cce56007a3ba22c466406d4ae3012f0101b57adcdecee88e8228c06cd12330b416e14aa440a7b521441dad295decf2cdd093a319d098fe8307fd5ad5b925b1dd9020a7e7d87518841b592c8ff3d1a015f88bdefcb2ec4acffd53990800e31a4a660005db111849c007455cdf3ed21e161b530838ae13067a6a0e245cbec7ac12f53d641245e920666b98fa9be8a6a3a4e6a4afbb0ae2351e1a9e83d0d98bda7c0ecba5c20928763b0442f2ff87d613ff3b3410f0bc3b0e1cf81d9726830bd84af2c8be0725a4be6217cc688c366817cf3d2e4a38802a8ce1f372e5e90b7dca9d628533981809209e6022f9ee93a5850c6c6791952f38b5fb2e4170c8c4b735e5d6990d4101c928bc5438fe7f5d9d69d6df8837501b6d11e1fbb2665509395ca40c22409793197d6964dc2cf6e269d46389f1c6132e1a009ec0ac5645a73e688934bf82b35110a1a1e246147193e68bb60f46afc60590211850eb5b80b14a12a6629e288a9e874541495ebb034470eb4f07818e963c937db596be99eac48f29fed5eac4d5305d120cc710a518e9e951c00dd41f9768b33d92886c40e0729c5283203715929a703a0650cee32b67e49763b88b8651a3a2cee8788c1075e93e7375d524c976dfab4c572b3af95470684fecc897385da76bbf10aa892d2e3329fae968be09debe97b856eb602104da616674fc2defda4836360293cb1564e487bd8e9e7b705afb1e2bfcc4c47cf6dfbd57ba5be3f9f5f946393d10f0b2cea18629d144cad32449ca19783fb94dedbaff6c34e5e6a810a794949b72827531866a6bb0a6130d9be131c04f432b9409a81f9825ee5b496a9ed7bd881f3062ea409c189b13363b7029e61bb04264915cf0c723e33d9f6d14b472b483fa583e947c0c010550b362e8f2b50d7a5109826f84d7e6f11db50e7ea5ecba738b9322c7016ce6c2d1b8c7105f374f6be5bf47194ec7083eee08e114accb53e0b91a858d839ff2b58663056530ea5d5734adb7525d16a396011ea76803643eeb50e484e3286a459a82b72867ce7d7d852a7a1405c746f397ab05c3aed6e023f7117ac65d951cf2c22f42045a377153ee1d4e31ec40722a8878d7a57f02c9070a862ca739180b8b9bccd121f19673639eca58a8bd9616debc2370e44234d4ad3bdff5420ae834bedd76849b4f684d93831c6d7f88f709892e3706cc6efce7149bc8177434059e3d028e95ee6cbfab8521a3ee019c5b756654564e0f016a1979b025f9ecd51e0a1c13f2317a89b752df5c602b8d676802e3580abec582920437d0d180ce39ed34536fcd20d3836023157c1c47e38774d9c69a92e58e0d64340eeb30d0f85754529d8790e23d34f18d1a936efbfbd60734a4c0bb1b31eab130d3730b89578130a8a1045a306c029c7178d3e4529190ce03e3f4c64b0c789d1e2f36d30b80a2e100ee3138454f84a947d8a029d430833c2efa7ab88c4407c8c88aa21243078e3b7294292dd4917b21ba14619a13ac0c4b546f94b0230f9c288770e0a375df0ca16fa93df240c73886ff11decf1bb3318d26d971102292e403191fad4a151aaef4fbb9fbd8730420cc73a1b3fff06ed18c3a102d6fefe7d4d835a77b32a4f7be402e106f8f95af8bfd5aa2aa587bc585c2046761d286dae873506f033ff0184f0de38282e93c38ccb77ea48adbd5a8175da8ae65d57b5b2c6c0dfa7145487ae60b05e857f61f5fbc3a2f05b63cb1dd63b24501fd3ed732912cdd02f870f4f36df71f5940339aa6bc4b72c83e29a76853db8dcef71c411d7882343367400f4d4fe279cb0aff7d25b84fd5f717c4d6314d009584f18b227a5a20a2b4c5afca1feb84178ddaa600e78cd69b0ffab58619afab78e3f498ba273abff3bad70c1e80d2d0a70ad8e150d88be1118fb99033173e29672a03446d4ca732a961600eaec7121ed1b1d47d57f13f75f1fc98eb329f7f20c106a61765fb9c78d05290e52cb7a9b6eefa86326d4f5abdbe0438d4b9c0d6413d4a2a6e233342f43d964b545b41b5bae56d1e1220afafc41c98ffe3ecbc5dfff0dffbf22ee36f1861e14031b21035d28da8ec51f17eb67ebfa6393c2c681edd92a48e62bb2de0ca52807eecace7fef6694b89ecd6a1521791a57831ebef135dfc0a1928433fb672bd00291aa073f397b50623471c9482fb15d20c773154c4b6a42765711e637fc27c5ca5c76a76678b5661446169754087a20304109ec3fc5b3b10419d24f40855ed9b08387a93ddfff9009e60f59ee4092e8d367e43dbfa4117df8175a1e3733c58b9f7a7166fe634f95ccc9e8c92dbe6c85acb36d9c06edf35e9f99f9c19e36e417cda8d045a659e4568503120c911d951985d630459df9b5b833b20716a4c57012a0a6dd89eaac5b0b8e21088432f8c52004aa3b328e3dcd84d6f9972ea3a040b69894f0e83ccac6ea8c2733e2af58ac00ac1d0a6c1c2a44c3211586544808b972a6184024b67035c66e2c2b247148808d9b57f993994192f71c803a6edb49e2d7be2e6dad1ee44d51b0dffa2b9f1951526de883be2e6d5176f7bc52845ccb0a30fedd47feabd9baefeb9ef013cb7c263c76cbf0ad343456865d3756c04661856027003af1c243d80a4aa1ebc38100070e949bfe32e4ac6565e6edef5acd4c9963f55d9969cf06f704d1ce95d981c85f067c4c11b7adc327bba36b843e70ca09ced89b71657d3df31956057c21c295edb574bf04fb32d09a34868dcf847220b2d34d6875d61d7027679f78c9837d990511f95d647dc75ada9927f66500e0e152b3c4f05bb928090912bff352d8c51445d61143a832f957b31da1a7d098715d5ce6cb5c6232b2ddf6ecce9759bf89fac332b1461ce1df6985059ff03ee85799bf6c2ecd12c5c0fc2010d9374926620ae521b8e8674cecba4e8d307ac06f3870f185391c5505820cc0f45e668d796de0772589b9931f6814b57644ef652491f36f1a680346355f36cee95ad1e50e9db45a764f5e6a70617cad1e8c9114722df44e4c474e2921d16c819f2a6d05b9e104d7b84d9d0b9cfdabb8a0b720a22e15c47ce2f79d890ecc5dc18ba43bc2e255ae13277996bd6ab5e8f7197fc13d7d245ac3825aa23554383085a53c4b4371db2c27600758ca622d73db0cf42322abd6117e325a1199f00318971212d98394ba2a8156eb9cb76e184164e1325163735f44313553364a3bdf11f092838c72ef2344307680d52621adee421385c4ea281b0ff4654fda3d67e13275125248e6f9248e2a423be13203f75cc3b873eb6ecd3b77692d220c1f8468764c3004ba6f28d06fefd4444c5a08162a1a7713edb9dd73bc1928122e037700c6c437a4b95301f5291222a7929fda67a9aa53bf8c443624df5914269c6d95180cea8e7014b9c5d8478042c4093e0b49f084676bf76103114e1010720b9c45140c1f0055055155f17c16d2857103b9a4a4ecdaa88092f4cf7abf8d2daf1cc724f5a96478ace3a63e126865009cac113727b4321016f0a8d0ca4857c18917805606488cf6826e15734251aa930fa2058bde323870279a17eb53a276ed2fe98d8156a6ff31b1e2dee996b6ff26cee80640489b1423b2ba3601aad1ca4ccb8a5e49b32b8701da94488befc96703c4f4b2322b142af72645436d0f727f04337202107f45170ee439c17882caf4ee95176cf1ee4b063852b0820392f58ff5ec03117f53ec29aca8b9d70cebca37dd21a85233519fb2b782c0863b7a7ac08786766b83ab6e9b65c3705e9e2e079fe79883177f46975f1478b5a5a936d710ff43f3800a66ac7fdcc6bd661fe4e8c9e679f78074055887ac193df8f07aee14155dd009078581e43784fa4e692869d9b6077501562718d1316153405573e7c14c260972b5416142fdcc0d26aa92209f10e45f9a34ef49814cf5d0a12c998c7dd3861f4a5103f9bd735aad50a17c96157cd6a0b8b1644f7a5645a495ce1bc2ecea877240fa04b1224ce1fe74c73d118c22cf6c599b9890630d7e7ae961973fbd94b4f3a7f156b2acd656dd346ea5b850f6bc0a14982dc1a188ffa10ebec05bb208f94c2c612032164918435d3823a0f9e9cf87c0a122b1041c9855303c2caa572d252c41a1ea3f64b63c11f5878ca1c37a978efa023db07b43a5c8cb41e0b5113186260fcb3c9785f16d2c3082941ab0da5bab94db96a492940271f8df35862974488cb3be1cdadb82adbc894b82a62058dd496d9ed2d189b5f77aa9ce5a4cc497686485e2920466970ad604e3ef6ee47b6c19468516c0e646509f05c81836a9793ed886838859a1cb0ef29ec1e7f8b149d577309c84a45f747520dffb0c7575bb26a1851cca9af075d47359eddcb22a8207d2ccf36b8d9fd41fe7383b71321c480f935709e4d22fb0958ca0889d672e50a2104c668806562e5c939f545e4360cc360971ae556a4461cba69f2b00294a2e23330db5c6b885a628d92716ec77edec86b7105c5ac394926e6d4ecd2d463dbbf0754e01b45c4c9410d37e80d15897a849b90b4e415118d83607f6a7ef056e4dc9f3cc086d194a9b527035c10b11c99fdd0e477724c91fe5914a8110e5f02aa18d5c603ef2f1956fa0c26afc8ee59183c70d4e810b702197f359b4d967595fae3bb4b29121993b770de1ef9ec882f24224570cbad99aee944e9d7feb65d070ea8a0055cec97040c60fa501a92babd164f6034182c4b98a23e5a170a5aa025484b024873cfc0f08bc6668f9e97082cba0ee8b4d2d694b69ab758833792650fdcbb1f677627af8b71d7334e2fec95d5cae6297653e03ebdc296547dfc7c5db3e74b275a62f1b945d0a9d783a345fab3ddf0a928f770109eb70efffa55dc909aa43d50838161b14f5c8149e22b2a2ab2d45cbeb80b04a474ce28e02c41cc8470fb7597d915f32cf80b184af2e92733ba7e72a9105ba8b4812f1bf11a8597e49f04130ba34a3ba938c61af699aec5bfd3aaf679186c963f9f24b6ae98b94605533a85619c13f1a583bf814a7168d9c903ec81a6f2bbf24f63cbb6211f1d33fcd89ec69c5cc037276de0c8159dc03ff466a06aa3c72ed6e70c1e8622be650daea3b28687ccc3a590a845c069c06c79d305a2f0b91484ff48577a4acf51887502f72c75f0fa2b4e31f2b2c70fb041f8090993a864816e2fa3b169b721b9ac0d5d34306395ed0afdba06ae8c132e9252aa89cee75d2f687299467127950dfda24fa341534a60048c4bcdafeb546eb8d127624e017b38ff8cd8c6325daa9b236546949d2eadcd6e05f8b2bb7aa234ae993492c3812faf0b8546935bc8522e2e3411fc29c9f8812a788b0ce09e5b47cebe902cf6d2fe23fecb8470c9379e0c4c570350025612ceb71bcd289e69f89221cbdaa569178fdf0f261c968697dfd45c5aef61a34d59fbe1fe85a86f0b5e6605e9d29148616e3c2f0fe9991b2c80156f00207155cf494e2a8c0827703c55837d6e79565ba0ac899410e3894e9c5a82aa8caf62654b08fa94f062a8102ca12207557fa528e50886a596580da839259a199459b79451e9493da711aa74753707180bf55fc0b8caca0260f0aced0a742904253447cf39af1ac79607544ce69b6254a357b2634839711e8a8fee30f04adadd32ca88bcf82707f9a8e5184e1bac1002e4e81cd0109ef10c7ca6828546c1c7be3fc48d58298600484699304b19990a2c3995c9ede91b1037cc0974ffe4add5c4e970ad9dd53c5db99480450e318461036daff1bbe4404bffd42124bd0bd36d29e1bfb422dd085d7666d12ba3ef11f7a6e4d044260ed3d9a00378bc36d9694d6063d16eab3880fe63f402c91d1ce9cd718a38f11a843b24f4e3f2689b1462a4064ca93798d814cb93b159bdf9ceee2eb3fceea66a0012667f1b8d8fd2b298b32aba28cd47ae880129dd20229cb47094da1de88f22d4ce99043eccaa9b7977bb55c17173e2817c85c0260795cc62394d7d66e335a0626a655502e83258658c0d380bce350b1abd78156d841bdc4421d3188c8b94478849194f5cad07d137d150a5a840dba46516d9d9b4850ee3c49bd680465613eec1c2fd351d1958efe4a425c9e673e67c0b086db8e4697ced39c86d11200a928524cc1ff40d603f12189209948a8e33bc7a1bc704bc1eb23ca31035a2f243a78a459b9409ff6a855b6a57424bacaef843d6dc392257e3503122905b3d209cbdb17a08c6b50e1bc7d4f50ec5ad099b56231e98decaa7997288d0118b60f8940f4fce32ae5a69d226b6e0cd1f63c1bcc68d22e9415f80506bb97011ef131b49c8d1fc0e8e83d75a3c3513e116e5b4ceef494ed0873049c9e21ea881a0b243da309d0142208c849fd886f5299906fb731866b4fc71c745f1efb08b09af2510f236f7ce7b18dce508bd0196b27206c160a622549b2dd005709727c9c3f627c229424fd00b26343a67c6028ec0c4d95a7e804c7be0861cd50a773a2895e8683a3b5128e8cfa048e48843aa6361282013f728ea3a710f74033331744a7e8f609632c5669e90ae9bf1b8f7c5a4646834898d18586118c329b7d16e3a243ac6b025ad2316259304e31930e1a1635519fb9c95bc338c6577b0a6470fac3950a00554b9046c0a59c2968c272a16ca7b463fc23d04ad5ab025005dde05e9fd409f5421b07d421988047b9219c6ca2b2573b8d78bfd1ee4df6de524a29f79632c9a9065a06a8056562d87c04ddac1d2d2c19d1e1948351d0a54e4ba22ece6b30d652a40317f9f0701fafc94d3776f9c305db261a98dafc37df26185d103a17cf664fdb59b3cb9fee66b308a2479c9dc138d4b0cb59c34f8290d95914673fdbd316c4b6bb26fe50abc52c3401f2e513c5d90701b24b5a96e7333e4959cf507c90181e328a198df3618cb188764f1bd39bd9ecb663b9ec74573037d3185f7555634c65a15c1b5313cec68463cc93736d4070d8de9e36206832fd10827eef3589710d314f90409b22e8d3b0484bcc0a82ce10bcd7af4917fabd3f2168be8f4f7e1f1f1094e64f6920ea6c665b7cbb679cb111bfcd71334bce7ac6599b6a54f01c419c9436a7072edfe847fb11ca6f27e087b200a416e5f99e9c0dc891ef70d745a2fb374f38dd1f5837280be990e8466c36935525b595c306a5a32a25a8e97204ac8e14980d417769df1a49f6bd4ffbdebc86ab764f1b9022ae6eb7d4bd729f3b57ce4a10b38bacf8272571eddf7abbba67d953afd37ac1141ce8106f697fee6e14b7573debe00440ec60c0ea6bda7ec0d9149c80073e69fe3e69f3bd0976f577377e7bdaa4dbcc52b18159420209e0c6ccac152ab8f101264210819250b18292f8e960b6a7ed47995df7b4fd18b3cbd9c6d2050f61c1566a192a4ad6b1e4aa71ba5b4b5a3a9c7e1461a21f2fb051d89dc1cdd5214d9e424394d6ada325cc950a52663c61ab22613fb27660362c18651e2cc4b836ccc12dbcc1545d1987997bc3172c04062c66bb34b890b938b9710407139ec303d7b0a4424e5a42e19611c35e5e90a5d6e42f67f0912dfc022ed9ea850b664a0c50180624b7a63c63050cc5c7d1191f3472961df0151df00d5e59460d4bc4e02a3234c1ca45561986a8fb45099e1a928bf8c84f39f08e1e35e2f418ca31c4c9d2e692b1017f2193ad78b970b2dc2e2a7905292326b888486681851b06096f5921053c66051840e45c2e5f79488d57191d33e0a52d18ab4a8e31a5a4c9ed6224d7803049c230946c7429c9c8810e9e92c37d734376bad5006323867c650537a1d2e149aed2c25610294a180d8f1b4c3c66a850270858183638053448c2641b5919ebca9d5385bb40c13f92bc20e48ef5c83792701c4922c2b5b1233832e0e002d7e51a9397ba60302c4fb53c240afe5a52c7293b59c24974dc363b8a32d38e179948d81a3738290dee41030a5a17062d53575b527292272f45708c1fb96ac7c501c9e88614231b9973e3bc3123e6ae26319bc170c0f8e082e64a7e6275dd4429c324db8a601980e02a1e5a3a6edc353a68e416c632529cabe5068fa9c144cc642230190a170ce44a0e56394894262698479123205a78603a396ee4283968e41f63574c1cacc54d06a3e68c193c04ccf5e292bb5c59c10a2f8982af98dc3445f20c40b878b4c171830a0e1a58c658943899ca4d0e352fcce01a6066e09265b882b3ac5c8892a530c16f8a601480e41478dc1a8e6e60254734b0d4d8fd8a73c7b8c148d4bc60265f01b30397fb822b988c55568a12c6042315b96c805c333c8adcb89161dca081d58cdd18e2e41e6ee4a8c13698a10126bfe082c55cc16eacf2962872984015b960406810318f1c25e21b988b0a44d8870a2faed89c4be7054a5e388d0d184c995dceacbb03989d7388774f9b8dacbd6d36b030f9dd44a890d5606c22cc848f4f56c3713d623dfe8da56fc75e6b75da558e7b77afef2c7cd2444aebf12f3fefa124dcc98f9b257aee903a6b9af9b5ee39623b7e650fa5dcf77495faece66c83d8344b6d6183e82d7a768b9e30b5123fb301d36907b4fdf34d2c7fb6899f10b61a326c446ff2191fee4b9f1f9b91d3a694d2e7c80e7e6e10cb9f4db111b163c24e446ee96689794f9b918e5dfa6421a2ded3665463d74c7cd8d396429badf7b4a5c0b5cb596d4329e75de52af5aecc26078f174e493bea9c714a6302236ea2e87ce9c12408f5f181ac038e72a505b01d348e9a20f5b8850da0a1e4091d273f667ced7034db4c2b5f1e30c54caf496501bec60c5595706ad1326644803122a949030fef71c519a2d89ab2f49802b3c2178d8118b2e068c2466bcc900f712f738de740e2851b0538182c7a7671b1db9463c5ca53b0e15788e0a0c2160a6abca683b330c52cd7e40267c9c4723236d1640065005d622a097a78ed9004ccea8c0e4a35b4784c90a051d243090b19a309868e73c59891c36d4021c06d4bd30b0d238748071b3a6fb6e4f0480188b863080721489cda802189e10d961701008f27993390738e9f99599c0c066c7ccaacc195e60eae952562d2114ff80374c8b263ca931d6d6a49452f8e1889f132c7060a4362d801c90d130c8b0799713d406390b638171b6619ef99ecb849aa2e8501615b5e34c9fc649721eb494b562acb4a7df1aa8ed45c88b6d250554db6aa1e58cfa05188b3af4201895508e7c51131e35095b95edc7bef8ca8316e98d458d5a0a688595ef8a24397d592aa39980c0c291a74a1923a226ad5a64c4d79faa630ed69a3aa4d18f6b451656daa259f7ddf0be94f1fae7b1194601c811b4ba09702286afbbe045470a40bf700fefc0e7ae025d410f7edf8613ef7c11f7f265d287192041564096a88fb930cc13e255db8807bfa9614c1084ec4f2cb59e3fe3eedfa7fe88007d9f7204bcef0203b64df8418756c2c4849fda1aefb1938a8fb13824ce038ee4f08b2337090fd138228f9a103738cfe0c1c44ff84201414059d80f8281cc8ff7e909798415966977d7f7a8dc3b266f6059101002092bd9a43246a0b1d28535c8002e2041d2c742dc1f8d1850bca0519d5ce37435834ded4492205cc54142635c58c1c326c7d69ed2012c4fd0a72a6746082d2341491ee699b8ac363c32e6934be7cd15fa2dca85a2bca0b5db5ecb8a76dca362565973e66669c374dcc6439cae14a0eb84e9b19c2da40299224e503ce4402f17f76e69b245fdabcd141a5a54600a660d418726af2c291202b35a6cd8e88670d55665150d03de214a10a8d2465a8ac0cbd604c993544c2a0b83005d9284c3c4e76b45694141aa014a41352b8614c1c215069aad2e4a862c2b2e589ca0b718579c5c6943a4ae420b19913d441d95d14a5dd4501228ab102f5a4b624a7c8115a43cf608bb2436bd5a2baa2b434954ba1f6bd362963fbdeabb574cd007bdaa06cd9dc9e362858730c6fa1ba3d8c457136b34185d9a028d5a09f3aa8a40e2a0757b9fa188a6887726add7502d664ec67a3d1d5fed0274fc0e02766767d9fcac1186b42c3d291a621a7a0fa630caa860f2044d04ce926d7f6e4ea0955156f4e6c7b32a4fe9c604e8d046313612666ae35acacad2e32948406372e2f5a820be248a2faf5a87e55a2247e98c2ecfa75082501eefad5489a5dbf26a950348b6ed11bed7a61d7a75e9484872f3031aa544bccae186a5ae891e46bca4a50ad6363cd8e1950bcc0101354a9932717767d0a454970bb8955896bebba5bd7571813313a4465502337e24f523521bb7e585bb46abdb1c35483eafb120a0aa8683263d70f61051854ab6ea13eaef3eae92bdb9ee480ce040a9322bba465b1a71b133696ebeee41e37f9d12d74d8b6648c036bb29486e04039f11244918c6c65d01cb1a1464893baa76d89589111d027a0aa224b3e7ad49c5418a2635ac1f1c29417a0b0028d2fca64ce13e097de7394f6de87ef4fd81fe9fd0cc7fba1ec3deca1d77de1f8a102e17fff91e5f72179c2f6be0f05947ee3f7217f387eb8ff600afbb6255e3b1c4b0fe666d1823e8902fa5d872768eb0ec1b1e60f1cebeb916e2f7f78fc48fc8df8ede8bd1eeb06ed0b717b4e11f66d488c6c2d88edb9f5b3d00fa6a85a8f74e70d8e3eb6394ae2234b135e6cfc3eb4710afce0c8fd37623c4f7cf09eeeb9fd47127c6714d484ad7fe229c27f8a10f3084e1132b7754ce81f49b410122fe2a860e3280e8e234137c61b2b19a2942cf1ca610992258d84c88e6e52b245091aed43fbc0d8449809ed833ae70e020b17c0a69f82dff7237031fe5001016cfa02d81453daec7e50cd439c5f2660731cf77a88587e18cc131f2c00814d3f05b3b6edcfb1cd753f4f74cfc23e7d124cd8dff30098272edddc7b779c53845700029b3e043625c187ab3ad88e80f550129dbb6b1e1dd975decd6ed475266c6c1d7b511d9d88ebba8abbd17624dc6d6dedbe8e57f3a8f5bb2c9b912d36232eb853259a059b112e9a64536a848c915bbb1ace133477e5b843ecb9803d1d60823613efffe4aa0542504e2af7c4b49d132abbf4f6dca27788e5dcf2818a105688800051076f536f86a0b622b63d6d4464501b11246f8aa0f47592587afb87724e16b16e73fa3a80e83f5544cbe94be43aae23e9191c4ac029cc0ce1da86a8c136c1e69ef3fa71b484d869b039124f31aa29740da72da09315e87464da704f9b538fac99938e9bef759a016238e265e3591b6c17e6e360f87c6e1842e51b0265889338c4070e3664e01018de27244c7b6eb2c65e44704f9b1034333142b67639cb548478115245b437602c44caeb8414d9e1f20e2141269610a52cc4e81342a303817c526c42866e13d8b65f139a36d6be90021302d8fb53c38adac7b609cc2e7d6ade94693475d9a598993469116d4d36144d535bb6a7ad29c92e6972a61913f7b6c971b835f7ca90c5f4985853b17830b106e3065819ea112394881aa14c54891ed52abda286e8649e8f73e93bf6509aadd110f6675922d6b6ff6dedee6b950379ad9a948457ab6aad5691306edb3ee6280d4324adc3a55049d3ef28e94f6192d6dfe9b2c5bce5fa1f26854961881526d1db9c106b63ee6b7732d0864bd6f7fd3ac3a4b086ced9b13e511ab6d8e27088b516e36a31b6f85a8cab94dd61851aab54a5b2a112c5353c0a91a8a814d4c61f1e8548357cda9896f5f6148650dbde701dba6192f7b42d892b97486f5cb4ab56ea0287487708bd373c0a91c2a56bffd61b2ad11a2a6df7be7e25cb16b8fe576d8bcfbb8daf87483ec23e0ec7a71b1e51da53f7f743a58daddb16f366b547b2c0de7bf70b931c48f6bd3f995ff69ecb3eeb073bd9ede36a431e59d6db4796de5398a46dc7f46571b56f68053b4c926de0fe6152596fdbbef69e98b67e0c82f071e0439cb75dd6a16dbffb0df4edb6bb0f935ab05fbf0f51bf6d31b33666da363c0a9342a530c9475872725f00a0ea1ed041027c40f4e069e201391f71b5ce6ec1dddb8c5fa45d94e291031f38734819058df63f9b7157dc1577d4bdc11cd6c65cd8c6d95acb6db15748948477b92b0e8b92b85c58bd9586319494536580066140fad05802a5e9f0ab5f3990ec6be9e13dcff33ccff378deb3a410dd3cfa4b0f3c9ee7799e47babeb76a9e2aaaf89fcddcb9a31a167754f3a25d1e578dbbddfcc6f54a96e65ff652a624574f68c4ee2787ebced72a561725d4b4765943cb1dd52eb725871aeb4b9ebfe15f92f6d603e9afff7ec9430ad1a7ed4bbbb4db5dbffa75480a510ee96a92bbe26aee4fbb93e28e68b5149d8635408330f8594b6852f4ace7aedcdddd41d993a0d62477e523402419a871b76d777505ba7346f04cc694c4887f5d0fb32f23daf6f5d595a5594f492853a646a8d4d515a8a29628a186e83e2b2babc54fe638a49ddf1bb921b6845ac2b16a08fb5ddb7e4896bfb5ad9e615757dc55ce39e79f9fad5bfc6cef91b6c5dc950c4c91392c7cb92baf15e006fdcd135e57adf62557ea44b1c856f1e38abcc88b1e0557722cf06237f22257c2da2930c5a30f2d0154ec0131457c9d9ed75a6badb5d65aab574a29a57f395a29a5a252953a51f5ecc6fe44df3ee9c791c3a3af6f1f159f8e9ce7dd77221fb24baa2b7e275aba9564e15f654f43acb4e9e37f4c31c6fa4b3772ec1f522712c7f269bbf3640f82e197399489a18cf422307cbbf3738ad0b2f7460f1ce7de19e7961c3b1cbb9d6d351cdbfe4541ade39827eae730dac2334a6044e138a608fbd98b76c6b9b5c5d175ec70b4fb2ba7cdb1ed7b5eb433ceda1647c7211b4b131d6cfb7a04affdd28d76e946db8b4457f2a29f0c9eac10ed6f635bd7a6ed69b3d5f66ce61344d7757f35f6dcabe9e73afddf9cd223073eb0f6f47d7da7ea77ef4f5e535c18aacd6d9b2d6c7bdbab20ed9f3d6d575cdb6b73fb6ac8f6f2e74f52e0476bd3a1a468099eb74f2d7efb4ebd702df12faaa8e30a8ffce9c06625cb6645e983a75e9d7220d97b4829a5d4d2906411bee71fa51e4fa5a18bdf7d95a2f244a91b2523b525a5e54d695112f7b5a6b4b64a8816bf7f39182dc1d30217233f2823763f39bc3345af52175256aaf42ae540f631ad558f52e97719a5dafeb644d73d264b210ef33cae1a57afd51f05a55255ff6cd9dd8b6339b5c45a628a1ff8ffa03b2803c3075b7cfafd4bdf9f26e9948f004bf03d70bcffe56edb6eea6bdb7c13fb02bb2ab67ea6a6ec97181dca22e85a81fdefe7a78438fbf70bca7946efb2df593a45a72e9dc2faadf72dbeed79768a6aeac39b597f42f898f8e980d2a8b04d69549d4ddf87fe9e36ab2a2ba95dce6a93f7810273cff760eef9276cfff94106985284864b510a61c6aa00d14ababa7604a9598dc1b03232928211801d3a54382795dcd35615a60a865dd26a78e1381f311f2f2a5023e44dd3d79915785099a2c183821d435e62989193a3852a2cd4661d65abba92c1292e60131b4186a8e0c5cb0e419606356882a8b92d198909b2b5333b39ecded8bd1eede70e0420f011e0e78ddd6b10743983e09b3710701edda9726bd8f3bd5dd7e1ee72188f3a77f61dc9b7a735084aebde03672b7541e992a6740511789f16655076ed955d4a7a11487e51ad29f528f53ccf233242a9bede7ba023d02fb02faabfa84729a59452aa29a59a7ab4dc79cf13aae00e2944f72d85aaa63212744d29a5b4a8146b2d85ea06c50f7cd97b18670d31c13638fed0f0084579044a9b611b1c4dfc80cdaf0d8e34cf3e2e2ab25a467bca7433dafc89450e532fda857f36c35f0a755fe7d734340dbdd134b517bce9037e558976e1d98c7af9eebac7b9a393a6a15d5769e791a33c760c6185081f98a22371a52eba0de659db512fea19a77120ef69cf97984794798f77eeeed9c71539733b1e3ee7ce69d79e962c391658234a2463dba737cae540f4f1d0eeecf6721daa433276c733a909b72dd46daf593a926dc4ff8007bbfb532ea760bba43bee942b53af5d0aed802060da45d338907eea65dab5a947b2e84aa16ece9cbb9cdde9532ed003da713c64897748912cc5909479a0bb3b598299a4697c04088ef8bfaec624f5648405d5ddbdab8ddd66927a3242d3d85b6d2b0babfb6fb4ffb54427d4315d15b5840fcd10dd6bce89689a343ea2fb2625d1518c29ee368bfc36677aa36930eda2697cc74128755db7d65a4257807bfbd6be3f711cf8109dea56ee3beebe47e52739f021661293f9e9ebbc15151585695d2203f35c41a5ed8c92ea92da787bf3b3600a27fd49f76030d26a08d092e2bdf6da6bafb6d67ebe77babdd77ae99cad96faae3f4191a15b5a0ee56569fd65655112d9f60c0d69b25cb1856a9497d65e3afc26e8c1bdd48586d236d9bdfe94dfa11ce87e762a6d65d7a576ae871f9265f81ebe14df03c9430ad5bd43b2b0a5480a61e0f5e890d45afb3b948fd07f5f8f7347c964df97fac32fbd0f659f971e2973d2a3beef193118670d91df037f76383a910fd1b6fd5aeb5bbb7b469a891d8e7eb4bfd16e90e87a54be2f8eb41d8e3eb4bf7286fd8ef228f0938df6418f12aa6516aa5b931a7bd407a6c82e85af47f9081bd29e2c7a0db5604e392a86e973b4c36fc79965e1e4ac2c0bc7c2b15f164e85ba46dc86d10ecf32dd5fc08a7519f480bee6ec57d835a2470e4c61c9e989e0402e563f27299929827b1773a0394780b291ca18291da951c759dbd9ce7618cbe8baeea9b5d386d9b0ed2f925a533d52224f8f76dbb15cc1eededace86553005b51e985da24a48db76ef5d8cb5dd94bb479404b670ba7b84b4bb4a43f795cc3ce17df71bb8f8daf6fda985435a3ad4e5b7521718bf05c357861ded172501e640f6ad18ee9e82e0bd0df58f7a2c6d1897adff021348041fc1bdfe0fe609ef3519764fbb99059220d0efbaa7d682811e5091d2b0396abf28ad13c1813e9f64ca79cb1ed0fd399027f1119c7fdef7f9ebcfbf4741bd6fc4b7dbdd3d6241edf6adb74aa6d250cd5cb2ac472c2857b0afe592704a3826f5d679120772311fc17d126e77477bac465344f71a04e173a06a638ee89ebbb1bbd2c536b76597b4c6bd8563e1bc77bfcce2761d26f1fdfbf6cbc271203005b661d75ad2c2f1111dbd81bec10d9cf53d9ed6fa6f87abadc36f6b15a5d168341f1f1a8d46f3a955b5eaa97e89a1adb69fae56d51a57bf6aa5f5c84011444002af82292c57a90bb7ef1fc61acc2a079a7ddde04b0068206680ed06a410dd19902cf07b06eff9873f9f8da58fa506640664c96d11d0ea0e8f382b0618db5afbf09d950a73ddc86c5ca96eddda982cdd3f5cb7c86cfbced5f3a57b6deb602eb62dd1754cea34e2072a42c8b75217545eb7ecb26277aa6aab0e8270bdd6bebfa47dd97bfe65cd6a263a9f0992dee74ed6aa4ae523fcf14f2f0f6429f2ec901e59bebb7bad6dae56adb5d63e5a0bd15af5bdd8c2677b2f7a248bfcdf47d62af13d71d41feafc3f9b716d4b0462e65c32c4c0bc6a95a5491e449801a8446c98116aa8466a06000013170000280c0a8643624912262916ae0f14800d64ae3e56442c108e84a12086411044410c8310420c308418430042082169de003254e38a90727187c8dfd0402c7baefc619029d42a08737be8440d567c6986862aea3935dc23f71982206d560df97cc7448f180747fcbe903c120c14ab034a028f8d216efc623ccb800a5fe4643156ba3cfe9c54c217695781913c711709cd321013adabfb9534740d63820b391439772fd203d67d807392ad2ccfd00618aa0b6f0856772fb2263f1a0d60218849ef7c19908757effe4824ce2556047620ba107630b3d8725f3bad3e9c8d309f4335cc6c751d1f6390971e7fb423a017c8a3d4141f918ae3c45d47b0d05d255b931c3fe4f28de397f80d64afe312c70f1f7f28775c23e68f53860d71c46764b50ad40c92c0540f68ea8b3451e602044c4a66e625c6172331edfc9dc3a2bec8d531c2c890ac717d4a50b6f52581691e599b81783381cc798b3726f12cb48d16fdc5a6b909409acc3621a2a25d7d91abe2ec67d14c5ffa4e14c7b4f6086753caf745ce8104c26ccf5210946b6a550189d8584a93e8c31d3d62c398a14ac2b4f11f5e55666f7ab39e5216811c01e988fc11491ec4b7b7e2f24ebcf9453e2836439197f766cd4dc374c3886ec2d166223ee1c41a3012ffd895567019169aa8ca128a1c23dd94f7e3edf095bbb2a080b974430740fd8bebbf6df92b614c8a6e723e3072050c2331355abbcc3b7725060ff691088c2c1ab954aba0a9cf0d9ed1508788da84cdb11929de5804bf57840f92bec8a18c453810c38f0aee178d3421a0033ac0c8f02b6f7d2c1152141cf819711781974d34331ab7261fb7e59b0f1a033d597462869572c87f084a0ffa646a941c317fb85ae84dd70b465966562c0ad59e4441da028f0c1968a1a53d7b8372248b5e93659884146a7c12f31c024482205cd4a9d7445083d0466b5c750a92e6a5a1dd843d4614ce97e14e44b647d33d4ae656dfb1700726c56a75d6c234d482b49fd4240ac436bf9c3c780976658df351c8102397e75a8289d1f4e22908775578099b83981681b60595820fe4783bf0feb961c7cd890fdaae91c25d014a618dfe8e406415bcdc0ca0f3c198c79d7e4acd87f049b167821c3be0fc2a736d3efe0f6deba333cdbbc7a9fedabfbbe842ad1ad0bb826c4a5253a0eed667c857d96e0839fd33676578b2b27b3db6cc2372a528b032231ac38424520491d0e88bc93a8887e9f64f19f17f30fc702f4cf148f8acde9cc994f05896e15347eb44c06642fb4ad4e7f93735551f4dd43e7b56401388ad6588289bff976e086642add3291cef16407506a6fb42f579646c852133ceb48a3eab5a2b61cb33800263986caaf399c26bc4e1e9384aafeb4ca3ee4034ecd3621eb663e6967b5ab444929c60b759ea545b60a98ff6b8c9549edcaa2c83936cf093ec60338067567ba3edcd17e4729bbb41709cb2f4691b01a500448e96d1bf087df047732f8a4423d8e76426dc473ff5860e73517aa26bc6713099a38751f286bdcf99f628fd7d22d6777d1bb779199996a4febcfb60b4b563e87d50afda85aba284bb7a96b7bdc6935682ed0db5e391868a2040f36c7e7a5bd01b6681b238771f559a44c6054ba4fedcee13de7d371492779ff89a22f8ead8672641787a947d972cefc0092622a2ee1c115911057d729d9537a1474047548098118cc3b90ad0cd4018302ba96cf3a50930e4e1adaa3a75ffe5c0bf39f086709538a88748181817eb216c08ffe855b4399b2fcf8269fb306e4e4f4061cc4e71ae045589fd41c771620e78fb53b3731597be1eecec999c80a95aff59f8cbe0eb0903a4b3fd6828fbf72b317ca02f18b0ef84d1a6490c9c7472e76681274dabfabc01460f060ad60f01923c4556ae369c7824b55c79de4501c8cc7ad23a3a21934d3d3074d6f91027b5bfa1de359595a70f12faa2dfd868b07160e35fb406b72f758e8c6daef546bcc00ff53927d6380a469a12ce32a2736149d1ad5a5bf09968dbe4f44fb3c050b42c497e97fb0ae11a1cc27ea953447b0636f570b67954ad633455c3a34955bb815e5d0ab13040fac0fe5689088162f3f3762a855362cd8cb03244dc3815c88d2e21f3e09c86fc7f57483e32adbd147bc11da26d59381f9e0f8a42602ece8bd6463f2063fbc7efcc5f0e35a618236a064b0beb4481b3d6fe2629b15e8ad6031a3dbcff078b09ddc5bd0d7c82a8f64bd1a7c09722eff2ad2157772c72968485023a614f1609d980fa4086cda560a4fc592f13880a64a493324c41caf67185152cc83db2d858f5dd804a1ca7345f2bfc4081cc4bb1857f3d33a8de92a671585c601722b0d384df8e4a685833021d5bb245cc8ba40872195ccb83f292a2d02c30b4e77ac7d0ea5e1fc558d07f7a59af92e316d95657e3c3935821a4370033f8494f49addfadb72a4868c29db8c3ddc1b84e936298d06fbb504bd7cabc7ff1127926c5dab0958e89b2b67649caa458439566eff3f60a08b694d9f2b896d1f1f62badfb4b8ad0e3fcc464e3c64538737049b104bcb07b8d8b8844c2280fd8b7a3887a9e67f2a5cc8e1cd55cf1fa8d9d76eb64ad99111b3029fedf9426306b39c1b996946ddc1d328e106932c21ed02e030396141b61643e3843e9fe99610390a6c8805dc431bc916183f9d10fb55faf05346a3211165cba4f024246fed16c24569f93a692dcd5b7ac11b4ed4eb63d69ccc6a3d8cda4c8d4544c8a8157502e39db09d91c6d9e41cd5739a4db322ddfa52a4ee88d73b98c490aa813a204a20898e5ddd7ab90e8ea2697b0ae3a708f196c9c8e448688a54004abd1c5d7cf28e083d3fc6d3cd4d58e8875ee3de4ace3136f36f9b5fb142bf02f3a6e09da1ffbde77b687f5469ec9ffdfa7d8d5fd8c8c54cfe1103dfbe4fd62d05d2bd0f627424537d9674c9ef0dc10e5a210a8db3c4d525f7f3e5aaafd0111defa4d10a2782df55b4f4bbbba6868e13f91c7a50f42935c79e60edc49a59b673337c5832e0600b2807edede3cb1231451a041b9bee918e203aa8b9b6982e807ae5cf58aca35fd477938c9edf11b6818ad47a44381eb8a821475f471733421d2cc453ecbce2f25da2c35c3daf98a230ee3d6ef57c6a69cb5bf0e9cf1af43fdbb21948d28c6116adee60114a06bf7e0505839a0d0043e31caaf8f426ddbd25866cb273a28eb7c81d8e8d6fda9caeea3c2cb919289e1220509eff116a662aa3dda0a4721a88a1a51c9074feda9c02e53932af48ddfd481cd0ce31b5bd257e3afd0db01f93dfad9f3cba9ef03c6141989e674ebce04835b009906fdfe8d3fe26d82573038d9a134cb5156b66514bec441113ae2a76d1f81f0f9019334603554d0f291e53d164a3e28e761b34609c57c15f4a1caccdcb22d2f7e9090249661e6583a5d2545ebf5b0a3935444c7b46ddc73dc203f55c251c02e42dfad80b1ba4271b104d1366561cc302606b0ee4b2e6e0f91fa50864f2e442632852b5e0cb1fe994f411663a1bfca1eb7658e4163b2a6e8e1040039646f6e74b0d1a2c9b1adc776a8edf0806d6ad0a515ec804865110381e532230bbf0cd9a3ed46db11c018cdf8ea5e83df222150dbc4ff3f4748112357387136454940114c777f7d24721da707557160aa4b12ae1ea60ae51a6c65ec34df7616130026d785dad80e9db61b5620ab375e3ebfbf9e2291ad6149a945045c7fc7a584a9cc57c10290a595461907ef1efb80cad790195c007601e0c6977cea4372111d2df61f4b7e4231849534ebe9e2a620d763ff493e115cecaf48e104d4b858c571ddb80f987354c8ed2aceb875069cf8137eb32d6154d0f83484662b5824d4e91fc66771bfe643eed605e9226551be1c27a53fac8dd72d9f0baef39c75f839fa5cfe27a59e962a18cb8c73dd11fc33129414719e7d4d5448b067f707cddca98bf1b7b994b7dcd0e201b0e466489f5adeee4bf10c3cde9950b335a2e883a895bd5265b0a07af4a9cb828744292b61f15e06a595294cc5d9091fc461cba46f0ebf5344093062d3c302503d8b8e09be8015896a003192f3fb823e44674e9dbb87364b0596561bc1c9fb65e30f8c68d13775eed3249e0ada8739a56c51a5166f8a4ef65d49f5fd226e5f629487e0acb13739ead67b6b43acc27dba9f5229bc70bdb74ba6594bdac46cfc66ac56606e501e924ad1e7634406c05f5d12dabaa5c8238ce81519ca8da7707bcb6e14782e6a92eb60aa944669dbbb0157224e421097816e24b56f9b5e84ad988d51f835ce86fe5dc8205afdbcd82987978ee102eba75a5b83be90e7b62e6e563dd4ae50b9469bf4bd68321e80b63a1730c8032b9cb7cd1e043512d13057be863b3aa61e5a76e435842b813ce5ccc42233e4007327243a57978af9601482d0886463e9904541f818d84f1b08847f4ebce1886d954caf5898e03043871c0bd639bb413103cb5780a614d97438d06eacbb914250ddd903a53d876965e1b03608b04508149ad0060058dae714ec53cc3b2bf05bd20cb0065734790c800e2a018eacbdc0d889e1478d168d9ed2edcea515b7a340e2626c992c78987e86cb0d7386bc9088a1bee42d309d973171839e6bdfdd6523856730fb4022c41350b898b29ee9ffd5923a23d12034d4090313fdc9f0cf2cafeb24b730a06d8d456a8be70982f963e316ea87601201604510ef03ca341bc606658c34262a8b10e46d996be4826b054a00b731010d95dfb1f471457fceedd28d700a85ed7186ee261bbc0fbb32100c444efc2581e450cc194d1de9981309473609881a051229110e801e52d6680a27f10694d33fc48168124ca4840c6a208e98a4b25ad8bf6ede684131d25abbfd62104d51fe452b1a7ea681a9be81aa46436f64822523f217e764974b2d77a25857f7c538133236d1dcab940263b818ca44637345ee1cd39c626d69ed3dfaf1249d6d3c8145357cd1df8f98601656789d7b1cec33ec05500f1f7108aa9c69d1cb3ce934d5315375883c79d2a9fa1606069f6af99bda4e55408e22d1d099604740e427ec4184bdc812d24a81a64e8b08e40ee01aa0988dab99f46a02d6cd01c5ce1f539e9e59777a40822bc2df5c8ea88ea5f842585db28e5e42b0592ad84a3eec0574e96054e2204ab902c955e5493a92220b80008a233f0b779e8f8abd92c3b817ebe888a78e169eaacdf9185dff56679525a5523dc0fc4ca5166a87d7b7b32614b7f896fbd3b001921b1db11dac6376f951bcc4b925cdeec3e4baee15c7c57e2b85efe8bbc8d10e72712feea6cb4b90d966286e2490d79073505c48323ca9f6701ef4801e7f6e78c2ddc5944065335f83d105a9460acf701bd5227f9b08853796ed13098df4d2399fa6c34d9ebb389a1cb0f69df308a7116cf558193ea5226a0915ffec702ddebfb108105d19f4f469c1da47b44628047c6a9d025e79456122e239b414d86ceea5d8a3a1ead4f01c1ed53d2370705b2989078347409c00f5ed9b645cd6a0550997b750baa94478d2b55a409c1c6ea7625e812f474ebacbc11592d778510b9c5878a2c94a7ae41c0c8c0e5e3570bf746291958aa5b264d237a9703fb8fa3cfc8b154444b650764eabd018e9029a8e1566155e52fc9ba00bc1a69659feb782119a7bf72782491868e879a54271f858a7933f531a7c527983f2cd034139c2cdeb7481bf024492834a7c54963d54ce22dab472acdebbf5b3315985189af71eb003d402f63650fe48967e0f1513c4b77635eb839886a6b4c0e9fda813ac19de0badafca2ae630a731034bb6b64d44dc435fd709dc5004074f9d0c5bb87702bffd0eccdc728e6600011038890004dad6644df3f1d59438c632f3a58fe9fa1ad7bac46bdd87899d3a3b92782ade8efc6b8e1adfbcd6db80f5ba98d290347acffd3e9e75a53ea82ed54092ec146a026a614f1f86bcd74260bd4a1739bfff03c82f0b34c84e8cf8834c513c48552f8caa1c8db03b69972cb1fcd75d0e4f8662c1869418847bf14eec279f715fe7613a80851d5742cc9b384a9a89faa1437541fbc1c458af8b73b173d2ca70faad3b5b83c73a1b33f90e9e6d85499705d203c9751d05441681b19a15d23ad160c9f825b5bae556f4a76c8012df2f5c4c13c00d3e42e35f88c556b53c1ac1325b3748009503899a7ba584f9ab4fbefac0ac366cae43f6f0b63138e398a5888698a0f116dd1432fa36dea735e6de52dab8e0111056f8f89f31841714d01bfc8513e21aac66b16b5310ba00cd0c5a80804ab9ac9c4cab08c381cb50a9998c6c0c469df774076d247d8f50bc783ca582adc5507510ef07e2618a22df33e61b3a10c9649c91ace47b7bedb17e8a4409fcb554bd3054d933466c98fedee7b0c5de0dcf6c4846b1c756afb1678cf45e4b08927ef5498284201a01c83d6ebfbff39237153f02130012a7cec5b7ae9f0aeed5d2560d8488a5f75532c24cefcb0bd9bac77c7cb9bc5f6fcfd61bf2e5245c78be5a94cacd82773138cb9828e5ed1d347a799d54ea4e9e2a5269111b58260c1843aa3798a19df20eb099654cc214ae43bfe19a2af01da96f3ccbb370c359c6286c05161ac9ab668a40e72452348d0059c360f11f6a8470b00e052846481691aa1a734ea76b094bf922f6a21c0a7a236a9bc46b9d6066248ec03fb88128653fa046c0c2ed315a000c2c9335ddf1d8f98fc40d51742c0fc83c036638c09bf9aa7a19cbb1d2b0acedea195206a8c2062275c85276133c2f420298e0ccb1be5b0cc2fcf49a69a37a9695f8451bebe9412652850799c99537f3e021b237f08b4e6e00f02d0a60746f42a423dfc34f93882afa4be365bdfe141aaa7d8d1c73309ab27296962fa38434afa7b1bc52bfe4d07856fa02d3033199815c73b18f8d9914b1f60e1318531f6f3166af5ae7a3742398a55d3d52b6f125961ec944d73b4051e6f1a542ec5a568b82edb3237973cb8f4733eff38411c5304221f8726666c50edceed4573088c45871f2c209ffb584a6e2f65fc41167344aa51673cbe4cc09d4c2715988fbe119d12ffd87aad39800a661cc2b141e006f29b9e0bdf41b23162986561913529bfe0519c564f65d179afceec184446398bc294b74c8334424b365e994301d18926244948cde1a3cbbb0e41c002ebd3b8886281006c74598db0e4602874960a9198c14531dfa2b323a8f8b87ad3d2dfb183a6d2c8f740f21dbf92cc13b341eb405e16b9dc099decc2e1e1aa2432d2b0fcd6a4d1dc8d5fc20f78ed6914cca5d515ff09d7c003056f3717286ca0ab25e4eb06887ea355813e414962a94c76720b72395dd832d479a624c3a7dc84f9c707212d01963684a121490818e4956a1210b02d44ac33192639687784df09db5994ac6120545d1cfe496becbc2c0b070174af1b1c0768be309ff0b2ac6690cd90bfb0a870bd5115682ba8692d4b7681207aa97f2d953693650a8d396685a6370094dbcef0705727a0a8b254aaaa798203e488a8c40f8be3df88e4203699beb8447863ed552af6d187449d3bd0b4254318eeaecf88cd77a991061d81c441d6e7cb2b4f4be1c4af7a3f7056474d9aebb1ec8d29a3a4eb7ad88661f4923611c9761cabbd1c2ccd954bdd905f149f39f0cab18bd2f7ab9f6afdafe8232bc85510f3b6f1882c52c106618c721dc9cb49f3ed60b79b4d78a593fd58ae90f61c6afc273976726f3426c6515450567e6ac98c28453ba64fe37fd928c466db48a5c1be3e2103cbf47f1d879a2ec765244ddf8f94311755fb6daf3c93526177ae3394162d032769f0f86d90d2480045939ce944605b5ab98c7248245c2563165c743da70b37dcb3baba880c858bfcf65bd8a291c0567ee80480ac26e5cfc00b4cf72038072c5b86be9c6ce038461b85631876d6477b2a34c445b10acd5f276fabd041d9c554cfe1fdd7999f36f4ab5bd8d921864518b3868899076bb679078e8a35447261bb12c6e8adec98e88cc61dfc05d21377bdb2a992c65aa195fbe67a69fc2c660da1ac6daf4d9c90bc399998ae7e2859b2d6db163e33572dcc6aa2e4a3430f8ad581faf465cc2c97052c17d437ead17db4c0ee73c1fefc26dc00c8d0fb71a339335a1b6bb31fb3e59c8a53d9c2619b006c0d8c78f623eee0909ea60aab5e77531a4b9924e3085b334653f0dccba8b813afdf871527700ab316f6fe4d9e43cf92d973d8672fd217f31e1b82fe07e3109d996c30193c1363f8f86535815c5909618537010b7c6988d8b5f4013f9a402db8f6ab92928b501b05dd18e07676e7bffe33a98d077c9124cc13c14e50d8709830981a29ef9b93452b7cf0fffae2283f15dc96f345605635c1f8320833024c5375ec65c006fb70ac69f23f8dbbbc0e2e07441e85d11425ec86186d1ff0194231a231a4c18ccea0a7b8d1043960f30808815eb676d8799f38a88f5eee0f420bc3e0670fbfaea125fd1f04931568ecd9b8aa40bf114f8ab9aa0c6b100a3582d1095912d4e77dbbb2f6b4cb49f708dc1c1bb6ba7935438e345e22d28ccbd1a57a03271c4c6bb882a1b83be793faa4a24efcfc6cc5696ddb46479784b6068e2f4997500b8d652ee493d9d9161f6472e449e5ee5a1f2f93f3f39236557830c59a2c3e1b4dad8ea21df78c5c465728a594a155f125dbe928712e0f4c3aa9f5b9f3efbfe3893ccee71fff0ae483499a5e43822da3c6ac0e2b5647acc5e935ca31c30bee9c762cd5c45ccce9c1ec173c192feec814bc86e14cebedc6b5b51b3b4344dffe060a47c6919171154864558d08d3d82cc53f55ed3058bc3c3adc32a45a558413f6aca1c4ab3974eb47095fd6eaa0dd271a0e83c740ea2f12dd08505e11cb38a75cd4a8378a577caf443de5af1e25b8682f4814367255c8c14d47de6c46608bcac013cddfe6299b303df80110348324b2da9afdb712a1ac7b302a3f87bbc35d6bc7516c8ff2305674d961f81ec21894054e4ac06364b92324c17a0f6a7501631dffce7227236f3166f62b2d1d67b36c0193f752bccb0d8113bafa1d1277296ac2bea7c22a8801f0abdd3bf668a72ff87f689cd571cf9262aefc50fa5cbf72809fa419286a1c31dda17ea6c91d1c3e4123fde26679f41085d792d689a489d4d692b0197183a76a95a8f3a67a604f2c0ce74e5109b82348ae23d4b9de5e8a910a18b26afec1321cd584cb04114348b3247b65c450759c42b17b1c821b3d7b3f4de62a95cccddb2d691c6d65f0e38a20d596b713eae8cbe5744694e003c5331ff409bd5902b54bd90dc2fc68e8a880528a406b23826f75dfbd57f6777553c0b4c5d23dce38a27d3edcd00273d7ec7242bd77fd67acc4bcc649fc492ed6d3e419f7a7ffd32531d7067fbb287d7fda3d6d8655ab7179421723096005a114b434b562d8fd02322fd0b73cd314bf4c8f5fb9d9c60e8e34b6b6101bfb48616a6dd3475d430fd18236181a1f59000e57096b8122f2d9290c8c66f6701a01ced42d9e74750f846286b2f39067287f6929b1cdaf4c4e47d68a35b136947b28cb470e017f0e889821354e91d69db36db36b3a78202e34681e9a3b89815ab4fcfca798263ed2a521d914542c71135fd0d4aba211f18900ec42e085fb7724dfa9f66d91a2b4301aa2f345a78aab1ea94a5a287be100a9aae3b240a619a66cbf04d74abc66aab16baf5631dacc0016eda012f428bd8b0b1d2e47ad4253c428db150647913dfbc9404ac0f1bab7f20390f86c1d5af82e936d6953004e58171bccda404b0596eacbe9031b00d04e004b980b0b6b1824648dab534fed011e660db584d7f688d3701a1de7d223058481babbb70c2aaffec9345a8e9180e7c0c66ce70ba9db22ff42250caf68b1209175a034309093a24a439c437e2f75ac1f8b57d51746414a01b3b115e23fb3fbbe2c35263153a30adba709dd9b1d50e7899b7bbc9545ea002aa1ba13435565c3a64558ca36c87c1fc603b3d77cb93ef19eba0d371bc7e305e7440360a878f7a5f2339048b48777383888d0f9552027b042c64c22cf1c7d2587399e5e96fd9d1880c13cd0ff234b2677a16c1ff28bc19110041f5052f9e2481adb156d49c4ec298ee97b9d558b30201968c3ca8b1b68085035e10501aab9b17827f5da7a8f6b701486134564f20e836167bbe068db57b7829ddf60c602356605af24a472fc6f9d13a6f3d4ba3adc929437f9202b68f540fcb150fc38c55a4f49ae5348911d336b0f1252528abc3597fc6ca90f8929262d53514a3a4118c5bcb46dadc21b2d59a0a7d014058c6ea11417fb84394ba8c15114f0276b03b7d6fe02449a848d5d11586c22d54c555a78cd5b730098da00c9014748247ab471594b1ae699b187edd22b9b6fe6bea99b80a3549322251e72226dd7012aa4443be8c34cdc78ee91c5633dd10aa94935d71b1ceaee60b6fb9699a6e45ee1c62f11863a5e263a9e27557dd023514f48db1c622ce58e1a93129073489e52cc60a8f8279714a31d6061c3f484daba133e09d548cb5f50748d34f4ea02a26fac607db8b0d0d3a7a06f6716f12d7783d311569f170050140ac63dbdb24bb19e78a93b1ae45eb1d46c63a933f73a101aa5d89178c75c2880f603cf1f392b1f64e5c19c4ab3a0830149cdb7f3d613a0725cb0ec8cc3811d47e89325646f007854d277fbfed604e9b80e0b9e6c882ed96ab55bfa7328cf29965ac70299fe1f5dd4299fe16abd7b44858a8d0887b196b5730df9bc6f1040d00056cb54eb9a7026a16defd11a9d4b41ec62a2ca470011f7c324070b973436cce91563748b8270ea109add94f853963855ef3a1b12ed258b13099a76c88c0ed46c23ff66eff3334d6623efdffd030317e23a1d02c75882794eefa2fe5d061098dd01337df74dc1b541edf2032af2b9fc7fe6a914cf1887c0cef0896e469556707a63101d70a426cd5bc397c76e896f06351d2ca69f11ec555bc3e957d91c5538e268fff5a680f72b2ba8f422f02d82b7a6421a9adaa5d6bb8a58ac297b33fd407ce5da2518b32318dcdd3010d04ef911c27c0a792d270f5bc6be79b66b812a7c6359862d8680aaf7200084d0a48e5d29898491f90de07c7b5c5f637dd99359621df90eeef150a8267037d532c1f456a56a7d9b4f6b674ac28402e9caa7c20e108e89e3863d1002a9456465f281f105ab0b9a8cff32f62fe35dc9c34752486824cf80021fcbd5dc84e02f18d6a0419be3c0e70e0ff592c57a9ad75a31e35ce7add8147e10f5ec9ba46620868d460b440b5431d03469a6770c83691c347f768e6ce7112ab2fd75137908728e8ac660a288711b0a80597679079b58da4713c8516708c2df74297e14d918f5c89a4a0ceef371d88e031530c0824b078260428716d9cc9db08bc6cfa8cc39eb2672c9c45a44b50a4c2467b07e9f6d78bbf5f184c78ed7ab32cfce24ed22570551cd3f60cae779c098400acdfad3da366e91420bd849e3a022b0a784c3776092d7226b16bb42a4b753625bb5c2059f5d0edebc3abe3e974e6003537afe71cc446d47c7fc58887dd58fd01a4158ffc283fb02b11e90759f92fde0bd4506dcce858148c2d832d78c0917e555824edfe3baf0043d78898ff5390140e410b341b95e2bbc3657137a016edbd12a8bd7f97a549ac79e2783c6a18092a7f0d5e8972a4e0d227bacb9f281cfe56d0e51ef4b53853b8043b0d4e0c03dda49688b5025e93a72e85bffd8b0b4f3eed05f752e1fcb3e7a73d86e3c495fa84a14658c1a9e461979e004a0e5b1a20e98f90c05ea604ce50e6cc9444e5888448eb0b9b55f7f551039744afd4222798ccd2a69199ace7723d364b10c7f4bf75f5f028fc292623defcf02d24fd0197540a77758b2e8143c885ecf3ef5da0856606fee4439ab425513a799a06929856477c0f4840dedbdee52e01f1a578b77eb7bb6eb7eda0913d742ae0b6fdba40534f19eeef34c5a4c7e5b603144a747d187d2e7820489afc1225a33c105a8df1f7eaff8e2324e67302e3cc7544f0e5d1fb4005bddee4f48aa38bd26199502a6a3b006858512e1c0c8342887232a2a3a229eb8ea5bf9dfe306ce1ae4be6a499d3a2bbaed8f496056d4c64fa9a7d3a9cb571621d200af5ae9b27198c08f0585c2e4b0a6678d5d411098c20ad1c94edb38166d7a46d534de956e82a13d17920bab9dc1d8057503fe75156fcd326745fdc871463255b17d70f83b3fbdf2dccae8f4d98b81a9099b20ebc23279dd052e38f939cf670414aee5cf65a4a2a808ef945490903d6389f206f8202977ea114499e100e9ae46c9ae702016c31f73ccb6144a0348b82276eb663984efde6914c19066281a007c660d0d8fde2137dcc607922c8a282c68e3e29d0981b4c426394d4c03df6ddcc757d678967acee661cd68231acaba44104ed36a8ca4f28d0d8fe8c26a125042edda1483de1b50e6161845d77ee2bc51f368e3cd50e56e38138d090bd3adaa9660725ba2ba904c7646fde85215e2404d469f480427f92195014266b10864019aad15f5618a0c937c9aede410d34ec58d483eb0bbe8605203fe68660f8cda1e831cf07ccdca9d221fc4ac1030942faec08c4a3a71010fd8d0aa7d3913ea3e8c325a61edfbf285a104e7f34c658d2ebf2c1cb6b8381b4884df2a08df4f03c2bf4dde0b98979aa9dddbad758ca044e58e2e3ac4394a09b2861a932f8120c2509bad2d34013cd02d7a6bc959514a5c981a26af779861d99a3d142eac7350455bd3cf5d3ae99b99e5dd382a574ac6f8b4b8c51c7b2d9b79359be1f26a7c1f6cda2024ccf757f95b928b0e08748d7af9ea75255c8b148f7490199641fb03c11c7fa8373eafc7e9ebe04d071969b4ee5010f7df39a6171939a53a26c1faedb098b02ee7201af8c50583aa2b06a745b906662ddac2c0f4c4c771b805ba8d11fbf33a96bdb47195265f3cc518b5c7901b444616165cf90cb87270d4aae815205468aac333a0010adce492bd7f042ef15073e1f2eff56769c88dd79f32852449561c830a8194546daf927d2e124a9abaaf27115d1e8726758ae3dd44348618ad4630609c9fe56e0c51a6becc3d4e562a26a1141de4f4b0a90a9f720c04c7e3d91b4727e0524f59f5d4e70038051c98e5003f008d9b71d82e26b007861a29f921c32f5282343375c01cf06402a837583542a0f23840ef2dd1e8740f47df30a9163d535bbc95f603337a9bc9dd1d537525e9c097a237561ac2e5f37cc77a18b44177bb722123a24df5ca44f6a412785fc3252e72939761df17290e04dd88c2ad0e4e7098434d2b5a418f3c1cd4fe59f337eeae3b22e59be1b96966da0b6234c029370db89d805985c000f0f5961f1e70db745e782d69604f01f6e943aa7646d6a61d655c35a3cc8c9dff95b7730ff11023c2dcccd528298bf2b46fc8031abfe1eda7c10d4b86b48db70fb1da2f9e13960dfc26105f886bc61ff837c05f2020b70154b807e72ebfa4459e1cd120daa1cc0f7fac449174f44f4ba6feb47e0a0fe3cc5b5c390985e0f960f3661f0dff0757fdc19c2526d58e352a94463fde59e17745f10eee949aa016560c44f9e9f362f775abea684f54484d380d161986ea01ab460b6f92702036e59eedeb657fdcbe14a2f9e184fe9ecf9a2e9b02044f125d542cb8ba50783a3b7c536e49cd612eb4506186d5b246c562e2f8c356a7ce74add9c9977ea886d92bd2f9929ac317051d7e5292aa328c0b86892121717c41d03a10cada219b235fd4f2cbe6f96b084f9464c6802e97da2ff1f292d75c6bcc68cc72b20b5adb2182075f2592277d324d009cd1f2beeb1989af37036eb5e51568f69aec2de34925a7f564487e4c536e2c42466125b8a13143d3618584eea1a59e0ffa9e5de728de77f9203e1ee70bfba44c67e83d65e80a610f6f0478fd435bc0a04286d30792bff9e776af4372dd1981da08b923f8c07e400debd0e3e950ff2e75d07fae1edbcedc3f55093ccf7cf16a8d530e0dc88a130a148e64b791a60f1fef92a56d721af79890514aede50ec100055d9ecf9df7a3d26c6c7d132733659b26ddfd081bf5105f59625be2005483c0c6a179dad926313feeabf459c1478989d5f52a74347260855e1bffddc1ff27536d52d905121736482d5087a04b57056e2c292610105c7a810e0b2ac820c6587f33f6f3693418de440c351c30f3a219acae5dbff7ec1991b207e0431efcded4326dfa661fb6acb374489f8cbf421c4aa4dceb5b07ece751e34e7901b3d89300d4acea76bca2b30170babe5fc78554e8dc432f1d141957813bc0e16e0ac405e08b4a747a1bdc4eae26d8664cfcc3188407bbbcdd9b167c8d32fd3fd0e60ec32478c05235f6188e03c0ffe45e8c5f2e28c4b4ba3471c7334bbf3a2908b4909c75888ce0a89a5edfaba9aaafe95d2c97166ac9ea332a7b925ba5a90d7e1cb1834477c8e0c4b4cfadf73edb7fa52f5b5ff73ec33eb946e6fb6e707135781df75928004bcf743939e3f0044bd47844e0b12e44348ad69ec61b7d6f325f18c43baf381b4214f1fa251bb81eb20de1fee6e0b70ed11024406f10305ad2ca3b8333c9ab6220fe60925e0e7261080cd7ee2b12e3fe179ca18fe477c10f91d13cc9c641473b59571a7bbd29fafd2da2e5f2924ce52b606e738da0e91cbb99bef559c24ad3d89ce5c8b1445bc22968f991fa9b4b6e4979959ad2d6ab3f8440671a7f242f95536c99fa371cb728262f2c87fa97634054823bfb678a23e648a928339491c3c24d5d10ba195dce2a5589a51298a5ed75b93d959168b65f820cb9d2e10ac095e0bcbb0a050eb789af29784c2aec1aeb92e0fcd96b94760c647f7367477055a82bd379f994c6fcd9be7b65848c97e6161162a554274ca5e14560924b04c881df4d3092fca0c9ac7e203e840829dc4de5233be603950946367d72867c60813f04d19e7fa56bc13de82580ee99ee0c92266679660ec4e5b5894296938c35bc880070b7ee9bdc9d539f5d6ad30433238b9034c4a077f612698f9230786cf047311e73a470949b54d8a457e33ca8efcb9ced3c7269cc2b11a7c9adc6e6a16608f7e6dec4236d81d2f388d505a8a796803ffb1dbe91b49a0b32bf7c326326fa4814f7114a221c54393d7ac2f8323dfde6cab6206c511e358d4f0e54fcab12165a594e07d1f307d9b2bbbbdbfe182c4650e79305cb8ba8c71af07260cf1325a8665f3b181e84a4cac218fedd6050644cdabfd20e016e82f2275327f0b36425d150d8d54a2d4052fb902465a734a8e60b0314d4a6a2a08dc14f83db746bb6619e6d2ddc6d5a738902d2af4d809d69432fbe5b391328e3c1ef7a8c10c76a4e403fb261a637ef494a6cedba6a4379aac2e201a03aa3f031aaae978ccc0fd982cff0ba28464e28fd8b3e11d813a729e34ac081b6d5e6bac55505486e7e593816c010fd66e90e05c69464af7a0e0416af55e4a8c0f0f7efcd92c361ec55707c8bbc8d2b107e0f9b00d9e89d0b8870243c1adad14d24f41822bfb8bdfa4a76b04c4dcaa5ec233e9e5e1d056addb861c55691da0253f2ec531b664928528998311e6d13929e822ba5f2bb27a5c8ae677a2dcc31aabf18929277e53193c25855504146ecc2c34186b553f7cfa45bff744d1b1a0bd0a01a21c3a2246b9d55b3a2f01aaba0145501eb9cfbebd08dc70c08021aa7ec72ecdd10ce716fbfc5cdb1cc71f66fe48936ca7c79e846ac4761b406c4561989be76e20d25436823c6089fe53301b0f5931a24d9dfba9bf112b69a41ed96d1fa0e6422bca0936c8b08c61f00464e5f11fd47ee3a480f6fb48bc1f743a4b51681f7ce5c111dd578658f987b7cafe49eac58ab583572c7859574d09e5cbebd360a3a56775851a1f8c98797904b4038799fe20dc1903971b502a9007646a054fa330c17f4310e08672c49a6d6ccabc9f9ee5f0252531a13ce7e27c4589e91a733f6c69347866fb11c8a8e2e83a4d1f4b94a65dc38f0e5d692e324e60da2ee32c9a6e42e9c8423e32aa5424d341f24f68c60bec10f36e2046c8fc00aec67d9e972c3a58cc1357cf40ef53b95da0bb4303f05a327429a5c14e46675569107f6507e0cfc219447348c699872da0090c5c285dbaeec452aa11230c0f20d24b74fb813138906a1821185e2332fda57925501302cdd8624d5e575d8764efe84af81e4be77b0e0f0fb18c6c337c482916ed503ea53f347a5985b287ed20efcf9a482537e7425da48501211170f32949426a0dce62c5f366f6ba63c7411024af9b61e746ac6a4a4c76ef125ff623f26948b57193de5f46f4445efd376089bbecf1a2ba6ef0871a11e71022e3a6e9f05860ccfdd6755ca684e98fe96f180043130c68a756d10435fa50ee4cbc51ed326d3148b2a56d1bdc58234daf873e583a72936974c7401ccf2e59e5eb528c88d8f05651bcd5eefecb65d45810a1bfb3f0440348fd6762ddcb9cd6da99112ea2a5b543a6a7b543e35ef1c050adace683c610e6c5adfbe5098d47967809f3be99457665b5b51fc742849eb0a4c687d04072f9c6eae73c4a8868f42278040b16cc1009715ddf34c2fb83975277cb8ac6c4b661d8da0613743f6b9d4671ff57dbce895b86870380c7615ab22910102aa7427df70a01207e8c04cb1950ba4080b3251047b7b5b21cf2b72b2a2960524632e2e999288906245239f8d170af60231a1f1386b124292064fec4d40f54b7e443d73889a2f50bbe55359ca498e252383d894c4183cee3528605980ca3c6750cd5edc432141b949a1c8b6ea8ee74bddf50cd4493e1441f4f3d51fdbd44a58b78cb5a410447f6601994d2afd67b0e4dcf35c8915362b50ff1e824a84284bfbbd048854d7bf9b72cf9b7a0cf5baba55f53f08b899d8670377190f5a063929b92dbc8ab0777f4090710c31d496a51006316027caf3fcb8fb150d3383fbe21c1cdc62cecae3b0a121562aa06c4d1ec6900c9c27f7ceff8753316b6e858539b9e949bf1edd69ef7dd1641db9dc384a03a2260cf8814fec6ce60e81cadd72104c4c2e99a6a3430d573143b8b612bce9587e548ace699c4b331492c2fb1fcb957522bf7ac22712eb415d98212a6a38c54c27c6b83078a484db5cda800265967e6787728b939c3fbf7259e8d93a379190467f35c38a74969ba0aebb85db3f495a85cc53dc0fd14b35c44399694f496690de59411defb57c67988575f9212b5e44f6572c0b383d4e5fc774f4f80d09c6e9c8ff774990f6b684f31ade0dcfe8e8a77e1df1fd1626be55d9edfdbf7aba42870570e958bd8a62b23136e719cab27f217edd211cab2cacb03bc9d63e380fcc8a327609055dacd1a9edf02e109bc930b65205ebdf05dac9dc93504a7984c21cfc5d45259cbc2f9baedba3bdbf6cefb39bd7dc4ac57a86fcb0111ca100919965b914e9d918d5d6d29ad8e7bb3184224ee796a6a32aa967fa8ec0e289655768eabda6d36762509656a50f7cc44e1b9548cabee9cc7d5d3098cb35780e495ea6c43778c650db6b3c0e52ef05c8a74d45c776f67734e78a3b70b4455ecb1b700fa23aef6cfd216a2de4b528c7ebec373bbdd7ae07b0cdd2de035c49a67160ec3c8a703cf532a33c7c44570cd6ce739b618375510c00af772aa13c13e73580602f1db2f0d51159c5424686ddb4e8cd6d0b2265d46b8085c171a6640c34e6a5df9f0dc9308620e310accc6587acb62e04c80325d017de5d87ed6b4ac4eb5291e9a5b3d342c1dcb032466028e9ba2f7b51cd1ac4e4086f49efccd2d9fd08086a1258c18d5314f68e587cdc73cf89fbac0a2f40265569375f281e7e0b8af48dd041ca01d20e1c3404f78f24b63ec49b7524f96be2f257f0e8a1f9fa9ea3668a3e27bc6348ae261ce4d8fb3ad765368172dc7ee9d90b26dc9894d3fae33e56a759eb525845a9c930239677ae93707177f59f0276d37aa68f828b319bd2dec34d6c21bf8ef9ad0083ac4530a65212dcf9d1d486b7833f0663895c6cb970d5e4bd8d3229619a5cc3df97204a138100d8400f90e91aaf497565e782a2322091a997faa3ae3e239f8c8d414ac2680c897e8431a81711b14d9753c9cf5c248a97e91fbc197626214861012849c54b7a77e0736af117cde2176312686e21fc5cb9439d2965e472ec0a9a90dc8dff5bbdb30f613f02faa3a8510b26987427e0400a3dde67a95912671712984afd402cb0748a5cd299571fae422b71f769bf71b461e8b06bd06008bf43900239925461ecc18ba72c80077723d7f629ac1157cd2b368b77fceb38093ba8b4c428baedd48bfe0767c9dfee188380d1eb138ed25a7076a856bdb9277f01fc0330f43af8f50945d2ec4ec8dab0452440dc3fe418c1a0b395ca90c989ca8783a2436254534f6ae6136624ff77083f4a32ee44079b79d415482c1bae1c1e9cb66bb0192a79e76fa4c9aad1906460882276e5f74688b87dc7d1190b1da933208db1f7029b694683449603e6bbcc840123507431a16b8bc4b0271186e97745656a84c4d1f7edfc23fdec79fd2445aae7e7daefd5cbfe5beb8dfc7dff22ffb66566248f612f4fff3b3fc8b3e4e4cbfba4ae3600ebfb14a0c2e53eafe1cfd4b1fc55eb7b5fdbe2e3ee0e08b4ba2708e7a51d32f7c49a3d6d79d7eb11fddeff6ebee1bae84d08abaf989fa075d5269378a933edbafac0f66a582b236a0e463cf7e6b637c56651799251bf552f971fc16ff58bfdf9fe5b772690193ebdd4fb41f4ddf5da5ffba4560a3c457798fa9e8e7fdad7e105f3ae06b3dfcd62a3dacd4d6f771fdb02e3d80b809f4fdfd6c7f2d951834a9fbd3dc13569d09e7f708e9a41c7e56df144a109f9acdff44a584d016cfffb7af5d523250e91bc88d8a062a204295fc62f7c35f628875359f8c8ad44a51c0a0828bb60d19d2d19cfeb65f79ffcd4b1d97a9295822f855e8282164b5faf73bfa9a2f31644ddde927d687aaffea3b674902b886a46fa97f9cbebf3eb04a054a16ab9710e698645f2d4a06c4af14283dc0a7f8b914a196e2eb0f77685eba52540543e2375cabc33ef8dbf4977eb3fd9a2d45e45739fadb7d5028119cd6dc97202eb2927facdfff3ecb0f4aa50293c5762585888a929608c40b064b067e9ba30f2d2584ca26abd2c3382dd14f8b9281624b50ffbe12435a18cfdfa50fb852416bebec4b1021aa282b1188150b9422f2637df4b3fc4bb3464ec003f4da03ea8c0a815a409855491bf1040a0a34969b78da45cae78a05d96c8085a5523f59d17099e21f32c0e75e7dcf0b099fe564ce23fe94a970c4fff78cec035c96f45dcf31cb08ccc18c67dfae006ec22585d63015fbadb5468844767777776f6e198d079107be0727d3566911df601d6ee34ffc317ac12b4d8c71c255ac6ebae9e6149a1aae628c2e7e6fd6e7fb106bf1ce5d50716f2a177bab2d36ca36ed92232a7dfcba5d78d761722173ae42b297b573a46851bfdd39eab86774fcfca00e873ed0c78553242811a449281125aa15aad40a55eade745050d0e309d2a4ac4215fd58a623421af4e8101da2437488c8720945113b1c4942e395f3843403680ee84810edc88d9600cd011931d2364c83bea3c21aebbb6cbb82bc7ae5c04d3fcc6febb6de1d11feebb2f636001098de399c91466f4677b61cf05d3817ce856323ab2023844ef5b2f264c45f892b2b6ea53ec7c21d69f19deac59dcaadb0b823162d3aec8482e1a96ca1efd85452aa5eb4cdfae96e571e0c7a5ed6dc3a7ce66cf393ab9cc55aa742e2452a2be49e571ef0006fa92f7da360ac3c19727bce028bbfe56aa1efd89eafb2bb53bd7876eb2cda0af624d2de58b4977fc3b6a5af6df95c513d19723ace8ff56f51d37b05ff8a84815a5941add4959587b1b2823aadacac78b52c2b3cac477ac1f3223d0f86975f9169dfab5436372f07eabce37277f7cbdd31a0011c3035c8973d45b5ba242e5f0384f5d13081e1c0800670e0a894c277f95a21bcd1e4ab540f5b5d5bc3049ae030ff3e27da7c8b03034f46c0a4866f423b005d62701c7ae781d4797150bcee4594c8e5fd9905d1a19af1a543748806d1212a6a0fad62ace177b588873a3a4429ad3ddc521f50655ed6bd41d2206def0155e61b923d9e47c4535308f6b7965a6aa9a5d652bbd1225bbd526a2db5d4566a2d8f6753a318bfb514fbbfccba7d2a64a5f0264c34fb34880a395da2596ab3a9e1faa42574882ea14c486eddda6c4bcd3e214fb0ede968f39fcedb0942ad7d87bea3569ac45a1a849f0a3d18ec635a54a7a54443d9be6f94487bff96dacfee953e2d47f64c6ad6bea742da467dfb30b0621a0d7244efbd4789e87b7408e34c710ec234d3a107c385af20bd67eed77f9f1d70ffcaa1f786af0c4b8dc6d49083c38da946463135e4e0b08d40bbb38914a2011cd1c83e2151c341daa3f84bd90c1006aa6c9048a34f871e0c8f0e3d19f471b6e57041f9dea741f8e910c694e85a3a8482c2bef8bbbbf4586b8d373646fbd856a94aa150aa6affee1a5456a5c2c18938464682628e168d72bc4179d4f1167a5d606ecdf1965a633a7479361db81c572143886ca0d428bcf1ccde4eadb3ce3aabe31aebbb38e2cc6bbe57df7bef9aef3d7fefe1883385605ceb8c39957a566fbca9457a8868f5a34dbc7930f8dfc843792a116d4222eea2823ceeee1e3ddb6e0586b2f7bdf7f1c520dae615be7743a38ec3bbb788737334ffaca91eead850bf875542951f6910d68a613075d688136f6c51b4710ffb77a18a74e900c4b026180e6669ecbdf72c2cb1f7220efd6c696ce56a65696ca1fbde208f3657f3e9cd200f911d1c8af4f0089944462ba0d5088490100561383a005d2ea3a8cd7933b80383b8ca0e4ec48143b4f9978dc312c7a7fb765e9d57e7b5560c931107eb1a34c7569c27631ae567801de465e1cd9cdd3cec833e5ecc38e6864cc480d5361ea575cec7516d68cc754d6f2c83019da655430821845e61b6e9a893d298e90d5ae35218432184f546fa32f353dea27f7e0c6fc17eca38c1b6ac49ec44afa759d4a486bea3d2475f87d3806f5c7744abbe3216ad3a609579326ed48bca509a5fb67ecebfaff5e38c55315238c0896531749d2f9ae55854238829da7c5a6bddf6ab8d91b1554655e291ff281486a95231600f2c5273a46c2a6561cf935ab1bcac94523e04f216e863a5832b6fa1f4a54a4fb31764664fc81be2a9ab5a5b04189bfe9d4e25181ac5a66c7bfe32a979e6b41a6e9470f5a6f59ebd6d651b0e9abf77e446d67b68f95b6f6f94ba6bd3fdbd7459faa32ce53fa1206fb148d0a3b9bf9d29b0f82e46f74871cd2ea5a4d4df5f29618ffc0981a8b5b70dae2ef5f779cff8e3a7f2e90a464c51fc9e23a5b9f4f797f815a10f034bd9f63adb30ff408c3b5a14027b3c2571bc315e16f6367eefbd77ed2d47ca5dd97c9b6b117cefbd276b6e1224243fbf234d7e7d498aa6e73491c26f7c87275726df6e1f33f4496956f676e447a02fa249229a7c1c8768f2efa49452ba73a4b499fab3a6344a618fae315795f2644ed0872eef5dec3e9cc6dd6bbc26460873861f8fd7788dfbf01ac8a33a3cb2c2a8df78cbad39e5553e994a59ce39575aabf31a5a2badb4665a6ba6f4eaea3ebc858688f3d4771f4e53f726c46b7c08cd0f099297af1439e7fc4e937574ceeec369fc86669cddc6aaef607e5c8af969b65ece9bd2af2f8e7a4dfe4a379af3f59a0703e93d122669884924fdf49ab21229bb8f9f9191a633a95922241ac5e14aed21812efe147efcfc2f407aff943d2499d75cd95ba24d0dcb9c66f4bc8694d1c71e12cdca1c91a6b3a8e56c73f4eb9b397b3c9afbf01a3ab3a36461636fb823992783be0c9591b191b1c2e6c6dcc080fd2cf3bf18191cd2264fe88c62607c7645b95173ca29a79c725677f4acce724eb9bdcfb956e98cf4e77fd97c313776f0d7e389363fe6f3b656d717818c73f2e47a19a3a9e446612163a72b43df616fd8ed59dada981bd51d499bad33927930e89cf79e916f3f67a9036a9baddd324fc6fb1b4f86fc692d96c158e6c9c00fe33212e3ac3ebe99b31007389fca97911287172d6793ca046f3d21b062a8875816af2c868ae5c553d555dec387411f1427e98031c6d846bba294ba679de3fd30c6f86936df9352bfd31a0809349a3533a74599f3d3cb6d60a007a896df9c92becc349d736ab7a15ac3b8f564fe8bca909f662e252c66a4160befd459965206893b50c773b4b6e6d4f1f9b8362962d8dee2cdda5441b7559bf361f3ceb1adbe785b7aed19ebf5674be74c73a4545a49c0ece5004aabd866f43dfc34b3ffb28a6b8c945a610b20ec4ad9e94bd9e9513278a4e448c991922325d69112cbb22ca3a37f477eb3b9231d50899192234bc99165a4e4c86f945896a5c4f3e552a49328056ce24ca2d13bf254dcded166edb92bcae377cee5f41bf6f1dd95b9236d5e8fb27fea27fd29734e85b4b749ca9135cf4fda18db3aa0e6f2a3e67b26ef0dcbba672c1aac1df58e325e303e9fd333e84b739cb4f8f2514a35a0d1394fda9643a30fe39103278d621bf3148a6b1b4a7f7a57317d6541a03c7e32a3a76c6635bb8a94d69f32d3eb97c95356fa29f5a364f84dd9e9adec7acf188c3f5272a4e448c991922325aacb4935702c31c715e7565856a453adb0acb8ab87952703f512f309465db1f2a6d6df4c53eb611c5b197eee39b4f4e78781fad58cb1ace46785d05a6bf761fd7bd735610df7f1e67cb386f5f476d04108ebdb30cb207107ea78cef61b4fc1771f12befc0d6f1df2a13f2d99a4747f7d292365efdaf2611635b81d8d1adc33da7a18ad3d831fd280f74c7ca941a9c509379432425d036ef701b18dfbf9a57395395d9b32c8cce5922943c9403fc63765d897a026b17d1296ed08632441e4a1dddac1045b7c3fb0877a319f60d4f703dbf8de7b984bf27ed017f36c625e8c793fde7b3f627ee4d74fb39c39ec2d0c0555eec532d25ffd5646baa4775a86bc1f0d127534f07d7dafd7597e2cb3ae2b7315832a281835f2c07e91cc19371ef5f1cb53d62ae14bfc5085c239edecc08ef1674e29e54fe971469bf833a78c3fb5469bf8d301e84222ed970355e853cceeedebde507bc324c57b7b94bd37d4b5e6635c026c46bed468f616f9546efaae0515e37c81c14ecba03f08ec5ddbe034480f5d5afc4369f128d9292b6533bc05ee52e6349cb6a1b3204aa4ffbfd0be1c1b9c86e97129336575c68ba665a8d99491be94613f33a76d803448358b219be129fa1806e7cf1d7fb46b27d8a56c6f95031da24310def0efbdf7e20442ba8e40b54f87a4a4415448ba478568101da24474e83d1af4e8500f548136481a753f1827401030b8e9908501c63eb099f9528345d84173417340446042c39eb3b7ccbd3d06e39eca41807e884829a58c40d5489894525a99a3e1eaeb0aa10dfaafa719463965508594a13c969d1e06e28742c91eaae03f6518cb4c4fca4a8f334adf691bf4be68d05ada15aae087ef4859766119ece3f7c0d382b0a06555a892927a7f1d175dd7755dd77559d7a5f565bd774197c419f9d589f1de18dddd2dcbb2ae65b90fa7d1375b567e8cade8d52265589ebac66bbcc6a71377952aaa6066615959712aa7722aa75a614ef5f2a2e9df58346d451d355f5959d1785c4f3e9149741115a24474880e5dd7f554e8a249ae8b0651215a745d991651a2291fbef79efcf72ecb0aa24374086eea0229a481242c82e10afac02250081681401008ae4ef5995ee95dcf7aa7bda93657544b2fa5421fe8037da00f0f5710ad73dd5c3917ce85037dc7bb6efc0a82b95fd7cda503e358feedd2b972e0e596b5a9f52caf4d34ebaf7f99b5b71c8ee8c2b97034773d0a04df186fbcf1efbd3a5c8b33c61bffe68d8726037d87d67fc331b9e18edc9133c2309927e3da2aa3c92b808c600264c44aa51f67526aa9b5d6e1584a2d5fe3a018147fa0ef88ab58146de22a0a694dfa2d0a6996a51f4ff9d0bdd333bdd2bb9ef5b0df54da3b992efdf8adeb6131e7edf8137fe24ffc51d515b85f39eeee7eddf865e357107f7107f11d9d2bc7dd2f1bbf74ae1c272272f79803ba6322a29cf1dd399cd1295324ee4494880651219a840a2571244594c8522a042325d25acfcf816d8d3930ddd6d63b674cb1ac4215fad7dd3aa266e99076aa449c94524ae32a16c12227128a4197c655143a9d62d0e974ca50990162304f13e54f17be802e6c28cd14b116a817de4118efa00ac67eb15dd82e4818253df62500a0ec53c954226117d534872afe9cf20bb75544582442a118f726e441407005297631c278efbdb7debff62d7d6d51747b95568a188a0b1752f45dd8a8bd5517bbc5de4e18c59e3ee98577d3d6f1a42f9130fa02bd2c9aa23a6594db21c4f98ec5a99ccaa99c6aa5f2192f2c3ee75455f91b0bfd8ae58d9a5c5939e5b902b781be83c6757c388d8ee7dcdc9cdd73ce31e6cf38eafb33ea808f67ce274dbd7540ed625b47d4ae65bdc66bb2d32278d35a6b5db796d66b8c5d381fb3b6cef8da3a3dc8e63d6714d4a308245a10501137d077dc60e24be09133720e3a94d65a5ba1cc29cf1fa4a42e21a54e9d3b4d46e8bb648a3aa0b4b085b0c66bbc26f2b05c1e41299d95d26d3d965dd6c4175a1deef1fdb05cca40e5544ee5544eb57253b2d8595fd071edd6e12b2b2b2b3cee8b3e70772e67fce8a67b38e79ceff62f9cb5eef8fe325bc6e30e8c6210f41d33dac4552cda6e0c8aa888d2b6d72de83be8c28517efa00ababcd82fecadbab051a8d336a952aaaa8281f230320755e2b7d85bbc09d7bb57b9608f84f2a627649a6f3afdbd26d30b4f4f7b663e4a8b4729612893c9f4b088090ab930994e0f8b9c4ca8877117a647a15c38fddd27d3dbd26f2a8d04e3858b538bbfef01f04f0800208cfd62bbd8a74dfaed85dde2dfdea87d4a9df616b5bb519efaa0645be9670b1fb099d2a3d1019b29bd84ff5a6ce853fa1dd684fd7c528bfb3423a1eced74bf743704b20fb1cc692fc75b4873884f9127838495eccf0cc32e6ba373453e14419fad016f7938feba56806d2f6fea803d6dee179819d7c36b7b4244840c813eb0c875a51461d0c59a10fa3811b6c22e65833b445e8f23925406915447527ae54829a594571029a594f2d2b97264a624298d88ea8e24bd246a52b298560136a35da70736a3bdc785f364506fa13dac1d3c875e38ce73e9b88eef781017e243bce5fdc391fbba79725f3897cd8dc42ab870a4bc74680c37d886a23db0a76d2899827a18a918aa1677e15c37d4e5db1b8f8dd28d887ead744fa20bc76a62efbdf75ed335596badbdd7ded3e96469e9a935992e1376f7b4f8073681b5f75e6ba7b516ffc02ec026c0f8fd783e30869b75469eb2cd005d50fef4ef636ee0d8280d524993145149a92492944852936559163551222aa98ba7f272d182e6203dddd47ea964313af464549d026c463f22396033fae5c8d79408cb2cdb7fb63eacf8adbc25fffb969784a868886e2a4483727d8253f0840e3d1b6f799b1679eabd97f1ef09c3c13667241fce017bf0dd939b0ee57852c6ebe8101592348852496bb47b0301fd5ae9cb8ce41615126b1d7323e6c6fc981b475a6bed8c34ce575b7fc331b1a6186fb17ffd8d4b974aa6d7264b514a5ba3c8e84ce6c9b0f904d84cde019bc9321f6364edc5393fc63219039eb2f662bd659e0c7be3c9c0375bbcedbfecde2a13537f38810c066aad3fec20636b95b95163aacc46b70cc9b31530cabbd8027b8b4e4aa9b597b5d4b217b659db498ffdd4b89aa0efa896972cab5e56c92ab98d568a3ae6243dbd50ef42e749fab9b769bb28d95d31af21a1c00769c7d8d47a3dc93ecd32b6b7cbd6ea3419e3eb35eee3b600a340e537f7de16f8f09a7aafd35cbf736f3c7460707b0d8541c0b04698451610c896b5e7a42f736fd7534cc5a26d8f9459343a35be27e83be635af77ab8b625957b645edc25e050367504e2f1af6d7de586efed26963d75e99d9ca9371f53f4c83cd68b704f780cd68a19518967b2d9cb5fe9c579e8cebdfdee12dd77ef1d4bdd8ca73ab9e8cfcfbfecbf0bd3c40413b96067bdaca8bb516b300f7b0f22cd75a20233c013282141afc1c2b77ab9e8c486db4dbdc2bd4b315a49452de7046af3e1bebe794532666ee40a90c0d1af5061a37a3efb40df57a10faf33b1de334f46ba8829d5030ec11645124824230c8531102792ac60d57eebcc255b630b79d6ee1e2492654e6a04a8b0cc5f796e34f10d3204ce51d73a4b478df5deb13dfd555f439654a057bbcd6538b97f82ebe050a053b650eaa401fd8037b600fecf15935f1813d3e4460f0b71708218470e5b3f259f9ac7c563e24b796e019628099e12908378ba7e0c6a26df237fc726f2c133f7c9f33e75adc784bbb23ce7be5c9881bc2799fc6f213aec0f71ccb8c524ad5ca83014e09a1dd99f38c339e4eab813f67788b4ecb40afad94c77d18074e33dfa5b375f1d3d675339e733e39e794734a29f55ffc59e239e7a4739e2e221924ee401da7d16daebc9bc6472dd5b4529a2badf9a239dbab33030081ddcd5d5bdf3d63d9dfacb79b95ef9553d248e9a39452fa9603a849ff4e6a3f872a2d2531c1480a8941e08eebc01c4f4578036fdc8d93f4dfaf152ba15c64ce5132e7f6f349a3d7de52346bdf14cd499922ed9ef19734f8961b027932dc8640604e8540b0ea100063788ac5533025466a4bd1628cce21800129da762345f57203e406c80d901b2037406ce0cd0c5781db49a329100810bc8140a82db7709182ca66b80a7c17598b0c2583406c80dc0001b9b101f260701008029110c8f637db50db8c3ac321a0083643056f201023128ea6335e6fc5bfac8c5a7fc392c1e12dd66559ff740d4b5b376470780bfd48ad2d431f631e628c94521a29b6324f468cf15ddbaa836ec9cf4f3329636d10e54ed4811add2fc753316a74bf1b4fc5fd6ce2a3f1a772eb7049b77ab3469dbb599e8ff7cc9a945ab4beeb863a0251ba1f0fc6b84f9e82303c05338d31c6e881a7e369930359937be66dd47e4fc1a7a1a1a1a171345ee4d1bc222e5a67293f1e0d0d4d919ac19421605bad5e69ac1560f9243a8152789323269e8a71fb124f45b7f5e72efdac2d7e43997e3a940c7341f9fa2d32e754ea7c94ec9499b27a9dcadcf6e9a5d8d37727f60c16ed8e9489169d98323e5ff29c5892e31c752e2f50054a278c8e8c9c5862e44e483f722377c297b81352ba9114c17dd120c6dc029c0651f0e54015f8d62de0418bc9f7fa1f469fa52f0248faaced539436a765ed3ba8338cde32379c5386fbcfda4a37e61040d2207477087d893b71796909dce3c289174ecfeab2b96e80780112ed105d3897cd8573e5bc8b5e17ce95e32d94ce0be7bdcbc147e43b041002067f7b41170ea4cfce00eb80cd4c218f08a48fe7f5bc157d1a4da6178daa4eef82dceabd6dfacd11bd19035560843ed4411fb872077de00afab818e8827ad47e3d28eae5de502efcdb1bf613bad82db6c358567a52e634bc9d524ab15dfa1ef3e19749d8971ec66bb51773daeb514d7babf23d2bdb529ae52ad6e76afd865956c9ca01da948e9393718258b3d62a450e971436120a43cc6065031f5560c24313ab28888ab298821350a4c08729502596dc0b5f0f5b356badad75a5e32a2e481d8211411579a09490aac6aae865f5842000a9800745f81045110dc9041422ed222d003284831824916207b1d629048fc342705c84103d98ae2c91cf7449c0a20a262d90c1d01446f0257830a28a204a1032032338b50128f8418a2740f41051441228284139e20547d0c1e2072645609292523ec1c855dc9226313cc1092a86247a7c6a5229975001d0100b66a54a24298a499008a0023a28d103249230041ce8d0904f7a0042510d90786267882b50d55238a13442c4555c911a468026aada4b6fa549002d51039358716a31850f1d1c94e088201091811b58f1c4aa892b18610326209d269a851217280b29d88f3ebc189808a29949a8a011f2842620501343dcc4e0c48723f85c21886687c69cc2cf91279650c40749442186269cf43c224b2449410d129af0e10a4880acf84193284ee8f4f0041b30618417bc2a2ca9eff90f9cceafd39d708be821a2c6e8843ad9e8117282e12d4e9340b8200b80c08c842229e0a226b701444041e3644707258034418921563ef8011151122c7620ca62043e30397244480f4ea08044114c58f14b3052851f7050052b04618377819c253f58220b39d81451844512ba093b0c11842a68941801e4a55adbc43ea6d947c1b7b6d61d1faee26c6a0eb68312f23caee2767aa47c61c24f10ab830bc2e0553c8f8046601005363272c512ea12a244415c228925a210d4e409219a2508e185902350fc20f2441446353092f97e9e327347a240a24d1827d127b2308db0c00924ac9a22871e79220a5782365d0b5502390950b1c41548e818e1c80f51155878210459e400c48e1358f4c002eb1c9e184b5805d28a0918105194f3638a2320147488c8c1074f6630c43927e4e86044100d4c100415434514a187171b009281911ad4e0c90a80a8f2d1179f1342a894504881bc91a748a773421529b855b4e004910a4ba08a93d12191044fbd6206dafc1413d0981f4335e796618994281eb8104b86d400054a84d8028f27a18823709c151430851b18f53c410727680289e5c11389e68e00718324891ff4600b4f527044921cb8d0931ff5a788054e401384cd912453c031c299d834a140b51621849c9b7d48199020391de0a708550cd1230b4447146087090e0f5cb0f3d343432221092dcc24ae38553a91b0b148b4a0ae34b0042576c842084f1022c911ac131d786074c4109ef4f06aec34c9f38de4f4601aa9c141964664b08326a526b3a48188215728320262458f1bc12348143a9002932a0479014ecda15a5b83094150c5551784c511a61124f0708d805dbf97c6559c0d1cdcb88a93188e469ef4c0f6c018cf79e4e70a0d051f8af19c478a905845f080021d44051428134e424085901c729a60740429901881072b820449220818125fed9cf74251c4551c50157215a76d580c5014a11e52186c28101388002b1d32afd003f8c4b52fde2bc31548a08ad33418c7aaa6e466075b30c1147cb2b0aa8012541cf104092dfcc0021ab2084d026171449347b030c28e30211e99c209012800143f6c88e0844606450cb17901107a807ef820c9a908d8c180fd4ab32ec755dc8e0bf1188e78bc4a7905219a7c1851f800b0c04eb4ba11233e6801c80925a0a726f4909b00040fc00808092972137acc3900a31beb954a26d393302c2321411224454d01d23b0d499004497b33fd3b9148afdf0649a3bcd3364c7f914a190fcd84b2e910768296f5740d93e9b10c66a4082312298de65c426993c7a6ec86fa39a6620fe3d6aeee0da200c698d3a6fd8206d3ebb761c2f40503796830071dd2d7661854a9302faa94752a042fe2292752c38b4c0c6db6e166e8d1eecbbb37f832c0a75fa337213dbe97186736300d782741bb8fb3a7757d5df5f53c3499634e6141c021404e27b106c65936e381a7096997ee17faf3bfd0db01292defd4c518df1db3faf6619c8726e7140f700878213f7e4af6426e07a4b4f8f9c9c7a3790ddc013b6f81cf21760f47e881978575653a675b4acb8f617683a640fc0a35d450efedfaa7e16398d9808f7dd434c01d5fd0a0dfbe0dbd1d0f8d7433fdef350fed226de8833dccdc7dd7f539cbb69486afec86f835267edd302e2536278a02f4ebdf40bfee7ced17345c6fdfc6b52d7cfc3c349823657f66288c87258174798358f15fd7d6e37744dab5b21bb0bff6120dfff530fe3cb458836d75a5e18f355489869fd260fd7c1bd6764fc6568d34ecb465bd0da759db003fecf0d070c643bb34609e0cf8573603548110e660eaf165a16590786636eccf19f5946f23bedc4ea3f55a0a6dc40975404d42b7427e0aaaa4ec20ef401581804117185f9dfb40d5ecb1104260fe2ed6e832e7b1b8558c9797193028d73148c6208961b80b8e140dc6d0208b0667e0802e2e1e5a58e9d4c2df05cade6a6993f686baa02aef2da571b489abf85343cc043c05e15f1b140a85a11e91f8938960fe2ed6ea04593336278d9e9289b92103033bc960f0f920c69a8baef5f743f592822a98079807f039cd3fc3155c5dfd103ba2c72f77b55e34c7af3395e6fbe1cf18fac022d067861a1ef031d0256586065934f8348606910c017d86b84e6b805d0a26f27aae9c2be79a461a24ba702e9beb663f22249e82459e82cea31119f5e0c2e901b4894f0e8167802ef4e3d7005decc78fb9e12d9b125122a70f557cef08d0202a448744a081ac037087a7200f1dc23cd1a50fb04b71b166164f3dc9429da41158513d196f25258575b0b265d40156330623cf9d1663e24b8edc759130eced452abdd24f198c613137302618c3626e9030ec4f2712ca5f28d892b00bca3c184a6f1f5f5909db601e2c8b3196b59591de9459af75696f240be38ce90b63fc2fcbf9627c736cecbd37c7f260adc5f65e6cefb576cb5493e72b5852313e050503ab2f33601ee0b8080b05658a5b3cd5a6d716f41d16c7a2d37bd1267f5c657cc26f595128dbd293a00b10055d989e3e17502e4e2fdfb43899ac7d3fff29dfade38f36d5e894e0f530edf8f3687a609b9b9cfc26bdb7bce30f4f14d2d90982850c21d2b36202d45324fec41576c59f687301a9893f31442115cbcb0c98198060dba904a7f8f32718a894548c9e1513a09e22f127ae2eafc15d5e4f8c94f8035db0f9aabda5b4f813736e9ab878251bb8ec62a92aa8c48d3925b1ab1101140033160000380c0c840262d170208852471f14001172aa42644a198923d224c95114841031c618630801034446868ab409f066c23e9dea8268a951f7f796e6869d34b95027106121c5182595a068c61eeb2d3df25c6544ac65d19a4d128d615d0fad5e0c92ba9a2f732d69bccb27c85ece41d004a64b01d37fc6775b10db9a3d4153abdf5410173ebd8d679c7e0dd27abac33338c5fa53aa11b237a4ada1177fc487c463d4a9d931479e1dc8e7b2efaa9d6c111b71d0eb8dad44402f25e9c663c44dde4c563843872f5d377c0203f3446fbde1b44a2c4120d774ea09e03f68a112227c14cdd3be1477349af51dc9862a88e9008d826a5e32cf58890b8b986e8a5b4c58d7f1fbcc9f79898ec1ef8486c24a290c7e3de5c1220686a17f2e9007b7e6da3b18a8624bad83bd3c13a376055db2595064f45cbee3f8ae0e54c29704c51d0fd403af339b8fb3c2b104e020f92a97848050b8e1b18150418cd0389426b2c1391a2855b19e75b24ac3ce643c267c21b26d8864d109e7e88c34fe09d8bd1bf30f701337b6120d5bb868933969dca9955109ad5b47f0620ad5193bcb54b8f062f52980c6e3b436efd8711feac729ddf84c6f962514ef32159354a1cd6c114c4db19c7560baa760c19c875f5dc2048dff77558332c7f311ebf360a79cc50fa0c4401d71d375e76cbcee6275ec6c3867c607770733c671c1860a1cb81af88e56890613f184fed73b0532a484f47af71a68820115193ba1d0ce7c93a7be0741a7f6fc8144dfb07d7235500bcbd5183ffa171782e0cf664d2f9d2602eda6861e44d5cc27acc87ede32d00e4fb15ed4225895de283a7065afb16d1ea49035928f4b1b67d13bdcafad2cf93587ce86d8d1f336cc974afe629c0971fec2e41b0a24d3a1ea7775ca10319b15fc34133c85f5bd49890b1d3aa758a9d97dc45556a994a9b76262f547be8cc48529f937ba95cfe3782a1dbcbc9c95a40b5a714778bfcbce80323fd661e459b538146589ecfd2138eb2b777d28abe472e7c618db0a989549465362899455c43b7944fc3e687aee965c771a393ec07725e38925633a834596aaa6fda958a214554e5e329e165888100d887a75b53c76dbfcba6fa3368f8f262fe51d72379a1987e2e9fdffa677a412d301161dfff2403c76263f4e660f8e07d66dae48d09a2745b150778f992692169e217022427a597bf44aa24e2b55c760e14e80366f447e91d71472a0a7c05bda6c3e0cd259e05cdbe9a992750c41b996defe30c03d71ee35a7be991f685151e71c237221c3aa755773524f35bbf33a1268b79b0ab10f7f5c06e5187ef97786884e9560c1e0bbf1c8b0bce08021382cc06202b36efc565415be9e65e9e5d7c8e29cf2ca1bbf86ef4134907b2a88dff1579047a6c5464e28e3b7413fa562001bc17cddfe5aa58cc8f6f123d4305d2516ec3b2b97b87d19a87c5ac402f2cb0fe340f7ee13c19b8e37567cbfaee9815c2d3c2f8b76fd2ce3508e09726a78872293787a919d3d837eb8661dff64af373db130c6860709c737823fd02ece8a29a82e80f6f3fca155d64800c594903dfbf133c644aec3f1213a687b5b9ee95ef4016c5c8db3c4721504ccab198f2e53e6c396f64a3202fa6d4f29aa8ce07977428ad995914e295a7b47f0debabaa66527c0f1eb0893bf4789d2e8d75ad7ce9abc19d366d2a86467a4cf7fe0853d517519d0e70b9950c95048921e7c21468a2d7372a1a736b427422539ace11c32fc534bd297a8190f26dfd9666d719fec21229e93ec120d97a884de466dc691dca7a873690887442a378689693e145bf6866ee8a557458f94ddd2ab09376bbd5470489862b825b59abae1ec906dc04481c618af328c17345e5920825a5bbb9b36e089c88693de8cfe9c801a4599107ac04950f877b8c16baa260bf9f73cff73dd512d6ae253af1581332aac86b23d8d1865c37a55f63a42be86af10c5975232cabef66278fea498bc48ed9cc18b95d25b2cbce1e6c648fd28c24d6227de934897260e3a077ae8e1112828c1d64cef493a7ec064d888a69639143aed9a0cdbc3360f058dde724ba93b9be08412dc9c489954324ac5da6307ea9ad0074b75636e348a1e70ca98b4111207f74c629f03440cb34e7b865511c4199bf1a2829dd21f67c68037be80598c2b42d8c7fa3fd3b2ff22f6a02f2da2fe2f36708b006aa3bb9594c28a9f69a2032b6e030c8b135108225513f664a2e3fffcfd3122d8511db220606acfe4445e0811eca4af1d9843facdfb7cfa078d0129404eb4651409a7bb0df64ee3eac2b2dd44cc87537222baebbd0800ccd12e4880ca8926fa69799f4e105ad8ab8b3752bd36529edfed02e80d5ba715e085b38ae3292b5301c2079d469d2a510511ba4c3e022f1cb4932a6a11b7eaa04e9a67d9cabd2c78913e4d7707528c433f474a714840bf85ca8cacdfa7037d65fb0ae027a10d4ab47e1e512baebff226459022391d0b9220fbe05330941b1a44a6740b3d6e9065f78ccd0e8434ddf0cd7bf0a041f09f2e53a93dc50db952f446cfd066e81de88d630fa23de0607c0c166e70938b42530a0a3c7c8faa764551936afbad0f9f7020228f62d024146ee6e0a09192ab7e32b7bd1a80cb6bdde74e355e05e2f47971df2b4dcd656cee612238aafc227097e14aa4963f10853ed851277f8516dc765ba04e4b6e2f82fb5f8b919493afc78c82185823ef9c83603d2f9986dbdb08a88fde38b7567d83598fca234656b1e831c20ac1caec8b860ce118223f88eaf92c6bb8b302e4d1ba59049e0b47c5f0e5a7b3c6274fc22289404d135cc56ea10485ae396dfc89c6a50a0a89a419526a65d2a4351cf927d59b164a50864e2a2205457df6fefd471c2d92818424da386ff0434448562a96d5fb33029229957ecf70bf5128ac23d6af81663fb7cdbf5ace95b1af635f678477a09e0765246c70808656fe7274c20da1eaba0f1ac5496da84a90403a81b6300121e9396fde16fa423bbaeb8a3ccd8d0c7f5c409bdb5bdfa3a95502f432aae77be6946c3f7e2684805985210cab5a04f6103821f76079055720b095df9c58ffc427e405f7f75048b17cc169c232852a54cc894195b75f09a5c00533ac2b06daf533157ad7d1f9635221a772903b4f872d07b8cc88b8b817dc280d1ad3beca138549e71cb0e8ef692dfe4555b6f95edc69c8705a3dd11c5e15a5b0788c8ceb7e2e548ada5a8722fb4acbbed72edda74d57ffe5dcb1cb61a2d355c5761b8db0f011ccfd5911c05b8b3e49ea0dea14cc4d0d5c1a410f68b2cbda1a2ee6e553fb08ed78c99b868c992f27dcf9c0dd8f5b0c15a22170234e5324fcb679505d31af532c340c254a2516857ea374769245d49c35fa46bf90933a35040e53495ad8f03b59674fded4b3393764e10c4e8e54fef2307698e27aa0d29988b5dc065c54ec0615c7cc034d99df483035c154520e60652d0a24ee6b375889382b664c1b9d313487e48e1d46a5848d21ba9bc701ac3d6d58d2e460e4ef1c3ff18b5dba27360b2fa0a16bd5709303208c0b226c8a7be809c44967b183e75f6d22ff1036508f119eee9ff25ac0e0e097964216cfe569316eb9b93c682d9e3f1cd059b2fc626b7a79b836809347991b8756169cfb49b399ee6459b8f6f882fea2b3cc75252ce84a417269712f102808301c43638af15bfb5e6137490aa21c21b1d04c6957704b69797b53f96ebd94de606fdda0f0442464150cca187a3b8b0a90294d4d35c8f939c75420c7ccd153d313dd6af97fbe0b304801c13b615624993dc1bd1d54d3d94e59d806649dccc2b14220d217ddc19db3085dc4585ef957c462d33bae686b4993b1ac214e94c996349eef81ae4141f2e8ad1b4c8c7d976243cd27bea6ce25f0de9dcaa79203a481daa1a36e2e910289460e76a1e71375dc0e3b4d506d9db02da7f163174bbd4e5ad653a2bc4c3ffb7a21359a2522c116a9048113a78580973ce58ea28f51523c586a8faf5fd9036d652e5c3394ae73305acee6a2242ce81d08331d894e635af7b7322d2fa9e2d31c66d1ef1dd11eaed3245611949bea380f4d2e5d20c641ec9f67b9d2beac4eabd64e670e8af6e103ddee2eaac1c2038afcf6e68cc7c2a61a9750b724901f196dd873b5e4aa96c44746e37a85e521d69f879cac3c38a69f243a89aa4192d193d34c96ec3e3aa9204716c502a273533d32dc0cf1ccca26ae5393069bccf151416212a5668fef430263099aee5296f06ef24266d852e8724a3809abb399d9c0144348bbb2a1460a4aa997b66436f65dfcad3e11d9f09f5484111e333cc3196c759a793aa4718b4024d15914fbe164c065d21870e53a5eeb51439a8c8388dab7f1ac054770310155ddfabf5ec4e7ba8d8e97a10494ac542e14d701f8b5d657ee90c0d992756c3ac14d0090cc65a730e280752c2d57e9cfbdaab64787ea6b418eeff207f4d0bd665414edb7b86c575af323fabd701a4a4c43101fb83adc6d68d82364a07e8e856ed56fa72ed0a36a79596bbc7d87de5e888b24a64e7fdedc39c755a85b57d35dd76cf248d662d79892e65ce946a99e1d88017c4da31af65d6504eae3af50dd16f41da902ef18b82ca70c524609725a2d9329580c10445195a101020037ac748c5685e82110750bf61ca8bc8353c12df5728b1350e022e310006caabbaf1577caa8aac1a4db8b19115d57efcbaea6b094ac8cc5f0c06920fda26a076f3728e6061290c16190f920c9ce6e7d09271923444319af08fa3ad0601f56476782f04c5757021cc4843d7f8a79f5eb5572777e9453092e7185abe4370ffeca08cdc2ddfc9b852fb9eadf6bed2f6f9b345446db5037bfc14a2c26f366deeece51b48140916cfef434c77c1d848b1b87ee04bee689b864f338ba90c069add7e2d67f5292dcc8ebe54a361f3e1302f5c063a4c65489e5c161646e86ab0741053f6eb2afefbffbad2fd56bf726441a8722db86eda2db7853e266d16dce0e171d7feaf078c4d3be5b69ba9492fd79c6209dfe49304b98f6cebd19b5f37005553019fa3080696ad638801e4b53b068015a31a4808cb0d778fc08eca64767947f45948e956ad2b0b16edaed0b3f0633a1b453aaa19ec3e08e3bcccf303aaeb1da7c20c0be9fd9f157dc383c46aab15f8789e9c74e15bd6a655f4e17ba1853b3b0487f0b9ced095d4a23d2c39e2befe653a51ffe0e8df8f44d14696618b2a393f827919bf2309a893401ab67e230c30bbe8f62d6eeba28a681331b44e0cd0a138ec484723c7cb961e92e3f84986a6678bc740554015d47afc346f3635287b923f046c2e54b35c45ec8daf90407691d9114b5cfdc7052113eb8840c30fa9952ae34ff6f929d96863889f696572b24937a25213aa7a2dc08e1ebb9a0d1f183119a2f3cc0b5cf8708db408396e2e6367f8e69fc4e720e2c05136b7ea151f7b2e41747aac00bdeea0e54f3ca8a9e7b063acb4ab628538c6a285761c6ed675285a1783bb2db6006d69ffb8f78e06dbb09a8ddc25e281f26840f551fbe156d543e4804fca6b215727abf42cc56fbfe8b8cc9b893fc427e721c8ddc0ac96f42bf6b4081be11beb196ec962a00e82bb18ff00a4f6f856d7f841fd726965d6d47b732ce82906059b5bc6e44dd5e92f06f127eb420977c20d9e82641cebd95cc1e5242c8c0f53c1d190e205337b1d364dff1012ced247c835f3e04ce6ff38f67840ba868bd2142446705bebca61de2ef9dcd93670e9068435fa97f8d0f30235a24141452375701ae16e1998570024e11e12272281920c1609450860e209df9a9ca47d7b9cd3abea9ff3710735838b70d05bdc621229adb198068ac4fdde87f02572017f68e389b62661b9c3863345898d9b97e3e9b91687e93a103642aaff745a141f1a30a6f5c06021a966222753b04762bda934441e2dbca076de3064f34ce1bd263d7954f95b40a1fc009a9b459d90e64fcd982e68848b7df3516530e9a5d44c59ae4402d2f75e340a814564abe0ab38c6db3a73637475fa85a7e20a253e31d957964b7ef5b787a066decf2173af9911bc8d45bfcc769d2d7392011cf2130c6d6f98acebf8aade668fd7d460ada03c06aba6147036656a704647dbe45081c47650c707f401ca0872919bd80d4344e4755fd384764ea807574fb82387c18bd9c3dc27389ab72d672217e0c989f14c20c50d52581c308c3c716066fb3d03f9f154e8fdda0f734eadd443dd8c565b814bfa39a42f026610dfaafe5dbbb247ed207b88df67e8ed72db27c9b928e4f7b47f3b90b7a2eef3d3b3a06a62d73908a8e567d5c10eb6fe6ba2ee3722843c6eee32856434f3111c3aa7a8c2424be27d756436f91b6c92f4c29f8f3a5f518f41903e38780ead53f552c626081544a46b927d795f22dedf17c3c36c6791886ed3e32fb72e873188292543d196e2c8cc7a08d48aa8aaa5a3c802dbf8e2af3c8214362e0bb3b0731cb6cab96a10a432ca5da9e3e76cdd7d16403087a3e8ccf1cdc80c427a460b03090f8cf193db1a5042cdc685c383739546933d6326eaf8c97ccb6a452b69cce6bfc1c5ac4b5cb283897ccd00e4430200b2578562e70942999b8d084cd2a134996b322c86b6e850c18069a72bb7c0a6f21bda2c0ac96e7ae799a115471116ac000ecbd1c953e05b502c8abe89e6540a68f945d7fd11d726009531a9d1724d9a1922af31097f3d791c7b0e435c3ea7fe0c63dcb342ecfb98fb89c0e4932dcd625ca5cbed6037e2f43cb8258003bf1a59e25750d31038484d69605c2d46caf7ca19c3008cb1fe1cd4c5a3e1e607c34a40692c191d27ddcdfb4338f0df1cc1b5cb14e0851c2d4f83f653e3170c7dd319f3878981771ca1099fcef3946aa00623e41ad3b30f315ec36dd309fc0fd18e060be6dfbc7e0f9f28d0d9031ede51b437bb09aec7daaa8bdaee5df2d97c18a11bfb343e304fda1aceadd8101d33084881629b07fc495b7a84096fa52abee9c559fb18eed086dd26e2f8b8023c9a8bb17b1a84afa9495bfbdd4742a664ebc642db1f4f83046366b0b33fd6c39dd3c84be5844f4823ffc38dd6e435d6900bab6c03c3bb8036d428f97d8c5bab7b45a0481fad0f448b624f4ff64ac95a9ee925e8a64eed05aa554fea34ea4f45277b6b9359e5758e7863f3d3ac57eb39295c29ece24281f5f98dbfa986716d3285c60484daffda0d2acb1d68ebb94536280b260fc5a91a7293b8da891056a5bda1a8793a8b952cd15f5b3b0c65a624fe42cc5262de61c730c9cec51a083045291dcf5742ad7a1d30c3ef4208d959a0c6717f1e0500d036737b7769571f608e7380229b0de83a4880321198dd79839d334a7b0f8f472ccd781a158c9454f84ce53cb68730add101d6da37215414f584879670bbe41d55f60186b9038dc50874c88952ba4a577e82686564965eb25c5df50652d898a07b3fd85d63c62232b34907e91c7270a07f97914efa69b44ab2df47a16321b5672ef375083b7c4efd2596778666e3ee964a4a809376d0353d3c5c357bd798b84d83d6912126053706e0e81d46e955a7ee68c1f15fb3a0ef7f7746dc16e7d366aef7d83742f181da0b170d783bb1d9ff6e729974ed30f0c4667455094601242f57c61fbcfd0dc1de91211c6463484246499030257a2c5e489bb693294172137ab6af2ef497217919a0228c061d0ba238c4cded1d7b22d1418a02f1ddba7eec24d6532cdfef954d9f0660a2c375cd6bd81dfb1b0fccfc794821a74c7ee2b71f567a554fd0ee791d33571751114a2ec689ec0e3cc59190fddd9c129a2c93ed1f843f5fb04a6e4442b750cd5a5e362859c41a22137534f090a206123564086999a6fb0c6b562a22dabf2c19e10c5266d10d276707332e67e039dbbec27786ed11d263e0fbe402377667bbcc606e71d98a8d8bd814ab2af03f1bc05e8608f45d1218d56dbb0f0a20d55526e5ac2dee31d258ce8de95b6db0ede7f6b72b9536c5770736489713440549ec207442d6db35246d2f4a287b571b7118289336e59a4d1e7d00c582de0bc3f5c8d2e276b626b456fcd7daeb579ad5ff5b9988fb8dd96ee7ec08c797643f6ceade269699a72c51b8a4d198286f4a22f69d81187c84feb3760b707a14133e3cd43ef155fe84537518228442fac590bb76d092a7c4008dc87a3ae1414a15be0b8fef0245e098f0ed64355bff7454731e6320ac5525f4a7ad1e9eaccdf1437ed97d11db6180d9129ecb7d53c4f20c292d2978947f381afbca60cd9c8c78e4b651215433a9853ace0d65e2b78b60a93f45462b0129d98c5b819eda9b1c483946fd9af4262b067363e7bf6508dbafe77509136f373787ca25e4723545eb203af951a5248a8c4286fc5bd53357379d79e40605a057200d18b11b84296f3bae918d68a46da373ab5057552d3d0fa457017b4a69bc817a274f3616c7911ef3bb409df0e511a0b8ada5e5c743019c42586742b66b836e6359b32e24116199b6a222a1449a2dac9e99650610d632e66d22a637624a8b3b05141198ceabfd8d138670a1893c242a1a345392ae961a6126d5afd20cb02047cdf9671a71c8e3481db5409b4339a75d178d5d0b855521cf8e96a4da27ce4de53976a4d8e5bd064c0446e28a1779ba4478b261277fb7b2430a2f0f4ec684dd2563a20d00f224e51d37ed6453665110da865de8ac66c6ee75e992f7c5a4a7a4133e10350dc96e0880d2a4057e74f8068cf229abc5e63904af9721b53b1814006a9b6ca7190006f4b4ff3faab2c8db112e839eb7d78f7bb94400cd56209f1f48ad33edcec55986171e2bcacdd23390de699304c4f99a417d07ee4361b409fd6e6316ba03e573ceae34d13925bcb2674a7e8ceda63e97321d221280223d78f6da2372e6ff73a74a68f471b8145c7af88fa5336e3520b12c863033033d6c028c6dfa65b621e6459535d639bb3c1060298921b06ee23052cdacdce39121c219131bc6c045cbaac5eab4f06b62b079c978333c5033b3138e167aacaf77d861258512a7e857e1d947e9d21e3aa7d9452fd5225f066ee77a152d994131c2e25dce1bfec05e0f53653e3b82d8d9b7207ea2e21074d7f15566bdb2a7059c15aa44d1d7e606006dfe160bd393a045a7f8157b5c6ea5df25296b05c5661ceedf0344ef9c410d7a70c955be0fc5efa2c85c9d090ca1be66f243091fbf5d3a5bf6ead4e90558be86ec2cc6621f7e12febb54dceca4181f253d032736946075f4a16a23b169fa72af00d1e4b8319fdbd510d3122333d7462900c762c4288c8ac7ae183ab8285dc18642d99c752b6d537ce667696193efc8a03e3bcece600cf561022ca4d9078204e8009f53100579a4a1310dff8c2b0d676f0a3b31ba460826f7c06d293d8b3a7bd711995aebafb6dcb2fbd0bce1129e52667d8ac6a5af891741f25dd112e8a1ea0666c7a0aaa2aef7ae3f265548087448ab71a22c891d2f5e9076171e918f0776bdcd2cae3e28df069b1cc7a69632d0052d3e20072bd568288c6aa7d18be3880245e829549ff635e245ed5dfef9986abcfca56a51962890f82c2eec6d9cd66f854bd0406c07e920a72aae0a65a1d7ec340a37ac753d5075548bbe26ae74c9d057fd26cab1820ffb2416bb033a74fea08d07954d3f23ca23f28f78af4bbe81f1c9ff8cdbec44fcd25122079d23bc6dfc4ce14cf166282204d94ce5ca1f3bda08ae7fd5ce1b740829133d28673e14ea01cb5669938dc867c01085d0b82849b0f9b43861f2f065dfff9d0bb6d699453241b2e76db60be93b03c53eaf0288ae203d89f6f20b50184a0e0e6259b123e39130d42082b9167d03778c47e380cf426672c8ffd7a1fbec1d2b1488204ab85361880d5be449d2098356c96636adda199bb51de428630c63af916aa1319848063795f702714aca3e3cb0d5fae930cddb9a0b6951c40a982b9536a439018a6e3414a9c1b8eee41fa77797a9317df5095a1b2b334bef9938ad20d87b60f252bf182a9daeed6b6b0c1572dca1cace5f02e1a4d7ac66e149a90e24537d40d14389d5aabc1420173f86630ce56371fd21f308783b13626a54b279f11bfad7208ee7432872f8962798cb7cb5702b097c4f2255009cac6664c6074eff868be92c8a930d689eab3d21f2e9114990aa256aa00a835878be8ef4e2bfbb23c7e74426d0e0f377ce92cd2870f37870f3d10ca67482169a73b57a3cc08e41cdeac292480aa73b8753bfd29a472e24701f9c23167047b1616d2d7456d283b3ce5706512f1a0b40383831d8eca900da73bde52e331958184bf8f4f0911160bff2c630318dad6b6c652a4d3805a8c41d8c5e428de1534043310d146024166548bf166a20197851734860af18a2d0411eb7cb5f4e30478249fbd36f459fa2319f8a9762b07ab628c9378c589415d6056f05b417603b3546687d89a81199187bd1518a1141d4ee81b98112066abf9d7d1e63e6c97de52ff942e35c4c10c56fb2edfc1bdf05a3b5c0510c6386564722a52a6c618c68bd43ed94500b30e5ff7ad48a49872a5922e5275afb98e6d09a52fdadb00579db3dc51cf66a0cee4c273ea36adae9f08affd6959a86eccba02ac06a7961a36ba453a4e42a6837a6561265b0ddff83fecd62e9530a51199203bdb13df6f466cd6e265013df447d359781c359c1e84ed849ec0ae729d8b34f31d4336bec8444f404fc76e24ebc838eb81a2a7209484e701bb8f9e3ed1ac550c2be8d3eb3f75c2ff26ef87f8c1355c75bd16251ad6662827998a9d4ab1429a70119e3cf2a0986f01028cdbb145902a7920e59ae1a3451c19a8418d22df33e738b11a1e78c2abc2899f79c197bf4d467b2a2b1a47e694eb4c54c9f81e8840ec0713582b1286bc2466282cc04dd8f14b1e933ace337c4ad8216b9ed66a27c2123d6657aa2929f0f70d6e5dadc5df561255bc2432c9140f4e07d84294a828013f22510e4cd167f30d0b0b42bc668e6bb03aac5a791e699cccc4b7488d583b526daf91d4dd1a275152741fa0bba4c04a3e24403a842659e8a65bb4c75ebe7079e56f46a5021388fe5329d410a03fb59874a7b63cbed6cdc3483a7c4d85486e9a9e9d9549e9996d2dc64396c52f65f2d76c96d56fa3bc8f9821a8ac69190d71d4d285c6a1294b0b1d83f9e8d704f0eea968194e65f925df70220a972e4d7af0b29ef7b9ac4b4adcbe656a26b7365fe13341f6ed061094eabe859e09848c66212c77d78e4e87d8e9dec86692c05d504e987f3addad7b677448df42c704866f64ff1896bdf44ed0b7a451a350a812968d4dc2c05bd77d8ba907b839013991aae8a998ab8e3ae89699c1e000f893322381db7211f563a1d9b931b469cab100834e70807f19bd8444e12c90c16ec148420c2ab50eb2556719eb6c0e316feec2f2f2b60125ab54cac97f2e3d8690bdfc1c61bb408f679b263755929d9a20a0c2e1ab261b9e907e4ebf9a70cbc00e3d77a1cf8eba01fc551efe884f609e352d372e46fac69476b2f10024e62467e9905fb4b3b5823cb7c4761ac776aa5605a1287d47bc71b40aa0e277c1575bce7e6c0a291bb055c33b28bd8210e04a0bd142c1ef21f7775f668affb1afa8ac2923eb3aed618ae9f1eaace294c233037326a8e100eadc8a7493fe4aa577519240e252c31b1091cf2c5b610588bd89c414f563cd28227e4e0b336655464ffb3887de84d873f7da4d7dfe63378587a0cda9f78404d3f7b1eed1e022fd589f7af1280b89223a092d4f56ecd92f239e075ee5ad8517b8289f434fba3586b0bf4400cd438428bbe62d6cc8788f51a8d2890b3d11dda8e7bdf8b1f6bb4f79063cfb3932977c9e85c19cd8c58ef804a8c4a54f9308fc9c583f786aa428f2577e8154ac6d56713587af084bb20f1268cb673c132e2aa4142ae570b3d713eaed7e629f3daa830c960d80078823006ddc502b3f9ca0330ea2196ac3ff8742c188ffb6d92e708c7ee0b0e2c8457ecc6ba3158830c386478ea89f8c258458d6c0c6e1c20e5a6bd9aae60eba9aefc3758c9183f6094f5fc9153d7dc74e1649a17657dd37fa418459de3c4d08f5ac290cc5e31f35d03148ef70a077b9fe09360d7e3231de2dcbcc0c656238db4b6a35d7625ca74a978c24d1f3f99a0189fe40ce1ad73099f092262c048a16460a0f0d9c809883444890ad174b60b92dd32960d70d8de4e2a1b9b828b63918b755c868bec19a92b31ba847d4d3999313bd8d686a44b2be8546bf6b54ac4b17c1241522746415d79417e8eb747cbca9cddea83a3001b1447280566e054a6c139c806c8f44dba77cbe95ab6ffe422482434ac1bd1e4d2e585d1be09679c827f979d729c5be377c54f85928a3db64d35b14d67ec37775e64b83718f3a7b26ee0a3ef1361852b434054fe2d26520571dde910c1ed5b833a4045204ccfbc3dc25ff0b54db08bfae5db2b332fde3b449aa046691c178ccce5cbc4ed1a3e334d1ed65ce6c0153571d42b9cb5dfbf1770bb240a639277163d0ebba388d3e61bd88518c9c7501bedd653ecadd76fd50947a079b27d997efdab0dfc65c968a00fe354ac45526ae5de63c3b1d42f74a623bbd18e5b37ffb592971269b89f3ec3880c7037790b9dd3198b1d583e547070bb2b2b229f60071a8e6666deee4ad06b571820bf8bba06df6e4b53b4375381eefc466d9071c37b7dbabb1e75cdc73825ac2e9e2f3afdb797df9fc7b4762571405a74836e4fcd85a5bc882e9a5a9e027762660f7107eb6ebfad43b80955ae060c832b0a6094190047273a09898f9288d3830e3082a91fee290f54ae2ee48f5ac628662611875208292821dca40f546703bc1077831ea1008a8b1af464311491caa3393c98efe90ef8eac04b5a2bb8e8aaa2f1fb00b9dad578793411670f71a7546b8ac1db1758dff14d134c961e028ecd76c8d1c83c435ec2056871ddb52e41c278504d78d944171ecac330dd91c6d5078286b9a20c4f0b936fa798dd43011022c20ca3ef7b3803560fcc0bc1581456fae4d4cedb2c15aaafa8f9b43ce6893c91e98c3e776b35dbd4d62f2578a91ee2b6dbb3733de4d6f38ec939ea82dd1882dd74aa19ede3614b419e74cdac8952d1b88f7283d2de7a35d0f43767a701b0928a9a7c3990e03db53cf88efe3bd540f5e13fea188cd659dee3d8c0db469e2103e98e48e8021afff902d16ac582d00989fb5b716d2d84f197716958a9dd3d4ae3bd466136b59e7a6b2c475e14655f16622acfb5535b7657b31e36a87f57270a91983dd1bd659661d35f345d2bf43b8221ad66a173265b4a89dafac5baa8fc566ec368a4bf55c37451972986baf4777320823a070cae196a1f1cf320de37a5982ca671bacc08629373b13294923bda65ff8cc1720e5b1dbeb4b1d6b9db9fd8a51a648663870a94d03cdb9b3395e558496bfdcfea32f53cbf9f9eb5fde19acd288bbc045685226862e847831162be6896413ca55f664905a016b344975538354ba078f38d1b52d06122c79ac7a3729be9968939ac769a9a9edce6d476c870fda1072f3172690bd6734516a1dc99b6fd0a9cbe56235d7bb46b3feaae997ff195fa1bc59c768669def6b7ca4323e4b862417ede4d40b3ed00019032b98bbedccc571f04dc1a1459289ec863f5edcf533fc8abe8e525a9f189452c747a4d237ad2055e8303ccc94bf741fb3244d315a182f8ea2d1317b74a1a2824c55b0b3190373acb25f1ee1fca93129f96f0ac0032f68eab731175faf29a0a4d6efe5312d5035852c4b7e692fc7a47979b7a140713553df17ff5f2c97bccbc171c615940529c6ad761109c1c732af7c950621579d853bf4506feb453535daf491e7e09da35dc570594990f6af1e1083da8d6fbf0dd707d3e314a91f7a243f7d9c460eeaa184dfac4beca5c12ab07cd2a001af256a0b62b2557d66bff8d080716c2cac58870c0a0a341064ffa559ed8c3884a0c4ff9fb56f56078e8ff53f3382a7480ef183abc2e0384e44b4bbf9886b7a089e51f5e5783f446427ab9e9ad79a9ae3e7935ae2e21d1c0f42c07e96508697f8089f9d5670f0f632c54d759a16439aec38d0ee791e4d56df1a8753744c647d9eeea35a5fc44f73744b926303c9ad55ea437de4a69d1f1d42183b68cb9e7d519fdd6b912c5b1c4ac4725c5a06d0ba0f4ec02d82862dc3c13d10b1b8e3009185d4e771b4c30948668f9f36b77cf30da7c3949bc544120d508d5422980a68045292bff6367e078c53ed2dd9d480f92d9f4dd78ee30f31cd4a2f82535367920ddbd59283fb6db628681f93c3dd9f3f443b9b372e7efa943d60514c1e53615a02f4d7bc445d8777e78ffef2a82d011930e145d1829684398ff2d725d66856963f5182a4fb651e3d3ec00d2fe272967a5edbf382eb33f62123edd3a140d1a5a802398d9059b0d47c9991c381d455c26221a285df625b8eb63ceec8ef2538e388b7233b7a0c051f0a134cc10fdeec93cb17f90d06351aa530525664579ee4da89bcb608e7d8d4ce07c97825a0ab9884315b72b45aa41dd46dcbeafd681fe9e5ee94635b1f647e2f3205d73f80de3a7960ec89c7386d73bed4acfc30a3b22ef7b23b412c9ed3391c7afab222ba51aa92f6adac9ea7657d59bc41f33091b478170f97b4565bdce3d2eea495f9791a985cdf90d77b37a8e7b1e1bab8a016030f628090bd2a4442d39cd1a4d73a7a2c60a56f6673793c75d7d7baf4fc25072b5471a029e11a624669e3555514488567a84b0beeb088ff42eca58d7cb6014c64b0c981a9a6d4b499d0285187711914fe505a2a5753173d287679e64c91cf27cd5694b94cf82175816498f250604bb12b8b0bffa98908e06c53e670a84ba6247faef8b7aaff7dfc6d6d2bbedacdbab78290dbd179e952a8cdce6130549d072ee18892b9212dd6f797968b1c3ae54ea1b74d086c24fe7dfeb6fcd9d76c172e8e0f6224e5270457a6ae205f51a4c53b69d0bacd8e63f864dbe68c3db2b7d1dbee3dade7a2c50998ace17d3b593048f3a1045a45f0ce36140927d9e3d09d15759f1fc54663d6e29b93b67c84b8e17cc73aea6fbc800146bc20ea72dd2c38d3e31b2a2fd5548250ba3c89447da8edd66833e2d68ae515566a9aee363b5268fe1034ecea2f50241608b1e0475de71498e8d13fc478879ef9b84044da035a51d58b07e2f70cc640f5ad944bdbb5e1e0c489c0b5523c3c2107fc5edbb26eb2446a063c035ab804fb096ddaa088f342cf8ab853a7a5e68c3667114b080d3dc0e60f3ab74fac11ea20bb7577db911d638cdfc6bd11f4845ae2c1986d68c1844f561b24dbb843f2a19d106b54316da2f28b12cf6e1ac6893305d143adddcb772f15f6fde790f194f347655ddf92ede4cd13fe4704f6956b8f15c1ca90cdb58d25e679a92cf8872ca3ca5f19fde51a38ef332b7a91472cbaccb9a947c8075c4006507b6d516c6648f0fd3368739b047e8ee8ca5fe9f419ab9f7affe1dc6eaed70fe65e04f009047bcdb7609893461e78f0fd481baa5f9b8eb1ca0677592ae650e5e96558708540e8b301cbf4c3714fe714e632e702d7cfebd77fc4e887e3461a99e1a3ddbfda8d13a522fd045fec928221387837f5f8fe7023b58c2cb008c1188430dd45d570cc5a03d90de90f69b18e9f6e488cbaa665f115c74d88e9bc0868ef2e8d4e0f71fc2107a160d64c6718a97a26c288943b8afbe4773fb83f5dfc45c42c6eb76f7701784e1de82b6c0987f74a022746080344a301d969c941da0645096f8b9ddba958e04d0ec2ab274268016f5c983027eabd32cea5207e0790847da761b77827978fa555c7e986084589e020adf3196d6328d1bf40d23508dfc12ebbd9f830ce8292bbd153101ded0204f68d139183b6830657863b476d6edfafccb47451502c05e50cba716c9e01c667e83b7f8d130ea5d1a36dfef74d884564de666bfa57da20f1da74c744f5dcc6797c022d70b4c19b2f0d07ae7ecf6eb00c862bf00e856d05107d64f3b4ab6783743b1470656deb01647abbb1a0d3c4b22bad40e461050b6f8b9b4af0e9c70d53954dc8a9fbe720dac8379684f440e3e97297de523ac849500cff2ae450733ab0446a2c646450d6029d654c07d18b1d13b3c59ba15d1de48c298655ce5dffbfd74cbc18295a60b4cd16b3206a24e4ded57ec446560b20872fabdb0d54b1dd950dd43c7a118f4de64d9eab76561b5b07e148c4b7cc299504e5000faa7798e9cc3344ac57515015e1672553e3b49cf5846e1dac89db6d0612247501cd37debd6801cfb3a3669b307237783af533445e73f8adeb4eb600d9bf4b137248484dfcf799b553d925dbcb2f76643741519c7d4acd45a252624913cc556ae1d6b162378ea4a4b1f48f00bb4796a3af32c0d14946ff05bddeb38746d17ddd569c169ca3b8deaf390700a6ead483eec047fb4506f138ca8547f46657d17c640ddbafa42fa378f35e530a7749390a8d9f6b6784f5ff90e01231459a33b02279752daf1a08541016d783892a759a611f29bf9f2019d76cb1663a8687903cbf9225db480443ef9a83e04821e3c6f3013c88cea531873987269d69860b869c035c232c170eed235593143b7747fe632190294870c83768ca75625afaf28f3bec12fd753c6b63827c76fac71f7f8207d53e42c7464a4c8d0fe63878f9c76be8306b2c18e80cee86f20b0950db88eaace6de4b519be22a5decc5c4576b2ca49c70a6080df80f3a8b53cbb0aa24dd59b7c7899ccf7eed0e06f55ab857e0df36d42757e2055498310516d5c729a03e04129af9597032d3dd9b18b4e92936cc9657ae2e3ec1b5a2cc71a4209e5cc54922ead146af4881d70e316b33a8f149b65027c2cae223ac1395071a93a14fd0225ef7ef5f50bc763954bad85526220b9845d7fb7a74a9d0c022e1f0993eab91338488bbd77cf10192f923611b24929ec458ca4a948baa1f05481ecea6c0a458ec44af54a3dd062481253149b188e1d04cb2a4b7bfbe97a463a62cc7aea07ab329732aa42ba496c1c58c9d670e67e2bcfcaceb9c3dd6c11a2eb7f277ab7d7fae334386f3bf84d194794d7d54ffec64a6da6f22b4f83707b2e032489b515181c69e40300483f94264ee485153885fae9a5f2b363a8145b9a667f3a0b1458955aa4521f35fc17a86c1502f46183d1002048d487e817888135a0d09edfd6bb24f65a91d1d934ee68adb868c837b45d04c4aad85ba508806ac11f7b0f63cba857ffaa293af31aeebd29342a0a2ae9b5e688e70f87593b4c9c498cf43a2a4d797695da03091942db798a714aff32646e81cb826acf6e64fb40b3fe83fe3d19802a5763cda8f52cd6a6027896ce73a93a8153828f279b83b553e1af138040587829f9c8847c705fcf0c6a99a3bcae2d88cfd144cebb54623921aeda766fd34ab76e1da8287d2d04de55fc7161b06ec2ec3803c5f5909dcecb7861821e59cf7ec55b62d1d084638231431d2f873dd66f034437ac366f2382e60087fa302d0511c1032712b4b32c4cce4114ec639b7ce96efa9edff98d5ad056939bd44b7b7578f362860c1f227a4fbec231aa8a94854e1f0e7cf60f672c9c2931c95814f771d16fcb82af8aca1cc2d4c57f97a07a0a07e6dc0d0c5843c1c5324204ff8cb0ad413a5a7a0656b47cc1a422e75cdd0a7b74f9cd96cbd6c835cc14a45fb438e3ff4e6b58e910bfb20edc943fb001a76fca0198117fdd45c1a19a2e39dff33dacd577eefe293238dbc2f3233fad239dbd521001dcf67ef0ffb78574d3d55f24e715f95e470d57f1b1a32511d2b6989ecb639849f398a6d302448c9c138ab24ed70f0270b95a095ca58406499dd2b74c68cf87d23a4de3c3d17946d28a90c77a5be4373d2392e5b2ba1a72e381f341d39c34cabfc3c4a6a1c2de3b58a18db88c7d4e7f63d2018175237e358bcc0a39edd9832ea6f1d8a8f3386f77057f70cbb1ccaba9ea074fa75c33bb5825d73632ec6f1db021e7ad8f3d7965c550f0288d9ff6d6c732402e20f6721d16050497c988d4211f73ad59164e8ee840cdb9cad22a9d7be986fb2de6095896e11efa61edb018745c23c85c0a46df23194ac4c9042bd2bcc7445563e43e8d71138b886e0aaaa30488d1e50a4e3d2a38947fed3ac35c14e804f0c13722162af0e2b96bcfa4ddcb1db712bc469545d469b9e45fb6b284ec614e4dbac033452203f5f5482e1a87281bc20b3357cc6606790b664d51cc17d4a6012c5ef3440ef15c5895f236551ee6cdcd72abd82e0d0fa6352404c35b0d1fc99d4c2e4aab846c0632ea87b79f69a13e91cf9ba2b799e8a6f4b05850c6fd9a1670e3d7b56d95e56ecd4a4ab27e3edfc6072e580fd916fa0bbbc8818a606199a991d55b150fb6da625721012245b38beed7e33470b45db686285431095657e4eb7101259b450cf661f2df2130db730ccf4e280f299b3c7d785944b4ec448bac292f5ed705e83c9d12cb89ee6125aa7669eda130527bdfeb5a9e4a8a676474a96eafa8524e0e1bc468f8622aeee714f7a5e0b147e1348ff201598928d74cc68a398f1e64ae2e4cecdf73c7db479b3c688dafcfef56192da8f1764be41bccce5455cf1c00f1ef107505188b5854316a819608c435c3bafe1b1e0514132a0fa69672e45d9bed00d903acb0bc7d8576b57ff5d03cade0f9354fdd977bf153562c03c0129b448c5a72a4355069200efee93f91150cb04cd0fde67e304e983f731d921209c7762e7403f8648d1e350bc546d4c05cb177082c1788efbde77e4cc9af5f939f4fa813572645fabed5e8b9cd479ebb5f9c4b1f0921316dbd8addb1cbb1c2a935d6c56d3148f46d551a7bad0c7b0b52c86837df361a4199c526872dbefb9307edb16527cb9e15c57749f0355f86a0ae26efeddb4a3ed52cfa8e0f214ecb505982e3d3ba415038dabc0cfe08fbd6667fc5f6342040c52371598e202525a67b267f82ebd76ea3cfd1569725ff95b9ebd200cd3cc1cb6475183339aa84c7cb01236c06d6c7a18c7bfb2284ce63b6f484fa190819330a3741e9cda8ad684e1d08daa6f17ac0f36e6ea23984ba89dbaacc941b793758194766c7f8b0a110928db1efd412e5fa3430f2342c8457dba3de484f67f3ea31e975a31f13ace709122c13cd3a9b8f5fa57a0fa31f348ba412e37fb56c1e70f023070a88280476a7a6946a45c930c7e270e93d782bb1bc4a1e52ad6b4f76d5e8695da5beec9f70c78b3783003224cb9594ca4b0e2391a586bc75c6e95bd0034f6f81cce12a14bc4f4ffb65d5970d4d632541933e6bcede9a35aa4181227f987208f59881f9aaf96e19f5f255ab75af5a8663c68b6ab439da4eac4a8996a8e1bd0b119c60be9656f927e6181a4578f962d48493862a329ccb5018b4a12c586bed7b17987a275f6f2abb23334a35a80375c2270a691321d8f0bdf7efa6ae7f3472fb2c29e1ab7c5c603254bbc5086c1e475075d19980bf1739a999e6f19eb5aaf33940b7645f8f9ca72550c1ad8df179265b3355c720449e7637d04255c9f53babfb842c9f367d647666262e34aed93c20993bb70c3ed8220c2b0cba5596d30a8925e37c2ca56731607588f93af5a1b3f4f2658953bbfac9f4e85669c8126872f3ead0b2912ade1b0bbeb4b856e568edcbc1a6f5744599c6b9fc3fa3bef8bb0a4c4bd70e306a06c6cf6e02717cb5775b6d2fb4567278dd7c4b95918c7c4c116962ca3a6e1a44cd91669c92edc16f254dd8585ff25d99085c91881395101308bfe05b8a5b9978cc1163636702140785c969e520f40f1a62cc613f97ed6f9f0a6b8371996efa6c82b450640782f174d16463d25a1220dd0ab64d6ef5f9b116bf01906a2e19a54e5ff6009e8ed25279805bc718e810698a02d6d25157233e61145a3c2f52f3127fc260da122e63f2fa911df2c606bd4de11056558025a151ff37e5b06e0315f765e1074ceca0780091bff3eebcb325e3c49bf84e70f3ecd96354349cd15a88f2a6478f432dc40c0a1363e5831c516429a1fcce8e4b6590d7159d090a805a86bd149864c28b8dfc4c4c97ff2e13511bd482af3ce2a8e0710448e83543c028795fb79c72cab48b0ef9614ab1ce4e12f8ad7630eebab28ea6ad65fea96df841fb58ff5f90cf8152893f1e8c75e09aaf473b332913e60717a5390418c065c2269c0107c4aac8f2b47cf54c91fa3205b63be465535d659c6131b0ecc6a46d3a158f24bb1e7ba93399acdced5e3dcf838ff2e9fa3ae64f354dc558ea6476e1fc370470b192321376511a00d3f7ab39d2e8b2869ebf19976a9d31fbcf883d43cfe684d4d9ce9e675394f32d6b570cc06d22d7652d2263f199ac3a6be54d6a654f0485a1d1d6fb55992aab716eab249ba7966374270fbf8246135b6e50bb6a1764ef71a15e0545c81d1cf5ff8d750d3758b875a037d3e97393dff763d1e7b0a381fcfb3a981cb71af21034a12c9fb1a68a726eecbbed59be4c1b84700f9a9db2a52981ccbb96f1846b2065c9c0e168b317424c4baec64d094c6262c97ea6ea9a4bbf22880368f542abca75f9005c0940ae9fe400da6807500ddb0743d2b50ebd8d7c7947f4a6a170ff1646e02cb56843d56afc676675f8692e75984162453ea007fe0c5ca9934aa0547551bedbb60a7f27251b57aaae0c7317d55b5f96ecb723db9e6aab6c6cb81cdca2524fb74620d7b6e9c499b489c0e7638490ab77bbac4f1cfaf724cdd85e2cae1e62c01940d4f9a4ae93efb22ce61bef691d7727ed1919d59f790c717dc6788273d491f931eb31864524b326f0dd9f24d477e48016ce5c8f551e64c32c92eace1d547f945ce6cdbabfe63452f8149f10088999b08866ef1ca3fc2fe8b56f13c719c6f1ef3d34f09e1347e542ff7f6539414c98d9074911be1ae941458e96a80a296aafd52619eb1375e4c612417a268631649918ab9de5044c3bb31bd284214e1404a3956c4ee7dd875bc89d65e8f413138980ef5bae685119404427ccd0bfd4596f514c13c1c194550c214add6d8bca04cd790cdeb57fad7cb1977004ad4887ea01beeecbc3663c20024b081ca25e4481306ef51db7935800d26b030c7b305e013a9866d6809d84c572a522f0782c77f5f19bfda0a26e76115e7520edb3150d48d5fc469f17380ded23bbd171862758bbd7772582297bff8ad158c0526508faf7b60103aa422a9a5eed337e53d40a3221b2d5cddd490c3a8887d05e3378d171581762a9ddab251369341aa300b099c913cb89579fdec3f3ea8002d482332b9c22d2f4444bb3430ca6e8fe3d67a3dd04f3f8bd580626f5999acdb87b625c934185bf7a4acac64c43a70fab550636da22bbff9c1ff1b6ad2543e4aa3f10a32fd664d16ecdd32921e119e426f51c4310f528f75686914d9a5008e194813f236d27d12c37119cdcbe70eed263828c2d7bcdc15e0ae9350226f3aae6966f4804760d8b642f82745f5ed114a909f0103d74d88d85040e0b8e450e752fdefba086f9737ed9705dee085f05e14eff0f3f05fec34eff662797131c16f2d79ad020a3dfc3119a2225e9f5b7d176c1583af62591de0bd5baf9121c1b7e6d537bf83d96581e6efa14aa4b5368219aa25c02a9f7d58e81db11de39c0294d4f80efadb22c545f5b796f3ae3041ac2588e0eda264bdcc462f4e272758b699aa377cc5e0cfc5c0121d452272f73d910d43bc2f16b5c8e71f4e00663c3d0472e5e27747b0b96dea69d15b59d6ba0e6e9ed722a1de348dbbb09dbcb3cef80c75fcdb66ec53de9c8d3124d2dfe70da3b945c3108d680537d7aad6e6b8486412fecb239274d14b9b727a5216558905a4481a54af23fc4de18cfb63979f11d3cefe38c80b8ff6634c90264e6d1d4111b84001d1a221c85b897486c2cce085120f5d25bf339f13ad4d822f7cb480767dc5a221d624a6c0a6c550d35015eb3136a64c410bf87344c619c2f4d8d62572eedac3297a0e041557b228d8d55292613c66b384658e29cdb42b50b03cabb349898fb6070696fd833e3e11bfcadf3b16115f51b85c21926fc2d8c6183caae8ef68bfbb20ee48d43f4051a737583903a684cfa9285f5a8188eada29a0f0b8b7737bd0b209e1afc1b787f98654cf62d8dd186fd61e9885b126b19ce1dd0c8e3789095ec0a8bdf270923ab1b6c88f33741733ac7de3f48a12511eb87e2027ae408edaabc569626261188b8405f6ab884a89e72fa75729612a4cdd7dfe3e75a5a8fa38df01765a7136842add862e0589c206d9f4089979cd605653badb0837b7a954121f6bcdc4c50f3da42fe22b5b887f5413f4987225ce31b23967cdf842a105389aaf62545d08c3ca07bb4cd7ad584c2ae72f2327c68c086deb6e3c2b1170373d6c7d2cee30c4021148eb63e965991e2b3704f920550a47def50905988291a47ca24d52c28071a839b4094d686f8129551534f32b4e01e65f0ab993f3808e881e27e49b097312d11a5780ca64970fc40cd20fb640c08ada92c9ade9071eec07a950adb608e8ed11e6a8018d4250c33420b4621f64e093e24840f55d751e6447b48cdc3a8f9c5d412e5efa656a81a48fa9a16ec731005d4da3f8a504cb04feb4735448519089c8a86498d9b35a937138893a8f603abfa1e47796e8a7dc2487ea930812e13a72ae71b45ab84fc4664687cc5dd1919d47133677fffb9aea7d17c2395d2a3c5130f69db7773c87cd5ef21c999c1a2ec25cf1df9ce322d37ee85b2b87c89d220ed17cbfd4aeb7d7bfb23783f0e998ee9e2bcb2e1aa434ba3df7ab4da79e17a28fb185b7e9fad1c08cf7093db3fea49fad0563a02f3a41bd9cd1dba01939e434655c03a48c9148d13a4bc0e224ef0791a494030919674ee900550d206b166d90807feda0cbd976257b40846dfb691334e33a109276da413235e842375a7b1bb8d3b2f55a706a35e205da5c42c081660fead52c5d4655d1e2953b3e960b44407f98ee3ce40e9cd385e88ec3d345494aae368e7ea0ed2f8ba8e5c7a98d50d805aa7d2bd93ecbe83022932e3326faef2e29e9ed069e630ac07ad5fc6081ac620bf6b0a865f9ad6377fc0e21877c51c969d19231f841ac3db4a07cc5781642a41648b218f8708a15511b2432463583a87f2340595adae95d6875146f4ea1be845d11e63adc8e5d68414c49d4e2c35ce2bed096b790e63d16ee9b557ea14d244f99ec88e3b4aab380a1c5a20a6ed3ad458485265311dfddc3d00e4ffcabc380c660d02a501fec3ef0fcb546e6fe616b2cf24c71e320b601e169eba5fb18b035b4f9c99b43cbeb1e3e5ac561bdddbf12ea94e528d041d74815a82ca968f37041e5c59cf1c60799f39da15ca310b8c650fa4103f241589db5825500bf5e67ee472f0637ef9feded1002d8fa8e7952103df26d2082e81ddf97c284181b2dc3fdf9b75be9db8c5b1aa64c86394b68d2b7147cdd48491b61492dbf7fcb231cd34a3493db01057d9c5f2528292937814dbd6a416a42cd89130bb1495ee2d2a54b55e38a7a040a0e4a5a06af7cfe6e10cc2b8e3f87fd0b6f143f9992c3a44587af93ae6ac3111bfae5ece51e723d520755f0545f7ad5681005cb95b772ab7b8a7d0dbfbb15f6cf382bac94b3e0957bce06b07c92b3d959985dd780f9a1c5bbec247305316b867d796a4e60f0c9be533c295dbabf0e6a9f166b3c7b17c1b224e04d31470a11251b4b8344e165c3f0cddf3dfd84b5f711a3088cc308012dde756097d53d3c532055c4ba80818f92922c65ccc1e4deb888ed944230cbca83e5cdc02caba26563a89186510076dae9aa575c01ec61686c4f86a4946c3061ee816fd2e4f86888274c749f8c624cd0521976610ca1cd7a3f9ee18c26e3ef9da9295bcf702c88472239561583ec49164ef40965651ddb3aa77a8b7bb0f87ce1ade4a41233976143f4bfdfbf5543ef5828a36c2e2430d0de393c3db6b070b95ff858d1a0e591f85852b4720bf0d0c0e263bfdf94387a3b28b7ee1907b1bd10457089571c5e400902f1ddde9b237dfc5ae6a2d8628c217b8f019af21c6b5e5dc2970110285678953a661a95ea2cf9f2c1ec6b02648fcf2354c17ee82468a9ccc18e051c78956cf543b07ea88282ec27eb47ee79c68384768b607dde3a66083c920feb80c8d350b10fc7d09e0a113975a280a669d1bca05fcf609507f35d35cc47fe3b255443bcbb396f646e7e61d73d6faae8a64fe01b8d68815754a9ec8f1c49daa58cd81bb0c1f2115adcd24eb3299af26d80ec486df5d5a62e53d6ec829b58d6708cb1092926eb1df23565f9b92304def2b11adf720225edbeac82b2a60bbea3bf4c38074297bd4027ba77e128f0878b1ef0bb8c1391f78bd28a56218a3604db47c40578ec1df6d05a1b854a52a001222e52af7c655b3390e1c417fbce0fb4de92f91ee47013a0f4b66d681b1fce5de7e2d05a64a2bbb80f416bc66e43fce0ab5b70e263040444694f2c942c582e8a2a847868084d9bc898808ec3deec6773118e099d5c751c6fb41abd0fba599104cb1048cb57a21dc338b3bb785c8842c840b3d704bad0acac3423a7cf4ad21a3b1a86b707aca35dd7158a50e4cef954c1070f85358dbb3355e98bb297d1ceb44f61bb45554cbcc14edd2731f2002827649b2bf1f9fcb8381200f70b067987a7465e5141bd6ed1a9c7fbea203d1ecbe4536ff555614ea5fb34b903c1157427a9f11df6db40aa8bee37de6f77bd27dcbbed3b2f75c89d2f4a4e67a58375e585b535157244f42f1e2e16b474662101ddad0bd8b5d25ade72b069a586481738ef74768b6a2c1693c3a6c1b347ddf054cf6cafbe58bc670a5c08e1ecb808373a6aebc293d1411bad469e13c4e043cbc32cff42869e7f1ec9102897f9c789b19f4544630bbe2ac808d4bded7eed8124db0bf05f8f3081541c315c63001130ecba79428f5fcb42ba66ebf6498c6190aeff3a6e2628c8e05551b6b19a9e9cb726f86c3011de43b3d2fb81b66a69bacd1e05d50cd8a8be93fbc1d20ed55541cfe74de123e2afea9cfa2dd3b66d298b700a68ea26ade3686271b66602096113591505c771a289e477556774156f85a1b19337feb0e3e295cf87e64df01bac55c862a0abc82b2c1bdc1f49911fa270cceaf6aa3268d577411f601bc904a449a0712a21d8c66d84bdd4d15e42fc64d3d09faf99baae0f37b4dc7a9553239034a637908340507616f25ad1defbf16db92e0bd3a9bfcd4b117bd1e30f6ce6a828269f613a655fa062d4a957d8e2d5e6d48550a77eb2a82c320452e2961aa6d60ecd3923af6d5ba3d0d5f486e84ea5a751a8a9b007e31ae0c6cae45bc4ff85b708757a114bc4186e6e92136c8547f17624ada2d7197205bb4af50faefb8da20e5d8193493c268f47441652986fbe29465628919ceba0007b9df94761044c4fa1b7bcf7b79fd2f76bb5953a5cfa5fb9036baba7d9cad5bb6dd7b5419b75d97273867798c274f488b347048a31aba79668449f254fbb9ae5661ddc3e7fcaac081a0e2f1d887b2ae603ee432be8a2c39c683a6a70466a2eae026c02409f46039e3215f4867328e1a8e826a039b0ca9658b67ff6090ae8d314507c6a4dab4fb39c3fdf7c57f80c69b11975f722504c86c49754860cd4b5369b26310193b188a4320eb40f04ac88d41f50030df456f5e81d506fb6741a369f2d932d872b776901fcafcbe219e9a8d0cead42613d41548f011546071264b897776da1a586ef15924d42c393fc74d8c836040671f1f07ba0a6b173bf65a8a62fab649545f1d131d8a7b4a1d2eebf870e5e2afb946e50d91d497354a396422aa8e8239413bfa74deec5d73e75e1a66fd07d5a5f5de28cabbf9699f67dd76ce9c8fa46cc5178ef374549960170689647823af5e3e242c309e7ffba53374268ebec1fc36b6fe0485d38e124261c75806987271d52872c866508770e8235b2c2e4b0bd5c60130cbd66807188beb412c5ea918e0c87572a3c21862507ea6f6650232e27b6670ce374ba96b7baaa73706d4b53ad8cf04ddf37ad38c44934b0e9da1235b092e978659108947656f5a925e9a5f3ef1138c166e9904bc904c8946556985de9b5a931062d04c0f5bc827d4b3ab30363a8f2716e91aec10224c170561365c2bdd151406b06469be1d16172a70cd9baefbaa37b50890a7f114a15f56a21a5b34582f36e15a9bbdaf83f64390ec1bc363af3200453fd8cdec21cbe51f8318ef2234e0c1914eb2179c1c942f0a0976a7a288b9edcd4c92f459f517932d77502babb0a86e8802da5a5073400d524caf83c37485c87b677471a22b446f26f884a69b7d0d532968b9cd00597cd533ae1c625981d54af42ff45d2850297702121491465b6248ee8266a4b545aecdc9f7f88620583a0c7538227480b25dcf44f9e8aaa21a95641fd8b1464c91ffb1c3b84315401c404e8f98ba302c6f7f2b6f3f0dd00cc0e782d5b0fcdb99fa12aae9b882db0a7e400e5b461e761bb5c6cb23901facb2e62a367f52f664a05d16cacc14f6bac8fc3cee35a30e341aafd28d4f3063573994bf113dfa313de6842f156b15c404aa6e3995e5e0bcd7f64440821c50830a599303097791d54fce5df9b7047316728e69288ee74fc55acb259fdcfcf6f7fda81da028d646aa59839568cc32af5ae14da71995813af994804062e3e8899437c2d2645f9e1bb99a393288c3f96b086ed3565b5cf41b6c26e2c117a1987eb0fb79dff70d285a1bb788a8e4e29db288e5d17c81a3b25d88ce3798b60db81ef828a25679d13ee40eff4d10a3604a3e8e108916ac4a471cd33ba387b53a2af90371679bc31503e459bac8f2918aecb790da68efa7458fe1e850b09b0e5a6af128bdbcaad55a4980e423788d86e775787a3e3c61c27ab0ab54002ae43994140c55092686f8c2ad2bc22d109483bbcd3d94ce0b67ac474effb17b81055ae125d5ff0643013f8add0eed959bc34585c3df10c61b19ea3b98eb915a15c2115e7a01f744e91deb11010e5bb54a2cced9bc6a8e0f4b89cf95044f4785a4fe0eba7f7c1d2f9fbed06975c5e47ae5349e77f398555944ddb21e216b6d84e1eaa262dea0e15ecb1bac6145071f5fe82d70e3db9c536e6f058f3cf24e18703a2da8cfb18710011b3c7d068952a10761b80bc77b708ad484488e2d76c6252d24e8636e9d5666ba0911180685e82d3d7f71aa089873f9ca5f8cf6929b74e5ea758f2dfe4d08b23971126a6060e69441f1f4b08a7e06f35e1b5a3c81c466c16bf96fb3a1be8bf6344074328b4cd84d757021dbcc769dd4a3d45a0390c3a2faf7e17554be187edbdb14b46fa3f7399e1c54e6bee629322eb4d5fa02b1d0c58bf393b484d51f4ba8e547fad2afa56895d28ca5d4558fa3f507a71f1774b51167e18817dd7f79c2aea30f08378ccd64af3663ef07c7be10e177740c6465ff9e09b55a7f30d99f7260d3fc8bfea7c58a88807fa129b9cddfdb1b534bcceae60a3063d80e1e53309b8280781ac655a060dcb6673c44d493927e76a66b4d88e188fda07aeaf070246cd3d92bb8e00c953c6265a1087a3b8d4d28268112481c78b7b90a3cfd0926b90135dcda9f803380dae29c1a446533b6a0198d589eb6dcbc48ed4d6319bb672d150e12c3480a2ad42885f437e3c18c53c3cc644c566178af5ec43a7860d2d300a4514c074ee09aeae180f6d8e784e7b373c3c9fd6e3b57ca71d282b6340ff58dbe71b1fa79578d167d1b72b812d50cc8a31c5ec82bf2f3187da5bbca772230b2926186272720ed5f6298609f018ff086896e76e0aa5ad34be90ff4fc70f223e67415c9da082afba82699eeb719e05718e62400a6a5fa8150cd6d478666769db425cf6629e8290b9b8c5dcc57cbab0e26bf63a588c73ec049ea87f77b9d5d4977c8eb7c7230a69340315c87ceff1221776c884b146c275711aff41953db3768ac3b95aa6709009b3dbe604d501e3eaa73cf545f9e89861418b914c053fb018fa6ea427a2f0efa9144f4a3b4c16cc01422bc7fb4b34ba03bc58abaf2c6cc513b885e00fdde9a634b4c017db98ad5db4e452025d656f9675b80cacb919b6d4d6578265a0104e26b3582b633c2bcdd6d0ce1ff5005e255de823411175c204535dcf91f0a1e78332f87e43c7915fa9fd85f71992e11d4234bce7f5888a59e812149c586781111c8f7c19129d2b158fb68f48e46d5671d0f09992e6cb89dd2927e288a91a4169a5bcb32dbed47ec53150e3d49773e59e07b3f13c5c4172e021a0e8aa14f12d216fd3b53de64addbdac36b2e8122761399815e591e1501a73b991371cf5c2042c7a7cccd63cf040112033cd01039ea70814c5f2bf62fa0bc3e40dc22882a74216ad8bee7fa1556b46ba50d8688c84a6441c95be53416bb7b1b66de354946adfc6da9574f7abfee0491154b3d719b4561aaf1e51870e58acdd63c715c902c9891111dc55b980f2ef16c4ba70c4060937b50cda54dcd23e02b2406700183b3780d7365b9f2296d4d6645b2e5d3835a4ea7278601684125d3efc62b47d58e1aec3f6f167a0afef2acfca46023d5070887b631a3603c2ece33a14e6c7a3fc5ff24c31ea30a0a9716364126dc5fcf17c323067f1b1a15595c5068407c708ef5d8540f8f80f0c66dda2d0f52605e098bcc017a232c1741cf8b9d36b8d90b7fbf4b9816691e703a3ffe9fd54fe9e6fd221a6d50854906695a4fe43356488d628ed0b1572ca76c71a930df4505db03dbdb74fb4f127bfb03677f07576dfdafa9d5cac891d85d0a1a5847a088acc2ef546197de45879c631f8392ce5319404a33af277d8796ae8f410ad08ab59c986118f5e542ee1f5d081e2a3694cd11377855fa3606154a465ae08bcba0fdff608544230d72b5890103cdaae744fc70ba52970a8d8505ebcf6281b1b213d22566c2c7bc533a0c88dc0a6c862a175ae3add9362d0a45897e92fc267137d34c58891954342084f27be77fb88d6294b71ec1361e38b0a70962626a01aebf3546ccdc0e0c58b9812a848239e7c5d23fd1c6ab2b36a092199094d03f656d41e410c87d86465c7619a6c4e953a7ce58d58f444821e486a2bd3c63ec75b10ab86d134619819062b12ee0dec38bdc7c99c46c4fd3cb6facc8901a9a2aa9a1a0f6b28fd81242ecc59f7b2049e17881db05bffcab2b373730d0ea6e30ec45352663729acb9e1b1087a254411107150c31b7300cfa9e09edacd7e004c0768c2c67ef6d5052459b961011ee850e6b4b02d88b663412e8491daf2727e926f47d8aaf77d0dc3071547c324dd53c36a893b1f58fe220e1b534746632e66bb3f66e91cc2b97a4fd0ec79c9afebe4d185b7f217c31cfc4f9b7c43677687c978b306679c8d83122da8e3f57cc91925bc4d953251b8b2bd68d748ca5f191a8f4166649656c2a1d29a987391f537d8ef7504122bd014d3937cfa67d765d662437e52ee04004aad382eab966c0417f3ed5cd40aff263047434ac89806d8186fe989c1fc41750776309dc38cf04fd29f147e32c5c050cfe311a3367749adb3f222daeafe69d2f67841fd9d686993e2844703a020ab4a1b78df6a37577cab0fced1d1980d644f340c59b16b7b3806732dc0a05401d889acde32f0837a0b561f1876603dc278829547918caac8b1875245ca5d53c72a393cb8c1431788d688397fead879440cab9e0a2f26671b30179c229343e53218a4f703a43e61952a6e4070c34a47bc820db720d9b60d49ad4833c37cdca5f03d954376ec7579eab09fe47e57161469c774179a373374ed2e3c3f86ce43460aa83abd420e073241da33f59d3159c194ca5c6315c40c064879b9a7bad34368283815f909c7df872164048c0f00a8b2527161f13da1ba41f3c77a268a132f9f411a6782ad83e622c0482904001074afe194b71bde6108c077a96a8c46ac123127d500af65f743efc0c344d2474544cb14a04d045ca17c14ab27018280937a0ce4d365b594fbd2f826aa07e1552548b5caaea7c2b2067c4a0515d3535764f749a256484cfc0c49624953e19ca16d191f89f36f893bf1028fa9aabe6501218b53770c235c12485c829df905fe2bf0b4925b2e40564ba40eb34c23464d6117372f1985104e90fe09156214f2cefa6ae143ec3534b1b316463db79d3c011fd88c599f49e6b779ece6705548264c28ebc4a3d66c2d676a85f461e1927dfe2d9fc186b274a3bfe5a58e373748051e73f88666cf5396f154a09e004c5474986de133315d899d3a98c8c64e0ef9716de85dbb8a22784835c80053f36ad324f58d737807603ad6d66178a99d93c5a914936ef797ff1039c7f76730400e5abab024c34d26d17eb66e410125115d933ce9bc106d7760483c944da144cbe4a6b1bbeb091e86e16b00ba826e72553b5dfbf8ec120349d753b874d60ef16c942312bdd73cd1f069d71d959b853985c4ea0147499310c3cf588a0b14d1b5d6d0689e4c048424202169c5e3f984358668435629f8899c58c79b505b84a639d20c1a8c9826d075e4d569305d5d320ee250ed557669989ba12299d80bd8fd1ada4e1f8e529707aff6e6cad071a8d0d516dcbd8a82b7b48a84753f5af67a7f21530f283ae21630fe9ffa28a5353ead5ab515c15c3975555a346b4c11eec5109cc005ab4f3ec4f78c404f77734570844c990fe2ebe68bc52665a9ad723d6170b795ef36bb1dfd6a9b601a0d8fe090e14adac8a2875c86a01a03fb96e626f4463841a3ad33fb5af4020673ebb6b695c8e296dabaa09f3f099a1c6606e27319fec970b26dd269e017831c656af2ec6bc421277e3e12ffda9f52a2dfd191ca7dcc4263ad05185a45f8310e887d9c01e32494c50dc20df7be3a65b7b28e5f6062cefb585b79a859d54f5f539a36ab5060f3853ececf4f62c46ab695e4816b74d55613a22aa14c489c0de1682b29b849bc85aa821be6daa4fab0df9a821ad105731021ba784644ea7572788fd8c0caf066f68c843a876bad5260027247cf88fa516274d540282a5f948203dbc3b6fc62a4616021897820757b0b9a6eb58336d4e49b6cf850434286d2849e61ff1873468ca817cd232e46a28c38eafa2268c22393a7191a07a5ddbf41e201d4db84908c18094ddbe5a9c360a0425468cf08eaafb9aca4bcb367e44384e9ff6aeb362cabdcbc4dbf544382bc06515590013daec09bbc9f3223896510bd75731e42c49056eb90bd059fca7c55ec0725010da46d52959f81133e9003414ec1fa07cb98e18e83323fa13571fed8a650231f965ea510e467d4023d1dba02fa50f80675c03dcbbb2628266b4c08b25e36d37f3af41eba6a00a8e60612f582751de264a40c4d589a805ea8c44ac9c4ddc33c6d15ca724cdb881ff8835ce8a1ea3f1cf399e5b90c1c7112ed8d07cc3c274f0567702fcdef3fa6028fde33837271df70fc47094fb7371fc57da98912d44ac2dfc95bada90acee19d2ab3393436893b6c2b9271b4a96c4da3d26fc998eb0a7db9a236956837e814806c57c8dba8b0f20b964eeebac7a9cd6b9bada79ea95193ce3c2f7fbc6e6a7014231f967e825d03aafd55a0a0afdd5022a326750a11ed6181ae95b99e46052ceb9a8dd4435f4d63464d15fb4e701af97686371226c88fac0120c90b3c2822d0f7f6cdd4bbe3f091572db9474d61462005287035800522c5785a8a2f8c9ab41bd4c5a5f802c50d9b824269235b3f135b67f0e41c2aa81b5d0b1c3c3dc5cc8b21fd8cf969e2579c03f161327d05fafd32839cdb42acfb7696864394783d79c5c67c2c75c42464d8d2d52cfdd6f4d6d454dcc03c958f6655bdf085615a6ba0eaa4a1fb0ba86ffa879a3919129f38560e8c9a9ac659fdfe003d8ed3f52fa6b6d4f70d5641804324586b68a178107681c1b320c93f88c02fc8185683b07b958c148129f25556f6ee78ceb9d4104007293a3595be6ca3265601aeac8d60b0d404a4cb5c65561e1d352d52841edb583408e114b144b57317351588b40eb1aaf86b9d0eea0ff77ddbdaebd175d979749ccee1ab5b17f841053aed92a6fc62ff111360d66c889ac2906d689d502bf1a85f6a3dd5fcc05592f107fe1835e5ef917e32bc6f677ad6589d858d3c1b4b4349dfb90c09d1d5a7c3e6d18599b3da693f089dd94280ccfb696f8e85f3bda8c3fd0874a8751826f2d44f3e5bd694c051a4fdc4775c94ff00a3bb68488235632f3dda5d207336ea6517ba13eee7a3511854463e44353509f0b24bd8845d229ed4c4407d0b11d816c723f9ef00c0126bd4240715359661a439d1318815a9c97ef0874b5e4c3234d2113591cf71acdd955f1e200770552b5e5fbf367506063c21f517a9f0806a9c3a88f43923566a82c8cbbbe69134df79b90ae11020947baea9958157be05e859baa456b051b450bbd66ccc2d45d848dbe1a4dd536a2b075502e9a696d5cd6c199457a3627633e5293fab5011eea976bf0e6464c8895507c4391ee5f1547c38baab646ed4c1068f6f94dc6ea7f1f5227f45b249399afc8df2ad7a4c3220e937b43b7b1eb75e6913a2b32a1d949ecb0ace22bc3f2326d9ba16c942fb61d4703f01d8f54723ae7d683e15ff7c71a2d5773a0e97e7ebbb38b273d14b4023872945d18baa60c3dc13e0b5b3e9badd5d09104d61b54b891a7430c54e80017626ace9d0b1ac851b22c00de0f975378389a01f4a79d90a30fa706ee84e3f5a35a502e5dd907a9633a8dd1441c7007feea01407c5d081a5630ad2a834b8119d7db7ba91f1056f06897267162ee02c58ab2e9232aa51e098412e5ebf8bdc68135d3db10614b01ba326d2ff0533758a9501dc38c848e3bd4cde34e65b7767ccb4315956c6b78626c8c6121adb10f09cdf954698711025b50f49fd4e78f0a451a04186848b56c4a8710a4056801477413c69b62b68137f9c48554fe437473cf42dcffb66092e79273d27bb8cf1a400dd46a848eca1d403dc0a95298a83df602754ce110a87bfe9a4644ac600e833e7115789856eade83eec0aa852d586058b03230cb817a0e40d80a31f687fe8d93158440f5253555df30dfda481256eabe8c9ebfa4ef4962bee72997daf0d3ca0013a424d4a534092cc9a0e24200b51020885a9380369f0bcdfab60822064c905849344339ea399d2f31ec963411c32dabb535516dabb33d7ee9eb5ca838368b003d58b222cfa9e79161b521a184dc781d2dade7b27b9b7db0e8a048f049204514447e1d14c8c457348b9ac2aa26148c69013a0cbc81c8ee3f70da3b60113072c21c26cc420bb06a09fa063709cc3d1f0bea16643320e82c6881d513f1613faa70271f46d65c5264f4818a33fb282b9c97afc98c8399404d0200a74a6bd2e19a5e9a0bfe66ea6c5f0929d5cef40579c2bc8528fed2c0754a3a5c0369c7affeb74bba8247d21dfbd89ffffffff89deffd701d8edfeff259ef74a0d604e8f3f591c35ab310482362ac7a1d99312de71fcb6b8edefbd77149f911fd4cb550c828df3c04f285c714363c292c3c3081c235888cccfcf12116eabcd021486aa4bc917aba39b7aca2be1ccf3a178be907fc161f1b881a213001b061c2b5aca2bb0288bac0e2969312559968cfe563fa901b86d2a098b167a032ddb7bef776f3bd649f6f7de7bb7dbbecf7efcef72ef78c8049ee751715c10ab085c08ce0926e336aa16b131d7ceec767dab0ac1e5ad4e91076cfc356ceac2799727d6e575161bbddc52239b0b79d1592d2d5aabf31c3bb5ab226ba8dbf06f203a2e485fc8f73cef76beddffffffff6378e944506c0b3fe43e8f2696d9f4c81a6b232aea11c9e2ca9acb5208366f081cd71839deb784d437a40eb926d99ecb1e7d324d4e48c171d11a020d938c191fb69272348e0c951bd7a24585eb92d65998194163198e87c095352629aacfc46b81032f30662d4116afac20aecbf30d6c621ce7dd2410b93681777272442e96d821e6572ca2cce8b3da14a2eaaaadac2d0e42a28a68a9f5ac92d28a66f4390da39f2c31fac9d3422ffb81f5b3e26615ec2ed0ea589922c96ebfd0a45bb98aec587048a5e523382467313d2523eec771eb7d4bf466a7ce09ee426a869944cfa04610116695a116478adc8b983ce5418f62de86d74f44e4b79ce54e6f60e91460ee4a645452c2d1165ed258471390413621b92c511d967413bd0eb4c99d35fdf4145764b0f4c1e176f49b729bcdb64e7c4bddfdffb60ce39f9ecbb646de16470027576d58321d312c4a1db8bcf4a845850d999dccbcdea54f298937399efd335912d6274dfa4ee0c713aeb182be5d0d4f70d11a9b4d8d1ccc8fa10d3d09b2ad62dbfeb1379afaeda61ee1f772d616f453ce6474a256b01a2247e29343d34236067289ce60108c75493faec44f1d399ee71b69384e3f5408a9d333be231ebdf3f56adb8999138b39c11a6ce0d3a22593528d80e8382005a54c190cb586deffff3fcfa9536a959aa57aa95f6a982aee1a6abbbeed30a75fee9213f5f129c608c73d483413e2828ce9bee0383d06a369fb9baa7eabad40cfa0c4c8ea35144b11bf52ef50850cba436a150e8f599005206c9b0fd2fa138331c539a931611a2b9799cb52ae5f253baf3be52f9d134bd12da60336a5397b292b2c957347656b5d4c5c97e71bd5298ef37a876ed378f6f7882ba5ba7761f4198cfedffb2fe6f0f2fcffff23fe3f7f9512603065a316676d7e855c5b432124f9a8b18ce480bd4739b18404469ee3620c198a34c4e85d8c7181b97ea797bcb6dfe9a4864efde0ed4329eb0c7b9d6ebdf0cecab64041495ca25c8e15fc79cef3b492f942d64823debd9d8d866157bd00b6eb1637d407bc426c887e5260aedeaa195912db225ec2a52089e7e82a04048e4704e21b2a195e0ece90f7ad038c534f8c561b063428a6960e536e562bcfafb2389e4395d0bcf74e8b10a2641a611585d4e8206c8a646ae505f843c36461f4e798084c2dbce8ab31bd6fc6ca431e805a969ec03a59fac5b7b5816e31dd52c0f7063718ed6afa640d95132cb5188fa846345cdad82211d7c66515f6955cca513fbc2bcdc1fb86d0959003a12233acf1c87a46bb48b96e21e80061b4dcd6e47ab023b85c93824296963477c829beb3e9d29ba2efa33254f6e2388edff716d27c21333d5db71a5b5d3dc3b0de30561de900041562216a0d6574ba78d49b10c2afa11ae4d1d608999c63540a7144e284740b958cdbf43903cbfe2234ac92744fca6d15bdec50932c68152cc00973598961c1ed70989459a3663c44e89513845763d7231b9a64855be4658bfb2d7affbd6b980deb5a27d471bce2ee7de5824f859096c3c6e60b596d43581c8596dc41a4ebe4d3351d23328945786871da1fa5a013e2589e62b23aeaa2a97c28a948a374ca7e4093d6c6611472ddd2d55479c0d0ad20a393149207402081b860333e217312d1a4449798e8ce5e898e5ddb775fba6b1c272bdef756446dece58532eb66741a656de883aed184b08396312caf37a7369cfe858090a13b715ffb8dba9093ee161a33471c3f9a4cd84f0f6774a0334a51d70fd39ae48dca526836e61a05d7ae4d985a4a9181c671afea7c216735bcbc14f6960ced00ee74d294264d850cf368ed2d454e55f4a8dc7b4501b84a3863a2f32b8881f2eb9a72ab6720197f020e57e4b2d7383e09490a827a66bc9106e95d734aad88192f843bd9c1192768939d37a012386caf6eb850dfaf6b09d876469a4a63735b28af02309c14af93894a37a3d325181dca4182d1873b0a30011b8efa9d61051d71a8227d21dfbe6b99efdfa6794bf3ad0bc18ce78503d9d384449314b9395992202daab3131f3bcfc15efa42be2bfeffbf420c789750d8ed0a7075d294b8b1916c339efa55e901d306996c194f8f88c944d88810e59be279cea1278be3115fd1b0e63379492220ecae2386a126662a28995b07aeb0db91c8b65bd1822f399c27654ed6916e0235be759d2fe46dd7bd616bcc426bc846ebfdcf739e33d5349871bdbcf7ff3d3fa927dec989f13ff11656a50da5de7b97f8a9afbc13531c97e5a8d071caeb3cfb7b1675b437e7b9b5a45b89bdff0d66b8968c733b585c04f80239df4cd2668674b08302f1f3304f8b567f96f6f68edb3d8b7bdee1b849f536c9f6ac5d23b058814b5d2173453a448af51366a3f5e4902a41b24669a41c4f2062c9f1187bba4a43a341a02b483ea831300d8799f3c5e8f138f9ceeb5fe7edee88efbdf71e4101d92a38552573ebeaf9d11f5b2b163c888993025215cd81333cc63f9072be90916ea6de13c5d5420368ab800c23f2f1fed7fdffe7b9064bef79cb47cef2b6639ae2d6ff7fbff44bf265032a1e9380db270835e07812359d5d7dc01adbfff3092f61a71e2d1398f194f6f0b254bc4889b8c5cd403d91f57abdcb5196319fb1fb969e207cf643f1350a9aae4012d620116b94fc9ee2c67d76b6f7f5ddf65d6f71d3ecb7096d0748dc9472384316427748bb4508703e758d2c8542a75b97b9de43d5a1ec9057e5ce6d95bb0779be61cd8be3b50514a2ee4539941782122d17ecb72da017707cd77bef7d673fde7535c81a9f1a650d520d53cd13d515ae3d6a75f2cf797d4e371ddeceed54aeea8e79979e84317aaf42d8b3510713ebd53a899c34d349e3cdd999b6ccc08c9f1e245e33dd0f6f4f1ea45e45e952853653539dbcc5631c1289c5fde8a3108c4fe27696324e5cf3d5925c839513ae2ef157441a4131c1444b6c47a79648ce4fc616795a369e4dc1baccd2490144c85113982c46ff9198a553122dd622a76e73ea5164f5018129d6cfd56359ddd14dc8bd2f1b0fe2e611eb14d50370ce90e808d2b1b454e649798effbf6d2335f46edb79fe24ce17320cd24789f464caa0e1e6f5de7befbdf3eede7bcf6fbb36cae188885996da6431fec3f4ffffd3bbffafd83df59e20e127be8a3ca4246d597f154f330eab1ea89292266af9b69491d0a7f4857c7b4ba66066965fc72ffd412b2208ed51a63c2db396f678382e7eefc6eddbae62e0ca660d2b9d6a620e59a5896401b14c521f4b3c9ba400d7d1b3494c3423955272af1850cc527ac8c271a55164a06b6f73be90a7b786b74a61d6d5399ee980648f32ba90d7f7bdca78523e6b4e5a3a69283d112b38c211c570be31400f54ca3411cae0ba315d29e1542f57b270cd711df6ba81dde2bdf7de7befddeebd7996933a1c92c9efddb8cda383a4c92590383c12033642136f65f42f123c0ede287d90e2a83dd4363ce28025c40d204ccfd033a16a05e803a87dca25b1dd212292c89372cd8acd3e91ad48570fbfa9e8accd7b3ef1870300dd703e5290a1414d6b0ad2120a67e909a43b641d45a0431803e5f8c2656b0d78555c8e639c1f21a0aac7d885125728625294a4a1c06fb2db03c49d228f05676ab959f734aac2b9c55dcb38dea59c2f64a49ba9a7d1f5446101f57aeb67ba9225675870cd08ebe7873306f3a095adc8e1e1fcf3de3bafcb38cecb5f10f4122e16e198c0f970633020454742d0982b453239fa13d6f5548776e9514493b3149ac241bafc92e710f5de493216f6039724d8c4c6d65362f790236fcead985f87dcec83347da292b96efdb4fcf0740590052306755665ba0aca67e13331da0f2d8836442bf60c39453465566048ab357ac748c1c7001abac5e052e9c50d7ba2d3b1c1e8468e2ef71b6ede5eefbdf7de7bc7d065b22454d36bf8c415d691bbd288367372573733ba2a1fda043829d38a4b9607590ed7870d1035b0094d4c071f1a07a1c00518b69732e30c921ace356704603b5f25342eac225986d280241da3ba4e9d9bee1b08134d1d6a94912dae2bbffdc4f0075be2f633f11ce084e34411e3362121b9471424d737a50e0f1ea2c6dfea5de3f87df3bb101653ba4521a9796474da86a9a92203c80f6f934a0acc38e56d5c7ff88d3f8172fceb66cee365c4ffff47f49e3a2120a8b30f39afaaa71ae9920d0348da804e34473f694f5b4de70bb9ba61957d0adc82cd81a9e52a723bf0f464f41eb12b90a789568e88a6d19e7c54bb62e1b699e058ec3efb9c7c22f314494c5173480a36999d5db525c7aeb1e2041e2f58f8848d2b9b9193bcae435fc877851c604566803c885cb98caf4031256be30607aeca787a06e33f2c5aa1d3400926f665116a4968996e5b5c5730bd1e060b9d0790b8ad57c7079092ce0a7a60a27d899dc06bf8019c415e1f8a86ca3c18333a848f0b70842a4e3be29eb8ed8007c82d8868229da2e93f9de7d2e47c212fef666f4a51b5d090661590a12689001e7d3d4dab2996075a35a3d3db26862c09cc9cf4d084c008a5e5fd884b38013065d5ae59bb5931ed720128003e3d704c834e5de3bb87e32862fa42bea14431afe8eab4524355b4f560396265a1c8645ca46d4f24402aa1de3b8edb2fb60c46b7fbff7f43ea906e524d33f98daae2dcffe739519836f95f7e4d267a1445c3899efc6f56706f6455ce6e0ad555056c4a0c180b2a0a7bcf338e6b97b7b6d9a327a6bee4b2b8ac5d9edf774b67af8cd2beae8cbc619f6c8e0e4c3cc57bcfa52b578cfffa06c5ae6fa79b6d485fc837860c2d5709e549250269ec91ef371704711a4ae1f18045e54319f3399764659d56a58541a3542a9c650d0c2fc5a451af1ea32aef150306cab863309016d65697e71a6e41d9ded9b5dcf3ed5822785464ee06843fd5a2aeb71bb66f515141d764dffbffff7f0f823791ffc38dfc7f099fa26de910026419465db7b0162c57242edb9531af399f2c3b5d39386d79d41a9a37b1933a75e5cffb7eed38ce3b83e0d93f7e7bc1e8ca124660fda0b6c47ebbb83455d62afbc6d3c14516873570a66a5b635e385eb4d58d28c20d0a618271da25f300331a059173271e403561d114560846aa642b92c6b163fac2e0358de3c7dbf6fe76c210ee7a83771a47c18728f10298e9b3eca3fb4126e941fa645284fcd1d2d5a5ad7c694cc2fede7befb32d47e7dc7531cf755530b0d6550ad1c4464a851702e63628d2d6915cca83106336501f9cb843568f8c57a1b2514a4322c574d4fffdf35deaeab9dca3ea91f5f0e6007899389a47d73f42dcef761da2da23a682fd7bf795c0a7eb2ccb7d897e65bc4517e5e46c2be5cc066a388541aac8578b608ecb6a5413279910733531896b2a797b12065f2804e1ff79ff7fbf6d161c7adb3ae5f5de793c0b5aa844882804238414f211527e868ade7bef15b7edf4c5cf2cf000cc3374c346528394d15950debab2d89a84cb92bb9e71bc7b9c2f649da4467759eb7ce061bd397161e614a923243fbe94a6a2823c34fd7413c6db50ae10841868d5b81c382c6c27198f32c2c634423223d6c8d727f827d94d86d153960140c5a84692472a299f82aa26479914cb128ad4ca82d2d83b4394aa9a51c92ad21920db1710d8352a01236a8888b239e562e19be77977fe4c3b879f6a6f7734ef763b7af7cfb4d6b66d6b6de0c34b90c775666e0c3ab52581f8e521e42c320e7d4c182692e9c3543291984ccca7fc0a0fd3ae018d01dfc04c68ca6a15d62daccc03ad09064552099a7dd14f39133234a07667a4dbb3987565db5ba3acab770423d143c15a020b90704b682466cae852d54ad80454ef123609e45675f7747396be90ef1c1cde0016ff82c3e25107b7933b2befbd4155e5e5b9d5b0f7fcffff73def3ae45193a56ac80e364f77dcb24895c707719e4a59d694c8c0e4d9b920095915a8bc1626d9eddeb4737cd5a6ab3975b37ce5eac09c5632fc71320a51b321fee4a8b50169c0f4b87ae20feb955817d05a925c1616518a1dae610e7884b6ef80790eaa8848dda740601c06819f318040c01c6301c09035193536d14000616c068a06c3c1c28544844100943a13118180a0502616010080c8341817050101b0c52cfad014821b7e6949f6f484850b0fc3f7c31a2b902c648899b43076a818a5e87e3c26391e05f51b151b99bef4ce98f69be6cc8f55ae46b18524dda2f122c7fdc1da8dca3ff4659860f6fa9f21e22f4b0b0803786d8a47d7a2d538d7966d2d8f9bf38a404e6b393ebf4e962f79b388817af12eed46d9c0d3f20e3e6922c45cd2d58c241a850d1ca2f5f3204fc1d12c220125e8af03350ca35bae9f81d610cc8a731b0d8ab4ead57ae02344ee29a058858f7a488cec767559b05fa1c1784da4b5960857aa853ec4e141692e2d37ccc02cc09048ae52c12b81a939c9f0845b677c6538d44d78bba2f9c7f7705ac5f67149888689c5c223a3fcdda23513b5821ea771bb7d61e32a58ca95e27c801a1c80339d95ba227026cd1a14a8c8b4184e94584e38155c272b5c701443f11c4f23461376fadfa47924b0d2718d5ad50ca30fdaf924f151c3f323755e805fe817e779bd873edfdac20338dda10c886ee0969e0bbfd34d545171eae25ccb719c3bff6a01cd954636c6f02d15f4dc47d3b87f6da08ec8134d6c4557468a96a06a2a6df7031e927d4aa9076cead03b08baefb4d3ebc178bc5b51bd4e5b9fcd09ec2abe34c4d5208440871a36dfb3ca120238f422f87e1c746440a76a38482ab515b42ff8bdd5258d5487a5ba11847c70bfd46333a74234b943147e9949416810e0bc345ca4c3ae11e51800a12f5fdf2b2f971701e1831698726729b70153f591b1bb4e07838b6376a827d22b9fde7bbaf204f71707bec3f44ebb89e2f76fb1a272a204879ff5db7b0b80b24c7369e23489f36362800dd27ab9969616ed5969625a8c34680238e897239d27a1b1df3bfff4d45f25dc3850cfb7eafd9870531105f3a48b693d2988f7181ee94a8c10eb74dedc535b8dfefb1b73515c7bebb4ec05e09ac538528c1990bfe9dd2a18a181f895b13cca1527129a9da577fa7baec9b3875f7ea774947c5e50d3cbfd01486491dd007c1b82352dae20485f77773d4a93115dfc4691cc4183199dc04cf34ec23264ba1d51844472e0d4a0397728f1dc4d026310df4472faff1c37d585375ca987d803178dbd1db805f5cb8d5e3e9b179fc30299546d96651da6c2fa6c6010f609329c90c36696d77cb165f6e48895661babe719080dfd5db900161ea846538efcc87b20bbacc1ad788983cd23dca2f37c61ab41fa09db79921860643e5d94760180dc45ec16cc97411db22721fe4780e4d04297fc47a6376e80dee0838cc55ae1702711daac8694022818e8a475ca5140a4e1541a48623e67ab0d740146f3ed9721d995cf1c52f552919a6e6135ebaf0086f391a19082ce8633c22ccd98d269ef24599ca1acfc4b21539428452a544134f93292df5161cfaa53c827586f00534fee7f16fa47a5e4c7da087b626e3162e3700d5961ec24b7f2e10e94d4b0e9c33f97f93443d3d7a159f62275bf2e382425b367329a1190b8275ba14a3c588b9bc346232d42b71b2838db15013b7998e391da35329e872edd2e5a2c1b1d381545560abac17ab1e5a92211eabcd634b99ee33673c7ba258ea870ab1342d75dd91b4fd7c40b7145deebb8d104401a09fc97305af5183267957681fae1439064c762af894068bd44652a4aaac70c1b7918eea783aab628be53bac2383cc3960910f7b63645ac02cd93fa713ccb8c88f39360ed82b029c38e71b9b81beafe9447d9cb0c9bc250080fa384cd18254a5be171a65e830dbc66d2ce02fd32a85cd46891d2d000a525c21fdb44b599df630ed30ba26b0fb3019a20bfe2f10fba298159c64da98d6eace3091521b9dc91bc7d65507628a8d1846c9a5de0bdbc41f929493571873db75bc1c66f641f159d154a02e73fd5b25eb62bc11585da6921ec850ac972b45d466e102e8a62d5958f90fed0d378ba2925dca8b5af0ef6f33cc13cfacfccc8b154b01e057a525d57d273d57610645975f1361ec9514c11fd5456bd9cc83bae84b5580869ce0e04355029fa2b500cd1f8db3cf1e965f733505bd69e8fb9b4198691e5b2273e15dbdd40a61cefe4d96dc92483838f6b3f2450f94607501c3a9aef11f00042391bb79f030057cd2443c7a0ade2d65f72eef1cc3f2432254dd806cecbf5fc9487d0828bcc57bcff38ada2a0d16f5a2e99ffe9c06ce9769bb5d5f380c3a8710fe15de426ead16a0be4c7404bcd12782179b4c7bca7c18aa5cb54bcb3094358caa8a8db20d7c7fd01bcdf749942748563c479bc7864dda0875da2c56c4a417aaf8a001d526ca94bbb51a928c33ce4328604215896adcb1616f260fbc14497d9b024f6f8217fd694eb50455e0a5d57459c57dcc81c3c4b431b547a87953c08a632b869cfb0d30a93516f322b66328983637deac1704d9841cd7256fae1c86eb7456238a545572378b1b3482be03f75c6944f8ef424d57f961bc4dd3feaccc3493a213c5f1d4ae2386a4f16eaf15471bc44f69744e06f122447ebdd9375d3fc30a10fb0ca83ad85eabd6a79253dbacd50e56496cf9a985930a00038bb14862d52638035648c02ba482597989a03252081e8158e6080c74d6a535d4085bcb9104092deb2374e3998a356fc598eb5f4d71c453d402261e742b348fef7ec5a7bed03de46fa942cc450b68652edf99aa99c7ff152d439af214a4b70b4082438680e6b4a1c24deb948d928a19d10059011cf3e520c799ae9a5d9aac4603f78675fc0d3024f5f9b949b8b99edbe0960159d0fcfce0fb2379abec5425a1a8352bbece43c059998a51de12bf2c8d5f772192bd95e7e6267dc3b931ba14f01ae934c8bb0687f0e0268bd6ae7d8dfdefbcb345c6d7a0791a38142e461de90ed321b17ce2db490d05c433d5fbab1f270452cf41fbc4827ed3b672197104c39f034b809965dcd2b28e0c95ce6274822c0ff9379b964be73354f0b568bc04b3cb9e1cebe109b7a280d0330b76433123907761516315ded775312bb851de268ce3fe2841fd4b58a8c1cd1a31a6b2e23c66bd79cf57967451295da9792b83256aa3ad5e336a1490a287edc1d2d3a8073568e9a85f62c608f9fb26339118e80360605a986c0aabc024df9ff511671c74d16b391a51fb601827ebba6f71e8cb301e627c785187e88b18d83714e4b81daf27af9574cc05634687d085217c747f33f3699b072ad55490a048ba1d9ba20b2d87f1e52f544c3e4ba097d8e92827021a3a6556723a8e0d30f03d7f8634cefbd71d0cc5704c00a1c3877bd04e63743d8bfcb5b752bbb7f6274935066291075c25b803bbe87190fc1f6ca38d1378291543e10393c13f32a5cde4ac5b0f3cd5ee046b407ff7d67433b3970a7e90124238d93a82f765369705b68ad93a1235141707c444bb025fe497ecc4fd749011cd5f06008ffa90013735760a769a596400932a6baf61e0e9006f9ae653ac73d9c7c89430b7a86f6267793df6fe01cc2a4836417e07e9bf6c50d6fbe00879c884c34059f5616b713ea2b1a39b84c42aab198b828595155b651456d89e867775f167a6f838772ba02ed6aa4995864eed200eea0fc7e40b1d40740369124331d5e0524b50caad06493bc5265caa14336d34292527e7cd835b7224a9270d2c936e8aa4debb1c23a65162e589eb5b0a2ea3271fdbec4df06e141d0f3bddb4a160a5883f4dd19f170555c2bd708de293c011300702521336227ba75ed7ca045b6a0535942c0be5cc53f2cef257dd2aa539af1a46cd38cecb242eb3ee2af19cea9f9e69998a0538c9699bde739069a1535d229113c1031be0d11fb228da88f3b58e4a8a22953e6eb539303937d98cde136d6cda406405648ffbad2343a05acf1cf0966993389471d34e817e98753a12890562447fc787d8a3e58b4fbc22ba02c0dcac97f1936055d33578f2614e18e9d1cb6804bcb7ccfb2b46404caa6b1d785bcded9636ffe038a8663992c6fd28ddb226fe4431498ab59ecd0fa810d71a97f8153c05493442ee22498460c9e7adff00e9845d29c6c825bb2ac0f8494f4d01220a511c1b7a275691b68fe17edd29ca2da84fffb2d66c97febd25f7de82ff168ac516233906f0f9b8cf39db8912ef3e82a8c5e5f16f56f930a203a6fec78691094a4062b1160b8d97c2281d2ca93e562b16a4eefb7b9be538b1374ea5ace69b90a2b8f235ba85d7087d5521eb0b236ae9406ec94f7f9e1945826992784a87ca38945c8ec8f1017ad83b3cc018f448b5e593f08cc6b0211dba4ebf0d5019f727bc4367d3ff02817d32ac6a579501386e82337a88118b5ebcdadd4d6748353f0813d5ce335f3c1cf0065d096681d2cfc345f9864ea574362be208d63516c6097b66b151b3b99432721675892d91c40dc1ce3e1af8f71d7226cf9f56740f238a67c05bed167a92deb3505418cf4046f0acbe4ef5f1290fda648010a3bd42bc36eecce91b47da78347cf745b8d134360040998aa2bcd800adceced50ce4e7430c0caa8b22c4f64a2a10f8f9007c12613a0528c73960cb818e1b1183680af02c3189b7b49861db490e400d0a793722269117eb27e8eb55258796e9892a3d74023335a02bdda4b06bd5aa7dba0da0584c04bb41cc08cb9d7b04c6d527eb9b45fb308dd72ea079270e111a1b0a8cde5c6342be0e3540946b9cb06c97f071687a8a3e05cbdb8b3bbf11e5bd8ea3dd0f9061749007018e2ba942edcc254179c25d855691e4779c185f917ffc15197cf3945b235862cf438511cd3a476a9d87fe0868b53b8ca661d45a41704d7b3cab4e9e946b6c7c482e829ae92b71548e51e600a3eac37b639da53028f3ac1187f02c8e9d6c4369374897e003a4bc6e5273503586aca4949301b7d53458414a9480a54e26d96c0a776468a482a2c1399cbc01d442697a8813260947af2e7734a4b77184de619a500f7a54d4828dcead6de343d489ab7168735cf926eeb1ec6602c357a8fb10731943ba881c6d76e4b580e3ab24e1450c387bab7dcc4561e5387a1446e3a0bea4550f4072ac867cfe2a4d72740ee997369e68c79f35e59985207a632a42940bb916678a61f0fad03dc9bb72d62f8ff85c7a5ad9387301d0b3488c2d150d1eaed228c010fb799da0e773c95bd97b09ea14671b71d8399c942f4a6f60f5e09d24a5722dec4fe516eac66b6a1363de2f52c1a14cf87ef772fa1f73499fe9346411a40712e703f3b6ba3cd5a5c51315ba058f1018cdb3220ab616904b24c7f6ebd82be1fef4a448a1602d0bd3912d38057991ba87fc6f8ca43a5a7edff9479a0e6aee917607e90f46d68f1cfffdcbb9bb9c751cf198ae65726dbd3cbcf60c20772de75664f4a2a903388ec41be308096aa365b3b841a2053a6dfd713a956ee3d20fdd16b066b2ed5e029ea2354c75b18a42e81845d0a6375c5172588740ea0275f577b13b04faef898c066215d0d54584ca5c5507c48556d086ee9c2825ad49a5136c52f6e56a608e48b2d19b164885bde830a668b387238dcb3a53880b92a8f985c0c2c9cd4cb64f88a72abb479cc6e93ea2c618a315656a9cf5f5c5a69b7a87b7a328e25444e037d601a47b1d2acec814000faedf0a5886622e98d79f468a1517848b522a4e6bf9c031e68b962a94705b04985a0b7907f0005f07b256e398a3a7f9ed4cbd1cf92810e738a9c1a14f0cae47576b997be949ebec9073ddeeeef7d748a93a65cdb5e4ad47d48b1167d44a2f56d7689b736d6bb4429f56409e414d8f7a2d4931815ad6ae3d6358b5fad1451e89438744a501b53ed53f6e1c3379421da74fdd0e7d94f8e6a4b1ccd8894b64580de04e273f335771abee1838a50381f9c13001ea56f934cd2d4331d03ba492ea5de77a21ca1c4a82c985b00f48865e30a5d1f004681a19c62b5cdf2866d0555b92a80797bb234330e26ed9fbd5f1ff0b0a77ae3e040effc717e7ef517aaf3dc5b3e2350f195318831cc33962ed1a97433bb8359d174bfdff878e3ca9b03d0045b68afc50fa4f2fe68dcbbc352813f501abfa6da833627ead284a56ad03f9c5e440b035061e207294741db297bbb9349c66f336277d5c5383fdab45217a0e4fdcd9c04bdfa48823a89d439094e24ffd0f91099a008b86fd5d77a3b5b57fb27dd418fdcca8c7654c2b794c54d6481bf5e29baa46c7799ccbea6f7b18176bd74865959ef546e60ef207fbb927a8476f977cf9b2d472ab44980ceeae127eda887432a864d7b05e6b6a9bd1377716c73725858fcba27d2a612ab60df9e01fa82644b292084be5ff4ec0333da248811a7bf004162ac72083206dd6c1149c859a0f43c1ad7b4cf8b907d5683f0f288f6ec51086f997eb9d8d8729fc83a85ba4613c4630c692967b3808e6b4c417d7d2038d64392d669b10c8bc0ebda022bbe805eb4b143af84f7303c6a64bc02c2317437454a59c441060c60912e03f173fde121c213a2d30540ae4810bda28703dfdf42fcc197a65bdfb78d10b7d4b9b7d988048b7967163673950f8a83ad24ca6b8f5420faaba8428fff4fe81b7fd240b0c2fb5fc4e322781df700c21bb17187ddf30e0ec69a2eac417880b166735dbbf3366ae0bca7e259bd32dbb8b4d6a373267e915cb01c421b19cd0e645bc19928bbacfec908db838599904f0584e2328beb8fd9d51fe7033e8fc612c6c26c8f82ee7cd07735d1d2b8bb62e1a30b0dd6523937bc15696545310b9d15e083a6cd8e4d2b10c3aa7bc7275f021321a30a6b83996578441bbeff25812a8635fd7cdc862404006c3a5d7cb7077acecae8a342aa16e1666b6a5a6eb9fec93441548f0949610390f0dc803c49370d01485f1fbd5c9b37e2e04d5a25c3ffd0b081b25612a9a94ec8921e303c510b80b6b2400b56a63718d16d079d1a8a2be439ca35691d982bf3988cde48247aae2054c2c077a538d333fdec7859c2b537988a99776daa7175b4bc2c500b10b91c18e2ee37f2a080468594012598e22113b5f350fe783655dea251acac8a2777f54553be35445207644003444b66a92a150105bbe1e0f806fdb596673eeb7e19764f820ed70e15abeacc7f81d9dcb206c16494afc7733fe60dc071fb77ecf1816440cb7ff333907a283dd929192ca8f8b41c818042710d843428f01f474c3bb1212b2215cb716c7f3cdbb1e3675d287b87368037523f005890d9d0d998668ac8144a1e58699b764d94a184745768861cd88b5c7bcc578bd1d12f10728e42d7dcbd3b5fb529d69209cb8051ec2f641b19787e07469d2e1e28829f43fc38cfce7f2a3189abea19b64a0c8a95f86c99adaa21e6ccf4c7ae2bd0f13aa1e29c7a4f4a1786c977688e5d97d4d6f652c5e07e8303679a01cb11ebde398b92060af0cdc88334d0a1791b8c9cbfe4a879604a0245fa094871497f8e24154c91dacd160c8a1406fb4f49b372eda9ba785ca2f4cb2cceeefe1755552556c963eaed50a8c050ca5702be5c942d6733d814e3606e9cc33b74feb8f276c823774aa2099c686a3acf9f033bfd31b75562623ef6217c2a3cb27b98b8b68b346fc9d6454d08284b4dd322730f508f514e14ce4856015d5c6773698566086af5a2bf0e09b8b8688b28ace4e7a9a8b0d7a6519d1f738a007358368c56801f899c3458f4699c388ee5843fd0967e2b877d7033185f4140348b20b73a9fbcb6dd3ea08b07fcb263fa4560039c8f41ce7a89fcfe2a00824674ed4ce9798e8fbcf9451d91e2e1a47efef829508e7da391d432f5c3aec70f0a25f40c6b6a593e2ded4c9c164ad196b45c7cb078c83080914a7fd29496ded751601de9399a69bfad3530c176fc5bde29b559d2545e30f8e58509a9c6201654e76adbe5bde174c5d7654b566d862eddae5dbcb46565b83b494c578bd10d5e03abcc43568f2310f6a7d5ace88eac4385f7393d27189996ab6f63bc5670cb5ae7763ea7fce0d7103059d8e31883edf11aa925345d8191dec8edb8d53390be76a209b68d7fe97c0d07d577581b55ee083a76aee829830c371e88b46c384894ab24883643c07aa034c2862964bcf51dd281b5e8459434eb3216dbda4d4921223cf3ca722afca62362d9853f6429b9d8ae8c0945eae67157e0eb1705c470eea116937eaf251c9a99f65ce010129a4393b9031fa314e8a6cdcf2f393321320f50508d995431206dc215d99a13053789293436bb35b5abeddb0964070a34cbe201422354d97a4b36bd064cacf10dabfe387431bb820ef4970d14820653196d8807057e57c00724d33380deae052ce94d70816b5445ba1ccdfbd963b6cd5f7e544d5584d35bc3db84b538d986c318e22858c113d7140ae6d2f76e8c79ec510c58418028f61355d62bf629b823481c4238efb74f2b7284c4045c21d0db80a2cdd99f2659e80b7764f49f9b96714359afc4478bb7b6f26f1c4a6422809a9945eb3122acd95f81caa707b4f0a96f959241f818b905d60cf2da19f0e1faff8cc09629a570e46035e911414d0a98df7b6f475b41f894cced72201868fd432a8a79af143a6bf5146bd9227b4e0a4878cc8959dc281ff9a421d839c365c27e33fb71c1acb9888e937a2166788fc2ef197af8b25cee1c9330a016b62e2079e61e0af2676fd804112058ec979c7a782cd14e1befc7cf52b9a8e82ab2605ba82d0dc7e1e7d1959fc96905344fd8cc421a383a5c552a4f689f95ca0bca0282fe938a0cac19ed7d0957fc3450b59a72ab35f9dd3076a982729c5227cf75e92bc760af956920183dd7d94710c845494a996a64bd45731c29beaa2ac18ad145a3c0810ae658fe08b8fd09609fb24f192b34c6f1d30ed8fda3b408bac26d486c6c04eba61eecdfd564c615290a2956fbcefcb82b8ef3c78a02dac8419199746b0d3a94a0f5dfe3eb000bd89c04f8b7c8881020ca993ffc43b3b97643bd87be1fd53aa15ed01f0b0e2d5f0ff8154e10d50dc132fb5f17819150d90cc4c7aa9e3f1a723374bce42ccee7b66cdcf7440d4ab629ef980d94bfa20c4f1277b863cf1886d9b6f8252d75b9b0da42230677384c5495f0f2e2c7cff1ad66a03ec44a0e73b5ccc56d3e41ccd71aa940938f5ee0fced6b94b2fcfd1244d7f3c304965c9c4fbcdb0e49f084e161730288593fee876141e80df263aea84de893acbaf53229a63050ae3ab8a55e71e8d4a10606005d491b8ab8f59a741f07412a8b87ed765401b0b5ffd908955242a11a13c71d128acf4832aa9e7e7220b0501bd086c67a4ea20dc32029111675e48bcdff388f4b78193568b50ded745d39cac8a9894b557a70aa0324c4b5cabced71f66b33f29baf6181b2cd641cf3c0283e4e44081d109e722956051cc2e51e724e57712ecdfd1d6c9004d618bb4ca367835f57ece4cd0ef404dafc44becc2d66400747d2c93c0b60686e084d43243d387279846d4e942b8caf187b141613717366271f7177d35e577c478b1c447a87786f02999884da5c06f004bc13c853f1f9bf06e3e0b351ab64665117a54ca82f6115cee7b5d9429597eaeec09377ef69b59c257d7c06f8a3a1e381cc73bd199f02ca62601596731297f0dc172200e769a2bbc62537a18e303e24d4d73a03f71bf312886f35d3137923683a54bb9292121b4af85a8ba413c0cf19c0f8f8a4cd068708ce8bcce5fb3c81ecf90a8f348821cb285aeaaacb0c768415eecf802034238eebad477b3a1f822c71524b9ceb80da1620cbb0ca3909b68fb808240da91cc0e72d58754f4ee158ce043cd3b794563428a1e869a2846695ff4d2629f87b357dd6c1958b46d381eaf5d0095472b419511e009aed1e6f4dafe90610b8104c053b23b72c9fed91a95c0b878af18c9009488cf887ba52563c6066281858fb5085566f0ce41a98a8b03ab853f2c51f755e9244c8c6ab975edfe2f989c472006a73f78730b027939dd6a2aebf94e1797304e06aea6595f6d4f1b2b95cd5a4657c6298edb2bd63931ebdbb526fad12481820687278142a8f8be0bba5b18bb434a55d98dced656adb306865975dbc75c961c56ba5b051b475437051a83bcbeb957ebab33ab0ed5b9412a9e638ca993315a0d41acec15f800cdd639e1d2d5a0cb20eb776b40fc1e19bb13aacf10a573215befcdbaf034835f80e9101ca86d666cccedb010ed7d4c1f29f02ffb8a9abda784d437d21235f9a29eb3dedec13d2c840a2f24f8a2c1114117603efb6c286ff3ab8c8a5c74955354e7c9094aeece783e79103a2748834c96d1d39e40208e71afcab9402aba62fd387fcf9aac904aa49d58abd55d3d70d1b877142a9786ee9c316b24264ae4fced56b1119f9f4f899882752e6deab097b8e95b6d2ef6cf0e70c9ddd225b5ea0d26b32b3214b237251a755698839863f6c0830eab61449178672542509288b3af388d951d99f515e8af846e4cf8230ebf14e3d5c77cc8f0481eceaf701f6f1763458cadd77f89a9a93e6c8bef6eae895a1f03138d59a13abbfd991aa69f50b092fd08743886e049d03c2f670c345982d15411cbf32aa9c4d1b30567d9c61626f469290b1065e1ab25905f900f9608af82af16012a04ee3f13f4706fd0e1d66534d10d95c439664fe77103a8160cc369901b76de2003d3e7741b938987c620eba3afe4128ddc31028f55b757a10b559df6be1c79780f89a449d7defbd5aa81a5bc9f5c124d24586ece32b1d2a933c9700e1dd90dcd29883352a3fdeaa78987bf73595e93c35d1fca901ad7aae964a49386ced0403c2e31855e2b0554514150b6200b3eccd6cff21b2fa4ba25331cbf109c73fa898f82b5e84585d4a28c050805d49baec753d4831b41d2014ad8572e77881945b3eedac22f390407f0ab0583ec39a5b615f40d400f9946421071e80e49afc4b3e1949048f8f3e13936d21cd0364cdc9d5d1ac7bb4ac17051501894b25aa6547d6bb47e985402aaf5bf81e9198475c7af2d0272d33dd2faa671058a98174c9ad41448691d221d047a265d8dc433a1b4a6a5c1291ce3a7e8060450d86af3db5b9b8c4d5fabe6c96b055c7054a161fba1967c303cb364b2433d099ba94ea6d5b444dc067304a3fc6402d9636b1cca9b90b95bbeeba777ec584c6fb492903e3eb59c6609f5045b48661d10b2fe5ca448b66dfd8f038875a782cb98f277c78a6ddfee49898f2e27ac558a9fa015e445c640087c0e25fd4cbd1cb11323350a5a4161c46b0998c2cf8864e229ffc04c09d1871096a511260af73502ee2af91e4e65c2762446e10ad2503c1d5741aa3ed0fdfa68c278407beaf938bba524cc4ad201f1ba4ed2897679a3160f5b27c440470c220ae95f32a48ab36c331dc4f091b236ed01fb5559971c278cb5922fab15317ebcf483e1d1f36000e991046867c2f82232eae36e22624c7f127129e45d7c5fb93215d4bc1500c47028c8d3d6b37eb3dd3d083a44fb843dd61d3438dd645ad8fb27413332048c8ceba576d740e31a425e0bb47c69fd5c3917320d46f04f01aabb504a2ce5c0867c8021089fce816844c81e1f85ac7b9f28e29f16f19eac7c898efff450042cab2d3f1b2dc0b2f6e74afdbdad54d9e4926fd049335aca1246b83ac0fb3064200910f6d72bdc06529926ea903d83ae8565451e0b2c59bc9e111cfba942e3bd240c279510b0c8bf24f21b56d0c80946ebc374a8ca6667df7227bc3a24bd52cf700cd32ac114e303a6fe8fbc358f0af24207557765156ff63662cc9f7418173ca934392cfe00e4bed5abeb425b26c60fbfda69445d866848f9f879b022dba769447d8bf94d3e2bffb2a30c533c8e70b3fb1fffb528ca41749d0f3afeffd67e542146cf6013b11ad8cc67a6dcab6c61b133cd463158bee69d79e9fa17b58006cb3343f035f80807e7a43a1669855ccf296969d5784cc9f3cd39c7b8615bd80331a6ee10f22d6b171fa26acf1c2c44e9bc18a0c9effc7012a09564eeca8c02cdfd9184ff3055b3796575f597783e5c7466901e1f37c47a86d6d3ae1a48a5693b97fbd684cca194157fe23865f91c063a408abf97f31dceae386b325e0364e0c9db8c1c5b37d0ca35c440ad184e904897c40adb853031c4390670aa0534c711d45e05b4bbe04d5b8c8063a6852c20602c2c1a0c0e036a424a755a20563a4a0786e591d77b32de6fb8f129c22bcb108c5764c29e8d7e77454253752fb9069780bc3fee040100c290e7bb3185a6c0989ce0e1ac6469fc0ca8645930a1ee07b102d7ffbaaff943c038ea2f37d97bef2db79452a69402c107fa06f906e18f70a73f1e0e7a8f8327316cf823dc09422305257d45f8f9f383d80b82f8527ecc3af2e3c7ac13431284fd354f95f4a5a1791ff77bf2d8939e759b209f081ff737bcf8363c9aaff1e8e6491a341edf58ed27b98b5b27cacd94f51cf65babe685d907f43bce935d7f1edcf5020c5deec1473c178c54617f2c5d7f7f3be7d3106833e2c28db2e366067505f59100a5ca12bf7ac32d161aeb4e69431db77bf6548873bb9bdbd5dcaeeb707ac7ec683a18e43d9dbace765dd7755dd7755dd7755dd775f43b6b2dfd8e7e977df75ab6592f6c128476f6ab5df6dd0743b763955bc15acb654df6ed17f6a54d9321d922a46951534b3606734534dc37b758fbdd6b5d57afe60cc9882749dfeef9c2d0b7d3ec66b99f69e4e07c9e8fd33e3226de317fcee937c4b91385b21913e7ccbfbe5bdfe4e2e0fc30bb3816e8774fb915e877f6bb971c03acf57470dfce34d2d2654dce63df7e30f4edbefbf9e034b2761a6dd79ebe10044da867b3c2d31188b9a7c831807e679f7ab30886bef69b385c6037be61c674e787739531394f38b564653cc5aaf99999a9c579b49f3f8be616e7e10c2922dd3957979b5f25d73de785dba59f7deea9d797bee6dc8f3c7d2147dfc7e7ea863ca4836016843bbf7a49e4ffc4bf34d60d25c2ac2edf4b87bd71a2663cddf861b7f58ef82177e733f7b0c91e06799334d3c53e4977b10f81268bebc6a385273d78693356ba78192a5ca218295bb887d24f28ce8333c6721355bc5c2e77fe65e56829e8cebfbcb04990fe707e4093753be208400bac0af591e3023018dfc6548a73dac70eef881fd909908f6efcf015b033e420cbbffe5516e60a425a866cb85dff175e903f11c03d362f4977ebe54d5491722703e66b3f19ebc0d0977ef583a12f5211b5e62d8ed712c4490c2a4e64c1030da45451390e3234004306408831050c192f1ca12509063ebce009a50df010668a122c0531030f40b041bc706851ebe6c30d342b7ce058965e3e1a23030c05213e40c65cf1b75e660c160808c1450f7010c54b14243820842b3890a982050f56635c778bfa3131dcebf2d198d50dc129e45a00f14c3fbc13fd83aea5156bba88feef0ffaeff8f7f8fbb88311c1142950ae30828a29564a40040f65c4200828607c20060dd5b71a274e5c7777f71c49adebee57fd160388eb6ffd51ee476244b9235c3e120307339470830c4929e8c20757988964c0b861858220216200832b278451c51527c880228b323230040f4d2578728322b660bac1075888a0c18c29569061c39804f8808975831e58d9820c0b72e842054bc4c04c1652ec9c01448b86161363c8a0f2309044191272411059aca480b598424bd2962e55a8e08b1fe450640562d8e0ca142858e085181d55c6702207312d1ab43a00c5105b8e18820558b6d8f1822861fc60430c8050228231c50c15247a58420a1db214f1c5049ce86228680536a0a18affce1538d0b045d00c4f0c2d45d1a40533e8c08511165c5e3014c3e048526109cac2072800a28ba22522438881933280e084882e4c70e932c4a58b0aae7e1c59b8bb0b6007a52a9aaad800c414d10b225c5045c9861f54b0c31839927024ed70fda5bfe5288ebc18e2d6911738dc104748eb427943a0ed3aa5578c743673f13db6f792ee2649aeebfe6d553af8cd5f4645197d0b44da097b42f96c5fa8cc32fbb8f9ab0cc44926e85087903aa18e4a27a5637537744274091a326cff0d246c5f485797de31e5852471601b76307e4b29e79c524e39a594735ecf92524e66e7be4c685abd9ee5b422bf724a7bd99ba779fc3686b06d6518acbe57ac62938aa333664e5e6c3ff6fced81f942a08d5b2b28cef2c0482130d256d3021bd65c7f57d59acdf66bdfaf71cca95f78e4d6aff5e55faf651e0538e6c49c1ed8108592922b0d16256d684171b52ea4abcbd5ba9a6816151bdebc7cff25314555ede353d342fe62c2171bf6cb2f777a40fce546276cf861d7f0c4c92039c13fc8a08915f0a00b1239c8bea7960de5dd818c2bf445e5c7292f4ae5472929fd282f795d94c6f83112411e24a5b376885bdda216a5763a615e78e462aff9c605e1beb2c07da797f28f5c8e8523b7bf907b79ba1efbff98eade4a8e85fefaf50b8fcc286ea042ada37be2810d3be8f64bd9cea294d22935187c96d57cccf1e65e76ffc2e9b1ef4e8ffde9c3fec8cdb2102533efda3c677e19f619f6fdcdaf272c2164c37f6781a6f57652c24ae622eb9cbcb9c79cf1238d71ce19a3c739638cf3fb630c3628f522061adc60851935b002a68b19b698a1a82905506439413b3145142627547841c4c5e3808c10d393294558660f45dc9a734e13b64021430e5dc0b002e9082520d8cca33338d450831243bcc0c1c0b283a45f84a6cce0fae106973ac5d216839818cac46026e849109420294154668f09d705c010e206232e4f28ad54930c1032e010831130d8a2871a634ca8d7ac934aed6e2596221428ad550e41508e92ccc832314526504a293541a3218049d3831a2f5f68d6da66440ae2e60d5c6c71e483279688423595be48c109ce00a1e88b6a462deec4cc0cc1759399b827b0645460e09c18172e5cba70f1c2050c17250a562cbb8e669605133c3051831a4ec3192174682511460ad53c810d8cf0a1871a48d1c58c0b3768c20b5213635e5094e403241e3134e050a506369441e58cd95dd15d4c73fe305453932d91832d43d7c7b72d731dc8151039d182a224acf8010c72200316539ed4e8110421222b749822488c10586d61d818013eb71c55ec976b2b1253aca49a6f24a69aa8e61f899689f37cfff5fe3ed0f7a79deb20d699ef85615b70b0bf88832a68d756a47db8933bff88f3b0e4c8ccce8d694faf368b98480f09e62da99e122007e7914f0b2b3f2e882ee7c8a2688c13d6a12b5febfe5aedeafbfbb2b0e1c5e44c31e543e0aa5a1413f7385df95e24df5614730f70951bd9f062a221c286d7c5d474918ac414f728d03231c51c7911718ffae083f4fb2e26d47731588df35cc59c0a342d3b31f60143adcff5fbb6b03164a4a8e2afed237efd30bbfc8dd43ee2e745bd030aee513fcfc15f4431d5ab8b89e84aa68be962baf22f262f42c5d59517d2954d57fe55ad45a15e729f2f7d4936becbefa10a82ff2814957568a3a28a9021448a80b1080e04b14cdb40ee0b8b5ceeb79d1e94510be4b8ade606a7c89dbf69195641f0841616259842e81055b2fb10a847724bb6ba9e1aeab8fdec38b76ffad4d37d2190dbfda97b1f7f5efac2eee57353cb58387d9af7377cb07a3d3d4c8c3101138d81e6821e89854ae44d0d6a866661b36636083b887d21928b7dc55016cbbc1a7394c80926288e6125f61730494a4dd4b1ba1b849a488a266aa22f636cca600282182ad28b45441ab7f40e8fb188de21fde30daac67234a25b5431545a552dff35676cf233dfbda01bbf719e9ea177f833f964bc31a26a1c6cffecec18ab18ad3d7218dc5a51d1ed94d2b46294d795153127ad15bbc1755d15c33619703f18967d6b45c5999eea19476768a9978fcee0f21d069377185c3c0ca13885cc5cff773051fe60683251f0ba9bd12d9b20d78d1f6ffc422677c7365d8e42b8fe4fbf5c8e655c7f1ea094ebaf637a29a2d44a4b5a745291d642a99558462fd0b1c3a3a786b9f671aea9f1b6a8a8655f0874b3bec1a96147555400a2d87a6b6aacb0e1b6394fa8009b20ece0cec03adec930b920d7d5b7d6ebba7cabf1ba6abdaee9f59d9108ed0bfd59c7a394b2e576638d524e4e059f945ed7e65ebd9553a1af641df76e2ec6a9d01795d16c6699ccb22c7a6759c676a3973747f06a5874ac31a63f375c10bf28d6b15e6c58ef17b6fbc28692b3cc3bcb2e072bf78371c6fdb0cf0f2d36fc01840de5e5b12339b65158feb83fca2424b8ecfc492629c641fe2d44d28a146a2581f1820445aecac4257ea21eac0cd1d0d0d0d48b86d2d0d0d04c1a1a19bd6b44b9fd7dc37e4ceb38eea7e9f2db04d9d9aff1ec1dfc59a66ddb0f4a05bf35acc37f3afde8e1c13aa89a1d1d2af80569e89417e69675f8b91fee7c9bafe45b12447495f49c9a754be452d1bf423f262450f1c66d27eea776dc8f8c1265b7f89da42df7236d7eb0a1bc34346a74dc8fb461e3b2d1d9296c72712efbf6d3712aa0a4d068844dae4d10794326d7b9ebda9e6c82d8eb4faf7fe175e6cc991fdcfee49283fc3796e8cbf3eb581ea394b263692e3b2129bfcdab2da6af3bb7ac0843c896e4c54a0425d60fc4acf8088c27d78a30aa9492534da67c11e20a268a7ae0c51755ffc6a913acc86006251c0c41864932b54ae0a5550225ef0ed3cf4b566cbc9c60a59a340d30a2e86f8cc4d40de7f48d8dcb5d5220e5de10ddf0e6d2701ab79121275d1bf9a570c411abeb7fe3296ca81f07fce2f6ebf0d40d553f0fe7e1232e966e7f8f18551f75e1e5c6eda32fc4dc7e2144fa65f41a408419af0145ac1ce46ba4a6e9f61f89a92759421ab763102eb7ae58e25ed13dbe34e44b2f0051acc579170afdf63ba7347003152dc64441431251a8fa334ea57044099ee04285872458bd9a4e882e734729639473ca395d0cc93374d00c92594d5a7cf7e85f2d46ba980784764bc952d628a353fa5717eafe3372a4d3b5261792832e65eb62dea43458beaed85a3a08d9455d4486c631851569d575d58e2d147136e2affabe094d08f770ca44cd44296919ca44c9889236d1a699a435d1966d8b510e8a9a2807326ed9b2a5051e245bc6283d4846271afb443057ebd87fabeed1bde8ef513a4b8ac6cc91238ef3842deb17026d60f6693857d8f0e6dee0e078204a8bc5016bc52a567379ecdc98f28f7f79f632a7fce9574ec51f3a3dcb59d1aaf378b773bb7b678ec52ae7bbffe593d279c91a31cf7ad34ed1dd6b0b409c779095dcf932c6ebfa6a5881b61b51b1de18d946a1318e26433b996b2ed7b82fb0e4d971fbf93de79c1b87f37b34b3945ca79cf3e9949175e80f9a1930a795c52e1f85e9c156838d978fc2207167d879f9280c131b10ac5f3e0aa3039483dc37b461b45c7f596deb280c113cdbf507fd77b80bd41f85a172b7cb4761585707cc58b5ccdbcea989b4d05f91c73164bb57d297737f179c87a340ed83254decee18bfb38f436eb673839a2f65f43a80bafdbdb0fd76fb1660e89ec6b81e75fbe58d1b376ebc8f1fb9375cb8373e0641ddb0c9d08defe34df3750075c32645377e21d0916be333fb6d0e6e9b8d1b9745bdbfc6dc4f0da6cbdd8795477777777777777777cf6f9c31fea7312cdff901ac21211f8696fc06cb861d1489a0a094522ac473e2b74d11eda448b3a4745091ebba2e2781b76cb8d76b2b44975648213841d20bae8fba2e8e5cf8a90708d8659beaf23c3e8141f9d6cbe11cf99d7700ce917f1ac095cf7941726e68e4ce671df996336cda9b0489add5a7cb329cb653eab43dc9928a62c2693ba54edb9d8f40a1fe417067a7a7e7060d5626a1492f5ee99774977e4906674b8e2779a5568123430d453047a3b885bb20420a0adc18b4bfd313533ede0c4a06199421923b2fbd947e4998dc29595868b2cb34532735532ff599669217bca1021bf617e9ab2fb5d61ac18021c5c9c4302270a094d28a591ad4081dab13eaa474acebbaaef61d30886e05363e9138e407f7b8287d7a51fad7fcbfe6e33c4eadf3ccf5e85fcd0d1909080abc14ee1c41a264c9ea09149614a11edae1d2d33e309713920d772ed0168f9c9ab0217889ca48924b62ba70254ff22e7cc9979c87fb7907fd2dea4120429c873eff10e6d1f3c36db63cf66536a85806b39a9b01ddfa9d93bde482c88b3d23e1b00cfbeaad9ff4be68ee7d910cd67aeb927a3dd7abbbb99f9d1e078bc07cf2e05aeca2c61253a7e76f2266e21c30fb881ab2422c66fe0ee2239cda19d2ad46721e2ffda5935aa9c5d81523ed740f0e469ad59e4b29cd1ebbb438183f20af9515bae61cecc18b89e0d220d8a5d8b70a749eec03eb17c36e7536b043c0f9b1c9962b23d23338afd7d102fde20e655087a655cf8e5022bebbbf7b3b77bbbbbbbbbb3bb7bb7b3f7bfc6ce67b0ab72f4bf756c550235cf62e7fce8e8c81da1c018655d56315e6b14a8579d5b32a5684423a17290e46161857e00e8f1e1f14840c2152c4485c45560c8a3b4496181b3ed8d09bfcc6c1783917a7ed943a6dff1a180b96a43fa5c757b6cb6ed92e2f8f99c1f95da9b3126193036ec51a463856fac0ff8c92af7173d39c4224370912bb82253430829c739320b9f359a2b8ca131c95e9e1081efe3abf656419f9fab25a3d760c638c912bb394ec60d72fac1c3f1d742758d4d70ee33bbdf3c6d56516d8e8b27f6395e6f208979b73d8db916244790cca13983f5e17b841bcfa9c8353d9fb4bcf7101dc2fc7d1458d40835dfe66efca0b04f16efcabcd68247bd09a7b307f88e3f27b43b061b3a4f414fe9a876be717a274b89de5c6d73ea0b17054605be86b290ec6d04a8f8430366cd6e53c156927e6c42ec27e2744b1b41ff756cd9d981ae235d2d47280b1eeaa1d142adc61779e996a2a9e792dc57358ac1331edb3e798a37d8e24fa5f12a8b40f1b12a93f71303a1427618a8d9c13bf56797db57272bfdacecaca88c1f66b1c8ae023c3d807f6fca196802726e833aa2cf5b328a9f74716185034b887f67dacd33eb2ef7bc7cd4e7635671dff90c6e5bfa9c12230cff5fc36b67d6cbd23b53ddbad7ddc9cb2e7de3f7bd33eb0e73eec2bd23bfc6f3e4fc201de0083fe12602eaea73ed04362ca02dd60c842b8fef4bb1284526d2fb76f48ccf1ff22ce555cff9000f12997020658c7b91492f4196f596be55a6376aa30d42b3f2339c02421611dff4b35864ffb48c23b20c03cf2332201e6a19f0b2db08e0b2cdf90c77599dade390a589611cff16f2107db2ec8e9358d90edaf517e708b89f384209021448a18710108899225bddaf989403c07480e236cf8f771bcd018c7c6d79e38d8ccf43fb8f1773cf5aaf83d4a37fe8f3254f151701e3e62b2e2467be30bf1e2377e91d88e24a69e6489bf24fe1937fe0839d8cb476386d870c4126060435eaa01ba3efaf545e6580e7264c526b4074495f6fd1a09642c73cf53a69b8e9cbebf93626a8b278f6b8d38491104e987e0ec71d59198ea201ab6a12d862965bfa91c2b2e52dcfe6e79aa53f53792174fd906c3e5368ddb7c448696dbdf4c7472630182d21d021958aee47e4eb78bbe1b2cf731992a26598870bffdf6316130b698420929848c562b15f7d5981384a5887bc8db4c59a4c8c110acd54ac5aa2cf3fbc1727ffab0833aa8d65607b54e57b6f7f1a4a5dbbf7d4c9aa8b4f7f1262607fb81f4cb6ef597d6d5be2e2241a9c8571a946ca5f54b319e62d924cd2c7df67613df145ac973fc1d13b37443d9745dd1a5835db99fae72e38725e160b132ced3e43cf3c3cc38e8581356c641ff964d54ec5c49330e7afcd6423915fa1271653f5da11168956cc2ca6066b026d98495e178ca56548be6d79a5ca0eb492063c39d9d2307e0543dc2ea00f5c47d2a0270dd1b8201d895b87e9d7970fd1110499062e73f8055d7ef385804530f0f07773e240e021de9619deb0fc0399e14002afe8923ae6f39c0587af9997b40545ddf4eccf1f7f1b6e2600b6cf7f0351607499862db1f47c7024b448934c6e9846cb8d5ab357bc713b30e4e2340631c2c62d98deccc2c5f3aaa7d380e336c08def9458e002151b284c9e6df9302f29cf955870e1c9c9b230e5a6e1ff2f9fdf257a477cc9fdf33708ffe28c03af3e717691f7c820d506558fa01cf5e7325e338d87f837a3e29614f3cb0f515506b96d9bf845aa8ebb88eebbaaefb8cfbe9dcc6910dc1af357bf7c2b602b473ed675946af99695b68d8866116e32cc67d2f6098b65119ec0d8ef35410f49cfa58c561aaf5fdc371b0da1b3cd8b0b5d8fade459553adf20e6a55ad4d56abd50a484cc9af55eb3a1b4b58e9452fd667b7bc75d60b79dcfa9c07045efbccfdd8f7f19b7f1c4f0da9aeeeafeb2ba73835bffbcdfb00f61f5052b78fdc4fc7fd5c2877209c53dffd3989a42cee559348a2e2d6eb0b69bcfbebbaaeebba2ee7bef39228e0cc993382f4dc10c83dbd8f7b0a5cfdceeb40cf3d7d2f709f10076bfdad77b8f535af75e01df559c8c1fa5458a77e4d181b82b53eb843c479ead74f0e719efa34c8caaf5762b00ee439fdb5d66f1c5a68fc230ce14ba4270412ee8031874bb89d191b4aa09edb0cc8aecd652e057fc286403db743d9c4bd81d01827c488aefc783133334f9f497c3e14badb0c2b040b002797e7edabcdad6916ac23db070e27d279301a4fd89026718f78e55325e799548cf3cc2b79b09ff3926046d3929711410912c6b0214d4a8ad48c075d529c8799e8d2951f39154ef7bbc14e957f8d211bf6c54820c38673887e719ea18985b6628a22c5d454c99e43573e0d8a29a6ac2ba57c11a0d8b089b05cb9dd130fac0d266c38573694b0a12cbaf2439ac44764c05cbee15c5df9b2c8a5114d8a2956552b820c5605bea1944957be5cc51455f21cf9b48c5dd124d6915d1936945eaefc8d7b6983c5863fbcb08e7cd465ee27499fb926acc06eaf517111aec6dc8f4d7d8f66f3886c0ed85efb9864a11f11ed693e26f6eb3e261c73368f55d303eab9f535ce63558d1d2c93569d5ef30734519dbe1a4196754a3881a51f7e0d192c732a9470e7d764eb87c247e380a9da9ec8546d1f11cec1f2edeb14d89e4913d5f6599447c20d000e965554c5aa8d88f68131a79f4913d5f67dcc691660b86108ee900864b92270c2174c57582bd5f6d3d3eee5390e6cbc7e83a61facae1bad5677f32c039aa969928392d234c088a025aae4a07c126860fb695ce618f0b7c7418ce8f2530da9ecdbdddd9fb1c63e7477771e77b01bc3f65779c990524a9fafa10ee21c7e77eaf44397b1c8bfae957e517aab57ee63aefbe5fe451554b2d0a007a22da654208b1fa8f061f544941fa41326aea07177ce89d0d7550fd75d8ba20bda2ac2ea87926498a04f5c7f1c70a7c7070520438a1871e10892254600b9fdda9471b2b085362e7bde0ed413cecbdc4ffcce9c618fe390ed0f6d5c1781653b8cef31c61e07630d7aaea4cf9fb5dd453d8e39264cb1fd3204eab9fc12059fd7c1f6cf1ee22028a5941f7318e55961fbc34dc894727a401ce4229a878334cac69d3aecaada135ad5c136934ebb90687209c7536c53605e577a3da51f0b3175c04626a06c2ae740e1dca0dedd7d507090860105490b9923a200f145062da6211b9c983203b90ac39e39a384eaeeee35cedc9c9101157d501ecf48a1850852949171b5282ad7ff86a2c0463e282e6798718a3728aeee8e7d21508f9f79c175edbabbbb7f3717f576bea2c8145d2dd4834764722093821bee705234e61ef169dc909f9946fc6c82d4f0d3b8fc853034f1ee21d6d5aa61f58012aab09a88f8776e0ce197c80c0a4055f300e43f7136807c14bc8a7900f2f9a3cf8f1f3fb815e68d4c3f7a28a5b4a727e32bd96bec3417567b2e0cbb7ec90d56172c679c20e657ab1510bacc208b1b1f49171980b9b155f1b17af57419da72e3eb0852809bd9209165556821027778f4f8a0206408912246babb3b045128b0610b09513192465add179f430ea81a4629090929e94b8fe9a4211a336cd8ad561714537f615d5f38011748cc89b4d9c78fde119fafebba6890faef3c4f3d0fe39c794205aefc11687a3238bfa9c4d9c97164c3975c7963703e9098b2fc837efcbfc0951f2723d11f1efd706cbc82f082646484d4c20289053a68c30536eca2a22d49ad4484646588c51a12f26128a94904246c1883902251a494d20c857d190d3f70ca66388290a630ef94d90f933b659645c9258791175e314b831a81af4401a594d6fa8fb281ac522dffc597c79ce320a594b66c085e7b711c1412819c9ec0b92ef9c3ca2688558e9617b5d65ac38f7a0235ce6bd5c9c338e7aa17c79cc3af7958e8019a2b2b168a000b97540c7399c590b37c05eef0e8f14141c81022458cf8ca591ee43b380b04630e0d13d8b0bbfd0ba594d6f063f354e51c699b41f91c2ab953a2e44ab2644b1a49964462e94b942472c0e253c0c2a27bfe210f681f57cdb43e713d31b504656b0fb318a5ac12e1147fe731e7603563b0eb3ef61c9bb4791d72e2a404213801622305b717d3686a994473680e4da289651a31899a6690833438d8700a4da14965a9ca34caa27acc39d58978d63181062b89a048dad121d4a54968c80a16222d5b8cb8b49096e85861a1a37dd0e75f40fbb8fed403728f11f738dc87d373c39eb883aa3d5d71fc60439c8f77ccc7719e16a8f7bc635ae0caefce8fe092d9349bb8093c9d38e95a02488e223809222b434f84f5a08e9d9e1f28001132a4489beba854cdb6553d0a15aa11000000009315000020100a064402a158308e7344da0714800c719a46644a2c130823418ea22888611808a22888218a20638c414a294473657b0008f6cdf8a410cacf017b3e9dcecee1bba9b84138390b7cc4281beb89f885e56f8f334a7ee2cdc9db67643d7266060a38cdd3eef1262f913c396d7454eba88768fe1690740f2a0d6e0d7695107d7843ee5786c40f2fb59bfe3b0a770eba518bc94d1c3ba4a35bb364a174ab0d818bbad7bfcc73bd851caef367267a8f98d2f496f277be38df8958eb36989719a7b6ab155f63cb2457cafef2d37f6b7420bbb2b9090daa85189a9435ad4527b8a64b756bdbbbe6514a21d438071b25a6539c1164e74d62f95c81907856613accfda02bddf2704a6a290089d3e8fb4349ba7072d6ac13fdb93949659743a3861f7f9f33eb0b9c0f668c02155b8305bc2943e79204a57cc4751d2d0b4c716a7f3d965d7dcadc33b39f7e3f7faac5746c58096c3395d88925ca7d0603a5863bccad57c1442659c2845b6cc2cbc2144dc5a6c2e96e937ebce060cf6cc7b8071678e0f3019fe96d8de3af7037535658aa5744a0e3684d02906ccc9bc4073f96a256702c91e2b04ffc23f273672d230ce17cf0a24573a1457aab6c4c35c5acb253b122403fc3906f475a3931b01feb6a498d3312c1b96780d3d8f41277c75ab8113ca2a98e7860b60384521fc0d0ccce88a823a9ed3fed01c6cd28442b8b641152987c18d12456a807e43953a3564bc08f1bed09803db388fca2ea11633ae0d571bb36b57ec3e3b7b4926d6679a5a23f9a326bd60eaa0f60753484cfc1765e24ea21e7b78c7b46d78834aa8f444aa5ed88a89486512f8e191523aef0057cc737e831e2896fa28c567f82c105a81385d6d081b07a42a3e100ae79207eb94116fc3834209d9d2a514cc63f11e521f16fb41d41a9ec72c48f78aa27d81aeeebaa608bcb5180faa38240a08288f237632503b8b83a02a493eb6620032e32b9dd55d8a1b311e626eb59eb94a013702b6bb74d3b296a9f4314797d6c47a8251e2fea7b84c059ec21b0680cc14bf5ffa334a265c58a5f293668abe3e11f54c777404e0b4633172c70fd86623d0aad5abcd67a0e249dca22121adb638e0f0978965ea698a6198aa5392f4d8730f2573bce5b9a23570d4eda7b60132dc9713127ba05dde2ebc677f998945f6d59c62eb2c8d467a9d8de00a267d556985f46e949420c47cd214cf2cb4f3bf0068f01379f8e2d046dbf35ea42aff1f9cff5ba9e0a01569cb1fb1f340c99b485ab66585e002e090b60ecdd554219a177ae178f94c94972f387a2ebba5b203dacce6380502cdeea819009f5173444dcb104fd92ef8a0fd177fb9931c5a830ced041d189ff5eed15d836087c46bfea5b3190930b73a35a1a042c0d12f055fbcac8c9d2e2493fb7a843b2d7e1eea762a4266f8c2f2bb0cc1348381f8eb6b7d7281ef808a191d118213a3450a1010b21e487e72ead24419fb1c1b2a1365351e415843bc43ace5d5b50a269184885b2858df282bf3af696b3b9a2036a36ab685b85a3ac892512eec168a65fce1445454844c2c7577f18ec75aff010bc95856e33ab6b6e53e9bf0db5a33f4db631e964c06cec97c1d7860e26877c6c05af82458d9bd68ad6ccd999b5ee5d66a69eb5982c6d09547271542de6eba2c60833d330417f469a591d41871b299a75a8c656e9731573abd8d58c20349615515dd6e34c20ba221b7d1e130d723f64df922831505fe061e5056d4a3c712205950575da46b51fcbc7c39df314b436689d92d5c309de51271d8fb885c8a8e5b75bbbf37f0adbc68344243f05ed603c48d43f597094103cec9f6e532f08e9954747ecee3958d778799327131a787fc05f989a71ff8f1fd036507cff56f6671b1a4b55c1d6573e88ab2550e3d4a348d8ac54dc388a1a259564c83d32f83c7f9cc5aabdaa4aa81c0a9495967933bae4865a7692048051593694916bfd411d0a69fc3d738316249ea8b301d3c7d0996a6818e08a7d797b02fd01ec5be735021dd59561262cd5821df55c9a856ea402228a9123cec1f3c3f42ad85ecc8a4946dc25b54a48a76725e11dee273a4ec65e043bcad29b5b6f60ac6e02292d112338036bb8a4cba3d8a4e5c56be81ff85b1227fd1b0afe649ac9cf90f2482e7d05f9d899fba9b9642f2dbee391ac095ccd153bd4e219ae2468d12f4cff515495187f225c018d05c63b87ba558da6efafb59c2804aae6762f4d1630efd9dfdbf7143e2bec3b6d787a8a5be6bdbe6111acb7a81d239882773b9caa6b4155cd25ce72378c92866a76c58569a7549966871f2e21a0a8e61f1328f425f245547c2ed3d7b87353b2da512950547a850c6b061dfe4d955f55edbe4951c605f1e6927ca1bc605dc40760b96516837e3be8b78535791e58e794e9214de53eee4eadd26e496cbe1774b42a99e2b3bc4950e499d7bc5cd37d466037e06eb6500be722d7d433096c9aa9dc7332514e76b49bcbbf2fce815f0b61f917bf9c965348421bf4733ba0e87bc0b90cd43971b3acb71fbe39af10ba630d1d617b15d42b234778012e0431066d8fe809b74294e168a4d8dd754723c461fda37d2914ea9cf3689c338045345f8c7740bb4d4499d25ffeabea9918b0958b465107e16a7ed19f91ce5b4a0f6bedff6b9f4b9cf9af950626cab9f52be70afa4969963f0e742749e40fa3d420d34202a05e23ff237799f3b87c46359d4b2086aec81cc42120e990d60e0f8a4fafaa0c04a264988e71a4212bfa878ce784020fbb927eec28d01c4cc4eb8ec30f0261d1670c88972b0762e78b821310c7dd9ca1e8f47baf30e922a7f294bc45ced97b1df66d6af036f19508ac9d0461ca3d00d24b7528c02dfdbafe24f107935f2cafc4bdc60ab264a1976ed878fcf2c23345ec319fdea44f4be675e7f83511c45480456cc4bc0986c62fa847bad09e90380166635cfc5a5f0c82c3e01e346f4406f6e2b4758b86a89932b81cf6ee064db1aa51fd098643b5c1022112bfdc23ded986703ecc8af2243bd560d3b8c58c05b4bfbef64635fad6b8323b4adf8117d33c7bf188ed35c20e9ea6b9a814ee069eb9cc2aec3dc4d27b4cd880b178453d52007aa7a8ab2443f3f5c0e14dbde4cc8c26aef59556f3e6420cb82e61d1c1c4a5f8caf3aec521a8f493e8ee0dfa8e2a9c2636b03d5ee2faa7f0efe1e39b1116c2c02c0df0c0b361a78c900b0ec7f82312b5d542ab81f4d773d844bfb13e47e79c7496364938c6a0789e9270eaf954030660cd08cdf1b2e16d8ef2d5c349e500bd1c2bd3f3fcde7aeb764f57b1e1bfd63081c90b18a17b087b9adfef2156955d88f525206d8d947f7fefecc294f5ec28c527ea5400cec6299c538cfec4978d8fa3df82fc553bb7dca520507ae4ad76736c030032235fde8b991e3b0fa9f24fee18718390baeb63c3b3379321e2202c617ecd2a2f104c76dfc93857b8dd2e7869c4553d53dcb1a8ef207bcc6ab707682ced33d5d2066c0b8930550801abc41b110bb762b5da7c77b44e9945aa5c5d5dd3993119ffc9840b058eaa4ec941ff0c1175ea48411736e1c9943b54b8491253978762aa7e566994e0d834d4f8c7d9b1e1b3317ca49aa3043b0248e8a7da30a451029420705eacdd6107aaf32de8c3a98e20cbcbab206fe21da619b452a96b585db6668f87edb731cce1fdbca5fed195d7fe1cc06e6ba7709fe53afd95de92edfaae8da05e01210dfdd96e2d5c8c3fefcd60b585010a4594d7147062aef0c9ea9b5555a9940bec9da2f9d3a83292777504feac449bec9d76681fbaeea2e6c140ea546290e579e344aec8e5a31d77cd7b8d3aee46cac7a81944372876372b98627104dff66abb7c6708f784134ae1026434df8fdb6de95475bd58684cc80f3752c03506f810df91a9b0c129b2fe84a3e65d49feccc248fd623fe2963c907dba6ad40613bb65581db0330b9297ed3db4eb3a3e60c27a4fd2491f6c84376296d3ef4c7ef73659b9d3178cc4e94c6bea96ade6174fbe6e03c98473cff1ed41cc7b278579c3fd6560b6d636c8809501b3b6cdd894f3580c7eb615f54eee039bba04ecdb65cab1c54555ac82d1465441b725e388a9d3fea0b079c67d7c843ccc37982db55dbad4e125f475ff996d7ecfff0d355365da6c927b385a03a93107d502c36d31640c0aa6f53e8fbb0e00f8810f499b282c174348ac98d82522a9fef3fe9777e6bf9b2fed0ee3edd9f3bf38d05a7ed7c8565814b3b125bb1512553ff0bbe44f6687094f22b2be4993c61a92f08842806249656fb4f8a86f026c67e786c83d74e976dc42c1de7cfd1873087d3211d45b1198ef38fd5898c8da22e432bfd513ca1abb21bea0095833686c11490dd0f4cc8da6ea08402b0766f236666758879cc9ac2c2f2760ef76505017e60e0261d87a7749d8345f89079ea33568c391b67ff94873af1c997f9078c39201019817cb64131840608960b59921e78a80c240b204249464db742be11ffceb1439bc33f48e6c9b9be7a6541804e6630fccf09b80e42f172a6826396c438e98dee22c8a76ef15bfc746a7d45de0773e159891a5c26f262022d7e0fcc21662e3d90e50615029f5e044b9e27174f720777651733cdaa7b823f65313cf80729b5476af44fafcd3fa463d8dbbdd3f5feb4d3435c10762de5bb14b6585cb4698896e88b0f142fe7320c878c0e831b07ec9990b53e4773a474f27281f1449abfce4c9a7a39e824136f0f715af7736dfc30fd4894b8da9adab88df3702e2cc9e6d6e97fd40a78bd38dd65678908446dd69f5091b8f50302344e092bde2eb8b31e248aa1b6625429c6ef53e42f42253c68a1abbee9465f21d2124b16fd04dd49c8b122b60236ab2f2711e4016143c50894ff02491da415eaa2788e8cd2b86427959d8f647d0f54a33e787928896a137bb1f62ae1958e36d635486d7003203d966c53ab5b5bde7003ac3b53a5279897a3502ca51ae83e5db07de83556a7bae7670da14dd5501a4265ad772730931a6ed37601ea4b562e01e0e2c733753ef14f93acaab94bd7730384aa6fe302169a636206af698eca1b68ea6ab72766eb33e06293efad76ddddbca455783bc6f6b47841271a18888067304c5853a1100633e30a0554126e2f87861fb3a3876a7da239ead50410d1a167c8c1cff419c01c0c177e1cec35416388c1b40536bd6729d2e27ef38843fba91894ac6f00cb9b1b23acb80e814e3741bc2a619272a026c376cf22ab7282259b85b6529533026b45ec25dc1aa01f6c0f2a332bd36921c58a920210d0ac635585cb0f4e7c7ee3893f85536513762a6128d71e659c315d0d0fd2f9c5cccbef9a785646015e4d9d955cf9be57a682658803dd5745ced1932de6c1503c08a85733f469f5f0c0cf2e37213d67906eb7adca7320719752e9656a4ce8905a1b405b0e36ef9378c88309de55d87af7328b9f8e7a49453b2cd783b49efde7ecdb392cd44b5d7f93c744721807fa608c63dc49f38a42a14675a1a88b515b48d0e77ae03a2bef4fd755d2f787fc3fcb8372b47904e1dc615b379d2d82e476c3968bd0482ff6c3c2d87a131f572f911a61f46b4bc8af3a70b5b5da9bc90808ec92f72403d6ba5ba78d8e2f508ba628a583c7b24b368eed1d001b489404446cecf6b0a0607ac0c18307420c132ad8c2c039e7c2afb8b59793612f6558cf4c70e5b5bce620175b53d72d4767d8c00445393b751be093b2ce47fa4577bb12e395879034d965a5ac799dd1a630454e05661598467846ca0197c028dd179809b172ff41e78dc27753d4fef40265330019ef62f33caaa2879fa66d7ab458416d80db56c066695178133b4a3a85828966e3dceec4cd5299ac6012cde96fe14fc228fe080689b996125d63fb720b3dc8b8becc3a52e3783b11c40375c2b46942ca1ab964002ca07e316e308d6c42cc1ad2eaa5df474f3ba0a62675405e88e152c0302b85cb1372ab12e0ec1a3cd4bf5d831d0e0039d3309aedca53faacc0ba31010350c341f1b3de7b9a85c02604318bd2376bb4d965187ff9ad59da1b10f02e4a88e0e442ee49f50ff4e578a9504f5966018bfd22c3a7ea8d19796a32254204addd8a3afdb44d6c9d65e19fa3642589b1d74ba8c0edeb6d93e378588cf013e137c8784e6ebb3166de0f992d197de04061e715d95d792fb8540cfb5e07c6993618c615e98784c737543a74acb514ad86c0254141917f3b048187ee5f274c9db4243d19911f1124ee9f088862eb37311d0aa71a0b5da2d204a72c67bc9f4d33299713fabfbd614a6cdc5fe2fd85e7ae2dd7677f3f337fa45f150108e6a5b6ea74cfb4d8023331ad21bac1ffd4d4793e1a46fd944698867a0d575e1e7395af5ce53f6dd3806ae39ff699af0aecbd325bb5ed04e9f880e7fc6300c078b2e00c3d5a26bc8db3a6ea7fbacf2f36fb1f690c34afb7a766df4e68bb4b6802c774febb6444fe0a57c5dc46e178433d67d159082dd5af93e71613f626d031f0cf404691048b113cb9779020c7b7a72c07c082dced41f3a06b8da59e5d6f4e4a7232376f58130077c8f516a4fe690c4a08f847c300cc53baf45e0d6da230631cabc5e1e7deb249e039bdeffd3464100f5c0aa3b59ee4e7d7791af4b4de204ef0a3377046670e7883e94035f32054fbac4fe11d6691052aa7c1fe6662b4c665ae6eda1c8f41b68e4564573299dc0b52d4dcd944c680fadaea8d193be72c3cfc4b86d04bc51b531c6e24effe7e54a03c0faba228c15f4550efcc9f1580c1a06d552def9ab70c3bcfda0ad03f730d40fd9733cebb7d9b8fa13878424e9307334ea1556e6ec93f39694f7a02a865b110f3dfb7a54036bb8ac2dff7050d4da5c9981591fa1d58424a8d03fbb1bb8daa9b2820c743156642030e34c0662228d53155d70c1d3a6753b195ea94bfa58bb1b95d503a92c5113fe573d603a22b6a116f8fe423321cae5b95eb96cb0d1aec4480c48ff15ffae3863413131b0489273db5147c7ec479d0b2d62975c9c7c50b74211017b42548753488e96ffb67ff684c04e1187b5b6e2e7320d7367b589e5d06fce0b7e1c90e59699a494941fa41460ff20bea9faf76f2a0485774242063251d361fe42395abf17ca9ed6ba293fca067a495204eff878e31e8187488937d80cfa03bc53fd9ba32ae8629f50798a0100dfc1efd61e20110468c8de0ea6026ac0a0956d204eb9863f1600012b3898d2b50e59c5e806fd5b6b3deb7767e1bb816a9824b29ee6b24cacaa504477551ed7762580526b3a00244f916599008c301402dc08e3deb33a7a73c3716af22365d31dd7c5bd0b09140aa1cc21221c61a11f279deb72f42b59fa52f857127ae60dfb08a15c9f6874e156c535258d969e29f564405da6a3e5a40b3a7735cdd2bd7335b3a8e42893d14a9ee19138bf490f66963717ff858726fa3bb3e757f8e4792b80906fb7615ac93bf70c8efa91eca1ea1cf0fbdbc38f3f10d1a4b33e53ae70b5712b948e1ff9f4bc24b1e2f0a1d3d55363518c66dbeb8ab462b1feb45f011384e9f73406d04034720d393adda9dd9c4976d01d208369e613a65c8cb68e4640cb3bfa8fe03cc2a3304cc0c9290a06e0a9cbd662362e67f2c7f94e2ea2dfb39223056ac42d2240f1b9fcc8fefc42e623dbc8ab1e1e4fb436c1150a4a196c82f160321e3e1df5eb7ef4899c44658e586a9c88945e16292490b3539043f4580cc8a3ed4862d0a0c5fd018277115f3105048703d760b64d2ecb39260b40ead13e512426adee476951aa1f528369ec88cbdd587eeb46381ec3fab81121b771c66ca3a5a98d0b3157052f111a5ebc1647313e190ffd71c85065091bdd38a3c85e6e8aeee33c360a073eab782785e15ca9a753437916db84a92a2ea156c9002a9866e507c71f65e88ebf31298e8acdc1a4654a6808174f43285ec8c653fc73820c304e7375a994f5025865b54a068daf63506cb5f9165bdb7cc7f02dcb7600d29024059d69cd56cff49be3f4a92c01daf889c379a5b82ca1ba4347142a53bfe58051a765c42c7938e46b7096949299886b7a29422267bc509afa320032f43e8bb9926fb9b33c432abfd8b1303f9ec1a173995a458c6f58faba2503080bdec472590eece693193e11ca5604e09ec1b9e647b6efe9ec85b883118c18c3a5629b3cacf454bc1f088296949a6c8c386bffbd50ada46fc1ab9a48100e54785c74bbefe7c15293fd73ddaaf5c1b3a420eb99539859fa1b284afd60d83d8763e9f92feb535e977c93fb1744dd06186c89c8516c644106ad9a99d38a9f8e769c19ae16ac6946e095a97b4aad311a265c63d050e57a7ba685777e0b5ed04941ef04ea3c1a4fa0b71d61acffd3355e64457e8ed730e22ab3e13a2d5ee306c57972b6c528b0e36ea691a5b26a43a5c39e2db288312b340bbaa21b5fe3623dbae3f35c93c4a5d2aa0a6d9db0b265332871db7c17847d17f06ae0183398b63d27bb2de15859cdecf06cfa65968cea26d9c5f77be73a1a12b951db6cb7780351cd6487b704aa5e79fd05a20975419f9a220c2a5b4f56f1b2094479ae4000c705f5414360cbec605e3bbedf9a4180591102e5c8ce0c141e1b22e8d61185bdac96cb89f8c0399d74757e7700d9f9ccb3e17c1c86ff1cf5005c90d829d997a3b4ed4c41ce4ab67d274d447a2f6b8198bbd2cba6eb00d24e8fbbe8a98f44c06abc789db4e69b75028c0ce5dc2dc0349657801d34c0b7c74647138d2b1feda347d7abb10136c13a34d62d7f4ca2bb5ce0f60e02c519e29f72a5cd9b891f2b770d1a7f7996067b869a81e7988d7ff975c02131e0b12728301307b51c804c520942d4c1247e1fd09b912efe6f020e6828cc6e2178409d8afc1e7f40959ea5af8674f8342bc823fea6cf6e755b6011723c0fb11ec742f37353fb3d8228d3220c402c0a332abf8f656ad1e2cf46351695851abaede5e570cd915b4b66ac58ec08aa1e39f922cfc8192c779e03e1aec0a1ac0fd304b4c7d88c4f3b35c9a0700109a220265b20c0ef300cdeb640c3d2aeeb3535bafcd75eae1aeae32391624e0117fac0dc1e01aa284075f2d50ff7838c6210542ca03238fa47fbc3363fc08006cefd1e68d6078864256c92893fd87781c3c9105cd317854429d708587269a46041afbe93210dd536f4a1ce672d518eb2747639de3404a31077373b20407ac368d4024d10ae2936362c70eca943630287e7b7022ac869d80f14b60402709c7904eacb0a8f9263b6d74ae615efc62b642b2d66c896e9d9498882091bf1a14f4c2af84bc72574fa7b0d289de4a0302b9c577724232abbf91a000ec5896cdcf54350c06230029ca73fc76021d8ff43df936a488786a8908bcf6fe1fb4716020231dccb545c2251505559a186eb061e9da5f0d3d5e1d18a93ce5547f65df1feadf2bfae8dfda0b7b7e17a117d9796f9524205b1b36e1bf48a454c94297aed6e8a198f8ef05f76fd66eec55dd6145427bcc56426b93a160ff85b20391c5b3bd74e70614b55e218a496a3497961d9416a9f9ba51faae8a6b05b4197e7b2da4c19dc810fa5689312515b6c17acba0cba9e1bc5ca5295bcd04f1009ef328c5a3f6f550a88314940021c41f38b4c7f03e3a251c1a5f56f90b0651bce1ff0e78f06fa9d06db3375ba8e0238d4ecb01ab6d3797341fe259f3f22b92a7db90e8db440272e512258d96bcf44ab3a7894a541e5747f94d492d075569c32a961e2d6e8488698a6c76d6f05be687af58ff64ae0930314442141e123e079145c09a3f7434edbbafe0081eef876b77fd29b07999b5ee9c521487d5a0d49f3617d17c4f15fe998dff029650959edb065b5c756ff5984448aea4e155788415629431b793a58ad194a248634a22f6283479ce53e35fdd7bd98c2237c9d4d9b75ff7eb4133eee6bed5042c4599e17a8d475e08f25ae9f6a82d86fd82d4b5cb203df3a047c96d26c878e580a37251e777c31061794c50392b72e0efc0451a3b032bc21acd4bb5a098d6933a603bc2edc64b6cc1aa1a4fb745a86ca9668b29a59b89ce91b7ec100f134363e9d32e5a74bba960e38387010e60bbfae5657683e60e2da493aee6993f604b9256ccdd6dea6ca6fba5626d80a23206814110677e3b15d87cdb30233c63c75bf767e5481b2a752ca46590178e18a3da29bd4e7670bcf7e272e92ed6725a4b081121cdd718f0b8d04fd4c10e3d99bfb6d51dce6810dc466e26bed70052d06ac539159402cd4bf5cdb22810764da0257ab4573486e86c863482487d2d189c8892bfa988e03337096aefdf0b848cd5c20efaa0ec3e56aaee92c44ae1361a240d4e9b905ac0e785275ca99465325b5b3924061bea28516097535e2684105444033fbe16bd80d38bbf2b4b0bb5fc9fc31f7a5cffc0d6ab80335f8058086d29272ab2849e0d22410409085303c1e1c383bcc2c61bc3882902831a64a91400b1af67f1ad930eb5327f361a1692612fa0cac9defd0d4fe5dee4518d5339174f55f96c787802b683ed5f837450a2108458d20d04d639ef13bf832e1032516f986560ddfe2579ccb9fc24ef0d3c654ac34f7a2e5f6d37271ffc5a6d98939d402d0c0b4dd17bba402daf92e90ac18c4b97d2d5a0cffc4473d28d4f8397d82f945a7afe90ceb5a401ce1d3c48c3a6ca030513b9b1c7aabb41e2a7fba61fe1c2e3accbd857ad3d802f774de23902e8eb723c9fc2754cd4524e0c922e14ef04bd91e225c0a94a6fab56329129a79eff1266134cc060cf5ef83db405a12a829e3c60e11dab28b44207e7098aeb0ef094e01d6b5e6f0ed2f86babf3bbdaa53a3a962f44935269bea84677a00da4c7a5ebad4a370c54fdd95b0c4d9437aecac80fb497cbc3b11a513d5c9c8ca460e3485b3ebcdb46f45040604a74989dbcb0fefe10c9842544d84d5a3d5d3b7e63dfebb8ef826b712ebb16548e6af97b340ac3a9e2dbca3dc7e49da02d60b12933a9c547fba48fb49f25302a178689ab2e027711a9c88a194e91a2cc77ec90e0f1190890642036c59f363fd66ab3b1a101b6665f9edc09c5ec7214d61180037aac335f2f4fee95ba0960855a024d2150c8af0ed7d6a256d11116cc54492b075eb8d05a847af0ce33dbc3c6ce15b0d73b7e145a87a192d35a228785527cb3be8e897391d0d9006a968b63eed40b8a860e67b3fc58fea95f74e051a01cfbb027d4338b403bd7576f00d781f1fddda6d137215dadb3837c9fd77603721d85a82e5de64ede24e8133ef0e3b8e3673097d0e249ce90cd50edc0e803943958e7e00c3d2ddacd7900488bb1bb705439f01af2ef09d843a3eb39f6916197f8b57aa862980bcd5ee910bcb78320bd68e0ba6643edfd5766eb0555ad09b3b0f191afd43792bd5e368bcd62d74651763f5c21dd4d1074c1103964715df8acd5c1c991e37f6d9ac447b3fe03ab15faaf207aa28518bd2b3ac17eec6141706e6c65365cdc8ce00804f49527ba919766eab7a478bce9a4ad8010a010318827ef18c6a9430b8bf296196eb9feb75ba3a4ea137bb314553cedb9ecdb1d3c31a345346feb684bf980f76e0fcff1b485fbf7f2089945a195584a86539aae66c2eea21ed53f038697c04f57e1bbc4567ec9ea41a6f9a4e95e19e93a76745e55a7e81e74d7238ddb3a9c0441c99abba5a7c21dc5739ac64078c651e72929a42095560d35c405eda587775c1ed41d20ff041abb8d3558e006869af48aca22bd01c6534c11cb8d46fa39add87d28e54debb5a2b00dda96174150d4cc2727a4fb2c313326c83a1ee01f4f7a0bfbb3c845c969a19d657bd07e7a4ce9ec5df1f88ceb03603b309cbedbbb2d8b5b9fdcd75459093802b5f35c1f774b6f6e79b6aaee8d7efdbd20f57633d0dc024a4bd3deb53e1e2a4b43a0d1c977715b6b0368b84eac19d24c8a87f1175580e2c4622feb060fb69210e0aba8da20668606b32e1f48c2d08b14289c7eaa5a13d78e205e78db616b4c9907329d586a0d706952f36077dc949b299bd63896bfa758b07c6c6b24f4ef50739a550d1d3a59e51d39bf74117914d67076454732b2b51ea4ec136ed4d2ea980e4342032a6324999ba4c525944439bd78341fdf62ee526b4dc44418fab3b2bb12309335f32212aba325d3b915f5760442146f07a5a2965ce3345c13140daffab49fecd2617fea020f171b9f294a4f50b13414f4ba13b4f1cba6f0506bc7437617c813a2d9c23802f7f86902f1dad91383deb4d08e9c2daa04b1402689d625e042b696ba7527956bc5a55936c8b9323a84fa0409042adde0cf634a7aa2984cace8705a3d6eacc90c497d440ca24bd4ba002375da80bac4b066f6e2508982641a59bb47794e47405ae5c8d98c6bd9649f75278697a705aed9b82c0bda5ad10e8c1ea7dbd821cf78a8a4f80df73473ca4b73ac5cd691c150228f9f967a44c6e98a7ad93061b531aa0071142395211e0140f7a809acdbc838cb1f6e708a8e9c142631cfb3d1acc0766ec70c35f8f0c8c51698476d31f2ea07283a1acdd7963e3221d53fba41629b7fc0eb73af0b0afa0914c4f93e06a8f02e962a901c99a12a9814bd8a6d2b877b9ed5bf9e75c80fb672745588047961bac19ed55ac4fadbbe3024b047c4ec5b74d42a000972974f5dd65076a4905d075615d86302d8b84e6691e8d5f0128b3602b199a172d97be202b0ae83c6e1f0d4cfd2e342921dcdde1a051b429e326a212489b2000c5bad0160395e596b34c77c2e8130fdebb9a3b4f573740a98188001917d3b67657fd42f25623d4aa5454cc9eba5649fffafa88da56b1ee79ef2a475e14af6a91fcaa23408c8057f6b0d944a437b45420b0b1fd24a8f71339d0a9b93935e81c16a13e65bf0323b3909db200b78e28d0a4aa1d2db7532d08b588ae0927bc0f60f8d51d7f8ffa8afce477e9a4a42bc1d2aca313ee3fce084592e2ff3dddc4ba21bec50d9b36234e77ab6be8fcfbc990ae16c83e09dfa302ce614c539f7ade3d9bc13381893b99e4cd5704ca06b688418ef75eac5a995633ed896253a2f15c7023d6338a6de274534098c9ea77218c33da30154b2e59dd32b95915494b56a2d5367a49ec817456ab72d998898bb45ea62abce35dc5cde6299619449d90336ac641e79a962fc529af4c9139e376d5c85623498520d31bab41c4f05cb1eff67a76d18f7fcd03c9cc76ee94d40f9682c7125bbd843e29a10dfd565275c05d7ccbac9eb1de066e08a296c7dd39fb83e88f913930d4ee4777bff54d86284ebb46040e67715f97bbf02090581e7ed963319fa13c684787e48cbda044b83e0050644dea3af70a2c8ded37b10b13e5c16043cb0c445155fd48c0776a7bbec9c75d7d33f3df71f54bafc30e3d2fa741fa6c0657c9a731d8b6864886065b69e56d8d907c1592172bfd4651d674e45cc836b04d5dd4b2b4c7f475a2e6343bd93bf5c9ea75ab49cb35410838c4b2c8067abc751e6105495201b9cf42eb05415b29be9224b5f50627d242ada5f145a51d86cd87cac84a27b79aeaea17173e4ff9c67bdfa88373f6a085b62ffa94dd32b4af8ffcd76c1a5253244f61f97d351068754f9317e90302ec0ae55e4048957df22291203575282fa3349bfdc2494406359c1d1b35271a00b16a2b747d59541e3361afccb7ceccbcd36bbd10f662a640e8dfcaea574086cf5475e8dc01d88d01146b9618eccfc66cf60d421611f71b214c0db29ddc8c68448c5755d4932c8384e5b5ac709eaf2d35982d884f271ef1e227abc292582e3b2000522966e2090262c6384caf0a8c39f28258a740e6b80a7674a4e86821052fa901334837346d43e237a82b305587fd34a98fefc12249b80e710807dc887b4ed3ffbeeca8708f22aaf137ae50323e2478071278bfb9d961fffeca6abcd5d84595123553fae67c65c7f67c6e8a1b5522b2df195bc0020aa36aecf86a085a922bf1391f9ad999c6034880081ced960ab3b3254bca5707b6219839f12c1d16f98dc7df54a69891f83d7b2ddf048f7bcc9c4d1450e0f95907bdc080447542831920e3cb6196239b6c53d36cea5f4892db66e41eb43292735fa16258d06216c84c805c13ccb80b153bba8fb87e07b9039ac06d7c801766097e27f822e7cf928fe24b308b50870c8c0bb5f460273c1ec482f76949710a284d034a52a132238826eb4d8c7acfa7ec8d1fc36441a4f7a492eaa4f60f5977baf8343caf4746504561db3abc6ac8ec45e6b2602ae16b098740c89290fa593577f7238c29a8a22dbc36efad312008d4f073124011ad1d0f3d9a0d8bba9568f6cd1a52c7c83b5060b203636094382ed845a81ccb8df939ca10c7cb198e412d7f71ffb6b424d0f9ae6e731888ce8fa96251e08bff2ae3cb112ee851d6bcdb35c4f807bf40777f8c00e34fed9ca206d6591edb525fe674086ece1caabc739737520aebf8fd1482708a9cf5bc501558f547462314a3a4139b17560f2b87e85852f0ca9d9bbdb0ea82ddb996105f84a9ed6bece08eb64b5e734b0bd9375a78cb58997a0a69be6587ed30f5c2477ff2a60d61bbe19c9ffeda9de90b3825736bc44c2e622d1734617582ef443295396e7364ef5d4b5cdd631accc2eaee347c7f660bccaa79d0469e23440fc6851cf0ad5658e7d3880d8a9575f8096de51d192e625afa64614fd2445f8f8287387433e0ea58c1a2cc304e5229fba1aa007968462636194c927b3daa9941ef67b2196f528f7ea6853b3be89b6cf0a9769b426c3fe2cbaa9e6f9d297e1d63f83a0f08d207dcf9b682437d7dea38b4d975cec74edd01f32d678c8d473e4e4900d9ede9e5523e6a222d3166e097e4c68745fa88aff92e66e520fbbc9d42e4f5ac97903ddbc5377a2585624d3bd9fb337eacb84ccc5bad13df1e9aa41602d7eccccfda7bf0d3430936e7e1c216ab9761a5a6b178d620ae24d5bab142a4a909b64620d5e48806c279269aba300997a9ea74caa3a7d581568f696227eeead1e2f17994a391a8f84a22b08e4010f3e665bfc9d51e01453e06e4ffa542b1cf61f8a2e311c8d325d03a368112cb94d8b501be030cfa4126ce7b2e2c9c1cf40894853ec952e88f8c93c5be60c80e7204731fbe662681aea4cc5316ebd95072c38190f607046ed0694d1ce1bee909370f304781d6b6bebb0bee9662060280ff39c634d9c8854c0e37143c10a7d6f87b407bbf118914bd1213cd0684fb5c0e8bfe9dcbd7b3e00e21e831f4248f433d6eede0c47824692ed0e2dacb61f9e1b848e677259b7c984cfdbdd5c55b6dd417c155f200149855632729469830326dea01c3abab2e85953446c6738aa7d74b23c849b1a4391a3c9f82075356c9102ead07647d4d109c9bf625a23a10d1e1a2c179a6c00b43279b7b36d50274b0595fab477f2c8d41e9b591970e1572821c4354007eaee7946f9a7ea712ce4880625ddef30ba9ade1e439656e6fbb2b91e9c66bbb0907db5d0bfd328de75145b1e771f09defda02a71a811ff10c23ea0e80d4740c9ba0a86c0242e6bf71ebb3740aa309bd694465c959e6c13d09befe1fe7e16016ba07277c9d7494b6ce7333efe62ebf9a0251d51e3ed9ecbb7bf682baf44769edacac112b147eceace372f34649a687588f5ff38a659e03ade6c3ddd11bc1b95a2ed64110b46a36eda62486cd5df2d7bebe987b62673b9766cb09c23388dc0121cf391730700b9a196e3462ad9561bab9ede316de117f3ded7122943b5366ba3a717701312ec4c859815c7193335304be5e54e78fc84983a19514f51d56a771c915e39f692e30093b0cb22eb5cd114b69b6953a725dddaef112957968aa168b86f9367c128eb48e63bc1830e5f8f48eef1e426e2b3de358caa1fb2162fa47a5d19199a7db8669ce42ee73511ea67ccd337adcc6ddb45c5ce76398b8ba0673361d5e8fd0722836a9d0129cb3234812ea643c436397ee286576d817992472e0e5c953f626c3ecee7726d7ee5bba1407fb9e480c3377ea1cdd3ba0e68f757b815e9d21fd626635d14cc1a4de5c537081170a3bd419c51fb457907233ccf6b00f0152bd07f3e5c3c02966af6fda256cd0ed1e443f518d4bdaf76eab9d3712bd0fa1d172126160decd6a62d096d3b46e461662f49fd4c4c5f4fc0f21c294361bd9fb3de2a5887280e84b6f47011a3760ed0fcedac993cb7b3ebeb3f4a5051b6d0bf13c0b7f766a0e14d668909bd116373237040d729fd7a8b98e25f61ecfb5b2180dea41d0108a26bd3d73f876630586bf2841cc9775761c52a05add980abc3ff342e129cab72e8f4da5e4ff013dd5042d58edf50442d3842270ab44ba0d7ca6772f9908c9f1c4b27499db56f4df816e79551fe4e3d1fed7a3d1c8edb250b08a08a91b0607a0f5b73a4cfa24fad10ea50003a9cd08708721db250155001255a6f746e23a59d144bec9084ba7ad617e677b0ced970778b2553ea7c4f4891b4b4a799a9ac12205507cd1713611fd5a242fbad221e68fb3f830aad3cb092e7cc8ed901b279c6056dff56b4af6f74d0502ee8c0f44807894bdb25ff2e04ba482fab13f863122417a94410edd91bb4c26b43e92d5df1db6ea5c4cdcd4bcf247957f558848f33428260293e56a20bbf4099251b41cbeb5ed6d9b1ec8d0d8062fe951e2dc503f054b8821fd829b4a36b493e289798178dab702879b11ec9c0be3452cafbe632307c6836a7b28e76027084a493916561f69122527a51b2fb60fe2565f0393c42004f5a82175109c5d8cb6eb4201252e162c2d6193cb5ed88797767a5b538c86c6136ba67cac26e2e2ec445774ed11970f7f924c073ce2488f78eeb6bc0f2716457e87a2612295fbc4414b828aa431ad767b9808683b8b52b8f611a727cfbaf1687de2ce11f16b1dd00d10427c8d271407d1d879ddea0515c7dca02b4429c6c18eb2eb8b090414fc69a965b9b306ff1dc8946eca7b38bc859b14e8033c9222700aa62ffbe0632cc62303e610ae3d72c631f1950d4b07f8c4dd2aa28db19953d90fe07dda3f052a7712c9522723189f93e3276b5c22c4d9513861b82d4e903ea25aa26c2bbf54052ae267890fa63524c93c602893e27419bdaf192b72df432c8aa774e8529db17fd76e10543b2ced7431429a8e04af122ed42083200b10743fa650f240085ba47421c8be383284c4ebec6dbb012d5dfa314d8783b2cae5fa459258a2ae2d397b492cfb0ca7c90a73aaf5e24f3b62c984a44000dc86226f7a60fe8dd3a12e67d144c927d80eff589b449d4eb42341c725d1d11cecdabb5fa9b6aed2450ecb07544b28cf8a9742016e00f9734abbc2fc418e20016a6238222a095d211f3ce09b28481dab40be7cf89b2669e347bb1b2baefc2d760dfe9a95f0bce7904644998ba43a1a2003318fad240a83dfbdc5bcb10a3990afcc9884b9fe90a0f1295e1e87a3aad5962073579ec9cae960c342fc0af61e5defe9cb3ddb885b91863ebcc63e0d70d8c865ec9edba4ac6677aeef17232b795b0cb0eb793ac7981738e3401cf207f076c29a7b133790356d698782f52b3b9abe3ab5978c07f0db2a50ca93159866f6a7642b525049131444f0ec22da15ea200952962b2fb169fe834246898a0d582c251dcfe27fd815de18db8cc8744983627a84bb395afd008618282557964ac78bd211932b7abecd8c5ce47a081a225426529453de2cc294f5f4c1909ee8a8b50aa94ceafa01dcf627c5e83f484e6edd75eb19d158ee679a1e24da86bb1cc93c89cff9df0827ea9a7bd2caa17f1c863c19752dcab17f02baf53074fe87ee3809149f5795da7bce482e0ed0aa0ed287cc574ace65a555edd5bc1d9b42801900aa091066c63d7dcdbf968aa83b5f0739d8ac98d2482dd13b73d1d0c8dd6d71e6e118294942b7c13ea998b4ef54d3d0c0f89d56f1f088615800fe4553922d9d77e2ba020afa346eac238df39c2b13e866ca16ba8afed4a3705f6dd92a76fc45b564486d790ccfe0bfdc92662d006e0b49697c2d9cc7f11b04fb4c8477c14178ddcf178619d42377c37fb04ac78317456dfb7559b3285b8a92027328ed99dd3764843506073c88fe5a7a99b0d1412ef67ea74fdc8d4e38dce3cbd76ec14c273ecf0aa50e4c3f81e5a54f6e1eea42a77d9e21ef467d5238a67a9aa30be93d1099a0c1d0d5c4ee0681dfc4123d119a91af63d8b65a22e0052085f7642694215124a19876ba2fe43d4969e3944174bc6862ee98ee98f88d282d00b9521bac1a5c14eb7753c8b010f3b147f011d320caa1b58259fe718e6fda4627111423bf190805e6f827786e07ec23ee8881a56e80bfc0f2e19a6e524881e5d7ad1f4cfe5e2d77529c98c1927d0e4668ce78648a26a6c3150d2dec2e08406a073c18e6011c8c5dd491918061c34434fb9141c327d40da127759a7ec10351431f2bca520ae0659c0c1a5c2675437aafbed8ddb702601faba08a8859002f67f74f41800408eab87c816e914e024474fca0ffe747506de70d090d2fb0cdb8a9a2fbf70504d5a01cfeaa3fbcd2406aab91cddb6c9f1ab78190396d68e77e5ab47f9916e60940aefc3d672ca1f977cff5931cc107b2f631dc6ffc732c57c7508f012c634a55371c5785996ecc2b64be977fde2f5884c5ba7c3c1603d8cef2c8ff3c63f3539a721743ef1da594d427776b6b81578b79ec36f4dfd30bb5f07f685a4465b6a5c48ad301af243efa4559760ef2d9447ff37acf215a0bdc24b2f072ecca7367bd69820c2c47e661ebe4d3491445f0e3d11faf59c9d65bc5acf455bca2848fba0965432b71dadb1a0a16da227bf23ff52cd3f2e7c464d18974157fbd634e6c322ffa8fd610d84695eaf59f3ab4486d5007da93a51560ea35e75c1ac730f7685693a878805275c41c8eec3fb99de25ba5b6a80c16b780c1278202c59abe53c1aef21f7d692ce28d2d9a01e706ccb56ae0df729f75d5d0e66214638b5ab891399645d440601ab735f2e43c3e18ecb8446faac2d19c023a46d56d11c1dce77ce902e8a18c413ccde9b4820bc597b5f536d95efac3d0854254fc24dd0ecde7b100e10fbd50874ae0c804eae98260137abed131ec69a723bbaf43fa7eeda07d64d6116f0216d2a357ef9a7253e9d417e7a9f7793f2a9dfd792bffd5651c422d22d017d60ad187ddaa79e75a6511cda8100be91c9d49b23f339c4441ef9280952170e565035d8f53508cc2a6283c8627411623e19d47b6b00680c49b5ac2ce014f6c9cd69195d33d9cd969af1f77b1ae748f75169e4ffbb42816422755d744ad182f0b75fc3017aacb63175e38107ab27c1cf28e47d54d56c744e8271ecca2330bfa7cd0bd1a60165fb0aa182afc8e25f2a7efa20c0d9b3db14aa19abd068ca3869aa8165f0a13807967d2220eeb3ca8492976e7f5fad67499d8340cdf2e15e38b268c06364a17e41db013035015aea75ada0aa088577a3d2208f04a1eef4a9042b1739ef4caf85ee758d828738ca71c232651028e2c0b479442331cc511f938d0fe351270ed0c85f887ca4afddf1d996aaac13a4a250fd1a3aaff677de554f3f70c0d4bd5ea9adaaeddab8a64fa6a9a761541c1fc558937a0c5aa82b7ec56f1e9146f75ad8cdb78f874da3a57b3211f09fd73528acca260205aa1b189438e2e9b6466a5d0994f03f88a7f10dd6b4e843276673d27973947cd59810612c2883f7192241c963ce2e822e478c15b965c2e74fed2dfc2742eb7db5bdd9f1820115c0eb3de66e8995aa50a50b3e9353087a7163118eb732a2a28745004ff1bd2999c7a1d3518b706f91c1c053ad09ace0e7134394c619cb825ee33735dba8f8d9d53b97e10b31d096a5a9fb0d96ecd7983e381dbb350d17e1b5da3d24d0b8bd530875eefbecc9d4f574ac4404b895ee9ee4358ca46dfe03eaeb86f87793b336ad9bed2300d8f64af8b7650cfc6aab2cfd8a4f20546bbb166a2bcfe1081094f059916fb8e9865864b78ad51c9e20bc9c13f292c581a369e8a9040c191498bf2e85f31165e1b1a84810a25297b54a58fc6f0897bf0407c57f83f8b00b639b76e0161c48c8cf7ae7024de5c651417c04c70c89da60a264fbe1e3a527f4fa5d00bf7d6c7c44dcb83bc0b96f07d7a8ba5a2bf6798042bc928f43d66ba9784dc170e901a11ad4edf4a82deb5f7ee4331ce1c7b55799fc231eec95758a7f9d1eb7381ee495cb020b3c31d095acd90dd7c88dad5b07aa80cabf80ed7f1375b97e111505b0685cb18612227c9065faa9302d5f18c1c83e28815efce69d823de341a43aefd36442606f350696c7c2b65d1e8cd3c5ccacf459ae5ceda2cff0d331eb06706c556129ec95e36a5cdd3dde9f0f470a7389f23bfbbeab6e3447e1dd075dfd5fb722a4c92d2d704fb2450dc559debcbe29325f2cb6967a8bb18ec25ba818791e26ce313dda561d6b8f6fa6b5a90740acf6a6949d2833ca5c458b3a7fa6c3b797e4d33bc76d7bbaa8791b68608c6e0d3ae40ae0be5bde6fa0e21d8651a9efa3825f3cd5b170324f84f6d5dda5a01cff932185c5790121b4d48cc26ce59a838dc03d96057439ea06663af5313d0da62833ec8edd9298850594360ff3f6e0d4555ba261482f038f94ebbc5332d02757aaf6a711242fcb2f65e370df7f4575e8df9b5c34943051f5c5e731a9fb003ee261eb1f1dac193486101223c511c8c76f567cb7a18fb58d03d4ba8860b53365c5c662167e70a7106b2d2561825e275154641f740822e8a1b6e7cb7c62ffade3b66ca3ef3ee0a15b40471a374f3a952cf82035c2c85a7101bdf0f50237560cff6b6cd406a1490dea41e482d108a58c2bfa38f6a21b72d594ac4f4dcf294e5ce7e9b02b882747e45accdd8013798b308a3af8809286b6acaf9e34a967ad795965caf7376d7672ec3eb961ef5537bc55be5176b9cd8e66ad8b184a85f0397a8f1b71abf4a9bafe9c7593f5660645b503e3981eed5a483d2a5c5827b7b6f51ea336fb17264a1afbe8f693b702ec2e8a90c041e8e716afb458735f0c8c0822db4045031ae7665a072655ff84c1677d26d89d48e1cf4318543204dd21740e474f005ab5f761033a1ff17ba79063103f04c6a82afe1ac98aa8406da1ab2f37944489798dd15b9cbaef4e69697e718d9e2f29f0086f91886fe71742ffc38cb67f2a3cbeb5c0d40f1c60a96c53daee62499cb6d15b5c27c3ca002230292810050b461abdf2bcd0eabbbfbefa029763472e02dff68049ff55de2c73fe1ddda3b6727bb4d8d0e3340c44298d3e2fcba7225e4f89b2cd23555c9021df46ca6078fbf0a95f76b8ac49ac1d24d82b9d98261fd3e60f56337bd067d7812e76b3a5ec78397eeeca6e76e03e4998922718acddb1181c8abcb48392f5988db6a14c1ab11f626baecc549efbf95a0744e2b1d4aec9476302a71f49746f1855bd7d6e92f873cbd48e30bff16d132a413802603ee692e44abcd0dc7b3efb2ba9c7b8fda35fa5783203d1809ed99f88ee31f0afb79f01b20acd1ef315133dc44ae0570e58ca0aeca7866a83e8087b8ff34bf2263d5b9d1c0a14a1e87699dd4442d04782a42824842a4745acda7085a069321f56b8a102213b894ed5b1cb177dd1152ace4c251adb2bf3af875ccce80d09253f1982a2489b0cbc6c767fc2fce090d72584dc1ff2c44561e045121b55caf504a6d9f88b37078b4dd8680e71ae67e2e07ca76f01448b1445f426860bdcfa381296d010d0d69287198de18d0a4fbc3358bb9b64a32a82acbd54761a26180509ebd3aecaf7852494907668a8be7832c78155f1ad2b4f8cb0716d403c419bc01f68f92a08994fe44bd1271b93e88ac87a0f20d0e40be9eb7547ef23bd14e6024e8134c7b7b78685f63a8ccb435edb8d0a9bbf97059d996b98eeca199bbc565a20376e197581f81471cb08ea5011157e1bd70eb60bbd86396c3fa5e5cb8918fc1e22907d41a5821d377b994e7228746034996910bad50e8dd105564b1d3c3220dd851fa8c1dc5b693f4531f7bc15a7af222b39bcb096f5a99fd45f8165e89c82d532984dedd1130e211ebd5e2e70ba6817ee552337833eceac4f7f43ba2730e2c6d6c20bbaa258b71e349ab941b71a9ae38746ec1766132bb37c904492a6562fcc89655837a134e6116714a4fc11cfe42e5e09045b24511565e9d138d683960aa6054aabbd2b17d70ca9ff9999567e92ceac317678d48ada8ec4ae9f194d6c3e81b8844e67985f5bf54797495ff3adaad080d4a782ce8a2400fedbe5cbf7cd86247b95680fc73d59ebdba61d0600fb1ca3f4432501b0697b528cc36564acb31eb6f64d6dc2534d3581bad7ce17dd11827bf9638b83248e329bad566ae125babecdb6dd36cb800639137fce9e2725343bb79575eff5e3c7807b3d728a774fc8f5639d58c605b9c7b132b07d5a172ffb0ae6f0abf345d6f70126ec2bfe38ecaa9ca5045b0dab540b482f56a5f80ccd89cd80a8d2e806d3b7210bc6251005b7cc9b2862000b63b6087de00b0913d39d742151c069cacc7e8762a4c14c52f5d5b14a2a96c722c58f87030d6d5af4b6ea109fd7f759d415b058f68cf3acf49ecd974d7b6329087877daefa86416ec2ce291485dcdb27f044fcb610d3d3a7a64223190813ec7eb791b67310c2823aacac248009a2646b8208fd0c1cd025aed531552975010ca7b85f4db01c389d03a4330259100efff91a9af211716032f0c223255cacd15a620488344fda5205ff2855866d3039c210af0d188002abffd25b5dada92dbcf80587d550100dd1ad3437c4dc522be8f3ea4418a1caf46eff10fb30d1ddd2ea864bc8ca3e19cbf430675577c3eba7fb03703c9759075cbd98ab3dfe0659eeefa14af255da7b30b0a7c67df682e7bf505979e9ad33d892000d8fff46c167b8a373e8302f049bbd4353dbb70120c2fbea8f9592b044eb7bbb556922c79be92ac8a45941055c0cc20e664869eb59509fa3729a3a3a8ef456970781ea076ab4697b40fcf12b3f6d3d5977a2cea3242da9c4c09909bb5f6bd6e3c4993e6f13f2d4653c1ebbba187288d6341ebe925e00405ff7836b93860da702587ee8b142b93b0c325593a6912e2358043623086fde0ff42b533561a5c80b0dc11059b6e9227dd116035cd50ab73ae5a8ff43e665083c1ffc584f2d4933a5f54db9bc9ae01d4574ac22e105cbef79ea56dadb130ace987198b700de5cbd793b90480593944ddc976e35c627953494b7a0f056014bbffc130ccdc9f59534e12c8f45cc766101bb7f6b126c4bbb7162850ec4de1ad64fecb6986cb9b1bff2a3165fc17fbed2984b3936a474ac2218a1db00c4315669c56f5c9b49607d0db1750b0b93ba02bfecdc2c5dab0ce204e72903fcc256f68794c10922339dea0fa6cfefe66acc1eaa64a56eda72840976cd9232d8752f5ce569091a2670000b5bbd07ea4dcb324990d09af1c1b8992c1324a4a041f048885c580291b0153fa25f29eb350731b83c418c9323fee4625e73f1f03696a7603e53d8e41fa1bc9218e96f2d5a34953ca6f68acde9ac3e127968380fd27b5987245c261e739832562b78a84282139f84c67fd2f635ca483585628f5d6cdecdf523e4e1285840f7227a813a61c747a8890d887a808a6d2415957f8453ae018a7aeda354eeac3e83ead48b683e21800c3240d261c095a2f62c2c38431392b3654d0284244c6c8079584d5ad4b1b769543b36a18484cae78624931f87acd86477e2a0cc1e4cf2414cea672dd94a7f572fd30c30446f73d95ed2f6a7ff746dc93e26c16727bb846a6ee8fe44d334432d6a72c3a9e3b074b158a8b8952118841ce9c333a5184942d32dc0c3568d9937ccc02736f23409e86081291c8fd85fd60b4ffae41c509c03afcfb6b8c5c6bc7f580b460ded348c5e9d000a8e1af735207f75a048636dc07bca80def08001695cb3b272b26ef1e3a7b30833e9bc2ec4e4c811b51087f640fcc03b4282a088d3b0bdc404a5a5f42bfccad7b1135680a88c2563e6699730b0c22684e71e17c59071105e21b0902539b2f9db88d6abf4e095a80de97f7f4034ec300f1ed2c131d2526a410cd618410265ca0ebcf988db63ea8deb3b446ea2abd0a8e959079eb46bea6e06e829631e7bda8e8fffc0cbec05d9c73bbe6e4b1015adbec0e8e0769b7a0770b4901245539efeb10b6e6464b5b90869e1687d2c727e70175472b422faad9245ac00c3701f98063bb96c13262dc0e04713ace420c66d3295c2e451c4a95524b3b894482d16670c04a25c19dada9b390f1da6c5f6d2e2c1e7d8661887588532a30cb61b1738de71b6262bc1b50826867128432e09787b4595e0a289a5de508baa66bcb797089c7789bd900ffaf306012537e1e5f61ac69d67e60065509a7b628763801c39f6963abc6e3e12b801d026d624df07c87c4a96fa2717c0554f43be3f944730406426efed73923b659edc7ad23682442a6a047732608dd442a92092dc8e303009236ed45a8bda2246c648ac7094b32b7968b65285d05fd3da7a1f195071dcb023191ae304bb9359fb735b5c98166df0f984f5c58de0f683a76dda2901e34761dfe097a0b92039fa1af5d602d425a330a89380dd060aae19df985ad5f6ca06469548277e04a8732ae39307452c0679ced688a3bd5fec46898ea91c7e1d387faf84fbc84fc62eaae7a5bbf46947aa829f13f854b364caf604301313c1f4301b7dbf5a92d6353448e91563a399b8ba6f698612b1002810d1769996c40648beb9858c6138660eb77ed2774b046e6a1d3cba00758f609773017fe53ae5bd49993799f24c038e9d5296d6305d0db60192584df948a6f0c0540a3a2068c1121b75041e04dae39a91593094324a074a48ecb3bccf46f045afc5c5c97d4e8eb83b6f70e5f6281ff1a24c00e9651eff7c915c218b2760bce3e816716736d04758f5d01f4f30a86fe39507dfe9aef0f3ebbe2295bd103f1a9184ecbdc9965b4a99524a01f908f90816093e5996cc8aa7905c9551e954bf16a2a02ab52545a2435029f46b2a857e160e0c07ab0cd7395cef9c38ae946b79021307eba9e3a5c960dd8c06ed2d1cce72d2a97eccb45e96fd6e3499ba5d9aac2d1c2ba7f63be46d37715db5ae735c95e9f0d42ca7bdfe6fc1dca5c93edb1d28787019c6653c590f9745c97cb2a1b9711991a7b2295988ae0c55a1c2d94e11e8fe97e5cc2c4d8cbf4b690bd5fd17b5a3a351b081f382713ef832477aa5a8ab832a638425d979678683c1539b837d39f3a72d0563e6d656e83a1f06e71f5f035ee04179c6617b83aa51f7cba8fb20609589537d613301a8fb9455ece33ea83d37fa3e9e4f0dfbdc24e9bc902f45142b05b7929b9b9a1acffb2f5a1d548845420eee5c4f7e89cbd6938f11691bba5e4c961c22c8c1b18f133e191157d124d6b7b4feebbab203517a73dc689a980e68ac21bb8fae33ba6609da19fd9cb405ab2b94b40318609b125a00c12105e5f7fd145097c3821241f9bfac6effe7eeee26589a7dce0acafb4d9ad90d6e6d05ae5062991213fcfb0852f7b51572c33ffaf733b02bc60ea1db407ac8d26481715c352e5e25a8f0d72b3d3f0a2ad6edd2944adc953625bf078c00345061cb18250a4294e37af22377ad27ffe2b4f5e4bfab5037f19bab52c69bda5d9547ba0a1f9b1d2f8d7cdea5f1ff9ab8e464733542a349857da0132ea410b4eeee365109c0a4300bd8dddd3042484959fbc42424fa69166808a145893782448950d295da0f437f0cfd33b40d7452fb19879d700eefb40fad2b942444bdea0a25f104816541adba42492cc0bef0023483a49c249c6dc2dd49bd14d56f5be234b1128e19934d8acd2ce6bbbeb5b8ba2533b5fb28a9a4455a49e8b9a8b0641845d3892c22c102baa01843f267fa117c624d105a6773d223185d5e78e0da6e5c458e7ae6f4a283cc261288262d71334fb33927ddfe948586036acac18c1714e608244aeb0a81f143a6047aaa2b04c693295cdc3802ce160c73a14259fb6116b522316bee8bb51f36f779edbd503cd8fdbf5d5f5f778e56c8b52874dfea4a8e49aceb90bddd37091f424bc667e8eeee5b42827b11d099a594d2dddd9d885438db9779821bba7716ad2e86c67c4c94b1c688fe24addaa0165cd820bbd1990559e1c316358062083a6fac3ca0854a172f3650d9828d55dbd024065e5411040f7084dce0b1c109a3242a35b042e8c9aaffa6ad7083878ad132e897d5ac8b51837e3333fc54006005fdb2192f0535c098a9cd38700a46b43162bbf1e81823b43eca7de6a076020efd260158480a2556d578aa1d76b5bf1eb57fb97726721dffe06f4ef1972aff77d3a3d2b0f4814d38834e23aeda55e937d4a987b55d9a46a10b6a92803f0bee6054e762be23e95868af8301e5ea61612c1b04566f53fdd744d14eadb77da8fa79f5bbaa1118e81c76d21e0e92a5f1d7326e9d0227542f4275875867c4ab49a13d0f9a6d6981ed0cc6cc959779f93f06548661c9bfb73ddde86a894c7f931a437bcccccc11865d456ee637c1872995f777868780f19a6a7446e10a657fd8ddb00c1cd989af8d6631dedddc425d8c3237e89715a9e2d3a5c89b89a15916e3e39bf162ad2349a2a46db83296c19dfd05e5ff96ccd4f9521051351650ec05da1914ab2bd4650721baac202b02d5ea0aa19146d5a8a081b4685c9c8f1e467427ac2b848610f5dbea11f67dfe0da9c3bf208449366805bbe9a946f55088eaa1b3bde5baab322a70e5da55ccb7d96157aa98733247f6f9b943f5d0269c0cb02e814935f3ee36301a976145fd806d4a6881430aca0f193a7477d40f945b0874ffe61fcb98747fd40f94dfa356647fb6672581613b76287763396cf9645460ae5c6d08e1093585f2a220a7ee37879a42f97b094caafb98749923bcbb0b9960694deb07f20733e3a915f1794949c5b5820f10f5020b2b61525281f910e33b7c8799945468f1ead23315562c66cb425a08fcb572a0fe57465dc542a48c5c915b7e9562297b58f7e34fed9a1f888a33180bf1ba9fc51ee7fd015d052c84eb17936856c51f4ef5ef471ab02a766cc3ffc5256664aaa0fcdf4cb62cc492d2b44b03d9c77b7291106ed474055d16426ba8fb0efddbdeab91eed6b7d0aa5dc50d12a537272dbf668b9440aa9c52a7caa039249f89e47391b4deb2feb266da93efa33d198be8c53f1cc45986e49cf387abf4e42b5506d5ad3df9a6297c744abeecbe99a08d42c89308ee42c842660d5da57f6a15087f767d8a7751a11309c96aa8917206ee7631ed41868f451f6fd08f9182aabff7f080c58558551b11b5aa7fbca76da26c90f8d77f40680260420ead7ede338b2aec1fa30adf8f2afc3672150bb129f89ac92847fdb8c7c8844e0a40fdb887a67edce3391502711e2a7c9e5d2f8166f59bd59ab23d45b4a9fc8ff77814f78131c61f5739a7e27f14be03c12a068253f0e55bce30f5f39e0a9f81605507790a7e6959b5dd07037d64f7d1209e86512ab43a13f429629a827e5d04e4e32a58055ef18140edc1efa20d227f87fac5fac52a61f49e1318d463e751da83fc9ff7c020ed8a9432c22324a830e816944d5b28b7c1a576114f191cd362361ffb4856156be8d0dfc0cf850abdac83332970353743da2322a3778f2a02eddfaac47bd69f82760ab5df273f520e1ac2ee26378831040b80868aa03863d55e08818826be64f186d00a842c2eb030212104e6839f52cff480000b448cecf862f9302f736e00b54d6983787d7e982c68036d902af239d6b5892f250e207e003ca15f038d71d440aeaaa9f1bcff6da3f46b200f82b24fec3c0e3252e5ef145e0bfd66ed9d4ef1cfd93bbdd3544ca881eebb4fac21be3363262a6851106b421933f8f563234894b880443b9911544964c4e3676055d453555ac5459e44c906d1f9289f6b58a3c63da3c615a30834cbe908fa48ab5a214c4142ca972874b0821d56f13969554d90c001c2280c2035dcf8c12a7ee3acea0244acc006269ad8c1961d56f13b67554da298220b2b52b08c91841dace27fcc5325b0a9f8a7ee9b43a8118c1ac948a3c68ffba53aa0c6e752678485a589df6fd0f9d7c55d3fb98c85f6a291a22eb88891b84bb479001866acb7f50160a0b1345691ab18c9535cfa8b4c26d3148ce42a16764b8d6f211931594161ef5c3accb3ccdccd384f8f0b7c67dd05cee33c3f60decc32ef6e52dd1da3b20cb09ed23a8d3394055b2b2098ef054338406fefbd21650a757777846c58c95cb8e228cb0ab018620a1d56aa1c2b5804e10a2ec070029fb0f113c1987c258a1f1e51e8400774367c682328bbe92c33a8dd9925f4850715475da12f38805dbc984151911a67e8d0c3aa8b78d0a2872bb8f0e265d550872b3ab4f091b90145199710145e0ed0d9909a1b36a0d47e081841c2471809ad918435bcc0a952b1d3ec944f809f4ceee3facd87d14a8dfa52678aefa5d656287df6d896b8ad3d18ce873f4acacbb7ce13fcb29dceb63f6b7a85629d4e7b526c81fc847f2cb42680d5abfffad277a97b469d4aa49bb255440e592a576882b4b5226c06fdb60dd6066aaf5544de48ab7655348408a6c0384945447055dba6203faf4d74411650b4a8fc3259c75550a8f0a5857593adb407b7967ab20f576915e52bd377dc40317a856616ff50ce71d5069feb827e5b85f0371f512b625955da46463e6c527b9983e69559b298638cd1fa994ef97f3e96c4c051986c31d2529485e88afbb7473529f8e603060e891ec5dfaf590c8ca13dbf2a734bda8361a3100617708014a7994e1d114fc1efa6c21a2ceb825c7015d695e6bc28c5326676a176f769f56b526311866d8355d81ebbb06dcbddd74c620ff90f0d4119ae56f7d15065b7b16b2dedf5cf26b0ad27be83ea52761f333f64f9decdc764d33e9d50039ada1f8055b99b507354d7aa7f5c95fb749fff40f8b995ca9b62f86be347ededa01269224d6bc0e0efcc5742aab409dad1a37010fba4e0b5ddc7f64bd7ee5b3a755f324fdd6f8276f7b151d522432505a45621216a554d5b54f68f8cb0eedba2a1ba431bb431d547fd2c9fd8f9b434eae11f2c8f4c5de30c958e4a473d3d3c4c6608aa3e4b6a4c00a2a09f0fd57e5eafafbfb8592797958ea2f83277fcac4e8e568bfbac28564fe5c82db17cea76d0f2f1cef2b1a6f850e5e7ccf029215d4060fe3b13a58cb27318638c2acc0abf8996a65f004ee8c7385fbf356a2220ac4154b77217ad21456da222ce0cbafdbf7dff79df4dd5b88c8be1c8860e34d8a25eebf597c1e5ee6884f5f19b10fac4962cf8b9f1a9e9f1763e678338753da9ae2305b917d5183bf7ce87eafe0935a0fceb1d63ecee18f7dddbe1f7913710392cd0a1ca1a537090d0d95931ae9002c78d2b2e588208436a6edcd8c945e8eeeee1892caac02244041e96c0c5134bf8824a125e62400398430f802e219c200eb59f78a236b7eab67490c2c61344b021085cbeacfa8721a6d840096c7851a2079ed087d4dc94ea0aad61e50ded4b3f12e7810c8cba674684d01a4d50876b1ca1d1ed85d6e05963a77ede0ce0baca747a13c7ab75158731b7a0a46d9eb856043371bbc21e2b99715df1a594ae7157c67dd8c7894d8e4973df0c55468e57b36d7abea669bf42bff64d6a0a2af61a93aea58bfbb68bb935d08b118eec64cd1823b4968b37ccd8810b1f368470c4aae10d4eac41461760dc60071f86708587557734663723175a83bb8592c4a8a7ba424941a8df8c152cc6d9fd093696b438afbdfd269106eede81260161c6fc31c218ebdad4f4facb8a0021e6928ccbd117465f3017cf326d69385b1affe492ccc2c932a43290ca2974f04404c6cdad1fd422e05e7bddee5c8af3dcbb2f55b300d4e9eeeede05138f907732c9e3fd4f77ce393921faf1fc8f9979f2f090bb7be48238c68feed28722c7c8fe11c863e19c16ea7266dc715a983f197f54e55165e073bd96d5c0e0c775e17ffbb3bd6c3f583dca8a79fcd68c6c6fd79df1ce21cbdc9a714acfdaf319a31563fc60f50f662e658e586f759f8e2abb2559fdd82dd92a0beded92ad12696fdd8b2c83316df37dbdbee7f5f4e262aeebb3f63aa330fed55db18bc9e694f05f32ffcf18c4d39a2b7cec9678d5bb6919614f6ad00fc2b93c536f6a12192a43ac4c628df1ef7b2cc6e8794ac61f4a4b4acbb2baf714c723de19c182edeeb516965d2ba5ecefefada9d18cb17449fff50e6634c020fcf5df28a5941ba8ce28584b076c7757e6f7630f8edf8df97d9984b4bbdbe317e677f7a677e78eedf79fc76f3c8a63442457e5f8dddd69448f7675fc7e048a55a295782506c9a255514fa138597bc0f0a0b21421d6585d1457621477358a9b55339d3014e755339d7aecd8288f1c5046715d65b8070c0fbaedd04c27deaa994e31a61853a73d6c1bed7168120b652fcbb2971a4a4ab943339d362d88b2943d5096818232aa078ce9b463a33cb80aca344371b06e5c53ae77dae37a6a93c6c17adaa1adc7ce5a77ed81b2cc425947c460c9ba72c42f284b29df61b42ccb92d0b5235f2dc7d128308165a91f1ca3b21b15b9ca2a72a2ca5692a78e3c688720ce5b49ae823b9eea92acd40ffa78d7dc7835ef6d4fb72552fdbddb1d57613b9eeadfa96d25411ccb8aabac224f35ce463454bb284802a78aed406ca7b6f7d42424a5ee8423e8feb74301d854a4f92c50e4db46e95af265c47cac1ff8a5ee113b8490bd9b3b07d8ce7c17d2d1517b9e6d348348d1dddddddd8f06100485d149f57df8a555f00b4c6a0164864946399248ba90dcd0d1d97992b3cb3a3ca0766a5759e42a9647952552e597496d63c5a4ca1fb3f4d442b754eea2321197ca1f8fda668c88b4e9d0e8a4f297ca0fbbb4aa7be28eab00f0fcb12746699b98e78ffc71ca06d19e3ffeb88ac7f34720e62088d455baa82490a71a89ab6490a73ac8041c5a24d18daba491a7fa3f201289993e3f75550f57c9a09e9fe78eee9b5447f751184e5613381e62a27e2b40dc4573517b9cc4474e9474c4f5c2b6bbb128edad0bd4877e164ecc60b812c37057c370b366180ce7d5c45938ed594eac9cf68c3cb5a5bbc8d9e989d2a9214ff55f01ca88322b1915e6b05838160e0cd715005c86c36146ed35867dc1ba6063585cac22cbc8d262056db1867c70164f5b3b568ea72c1cab8af56345b1ae5840d6949863c1703c339df6767878694e7fa2a19a8ad0c7b4e5d39fe87e0c971531755053214714748fc42bedb5151bd08f79a828d3a94da5d02feba9fd181fb1492b62e1583a969324cb89a57394f1b4aa47e7c4d26905744e2b20a76d4c3a6d73ea2c273b6d433b2b278bd22a99ae753ad5cb39d139aeb29c583a39168e85535434e4aa4ca7fb329efe6d4196d3594ecc91d9010c176bf7b88a76f952fb7b504e7e2a4ae74bfdb22eb5fb4de0b2232e43027255d64507b92a23722e404541590e97e9643b9eeac902ef044e2442ec78004be31fc30c38a0df000600a980efab9deee6b12c6b4714f4db51fb77c099518b197640da9bcbdb4d74f76408afc9d24be5fa4a5c688fe1ca2c4daf8f1cd04fe6f331bb67a81773a9c431f2bcdeaf12b6315edfacccec117a2b0154b9ba59b2e8542bbee8c2b1555fd7097366d813f43be1840db255fe0663e4fae1d5cdad5c0dae1c0a6675b0d7b2bcc6b2b804c69cd3a5655996e54116e4e2aca5bd2946a01f4fa930887f206cae77c8877bda264aabae87cf538cb0802449dbc8bf9939decd4fece278a853f08382683f8c703abca9b9f16a7edbac209819491af45ba2197c4e4abb99d9a3b082a46dd65552b5aacd3dda1eb914b487d3a9fe1974b049b53fa6fb7da21858fc2f7de476694addc73af5c3de08d337b67941c47d788ccf3af07d7cab4eefcf41a053be9588a726f7c0e62ccb7e85ad5927a3bd08b297af65f29b5426b5f4cd1a9764719da77be108f45b2e4456b254b6e22a256af04b24bec10a995c6583f07f13072f60459dea4f55234cd4de14cd020b91c0fee06ffeafa4a5f2b78f2f21fb6e96bcd06f6e9e4dc8997bc6716d38432dbd9cdc67712bf45b56b79a257f057e7995e063b0542afd0afca526753e94ef1042226c67304f611651c7386dd00ffe44de89eca4c68fab6d9be6dad65091c671d23639aec26e86b44d090246dac6aad92ef163dc2da554fc9ff622152a683ffc911eb3d4eed840c0a209be755df0fb2d2b060d0ab7ef3339a7a699be02fda66e5dfb26f5e23e6a695cc9f218aa84ed498e569ce64fabdbc8a0df567bc8055f2323436a5fd7b5f5f3514bebb10a6eea4b5de270f81512f3db7d003df037a9ff59efb1c3702886120ec49c41bf181a33332329afabf415e02f75eba969751c88bedd66c88ebf1e31cffbdf364a79e08e14a5220c5916ac9102c9d0130ceec38da537bedff508f05fbf0237a991fb1836a9ac91f1bbda8c93bf927215534a02fd626689c6b40d7fb452fad8c960a03ffb0af4675d932ab992fc7849265e67c74df08ff8acc96ea5f4f444e9e9e182fc02d82907badd866127487de847ebccc64d0a1365b9a15260ccd7dda3da42eca48cf9326be564029dfad06f66da0a5c1bb6276565bcb2142a77a48e7422af482b4157dadb31dadba30824638051295449121c2a85f21b81407b1bc33661661e6ca95fa682ab202db4d47a823590b5d2d2f4af3699f3b105dd9d5b390a0972461f8119d5fd9c9cba1d934d00b7c328ad7995b04ccb4cda6e5d8db94da6211c764e99bbc3d3a98d18a3a4340ccbb2260a754316d77595606060ea0edd8005478661588603c7d71dba61084dd34c31313738c9919d4e279a23c70e325028148c0e1d9d153b321c3870c4ecd801002472e4c8a163db4ca83be4648747b663c78e8d078f1c6d3c0f1e3c7af4e8316403d1900d46320058c2078e214cc898e35177c8061cbacd0b6c68054af0df660e5531ce363ad71583adc9c7a05624c68872ec60d27c19aef6b134f09d336169e04f0e00fc03bec57d7b706b0f7e37157632b87c26db90b679c999b0eb63eb88d35e74b204bc3a9ba971ab315e96e4fc87a5a1aea2758358bfc56963fa102c4dfc2da38ababf629b8fbdf8fb56f7020c4b137f470ef4f39ea2e582c4624149dbacc71ea553f1a9d4e8537a76e4d0cf75568beb402012c1e4c542122330be423dcc05c3d1bd9e8f509ff67a7301216264080cc72b14b7ab2d95aeef0cb36428723d26a59498fb609ff700b1eab75c646032ab0c4c68d552700fc8909a4c5361ce39b976d2372c4d7c8d6b1cf8477c13d739edc5c74c99492b529232bbeaa90dda385ee8e73dded33651dac6474aad887c01860d727dfc106c10fff89f7c523f593fefb91c833ff007a382cdbd36d7f197f5db26d4e1c930aeabb3b6b3cac72677fa8be3f5b0c762e6dab6c71180d574e24c7fe2b862d3d4614fa455c0ba4f4e15e46bbf24460626b45e2f43f64c66c53ec338176269e25f9c4b612fc9e8807e8dd3d336b393e17a19b6eaa46d2c0eca8bbbc4fa2d9718ee42db1b22b94bdb6cdbac4f7b5106e942ec8fe843a8e03dedc58fb23471b9e0a098f8964b8ddf38aef29e4ec58f8d53e3c7f7d19ef7b84fdb4020ac75d4b02c437dc4d08dbbbbb12450abaed01b30a8df0691f1860e69c458d9103d8521042c6265501d544c2660dc7a2246322050545d21378a20c2d5faa18964ebc693d38cb998cad415fa62c64505dbb6f1ff9a29f7a9dde45083318b129356c99ad7bce655b24a98c4b298693dbb3d0a6ad256e0fc942dd7345b8e51d9a23420802abcea7e74dea1c20dc2b57ffaa76dbc7b265bf5873e11be43eee128ac23ebc73a0dd44860bc4168ed2ed575f65f1afe7654c8df2c43c70a7f9706fe8e1b504cd0feab7e33354e603247ba3bc8dec9d4525d2ec68f9dcc1119b28f4a608010f2641442089f48c71ef8104619f8c5ba24f301bb0f7a408828696f1dd617b21a0316b7933912759ccb51856e938a392733658e6cac5c37066bef62072177324758f2c81c6619b424ab92e8e32a73c41f3e8c3566696fdf3b99233230f11aad7417915653a189c5578fe4082184f0a530cc5c27a7f9a5f89c73c6294bb39f63879eba938b3eeded4308217c2952a44891c252a448f16105fd173a7b2910c2986389e97083ecdcdd5db819efee2e57e85228c3f70a5d4a120a5c28bf430861fc99f304092164e82b93dadbd7f104ae11d4a1b3ff9339126becc9827d103131d4e694a0fc3e99c0eadeeefdfc42bbf04138813998989f0cd718eb0741f9e4dd4743ed202877f74150fe4f0ed5c5696f7f8d40f9bff853f717c88de6515d89248b36358fe80108ae00874e01b2c317176c41655da12f3a425f6c68638c29286c333eb6efee9e81a7a8061be0a08d1e9056fd658a1276f082246ad8c2831442284901c690ee9e8288da32b561fb0f84a6b882f2d906102e2dd8bac6d8c119943a810581ea884186431b3e683ca039ea0ab581f3848d34302ea88eba426c78b1c5504aa1584894b8f0020c31c027747b1416f5f38c7024451a3c58834806489040f000850c2f5c1cb165d5104a1b3788589060d3cd811c24f5b8a18432b420eac20ca22c707cb8608305413e27042180c876050631985284142240b941a24a133e6002488b153a588a380961516201dd4daf90e9eed931f0112824818d2c2530361f5e9240430921aed842488c554fc0063f1841a1040c787003eec0448c908e6e21297a906d81c51d670b11324b1f577f77f78e05947fdd4f5e42c2fc4b75070de8fed62f3289ddbbc180eab8015d6efbb13a9923bb9d4c3f7fb1cee4d896669fabcd5114d6a0cced60837234876ef704e5986e6a19735d16741f33691a609377eba9c5baa3edc18ca5f5c16959d762b3626ba2b06b84b2b36ddbb6ed90413b119b0eb66ddbb66d67dbb66ddbb66ddb5cb06ddbb66ddbb66d4a6cdbb66ddbb66d32d8b66ddbb66ddb3c9e6ddbd2d89c514bd3940874c3f1b26ddbb639d936af896ddbb64d68dbb66ddbb0d8647c66c8ccdbb66ddbf6648b710715836e8de02e624e4ab7edbf547718d14e84b7713d0efcd848a57694c1c69f55c52a1eab545982ceb417ab705c50feefab439fa72d8071881ea294a263092984e7d5d46c53ac2875dff36a6a6e6e4ee8615e41300a6a5c0b048fa5e96d69700c612bf5883beded5003cb7ae6a4947fd01b320d06f566693a1c68a617d46d1c55984ed99c946e5b77c569e9d49a86088fd67b7b3b143d99b40c2b5d280b854249142a4294377fc0b41c8970f88071c59a061d311b643e7fb3905e9af890f378699b2347575dae174b24a8deebc5777982ea4764f5effd11ff92dc5c2f6e2a72fc4f47ec3870a4f37537cd8e97c62b8cdeec262b6a2bac1651b29b64b70c6111596518040adb64047327e38f03af9090919fe47a7eeb7925e3af0224e2ab80ff7a1520617549e6efabe07a96f14e467614e0bf3e09ffd5c52ec9fe7c15cc0e4a535a3364bdd5ae8d34420b8840866ad7704288249ad8c1072e5d568e42a25f4deddffd7e2f026bd9e38b392d1e50d8450f35199986a0b30ca021a8f1c4109620050e5f508c07ad077a01d1043529617201b5b01ca18a348850060da81a5bd05977c80b161c815e7587bcf041ab82caba435e48e9311404a38ad51d32c20e50806c0d3bd705e235352640fae4ce10205ed31e3c6a0f2e91dddd175313c36d31e50e86e4a93641b4b422d65a51fd23b05baac36fa15549c050a228891c82d0010968aca013f4f4842669a186cb82f2f717a180afd65326166282190b699cba8f12a27483788d959e248482b881165d56ff8212de205a913e3da11fad5bdb70412fde367dd61296b084312a3ceacf04487589dca9311a790a3693f6fab12fd8ce7c11a8f6cff8b044ee54fe17a3678c0c51e05a799ed282f2cff054ff68e4aa5eb9773362d0cf07f5544f4ff98032e344a0eed682edd619293ec059d1c0377021841a2930c097150d3163acbccb5a015270c9c14e01a8b80269d59c0c979501beac9c4bc1a2f10696a1150d1ad12a6b05f0631b4d5f93ba645cd16567d59c0f1eac686866214e3b279ed3cee905a79ece89dddd9dd35cec700e9c9665e9f48e142bce4d58e1c28516383083bb7003254a3676af07fd16d690ec962da54b4b46d9b2a5b4862ca2e702ee4018e332ec81515e0079e00b600fec71c13673dcfd9e90d912c1f5d66fbd1edbba4329783313961e72228822884b665488c0d589205a1f3b11c81cf999c52b414f5879e2cac20ee3eb88ce59083b206702c80d026a1601408008b9944935b815cfe257dc8a07311057a99665595607c9b72c2bfcc3dd5f5a7de56249c4446d106e9b1747bb2f3696304a028a1f4937af020946abab9b13422d0c349ee4000a15d60090d2285a95bae9a92e7da96bb24261914b034385cf3ed3a8e18b550a4a4f432b91258d1512fe4d562708b1babec90abbb812273faeb464925c2f93e4ba4a9c4c922e05a56fb26ab222e217b72be6e2d3505d3a4caa72a2b050f9fecc7d89db55e466bd966cd5f95f43a39138b9613d75c37a6abb8f0974aef1e2f9b17bc6d8dd98a661bf0fa163bb107258cc22d756966959a6711f0d75f74bdcd6acb44fa43b67d7b912b7c2aeb032dd71324d329e31a05728642246161694f2788c6b0e96e25f9f65751f939b6ad554cb61dcf39aed77bcd57d4b4e6f61c14262a9a43d660db50d16d75b9792f63c090fae85df2d1bb718f56a5c478e98a7f5ab41d5507ec965a7d24f7e13f75944b56461e16f0d595858441a37611b34b3886043ecbf0dfa6eb052a9e44dab3919ce1febc1c115c6590f4e86e315e6cdbc1e4d46c874bbb2b030dad1a52982b0a7cf8585a01efe77a1ba08b515da288c088f6efc87fcb657f2ddcdb031c2e01fde5c8edaa6271bd4eaa3d81d06ff801d461b751841520ced2425a4df3f717c46bb09e797e6f4f11be3299326338841082184b0b406bd269db31fb684e27482812d73fcf5d7c481438bd78472f5d6c51cdc7a2a8623e2277ea0b6fc67e73494dec1b82c8996e664d250263714e90596619b59a64efb1cdf5cb4e0095288823010079c59373f6a13c0e60e670402edf9b3f0d1dd83e9bea76ed2b88ce78343fe1076cf59e2e6845ee805874ad98ccfdd0fe5d71de4813c15368fa9a1983e07a63d86698ffaa9e361b2acfb74e0f82ceb1a4af6f4b16d281996615d4c7b39381f33cb322be6b118af38605094aa414fdd25edaf9fdd677a79d96426ab07108456d24a5aa9d46dcd62f8a282ed0c675916d336b283b40948f938bebb947de9846d5bccd35facfb6250f1a13601ac626f7aac547aac48090797421a54fb6d8fb79fb4792aff89fb7aa7a150d3fb67bd43d3a01a6c2859f6f2c2ae2f755fd62dc92a46d5a0a5d78a94f6312ca9f645c397da0da5a1c0f00503f718e32e847061844560bbeddeebac021e30e2b407e197f6204c5a1a883d918e46aef295950a77368891abb0872f5bb02a69c55347ae9245f2880a251115ca1f2a8c481542895361524e859dcb2257c1e4bcc4498a48f5cb90645175a3ea2fadb8156925c21ce89721b5e763b4e7a8a3a57118224ff9675ce44efd70e02055df74f4d02fe352fd3f1c38d539e3921d6563f0d831c276e6332195aef7203f6a9b2cfbeb3b7d683d0d968082886ea2d4f0783a0f9df817ef527d8e519d99a1c9c853fe3f44d51f025947ae9a392e81b689e3394826233719556738a53dc7827e905c1d16e429ff138ef8b0a0ea3f9bbf678ecf9ceacddf1df91b4e691b2a2624ab085be7e949cf9c9ed06fa63a0a4be37fd2817e35368e42751436487508bb21eceeb6712fb02a75b5d48d1b37c6eeeddff9eb397373c96aa9cc7541795a890b5b141c704146a8794d7fc1abad73583aefe0c9591c060514fee1ef53c69de9d89ec3a927c61f908dacd0efc78f0db275cbc27d8cea493a3527fde841ed5ddf2cf509fdae62a153fe73522d01a6d0a8044e566541ead0cc080000d000f314000020100a884422a148301c0a73a80714000d7f9c4a68509acac35190c330c818638841061860808019011a12da0699bbe258f4eec8a6991c406ee1832ff661ea87b0abffbd1d0f726885fdbdd4253b239331263fbeb72486eb7d4b8f53400f100dcdcad91d4643bb06d1b08b5d1831d10ec266ae0b8fe5b96118212339323327c6a431b70952f6b2fd173ca9a750328e20ba453edc10405ebaaa37f35fbc0a14331d82d01938f0c44b80b9a1ff31c6fca5041feff5883cef9c5ebd26451031365e90c96c57ddbab20d114a2b5e6ea7ed09756050ef57e4b26351aff2443dab3c4d5478b09515fbdb1de4e2a8fe33ee89a95adf86185b8a589abdc389b795efb16da08f6a77f01e3f5b92e3ad0816767c0029b1b84f2a187bb1c67d3298a53d8707ce0a8cde6b8d9320a398bcec1fe121775846b44cb0e78a48e5585c9b05151579efd97a181eb24f46f6511b415b5d5bf09338497d48ab8609e5913e49adb6e111ad7930c9b8514b70933b4d714aab0c03a5913e45bd96e1d0ed7b728b3ce8f19f0187e0ee9cf934f18ff0626648c91e199c8b8df672a989430f0b52ffa352e92d92fc67a85cf2a386d9613b1cb53bbc48a0de08beeb11c3ec26a0e79cc0b0277192fa90372f00afefbcca48504c66f8fa19ece33fe2dc098988128687f27d17036792d691116130fb7b0dcb2804617dc817d7092c5c6263001d7685ff5684faf64c49ad177884a6d1e9c596471363e8c572ebdcb6c3329c533d94f0e1090e91bcf4acb4db9b6fc54c1366e6980da97bc8addbe81631df46c7aca50044fb4497da15c25c6421df2b306b6a249cd1c6482ac1b36c5790cf43f537a71c49d1212689049f27489c97943f111b7be348f2e1dae77aa534880437449bccb8cc4adf859ea120d69f0bf8bb62043929bee2038cc5f75301b16014a9cac5391166ce72279cc78cebe20c4145ea84cf8fc066034fbd15e48b48480dad12027e763b4903116d4cab885a91133fda9904bccb80bec19077d619694808366c1679198bb3264f628238f22bf57d2f54e17c66c64d69780ae062ff82523a3fb5834177050789498f00a1bcfec9eec9a7e54852d6487fe46ab84a874000af82a0ca43ecd3859109623bfd13ceb938663bc1d35d0af6fb73246e52c0559e0787b3b4bd8c3410389cc2c14d8d0f1702037621d982666019920ceab007fa5a4ee21c87708f929f2dc6320ad538c1cc39640de14030a579f50066be8f0e91435894884bee4376ba85ac76055f16c20ce30a2cdb3efdb5acd4303cf569277e7361345601ebe15c118bbe746107ee5a362b1656c09d6470889b1a25cbd8aa66ebfc3be9c1f380d0fe2accdf11d61da606487ddde65067d44d9bc76f1035de51727b574f4afd4c77ae9ab1c1b44312e29246e28077363a2dcaec0464e6cd1c0e8e1f678b4282767c2da28f0f8a406eedfb3a7348ce83c7ad320b744f96aa5c8c02d5e0fca8dfb47276bcb99d9d538f39edd50e2841d0decfa8937fa4b6900f8236c9dedf10dc0a92e5a9ebce72d023360ddb3647ddeb7cf2353113be169c52ad3f7fecc8fcee43696cde0319019c778a151b05e552a4467ed5ca0e030fce31142ae3cf4227ecde83006bbc9b42078896d6192f568431afb84cea6f712bdd0d9820066e71bb414e86cd31ba49296ba9ad98b00a6f1c74800c069a63d580b58901e4ae9eb27e64523aabe1790a373721dbbc9d86060fe5ca7ce6cb818de326b2e344b449721cc22aea530b2295a1c7d632d50a71d9847f362ed7d4195645495f88301fddb199b2f29ee7598a44cc7b9777af34774d2bff5b7343d620110b9fd75fc8096a7b2db2fac6574fac9049b4b3310a682b771b6747e73cb164366b32d07fdc55bf5de2f98f98cdc98082bd5ab5d3aa55027d98e4bfcd49ab189e3e215c181c225cc941ef76af7cf6835787d0a0e27da6c2cc0e4a04a0ac4b8b9243d7249f079cfa341ad7b1e782d14fe88e256089d9c5e7305113a9c13d1dce7fba3e1520f082d4afc68ce84b33499b02fa87e79228c820476639a3d522a2171ef5059ff7f4c3b3497fdc814c5ce971112d2a797dea5e068314efe2d3018c657eaf467c6d9d68c0bb2c0bd7c1e88137ccf06e1cfb0f247bedab206c7ec59ded220f76bb613328351fb03e6c5f818f377d73f68e1b2445315a192cd52c8c9f06e9b02d1b6f2b8e6517fc2b5735102a06069e529f28a2da8e7502e939f510dd04876aaf16f1e96e2ff5b17150eff5c12573d3f10beaf74e00744b2d08d8da89efc8af0735dd0239787c937e7e70f7de22f0dfd716724656d70ba7a394c4589ece946d55905e6fbaf1fd33ee1915bcd4e3190121e0140207efb2f6e534d96a08054a067b6b5bb1a06cdc66ee34bbd313ca7ea8925009b330945469e27f029e61e70d8b2310e08483624c9edc66df96e687e4516ca6c3e4b9124377041aa758de84ec8bf5426ddb29493be3027aaffe9ff75ef1586541d4ed3f0881de082db61a5ec911093a6c7bd1b581f8ad9e244280ac8168ff860c34c4534a9ac0e62fab9093aadfc52380e6daf58a233d6a185887c6f9e90e886406a903624128884c29717458fe2013d665116d562050eabaeb154d7ac1b37052b80c34b0d15dfddba209723057dcbebc3fbc7cff6963476f3840f8a024713969a09c94b56d7800f660e8e400202e46511a31f06501c25234b10f3c903ecbd431ffc07467d8b6b58c3f73076010fa26a9148d5d7f3fee4ab5dc34100a464e5737868c9b7440a3970482ec8c3a944e1b261e63204e1bdbd6d2348c203e1232d0d23418866a1746d8111017d0a34bf543bd7b8405508e61f5a081656401e2b56cf404331da51a8a309ae17a67191fcfd51fd7235b10baa55a21424a48b3207b5f39dc37243f025a105d571debf19680391ae766308dc9805b108e84c9b6a431a24103406cec5b9534f4558c6dd3cf1e0a8f841e64d755c77abd25208e647c3605cebc2f5982b34fd2de30715d625c21d409fbe806f12bfb4519325d87368f426e0515af9ccd870dd486418cbbb8dfb4e915190dede16cfbcec16c9c8ffe4950f803571e4d87d33b5a04abcf00b89223111df949115f2a8399e8624facc55507fb8b9048e9f27ed64de387c9e8fb05a032f9c305c0c05f7ac6c0a240bd427e99e76fc6f54452b04bc416cfbef75d94815fe0bc948cd87628ef588246fadcb85361981ec84b45170b9f1afcffff27bb0263db1b5d31e0bc43e091ae36316f75bcf37524402f62d5123b83f6f46c656a511274f73f2d56f17dc2cb415103ee5127f7eeda03be2de6639742784c8acdc9cc5a0d637eda2fb2e8201112366f893f4026e145e584570302a64f7f902bf0b281bd54e5fccdce8f00b4b7747f17da9928dedf8a0975faf65ef85dab93b22b2c9053123e014774c5509d01e88a8b86bdf8632d2202476ee0a7e4117a3a4d82d76ce2e2bb45601cea2ebb9de7ac7daead9f7e9bdec32abf61c3464da1fbd66d5a7133b154498efbb420d0c4e55827a3b09a96e595b00e1cf34382d11657aa0084fc1e8cb03dec4f8d25ba5c55971a2c077f4a8260ee741bd1056d48db50bdd52307f20ac761f82ebd13dd55b564dbed1d0ced62fe5c41b03f0f568f19fb0c128f04a6f0e6d31f5676a7d482eb704846f46f545d05ae368c5e248a8250d50ff0b1121a91d3ed5981ebd46ae4cfda098b0b72e11c2216dcda0f89a98fd5f0e702ed9a7863ee92cf08e3835bcb82272deb0ef78c57156b607d9329cd6c1d79130b6e2c84289d3578f89a8073a24dcd0e5f12984fbe9b061f3ee14eeeb4eea9238d73b5ff66ab8f0871a395d23df7505847cb92061199a4a66f688cc83230b60d35055c010eca4874296e10f886236ae7e6cfd724370f3424c6670ce3afbb83b8a1651384bb7078722e3e86f174a124f14649493bd46e560a376c9a1f476d794eac9690a6737d08770c4e21a17db2946ffe3e307ea99100051452de795e287f1ce09d3624728f4a4857e7677a6c3ce2ceeb66a4845b5079ebecf1ef81f1f3efba8ee89f4b305d169a2eb1ed3ede4dc348cfa3ff2ba149de119176ccb70c80cdb2fb5ebd13c5f99d7a7afa198dd43a73a75a4c5ac3ee27ef79ecf2b9d45eb1f70b9f9cfed5b1453049a1610abf173fae9f2f0813bb441e0965c0fdf8edc522a29012e1605e439267801e9e0183ad20a4f7e00f85f8f4c9b815d67f2474e44bbcad17575db0c48a37e3308804971ffd045497bec12127f1999b4c7b1e96ddd60e04057140a593cbdc85928f5c9cf564674540390519aac01710ab83761943c1b0e0ce89db74cbc7abc835a04dd24c02698cfd0371eba10aec50d54bfbacee8dd65955127835a5def12e8b5eb4a560c7559afa9fdd3163f5a111abfd16526dd93474824f7cee83096b83068aae382e6e19ae71804d6c399dac3b51ab569249a2e2bbc28f939c3c20de967e91d171aad72a46a078ad0f633c2381b738c974dc613ceed4b63516eec53fefac3fc7e0dce3ce79b3e32e9f74ffedc7ace11556b56b6cb1834c74dba1eab850999d6b29e3db39081598cca6f54764dfe64be743a0bf799bbf6d1dbd4984e3d185ea7ad8ae7fdab0c625eb62b58d8c9e46a941c08b9079968b961a23b24b2b3ed0c8c99b059947a5bfa1abd6b4da7c75c30bd99f5a806755d7b986c28035e1cdbab3623918bfee1ad1fd04c911de48a7c5ba5a4245cbdc4f30e9b4f677536cbeb2ce823acd235b9607d53195d66e74870c98a93efba813408fb03903cc52d2192594e4add05362843d1390750b9b7811135471d4176a21d30dd2fbf317cc358d07d26779a7affe3ffd71f3d57e674fbd4e30e5a8d7b95b20d35a90a7d92fa7f9dd131027404accc639701326a46c4c8db3c548078a40aa669df315209b812aef97d4683abd988edfbcf24f67a68a4bdc7a6aed1a3a47b574a4757c4d770e692f9d06a79df22c9c9704ea1acf3752f4e0c704e186fae4eee18e8df749871919ca19f40a74ad9ce4e5671c82bd1e95ce8fb8233408738b703ad95682893fd85533304f2cc05e72d870c349267ade4b83aad0fade9cf77168c75a35f46233860ec7bcc92c459301cce47b59d194fbe99a98d651614bdfee544789cd7cf33be2ed1762f7a0afb2b57c1e49ff11dd1a1d0c4a28ec0fc25ec572dc4728b9e3c2b172838f190e6b77db2250eee4a495ba005b3482b46636add319cbec20ce4c78ceb98eb1a5a72b703e04d63f968c53e567b0450b43a739eb3d6cb64bc490b2cdc1443a06628e7c86d9a668360d0be9515fac6692f40619ef2ab98ac4c3ea84d423e67f803e69ce25a366153aebea043ca8479da32ef6dda26a01a5142e58785de2203aa0b78a2ec3c42adf4d46ef64d0a220abb369222ca014706d6bbe4b18715f345038f86836f74d4b48ed8330f05c5d4b2ad52049d80c8a45b597a20f3ee1e5486a75bc864f5e552302b40f682c8899b73cb4806a7341dbf19ca6f2d3b5e6a25dc79cf6f6e8373b2081f9d6eef312d5605aa0a8a4ab2614beedacecc17aae05e933ade151a5241100675d514f54bf6f8d9c67587e043b8262491616cf088a6dbcf15dfb0305b1de8489728ae0b25b7bc25b490635192189c455e841152a868e640802054319b37ad58a08f13876da9212b4b9b9d28e5ab8344c6e28dc493d5d313870427d356189758378e4f01857a0a61fc6fd14e5f9a4eb247205b69c388deb5bea4432ccc14412ab0f6498d2c3a09550e3b4482ff0fc1fd70e5df693f51c82490f40ec72aac6e3ad1110ce2db5756573e719f8ff843817d9e04306c1dd6f6f31ec900dcfe171d93559e1a62c1e2cefec265ac2955532ec07d10f052f7b1583f49aaf854d12b18d91f7bacb9bf1babf514507e581270d690e8e8ab5e2e7d9b93b5acfd891b59d1d431172c8493933df24bcaf9af40abedfaba82eaf402a19bfe1a0480ebe65599dc48ea54e7d50a5dd9bf16b497cdc432967876394eec0c272d9adb8e78fa91a609e89f37c3cbcd7281e1b7f0228a27abf685a37c8457ce451c729dd2d3e85641153267a2a0c041c5add7cd5b1bc62a13782e5e1dea9a929cd7bf76a6bd96509da97db5e9d599abfb500a0cdcc82e4b839a35603a0eee1bbeb07c212b389cd2dd0bde234686a9a33a487902b3784fd260dfe42fa6c322ad32247a44c48848c3136449b58931831e72d891bd803e97201c6707e26587ca415623374298cf5311e394067811da3c7aa53a7ce68f9ff85715fb0601bd0db193b433b6ff1533bb343a4ae1fd93a12f8ad1294831372333276044c8de21db11eb80896ebd662935d6dfdac2a34b25aa3a265fe3f4d04cf042dacac8033fd695457d624951820fe6fdb9e4986b66bc2aa32bde564b383afd5dd372e175532f88622ac2a3201782f4edbe0f6862336d19fecd4adef60f16e2c6ef9567a4c649c7234b9aae3807dbd20dd19ef5e2abdb8f2cc3ca3a71b56a501761511176f403135a704219731bc8ae5409f02467e415ae9d7f6e63217bd37cf8e122e78e622d67bc006c43ecebd6448a3456bdc2c37898f40d155a392527ae4bd653888c486500acb223533cbb16f71c57275bba4d58b9468bedbeec6daaa833bcc02eb5ecf463def57057fba42effa2448024605326d19158852dc91853307a208f9152af5d998d7c3e6916ec6cb7cc92f3c8b1febb339b23634c323a6895d59c64af3fe22828a2a4371963781fe5f861a865531e15719ea7bc577cf76e8cb50b5c948c3280dc3c7c8d250ca14f2e21389c94a0a255f21e02c3341729d82d483cf7ff2e4a15249aa47340b0fb6d0faf09f304ec62dfc53647603590448facf5582d175f3c1f55c380b601ef7b3e7e31efe17b4d0e28d03645af8cc0b4099363c27f37bc91ca2320e726777a720c516e9f2681ed0502d0a20e9d18b7c5469a46ca20ce8ee559f90e085c4461e71bd05235bd50d16edab585cb4df25c2ca9bcac933b0b357516542912a95ae66646927d5fd07c88713d550f286d5119d606e0e22aa3ac5fc344b1bee92fcb10d934d470f4adb6a53c9a01e1cae08850b0f621acd3de4412d35a1e4a84ff312eaa41c77aee746804783a3970d2ff1deb67ec5e6f7096b64c8bba0c59b12d8af45569dfa0163e267416e8f81f0c83311ed300ccf6a54e582d1fd2d459b918969040051d5c59c7a4b76beb96b5620542c5b76f2c967792456b8936d265410d95c3f54adee4665606ad656d71434a9fc980af4e6d412f1bb8168dc5da412b38bfe1ec42e32dba00663db8f1bd0ad90f42be967712e225fe3db8485ace7d4e9be15b4cae8b116b728cc7e443965dce87ad93ad36a5422842571ddb90067bf2223d382ba3f069b8be2fb2c1cc58aa1b2b68538838028020ecba1fbbd4ecc7c35f64d4559f496ccadb3331a886ff4f55bb580d6404e31d8ebb0c9b345055f43e64cd4d006125b205cc49676335e04786f878108fea7fd7309b33a40797616236fa8506cb41e7aa3406580a8f29ed7dc805a4a2390b67d8c3467449b79dbc5c3cada8b0825182cdbc5473101ca3b668ef45362f3f6648266c756cc71b477e8440ea96fa54ad5d8e6a292214e0bcaf530f30b02591307c376c92039f65b43539196dcad676d2092cc2420d6a865ae3a5cdfe064c2567fad82b83b4068335fc83e734abaa664ad6f3e8a74fd82d2bd2058e9b9efdce0d4095001396e10082bceb57a0a0aa0a23e81368750db6f5921d1d820cb7c4b3cd6bcbd576914ca58ae5f73a56887f6d4dab5e0588a2ef48e989a649c6d05d5e8361f5c71688a3254599844ec1662b7a3c5f1088a4796e2b08e4aab4b9dd3bb67061c1da25f096dfedc9dc657690689aee3725d03ff5d4c4cfc31dd693eaa154f5c0d86d550c6ddeb78c234e540a1e677fad41890037a10c6afaa666f9ad6a6cda1979bf0446f2f4fab68f33a846f1bc4d93cac1e85f4dd23bd47fb0904a69a8e7933f53f0d83b93847ab085e58d0bb80bb524fc63336cdc382456735d65dafae16698250f1ba09729aa7df79ba12b02b68558f37df38d4ad78e0f3900238a2c7b194443e0b4d91b852b6d28c63e14ac5963b29574a40e5bac1aa83d2181f64d7ba1f1a3e92741d5f1b8c6377185776b4b034b9df5b81115081dec5e20d7df24236b261cb692dba872f145f08760f954f28c9bc89d156f0882f537cdb75230d68b64fd2b1417439c5558fc80b5f3601783e611c8b5f4b8e23c4a656235dce8e7e54778a5cb4e42318c79164b6ab8609ed9258ec32db3fe9a591ab9701d5c5edd80e0acc18cd9e7062a46bbb974afb9321ba64ec28b5a86f1726ad7652bd9312c513beadb0310b36bc24ca55c1255a956c17328c506eafc5d1b18f1fd517ec96496983838596b8fab2d8c46651c76ec677878ec40edce3b7038e1f9773cba8c7d530530c6e6c681ce6f5f59042a85ddba126ccd9c61d65649f21a5144661f119e59505b5b999e97a9cd2b29c026c3e403ad2235881f869808e4a764637cbc562e17c3c514a945a8131b2b542305e7f162407d0894fafed94598d95e150454d8b687d0e083acd97f5313c6c12820707f5f7f9352340c972dc95dcfcb0309b10911442b54fe013fec9af0cc473af00ffc28d8979c135ac1044bcb814ba193ac5a26a9454656aaced812a8764a0008085cbd42f9ed572bb139b042b7290a885f14cc6c559af783c40550a5ca870f73de5eea77abaef49375a97863fb16e69296b3e6739d322bf0b75ea5c639e2549f6090e5058913b0e428a5431e6125468cbc68291936ec21073ec2a36fe10183cd1ddd0100dfd264e26253a3f0c530b30751b890fb0ef4b494de5467dc37e1aae114691288530735f30c38366a42f6bca04f034e54dea81b337d71ac7ef71201bfa10bcead9d7169971f43d0f77a0b09637c964135322ba1fe346cb3c4c2b921a807c3ece2e8f8de8028df59231d5a664ee21ed566dba2d08e5b7ea10d71ae422d14a6542f282dbc074f18fd3921e4109c13297a9438f4f4d2952b9ca72c329c37671b62e49cb1642e9e396eafd0e4419d7ff6b77e724576f4b1fb82688cf03aeb001a9ba8de30a024b8678f680cf0840c502e07b15c846326ecd80c6871a72edb932647f945cc0383e9434bfa7592cbe3dcb6aaa792085afef45b4af51ce361c7a75ee67a456fd4803e97a2b10cf357413d90f25ae041304dc1f83f7b060ed0868bb1e9250d8fbb615de5e01bf400a1888601a525cefeacea01caadc9c319c31511a8231dfbdedd71680657d38a19ce0e06283def93524171f3d062d2d198708a6ba982367e642bdbcf7aafafcc01a1c6880bcb49c1160ef264e69b5e1fc645b3111f3637db0eba17923a3265b0001e8041db6ddd98937c6e28385860b8bbbadb1f73ac32c850b707187b52e3416aa5299b88f626ac2a9fcc39ff2b29c72ffd10a7d26bf07a780fcf16e5a481ffa67b0c69f0b6af1cb264a7f52dfc3140e4926d7cf0d068c605695421788202ba29eb94e74632a7b4092221a00327b591eaae7eead7a975a34ba204b9d4ea987ab07dcbcbbe18ad3fe5b46c701413bf148712e82474b0efeee0a8029e3040fa0b76eb99dbc889b4f6680d33e7602ae13541fc73528665e44084e200e3f1e0b460ec4daee9376614758d58648e7dd818d26bca89ef611d0aa7d1a2b42995c0b6c648c4ab4c221161f7b819f26085134370ea5f94a25dad2d803e1371684f131bc4cf47fb059b9bf3496977e8c6136c11d32cb3e2830b23ddc1cc0ff52404c3a480047cadac1ef72626fa7a34ff974c5453fc6ae9ab49077e5725a3af08d56ad2075790d6f146618c751c3c3202dbd9b46c106c2ce5312e934c52a7d368e11361f041264d2ce95b44a1f4ad68ca17a830c1afd7a75951a90d4f8fa2e08af1746de81ec126231e2de9208d253514ed618b2a61e5f5d26f0ac5e4ac204986f6900cf1ef25a65c0af9bcc740673c6b283372c2f670bd1c59b9dbb2b3a84f884288c3e293ff5c855c35ac31ea971473aa71c048690feece0d44a15166c8ca1f8012c74b2b8c2eb8b112cef9ba8ef5231bc35c47020aaf50411b0f90ba50986115585c07f07d2eab62054bfe6736c4eddc30f87b4049b8f6890200ecada9b4a6bab45a08ea103f2220ab9072619372f4837b4fa70f9e6035ac71f2a05670d2f65115c37a191c4921652c8f4fc5bc08e8b54fabaccb5d341549b9edb91670776cc991036b72ff66293c0569af2dc33d615e716ba43b41debffeca417dcfecc7c5ed66414e0cf81e8ecc21ed35a09ba4cf95c8bc3659fae371d1d186740a69dbebff2708bd3844763265aa475b01244eb12341c6437216150d68cc4d966791a1a4a8a764c99d1bf2abe5b77184cbf3e6ee9875dd23869ad0cf4b820c7c91c3c9538cb7dc37d268018751f315f404c687e11cda9d5420d07f7c72b88eb01149e4c2d800da8bfd1d2314cd30cd833eb9a35586bd2a2ff7c5b0a6e1e3cc80c927b4a7cbd7a3f22eba3bca16ff8612a97728e2ea97672df63e0d6deffe1304624da9869cb87d52d0a796da20b382b650b82456424b0f2830b8d4ccece38b9bec8edf96a29c818bb3a721ab57181fce0a7a5383208279442dd17b4a83a04a0909f1061f15be27afa9166725610237dfb22bfb6914e1d355b97bb0ae004fcb4117cb4a0467215e415909ef4eec0e6cc31830a58def7ce6533b70d33a574576cb8cdffd720657addf17dd23e58c761e9f7665f5d8333611d87a5837bca0f6edb1c0368a395bef6f9c1bce210ed97f5c07b7383f308cd8e380d1d021c4d2f5fa2ca1d08189170119644a21afc11e07f0c4d6bdbde188e5f5f40a9ca61d054bcae7a1918c5ef94bc41804e852e8ad4c8c04579ba25018acafb93aa8f7c58f54e63065d57ed4f0b20c98f2bfac1cd7a72c13d47d9b5b3ff8b0e6641afa9e26a1e1855bd87357a1c48d43235f9d3359c9eb13557f2c9e94286c6ef3ec7043ea37a60ee116a6bec09af176420c64d20424bc2bda6d426e8e9aa9d2d8c3b0cb01668a2799c75f41cd23346dc24a675dfe9ba6c23d08aaf58c9c5156d3e06fa39abb6b8e3f0f3ed55333ed84919d7590a0773ceb221b7768e1b053c0ca5d9d5ac84f83b68d63d926135131f680e91c91aedb9adc798e16a635c7c21abfea8be803e63c68dd1ba251267581fecb24993064ac4aeb537d601ad13f61d3ac80cd5da32d99603df83cdafb5c110ba1597cf2122d31ed9ef389766e5b270977977a3574ced6be790e4eea1af78da38636428324978563c4e5136928327f9c523f2f4ad033c354ef1a256a3b1238af95291e794436316fac2a43c514e7354845211e3d9c0c2e9a19a19886a13fbf47ddbfcb23f0e8e3063403969ae7aa1c9c00700f1650b64bdd9a542870243657ad3c6844c2c0647607e5796bdacecc3d55512fa2e070d942f24ccbb2bb006a2734feff4412e85827c8f559ba6d6a5d41b86410bd0a66e386ce6a79f5ee78613db779c6573a627819ffb694475f11313cc4d642c9c7d061b414aa4562f3876533c314f9fc4438160f58233bb042d3f0b7d07ec54411cb1aed2740a385df056aa7cb5653818a40e85b5c2a5d35400a9d0f46d0b9cc4a571764593171a5e89a9d8f3e623faddcc54b7f2556f11b86b16111259c11554d0dbcd6fe16b8e424182a851de3c778bef3221a2a2f1082afb2e70860a8091313831d074d3c9fa0182c79b88ab7a1069f4a1978e51565f4ae4e4f8174f4887c99a48cd0c5af3289a1db36068618ee6c54e31b49335ec196c4406dd3c2676fd71e57b95552c08d1a4c977ec5107bb487f382417b5f2b0d46704317479d431668f5db4db961b52a3c904348a71b2730456ea4c308d4a469cb1920d19f428b52e4993ead7e1e08c91c58bc0d69012d4a46615d18617945fb2747bb698ffd8abb31abc5e600ab1a3a0c6397b7143869ac58ec55da563c52e8e243fdfd276e0a3fddd42002f06fff7a911f661b552cda4d72fa561cef8519157f2846d2d5f068fc8981d077677996287cc2e8d8b721463566cec2c620c6bc53d4f3da43c9aac49ec510cf1ea9b7f34132690bec8abef0a637ba3229f8152c43240687f91810c4f97d42d51439827e9600601acd0b586810e597d5f52b9195dde8507b5e30961eb02c51bc02be43c06726a16b1498f75fc72c310f9135d4d0c0dee1d747a4c2c28eaa83874480472791ebe0d4077b585ab37861e13e70e9a937f73fb02db224b96c6cb56aefc062043b800f84be988ff072b96791979bf3c2337852cda497b8200dcd8d1a2a2a51934791500ec520eb8ed593a99f3487af0579d501386211830aa7046f8221ad79b1ac55f503451a6c798ba5c5a8b95d8fd3993b7cb4f58ea723d5d2bd1bf0eccaaf25c108e6329971bf2c1cd829a477825369531968838a73517bb2b116021b5676a255079c8201e52f8b47a2205544e48ed4a2c23231940476baafdea29ccdace8f2227550bc8e1564d20ecfa26122ecda916ea5b2ab5d74e3c9475116a6dceb95e14a41099deace0ce43bba24b3aadb44a0c5ccd1e1fd16d22deb47264ecb4116358508f40668b8a4cbf52117712e25bb1be4c476f1af98dd8357ef4aa3809c2e92722ffea4c83d1e5aa5e24dc355e57f4c8b3cdb7aef31d6e56e308501ea133e232a8eac3842b861e9f25e146194920ea95dfcd3e22b81202f37c861d8d60b2777eb53662dba3e8e658bdf988c4f3cb748ecad743e1c9e040d92e094eddd43a22d9f0cb573bd766ebc999fc536af30c6baee170a0fb90f8d678257b882f82467cab81dd7c20df00098374b5c5f39e7b0ebb81eb3a8c36a5a29bb217d37ea1e0beb478c608f44490c9eace18f1c66f42733310f4f2acc5049931da8f91358873b8d316492692593a2ee5881ecb0e1e5438ced8120f7f134cce1c63fa3b3ec4279a43487a503d418dc2ddb61bc335d717eb9d5994e6562c9f1d09cdcf0ee5f9fff1a8cb6e1f8e14dcd83ca619bd1ed155139ff742f369f4ebb7b1e70fcceeddf8c43f33407a32deb9e67895a71ca0a365d85577c764f124fcce585003b625750d31dd90fd4dfa36c0f7c151a15f5ea9604e61a9ff2f2e87faea77b7d077c62597bfec6d797d2e220c7165cb8937d4cd4d5c013397afa8e5802ad246a3e0f072f7dca7d52239b035180dcdfd34b913506d7a9fcc9511916618a83faf8b6420c97bd97aa426d50aac6aeb369d0dc094f3723771f13b941e0cf129b4d01979add0415fab2e6fd070fced55eb789f00e8c32ced8a489c108b306dc63fa1fe90694d22b07bcb92b544726fd9e552c8ce1f698a98f3996d8cfcc3ab01bd868233a1243989abe6354ddd039661922334f74cd21477360116386f764d9ea8d20543fef63823668d632d412a25d3096b8ea0ddfcb72f64406806b4812b94811b34d396d450275e892a16f04a346c3d1722d06c642a4525b703157b17f2983cd1b5efc44ca32e2f369ca1e87033fc01501bd0649f18b729d3870bbce9caa44c6e021399bc494c66c226995c32c9b7e9b38376fc46127155ec8cccf23443d46b8ee99f806db5303a033a86007928f3fc1a7e4ba5c868d01704373bdef96bbc16fab25e7598f09979d75e28bd63f5b288024b3ef7d42a375ac2c35d16d731a63ce6dc33448578653a4bfec9557d0b032db99711b38f19ef5e872a9ee29579f6cc73d78d2dd1f296a356b3ce3fb9aa6f012d6eadb3ca3cbdd2d802d76e39d4cd3aee94156d8b8b96a0f6fece7b7f89822e2aecbc9f386f773dcd3db9d6db12dff3fe01836fdf0513aaeff5301d64b02e70c7faeabb9ce13a25c2b187730de47ee06f5c12fbfff3de8940828c80c0a8da1869a1f4d66af9f97307546a7f2cd0d43dfb009c107089df047de1ce6d63d9a500df998e1357b71f7b1eb8d4b5cb4e3c94ca1b8135efb8f25399dc7f9adc55c50b70a07eb4e7a8ff9dc58b45e5925d408f1aedf588777bb7428049f1d25e47dae3c8a8ceee62fab6c75355480fef7535367ee191ab8b96608e6570703b0de26f753bd5e4ed35a61bbd61b86a4da148ac807bfcfff1ccfc9a708f474d4b12b34f84f6f606a128795639133faa2d2b1358ff5bd90b902d650524d79e0a3a454818ab30d535dd1907a31c38734287a61373806c8c7e79d0037e22a16a39ffb044a0eeebf3e1a7c0c3822ac33e0f6bcd8b043c971d2644ef95b37551dd8d12d24ae408152d02a49e98720beae2ef0ee8baa47f4c544f7d4e970b616d91fd385fc1d2066c2c8cc8547d47970b9ba70b22b6cd852eb6f682ce51f231f49c0c3bc02054f57189827389b030a614a479f1fb49b2ce8514b1dd56c33cb7b55fca96b8e106e2c20615f72e018f598a31bf10f625253bc9a2086b464a1d0a10a2c9a1c0588258c59fb22754a44f10572c6a88a2e0fc3e9758075c099876ee0555609da9d0b2bca6d2825e49f1daafe63584c2a78dab4473d37da9933e30d1733e310b4f305eed53b0f2d76fa3c98f6a4afe950a0a4f5609f1b0127b9175a63b47e344be44804c7217dddf3a26e0a5b8b52700dd6a45b84244ed5c2fb022ce46235940a78abf4dc535e884096b0a65c5f469a36e577542f2aaebc2fbb3656f45d249aca5af10a3b07a8750e2e7e711dae519755550483070b241cd2eecbcaa7d947ab7e49da165ed71f6b7f67d2bd50ffcd88e7e7e24e5d444940268e77ad61a4180d9d127eb5a4249049b8af2ab8c52519712e3b0685ace10406edf42050b179d449fada3adffca426533130371ec738acbbeb13fe4ada966a8837e4bb0586ee2c700c82d66149cf24a5a4e12cadeff4ee5ba5d04943f1e4be9a8e5f0f78a438ad76f55ded0d930c4ceac6ebe71c846eeeb1e5145151f1353aa10dfd034e13c8a3ab76f08906366965f8b239e408088aa9a71058c0c80e5cc4d44bed7866ffa4253b02ed6bb4883150b5b833fb7a8d0120c4febad58c9679c4fe3f81a1a3f9f82c85df436eb3a8ba4c791002272649910df2412832fdf76abbf976c03e69e4aa64fb458f922a3bc1ddfa45a2352b7e4c3f5beea7744604cc3d152eea710fd70fd670d7fb3666e1b6a01f94a13b57e81e9c5e84810854c70d470c103766d3c15ce71c170f02ea2c85efe12aac36089c8715bff09173849e810ac7826f0527115df5520e0ff728aa2ff1c34a856b6292d7b4bc7ec354714f72cb4f2e22cf15b6877929a3c0303e76b062b12ada6a6c8d0250d00dac95dac7829e2f4470e727d8f7555c9fc66d95c8b2ae722b8e053b6cf6ab054dab34627b755a6e6bf4a8e74edf97f34a7a607ba0675f9346c1fc6cd24f3fefd08441087ec634fe0bfe0cb084e3086a45756629c8373447006e711e12c1c238af3708c28cee034629c8163c4710ea711e30c1c238e73388c1867e130229c8563c4704ee0909eb0a826b427bed58a9dd6021e398c98e4f418fd11b5b8913517fb82d0310a27c020db574734e8d154f2bf13783dfbb342493623fc5625fc37e2fb93e2acfaecee92939d5c6b52d353acd32e0d3ac5fde4a7a52468efa53726197d3eaa01b9ed9cd92724f4dad63bb8e9ab6a0407cc1743616bee01d402717ea00788bb85f117d603a0dcaf07bbd66ac038ced128f57c51f48a68c3ec1bf5479145cbee3d3ae8180275f9c7628a9c58ccfe5ce6574803fa1cc40e7e41bd716a76544eac88cd3c3eb7bdf389339946fc3c029dd95c163ea703831829c3f4d064a12a9f8683140b293792a82d3d3ab019e587448113ef852672a189fadeda3ca7810caee0e30b7d940124707449bdb0dd5411e8b5c6d3861a2c9e089b076ae609f3e329f05076f429a780edacc0392cf56c757410b5595b6e66f7bd134c5a8faca908ad2f127e8e5de7ed056571ce905ba742fd91b50aea827b598087d60a7a376b70fd4a0737aecf25b26689080f4f783e8787017eeacfe8d962930d5ac50cc67f208580663d19798374c6b827b7a4cfa5ae89b80bce59dcb505bed2006f0c619338ad6579b4a1fca84354397b2bab568cb9c8051e0239ee3a7c4063f99a6aa6fa32ca7cdf3a34521899a343f15c88c26780da716a38b40d3cfbc7b70478e75231f25750e0cff9126b1af0b2ccbc8bdd6f75115c31ce4477d652f1a535348ff76f88b2aab9396ace562208211d6d5f86083704480aeb253e6106cf209106952556008dbd152d59bbff219f17d0fa668058aa2af27b072a98e85716879c11a3ac906a9cfd83bcd9e5fd15f160c31f9cf5cb5c3bf713160d7e30580ccce0dd03933e2ce86a9a65c59105a3488ace837aa8bd3c7b57815a24360172aee6cb40f59d4190ffb304a8ac9567a2f50bb2e85b54d6a33a3ad38d08dc67d4dc0b251c6b28a53d6208d18bbb4fe07364412e7b3cca900b3fb2ef405b4497125f512ce510230279ac019811ef577c8e095af2f0d450f5cc99deea0e8ec23a341ca21e0dda6b4201052e498637f9f095057a5a112a5c0814d0af89c021e3adcba92e02271d9060c8cb3431982f5c0c03c8f5a1e9b7368e5a02e13590a4733561c48b8026b452300f14f97d062f05542366c91bd124acc80d9318361355b546a523c121087e61f0034f35201554833358623bdfb9559d53fa373457be086702aa23dccbb1d16bd2987ba151bb49e96f4e6769b05c2fb4096f586b25be86d0926a257a5ad0a8eb90c0f2696447d8da89d196d05fa66c9ff0b8ded6d74dee73cd9120b6432d33dc7eb3b46a0c3ada2022aefc8d132a811ea9f948462eeaeaa591d0d94e23cd8196c7ad71e690bf6b3d60e02d86cc343bfde5e75b17e5e4051ae4b5dbf4ee065dc6f5e7085d3e9fb719288e091b40ef813be9980bd28239208788c25d131c8fd4adf5ea9f6a37b2ee807cadf6065a24d377d8390c4e53b926cc2141997d6763f3cc2a611fe6498306ec787abe307dc36d36fb19303a34e5ea968d10ed82428cbac9d6ab1b7b149918e0351e34888707fc55b6ea1c5fbdb0d5162cc3246ba465a37e87239f154cd54be1ece04d3ecdeccc734aa3d605d23dbd98a0fe99125fc9ed743dd34fca44c9774b5d526a92a363148014ac89b3c71916bf51ee5e4d3fb010971bfa6bb60b922ce2354560189e4af9046888f2925bb75a9fa3a3a6553be611c3845c049559855b18a93781f3db845a7934cade2160433c23c16269e20ac00b2db16308be211e66ded2bc7b462b7d5694d2be11d4d89774e52d8297a7b59cbbea57e104ff4bc2a03debbcab2ed8ede6d4e56abe7a78a6505038847ef7c2e334ccd0b09495944f2328bd1d9c0e59df12e8176d9aadf5bb476cb90de8159b3252a0fd7ec5b6df28018258fff61f1af69d7dfe7fbe1b7700a01b73ada2fc1012cdd73b0a6cf8f88b980b15c2d6b230956a06fb202ebb060e5bcbc9c78504a81c47d3983b27d25ffb1550ad11aa77fd71891e5df6662870322e27a37fea377b772d2a92b50cce6674d1f349754b3cc9c0777c4ac6d9dfc941aab53374e6b9dc901959232dc4eb836cfd8f49b7b8c157ab5728f3f8cd94e98b4443ab6f46810f159cfdce809c79d6b50147bba83bdcc6d075220178442dd05e32d28c0db9d311de1e9b0ef3a025d4b1bdf24a757354a6e63cf156a8a0f601dcfcce53ca9adc1bd431fc77f08dbc14d566dd2968a096103d88ac0b18a5d1078379b5c29ae090189520c963f723df028509516ea07b1fff1712c90371a528607f2572ebd1fb1378703a4cea244822405c81ec826028cbc6fceca442586ce309ca89b4e0fe8a4d401cd404bafd491be28fb8755c6f60a9abf857854495db484c442006868dc25dcc40170b0969d4eb08de4b5d04d4ad07f55854f1a2a7d517221828177198bff13dae24d40e974bcb63012d97227e67500409dac436c85e2391ea49d986d085a62bda0d744e67793b4e918a3bb15349324dd0f945a64ff70b193037197af4bcc1ea2626db1d568b20cd785955a630b0b1cb12fa0cbb9d876a5dbdade88a39be00a76f92f4ba5d54dfbe7b319e3264395147518796097e5fcff29f6f71f94ee959fdd88f8bf310037b64960b111bf519b5e730aeca55ae25f8d91b96e56af3f78dbba3c25d50465f9eaef11885e3e33eddae8df0b0342578934743a579410a09dc63238ef2e00bd7a22c881c24dfaf81c2903f30dc7c3355bf0f4abec44263e8d79cfd5255100de132cfd19f1c6640d0af8942a6cb8b125407c2a30b1744bd2ff418cbc23b4c9d43ba21b6956d840b8f1d525346e3520d6f2fa556801af49cc8183bf6b3d04fbe071316326a6f80c1cdd7679a20b45a53d559d18fcd8f79ae8c4fc629ed8670f58a64e90b5c56005b414f9fae8a49ab2aa0e4174f135750abfef1c85b47cf9b31b5d5a868288e5c1bc1476ec28bd6fa755b5943dd911700e365f48fdf904080d362bcdaf67d826034e48df3882511cd71f7829b45169d00d669b06dd7c4418eabb1bc1221c961ff5b9b94c13d1613bf5232e8d035b610d95c335577182b7b3297ac43b891785f9e2f6f3cf37c1b3344d64a85c0c5c08b9adda8de594f5c8d9709e3348c25c78fa53f1f490b069515101c0c71323a10a3f7a535642cada35db027ebbb2469e876728ea98d2a19104ce46884ea63b4e20247a31653dc6084efd42f64387e1b864f26466d80e54e0f77b35af60380a58ef762a546307d26a91f6efff6945c6c8383f21068a82dab5216d58543ab63cd9d38ff2220afc1c6dfb511090bd0470785889e3a924523b6668cd6046ec89092fcf3c02d85ebba8462de372c7a852d1722fb8a104060397acc4cab962dfb9dc845fd65629c1758698dd8fc221c8b98a1a8942f3c8e360ee1fd55d476e9ee3a514e98693003a6fa7d2a7a04e63a94bb9797ff40c3b6ffc2dc138e3ddac07955ac7d66a3a8b3ca74bc880a5872d1671875f880b0da2b16c4a008b41405e349bea28ef4a0fbd21b12d3c8d18380ef8c4024b4b41468bf9e30b9045259465a697a31452c9c4d3d9afa17585eb7a0054ad8981bbb7128469a16d581854c0230a34eee0336248bc797a18b8f9cc4bbb2dfe36094176616285fe598437a9bfa92907e5c147e7178cafbe1dcfa62018a177ba6ccfb0e7ab75ad2d14e63cc8e38a0055ed42f89adbd3949efebfa22154706a9ed7c6d00a47607378419d7242f445638f6a29a5ea1b61d3fc31608b3bf17cb57a6ad585187ea1630c3338448cb0be5b5443c9fab845d0729559f3dc1377ac8797c883becd1c0425943a0e01b777832d4854b509fc6036e23da326fac550587f09a85367f5bca6b159af78f281bcc1905145663e0175ce839ddc28bf208495264752a840d88929a635613f92074c4611d10fc411a875dfa414b597551b0ab0622f338422dfc0eabca78aac9686408f8c2263825a7b0babf9d21e4c6081d4cd3ffc1576f2928ccc9d9591ef2497fdc2b659b0aeda14d52a67bc7a18836708daa954e79cfb43eae888b2ddea243bd5ab6c207ff497bf1d62b96e351eefc88e5978d643e10464713ad5279089c9c44bf49fe78b4ecfc68710f212d8f15270354371d873fbf8f911f206675ba4f5fa4d5654cc58b6fe8d848e885b7a414d4102741ad1645754d588b13ec60762ccac4782a1d18628e53c566a077b7dab25dddb9c15581b5bce04466c58902941e55f4cdd043361d4464730619cbb8823f4c80715d67080bff7f19ca9beb85474170241b04fa8f9d835e1b6b8b93f9af80a0a0a93a6492dec73fe8bb4142f0d1379c4be588bd196388eae412253ee58a46abee8145550bb1bae8808a5276288b3d11f30f96c9cdc85cb8fe2f53347533d8980915d34aad4c96fae43dfea30b74cc24cfaa6ec0235bd3b5bd9e50f15d657aab5471f6bac542cdbc9e3fb260b662a4d8710db3f814a8da817408ee346845077960368c6f61033edb3196c1d19afa380a90e1424ea4d58079307def4183ca44d17605e3a0f3b319cce13fb39bc4a6488d92baa8db3cfc442ca2205eecb5eb4cdd8bb880287bee7b89db41234f467e6ab25d19aa438ca12b0878b962de1c03efbfc5d7a9a398eb25d0171f2c4a56245ebd34d5a50f39fa6652d7bcae15a4f808b3e37454e5f56b1148f2059412b4cc8ea0caa6b1482e6bd86fc79539547b920f77963f155ee2cc871b7b0cc765b2a429e73fcd20f6d65423598f5ab791f68fcb82715708d8b6e32048d8ad4e3b26661bd65e25bbb77117262c3285621e34e84776a344a696f75d5065379f395721b0f05f2a18942f6342612b0419d269cb7d6f64db22422f94b45cf04a0f9a80fe558cdaff6bec3425c66fb7394966e7085c96c9a7d4a205623b105301e58b03fded9d686ad595c658b9d6dc7e091f16e8e38ac7e112af80341ad2a4d75616766c8fac1364cccaec2e54d659e346eb5cb858d8905e9070c48408c83e1daaa894ebda7e5bbf8c1c3264c59b878c84ee1959ee48b7a8bfb0041619fc2ce511646d1024428e89e58c7b57c6f75321871faa62cb000820cd6f697029970dcb14cc65dae1f560b4eb4624a20567c8e0fc747c453bedbacfed5e08af30fbfde04c9f848b8064f4825b6d4f62f782c54cb75939a272fdc11cae713e619e8bc2181da0068915f97e3f23a403583b426d94513e013f2900f69131fcf260d431ba779eb8756a15706059d99a209118e29db7c8f5340e2b7ae7687f2b58d8118401f662389725704969cf2edd514aae82810e13e41874929575a99cb606287e787524d39c97864b776a8b19f7207a02b4af1eb1f7d6e4f85969d1fd16696a4ae43c4e1ca11d2ee07f1973302c18933dda56e3462c122411778b097f3d8e27335eb6a724c408a89c021ff1d135e56beb8d81b2731f40ebd068dd890c52693f8b2fa687dfecf00cd46f956b8efea3e181e552c83d87a5cabe624b6da34b06a971b4cb82f029596897629c983a73a810005f9918d754971126a7224cc697f3caf31a3aa5b6dc619b6e4b16da8873899260da2ecf6fc317243653107f977f43814fa5c4ab9cb6bfd721e880b91b4cf75a1242266c7adfceb7ff60b286c390d384ae7d1b9a362e449d1169bd9268a38b4dbba860c101a203023be3d5a0eb33841a26e0192999129536338857b1e6e8418072a12e7cf1c69b0bc8237745213b4510fd33acd8d2cc0aee4e06c96652b1e92506577a591aa21f45b8a4f203d94d27e7a68e9035126c673d087f6c52f529f44b84132fc19d96d848b87c92998df4178308604929914937ae6d58ad6d7ad5dbb929cba8ca061599cdc5481d3639a27eb339a96ef92598b291fceffadd4eaf05b72c55fb2d98246215e8fa55a84a7f376bd9492476c52a6ec0b2c9f61c3630f92a4cdd2cb3239f5ce8c8a5e6f9aa66d63e081b9168fc738588e72c38d0a6cb63ede2708681aeaa400e1b7fcf00a9f95cd3a48a96577b0c3adfc770b1d3e7bb944160adba2658a722f4150bd99dcc7073b9df4d5a4635fb3f2e93a21eed0c0dd9ddc12742b1f0a5980777df0a9b4239e14610f239493cb82b293e45d912718b7c6a9d19c2cca7502a78c2a6e9270778aa36c66543113cec86899855378077906db6cd9fe83b107f2b04660ebc7359b2c1bc1699541b6e79d69178bb2cc7b2a4758c512210075672324a60b42d5aab8c52ade9e4b512e7d3a4868542f36ae84f1dc572ab14f633ee4b88b4724c89fecc1a1e5f979b5f50c812c33100ceb8c8f1d7d9a9e6fc011d897c6f90f851586e749dcb69917f655be8f54c0e8c651e70276fdee381c3f76c3a6c4a3f5aef499bc4bde5787313770be90f682cc3243fc3f4dee21352236d6309c7d991d25f22fe5c32b30e3176dfcb41bb405632871828de059c38020f1539b7edbab17f10688c3530f7a719e3ed9152d7e18b71115a620c502503a603a4d01842286a887edd74ed9b6b98720ee2f245d91096c1cc6e4a5552a59c1eb88d5ff5f0d753eff86758efe541e50040dd9fe0f51937c325a560806822eaf08ceb9f4b543ea6473d47dfd558156810093757eb9d14bd1a56ea725f020da5cd0fdeb5b579e62e9a2d5ee3ca1042c8a44f16e433482728bde13019689bd1571830f493daea77ebea811c69a4294b31e1a948def1bfe4368b30b4745a83324e5b7f8454fc86a6c0e80f02cdd511c77511a043fb6963c964ca9a5c3fcb6c38ac5d6db091c51323da6835908e37520f000fe17703630e01dfc0a7bb97e3a58c7d483a465cbf06ed5fc3ec1efe915e037c5caaa61f4e31b2181b8c22939fc29a423bf011719fed65d6c6e2540e1311a9d4cd605ea0e9f327d9e99574a0d73a85b022e8b46424d5675b7e5a06b1ef47479533a90ffeed1235b0da18aca809b255e409171032386d36dcd04d6e15d10d1b9bedac04f8375f037f194d730519af14e25154d5f83a9962d15a462a207029481ec556d3fb7240a1c303dccc103289ed1d438c7a05e78849de0c9659acec383b6a966398cc0185790755a2a23f89771de94b28c3269f5f91509923c32413ba64ea5e5575c9c2858798e8d3ad674ee85a0f828d4c0937c09337efa935b2e998236047565486ff5d62fa03d0522c5e077c6bfd1565747281ca1dde296612b9a809d68198c43a803308e35a492c4029bce164983db36078b82d91c5a4409f0738dc75bed349acebd32d368c7e94f6a2276ba190d56e4be03a3ce9e85f1a4b1ec93d62464ac0e7b6045ea3c7cd16a7571df2a3c9722cd9d44291b82d99cb48a70adbf41e5b750f4e3d71f9132c19e2af7bf6f9e0c5e37943a2035a11986f32be30f4e36e400c8ab834ac09a5c81440ce7d8c51c3f2a1d25378142e5a0d82443b082ec7bada5d9422288f0b47dc7c744a13fd2a52e8b2491c4c42ef7566c114b108a78afef0c0c3821a073b5bb4c26103e1c69007ad3f6dbf4884068e81396d43c791c72cdadef143561bbff11180d9ce2fe94be1daff85ec66eb3a2908b89ed3da771ca39f63fdd858703ec4d724bc3699d475a89fe96e42a922245794ac5ed3a176456fb824b46b1615a47b4259151beae8fbf85a5efa272a95b89ff2a0aad49edb55bb68a202b17a3544459a34545a0739a77c86581d8470404e73e8b5f710fe6e36a1525107e4498376fd8cf2385a42184bcda4b9428fdc73cc1cfc1c9f005057aad91e7c2b46ee9023b0965df288c8c97ce8365d42928d7f77f739c1ab817840f6fe1b1e18166fabfc009e18904e2722d5646612d64dd33832c5c66937a1b84d1abd452fb4d0851e03afb2b418d1d9376132591e48c5956d0f6d2dc1f5c04ae847548a7e5f77264d0305febe94b7f79711f436feef614bc9bf9a4e7c63f37d45d93e29729f43e058221a422c6f7dfec0c3347f9e92f754704290a8ee35755cabb38c54bddc5e73cb0f9d7c4b0e45cb41f481fc8d3b25b2238d16641b727b73f9d089a6878716d0219bf75eddfa9aeec411bf1180a2014d5808d36b0436cb24cb04a657392d00325cbfd3b52c999716e3c10673f2f43aa2c1123047f2e0290ec003f9cd7f96d2b0d774f2fc62d730ec15ab996e03d77010baddc90c80b540f7022147c5f86011b8eab6323628992261c50335d0e12859cbb4886db4fa5e0d43cf2430436d5c4cee82000df44893492ad8debe6a6dad27343d815fc72383194c2e24aa18b6316643135313f8e7806137b6266abcfcaf2cb7a467d503d3a0e788b131164086ea8c1194652857900276a851df10faf9d022ad385f51a0686a7e3b2f6c120d8f001265b3efc2e85e622a71769d5de65045585e637dd2db2705ef368ff4cb90dcdc9af45800f024a8d074f39f6cab37e5b9fb913baaa00716d3c8e49574475b66fc5b49d5e0e0aaa5c146b843aa9fff78854e31ed89c10aa375bc19ab1480534e796fcc88465e5b4e65d655afa8c9d2e696cae70b23bad6201ce1fa74998c3912b1a677fad580f7e3431f10a736a266a2451c0f07c54ac28986fc17b30c307b7ce4eb92fbdd403ff34f30ea7e07df39543ba14c0da1beac2cc8d8c89ffeb9fd7c6df5d816979382f9e02c568b77c8e247e6ba97ebd890b476d90aa6e01b2a7a615f06d007f3e8e26616ab2279b5255d4f746c06e8b03f3bc76c6cee3b00709e5a60dd43e71dddc9515ae5107cd19d1f9b3aac6c822f22135cf835e10952cc1041135d32a232ba7a62b57147aa7ea89532e61c96e230de3efaedc3b0f68941cd226f514679cea836a9821b4aa0e1aeda32c451591c5b3edecb71f46a80a6f7d4de5db3a32d63411596a1b4cda2e4c713fa0f71edd67e251fa6de2da2dc4071d2e2b118f2c1a74c4d7a15b96fb85039c28cf4d89e7b1e5b1bd83ade58945e48dfc806abfcefd02de02caba4c8d8d6f910eb3ece8541a015c145f9841a4aaafd08218e193cb65abb140ace8b296a4b94f7d81fd546372b9a2d7c3d669c2ee5d3b92aa734ae9fd437ab87e4fb0aeaa3293534265a4f37530525540e759561ed48ba555cc39976ff3abffdea89043eb535f2a5e47c00a22aaf85f67d7d2079d02ffd80aebb9abe5e50187a1267769c3eb87514b81b434d967acf4c31bb6c3b5985f3166e44a6fafa8c5ecf456f5e6cd6433a4df371677f1b12cb41262dea5cf13940c67d3fec1a975898466330efd1c89b18be51d86aff3da201f2c450cf38e79b26268a3775a20c867daa860097b5003f9019d6289c21bbc8bef5989e6245183cd1e3dd20cfb541bd06b40dd0f2a20da6be9f62ffb544e3d3c5e4fbc57e6fa2057b7170d412a14efce83e0d39e8a54fea661c6951eb4cf29db5d10da13eaa2d464599dc98571625a9d63cd676a0501d9e478ed66cef9f652623ed3d2bc15a97bcf0fa046eb316c4901975e79210ba70a039dbca85caf40c21197397070a704acb42f095803d6aea84c7623be7cdaf6d9ee4fdbce3785b2cdf5cd6c3396add887484d646c5a1daa5aca1080c246362be5fa97bd2777655703167112e99615c6401b7aec8e15e79a3097d5e9e30a8c71e4d97cf7832563835bd12171b4f97fc6a2c7cf2298294dfe208fe9470a144edc580b5f810b434c29434133c5a6077e0481c708dc6ebfb4a760678bfb2a7cda852388918c0041cdc4801b6aa0333135a05c5513de589a841b149d1677380680c803dc58fc2f22935f54d020ef8e05555b27cfac98dcee38521db1805a22d46f9da1495bb892270631ad631cf11b8d52ca13528ab1e50968b7fc573a99959442064870c6b18e8785c712139ecfe511afcd6be2820fc29e893f23681f2c0ebab7680e03623a287dc7724dc5e0cc84b87fcd61510ca891940a9f36b815ff5dcc60ce4009a0e02052ecb0595d6250015cb63b05d5307f9ea6c4a73436287777e7f2ebe39ead8051e2662dd19f60498077cd0a16bc00180b91e90b6ae94f9851b064ffacfe4154139e6c628c5814fc0982a8e209efd712198e39735f22a89e4852349c89377facc5d7cf6736e4a89888624f24a1b963efe81305f4b15320eb2057a234c7acdb589ad96f3faf2d05e3012814f2d77353cace6b667f78f9acdb5c9b3eeb37e33fe844b33b4da7dda4ca730be68760d48cec5238fdf08b73090b49ff469e4603760444353ea9ca0edf6049cac4837c2184817ed798acef27298f7ecc85d39ee2457044c6f220ee188f526c5ee6a60c24e64ff5802ac26e3e17f72e3a35de94c5be8c698d0daa7fce02ecb1545f8415c64412a8188106a364bb0c7599294ebaa6c1b6824ed9873a5add1e6906893f1b45e37f982760ce17d242367747580189dbffd49a4d255cace6a54f64ac90f61d41547a14eb9ab0c893e4112931d86d28ec7d06ec8493fd5d5847fc73d5daf59af23ceb5c4816fa52e031172418294bb2fbbd1380c34e67cbeb4be181cc59714049a3fc0022674381dcffd7fad2a1953a3b2b75418d57e70de0ade7bae4267d90a8c290c717db9cccff7d55feddcee3c76056f8d31ec3585ade848f65a8338ef301676ef091c5c2c9092012245c4657ab87c1a7795785ae2b17716ef43b87234263cfe236c36cc01fc5caca50190a948260c412dd63c9ddc21fae3f24967fea4efcc138d7e3d17da67b51c9a8ca9a1d1ced3777ac9eaa608f79594acb4b9c138d77c06aba8a1f9564c5158d5f5c49dbd56b4d6cbbbc7b4287a4c5af73d0fc9e0a8fc017a0710b7b05148039f24bd5a6f141f94a63a5610137f45d0f4b208097accee0ba13f2d97f6edb01c3a8d5d340a5d994ff89bab7b540518eaf04e0c2a85e0447241e6d32f6a7f32329129b4146af4085b79d5663d678eb7a26453279195b7f32013daf5876fc2b05e865cb0b301b0e173d859089c874b0f4e07790a091534c0f7d2b48ce5d079228682196b21e93e9b35fef731f60238e5d4bdac4b5649c1f7ad44131fb2d9a0b384aec32427cb6779bbba9aeb9e849a2dfe4c96c3e5ec8086e73eaaca472366c6fc674dd3dbda664c7754c3af4c7872152d41e04cd45505d82beaa2aaadc04a23b572a86164dc4ed0e78665154cdf6820d3fa0076b849a2e6ef4dba4ed1c9586c7ebfdf49566b6a3f2a05e2b3dff80247eead45e0ec9fec5a7fb9389d481101cd21d5b44a59232fcc6892a022f287f2573a6ee334912d987fbdf34dee0fd3bf0b0a2f549a70f99f197dbbe992305c6d28b99367816691f3d517062ff673489172f0ccf10aa1a5e99b8d970ce7b40b894293288418948113066eddf3dcc449bf96333c1e8999bfec143a75cc0e53e5c3b4b982f3861cc328ad5643eb862f3092798ab44bba6067e3a1399971a39b2c16c474d95196e26a331c2599d6e2cc4de3cceada6b0d2f4147a5a12037001d74294d19dd77da098a7817458048b6bd52d55280ef0f76d6b06ad43321c03e03233c893c2691644de81887a60cb8c06c7729411296a3bd6f4a7580ea3bf19ccad1f652552102429196a310f7fcea5ba4f2dc2bd130cf0397abfbeff665cc10cc31399ffac1fc219aae6b966fdbabf908fa1da018c2d18143bb7a5daa4077b792e009a671942cd4e046ff904839b5ca8fafe93f6c0e295d8fb22174ba7bc30c0b0eff3afac4c0d9c936e8bd95c69810c4ffd4212a8b82746d19bb1a05a4b5a05ba38274d79bb30ce5ca840bdecac16d747079d64e4490073b6521caaad1aae68936ee646406340ffe75546a3737304de2609375f50fb30a46e739e60a575c05fec6e60bd2a423b1e90807f2778cfbec6c921b5df7413d4f367bea2ad52c6cdf028d50dc0484f94d4bdc1941d0e01f524b32fb2b7442066c2fd40989bc393c21100e5046452c670960803411def0ba5984f52b618d2ee0e1e3fc0347b8157734eaea17c26a9c5a548f009b2bd6912b41e6c2c81fa25d3e57acb91764e5024b894194b4d14a6b5c05f5a708bcab934c511a3b3f85627516e0038fcff9ab6699974d393c35bd4c5a19d80b6ca42f9b81d7cc881581902509c6d492cc932441577e888371ed24f7bde13ce8f148b334052899b356cddacc79aaf558f3919759fcf13e190a5bd9cc1841e46995827b722142d25ec21cdb7a514a89a022b635b5f3d04c175e9d24820207659c8bb888a290e1354e15aca14e3d655b7b2fa4fa093d9a4b1ff1b849151bdd1b5f9a54f1965c7cce10c19eb49646584ad1c98671257557fc059d89d65c894d1c7c66f8da129d1a250e3639d9e71bdc0311cd78e19a32857d608f55713994d0a7b014afdbe2e4687cf45c6ec5c28406a3df876826a936edc69833c1dd546e35985d4daa0661aafd86f17f88b3475e271de705370038d0e5b8e458cb93918aac3da63fa592ec02aa20d34a96f220217bd2c3b1ce604bf110123e3fd8434899cd1a1adee364e221309fb21e267248206ce982d0f0596d9a07b08fcb2a8ab406f6d800a3502544072c1944091ea143c221bcde6d919c25297ea272348151f9058ded6a55d149430051704462e8fc1e92e65b006cee1d71f4e1b5b991cc39377352c20bb181f8b20ebb421915851db980f57594fe1bcbeaddbb9d5ca4f815d8d19b2c84d32cee5e79c4f9e46d98a98892bf4d1607d5f7ad309cf21c8da73344e635e4d1217128efdb0b305be4f4044f1627ee404dec440547dcefda408e1c914ad80960087a82b8160f160b71fc1b4b8b32eaf3bda2740edad0e2157dd5368ea86fa41d48d63ecfbcfdd262da682a6c3ef7614a11dd2bbd830992b0ce5fc1c5a082cbd176bd01cde0ce24e8b3b8f832064aeae111c3fd564941ceb9a9adea56aacc3f65a816e75e0adef21df1aecf0e59d6fa8ef24abb0a8439d8f94c56e4619b7ed068fdc8377bc2b5537c5c8cab68b9e99713ac8da9d0857a320796294d9ae0d3b2818e315d94d0f6638ab56bd79c72bb1a55534e9dad92aaa9a73e5b8db4e94eb5d56958e4ffd50e74cd60941bbb25c131e521825f65ceb5996868608eac1cfddf5cc841ecc9c0c5ec8cb1e53eb4d1bb18f625d3ce97505720aee5566e1076010a0840bcf3d86aaf2a515d683e965a8c520073b549e49641958561c134484a8c1ebf10b0310be5f2158632ddcca0019e17813b82cd3d1c1ab40207377b9b7c7494859517b5cf773d4b3fbb57621dd2e92fed2755a44b956fc8de1870f479bec4ccd3aab7bb5e4db475bf8e8c91faa8666920ec0d1d467bc9645bbbc502b68a7058c81e58c32a47d1861329437363439fcbf5d45b808c89615d57eae894058bbde4ca0cabafe4418aeb994cbbbaa4f6b479fa93b5df6a383ea1b7d61412ef6f8cccc2bc905fffc2d052215f199705a94a0144a49c7152501e4c42190be94f34404c8c109ba37149c7c5478a437f9462c7b712591237d28450beeabdcf076bce6ffa653b5c367e5310a7a537080dea00b4f41ed42698812dc0a1610a7898805c1f60af1b3710ea1edd00fc91bfd147d59edb59aa8545fc91f2240d10596ef4d680742d44740b56942465208ca7d9117302147387ac2ac6750c1b432822005afef50a736f117ebfcff09dfa93263e7b9e955bd780b58613e18d5ea3f547f4332cc7f20634214f137241b02cfa05471f184b267352987103b97e1180eab03a7b008e93043860d21a6caccc52c8fc6ad8ca0bb6656bdc760671873a3bd4445763d20f37c88e6d73649d7cbabfcf8abf2466dfe678d96eeba070f3fb9cd399bd7dd21a9fa6a3f94a75c34b6c92c8dc98eaf5475093f44712af982387d053194c6977506c30aa23715e5da5d0fc3cdda89e9040956e85384f0ecb48e683d17b989971895117f78c7f46fdbba26e15356414237d3c06336e588e8572064eaf197b7f98efd58ee86d024fd0eb31f2603427453cb2a688a2d5f4a4437cb1d3017eb173bcf3b5f6d69fda39251c0e930d891908f83fc9c0d388caecdac6f37a55c1a5d1caf79883d14c0f33abde40c26471ab540a99e5abaa3ab30d9dca91ab1a9c468902edd2ff317b8c2162ea40746ab1cf0ebd9249b829cb026dc261e5f2ed81c694b4181f4202953859edf246dd7393f831f5f4c6b029e4d060fe8a40eee25dbbda9425d1f4ad786a1bca4c66019217a725c2f606c1e11219165de8f242402b2fb684a4e79ab21f699f21e282cf1f2abf3c1f2488286e9e1c23e2599796554b5da38c2040c200709ec2998f271b3fce2e4e68a15903470726c8aef80f39462a2de7528e8a6158430867c685407d1487fd632ee0850d940e3231d493be094f9bc6c2a70d000fdf90e41a9cb4852f1714409f934cfa05529bb952f32614567f1732302e8c2a2e40c8fff010d3c9a72004bbad8eb4b4db2e20d98d77176442b3c6d73bb87fa8cc1a60e6cf050f2b6ab3f0d5988f2c03f8c29aeeac60b8b940ca2b83957f12e4b88bdb96e292e753bb5cf53d6bb38beb77d66fc0d3ad4e2c711941e69d7b5fb0606b6c3c1779b4c86e7319ba059411e52499c893815e088af99fd1a9eea9e7b9ee884129bd6d5375325d39e663da9a28a3cbcc7bcc41a9aa35e7a835d1ed6f5e9eca1e23bbbad4a0b22661e92473bd6161b8ba64f142d5b7ab26083315cd3199da3c2ce1be2ad0a56cac91dc240c16944b28c47217f40e6e1145098807c5cc1616b49b41b6677b4264f47132a3e549ce2491d181aa3fa432f611bbfb99e24ec97ad276e48e84daef2e5fb8925f3d1f6807e31e21aa2c55d9287d066d2b83b6227e807845afa45a09914c498ae3f36444636d3d441cb2327d0d45b98feb4aef92e39629740ed7523e1b94402b5927aacb19f5f9a8f071590c088dd654e3ec5b9740cf6c10c745a4ca807236b2d5c4e34227bcf6afc7a4de70ab98634f7fed59e9ae32cbb692e0f9e0820a2bc52e25de44cf9f8c2217fe94146669325da653ac285194e456c1f0f6f7d1318f3ad9edae14e5f20b9f73bf9f39fd6276641e50af4f758ff962917201a09fdbd43c8f82088bb60f488b885751e54341529194b699a2ad519360373fea4318c615350e182bcdd70b86551fd67d3c487c520a0f83a0d0793150d15bc81f7d81a6c38873f150e4696b171b742f9f2883c2b8ec7aa09d4f38e7786494ce1b000d17e4aa425139395bdccb9a2ab15b534507ba0ada50c1edb878cba9e18ab5c937ae66a8cbf42144509f6c5333aa5afc3b1360dac3d4fb71bde4c50fb3c0539af5ab3a1957b5749c6b611c57b33a8c911718ca95b80f50943cac16e45d516c18e2a31da8e21817f6efc2623c893012659cf59707b0acbb15ab338bb55b28d637b7c27e67d17017e65a6a014d742f630e80d9a346c19b840f7c1691621b50d7325c392999b9daaa8deb7b8f69f581783a4e732729347bbe309a82cfe857229edb7807b7d60bcb902d12b54f6127c328cf824b88bdb7e323b6383e0b91f14a1ebc2c5ae6afe5d818e3ca3cb7b16d141708cbc1436e633d30e787ad0ef3962aaa1f57981fc3555996368c542473d8b3140fe222fdf616f44b0ad47ba08bb438d1033b720a2d70d6cd0a61304fcbc18f740c60ad1e1b14df662df2a4c32a1e3a635b7ebda9de9d9af32393e54d503cfe61dd0c6a793d9ad9b76d3365052a16211af05748feb9a4f047bd00c7e2d1d1050710ea2333eaa2a0628bf4b929c5f706d3ec6fdb17460a1d10729a5792ec8b05e7a64d40be124f5beb6241c85c4ec69b79a82c26c017f5d16122564e71c6439f6c9fac90ed6573eb86b5edb1e0357217ed9e81de3a6081940038c9e55b218802dcc7ebf14d11daab1bdb750b6fa85f213ee3b324c944b48f39cd55388912e62568dfd720212847c3a306bf555d24d63e2ea623829d7892d7a608e6f909218a6e39f933abc48f6b2f6e7ce8228646e0fdd1721796d5619340cbe4a42cc9915e7843d8ba0101b6852e45b9742cff78a03aa656b50e99c74ea969dff54e3b0687cca7051a6a61179f42dadf376054e03c02606738408ed24266003fa8a2a01247762bcc349cca115dcdf9d5542564459f1003e17861f15277f452407fa9fdb4922224696ca995e3d881ad5882941dffd72dbbc360cc0b108ff3710e4a02d6e174519a5ec7e30c39579add9e2742f3d36a16083385a0ea4b8a881f2821a63fce1f2792f20c7ec9c5840dc837a990401517435571dcbfb0a4a531893704c30fb17d77190db8c85f6618ac301471526231e947f14f8187e4204544e80eb5cfffe4099d1a66a2cb6ff8af66a95c71a39857a6b02077aa712170294a63eaaefdd551ab823464569c3d98682062ef24084fc3ccb863821274fcfc69538bc3eea4194289d6afa136f6495dc725c6398256c468d1d4940df98a653f05ecf04b2d91134e04944236f1b377ac7c9a46bae7a4d37a9c5dbef693bffad7730108130208f98f40368c3a3b39a8fa251251aa7a4a8f84a92b137f8706e8913031c3ecc61f69518af458dbf23f3687288750375eb5fcabcccaaea5ac036f0486e7a4efa8217187b42e8a85a8a645b96aa2605f0ef501ea3fb8f73749ce160c359451796292ca3f44bc1e7982d2b0bec8852354ddd2a52e62a1720b95a8406d04cefe660ae0b9d95c24c317ce75aa3c713ada9cd4d632a642a15efa648792e77f642cda0f69ce4c00521a62e9bad8ba17d37f3133f301120bf1f23f908e1aac91cb650048c21ce5b44078177db409847aca95a397ba0ad07d25c342c4fca97c905a53fd1ea000da5f8785a787a9df7421f4982619474896da92ec91550745c79171fc784b980b792ba37d4af2f34dc40704498268cc007f9426c935958c098c64cc7d64ace923c2b358e39b601202ee796252f6a40ba5185bbccc7616535c0def00330da7f9d0a4cd06ee5772c932e5e396e795d21011c63bf6f725249eb2a2590eef45342b71574a8ce2d4c64048daadfbd89c99f51d54fea109d43557d5979a0b92cc886410a5584922bd5be9e81f8a4add671d0fafeea2caae3a28a9813ffe50a01ad3fbbad01ab394149888385f09c3fe903ae6d0399900014bce5d440cb4081783ca2a85bb33d2dd51a5723a369bbc65c37625d1adec453c712a37d8a4e317db4bb99c0fd1fcf3669e614e60551a50836a9f9f0f9eb74597b11449a85b90edaa8a05f40866c43e81d646e67aa3473bd15785d6551a1e49210932eba84337dfec9edbd922ab6457bdb1d4b1cddb58fc94f7e3f076d7434a3cf78b153e7f700f1b6550fd28d7f3fdd735917837dc29ca14af9585a81840ed067a5152eb0f5779ab105faa8d5c8568a402b73dbb5ceb2a16c1bdab330e96eb48e4ea72d6fdb532dab811070fa61a75ece061db6301230f80a138818c3e21adf3e081211d8883f0265ec25cbe93a5c3bd360faa0a02a810c9421e3ccffc137efa16bbd25ac2d17f3d9ac08420f12af34402e389f42d2da44e10c9c546727961623a9a6634fe7faf9b3bf635103943fa4cf33967cb4d2f811875624834c0774f1f1a8455f4f0ec54d872e1aef0475830b87f08c03f78a6239042d3a830ac10918774d094b33cb7233859889b8e033dc614c14c6056b4c351098d25f18d079a53906fe32e787efd1210567f57a3e07e5c8eb80702ccde7de46c311c044ac299b6a1a37a88a1231d42f254e7763a03f50280104549308b42aacfa2517ac4bb985fca4cad07e5bbd529c0607d1f861aea318b1443e160d7860c5535635713fdb07eac5eb7d872eec6d64f0f3e4d79937eea127d41cc1a8d0ba1c51ea4699d25d45b7f3956dabdfb5ec3c3a1554c5015127e4286fd10228ef0b07e1fd3e769c1d50d121b3adaf186721d766e6d2773f37fa6eb6b6092ae302383bc3d86aaca3fceed3776f9ca25709ca1f580ffca3918bc2f6c8118221f3e612dbffc3f5c42d5832c9416904f0c378ed44fba679e4e4b6176482c6a0256a521d1a0bc4c8bd0ea95d204ac06777d5c58aaa6c0748854ff97b0bd333d00145154d3236b40b803a4da28e26e9156b71daa4d3349c9a896e9eccf4b44e4c7388d18381bac664ed9455e9638c362937bf9737a5a04b0131b4938c214a2fe812df38bb0d2f04ed2983e65f08600a2268c36f6ff2d94eaaf8cd00161ba84d41f32d52839ab91da20ca9bae3fcd15784e6bccf40dbd0c8ad653ee91becde9c279b20374614aedb89925fdfb5341d1966c9760fa07c97ccab943c5968d827b4deed96cce4648c14cbb2aaaf950060fb95fa4382c0b0703f505c37d5a8028b73908a67e16e1892829839de1e26a4595728b819e096f5c18df478ca4e531bc4435ab418aef6daa78421a7ac1c12ddc7abc36e61ffd539a158559eca20026a428608cf054a55533eef4d35bf5d8b3bb5426d6e2106f3ccd805c61b2ca04b1621d63aa5719c117ead63792dc125d21a77115ceda41fe0f341310521b6bdfd3682befdb2579f67336b98a9e4aefc64cbe17109a3c1857a06daf12ee42de68532d93e699a8271b458d6351de8bab854ee7f7866b718b44228ab40751aacb2f3216b026171c22d149d7cfa17e0f983ee0df08ace17af15d0fe0f5a05f2f4ba01041bb19773113f0b4e7a16c7a4b56a1fc457217d33f57eb3a121e2dfe9769096b37ee3e784b5b09cb09a862b408f4a0bc901bfc552b29404240f038a1d91ab62fd47e4e5fa5d219d6028e62eacc2d2c0825fecea18efb9c54f69e818dfd1d6177dce0f34c6e1953a829e59634147916d09560e95b2f62b7e6c4045f50aae56029a802d31910ad87d0e070619f2e984118d177860bf9130a00004cd585378288f2b11c8b7f4f20232a892a82ea4819f9685ff8407d8379fe13ffe1fcf548dcbf14e4748df920f64ecddab443abcd1c1fcf61941d2999ec113bb37d3bc1eb13823121aad850b0a22fff104db2abe31d0b4bf690179656f5ba414e79166443dac61f8d48a4d11da7babd40dedd5f35de4166fc6b48fcf4b557c0d6614245f46415afe2c99ad73ac42c581208dcdac03d9f63dafd92069ad61557b13961d8dcdcb6cf5fe6744177ca9c477f60cc11a657101e9fecfcf9ff2c5d08903b5c2ca10c48963fde379bedee178058b6b66604ecc9f93ad803d21b7035640b56485aa642c32be2182ca1289f7f2779446f1fc6bc5a68f63adce9ba689cbc387d77af5c8e01967c2d29d25440f2d29c67ff07e3e99f00e4bd96b8b644012ca504fe9744470f56103868d574123231469478190125fe29e008422f6a32c1da219beb804662e08d8f1a144046aa07ed04b159d42623aa3658929b9df766c1864e9feb67ef62ab3513f4602c5b6d2da092f2bf5d7e2f35217b6f29659232e00eb70f0a0f35cfd69ce1838f21401cac4c09396bf785afd56ab55aed08f06b479864f0d871a40e070000a4ae76c422eb59780c52c762e4f9153eaef0bcc26b2b56ac58b162885f01c5008f7d88d4616badb50e83d459bf91ba15472a80afc24b52a762fcf91f1fadb9c28424b6b409b2e4eac7f9c314e58396a825a878b14375fe28f91ffb3f3f8eb36675e2f1783fce9f9f2f5bfec7a990b78ec4cb9321bcdc199303f06d99b78e6bb2e4a46f75c8e1ed98b75f5878eb1d748ee8ad3ba9b359b268cd50041345609d384885eb851ca4b0ead23a71d46377de63ec38ec46d88ff0cf8b8fc7b0c718fbe83c762152875f90ba1f34ef4355e47ddc05a9f39112e45f7e6bc0224512778e30d1c3f9a27370b8f244931ca428f13b5f49fee53ee4b8d7cb671c5df997d3e8dcec5faef4f2a597d778f90d1caf97eb90c1857ff9fccb4ccf4a8c1058683003e57c0d8009d60b5a73805844ce17927fbda05e4e7e543ffec5f3af12891fae5c513991c2c3f9c2c00f59729c8002c91216ced73df2affe97f59757a0f571bebc62758ee62f2a4f3bf3340f2275b49f0c52defa10cea82661237556ccc3a4fc1ee62d481d6c147d143d8b49bc28c5f7a203913ab1c58f52a07ef41aa91bc72427c651a61e03f1d86b721e63151e3b0b5287c7d073c8c387519a3ef415a42e7415a4ee15ec1922c8f7f80fa9eb0982cbe7cf3e66cfd996f99cb3e8396309f9ecf3d9005a6c787304ce1515d29c394b972642aa6c209355e6cc17ea7376103a873d3b0e9bb3ebe8dcfdec21707df61d9debf9dce5c292363bc8f182829833e796e83549514942077866173e7b75cad9ab54e742cf5e9d74ce7e76bae4430f5d86f5fbd07f3a67f4a1fb90bab016e5cc6fdefa8ffd0951e5ad1141ecf0d66963ae61ef217518c68b412079d133a91379485da6bfe73903c4f3f88cd4f178f9d9cf7c9c799e796de66ecdcac3cddca873a1cf7cc651123f731a9d237fe64a335f9a798d99df00a173d6678e23878edf191c3effcc795893045148cce0a609882f63ce99579e3525f0a3873841986c6981897366e4675e9dea53e7b0cfbc42cdbc4afdeccd8f7e4952378ed8336ee1b112268f5d46ea30d08bbf11bf3d93c21128d46122039a262751171358a82149962776cefbf4f648d45b87913a9b1bfaf06746c98723a99b4d5d29b294356efcde4f9b6c795f5dc61b8574ce6e35ae3aaf7332af3e36754e7613b57a9d8bddc4ac9b9afc538726896bc4353f3f3f3f71dabc5d148902ad2966ed7e82dffec36bffe9b5ff3875ce9ef0ed3f50ed3f52ed3f539db36abefda7aafdc7aafd47cab7ffa0f9f69f2b1f2e5ceea0095a1f1f1fae2e8a448b005a53f4f9607dbbcf944f55bb8f55bb8faf73d6c7b7fbfc3ad7eee303654d116889aab78fd4b7fbf0da7d7aed3e4e9da3d5a149620c620c341a8d46eb6aa701ad294ed168c16fa7f1da69bd769a533b0daa9d26d54e9bea9c2de1db6955ed34ab769aaf9df6eb5c3bedaa73756892588258424f4f4f4f577b8f9a36c526b1a9a707684dd14974ea119d82dfdec3ebe9b5f738b5f740b5f748b5f74c75ce42f9f69eaaf61eabf61e5fe7faccb7f7c8f9f69eabcebd861882ab735ded190d9a9cb3b27256f0db33af3df7dab3537b866acf52ed79aa733dc5b7e7aaf66cd59e7d9db355be3dff3ad79eaf3a275ab172e7db797878bada79d4b41962c1a2f5ed3c3e1f8f2ff8ed3cbc769e5e3b8f533b0f543b8f543bcf54e7ac996fe7a96ae7b16ae7f175aed37c3bcfaf73ed3cb33a34296c216c61369bcd665d142901df3e83829acd82df3ee3b5cf7aed33a7ced91cbe7d06d53e936a9f4db5cfaada6756ed335ffbecd7b9f619598726614c9224d94591687c3ba9a64d8ce3687d3b09b466c80b79e48e0c7e3bc9237beda453e7ec936f27a1da49a97672aa73d6846f27abda49ab76d2d74efe3ad74e5ec9ead0243c054fb9832668cdd8399eedb22d6b521f57e768174512025a1357c9b0be5d266b72d5b9589535b1cf673505654d0c94c964c1a02c668411b1582c16eba2482fbe3d160cc682b1588cca55e76c95352fd7e5b29a82b226eef59c78d6c45018aaf7edb03a34e92ab94a6030180cd6459166df0e93928249057d56ae3a37abb2e6b5b2b2fa76d854e7a0ac797f30a97658af1de6d4feaa4393ec1c3be7f5eaa2485d5daf17d09ab7f7dabd82dffee2b5bf7aed2fa7f61754fb4baafd35d5feaa6a7f59b5bf7cedaf5fe7da5f579d13d7acb9f3eda39ace6569b559cff671eca24866dab459368bd73ef69cda4728a9f671aa738de6dbc7aaf6d1aa7df475ce527dfbf8eb5cfb78d52653bb588726d923f688288a62174512bf5d54d3a68d6a3b65a7443b258ae20fdf2e5e758ef6ed629535adcffa4451846a17a5dac5a9ced9222c30ac43937a4c8f09c390ab2b3463260c83c13018f421f1ede155e778beb99acbeadb43a710aa3d946a0fa73a17f2ac69db711d9ad4513a0ac65d14494d9b4dd554185b59612b5e3beeb563a7760cd58ea5daf1543bae6ac756edd8d7b97ee2dbf1af73edf8aa7370e0dc7bb9ba28d28d53e36801add93cde6ddebd57ceb7dfabce89df50d577d7aafdf69acab75fa8f62bd5f60c0d34dcf976abc66ad9386ddeb3dd765124fbedd6caca5a057dbf3adf6eaf3a97bf2b10e8d439a8762bd56ea73ad759c1deb7771d9a5457a01954af2bdcf9f66eae2e8ad4dfde6adaac4f4d54fd49ebbbee9ad7debdf6766a6fa8f696ea1fdfde5556eded6bef5fe7dafbaa73e323e04e1d9a84009a819aea34b4be726dd52e8ae46baf579d7b7df50ad573e7db49a0493d75cab2f0edb5d75e79ed21581e3d2812357fbabd86edb6377c7baddd63f876a3f6a3a65cfb072ca444d1674d310b036b608ad4f0d83bc0fec189fd060ed86d375651eb4dbe62d616915c5b21efc4a6af5e73ca3bd1e9abafa89277219aafbe824aae35c9bb10cb57afc19077a1efab0b15c9bb10eaabc38022ef709caf0ea389bcc3c06a4d71aa5671aaeaabbff0e59d38556be7b67c40e244f478342bafaac788ec4344661145ded9aeafce028abcbb3d285078ebf3d6da6cdd6886b5c117c0e31c3d23e5edd155ded9a8af5ef321efecd4571f9221efdacc571f92926f58f2aea9befa6d86bc6babafeeb343ded5385fdde74baef570bbcabbfaf4d56f3ee49d8f98ec0344be35e5db8fbcf3af2a783f7650ab1b23b0345c406badad6eae6474f7555bad3857dddd40fbe6b671cab246d65acb26ec05bb3b1866854e594b59190b6874242a214ed560cdb2e312688040343489d60c5e4dc07e580ac684b536a6269caabc9a3592c1805b5963cd8d8ebef18d7462eb871bfbe7339a8d7080d80c9e1ac79c9bc280311e594f5356b1265320b8049f3ae6eadc0e86e6addb1186a6733b181006846175ced6bec70b0b7a8f975cbd07865cfb366dbf8dddb706434c0e7fe7b7a1c6b5633bb19a1437d6c479cb1e37cd14de19835aa6b68609de693de821c28297abff30315a3344c28593d23545ae7a67ac1e61c296ad33d66cc66c599d318b841249b0ced8c5325bd235517061e28c85325bd25f1925603863a2cc9614092946503863e3d8958e30a2297e63ce06d24485dfe9a286274af87e877d4a65d4e8e4ea7672f5b2881e06e0312175f688010543e58c4101d29c636b509d5227b99e79123ccf9ccd644a6d6a912c0ec510637cefbdb5d65ad6ef9eeafd4aa8fb6cf7c0d3f75aeb35a07b2fb66ea9ded6ffd2b85aaa58cb1ad71dc4280739c738c877e8662db696e9e93b2b75b7097d6fd8aff7b08ebbce1627de49420c78b5efafdb7adb763ac5023eacf7e8d5d3de488881f518d4373484b1b79eb2ed25cb97a75e6880faa2a75eb218f9aea248991655afa325da92775d75b1ac89e97049f1a8cf67cd190f64c23859d92a6b329dd5ed943591908499f2f1ceea568a9ef707fc59b39e032823c5115558d664ea72e7ac67f5e6025a2e6b52a7a92a2b6b562ca8275858960775799d15fc7aa5bededed71bbc5962746421ab65d98f288a621b2a5451c6f08e30d1748a2cbce8b51faabc383b450f489941062180577856a7a8e2e90f4d970ba9dceec248bff10971e787560e54503051cd804408931f529ef07550820a28fc9e5892e4a94c932a6874386315440a6775d1850cb99d7af53109def72d7caa4390cebb3821f7ad0727869081092d4d809c144c9c238e00635043e4cc06524ea812278b1821901091028e91254018dad870567f89321729e491c27163c486ae242e9cb0d54110601529394bac71130136584778997aeab284498b1d17a47ea8a1072f4d2fd948ab8fd53335cd266182f810d585093667f51a35291272dc3ce144991f5d3c9cd561a4ae52d8ac3a6e224687622c98c8d69b4644c671adf7bdf7de8b25e4cb7786584f90b651fdc812358e48c6e1cd03fad86df866c34e5f860ddf703fa371f7ca7e827c3c3f59d9e39ed412616b6f8f1f431e6fa1c85ca9ad29bbf559a33c3d647f6a320d29016844072aab2d389ced356a36f00b9797275d7e08e26c776abec0fcb464c912878e95b31d474d127cc060449ca8225cd418b59c18f54a652eac64eabb1b011c82ce75b086356384604d1d25c25e84a541300134cbc56327ade5fdf098740045e2773008cb60b68e93318a2e9655a971d9c192b5d74d0f95a3ae3c96a7860cc28dc6b5bb90ca1f98a1119171e4f01d09f9f24ea8d62a75eb4ac28d53ae7e9ffe9070f2829a20f9978697424e13a4855c9d460686905c5d7cfa4b62ced307c458ac90e9150ebe2b2e5bdf4eaf70b0fa7619ef340175eb2ca2e4ea32af9456167275da42aebe62865cbd062557a7d77798e2dc381a1b6530a478b19893ab6720b9facd865c9d768eeeb0bddfffb3c3aee3e75110c3e5cebedd5d0f43d90d98ab8b367ca3a778eb1db591c55d17cb17edd54ed1633cb2b17cb9588e4f7bf9147d462e407c7a1bcbde788a1eda3b772ebd73e7143bc7c129de84600f1ff7c0206bd2a46709796b8f54de657bbbba52e3681cb555c9ddedf6bb36ae6a42f2ec08c15695e96d6c9e9e263d4d5ab4db7bad07d683ea3f8d1bb5a4d9129d0ec56c6d7f6b5d57fe8e66e5b0e65322eb60b6c6bcb5d677d45749255a647b8da34e54d603011f8ffa76751c736e5b9bf7f8b6d4b8b20336e511b5124d8e5ef62975b0645fa218da2640cf98f7a0bed305307741cc7b7497c7a3a46d74fa362a8f77c26ce3ad46ec46df06f59db08f89a348ebdf76464f5f593116536a6a3914918b98a93d955981858cb5b527798c89afd75ba6940ab5a0424bae097818347c9098b1e092e513c69b15f6f95d6b6f6272f59ec94a2302b9cb907fe13f2fbab0f9171ef4c2eb1552f7c26bb8f3a5df51882f5dd6404e6a65c4971e54da40f565e9381bec7ce932a0ced2671c19f9d26994371cf1a5992f7d49cb952ffd831a297ce936cadf9623be7410ca1f971abef410943f1c887ce93a3a577ee9d50aa92b1d01336879fa22844b0997d3b192f4a085ab08162978a75f1ede6ba8f3eeb58ad479908f58e87c90cb829c41fe43c38f0fb2f341594af8a0203e288b101f34e50c0af2a3a60f721a41ae5443111fe41d30f920af55485d90909010162aa44ec8a7903a5af9494ee57c92572a52973445c98f45649c0031a6f7840d37c45002cd1629805baa9838c71d7e744ff2d1671c4d29f3a3d39841c9102e30f9c107159473f4256b523a70dcace045ce1836379ce3971ffd86c5317a8ecebd8fae2384aa1f7d87141aacf890f204a70cd739024144114b6638f3450af01c75f8d1abd3e8a357275760f8515665e51b5ff84881a3908ff8c719823faef89105597080589828c32b738e3098e18b962486740129728e37871fbd79a377cf9a746bf476ea277ae5ca977e7d67e9b2fcc497fed3390ebe9cc1ca971ed455cef24bc7952ea374a3d267945e652075258d46a3b911cd8f68ae44f30e68be44f31a34bf41bb42e5695ea5903a1a975348c8339017f21fa1aa342f54c40b59e1f2426baa807921af51489d10ee058dc2071c1596f88260e2c9f9a20a09172a282cc962e27ce1e55fb87ff917ffc271d6b440114496a012874a9514e78b31496e800283152996d8395f5cdfbfa882c3bff03a45ea5e10f14e0589f731544c78f70a85d4790ef231c87390d782dcdf7c900f758ec507392ec88d82fc28684a121fe4f509a90bfa2931fc7b8d81d4fd984445e793bc3a217549631352373694101923308cc9f2400fe423906720af01b90339cea873a503f98c31771e08c895807c09c86b0001d11c0828c88180cc7c90dfce0de083bc322175412000d1a104355a3d405539695c4028ae385468c04c39695d9e3666ccd3bc4a913a5a39a6e94baf4b485d39fa387a1e71f81138e747af2f90bad195903aa02d1d9cf878d36b14a9339708f9304482cd0e73c648f143102d11a62069f2c484e7e38533e4f2a1bbc585a1cf58b2e6c3d095966adce81c90878ec3e6e89c9087ae43eaea43a10fe158f9020495171c9e20e20c43b0e6881225a824f901cff06ef9300cf23074274c76f8d05665557fa687210c551fc2f8d06b56dd0a6b90d7d4395a2fe9094ac887de5114c8c1055e13266c4841cd197a4f5973832c4b900926f194a4cb195e2d1f86e1061e864d9cf8d0e7436fac0e86de59a1f756e9a13757f81eba6dea5c132aff7edf6b1252f76559964d9c7c593aae74a3920af16593a82fbd222175e5063094f90dbc1e21751b2431097e925728529744a3d168341a8d46a3797581d4d14ca775def46a84d499a38fa3e7d16ba3bb143ffa106e74a3510829373f7a6d81d48d5def5e9f489d0705050505796581d4052d51f2425e8b903a21201f813c03f5d6032d41f2405e57207540e60b60fe85cb5ebc50e45f787522752f32115217da5e0ca73c7c0caf43485d8c18aabc28fa287a16bd26ba0fe1ace9469d7be1a2cf38dae145a7d139152fba92e84ba2d710fd0608a2e821b8f0a2efe8dced45e7c1eb39d1a0849c3c99e2455a9595affe4a17bd02dd45af68a05cbdd8e245af59a2d7adca258a402e8a315c14a7a65ef48eeadc8b17bda5acc9540213757a5b52d810868553fc801412538a30420727434ef1def0a218e4a2b74f345df4be720a85cd9b7e4daf2a903ab30a2175411c7c0c282a7c0caf2990ba1840404040405e512075406ebe7f79f71a84d47939c68431251011031b1fba44333b1089e20b55191bced2862f9fd8f0a5d71ea92b13f0424e897821af27903aa19146a3d1685e81903a9a8fe3388e5e4d2075e38b1884fc0b97750e861332ffc26b13a97b91c3300c43af3faa0f522736b08c96873d8ce9841a7848e2c85413475438612d8e1c21c48fab129ee070c2ac1ee63e84332ab3c3c37a1ed6030d4f5310e9e10524339c302aa7276780552798a173c26a7898df00018735fb84798e10d03ccc77f0e0f59c4628a932513ccce7615e615e615e61309ac3ea09f38a65cd7bc29c789ad368349ad712481d6df431f7a3d3207ef4ca2375a3288aa2288aa2283a13a9136d19ab0fed87611896a1e1438f01a90b492075b0a0ff5019203fe43d48dd900b172e5cb870e138172ee6bc0b306ff4a2c380d489624826870ffd052e20752e8e6044753d0ce741ea6024d97a9bdfcea9789bcd66731fea9ce8b62d9bf8b6a825de666312e2820c4bc804218312479c365fb2a60abaaca28e0469a1873aa7ed66799bcd41e8dce836c7614d239bcd75d8a2843cecc9097359bef230ffe99cf9306f01a983d5461f47cf63eff06394093f3a0b48ddb8c38748ba7ce8b25cc287fe43e40c3dc893387de8435467e8328c3a477f49b67ce8333a37e3433a1ffa0a485d287a16bd261e91f3a2ef2075a20a489d0d0acdb7f0163e5a73a7a588168630a34395abb305053a21e5e6862e32d0c1e16c41c3b7706fe138a3a329be85d3e8dcf82d5cc99a2b28f2648c9613eca429e26ce14bd65ce2dac282181f6048e2c3d9e262f9162d446fd1a285e8a2288a3e02a9133d0c4311485d1802a96b7183aafa9ba780d4dd82f47ec55b6bada5b90d80d72055de3a0d255faa514bb78ec3e6b02144bdf51d4c2b24e1f29361099130524e4bcb4809011493464a9a1b4e3b43e3dc5a14b4de02bd657af2438c1d28a29e50a2755a313cd0114385852a0e97d35e79ebf557814435980296b75ed5d4acba55b9accdad15805bef27a828de7a47b5544fb5135640be01b8b5426a786b396027481a394df890e285d37a07ad49b6e96187355a4c78c275da6be5adf756e76aae855b6f2e194d3d3a6fdd0ab14e16caba95aabc2a5bb4c567c35bb75feccfba055ab758d66d30c8addb2c02b8751bc772a910e7addbaecbbb3d28176efd4a65e0d62fd5ad1a52e5ad5f2cd7eafaeeef02af99cebd70eb17cbc8ad5f35449ade966ffd6e5dae76a227a473424e05889222428413a6243f24a12a01c8420f414e3b26881784c842a226889ad33ab6ea1cf6e12f9d73b78e7f06c0cae1ad63343888b3f016e6c25d9dbbf17a9d3b8010a7a6b71e3e8550d64329ebe194f5b02ac4d239186e3db40a7d9d9be1d6c32fe1cff7d6c3ab10186285c1306bc8ad875b1ab8f5b04be415897aeb6293d8b326d3d49a21a23411668a22be9cd645276bbec04a30063b729e8e2c396f95b72e4ac570ebe29458d5b99c5b17b18856458278ebe216d1675dfcd92444349d33ddba183c72eba296b8655d8cd339d95b17b9ac8f3c6b9d9e46a851aa730870eba39371eac9f7d647aaced5defa58355a8dbef167cdca035ad347acce21b9f5114de78245deba78eb639635999ccc71e32405304894703aad8f5bd6a450c801530705a72d518c38ad8f5c9dbb54789dab4d9d4bea95e0d4391a4f504abcf55754e75abcf597d46bea5565fd65f5daf2f225c0adbfae8035bcf59799ce05bdf51796f557d0fa2bab73afad579cce6de0d65f5c1c34f586bc759890ce3959735646cc90de9b302b3c392d13931984f08047bca0d03badc3a43a77a7bc75d8148c0a56651d66d53925b70edbe2ebe1adc3bec07ed661c04bf5d66141989acebd5b87659d6e1d1687fea05478ebb0aecec1782b001bb688147993f506c9693dd6b326d3122896b0b2849da918a24eeb31a7ce5d19de7a0caa73519d53805b8f49d9d854e73a70eb31aace551784f80ebc034701a9eb40010a50800214e02720750af0d3052a7fba0e5277feffbf9b80d43d025ec9c89957f21da95382c1603023651e0683c160302f01a9837160a4f71c780e52c7c1063e6ee07903af6dd0429ddfc04940ea3698f10968a1ca27c04740ea12308ea3d77cf4a1ce8d6e34fad138ba0848dd48e309eb697808481d8da4a4a4a4240701a94b4af3484f541ec9659da33d120b578fe41f207548082852e711e01e2075081045712b47bee838a3a3ce25bd283a0e52271e15a9e18fbc03a4eec8dcda81aa87272c4c5280739a4c29383107e8a68d1914929ce695f26611aa379d03a4ceccad30e673be0152978b1123468c180e02a98be12f5e03185e03d700a9d36094fd908f439e87bc36b482911ff20c90baa1194e677e866380d4cd800103060c187e83d4c138009126fe007e01527780dbed76bbb90548dd4d8337009118de005e015267007777771ba4ce0b3024872f805380d4154048484848c82740ea848c860079239700a9337af1e2c58b175e83d4bd90f119a8f0fb0c3c02a42e03172e5cb870e11020752e08a0c28f27803f80d4112028282828c83f20754145427cf8227700a92b1a65dc7919de005227a3458b162d5a3803485d8b01f4f003f0255237002020202020f780d401092005135e00be005227009bcde6359bcd75a4cee6b9274221cb137907a48e4887c70519e271ae0052871bb3d73c88980f7da873b00f1d17ba51e84761101e3ef493d485a58fa5e7d26b659017bef42775a5237d007a407c005c89d40580e623cd338df7b49e97a73907a48ee61b903a1bab020070cb03c01340ea00b00399c77ec5a0402788939b2a3a8439310df325cdcf871bae68419d38ca63771c90639f7104e7b1d350b2260543c41c243d3676e4b070324125716a628e98237aa872e2a9c718b7708cc180793cf4184b0538767098a2240b0f276ea10b141b245064f5b0c289a13c7ea241a9eac487151eab78ecb5caab55f561af3fd1b1db1c07a7789c1f7bcd6a5e53f7829ea0a43cf68e6a29ec3d55d5b94ac42aff806f1e7b9be91c56076f78ecbdd55c96d7b9178edd36f5c63c762ba473b4c7f417c5861592d0f131c51327760b654d134a972e376480a013e7bc4fa66055425b7c4b1ebbfdd239168f9d282205e5c42f8b921d4e9c829e14244ab87c898177de181ebb0daae91ccdb1db2c6bb73ae78eddc6b15c401cf1d86d57e762bc5e852a1dfb95b237aaaa298f7f1edfa8334364092104071b4e1c8223dc901172258a16224eecf7d7b9ebe4b15fe0c5bac1cec170ec574de7b29c78ec57ab73418ffd6e5d2ecceb5c0d3e76dcb366e539593343756ec8b1e3a8ce494d79ecd849e7781e57238ca8a16989252a1439b1e32a6b523b4ac8e1b5b9f2238621e76d52793f0cec5c0cc78ecd74ae0253f8187e3b77fb184e83d4c520c00f89f1f2439e44ea866000b1c4c37024520763c4fd0d882c7f730490ba5b599665e947a4aea4f1fe8312ef6e923a1fedd36834189ee644ccd33c47ea689ec30bfd40e4855c03522704f311e619e635d80f3e1ee633481dcc8ffe45967fe10720752f84dec5550aefc20d40ea5c8c413ed4f0415e005217348e3e8e9e47263ffaf0e447372275a32dcc0f6ffbf236305c6ff30c489d2d8b4055c1a7ae1f9e0899e21469781366ce99e0093ec0708a522f8269e2452700a913ddfad8e6ed103df8c6fc5630f35b43064c0d6fdff250e4ad17913a6b44fbd0c7d073b8e4431e781fba0c52177acfb7087e0b1f00a96b3102ed60c303b900481dd04844ea30c60afa9a8fd65401115951657ef84055c419544c26106963430f55bf1f72386b0654a8a8f040a6ca19a8b3fea4eaccb1d344082721ceca7b12c31257b070d941cd59dd766789d15a952998a82ebc654d5b8d19d3493d53afdd933ace761d477a0faf39d3e9479608f7a1f378f609d0335ba2d0f3ad07cf6d57e3f1ddd19ff4cc4e96b6eb372c5138c204e859a3c712d36983dd6c36603e73d86d0a0ab05f9f393d6d7dabd10473b20679eb51cfd0ebacb4d99839199bcd5ce6b397d7f3e53307b364ea839e8279e1e96b8f22591f2d0a1dcb6c288a6d0a49599ffd72e5d7a6ed0cdd02a93e746b26ce19d22b2c521fba0d5a359da35733447de876abcd3e43176df7e8d50c4f1f7a75c2b3b29e38ab73144c149a0f1d6b754ee843a6f3923a9ecd06e9379b05ea397a3d47276bcc9c2c994ed286bdbe8d01d7b15f5dac525aedacfa1a6015b2c4408c6589426b658942ef2db972f17ad6643a436fa7860abda5acadea595960e8162b741b0c1dfb42c73f6bd233c441ac0f79c83d5b7957ab6eed5529d147d89181d4ead4cc81d44ed2c31e0f3da479e8311914995b99b7cc49d267e44d76cb6189429cd51a843e7332f41e277987b33e74eb388b2c7958a2d067e5d054a6953d65cc61359af2cd7679b8b69ce924cb5919b45de771a633cb766f3609cc9c741b33f2d663cabdd9209de7d6c3022d51e8e4cdfa2c5168b13ef499fd7d68ad64f59669d1f59edb781b2dc631a6ee19556c84e6d1a15d0dcbb24eb6d1a68c26c28e5f8e618ebdf6ac397a9c5a50fe6919466d8e9608fb28cb3fbf93b193f1f8f6622b53d8cd665f379bbdf59862bd87bdd59e339db0f255f2b08595670b6f3609bc1ce6a1c3601ebbf5c871bb61895e375c032642fd116ab4a8bdc7477f39cc6396a8da6cdc5ea5adfa38e64c29350a71373e4274236b8e7d36efc89a4d3fc43b77ee9c53461861477eec3b4658530f77c21c48ed7c39add57035aac76e0965f4b084d21bcfd17109a597cfd15f65af76be1c563601c19daf5baf768e376a8974b406a2e83d4e44bfae4374583934957719779392e9db6a34b557ef81b92575359a5e371bf61ed48a372cd3f92a6dd8634b36ec31673a81367cb34900e62fb701f397637cb3f1f2d8adc7912512fd75c3890ebb79e3c4f3550b93332dc2de438bb05b22a75bb5ef14a29c97939bde0a26b2909123c2f00f304eb4c0107162a9f4009dd07e4b3cd1f93131e417877783a062613e6cd366eaf2f3b2029d1a561013270261b67ebd2b39840182763ba618db9ef2cee88d6658df41440a9a2a325d8878fa80955e135843a05c21715697856ebb1c6f8f8fb9fe5a37b2e6287a858a2225ccef862d4f66985c584287091221a04c6972aa40c18e192f44b24cf14cf0c49333282491648e0c67f5510c9300c2f17df8042d586badb5d64ae138c19efee0cc0087f714ce13385259af012da2ee33689191ec43118b231e455ca2c9d5bb6f8e43ebf85a1ada3ae4a1e3d0b10c97b9b436741b81d004f6be8ac8d6bd64ebd7035a96e2939b9dde160ff4c7290d7a0a268616be7e3b8ca86c6b94134b8c2ab2d6e4dd8c2d34bfbb6ff4742bccefae9abc93f528917732b4c4aaa2727efadb92fadddd82faddbd26e42da7dfdd2f22761dd7b65894511f0f65fec26238c6643eb4198f539761348322c19cba06148916fdfc78557169d1cf8f57bf3078d2ab758afbf9b9d11e7fbbb6246f3bd98eb73d657dd8aec7fbb82d75c89e46eb29eb6399552e478a2365bb1d0fbb97ac4eba257b3cec36d6f1de1cc6d04b0c91221b430c264998af3dfd39c1f5bbdaef646078acd857168ab8bdce79e1db6f4d004f7f5c719c60428ccf68c60b6b4431e9052dfc029cd8f8ab1324f69b23469c3dfd754dd1b5157a89d917395c7bbfbe112375da374ef8e0c40d19bcf5f1eb8f97b49edb8249e109b3f2ac7f50c39a5994fd9c2f194dbeddbe6ce0a048f5ad2f550ba685a6ea356b0ef5eb36baf8c2d5a1afe16d37e2db2edf73a8cd2ca3dfa8f01dc289d918501d8acd06ad268062b3c1c3f4d91289f1eab8ea46d58f78a278755c75a3ea473e272aa798009742d87734aef510b00e1a1d2c7d60e3068e1dd7629c90910bbd778efa30450ebfc1b78cc6e15e38c93611ead37314e16d3b8d0e3eb0719b068df60eda3f68b7c1bb33c4e850aca4459722f18668510cabbcfbf94b020cb003a927f6eb47d6c4375b0decf8d6a39ed899cecab34340341783e2aedb86e4dd8efedbce71d67b8ac83611eabb531307540b463881c3c6cc93f33a8e9a2d6863a408708d0d4e5de775236a5231c02950c8300448181fe7f5236a32517921634314323b609539af537285982d952cbe358bb1c5d7d6fca7d4c499a31fc3a1c777e886e380166159fab3d6d4008823044c7acef610cc7cfb8e3b677b0f35dfdff40aca17275a9738f83ef3ed357c96eb0196038a84bf091cbe615f4b11aa2d6360c94d6d5da224c0407420f514dde2a68c413d984ed14731d97f47b16e509327ce12227c617c5061ea6cc7414d0a2422c70a9c2d20c120cef61cd48401050c6f0930254c29e16c0f819a2ed41821044e92ad275eceae22d4a75e296d22ea6557bc09aaaeb4a26962c84febea819efeb4a2b05a5affd3b8b66a62d44b1664fa7303fc154f7f5a499efedcf87ee74fb59a9efedc54bd9b3a4f7f6ea47e67f4d48d969be0d714c4e890cd02318779ec06cb6aca7a1a5fe358afc46c16e85199a83a61fef21df53360b371ce1e36ce19f397d717d35e6bf7765c3baca49488360efbaf8d93c73dfdb111f2bf36719efeda60f9a2a7bf365fbe87e696d834551c4da2c1ad6fcf1489262db1e9d50ce8ef543840ac6aeebde338ba07f447677a5aeec6a73c9e85fc63d3f4b19689b5a6a9199831b25958c8a0a6c39ab5d68addf4e6ddbb1a54997145163251c65c212309804187068b2964634e61bc3531e2105578d3827dc0dcf1676f64babb9be76642aede94364f7b0c3eb62636da62d022eab7a739d0b695dedd8c6a4baedfd17f878c6811750d9eee30e4d477f1cfc7a80c5fdbdd554669cfebd76cc10980e863f4da1ec74ac5af6d435a447df604d8d9f0131989e26b766911f557f3ab71ab0dc71adeefe897dd1a381465b4b419d5b6325bda64ff7a5be27f7d2cac7d6c94d912f7b1172c26b3e5d1c764a4cc96f76333992dc78ff1c86c29fb18e599bdc65114c530c4f75edb3553a099bd217b19c77c017eeb77eceadb18f0c36413a17ebb4d848ac453259eeef0319e5dfd1b90bc1b79bad23cb3312017e0996c8539c566554ac01043228b779a303227d6412d4316caa819c8c8326aed4a451ea723d21dc3be71e056edecdeeaed6b02235a81764803f5b0a74e6bc8058fedf4978627ab14490c000bb97a4c94558a147e755a31190016726d32002ce4ea6215c9095028ae6035c126052b39a4799112888d3d8ea31dc771c4b486a3c833dbf5f8f628629483fc936d47727dfaebf99e5a3bbcef91927775cd53287957bf4ce51b43ded52719f2ae4a45c9bba39e277947b9948c616e74b20ebf1baf563692a98f4f7f446cc97e487b83c142beb75d03a1bf24b8f4ee5eddec11b132987f8ac8bb198fdd561db5f2e24bf1cb951acaeb1683a1738a6d257e3fc6e374af64d4869e529995aa89ae538a02d99ba016f47393c55a042049ad0e887ddf74c86a394659a926ba6e53c8bb4a45834acd7525dbe5e8b6a46af2789335eeba58a240f6e14d0755f3d8e9d84344b65e24d64e8760de659cd1f3cf8e1aa3fef2188d51a71e2beb508d4ac2c67ae36603b6d4b83a362ec30022ef6cb8a73b1292dc1c709c2c341798a184421ad7bd9201f5a9635bde28196fb9612b175832ad37cc83b266e8ed78ac153f61a82fbf6ba0141635196fc1568d0b4222fbec93985969ae42866c76f2ae465da9a97bf3807eb5b7ba054ae8f4a160cf632d7b2dbc39bed160c5e125e7b8b9b092abcf7289ed08c1d6cb8d79df5dc1dfc1a3ad552288426eef5921576f6f23b11144a877be6b0c2b99d6b8b278c70eeffb060386dc65ffdfb19d524a6f23d4af2495d1a2eae59b2c9379107b8b1b635c317dd1a17a27563d964454d31ccc32a9cf463725756d3b536b297da2ea474430d3a1be1a6cfa9eafbe14a769ae40fc1dad5921e0d3aab769bdb36aeb2d2bef5ccb55f6afce424bae6c2811f537a39ca7d54e5d13f32192777587ff72830d978555566144ded5a7a7def34466d142de1df540a08b55f5da660b374e1461e247d45497b33a8e9ab9c92a0c56cf8a9922ceea46d434c1102092407144179a2e67f5236a82e0849ba936315029a1040f6a897c8ce4fa2557ee5922977232f5328abc6b204fed151995efefb2559e0581c48e2065e0ca2f203239394684b4ca2f24e4902c7621a57868218f6fccc8ba3cf91d0e88d916190d2d4099a900244627c788c874c82f243eb2d825b64416796092693fc8ac641e24646f662bc87ce4fcf477441d2e7954a188ec8a283efd2981c3bdbfa9a320ceb7657b19e8ab5dba957d8c55fd388ed9e8af63ac1fef7bf0479f3afaf1ab8a710d4d12b36806d5a9c8449ba73f3cf51ad6ac804f099633548458028993fa9235773869a105ae271490389d574ffdc89a2cce1c918af30489235638a91b5933064013825c359540c38f933ace6b5d713ad7f3d487a74024e932e6872084a89075160006157e2a30a18399164e8a82a33781cc49a75ed550243431a737cc53af3f2ca820c8940963c249996040d383969d37544aa07052af569dbb609e925a51c05c01e21045f0a45ea7acc9c40215146be6bc00354511d42b14f5ea449b88a75e79d479500f817a0eea38aa968aa77ffdfa78fda766e4af073565bf8e33ea5c8f5f9f7104e6afefe5d797fa7a8dcef9f8751b37de64bf9e2384cea9f0eb3b7834f9eb3d8c9cd76b53e756f8f5da63f10415b5c259f3eb75aa56b5798f686d69b302793c1e0a5f3a877f2a003b070033586ffe7a45d3a695b27ebd66dd9b5faf712a171499bf5ebb5af8f5eeb5d9e7f576823af2e3af77d491f37a3be99ccdaff7140c2c5646fe7a6f49e1bcde5f3ae7c2aff7af819d1bf2eb6da673584ffe7aa36993faaeb79aceda6a33bdbfde5d6dd2208fc76be1bc620f8853e7623c41710939af5b2776ea9a58ac76f8eb760b0ae705faf900766e03335834fc758ba64d0abc6ed5d8ac36e1bc497eddc6b15c2efc75dbd5a6d1f57bfdf6daccd7eff5fb74a1b4fefa8dba4eaf7ce9a51407952cc7279ee6b43940602912850520ca18b18362091ae03cf146cc9993f67b9abb90d38c3a17e4349f7154f5b4a7b912cd9768544fa3b9d38234cfd1b9d269aea373b3a779084f9ee63b785873a88b4f8a1f5d54b801899316a5d5a465a62a882127ad87a7f1a0682f9ce6d5090e37fc0b33e78b171e4a7d00a04351354db971ea0366dcc6f15f1ef8c0c5839af447c549112c3c81640a2ad4548aa2871b9460e2d444083593dea820458a1892b8730335299798aa374c8240b2439ab3af9b06a8e2358579a09f132705e3420def43c118a9faaab084802f8b4b170ebc1cdd8a73644d7ad2c6188721b6e403a89ab7b75188977958f38717d4abcdc5a37f9e62c01ac01a3740c09143c70e1e3da8af87c3e1a66438194e26c3c97032fb3b469f8f59992c14c530268a612856522703d6e81c0c09f672017cbd8950efbc8b1ff2ce2ff0923a09d021687b8d1b2e54c82fdf51e08d5aa272d71ed4b7d6da0bacf19a2158abd19a0fe18c66d050ea60a9464891aa8582fd96507a7e62dc141110cd518a6b19df44e1ad666f25e4dd38d65aab6128c160b0066b56d5aa5b95ab7635f58438414dc9466b474a678ca3356b30181c6990169590451f7de72efceef5bbfaa2453dde1bb332186c32f9bb71027dbe6e35d8c617a466088eb4991ac2071f5c47cef6faa36685222b08540c50d871e26caf406a52323fd0f1c1c8d4094f4ea849bb4ac8e283c106175850e2417f8c86a1c533c61e5a140c5adeeb8c3dc28d268f0929fcb4b049c10925289c344494f07b22c811519ced41d464ba122488105e8ae41007ea6c293758d008e99263850a16c35b695115d94f2d68086734e3884607d6d2d9c7beddbbbbbd96b2d0a7b4f4418d1b208420878e1078507ac3dd30bc3417b2c5d8c7006a863da50e28120d290c5de8e168517bd8b32611256a3f72e10b30ebf19277d8aa474bdee160f08eb98683168ba3188a214e46e37c4aa194585f4e555a3aa816a53a76f0e8d1d4737a828a72426d8c278fb330c498624c31a9c36188b1770e633c929812b5bb689e05ccbede5c94c93baa855b0a1d48b6338e65adb5920ea8a10756ab0ea9494e28a8e2e846fdba250e87310ee330ce622d1d55b2221547c53872e80881478fa69e1027286c31b616e3ae988c22758622db71c94625cb44102301c511821150a47aab8f4e502a0575f1446e0f0145c2de2e028a846ff40b8dc6c91cd7b886614a318cb44eeaac0ffdc86dc9051c354ee6438d6b0d5ee623d4df7948ab9d89a40733cfbdcc03d2030d6891ccc51bb900fbb3db0c5a2473f2e681d541bbfe031b5bb2a68d251b3c69ec937c6f3768b004e1f512c51759bdbe64433f72ff4e66a371ed39b83021bffc564d5a4f17c35a6b5169bf7358f55193ea07aae91ea048a3d75ad02aec773458dd565b6db5d8d2208edc83ada5bdd5da2095c9a19d9077389f287ca2f089c2478e8f1c1afaaa5495aa5395aa5655abbaa57ea9bf7a85457321d7db1116454c29529d512e1e35031b86afd1c3f11586e1acac354933e0a1455d7bbc1eb4a87dac49b5de48b8dda1b99079d4a4b166d08d71f560f6f52693cabb106a477d35946ab3f2a694d024eced211445aa6ab33af58e9a846f24d0f008cdb980e2da77a27bd338df5e7928c9bb2a7547a849d56b50243102352650cd2a25018a14ba15135569ea141152d6a49452aad46ebd7132215ee75093ea1718aac9c312354562429146afdd90af7049f9a6b5bcd50caabf4a9c0ca3193c30aee4cb01f5c53a96a15495fad0d7d3438c523aca722d680827c3e8a8523a52245c61659f659d3c5224fced94e8353610eda614634a87621656d2531c5faf510cfbe95694b5f7da9ed55bcb907daa71f431ee9177db19fd8fc5e188c322d8bf7ebb22d88b453bb679dddddddddd56ee2e7399bb35653297798c5e5b61b4c9e3ef64b2d8ac57f8ee23d485e8dd63b7c935b2adacac9bd7b91e45e2f9f6a6eaaa20d42c29513bd1b7ef7a7ed73cbaf35df3e8ce9934af3abe75cf05932c866e6bf32c517bcf4948f376eedff7face082876634323f4efdcdb4b8a64bddb64d88f703f56d9fc08fdbbe601916b57e56a9c0b27f985f18ba454068c36b94b90c928527bd05f6f4e8bda5fdcc922a96bb22624ef9ad73cdbd8c7d1f26a4fd1a27691878de38c8e60b4c9e48bb0e675f33a46b1b65020fd5139f97eb25f6f5d1b9243dfd55ebded605f1d467a5031b616f6c22f5a54bd921ed81f6951ad96ca306a5ef360ad824dbdf72ed5b0710347087484b083c7c5e170b3ffa145ed3706a34dbe14a9e9c517df7b3f80d126e3dffde0acf9f3d34b50b23fcee8486929048a447f74fab2df528d1b3870325ca0c93bfa8b2ddd522aec8140971e3599a6e298e9ba52c40a144f9ced35a869fb0111040a63baa4b1e164c2614a0a34641551e5cd100c582182830e3ae8b0e607165b70f4b7746fec4cccc8c8c88886d2d207366e80802387a5b5f2ea68cda0a005cc3e8816b5c318228fd0bf63fc172d6adf055d6bedb5e1b5d61a05d55a6fbd35c8a873b06f3fca3eb2486f1423a323a525f10583bdc619a48c161935ae1a19bdbe8ce338e69f9a0fc9309a71a464b3905c6d2575b8eeeeee71cc8a514b79b705f4d318afcd17af27c42906158b8a398951c5ace8b556eca18db3e39873ade66e159bc256e39873ade68ec319ed70cd9ab55b2b2517604d607de6311665cc96338f7101953d4800424b0a2790d3ca5d7d5a1345cadf5e2b6d366a6ef39a339db11bfb49e29628b85cbf8341ef4df072d217f0f21d0c7a4f9200e43d6c365878cd59dc4c603a6d5e739bf7597b08293959783baeac9363bccebd624d6dc2605b421ec6f5f4361b2c3cc8836e3d829c85339d315b09ab2a615696c856da6cb4709bb7b8c1aa6eb6d15bb8cd834a9b0d171ee42e6e30ab9b6d74db0d060b42b18d3709f46973db0df6bbc1803d5e462b5fdef170b56724354985b7e7281e2e8ae4e3ed3c7328d28f77ad96b35435b39425ea154e3bb7e2b6ab4fe94fa9a2bcd50cacd76a11e8f7f15895fd94f5b3140c2655a5aad4f7cfada74bde6158d5b7c3a446a5ec3b6ca5f5bb184ff41e57ba5a2fbae83e37d1e928de762fc7b5929eb49202953b86b021cac9a2a4674fb9bbda5daddf61ab11fa773c5cdf0ef35a494f16a590929392d777e44dc7e5faeb187b0c06117987a36764f82b1b455217bb274e16923a5b2fd7ea35e9f5af05d8dd50ac7c913a5124614e2d2db22fca688cf7edbcec53d12c86c4fac5e3f178259cb51867fb50d7b7e3ec9ced469da35ea8d0f98ef1ed654a9c6f5a4906f457b187f7b59c7d4d85dcb24ae9b523ad49afbe8e4b0a4497a9af657fdf7bc5d0d2a25a87c41e0874f1354ee6658a8faf76dede5a86acd44a4d2446a98fd433f51a75fa6c9af81df59590d71c11a62b2a063987cc0f18e4447db9f3e56c1f8498c1870b5749824574895d3f803af84069898e105fccfc8efe184e32f474b7bb6eb3d57195958f3ac6d831ae4e505275ca12d57a097fa1aa09abac7cbfd0094a6aaa96f1d3f882c5c89099859994ddfb1265e4a5f5e0cc13ce2e0b2c9032b107679e709606d3ae48ca5810693d38f384335276d3dcd0ad883156fad0ad8bb71d8e0fdd529c1862b7187613ddbe44dba3124733280e5a7fbd8531c6b413f20a16e2f8a2c1faab3e2babd42bca7ac6aa6c4579cf9895b1286bf6bc64ce2ccad1129d98a465729591bacbd3417c6d38e2d98a929ed4be689df3f15ee1edd5e72cbc2bd09a2abc9d478fcef578f6b0734266de5e9fa03a47fe787bb05239f929ebab28fba9eca8c60583b583c176f2151a4b56b6990636eef7c5e7f41425e5646a4b0fcbb7cf2c8f2ca4a48ef653d2e7eaa7266a8f45b5d38ab27dca36432b1bd84e511d96eda471536553755563a95cd6ec2d4dd4de57dfb11b4f43b59392972ed7375a6b7dcb32f9f46c88a663d26865262a266da640f123cb992c024841554216146bb44021024f71030ebf8c8867a288e3580bd29efea21812cb121c9283e4a0a573838c0e0f306010d3a0033014c797ac4e75ee87da8b41495993b47457bf3ca5d42b156daf791ec71cd6d62aeff5c205b1703efa0a61c9be6eb50a256a1ff3b5955c407fad428bda4bab5c7d57ab5c4a147aaca434a40cc88fbd8e1e0b4becb0b29e39b2b2b2aa8f18d879ebd503b408a779e1ed92add572b6493c5ef2f7e22e8e7a79a62ee2cd6911be1dc018fbadc0b161516647c8176468376273424c89acab59922c2cb9b3b0b4673b44d6d588c5f3f447a7d7232757a71863eb3802d64d8073d857a9b454e38625a28eefbd76742bba0ddddad758e28c2c11a5ae42cbedfbab69867e7490c886beeb11161d2246d7ca7e82e634c56cd499defe8ede76b6b655eb4c1fb3a5157f877f895a6b6d775b6babb59667468316515bae787abb11ab608288f33bfa97681194eb2abefebd1de16250996c57256254a9349efa985c3da46285b1255717c3d9781b574b30390cc3d0eb520dc31b8da321941ec3711cc7be2959221afaad55bc1d358e8615979567897ad5a986a2288a61e8999a210e5b86c0c312a9d0429dc9c6e0360c4c2c367e253d98fda5d5ce68e36acf54eb026a6ddbd39547a76e34a3733077ac5a539fad41390e6b5abac5358e39e7b0449da3c4e1863579489f79e8ed21a8614d59599f6756ead8d144ed784a0e4b549b42086100451db8dc0e4b1e392c513b4fb9009ecf4125e772891259ac9ffa0e28cebaf8b31a2ded990266fd5f98b6fc5869cf4e5a6475e01256dab3a74539e070fd924ab4c85aaf5d1e7b75bb73eaef3ea5afd96cfdad578a0bf1abfe8861809d640d733307091fb1bb7b8839576273b8f428d5e608b13d41b59a52cdfe12579260c1618b11314c4568880ad244193a516b86f801e00d791b47ae297ab0520d86fc849998c859828526352d541171d3b8e912fc293124c8d9170b083ca78cac61738ebc6abedefaf6219cd151d71c273efdcd596216430dc57b6df8a50e9797383efdd189e2c69941049c335982002385e5cd49771012848a852e6aa488728538f2e282a1e70bd70c2a2c0da3a39ea7bf395841b27e7382f09b6bfe9b63c39c28b78698b517e35b29a594527a8588d51c3a4e408b5e45c0c6fc70a13e1e2af9052e2232bedd9dc836333d3af85ad82245d5e7d07102caa5e67f1a47d57c37efe9aeab9eee68308837844586d40c2b1abe0e3ab7eb2f4fbddd46ae79bbd1919cad6f579282d77ec3e95b0aa910c8cc8a957aa288174f94408495991c21bf93d15f9c3b4f7f5174f13cfdc9093efd45a125e7eae92f0a34544e966ff1f427272a84184dca415fff17c5558de2cb07f50f356b4d44cd7ca93976d01f2511a20b125e0d4778a1be258a3001d3e486186238eba56272000ea1a5c48a0b9b0f0851b2440a3528f922e546ab61cb89314f8610318469c90f45aa942843c5ca85f22768a8fe4ec657f79f206a6a70e7853b31f8088345cd979536568608e98ac37556a34b87c6d3b2526383e50d122dbcaac3a85ba767f5256bdae8cd2681ebd82dd06e6f24dc489862c37adf6cd4e9899d047a13a13ea5274fa428a8e44a562a743d8d31c8d48c400000007315002028181088c4217158388c4459ac0f1400107da84a5844984a056298c320638c31c8280200000000046066061100525a3e10deaf3e6d55ababd444fdeb768a3f30472fc482b63a33e0c09eaadab3ca31e3691d1f6170ac8574b7f8b8ac9be80b0909da29bdc932a5b3c295edafcc311c9d3cd8b2ab4ef38b65b282ed757ed5a90041f4b3f684ead6a8af3799b79e9c4a7efb35d2f2952550125f01ed7be5d2d5eec1a76b0fc0d9c21aa1cfe2a4abc41b6948806803c88403721c146f95d028ca9e42bbc1940d0491a1ee48515cf52742553020bf9f290542da3c470d73b71623563e0b32b046c8cbe09a7c1122f69f69bcb19fca145d320627b3e53dbea7ad696a0ec6535a9c16755a337c3e184dad4e20ee4b25f1b72d2996bc50a9c353f4b1a12d3be3b008b368e98bf2e20c6f142ddc34772e4136091999b9ce74d0cbd8cf612b8c7c9c6cc312ba86e0f79d871b9bc920223f97c7c669adb468143200b6d812d7b7ef730d038bc4efb324b804f0ee84f439a12d507cfe0d7c35b3d6f7c5fd06b3a494b14372bdc6e5fbbd6aa0a39ea19db29330d7c462d534e188e0da4cf445464657af5489c9009acec547b7d0a964a2a8a194ecc9242fc9491b84295de9f5ba28a3e69d5080d5a8ab39363b11f01c05fd5f2408bc6668e3e27a0e5f06747f23c7d88cb66c6e874f1470556713447e63744a863d36720bea2a4616cd4a38ec0eb7662e77c1faf8f7e80e0b21107976efa6284fb17005561b374260ca0f4d0623f383a2c200030172661575e0e1610a05aa2d37cc68a5c0a67d21767bf22f4533c45b0324d3c0a8640d3633b6275f2cf48861d862692cc5259c8a7d78fd5354296e2e4915e4cac3773524419f0da49ad7c19c598a421a7f6d46dc9a93a596bc2900ec4472b6030e9927091dbb7a065983ee22c27e3ef64942a3397cacde559c3aef318942d971b5c1494f3b098912d1fdad4f8ce7596a7df4623f5d809a16149e0695c94eedd26d0e3c625f854cb054472f5771a3c389bc68c60dec57971c2ff5e49c9c58c1cb4e0d5fb7aea3793123e9ba134391c8b275cbcbb887249fb7ca69bab5819a544257a570672d0be968c5a7d4d799d05865da6b981b10745d6d88a86c7a626035923d0b3c8dce80d9207fd60dcff97e43939f18a9b9603c047d132df76a42d0c20df79d7c430990171007745451667a8e1f3de9cf3c1771daad61718e4d35a4ddb34ac8c980b158473f46950f85804c4f6a6160ff5fcdf280624688cd0da28f5870c87e8f4f7200ebb4cac9e6253297d55446446fbd1d41a15776b3460d6953f4109d889d05034aaf1baf3b5ad7db2a511970c7bc60eff406e92e89d8882787401c604af7660f712ad1db12bdbc44c337f464a2574df4b289c216349385cce13d50bf4911c3586bb1c0b460e62b09d2f0370ee435820f08a4e687c101863a48385a38afad4dc8181e864d9231e4b724982becc412861760dc3cb9a89c8fcc5985af71b2a9410570b81969b258aa0e041f1851e3f528193e25f652f87016b6854a06038a46505feb4b4b70b3a9eb302e8f029ad1aa6075c695fdb496e86a0325ff5c34dee65ac2b966aab30d6fa516c7b2432930fb77d8c391c3e0d04b45c3b09aa7ca8bbe43f1b620f540f520007808de0961de8e7aa5fb9f920f38be5de8396d2a0923c67de306b95677f64c55488287c299128f85299e9435c237dc2af9c7338cc1278aef417599a9fe31bb3d064f6b4cab416c08086a50454fff7eb45977cf66b9ae7b636f4ca5cbfa0af4e364fb307997a630992902331c8953f5347015175d17f16d2f10b16ac3a6e1cb4025304f41e626176a5b6eeeafd02cbff859f0e7d1fcbc0aaaaab487738ef223b2c12cb39316001525fb3a40e364d40203acaa04aaf590d4321038cc340f89f220c496826e7e47469b42f52d29c5b3a755bc75469c285fa6f7098dc963eb0fc103be1454d45a4377fe9faa75c3eae9249a8d172e3c4da2277fe1f22a2a510bc33536092b958a89957455be36d54384ba079ccb4e087c23579d3794425226500dbc7c010ab05239fde8f92a28c1d57b6d86364ece542b3725a344a6f1336852bbbf9708846fe4004344ee3a51d6497d9d4db2213990c8a7062e8ce33f0d77fad71db41db1121bb1852afc8e27de2c1158896934013c35cf54637430ea44a9836ccf5637d3b597ad61cc81d825d56aea326dacd7e17f942f9a127912635084afa63ddf0490c198cfe5ea797489e2d34303232c29ac9b3ebb60734260553ea749670481d4259b35439cbeedf66ca350e9839d5257dde7a5f7c6c0629d4bbe892b10411e7bc4412017e4cdb1aaf601ba079c3059db0c44354d651b2933cf9045f9c2276915e00b4c0cb5c21f4a802396892e2d2d99d9615aab4393fa20dad7d0a52f7c71c78e3ee9ad1a46b090ad0932b684a92c18d64a9ca624aac6948bc39093600c665f3b5ae731be391d6d77b5259b4e486aedeb064a76210400615b1767514758d99e006b997102a69f43e0ee4d325d744748511fe6bc7dd126032db945e50453e0f29da4d8e6cd1d5d5e010118b2c94ced87f80ea666b3c67a52b83199e37c8bbca255a870807ac9d582881e5ccec092bd034b2ac8af7e1c6d28978aeee79c276eaa5187d8099041afe498146f2aa9fa43068c9b0c4f2575675aedb7d1ef7f3d8f681978595200d35e94eda3d70d0134bf32f43212155f0cf035fe264d3f1f5065533ad80660fbd7c14bfb366c331120acb12ad249186a5cec6930ff95595e46d09b280028643934dbe3c95f7a51cfb12301e93503d0a4f254fb0656639fab418b6ee16d752a6af13f038ef24cf7449b15268bcc21061a62c0dab0d8e21f900f54f6728a9d881359554d36cc59a23052aa6d530ee552bb63a99dd855cb804fd52e0865aba9da0c9c675e637a2006c6742e39fa5ee9aad4584b8a5ef9bd3edab08574528fa5a77fb52a5053b08903f6fdc36b3a1c8067025dc0dd93b01c553bddb493c7ad62d9e725d159dd54d3e56b01b6cc35de442377f15b4016c90e7569c4db9b9e3fa1c1b0ca2d46e19891b94ca597debbf6be7a732ed4d1ebbc8913f5a25565d1b876c14c74996fa686d0588248c20594277d716ebd352572d9099ad2422df8b0c373779d1458d0d1584755d30d8dca29e810d8a741cdd7169d443e907154800a7003bd18bb25e5156c85a307d3794b4d859e09c04cd58f414490579832d8d77ab9aa68d95f4024a608fcc2967a5c495bf716a537734a214e61721a7f3252ed9299448f9e59542962e67f261077f7e11436ef6555789c5acd824aa24d8f5af4f083903493096ed4d1cedeaf91cff8d566c030a7521c8397a5b5f7848e181cbea6438802ef07fcd71dc2f97b04b07114b093b22b7cb949c168278cf4aa521dba8b613b7a40afd4c2ee1414a55e940cb9541b3a9c9ac224bb54b9449ea0b745a29c58ff1678edc68876dc564bb5a4f69ee3b2f5ab37ceb56548ab3a743b9113fbf4f38deb422363874646e51fd4e4e36f0ed502d2e247161dc695c73a7fa470b528ead295d797cfdae5c06fb25a213a0bc4458c0dc68f174d8896bc2e0b43e8c41b0561a9477a74174752b388e054043478627afc38d1e237db28efc586f83c4e08f7bdae8a631dd4612ce6f3fb73bb8c30154f1f18ba73905b3b7725d9a542e5331655968ad814e7d1965402542d7dba5be9379346f982dd5af0e83d87d1fcf2a40c3f6fc27d754a9fbe02980f0a578c7b3e8a8df6aecbed6c1f1ec6890634a2953d0a9c95a5fe44e61726d28d8a58711e848191ccac9ef3ef95df60bdefe1202f7c44dc5ceb0e0dd974ae6235bf3dd4b9c038be839d282a9b2952f45e8eb9cc20f05395b52bf9ba20c39a81ccd7f74c3eed213dc0bdcca71dea4333cd22f48a0404783b2a4d31b68566a4c74d6cb756869346fa528380daecb08bca4a6a465d55b05f883af2c3715b333ce2f5775fb43af4808bc4ce6d9d9cd4f01d38c05978a8e6160de1b460c16bb55ca8d348b46e126e3b7f113ac7b6e5137ea892e4546f49ca8c92eee3297d745444cdcaf57a305cc562b23adbaa7a9156f1996c66b7d7fde3584f5050dce1fbba146f5bbe1deb51f1123e3045514fcef05e1a0d92f10c4a758b1346234860aab68bc70093c15ae1c570f380edfd895c02e3ff3f7706899b887f9249c1e2036fa76cafa8db72647698552040d08c5ed29ca5a9590c2d70f0e4634ac8403d21589a401c12485b1c424d3c7be0c4af2df3b1abcbedc0c9ceab07551f52f48980872449c5154dc1b480e4260a0d42a67941ee947df66a0fb39b5749154f0b680709770ad1d3e531683e950ae24b8a5a6a4c8ae53f78ce40b4b96cc00ef6975fcca831f1a4c98f0c891ec65d2a8e0f10e9ecb959dd1a818df92343c67d7bb4d6b0692a1930c4332213826e25266a4ac16aa24820dec5271303cf2959442a1f3842ad8eed8e886f8151bef0ac70cb6075975563ac79973bfc51595f7f007e8bf23b46a8014c81970a2ff2a86349007600ba789804029fe008a9dbc021bf0b8a0e7c8840352c52a0261655fad2d576224b6e20d0c5b55ee295d66afdb5a839be3dd6a7291d27b17952a337713b4dfed0b089ca8e67e6cec2441e93ea1c1d3e459295c9527489abc7c108823a67290fa1f9588957af99a05c087ef0c71d82b5dae00ee436729401c47bea1f0e0c5947209ca1e6410e723804092b68168db5e76c12db8f04c26e26936e647b95ecfc6483bc374390c317f8464a07edd553fdca5ee90e5c6fa823b3996ff24eb2122295deeab9944e7e5d57b91530504516470208c75a3dd085bdab1c7fdb5c6e04b7358a69f4cd142e176d5c573354120d6066a75375e8c6149509668e19973de1d551b0c06ed748509dd0547687e54e9f721d0d74654c0e07937bd02730a4c70ba84757370833cb7a2974afb42a876c63c49cec25b77bf74b7252ce25326f9e66fe9916c8e038e93e31373b7e42e58768274aded5b1644a3c31e46186c1faabff59e4fa32179e96a92a46921836df17ce8182c9684280972245346bc147a7b5aeb5498d362dc9d4d89ef3886435c96f828fb566ca7d2b23d8c608230cac51c9296cba8052366695c04a0f2a1d2c3d17507d37ea5a9bbfe8e64c7b89d1cc8691fb57eac71b5b77c92246a14f34de6e11813fc546b93bea5571245f28338a51a9db0ed9f159dd6592c4adbb14f537df83fb995a35c5ca5be38101f4e4a838378e822b20cb3e931edc88f5cf20b453dd04dc7170148187a12942a94851245b33461a5a4c11f0f6b331dbfa39ec59be43633e5f090aefe13500ec0611e59d90bf71400414fb206a582cf7eb8f4cd2ed3d6be9b3be7ed6de625d82d652687d0dad06bea7c514d100abae712304e030c88a48544b5c0be997bfafa6033c7c5f445c3dfe0d27e9c211fc9c11251b1a892e97f1112c9d6d84899a374f4a53528b3c80de6d9df9c84b044f741896b1536e022ec7650b8bf0c38f27ce84a0a8c86472722e36527a35777d9e23932699426aea7de1dd59a4122db426990c0a63163156986b2e350101056e203d41fab978befb302471a1317f128d0f525d1eb92527a9e1ecb3ea6cc5c207bb37c0a37e5a13b73cdd483896fb6d84d6624e326af829252867220101d936db6215e403f899920843e6748371ca4fb0a12908cdb42ab9706eafbcc85ead41fe7e0d56733fbb553bfdc5b80a00989d8859227175e66fa42bb228828c8b909bdd6740743827025fca6f2f1c76d5d0c0e18e299d5e8514f2631be7f6154b21bd4ab3654c80386e0977c1f4372782d392d312902929cdcbb4eb4b1ca6411cc33a9c74b0bd8ed2bca27035136ef18d466a0c8e6a4cc067050417dc1f9ca2a75829c787184ce99572eed81b76aab744660a551ac4223c2436d49bc628411f7f37a624a28e0c5891f1ddcb158b643befaa6798c3f83a4f460203437556761137499cfb47fa2aa391d4b195cdc14241b15211b16e5e082b365c889f6c3f40f45fec5e3dbfffce6974e1a591ad80aa185c06ae7afd2fe995e97929d9263e21a9f1b5427a8e1ed19520bbfb6da7c361cedd00c434040efd04bd5ca87e7e2c624bc1002f81ceb0aa006a7f292dde5e6e0855c8fdb5389af1122ba03637d63d4f1c52e02021e046fa6e5d5478b666d5124641bd3ff6c4a421162d76db1a6d89c67838e2bbb38de3f93568a91b1831fe5182264c64fe904ccfb1e16048d5a0ce2c83de0b518963c721e2ec0d0a001ed0d834aae07e7f09d914fbe2135ca7733ce4830bf0eb692135ab1eea1229b156077e8ccb87fe0abe19e780b0a4134f7896e05594b8a7add2fe3c67587b14a1da1f557645958fd06bc437ac44c0c7d7d1f4b5286871fd583bcc1d282de757e8662911324735440e1353b188992a55f88763b98248071f9d5efba2c7bd390d7f04d8cccadb8368a7421696ae8215d6ab21e4d16ba515afbbc37cb16837cc48a44a02f62a5edc1f374c70aad68f9972a41965f010f9e2feb827ad05599311302ad04aba323feaeb60f991c967a83492b25e080ffd4c7177ae25b324c883b77afaef91a7026ebed7f68405fdc76635d412442bbeabe1bfaa4c052e07d4379b2f60f9cfc0a9b85092366e33080354e4723c000b126dee7b494ab89cfd2e573fa24709c646bd19fce84848caf01c15aa82a274e31c13360e0d1244e9d0f6cc57bc3763612e8aa58b724eed47c36740c53ac6cc1ef80cd38f62c8a7474486e7e20bb989df29de7e4e2eb956f35dedb994045819329f331546aa2155f40d1f4315ccf7b2e816e15f2616ee08817b053380ef848324e0ba3c17bb83224a1e1f1786f0ceccb7b4f827952d5c191f261d009a542baa0d9413faa68ac7c794646ea8b7627a838731f4c0e0f30d47ed50c72463daa44ef89ad2c8b4ecb396abb0f323d4c57ed14ba7c6df619014ad4385b5744dbe98a2272513dbac987642ef6cd6e1e70d29552d2cdbeee6a4ee01248bc9042f7c17fdc6a6e391e78da731d5e83bf34b309ad8b72ebab7754702345123c885c7cd8557d035697dfd8cc5178b9433937829758888c9700b16d0312b28173fffd03783db2d0b64f583721e1c8eb5847dc6999a6985fc42440fbf29f848bcceaaa20a72ce2a29c057da1f2c15c5b5738898dbc7fd6db3570ee5e18496ad24391a6c64acf985933316c8a81590b0dc69a928a7d79f54c2720212d97a8acac62178560d086a3a327508d329388a088be26d16b5b0b297becfbc26b8ee516f8ed80d4916755913b0645ea97e388a24f53517ca61c76457d1638e87a491d830d55adc1886db0652f3bb937a2b45466fb43fbec02f80092f2103c83fc6e3bdcdd22292ff72854a27ed3606b3e6e1a2bf451f94ee7b0e151fd9d10d3759ec99abc9024d33ce32f6105faaeef5fe5738e4f77d005a5f36761f342d4613db49746d41a9354ec8cd2e90d83a53880545bcdf38a7c02bb418c9270b99b3201afb9a394c238c7943b1615fad8323f132c30baab9445a05f4cfc2f2685c23e706876d96352a777046e2378ba46ef51db46c724708bffaa180cd5c8b4fd9981bd30cf3ea3ccd9dbc4f98447084cf9b51ecd657d702392c2a182da5c43fcebb6f2d25a87963bca2227a5232226a73890c4aa1de0f6175d2ab608544dae777d2a75ef565e3e2041cd482d9d404d727e80cd857e18a1a59342c2da1d5e685ce994b890695d038a75c3506afd9af1e93feb1d775eafb56c2e695cb80ea3318252300c345d84098ab686ad3b71f86fc421cd09a8924fdfc12d9a8e080c7c15d63eca5a2db88025a7f1948025d3a580f4a0091b3c5772373f488a575b9f2914b4ce034cc8c623c462ffd16909dfeb5c25c86eac536a9e5c085298d53a4bea39d4db63be011f598904962595898a701343311d6ecee0fb9f517d4bd2255958011759e73aa901346afa881875ba6665f8814e03e6e308767977d76e35533a75743c914853278acd9f7203a71b54721830c0eae9b1464b412b5051e2530912502e4fbf390b2867232f732f7252ec11ac80312da05b527e2f4edb67f467ea0d1c0d39c186b4d28fdecc0c3dc8115bcfaceb99a48338b4479a6bd3e87ebd9d4dcaa73cd48e851f25b2276f8d817635d543286591b2311f7cb7a12970f2878a0ed464bf83679789277c62a0530a1d6557521af5055a6efcc06484e929e2621d0b63aba11b96102531b56a51c092a53ac88446cd9cbcd40d3c078f7f8452440bbbe3b741b1247d003e3b2bc5f49765f97b22e8cc1afe261c23743bfa9c28dd592556f1c0704e60cee365cea82c0df2df12da19718203f838480f8285967a8e7690f1ae18d9c3d54ee944846e6b6aee9d23bc02cef10354a447f78bf9742aa8d1089ac49283492118436dc78c72e9e0bfc63a67b5dc15e4f7ede58d51b83a7f9b800244b16987ba81be44d11d99b745dead28613ac3e197dcf4fff14b32e7caaee20b3ab32dc0ca56f9e04e7484541824fdb993e59097720eadb8fa900247dfea80b598e2db727127288854cf3d1a555f54fb4b6558ab1aa33b700a760ffffc35e2bf0303c5a6dafd4ca5d3297ec0ebf2d6b4649bbbeb7b8360821334accf0693d0b42e053cf6456302ac046ccf4f5c1052c8d06c727e7abeb49e1b1865d933b054f43fc4390d9319c72a949c4a8cd5edf1f2345610cfb6036ae45cc3e1876a681b51dfceec6799ffe1ecf4de31e906efccdef0766aa098b421ec89ca86c0e3c1565f332515492d236aa2b136a2ca3c78c84617a147d447dcbfc62cbe6f62920bc8d1d81f249fd61e6220e0d1deaaeb69b73c7d13a14f739c1d99b94d56585bcea4efd157fbe6790e70528cefed26cdc521203c90a708799e9243a77ce392bb4a69f5ed4c350ba1caad4720ef980f316f92dc87edeb4d832385f33f425424f8acc097f94530de1bfb6a968b87d7d19a95cd853aa600acf8aa95fbd925b447e02f5ea482aad4280f722f801010fe85253ca4592487d335a603e827ec23376646c483a8e1cad391939c6c59ad104bceb3ee42b1a15fa8226d4ed46ff699a20b5ea1dc1dec132491404f1cf242d48bd8fff3338477f302e32576b6eb9a8b8aaae3148c82dc42ee6b89bed51df191fde57938f1fb9702348610304ad84567a00d7d58c27d752afeb8750682220044d5669257a33dcfa027a63b25bcd1cb1845815399ea6a6c6ac5743e2a487585d89a9def73039231e0d67bef6347b0fbbabb64f091e61d49d012bc8afe2b40e0ccd8c74ecd592b20b49609e94e05b36815e0d7d79bf02cabfa3fb7e2d52de21560734805401ea5a5eb2e760873543f96ce9f227afebee719264d63389acd445aa49fb5ff858bdac162f364c20de7a9555e591c3d83c98dcec43c9e854db60af6c7320a6126e7ddb6ac9d7e5ae79d75fa68ea36ba46f0e927eb80f7bc3eb4f485c4fd9fa32dff036cf5c959a48e49ad8083162fb6f3ec1522de8085d26741eb96f34060a0e13c831eedf056c17b8cafd86aced4122ad75da809c0998158ff500f5733c087c522f35e962fa9e9cda8a1cad0644017f7fe60c1b5446962563ecb3d9f4011d9026e7ade82c626d2cf5f8d02307314ab77ac80d64b1fcaa533fcd7336444fb44fc7d76142e619e931042853dac73bb42fc8330c77e8d13b3cf6510eb833030e9bcdbf10acf9aca6e3eca7621d12dc031dfd4045eeb40323debb66f0a043869d129909cc98efbbfef7f6296ea9629f0eeb2b158185f65ff560840d405f5fbdf572b0b6760ee9865b0557c2ca3de0252d07ccac41641f80e04cf24a811c73f8630032ed833b69a29994f47de94e9893339c15093e7cfe10982605e9c5cd292ea3b6344933858c8fc91893e3196cc44a2d104fde30e5cf8829af45bcaeecd80ed2546c82afd27c9c26ba9a3972c4eaee005113ba8e6a00b074a83d13707966a8f76a25c759df3f83083f2bc82b23c16e49203bb43b60e6199285e970dbc2f6f68b9194b8d058f396ca0edff6d8114c3698b45a5dfc9ede7f588c9c477cce2e8bce866779de8ba58305cd22f558fe78498bbf46951a6187bc67a872427746e05d657eafafd17be0a2458ccbf1a1923f95feddab2b5caf8359c5f00aa271caa11741f144db970a7a9a6bc248605461b3296ff46606b0bc43210473325a80e83e8631237b4994b8cd1a5da5daec393b164dfa38c60853419bef7e2d54b69e41a591efc78dc086cc09ca6a27bca7f896089235efc78a45a8b54014ae8cb01c8277ab8601a5a7988a9d446bf6cd7b27f421cf6559b815b12585035ddb319b15441b618bf72e6cf6971dc0f5056117aad1ce99cf6adeb5ef1718a3d8838e98e758f9902fea45688cda620d0506e8103c80c7151a768fd07ac52bf09d58244d8f064dd018f1386092cd61402ae23a9adbb33bd4d1258da641f7c7b56b6bee8ac0e6caf5a441cad9109382eefb9c7519f34d0966ac8bc0e1b8c24537ffb14f8c0ed9f8f49e391497a43161529158b846fe787a381174ac1b2846b18dffa81111a9f4fe544ebc4b3f2862477afafe9dd41df034c4a410ee5f857b3a60072307e2107ef867785eb3ef7f153a21bad34b61e9ca6040bf88dc1c8bf9247f203e028205a294a3fa58893a1cf4015182848e40a6380a354562dfe24f354a900a4ca9044dfcf0f665cfa692093a4c1b6cf48c234effc169470415725bd47e28d3f9c1d7ba8255df29cc397fa46cad2a735a243fbbc84736cf4ac5b76332ab1a85b80c891a5915d7abeb2409e20e8edcc2b26e8cb8c48615376795531d0e5e6af971ae711335d8b24f2de88281be80e63ac075887a4a9e91b40ee53d6c79fea8c4472129eedc625c271d23927a25efa0622bbc22db918135853cdf0d18555037b6d91edbd17f78b8711cda65e8957def41439fd7dae42c7ed193744e4638930d59c4af5105b7be6d84a06e24082264664919bfd19b9ab990f73ecc451e58ac3633545e9c662981b818a25e200932c0e9c9083e010021966624dd692f7e978e638024d85171c7fce1a9321bed6d7d4f1b72721d4721bfc706ac5c988b7ea24794905290a105d89865e54e081f9ee0278a7a6804c2b6018c8217d8e8b9c150455aae51f6ba9ee85670038f5639b424e16475444385f95506d387726ed7508ee2909bcb9857eb4b973120f79434bdee5c27a907bf2b3f349254ef1ed758934a25f4cdeb1668209024cae9b9e3e0a171fe5eee2f694f8ed655e389d58e7ea09233e8f460b888e2c70d0d152fdf161bcc9940dc6a0cc945961539ab2df8df65c135c778e717f588467c2dde8f5b012cda21551a6792560a3d9e337ec02868a5fc8f5b282b9e4b7d4182913301007e79eb2f62884d487b9bb530ea7873ff9cc16352286ff9f17cfb3e8b99b84c1468fd668f4a75f90713bd17a8eaa323e1ed5da55b6bebc4d2ee31c5adc30397865fda8e774bf4790659bf30fc6c8ad4edf75f05c1ecfa02f7f4ef8d1ac1d0a32a439a70a0820b4f6b3f8ec0a014e1ff542e867f250fb2bf8e031f4474927f040f38be0ba4e065884fc390ab8c40ae407f96aea86a47019618e0171b8729b6e2d5050c1ebdcf6bf526a151919b6bfbc693e1a11d6df4fe7903ee4975077214e4ba19557ec9237dccf81c044e44faf420f4832a80b8e8d28bd062d262a1f9cb66d1d11b60dacafa016b735f0013b4cdee2cdd2bb871a0515e613048cccff27ca86ea03d2b0ae1843661e0b6ac4e196f6bfd0eae9328003c19a0112d9aac5c10a8751fbd5384212c8ab39665c23dceffcbf99be3abf9e4a1e626c741552309f7a809168a5f7fd275fd23c4a97f16bd48d0e1bb561a397b966c5c8a906874020129dd58804c30594b41027770995f933c8389668c807a1c2f700752162c273ec905052f1a2c8c4d673121120d06e0b2911673c0a5ade5bb8cd4167d898cd054b25ba9e9d391ce325fca6fbf5d632f695ad0486d71ee425283b846005ea7b63e802c3800503c2b1b59a13ddad8c3102d39d7d8c3eba9f96aa4dfb40832daae9f9b3cfe81c682f25ca686133fd4cf0c125a44236a951e725a47f52e867b6bcc6dec279b40f38e7b5b062efb7c0ee376ac24b84499f975527bce2b9dc15e6cc06b702704041b59cbeeb013d7d0c10722e51f9edca36ffb6b02b9ff7bef47ff8625f6e769d76e6b872126f7df499c417c40623fc2c1de472c536e750342d9082c6fdcef6421b7b85623bacb42ed1301b9f8d3dfd6d7a60918f28019406508c1805f8db239b0e936fa9f26e06a294029c2767a9447ef9de05b423e466aed2a8c27969a1f2a34cfb4947841eed59be6db2f4675088193021ab75826e02902f8fdfb6879d10dc896bf4d5af3d8e45bb1f95148ec613c2d485d81b1a3a386b51af088274bd57a283e094689ee5498ef07434f3c4abe0cc2650f96ee3c12a11a91d4435ecc6dbcbd2928f20487e886a8d0026dae8091413426a7233e8b1f0eb1f383f62137b9ccb385ade6ab7cee98053fd5293cd1a9214a0c11c8a0003274e38c1a4219a95e1491fb759ce6ed699eb09b0c1876fa4a7707d86fe9c12353ce7062e46e03547909a52793c3cacc4879aa1866bb2895931bdfdca4c007addae9b0fbe245ebba7506a3dba96297f7111a90a0c24737983f691b827ae1f279d656fb1d52aafe8977fa8a77000dfd4628a96ec63946cc289fc18ec93dc5d29d1608fd2a52d9c33935b2f0660ca12d58a9011614528460af7675ddd13e9a7edce168ca8b950ad0da81c828bc052fd8796f54e10c053f4b5013fda586690608d2ce3b862e6016c6062286ea707e6f314446093633c4c9f65f92a3b7827cfeba72463b3537dac48d46b298c503e8df7187bb0bac7d2b7982c2cd37f741b8f4b8b15ac54f37010c63a12159ba5940f04e8384f2f6e00289893b3600becb9ac7c67bfec7761d41be8075dac1df66a007e7eab753c676e15bc5c45e25f33e29d89f6ec927a6e6042843073b6c587aef54bc6f248add2edf359b1c44ff91cddc3df3983a1e5ecba51bbb7ad98f488d5cde529ab919b7a8a369cddbd9c8865189174fc0abd2b2a84445991153c4a6a3446d5405233cf4421893af6be86b516dcaeeb1661a222bdfd5be98ae2d5d93f5e272c19322b76fe3ab6f9cd93ca90d72b9d7dea09b8921dc7ab77bc91dccf7b40dec1afc7984c6c51423a47ab7a96a81e1195cc64341fc3fffae436eca8dbde9e284cbf86c38049ea7eb768132b4e697387eaf71479e598757c2261ca9dbd2a101f5137d8dde0352233b760747755dbf9c6fc54ddd9669a9ee5fa3229d3519d88a200516217a31c089cbba6842de84ef120d7534b85b092b9122902a4f4ec21a1b6b824ff719b8435e2afbd7035fabec62ac1569bbc70133fdfdd9ac406da838dfd7c081f2d7c1c6dd881897e9c129e38b8138393fb046b724d7a6d4a1ee3e863052878141ca7e920cfa4e0521313632016027891d745fcd2267728d7b62c7ad8f12ab0f4be561996e78e6f1791633f7c72e4b533888a8ca3527c4be09f8bdc425348c873ac45f1ae1a8ea8c52cd7b843835f15f2fc5bf72b59259cc8a5f896d3dc9513520582e28489ac35f9af3236ff14864fca45c0716c43b615e117d8f8a421e5eb929ef7b6511a863c302ac02670bd4d8463e11695f5abca09ac46d87ffeb3f4b90f37dbd3bf9121d33d550ca150785d55b76fe5ac2d8234763823e865c4b9985865d9b27c9a7481ccfd9ff6b7aa84d56a5c69e71d391431b6b360478e31bd6cb9a8e366e55ee0064df2d4de6ea91c0e0946fff6909991993ec333d69b8b677bc504c4d96881c09400870db91557b03c004d5074a62722d29a60a7733f3625aa64d62c94fd226c528101aa928681e96a9f7768b275487446ac54ebbbfa6ac54fece048bcde8d3653dac1a2f09ba2bdb3f57fc9f87515fcb5e8f322b4806ee84209b05eb0c823bf63f41e4e8b97ab74d170b0a626a6fbd6ecb4cf9078d82d0b269195fbed5ed2dbb15cee8e0db2937dbd883faa7c55cfbfec6c836e024589bc943c3cd5578aa347876a82f7ff2a2f46ae6954a265bfec1f2d73a8211218c9fe272ac3e031c73a49322302c0dade34767257e09edd8c86fcae5c4d79d9b683646b58af3f2ef3e084d40771837bd00ddb43abb5ade1ed5aa622378598381c30bd46f196620773b57f0e9ff4bd1dd364a06834351cf4338ec3c9956d92d79607621358c6b8db5c8fea690524758c68fa715d0be904c2bc59e568ff603dca8782a9aa0540cfe073375ee1830958af5ad05b9c91c947aedee79c75b6721dec072fbd23c3e94f114358ddc7e4d3599883cc494ffd78ad668506eb50faf8b7fa00341ed83ec115360d5b96d7e8c9203f6995da1244b0012d09891009a9777c4fc6647849364416c8c9570a2e7de25966a9630cf0c8dc0a7f560d63f45a11840197d6749d3a34e7eaa6a9cd6c3ae43a3b5159bd91036214d92c694fe6936d8862d10729c8bf14f9c1e61f577d6e3afdbade289b21c907720b6dd95f7ae15e412b209483543619df238b067a64af5ef200bb4295fb417a0640b2eab3f61befddc5f262363b6381a83c43d40638178c05c91afb338683a7dfe00844ac053d868c4b7b0b8d074d3a14217c7072222cb2f0ba8147e0aab22e593edf0c8237942dcf7424cb6d7fc462b4b97b6a8aead02ff063f527d67fa6f619c0e72dbd80c4fd369d71b44b490a627cd9f1e3bb90928a429ece845e1c924331a2efc339c496135994d42d1eb0ff10370882925e768c78ab4fa7486ed215e5123f8e3e5541d547050c2eb2f664aecc37a3b1a2b50129c82a957f8217a98fcad915d5280d43566bce995035bc567458ad4dbcb2bfdf49802e5d60b24451a4f15803d0001cd90006efa07b6abec8eb7d62dca840b54a03ed815a143f759b35027ca724ee8f918ca190a1def1f15c499515810abd56eddbd739009a5841746b132501db12b4baeedb709c4a7cf97acf5c99d6576b38e424336207df5ca13ec706898e462de43ce5bb510f793b06b197b5480bd2380bc8fc09dfeb1e7b9667a82db5e67a60594cc03cb67f3ad691bef71600dfcbf31b946973bb3df951ba71d2dbf2fcd920e7d7d56539c1edcc0644911ce68536c580cbfa628a4da6f0c8e6be9ca3b0cf608cdce659450d7ed72214a2f2c5aee532c9345f09ed127caae47e55b6c3ef77184e8dbeb4b9420d9dbe08b7aa82bd6145f7e2415ca20c480f2200078597ba6cc6eebc3d6288d5b2cf2b82d3c00e1a38f2d0ada7740259c221044e0734af4d108278c286b0e0761cf36e4d1a8926de385125bcbd7fe4fb0447861fd8ddbb4cb06ed0d8f10378e1ca07dc1654005e6317c5b6bb7049e86b207ec7341658a5de756dd5627db662911e3f437451e3a9b54c0a7d62880e896f9697c64be25786ade6a8d14f46eb9dbeb91c21ada3bf006ee95b9adc484216dfec28469ab343329d827a6a07d8a369c8edc84ad277273b3b7a6f2bb98915b3e5e9ea345809dae7d8f8fd876ea5b26b9ffb5233637a4ccb04d043ff983f3f9092704ccb6a23f2a6b1107f409034a983879281abcd11447466c796250e8e40514535a7566b1080dfd5eadbb3f1fda831cba16c0cb1eedc73dec82d9179adfe2aabec1b04095778d2946d29a7d8ee77d9e0c88dce8212be0ca2dd479d05f2a2c4aff305c7716a37d32444fbc6879be2c3a41ff354753fe762c007778df94538b704d694c50304961038a984facf8faadb73da2293c25b41c56f6809d09b7afa1c7220713dff8aea1333961096c517a97d395c84a440a7c9f98b8a91e69a402477875d87e9157a3f07a503b37f90c28f2dd7912e57998e687d0e8426b66881a3101bd8ff1c84477fd259d8d49ae6bc924cf89b7cfd88775897b30b6d3780e21669cb411d902546e0c6e4a5a4faad7708e9e19b8be3730c5edd34af57dfc7dc04470abd2a1d137a455b44fa79d33c23870a5b3f23be7302df4da9ceacd6ef23c7d85d27f8675e210a9fbaaf28e1af74a548b4026db5e924f56cab5159bdce9825425e30f4e4cbdec59faf59f608fabae8dee9123b0a5d16f6cc54a904fa8d2701ce211f573ef41d41c50a8504ef36c958e64da857210d14f2fcb90ab847e77cab03a5400a3e2fec2dae2c3100d69520cc07777a84b4382ba05eb5dd5b3f2168a42bfd5ee7e9fe30b6b385bdb5f34f68b05ad38c8fd21527e7e5f7e986ba0df0d9f7143af9970277272c0a639b9e737ba6d99b51b40e080fdb59b23165cbf9906e65d805cdf84b4dae8f86d69bbc656e27f8d5c9271330229baae7913ceeea862eea99494f8a12a921e68af54b3b654b41ba652864b64abdc03d68185bc609eea8ce84f093edf4f630e8d85fc87bccea2b0733575a50aa2bb89e8e2b8e06d35d1c8a6be7d287d1417b4aaa2962bf56fa8d4ed30229429a33ce763fef91fd5754796a43350ad69bea1921a78629a3bc5dab6f99d6aabfa51cd567c90b8503fb4d4fad7b803d16c6f9a5ecc0b5ca627d886b1aecbdc4cbb16b696623b3b849e298005c5570dc208fcdf16e2f8538575f763bd04b1403913fffeeb0482768e59c0b0f1582fbf601e8fab3cf3e05f01ec0653d9313f83a6e33e035002d47f3cb6b1fb14ecc93127ec81cb18407e2ccb73167ff6aca7b1a2274be6519f0254ce7c4657b078d235b6b96f5b0deab869273999a07b7f79144af26956bf8b24d750d41960bd4542d81cc99e8bb24d14fe18a0f609e5e092a209c6ffa348d482dec0f8982d77176e5150b3e627dbb5725e897b390d43796526467e36123527c0705c2578683ff82d4ae723a77dc25ca40545b03eaa3402a3705af6d1e613db5bfedf57e0389fae3c13da73c7312de484531267734b182cbeefa8803a10acfa5e14e99d070fd47135f5c2caa4d941bd6887e951b899a246f8aecc7dbe5a7ee025b5e2467bab6c198104070f7782d4a2c8af924c19ef6f81cdbd24063b3e67d1066a1e1e8c9f4b3803891ade4468035e48f18b9f08e4e4bb66c97e1940da55791bc7475fd606dd1d8e0f7cf1a00b32173e3c02fa85889c2977735ad2df950f1f53dfb257f2d3e96b4d6e4ddd562353a79deb50dcdb9d11ce478e5e5d441edc48d2c2e04d99a8470e7f61469ebbbdc2d567d6dd819d229eb86c88bebdb4efe0bebef24550eec122e00df2a23e6ae12507d0f1defbe578af7384e9a8da795c63538c9d8139bc1f97fbd1291928befe0406fd5d856a0f0cf227e2874719f153e148856e662d6dbb43ad2a4076ea53376eaa1acdca3829a49484102fe4edad4187cecc5540a2300676b9a61b067a3b9d449d4deaefc8a412fdab470867e2126c782b32cfb8370e8baa99408dd4c73ca6e8d7aeac795708814562b92a1a9aee6b11b5b3999ed1cb4694533152e39905d68d5e02fce9c9602ef66536987638c6a75ade0c4c3aec22ac4f69f0b3d7024655a7367bb9d4cba012cae162700f9a69a56d930167ec990bffbfe54966a4374bdb00077c75ec74884b8e06c8b571990b6e9338fe00903275461b0915eb82e134258581a06c73280036b86f3b141fea0db6c64ba1f74738be136c72aabcb623ae754f3126e6e0b78046fd07ac02e6807a337209a3c26f4da36ad3f990059c6e3e05abe354834ceccee69bfe11a415225f13bfda5b531ca3782e5b1bc35c2fa77602465698b42e02d07ed918058a9d6df4305e876ba9404272574cc9eef3d1de1eacd4b282dbc7b323b0791603364c3e39c1d9b8573a66771ead22deb46dae2785321bd8795caf3010b108910b68aed646f1148082bfe9004e9c417f54201dc6471332ca7eeee5b74e7b03186e3c28551256b7a8ee6cbeb06cfae5760268ffc34af51054b5ab00cbcda0ae1e7d7137bde096249ea7aa26b8484704fc9ee17e2d997a9b1167678e36d3a3790923c5f193068aec191c555dc19fff22e76e5504b354f3b00ad33cc9cbd03c70c0da01b0a4fbe1dea275d4019e5d940efd5ee60633639ba165ce6f84eda00140a6d946609905a15972c109ac42f05adf4c46fa2de2d14e308dc32c6f1c1bbaa5b7a18c66a315dcdafd14aa484e9560d1ebd0f037cc4065f910f8c57e53fdcfd34156c4ce916801e9143a2d5750cd187ac26d29b182a8d7e7f0abe60e1b6dcbd03b4edc8cf07a5126d62c904e63100aab808b8648ca14c0f1e3e0b11bed0cf3cea5401bf3eaa2d6b5f4d4d7af99052879f810a0c4f937703da56e7be8f343a3fda0a3828c6d541aabf54139af78e6134ff69200665cecb02edea68b394d198f377d288df5039ecbdb57d48d77180aa37943915fbbb57c9528a766270191aef78baacf2f964466b9105dc3a02d5cb4667b220828eb29088010626f692bd1111a7962dedc5d5f0d0923a7d64469ce92abb16fcc155f88218aeb7d637fd83c2a5564c8be9361dca635a1a9405fc7cb25866c15bee6c0ba33615bb029130328c0c9fc9d275ccc929fd42746700197c7d33ec5c9ea257cf9d2224df27e19cea8929af2b781a03c58fa33e6e634ca066f709f4660e9c9ad9b47fc434122e471e28327e949ce5799ad3cfa1923e41d3a063b43273616335eabe62e3a0a8a53150b104363921ee6fb4c3ab63c5ba7380ec32b41ad2e417bf616833c4fe5913877a59f85c6106a8eac5da8c8c4973fef4e5810c77dfeeff1f804911a8c497952d7c9971ef536d8845ccdbb2b7d11e004ee6e1d54bed5060733134bfa35cf3885d020b868a6235f08539841da347854f4b62ee16c1fd1ac8eb43b7707a0cdec865821174f9c6a10601262a1194e1300b083aeb039ff609b515215382adbeb2277729a64ffb1bf9df13480bf92a2b2e8a9a34cd7ff8f8d365fa96b27b5ad3d0d5e55513a6ecd238d4aa200b4a7ff1a37ca846ecd0177f47300cef6a049ffdf3ba48bf7b3eb9e0552129ccf81cfd24c8e995e41ef1bb90c3b1a19a9b1bcae4539dff36a627201e18c7070252dc51d94223b5ba99b683a5af24c328e4e2d1baff8e71c08e36bca1218306bf8cc938a4b0807495f673b2198e60bfdb297be70eb1e5edd979794c5f726fe1819a1255ec373147284b7a36fab0bf760908f730088cb37cd096501b510036a716c974cedaf2ce1b1e2d077ec71dbd816c4c215102d416b6de2dea7a9b7f586746603d8bcd38b01ae363a155701278cc77bd6f2b3dc58bb88b851bb51d35f0fa4ee3ba52bac37fd6d102cdd17d18bdf671a6d5d0bb839d42ed08badd781f00bdcccb51f72820191f108096e34e42f2ee8a0212b3928c207c4842fbcd1a649c041ae7d68aac325e9b72221e96bcac1011189334c267e6b933dabfac91f136ebef97367e75a80e4847a275c0ab29dd8d368b672c5b81b152d65c7d91d85994f930ca131d008d5df24e88c531f27ddd243d26b579f29f7e805e603718e49fe0ea8297a7b7869ccc1ef3f31b5513324536aa6ee2f0bb4c77ddc7deb51e5eee9a39dfd43c15edb58af2168422f0251c57dcf26eef844f38ee9fe00e3f295f0925cbb77f59d0a882801ca2ea79f9f62d0c9de23cadd854eaf55a30061bc0533c8d43c7eadad921eadecc0375ff26fb1ddee2a9fa5b986cf44cdda87d17ddc9338226445c8d44f0e9694d86bd4a9b6be23ef83092831bb4664198d475395de0fc5f4d7b3accea3007a26810359cabfe11ca09995294dca0718bf464d5360d3d62322ad33abb2b52a792805e806e3db8e40a568be7de589b31ef9b79a9833311d9532462645eb1989a01372e9e2acb926a6a6b8fa24c9de9bb0adefaaafb2065fba129f4f97008b5595c075d6c9f0f7a9e22dd19b13a54f4df35ae18e3b0e97021ac227170c50bd21955497dc0c0d2b0fa3049f5ff94d43c449ff7e54bab541857608301017c68e8af58b65a186e2f2f0811d8656429bc863c8637bbc7ce0cf887248cae717458f2990ca7a19a85a32f70b3f264a9b4a9b40d7582902b55a9a9f0fea2fa3c9f8a3604d16d3286143e4a4594b8836c5bacba33b3032dfdf3148a2dcbb4e80b1b56f58baacfe943b2b71bf648ed24daa0fc1dd83773ece382b0e0c28ff96c89ae472dae9bf7cadf446b48f72380b1fe0c0a7bcf3d2e00302549a98bced3d2550a91a940f0f219b2e24cb8df9c10b72c615457b8518f2b47669f2edc738a162ab60bbf7601872d7f8fa6bc46c18680c7e990fd6d774bca306da7a21fd96a5ecb4826c00b0ba7f3975d401393b69c8b54be2f5ab4b3258ce91dc4ed8e65ac2efa7ba2b1c10e3b750352cffd601a2b5acfad09a139b6b4527e0b2ced7039b0b742b08c3487b66a3de0c88f2204344b01a5ece4adc815de000f800cee2e02f2d3f9bae79c380ef344e4cb2994204cc7da1dc779672a28b1e9395631f30282b76b36fdfcba1d46f769e36f04c913d4722022a71287b16648089dd3d0ffad215d3e214bed86e2350fbbacae43f94005bfcb276157305fafa43c1e31900bc66135a0c82ff4460a259b711f57ce444d4737a71c99d7dac3c4f3bb04ce3397886f69a6c26eec0b01a5133d68d061693e75375aae32e7db2caad3e4f620582ebcf75f9d3855387b4f17b3b4d23a9210de0606f1959810618bd492a641792acd22e009d8d731d60c8a56d36ce80471c07830da6986a6dc3bbc7503a2952eb42c930809dd16a8a2de75937a2537250c035df54a36bdbb9a8baceb1c6ce7038d337f76d33119bd4db50d2f5535fe6ef51ceb98569690c0ac78c93e4b11281059a08e44411f809744c3fe55cd51f27fe3182edb0f0d4f9ea5a0f1c584d4983d019e83201da2cdd65644b698067a6cb1257e03e68fffeef0ca32a976aa205d1bcc0828e00a0aeff0b34b4d90e802d2cf85e78000578e0d279afb219e8a5d589d5eb2ce2a30c7deaa6a85655079d2fda3ce70e4d26ffcd96908ea614a61151ce738c96b6f31f56a0f472f4d1e4698757e7770f2cd2ce062ebeba41cd2202c2f82e498380df8aa83f5775b61636cb9793e21762adeba7508b0f82a042d1f846cbca96caac968588d1e97a3a3cafda8c5c587f968b6c5928e8c8df516bfbd5632b521835d7d88ca21e4831776651b036eb17762ff4f6575379132e0b29adca869a17df0d735b62d409cb1d41e78c93c01f413306fcc1ab08ee5d939ff1136c0d35cfcff8d720fbac40b8c4afcc7e91eb54c1e1748171e9fab614006de532ce5d45e46f5067f55ca0feb1570bc57abef736a51dea6cf52101e063538d0ca85b4880d8fed3691ff6183be314fcc746301f6e55b07c7910027025858ad9b380c7996367f8baad609892ab809e1fa38b9fb2532413b3111b95f9331795d3c05d52d024c06d923756828eb6be256d709f36f542b64e004ec0a2f36d360de844ddfd9cd12a6baca46b99268a461cbba79fb466ea5a707f28ff27526e84a8c594abc46732bf0c2e294c13b4fc6836011b2b879868d0c6a47bf412cc75e584b632e0a81e5212b84fd458ea0ded091e63a5fa3461c339bfadde85bcec86f126c1dd72dd658bcab59f9b85a7808fd7d0dda4566f9bccba552974952f4005e65b6c749eee2435727af523030426f311770b9e5304232ea838c9c8c69c2a0d97e32c35f0da7f386b8ce6af256e105a7be61cc7eef0422ade8d2f4502c2c67276a138cc54d6b34de785d2dfdb961ff44b4eae8405b8f61dd0f05e7fdeccd765a8b29da20f41c78dcaf20dca000de48ed51c7fcb87b1009b9349dcf9babb9228c057594d28b5344e4fbd93151adcf54b6c741a76bf1c2272978f63d8b910c81db371addced9a09aaf2125e91dd293ec80d1c85627181ac03b7c7ac37892b4878150a4ee43f97bb1522b79cf5f4b3c3ca3fb9e4ea1b7f4249b513d705e7fc7e4174bdb1cce853a28b3de0e90f27e3cf6927a5f809f6b44cd6499ca107abbb2bfb7aace1de00b7692793cf376ac123278ca3b669ace2b3e9051cafb6601546c69064159ebe15742a84ff0a9e3b3f00d8cdc8c86348f5a894dca353a4130d901311cc8e1da69d8cda9d4b8202ec19cf96484e054b10f5eace0ec68c968dfbaef50e010d8da3f94d069d5f9bd6a8bdda668869b58c9963c04c3e66b3f8b3f74e17aea2a958c424ffe2d2007319e19be8747b3d45ef0342713031838b3a73141ef86595daa3b8a166284e53ff287b7e5ddbf09ccf4165944f77a1b39555f02ed8dc92e55cffb74cd4e9b61eef09d11ac544a651a5a85cdc0e19cbca50b9e38f45e146256674d756f763984e36d4eac902a7d5578a790e96d78e02978036681c160928678dcfe1342c9c221b9056ba1ec61fed9cfac165e7bbe739082e395f80ce39e722408a7e77b0157abf7089a1ba40a518b3164a9e820d9a3eeae2c051009ebbedc79665d204a4bbf826cc2fbe4c9837279dd047e5b99a5ff39c8fe1136c0727b771d8821b7d6bd2026d9ee7f2d5c873e7bb3bb5a53119842f2bfec5c190e260890df0d5b96ae878e99c5209e8a3c6cee116063213e05cff546c99a54dcf710e3eb69b531b9d01e2085349682eb0bcc92cf28c2ff65a2ac19f0c6b92a34aa268c0d48bc4caa068aae273352a731fcf0c8d9c46e242b9fae1aa476be4c55ec7b2fdd100906f0894455859df3d40013ea42646ba44bf7212d9017ded4984943d5ec532a9e64c6754e15a186d45ce2349e48850858a4725e0bf0b31f29e8fd3e25ed23c709734cb8513b14270921b1e3d5294eebd58d5f91ff7f37814a82fc1240899693c80e3dbb72d13a78b778ea4796984c382994aa052d3f3260047cf9b134ee081d508f0f163ad62b0538a1c192e564ab456020ac3f8c9958707c11fcbab95b38f85cfd183b1e0ef2926a1d30b290c6d53b0c4c9e1af6f1d6d2f24f95351eba5183d1f81c78523f0e07797cfc7ef6663076cff07990b56efd7f42ae0c5f8e133476efbcce41a8cf50645c79a6e1eb040bfd6286acbd8b06d38bdf91163e2bed556d6ee8cd718171397f8d060a16b28e65430e9796c505bb220ba02b431e301be53c2da8a9e9c08e433fe86c163f4a818000fe6fa724e3ad35bfb99118fb108414afd52d8d374228129acac9ea620992dbd3dce53da3866246ce440f2e976cfa56cefc9f4f0e47a08b7c7f05217df406600dd8d264e4b00e4f8ffca1690a9f6c14bb2d74a4a0d33cf973895d44262f84bf0aad369d10aa153ed8397848f5bcd37921b042951b3664dc2c89a15483d898a64c48f0933af61e8d2ea4a682ed94f25d0c5092d6151b6bc10d69ca4152dd0b7ec707f5f379ddb0c9c384bec0f949e88c25785b739591f12cf0a4438fc79353fb99893919f2d459663527e5d3c11ad5418a7678715df4cc3da2738a62531a4b6e852f1988e8783b76138c81c43c281309803337460cf567cc54473168fcfc048fd70db16793d361ed8b213de777693fe2072d4503c0c78da1eef774fcdfcd23ab715d34c81f052f4de82d40e73c448f192e58db080eecb8769fd3fe415e0c8f4f0ef38aac12d1aa354ce58407895761019ee7824a7b0b3f84751c9898531d07bb226cbd9a5599f176ecbc18b35bf8a071d8294bb6fcdcd04d8e05dec9b758317ad1227924f86526b357af869b27796241b228eaa014d30990342c72f5b1a493522a28b0a0af92f4934fe4ba60b059622bb696ed5c9534c310eb289f2bd01f0fc9e0e6dd6febc83b836721087921ccaa861ed8d66103b74df16c5be02e462e7a78e6ea8a887a6bb27d29dc9a44fc71aa2c19d1f4d6d5a5c222e88314fef49c66fe37ea5a82b5bd17b1adb249d4532b65ed01a14c9d8f5fc7971539b8f5a0015b128d8db29560e72c86cd523659b7879aafa5744751e6ae6eb75345cfc179aedf22d63cd4a3429f593ae175bbdb9c7a78fd3cbfddb9fab414f1e466dc2602df528dc3c8a36792badfa70f97cf68d4c5d3133bce84b0eddc8cb1c69a9097e6e53988a87ca0aadbc17c52a59144ab71d8bf2e9ec5bb2aff387b48660ec2b85b5fd262587b81ef75b658588237169940a5a41ad9ac51ec1ca74c25e16483539451c3b380816c26095968e28bc0336e5e66fec09d437b42cd02adcf8ac800407ae7b3f8e422b0ff21cc27c02693bd63b8aceead493fc5ad51bf73b0c034014f8f2355068d384fcb89502a5ed4bef816cc67a365e905b0f767aeec1ffc837f874e1b0f16385ad6568b5e464daee4fc1fa913a7567b6b090a3c71297e5a3393c61fdf1cfc48328766db6d13c8a4d82acb34b346405fd6ffbbc1cb25c6e8726abc80533511ed5f874aa3fc5ce799bac3c0551b31774f854f2a2b27fa350c1e96f72f61f53a150c7d6fdbeb774cf78ff0f4413a3e1641682231654d825c68b31154d33ea45bf7121eb0e278da6439b0c37ce51d92920a690eaed6630441b51f031de32485d147195d56fb754702d587d5d03e0f18e422065f67fbdad2ab1225302704f840df04d88e6cb36b31aa4f42647946fe89c751b5abc3ab189a1aee8e1e949fed34d50e408ae25423b0e68ddcbbdcbcc179df03215bc45222915147793d6560710f3556ac5628b6935654f9b634300b7672b36edb69642e8acd55656b7acacbab0996f571efc367b8d2bb12ecd16886825e2a941b959b49d517e3bde346bbe1b4c8cfeb0110506733edd26e64ba10068a99c38771f5045867653b91c8ae8d2ac9bb85e48692dbc69a0927cd42c9ce85f275c137fc6cc5dc97efd834ef0d3a7d2058cb5b9fe11e557d9a35220d82b940bb4154ebeb23d11cbe7d17f859a6a280461f419f280c36cc8b3d4dff64e0b5bab11632486eeecaab2df4ea0d43f53d1cab5e7322395adf4cb1a4258ddbf1b5c5eb90879b13d4b61dbc84ac01347e21aa5227fbcdf3e68630e61be77136a5294f7463888df87e53c62e173fed0e6021532627cefdb53e0e10a54f8688ebed99b7f0b55f2a195dfa8d5a70c38f0016bacc13157a3407cf15b3f60a8314b1cbf4c8b7feae7f4acaa3c0948fb3272225005d80a700a6725a27d2007a16f45fa4e0839d4a71e1d5ea168a9811955519723af8bf5f4fa574994d8129989ff9285e9a987aea0349da236f188f9d53b94b271c22bd510aeac82bdfccda0dddfd851a0b9c4eeecb900210bcaf90fd5d0afab02a18babb0c2d8bd30a6055f6b50204a7ba013b0122531572cb19e162a16a30ef7be47b8b14406ac99d866d9685f938445f6219f3ee0386f0c3bb485e93f3c0b79815615b2b1925a41d063335e0ef6e3037010bba3f95785b01601af184ce6484443f30e6f29ea0e1982baa3baa9d02fd097737ef4e8a15de713905d32f4c7aecac50a60baed7ebc06eee50cfd897c4ba009a1e0d628f9237690f27096f1530c9a76e4b2571f7a26d23ccf7484de7525b73ca6ab7a14edd0f069420e25b929c6c0114df921b00268d7c4fa0764684f571b820461b9b39d3804ebe037521444d09ac682919ed85e91f6cb2b929f41555016d73005abd15e9c02a6718713f97f04903df30f259385388b4d57768b80b238e33067521a7ee8b70e4a6b7783498e1251b1180e5198c021a283fc2a397feaa612192f4fcb5a94335a86ffeff73fd320a1d78436ee05c4e1f811fe5228ed3bcb1801266fd4881678d3e6a0acc4162558490c829507ff5dc5245c3ac5ca7b4eb16021fa1eb7edb5253e3193c5be1cfaee0702f950b94e5c55f05fd896adbcb0134049d65cab166a9a1dee345fd9513b50910e4659224926964885c0eb37ec400723d2f788047d193a10753228b47cc3ab4937330d4dd69282c21a03ce6e63214e874a2f94c8a9523bea75db426739c3080cf1dd566ceeeb88825b090f6bb2c1ed87b6581b5a28bd47ecc00c2016436ce1ad2aa09fb69831b8459690f1f4d06dd8c38b7fd324a200fb2972ba70ac16e50016d986d3e566585ea4a5ae0c8b708cc5430a863743a2129a219d6fd09ae5a705e84d55d44f3ee7e0ce6184f1bef65ec6480e1080c5627bbede989e90f7859590adad12e283b2cd25732199abc8237305c0b25e912436af0ed99a5752815bfe88776c0355c22084c7dcbb28d93c6bb2d34a79c4598e7ff6913283237aad91fe3f9a1571a3f1dbab711b0d995ad43c300d8ae0c03ccdda745fa830346885a2fe897878f3f762df908cc69dcae3e15b9544eded6d26025c6066f5cedf84d49c0a159ae8c69c2c3749bd8c341e734da3b12794da2aa69e2c3b83e778f36e946ffefb4cd6a8e09d6bba55152718c72cfa8d131819ad7f113973e3430e3c44b1060856af0239be1d39303eff1fb31828f406199ab7ae5a53fcdad8e59690280dac54c1ffaa952676c011dea95ad816ae42d15c60c0dc76d62e56f98686aadc905095be4c016312ffdfc5caf55d2cc8cb0c22a94185209eff949a8d01f76970715b6e8d81a2a90c2ff062683995742c2751562b2147bedcdb81cb23f8c2b5c045d46ebb17a1f958ba65a953702ce1a50be9e4d7fe1f47a2fd43f4a66dafa99d1bbe6cc2de4498afec6d98ef92be884cd667627efbf348bcd5f4f99878056a999f17f98ab9ff888fb830dd3d12de91dab4332924628616f0f0f74a553dda3e903f0847007d11aee5413e965c301d11a00168b599b828477eb27770f7028d0e6d0997f88d68a8f112512a59227a068ad24ef209da158be966ecf0b1c9411e3235b6e38d1a9bb4f08f1fdaed1dc670992c38e5aaba28d0f4089493cefc99dd7e2ea066fb099b8f2be859a7cbc9b830b76f618515542fb8bce9314cc2448bb73cfa0d2cbca1b247d882e8d1f9cfad0be16ad72fa157625df07db4d3a4f74824ea9eabc9088df3a5a9c3e531d9a8eab162285a461ae0b850b079e91034dbfa11beffabceb54132b9d00d24f221d23a2ad4a2af5210a4eecb7e3eb2429b4f691b5163ab7653524ed954e934c321478cbaf07450478ab7b554fb9bc9f7bfd86c3d3dff582e937547054d4058c56832b58c01330cdab3a5e50ec38d79190e343ac2499cfed68622ba136eea829ebdb88255001c34ac8c52f24b24a5c58fa324b7cac261d551f0361e56d42a98c18c4f3f8e9e03b1b63594ae3ccd61045a119db276fbdc5c28aa8628557404dc4bd17006c08c9f1d0c9f2c10af33ffa559fcaff4db34b4f49206712420fe701985381da24637d013b0acf4ce1a9239d1797dd6b660c4bf2710c9846f157f161d86afef82cf08a7e264a5c18b8913bb9833b2ce5ce0f9c4b5147495713568b3b1e713f1113e8b0268d73985c8857e25690152099c801e1338571afefd86f09c274a37a978665312f9aab9d725b179577f7e05383687adfeea331c1d21ea2a985265dad23e1f4b4d0afdb375aaf6086f21cbc4703d9e744d08f242878a9120cfe7f7146bf32e2f7377f1a30738f2a3ba90f8f90a75ab5482b694ff7e53fed1098d4cf20831d9bb5d8879b14203d1051b9d9ca688cc1cf9acf4fcf08295f91b64f3ebed69d308675774524bcba542987abd0dbbb5af6e5f85b3e25645d0c0b876e0583e65c0d406ab324b8f2f327f16ecfb18f5c4673cb3d589abe4d8d49add2737e1d29d2ae1f81fe84a41f9f8f78a14c627d7fa5a7372e70c488117ccd70d8e186502c98aadc24b86b8a0730fbb2d2e7e38a6ad2ef7671a6df3e8359673ddc936b2ebf611f4d501c668ae1b147dd3387588e1550612e8682faefbf15a3837e3c85280801e277737c66a149408222192c7918899e2abdfc272dd97b1dbb06f6e456b122ca194eecf01900bdf1fb21550bdfbb3d650e4f83b922dfe710fdd288a352e2958f5a2d0ad9e3e00bd3bb19839e2fa0b5b188ac9be403fcd9d658dd09f0e94b88f71361e34482fed0a49cd391b830413e5a477b0a7a4a1b64fe3227ddbe19d0d1a87342fb5165387ceabc95515b6d9e0544719d1ad96f3b7364c4f3d0455155ce1a10046814f7293c9c450877bb0b4cd611e91313f19145984965d77df8bd08546d8f3c346cdd0bba8f773d82e4d567f9053756a50a24fe10cf025b16906d6d2e668d8c7b9bec31e3f9cebf2c216150aa2c76f602a84d9a06517c8b2df767b6f16f1e2f1ae84160c520be2e0b90074ffcfc04ef466791292d09e62e3de95038bd51146e3eb363b915458c9fcf6ecd54fa8c927dd4d35495590c0675d54844f96a66362d6e7c6478f61cba077c3ba9a6385367c62dcb17434a8ccc116801038f2409927868896ddb836fe5438216b8d43e569bdba1325bf72442ce5f3884fd37bb72d1f0c1c97af90192f56d7317423f6949a0fc27361c4cde3c714685a2592e7f7067461f2ed83c716b2c294737faca70bf00979de9a9b424d6c74790636beed3bf79d1abafe3cadca11950fca0888a4b6534110170d289f4e20176236fed4bd3d4d172a0582cf3ed7ce910fb31e96a03fe9e27885d7613a2ed72550e53612d9eba478353e653132b7df785759b324986102f752a1ab8fa482ebc0977cfcb721dcadd9d67c2e551f891f27fdae0b7bf25f32e28a3f2a1323fe4717493604226dbca03e0e508375530386ab3ebe09e50a9954e4be2ea945304589aa0ac325ac92944deb38079774ec54dc94af9084aee8125d7283e96be08e799f25f5772df0f68d126696906373fa89736778d23659069307c33febb2077fbef61d4d3c814430121e6be104ae02e48dea2c40566f962436006ca7407db0fbc5fc04269399d61cd02c2f480a9c0a82ddd80c3f42aeec8dc2ada0a675fb0cf85cde23bda50475fc2bb209dc34f5a3a43d47721259e046fb3a2788f185109bc8f8a158a512e78f8fb6bb308d778adeb4f69f174631c5c8cdfa0d3b71138d7359ea1cb210599d1d99f8ba9b558f5e269da6e735d7cbe648ef98cba9e76f1b340ee85fb1bea6dccd79a2181a078a278b1c6e869534b0488ab96f95489d5073c6c54d0aebe4b05441a14ee279c221b4640afc90ad4dfca9580a590e9b74097d87897323c28f08ba67dd9487c1264bf9998d147cce555a7487f6c3536ecef55c2b2d00b2405c25cdc51b42979c16eb69b9b33b4c10259f8bd148de1749b57f96e5f91042b500e8a94640f6b274e1a125232cebaab605da5c8c02ad1e23e405cf7622a020b64d096b28fa23c22dc28cd01235bd8a2cfbf6e8e6ca0b185d400c2c38f3dbb91bfe1adfe7263847dffdc1c0e04eaca609ab22cf24f3f225ff9a123ce65e59bc785b47ba5217e5f6ad0f6192d1197969941fd46967f45af2840391789e5be9e4049e5c587c65d2c238e11ff465cf48cef6dd9d27679407d3735a225e314931a971befb80ea7673c8713f1e8a46e06b9dbb61b5499b9f21a61d584a04187c357aff7ffadeb32a1ccd68988e2ceec720dbcff9b6818ec7e9f4b0f56cc2a2ed5df514eedf22fe3e6258d0b8d80a61d61bf01b35d7c72767e0e481aa33e513b69ba95967e651dfa71e59f6b1762d578e8394278cb4f4b6647020ba908375685090a0a3774cca25d37f79389d3ac94b3130aa407aaa6724a4878e50220e4a9112152173001030aef18484e4b572429e4037c6a272a0341eb49b14d2f913435e8579d61893cc993002590c5d6bf9a1af9156c4b025565e5315763b1576324f3b5849c7557d6efbd77c03718eeb3c13f71bd75d673130a5a39a79f969a8173c81ab207ad1029c0ea0435334f6cc78fa3e177127b9775f63bdb932d191ec4b381a35d2f46a4b71de10a6e2da614b27df1d6f0641bfc62e05c4b78ac14b18191f5cfa0ea8878bdec15d1a614ebcf5bdbb5d7c1716f31de0030ec4886a91c55a30d5bdcebfd35183e5e256a9351a61309eb8ae2eb4a7dc175d295f6d40b369d49a44565dc27d8781c632dcd50ec3289db2ec9dc51cad37e2e470ec87540f6cfb99ea041bf71a04151b53f17d0c1356a13b95b81e0f56369b37b12913c137d8998155c4f24ca122511ce1e01e21fada802387da5448c08a60ff1ce21ebe5eaf3950f994aa3d9c7ae7d0c28ced34e988e3a1fedac9746623affe0ad4805ba28d9c15f0bb0b686c969bd16948ff77ac1db11bb0a8a38c1b6ab9cdff1cacb5199df8c8eba3f7fbbee7adbf038059789021b08ad55f4c6f02ac0428f5ee5f1c6d31e002f73b14b0c00a5c420849bc41a0fc9f518df9808966255a7b5a8f3efa84bb50d44a85f25e67b2c6a940bc5526f6d1da3968d56addd4070bf819391a131587be09248dee595fbd8baabf82d6c82f146228a317863eaff001478bd8209ff8f59b69aa44923179b7ddd626633992b311079448db1dec68f7c29f3708f47a3bcb988d32f35581b84b81f6657a86561fa019e402ed7c66575fb071b4cea4fa81a83e565168f826a551a9b0b50f6e62ba1d9b8888463b11c4e24bf1f11809d4d72876cd1fd95d237319ff2ca0969d846814101fdefbb24b77259614db8b7a11c211102f0939ffdf5d9c48ae1f9ffd5422dce15a40126e4caf828ceb34da2edba3ec20557d2a2765fc0201cf3a5648d7efba3ed4fbc4e414dc946e45784a13004b7ed6f9f7e8681ee1481630d4d3ab5e2507fa25ff4aedabfa9cc2eaf38a950e6617cf5a5ae8d3fab2be9b3f2f5af2d3eef62b45922b5677a7931deabcfdaed8b3305dad35aeb949fcb2f06058a29acad5245279419e74120ad46e1833677bdd5e04f1da45d9c7ae5cde9284ce0c8978b3ab7b60b7a4052dfdeadd01e4ddec328397ab36d8ca19cb17b6f4a16a81ee5c297bd8d9bcef6324353cdc91b2187b9e789775f861729158c2cf7434036bab0807faf9241462d15bd5e81f7cb10d83f65b3cc52856b9451dd713be03faf141576d2f698004391bb73096935a5bdde9ac9e6a8a89be70d2a858403623e8ecf646456080ce8369a00fb5b008a9c202839e8b64157d86673e527894907ab63fdcd7839f3f9aef4b4ff1848e29d156e9d922e5d5dfa327451810b7de0256424e073227c44d7900e8a90af5600b196aff4f3196cd47a049b7e18ffb67b34efc9fd54ff4ed6f82de9f63f5fe725c67f967779b9771f444f813896e2ccaa673e8f80c6feaf970f343cec52e3edaf312de4c16c86ce4df1c1100e9271b031ac3c2c01b57c1c9bfa13e6f3545bd4147800567f7927f2a961e3ab084376f25a9d19bba38e8a8be0582fc0a6a36055935cc4ce9cc73dbcad37e34ef8a5ef2e1f7b97aefb369e6e0d702f57c10610b2975afe6c4279dd3509ea50380f27035c60b421d91a1ffdc013ce7c33f555c71e3d1c5a22a7a6ea8af348f6dcd11b7bad08ec16d28c9f1c7e37a8180a4044dbf0f3b75e21908a5d0a90664b096395e4e63ee130505d8e6bf4e8a8932ea6c087816d94b3e3da8cef03bccfa3f1906c505882eaa7c59038095b1722cd36b2e61a247f0b3b5ff7c5fde85ccb54370029b0b50b26829b64fe47159033c809ea30916f57d3040e90be809e4b9364fd5718c43e2ce86066a5cf2494fd211f147e5a3793a1c85c1aa9402f1a45f7fbc3b48ed89c8b4794356a3a7843dfc680d1076f58b2bf3a198e14e3d92d5ba60d9ad0da63cdd1c1f26151e3f1fbb2c586bfd1c0db7b0b18cda1e8f0e21fc37af01827fcf880eccc0949ea9e33613537a865ee17c1c83a9b530ab305f1b7cfaeed197717dea5ab08ae4d8051cd6ed7278b07237b221f58644179d4ef2786ff59fe7ed5f36cab1651968d3d7a0213f174cc8d084fcf9c1212366f0e30787ccdec14f1f10ea6154d5838604c405d79a30937dc090a999496185511934d63e07c65067204e62cf7370f865ac82022c7f03da814a835820161aa90365e3ea07c62fe250f7f3144c15fde4e414a475c7184fb8b5a85e46dd03b67a931e8e22ab89b8e65ea5c137a0198f80fb9135e9c18d5997c68c2013fdb1c5dc8efddf4520be963b622584ecdd64cbbdb79429a5300821081608a3775045299d3a48b0e00d5f7c1bc2b701f47a84082d2f2582a220710493d5049228b1e58b28349122062b7f507cfe1e7c1b462f8e3b843b3ce1097ff43b80ff3dafc00ec1d34b87a7970e9fe7fbf09f74f8a30702ff63ee653eafc839ead0f74b4eac8fff8fbf10ff223ae175d1c70e129e322dc3755ead9e377d3c0f59cc3c799a4c206c869327cf394d26d38ecbf8cc675cc7cdf93c6f9c741b7a87a7793892db5c936ec9b3664283b19384e5469d1c8eebb87ef61e3b3d3c4efe90a353dc36cdc384c3d4a6d11de235f34d3b1030cd4c3313b923135fdcedd661ddac1678b09de775e20f26581936b04e524b7f749d715bbc21045bfa57bdda95490cb9834685d323478787bbb9cea57bf43df2a77137b93809635f96f477ad37a3d1a462cfee87f18ff1dfe14f533f300c411c269e096f4659be499b34afe1140c33cbd44291d020da6ae6c99564d484d56aad8c048b7ae4e112b1d7fb928b7c48778b260ee9f158d67e12a4a4686524004340018455f8732c2dd0f86465c4658c55383e7901c256ee9cb422b6315d1fd5748f450718b6fb7bf43ccff36638616bb0c1025b4eda163c69d30b9e4de019c6f57189f0fb6725601bce0bc74ea8ecaca09dd0fc3a2bb6e0197fef348fc0c3a445b19536f2704b2eaa3f1fc7899c74d290ff6cddaec35ebce73b654e3a141dfa7a73c626ac79d4f73701db70df9fea9c4c5a955bb207e10e9977c8bc25dfe6114e93d63274df928fc9e772b2ac4bae7fad95e6e42caad28d9376fd65f860cb7abff18501f5bdff51816e7f770289f8054702b40cdfcf50f451672a1c8190e0cc14fb74b31699b449f39f45b3366d5dcf39e79cb449fb5e42453030303031e40e1a154e8f1c1d9eae9bacfe315a61cb7a5bcaff3fb903a5bae991a3b3d3f374552314dd7d5582a2232cd12226e5882a47980c410a286c4dc0228809eb440aac2878606392058f21051c44814414b1275756ff317d2389f0ffbfd5c42b16a3314a6342506443445460e822cab49ef79e8fb510db74b7503fd153d49c64db84fde2723f392512c071dccf54c762b11fcd0de13ab101bde5eae06dd9b2e5ce5e42090642af08842ac1a403e14e23701fce27ed6e22fa98dfe496dde4faf7f8fc08a15dc54d592c16f7eff11e2753607d8238a9a306968e2f3af4ed3edab3b9f28cf18cff18b3a52ae6e3c562dea9278893fecd6235cb8695eb5580673e0c43af4f4f0c1842c4de0bf08c7f055806a7de580126fd3b9101f37adf79dceef5f08c8b3ee827c301515e97bb25d36ec7aad49041105c3861c809d894232c23b4aeb8220954047102138c89b3107342500e829c288207353c99020fb4140cc1822c56fe02819ad5f736d4acbed1061aac3c41888b2c5bb66c59ed38d95f0196f1f7a28671bdc51e9ef1bf3185a5752c168bc56c84010303031343eea051e1f4c8d1e1e93cafeb3aaf06156ce932b47a9dd7791d0c4c511113e9f0784d901b7e8410290284e4ffffffff6fdf293f0c5d005c9ef2c3eb761de364b125cb7246dfbcbaf1eeb218815e5520fd735439294260aeeaf85f581d9e209c622ac06080441751901001b6f2bf81532000628b126a4e5e5f4461e51c0776619fe875d1870ea5db23739de775dd24d2195d4159afd7eb057312138222658868e62996d12abbda3561ddae99e2ca3ce33e704ac69d7413a71466be70c54e931096fef4976bc2dad5af66e2a4bf0e14d85aad654daeef64bf8955ba731cd26d84ab746130876817db18c136f35f730818f00cbd3dfa8b67fce79c2fe7c196fef297bffce5afd78bb2422aac9b9b9b9b1e393a3c3d3e37fce44004c6abd583e93caff32e8471223b425d777f4b5133351ab9477fb537b77f749ee7799fe775dccd4dbd1286a18b09268644d1a86e7af0a4747237d7755d982306247e8a39a28f2ac30153dc9ce47b7baca3b7e8d5eaed08bd285d8c155442f1731d48759ceca6b42bc0a9ce3579d866de5e42860c15cf186068099769ca38e912cd4c55e0aac036ed037337e6c12cc3185cb3856bb877ee82b84ec752e6f697f3965c15ae774f4ff554b920b08c3f57844bc44d8e478ee8461296e8faefcc6633ef44ee40cd76bad848094e8ece4e4f901b7e721052e4ffffebd7eee797ff3a94604b9679dff5d8c970c014424e32cde8e2f4e838af56afb9e638be345ed33dda866d6ae0197f7f1e5cf383497ff0962c2b6902f0c365f1c70d2dace8c3fbafb436c885dce9bb2ed6e0e1cb77698acde9d102cb4ed2e65a475fad22cf84b5d2c8705a37c0c1c9d1d9e90972c34f0e428a34f3733fe0a0a0381eb08c3fe538daf3c414a73bb5e80c50a2b0257785bbc2363c470e0acff8d313e9de48c2962c8382e3eddeee8de345816593bb9bd28eb171fd6f64f860db65c6ec202f146c8fa529c625873d8235b98cbfdf6eda1c6d1721d49117d890201bfa01145bc2587529d0811852b0621b1a83a2ae80428814612151d25ae27a4d469df875e83b4404ef81c951cacd1c78e6037ce3fa147e5e20a5478e4e0f96f1af2c85a5b0941e3ce36f87b03fb3d67e6a11af2a41aa04b9e127072245584882942cc17132996060d94923cda355dd8c0a168c56a954aa2ab779f4cf94290806d8a63e09c63381d291c964aa12041402c860a9f653fbb92c244a5a4b5cfdf2309c314bd832f451fbc9d9e9f139712a47e6fa0cd7003f358efb9fd18d67fa47ed678b2293e35c30c0d0b08e71cccc0cc2540e86403894dc400a2c2b238e440845ab19402f4f54b13252b2c16ac6f8e4c399a95e51818501b8550e62d0031861d0be00c21598b4000b0aaa1004268058b914ecf7f5c5e748e55ff041e63a8b4c99a763e973b94aa254f4047e111963594be3ad034f7c49e2ff4d62c15b32edba16b6ec28d75fac71c57711885f71ac4e824f4fe5ac819606b8fd7334aa78a63f1ccda8bab9fd3474e98771319e6d9cc6f299cfbc8ad71c8b67818115d44cbb8e82a89563c132ee5b78517bb57af47b357a1badf96ccaf8cffc880fb9cf5e3eab519a3fa537dbf5daf5f72aec8cc6363e030bcb36947bee32d114276efb6c0c5b9f1375e89377d3a65d99facc672c215c2e97ebd504167b028a4ccad08cbb671461b907bf8f92e4bff8fe3b3d33457a303c85e1975e1c817004bd9cac808cc8205ab5cb7f58c24afc232bfb76047ae92f8d4d4ac2adc4f109f8475660dde164fdbeea759883f3f840fea2611d6bf1c42b2a2ef1d223e9c3b16153c64963bf6cc02cbbbe9ef6f13de885e109886f4cc8f28415909190c9122bf1818ce0486215b6185cacc2279d805a08c20ac848cc4a1cadd3e06fe4b40ac727e04f1b34b0dcf73f108f8188fa3dcefc4e44b86b47a797d9a7398eb56f09082ed70b16638fbd9b37faea573fe6992677a05c2e9b852db92de9f00cf53c1a86e50d07c127c9ebc9355c53454a3bd1c7f79df8c3efe82708d2491a812289240a699e217906a5b3c3e364ffcd8de823292c168bc52d179326302731216b2bb3574a2bc771d59b73c67c600a5a7a8e3948c152b382e509391011e2e40d38b0cd0fbe0fe8f1830152b4e83cf6bcd65a391d16cb36a2010c0c0c4c0cb9834685d3234787c75e0b13b38306747720b40091c5024033cbaa4e0942ca2d61784a1050aeff33c745805775ac538661606276d0c490000733b80193970c6420052f21e6b2d9808b28573841e779dd7765168661e8628289215134aa9b1e94725ce80213d3459973b22637a51dd396721c9d7352d2efb83e24a75ae104a12fb65c1982113333b0a287226e455c21cbca5fe41a6e889ce6d15dff307429411050b8c07605962980b84b48920510ac60c20a1656fe61ce4e036c900425884045e84693001858f8c1091058ccb8aee3980ee57c46784c2693c98688669336abc0306fb399bba8a8c8c767a6ea7f7dee4bd264eb056a2853a0c1ed1b8d40fc83197cddb39596c9bc6674d966469d5199f56738614b2eeabaae9be18425652c19db50c1758ac582e716d7ff53e235483ed6f7fe5f90d7f40b39d951ee1bbb9757e444d16b7a2f991354f04c0f78904d19c7d5b07ef74f3896a2d64bf77c29ac49c764b67c9ac77cff0db04d174b754b6445b2a2d9039ee15a4d9cc0641fab094ef9b166f9b16474484a1dbb9b931d8d65fa6da69aed8ae6944d2e9a324f3512b6a14914c5f59f334fd958f918b4ebfed38a161ad478484bedfadf3cd5b37d668a56b9ce759ed77532590d2520db90dc6f58afeb06b08c7f11a88e14eb40d0e1d9e1222206f07f773e35074860a9efbf11c6654692136cd7b598c3b7fb398476abec155b3211b5451644cd54e828552d82d5c9414516c6c0b265c808570682208417539e10829315705dc751a6d445ea24e53acfebba0956e1ee55babb4d2390e96f8c43f75f786e7c8ecf311e5995dc0c852a39d91c49a53b03c71f59dd38bdd0f81c7f640582334e32ae7f59ba914a37d233a74a3796f127956a9c784c8f6304c2f1a6a771e2b9f13946a01c7fe3411c39709c5e785e1ec7bf8ca3d8cb7c1cfff2394e2f3c309fe361728c2f73e6f81c38649ee779544ccff33c1a55868ccf31eb6ea731e7d739aacd5b966e43b85b82a5e9c42b9e9ee8a3db6bafdb9bb33def3fd147b7373dafdbabe1369a50a9542a9c1e393b3c417c6ef811028e40a7b5296591fdbe4a357b4c1515a2ee0ebdb039eeab1ce724a7527571737373d3234787a7c7e7869f1c8888e110b0436fbf95d23a84044ef10749f411d43bc798aef36af546242cdffbe32601ac00aee17808ee71cf49f2deceafd65a9b67264ae7ab01932449a26854383d7476785836d93acb5d5a2cb9286517d29d749224495bc783b75aad16bf604e9e1082221bb2b14d08cc64ea3caf133253269335b10da9157a4f9f674cc713acb733e7589a6e8c12b6649b1094adebbad532b55a7394f1ef5ef213e054b38065fc45b1060c8cff681b2f5cb1fefd832ff7516a4c8515555c206ce5562bf685bbdde832edfcdea1d24bbc91518cf2ba56cb595e93b0d072cd6e1ab71ff4b886fb7eaee9865019ec2eb80eb6e92bdef9250d1e14f60f70fd7d7e841401398ea35d473d6fea70189fa4e98d30453e454545b3c86714ebe1c8103b58c20724b61421882a2250449519cd8b25a8705199856118ba98606248148deaa6c74fee28ed509de771367e60ffd6233c210a115582a84211034862850b9e4882881d4c59f9b357bfafa288c0c9dd41e88176c1cbb2d9bca66b6e54c81f3565fc6533a1a119935daf236d711ca55d53da4fa995a658e8486b4ad872daac5caf2c33bf9cb669bbfeb3d694d2c9c5d44a6d9f18e30d2c0ccc7cff185ce01768649830eed4f3680c8c7ead3eb949f2be453a029f8223ca333b503152b009e9ca0a52b2040696d549ba60290584d9a682dbe5743c44da84784d896dc45bdf47061196a7cc6803b695deab3892c6e654279490269d2c45b1732c42a48e5d37c776dd662afd75f6ce18055bf2504eadb34e1ad6392f0ef5bd07abf8a3c11c8e3c716bd8dddfcf130ef3dfc73756dad71b779cec1f394a5821456c5488cd66b309e9a2ee48759b838ea552a954383d72767882f8dcf023a4998b62b9d894393dcfa0a2c8701ca511f055ac8b58176cc3d4eb38ee3b8eaa541d8b0a1cc771b0db17744a451f5ed751b6f139c5ae946d48770236b00d5fcbb2a753d7ff7de75c2376b73bf13061bf0f7f66f4dea9061285695329043d4feca7ddb5e947ffa0616c517cafd4fd3d60fef7a4d34b3fe9a5bf3ebd628e933d92744a4ab03de2c823251cd949ea249ddc9c93db818069669a9966df47e79c939b249731833927b75c93552a15ac5533a5e3a08ecf0fdbd4b8fe42662ab664dbcf2f5d074ef970d7d80a361ef88602960a828c68c1e0ba9820a74c7f4f9ecd9ea35357bfaf7aaf6e4244ab455b947acbc5e40573f2841014d9103562e43070264093105e6d488fdedf43a98067bc85c4e7481dc975be9ec72e27973893f65aad9d43faced15b28940a27c7ebbc51ad1585f2fe52cfa373f6ecae176cb5bcc6c536a5effddd084ecdc032fe06f016ca5b37b823d408d5ae56d77ce188c527cd78195f563b639451ab1dad2d8d21e9d430d7f7a5b7c2f2c8131787fed18f7e82a7ef34eaf1a3df6ab54a76b2f4d67bdf3930d1ad7554d15c0fe52d8f11c2ba6b0912967ee9ad5bdab265cb9654afbcd56ab5bce52dd0732c69e66eae356632a326ac566bb97e5f05673853aa4fe52a57a99e701d4bdb6377f7ec38d5d71f145a43434343332ab4222b586c596ecebadd8ab08acc948bbb8b0bdbb81824cfd0dbef620ac29a80b0fc2f40383e72fd3261876845434333da8f867593ee5fb8e25d177dc440c41057ae5ccb86b51327c9eefb766de319ffaea7f08cf7152de3ff9f23c78c1943fd721962c2ac7b7c7e6edcd265f6604bbe39c739c93694acd55a177cb0433dd43df4b2e305eb96b618f2ef22ff3934e4ad521820f3b004b87d6773ce1a77bbe7d51779d5ed79ddbd124f49ea0a099224bf227d12d44afc920a9806e7192f40d92cb8fe621771fd590c4f2f3ce1939e14bef0804f0a4f3ea79f2933fa901e3cbdf0941efcd2f833bef493c60e6a4d19f1c5b1c8789b1eaca358193bb0367d1fc53cb8efb73396e11f52a0b10c5f8f00975b060e3665ea58da917e77b099aad55ad8915b438ea1580bb56c0807cff8b804f8380e8e2693a963ddec7312165e2c168b15a4a4e562d204e624264423d27a7a68f5fbaaf873834f101e0c7441a587e6025b72b7f2533e41fe5c7f4a080f06382b704d05b81b8dbbd1a8f4b8008c40f3e8b7f1582c160b45804e356b06d715ad1ed8b0582cd6f7951583e6d1a47be854cf94f1e6816deadb8e58010d88ef2377a0687a68349abd329b79c60b3c6c8cd77c9d573f4a3fa00ea222860b564674d0b260c24aec23682b232e5956a27852390dfe60d7755faddf77523979e33234b00cfe299e714b7302cbb5bae0f2bdff0d7ee19aae7499317c2e5de5ea93541fc747dff77d5f087ee40e27759cdc19ca017d54c511ea23d0131e79fce708341fe8480e5e28140aa5bac1c9d1e1e909e2f3138a9e8352ed78776d87d287a4173f3ca9683ccfdbe1098ff8a4df2144cdd40ee293fea59fa7f4e1bbf8d223044a1fbe0da5317c1b48a3f82da27260c5311c5f7a7cd9099f2fcfccb21247b0e3ba6757bfd0c51afc7a28d46ba4050606062686dc41a3c2e991a3c3436ba5e3130b7638d6c0bef0156250b92cee20196b0b496c0943a9e7d13afa68f34c4c6582b959b399670a0816a5c973320cc7711cd7ee4e4926530c0ed3b8d3c3e55c61ebd855da3bea18cd6ce3420f968a62b1584c088a6c88880aad4a518dbbeb50a6991a815fce67ead1b69767ca87a64cd71814db2fa448b33aa85bed82f518f3a1194d48469b0dc56242b158ac29adb4d28ec568d128c9d7e26e1dab43d20575ad6e49c7a46bd2c1ba18774fd8844dd884cd54adf67fc278c67bc27e87100d56e208c45540b1023282802d5653f69c45116cd0040e56a511681641053178ad808c740f5a78d0c44a1c392d4e837fe9cb2964af9db019f328ed6e5a81bb15614777027dae24b6d0564046462a5b4059cd782023005032a58b95f8a5279d802cd1951590112f8bd58c31e8572e0f64c485c94a1c9fd427bd3768f344f8dd7bf701e8a19cb0eb375687a43e8c068d4f625a2149f22bfb327e7897b670849df1dc6da66a6dba9c666d622972b2caa44d1aa7d904cbf8cf384d211927661acae904f30ce58462c25a06ffef3469c033b5365393c865fc2795eb97a71520d8fe92bbcd2f278c747ad7aa74ea25a038115b811e3a95a1961224ac8e721cb564392dc9dd50dc0d887bf003d2974e407e8324c46891c627dc4ff147002ead35daf5af56bc8656a16325aa45b51b4a6cc9ddaed7da9d39497fbae6847157609b11d8cb350fae7beea76ba62a51a5325fde3864de92bbc1b82b70b796c1e958879c8c62fde6a4df9e8031b9fda4a196dd7e1a15a22154c7512fd4a16ff7e9f381f55690b3a64c730c77e36e5f0b741b5866cf6eca0a52b2c4c5e4056b3ae79ccd76a64be7755ec75cd771a28f39b9a3734e207ef9b939f98443839a9379ce17b6b043b84ba45e203ce3bfd31c17619b7a473a4e7a152c39a385455841fec216b6ded2856bd11b6b98df4d22dcede17936829022e424f90815e8e1997e2021360990c1528c99274f1b12d7751ce3f4681ef4faff30c771a972739cd7717da7d4d9c449c25227a96c0337ac70ae4c26fb3e2ac3a90daee0f57abd604e624250a40c11cd68b1582c168bc562333563139c31232ec5103f90c56226a1d7ab89f71ee8b5b7430ed3e37893bf35f9e3282120a8ae60defb06e64bd4bca52f610e1044ae60be84e12648b58219474531d0b0c51fde58d25b8e13d00e52c2906295e35faf26384e2f3c385e601ec75bf81646a016de046be1348ae9f897d7318e6034fee5757c0ba7171e17be8577611cc55a185f68bc8e7134a3d11821e02b98871947b229e3515828d6658db0d68e6ef647a3dbe836bad56a6d0d97d8cbba5eb2d1cd65fc6b1ddd5cb739b22e286c393aa279d8781fdd4656609b1ae0081c812370f4a0e8e3c60d1a356c80df077ee007bad438f505bf0ffcc00face112835d1a2e5555657cc9c55efd335ed5b5861ebd13df1ca7107091851bac709c78354346b5d675fd47a3db688beb4ffa78c5a6ff466cfa5ac19056f005be6cf88d21508bd8e5988f09a7d971343ebf0b65bdfe60873127b02d84e52953ff4ecaa248bc284663325b32a44486e4ba0b69b19ee5a5e5966546e4a4df3964638a85f9c2962de4ac99f2977d12c52f702c55dc58a2c8d1188bb5bf6490552cca4a692c678c34dab2c45e58c2e7b389cbb80d28b69c4d6613afe926d7739800b7c7efc83d726bdc51cfd70fdb307bcc05d6b160f4d5251ee0fed3e974999b07d289a7cc9c4253c66333e6a4fbfd907f009ff8a3c1d168340ac51f89e16866c768a7f20c4f2cf60add05092854a3543738393a3c3d417c7e9a4e7aea15934ebc825db0093d23c92dc1dae7e219a79d3dbdf0bc2741076130810a2b4b3abdf07cab8008ad15e9c429d2739f6ba648a389fb5ca6d2e590f5a39ea3106c02cf80b51c2d0c61cb2ea6e3caacce7464b1a4c711833068a6ba16671b81b556d8e246ce06d6ece52858ab8137508717b6740232522388158d2fbd3db93c108db7600dac79cde8b28d05b33879026d4e833f8d138845046b42d8ca9d40681d757461b99f27108b83352a2f35f4e5213ee883b5efc5e473c12c6803b138a923086b5d68bcfd928b0d1ae393ef67f835119f89d7745ed3790d9d600dbc794df9b9aed7c02c9f6bf4608df7ff5e3564fc8c49e35d1eaccd1489366b1fedabf2d1be999344dfd027f421c132fe2ea70f46e38b31d3507e32b8fe32be253e57cbe03f3a7d47d066ea83e232fe2ee5233df7e5e72ac11a0f41072b7b9a4980c117ac15e8619599942a74bdab5dff8fa5258b935e6d600dacf18c3b89c633a42d48359217249ae8836b39d9cfccb99638698576fb29d16d2abb1d84c4c9d6e2643353d34c814d60197f3006300c0fac0171185f94de9e8068ed871894de49a4a1eb4fa24222f21afa74244199790d49c8491a5823d148242112144f7d41a3cf053aa1d63cfa0b9a2912142f495fab82b5cf053a01ac4d929093548a0faee3be4f9c94911b5a72fdb920aa85da402127dd09ac39aedbce938c4ea8b43527bdfbe89c21ed69131ae2a47032276953c66b4cb1f349a7ae35533d6d54c1d9aebf4b919d63c9b4d9ad81b5ebffd22113af293ba109d63cd53fb0401b9805bc85ac1049a8648cd9f50f5de1abe9ec84660ac9132e9aeb3aae4bacd0c9a2170a8542a96e707274787a82f8fc749ed7715de7e54cf07bef4b9e75330097a3624bd4e78d73ce8942b180b949f27f72dc6a7eac27def49e769d07a4f270bd2ab6ce48d5680a66af65b3d96c5a58414a96b898bc5013d6795e377134c0356d63d2bf2406e9f4c2238aa5d2974620d208e402c50cb6580119b14c564fe61be92444acc4f1c9e88facc066710931ecef2d58c6df8baed178c63f7cf1d432a7c1bf6dae9e02a7dac532fe24b6e14c42fc70fd1b0bd75f1cab8c296cd961e9b07450e03a85eb1d166ede0fdc7bb7b1b318e1759ed779325c96aba3db6203dae6a4b7cdd6f52ded49c81b55aff36cb6dbede69dcde6b540a7710477f36416ed385a52ca719486d2a869614a8942a1503364d06f49374fe638b70e83e9380ae3f3696e9332b4606e5378616276d04c2b2471999d528fe902e6e4092128b2210759dd9dba53ba256b9675531c3ab6ab9738795b2dd70b269bdf6c9ac9e4a2747cf19e6db2cbfd1c8fdcd44f33c9c171d25bb296eb05abae17acd51acbdaca114312960847e9e71023035b72edfe9ce6cf151b17e4c211b8f000b672bbffb8f75a29ad2f5cb1958e389c5e164084ab23e84b9f9eba07997a4eea1ec7b9530e3f632fb9def767a69694aab0cd3d749cf4cf71f2a3ffc295392ef17dea1b6532d96459b7648d93b3d373a73c16bfc5e3b4babb9bd5047393c26619d11054f0c315ab8f9b7084ef5106e094652aeae5298c05cd9c9e37b98e6b1a27552ed33c6640158067fca737a2862c5b6e9c73d63a67d73c837a09c193e76c569092252e262f58337f22ca3b44a148f285e71d082f7a208594d53702cd2cc1c94ccb0ac8c80c503421c56af4467474e1450c56df971688a97071c4ea85e72d14a215381aa911c4eafbd22403e8bf1311a7c17f742ae234741d9795a49a323ee77777777742465300bbe7629060ff96b61907efe9f7fcae95b91107225f76f93870df8c03fdbe75fa8f52ccf69b7480818430a8b0a28b1f8258760526511cc1c3145c6c59d115b4feffc91d28d54d8f1c9d9d1e4a67eafbfabcf2cbd1f6553d01918ab04ac2ad2a13e1055568b132026691c4aa8e4fe6cf00c3d2e0c9182060e08f99b94e03fbd863cc7f9d52abb526d33f498230d4f7b5ab5ded72356ca68002a00459125646660facb00adf814623ac92745e2b6da1d1af78076c1345a73ac060f4e03a15aeb8fef3060e38b165adb2661501aad59a1e4726e3e69c1355f2a12f0fbaebae9bdd646666e691644a998810224528ed295a34e53856fd13ce909505cd22a42162c81d342a9c1e393a3cdcb4eb280863cf6381237034e539140c0c572042b1e79c3d69bc5a3d547d26a200eb3c4002445d4c26aaa7aee30bf30c7dbe7eddce69ab8e4e4b09e0ff3fb903a5bae991a3b3d30344a6bb5470ddbb9044eb5bae0a85055290b0a50a22d880530d18020e7c980d418b0eaab0fa139732dd58ce70fd792c0dc03d1d99fdbff3fa02148d0aa787ce0e4f8fcfe40e7bce49e79cddddacd59a7ebebf00d8468679f4ce8e989274971b506c49922e23499b3744d3a674d2d9cd711c7762c07c4204165bee5da23e8b16b02c16eb49f7469e74bf8cb017ee8f5c6e2cbbeb7ef4ed7016a5bbb9dda5bbbbbbffa6473b776fb93e7a13b6e70f2c244a5a4b5c32194e955519ce4cd55aab10d60596f1af2eb870dd0519a5945217b85ad3ffbc7af69c0c53a9542a55d8d1aeb9aee3a858c316435e74b8ceba44ec1dc233279ea1a21023ecfc926d233a7f49a1daa8b4cc5ae961cad0cc0c0000041000e3150000180c088482019160482ced82690714000e6394406a4a429b0883519203390c621042c61802082000104348a932710096dd0e120163cca58b2112b30540f3f06b56ecdb07b1a7c711350281d6f4581035aa9958fb8e521a55cb9a895bc8193ac052dd517f8815be5a795b2cdedbc693617a748696910a0c5ad97c53804ef68b1c589b7346b829c4940a8972c5944757aaf0582c6cb55a050d4983797ae55ea911d4b0e42b1d260eed5d8b466cc1bd1797cd4d9a6dac3349d805b073a42f68549e5a7208e499fe6c1f6d8b92d1083cae851c99a0f27c1038af5aa04583b950572fc3bdce8aad3421d4e67895fefb458ddf0aff3f5f054b57455d990416faede9cc4d64b38aabe25115a443681e960a02685919d154b32ab8caa47102286cffb624c8d6b9b4f26c89b3faffdb2cb40600f9d614ca1cb4bcd26bdc5b31661dda9788b165e213d07123278bab9c9c02f8ca567f2e930cd943d51558e75350357b23af045385ce1d9c58d91291fbb4878ea9c05a753b466f86c06d78431a85f1c8bfb94f32ca5a765bbcf8b57a98cb28babdde4edcb88806812dacbf59fb0db01e45c99b03b35b84b18e66bd905ede45dea4e4a3979109955847182253efbde66aba96af69ceee58376c6696cec45f47510b101b1310238cb6b71afc83d50e1fc298fc7e8aade72615d4b8ad684bf900344644447b6337b7c4c11f88d01fe28e751013298748e354b07f323a3f4a62e0e545b163f4b2268592a31266ff6b0b6948191dd1def06fa7095d4518d91cb12cfc40df49c2d9447eec14d0c8a284b22db1ebc244985136f31acc54984b4a5e2fc268bc1e5a41306b8a2c60910b548436e2c5116e7d18c97a18d860ba0aafe5f79d956ad24696b610d051f1414060d2e96fd03105283a47cc79a191956e30a0823f46fcd1954bdb29d0091c88450d20333502b919a095afd578b5446580808bd6b4a004aa46cc9a3cf9d2943561ba091375ada083b01fd8e5a4ab34839047653c4bbb1b92f82c39486186c15c56a5c5adb9d4840573afc787a6935a7168ea79d89fa474cd4b9a50818fe18f9ad043138169482965b066ca71c64f4bbb37fa11fe48d015cdc8b18f18665f43b3d4d960753ac8277f8ee53c3a4bd399c81a94f2efa9eea9e12773338ec20912ebb8ba31f3e9339fa0de67b2eec985d535d0b86c2ee9700abe7e05a69df3f68928de41c368afc4e01a5ca5d8c9713685f4ed09fa540c0ab82bd8b1d989c197217e951376d187c87349789937f210bbbb433601cf142e5cba4339939f0ff0cf4f8df9333f0bbe0616221a5a39ff6765e7051ef871fc6522d9d9aa3adfe2acc57be414bc66aa29831a30e48af1ab0b4e38f6c9642d1b5041fb5ae06c225807af156a0c9b642bec0319b2bc4cb7ada5cc7ac995aa3e0684405924890866b69d076e727a65da96bb1750db6394e95c1d16f67ffabf3ff0b3f6af51f9a608ed38f4940f0e013b9b38923ef92ddab784e98af5037e7e84284f1336732e604662164c9c02df3d0a88ceb85c49856f067e76404dfa9f64dcecb227eb7cc10cea19bc8d25005cfd754c44b9d4e8833fab907956328841e5c5467296532831a4fef448f09e7e2ce901dc86445ad9fce78bf89ab3cf23a26285033f39a007d5fa7ef2401208d41fcbfe18a1dd6d9f31abc748206393c9e50054e94fc54e0df5f0ebc1a8d86d879937c15fbd8c4b5c5ac4c51b3ecb4551bf9cd7822dcdf19955390533e038d630571d3720768638da9aece1b3fa94b95e41a293d234cab21168f04e87f2428c6ea6eec4a8116b08db2161f9db82cd87dd66475626e1b34afebf502e95cbda4869fba630a3da324201eb7f50027e9453bf4b64ab754efdc3c4edaa730e5cb5a4fa78ceae8a6d856f546211f11b3f83869bf8fcafeffdd72c82edc139ed38c0841d2a5685717b099d07e19c80c411d9416f8be7b911cad401e7e458e2c4ab2676378f47f4690981c339cd6855b559029c3330daf08849ab084468f5fe2519c6055da5d33a6b30fe48240d57d82c9100b8f3f4760357435359a91f9a0084ee28e567cb4ed9361a8cab4c578b382c768dd5536c213ebdec9b4907a353c952b4cc5777f41f6c228b646fd32177c70f43ea919ea53a412fa45e52b972bb27c58e8f48360230156b333f2c719a6487eb064813738442eb20ad712c082993b9f36782450c95dd3c54878fa25f43e94dab1ce3d76201f92fc8b38a1626e40f24d7127808187292670b5dd6f759ab8189b1de24a73be5e9009c2acdbb24ed7ad0fa3b0bf04831ba6d7da85c29cc557eccd094e0eb195bf0cd88f35aa301fdb7f288dfb2aaeac3bbe24cd71a3a3a6c24445a6318801f59da1823805a369991ab2ec85305af340c4dd3244f249bc47bbf89de2f89133d8f13a29a7f14bfb946276630cd30239663ec17e088cbae85736c836bc9e6d7eaa7c0d60f0680218f7c7bea840a0a5e25ccb0f0100d521eff02d04015b151e108f8ed8f97f6ff6b2d00ef00c0aa59099d831aca104cfd12c05fd3a99c9abb60d5da57302b394df52bc0f77328393d8ef63dcee34d77537299bd0993efeb32eee377fb8207109262217a2bd130380a241decd60f2cc5e03b02c7cd92d560eb962b48ba3b24bbd61d12586798c10bea79b6ae8c23db4bd8c01cb0319cac279ce02b52309cbe999d312303469bf7ace8b091ebdceb605bb4fd7e17dcbb5706fde8281033b46ebd9226be511162af357ad4c680b61eb5cac20fa66b45b7119ea49bf99bc3796332c0b8164f5e47a6fa146a94a707b89d825040187eb0572ed93b6dbf0cd1d91d4f0ae8d156cf25dc1829d795b635d0b4df30bdb6f47168864c4dfcece4629a2baf76a0e1eb07670546f7857f11ba358590bafbe17a8375136d56b291ac582f0bdedf0ba82d03e09b94f31f78f3c3f3b408a4218b6df2761762772705c6a938fbc5cd02dff54f0fac2806e5853e44bdbb092c0848aa191d195e19f8ee718e105c1fbe25e0fdf1c53b00433f787775c7134bc6abcef57109c5e2aba29c79443c365d15a3a1dcc6393f7f14c1d5639404dcca38f1268f8db735b25b75a8e50df3861d1c747d3525d868a90a4670b6c696b1e4a619b3b2a7ceb8a0a85839e40a20f100996a828b0ba17b7b34759f52cce21eae1be3b9911760893f4984c10e58d59e2bbc9a7d7212d31766c410f0a398e2dfc4dc174d397940b9224066577701a11a797b5b57b88b89e5be51780950b6728e38505505232e92158d64c3d3ab6072c058225626038b7f6912d226b9d65ca98eb33ec411a3ddcdda69862347572a98010f2babb3a2bfb9f7f54c8c21d01a26bf2683235a1395abf93ae32621fd23cddccd5e800bcbed9c0cf2a3d56ba43d4e4dd00dc4e7a574e33fde054a40cc21d8dd0c46367feb6786faf45defcfc407bcac2399127befa466c4658fafc633c92fed6e1d728beb9a397c4f0e7c6d65a754a668fa56057c8c040e469dd2bc69d6fa0de2ca33a74465442b4736807be9e5669556e320a154424d43bfcad6f96d24650c9df1920420374c27cbba84d626c1ee5c929bb06e430342b229b30342f9256e6abada000ca1bd940dae28eeed3bf5ddd870b44fed636d7717e2f064ec3d65e2b937bb4aea1c4bdf0ac89fe73f60c27da665216c177303b0a31bf7eb99f130f97ee130ae99c5d82113796223a34831f78b0aafa9b551e3021981f9070d245118c71b9037eb13112a47f5ac4d2b08d816dc99309271f5ad859b0f2b93076eeff2be4cfe7cdaee531de0c83b48a9242d245f54bac315652d0ff49ba73464a20c46bf36fca2fbad8325f6ebb1323d3843c82e0cb5b414db7fcbcc472eb8eefbbd08ea527d5a69b2aefe140b2ae35d261f3589363c2e5de10352a74c916553d4dace4e744cecb938bc7ca52c9d63dff8fd7669d0d8acd4797abcdae92ae4632334e146e7cb1926834d0f3c4c3bda2a2da02d5d4be610a54537b857c7e8cda4d5bc89a44e6fdc7057988040e9567c53890d5edaeca4c4fc377ee58d0ae4b1204a688dfcbaa88ac47076c67ad9ad4a1b28b02f5fcd51a4d21ff79bff44de64244e5beae4307d678afd144b43ecaefb6a0ecbe9b51a8cd87b41fa665f3484e3b0c5a63ce55febcf4fc177810a59994c6f952dc703369b6f8b496a9cbf0632d3ffb522da094f5e80f2e8377162ba3bf49b3ef6d6f5f92d2c0504ec78ed8fa6d98a39418c0676ac0a0829e28caadb4aa519daf4cf1ca7ec1d742dd8f0cd234872a224eff9236d627e98adfcef23f833165a83a2eaa0bb372433ccc64b279e6a0e1134265f216befe6f8c2e97340e599b393a36d04edbc231ec6b907c92944156c6af6e129491f841cdcc3415ecf8fc562f68eb2708e8d9a101e73bdda55cdcf211f3bc168a3cd3b361d5828513cfc4b87da137d5579ecc3503ddcaafb9524c81ea15ec4c23bec83152ba75b691d0ce9a09431edb60eb8a5a9b9107198704e05114090f68f94600393e3a7f03cbd5604516e2b92226990a052bd8ecbca2d8ed828868f5b6ff9bc0317411d3fcc86dadca64df81d63be4e25c33c344081c0abd517afe6462d7189fc35ab3bfe96883e17b248841a392eccc2b89b59893ebefd20e00c7603341a0bd4ce5a2b0043c15301ee1b87496bd86dda2e2d2de782a86aef0f626f17d9d57ce2960d4d36f7bad78d2b68c607c688333041456a442c4c9827c1e184e0687222b2f69e48c18988ddfedefbdf93c99f5677a3f5fd1f69776b5bd42bbf9859536460194cd85e06c37972fe2b48ce45a5d346137295ebeb7eb85b839ab172b20bf86a91c2be55e79d53fc6cb3df0576646826be2c2a4b2917bac691b6d2a2a88e81ff83b6979e49081ec183eed41f2b26c5f441b228f12ed13336d48e4642a0d19f5195303df84a717d2d46e57520622ac23e88aa92f6b945040de1293f8eda5e2c125012582bd7d6ec9925b65c045f30fc36c69287758eba023e35bb8736209f3c2ea032960e2011414d87641c516b40667744313de31c75a6b5bb7872c8309d659d8948d5b2b4c708286013e9bb3de9f6e8e30251157dd689ac627f3072df3da74dd3b3ed84ddb8e1643efd194365812e02554db1198e2075fce0245db49c9801f998f7c102a57a4b88338a31ab087140b2e5e504240aeb08593470a3e2119242cce6f2230415b8a6cf7c293a9562b4a44fb1aa306a7711b42e9c3238e5ea393d791149659379f1bdadeb4c8ad38dae6c2875962d9f18003f984fcf05c96c73179c72d4baac564091a3f4c7a3a983adf5518eaf29ca213162573039a928e42cf8db0a29e9c8df23b22826ca70b64423423f805249a81f7371ad65914ef23994d549c8d9c1c5d676a3028b694404e4a500d9c2c730b619f233919afbf5506319b4658eb612dbc84224cd7c2f561118eedbe228e8982feac10ee057996728b6f9130bed5c89a1b0e7ab75e1fe6cd0f7b603c9e792ae9c5bfb2a0fec1250171b3e9fee4891642477b5d89991dd0a96a229c288c00183103b4181303634c2ed77b250957abd0017dde5cacdaad1ef51a9c38fa4819bd02fe5bba0058a06742327e3990cf6636c03e33f55d66840f780cc24477ff12a79fa1f3a650bd3b92c730de97f956281c5145f302b6d3dbc6e9c49565500acc5685f15b0a9f38700a322fae844e04d30e37653a9adeb3457a106333a39d46600c068406b877816a63c13882549b26a65284b9274ce426b6813c8d1b877ca291ccb729082bd6ba24be690c68123347071a52bf0b99d9ddb5e8cc5a0bae9bb805a849ae689b7daad3817ee35707616d9d8a662cf7e7e62326a788ce6b9de0f14e3bdd2b2e0ea4ff09eb2e874f644841192efe161e5fafdb56c19be07271ecd2e804707d9dcb6dfafcc9b74303cf3fe04422e491a24ea534c2c1f46dd3d28f2ed3e0e5e43fb51e1f34b2a02aae6fd28e16f59de699194c1a0860128b4390db4efa17fd29abdaf09f5570a1b292d212834a9afa33a784345192e85de50dda34b8c060006058919538f6ef78af28426a0a21b5701d0bca514b21800b6f5849024caf040ed1351502f242828d257bd6b18ca6ae9c1c29089afe46fc3d05f87211a1043ae0e86784662a854e551ab53f2a93f46bc91b44b3a26f2f6f61674e50e549119cc0c5c9f706acf22c802f465f6269679749ab29eb494a5d9664f4ac6f852fc8b940232952488e866bbe58339e1dd94197e57f1fd028829728cef9ed52ccc6ebf76d304317619c79c207012d4e8cf19ea04559e0708e5dd8ab083a631bc9ffc8f28d3f2472888a1eca09cb14bfb0944b4bb93a77d136cb32bee868a7961903e343f0e24502d87ed79f13dac404a0dab4b30c14d634c3854cd2ceb75fac88fb231a3fad2a0b32e23468a0391a8fbf1121ce63419818fe59f7a320e21c576d2d3f7270b80c36c7cdfae01833ed135ee7967eed31abf5450486400487b0d7bbd2bc2f76b3ca79cb2c3003b10bfc66611770d2e9e843c7b0be4738b1a04a1def64ecd91dc99fa9409b925c416ab1a91953d7aea812d16d65a414f5244d1c84a48335c5a0a321eb3e83bb5c80a7fe428bd859b01646145fc1f094545cd6b14e49b844ebc0f3d8cbf34bb0418b0308b4d2659536dce5c20175437f1a97137d6527a47454d3bd6f8095e4d664e87da3f5ea6d8cb8e20142e733bb0216574cd207f23f6d5c25a6894606745e24b2432900567d0487aeea6aad853d3a876f3059605a0327e910e57e5d5db97edecc53fcfbf7b32fc9901660d8125a217ec0439eb5b4eb451a9e90f540e3b54218c20a52a0d25ea562b40b17f1ff9ad52648731a8982bb29a4c10ebb8de0018c41b15a0c0acd279cc9f8d00abce8a8a8d1092bb3638d97a2e1920bf38f34fab971eaa93a91b4350af520fc105a35c56a13f6ec6e512342ff5d1889536589dff89853a60137cf26124c6015f43d5abcdeeb25b7824448143bc41da76089844c500e6156fb09b4eb0389cea43c8c04547e6a0b947488ff9b1a57ebe3c69bb70e9526d2ff3edf1c9cc061bd526bc9d85f94e52cecb0cad5ded2d9c9324fcbbe8d5ebe0c2d77cf10817e167865d674194dfeccd042897d883aaf8a3cc7a5274c08d3cebab8b84cc722a3370ff123521a7721374bb2a0f19e57ba86d3cc66693b9dc76cc15ca3f40e238858922ced6df3bb25ca8d0dd96ec075c51f3967685e3216e2cb3695d2e79d0f1765e151559b78aacd089f616d44b644d0a391b6a1273d796f5f806214bda8ef02c1408a40a169492be0940fa9bada9e325512e128ff5dab00feded30dc898e1872a42a546e18cc2a644066665c392b254bda2613893a5682db6834abebf36e79e656bdef218b5364e817ac07a72ac56f11c098838ea20cf7d200ac7f3ef405d6ea5e63d54cee28fb3c220abb14f78a40ae4a28dbe4de7d8e137abb746f8e4daa2b006038176ec5d239e222ed0c425792693ab6265aacacadd9a34f59d2e0ff055a43b5a4938d87c47e572e88db3e0e61a5458e53bdc475ad48b043c990813c0d62db0fcb61bf569f8df4b9988a1156d0e12af1a21f44468bf9638409d287d764d17819a794cf437824d1f351a286c8750ca5123e759da4ba07e89fe67626bdbf3aaeb5cc5428a75ea0f66c1dadf1d80f527b49c3e2d6bcd1378fe2aba83abbc47c72ca749ff92e914c3e944f6d4efce24f61d43b4009607b24d0163629c5041d7e72a5c19d3794327948cfda06a5cfc1fdc0d423ea625fb779df4071bf8ccb347dd2b56abb685e2d6216f0d577110f666febc870b71c02b02097e6a320bb92fc47242275ba9e37318f2ad12af9488f587f14b4013ba7496495a8d061a7a75b5ac0d0b2587559cf0dbd4f9bf8aec94e24110cc5d711d0780d16a14ef1d0fc8a54d206610ad043ae5881ef88ef1c5f7522e441e68d0fe033098b703ad7f6aeceb859fdc9110417551809674957ae8a6cda0c84a3f5aa3f0371ba0271965ceea2b0fb9e1078dc15e1ec8f08f8a024157bccce0417203c62372c55502b11af1948843a647d9bcef2e8176262104c7b0524279c11354928938665a50be4df69ad70fd0d17b2f006c0a4a0fd92592c9a3aa7cf5f38587410577e8e6f6ffa56d88c9890b4512b5eb5c9fd2e8e95c837864c0e12de8f86b3845c524dc7a84f6629a427adc32f30ef05402003f9fe4cc20b9ba97184ad464d7a73fbe2cd8484730f92abd029f681abfc9ee3d03b519f5728a788584608cf185ab378bb3d729104bcf3fcd48ae32ba2525648583b8817b6142064cf8ed005130906c3a3f9ddd50431f111e58fc08dc680388b111d80b4f2bd99ec1c245c2db42750e2f3026a57095d20c1d076b1f26557f50aa2e3750d95d856cf90529068a3f36ae5d3e21e9e82da9d84e4681bbd682e92839fde9045b17c57d4bae41718f083343016b3c4a6080967594c0209a0d27d5cf7587edb03b57ce8ae43d54b97563d4b2fedb4630829bf1850c6749eb470bcb44b376f69bab4f12d52a14316cd49b9d724009ff6c1a43fed4cc0784192ed3b710a090dbd6e1547a2bda8a127823bc589f10bc5807066bb3f57f2a19c7712739b09b5c963914b7c498a5c5a9137f46477cabd27cb3eba3d4b146aff692f96925a557edace10485b01b9a75e74dd4852acf80f11105ad87eadc29619d51e547679be3efc5c203a79756789bb047a826ab12dbb91c2aac13f3a74e54e0d9693b02cedad206d534be56a70182c6a8f8712efee2447b4c7226f270737d3ff15ca638d9e93288b17a5c7ab00f6965b177d203e0b246513b985a480ac4bde7219a03df7461b0d8fc3a98dd690aa41483c299e1cd5c956a4a4136fc088d79e1eb04b7d0e97d418a82daf7b09402de9411dec8b4f6c36621d344e47a4252cc7388a46f599ccd2fde06f6d12abb6cadfef3039dc3e24aeb8cfc3ca334b905c63fed32b5d3e28c803493632bf2d31d8b79c81e0a408dbf622826ccc30ac2a0b45ccbb99ae8a6a853c5ffa16bd3d5ba6de7a017532a4d995bb0fcfc4d2834084dd6c4d627cf72c62a08b4525c594a4ddfc24fd0757eaa266dbf5f318e3aa486666de97f8752bba7920d483c490270bdec25e89e1b5b1da792cb0b792a33325e4526c30f2d14ee5d26a04653666806e38d7ae0b488933a904867fb0bf5bb078825e338c9fdce3ccb859a6a0525ed621961c66e5596e21952d45fcd8b9113d684ce56228991fb89c3a3e56c88fb31ef3603db37d18f9f32119069963f3fd82b1c1052984ec130aa916d608c074634530741c22a6c86f075c7248b84329ee2f66f14ea43c007f1462330cee4de4983b15fcfc16ea2b96cb5d5802b80ab476ecae2c537c0d1db29a9a7c145a0e42e7b10ebcaba7d4bc170febc5b9db00fe3fccc7694c11244da23c2c5c9f2191a7cfe4d12898963b65a04f495d233bb5dd5980e3ed84e912ccf04ec33df4e9355b3a8cd00bba98150b05941993b7d729536a0fe55e6c2a551e916b91ec0e7bde66b909843cb0cc109c8118bb8f9f598dd3601170418992005b258671b8141e3f3ffe15ed5100ef1b34634fcd4c6aa80cf1a4072e70aafe76226f319fb5f68f8d4fa7b2159033f031c8496dea00d3416109023c85863d9fa299a1d2c91a514c896ab6c85640d4b6f700bc2c2d5902be15189188df0c89085dcffd78a42016a45110c91bba4b23d1f0bb527cbfc3343ee9156192164e31d873c811c117c91b6e43573f4a01c3f794d9a0059da192d43f8c8260e7ee0117f379f0913d1321301fe912ae138bf60ffaf8eb72c9dff742c37c1472e719190076429482924a6b694dcf65bca924bd93b232f1393ff7eb5e00dbb2b8ee5cc1af00731aaae867a34fe3fff069c487a07756217cf321ada1ac1189e4d560d5ab1e600aac2800c9e38e90430c16e355c43f46c21cddd838769587b67ad36a9638220b37b288216f7605ca4da6836ed3c5363cca0aad3d86e94711d80825e274abc5246dfdcd2f3f945b9831bc84d94cd092abe96a6d5d976c7ad24519c0c925dd2f61a2b92b42e4d116b6f5bd44d6a7a879604e28e03e0dcd8f15a33c887badf7be7ede487b9e62a66a4bd8fadabdeea7babff41fd8798046f03f0178ad4c01fedd0b21acc1d3b11a0b5c18687382f6b2136148f861b487678537ce807d11b959664cd11d29d9588c6576c9f8451e07543f097d83d24424204da2258f4b06642dc86e09aaf62878810d2889fe4a8b9a0c2e6acd891b0031d42770424bcb58381e207760c3b62dfdfbce9b2155be941d1b1e4de75f16a271c2f488cc4f6344190b1b0246616635e95ec6441f7f874038b00847e6ea8ae1fc8bc45e4257b88a2e17319dda03d0ce5088de018d1aed8a4101fa6b2e893a5774de6d3ad56fbbea15b31e92fe9db7e908376b28f9dec71e178eb275a31d80dc2b76d0d780c6fbcbe1f365e1ce1c9c6409354735b69192f20067a98d8c3d8984a05de32b0a53b5b80d2e189b09dd9a7c4552d13ba0af08338d3d8bdc9b7ef6732e87599134a05c66be52e81315c795992550f78c7bead022d090dfd8231b2044879d902a2db6d1c396708d81f5b49ce2ea5aa2ab4a6689f598e8fa525f49e40aa86f32fca3a0969bdb0363c68fa30bc31ee09ca1f15d981bf8d8cba0bd540d5443f9017445d59e11f69b5e1b7b4ca8ba4a0d9b973364f3171054d15f263cead681ea552215a98185a709ddc26f10418348abf9539b29e63ae4b5a4d43809f13e41c4c387c512aa499bf367483a2b73d288a2210dafe969b81146d96231a818ab1eae362f356da935024d56f787e61a57f086f1274fdda7e79ad610701f4a5a1797f6fb357e25157481c8612b54a605d848a21e8f765c89ae02bfce2129529dcf4813f4ba2546a522b8488f8521e700ee6b9c1d1ee0432c6c1e8064e9287af38df9fca9e73c58f91ecc4ac99b07698bf10def006ab078a0db3311cbae04f3ba5698ff6b915cb567decb1027e1a4fa537a160663d7f2cbffe9e57628a1ba516432ec019d87bf9c3822dff87ae9a815cf7849c38f2b2f7f3d7569ca892a148ca0266079627eff0d950826bf31b07b09a1af1573c486ba8d516438dd9424b41531010f7ac106383fedb241d18801e456102cd1a8d701bd24fc45012a6cd6f033bb5096aa2ae2908caa14606541179aa7c543fe73341dd6c7a485c01ee0045e48719074621561ad156a3a39bd0336e29998110d2248149c592ae534ae310d2ab01d08cd73b420bccb87669f07ce9a3b2b60afde11bb750181bf98dae60e2c9dcf07d8b3bc1161a886c823509fe5732fb2174448dc506195504d0c294d40414f135e651f34e79505f495f30956c94eab92407158d9d2c4c12dc9821b960516123e98362a0cc788abb003c9442e219ce8d5a2618412e9a535c79f94264f030ae7ceba95c126460dc2057a3112456746e9cff4293c37d07cdf9b1c5d2569406b5aff4f0aa14e360ccc460676ff846c52244177811b5a00e1300a993baf5c4403d7eea37f561a21a04dc63cfb9117d2d17859eade0be2924b2efda50343b4155489922e3a254ddb827a1f043e2a1151b22c166d16a4cbf2d0ce576416d7116aeb1c98c78c8e8e88cbd546c77d14136ed5640b51fe0f8d78fbccc6135a810fdb0f42f4ccdbc40a3fd42a700b2973d4d6e16a02b7b890095288d174578589ee82190d03411b890ee19a70710869fe8f0b726bb0f795e0779700b84d2532fd5d3236ae2a69e7513808a701a686bc76a2c2304b99a83fe4997c6bf6c897a743be40cfc7f713e607beb5bd791dd086efd43c5a7df46a3d2c8bc1f7ebcd82c795493f30afb19f502f7ef745bc464e2273d1e459a20f4aa2b7cbaff8cbd0daa4f54034305fac460bd099d04fbf28c6459ce49c654300668b00ef617c56aca7c040ffad4a26d7751817374fa59093802783fd564af63e5ea07619189a23fce81d5d1069070086561069f1e385876f212de7b37ba026a578f997fddcc55ab2830424fb7816fd41280ba5d45e980e2894045a2f0ef319397ebe936fa1c7cf11e4019b63559a49c0c4e3eb5ae211cfe5700233750111976062a009f8f083b62c08a922e85613b204b54518c3e714c269cd556a8576b9ff73b2b1cc3173d0bf75530ff5d16ab351da11cb22c14bb477bc4ce93eef1e3af2273dffbf1cd5ed680e88e83dd531f929826130005166faa2d0006085128f99c3bfeb4fecfe1ccc2abd45d59f0a264f5c026ea93277c8864e4307b7c9f3fd4abe2ac49df9d46d523ecf040124e6cfa6b20b872158d573b366f9c986620bfe8455f49c203a5237fb153881491349f2255d5429ce79208505978810824127450743ae88934e08b77ef91cc71fa76e89d75fa89b4b0b01b88d1579c07f64f27967c9c207a76efbc052c0b01c4d97deccf3137f4a36b9e22014b4021bb7b77687fa6508148d64c8df9d0e4a46e2f34dd2626e472685ecdad53db10792cc139b69b46d1c84e89f2f39641ef4f529e48ca89991b25830e35316ac49ec88935ea492883367f651ce96233e8de85541a4172cdeeaad54107d852822901d36790ec190451c7e8949bda91ed1cc5be23486b53f7039a7a7224a64787a1ea61fc2737330744d0f60c0ab29dedfb75ed05707afbed19aeb4532dec450e4ac12807cc7f1befe2f7941bccb4b4fea3b7521d58b4a0d0b3da215f5e7acbb48670ef6b955d5c2d5f08145276cbfa6c045458121d411c1e439ea6cec25ecd42c925a50f97cf86035fc93ad8e3e50a574d1f0a9675472dbc60f819737e80210a65c15b637e93de9c8e1081add533b6d06fd89ef6801f412e8cc20ab2dcf6742ee589525fd8473a8c1bec55fb2d5b798c4c11acf9f2f09a99b529db22701733db44cdb2c023e916c0d3547b478e07a8eddb98f0f446a5dbd474af48091c9bed1c89ccd18e0ccb2e91c6e2fa456d0783999b82fd8f4f6be9a538cececd99115c2a15e6764ff6baf260a2c0c0c410ee23c60b31a58f6dad1c257037a4ab8b80b0afc0ec16423200692218c1b97e2c4cd71d1ba4d839c7fa9fe62909af5c135b665cb2eae74cdc8d26593a974c4d792f5ccc64d0d0eca2a835a430c436edd554d7583ae0334e3c8ff3428b784ff3e6125265bc2053c22a9ffa70a530a71f27df6baa017a87ee0135601ba925e807795d9a4c04cbb9a092980802f507f14883f408206f7b289cb3cbd585fd14a2bf6b6673ebd6aa5642f0b6acc2cb335e50453e4e87b4256864f860b84bcd692d9567ceaa0d4bfd67b672c2913cc220a13d57d94e431217833a1ade92be9f37201b0293781ca26c13c6cda83349c4466156c04c9a09610aee1357921a782cd2ed234fec370369bd673cab2f746a5a52bc1f112339e65f385646118a472d50aa06133302ba5d24bdc4b423dc7d3e4f59193c39e255fd2884f88b52bbe44be742fa43be47279b5ef015b0c28ca1710230cf0676723eb607bf23ea41bc738617d391de0713d37c4210c13d8853b9b2debabaafa5d83900c3e41ac353d14f58f51e10b8f7f484884a100d539d88fcf85e7947777c0f26de1d99531b32a4fb8716736a1a79a9d29d721868a785a7df269f6129ebe098f7c9d30e5c2387ae1440a5829acc0d811597834c56355f609428b27c1be28742e6e417ccfbd640e9bd74677cec21c49963bf6a8897fc50dea15e57b7366b25a3b1c956f3c48c84a031e2c0ec318de047d136f8b6c16d0ac3b0ea1591a845ea23f29e048c2fb0bc2db998477c7ea02e165d6cbd578ad5970026e246fa82e3265e1608b1a75e9f73faa85405d34f66e5740fc2bf40025848824bc61c5ce63f582ef59286e4e49b369e8e384cf3fae408bfda23f3b54fe9170ab6c6e62ce11c67acd376741bc8da13055efb4aa63c9775f9f4e71019612661869ca78434b7a51843fc15ad0fced3da05ce1167712f2c9ee96d4771296586ec616337dac9321b429ea3b12899a08151c0d92678e6fb6c060410d7f7e8b13b8d8af6d94f89d7b1a1ba9683b431dcdefdcde0c289aede520873648726a729cd0f21d80c493ebf8cec0ce9c9236ce2844e46af1ae37d19acd2cac3ad3bfa688bea3390645b753c0ce156f3961a2840ad0ace9ca0b3fcbe037aed14870e1dd61035895a47f839a4a13493cf887a6e6d0913de36289fd465a3e5fe326187d152726f0a38cae511152de2549864d46624242086dd5cc30ef30f15172d095a5eeab19834ea5c9cb012944542818056c8f79dabf13d4ef441c40931c488d443601b8c531b3645ebca6e8b82760bcce8bbacbc5ea120c604534aa3b814a32c9c18746ff3173bd018a038e44652c779a361c6d3526757d6d477e67ce52456645278d2403e29cceef6099d3c858a82bb379bbb228058e00f91af83f09e69b3d5f726585b42867b5cb5375c4071491de02dc612acfa0021f022c669df8fdc2c5490542a9af234ab8b0a821c6083a51dc005ac2121afcbe74b226014dd8c5a418344d6b668dd484b68802b0ffd409272ab40f2c13e39375b34ecd802c2ce951c475606596dfb24c4b398b6a1bdb057694b546f542f5ec5cee17d903f19759b5e2c4caa203672fa6a4ca473a92074973f37d025563cb22904a7e685ed3b6b7b9ce1f3e41175365c60448e436f9554d7141bba9526c4746c1d5160970600e885a900882470d50d05048c19d784ad6d4181ef1ea056217c19d1220824f23df3d63ec3ccb7c302a938fceec243a7248a8a34e54c4885f85458174106c8d70c8e39b993b82b0a5aaa92d91a5bc20e6993cd08c66e91094c539239f83a7f22caf372840c192162ba2ba26caf8599b2b23887e3d821ee0ecc9cae1f5d821fa04af65f80bef83af437ce12973eb32ffb0338dbfa7a0b90e855485859eb9fe74a16a7ae67081acb31ae3e9f8c53fc88baf87de604d0b8d8a87f9d20fdd0ce62288be9744643747170c2a3fa36e1a0f010497a020621c3f452e776e09a687559b5ed7ef639f853b9d5fb6955f0c16798a263b1ae3e7e562871f51c4a05e3c88c6cb88156af805c7143cd5f327a16de06e95d0c02169cf451e40d0a2d8fd658412cc14fbeebb6ea35146d64318d977b9d9c07fbc6e5e932a21b93d570d176643de73cfc4fab45a85af58bc53bbf929ac8518a35ea9237139593a9ac0dc2e7235b48c2c44315ebd48dc609f10ee294b4c5f598c09a83348585a43933c313668b3d0f1be6088341e36f6aa405763f34be1883c6aaf0f32d177c958bb07391ed5afb3880e88bea9c71fa0e602c9bb7f0ec8e239d039603ab465661efea506973b299f091d58423ca464206cf195c52692d3b250c6a2e842fd22c6e27f35227ad05b9c259ea730c185dd31cbd859a68fd942be08789333f6bab04aba811b30b7c98385a854416c6c9f22cddf5f82f508f884f8ea425cb3b0af4432932eb8f31f095d6078c78696b0d0869c5b819c70067a154ccb018ec55a3d2d1f53bde407b1ab84da1840ad05c0b738550da6d5e83a59df92c7f33ef86c1a3d6a3b650b81103e4fae0708744b22fae0354efed2831cf6b4631ca2717a903345b034e9e12b300847ca0248320e289d5fedd15e09430fc7d3457ba36abd3f5abfeaeca2b0acab76f303433c015700d56887141d79dcf3d9eb49023004317868ea2408a23d8090f98c5912956ca5954d0c1040614e18671ac78cc4e373665760b314a877fd756b814bd07d76bd3f8a734093bf313054410918c8e1cd95c752d96373d6f3e10e7dd9403d12a451768bd93142dac21b69ef024c53866fe8f592c5630dcbe6740d46d533017fa5bf660f482687780aa954aba9f1a25117659721bda291465c845f00740dbd58195c46aea400ba4d0a1a62c5294d4b76d8f9f95a78202f6754d5cbcde0dbcfc8c711a42e9b6bf21b152ae203d9919db0c8bcb39d029179b39607dcd68d5dcdd868a36d21f5816fc1597cbc5e7c06277689aad889d0bdd0190825e1a5c7b4a314b69c7a784d37808c8bbec921740f01a4413d1c915b6cfe5ada799f9390373d413d943dd6fc9de6cc9c8c462141198ab46d278ec8cfa06bf8b0e7dc876d3078e41e9d420d506a835a289c7d12444ba5b39498118509a442d64f39f5b1daa2ec1c8ca89e0ea6d92377f37e80e540210592de5162c445ae9ee7474d4f6f0f53446f4df7cc8080bdba714b06e741259386307e3d043e07cf04afb58245565a362bd5c7c6fac4687306d161d5198e5a38295937f12491fc18360c03b5964db2812448b4cf476199c4c29c5ec8b365d61b7fa0b052d29b8539b5c4ab3f007b0c3c8eeb01fade01661c88227d766830c397aa29a8bd21d984e3ff2a6697b72da6479e5efee9dedc4a23901c060822afbe5d53cbedb819b98a1bda6572eca5964776842f0901de4b96fdce5959cebb1b90a36e3a01841b14d22b907b6277d6b12ec5eaae57ece14e273a8ec48c2d6af2776fb5c0f34b33ad93e4eeceea29228077bf0a01b93a343ff071f79e745801d53b75e4bad5543df2543bf289ba79290bbd7b8f154a383555b8fe6c6ac92139c029530d831418b63b59befd31f2b21bb3d3e462e84b424e1a314846eedd27c8640b0bb0787db719df82ab39b6e6353df5ee8a743ed907622d2127788f29d4082f226500f8d4ead56481900fb57f53d13984dce048b5abde0afa08b9724bf076a04b10f2768a3f45773b2421df72b03531fc81851f8da437e2a65ac880a16c405457517c92f70f896bdaa1228d73b45920e1e611354dc0c41592291e925b86c469783923032ca8167be85ee32583c4dff84e0e3938272faed3846ef0ee70185ccb19ad8d22a9e45e8812af04399d111cdbd0133046db915e06ef5987be1a280a0964e5ff7da00513d79ef6352104d6640ae8851a7af147a48da85333383c1d402fd8755df6e209e4fe835da1636e5c27fc9a938616459e3c1a907f69756eed61f7ad7e36ad68a2fd9ef1d95c7d12fb186df7a45da00a52afaeb146049079c87f386c31ee6399c2dc23382ff83c38ac1bf830e7c04ab78aaf168c90904f6533c0e303d3ee19c01451c4ac0c0d19632ca3be110702e30f8ba21b8f235e729c56b0f9361b0aaed6b9e209a8570050fee8efeda96cb469f6b5c9f9b9a45e1c18e4a321877278fda24721db15e7e3852d3a08dc59b7be77d101fcd0fe6bb89ce2a119dfcd0c2c69a37d04fc0e64510bba6c90597b50ef0813171c233efc65e48d418e36fec8dbb52a2ee8591c1c6ae41ab2d81a176f455a6beb5cd9c9026b91bff57c5cede5e4f318318e8e1c50170bb52a1026e480114ea1118116bc234134495067139b1b0416da391096ef0c97aaa3ae504fe6dd58102fcbbbe18d4d1472d8387dfcb70acb7fec45329093d7f0e9aa4e54cb6f71de6d03228f4ef77a95569838e324c59012d3eecbfb555c3de14b535cd3159cdaa2f850b7a895dcb4e0c43a2df0220f6be7a366c8d969d37a77bed47d224269b3171135c0b627eb92208f73a901d40238b1b4530b4661f1905ef52b23dda42e74eab5709110c1d7816c71c0666c4ceb4a2bf13fa5cf0fc71627c880affb4febc13feb98f7f4e09348e11d1e12cce32aa29329579629427c03195bfa232be6553e65ff428684946b271676664c2d0040a5dcd14fcae719b257d98a06149f9852d6a6f79f1e2d1bfdfc00d490d34696882fdc2465a02d261d0d96bc09ed01267ac73a6d0ccd10294d4729887911dcd60ec6ff64636e14886e6014a038d813a39a22f03fe3dec39f91bc63d514e7e03f0c5c75f43f96a47ba241c73430fd0d80e8ed44d286a86acaa8360863aca6101ca16d18ef16dc4e8e0088bfb615a65b4a7670b62991a5c70b1b874b999ca49c7e4c111b8dbe175374abcf26ddd10a8729bedc9992702f85d9f8a544952d121829113c5ba157c450c4858d28ee2b56363ec9005aca25e7455dcae7a2671b57cc8bb712d7ba5206671b80c6719c3775294c2a594a00ce801c29307c2744c5f3adabc55c5d4a3d1825d9f278d9ffdc5388054827f690a516e63419324ac481c70b6507089bb224c1336880b427fa851fb52cb38eb2ce7e7a3d5c181ec820bc206943cc600af39140b3596b65d5d026736e19c7e5ec8b15dacfc2cf7d270f0f8f9d6c9ddce557440f11ee5b6cbd7e6aa5c5a320bd285b13dbc7a12634de923ca02150db1b9d6669f74ffd73c6a5449c682446bc6e5c441470af04324c9a781988de6424ce245f32f06b27fd72c3dd48943b81b6834f9fb8d208c0123c8ca97649623d330bbdaf859563f5ece271c6b3e34aca07efb8a73431f91be8c118282bc408999d1e35518e0c232c10bd6cc0f42dce37275788ca1a22b17c0237425edcc37867ebed18d21f80ffa34b3f066d706c5331aef8f03062b81ecc0c7b9cd1e116522a80db81d216033eb548e00cca0597efb14f0344460346998b7f97006fce9ec2c5f2eabbebfd13a8d640c62ece6ddddff01353a1ce3d15a92868549f432931fab906c542ad52d8855f18c27e0e0acf783c7fdce3ab8efb8282a79aec812a7018a6ede2bc8544421db3da2a539db7dd8e6f5ee97945a16a825e85671ffd0ab55ae0033bcb4fadda3d11a4ec603f98738c6064b8b29d5c55458aa7961ce0cd5c7544a04ef6c56981c8d68f4fee6c539262f18c5735dc7d91617895589699e9b78563d59eb2d99243280e16111bb6d6ad0adcf5bc4da8c7401b619b3dce5074fdc2859eafc6b82453a7dc234b2c6a7a1e885613f2d832df67d59f0ea1cac0968ea393e0fc0756da5849562ab686bc6e826299c69595d2c9b232372d74425746a132febd97f9046480a41821c8e297fcdaa4b45f35d92bd9aea94dc86ffb2f4c41cd853eced786c823cb70471268afa88b850469a9094dfe99d0658826c40768a591bd0ca2d767e97ff007ea80a83571ace75d22951ee302a3d6da7b18b3537ed4dab9eefa097373f12402a0b3555ff6f207481aae94d0136c4aedf9bd92172480e450d77a3ca5faf9b28cde05c3e21f0f022b6b2dd77acb79b4555372a0de65b7ec7e7ff9baadc4cecc673877a22a8da6a441c3475fd5360d53fc84051c9abab2956fa1113cb816c02586bffcd1b17720e5aa81c5886157ee11a90b125b19ea3341e90f34a972c604803af97d0a783ddb30135ad5c0def513200fab409cab9ab87313160f3191dc3f88551f17b1394ec8c61f5724239a5f6777e06a33d684e765e4d7be803a80214cb387bee60ecd76afdf45964a567e197e66908bbea15b4ddfa658fcf3975c85df0b7705b6be1b0399e99ada7de5f2da1bd38f7e15afcfe4c8e5d943f45a23ca1c1ef866854598aaacf10c766f2bf40feeec895f9d0b0641fe9857ba5fe16659bc058832879c3cf1902bce15967c174a232734a8c3ad9ec1b01234a6c6c545900564e0835d15b285cce8bf4dc5a351ec21fefb98a618fc117f6f87dcf4ecfa7d973be218a880ad6d90fe931002217c611baab9b9e9b3ed3d0b89010c0e74025e78164870941046f3a4c7479624310e82aed365728fbb2fd474cab51953f50725f4a63f21490001149249c353cafbc1139286087365c7c940754171631800415c05d4a4b90e78e2f7efafdda60c0d3d1cf5450c422deb2d8b1f8f27f35b0e7a1c162065a2bf26af07be48c243e3098b18121f7b790214caa9e2565c6943452fdbc31e7b94a3f8dc785f25efb93a083db1a44e98545e7e0585b2a9cbca5212fa52e871ef2fbcfb0cff45a70414248afdb39273b279f3ff52f177230a32eb668da86d21ebf485677b3ad057b1281ac39009079e15646cbe6ed982e9baca17005eb2abd736446d577992a89008fde93fe8e970d46cb2f4965c286d48b413ba823d93e7ff8f8f9fa49171bc4d0ff1aee9c65f611320a191dfa51410747319f64a4bf245390caaeebbaa5354c8991adaac9ad72a640c9c16d8624032062ee0ed45ba96e5c8c1d5f4ae0e91bc552d3c8e71fdf1fe19096a132552b2dcec22d0b51c5d7696cd40cb2b285f48aa6e411c2b406902ec1a15f36b424f4026bedd7235d275b231712efb977bb755752a2e33c06243ea34f374d44c08c49aa9360c8599c2415ea90f39ab07b405005a60a89d7a221a16b9c6ec873f3d21cf0059670df33931ce04a815b3ac36b3f258b9b40f2d0140f7f60d07a5a7f96eb4132384fb5279af08a6d6a7d9d09933b3549fc49a827abfc22eca5ce2d283504058259a00a47df2c6a988d1efde0a2a40230bdb85a9f467a6d635fa45c686f46580db76ae7c3c03245d58ec740826b93940ad797868a64851f43e56d286d7bb3d2089d15a6f4023e295c6034b1d4d741c18e205fb4b098512f2fe4a5e5f3b1f5eb77fa6018877dcb40efc8aabea32cfd97c357d3b46b29598bf4f70381a585da15611b42aff8a81d570ad4491c4b8aad623dc441b01ef042d42bb9374b45c2d6a6956cd1db03871aa7a40c28bffa89eb3de4ad0c6b1abd3f24289ccea098a575a7322cda1d6dd6eb4ded19064ed3b138283062d3f8470737b2af05209a0433572934c5054094fdf82c4d2761200d13bdcfdb5d22955013f886d119171c5e40a9f8c6b506249f81b61e0d5a518d17831d185b15e7daa5f8a1be94300cb8900d7ab81a63ab71fec4e43d9db7495e7f80ce796c4e6bb1593e151e07de0865b9e6bb8ad2d6c1dcdd90130340a1db5ded669029268a0c002bb989aea84dac1251d3d040e184f8fc20245ca4061a472c93236579c1b2fe8395fa1444631d88091379856716be49dd80993dce0dc87ecc1d7e34f5a56cddb2533935b09e5f506ce93acd88801de0c729555baa06847f1f45c2e281ae8fe2594e963b7425168a3d707b321630497beb007d390e440e5666ac628efc62907684056b5c206b18e57d2ee78b5b7a384b7a342bb4eb3327d28c537380b2a6e8582864e890f2900687512eff6ccd78b805db4e2c57f0693bd6ad1567f28a77d782e20d65c9890fe88c9206c76423b1d5298f458a8c4080e6907d213d686f6017a201e89964a4590c1b6a771e7c42ae7730edc7dcefe778855cf5ca930f7714a1254a81affb46669d8216ada61e1bbf92b86ff2580aaab1193b2f0b256aa2d91825fb826241a01587be247ad1f4c9a7a0ed89673d4a2bf4de682d24fed726468d1079191775b3480f67f2fd827a3f1b3808b57a00b533dce1a468cacdfda93716540282ca9d1fa6bde2b5c141aa3db788bc1b62c79a64e4bf2d47a66c20e98949b88f8570fc319fad6ea4118474bc2a75e44adf5474f218f9ce8c7c3e351086f4884feb9ab891165774ad09e038de39ac53fa8df8ca1b9f416a3d87fe3a2ce4f2a94bcfee93a5f08109ce2dae7bb435f52983cb1c908bdade8a5138e1eae63db3370e49d5046594f9a3b8e22560f7ed02382a5f34826d427b9fe325b5bd4b341b816d8c490f6e8575c4dbdc87d77dd63f0b9b85d8470f261e79d453c511c54ca6c74c1315a2575f26e4f68a6f69769376129b63f11a533e665ce8dc696a012f48a1a21ea8416ac82146a376973cfcde2bfcdacedd58d1536dfb0b8f5907e277a079e6590f6252dfb3af23c278f6f21eb956689bda637ba264d6a7f098a08b059844ba21d26d8768b991d9f2bcca2a0208a6c886772cc92bc15073c2ae8cc5bea3b42a8ebf3cd329bf1e85f47a766274aebaedf91cbd4bd27010fa3fc6228c5a7b0d14fdce3eb58cc273bc4a0f28e980ecbe55b61952b09a88794114faaacdf0f0d4010d5a74170132dbb912c83102d8ef8e17ade014bbb5baac4476bf4c4a7c2585a7ab4e1672386b45c31b2fa5491f8226e2da6ec42af1a98fa84cd20f1c2d76bd6539cdf1db1e34f27af906f358bffe9440f45b662d98e800e05c3f5157526abdfe90c329dfc44431374000d1ac51a745e9033a14b223d0cfb178660196f6567a75b640c3235153a9fd33dcb633cb5c371c7495461690e086c1ceac02226f911a58a4c2c06b13b06d32ed0bd68c0835bf167b6da62e850e7f233e8be10e1c70a1e2402bd2da4323b0d990aba4b757ac0cbe34c790f020b59edb32c1c64e912e211661ac4a2293b441ad3512d582bbf102ca14805c39091cdd698eba6e15989c85e149b778126e5aae412959178c9e0766338e7f3228079bcf1f5299e80372c14ed17a0a70d7b40d68c7e4be64a9c113b198f7329fdbb46aa7ed882833846694166fd08e531663f9cacd7d08cd63f442fbd82e073a762a888ddf80d0db488fce1f59ce361197c86b66d041a026270eab9b77de0e0655f586ec5457189f9b9ef0542a4605c3f7cf0f88c59bc51e8398479d3ded603a5a8abbb4599d176eaaa93108a21e8a902384a5731682cec7c301a6209b0f1adfa27cb1e64eab47629c08bf50bc00e5763fe97f44edb8b94c0082ddba1c057aa72fedcf2abe127c07b4f804f46c9b09dd531cb6f70c4bd3087a201beadb8cb7cf24a3c8a302b49a0799df8e55601a9b81363abef9610f8bc6f56f4760a8868afdb8c83c0488767f2fa524513c441085f961bda074258b8770246732ae6a145a176250eab0358840c858cbcf52b8ad784fe915e5a8db7648ff720a30466161feacf0ea43bf5c6c71409271e5a9b872a364d4b7fe52774a092f3d286c5c45b05cb52b4ce9ad86b88aadcb9e2f2bef79df4a55366358b920a4026fb45d8be527d8824225bed0931ebd46d1cde8fdb6b75454e35a124a438cf4788412969ba56d791691d2f4ca7d3e7b9df65db223e85c458ac1d8ce8ebf7477608d4fc52016fc828b6f5cf27ba6f67b95d278c5dacba0f329f1b5b90952d8c28257f031ea61a91f68cfc03ada3d771c8c24a01963730ac696c2b225e0d582c488065c69b800dd8839545ab7b30eff80d9c7bad7f112bc3bef3840a2214b71fb1a45877a11bddb2dd4fb13d6f6b4014c1e3c58f0ca6b90fae9a187e4968ca8447268bb7ede50f62597c7a01d941e0f4859892498a816c6ecfab130aa05fcdf9ba2a4f022d0caff224728ada2cf1e97f2d51b8d428cb925799504ede65cddf93683735c23084cc357ba17dd987a528afb4eae6c4191b9c065af4ef7d35f8f005895db0d56f006f101d053f361152f16249db0ad51d80bf1843125a70d317801b2f6686a7aba616a4f26d37d642cbd542702640a674c74eb2f403f04410ab69141304f05e095a9aed0f22fba8537a941641fecd312a56d461cfe7d59ea91ed155398b101bff180389e9e2e5aab447d61f6bcc0d46ec49227a9e2db652ac691df19016b38ff4cf92582d3a727cc91ab819553c2cd56b490595a0552fa9ee623e28a9d7be5d4a267f1118953854b4ae99c60f6d4e51dc5782e8ca19284cd527f03f6d001edea242945e30ac0a8c92c9196a2079fa23b52500397837bfcabbeaccff9e6cfe634bb4df58a779e500c640ca655a76113c8b0086329c6e88773ef6c624b0c230a581bfaad282f3a051944a03d56f50fc4f8a010a8b31e28ddee782ed541dd8430d9bf938f7f1dad16f4bac3c1c40085014edd1c30ecc984bc4b352b8a343a298f44ada44a8e4cb84d50b7e21874896e38f694d028cfb746e157eccd4bc6c649bf619e6ece0e7c23414e9b4e3578668b671d0f71254cd509dce9f1bf93b6bec908748c308d080a5ec9b4a1d6f3837a857e31afa57a3ee548bba4923dca19a1e952bc999996b992db34e95657676c0e91d722d637aac04bcd833e888f677aea47efea7c33a722ed8694689e501d2866749e145fdf6fb822e545422eafba7aefce980ddcd04c9432dc0b9b557e26c9809c7047bb377aa8d83a2261deae2f05535d5560dc7aaac6c4ab5405ce4a43f1fc42a55bea567e433302c0fcebcd1fa7046c06c0d85320673447d2d746fba1252e87fea289e816761763c6b28226b6f8112933cf0798c0cb3c5d26d413d83bc2c2b7285c4340e295691b86024c69df35af939c1a22794a1ca266d8a7fdf96b8c59a40de649e24b704db1e5a0744233cd8ac110728992670ba289c1de9bb417d8050d645af237c9916e682d0957a991c7b29441bdf0df404729f41c2480037ad95a8427c87230195eb684e34b8a3bc8c48d3a85c742652427c61b5f8b876235074ae9441092542745919200614c908f590340b40540db033ba56b2c67d478d2a2f5d3725eb5afe146ad3459234ab609be3ce4ede075ba34e58f64034f063589c26a0e08f747182ee0e655f3d4921ee3eb59aae100c64716b1789ed2f1ee4c1330a0b03a7053f395bfb383228c36ea5deeeebde2105045f0f12ce6a54a99610e51991cdc542c71fb13fd1dfc22d5433c9ee4f9bc196f3d282dda1d857f4d1f06a113f1d5972036a5ad0982a1de39cd0944f2783687c55d16c65af39e5de005b05d8e3e2da893bc9f9416f64f637cdec65276ec0939e35d19e39a7a026a80e94f3646c9a1e021df821ef694bea79432666ebfc19e0c11fe899e25c2ca1a6c935129de3d4e303462c477a98873541f0b94a78fdbd243f9742fd22d797a35dfd2ed7dc3687214629d5de23e000ce95bdf85fc839dd916411ec6d01a93844dcae01a646766749b43b3b5d282dabfa45c9195b463eab260cb52f2a4646ccd3cf4cf61c40a1a88e60f9125eba2e8397bec1144e0092dd4b3bd9401833e9e7be9565020eabea6b3f20913614eee5b5a19abceb34df1ddf5e9972b27040c7b964eb8991de78c026bd44a9befadba4d5a18eeb8849e97b62b46805a993b6c9b72ba92cd93926e543e82726c0b8e680af1024993fe2b79d9595d2766428574b088db1d82e72c0a71897835798d7280a7eec5b295a0a4b223a689963226ea4f5a1e05d2b2fcc8d98e567fca2da7b71a4e1c9040d702444c1c473a39778364f6c206f0bb84f8f77245ba771a985505209dbffbd4feb7074b9cfa98eba45bfedd3653511ab1808d6a4f191e5522715f0114c6fa2b7dd23b420cc0e7b7a47dedf2309cfbef979045c669c44c0d6c13d74d3764005388dd376c9c56510635b0047baf44130b777f8fad73a343df8cb85c7a485e557efb9d8b700bc9c07a62c484ba1a39bf0947e9e000a0d53a93d28ab2340c5811195c4993b8204882a68557d60954d5ae2122bc1b33278a37f1e9a1f51c3169b5deb56ec33f07114390ebaa77f255b864af27828f88dbf840a3a5a96d89f4b196508301d4fa755b8632101e6739681efd615172b0b66eafbaac953341070f77fa1438d80e07d82db4e7c994c88ad4423dcd8cfa8441393b82670fc0d7c48cdffb54f0740208e6305fa1a5cc4686c2bb65716fc12976aa4847fe30eff8cedcde05c7f10b0d6795926310536cce526b528f0bd19004c530c2b9eb1bd118097bff4c66c6a160a657a4206e3015fc186ed87054f941b4c48a822355e3d1658f03288103f1e35c2680960d302c20d955cf9eb007a59ddc9e76decc293242e4fe115b6afde27f68744d837288aaddef99b2a7146ab80350095c1fb08d511f60ce99db976a18d16a177fe63fc7c3e07b5e7459f4a29327735f5777c8e5fd76079c3c84258a8c71a1fcaea2299f88f312e40c4a68c524e20bf20b6d1a4647f9079dd278a45c24af3f2b42e3107fca4c1f75c4116924e9a5751ba1d2f952c81de6844f9168cbaab54e3b903526d12ff151ad9ed24b06ea55b2fa3402a3f86b8b38d4001828819f20669f9d1ff62aa30da532e99866ac3a1590f82c06a312eaf712b1528c498f48a986169bbdc8d1ba0ad978915ae71f45296d24c5c5ce03bb0624e29669ed51b26514884ec35b6ad3085e1103e580308bdba4c61a8f86faa28ab6689ca481610a2cce996662d3e3d601ca4baf8d7bba1268b7c80afbc3cf7533fd3b72147eefb0a7605a4196793c7d6f2efd1973989927dd576bb389f612bd2bc3e3408f0095f7b251c7066b9ed57966bc75ac87238e0fa50c4478c87ac690635f86450e62175942e6c72988a698851517e8bd5925c29dc076b1cbaa86a3cf69b160bd26faa828e82a25f4cf19b5c5a2e80d4487898cce0ccec480c014e16e77b6d18112d71c7afd238f0babdf46d3f23b6390fea63b94ab6f00a5b2a4045804357278934b40048dfa7a5f0527f7ae3e34307dc5ddafd1abecaf2869f5080c888f688a5e2dc51b8910731e921c3dc1033713af509813b98190428271ea8a0cd181c6dd97fce8e613460b86d1259fcad68d921ceb8a95589ea7e460a427efa349ccd735810ad9df93ee33fd4334520e6cf7abc8fdef16ec9c3ec69024db320c6fc5de12beda6ddcec8f09ec03519560e7d34cd80a9f55dbd6d07c553c9c71e6ee4a9ee90e636990b21d3c614c478a8bc9af4b8552ae1484985b7403eccc8701b4abf746165372dce7a17fba500b9a2fc7cb3f174cbc132254ab504cf15a96948d8f3f229c06759f733e577e185f28dd19c85d7ebdba6e68c3c2784307e5a30a4b36cf302fda396b85d5c405e641c600105140530228e426a0db3d24dcb4b435604b19352aa485f9e2c48eab60619f364b324f6a2bed91a8fac360f0b503f047a50b7244a248411fe93a2be341e46cd92f1c15c8e83a8ab3448f2bdf6b05de35f72e87d88f556b81a88dc944f551db23ec05b72b492966fcbe142f875befe7896d6fa705800b04d4eec655359e724bfcb8cb561debc8103451f5cc87b4c0551da076cd403432accb84444644031044b00f975de1169c3d4e36f79b6f0d9a93f0662425ca9430e2d2c5988ffd86e274f913c0126e83a75d73bcd2b2461f8d757002c6d1940afbd2f6be32d547059def4ebdf3bad31997b161bab86b36b84c1a4dca61d8041921d32b039bd5f6781b215c9e64ee62ea6f7bb6d36b2fa088451318fdf108867f71e41598522bfad4ae71a89b10bd675231e9c5993f0f030f8d2c5b40b0decb3d3294135aefc21af85a4a6c0b4ed5e825878e8f607e5e4a3805841447e21a9c113026063b813480a1ed1b98d91b4a0378f7374be58582748203b693e0a23471ac57f752073b0541a23f2cf41aa502091b8af5b1c7e009b311b32c6839550e796508002908ac2af0d13d7c83054845dfeecbd547f9994a5e11aa26a95440265ce899553158e70ce928bee0a20b0967adf0a2237592a8be6983e0b00ca59c27750c1302ee72b5a7dce69790d89fcf499c89d9f27dbdfa24d2552429af8d0f2850d887b7b41474262071e6e36db8b9b9972834687033892dc41c9aa10c2fd6aeb430fc917cebb333cc8112e76254c4e6ed350b84442bed1c3882c265bb719e688967d7f602c335b8a9000a6916627c62e8d4596b93b43371bd3e7923927de27a926cf9c341155767def4e16d4389f6661f6065572d01931729405289b1412aa9fc467312e5c2ba38f9d3e9b007a22f2ecbbb5beb5f494d545441fe7db2fb0d14072e7cfe835cb0173b3ee8eea39e4751e8b055f836d1f42c729dd8d8f1b03da419e0e95e7e6120b6053ee1fbbcb45e332f39e2e836f0ea10f0f54031f61765a22538642d9178fa37f34e6823cfe256fdb2619f3cb870e2f8a44723e6035e86ba63bd95fdfd1785de7631a9983dbb3fee4a7a5f13bdf476063f23f90a140b127a442bedf025697b03c3bc69dbc79d234530e3e2d66f742c3ec873eefe2154818a6e2c4dce8e2ec9a264a90d5f74728434f8d6f6055eb17d062b3192e64ccb45c2ad490317d590f3b56f155aca2507876ccffbd82c3bee7ed03f7e0b8cd1e0695d683b1c38842f4c03d074ddd5c4247c7d36053c36f8aa90beac9ebcb5ca72d5564dd37d709024d01f330d5d07faec0e61a6bde9932b1dfaaadb03b7a70e5beae96cc9a98d9150cdf696a1f5cacfbf7bd0aff63d018e0e0125f64a5e7c1749cef17498ad1146f7cc5d6804d63b3005f3d93afd63c1eea53ef5e81a42393eebb95debdd5b864af75852af809be29aef099c0b8c84871cb3421b1608bd7759fc2ea17f6e960363de3e76bd918002fef3efccc0d55c9fc79b8877a2cd2f6254666f26467c6d7f48b179852d8dd9f6041600d956cd50eb3f84fffa3d6ddc9508a86387b70aa49ed35e9ee71d5ada97f3dc30346aba0309ed53be3f48e395ec8364ef19cb29c50953f67186c1e2b68883bcdea30547d9cee29e4ac503efd43b93c0a38c4ba21a9679b729908216c6ea6071dd861c14cd0a11092c29b23f3a30da9e7a9c8ef30001a3e220154f53f5fc8c9367d9189dca6dd295afb9ea9ccc3be49db76ab3004f0e037bdd44231007b56fa34778e4d3e3130b53cecd2cd37f6148c5026bd19be2dab478fad77a6784cf9b23dbb69aa02c59cd632272fba379c8dc2a0b349f45e3902da727892ca2d12c95d0f6357bbd4d4a31eb7c533a218fbb7e52a473b982f6e128a0cd0fdbe981400d4c09de7ef290ce2413dd57fba1d497f9ea4b51cc03669c14894270247971cbb57b3d85b6072ed2048c6a5683f1c377d9ad605113995525332f7c257f619bade433dbc933d616d7ed3a37c5a01f2e91fd4cdb3b79a8370ee79d494b4a4c4dd247cb3f40b3bcba12e59b5d1d7b964b236094652d4582372b8bcf662115329c78df2cc4aa1721ecd1a487f70402dbdbebf876fd68ed027789b939e54f8145116a50bcf926983c78e204cc4b6b14bd88bae684ea8a9e481fd1b778dbaf9ae2d74c94c709e3b7109f4c5e1a3f69054c017d60213bca002a9ad0a54ff033aff969e5a20ceba9a0e8d9d16030614841c1516901430bd65af276b17d6f4030616f0c13175a0db692150b1a9e75f675757a39af35c8000e0622eea38ce73368a869b9eeb27d975c0deaea9c5b2ef8bacee670769a146a34ff6de5bca94521a0ad109b009ff63a6be5720c4725844813ac306fb239ed6af6224ac9ef53cabfa3db5cbbf32bafc30b2c76ba41b11adfef4da8ac8487c5ab3e10413498faa399147da8479944d0c031c4eafd79f1e45f36cd2d0bc8dff31617fd21a06ef4d1487bfe78807c7afbe87bfd60053e461b1c81e0c486f913d8e833cd2a6482edd78366ffce94937c858fd1f937da9e6d9ac216395fc01f4e34d37fe88a7e6a8d5e24af2b0fe06d94359244da238fc3524bf0dd8f8d168587f5222d6498d7c5a648cc7f59645c680b87a8e623f585f0136f981d0258ac3ae4f81f596b4fc1be860d96c6a5af2a26810e3861b965ca44f0a2c92b62245a8d55aac026cc680b45cffc44552278ac37fd2a605002999d5b4616cc164930269f56dae2a51ad5932c6b37afbab67f3a355a2cb31206db2be4dd63b5d66b345c658df226395f49e4c2f8ae2f0b79ed8bf55a92ef1571ccf5809198860224b172aa89062f2d7269efdd0f0c41649c2c410c68628939ff5318ffc6a5e7e44de9353b13f48494b1d8ebf6bf29c98ffab7d42fc1f1118c59fa2718aa823cf94508a091b8eded3f8d1280effccc834357eb5cbdf01b1797a4fd7c84b7e70ac4835e9b2f77499df7be2f7a2f83f1aff574bd96a7e3eb75901854501411a4209199896386131990517b8443531838a3146b8c5cbddfe3f66fd98934fbaff31e9778b5fcabe11bc816245da5ac2fedde1f7c1ff833f0853772b536c50cdcb000035900daad978d9bdca820940000a90800f842894b5b2ebaff3fe207d7e9573775796ad327eba26f4cc46a6b3e3c36565b4bebf8cdbca74767c8c274c67a7cd99b17e6a34c1f107c5e97ec74dc7c27e59db3d9a8cf9bdefa93f33eb39eae95ef51ed9f3fdaa45f680cfea39e2697dea7bc89ed4b79e5ba31d57a38c47ee767cfc08b20279d8f1f12348f843bd16c522f05319566b92040d2ab91fa88c4a6e485e90450bd078e10a15dfbc35b267dba0e80c6c33f59f2a56e49ac088a12e58d0a0e288243d4e904055e9e10a313f98a10db419212559cb2b20e5f9ac94b4829a19481c8901e801339061e425861fcc10c2ecf754a9315601367de0b8c92648c680d0073fc6937a1afbc114e7c7fc4171e8c7d866c58c3169024ffdee2bc026118ae3ff6304a82664b36204a8666ef0c4b2d9ca991dd923a3391a8d73dfb3e9136ba126a24f28c9729f206aba36979fa88189dbab20293206a401df1f71f3fb1f13246b6e7ecfab1ff4a7b602a52390aa08428d203278419231a03011f10315d3bf9b5238256c3837dcc0c506276c489a60c01963b03003989b14344c27735b40d8bfa9f123634d7e3f7346d0981c86586207b36d46b30d2c05bdd0450cd10b489278c6504564702ddcbe0c212d6161ffe2f88934aa7831c4c58c24264cff76e2d9ab89324a208104a68632a6ff486b57d9da48956bea2613b838fb7b237117e1987c0236119d81a48dfbe7bd8de7f40f9b5366f3b77fd0998eeda213a49fc9d3de532c4f99ce75cd9033ef1275ac95954fbd9e51e9d05937394e7f37c9fa698e2f6076dcf47bd94d9e932b757646b0c1fd085282100b13677e3e4f45b1920955e6a507f9e125abc99a5083fce0a14e72d3f56142bd43b8e9fedc1d77f2890783cd84b070f6b49785b3a7785b483f6d1b863dd9e9f613a1b3d5f70ba133effbcf36029b3255fda03359b7aca4373c7ae4b06b581b2ffb5bf4b23fc88579d92fc50a21f2e34312435dc410b3050632ccf617b06c6143941a68b082abf753e76019aa1c973fd637d6ff73bb4209437e18f7202688195428430d178830f96f78f60024459c518512254840c136ac17dc018035ecb96387efb85ddb35853d41a79f0b5aee62082b4dba785a030aed025fb82451f3e1880b54b0e89b10041e2f5b034c06a951c276ff0e9e5928a2504222660a166298fd3c78f663040c234861c468010c64982cc68526940001d4456d89d93f02cf0460042e8b182cd0618a2b663fb378732e84309bfe1b12f4f783fdb65fec7f13c07cf9c2850b13d3083b3ec0807117f4dbc898feb3f4e0990f8ac3600efe3f3f6787b36471225c643ada2bdab723e9ffdcaeebfedb75d775f775a44e49c798cccbee4275eaf0d0f192c54ba3a43fec87f5dbc8b6c84a9e3d95c9588b254ac07012f4c215349889873074f0a24a154688696a0fbaaf38220a062a54c00311920e4940354919e38918234afa52a6fc5039a23f1923c1cdfa33f7753b6e33402b6211290e5b8ac3339a022daa0cc980830f4fbc24d554c0240824a6319258d064f9556da158367aa287323c30511ada22842521b4e0410a2b4f4d322e5f74f0b6fff727f867f7a7f767fdbe1204c1a7387dbfaeeb44cfaa28a5a95a53a914c975ec6b57c0f41cd27995524aa97bb5da30f4ab57afb53fec87f5db502fdc0ff6db7e518bfbfb6750c50f413de800849423077861e2052e9a449173e29d08613665b4a6587ea74e965eb2acb07c5352a74e0e69a40b86309b3683086e4262890b0e379c1a391290c1254b0b5f24710514fc220a54b1221784c261b4a8420919221e56406234a420ed602529872a6048812a96019490e920c5e1eff12dbfc8ff3c7b401050546012d3450c474c7e818a20337a48830c141626bf2c05dd6a15d12fd3d9e199087e10e2cb10396861e105b3df07cf4680e20c27a2687041ed0828b4504049061b922c2ef890e4c7853164fcd0848c1b98bab4a6b07ffb5f2d30223222cb112f51380d1c0c4a96e07224c65306544d84f83ce32daa90e1a588286838d1e2e78853195d4021058b206a681a6c78c38f85ac9f74ff2018f615c55ae98d134a675667c7df07aeb382b4e363841f4134e001214388a060adbdb137d6d2d9cd8dbdb1370ab8a9b57e37a9d40d7bc0ba3dc3c34bd72153a4efccc37cfc08920a57ab10b6c33a6672e09c288ae2df94b21d3c767af8f8e1aa119cb1be62269d288a55143f2facc4dec57123ebaadc3dcf633dacc37df86cb10006a1c0512068ad98e327375dbfed387a3aaeb56ce92c74e57d67f11c2eea1c9d853f43c171724d14243a50e760571cc7bfc7676d0382dd93a36c3a8b0d187b76aeb35c7fc739ce71b8bed205cf44918cd82e18c3fb0e9c214f1b846c129b5475e42bd2998e8702c6f1570174c10340197b762e472e97cbe572ac2caaa4a4a424a52b4b38a6e6228076ea27212121a30f04bf16026d00bcb0365820f87de0501731f116b281b26727f958ca399de8fae7b8f98174d654fc8a1756754d686ea5a4552705004cdf939d4cfa4240c0cc62d2603ad64e621d7e3e37017a616177e6793a73868cf5cf3c9b3caa9f7920aa9f217d8e785a3ff33eac573d90199f1619fbc1fa5805d86491b18e01a15066eb2994d9225bcf7a20ad67913e473eab6f3d109ff059df4a8da338b9a4569297ae6a1d61a3d807fc7f5212e82d339050a01985b5bdaef342560a1256a5af0576c7cbeb1e59c993731d795a4a9e6059bd0ffcba6ec7cb1da42a6e38d90e96d3d1d1d1d9e9e1e3078f064af0801022b5b251addf57e95755604f9d4aa98e8e8e28a6c0ef039b759439ac5051244a45892ed12c948972c93951eeee062915019ca97506043d607ddfccccf7e39ea0eb8909510fb10e2ae50aa51237d7eb8648156d897b5543afe59c4e03c0d350d17df97b911aa6bf478972fd9d6f3714257595d62e33c680a41efc149982d4836f6464c45f3031643b4309265d987e7428025743d1105b5838c2f4af892db0a96e7a3212c0147b7acd6ba0ad3d400044d8f3c67d403205e01f69137c908c15e94bbd694454ec7973fde626c70e1e8e9b21b344c676bb5b157ef8f659607deb77dc264457ae6f4a64bbdd46ae5fb97ed562d2709c0a9ebbed823bddee3cf2fc0bfac09ef5aeb1c7e65d1f8e3eb1c7c0959e9ea2e8ace92cfc7e5aa3339aefe766918cc1d27c0894c187df83e3635d48f6d07c0664ac7bd8b3b9e3aeb1c7f5b1ce663ce2097f45f674b1f1880746c698f5188c3e37c27f3d0f8bf4a179d6d77cf8af0fc9183febc567bd0f0e327c1bcfc37ad17174868306e738c81b2048433293cce0e9443ee465bf38fad43cec533524ec7d5e24531b3f63da78584a05b391f2813dcddb187d8e786024cdfb30c579c96efceb7d6a9ee64f56baf1afe7b9f1aaa13161296f867426a4157bfad0188e3e3eaeb729f05b1fbe6bb4cf7a1efb2c3206fe8b45b21ef640c27f913eaf0f1f46fa1cf1bcc812de6783273831f05fcffa1848c648783deb795e640c643dcfebc37f9131903481e7f536c89e17c914a7026c06f931c386c1c823f0d97c8d2d4471fac6c8822a7015017eebe539f33ee1bf9e35fa1cf18464db284effeb7d6c1bd4c08fd37f1482efc1f739f2f7b1f1b0f7a1f9d79f8d1423c1c6c39ec706e9240f0d29f24a02fc20f991e0f3d7109c3cfb7afdb931fadee465cf9031d0714c97ec27972563dd738b8c75641193d54f4a5194aaf726e87b760ffe131a7761f61c4981b9308fc02ebab16bea9c975f723c05172e9a90a2ca1216b05471a44c172a2061454805a6939760bcec6f41f1a727571ce941cb0c581871982b4e944c191364c60ce0f59199bc6c8f6aa87ebadde077077e5771f419fc8eeca4249bcdcb5ad7881009126467a72cbdecfef4be8deed78dd6eed06e8858e4bb67df1188f7234f21d7238788b776949750e0e5d5039e9ad8fbf444693cc32103104a518c5ca024c8eca7359efdb4c04413942019b4a001c624abd0d78fcac92cab1696fcc082252fdf9604854636a82103c0e5a532b01042057a8e770f2551793b75f757397757b9ab3418b1fd345cec59f9c9cbbf8215d36010ac1f185c386284450e490081c589194a7cd092859818b26c1103144a83cd8c55b311a2d1684f4a26ab46a3a9b0052d879f902855b3d69ac320781834030d1da5dd006c600a9128b1a1dd0628d79fc6a005890a5d00252fb8ee29a3eef24dc995fbbd52f2e4365d5dbe113539bd299921242ad3185cbe117571fb555ef5d8f3bcf63c8f5ad64982ebdf4f745fb93249346ab167bd947a1e696b0d1ccf8e72b9dedae3cd7e7729154204051ac5e1afb57ea33782e33d39f09667a9af2ff20cfcfaae1a7dfc08328e5a5807bff79ee7816029d3d9a138f537b8dcc4ed28ac8376fea1c12ff28bfc223fefc8e0021eb418b30220c088e207871d6a55a61882872569e486b0704d615971848a56af55a94a1848b4784a52430f3f39a40125a87684125578a85d84706055b6a951c2deb8cc676c5e245556bbaa450c5558b5b6c2b0377e63c4a7be799cbe0f8a648c4bbf87d7d261d729fd99b5a1b6234b2fdf60605a021304d1edef0769bfa59df372c0dbccc54999296e3529a4286abab930e6d2cfe12b2a9b5128d31dec1df72ce0dbd4d00f2e2855b0d6f04eb153ae3fecd6020cd78fd06a1d2aba75855a49909637169a6a589d50b9075fd327a7f65e97979eb0749797ec90dbe2aac00d5660fbb99b0b2b5780c1539aa078b16486dcd77d1ffdeaf77d5e7f1f7fdfe72fd6d973fd1d099b9b1127ee099264ec696f46a6b82edf8ceca0c5ce5cbe195972c3245675f966444866a47653c18b7b8a45395b73f9a602ee4604159678c87498412b46edd6cb37da987b8a4a422a66db4a815dedc0ee7b9547bdefb3822f5e269d85dcceaa66bed2b182e0e7a440fe483a441cb9a828a5475d57ad74d50afd1d574145434aab5f039084ede7235d2f97812256eab870fd79ecf8f8e13941345082bf9021448a687d70ebfdc2b8eecec4f51ac8c49d9979105ccd8037da121076bfaf6a50260c4ff55d178e3746b69fcba8e0d6afb57ef1a06ab555e98c2f89d12b75c6f5aed65aeb53a118cab83628dd111baa97963e6b99e7f00b98c8ebffd5242cb8f57b241122a363902b025ed0e4fa7735a782a45bbf470cb5d6aea3b46d5e70440cf2e1d6ef2183597f04cfa15fff072da1f2a5820c926a0a32a10a968c1218d85d5e223304f6074e5be352a74229ad95d2666762c943d9b884ed675cb81446c537a6ac7aff3d7f398220bf27db094271daf47edadb8bd0ae51447532cef2c17a9797d608e29eb2a5358ec8b0120f99ce5308b359a328f7021652edae86aa41908c191e99347a841d1f5614bf5c5a03c9b59797d420a384bf9f5dac836baddcfcfe3d6505282351d7919c6b0da4018d86abd198b9b968b00107330d36e060e68da3b38e0cc32ff66c9c06b7e913e3e0e81be1a8d0a5fe381a75bd69ebe468736ba0c1061ccc1c6908880f03f161cbfc329928a3389d53f5ca755ea95c024146c71db7656deb22591bf98c87972084080a07e89735e73ad025f4077e448d32b8c51e74f9371684ae109f55b3bf04cfe11b0bb5dbef0122addb621dfd2508218202d212feb8ce826c229a24f6044fe801ea209d1d3a0375786a0ffd4a825d4ffd8e6471a4a59b56741d10b4a2ffdb3a221509faf6bb54b02c52fa6958264f1b9082960b7b96b2925a11b4b9b1a0157bb07fcfb2340011387c11a68828c2509201cb9415ca2843881620319d5a7186824a9317b2006207232f4188d921cb17497ed0d2848a1b90d2e51b10d0cd71f90634747fc9baedc13679de30750e999748d65a2fec29ebf77f99ce8e132aa8133c87fd014d29099ee065f7645064f94f86623256a42fdf0ac5da1f8a5ec8f100c4185e685a88228719945650c312938613494a82567c5026d3d9f141dd7fa8a232171b9c05ade7f019de7479529f4918791996c5a39054450b2c2fc8828c23244d48f1451a505b709162360bca50820a9317e5de93e7b012478cb9fc1ed447ab4aec811795b2ddaf2ed1d9ea590fe4fb96eae9b7c89e234af2b4de923d3d3f280411e283979cb889a7e6edeb6bbe923c3768fe4654e87a362d90d6bb481fd7b75c648cb6de27463ba0ef39e271fd8db7ff227bc41ab2e706e9b2640f4853da3f41fb6c9e25ebd974b96ade3e909ab7347fe37d5e5ff3406ed0fc8d67f3d4c180ebedc7ea6bf41be3ccd78ca957fd8f09c2be93c21a8cec6923a21b35ac9a4939387eb51af86713e130c2e06dfec78c3d9ba93f3b49f5fdba51f33464cf110f8dd3bfc89e239ed7d3903dfdbac15f43f6f412d9f45a7a35d174cd9f1df5d162f45bff3d6b8c51324602eb570fa445c6ea7f648cfe8fa932bf5f91314afe009af930d7997c4eddab664fcf669b3d8dc86392a248b016f08fbc3953c3fa79d5fb38774bf8523d3f423f41971661ba5f77e0ccf8de418fa2f742b75f347b8a9ff8fdf7fdf7743d126642bd4d0ee1a7db916000ca58afe367a44b67b971d89883664ff09e612b0c4bbf57263ca9e7cd2dbd9237f4068c0c5ab04db22405692008738972624ffba2bd32daf19982db4f6f73773615d051a5df0c13ad6873e4b839a1d463252f162c511d5294222f551e17afc9863426d4b9bc7443cfa63a7d6e68e4e592eea3010b959712b3070d02f5318bf71e0eb81fdca5870e16daf5e791137bc00d6ab0de9fa2471ef5b359cb324775d803f77fea7298f55267f390d84c36633cb6a3b5938e93115292d2122ee7848113157a8aea84ba5a47ab6315f674270723dbd1d996ce10e93a14b336f976133aeda5b8ebcfec1579b94371dcc8b30dd9d3b38daeeb19b1f764cc0a0ff6f46c2a9b8a898a28a461b1a112ebf00fadb00e334c4262cf1622117969ab21aef3c1c8766d61154f8a67d474fdbd28a157833dc12bdeac47e425e839519ca81a7a136576944b46d73f474e159273f77f311ad004d4f5b7c1f1b7c1626fbda2e774d7df868b588656e7fecf4113546ebf3735824b971d6513b4eb9fe3fb2fe57aea7d07b8de2804ec5bc9126481b56149048220953580891d47deb469b2a7ac8e61c01ed385895c375313ce7db0dee44c531c97a341c8c01bf1caf5b7b17919083e4076b36f93010d222d5a22e83da864912e73e309f42d0d74e5caf5cf21d4dd830fa47e8af4497d7d90f439e24991b11f20987a0a65a6c858bfe70392df0301df237dbc07ff237d8e78bc07dfe7fb149b94ca7ee880660daa45f9166cfd2e4660a185061888d0e28bc9380c82eef509e6e08acb097b8225330ebf0df30d152c9335a095b8a70c04ad7761f373478605ab149bc3dd8348a226d3d961e3642b97fc329009d1c65a61bafe308fb985669d4716e9fbc4fbbe2919539c1cacb54ad409f0615686aebf08bbe5af614f18160bbb559efc1d77b95c7f87727777a792e4571c2aca0ceb3f7657bcf42b9ed32981d59f1c87631cfdef709509562ab2638fddedc6b39f3bda25b134ac24c864294987e82a60ae7f78a3c90610dc51569172fd73e0f83f19b6d219a56c56b2a4385494562031460c1252ae7fc84a39b122b56dc8e55b0082cc1fa9b303895306b60056af13ca76dcd8629969f071e5faf7a820d874e6c38a3c23843d7f88a47bb2d2a5a67fb993a41ad95c1ed7bf056d5610a438364a5c3e642a51ae7f652d61cfd045d67153aa71c30a1b0c3ce2e9fa871ee338a7bec795a1b80206821c3c4ce986a28d77e0ff5fd813bc5185652e794a7939cb8ef288daf5cf5169fd7456ba5732098be3f2d2164654dd0874c4df7dec883df2a6b521843dc1fa3c8297bfc9f2cfaf9f0306b260e8fa87b5bbbb3b56c59ecf25f7dc7ef77f5aad67549ce79ca954aa32d5a52c2931ec59972a152f6bd010f2a126e439e70c6d8636a382a19a1144413342d7ffc617f6ec6a5dade68c19211f6eb7c53089cbf5b729a1e69c58b7e29c56eed277e1e09967d21f79f63999f47178d699f40fc00ae0d98c49fff2ac9a7c6bff1b9a431751a45b40dc5c991275fdc3ee0a82208ed408b28e1d3cfc7bd029536add8d24a8bceb9210d1e4d1318c122279e9441af0e039a7cef510a92f1b85516a08267477083bdd570dd665e42a72d93a4a69180582640aec641e35192679e9a111c5f1105c425efaf755f10d85480493eb6f3b4f289572b970e018c74b712efde6d98a71fc6937da1508943cc00f19106141f0e2b890f2f43ff89c2ea50e3504d4f5b74d2b621ec52270a9bb7b16cf410f1174fd6b8f19e02c53da4f9c55a92a75b58e4a872404d3f5efa4a494b0df5bc7f1f71e2cba6787d445a1524e4ae59e1d5218daae666f1dd304b554bf28d924c190c27ba68c2e1d733dca4b238aa3384e9d284e149d519acb511cc55179296214eb51515174d6385c53532ee7e4f4f4d446484849494a4a345aad26244444745a5b17d535d1d9d39393532e673ba4d37648b643d29179a41593ca85b5b3daaaad02d1a6df84206a4b833d9de8b4160061c21ac6f9164496ebcf8387e3803a567cb1647fb6e2f3ea090b55fd1e47e412162977b900022aac0585b1e2187b3650151a43d526dfd4340102a936794b9e73864d615358c6631a7373ae68d7ddbf9b5bb6e3e6bde4eeee1bb2f4b27889f30efc6f64b0a7ad7162cfb0e9c3263af374601c7f28b9209cae7b463c5dff25cfc63a9e288e2dc39e2018ae68de13434a6e0baf47b167e8bad921a170a806ca9ef582363364b206883f045d7f9b8e29a594dabc77e05fb3c53669c3d60bd625644f516cfb54afe031e1eda8fe9137bdaeeb3a3a56123c0105efc0bfc666695c84489e737a4497e8552594121a395dff304af77c73be94c29b19ece911d5dc605f42b47b8f768646461da98aa23821cd63f22ca39c7a445b58222f7dc84b17621dae8aa238a1d1ab467188eca96374fd7578842f251bc21c366f51a45c7f7be4cda30efc992d2c849de18d5f7f92dd409bf5523350cd3bf0ff33ec19863684b7852b7e4958b1694d7188ca397dccf59b0f42d7bfa73edff47849f30efcbb20acf5d2bf6db027ec53c29e1ce54ac29e1c054403d923fa8482977e8297fe943253266b98d813507886ea2fb45b0f51ae3f0ab5eb3ab25720845e7a2551e839611463cffe02f5b4104903b90abcccda84526b936f96d831a00bacbfd3ee09deca63ec8997db174ad23d6d6e465caed7771c7f9717f6c9d2ad9ed35eae9706e33933ae0954c9a9bc0563942edf09204133ba3484be135072f29cd895e1e68a7beaacb4c09c28a92edf9c10e1248a932e42589331d7df3a09ba37274ceecd26c5a9144d989a3c3137f982bbe900b5bac29ad2a4c9e59b0e5f9a20b9a9cbb72640b76523d06129d56403af0e4257072a486240dd7400bad9985cb18e2b379b977b82d726e5f215371bd38575183626375b83617be1c2c613dc720073390777a774298726c7d2cc392425b138587efe543ca362b1122de5b830e1e818fa44bfd0a69a8dc990d007542a1833ff706eda3deb7b92336edfef55049a767f78b6435731ef816aa0097eeabfb1069adff378a6709966829f1a8fe8981fd0111ee6f7b56a824fc933859847fef89e2f8f35c1aeebc03f7f2effd9b4a65df01b87d8febebc2a622f256dba2ec1d7a99062072956d8b84229d961605e763ba5f6084a69ad95c9ad284a510bdecd09549da2a4c3835c00eb7001d097113b35669ec22ff7d4816ad2e1b1009897fe3b2c6889ae3f4c483c1be98dee9749d7a196baa861c36d872faee44b65ba158db9ed10e482ef29b8a831866751a38bf66e272aa0bb3b15c1bc7c261907e64674e50a10557000bafd208fb92b278b7419b0dff68b50702b08752164a6f0811621944cf0554342a0f7514a6947c733e1e55b97243ab0170eba2f816bc1862a981863c5072f5c413d7cf1018ca6a6343a274fdc30f3c41356932788583d91c40c034658ce3842082c4a14990bd0d2658b0b4824e572a6dfc06cc861dbba9b16353c99e1c60452181c9c98ce05288c28655868a20b253a7cb9ee5fca3ea85990d1b5259b77f9a64592cf0c9c8823c251a18510153222880204992d53b05899a2b349a9e2d3c2fb6eac11767ca86159b0f1163a53e8d0c215d52e07ef0ad3131837a1461568bcf0848724456880841a5d449931e4c3511661d499cbb72c8aeeeaf2ad0b0f414abcbe2dd6870d965822854bbc3d59e1ba8529e3d25cbe89d9c204f665c780c52fa914ad208d2d66b01065280348a20862218ac991920e0718b6bc70c31252ba7081b7a825ae1b4298cd0d8d305775f9162574cf9b1d64b0789f9359f20facd4c968c22d80034e09073178a8028902548829aaa1c9136418e99864a1c6c721cc2600451764a20433aeebeae76f4b6651d6b415ae7f05fdad5f11e6050a1583ff0fff201ea686ebef0121fe442a1616d8f2f28d0c2ceeebf28d8c9b0c2ad818969fbf8abbae5aa2cf1acba7382d8a5488ceaacd71fc41226b138dfeacb64b73573ca77b1d1d99ac2cff453197abb42bd7bf1b73254b05827a4a528a728a72fde9972852c0502eb4c9664473d489d61a9dade8ecf5aeb751d683de6b5eb65025f26ea238fdaeb19d284ebf1dbb35f66aa45d9af2be979efafbd4e87ddfcc57bf4f45a00165ca94b9de09ddf5a811d25190d0d942b5db6e54f3264f6a5c0b790e77b610edb385ce16427232b2954067e4d8b8aeb894af54a0b22e0c98b8b09929b8b298473564262ba637f6f40a6214b18699028e1ccca35a45b287a1b830bbff313d3206e47bef3fb2a781aeb8a166a670638cd9bd47f670192180a0992964a0c4ecc81f93b1f0018b1966376eb0c5a423df188fe7913d366c48963053b04c4cef7fcc6e8cf174fffd47f6e8dc6076a4eda0bdef468fbce96ab3a723892f9a98ddc84c54986fe3eb68c35ad58c0d5dafef464d79ad177ba3c65ad78b06d662ad421bb0117cb96c8bb50a553334de8da15aa958a097dec74250bddffaac31f6bdeb59bf1a631f1923c1feea81b84890e2a49ef59664ba7a9537c839944b4fa5e25505987166bee53de51c55a8628dab7187ce582743e7d4a1ffe1eaedf82c91ce56646a2655bdc3f0f62b9ee4494943401002a5ea334feabaaeeb8678498928b910d6415f0055ecf7273b357d139a8b9ba4328267dd9e94d44939faa753b9f47df4400fc679a2b31bc6e9fe2c445c8c78d476382d47948d53af22e0e4131ff0bf0ff27dcf51933ca07f93df3bf51e878864a5b66f898ad61ce801a61b84ce8480b73dd01ff48d39a04f9d601d94fa7d9a097134ee09acf2b1b378495f08a5670ad7c95ec2000dcb14a77ad98e344555f375ac81814baff65cd983fa3a3070ce07ec2e7267ecc13ae87fc039cc65f8f475544fdf87eb2bcdadafe2d97ffde60f68be3ee58f9fcec4af5fd2d98dafe43944765ddfe3a688d277913ec41185d4a5365c20b87ec7777eb007aea74f027bf07afa15e80f681ef6f483788e8da7f67e1404bfead8186123cde8cc41fdd7d8aca3eaa87416d6b714b4818127bd2ad284eece8ca78e4b694aacd45da730f75450f5109672773bedeeeeee1e3b5ed6ae464c8d98eeae3562ba6b77777fce9f4aa552e097f252a954aa4ba57eba0e8fbabbbbbbc31c209465d8688279b1fcb5bb6bedee1508dd4ebbab77b7d794d1356574f77bb75b51d0fa1ed2fe27eb9397fd60bc741d9d5a6df460bfbe0d29168a8a6f4e97ed7a3fd6a8ebfa0ac6bd7711415dd75727cfa9ef22615e3c1cb302a156d7d3b85e342f18cdd81ae3a547f3d20b9fb56457cf5ab2ac672dd9d6b396acfd27305eb6beb472afaf1ec2b6f0aeebdbf522557505011468349a0cd7e5ddd7cbf53bae728d4236c84b5b631ddebbc66a9f288ee711e578af778de75fd7bfc6126039ebbd2b057a99b279694208dead1f81d6ad956c4579e9bd4ae8f6f7aba6eb7d6b3c5b462d29d7fbd578b694aef7e178b6b2b4c6b0cbf669f11cf273e9fd6973e98b383847f4d27b4affaba98fcdbcf7e2cc7bff9e4a640fe84da53887864bef3defbd7f8f04669cf0adf7349cc37aef3f1c5c7ecf1abfafa3c83abee7ef3dba22edb843c391c713bc386e8aac2180640d818ce68005d065a5cbb72baedcdb1552ae002edfac48baaa16f838aee7ba5eea7a220ddf7b95a852fd8cea537f5521f80d49d07342101381f5ab67f15d9167df9004bd54bdeac30f55377dc52b56f5a7f8fd0e9db5482755247d2e65e7ec86e2aa132aee5ef57554f94b664910b4f6afb5e439e4e686202682fdf0edf30dc933548576c47184b56448865e5632460391d00b69b710112fe9378d829f4d75c59efc54d2af1f443b4119113ae30f495ade9967593bf332fa224f90da565d393dc333bc95fe379ea7ed90bc30c0eed9736887d7f3beff7e8782a3df7cdd5a7c6ce96c45eea03baeea3d54514a65df5390c33b44bc1d59a9cae9114e48976f5f401100e88b2f976f5f24dd2f96aee3f8034f8339e8c75dbe81210486ad8d601fedd39547b18e7e0028018376f9e6a47465976f4eb8eb51ecc1e851b08e227d3348b2fea7d33ca74f77ba513e866fbbfe145f7f5a9a3fc1faecddb76abef58eb3e163464af372cce0f24a844abb36c85891be369e6ba26c8ce018529a97fd35a48f01b2de494f74d6c5d803d8f73b51129dd97c8338bea74745813464cd33f81d69e30706dfdf4d7486e3fb3b77e39ba616e439af134cfdfbd854ec0a966f91ae2155dfa9de06798aaaa8b3547d7d1f1b36b618d6d160b8f897ea39963c3bea7ae3c82bedd4ad6433b6918c653118858c446e8c4d3badec9eadd4633ca228597f480a85355091e5fa5b59586b77f396e2b0c1f6962fbda26f9d56171ab0458af541863734d833c4b1c486b122b04c25ca95d0b42d401cc2cc6572743d41db294188b6236743aa4bf013912f23ec302d5dff1e5e77cf5c1fc14b2bec53093807045c7e798a21f9322414a9dda16301f7a39986ae7f65172bbbf34e8f24d6dfa5c58ec083078ef4e165cc893d77ecd001939a2227d4a99b1c3bbcb014503744d603b682c338fee0f7b56e68b0830ae8883bee580a21e6cebb5483ee89d0a93a2a42f785dde897822b11ba3b03a6663a1b58acaff6d56cb05851305d7f968d31ec19b26a9e439f7a63be1ab55becf9d5ae7fb47bb26aaacbaa79d9c49e61edac368456a004dad8bc28f2e8cae3468c62e8fadb84d6260c7b8a97994516b95681e372fddfa582c5114106c39b1c3b588ba7a01ef20185d1f51fc1daee1091137bf2d28f9994f74aec232455e4479e628b5cfa28e94388684159f3d2df2225dcda36efc8a97e4e9f5395278aae7f9852bafeaf1aec09823162e97df21cffcec9b3d5a57b7e4f9faac15aa297a8b48df555392b15221a080000005314002028100c060422a17838205295e53b14800a7d9e3e7e4a188b846116c4280819630c218610420800020446a668aa02fc171320e180fd1c72840b620364bd27ce49b0504a474ec8b92c499cbae66cd065511f21e2947ee6c172bbcdcf319226fd85b8349c9818f4b4ba406bf7202c4437350fd2ef52d79d1b9a3860895dd5f494ad767f8f28a9ca084239169858a594dc1b7192dba628f7503f9e71d4a5d2c9a6aa4f4e555a38a6de09ca925f8848bf75b519f67dd7a71af2d936cdc7c4e83170a6f9d23a8d983b15e784adc0699a75e2d822ba63ef63ad0eea9cc6ea69f5d8881f5f25c9aa4b84cd0796acde0a249d944e45e23422c416409a85b04a9f450540c970dab1d736f133446bdec9b74bcd7736f29520457c16fd5f0da7c673452044df88d9881d80c2f7eef07bc74016705d9f991602ecc7d3a5c148ec50f7e51f346485e532faac42805038c3bd554e0c773fb8fc24724c27747de3bb1617df4118a1ab1b9fca9d1c624df0013013d95ce50e295ae26eddf5273391f6a15851f74ca58851c752632259572a8506d796eca7a535cba4d52fa3da0aa51be899eba07a4e1a480bd5a8f08bed5b59358769e9f18152beb970351d573ece721e41d710f38d4376babdd124a2494e609680917ed7788f746c4daff52a0dc42dd863127bd835fa1c1a828d6ed8c78825d05e887b0d99da459ce46f932845394efb3d4503fd59ae4dfba52b52adf55a9eb4a7fc3d31f7828ed6073c020ed8ed55fe864ce35c22518ed2e65de4a44a8496de56f117d0022090451c3e581c3a3e2c66cb59cc0896bc38b0e769920bb5e5da4c6668b91cc6165e097f4b8a8fc0f973cf9297477b8d9ba12f47f3ff12620aeb4849c1bc0c459c65124a83a49c141551c0afb05bb8cb7ea012970e254b19650453b9125bf98db495a574584c03d338fee84e1d9451831a4c8a7d23fb4b87ec45f432fdec9fa8292ba6650365d0b7acd7987d3312f6cd350a82396a878abfd969dc49bca74e1a91f4d48f161864dd7e994b9c041b95bc49052aebb6dfd7fee79d5793c8eea349c33b93daccb01633741ec83499c48ac5245a353b89d7ff8da4405a8adb0f800a2ee23247a604d7ca9792d60250c29cd89857b022d1f034d36ec1900e908cb08a57bb2d9b575f17c4b7e961a2a5d27c40a51af00d189c318a048f19324b418a7b81556b63a0001a1c2ae67ac3bab9507edf0baa07424e75eb0c7fd5437d9964dbb80cc47aa6f2c564262f551ab08cad7d3357aaa51735509efd62780a2243456c532de5415d05059ffcabffccada1675e39c8ccda57154768752cdd0b38e99c5da4c4caf94775f33eac43311393df91fa80821f7ad7a1833bb26b04d18d3cf0f06ed2d352a87d75bc451fcd6e0ec1e0eff581ee6b63c5e60ec7da354302ba616c2f8881f596ca74e84ef0b8ffa9da60697ba7ba53311a94dd4e59343ca3272d7e21f4c0322ad7f69cef63fc209d4ac212243e3d3658702547f5e4fdf52f95e5a957465e280921c4aaa1a81721a613e0a82dec6dd182f56fe61cab09b00c10020f5671599127a72aaa24fa749cdedb60ff8a864110989f9db752fbec74dc5980cfc2404a64aa411dd774ad96440ad6378cd9cd32b03627b6e0200310ca8dda7e9ed60ade010b4af8245b42a71a59e7bfa1611b6e009362ea67fd5cc109d840321a3d992ff58553cf201ed5d258275b6c740c6db711a6dc3036f4fa475c0689eaa603e30ce3561fbd0f81ba15b0cf8e75f0b40cf12cb443057773f43268288d59abeec979cf446543846f4d7f1f9c63265373a8495cf203e83b49b8ce6b7687cbba3fbb82858ede3aeb7b453d3cc51998a8280fe37d13e505cb98c1f9353ac333eb9e53cd7ade2a00c482300a578f82b5000e27ebe8af7ccd73fa4a2d2df87b248f69d6355d8a9a59e2ac41a11a2e336a28b56f326661d8d7226b19c72c271b2ac3a74aed4b1d93d54ecd641b40387137b256fd5a60c5ee1f3e39cd1b3596b5733325d8c08a950ba0be63a88c0dfe07b39d7cdf611f7ad6fd40ba7562e93aa409fa81ed2bd0d0bd79bea3c9ec5ebb2219704654162f13bee01f0db5feb6ed03495a1c8c5df087bf49d11e2fc0a72cf0c530367340ff532cfcbe2388f65a7fd7cad5d35290d28c7124e25d0e8995d967c64fb9d06d4bbe27de9567583290f812792f409354d14101a6f6c2a7f170d408ceb7a0aa9b8a7bac8342187e7975cc320cd18440419c1090e7a7e73ac6680a647ddc4e82b3c6892c2cfa725e821c700552ef832e1490fedc0e10ac19947308b429427725ba150f87c569df4c0e1b432df4423db5f5e6eacef3399c7592ccd3400fd744cf6ba0093dddbde8cffd4451c439649dbea2eafefa40dfc1f0612a082c40f29a8ce5a4cd6d1c589f6d956f1da20b2d274132ee7b9a09fec459735b0742280e6a1a809ac4e8fe1912443d9b3acbdd3a66cece15cb9e6de0b59e13d9b4e86e7fdadc98242cc7514cff83b9a84ed25ac016a6fc670d946ddc041165124a10d27d9f44e3fd0eb160174634c6eace798a757db50ebd2b4c7c7f6897549a3f2fb1a4dd570b5fd1cd7763828952ff79ba1dbd04f8fe9a16fcf9bc0c92875ecd151f465d1a34a2e9853efd1d9f558a59b8bb07afa8024adb7ba0ade14337dfc8039715103c8c088f0b8eccb64e87bd3f3f8d2fb0bd54265201d6550a884566cbcc8c8ac25506708fadac8d4f76cf9ca11200852a00278990a5f69c03709d159a16cbf2747a36c0f61b1fa01d7298e15bf426f6ca92d45b30a13074d1108259ce30fe5715e40d9c7c068d3dc1fe4fd23798d8c25198ea26a6a3934fdcf228d8eb32b0f634a096dc3152a78647f97af1b12ec50d6532389949844967592d12f1cd2b9c594b443f4e84fe07429fec1dc21555ea3dc9f8efa795a809f657224525192280c433752d3b17e8c9f57966285a4a01e80f5619c87a4bfe6a14c55c7afbed7a42b16f028f7dfdff65b94664c362e426b480975b68b78eed9226a5cc56de6693ad595b4cab0bc7c65203fca1db05acd5fc2e362b1ca2bfdc82314bd88acd2635daea6293d1582c0480b95a318395eac461b1b54c3b687e7e6d450ccb36a75dd162db130f884df3a9243b37011f1d8d6d23016ea9e1d0118a6ce67f63956633e5836a5276b80a1416303b1ccfa662e1ffd00730564908d9098c65ec7aa6aad09839162dc7df3d6bded96dee8d45c99aefccd338f9e006a13efae57877f995a08d7aea78c1249fe9edb1251bd6f54850c61aafe6ac6c083e2e8db1b6c835a0ed35dee940f36c29f387e87e6a535e940ef27404afd49d0e0e4fe021aaf7bf5d1171506cf433941ea89199589aede4e04473d02dade005a1488186bf793ccdb8c92f79d69f3ef855edb069a3f3fa9a07b4146332dac9b14565fed5bdfa1b4334196b74acb788c606a9e48a7a5fafb3b04643c7960ac837b06dfa03860e39ccfd25c1a9247807357ef630715d14b8acb64f7b4c5c9f46c5f51cabf16c0e7805468d428a5703619da80b0e17e68dae438c2e5216c8045f1b0c1dbce570062507b634e37529c7fbbed7e3c35f8691cbcc46c06a29903f1f6b89d41c89419ff9c6565af6444b9b1516e1e7e2b454b767caaf20701335ad0989f87f3229802ae343006c448cd05c751e3f28232e00b81d8db41291036dc6ae8dc988040e512a8687c84f94167ea57eb7c3a2dfcd505a194c9f32b27a60c9192e690b88dac64929f5ac4460a46380bd6cccdf36cc76b94470db7e9fa55e37699b6aef62590a3f9d371bbf727b7f257525c05649bd718e8480d67f20a4a198dc4a5cf69c78908ec60a5f77090696bc448ffea9c93a1135f4a0ac9d2e9654bfdf46a0732b14160bccd46369fd76f637e358bf9626fbeea5b4985ade5bae6734c774dda9c24f1272fe830194579507abeaddb4a1b6878af5628817bc9f523869ae687bd6ad2b70b25222d530b33dd68e1b7c65db50db0f9b9496e1cadbce63532bf597a9a98c5ad2bb77a45931de110419164104a932421b574f9b0cbc991b1da2d0dd49136c4d9c99a155ead7ad21e1b885833be086a2ded4a5c041d749ca76525af3d0c32c155e43f5c54ba5076645d846d5d649b089433e6a9cdfd252a54a0c9cfa2119e7ff107157d7075b116b4a1acf80bd13125f3f859c6611b14bac35b660b9739c701df443ac45d533199e3fcba46d848b24eec826245457b23f1db4c894e2c108830711c8a4bf01d4091bfcc496ba597f4b9bedec8c7b09abe3ab7fb84dbc3eb6db8692ef25556075a75850bcfe41157a189fdce78790da33bb27c20efb60bd2a669d6e997467433810ce312feaafd7e918ba72bae27c99c74bf3546cbee930b75c098ac0d9117ba036f775d7787e6397503866fa5581576f4c02058828123b9b581613f736e0935190b56a7122b80d78e2aabe34b7478f5a9e40891da2162e1898bc605cf5de10fe2ae0991e76a5115230cbf6e5803bffd494ebfaf1e3ddd67b71264b0f9f0488dea1f1a9ab95b861e21f54e6c95a2c04e45fc68661f6031c7d8f30e429dfa671cd531c74039410d28a2f3a593c6eb56a6a484a2378f19f6aa742bf5faae7b61c200577c9d28560462b01f9912960fb346833d88cd64723aa876bd5de8d4c39577366c39d5c4d6a4f5d0b4fba57970391db15e0bb8a892a7354a4b89bae5a14e4dfad135e52bc0697930b24410f56779a976b3ddbc45e3c15637b144eeb01cffd6154eafa84582f97ddbead28c9e16adcd21add6becb29c4a2f08bc81412e606a56294e842e3f3d9e7ce3a6e655bb4fc1482a042b2af5417af2aaf66ca7edf52386151e662328f680f96125e6f6304de121876f6bc00b607209badec8c5cabf31156b1d2bc780948b825a5bad6e54cd64eca78d863d4a2864f94e9e312f2a64f9cfe51af342fb8807f637f303004c8f66eec90def6b9fd62bb900bc4ac4a12c2bfbd8d8c9b38a1a83289868e61683ac11cca91836f63867a8dfb48671931b02b9babedfb1251269092441111535ee9350ecdb98d3db480ad1098097fa9cba93ec3711ac381b303cedbac7ee56773280aea9213e3de241d1d9905a6afb1d00ea3a63ad7909c7ff8452050ce778f68a440027f36784bab1dca98d7afa2a6ca0b0c6771b6586867db371ca0ea5e6ca89c105b40390bbd02f894344ca436b2a04b090b798de2533590d846ce28517d76a5e630ee9d9fdbb9af9e19d2f291cf69dc33c49c0ab9206be7c2a3c370dd1114116a4380822b09b4484e52f9df7049787bed9e37a2f200b7a2722557654525b1dc032ec954f80ae6e16ac12aea073db7d82608128229b7b02178fc7db713e4386a5b4f672b879c2ef82e61793d5b15ab6545bdad0b4310299af98f57c41390f6b7dc05207b8554406c77e97221623422b6e54a66559ad5c6388bff2e9fa46a189a05a94b5102e484cffa3b3e2a73f1955f19acf1527d8c6da889d2cfaea2120a6c513135fd4ef96392e1ee44f5e1d444f9b76cd623cafe99ff9e8fd7b223e33c5a3458f76ae2ea36a73516045e090b0b728554fdb295ea95a83bacc1ee860ca8107665b6a2bf57a47db27837a83aca4d45a4af032f5095b5e8434f8e8d2a24c8a83911a8071f100aaca5e468e2f3163a4a8316094b036c27a77c1c4358a39663b2577e4890cc3564907689658a02cdb690d3e8f1b20c821e0e5843d612b88198d2b06a89a31228be2311dbbdc2a53cb682287ee1a35846c160ba5c5ea883158a3d7b532628708222ab98e0c28f938c72ce842342a31230302088daf4f952d9499d319657125ad2501ea9eadc084419332f48cf43cca57dccaf2b581d3813b5a37979efb66709d7efc2b5df8053ba8b81cf1b2baf0d4cea09f5b1d9762ef0a571fe67484f5641535f4a311485045d9602e97ee8aeee9990be820f9e4d9d7ad52d054a905cc9894534427d38d2d9d9fd28c7522476b40f1b1b7f5fb8f3a445114bd5a2c336031625924e6bd973cf30ebfbcf7239e80521da4c5da82256e9ddf3be968beb498273080d10cea809d449d75b3fd463ad2c54633f5885faf694f544205b0324ccc2f20c2b7492d76add96734e046befd077179ce62844a83efc5dfca41c8c5937d785588fcf0f949eead34bedf6be37f0f1b0d7ac117218ce53b8af7f0f5c601f25b289f1e7597e82cc878dc1fb2c621855657e92e7096291b0fcac5956d01a6f248caadc64d34528713e09337a1f1e80d7a46ccd77e1992a13c7a12882164de0a2fc798ed148c585a759bcff34e279d7232eb181937a5ae3a589b131080d3c6201a5798940c24667fe3faa5ff9de98078afe694b84411bf7216df13c5a7d8c355c780b5c348d721f591de8bb46fefcde60b1969a61775fa9d5aeb6d1425efa6579c29f5c39bd670c7f503c04a516b4a56750ec8eeac14352f3eb52088aa415ae0b887da7bc5757d410561ca2a1afc0f876cb2477200454448145b7a0a219e7a76f6662d1b27c0d8e734f6bcf85c99433336ce3b3c21779e7c6f42a96c3fb3c05a962e3e9e223f5ba89f891959bf118a26e0577484f628c5e5a0c315f4126cb9e708b46877f38eb289566d1d8731d69bb27eb4f5e54618b4e056e430da50f3bf43ff5c21b8e482a88783816a0c517a6998c9a8fce4507c5600fcb46f0c208522961cf2144ab53316bf7a82746f61d4f1bf6ef20c44a6f042c02ae877c34f7faf2105031962f129744a7a01368e87e10a3bafb76110adecb3aabbeae45addc99d7685de3077ae4de6a787be4a98e36fb4b4873918a022fe5bb4f6abaa8e2332b42dcd5485b86a50e33149c7ab32c50db75237fc1c1f4138dd5fc2b75f3477b7528d21394235b9b57072ab6dff197767b3c52cc057d85af1822d2ea294e8cf604496a498b73ce4b29244dc94dd8ea526caa26a0fab924a3d36026de72496927692866a10109f099de344a4f5d39d676e8966b624449cd4119e3b09a85a4b9a6c3c65b6a272bcb25fe82fe19062211ad1bfd2be4ca8acacd90cd84ebd0f2ea96850bb56b5cf114df8cb3e566dba9c76c4d2c77396ef50586a30749825d798fa2766f8e102c63204651140a1f5e23c1739c021635f035967800e59a59e4bb8217732c69b158f77b1f65598a5347df2cf080526afc843400a35d95f881f147a38e39dcaaaaf82af6591dcd6ade5cd0ac95f600250c37f00ad3f873d3f07994768c658a9246af8004d1bd26d2b9bd8ddc69bd76f372db65cb3a1dd4261fd64bb70fead90422352e9177f120ece3e068d13e750f1924c6f29b31d4c2a38524e5c04b30f74926e482656c69b0f805e5ab20c5939c04d7664e6ca8fcbbc0587b50edc1ca8454099c2703b564bfb4b1ab89d48de4ccf7509107b10e948fe536561e2ac049f6dbcc8941dac844b822a023ec9b7d6e3af060ebd04c7042c07b0c0c77a651f0ec62ee20515b83ba87fc01f87c2a01536cd91ceaa96ab3d0852137dc1a6d0425f8dae865188983c938e9d69db3d3c595f610e7c67cb51fe2cffc4bc980de1ed687eb0aa7140b619eddbb9a5ee36aec7b05236484c332e18eabe69a419974018ff3b6765150782e661cbef9f7507b18adc04c00fe831621fd4cec79948a95867090e021061ac5c2b8be28d7d6acc7f40a461ea9192e41f8f38774ae10774ed873842e7e11fb09b20a3bc909c78c50c7a6209768ac954b7c7227751638749559509475611ff05beac80feb180b63d20026e720b4600f0f60bd95602592db9c8fde9639ce4694978605f21293fd58d7af851227e53cbdc373e2013c913d4fdc16f7a74225b8b2b096ec8e4352a05fbbec955785d020ffbe7f404088a73f45c1a07cb1ce3ab2de31974099747a102d2723764b379f181866413784eeb0b2f3d47b1b687c133362759ce6c8949e498afadd9bcc76ae9b364436262c6fb9a24f0dc8ba9a25ede060de601ff30ad62ca736b590fdda870e0f2209f4c63dc05c976f958ea1a0af360a7870cf76733bc7198b813ff0a2fb4fa6334ffab9c145a3f1d50300c3791de8adb86f35c8b804b18c696c4f96fa485d88b3b72fead3c622445b4255f425f47105853a033b1a4ea1c9d3e96e12177970ab28d1799e4ee631185749c88cc55588aa629b3c3ee2eb617ac30e0ca4f4047e597a67fef145595c54aab2b0fd65e720a999461aaeae1595c63d870911ec0df531075ed6c318a83714e0ab100a9dad4f44628d65da9db7653399c1476b6169af7ebe5a3a228884d340286023279fa7712f084a7d61d5c025ac591e9fe0cdb4afde63647e356564a03fb8c00323042dc6f5a4160f203656059d1e33335c89c4a1468ca46486b9c39a8eade651ed63b149a2fe081834e5a6bbf528e9e21d023507a9c4ed5a560afe350d27754d17f55a84531becbe8c5f20412720b92aab2d5cfb6423a56192a0f357a09db514e4ea317a34d05b2133963a35096730c09e125f3e8daa26e02cd5595ed8f389f835d79c13e66ecb9510a2821f0783565403a7833a748d31bea4921bec92d39fa0e67a89118beb38a5ea4f90a0ae457541c0749301f799d25b82ca90dc92173967446b6c890c16e27957a9d7614d9f21e08cdc6a4205085bad56a6c1a12aaed17b143704a96deb8508711d0c762f51c59c3f479b3c2b0594bdf683f5839c094ae22dba20e15ec82a9dce08c467c1ae0824345e3835bb8dbf935bc31805d52b8a86ac03785bf4c96b7062c65f8ee43cf7ec13db08cbb4b649ba2aa30f47eb785de677ac82596b9bdc3d9b0cea03bb07194409d732ad1bd6332aa95e9ac233ea9b8d0bf001eb8e9480a1472151618dd508234838f934bc650096f9d0f8819704a9c2cf683d8a77e4179edcc50fdf35e1e507e01ae7776a4e107d774a532fa077c57a926fd72fa835eb6a84c9dc61287a00437d8105c9bb8f5589c5ddc24344cb41298d37948c1c9e906626124590d3beb278d3e2872428b3133fb9c116ae674f6d0e768880dffa6a96d86ef66ae2e55c8756e880ea2425a49d938e8920003ac1b2280aa030b2df3694285154db4fed1a892bba661d8f56ff8248ff62413bd0a76a541100977ba7d842150956f1c64efc65c54ff61a4328a2aba358372cd0404ca1edec4721922158c370d02b2233967f5d90749582f00d79d7a978140f671878149123390e565978a69da37c93dada50e5f068adb32ad7dcb04d5aecfe7cf0a48c4467045a589f6c474be4820ed3f388b193e8d3b94d2a4e9b1b73c176e3ce9e41e98a01ba49a10bda00559c7d89e922fc3377083648ffce1c2b5db7602be2e57ee09dfcab1a4b6566006b1eb0af000b5663d631ce89806815b0682707f574ff2059e646c610de0c46d19c201af252d8faad08987d1d2ad904a80afcdf5a0a59db873322d3dadfd0e31e64b66ca58fc5964a0a614a15804012e0a5e0d63b74ecf48bfbad5680cc5e380f3ade3297c7049d0157a1ec3b8bdc79393e60dada8118244e2a500de808ef34397845a3c0bc3ac7a00595cdba1749071a0b92e308476263454765bae865002d445253ff5b1ba3d30372dc4435b5302d5374cbb2fad929a1b311682441c6cbe425ea917fae5035b7d1bad2557824dc62da8c7f15dac110ec52b920ce8ebc777bd955730782bab382039f50af9a496ed4fa0b08ad8903a2b2123d11d154208002aa0de45fbdff8889c30cd9baf9f45af3df4036c1a1ea1459504f46d4121f35b7a9f574be9c745e178df64300300c3c5f2ab0e556c300fb6724c1997dfe1b95a03ecae00542ecb02401a9e130529f383d1361f20cefbd3cb060e9866e1e5d3d34470f4b6361bdff7e113071ea317bc30e4ffa823b27a5557000a3ce88f2e9cdcd7082114f86a46ddc9a868e46698db943aa23ba5d9363e768369a882116faba4dd5839f610ba31d82ba4010484c217c7d28ddacf560388d352ca02511960ef752586f0b31ea6f8024435e6b26894a2afa69ec83ac2e5ae4e17f4e1d3dfb66f44a735f4b13320198a5453a9625be36a25e60fc20accb6aec5ce459f6ca0b0ba7b7621c2a872706e2900106cfbcb8df51f2aa7eff7621e41d69c1b2b94a2c669cc2659ce6f4d4e7c08cf8eb32329a267c89124815a3075926e57dbbc793095ac290334f41006b0760fc9f14597ff30b9ed0e903762decc3f384d98440ad9b45aac65425aa5262b483d418d91c5a11cc0c9822414c9a1b081fa35515826c065207b17124e2eba0968723bc9469e51c528cf42b44bbe307419e377f8026674d2dfb89b3b3d62786fecb617eb79533bb1a3e19ccd37a3c2a67973b160f9c8adc09809a7b55ea48bed7241a017565d157d972eff34941efa5843a2743e7cd09b84f8e480a71ba9bf690510da433fcf62548f2bd04bbc70ad78dbc179c8e784e4e27dd5eed07585eb18105b52c4cbde37604018e2b776fb2997672dff98a63a46afa3a47a768addc7432be393f49cc60ee091a0dc9a604b04055c253d59ce9a8e76c1d842c176ed2d4a9183d52b4e483daab5d2e1d0b37f26486616f1de07aeafe06498faca6a0fb93270a9c708d63555d07193e5e6116ba71cffc16a28d23bb491f6a8d1335b56dfbd5477561b566fcd7f58b0b1b2380946b582c5a68cdb7921e3a1a571b6d8b0852be1ac133b5757a60229072b0e16e2271ea0646154e00da4ad7ea25f2d73f59f259af423f94f011b0a852512298273b2fc03ecc8fcf54a10b7d3985262ed52d73e4d6830052b75957d354a8a986240ed95f0ff7ffc3415f6f41ee9c74f19a52fb0870fabc4f287e0fbe39bdccdcd6a68c633fc33b584a659868e7871003b9805f6499834e75a9ba359fdc3dcc1be3c67de65914fd01f5212ef16d956ed0966fd544077cd63f802396e53cd94c17641bff0363a4f61276eb5084b3a1eea994531347a8d9182479a4c415dc844ce10202cd845e68fb720551fab9cac8b876fbecdf854298cd1514df21192691d32108cdc6d4cb4dee24f211b8060806fec0ad8c60210ab6b884f18791a1fd9da37ff544c9a8c1ee9a62241177279836fb7658ba45cdadab6ede98f0aa474811b2d41c919ee7cf5cd9c59aad76d8d594a6bfec284f348663682cef3e15e1432d598957a82cb4c02284edf1db0816589158b7fa4005b9895f51ed62b2b1d756031e96cbd02eb5d864dfb8ff6000dffa5ba13a5e815a3173893357de9b088d611c51c204f104ac02c892a97480a48f2dccaaf5802ab465e8a6261114d8be7f95cb6b6efb1ddc07662fb9dd453ea0138c346bba110aada06bd9f69c3011718e666a0a7d996d81757b08406e07d7ff5bf3b6adf183073013a256d041e0b7aebc1c9f7388295872dff3ee2c86bffb936a5ce21a90d9de70a9c6a3cfb8174c3be94dd8e73c3a90ea2b11241f1f2e1433381c2ce2057a26888ffcfb8d37052d14b1d96814e7c6a945018d74dd85369e5a0144025f9176799fc8b5cfce8803dd9cd08e778d483f7569f19e75dc1b476fcd793db1828279f4273fb45d737a7818051d50a562aad622e0cab9872bada9b28f3cf275021ba8cbc5820f3e578818d003f990449e7578162482f8babd3a95f543b8420e55f56081cc7ceab23f51e57346957318f5cea6b026043a45cf29a82bd0ae1a05e016a097788cda0dfc873be963f1eaae8ae8881061ebab18058add5f247a2356b33c1aab88ef0db83c8f08e7bb22fc02129fd236b233f7dddea6e590c749087b3e99370928d9e873161ccf7f0976bd8a44fd6f61f02868a66bc46a6fbe18f1a354835c1de0d91167aa1cff6517574e0b2e5999726ef0c8502825c1cd8f15f161edc236521b54e6a9876321b91e1620aada304b197bfa59964cbd52ef8075d0a683a08c7d68a239ca1807ce67bc0d5a1f623b7930bd3374287992db04312f83b7e46f0e9355e7afdee90ce508fcf11e39b14f74df250041953c8050fafa19d97aa8af8b8666000f9dd59edb27f10e0c9bcb0e62e75aace538c0d6e51a7d74e6e60a1d31b966fce585d86743afab1b263346e6a52f3a1a24660c1b79070daab5fe71104b1ca069eb218b80d4e8d29f6b0305742878ddb397da00c866daab5130529bf16581623716727ef1993de8c0402e8e4a4f3e72802da48c6b9a32bb0203ed5cbfda11f0435d9bac36ab6edccb55ee23e04dc383030b80c6ea82491cfdd4e5e65fea61957b36cbd7a8faf6149c126ed8aa596e24c685d4ae41fd052803a0113296e0428b8a9bb7e00fe261da9b22293e490ef6cbb486c24c5c171972ecec1f4a705d8eb5e4b0116fe1950fcf9b3602d03aa0965279ef844d55e7aa05f091f4ecd29928f546348784cc75b9f229f101f58ab29af2ebb5cef2aacf25f1663c02c068b8ba406b1e67c92562805f322245977c629ed91ed44c784145c60188465e20909cc596984e2a8df2726e11dda911371a76053b895636a815fc647a74a480bcfbadbcd58549152710a087f45e2071d379f0bd92cb218d89ff93ccbaa005a30223693df09bf15cb938bed37cbe925bbcbbfde10e0ba16fd0dcc72c55fa4a775a86281419eb29eae943cd5679dbefb38a496a616b9f6fce714fe38a15e3df8af096bace7ba1c2d56fc96305891594ab1af6252d35a3dc0ca6771d7c8d4320d6afefdca631ca5d6c421b6c3b964e80b3cc0b5714045882b3106403f18905e5dcfa7aa1cc441dd5b19036aabb79881477622b05e0a8244554b6a6380f2e6ee47d43bc957eae0d850355821e974ee318d2f1f78d6f868e2d7bff6a484588f933bc09dbb78708c6c19ce387caadc8107e856782b69bb772823059b3b97fe7eeb15d5a66c0a2dd7544c6a6ec143bbced7d1c7acf44a5e1a01732e7cd9e9fa386bcadf6570599a35af9b0266fc6f4e8ce3e187c82f5cc296a5aef98462755d0b651e496652a221dfd888f0f55255e22a38872d4645f0100293fef4e962bbbdcb3034ae8e8a9b69f851b1759c855b9fd04da6b926c91119a61cdd73bf7396a24260d303ba469f6a8e0877e3e007ad9f3ccdd4bd6ba4e50bcdbc7d1dd92f2bfb8cd0e08578d176f270f0b6c3b909770399844d2785225c0a5190bbc582cbc9f64585ce8f6076171a4945f6e277280587b749bcf0d2792ef304a87ee3d4a6828cd75196ecdf9689d31d09d2c13db526902053f3a940687d1a5ef24af0d542dc28a7aaa20f1ecbba8963920ba24dbd18e656ca66fdea8e08c4a85cedb420987aa7498810d8909d2aa951b10981733044dba9ff77dbfb8b75acfdb19442ad2424b39140c7f31ec81140275459c7b837c610e60067d9befef8745f265b46594a64c86f8ad42cd5de888650d6b288abfb71587cc414120a28a68a364e21456019feea4c382fc2b891e6e10824718d920e10cd3193abba21826bf3e51105f12ed690f3501c09159e6b14aa93c9bec461068f4d07a62cc1a9a08c813ea0a18badedc7f5d839301924206fdd5be22dc578252b0495349465c9ede1c4ed43d347d7c4bf993356359aefb785145c2736afed8eb42df4372e70deed07a463c1fbc214a7274fcb756aecaa8f824f3ee2c4632bddc90a90a183e27834686e99feedb932b0cc383b25195c5da384ad67b7d8e453de5445b00db7ae2d6b46623d10be0fdb9a96ff074ded4f38848cb6e70e97ffa896da52bda52f07d83882a325fc71fb6bb4f2d543a62aa4d6f831ad98824183e07bf6bc526f92bc6244f0596b8c11b03a6491ab7d9964443b63302331c129acc823895a81ceb01179ef58ec5aa39879826b05a3ab1476481a9d77cac340dd836d05225768b32253f5b104632e29ca3ec8c72762c49775f3374f21fdb90bcf497e705b7d3a960156efe487f36338773304a16fe2c443ca532cdbca2dfba6ca32ece3c46e8527f48e96b083838a8b1220de4faa18ab467f4b2983fba3b679a15228b2d742526a168a46ee0971736ea481faa656bccd176d5f44a9665e536d415fcc3d5496f08b1c10fa6d429e8ded4c6dea4bd21038ca5d4b2d5ecb97d3a69d7ab363240a900e6d0c204861e48d6769576cc91c233794e21891fcf0a38e3d6599d101cc2405077a17aef31d0ca4ac9e101fd9e052576af1e0ad781a962b535535eeae4ad9ed89b4059c9e9e6d28a2c5e59fcea21a3c401a12f0e8e76e1d134fe8f84b3f8e31cb46ada1cf6e531e8fa91d2edc71f2a7186eccda214a06abac6682bc29475a6a0ed392ab0e8e506da53589b556df72577e2c883c6bf035fda42e8b9cb6f86fe10f347e0a0ace0f2585bfddba20ad9f7a02f60ddc25c45fa070b2f202dfc16e0622bca5f5913d3779a7a5806f0791dfe9d6f0232e9645e493286bb38b01120e47035a15dd6728a065f3a46f4ec0ea6e5c38950b8a8057ec0510664334f193c5ec1abddfc78ffcd196f44ee8392b581949611aa51e8f2b7853a44343df17fbe2c7cc0a21f75a85fcadf84ed21c0fb315a031b89b82aa5f81de5a72c39a8b563fdffa8faf92919252d336aab73aa2e7b43f67ab8af4f598a4442a54c2e7d8820ce2509d962428aac3139fb7223b76f384d581d278f45b5ab2c535d7f2c73199778bb40f486c0a728cc20d16d02f6676bb498e51c2751b24b36f724c61f767edaeb7b5ac928be35d8a28751c5da2c3733c418be04cabc02162bb9cf675ccdeacc773e4a461bb88400c1b4ccfc06126985bf8aa05d3ed1c064959c73d1bf41b080bb54698dcd062a3bee25edd7f0c36535574b3379de3c4804a14d7c3ff88d75ba70125b7fac59c43d260d83af90d93b698967b4eafcd979854331173cb866f8d9abb8c3d14e32e24673770173a831c13f42ffa5679a7256fd401c67abbec6d724820a6596c2e0abb41ca2869ba28f3919aefc3a116f24a6fcc521a280b09f24147ad68db967f94a2d093e468f3c0dce0de6d3be6b0dd865286ed3145f083dbf9da40f617bb884ed124b8ab619d9282ebf5014d4c4d48d063c0ff9a11c55324129fa8a11d2c17f6fe524136e9a39e14c1988ff9e30faba55bd6f06ad7dab4641b2cc2c908aa30cfdf7769df0f29bdea0466f58ca73c13ffced2a94f676c29ef63354903aa018c711b745cf4b6961e00aa29d9d11c5df54d6f275f6dcb69a06e7749a997e541bc02758559de473f96b9591cb7af01c70c407c446dfddf36a20f95a3135f60a7d791e52e89308aec7a0b5a1f565f879166f08ff898701d0a095279efd26233b2050ca40838142fd7153c0c68e732bea0030cd3cd51206e9980817a9b1be7974bee3f9f25ca03880cadd54d1cd744b7bb985e46cd188a6e79047a477066e8a1edee41b8c136ebd158da646635aa0e02a768a2eed252d747ee93c7c10cdc272992c09b7d3f841565bfc8654132d3165c16a558bdd763cb3f7a7370f5f50a5f61a16cc63d29a065910845ad8769c5c67f4ae010bd5f1ac12d32fb070e3842db77d0104a60c9651b9e5adc37ce3b1b12692c2e03e510656a7285ebb6b829256a0a734cdaaf635100e37c3aa5e240f9a43ba1b4c9e72d7cfca8e0319fb33b01ae1f773736f64f7d50b8f7a68f33aa734fc8b08d0203ea0864a772886a0b569fabfb84cef012b52b9f4b944968b708dbbdff28863ad95ca6a7a6d10806f7691f540abfe84bce07f5e6bfe0a404dcd8d5d94447276a54a5d96cd413288370b9a429516dac58d19d5d0e5cfa3b94771863859d3c613b4e87f5c8ea62bc2110c5f65a7fb02adae90849b1bf89575a1b99e8217244c5e0307d53fd446f5417ca6be85f8fe8c33bfa2f2519015d8d5675c5849dd11d954be85f4f0e8988eca7826ca4d5911aebb06be922651c4bc7e1c88978cc2994199cf30f972704743ed230459aa54b2d7ec29e2904f56cc7a0d4d015e55670ea2ff03d9211ad5a0479b721b830d22ed4b8dc3a0d10bdebe04559ac58561d027061c6ec280161208b6a872470b69200e90a3763dd73c5f1f27ff1a590696f31235ac29d9e76fcde381c883e646a4c206ee6da49a3b80c3de33b41f05fc409f5a7483bb1c6d0d5e9aa1843bc645d620d836736537369632b1ccdba4c03b4f077e2a0c4e74b0f5d7c8b74808b167ab88e9ba6ce08636e05e76ea2a3f29b84bbcf0c06380aec6b4adf54fb595c7d15921b8cc9e5ef1f15db0e4e5585eb078b5f9cddf0607f9e97bd0acf474bc72edfacc6eb1e4252a50d581b79e943da5bd9fe065c2fd579dd5f27faeb0ff008c8c10857ffdf38f669648c715d3673e0d5dc5cbdcd5bb464d60a8abf69f1516c69c5c19c8877490dc4f6a43700f3a5fe0c2f01f0327e470a9790ed01842dd7db76083efbde93e7b40a6c4e4eb83c1c84a8f1ed7df252c63091723298d124ed6cea8371eef089f09d6eb226dc7b44c6077ae75c8d1ee1dbfdc7e4209cfe6bdc8861f110a19b40b4364450df9468a4240a68c5ffdc9204998e065537f6d15a68ee3ee8f87010379b4e58f6434e57acaafb1f0b6245a876410a11ecd2f5ead9c42f6fd4f048a72ff3dbaae39fe05e6f6bba41d4d22394328a2b3df42128ea168042d92d2df31479e4a38c56691387b97599df57330068fabadf5037a0e3312bd1d5f1014c66dc508dad28453e42a053974f55b3f8558da4ebc79558cad153096422bb3e57e178491e65dc80fbfd6083eaf5f4d805277c62dab9e3880900312be69029510d7cac0ecee257485d197f25e751565c771c2b546f46c3f302569e9a96484761301b739c16a40d10e697d134f38e9e9b87d4c7db2092e034dacffcda62196eb0d2e769340c6ee0d4a2b2929377fce81dcd8e3904b2bef08827449c01fa360c182c560c3f27f135cc81cbc8d6ed47d718ea024022e6450dd28f82f228468b8a5286e42068bac4c99672f7a74bc60f690a7fe64d39c7a43a62c073e5ee1dbd39030d6823699bcccedcbea93480b0effa8d550b67c740716b8f3f4dbccf6bc03bf7640e773039ba9a39e6f6a1b58e888d1762ff6803151a3f887d0ec814da727340cd6d2a023d1eaf30ecc6ed3cfdcac930ea2353ac4c5e7ce801733b3dbf4310b9a17bf561a13c67231e9c9727f4f9e6f1de36fac86281cc9c17b9bec903abd748e00f9705c5045cef04b5df9e4491984c5c602fe9e0a6d37b6f017578638ebf7a452c0694836b2a7a035e66729f865954f982d6b1fc83960f2d075916f73437c3d2a150fb7b29c6bbe5dede4d7e91f11fbb9c0a33b61d8e36b2acc3f1c38db7d011f243471860f816315625f9cdad4547f9a82d21b98ed729ea77c13f7ed626e716bcf41dd18b24b81ce1bcf13cb66e181915a6cbb942b797092d790e06b7f7af24e43f9edd98778021c21f1876b6ed9f4d26ad0d53e1018dc93b97e4e5928565115ee4439eed8212d3f9f081e37279b7c5a553109b31f19018828c6a0a09960654937642a980d4ac5d07bf01ef267b81611a575c0791155a12330ff21b0a9ac3de436a05cb5f2fb2461ec83d6bdaca4767f82c8b67e66da5abb8bdee507329932a9a78b379c995d0493bc59dd2e27ffbcdedc0074a04480c734f8da14798345803a7688e6cab7676e8ec15e840c2f80b860d49b973c2259ad0a8c911f75f798cbde4b3c56ec76d58fa11fe9f08a2f4f04b70fbcfd76dd2288a3160e623d7d74d80627883f083a2b137e9c60016be3b46ce515805e42711fc34984809d158d9a12ae4d35ee0899664265a598be4ede64f8caa14f453a14f4d655190b6af19c35c39a66d42709b7f1b634e743c16b2d718674d729c9dcc8089d1a80cb40cd4d29dc2bf2ea4e4578af4a5bcd638b0ed2e0851e607c9a5f6fded3e8aaba9f8df12d3bc5b568f196f90858f13df8ed3a6186dfbb59d57e4eb502fe89fd9181b9158b05f80741529d4f649a62660b3f29f7d58c8b9f64ee7a49ed0674763ed1b3be04830882e19db109fe9cfcbbefb842347df1fd2cc8bf080e02b58ee531e50877d2a62a0e9092203dce4e937864d964e785de3b33397dd085bfb8ec0a5c8836288363c42b44909dac64494344cb33801c851fe7cc671f24bf1d8b01033c1ace4090a3b04eb35773c0bdbbb3dff505f8a8b57acc9c15a85dd8618102b8bcc11ae0f6e46bcc3048ba5f61a54f34d1ec43b65070cd925d1f930dd90bb5fb063bd144184a5e50ea64eb6918fb773ca8256a55f81aa180190b35778f056920d2f63ae3ec37838d0f310f25db19dddd1d3e1a1d6aba15f3b51fd47615f76abe247857ff244859bece6733313355063f120d493188e3f5dfaba85cb219fbda420d7428f57372477a034bef078372763610e840cd090462d5b5aa390ee298157b2c353e2b3daad93b415c3d0eca83fc9dd657a09c43826a9da18ef5922641a33c873cda128c0e2f3091fe7f04d17ddba9d46f7d686359a80fa779683f05246caf7c6115964c2fa6ed2048aacf08aa9a469176361d4c0dea90c86cdb7db614708fd2e4fd1f1ae9c267a0fa43b371b001422c24c15be2179afe3cee7b4443f7103e628b11636cca258d4a71b9152d0e9bba064f9a571048e136bd61b894cef92b46dc8864cacdf730a436f5a0a031acf8ccbd95e7d459b1b744e4a52e103ca62e109a2aedbce2bb2c3a1097d8a2476ddb3be4050a200a99d6030bd9623b67a5c1fc876d39dab0f4a92ae21d632ac1bbbdeb5c2ba0f48f60e7d8a1df41d388022a331652fd95977ef2ee384bfac44430cc7a70d4aadcf1bec762f233b1218d72bb9ba44be5fe34000dd7139d09fce45c40e752e5707aed3dbf10d12b6b2860b1198c95222f89dcb8dc965ce9c1a0a779f86c2e75a7d6283f880ae36d3cc4706f5c901eabe0181af66ec2848ba3be56f4175dc1002fb15b267723893533cdeeeafe0e436dde61eb4b31626ad651298302a458c4d5f4cf2785a098cb809e025208717f94aa3e9b5b46087bb023efec3aa0b9625955bb5db2b9ea2889e84406535bbedea64e69add3a4de28b6a6eff114de21ede4d5ddc56a49f770d43a878d15474388d64af815f6ed315705a34cf6dc7d65a45060ec3855ecde1a1ea5c2e5030689925e9bce2119f886541e36e486548930cd6be54944309fac563bfbf5ace0d7f78faf2b9da1c0a436c4a71c517ee640c680bf661fcb41c8d65efb791acbe19f0fd50022b4d1528164f9c82013407c5386b875a8edb247086e732533cf78ee0cc98df35d1ac1ddc8b5a2ee138629a2adfc97f9625e3bcbfb905ff6ce61f7a80011ffe349fed061eedf2715f5686885bfa1a21791a4f607f8160dfe0ae11fd15c343f007fbf9e30ce42392c7056d94bc4446678e0fd5b319356d804c44b5c54137356ddb7650aa5c2138ff8909b2ea088ba2026493573e937fd5372ab53167dc969d52e311b1f104d6ebfd65f60aaa318d32842883301e4196613ed4c4e4b084ee387363bbe8a3c2b247ed38ed254f05da5d8e2d91d88962b2163dac15aa63a19cd4539f4646ef5dfa9a740241bf8d687fba15a8c0d394323cb09ec98c03bd86835e5e9479b23d19a22dbccd1ebd43640e6b5547f5d72361b594ec04be1ff6649d32076d6bcda8c90019c9e59ba9a715969a0348e7ab98ca6b7b6976a9c17be91d12972fd1378edd77bd5cdfb04197229b9efed7426eed937f447ecbe870120406eb4539baa371ebf39c6db62d558e20075365355a1858dcf08585c902a5bf0e32268fe7b6642fa14404222dbb1861e8757d7053106e66755dc0836521edf7f0cb995fb3f4fca97be6e643825d755d827623f403dc97e3af4587cdef80071d5ffe6e8acb9e9b79334ea7a4316de34904c9456f5cba036e71b2712bf9df36d17acb8da5582595017c5fa24b81a761ab01b62ef5d87955aa5677f666ae42b726d8cffefc3ad426f5137864981a83dee32eabb0c73db9db8f54720e14afcb481df8efbff5493416f9c6383172fb2e7de85bd6bde1968a13039676860bcee206e4fafa306ebd08cc4552bd8d526fcdd854cdb8bc3c7715e35a298c9a90f5696b066bb500fa9edba44b3b0c520ff6c3ba0254399a771f8f0da946fa0799a0247b88506075e7c536f1e5fa3b777dd6bda81e75873043740215415f2ceacda51c600f7adc654205cb93dd2b2e0d241b52f7ce7327ac1a3d64a990bab1f08c0ee9120373b23bec8dbb00b5cf8d79878a61a7fd4f47c534b58f00079a49613324375cb0081fbe37ab836843a41840f39f0e4dda0fb018f0a42687f83f13ce5ba707984f7ad1269fe5d05b4974bcab1e95a912885ccb12d8e8d78f0df0a0c8fa538df0f52626baa18f0fe8d2a263ce2949327d13900cf53ac4ef01b1a0d020d5f5bf56967ff2475c80351c40d9171f31de8cf35fa7bf7251a51d5fc1708f83526f80b9efe32363ba8552ec83b942b9a7583b336a3f895e3505efffb79cbddf54d12d67b7372ee4f2792bb3d133156cf904af399453cf736ad39392bca976cc6480c02359d5218f019c8e86bac11ace855fbdba463f5748d43d21960ee658e436b4a81f9a4f1bc578472341cd4b9721a5dc41d40f58d3425d3891581cb9a8694ecba5a8c7333b2505a8d2554007b359a535c077655e4ba4b770a6b53c68c18bfac74b4df8daa34f0010092a12a45d65a25d70a2f17faba2b9ad37724967191da398f9685cd60f0282a49e328288d0fa190f206d828de8ff895352a38fb882099fb6cb58a11b91fc33dc3f754f283d216bd0c2289396a479ad65515914b32571a930d6bb2d0d501a9edaba1db0aabecec1de73710505a2a6f4e2f1fbab5860806ffafba9cd9bb58da29d99ffba1b37b3e79c9992087e3601a16632beb849b57b82fa8a0d1fe9f55523bc5b3efed762c0d4834049df7105f06a41b612c290ee934f3ea2e1c565ca967171bf8173ec36a1cc4d5bf9ac6c50088c972a1dfa66278569c6f33dda8510f97b21abc32fa9315e2ca30b6439d13b44e1d432ceed184c5d752fab5a5b35844d867328cc72cc034c5846afe34e99a5c45571ce0cdb53d26940cfaa98914a9f7ce10d11c11938d1fbae4244b23ce3a688e75f63671636c8ce169ff68740188468618b05cfcb89b9169b645ee798ec46b51f375a56a7837b7cdc1fff0bf87cb56d0c38285c1ea55f85523a6b61347c8181d7dc396f23234f3b6fa90090132e7eef7f6473592de2065c757ba19c85daddf308b41343f923e6a208fed16f453590fee54a2ddb5377476b165fb5efe0f32fc41b3b1c76c247294620a9c85333241f15999154152c42f56d6578d855f395da06030f0cada3a7db76c563d57301c067db45a362caf08a349316a10c69b0e6d7bd3003ac33c21e1049e3cd6f4407b159d032ef0cd1ee43f622c80c19d11461d0ad0b5b9ed44cb890080fcf397f94138ce28aa218066ed8a67903d59105add11c6dba765156932e14de5e029c4940235adaf0476d0658b91b945c85ae0c40678355fd0d2266ae476f80253ef08efd21b64e96626ba8ed4890e9ec6c2ba065fae59bbcbfa55ded2edf20235166eaa66878580e137b2e299a2e1e609817bcc343df34481713b636bc26ce7c84d132bf725b4475193e39f90e9089f707a22f75c5756744f436f0550647efc14959e8d1abcf0e3bdde415b4aa2e113338f110bfe66a5b41b46c34fc4aa45aab4e8283f909869172abceca662b22f0f44f229e2a3ebcdfedb8cfc09a3d1488d3fdfbca0faadd8e9bb8e7852eabbf2d8b1c1dce00256b341e3682081d4bd1f17936662fe2a32e6ed69273e6bc8a0f4f70fe7e6b15ce9899619f04ab790d317e08d62d2fc959ab53fde697f39484c567891c0e92bab633cd9533790e0e4c23c4331b5183fd3ff126aeacf229a105de4c0226423ec7472e542ce06ab4d83f1f2593e7cd9045a988e7a0dadb56fa73fabb450253110157eba7eb78876ef049e321040238c2ee74e902673ee3c003f511097dc108e4634f0d45b0b6ec4732ba5e5a0436dff3fc98a3cd81cfb1ca5e5b947c96ec1a9fad1bd48fa3587a33ce8fa41c4a780cf42062b80cad0d3efff2f2584358ae8440e36c408a782ba549627d27b17e0728be816171bfcf93d05156b6669f791b5ef9e2360a657c989d847925a0fad6f138a99cd92c92183314ef19cd283ee424c27c7012b2256480d9de9294077a4f50855822416796febd52872369b10e40c620663ce3940cdf7c99fd87fa9373e85b9d2e66843f298e211360ba72592779318d6c824adf2e4fe9d03f2d7ffa8cb50dafd96940f324004a908607296750c6198932a95a1521516f57a50da710d9ca4b6aa1e2941a98b931b635fee14681520414790557257f4bccc17c74b99cbc1d920c599674cccdaf7808045bf7f0da789f1dd98af1eb83d24143f45cc28e966f7f39c7eb420ff86009f4c3214c77393556353ea098f7c3cbe9152d8646c9f21343e88b2980d1ea27bd53f1755cc78e8286b60c540dc4e964ef6818488ffef58ad6a85a89f1c472c2c4e8e5f8c0d2ab8825a9e21b1c32d7f045912ada4e37d0e1768a903401cc8d186986b09ddbff4669490d7f9503b417d61ef21838662b529aa1ae9d7ded7a472a7e42a01a94c677311449b2ba2bb3e7890ca39ac6eb0a41ac27593b6c51a9284ad9e139657d1745ff73149f1d2e12f6b61612338cb45dc9b8fb771de6cb132a08a25c858040fce45fe002ea50929301819afb6e3490ea0ccc8673ed2cbda6ee00985ad083843d881251c41baac401bb8db8f7456ae0120e6b54606a59fdbf9e2c6d17946aba665d058be14a095740737f545569f1c7886de314090a2aa76d18c5174e6113fc6a2a50a036121dc1b9e49067a49f11e9fe7136cfa91551a4a1d0877700f3847d283dedb1bf2327045d0ced0d6d34e47b1ffaeb263b6a9694f32b4640058c592175e5224c0f3842fd1a3b011775a61418c80cdf38d882ca754f0fe113cb4fa5262443a62edd042605f2d753b0fa483fd3cf76d4423562601bc67efbbd488dd4e7eaae7094c776274b3fa3acabf54acbf75d9c3645b4d88fb386d86660519ccdf1c60e7048044b4619b10b6273111768f59a6cf51a8c6c993fd6b96c626720e5a91811cbfcf66ed2bd8abe32639842141f33ae5e6b5f1c06b6d78f567fbc3c189b7093cdb89c28d832bfd6e824d8f318081e19b55d00fe037eb684a2729c38257881b4e9f56f6f53c3caf4227b7e88e9e5b7dea74199133e3b0b285b057a68650185767ca9da02931c4c99ab77f7fa93158eeb6a413a0c4bbd235d7d49ccefe6820881b602c00b331762a6d6c30e824f5f85586d66b018bea4a96f72eeb34704e8d6dcc596d38ad4d5d8aabafca0f115eb5c67f6866d17967fd96c9323832cda6ded52c5748afc97b26d0267cce082995826ae46cea14d20544d342291a1e2271a0c6d1ea321fd2081b882c154c8b4c2e9644df5f844de4795584a0d1d4f1db1e89da90848db1651828e4a051e75730999ed4f10b4df4ff83479005dca73cf7cbb38eb6decf76d3bc7e8a241ba6739a40a9e83b3c300f520b98747ad983f28a93759ebf81b6788645ad71450bdb9f630f6a14d9a4a2bc626d4aaa83a4356fbdee9a5ec27218f1e9c331600f4567ea8e92fdbd898aedb77a17d606a363548ffae414c792d48b651570acd66a14d395b6759a63239356495bb940956504f2ea5827dfb9e34ab91056365001d3d0624909b9c754c645e7430c4709d51320d3c2d4f34038229f4f60839a00e877cec905ae31928454f35dc60494bfc5a40744e6d10b857226a722e5168dfe8f8217e206edb9b0ec2ed2631184a2271e03ed9ee4652dcc4d482d685c82b65e3f9891a782e3441d562d793e51c0178f7ce8969b864e1e05113fb93dcdbdb8bc6f9f0b00db5dfe8c831ba9966622b0f2424ddd6b333258b9916fbc055a19fc331abf116504b202cf806e568e015439462b0546e0dbfa8e1d04e4850e524b82452f39421d048c569a820ebe3c9a3993deb093502822b7969a8472146d5c3b701d07ec0061d2fdc08f90ebe890e3d45d03bbd7dc43f3317e84cb6369aa67f838ed129910b0daf2ba30944460fe5cab0b70197afc5c164d49884be71900f9eeed7797caf11b11b145c66e61ac28e26ea7b8cab1392db499a68fc8196349bcbb342dec547d8b2e5851153c7387bc390ab3d8976e3daba713f94ec18aa2d38bb7418e07c14ceb1df500ded36a189c644859ad3589b13e78bc86c831029e439436b017683dfc935e7aa9bde722a67b27d5bae58408dd12786aa4b5f761dcd83ec854e3411f3897377d650d18952f0413a3ea3812cc4cb2dded55276af9fe826720cb69e149d5c2fe74949c756279201a7151e354e83f48e8e3135812d1cdec84954933e31022460799832cd7bb4891b81c0429be7b5a03de5948657578ca450aeee6375c216463a6c002393294375fff2fe57c30cc00b097439c69ca05c4e74dea2f2b528f1573e0c4ba9c5adf8cee9bebefec23ceaa2a07bed080374103c73a0b8d7baa8ddea1fc7b8e73d3ceba0ed11ba36a1d13d5232954140b78b066aa153e1b8bf78b3e136b5a256f5d1d5b969e7c33485da47f0fa1dbfd59b8084a3bbc116939cfec408bd99eef675075bd0d0c25fde3ce035798e92bf66c153dcc1cc22edcdd5032a7c23ae2fced20494a166fce77af3745a5b87b4e9dfd5551f1858d2300f91ca3f3861b91eb06df9a49b9c1102933f7133937b033eaa05caad56ec7bc78c067d4da3a19309a0e16a73e8619bb99f9ce619b4e1f935438ff43adf669b98843580f8ac7fc5a5bf28537fc3ab4b8a4c9e96c21d52753cc038c5eb03fc45ec0f86b7ad93ebc9eec9e35237fe3b5f534fa597d212b6467fd6ada53fae2e94c6fb290870314b61a517ec5c4feb45e667e1675a426676fef79ad9b8a99454986d97d562257d267064edc221a3a9c3d89fa978f15961330c08e175200f348c60b6f502dbfa1ed0ad457396261c91e93d54b9b8f1fb3d4e30ffe08730bbf06882b0c608d1d2bfb8f52fab0d9ca3afd848b8b5763d6fa07b7982437b6efffd4c50584039b779601ae26e7e1f99772ffcd2c33c2055fae104eb66a85a1c9fbdd28e74b8d1fb5dd8fe8986141d620aae62667f3ff0fbac25966a59ebb1e5fcd9d189d92662b8385c58b9f7a321d17eed1766433c2a0fab1d6a658afed0516d893d1a03edf8ded29536315663f20b2ad7ef20c3d1471e2a17390c50ee691eebe12c5ec5f0c3ec754a5e75e964f40c369e275effe22c33c420a5c7c245d58b5a2efbc7913091f9d6e353ccf4a42305ee2c4eef4a564b15619e0239bb4b19060d0f6bd35220fd564345b4f7bf7ec13645cde6f3c1a4914e6b0839a8ef06e7fbc77e550951d6d91c2a63259c489b514a3ac3fd502c022d57ffe212460c8b8aade09d0fa1d889c1aa71be7c7bbe5ae7ce595a10e8e7843ae687bb442d9e043f525063cdfaefee2d8f39f5a4b6ac466be31b0a3dffd4d721d4e93d21e661a426ca02beee02ad77393cbbd99493ddbca5b19b9d86dd3c1d9d06443ad37f26a71b4351e2631c30392d08288af6d57b2d390e6c838db0a4608f2db17c97893d82d2df28e768722523202ac2004fdbebd2e2c2904b1721e79465e5be1f04d8001a32c2a93f16719d716b941598edc67d1424e6e88fab1fe971cc554c062a9644ce11326a7cc198d7362c1bd8829c9b21e3f5f78c71a5fa0ed5bc6f73f77b0d49bf54d993cbf96d48dfe67c583826d945e6a95d5b03bca5f6df10a530b8833b2b3259ca07e5b3c8321be0fb5b50630461128d5fcbbb059a74c3a9b19a83a47e2b2047ed2245f4c22276e8669c72417fcd30ee8e914b7228728e52c1fc985810c2cadbcf59cadb22d47ebc05ac3bc7a92995ea8094e8056267d56e029bee1447cdf967066ff96cae0098b5d635227b606889ec9b232aa7b21421e2f416741bdae17abc51900e0d8c72134821f3ce48be87050ce54bca77ae5f41396bbe4c8e92029127c2345ecb276e8eb1401db00cb0f695f671883e40ee871c8b0bf8ded16980d4f1872789cd0d33fad273be036040f81d54a1f1fb97af031c56f1c2e66a9d4e12a16b832ca5c019b5146c60fe4f281a283818db9c4c9005ef570aef1196bb70c55ba9c0d8001c44f68862ddc6be8cada3eb498f09c37f035bb3ad671f6891877a3c2555631a6a4617681adb48ef19ef4d6c91f37378b81e964396c233d7c40a6395e61451fcf6e7a2d91d8d605d4031b84f971bd387fb7e3912d513af390abc7b3d3cde94d11ede1fd58f983de1b7513fa71a500b45332da440e37951a099a340b67a3fef6351ef2ce4658ded189997544ba8b61fa6e4fe34744863b19867740c2de9c50ae8d2a773b10e7d2ea63e7e3bb1b240d344e6af0f98ee23ccf648e01fb45795c155c2b2ed8b07a7e449d4cca575c5cbe5d3d441bb8e259e95095e41dd89c3573f241e0bb8243cd6186b939e097520500f429996286bd38814728b33f09d5c9287382eacc6d85aa73f1c4235c602bfc205cd394f2d057e886648bb94546f749af4897a03f86774ad01412fb72e017f21e90d47c1a0231fc22f7b793beb49ff7602a9fcb5015f07538919654fd9bb40e3ffcb72dad23e442e239cf95fe59a159965ec7e04591945c17a66b0960e507654e07f775398ff86ed4a980088d77dfb7c917128e90003e30329b7f52cb5c5d24bebef0672e7c5e2e2ddfd9f4ebca583a7f0bafab3418fa327d6f0d4eae4bd5eba5a46120fda41c6ee5d39a673ff45f3a6c0a2c953d33fd0aa2cfce69f9e389d93806f794b09e4016c7eb3fbc102c31d30253f2885592c3178bac68e15920258b5f66d67f18c904c4385cfc763b5101fef933b4758c99faf783d6b6e29578a231f266c3a7bc8940ada87518acea3c7a174e6d9499e3d5df8824aaa16b879defb9b3410a173e8f9c614103c5cfe3860a5e79fd4bc00d73ded6a535c8ff4bb652e1aef8ae5527d05c224f9b20681a4dc4ce91d1254e353cdca7db86378f79234abfafd40e4cca9ad0d11e957a581c878adfb10bbdc6439ca5d03a33cd15dbfe4dcfa0640102fee7cde3f7366af6713a87357761ece656ba68ce97b3a93e899bd02e37cd0b442e6a6a1119858f2f7d56dd2e9e44ff334baad3546b54ca77c99025022f852afad215c04d2f3a60c416e5714f199887f9995a0c0ee0ba19b3281ef3f7ac8b3f4df0798f686fc772e0ac5ee130e903ac6a565d6fabd22047333b36408364b885fa25725aadd501c0893d2b6749ab43b5875a9deb192c10abb6703c643d0a9b91d6fd860d88d3da158ba67c03af9719c021411c21c3cfbc54eb3ccb8d79df7dc54e20d439312d271b237d19658a5a9b0124e80bf67eda0be9a12ffa0e9482ce53b1a6466259095f67a0b2585fad0f34bc04b6c66acc591bd242e155958d5b0d685c4842757070454fb8d36a8684591e00b6eb50b628819c57dbc13627ce661d33a53fc3c8d79998480fcb6457a87949954a144d09dd5ed781a18edcbdedb48424c04ca24b7ea44c8ff99958a90fc9c62ee23162e9d4803c7fe0465c698a03463321991d34e68703e0e2d71385c6c960713d35e386c1d7a7dbe25bdbe0c5642259f01e765a3a7eb98a62defc4edd834d6f033d1a7b4a341d42ec74894e26a94583699d2e37794a1577726ea6617ca40b0253528c08dcf8a754335862bebc06db6ef615a3c5f3fb6f337818db933ff93939c1d3eea85eb2cde60e4277b748b6d97b4f11878137618c5cd33cc1220264035de3ad2a1f6668ef8e9f2a405a4ca37eeaaf1166b5ab21948005c5deb4a673077e4d64307c720bd31ade39e95c64feb05db14d569186493ef497d562093f6837360fe7eb9b00835ec5e2663199ed048a12b4b36346944ddbd04d21983c9291cb9bdd1a898a0923119985e2895dcdeb19467b026e2b896c68d9b8365fb20f9ee8baca14e0b2f332f9fb1ac78d62bd33a2e399098586983f03a38bee87e845997d8d177f6ea2193716d5abb0e14258b83c4e2a98189ad83eb48d15c6125d7d13c42983a20435b04b0655cdf951160d64261f621fc46ba3461e131d86261fe1a38f0acc0f790ba66cba9d5d7a16c7d0aa5e8d0890e251e5f766efb849c279098128806d8f894c66df540a4bcaae472907d69cdd07e53af1267d09e2e2968d0e70c3ce97e6e9e8a101a4db0f2a460a58b87555c98d31b9f0b070744080660ba1d7e484076d9f3f5bf089ae014c0ee38a661009b427a0e76bafae609ea26d8ea8f7aeb27979cdbf0363db71e237e1691488576168e13107ce857e7ff0270a325a3386e11ed673facb5563e76dd7539733f30cbe657c6ce4e4eb5eaf48e49b47c5482e58cbd8230221747ddd48f537edc4be08e06fd193be952acc80905f53a5247603bca1030e778c6ce09f8befbfff99db54d6cfb2a1774657806cb60aa70ce9d154b0aa06bd7524e1e517b2ae3f10e0b65639c4e1989f5f34b5030fd12a957bf248ffd921f319f34bed43944ed48c7a7361a446ab4e72f80b63ec69ae720ace05f554feb12ec39747b01e8cbe8a3b7a4fac6173d0a1fe26e32cc0d462fe3809494c46ad1c6d03fa55524ecbec921d97827645700fc7ec88476baf30439ffc39eb11453503a0cd75e3dc34984bff9379805f8446200d2b03a019b76071df733f9197b07eda99fda9f2b64e9476ecbe93fa1b279782c791cd1c0ea815f296bf1d8a4a3b327532b6592a6c8087a9c8f2392322c6a6717198ad0031492b55b6ad308f661f5c560c8a3d7da7348f9abb30c7b22741e5713d4f0c87f662b960b46ac3889d4831e86d05693591ae6b5a145c3daaf9e77b81fb6d23ef18ed25ae64066aa8a5c04d4ea8ad2e3cdf183a5832ce4b016de70733da6e6b2b2fcdf42aea075b5485d16e854748bd0e18029c34ecb03981e8dabd8f4c6093a8cfcf030f8a282c4f0ea0e82ba08d4aec97e625613674946a45171463f0aa8704e911e6b2b725019982e5a00b147fe9040ca7a9b4d03c8404ff2bdcc8e584b263f25abce06d22558f2edc246d5ee347d8a930d2a313e6e38a3d5363b957d4bd38032503425625fa9882550347873782fa216a1d9e6caefb4474b8b95740f7362f13984b6cd89419f8dda9681ecf7cd1367d5f22846d56b5f37e731b686204b12d05e4962947d21e9b16da9e97e9c7109e6aba2b0f136ec09c403852bcfc8072809aeac987841ea131d8ac96fa3e9c2e2189b6f44a142b122c7e2afd069e59439dd4b0f278761050ac4254a7efabf9b8cb5f48f3f4377bf2e14d51ba7fe42ce871d4c591803ae3aba31589d20df0f47e667231baf53571fe03330f813104b6f6f7cea46a4bfcbc789767d1863817cad0ba35e97afec44ff5204407db2c78bfb5e26beb8e3fc4b806f7b9d6083540c33da7532f9a8e20a4bb36984c5b9f01418d119b938302e501606a04b771a0ed42ef26240cf324d881282918a885e0bbefbca29f2be4f6c26005aeacd2898e6158b0292f912cddc0fb80a1b0505e00c463da648bf95b9fc04481d2a88ec5e917c1f891b02baa798bd82ca4fbfe28a013065c93f00735acc1c10c5480a9d62c6a5bdf8a5789c047a25a8028b29ef06291bd3c9662968a28fb8ce355e03f2b329f45a7c77576efbdc3aea29f983205548cd5f78acd48ef4fcbfac53b2d963ede57883e3d124b6b556413d189394126421fee3f71a229ef13cd26ca04d333dcdeb85604749a458488aaae08a3990621a65cc8bc36005ade58466d1e1d0c94a4ef5298af708e25d5e3d24952b195707435f7310c0a980b05f6865eeb0f4caafe507da5c0d9c87f7aa39fb76d5e69607e02e79d82eea590e5b4c0f7097e1c9d3fb81990351ac56f7d53f21d07fc5a28e6459300e1a2444bafd51e10c247216d355bff04d146d001c5fde50b29b5a30e93fab648cd9a51ac822328889919fd52386b71cc800b87967d113af1c6620a69cdf7aa1c81de3cbdfde3f24a6505500296533205e63c89f4dfe449bcb39d8d98abbfad17fcf430e5c4b871be4b672ff1942d795cbcd0c2300cd871caedd1828b7860574ecc5dd1a5c79aae4d6f68e964bdb396e6ac890011ac0851e77e2e427a21553d910abf5db42c4cba8bb62a2fe7553d159affb1202313d5e300ff690930584f064654163db365282ac568f7df4f439441fe8e9779940e12b3f2eb74c652883103a23c1e908a166bd2272d42a807c6f65e20982b632a78b6a9e27fea5a8345a683650cba55c3ecfe4f4596fdfe11392862349ff37e1fd337b0c861252840bf132cf0d2a7909c712e10f1f046ab0400a8b7824016e130875970ba328bcd65d83cdb095c69a20296b003c8e1d65591262c7dd362541139cd249967ac57a6c65f45a35f604b464cd01a030c746b03e7328fd267873563915f30cf466790748e942ecef53903cf0c5933aee3d755b277a3c95921c657d442e7707fb31773dcff5106521765f6005890370f6be4959e0f83e1667a840cbac6851b3418c0aef49c0a9f04a4e05d03283a209039c48a94d128378fde9bfb29fc52610ba5646c81f52fc258557e12cae6a41d8819868e2a9b7e90b9f1c561d0dbb613dc5505bc6bd91c40d1fec7a520ae84b862d602469d234f8e94f2e0f5a8fe2200429682bcc5da6a08e3163520e3c8b42e498a2828f8870fbc273739e015b3d1931b41647fdbc80a3f6c4511d7612b6add15a55b147e9d85027f6f6189d31165710b265cba7f52119152268f0498d37d3773dfb712414f3043847d350aaf6f5ece7a98707c71c0e2df834e44ba9abbf40cdca428aa79640b66c712c9a48cbcf0ae941a0648f4bd9b5e3c9350ab354c05626fc710f0f67f5ca73b6bc28dd473d3448c864db8e568c7d22a4f169928006de4002c5e9f9ce3fe39d1cc81803d92a620001c1b5d81f079658bc195db9d4c1f4edf1c51365e60dc713839c2c5d59e32594111078f7b657dd95411e15febb6fb6b030f80f2601a909b64b57187d89ed043ff2f5b1fc0466d366a6ca82cd1ba484f6b1889b273fc8c06a6d38af6b407c70d3dd63df224319916b193afb8288ee31d6f758e147a1ad156bff48a3351d80ee995001238851afdaec5f09e5cc4a7af585a1059adee03f2f0bd112609c35f602eca98588cb07f802788201c36688c25a860ce90996e8a39e617dfdc577202071ab5106aa9825b86a7a8ecc1fc06992d4ef14bb8925f58e085665d2e4f7f1409db08bb38af8ff4352407f421e8a89c78478dd90f7cb8dfc45c96af96cde15977be25b90694b9f89b012109bc0110120e0869bc1021190cceabd8667bf08f3d684c6cd28f72d6695e0416ef0859616e050f8cb87f630b0004f15074a73b476e5a7bdce888b1ff66c1ebefefb957930422dd7ad8c9d35a7f7a491d6cd4c0961e2de548838bbb1218b05fc0c31064f90b30da48af8e76d29c640bd9c97f4661ce37f7875cc7ac4a9f846ca1a12e82a56a8b2664da018dbbdfe88cb946eac305655cf08126ba7e6c9ed688a05205a11a0c68a84a66d5b29771ef0550bf89c8d302774164ea893e16d78acf1c865b747472aa9e7883adcd9e30415924cb7dd8ba33ee89be8f064e7cab7d3ceb821940d40c2056701003af4e7160cc1c4d2bbbfa78f65d047e3b9f1e5bb510d420f34cbca04ff4f3c606727e4abcd11c445beb7d50fd0dedd28a485c24d2619eb3e091f52dc4ce8a730b13df19d0b03f8799c178c63e220a4f194d23a8294ea26e248079a2e7039e70aee703f107b5a1988cdd01c882d523d1dd1b1c5133802ff08f3b05364c1af27c846ef2c440674b403f6d5f0d23d5de2eb7ee89644f6c2c556214a64855762a7036be4dbd0d37ef3a8d5bcff50251b4dd69404818092ddc5670c9ef716c6183174f2dbdb597a3d78bbea193f33b00a7ed0f92875252dad738eda109d876c73d43d60c087e7daaf9a1c1bc9e92969131ae25e64d0a1ea090e784b13c2243c24eb0c8ae13bf21ad82a6b97c31a0c510fe7b347aac77279a71d554d4de100269eb83556acca91e0164289a6402b290708908482c945b80dbaa54202dea0086113b032314ff1ce33fc397f02fcea025ad19d5f5c308e424e076c24b26969c3a48dc0dae04a6366fd7470b636d7659de0350ec20cec343dde1334022bb24dd7a57c564dd68160dc1b3c21fb70783974d2cbbed0b7763293ba647e3924686b132ef131ec0ded051bd9ddb6dc5ba694a40c2d068e05e1057556677556bf533d799c0a62b11857513afe72a253711d376a23a6375ff5e064cd886fb7dbad89cf78c6337e252a1ceb30e4b994021def145df6b6784b1e150fa9a389f16ab5a746295aaa564453b2f33d32dead7f50df74c7d3cba8c91d53343fbdfcf492a7973cbde4e975e5e9356b2a954a656b97c9308b6d2170ab27a8b779d1bc9a8648f505fb746f4314b3b0fe419a614bd16a1d53638a161a89211266d910d56e91a95dfe9c9c18afcb6f84a4488ddbdf2aec960d8f6680898223b35d7e1d59ebd8fa67e7d52dfeb066693ab31d9ddb65d608270ae4f64f31b4e1f28f38b2a320ecfc313cbafc3bafd7e59db1c7ed972d4b59d4a9ef149dbe68020bd58c2d4466cc3002c5431366c026b0cc00933809a389154651aa5460466488ed8b932c4d66a84fb49c49754d18b9e9b45481d3558f688614172e5cb83ccb7edfa2ff045735db8dc679a54fe9c93be72beeb5e7795ec7d124a72295ae3fce0abd2a412a5d4e62d6aa765cc71d75b3fc53edb895e4c4537d7177cd391f72f73cae7b493613bd9198252d16ecb293527e0dce3916ce0edf711cc7711c37979aabf4a78b23ed287dff8974b9efb8971cf7f2a5f469e93d65547030929ff2626bb61bedaf4b69253307e0fa77a80f56be1a57a3789d45bec24bcc92bf249b254db1f339890ab3e4b3cf8421c58e9a886bb6a1eeeea06e213e3b30eefe45763e8e0e761ec166110f57d366404bd507dd010a962a3558be20c0a54591190b5366b0a224941406860224b71c62f82085d9c322c40e4c94e19838a30115666e6030214ad2c20a1728630518635490414184ea2808c6e1023aa19be2526431e265894145012a339c19334593156518504508255480d185132b28c832c5294b16aa2c4c3750383f6b31a2d1f284268b10f6141462808b2b504061891c68800206264464e1e54916249ce8a025081a2d486470e332580c190b3859157f0243e7940556930585934cc946e605ac51ccc028c09cec954c512ca9be9015dd70894299f954ab1024467ab80208178c14611222b22507304c108692230adb7205b5c509302864dee2058a0b11af5ab1e183d21e9725558a264a732593144b2811e4810e3188d061e295c38412ae56662a5758d05d41e24a30f4c9124fd42c91058ee8828c88282e702206608444e922464c1748a054610198305b782197a09871f9c2503e6d40d31f1fc897534c226ff93557d89bf4ee393b6e07cdc12c1fea01b36611d953a50c01374e0d9d07b21691373a9e25d988c37e61442604639b2a10b0841db2caead55aad0dc37f168bbb668a9e503ad6500f29a656ef67042ee792e57d0f82cb281d1e27459deee5d501617e37345fb05424a187a40d2179492c4cf759447e12d9e3ef93c817ce2496dfab0d5609c6a54d396e9cde0a55c51945b656946416125b7f4a5fe12694373a71147243c7c24a2b4720b9d24a9721a82b67b060bb1308d20c0862af640cb1ef7fd37db0017fbd60b83fba9f77a21890733b7104c1d8a2bde1927cf23fb9f22aec37511facb4b0dc1d1d8c3a5152146360e58d9516fc939f4041040722b1f54a2628a65cd74f2852c0ac732513142a8867ec7c5b060048ecfc541627d8f9395b443376fec7c4c4cea6208cecfc9c2b999a880060480caabc20030056b0f3bf28cad82f4c303931c5c88eb349891d271731d871c292582456cc951f5ec9d444c385c11eb1a3acbd60c759fb82c52db2e394e1b86047b9e482b51982881ded955fa028b1e3b41df5cd0a16bc92e90b120fc2dbc5a1fac3cdd5143b5f5a9aeab4769c14a92fc1e1f6cf9aed36c42eddf5fdf3b2255f8ab2a90c92e1abece3cd932535239939a7228f6c51b19b270e0bddddee559a7cecbdbcc90007cf0fddfab3839d5900962dca3dd31f5174c7ab737783de8add416f35398f3911dc7eeef67f1dc7a53c71ca1eda89544912492491c4379324833c57fe04b5ab5b6fa387387b306a8859fc3da498a114939d6f6bea1f21d7c8e3d26f7e20d9bd7c0eff76ddf7aae35e7622a5a24f21214d82e6d9a5db05e405866e1750074bece585d480c5045ce870830e5b8e1062255e6562e092a5cb09a8930ec2bccc8a9810be0823061e949872c424d401224d5498bda08a0a5620c42fadd01cc270f1f2822eba48c10552fcd0822ea28895a088238068c1490a14871a4d0ce16d038d237d5ec59dcef53b610d7704e5f014044bfc3d9f585f0673b6ce14dfd2d1e9ff3b48cd43ea1f20dd9a0f64e42a62118d1ed1e965f36c40d3c89379b4f9a71a34542f349d5c2e6bc3f09fc54242df7a387850ae27e59e44bada0074c91bfd2c19f2e70493a728a72973267b3e712ecd2f4b1ac80ea613b2060a84d49d4b25984bd7233ad5e48d9ee29f60b013ccf388aa47347a44ed1121e19f0db8357134b9ec11ad4e492404e590b11ed1921d4f30f6193d2258ff48e6138c4f303ec1f844f489e0749dbcb0e32793f58fecfe64fdc9fa93f527eb4f66a3aab13437ee22b5b60e64e175f046f6bbfb9d3c436716f30a3ec93372a08cc10d47227bf85dc9017c8806b2034f220bc03e847d88ece1575d31a47f5ab2359f833bdfa88d1a36653055173bbaad09922243dce6b669e44325b32385fd481b740bd32b4c956043402a17004da7796c4ea7d4e7541d39a5754bb6a58f4a8c599ca4973ad6b158ed57c3fad52f323666310afac515619fd18d6cb86c1ec7681c8302e3dca14c241c63d8c9c646d3c6ec130cb35ab56412b1cf9c734e5affd800e527ca6e39a53e555558fec9434f9e37cfda71f24b8d42b8221d2cdfcb6a65ad86346b9327d244d2a1a95cb1ede0233e6a9635cf580c4445841d3ba9936c706bfe7f185adb491bd82ef74de9c50a0a6216ad2bd5136b6b23f6699bcdf649a7dd22cb8bea169721e52b705ea2706c0512e72b78495c2b62b0e2051b895a00f840ae2a2f2c31598102914f1e5192c92a2f88b95ce58811f37c05482959402fa246c2470c655e9f5336246b8da9cc9794524a29fc238566520c92f356bbd27dfa9451c29062473c14645b92111519bdd8913efadc8fceace3667477e65623f7ecde31734ee98a52c9cccc3c71b8cccccc949d9b2773dc71659eb3ce6e72934e9f3d9999998dfc077694493f02dd663515c17a4707bfd3b3ee04bad3ced9760275228b55fff2ecd9b3ddf6ffe16fc141ce8d32e967b5927ac02c9934747df67f10ffb8c89ec4466e9968345c269ad11dad47f1491e8e7367ae72840cbfb33bf72388088459dccb5f8db1dc8f920c8f7e17f7207361cdd2380ea8deecf0740d9ffc9dd0826e8db02c1e66c99ffc2df824cf67697eb095d9fe581949a4834d39cede7cdc4a62c51945b6ebada2bd2962d9a7c61ab1d6da6bbd0afbd1c89bf596528ad2abb03b3471cc579cb8d40c5f17d8898bcddd87547749b2cddc2505b0cb918f0c98c4666ed880574038c2b02ed8c072f6e4c18ea01c355732493185c7d408119ccf66eee992de8faac03fa7ee5ecfd9ddddddc5a2bc9062090626298ab06ec34f5dc924c50f7764c99810016de62999532e4ad9d3d38584ddcbff6424b1ab0fd4db819dce02faf935a3c8f67feca2cb1e9ed102fba4ee829d3efa752c6c63031c3c53ca0fa60e7adde7cb39f29c3cdbc8e7ee9dbaefe3bc7c0ea50ee96e9d9827a7ae4daa1194d8ad83e852ffc866385458ff9cbed7e9d6ad8a7422031e7d34b0e8bb7db6af0612793d54a48a74f9c122b0a872ccade0eb1ff9e7f35c29eae8f01faea3c3ff875f7f2aead0f1475ffa3f9c03fec32ff7aeeebbeea5a8a3a3be144b904ab7bedbe69c24744bce9825bf5b391828ec316629310f754b4af924cf4b710cc7fecf7bec1f39da54acdeadc6ee9d5b81b5facb0c80b7134b00affcb8d52891b8fd925b51b91aa511b7a57477997467b49a6c16f938bacd571252e5e1e3a494534a1986b38d709f772ca5f3fc03b9530a9d67022b9935f3bc9937f3669e087e9e9fa05b94a78e5ba2ebbaae573dfe52eadfb4ebba8efba6ae63d69e7f7b6168ade7847257b8eeeeee6eca719dbb3be7df5ebcf4e0eefe2eca0a44addc37f8e3fab7cf77f4499e3f7153aeabdec903c10f4c2dd9faac94021989a58802606219a96fdd5d6fb747cddaecc64abcc457d8a76331596c16e31853e98a64637c9b4546331b13f58f53e19852d115a32d4d8c142372e38fdd3c76f318eb5d2c174797f70d67c8ac06dc2cc23efef467a6f01aea5186c9f527817f6a84fc7df8ff1823e41f84e8bacdf59f436cd7bd69e80f0486d7dd5fa256e0e903c3100c3fd1294ba0b63ca078c32c773f89de74a50342fdcbad7440e824b70079e7f843eaf4df5470d640b9c9711cbfc9711cf75aad0d43bf62c7cfc13eb55a1b86218b59fc366454e494c261ad4040cd7fdf06ff80375e50fd97b4d3112e5c7274e9a2450b3dfab265cb8e22063baeba0ea0c17fae03bc06cfad7e1afedd077f3388f2e06b657ec9b380d47dd9d3eeb4eba897c0ac56e5e0e666d9c3537774b21c6d8f34d1445053930d9a4fbaaebc2177644ff38eecb9d14d4316a0416e49e658a8f6abccd87e17ab29406b76752785aebf927d58d523c15fa28a2611ede3f2e50b094e3831f4844cf6c4134f4c2f5ef8f5e5eb25c834b9df045d202306cc1645ee27a70b563269f1c5fde42cb292490b31f7ab20e88e721488c5f2cbf0c68a21c72c1ecc12e2cfa142d0fdfdb35c77c3a010af91cc9a3584ce456ffa447bbbec4e82e77af8f31f649f91e74e29511f504a69f354ef5895a22faabc50c4bb33315e61643079491ac394858d290c189a82335d983061175632854172c314b9f3796c7c343528f0ac60ff8eff7d55ec4eb22557a5755d39fee5fc646bfd20fef1b5cc963bfe8f0bcd3257eebc01f062fbb9eeaeabd5e5f37313b5638535df351f685a71fb658b601376fc4179f42c5f5521d1538ccba8aa196a5cfe1af286b7c862167d011d998fa468a281a97153b7660e5aada645edd6d28083227a2265316b224346dee86fdd6eb7db0472c3729bd19a681b480a033b3652d36dc63efdb55a1b86482ecad113d8b19168dd48cd8dd4dc48cd8d8474f9e61ac2b58845c24d68b36fb31be7282c3e20404ea8c93c88479d538a1889f3903df3db89131de2eb5a206f741d923d30063d26d4c7c4cce653897f28c0a3bc890173a5670c283554850578f0304236ca9abc0121a17fe87b18dad9b79a4dde683c9461a80263c759e3a25aad0dc35a3d8f816460110651c46936f17d612bec5086d065c3b504baae8bba62aed0515d0c0330c00d23525e13cdc7a4a5010745581601c256880a8d2c90203944392e02b7e637ed60d600646bbe01ea0d236a6870086bd011aeebaa71bdc075c3eb4e9fae5ab227ec938c2a33c98809d112a22eec2897722cd970c89d40545b3b0990b2e0d4e1ccacaa067ffab48611ddbe50a7caa85eb579d5272262d51004ea8083ef8c1d5997c79f52fa9d46346bb73969b080a8148dad81a1f6439fc52157a61d355305aaa6f90e6ecdb771ba8417018d2dbbe994c0f166769cb0099b1306837d5672e8ec3582ca66c3cff1aa2f3f84d6da8d96ec99cfc38b6a7e04439241d3c20cef1a2ebc6b1dead844b133d69dde40b6a6943b3861ec386f479cc4b1dbbccddbbccd1b8d1c2becc84b45442f5e5ae2255eca80fa92c7dc0aad39930c8f1db1631bc9ee9e75cb968c8c8c948caed4d081f24ee38bb16baef6a67d9b455d6b335da646d792acc73816b3413de644c8d19538923d9c388b6ea0a2e456dbb08a62478fb1aca8b9c7ae01b9bad55d93d56af36baa1a6b53f4b3e4f3408f1e3cb04f73b34af740a9d81f3206603cd0a3ebe1c58ef2368f28f7fedd13f5772262e1a602100f48cd8e13268593805c4a2c2a1746291676943720fdf3b716c066d3ec46a948634e29f1c9227a16f90e8905470340485d1c54e090f12882b2640e769cb1cb4a1c7bb633d62f588bf3f5f1cdd66a6d18b20ffa59f109d13d6fd34c6d9699356ecd596b62477ea9f0425c6bfed71ca782c28efc629f71d6fcffc57ab95eceb300f33f9f48b389a464c759a39cbc1d01d162c759e338b156c6c1053bce1a19f7e1d7bfd86733124d1076723be5baea9d3e14c7b8747777b3cdce234e398c8c8cd8a886c644349a0fb4a55a3b87cac1b0e19cdc5418ce690576ec645d13ffc8ee8b8e4c27a60373f93b59278b712a8acd22d598a21c8a2243b3618ac6f54271eb23020a69cac8a849c18cb609a3e6b50d1be87e689b13c5201d1c1bbe9d53ec043b0d31c593103927d8163bd64aabb76aabdd8fc66ca3b9e411794cbc25323ca21d3c22d916f6196729905737bcb2e195aa06e4558d0ae495b50179457303f22a8503f20a1503e4159803f2ea0b415e9d6480bcf26680bcaa3a20afba1d90571c0d9057340390575e03e4553fc82b5e81bc9a22c82b79c5d5d7c880c68ece0c19614e0c9c1b1b00a43630cf5c1d1d00b85fe34a710c01b8c557d9474aaee338eadd2e7c318ed8f95c08869d1c676946687e2a5a4b23c449c0cc5a6cffd4bcfc24500a2f44a3bab959d1901cf753b542c916f735ab138dcb5de0524fb2388feb409d95034137824bed4a0a21802beb4c49ad502b29adf5614f423cf62698b968be7c54796be66e07b9e6f6eedd7b8ed3dd879c797090ecd92e7be433b38b2e667e8ef39e38308ba39cb7fb7f8def866f723be5baea5dc93e7e8fba1931724219ef02cac1638421127c00e91fd54b79f372e7e54fa39dd5cb968b2e196228e6883144769c1b2b3d9b956a85d261dd13471f1e4a87e58a02c16f0c1524205bb485c5a54a6eeb902dfaa915fdce8927b739e024d314ea5504923d948305dc66c916fdd38a4a9ae3f6b346f8e93ff4329b23541d476b3e2f78a86a4bbe54976f92eae2dd3bc7d5ae7926f1499ec9a925cb5ff3b2a395967fecce06fcc3f33c368cd8f959ecfcf19d52b741dcd53278b50235480903892e3784e1a2430db7299008d1c51365a4ccd0e5264c024268410b1e6a3fccac6cf1810c5d8c5c0184942c9cd01f9a98f9664881031a9eec74331091d379b49315a376907d3c54072e4b56bff46e83e0f24b16fb50ef8601ad764caa90d175cc51689330359d91249478c24517677e20210c0a610041c4072354a03e1cc135615a35617243afc0b1e93aafebba9cae0b0a671323a99df089f79d37bfa8a95dd77535a435ada185cfe2e208150bb586490de0576d074c5cecd0527a11d8d72e6b34a0a3e6b2cf297bdcf9278d74daeccf830c57e0d0600ef3648b212800828a9a90059494ce4451c14b144c8498f62083524acb0d93166a68c8d04327839953c8850d272b1d17306cf1cd69a5a4decfc3ac235cb2a7dbd274ab0fc36e6726ccb2935d6def3408e17fe8a9f8e4cb1b12cc9da24bf6cc10eeaa5b4d1ed7bfa59c432fc42b0cbc33c3bc4a04dcc0e50299898b5757c12316bc92c946c616e6e4d558e1ac78de121b0d25b02531b344581b95dec15e74147525932dca0b6c96cc70329c40c11b1200860b4b441c3943e68a249c50a13406e6c40b214692d20d5123ca13548a9d0eb88005262e30f0e1c809b4c898a4e0051a8648d2816d34d0ee4a269b92a5252f1b8ee6b00486184b74f8aa4d85ae0933162862399da300cc8784d1989a1d4139c074347c740097c84adf8981f51a6cbf3f0d2356fe583340c1ae72aea44cacfc20963cce4a3efe271f0f7945f844dbad6a023beff7f2c147fd58c187807cd4a3c4a16e7d2f573afc2680df4a874548bd7d7e137860d104500cc243062498129e98e07afe94f8ddea0ff234ffb13861b2677eeaed8fafc48a41dd6a094628f5e07f6f5f84efad1884077e1a31484afc44500cf2664340fef70f90ffbd90fbd5972866a4d1874be4fa571b9867ee8e17769cb2b945da5c26abaf97af7474f4eb6c60cc962babe0dcc22cfa01c7dc9c318bdf451a47ac7c2ace24661aa3749f7dfa86ef7039402f07e81d7f8beca169b1897a08b33eeca3203efafea83b802bc6607fc81b4558948e03fabb17a1bf13753811f86b077ef7267c5f1f02dd7bef892680a20e8fef1375b8ff40f09b8c1008fef71000fffbef4d383df810f81ef528d104efbf97421d5d9d2eed56decab50aea96831e061181d08062e5fbabb9893e397bb0f24a0b38dc8fa6eacc9e403fbf08dcd39f4ffb590ca223028df8a2267cb7449df9b65b53e48008fddc3f400a5531488bb25b4284840835f72e5b7475cba9c8c3fcfec94ebac8545dc3e08428bc135a40c31b870b8899c60431a6c9272bc72cba3f374283df479362d407f137f3f7e1cff304e8efc3fd2d07322062c7b0566b2bd5a11f7483188859fe3898e53f2f0d92fd3b82ff903f09fe3efcbfeff45fe78dd02da7dfcd720151713cfd084e238eb586e1f5fc3d1d38d703615eef43f6f1de9f7637fdefbd20feb82f7cf6f1beef83f807bd1ef5d7099ccea8046e98f52455230400000093150000200c08870442b150348d734d950f14000e63883a7458389988634192c23806a2288601c4184008010800808c52d2180f086b1555008080173429bf6d14223787d5f21431cb3175d984f8ebc85a4e456c72fc2eb310a73a9a96bf88598e6392d1a558e79323f2d7a7ff7ffc7bf4ac9183fef75ee31cc134f5b3aed888bc7f0ccbfaf08c5538ee2534c268a003c643a05e88d498e78d22295203e26395f11c65a1a1b593c307e3117cf3c8631092787fa29a9f958f5df17472dc815542001435da5996f534b630129e22ce030d5ac9f9867cef11e71adeed6112f48a9c18237ceab13c13777151550d7e1fcc71ad26979112a5f04bcdd7016bd51ad4f5f4c7097cf721c68ca249b55a1d63271234ff0b61b402100da17cca049b22f49209c90b09003647e577f48df5723b7c7ca047898475b192087b875248df25281c322105d2ab3408c3907f0381a495f194416ae1f702d145af9aecc29aac467a63fce02ba17a0e1c431a3800c9fd7161f5ff9a7febea937fccca44d53d59ecb691c720e75fc621fbb5fc3f2547540f8f6d5f7c115d604b881d620cb4db67917c90d70a7b2955a1f9ca0f5a6811d33cfd7b2635811af8c1d8c3d08b8fa6dd3defa3e6ae9b70d97848d436631215981768e50834629d0a0aa9648fb62a3a04e59be3011d4095149291720ebe80866d7438b434ec8a83784f425182291cfcd29e0d983df234edb47ad1c14f2612ee786db569bb0ce6e4c00d986a42ff5f455c1ab6a534427a156a5f219a632c2045452da0cf34623d35ced83a61c43ed00490e4d69f6d5082c5fd50279fffbe2ba6ae20c55aac444ba9f78856e6cc1da6a3cfbd18f94251efd442b2147c90373e4d17c5ac5c36e7e8f74f27516492997948be4ec60fafeffa2f19c4c96e66242bbda9a2e9098bd4f148644035f34de5059a7bac5e3aa15c72ea214770079388ba156a92ac7ae95767d12ed98ca6a31c937293056dfc4beca157bac5ed40042b402947c56e5064564090a0a9343ff08893fb3255d2b368421996d87cf5da2e86f4daa7e5bf7dd3b9a18b47ca8fce7fa6f67cc96b6708bd528903f36656c883658df864c820c53ac5835b045a5a1877003fb0171c2a7a51200571573aeced04747fddc25f60a5335f6597cf9c615e60bfcdb9f31bc4d08493ac0ca4d284dcafb635a5ccfff47719293aca740985286f98fc250e6413ec0bde132ae083b9f25c3a2ca4cc57021ee0315d8a15cfaaa8947102351e89ef7a08275c3956586c1607fe9d0f9a4dedc455946cfd0f1a7ba6ad2e5233e8782fd12d29a971b439142054085fa0142adea1662424dc0023b57e7f9726ee246ff48ba512d103db9664bf501765dd43554c8e1ba4b896908fcc925b4f93d86203c8d2a554c7cbb03e472e47ac51dee4405f58754f53ec66bd88a35a73f52489992b1b60cfde1250c06d6808fc80549cc8ae4297c4611b03a67543247af5701326520c197a1791d4afc0f405f70cc28f2f90f07811428794d8284feea00e9e8362bad02c60e38b1902a67d0d6be4540f324c1c5479679b9a602a4ec3a7d005114c2e64f7b3fd3b84269b170b4f3e66202ff979fb38aba41969dfde4ff269c8738c4d2906d78cc0fa06558af73f584e8eab4ddb02619bd574573d4fd480474a06f495e371f8f8f71989db3346caaa23deeb27774b161f0cec4dd8747e006fcc63c9e5087bb37e09c62ef6ce87f09a91f81821385792268104faced38d7b99699067da8fe1c2c61fd279a015143e3d280fa2f44014ae6e1bbbb79d5ab06e0c4d461e3b4400405b17cc4c652028eae9af867ec07c3d76da458c9d5fa5571456ab782b8ea476bc4ff4d3f03ab275ce8ca6f017a1659bfc52df6494fcbf8292afb54166f363832681207dee4a5201b319e669689ca0a0a4b5989ce978d2638b5368c8f3e32e081a8604f3b279d589a1dc841c19d4a2cd672843ed2a5f178a434f93eef078e0c196c38c6ea00cd12657f2d4df51753695dc410e981056dc4c2e5b010a271c8de1fd903a4006e1b82bfd7bea6aa66ed600a541f0b0ba322d751c6d5d2ca4d1af46d9fa3fde00a10cf1f54fce9a9189a524f0b19db911d45e0476d0335b16b8fa5e8afb223025d37b06e10cf1f0c6dc197b80badd30b1c29c1cd65a1841d8b422937544a3ca0a404246596902f39f6f027636a5a138d3159e8b6716486a39f583c83f52a8382f16b58e708224c65671bc0845369a2c95cfe5303b594dbae07a79d42dcf42cadb5ea084b2f0d071a5e73fa315be56cf0db5706d7b666eb895e77be7c5af9bd7c0bfaeea656c1f6faeda22c66b00e8f1f7ac3eeee3e82fcafbc147f76b441f3850ca56d14cd308328436005a90bc8820c611a3f3ee6c86d182ae840f2d8704202a49d5de73f9abe376fa4ffaad306caadd9c5fba71cdb5e45d2c116adfedb8f2eeeb342bc31a30b15ba65bda069bba20865c38903019b1baa6f22d6811bd16cb53091975798c4beaeb3cb768968a4e08f775c526f8905bc2a5f9cb1275437cd07857ffa4b9365f44b2915cdb77467eaee91e92658385d7df408271698d8637aa3c0d35cf0bb3924c45a6660624c961d943681d2316c5f3f2883a240322c4078777404c12a0a010ef462327f40ba9e2dd9faacb52c86a94ad103035e050ea63e098c82c115d69922e4c793a0fa71108e6c2ac2098cc2d5a8d7625097adea9eb76ab1c3547c2875916c6590ba00743dcea3a6451033f72f3278d2cc0ee847ecf1ede4f69cb1b342d86c0ab116afd9e2a576d68e756b8c24cb575b82a5f7d4b5efa2a81525b4efee59effe23b8e6a53e0b3da9a36d4f2896be0854c900592f0c848af1aa5814c43d1e5dfbb8762e1d85bf4ec5d8c091a08df5ba3a7f18ab6cbb468086d16e93080971e639f7682cf02486b26b2778156c8cf4b003e96e9e55d3be3e6fa44d6b18724e5b92f7b7e85251a276beb240a68247437d37cc6ba9eae3600dcdd69f8bc7b87f40cb38bd542efb27bf253ec07d4b91b00d6158a0d9e12cd7c38881b22c1a3b3559eac96ff1c65489f011deb6adf259692ed9170c5f348a8bee3f846a6389f9592d5c597e5ef30aeb602fc8304639907b7f626c4b427e91e42fa4731a5361d0f7bf4f03e0aa7b3b9053a6685bac22469bcd3e6f10a930dde278dc8a9c54652b4bfadee777ca2a1af947aa90dbe9339217cc08112dd655ca941bc1c83f8abbbc4eea5eca6637ceb73788992d968d7e9cf010a822fd3b64ee9beead2f332b928df352f2abbe01433f818222fa463484e7daa51600a5a99d9019521310043c4bd20e4c4e500e410aec838bd1b4e9fc691dcdd8084c81124d097afeaa04e28c25e5aba431a997856fa9bda02763ff04e587477cab03e1d8eaa72c77b1c2bfa0a3236056ca53863b1c4ce49e2f41eb84e6fd7130a47392b8b49450a51a6565fde63357316d3d3efa40e8151bc98075339015bde6b1015686b85198114c5b9e41f9a9536e39bc291d1d3e06743ebf67e36b68ad0e0337cc6bab1de189d5e35fccf292d3a9585fa7a4aae508716c220d8d7aa39a589e53152614ddacca314812b0dbffbb71144f5a076e50d894dbbe54665f617b955b761fb86b41383d51a87847882b9c144102a2dfa8a639d6ded6361725576f10059ca3626a2ad2173181d2d271731f70fac6678d265b6157b679705fb9d7ab9acaf3b6d90e7371ac2f9d723510b398379db3b1b50117246c812d029dcac06972a26d1f4de7341c05f5407c0150001a9f6fdf4641b4ea6ede41f151e471e1631c6d555dc5d3f27f9293fbf8846dd90d31bebe0777145b036f14e6e11d482d491bf366eafc4511a6d090b911f3ae5fcd9d561a96dc46eb039406780fad945476dab2f3251386a874a8b25177bbc3ecc027172730e4db76837a9c2ed94cf65dc25d704edf78586714c4b46e06b94d10516c263648498f80b10ded386ec2ba72044ac9055960c0b5e19408160005cde035a254c3d72ec97084c63f0d4dabcf561c4bfed3d1f5e9ad32e8bb4e0dc1500ddc0856413362f3de3331957324492a8acd1923fabd1bfd3d423774f1eccfca0ef55ec9fd99d40510232421056f501d84ef372f76a9553c63216daa922ebc3ceef6c3ffef14d453b3d7c6547da02d46a49869ec6480563c916b1f0cbc06a2a80cb73188d9440b069a177ad02a669ed2f215aa6a8380a195bbb7e466c189ec6e3d528b5ed940e192d429a8e2a3ede1283a9449424cac128f08131df83841be0112e154ab2d2012a4aae317e7f9248f30f2576465efbdff59db370d8336e72bcdb39eb75cb4f734aca47a1c15db85e4896371a1acefdda5972e7c15c5e72780485c8a6ec2311991912f827fd95678ccaf40a3fc9ecc567dd081ad731608d2ba459c4cf74c06efcbf672df08d73947106d33f563ef211f27c0942594866f10750b426a0ccf5c50577fc39a35cab28830f126e32a8277673760811c37c5b9615ce32fa5905f29440ca01e77afe5e9e8e713c91c03336838f5d705e272e5776d34da019289dddc23a263ff25925c4a3c75b072f83344784d6c9e2b893091d858491aeaabe37b51e78dfa1675382d9384c239e1d58251514777b3e7ed0ac59d09184e42b1d8ce14ad112b0d067cf70234f560b7363b3c1ca1bacc89ab320ae06018e398a3fe779ab525ae08be2e773102063244db54fc555d48b8c0b6e13abadffe2fb3b3f22881a4bfc9edecfc05bb172cc0b7743c47811ca092d3a501d860484ec25209812e615dc4e7a9c622900d140600a95906fa3728f1983284323fb27e508393623888e400069475302a4a5b4231a111df465c49457d3cc97209cf6c30febca7d875dd7de0752bf1540d06099ac12160318646e8e41867fcba359ed10ca88e1b4d1dce1ad204426ce64594a52a365da5a05ff440ff4ebfaf162f703a300877b1150276a1b370fddc2a82a38536e504405f0f4bcc6bf7930a2421e6cd5981d21e0cd0623785b51b844c1736554434c9943db3b99dc63b9123f6a8524bd0b49cbfd5ff3880da172b7d94822e9c1031f8f9082c3934fbc7679947ff601a03e1e4e8c1e31c98b6dd91aa778ae5dc4289fb6a1f8304d0e90da35652ebaf878637c8520347c4365ee90f735177cc8b64a8ac331b0eda8a84d4e9de248f1bb8eb2e127d9e4bbcaed2e76186ed987d1c1d6d7c9b877b4fecbfeeb4ca20451fb098b69c9930b49d3b9f9d08e2137418d4669c3254d9771a0815f844e9bce8447c3bea39ce8f369ad06389678b41561e77f8de4d74609b3e2652c53e7938c307a77cc14e1f891ac3916ac82f078e0a4b42d875f86340e8e5b247e4bc67fbab9aeef60d4c6ea67e8699ee701c22c3f690140311e60e3f6572e49a2ed0a3ecefe52971b8edf47f495a61e6b391c73de1e460dbcab3754b14ed4592e851b891729daa409170a535091a7f180eaf1a17ccac62a39a3375086c2e6cdccf54ac9ccaf7b0b9c71e674716f5029aecc4cb11b81c543b6f7d24492a8cd3b6fa8b2483888195c186e432b4477005e3d48446505a5b0bbe5aa29fedd4cb780f80a1fbdcfee4021daaeadcf60e5a28c458e5b7d3cd782ffe62ffcfb12c36a150fcecc320bfccc2f8ec704e167739d09ebab02573a9a1a69f4d4ab43f31d8b05963a5a081848c2c4233de871a9873f7758a5765134b55359ed1de6a95cb969f9de93b66f55f213ede40bdc01b2d8593df8ab896aa901e2b0b0011782015b20370115dd4bd6dfe56f247938b094ba16fe7098e37d34deb682a6e6431d6822f3ca06e7482270b079a5ce9528262282731ec62942f4c1b9c1ea5422bff86d47c5e98923310e1190ee7415bb8689f4e280d40d06f323ef3dbdc3c552432f4e642e7a65627b2e7d0385c7aa7649c0dee80e7195878842de21f692e1892a94040068b2b663b9ba70fb944bb53a1a7daca5789bf2eef9ca61879376f58ee9dbc07550ed5d2349e223fb80ea6f2d083fea10519d8e86f49741546aa35dd4b544a77b9d8e4e3f6c5f07c1751de444170461266e39899dfe08b8d9ec3762a2318e96db3cc55b9a25428680a7e50eeafc7964c13abebed921e928bce8c5921043c4c5059c24267173b55b5fbb664c3bd287d2b86703c473fdabe3de87d8ce40856d5ab02682a13a8f06da746d50249ee3a10757fd7919ee65e0d7cc6d57620ee168a0044b9d20bbb9e4921d28375ce895c67ac948e538deca9beb92beb41ceb2b9721fdf27a71d36613bc7f0a35704276eb3371ac478ea617376b92e3d643670647845528fd293e47aab8f1810c29d8a2226bb73a04c589c7565b9e89978cd9986e735ce9b13c2c9a5d83d2a645386b535b87d5ba8f906f4a257d1d0b6433a90e4b130138247e2c99b75a3f8274016f1822419f098a312efa00b1f548484c3a4516f01e38bdfe358a9d5f6d43df616e245b00a95914924ef1a31517dd88c3d2fd36ba60fa8dcca78f091a80232df4e25e03d1ed4f804435d268d86bf82277eb68c52692c23b4e513fe607dde8015834d5cfe32785a400bf6504393bd3c28a3f167e8377f470c9330add064fb89592704c4a20dd84eb94269a20ffa2b792199189d38b4521723111d20b13aa46d18b3c4bc0427ddb18bfbd9a12935e445ad55b71dc8fbce8f5371fabd9030212dfef4c14ab861e9c91bbf4cc1fd3232d5a3438c85db56f166bff5c90733fa7b892764a78265d945adeaa16eb07810fe10a15a8af058eb8252ecc40567ba59f6d926dc589021f09b8152176a4200e89c42ada91ebc72816b3445edc0e8140de6765d4bdf75b58518134a6cddd9f945d4daf62a90c83430e42d0ba0cac1340ecdbd42a434a48f5e4fa95e7d4ffeae65498983e3b0ad5c40a75ae5e1d1e2d08acb650e4bd3e4187b402d52054a7863bacbad1e169c680ecd1bf39999a13df0c9205ecf351428fa694a1d4087cac2ef5089e094783c24d697f4f71911d1635f2fe87ae35da1097512394c3368546cd5912778d8b333af92b9ca8114b9a3df90bae06936d092f26aa81c7b7dff33acb7b172d30dc1e8a7ea0c2f31f506faee7c292770c00c6b1bddbda89598f08367839da80e2c3aaf08c6be0136d5881fa75324e837eb3c4e161d580e0b6367afe2227551be580f14cc1803328797aa7535a01d964ee402c2483e96e5dc17b8224e8070cc81015849ffb4f9e1c2471f146263011e88a02997a0270a62edca2a8e33aecc1a3b24753e335bfa1a4ad12bfa6d830f5bc1f64315aa55b1bb0d05124ac7be1f8378d6182542ee4882701158ad6f2de57dff25eef1ee4314d5c4c12916a47b71cd7977114d7b838a794bfbce4006ca5444eda22d548923a248790ad59e161ab630b22a724c056139540a9ba68666a380a64a6fe41fc825eebfcf59a257d275f1c9fa60d13e285d4d2187f5df3dbb341e4c7117a4f981099e4e7ed34178a9d0d26d8aae71eedfca871fa52e5d5c60d0422ca4305eafa5172e343e6f72649e8d7eba3b0bc90885d9a7c7dcf851d8e115e2b3cc4d33755c8794a4957bd0fa69df85bb9497de315b018fe8bdd9aa6f73c98548018591bdd497e2d20526ab90a08b33097bb6e48891f04c9b02aba8f2a40b03ba539b227dc2eca7197aad1c56c1c102934da8706ad35243ba108492485f0ab44c1d572fb3e9f74bfa49409b315d7e262a02a4d4d4d9081b0e301be2db5051aa67d08fe240565f5e17a8053261ef2330941ba566db0cff798227b35f97ecaf25f86542d14f21438114c4d807bd54e563857194ed8a5683cf9151a56f925ea11a70682815d0a271d100447451f32f8c182dc2f31825510810f7221af63383db0d6c37056635629729d0b99e61b1efb167009f03cf9583cb927aae4577c1c9a4a409835f90d297b559d0261c664b8828c1c3d33ff3600e36e032da21b6e9d7f4185717c1ebd2d814d0caa261c39c43d93a0392be51a4f9126af13c03596e5663f0def3dd8e6657f37b5d6f957ee86cd3a7bde6ee75a6736ea0512e06400b69302a0a30c0b6eca981c917792386c5c8b5340006db76063db6b851ea4c07a2cd49f2ef7f8da574d43385a2751da5b921d06a87c3aec54fd09301135938be784c26a8629b6f4c0178aa3065038f054287eed389d71da92437ac2224316198ad83e26fa1e04d94454b4b15e30783c6c744bbba8b75f0e95a0a5313b2afae0ec2269cd81131ddc04dd78687dd7e2a28e89c2c1be0a2cf64adc051e7e2e49282f622402ea8e2dad26c717d083b6f6ae0869c27e52c8f78c9f7b0680da928e878730e653a3db92c646ddbe2ceec3861fd91d1102fd607c1002a549c59a8b3621820fc7f9e1227260d2725f09deebcd8d4cab1f3150578d5af030f63483f7060ffd9825f3d98c80bed5b3d1eb9e1f79c61f971b9131cd26b2407c611e7bf9c08806afcce1f921a991d521c293cf98330c18ee7d1eaee83b46cc3e1ad60b6bb67ae120f284d52dd2bb405f0f4d9f0024e9597e1776b288de6a2ae3764c85f1872c5215d6fd4fdc6e46082738697bffa618800329e292c4f2a65fb0f778fd4d6b2198d9f00a8fbb0ec38d9bf058edbc97338619973166425091bd10c2ed5228d1098caaae889bf84c4cd306915e69b3734db8fd06925d07db7895db9fee6ed4912b2d698d3d32c549374536de61499bc77872797323db8ab3a8ba673c6f468f89adf027850204877cafce8ba341253d066bb3ab42e8440263c9a148e80f6a8bceb021d5284a2d5bcb089697dfbd395339ecdc1624797f60c017f70e5be985d4c50efcbd18b183af21561564b53e49be95265d0e18bc10bc4b1958820cfd417d2ca68114297cef240effcbb789bca8fcb716b2086f82731b7ac3c4a1316257448a86ccf59952f725bdaa8bb8986b4c3d73243814f0e0b2f48a36af6ec399b5555de9a95d56794385f08fab46417a74842f96ad8cde717c5ae1679b5ae27bf04dd916dd8bdf554cfcc6f6c215e9790427f483457d9295ffefc173eb2293562fe714f5cede711ac0caa4f0f89f717e848a0e2b704133be85bba83817fe6d4dbfdda9f1557161d5c5fca3bc4867e17faa0207e110973630fa17ced51cc316da620e4fc118ca41432845c1a5ea0042e8adf8a2c96f4cefbacfec58b2284b0a02f73d8a10404a0b3f0029d15b4ced4cea53528a673f4529c8d4047a068945bd3fe5bddda687c14f9d5c5ad9891a5057185d6e43f687d19d3d85716f8ee9abd77f629046392a16e5e0ef53f049f3ee3c144616428cf37b845b1d26285fe1b75edcbbb40c5300739190288ffb869577fa83bd8f94f6025e8427f2efb7a0af2fe579526faae9b7f2d76b3be123a7083844ee66edbb693d8ecd3164bacc1d37814f96567f47cd486cb011b3fa9c00a7efdc3329d3be943c5d8132203c36279ad7b88ac02529c62eb04d048adcd445c47434de3994ce5d7cff69ec7fc5684ed78614c7da39a2b251c3c10a58b5d588475f4c8d1a4048e1a9999583a68f1e2e07adb7f6d7c4e15ff2022689241f0aff8c830591f8dfbee0cf2716c5f773b17881335708d43f9f044e51bfd596955ce2a81dcd0f9d8c1cf69cc04d189d6e488dfd0fbfe1b4faa08f1f9b56b8bf2f962b4679ddb129518bcaa30a9f7cb95505593b34dc9709a5d351cce434c110d693099b428965b12cb5b18e4221305ba9f32b280228c5f6abb85639e5c214c72d9d992f77779de872934e1a6c4c840e2db66bb20659a23507eacafd92fb78e6edd5b0b678545354ec7dd68625ef876498d6e54387f0ce240162d78c7427285a5d340edc9d02cf96845b640c05dfd2c25f69a5c02f2a10d5cf61ccc08af631ddd07f30876c29db576ecefc3978c03fdcfd284321933fa740e1cf6fe45f16e2c8779213aba549502a6cc1d268dc4dc6470be5f6d1b3369b0ce1fa2b7fa962f484a43b03fdace0b274598c12aa44251405eee7ac38fcb9febfda3bb2ada9c44ac496864e272782e41938a6cf59b06c6f5393b6eec02f90caedda64054eaababc6828469bbab9730d1d6eda4f4d3a2433d19d6a6c452265a620a1431ff2b200c6346b5ae656bb4516457cde0636d81a790306bf636b9b8bdbdf8f8162db92dc9c823c8ec2146cc9d9468194fee516f998a178ac0351d6e60c05dc9e33f457b07d4be2da2d4d69481d113c51da02829b256f70b22cb96d59a7c7cb512cf91b68f77e56fa00edb794e52f45f8ac1d14a48cd9d6b12c65b64e2c5462172149691890c787f22b488a8f39f12cbaf8da617901f3d4a68002c65d74dd229eccb2e360c9fd1ea6c976ba19b60009e33cb30a8b51156f29471d728474eeac69f6c1358d5631175ce50ae9ac2e37c9710b3b360c2355b4fdab72672b36377096bb95c50726aa2a22e831c86b182eb2fc34e5c5eb3faef931d296a3a00a2ac20cf40bcce434b571b931cb367568b46f4dd9aa6098e692f4a2838474fa33ce3770d8383fc25a2702f9a2ea6ce5535d251de3df480da5e4ea8eef55c2963b85dc52036d4a12ec6c79c68184a8dc36785d163b17cee2196838ef75cd1533c63c6ab2062082717aef64fe4aaae0c2ce644322962cdba0590db9c0d2b75741e40a033764177bee8f4a0e1d968f7c5b903e7a42a3531c7911b2e4eeadd02c58cb4a83e808f95796bdb0b06bb2dd4adc8dcf9c6d85ea73171c5b7540b2590bff05c0699746b49112f6a37ddc7c72b57144341aeec4435c5faf5a4688196d4b458903100ac4ae23cd5aa6584c6c6da14d77ad80a8ea53f2c8715f17c08c78d60b87ac1359dd55e9901c80810b6673f3facee19d7284e0f45b45c8274317165862eac1a78bbc5efc9331558e1fac1bee0bcdee0200177ed0677c2afa854decf97c2b3a123cef1f91c671ad0f9e8c030789a9c6b02077587c338806c4e8680854e68d1e0961153e06dee293052010eb7f8b7f5e2c13bf426366b0ddb42d47b3c99638494f5ced160f3a22d24ed6b2b1c73b506a11278513a23a85bbf3f8279b005696b752de5626735b69c538c6688bdaab0db6d64f49ab58e7ce85549f36ac363e17b6ec94ef02ec21149c675474f12cb5437ada524609251a668c977497dd6f9e312112f1ae057008f1444702da338a14cb1f912da164bdadeaf12b887ac588eaa87d45a368295dd53774db511cb7c46b8b4fe37809d5c425c722b5c3e5c555343c8639e6144c10726a3d9026129216ba88c969f87b5d0a7255535f70500531da4bce78020cb27224dc5c45c035f407d5d9634f134d19ead53d82495b4ebd5509cafb53cfd281d90a4b288374b463c5cc7661eae498bfd06bae50649b385840bf55c515dbe058148ba1f27d1095b06427729a621e31c33c675b6fd3a444979c950275081e0deb73597cf8f67d322793eb7939451c970c3b38de3349bfad97704b5d11f50b81d3d229a2ba9f0358fb85d9c48fd8447f83ed025d26e4b9451365666896251248cc99b938577e96eb15acb49d198fa8420a2d89ef42199959292bb74cc15e6611f27e0497e878345e2202a70164b5f26732a51a42a98152c09516c6bca16d8c7fadc9fc5e913a2d246349ef44428a0b87b72ff43a33aa8076dcb73e24e9cae566a368f9b6a17f5eb96c1428dc6d51c77fdf63b4a53fa9e4d254635864dd3b4252641f672213987c7fb6273213e3b129b5feb57de3ae60037efcdd9a0a0d1157b6bd4f2aa7ea33e77e9bf8125cc922420321c10134d666266ecda2d15fdb9c486d80327f5388d8608b159658b088c5c19e94a7fc3d7885be37a562d920eef8c01e36e47c776a6409b323c981f7e80f6aeea80f9a50a2ad3870f1eb05ebb18a487e28143b213b724d7cf4a6b81bfff8ef9f88d3da2a766abdde7ce2978a7f5e3dd415fa725a0a91cffc4f4fba803c4cc273b6d1d6c349a720292dc0b6ec139d570f7d5bd2797c9f9076b744fa573ba841e95696afb295a2c0fb3561c9c4afb861e519adbc5fcfa288ec0948ab79d68713326bfaa58018410f9fd47d7d414c5465def688e042ac2ea89b0b73804a30b6ee7439852117c0825178b901641a4af2f46880a476860dc5fd828d0420f007efbbe395ea2df22afdb6b6f9910f7512acabb5d26465e4614b347bc76df98d2c09fb7b492a4099de96a84dbec1d82591456bf0457e1f2904a3c1b795a3eeba839112623e7e95bf946e65fd18b30014c0c67cc4ffbf4691d128016b6ac607401c92c8dd3cb458a61909aacbb8a89b4690be40eab8af1ce728ddb022ea46e02cba619e2c8bb78a0048d43f37c3c20f38c03969db8480f1523a4fd7f612b9b0c97a7589a2c67d0f8e8d4922c628605cd1bf5a65031b9e62818301d80bcbb73c45094ef5cf4db2dd286e8341a593e087fd49b985fc99cde0fa4ac7809069284b4eecd2eedd2ac3f3a9f8ad9765134de00ed0ab1658ad9c2bd3b5e7cdc866bfc7ec99de560a826c47b2cafa1c7d28e94f230fbe73d9370412d8ada88d777662c19f0cbd264b562fe03dfa57d66676dc41f259dc6495f780296a89f2d2180cda0eefbaf1459d01a7109bf05ec92cb21fae738d447eb0ba5fa7f0e1eaded14b42a5c46e7420d74b67f9042bb0f842c8210970c95238fd9e72383255f49c711b64936d3f260bfabd164ec914f95c54061b20c9964fa1d2148cabb0142a0d06f6844a3b40d75c2a81e748948f5be3535579be4108c4693a5fd7a0f3342a6fd6ed110345a7c8d8ce8ee00dbb5be86bd7ac3d4fce932639703141f1ec644c97912e1580a1e31a261fdff45f6297910a7063c5f7353007028c76a1f27e3f6bb399bcad9135e82fbda4eb6d2eb53f193e53d52a2d19c04c423f300d685747f26987d15ccb6f559f0ee57dbdfcbc2507266d1c5f02347507034d6ef6a489065e513d699a0c7355f5b89a3b6d22c0c4cb3e53607a126266172493039c6c547c6e12310b2902371c1f3ac4810512b16a075c659f199400bf9509d804a72284d1d5cb55f7a0731270557b74f95e55843d5a617a1c761caa3a28849b832e1936aa3b079e17a205ff05e2430e009f7a3bbd73535e057f86302456bca72b5cc340861dca4948c10cb97cfd9a08f01de06c5f6717c27766d9a1bc0b8595bfdca194ba6b7210bec3d0df58791271b3644b2092c60009b0f6954b70633ea009a489b3f357c3233bcc81f2bb87493066d4a0ed58e5f382b9acf5a19c8a3df261df0498a61ffa0bfd70e7804ba46cf056e7e7a5c6f739079da1dd0c1ce1079c8da0b320b2ddc161d4f0beadbb88e8f457b0c07419798c0a5551dae8f739accf350b4d27450e4464867bfd2d3913b58a01dc4884ca97072c2490680026e74924f727e158c37d352e9fa5d4668ab35c7a5726160f65bbd0292b5ee6800d5175264e98502744c126ffd42b6aa11197d35ab26179231a79ee2de66883117da034559f7a61ad15faa0eef975cafb524107073166cfd037bfe70056e79bf4fd48c92e51b9856283d144495a965bc8ec3c9280e8a7b18a01077e958a21caf6fc005d0a7ce19dcac0686611b685c7dd42ff0348c00a8e8025127606a88fae9370bf4bcb6f33b2fe3ec8a044abea1d7b8317fa7c298d076e14d72400088043068f87e154d079d0f7d6c8f5bf37e4394f1e62ed737939650e9ff41302ebc6612f11656a0c4ddb842fc5aea2e221d563e51c32dc0549665d6cf39da6f10b6541da1ed3e0de988e76a5eec4c7cbdf609869878a20efc86bd1e54537548bf723bc6fcfc836594ef07194a459c087e26c9bd757448030608c45149e5175a53171c83e2230fdabc673282df8d45da645869049cd6de7e759594129eb99acc42424ab0f4478d0bce45d73823ad495a15e8a9fa4dec4600a782976d17b1c00931ddd53ca83b2011c018368867da6438f8cecd84c1da560c020ac10cf6fc569099ce9681237399ab4605dd02773b7c885f87e8c060279fa2a93fe6e5c31948c92d11b63c9f68015f53ec549037f80acf79289b93a3aff0a9cad9a8548fb3c858e4abb6ab69f479e0f3bb9f80384de9f48a474302926727ec6707e638f1407e0c9294a86cfe106f4f9e3eb3793a90cc5a3323177cdecf5c6b6dc049c588718b261938b5e1d7045986d8e850b8076092a9f9cdd0c28433d2e0c699099136ce11342da4c514850a67bf0459946b3a652e6c2783864ddd9cce805c651ea28ffbf00e9f11b3e1c4bbfa5939e7e051b172581be30ce5b5974ebe03fb4c79b16aeddcdcc9d90d5db2ad4acbee01a2e7e63322536cf6956e0094d50461b3ad6079617d3da533c99d7e4919d50076baf3ee5c379cb4ef8d62fafde1605718875b1e7220a37e783c37197c2937bbc604ff83fc98c1d3b24749136265b9d3397534481ffb26d4ef3cd012679fa0d9c7d0293b5294bf3897c723e3fdf94c70f08f8c6bb8ac6962328cfd9797cd8eadff34d4cf2e0a0436df806e7156b56f5e9654928deb883b8967a70680af9c68762b16e5df2dd26d60c62a0fe33ba89c9070c0ed7b1cc5ec527c495ee76be4551ec74926cfadddc49b68b300f1ef043b4c3c933eee664391fe6203f1d1a7143adc73675e5efa0592dc0ff2887857a43e60942112ea2ed8a8075284ce668cb200be423e42eb90f3a5490256b086c846844e9eadc745208771792576ebe593ad3993f6e0489e1f9770996185bed2ce62958e7c9d6993f0684904275457c82c0326be9a1a1a1a4f3c50a34b41a89147072f5b0cb9a0b72941c06b365bd3a9548ecdb2b65c57469e2694a25fb9c2122128966cb6a4ef8be36d4b9ac1eb39835e60dd862b21a6b5adef5a589a8d9cec757e584296cb0fcdd6795dfa6f501346886c55dde5aec84c0068840662d98cda38ca4400dc7851c089be98e6801fbc3df71f51e09880966a17ac243f2d55c4f332e0f0b365b85116c13ce002b5d817f0a68d94141ed2969239286c63c920482b6a99969eaf32fdb948194c8a71b27c7d0bcb0242dcd714cd0350e547b654ae4f53316dd5f49f09538ada69cb13e2109116d4c76299956a26b9748ff0409c2c46f70209330432025ea91dd9e113272632827527bc2c0c23db303de0b93f7511d5bf8cb7cb0ad6aead1b81d663141f1050c93d8142b2bbf3c744ec60e134fa27fa7f10927a63b65e389f4fc149c0ed7df2ae14d5d7037ced380b889c59202a26fb6fc20bfa758a00157d78604ac9892e6f0fd7a891bb21022133c1f7c23901172414cd2be7b90a09936399f1d6e3d0e06921d953dbe817f9aed6d1dfefe6ec3648a2ee0ef1578b46361898998062f06a9283d2a285c7d9429102d74730915a918541aab42971f4de2c23c7ff3c990ccd4e45b2b5b7df5570b6da12d06d41af89b8b126d123e4fa2ae4e57371b205c7223e823b6792bc63cc94ce98d7071d5600ff7f17d7663aecd33add66198e7960694539fcd2f5e05786b7f81992375da63ed993744905ab31ca334e04fd4cb42b084984af56c8a672ac894f478a1e2bbcc3a2e5beaf4313ddafe79458a22e718528f5701a6e45600ada211ca767620132a5ae3ba284900045e32ad8c5839edd1e9fda677127b78086aa8f495dc3eaf73b7c03104649770ccad390a34f481c57ccb596c3e469f63ab1da7c685a177a4580b743b69a95d57959c1c74b3d367f8ab657033af61a2367d65533986bf5faa1a586e4b56e31882488343a388debff67694df3b2a589e843225a6d284184dd3e3b847a8249a6c74090e8d36f583ec1378e68ad657796551df0b56fd7b57f4c1f59459ea42871e006dfa32fea6358212a8be7d455c777e73bba18429679634a300089ff1b5d5f67d1ee6a6c4d536ed2f15e40e61d30580c100fa0f4ed7fcf45d00322e16d4b8eb28d809758ded646ca98dcce9a5e66bff0148bdf58ebbd3b9ce42fac96fc04fe99220466e1f89bd41f01ce88d6b5f17c4654813f6f3a0fdfe6eb9bf2e64673dad5a73a100823451a0f07a503c1d74f3b021fc39b2f2f6d1f70169167e3f24e15a226f85ce4c610ce7ab8e4686cbe2c1236b202a415333c41630e4c309e00eb539425c18d6d0d3c352499a199c3b4426d58db12413f42ad3bc4dfdc3dcfb77445defa2e7e2a8f46a1c2d722105863dcca5e3256d11e2b60bec59a671b2f95d26d17555f41bbd6cc749292ba46363bd808c88ba486172744cfd273d7c763831e93e64871f3e6c783d2ae32d6083d8a589e11837082647da88e9158f3c96ed60a11589f933c3f0b472da4dd9214ee9c77cf02000b07036588db739386c23f58fe0c8701c10eb899cf73762c54426dfa19d0120043eceb08e2dcdb866074fedf291301a83184b4ef9181b3bd90610181019075f7cbe15bdee86b68cc8ee1b0e14f263040fdc6829285c1581c2ab0a9b2a140e4a6b6903c754460b564b959cf9eb917330772344880b2130f50988e2b3aba8cc75102d03bcfd4ff10a7c36098efaa186fe7d91b6a364ff112b891197a7817363b5dfb4885944dad4e43e006c44f4016ed8a27d0f1a4c76a187d97f9c6e03caebcd7b33ae2f23442b1b5e00c7c83602e775ef134711cc887ce046cf0da40a3e9e7ae321254a28ca2a434a3f700093ad15aadf19dff5c198e6ed071522dfc939dc1fee3fc7ba8123dadc4dfcb9884afc9bde1827803236a8068cb53186dad01f166964fe9871026b8eecc80f2dfbb8d8e58488369e822f9da18bbde8e58ce93ac26431445f605f2fa5bfc1813b60b51b33f82f5c322b00946d1a2dc451c6fbbc23a0b4d0b47e11a6afe2b8d65d0b34ed4798bc5760f61982c2ca7a2605d81f770b4a4953a7d65ad211c0b96f9a128e6a7b879449321b06880459b11d3be112c755f8f8b427ca1c938c2b96f99d1d0c75f7896ca83bb50c896090a4327e8beb19e46bcad6f65a295703858b5cf9141632442a62e6fbca5e546bd3655e200c0eb086772220cc7067340311001cffea06c413231a7d290c9c74f6b1cae55aa13353bcfe82cf5ab7cf921b8fe27ab8791ccaeb103f63a04d0c903fd411f41283254d8d7161bef3d1c530e674ea71d069eda41315a54fd222bd15b864b4ddf2c5f5819110dc1e420dd9168a5c622c31d855b84ad10a650fcba78d2e8a3d5e62140f9421772e68a0f85411c53c408aafa4223d9d29d61fa199144beefb34126d5e908d52ed9caf65f7609dc3d799b3990230c4d5f67b8dd965bfd55604e6d48c4de8bff50a076df098cf10b1b00e6bebe015eb9cf308b5f2acf074877c95bf36f732ff182bbddd9a41324d2b1e2e966094f010a7b6d1d8b18e6c929acea3e5fee8e905b55ec5688f2e7eec6aec775e116300281f5cef3eae190d0f981f500fc1638203791d7652943389f0ffae6e794f0c7d7a741084c66a9df5c3d0286451fc427b132c35e558fdf6751e0cd6473d304840cc0650c2a2fe872ad45842cc2a8680f26e90141e8870bbfb965dcd1db7669e8a46499366079ba6035173c2aa4132602771e01a6591b25dcf72da42872b043f7d28fad0f7a066426ef026cac2b86903db661b301a90d8c56f8fd7cb5140bac2d4d6271d9a1a479855a6c5a766c009341dc9776e7019350ea8721fb35ec80c4644ddd0b4e0091e4852080a5995ef18c96fb3a685ed9f86400cead8cffc308e67ae85b1619179eb866ce97d907480df3f02d57f6ca474b97793da6d752ad0804aa8ec644ca8d13e493c84e9514f43fbe0298ae34ec11fa005d1462d97ccf29dd853e4406aa7173b7ab7ca244ae76f454b536bf763b4bb8e5a8353347bbaa1353097bd9d5b096b08aa223497004e4ba2b20c991bf6e48e1abd282cc0dad2179126fe5bc2ef1af78c74badd5c47796027d6a7d3380e6ec30990a5ffc963064970f75a06813f0e9c39a71857443ee29c3db210d18230ce8ec2dcda0aeb46ba0c8b41185ac5bcb013d969438654ccc7c08eee6ed714cd2bfb1adb3a7dc4066c1915a1b4ff5110b34eb6e78eea54960e7e8d1ad8a7b1d4e1bbc9ff68c17d29768275925104b776194f5d9d05d2f5c0a8e56f570edf337352fe3bfd56a50357c3bd7d47e9184e3399be45e594ea1a467e4ba7f5954b1b8693b4b64c15c0bee574f9ca8a94c1677e014eab1230ac25d7c8934451905f18e46c7a3b6e0202851014be0846ae08167dcbd2128f4588a77615b0bc333cbc84b3f2975c4acc7982f28861d0379f3564b1fe1220acaed76b5a20c00767a260bf52d0fff7566a27a04376b284d6152a71bab7e6ee09bf1f50426c6f03dc4e55c7597537bc86cdfb3ae92ee33737a640fb6dc712580b6488ab8599824fba6ee5b202873b3f1528e3b4a1cb328591a0ab8cab7eac16f514206f9e4cb1c4f7b39e56dc140209568d564492f1bb7d4aaf0006ae40a146a6c1d624334411d7b0b0725e7f25f6f769ef6109b8fcbd1319de7b437be1e47367a640cfb8f6a5ed376f583401adb52a282a1862d08e6b5ec102dc5afb42ac11387d72c8cbcc39d724db4304cc6804fefa863cd9a5459520727363fb161be564423b77d27c3e7c358af4e3badcbddb9d7abd9f59d36e3bb7cd4ee87e5ea1847681a27f02ae5c5883c16f2dc3d267712a63db19caaef32147d47080c43e2390b5704fa674ff0b11da798de2b21594acb42a7fcd8b21f6aad79827e7a95061988f3992cb9c1d75a2fedc164981613d4b7e980848e9ef1190265d465bf29304b145f2755928280774b1a9069f93d015c90ca5605497f4bb2317ee14c88823a4b75e47fd13e72795088df5e24a8709bf5fb170775775259614f81105f214d0b7a621b5beb3223c1ca0116e581ece84069e8a70fbfe19ac8c014bc2dd5656006c38b39f146151047ba81276a293639f67f28a424d370dae5a40a692e81219598283a1bef47a60233df4377c488af1b37713a27c7e7b9cb1404844f00c9a9b20794440d3c7dfed667af0de0574b1ad44fa808f94ec7e82c2997931b7ebf1907da21b988a3b9edb357a2f5d20250fa7af7c0ccb1f0f05c8e72061574a9447451215f67a0ccd55550ebad603e9acaa294c93f33d9fd7ff3029eedbefe5184287e23ee2b69fcaf6a8d041dc14b62e660c3bd2d5b6ef30dab6841e8c12b2f162c73c8e5f4ef08a748179af12310ace7d62736c499e98cf2a3004cc64b28df8c70930b551a2481577d9fc66f7d61b416f6a97a328a41962cf0bd68cc84745200a62117cb73bad27a97382ee075276e874c7bc84d0a72eda4e19fcd86795462b007b1b707ef952aae4337e0d63d9b6e3d1e7ec0ca33e26399c2cc87fd5a40db9e8e90cb5fa3a64b9c475c102b4e2cb187d5a2e19c9f48b4e64a4db293bedecc3c371a1963a4e0b138d140a61b1654ba14cb96c39e51db1cec77e78652b3f5fbfbda77c8fea7eb2a88879c8bf9a9a4c3a191db8f6facc84b602fbfa0ccf96e78461ce13f3863ccfc09480cc49946f107133cb225f429fc984cc05001d2d3e1a5e72590b9fdc51c3eef1582d9e1d8cb05c3b05a5812711abe1d849d7300c7c301c5d95c6baace8ba87595a9bde67f306916b0f6ffc132cba1b8423c16e9e2c0755dfdd522fb25851ba5b10ee6576df8b15d2f8bb296c3487fe24830d1a8bc1431ba9443d9ea3a6601eda2b95c5fbde84a4945581a9d683fe02480abaf7dfeab4c3f4e716a8e616cab7a82ea8a74cd9e66cd38b3c145062cb45feb5f88b809521f3eb00f57c86e10784512b496d6351b109ea4dcaa4e31e54b81999d44b86c3fa20d304fe0a9677ab7a0b4faac7136760c5de2804225ea497924ffbf9e878f09c6d464148a86df0c2eee56c82e099071820b439f47171f330ad3e69052064708ee3817a0a7ff9179e631c42eb40caae8b6223ebf90780aa54b505b864d496f38d26480e438ae4e716eccee35e6cf7a51af61b227659d9708894f1903c859cb2442948fab2571d3a16ef8396ce7c1799e218cc5df305604b167d173ec357d7356500e6cac6cbb0b0d568fbc93d4f403d4e534e4c89038fe8af334cba666176262ef350ffa78620f5f4e94f5d12574e6d9cbdfd14cf1433de447f83241a545f9246d2afccb8b90b5886d816955921fe1b303cd9de9c6f5146abf6e1cc38b51de977948505ea6d8e937d6aceb8150f0d78d12a26ce2be3a0cb2c11d557e0ebfa9692df0b6297e311728176bde12dabaf36654f0076ef6a71c6144445f525fe24e8f4a92066fbb55f047ae514935ebba99da68e1227db8a119ddbee48f67db268c0e3590fdd386ece0e07eff43c6df850d699de7d734d38b137831430e17163b61bd1b973bc3c58769b171e3847048b06e8361396021cd1fe46360485ad40fa77616fe3ed5d2338704995b912ce0520716a8ee634b8cfd21c72190d6b00d151fc7e21d290efa01ff7db2044264c2008b2866c43ef96bbc2b4bfb2cf423cfa82d8ef00420ec9db08e4c1a5fec1b0d00f937a4c6cd8fb91b349c5a6adec4fcc062fc5d086da9e23db33dc95d6753c53cd4abe793de6eb7c1dcdd9440b57d3739e1f0ef649b2bbc3517f44e59db42c66ec3f10d138eb3f6ec210f60cd18c44c89b57c95e4a173e035825cf971968f6580f6396207e85f5c0ec6001a4a188136f7cd979f85023a833be6794866a9dac50e59df5390289a841c98bfd1d907bf9b1be2043eca450ff5c1241dc2c95d9877889abff40fb18a8345a4cb0ab831361a4b74ab84940f2b50e7b9b8f8e21ba03fdafe973aee5601ccab92ebd2e273195ec7879d590f7075960c741d8db5295e96b10107aec76b2be6e910e9e7159a61f3d5d554a524b42a035783e8200cb7d25cc0c3b34c66df70ed56df22789998ada83a8311f2d38fcb79ca1d9759377be4a9c909e429b6df2993e688f1a0a2b7d54a3f723efe540c8ccec9417c7ee89ea40dbe214d2a4c31afb0d417d65f8e14ca834b52b0214b1e85964ea876c6983b7fc3c656b7a2f9868df18fed16e757120b484c00232e5d12c13511ab57b80b320be5dbd3cd321d0835812dd42337d14e032c80eb567f945c4be2db919aaafe2120f022ea491507fc3ae6f891b138d9a635270b27291f189a6f2aa109c5b632717fc41f52c37933cc21fd6370225eb83053b0e374c25af81c1fe825c3ffe21bd13b0a7953b07e5dbec46f517f5ec5409b31bbf5d494f02fa9d284de7b820cd7a51c0ebec75572f6faa0fa69b0d544d491ef90557f8e3e60905ae075dad1ebdc84dd48a394d16ed4a8b6a9eb43b408af01b119d0ba4edc955cc96b0b3b01d963b072480af6fb5a9db2e58e78c7e7bbbff4124f344dbe37d365c296fd79ce332926c556379570b07648b2ce7d21cd14739231f65b55a9223d7969ccb470bad90f3e7c302777ab8e311f20e76e3410e5523d4469f94c3aa9b71be5f60010b90b3f8dcdcd63774138cb7064056b9dbb6cad064a3e15933f855058c196fae3c0905a3a1f64c002d3d0b62ddf286eb85bcea0d20efacac4fdd264f5a6d4e13e93d63e3d09c050470f9c5fdb339fe675c49e5a2b785b7f6ba97878e524bd1c0688d4a047562d8a31c10b7c7d0005655e06200c6269fde7258af03dc64e99813f4588b6d68aa123abfb0de4a4517168e7eaf4909bf656ee81b48199c37022ce2fdabe875bc9ee369dd9559700462c2b828582728c2344a47c3b6ee2193b1082878d0540948768ca431b481143b3332c6cbcaa5683618b35083d56ba268222965512bc6e017a77163a5f57153144c447762c6fcc4091302287667dabdc379754197a918b84860ca0b45e303e334558829fd2f51d64d87d4a984a9cd38201c66bf46d3f8e72b3a2905fbcf1adbd4e76c7b81be50beee876a8300841ff6d4e0d639c3909d803c37cb200092ad17acd7686a5588ce8f3cb7a869ed4f88acca8d72c848496e8f35af88d660eb3ce61cede8e5f245eda8d0d3dfed310e672e0e9d91869756df29760d2c1f8657c4e42dde49e0ad9a3d9dca9a6dcdbeeb5eaa59a71d0a41646a76188ebd7e6f787547e643c6eb7786a85c8fca15effaa190421b5fef6f22b2f78ecd82cebd7b7face19c6766deb3e82411103de91d3d15e66b2ed209fd97fcab731ee36e765d151dee19df4baecb75d4c9f04b135967b79b275930431d2a365c50b565f7233a060a55bbe0f6113793477b87dbb90264c7de662bd1eddaa4d29a5dddcb07efd54a4cb860f88000258d80702390791505c9e355fac945b06a5b33acb01fa0fa70c177b3d554e24df6f5bbae40bc2e9486693d3c70d96315040def908e51a6eff3d2d693b9110b0e1d9cd505e0f011de862b753da08cc928ce77f97075c14065d24503a03567274da60a3431d0109856a44f62803263bbf111728bd05446551a03a2362c150c010250e65463c03593607dd82255cbb2cfd559815a33dd6df2041600378ed1d483e73e5e5b8ce09953ac4d0b20c282a78ac6f4e7290e758e06b9d7db6e4f801d92c4e3f48e4d9f36eaf78e9104419e61225a0b7158d347308c44e3b2d50cd9b80e53479cc9c203baf3539955ac6a74d3cee9ab49c5e6e50f76029ac748e24133fffbcd2d303dc8f1f05639510e77cf6125b9d66dad88f5670d8f2d8b9fef9b14c1e74bb125ba7ed9f1bc54e6502dc807a6bf0a7e9c0d8639f9067324147c0646c148c38c8c1de69fe1fd28983d881b449ed59d73e69bb702acfd77f05720c8e22353d6f7c4854e8caaa1d096db6b0a15fc960502f18daff7298018f1e2769637dc105c8e3d6f7a450572463b1b45b89b3da9b3610b375b053e2bdb09309a53f17fca755d080c54c815ad3927ef4ceed493b5fd6950fd778c84f4d407cb09222f34079569fd4d5c1f58ef3f980ed39ee9ddfd4dd021261969bc31977f187396f288da176eea02b03850103d61b2e9a346cc498ba48aeec6a1c65bed0bd7840b8de63c0303c43687f485806987e54c73c27e7b35bd141412e37b4e03088a8343496e120ebe91cd636cdab13c6b03c33e2b4dc9e9f14026c6f222bd4312b46f2baba8a6c466c0852e0963fe9e82aa33b0a572f9b5eed2229343af23b22e737f039609c390b841ece09d3de258d981f09feb3889519376fa4b1901142e6cd6cd7e21e6cfa71d725245164124a89fa2ec2fb4a4f1617fd1fac68bf61cf3f8923d28e35268c9cffd44d211036e354f3b13110490d4ff50294829bd93dfb7a5d5717babb88feddb4c24cdf5a8b9f36fe53a66580dc509411a57bf04e4835e3215e3a93af6642bcc20755f21948a1d0625ded259809a8bb4aa5b68a3577e36506906f37d03e8afe420ecdd8e299bb6b81a70d3b932737584db5b0f38ace639556e7f279ffae27f1e7939614d99aefa86031639eb8223f777e4fe25cba8537c1e4b014189243574666ca447b7c2bf494c71e4f1186cc14f23dd9098be39af55ac8bd419978e2242498150ec2fbf99eb22e0154b78553431221aebc24f5308a3090109bc7f6cf432bca0fb6d8d4fe21ae6ef2224cf3d3e58eef1c1f65bc95db41586164934757a03a2766e0403361e29534283ad91aefc633930491ceef01bfbad3a60566da7a08ad7848e2a6e7b076eeb87daf4f55d27c2b9e0f616e4a406ff29a71e69cded0826aa193e4a24e91f48ebb1c3905627c436d20b151b757961e6a6caa2cfb2854c9b5e2f25484b311efeac91a45216c22f4a388cf12cac639472fba78e0a01a5a8762be63391a61a028907d9ee186d604fc64695de291370981623156015bbfb6583533b7e9ea189231c730d788746cc4228192a3a36e7e824221b9bced46658a8a3bfd048cfbe6b1af9212b536fe6f79e4e5032590a756f1599ac0775ba3f08a870e1fd0c029c45f80612c6f84417238d9cac0cfbd45fc575a472352fdab983a561452cf458301105264c206a59f5893b1da43688bd7910e5081aa968bd38cf5d462b20dca6edb39e14a41b9dda67bc261c2ab99573d7af17ad6175624121d45efdfb3a77d05836723a105313d2fd18542f7014e8f9e40cbbe7117f6ec784bbee6890c6fe86aa3b60cc172431886b6e7fceb2f698d769c3a8ab3a097378f347b43a39f998dfa07b706950e942611cf997836d30c2b12f70284fc2d13ece13f3f34d07549db60eba7cd99f03a2d5214f113807ae8e6f8b8ef58eb83e67895e578f9a0b1661b5434a6e3ee50c6ee7aab544a9a078db6218778deb021372f8ecf19f32c94335e7f9534a72fc93acc2c36e086eb1cd807f3e5e95fca6350c50015b6c9084e4ff4a9ebc3e4ec3e5d199d0ee50f8c272b0960a3ce3257252f22b9eaba2a0800ca5f8385a06f519a859cb8a34e2982087521b63321870e2b6d1533154acea5c89dd7205c9214dc51243ab5afcc62471f77916fa0cf506b3d054929940fd7a57d521125428d3d06f459ffe2cda461ce6d694de76ce93bf15427459347dfb7e32fac52d88300445e9e4b295f1943156a1a42dab40f6ca822001d130a2e7a47b0925ab4457b230c2891695bfcb81b1dd5ada6570eedfbc90b41cea36f8d20d120f03fd87f34853c256b42056695a945c31d0958874c549d2f596c9f2e1240ccbb55ac2f599752d137dd4cbe37545fc5d78a872bc11e8ef36cb40ddcc3984bed3a46dde97422809871ad5b512a44d4a8c6c9d00e874e3a75fb285e709c9f6a53d418b30d28d5b03498a0f11b13a3ee54d6ea31d17bd875a605c9d70351a9f8be6c242811eb7f9eade42ce2838c0ef88fb40667319adea082759688f5ec6fedf66ba26d12ab4bafaffb9356e18d73ec3c1fb3d70f2bf2fe508eea5a2cc1fe5f7df29f602601cc56142cf56a3f27f6e6a4559aeaaa825e1ba656497a46a168e6e16a7f8a3548116732f5e522687150939d3615b501bd2468a3319cbab4c02aad61463492c467dd4c4c2780ef83a0b41758f3000ff1a606eef1c14a44ed4be58778c54ca25a500399e1d9d91f2a01509559cc5723352dfab0dcb8dbb6cd760f86cd607dbb7c870d42a3808594adfed32bb216315450585a682de6887e87449193f42eeff3f2749af767a4b27158b7934305c0ac2158de7ccefc3ce9b403c396df0d801b268070a7d9b8bfd7f53e083c7845294599e5e4434eadeaa55653fdee8513b9fd75f020d34ab0c2e4918c6fa2812b757b4f7e68d0b5da2efc4e2aaede7a8fc69b9b8afc31aa72fe42bd85cddfb45c2dbbbc8e2451d040ca087029865aa4a93017cac4d173e174cd964509c72ce49f7be57e7e527435c1fdceeeabdaa427282f90ae4a4049a8b37b4582056b24a07ee74b7d735d7a26fd80b44e7b868350785344e22849a8a3599aab9a88a3c8b6bdfacbf91a13e1aa26ed30140e0c82fc88c075fdf390525906f0075a97dced45ff6cad88e1168db2a1bd97b932da594322599022c0bd40a8e0b369cb8e22f815e8ae0aaf99967e2ca0962f3344fd329b1e9947046702959e2b9fc952ce12a5c351d95988f4f0313309f6686bb39c27e98537f4c74faac4b2d354bfefcc8614d9d80f9292dddc2b4f46afec49c5876d8527b4948a7e8f6539b8c0c5753dc27e4a6de371fa9fa290e890c8357f36319d6863ba50e777243bee62d3a31cffc1e5dad6afe6f692a02192e254bb41e68e0f25fd25310c11595dc28722959b2e3f28e0afc254c852b7654629e2137b304fbd5afde271b3bd8afde3806fb9d5f04c312873b650f777ecd383056fa78f4f2f1e94bb3b69fcf6e85e66793c20d86ec738cc01b7344749a2fe7cbf9392fc40cd93e46fb9e319c6d6ff29dd1293acd8f4ff3e57c39bfb9f8247fda9baf7132a83da1f6e66732deef5bf066fcd2b272d14b7b73feb4dd179dee7c1b48d030d92cede460e7efd021b5f6bc28f04947af005002b0c58c838779c4d7e0150c90f92fe5f560cb95cf908b7025b72c27fd34b99ac6699c6b9af65a7d6dced9751f939a08d4f7ee8317052f84a88a922f65feab33ff591a1a6e8693e1bada11c85efbb8f9d85ebeaad6d46729fbc34e1f5604f0daef2dca3bb79aaa316f636a38adfb845ced67c6c1c78c6c1cbc5a06b50cd569938b57a73d4979e0601ef9f2316ef1f04abe8eceb67dde17aff4da933f6114260ba7cc0e1679577ef604a22bbfa666255f0ef94abe049241dd42fdf44abefcde08f708bc9f1cbaf28798477ed6b043f9a09ac42859d4930e352487504dae7cd6fcf28557a73df9367640115991f1ced74219338f2802e691497a25dfc877acb208ed21a15a648de467a03d295d3e8675b0c95ff584fd184be53a0889fef92ce66113043a4806ba055df2696816955f038d0f6c0c579dd38ac8b75186ddbaaf6a1daac33a9a276ce52c57d39e94f2a18f7c08243f7248ba22cc239f4605f6c341b9b427bbc0a61cacfc22dec251a5a4513eed90e09071425f3e8dd89de19f3719544f032b23df4a973958d465e92d84924c573e6f6f9fbf4a49bdf6313fb304ebcf48c41ada9352be8d1d2c47f840706b02bc92cf5e38b9922906e69132c5ede804c8871c14621ea91baf9c1595ea7a7c25bf47db2b65acd440a4c8c6d5c01599c2c6ffc0d7d0acd4954f8479f4955df759060371b8f2794776432493dc21f3cf6a8260e1d79d1c6cff67ef0a3d3a3c1cbfe35453a491746b87af7a7478387e47a5f3b1934327dc9a475e0409f388b7df7f04dc52151d41232a83b1385cefe1cec03cfef3c85b1668baee4178edf055eacabc6c13e6c1f349b3faa597f6fc93f8431f7f08e49f4129bbb4f4226de4603f76eaa252a954493a2445da6bd9f27bb4cc9085cf9b0cd6572e43f5956357860696a26eec8ab4e754642a61af8c9f9b59826524a28c04ac38edc0836ad64ae1117c7ecf8e18bfbd69554760c1095e9a5c11c4848f174b5994312486133cbc40092b3430923440559962d25a8b6a151cc44a0617a51b3fb3def209e6f882797427cd609e18d3023be39329c94c61bbfb98e92e45f9e4abf8f1492edd38877c153f5e692fbedae332a4f6e2df38b1fd9c19f6cb5e3776b39e9a9565af0c29538a9f2dc92869a1557777cddaf8621baeb0a33d1db7769733658c8c773e15d3f5cf885476874f4fadd2c7575ee42b2ff2d614822bff0a9d49fa481fe9237d7cbec974fd19aa507d86b0df14e2c2e81e41153422388dbc857aa72e87c23c3e8dae83713f9919c5f5f796bba6460455989d56047340611eb0d390601e7f0ab40bd5c914f9ca659c600d09192398c3c7d04265859589c25f330273fd6fc6e016ce91affc6fc05cc7c1e13a4e0fd77184c081c1751c195cc7a172fd718ebc85f3e42b7f95b538dd118ed3759ca6eb3847384bd73524b422a802c3abc57e324577a83d7ff296eac52b7fa4aa74fd97aeff93b7d8552dce936a0ae67115ec544fdaf3ff54535c7f1d302cdf4f3574fd658abce52e53d4c9145d7fa3eb3f5fc02df9c32b21a8422c837304315dc0acf8405c191483ebf10917fe3759701d5efe6758c5fde4132e9e98e78bf4690faa983627ac79bc59af07cc9fd11c7523ddfeee94cc5612bf997c8620103233333333333333333333f38b6b245ff137d74abde42bae9bd8d9059999999f5f3c5efc8dc4df4afcbd149d660f582efcfa1a6bb9f063b3e00332def966b2ec28333272ff668662ea651925e6e933ec97192d794be6259319c964463448a60c6ecdac6496649e9807ece61326a8c28c10cc31e4ada903af86c02d29060b98a7ff43f5cc48b9bdba9f6c9a19a2a19961c1fd64d38c1054413ac118216c44badfdfcca8bd1cd8ec28abd2deeb30d91c7b194b1555a8daebd66ada8bb9324b5005ef6413ccf105f3809decbf9991d1d1ab3f43eaefcd5f660a2bb3d4e353c9cf9359f256b5de24b3746384edff3223b84dc05d5df8de3899316a01bf7a308f7ebaf0dd29a53a6e40b9e962690738e840094984a9e1c4134344f16487288270c1ef4173c4a36fd669afc53c13178c4f9df4f1157c277e39191dbd9094969a9cf8e5e4402ee4434fd2470e4127ae61581ccf99c1591025db67cfc495ba410481665117b45ce915bba0050b23d98d23c36a9d127aeba71470e10b275e5508b0006f8f982e9830b1850e7410848514276524718113220cf143125010b9e0735f6c8fb7da89c8ed7e6ad6ec207dc92af4e01c5ab3504fdf368b59d87c2f4d4eedc1fa9456af6650f3a7a8f7af9fa1b45b397fed629c5d013647a4e6b653b7f8f52489b2262f445e86a8d185af554aa594b2ad9224b5524aa992185cc4d0229fbed3e52b45205dde7c8811e57e7428a84913a6d0285e98ee4787a897a50b9f3e617e7f799db3378bdb8fad85ed87f7c188e2b40bb71ff3312558ee3efaf46bfde694b4073fa8594d9a553bdbde0db673b2fd3743d8ee3a1f9bdd1461336e19fa704ab3e077926e7117443f3f404da872e1125c708c26cc48612469d3a12cc668a2445938a10ac724d08786a31f7280b244195984e01613173001e5072e8eb0c312acb8a03bc1a9159dd07421d00d11f6a341173e0dea16fb0a8b3d82c45efa0227b4fb4ce01473e910f3c0bf81816dce5f72454ce074b90f9221c51dba10421724a3ca85af840e358bb6309f52c05decab6eff49640add9804890082186a0f9a004208935022faa43d085f070c8ba3c6cd13cb347504cb3c1ac9e9c2cf688e2c8fbeb583d40a394686db939f2303bb7264d052505f7b76f1d27ddf5af8780b223944fe4d0e109bdb6f737b08fdfe890448fffcfed991a0ef90f8392df0164614f1d65b1065b9ced9dce68ad8e4c890fafa95cb91a13eb6cdb03dd6e504c1b2c76a179966d0b4af5d4e905a535d5cf2d50bfa00090d11151dc1d7125313fc88043f2ac1a6cbd457d8ac728dd44a4bcdc47593af9c7cf562578c14ab7af89e1355228bedd94fab51c12b6fbcddf5c32974b92df2e9c2ff26d005b2fd00b881edffa4136cff077f6e8dd7a1904fa1db71878c77becce846cee253fc227d989a9c790269f1e109973f96c12ac0a01cd80de17914839b1109515515bea00ab0fed75b47897cd514e95faaa646b71f83425aee37afdc7eb527457b475240152614330ae6e96b5f602793b77ce3dae51b0498b8110e731d324f2f99b24a49955cf91f0cec49599d63ca88df1abf9819d52506705960c1dfbfbaf5213940fc678ff6e0afd01e0b34acd86fc78dc15bd9c37701f5d95399af843eaad33a25fca8ce05999b313f1317bd007dfe20198a3e33773e282feb72bc3b12847ed6b1d3cfb26e0715c9555f397d0ee2427b50d80cccd09e8e102c4b19c0951dc5c87a00d742ef6cdc2cbaaaabb992451ec08d9ddbd0c2d6015c8fda10cac3061b47f6f32eeda14f5533347dbaf477347d1ccda2943e4a8a0ba5c0c1f5b417e6625d8e117851cf17f36acc11b6a73dfab5c3d11ea535cdeaa7f4e9f30eed86c097111977dc5fbed11c0acdd9985a733a39cdd5688e4673aae6709abb69ce660bbe3d6916cdd3df88b628cdb24f7f2b6a96149ca7bf4d69d6ccd34c895b895bf5f4b526ad8be6d42c99a7af796916f6747bfa1a11f3904f5f338279f8d3d7a0704bfe8057f4878044129ab8340cfabdc925e6a12f39e905f3d0774e7e91643fed2505e85d38efaf7dd97eb47f654ebea2ff9993b72453afe84ba1454b962c583eb9b442f76d4dac4df75595f5ccc9fb097469e634837a0b92a162bf1925fa335fba25f345c95b324a33af19a4192ccd4269698ffe4cd0a5ffd104f19599970c16a7a6a619a62bb374e9ccebd2c7e12691afe8d370b3497bf4559c5c924dedd187969b4fdaa33fb939c4492eb24b7bf4374e3a79e915fd1974e9cf749fea934bb2934c000882fdb457b7b42bbda2da95f6e867edf47bf48d169bb5c34e7ddaab3dfa4aedf1c58460a733bd7e645564b0dc3c7dd452b324974bff86934bbea25f39c9d4de2783e5d2070017569555b9f4b516fa6a9f651a6a038242eae493f63ce708fb45a7a6aa35a9ecabbceff17a7c474d12ac6b4c56e36669af31f98a6a2ad57b5e4b36f58afed53ab9c4e42da9c5bb1b2facfd42bfc6d59af573a6b0cfe01681988f4f475e88db0f995b3bcb3cf46d0eeac7a7f650dd37f3fed90c676fd6cdb0634aeb8cbca543fb6fe6e8d29f993243e4adec4574a986c57628aee7e52dc9a557f4a5971aa97dad335cbddc9ac6443f93e1e0d5983425684dd8cb70cdc29eedf6fcb6de3c672f6fdd741a96ce72e9df5cfa5fd6d25ebea2353087f6f2164ac957f4e9d7401576600efa567bbd2eddb8c89ef6315c654f7b9492b734de812a40cea13d7d661a605caafd875abaf46affa570e9c7d636ce1b4a6de3cb59990bfcdcd8c7f9cc72319fdddcdcdcdc6cdc1e0ef783f339bc8bcaf6d9c6a13ec3e1dc95410d078793aecc351cae5dd095f1647271b8e9bae1a6cb724ceedc8cc0bb7d16e39dd22f9d7d2bdf8d8317cbaab6717c515b0ba88f799b611fc3d5f6b4efed07f65b07b75427a330f368dd97d9db2ff9043233f34c619d1c721aa1984e401919ef7c104208e151b3682ef795f6601fb172041004bd0fd9b1f99ab2fb88f095966283a15f4fedb501e67fde9d333d5668a88188c49867faf65fe466f963bf65af699c7c59bf87a3388ac52e35f55252dd12cd45857671861f323776d5e6c0b2d3b4018438374ae601ff32b370d88bff69ac9a968c63c55e7c9863c57e3a377647e01fc191237e7331bec73cf17170b05f8d9c16bbe3c59d1b25843ad1b1085d110ae3c48c524a09c40fae1c724929f9a594cd2c44ca0fd22d6e17bcc5ce56be4afe4b1a9e8094042a540499f1834b32b9a10a18bc008c1640398071c9a32bc11c5df92c3c126cbbda1d165566661d2ebff821d02cfe193220840563924f17b71b05262cfcf6e9baf3eef80d43ec74daf31fd22a2716bab5514619e314bafdaf4d556d08a1c6f564186b4ef7d7b40c85d564356af08377ce497f7e9d5fe70fa92eab4faefa57dad5d9f1d3a6419a4b8ffe52935a94d393dcd955fc3f7c8a61588c1986bdacfedd5a5763ecaec7a44cca6f398fd45cd9710311e3cd0fee435c3883227cf0dff0cc037270f67097b3b83d1a7e690861d56a286142086711f59fa47a5073a3c62d66d9a8237a9d0e1119ef68375bc020a50dd1ac3880409f0ec9b75d39c4b453deb000566615986a9deeb417abf6ba20e7cca11df35cd911f12e0bd68590cd19affb0432e57c2657c6205958a13d20f3e3c7f9b3cb8973725772dc8d9c6def4a8c49c0596b14121ffbae818ec691a80585649472c7b338924be146eea5c90b9b24a28c5388da837376dd4436509703a4b14419fbc55c38d4aa0d12dd33fa27678c714a2981ecc49f27efe24cedc118c5e3507bd005f1b318e7d62a73352ea564cad544ced6a89ab91a4a91c82bbb1a03218428ceebd9a1b9cff8375018b7e8d787cc8a32cab825e31d150fb8933862577324deae32b944590d25d4eeee8e317a8cdeada556958aede4de571de57b1725ec6e5e1299c47625b28fdddd732fe38c8b2e776f178a73f12ae9892b519779e857015dd994a91ef4e38e1eafc78490912e8a93aee686f04b2e5129164bf8d4dadddd130b252aa574d20a811e2ef47b493e536e145a04ad12422b1e1d46c91188eeaae230e6413b00bcead7c1d201ffd36133e4cab7b9924eea5e5b90dd10e24aec01215ce1861095c6979463fbb2b331d186cc3690de51b3d736af91a382cad6a898877c1d1d2bb0d02d1d1de6e9bf3125838de2306ea775ac583867b32c7b3531becd8daa77158c10b2a764c73236570eb96e65ae0c418a6368239c46c8604fcdcb8899926d971f26017ea6c19f5b2680207eb02585c92cb43c412d1917fe0621641e9048d65abb564867e5984a7d23b8fdce83ac8b9d97937c88484d615397937c847a90e4039479b11918ed698c26eb942585690ac3148606406c4436a83e82480bd3030d3603a7cc0c9a6a8404fb1242fd21e54969c6c98acd080a54d11212313f6620e444e6870c90b2384308fb51f404e40c2014b7f356abd5aa6820010cd3fdfe355305195e18696169609012c24627db142c00c30b1ebcd8ec72165ef8f48059021304a687dbbf536dbc9fea255550dd7d4af7c82c27a553c6e891254fe629bb0f5e77768185ee54aa5a617733739c91c638258ee9d15debbef9927db06586acd61e7b1635c85c6354f9caa5bb94b2b3bee2e62d02b0a15fb8c100fdc60d08076f4627e46207bb1ed40603bf60e0579d1a8cdc5f315496a1b039dd27c7c8944a77e891d2ea94d9fddd352d16725a6485313ab7457d4a6b0f0ee8ae71917d39f072b7a1641c2176ee6eaf670763323460d598a3cc7d10a2eacce51a8daa9a7fbbbbbb47ad59b35fc7c8b8773ded31c49ac4d8b197641ea5d63e8588744e872eddb18e7900c0031fe89ceff19d46753925a553524a699494523a29c4200661c7390270278453ce771adf21864d39df697c8794523adf617c8f32d219e39ceff13dd248a9949fd5d09c23415ffa598ee6aeb301899a8ecf771b1b100943bcd4bbc6e62332f310a2d2b8d32ce61908df23adb08b198661d87c9fee5f278d514c58a38318e19c326aee911b7a7b0a30146a26d35210ab0098d18cbc57d56411a7713dd8d163ebf9a1631e0068c0e646db301a74d600544cab2960d89c586539e79c52d350dbfc4cd33c474b695e633ace213f00180012b5980d86d8b1273f850bdcf8b672cc23bb2b3770fde1cba2d91d59668b9fd1681248fb5c67e669ce2165cd06445effcc46abd96088ecc979e5093620f3fadbcccf6c662fa9a1a936ecb31af1331b9a8e06e323811305cdc60643644fa20005143618e28dd1e3c46c6c3e9eae8ea6e3f1b32a2a61865eb3fc27add65acb5d8c035c63cf441ab527a74c59644511330f1abda1fca74142e60f3fc2083fc218230072b0fcf472165fccd0d25f8e2083a3a7593a585eaba657f00bd1758fc2ba0c0d2c843fc018ea1e0411aee310979e80047b4b1329344609e42d2b9f34eb93125a1f1ecdb8cdc5edafeefe0313aef7107f584db77f7ec0891fa4a225182183295414652105943192709235d0e20c28f3c1f878143c3ebaca677657f9bb3b169f24702a884ff09a018480dbdfd2015b2c510162092f5088904f04dd0063124290134ea6f0a08b24769cd8cf5e08dfc232b8ecdcd652344c776214153f9513c47fe6673a25b553c24f3e2d5872295992fa11828be6952cc1f9f224c935f34c5c91cb0912bfe66b3a25d695704fa0e9549d8039d3518949356d99c6a94dcb6894523459524d4a7808483c2ce152b264f3420cd7cc2fe92b5928b921c54c47e5468a775462b44ccb525c2ae34f7d96f5c7efa293af66ecd8574e36764a580c28444b2e254bb62dbc0440cdaa5d6ccfa959ccc51fc3ba166acfa5785d41c294b22c696972d26962bf1e0aba8ebd639dd75b431445761aed6c7b4f7a0a131f7eba5f7b498af2e57e8ee5fad778c2fae753ae7ffb976e4197bf035dd602094777765e6414c28e90f584b1d3f15fbd11aa106db8fcefc4ea80dda7dd2dbe77471cee4800b77a74f4bc3a0919fc151800545df299e57f19a7cab1623f8dd339e234726eace15435df4e64199783e5cfbadd3946bedd89002691d9255b3fe3ecf919092d37631c773e96655f4b4e7e8f96d8678d7176472607fbf5dca8e5351ada8b4a4790d47b0489fd88e0b8dbd740a448b3e8c71aca699c5db2a98fd973df5e7c552abe13ce111fe37072b0f23308db3da67280dcd97d70a8bdf8da67b3834ddadb31c3ce47fdc74ddf4e0dd01593a234ddc85a18a1e8464b84cd59b21f37452dd297928341737e4b320933a8d50cf5403047dc7cc8391fc577723d9c61507bd347d619a1b756d47c1457e9d78b6a4d072922acbc9c24860d3b2435a10ccc263581d456f5494d18c2cd2e273561e97e9e52dca2ffcd801da36c11c5288a939dcb49311823065c6270250647c4e0a7d68a691a9426284fd9066507509052b89c04050a141d8c60024d9c99a918f318e173fb6dbe70bafcdce52423a0b85fbc444c4650b915334288864807445692888c20bae1c6e5a422865004173737373834686855a854346ad42882891a356ae4e4e410f1250097938a08d22182093688d852239503a4c6f5cfae77df096eca2713818d9ecd2a7bcba30076f00272a520c5a849a70b570e1797017ec852e46a09f1f372e5c44f018a23965c0438a30843aee67272acb872b8b80a10d424c595416fe8a91dd802288c587265548363fce00948ae8cc2800c2bf50a1cb4f001a60423c878026544d251a63987e385d197325ccdc93441c2a532c2094a8ce16a4e060745ae6cd39c5381074f44cc7483152c411fa2c802e46a2ec78a2bb345842992d19ca341440f42d98ce65c00b00c3db99ad3b1842babd1e216305c70e46a4ea70b5756a339c7620c218c2257733bb4b8b21b991b1a36c20e9e9c5ccd411f787031814bbadd29831f6f8c314208218491cafcccf2fc3adfce57cd1a17c90bf17a6799870618fbc5cf328e8a2894ee7cda97fe7cfaf0a2b82348e245fdf6d90fec61a7cdcc23f7615a6f1180dfa3fb653fbc727b01e776f795e0a26ef7c5c0e488223e20d73fe3b46f0e7a076f86fadc08a41c8d2b2c27017174e1fb0b485e7024f0ceae7e4b6e5ff68206973720cd0405a50e3f49414cf91e2d7c28820f52f880c588e8830eb287307a08420f5adca08725927af821e88ca025040121288b20298298505d4e0a72c243989a9bcb493c1ca1a6668604f30b68f344f70e413b3c61c7323374dda50ff3b8944dde1a9a7172f2f9eaf5af3245a3f67c4a7b5ec43c1e6794f67c86c857334a945934a7cc287917d814082184104208bf7854b93c61bf5a6bc57c9e6253537b31c618638c31c68eee1fe6e5fa7f9817ec09fb82f2b1d2459024618db5eeeeee6e6666fe0261537b0c213b41c81042a6f6b830205392568a4d8c611816b3838593520cc330244994348bbec6a557fede4cbcc50055fa10ca1f33678aeef2e57269cf1f3a537b1ed4f097c8524835418010c2eefee1270b20500175786a1db6b80e3a708f31ea60a4c34b8716240185a1404ca8405b30a0174a835c12900cb224a0206dc68c0d052da91cdc1ac8ad800abb822ab7a63d6e0548ccacc005b78646835cd20a826a6a9e6c9a6e6c768063ad5059276844a991c30f391a4ccac147a7a68b8d0d0828683bb8a1412e09072a6e0d0e4adc1ac825e1e0a4d32087030eb746839c971bd7bbcf0417954476c3040b5fbb92c4c317493c54b9cc43961a2624a940e87649da41cb9d29a2c6e5241e70d8e1e972d20e582eefd0e5c24004493f4148fa514afab922e9e706493f4cf0abc067bb9cf413055341d20d4d49373c25dda0a5e36e8195241f305604210b845c11dbaf82e2b6aba990820beff40c3e4427140b1cb08026dd8083bb5d4ebae168e773b8651bff76c4074e6b4732ee07dc7ec07ba54691ac59e6bc20f9c69a3137647e7777c77ebe373823f076e5f7ef2ee785d80df94f3e77437280f4f37749a817fbf9952bcd42e1e93b926369d63ffdecb90fdeffd9f1e6c3c667cf0d89ffdfdc90f87c2ba6dd7f9dafdc901b7fc3066704de1bcf9b8f1b9c8dcf62cc917fe7ff4f9daa0a80eda9c1f1ed68fe39f2b93dfe9f9cce478e6fb5f1bcb5b0738dc06be39fc39e631a17defa59e5e2ed4d67eaa0f0cc03247880c44581887651e8be1b6fa303c1ce1dd22ffb06374446407643ba1b920364fe0d8eaf13399113399113752e63e7443432d5d3702256f6f4bda859349ebe4f69964af5e5cb972f5fbe5819fbe5521fff71a066c5c4c8fcd2d2d2d2d2124d0dcd929666d53cfd669a99a9f91e5da54a952a55aadce0dc54c1797af3d4c6266ba157b550afe877f72569562751c2d188c276453a252dc43cfae9ffd642cdb1524fbf87b417fe6a34866cff14e115fd5a55d489b9082a3bc3ad187cd5dd273b78d41e7d4ae37ed0085681474ebce2299e78c5f785970faff8bef002621ebe9f8a8614ee69c571e9c720c1aed01edd2125d757c577fbd25e46351b1fb9feefd11dd4ac79e32b0a4128700d002cb6e7fe90f9fde359daa3ff9c2bb547ff0647a4e7cace9790b0287cdc7cf48f13f67b3437d95a845a1d8a0217afdbe090bc0e07bfb4473f87834fedd1ef9f0efad13e9d102ff6abf135ba96a23dfa34382449daa38fc329813eedd1b7a15fc341a0f6e8d3701c6c6239089fa43848545404c99562a8ffdd448c83cc139b57f1e933bc998146f16f12ee881c01e7a0f46591f6e84b0e09f3d0c7c1c14a19272c7dae81d2f0d341cd6222edf5bbe02dee29a5cf02c741146cc126e08a3e0a353353a346d70d60000738008ffbf1f08f0fbbb4671439c80417563e75a61a8d4309500966f3657f71ce39437b3103ed4578a53d2c9063828d1fa402cc830415fa34ab9f5aaa27b6490dbaf1bb25a457f09b601519a00a24b0166016bc12b1602ffe0ccc131f62112dc05efc203954d84f878e493340390bfce0c62e487b7106cf63fd8d7506e15594dd672b7ca4aa6495aa0e64777777ffcda00f11c4f6dc1b7b1ff1512f97f08555f96ced7faa98ffdebb345dc7bdfa08703bee1513023e15627eacb8b293ffb116ef2bf95c93fdf44a487b34f44afe46bbcf3e5a1bd82851eebc1c857b642460656ab9f19b6eec90f445751f7c31a11ee3504eac90568f25fe72e5b77cb8fdf88b7542884421532fffbd95ea3ac02bf95265a5e4306eaa2b434af9b4130285ed874c3e58674a889a6b3878be8affd9e3b0bdf515bb7e7088d5573a9a0140ef427dfc9e66006a47b350b085f1601efd0b007a576540fd6fe64629f437cef2d3cf38ef27871e57ed80ac8b76cc2bd96f6f7744a4079240430d4b58b8c46f0804a975a9323b4d1664116a29243b3f8564e5a790ac6fb79f33a94108e18e2a8564e36f168c9dddb71345769f6ac83b30367e771f3fbe641ef5e34fd8ea71fa5f01600a37a2006f6e7c86ad2f75631225cc13bf7229609e2570153fc219dcf8b4fb7889881bbf0537be0f377e4798c38d48da8bb0a895988073c497dc136e4492246680865a83b790d0b8fc48da8baff684c89a4062d29245c91261eb101aa14baf205d91e2884561bf5cea8cde6cb9f99b2dcd4459eead9bafbf09350d3111516fe1782e1c950b07a8ba707070703e871d2e9cce06c97e13497362b23e1bd0a58f6ac226d930e42efa1a92b7d845b71698382d2709fb11b9d25e465b7fb3c5ee8820f5465a40bdffa59729b542a4bd3e9412ca89fd765ef0c5abfe462935ab8d5ee3d254fb72a9e6e5524da707fbc92a9752221a7d8984a22fab344beb502f5f28a466f147f989f63cf55cfa72c95b4b4b72a9472ebdeaeb5c6ec1080c7353efbed42c785b1ad30d18965eb8fd3032019cd72670f35a93afa88dcb34d41e6b2f26d4cbe9beb41b6e1ef98a621afd0c95659d6951a5da3216f2f1f121c2856d3eb0f7ec49f3a901d2842e1dbad4e63af58acabfb989e9d176d6a054f34ca5bd117845907a1925ec976e654a01fdbcb5d029b8b4fb240cdbf78ddc10f9a9975b8c51ca1923ae69b5926026f54aee36371f292edeb8f5b4f48ffd38b6783d49bca5a35dd5a3bf63f0fcd3a1638518fc6fcb4f754aaadb2cb4e78fc3f500633f28e4367f73f3fe3068e608bcfd1f93dbddcffc07ffe6b754ce1178e37f4c6eec78e69bbb79b8e46ebf7d8fde7cdcd8dc70f1da7048fa6eafa35bfc5a61e32ae671dacf643359fd4c0749cfb7dd4d7b347c5dc9af1d3d3a9cd72369fca753e3bf9a9cff341d1d2e87abc1d1e8e1914e234b6e4d714664b81af3f1c2cdc6d818be3134a4d0a84cb46fee8b0fbbd437d79f168d28b975f35b3b247d6b866918dc69567dff1a4f3ff3070016fb177e3ad705f0022ba384774a0e494debf8efdcb48d3322071d2291173e138721b8b9593f0d3eed29c179599c249bbabdf9f852af3dc449b2d0086e495e793371dbbb0f1ef111d1ba09270beb0f7db29bf9d8ba4fc8ddbcb3f9ef460cb7a0d7bcfb3bb366de9f324b8665dfa10ff7fdcdf88b920efe00c574316fd3d570cc3cfe341ce41cfe339cb3e72fc351f6fc2d97b1e731311d0ed30c8cf94f653b1954f6b6e30c857ab8f94041a26ed9a254d7489c92863f3848767efbe03efffa3ddc3f9801cd0a698f05f623c2576a688f8611f66b26eed7f1c19fa86f46b302fbedd86ee6da8e163e26d7df399a1d2c6fcda4f3c5a23ee606d626c1a2fedbf175950b9b4baffabbcb8e1e4c521859fa3ec5dd515f3194bbbb3baa7ee655dc28c609fbb597dbfd47f07563d69b0f08f9326c6a2e96e6361313b69b9a8b0d2996ff6b26207d67d7586e1b0920089b0b77ecb841e055ff115461bc77195e3311c1221b4296ff83447e31e6b1a2d6c09a1e7c8899d4a0909428140a85424d49a5944db3a9cdcdc70eeae7671cdffa29f04f7decdf3efaa73e887faa8bbf7539b28bf4c64cb1a80e87d75eb44184e5d7517d0f6f148ad2af1cca433dc6e5a0ba1d1cb38729ad8fec078b24f2c35be56a6f74b5ee43e252722d54b55ab3c72aaa83600e98750d94b50f495a087b269d6158e5e6a3388c428f3f3867ca74b1d164bf66082184ccede834597ffe970d32ecf777096fa75f094208e10f35690f42a02b0cbbce62e3094b84cc08bc32c3187504f53ee0f7366d00c11a798ceb2b39d87e63f0160faffcfd71e0fe580c3304c1111fc36eb0b0fd42c60e9b7efc1fb4cba1cfe4d2ee834c2ece150b1fc5e160cf3172e763f0c6d4c0ce50bb20edb90d210bdf3feae8b151c5c2c8c5eaa3247f9ebadcfec85414453e196a2579d44bd2a80beaa5bd36aa3efdc4c738c307ed8c2162ce3842e60c1b50b113bda809259a68a2092b45e011494df8d0840d6264f0ed8e2d06ba8e18f8fcb2b1f495cadf555c294b2f352bf5fcada5595bfb449b7d8c8d0ee46f2308ed2587c4539d5c6acfa5c6c92c9cecf196ac82740573296e5de21e8194cb602b714ba5f65c02c1065ef9eba002c2dd492b492eedb9fb308fcb2eb2a93df7d769b25c98a4e0f481e59cb25951e636e4160faffa13802da071d08f8379fae97bd3b6aa5f4688a323840d1b36ec963b1042c6cf3bee3246192bf6488401090ee6d97ec43bdff3d6ecaab5de7d2a15fbffc6cddc9b3f8eeed8eb15980819f3577ecbafeaa172a225cc125baa2811a60055d0e0095f104105433d70f1730332e6affc965fd583699532083b20182514ad534ad57fb9fd3b3b7a80b9fd2c9c71fb6908739b28cb95b99cc48415f7db9992f173f066106a0ebbab41841fb51ff2932c87c9fae704c1a6b21c20d8f833956b10c1f6c79c2dd61f4a2633b3450a4e5392ba24ba78da62a6025921d5d01339b7caad1b55298a420391294fe2d00c4288843c080241ba49ffb407dba7bd1e0dd4fd5eea371d3e2687e2e0d36577baec4d9721535f692401bcc0ceac72129b58234d0a5f484830878afdfae8c287f008329143e6a7272787d0070af115ec8152c11630922809a347228b962d606c055a70c5084d8479c2972b68a4204108308420c6d3161be04b8a1428c0c0ca176030a5505b62e04a3350418e0ca6f82006191328587c0103064da0708209177c14b772b07082074c8411020f47706658bbaf1d7277334b2176a0d60ed9a5cd27af85379b3d214f998a7d7bbb00f4d855557b3cdbbbc598144208618fa6734e3b69941b28a54b97de69d17fded0c831468bf9479ef3ebd3d901ede81ef7e2bb66952ad7ac3f395ae7fb7c3a3f93534e39bb2a1305b3218b3b4eb0292758f8decc36aaa27381b9a4285a6b4bc6e6c4d291a2a28462cee9b3524aab9472bec7f7f8198cee504829657c8f95564ccb341f643e8015a3db0f2126538a055a1861a898c01c83e3c53eec6e08bb5b15862a0c1b16b4c674fbd117db8942b8429e1f4ac678634f7ee642b364d8b3c15231d985934ea826d9e482b76478559febca4c9986d5aa4d8e5e1b6cd3f2e2cd77fd06c2d698d0c4ab24708b06272e62dc7ea741a5ea36d051d4cd300d6706d6df7a2bab2aced657a9260a9569f2999d9a96645c6025f34049c9b4090d61f9fd72d2124150f60ce5a99fa4257460541706050663e262519793941823e5847552a229e36aadb89f4a7a512796dd4f3bca5800e3a8c52f258cb0242580b8df4e3483468b4139f6dc536f92122b4045ec8b2bbde25bbfc0526ffd224bafeaf7e6a3a67e50c267084b2f275129e37e5a93b5b99c4485cb4d59b14cf7d3b49a075059d26a74686ebc9c44a587fbedcc1bb4c418a30f37aac006be1142eef6942eb7db328f544a0bcb9f41cf070c3135289204fa00799e1703affa610703f3a010c67a0be2961c7494ae685245124a5b72e027263431451622ecb0841b98800b2440b962083a68f2a2869012aa20b22c010c27604e700a1b22866e8430ea2209892b4947205db1650a2d0c7844f3b9fe39d14b8c7de1646aa466c16ff80dbfe137fcf6b9f0fb097e64ab925dd2855ee5d74d86e95cd385967918f6ab898c7754d0705c170261069ad5d71f47b73027ff15fc59f077a15bfcf28fc13f48b362ae272df1bafe34c4f62caebfc7b1bde6e44ffb5d26d771e0f0d7e1bf823f0b2dcfc7c7e786978f8fcb3f3211ddbea4c5910e97b5a8c1195ad400498b1a3c695183a65bf393f595ef754447bc3a87afe63dd25d9a41480df28b70cbc0cf096a712f2134c8afa15b29b8e417918f248c4bbe121973e5c31fa72b8566bf772516577ee6794b082f2d49e9798b5d3d3b5edf9ef4e4f7c8df21bf87cc68a2b0f0873e46bb14d4a7589702d4632f3f437139413054577382d0af4fbf76d657dddf3125a24964471e49bdd4e9ceeb42cc4322b9903791af66fa9754ea87382fb05cabb54ccd24a99055c01cfd59b42132aae251eb2cb6af37f1a1146ebf1371b9adc849465a6ec3b8cdd0c35754861dbea2efdb0cbdd4f3963719bc1c950c1edc64f84a35c8cd4be1508b06a959dc2f95ba9582ab5f2e3ddd7ea94572691627159171fb6553b3626e7312134d6ebf74924fd439befed8a32ad66d41b0af9d92fa58f7a97adaa32aeceb5789e2a8c0af9c35b5511f7d5068c9bf1db78b764020f98a3e404c5c501e412227b92499641345a24afec91765a24bf225ad7cb99050bf0f3991175d912f9c212c7cef3ef9bafdd4490689acc60bfbfd8544e0d3d5e96a72a458ceea0d0e2afc1db0fe0f15d9f4855cef9f9c74f74722efa739185a3ce1458b1afcc4cb48606879394193e4e4084943c020494a147905185a227c1434c2c6772d8abcdcaf4a05c88931333333acbefab03be402ede39a5c4e7c2e27762db86407b4a37bdc8bef92ae72c99f40d625af7724f02bc504d1c38491dfa3a5154b4b9655d607348089ee2c0328405896c110f0068b1b8166ad6b749298489201501754f60a3d3ba80071fb63d21139440143d4deea42241a5458c8434f98b4647925f79aeb1d04a17c4c42883d5349879a84b19f7789b1a83d879d4771a2f6d22bffdadd0f6c7fdec5cb65c18731c84bb324c7a8caa874cdb4d5492c19a211000000004314002030140c888422a148281c139555fa14800b8ba044764a998ac428c8610c21630c2104888008c000c08c346d00427c4f4ac97379aa9e9e271b7c0ddaf12abb4f65426214f477a723ac983c1b62a2f2eb4a67592749cc9f43b8c9311ab2109a1a2189e1586f084c53c6077c40cf0561b80828c6680763ed0a196d08e6ca9c05c808b50b85b217184f2cd647378fa21d060b0e9c5a3f4d2b08aa91cae8069a2003004dd698bda57ad32f715631063924545988ebec359d3d9260ec17d69a3d985e8055664938b713dd3b826e09378bcb744d14026a80740c2384099018e7e3467cff1b139514ddb2155a657c6ceec27b164949d83087d71a2c6b8fd7570931f72e737951b5096380a9eb4952cf6cabb04fe7f9d8128f3c9ffb15c63cb722e4893a7517accb35698e137d831cfa58d7b21c70780f0c7d35355ecf140fe7217c60b2aab3bcdf3f3b5e02f16253aa2d602c7da7ff276dac4bbbedc635a14e22f0edde219a008cb6316a9823fe1b19f21f4cb5f69ad86092f713b76f81f28d7acc3b11326b6c33de4290604e93089a13cc12c78bd37e21c6166dce5f90fb58b564219b1243e5545ff0e7e12d08eeaf7ed9f6213b70b96a8d133ddebb9b2e47b65a7255484c030f0e785ff4a7dc87755d6dc75023c13311b7c290fa05b15926099c3c8c5d37be9cdc91bbfd210e092074a9da6c6599cde6b6416ffe8f33c31c3d2886238f4ba3d0ec6e3ff6ee5b05fcc145e1d9b5099d8f3668710a53d4280189c9229fd401e0110ace06ad47ad945ced9e681f603302c3c01e24dc2cee669070faf69d02e63ea27e0744c51a367a928e9da6a44979187a5b569ec244320fe07554d8d67aa41b0ad82b7c475557cf3064b9c44529be3540f436f8d7d95f42eb7c6793c2e065e4c19effb1a273a71cc465369895c3dd5ca55f9e1ec21d70f4385559879477deb0ee77bd17f467440531badab0ae85fe8d22c9af5857106791d23e832d2723a2c3da12bb8d2eda52885d3bd9c78ac5cf674e96a98c2e85d454697d2c0b0cf6553ddda417a74599b76aaa07aa72a8083a6059fd08e572a4b057181f030480ccd4148da38be3f9da3e99ab801648d2e7da8e4b0f7511efadd0bc3fcf4a29cbc17679ac78ef0a58c51a46ccd1a185076089352c9ea16503f798f43bb98e4c858f50ea00f0775b9c94ea653e9a48ab6ea83bd7fb05fa330a9ea630e91104da36162366ad2ea4af3404b64ef0f51b12ad56cb7a04d61e8c7656594396ebe3ab1ddfd5bd2229308722622b38e8d68eb9e4967094b4f9fd8594f9626b7e67d7d177d5e6b803bd3e41f9bb3f4a17a1ba4a0c919e9b0ae83d1fbba4013d67b5658688b5d49cedfd970eb32d0abe82f56b579c0409c8bbd4b4df18f881ae921bbbb2bd5b4c164908a304c8864749465053433f438650bf02ccee4a5cc1dfa065cf4fdd9b33018d3ef6cb5c902c42f1ce6284fd093565d6801def968135ca1f6dad8bfee2447f1c70a29b749aed65c6e7cd980e20c78030d18db33a8cbcf81f495e74544e7354fe16049733c108fe764e7b1b2b1e5c7a947a00ae773fa50e0e82b719783c8f20c17a4f9e4f4d2189d36f1a48df9217b127abe46bf3b86887b095c8a9d3e8a7b50816c667988f52e919846a55ae9f122cc716320dc32a050de68b3086ce2d6d6e855d01081cdde6b4e724c28809b462ffee42e18cc6aada73b8325fd51ee4558529b8b392e10d71cfa43a10f8722b7d8e2c0d39eeb7e1b55310c06863d46152a4a71eda61342bb1ff8ba5d9eb26c101f32e90c3c9fb1b6e16fcb727598d0b45db5f5792bdedf802137c367c5a241102955a1970774f24c7902db51bcf583cb0a6340c8a528a113b5f8f96e067f059db40da4469b4991492379920133842b1b39894ed9a26f212f6dfd497a02bc7318937a6c9d8811de95460345734d1d943a52a77a405d04f7e45e9db0fd6167196da9c74440587bc866269014942d06f1541e66495f6cf712c6522ad1287d9927cfd104919225021d156e1802a43e24ad5961436b97212b703789d5e24657b7e04ed09a80560320f984651d19804391306437ff7fb1b5756f74b80d6d577f793078de924410259ec287fc7f79a0693ff8aa02a10265cde7dde596dee5f982ef552d60374143164e85deaf0a8a7df6cd7bd9ba066622469c63f0e68bbb328e2a249a592d109473d400d805bd973c8ae959e67479aa9bb7f1eea729e6c9f47a17c159752b18c0400ef56a3571e42c00f65a6addbe1688538306b0d72b097e14bdbb33ea8f7acf1585cfcf5d3506b5ab2d22070900a73119c771400348d0b01599a0abe81aac4ac9e7a01c8142b3e31d26840fa1f50f2695270abcffff6226319850f50c2aad8d30025666db0a374a2fca79a8d271df6ae8500d299ac14ff6f4e682393f4595e9272bdae235ff36da122eb6d45faf50f4e3580f57070b36eb80d8b41eafcf2b58e799d0e48720d9ea5fc42085e98b71d108618263ea2943220853d75b10c1fee1fa084b1bd27ed2de6d55c48c71328f4f10c1faf6fd26d0c426e637d98615c46f0b19cb1417327f2ad9bbbb55a74cffb409f251e47fa0a1af8f82d5bcb7aeec9dc07d568ffc7810f6d58d263cf92250a070ec216631ba21b88031ffb597183c4c0d411849f487d87dd9cd3b8334e2e1e686e284206082db0c7ffd001fc32f5ab31279d143ac99a5bb6e5ebf9976338e781aaa41a32b53384e8dc906fda271b5039042ba7bd02bf89d2aff07b3a09937cf2691b7e9f391cbaf33c3209114a8fdf6c4bb40a17c9a70330959e55fe77726920e24442ab2302b4b3fee1c76325f9d2d1212c8ec0aff5870e21bac46c33d16ee72a6b98111021d5424df1f4c6456ce6da4b754f206eda8324d90c0714c844b112234adfc6335503f287d8eb6ed596e35031384b2991570d8a90597150994c8194bc9ad2a2de39c3da6c331beb9de14e65f710d134a08b7b532b91c1cab5ec54300081274ec5e4ad13e4c5f91379405714bde642213c13987b1a4adf22db08e8afe2d4bb251451040bc73dd9e4ca678094bff73cc8f1a26bef0247af0532d89c3a1b842c5e4e6c0c9df833cebf723803a0c0d19b574de3bc1a014566ce89a49e49c8be6f836c8f4ec5f84f7bd951d5841de27dd4d428f5ba9e9aeb6c460459d232655e23d6ea2381e2c2cfac8fcf6f6b0334df3541747939d3bf9c125a74d4a61a6a31def517b49c1f90da0cb587d35989b62c49e92619cc1ec120394af38030d0851622a77223280b86cb5c6f204d0400e3ab6ee87f384a4be067685cea592e0b66f4f1306f403e82166d4abbb0af1eaffb40eb5418dbb526207b946212f2abc99447245e30f75f1792aae7b693b94b9c83b36f6776294424f849bcfa90f8c6cdf78810287a3c0f048c9b02679968a22366e0ebbca3f0b4d09953e9f4534f977bb70780b384a269a77a27d8dfb1e153aad94f16826707d60ec7b52462011f2300f206a1648ff41325e4158a71eef112ae4df66da9ba72882b1776187b53b14fd68e70c599c03ca083d28d53171780650973150061653fda1024d308de312a1eec189d7a7f6fc74e55410dffba02e47385aac6131730bf89ca0e5d611dfbd5dc0da2b19f0de1e107c90014527e798e2de454d14ea0e34d94feb56583a8649126b6e85c2e3fd8301d6be030f561fd0473089185cf23430c74b29c1644bce2cf23a6f6eec80010530ef7056160fb5a4eafa81049f6d7a4edfb81484312a7723ca6634c0588f7bf4f275c12f53b2bdaf7651a21a151f89a6140c342532f707df4d9cc000d3b0c228981e75c65d329dc49ce13487e8f154f2d5480cb6d7bcc7e3485e4c9d58177aa2a0ce81941f5140cb04c4ec8514a5a9f6a4081ea378803ca55eae536e04f34acccc5f7538857c92a9ee797593501912ce9aa418dd56630f864aedd6d80084d4c01f27c8244ccb62393f572f563c6fd51385ef2dea7154be32722c43e8033df66fa1122d189e8e556227099218cbd25562f6255a9462dba94f4c0eb7416d1ffd8ca3ca5da2acd09150b822d8aac5d719bae2a431af2c70e6d6d0182e0675e2fb44d0d66b59791a172a568ab840806e8aef3a84146d824dfda9c0d30a8feed3072e142efc0f105a945dc4f4654173bcefd5414f175a876a38064f3f18bcedda53e5afb3cafef99b8034d013710f71c1a6c6dd107c6d118cfa5a0a01b2a4c4f33680522a920e336dfcc6901d0efeaaaa9567c94c6efb96fa16bbee0d2a8a57241cb054749cf14fb93fe19cc980bf4dc2ef61a3518c6ae715f92204c9262a0cb2368cf873ab9aa41f8ba15d144df246a039d00a984d69dbf124e0c46fe22f4859ecd6c8b2debba0ce440c50a2f1f60b9414cefa3bc0915c9ea385e71c77114b85447e61adc70a3707ccfc923e26f6cd9f1946a3439618fec4ebc57b06743c54a4ee9d6c53557a712c9b1b8b43ecca826801f0caabc5479ee171b38330a1d41758c667e3ea54fc3183d78b5f9fda5dba0b7a761a0ec431f6716967aab361392f86f9be34796e1684a99dca69125cdc275ec0cd10b224d5edf2df90f4628cd5380c6cdb684b45b2837fd8956ee43d3c6e8d0ca7f420da13e81840f27e8f24bf8516aacf3c0fb9e346a6d3cd99057028284ef8fed02ad609130a5cd4c8831f732338741ec2ef3d35ba1528a143da8cfbb1594873f57ba2e89876a7c514a74410d6e4d893d7e7fabd55064af7682ea549ed65a3da09cfc9ee655c0464ceb75c59d6699b71ddee18aae69183e0bff8a6e408fe90708a06058c6e6c5e74d6c7a144efe2454bad1e16bc5c29e718d6e3761a48642146f8945f0f2a9efb24232701e2ced7215ad5e8d02ea8b3c088bf28f3568e08ab0681990eaf86a1b11e161bb8debbac7a18b347aa71790ef659bf588a997c54a9b4264140bf2775ad29e945436ca3c73578630ebc1ae6a9c30128cf18b1f40622d78ee217782a75ec4dbc8f11830507df29fd451b4f9964089f00a285d99fc285a9dc0c462f26c27a81c11c42736e87c14566c52fda48f6fd9b22526c9e45a001fd9b394083349c9b0f26ed212ebe0374be65c8da3d611f3c4d0c25e6d90c91a94c097cbef5163bf6890ba92e52d4b3266b8791d1fb75809a5d6fc88052b7add0e08c0c21a84422d891a3407753ddc0e3d0c5e2dd3a014a72bf7c342c0aa6c1cace13ff496855ff9e3fe5d76e0ca9e766b04f883bc2a5bc4165659e69344f2a3cbb8badc03f13398d34ddddff714dc4bd5381ea21951acb4fa08cdf0101c242ab7673ff71182eb58ef403f28615c4c7fc81328cd8c272754509e8742ba79b441b79970a59df553984cdcd08d0b59e5557fb2fc52ee1862752f948c35f04cb3ec61f3466eadce105c9597fdb2b16f873ac5f6d4438cdf71fae8458914b9539b52be2a0c3a8718b0164a1decddd9c9ac3430dddee21ea179395b6e604a8342c8e901f64c038120a221316c65003cc0146ceee3eaf831e1a8c383c1224321e301754b7035954bb8072584614723fa2242f20e2cbe1e03566bd7b7e5c4b7c127cdabbfe196dfb880059c30a6287c39e100b8b05479dfdceb72c110dc12c60ed142a3d12ebf76d63a1d821a6c35b513e7fe73edd9c43fda69dcb22a3db679447f3564cc705aba9dcee6b3ea31cd0c88a30e93e5a606a1db14cb679143cd9864a40f881ae4c03f6587d1617337f10687902abddeeabe4bb7b08135e89b27bf0f71e67167a486682e7e5ac6149ec738d5d6720946ec67bf69f6e3783d51f815b953f4e701b173d320eec27aebab9ac5bc66d926185ea9e5c16bd94f78298590d4081d62a6e4ef727131349359ebed295bfeb9a448a1287befa4a540865ccc4759eb5623bb9a117a5cd6d04b25aa22ca826ccad54c4c47a55d244dd61c45851451da9e89ff6d88390b0668f567ce7e6d5087c93119e46ee4c389f44cfa3f8c8c6014d55340939979bc1dfc4e28a740e874368d3bc45b88eb040f2a4ff7dd8f41d579e73a4c5da8cdbbc90971e302d60cae68d8f33bf50bb046cf540b49e58c3aaab66502abd2da7aa680d8348351fc8029f5b91141d42470ab34ab9900e1cad2849a68169e0b1b0adc8bc6fe16e035ee24d7690934a28ffa4652ac06cd4ad3508dbb48810b722ea8a38b810c839e42d1199aba4930066153f0346b69cacb3193b135ae1598f10b4d275207e140f6642c0742d471552162b2e910d6b3e3bc8475dee41c8e43739978d6ad700c27814d74ab4d910a8d7115402bdda7c9f3f8347bd9ebc9c97a02a6a60a0f4b6bbf15ba059c6c1c008c51ac0030ed1a641f27afd02a09b98a8e694a8ad967ce399c1f6b15763e42edcdc1d125f555d0d06ba61b55b4d1bbd9627b7016ac6660662813c1c68adf6e62791597edadb983294556da073a30abba9fb64d75e265e0d6be0c0339e38aebaa512bc485831a2cd1ed169c8b5e4801fa57277acf2e0009236561e95da6049013358f92d2323bfb1137d7e3e03f1fb3573c498367a8a1f63397a36a543699c42ff6f771a59f8e70f9843463e8cb8917811e838ba1ed2c97c30ce41f3abd289849f27ef8f502eaf82b66dad999312c656e6c911f5e9a4e0e872ecfb3375d414e480ecc101373a24a69f07ab7af3ecda2ea971a7b9084a3d3281a17e0cf03d4134e6032ad73589e93745e72832e494a70409848876c3c5834147a43392c770e3d0412f3c975d208831c279f9e194106552f90509bedb3e98e4b054fe0f1dc5a8354c6a9a1df16ceb882cb0c1473305fe8cc02490c3e0755f187b82c2861cdf50ad14d5d4211080c8a10b85962e3348224330d931babecf2749ebeb8d5ef29e0c55e8db057ac0650721fb0f64867d3efd8bf67aa4813a3a4db5dfe3b9524ce3d37fd3e5405268c2316cb8f0a3a19d2419ecfb3f1b9f05935bb13c4938264597e714402315ab478902c2f0581fa8f11642a72c894ee28076b576655d1e8368632e348d5129bf7337082fefdc3f9ce9b34ee0f01197f9dffb6b78231423386e15d5dbb0f004c41476258b1d63d9e4bd7f0767ab834705fd49dee4fc2bf3af97663b8302effbe06385169da541876d05322ab45cb2d6ae2ad534b412b7e47c00aa9d091b7353e1f812aa20dec501e3ffe5c6d0634837d8756929bc5d5861b9da25a072979835fb814a4df8fc2e8342e572ca5b0eb026599d0407f6adc8e2da1752fd8b68b0dade92908720b0096693e92dc92e27780fd29f73f5bd0876eb4330a381cf801a0d68095f8739423ec11dd1759951ae101fb453eba236f3961cb0f326c3cfcae0a5348bd2d0cba6f76d0a6082b2f0def639865e9c2bc5efcc484ed92b01dc4b3ab593745b5ecfdccb5d6c73acbe08a31d01cef20916d7a7300c0d4877aa1326b64e11cf17ceb960c68b04190a56c2e6beead7e575c2f8aae3bdab134f3f11df1b38d6e8e62f6ed036e65182978c9286883ed14c5e8acb9f24a506fbc046095db866dc9b8ff75c8d6177c1c15c93cdc48355dc9e0175c159122e4a10db6524389d2826c405e353638836b24a42e3f308c971ed3e85683eee8b6b91764ce9ca9916627e24b82a738297297284cd00fdb7d53313ec60c6d1a0d85817700b3dfdf810f528b6d68889b69788748f57caa5b7bdf59111abd2a420b74cfa2799bbc381801ac040eaa26ffea58274ad659e2da7ac536f6248fc8d78d747f9e68ea75c3c6414f887626b331a559505d55983afc5c46bedb30717bc30d2bd1a0ba557273a1db11c49290eeb1f232eb4633a8951ed328f3c8fd738042baa25c7d7dd4995e63a78a07edac515dd96a6c38b9cc870d592dc3e3c310b1d147d4250be93fce4bd68975effb2f34bfb14edcfd17d22e4f776106593697c9f18207929911997d48ff5bf8d1bfe87881dbf477f056234a211cb6edf3ca8a647643c3ef3033d84646b7d17038901fe953fd956ac62c089e145148a6f731867e49cf8d235d89989611511e5fda26b580eafb75446f9ed8b6ae0c4c97e06a4604697929a14b19303deb5ff0cf85d13d01e5f11c19c993af050fcf113ca3b3a36a2c784e74033997c9c10db1db730bf6e836c3d9c8dc9520d5b2b2158fd7e9108770d41eca9b503a6b4b4330b6d4497cac67e2008401e11fdf20947da3ccb22318c79d3f72107f9a5bedf04f596eac3b16aa4bccb5dab793d84d509d997cfaf95d772c2c11feabb77546077b6586ef7c741d3e7947ae40cedb7141c4480d4787201e212e1245e97836cfed12254c42258a7e10208746398df26504fc78214895b5c7d5afd812f61d2ed5087fb77c01f718e076050981b01236bde85095639775062b3835f9d83094e02c84ba5e49fccf0fa8df5dc72dd37e65723f7473b3a435cac1d88ec22a64cca12f32d92933d86618fb11a0dda50e17a176e8c00ddccd6b006445ce9569679b8209b7ef6a9c5255d7b74a687725d48085b53a59aa1d48f1938bc418058725e46815ce689a8f30bbc7a9ed8e4cef34803b043d4563de95a48c970ca15045af82e79a818fee676e34d9eaa8ab118f7c613b261c5453b48c0965165dc06c9370a1968df4821f6202c0e76ff00efc61831853950041ee642d66ce573926895666d1e272c040dd1d70df8893f372a164422bc0d5aa1c4dc07a1df838dee26a228d443e4bed4d5e8a8dce4448020937f0ffc91619b2157c94b58fc37b4b33b04d44d01c3106f450704c95efa9ed6c3677a04331a2db1be834225cf53062c93ace8a35800264b6999472366b6121a93242654b9e7c796064dc9bde891d1ea628298102ceb388fe62661df82da8423e3bddd029e4d8325d6e0430360d09ac8dd5c9110006c2e02edf844907ba5c080bb42b62dd2b4e92c28d713c8e92ef47ea4209739acb8bc3c849a026a0f086aab416e8a04494700db910393e58255eb6e700d7e0f258e142802a74752a290d7955c7067a2c0bf962654cf4a5b4278f0e9d5ba18d071eaa33e98f7370cfa3c122442376ec13fc1d3d0e3f623890e991803d5a31ff98b00b1d5b20027d1428b866d91f472e579dc10abc2c50d860df46e6d5ab37f9c0a5b33cd90f6584828347b6d18fcd0948b9d7bf39a55ca5e7795f3efa43a2f094bd4e938b7426d45077b8c7de407b9d8490a0f3db80ca54b6939dd46b142159bafac0911a7b6c36069d02f79e6445b192ace5b1e946c9822e317dc1a68d94306102647cde246573ce3e8e2fa79c94014e85b896e2d2bb1ba231b2223736a7181d002404af1ad8b9c3108127303ebf97668a3a5226933ad2d50915e2e984cc8fd74850a076d2804dfb05c3263adff3445a31820e8079a1bd32f227a1a6c726e700cc8bd0b687f662df793cc0a287e5203152101d34b53945c401281a393f52b066f4c02836b896943bc2a87f3aca1d78a8549b63b895412a12397b248d1da997327d15784531672ced94d931e4e05828e1b84de7a919e102a26072fc6d5642af3a424fedec20e9b3168c4c8ac531ac19e92e6f1d9012ef567915913f83013adfa34536687e4be6fa9dbbd81c7f118a1c2d4c65d7e86ca5fbf48d09c8125326f0e4890ff140b1acb82f86c1aa00ad7060bdb217afbc14a74814b301d1d568147132fd4aee65b81705d92357803e214793620396be37a9b9e7d616de44632401bcacb7233342072bf13cf51656c825b4ea147524a4f1d4d1e8e61b3a9a441232ef5c2342704933245e61071d59a6b3e0ad917e09578fd4145af282239c02254c2cb1759618eb9c60605fad5e473717aef23ee35fcad1aba5d93653c4ee4d35a0d8b03ea029666fbe9c8bc49026da0a9a038d62ac512024f5ec52406bd6178fa5bdd3e34d1454a3572f46372a554f136add6b2435b836691333aeacc6df0b13ef2a9899d4c53d2a696dc1f3b3c768764a70e659989583dfec14d4a96ed030a4731cfdf1092e9694383abf150254ac0c1a462034a4f1fa7e91c919430e0d37cd96efc25806017ca3523223dafd4811a6b99a9139bad09f1f4720fd65d42935086af840413c6ac5118732ddae9a478de6bf0dd6c832231214a38064fc738a1099e973c1afc8a33cbee78dccd5e079d728d13ed65dbfa6c5703865a33f3cef411f450d681cac0e84579789b8371b8bc353ef29c2e47b527b9df21b18ea983b685803fe7c777709d4a54ef00ba4ed94ba01e82bbaaa207e8375780303e0785a08ba25eda9bc9c5ef655084b45c9d34087f93fb471d6bf1cb0a0b56a63c92f65f4c2bdd39d3452287c7f5ffa53ad0a7582b3d00e96659e2223892f0cd0aa9d27546dcd4eb87ee6deeece8b32067af1d6969f27aca0608ac31697d0d84c423f7627e31cc181adffe78ffdf9c0247f0ddc10fd3e29a4053aeb5f4e9d84c78393db545d22837e4456c8b1e7705de9aa0b7a88583b3f5ad024e452b977021e10ec37074793d1ee48c7b698e3f371a97fd9af0f181cd1923548d6f636cb63d33ecaaf05b6f148482599a13c6b318f0a71edaa86b728c38f7cd0a49dbb8cee728919a15bd7d418c15f63013229cf712cf33e3d10d20305c44c18409b88da104ec0506d51984f23cadcf9d8cfa7394b9b315bf6a05f9138a996b221918d6a24b7f0602e59584cc11dca9bccf0f7f1b2e5ba61ff6f5d0ba204da11ce0079de338c99c0d865f209d4873e1884abb30930184822b9f8744ca0d935f61fea50e5473965264df51fe484a886ce319ed8dee0916599541bf66cd7d325e20914e49176a6d1e9145589dd3bd632e180e511baa15e4df9f0dd09b15da958144a9606444c394fa36571d454db39eb194bcb1a6c301ce86191448a709945796c5ed5f774fe83b9da333b587802e18ebe84d4090455c2137c139e1d3020ce2ec8813c312ab3ec200998a25b15a99096264e991849e4269b80256ca5a4d2224d3e4b0d70ff69e53981280b99f913538932283e4751aeb806341ba6354e4dd18fd8c50b1b51ec850e336eeb1b584775e9484596092285d556ce41240a7b86ee7081b1d188d8afc48f4204c28d35ead70ae05238c71c0cd97dc7628ed3d4a743259b3100d0dd8b52183bbefa60a58851b7a77ebd5fec11593041366a80c154cc6893b6c449fa22526bcea838dd59fb251f61576c2538afde83fb665b265a0a004b33aa34bf1bfdf5d5906de0ab9ead51ca7c95f160824e1a224d95684cb2f089851d07935028e6dbb1a3d6fd1c42d630bdc761b6e3482dc60f9354990eed19c427c556830c46c82d2d167f62014c366648d9fe47857d8f176dcaa48014a656a256a2814da0a110d09770b0b861339b72afaf5474e994c424471fdcb645e8132002b7f9344c6730b8246e346ee81018fd3717ca71cd37fc51484a06b78cf2ab4ca1d71636464815ac991928fdb09054d228324fb12e2bf1f5136eafa68f375337873ca39df900906ef6e174c75c667090a83de0c1201a5291cf6ca20b20351123e697276da85a9ba9045348b0b2a843136be9e60c8af04152ea8b155e9168599d88e6a8104fd8f3580b60e09fd75166a6dfdf0fa01c0c136316229462ab13ed8ece6f4272948ee04de894a4416b245455e611d7adaf1d531367b68d4155067a6f7a5d6a8013ec5232322b7833a27fee8b2329a112cd37bc7f89ebdcc3fa95ab1088643a4c5f5a2e9a0a562589c3a017f6bf7a5181ac42c7c7719d3f7e949dd394eece70e2e3300d352097a2579448e90b345cb0d469df782aae32b4d0c9e258d9f1a8323b2278238abde291a171f76e0dc7247d380618aaeb8412894fc8ba5351a9d5cfcb12582ded4daf0677f081d5a52171da3f65baf09fd2b3d503d82f5de95344bd1b8947193fc20b69cae47af7465817da33e7b5d77b270f1b92965dfbd6d37d5440771dcdc2328d02c83a1095fcc4cc7f71621466ce8682685b62bf53d38904e066cc02c48d3a3049056b5f4a810804b673f660e10f2b76c6922880db9fb856c5a9ff4bd904912983edee7558d67f9961fa5b5657444b84199af8aad0a28482aac8120a986518d509c56c5182c82d68848fbe42a83092d2b9e465386c5a9f5e795d3cd922f5e2ae4282f1c05353212614e277b0af7b3e40ff2d2b28fb8a9dd8250ac49de7dcae73ce44b91b8b54121007ba160a79d4584fdcede71a854e58a405407f0f99f9397666e3df61fa5e95c7e3162e9c94cfd60416f0227083f64bd4085cfa742577ecf3164ea0bff8c6db3cc558ee40a0b52522c7334aa15e9e47857dae6101f87eb46950c79be87d40178f34628cd3074deb36898d23810651df1f48cca2417d1ab16fde4d705f8688cf66065e7968a4b07e9ea1a4fbf680e90a65435c02d8d73f79f82560c6d87fda909df0c51621435b8ccc6f18300ecffacd013ceb4073eed6a3955dd4d7580f18be445d9209d4812999037138249451a13e25f86592316a9144cdd5b48581a21e2aaebf0658b80e35d05b6190031617bc1b741c566a77b32485951b1ff0eb1db4cd049c7bbd8bbb93b6d07bee3de6cf5dc350d3e69c978978f77268f5bec7d579fd6a415ef494b7b25a00fe4032132ab537ae70f1f1e1ad9db47bbc484bf8372b1bdf2138245886b2bf781d6004f2638f052f2be57fd4a041aea34112823686cbb28858600eb79650c7a3de58b25dfca511b41a44570b5f4d76b8c62a5834a6a5566282533e9957248b48cf13f11c5bb0666456b50045982389d47cca4bd526b8f69f84d072a20f87e718803a6cdcf7ece1fb8658a24f9df505d21652bacdd29549ce3126cf77ad546c511d585e3b14ef2503b4fe854840b2060cc026e9626085c1803cfcd19dcfdca46795c5b177623314e8a0b04805113a9cb6e9c0efbd3d7c6b43848e7098628c098d3eddea749da95aec4720aff8e64f9bd25a87ec4b772f39941074e82d91784c09d052c067a0ec6a65307d7e17d433c89e2af1bd1622a2792e0d442593e68ebe8a37b0bb9511f7f784cb2f79bb962927b16e270c646fff1534cdec7aa42f8fc3fcabfce5d5f5ffe5ae48bc488e7e6bb7a2782f8f00ee0e9939c909aa130627a1ecc68ec6963e6942d144568a5045e03854ae8ac0690b32ba7721d845b97ce63050472de097fc78c3c4031e9690a03d5fca89f250a4dcda690ae190eac7462bc070d4fd15de4a62bcf59252e7da901bf4a3b17db36614a4aac27fcba46f08393a16500e2073aa85e10ea002b801b99cfc5f3a873760b77cfb5f766a0c958d9afaba040ea42fb2036f52966939c7250935dbe28f8fc98410c77e54f206cc61209b859a4ff2fd69532dac5c02a165751c8431dac382115e97f780e6ff21e06a0403a3c90ad759d3d0307c00d8f2820cf15996ee1b86a803153aece9bc99247fa8cf68e7326a6287c53a776abbdd6c411bb6b46bfa2eb4c13e73d9fe2cc09f42d2f6641f24fe85d52e28128bd8b0801ffc5d9c3d8a48b4cd63016c831c5be5d9c767566fdff78f87ed755bf260f7b612f0fd01f17188744c21f6426d9d9dfb006f6a7696701c97e3f61f10f8c0668f6ada0cd606305221c488d0f407c1198f5b4a79efcdb60f257249c15666b674a80d9090a2073ab67675353f370031995ff1837bc9e9f6f8a701584f01aa63430c5ec81bf9df790064cd64acf251cf7127eb5200b71fa809bc05de28a9144a3015f300923489b994e007d153a6ea9ad695a048d4ac769605fe6881a8e1cb745639869421c0d6e008995e17d60ecbc708726a45736855500465ef99e6c246313e1ba530acfdc206f556e8b1e3dc28bc409ee2095cf30810a9cef196b5330b6f99507ffcf21045e2b0f81a4349249aa95eedada1387854f9ce193a698aeb77c0262d00f72f5c2eb9afe8ba3fabb2ebc2512662bda0b19bceda07c17b98c8d9f4bfca4b3c2584be203a6cb3062c5d8758f3050cfedb50f057a02a334f7e76c67c209bb7e693cc495bc4143df7defb98e666ff2f3a07edf3e96739b60fdc6258e7302582bd1df7f6e4e27f302c6676d0953738d40ee7fcc28ef3c0c578313229fe0f0fcf634ec2b07d78c6246cc98896d7bf2ab6d30a00c78cc83c3a7ba2f05a27f61046c9702bb7fd721311ae4af86fa4b2d800bd3b562131cd1451cedc616ecdb039161c43bb05d46e10ebdb2d60449cc7b6d5a439c9fa28b7b33a0644b74f1637bc4ee1b9962418f5cfa6d72950e4604db29dc255e909fcdc0c0567999a511dbe1edc00df0760e21598976c4500085929c2d384f52fa2c590a8d8cd498f970a2e261cbeab3e06ffe10e534c7a1c3e471e3c64fe86277bc1622b747e6632bd40d7664ad223f46f26b2e9b90b3aefcc601487c947ce455f36310e33786133703220a037e17056b284d8d2725d54e8d5e1067a1f050aaa46e6dad54bfa03b174839c92c107149f9610c2ff0eb42785df29c0b29e8f4b24302d8dbe8f9385614356f74f91c90e3535fa99faf75e5f4c2975eb8d1c968e74d85e0be0eb072423b6f2926ae13ab78d53e899a66d5f6dc98aac8ed64fe7c4f5f4996ec4b6b5dbd7cf906134c9983187f4d27fb87c24e5f463fc315afc6c9945d0f2140f1da35040b1f90ccd06656ed65dcdfd9a4513b545df300d9c121c2b5b029653b6a246a3cf6b8be5579fdf2fa3e6b1b4a5d0d358f6b6e5a0931c0dc2cda2dbc416972087f58f0044937ad116c8819886c45a61ac03d5b2413561442eae7ab27e14234cd98f7fe2d60a3fd30216e2a55dee93cd7ec9a73b80d2be202c668d60236cad2c26e3c03a2eac634b123a93297680af0c799f71624e8a52e1228ac772050fda2074997c020328138045adc3909a59579a65e0bb7583a20e167178c00f22b1ade1ab4aec1d0655371c6752dc83021817984bcb496875841f4e0efc0e83ff65515953f5b20c7f689596e9ad20b65852f2ff0d752b1bc8b2dec7b8ba91babd2cf66962b35dec37ce2ada62a3e3b40f43e51014cb8b8026cdf8bc0d05c46c38089309696696b5e8e2ed7be83aca7a0421f3a390dac0b69bc9a01db31721c31551115dcae1a42a84ff05c31e4e69d334788887db72d27c3e24f2be99b20529a0e2cf3a04a2c7d1ac40ee49753af4d9b6ad61e3177b1b5f9646f4a464f76384c0192d5ef9a87937c58982a4918b9d53e670244b0129d6a611ba780de9a63e58e14dc4667c910aaab3e6abbb8dd2103dfab4ded7b80a8ba62931c5840675551fbcf056643b13c8b9c298d12078ad89c96a566a0604a9102a3b940f8deb523f38e15de47676776882698922c16c4aa139dc365a02d25c0da4c55b8e436116b4abbc45838093de20429238e958afb65070f2fdf2270a215ccbc35dd00527fd096e22b175a868f6a5f415e22c520819f1309755590ab8ea40ad1b604805f1fd064301ac8d8b3697f9c353e8739e15c59a2f2efe531a83d9737ef70b83248aa6c9fe147ea96df74004512d9ebcc12fdb6e719a15fab2090937b904ed9c9d2c5a168122eb805595509c0e351044fc5525d8486a305bddb4a80f97048af407506b31c467c7596bf11c415c95c4851a38e554a36401c6388a16cf532f84ef1f9a4562897c00346ecf8779b669fab843c3f00b3d0d701bc7cfb46469ab21b3f82254c78294fa50f873446af3f6b88420deaa689b9afc97b557b018855133e862a855ea0780ce749ea594f2abcbcef3f67095016480c133bbe26f5084141b312b51ab81db91736023af76e28d09931559464a85b86cd473776102a48589a944478f66c940cf036b603e272258a0787f2bf0741b337e56ac94e152ca9e0f0935c066e9239aaefc14bbb5b435be2cb4492f406b9fb35f7e09b5ec603a13eb85c6ee96529d96715751f7d3289ee02a32b51f9919c7f1af4bd3c84aa20126c57102d5a9853359a5ab8d44743ba7eeb8e0bcd1976a7083a8063406827c20326088b194a83e3e46a91bc604433b0dc19869126db26a031b0879dfd550810ca6df23831f8ba4a8fa8d3c7cc0bcab5da119713136c9dba3e413fdb2e0c1b68f21b12abdd718cca7c3315424cc1736f483bbb4efcd9bf1be749ffe1c8faa3e89fc329d8205f7080a51149a4c0ea75b3fb83c92b97149a41d54a2e01b592fc46b472ffa422148f4752bd5e3c60dc47f4995446370fa9642bb13afb1ac9313514a7905a37ab4289d84e35fb4565f0914302aa84cd28f92bb73e1c7e9f340e46c2f705f12e91b851bd5202c5049e0051371b9848b9a6f92fa12f7c0ccbcc17239525fd69875c5411a24511d8aa7dca8fb6815b5dc2342965772369f26c01f17fe64b8b3272184d133e4ed951365fc6ad391c6538767f1a46aff3f67ffa72c23f9c4f922446a6652abcc94d789af0b4070bba2a1b75d566a2a7c00721c567cf26f3886d88d5f898d36db314b89fb9f3f8342288525ebef5ef25fa01dfbaab128c1cda67b813b26fc5f2d946301801b7fe9cc04a9a25fc664e07571f1cfa35420f3873d3fd1dbcd89f2e88803fbe12180d7acde14850d7ae61ce2d071574f4f1e0383cedb0654af3cc93fc8bd881c0f81e104ed7e07384a09791b555a1a14fc35d9b4935fa657f240045ea93389b3c1a51674e06c100276c6cb8da04fe606ce5d8ef91314a9f8161c82ae8e56f956016e457f1183f2fca3878e20b33cf6b1a3a9a43304ad753558cdcaaf3d34cfd2a1f3088aa84d3356f4d6e0be6e2a9993062f4491d801d82ee17a1a6cb062403d472cf8db17d7f547f77b6a6f761af05c2ebb45f9a4493815767ef9d979a93985cda80b7f2ec90876442e691b02a03f0353e11020ad0e4d3596c12dd7601d629b4e57fedc4e8470d8f6d05ef1bcaf816b88f96ad7b43a87ff8a593bfce0abd014128cae16e144240cb1446504353b8f4510a833886836640c2b306a67bc9d58b65df404c820f8cf70f6cc1a1b1b1df8708026604e67f0ea535b8f07500556720723e7657489dbc92341d45b15152e14ce6572a0c096ac63c39859223401b3cf29c68c67f306222f17f79b744e775021c951051f1720ffd1387f6e75681b91d663dca1f3106a14af433f5e999efd3b98d2736115e92fb496139c47fcf86c5071029b7cbb1a5da15ed304b8851cb3909d3997d616939733d5b723f4bc850759fc2bce4d21edfafea05313a15c159b6bbacb0f1061d107464af49222a557c1a64f10fc9d804d5acf44fa0ed991a1bb29d6b3886a5d1ac6b09e908569c2524ed141acf78808fa53180beb1df8461bbb26b90dd683c7581a1e4ec7f6de0c3255a7f6f21dab2b091ebc3ff1e8e2f1d01fd6fe0c2c5d998e07d156f1dd2c1d520ae394d3d24ad9473ce2d79060009afe9354e33a578128eb67c4b522219ca8cda874dc4eba21bc4a0b9e4d31c5b694da7726e912041f1f3873150a8ac24d4e867d2ea7bacb21147d092eeec9a69f92d535b3652c8667cc7e95375b9bd1f9a3fb04ae5b7e4303ac5340fdc4d03d0af4e24fa4564cde2c8a49e4a81e1b7c0738b39ab12815cc88c4168c9796cc9b2d319b228ee27ae2cf4933125909cccb4986cd434c54162f404effaa1f7eb7137898ce22008981a9a4ab61394697505ffc1fa3ffe59603839246f33c1bee903ecb64910b40787e8d5e7a25b4ee2a587d3c3d700df71130b3fe9286550b493de070fe887fa0da298f03fa2702b2d18c72bee7364803df13efae4121ea9756dd490ff067cabbdf02edef1de3f64058ace5eefd2257830e7ae225dc7af2eaa1647e862db9c1089e26acb766f689c68a4c297d61b679c229030d5b293ce1f8cc129bdb8f07bea21d2f04c4ab3d3f11829d4f9bac07029ee832c4fa69f7173cf4c6bf77b365e5d0cc3de1184fb1e4f26f78c68f2e6aa506f2485defd0262891c88e92e892f0a3c4075612498448f5b137a6ee05f8f9e53fdf056eb466f627fd9f935705aaa37fcbdc8da683f45f09a017eccb6b6bf96b3471bf8c19c664c09adc5ca361bfe3ac44f3ac08a00799cb0ef7433ea0629be0f1a7e1a716a3136cdaa994eda74eac5d22eb44feca4e29039e4b5100034819647a09a784c1509a0512ea54220eeb14e0d134f96dde5723dc52f10031aa7059e3a65636fdb2383ca34b1ba3bdb4103ba6c4a6681590780c84abefffc8a87c0b5e736434948e2e4b2279b56a3ad5625b8c9f07217b1a107b6b0484c5484fd8c59f923252ef8b3ed4a56cefb5aa681f9f2340ec72669df928cb4af471840f36432061d9df3926b51935964da18a863b8b82088097163ec5971adc9d15ed5c2d10adce279eb727d6d07ce91a437322e74650dcdd7fb727ce83a63d0008d8308b0dc319355444f3b23c88b1c9f032ff39ca52217d925d5bc39f0cc3aafd8dea34373e00f02c22c754bca8a5000b49512eda053cd3f6496b39dca75947d23689386f67b7a000b1471346e269a960dfd65a7201541c0ab6260968a7c0f7bf7c47863cd80b8c3c412b0060c5990b3cd6ecd73c979cc09ab4ba2115d7ba406e7f9ab228e3d8558b96f087a56ab34e040012440e00fe3bb38357b0c4826c8d4085409e2fbd57d6eb5a5a50ed440656aa95b17703b6719d1b0287e2be5afb6c2ca6ea5c8bb520fba3150c858e09655df857866ddeb1ec1d73aa6b12adbf5be49b96f6a710b46aaf0b1b5e00cdbc7abea0c9f624fe2b371281511899d52be39d7b06e2d097cd9340e5f50fe1b1fafa3d0937f22bd755b9882399103ef46b794782cce6af073488c89d196686db1209ea086100b45184ff21eeff09409ae8febf73a94252a61271c1fcd006447fc5959fcc0693513832db69061d35660657ab14fae3a2dd37d307a0f5d7e14bbd3a675ae3228d84e77e1c7032f5198c5c2f6621fcbe82eda8e00e3dd50d88d81ce9a9dab68b7b1e35b2230521401fbdc90d48d0bb3851d50418fada33309e08dee180c178fd17ecfb203f5aab520e23122f98bf66871845cbbf98973878e45eb7d1949c9c14086e85ec1872821440f3b168830a5a7b0d687f489ea190293a7358a2826436e2f65e219c5f47e131148753321132c513f3bd8329a20adeb1a93d3c000ea242ff13d7b7b3cf71343b9738e3ca04811f2735f345a30f979716145470b542a39cdb6a2d59a4c73aef9c191d0ea929de6b5779cc2aafea39fd46a5cb3d018641088afd94cddd98fa43709d6361b3727a40a1b239fe575e12921627fe7d28190298ec581452341018a7f5a9955c6e8e751e6f728d9bc389a49962ca98a6a3a09131da10ff6b27d4273c109f849594a0a9bfbb8d9adcc47a976d8a91db1e74c5df04879818c1a3ae09fec968457f29ba8b981812baeb9a62080d21bd2fa296084b1845c37ba2a54e9756d0b800283e99795ec268eed91419e2a88c9d9d80a277944b5afa2cf91359e18cfa9ca203c83d81c04e409c57ba07d539b6a7f85e09873c629a13aae0e0111b78c0ec6436434ce17cbe666c68110d4f91a624a2a9f9aa817ca3bcdaf35693d6b87110c46fcd50d9f8b691fd6051c45bf0ab436bb7541c0761affefcbf50300bba51d62e20f82c07400360836244412d501a44e414154f1321714866f2ce97c418daaccd61950166c764a9f8c03f42d3f4516c478bba3626b7fb4f3769f66044b67f6db947e431a672d32035719cc6c851f0f6bd56f52f24564f6da2e1fb5c443effb1be781319e5ec79106ce895d799bdfaad147a6e02b210ae59879676c009b7f286347b28754a2a1f24fc1511958ae2f53bdd37485e4e8c854f2b359411d6dc4a81875e77eeff7255253493c1389d71e8e20b8434622bd7bb85847a403aea46e8dafa634100e6c70ee1fb8141c38ce6fe6d86a8da8821f5c3cb0177bcfd698f258dfe0c0807b17c126c085795764d80a7ebd3da8bfea5e43503a9d879c7807a4ebf187ad589a6655fb5370fe02c2dcf186bdd2f1a5888db0a8dd1807b7353e9a5681a30f8a4f72ebeeb39401deec519f9b008a527514623ca4c22924cfa83e82fe6bfe00f47319e7f1332fb83a0c23b0eb24f2ba6f1dd13a1e021148f0f8f9a1049225d65557fb2b8486a73e0f54423d2161ebbb95ab2999d6146422ac2411f8f0390c6bc6bb6c3bc0876107e2f99601eb8f777d8db5fd5d6db5106e44d591e8b5b508a6a9ac2384222f23871c5464de7e13980473e3b4eb0445af2c65d13f477152918745b66d73d3b1e81a966ccee5f90a1872a4435f7da35ebd4453b8a76f2ec67f41213cb328e0f85ad265526a1e15015fbe95dd6b206230eb2a639e7f045ccf92d25156eaa069e478533cf5f91db46e83cc3c0ee16620c1a924804655e4913a0b819ebb7202cdac4a0094734b4b7285dd3ad7095fbbf432cf0ba8be70def5f987437284e7b6f100ec270e10e669e57b6e27bb0edb05bfdf0abcb60a6d866dc85e0487a2ae045a4982e36449268cd27c3c19158ec1df0299d271a7c3b6b96657e46f4c3a74258c09e684a5f53a2e04ecaea98358d0f1fb3ba4471f7f3d61b5b37a16fe1fba4fd97a244736ee163eab7cd6aeffadc09ba1ef94c7ac4842717a508795577d5eeb0547b2816664597b4aa58c3ca552d6ed2d26c7d188adaee8d9526ea689cfd00e49a01c404da96a1d4f3b8088b6937c84a5d5c230fc21c511b1458258cb6ce1677eba94a4243785501f9f364a481f610d5ab3d221346416c491caa91a29aa0258f80f86c7ed4136b6fa2d4ec7be492bbff10d3907250592be3e12639aa92276c4fb97c8ddfe5e720f1458242495cbd6002f544c2b98fad859efb582fce9a8407112fde548eb37ae07713a5dfce998ec55e8605f168d4017453d067c488319748775346078555cc39481a6c1aa74514c45a17182911ce13b8010a5bbadcce94bcb7aebfdc2164c6aa0eaf193512687e171af7ddb9746f5db11d5e2c70661fd2434758208eeda6da6b38585f43019d16303ef4024915a397ff9731a6214d8431dac61468e61272ebc1423337d108f1a5bf4c773eec29061691053ff94e6bef461a6a5516c9cef86f28764c526028083e1c8f445501d1369cf84c02c7046b449058909b37e9a4c6140324e4b7fd50fb3e12055f25f089fda38de3138ccb8782591b818bdef0d8e69b2cef14e50e17e96b91f4e1eb31d12abcdf43b8d9eb0feb3a731c5912990c7fc73de0e4b7db6cf5407a95a8367ffd8b34cff09227399523b681bc3b99f463736c07c21e01c56b89feb4676409aaa011d7d54849b0127b2e893f389922d7009e582d1c4980b343456b0c77526648f85a0be120cf844ec09d377270f8c4743ec86810c46c6aa358032c580c3c46a2529fb9a08bbbec43d65c42d1fbaaeb17532b429ba0b4f73cde26c1c82ad00efe16730a02737fc0cc8b0c8402ccf7099fee21d4406f88ad5494c0f0f686afcf7054a846fb6e1a8a011eef5c7a57ba73c01373bacaee6d524bd366d77062df88101dae42c0601bfb4517ed6c469581d6671720a8583bfb64bc0ca91fefcd39bc8e9c1bcc6bf0435e21236d48c624ac6dd062dab91059bdbeae01e15ddf9a01187c530d7b25a30d4a6c942b8a453436dcb049b9c2fcfb4e9e12170a87b163060bb1e95743c3bfb906bc24ec19c68a03e05186403ea687c33b5d9bac74611f790a1942be63bdf87b90aa034e2ae9e073803207c2fa860da2c04098a15882b16f2fb5130bbc0a82d768854cb6c0e9da332734f343e77cfb58e9c186c2b8dd221df805b90aaabe4f1aa95a061ea1649d2a4b4b1f2e493406fa8477ae0d18fa091698e5474ce3850fc5890366efd75631d15b7c9a484a7946604f2c5e7e404cc247ece7a85704d011d035427796751eb5447777a36da5a2cb35084ddc0a55b191ca2e742aba2a7184dc67ffe5852ea076cbddac502de802c6e315cc12d09b126678bc301eb5ae26387febb9291dadc9c36195b753bf04f9202509356e66e7917ce9c906b9edb07b8f02154036bd1bf7134d1b033932c05fef637e9fa7439f53282f1766011585440ab677ff206b00a5973b437fd854584cdfbf42d7ff96aae629afb253064ba1a8b6517ed1eca8817b771b54ee6447709342f7da693760b08ab0ca51cf3788308ca324e37845e4be46eaa328703c6710e9ed3b96207525e9eef44258bb361b38964ad6b134a5a5539a6d76ffffd9a5091a71c8dd68fcbb40f5ffa5472fc67f21656735ecb347898ce31582121ec19e89535d89083755082effc2a63bba06e5595417364f631a3a7f9026c25a027fc1f3b3e09c72b5c179ea11457cfaecfad401947014f31ff4ff1a890184bb011c80117159e72c3ad197bba242dcf60f9005f822430dc15185068a047980b49c68c22c20c0ffb90c535d69ca171a9abb2433800fc51cdfa5c280979017f0fb4402dd96a20730667361dd1b33638e2dcf8a561b941517579048af0486666a31d07bdbcefe67efae92f3b918ef2c0000173734dd1f67d51e5d28d44210f8b056ecad88bc69faff67aadb4b35e2b208bc1454e7f85f6856ff8ab96ddeec3f62acff8d30b9c643f17f09cf7ba8f28440a3a27f6df8195218591e515732b1b85b188ef6313a01c0662899964981e09475d5a3b16148072c24f0297469bb446e6f48bebc1ced682c242e5c303a82889c5bbce0e66e271a65e49b7040801780cb0dadb13ab0f1c4a2e83309a4aa7e1ded2f18e6b8a37f239f56bfc88ac6a43b3298dfcc3cd4ba413dd20df9c88266060a12fcc278353aced80180f0bb009311f598f27b5225908fbd79ddd3bfa35bcbd74f86618a5b46eaf45565d43f6b512eb6b9261b1536d48a50b151d5fd3018222cb3d82111eb38e7be7e5b28709dd03f819635ea24464105331754c8b1573d877032ec3a97855efbc5e8cf35fee61959d4cc84af15dc44794084ea9aa5527d2d69229f20c820f1ccf4d976740791fdc1abc38c41365773a254da2b65131deabbbae558f91341c34720dc31cfc0ffa4f9912d2f087da1ac70fd291a033a038582b56d3e8ab0da4d5c8d7a33e624547603b6af2aa2a280cc2421b39639669f3d0741b02a4bc45999290409b361f64df6d7f9e8a716c8ad97b2b4d435d009001b3c340f81ac402e7fd4d399ddd2451fefe33621452a7e65818cf832ab7244e8163a6dd519e4cff59197b74db25913b811deffd0524aef59ec4a60bc910d0e16c2247c29a785eaaf71f1f72571419784b8125e69bb31aa2bd9e650515119c4ebd25fca5f4c833c2e6648435a125212a370ebcfb4319e098df2a17a0093611548bed9af20b8feb1f04d2515310510c6b7efe46eca2a6e6ddda9e3fa373d21f71aa43ff502c1d4538ca351878ccadec181fad5793a2ae379fc8f63f81f4f16ff923027d14d3a9c633b51fd6a25618aa65dd038f037a1c3a5cc9ac521f48e20d6c2fa810dcf3b36d81b77d022467e58ec25b44597cec4297725f95fcf00dfe5939efff1ab6aa55645305905ee3f4155db3574a595b3da73e2108f10673869e2f7f8473839daa14e5769c5c2a40e4bd454fbe3e8f3657c42bd580795d74888bc5f072444c39ac2f0411142ca339f5a08bf8a5cbba8e50bdaae54926c887054957ea5f320b1808bc94e110da07225b3c3ef355e0b872460b9eba76d8f8c7721b73f610a8b6152720e806abf0d8f0de386fe3c845736e7f970ea046c579696565429f722d61b78f05964f8427d001bd23ed88c4d11dff930a03f18a8f4c1d8734af7cce75c49da8f45302ce8b702bddde26a45f9e30277bc5e0c7c01b22ca2d916deff1cee3f64d9d76b8b7a8e6f274762e195f33489e6aa402ab60de9d0eb4283c77d02abea13e2ca00434b4b660d2c5cb5806bf438ad39a0b0e302201775b8e40bc5b3e24e021154eb503d866c49d8beec49ec48afbcaa33bd261dac6a36bbd9a376c4c5aff4d990f7d500e78c4901dd1404892055aca762352b1ab6406c67ff9646f7ad0a90a4ee35a6d798c72f9f7bd054e2b62788239a83a1866cee712e969b571ff59e1a0e03970d0e97c9c278e1aa1461ad205142dc105aeb7ab532847e4af783d8964287cf588acd843b6145e50ce64a242ce0c7076068602041bb7dcf2aee41065fb226e6b8509bcef8ed91eada9b9ac35fcff286a93df944d31fd1d13dfc1a99b45816d3e3c1ed3f22de0ae18cb9e7d2dfbde7828519ff9e1aec2af0b5ae028858f6d2605ced41f0e487031fcf6e7943c74863a18546af5e827c9da0c11284820a08bd6a7e25ac6a23c41c6badb5f0a0a865aa2442f4f7946856d1bbfed900d50a0b8f69dbd989965d1afd05a448e0f3cb02ae55819553eb2526269ba8853dbf18435e6d74430fbf9eff847c12d87525c65e59d54427a804f5c7fcf305e66acad300981cd631b7144986afb8037a0588f978b54016619cd02be98a95883582ac4f0c732df91676bce2fff55a9339614807beeea69b6518fa50b79f94b47b2020e83b5cfb26f773b64147e8c049d6fac348eaef4ae1b527de3e444b21f2758d921a9b4f3f723e63ee5cee01e6c8312ba8824f9935466cf5ba4e944f996f25ad018e9cba85eb208be4eb3d3c528c89bad2c02cef7e3db7ab9411d7b3c7002ecfd42b1f273850e88c6fada07e7e3f2c0a320f58fd90aa6042026730ea7a0d58c0a59287ca1ae3eba340c423e6aa09023234a53a190ca510a424326f5f3ff5091212f8a6fe7ac46b3fe8c20db14ecf22ed6bc3cb73d545241865f9857b445a09c91e5d38f589841e4ea33b0452f660b1893e29ec6b8c7fd155eec133d26ab4361181e458f1ce7db1294f7a53ffe1b848c1e0e0f0dfd5c9deb4e3af4b55d0caaf50b82adcf8a2744e6d6962d0a72aedc18d25bc2df52eb1b2b5be698eab4fd900df2357dd28329cc1519ff01c09c1c9c27dc0b80e38d23952625ff129e585f82146a64bc9641b57bac8f7084973e2034cc9c1b3701c89f63a8fd2536227ce256db0cf57c5cfbfcf267c8964d0d15614d75282cf493034392799daeda946a50cb2098042c244b12c7d8d9c4c3f2a4fe92eb5385e693dde901fcc683b0d175fdcd788345de1623dd69df8ec3bbfae7bac050d799dc31a58a51dbbc75a909e5e2a551c4490535311148af24b08576c7a320ba19b054780f00e10a24c3c54d0a3a774841290217c464e73ff1241047bdc37086b0310d7fd1be1b32e8832561fa3f6776f823290656c7747910119cc2465b778f4edc86524ab0208261fe6ffd5ab906aafc8459e0c8a2b9f879eb34636785d9f3ce396468cc00747bd1979ee8ff57b66e9f6e531c187969dfd1e543c243e700210f48ad9fb6f3e2265dbae870e3867a23833ce06266d17ed3f63f25903b0b1b8ea292724f3c17fed7dc5762fc7eacecfa6ec2e6b88c126d50f4a541d0e241d8fad8d9abc171fe5fb645eae39ca42ce5eda7b7cdc3bf27e835e26e8683ab40d9341a224b16ce3da24b57fad094a54b3555f581437a34a4d42d293070fc1ed5e2993e494e27d305bea24288578f610dc8c973669422d9e16c5ad51a527a12961ca4df2e9dad227e194f23fe6ed46110b25e6232b71fc7db1a280c4011e19949863cd239620d5e6f73026dd6b2985b6e009e7c6f64ee058734c2c1679bde13614a94ec9736cee7e84e78ffff0da700df84d4f1e072667532224a7049a44cfe028d2d07b4151335c82678689dd1c79759395ea7540eb8c1ac64593ba8d63a7fa9620660aec4cbd399e9c8f014a8bf717ab2e56e286edbc179558061d7af50105a5564ff414b415e155f8f87884d09035564fb1e66faa3c93dfdae6f8e3b2d75e85101476251a0f1191310900b6c2c3f4ae3d97783a22868946c0881b741f01a4cacea879e5caec6fad7e832bf2ef5f0f1dde415b12f23320f8db4066ef9be191398d873be363bd5f24c0624783a440a8c5215f16b83e5e491ef4b4581149813c8b783a408adc8305a42b1705b9e304830bf65de711711d5437a98249fb117eaf5bf0cd19bed9c62d866f3dc325063076d9163066e2e45c7892b0fbd0df273acfb8457515ce8d0c4c05dec892d7f33554a7b3ac60d31ae81bdb4f1755f49c7d32f4ecdf225fd5bdc4399bcf557119a6d943f80d43008f313160aafbe91a6a5902ec7c1474bc99bdb41ec004f498bd15e3c91edb381f86071e6aac929166242206d167d591a1b0480939bf393e1bffa986ba2468c959504a577cdd6785583a1ad8ec47a7819360433ead6102b9c1f044d4ca704eef39625dbcecb8857bc3af9a79d020b0b26a30416ec32fe10aca98061c043cc3abaa93238daf0023f8d376dd5df6a70b52c3acf2af529a59f2c24d877833f8f6b21af54435f34e0e82d0e253f7765f98fd2d167fa938780be19a6410739bf75fdfa353be8d4a1584ff9e68f1a57cbe52e1479096be41c44e6eeba1243a53b208e57b66ac9c07d0270c4f13f1c6cd2e199e872ede0b111ff16b21f5405fe260b2d8b2f39eda2da349d8cd892381ae7f0ef14fcd16ce373882d4e138693d8e497e9070ce816b5c82903e753934f713f6cad7fc6e79a69b794e3667e65524821fbe4e39f61f78d77ca3efde3faeb28bb9fd30d4d4833eef05806ec88850b35f6dd55991ade683f26ed7fdbd1df1cc3e12883dcc37851d6f3cdca408fec1d12c27642d51e51be7c45d0a1809d4376fd4e253a3dde0e6ad82bd9dca15fccfd86de8b836c4f5ba41655e1de1670acf09d0c8e28fd2c43a9a98ff7b12a921bfba980a235f6dd2015786e6d088e280c7d9bbc8e65d86fad52399778e0ffd2fdc5678646061eacc7647d9553de4e0b5e2b6877a311052be5c184720696412f1029d08404b1b700ba6462fe56ac3443ac2832906d964c8e0c78775f3ba2973a19761963af34449837a9a289e589378e061deb22551f07d137820afc2d13693de28397168560fad07da098b5c9aa7f3d8b24b4664d58579888ce886f04ac0a0d01785c5f9b652aa017f4c76b6aba37848313db1cb72a9ed6ee0c7111442c763f584c35ca206815bd252b465b650cabcdb42e001dec213a35f6afbc66e41701479b9484e5122dde140eaae717731a186b0d27bc1793ac276937d1d83abaf7b6dc162d0b71b6137c63dc2680aab550cdd2dfbf22c9cd2b799ecd83df5781f715f244fb81bea92f7e539c01f30c73628390b96a136a95013fa6d8bb09e80edfc498004b86a04a72ede37876f45178c0d9e0feaab545893a3ed7b959ed0583526aca549195a313a3c119e69778a5d6128221e9e61b5d13185ab585f92994d56e99b5f4c92a1acb4339e1881e74a1c5ccd2a2997a5b008354c903670f6a8e4a829a100a3d58a9ce2b67d00b1821f376ebdcae3d9cf0d3ba51b205e6b018d472a5ee7e4e06f97ae555ee46f160518da13a5f0617e9caac022578e15c029bd22ee0862aaad70a8f8a24f3e340d1ff5baffeb9fe16c9fc2a2ac504ee2e48aaa787411e746dd641e0371d70f5137f2a4b32fd6293d3783a6a8684c6aab9b7a00f636908eca344cbb37a5fceff15a11d88fa6f8d5ecd98345cf84edfe9aea0aecd707963cc081e7c0361e9b25ec86ab552ebb01becc71263b6ab02b337ebd06119593da03cf762fe43197cae99370aea4b2008b72a3cf93d422c1b33be6d3d0eb36801616d9ce66710a9b9b45c0422a8156545980b51ba89044c65a933c34600e1ed7bf6e7d81d4c3f4b6f0618555ebf48667748b144577a3cd3b2a681c42524668f0bf6e8b8049baefebb50bd4e5d53f1912a800933e388a7f003609560dff708ae92b98bcdd08e4e72b1accc4d47a49baf998d1c227ea597f1f241ef301451a0586b8ec012b3f2af87c432cc37d1cfadc822d8267c6cff2503eea6a02aacff4f87bd6c525c9f65775d6efaa3d54629924b46c1ab488290db35a3589322a461354020a6528863cc4a7229f53eaa001574cf8387d08fdd8e2be415a738d2f9ebf8a9d067995f8f5cfab4a221346c3fb7c1c83ae71a71cde8c294d03ef49f75cb271c5a584e9bd11f804d2723763d691eecc79d81881ed2a425f5db4fc91df108b7a9e4ef5c0befb605a0b89e9b8766aa1f558d40963146de084657c279ff3d5c721c60d1ea8bee3f42863a68ec5d569c9aea23c3e0a06efbe6d02baf12f57cf93784565908a6ad36c854fbbb05194d0d4725a07a5191dd5d0293187ad4d3853ca6253992d024a619ab4eaf14e2993c6c6e92f818f4ea66bebd1b6c586eb43bf7170040e6e494439b09ee57fd4b3b0986fb5595068360abf30db8758757cd18095034538fc4991bedeeb808affc72f185e01eb4df3299177946d9b9a1d859c76a72e3614ecda98df4efe9bd3c1cfcbd097e12b346132282530b59f2b34d3e5651805422a11a62e293d78d6cc9910376c168ce9aef92ea71f0ae91a14afaee3b9170a113b7162beb81cdabf746b224817e5113a82ced17c88ea44e7c0430e0668e8108884a1d0822ec090c605ae329d4711f38c6027162e4682a317af549d83eb9e387c87dc48c74227611d64ed347c347ca60f490116f1ad34918e9338a7fba2f891cea037573d50be8d2a144500abb2a415349106c4cb28d56c9bd5cb67f419bef78badd13a0463014a459bc59c03112d5cee33fd441715febbee8eab040f565d258cc0cb62d307eaf21959276727bc7755790956a973d0079f62606d08ac94b0a15a833b9a4a0e44ca9dff9e74ecc7262afbf5d029fc916f891d201dbef7c50d387ad8090d8215dafadee084f253b68679718372ede346013f3eaffb88a700191fc7f8643aec1ba6f65448fb67687ac4932f3980b527ec0279fe31ae2aa8386dde6ea536aff19bcfb53ef38eed6d0e91c41a3100a9d7251762621076130bd4a43064e300bfde0ec374d899136b2e1043ff41208a73543869f3fcb837ccdd3a0dea51f42f2f29a9616a7736256c8063351858dfbda25119e18f7dbec6701db07972fe47172eb91c0264d2c0ba09429364998fb46552c2334b0b7c7a5986cd3a2d1416a361d26a631bf4b23931d2a69658acaab3f9d2bf15bc090e36f55190df9bc7ee8760c86f3a71bd9fc853e905045a90cf5ece533324d4ef0c52d2b1606a2dd622deb5e4b02c8e2e4c6de3b9ac5cec67068e21c232e30205f8adc21ee2bcdeefe9c1996f0f88b4807ed7ec5d5ebde8bd1d061b618ffba16edb41f4bdbc9656de47191d8f906572787bd02d681100dbe8160188262101f5ee5c9ebd84d5323523242969a28da99e6bb18b05858c3ed97736b123243ad65a3b6ddda396322b7b162fe9bc07d101db9d004a817321c0c565a87e7b4945ed79f6d6fb5f0058a307d0cab650fce0b3b7a694734bba322465f1e620fdf5d41d3292c237c565cd8cd0563f2fbee244bcb7233b9da7dfde9afb1c81dfa7a671a3427c63e43b8c30b43e5acd989088ab26a8fab76e650b7d95715ec43bb25cf940ffb10357ff62c021b752ae95d24b1fd42cbf11759ec757306e193e6dadc7a33bff43d6937b7953020bd7145410eddb6f9c8cc017cde5cd4e8d7af2085e9284a4f12828c226217b87908d10398ab506f7fd0aae12fb31f3ac9fdb21c306dd5bf097947ddd6ecc83b285cbab4606c311ff9fc93ae2d737c1060b3002f17190e0b71312feec66c9fa31228cebb9647fcfef172d218de72116512a3d354de9ba2cef11debcb246aa773e0e2497f13bc173e3cdb09d563cdf26c94e7d4510442aff3ddb1035a9411fb729f969ca56cf16153b92f73ca9894fdc0700f3832010dc73dd25d0fbd0ba11a63b4df2275e4b1ec1d6d5413962f72f4dc68441faba3d26ad03c4c08fa8927e7a94f1b0971a8637f1c3518b2293908fe2117a57eed8f73cf97199afc11586c7397d612901fdb5313c38da22f835d3c6d23380d6c7d111993aecda8659e9d264b97112ce33a6bc6923d773e891ad9291c2379f575b4916c5976303ec89b8cd5b64a7fb615a8f0e17280269de233f11e0204b25fdf463dc2695f303244b6798c58f4cbe5ec0b4ce78460873e9ab7375c6391d31f2b0b0525329e6df2c312150874b9d74eb016d592edda0663420ceeb1a21fadea15089686bbe5914729e92785c97083de02cb28094619d429a7b8ebecd2c9c910827880eef6cc4ece91cadc0a32310f967a503529b71bf44017b8e2ddbcf42f7bbe5f9b79e73964a0937fee061486abe7eb0f41c2b26edfee99bc9c871a6fb5820e9da5b86f9581d158f5a4303b30bf496a7bf44a3674f7e0b61e7ccde391ae164d6af50971825b49542c589803b2593cba94b83f9b556afd1cdd18f8389e8136515b0d490952ac6bd8775ecca1764436d0f49d0097c085ab306c3cacbc7db664f15bac9f93f6070e16c5feddce532af22e9a87824f7c3f44a89842cf65df87d4b7078096df8014fdf963a046d2d51aac027872010e66a42f5c9ed9f1f730a77d61610a7603962a70e18864c1b6df2a09adb8f3c17fbbfa96a69bbe4b40e54f8c6023384193325533eacde1b6e0805c28c06da24f97463153cf3f4985e3c03d161b238f757932445297ffae7fc5311c2c2e7adc3bfcc6d3a4acedbb3a30505a0a78f9bf8f4615803bbd151ba7572e6c5d004a3122fa994616a97f941dd6988fb061a9a3c0ebc094c6a4b5c796cbba38303a7b215e042077ea371eb8b188b62257431a99f255161fd7f6f570f0fc9af48c2918a23372c72ee0e3512806e933dc5a4246523cd4891bcc0e8473905b1457ded3e3b5da6c168b72fb55bc4be0a15b121bc18710aa53582a11cc9de2c45e0cec40adf92b975dad616e17fe3bc49957b7004425df78d22005594398e46d7efc4bb1a7df7278fe302b28231188097bdeac250ab3bc105da9a6ea3c16da0b26cf7ca09cde2be806b25ac3fb61ed4aaed2ce0daa585b5805abba4f260d03ad04d3e6e7b132362b33ace211fe8a6923420af04ff802c382ad586081de0e376de3e87da8844a0b7206a31ff66c70817990ca49d353e7f78b33c74c3828a9ec4b3c5a29ee06e6986df0a04ff21b602879eb023f0d267424e6341e8e8f06c0a93f3fbb6631598eb7386b5558a88878935b26ff06e97772bc98c2b2f516467ad79c17129ff672c253d408be6cfbd1372b3d0d881c51a247000bb1b93083a92d18d72aaef09adc16cfc232dac80a6560a13c6619ce491cfb43175a56d41716d6abdea739306c2aa0f861cc9e27021d6df5d950d1989b907876b399d009c1897a35af2c1511e8d9ac08f3c1d5fdf1b59de220183f45d0b2aa92da37d144e2b5d9c92dae83bb09f48d6f4cbed1f0154e42a527a03b82bc12c9d72fc25fd7864b3deb9d6a3885f2b37e21143b39d884b229877f4d49b9ce03dda741bca3f995195cebcb6b7cc7699ef7067bae326bd8a74fbc9cb9318ff3a1b89f74c6456e4342877493c4316ed3c5cc18d0339896dd5ba80321d6f716f8d3c191cae90137cbda461e62cab5451b9fb9cf53f554aeaeff35ab8310a3fe189a2dfb31d442853c8bf8ca1a49b4410b20153c5aae0d7e776ff92e151ee61f124e7d7a78933cec6c0f78095f98baf01471f63902537aa6732e281ce1e0e5845f2172876d77932e0b29a701613b048f58833039173ab118317449da70cf2f3c419801ee1411807092dbdc08901cdcd27d05c12534d9ef8ba7f6122fa3303e8231c2638f0daa66521d7d145653c7b3948cb50a5e332e550610401fcc65e3a0e07da019c46fb7fb31a0be10390a07cb8058ae9e339f6a6b3d192f3996ec70346085cf027900854c20741e9565b5dd386a94f8c878e903c9be0fad33c1e3737ed6760d86c18d11c5e6c040ec3a621b961c5d1ce5b758df6a82a48970a1370213036690d8e16290468316d0972d154a12ad1fff1909a7c2b60272fdf5959e5635d6b43e98ba7341bb27b6e12c0bae47b8b6ccbbfa00bb8ae1930791b6333163282964261284ac7d167aab0753940a45778f82209eaa12842bcf601da5eaddf880e07ad93eb6d33cc6e8392ac8bcb8ebb41f2f463d3e28628b881fb71e039d7efad53108495449b7f94733581631651c9d67a7df77847ce224653cc3b24682f8fcb93d955d5a55200b187009d87a03e20dc474fa286e0759da19e3aee7ff72c523092b32a6acbb1ac7ba263506950559818ea3d7663cc834105cba2241e3ab22acba4560a2ee93c95eeda9d5b64106e9c082630d2455720318ae4b18b49b886f807771944e2c2d8e16913041501e6972f82251280521aa529203433c365e06893935c8c1868337a6e2b6b81bb7159603409ede877fb567776d1b336cb1adb7ab26b60f1414ac6b195a427bbee6809ba627da77c86afca5be6c6cfed09f1f9df4ee1e176c4a4d72ab74436b0d2e11c3b837598d2e5f0a4c0ca5efbbe2551af0f6b1285d23cebea35c11be7e1ee57b959de479a72171cd8206b187926a194021e0a1edad6b4686cc355844c088becf011e00b7b1eeee96c1980b7cc6dda5e1c652a897ad38343bab463c1d603a73f8ef805d7d9c5d1a730cd041d276e8afcc3876d3de0c368525a990dbb26222d2adce939d5bb97f9ed2107ab6eae103d503e523c99727d551f103c298c141b793d0aff90b10573dd511b1ed02ad0b10a4d9cd0b0b01faf42b2b0c6e3dc6b71a2f21f62b28018cc5e442d36afb50832c341daea645339c5f4f5e311de9b4f1f5988b534aafe4a3fee47f684e989e60c52f52bfcd1599fb30c3b85c15a4a446c9f55ee0486276e55a9b812194a67cbd223b6bbd92a0d30d23d69ed5010fd3f93de14691ddcb3db7e71e22fd6d6571264d1169fb77de0cde2cc9eb108305a2ccef5382cce08d81bc0952bce3bf30a3658184155ceee28c9d9caed7d80a87ddd792a5c4d8808a540149718c21c72ec75e02d397ec77c5ee4a45ea12c2cc28b794aa738a58b902749b6aa903308d0582252ccd9e86f132881d47ea64d9f648b7051903f5148c1de275e351bc2c64c851791f586e3c3759acc150d4561a2ab69bdcdfc83daf205699f0b9eeb002fa37dd5ad1f548f46f1133a3cfb4f130c44614d252fc22f1b45fda7e4d0bc390a311faa928af4223b7cc771fe177bb00e43e561cca99783d9f0f0623fb77941d0f058655c9bddd636a1db4ade7a16f6a85d9210e41a42bb4776d2bb825e55f9c04e93d6aab4cce0158fb5364baa81a0ccf755a95abd094fa947156f693b60988cf904dee3aa7cdc5dc29dd153c66608030f4df3850d216f5b6b471c6067fa5a9c12cfe1a565a43f5c7440168262ae2526be63faeceb67f68748cfa663ea26043f37b69448b7752ae20dc8682247af95a483d34c548b0b8d5c3752bbc41488a176e6ef44e5f7de9554086008b153fd55d087c0016bfe9e6639c00147ad2803180f630739d797630218ef43fffad350f104dc93a58d6b773b56d532aaf4c156d351c554faa1bdd05daa5f493a602d2dbdb9f0ff04052681876cd3ff28690e38a0456d913c83258b05df57c5e93b760f3aeef8d159622cb0833e6a7e3514a9a330185127afc5941cbe9410cb3a139ccdc295c72faa47f1b58693042f076319d6336f001145d1da51f48073f462450d3d4e1dab9b290417b55a9b62a6b23041c6da8849984cd67eab865dde2699b9e3434f01bd272754d12d0d8128d7658469494ff5fb03db633a94ef9cf0282b6370d9018167c6cacc02a2cd7542cd67a3ef1e7d460308d4ee8a05bdb858ce26cfab109dbff3b8083f110ceb52a20f890632ac96d2236256bdb9f87de17146f9a579e464618eaaa08b6c03efa497c77569dd038ff7e81bff59095b0cd4ace4d1d1faffebe89f36d342dda94e4f72be0c3a8b541d8d0ef2e9f3dd9039e3e9754a0cdc009ddd8345f3170976a79574321166ee3b8da76f829ac60cadb99da67c1d9fc374c1fea1c9816936d734e3fdde144deaa6887d9673458408888704d5722606888818c0c88703518fd05298a6cfea2d6ba8c25a83704ca98b470e66e22ca53faf614303f52da791d33986e389421c51a0492afa85e15313ed94087d31abd037b12fab23ae4e26f3669267134a3458b686f8f734dc97fd43debc0c9f0348950946035fb5d65a7155c8ab0abf6ea119d27ab0d5250eac358f11f6c151b85ac924799352ba96f22bddb15dca2d20b02ce2ed1a1c4e998a3754d1f62feb1aa7809d6a9865c91ea054ae0b0963e9222e9b4f734f79f76cc739db36c794506d15ff7e97312e0da0710a5fb93005b5ee40b67ea510745c18e6908123e7e365c805cb7ab6d8402557438cde3f6457d2b09b0dfe54250a70f643af46f269b3d8de0cb654bf2f5b1dee0b68930f0815bb6959e61f23b25de5b1a5ff5dd8a9eb79025a0053282fe19363116280d3234449bc6688444e6d6ff46a0fb5bbe36085b0e84ba079e8457c1549c713d8b80c4ffc6237da2249c4cf41510ca561158dba6ac82b3935fbb89225f00f2aa45f976b1ec6009246ef68c730f73f6128a7fb2486b8573f2e3093951b9a556eaf3ff48ffcc4ff2e217d6627cbd90824378adcd83cc7908b22da74b928c4d7f159de1c21b8a6fffe05822dfc2ff20ae77897fad458e741e8ec46cdd7cc805a89172ff70b9af96600b8d0709253fdd93c59a1091c5a6d6d8914c090124533d9e77adcb7c608910cba59e0e83145daaaff59346202a92bfe2cf2a98e5eb2cdfc16ccdb37248aa19b64cd9aee35a348859f9924105a963272255e14ba5b94e5219bb1096821bb36dd828238b8e50551311d03b262b4f50679a38032ee76a126e3af9519391b8f77e0659824fa95e013c307040f9bb6b6bec98383e985125e089fc624717245807aa577af94bfc775cb025e3190875668cc0383808f9399773561948555e2af691b8b07f167a084f0be25455c472e23c44f87e59e3bd977ffb83d96142d1eb42599d132fa7ce4d8d36b1fab7133b1dd8415d4f96bdd8566e0b358e925c91727224429286c51de182dc161975b71ec1d0622dd869af56700994551248b25dff9cc3fe0bb2dcc005e2f20edcc3c1d4ae247dac4c2e290de8d4d9ab422aca61ac4fa59c24f1696d36e746d7799351c597dddf5d8608729f1ccfa8aa80bcd0a206bb3808bdf04ceb145923124cdde9c68c7ed3cbb398c9aff9636af8361126b6784b37b45f4d804a077899e95d1b7c9ba2de5ccbc98e85ce64aaf99c7bf38442c8bab0a7c2e23156d64c6f0564bdcda92e23924075ec7c4964660b6478001248152115ca32e9c1bc4f62b5a399bdae5a8e20fbb3e0d689d589f11fa19dcbd4f3c4d4a40ae2e9b85a57f5ee4d9f3c3cfaede1c415d427aab1f121f84bfa54ca8616fb9a54c563b5c76079b504461b89fb0a06ea0c49e0e188ebc5c33870b4fdc41c6f6eaf62610319c762499ea5ca7036679c72ed9310a094848e1775556922a81a4383f5778d33327d4f33e750936021d1ba425ad0d78cc32f43c185d0217e55dcb84dbc754888e261051e38c85fa89b119eb4fb1924e2b32fe0f4c1e882aadc5a5434407c286beaf30f16486de5e2dfcb31994e66ab01240830186bcf5519dd062a93d956525f5e7b48ac635c1eafa807ab45aa34d3d6cb933897cb3aafcdc80d2abcce3a36e2b6fe3908aa3f632235b70948481bff972ba8db1e03cef76a1b077973567a389ab807ffc9b1337e0078aeca507817ff45a3b14e138500012b88445256e3001f97cc4a82293e4253ea72a3928b0371a3575770edf1668777c293d9d48bb04853a1e28b3272af955a19b49071ac69289359fcf3d9a45f01a0ae7e12505e8c5e5b9a1d8e2f957e135133eb1917e1733837a8bdf8684ae85168097e79289e77d12627a924eba58d54bb0d2055374c69371df6c0b80a30443c905d93fef2675387aec89612f53e68965e3f2cd9e75cee6c3941a2eec22d84bcd6589f30fd0664d3bbe8935a465f27039c7d97a9323a1f24752c403ab98932dd8c17fe1d30c263851748682440c7eba109de07a65fbf4c2ecf5313332e4c70ad8ebd3f5fb45f3c22709753c847ea2c8c0cb22fca66d44c05ba6ed018660a274170f801ed1a235bbf4a06755e7b0dd2c55959eae5184285963f84ec610b7e884c42ce76858458c5256c4130bdfa35aa51aa2b710ca7188a767e96b3e8b22a62a91e6ebae967fe48bf0ada4893d55ab989504bc604a729564667aaf6b8f09ce5179a4fbb276b2855771228d3d1e516002d326e23d42151d0e5b1b5571ddd1a8026e7fa2f35e33efc9e9eee18f85574bfb640a53d19e72fdb8fee4a864995f9ff695e8388fcef60e7f29ad03b0171785adb0627af9d57a167b76def3e1a6b40455ad371b0f0f4e059a9259ef04709dcb9e3207b7c0ffab92079a2534c936a15c2ddb54acf0b62ff9628dc4f696f7a426d717980ae7c49229aa9432adfd8266c4728591ddf31233052ec42cde23616829a0e3ff7ce01dba5c3874b7f8410e20213c1708e05bc1cf281b99ccc88f96e1b4a3128ceca503f658d4e5b6b1339c8530f29f25dd7838cba099a0cb6e682b75741f49ccfd8792527b6992024c76210580e138ef5847c01f5806c7e4800ca0cf90a34fb6e01b4f5699dc3f128260f58ae9f0e3b74cd80efa7a3cd38430ba382d62b4b3112269af3290f194d61403c8baa847366bc84548858ccc4250fbabd51c4ee33d4f4f32d962452788edd19dfbada2b7932c35f9f3b777b0ef260271d6cc799f84d4bcd402185e848ca19696f29554788361a5540a726a5f85b149dc4e6b2809cd2d7ba6d7cbadfa49bc5bbf11f24d8fe26ea4d202edd58c40776d0e8efa32940c3eb8daee97fc0b63f7bb95a20ee45071d0fa4d5b53803d3d70a59a6702dac7a8fcf4c16918bed49bbd374f5d561a0a0130ffa2f0209086bf34b29658335c1e48152115dc9ecd307ea42ead80414cf8af1359afdd71d61d0bc4678cdae4854b01b5920bcfd9f2fe9afe74d9575c7c0c2d9597880a6f3c620dcadd80ae7a0177735f47c6f5c8c2b983428fd552c35d4ffe404b77c6ebc95e878301b81df07bec2fe6493a8a92452a4a422230b4f35bedb7665c036e87282771a62361db6c28b0a65dbc7de641072df597d4796cb08e2dd0f51639a05b7ed4c8141dabcf7d5bbb59eff3ec87d6a5aee3fcc68267ee654e50c6e2292717aa93a6773de7fea8bca77509436c2ba9bd60637bb57216cf9d10645cec65b15c309ba2d03cff53d26acddc766e529add1c1687d5aa99ef2c8a536defdcbeeb45d499f305f707784def6f46ec9d89a8d3fd9468b9f379f919e8597eb2b1c3a967d196da4f66d24325e43a27c528b1de8423d16f10940d5b0be7c2d0e55ea61e07022dfa428d032b6763ddc2dfb09d22eed0b14edf2f8fd269c0b684dc737ad12ab8645d31d9e1301d59b7b4d34225f5ded09097ff2dcdd5f8352f5cb9671779a334ebc879ab0341af32e63aafd5143ae88245699a6099cb93a97b2e81803b190b8dbcc1d950b6bbf656247b394e75f126eb3c9125fc8a2a9d692ebf9d170c70f3c8cf7b14951212a706031f737bc9823157dd205e6b187f252d326956f15273b4f4d9625f51de2d0cc4b4622d542e5d0406a1e5643a60e1d7326d3668f7846b23e862b61130c104587027c17f343fb0bf52d662fc176e940193ffb6905a0146b0720a8233db8143d79c05b539af05daffe5005909fe5f4baf9df3ff72940c6cffa7b546c602015424045a124f9f5a300eab9a0e92cce2a241b2f8a174e55137f50b0856fc30c78a7ee42fd37c310b7cc7d9b624cb492bd19295405778dc3a080034d4a1c14c9d79bbd101449438ff2da0ce804b93f6c75e44e5f63ede8f2da4eddd6dcb2da54c49caaf093e0af109b5d0a180327dba462ca14ede8cadee6ee9dddd386674b78084a7881a05509739c2fe5d7f1c88816dcdd6a6108e9ba0af8c529da7dc01f314228032680c199669a63c267b85c5e27a217dec182e0b86797eb7c54ec60aecef79439886852ed8ca3257ac131e5d4888491146383d7932647061e0d189dcdd5db2642c1f95b7c22e5024c9f29bc524e35c866e8c0663d8999dd9999dc988814737b2b39831f048654747d98da690cd6db5332b14f3c5eccb38bd54c1a39dd959c3ee734e5308c76d39bea8b3c8315393121348ff05bda2165d8c662e462e489c11f70407c58c4be2b0c01ec63559260c3c7a436ed4affe7b3176b97ef486dca8f515f9ec315ee07145f4935b6745d4b022b9b37dffeac98a8909f39498627fa7f28a28f75b6f88c84b020c3cbed0bc979a50c3b61fb9c3c99d1c648efb90db8182c8ed3ee4fe71c524f7d7aee5e12df3473ccba91f5746b9ffa5bee73ad6281fcfb129f789c9a3fb7854e40f2d1a690a199224cb29e42649965348f815e1fefbf96c679ee36d315ffded41c598e18191bb086fa8a1aa985388344a926bae611dfa8a5c2bfb6abda1ad7a451e1111f6ef69b175a690fa5d4546a1330a9d479dbca26ee448edca6d9f5ab21b1c3afa01c8326431204a4f8b327360e67e69c473442411ccf2f3601441ae47ea06dc8fc897bf18ee463e90428bb67a1d5430dbcb6af28120dfe52fd6107e996f8c7c2082ff08754b9d42822461a5ee9c73dbde26fb7cf95fcfc8fcde86234cf55e380a208f128abfe1e8238f128a77723549a695e84315e20860e67c218c0049a6518bfe4fe056d23e4df0f45ab1ebbfb63db3bf6d5b581342fff70ee8bfe088f305bf4692e9dd402164fe46d59da6111878ce9e16dd3f070b78ce527dab74de5b31e40febbd2bd70420cb8f83ce5ed80566bdcbe37ff9fe27d2f3e32000d9b3825fc0f934a35a265305e3df7a64e9a45a3deb1db07a960a1c674a05ce979f775fe579861398407e6eb2fc4260b164f63b1628fdf5c9cb026b4e98590897f97d1e0b7459e1e5e801e36ef43e05cfa9094c209e0a39f51e18127179bdf75260eafa8fcf3c675e81029a3950c3e474a2a203c63f3acd931e8b0146b32e1ca58ca1c9f3eb2075c4fb1a99532f93886af9fb9b2f0711fe7e9c4eafb2567c0ae7951673d880f17fe1649249444e192788dc49bdc59957e40feb85d3a9b342610e208cdf4766b18047a765fb41beb04601dbab9e83ed558f24a7c09182aad4e779d4835ab442b0de699ec30a83584b736b8b9c709c9e6af66714e85c7f57ba4bbf6e75e33e98b32d8dfe8881fa457fe40ffa7229f5dec34488b6a445ea339514f45554e0d16b99be4f4fcd4d81aa77ef4015bce74010c006745b0842ea55a10a5fd811f18ece3e68917e0a841629fd88b83870fad322a54b420ad4620e22b0082d521abaa491bfbcc795f81879cfd0ed5bd4750d53b49b33f5c5641251946c8f904049853a435a0c52051e5b795a91e7e3c81d99a7cd0c62ad4e87435a9c412c6dd99a7e24d9c65543833247b83567ab32e9e44dd49c50edd462b795161bc97e477f72ff541838949f9e73963189c0fe6333f9120f72da15a79f990bcd191353139539634243ca9d1c4e2b95800828d036e23932fb1701321bca24e6c00a7401fa2f2842607b159084b085d789f8ab318fe419ef38651b9844508a6ad649d72973903826d66c626ab16743d5279b30f0588dae54a4cad497ceaf4dd12c1f3cf6ac4883167b5bcdf0d833a29aed65ae997fff861cc8bcfd002d096a981462d2451fdc2535f36705058b00428b4d648806f6b9af73a6666a3a927bfec55a8898c4befc1c00041e716655ecc8ed1be8feb65db01b68e60478fb9b16b7afa1b695edabddb6bf5bfd7bc2bcd24e41342a4c4f92e98319101337bd244a4310290d71a484840a5a09091d1c0916a892932717a4e1840b2527493811c2264b252731283581a3891a4a4dbe98d2a409954ab55aad949a04293521526a42034ba9498f0b1b2f4a4366280d5181511a8a024605877c061841354bd6d01164ce8c834634a4c2828886897cb23b8f4f49a9c8feaebb94fdfd95b2ff9446503985f9657bc20096c8720af2677ec93284c927cc38c271cc53f6fb535a46276f7cce39e79c73ce39e79cb34706d4a294734e223a09c65cc9b4d3ce9fd9a492bb4796c10db885721b2119659903d1c91b960c587ed7852c2718fb6b7e8f2e37b0b4806f2f1fa7008f6f419d163f26af5680a7abc5ae2dc05986f2ba511e53d8b66d93bf4909a6d074d420df56885b6ccf995a7a0b76cd9a4e9016fda184a3093a554a29a5945282f4373bfb88826dd4939b680809e725e3cc28194e2d38b336873aa75cbf0b02caf53b25b9762a243c7243b97ed71d7d2b24aca5c521482d7647505aec8a5a6c58eaa93e552dfdaa2f1f2748c33eefa5cc5f9c4c860a3c5ada9051c3b8a216eb07354c6687d1af45164ac368c855f7901b6ab1c6640f977047242305ab500408365ff3339395e5077384e7d8c95cae1921158a0061e65d4ff33404c1f535a10a3621e7eaaf7910fa6b6842158072fd0e7d40e877852acc84dccc5ff53be464feaabfca2e6483cec01d518bd5d2648ec09666c083b56e2f923cb3875628b4413327c0a97bb375777f77f7a2ad0399b74b87c05628b441396cc0fd53470c78fc8c9fe3ba0d7c79d9e2766dea0cccfa979748ad9cfefa54a19ae6affa2fef3f619842a6cf72eb89b4256ad8589f72fdda614f119bccd7b741aeaf6f698d00d7d7d6d7ef6440fbdbf45a30e08804e6897408aeef7780ebfb916430a6f51644921d4cc1734c386198405abf81a36ccaad27e230b515d6a7242484b2bfcb96868df5060b1eab965cb5d42d2d5697efa0b4583ba316ebbb08d14fa48d7488fd555756601a7e102e00ef60695e5f4022ab7701656681a325f25ffd0aacc95b8d0d4323145cc015d80acdf880c78e4aae54baa6865969584754b574dd526b984ceef85714e6075e2d37aac5fa2e59fe905a6badb5d6943764766d85a59920d7a75d786b2dd6fa324ee0543822a1c128dbf7ef88ac1965fb345114457b671b27db9e9335cc7e508e277c6b574bd4b6dd8bb195e56a65f58b6d1cc8f5dc8de36c9ef00d3b6ae3649c0fd76365a344cab5bab5b416ab15aa1f3305f6dabd340d1a9df4f072b49b76d36b7db35272d3b3fcdf340c093c4aa60f4010c115f3dfc77c6d61ecf2328575ff6da0fd6d9b54e6496928c48c0d6f8b45fa53315f41986f10f00c85018598f91850889a4fd108411392c0e3a9097d9e67c6e5bd9827d2304f33cd9d7bed02ce8022f4eb8316411a22ecf2e39c79374370bcc9aaef523fb6be1e6f724b2048df64d57fe09f04f27c3b553da6e813d05f3dfe5eba5fef97508d74b80191163da6840b8cf7fb3f77324f291abdbcfd0fa4ef02aa5e7e5fec73697ddf8ddf37489f04b94838a6d0630a25ccffea7bee0232862c61623cdc308701a607568c8c274b902597a9cbc735e3b95ec89bcc5f346f32f923a6e7a59ba1f1a40b1c4d8dd7425ead5163e3dd990b64fa2e5f3d73721ea839bce9d3b0ca42964fc4c8c5ae77f1170bc4e04ae544e6865ddfe1f89b4c94c57c307154f9b2df81d6617478de0a596e32295611b472ecf064c39cbae8d3e6b3c9fab5c96a9e7cb11adebfb306bc859bcfb6c99eec80f938e8b204a2f5c5bc7bd08319c2f3c74d764396dfb5605e5c5878d5add68c5149f9c3be8a43c2f54c129dbc69e52c71fcd546b3979a890c26727f53e9a67eaa6969187e18abc72749ee17212edf2fdfef50dce84a53eef7234772266f72a786612d1e5543ee96cc6706b4a46131420d936132c4c68edc4f8b9c1a5126d7cf40d11a8d92e1dc34df350fa39d20f7d7a02a846d3ec7f7572a4f31c06c727f75aa4fb54675fc0e25b31f0b646942fe1bfc7e7bd4b009c5649bac53c3faa961df30fae1f7db2db233b2e869188dcf36db80361a8fa186dd1015c900c5c873a4174457cc6a70e28617b240d2020d8b2c5a4ad0b3469386552f72ffd6d4b00bebd1301fdfbf416d3534aae4fe4dcb1625f399fd342c83efbfb48689df7f83ae50c36412d492dc7f99dc212119f6fafedbd430f7217f9ad16893cf6c262bb2351a4fff26b4395da0cbe439384e50b8b88bd3298e192174ebb94ac070292c2e8f032f350cc3bce9e4643ed584c07ada4735b3e4fe5ed2b416ea2134d0406a8113dc8236b27f8b5e8fe2abe373d7eb6dbed88b4ac9221a3864f1737c31b1e60c9ee68b65e0e30c2cd9c7d77c311f3ddef5c57adc1b37f2cdcf7cb19b2bcb3c3ee68bf108bdc8e1cb7cb1f0861f78eb8bd1ffc0650895e7953c5f3cf049880c3ecc1703ff595fec77b06028ef78972fb643c7afbe980e2a24e730e34acef1f88be5b0b1f9ef8bd9e01a337e72cdabbe580d0dcd775f8c06cf9491823cf3de179bb9c2e37aee8bb964d6c8329ffa62329727e6b72f16738f32cc959f0cf3f78bc15c9953795a5fbf580b1720bf2ce597b75fece5b3cbfb1773613d192f64d6d32fc64a65fcf38be18933c6515e3d6d1890bc5a7dbfe6cf950617fc02afc2ec8fe9ed3ecfc159847f0f346a427812515892c66821ab549ffa62aa5993c9f2f7f78b7d61f694b2f7dc17f32c4fc7d3bdfd621d4e89019453bf7db114f7f48b7101c8974abe5fbfd8bd3523eb548298bd305a5fb670caafc923aa73d55cb539673bf5112ae0b96a6db1788a71448c715fd7d451850cdde180e10927252c82cc4001922174b0d2c49517a4e0889fda850c4e1f8b85c722c3986128298c284ee984f9a0830baec898a0f881a76941102951450b4fdca84d69ac6aad5a7e7c313ac1e8c9be04061302be38cafe02f862feddb37598f2b3048ce7b8402b5001f8624dad48b1f2051061f6d7e08b3916735601c017eb6ea41993dcbf01d0cb64b259f715bf18c55e2588ec53bcb822fbbf308b08a32d90bc60610d269e762bb963e022370fddd8f35a3eb8e8a28dec9fc117f3abe30a6bb770bac2c591115cac41a549ca155de8d003675287f2468f5ab3e0d155e3b1851006c8fe375fcc6fad04f0c921052a18aad22486273be3052e82805ae109174a5ba6d84449f08bd129b3a092fd29151fb22765a7f2e4f35ab420fbdf346c48f60fbf988b4394326931c6154b888105502e038b3772bfcdbf8e29ee555021c38a25f2184c261892fb777cb176cd04d5aad4c5174b4a602a665e5081464623f7eb10bbb817a9e7044828905f4c9155995225f7dfe0f8e42e237712962ca1727f0e28ee53c02085670aa620b9dfc6450419b9737fcd17eba639a5dc40f3c5da8b6e2956c8fdb4ff4aa145eef766f0a438305c9125a84786a4a1196068528418475af8c0c616497e50c521338fd268657fd717f356afa004a6e6288bec1ff3c5fc127547d184ca510bb9df6b6127dc9f50830b28a47c11050a54b17621616d14379c60825bc839465072184ff090fb6f9e5001cc058789282b605510fce7d3de024b166458110494098a9030410419338471450c4a1051b5d00186258a66287083872f90c470c31b2ab042e88d3382a8b00083aed6359aa7a3d0905d00d91f7f31ffc28c57ee5739cdb982ef52e986e224f7d3febb821972bfd7309adcefe1a53674627da318e56eea2ea626a86812a5061ca26461461857683141194b7e20638a2c96925469d1161c7766d1040ddc17eb15b41a36d21bd0b83994270d7b6b8f5d529478f2040d414698c185122537a060a3881b56b8a2098b2516945c60cf7421d3af1d55c3eef2173d07c90c67b8b103104d346162c2d3120d188aaaa8bd8125cb134f5f917b87bceafe33f0e872d10ebb67e06186ea43736899f15cea824c5bdddd3734e5ee5f8008dd5e8b52d722ebe0028f5e9e2e9ba001782d0310218f60e96ad12043747cfe18c4c783f9f29fae58699a4c2df65ceaa223a3469a49b0b394524a29a594524a29654b29ab0aba2db967ed4a96800836d2a5cbb6d24d4b722f69c1f35548ed489eb37d91bfba8d4667727a72cafe94bbb77032f9ab6d68e423840d2792bf6ccbf67124676a726f4f479fac30c9807e94f874d333b99a697611b43cb76984995812c7f5b00be746d4e049549e8fa3d35246b7445527fb93e75727295b96893491a6a5a0a3b53c931700c2078d3948c2f2b99f4f12c791300df11067f415a827da950ee68b26e9a5d1ae2714746941b4e9449b4d5ef379c3e849d316a727411e52f5695811d064928246c70a789c50b2bf9c42d9a1181d4da4f9feb2166d92e071f664f79f1afa32a7b084bed35088fbee1eeae0b8910d9a184d7fd2b5771fe9acb3418bb207ffb9599f6f2b304237007200b2cc1978fc0cb2fc8a6c3a9660982958be2a660a3c3610f502cfc7bffa182998fe8c8e3c8786905aeca11eead1cb74a80adee873d576900ac1e549f84278f91178e48e7ab4036a370f4613bcec3dd709c17a2f1c2f385a6be9f6e3ddb6143225e22790a09539996feac11326142863bd095d80fe1750c60a65f8598fe33a1060bd0a4878f0fb17022b94a11130ccab5e228ffd44cb96a816fd47d7e241e71a05d8df7e0b4ba862be7f3191cba6895c433dd4b31e6a1f7fc9f7ba8363be1b336c254f2311bae583f0c1774eb731246a80a39383b38191051079cb2c797a6e061841bd406b712e697102c91f53e6af39590c88e21463023cbe95394d4de6768816415902e889531250433225ac38596229092725983c412b92d5f8fce9de474eaef936f36fe67c9cf9419210caf387346cb6649237733a5da34ce7a47267caac81c77b5f660d4ca790f9f241bb3481503b61b68a29d29716a945fa9442798d721cf60173efee4ec3ee39e79c7426cbe701d4b0963b3dc81d6e0241c91f5894f0b80d71dbd0d644eef8d3df9cc89c4bdb98c8748322d3d48f1b9212f94306f9837efd38e8a74be0e74bf31c3a83123edc219ac315ca744796dfc69437a622b4a716ed15fad3e236a372c736b548df22c99d1b7ad03f5aa6396b114aa6ef43997a50a60e94e944caf49dac50616a913e9d405308f77402f9d304425fdabb0db548b7a21b6e44166928d3b7489e3365f2d5ef639b3275caf4af3785dca73fda3c5e879a40e8a4cd25fe54df52a216a90db96b9fdba0b448bf68850465224481fc45695272ff5893e5636f0af9eb6f66a490793481b40762b00b1ca6e4ab3e8d8b0f08d8566b89e92bf201243a85e6d156b4cda3984ee6e5b55eb806128591e765c9b4924c5e813cbaf55c2c3c2e55046ba84808a54f63c82a8984bdd997862a851f6218f2e2071a7a80a613141c5f02a6a370d0f7e27285506964e90e9ecc470885a1c560e98a84d026979212235442689dd144659aa70d83659abf7f5df371a5e5ebfa68663ee68bcd4c915d3104915d2ff3c55c32dffa623231307091631ee68bc55c9877f9623094c91705c816061bb27d1bab548226d9fecb17b3df7afcc55ad4c56729bb3ceb8bb9a8bed88b0b785fd892f1e35f7d316cf1b3defb622c0c62eb8209f2ea574a2ea49157efad5e909257df6a989857ff7db1d59c54e44fa98528f9fbee8b7d05b8d282a22fd8f82b73603cdedf2fe6e1a01532fd16eda992e9db8091e9735f8cbe4b8985a09ca2362b8491efa53fc59065fb764af6678205a5245650515a01053fb258e3f4abf72f5ce0ce3433664ac7511d5a580b07934c9fc2c1824cb1c8f4711c4f32fd16103cf46d3e8e2a99fe0d55921565fa1a348c95e95f2cc48529657d14e7c9946f8c91e953faf88bd16b45f7162af70da14cdf5b614a65184a9cd18351add6465007ba5842440bb460610726be988283159efbd7ccc8fd496ee01af26b0b13343564c91487243bdedca20d2ba9365cc8fddf176b2a288df22153fa378a8d4cdfe382877e2b064b3b997ef7c5e87bd35d3aa5f448122b5ef4b002100c8e7868a22489e2840a5a70c4151e5aad64ba420f99e24c9344d1dc30b0921b0a18a45cb31a64f89ef282a89c171c116b1b8468a0f452ea7d31a74b6c90c18447ea2e369464fa030f1b45649847e91535bcc08638684baa00c1431f770ea7458b2f84949c1c31060fad322b23d3397da60f752d4a4f505a43a634f4f801b4cc40bd3983e9712c78bc392402d7ccee6e971c9039379c4ac22599fe3859c874fb7123539f2b7fd05abf680e28f0387df248479c39f3fbdb8b70c39ababd08353514a27bc9e3d322fd1438b9551378cea6920ddcfe3e08dbdfaf7fef73a10a2e1590f070326703ae0d78ce2c817cd1a73e320e9fb1c19825903bf5690d8c4cbfd2a6df472dd225cf1184fb473f6a67da86e82aa561eab74f8563534a29a5290e3c61471c71c091b9a53c22214a65402e15d9bebb93fecd68d3921af48b7a9e76e9e3c06feac516a9fc516fc6ae17ab149dbce95679be04463080648d33ab49c395fc313da4f44e104747eed83c9f96d4cd97b2e79c3e3b5aa9cbcf8314a6b595ba94d22975e94e5bc582111123720767fa26748ed7297c6012b548ef9db3089c505aa447640e65edc8945219ee903fa8910d7664eacd3742aa65fa322ad30f346c957792c89d9e1c583009266c80e7dfe59a944ea84cff3394053f407fcae84f1ffa73563bf270ce99b47e5da1d3ce709c930ae518e089219da12b72cfb6a18efcd1b36812d164fbfb13b963df7572d3fa0334828f4c46c99a7ca20dd1dc878a8c908a8c90986cb421da50d376e610326a4c2fc4a00d27e018410d4960b871854f16271eeffb757e268f3a9995479d4e6736c91f1dce26f2d53fc41a0292fb753c9c433a3a448c7c90d2a26b4a443ce5fa5785732653bfba533675afcb1536951ff0389bce90391890af7e17b0663ac974b23324613ecd2b4f546653fddc3fa17260c13547a6ed7efe51c32692e42912cadd1f56aeff826da599725c6ec2064a6821412610b9b3bd92dc3d5b660f095d7031a33cc7fb95dc991996fabec326d8fbeffd2d9121a011b07ed5b1e17cca61044efdcbccff492ee54fd9ef1bc47edb1f61d686ed649fd65a6bad95be9c3c5880bbb6e1015bb957471998becca37c1ae552ce3d42c34613e452ae3d42c39e700f5d106b7f749d7ed91f8004621fb4f60d207174e4cee672013ee33e81a75c11a4458b93430a9edf30bbcaf6ed2acbfaf421509f86350e01fa3592e73e91b6a00e687fd504165bb43607131e2cc02f59ca1d7f6bdfe539f57d8d4ede34090d4b798ef79dea5b81b10243902ffa52ba2496d78c4c777039408a780b15f0c817fd0f4ca25818919d00f2457732a5d57fd61b0e40fea0046040f69ff7de3b000fb24f56a61a60651dbf2f83e4bb804cb91bf9baeee11b09782096affb1d78b7493950ca23770396c7119e1edd987c4f6459c20a6e82ddb3d038a40f846419e2ca6c96495976e8a2939402b929ab532e1968d9812dd7b7d98627c83872b7f7ecdf3a793b0b0d1dd2e6b56cb82c93b2b890c79b225edec4be98a432a4ee443436e9eca748cc80e51a4f64c0355926ade1c310d8070bac6ae38bc25e1a505459810b96a05c60041a2ee041a504d36499e4822449e0161627dceae2fb01e3295d96a2176a441cd5764041cd854f08c7d4be28607851308b8ace8d268e502348056ad8f093c61b9f0fce9165521a4e57e0569649692c19a56124649bacfa07a9de25305c101c1c9d1a9a2e4e521a3eadebdd8b6da85d9c8b05ca66c3d119ba5f119855e58382392c9860d5d114ec15a968589ae4f16a810588ecb58105288ff7622cb38b5dcf75ea070fc8042e782700528309a02b7ac0ab2c9380a0380228892b403455100ee1f096601d4eaa220c3aa1847196493a1c1103ec6599a4030a8474c0418a0e2b54a9bd208c4f0b6665999443159d193826cba41c8aa460992c9372f82107ec9265520e34784ef09765520e2b702d2f76d92d647c1bc22f59264155010357c1355451071545277d008222228f22d30b2e998e71bf0e4393a5da6081e7d368c192ca1f52f457eb0594e2c2c2ddbd527dddddde777777b7bb5397ebbbb9bbedee6eecea6d73f7daddb4bbbb69777777f7dfee6e29a594eddbb5547ebfeb8b758b6074ad93376821c9dd9c53a745f915859a5398e0ccf24a6e2943fa437d6a8eccd0b7cc197aad4549341b874a14b89c42cd5e11f74160a65cb3850eef1119b6329e82e538330c11965dd7a554dc5dadb65537092612dab609ad63ad151cb7deb6addb52709452f86fb9bf1b42c96a00ed5e531c38525b9f86e7db3a2a3d11ca5cee959639e382dcec95add1e6ea2b3c0505c7994f012e85f04462678a768980910166ce7bafcbf53b5a94524afd5fdc255356c5303fa86052b6f8b97f0f534aea1ed7b9cb947b8c0b2ece7deedcecbeca82e75bf739f1cab1bfaafbfc04c42409315e55397d2896947aee4ea54bfea094d276c74878be5c752dcf9d524aa9fbcb1793efd4dd9d524addddddf12fa943b5f36812dea7aab5fa4febb2ae5a594a29f556d8316b4e7791a1268aea3be2622d7d69cde92d189825783e8ef118192ae392312de0f9ed225da033344ef0aca9d37fd64aeb4fea3f698d0dad348a4679ce8d8a1a695414cc2765787ef7c194d0fa8ee04c73acf062a3a3da2d897cf9976ddb361d55da5046c13a7678b807ec2f5fcc773c3502d72119335474b6d36ab79b924fd31e7d2a62a2c4a7aa21cb7f514a0f045fd9da4de62e97cd6f589de52b658f08fc875934b05c667079f1bc86b90caba78629c9d3c2ba168c177252b1457ad3dd52824a628bf3a627952a3cc4ed41abe8230be07a599591e44e6ed37e4632e7dca2f3a102c71a0db8b1c6e37e3aaebbbbfd5e976bbbb6bad3ee76b16ad07dbbef4e3758059eef293a5f7a70b7b65aaff5a7ffb435d581ec52e43c506162ac0b0b83ab1899ba726bada5d5555048b1526bada5d5d2ea58f0f4a0707ac36ca7d56e974b752cf08573bd2bf40181fb3f66c3522a14327ddfe64c75a0c66062ac0b0bcbd4950a94f253382e34d935e8962afa51eafdff8314f87c1b561bf6356960b7b6bf229d7114a99a2e65a70b936e914e1c682da6fac477431553fcd81f1e7ed41840f6f7174502e47f1b608053876411e77182541cf76ddbb69ff2b294c053d6b23dc2857b9ba0b4062ea2d880c31636b420fbdbdcebdf3b51aa81062953690625bbdf17b2ff06fe0b983cfeeea17733fda1a3df054d9afc419f7e997e1341699874f9805bd2efa2265a82b1c8177d36327d2353da8250a650f20705c2e350a6994ea0ce21c15fb43e099e33657e25ffd470fe004dfa3992f0d8434da58786684f4a8bc1753bbd6dbbf7fe7d3b41effe76e776efdf7befbdf3fe762f09f7bece2c42eed4bf1fa461dc5f7bedb5d7de9f32dc27a244eecc14e4fb52f6902f0ef96e77bbdb7dd975bd75372ce099024724479a76df3ce2704cfdf61dbdf7de3b33e7d7af02520fd6a4fc53a97befbdf7de975feab9fbdcfd1c2de0f9f2e68625b41117f7de7b6fcbe686ae2170eb2b32a4c5fbf72b40be3fce223a2d5eaef67455ea53dfac5f3f0e0ad08541420e3ccb37c176e0cf7d4ddec09afbdbcb4c6b2ea54dad4cecd1efac4d0e35b0a4f7e75b6b3f90ed8f7396eb6f1ddc709c79fb0e494fb6447c7bda60cd1ca383c0f2c7d6bb19dbfd6ae546a5c58d49fed89e48df9e50fab5bd0551984af03887f01037874022ed5a82c72079fbde9a48e7c80ea233642af95984cfb6d9dfbae94d77bcddb73777eeb96db5b8e1bcbdc81f9bab5f1b4b02d9a6b7abc0568b5bdfb0803dd71cb9f79164997ffb59b4fd34da7e22b5d136e50ea5fccbfe41e4ce105ba984715fbf5a3008a8d3a22fc1fe234eaeeeb28b1c6ae01127bb7b2a957a226d5f1c6f82c0e3674f45a5f2fd2d2d2fd714b8d5bf4fc4b99b16dd04b92513a0babf8b6354ff1c41e0494111e48fb64ef4805fb2549ae5c0035e65a9347b810ddc6d5139c1184a09be5798e01ac61b543c2fb0ade2030377517c6b30714313151098cb528906a1208020c25b964a34f09095689041c5715420dd37b0cd5289861762806f964a33c4d145b12171f1ea76a997dbf22ea6b95e8bbb580d2cd35368334eab1829865c5d6c304734193c9356ada5a798dbc4ea656906330312d70529aa3503102ca7179c6fa014f6eec548482e788618be559211ab0d96ca079ff149a1ad64f8c2f3a498a964d0e27652d43e1992ba94d11356912523265f912326205245a288d2a1a329c9e0024ba929cb8bd018ac2249b32c8a4ca91dad8a4c2183728b28d55c46f07812a513e55858e2c40cbc4241164b76f0ca5852822870078747846d548a63e2386e8ccc7948fd924cb7093bb98a003df54b949e83d3d3c8e3a129d5dd2066b9bf8bc097a9b382594e7c4bf873028507a10e0becca328987d9127826cba41d60d084054c3b70e1a500d32c9376c88269072aaad8414ae732823ba2d6eeee6e0d56bfe362da5facbdbbbbfd939efbd65286d2c87d7377777700bc3e51fe1871b2a4f7ba5c9dbb94525eec4ab5942ed775f77ba56c31cb76d7e5aebb7737a50e66b9b57bb7ad92767b7777b794f36e1beeee7fa4ee6b5819ccdd9cb37a7352b0b39d481d47c19a9b8eb6aee77daa55afa65c7d2a6f82ac8c571ccb9be0cd9dcb4b6bcad64b0b664a989637c19a3b982963fc2546155219ea0f02da2d5d3a0db387b7deb4285d53ae549fe7ea522e9a49d048baed194304b972c072298a535e8ac294c7eb6a985c8a52246f3a47f27cc0bdcc20b48c27f5f89640b9bf608f0b3a3c5cb8bdcfe54985d7ba8f0ecffd14d8e3c2e5b9efa3c3c3fd07b2bfe5e1b6135cd93f0fb6cc8155a60f9eb0650f4ba061073c0b51e3f641b03d4eb9d0f4dbeda645c9b16626bdb475b998ce1b7fad8a99ee63985d45dde3583373de96cd8d275f32e6cf72a1f56656ad9d653c5a233f048f238eae91e107db7be800c9b385d25734da780626ed7001cfa72e93054ab1154bb9a2b37e7694524ab9d34979dd454a698ae3e4757777a7b66ef5d67a376fb35f5dfd80e7bb7beeeeeeeeee2e73529c9412df70a49f2537277d1452f287fc1a4efe902f331259be0da39452d04a83562608c6ea07295d59ca2c31743ff5f3fd5d2bcba5b07f970229902f0866d50a04a7dceef63e597966205fd025df0e6c39f5dd34c5cdf7fadd943fdc6e5c6a7adfdda25ad63e3dabc9d71360ddc056ad30cbe5a50543bfd2d457bff33e4aa7cf693d1997db5ab36162d6b6ad56b32ed717dbded5cdf86c9a4ddbe5661a13aa93946b824a5989497515e4bc26a8d493530a8a76a9b0de199a55a5d936a0998f8c93dd595f80419eb52c32a77f9ce63f6efcf48f8c72b7c6935e8e2fb67d8e948ed4763b23232a13c8dc02a7b3deb3dd0efca4d1d15c4d2d2d46cd9ad1a4329926d2a45253b6ba5c3333339bcc0e99a37a8e1b673ed0737f4fe6cc5a4b26dba787d397a29daa59abd56a14f8da9384631b4185119c9c4650a1f6b425b4f9060c221220424402924922492b1b58b30d02de874c20cf7960cb97fd39b93aa7164ebeecff100e471c526f7a547bed87769bd58636043c78f0f0ecbd76823d3c1edff65d0fcfa70f1fdf119a7d780619ccef32f07c4edb2303ef33d8449a5014efa379bd502690be5ee0f93d6b3e20d0568af65b5f079e6b8a06bbb4b444d5a2c0fed12c14fbe314821253bf93118708d04537db3ac5d8f5fe6246f2e9eaa9b56e373527a5737e9cd3cc93943f8a36cc7279697d1ed8ec9c37bb593f1b029bfd559f072a4ae58e1425d2b708c5c31a821498b13ff371d039f534b87dbadbc75f0d44ee1f3b214d9bb5def6a1714a6252d76b1f1ad7403de37eec1c7eaad4ad59d5a8320d0866367d7cb6d934482b26925492391d149445eef7a00ef2f1f101b76fc7d3f1c5eceba072874bfd4dd76c66cd5ffddd3d8f23badc80fc996b0bd8d65ad312338273099c4c48b5ee695954f7b0be23a08b27e3c1c8b85c33339f0774cabc273790cbac2c67acb5d53730f49c6e6c64ce44ea21c5fa7a00d82302aa89349126d29130aa365dd872ab7348983d2444d548e889aacd1e1e36df9861a402465c2a70e5a666d9376d93a588feeaee856c30818452ac2fba802d5ff5e79c4b7376a0b8c1d5c139ba32773d3c1fdef476805e0d6bc8c30b2b0f1e3cbc0afaf06ebeed3b1fdecc6066f01da13983298aa237adadd587e8d517ffe5e98c3801a6b6a864cc98ea7a542aaa1100000083150000200c0e084462914012a7a2acc70714000c759c44704c9a0d846914c4300a21848c21841000008031023534b40d9af8eecfd4f6bfcaa1bbb181d3ac9f716a4f04f24377536a94649a17cb2a703fb81e28ec4d21ce5332bc5a971356bd78ecfee4aed111e1a164428523585d11d1926e13564443f6d22502c3d1a11dd1e4a4fad0b3f60ae0288ab990372670532fa54573fb36eb8db70fa7c884c76662074c6f15a438762a6536cdbe0c424eda1928bc6e2328370972afe06ec9c7d88e538a84c4c110573d2b2c2a24428144ce31e8e4c9baaaed8642ed5fd64d68f0f01856f6e02ae8510468b7ce94ff3c857521e485ea27125b4796a15ca64933ae05238162c52521a9a8b5bcbba0a98ffb40344c4231babbf71d7402086dbe154ebf5db1961782547caa0033bdda9bcf3e4e6578faf3803570c5a2c4912343121114e4d162c2666aa35b73db5c62078c1c6042b901f57606af4997064caef9fa29987b84d4a49cb382e7f55a6854355d62e25b2ac7e1f46d52f14cfa990108b4a5c5a0673d786348dbe774addad87321644194a43ea49408c3605049ec65d0ff8a5b561611fef45a67dc593e4e6f6f9c899e9952edc624c499fed6a0f16ab8213ed13dea4ebb6e83edf58797f2aa59c07408f6b0f4c5386ebc318cde6eb452366eac34c15f16f1111d4c2a46585d22a65fe97bc27c8032231da652008e458e20f9d9a780919289080f470aa3c1abfe3f46304372893442f1c189693ecdf16d8244421f8a2504067c1377d0fd9f3e2bead8a07f523aacae277d1ad0b4d90a8eadfebab3f88c8f0e5d2d52a395bf9c3834030bb1f921209297338bf2c8e324890d58ece8da3f3e9b19f29089ea27527682639cafee24ecf362d8ea6ecc0599ff1fc8c8d3ec6a98fa93c8de70ec66cac9cf946ad1cf6011e332fa9f52222585b0844197fbea60530771cd9858711f6a3156f98bf72f5c7bef902d5303df9e8bf676edb15c0dcdc7b9102c4ca4702b542282a04b697d23b26b322e00b107acc9b2649223e4890005dcd1bc64406eec7177a0fe46a5adb4934d4774eadfab92c8f49d6815d5e49c98c2f7b20ead9d31c509448a748fc90122b41434a3385d172b453e37fa4a86213d69b4992b1e4d631007962ac14c18b558b18318510d4e482d83e94657629fd286b8b305ee48d53b8648c3977faffe12c7f85dee0bd33b3ebc42e3de7e9a69972bcc30f3e635fc86dcce137ba392ebae6b729989974c841296509a88d02b942725259bf42f51624ae69b7c4a26330cbf0c2b047b55c8441ac59fb93033ec13cfad4ad5ba5b0e4ee1d09c86aab15b5475ef5175f0d80da338bd661bc186c2a0f983064cf9c3697ce29d365a2c4c59ba485534fabddbbd4b7ab17add69379c45045d2351d00c82a16a0711ba74965b6b1525f4c231d3c8e41cc166512fd225f74d5c635eb169be0e754168c172b0ac604bb739f8a325d7ab3178d093947131c0110214952cf65dce72eae8c96217ad54077e23a5c817ec3893f10a6c81ce0ad5df3048e649eb0abf13920d7bfeff8008e480a5e47bd529587cf8b99e5fd457aa3a0fa01c0d52aa04e571db41638ed243a35b67db500e29733d93c562443152c023ac9225a4708c4387f9500c696f56d6d44aca3ee546962e1ac538d34b48261803b573fd1ad6d9f6163cb901042be83e04d1aa0cb345e85fe4b095caa0bf181b5c30a0cc1b01d37a23ac5ed240c14162c4a3d084eb32d24c15a9932fd276a4e05ad25406eba66e022ac7af8472025ba210a516e5e9f399ba9c39ada5772e30988dfe88470951710d4de5492cc7ce6a521041f72ed84745f939fb8c2da8531ddf944cf702f3feebe38779d737496979699a3ce4e467b246f64e2fefa5b1a20d5f0761a2006f13263b490dda89c2d14fb06bd964ce1f6fcf8c491c6c085179bf4ef288c9b5f44643212173d3f79726b019b8a9d84ffc277a96d940234888121c4b9c5a164003e009d83e1781a39f5308abab6660e9105310d19daa8b6b61db96aaba34c7f083bc176f0b49997c89851dbe9e145eb3cb1c715794ebe77ee4cb969c996c0e9e0da98a27606965b4591e3710d98ec93970706f0031874e2c988e573888cea3909d2f9920295ed5937c8785d83710d4848f1794ccaf75127c7264d52d088a311961d2800a9c28250497b76632ca472508a9276ed22f2296c8ff8d2f1ab4d2fc98dde7a99391af1def124201156812313164050250359a9c63636b0e529c69d4dc5d70904ef246fc498f58149c12d3ecdb9ed872e7aba94646f6d9ab895ea248e5abc6e1dd102c063bf74c5863fa13c5cbc20ecb0904112b240f798f685b5864d159581c7f615c1d2d2c11d18df88e34d425cc44ab1b4edf58b93cc4484e661c3df939ce47069eb45f578b091151aef4e455ea72890e23e7581d0c99ae314617ff4d36d75b64f437c0fe7c5266d98503c4041d1e0f243d7ac7948f18a940d5fb944f0cb3459e4602d6bdbe8ed30bf7470b58fb4c31e26f4a1738b3bb310e957fe32c5dec42826337083b80527646582860bef0da3ba765d1292fb67fab815ca1cd7d7e41caecca2e0a65f5dd532a482261df5bdac2d21f2f1f226b0c9c29d10554b059aeba32e97bb40ebae3919b67ca2d9c0631401a7b69e5c915402e5716429de52ec39bd1efa2836cadfab6a6d28a50420d8bc4ba50ff804c45c468d84cb5e995aa0f628d0c98930930e986430616accf44339c06d9b3c2652f0ebd24459e61ee30accf5c6d5d65e523b659027af26dac20381afd6293539a2ff19e1765bff62eb2b2437dac8d735d008050a7b90deafdaf8c693f9e342eacff484ed801925ccc36bcd6acf8c4fad1d719009b24a1d9282fa9b1076807170228abfa35e6dbb928e90f11674ae1763a83799993fc8fa184cc13ca0a6056c9e19325e35ee40cbde566bcb92e9b7127243f95a11c536e21cbf5cc7fec64eb6a94fe68cf38f140f314840faf103fec93d96aa4d76f3afb51bb509886bdcc6ff268a00e74320d65be091c29b780e8a8cd955f0675e601fbb02bcf4d07a75f688cc9e5880bddc834ca57810b6274479b7858747bf59ea4c02f7952fb481213ef645cf2413712eddbad87fd768d29feec28087029082f1d9c57e7c7366d08aeb32ecff5833126b83401f1a8ef0caca4c50a2d2a85f3681cfb997975f51a3b4f416ae8101d3f0568d741e75280825f1a3762a1ebea3433c29e322b0cea92b0674e61dc5612d3b9b1aec13a631283baf504be935b669f4fcdc1ac170dc0c715cb6ce33588d1395efc693aa68811c82936605e2aa30c33abe1e2a0d67063df61a4d47fa15d4278f5aac38e34edcaf684ee2e6fccaa0ab78545a8385c939b05807d09cde515596e89e0f6abfee0e25d911496b51405837fa765718592db41bae921cdbe7ae17d902eb481749b086262ab6be1ad3c47df3dd54ba676f428633583a425bf1171399f5774ec62dc46d7af540e5d7bceb909200a24e8bff81184818fa07e60c1b8c1fa16d8f47f0138e3c5ba2d6498f58c1ca34ce8c43532521173266a0c0d552596c206b7b375d8dcb715ef36820ddb08a62492a6c57eb2249392b56c20aa0e4b9913f14574cec254311e3b5eede7c6575f1914163a9046270371f47b385c1a3d96a64673ad1aeac8224d16a7c106da61b3b52b3f161bb8964098d104551cef208ad3a172f09051cefd258a08ba7bf5c5c37b0237f824ac18e7fd6b31368997d03c3ae4656963419621858de2cc1f5428726155d9aaf91e2130f92e497064e2c68be97d59b08863fffec6e78ebfe5e8eb6d9e90e703819e075eb076dd60da0ec1a05e41804edaf33a3306f6b572c3b76c2dddacd17ee082cb98e8c717065baa75f508e20543c77213cbc0c382b1dc395207fcb6902cf104057200f261b525c062af15797395acd7a1f7e200cdb8fc9b4e6db15c257cab52f1fde52c7419a8aa3350c1fdd9652627a93528b81d9decb1a336d157db5879190e9f70bcb17456977a1c26795a857269df61ffefda2f620fdf064dda6801b6b0e04d7ba1774348cfbd9484ef7fd2cf8f9aaa5271740ddf747bad4fb69edac7b40c599b3ec5e44edb6fec0e26beb34334dcdddb616b2fad64a9feb02e219a3aa7434ba4fde249f3de50d5d7d38877d1b51d6ac60c20aaf966bcee91abdec19ae26fd59ad3269dd4ae1dacfafbd9f5d326e9f4d4975328e9b4d9f44d75a189e73327d1fdce27de6535e9d60287366d6552a72507faa2d5a4abd6824e0a6d3c4300a226e9c1a91993eabf7634f3e857b8265987c04fdcb53aa9c31a3713f4157664726872193aa6694b833cf6bcb3e2298f7456a0448f573c2e411e051f5961f8272fc519641f80b203536bfeb912e71851a13fc5b9dacacdf464940b0ce7116dea211629ce8cd827ea57d39d976e1fa56173d1df118bb275ba785f47817bf2d9e3521fceae4a37ba483a24d370ba42d15106136ad57d012c523d6917d20de5f3c2f3569c60ffa419f8c4022dd093a9fb9c89d06e4695aa8468e0d24c27dbcf8e2c0365315d12e36570287d45ae9b4a75c94e39dfaf8e937c950388341cc2dae13b4b06d2e213d6023b0ec796889a20ce2478c4d0a811a1b6a3220a89e5fd309f26e866aea9bd3e77fd48f526ccc28654389192854381ce6fe4db4dd37c55b2a3d99c5491ad6ea1a4cac4898f1482f495cfa8ea0b1d4e59297b47af78c44779a7ff0fbce21270abf1a1c0798cd16bc5ca909982f948daf08e040a3b7a7d6f1bb4dd1db8173b7a828707c570f35639cc663287337000d64b839601fb1f5980cb8f6103e7e74fd447c6a0bec373975c3a6604b0874788f3d842f76f062d57adce25f3d6f4ab4d3972fd892a4808ef7c4ec54a2a7fccd8bc2aa73533590f0f9bdeb935a37dd11c203144f26ce815692b54ec3da86b8ee75a0d2c504a7d6370a294fc95da6eaacdd01457c3271ed69acfd20945eba5feb6656dfef9e4e17109738cfba783da1c762d2d7e5a5c7d76c87b8e1a87049ae6dd86ac8af3398afdecd1a99e8031eccfd83a7cbf638d674eacc3cb23cc3b2e07e9bbb642ae95ebc50d6f1752124383d5e22d3544fabdbb5171eb3058b52296f30bf1ceb42129ae32bef3f1ed4ed37a021bd2efdff470581fda9f458d90980d2c5556a483b11c55105b2e250c7fd6e8522542af8b28b1dce1264a6f9bba3f94fbf887575823958699b8225d466c54486b734a224ac918248d023ff0c2915f5e2523ddb8fd3ed179cd71bbf0c64e9fc45829b99c9bb8f4d219369696b1a4de5dbcd80493215325c6c696f14768718cd7fa00fa1e518ec13395138975cae5b4c54fa0fbc1cb21c985b55ab660864460547414c0a2588782f77419697ee5213e619c0b6b5b78100007a98583ca8b19f4222cfc6f809142b8766e38075daef1c12540cbb9580b496645ebbea902ff305fcd8bd82a54ccc8e44c6a179a585f72739b8dd116d680bf56135274452ea9ff3d4441213e5a0d716315af72134e53090c439fbdad0ac35ebcfa761387158aef6ade2e86e815a07496ad9414afaf2d084126b155a2c92d3aa203823beadc17a3be4d17cb554232a88b70e72952b8999b1dbe2f05aab539e94511595308f02e6822f2b1195aaf50ac2e76750bef0d3957991a640801d75d506a0684ed51fa82515898ee16c1e670493fb2053062f52e942abf310a41c2ab2be79126838a89bac4383f2ee4549626fcfa0ee2b070de5b31f174d3f021f0d85a4898d7f4dc4a43a91062e529d11c61b40882d97597193c65bdc9e39823707c36c736ea2cc325fc23e91852962f263595cd9fdf30877e04fb6ed85c9c712c449021ae174a3779c77636639c0648706ab6d0422def11acad45246ea3fafe729395c7401cad660b73b191a0c927425eb72c7a6b3bab08a9422ad5a92884defa355fcbcdb0e0520131c3a7699b8a544d01ad20b5ceed872299368effc65108918ffedb8a7a3492449f33852f2fac9e052ec247a2ebafd54cd73e0197f69df13ac683a3d45e3bc82effd0a1b20b9e75536ad007dae1cdc5bf7d772b4819342f45168a84e6b83d9cc0650a66cfee28805695a2ad90a858d719426e0edc75aa8568a77f026fa7bf7d402beae3c3b2c0c53ce19396305c2b204a3b0ed5e5a95405029e8c15696106ac2109e1887d753791b09b99ffba0e01aecc924ab4eda7759ce863607b0b4c82e1d0ee9a6705d8025f43b7bccb0ed81d6cdebb840b6d39219d078d6f7b0356f8b5cde131e97defe720bfcae5f5449b03c299357bb2776235221d1a0fe0cb430a9dc287610ca5353f48abfca02aecda8959c01f61e1b018663950248d2d3d87589c43d794c431b3c4b1e098d128a172ce3c85fef124529511eab9b5aac84261a6257731785591ff92dcea5964dbd0de7b71e94aff46dbcb37a63d6e65cd8be9d0708c64607478d4a7365cd7fa9f463f0552cc663702c172424f3324a5646ce6091870a4788f46389767c0057ed3c0edec4ec4697505440650d9cd6fbaca8bf9e493db27430f18fd3162ec63d66ffb8a34a5e4ea115a9678077fa18c60a74120279dc2c1bd8ee73631db555e705f188f20792ece0d3ba6e360b1bc0473b030b07fd010a9443290a8725e8abe29022e2c5c123cfc6351058f0cc677884365d8241710087efca30a258f599976193c0d948580f697b4abb84c5ae6d745820dbc1594e6e9fcaaf48d3479e131867cd2d2bd0b0a9480389a17b4d3dee5b1053b6a03d1997792f59657829f58f47473eaeb23a4f9e27ad87671677348642a7b1ad5ca37001bfaac568f0476131db1c954874866dab4b8b0b66c71d3a1572de8570b1916d5752431b19613554071f1c1ee828059c674f521a8373693378196df12d17213521a5c6ece28cb8f256f569c48510cd3c4a8bd7b6b6b82b2516c142689bba9603daa4566a73f43834064a8f9d471e8c4b1bb8b7a2d4217d6ba7616314ce4a312bb38a81851f69863877409fd97a9b2160cf4ae453809c22b444bdf60ce7b56d208cfd5f4c93148338950c4c27d457b80821775bb0e3b692f8ce55af4983df9582dc28b484e3bf236b7b15b9260a67cb01c2891782e11dd702fb292ac6fc79699103ca266ce519c1700dab4c6813a02fb3fab62943ce05ae47ee86ae8703bd61571471b6323f2fd7134a5e54322f97cf69a65a29c9db3541599d2e44c0a5b64422979cf1a06d888ed9f454606f418332c2abfc9e7f076e745e9c6a309453c797e433380365441df18a6d4ee1d6011fe68b3ffc6c6c17c18d5289ec322acebb19b10d27938edbcb088f9b9ae4afa79f02df186e9efe033d80d73d6c11b981bacc62cc262d3673106931fc6df08a0541d53ecf1c5314976ab6866ddf19b018b5cf6259d4d5a8761a414af73bc4dea4060da92628f4670739698b1f33dee4278b7446839bed78c60afa23ad385be80f6df81d76bcad459c80203e77b2c07cf083496b41ffc0587a5295c0e1aae71ab78faae2c6645c9b70628758105bffef127e207952dac7afe2783297e15556efe7112949cb99efa08858ae055e4217866def543fed05ca260fb80b8e0087eab9615e34e27543224c44faf4c64f5322953216a0e7a483df368cdb6d238cb4ace69ff17772fad35d13b9ef55bfd8254386354dbd7501d089465fa88cc8a820de3d1d6578e338ac18450a4766853c2c6e733ce102a16058420082b93c569cb12bb68037ca1212978c778313c664447633fd35751cb29221e4542ae9501393670f65cbff65c1bb9d2716189d6a98a6220ea5b266463b6a76fe9bed3e176e142b18141f7c5ce1bf7e6dba92f57bd684494d5a8de8480bf4319ce3ff21f1ace19ef839e701083e332108ae522d3e8cbe2bf8317c084da9f6a626666e931aa90ca01dc3d72fd0a0e5c0e1283da31482c0070030ca158a0b34c64823d104ffc0175830050f40eab8b200473800d2c840fe34d6b6e2b536dda032420bc0733248c0f90481d321a32cd2cd3ec5d08c37baeb694018c63e9c1051f79509abb2dab02b065ebf6cdf447b637e26aed6343c2966367ec7e7480352d65f787bf63f7d34425e97c01bbc824549da6946ff6d62c19bea23492a2d108a5bf009a6b5ca516bda3ff00fd2535e951c01699f1d959540e103a6c2c7a1fbe0ea91b179d201e5d8d18d96cad2d2cc812459709f85f4b3995f2c24ba9b66013da509cdacccabc37f2d2f6f8098f774741ee63c9cbfe922ada875c3e1d537e246450947af0b3611da1a3734c92672e403e1f8a800c2263da1581705cf24ab24af48160a61a2327f3cb4fa805f735d5a1683a962ffeff26f603fd3e747b4de05050371054ff4972aa5ac5a074fc02025a8d282dd32100e41947795c6fb7544e2f45c5cc9d14fc38c47f2e44846ae4a585a17c3b128a56280c19f9f3c2a33578bdc337f62d5b331825c57392fef7cb405bb05f109adbb59407e68682d8dc57b445ef27cb93258f48b96382dad0ad2ac64560b0220c547824c89281d8b1fd1440925c6502f119fc6502efbe0747e93920cffefe161658af00037d8d9edd6f190416506705442f43d4f02268b87a4a326c9c1202706f8e4090cb4a65a39c5640b155821093edbb3e9963acc29e71ecae1e090935132f5a05b47c97e69790994805cc6d0ddcdb02c6092e0587663544549ecee159ce108363899cdd2f45a2c67e1cc20e6c2cf1cc4365a7b48686c212966ce3c2feca0eb6c0cbeb7719a71ac5b805b0a956bebe4ff803e852504176d5604f2bf680ba1baf97dfec41d58ff87502dc79a67dbc7b5aa5986d912dd0587c33eceab0b9aa9e47f099dfc080de525293b88ea2bf396e1d1a91de5fd04a04247f8d72f7c6ce59962aa6788cd9517e71a070820bf7a3cf3be055cd5975e337f5b42dfd8513ff00d08d013481fa9ee1b3f7af52e04fe1fc6140e23b7bc50b4ae45563eef9fbeea23ed5381b55ed3e4c60cca931d907da3fc0deb8fc128d6ec359a9d552da0f19fa431a287150bf453ef3e0ab9ec638f8d0a34a8c99fa025c74329511a09daadfd55f5597672da61776d8704321f35029aa35cb95da0deaa96ba3bc7900fa719a63f885871285f1c1a23a87422095a806237ca9ce0c2a5209169356ba06ed9f80ceca23a0584511048bd00afc24ba1a05dadd184252ca87176ff4d9d52c20bb1176390ce706a3603990c917f3e8ff6a68c484c2d2104379f08331a89bd727ac5248da038f0d2f1939c17d41c9e45454c8b8bf267cc674c27ece410da64dc25540abbe1f36626418c90958baef4f3f88e3ac44034f36cebae66fc2165584c9fda7176eed8b64f31c6b32513ca8e6809e8024518fc5d508722427b58c684227af3deb0570d687e64b544fe85ff2bba1bb4848e097bf6ae56408c4a82c98f7972e7f5601bc59da666872dc2376ddcd5b4f67d1ef1c24aa7a1b145d31ef4f59fcffaff75b27ed718c1bb5d61fa51dcbe5a09811439c8a87730091e1deba3873b7d1726bab66f3366df0591a5edc32007d6d83129d723a0c6eb263dc6abb6b58e112565b25858b309bd444d8e375633d58d3c06effbc26d2265e53ad83bc78eb16d07d7c44178dc97b86cb4b06ee107a7b52c34bce4cb3bb42b91b4f2eac629eee50d58cc6f40b6c0fc6d6e4e28d84d59200bf5d9a64843f7e1e52f25f54fe6928a146abf5ae12e82bc0c1acb354580cd010505e924fada146bbae689608bc32c875ec6c802b680fdc4d156ff9cf8ea9c39d50422f71a6c31026ddb9e4447d0ee039509b7a2074cbe2f401bcc9a0099c1fc00313b4b9ea5d8e8f4c3727e1c4070280285b709fe518471f64dcbf58ccf4b23a70cd96668df3cf99b4658a29d5ce801a269325953de5b0c60d5e38d2706b1c9548ca103bb69fe4a286ac7a4185a1b7a21f694a176be83dd6b3aa0e832c68f2fe74aaa419d2bd31cc6e8fe2eec8a24e0ccd0e92a772013318838204c44b67c952e248e2b9db23b3ec1b1a0b62746d1c7f6df11fb3d2a3342a73a26f852887dfe59e910637009d568cfcb843b72a04b6f5560ec340e92dbea0998cb763bb9d0596fd006b7f1997fc86f6c9b630a5e0c7883b934c009952965f830e464c9629f96b88bfdc4c9f5981d8003eb7ccd2c7e8c08dd55781cffbc96513765613a3accb2aa2489bf653560b6cec5ce55c4d9f051650f18870d33c7156941c6ec5c6e291e6a3a9fba54f4812e9bceeb845997a943ee24b9f4e8b648d51308997556d861084a7f44e69c97244cac4992c5b87842e2b952e1550ffa08be11c3f8036975b5aff05a9713fb42c9d1c552e4245c855bf954b5119cb6597d28637f3334605f9b8e4f80c786a1fb0a584b0422ebd16d483e00cd47ac545df6fbe50315a5c2a9f8bcb29614b48d4018cf2b3854b19b6437fad1d05c3659add70c119d7c283a069ad08b8ecc4f1603c3e38e8eb931d4f82ae30bbb0b1f4fa4b716a7e7a44be9afdb882f5a83632dd99a7230d81caa0890e947c141f2b78a3c379ab786315773ffd158ba99b8e40432ebb134f82fd911c2928d666c3befd8ba84496a3520301acadd8ed3b35d04e4e912d851103dc7666d8429233351c37558398147a658498a2be6d4cf6843228314b6dc56e6f8f0e1e076246ed1c811d7faa49ed345588c0a1d295c77efb287a5563265c83b6fb2fbb87a7cbb1492bb7a316444469835df36860414c4fbac437cfbd5cd0a69f74d57104bdd05ab0494c04f1ccc6035cf3eeb51bb4ca507145bce63ddb656062a99279288141a81caaf66ad18aa98c2283c184a4624c6770bccbd2a35c730ec0e8a4ce402cc777f65ba7feac446bfcadb2bdbeab1320b68d5b1714fb3f4a365ff77412a2f0f6130f45239d897541bcde15c846f3a96bb94a782c3f525076d3e9eed05e1a7aed463c56bb6d3708df5a304c2f62cef389128401355aa93a65b9c956a5f36ba0918a2c0f3bbae9e0ba87650f21ce9ac421c4ad4efefa9f0351e23441802b1d3492a4145dc3ce0296d629ee7d3ad32ae92442bfdcffce823962f9971d6a47917895a83cc2e94e665fa4b895e0cfb3284a3c2cad057c3b04c1c04ba56434742ab84dfd6ddc84edccd7cb24b7c342d66b93a61d50229853043b7f9bee16ff31da0444fa5193f04267628a2c7e2832d7a4ba5d27e68f9a4fa6f9560ba231326f8427a13bea1079ee49e7f851b48e1e63bf049b57b28f8b01574382951587711cba4a244f1d6d6d82bb15c317926530f828a8c9bbe485085560ce0c70b42d7bec54d12eebb7eecb170731fd04ba7651c379c413ca9531deecdd2430c014489f0a91fa9d3280ea599c321ca9cea68f2740c681204d6a29d8fc182bcc71bb996b665463e888e7367d51f59439e51511366f47b9fb8ace97bc3fae5c5088d193024604835f178ba16f85b7584ae4e0e3fc09cc01078ca9bda110db9c743f079c2a9657dab27e39ec60d52c017783f5b453c54c2da88dfaa585f5a4abe4cef456a17491b9e2825c537ca5b2721b07b50d4c8790f80d6ab5bc2e3aed8eb5a09e43a19941c5bf11433864acd8b0af0bf4cb2201a853ff69a6adcb5052c6506b26f729e21116b032bec8019ff0b6faff85b526641f6828ee31c24fab3e3c531b5038be75ebe604c3552708fa2bec901d231c6f19bc07416a61cd516dd2047a1bf2e1fe04829113ecbc78345d170a0378c1223303dd729103df710cba8a98219885fb02126ef63e376bcb96eacc4380f3537988460d45c65b24a12806a6beee2cbfb16a9cefae87f2c8535e5bff5716afe5cfffd32114f76db120e22d395d1fbcc315ea88e390944a8cdec2cc3228af8d575f8cbb225ca1b5a133d39fa84eed021a26405722a7639470cc6dd97976bf6856d12c1ba43ecd098c2fa3c510a1f8902d0fd0778bee1ca40cc4f4c1025b2be9b2deec205b0f6bb5e3321f02af441771a84588771e33c8c06adb9ca88c71e9b33827832d65db206e5e36d8629790ba40c8572c30027b4ebdcb7c8d5226394a1b4f840d5cb68b81dd274ffbe2d397309e0be6af7a5cf33ec1af40576764013b7a8c8b30c3a90ee9870cf26f2e6aa5040589dc44ad51cc77d7df04cd3b4e96d447b99f932bed558db4be26d53ef52106544dd209ace747a937716de6c9b058683be5238c377b076db3d6995ced51c02811e3e07de95827d911de944bafe1bf79913bb0d163dad31286dacd82f3377686e9c2c299daeee5863232c6738f04a2ac62f2c072131f3ab75e3c20a2af7b11c1892ff7510cdf3f894adf57e3ff8974736eefa5db1bca2a15e12ae1d9c239aac51d922eb622a4ed6d5e3a901cab44ce458ffd89dc61320e6e6062059511c95567b09b386ca359a0e1851ed1988db00cb53339186723afbc120a8a24914d5cb186c1d3333daa2120daf3f8b8e4d4d62d9bd76e67e790a2b982a524ebe9986d35e805be2c031b3aab5d04e575570468c4c8f4f092039c47df411723851e53497876848f09b512509174bfc8382b1819458decc1184c1f1672e26d6048f5b2aab850b4b2aa0a3378f71f19f92307df9533fe729ec535f13cbe81d59ed2619138b0efd22153cc1a5b4492e5033761504d7d90a8a462c34cb44b8178ec6345f1c6cab343ade3174cb3c7f724e52f6ab6464ffbc21cccaccb890c8a02ff071772e977ea94ba09d9adb01ee5a3cf7c22db94e740984a69c802d1ae10de5776fdc9088033a926bf4d3dd87b5932d0611e5cc230d79d574f32712b968f174b0c72e76c74e7506ffbb6c0cf0815926502d4ef077c9ce4ddacc95465f100a550c96d2bdc82f49d27b8d533daef072e4c7a87274d5f099660b26b951c10b2ed44f436c7cdc7a16bec57ed88ab260e1708945a8903aa94f855bed3fd764a1d98fbdb5b457125ee40e42d65e628e27d38b608644c46b1ae455b712fa18fcd652fab68c5df6b9213e259793b3a2fe376f2bca81017655ab865cf7f102f34121896f06cf06318c36ac5daf4416851bf8fca4b52c9a2e002d1d69ae4ed7e91c92d9d4b8e85e8153b3c9b93b8f62806b3adb1487c7311372866cbcda42dae0e6df21f303f2b5b34689ca5b1f901d6c18551d42aa845fcf981d3363d9ee656b3d4c812af1a88b1a2759e39511970b7976d4d0d2bf5400c4ece67e2361466b4c0ac0f334eae0dd6a1555b7fac47d165dcc682b0bafc67dda8e3986222f1d1d736e679a2b92113986068322396734fc08b5da445bce11fc3dc956cb5eb59e51047974877cb8370432b87794bf426df7fadeecf096483ea8bc31efc40085198d3d340953cd68a0d7b395e1c35a3ce859c89802b00ae02e96dc1df5a0c8b605c0d5a40c41c01776c7d0011529a4ffbddb46ba891cfcf0a88dd80ae42877449c810bb5166bb7d5a1154c6173b2fac21325f7b6529a13256a88cedca0e77bda2a78f1f6018fb9179414efffa18df6c8132872fdecba0d5fb9edefe33ee2198d6fe323350cd1edb33b1ae916746e88f01580bef046e9a15d7e336c27581d7ac9e37a2a481cdc37fba190c0d63d2a0d06caab8dde2a899002a213353d73da63e1c5518e8307fc5882f171e0a246cab42c536dd8829d414d96aee25382524c7a8fc0aa7b5a98bd98cb93ba6fef00fd846c8ecd7e765970d1bcf8eb9190da74508e949b5bde364951dc3a0150299020e1353578aea83b12326a67eb820a2451444826629a5459b40ce68081a4c7c28f76e0237036cb2e7a4085303062827751ab07e8b8868d1375919778bad6a52ff3a3bb650a09bc1ae5bd9e3539f92f785cb0254f56a5c3ac1956be3daca0bec2aa4eba35097986f5a2bcb62c79a0dc035f4f2e35a0e0d2c2f5d4d04efd53303b33fd1a1d6e9909ae81bf5c2c22b1c0574045050c391551a177587c2b28ab17dd930e9de460d2acfc075227d91003e78e0221d32a407acaa0e14c157ba229cdf44a543cacbd4a4510297a333607a280cd3ae5ebef8b9080c9a6a5c0be2d33c62e771e95a77f8abc7d14bba08c7af308cb1d3b2081de676955378ad7171d774cb84567c17e21bbf1039f018c267f5534c13e8603801c8f095b4a722d68df94b44ec871859fd9f93e467e44e0c69fefde36dfdf1a3ab16e3a0aaa2a545522192cc88260eaaa51ad58993d864a20059399a2164111bd0650b26a5a27619403f742a3541b957b7a54211a0401f824620b000cc9a066e1194080c7f873079de710278a6471796401de64496b7c0c755571d145621eeb2aebf5de0bd77a581378baca742cf3ce40d59612c79b444fd6bd881dcfc1d664b1ec81d5ea91e5b6ae21776844b10d6593c40413c7a8f82341d8ec62e9bd6d66fac84d6d675f3f59640ee708c6a04a951d33de3936a9977eb5f80eed0d611bcdfddf29a5d0e4b6b3b4856a88ca4cf0770b70fb40eeef6b0e6ba5f77debf99118b3238a569c0de1a4216fa7e0d7f44988edc190ae637ef749805998ed6b8b7b5c4c0cdf7986732c12411e545cba55b1f4f4b42a1d08e014287fce658cca980011590fa7c3c952d300989691e435a5d2cee11abe41b6848e1b42b790a1674a8cc80e3407a68a642c046a7c305ade9874d061716ffbad10e431db8103d9df821a0fd8d9bf18c77ca06974d4cf1a89044874e0aa9deeeaf78a7cc94bb3218b90bc255b2bc3971cbd5d5c25f5c16dcf9096eaf54c1620d93029bd5c4f1409128dc6c72847f7b39645e76323419fe8a9c7b2b654a325207254bf6c7db363e7d236447a38697c3194e6d7cc0c744ce3860623ed192872ead5deec7a29b6436868d1144a5a4456dd2f0099aa269962dcb1e7f5cd7c534c173cbcada82b61f296f3825a922ff98cd89c7326d3142fa7193db257fcc00292f7b208a35faa2e3ff210c9d482bc491c987c2b02031417946d8755156c5605a05cf6f156bf34c550b23acbb386ec90d6e85e290a4dac7d8a5f8a621691e2d955aca0b39401164dc85864b270e3a55590ec204a7a5904205ca0e64093f40c8e093edd2e5d0221c78875460e8db5d0f54ef259b59d8a053ba982b72a708c096d4b3d0bc41f8d029151ae96db53961e62994e15528cacb60ae4e130a659e8904e48e8dddbf43aa61d9601945ce280476725f290576b8dcf130d6c8c17f2714682ebf5aac5b5e1900428de60b1aaddbd0bc832b227debb97dbaac889dc6c542340bfd076161473843e010a34a2ea61aad3b0f048555d7090fa5360c0d0d2100354903d70adcfdeed4f249ef63568e56bc8484b9943e551332b81d8367e3b4ea6c30873cbe808955854d3e426c1a2e5d492de221e1c7f39eee81c0f256c1fd57b92a7fd588e6cf932ce1218defa27fe2d5c80089f5490a2a8af0c9646c3fa4a9e9617f24dbb5f39a0d858e0652f4211d51847926ec8e9a96f079555a7d2b04cae16b6947e8202b00d6518d34923964a5eb3ff34a6cce6be9a36bfd81cd7fa7c3737b54abdc7560b7e742f456ef47bfadc3e9c8b0640d030a66a6dde4a4ef74246c5bbf5ecc4f2f8bb385392da11cf8a32728529ed3160ab5d58bf195a9c519fbf70efd8a03e062b1710ec50d4f44992e0fe41ab8a1ee0cd251fee78757fa3c8afe7b6129a473296334ac0a4d7205320f3a047a8304dbd8abcf87262fedbd6ed878c5ef642ffa5642264956b960c5393abec88f5b6888979222d188a799979b25cc363191eb62fd7650b212fe0ffbadf84c40d716c91929a0194e6e93742007f9a90d1aaaf06f312d754538351d1d5ccab40d17fbaf32d52df2e6a16665ad7d722eba1b5b5c5b290dbc78f78e0bb82a636b2ae9891d5e90ccf9e06733a005c53f918d5213db6a258d65cd58a67d156885121c971c128d5fd0473344ca5062875648b65e45cc8848076e1217e9c5188d193342d34659cc3536c24c76e934aed17112b4302e754e7904b69bc05f6780f599e57a1476e4a05d7ac9685a310e6054c8d02d679a199816b1034b4a71c47e82552a8ef97fee91aeedbdb83f5d1509acde7498367b82ebb60aae2bb17ad38eb688104f510292a15783d570e4290c38469b19e1575363e83f4aee1bdba435697c15dcb180bcb288bf333d6ebad207c7505d332155b763f950e1e2845e7b4bff09e373382af5fbc129f4752ce997c315c8215ce7c52d80d899b0e8e129f2f8f6ec0a4ca5ed31157354ded03a490475e86374637fe931b39bb86193deb3b96dd1f0c34127a9d23870d0911fdfe78a1caf99e96b7e2e8549b3470f8b633f8e7513049935c4149ce7b3a487bf0bc7831991b414a819956243f891f0e7e4bf606416f2f938920cd091c3d4a8b6cb9e017d8ec89771b805d2acf85981d451732304876ab154b37b98c2b752698cb029862416681f65126cf23c4e4df0c878c207311d8df7fffdb9c74c0f8c0e242d572a63670672592a18c41b143ab4e06fed6e76c49584a1960277f36c590477a040463dcbfe182df672e2f108a1d4c6862e02e50ab75451732518e400b13b97b2e7736dd0393dbf590ccc7eb71a082bb971babbb4c93c447185a90a066528518cd1b915bba791cd14a7b99a438ddcc850dabfafa0844cef45bde1f35372381f89b1931e3fe13aca731f76d4724cbd9c5eabeac578d11ee55df311016c7fe33817db6130b4f5eb7275839b7aaf7b05a270056095aa761218af635acec1e266810b601c3601a7b5cd5895ec2b1e812dae4b4306577d6f7977abcb4580b886d547d1b214bd3ca12a7fa96f1b80f30a02b5412000205116d155ca55f033fb5130e70706dd32b49947332686ea453123a3016d31312653069a78fd598b87264e0391f600528047a04c3f92350015057b488a60fc8ec0f8896a2be395197ab44e243780a285f9dd03d560b2b7e5419fe2098414cbcc878e2b5e7fca08f4da4f1131e042f049803a5f5308f843b3078b1307884468ef3e90543a5d8318de967f993b8984a4885b721882e49ade9f269190cc5ac0388d299eb5d64bb69d8bdfaac07c6cde36258b9f36a35375ed1e79ffe17a155656d5f556011134cdfee23d603abcaa0450abd8b108cdad386c1a2e1f3b5769349af7721896701dd4e84dc7687645a26f33a818d3bcfd439680250ba86eb390c4b1095c099dada65d83f55ba0d8816b6d60fa04c3050980fbcd103e331163d44facaa7341d04b6a7a24142e0869ece4dad24d0cf88565bd52411ab0a7006b9757d642bcc9772b6850bff7003389390fe8e5842e442186a7574bf360e2326c4a119f71fe82b0a168012e52d5c732e7095de039602a5709d077c97e133a14c2ff9f6d0dcea6bed4b14428391a6b64e3c2f1358ecf84a35af19472e45c4f34df8c797e2872e04e80c45a7a6e93d69c75d57f3621338a6d4f7dbae484d2918306dc49924523a902355d1c9c78d385561356c8007363e0b82657f737b95640a90bbff1a8b60df0c7c59ee7e93b1ba8a0330374214f7c1577940e5b0c28843215dfcb8619157c3a09116588eb4a1619ebd64aeba483fae1db8b3a82a339de2748fdd02a79c003b45e67f5ff11b6f14c98460056a0d8bdceaea1efbb59755981d286063f77f917dadefda6b6ccb294f457010d031ebb9829599db03a491937f873c5a4e24b5ba2cd3439c484596226a5b5617bd40f658189cba68e65663643bc3f3c8f6ca87aff7a3e7359fe713b18626cd01f4da15230821aa02252bb5fac9ad971d5fd0acfe3b0e137b250c5e3ce2b6c7712aa8ced179f6af0e4c7f4b300aef558544b28d7def1fce130ee9fdccf057abcc0078f912380d86bb5ea3f06e3185ec82838125245410555d8ca4e879f47ca5e570b74a14327401778e1e96c22a1c70e4a66425128037357f42d0b8698e0e394501cc7dd768276d1e638d7458946dfd614e638b42b28897256fb46cccc13659be2df130b566ff2d30e52dfcec8b19a37350e0712895f13c39a5e5657852acfa983091c0f677a00dda4fa451a65ce4f71f2f458d92bec4b16e048b2611238f47d2050728e2cba09b81ad65a638fe5a871bf4525420686b69c2f67101ce8311bed42af6509a8f967041de64961954be8e27e29da841e823615fb6fa011672de1a2782011974abe508a59c9af6ff053196a49b3ff37eab32d837cf42767027d7de63622a527b66ca12c023194df1c34d662ca1a663ad2f09003f139edd76552919cb24448d9b048adf40ed2424a905da9063c3f4818c13bc8229ae9e2771a28a7992a2cfdce3087a431c46aad367339cacb43d48dc88d89cd04dd881bc343b48a365c76b101168cd24fd5083c4364a2fb844b7f56cc073a05a714adfe3440f9c52bdb9123c3d07c0650f16acc5613659c28ef6c5767d65c61c06c509f19be0e36b029beae72a376b0efa7f882416542e464123a9d5e0c99d89433de13fe583354beba29a6c5842c8379085d64f029abf86f5dfd5bc6f4cc981c3a22f48e3ae50a65af52e8b0b4be0141e7b6ef46375963e26fccbe8a0fb0ea37a659eba65c3e25094454baeba251fe41f64ae376d33195a2cd31fbe31131e181476c3ee2a4add48547093e0ac6d5d9de6c3ee282473c3ee24af1111f8f52e2a38c1f329839607de0836b9b43de41d4d5d047e453ae3d94c3657b0493bdaaae0698bf0b68fb7188c53da49b39c437dc2e314a345741a13ece4d1f12c68e6c802112973362bd6306bd5eecedc51785528c991d990c96c2c6e0ab7d4d3252a6061923469b64025332795f8a85e293ead95ebc16e926c933c3df51c28264a0e091d91d65fa0bfb2402309d85c2f21c9dfd2a75b1e595a8505e0b1467290e359078eb9b16f76bafa5cb8af873c647d47c1adfbce2d0dbb12059d7c444114463b266443822cc415b508051b8c3923ef712633b9877ea6daecfc940672e8fd62200e9b20c3ea722722141d8b15845e1caf485370e0df0fe06a580428409f6ba0ed620b139606ad8d6f995fcdec0157e166458fc6b1ce362252a9771d04b62cb60e48b6b3468434a68c669cf657da3206e121a9d9cf8354446f2b546104c397dfe18fb40b6551ad159bf28de65003b371c67b96378f26b71c455c12ab9a1c3b4fe797d89e53bc68969d054eaf68982b6ef8bbd0e6c81f78970a05aa4acafb5b3b444350aa3feac8cf0f18f44406c5242ec5792cbd0f492ddf654c66e0034391e84abf8510eb8242d1d9b4ccd0a9c67da176e2da34d7990448277b642624b800006be21af99d049ec3e353ce8e17c56267c58e08342e511808d68f34eb54ab70219d0bd263095ba2522f19a983548e5736db1e0d9785f2d040509c3b50aa2471302b40c50cf721cd840e217626c059d2b59672116f6e2547ad6bea48531c9030505a81436372e13923b21ed93ccada96735297cb801d104a3031005f98a13c700fe505a0206186649395f09e2e68c5b0b98e437eebff069a7f0fdfb4aacbf7b12dafac85f827fb27479bfe95bff8d81b1fdbbac9472b89b6579d3da219f3034af7f5e5e905179b52979c7b0adb25c71767d0b44d474ef8f6989b58c6fb6a4bb9a94aee2eba4b8fc3d53ce648fae6c117dc27fc51bd4934016fed80103d0599cdcd351a5f1499472962ef707565c972c52e39961d9071d2237210a956bd2c69f539444c3a4b92818c212a595754a658db7263c0b0226531e56c6720f220a41a685258a895d6174ba85393f0bf89518e3e9f18f682c8915f5ffc0e5d5e1eb451a359147a24c41664ad359a810ee6925969a2b4a7530e2f74a22b470e845bf82d3d9a56751a54cafe2f66060e44d2ad4030448d6429a6cc8e323b772097bd30007ab28cd132184b9c6ab88e01ce77a4f795e284352895d5d170ce08879d1abcad16444b40963a5e9528044b77aee0ca942be3509e368e0a0d8618e4f8756ddd3d2804364d7b1a2065ad25ef91436dd8821910ecb95c1a4cceb613cf0fe7b473d215ae24b2074933e15b3913b5164ae7f220d897e97877e4612379607aed333afa72665c71cc5c755564881b20576df19ada2ee6d487ff300a53a72aa8df3a2477af1d95447d63091a622b86948d3506f446afcbaefe72acf1206ac86eeb6ec0f3252ccacabbd2a91d82aba82f0172bf7da80a6c0b4eba729a8ff3003fffb6baacfa0ad545bdd01a6af032a70078b95e4204794a0de38dbbdf17c10b716f507e9a02fa85923794c583011379b23da9518cb2a01906d3e6caf32a882888170e20d874bfc361cf07a8d513ea1bb896d6c7d30d0e7b93ede345a28fe4375c88558248d0a5d439ff2b3a3de6b656e4f634822a1c967763bd94688bb9a143476b93642f3c31c941157bd81052eb993a42c8a8d9ad5a53ab23dc568362ef53f6d2928715e94fa1ab4fc15affaee111946152f168ec0466a03fc4b8208bd2041af77084e5e50b124e52df07547ad9718f774f7d3e3f353f1e160c491af962488a59a2497a79b0cb1e422b3e5db52b013cdfdec65611f9d28bda1ed1ccac354ef32df0df02d87da4960b20722b1f3ae75dc24912049f13caa8ac32e8591dc6f658d3001ddc594d15077b127eca4c678471b6411ee3b61884e556c6bda343ca953a179456f1510ade8ad41481b5418bb7b2e95f5c887f750100b816ba06b1080aa52612b853b2f1570523388398683ce943e9ca1e95373958efccd327d3292802e7423dd85a273a7c2dfca4cd3453e3c3c313b640e40c9908bb50c9520d5c9905f3e4aa06ff66f022edb05b23ba73c0b12f7dff09f43448326f5421230e1a8a491998c8a8e8f11ed395078931b7c4e0f55400e3b5b931011f9d017e84664aa2e48f74f0e2773b415d5c29fef65eb287caa09b0b9dcb441e2742fa6687f225ec71f0d04123a692f530de3833729c4e77697dc3d6dc003051530ac85114df21f78fed4a178e98d2c96341759bdae6aee219f0222bc567e05372b3454b0bd8411a4c3f10868de66b351e0aa97d811d66ebd87c59542c1b199a5a3a4e30dce25233c73ce4a066736174c8c28c29af30474acf5be121ace6bf4fef3baa68a00e11523769c6252df6c826e40371dae43518b0264593a82dc59902cb17d6517649dbec878bb2643b3ad649ef243d51cf869a7cbc21e887e388b9ca1a069e1e3ca13a7a99bc423c3b9c7dd492a21c78d215e06474eb97bf5891f0da12071b3cf84903b8fff012ae14cc86ef3c005de5afc0876db6c3be8447d027d9f0412cae44b42dc5b846be02e94699e7db2c9fa25d6de9b4f880da503d16e814d0afa82034b7d2fe65a63dec381cd5303113844ed9346ba63d5f5a56f5c237c97499e7c7355d6df4828727280b699e0112fef4a4e7606efe755ac29c812b84a6010e6d9b663b3cfef5dc6f026c17cf921d8a9ab56a0c9a1697ed4b7359812f135da89cf651b03b9462ca1338cc323a202516eaa75b9e9fc0db14e1923a6fb4d75617373f1ecff354d529be78e3db25c1aa80bc6f7649f176b82a72915012f2d11e541df87fb51ef5877782c3cdd43563d28a6be19d8ea92703c53b9689bb3ee758440af5f9125e460a4c20893a9f81b7279420099add3fafbc8311caae899873dd9eafc7906e1c6138f7094d9cd32e27248b76e87e0bd897bea18fa12529f4d6a6b4e99abf4ad122b62830c0dd0f822f4a662183f2d618872972170f80c947a47c742d43efb4fed276f6eb2c0052daa19f7c57f6c7b2bf7d467160df2047135717ad1494b3de367aa207d8112fe80a141bc1425e0524cdc116ee06322557cdd1b4f19ae9d2804f451204af9baeb4cd09067906692e7f45a4b8c4beca48a3e141ff8bad8330741876f378bb836357aeb181f9427a99f7b064689ba05731e818ab0e8346c152d470fb6f550b06d00a9e81a5ae3f5fc8fe04d228c3f6200d1032c1476dda8650d1a5f36eecd407504d39c285d351eae8656cf21fe181aff606cb2ca49a3877ab64e0ebf1643d1db83aa47f66a9f89c664af0ee2dc9bfeb91524ce5d9e800b589a7d40d0af479fd61c543a80836c4bdf45fde65e05f36d3082d658856ceaf744a211ad5dd351428e838eb4fafb32a521ffe93ec1a84224c7a9a540ed02d7bb6fba2ab91407c86f33c2c07f3b72457da7f3929858c252a4efeab8529d2e3029ef027163949f5accf76b6f8873f0c8280727fcb2c151cdd43045eb05ecb18fae403043cab00f4590da97d879a47456c381ff5c29074b479b2ae2a16a4d769c51387d3467c9326221f776ad442090bb6375047ba51e70b887c117ffe6c3da006ff0691f157cf45e5a8bb4c0069705a94cc45e1e864c7535f0ac610f70f0c25e285fe026e52b464791334354ebb7ff1281b24284e1b85f1312c286bdafea278c3bb6fcebadec3a7da66e486c02abc0c803b4da75708aad2ed380da7a0825bb3b280015e80d59a70641d1e03984aa2f70c296489b18878979d02852bd1ebb913d543a521379d9f02201596127b99e1156772a166256b8cae3df6bf2524dde1530ecd172ed6fd7d395512bd5f4f669739bfcd51256fbb1a0155b8a438d3407db75cf97bd95ee8e1b343efa61b0904a540621daf901aa0de9b3da3b2c0db0c29364f38c736554a61e20335af3a1754a891e2136b68805059f12d54023e6671a0614cbac7ed32f2e36dd04596e92923caf7f364a580b36176bbef86428848fe5f57cb116c30145adad181980e4406b9c2d6ee4bdd9ff703b11679bce021824fceed62f00b3ef541a5875dce14b4c038bb9576d3c508dfd24bf6a91ce7b96a4f32a2d8f24c5ae9b6a4a2b672f1ea3e582ef7dc6fbc5cbec1709cd0f6d5a89f6e05912059f7bcb841f50d4549c11979b948a15a424e558b6d49644ed843f3eaec8e5c66dd1592b3cb7719c7c2d24d7fcba635cc877edfb25fbf52a3b7d961e8bd2556cef35f0ae3ebd08bee7b1df6b91375cd138885b7ac2fa0880e66f97598019204079ca2c02ec43b8f62ec1ae2dfd42ad8886c92786348d475af9cc73a6c0e991bb987383eb7d0fb12df8395f2ac54d4cec20c91d26af6e20fded8fb0f58c18f268093e2217323224489150c39205169b89c50f3e6b3938cf96fada3176cdc5cbb243d627950c0a496a7ad2738fe8e331dd0ba7652fb2995ebdfe0f6a047086a41d7a118eb57a9da046da4b274d1f533626a8271db0c2f9bd2f2a0dc3bd363cd2b2c771c8daf9486ad9cef49c100c9302a1f97dec7064d2e19d5270f0ce5cb5917272a74c1d62188c6d3b64cc3b1c02c603cf3bd810128e876ba9e0b15b07c46b34a6844561e3ac46ce4cb49cef4f76f2976af343faff42e67095d7d09ca14c27639acb9c7f43f3e58c67e02a220d174716edaf109d58a9383e00ce14c95a331e3449e7947af8670193d64a8d91eb05e1790c5f04b3c75ed50a549bdc5f2c2de64b20e5daaa7131efecf4f8ca67584614179079ee0b9653c1326ed690f3fc8ce230c9c88134574c57eb2cb81be2f0bee0b7095cd9498ab790f683ef16f29113a9bade649774655f71d1a780ecf2540586b53af3e61d5162a3f02450c0312a8ccd08bcc2cab31ba5a1ea6597194ad9be101a57639f8353ef85ba96996d4d3e628c97ffcf16a89c5d6b6b7259cce6fcf5ab7e78a39b70541b2b8fc7167fb661871b9169d0c26e6817fb8babdbf82668a4d4ddf55c2b0ff5a62f62c081a5aaf2be2fd1f9af23f200fd591890767c2b37a614a33f9bfa2544938274a557e0387f5b15fe7a36985e7e00d8b54d238909d44a6964f685e0fb117bd20ecb7e830d48be2339c97e4d8b78d61ae43ce8e2d01b057ef132ab740f88ac0f9c46f3976b15018df1020289d95da7d24a2fac10918a5a435e371d70bd48ed447916af0d05b773b1a8d384b50baac0999113551fe3752822f2051dde9141074196b62524a741a6bd65477372041f445ca06adbc29f0077923a0217ec5f209dee30b040228289868ba46c453375c4964490c5336b2eedb2c28eede150d326de805a159c58b4f38fa7bfd3d55337095974b4235cbfd9de4cca7f80880f47b2d4ae3a1492ece9b051bd70137e4a35bbf1851523593a184ba8f98f8fecbfa71701f4d42bc5c592e57b10ce0a1473afae230ec8657770dd7783cd7fd61d768302fe0aa52221361b07fd63016c1b6ef950ac3e24f5f348b5051cf34296b9ffdbca05226a613445e0984261ea08b56f8230cd7d649f46a6aa87d11396b4f36230edbeefd7eaf840b06c95e5b2fff06dd366a25348f9baf40934b1df7cc347de0f926d946cd7ec3bef7ccd94f9f5b137f80f9d7de0a154efeb7b4c83fc3a93a860b010514a65085037eef69e01f41b2773c0825d3f4032365aed81c541925f6b813d6811f77b2cc8d95c3db6aa1aec4a2b3b1a81502ca764716cc9ab019845cbdd17fb44b8726438f1ac166097d28dd7982ad4004978e3136ab8851c71d94b4d2f33d97eefe50cb9269d0346b2f0dd50b73a3c4fc3c25fa665e23459a0527af90d2dd1b4e1163acb9497ab64323f0807fe29cab34fa27e5317a63fcfb9336e79cd3313e14edf18956795a380442ae39463aa0c23c0708d5ca9c03ba712e62434c5609fe54040c36e03ac7878ea89abe69f0944efcbb1e899d9debbc28d7801a7eb441aacd3d95b47ea48a82ca3aecc4e78d76ab0d6eca66461f861f66b61b8cb71a84f5ca0665112f99918bc971a39531631b6d7e554598c4735c3a25eb3cf64ff29f14987b3d7e1a74390277a287ae1edabff14bd016eebe023d8e4c7cc016c07e5bd9793aefd5ba949a40c5798925950298d8bd2675de460e99e8a6942ee95ec7b3faa52b49e33e510c6f0b499951c6bcbafbacff2c5dfe2a1c94361e428c0a80658500a88490720385ed2f27a968df7469f311c81d6b705340ea145e8975f24c0ab53848afec2e7945304dfa49be99ccf59ce86160b711524a6c6a8478aa4d0d40ee3668ed91e398c67bcbee42aad8bb7d3babc5d2f86d38ad010381de54755f612fb26b58e26ac3d40e029d5feb52e82eb3e627b1f206dbe9ffd478a9aca161af1635d9aa7d868cf67e7c6f2d490528df8975ca6a76682827618eaec893e0f3c59f90d06ec6465d733b696ae52addecec78bf7af4c930824d22995fe15310f1646b69fac0bd3edbbc6861302039b8f28156d7f9d4bb10b439bee9ca3d28d50e5c4afec6cab345f5ca311889aa5cc5b3c51903c34c36e906b1ac2a8c9cfa0958bacb753ca917a70a18bd45bbca5a89c1bcb47475622a61d8bf42700fa91cfeeae54e50a4293d27ca15f7f78e22966e598168c8ed679695564c6762fc7ca069b01c5fbd167f60bdf170bd05868defc16b479dd68b123a1cd793b19b83a0b25f3db9dcac55533d170e30ab73f305318e32ec2a79c4bc7f23a1ee31482f5dc324b52e9fb8105ed64ad13599a812a2833bd6aec76e0e3d565bed153f1e9637e42778feffe33d5845580bc9296e578bff8e4262aa819e9b8fbf898fad07cd4f1f4b61421d45431d3656cc427d2946adb0e6d672eb17c4b69b1ce4c5efb6cfd2652d5f6f51cc6924e62127ddac3107f0c7fbacc7e4531ce0d7c9a0ee874a82c349d65dda6c46e425487a18be08b3fa7712ba19aafe33a928b1e50aca5bdd977a0862a1135c0d35b0935470894015d09684e481af08295c668c47002e4b92f1d26054ceeffb2686c082df90bd2db3601daf4f3ff139fe29317b48abedfbad1233a3b4921bbe1e356ecf6605c0283cc4e801eb2ccd4f54d67cef96272ab647ee6ecdf47b3dbd87b6395937314e41879edf00a8f0b87a36698bf257ef85fa5df18ea89fc49239b7c7cf14e393f77d477a1162ae28c844dfe3f93c2810b1bada42c25961f9732e63e532d6f03acced698aa9d45cca27e86208b88ece37a825020722bc40d8454288bb46ad18e13f9a6ff73bda7628ec1d43e87d6ce4d635503dd9c60365b6436232ab5e6b04af64d95dfffc1f7fa2d599ac44288df3289e3e94312c0b92aeb130a99890057a94b6191800258507eebf013c6dbe6c751fb83d647eb4df5d6856529a15cc4c1e8e852ae789026f799b6b64515b9e58f9f9cab0a4fd460c072ae62c4f42efb41c89efd0b78a549d2f4d3d6e1a29b7a7e92d81cd0cfc957f42b117f0f24d52383a88771473a9b6d297acb873f90223fa3fc0e80e38b7a41f233a230d49a2710ec42cf949ab0b30029dfdfa920199ce193623c35a78b15ac2267cf8586ef09a5869bda9298d0b77403473537ee09ec1a0db96da1875b86cc320a786ca4ffdc2d28993522a6ae273b01b588843264a063c459153b3ebba97bcff790f3501904b609ea6a07751bcd8103733d4a46977000fcd029863eb62d1fdbe54358c78b052437fae225cfe145961ce5f78a40575d309f9a44790b2bcaef1032228dc91023b7c1a77c90ea9e65c60044584453dbe7e2dfe9440ff1f5951ba649b8245c26bb313f6dbf3940e8584b0edbbc95dc36b0ea4291f7e65c909f1fe998f3074d2d2bd1b280d1c927654cf356a8dc3256474bab4657f88b38c6eda1781a83931e2b7558aed199c3fbe697a0d3f1a3c32fb3c75c042234ca29d9ff42340e81759950d4b489034f846c4ffe28165915db48cb14ad4e0392d7e10cedd1466c7d52da3de33d762215d735546651a60a648e776b79c7f37c5c37952e92c638f612120269241624064b6a7379761998d455ce2b5054b13c0b544ce6214bdc372ff07e4403dbcd85f5d3b9d9de064ce737de99eee7d061dd61cee08bf1db3ca46b9b3b3cf13b30c38f04a3d1b83d4ced9aaba415a53ddf04c66f31efa30eb33a008f1ca067b82b68854a8da3824230be2934a38b0605ff212613817ebb47c1c07f499dfac1b7e05b8df80b846746939f0bbc87ad4fc5bebaa32a90ae0539c691d0b96004faf69fecc9e27763c63e9743a9bd8b640d7dde0642b785f56ac683608a31bf59f82dbbd40c0a58b154a6cd0b8778e45f31cf8c51ce858eee6d8b9206496e0b0269c58838f943dd9709b000b5022f149e3f89adda4d783e30ff4c9a4a0bb84694888a270ebe599555c0f39021defbcd8b8749db15dba887c04508a7543818e4d678bce908c130d139e3f5a66251a02b17b776bf455d0142c983364b1fb8c2e8fe19d10c7f030bf77a7da044f2f9ed501e9f691c54bc9e89f53258b649736a0c7327aca2894d802365fc7ef38d2a4f7010bbde665dbcc3768e6c95e1529a4a8c09ab0ec9b4b1f84b0905d3c583d0bbcbc7ec18059c4748c7603a7982d5332c55ed1778b5b58f53ceda3f30eae3b4baee3f95c3f833527212665d15b00c24d6eda4e355b36844f02b679c569e6648ccfdfe0e931b1e1c45d504cf4d5843a7e12a0301c250ed2396efa2d093daf0281c1750df8a37629e6548d70b53dfcc15045afae73506d3fea5c406773352ed31df7dfe4164e2144c4070b977f7dec3e54c174cb7a58bc20f97261fc6774cd839a2181dba05e47db9bc723b2f9f94274ebe48785a0e33ed53a13ad0bbad6552dad4112519a2a1119c4190621c44e484674f3745065d2f83200a48d30e6dd276322d5fb4a48d4c6580ca05a105c1940cea9025b1506eaa83388eb4b8c617aa3a5c1ea6e75d46eaaa6c45ae5f832f7a31d9c5022a01936dba90df2f9c0277057096c0702100ecc6f6460092740ed5e1c18461b3c4ccb02a545561aa1e2fca31310352fe729f428c58d33b974fb37a7f422f02ce85c3bba139537d80807fcea366da0a279aa668f20d254878af85af4b59d48ba082e23319a5b9eda2de4091275a2e8645af1d14231f74f09885f5860356fd6d0da174b0f0fc8738a78d78a9dc9f8231e0bbce83417ec3029660c2483a09b14f81159175e32e81bee13daa9d21e26198323dac7d35697a089f2a9f43d892ffdef34f6ffee1c1668eada395ddac53de723afeae13865a9ee50fbe80e4535e476607ac467efb4e6b010866c3436c0d932b10ad70d579e62ef76da752a6da391b816a6ac30e1c2d29d9adce5eeba4cfb297b9cb22d523cbd8e52e2ff72bce8235d133d6c0ac5774b6a88a2f760505ebfd228bd469cb7e90109c65a8028eec1d0ff062190aee83a411b83c5c2b60f86b0055a949866df45d078381ee636088f4041fe06c0db9a01df870b4e9403cbd28daf767e8e14902fea90cafc06d0c330f656e5426960cdc2e1c989105ba319ef6ca231cd30487d693d3ffcf34eb2ad9e88b8a82f30a231b6313bb0a7cb399b0a62f430e9540d1b1d5fb04e3e3d4d55dd9a6e521ce0839e4be0f44bedb779ec6ec8351264871d7ba4e57ee76258f6e66c553b1ef1cfa9253200ceea916d013032fe28509ffc6cb3b206f811a118443e59d86392fa0d6bfaa954557dee821a05dddc176a4708bd31379982759b01087a219ee950a91ade5c25ce91653cd0944cd783358ebceff0b7643f5e5a051f23d25127efeac0d52bd33f7264c359cc911bd245a8c318c2248552684a143ca3e72b499dbcc2cc92769665897cb61703c02b777b629c142a6d79abd997e31a85c6c9d537f25d261ef6451ed3da1c179842b49423a751e8d7b1889caf4529654e06d8e4b529033a3f8e019a4ed571b9d4790c23f25a4cbf5f8ba9d5119fc9d407310f4e883e18e09cf8838683dfa7d10923dc96a7e763029a21d5fe09e324ab86d9a1fa77d634f055277d9ef778a31cc954df4e3699746eac3633a2e3c66d7d1437734b7946cc12273d6ce7cad102f8d37cc1788340cd9d28018109a0153a44ff047c644958a3843f9719d0e931182ce4210c60ca26ca0da031873a31715aa3877d0ec67a58ffd023402a5b8c04d8f39e57700666c1ef89e64cc0fd3ca75cc47ef62756019fbb7b61a230e67bcb6b6308482a7eb85ca6b88b05a20ae63bc14fc4f7cb344d18e403b070d578e55cd00b04e00af47d2433ba6b5e89cf02652b384506d8f279b40587d984318f72240da4fad47b82f7421971160058aa5feaff6642411c16baa9c027aadbf5b7311d24c25da077781a9f29c5574373a2cd452e9bc106388813503ed31a28a282913e72eb0a5c3a844f3c6e8a6f769711d9b01c488e94239995743397dcfd9696fbe663e0303ffee68d2459f1e9a8068411ad1a109275adef750fb48e5107fbd4482692b27829f6930f7e111d744401f063f5c219d5c797db2b7c104dee269d0e57da3bb2a3c283ca683e2b299643c1a5db8940b6968fb9e5a3926f43a963675aafc94fff6293a2115b2109ea5cce16293eb8dff725f837e512a92af017fe30933a79f92f32ee4aed1333c6f533e4981075cb0cc1cfc78b284f6aa582e636348c3243289766771e755b643623079bfd89273e83d4f0188b91ac769ff69b00a8bc337996ac5818b26b39315a240ff56d93c5373c92fac7f6163e8208f4821634d6ddfcad93a7fb1e06a868240bb927419ddc41add75ae60c2dc0aa5e9f593cffdbf553c24ca687b9c4e01e5350b127206a69e1a2f550cc945e6fd2a3efa4c3b4874bdca0d32d41e8f5a6b2774007cee8343b407928c955d31f8357854ec0dd4e35f998bdd52b64231dd46ee1a50ecbf1e411f085a00fe774420c3105f053388400701f59284ff4bfb2dc4b5e7f95a40e30c34a85e27091297b5a9c7309add7c0009feb2de1d595138ccafd266e619fbf9332f40ad389741af3b3a571e37981cb2cfaf5db443a8d74c0575e0e73e779419de106ca2fafe018516920a106d1360a98a401c7e987f674133a1548145e8ee1c39256dda3bfc078a6b380cbed3e926d8fc9c52251c078e21e5427abafe6884e151fb12a89b518c5de97c5865dd9322320f0cc85c002ff179143bcb644409b7e6b6cf1fcb435edb27c1e8b5fef78a9ce8d1bf2bc218200e4919f413bd3811c5cf3a01601279b9055c7380c512b18d4d55bb70eec868a118c20c6349b4a8828deaaf9b8b0d133a17c9b54784944653ea064272252ee969f09e47ceaae6f2a6a47383843082233d99eafcbf94e416f439bd8f177fe729e2c86958760f4fd71faed3612ae9bca977ad79ef5ed60715185455382f6262c73fb121e4bbab1a090c7029bcc0d472d80110c66a0fb0631728bc23ef56a333f04efa105fbea04c8cc1020994480b5920d677cfdd95cb2e88ac77331df65c445b259c6c2c1bfb0ed9d6714319aba466fdfa0842ccb3709a66935b80e31751c96b7fbbb2d0e88bc1d4ce99cec1fed1540dbcf0743a88b377c0aab5013e3558acef02a572b41dddb55dbbb6c1d9c40c1483da7739627f533251044ab93c3f5fdaf211c1cf4100b843efda15303de5af3123ef260c3df64a7b21d4c11dec4eb2fe27489e224bd08a4ea4ab03d472ad77b7d966ed8c89084f215bdb4cdde5842afd7fa5f89fcf9aa0c9a6aa17b1ed87c39081f53ae8b139dc86be6003b03ccbef7800b1e64f6947a726eac50ed353ca657fdb1d04ef591a3c5bc37bf678af6d4400397a678329f35d2e9c496d2fe650a09ec406250dda01289e7461efcccddf462b6c24b32af5973e7f4952d2a75c693938985aadea29369e6a6cbcd46a2aeffc60e774fe8b00821a17f7d1b559b5ae9e4edb37c32af653c6c13e1d8b9fc3839de55eb6eea0ce4cc899577ef66ccbfaf378935a637ce76d93e54db767a0f1a30af7e4ebab996fb011639a558d1845c461aee16ab311b98a0406cad07d8c24c54ce9a330f683bf78314692026b90e35fa91da8abcf63ea94f5785dce60fa78d4e27daca1869acd0acd6e8a3a83d9b6a28f07433249c64fcbb1cf68b9b7721ab4fe8786af7bd9a724560e922c22c86f0c3482233f3c431a9faf1f1c782f9ccd74931198fc50ff338f43610e0c892b32382ca4028aef5a84eb907b723366a5c354840f8fb3e52493fcd0aa537acb0fa9ef3b90e48557eae495d63ffb1bf2a298d5d9770927741ef333a843390dfd1ee86d162744ba27dbdfc7dd1d38f0bdaa0cdd9385c0a863a30cda42219cb06f6d801dd6922ea2d2840023b024359b219691a8803002b82674c9e4556c922fe8ef6e8df59a6185a36d0fd9b9f2cc73ccc9b64c1394a3fc559d115b281519820962d4d6ebfc2859d58800f037510662b19fbc2c44924dcd255c5560ba9b50fb571bff8eb61ec76893ab661d9f4d3c289416247b922af14c206db4cdc61285a7f9825be47a7b41601fd2391354810c990e7b96c8e74305136dba8dbc8eef41f009a4bef3ae550a9f5a83fff2b19b94256eacfefd6f66c67ff9f89b9db5fffd261dfcd64057e7bec1d10d30fc09a58d43555494e0b3234cff4b471d5597b1a35a49b002514018ce1adb7c6e8aaa4761aa6d68f8624ec503337ce36a81974b5f456be7c1499954e0cfe2b4e20687257c76d3b611d1c9bd9f6180a4c4ca7aaef88e388b825c04db26e1fa0bc96dbe8b28d74a546ddb3c80100540842c88b1eb5feba904b447a2b2b6251fec3d4b307d3976e57bacf823eda9d15c6340b6f27d7a63ba844011b7afb122cdbbe143049bb936655e86a6caca2fc584453186988d4f6339cfaae01a875b1e368600e2d949839ad2ee4c0c2a5d71bcbc57c40647056d23be87d39ac94b47e1633abb904d17804341f3c618ee12c60ca82337bf67fc381e4875c94d73e4717844a3ea7c06c0f1500a1635f1a610fe65c724b9b12a18f71b563f8430b2721fab1521dec9d1572da2f32af650f6b61fbb1c852e7a3e0ecce19938a552d4e543c5389dbe657ddab67a74496715b26443d0a5b120d9eb82443259c1ce0eacdf3553ff50e435becb4056228e6186c654e86374f66632842486722273f12061b97b89fe285c9644ad4768216606c57604471229fa1d446dbe8308d705ff9ca0be529aca47e1979391001516690c6f8c1f164404b8c01df94f0a7c62871ef2474abe669e985fbbd510ed36b24a7715d7ed453a8cf74a084e6f6f29b57f363af85bf63d8538a846cb398d2d89a4a550b6553a838e959a0910f185d95dec8a7faeeeb9347fc397abf328a681f850e130ce805fb9402b26c3e63ab70965689ad1ee7517f94373f075194214c42f5fbdb6f97810fa01ef1d128063c9cb42128ecf6a43e44bc414d135abd3f280a1d494dc23290d9f707a754281746ddc6c30373b0902c3adcb0a419829b9a6816e24f2d22f501c239b1329ae5eec707b72f103b5acf8d2d27a8545577fd5c5151282b409a593faa949d44b48ec4faa697e2ab181f100927fefe082de65614b82fc7fd8f1ceaa76c43506f0ddda888fa33cb4ba0d7e974d6579202800b59e311f946b9c6d7930081eaf2decdbfcb59915c04684084273bafabc6509911dd516db283bda828279a6be06d1e3869eb2f97dee15d813b08f0b285e1a8da07f022ea139fcc7a63ce90906e4e2bb619d03008962d5a18076ff83a20781abe42649d68f6de3678c0bcdeb6f617f88a4600c08fa828767c57722d94bb51ad4d278656bf9375a9853572bb0c9f5e376d3e131b3290b5521ce66f73f6772467108f27d2b96e517bc58d1b4a7a5af70c26136ce56ee160edece095c0b718f462be7c289eb034539ee1465716754618a114a91917a29825a36ed6c95af00b55d4dd5e8571aefa6c434c5abacdb12e850bb743ee151113d080d720b6173e024dd51111d6ea90729d8e45b28d392b1b6a78e676438f0b22cbfede5bbf6fb2c14fda83938d3ce08065006d4c77c0d5d00a4c74e881e86f7f7a78fd1be0003b18d858d74e1f875965718c732a8bb565aef1de7aa594d49ac8e0054252a149096dd0be715c92a99c586084a9dcae22b6aae209851461788b6e5fe5c813a5476ac8618f228855121a280b48b13d53ab236b048d4650a1abb026e4e0b3ca2e27b9fbc1b3225951c995bced0bbc539525eec490088473454903eb017c230f3ec188da62c7da1dd9bd2e57f77de5cd173fcb7dc9b8155e23883101132ea54212a5cddda96fc0729a190f3e20784274da86c957d251471d432333171ad206ac5695669ca926c0ed25e92a29c602f2dd83fa610a11ac290070c3bea01cb993f09dd3538f1d681e3d008517a0a4617e904c67884c84577e0ef453959fcae00bc40a9e82af201d510306e3ad17b6e303930a0987b2e103828df5c8292de24cc24236e423374b0949275a5400686ef295db760c2af69b8937c540696e6c6bee5d8e80462be8829ea886dae06b2f886b81490978e8c49cb1ccf2f9c99e1c1af42f30407a318b20d353430391f3583de257233ade3d98aca033470c07489c0264958ffc965d6b4aa857126e165a14e9f49158f9eca51bf3205a82821132db49309f5e42767ad8445f73343b63a3a8b1976dce244d22e0f4a0878990da39f1385854ed188595572c6784fe9247dde310d0219805284f261d6a2af1ad23db477a5b64b49e39e6d9a76b41a424eb026192e547c59f456be00e488660d9181e3249666ac958f4ffa4c73f08d5545d16d0656291d9a5b91d1fa94ae5286b735cd6f3955243f0335a397221a640a9884158c2b59c3aaf5fe8a2287470682a2b8138e2017bd3b0ea04dd36e5bd3b3b5e827ca9415445e5efd382ba14b8b5c3eac3b6cc376e01f32ddd66fa20c188ff5922fe663c2661fb38145dc841366fcbb714c7cb1fb556c3e309ff6675030024174d87c53e800e605cec5811eadd09ffe344477c1f34b69a20c1238f47c6c4c7008d8efcdcaf8ad95758e0c3ce50d01a432046a3127a45820185aa50369075e29b3aeaaed0141164d33cfe96254b752a4873b69076d43a0ed2bd9bacf34dfcdff3cf6f4628eb63e40300f7ce1e87264849e41a53686388f143690f2d956b8010d2874aebf247b4b49b6dc724b99a40c410a740a0f0a9d18dfaecadf7499b06f36f1ed2df953a572a79452da21fbaf53e2503dc4754a38ff754aff19866cab7841ce00d3a34b38270cd63e8960ce047e50c41484a82cc10c32608e8e2454692248890f52b078d92a5e317830640843036e184183a5d7cbfb0c5f2d4c606c8108d02d44715d9c6459a57136c5a02c4fd4e774fa0f48e833e8f49957847ae6643b177fc9aae67a3aef834e4f2fe90d25e04f1a49231844762c3c94e2042a5f43808f11e27d31439e86d7441724c4d248b63884385f205199c28414969052e585f28ce341dd17e710724e63f280a45b2d533048c6751e8e32704ce7f005e3319df77a71a30c7b1f4e79521a41ec1d8184ffb69975804150ae09bd11e8f49bdfbc43fc0f3ac5a56f6928af421b4de3a15bed3a20c9828d64f6927f7c58d1448c570f99125a18115100848df725ab1c26bbb8dd8136ad43c40186529c10e5758041e4d1ea070983e1eea5d10f913b129fd297fce3f9e00445bc7ac8721004d2ebc561f28fade2d5830acbebc56b32a9471f92f9f4e915915e8c0e310974f2628ec45ffd6a3e6957e5cc256749d2d546d2d550a451b4d2401dd43069049d9ce4139994296549d913698499645be92a549834fac9239747d2482e31024be9edc84d6e28ef88fccd934a604f1e04dc4c2bc09d244bb71a070c53c7118429caa1944ad2482ee9568bf1c922a52a574c543c86bf7eaa3a4f35e0184a4d01471c3fe04f470703b9c10135a062d0bc0b02ae0da4718e869e000f634958f14aa87e92415e67d9be7efae21224bdf342b75aa73d32b5c7a676a9330574b563215b58e6c05777ef74abdb65b6c0d23f1d9c0e8876a941f74aba3e8c6fe24d96296e26524c07338845529684f1d55f5981bd26f2a88c1add42379ad4b0b54e89e2d920b0c0860d6325c59429d4b01eadccc3d851119e78c29422b6046dca176e74621ec68e78f0351ec68e9698c0c61baa23631691b0020c1db5d49920892766bc8752984889318919fcea638cd15b32a7975e8c9478e9b3fef0d22f7cc1d00bac08e0a5b7601083975e730383a7970e64e925fd0524945e4a97010923bcf402340e7ee9449040c24baf018997095e3a0e39b8e0a51b691c1d967cf1d291f030f4d27f3a074b18512c06575e1a01c66400c54b8f45329644112f3b9d78248fa20c8d875fad39e8d039aa3382c8c1142290d1a4821705ca58c1d118b1130ce188d7ccbaf8e9f168c94f8f4c9ec8a4a80483441b9d6081c109927e885de1828b9f2928c1cfe9f835e70a424cf104193f44c164c46bca97f464baa55a8900c78f0f1f7fc57289251884c2a04df5ea15e9abefc89cacd6d58bef9000f872f1cefb51793bd02b863ad00bc7508f489216a70161bc7318af765e5d7e465d9641ba68337df5af838ec433aad397ecd2a5cad825afa4ab5abf3148baaab7d7243a7ccd1c611a99064997504e51a2af7e837455efbca5bd6baf34bc9f1de9aa9e4a793f44a4ab76de8ff773235dd571fb77e3f0b5543b6f0437bc7478b517c379d56b8a09761a04ab4e85aa53a2da55a2ac7a43c133496949e600bdaa4fa6d9547d5ac99eaadf6cbd4f2e7d754a549d1a55a747d52bac7aad5f3d7aefab465fa9f755a2afde40a8b4ef142c9cf96053f5ace62602f4b235d3bc13d33f31edc520807af5ee1bef4747be5652f0f430b491de026d64e699b757e9caaf26c9c4dae851048610d229a146a5ec21333014941e31f4ed516247307dbbea06af76191794e0db675c80c567f1dd5ac48c90f25d9b74d1d3b7cf4682a71dcedcf0ed3066ad1b29c0d2a5942d393bfa57135190212505c5aa14dd9389018410092241a488bb954d514a8212a302dc4cfa2836931b2890111693c016f0d4638e412b06e17c7109f5e85aebe96a1573464db7fac3ef1a90d6cc91f8d77e377cf43e971ebde6e6f810da192430aa46e77a4f17a748d6460f1760232da7feb50c90659e723b73046c7da71b40e990f89957848ba9014ad767a4f59da7dcc53befa3ce791c889f39bd4e336cd8ddf574b22529bf91f6516e26bdc45b7c7318833ccebb5e46b31b29c03754ec7db8919c2039e12f2235559c278d53b51c9817efbc985fb22aefc82ba1fc4ad359f516139d3afc39bdc225edea3b53d3339e3ada64bcf046727205d662a2777c9a6362cb0738de4001fe22d28b37a4a88714d523262e3946d9d230555c6eaa46ac88f3e1c1d28c0adf7b55323364d8254ce361ac4806ffdd2881efc358111152928092b4644e49e59c30de8a7bc66e57b5ab7160078188266276e361ac88303e168de0a3f7ea618c082968d27b182ba2499d4550f1d1b5181155b68e151144534a694629a432deeeb3c03fd976db9915058e0f6344507922961e7aa3703ade30c21f0f41bff9e76f63379c31c23035036fdde8d0a8e2c22012a27c9336b31635d3ade81fab749c18bb33212282be8587b121943e36c493eff13036840a7a14816193449239446e627418a151fc016d621253b7a00e9e77a48c10fca003b489bed33f3efa8f1c0244f789ae030f411196054129a594523a2d2a6e559b344b3959edc20471a5943641dcdb385de795536c60c12aeb7269702d1d4ea570d7c2d1b82e56857ad9606a8d6b030bd6fe9b36b060fadfb4810567ffcdb78105cfffe663c1f2bff936b0d8c082e37ff36d60c1304688eaa5ab5e7ad2af85a8cd7632363d927e55065032327abf7cf93142b4971ed3c3e365fcfe7e3ba59432cb3ac26cdaee03fab919a962a454422bd4ab324fda52ba0cf0a99557492b5fa3bc02770bd5f37aa494e255966d9b47334f05ad3cf58c6a1a9d9e4385b58a52511806919bcf7cb504367293f45a961ad5329a51cdfbe2eb7ce619b9f9e95d18c6d724717ad43c66727a4c2e9fb0994fe9dd349352d5385a3635c7ddeaee4692fdbc55fb15966ea567de0ef791643fbdea4a5829bb3da3126619a5a88d7a9ea442b39945d949a85715a594523ae794199d0ee794abc9041bdba54389f26851deacb14e2860abf230e7cf9441580883348452ce987516671665165b950215df16e58dea6a45577756dd5c64a1a2cb92832dc82a01259382044070dbaa37dc29b02eacbc953dfd77b325c106444effe1ae064449f80f265923107d81574447f8f619bcf2968731a22a7e7b182352faafb534b3c488609f84757fcd8301d69ca678a2c32c6b4501d2ae2cf3bae19618638c31ca973128a8097465be04ac079f79141f99409b4c0b2a4bde59d6322e65bed4b434bfd6127b43e6ab155ed2344dd3b4af9ad799df206b4d22227109f097f560fe427911a9352f328902ae4eb3cca3537c82afcc7b08ca67de448da35dd191a9870768135128c09d79abe6e6852ca394099c3f7efcaf1a753e5898cbc019f490c01f2ce3a3377ded9b87ad93d45292aeeeeed6a15b13264d9973010895205c8a90c908b49931586481618c88e8e1c318919387737a4492b562bc5a7914aa15633973689cc903b4891ea817cbcccfb32c3649d1a0ec5a69805f1ec684108307d872c1112dc100a79eb04ab853e21ad500088c7a1813e2054c420ca102218486080123d2ea65c113b2d9415fd0e82123694a8da628b5e7e988054e704f1930201cf100d37828c50826ffdd0c19618485112ab8533002d631815558ae11c25892050f8aa6c0a414012189221f6c40486262ab46218c590b604d09438921a684a104d1ebb2945c1610d8fa2d62af463bef5adf6c91ea9aa6a29e6a269b433258d5adc6f136cecc341cb921958698593ee0c809416195cfcd4b8fb522428441e29c559b73d22331e94874227a10d67cd32ffe3873bd9987a51576fac42c467a69d03c7c31cc50a23668232b0cb7c3186df481dd9a7142d97d0af82cf38bbb05eb4767bef0815f7fedd60e47e2193ffba317d961e739407700fa28955825c0d12b04e377700ece8e11660e33a736bb59d4e49cf5db7ca7558d336423f2d5a3d3abd7a8cd7ca1f9f888e2c178cda91276629f3183934adb3f3b47a9a166eee934c70cf1b0a7ea251643a88245c0aa6e0d3535a57e809a6cf8d1212828a8698a9c4b3176bf40ef183d1b272e6d31639e627412d4ed1c2346eae5290686312792fecb816500b2972a448f3f1148cafe018c020e9ea00016a58b21a2000c1185134a64604484113c2109c80b334a80cc1bf84dcf96117beddfb4a7d7e8e118e5d18d448285576648a1bd3936834ea76f99a3aa3bcc9b34d2aa2ef367a4356711cd35afc8f48ac408c97c7ae630f32413ecb66d5e555ee06ddb360d0354e88b6c79cb5c22e089139821f04a0a38bb5fcabfec27f654c6d7492ac76f5982bfebe43ab94e8af0779d5c278d035bfc06c99c16efe68449f2d5e2654dd2b5f96af3debcdb9cdbfc664ebfb9dd3ce91ccc126d99ead02dea219993876e45a746b909f8a346468d0361d24d4ab5e604fb01d807bd26b72cc15fcd4fef95146ab78ccca7875a8e4262dffc6510528afacc7bca9650b6eff407f4cd73449e71c6c47d7ffa3443f2e0db9c4f0fd16733539201ad20c20d6a908357e79a27347851e103299a5e9d6f9cbc3ca31a40c1e4d5190fa189578d31bcd0b1240841afcef0d51982314418af9aa21f38bd3ae370e265b52bb3846521c4518cf28393a67641133960825b6069327a75f6b298d9e249044e595e499c20e3097765963e78c2084eafce10083a78d94e072990e2e8d539b660084e82a840c20848afce36082fdb72a78744e445945767fc841cbc2c0d9cea38ee722aaf7354c1108498b056859b107ac1f14a6c6292ae25e9825632cfb29c08052724393031c9105ed2a3121c6b22289bed2b2f5ee2f8261cd2657c28e3823842e0aade4c8f3099243056e0cf89667290399a03112177d6b981365be095745fc1ae0c0cadc41c79dd6e21571ee64b3e7942ca8641627a5abe3da6877e7b31425ebe6f87487818c643311e3a8c2e74413596b0e6d3738041da55f8f6e00749093b4e24fb64dbafe0f89d632afc1a5b60d8adce48e2f7a8f05670947e44084ec0f4b2712bc195a7996e7102af642543e8e845bd2a5d4d7fac125eb4678c1192cdff7efc056210bdb26c95f06a241899b082892594302103264eb04419db124940c59618825d820737b6840cb8257c8839b11273a26483989321259a1053020b9512523421d66405b126218831216309312647883121c2d05092243564805798097fb786e9a6c60a1b75c05ffdd6b7dfc44662718cd10f63474db038ae44086de00a5a581c62e0e8770a0faee04195a36d0a64f2448cc913d6119626472f250643ef01f8820513d87f33c60406ffd5afc1d37f0f634c8e883121821e1396c476900500d2a38430fe8800d0009e0f935850850670f6308905533ef24042072bd0f1305614451425ae10998193dea15799038343b7db93c69143a24bcf5ac7810387536ae399c708a19edd6002fe266cc2a692c699711dde333a74b89452ce38e47874f84e4b3903fc1a879c8de7d9e15b1e0e391e155adec7c3b77c663b6136363682e4c85ffc1cf8421b5993bff835345ebf718e39273dea2596f670eaf21e0ee10b307ff5388d47f802acf5ea19408fd378f770f5641a5745f8eb94689cc6fb5c1e1de8bf0973e526ea56fc2e721920becb6b9adcbd8b8b0b0d8d8f7fee792a1d53b7ba2ba04d7b4a29a5949a0283a4525daa4b7529fffcbbce2da6e9aea0c9f1b37c4b733c1d0d8def70974718e403fa1ba77108832401f3d73b8d37c401e2341e391e9a77e56e4ab7d4ad9e019e4abad5ea2200a48e882eecf0aeb553eab27466f8f0f68e4ae3fcf0f6aea9bb020661c1db5346a927609015eae6b073361874014371eb7947ee24c41fed18d7faae1c3fa5246bfd524a5f4ac95d5e2b0120c70889ee7297f701f192781f99c66df428e287db79dde537ce8203890931791ddec36dbd3654fec5a2ef1eded3a387c6b33db9c77df28fcc19af1eaf098d5b9a9eec93e1cb6ad747ee2534ee72ebfa41e33f68fa88c66b26aeec23f78fdc47b99974ab3194eb1becebff30946f67c16b2368b3429627803647e2197fe325016bbddedb90dad59ef9e89801e588d77bc6659c0d3e2280c28bd73b8ae3d9266c224d27f3090c423395c020fdee5fea6938843b68b4e001f13e0780c782f7ad56f06ebc0ffff05cde57dfc585862ba504ecba3103dcc3a9374d8a087f346ec3bf8e4646d9b551a74493e3774a8dc37d7b37a573eab0c870329c8c7fabe764fcf3e7649c731b39dbddb7c3d3789d15c8e3427a880cf11e97c13ba417ef1777ef4bbdf88e0ec98697f75c970bf1aec9ef0c33f8380c0e399a189797448fcbe03c43bc4ea927774bd2d5ce933b259a5cc3fb0cde4f8fff0653aa2183197866a8c1c767f019bc1f219e8f03bd78bc9f981a7a9cc779bc1f19bc1e077abdf5c9398c78f5641b2402a5d7068b2ef408be1d4618ffead780f10f7f0d18ff565f03c66bb88dd727c3574f8e28a041d3cb6eb01cdfeac35ffd9543b8723b612c6f96ff60f90dcb57c8f12cff72fc376134db0f30088db76f301aafa780364de3b512b4e9cf313434de0e36c4e03eeee330f8783f31343e0e430f75abfb0ab4692f86c6f3f1b624dd42d3785bd010d8867f13462344e34d2524c03139bed37d0506716fc1bf1c3bfead3efcd58f71087362bc71683cc7c75d9fce77f3b508e09f0fc0bf95005e70c17db81089e28ff6eb165f9bfcc5b7c171c8f1ec70f90262701e879c0d2fef71c8d50083f3783f30788c0f87af1f99335e3c0eb91ade7bbc9f9823f169bcc77fa41046af1e2f26c73b12dfbdc77f565a34e1f4eaf1b73e72fc9efc03a198c208905e3d6c3178f1784d7cb8f591059024e96d5f9e0c5f3e32fc9e1ca92071f4b2d1e53ef20ebf91395b8eeb785fd5f10004c077bc1bde82f7e5f8efe661d2d5d1854e29fe686fc181789f0e100780f7dd00c059f0be160b4e00eff3157c00deb7ba7101783ffc05c8e4c35df03e1a0f927b1481e1d3fbd64f504a0fc0f644ba8ef7e11cefab900627abb24f76e50b6da44f98f4f64e29bac0c11fb205efd301e27d3700f0be160bdee72b78df4ade781ffed1a9975e0f9f711fded73abc87c7c36dbc36197e4d860fb91d2ae4cf31d27bfc1d86fcdee33bd8f0f21eef07c7134b9c78fdbcf7a06aa204af263bdc9dc761f096f7f0befa3ddc95bffaae243eee83bf7a5c4ae7016d685c661e0e3939bd4f3a0f97fb64d82df4f09edc8406da7c3fdfc3693c086dbef93d5c197e2b7f48e4ef701ede237ff57948c13b9cc78e1dbed313d6381f768247de91dd07fccde8f0196f9f699c19971396633cdfa0e8c8315ef6b62753a85b4aba45fd9b301b62701eef8776d18297fff070620a235eef9173cf060f185979c1e091b38101494c1ce1f5be237364f83832d0dfc85f8effb627df2e933fc81493bf56c2b7dbc8df65e5afa7f8f655de21d6d8601fce4bfe029dc3e4e8f20def747023d7b891ab455d2dabe0d913996391f093a72827293326993151a38a572b776af4d4294ce658a17e923928a68c08e3867df6f4195146e4ead142ed7031c1d61d333a361e5e3d7aea3bbc6fb5f2becaaa52cf782b9ef6364e98f2aa92306cd067f94ea39c9ebee86985810f4f59359ab01db2449d5385da45e57663de8043d38d4c6b190aa094650b7000d32452c3928f9ca40a750bd47df0970fff9193c0fce5c3ab43eda2ddc2a7ba91ab121b4d5ea20e489c6af80da9f382ce0db795e660c4ca8d1b3552376edcf08ce3b9b113c307936ea470e42ab4ddee25c6a02431a89354eb564d2be5b666190f3ff069db5229efebc0779a6fdbd6759d4f8ea7bbf90648e5b46d4b795cce9589110dda0693eb510e1493cca94ada45879ee6eb90f3b157684828ebb754932b9955cc284c096cdbeebd5be633d76fdeae6ff75ed7b68b2292391865b4c2be7af25405ef251a2dd9e251bed32c2070a1f451d362bd73cb265151b51ebf72436abcf5be0e3cca6b8955f8a7cc60964138d3b57cd414eb1a1791a213a42849dda2b52eddebd5295f4d7aea9b56efcd301df45b968f12dab0740e5d922eea75cbf234c97f28254f7d53020c62c3a96f4b882ed438f5cda97154b002e65027269da3095101715c4e7d0b027481c6a96f5360109653df6230480fa7be4981416af818f80b272daa1321289a0c9efab7fde0a9572a9da3216db02d48e6fc70eadb51e3f070eadb92c66939f5cda8716e38f5ad68236a9c1d4e7d1bda846a96c69971eaf5a971b253af58aa53e3e870eaf54ae3b853af561a278753af4c8de339750da9ca53afb0c68171ea3549e668491a5355d238d5f1d2d324a5a74c4fbcb572bcda324b081c7d05837c1126cbb7f1c264f97007cd7150e9d686624259b1d64355e941316dd15ad94b57d4254b972cbc94a361d3a4c851a3021212121274e2612326c52831a9878da814a744251d9306362e2bd71fa00d759a5c5db92a119274b5f20fdf78b023b4a1ce02a307cbca152b2d961316a7191d5cf55862ac5aabee76adba9ba68ccd716fe4eaad548a85041e37b5529aa2b45aba6289478ae6d6cc23df1eb9d600da504739b9b8b80bcac9c56b789506d08647ae309617f40994272ac02445497aea3da4b03dae776372c5d86938e47a543650811e3139aa7969a47642bd2585ca26c7d78f5c85a48bba8f0ca54b833571dd17a222a217a325469943407cd9b8d57171e4ea3bb275ddaece80e652989286a95aa8875a28a3f16672cdb9eac8d5a85bd43dd7a26e51cf912b91926c71ceab4bbc5c614c7cd078caf2f4d47fd0e8a04ed2412a685cd81f3c2e8aa8568c572bc7feb5bc0a93c955090d7eb458b962e5a6c5098b93ad9162a72d8fab02573d1b47b87a74557c7b4399a8303d75896353ac72bd7ad7af6ffec5a6bfb7cac942f775a0de8d863b12ffc556016da8d76cafe816f5a596255cab7f76e9a9e7e07afa2bacab122c7074947f15165b627c12a158ea3b5e643f7516db4f66fcbd6e7b5c17679de3a2086ffb668f1c0fe7aea45b34260798a85b54d3bc3ad4ad1b0e399e94db1cdf765104e4d62ce3d449e65821e8a22ee424e424e4f414e594a421c91c941286f90fe5f454137a2d494b7a9412758d49e6a088245d92391609baa8b75aeeab15c61245a431d58a31fc564fe7c3581734781bbed3cd723bbb0862d54d8176a1e4530e6b384ce6a098da459d3a4461ca0518af5d32de66e843c4c6b5bb4991e4edf57c58b85b861a0b0a2eb8d0b81ef9306e7ddc9a595070b1f4903b1257c81aa604660150a50c4ad22dea5aa6d6b754aa5e1b391a36b716c39db6a96b73f568dd66d72d0e8aa971544e1d45a571629c4e29a19457dac8fdacdcbfea87c9f25f327c9b0c5f2ef9a381627aea2d7987892beca95b8d13c2d438b7b72dc7a3c8241e618c526a9ce894e7d6b835b382c030968595ff2c139ef64029bcd5e22dccf52a6bad52a8e550b768f5cd35ffa4d0567d7355bcd7fb3af0d6d3aa679d7a740f506cce74e8dc7c0265d63993a637a3dce0af87a0fc379594644e92265078c2693e3102cf492b75eadaf438276c01027e221a7292fb493eeaeaf19b1b52e3672fe9a346ea56116e6fefa1210883c4a00925f6c49487b12425ffe3612ca9e8838a6272802111879c0c05e8560bb5911cbad5de4430c6a116f25aa8c0414f148b3a072f699c294a88414ad10528050681463aa7beda913c0c02e14b462842e9288d039d9222ac8db698f962e60b1d53a8936d4a0d945a4880bfa6d265e9b26a0bfc49a1975f53792967501209fb8cdcf79e3830c7ebf64e6d6aad51c15f5349a28b2e831a07be1c2a924292a87150dee51fa057e7b07352be79e6307ff5b7cd6bd7d40cb0a5a26bde07c4094922e5f5d064c719b8435281e9d34ba26b12a3d74c7d451098d3dcbaf5af976052e732e5d21ba99fc89c1697de367a1ce10e7af877055ded3863e86a17aca84cd3b4194dcb996faa8b5b80bfd5cb7b27906dad8b971957322b0434161104bd92f8805f4d3a08beb2ccfb3a20a58499706ed1f5d68c062f7225d330b3de386586279d704e0867baaf039f554182da8da1c8b2e833de3740b29d18a6947e030e3970994bf9994b36e0baf57e9a687ebd2a5d09802fdb1c0fad396ade03ea65e3374743cb53c7aa7a354ea3f194da8aaa11daeea81761b3c6209c658e1b67a2329a57dd92d2d3dcd2903fdd923dfd482616183a11a45b976f330f19c90b84892e74500d6d65b3cc1ac2d0a718281b5c96238c8b41d0467a6c02a39e876e49ff62d07cd60f18fe344eb4f9cc91f0806364280018a88c8542396143b1aeb0bc58c9e8bca00346cc13629a6003677e3b8e276bd1cda7ab26f5cdb54cb72b55dee07a2a7dc26c198e06ea5a26afbdddf700ca351739c965b9fb806290b5c082609c5346150d9406e96139059bb90a76c7f6c819004a8f701aa16a9ca9ca582ac0d4551af52c6b994fdf9119a5613aa53e3e20f56416a3cd68903ebd3da342509fd1303d73ea416833af0a2ccb04d5551a4b099e4e25fca8df22d433a02c4627b633acad99a4073b40b9951795ad5306c097f54080b25449a39c5e9ae3776fde5c0f8ca2c7c76fce05a0255590ac1460945347e59fe93da05ea82159026a404def23f21bb51d4743f611f9ea1956556e5225f84ace4d80e1c3577bf4cff18c313ae578e24ac6ba5c548e69070a7a59c9f540307a20d7e3e3a94f4e084ae37c6e34ead1504f60594a522c20f0f458a9ab226b05983a111610589321e3e0d47c73148dae699adfc9f16835cbb6180dc8305df319a0063690e335af48a59bd7fc593782faea56e386686f5de37c60184a0c31a500300c2586887d75cda27c476aa8af1ecaabbe797555e3540b3b6e1ef6aacd6473090bbfca00c4b413a1c1c94500c86908cd8341758dfa9cddcf39a90a096e06a09f2a7c108a209a1e897ceaede4a76b1909202fa6388104632819c5a079733300412006ad9778ea15a1ae01ea6d20c70ea4ff3450b72cb21c9c9c5b6b6dcc9ccbac57cf5c8b1162bdba659d0017b13e5940e02215729ff5502ef3cf08e219af269cf7807a7dcd0dc9bef3e61230445930397911448cb34ed7f2cce26ffd496c36f46b8b41f1e43fabd55b4957e3acde9a65dd990f968085b8c12aec33be9259c16cbdf1de7befcd2c2164e633558aad00dda211e7f8eaa6522ac7179789c840048c80f8d2b8eab1a8c0089821064470522420be70751e9e88926d892b198b7a99ad1a6ba168c26f1946e1374c24e53695b5ce0b2d576a55151f67f84a65f89af7de7b2fcff59a6fec3a16195889887451b7f2d6284b1efe464406e9a264e09d1868cd42e93fd8848974c638c2aab0d5327cb95ac9748ed1bc7a2c2130744d736dc6512e6b4d2b0a1d9f37ddca5ccb40ba956d0ea1b51aab0518ba6ad59ae6ada8c0fe23c0670e5128eb9a966fb732cdab6bd5ababa0776b5bd5284cd2620d014b8cc9cd993dd915b4deddebb67a733e36f6e4ae43aea705d7bb61e3a2e5321bb9ebf2bac5d7ca9d189272e896e5529e713ea98cc35053466f80dc4c9d9a5952c06aad478e670a3392fcf56dd3fe7a39dcd02dea387451db3a8b7a91a1009d128d29909e06e75373ca6d777b010e60d2b6aeebbaaeeb72e53acec5b6cd1d2ba5d7deabf41f6442adb55e9721b45848c099674c4055d5b65cdd42eddeeb9f4717aecc7ce63a8e46409b1b3aa7be626981a37fb188d3c143aee756b7f57acddc6f5e5c028bba4573342aaa5a4b5cc9d41769ed4d794c923937401775d8941493a8a76eb6dd6abbba69dab5b5d68baddb967befbdf6e21cbbfcd5cb73adf701c98cdbb64ae35fba59ea5c8e47c41f46510819016da82f81b22aba1e178ba00ddd0253bf01072dd382e8bfd845ccea9661ccf363130d16d4c09a1a30bc58bac9b181ae9a1928d4f800df4857b7a4bce81016ce5858af0783d4ca1ac22f3035dad5ae0f7fed9c170f7ae7d03da35028d4b6f9cdac16a4bccb9ba3388f57da45bd8ad1c72c443e5b95f8926115b6f5060877efe578ae6f99734befcd5f44babee5eb9025c45bd9446a8035f76f9b14162585b5f872395ae9962ac78f2ddee25ceeaa442b37885528dd8941e33ce37838ea96c6dd389e056407748bba4b8ecf8ae148bd723df15ddca22e8df82a983168a4e2bf48d163efc5d90838c2480177ba49006d28d7495cb0c0f10a75db72b95cab442bb14a4b4bd47941e7a95b1a2edcc3d814516a5c9bb57c247eca6b3e8244a94c100f399594103ce45c601ec6a618830667e3616c8a2a1abbad71398e63711ce792e3e16add6ade2e7c1ab93f95fb71ee6fc95f7d8aeae6576d25832f8657723c5b0b638f8fb1d5525c9c026da6401bea56badc6df39afb6fe3703c5bb532b329ead5536d5e54ea96fc9a7b7ab18a13ba8b9c4ddd4dca150f1f7a110c68437f722c2af88b4a559e7a8c536090f82edbd37f9d82161e7ee053e368a2e6005ee0ccb39a97ce3c18a4511e0c227f25b37a826d0a39212f2fe14c6e49ff66e0acb7ae64565885bd6821401b7b95d3d1052a00f8a35d6602c0160c500b1d68c50d8c492e933b334f58faf742ac97c249a3941c0db4deba9259558b55b8a93ed1ae16139659cc5cd65b7de0165ac42a9f712d7a7c8d1b52e3a397d1096de2a4b7a14dd4dcde8bb35567ea565e2070840f5924c0f2e1941c0cf1d1dd26de9081364f583e99f01563c44136e2644c4a5ae4dcd6acdedb3e6556ce03daec80363d036dda595ce00faf5e0583c418359a64b1cc624623e0d677b58ab1b70986137a00ba02828c7a2169dc20183d003905c16baeca7cf3cc37a79a83e0270d996ffeb3e5f8b371acfcf7e363aafb8088f8ead97f3f1f78edcb7e3ad5a630597c31c6aa294600502e55e8298695f16e8dd10a006aef08e5eca67babd9383ef3a7576b96359cab9fd84304d224d5a20856b0f410303df998e3734ee91d39560b6692e0f851aea60ad219b5ac6faa58d615987b1884254d4f7374995f3ef36466b6e2ce59868d7863ac77c2d9385828fda7fad6ac9671d3a973b1bfe9949c0f6ba79b1bc27acdfb3af0713ea9c2e9059d2652c392bc018799e980a45b71a3576e12ab24ae6fa5cf7877a5842dddaaa1d137406e529c0f0b7243586d04bde196b587312784bef530e603d8db6ef39d186a52961fa5f4ded65c1d95e36b9a26a5c0f9402dac5b7a558d2329ca6d76ebb685dce2b6c53823abef480b5bd0e9563d55c596931e4b08c316e99a0c05008a6eb7ab7142a677243e9d54b08a879f27f9d25bb638a1e54a8b172d2f3918b1c2f540305c9ee0d20497eda5d7053800327df16bf59d96d3379740d237df60eca749adb5a9d1cd2ddc2aadb1c65a63dc7af8ea7dd235ed4a8f13c27ceb5c89c04ef92d8d0028873622789b6dc6b8cdb96dded781af9ed45a3bcc0f4208744a8ea75928c071b28298e9160d01fedc5928c0906631cbb248a97763854a3505472a63c42afc730ee58043b7b28ec7676a4c033ab75e03e797f3e8d5d0014deb9cf7d3f2a074dd4857c70b936eb6d7c3d7ad7ff1f5ad3403f86f9bcffce50fc847055a698d6f3ba2badb5ccb3974ab818c740efd693e876c284dabd967e4846c1ae562d6d2a5919bcfe10bac6538d86e010eb85946a48639e78eeeebc06b9e138a0acb9212279cd2cea9c9be524592252c4b4fba332b0afe5657076751e8d812f41eacbcd1f959c64fd779a171a4b79539e79c537eba6ac62a6233b1a2b4be55a519312a861e4ae0b33f7b2c84d04300844f9fc127305a7073737373b3c448cb48cb48cb48eb08dddddd0592896422993349b0339f919909bd22d9ec160dd28b44e91529d26e8022d2bbadc30cbc020bbfca28c4c2871042187d46979e24af7cae495eaee3008ddf41fe77f1bd2226842c13e23b83a51263ec18638c31c68e3156894d4a5cb1a414a5a6e5322a0ce589a40242083d203012919a3016913e63968f4418c6b850f299013221d283deaa5bbdc595872f63548a054148c7140fe0e831d329091429c0028589ace207502c910fa108e20a285260061456a00822cac74ae7bc915d122c9ae8c00a291c49e15593f043128c943006104c78cd271f38f04109574c61c1084c00e4440850b8483246134930222316854ab7847bf1fd76e1faf0d2fb8b60cb1332bf7d8775982140d611f8062dc3a92a308edfe6ab6eb51764c41401cb5913dbe5a769adb51a4793375b6cf718bd73b06ccdafd3d98de43f1dbe67a3369f28afc8e6d36966513b7db38c943626c793392e3e776dc69a869beb99328da3b98c32ab6ec9a87a19b558a34cecba8ed99bedd55481bfabc254683d787ad7c318942baae3cdab7f59967991cc25f4ce2b15c65bd43489575ba364b6d2ce38e38c293c908f1f924c62e0baa4f3da6ee28db341391e6ecb1cc76da92c23c3ada4a336cdbfccabdb2ce722994f2e6b6e236b1a97e1dbe03cfec6dd8c350d4bb737736df34ff36efd0d72db2d227ec59e04768a7da733eccd7645f75e9a906251a834e486b04310ea3c740ba35502eb163482c30d4d5838f3d9cc1ab2710527bd6e3b0ec6e640459e2d6b5a464444b4a3472b7b9231e998e16183f584295b42f6f4c3470d0f47c76518eb39504f1a8551230aa346d4881ab5c0c2d7b2cc01a4f2a8a4ed1575414b95a19101000040006314000028140e88c462b160301c6bc2e41e14800a819c4a724c1a49635992c3400a42c81863803186800145444666661b0045bd3852be289d8ba080dbf47e420ee9453f5f1be25afec5be8372a03386180b2da740e0e4e510cfb6d2e9c7a726ac431392ba0c99b385232520c5b3ddbbf471d9fd9031704dfbc4b82cfa09b3b33b73c67bb698c272269780b16ea31582a496a29fd40010ce0869defd4c2d0ef6c43f9e456d849772ece16787746e1efe1b9a2f5af2083aa7a9fe2aac2e0c536568f43bf151992787caccfc7147afb123b3c38b4ae2b78aa8fb48de51328bcf99d3f57ac4e0a62b91d829ac68627230831818fd38fa3a228d44c0b3f4d2e8732e9958a4028d6d7ab1892a411191408e0ce764778cf9eb63be00bf5dca2917c5ecfe9b7fe95963840e5d14ef320b997be868b562917cc299df93a7eb7062d441fc11a3b223e577520e1018f3bf605b1ef9a9103ad8b93a195e91bd308d183a27c8aa5383cb2f4eb11964350e9d28eaa4d6af0d1c8e45c773e2de98ff3bc74a1e9ef9001140bf5768597e4608a45c86c266245c1b9497201b160017dc1718848685f45d4a7771dff379d9a161affbd0e64b8cd57c00cea823c24a45846be2f5cd113802113248ffa76c53dbd9fea6ff10892dfeeb62418270510a775f36194c6a7fa3e789deb75b5e990e99722fa0653251d2934e21635d114051a227b3ffee34549dd52e605930d55a6f70d3fb3fb550de9304fd8b0c6a94ebc298700f2d0e27f36617eefdf15955321d01a968aa239f91f03052afd996f825cf5d2d012fea02e966448c52984090be29b551048edb623ff28ffe6809991b2bee2715e64d7198da73e9068c1c0001721a0b37b463e68c404fea63a3362cf55f3951e22cf03609de26ba2c7d5d8ad4a66482ccab78cf09b342e06a3aca80b184b51dc8cb7a7605c5ed7395cea40290e61f31ee628068d3eaf2d3dc04686ce4afb7016c6f6a56e09d46145474378f36ded3c5bdf27c385e055c3a54851cbec4ecf0df7993652d48de72fad5e5210b9de317014cc47f4203d44a13e4006a1ba9a0263f2777d693b0b80d2afe14de268eb7ea1b435bb597064b48314a9ec2ab1219a1556e5a7f48daef04a431e5b47de917d4086c7a8e69b5e28fac4e4006073044c5c4cca9ad8616911f05b28a5ede0c63fc95848b1b28eb933ac38cd041df08eb4e78b8f43e79666ecc28baa839e4de2428365a36a86e434e3cc5b1d2c22320479ac3925ec9bb1c3779fa7a523822ea3ddf143eb43388bf6f61d5b3fcafb5741dc604a3cce906a3defdf3c67a251af443ecf1287e03bea6d58ba98a63f758e7086fcefd754724edb9841d5530d91b6456e4846f9a5c580783c3dd7d4eb2cf00be1037bd36d5ff79178494367a1977299f12bf42767f2fe5cd3bc00ec09ebaec292d2175bd141406194131c2a8bcc95e42e8e87dbe992e4646e3592e832e6c06613984f7607ade78d74761ab39a96c42aac9d7216387af5668489c1798be94239cbfc444ca6b389e0f95fdd559827619d7b1b833c9a619d2cd6dd86485ff056a9dc37d3494ab8799495e5ca38a8d256482723902b4a18c41e2d134b6aaa109ff3e7e1d68d080036d8f7070cc0063fa80473a2b01fb7672a218063c22e074576cb6794d852c13626c593f26182577b0f5fea06ed784fa9a92e8ecab9e0370e8e79c2531543d7260ddc20f536fbe1170950ba0ebbf141d90da263d8d3c40c29d62cd5bb711577c8c3bfdefe023c71c14f38d90be27c80700ec0d7c8bb3efbbd5739728be821766e46714acaac11d5a7c756ad6d9683f82f3ab2a97fcb89d160422bfd061d14b8fd6d4d1b46a702685562d9a65b45124a74fbab8a5e619fa3a2be991d85694c9bd8e0b0a01821329ce8d1eb17bff470102bd8f0aa3f393d109fd8974774071d538b8bc358b50484405e6ddb65e91d68ed412a77d5b0c03437f0732512372913f20ac815af6dc0372a509e89f0896359da17500954828ba5f743d317dee4ea937a2c6ac9fffe88d7bd43a9bbd263bbf1d44c40afdd33f76ce0acf93b501f1fb6902514fea9d5b9fc8c4e385df32d962129a0388a733991b94a755786e970b35e54c0f37f449a86dd261ce238d1ad703f04845322d22ec0ea1ce357fff9c3855f0c7a311391e4e6ae68b20a41ad224ca02e04f4e627003372e396d76d1924e17b201b46fa8beb3b01b08b09a3f45a63ff36340a9411879111bc48447ed43a0b760ed6406ebc2de6cd8854f058fd7b7f0e5e3c80b9ffcbd2edfa9c4b6ed9d5478af0f96f26a33d47acfa3536c5201e24803e0224cae97a881c3ab0ac273b4924ee54bfa78c113a963e91c6687150831e8416b28f05556bae2cc69cb3c40b5ab68f87703af2045f11f36366f969bc169d61e907730653b63f83baf125287e7000fe7189cb91e389fbc1eec51510d9e8cc37e89ba2bf3e6e30e78d7f1f58ab6c419be9781d77b4c454385276d3ce204676f8dc787feced76f236570599362360512621f89393541e292c0ff899a19069f696ad273f2a7920ea2f5460755d438cd00874ed4554bc526cad9c480a3c1f2b2266a2e52bcfad4e199a71d8ba83f5df2ba7162e4b4ad4d7ba3f74f3f1fff94e1cb308b5b727ab364c2c925392dbb9e68e3c4401f5f8c815c8ed94a243d93e0a5e1c68fd29c31f4c47312ad3155f6f724c1a730257520dccca6303199d05062ca68191f31384da30dfc69e0173e878dd786ae64095e9a43ca0bfeff9943284b737406d03488f15be1635005741ea377a0ebbda5dfb7e9e91f49b5cbe4228bbebb12325b411590fa09c18db22b8368f893e2bd7d1d18d5264abb2aec0b62756b0d0b0dc972655d6d592ba87874d96e54b153cfb9e36db5e3d19a678a1886a9dc0165af235f5be2edafee2be08c096a5841a72b80741dc9df0a303e279423670e2cdd6d11c4e7b63b39d79e1920bc92f6cb9ee3fac0fa0ff815841b3804f3e4ce5d2625ef7173bf0899855b34448c8ce6f822dffb03a694367f3541ce3b1be0c39a5371aa6e79944f2b44ca4011fbe422c39e190ced9532070f0632e3c51533136f962f28a2ac803c9001ae056c8f430f1e59e3078647663dc00f0e84379abf0fb2f4a0cded6b5b1683432d5cfbaf2b9801f4897dbd265d629b84617b9891e77b8c884913f957f2c683e35092a9a935a77ae4c7d91d8a430a316723aa5063710706690dd18df4f897f2304775737177de374d0b58129a79ae9531a54441a82267e4ae0da1bae7fc584e3261b7e276ef929eba4010552d5c2a966fc33f809f0c6800b996a7850aa6de4286e118f0b86d0dd17b61f6e8a84a34d97c5eed5f602ed04e0cf250acacbc129995e78a9756ea663749ea48dd4d5d60beac3a5bb737e3b5e2fe431e37fdab35c6d5515dd723f8080bfeed7b34ad05edd784381593ec4337207c0d64ef7b6435e70683db86a53d79f233b52ded59a05d571189705ae50a8aa181ea7f3e0fc4caa4a696adcb29028bd4c8de6285b4458a61236d826fbbebbc03f3aeccf756a8126c0d2014aa8cf188e05a54edbcf51f83b5110dc5eb9b2acc16ef418d55d5a3d48b42c993cf53f15b956b5d991b6e87614fb540b2aefa6abf225594360cc884ec3e36fc6ef01814f703026485d3a01ac8cb20abffec912553bea9c6e3347683d04616c2cc5a93655613287002e03680cedd0cd0e1372822293c38150e1804b704563450e9720d5e8b5789dcb985389f32a88d70f8500420986075b2a59eb906bc2c917b3bc60d75b820c592babe2913de93077300436bc31d9490e3a1405af79a55f73cec3ab229360aae2083ef2076bbd0a151db45fe0de7531a8eb57674492aa32267e055bf9b3f80cca8af9d032ce7ad519f6cbb66a827e3a78de1fc19af2979704b7f24189aa671333ef6173f7533b24e67974249a40ac9f44ede024022756eaa5179fecab509bcf8f988fe45c67657c767dd41ad73d6d8ae762b87c344bde631bf7516dd99dd7cbe394166a080bf16467cd0cadd246eb081cdc9d89b90d5d8aa366bff8f80008aae08be3320e0afe20b13b9ce11c38479852b7002f6c6bcfb9f49c049f6a42a4b179aea4c311694efbf3595891c69820a8ec0e06116c4f74c6e0894ae5032b5f9f90db6383dc07c6ac0b4bd9cbac976410e1c4e932a75f2df31f5f08eadc589fc754c77a7bd85e4378e0d553cdec411fa161213603398e9485e43f5a166b71ca6703545adf6bc43382bbe5add901705fd1f52f5b2dca78edf757b30fb9eb09571568041d45e560f0832d8403ab72972d1074b158005cf406b6f4372c52f7b0294c957807955ba205a8bd35c1d6f1ab1602f45a6dd3ded9db809efcb03623313718a1bf6233f000d3c1e1a7a26d69d57b216d24f8b6ec5a04c9ee2fc7e65cd56d2ef74908f334ce487e626cb589760b12715d7933711b46234af571cc30d5bd00d1ec9c343760755522c32fa47c395cabe8b07f9855c47cccd8c8b7da73b77314086a9385312f8898d3f9784bef535b069fc19a411f32d7f1964d3240fa747e038a22186d23e349581d8908fe162cf2895a4aeada6efb2da411f2af11e27603cf5a9381332ef54ca3d308fb63ea66342da47ae358690bcd03b8e0001668227ed916df16516ed825bf4c5bba91a1089fb0dd3a548c54e8b4efe2dcc2b8740b63bd93158f0783ff68586e47c187d573bdbe9cd1d1e84e8be40e18f71526d75c96454a926080a493c83236190fc8e9420f9a2018665a082cee13e13bb4f994c9c44a388f23dba291cad0fb31c72d3b20c615fe97fdfdd5d263e1e56d7196922aa7d2a3f1041ec6a993269cb91fdccfa2cb9071dc201b74c97767596a7bf61bb3ebad01de4bfdfdab97904e6eb641415d55b3ac9f33714d2d9eaee1f3a7833cf49b7b8625256b38546ebbf82ba4db0b7325d673448532a8745c411c0e1cef2b3ef847709957bedf5106a1903197518c112564c3bb250ae194779b37d99be84feba91be452a08daa52b5f973cb464d2c1613faae693908e2528ca844a49fa625f9ac016320fe56d2bc84677f71fea6dcf338ea53897bb0b2308bce343b134b1d3f23f66486f8e523177f4c41d7ff43e194bf06f9462c3f68132962d7aabc9be8b9423ae7dfe5f601411feb5e54804e42f0d4fd89d557e6d58c63c1019de077ea809af9c6ffc0a0617cb6ec237b660eff8d291c04539bcafab00b3ef6f7b64dd43610b338ebb809d459243e0ecdb2268a1f8d0e046107dacb984a7ae04dd54f974276208137c0ebc9aa571c284921dc886725367ac4e1704d7ce8f64c7be610c2795b1184d8c90fb1cdf02e2d1c2140f1b0ef0adac5656fb2b09bb0e17b47150666acbd009a26b11f89f6fa8201dc25eba2c85f36881f97c6095f53df042bf665dd4892559ed5f3a95b39f88c6996763ac57b779d9709ddf2e77b894d995a9559951f0acdca9a1b54389652cfe382b3f8504aff638f42b9459d5c370de64a81ff3fde9f8c302e3b869704be9f178bb5976580dcf2bb24aeab9c6e92ef43b7a0ca8ecf18e2cfc5eb16845d6d0ef90058fb57cb2ab98060bf245fc76f66ce4892b62d4d63203436d3797c5ed57e7e4d71f91ab0af02d136ccc673b30e6391d853e581af456421b66255fa841899e0a02173df8842808787db3b8064f2825f0277064b9b94744224f44a38123970ac38b6a420e7ab89090c5d585c47df7df29518b16c0ac9745abe28c80a5d519867a57f41e194dad4bafe404612e3c2fb13b3a281923021134d28d2b3934eaf6358bfd178344e3b400e829560997bd1e862f77f8108d85d66394919b7045f2155fb75ccdd454c6e142d059b889bd4d26f44a1936dd07ac617d92c813283923d15f7f8897446ce282374f3eb5db7ef7f15752e4bbee452df1fde2a1bc76004121d9e0a0f9b32a16685cd39ac29efa83f469c2cc1f1487f307d2dfb6145719eb5988f07ce3333f61b4d3088b86286fd16905ad728eb2afb38660679bdbc7520ee11cb9d60c92a05d344acf6e84c8fab1f5e0658e3f3c2bc60bb5b2887e81f7df46e6ebcd4e6a81f3526df8c5c10d56e1f6cb5a1c143926e2a31a0c3ae1384b8b3a908ee35171e6a8823ee76a464e40fc9227c5d2325df3b251494eafd7605793a8680b902051d362a959ea8af46be445b78a281d0e7d7ea96bdb1e35022489bcb1acb27841d14f49b4bad3e12e92b01a8d69d47e31c46aec2283f1504cd7f284bc2665f88f765ea7aaaf6bfcdda6669d2cd771133bdb483d818ce29b73d53422db9525e8089a5d531c5c88d7a5d51b64215d9c26c81547c84fcec939f279ce6d206d92f631a9c64290dc242646d55faac8e292d7ee01fb3d5c6ccd62e4c56fa80ff2f2c22af0921d2f2c39c997e48d8d9f4c036a78e3081592626a36723d38f0b6d504a09421f2e46b00021b3491c039df37b91a35eb407c7a089c1b05d1a84132f92da52bcd77c2d1e57db0138d5a774a449e44f43ff88503c339e9039281407f07866154b524fd541766b3210055d45e26bceda0d14f134fdf42ba73f3c9a883692abc2121204539fad74e001d346ae122548dcc242d4fe00d2139e0a5598d1924165340511a62c1d0495e27a5551c9db76366d5de91763e90b115374cbb7639e4b82d59c5bb6f4882e28a8043017b66c8a3f1232a65b8f0bdf5497de9ee0eca5d0a6e5335edcd819f25074a45503a6757d69a193ac74b034391bbaf1a2c0c7fb8f2a3fde1680beb8ac32d03321e1135c330c9b2ba601faa938a87172946bf1dc20a25a3a6d0db864657f86822794e1da595e65d4a71535e5ff3c594ed92b64f3ca288ca5bbaf43ad35aa712d8e9cc7edf3eb3b7eb54decbc1e4854247907072c169367be7346ae5a13cfc33e4044879fd51049ee22bb767fb2f9fb39bada136174a068d81eca63bc81474384ec01cbaba39d884c44325421b2ee73e4e1687c0256b51b4835d42ee25802cf19c8002c64a1d2c57174d4bd69403ac66e799fd3bf20e06f27cd66a919f4c8155ada1d77e55e0a7aa928fb93176d0b9349307b88f12f0bf4121db72073b7a07403077606e2c5c1567723579423a5b3bf1c97d003226dce2e2030ef566317e0406080485468fde252926f53e985cd99346d6822eca5bfaa925a64a3d6ef3629302589c96c8c48afe563e2b0ed5819535b886024bf632f6ad4549e9d172e929759c21f9692aca859dcadc870476750859b4b30c67971bce77fed0082deb40f5f020691fa1543314a7c505bc269c7257b6a308756ad84868502303062795b83786551725f5b00c9eb2cba4432bf32846e43ba863049cf25ef93407ba342d2a3cf5b0f1321d58a394068770a63dbf6f0f381e43d9f6066603cf9e801f01fff0d9b92174fca349b0fb28d35640451184960e6f71050961341475211ca628c7f62d83018972a420e29e5182d9a6f90c330cb60564150aa9cbc7d77e6e367b7d66e5748b5561315cdd29ef3eaba5650ad2db69c0403c96a52125bb202c3f3457d3d06ef8c66e8d1e6b17c2047a7ad9ae947db97cab9700a42027639688b0c0324d4243040051a9a07e5754d9dc615583da51ec2ead2b451083b5320b07c871dd6440b8032b7e0d5f6d0852044b332ee3faffbae73ad9f7a27163f8fac491daef410c18b660a9f2283ec56eeba1fdf1ef0f10aeec7079c685f63ded3724a45c36ecdb76520e701dc2531c4abb791a46a8a04d405037e52f3dd4bed42adfbc70f3177c260d133ff9454926b9e87122c523eb8cf161391c88d602246035ffc148cc835e62fd16cc84234cf957b4227b8bee9d6e4903d0bb26da280e32bae46d59ad16f5b1eacd94410b27aa47cfae23f2436af014b00009e77568b90b34db1257daefc43938c19afb868b1ad6f3e62c9478a2b9b56286cc5bcb9fffc6aca2c2916dbae83badce115ae46e469c74f5118740247d28cb20d86d4d52902e030c07189f760813d19820c34d82e5feb6e3bb277750e7f0606e1d60d6fda13c8b76e84084ca50ea4c3540893dd734c11e5b99073030dca6d03cb6cfd3a1d7fb88cdc6c0c3d3fe9a475db630ff1076ca07ea8df48637a9880141caae5f3b5de38fab0f012a6a468521c9ab3d613dcab4a12eefd634a514397e9112e5ad258a1a1819d3036b804e7669a4b7e186e35bec9645185b3ecb93f1ecde590409a7d69e84bacd16ef80841763281b26e904dbfe6c7725206cef102f257f823602e1745a17fbf562937b262a8a7512d6ea3224cd845b72c878031aaa1abde83747083b854b7a8111da8fd7fb1278a4c3a28a0ad3f7901df3327db199ec8b621d8dc8678115d52413b9461aa2c7c911c37e96a85428330297d04d7608c08a819611baed2bea1cf4e2750a5384a62a8400cdbcf8e2ad70ae61139904028f582e64695e5c243cf8fcac6cfcb7dffcfbc63841f47d6b564b60b4f0102245ea6c24e53b9d8abfcd6fa721b2610a830e05ec3f10e7bde2d172982b030f30bd169e402e1290036189656b9bcd6096ce31bc4e61fca4b7069408d2cab182b9bd764392d0b45db483becd12bafa1afd2183c19452fa8aa20309cdbfb0c19a5894952e64109a29adaf2c16835cf8e565405d90a0a91f77ccbcf2f221457c4e6bb65225e2865beeee2368678a904ce686f42d717937c72153140921111010abb208f5c36fdcdbad3d2553ef37cae7829f7f04f1c0e132aa37e53f10c843f988e8f3f5cbb462df719d062fef747eef91262a7bbc8a1f5555c0e838e2ff3c5050568496005be59aacd54da334043604dc6cdef4ccac3f8b33f3fb02791fe288e2dbe64e5f77be4d73f856e141745fe82da10909552f947296bfdcbbf892aaf1b61f862759adaa2c125e30a9ad4a4f30ce2b7308d006da804ad76a1d54064e2be03575fcec7b1d66db38e69a1b27606c3ca1e6d4fec8836c3d6f970e7887c070fc80a9e799ab7401aa8d1ef9c7a2b5548f7364d58a5938069cae2eb0794657a311641c4170a48605b769078baf900f8246a74819021cd2dbcb801eb66b0868f3f6e243f3e782dc91c329428e090b41878de9dfa14e077a30bc7c733fb8d198fd1f21986dc8b0f32f6ff198d2940ed04f098d8cd090b5f46ef218760a05015a16c8fc3c924d894626881bbcd0b318435fee97e46311c43baf535383b78cab7c891ee030a96a1162db96b15fe15448efa9670e2b9ee2e71e3cf726db1fd0e0af0a16a76d6de6e7005da15f75e98bec4b71aa2f7bf645d066b41a36e9c2008de6550ae861101e26807f3aa1dbac06376435a80b89c45f082aca278553f0f5a96c6e44b1a2a991696b946a5af0c75c4dd2ed098454341045413ac4aabd09a4220bb2f496131759072c25e7ec26a2402ee988a660194af9f5cf11bbd5d11c3597c67412687cfd2e69a0afed9c23a0bf321aa23820404095cfaf85f8dc33a075ab6af662da104397d025172c5f106aaed2103e6e691f1ff8761c91a662edfee45e20cf61890553704b2d58e56c71dbfa0c0723ec8896d076bde71dcb1698a9f4d715b5f5eab5c51701237035c902bf2de1031e77412558545ba77ca0f1ad75f9e60a11444a42a32d65a9c21f1e23346f53ef3721bd9ee9bcd91206c8508da45fb76609215a69dd570c2db2bfb6be230db6c9c510d458a8b4aa38b969780b553a5d192d49fcb6c52b772de3f4b7a20faaa9c855859265a9b19925a16cda8d4e1a1e6534c2e546e02c37b0242ff6cc8fc82c855c66446dd6ffa1d48b1ca466b9a53f3f089e8b8f6d815e39ce574e8b58f6bf66bccfa92c5cc5e6378e40ff80422a1393d4dcbd93ef1defed7c9d15765ea6c724aa7049a56265f8988f4ce9da2e9c92050af1e2e0fd8a3892fe1c40771a958c7600032e59ec5d164a0dc76a6a5abe1d6c2072ace6e018531b4e15428ddaf6bcc9e7530e1a1f014df710f759562f84dd38e12199a087046b7c891ace86063dec1cbc1e52b11956307ce5c63a5cadfb02d52e8ebbdd441df97410a42f144fe1fd4697c48f0af5e3c3cad8ccf56dafbb1ea3576f9f95d2d57f54daece615e87c28b04554679cc114acabe5c845302c9f07181bd5c457ae281cc315c5d51a2d912506025c345eed685ec9b40c2bba6ff90ca2f9da21f2c41b102bccd14b9233a5a39e29e5eaa4e524b04f9647233a64fe7179a634a410c7a44e70e5208436d0e3305442ad25087df3e74a7673679edefd5e951f190a94ef460dcc5cc6bc5b4f63a3ecedd15ee29855e408c4c3cb43e183411a03baa36112b5d04c23fd93fc86361e0d0ae5e8a7349f8d284b9f4ae083298b85a09a9c9c64a130619477ea681ff50c0ee375811e31c5251d322c80642cfdeab69d22294790c04b504ef47c8284f3aba0569660283a1bdd02cce205a2590f1158166cab3efc14005bc176065b0c53b2bd6836a63b3ee9079e0d3d236bbe5752939b8ea72f8211f2da7182ca2b5b64e30fda0ab49d9ac3b0f57b0107a5129d9e88164cc176c42060da4da8b7398ddcfb845082edc61a24bfbec45bd2a5e8cf264ba8dddcf68ad3eeccee7ea889286f02159f659f4863d148cd577416d1e758e5585b123b5ff70313286ad13f7ee1467e7bd220cd1946986263c040056b4ba87cbcaa96cd824a0655c08ea030c050d4fc51f9933770b4a0cba44ca227175ff63d7f5630932a42d11d63449f735016361aeae5a3e498fdf28179f2e179d68ad15e5f2baff0af81c2f0631a9f3530c2d33b91e78dfe76feecafce707b66689cc8c627f4c8bb061578dacfd2e35ed7b7f213a08fdd77b5cbd30655e8ff12d4895e14b31ec54f86661a9b17ff873e3484b2cff9331316fc304f9e3232e6e21535d0e86994b1dc016ca122703dc0b19c0f7d9e5b83499abaec873ef3df86544792aed1e8e0c920407684b99a9ad945e4b784be97c0f9cfaa3dee5f2a5e41fc8496916e58a4a9f514f766c3c79d06573ffced0db58af7d0797c98a0837a15f9e0550bdac516ad89197bfd71216dff14574318cbfc12e4c7996ae9a05b9024cc906e3b29ad293a15e6ad12407b3c4e7f6fdb514a2e6d3fbd2d33e942986971ca28b39cdd2182d200bea633e7005fb53623b17c5670ddd258c6f9259f38446a208ad7b05cf82083a47bba9a7ae0f5cc31d13d505a4668c97013e4482daa30813fe8e5114e410ccabbdf7763a0e903722fc72eee49a0cd2dbf55c462713c906b42f5a91072491b745b9fee197b98d6e3d13fe7f69d2cfe3d81997824df820b32e132d473999fe60d77b8b05a2028f276b3746f50832d268232bc9dfa7e4cc037b6c9f7fcad406bf33b22e00b660bc92c53d7ad509e7ebf35758e9102f92ef23e70cb94b426e6b09bb08cf01a5926a0bee1f5d0d4ad62d981cabd3dea7c2072d916c4f7d56e096969c3655a5d51a31c244cd0b9eaf99730c42e8fb7893d0dea05f7eb956ad95bcbeaf4d8eb2bfd947ec61e53f9eb6d7bfa943bc73e2c1f4705c2891526257f4b7ea95760d089e12a64d13a2f73881503b6f5b35cee8ec65d5af55926ac05b0c7a49143c676108869e982ee84385df7433d09c8fc4d936a94ef02463e119cd7af690ad1d305bbcc76cc33b2d4d327713ba94e8321ff6bce96f79951f0ad9081cc98bc204be463c5e2d050ad73a863d1a2d941a69b06eb883950cc56b4e5b30618deeb50efe87d1923f4cc59043b3634c84a9126e7e714f73f4c897d85cecb140673a7d1b22735cb52adaee9ca9e6672b8e877651f18344ef0f90188cd35b2314a603ed4ca033e11d424ba3ae136a0a23781e2bf54798f0deba054d41560e2f7e58fbd568affcf94cad4c287cd12471a730084cfab7cfb6ad4ef08a64996b5ada70977ca5619d3e1a4e0feb05f4b8456a79c73172ff2574a63f5c217d4e815d8e05b392f515ac467c1aae1de3bc0485812de3264c0ade0e1dd5eefc8b7b00e82283c730323c46096cbf984ad95829b5f636f051411378db70e8e0ddc3571c53954878127ea9c56d1a3857b96c6b332a0e931c48a281728c1f3b7244f21da8c7b7fbd97a8b68cefc00a698837c5c16ae65ffcf21b5550c74c3fb0d5d4171c728b5d0709e52bd69809ae723cdda06dc76a05092e528b98e61b6a4908cc99713a2d2e9f1ddb4726770d40a444c4d7cc7f5bfb0299391ce99879123d410c68deeece1f27f84c8425c38d8ee59ca8a9bd7419aacd5dbca2222804e3ffbaf4ee2b084ac4a585b3f16c9a74156a4a234aacb9fc3c584efa248ebf7b8723a57cdfea54e69976b352eb925164c37b96881ab34f44acb2051083a102fa0bbbbf0b8962d6baa38a4754b2bd8fddd3c0076421889650babb1fb5d82c98d852e228601eb46ea57f522f95c8bee32162748c31450ef19cf026b1bbbd01099f2ee302b7fa9a8c7e63e9627e6fea6508495f109f5536149c2400a11c02f2c0f50e1656d3954989801d6347e1c2839c748e40d75d0326cc6898553f72283c367992633d38d8fc6bb6cc62e281cff3d4df1aecad82ed24d9b2bd92b169227d68d3c39993a23d88a83dced95cae8e952688aeb8ac8600707c5a418e9e72c51aac6b7e52de5ee15b982335fb301d96d7e184c575dde5eaa5f30c2608ff8fbd7043f6500c3158c0460dfa27ab7a22b09ef20add053a624563113fdd551887627f21e1c9431cb258d58d634b58e932987991bf52ff9922a046126fcc7e8aa854f7460d72d8c2d9b463532056fe50b9b478d6fc152212481afe45d13207385ed1bbba5a05a520f7b593b582686163c615dd81fce3b19abc7a07c00ac9ea073fe8e18572dab68f04d0dbe9f38354610af9043503636120df2e8907b7dc40421a94a6cda08748360cf192d4a31e753b3acdb92404ad8d2430406acf6b4828409fe10f0c77cb2b67ab380a5888fe769a209f59d05a50781d44867d5cfc2e30abf6a6242880e6b3891f96bcb07dcc5e6233ef65348cc69232120a606f10da8e7df39aed933f4e7d54069c4b8cd21c85f14f3749f04a89f3114be42bf3414f8ed75e3e043928788921a310ac918440c7b1e9dee129b6d890eb042411fd15e2503a34326264ed7d1d1a6723a8e97abd67afb94f94238f9f7d2a57329518cbe264c2eb42256681d61c013e01e97e17d6e0eeb7a3043221d9865b32829a2272eec6312ef40398d98c3774fc165a3d34e0371e752e93f0e4236d2ca5461a3407aab6c2c6e912c1a3be91e2842cec168192695f383f366876e13ee3d03ca04a6bcf7983f658654da4e66a5a291a8d6d4abc2f4e5ffd3664bfe2dad5cf8dc958ade3b169627783cd5de65edf575b16c03c9274aa448b065a4eb766b002cf56411b723a67bc5c518bcab51ca81d41aacc287a6e62753f28e46eed5ca87e3bcc0be2ee5178402d578835fb5d88783da1efa36b3ad897c6a6869da5c047662ad6ceec8e78b7d4c034c612aae7d03e38747d1f25a5626d658d4e2cdf48cdaeed53ea4ed6332a6132ef460e845c08a7ca2d5d1c932e328dbd71a05ed97d43d2af44420123f79be5bb4d7848509e12466a31931479c0827ad68967fac1e24b46812231c3f33b95c8c68098864f9faa8f8319fc51b4df935080a82d141a4e7bd2b0dbc3c301d1470e739f33275ddfbba1c9ef70250c286600fd8ad62bdd54d84f2cb56a05e213b900a7f2088085f7694fbb89deb67aa7b9858050edd85349b3f8aae1e807484003153d174b6ee83a90df44a83d250a6e0ef126930790b92b69ca5b837c53af5f3e4c9d8fbb06e9900d3c4ca9923ab85bfbc681792a248df5931356b334da914b36f6593e4e46c1c7a5f6117abbfcf454568bb7433185e5ea5e169aebb361e7579497e1f2a70774091e7b2b24f96ce48febeb870122bd7ce293a118ae31701426c1f251bec78a88e53c117093d476d2f40d8b5740effe5f33f36879fdd5e6f4c7e12875515e9972d0e893566eafce4d979a10f411ddbb52094b8b1af0fa84b4fd7523d3ad1c027e51e6d08e155ab6ed6996ead663195e103ccb9a6627e12728726d0e4de0ae05190f068301b9992c40e89596ca2c4e78caff33d8d4790dc83800139b69007ea224483ebc82ab15ddb1144e1d219907788b7dfec9b77910aacb0c4eb07c8bb86b72fa37ad54b4010a496c89584c9971be4a828959d54958f3e3b85b7478e1f3c3266e428070c2030ae74bc6712c25bb10c0223a3021df77fba262a376107edb9d6c26f72992267b5a76f4f89c2c1af0e9249898149eda78eba89fc566314e9c2e16b5d154657c34c801a7b3a92caec8f4866f86b81a9d04632fdb1879d6643f7fbe3e1ce01bac977c5882e0e4ad5d037164d5a1d03f91984ca40c6b1be7873054249b861f8a8aa6a844ed90b21b41bf4befd23102b35d4410b95d3e28f88b7e78184a7d0f9c4f9b1c4bb8d7d21acf1a9b2c544b3eec42732322e6321934cf88f6b7630348088c9d77959e0a1f7c9890625f5dad9aa3262880a281da3195121b8a69532b3c5ea0f84bd22f63a98b013bbb725db676cc1843f077bf01e10ca5c0b640f529db2321502ac256bd4482bee5ec22973fa5f27658ab60143e48de5a469da42d5ad310e40c6b9d3bcf247804f7df763cc303f93c94c6907242b69434359cabf96e74cff8394032c8b083d614c5540b7a32ddf7557522cf2ff7bc4982e842048fc0d5e7c335d9033cf3785eb1e0c5a193cc2fb5b66f980e9c9a30bbcdfba945df1937e8a930fafc7e3316e74d720a2a830bba7e1556d393591f4cd63ee036a6379c8a6db9c9b14db9d5d548e23dc4deaa267ddf8f49b6b87d43b0b604f7fd25bd547364c6ba81bfeefb779c423150b0d745fef180b2434973a6e5e6c270bf437b6a84680dcc070f44b07a340951ff7e30b5e42674e4de53f120b6e0f4c18a110f4428c583c5dc083126338403769870292843f988d555b69b74eba806fa0937aeae506365b1cf805bf8cb383e2bc8875a311f3a38c1428173e0d2d2e096dbe47ac49ad9078661b69c1a5aa6ac526f6517e8fca123a924f74bf2ebaef397637235bc803688179a6f1703b67de73f8b15111bab54486489885f49cfeb938ca288cfb2fea82276b8a3c1f766075a5149c96e363e1378ea2a5a638024d8ad4a1bead700147cf49ea41c3c37753edefc4fa35488d5086d298722e698f8673a6ac0e5b580e9c9ba9fe0324d0118c7f379682659179b67a2ab9f9fdaee8eeabd0ad2418718f7af7fe3609e5987246e5814d56e0f30223ceb125f09194c436a88b2cb7d27710630b1ccb8a9c1abf8c6bbc93b8e9b6949a105d7d63809213269336f2745fc80b2589f6456611a2f6f35696c0a6bbb4982e7db34607051ea83c6e4e3dbce1e69f2c7a4140e208c1011ef276468283c0583c7027ec3cefe14239219b0a4cb21fe8a32344313b5e8bb330e3cd56f51202d0067a72de8ef7ae3c5de6a86154486af2af5535cbe20f275134be8569e1a70ad3f9a6612d4b532250e36ea173c19eace4619548302398c69fbaa4fafb1220e591a2cc71a86583393cb3950b4c70dd8da3f939cb5f35ac5bfdead535af14746e942e5f6b143d98d55d076be6d36104ef1349463ce4b9cb5c85376190b553f0312426e1b59d4c87ae70785cb86ef29ececcb7654da37a2475d93fcf7f0b9d077a139211fdd7f2f1a63f92164648722bbab7a8c5b0a3821f33649d94a177a92b14f82b9211de117aa6f9cd2e7c09a57ccff295ad64ded905ec5f8fa82290657dc1e719c21fb3dc14e39c54538c9ef706d4ccb005605ae51165f7ab994b009033f68ed47ddabc71c4c706962c18cc1fa503dc1b0904a1acc696fd0ab2e95ea91624c4281c994faa9f2187272024d463cf4b88d8a5eec09263ffbe82f944e79fb524bb6e031b607dcd5c4eaa0a6af1a3edd097756d7570dbc29874be9574cf1d1d5b31e2f00f68cc01c99c78727b07aaaa80b6e051237074b0d71f360086aeced5e01292a6e8f4c1a8ef81e993da327b1adf38045ac832b36a9af32b3dcd4634d92bd35c8d8541b0756c80650caf1de131523f05e470385f7c0554af1f103281ec748c1b1c5517ae72fb7329557e774b72f41742e64403c5649741a17995ff82932a7299255429148a0ffe2b76a72b45c39feaec2151c203b4e2e9a5354b1cd9cdf1b8d16de824108ad808136382b2ce03cc51564f8ce7995f00b3102d972bb44c5527cad7db51c6d7234e6a76b588a5253a71c30b137046c48056d6ace65589003c83865ece56a0d794b344abf856ef091cf2e19896b000cadd2b066370f336054e0a28f478f423d5f3a1d6169641ad7920a07bfe68beb237961ba7ea07b2fde408edc92950dd94ea1068d18e6bd34ab089e3d7f79e05256047f78cb78b54b9048d013eaa910c162f38f4128832f9507cd1a7ec55eb789be9ab4681416d2c435e60502320467199315f8cdf8129c74bd0e1b8cb8900e25e168ff28781aa2cc2a1b011c310b2f017d05ebd531c2e57948d71684cd928a0c30355a11cff09592b4b5e95685e841b17924c70c39f85d9af14feb628b836a2a30bc60c28f20f1e286ab9db2b688dafc89d090654cfe54d25f85fd87e0708c699c0014f91402f55f7eaa4c107ec8d960e0b775928c09dccc58718cf541a057b78e188c274bc349400bb18d5cda672ed5e340b42bf2e6ae585b2a4e6a20a9abd3be9d57d052967600d59f19e8480f9e9f5385b577402a7a27b40648a83f91ed30fd229df95abc3e5729bcbabd23143b6f0dcbc146ec7532c034ba0f20c2c8d4541f038c3ad4878743e59617ed5ac6afbe28e9928e79748890baf4b95625990b5aec5218333af3fd5ba52f965838cac2bf6329593d97651b0218a817c741c9e81f5f2da07467631cff76bb119239cd9da7f75e45f1e2967085430dbcc84deae08f8aa44c8259bc11e01b8d86103a8a616e0b7b2252c6f4fcf784b568f7cd24ace83d9f4066e6294b6c439fae08e9ae1ea9a99cf5eab4df26a92124ac0089f9d18ecf53eeac348924e5fc50000d7167b1d737b57818cb8e9e00f256077f21bcd47fc63f846fc11a4486b91754cf5163e078674dfa3aacd2cfc470cd7145d1b14e425c2f5f2532664eecdb28ef5c63b9457080d8021ac38017e2540185eed94524a7c4597d416b999a65968d5c98077d23d884adc17f3f06e1af5187ecd88158faeb709d071603cc2060158a5b1f40b0137cec6f0ac30321f35937b588ad0bad300038a82229fc2bc630aeabb90abdb9476312801de5de7de1cfc868eebb3cf0ead1b10c3a096c87935c3d9366210127fc053834b50161c829f90807e500e2734f8d8f6f7dcb166a73a46c86313072680a4f0d9a7af53621db89b6e7cb05474c90172d0777d0f80c3a442050972efb3e3a8c34ddff940fb0f24bb461a7896eed264587a286160be3ab63b5605e8134b7066d579d33d72ccdd5f2e62ead48f3cf3c1734694dd29114464e493724363a1e14844fcd4a33c0891538397dcd6e8ef961959beb4978addbf9e08cbcfc92ace45bc28385334515238dee4c1da1e2b79dc992dd852568e73591cf31329dd67de281293be24417d24af6a9222ae878d25898345fbb2c9ce77e400b6f7050fb43b49fa74f32a7ad1e1f4a1a4342f25f3daf7d47de6ce02c79f09bfcbb7b0b4b557977b4c72d647d01f9e8a49ba36c264804d8fa27baa7e0a53d864560ec3f14b3df8ed67866c7acf6a680c68e271f3cd30e1844224e3870f8cc1f2319ddb40a04b73cf9c260d0cde4a7bf1957e9bad4a1d3a23786db3fad56ff805a17562e688f9a4784226cf6e64a14f279ed9d80085c1a176309775674e952c0871e70732a90b3c1092f94021307f9e0e277785b70fde67f27bde907e284703f8e415a134187adee0430ec7e697a1906c99bf896a838527b4306832d56edbcc8b617e130907070ac8eceb03d3449a8949286cb3988a559cbaa6c3caa009b1dcdd235a06512833381983bbd4052d27c0f1b90be0ccf856da739c9bb7407e85bda29b1a8fc49b2dc65075d596b11fa019a6bf3db99865bca1903820fba14f30cb79fdab76997dd8623a968c01b6228617a99702dfaeb191ba74ea8401e8f1d30b0396500616e629eaedc7a939572669e80b20fb7be47b5174f6f140cb8b91b02991aace3f4d32c30500ce6642e4f8f43b27f0f2dc5f07b502dcb829f42d818d72b7cc3f7191c8b0d64de3f85fe66a75459bc18e627c21e5e49af827c83e768608056671a1774986982641648fffa9aa20750a403d8e7f4894dd9a4e0bcc568e0c708bdd5fa8c1d06f714f871ac88f8bcdaf8ee3748a5aab76443cda26b402d92c4f0b14e6dea778526181e4ae3b49cbd4dcd4156e686a091718aacb22d53f939c8f81df3e57976e539470519ff7def0d88157929a5d02731bea5c161dd0382dd95a889fe4cf2e4c248a10574cb0e5e5147f725c9322583c2c3bcfda78557a364771708304449c429bea07002d0dbd96d46300ab4050a38ee0b94f59a0abcf9adc2a79e31926eac94eb6e650002e0d6c910408d67298634ddc004ee37d78984a451fcf6358f365e5188e2157261ba29c2bec8055622113e304c3be094bd553d79d1abce40c8239a21c98146957444fe13edddcd495a4f02c52acb079594845d3e6ad7cd406a038148995bccac44eba5a0fefe8fea787817ee7b98d75db5a2eeb4e48032e60cf85d2acced62daaba913f061bfc15bd78f6035618d50b7efe6039160f8d4e856d830f88aa9d19cd5ae78379cc1e065adae8a320d0ddd1a6bb909d3274565317ded7367176ae07e34a84321ff2cdf7acb197d20404c4cdcc00a64e214c3cca0ff21d0393e1d09ad30b106bfbec07dde0d5c07e3427ac085aa3827d0ecd4a7d0b76940918011824f4f8ba586dc517c4dc3f62043fe99756ec12944c84e6aa63840557faa475f8537ce69742ac1760bd169c242a41c181e4f0666b1501d48464821a6f7d2ace1ddba6aefc5b97231643e14e6b858ab1a6b7ddea6b5f46d5152fb47066fab24c9edaa12a0957215cfbd2042a56d846f29c22230824a95b628f8aca600ecd3caacac7c6ad5ffb6417666f1c5a8176c6af8998cf108cae74f36a3aab19767d74685db94bb09406a5ed4e4e6a53450ef4ab9a723726a1fdfe2b85d094e4533c16197a506865650f72ef9caa23bd1a3bf2a4ef8228b28220b611aa20186f2f3e2497c9b809468e6726c37cf1acaef1c23d138b2b1412ee542bc971c6343e527b17832b4d4de06ca4e926b07b7bcfb72d14fddf780bb87b7c01db8da18686ba9133869438904748849eced943ad57083439279f3e38caaa702880d6aa002bb20e016e7fb7807f8c5b2edae06f542ce42f3ef1bd95f66ff9b9f9165b42b73b291dcb98487e309ce6d7516de1b41186f7f992d65b59ba089f3d52050f82b665fbb232d4a1e7d20a0ba90f50ea605eb3fab1cd2f34bc532e1784d9ca687b057ac905759caab76a40f32b6c09a453178884ffe4f5e79323c22ac9ef166281f72bc39c2793e8f8c5ba1d0cea0c47767eed906004a68ec369bc554bb2290be3abe8ebaf50dc493aeddd3bd9430be10b7f272d32cdf32abcf20b44e312ef2d94965da11ac972a2a228d37b164f798a2261a7c1da75e107699b4f483462e736a01fb38aad40c849e2e578f709da161e92ac3a43bd6c10f380c722ced820ad4ed5906c609c1d0a79521557e61593799a6fc358a9d65f1c74717959c9c3a52165022e20952638a834700d67130530764ebea0ca38ba5e78d995743c028072a926ce37243ac9d4437648aa1e56d028b88a600f25d3484b37556491da04c7b9c0e4eae27e6f55749a91087a1f397c0620626fbfd06db7d8a404cb9333a45be5833b4d114ec9f942957e6014af06b13d35250021b2c07c6ab1e84792e447e02b30e654b8fcf9789d5c3d84cb3c648007fe49f59d33644cf9a7f6f4360f12430ead0204f89f4b75a1b975f21dee7200881546a50c3686c50453de312ba0572b3b5c679d74da0150d1c46f99f4a9c136614fd0f805e39ff21aa6dae4fe9357a002b2fc02bd928bbfc8509d8b886573b07a35ccba14b5c6640470a01c2a4745aa55845308905282171852b8e5867d8c8ce256c2f6da95460098d6ac38aacfea874631ac1974c1115649ff23abdcf50e959d7d71125e2844a635bc6c8e497e5a1cafb814c5af3c22abd65104b9fe3271091d6ed0538fc55b08aa2df8706c928540b60f446ca7b4074ba201c37df5b3f62fcb071d0c869765796b30f688d27a0d9335243b032056c20cb65554ce03f508cf13f7393404a400cb205476f60517f4eba00ae3ae34524707584ae56baee6b7f2b39fa4040f9bffba2a4e661352190c9626d3e8bdbd524fb125833892a489a7fb6d561409d9548251b8fc217bc7447b9a2695745a4180de0ff67d04ec9fbe35a4fa774991f40f3c32b198c016b99dcacfad2eec1016ea7b444a3ae43b117cb2e71599e11a7eaef96fe031fe458194d684f741c3ffcba4180308dc819a611e403e6305a92b046e095140881370e0724d29bbda71bf00a2f26a50c067e1ca067bf065ef5c601dea2ffdb04e1dad6987431f5c645435e44637b9f205418ab8a32aafb82b749fbce568cfadf91e6f19343a6cc9f03cfaab271ed2f736cdc30fc0c0ff4edcaceb26e701a489ae3990ea3faac6160399e0eda2e1ad2e3b60dbf10dd51c810ffe6207f1cb5b4a7933df938dfcdff25675160056b1a8a5c81935bc81e675a1557770efeb481db3166b5ed89a2360b0a29433153655b7cb71298fd65b34a0b20cdd380d74f95a8ac9833b879a830f0388815ff57b9942be6b2c9bee4392545c115e613f4cbd176d7c077157cc55b7fca1569b980c0c926505ff925fa9cd4e5af96ce9cafc64270b0b8f12221506ad56cb9cc7ea4708dc1e9b1e78ed2e8ea99619923040590f264389dc1efdf4a6accc811e0fc7919e4b623ec4a517879cc9e9934e414a183b88d9109a7eacf66ece3278410635478ad80b27b2af5b010d7c4ed01b0d8879a2810832aa723fd8908e4130e0516e18485c9c075f6cf2efbc8580d7a9d19f02cf8af7be06937674409143009a0200aaa387b0385fde67c29763df6661488ed68f2013a6dd07fe298422ddf4dde67c21d8b272838b79bc25470bccccb8925e17bb728421c8902474f68431361b74c5442f304bee8cac047697459484a6213c9bbb8a81b087f47087dbf3849f3992f5d8163b3871e43d37a8b62756a018113f092a7f73b3da11d18343ed607f702abc46664bdf0bfa1061184bde5ddf16dd53fee03bae36df85377a39ae7fa66784edec3ab25c044011ff73fa4b33459a9ea69f889a6bd437bc727d1facad95a45dfd493f39c02e73cd4524775f760cdc7a4b9095af1b67faa2b19a5d94c7b14563727a5dedda0b7aef311d65d024cb7124bebe80cb057ea1a8caeb3c22960762e467ec9d4e8acd2218199c4d64f09cb37288b054b8493a2fd5fd6e903e456747cd824953ab765f3aff770bb72ca0f4d58561fc6d37a91d8af4390994cefea10642690debbea9cfdf6ba42547a77ea10658e9a5e8545fd273873822a3ee842e847ff00072f31183a95f953dfb6ae67fcc0b32879378d69216650a44806410c9e674b478eccaf205ab0a57c589ea6b99205af15dea6bf55b1143f547943194c6f442b92d2d2bd910687e7c7eaef706b0dce7603b951d847b79468dbaef8f547f9d6c580dd10acef478240ecb2da3a1a0221acca3e4b04a111f1830af5d28a045c0d429f9e18b109b01e9b2ae43f784272b010afb1d7929ab9494530468dfd3516c5f74ac891e75c960f37c136a1bb236d6cc03c74888ecd0d0fdcfdca7aab8ab33ffca5709eb96572d292ea8a9eca5641b335be07a003afbd4ce5623c1d62090ca221a05ee1c425e0abc85fc3cb6f6090ad4c9e43ce1d76e49d4e76655d5f6ef64f896bb64b3f0600275d4c1f480ea224204667414c1bf0ab82ee5d571829e5d7aa0f6d91c4728cc7c3e2130b16e9a7fdedbc684afdfb091903b309bf1c55f4eff30214e0ac5770af5e0aefcb17f8579b93f757ca50dac9c4515f34bd3fd5e485d90afc427aa74cf9e6b3baff6b4f9eec09bca04f780e9cf03121a3b963121c277819ba7c7af5e4b7e76a8f73a0c6aa0e55593a8d17871a087f26394fa2c3d6a7388d8e304302fb843b02a8ae6e09ac6d8d70863dc4059c90fe8011667fa4b10383cee142368e35950f207165bec970c2f01ac0e10cac519470da287c409762e0dfd823cb563636607a7b1800fb6e06acc72f25104beade44b5ab3133e968c4eecb48e37eb0a56e75773dff02a0992efab3c43fed26ffd49e02f376e8aecf7b54b18997574d04a260d6281ff4f9b5e8ec24e7c6220cbad7f2cbfd16eefa24696a1d1c04aedb3d38da5256f2f42d43a4e4acabadddd9973805761f0f0607dd67fa755963657ec185e6961986d8bad3ba5a13536ed2e3c97b2bf4f4e1517caa0b420e4adc2de50eb240a3fa194ccdc04e795795fdecc79d4e392e1ece72fbb33b44d57298035086fb99edfccc5c973a29b1f8e5aa9e07d0799ee929ea9eef1564b6a5069ad9e4fc05f334dab17c3e56d2d040767db42b882b2236970efa8e126ba4c23b38db48b05a3e462786753da0642c01c49bad2f00a7b289634014a53d909665fff7afefb2e2abf05beccf35fd6652ce0e8609edfe92542a7391726bf3dede6d57fde9a2ec5465410af252511e97b5937c5781842c1dc18cd6105d7f08f5c5255a7504f591348974004e9f82244d9489d0ef310cf98f12be81fc11085c91681747ce0c3a8359af80e0bc1ef5aa08e3cea9ac7cfa69d35fa1a0af879f05f62b869218af5c36ad437028f8a9654e52bfa4db375ba35440983049ca545913ce4e793319b0b012b50984cca42ce93b17faeb6d4a4db054ab941f5edd94a23ba363a9e5a60fbe416d85756ddd04302659195895645abc507b1e7a55204d61fa4baddec253def250baf0dbf7bdcb1a3cc21314cbf0198a7ac9e3bb6a146b315d1641a7976b76708a83a558672f90057ade5d33e2931047fdd02b7c07951b255b9defb8c06da5b09d5da8cf160196a2bcd285a7f0c01000a5620d59f419332ba261d1e31bdf3ea9dc54fe824eff72d26c41910e8bcb11ea552d67e9f94b2feaf7e5d0a951c95ba6761d5245586bef00f961461bc8046ca425041ac102d731f9613323396ff6af0efe62170c8091ba03181d997b27122a73da84af47ac45b26027929a89550d799ad5e6e280926e853523967c64a37dd6820eb273bb44052d630b1c0414801f160d2d020f857f8e0c7fe90f16ae2351d630d90e0cb61679a32e26309451581b35a4907db1b7b03f170553457a0529b9a2cc9c6e9ae50dac67164d22f05a23652cff58647984c44665c3201fc40fc150a3589c88fb3e6f226fa3762e809232ccdbc274f38f801ada052781acd701a47f384f7d0871607310e7aeb7576b7df426e196421d4e2c726f7edec19b27ecda5ccdea59ec5c94ef823f1a4816fb81f1ff4da3ff1299ff5aedbfd23e9b90fbd01fab3b20d978ed8b9f3be36505f082525aa43cfeb743fb9db817a63c64c7dee5b7589538775e87c4d43c6b4b29ba77a16a73f38b6709969cfb5be2160609d9121efe04b3eef808a7f0769e1756e1439e7d8c021f5a6ad8c6c6c5639ca7bf4b1c6c9e16d282554a2d87c2ddedb4223ea75aa67541e84bc5405536c178648a09b8558e215595d867a07630460f98102e88403d3dd7c762455cdf97cdac77419754f664c8a116831ea154ca853faf003e1da94efd3a9ec1c603417013ef444a7c72d557c8f29921bc462f2c7692843d7dcaba6c82289c19a7836762107d468ee6c14e08923a25a3acdb3c61fbdaea50a283ea3e1a77b0a975326e42795244e08582038f708198cd117a51c02acfeb38c3c659344921e5a5f3d677f1bc7c8f4766828dbee3781023c4b64f2f8ea65525baf027bdf080cfd1befadc085c2010fb4546f4bbd4aec05bb0615c102120d78b7cb6e2909066891e4428ece5f073da9affff2154a3c49f3c9716133a9d9f1b175c4c483da8bc1e136c53a501bf64f53106ad39701e1dfae63a78ae3595d409201456b076d881cee587715b0d9da9a8eb841ab10d96f908e5650c238f1bdaaad6fa32644c523db647ed5bb2c1e407b279fcb27a92138bb70b959628d2e25b5065ba38d2dda5a6906c8bce3694254cb20a1416deb70e24f6abfcc38fd6e4fc32045dcdafbf6f341c2f742bca715505fc7dde2d28fe11d9d2b1fef9e91ebab432bb6d0a66a5a5ab3e7ed24657c9adfaa07ebbe88b0e1739c3855680627c3d63d195fe0a34d9821d951d193e27faa78a9e59de57b9d128b3cc2978949c228ca08b8ba221651fddc46d57e7d43a2238e715a145326f556096d1ec644651886da442656fa7c7e91944197a0adbfd758ac4872e09c00404dd15bdf8d392e040c126b37b0092d036268e32b89d71d56d1767d4a01d735cc4edb0f6301d5d887b399e445a66af901429a21f29ca0d5ae374aa078665958e4bd3a802e950ca970f1df44754ca3db3eb5f52a1adb7494c40eb324a50351da08a1ec911c7d7fbad0aa96eb17cfbfd88c886e1de78b605a380b40c0ea8508a69742baf68f2ce8fca772d6790b1286c6b204478b5dee021c5a4caad9292320f2f76aa134032246c6bc5033e1bd2f8052bd313c4e3c118525096d4e3e98595d053cae6c63b29455fb1d528055b1e38e772a706db54861864f5e8045d3d4b2c5d8821f7d34868f92dc53f515fbc77a2b07bcf60eaf1f7693fa824fb11fc5deba9399dc1f963b5e819557c9701bb07e157565bcc861894003d49111875e93ec5a5c9c2c3d04236338a61fd45a3eaea25fc3ec64082f9e8e575fc7f2257f7893a8aadbe1a8607a426164cba1503a512396b783627903a24052d7f969ea8e5b07becbb1463ce26ceed0a5dda08600a5632dd2a0a9e5fb78f9963fdca4073722429c2753762a1b072326a6ee84322073a2078eedb3a640e368b98d42ee96f276e0f6fbb72df6b8695ff71b4ccff64a13dda1426510363b8ae84b0d297470bdfff2e8245a6f6760b41fb7635c64fd667f7ffa1b7b82e77d27f9495d56f6159ee4a0cf6e7f83ecac58a8f25c89084a0a218ec8908719245860f9512c8c41fab1a21098dc0868ce767690350c4bf36fcc983c6a64812168d9a5647839084637419b824610a924c050441950ac6393eeca6026003efa50c196e04125071261591277f98e02eeef16b960de763218615dc0278c48daea6e16b3f0ef4223529d7482d5114e03b72816cb243557fb7fc7f2fba49af59117c47217e13f61f496a90171db5179ad45702c4fa0a5656d64a456e30a0abc5786166348d26df9bb33c3f68f368ab9685b5f816f585d7072bbd26460db5f521467021ae3d011b8c91970481d9b90e7605592eee76837ad387743e19328112a02656743801d5b7c853f2c335b10671c4d300859314b9490d9cb1e4439c53e887088f0abc82d1e5f1ad60d54b4c54465ec89b299acc202803c57d395120c99667e735328c4e1ee1ed9b5ca2e62de2e42d35ca164b86bec2181a04ad807281cb01f6c2d0271a6beb0c2713cd9ab8f26e33e6c38964984ff2e6fbe61fac53a45f1e2cc810456270c5a421aea1a4eb5c1117921cea4e34f3c705c82a60090943d5a831f3225ad26eda0ad76a6299810b0f2aa723b2a01db1c648220c4478cf270f86edb490191dd1628a013c286f7aa470ae6f3d4847eced9acb63e0e1e437a9bd587c969a4d9e501e18db9d552acb4f204faf9e1ece7a9e9fdce34d05ea980fa160333657e132fccc947fcbd60c9511082390f29f2d2f38b1448547ec17e59fa32bdbbf31717ba4ed921949cc991cb5a780f33ce2b2a9d83e10a328b79f1cc8c4fcad6bd08cad230c483c6fd1225b5010e78f17fe9c42a03905e4d8df4b1802ed574474f000e796805881684a1e020ebef532bce032c4fa11c6ad747a4cb9e3ddd7bac89a303b58fb31e2cb79d5eb393851226bf5809d5b264c177a6505cfb223bb2f59d3bdad0c2430fdf7ebfd468ab3d2336f3ebab4c1093aa397c0ce360c08c396470d1adc0876f209ebb00298fd8a39ce08509dae27c3b538fe429f5036c1d63093109b4a2a54f6a4fadfd29db2cdb7947ff10bb7b3cf8f06e7039474eb3ed99aa2195df96f7f3c82c31c6b5e5ff23798bae4f8d895f940397367acc436ee22183c379c55d43040f68ba7347ef3e0c928f62efa1af573093e8bfe838abde336f9d2ef519d2be23b53792014c0ebfd832dd7ba6befe65880522434b83e93ec0e3b7d87f497917eecb56cf2cd121725d5d97df7d06c344fbc420259530416416c00f0ca0aec74105546c34aac9a5b79a50253f62b906d1dda9118d38891c4f867124c22216622fc5ac3c59be2b748b06ba930e48f2abae265e5dd764cfc089676091a4a7284f64ace310239ceb06684be32012059cfd324bcd215eb00fa3eb16527059d3d415579dfa7ae3b6bcb5ea13ecac0e72d88bc9d500138627cd2aa3aa10e4c10ef62757291953850d2025ca0879f6af687ff183bb4323981d576b04e4be7fa4aaa442782bd82e2f082585608ef769796e2ae0fcc766c3e6e6b9f04d17f7c8a53a7801354b0f40ca574fbdb84d2098417d40dbf8bc24e9aeaf7abd30139d8e58aa31a29cfed0a5265ab7f2ee8d02e1013859dd656c491fb7be3e4602ff53134b2f0f5120b57d3c9a6543284400b8d3695b3fe02421220cebf0253bff93a9c5014119f8d2e97517b8f815eeb237e0980c6b90523004a4ca6ee8baa006c359e700feb16ca4bf42302a8141d24a0f9fb8234d4b9ffbd09f7ad8d1ce24ba42a18fe8d19873cc52c68bac230c27b5116762018dfa57cd8e920901bc0c37856f7b558b71b4826840f99f81ce6ef59efc5cae00b8419cb58de3bf4922202040c02ef6d3e216b004d7097f30f45f9a268e815e088adb76c642474af5118e0f8db609373df1887652442331cf05f4f9e9f3edbe3c8fab137d68bfc5401d98b683066f465b7a9d29051eb23108ad20301fbd0133810d13eb46e941cf1c984b26e29bcb4ff3ad82401cfac724f791254aaf046f7a6a2c77f3bf03ac2803e7d5599e8b96cca035bde0ff307a397970516322d839a0d8a2209656c16d2b6e0f28dcea28a722faecb375e45f7704157055f2e42aff376864cb89093ea8328fee02581e70d90f8ad60368b5fa85f61b77ab8b583501f3abe35c099d7f721ae6e7c51471ac0487d5feb27567d3443efe50004844da27e0b7f8f395a2af83cbdfcc81b6cd0bc3ff975384fb42f9e4af65498c4aa966d1a8c08a8195c0bb8fea64d7bf0645d0e67b8a894ded05e842ebb7ff361c94c170e9b54a0dbe3ae0602a377c7bac1fdc09ac05224f9677900815578de40e9e674243384b9aa4b4bcace55f483268ccdcebc7810fc9f6e833946939ba5f9654e116d284609d0ff2db77e10e8fe6597825efd28054ad7e455ec8bf07ca2bb82e1c3c0cc95aa37c37b38b4c70e0c78384cb33fc39023879fa309a868bbeceeebf17814d3c6d3560227bf188aacbca1eeb8a92c3f625a5fdebe1070a1dc418b0571968c4b8047cab8d6211c1cd655666e1f4ddbdfaa5b500f283064057f468cabb4cb7a2f276018a4e372926be090a50d98a06c0724287d004a14ce16f0d5b26846424279df4139ca999fd5d98ac158e878f2b04a5347b62c088bbb978b142c18591f7ed04c1c3f28b846abdc249431cf79759c85fe459eb9d004fe1d1cf8593a36ada96b4871b555c70c8d4424a8c0c802a1873bd0b8457eef7db30a7d0f4b7c02d518aadc0789590451fcf61fcd7d5f4af2802807738d987670e0e8f12229102e8417af3a1313bfcbceb12248168f84c3a585606623a70f387b595109bb8265c4717107c5b455c31d8e2cdb28f57c6098f5268dfb4d655a74270492f9685d9f1d67a670c11a57811bed18637aea67837d425c942fe0a52500c0dc9d7aae0bc347299798a6471190c0e857c35d86c57db8aa5359af018be1fe245fe5c6864891951cb1fbf9a682076d6057b903821881269505b658367131f04cb33e403f2a9cab7550c2b680e1d2aa3787c00ea1a258ed132392d155abdfb2d4204a338823241b1bf6d2448a30caa46bc7ca433992d254f7be5de35079dbf972e247c81c30940565251ea627b317caf505d5ea818f41f46dc9c1a7ef4aeb8ed6a80553b219456cb345ffc55616a5050a3ddb2c9c09884b49b0c2b4bdf27a313b92793a8bdb2e8151a17877cc7c98840a094dac122f1efc9f6994c436afc54e2243ac2964a22c94606d07d4ae02594a5c129c76f2c89e97914790d1475f2616cf4810c170aa2260bcc8ba02c4d0abe739b145dcbfa686b1facf0be74302c3679d8859b43fa239f08e20be0b48d1d5f2feaba6116d2088e20b0068ca0c116123a7fe6def88dffbb4e41d4f90c904c3d861642d02b4920e39eb527178070831e5ebdb00abb8883c2a7a2524968ac4f4e22f0eb1f6b7e9dba6987b836949b1298cb375470a6505a591e613b4943d5bcb04090e5117ce56e967237a1046ed8c7d5ccb3865e5921d6e0c751ff071e8966c41402b977608bc901a8cc33ea301b4838a7da8a295123e6696bcbdef9f28aea45173e96b38dde0717244493f285e330182721c4b61c1af304783dd3e51f2558651e1bf5ebe95e6bae8c6a666f901e8141ca50e0e00ddd80cfdb48e8ed2f8fddf34d30e2196255ff69d5ccd649ef0a11a599a6dca7d1792ef3c027e4998d04e64463f1565b4348dd91b3936ffc82852515c1456682eff1ba2e6682ae9136b11543cc39d621cc18600a1c7b1de3785980ef014f1e72ba71f6934a1ee425a6d32f3d823caf0584631d24ae1fcdd8e2cbdfbd4ecf183774ae027f94efc979e7115c88d9217976f043db94ee773d1616204b262a6b89495a14e9abab0fd9abcb7b53a5891d093323eb6568a529dacf8302edb8876f5ca749af6cc6815e99a0b50978b6120c2bd4b7400cd7e450b4ae8e0abdfc9bcde7f780b59d2b702acb6a516b7ad479e48cbd0729aea846a6dea530550755817edc1d216a5e80dd472f3765510738f8bc68fcca0812a1e0aef4b8fe4ad8ef6bdec6686dcd9ab65d71d5a35ccb3f8a739db1507b1e4d2891eeec7e9547b9c1554dc91898dc5ecedaf98290156ffaa07af1cdefe5b86a55409d94805460d8094dee613cacb79f0d6cb9036fe3344687a492ffc1d9d581caa1fcc2b8ff8ec13cd0a3dc086efc357073feb2b8bf8bb69416f438a5087f52b5fe85e18805721d26b43f0ee7116c0ed2b2865afeec300fa683d0124966f7e9e4abeced844233414a6492044a722c1c98c5c8c09a127d0a51a50c8e2dd737d2e61a637c2b6b749de894443713c4dd86155ffb7862d7de592d0c784f28d29cf7d54c9aa6342d3ed1cef0cdbbce47690e6cd214a26f25f31a325b3336e941bd82caeaa377b56b794fd9765e22aa320004824958cd10bfdec80d3c9ae8f09017b85a2318ed7a4948d3a86dbc08c31210d99238cf983ee409b4e062ac49f279bcc7a941ef779f19007097890be085ac5a94a92835795aacb27de8d391237d8bd09dc2492639f0e7a7c5b9c7b045ba9828e3e452bd87d33aef7ba0f6f0669585af78d21c137c09a07c092d4c67d86a5d00658b8c8679cfcc5b044281e8000a1d1d34700f92a0790cd67b3d1422ef6f1ed2775da5d95d7cc106c365e1245734787ae8259b0c82fc48b4716db6f42cead56c370d4d6701375303c87adb8b7973a05c51e046ac2068ef8cea6b80541d6c2b2c643b924e59da4b0064b2415bc9a285fcfebe4605a54356f7b54b880c533aaff438a724b3e89d87ac5bc663215b7bce98326cee5284f7735f00d8e72984f9fe70cfcaad0399d5758b187b71d145f9de6c573a8444a79172324a4bf33541d274dea1cdab911be04103c134908e2be916ad16f988017c2e0b25f59c682384ae256f75db98e026d75aa882499af555b83a45bc9b5216dc5f84aa6cb46411e8ea1c9494bb447b9b01158aff9647fd0da5db852aade338055bf41e061d38ee7c3261980e9dc20ddcb264b2cc7a33e1d696044bf340883b08e8a5a636b8c471f02054e0e1f1f754c0683cbd9271fefdf7c3cccd39b6052a12b5388db0b37933aa0100694c04a81125a5cbe085a6486ee1765816c1c689caf860098cceb0a004253ded911e817e209ecdb2e41e03d6f0f1440a9627a66230002c895f244529c28f02a98184ac9f4ed5122864ed67f4ad5fadab9e8527c6857f25f049ea86d328eb59f0dd40a6c55909bd11d7d7c5240428ff64fe5e653fade30ccaa3a7854ae88736f544f69a593ff1cf25a4ead75836601bc9291c321b2278148a935ec60e164ee75609c842bb51d0ca74c742d450c2215ae31ce8bd431e423b56d19810ae64c7c9d4922a40e2c5179dc8013b11f0015f5a5566a69c9341d6e2775041cbf4106514bd74b9b5b72ca1dd1d02785be638730a1dfa0c3ebf3f5d30291029a6e7c58b648104d74fa3e956799ed5ce034ae01a7bdeab55663806caa9b9918dbeeb9061eebea22a16a10824726bbdb285b01ab2d14ab9bb478a144ebb72e85db03ec46bca44f6ea9f3715f29bad960a583b469fa06d30f5096386de99292be16975a334aca28ae2f10a1e23f92a3f0c015d815682e133043cd6bc800a72b157c4de0801a49307c3c975933d3a1093e19ba1baa0205ce1730fdd1fa33a47c848767ae0d3a577023df598eb25052aab020a2aececdb026fcc91a1424020a9c8cc4c718c87779f373b4a127a093927c24bec0514a614dad3d74a68ffe10e0185850832828dfdc5e03992baad72de5211e4274ad1041453e431793564268b8e4e3eb5a9e06dc1b6977c105f8b98036f0c7163fd7cdfa4a6c7f146b4903bc6e03bd80d730abcb714a4c3cda4c17688113554ae5b365c430426756f3466f2cd90843a54f3ab26f087d17c796903333f5de755a0d570b43f90c88ebd53ce76d596d2d1577f82562a28c749df18a014c710f6fc516acf232a5014fee592cbab34c0a36c70feb6b567da5fd3bb73f2f34b90899bb31944e559ae6dd6580d6445bf770bcad838b90b522ad771919e02ec0e906d3a8d10cfbc3d0da5c31005a8a8ea3bbd841646fa9d134d00dc9f21bf9e834a98e411e56ae2b3b6be325280643c22ecdbd7d52f1bafe7884163e2292e3fa65e4286d91b48cbb3018807a0832e9a14105b75986795a8d7a435dbc49f0d7d6f70f9e6a3ae8e3e8315008f77f026845c778999b2c0bb51b7dac4206f2bb98a0adce72adc4ceb04980e76612d1470732f7f4cc714384eb926403ceb4142a02ffdfe51dfa3105ef53e4ab46617e2f1805847c796461ea1a80b70897e44013b80bc292df809d14c12ab5f8432ba0d47d9bbb70d7c5e0af78a64bf15b34d412021ee1d87b238eeeae8606326986b216913948628b90d258929d0b6c546208cc2d356c1e60f7c6115a4b79057fbddfeae50bfe4e16542d3966cb41e44ac5fa7fac9a909cc50f7ad6014e0d92eacb15d672f558cd584777e8aa805afeec722e588bd0cd65a9a489e13bbe7845bc1d59c8400102e2987a88fb16132533583d63f4d34739e59541262d33c877a8948075fcbdfc993a94884d5e19503f2bc9e010e678d9e4b58b782142a6d8bd0c5c116f22181db7b0c5aab4692a149d9ca4aab439471bd5dc9e085d85c304cacdc1444e2c5d6ea5eb0472cf1f3559667090679995d462145e8d5fd5a4b0be34ec33531efd012fba7e6a74d5bfc751110df2dd67471c84a801821da7e056c8d3d17e3c4931515bd0e14015439975512440d43b1f7a9565402560495acd889fedf7e4269b1cca10c327bbd48b4b1414ad7e8127e63bc46982f724cc77c2a4bdc6a835330ac55c7267d16a22293489b3a897172b8889b85e7657b8e29a7bd05ffb3dc6089899e370e5a7e182131ad9fde206a27cd7c83ff354c1dd89877776fd25b2e0429b09e3484371ca0b337dfd2127ea883c63ebd20a0ca04ea2c0197bcef24adf65f372ed06a77a23a7652b4c18e8ff5e9d20b308ff3b08385b28d27540f356d01424ee698a8a89c419bb78099783569440fdaaf224cb15430dae62d552742f1ae663b7ab8b4dbf37b14f1d1909d89c388a30dd1488df000a831efd1629682a42ce8479a41576e5ed4e7f55b4b0d515aa60ed435c7975628414c66a8309c54824dfd752bfc3f2ce8da5376cd09dbff270b168910a64194c818327283750004c5510298a43854c910342119343f0aacc79901726a623275e803b1f2bcf9afa8933d0e30be57829432d155c0eb2ca5195ec8703056d32b69fc13b4cff97f46dc1c09499c3568be83944a528a2eaf8de0fcfd057735376f08bd772a0bdf34e4423032d31498ad75c658943047aa431c8a97e466887a2048ed295d45225b8c8a398120c454dcb6a36b8a0d62d5ab4c0d548534f2660c05fbe574592b54f92cc7f920cfdc0a338c671ad0798c09f9cb610f5918df115a54dddd11912e2b7dd79cff81b926550f509371a49227795de04ca0abfddaa47e5daf08d93befd9f9f6f69b577af50d862757a56683a7a133112a3062b54cd0c194680f75f14d7c9e37cc9c2ea558940aa7e1d86fd4d2e5810311868629fbe32b1ec76ce26390098953e7cc141181bd6b0f5bc01c29ccc5ce058e936ab229e08246a01e4b9c92df9deb473a0d5b024feb556c9834e3cf2abc57d3a346738ad7d66da28778e03a1ad1516c512864a910bfd41f2a6c40ea84deae0a660298dd9473f22abbf14ffc42edfa3a9ccb886ba4c1ab7d53fba25216c12f73981cb576a85e84d87e9ee8ce7da5b755f9caf3900311699cfe98a5340db5afcdcbca2f10ae8ab38771186e5a121f4f3d9fc60ea9f8e3a6332e2e3f7763112322c91e51e5ab5c24cf17371358b2392ef87116549e95a05592266c0a0b039e9aafd022a500cdc3d80121d308ae49231e3115cf00b3794b47b29bfae3aff565ca294df9990483943b5c2ddce77916c7a5c9f09d77b0e9dad3a727577587c9398a16acd4d44f18db5b94a3ef003794035ca1218cf23236fd51ff6d641e784486193199e4151117aa5fd36a74fbcb25813d088aec4057d4f869132e2e13058c7a9680fc4cd8c507432d190772ba68aa182915b3194bbbe30b41331cc3a3e29b66190b35e5ead331546556677dcbad98c14c1c1c5c3962c667021a35c69b08b5811570b0f5d1d50683b8a258b6b8dc94e88debc19ad75c04d32146256822b029100c04eff847906f2424fcd96c5a901593e1601adf8c0a2e322326454251ee106990f02edcd1460e3e892ee291b16881f69343145e8cd06392f2970f05db7cd10840f1712df6869a0f97f09c47b325085e5ae0641b03c70aacd070d13082896a9b8d58e46ae5e79884feb6d65e927d6c9961577dc2eaa911779a7bad68bc1c226e4510c72d37e676f82a0f0a841c54020c170c6fd1ce5bb70764406cc4180bebdc53ee4558a0c636a1cb47d160b13e38dde5b9cd8f6069dad431190398b7ab1cfeda404f8be99c7b89b84040f859262cc077d0524843e99945c4f22308b2e91f92eba1e2230aa091fd672eb7cb562232eb24a39b2677fef80eda76861e5b15011c1a2e8edc163158e16797259650b203daf7a14e6f340c5d3faf69312584af30ae58802ee030ef26ad00de98f8471f626e72dc2187b17e9bd187ac9dc500f7df07ecedcad90310bc9d6f6740ad40004fa17c79e5820d65d491be14a011dcb2a2464532ac717a976330bf8fb967cdbd5a1d333ecf907a5ceb06fd4774786cd1ac5168312cf06009211c8ed94efb15f79ab6bdfb6bf13f1102dfd3351d68e9f3abad96eb23591d422bbbbbb7b07e809030aef093c62d310371e1467bed8000200d76a5615c1c68362d56ed64ed4c020a1713c56ffa84c49fa940cc76393d90f8786099dff519972f42920343655699a21dfc814a544584d6d16abc55ac0bd4e96a24f00bce20c63bf7f613fd98bfdfe66bfb7b19fcc66bfafd9ef6976fcad87d78e3f2313807d9762ac3a00f693c5ec23f0bbba61765795587bebe1d656bef0b5192b850c795149c4c8130dcd4a66bb4533b7c826de1a6ca846da2be32794e2d7592d7a82eeeeacce20cd4dc65540f90e03e1956174c29a929d98c309e612b5d4526a7304750d6e742909fa63439b2f8a45e9bb6984c4d13da69f2c7467c3060ea8a7352ed0d363200f1b3f29d80e2c5b89f12a2ed9c031a70a7a98224af61003a98739b3969b27b596ba750d6ed6e680edc0a68079c2107b2ad7dd64d77cfa00e991a4bb272507074384c51b9ca09e13a4d332ed23d9bdecd4340ec21c4058747824699c788f83c71321142870499e4c6089af9933e79c37af9cb51cadca5a4a2dc6ac25725c2dad28a0a0a84729e39cdc8d5c9c9372b7c975453b5d3fddf5a29552ea73360562268a354c6147a8c778bbd7bdf5c618f647eea5dfcbbbd7751c6e90b454d35e9a8631c6f0f5040dbd7bbd5e37f595eac109d8b6cda440cf56a2ae7ccd3f2b5150bed6287d6e3fa067cd3519738e44a76eb7107ceb1add1ba5ab6779f77af48d1f48a33a75fb7cb4845eeb57ff6171f3c1a4ebea36e08d6da5e2a2c32d97d0b0d68aa37af5ea3da48f4ef9933ed87fe00d1b9046fdf95a7bacb857372e28c2fc299723c2aaf7b89ed384ee707ca5dceb9ff5ea35b4d698fded6cbd48e4b2e81efa4db8b3e6d5d66aab566b8550636b710f1b289b27ad6badb5626c2dbe97da9a61ce424ea1f49aa7a680f2fe56725dcae70fc95d87db8f249f720d1e818efd6e21685d4af9b83c8d61bff520499f7cfdeb59dee1ccacdebad452bb74cbc2d8a93fb5313f1eea394ce8e8f03b1bdfe5ef6c04117940f0a94fc046ecb181f1955bb781e17ec01ec661b89d085379cba9e35039f5964a65edb4dee148ff1cee43af5eef9b47e0af76375fc5e5bbbd796b66ac5e44f3b735d7a217893b8beeb133c25eacb1a7a63408836c9ca0a1db3ce90c6fc41e9eba0eca716bfd9703fc0895a530c59239e77c3913aa403f2a525cf96e7e7743458a2a2ffd4238009f2b8f744c3bad8dd833b9686f62ec6525fc15125ad76822e8ee35f5b8f1c9c8c989d29dd6ae27daecbb07841cbfd9f19b9d9c69a79d5c274461f186ced8e38947e2c30d16a53bd7cdb44eb687a7efde151f1d5e18bc2139013c1ad1e32bdef833b91b8f277ac742945e348e9fc713dd81d0d4c64e8dcb837beb14c2fa8426e3cf631ed08c3f9779402f7f3ef380686afc39cd03b2f1e7350fe806e8853fbf794030fcf98b0784e3cf613c20f7e7380f68fb738f47d128cee25014d49316e8049b20d3a65a69560bc6152333f3a2a9b1b9790123c6ce8943e094606f71c9de31081821f02d16f98e40bcf8b7450ee06c910867c32adc740163835e606c08051b2e5e6cb0cb8b0d9950b3849b0d72e102914073049b0d6ed9d08ad7bf0d12e1f14498250b94624608341bbc7205fe40c6ca6b8355aa4027629a98d9a014297009d70e6436a88412d0063172a47c1757b04274f832c104aa7e535a06dafc79de1ed0ca9fab1e900662b560fc790be601c5600995222cc2a3088b70166157871b52f9d61061114884dddd23df1d1461f127c2eedc3442c4e42ba10df611a1d7633f22a4fffa91095383980d2691049c41eb896b834e9cc017b05c00b3c1a424a8024d446b834c98c0215625606d70c98641a842a03758540481d8fe6d90038f27422248c443feb725516d48bce4b06160db84ba5460a340de8c709100feb745e0f1d8b01f70ff6d34a4b621591860ff6d0bc05b902b09a8ff3604dc0d862a3b361d8f27e6701160fedb06f078220e1c3df2dff602dd6cd8686126fedb781e4fdcd9596126ca1c188fe72ac1e43bc8838ffe82c60ad72bde7c9934954b2f1551dfe13cbcf7ba2097ea8a3d5caa2b7979af4fbf4eabf499e43141de2b6797e4e3ad1cf5819215514e78c20a2624796baf8d22022a8eb4cc20b4554e6baf8d126308e003b254cc66fcf704119a9e6e32f820c20d7484986e2b9d544a55a781a7d5d61ec408022c5e869002135e9521b0787babac13abba24f65a0f500185882e332080082d88c8428414965a79ade840d477ae262dff59419abd752b2ba8c2cf6865055bbcafffacac6009aff1b5935a6b6555751a883ff1753904097fba94daa5690d07347c81f672b41556a06fe09376e9100a7679a296cae56af3ecd287e54f05e3adfd038c647a297db5e5924c624b2852098da3aef1f0df6cdcb839e3f672c0417e914b4a345dd1c24546111931514a82a90a16984df444b32e9d1c49d1e535d73fa85baee35e3bd5e876afd491b9f768743afe48f25af3f8da9f56edcd5b1bca7ef86ff3e5f6432a752a4e3ad9f4bee224f66c3f282795224cfac67539c0d7a620ba518b21bac6e100a5930893526cf9e8d8877e88531c0e503a892fc24b55d6f793dd2d5f9b1b3ea9924bac7db7a4c1e3914eb74c220bddc9a497d2659254924ea62ade1c68299a25d6dffb10699e53a99f08a376372152f9e679cf5c46b4713f14e0cb972f5e868664444f843411103fb2ec3fbc2f4c43431b07c44bb6b9b681709916a16ac36000a8a7360b8f87fab667bc17a8e74de3b940bde605fae76afbc9729ecc5ef9f7da7eb299b236a79abeb3f154c79ed44ea5b05b9b9a975a9b4a610b3f40733efaa05b0015e7e63acf49b738454884d52011d6da50a6b71019abceda6f0312614f3ca7d586bfc1e0af74b4ecbfa62e4eb081171261408238c91a366af8208b0f8ad0d24163508e1f1c3fabee6979326933267ab28986bc2d507b50849a036204ddbd26a72041342a45ff1e5f9a2d740f186650fa091aace1439a3ab5d1ce7b29941406494e7c771f8a25ffa0e8011449e4f7a0a0031d20e9e04807464f4af4d139e6407b4f3aba7a1e8a96077bdf692c4eae1f70f947c58ad2fbfca36205cac74dc70d9de6f9e83f31f6000ad347bf7175310f9db07179b1f70f650bd7412ee6a39297363b9e94a1a1c7e17df952857ffebe53a2c4119a943d1e4cd22ea0ef8c62cb3f2a5054f919ffa84091e56f3c071609709dfacee53cc6a853a713fa4d84d15777f394d640eb1a50a296c881d148f1e6cdf775f3eac0adc2071f7af0c10808a3f6644a6ada56fdd198c07acd73e2f8b17506d1a28d299e84c41e2de7e7e6f3f9d430a7c3776308a4117dce185a340f204286c01b48208de873ce3967f62d5fb35b5a0a97642cfab66b804990467449e3c4b6715049c6a211349cddca492e093a8930a5196848f4809e13af367d0781f0d1a1f682ed586bed0f8e9f396b0c95392ea59c1648108dc61e307430ebd893650e3a2727eb9e3acf698324864a1f93f8e81148bc745a2dbe4ac0854bc7d7cd0bb6038b9ee350443a0399e3318609fde6bcf9be6e5e43c87f54a424c107461cc90faaeec8630ee624a5a41566598b571ac74ca1d5b6edd06c861b0f96b5de04122f63b7cd0e95abdc45232492c112c96ab5ba77b55addd5beabd5be2b1a2628053669abec03644ae19d73be57a54ab15c4378fa0e02e10ee1bbc515b6d0b44beb15d113cc72cd72205ca653ad96cf5cb692b158bef220da5b6eb9202c16f783b1e690c034db8ab2d564e57acfb4b761acb997f6b29d63bc2d8614d7a8c21c6c824d183d0a248813cb4226b026650d36d4ab03124c31ce5a8cc577db711d634c65c9d3d7121a363d2939cffa2cb41642bbc5802dcd153de31f134a147d9e21d3fbc95abef2202cd72cd7b820ad16079764ac1e090291b8199e0c2aadb4de489e04d19a6b0e1ac9982a6b5f79d4b20749d5d6b4ed83eb208f191ab5d44a55b780bcafdb1b5596834d345030b9a48d91f65e8bb7eb58d35a19ceec972926e7a008b3fda0f9ccc544d84443636313f51d0402c6d0a9060aed69160162fc6dad95cbc807edeba6f55a5a9310b6739ff041cb67bf1267d61602244814aa9a5bfbbe28349c6932e3317be6b21897d94440b82c867b3206e33397cd7042b64d47087d5d534d81db0c5036e35a6efd7bc2072a71db1ea4aace029f39214e1a0b6a31b24613502d278678973f277af837e3da2ac77be50f8e7bf175c5ec2793d94fb6c1ec996d28a5559a6eedebac2d8403b2da42b28abb42c89018ab1eb3553131ad1696ef5e136e6292b41ef2dd562aed8a81d182f167e38507b47b88d8f786453c9eeaaaabdaac8d1383f3d4372cc24216e06c980491aca88fb361128c1de36fe3a1c198d7cd0b3249fde0c038e314dc78a85637ebc09e5fc8c8c00dbb6ae55b760d6e2e97943d60b852cf26a6998573eb880de3fdee7e38e06cb3e1fb862c783cd5e10691ace090c2d101c98bda01bfc6631cc370c5d4b4e0a6123122ef0d422f1a9a7c37ab061b5adb0ef834ae6df9b5e16b35f96e18776d3be0bf367ccd26dfddf2bc5f102a32db0ef833aed9e415d6ab9b552bbfd897a3020986cdf62056c113c023182b1a2ac1a31df121120c96667162b621a221997b10f598dbaccbc0d7616564629888e2f45a8d9cb78cdffdc2df4d14296f73a31cf16fabf1a0186506efd25a4033a3ccdeee1be5e82dcd5186de5219d77468345a6214bbf66a5ad6707eef5dab2de37ad1d768acf49c1a2a6bd8a86113e3f06d625c29fbda20131a262ed75e64168be577d3c1dae960565257ca6a9ac3a31af8a40a26c1c82d5aac9c3988b485aec92af8342b4ea5f42267184c14fd7b883defc01c448a30980405ddc123a4232638770850be8346f470efbd77e906c696906fcadb247d5c37ae7701f837e35f8c7f2fbfccbdf75cbeba01d3f227530e9fa44f6c9232363d7dd41e63f3d401db79dac6d7cdab625ac346be57a7a6e7f8852b2e6ad154e5ace9a9293e39f148dddbc3c29b57d45a6d95f5d3604e71dc1527aafcb34286504ae30ce3db44d26729e91683f64d074482494d2012eb1a2d316add232647ac293ab47359eda8c5e3a90e53bdb52317a5ede55b6c8a4f8f074bb543441767d78e5032565d83b99be52a2e3e45d88e5c22ac3a77253ead2a11234f3a30148cb642c40f7f5d734d616d3a42e8d53f2b4cbafc75ad9527eb9f15228480c1e13317a122ac7a7c8a5ce2136cc5c8ebc41596e3adf238933e51e9c5a2529c45a5d98b71f6d5595be8eb04168fb7fcb7526933345eacddfc6acb576df9dbd357a737e29cb35ee5acf49d14014b42c8248d625c8a28a20a174c3e3b86818b11dc2a8eaaf841cb0f14cb7dddbc3485525e2dd3458d1a39b09c97f0e7bd72fb41632bc54ef1462c1a8431b5a97cc5adb0735898d1424cd3b96187803eb349c6a4803ef349c6aad72001ecd9f1f1ca137b6874893d32b1676606fa054d5605d78aaf48f8f9c484998cd51aaf5ea3803d34385cb830564bc66cb6d995c7685d17b6fbc6be8207450d6f1a3ee39acc7b866b55beda19bbce26e95367723e499fab2463b3d76c6afafad25a49de99bc3736d1932c00ff118003e1b21fd56b50b25071125d74363ee2f16c8f93a0e1925f7bf28607c5193bfb0d0e2fc958c55022acba00365622c6aaffec175fe8b094af4e6304bcd482ebb0e033bcc6ae3bbbced058e0bad70cae05aed33adc56b168ba55ae53f4c1c1d5d46bb0bea8ea7878eb048cc3d5a22d787caea4b1abd11264802c0e0f8a38b83a93b1ea33bb1a25a1bef62a7c525567316e0b23bb0257671b4ba5fa0148a33acd9eff3cf07896a44f35aa4a5f5f989b2ddd59ad5c9dc5c0a01c79fb2ac276f2ca5dbb94fee0c8d662f7bdb278b55af9dc74ac6ad8c86e3dd7b0d657b05d8d64d8bc62b5f4ae4849110605e9eb920b5c9de118082488930b1e14637cddbc680f189a562e443ce54aab7516034563efea0ce7a207f4bed61b84328d0db4c592e35b133c1f8a24638ff6ea568a6d8ab64aec617975eb64afc49e1daf2daf6eb3582db1a705af6eb7b8e0d52d170b157b74bcbaed127b7086ac141e500daf6ea31ed0c5e1d52d14e973c3af5d4193ce1a016f50a6299e0f6d925688d743c3abdb99f4118057b743d207284afaf840499f9f20bc1e9e289604df049d45d315b1c73ac11bf409d280227d2854513592f5a832a948b57a5562c1abd7a59a44121e4f14bae92bec6d3af16d32feb61d3dec809bc30d07c75748e8ee3af90aa5ca857b6f7617fc6d3a62ae59bff7de7befcd2eacfc7d4cd3d9ef35394474871eefcded8e6f8d96186d1b290989b5e1124c022ec5cc40262885e9358546378185250b161832f0097289f11ac226c321a22198d603168c9618cd98a9b2d302ce3b22c524a417b2ce7e8f3d2e25a1f564ec82e3ecf737f24ae502179aa5528ab0ca52edc091d9ef756e64181b7e8d5d3d0094310f9a1fecd0474c8e68645e1a01f20b1bca70dcd84fc6e656674fd46c3240d90bae1520bfd8f069602327d8081b4528f460cd8a52339c1b185a509ed92f97d9988b6122062bca4b540cf7f1bad9f071a07036ec2263db01ffc63559b6b1a10c480097099a052d5bb4b0a033639301ca6cb866800c800d653f3ebb621a25d468412778c5a9068f0b9b0c500600d772649b8db78ebf4d4795006c3be0dbb8a623fbc6dec2965bad046852ecc8351b3ecfae45502eaf8e8b62fc05e5f21ece8597befa8b719c13a56380a2041401f4fc683cf2ded87758ac2af400b29213a50100018141e2b38fcc6dec337635aa9eb3eb51845567615719bbaeb06b1216187f9b0c64f588c991ac0032ac927c649a5d57315034f4aece78607715f1c832be18736c31646d86a30364d8c61edbd5a8a539270d5d01196f9a293f361df8b1545bd62a4c83c753fd27e38d938830bcf47872a0ab917778a9a8ce3e63acc962241425342806c8b9484786b9b6236bed415167c35f41866b8ff3c7720d67bfd7a648f1298f9b8e96e36cf8da94267caace9aaa3420db5d67b1a81ac958a5718a247db0d18b31c11bd8c9a311c5c957bf576323a4af4e93808bbe49fa5ca8177b823770d1a301257d2e9697d6ef367dbc58a0e2c502d5e4847f1b0f1516305e706d36f5e0df1614eb4cfa5ca518ab7e959a66109be849e41a20c3b53c86837120a0ecc96036cb5b7bb603aba503088b7b3f9f965431d5040d661884e7b371f0096e19c26f7999c5dfe91776aed4f3814e32767d5a245c797a1d3ac9fbbabb5a5dccc12d8fe7faeb8bdef2d76b78587a7b79f8a9b302fd9ebe5372f496eb8cbca70f92156e71bd449a44da7b4070cb25f4005eadb54619b33c78ef9c2eab5d534aea93087f0e21bcf3f51042f8faf88a5c20e43aead2716e28a5f4e592546e977edfe51faba79e6f971fdaf8c95da90586524a397bf08c909b5c4c71dc95184a2c73cef9684729a55aeac37e2174588d1f197bce418c31e6eaddfa256333ca1c78160d5db3d6da39e78b708a958e3e4498d259ebac4fba3629adf5de49f78bb02aab6d8136f3b45468daaa4eaaa4a7bfaff5461ebece3b67adb3d6f9e08ee8b448745933a7f40dc8e852e6586bf58136efb4d5da5a2f7d3c5503da6a5efa685c1de883e19ff75e6e3e9eb901d844322708b4bbcad1870847af0ea35387d5df7e221d6e3ea2536eea28e9e8ef678c53b669f8f1a472f8d58d431fb923423f1d3f1a303a945b0c133fd8f4ed021f3d86f9d6ce375538c8b7dcc519f8f85e6cca1827082e8cb272b64ec7e13a4d29a50e658e080baa7036a1bdd8732f74ecdaeae9a4004318af0e4fa96f07b878de7924a5ffb5353c74ace42b3787d84172be96883d54ae58fae70f26673ea69c1d949b320aa1e92851b048a091800103254a472238823225aaca12b808a2084931f8009213076a124150b1d24411565cb00424071441a5498b274a1ca1828a840ca321194001258b2774a02429075604f1012ba08e8a388206d98506e742045566e0011c50c1c93382154842f022841f9896506900a30bfdfc5925b31d6ca1e2892570f9c1063f10a20aa7a4292ca00297baf4de03b4748286d8040d436220c509b038610a16463429088212d397201091c088f71e65c103a474400e26152c51a50b2b3920524203140081c4850f4488c1126640437ec20d8ab042041244018a071cc1811104318222aa508227437e10842734d560092a34891a41971358e1822b50573889c1118a9802165156c8c00afa84284425210637e0815395010d1d0a9aae58c20f59a02007320a087441c413b62091021970b183126a4085962e5a806008311862042f41f890c5164aa0420b57961e6c41c24915457ca930788f8617458ba32a700941174b0491823784271db880891f48f9c149e9012ba8c20bd3153ba8429424685720216a0a2b7a00c2116a93e8040d4a5af02408239888d2c5288a2c02521841852b4b3208c11632e8efea17f0c0dfd56f8a378592a4a5274260850e626064242b000b82c0c5104244d18228c89e0b6880eed01ff43b7b309998b4f76abc21d01d26c5267800dd21843098337a7d168924f2b21a211261d3861ae8f796f39b089b6e83919b0ee82ee767ceb18123470f18629021d425a360bde8af4714e822d15ff42be3d0231194f8e8317ea5cadf20147d9ecc06a1ca5b37b2e331fd752d66479856ab85bde5b24504bf5e5a5bac61098b663387f1ee3d61ce862135bc2cd83b23ae8ff1e7436c801e5d6e3eb047ae8b71ac53a9546adb5c6f1ec3e6302e747fe5f088900d5281c0309f87f51c413f30fbc891234232273a8ff72f784377e6f3787f44c83e0feb42f579bcaf1161d66d9aa0bbf70487707840363e5c9efdc875cd596e851e108c5b37127b8a5c77e1c0c3bbdc3a11bfe101c1b78e81079472fb78569cb6f5b3368eea5dae52bd3f6b1700c6bb1c068cd722d31738f4ac0d79f077dbf820c0bb9c00eff2bc09f09d92b7c10edfa6e5f3e307c54dc74ae532fb04551e7a0a29cb6b8f4e9ee52d22307996b7fcde966bed73d3a1b9eeea5759222f665de56f53bd271fd537b79b8e560bee605d2eb5bb946318ae33f2302e1e2d7f5b0c9a8bd89fc3ec229733e2fa946b297fbbfd809ef2bc6f0cb783e5d1adb52d77ed22d15bbeca396f3ae275ec1d0cccbe4be8eb302e615e3df6be5ef772da95d7a5941216c122224622cc7a4d0d746db97deb73fbc18ad9f5bea5b90ebef6d6b6f1d1f2eb2dbf1c8caf3c48de0883b1f1819de51886eb8cb85e7bca591e146f6bb3b817616fcbbb02aeef8cbcc6197169a99cfdedbddaded78b59bf1709c71eedda3a679962a2a543239913e4d48dea6ff5cf6b80372aa703a4215d46fda6da7080af69daa66d77e71c7883f568489730534871d6a7b5b5ba66a3167bf8f377a4b86e7eca556ead7cdd6857507cb9b89b182ed0363eb0577fdff9b6b51dfb54ece54d554fbd744eb985459884f1a0d8f2a088e5c59e96fbf462d80bd4ebb197a807f45d0c3d9e58a7e42bcb5342f153ae7596eb20dd39d3bd6d5c2714535c11eb2ba7bb13929fda56f18bacdcfac6f1f0366b6e8bac7c35ab574e28fee67ae3544ea9adb6daea95eba86b4e7dc84d3ed584e2a752354498f4d636c2da37ac2897da5de70fabf1d3cd87a9b6bcab8ed141fab8f68c313aa3e2babb4518158a9f72ed75af76673de7b5d58c53fdf4a57d66cf18ab2eb3abc76cd7ae2ba7bb0239af71dd90b77adb1061d2579b48de37449874bc6354c9df3d2d5e047346224cc28f5145cfffee693192f3b4866ae4fee5b44e0a30a654ba9ab8529ef346555407ecd4354a87d89da7389ebeaeba0e299729d7a75cc5753a85b59475d2ddd3626ba03737d49bb8fc45ddbab81963d48b58eea67219261d167ba81581ee769e7a75f9439934447a518536b58c310e3c3cbef6a63a2339bff9dcf68db054caefc4d1718e15faa5b0a7b89bda91fa91b979b5cc75399f7d730dbbf2639fd107e638e7f1f514d70df994e3bdf3d8c6631c8f7197f3777358f698b3d7ec34bbb6edf7aadde5fc95a2bb9c8b71f78070b594eb088b298c539ef222d8539b6bdba67a9bd664e64d748abb29bdf5ced8dfdf7753e4af94e31961d6f1fc197bacb6d19d525d68147af42234468abdeef8b952eb9552ea94ba96c37cea298738ac9e72a94983e4b5dafb78840a4d798f4400a10c890e35e00cce5e1415b224c18fae03178493dde8e3632be584c84939a722edd7a977b772efe5f46a90dc94712ec9aa15cbdff6eecd5334586160357b07de291bfe5663db366ab83c46f583e3274666c35fd51c4c32da9499dc0386a6993c25bf544082384da159b55e7d30ca49ed55edf078aa23d1e1f1547ff140c3d9907659f0758363a496a2a282cffbeda0c6b30e9a1748af2a1e98e1b290a9b112a3ca974a0d3ebb6030d4c5f95e7c61328cd96f4a39f3ad0fbfc5a27aaea42a6ef089ae95d9c3211d900c41e93b28022531708609f0f56e9e12a7b0c5f86aa995e5684c90b5d4ce7eb18db916be46ad0ba75cb3f75e8c6f6abbd65a8cf16a43274fff7ecb7868468d83494a29eb41b2c845c0755c7f7060b739426b35576854b90e3a31527202975898a3194243afacb7f5f821db1ca1a5902158e23f1f3ca1e9b15f9fabfdf2864e9492926a0d36b4b2c45985046b43254de34dc755edcb0326a540c395c3b80603b39f0cc2776b0f189a64051204e3a76dfe5169e2e87dd0114243a87aaadd7ee8eff9c410bcd8f48ec635fdcad85c6402694c8790cb4870b9def099c01b465e64f25333f132dec1267e7a9c499f978c85e0f9bc78b1e9f3f59a79cdbcbcbb3f535353335f3e53e3349b05c7fb3da82875a661bce980654bbdcaa58fda6d0393f4d9f1791fc7cb068d3f1aea34beb3df9b3c9beecc6dfd60d45fd2e7bd17efe17c30ea7be707a32e63df07a36e8452ea41d1f5327cdbdb559bcbd3c88888f4a1e1d06f7840da0521cb653874f86e4c25208dc941cf0eb3cba29934da344c7a76f0b56b300b99e1349c1ec9a79f3e958037281725e26b343692169cc7e9b548b9c01b7409979f4e458b96d76c666143180546f9e9da9514aa6289534b52c35bc0775b2911d6b4b96d9ddeeb8bae581e50f609c329e4581e83ac1b97b1ad93ad629bf0b65296bcf0f9822ef9e990b34c8f67bebe68ea1d8562ca3bbe8cbdf2bd37e7b6caef9e4f5d06223256c4dfb33ce6485af01abef9c0017ef9263baebd8d017067d3709e3ddb81468d8d44898c8703e289f628a3c12181b2163c2806c59cd382d72bb107fa8c71da8546512f7588423da01cc3bb78436e8134a6db406f61139131e87adf90b9bdb70c1657c4c607f6ec9893449fa7cb2d46b127077299934511363dc6c919b7e58b62cffbc9f2a97dba2663f62faa33f2a2b61119bbbb6e67ce4cd249628958e253748a58a216a82577efe9b3f3e878dedabd3c76faace377e3202bc0dad821843c1c0f2f4af6c46e231b0e10fecdeb78f7ba8f47c7b9fd8a301ddf3a3a7e778e301d37026fe04743c7a78e739961863f19d3c10eebb643fd76c8c54dc776ee3ee772d3b19da57590ebb2c8d9df03d22e037f767d3fcbd89d111d67b9ad5a226cbaceae59226c42fd90e1b088e5728eeffd222c860c9fceda9cd72cb16705872b409d7d9fdbd257d8f72b96f95690b12bf0a01e7245acb3b8cec883d29e7b36f4ebf86e0de0f1193cfbc9d8c38e1ee5ec4e2ef9e93136b72954ecb1bef7b3dcbc381bc77d5b0f9238bbe530f611f82f6e76e7b2d94760cdee34cdeef46b77357e6677355e6677d6ca4f8fd99d6bba6bb7fce6f972c319e7ccd384c77230bb95b3669be60e8784c777bc13923376121e9fe19add568a140d797cc6ce7e329e3de3712532cb147bb24fb7521e27243f73459af0703bccf0c7f41ede19f03b1e3e3bdc5a630eca80391bd345b463bd8b6497afc5ee41c9a0b90e6a79c8ea923c8bebb263cd15c9f9415d4e6bd7789e8c65aeb3cec375106eed359d656ac093b14e89d15fe7d1fb7d5e6df80f888c2ada47cc5f8f5eb1c49eee1af173067de939bb0677931dd778781cf2f80e8fef388f3fd98e07499e3ddb6107ee64ecd92dd34f4fedee125deecea85bebc41e2448c7f1e75ae2b83e1a3e1f988c516ba1fb9bf17c9c8b49bb0b4011981461f6904aef707c64010c3e2ebdf4cee7a523d570a1bb9b979e43f7d3abdcfee847e508f66e0f8ab6c9e678784fb2272a7f9b0f95df222abf5c4600bcd9be5eea95d7b86adb4cefee5fd752f0487bafe7e8fea5d00ba59a06313c825ee011f40239aae948923edbe5e6a48e94df1d8b62d1bd4e238d123a0e4598e47c73369a2389e1323cc78bb29cf5681aefe45fbfcf271abd9e945f87ef86cc026948bf370709b2ce2419c9b87499e525e3d0e8e577db21bf4a97c103bd5dfbacfe853095e29a2471df42b6fbf60885e643771b4712c36d34ee8723512293e1496470403cc11e6550e63bc7f79eed90e34a646f0392c32181b2181e14ef7d3cd7e12603e731b84e68fe751b2ec622363e6a1cc25c9ca582e42cf63c1b971e8960bd7fa1dfadd9ece957dbfab1cdc5f77292088b5775d9ba2d9a96bfebad0a03bb2eb55c9755ee15970bc7cb468cbfb71373f3725d2d395eecbaeb7accd51c011ad724c976ce6ffcb909e11cc993bbaf73acfb719b81f3f762707a4a13929a634f5d8edea81493ee7f17378ceb2fc25edc502e07f9d4a56b3630eebf0d0685d161ecfb1189c2b05fbe7c897aca15b95ebd7a8a3a76d980ed9cd7bd9f8cd54e6a79397be92ff6cdb6d9b329f62845ec979bdcaed9ddfdcbd57890546d4eb3b3bcf4d73e026776e792d9dd7d3b875e22bd7498ddd464e4f57ab5b719553189d2cb711c92ed9c7742d27792ed9e2445236d77df38ceed27db7bb65d894ce96d6e071c20381e14638f855b866a1d774292ee22d5a7567711ea326ceec9542a16a133606e62ec9beba85faed3e1af3bf5b7dd7d9d7a0336f764ccdfcfbd8dd01d3582bea6f6a589bbb6f70ccab66cbbef243641b6bb6f7f32f720b9f76c077725320de6eb5548fe7420db0c508683b39f8c4127ba74136520a1bd9ca711c148bfa157c61f9a3d0c0dcd0cd544e10e4d39bd3861464d2d66ec99d16e3814dfe3ec32b9bcc9e5c5143c9f143789a6163f8b3e7aa77d178fa0845a7c14923ac00a2d3c9231088b0fea6fb8b75b7d94474bd475801ebd0616fdce211d628f50eca193431261d1a112d290d315d0899c502929c2625c92f2080e0d3d9ee8d4893ad12b1416151dc1a278342b5c82f0082e8143f2087273688beee25247af88497490091388b4e428f620211a921242a2a12138147b24d19c4d193f4e2dab23442d616ca40c1ee827eb5c0f91e07b3e380582e783b9e925058578fbdc4b9cd1f5dd94c28c82460fb9d0ddf3329d08721189498445232ab350f210e93dfd7cc8243289f37a378d9e167ff7a45aa411ddf2147bacc7dbddd953230c1ee9a7110c3e12c522e94633eaf1c423e84e2a75b4091f634f17977c9cb3a2d843a75f2f51a93d83b294cf1d24ca52aed1a1a8e19d24e5d88b14ddcda819152495dab3942b91cda8e925f650e784e44fae489314b703f6c7f44191167d94c28b458f4eb3d01e66d4c73982e703314bca4e2acd1c4dd2e51cc2a1c506961d2729b7199e8cc84b0f9251d504631ea4121b7512ef8988f4812f261d43b164fc49e406232f90d0d11f1672020fe3f99e68a4162e2f83a44f0e973e392f36bd4ad315a7ee61c1f163a3c60eece6e509e9845c9324d5a30b898ee4c9d44f8354ae23f2d3e3de465e7fa1d3ec427b39dd43bf3a6ede69964f2869e495c381fcf486f07c5c5cec12bd60f1d235203fb85cc661b68ce7ddbda7d64602652d77c59ecd5dfaf9c4a8f2d8e5ec8a4dd24762d15cb7825836aebb2b1517a15e5f74a7e4e83bfd544f86837725e35aa2defea3a205eae316fdf58036972e87609116195b492848433ad66227b1bc74a8050ade984e200dd9c9ad7a27b1c42ef14d27733a79e9ab1d372e423d1ee93551d0314eb72246a0d36faefd6d082822047fe39ac0b8e6311c12284b22c301016530de7296c36c286b6d96c7f7f4dacbf53342b96e10966b6f630094c938cc4e6213fdc9643cc65b7b066532ee0aa34da834cdf674450b95aa19010400009314000020100e87c362a160349e48b3e61e14000c86a44862489c09b328c66114453108118388218410401432433333db0000a9b2ba831aad4933eee034293d3dafe5ef947467ae5f7085b249250fd614b8d165953dda73da0419af1fcc7bde57dbf3c1e469a918fdcb46f501fa0c2c3a903e2b5750fb78f4f4b8bdff754db613ffd411d8ac80012cd5bff7f38409fae3af296351a0189501d68d8eb79032b30458385e6c0106a876ee8cd6efc3d9dad2ae3973ac3af5c8789f0ad591926809642f4cd14f7869d4e98fb7259dde7179bcddc0fc9d73144bf4e3e402df0cbdbfde7d2891ab09b416af19c9adac05557c66cf45e5f38ea028d8641992aee4208a79c20c8e1326079e20c698984a3e4b3991e0b29e81e2c11861d55de58d487f6345881818ca86524a012a98c8da09405ec92f0f50605a9d04e6631dfdd833fd2b7323fb3e58883fdd0d2ccf4c6358e1170c8f704e0d0ab83e52da9f83b0f32af6479354ca5771702bf0e168be037ad6c11df4d69ce331d6a840587dc1b96c5e6a29fe4e6ac9686fdbe95c3074e0d7a32188391299835afdf602f54d5d3f892e1b47680b13da67a1be5911c907c26f454ab78fb53eb6e6b8fe11d19b11e8dd6ffd6b8da5c43c9b8be4fec4ba411de48132b190d6b0aa903c72efaad23ee1e71e52246a7e4f9c268ac868a2d601f63cd0b29edfe20a6b41fb64a5df8dda5087e77aaa4a29901d67e1b438aa9c62335f0f2fd4b743c2a6998d7c8e85d6ab93d2ce0596ea6d74530bfb4faf36d3d07deda12f18d23124a9017e569e3affcfec0480a6c2c4908ae0b72bafbfde7557ebdadd5947e3411142d490db3ecf2f6a9ea7241a6d104d4eebc0cd3775ea077fe967b72b8a43b85035c237809ec8d982c3891143a05aeae11b7e0b01b86cb84f6ceb09bd5e64f376dae1ebd69837ff7cc8be44e76be6452042690f80b9b897eb6b8d221aa584d91786874962bbb04e146c8820d4d3b4b594154368cc9a759bdddcfc5a7b023094d08bb776ef990b0698dea38af52601a014ed106e7c37e4e2a6450396ad88d1747fc8224635ca025aa931ae69ec82d0a6dda9a6f0f5b20a3d8c0c8de6ad3c0bc0eeb2e6644961c66e7f716ebaac2eb91455361e67171ce4fc0670d36c6b1cf87e3b762c17351f39640c49aae71c106ed3fa21a90b9fb9c8d5e99292f4f419e3b404588eba687fe53a8a0a613b4eaf38e8a7bd39f664e46b370ce2185abe2d5afd3cd52dc208b00540ca0d750fe51d58f4c842650f26f47986067defef9842f0263ef7b4c9f5ace596131597e296b7d021c9b9cb1ca659107bf257f25ca72eed870a15f5b512c4a9dd10fc36aefd033cc1f04019c93c9530f43f5bea569ca75ddce2d678f8feda17da47fff81b884d8ce6602673d3682d4b0be143cfa85e52157fa75d562af8a82475630d02c84f3e0f3ad9c33eb37ed830c48634334db74ddcc724be3b2937d4d6dec3d86c5b466c5f9d6ce413160e56c7368850fcd5691d5d4f1407100c9c3fa6f0347990cfc9b12941553986b621ea92d7254f7f472ad7562820248a713d16a07af52830072105284f3141e72d9e8164321caddfc21156040e7601c995a09370ff655961e7b080ff068bfd97d3c430f868e65828e394fa6c5ec723a6f0944c3b4d4ead9807646c36b16bf94a990688ad076fab8f6355ec1d7e7411c124e373a679d118e58f7743a05d001841710104d4cecf02020314d6f29330b60a3b309440762a327afadec5bae9431ae981ad5368245d824c60ab49ed27e12c2695494321d05c3259fe638e2915c5e7d6ed020cc1c0c445491f14bd6f002165f3d48d24c8a5590218acae1983eac3599a788b6acd74da305fc8a15fc115ac76faea4cdc13f129a1d791c41c88b341dc697ec949876ffb302c5ec5636cadf76c32601b4293105428ee53c55ddbb06cdcb8824a8940a31e86d98186a4f389b7573ec47e86924c1643432a8f935b8caf2db5510b90db9148c3c6cd170d3612db92d7b2f10e8ae18d71cb7e0177e090fac2129d60e16703ba26893a2a10b0843f598f3783a3b6cdf9be2a587e76981ac6d107e7a01d5bd75dac4a67b5b1b65392c43fa01c57d4a069f61814170ce71b5552e48b7e6295a278c7cc60b11a227c8cea91abc8b97510736a6bcf020d23cc8b81ac51aa3ff5760dd8766a63893b28bc90312ed42fa0d15e90ab6c00bcfcd3e3d10ae217ee4fa3733b541c5241d79f3030c275005287bb736e7e49a2daed90bace54176e94d0ff9c56f4ce66cbfbdaf19dc181c11a2e834a027d49083bf58e524d88dc114366aa4d8bb02716ada13a539ed12050207252d0be8f91b780bd420acbdd3b63068e9c47fc2665130572d4513036738c3762ae0bcc91b47fa68e9e75f4e2f91ee402b8fb400c38f9e321e37ef52ea86a0570eede05271ccd83e6c89d54f5cbfa0351ae80cad992f26f5a4c669d59e9530dbd2137f780fe3bc0888c51c256a4a614ff03eb68447a2f263c285210c4265c0782be9bc2461b71b41e20b26904d9fff59a535037b3bd33a4042af5f262369957a47f034b1f1cfaaf34ec299fa96fcee3727cb07a143fc3108d244e82dce3280bb6c90d8e6fef46dc16af37eb7dbd50b04e260dfa09c7ae31ba90eac86cc9ff9974c4b359e94c9e5a8cb6a33d9d318f4429b01c5662783d5c049b2b12d4daa8e0a7a5e7ad14fb6a63470f7672e390ceae244daed3987a6d62688d9c73b7f373396fcd0827a593ac4d84349a43a7f16bdf235223afc5eb933255ffc2622528669d24995ca24e234083c4cffebe88e53dd2aacec8c629c15b9885276929723736eb03b8614341e76e4008e9375f02e034db7fdec5dc43e5c117d4a2e2ea6e904337b4f29665ea1f66e1e51fb31efddc162b77d1d1852ea293853051b369a426918051dd6a0056480e7a81527aa6c203d94c9777203ebbb42abfdc7aeff83f8866f475b6e9bff23f1037bc58bfa7b7b3052345808dca6a059605a415ff88bf7379b2c82ae69d3c907828c871530afaf6790fd853077bd43f95bcb34cb57a446c9d38c3adc641d8a9721be9945b090e219dec4060dc0c743c112fb693ecb7309b02d3be68e89a9b6bf523b1cc42e4b76ac06e7c233ecb4ff2f2685b60f7dbe3d0a8a29b68eea4881293b9c9582399c623f9e55cb9deadf46012973353469ea2a411c281b1e6e853430e5d445db71392a0d0c39ed00c62fb61dd71fac4cbc1c1d159298e6b15c197f1a3eff6365bcfc9a61e7b7dff690edfc38966e2bc5dd571653791bcf6bac48faa355d391a475be9dd1e41ff37d7176a1b59b4f167ee483a40ae7e804fdb788ca27541915d8f433bd6f1887054bfaa87817c1604d4b74a39238816a8968be6c56d5d7acfd00ada1a3f7636f9955e0004c66813b28b32debbf94f29d60740bcea5b0d1035b5a91671f8e6d4c53844232d8af3d5ca09d6cd0415da2c50582b373f5f826fb0990e8e603b5816f9e9910f9106d08e4dbc8946c0be1786499fa55212f5c407260aef778cc7e86c7fc7c7fa4c1388e8ae4a33bb360b459e5c4b4634e85195adc06e9d423113bf9508a13660e91a2e53ae6a90736b1c9bb5d50797c95a932acd0ff31ee05898bed53b9cebbc20170105f9e56f454adeb807a0c7776cc33d81e11f1eb03b390ef4cb4bd1b38d821fc77c0f4a5fe1ec0405de546a3e6b57d6e788a18915b7d94ddf990b411f9791fa6e2f15e3b676d6baeaa24e4650ae5775cf6e63c222d0f0bb64074ed25dd957e4d0b8b9504791418261e28221ec36bb65163517c53067e027615e921a7a69cb3243698a8eee7812a04a4828534dc5a23d74a19aa4d844919b30e022ef98601705412a0555f0e9086de0d72b7bf1f47c56142d99fa9d1f2a4bd5bdb22000190e1f458c732abfa825ff41cb1823411741d87c5bf214df237112243f9d29f419996f6f3d133a3a998cd991a96c4ff759a01ead5437d7076047691eaedd7d99643a53cdc5833df55378b79283784fe2f4892e155e3f41c6e3913ef631eba617cc4f1c4a6a7c4f4df594da5e609af9b6c4aa617455297874ec1117bb2e7e8b6318b03af8be7adda4ae018b3a0547294e60ac2040db8e152ef21300de6ca1af879c84c3d0d7ab27e10511c97f67504452dd03d92b912a57dbe0b44f4d669baecbe0aa153c98110394889e4bd1465cb81ae74e3b3d9809981451fd58032ee1011a4ec462cf33fc4f16e807f810c24f199b67031ef64ed84cbe23743010720333b1aabe1522f7ef7094824a031b686f9a8a65bb5ceb53d942736b6629e0d6e25e5300322cfb9973486b7227077cccb854cd832db1dc37be889e2e20ee432ba73817f16e470c121f962a5c4c8c0bc0f20ec284c285cb14de9291c8c348d16b1d5f40f5d152aff441e74c4c9acf5b0c458cb9ab9e2a622c230664939d1a453ec7d3285fe23dbcc84b7e8a2979714a254555b59f10716527942d678f977ec644365685ec9bb35caaf3d57ba4c71edff27819842ecc8b22788513be5bb1cfb5ec282f7d6c0669a3881d84e54b0cffd16943c793471468efa5b5ab6d6c1d222c5b50b1e990f1887217cbd1a73ff9c979be7d07f4380356e5a49697e1fb639698b2039c1fe1a552bffd0314422d9532586d16e15194ea4f5a1b5ca1d8d09a9871399f327b29c30a0bf42d1c7509d2ae914c009568a464fb8418b2805e3a4adeebcb79bd822c965074cebcc0931a848a2e71e173d41cdd347e738d709e9c1843c983471910b660f872a437b21f5f904cbccfe00735a8123a550e6a30239a22c81b00442fc40fdaa2a2b8fcfb9c3cc9f1beb68a3aec373ba6f7fe81862f1832e44d44af064b5dce265d2f4332c4aa944fdd1599b506cc83f5988d2838964fcf8403171a39ecabef366a3db8ecf02b3d9091158673e7b89ecef00511caf74d130d7905f14863164fdcd2f462aa18155e21f0c3a226b61265da8fb2f6046d772be29483a92c30495cafff639b44048c70440b21061a5482b4dc22daf2911e9f961283604c5c2323c1b82ccb429889400f2c21a4db7dec263914e6d20dcce8226153023279de3fb95252033d235fa74bcc11850eaf0602d5adc13a02b183177210cd15f28de18a83456667095965ae02c2f506752d77c993820d6aa3e8f767bdcdcadfde7c0bece9d4ed6a0e59146a0ebdb97868ca36a6466dac674ba9d0350cddbd8d7e6eecaf99d5989140edd25dea983ad7c46660d04cc221cba326988a43e33af6161aebd31112ac0ed41ce021d37a78c98d359ae75ffd27bbb1a0294380eefbd7906c05dcdaca79c10df3d14776ba4527f35274bddaee16a45c6654926ef2c8d271565de634874abcc7d3f633e527a6aee6ce7cdf5c29c4f45828480c7651eb8f091395312033a2cbdb1323870e4040171f963144d91b29abfb9bebe63790348db007d371e3653ae342e79be269b66aae42fbf71cde7eb26b656bdaa88c0f3682f255bfa4f4843f56326cb9d1b04ea866e5f43ba284a30b97ba43d9b9547c19124f797aaa74f8f8f8d6a78ba24eb53a6c0bbd86d2a7bda3f3c4475bf3b5047ab9b29287a915a487456e07262c280b4933f528a1433ad80aa2a11ec9d02485db47ef3a1489ddd64643648ebc6ed221a4ef4a8a4538c6e72983a2a441cfe3a33ead0a482359af1357e4bb020b285e9662019c7ed3fe0fe4de478e3f43a55374491d9a5d16c0dee4c15fbdba64a617e4cd6c2b47156e4df8f893008eee33512d1903a43a35c22f34b58c5c6ae4b2e6ec9fbe85f3f22e160742a506251466e209a0dbf2c618f3692fdaeadb049f3ee89ed30703686fe0e8b280833f5acf40facf9576d24509d1d71f8e55b497306f7dfb240200d98bd95916e9eb0fc6b8f1148c6ddb32d90d9b3f9dd27124294aa34bc9547b31ed9e659bb23470f4185734b2bcb60af5e1fc45ca4bc75b2500f9fc8c93cc3a93c9df8a7b1a641b09732654cfeae0467f1973b3dc53e6420705af22a081f7c74ec55fef3900f1e09b6dfb5d740edab89d5ac71576dfec625292cf9484c8742f1e70e727c5e343cabd286e7328d59905a26002b4313333cd20172b1875defc4f609a2ece99a5c70305d7c5c09adebc97f069fd63304649f7a589c6f4da52d08cd5b9b6423f8b8fe02fc753556306cf2282e686490c106b55ed03cd2f24971caeda1a713f3dd10f55fa9ee85bbdd2b89860e100cc09ea702913457a09a71518d2dc61515630405a9780c6b266208179c41d5ed6c8e8dd0fa2f030aab881c3dc3ec8cf742d06b355a849fef81b130f3bf5cba6a88b59c4524c8d5e8af4eda08d631df9836e5383d968308e3788113acda2fcbf9d3964f99e762480919d05cb48f9003110c103d61e85576563d331f62450c6666b2a99b4f54ae8291cd5de53ace24b12c61875c85f904f609b05a4f0970c54ab499c1001e2f924711474174120fe9903f4b401fcdfe2716906295bc6d3856659ced1cd944f93db9703f387f31a2523a73524c81fafd16bb98d09855ec7d656c86e22eda4805148088a6c931aee816af5bac3ff68f8a624844a6b4be8a6355c3f8209449abbf51c78908f37bf1eedab47fb82eef2985ddbe9ceee720f06b7dfd47e6cc95ebea642b3f3e209bb4c23e809cd98808a7d154c2bd55e391060022d7976f8c6a7fa0e3d8c18cdf63ed038c37190ebeaa9b56d8f7a14896506e139f836b54ffc1a10fb9e2a388759ea74f7e1110c5d2e342c63117d506a9bbf1943acec16dc9956081da4341822d576a068f9b94e4510019989d14fe11c77c6746f82828261c9fcc89b1e0970cb6444fd0d283e711aeff9004a61ed466d316d5ccee8de9ba381c40422dff4db568a4cd8b1eeafcfdc0adf9fabc531f204c8512c2ae9a07a97642730b5036b41ccca410885d5ef3168a0f9b23346cd8688a1f39d86573d1774f52a538687aa71c70ffa1cd0ae406d2c2f9e2741f5b0902c4d540d3216e695e25e6b0595522151989ee460ed981f6003af635eca928ed53a9635cac248270746ea3eec7721da37ce89e1440931f36128948bae1d433c3c9af35ff6fe8f572bc6d208f62fffc59aacdd8c35fc8e05f1b362ec6efc29a580cac60b8ac73120032b818d0114f302864c6a3bc29ca86274de9691eedae01544f0f812e2da26f3aa098a2759756a7e1f2e6cd2ef28177eeea07e31fe53dde4e8744e45b3fad233a8d659d794dac3aaa26ba32895eaccd0ed12daccae8befe5ebb25a20a3f975a160a16c0928c5400ec88c506faad28338e1ae23d42f5eae76a5396891f188269f8fc1c21e6a0c34f1c533ed86c5e7aa97ee065ea0f046a2328733c81e9c2a5ea370637bd69a8cb170dd01ca9d8026cb9761e34e5fc63f5f313582cc99547abae5702d246448e2e3198de8a65758222ed565c8dd4711ac0cf0a3aca309afbd98e7388dea22ee3fd289bb47e1403e76295806fe4c8a24a2694bcabc917e1d2259148fcdb2500de630b55bb800530842b02ba485feed396a8a765c8476d2bd26c80e515c198d92c20f3bf09915029947f4bb432f97ab7dff451c9bbc404833cce45ea48966cd2b87cf121420c38670d087c3a7fbb1dc1a4059afedb39149d5cac588123c7849a7bbd049bbb97a93850257075870e8b20996b2019cd5dd8917e164b20e3642145f1917b3abf6115360c3448ccbef32704f9ee27a72be1dc4eaf0bfa2686686236c3dca834b473304c60cf9b9d3cfef4d6a519d336f92c1d66cb7668ac268f48ac2309e438367d78a84acb2158e19e82dd56dbbb358a2d2846356116ef97d4a621e66ea22b642315a2a549fc1f6b6ebfec311e7544452058d6c09ef4d696e99c9c6845b40c871f58ba68f55786fde806d42f6359d48b88abfa17985d9761f0e065be4052d9c53c107b4028e5d306ebe2b475d0d28abeaba57caa00c945c3fc390ae908456c171589114833d61c452e95d3f485c01f8c33de1f94a7a9a14b127fcd604ec2ae7507cd702f51e654a214a908e52965f9df32574dd0a644c74dcfd82f00cbe79ece5602a76a0cc23a458b79b5521dfdd45c598936893dfb4c607f195e87fa9ca5de311643ccd09e1c625545fb1eb60ad494801fc566607ae6888968b34d69956c86ff14739fdc3406d3a8f452f097539ec892301430abf6aa76f1132b35b20eb4435acfd8981c06a65354cd062deaac539c5b27afe8e420f7498fb41f9f2db2e0c589733c29c8b10d6955b2a2d6081e68f807092d55e341b886b4f4bb9254f8c99f172828895082f82b6b2d9eae907cb962b4fd73565810c540045bbc4bc780c331cb2f36305150768083442810a4281409c790b0526411296dc35ea537b61f14a2c0af3a63f840e382cdab41fa82c075608ec940123708ea886a78760c1d49e8f51d7cd47144305023e6d92c74660990175fbe555dc38e725e08060321b07973eaaa33624befa05473a25b0590b37e6527dcc39725cc1057c8e9bca624f6aa13f4d6a84734fb1a9b6bcb8aa09959ab46b892fe42bf91ffed6919af2a86f41d450cfd0b2036211cc730f23134a50f840072e3b93a0cc74464255ccca35bc079fe8004f121b2f18f6e3ff89164d5467dcb540a13b08270d77867e0ff285de3fe7234ee74a63165c35798b58812916ecc0bfb072e1e51c686f9f8963d91e3d90d745e4c2f32b062837a9dcb359c1607a0bd9b3dab77eecc5bf67817b8b0441b41c885ad6cb4b203e3d025a3901ddf860072c30726da7a90969930d7af6133feb02a088473015e4dc65169a0ebe761559e8b883bd20f04c59cfcd66993db4565c520893d6cd8ac7a3f9fed1872b48b4fc1b4222373e2ec983b2c9833d1b83e3b86f215175f78fba634a0b08935846c0ff85ba3457ee93ad7d29e24f3736e06fa20c80b3a42d578043491d74c6ae4d7cf6dd9519acb7985e5122eccb5a2bda534c7722bf06fc32924e2ba9207649e9cc346e5a305cffbb424b58fc08d90aa90911bde89e22b9b96be647eb36b2660346a711260c8d48e2a1cbba5c7dd602befa49fc07c1f14ab765b26933c249a749aa51c98eaa560542a71f504ede91184c569af72b1c9dd1a5771e9a7b11b5a9fd88afc07b488fef5195002ced701f00bd31b44f811e76b373741146a29e039542ec4791bcbb350d36b4c28db2906f83a3ca3c81447b8c5b17d5fe13b676bd0aaf1244567665a5b9a1a3e7e2e96382c6984c58310b8e13b4ff5fdc2e53ec86b6bce0a4576a628d6d6d8b7df9762fdd155879e6a15daa7bbbc0ef24506f3b4992afe589668aea73975a04579401b49c2910ce7c91d6760a97e1c73da3f72f7ebfbb21f7e04b64a3c12d495a1a5a04d893c560e652186e8bce7ae8555c6ef9702599c9a834ab923b591660dbe0667a1ac491a34025d67dae6c358ba9588887d0f44f52df1b5429ee575b035c1e9f5407b7be801f1e31860c5db42bb10cb7a46fb4f0c509e26116e88e9e6184264b48f6ca0af3064606c9af4096c8dc40a22d75e14733a7fcffa002a11c696358dc40c51b943848bf4f9e36e0309e40f8ac63f7a2fc09f44c32e03e19d325e58b0e92de5e3363cc0db5a939b88dc82e2b21a2bb51786170074aadab817b1b258750429ad4e78418bf886512531d0a1ed6ac0671972d6b38dc0b92ab20a4b91141d8cffe88fea1a16199262c8abc9805c851369aad0fe03c0aec58c156f3ddc387240c1b130498e80609ce9cd34e2b5194257fc1e1bd0a79c4cd15859cefb5d9adcc3e4989815b93e1247f08cca0f9e5f1ea06df28ef6a44e286fe86c2c965be652c6e6c54b422937d2c9f1f92ae3103f51b928e781a6c1e9c6bded466d48139a1db64a57835565f931c295a924510ec886e5ee0cd836a01fa07d686900555c1527e2ec8ce66abd2508ac4f8f76109ef5f1f2f8919059ee074b34300979c7d79a5cfbfe5af5b5aa94e167fd66016f33e97b4362767d9be964f0d3ec8d2335b40bcccfa70a0d7a0018f1679e82007b1b2dc4afca30cc49eba5bb2ba28d1e7fa8fb045429ea139947bd424d25f39ef3c26150905697407fc8258c76f1c6e57248979d7ccb1f72995358aa53130cef7ac88afad5a11d81498272570a9f5872fe8da12b09ebb17ea5259449cf5c17b67e0fa74588b4f672ce72cc4abc6da0e400c05427ee1f4d81a9491243a72430f941d5989471a4b9ce0924d6e1d65f155c5ed9e162eb219bbe529c16501354ff58fc258b976ae08c51dbee0535b2535ac92d2a9c5900a4bb07b84cc9d3a8e16538140d01593c7ccf821b29e9a99e9a20dc9f9182b7a041401a908073546f66af12bdab8d365715a1913481b4383a51f634e2d338ac7ed410f38c2a267f263d8370663596b72452bf310b46d202c91aec094f94fdfda77cd4d4e52703bbbca2925612500f339d48b6df752ddb9262275bfa785425f2846ffd843b4dc3c44e0d3e84192aea1bd4dc76931aab9beef64e437bcca46c067edba1d57f1b5f578e9373fd27a567b372104f2421ef1622607aa1bddceb42ecb3900089bc5c8fa21f46c92957558ed17e1288380c48e019ff4fd04fef52d6a415ffd0b9c168ca877b963e7070a29c51e54ad1c9a3650a9eda6594ac1007cae301103dc440bbf6ea271daf2d97462472b9fe457d7314c509d50f66e68ccd309b87774952c7053649134aea3498ef2bf38dcf673f667d03b050040425fc8c8ae77e9210eb05406b61b390b9ec1c8006cc07fe31610493184bd259ebb03265127001dc13363fad3cb694e1ae56af1f5abb568c75acb302c4b6f82e2f3aaafde5dac2829a4b08d26f5db901f02fb54e348d75a181cd12f3aa4c50f03884b821428c80fef0d64b00bd2c761d021a25d97142c5248b85733555bf9158bccefcbaf6d8c3257d35a42bf4681f65ad0dc76108491f5a6e973c46a8ded159ab7cbbf3f8c2130cfd52abcea89aa88806d5aadd31352d10527f4adb7ea5d8cb623358352508ba06aabf759cd5b56c0d213363886b0e7f367020b471378a80c17e0d80b30169bfec5b9902004f24af88b1790b5090afc8508b6ffe4f50cec6f53090e1d274d9528f65875381c890186d306933a5a54e177924b3049b6f01aa4b0673489365829509fb610b86a72cc0aeabf0d0eb5b39ab35226734dbd4f0bb8a5fe2972b335b1ebe918a49ce3ba712c04b9a3411b1dac2321530b6d080ec5c88be558ffc97eadab61442408ae453a8cd0c63f520a8fc40f4d9332058eef634d0ff36215be1ea9576a4ff34f5db5cf9d1c07e124b6b78ca0e06d0c44f59e67c0870f67987819e43568df376818844c3ca8c6444e9877bf80eac53615fd680453fafb898e0efd766811167bb0aa1b1c926d73778fd114acf61973e4bd58b1fc2ad7b8986554fb9f552d763c9d14580da25f618f953126e97331bbd6620671d23b9a87c870dd6579ff5aec7947b01ad65802085e1bf9c92813d11347d6d128a8ab4d5f70fe9c1ee26cf2a53600e822f9537c5abcf8595b70a302a286d00721f38d8706638903bd369a1cb1f774194894aaf8b96b3e48ea481a2d86db45daf65a3b06974f5e28686e176e66df3478492bca0657507c6dd9c3ed3f4054283587507293adf98986faa16d40b55e25418e8cbde4b07ea393baa3dbe01fbfabf927ecd16f7b9f091278dc77408d5478e558e73aa4f51458b025f3023ace4b6a170ff233338632e767dd5f3541e4967889cf6509781a5cf262e2c872a751a3e724067dc75f9b7c4df0d22e45ef98b07d7d1832cda12834c0066bb1f41e94620b17c038666ce4859b4185d342a7879dcff516f33dbe6fb830985d8bc19b16c065a5a59ecb99e2e10ff7f225791085100ad1b8ce71078ba99f4282df5e3d785284df95af9a17c0be07998eed08ca246d7fce2e4c6f73de54bf278e6db7e2253ee96767a81c7b9e71423dc1ab9570b364808c655377e79e124d25c23d2e277466e3b23613b0f10f413aca1056561a062f12c428d1589c04a67f3f7dea6f05af8a69d4d24a850f10ab958243e856a258e41e03c4eb41167ba6dfde8809c15bdbc7166fa8e79ffa098e3d032a0ce8a82e3ef5360e9c2b6b5b3316dcba47d01a191ac34401fe47383501f842933d8333dcfb7f18b8fa46ef53cd009826675b62f8cb3ca72425434bfeaf5d6cfc1f99a6ba9b46d5dd741a8b5648d2b566ff92dd5762f33bee9bd2eaa19219923ae27299493734d8597605e181389739c977eedbfacb4d0d6b478f58cc27ed9e4da923af44f74fe389da426aeda8a31ef96d6a131475e84fb5120528143d794ac969b9a87e4124527c548032a214cae071618a37fc009d71ab8098e2c78c14182453867e7a27a5e410fd685fd97c85ab04fa58853a586430824af767f8aa29d4bb173347b38c4d8faf2ecb2bf50de12440b9d70e414575424f373bb62b1f2b59b5087fd94ded53aa2e8fa1ad99fbb7ef9f29ba956aacb9586726440fd44f653f084098f95703bb67a60bc67413fa95913e428c6d3f19f4a6d7950f2d4a086ae87dcbe940b11a237482ded8bce11d4bdaf90233a9f5bc1182937effc143c2a3c4e40acd06553c7657833a600fdba0e705686f92b6d38d12d4137ec75ea5cdd7235be9a2ddc8013764528f99d9e7a19c11ec1765e6f04b047466c3aac7464a7045c41d41758d192500153cae8b7999b954792d75912f3be6354021d4e426fe186997aaa2b68ac7ddc4dd1e7ef4582fd590b73dece1694c6962e86a4f8aac7378a4f9443406810b01dedd59be4a3a78e2798ce197395ec0ae2975614c5ad24e9ca2a3a832ce98f0ab3cc29734dbbb696ade68ee4f5d201d9b898aac1e81302cffc45be887fdca730a46ecf58d20316fcad80e7e6a9837a2f8403ac33c71d4f46b099e2c4fbca7e867a224fb5af211d35a186530146bba2752e6a573b6ad2bb014d3399c2dcd89a6d72c0f79a4e143dcf13140082627d506e84cc29b1e1d2c0ca5be7ce4521e6c648b6fe19a2397553534e93629aebf6237f98a6a21722d677f4bfd23b4b5592af30b675684b24e8b40b09f2eee6f5d1072476b3c6f556be100af5581df7caff7db1b5f04dd21a88e664d0dbdfbd69a5b1e15bf570bc1766fa64cde11f790502d45ad08987683ded6f7bad10b3368d47fe579e0c7293448f7277ab43420dc5ad414692ed7d826a6b8898e2256b41bf9d0f4566c5875c4445aa88367d8a0b21ca9e366706c74a4a1ad4f26eac72552aa096de42befda82305c18f1c680034faae535a0f8917727199f4ca6d49bd31cdd7dd153c22ef77feaf5829ac65da99d8069157affb8123d2544b8323187613104b175c74a2f1e9a84895128a9dc5f7c08ad59ab4871a237bf87a96d45d0504390c81b1d82435f3f283993841f1d065fbcd6ccfd61d7ddfc9ab25a212c79f56015cac63534c00dfc432ffc7447225c3d109bf801652757db63606d41f4646581720bc9011bc401c4d67d1ec90f4756bff5149e7f19929426811fea24fd2e6c2d737d4e15bd9e9e059082e89aa389b7249e2a98be2ee6751d3c0593267d31cd1923d082f7ccdb8002b85d8d175ab78059041e5811541da2d62a5858b652836ed344f4e9561439244aec4b325ec1a624631f896c6935785f4f38b63a95ac576863c35f7896effab30dab0ea2070bfc0d2d6c446dc10e42aa2d7a9b4b30b551ca725bd5237c041b4172a571c0945e007749de9214050ba674367650f3bf94760d23f5ff068a092193404ce206c4aaf802f6df6567890fb4fcc83eb77a9966d2108b4100f575596dc9caaded11d99294e7599ab485e728a68008fd47fbae6ae4fd71c5bf9c68094c5a3c80c1ccbc218728069e4cb00ec6655ec96b46323ad6d430471a2ccbdfa7c8e0b9c53770d3da289e2772308a843fae0cfb9a15544b0b5644c9d4fa9ed28cb14da3d51749c5a01fb0dd34b6de6cba27fcda2034cfc950c86679108626116b8e9bdc28cb608697cfeeaa8f5a69b9c0232cbc31fc082d427c3317b447f3cc200db46808e32be473379ba6ac9e9b26608139f19063cd75e188da3f82fa131563e4479bba69dc70fd3d98417195717a0525c841bee7240905406839043df204062ac615390b3be687a3897cd25f80ea4c5dce840644c6498389b3bd7540d27cf5c4a5ed2ac6af9d43a08fc8262b017826d841f571f4eadcdb657f3f12818fb2e79c3fc9a52c997ae1ebd2d65e5e4d9f8159f7c624eac40c22381d8a07bf75ea97ecab0d2e179912c2d9a89f698f81a412cb85a8c95fc609974abcb5ecd5d234043b53134fd47249d067fb8b8ce9abec33381cb584ec4f75a456077c7a65944f75b03796c4dd3b88ef9da9f3bee8d40faa0ec34e525ab20714d1a0cd534fb607892722494d244c43bb26d2635317383be12ea1804bafb08f6257070303bb294753dc1cc39ba1a640835ae9e10e4e803b9b44511ff813ff6c2ff0df3555c19f742a40f72bc757b3853dd46a3dede6393548e50f91eb671b1c9bf4f65d84020a8a04b5e8fe0a05a860502a6def17254f24c68034c672b4a10f2ab75b0703a4cce65e7951c01a0acf24c41d8a38739873fe513471187690f3d411616d8de5349a069cbfb1168180fec41c909cd45492445561225ea402707d41ca5a7528a51933c7d39f999ab1644a2509e949993a26e42bb8305bec2d2746c4c5b2a300353e2d896651db5cb5d50f42a9a50fdc710f12fad2310179d8084802d178de46f5036a81d2b0c4048972bcf23e55247a3050392c9cfd98cc48211a1de2d960e91c6f5175ada66852187ec688d8f3f1b0250191e888f89f0428961ffc1446967f28a1f807fe3936334ebea48b1c9c85d29e43f19ef076c5ea4943008aacdc4026221b31393936492b47983d7bbcb4c45cac3202a14eccc685309b0778103dedd683259817a3cd853b16ff5f73ea8060685ee50cd5bd001bce3ad7c90d9b37602142a58a9633e67b0882a6cee1ec4fc6a4ee2ac90521150cbcd8124ce05b227524425cce5c1f3e30a3554d31b841854025be8ab7c7cc6eb4b3af0f54bbba003b9b0834502d0e205fb100007483f9f10611c9aa93a09ca88d494aacb15376a3c6ee53e34e4642b8dd64c186cb88649b76b568b498759b4ada581aa5805ab05f8102fafe133db1d76ad291d04a7b07c47a5d4d137f6d285a19fe077bd1b2160d34d2d0889c9c21efd05847dddb67f553b8b49f5a0d85212b83f54950ff8e9f89807bec498b634f0f9a5498a85d453cd3163d3733101d4d86836c6f9435f039769fae05d734c3a2cee1208ffcfca16bd3e5c080dccf0f30ad4f0a49f2db80e0b7d376404e811f4ee2c991be6cbf93419e1aed7e2a47da9b04421eb1454b5c85541a1af45327c9e113e5fa0e0801962f746307bdf85b4673e185711f0ca970219bf911ae0c0a203a46b79c063e37370e30d350a6eb21d0eff246658fddd06f24ea650353819111620e1ff0cfdcc28cd8dd395f0d626fa364d71905204d9d8a13f23d5ef3dc4245d9cd9dab1a99791b4477c7a91b1d50435d5dbbaa322237d1a2ac17cf7652159ad121b2f5b4356a2192dad5cbe91806f969d457bc3a1721d905a30573f5fff547aeddc970ac9c2d05ce930d4ca79318305c6afa0fac818818d21aa7e4531f1457b3a9a9714835581b83d2cc304d0c356e032528a90bdf0f12ec824187acb5085487c055edd2ae1aa792ec2f21afbce2744ae71401bf6f7c680db6528b10f2772b2717fb2ff24ec2cc8413299c69252da3d0f2b5cb9240ef5dcd1eaa5dd4f367c26a10d00c0c2032ff0717c8208155ee9fbb70517ce4f33f6fc00018b95e954a2270f104887cb3508355940af92abd56881fdcf942231812f60f9f13d838efe725307556228a80d6096a7b55c092603c59e3e2d7dc096b09c158e39d64a7b6d06c4d80d543af859bb3518365c40b231a74d514fe73d0f6a4b42310ca4c7cd99483b8eba305de713e1605de84a3edc2c3a60641bde973498bbbafdf39284f370229919bb4086681c56d2a1d13666901e879c62141053c70c32dec918134ea37e813a64e8fc00ca874f25ffb6ef8016238bfa1c591b2aa0f680dcd6112a610ee650c59dcf630b39ae63ec031c490e4ef947d3b67fe3238a3c98a68be0f53b46dc35a0851ae81bcf245f2887c5b29603e95660f1f78f06dca09e2b76036b7457b8ce3ee40ff6c2e3e4331f56b0bbe22dc39bb9a4573efbfaca2b10a046925b320742f09aab8c3551f48cb2afc83c1a236d433339794e58671e56f4bd81a1b6546fe57dddecda46c78e7f9f7a6fe57b6f4d4074914e411f4c0960ac5579e7cb5a9784991d551a1d9098e22325a323eaad9d3f9d3acf36e59e5628ad32936e4a43d2780f47a9dd16031e9f35e43e3507d83ad08fe73a749878d03db00d9d7ea9742232e46da263abe2bb6eff607864ebaf5f8f2a6f4036fa340f275b7644c7092808efb00aaaf04827851bdfc97e7e840ab3a259a6eab8596fb43a29e9c5828f8b8b4eae4f494652c6b9fc3feb228edab58f205e7f345a98a2eadc8a21a1f581738fc6d303d6561f210f05279e6e19ea1f4be7bbfc5aca71aab2cdf638d0e78b7cb07c847e0e2f9f38bb8e29df0391b796a83b6f34f8abf6df5071aa166a6c8a6303313edc12f0dd8f41e3016a0450d5c822424c65104ed45d7a233d031cce73b33760321481019bf887cc45b4ddcd25a1e7d984c00b1c38d5af36efa2fbf3bf43ad7cf155d8bdeef37d6d10748614a340246938dcf126fb31795de03b59c1999e3cca2402f3bcf1292889ce724231016ed1689629b0f6d91e58e6362c12130eb97a2c042b56aee385553a3160a2838fe4f890f404ea5de48d8bfafe2c1c6b40783e57b88b36682fa0e388f2e50f8b9a73a6361aba38a878a9efc5165daf90a5d55437269a0a1475f199d31434301f7bbb34f0491d7925c42fa3d35933c32d9ae3efe51bf00148adc7f1bffacd9db27728f7e040bae8ee283dfcf20829ed38f9ec6bad288df7315fa46277282ed844854e69961ffefef5170028aa5f524459e933a04ba860e42e42a182246a1a9c3b0236df408ca8ded3bcc61df7f1b47c7b8c673bd14c30d88cfb301f49bd1f9937deff66076be20f042017f44df57531c7ead3b3bfc37bd4ada02c5649a91de5fd5e84da398c62d43c2f739bcaf7460f6a84ab8c54e47f6bd636683403c25712c2551d01cd95746cf7b0164648f09043d5b708a737a8ca06ec9ef0189dcf34df34dbc0f4d076b866ed57adb458a17155c2a119a9920dee04a49f6b7710ddb3dc2881c10a8da568a75979c9ef7a4e36c4e057805ea00da8cf9fd757c80ae1df52b2822a15bd9ef26c7a97b2fbc689e8d27c9e110a5457864b26092440fb731d39349f458a221bd1743d15d3a5d3fb53e651203bea0502c369bc9e50a607c6e2b0da384148eaee893ca7687c1eb12767d63be80214158db1fba17bb04c2e50f450a15e43edf950cce7d7be0c7c27d083321fe226e072e448787625d0ece0197288d63020ecc74fb01587f5ce88d0dddd6726200af89eae6633779bf5f2ac4928d86d60502f6bf0a14a95e32f6911d0b1a4acedd675dc9df18a1dba160a0983ba3f905de1a643097b189f7571308806cb55a978d4ae7b514dcc9f3253b376f4a076e880bc27190c50bf19ef8320926949d187c8040b18fc26a3fc0341cfe285b1a6125a0a70ea5be74efa171b85fced7b1cf56cc0b36a7b39e3abb272953275b7a71f4795983ebd2b45ac49335237465adf2216129e77978216439ed7fac61baece6bf5060a3b5c014d212059ceb5e320c5401f91aafe71da3194fe83a02a9987b62878f213e40bdf110de8753f517f7811e8f92bfde883c2caebd4d0f6c9e1ac898025f2605575bdec81c7bcfae1190e58750a83900b7bcdba4eacd7e1bd0dc070c4954e1c9a41e20b47ada66d0a0fa8147c6f12e691a94c732c7172f6796af5920edc6dc8d99fc8fdd0af475da037d95572d07c21272afc2187e2e45c62af0ab924a0e31770429ca16de2ae692a168bba93c2f3e0229b5aaab344b4d2e813821b5e419bc46bf4c7c8ff100495035a2868dd932a9de0f23db7c3392a1434276830d0ad95a4bede16a8bbcf5c11a2c6c908a522134cf0cb77e67da3044cee64e53ea95e25cb45335ba6b9312adf90ed9a90b8a5cdf873191d9dc3ab2a3445d97f88b30d183a9143ecfee71fb1b8c59a1e6ef6415df8a2f6445dc6fc4951667cb3062ea29f43c0ea0af4929471fcbfa14baf8b8f48dff2d755b5c672c7dc69d4d936236d3955f55b0a75a976decb635cc8fc84bbdabf840fd827272811d4e348a3faebceda2e9ecee8ba6d090638d16dee19106c2cd2f1acd3b5a0781152108f25888c725248485056e2df8f85950dabad9ab5299c8af491f433ff59eac846c5f312b2da840d199549f14821904c953c19e1814d47cb3281c9efaeb0ec1746c394540a2b400e4991f5d11fe7b7e35ac18d5dd7abf8fec21ed140e1857d97b2e42b1a78a9a820205cd00b679d67386962ee84ee8111fc536bde8a9ce9a51d29e05039ec02157f06105e5cefff8e9bf88c467ad4ba6ea12672fb605525d8821aedbae3a72ac17a35312c4f328589cf529bea315c5f1572757616ea6d4535b1aad1f7d6d04e6defc9aa86ffb9e5578404126e03dc2a47bfbd2e9a22e1326b1fad06845046152510a7b32af628c43936f1930f8c14b1293dd8e5afc577608b3899679928c1da6ee6876a795a24b4bd2b13c6a93c5ab6a5a34b0bd9f8beeebc96810fed03f3848a7d2f7e5e288c17b201f8254cacb87a53eda85a7e75ccbf841dfa64d950ca333b79c09246f6eb2f3b9c26b904d8aac658c858f545bbe85bb06552b9036f392faede70043b080ca5c2869ba71e92cc0124d4335421a6457a2265d8c6fa33f71be1de1e350fc1e34a3cbc6dddfe285bf88607c70707f827965d028f7f46aeddc632a604569667e9ee6d83d9220bf8f05fb048bb09b46abb0a094f27ac1c9fdb62f5d3afad992b48ec3174b85300783338733db50ce447e02be656ecae89b20a95b2a7c3d2cd34175b4375e1f428554bc6e4689f65d63e07e647d0db16fd76bb18ce912deebbd0a87c6f791262d2021e91ec37548a923e738bb2c8f6976fea6e9207dd5ea889150912659332112e248471555fb6c437422192d2bddbf9bc812168cc0637b5b4812a9afcb423c977e1ab16cd859d0921c46b93c63e203c221803a38fe4e15823ebba590240bdaa8adc76d50dfb3e170f2e1c9471f42510146bdc6f8cdd7b6ee079583518eaf210c93eca504fbed721917b8a689315f5c84358efa9109086c5d45ffd69d63e8f10045114ec8106261a2420c0b5e9999048c2cb42a94dfebdc2f318ac417f0096b624f9b0fb9c93a19c50c7d10d47c69e93e72ad2f6595bba0ec8ceb8d04ea9b51e9a26b2714faf3e9b22ea3fad5aec4d75455efdd75487500a801c82897cc26df6f5e6c69a22fafb17bede206d4b1d26212438cef26d58b414e3c231b955dd9327a5ca437aca44cb5be9d9404eb3e818ce6f669244addfe0dd4a85ab0d7e5eb6318d052ccbe6d5d6136933ea251a95b09bbce5dfab382aa719493d5e8c7afd32b4b2afa38c00a1a8966ebb224662dd4c055e7d2e06921d00b7e41cf0fad9da1e59c776e523dc9d0d08cd14c26c40876de87d7ebe00c9559e1822d874f1976450b8f7855ffd1f56f85bec6f365dc4589b58d31d89e63101e96584cd1faabff8d3fcf4f7b7f1b1725faffe0fad58d28d08ba12bb867a5d2a0087cafe4047170c8919d8470b33ecb6c070146546c35b410fc484440f596d672489aac39ca0e5ffcd1e04f92a7a5e3425423a98bace4e52ea27a26c993182ba359cb2bee630718f6f211acda4a63d31f81e701453999336f8fee278280e08d52c7c5a01840aa4114416dccc6fb77dfc671463b17db32fab91d4ea7cae9352cf097d5159bc932f33f0d91ad3839cf0feb570c8a4e8b5023727cb6232514e09887b5fa95ca7ca2e5873cac19245aec4ee0fdf1abfe4990cb728b56cd06c672e308d063fc6f6d1f8fe93500db73046a40c2adbfd0ddaf9872b7df21938745b3f2cb0efedde74114d53114343f9ed8086e49d2a2fae20689ded2aefd3710fcc88ed42b66fa004c0904b8d83b90f7cfb1972f038c03f0a91d0e75b8c9887bed0a921b55c98cde14f59c1033a74cc9e8f76ffc8ce126edfaeb39dde9453c6a391e091b6de018b6fef9c541d496d3d1cec765a6fa7438adc6ff5967f212cc508779635a5ebf2e5a6eab6f03e6edf2da6a34be4cc1e8786baa1fb8c5e7fdc2f7edf70878f2d60d839b7a034cf365b2d2e6bc163a3ddda6f1f26c80025c068e01b25f9026f92a4642faad3984e1d135c9f0ed65d1b1820d875634ad2e50d7fccecc0514fa910eb57a45a8a05884da6726d7fb8edf45a87822185b1ffca0f96a8bf71d5aab61de2433ac82a6485b0fb77e6b3295f60ca9a85a3ac25a236e87d1b9d6d236e485d4e31336f9ab2359019e9d3abe8994a2253c2b5a460e8903b8a94f336fa08df6067e9085b748ee2a1940a869ece952071889056580f52f24b10640cb209f8601258c1c5b052787af640b6968f6a15d8e8df33cabde37c827eada815681155f93ef958661f6a0187ea1487ec1b3a9e3ed30f87e71a48651bd0379f3ea720944d6e3f1e64c493e49579cd8bc14f3b1ca9d681e22f797a9f7193cf1f0f37a83b4522f43fa5059676b6179eb43c88d8e48a7f66b11146053990cd51cd28d1d0cacf7a79b5f59663b5d91a30d2b974b9f2322ad8dd1ae8715324b9eeae25eda3eb53b2016cc34965da268e0e18a234640a174c260deaae4dc362b8de6cd0b399c16aab501c11312de4d5bc4c6f7d89db6cc3738a6706038778ddfe7daa61b1c4758df13453cbd96e24a3e289074e6d4585d131edef7cd75d3ac3085d575079312ac30bbc7ae4dbc09edca1da98386e1accc43f09330adfec3bf0c166f9eeaed8415354c742d7dfaa466797b13f6d49be90c61bd70c09e6e2d975c8ed279a3904eee5ffc96e8e26d3958aac047a177f031e022d051574b4282724f5396533c74d336ceff379c16f9d58d967257a8d20b1e631b2ac46a9d3bca566f185c401147d94219b6c6ccdfc2d8175f7bf87ec6e5b9f86791b65af8f4cf1944b806e19ba325bf1cc5d1b5f221accea267b6e13754829a41b4210a69724bdc902936de9b589715a7802a9b74a6bb3d475bc16e3292aab8b869dba1a74d2d9d75620c0b332bad0fe43123969076ca450bf99942c66333e3b6862c4690d716926a96f8064fc83d8e2fc992bc566efae017787f9989d5b02e77280a8683a980209c7c46f9dd58134bde786ff4a27cd2a5531cf29da22a0972bfd49b9c408c74c9b78285216e982b5396240be6dc0a923fd27d9c8c3870c63720942c44026d21913275bda5027f67e2f4e114949e8018354c73639b23f57ef52e4cbec555ab3eee025dea7e6083ee6cc585a694843c0440a26c525982901a16ac9fa47c34ab92372af5fe6362a443dc58095c356a33a387d1bb0a5e3609607ca97ad4cf48b833b1082c1cb8c4b75784fef1bd415304d219141935bf53b5506423fcfaf2047aac420b5493b8ed47e76494df22e6289aa44ffbffef4af76d37223886aba73e87f4a87ef8f3cd0c40c815bdd19e06603b2adda1bd1c32deb63e3191fa38d69f327a27de18b3ed6943ad5baf00a8e28da611442d7eb6ba6b1eda31368a01107b58994f587e4d751c9de772400ac32abe4a208fa3037a2ec6df41666a1391c41c3cdb93b548697e3e4864eb6e63da1bcf1f9b72eebad9d008c145398dfda103f6c3c5a4b9aa13ae9ac29178514dc0d2e9b8391c88ee2d5d6074c5ad1c86ee9c6cb8483319711a788036ef0d63482fbbcce14e49d2101d3dd937267ac45f7811249b9849323024a004b6f787c384b80933730edec3ba4e690dfda009f5f6160117af7906de8199ba6a898b36ea1a821d34d5f7ce6b7df400f8cc1d77e9f9399146e36c5ca857607d304438422ffd22785659112aa8659d469ed02a887a35fa52db8cb52fc6bbe568a9b93a1b6071f86ef1f7e6408dbed1dfcf54fa0212b4f219632e53ad979246fb14911addae5386e141c3032446092be59c169ac89a3e52ed0e15e6f4182bc753657f947bbdfad4604523dd88fda0bdd08bbe60635442c2fc8ad5a31c81e5d5e023baa7db3ea096ce697124968f9bd6c8f94bfac46456bfbad0e0a32be2d0990198fd4afef6021e2011b69af756def267f265b4c057f6eb2cefcb22a33252fb2a282ab3ac3e7bdad1a2f7cce385fca0de2860708710abc7bcf31a1f1d866fce147696ae9ea33fb40e211966b543b757e7bdce3fe8fefeab80c5399185b53f0521d57e5e930593e284cb3ff73662190e84c0e64f862d2d3cad6cd636dda0e6ee88300c1a2c090d6357f656223c99d95a30a6ea7dab16c5e073215403e1082421805275cb43317ebb70584d67e111d0dad67755e315661559eaeb029d407226a91a3475d28e17a8cb65607d2349558d227f00a5aa8af826735c8e37ba7c6405a2742f31d2a3e69360621448522e31848254b78d39d2a42deb1f07cc7cd8088d6716440594e0c56d8c6f53097afa1064c25b647569ff8119ffbf37016c0bff5697a2db4871ee6708178a4675a05633f1630c40f27c522d279da45fd0018593d7fa031483b0abd63a4996d6340178faf52cdaf8fc9e002e074f3d228326779470407becb2b43ffcc6c3c8b28d21cd7f48e69538d408fbfbccc359e27011c15083e21f839b74963e64d38fa215bec75b0da77330809720a13e9bc2d8efdc93b2eed2be0251553bcf966842c292649c6f8aa1d2bc8741fbeec2e74e3b0e0001b39dbc5cf27d6fb73459dd8ea315c98c0bea68c41e81416f3db44643162207982d14e0b4cbda1c5cd0a5eec4312cd50402111e3151943905fd841fd974d877f90961a5b271a97b6f02fa538cb7938ffbd4a6b2af4f2078648b57bc9f17e814499a9365bd22546a257fcd46defd0d053c42e0331b272eedc9de898704b18a90029844adcffc9e3a1518251a2ec884e47986fed14341d650c89d6653b749c3798025984807690f500463409fda8a4e0db1b4bdab33d237b4ac1e8b70e8f9d76baa273ccce0a8bb69a937e0d0d4048721e7a5d70fe1ffdd7bae880d2de9fe32c3f00dc660d90bf31fdb51265f467b477754826ae6332f2f0dd73d0bad59fe6bfe3190eb637ba3bbc0d132a91c635c79bd50593de69dc7c269f027f7fe3c400fe7f992aa92cceb3c6074cc6df291fb06e902b6dd22611e2d0334f5462a1c826d94407fb4f50184a724b42b0ee8462e160b5b542e0205928a60ca2e9c2b8c702b5bc6556105ca1f67558b6f3cd5067c6e0d79637d34ecd8742b281f927c6600b949dd3a7e9be9922fc48ca3171286dd318aa25652ac8646d83a98471730c72f7a5a2dc59181e28ac9e0f604ecfc8a3f1d6e1533233665079130032da9866f749d81e36ae91f8a8b623187f703082a83b9a528121f2d2f5f3c05a2073cd15ccae54e34a921f104343c5b903dde3ec9e312357d8f8e74e395590199017d8cdd86e17ca09690b4bb8e414354e91c7d9aa2d6a44f369e24c1dbb67c45b48995861049782cb8dd675218d4e38d6ed6235d46f7352ddb6b60d1a6ab754bc8ea313555dc5addb9218d17d180e029d730fb08fa8b47104df2493ff9101e9b441973f53980566b1a47d87492a9b2d9873e06564dfa25a704ebb3387fe318fbd25a112a1f642cea623e6f53e29135a915c487aa73c3423be26a354a30f6aa8afc0ba3bc366f8593769fe6e9d04b59304c5eaf0f5eea3a97b6a94dcd983bd90e9046c33a76627ef0c345881954d73e25fb8b48f765d5dd995014542951b150b3e021b7b3740c6c73f40aa87e2e9a64a4f08622f847084ed27ed921d08dcd63f9e116ca8df67720797478295a1ae9a283a8c2929118debde247a9c327d4976b7c1c1def305850d8d5199fe0a5f0c9959be362a0c63ab95e07ed7a6e9770aa2846e29992d932b7e830425e0f623d31625e842d442e11620a33a9ecd32d3e72c61f3c49d656445a145788d760686263d35d66cd56fed4910fa7500c48389c333e19ac94c4c30bf95bd7696200524be46960e1923173cf10ff95a85166833084f2842267f9d0e4ec74b09c10832a8a865872801b1a98649d2d00bac805a40a6b054c620abea378c7188979bacd80b305171059d78249627b22c37b7eee21ce0a950ecd7b4999b5110b45bf6c462bac1044716192e2559a005103c112afef8b71b93121fc5c8a49e808b1ae81e2a9aa8ecf49c4f22fc464e86d309fe14602f663c23b716eb46d3babd411eb53de00e741cf92f4b23460cd3a4d383891df6f42ef30e9430a6f1920c9cf66873aa68bb3fd63a62a1d5920d18a42629ab506218dd98894073a8086af461dea65b5d2afefdadf7c553997d9708e1972da695ec82b75df5aed93de732169139e8d63442b4047c3ac82fb6452877d53799dc06bee9e6b6827ced874212722b051cc0b48c0ec6fbc159eb2cd62172e5c807a25a3404ee00935a27e47ee1f09c8c50d75763a4cb910d382a6ac3bdafa510ed2f1d57f69a9830090305c9dcacdffc1d9d0d4891eb9131fd5d5a1d1582e639e12218c7c32ab4197a9c9ec9ef25c337abc5466456dc673e96682a7021b2daea070a8e38021be33c286325fbf9071c925e61e858f17127a5c6d16d2c0761e9f4e55ca3a4dfef76f699663b11ec04ca77511ae5fa2e36c6c8f54e5b09fad00f6096d3eda0cc127dc531b7649b228925b9345d4363a040ad794e2de6dfaf53662819b9a25492ac0e056f3b72c378faad3dd993576e0feb8e1103ccc9b6d8c1c9653f2fa023fe36f87f5278773c2990036a1e2628d915243589f3d4b535c922d50ece86b24cd55efa663f7c6cda3fb0c29e16cb413991eee1b6c147fdb7c60b2e14f4141f4242c0e941c1c65845b057df334248478dac85c9d1b88b6b3daa097ac2de06b9e879dfa42c003481160908337f8f10862f7277b9e643601925863f148cd1c5b019120b7467bb4932f54d5e62840c1d314a2351d2f2bdc85755fabf7b6913015496dd074c0485f5dddeb9dc1c0941f7c8162ea3406aba210a7a54e81f07a47b86c0a5fa63302e6b931689680ae6ca78d3b3dca5c4871778db0b4b3e2bbc6527a5d63da51edc68d2bb23826a99eebc5245e43acda2349dac49d6cd1905d15413431f4c85445566fab3186993703ac6c7e6dc3e25ff2507fa3830ea1055c0eb5be0a2c7b842088d8e48934da041736ff45e850493616bf119135073804ed31a546bfe472376780792ea3f89d0080e16c12866aaba7a41933a536e3bcfe6cda7be3462c0a21201a9adce028f2373357220d1f1d7037f6f849fafc8f516e4c53e6985977e7a96b5f8214ea1fa693c96dcb1f3d2dd3d00babdb1a11ee27141657f87c0e9831c10e1294a4ebc147e1f1732e35c356f7957350159617d913f3c3f1516dda3a7be3ca0078471968f3e267d628b1b19f7b6b62d90f4b440c13f5688c67518216a755ab4613bcdde27f5095e6aa03c7467efab4824d1559726bac20e236b4fd05afe4d4a5a18e943b85950bcfd01ee876ba18df9d1d906806dc89d7b4938c710d0151d9a58e5a213fc3bd981734a9db8efb6423c68cda80df68896439dc8050ae468d098191e8641cca6e1b590d99e4613c2284d736fd626651195153f6247814f8ca678fd972609add5cabd25160d6e546dabf3e2643dd1f87d4e233ef695721bae772e95a8bb2bf95b6b685438090b3d223e704d0ea187434ad5873ec6e88c166da2baec230860a3eea49ad506e522254f627ca2fea84a2b7fc49675777f06baa2231a3a1b287fbb3d58e41217563b34e689c19ad3ca93e5542c53dfaa1b5273639f652d89af729280f570871084aaed95a1b41d035cdcd40310eb8d0c48e114581e21a418f5dc62688d40a192b138e91df89a04965b53d1b3e78074bf5da3fbb4228a5cec14d133c907188bf6a37f238e2a2d75555a0a55af57b3bc7df991320aaba409b8172896754ad846109889f514e4944376c87539d1652a8f7305d26b72d7ff4144903a139e252ad0a660599dcfa807c141bdc104dbfd54b697fd58f251d57bfb40c88b503cc5d3eea400bf6e667215968074e696868105ed8bb08fd9ed6e4d4a471641829680269b9188c888cfe89b708a0537290120c6e20bf0b6022b5e3aeb786d1ab85ec839d8dd19e475dc23d6fef7b807a1f508132ac5a47cab53773af3dfa2d966b8e37a1c421ddcc241243f6a8c90bee84ae3ba77744628e41a55041cebd7816515a17b9bc736f31ea5825e308e990f5b97c1740dfaa8788b20c86257a1318dff4ff9b382d2cf71ae0faa13750ab6b0714a14376dea99dfb86b2289cefd7df7f5546ec28286aa2724b6b05697f6de0b46f614ec001187d838070c322aed5b685783abf01379bcc5462ecd650a27d9ca40095fa65fc9a409f888db0db70fdf284caf3127ea3ab49f0de16b8f86c586d6d3075c06ca2036984d66803effcd9c90d7551e1fe30db3b9c78381142688528c9b003e6bef2dc87cf3b70dd0f5ae5c5c49dd0d32a0abbf3e669a8a4879afda23d2ead94d1383d631e1940c7d60a84fe8df93d3a9b428f50f353249ec5ab35f462a45c961585355e369bf8d8e764cd317df4f33ba793bfa584bef21494d231e88c8025b4337bdb34bbea656d023d7fb5b19e33aa5717a4f57935e5b2940ad4e22dca6c0730ca78103dae8d9f14aea4be5766c848b4a6da387ced97720c6cadd86884e99d56aa862d2b2f83dc74d874e3d154e6b9fcbae73d0b1b0a56d4c852a7ee5a301315ab550aed3469412880a7bf25534fcb563c0cf5b682a98c948328fd44a9a97b09b91286eec1976836812a005b8fbc886f0ef1f4f104cc78ab5c3cbe8927749d2604e2ec56e101a9f305cbe5084e1267a4cc6da2eae823d14698df3d8820416ab28ebf15e68844d8e2a08d3fce20e00ecf911d44cd23a7ebab1b7f24fc44b04026abca40803aa031ba1c60fb6d67c7a3adfad281ba1fe108e904034af5e6681b6376e301b387cd8b3a93fe6b80a41dcdc7f6c382ee004f5ce6bc4319b18624ae147eaa9813894c1f46c687c8d42164783859f4013059df811fd9111972be9167bf10ea1b59fb84345fc9b64f88409f9eacfb0a69dfc8d94308a957f29a4d63f95f2cf5d1b070435f401b0a458ff5b651523c0e598619cda79475b97a728c22b7d8d1381349c4c329fe3acbeccb98b5ab485839a075ec2bd35d0c02c5ed84f1d3265667b03cac832f6655ab39060cf9e8d61985b6d2000209a2cac91e9c546d683e9a120e4e5cd2736b35d0c695023c4ce6fea106b22d6097e0352beae65c3ba146ce2553a13fc912ead33dc735fe350fb017ffad03fdd11ef55323d77c35f4fbebe54472d1a60753b5e462db2420efe457f5d66ac00c6cef0c09b934a5f80aa2cb00729dc16302c080eac96ea88ab1be7180b9bdba8b9e93f26b40422cdd63f9224277bd4f7d6e3ac83b0c0103664ec9bdcf86b803f49ce4961dc876b19d400c207b308c3bdf0ffc8bed3f4cf89ddffde4954a3545274a39d1067b2a6fa32b7dd7759cb4f6a3e4ccb8202ecc3563a676a3d98f7e7bf52c32e64a1efd466f419448b39ffb6d69e122d18ce18c768f32c6978a553438f46823c6d9ad0d05a313c489c285be7ab01ccbe92868b89a4db54239eb3e4e0e72b2b505a77b77f12acc888715540f485797a7b0bc72e5e59525f064b1240402ad9455aff4037af77388ca76cf4cebdde50a787ecd7c503a6979633206f9ee4fc46a2a4b5f6e32f898787605077040b2b1f7f289bbff27a300d44ceee1ac29e18bc9030e2ceaa05cf5b6ffdefceb2d92bb82f5637f517f6c4430f246d5a8b76d311d1d2cd52d48ef8b926c51b99f3f55547f984770ea163807059107ce6824f4c324e3166df9a0db76078bcb6999fa290f5eff19a958da75511d5c2fa4915078121f04fc3c3f4670ebb405fc24f0c957501bb9d818825b4302891d049b225ed674f8ca9dc71935e964ca3e8c461143919e6358fd258ab7d65e75e2d501373ae69f046aa1dc5f2843b435ba6abaec7b5b8f401fadd7d691c51b41938a9df029d5cccae4d3f71b34a4865ba03df0584fac37cddf800bd9a11cbed6e7cb320bd0284d7337e1bf2527a27d3d816ddcea0619f3a7a01c114549584db1f092bd36422d59fcc4028ae5887da33f35fa9a26c89a7f53f510e0b8ddc4e1d35f628f3cf75637a898d59d538b04ba57c361d0bdc5ff49f4f93eece26c463a088c4b84ecbcd209149bcafc660e4544af8eec0fe2311a46d7aedb11aa7a439bc5f36a88d60dce3f882cc812d6592381363c9602df1b40ea93398121ce9c5009981714ac56b198a2c5d72a28b03ab4927ca4b5ce442f6aa31a3e6298977ca3951664521d479f77d8ab6649650f99ab9e20088b80f6319b208ad7348f54d5330a5cf30850785629c4cdb29ee5bead60e4d05412dbc46ec04e24a09747d79f2eb24caaea63c2c6f2d7d12c563868756a4b046ca74f62337a83b2694dd438c326bcacbdaac73c4d4c7a0a2d2f4bf1f9a5f75d487911927c84c90d6292c1d4da80b59c1cce2dd62ebf870fb439d1be897213258875932e1f6899a3841fc522d841f694963e2153166d59853127587336d80cb3bc331b20ce0edc33cc9e62b5df7679324015ef50ef301cde3102102c38e086d6f0069311d61efb9c67712447cbc46086ff62ec2f2055ee20397ce133b181b2d35c602763ea7e835cab600d31fbef129b41f1a25632beb2ddef9654b570b2d6f2e8c4944b1e238cc4b5f230ce071d4754944f134be31568a803f38825244c61cb18c13d347eb89ef80ff2e412a95c617382664ac9a7c61e664177bd58ae2146bc42be38282e625c3874b3da90d59744216ae8028489949248138c74bb3a569fa404ad90d6f073f628738e77415720b506c1a5ef60d54ac5712f34966c9eeda964d62955234bbdc431018b42cc57d59669619341d18e8e1bfbd1b685fb08e7066c6883f3e0c47e0406a15eb89f9e3fa1784908d194899ce4e984d5e18641a5c7c1aa992e9c35b15b6e52219c2e951fb4ad570c64ee6f63523ec1eca3e21fd967d7fb642ad53ac0d6a4c5e33f948d8f0410eab8f2265de66e7cabf844c1a00bb4a4b1a4a0252ea76ed4982b3e661571e1025c63b7da426dcaf06be243cfb61039df52ca4357c9da041c2dfa9dee2c63f600968d5fca13af691433d0ce727559de92804ce3ec99f2d2d6ceafbd46108dc8d618e52456ff2d0ab2b8e1ce7cbf778cf1655c0b0f4c46793e40e6ff5d233b549471d7ca14e2edacbd6192f7b0228d33914fc1316435a953ed2aee0fc037e871d5b57aecd9dc29309e77ef743c1bfc76e9a346e30e7ae86711aa6ef0b459b4dd3c7026cc0864600947bc48f2fb05a473d40f843c0900a77ae7908f53cda0f13e7700cba24d89947072458d08ddfa7a4b9104dd28db163af5023a70178edc4b4b52014be8664136cb101b21620cc86efcdacb52e11092d0b6a59aaf85081e12c47485686b5c6e0d5df96f3c90898c8788048b02081c6200b7125476b3764404bdb1d6921910e27097d1df570ec5fee415e8e4d048491142bc987185f02a4d81fd790dfe3e70065af0a987001452ef38f156e78ccaf863ad2ed93e504870cfec25d75ce1581fed5a1cf69c4843626996e5c08209af7214092528241d8cb5d1526d8b22602283f29e5a7ce0cf27e4ea71e8afcef2c5484ba5c2765e370f30b9f60eec022310ca2384dc8d338a7184d355b7315f672b8683c9ea6e23a7cb5202ce44fcf9f12f56089361b58bb088a8f797a4d78832c15b4461434e9f519be546116e03557ead1d671cb6ca716ba5bed3f221529d73f05b9f7bdd63a0ff16481b73315ac641202d47a2a003183fef9842818177d335262bae0b12ef0473ab5ecfbdf422a4c9c132187bd61b7c40f97bdea1cac4256a11e1c438215d89d1a7333bd5694f2098672f23686a29d19cbb4147c71582a39d3b8462fc6f6f8c01a975059211533463320077b8e7875d19247ab7e23f5a6904359637aafcab6c9827775fc8af28faee2bb83e69ccb74f5ce22bd2bed926a4fd141121eb2e43a580abc88374ae13cde2a65f2b55dc9cea8b3b570e1939b27d1088bd964d88c7fd20a7fb0cf8d8843ea34bef333d0c1b46ac354155a1eb1c740c0f3ea6356f1137814bda798902e56a409630e7b2caa2b646ab30108e921b2c00874868abbd1fc2181c0e4213ebdde7ff091bd1f872754de699105c7cd2cc13c8f94894303597f0863ad0c9218e5bcc7b9ef82925f02ccc2a81ecee210fd21828bd496f1183209c1842e285d6687e3850937e310e5f04e790316902b0ce7639629845669429bed07fc03550f287546d21b79a9ea468e4ae2535ffa283756223e7a5ab905cc12e20af7710eddb8157c94075bd9b1fadedc7e086ed48f6843cb6a6186a7d2c9b65a10e5bd9941a295b79bd58116e178948bb69a8b065997622b75fb90b6d655897280a3d546546fcd3409fa9d541f1a0381c5a1cb400d00b28fd9e082b6a5ff7fd809c16c8c7a20e09b24c66181a831e0a78494a0f49bbf5f6e472ef1b6b7c361eddaf1bc03c4b8d80349bd83e06ad3f28364440ec406f06f8c336d21d16f72e0330767d0ab145b8d93fa1c054933bb0995488c7b1210a12c4426bec4d0653abf6d3c5956247941688fbfc67167a73ce63fe8f0af7009caf3d826f5eaf91822fb7a340fa8b9238468f1e50870e04466867e31f7d644aa498da8e2740eb4f4fa6b996e90dcad60ab6ae8135f06d2aa7eaa39e288f8af148f44d67ff4efec5a32e339eba3cacf645ba148e3b04324f75bc248f44d4eb5c88adc7c91c091b3ecda3a262905902f0c71471a18cd7cf7ec8dea1a849cf8668f99a8a3231dd6b561d2ec1007e1387d76be760f60592d95ed9f0a0bdc4ce70b4f00f71d5fb0f3a996176b4b2078abbfbd3300243442b41a90f339e741f52c1f169eaa8a241c4110d4bdcc1fb11b2aaf2c067410d35f8eed27904fd52991b1e2e97cafc430244302d64d8e60070aa0cbd1a0a72993bdd836fe411468718e3b6cd71bb0d0c189b725c0e5e9e7acaab0c8492e6cecb15df864419580b1eba5a3dc5e8c72adbea8dcf70cac0c25c3d6b099cac1576632991a5c31c299d49ee4d9eb4ad2a8ace2446ca7542e9c964f8303f28cdf656984bb4256977726a86b71195c13fa408049485b43acf0d2aca5c92100159daabe5880b48da5fefcfb96edda124bab75c046e6f3040118c69f0789ed10760f1f21d57ff92294d86c6c9d833b925d27a2d5c2bafd35ce5bfb4223e29e1a9807f245217f137d43286d100f55498a83fa5270688e94dc56bb499e67df4e28b782d325b1f4ca347968cdc896b1534d328216a5a0bbb807d0fa05ee7cddc6c5edc3b839caec4507ba1ba6cf5a204a447c67e091fc91495214503cf9e8d647c089ee3ec5787b99a1a31664b7e53af1d44375a12470a36801a8fe26f6a76de88c91ab13f3fb9cba679a8768566e13720b6e77e1faadc2cc86af7335fe5828998f02eedcf8315138dac900306c1abdb8df6126531052c41d0d117a7d9cb00f46375f4b26624490dcc5a7578e42bd3ccfa6c21de373aae4023a4b9deb448145ec954c78e1a90adef5793c913f5c1865c4560d2fda55c48b33a9133c7d18ab2533316ce05ec0064d627a332fe92c57efb479284110eaeb3093751af257bd79382cbaa62a20e37547cd571cf71f1fd4766bb3185e223bcae3c02a3ee305cc0d6dfba14a8437333ef503e08d2c325fa13458d9f9a7be2bdf9f30811925081084483d9fe3a75c04ec772a71e521a0cfd093fd6d41858d5234306832e857b98ddb1c279848aa77736647f71f168201b94a18c05ff534901f43b048ac1a2855330dad9a40d66e423a8580673df8adc36b8ed663ab712e80a5024d8a494fe82042e830d5d36e7c9faf5d0286e026016c315babcf02a399e0bfae81234b60977f8f449c550171d3c3a63656b12b9b4b237ed4c321a084a081a0844865cf7556e15c465ec3d7f77c3de39e62e7242fd6ffadb318342e5fa959ffeae9511bf0b6812bf10f10db4025dfe21acc77a672a8bd4409a555093a0f8db7489e47635cd8e0d7cf09a91821f7c2f4ed0ba73e63a04d2b97fcf6a15baacd125c3be5affac5b0fd75ab43f301f9c26f8186b8dc12c166d120331d8a6662bf7b449ef4024b6d6bf6aa4ddc558a8b5ba8cb4bb6c13be06a5a035d31f6451b95ad02266d6583e98dfb07cb007899799c7dbec5b33fdde6c6b792d315ab8b9af3a896b2d8d59d0245ec24b5828e6bdb2245b6ef72f1b4305ad9813b4dceac1e861900cafecb9feb2cfafde3b0fc16f5504db43c76aa6772e44b988ae19f6f1c25c81ae26f110cf6ad0c4e5dc668eb2b5269b94d3e3450599b38a156a81cd599a4acfafd8934979d84da9e6f4fd8eca545dcbf5d4caef920bbf4de622fc65cecbf6a6bd63b2b66f6e726f4ccfa561e172afe82006add8138e775141dcc2a17852c1874d3f9b35f8266e10c21bf83745de655fe4dd696f60ab0de3b3c3d934524abfdcde844dd675216b0f1fe7c2d61873b15690ff31079d6bceb5b6b8c12679c2423e3f33fd37e5343d9beafa04e9fb81524e40dc7f3efeb3ca3a3d57cff4b449d3afeba8211890e9f37ce9377d4ae9cb0584a494bf7cb99e17f9f558113fcee5979f3a3511ba37b2a7e9df7f9a08dd1baed48b95c96a92e7b9b5f71ec2cf435845f19a051c99dff36eb4ec79fed5f7dc430fbff7545785bc42d06cd410edb9cf42ca6e5e0b102da1a1490212889474b7737777b7cdfac6e4b21789803269b4766e0c63cf577a485a0588564127d024b66a55ba8bba4b89259a922b1201ade0109490be6dab28aed7796915d4995fc6185b8b31b61863acb12db6496912b32211d0f5252041096877bfa96f8564bda48050469c68cc608c6185b941c89cb9bbfb59cb06222281880462106de1fc8dade7d2a4f53c58a3283052d06ade1d4de39668d2b26be46e27f031cb6d1881ba970ca1b5ae19f72d3196868c919cdbe36c1881c2676ec308b41a05b1cb3a0fa38660eedd0f57e6bab76987ef48ee5a333f04bc9591c7423b40a1a5468664561847c162bd88911b0c852e30b838b9d5bccb2e2d487eda347d6bfec702628ae08629b749330cb7ab901f13d0f591fd52c72f783dde7ef9a46f2a487fd158da5ba7af348d8ef7ef2278cc47d2a4433268daaa9f5cc87446e8f1c5c9315a2aa96827cc9e0fe52c3abcc16963026699ef94cf7e330fab900fef696435333bbaf45099abbfccb69aa3096bd558aec7a74d1349ef3f5f922aebf8a682c03bbd7c30c2084320e86b14adec208da0c718197cefa7077f7a567664da354c50d344c23c888c9e674ef4bdb5c5a33d35ad32ae3fbf9c268e4caaa026c5c4846066d0f898976bad1cbf5e7c9eb7e9980730e1fa573a5cd6521710462c1e5e3384fe27c2d112ee33fea7ea9882c6c7f101188d2adf07ac9a1dd61056f34bf8ffa02500cf2f0350e3730062002adf4545225611be9ea775fa4f253dac3a1e47257dacf2bfaefbae801e13056446a480d8976dca541c1febf49e7f5fd9431709b443fcfcf0f1a54c9d9ac2314d8fa3f2fdc9ce26b55a8d26a382f4f5bc5492844e3ae7e7e7affb79b9160e88e31f47a5f1636fe2f3cfafe647cb4b38092bf1820666e2723e7f8c7b3e137df6c107fcc84b5849accc849378412b4ec249a26526ce5dd6ccfdf8f5810a03c15ca2e0f097ec4345c2230babe11ce6c24030969c2c97e124d5d1cbbac3eba83c7c0fa600664b708e31d64e4a333b789478ec9861e8abe2a93d507a1e729a26526d2badd357e013204d05d52b5406adda493b593ee20be043f08668e9a7bff16bf9e0b7f102a8d392611e95cce52fd51dd1f292f8fcf1436b5f691d7f4fed2a3938e4f0de397cd5b73b54069d8894ee8d0e8f84c7977e4e1f7c983e5824fc83c7dbf49c53879f1490e95fd4e15fb42221f6e64eea08fa940eff5697c5656d899ee75add10295d1de20d7c7eb6222194bd811f9f7e451fda9bf7f918815020f49972400fcfe3190d5e988c4ec25d968f0a5e108eaffad6f007fd5afe357ed61d6b869f871a0235897f54290f7e5ed2341f7b33ada888f8f3a3e524133310137d3b59661cb6ea6bc3607d36c71226f1d9562cc9652654980b153a97c98831ae9be3d7bb2fc74fb5c8faf2424dcaf1f471d40f5c3339dea6df6c528e1c1f73fc57becf6a625a26c7fbff90e33dc7e7f81cef6ddad67682e3f9e34b1cff389ee19ae1f87367c2f9b18c3b55432e7be67ffee1ff330a088efffce76515ed44d51d5fd9f0e12b181e5f4d773e7d1ed587cabfa3d6cbef59d4cf5431c72f6a884fe7f05b7f51423ccfb689d2bd993efee3a8ab4939be9d7ca6a6a29fbc9aa3c2fb957dadf0b6937ef26a13a5cbf666facff433be84f53d8e17a77ff4ff9aa3d25a71174ec24d704c31310f80980af354ad3a0b376af537f4366a656fc83ac9611a30a050cc28c618e36846ed9c8eb1bbbbfdbbe30c1824472608290d855e039ead8894169389b672228a7b131f567de390cb0ba88888f6716573d99bc4e0c3d22dddf992f434a734e4c69f616666e6ef1cf814ed9c8fad42f03d76c8853f6317938139cb51407cf899af680ff27da8b065def75057cbeca8ab6566ea6a393a02adda4993a1dd18e3db3022a55177d1d1462c41faaf8f03d1b18297353ed755e58eaa0459c28ad5afcab3f274de95a6f14cbf1610ad0bf3f097bfb0b82c9fd9e5275bf573a63c4df20fe58b862e1a9845d3168da739997cede06930d4c96b9ef83def7f83fd77f8783e4fbd7fcfe5ee9ece39fd64a6fdc43bcaf55f3e65a76d70fd6112c61c36814eaeefb09a118f9765c757ef4a0f5f3d2b4178795dde96ebcfa3871d3506faa591a3489075494bacb3bfbd7756c71414be7c384dd3db7457d0c2c66790fe2dd432feabca16542e64a3d1884362d06ade506320e04f367e7b903d5bea2219e94a358431c6ac1933662e9ad96b688d131d8a6912bbd7c954628cd18ae4dfc46f2fe3b78fb6bd9b649ca04fd67e20d7a84358a043d8ece14df2f90375ef3e629389e0cb761a71296bff0b326fa380ac7e40a6878f739b2bc51c990bf84458a090ad1d27466985960cd7f892690fa1688756a311690763e7fcddf9a8b540ae5137ec666ec8cd18bcad5638d749c65eb27f8f73d948ecae44e69d6c0b8179342e8cdcf6aed98905cade5dca72cb2fcbe1aafb880b75a282306801f765190aa490020b2d9e105f86984c8c1325d7f3e058ced2a4c8ccc5f2c11f9f652d92f5b871a2b4f06a2fdbb56bd7ae19640fd9f2ce9a89bf43163d6efc8a77dae3e9617d82bdb9b8f1d94e05af27be945242fb1eeb8ffba9db39e77e72f5fda7c29681ddf01bc2674dfe147f872f68c53b939429982a6b115fc484b6f83d9a26c8ba8ec67dfc203e3e2f891fe35f602db17cf08d8b8aa6594fac7822e20fe99af5237e12adc4339324372e31dcb8d250cdf8f1432cc219ed1a457bd34de2155248a1051658e0b2c144904dfe99967aea5df55050c9f2e19eb2cc4593380b4a49f950e8bd2b5f7be92c4b5933f077b882cea7debdb30f2b81dfa4782629a5a56a452fd5dee9ad44ce3d1672065b468af86fac8e15bc772bffbd13577e93737a7a633dd224f83b3081562c857116584552394993e08b4c40832cf8134400087f09224e18f926758d273101f84a344dbf01e8112e0c318177a62aee04424abd545abc840db4e2255376acd0d0d23435def3d4f7917571f8a6ec57d7f094967138dd050c04df234ca69fadeb4ea6cca039fc07071a36891a1e1bcac1c63f7227923ba997ac4eca5646ee22822fa32f975c4e3e4fa3563897c6cb3671a8d42f8a86e771eeacd87f405fe319cead518db40bb2ee02e6f1f959ab0ee37ede86d1a8abc75a2bcb9d31d9a23e36086c8a3d0c17c8b81efa1e181846fdf4d8eac8f57065261ee6f1f0fc45b12593a92a7f56fe2519185a18b35ae45d2925153baf17a89df1add11e2454d182ca752f12e21aab604fa68c705ff1970bbfdcc9f211ee3f5788831f9cc72c842851a2042108418002058a175e7801fb99997517c18250a54a151ce0000739c8410e74a0031dec60073be8410f7ad045175df8c0073ef8e28b2fb6d8628b24242109575c71454e4e8e1556582104210841094a50820d6c600322108108596491057496032db4d0e2073ff801129080042952a474b3f6ba1b633b54a850c1a275b77eee182c2814edcd1b06b2db999bb9bb8866295d72fc40071d376a6badb5d65a6baddacf5590cc8de3bed6726badb556838f77bc077461b962a5ca0ed2c734c99dca1422ec05b28380322199bbbb2f20a564ccbd3557355b91ccbfd65a8bad85015725feb023e656a0fb0ea91504033101e6015ab682332c0cadd2539da7a7b26697d7f31f783d6f330106c2f3fd54e5bb3c3ffd821e2b29f9366c56166b155a4cb8ddee64d4a861a3585568b44b42695093674041e3d3a8134e0f7f28e8f7e71346a86493a21ee667ada6df962f6160264a3f1fa73e1ff9d2c3d7511e0fcf89c2095606a28f09ccfcddac193717919217a55f81421f8a060c35a3524f6306055d2655a14bdde903f3f4254ca59e528a52202a44e79a895f3d7f83ff43bdfc54cf539f0fb3e64e060864a328cde81605d99cfbf6f11b634c42916d9b07ad563dbaf2cbd55c12a692988cfca9563dae7c49d5cf7bf8e93471e59e1e8ab2ac13fba9be6f38bc4723c2c751b6c2b9d4b75ab197db2ac86a4adf3cbe9fd9b07c04003e6c1a1e48dfc3f78eef3fc26a667cf896a13a9eeed478d0d3f8fe116947d3e420fa8fc981e3fb85206201cb87fd7e23968faa73a56976f87ec6d2349eefcfe77dccf87e51145a7118973f7e00f84b9579547622432c796803e5e1e757ade44ecb4333e1c1568d07de32539d6032fc3bea1126c3df436552652e3aa698f47978c903e5a132166a390b0fa37ffa72543d4f479e51651d6c1562cdf0d70a64cdf0d3ca563c96759ac437744c413d4fff5f8a6a8ce7452f45ef11f9f588a0f410437fc0517bd4209ac44feb8e5acaa1daf8908df7fc8d1b37aa8d1b366ed8781b231ba11c4631b246a5f1201aef791c7078fa12874ae3290e3470a0f136eda1616b54cfd3a89e05533d4f3df4433f4ce5c3efa993fdacef5b18b782f0b27be9014a0f360af6f2630b66611399a694c88f097c3e1827093dae15494d72e7aff9b7d65e6b6f3477c0d1fc98d074ccccdccc18b3f64941a53786f4c6ad638ad6d817c11853829c904ddeaf8876df64d7b2fd6d6fdabff7edb16fcc9a35d25d44638c3924f74941ae998ec2bb1d49f32235fbc47041f99737b75d855c354ade73f7f0be0a7f78b7ebe7effeb646e0ed76243ed922797377ae351b43ae51b53cbfbe4710364210b18046a4492ce35a910a4dc8d873fededd4da21ad06a879635f1c73ad91d4c8868e0558926b1249ac43ee606945f5d33b602d7bf9b75e0d1b7d54562feeef6f871fb770f56130a31d63b9aa6ff76913d5141fafb19ae123fc5486b3060e05059559654c1095e50726183ccab48b6157b6827082e1c42fd6fd8c3774f15c164056dd5377444a11dfbe14fd6996d356a57300c944fcb7d4f210ccc7ba00330303c3dad55bbbd600dc1c0d8285697a58575113d546bed7dbcb5f61ede4fb337ef31a5aad26dadde6663c65730b75513f5417d45c3ae19b62dfd580fa9bec76cf4f7ccf35a412421c0f9c101fa1ee8007d11f00f6a91f08fc5647c8275920dded820146aa328fdd862b2a2229a18dd9b676d8c858279dafda06f5810b91e56be4f43b41d3b8c896120a8c5837f475794bfc2e17fa9e92a7caea0d01afdfb22fce58e406ed79ae177306e24cd0959795b050bcb3242bfd81fb040a757c26a4847207477219cf4a1a68cdf1ef63e3030302f5b8581f9f63e797e68fce769ad70402010c88a6afc0de8d9d7003d7b905d4d02d5f05a4dbe341ea6b61ab5721a75c62faad1a838b7cdf870e1045da050cc3f0f19b45a58d8afdb34ccf633e14de4bf2e7baec13005f3a564ca49faa97cdde4138c919a7c8231fe9d9ecf7b7e793c9e4f95dc1315659c209c3152dd56b076a083ee3f7dff049188358921a33bd52b41320e0183beafd615249218b2e36490ab69dc555fba6dc3dae3d65a966fad75f3777508702fc2dc48bbce8e1d08f253e37924f1a99794fbf37b7e6e9ae65f396b3c4f51efb06b3e9feaa94edcf8a1b31b091cac9aadd819f55e43717217545a1ab343abf6dc377dc47bfe9eb322217dc3df58984df3e663146bac3522d3dda74b67de9ac47156577b56e57a0821f58f72e6b102e5a74f0af2c2fafe868e29e883de44a965f04a980c34708922654a8e162e6858643ca9d4e3219cd489cb97ab23979943d0432df30c22dd49e54fda35d44bd9f17d050a89ba78ef41ce9c28a05528fae4ee3d1ab4ed2fab155f3ec0edfe10ab79ef3d5bf1638f21a0d958354a2c99fe6982815959804101650bac191150ee2bb122625743c7a6ac3752caef6e269a196962deb6951197968fdc396d25bfa79f9eb33ed9af201710f4e31042180a8d6ec54fa4abbb26f0bb78d9d265478b1c2eac50a99265cb7b29f558f0bb1bf2e7a870ae5b23edb26fb58955e5e238762e9cdf2b22b322321777f3c76e8cf06d22047d08f9f1e5cb06bf5977dbd8bf26e43d737be894c14764de674545f8b34dcc7be3ecb220bf6da749e9bdf7266c31ca5819ccbf4a61e8e76dbac549c9a909e85b5a1a4fd9ea6f939c46653f8a91a26aad2670df242b8395c8c888675789b6fb2274a70f39bb3b02d9dfc820a476a80a97ccc4c4071e81d05150f1b3c93d3ae7dc7d3e4d4be631a74c20640e4e255762a50559321cc3caa15375e4b267b69a202fe742374256e34b6632721f697a978b84304c6845ba9d6471698b4b0d9196e96f53d41ee73a8bc4902641239ca45a5ce05bd2242ea0494dd39559e0af4d76c86302bab3562452932a52459212241903fdd8a2557c6fdceeb024661f8609e5e701ad8260f0dbc5e6d38f48a5f6d09276ec58a42679da40f9f9c9a4e4e734d9ca086c6d036bc6bd6bdc7c6c60cd38c89c38efe7cf4166c646b00372af88ac2c97571625a46582c9f433c153aab585735a95b2b61ffe8818c26ae63fbb7367e51c59714e03da8ff96ca5e29cf663510e703fa675e2471389430e7d2d36c0fd906fd39d250a936907b41fd2b61f38e4f80fe83bf32563e2ba139faf8ec81eef39c89e1d73e66064ce1c6410cabaaedc392df63c3f3d65359f1d19a59431fef8d4b664a6a73470df335c33d38fd534321240f69b817baa10fd8a5e98095c662b479aa6d122f9b3c91829098e1e3d328f3ad7032108c2d1224d3fdf33bb707a0bfa9de06baa1d0f4ef091e223c5093e528cf1e442ea5d9dcf8f5c9fb622b1929762c94bfef841189fa3f4c74a979afe4eaba7697a12a918ff45cec177b6f76484ecbc60ec874f02f6d4b17b746bd00238b46449a269fe0725960cfb2eec2db066d8e3d042f9ab1e59b88c391b820802a604140a64b40c2a0413f9e35c269a144410f0befa4c064a88c9940121a5a1e6ecce4a4ca69f352b12e26e614a40f9499e32ba302fd0c9ee43ccf939ebe5c72a6b8504089ca0656fc32c1c62b122b02ec259188f139ef91e4ee2a15fc9ebd1611efd9e9f8b86dff374d150eff13c5c3e88ac2e53e5ee0484b11fd669aa73fb65108a991a623215bb4aeb58915dc586b90abecf152e8e98a65f62d55025168de7a7eae357f24e3f170df5d3d345b38020e243fe94c38f08fc68b9c4286d4be13078a72ad9823d086678e04a2b932cb1ac04005650f61567e12a7071fb0a34813b73692ac1922badff1b1bca4946295757a19e60bf2724c765eb534b175dc0f70ab24259ca8573b617b6e251da4bb72ceb2d6129d7d59573972c69527f8e29e8b3eb2db9fd2c0ce7a6d948aeffb21563be4f7a6cd393d3cbf85242f8ad316cdfde626d906b740504a2a039e70cc11a79e5da74ac21f637be1002433e797b5c76cd7ab66cef665ff19dd5ff868e29a44bd9ce533a63ddde31e71ac9943270218ab34df4b86e6ff8fbdfc9f01b1f2e5bc17749c3d2e78df5c68f60efe69cd3049f27089f35c2a54812844dcdb16f1e047289d5ccf8135c3230536955b9cd9fb3d469f7b367214bd732b7b986103255be90c2f8cda6432dd32fe183d8bfd52912e2cfb6a0a2733f6470b9cedffbcb07abd65a8bff628c4738eb453e6c4b18b7bd576d2be6d8dfefcdf54d6bf589229f0b85dff646fc36c8fd0e85df75446b736217454affaeefe16a0f3ee85891cf6dd49a59330cb98c2577dd75a35cff0e8393eb2f3f52bae52a147ed79a01f28411f86bcd40f17ead1991116d4485739b2df22e2cf2eeec22444248d5f583c1cbf5ef6545efd98b9eb547888490ae3f3fa92bce63f645071d30c698a2050c296061150e8369015dcfcf42a03f179fa9cbe55e5397124805bccf5abc18639137ba4065dbdcf638ccff099c24b73d8e177751bc66d64df33fc0f57786e371dc7e1c0870cfed7f827a6ebf27c75a3ebcab687d15c50744cb16d1492a9ccb8a74bd59222107b8fd4fac9c03dcfe03dcb6fee54a6766e67f60902d72dfde8743165161623147901c39225343d05b84bbfc2dc23b17727fa06f45b9e669eea3c5671ef988c6107017252408022eb4451070e1fb58b1997b34d0170a071f735648b3de4e8c9273951433aa467752503b1ba389762883734dae79195ca4055af99db572efd6ddbff79e57ce426764981e8ab2e0ed03f08b193bb002ddf72f574b3d1ec2d6ac746befae03823530f66bc4a4e03bbdf7de7ccfbe3d86ff951297e6f91b37a6fcc4dfeabd73089b55becc0f4e5604a52c1d1070c109bbba63f4ef5dc5768caa51a5c4ddc1ea5f5228445bb32ff9f27d6d4793c440abd1c8b5cb8ba69f59f4f8c2dca5a38406296841284152e996eefa776ed1b077ef207f6b39dca5a3a404dee531b661d92a11cc44dca85aab564e7b1bc618234288d5de4608225a833644d89826d028d4a66984681ac6e8b2691ceed201c114b7a2dfaa5077e92491c182c9293d63cdd772a6234517b7a2b7fbd7a85911de3feb8187647a0f48017fb2a20909fc09e2fc78d5b977ce39e74afc45b6efd183ddbf078ddb86903a68c9f4db04d1836dbc6ba877f5b747b5ac544d46176e35bacb4a16aab815e82e25554e30c5c70f0b66c934a4e80fb7f9f2022226b9cbc130c08b25a0265924ee3d20457bfdeb87b3941ad22c6432fc3f3e57d0bf150df53f29875141ceb0025dbf5e0274ba2882183c38c20e09dc1376b2301c1f4061085ad2e0842b5724610ab7dfc7b0c5186670ab518e23410a5d5fec4ca9a2c92261c364988e17d0f64e65e0bf774fbfc464603fce0f9c1f4d0d51f2bedf6aa14f1440abb5e5b3036fb5766e1041ff7eb2340d6fb91593e1c2ffec30c16aa6874f9f38699975e17f7684f042ca940b85f0228a94c90ae1c5932890863e3b4b9a502717be12ac86e103a1393487dbbf90adb5f695fb771f7c94c950fae12e4c03d209625fb690c314d8106780310627a3bbc010031ac49065857058b0831ca0e00a4b08230635f8d14b8ccbeb0b162c09010da860051480c1041874c1052cd460041078c15d61b245470b2f50bcdc6a56442633e125cce4cbf81b7c055d608cb1e556932e30c6c8c2adc5976e8ae24e0d4ef02920ec9c7b3839f7be3dd8bed7a2690fc25f81e4c0018018d10d1ba11c70a801a23103867e3cd4947182cf3567bd66d60c94c5ec77b7188bd9bde7feddbcd79adf2fd25b65e9f7bba7eedd57f3f2df380b8ae1a7a0e69a73dc9cdbd0516805efa420876140ce145bf5646e29ace065eeac3567ad452914fa27914aa58f2248e9724308a1bf6700d01da825c3df9a37a95932065aaffd9ba6973e4dd57b697b45a771d6eccb9706a2ef5b5fbe54ef2d237ddb6d96e172ed19f2736584492f50ee6abdfbe6ea7af7eb6f9c85abbf9a8c7dabdc85f6ad4d19df187a4aeade11086be8ba1cedbaf52a0f9bada2877222b3cd77f22727e96dafbdf61e5b429776cd75cce929a7614ebf9c6e391ff82d944a6ae0efa7e3fdaed2e60ee31e43311a58d3c3e18eae0921b18535126c86ad4230b6a2d47aa889c59bbc93db094c3689cf0c283f747f82af5354ae8c715de73ae56706767777f76f77a7c271c1ddad75b3de4968dc9820d7a8624998992174cb4c1c0e405eee634e287fd54a9c7d73873450d2e4b6b7696f645c6f12f31384e63bf92e8660ca471f12160a55d12d18c29cee5e63496852907b93581264bfd7384d473cbf606a7c0887244a385172f80ae7c96db69aa08d671f7a1c6c056bd88a04b2d5876c841cfd5849556091da6fa10a770aac99366db5c4a84104b060838803e50b102487ca5411a5ebdab476a05bdf01f583527277adb93b6f42e52391fe9a73adb536670a422190d19d12e29771e87d8ec180bd972d3a8c817ac971033a7181b283b5656dd949221b0b43acd471a11fb2f7de53c287fc8a89fb3250dd672b38b2e21f5525705fdde1c2d0f61eeab667356eaec3dcf7f7551cee83e2ddf91ea76d6ba6bd73a0f16a8fb4be66fcbd56f232d8dddd73eeeeeeaebdc41e9c628feb74d8714c5a61d10a9bac30f8ac5861396230c30a25a8a047123340a7d0bd39e7dc1b18a8c3190a8de1aafb7b7252fea82995e8f7ce0f3e0ac8f582778d922dfca63f47b86d026b7382561874ce500d1284844c0a6a32fa45496de02663ee2373b67a3fb5091a69d7b55b9ad2057a6bad3538dddd8353b43183770ead680e8974ab95f381d7420d2ca48045a9d4858bd66673eede9a7302084e0a02d5a0e44e8cf6a09fb3e44d9010f66ce7989999bb99dfa68f78d65b191a7ca22650ee47c0972f5f8c38144ec594e2eeeeee896b0206f6cd1e0727b4417941115c13d7644a6953c69fdc162899179f1313bd8efdef73ce39cab08896508776bacf8a887bb9bee3ecdbcb0ba8c309213b810732702feea5d9c04d189b2ba74723ddf63da3b140a72133606cf5246a2b52a9e4b1550f92fc218b5ab3717c7eefc5186dd8e4fe19c1175a58555695ebd665c158b36fb6725b98d894d1fda3addc1f999cdb7b3674bcd00312e9ba2dc5666d0032dda72375a194de18833a9c01900216520885dcb13f3befe7e0bbd6a007c188e6ecad3531afe7a06a77f76eefba888be1445db4395917299973dd6088c14af764d4391712fbd79a1aa25dd09a615faf381f000c74bc709d08a8df9b00dd9cc64c4b942f53a294b174ac44b14249929d30a84c71c2023474b9a2a34594254ab4ece450a1c2c91123480c29ede0d2587045478b28bec49568d9c9a1c2a8604ebca001cb15295a34935eb2454b951c7ec25420399204123133a0a535b33e660674d935431a62c3089475ffb0c3efbacb59736b1e5111eef2fb655b4571271862aae02ca4fb35ba70851c75cec111f3603133a0947562987269f37a19530575ce39279f5d6917ab21b111034104f3605f857a0143d81341491febe93bfa42fdaba5e3d386c5a5a3334542e87d4f6f90667dad96258ce5d9a2a5496b0dd708ef5c0e63cdf87712d68c7f63a11e4635c3d072fd7ba769b4d0e03accf56f2e4db374a260a9dacaed245c77b784eb1fea9afee13a50aa5cf74ec2f2e1dcad388c6b64cdf8efe005854de2c6dde5068ba473fd895891a801f33d0f01ea3f0fffbd12ac663efb242cc963e9948da5622a6eb5ba50f1e4322b7820baec598b2c97fd11243a5c5ce12beaf73cce8f59456d9f883f3df5383f98275624e65316c9b4539dd31e6902b05f3f9c606c053fc90175a6648ba5d30316dc569b583af78631d60cbbb5817ea155a8d0a814ee3764356568660020000033140000180c08864362b17840241a15d93d14800c929a4070509ac9a42888510819628c01c600000000010001d246014ae60d5584d41b7228cf05518ec2613a90ac2ee0ef672d7f2a99e22e860463df4253722c5907549461010e06893f3601454dbbd785e09a1d0fa03069fa8415ca455d3735b959e0755b67b538a94e5ccd69bad73ae1205bf2099b4417d2485c4f3d10d106f75b5e1704320c9fa8f3c66393b4a98cd61f8221eae28471fa7b96e08731ca7e3eccd127934e2e7859a610dba86fa1ac9cc2ab82b8212c092ae991e08d9009b1f5027ae1c1c38119346109a046efe0545e1c8b6733c00b89f685f6528a5f5046cd90294534732dd0164f229108a2318289fe365dac0c366356c4669e30449e99c880f41114a6f9f737685a0cdb598493272aaa39af0de07e50a589bd8c3d5f8f5d5c345afa4e7396f070e6dba5b724b7e6ab7d854234d000c6ff6e27190a5c2fefe2d8170c8689df10c647f47d8660bf9a1d0615688b67271d0bdf17df07c98abea4ed192a83003f6785d78cb893299286a5244c6e0bc2bcab112cce1a778249ee0225ad436a05bc82fcfd7b07d0d2a3714a8b716f22e854a96a7e71770611bf12488d6ceacc3d72e551e24bb0db40d559067403b26704285b952bdb02c64878a74d457f5cc15d9673f97751c60c8a7d3723aa071c0e5e3d41fbb58b0a6e863d3324669359dd7caaa83a27c90c270e5b4d596f836709f69446d85ed71ab1060b491126daf000785aab1c99f12621318dbdb28b711aeb38389071d38ca3016644e714dc8ebb014023755ddedf00ba8797ec58970210527a00c0e46a3c2b14650716914d18e2cf3cb8fc9b948074d9b0ba8742f13584d3b428630c1208403689d0726b2bce8927eb04a15a4e289a0b05892bab996968cd5e30ca22538e8bbd3671cfce81209f8aa4779567a269f30b2b2bfc595b14414b47472c5a4d49bed99c21a4105072eda9839cb45ab60b8b23e8263fcce4ece498481b19192eaf4ca57227fdfbb9b2d4131de9d47dd37e9c402929e70b010cf3c467515d9a504df2655edc1efe146730705b9217de31e81325332e8d2077d57b0497f09b9bffdbc3005bf1a83ec2f6ff6693826620387e4f30525e112522a44b36355b5a4e015e84da06a10cf3eb587eb4971b6013859fe1164c8c7c55bceaeb27153b28d2c79852d8edee74c286b92e00468d7fd4f151be0aa3b39d8f668082a70cb2861a2a0e426e50aa0a97b4564e910628102430415e6822a01690d4b977a9782bcb8f1107a7b56a3911138dcc8fb674e98b6e0b6947783fc400291a85a97965fbdd31fae89b71438b3ccdbc29156d21e7f6138970fcac2e77b576f0083c20851fb9049cc837ad2f77260574ee8c2704475bdf292c188e0f98081dbd6735ee18931349d1500a80037bdfe9e78fd04bf7a395fafc9e85fa0bcec719f816f57729ded8bce19fc094dff0581abd46e20e7417e5fee01724f7476b1aa66d697d698e950db85b16aea3fe59c8fcbcf59242844ac5af387dfc53ee249c99d9913713db5141003d937d2b64891568c913441b2eec848610c7a947b0fe0223ed2818c2f1b48229fed51f743c3636ab6fe32ab4071f08627e408f7918172dab68960bcbb04ccae5a0f3f03b3796b9277e6c59a26860e2855f46756a94b0a6f716696857e8f4e786d23e3d4e689e87c6455652341b38e61b60c007a72fc864450c9ed3d6261c01377539ede5be2bb44a086e41d00d754ccbac03c87a9aaddabfceb63c1a7670d80529305b1d8981e7d8a45d3c9747f6b23c372dd1b238fdd79f26f1286bcb3c85317236e3ab9b6b08c164879b115977050d0742bebec80915c0f1ec475972574a59db7a2e9aa30522f61e2c1a9a603718cf6c0b433640b29cc3738d2abdc921a979a9500b066e0e71a5947005da87c6bb6500b9639ad82c823b667c8d9c3cee928d3b76c2542b5770b7c221fa958694bf29f21835f2b4b814fa6350c98f05762d35a69875308fc36263222716d6ee36e45e1b48ebc4ecbb1424a68a9aaf8b361ddadaa8de7132ef5de391fc717d3b4f0a8e11ade2c92bb869d09ef41e4af09463b4e0c78cfe5abd50bfb91aaaa0c5b39a0f01fcdf5b3767ddd7357404cdea590f3e1695915faff3982ee197cf3c2ecacb176cbe2ab05229630bc4c65fa0d21e1ee979080dec4989dd87140c4b5fe653347ccb6eba8e2e57cc084c2092bc20fc148522274ddd13e483c94bc9198c58958b6b65821f4cd230a4c34b6108ce7c2b1886d8400ee9d1a1c044b15ebe556da5fd49f655d24c97ac5a52feec644610c82b7b454c8cc2d5ccd0a177c9f884114bc9dcc82b5a88ca86290235c8edcbe01ca074f3a8bcfe8899dd8864f978bd87658777a976c516171ede15029f8a1f95399f1f2c2bd2dd21ac7a35a51381d13fea415cf96fd51ab2c48123f5f25b78242c182c993f450f009d75a3cb7deb5392c8af31a4831eaf375dc8390536d6876e7d9d52f91c5047d62108e5bda936e1fd4229a458601a688c3644e101724cf838fbc4d08c26a2c768bf8892f1610f4186a7b90224334d14197eeca77d45ecaf21573b6b8150d56bf9b9256b1cb7d8b3bc960af46f8f99d990e048a7003f29aa18f5e06097f0bcc4c6e35e4ba931f513b6c498cd5464640d96ddbe65e4ba857ecb21c1d59311675fc9794d59b5187a34ea16b23179cfe7cf1d8e4154a7b566c489c2bf55ccce25bc6f96dca1481465ee5811316c8b0d4592890f35395c36527b1d5295736d266e792f995b3ecded8b8d1b8852e8736463f9ac012611eadd238f7be6b8bed16b86677ec98a376191a2d8a56fff101d7e196b1592cc3e4959f4c9a9cf14eb87d8fe882e7de8cb94ab2f6365ee7c47dc7fbe57f130b73a0d77c4de23813071839d7ea823c4f9201080860a3909d5ed2764b78af640472ba0fb331b4582f02723a606201ad74ce7d358e1bf9c5abd3cbab8a18083ebd67af5f52f942d6eddd3db1619329a0117c88f0e5a0fbdcff62dc46f6b9f3f77a3c0fc5266e3625d3e5c9246c63d5b398e588e4e969239d538ab53af66ca1fde00558589447c0cf43b28d2835aa93b4072ca47545eefc5812e3979ce90740d2669b1d491e1a52f81cace36936e14037b767b365e4f33cbe5a019221c68251204b46dc19608ad6e14cd0816d2700d224a5427ab83cc372a04d5d6f877180046f09c0061a3d0d81ead6ea66da1a7b0c67d3d013f3c10155a0f38e4e9420fd76a8dbd05dd3368cb0921bc42a6432bce1b590918659099f5d8d4c419c39210497c98c96ab3d20039a9247f55d64d351deb3e40122ebee39e690bbf3cc1cdc8d726e5eeb00f43921b97e5a881f6271aa01415838ee734275ba80bb92fb19fe025ddf5af7aa1bb10e3afcfdd4dc1d02936535b8084b159f06332fed82d246266ec6d9f5d0e22e25849df21096854f80763bc35a9e2bb1778b0520b4f7a32ab0ccc9c10632299e82006566f0a3d7a0c3ad7eb25e005431a0eab4ac972bda95181f7af4e5dcc20f660f661669fa398bd11c90bf79b1a6587fc9b0e1734c5eec8ac8b08e583b5119f381944b303f25752822d64df11806b0bb50c084b69507d7bd743607a68c742786fa1bb95b8d85948e5e2df4d96334594a2088051d02ec66e0877a9c8ae8b4324f51e98bbaa1541a526709e977b0a8a1dd1c2d8c458911353c7b9446a95dc4ad8934c5d46f721415a9cde0b1f077a7bc64e7a5e46892afea82b1d44e20bb3a510b5e8af8be1bff9f2175f2dd4fe5fe4ca5da90218b4884082dc2266ed09b1b1f220e6e5e78c3d11b93861ae313c94ec407c4a353a25b4f5d496d788e13dfe02f28e859728969e1f0ceb0ca77711338ee445db16a9d04463f76ab1878b7f39b11e647c80dc4e0455683ec73a69083b723f50cd0e1e8bfc47dc5a0aca0fadc7c83f50e66aea536690a18f0e74e5a3e6470507d6a4b3e0792240ded0c5608bff83578f2c474c0df12e2d4edb775a5545d6106841879619b6e6a2e3e03b692e91f3c1065fccdb474f33634e8a1dcfd0005d371ff9f8b4414b0e572a4d49729d097f7262e361d618b3f3e7aadef6a986265684a44c615b05a6e964500fa377735bb2b0c5f822634e38802cb11815e65d10331e1a4f5f016656200c66971d3b89d663f2db1efdabdd990ff4d1a42cc80c2f250734a35e6917c86686537fa9f1040a951ecf7d466c8c1f72da16a0f056bf6ec93bc76c7c634087f329277381a3a9d6345934fc62ae765ac4930e232c4c3e6b1f2b8c6295411df527f30aa36b2902450b471d9ad8f1b5482e17205f1afd63ee5e53d55431a6c449cfb1eadeece688855368fd22762b80c299a5466993ac0d165179abbe9260bace98e1ecfce6f1bcf4b5286ed6eedb5e6c79e5f45097e5d7488d3480563492eba0aff7ad2ea5d9a2e833af1c93566661e0ab0a90a2a7b4325557dd186b98e2f771c0e6f78d10135fa3544a0c39ade0265a8e9dd32603f200325faae1912d007a2c8435cea7df439cf81e006caa58d1da502f9bd4839c9764224c0aed1b3406563387fc6ed28938ec58284b9cc67ac22066e0ad718bea559c4d9ab98a12569727239c9316afecb455c443865b2ea7565e43525b5441737d4dc7df3cae43fe048f202be7d8f0ce1bde293625308f7c37170cf0519df632585b879c96e38e882f4c8104a4c9c4d4e87b9c46954aad69b230afa726e6d6ac8e9102b3ffdbe8fbff1be2f8b0ea348825ac6d8247c00a4070513104530b2b4204393cb96f8151f4707c432a45320068b8dea4602882976b358440a54bf6571039e609f46d5b291ee242efdfb5f21e0eb8e84ef83b7236f9089dddde5c47d379f1b53ea4cd92b7fc41620678ec83b958843e9bc789333bb4f638b4ef5504f1aaf07fb60bfedb3256fb5dd9a31088d80ff7a78988e23955b93f4b2ed7a9bc9c202476c77cc7b297103495c105d994f93e43a6fd777fbce619de94f0171b22d99608088aed0f476580420890252ad12ace405c84f8446df4ca2764f053fdf63c24d75253b2daae032480815f69389bdd2086f21e579537f5ecad11cba7b540bf15dbeb58942add878408a3a10a07d5d57c985935630dad8d66839dcf531a30cbfa038c134bcf01be4101947abad8d1022074c7e66ac78d05723ad08343e27060f4eab9c1b8df13b424096bd82215fc7f4c510413709d646ff35165e83527904d5821da0ce3411bc8156d723c3e6a30607d956c002b83d4b9a334564413c783b84eb183244447ab0c9d4b3d36d66234c90bdabfee452dc0f4897a2e6c0bdf09182b500b76610b575dae27bea36d7ad63e26b06c4b9347a15c6780a27b2acb79b84e5389d92bbb4a0ae265df64ab33a92f7b1e9ba013ec8c6106c114e19168753816b5831104e5bb3b270d60808d8eb68862794a7e0a34dc34c09391c126a3e4cddbe6eba2b06f6ce73dd95f19a3ad824c06abaa9211567b4039dc2bce3a666028b8b61fef1f2ba053aefd2bec0269604c3f93cf2e0cd99195e4e4b6b3f3114325d381f19becdad6f4fd83d8035e6e13552f2f071987a13d36af40c41f795ab89c95e45cff34eb7047675a2400f167aefc9be41c9829034f0530e61427767330e0b34497a1df5ba1f12d8331222ba1f407e39ea003c89e655065f5072753409b10482ecdee6b231e1a2a8a9332c9ef974a8edb35a979afdbabf246fb8edafdf8201eb5c412dae4da2d423c335fb3c68461c20d7a1bec6d4f9be91132733daa5cfb083faf9e989593e7561324c37ec51394088d0c7ead51d5fe723f8330a70b1621f2ae23c48284d44fa12870f6fbb6ce9d49b293b98f22c12bedccf4631e6c710c5695cdc5c43a24ca8f75b4275d48fea3bd06653ad7cf142ae4019c86c2cfaeff1dd71dfdb1d5ff56bdcb568f8538b61ddbfb957cfb4b241b60de8e416090643c93c5b7ea5f6f022870e7b3d224604888bd2542665fcef9da82f2c3ab974000c1b2331864616f63b588335875a3e0116583adf134eedf9be3df38ed9ced9b8f3a9438b8bba099cc9fcb5463247eef9f407ee150a762dd1414809bb3c7dbb730a42a87e98c4eddefabb76e2c4749efad14c576738af22b6286e9668842236c515708f58d3054865a711945c5ca5a73e1f62735f465b69b2e86071db079cfbeae1e3e6eacb56863a3d078eca862591981e482b4aa11565ef5b3176a37e1880a11a0e1e8cd74bc11f64492d6994bb76706cce53e18225b92521034c962456643a7355e62f4690bcd7f951362bc97c454192d1f8ea832ea52d4253d6470ab618dc5b3f4b9479f2a375cfedda37eb8fa12023d797cc94e1292641a485086692c88f4ddce9a44667a77a36703a2be93d086f9d7ae8cd78466e2c828debb843dff5df23bb894a2d9788c416fe9d8c9478461d16d1382e2e32895541fb5b515e0739dcf0f9c9dfef7d174c1ffe403220c7a1d24bce66940963bba932ea839aa8b519ebcdfbd61132f910c0678dcde61425c6ebbe08c9d3eb2f005d5eca1cb901707e96dd5d14d11cfca2d4fcf793bf010b6b38d6568042454aedb3a65c267291d724aa025413ccb5c87efd9f1002a9f5598a631bd757b05a5226be7cf8544646cb80dc83879d6f20103a7d43fa4ad25315c958a0191094d7c220ae7d297c237b760358cf25c2e7e18a9c3c9be6e1cec976a60cff1c5e49b4984a0970e93ba443e80a4932ebc25d734478cdcb1f2364491f9ff1ba8e21105ddc7b7f1295e80900fcbdee701b2e60abe85ee38ac3e8247fb1dff8cd361061e6b157716882d17b7ab0f7be66a5bd50dff954d86e1fdabb2ede1853f21d14f4b7d8315390fe95a8025f22fdc409218edf5b1ee6c19eb75f7bce05619d07f3f22804e0b2e02c4390919fe7b8bb45ac4a3600d4dcae7373acb780eb66328ca15db603dc5d26b0796fe3222d63ec560557524bf3ebea3c6b05ed8c15bdd230dc887be3d46ab2e2f26b0ca07e45b2a0619ec0303afa387926585e0cb9089c8c819f6cc3e6a160f3a62ac48cf3492d5de2a37caa8734c05fd4491bcc5cd949016e8d1c2c9e01a4dbc66405634fbdf90992f20d6a1dadd190e3029fe17535bcdb4c45e6344f2df4b01b5e78c8c1ec45a159154f3efcfb69d22bac8250345d5bbd8c5710daff8115c9e48d8b44a9b58e8304687e4a166944f1e7c38ecc0bc7c50e4c65982910315152234e5370373c2669761ea3661f554a31ffe3c51499bb8b4639506b1d6899841d3beed9c7b67190aab5aea4a9efc12e33e633810240a24ab0efe2e244e88a3d4f623dc4b3078d968083987df8336e4ef8ee105496e9ef76890672d7854dc4c510a1da2a8569469b691d87e6501fed34724bdea6a443f9fcf12320542c6f55a1bf83ed593de6e4dec8eb9b17be2cc4e50de29bcd8419167f601b7ea279ad337c201946a2cd1f172174c0906b8346e7a53cf9a61f649ab9ec151d00b37a8476af2c48292b0cddca49f7e8bb41366c2f1ed547e7515206207e335dda982d3e677ea43fe328dfd9dfa7fc2cca10a486d92f64eb16886b8669bed83116f088d7321be838bc948060befa5aac06dee6310c34718ce21c1f3927dfe48065d048a43884bf360e197c55758a311b06eaaa47e22286cb6a0f180f394a5d464899ab23b1ea2f18bb5df816006b60406af88d4bf9e10e35e41792edc16dd00023e0ac4c443f0dda4e8684d1252760b0a7b1b7719e3765e519e229325c01503a4571ce06514ebf4ca579380d026cd6d643eb8094344b7838796c909e87c258a2ab875c40e3989e0c99ae5320b304bbca9760367c0bb0794e000c0f33b2cf6ad63cdc8eb7c380cb5b2465f41df12eab9b2f2953c4f2f2b87350be27f8eda6655416df7823fcade4bf788fc33673ef12300ee73cad47cffb39780ecef04c2e38e0ab49c398a67f0d04c7f2c96be0ecfd80ad2f53c463327504da58400e82720cf794cb8f17f46807d42a5aa2e47d00914b9cbc443cd63b95af0c1faac245801e999d8952d80b9f26f5e25b100e064907b9dc114575dbfa16b3a8c00957b01dde09aee8774b04c106a09e60bc125b13772c3fc224fe87978b6d4368d70037fc952d63f3e8fc36d7317e945ffc0220725e6c436acd58a3d65d64249b9e26e6a85b04f5e7e8020efe165a06842d42f6fdd51b9a17b1706633c919d832fe445dcdbd19f7d670a79fb38260faa88023e53177c1c59d233517e4644db04228bf10695b1c8286541d835e3b14bfa0cf7f1f38c68fcb5c054de0c1e405513d809cbb5e32b0d3ba15eb21fc1cf8f4aeeb2c002e1ec4291c4b32d27c7282416808197e12e01d3004c6bcdbbd9093ef2a0382b44d64184e90e7e650ac2f2dcae7b465c480dfc44c31a8cb108ead310c2388a9a373b6b99be99eddb15d81ccb0d4e647ebe29460f025035142d7ec8e0c408758be9a424565bd7e7799bebfbacb078205d12f92cab8e61a885ba4466ad15ea4d2ec845de37b7f710cb43881bf205c6fa0a140cf67543263aeb5192dee3ba2da8cff7ba36e7322598468e9410caa1ba0ad65725b931b93a72fd7813e10fcfbc9bf16698ac318f375af5ce50b976726e1656a060a4d48fe319b920c30dabc40585696564a60be6216f3910010d8888cdc13e7462e338055a6b225362f4de9b85c79d354f18906daf72917b7f193463447c04e002f0dcbd40aa0c85dcd98d902f30fe1fc3f0903084a00422c606095aa8ea457b2df8fc50ccefa07c8bf52258e74fd4c74ced734de05a9cdf46c7f7953bccd7e1be06f3abb0bf00f7abd05f03ff3aa82f84fd3a8caf42fc3accd7d5f0ab516bdb27ddf8967c61c26fb5c6e99282f7f1c86faed9dc4f9141a86356c6038d145bf3b0be2235e277b268e68aae8dd6c25cb4e6447156b46e8156678a9a4d18232a3ab66d9ed65ab5d45485fad8db419dcfab4278a310ca14c5dd28826d0a23b0120812bcc8b4ef758c4d986629e299430e45bd0c827b8994f4f0571fbb87161ef445efc07173fbd3efa6813f81df2b425c7e82d5c28e1fa484c06ed721d93bcbec0926bd5d1487988bbb146021ec63235d4cb3a8c28c41a13860e0b5de3cc2f245c8d1258c5f88ba67e42f1ea5b19b6cb7d01ddd43bc45a55ea442d938b80399a5040e382e9f4f21f4a112b020fe3f8d456a39734b6742a39a2aac4c51cc8a22dc81140b48c4b20b9220ad2d00f6b4b8ae71e933a95361ce69210da4b844d8c279e3e032e236e14d0f07ea56d1bd5c114dd2ce8b38f60a1ac22ef2f5c17d7bcf5de9a774ddded70fcd659d838ea9506597e0d55f96f426e160d41f1cda956664571ad5e5354ebebc37f0058413c445aea08a92a86abd9d5b7a5fff1a3ae37a5e4cf0901f1df9e71c9ea22b2a6e3f4f1193ba401711ae0a1089ef88f6ce689aaa525e6a857625009939f5a006321f0e825e0e9de5710f9941138c5b8ac5a5374fef1e89e9c7e76f4e3ead59f7f63f523c8be1c9a5c55e218b622fa09548ba6df5c2fdb5cb2ba088c4815082d09f3d8acece87bd6b8830502c831cab8bf0f3e1c0885fc578a12eb00f09cb7f01e287dd9d91c0a69c1b7e281f511825e4ed6bd266041b42d9f9f7ef5638fb8e51146caab3f9832ad9a1626777b9e93854f68022cd8014f1abd437bdf380d571c3efbf7c508ddc221265572ace91cffc3b2f52fa36c2a5cdd76b593453f591618df24349d54cc55071ee98a5b73513ddacc3d68d48968718222d7c03b0c3b50e6dcb293e7039dced29bae8dc50c64c54ea1ecfde93490f486c6d6e52374880883c39d8c28c88b2e79f6222ea680348266fa3e19b8147009bb9c4bd8bbf137015c2d806acc87b8957202bdf0da26f1a0d038da1f452d580c5f58b1ce86a4555ffaa24a02a876277e03eb098d103f8f2b308ada887fb7d7e886dd85841df54d2364975fd4d9c464629e119cf805cdbb788e11c7b4374a75472b71e9faaf50470274eb2008ce441ac2b27a000b752f6c5298d15e2b62c2f4d3bc285e7a8bc280fce35b3b2409851f0fabe1264fd7f0fa99f61555d1cd4863dd61b3487ef5847aefabef1075d5fe15817c8f3f8b52ade24ffe6e406aeec050d9213476405e15e1e5eedcc0e54205662463ac4c470efd5ff9f440a71f8cbdbdcd4d0ec2eba5517ed30c0e39d9bc5a8e3fd017f7bcd9608868f35d05a4d116f7a737de73881f873a2ffbfd3312295c15d2a5923dbadc2857ddb623c40a9f4053284e6a5697cb6ef2806f5473938e95f1377a763fed7dc1d5d6b21f09f96cf0ac1eaa042b2e8d2abbfbfbcb41a7633c4ede71f8a7e27e3ffa3835d03d5a8a2150bf791ff72787064749eefc0e8f957804834cf7a9f48c60b149828ed93581f9bed6386f83a6325bd289b55fa2c5c2a1222430cf3b2361a6c910fac16355f2207d814a17bdf41fc5908d5ef5454ef5188eca145e5c9a3af3af3f7b1e50d1dc319ffae6766bd0934707524f412a4eff99363b307ce291442cef17f5b7f800d6d6ec4016a97c867ea9a98e0de000bde3c51d27387c2614416d37c14d0b217d7a9c559f7e1bbbe73b0929f48f85a4596f154980aaf2637a4a8bd9798ba19de1f4d705f11722c3d910347ea48ef8710f05f261cc804597debb113a57af2439ddb34f2677dd2b3ad78fe48e1818dc320998919631be2afcf9379aa3f658d437a7d89f474938c45d4cdf1c0a5a50b7ff7392eb03b485587f721ad2c03bd442a7348beceb98d8e6b2ae7185110edeea35c2c8a7f1d41c6bceffd467b2702a6332d07efb8b386dc1675605a66594e8bad701093c90dc3f9c5bd1bfefc8edaa194a17a894998ad4e14b53c510db4f608903474f9546607e0baf1c97c6883c047992fd93d6f47713626f532b9549b1e8519936b4a922296a9f9157e3752b7f1b45deb3bbf4468505e32adb40d2de73fa269e7e7f7fa1c8951fba7dc827aac9eee3c2d174be7211f4d2e17604d6d952b1c77de0918b1f0646ceaf5e4772bda2a58c0b6ea9f01ade0950d5abafcae9fcb27a46bbde055586375a444c47a81c3f2a0169436354e4818b4c56b093574fc2a3cdc51c5f648ad56629b3baee8b9292d34855ee6c3e3c0f2fdf7c5e81d88d810f07c3e89bf270e70de401f4453e75bedebb45774fd028e595aa74c9edda8c907ee94c5c0bfb26fe80957c847076f32c1231f2f8ae91264800f842a92e9dd84ff531552622e338b9df0a846437152146bf0a2404cde0b03af4951f38521ab701507c59dc90f2c167972cb8f23aa55ab7ed88bc049bba3aaa0909ec7af5d34451368a4119c7f34841c665117db525a64b4f59ac001e0260a6223003ebb2115aac42fc275b4283849748a8075c81a83fb07ff65bc766ecbd0c61454320db4427a26c4336f3455df9123b1c9906130935c241b1bd423c44f3be26c6c6c531943c9b4879f4e761a186e3f3778a5b3e9b3ed865bda43df17102c4c5c4142c4336eb4db6d623c70c693f81dd871bd22043d128785d7a49f47a750353797a1445eea72b4886797e5660d0bc4c69df638f2233589ba42e5e12cdc3a9766d0e95d5991a6015fd7d77233d9a4ac470f88e228b74d3f6e488ca88c0680029d11031e8d69f3c5f22f6c0ada2f0f6ea16f3fe8c826a6edc66ab566d2aa7f0f7fa73c1d198bd23da9b7f4ffc3b1653939373f74050d413da6c1c9d53372b67709a741e78a668eab1647a182b1ee1e251be7a1fa4482bd86d4c0d0ebf31296737250b27e435aca1da0a8b1a8a2196df4a3298a485be7e0cc6b33ba33a54b3cfb5a1128b0746556b777ddd2c58aeb59874a9537aabf1eb28ad340fb8489fcf129f224cde708ca7bea1a180a9a8e9bbdbb084e3860c93e708109db07becc4072d2cd3ac10f99fc0417f9cd61fc71ef9fcf3bfb881ec0be9258fbd751a9947e5b7d9dc323203b940d7cc9238d169c944de025629ae1628184840b1a2233198b3591f06342df9ffd58df2e1362a022a0e491b5f983a0e2f379d8e95430253a372fb55dba7b3e9dc4927e8eb4bd3750cafbc35122cb1cedef84b13644166d222238477c13abf32dd52e0e3fe09a9407b524485834a29fd0d8599f8f476d14f060b30f2c96631a2949f5bd120e633f327103676ef952704ab5b6e07b4a933cda132d4084f47f3bd378550b253da765ff6e36eb0e44a60740857abc0499a3e05d1b46eb229713f9077da338c8ce74ba172865a8a28529315133b5bc0a7e52c677ee47b3a1be6b8223b9a47fd93bd41a6a0e2c0039d1c585bdbf9008468d84f3306797ff7579d949ab931a6cce7481ad9007f38a9f56d0974abc17abd4e1c207e2c46711b2cd7d9004caeb2c637aac03e5887c3eb43b22d73283cfd249d3c7cc4a0b76a2df527d0cd2c800e9ce109046d481b1b8006abf886c45f4d7549bf6511fd70699849dc9f1e81d319d122b56ab27fa17fdad7bd1d79289f1c2a72ae85d45195e59bbec78fa574823993c0b21bd884b20a67f9b0f0853ee77220c5f27ae2af25e8b4c5c3c124c2e88ed8f7c69a5c8d4219408564a9d6c20a5269387991dda1e13d4512bfb03142ed2a9820b534ed5dcca4aed5476d9cb11b21d03b6db4623475f4c8c4e65a877c6ac1f502251879e17e5449bf0235587117b4f43163ee0c7bd6011a7ebc4f5ba2f079ff5d74b61c9a5fc897aa307d03e29035737133833dfdcaadb4130515cc105f586b838829ece35723700f4ad4658801a6910b79dadb5df0be2b91a80f3c59b6a3918f29943a2c66f64d7a915d56b10bf1af0e291f4e968a6e26fb610e21e829436c265ef0d1e9c8e488b09c2f302eb886bb7a9923c94c3ddcca102c8a84975df5b9b5b0efa4968c14e7074fb28e17873b704d7bcfc88352a44983e70ef6c1b2ba24805329ff782bd77e02bb2ac5d0d080984b67e579d120997096b9174fc9cd8f550d4c8836f6a3eec970e7a53f2871aaed8b9b99b17f3ee0b6fafdf1fe6f445dbe56942e4c68e8955df8235b8013ead837b27a472e1f600e1977cc25cc9bf2b0c94a2b50a610d4350cf5cbd1dd44e919a30265543721b390bfa689e04b6644a1970220cba06cd44c4e4e76f72f90bf678373d2cfabf8ba3319f00b0c9060a13078b41ea8493d3b03450e4578821493e2d79dc9f45e7bdb03fd80e45de7db0c9c804cdf533b498fbafe20c9f01e6c5583042f6cc47b0192237bafc53cafbf2362facada353291eb7e5e268ecc57796be6679734ab1352b13278571efb179cf5ecd14856aae8045395de37a2ea632047667560aed1fccde557a78044a2f4cde4b2add36823b29a03a480bafc0e7fec92e2fa872014f778816984f289239569704ba092b8871d9f59812199299c194723b349d2c54c1cb8d39e5614525db16504e4cb1003dacdccd1ee06621050ce6ba4b01d301a8407035937d30dac5d9d31adfb3b5d9c5fcb069f3a44bbcf7c4cd3f296f7acc682e1a8bf794cfe8d65f5322db344eaf5f9daa0b70e2a5066e961ec0f0507c083c0f20db843e740f2de700ac8cf1275e4c9604fea456eaf72a8d2f788f9450870a97b1c641e56eea011e5e868ff8556e3c7a5296f26866570bcfaca7d792765a91d6656bd7da83e7d66c91504ea67a69503ecc34fcb5c309cba839e7ef93c95ef6cb01d8bb0c5570dd43475bc2aeb6d599bbec2723e0c81c25435586a258a5cd155405913b72320b1acdd321b05c10897520f529b77994cc98edb3c05c28322db868cdd6cee063f25e740b7c0c213a1a143fe2d1eb32d8aa13017ce6ee8ca83a8407162f77a5d2504cfe6626a33109e2155af5dcf571e5fb939547aef7bad77fc8584127e2075e1dd1cbbe4bd236665de4fb75d2b16c7c7752be8fb61e11f02831b3bb9e28d0c34367c73ed06f2d73a19c022a269d2bb57bb7e55c9b60730ae537b548b6fa58c54fac471be47340e003f6bebd923e6a876d49615af6db25dce041bfef60854610abed2da48408b7cc311f07c0ce8d262bba8e01a00925f1ffcae166a0cb4026370c8606af953b83910ed8b4f0afe7e2066d050afafe459d04d7308da7fe2c73420b2a4c3c8e0b5798679018d6c8281278e2653d47d7e5c5353282c675e3b59c8f18afc890e20ec4373f86e4b0cf90f187d5cc3a245312c565e607e392dadaa4d7f10e3cb1cc051e18b0b104b0ec95bd9bb94f552257bcd111179a83a730d21acd45ed145a3836f10d568346b080de9fcfc092afaa3838969b4abeac02480a92e382a7e964b11d17dcae8591478b0528b8d2f9f927b98c2c98c1c397ec1f0f4e9354d2a0fe0d00429f036a4d844730708f5a560abc5669f7050413784b92610d145bf50df1b9bd29e9d957a216883dc242912f473989ba93820dc4f09475e7a5f0788ed9a20ad1926b46f94c35b01ee3186744f3223478f472d00e9d4467eec6cda6558a5146eb8b45985bad7311211dfc11617922b9cb55298614e869bfb3f476c1b2fe85f375d9f2198d8eeac921884aed9174e538db800762b010980cffd4e31d7966bf474454dc1b236a9de22b4f127e4a630749dc49c9ac49b01c4d46793fe12392f86261eba18892620d30b0525b0c4f2fca0f085c19430604dbe0ff9b4f51ce49af8cbc571cc4f0fe2780543b8aa978c18ac9c3a1bad8d81120d603a5e230d6b01229606abac880d4dc9729826f2bef8fb81a5090ebe8d307a2763312b649c351dcac362388cc4101934b4eac544d696cabf4c26569ef2c87ad1483d1e8713d0209f2812b61d8cd748872c5aed4dfa0efeca4a092423c8845cbe3d389b8fdcc95cfaf0c00b3b5fd5b0d7cdbc60fa50b70fb38c9b586f650ed66ba8c8d7382e1b6dde3ebc0fb6560fb466f0df52fc50a2270ac8fcb074278fde08ad99d899e6d13cd7c57d3b41dcbf3c28d0d85730e9428b9a016ab0f67c50a6eae2caa23409dc2887c97a359f47935224a0949ec3ffe013eaad19c65973b9a34a93267b2ba2e9015c7bc6bf729e8d333bc5c6cb60a82e136c8cca865552d04a4312370f247ecfceb53dbed06014f77c04cce92213a9621980a15912f940422879f1bc1c2540d097fdd585b7b76f41b63967fc9384ca255381e3cca8962c6d97e847425a61891b6694924a21d75f6d1249f799004a4e718346014b837598a80336f17e5751cf9f68e23d0f20c10b5d25db8221fbc0b2404f44da010565baa5af81a74283483bdc24936e14fc85fed68e62d3c2115c4d19eb928c62803ae1015daa28450a28a3148418658a8cc50d00cd1436bd0c6d87adfecd18d4cd132a3965de639e23f12905d256bfc4cd5086cb21da6643d1fd4cfe4b70b218cd414264e2f11b7d0f1dae0b49d3cbbcea18ae1e6bae15bf76ee524dde7522c4ea75011b48eb0fe972d6900bca36d5b21f9c8a74387e64e224a82f6018f307495faa4c787dfb0d63b663f6105fb0d355d97038a7e88cde34a9bfbfa45fc623c83fe923af135ce450ccb12257a1f8ddd2b77c105907544bfb803bfd012c61322960122c6dc9420290fc6779ae4535f47d96dc3ac44fbd38bfb6dd305d611f5bcd9cbe9ad521d33d3abb028a8d37dd1efae7b67ba0ab20abc7bf5fc0ab1b6ac037906470ba027753acde6ed93703a63b5bf3be8cd527a7be57f7acc88bb86b6953ea2892d9a05376647a52783cd019feaa2e498c3d93b4006adf91ca531cd8e0656cd1763d2469a431a83856d3d272a43062b16cd585301cd3774fff90f9be6ad90eb6357876a0765eb67997828314689f39c5439511ab12e823216d2d2213fb3a5467431987187078d0d7fe1fc7ab1d565e3558d77d69c35fabefb9f1c62c0ae77447702597685d0280eed7cf6e0bf5b5e8ae714e0879eb022fbb8ba10508e663830cee357f5330cdfca5b8f4a3ea40678238d248393581c624280179633d052510c02d53d6928c76b70d2977f4d37e830e020aeb451a74a3154055bce681d2fb632b656e6c314bdbb81dc1099ad9050a127af2ac3391a8a76c00b44b1508dc94a6d60da003b1c1e64a86ade97cf2945a356cf995a5233729483384d2854b716d6989036d93deca39a17aabbeb4e14d96044c1474ecaa7e1c2adec8a91224a5ff754dd6028ba7dc712acea0c6e606930f52773110932f2891018b5379ec84c4ce77c162669bd2eda805065e72832fadd73e2b7f8c069e39e8938746b34087bf69d85e203d58e1ee709d319460a0f5681c9b5585c509bd9a4c87f1231a93f49fe0174068848eaca6510c445c162ce40ab9f00e16a352069d56896991d4026f1d8a0e3d22e2d9c405b186dcaeee1541e9939a11ed0fdfe9e364e456c0e87bb8374c4b61a1bac020693e8e4a84eed3c3f74691d0942dbcfa3dc95729d3ab2c41f3dde52ed39209c1f6ceb7811a846842e2e408777bf5f63c3095828f4cc098034336a8a167535e1dfcd6149399300a95f3554eb0390152c40ad4d890dd643dba5a3f247b694e2bcf2f60ae741af24b4623e4194adc36efb59b0ce9f8e93ec875782b466aacd111a7e630a6c5becd6adb1228589693f3b9700118ee1b4c5327815ab732f3bff3655fd687635caae5d80704981b8abdb69feb19a339ab063fcb56a637cd420a9c9e290bad5fd3b519ff36b970d68383c834c611d36f2a580cea0076dcb4ab248664fe3fe644c84cd56a3e183defa44d0d2c36d304e210f94c002532023c96bf5bc09c012b3099c4fa558a659c700f7d44f55a84a0abb3b872ec47ff8615ac7d72707db1e72d1448c4641b6143fbefb4508bee420ef73dc85b63f299d8669db18b603b26e7a723a011429027749700f1e3c062a9e3a16a84477e00d48023f5069ef8498bf59ded21e9da72af32cdeab3ed8f975fb26f39c85d68b90167d5be4939e86cf95c45d6391a22c2213554126b95c00317ec97e85f003ff614cc74f544ba80607dd9982acebbc0c837ede6043e1316ad6722f6b995b38e436f93fe8bb96d02194fce1785619490ed1fd8a4ee705173fbfdf8fa3273e2a8cbc88f393f922bf9dbaf286c705e39449c8cc3a4ff2e98aea982db6f20c198f91b6c73129c66d52b11ccda256ee44fff8a4a23b1c4d121f7359e142ef45052642805f02f46464f9ff4a57bd8e9e25dd2b4bf526044be82e564e0fd211bbe942494c0b523d480a90230493c954647be08133cc436e8243004b1195da4cf895cf74764fae8c5772cdc5311eb56d67e76350636332d204e03602c3fa2b8b881472e0b618a5bdaaf9396e1bb8dec529d6d3c70e0861d9e8dddc3db21868f122e327cffc62621a51f96fb4634ee44c4bfb93927131858d3f5d606c3f4c5959e15dfcc13625e1b28d3a959039341f68807fc091fd4095eb61af641fbf9c539dc01e5900d5bfe0684c16349f506aefeab8cdd94ed405088d569671e1eab42b6d7b803549f5000344fb934049561b63f1c993dd0a9143f49b00f62605d0cae262eeb099f4e6164062e3cf6a6b85dd3d2d9f484adb02a279f61471961045960bd641ae40c77e80f40c9b8d5ea1c9b97d37a2534ade411dcca9d3b3389f10e61f43c3e10aec356c0f76c6a5ddd41d809e32babd230d1b1cda8751a84d2cbf9f9a4637b12055306168df20cfa98a37e0a971517d16ac5c7f4517ee14712920ada8192181cd3e390e9bb72bb26fd91cfeed194098c500cebdf086ca79069a9c162e44d29e9fa213cfec204b8945371e7a5d2addce80bbe50019d80db7e726562a45d57471e210f2cf812626a0a647d01e16a00499036afcca87e480bd7360de88b5a03cd7de8ba43b80cc124ac587a88b35da78794cdafd5282a561035145a36338033d59212e44d42ae03303401c9d5b1fa5db0b387458a7614d2097926e85808e9b59afeddc5918a4a55b66d4c8422316b14af0d9729a78b9753c5ef65cec1519830653ecf13660d0db4fe74a260d302680ae364bd44c3b35ec7caaf4295edea0e520cf2907b7f36f584e61f166188ef615f093790f3161641ade020c865b273f727433f57efc4e578c6c24cb91f2434206b2be220ff0d7f9e13943925a25e7867582959afa9437068b5726edf26f08bb6fb483fffcf0b101d5be8288b718d15a910fb29a4a050579a4531d6114366c1b794b02e3e0a3e34c47f0f26972702b984d0300161558d20f426a12dc5ace4ba440a72b0028a91d37dacc2e9e4a98d07bead87136bb980ded12e5203267a9205ac5345c0416d3777ca5c53f01400ed2bd3d9ef03b80b6aebad83910a171c05a9704e8713fc2819e968c262e120ab7edd2de13d2df7e571e8cbdd69b4e5cd642f69de601f4994be3d47e8cfa0cde77ae149b78fe86470a73bbb3c906fc9c5b510e60b42522f4aa55bdea1555b989f11ecb70456f3153fa20b15cf7515c1253345f7fcbd9b6e9479c7f82a0ef24c6ec7c934dcc2c29052be6178617226e7832b356cec43d49583e60c801de63a3f0233c434e8549a43a4cafd8362b89a36920df2792e3751686890e11449bb8723d7579cec0fbe5131e7d389e3cb5bfcc2c2c8e32abd68ab38da776d4fccbd04df0c01feb5e07b6f05067378ef28f79370f2a73b95e2c9aa3d671696e9acd867f61f95160332f379c1debb4b56999cb57f246be563c4e90d356b6d7c351084fa64776d70f1e4487689d2c77354be17f15b59a06e1686a475534c1a557d430c10367f5d5e9ad3ae4084a841308998bf43696d5dfdeaffd591d8c3f98f9abaeb350c209912bd5aa69932b238860d342588169c074f7ab78fd8f4242681dc36d2e4ce7e6367c6a49b90b3a472bd86dd4ea3f3721992ee07220aa65d05ce9f85c58a08a93632f4054660dd8c534378621c980f9a6cbc64aaffb9c712ae0e58475a8f9ac4946596fca82698d277f76fa464c7ddc653fa88d927a087ddfcbba4d8ccd230ce43f156c324d5e360d99888ec385794285e911eec95f489da424301505fe300ba486296614167b0f771708a99e195e97cab963da60824d66f27ab3feac768518cc70030b6b6ca7d4f303249512f539cce7b832b4106e96090ff698520b61b2b9bf020e53843ae5ed2ee6e420445ef0afdffb9fb5fbcab980e51429e316d104f65c962b38751ff659549216898f464ca6bf87d52ade6d0f46a2c80a035ac9d3a8c8283c9adba822523c75c9024c62d7d1b4c17d2117be33d0e7226dd7ffaf67c3b32fb9d7ddac437a2e38644deac91456b9b37f5d6da91940682d1546c3fb0f2a6039cf41ebbbc6f9afc4520983f5fd8b4dec9b007f04fcf2b8517fa317b2320a1b2682780c30074b3b081a2c6f1f36ef6261c5bb3a415e1f14b541f6e335c364ceeab1ac81f4925d382eb6c3750965915f151ee5a2680814df155d4361d6f3aaca87d78c4fc146f0e8aeaa3f92639aa06344e5404444e6f718564d40047ede99f3bab211c4abaa65fcee165c923b287a650391cb1ec84e59b69cc5e7b843fadc80d5cb397840b991c4eebed878c7d5978076b22b19f2224cf1e1ae64349ecfefb4d10065318a7c3a6763620716d6383bcad938d4015a84b947109924c1fe116dd20372b9598883dfe7061b9d95d131d3896f9ac257c0df9e7895b165b5aedf1e40df3c09da0cff009fa5f9dd7a72b1de948f17741e33e13b9093b47cfc950b645f1c2892dc7f10796a87188aebac6eaa185a24b21ec05ab8a973c783d4b1ada0e6521364f683af9295cf7096bb5753556e963d6286559216af75e559d3d66d73b75cdaaefe527aea3d0ca5fc84d23d328ad835e3f8d5d1e009230a63310d3164b79684ee2c123e5317a2116965771d2cb40417ca89de0624eb7ced586a83d03ba9f256cc0be3389827186d9b2e2b96f3ea300664e43ba027cc3e6c2b90a1c1974ec177918f70edc2c5a0aec65179994e55e2f6ecaa33fd683ff8707e9b50d4ef44922ca2f39aa5742a386903f35c22d1e9f59370739e09c3aece7fa914d3ade573e1387deb88425467b03312a02ea44d6db1611c69130f5b688ce6ef01cf1c453b58b419131d67128ca9e556c5e15f42a13b1786b3a6fbb0aa9a0cfc92301086ab8675c714786fa1cc883d5fea8f9bdbf70073236d7e2e056812c57f681f79d191f64fe3d2cc74ec74dbcec0cc5da2bffaae88bd734eeedd43efaaf57e64df4be2d7c0f3f5cefa3a7de6488ce9ade5bf15fe30e516749d577364dcffba975e8eda0c2d2af302b6bd8fefce7b18db6626d62738fc35ae897fe0a327b83d791da005d28eddbc0b0a25d99046271bdd1835815ac02b18e4bea1c8ce15900820e135b194e4c2b9f2abcfc49d5b3a132cba6f6782a15fc038ab3340f880c40588899d56047397b003b7a29889eadf54c8a384224ed0b4f18bf4c1d5ec5c0a7712aa2e622f88002058beb9390d959ff9a4c44017eaa740f3bd84458906dc9086afbf29071f85dd73aade908746bfe3bf16b29407393824fedfe63c5d8ea773fe1410e63606bde15dbe30ab3f7b96100b09e90ec30d39f6f23f6806749365a71bdc89e0a39557ff3013fcc78952be00b33ea2326ca198ddfce48e9b18fb20005372cda93cd5eaaf3d59db04d5fe0f964298bca66f8cedb45b13c1be4019622cc21810dcb98a4af9c8727a3f5f50a51d587e81eedf31201e004be58325974a2ed6ff8b3cc6ed9ecb405924c3621f7a9457fb33205a438f7e5d4a60c8358d95e3ce6162ffec6bc4f26192c70499fcd147f95c6689e94964f7b0e1cdc399e6c0d6f1b3f3f29df63259d2cfdb1c04ca5a3429022a6f268aedc2e5230ec6f699eafc28ee5c1fefc7be6f3a46b3a681116449d7aad18de4e997e2ed471f618d7b38cf92f12551f672a34963bb96a443facf9c036ae0ae81a9d494ded3f5d44c7a70180850ed0174943b8a0d088b3722eb75f1a90090bddac7d8853dca8f4fe8eac70a3c502c8cd3f682cabd61316a90a7d78fc0758d989e16289e28c73e057536235f48fb0796409c24b5799273ee1c862c5a21b34016bb7c032a92a1bb4a6bc0ceb7bf936b35a37c4c45b098e286e8d3575d7821e93eb9fb3c20ae03b55ec0ce6296c52e688eaae675c13440bd5d161c9aa8c6118fe2b2d3925e5c0946a1120ce44ac003f43822a017ecfcd022321db178cbd3f718c285d274fc1f4b55203ba7de0661b28d4e33bc6ea2610a7c8c72edec16214bb9668ff5606b18b42fea7a8abc636842c411e6e67ff5c42a9724615808c26242160de029af21c09e649fbe4fb05a7cc7161fb1039601eb73fafa93d3f2f9441410a5f4948b42df2ac59368e0fba7ac4ff0f300ead14826a2cdea3a321ee920fde7c5bd299530abae66af7a7cbe14df2e77d81b349bd7fa622b3b68371126ce0debb532779f7e02fa2eda8450c0dcfde9b8bcd7387dcf1af03bb98ee97cfb037829187494941135ac676852b002850c83b8187fd3f5d2783e3121ec3aca98edb0f930c2f6a1bbed7ecadb881df0f9a75379f8477556d9e91c25ec9b22aa2c348d808dc54e96a38c7adb04adbc314d752bca6a3ebf923ad1c1077263700b9df12fe29d1c573bd095612661112c3ad8b4f5c988fe641c452ba3c5f247e079df7590920743a89cb713728dd9e9c633b08a16f758ecb31494f76c12cb22edc3465fbe8c89321b0950073c1b12ed97ac0315ef1c9321595943af457b4dd42bca3adf9c4bb62a281173250f937a61373a1bda9308e79e12ed103121c37a0f65cdc115893f25b0fb229421bed6471d365c4418595120cad95785672cab64155f13b20807589490909e9fcd48d0b4df9375c19ed4998074881feb897827c1bc31e69e96e22bb56f8068755be96c0f79b9a86bb707c1b74321b0ada4e2d527291c330c0bd85fa5eb5389b5e3bd9ab1a1926f21cc2585fb31d455cc8bc79b460d056a18faf8e7263fc79968040831e14a09c5aab091aaf85dba5f0e7d34a5fbdf60b62d30453f06013b2fc0ec686514ec49f4e9a8e9f15530b6ef3f6e5509d49e939f8f1c645f2e5291a2f7587425bfd11ffd6d726f05f1910b2bca0e989240ea491243abc1af1f9241e62810b1a16a402bf7b1476bb013fe4803013c8142ba433012a19f58a4f4310b1176c065ffb95b9f4646bb3e6e8a3e10b5e15095e5034bd243db68b4041d1815c30743650d4e99987c97388627b295c25f88f317d88be69bff2199dbd21ec240acce18783930f6bb66396e91130c6f8e5ed8f4094e444092fe0971b88eceba07fcec425563c90012422701cdb535ad8840b9c821614a88a23860671a4138e41b3b871ac75ceb7bf3580891250796c6d114d7c8cd6d33f2dd9e6703ee9d1b050fced509173c2323b7d930494c72222215f8d8d763a110e3d3b04600cb7a85ad9c6a2f3f22a42b417ecf4fc5be99212b9c3e5b9880f86821b9e2f80553a1e0e9a4dce9d84b5c187c64f6f0734ad0f9fb957101d900a14a5fa148f03ddaaedda0f960b8cd08d60bde8a79ea83f810e6b118525ff17f41fec8a156940fad58aaed00c116efc6e5707d5cce6989f3a08304201019d00f74060c65fa5df997d6c5373c1d7fbec3bc4592b7180ea17b094b61792f5c324cb347e4e182c30c25da82aca10be1ec12d56d89860b8b9b124be08cb8750c3e65703e7dd00083198a70de78fbc862d942bce63983e8459700fa1c927241f9a77c0b368328b7778077cff3eca76d44bede90cfd4b096962a382ca92b656f270d424e60a429a78009bae895aa900f905c08e1da18344e67d1a81b397e7246101748fcf9cad454174d6058c813050e8656e6d3b8c05543150a6838d0a5df19d7833994429152c4590617ced961ec01677f95f384671a53a8431d0feb96c94220468819ac0c61dc287ddaafd55c5e5ae8c81f0c077a969ebac6ed612a6d688b2b43b519ae2d2ec2c65f7e01782c41cac2470390df29c44f923f3013415b250c205dfdd302754075e4d0d01dd86656fa3531a61da65b341342c810ec3c8d99a218739deccea099dedaf3f4d46e73c6ba15a3aa8a0a4f58447fdd6b6ced9ef4c0366d08060ca70bf34670997a2a3765485e333112dadefa7527dcba50324ce64446388f054fc4100cf659b06af5e98584a02ffa8689b01f83b68e7879697d30295aa54f1fa73341089b0e033080437e1455a2e6a0b09bf29466a7e2b11a912cd813b2487730cafb25b7923aaed358b3e85dbe685fdc84aaf70e1d87a9510cad7577a0542792f2a94106573d4bb0fedad05078d5c632c74dadb9f9392d71e67bb1ba08adaf1060e32002e2e853bb5ad6dcdf6a1608ff32db68ddd90950557fe717ec5291471e4951db63b8e5404077a9faada3ccefb85266a2dec0cbed627637582bd4ce42fe05d2e743d451dd6fbe06dd8df42c5c6e65d39969332d2d233d67a5aa5dac0c3c60a774692550b8c4ad15df0d29c4711fdbb81df8b2f0cb379ec5c0ffe02483ba17868ff4365a8007edd27bfffac9ff7a3b058834fecf8fa9336dd3726e301f6d906813914a283a039c62e7b1913519f9b0ce87e883d1c330c316f6488929450b110d6318f60f031b0e9fe8c5ce8f4fc8966008cd4c0e01e8adc26a53bc77c30eebe00d3dc1678bab399d60b9e217fc872caa690995c77a4bea0947b1511c13a019631d92e6e59be060e6c534311d9c8e87c1f20b8fbcb4edb4fab984fb90455cfb97499e8826cf6dde70230b3833e2aa475b1b194c42e3dc2e41e0ef16b889dbf58954640721bf3e3ad876b8f3d333fdff4e56c0393e7da64794c98dd911e3bbd9739fdcbd7abdbe5795807d0aed05eebffe6fbed7660fba459cc362655a54ecb845a9e35ec3887c26b75fefc1ed72f3e919dd4e6e5ebde35b83cbabf7f0767379ae378d1c5bebe4e2955ea2a318ad36b7a77a1e40a2bd7572f5eb7162df0f1f7dcfcde4f2460f653d262d8b8b578f1bfbfef4d0f36e16b7af7a485563deb2b978f4f8d8d7a78f9eeb6672fb47cf7b88b696e5e29b9e4f31f45b4e6ebf5e4eecfdf48d1e72a8bb19a4c8ce7b96cac6d91374f7ac7929a592d2e655b4df4b60f20a0b1cfbd3433fd47b7efa47dffb60359cf9c10f3dca58bb9fb5c57872e301b2722b931a2278dbfee9db2f3672fb94ef6a4be7d4d2fe879167101455d94ef561fc7aa0003f4b5094503bc47a71e33d58114e20bc54c0e0940a4fec59816488e8bed98ea9b571e5a1d667216e77190b2f817aad41b3ccb55accfc4ab422047e0d008285ac321fd61e94ce3b2ed0de4351a002c0b7aa59174c6c552917ce1d409ad0f244188a5c53a8908629e2a417df8360ec0534e69ae6b197946ebda51a5911c9f7f696c32fce4b8718ac515cc79dfaeda5d7cea0edf554c88a8c8da9c49b41e3c19bbd7cf8fc921bc21895988bc7b749ba6a6084fed7de26aaf928814dc9d086e89a70226cb82b175954e2541aeea7242db1aa0e7b92cd780a8f1fe1fae25e72febc4bebe66a85849275bddfae0b51389db26538b16265ad2bbeb5274b80b026b893fe6b3fa722ee6bb031d969939caa90a5ad4d5634ac0f8dfcf1d64bd0fac366fb8643fda5f0d073ad719a190fdc5ab62c8bae3101d9f9fea4322a5813201d1b841303019c07a8388c6b8811132c26831d5bbb75c21dc0908dfd8348cbdefac90f1cb67dedd06b1c67da4d656796d2850d28dc98fcdf473d874b3f15e322fd674520838890f6d5a98fd33a2d627032c70b22403b44cb94115d31375a1381c6620f464acf8ac73ec36ccad1a7210a097de3658666934f43804d182639489807ac6624c5aea31a551d178fb4b753516f551610c28325eeafa20d8ef0aa3de0e341e6c5c12c19254b925b4a5253626613e9271f11553e4e48b65be1bd2382617e2b32357148a5dce077a3650625351e3168a8585ecf1c66846702999d80c429fba35ba52c341e3aded8c74d2a0c71510fbe289cbfb9a47203800dd4698f386ffe6cd10e236f982f3d3a7753bb8508081840aa0be5cd8cab87227c82aea4adffc04cfa1120b43a980de620bbeca1212a5c24342c9bbf0d7cd58068d7330b3404b9a7eeed9ce935bf996cfc207b4a15d8fa19222bd644e178ee4d38eb9b4255f27a2f6b7f15f291727e7722d85d257b250759b0791c3ed0a6834743333e8ef390e5eb3a1621496b4b5e50f83a36c64f3e3f73550ff7815cb421a40c741b1939df3eee4888cae0b3e6880bbdeb101d8b4d5b19bf5643e6a3afaa898f1af52da7532cbedadf37269c6afee7a446175f00a5f1624164851de0229af73d0c39df3252bf5bdd8302e608a0028d1d74980c2c3a0de14142ab788b7ebc4aa21c88b286567bc418a2cce87a82e0f9b67f800b06805feaefd0b3dc3d4750e3a880a97eb4220b98343a41d3fc1386387e3f72fd1efee0a597316331a640737bbc6c8746bdc851e1af469463b0becc6b2534e65f7fdc97c9c5758e09bf609b66ec9b51a0386720d2af94fc2840a86ef14ee0df9cc108b8ded0114b73b83762f01aa383217cf02ff86365bb082fa97015523270e07de7690d66136bff02febafb5744c63012229cf5828af7a3437de05392088b1c16a59399c3653a272b5610a41f10ad44ba336f90cef005454342e59fddba10c6011a630aacd0117bb92fd89004ecc6d8975ca7af2787b5cac7c1d3156ac9f8f9e83a83e7a5e046fc0ba008251859d2ccf22feae5bf8edb82513763963edbe7f3ff9d8a00b4104c3e72322672c3970fd7e529ed72c40f00ae842a7c996c2899cc2d667dfffa6027b38ecc6bea7b5c7ee56cd467fe93e092575ea30a5d0f15579bc65f9a11944b5e0991d314d9abfb9e076fdd84e8a9fa73f82a3799c26ad3d57068cedbca01e0e85b3982544d3cf1cfba5768a559aa435bc3eb84e8f7fe1e527edfcfdbe5cd16ff37ce9ecef14220e103be03eca2cfc0b3a50c84de28c12554250058c3f33433b794771dce7f6b8caf5268f5e59f1844be2e3142598a504a134f254df1ad3c86c33d61940c6f5bbc63ec3340bf2347874407abb97f856938bcbc06f38ccab29b3c75c1b955d66b68a10932a5d7d042034c6927202aa773f41a47e685836199561c2170a6150fd31226e8b5139be6ee99b1c6ceb1d4a9c256010d2cc366711858df351f1aa9916e2eb7e5fdce14f74ec52f598de965488d2155e0188f44168f6098bba29b0449fc87bd71a3f3999c7b2aa2b8c25b445faf16cc49800051ea30a85103ee4c188a1900535bfd0d55884661c17aeb83fda581665708d09d44a0355b0652bb2d7228094e89767c31b00189eb6f89a1d4709b7f953b4a2db74ed84d5ce57d33f85a3b57f148d194c5c7d7d50324d91f56cee0910f3054bfe71d7a87e8cff5ebbcce8e1bb9b3a9bc1388c12b9dec0c854e6748b1c8f484e88ab4d29bb94fa0e0ee4f5e27ed1b6506a2c3f778e615243523ebbb52dee4c0e2909ea7ddf45bacc170b8b3f77b646d87ea8c7dfc8ceebde8e98398507b790005eebac23eed584f9efb9ac39efa5995516dfcc176f3736fc9961259fe501f7ef68bbb0b3c822a3bc2461c3014b731230d96731daedf585c140a51b6cf7f934f6c04bc1c128db0bb668030884a3acca01779cc2c1380f4083b4d0283bfbda229ca3002133117fc41da32b8953b034153272ca6c1acf02176272be2c535a3184bb84dc0acd900b2d720d3d61798cdecb3a0e667a7c3ff5164e73cd4a5e226830f95a820c04325ea90283f4010a7b57554a6dbdb8653e7021fe208a03ad94ab004e68615ed84f26405fb53b71c87ca2a71606540d760b600a4a4a51b109145a9226e1a523a398b722dced2c2b202a993af8eddbb4a7fd473279831490c8ddf8603ec3bea52c556f6dd380cc445e311a01d900785e3a11f9ecf572a7132459b0ac8bd0df442ce27c607c27a2e12c4478c14602315367c4568f6701a4010c6d0f2c26f821b97e3422da079c902443d8fefab2e51dbad5ca903ed4d4132e63d5970c084b2026971e8fdee39d9bda1e542dbd4370d2849a95918a8c2a3d080ff456ae53871db6e56f803cbf6cb55646e8110df03ff83e6a04f306d447fa77b3bb356a2b0e003a1b22b438cfe0e64c1f95300c6e1254b111c1e1928a629e88be513494a9daabb0856027c0e48aa4553c0127d433d057e1b0cea5e1cd605bd9fafd44a604b4532215922f5abad0a26cf30c52415b1a4b21c20d649740f0e98e6770e08353303529d395a3b471080e060f2495ae14a7ce63f9455f521221c5e2323423905ed9d304fa318ca0f85cdad88a0a8dac3cd5dc1afd4fc8f1f2f54430233f4a9508fa49b5afbe38a9624f600222648d0924633fe737b897307a87902646484d7eb240277933039f34a5f0b1c3b8f253712d1eac61526a7eed015f5860122415062cb34cadd8aaa24b28e7398655b2de42df0ce6592dc93998becc7a54ced7a1b30d24805e8280d37b11aa33b7f902b51ec38637475d65c0feff96ff805278bf4bcba331b9cd468d545b5e9a4ca59814bbb7475e7f1f0be48094dd01cbb0d6d864b42e8b653e5238f1b04afb699964199c02932daf060d103af98c28f6d87a5a8f0af2dacd0c0ae54264d36b178cd8fcd607e3e54fa74512bf5e61ff08952ead6406076733181d8f6b3009610527c9eebaafc92df20a17dd0d86a1ca6a16a7857532a114681d4728e78ca36002a86b88a3888782bab2a61592a1007e45b0a33b4b28205f1205331cf01ac644289864b2891b3aca360ef9f2228e383598f9f3406784c90babbcfa5028010e8df7b5b56603da5d60b396fe50f326eef4a83b3c7fbf6f672dd8be2204cb1621c5da26741f815ae09e1afc03424584bf3afd6216be2ab580763c0196a1435f1f919d3a85776b5d6b24c8466ee9787d0b96943267241f34aa34687315151c4177254523340bbe45242034bfdfa4cf8207da7679df8d816efa8797ce42ac084e0162d175de5ae07b01fe2f0650f272a39feedfe07d9f47bc5e34f7720840a8edfaf35c9d20925a91e00833c8063aae20119daf64a4caac79e97eca9d7d94b83557899a8a19b1a3c3050fe0fffdac38893199d10b46b09792d6f9268302bb5d68ac1a91fe12f4015f794a5821e4f69d123b03d99b19e6b28c74d4088a672a07c1c0d3f6118298324cc4f0c5756a194ca6517def4207c6e34290e8053e40a669815ec45a9bc583c632ba02f310efb183bd06715bf1748adf046bbd54992fcfe9bb7eb192f87ad4a09adc5bc533003bec7d7cc05b43929b201736655450f2f00c85a93f2005a4595f44ac7fc87e9c27a56ed9515baa275cff234cf92f0ceda42ac80ef7ce95f169e22099f88058abd44bb36f5917d50b70a15b7316a1096a866ffef2dee4e4b2d34a69c89291832756acaae9cd4b6cc6e94b0647214b4f488436ea8206b16b3e01e5d35802e298342ca1dc07c8627fd9c3f1b8240c681b075105ad1dc8d2039bc9c3f514982bb7d3f4426c2a44dc811daec1fec8697471573d5acedfd3f34c9be6261f720c90d5517dec7b9206f2991ad8ed76599f5155883f5417c770ed257a133d926e7b3214d049b34b1689b851f518a5c584f86cbb377acc44534b1b085ac52797158da0dd333227a98f4100aa6b3b3dec33c43ea9325cb7f7896c6fcc72955a198cab7d797258cfe33217568958468153985cd65e21c72e702ea5b61d523a6243029463512009c1e1b8872cdd907f9d66470434a79fbe45fe5605786d60c6aad6d936cb1f9241e702ff4c24126fded66622a63bdf61d240e9240149e509950a62bf4d9e046b65962c84e4cfba17b50af8d0091700e1189c53199a1868ae8993892c8e68706b9bb3bf332311be922bfe899bd53355fb9b049ae86c90dd07ed0bdd565dda699b7a5af7b266ca8e3e33db18709ea6304058d632499c4d38680f1fc93d4e4c3794f396a69987e82052b1cbcd146912bc6dcc2f360835cca7227f736aee99cd6e3b648ab406b5020d79f148207e4a9528707e2d1bf1689f827df72a7849a14bc91b9c3d32a0052fe675d8113b48584affa76674c0e9de93349248179ce74c4ba0ede1e7ad05b48d5a7f80a1eebbd06bb360fefef6a0e2cd1780546bbcbcf193b8145893ce1dc31f1a7a403e689047d4a6dff466eecc0356b140012b8a99edca65d0fc0850182406ecd1812e68e7bc5ada4f5fc6a9868a149865f238df3afe57f34efd9c38db97bc8529fb4f5c1a36ddbf520a70826003f41b3e2431b7c0fb2b29a464cfe268ad4023c77bacc09062e0bce3046d459fd355123dfea2e61e8cad23e12f625d2a3ec061444bf3a86cbb6c80a52492fdb8ba7631cb44daff5e8878587ede544a1abd0340097cf4730f0b7fbee64a44caaf605d1d6ad39eec0ce0f1f1612e96cae5030f4c61af7cf064308f8d7c4762ab463d6052fd7edc40ccc270d928f4fc10c6efa6ab0a6463acf385118f45690af806c4bc87d32c37abd00ea3d2bc1255931789c130894bb3f5aa834def25923b366adb1fd4c856a6a762a07caa95ca7f2b95b74b4a3e6c7e8198a4a1856f9d0db32d172af891328b471be11ca46fe982c5720f1f8f177a84228c72089b63b89ab945c4dd42aa09bf4e6486925296856946de4bf9f45b65f31fdbb6a78535cd2680a63820f8d6fa1946c44a14d8edf54556c2bb163d3141dd7e88780a16a1f8bd3b0e17e3e6ad2136636a29640a7e2d38841058eb4d205edb48117660b3be999ccd9000b485c1f77e9188ed812cdbe61609cf24ad795e8c9ea9ffd6b27954730ab9ec390344489c007c6394af2f0a8f79b3de0988a58e018c55fc9fe810346ac24e7cd8bca17ca90ae9a99910cfae39a4369bbe8cf1968bda6202a22064044ebf62f2b47e00bb8d121727046c4cae30638c2698c623d0da272e8f26c2d5c5bee63980724cd02dc9234c6bd45014295c6cd766b6cb1cc6134e16fd15afb3494c4b79f989299e72f9cd0d141a8d64ed88577abbd736826f9bbb42a147696fcfd6be3418879389bd5329dc4077b3736b6f491f45dcec7629e4d6101e91f8e5c8bbb955c955d52010b8d827ae1050be198d2a4585ff57de9a6431007cf365c14339a408f30eef2c583465c4d20076b589591748f664c1e6ca5bde1b24129ce755fdfde315f95c5b1829dd2c3d9ce4a0bc7f1cdb0e7b84bfee6d706d731bb61a60a386f42b66cd7eee04baea9211a8a08be4040a7cb07803aeca9ed95df9818e31bb5443e2d1a3b5cdc434fb8feebdcf55376a1e60572545ab85b9431e2680b1080db8e60930fdff3f934116fe1e3da1e96c3e0eaf5369bef0161dc2f632d7a001631fcc26fad4d51361e2e0fea6aac9f1113a25ee26083c31069b5b48502848a05123b42d0c03af6d775bd8383808f4cb2db09321d5c989ecc48ccb580bede5fee870499a280656a2f2655ee63d2302f494b5f1d7b3ba456aec4be990118cce0cd6366e0d5b446ecba427a61056964ed0696159737cc324fccf5d8074844abe23c6ec6e259ec9f20de1d39d32e6471a49aab09c987b53ab4226840116012fb79a9cfe35467be02f91a154b887f1d9e9448b3042b5d05cdd3f9c7beb48de39f386e87bb6ae52dfab47f2f133eecfaf11471731ff51e3f6b1ddd9371cf06dbd2ba719bf1d2c341f8cd84a5677f73d629073a2cb1767759c418490f0ce28f816f7db978283ccb17f612934caf3a38f2508007c185d0538016a7ebd3b2021726725690f80a2714e51581d74686a3539e835ff1126c9de5a1d1a95ccc342edde7f2abf8673d895c6cdee9ea610d06aa5cae01fc7ac472d13e1cb43d3a431c6ab46f2d91fcc6cd9ec4edb10b529dcce845ce55d366035f01b4c796c384fb9bb36feb0e68d261e531323004361acdf3bf7947b24e1bbe11d362521e7dd0c9a8c1dd65785b97ecc7e90797aad20ce6b41c17039a0e190fcdf198ea87dbf4d30bd23201c0aa55ccdaa3631a2e2f903b213c2f9491dfd6cffafff94c605b00604a11aba6dbf008abc11eda64c6733f65f1aabb69f60764779af302816c39a240b6aa5d06e3a3367fb75983a679ccfe86bb041bb40857d5b3171a9475f126efa78f88d00171d170772db251a08480e8d1578936722dd8f6c114781a5f29c818ede791058c08a20efe6cd1f0a089f62d704e6fa9f66cb41e1858dd7861b6dcfcc99ea63d2d17676a29299658a14f42df1c83aad88914d8265f2017bacd48dee22b7142dc674ead7bd113a624e3c749d2b1533017c9cb66805dce16cb91296f3fd688edf1e013f8e85dbdd45415209815aa3ffd9d792108e4263204b842d5e9ba4547d4bd5c0e0fe9ddc17174678ca40fe0710b93aee7bded20c9c8be1b060f7125b9a697515f37016767c11dc6560d4316feaaa0049c4c87732ab3744287e8af647d6e43a640fc9fca77e63ac96e28535c9cb3054650228aa2cd7525761625b764960ddf8cfa61bf742ad7199f92f1667e9fa9f1f326199194ea7a91c6a22ae5a3f9119a4f081a6239129998f49cbf1c2c72c599f997b2e0129771eb16b85cf1763bc96f1755a1968ae4eaac7e903e5f19199f6205b572c191263a79c7f8fcbf1f55cf0b015d5cd7ce2174a234a6a9235d8f939d3728098c398e23f2be322a8ea042181a7792d12a695bf2d183012b4ca04da629a84a4c3b62d976a54c262f09617dc2e8b6993ce808c24b83bfe71ccc644a0b899e59e16d5d0f77833901c8bf4b67b93e40838c90a19efcc4cb309b8ab17a73d8164255a1f8388d4d64f781130fac03767b82b29ba9b9402158a073c791c97b13bc0c93e8d4247b1966b14c9a5e66b2400beefe00a25caa1c5d04529c3c6930317ee6c9036bfeef4ffbb440a8c8616dd99211c0849e5890a3a3a3b6c0cb73dbb4a0e1ed1b290acc022d197446ffd3e0735112485cac0e0a1850bb911277e38c54aa2ee67357773810daa82216e53022411869fce45d5b90fddc0b5f1fe98d040da1be020b023f60b756df1c73538bdb7cc6a1bb56e0a757c2e359d7a2c2f6003812bfd8ad835e75cb236dae078230cfaed0f073be6c2542e09e64f8c84fc6a8aa512b7921281b7a29e161c2840f94ff7bf742b0044657535df635f6622e16d768b607ea1f7d6d872d35dddc1af73d18e95546f085f92e44a6626c996da3eeed81f2aadfa8bc6a06f3da3f8830e693a0bdac410b42eb132d3d3405ae82faaa15aac1ee7fbba7926bdef1d364de58c0914dcb1346d25d69d0fc46814b03999bf89a26bd2a6e746c2afd432a6ba6f4264cb7b7e1d0bf6ff8d83ee5ddf2906240c5936744ade16370e4c6918c8059cb81c9b7879928f8a9fc317b510c91267c04679e20f928fab58302573522cbb118f21ade3be38684a74dc60268933c80dfedeed214a0beb966ae54fc5d15990f242f5a47d2dd5040e01ab01a724cddc4b471304d6aa6cc17fd3962bca86d45162020e8af6e86c123a37c31551a46fe2814c6e6a96335009b0d2105e560e0185391ec946eb673476a4bca669eccc229a09875c85362f3b89bc6974aa12f366db492b63e8bb4f943ed5dd492ebde18af80eabf8f1da0972d7cc0763818a64f3db94aa6badc98534f6e01f0736f5aaa6d816b8cb2f209bd7fae8c5470807c001b9c6a3b83cfa391c125cf379f097aa95a1e834c29ad43cbbe2a3f810cbe228e649152c7ba477c50d442c25ec5b1f5ae2a149d6243a3c43af0223621e03c397141dd1f2f4afcbb72e9fdf0931bd3d775f83212c4e7458ba36ab0a28f9dca1c1f9b0f8f7eb37b275eeabc1474dd86e1c2a0efb4a7e96d4789006d30597ef85ea713f20171f746f460f0d53c0a8199b540d0739bcf4731f86f775844262a8cf175153b3a1f40d60529af0efbbdf2362d7d06c8dc49b92c84b6fbac571848e1814e520256bb09e1b2e0aed57b4e2bc33b96dee1014fa1c8a9aba0e926cf9e928958fe6f38f54a4e8c0c59ed4dc202252a430167149a06ec99359593897868e45e81a3de80766324447c6bb400a7c2b15384d1b84a0c12ae9613581cb2641435c768672ceeb7135d76b7edf4ca571aa058ba7b566ae45a7808b91e0bd66f80a89db893a7520a721f284ab264a9da7c4ffbabb9c544946290333d05290b770d32c085169f86383358b0f1b2a791740ce8733eeb653e7897a42077729b0399d610613a80259c3b65acd8071288782756df2fa26cebd43a62d8909b041a2f832c03252652f03521c27a9f7beb8c89e56d7996215c2fa637a7dc4b4ddadf8ef7806d9b899972ed0230fcc14871cffd346cfa9aea7c96f61589e6e0a0fdb36fe4c0ec006dee1f663f2f04809f7fb7314cd7305550f55b9ad7b5fc20e0c16d623a58ab1e2d9de8a35cf23e2bf482f9f3e1c424448db5a4147d09ff5f3df7f6d178c48c59f290b2333aaafe5419b04fb3c84cc7874d283c6d60493583ed9d78d3cf402628d0d763c72d0293908e4780348e4cb7a611cb4812cf8798a429744adcea7bbeec1391126b00e6e345823b7e7542b1c964b76fd230d669083dd74ba2c24c03cc895d7302930a2e676440cf874776712c1d7ab370b79e93692f8156561597b71af708b424252317aa6858a57d17cc1e7c2edd18a02512cf4f354dad87bc6126596196620963132aaf5f33d0c43adafea03ceb9c67ed300d55da577881a55e5e385800587490c182f70c19993b3fcc7a54e914cab87c2c8305dae93006da8218071806b5b08945e7c7e3fe74b2a2c4d09f11078716007002f1eba9f26da4df90284045cd752d2e3fcca81dcaa39a4ef01144448d1f4a8eb1e3bb8a5cdf81dab338e5db80b0c0d8c28dfc16a247a35adbe75a4d6a289b4e8664810bdd85b840aaf8dd366e40595ff3cb929710450d799b8c7f0ea2c75c8298050c8bb7ffbf950619a64ee465605625bb37f283483258f84b5dc458c169afe5b2eda01f83a7e2fd72388d56c16f97960c02697ab69d930672e9d72a708ea7dccab56a0e6e9e4dabf64910188ada759f4bf26063d170bb930da478749e7012632f959a156fa2a22fefabd6b4b0f6be823923b6211971162ec86abe8b4f22caf30f864ce30a38348e345a11e9325d72e3db0cae0637a8f18a2042d3a6b431a271b2a929f198d571569a0f80423318dfa4b713bbaeac48a18f3f78ad47fccf63585fc2ea8543112650677865d9a25649440223a74897fe1a2c2dcd0b41962f8d0f694469f6f9abf78b6374213e5616faa75830d2298f9c0ce30d99326ccd03fac07b36c174ce6195b80aaf62e632000f96a0a1e02f8fcc452780a41a35113eedd5c43313cc0172bf8e25246bd61e254ff4a57951fd3b30e3ee007ebf697d87d01694991b70136b84e305102e01a5fc2c5d6f3b52885cca6b827bbeb2375902775c7146abbc262692065aba619bc4062009e69953b710f3398acf8ea7336b389b67ef329a07557e9c7aa9cbc899586cdfbb89b8500bf713dba0bc8a832482b5a194459298f8f4020e1b6ad01f78869239b389fa372a7aded95626223ff89b5f0e7710325ea54a2a93dd3aaf64c1717a81f8a6417bb46af9d1d0fd4cf1b2ed342b63a41989052e0a89e3feb66502214a233643c1b5450a6244355a831f060794b42e7a214ce2d108e7ef48bc45a8618aca15d47bded68d1d721134350e79f7cbe3cfb56270be3e0ec4106c2473571e036d296208fe8399530d99e8f2846400a88626540fb4ceb6ed359d9a842616f2b9315000f0069e4319630f6d64449958ede3e32108ffa2070389fc56ae67a43f5a2e9d09fec0acfd4b59e7e9086a88aadd5d185130027399f9a84b6c2aeccf2efbf8bf3f4a442c31d6775a52115f7370315b5586cf5f9f08622f60be6d8d369b341db82f3bfbaab1a76a2e9be277edbe308e82a93890a7c7f24b067d142359294938141e2518a00e989f612c3561c47535e05a30716e92d774c62115cf642e08b3945f6b645be8f6127eb79846d12f0c23e5fc8a6c5b3a8b0d026ff667b5c149b570ca524817c3f1193984f85118810fdd2a68aa87eccf9e77bd51a6effb343f1029918269dededadfe9139f3b81c6218cccaddc088cdc763a788a386c461dc8154cf6e03a9b87a2b46c00df3e1dc1a1e7a4002e482d7e7461abd692b7d0901711cb19f4a71b7b80e253fb6b3279ad05e636b8d7acaa5dd8e49d56fcbaf2be4f17d0585d14535d3b38a985d6f212d9b566a04f8ee1f424eb0cd86bd9b3574363a80a1e624024279a9aa30fef13a412d0638640d6e9ce4b0de514009e38abe8577b24005e1180bd89bc6f4f19d9bae37f26630946225ba99b425125f25030f0671d56dd78a313c3080944f4b6657d351e2ec147aabf41ecf63d8c7f92ff45d3d026ce1360568f837c4e0afb54906ab48eb1fcd5f087cd3cc90a072c86441e26e13f959718dd31ea559f07ec14a8c2f6259ef319263473ab10911c72ed6f949430a705d852c0018e609c12aa0bdd6502cd461c76ed672f8bcac88a45d7fe9c19f70fae5feabb890c20b794087aae1f673ad6ee8e22205f498c2435454e9989f96d76b94f724a0dfe4529be0ffb474159e6b731b078e93a7a7d07c73caaeb6ed2c7ee5c47ad5daa1c163a3ea592cbe060e69aa3b129fbd2d4b332b0243c83dce0c85122eea16dd790b54a0e576f3e5cf9bf0f652d1e2cca082bbe2a6be76386ce820ed05d53890fa0dda59c82023a5dab8c417b80beb2b2689bcbb323d8fa79f350e334c4689379e13de901ebd417d6e711cddfdb61582a9317a20e34d07dd921fa117f14715ef5e1d1a8ccb16806628aecea7aba87396bd8a542248ecaecdf83992288fd2d5e60c336e502dcf3800d430672c90d2087f1855b931459f31667a698241f162b15470f744e2beaa6b4f1867a35b738056802db3fc9566b8f47f8ed6217a2eeb2b3bff5163addb54293272ee671476fe15dfcdd0fa60cecb1636fa1fef334b7c1e974ac1c7448b7f123c785e516452e8e45a487651df385dae937d6111481bc9fb7fc6ff69b033fdeb80d9ae7781a2cb4e537be9bf33eecae80636ae51312e33802ec81e50b0f30db7ebe715cdb378cb286824e358f384673b300f01b9b900fc1e16079ccf8339ea6a59d063bc163530c2690056b30710085b7984ec3d807013e80fa44432c44708d85892c4e85cef76691b7b03da33cc21919ed1d5f5270b49b2f0c37bec9f047260bc5d47dc66b5e16cc6d4663920cc34db939280f2fcb89cb31976d56183aa1bd9413b66b91ad58d72739ee96b7d4e3f0845fdc5cf8844d3bba5ba47d7cf1b2ff346615ac0b8ca058f9b92d1725082584483e9244e21aa490d5c943dbd12517a149126e75f57dc50c86e74233eac31f4c373583b3ada6c891e1308fc55576c64caedeb82aac58b73f08b1421bfc84a1059398cdd9667b67ad6f45d561ef0226e5533f145c35e6a29ba79d8c32da9fe10c19d4eec653a1f6f7bfffee458476c173f9e5737f6b5138f8927163d1c0b500e0a487c8109a07b58d06aead010071ff7d6efa69368a6eac543235882fc209637092018b22359cecf27596e037a331d45319c53baf59be065815a7e2d80e022698633063b91a9d770e1ff03e6dd9991e53455ce3119be1295811e6c6f5b47134a2c684647f4bfada33f4a8ea0ab1ac6303f60af3c7506611321411dbd2ae6cf66d0c3da165b30c8ea245fcf57f9d059ae604dea5438e4a4d00369b26bf36e214511e8a6403b6f692f0a3c6c487e8eaf6ce8833ff3dac5e4d140a7c6f9bc047fd558b8be17f0a31f471dd314c6601e54250d49c4e65e8f194645ae8e7c733b96e42b80371f18ab86276e3061484406adf0d767849597166065107c7e73364fd2b0f74cbfe3b9aea88d94bd7251bf56b66aa7be6fab4b2d0079c61c1c1f4e18c63e0fcd300d98ab794e3a3c0bb4d71f0cdab83e4329a1bd71d5ecc411181534715c8d0d90b00b6c626c2a4cce46bd3e1af4601c413a01ddbc71e275ac47a4328dfc8c39859afc1ceb9627c30082ba02cffaf95f183aa9780548c50c57ef84f60799279b28bb7267f4e5a170b68f41910dc05c38685fb0b2a2f5e28591f3e861d4c14ebf0b4483f367b4fd2f3fe0fd2eed6b9645da79b84e0bd9aa2016bfd7f490cff3ad81ad4de04de1484b40c58305a554d3a8183c4afc286ca409c9bb6bd4c42fe2cd2a9c911b7318bb8939845d813e4ca08cd170f4fe74f11b00dd786503038189886311394a7d8f6f37e8df319be5c5244712f8eb755bedededa5a4b885a536b7b4bb977770c6f0c9a0c42f44b3bbcf33c600dca9d9f5127874d01e54bb232d8329f08cc3ba44fd2485a5fa65f3972b403e00bc2e69ca22812896c78269fd08746685c8c989999598a2413893d39a05b901df6fa0430a67f4f83f94497729c09227a7d88e4f65138f4e3d9c74ce4484142616e3cca6ada4f5b8ad00f26993d30a6df03182306fa4da1a1399b414978866d8aa7877f8226129e919ff5ebe4b15027e8e9d37ede6df9013dbdc507f46b267249bf944c1c26534702c91fd9d32f94f7270fac9997f243dd33940adb257354f6f3ce2445d32027d1e619e889edb9fd94e5d34ba7957ffa2d3d28fd64ba10f5d884a12cf5eeecee91a64d5187639e2efaec7088fafbd0a9c4cd207cc04e30ad5d4da0bcd3679e3ef7c0970f1e30214108ce50e40810ce00ebf30f7c1d0a234a9a0c41044090c0fa1c2bb9df04b8ab9f8f6f2caa5f8f2b2a997c5c93652f4418447438383b84cb851d8ecd0ac1a307ac996fd285494a9d0e869d4e37a0308733a26b9a76e91c82aebe08e673c91cba7d7ab518ec708cbec3a35d7d1efd92812ebe4da2f5eaea802e3e15342dd02fec70f52eff177638a6a815c002faf14e8f44dcac2b767807ce9f8640619a77a0aba5e49edb1fef887038667de0082c2e3c524515b27b341acd9194d1b4a0787e1552b8dfe9068e5021c548084d9ad03508f2bca0a0a01835f8d2a02bbebd3584416505d64c3bc3cefd607ea430e1481bbad0062ca0a00d2ed0e4fca18718a3fdf89be4c891a38c1d67cf6e9a1a3b70863fa706c5fd28953f40823303245a301202129c254849e0e064e103aa0d486619234b9b1f28a5f407b6e9e1079b1f344e4686a6c6ce6cb5fabcf0481b9e403529ee47a198a954ad954ad5faffd64aa55ab554ad152da0f11820c1fd64beefa0490fee07b3bde07eaa1f488c0187035b0892909240220448706c20a7fc35e2775e24e59453c4121101055768120403489ca438154d342958aaae62afa548cac3d64a25a3aad5cd760cb48f541182cb33d108478eccdc135c70dc942eae8b0b5d48c9bd18091b34e148154710c2912a6440aba0946a1a4d4941ab3072baf048930ff48c1c3972e4c7be5b7764c9f15500318701033e42183539d2063190d0e06992594ad9bd84e5c2234d9a20a1a07421129c305ca189889391865730ca19679c3dd963ae07291f6594516ee07e74f5441b760023a5b6243207290efd34e8e5c42b57fd840bf392b30873e15b30a238a384591de12b619c7ee5f46bf4a91d354b874c64683c997b404c80e4e737594d77545939b877377128d13f80426da7a7a3eaaa5d3ed1e638d91f1d6769bb2450895479a7b24ebbe6bc68fe887ec5190d8d8c8ce7fd2b20ce47645109e65b09a8447ff4ce222c492b016b4cad84a8e746fbc521a0764d9ecde383d60a3284466240bd0bcf1042086184ab23bd036ef85617283f3a80071486999999630a8779b0c140d6b42c1d7ded3b98af6d93357a7708e3be83f4cede6c276d96353ae97cd26f4a567b3fa69d6459a28b6c1111267f2242a775e1e180c67f305732cf6013b18e5cb938dc2d450994d2ada5868691f606047b3f88202af5eece933a8a6fbf5641837a7e22103c67ed17856ec9c624b7595561bb5654573902d640d5556ec32a570514e5278f3fb11147a5461dc84474448b0d143ef2349f872775d50d2a75d563a9ab6c14a25dfd1efdbaf189bf8157ddd0ab5cf518bcca461ba357b13c6a8a65fae9dd5155e5b4aa1e53951e56552ca5237568653e9d8da1ae626529a8532b3bd3c7e0a995f97447b1b2773646afb2b2133b8477e3513707cf705624b2fd18cce50e478e1f3f5287ff71f6be21bc0b01d6003678a3007c5cd21b55210c5608dbea0f40e4600f16533142217b923db617763151ca125407db7b52029db2e3d214988b0c9f18a2f6df009e117d055fcfd12efe284e5b44bc31767188f658e385b73a18a6599b7a3242a5d5c0165b4a1d1cd47e4c1c1f9148f47da455ef6a1a7bf3de1d7d341aad462391682661fb0663fceac293131461eb778c3142fe6d083d172946683cd22407f753dd28a7983356c186f024098de7f74e07e1d7db95849503757a944f969ca6222b26a690954e108e16548a419b1d592885e29d3cd2097e49227c2a56720a2a24c433db9d974978a6effcc4e957cfda35afe5509d3b5555fe30af5af7934458353f7f62032a87784609cf7c3dbbf353a85fa9cfcb24fd525dd3e8841349a4c139779aac2cc24c8f5d024e3f49790b0df48b4b4eaacc47da1c29f6078a95451885a17eeaa1131c50d8b5ce40bf1eba43fd84cc913a7247f2740fdd79f279e66121bc8499e0e44426fd12822e994bce3dcd3f306806dd797b5221bb3cf624b4df4a091d59194e82fa7c07f58b7e9e3edf49fa65fa84a92a6d976df94e559f2020ece4646b28bb4d3055256c8b33729b609011f27e31a8926eec06203aab8878a5d09d179ad10c4a38b0030333b4610cb07939342f95c0573d41123ed0862b00210d1d80cd8b6aef54a695872a2b69d7bc69767fbf3a08bb2633e922676245e4ceb7903bafb3eababaf34baa40a36db1375573a6f1894974825d72c60b6b4c71490301d60421d2103d32f1c124ba4de6e840e8204418f246b8dfe854053aadd564cf68b0f1fb4709543e1ea112c2e6323c9a8667b8371039621e8ef68d214c5959eaf0251b335d6565dd4ddf4e5047f9a9ca7c6227aed2d460af554f794cf514142b4b59954cea282b4b59af5dddba3abaa71eeb9e3a293dd69d5ad909ae521636aa96acc6a56e487752ede1870a448e5815a25ded3aa25fb72113d8ac5a6769bb9440a5e5b45689453c5ef46e9ff20cab88376cd890b677a40d3df73b95896f22ecb5bcf14a2e561c6e4a13e8bce420fa5679bf71fa75e343fa0dfce9bd1d45f53e799ffbcc24e543ab0cf4eb1fa0fec961820810cf7cbdd34580ba35f6deab0b3b03f80881106eb42a4668e4614fc49181c2768de88d5d02bad8c94d5f79024c17752c1d28d48a95d1a33eb231d54d567672d5e190ed36fc43e529b761d345ab8b4a9799dee5ac7c6565dd57ec8d4fe937f02b17dd705f7de531f8151be3be823f3d067f3ac9c68abacdd3afd5b65279263b0662af6f81d0c83acbb5371158c39a25b55abdf28375165695f9c456ce62652d67f98a65b13ef1abafbcdf62899585bd62eff2967f5f59b134ed9259f9eaf09ccccae177accead7cb572170bdba581d55bec0fedaad0ca7c62f0dc5967a99c95b11cbe654ff0f54ffff4ab295df5cf6da05e027c41587313b73f06baddc573282b955579b4abcf5285f8ca8af589f608a8a4610e68a34ebbdaf4ae6107cfe9f4cbf4eea60a1bbeabdc3b9a984cbb4467dd3461dd632cf6544c3046a26e34699799beb2b2d557de5d3b4bb3ac0474673dd6bae99a6663dd5956c68a591cd32f701367ef2c4b7bfc81b5bab3fa2c2bebce3acb46a199f64521cd5455ded594b354d8ae951a5795714cd687c53aecb158394c0f02c286982cc7253d34a4450b4e4fc17357790aeba0a481d21c3f54ace9f029f6a67b6555e559bbfa2795539599b4ab8faa7d5a93dcfea9f637d3e163a625b1ce42cb4adad59b65a0763533f1c35e0b0aca445a48e54363141d903e47273d3682978da08d8dae591949e4857e42720fa8d193d060a7ffc8a1819d9e84064b211dbe89c49ecba760807e5148bdf25188ecb89d54b9ee211f778e90f1e8d7c9e585e897eab2c417f6cb477418ea6ecc0d51e15438956f8f3aba73a46f568662653eb1edaa97ded993a74eb2b193ab5899ea27a753e97495956da5eddd63dbbb94956da99f5819a75d54517248eaa7fa23091ad8e9391a2cf5949aa3c14e56e61353c58ea5a3fbe9b14e86d2c54e9eb23295e52c6c17ea5b35bd54e93796f99c5c762c1d26d3e9a68b6c8cd2d6851d0e968ef8eeb1f8eec4cab6c78b6c0c75ceca5247c97c62dd53568673b36a977cea27efacd62ef913eba39d7bf74f5b82b32d866c4f693ec4510e9a1aecc99f7a4079b027e55b5b38823dc85e9f47a32aad51a75df2d42e5395cfd12e79083b19a1d302c19e3cdb1fd86b4141f9261f222645b1cd7712caef37f7c0197f00d6008135a6cb40d83519088c99df5ebc405378f80574e7e78b7f9a5596a0f08eae6d2a60a0a5932ed9b3dc218ca563f4ed3bb47337a5d8710f7bf37687c60b6fc9ca7c62259795f97c3ba2143a50020e0c0317203d02f30e21d91bdaae09fbeb26771e66c1063f70602d9698a36bffaecd8fe645b59bc09a9effa21870b00ce06b42977c7703941ec87f3c8418058c99a20fc098f9e2053aefc740eeb469d7bc0d5781b2ad41c35e0b0cb42f43e288b2b0350cbf45bf299df4a97dc48a8730d8221bd32c6c56b445c4abc168bbe6890885d685f55a5ea093393e416bae4546fc8a2ea594d60838bba2c7ee86ed224d0d03f73b0905f7a393271152389e943070267ad19b89317a72e69246f0f30af247743abcecbaaaee36fad1463435e2ccc62234407324aa9c847b8038c8c44e3ca18463128bb06bdac8e3ed5c67c57fc273e24d5c66243840cc5c6295251e6fc5e1ee00699dd6e99db7bcb413da08146314712836d1974b98a42c81ca6bb78d3411ee368cc2a1a56f3c847b04d2d1d1285dad7ecf939101521291f0ab858c00697414a55ba3bafd6804d694fec405e2166a420a24dcbed651441a2d2494448adbcd54b0d7bde4de522c728182d02f02f50ca848692b6da56a84bc1b13f64aa54b29a5942f7dd4e1286dbda4d44b98b0d7f02cf40b34f6ed219c6d9d76f5104af5eb1fb76350bfe212140e85432351dcd19d7b10dd3958bf232e3c57aaa4d14b0b8830461cc5108eb30d24082be19925ad736a82c25cd8528a6413185c01c83b0fb59536218c40d0d5d734693f0a74f2c4282a91537140bff8e3f6493f729823c73b04a48234e22edc0eaf9686fb4d0963e28c1bffc55b833d1af662c987ee9b611f66c098f8928d3026769cf5a16f69ab7c4b03205918f6588af88eb640ad6c5110a4cee5bb5c6639472c3f6a06c2179e0aa15f84e7e6f8298a714ee6f8ed94031c29f206140642186710c238d3d18e10a3b21d203a7c3a0345263de00d92725639a7ce27e78e4132194a4d9d089e19595601462f7d645903f858435048f761310f7bcc40db7dc8608de9f6e87e72be10fd4239fd8eee2747393dff44859329504d476787a7a705091405f58f5195b6ab638d6ed32e1e592362a6ab8c0802c28a0802c250aeb232994cbbf837591f3038eb36c003cc4484f41f3e533beba8cee71dce41798182d2fb412a706cefc12a15a654d81108932802e8823f39aa94c413b3e5787bc0a455008fcdc7c6a5126cf0e74e1a1833673497c64c8e7ea17cbe47bf54563e1f73fac5f2b9aa61d383103b401a32220c58c3a35f299f27e2718375fbd6451bf6e6a481319388e59e733f5516c2de64214ce4f479ee99a7d3e9743afdd4037bf3c4d1e0ac3884cd9f5adefa8e96d66ff8f41dadb7b44e87b0d3a97597ef68f98a96bbb458be916f59083345201833a98d9c8d3f2d42e81789dc094f829c3384ccdde2216c65e5fd1dabc7d57bf51bfe0a0b0b0bebcd62fd466e57a1a0a0a8e255f1aadff0510e6129950555aaca5bdf91f2167bd34f79cbdef8c4fa29bf915711a27b606f9e546db8468dab4a44bbe6532a8f76cdabea0fed9a2bf32a731569ec0061ccf34c086b68c098f90961f06af322db6203fee97c987843c104800001d24ac0b8fceddd70d549f1d67420d2d84694458b7dbb8404d98940b8236b08c245894c3a1d25528e92d31ee8152f77c17a92d55bf45679e3f03e7300d2e01f1146bfe6a4c5bb95c31bc68794000102c4ab10e6aa10f60a61b64298cb6da9100681bc404151f78b406255b93d53c15eeb28d154d866d25dab3d8512f4eb299a0a0d85fa864269f0a234fbed7053f77151134847c8d284bae8a63a94e59cceb942fd62a11e731fb0d69eb2da533656652d5ead0f98663f16cdf52e0a75162bf341d918cb63acac7516dbb297570bdbb5d20d803b07c674c9f60fdb38ec31e9769f763bfbc5c7af930c217355be718b1af397caf2567df11c5cb87091c35b56d6e2395cb6e22eee0306a3b23ad65f1e63fde5dd5f60bc6565adc3b8ec65eb1535c65bd4177fa90078abca5c45e52f5edc072c463dcb63f52c8f6789f90b2b6bf198cb56bcde074c46e63e600060f98bc758fee2f12faccc27dad88bcb5859eb2f2e7b39cb7dc04ece400c847556959580515928871795632acb45fd49d23f220de60084d1ec01580e15c256a2aae15021ec24c5a2d848c5d6a26ab5f54f6be1ad58f1160f02c2deae7e0b2b5bb1e210d6fae7ad38ad4eaf2f15b66b735556f716aff72aabb32c1d2f5ff11d2d5efff2155795de5d7451eb435a1458dd09ac2e771f160f7b7d1fb7ebeee3967ea242e7883a1ad6616941027d798bb7cef22f26b169d597b7f807672c95d5bd47abb23a6b44ac75161e2c5696a3a5a475086bf10f0eb55efe41a127e95714ea578be5fda8a4458db3973a7b65dd56966bae1a6390178586b89cbb04509c9fbc7379bf5a6f69fbd16bbbc7d94b0b0bd9d5fdd32c640f65bfd8440e7ba6df5057d0157f82a951c808bf5eac6497e906e4191f774d1fc71ca8dc8108a33f6a55066a17a9f214957b5a2adbcab5ba7c458d382d4427488e0bac058b382c9c0363fab2237224ce8a0f155e6183509ba28d3d4260c07406f5d3e3a3109e81333d3326203c336dccf9a15f11c627136a7572268d503506610fc8e9a4a6aa69d5af1c74f5d56d5cfd70fa01955645d96b21426198b2c4c250fc990519893f331ca573277a107675143d06f54b9512a7e09710ed6a2622d09b348b42fd42b9ca7380fc8841604cff050acadd2f06e11e837c12f07165b6ee5ce57afb8a15502ec2404268f78f99b87dcee97eb1de2c3107a773bcc12926e917cf4eefd76c6f2222d9582a8b7beb10c6aaacaf7c07cb5bf606e52c5fb1373e3194b3dca44058ea2d873054cab274b8bce53b5cde626f7c62276ff98d0a6577b4dce52ef6e6e42d16c25096f531cfec709c3e3b1f62904843bb3dff8a65a9372e6f9d556f7c50bf6939eb5f79ec5fe1b12b67b9a9b6beb23cb662391bab90f558cb59f6c687fb0dcac65cdeb2375a77bf180447cb5d5e61bb5ceadbc505cd64d0ac5ddcd3af1b9fd46f5afef78dcb57bc3f3b968e96ffb1963fe6f215b263e9609de531d659ced9d8ca5bdf5c5a585f716969b98b4b4bcb216ce51f9cb5b0fec970288ebb0db338ae557f1842568da767ac027427bd3be92a9575faca55beaaac9365e960f9ea3b56ae7296af86404067590338bd7b673fd6909cc3581fc2b21740c28120d7874551f7714ff77173dcd84906f411a81f6731a879d60c5d9caaecbe5269bb3a096830864f8231dd479d06d9f4dddccd4218c337d9c859086ce74cd7bef8cd56205eee71f428047b71492c1281546a1c8a42b19f3205ef441af1061046bf1b2a0172bb3b0730a64f82a954084b8130558530ad6a77041359e804531f945198c4fbc52844c9131b1761af57401408476442c86d21daed330c600dc71b0b8135a6dbdf4a96a5e3743a69b1930f58e46eba0f1867593a4e27ee32cec6a82c0add072cbe04598bf17da2c5b709f576a16ea25696fac9bba3f42714f5d429aa6eccadfa853a41a15237c94e6ee26abc5ebf4e8f31d3663acabe5df1a49ec5dd264523036732ac954a27aec6cb4b5809acd96e9fa3689d7ea5bef2e857cdd35fa7509dfd7e6a57dbf6fd72877d54a5d574aab674b8c3f493bdf189d19f7ed337dd646fa88d330b6125fbb18a88b7747ae1656d71b32c1da793c914856e9240587ca94618c3492130a6ff0285908a727b2bc2334dbcfaaddca8c467f4e21821c09df4f84fe6725c041242b9fa1580fb0872e1923e55282a15ca515aeaf4e6e4a8c7d4e963a9536b632747d19f50373dfea4f668571fa5e620752c1df4a7c7e8b7d4351b439d944a6d2d86a0fe41a121ef226ed5af1b9fed3728daaf9b140ab5cdae8878b77bfd3ad91b1fed37a7d3c7bf5f267b632ad1c33eb15c25a24f37bdb2b8471d546571d688183dea414058ccb1327a083335b5dc21ec74ce96604ce99504634a87a5dbf08ab6ab64878000c71a0064ef1b42e66eb75f3c672b106fe9b1c66a84bc3c547a93dba52e95acc64a1802b1d7ec99ee0f8c6926f8157170707e202c8a279c6802c96dd8178ddc3e0fc1987e18e8b491488b0d846cbc42050f871b74b591f618bc063fb2326859b31b1524e59c175128e5af9064a9860d9ee5c4037afac04808ac222e6b3017420821844bb410f5ae94b72d33fa499cd612fab1109cfcc9345c3ef30b7292e6255712b92c7966239ef5ab3bdfe6f4cecab4cba76fca3183426d51d21079445d95331750bf2077d6a76d8431237e8b254c1d337c220db08609ac6127c0183e5faa01bef809d0c5ff82ce163850052458a845f48ac3dd94608f73944035e68d6311f66e6cad0b74de1425d096d204da8f2cd42ebe509d3d3f33a07e9950a719bcc9cae8a19d40edfae95777feec695d086177687f62a6a3ac0cde64674fbbb8422b43fd86083ecafa943e38b44467234ebbf8dde14b13a7ce2e67e732479d1e6c3a53084f0ed8d04a26ede2b6b205059d1268067e0e499c7ec92044175f9babe3703208f1c549dac587e7ec37d37db3df8b5bb2df0df7934097826442bbda7ef20826ef86cebeb89f646267781ef2843c359515b84d40b5e7f8f183bf73f93f58ab3c835d8c9c6bf4ad23e496567561876356d600fa2d41a0a2235328b9a359596827489226e208286c17b43c13c1d8a6ef02775678648a24f7e403ea4921c9422c24c2d938e5091b10cccccccccc0c734068a38215fcc731c0d3a2e65df94e0901659600208361066b44373efc1bd29bf415e9f231d2e5d9c6b4372422f2f0066968e2c2235c78040d4422919e209c13a9f021eaf4c01e1f085e412758d3285dad66f4443c27f310cc7ce6c3a8137560d4815107c2396b8c5230ea91a5e15318d0693f1555f10ced027db76e9f16a130b061c3e6d1a8650998579f9491233d258152ca4b3c17415be9fc1cda2b302f04b4ab1cd60acc4b39bba9a8a8a8a8a86c7143d5d161e44e50903be1501ce454aa76ae6a73a49d560894cea9d8ef5705a22c04508e3aac2c02c03b81794fe04fea078f622b102fea360de9554e5050e54405a50255546ae928d42fcb6be51fbd5cea2cd583ed52a598dedd8655fe692837dd6b15fb6917a258d5894dd95a3a8ada137ce9a62a7f0022077b3d4e432d3348e192153656fd5022e7c7efb6bd7ba996ce7dc7663beb59568c31c6f87669321acdd67d7b897be93bba6fe7ce22912c4b07f7ee31eedd49242be3ee03d655ad8878d94589279d96c58ab688d9854aeef7c318d681e1178439d1041268a4868cd64a0bc38b105cf8f80148c3c581e0174d13b0e187208267560e3f019e6139fc113cc33abc8c675a878f383cd3e2b2e22a9d82a23a390ccfd0c37b2e6464d0f0cc76086f736191c6e8f03dfcc033f5f088090c21440f162cac0258dcb404dae25f2c72f92cea178fc42b8800d68c20d2189d7f5ee1522dabdec7ad404a1b273b62023c73036a86c58baa9eaf009e81b9ed7f310b37e6f5e20ce3e5e2ae7f51080e0ca3f66017ff45e5c12e7e4ccdc12ebe8b484346182e3cfbb9c861b5c2c1ba2c6c97f7d35b7cbba19abcb7f8d6a285774385b785e7b518e2b217e004d0a29e7ec34b45a19e3a0bd4597c63c102c502856251e18527b7611635f50da6aa5447793d1a825c68840b8f4cc1e4be7eab555555365c2bbca25a510e53cf405b675d010d6841035d11cac183e52aafb5d6785fa31330c645a846243506452335ce78751969c42b04895910a211c951633caa0254b501420c518998c01155c61e4e8e123a71043502d9e90285b9425128e6806938344435102724121f63bc9173584908cf48d8c333f046e910e6fcf0587ad41e638c31c6187d5c28fa0ffc8a4df8c9118be7c12f0e16df23be01f143c41331019d1b7f4414c189e300b328d8eba08d40d8dbc1a9f1316845bf82b01863d47ef8114db1fd8ee039ae875501851fdda68766d107697130fadfef1e4330f4a49de2728f583a44878f890e634cf49195c18b2c4b9e88c0a11e4210015f344f28420c98b0852f28b1048c7f047ccd3039410c70d0c4032a38030c4724850df214a8ca33fec14a708e94b37ea16c04d2344a57abdff378c672c900bdf189a14e7f73f294cac5e1c248185135754d4154a61e3b798a7b503fa9a8a71e3b968e93937ecaca527ef296a91c85673ca4c2332516a258e08ea56375d463aba352beb26d63a8a7ac4ce5942e8982bd9af25455f946b14053ac8a95ddcaac7cf5ef3632bff189b15ce53729bf61b139fec1d9caf668574acc69578eb81373e2ce0e5529a5c2e65887fb563f1f77fb9c96b523953ad58fde13f773b99fea47c4e522153632013aa91086f2c5287c2aa0d19aaa1e3035a11fffb85ce90f9ee91c2574804c38cfe174e52036c2332a7c3ceb914558e466049ae72a0c76dc76b2ac1df4d5d4f53be2f651dd61d7f3a6eae3768d3b8830e66dda08cf70fda2966fd35b250980642d37d2806026cfaa7667b39994426c62d4113648434a207e60c943b4fbb8b1c20bc32fd2f9d7de1a0b1da2fdcfc55d5cb95d7a32645cbec8c5e57737ff934540643c81819ec0408d900c044c0fec7d3246c80b440ffdd8ac01d0b00b29e53c03fde83c03fdb41b4f5f90abc81c85b00039c98f4c442662119ec8444fe4e1d1af08fb6092d37983a4471e5a672967cfa35ffcc1a124f1434a2e1308db56ccfc864966c4932a4dbbe2ecce442cd28012458031c6186354c5d8b13b76bc08aa5a30c628496880301aa1217c4308219c1a0d841f0d841042282184104a195095130f053d4971044e8912172fd04f7381c2050a17285c94b8286959038d73a24e30e744ed50d9924494e204062aad842ca0fcb667c19c9f7d557d35082184100648a0f1cca28a0cc0c8d8dd17b5a865cdc15e8c316a1aa4f20776a5faa15df12d449e8082d8a218194618fc68c32d32a0f129f0605a4c6e8451dc987284b608208450d4a3914a0421942d31c8c29c2b948013c2c76f07519d775e8ebd08610caca22b8508e1b0e335ce87c207409810c0f8961a50d863ab47901006d14829a594521b7df2a85a4da3b44555ce29b21306b186d6aa050c34da306bde199745c39ec8c276d519b7a504310c5b1342412b1eb4b240e13fad0d8769d62ee1a8574d2d84b065c80067ef6b776a37b207a584504a29a59452521184cb43a090073a63981da7099a14281cca6f48614323e46d3b81bedd3c87482d42ab8a3f1494656bccfc969160809110e6424da394bb71228f4657301b0861b0011aa59ca6c1254c44a59ac6518d0a31c4131f95da12b8840a0821330a84a40d1291fc813d8e52c6286594328ea62084f8446c654100ff11282cb241988f9e6a405b7440a300241f328ea7c9256ae0a5f14e9b020aef459f51e3b3d135283f478f6fd768d4d647bbe8722492a3d137ad0e9123696dda351ac9d3dc91bce83bfa53bee5f91ae88f2c04a0900a3608c38a87b0394404bf89642542dbba68c1c1093648c35e94e917aba9d0218c47c71885785adf077983e24eebf410ece9d776d2776c27d91b9f18ebdd6ffeed3b3ad6bbc37e9158d2ee301dda1b9fd8ca4fbf29ddf41da7c3437bb3d29d007090767200c6f451ee26e2643ddd6dc44926f49b33d22127099a4153a8c584ca932a2b9e1ec2b8ada50a9495dcbe54026bfaf20bf03589005d7d2a28994f50c36d4906960ed2b9ef5039f71bd549dfc19dda1b9573b5850a147e85c845d4cdd9ca5d71973984594b12da32055ab2329f58ca577ef2959b502f8d4636e525cb8a5f1dc26a1554c9cabb3485fa05fbd5f2864cee8a5d22757ee92959556eeb2ce71f2d7be333fa4de92b67b1372bd6865ba440bf399b410de7105d95bef258e92b3256fcc8c658de6265ac78086351bdf498eaa5d65536a672162b6bb98a95157551a6a0b7ac7f4dc5369a3fedeabbd4c933816e7f45aba59d2d51a0382b2a84b9b4e0b4aad84e6acb536aeb2a957555659de59b76f296c74ede82f2934b1b4b79cbca564f91aaab3ca6ba8a95f948d5a58da99c6565a5abb0b0bc24c3626ddae5a33d47bba2143a50022c03b04993264d525ff90785585e5a394bfd9143035b79121a2c25e7ac47037a206a6d8106c198fe4a9d498033c95c22c2994c44393f7e247118843a7c330ab79f840c0c42007c730a33bee98492c461afed8c56e6c81f2d28501267ce289db319853867d3093867124a2965923a747b4829a7642113d2b9ede7f6b4aba22eec70c8cb4a56dad876ceca36db39b7e1de21d5e681b9b033008b5b59f1b2b2a21dc04846c14146480984bd0e9a22db4ae6ecc8144edc288318c9bc52ee481914141434a50cbac0ca87885794442109b9243c14006be26a0574a401114d77235d3b571e3d7828803986902b5f66e64f5e0e3261668e2b5c82729c0ca8e8a3e9430d1f68d8ebcef4aef361865d8131dde1908000fa9ab83b77760563fa5cddde1d02a2adb26449369683bdd14ad3a88a082d41687c93722e1cc5d18887a0430620238e92fbe9c18f744212867071c403411b99f88101bd7d0ece88ce4342263438333a54400f1f0de09948834170e1b96adbc8887811658f8573476795ac008630849d4b7afce15704c2121c1c1c246023981d19039230c0fab1890cdc7e4cc233a7dbf0c892266e3f0ef5a3122ed503cc94d40300818a7a8020e0b037ba027ab04763a53fa0d3729ae40141ec086394e1291a72b01bc2d56ab5ea86dd3172363d74afd8b0f5210c6c9a2fb68c1d3b462925c3181b324dbc4d941d63ec8167a28c4cbf62e4d80239e5e8f353fb9cf2736a932492a352105189249274b58adccf5422069ed63fade4091e8a31e870f44b6b27ee2a3e119344243f4288f4cca72c81f69c90295dfd9e8c0c0dc9da6f754556c5081dbdebea42cb43ed9a73f42ff64c514f7e64d16d78549b70e2f267fc618ffff3f3f333d362290d5bbf8174ce7cd9b48b4bf9ea7ceee1190ae5290eea578a89c7f39d950ecd69c6d18c5024ff220eb71461c41d3ec61dda58f7e669d7853fdd3780312c7f2ebcfce1994ff230c1339fecb9cc33b208cf049da844fd6b1a4fbfa06526dd21b532959baed9187dcaca504edf5d2ab5b232d5e1351b4b3dc5ca4e9e7a57d4559d8c5252ba552a4ff989bd41f9c9593a549ef298ca53aed918ca4f7a746694cb9a12ba243289402a56e6135339ca61bb5056ede29f5cc56a3da472947fda122a16b60bc5a6fce43dd4af0834ea5ec55675d793948e8127d33188af383bf9d63caa979a07e5a4e6e920f40eba0628de0d2adb4327962f3b1c116834fae1cc48fe8ce4cf48fe40176b9a94b387b0268e22d56a28b1061864600d28f00073d091350041f940065da8020b7090861c18a3e12768042900b2c408668089a840575703156a18c3fd3ca11c9642c49146882d916c200d483610c516485490729248453a24229168542af1947e344d236ddb067236b07355489240c3160613aa0a27aeeb3ad3e96444d40492247a80e22e4492844f8a43a1501d8e0ec6f02b0e780e49123b4892e8e1a6c954820205854f7aa8504ffc69218860943caba9e0992ff6bc361c1c1c1c24604d20b9af17183c928627b600e3c7288a5ca6171e514390cbf2b284f13bca1e9924977ff8f023d0ce14580a976350504f4f6c3885261a59da2e513c4c0ffd1e83287dc1692594f2caf40b5e082828fcd19d17c2b04d01859f0c959161adc22a23232313354a2d4718c58d6dbfee42465932abb0f1214c1ddd5310e533c795e59201be231c3728298f47d1501ca09f8cdb298f8fa53c9e6d0c852fec70109182f2d551ac2c032795a79c8876f5798830691aa3307385274f49b13edcdf78480a8ecae7f493889b1d11ec35f30f5facb12502e55b87527bb4cb67740d2eb9a129d491a09f0c19343544ef96176da343274e27ba6da7d305ee76b871c7b57b69eb6e3ad7eea66debd8c4fcd2c6b1fd8e286ddbb97e3e6087a3b3458c6e89932f55d159b3dac80778a585f1d0c49b48e772bc0c6b46870cc44426d772788e67606485574a19234695526707c80a9d15bdd3a951eff44eeff40e0a672675e4cc7ecdc4ed1c76310b1e3ebfa53881c25c794d4b59297b26ab3bbc9f46d5401be85b33c11eff00c1bba291f4ac99b0b90d778ec7cddabade13775371b3b2ee86c2cd8a5ae970a8ece7e3aace43bdf196fa49205e96b77ce6c665c4f82775ee8cce89afc766fe926165333ef3b6311e7ec3ca6c9c876fa5c975384a2c01c4bb954a77717171b99cd9f88cc9d3afd78d37ca8bc370f118d6cb7338d5db437ead52482ba73a329fdb8d5419c41ecce363dc789de6a5ceca7ce669ac8cc66f7cda18cd5f5626e33467e9583a74f88cc774f80c2bf391b9ac46cd6d58d90eaff946c3c665fc751bfcb23edb67dc868d21dfe11fcd651a3b7c8bdcabd27c46d5e1366acd8f1adfe135f566c66b4e536f649ce63ad41b1f99dfd8b80ebf516f7c00f09bd76f7cde78ecf51b07808dc938cd3716376d5c87c76c5c87d7dc86b7199525731af701b351593296958019a7f1d8bd8dcbc8d8d88cd3b061c3e2d810a25dcc92398f76f17dc0ae65c9582362334ee34140588e76f16958d98c19a7711ba76161bb66d823a0121bd667fbeb32fe41269b8dfafa8c2ae37519b7611b36987578cd6f9c8675f88defa8398d0eafb9711a1daacc27a6c36b4ee32b1d0d2ba3f119df6cccc66bac4c87dbf8aca80b3b169be3c70f1afff17a8dffd0e13f647c076e6ea57fcc84e5b3cec813854c9e973e4b750eb1c77d1418f685fdb418ebc27e9a8c3a673c53c7469d3838bc4685ed72fd86771a2d6e38ebbcd84f3b595bedb75a59159b623f4fe68e7e6b3f9a3bfa8aed37aab93675f7fcec704caedf12041a67ec2122834a561ae989613b5eb2c8da63dbece7e3b67c62a6e64b9775be54151061c8378fd4675d4084219f7aaac2db1a98e2b68ee8917a4b99ba0dcb9a7aec70a4deaaf1ca8677a642d837832edfe5d56ff65c7e8b1bea3773ae9129349fe05aa60e87caf64c85b0edc4cdb46d1e2a84c91c86b7eb70b0b05fbc30b67f58ee66eaec101bdb3bed5ab162c58a152b564ca1c4891c72d63c4176608c7ec5b0ac235947b28e641dc93a927524eb08898192feb1d08ac964859d53cc2573095cd12de58c67fa34ce9f4a60cd8af3a7cedce9d78cd79839ef70fe4cd2afd7d90cd08333bca4e52e87dc5b8b9b51653e31198ff11bdf50dc68c66d3c36e336accc87e537acecc675f88cb3d818cd6358990c7b63e3324ec38d6acadd52dca8a66e5c87c76e5c878f6cccc6657c7b55994f8c87eff09a1b271be7cf54994fecbec603a0a4d5a07363e8e000c9d99905b9b0f31047e7b12b2caf31ce1fd5d7671e7b7da6c6ca6cfefa8b8dd57c072be3e1353fe9583a66bec36333dfc1ca7c5e1e002b837de62f36b6c36b58d9fd0e1f55d43d19c1ec8d4f8c87dbf88dcd6ffcda1b1e6ee3317ed2e160e9b0f98d278087dbb81cd578e550bf6cce9749fac5830c8a714b2f0fe5f9a6e246726663653eb11ae7e1b079b0f11a36d6380fffe2cf12352c6c170f360acd84fa256716553f6319ddd3691463341a7dd4e118a19c7472a6027ae336fe499ecb359255aee99fcaed3eaa2ad764ea1e6730863f1afdffadfdb451b573c95c025d3fa9c371d4921b56e613bb711bb71197acf80d1b57fcc66ddcb0362ceb701991dba1d63c46a5798dba434f1a750ed5d429b4439d3475be6666b01950cee725aa33eccee9978b6db14c5a2c9b836447ced8933316bb625331aa0cbe0eabfacd24df04fae6ced75765bff98554a5b47e28f7931f73723679be39130325d98f8d68312ceb4cedce39e79472c633504a29a51492331d19aec1b3fd2463c343887e8d4c5d8e1e1ba94216d0557780aefe56fb25388401b8eed7e3cac398a6b012217ff90224661e685b84f1b48d8391860b12175ea330d2b0485c140e9529ae850b46e2fd2612171dea0457b6e139eb973c025d7d2858810bb75f535c8a5033e9973d8bf79ba75faeb738d00def77908eb65af1b4abf9095823fa4b46c6f3e46c26672d26f4934d346e1ac9a10cd4ae1f22ecb5101ef63a881ff698e0991213ae162d0ef31dae7bf6e6e5aec3d81b9fd8cb5dbf81798b43d80d9555ba7708ab9555b22c1db5de70cfde78bfc1fb0dbf9151c1488343e2c27391c68b568c96151c8c346890b8f07585e399cfc765f9c9443b1cdc698783c5b28a8897e5f0ae9cab2d48f0d3e4f62bad2af69afb57ce418e3bd7e1e056be7538564831b57b7de69a10528783e384b0a8b6dac77c078bbfb03730cee231f6c62706e32c7ee3e2f610b6712f1ed38af1e2312f5e3cc63b00fec202c0fa707ff1987fab255e58d8ae184be301e0397ce386c4c4d81cedb267711787717b17dfc1e230ec59d80340032c9e83edf1a2ba784c85f1189581da25124a69d9afbb285c0cc7a1c454066a71c9007df198dfe4f0184fbd78cc632f1e73cec672788cdbf0f6c2bd705c5137c63c06f31819873967632f8f616533464076091a6fcc63cc6e248217f6c6a7f59b98bf780ef626c675f82712628148a85f232096fdb4115077e9f6a32bac89eb70702f1e8bb12cee391cc25e5800bc6563312c8bfb8b43980e96b5a2c3212cc6b797ca5af9cb7dc0602a6bc5b21200f397c7627ee32bbf61653e2b3606f39797178b8383ce612c6be51127c6b256ac113198bf3c08083ba25dfd172b23020607e65fc459b2c40b8c8d3c3a385ce65ec354192bf389c5dcbbcc5faa77ee562e63653287f98a8dbddcb3b298bf7c73a92b97a93b3ca6d2fc556b3e536b5c46a5f119d5c663c732057b3d5ab2525d6ea36a38edead7a89a4ebb7af59a0adba5f21d2a6be5104653592b7604349ab1581f70b82b22a1110c17610d372753212ca642d8ab42d84c85301915c2665408e32e0886795fd184b07c45c462352256eb61ef9f2644c47ac9b2bcb3de4b9d7118ef332e23e6308fc51cc6c5635eb23199cb605ce6e5458695c978f90c2bf32e63c6bd38bb8ccfb0f14786f5e13ee3debff8b3c40c2f87bf38771b965173b8575f7c8b2d4071283e319a8d8ac496b7ce4023a0785b2af42ec45e9774b051498c1a01504f4428674549442d381009954e27d8af396ba92225443255c423d281512793a904a6baa839d49f7ecd19cbb2d88fde6f756d7a553f2de7f655eaa7ed7ca38b623f94fb8d8004a0e47e73f689763e110e0ed5671b017976daf09b40bfc9337984f00c895f13070707a707d69f3fde6d51146e7f168124c89148a447ef643fad9b613e833358b2309581b63a0406c6724ebbbac55dafbfe12d5e77b87e438bbbea5b54994facc55d7f81b9f718cc3d2bf329fdc5ca5e0ef3928d797759598b7b9f2c8035b0491325c09852e9352a8d4aa3d2a8f4d8e128b94e725506d2d1ae592967bd5af5c8f2681aa5ab959cf14c86ad11f3f5048ce97bb5796adf507b561be60568c8076cc3cc1f03dd209ee1998f7fb8be47404e6c240e851399890ce11d2a05fd4640b73f02ead734329100f10cbc7316a3a6d1c843d08699998978171f2efc5ac2066172ae76b72844cdf0a337e6249f25254a87eb410b19905c7e0b1e2943cf455d78840c462ec399ecd8cccc9145402e1f6a25e09c1bdfcd397c031c9cc9a9381a43d0840b923489820892f8fc00d2114519a230a485286cf004183ae9074615429776f9300b3043e18c838383c3731f37a8c20b54f889028a2c3c0116bf822f960d8c800004559ca14814b078186364c3218cd2d5ea9a76698cb093100a339b459b186166244e15f78342fd810823e478060889144002281c510d4f868c1a32682e8ba655bd3427e848a3aa26a817638c30a325602c12819860625604de1831317a8c38fd82b48fa07400dc97b570a913ae35027e8e7422902328a52b1265e6d16c061b6421f6e0453045d0855ab8f0881994802e4acc26a61333c9c74b9a8033f6988758090f05a8eea844cdb485498c3a86664600010000f3130020281008064442c1683c281b55417714000e91aa446e4e9689c3248831a58c31c0180302000000000880c404a006e05333fcb136f8ce3915aec53dfdbeabcaccf50a7f511e295e1638a663de69378178986cf30328df839b6796d146c6698fb0096c63fb8f263ec261dd02f77e809054da4ad961f833f37aa773a95fc8597e231b053fc2bde7736a32db88e352e2d653cb0929d055f0fa52314b13f1a70347590aad441133f29f558b344e7f4b5f62ed0089562af1c78daa5a9798057b22d70174152f487d46b709fd3a13c042490e2795b34df8ef6719bf12763b9d118792f33409fce52a635742cf75c2913ac5e22c4d027f3bca28e93f91cfd7fda8c3597d0e4bce83a88f271b51a00f180e649e27d048548bb01f6d326a65721327f8894717ca7f124c8d8e36c28a58f666411d6852958afb2d3bd24f6c428674aa34e7ece60a0549a777c1a4e5adbf586cd09ca43f0ff368b07d9f118188a9af30f43b1fc713c3a7a8893e88c00a62bce7280b76ec259dc086291207a3ba6bdde43b1ca7f0e9fa595696ca5e944ce0f340d25ec139fdf3885a0f2b9cda0c6270f048b4b370a5e8a240d5e5b2ee368b232ba915b8fd070092629825e949719aa570cc72c5c14f1475628f0f07bcfc542feb2d551fe648002fda747ef64238606ea6afdbf62375d1f9821729de682399453b7b0c344e36c1609eeb386a1e366350e1d868e679f73454985eb95b82c7e7afd7242f5872c4cdac63f25a0308399879993cc1beafc126785858ce940166cca776176734088c0e0bdfe9fd62863db118dcc263f7c993aa9c2a7442646df03df021a20a2459713bf2e0aa4e8156ad14de74cb968eb03daa76a28c54a2d74e1d7b9b70ae0a94ef5309f8dbbde2d4b80ba6d2024df36525136948e684b42cdb960749f347ca0b5c1bdcd28a48463b725149c436adee4fcafd3c8be22fa7a4ced8ddb5821b68711cf73dd55d8725a82e2c5785a895640565d6b96f120a5bfe2106ae8b881344e2c915b3a17e85f011a74ac6071204d27d030edf3cec98c75777b29d070e1779d74e90a6d0ec39ec28a03d79e5830d2ededc7fa59cda3f06912ba1faa2f44757ca69e9ea9c83c85caf2001bb1ec789bc9c9e8f17a6e49fc0ca2c28f022484378415a8b42d06a10831860092a12eca0cd34152084958b94ddfd08747004689eb86716075b71f3d13ebbe4ec535a111a39226778848e43f5e5e2097525396a8aa03b87962c262149c030f3b40ce006187b0441e282c8f2019b513fe4df1e6f5ec956d2a2adb1c2b17ba2e0fc8db441686c138b839e707c9eec29324191a04fe96813f695a960b60bafe42f43cc07f35b4280a6900c7407bf9a32227c81e4642abbb247d4695ae0bdfc4240bcfb160c507ceba0d023bff747e7e219e91d135814198ae62cbdef82869518c4c7da57033ca511a214e7803024ec97ff5adb6237a01f5d3ca67503db74300d542be634df25d244df7c5ab403e58c3598b29990a603d4af9e9d173e6817127329c2652b3ebaf00011ea41ddbbc674d63d3e4c58beb2b07301c99075b2a0f3000e5ae2e65ff9cb703ce31cfc50ed51f4edb6907829cea154fb35b727f3f6b0aa9bcf218d467486443703b56200ab3df896ce2815f87ebd281519325292861fd1c7b0be1acbc8fd6ff07e56c4ff7fa0e687c061b194c89908ab8f8abe08c31d8e3b7f482d31fed8b25cadb889b47464521c37d5791fda872813f13f080fd39192c034f4ac7bbd8eed53db60e7dea812df3c1b0810720f62eed504872fc6946f4ade7a897cdf8705afb627e684fa5d94f6db4221f76c44717990094fc1db382d43475c82c4383557e14e0b18ccafc957c4b51702c65c62c010d87e7926d484c7491a0e0eff5ab80ed2219263e223ecfe805ebeb383111c8176c5386ec9810a995b306be53e6aa2478f964600ffb82a4f8cdfc2332262f9f5c494249ce76035d2ab66e33afe2b20a92629c2ed4ff2389887732d7f3e6960c5994c654a83db1eb8f2a18e336589116adabc3df06b9fb20dfbe2dbd278eb2190bf02abf783117eef0b229d4535e890784263bfee1e39859e09857de6b599d9b3554ed29631a0074bacc4ff4adbab54dcba9e8cd0b554d8e362ff9b06a045f7ea24dd3fe20f82de5a20a1bf18758bb753fa6c9e3720dbbe4e1201bd8776960acd9316842b19d9294064da2c1657f2551de3cc0118a44637590c02aff8b78fb31fcaa371dc76bfc6dc810b0e74ac81416fe1b5aa5f6682f4e82e1b616b43a0fef09597329fb6cef1dca013d204c3ae5fb0f7223834932c02723e55d1993842afab7e5da8c5344519be79e86302f076ad4cfe84dad6a65f6d6dd9893364c187c95710c6df5d61baa40d7b717625296aadb34dfadf23281103f1c443953919d8261532a094e62b67031ea8ecb10232435a85d43527fc12d089cce9f57604e1a7ca767f61f0f661c6cefdd6da11cffb965126b82f37083eae2611e3096218c3111a100a53fbc250130935cccfb6b91ef709140a5845124da0327a6ff99a3a446bc0149bf6fde4bd273d8d8bcf22920449ce183e208e9248177e7a50c3a018c8e2118f542c059f35cc8d990e16f16f3c740bbeae7bad3a759b6f47e31a26e8551044d51e71450f31c0e1b37d8a3e4f2d4b86e9d8601813594c83407fdb0e936958bed84f4f7ffb771b1b43c2bcd6063c9ad84204218de1b862dbc69e7700ce6bf8fd1a6fe9ebc529c3d4b000459f98d6b50f4b54f59d7537ab2ae755202872765413acd4c469f95dffcfba01c26ca1cd8786c49f04a9d2753a92a99affa36ced1f5d58c77e57fbb7d46d0bf60d4e96a1989eec37374dea6350e7f91748abf3f9f529db66f73f03e97c7f6ac42ea1c513d327a7c9187e1fcc7c9a8a9f70015637d84e57635453f1e6f272bc98ff66deb15d4154ce2f4478f557112600f6190fcb9a3f7266fa05ce6a79e11298b811e4cf1651dd881c677fb116b60646e2c55880f79de287fb10882aa291d23638092722eb3c9cbf3b2129302c6bde4979fdebf7dd06cb41125dd60266949a17f38bd7ce212ef02f864a1f08bf77d4092fba003e2d7a9b2c72d4ae2edb294ae3a9c8b30eac154033e11a7819d9f1f434df7bc57b9ad3aaffdc5f3eadea49760d91ed58b51347b477312b966db366480b054181e41b9e3a1ead9f052499f0a6d720fd3c917edaa1015bd49c83b49972b2bbbc39b1418bb75b73a4cb1bee3ffe5dd026c457af8749f444fa88e14d61fae15f61c10b0a564890858226acc862493bee170a49cccb81cb1462352abf56524edf5659766dff45e6231c248086127918e7ab33976e407e0e1774223d8046e821d33725fef34a18581b4f458a778d80e51bad14701d94e664441c9cf4582181390d220b10caaa34c27921bef40f971e1db27f5836a5171298dbafb2ccd87bfe52514918964ecfefc97dad9feab1a1d40975d527b440fe1c8a7cd9d75acbe03d328750107a673324a417f9b2a018b0e249c1ff788bd1cc7a3d1b6e0242c1bc2024f9c26dca37eb2fadfb3984ce87a0e0305274e36ed7b48460eaa7e0f07dbf6acbf95494556f3509d15c86a7643ecb70aa8968c5b4b22eb10f142c5ae05815e4abf575b83085bd14c999e841f4c98a4c347dafdba637bf84db2564421413050d3c558995aa2bf5fdc5b744fb30c60c327135ae25ef369331ec7898a9abb7aecec64c3132e9e7f4afb4543007b597da05324e0165927a92cb942ae4e7c388d1a659da7bec4a5ea4a56a390ffb2c8161d4e71aa4a49f977d100d2ce6825d84971e271cc2a3dc6d587af03548b5a459dbc858d22e9cc4d1c578850d3246b103c55e2ba788c8996ef3e6b6a65d7d87c0560d823fc001dcaecff69b36039cf186755e58c2f8046c0c62f290903932fb94bfc7b4fcaa1d94357e92fee2268b93604ae50029090fbf3c6dead93746487f23557b2cd37c788b8a52f2beaedb8a3a53472f675a9b061629012b66619231b428106bd5e43fef76f88d41418f81f4ee34fe9a74c5c204a03b19609350b1905501469d895886bd27814446f48a656df0408b8f0666be3c02bd645718bbde26c9109128c032acdeb21f8ca3b5b086a8e13da2a7d9decee88d4a28415cac69d306431f6935b3169cc174b0e2ae30e007cf68fb3ee37c8f25b03c581a95e2066a819c3443644d86a0e510656ed4146dd72817c748bc3b6b2cb6a4cea4a32b93e651748b637c525e42f5abc3df8099095d9e8ce657ce4681390777828ae09e39a5719f8a39ddb4430620f31a54642bace782688ed0acda080226c6cf0d074a9e70ecbe73736aea420fccfb5d50d50d8b6d8cf231059f48ca9455fd0c56fbe57a5794b827a65b7a72e6905d7a7d2dcfce958b2ff2c343745cb52c22fc50820c9dc23cd412d81e8866e9447488f7290bff38adffd321b4e024bc82a0f89a6ea557481c0235c96cd3c5901626846f0ed93ddd1ea7ae6c2496360edcfa399c43c7c6289c242d9128848d13cca6da8a7645c4f75d7f94b8308159996e1c13399c74d4ba7f125045b7999de042ffe858efc2d8b8bd77063f17e517d97a9b7006f824b1bdaa0e293fdff381e80163af22ba2ed63806e4c2e81937d73e0cab2b03626646bae542fe5bf636d71ac3d89ce6acbd0fa7a903e5ab1d2463264de3c0c7cff6b4bc3de97f94394f4535cf2dd39758c108160fd7a778e36a3433750454e0684dbea92bd039c3685579344b3b2353e437573e4ce2f5ada2576b78231504d2c832a457fa0f30f4ca509fb78e3823b2450cd4ccfbe174f6d5462342a844db07fb3933523cc742f6cee9003c07f0842a5dc82aa1aed71371c5092e2cdf1e37e0a7520144d86b38d56b925f832682d8d54721cfd8af678c85aa8d461db5efc0392c078e3c37b822ba5e5de046334af55bb022164e2a6780e9dba102134609ff118ab57b1744d78521632554fa0f4e914e22b23fd6638515f86816516ff08cadb59f0d376079be751da7386293bb38abcc4459ee4bf1a1e8b68d109255eb676a151b0e74e8e4bb70910d5e28db8335ca622f524901649252c460ee218a4e9cc762e092d80cf5fe66754337096478433a156691afe3efa2478f6e7e04ca0cb9d66409402757bb2d54a67cbb321b0d2064ae521e48b0e2bb4e24c50a7260d67015b4f2007963cf44951e08d59924f8a86f0c6d846827ebb6d6b27100b283446813c49dc20aaeed20aa621645974f3a26686a91a6f0319cf05e456bb2e304e7ecd254016a6e9464793cf79d1cf8a84f91f327829691f3954a7bc206cce778e8a90ab0b0bb7784f39c5f3a5888efc345860e42a1a21324010f948500464b40ba302cf03cd1349c21fec85862bd1ae5bd631fa0cd39038a08266e9ea173e81aa9045da0f8e491fc2a8b131bc9ff94f4b6e52c6daa4af3d661875a2ffbf8d37f5c902667363aba237a50537a464e169787c1909069a7ce67157da099eaf9ee6ab5952f10f91f6bedcf68c977c45d29876a63827426f33902732d4874a858f9b04b884151d0a59e9b9b9b2f30f56896f73e837a2720756a3859d9bfe6bbda5e805c2755848d487f5de7b41e866fa98b011c4a71e62c1cae969fd3577c3b4bb265e7600b4418492009dca4a8c78dc48848d28bd76137491bf4a9461dfd1aea3a27c6e7c07fda20260f41b34868a4d1de27449a270c0fa78f678f14983072c496a7dd6a051e6f63c4a6549d131989d8006a3d9dcb4b19856ae7878a702d2d9afdbcf060af52425de252e7d4ca95b73022bc45819d3fc0c8fc7250bcb99ab63f8765c80634b999622f7daac039511e7bf9c4b7f4b7412772d39393bfb86fab60d75dcfa96070c0871141477232b55ca7c90140e9714b334cc3f998528c311704512245573dc1d3f0118b1702dd8bc409e0a7b373c0839605127841c31f4b981cfe133cd2c848252bf27aa88d9f9340adb8ff6c0268be4390118f3844b67367ddbb14808ea8b747d3e5471a219f044a3207f0e791fb2ac73c7b98ecbb2d46cf583a78fc600c39df7a23fe881ffed764155411a3c4b29abbe4806985f41128b5c520dd10db800ad439561f4f1c6ba49535c0396e42db3f80a532f9db06ae8ecfc1acc7c20e8549a4089a254b297cf04102cdd0b78896e0c7e4286243680c8c9594174253005b925832109ab5b80d60a40c5e28f3dd0edc96c70d650fadd2d7855374aa1d500fe9bf1f4e1f9ae61606c12ca5a9791a45fe3dd288b52b4dba1399f050c3d3441bf96ef22647fb002121a631d39bb02ba19fe0c6471c2dce912f540cfc0f0df678410ae88c099729d2d41dda8067d2002e64e8b279326102143b55f089e456d2a4132cc07c8f11db949ddfd4876e743edf8c0d01b03c7ae27ec44ed3839dfbfb652b168080ec793a317c01f4ecd65bdefa10f9b8af93edda084368c7f2d320ca99d646700eb8ca99348ceeed4fda202cd0cef0b4d294835771397efab6e48c86f1a56afdc9b7dde439c2c4265b1564cf5f931c5df959474e2968e99a563f5b302a40e9e190b98260592cb54d460390ea0cc333341bfa88280db1e896d18c5c92ae57bcd3251e6e3ce319f77a7381b6a31c77e203e06a815b867b4e8d6c25b7243389f8e3ff72794a6b9356e93207233cde5a9bd2366577f78e9cef07db9dc32d68673e5c43476847e427caae039469111d139e49a6622cd226ee441cbaf2c42b659735ab9e989730dc423899028678671044410fffbbb936a10bded992f608c22e2465d3e2d2431d370cd45d55d2b114840e111638ae1734f05b710f21b017b26c93509d78317a89671951d1257c9b662e5935f7f2c4a174a8c5fee986b23f57af5cda2cb713a9480b5f78d3eb45307ddb4a0196b542af62de11a252f2852689454f24627dd4e36cbb3ceb164f3629f37b42d98b418e8c9d133332a82ec566a944dc32982bd5bc972cbf26bd45e3c0ee80b4941b4257ef991b9eb50ac4aaad9410c9bd249b1c1e6dc434cc1ada11385bb20115a3286d535faa23873378b236d83a4fbf202e19c0263688a5980b24f54c0825b6e2e06b5e414d54faebf18c050279072ab8c93eaa2cfba1d9b41bd65984efa5920c02202db6e953cd010ec6dc741cc231ac8351d2ccc7254b5966e6aa8ed306027f2e6d4807b8536228f15e8279a8ca4e621b52f7a02f253bcb1a61254915c1e3433c92488cc27efe501ea0cb2d49d3c794cf73d07bf9db6dfb313e06553ba9eea975fb24edc70494123e1ac664401775a3133e862a21d11b83e33d6fb37d606845e9f9cb5a949f0a1456620be8e9a0a91125e26b579b32ebad37edf4e1fd1c89391b2bc8010599962f3a2424466d05be94236c38a162b9af4d6f717a4e44114506f3286f2875548c4cc5b244efb3ec0fec0cda55014daca76dfadf90429482442b0049b9650c363b1e6901a21d16c5376bd9c3ebbf57862df6ceb18aaa36cec85beea144dd180dd12cad0bf00bda3bc72f6011d31871f84576383f4c6ff9eaafe2c1ed3003777648f3f76c9db114cd476d74fc1821b5c7a2eb0174d6d53369ce7adcdb7c1b775c9ca195f0a8406df5b604050467b51ef873e38582a39d974f6bc977a607a5580fe261b1cc2b4e8a23cef4c6b1eb2d7a04934c3727d32b4a4d2f1ea7da01071070ab0ccdf0fe26b2f88b407671d821811bd93e4310015bdeed29ca60409ef123309d6b2a2eae3281c2f5f48d53efdef07589dd8175bad1b7a3dec54c9b427866ce7e1a97270e926a26cf20c86bba252d79928a766e577f35f3a67df30047e193168e65ed00970f639e5a44d2d9647afa18b0e2df6a082fe7521331f99a3b03a79bb8bbdc952598e1ba657adcc0f3ac5699543893831e3fb977b451ac1539406361d643d89664667b6f4394328d2e000f213ce464c185337dba2d80c7261fdd36c91d72a17d74997a8e9b872fd53407c457408b56e8e8368371a28434e44251efdc76df6be0421a8ead9b4af1b706e96e989a763d718d5e30dc632ce88a8f45d4026d5e6b6a964095cb19083888a29943d2bef4696086bc79c82e748913aa171d0f86993f664abea4818b23adb74d40393a1dd2f4d1c4589318580197d26eeb3a614f31f16b24c330b14cc39404a29b4fe660de16c1c0671487a792ab600b8a37e7a2ab75c00012fb1f4c5ff1de6aa8ae0a854bc2512b693081c7d4c224af6a5c002a9e622a4b7bbe69eda0e98a9f002c1f347bcd549c79d86b9bf8f94c8236b8ed545fbcd65aa50c6490bb7e607e26fb6ef8ddc1ce9c81d83b5df42052c135182495a265640c4da498385f32a17a631b6e3f4d6bb5d0c42f20c9dceaa14897cc56b4753240f342f41e2a0a68a845199cca32a15bce91ea074801556a0de6164034c6b42a276b00ebb360ef1a22a2a61157e88f3fd92ac48436fb82f80e99199d430f35543a639a6a07d2eac755d0f79a301decec384fa9ffccdb3ca5809d680a517299cbf3fd713285f60aa4200d66bef335d92a6899698028ab68b736695203a746b7ca28d965ea5ad37b654f64312cc0012a53b4e84ae24ef23295d1e3accb334c20c4b42131d9717dfbe25c59d3d4e863b475599413a835cdbadbbb97d5cd744a894cb8f2c4fd42930390a00fcaa07366c5666b0345ed0b7def483f402dc2e50b5616f4d8088f8d786ede0c29c8a169ed16f84eb9b1849956d53861acf96e3739751bed0a511c013a8847ff638db6cf3368dfeb280a31a6f2e7a3faf66c7f03d6232c455a4a24d736c87304c1125dd2f26a123e452d9b26c58895a2ce6b65d88f83d8360c6fc6ab9f867eb8910e9c702020e84765dc10df43d0e98d2126c97981dce72920981d565655cba29c796d22deec0292976e81d4f685b0d8403597d8dca5718d85f3ecdad6e8dfbe82307b301e39b545c2ad5eed9688c3c338a663c21041bb51c50e7bccc4f39c8bd2c7cc50ce842db939badc0a2c54e56da21002c22a4d805e7f921b16dae93552fd85e012270515e8adb83222e9827ced7628ae3fc84691aa572932ef82355ec5109368a6e801be20037d20d19d89919aa56aac79d73b74c81db074500816d89f59da611b3d12e930472105a5cd52b3097cee596365a850481851326ca59952488d876cc4bef3c210afa58d500334cbcbac15977f6b68334072a58ddc880bd1dd590b067204e9c062d318a61a2a9fa8de376357d87e912c2ec24e012d8ca99a22a17ead0ae0c84b2a7cc66e5c674ceaf42c9d3b6178167bee461b6e7e66841c6f194aaa688310b40e3eb65cc1b93c35410b36da0f85e0ad36443cd8d729b92ad199a34b5f63e160a7054a722ee28bc9d5088e5bdf635c6037b523b5c1bfe417caa0e8c0391764ffbf199d6223535989bbc0122d6318a645a0b8bc8370e17914e95bd36120753b3f793500acd3fe40a47c60193cb662b7a818d5e13bfa8f3eba6c65669ab3d88d05bdf6661d49d4991b038d0dc1f5023db8c082461ba740288542ea6927f3608292d08c6ee5a4a1826ac0d04312e5c093a8b88e361e84faf1961e00028578a3525ec344d81f3343bb0a0cfe6f7688dedebddb6e1bb18891f4d633d5878b3577eb6569b986be6836f5a919a4d26728090805812271ef96f809ffaa12342661ce93121806aa4ba3fe8d172fa2646c0c612708c81667a690b84352b36a3d800c1372603d2189b41ea64d18d7c526887122df5fc71c19dfc5f9d190617c97b78bade5033b78dfc5ccb2ad50ed92aada5612ba501d92400b7312927229f0183037c407807cebd299b7b904e0b3958123b0cac2ab924ae33424685f2c5d10fd23580d4c7cbeaf5fc208e2a972034b95d88def089d30fe58505dc2049915535c2233ac5b0acead1488cba6149185d5b1e69688645065ba4a2f3317b0db34188c5c220735d537695a5b5001cd083e27fb584abdb97a4e816148642fa07d6abde24c41c31764813fdcfab964bbdcaf5b5021d1b668fb8f6e9d4eacd2743be678b1354ca93646c8f53b82138005f380dead093121f6834919996e9125dbb2cfeaaa39cff32e01cca70d043faecab0036ec10b73a444b719d428ce0c6d6e08952fd484bfe20450e312dc28d36414262166b48a4e4db0ad3702500403bbef63a1ade0ecb1f58fcf26f4e453dae2e5e04944ba6a57d7675cc87efb015304eef68a8319465cc642c97bee1f34464d4713e01cea10202f28050215a54241aaec0c925048a8eb67804ae484d91a856ff63c73b0c688127f2d0df6ac110573b490187199d44a112b232c0f74ccd2fc5172e0031629009dcb236efd370a56a85bfbe9f7da6e2b4fbc96b5295c15680a4151b81710774358ad2155a46ae0f7f3649d09277b3047e7d42cc97e0ae76a768cca98bd9f3d598fb8d3a134016e98ed3a8e6c0089d03421de9e9f79041ac0863ff31076491f2d4363fa4d3c14bfda187c01c83f78edf6102d150790202bd01f558f2ecf2c8c03789fc7130d6c7f8ddef0244a1e8a50248c94a601f44e7655917792fc243aaa2c05e4029acb9af60cad404571b47f1e2ee8223f4ae712691a3d997714f94916ab3c5cb2b80973069d2c4c3230964e1606aec294e1520cebea2c59b7a359d70ad2ba5014fce301a34b4c039e6d51027d014ed9b20947b5a6b44c9a77b48b4b83ae663346a5e7747ee4297dc3d2789bf840fc29e9054a71155975d2c62e62def0be1d2f0085be03670f9ef99f4e49dfe11285e1124b4d682548b2a17f9a1cd9441a3edde951724c83ef90f82b036ca3437e2e9e7d481c4012a1f44f1fdaf738d7ff4c69d839de609662f769fd9a18fb6355d33824068c9fd641176bd00c8383c4b517cee8505d624048249da56613df59f134cc6500533b38963024ff42039a96c4401f3ab2c07faf2d09ec3b178c22096444ac05e881e9c50fc7b3d20c2e0ac8a9667c000717f883e9a6cf734b547a7203ca844a3f0b417d68e035142ba5a3005d0dab93771a58967592c433985c646f840c3f4c0a10d2fd0ea4aeae251540ab6505e18c980fec3e787f6ff03e381bd2bc46ab258fdc4c5fc138b787d2397650bfec3268cf70ff06a81e23174270d1254040d0d27e252c15ccd54651dceee517997824e8a3adb35bd0da80e111bacf91382daedaa9c54223213ac79d0484954c0dc1e3bd88c3d5d38beab245a16ab912b8f12dfd67317070364dcab6d73ae958d2e8b0785505c474fd25c1ef192efda274a65fd28aed59fd43c1d25b8b42d082adeab21e25d9dde37d715b1a15869fb2cadc929c8ddb9493a6fe6a22923ba6259a2b96ec811233e775f87543a73bab1b79da22ef9fe843a58b5511e14566c622dce6c75c6a1a9721ddfcacfdb93cae223ec38dc14cfe4856497efdf976caba048c271d71c51ef67b74c5acb9e2fb83274f8a7d920dba0251621f1249fca195a55bd1e514d4c963899b99c67728a423341f5910cd6af100d466f08e5456f438838cd212eb38a126c31b9ec29f98358839d96a9d317e2bb8ef1830925c7719b7fe168cc05876e57a396832064fa4f3b1289f2e0e97948a0c307e315686544a09bcf5653c29d2103547f3d20c2ae320a29e32f5950ded803f7aeac51a3fe3bae28325af8497f3c8395c74195deb9023028412a95bc8a4943521a506b9baad710b5500f8cd10888cc6dd4662403cf91dc0c75b6238c12eebc208370704e5e6a1db630d8b111d69eb739a99cec5e580ebcbc7d22c89688e353933c4d5434e0a339331395f0786f380b1d535e4e5a44d0d4158f8b8296a4012e592cba6b607c6ff15b388695c1bbadc28de21af832c5bda955cdb3e2841c40d35012ecc85e41631f764570fa3111b6312c413b707804fac5c239b7f651eeebf1909f6a400943b403fc98e7093b5b8ee49ee6cb0aa8d9f1241b990ac24c93011c3038f6f9ebdd629d64eb05a57382bf4f8e3162bcc03177a409c6044a3893f55bd593f92777a9768a5942130f78b2a54dd8c8dca34c6112160fb3c8293f15c0cebb844d1d044964d0622df8afe6c21f50a4dc29638e08c255f32403d3ed81732b9d96ada0611d54031515b00dc106647ba092cf4e09013d593d2824b93c3cbc91842224b6c6c3cb6f174ab41e2604079b4bfc9bca311b229006be26b6acd54f499b5131adcfcc3b4a3f8d45b1e844529ce638decae7dafff08d67c553e6362734357da019b250d48094b004fddff0dbb01ec92168a77035ad0f4d866f6147d2874a5801d56d7050b8b72e71c5f0a2b478a7ec7352abfcf7ce33b812dd81164e3ec7d69d77079b88d4c48320c5f1134518f620da962d3cf51628fa16b78b4aae0a7d957b4871f5189d9f90a23b237a7978687faf33c047043a2ce8b2440d2d8ab600314e0e8473c9c436b244f92e3d893f66099492c7e5263a2c22d46ba7a175ece2c222135490109f5f61f76620aee59b6e12c335f33cf412a6e94ac43abc64653a511988d87a35e583f0b2ab1ff6abfa301af1fe0ac73f76ebcf60886b801ed8cd356e38afa24b3c58fbf17d3de5f2f08d54c2cd0670c635d0e1ad90366763b13e82b82d3a03066eb50fe0a550d596dceca583024abdca684c0bb6e6c2e34f8e68391e65c09b3091dbd098a969ad0642e724147882224809a5575bc977fe5ba50816d4d0438c42af4c3a2e6a45c4fdd211e613ddf436fd053162a955569dd29f299d9d20dd5a0a2226f20ddd88abad6cc79045874f604664f78a2a338adeba67655c56609959ae1ae44169463a33c55e85155dd8bbb69f11137953287f87f7abcfd3f4e1de9ae843787016d59de3af04a3350bc2f0157deec36ad19f45354ba875ca83eea0402e790e0fcad2a717dc9dc03d35e9494081462e1144af0b5dbbb5d07b68b18799c6c5beb00f57f55e6a42664a3eaffc9d25904ccb01439d91d9922e06c73e5d6781e27bbf1281bc5f6117eff622d4f6f16d4cf18be63591ad323c62f7511c672668f103dee5645f3f94d1f7a2700a22c921386073f48f0c9832f387d9e4ec6dfd805dcb06db0cb8aaae0acbe10ec74ebdca2a3145386a2a6a0af731bd5cabdb390a754d13764934b9b8028a0441f1300daae93d00d62a2806b70a9320b708ca65fcc470d95cf6d3f08fdf915c27cf4b515815be769e3347157ad142b48e23a547b49d2502f57e6ef6724fe8c34d7729103c936fef7976fd4741e9470c219dd04f3b9687b18a69714a456b94aea88cc1ea5866136383577622de062427c61120d2e0d7e13a533c7cb38dd575d077535a78aca19fb589b7a2ce9fc17e7b4fdfeb93a15aa4033938dfb94e9aeac48cb48c6622922d5cacc55e15600a45f8aa759cd10eb8d8311dcc604d1c02eff4e1da1c75ccba7c50aaf40e1776b85f895f51e4095d7168b7246908d0ccaaf522f5b6d7ada251908eb548a3c4043fb856c441112cba30ea55e3bd37a70121c977250f7f3af24157c98b6cdaf18e9893f54ebac80a8907ed084784c3ac30e3cc6f473fcea3c18c557fe4d69db78c461ff6b841e18987e91294a13c0da6bcb8e80c6a54cbc713982f03d194f2af47ec026ef256d637128d039c6de6b1168c6106335cf67e239dbfd9b9f2ec412ab15a7d38cd61a19647b406c4786b9b18e086e4be256ee8c41da3095a36fd7130572a15202d41a49a4729ea71d051325491d07eae902e01a24999ace1154ead1898d20f56dd5eb38bdee5060fb8313ec03214de58ae5f338d04a7fc0f23f865a0f54409471e3e9f6bbdb5291b5d5ddaf816f5bcee7c3b366fe0eac9a45b0d6ae5f78fa615a8c70e1eafb5f5a700b8a525d56ec0faeaf4b8ae1031e27e1f20296cf2f3d45b0081663276689456caa00dd37671a4fc86fcc1cc93187322c9b62638c6c07fa56c7d76f843d23e92731aa62a6be2e410f2c2d40355084b30a7fff27c669cf50dd2e86c6ece7ccc7b00483f14bdd814fb3b0d54448f84e21a70e84b12cd3d3a530187943264de9d5a549f04084ec8f0d6b4c05e8f24500939c2322dbe1d2cab4e0db659ac7e5aa6c544d050eee4528a851f295d45bbf21b7ab6f30dc34ec15a4b86bd57519e546d35cbaf1a1d27b1ae9021c067330c17d3dd95627deb586fcbc2d99a964838bc1a9a0c3e149d708ff9ba0865483affc4676b1369a82959e3f990abeb7b297e04cdeabf7cfec2e61fe31405e98a6cf8dc5e4ef827674f9392daf82708fec73f1c7df36efb271f7ccad3e2d2534c0df7a1a794fb79bfdcc2314ade73b1c8f61a015a691e793df871945f6758e1dcdd6b2ba441dc82f71e57864582c924ede461a2364826e7fe95098afa35181c74879da15c1b7a52c8fa8f14328386b07b1b30e33ec9c8f8bc9f451d65d702d8d55387e4c8fabb432b75d2487134bc2b07e3d4613238a03cbd2ff0db7c452b9b2ae698d1fc3e2c558092b632673fb5156b06ef69a3d50e243bc9319b3f48c14647dba790b845704f311a0fa4c7ce5edaeb61f1bdfd02007fb6155c8b109ecbb3688c4832a00cc07ad09abb67b7499a7ca69519a0a143bfe29b1920ea7b44cfad7f714815c789951f7ba12ad2c55f18496291bdbf87977d19b64ea1836afd8870696051ba81fe734aec5c680c6ca983e20ac448748ec8c50758211cebe20f5f996d75f432706bc795fee3ff079bb053020f014bad09c0c6e9011104b6a008bad7fc6069727e356f90a618d4d86ee646591670b04b7575001eed7b99a939e33f67fb059dfc1094853e4840f08678f8d9c35f4dcee0d8f2b64bf3b7d8e3cf54d40cb4ad0eebecd75feb3a7b4171350392baff41368c7bafb37955d6168cb73bcd096c234ebac5b9ebfc7c8e72025916e2ff53970598213ba28f8e3a94fc6268502720e6ea236c8710629cdfcbb4d4f5f5c454275a2ad48f41dea65ced17a7983afc5a736f7620ec3e27e565d0df8c9583540aa44d1c0a9316709864b841b4200c98d1485528d28f7c7ee6a76d2f3dc6fbcddeb99191fb263a14d3b458645b1ca4d2bb2e2b106e464247a2f203d817fb4a96818189a1a73e6b7db6eaf68d3bd52415312b1913be3652e3a45b7c381ed164523bca016d3b1a8f0b87878a4a43ac399fe8460bdffd070650609170cfd9494bcca830bbab01df03bb8dddad5a217d344d35c39650f510b6542b5a9e319d2107330769458c184f1c4bcb676292867b59c0ea95e7b26327952dff47b1d9b17d4791993c8618fbf115fb567ce3a58fc472b83b2050cc70e4b685c59052fc3d1798d447ab84012d5eea049d08c7d53ff514d793a6079449f144dbff72cfe418d48dab8c01db596fc5f2e258fc89cd9a719edd0ed569f0698273e5d7ff00bd6260ba617ebac449117b57188e57c911cf255cc579c97e385de25648ee23eb80897c1ce388c20d6bfa4013e746c60ca106856d0e6110e0be463ebe53729b96ce8e54525ab41a6d950a980b2d74fc522c60aaa1180b4c30f27a0340d1d03cee2c42bdfb2e2780896347067b52c482f7a62ff30c815f2bb6bdb13d05d8f4ff534b3071d6562604aaac398f7a7927cead4d90560b3dd6ee52815e5feea54c46174e7d1bf307122023dcd99996fb684adae9d0a9d7649cf7d8237cd20f0caa38ea61f96d14890b7f0387ff04018fd00e5b3406dbac0081965aed65095cf76cc63b3ca2a48ed6d2994064798bc1cf07883562c9497d005ae48b8c4d4970fa36135c554594b662b0a7e5f9db622badb8a964f6e45e32a7ef8cafc3bf5c54864b015c18a014350b7d636a8be65f44266857a40ec706570a0d8f922162432221e2ce2e96514bcea89989fd93da142d19a7ef6eba220f9a9aec90ad8adee7ee74a06b1cc26dc32039125c083fd682664a67692a4708a802e128c0891d17da14c2effc67a52943da976b43f5a0f3d760d8c084c60199c3cb93e2e9290caaddd54471c36c6be12b7d5e0494d6d7fad5170a0e6629d8e5cab24a1f3c2886034b252bd5350c0506a3484502419cca27293ce90d059de5880a035f6fd50883b9c7437e46a7c040eb1bd33b4eb22a7e93c14098be789e4fabe180488573111560686c32ea3885bd1a95c79244337da7fcac484c67148dfe575b2bd43cea225321444a95798beeb89d56c9823619099519083572283c3f58545e4171bd1ae99dd621d3f832ff40e5d3513ffaf8296a6ab879f2a0e78ca7324dce08ec8e7c9e6b4c5caba6e4d286c44bb30502b9c86c6ce406b8663c851346601396b5b9c25b57110930c07714b8ac3785109cc465881301609fb48d163a67c211d015bc8bdd0c22f0d254013ab6073f52a626807dc6c3055818dd6f5a42d3d1023c391540a6d03248cd2bf3ede47daebfc072ff42c64ac20b9010d9cfc20e3d3f70f701ca285657961f515631c3a7959242c03f81e3705f2b1fe1090d44c596bdcb628101ac8069bd6b86f8193af05da070704dbd7da680b2dba0703918f5eb845c42c4f0f25a578c1042fd6b678e0b0043e06fd5d248c4cbd04a7f8d465b56709e394afd049186dfa9d4df0c3d35f6b5de16d82ff45aa84c18e3fb251be9653c8d2446412dcb2443114e6cf057c068e49ed05d1a0f60664e34efa84caa4592c3141edac5db25251cda9ce90178b57a2c834ad1b00d3f65912d03cbf26634eaf72b31f7754388a026ee0a4c7586b9b46dcd9662baebb3bcaf8b484cbbbbe971fbd10284a257b94d8c41a103b6cf8317748ad714f1623cf8415e989627853ef88a3b9e82117a2667c3e9e37503c551e76370dc14209eec3110f92c268e61a9943e4db4be5b91394032738e67713dba2c24cf0343493244102b7ec3661177234b4dd3086cb00c2de46c596d9a0a3303631c1f0f88f53a304dad5f51a262b226e0589faacc162824090eb5eb662aac647231cf14ef8730dc8f354d85c6a7f95e6b50affd59451ad5a36083975eb50550b4e69b1d5b706590c53d81c605097183c0d408a0bc4c217009f47963eef1ff8315f4c256433e480351d4459d88e4fe2e19f03b5aeda157e2a5502fb70ed59b3b6d15080bb24a0f47bc90e5102a907801028f72a1884c7af0a7327521840dc8a6e05deeaf84fec52ca9aac5c807f9f3ef45baf5d95ad8bb3d2cd64da6ee39f1f6b67cbb4f9bd6906672ef7cab58d80d3a8794937de7a059663271f36298d24bdef229db1104783b9ee48b739d0a58804b06a01cb64005f80c34f3713688a9ecd32d337e6958cf10d9e85cef2aca145c4fca3da45f6dc069348590f700081bcbe5aacfbe4c9aa9d5bedebbc71c1ed0b4425dbadc2f41c64823ea090be936cd4782582a3058bf83aafaf96469aa9371676647e704634bd8d10f5b8d2b792f212123b496d5aecc4aaa1452d1f6805611fd403818238de130218df7fb8202ad71faed1553972d190afd67a97f647a719c4edaedab799f5c9315e12ca5407d845c3053edf1a055ffe5ea3b3c77bd720fa4c641122f0c2c10d4681a38830360d5181a6f347ab1e53c0470163629f8a598aa611a4d51d28c2d65fa37682dfd36608ecb02fd221ce4c2881029d09f47a4a48185f15f5ae6e82e002784bd0be094ca84ee9be2b99b8536a8c06a0af779c363624f394203f1c76b5774044e1bf4b21db22dd37e60b17d0400451020e77d542705704cfa9bbb3b4aeb8c69086a4a820aa478bcbcf93f91520e02556e9c37c2077a8bd26ac230f4b7a1e707db1ba50d072f43d50b358dcce5b175bc620ffc19bde3ab680184a5e13261bd0ae1155fa34f7e0fde266569d7d02c157dda06ce17b5723fd4da915434a808baa3d6e770f29296d3c8864dc80d8746b625b952dfb83468cf065a0bcb199899a2660ea15378cc54035aa803c61449c6f8d3d90eb4539c6edc11719f406d7df285fe1d0f9beba1cd5408b2e8fa9987e36a18d407e6c02cec88c12130ea1332399b3e85c8fb76c2a561a97ec140104cfc0757908385d27bd022e18c080b39b82095f446363b491d66395100ff65e7f3ea0eab5fa72ea8918fe48455eab7250613337838f8f5bd7bd017678a847522ba252e4dff4076cc59971aba24917242606dd8d8e200b32df21afbdaf650f6163b24d98b460e38578cbf41a248f46522c75fe9c61d8172e8f1991ecab8ff462f833b2a267afbeff492878e92c42bf91602b05a617a85f52bf3847850dfa3e8acc144a36d06e8b585914c0d22b8b1c1c47e73ca8399209c26c51639aa798298331bf38c43cbc4cd2b5e0f487dea1069b5bc3baa20797c1b51552aad9fd14f0aa59530ed72982d84dd1c82c3d9cf36070c738901497835bdb5899a822372881a01c24296b1fe2d21be8f0c5ff4f177fcc10e20a253526d65561190d3b9a32784600b5387193b92c49c82ea08d54b12c60c716592accce5f3c5512efdd76c34b0546f4c2dc896bd9aeb2355e7b72ed31ead4bf8a6549e6b4283a568d863d85e23574fe1f01e07648edb78d50b94df787a0a0524ddb6c1a6afeb2463ca3cd93b3a27d24241d71ec2782ebc17c477972f6d46cdef0c11c54f85a1b9b1464aea62fb80b44845864fd632478c99cf81a39a4ef8871241509be8f2cbf0ed486ee237b3761fd1a38681c756d592c9f92e43e19ebf35ea1e654cd559e678d1b1fd7a979515d56a7b2d9450bc1c7ee3086f4c93ec26fe4fc47aee505514282c35bfbfe495e38c033766de3bcbe073c8b5d2374b4fa2f78684b79e8a2e00a1cd7471a7837b9dd4dbb28ad2eb9275c03cc324df8ce45e2fd95da657b86e6084b088d03253f1f9b48a8b7861c5d4d2bfcfdab80d4841022bf917cffb4492a31de192789e244326c7c778a997e7899b57beaa13353b28f538060a734a2abe4ed1ec5b9f7e2e4fb90f7b1e9139f55e3353ce653d5000bce91379a19c8eca38271360692dbe763fde980f0466f3ce33ebf8051cfa545d1f33c4cb72904f7e089e83a0f8dc73c2af919094548fac4e77af8eaa3e5277eb4b1f3aa6493c04b382b691b04d4e3ec3386f6dd01080432fd1970eac1a4f6b536fb3c66b140b3ae209ed72820168416e2af11340229f6fbabbac74e506714485870a6b67e0894ad0a4e5d228047397ecfc98a2265ed6ae7dc2301ccace572f8875c06c910481aa7e6361d422764fda4aff5a300678dd4b01b88181477ac2b4159fd86954571386da1004b57ed2e412599144991e8b2e221713c75bba5ff3c8d6df300ba99124d304e2b7b3547874e6a9fec25552cc5b20b398f7b97a23f28b52f551c9bafe2bf54073ac7ce8cba245d3329ea45dc642a842dd522420bcda3bd69f8587074e226f5859a1bff4abc8a5e21472b89ad264d52cc924165c3533d565ea7f39eeddce5e0c7befea13bb975da1c3c43e0feccb924729300983039d4e8aad5bb6ae02fccd129182ce3b21592fba84e9555c535e2fdf956b3e5146cb004953d543b2fa508c4ab1a51654699be0dd5292887c9581faee29f134947c2c1317e00749232a32cb7f7ade45e0fe5b699f0c83d20cca0cdf84d2a596da1a3dd92b5a37b5cc84333f4ab3cad33878c6699f6a8496945affbe0519f55012437f530f780aae5c05e16e43b01bfca7cd6a37590672fdf1426f8bdcd6eacb5689776a77c2ccf9ff36813a73f7e5dbdab482ff055a68553a36e38f8319094fc08378dd22e086f121138faaa0ebc1f4d1efecc4a975154255148cab3d2c75812cde608bd185b5e786e93926e7f7cf67886a263c65eabfe15b60574dc3185735571e587fee52b5696022b52f51d81df928bd2c86b8a4f38573c434c3e65552969305f9b6f22abb2f47edcee69ec94192e22ab822230d4ef4ea75a5a14183a34d554047263f9f5a349b22ad7a168810e541139479f97baaa47342d385214c1f52f188ffe6da89e837715583b68048a29dd0dc5daabaac8e24eefaa2b58e1e24c571a84982fb5d08a898cf9122011c6e8e4a73ca4ffcfbe50ac75550371964cdc954bfbe0559cbae66f18f4180da922c6d3616b60195245566f4e80ae413a48f29b405f8ab7890aafec92802a8e34841c53ef0f2a729869604ed8f355dfe9a1c479e3cf98b9bfc6b91b6ab35f9449a61e121fc0948a99b373b38e929d95c689fa5b24ec6eabc3233d249ddc5ac9cfe3259b1865c413c11414651d652516193f61c691278d71d69bd3736daf7917f59588845faee903af4e99d290a8562712e6af6d52da4b42b43ab7f481f136c3e328e435aac41989f8e9dae2cffd1795372f088f8225ea4193ae8ee60bd575c5370729cf440e30faa73b905669ba9817edba8a4df65f152083f91584cc9b2c613c312facce2fea34e6a9a7dd2b06950db41a499045d1dada71ee8a4b6d1116e0301aebbeb168dac726bccb936c41eb43108f6ace46624521d1b9e3b43e829f691f2a187df1fdbe710f55ad15a4a1f52e47726cf46deadc37627c0f84d046dcb6c5526af8ce2ae3917d59196c072bb76b97326c58ea67a5538ade8c6ec7c34fea10b8cd169405c9a7b428bd9b8398a2ebc50bde01e29263d3f684cbd6ec8c48d207834e552dce0e398d8909980ea6356e357050164055d22a5b0cbea304131fb043a2dcbd12adfb72c82d0001b32ac965af1d4669038a0abfba1a6128a2c3fc976c49ee63563cf74a5c1357142fa6db8bbe1ea5541c9884178ef5db6ba7136b0075952fa121fbcb71fa12a7ae84d94b2bb10dce9567384a50c63be18fb830cd718131eda7ed02841e1ccbc2b98184db27c58babef045e8132c529a55b0bd5c742876790d5872af45016613a4fe56988a5aa727a2cce69338e3f456cc9c110528d849664a340a210b25d3512b8cb8bc3ecfa9240645d2509be939c1e6576fba87026341f5d4c98155b08f78d6ff5667469ac0d032714f92c58ca565c313d2b726b533beca51e020326ab24ea9126d88ef16a17bf71d198b91a308e46454a1e7c8e4038cbae33d9443e084e9aea38c1f34917dab59b7f58e3a25d69bb1ce6879f8b9c926d12f7bae7543815d043501398de9ace79248cc43496ec54570a88a1e6595e61623f2b69e3925f721628f707300e957a67d24f3d9031a6373f3cfa7c566c980a22053e2edeeaced33c1f8992573326f7917052c8180f1d09a4323a7f840669c419bcc50c5a8a6b04ba45e9506036718105895a96f19ab1af50efb1e14f489cdb550e710b5e72921bd6dd397d9134b2d213b20e24e33388b554f5f5e20c0f06484cedfe67ea5206b1e7d2bd8bec8f44d6c06683fcf47de080a903ef8e64f8075a4c7733846466f70e97c3d2e15dca3a2402721545441e0003cd0c5145bd912acbd7348cb2f001a6fd820fd15d418cd546b478c2fc5261efa0f152cec824c07bdd7e2ed0beae60de817a38562e841dec9a4f12a53ef6033e818dbe0532525a344925f46fa9807a88ef9910e58867ad4cce18126fa832a891d6646a3a008a4e720288cd3588b6d0100a59a60fea189140d84230dc8021a592844957fd25ed1306acc0cf9557f8290dc61424497d90ab9a36bf1e2f0ae4554009f506e78c47480c11bdfe25c89c41ffb593559c851dd3ea078fbb0d2fa16d87b3b0abcdbd264059f73ecdd14c9d0eafe78bb0a7cf10c764eb58ae52de76800c09fa0af2d34dc3cbe9649a3ea8c35c01d051dc302af18eb800af58e24dbbe586aaa0d200f42b45e59527e79de9f9529717be1e0ee61d16e6a1d782064d7e6d9ae2e47272b5180c243a54a57dd82e91cbdd187dbedf2fb15a209e50249c9be196dc3f4a44bdd1b8aa641577200c11ec494abfdd771c98bbc2b8d7a38319f410f620812858e3784cc46b498dcb1a567b17b8633ef498349b913e7f6e67b54207c84e424d5607d931df92b25b296a91db9dd95b768ef654fbcf8798c89227c21fa859cb0ab691b611527cf53b53209d1689d66f2b9cc1b81ab9fd0855e63c7b969b8adf18262aa2cb0df1f4353e01c46f281adedef1b2b56fde0ad754481eb1c62f0c784751ace6bf41540c5d7d492c56a5f31e78019cf4e947a1fb7a6592e1559e828c53b1413aea85735e14ef1f0aaa6da4a0aaade380c8e11d458c74099658bbce242c776cdca2caa252db9c7ede3c80fb3a2fcd29d8f6a08ed6708d721c0e12b2d361be984ea422d08c598f88b7528181598b7c146e8fd8c6617e32af64234022de6fa20ee435cacc13b320b0a173289b70a0f24817c912560e80cf27456f2c7fe036c8c58e8c57f353ee8b777a4e650a2abb2445a6e0742de08bbd66decab73c81494ac6c2aafddf06e2225512d16cafb41701c7492cf45e63745800415bc946de71f7ea4ce618daeeb0b0a2217dbfed093d2f65f7b7eafb298445be71caaa85206c04bef30a598e6b7e189f4c7ff848e017461105b26c1754c384bc16e5035b0191a1ddad8102cccc315b4166efb2bd1bdc8681ed1f99520d15d01d38b4bd45a1976cf7793ea54e9c6bd213e797503aebbcc6ce0ec2714060f70ba20ead9d12138653d9eca1fb5168286a9a6c7cda61a1dc12d5c468e1c1b06701d99b24de51e50508c7f4b1a2d8e2416df62cf2549bc6068fc3e35bb6d298cc7c42b5ffc3ff459d9c7bdb1bf82b0bf777234b2c8d1428bbc7bb944c366634ab2a98256ad998e4c81f2fcf5e451a8e8974dc3fa540c939e77cbc199b86801be07b7b3dc05a465148324df4f0ff065b799a76280a8956d62e1e3712ee3ee6a4310f3f052bac629984e1cb39038eef47453553c516f508dc5da10b9726a975e786144efe4cf24faa121aba6ccac749321de0b9ed0e6d8ab3a08eec54411f383aadc09ebeaff0275a243efb2205280046e7476fd7348c4d8f2583bd7f1f74bd2bc8e99dd3918b6da4fe2bc4ede4a89808cbae2f1d40d12bfa408a61b119a694446acba5fcc5e145832d29ff13ef6aeacf1e607c625ef1b465a9f0dece2bbd4545c75cc038635f8eef87449f57f6fbb5632796df9b1a23f7e1165d5f6656e6dbb157676041d2d52c5b47722fd7d39e7166055bdd86cb026fafba3e224312418d1133437999e6fe44a81776cf8722c11bf3f350011b94f786eb675cd35a9fe5c49efe9c8d6d6b69b964ba973f20e26ade06e7957445f7c26aa36a4ceb7d5eb28919b77fc68afdf7e79668ec2787a40dc4bf844ff7e872f4ecf79a00d8bc22632bf5996353d256b3c239a1150d120e469eea2255b174342034fcacbe7edca8797cf2e0668f9c87e0c33db0be323d397951b3845b5a1476a0c0c2df360f87130061dd16f6b0679e1903563a113cd93167c3fd72ad4a47e364e0a53296cf79c844c877a0699cefde282e411f89a42868f5242f94c79ca18fb7094101722444f7487af4bfef5afb5ed3a20b931690ed6d644980b1f99c185d13bc82a9f127c97bc202d45e3475bab2b5e688d749f0d4a2eece7939669635c04696fe62531f88e64acc2f2c1c2898fda316502c8097805c7a00d6e9ca27ac29adea27a8054c89811b4198ec6c74964c1b9bff5e4f9543f899d7677bd89b2f136abaa12fdccb2dec073918b00cf98d15edf2bada9b5b744f874d1d9fdb4a687907b951b48d30e265e8655eefda1f208bf452e4cdbf5adb97a85f0e413c9492bacf67e065e2e6f5ec3e5fde0fe6a039583e5d8acbba4f93c847c4e27c8b23514de6a5bdbbe19ab1bdd05b485743dd4bf66ea116ca94994814a7e0cf268f23a940322ec6493557e97672996ca4bdf768267c6a9fc577216aec665835b548322188f482feb1ac81bc4ffdbb680f717d4070f7bca409354bfdfc451905ba777961c4936b97b1ae9a0c530265643129b28ddd8bf1290778b9a16ce844d048d27c6d50d9fdfed20c64ad5d37f33fe2cefc570ea5c27d2922f4ecd88bbd00e248dabf3393e73ae2ce727fcc1000866c9947ecb207d5f4cfb91981dad18ca74420abf5157beed69015147bd23d62a8c8df1f8a2a9d6e9b69638ac231141e0c35a19dd0b28d4a9d48d1a0d93dea8a7c8dc21ecae777863f25d223759c4bf9f0e8d9f1f2691ad38dfc35a71240c2d2c133abb82d5fa5a219df59b4087656042649d366476285560a1606a53f452aa92a8b673d24fdee8c1cd011cd1ef6c757f66d487a7417468916286f14ee4538cdda7fcf09cc213a41c9a5338b1c818cd5dede160c8d99ffd5f9d5510d986cad95edc6cddb68556ab616826cb904e1dbfdc69eb110ed0603da980af249c096cc074d542d08620c7c2a18ccbf55143ec0932d0df2085a51c89ca193a8562c550443f98dff2a8a186e5fc4c8b0fcb9df1da916d6f3a75d777ddc359a1b1ff8433519429402c1d7dadc6d474f614ec9bc536e70d1f46fe01f5cfe731f1b8098e8d30c208b6c41f5b3a41d28552f743760103a8b7912de266a9ddd491142f8eb2439d5bb133915eb0e44bae2d49c86a0aa09385102b31a664f0a9ade22228017597d809c7e14d0d815a84c266a4222ab7a791dd8e8d73bd799da29b8e00ec0a13aabe5caa6d027be4a36418f0b9e9589908c88fa9559fdc2d58c08501959db44208878edf8c17a5fa0d8564ed9d9897a368698ba5b5cc0a02b3d383293bc3508a4341e94d6a755246442ca13e0720a3933e851e5daf270baada256cb6a1ada88c06d4a2b3369a8ab1a1f1b28d520267b878633cf1e25480be20dee6d3890f6dca2f675b630a01e8a1eb27a0f42820e8853f6d0ae937c005fae4c98fb87883432c689360885f6a60108885ae9841ab0fe9c8d714aae767f0d644377a46c07f07e9db92be297fac74b30f36e38ac27f9aa733531a070acad8cc93c5ff84394bd519bf7cf6bb844f3754b34a1e609e0e808b8182ca6b75e4f29dd82832178e0156d911eae10a484992c033632cc6d463a139f82a0700c3a9ba6143c2147b811b3f80b2f83e00f67ce0d2ec06bfa818a7b220c419012f63fe96bda382af7fa265598e8b33fb492d0a36a737ff2a2a5906e9d4c2b976ca85a49fe1a74504a6fa78f3db21ec727b6a0103022d995118fc12832ed161250db98d3922d9e49df4443e5bc41e8f8d9e92ddc980ef9d79187a693665ff1960035607350b4fe9fc3acdbb5c771cd5799f094b33232d7a8c913e77612c71b70e168c7378034ccb8943c00d18d4d7864ad6de60d703d647b5c96bfc1ff664d052c91de3cc50fc31f44ae5486adc2dda4943e68b76e409e0925f4c8de5fac1744f00a7d28b012b369727c0dbad922910fc43fa810d65b715f8bfbe17e6c594621d1bad2b32471d0f6438951eb4e2cd87e889c62f6dc15b564ac2492af7b9354044308a843cf4b41447a84dfb6aa5cba95d32432335ef18f90cf0d4f3a63e47311d97b1b291a5e70c4770fe2959d4832bed7b4209a3b7ce1bf6447c091df1a201fd5a2956906e1886549e2e0f3e74148e50976f1e826b9ee28c014c5323875bfe6d6a4b23749ab0e202242ce635a34b52f90a2e211fe06b6dd11a086c049aeae8a63bd6f97ac8c7b42dd0529d91e8b50c3e72425df84f090af18ba500cfb349cc5fc29c792b5214662ac8e6648d95bb768c0d13ed0730b384cca73537089b128d28f48035beb21836b586e9a46b1c547262a49a67c00677194d16861ceef12821a1e6ac25f62608ac1f04384edbe024b80a537d695b9d36efa66cff492042dc64ba04b887f2c6ac195aa3c18c8980dd3392427d6d7ed566db63c1c50135ac8538c50513b6bb4b4dd8ebfc50d2aae43c460f074a8c04de2cec3ecf1e3abb375e9b0e6ac51613a4f27fee7323d27c84256e80b8550264ec6072a20fb9343fb50e6eff4c75bebf7d073199772eea08e8e2e63f84520558f785972321b79ff47ea0b6a6354715adfb10ceac57cf4365a1c645fea1f850a0ec91cbba3a977ad4a79850ba31cc1e622126ba53fe2ce5f0a4f92f35b3d8f2b0fcc926dc17b941daad293d12865d07a292448e77c9f28324451b97861754c9c2ce37d248d333bc6dad45000ab690d64fd0ad35afad37bf492e033d923119549f6e2f826b3523ab924032dd2d7b76c329588b4a86b4cc6d4b24d734a0fc9874c292e2dd3f5bd233cca49d5dd0f32d86828736f2e5644a76bea2b47db1383db1010457d15bb198b35c5c8431154a116213a07f068b99dfac0ccf134b9ab5689353046e82b3f1ffa1692bd4b63261086187274d3f0d9ea5956c59e01a7b6f2c13a2cf514c6bfc9f5df337c2fef18828ce5b0699a9718873b356d84db9f9d2546b322283768d934ecca8ed20305103d75fa4328c448487c3ef78391648e677119ba00c6b522c91873a83606a7a037f23d6a8d91d70435d930695fb216ce34928f5841645d97c234adc444fbffd0ba883778bcd8bdccf31da3618d8e4457798741f858f6a4efa8fd25897e10c383b0880ae84e89b993f809e96fcc642a7564dfde073f53df59e3ea0561ab2dc266687c5734dc715b7114a7ba0db00e495e1663466794007054c1d9097c6a9c89f1efdcc49c9aedd5562423914d8800ae509e816f7162810589ab2f34aba93ee7d89e0eb825a99497aa3beae1bcdf399e416a62b39234aaec03c414173ed5c88e0a95bff02a62d78a435e5ac1c49baad3a15c91937a1f8b3cd776133ab0e40cade69aea6a70dded22110cfdcf7f063d8e00492e6fa979a2d07ce0091690fa58b27fd47b7310da06aad88e33af831ede4a77811e2f22761ada9890428d05276ae1f85ec10bc214bbc52d56ee6946dc02e852e416917cc568c2cbac21f520f5e83758d7d8babd634b20640803918984939fe13e99593da970ef7c35366a08568cac97905b0db973e1b6c80d2c54cd46de82e1821543cbf0e2b865072265348a58ea2a3e4b1bd4636579787a67b39ee04de51560cdcadf4d20e6b4e5e947dc1ec7cbc23c5313a127cf7594e23b42ea466381b62b759a1dae5e9bb6a3bbb051e5f70fa3800820c2fae481aa9cdf2987132c2a1bc8c9a192c044a20caec349fd47395b889fe0124e0349828bdcf5ca096405c5372a13f201c05b8486a0db75fbb4529e62bd0b8180623bbef8340248b7d044f926ee4f96b5feeca1aa91326374233177c7b4492c8c00b102a32c65da444fa64847145131194b2592a3d6d28e031a2539d868861c6c53ff99985a8895c02b32e2629f958e3db7b8acdb6e36b63aa2b525882e9e76149bc81f2ee2ebc1aa8b97460e737b4b89d6cb60ee218b1e34adad76858185acce2c53c2340ca5d49a07e867991274cc6f36f02d3208dc619b60f5bb135e23d2cd2d0a122a3676075d0854cb2d27b756a0bbb9c9f477bc73f45cf09ea2e0048dd8f6a0b81fde85c477b5add588f02510d211aa8fb969ce8b72e9d2c263809e9d760217590e5238c8f4535561d889a4042472a20fbdaa5ecc4faff2bd1c6387d8ece50e64c80fadc530980fed3c7a47ef3b1770df8fd4c3efe0552e15fecae3b6ec3268839d53fa92e2559be131feae7ce1de792945b0e291ffbd851225033affccb516b39b631036233bf6c48430297839df3ef36b323b958a480c288e9ece224bed635964c6df194a32fa88f6c462f9d89c5a689eefd0ed8f7d066899955ab24e19cd9749a273a986b1ce06a713a7f04f14ba50ec1db028dd1cefb483e5d034d432583b5828595fda263727ab9f5c46ab92e10f0b8d31f85a871285d3f529307657f313d2543a436458db380fe57944859603a68f4f18353dfc66b2f3650f02107274b749b8592e742eb793998ca5def25501bfd3c86eb0bf9f3e21502b28487005d7b0dd0b71c1573b8c6931be2c6447d24bf5087dca4b3fd9dbff8aadeab2e5cfe7a7659fbf8017fd5c6c1c860957eac5ca17b43b8ef8f70da9ece7affc1aac624fe1a5f6916ec9bdff113adb48b2b2373e191b017ea9ee409995d2581da6062886f1a48bb5724456ee542572f3142563b049756eec0cd51712422a6bdf0031d2d27c6041d54945ef6288fb222335015de4b75d9ab637a50e7b367661c1399434c27894528cb76368a663b7294e016b173ece43068961b848b04249803e064b3664f2539930ad04e351ace92ede7a9fbedcd006ef7e0ce77ee05102a6b5db444cd21385703057455693cd238f6a9b738dbfa1d630cbd0de64e8217ca79bb00c969bcd544ab98111e693f897df70d72ae5124c1cd460fb16017a89bd92b319a19a7a34d31b775e868b11582da98c38c0945e098bedb80a134796a98ed6c17887fadf7c9da2c66428675be026c6762fe282c9c4ed046b29d413894d21a3c2c64379ec89f69d8fac86a5014266a5368eca7c5cab2dca8a485042bc5f58a1406486d9605e63e026010168e785e38e0f91e3618b8341f35416a38e516b3316983e27cc86680997204c3b354ac245d9ee70632ea42166387403074a39254aeaae4b8deac767e0def4b72afa57b217648385008d964975e785f704b23224efe4e89c4323910a44b6d9d39fb06a511f9fc3ae6b937883f3b4401b5aef7d7fc6c17b9d526828cbd3e09f79c629e070bef0dae6ce049f6cd39c887eda2c39301c5cd9954784f52a264ec8f62ba8469fc79ab5b41ad94d75641cfa80029f4bdcff7e0b9d6a23da5adeaca09ad51837d6bc1550ed65c3666e7b2c6a3e1da0d6eef062e8fdb6cd90d1fc1d4d7afe2cadac285a29438d9b822c0f5ac3ade4e02ecc7e408f0816696f3efb2522b509358bcde4d319f33825e55b05af7bd073474daa740911ce8d4962165e5ad4a77dbb97d2d482965bfbc7f201b87bbfda5de7633403c83e75ba874d9d38be3a9d87b19ba683d896c58cd0fcac62c8b96ff4fd18c488407b2267318f13f426af39d32855190e3ec60557587a3505825bd3352b4c7fe41fa0587a80f93d93d4c95d290afaccd897fc2662282a8626534a43b91e05b262001e0a084094eadf8202d0280f1f7d8100456589a0991caee516ccb936948da4caa0e096a289a2e373984eb3ce82748ea31c2b90baead14c666ee95028685f5327d9e937fe9b2c3447a00cc549b307fc04986f1808133993b0dcd7c68f4bbb24420084378f06b1c80520acd56cd7c285a7e1b570ae72d37984b970ecbe7514677b758c71a620ee32834615d540555760ed8ddc4147ac97bf98a331a1c52168402f699dbb7ea04abb2d1c8bc99d92179c57c00f0e0bc74442059561799cf3383508ac779ee578405701d61904690a1e1208418f276f2d041dc399b3678774847a88d498b844bf94dc5402b919ec922efbf54a5d5d993ff458c7d5c311aa0558277a9ee06ae224f80afffd81cbd42d5f6c7b4067b952a223851ac2d2a57b233639a66fab414971a5f0e0e5cafbf37a5429d2c9fe48c0582d806ccb980f416408f2c840caa69448f784baf035119d4e6c5b702a5d65625abba18916daf400b1b57d17eb7fcdc66d4d7d62ee223e0950da623c3d619c42cb9951e658c84849de89c58a6b08e7458953b0714b5dbe53b6d482571d2599f792881754f5192104000ef052843debcfd7a682dc4273009dcd75a5e30dc2058eb148c2e9168c705ddefec194f59310ef494c96395b961dde635f5a460e8b319968d9940e92377e3afe85178b45722f54225715646bd5c599995f116151c3daa585f76da424f70472f77868e8690caff681646b95e28197e1bfaee82cfa06fcbdbea54d2214cd121b59f4373fcbbeda8cb098326f6ecbc0e5cd01eaa6798548d1ed5ba304a58dc2461c66a8e9cab677a9f1e6ed1bbf0d8fb35f6a50b3889a7c7260ccb430fc28f5e24b94d7ce0155cfc268e1c40051940f7a6ea47f464593bb090ce880e835af53b8e59aa9da902c9115c2304048d62c661d1e2d56d66df072db93ea1876b8b2907ec53d8875cc749bff96fc90a8574af39d1257b4bee61acca58bd2abe99b3033203f33ee4c6fe58bc0b673ec6accd77e16318c774dc86bd48b263fe00aa058a73d7b792044f221469e9cc9abed011084968e2346075a5d7ccb945fd9a888e77cda9b944ca979e94d1a5e8d6e6549f471468ba1d77ad0d154136ed93134b4e680093ec3fd2c4c27099ed92d8105098c2dac1d69b730cb4c940205e2b26cfe603c4271fd6100f5a147800024e2f4f004ddf0794aadaa2964b5a541aa7ecc602722babc4cd834ff772bf4b54568d734286f90f4bd5f5b40a312174c69e9e20865ad62c3bf1fd4698d18480322c149760d588493395eca97ee5ddc79c7cace51cd295411386a217159f27455a9636486880f0608b4aff407e6f83b2a8576f1b478a6eca05770aa405c9b795938f5fe6cf592b94c411cbbb02b19e119420444c170f9f633bdf37379cfc99408d457a1e8a8256dd8fcc911e7ecb2e373942c4158de2ed84fb54d925dde27b8fe3ad09f2397a4ab3813763de27911ea3ac93fa7a7ee5ee6554af0323c0e1e95fa891fcfc1cf09962cd0e47be1778385bf37c72187dfae6eca5c220f830e3aecc440362a9c530d740395adc12c487f08f0fd96f27438d08950fe1f73b25fa8860348fdfac27502a06ea07e2b7a80746327ba6f5ce243c477967d921223d05c9c30746633a7d51ae5d91b776c97bce687ccdb8b23d315a0bfabf289799d1f1d5f8637c2526f7625b37d265bcf0a5031898452f177414ae2e44bdb094afb9115f909fcbd556da5948a3106d34b4942e0520028c0338c26e3993e51e6d919d9c93c74a0acf484f7a1a3769f604d5640de804b5cb0f1d624de07ef33c4b0f45550010fbdb7b8ed12e636a97f95102142f99d907ea8d1744e919e26df5d9cb3c98a93042c32664787268b21ef0f34e6cbb8bee42d0886ba24a66edb66465358b20115cb057adf5e902a6ee29dc9d6930f116bde7dcbd167bbdc99156ca7918146b3dfc8ca7a1d8b6fe20f835d97259ad18f67b40f8b69f993df83afbb42f3da25fb9fecf7431def6b8c45ac34cb7a864a6b551505c1daef721d2f386fde3fb5e9c095f53bf823f1b7f652d240faabd46b88f2e7b92b0bd485ad5bb942da8d8bed8efc80c8aef4c32dc69bae643690558672c28dea06cd9676a27f7e01af4fce283f4613c256c3b4383cedbcbbaed8ca0e86f8e0af7e420bce9b100c35d2576f552a5921041416f5b0948f5edd2458ec712c71c3f7ce7f4020f5c5000bbc2998086d840ff5aa177040ee0732dda4317491d326d36b10bbbe1825e2c9fd6ab1363eca882b826cb375474c9614771df8bb56bb57abcec6032f334e00612e7d580028dcf0dc66c914c16211d51c6b33664e53b5f35378f74378f48679c74579c7e3895ab89c816ac5e1a68d396e51ddfaacd5db16b3e82935f509d72c008cdcf5893a9661e8d72b178fbd385c20fb6bac002e8eb70d3527a96d9f639f2fb70558194b91d8b1079668d421290133e2b79e7d1f0dfdd616c582f8725212baec7851d9b5b9bcaae0545807d74d1a48cdd1d8b0004a437a32693973f650d2827135570ae88e05a19b53c1b91a60b0e6192ff1b4c6506610e297b16bd74104e58f2278589039e6b7ae4e4c4f51a282b2c607d54c150ade2f1841490497dff6eab5e8469b8d2fe4c22b2324ef58f4ade2670162633e55cbd70b600ba146d2412fe918a820902f529f69e4e6d907e32ba5e11cc6b379e58e1e053a28846c96790316a62ce630cd6251bb231c9c158e094b4648b8110d218671cb419e2ab50485bd38af475a6750f5ab97050075ccadf78e68db6fab564c1882beb75bba20c363cb1501502bbda88f99c0fc4cae142a2cbd1a72ceb851e1b881b6561b82426e48073f245ef28d40eab35c673a9b2dde2f98eff979830405ab2f53fc16513e80191a16e2132fbc2d05ce380245d965814d7faf4fd18e93a9ade9e13617c9748544b146fd088a65167d404a9723924d35c68cc9098ab5c9d21bda017888a53530c450b5ad7beaa5a7f1a0254687d81846ea405275a33b4004bef245486b223139d858f049828536e34377f54b84e889246c05514862588fbe4270a2e84a7908bf1bff708f1c374cda2b71e0b79a32a98e002d6758e1837f69cfac5e20c6a20ee9af886ff5707db61d4d5f3065a034f32d5f33449a35a8fe4b607c7e5b6f5cb538fd2ae8af05ad6c085635a471342b316d720827e1857e8dcb5f9cccc73ddefdb0cb7907ac5f646dc927d049c4ae7b819e59be1408305baf1379d36600fab6ee8f97b316e5a3f3b2318ce506f52be1acab475c540cdf0d71b8b9556d845b1540570790469a80184d1299635ff05eb6e765fce520aeae0a7c31481e91c32192f0043f759e5104cbaf376617d1bbd7278dc0a78519081866e1f1369a203de8e7172f4c0f480cdf5782ccf1696cd28c159893e2b9920774ace09a72807c06a1ab31ab6093a489aa4dae790a8414163a5402d98ed35ba6694b524b2ee03dfadeeca4f1d208fd31f94b00c42903443907a406f6c13d9277983eb4314715f2cdf08d3737ba13d5200006d8898f2a69746ba12e150f5d7d35fad14f65e190479c645401a4097105b9f62deb34667c6e2b228fb2b56684786bb056845da75310cfc443210f6b0629a5373b105b286fed49542f6be277de1713c6f1594c0208f2161258a275d52d9a2110d99ed5571e289f0e3dd70b28a468dfd3d4576148f9403d7a64bc6d24ee7c30b09f7bba21a1007bd2a4206f6b89358ebbaff73bcfbc7e34f4f3da268b161b4193dd7fa0cbab1e078e1e95be1922fe07fec23754cf4ab5f0865eb281a45b4b92a7025e54c63306283f90a18934c37002dd47b3abf04f68d11886bd5b6e561798d414c3bcb6c69410ada7adc470743f56793ba9a9b47e092bd5b49e9b76f0ee1aa24fe3cad2720c1b7da81b530221caf43b54ea53f373f288ac6b5b7f2d5832576d04a227786dcf9eed6826949186ca4124adb97fcd8de8fe384c73e3fddabbceaeaed20a4c773e591e0a20f21e0744c55466ec5ae4fd2627899875814933b0f743bd9cc3ee88122970755a770c3e4ffe1cbdaef2f782f7e1b5e5a172a90db3978a40cd0579c0241910932201a1eeaa12777ce432a320cf5fa0264f589253dba49df605362a5dea97e0cd1b8d640f7b20aa10dd605174ec1b88577d25c843774f7d6dd317314fe836c73a4c3208fd205623ff7d2ff6be7c0832bb8b7f17e1c8dce57120021dddc092af2f4dfd0b733f1c3347709691d5e0edc8c93e2c4e025c30d0372d80251c19c377a8aa3dca65d751f69a9efb9fdc4c93e774619ba827be8ece76f50da43e36e49199b3fe655314a1f8432c5717e05ca761986737f0c5faad91f6b3e4474f3b4e16579c09e43c348246b5b3869a15edb8a9c52c1c158e5c753bb4675c1da6de286d5a0e37318de3a086a74ec9f0652d581011d15b9cab356200dbf0786fd6f4160828550460ce96129d77b6fb9277fa92e3cd544b8c911bfa92c158c24b3a4614b59d55f9e1dd9f5dc18191170880a69eb6d1bee66b2e316f5480e9a6b2f3f6a33132cf7105250740120c45c9fa0237f373c34350992e401d8aa86e40cf022ff8c4a9c76ae7378c1425d8391e50b14f2ae48e2153d7438ef6c787e5fee3069349258cad789e43abe6401cdc42dfcad9257924d1322d3b1241ea3801f34446774fff4b4f1de35f4ccde6623316a84a97c43445fc617b49bd24d5610493c779d4791e84b4fa2534a8fd2ebac5aa7614b03c27aedaba545ee25cfb83436ad3a509ebb4ee1644e0c947ec5d539476ca9d7d407955502d691f2419a8686d5d22d045cbda61a326ba522ff70d5162e4bb85c4d879300d65a911ef3c3c107d738ef30bf002dbf405e241a060fd0337364fc27b59fc68806b48bd054cb45116fbd0501f575c6a07fdd5b9d020aaaf651940b95e59cc4dadbf00b866452de206b4bfece5ba1a98c384f55fd29cc5410c3809af98b168bb311b0b4ba6bb3d8199c57a22b2d2019c7a8b568def9806004813d5f4d2654aef4a651991a492ff4e3969b04265d8936bea48ba043f5266e97ab5cbdad835a7cef41c9a6e08cdef1af3d2f252acab1bb6e540139d18b06bcb5bf5d9b1b8e244a98ef547663f2f1a2843674e661ce78f0df2ff153b8cad894cf2488da5176b667f2ede24e1e10ddc80487309cb2d5235505e2370360c2b15976ef0442d2aad6042ce8c90babdd028c41eac86f27b660a02050565e277fe80f808d85f2e44bba7f5f4244fd2cfe4b1bfd4a428cb2eb2e71964ff0a097261aa9e4612ea86e1000d5b5d7df9910b93bef3d39b267be9b63ad0fc8ee02360d4118e621b8fcc86e9d92cdcf831adc4b19b3919a65c67a40e1dc7b83f43f818dc4fece82b527fb9b51223eeef3ffabc99f40427c41cb3f65742eef74e32b98512a0b0f4cde3af7f5584b3c60ad38229fe1c6a1f0c79ab756f205c3b3ad56eac877058c66774dd237d392f9f1ff0cacf67008690805d5ee416f3694aac1e2af50b4ba3c3e5a0f6607ffea6d15bacc57c06a4f2b3a831b0da7815bd9cd9e0a3d3fff991c943d7c2a1644b72324acaa227d97d1863a3cd6bac683f6cc7a79d7ace7c0c31ca9de820be176b7528791460ad17dce22b39f53be81e2b73a8c8341be46808bf009481c6b0ebdfc10ee578b42105440ee3f00a17fd9d282bb934b5a393c601e12baf4d64348877e7aa4e522d0abef28a116bd065baea5a333ab4fa739908e106fede6bee46df7cd0b191d78b011ed2c18a1f8fb5841f8172a91d9fa147cd35bd4819520913175121c207bd16086ff31d930ad39bd18e3dd5cb21dec0de930b167666ee70b049140dd61c5bebef696d720729cdcd6cf58f0db4317a03ff83d1158e0575f94e05975863ad8161591a543366f6285ba1740b401d4c03a649709fed1d21c0b914b21b04ae840011c403ca6c913802ed33d428b20d3d3d8df5a4c812936108c2e75f558e129e1fdef70726e263a8b85996a5a75f67b9e9ba67e506a3155a576d860171d3b6c48d4f31704b31719a4b01c98aa95b862def885157b7b0fe97b1dc6e0bc233816ca5cff834f18aeabd291f431f20ca18582d2aa6a83c2f63a27b20c805f8813e3f660185413eead3fc947cc5b72f5144d7ba7f77df426108e2dc350290987834ce45f582442bb758191aaa6d020890b4dfc217ccdc755715bbd204d6e589a7debce1fc39b28e0e769c97995f60698a9f5c83acfb277e71f4d57445597fe32936b591de6db3a0d3a307a9c288d9a527f395ad7441aa69d04c5656d7cd145bac67f9df1812bd473cbdb504f48d72fbf88ed0bdf552aa3eb380528ec1a5d0933381aa4674125bb1d0caed03aa86f52b3739027253d0c2edb5be41faea7b80ccce7c8b996888903429ea1cf535bbb5e4e9c0c6836591957c0d26e25470d35878eba639b198a941ede8a0e21a8fabf73516381a2951104f3d70e5471212627215b07c89b16d8c45ad3e820da23a5b4a2a13624d2b7c823bc8f6b552532ca7074c2181e410b30763f85d0d57d2e7a79514e171bfebdd4f344f1d7f9003ee6d5a4c3d3b5936522ae2e2cdf6464d38fcf3c81d2feb0da514f6516fc5658d7923411d336a382309cceb168288846c7dc4e4b9dbcf10e0a417c9d4cc3da024cd611830ec2e9c7fb3cbfb88911961cc0a7db0bf242f68966cb1ba6365df3d3b8ca2f2d5bc25745a94bcdd957dd8fb8a86e0fe18774564443eb5e0b0e1a4e1f318374be4c250fbf8a252b0e77ed430ea6b33618dae9ae9244b41620934b9ded1efce48134acc9205331d3a960ca206b567138e17be876a7ba84024c3e1f49c0f636d54a7180411a2b626a0c1d91eacaf7da0c912becc2a4d935e0bc09d1034a1f6e996447df4352a685dcb22fae3743c3179590c58e4a313a297750510254ad27c0996cfda86afe420bacef30a5a63aed1e56a89d2c3144a532a65ba8bd5f7a167c006fa4e83dd0feac705237fae7b9a277b18ac331f5fd3ed01a7a0c659e907cd4fe938581b09d27a1f8d876e9661491735439ef28b4b20013a2483b7fa0b8052c5eea5185d6d1a7f7cc83f35f17ef4476eb79ead85c2b040ede91a603ba94d1286e72e3687a7cd0b8ec847533a603900534673a13580a6efa779badb8e4f161ce80af5b15004f321d3cd981eb8c7addc6fa37469749a1b7bb955bc32d8f8c548f01a0b3d624e7022a12ef703fa8e8c3caacffb2c4e0691068d3d98d02e88598a6ceb21d7bfc67239d93d356f3c1b15a19d380a40ba99e69b2a282de7e5e6efc071fb3e30a22f87469c4f3dd6af100f7e2ff4e4cec230970ee4682a84c00cc1e9408f8b6f8c031c94178ba9326e14abd979c87e9ad746087ab3e772912310f5efa5849e61582e6c4b22cd15bca8dc77dd2900783b2748700603e95f1b06819b6eef36ad97d6c85ee249ab53e15b18c5bee803d4e55a07596a85bc899118934c4e33ce62925a2430bbc52c68175a001790bac5ef2aa26f7fb1e9751862e1b3b5253872b51a881e681c3f428ac9a0641c4062e3a0615ab4832af9d1f99f242a250ee6dff085bc91b366abdd21e131f7a0128421d3b453edffdf97798abf723c6578e8fe6d4b2b820b1cdcc47e9ce43466c0814e31d4e3994ecdc689dadda745a23ab097f48a7ae18c04086127558fa56290b9fabe67f46d9598cf1b17234eeebe31af6512aa3595290d46c9d70c1af749e6f2a71a76bcecb36dcbb549725d1205d81b053ae116067fb442c7baa0e6c18970598b69ff09e1c80da0a86d9fe163eecba6f23f60aa27fbb91326bc1e9cc4cd31818d7d6ab24ab2f9b2471446be7642523a634121a505594758f4a44cc248c3c5847aafab54374396acf411e09e4b61f1059ecb39c0f47a4d26a73bc93ed54027a6b4e954049aeffde97be8ed59ad967f2a2767a21f720595b9c39820729a2a3a43205dfedf4b83d31f40bb1fb27c26bf7e2b367a99c467db3501c832d2a16e02d531bdd476813534302f78ea88dfe06159a656f4ae483d5d637ba08033d6b0c13a605bfc0be73a23d709672162a8d75ba2584fa2f64d9362dba12a89a0f01253e4b0a85c938b752442acf613035cc188ba6481f6be654f78bffd1a43a4e4c8d6bff2d386d044e51acb286a15f5ee17174220c766c914a3024bcafbe12bdcb915d0cd2c589b10fdbb373157f0b9e2fb265bea6b55fb68debcb19347c1dc81182253024aba65adb577b37ed4f59b436d465f740915a58e5d3eeedab628d4d08dc898ad87714f9a330229c720bfc49387144638d2b6423305b5d27309e40e8aa27d38e61818fe3d12a8e8b71b0efc502b190684c744a5495b967ab2d048ef03122b82c9c7c9143b0e25fa0a341e1448103f2707e68fc824a15e3ceee056717c3409ea9fa650d2dd4b13baea10f89b21e67f3c8e178a9e907f73c2708d142d63f9b09658854840942c909f06f1e906da8717333451061fa04aef1f3c4ec891973c3f8b649fb606eecce636ba4bd8665c1e2bb11dd8c9ee33d262172c8d84c2f64671c723a58c553a85c8141a1d1364a13277d93c638df464de3337848a035e43c559b3da54dd820b52a3203f4faee4bbbe80a5d86797e7fde74a3ae3b510d831162ac52827addac4b8bdbc41df806cefde9c06152cfc40f86fa93f7a494c0ba2300105ec9fe25a3c2eb3486e3299d4ed1c5a807a382e888d2e9a2329dc3e2cb04e4ac1aab11d3c4976f4851fc210a0ba0de4cc34d042c88b94272d4ca1db2a3244a8d775dbdb1bcb07a95f5fa19fa6ed218f2c5404aa18d70ab3a4b7229d79119229a9c208b2ea231e497dcd7390b0047d7557a247ff186be4f9a5385fe16d4c948ad7bb695d6571ef0f24069594087e4621bc5f7b001230e7704011af6caf072a3954a0ef552f8fdff89226ed71a89c2e4bed1e24e2b99d96e55acfdfad268ed70bc5888fa3f931dae58b07e5348e3e1b096291585f1fe5c90d6852b140c2c4f5c83d527d77681e9e0e7e8f8e9bcbe94f85fd5e19e10587ec4fcb04f12f30ad4f371cea1d7a39f3d66490c492da77c25053532f0ef8c48f48bac725e85125e01406f67e892a288874f3783eb1dd1adf0bb7b58ff9c1d3f4d10e334bf1bd65979b989c44c83c8198d3c94dc45cc26b1e7a4cf5555a9e272d812d60d6932af38195cc2af0a012d15995aa8d5906f3a6622891a62f60ff4956832ad84208ee868c6ac705a54a46578bbf45342515fb09b634d984030005b0d325051fcd8329ddc44745d3e570767019bad4b1622b61186e2c0d097c3f042a46efa45930d0324a3aabfd2c01dbe29c22f53f0db31dc4e4379ce694ebfa04f8ee76f89a8ecadb7072dc707119faa7b70c5ac335a7fbc23896450c5416caedde2c73e357ec8cf8314061335d858961d1ff88b446c8266493bdb7dc7b07740b630a6e094f242a1ea8731c922808bb216c0289cc1cef04eaa0ba05486466c1438eb008871d1a220972fc25d2c73f3829e361049263c470242a5e318b1c3d98659ed8e243d00412e9733f361978f1480869ad1442383b5b615cf8d9f493f69ca8380447147cbc0032fc278029f3c4f609813a100a8144e623fe64ee0c4288d4c48510ca3e6c092194a62929eec691a8780843c043265d7186173312b1c475c6149685a1c5396d19cc66760ac265783443984ce790b7bde50c22ea19485429e71110f40c2cb18ad9c187521257c0c400090e3152a44e60861a5c8491c5932c79441f31d8e10a0e84a08119361ce921e50d2c31b820b626e56026e971391ec98d712d0f972487857225b161479842ad38e306ea00398447ce4003aa4696524a29b9a3b20c8f66f86206a3ab0611765f96de8210c2cbc3cb80b15d49694629a555a2e04472c18568759c1dbb3bc6eeee9e520d2df9684a51be26fa79a484f191ad73227692a56ede314fbbf5666ef2b0979c947ebd7a3fa5eb99e7a4e8031db2224d7bc9a46123a5befc20526752eb2ac63f17ab809774ceeccb63b7df7e4decbeafd266ba9d39c952afdd5e463ef34abfdecc372f7b3bc16e7af57e306cbae63991f9073a6c5909c3de3e839d943ed0a1747b6757ffa3bdf41facb5aee20894ae69ffb118fb6088edbafcf63ee6a5e685b14b9c99fea54c5e7b1bccd9aff49c5c97c72c666fc2da7392e5e7c2d2f4fecf75f9537ae92d607d951d8ad2f221e843559c7dd9599a1745aab497bc275014a0d21e45aa4ab73c23daab87025469a7de9156957e794e4cbf2e6ee1099405a8b24789aafb0d77f4a543550b51a22a7b47af39c9f263c21dbdc9c976ec1b6e21cb7de92d64d778baa47dc0c3b60214939908e5213a14a00abb1e02ec501555990ac35175654a6c87a31e9a38eac18848de017104f97854eb3800e6c4c7f7113cf2200a898752467673ceebca8f0c35e4f80a481d20aa780d5cc9f149bca8e25109c0649b7c348396cef1f149cbe7189f8a7be418637b50fa31e280528ef1251b222891a8d64894644993382425514330949600850a0cbc7c0103072154f2974f64d9254b182e2ef8e18da130aa0e98e1050d1baa487941172a19267f26a0e3066604d1c61140a8b0a11d56a086981468c94155f5c8f22a245902a65760441b4a3c31668ca11d9054d28930547491831236f012055443fed0688994982d46321871518714959423cb73ef38b8e0845141165498c007232a8472c872071a5aea78a2873df290e1622ed8e0a1751de23cdbdbcb7cd968b06c1fc441b60f426a22877c30a90539c4d2db27699dd2ed8db4cebcb5f7699df9be93cbd33a143b99a9d699b8b3ec775ae7e2cec23fd94bd889e9f7d94bd8491627f5a55bdcddd697fe437f5f6fc9eb5f6f8379468cedb33a7d6bbbd475f03ff3a6638f59d55e67dd49961fd3e79d64c17067e10ee208cc9b7e64e2ceba3d527adf49e3cec256a230115ba7eaacfe11d31b3bc9f2336fc2474a4efa250c5550f3324fe6a19633886bd51a638c31426a9bcc19f207c364e9868403cc0d318c440d49541f82f14088ed9b4fc04ca23926e6c00493955c0bd8b05bec536a25d83760e600c340134cbe26a594524a317aeb97c78109265b0c548972d7130db64ca2fec48aa3275c6e3ce8204807e407e7c3a6e6443323b359225349cb2e7659abd25914d5b8dd2b5895cecee6c491d24b077984c9f050d886aacb83aa0ba50ced86743a2d3cf33e52a753cda32d46e4f99ff90accab2087cce4790d20e5f9244ba455bb7aacceea79e0c7fec22d588cc2a1caa72de691079873a62806a1832336142a0eb51837b100663bf293e791a85aebbf9ddadd9587849d5a699d3b3c5b3d4954efe4fe97f1d06f929b4dc7932328371c458912258828569ac8f060acee68011b2d5842862f5d8458a0c31459240125881574a938e83c8a1003ca1c63b0ac40052be8420f18e8f0e50d29753c29810e710b34a38917ba54b1440d424009a288348c08624a0c5074b003d261840cee20838a1420e8a0e3c90b69dcb0c9286484974248d4200e2a5440c61d78f020f4020c5f8c21071454a2e4a0ce514594289790972f80e24315455ebce4b0865009905c80018a1a8c508045fd024312543629a3905d03260935da98210da31e5c700586171055b1c51a44d41bc070029b113012c82ba848915c6484379a410c321451c61651ced8400c52a44421e68c2576a872c03044a52517f905360e6d8851431c48689c81032478d4a1861d536ca1e10615ad71644a3fc7f66d958a8637a001962b736081e2058adef24216998eca15485fe89cb00a30475714ed40c61e2550cd12e45006103748028d16a8261c795a1ad8b206e68d6c3e2dbd6c1dbf40a1e7e41d2f542981e43253b4ce73f39f73bee0c2cc7998b387b9821b50a95b5aa8872979c4c184155e5630858a0e11040a84982109389048f0860b459d498aed3b552c6664c1892ea844b1c7d0194c08edd0c41d329061071dcef0a1da0089396426a1003ac2d0020f17d8f8620b91328c98630d1d7c40028a5a0317ac48891409b85a430c941cf63083861a84c8e0053940838da23276a86e1cb930454a550226a9d146d20bc6a8e18231ae47097260f4050d5bc4a08d3da8c01f3598c1050537b0218d2d2e0e90a84821431b5a8051d9b02353ae099d380489401509228090713a3eb1d14bac626ddde243102ec81046162f888e70beccb0040f797401028dba461775cb316ae7b9190338032ab4ca05129148dc7278bf38c30654bab0038816a8e619763c092307318441c509aa1a2ba01207d883966d599549eb1170c8c1051720d2c842356140a2872a329012832e9ea8664d234f1d6a3e71a727526ad8a0a0e7e84f55d0c2680ca413c0e0891e54f487239ab0811265ac400d2e6c1c0d0d452291267138cfcd20f23c4a5e31468e198a43845c1031a60b126021a56e89901bc1091a2244a24fd1245450c3160924ddd1469519a84ca9420a91162b48bc10c31d685434c6f02025128911a6a4d1181aa628112111618aa8c2456619a28a1b56f290038a052cc184153d6869038c1c1206128b313140a1496c91d218e42169d85ab54111e95331494c1c344422714b844442a0a00c306470041179fc80c41c63a64431c41329ea1999522a668d2894d21298e042940229aa54b94245bba4a322ea70430c1d60a0a24962cc880116d98d3b4cc11da8d32dc5504a29a594deca982e5ed8c0450c16a8285011698439428a3c5c304245699029b5329d13a7caf69d4e41aa38fc9122091abae420c5053440208b973accc0838a20be5433c47841e7bc0189091e949891e3420c961ae69059251627508187173570838ea33b3660851819c63cb1a50933ca68432641cf5126323d4ab2600f19d84095d8030ba299a2757e9be7a6511b55e46083943bca882306d53d230c238060a20e2c8ca864eca1c57655269d4fb509289d56b621d9276c608f5eb0db39999d821cbd20c651fe70727cd19483c916356ad803c9063aa86020eaa0e10b1c6eb0658e31f6202206aa4484f41cfd690abee022650e3058e48145458039b08c9103091ac4a0838a8a9129258a44e2964929a5f4a794d2f3c821f40cb04135339d5db39452896390fec8f9d4fcce3ccf1a799e0118664ff12d662fcc4db159f8b3157fdb9cf314efc2b9cb213c5eb4cac3d935b21920512d34638e69c7ec2db27002c9ee61242d1706885982304464791c540b3078a182293b48318495de823b2a8c0d43f94b593368ba6cf2f18a15a26fca2edbc6c6970c638c3046c9c30d3982010366cbd2e23e84b187240ffda4a3c01efa6269afc034c76d5b630cbfcc372ec4b971d67a24e50b9c7208849cd46e484864c59b633bcca93d5fbb1bc3212dd49a94dab61ae29eb85b0ad511442989987a902001b97f6566923291464ae3019050207334041843b2dc47d2d780a4339a72f7df60729b2011987bc322f74f72c802b2508e58c9c443c8c723261e09bfbcd032b573cd59a9c533aaae8761ce00323d34000432cef402b9716e7ac51a0b0051076840ee47a8f2600e9d0528e249dc3aad8aa75768723891c71132c408611f5481e7914f3cf1444c0ab266b81d13f879bfa257d287a730461ae94ba0fdb9a2af7fb55792a12af52cd959b76896a1e08a62ebf512c33b3d166ef20755b653fe628e5a09dd9a09b2a762184274c20927261a4d34d1440c43d43159bd63b25a4d0ce5e3e30d0bb6fe47315047c91303c5a4dc98857e7c7263d652948964ec7766d7b3bf8790c8c7a43d59af79df08b2f6311941be8f9733fbe569eff3f41593a3c59444ccc2a519e6c11c2df659848886bffb2ec11e5941ca5366518b26d8789ebe8eac24e579612635ed7745245f0c738048b626d8cf122e863f1933767ff1771f84d9f7950011c917738048f600f6209b210ca18fbdb168af43ed7d211ba9980bab4c2651539ee4b924282859fe160974a40a1615819425861245823b93611714e4209f7ec8a25cada8873760406c1287cee1c4b0954eb312b2fa6ba1b990aa5e3651f399cfcfe016b24c1adccd43d5e92dccbc064f2195f54c466ccfd807064022a55cef53732592f2860a26d7cef52dd45a6b10b9d6a895e4d86a7daca7f1529d53710ddbe6a51ec904e008d7eb290087d8d763006600ea34816fd47ba9966dd23ab2d67a258a7c0243f00243a8cfbc4886877992043084facb93506414398344d5cb78b1a873ea370f49a2ea6da0a84792e1c4b0d1084495ed1c2a8b3079797105103fb851860a1ed658bf51eb29dd20635c9f53eb29656b593f308420636c5ab8c42f910c19251679c522e27652a85cad0d8e6c3d6ad71b873922b54eb619dd3aae61db3aa7a80b1c6100518875ebb20a28b380920ba82382b4fe71d0fa27bfc08961ab19fe9298979228ebf28a1c226fdd3a9030325b43d6b22c6b4218420682445938316c33c30faa6c180ac39c4459b7d66da2d8225204237af96557d8750c7798bd50e691970ad78f03b66c71b7b2c78e791fcd22489455d325140cc1ba972fcfcbdb2f87d85ba7cb93813a110630c7b2dae29824515691498e2d1a452b24cab21e248ded9345d665515bbb6d1cf74f6b160d69305cd83a01105386175510292a7878ba5c94daca6237c885c31e7fcc7ee76bc641225fb432fbc81c064894189bfd07adc889d9ca21298912216b1b521e14224f04003004f9cf8353d96c84b37418024e94cdb2de5df26008f2168e946b6126403d32ceb57f3cd9bee76bcd7f5a5686b7d31a777ea6b1dd98cd89b11db1f1883551ca01f7c865683dcf969d9e07e6505ea10517c6e466d2b95e093dbc3c7b79c4030f1995e1d109a840221e48e5eb5ffd67a55604cb173cda218a1c1495004135f2b5421cc323898090bf5a6bfdec914319caa16c79708c4944f3e2d86e864739a4a147fee8d4a6b8308b35b033f743e69a3db1fcca0f96158d32a494c2f9452c195ea2501c57532921d8da6d7b9d94bed29ed5041677d7f76c2b51088cd6729cf59bfe6fae216cdacb8a5a723f568afabf7cf992ca34266159966559b11faf5a6badd5a28f17b52a7db4fab162943e565ae963edc7596bad3cb7366664c8287bd26ad9b61247a0876f13c4118ca08e45dabc7c71a35a2d10be09d419daa27044b702bdf8401d1f1484f04a8e5792728c57728c5ffaef546e23565ba5726339a7452c5ab6f82628d4cf71db66041879ae5219bb0fcab2ac2797770214524fb5552adbe692b5953472b10ae6d42d98c81e0f14522d2a727d4f2133bd6559160fc7c12bd91c5a498cb59664190a030c25daa0810a15a6b0a1830c352481850debc99652176b49b944167ae8e0060c36a8c10ca12362f8c10e1eb85401031c160c465a342329325bf5d0220eaa051d55c88a195e44c1c6901b5f40b119e346144be860831636ac175c284dd1d44082634a1860e6a0230d288317a4a00b0ba6d0a1250ecb052d64c4d86c0da3450c60175940a1010cc09c2086178486d8a2881c60f1c41461c011a718d920cbc2e88e6bf170563ea1050f19967b619ece81561ae550d22249b32c0b8f20b02bf038e2b2dce3910e5c34eea8231d78d0e1866c49d3d09db10212053f91548982db66ad6c59b14dc929694a88bd935a8b462ac445526152864838a4cd0842b863bd0b40d444234f1f723f6216b6c0ec0940942d0388dc4fb58e4c8591a7d01097b408c8b32795ad2b4f105cb9bd64eac98c954024aa829b41127644488180c239a494d253b9513a85a28056547161dfb2354e0b6f1275aaf240ea7c569b56fa932b0846b70478eb777adecc6097eaf39443a6152b3681acf2d54addbe39843be56fe32afda9522a26a31037b4132b8178bbd7185db6794a3d324e934e4fe6398bc0a23cf58876c68c65d831dc59377ca538ce16337bce39e78435439c86e3421c3beda43e9d03fbbfc1356cd6a5554521f5f49677ebac8ff51d85c0db68edb6c1d9694c6a514a6785d19bb3522728fda4af94565ae37c4f5a29ad1d7b5ab42e71210eccb8a352d6278e300f7f421c81de246bb78d882895f4452f1f2ce276be481489acc0a27c1da2b2852477d45657a15a678994df0e67ad186dee244092d8e229c4179079dea7396edbfa0b0ff3515bc95c53f0f6d2e2eec7f93a51110767420b5170d25356a3a426f7379833e925c540475884105adc333620191ee580040f9b4d864739ec9075d97e647894c3500a073038bc008b89c48d16303f6c4b5c39c281c8b4e5cb1899248ce298d94254c6b6c5e84866093798e002e68a0d9726a8949200737443144c892207dc30648faa200da16da962e4802a454732d47044a58eb6d202208a9ef1835e32fc2690386aa0d8e2bb6393e0524a29a514c253863459098c90520aa99c4a58b5bbe9ac565b3cadda744ed14320c9d51545c810842ec32dbe8f237f48ee4a81808221882073640e1462050904c832888d145bfcf74e62caf5800c2a5cf202f2bcddac0766c458c7b4345f486983943cbbe47964c31639274f0faed85020a488c0e4f9392d37e7fc801e331021460cba70a1c70856e0b085172fc0e1051eaa690de5f90405791e6f6f6c1f2abe7b8a4c244b99d13cee3cccbc9be746397cf261cb721bb68c32368cb2251b5162b021feb9c72eee3a5ad9163e5e17b3f7e2ce5e18ee6cb4a00cd35146099b0dec8e7b55c8334fff334fe967e3790d7711da4bc2fa206a88902b8fb47ce8351d27f31986bb08d06bffa1d770875dfc339fe10ec32bc4cca9de399e954d466c16932051b576e0c3160f21921e17c221707653696108b17d9076ea25ee46cd211520a2020ca1bb293481ae818d8490e7e4f199482aa002248251eb51887ca9069a3cd91045e1edaae6963db50698f2fdbc254ff3e6bdf3ca19050051d4039b011cc95d318812400a8d0201278b0b6a3210456f5ba7e6d603d0410ab91fa708ea9cf46e9c33b2ac2fac305d4ceb72008f0f771491135792da78a10a1b4ed011441837601a4c998117465da861471df3030da214c604f4da46430928342806134a880933a50b328a9047614a60c350e1b15c5fe1c31c97db323c222202030226dd31369be111110ab4186c5686474426d89288623822a26219e06304495229c3a3297874d1c3c8b2a0d115791041bd007334858ecd283b059932c6142419651923dc6e6565782b9aac0c3588210fbc7c92a1442a128362adf24e20bd94524a29e56f94f238fee0e427802c8164399345c00824d2b006f00cec819865d47aa4bc94524a296f6686a752cecb962d9b521a69a543286dfbc317573ece19352f48a2a29129b66f22694582628e01157f2854a69797b9fcc6fdca7bad1232797ddb78aeebd22ec6255fc732cdeb91bff0778fca97b5f24ead4896c92332bfd6e591ed339fb92f953e737fc4f499cfe09b61212df9de22c9177fd7a13dfde5d15b6faec46d9b8c67bd89c4764ebdc97b09f2c8f6d2a316810d6ff5db86b925474c26fccea92f35c9351e6a57cf856bb58fd622c99f849f90b52103ca80b22c0b02ca80b26bb120a02c280365273041ade75fd0b40edf50db96e4a0999908658b3f70933d6ce22ecb2cee2e3e41282bb93ea8627f41b92437fe5888391e36fe9664398576e355b524fe3a8cb3f8fa45cd79da75b3f7783531ad36c3ab8b6591be8fdfb17855a7cc773297e5635b38ca55dbe5af0cb6de16e255b6e16a3deb6a372d4b04122c1c13c6ac5f5bc29977e1ce86c0e5ad61904c57730453e84aeb8afe94ddb2b13aeba9e165c3cb3aebb14f0cbb0674abaf2b925bc8d9e3c4d6a7e9b1017d1857d627c44e1fe4f5d93f2e77175e692f7da789bbf9fb3a3ff1ea628ce1d5350f8b60a79f175e7141e6338c76f55452bcbad7327a3b8ab36ca5d462152285ab3d93bf25a735b9d6e9b40aede56b869a16f6696d364bfd946ee1af4b2137c9f731c33fd6e925bce9f1487f9e4eecd9cea5e19f7a8bea3413c6de69bf87cf5e71a7e11f8a2706b3ec907e3e4bed64d7283e4675ce3bed58e9f2f6c23ff4beb577d7efb3eec23f1337ee34fc033ba7c3b214e6f1d761f867eb1c78ae73e0f53331ec1cdb39d608aaac58aacd4a220eea7cf879392d684dd88fb076574fc9c4418d9a734e58b7ee56527150a7e8a5a415ceda247f9e92c641bd2357f2969c5f50370fb92c21bc18bf1834562cecaf6353e20fdc7c41b24edbd1abb1d3bcaa94514e264219e20fdc64fb2f48ee2e7c8250ae10d2f70942d94259f1094299ce33b6c6df7673c6263f79b817c622b61b35138a60ffb6fc750dcfd37885e1abc32ea5f0d108bdac3dedebf0f1aa707177e1956dfc7545f2924cef61de7087e15595b2c22518ee2e5e5d185adc41bc02330fbfd0a455f6aebedf70f69f2de6c146240a7e1dc5ab2512053bd5d55b9b855758674f6f5d7b0bf32c5e7515afbaab78b59a18da3970389bb1708393b983c0651c8b839bc9b7fdf50e621f98ad086f5fa7fc25842bcccc4207998950f7b36c73d7d807e69c4d1b631b5746b9fdd5518c3b6badbd2e94adbdaabd2af65ab17a7b6e7d777d1e5f5dc5b265cb96ddb265cb7e563559df63ab6559d6b659d082d0a255d6cbf7546c421c93e5a3962ca36478a1dc13c7486c421c9365941cb56438266bf1d244522c72231a7d91444d740ebc95a22b46124b2c11e94aafa72f65e3c845ce4025ee7a288e5a240ac6317908152545b413a3151e15926c4b6613d8233fa7ac40095d0f128982251a2ec49993a8c37edd62ecb218865d2a55146257f7d8bd8e590cc36eeb67d339e7775514d29ff613f344214d4fa1759fcea9104239a755e7b42a9449791201452d74126599f4d358a697da43534b0abca87d6522d5a40c239829915474348e5fa616693d71e77be7e2e0659d5aecf0ddbc3cfc9cd05ba14288b9afa3401c4d49145c6125fb127242579c3fdc38437c9878a027e180200209b8bb228c3042fc150b3738b396bd2ecb5e97bd456f2dda4d9b522bb37342888d328423c357fc01e100e14038ee29a5f4a78991200ab58803c8e738058244c1fe0290e1a3c438d80c3775ae83d676d65a6c59567f852db3d0a5f229be44c1a7240afe393537896a195c086193c65dc798e486c55dbd353aeee4adcfcbd6cbd6cbd6cbde43adf660784a94bd56b5a7d67e47bb4f0a9bc2d632d85d0f2dcbbae57df5f0f0d6eb693cadd7d3f52152866072f580509949ecfa104c8648f9b6772422e91cf8282a1025e9686549e740da33f10f6e41a26053afa7c99154e7c0ef6c3cf08816010dfbc0b9ea693c4158793d28ec89cbd1f776597beb5767d9e38ebeb37037dfade82dbaa2f8ebe8b7cc65782631cfafa3e7323d05a1dc4a4a7bc546e2fad8d7d4cecfe18ede2bc17efd7ebe233cfdb75d9dbdb516d77716f681b88f3f202eb3709399cc2be9cbfaea7d5d3d34caa9dc55ec03733dada7af3b198a90cad048e2a384b038a1c012638cb7b686243bec9c7b5318b6136f7134dd3e6a474cb728946e31ec6a8f8276cb59b747c1babd949346f87a2031626af26ce7a03ac7dbe1f184723d129f42b2a3024f1214ecad4bed88c5564b8edf849ae07872ac18056bf9e4d85357d5881cdfb4e21e212c395269d120a3f51be387e3d5e99900e7c4b9b3ab57823fa882ba5866a126b6d970ca52771f6a0e9815c87d210c41de03317f563bbdf8db38a915a1357e6a20c76b2708bd351f68811ce5a4585620c77b710fa47ffa934722d55b3dad53ab4f27a5341ec61b670ddb37022a397ec639611432e36cfc8d0029c7e771398053ff3e0b37b9e9a4569cd4b2aa9dd6ed7525d87eda6965be94de5a8cad4aad5a6ba4bf358bde8d13912886f1723900bd6425f01d134a298db469d39eddf7bfd743a152a99d1d1e9ebef3ce6cdedf7bfb3d1816ca10854aa576767884b294da110ddb6de332da5afc8d348b4ddf3750c8e946ee4bda2c2e80236ac94a704e51b8b0c542181ba327c6f7c02c94ad4f8b5a54b5b21e2dfa68c54867853346956a351f677dfca0ca51fd8068519e1fd0859467d15c82b30226452c70b030638c22a87e4123cb4aba77b5be8fdd3289b8bbaea43beb4aeee32dfc41950d470ffe8af6e68a140443e88af18d0baf8903a8ac047a1d93f83e8d34d248eda1b6aa3d75e5f558af56b5efdb69a79df662f35a598ba1d5633dc2deb68bd17bec6294c658639df14aee0f485a8971e2e10217b800ca08219c8f10629e2804c2969452a952452170857928a5f267d6b0cdab542b9e2824be318f64e1e6a8d2a34a8f2a06ba9068d19c5b502eb8e0629ac05abbc5165bcc804483165a685189bac8c8c8288b2cb2b882051658201541b9e28a2b2018291c580badb0c28a68471555541164be602bedb9ba6ecd55bdb5ea4f4c051554501943972e5d2a0c7485d5f54957e8eb8de10abd9adf2c2a2a8a5860d21e11461861ec430d7a2bda43a96cd9b2a1b6b276d5538f6cdb7504c3eaa13657d6e7abd763adbc1eaad16e410b5a20ad5ca12fdc8ec98fed98fc580c1bff58788a29a6682129a590428a1d2a4307e175ab7167afa4abfddabfac1a451451c02ff50d78136094304a1825c43c114609a38451f65caff07a3d8fd4a07d0ff6388689094299de843886fed2965452a1dc73fdba4571b7c23edf834d142a95dad9893c3c2864bf8fda910cdb6de3b8ee48f67b14327cfcce896332d48ad45b25d89eefb1532843010514d30d99648ff08199499f4907c24198f8c407041148f8211c191ae194ba7170802c0ec23c99c18d242fd247ea40297170707c240a1e48a2e08c9499f253c67ef5e92a62af53b6d0fb4e1966a013767bf1076eb2767baabf4e39bbec3e41286b18cbb0941603ca4027d3296b39a3993995ae8c66c66e55e694af077492311de8644f17927c9df2d5f803ca2def6ddb6bf8dab6faeb019d4ca76c6d2458917df0e8dbc92994ec6efbc0bc5d752be1aebeabf75eb75863ddfdeb7d5065b32712acc0a43ccaca9f4aff360d77f7ddd5eedaf7e9ba4e42466578611f983f143c2a93004db114c6de22f596f6cc962cacb8c9ad595bd895f7b2b65b4dbb82bccff41a442d186e54320dc082b295f601580b9617d4b9966a0d680d2ae5ec35ab1dc39d75b17379b3ae86b36e792ddc5d96bbecc58e599966f27a634365ad0884f0ca3eed40a87c9f29b98739fbb56735174acbae965d2dbb5ae6e350bb40a85c73fd5e6f65f37b1f5e8f0d9e129569ab7b9bfbf07aee6dae0d8612a579351e93982fc871ff75d96de3b8abc3af39d4aed5edb9d7ef6bbc9eebf7ba52d3f0872403a132ef43824292b70be47dbb713f7efcba8d4d8d0f59f30e3ae0a9a9a9391d6a3e2e909a03f9aa7f7ff27abab31afc5db74121c93559679df535edc7ef2f8dda110f6c7e6bd69e76a9d9fcda78473af8cd6f6c1ee437417e6363e31de97ed3fdc6e64766f38b24db7036decc7f78db35eda7c3d6a979100f764e8dcd3bf07cdc833e90eef6de3959dc3ae80073dd45a0c3ef1f2b20cffec3eb0182a144ddfff07a320eaf10f3c543749a0fbc6d35f8e372bf43a150a85c2d6bcf71ff1863a06ca40c1ef7debcb1c11eace47d41b9744a6f9df9b4db5a6f5a021494ed65345310fd4cadb7f5d60dcb64997a3240d9d7d66df2b590ebaf3499960055ef0bcaf532d76e795faab7d86a3503ca8ad05b4a6eded8be7afd068ded068dedc21f4c7a038ded068dadb185c60d1af515036554a814ad172cecf2d6e21596b1cba4f043f30db387df6e2f3c83e1a5c136eb343d36f7766cb3328c69bf3cd95998e9da31cb9a4a5a1bdb078b2c0b07751b1d736bdecc5beb7447ac7e97ddac6fadbea72d63dd8df10f4d77af6fefb05bff91f9e99ab9ccb77c84e6db69529891d97067e5cd2291461a483b39bbb40b420821bcb49d7cb197de15315d26bbe67ddd76987db276e87d3bd92777776f7865c23238bbb66d1cf7a350a914e6b39301ed9cb69d2cf3eb7d3ef97e22802071727f41be53a6c395342122eb7d3e792767a66bdbc6713f0a954af9689977cf35e57cd8d4e013974b780820e791d735f30b6337d5cb78a6ebede4999d8d26a3d13ca09def646bdb38ee47a152292ca56bfd258d92f9edabafbefaea2bb5b3da3ef30bbb1b7758ca547a87fddabc0eeb4a78556aedf65dea6e0dc31d89dac1a2a589a2686465ca0a11678b8c90a0972577a721eeb452915bc292bf54d6f06a75f18e44ad22962f1922d57cd96ef7b59e920c5f9bbf7fad0f1fd6c6cb7ef2823a67d9e5b355f65376eaac49634d7250cfd826d9b4d9671e946f92b1dfd61e40f38bbde650abc150a26cf0b724df26f93ee0f425396b627f6b324fe63e3cd3af27731bcf74a899b01d3b8f940fa079034eafc12bc47cc2437034def59a7018ca9cefbe14d49bcd25686541cdc6f6c1a266a3fb30df88b17d4d23ed0b56e9f216845dc9824c8472e9f75dc21fb8c9a6ecd3b41384b20977d7d51076183e412867b8cbaec4f4d233d34b3795ee772d19ef4b9265be6da7d3756bbeec1a86dd7bd15cdb5e73d2eebd97b5dfa6cdd07079f368f08c85b5fb1f505e32444622e9675ca984bf24f2bacc355d49e9da4d259b6736184a8861405c917c13c666bd7f13868cbc2fcce02fe699dba7937de3be3de65ddeb7245fdbe984bf251726f31acfca138472df0e51731e5983a12ccdcc6c25edca2e99b37b6383edcbd86fc8d8be7843c686e12f0ed96093b7b94fc6764346bf6fc8d8faf637646cf2f0965ed137bb8417bbd61591b9c9960ef3922ceb4a7825834dd864ba57f3328bc998ae53a682f5be25d9fe7adf96ef7d761eb92493f9f54c4b86389d477e0697accb7825fc795b9ef1acbd3456a3f194d4a099ad7ca3c6f6c5216b71d05463760adb5fd3655a6b6de65bdf190f4a940ceeae779866c21dd65d5a5f18e24da256cf0fbaaeddde63efacafdb7777d92ed35650a2f26692d81ca98cddde94b5dbf6a3503795ef6f26bb03c17e8de49b3292bbbbbbbb0702216cf803432c6f2ffe8052d7853f23192875da664ade97caa56bde67246bbf7d1f1b776f85ae58ef3392edc9da6dfb51a8db12779d7ec39ff581bfcd067f5c0d4e813b8fc41ca63995bc532ad3a4f23583bbcb5eb717500a85fab7cddacbda6de3b84814adc42b118b964c85eede5e8248dc7fbc04fbf8335dfec7c569b7fb76378753f14ac462651cbafa2abc946aedb6645388441985fabb31f6f383c3a94b05a2a41c8932bca49134592e6c7b5d16b97ca750f31376dbde07b35ff8a7069f30768b7f6830c49f6c2078dab66bdab3ec97cb74a64770255f9f797b9f10d107bf94de19f6c109b6af6fba2fddabd7bc12fefa4b3679d8863b0cc32efc92ebed09c885d96f2f61b6f40dc3fe996e4fd39f29e1afcbfa57d6dd26ebf04aa4aef1cf4b1677d92dcd7d97bd672efe819d2391724ccaf0580a349f397cc724a4a42c917e6866f0124d5e3758ab592b49feb25f4ab4c37c759f2e97afaca6e6ca4e1e10979944202e6bf7ca6bde0af69a066596e198245b1afcc54cf319efe3f2cc37ef4b92b7df1f9493b90f1fbf5e53a315b1b9f6934fe77eba86bfeb35b7c11f976d7efde47d49f2c9da224672762dc3dff5d3791acedc87b7fde4cddcc60499cb7c6b1ddb39d9e9c9e63f30e74d1fd7729fc3d2878687006203a4f19761202ed35ca67ec693c15f73d994651a965dcb2e76d9b6f6c68ccdbe7f63c6260f1b6216608dc484b8f0dacb22b685be7be9c9146c5e731df3be24193b4c92fb6d836bf0750c9e30bcf8bbbff84b9281382ce39264edb7dbfec7c8f5be24793bd47a92d85f538d67b51478e48569f04cf6addee46df86b2ecf785f63a0d225f37a61d663b5fa62200967f6699dc65daa757632f7733acdb675e9f227afcb68bc4ecbec697e61d8c77e529dd38dbf1206e2b275781f88f49d0ee3aeee32fcd361efdf144ea779672f867fae9f130de62c2dc9ac05d997f5e5b38b577d092fe969c7ba22df7508af7709af3408bf1672f605b5760be510ebeb55939cb590fb9af719fefa5717b9b7647f998e79dbbdc4dd3d7de591eddddcb995d4c76f5e90bc26cfe61b37eee5bf8b83e48d1b5bc77c789337b37dff7659a9c3faa6974a269bad128656a2baf1d78d6503baecf7d6b1778657d9fbddeabaf64bc39dd580ecfdec6a0bafac1ccf23e3e3668db8f09aee0da820a8946cd8b43deb10d908000040003315000028140c894422b180408ef350920f14000f8ca2446a501949c32489510e19630c20001800000000022333b30d006d20f37d05c104462b28934f2802460c00e2e83ac395f6a5bd13b26a2f3ac2eceef3609243518074d87904e3883a6754891c2f118e2c6314a31b9e49c360599c9a7c52d08306e32ddafaac3b424b3808cc7a3b9a7f7cb2a62780ad20f52a096dd897a52b4d3b6f1f107a346c58eb3e0747562d75460f4aaa019b2991ad34837f4b3d44c54d54ae8de1d56b069899e63c91873805e9fc72edc6d98e0f2be106029b3162785cfb94626c99b264fbb5e100819a6cfb5e8a478e4845894e40a5e2b33b6f5fa735fcf0a4b98653e9ff181fada48fc48f2e8d001b76ee2c68094e7e316c4e586454e33c980668c25e616c3e8a49cbc4c1205a2b86a61ba1c3797fe6afa0cffe5d07a9bd94056be3206e64172d28c36d9d3df103c6729555d1d26e5b1f5c3a1a4696ea0a906cae18787241ecb2ef5f81ae2a5a964e86003084309da9aafcc3f77376775c8dfa656eb6ee9ca728fc442fc620f1e1e4e698d91b056cea17fd73e90176eca1616458ce41019e9a721fd2663eb7f39c9f4eb62de6ee14d82ab9033739859647cd5519b3163d851e4351f2983a4844acfd0e87a12b474f388e635d656eecfe0a8aca3abad93423f3f4864f77b09273a01e20e9aae9f18a8614eedfdb2ba73d23153211e03aac98b0071dc4e00cf17a65138641561a7371517826699180745e3d8844b949d80de0f7d84f730ed95a0179a4cc7268603a90ed333f0c45d74f72cbc89f1313423dfbc8e8c0ad489531aa3a90acb01123f3c9b6c653a86d72c802b1dac51a6432d4e3e7cd865150db1906977f1890b745872f30caeb9044239bf55684761f16d923afd7cb9751267129d9b3f3b3b7790cac302740df227610a0acf1bdbf19c42c9d98d0db6372d45629267bff7a20e397e7b6f278992c4fbe819be89f5469e80cbac025f4cd2cc355b89849c66243573f4a09e1d025babd1785336030886174324a5f2bd555c9080d85c24867691676af76418eba81772ce3a37adeccd1824c70322ca145672d501fa6119407ebf119a67c7304e54cb2d932939de32fad7c42060150173781e01eb29cf9cf6e54bdb70de70fe142cf43cbc4dec80090598bed7c040166a6693fdc9b870fd4a56631e1e2e61b346f36ed8492c10999bb6c909c0f9dd3585638bf8f68aca7130caac5d24b653d1e363440be6863265bc0aa8e063f130eb55da07541316413b8133afae9b3d535f13bd09803a5ee1277c8044e0c7ac6716ad522a1f29ccf7fa0fd3a0f716edd602a129da30cc0663f9e1521e6304c6a700f03c574ad9de761d322421158842eb7462917ba2b33c91744a7ead4c14e89d0600bdbef8b0134d071879c3c607ae2c086f93840c819478cafa33171f43d0937b460aebaad90752fe30f2b80030b35c7d33b9891d6364c4ee1bf222b93431322c247a2ec38bbc2e0b2e29ee037efc41989cd4507900dfd5b0be6c90417d537bf21e51f2155054ae7a38f2a56dd37881d4c60834154d4cf5bf3afc082da348f1ee5354543a660bc12f336ef9d10c1acbd4c4f7cf263eda713d9c9c27bc6a588383ed1c303015713b403f21f5694abbcd11d3c903b811b9bb8fec793dd1d607f9a88fc628a4429e704cdda5bded3dcc5f0a01ede3dadc0077709a8e35030b67458b804c8e9db66359334f89164eaf57c858914d40594c0110ae67d0b582600224fe513f884d35f4aa3c91037e532cfb5f192957f87219867e4a0313702b2194163478da5298a7f07119b08dea3136f01a7d521c4d738871019b8b496f53acc7bbea64673f874ccd738f10c8af38460fd217c8d8d509333a60050493f56be86e04056962ffa97b78410f566fce198f749b250d740127c69d4c4583203c588180270f4ce5fe360e65a5d03cff08fc100bbc147a7edaf23a09e79c4de9b5717dca422ee2cc958b6dca8fe23122fee1252e2c90b2ce3e5c7c70dfd355559a21d6bc8dce5051e28800524318454f1f8b8a2f86b7625319af5bc8ad414fd870c599293d3f02cfa2da2d7df75e39e769f96b949ee8829d6b5023601bb86153b368bced66ee67aeff76ce448176a14b13b92577576667e7264971e7b9e789abe0ee86f9be996475715b0bdccebeacb4c3b026c479a0aee48d55a2005cf727aadb35a723a255120ccfcd019fef4fe37b092ed7bb42b64d49345b9d450f3540bf365eff3b4b2550a9acdfd10db9b58e7d4bb8c6e5ed441b10f1d4c1e3a594d5a532126b88a59cf7cc5a989c139d6ba53214b1336edbcc03a765be0d5581e0530e00d4e734ee6de5ecbc5850581a08200dc8812b988335302662e376715a22845c5a842ee5fd96c3ea40fcd8932e768166b309a0510b5f44a74919a81dfd01c5ef41b492b0bfa4788995d72e2f91822f39b95aa6eb18a3c56b564791d584ac5dae1c3f64d00a368e2fb9c1dd8a1f8d55ab5c9e710bf1080d645573535148e200165f6f66315bf057447c616b755a51443bd6418eda212869d909e88732950f900916d950a561538dffb4484f1cdda953e3c2ef0bd104032d1dc1a80cff2adf53ff3c1d2119602e28d324842ec13672f5ef64f60ce43a3c102cc48e3061237d4fe372a891734d6000c202338157f356800195bdacb5f1995d168c5e86e00eba232c2d2bae0a4a9a3ed31c031b55557f77044c2c771e91850438f8e68d4ab41ee4063ffdfc74c7f0584eefa67c232bd3fe977d71d220d9a92ddb0985a88ff17a8cf45b568d95dda4a2783630ee2648ce0df405f237cc90516a45152506980131adf84cceacf772ecebb64d9056c54760851a39ef08d468d2fce3a24a174b68354bbc1d1afc96452defa2b44e05310b690311b8b2de9cc3e521df971fc3419b26d894cc3ba5e34036804f7aa971c7a9afee99839a97204c2983175197517bdc63e48f077840419d4670515da6391ce84b464e607d947a208c9396095965fb5deb2510f4e3a3dbb13eef63c1d454bafa1d2d9c429db61d134de4f4f85efdfaba7c79643086b01a9a4489e4746c943c93f6da132e9a95bfcd66ceb6f10c86638062d2a0361b50c988a0ac1d8dc6b76b0ad1c7211791a6dd85e75d07aea283b82b20e7310013d233da6818c3d16609f2087f9c2ac6a5260c867a0b849d9f018c0feab84f7a78e234a8cc74b9ea8188c9785813b48eabf3f8e6a6f170b7b19af257f7821c62d31bfba1fb0d3472caeaa70c75b127ec5b7eeb5c4342a6e3c92f5d5308a356aca48dcbd6cc4a092139be381039de9db0ca31636531951bcc9d20c2f3aceb8e8dc5939eb5cf82f54539629a2615baa2a8aaec877374105467dcb72007070d89bfc0d41c0000c1cf482a9057fedd192bec6931c7ff02ff532aa92a7ee025a2dd43aab4e89dcd8b177e6b97ee1d24fc2f72898ff4ed9690dda66848a075b460465c5ca8bb0e3b28a5d58f55356929e72491cf341f1b5f890701846ac4e4c30d27b488c6b55dd9393c654f267d8e8ac0183189a363e655b7418bd0a962dd35a69870b8af0f85f354819b80f72e02efc4ac01eee3a687d29e3f1f5d85cad49444ba0e5e61b0612ddfea65ee50d661764f65bb90aefa172ad8f525a6dbf441f2fdd544508d7acb8ee384b341031be9d4a28a26389e04bcc7c4db55a4c74d5855e84eb9b78c4ac04cbca72eb07d06d86745648314b09a06b7237414934df0c29ba1d064119e09fa7d2dca1de4101f453a6c03adffd0de9182a80852514c55c0978388836e5da1ac29fdc6a8e05d432f088ea69b2e40bfaa8efb57adca9159ad7a61eab54717c9848c77f6e26918f470a0ac2fff273b6b586ca5a21e717891819e04a279f9291aa1aa8851ea942b94067042d04cf90d0d175c10279c527a736bb8e8b0afc048e3ca934542f140837c5f0001534626ddbe6b5d83ffa840cae720c10b9bd43068b8422325e95041bd80230f4b13710ce9c1a285f559f12f28c95198790ed4362521bac62dfeb698b5d01f8e9a074f8fc034530900297c0600c2972e253b90c1313001ff97b69069ad23dceabfc9f3262ba58f1cc1be6af7a0143e7be5f0f204de78a2a034e487fb8abc3a91ad0974bbb4e1db8cc5572349ae686955467bf1ca33d1247057849f2e21c7dff086bdcfe3b67c20158f819a96a54ca3d580f538834733c9d8dc36df25a81f387f35b35c36c587d87f7819107bd349ed764f793a00870e6430b113c2238c052278e3004df298881b9637e1e7e732a56e1eb3895eb6c41d972869b0fb42c3da045c18cd5b895611b572041a925be5b64f31622cd628a918a3eeec7caf0fdfbca09b24fb87f33f859c6af9157217a90f058142c354f8410ab6d5bc91daf4498b382213c9348c5226d0b7332ff48510994d5772175d2ae74e3072a3117a627ab549d32540d965e926f2b2673bec0a2db9ebbb51f492e178290e4d7a59c464ca05828ac108b9ad906e4ec31d34e3b4680ec715d01af6f8c9883bc308ae3efe00b12618d2535315aab36fce1975c1d435a99b3edef7fba9475597fe80c3a9ce59b93d51ff5c69dd4657995b09c0250612d1d6bad6624e5cb401a69c0076f53b0278fa95f4fe4c0aa5c044eb3b788c6ffc6f19bb1f1f3cc3cc2961620062f011cf24ea402abd736dc7539dbb419fa17e92c4467db24e9a3eebededf013f0d404f18613c2d6d5460bf83532d10cfc7c6825477fa550192c74e90c46c5d409a731a6ece261a228a2a1d974c26fd3b413afd5390304c23c545d190bfade5a8153977b64958acefbbdd277533f1eecd349f2a935dd6a8d6541bfe366de86d4589b2b246fe84b356ac2ebaaa6267718507920f9495e03a3c2fcf7c7eb40ca141fc24ca96a7f167728a93ce8e637d728e4d792d824e5f17b925b76b388ffe926832dcfa8d02f11c0af8a668ffceb64e073b631afce2f6f95725a24ebf3b4c4a77bdd22100e49dd22d4fd54fea7301cfc00a4c9e293dc718098eb8a7f47024cb2b5240a554add1285dfc1067afab42b9dcfc786158132bf244853c7a2641bfc3ffddba07dabe644819d04dc371dc2733ca028cb8221d16de68fd26bc9e5e06e56beae7d12c58aea7177a0172eae9c1028f714ac7b8375dc0b538eef459e3444f3759894a66e97a0038f09b210efc5ddbc0b5f0195b9e07b16990eaca65f47e434e9084d2e60b765ef658d882c6eb5f648e68b7cba80bc36dcc65e651486099dd5a66e02362b70ee068bac4cefa74cd0e25186b145263665ecc3a63e811638414e09ed501dbbaf409269da16659557f293b34c423b14a46c8623d0ee429f7a6a5e05523170119d071983bc6ef21f36d5724c8d98029b09b35e29d6f82b65e05978107bbcdc3973801f15d12982a140a76eb95827b809fdc8c9b4f0e0a53189a84b70da49b9ee506780cb8f1ba6ce09a02cbd8be4de655de84911de643b1fe68d01f03b88225d05a187057f3fa480236a6d99cb7f2ae39458abe3b2de1ff0cb473840b1d62c2b9c38ef41719b9dda21b787ef06b04d6ba1ca8664a4787eade609c25d15849740c40b975918c2babeb340f9fdf9286440370c01a007d33851177daf156ae47c24ab601c56884431e5ba31f4481305528b29bd525e70bc36c394c9c68611439fb79c15bf213d558792051b3764f2b4099628567e6aad75d6c1b4e5736d00140bc181c4d92d164ce13ccb72f8f40dcc997e4b38039ccdcf7e5b32a9b8d54e089d0c3a37fec19288b40fc5efb67a7df1da400398e218928049eb381789b47079938c813245f601097bb68d1d3a37f208a9d3afcd4869068362b510719c9e21cc32feb874ca4fd37f59b0019be03cbdb164a97cce70bf93f407c81ff09791a20e83b5a056d11d1b11efe30e2dc8ac953a8e400a34aa0b5cc82654997f46ec76875c22e35ee6cbf3ad47974558215217668af2c674f580d8f766143a75411323d51a965314e05564ba92d62a70c3e0420a95d75a86e2d3281553133a73f124d37b299cf74f20dc9cba5d983b30330205d7b25dae4a71e8e8277644069a7bd22b3b4baeab8e623ba34f5f6005340c8a974d4023ba9131f51069fe0feb7b3bb587f1e3b0212f4b72256a17bcd32abd1a3f1890677f58b77f3000c912b436b53e789d8c0548695685ce61930b13da8219c22be002afcfe6397663f80487041fa0570389112104a61f64c6a42a95ae3f2ce7c959df1c0c1312034ff4d3d6cbffda810d73e1fb9c134bd7f993b3e956c63dd49cc018d8bf0763e36791a672a6d9b3a970d9ea774a4b1e479993560071db6bb22965ec1246d81b270ac4b947af12e6d21ed5a2c03e566dbd7c71212978b9b103f62cb6d21d49ae601a02f77b3918259bb81f17f9325c4fd4d742e9b07015732620cba15e2b00442c2053ec80a32fba5e20c69415f652a6e339d6e1d4b81b707503610057556a7c8bce301d543d294da840943605256215b5aa4e349321af18ca67e4573192aeb836dff6f488d70ea0e0f889c7272ec3e29e3997836d8737ec648f853d858270ddf7049e97918940cbd4b85cfbaafa07901def12360894138d5e2ed191df968c2615302f4f569d0ee228c5060f8a4a1d3c6db620b2e8f5667508e6c60b6d5415aa3346e56ac1e4da8f8a32c9bde7baac8fc217596a9c99db48d4bc97fdb7d0b23d8b61759800f6aeb7db26b9dc8ddbc09f91d52224bc50fb40e4318e3f9b1e46ccbe32b44172621731a6b4949332c8b1375639224207047a9574d7a83b771f657e43f087b0b38b4daf57c9a98e8e07813a2e8f00ac88f3b707f1fee6f004004899d5d9d485db6dfcdf8f9f60d1d2e21eb32b2b91f16fd048a838d0b4ac6ab22c1cd150c4fc14f382c5de1a198f9faa03c50f045a2260b172e32172eea2a873e31f341dcb52a988e9f404944a9036c7e0c8d346696ecef22aabf8d6930e93636e0de93f58866ccc684e64fbf37811e6381d54e38c53deebbee8020980900a4e49f37a42aaa405dbabcd9678e777ed18ce021270d7ac08da99294caabdb93cf464f377ca28cb53fd069a1dfddd3fb6923285858a657470e29bc2cff1872d47c250bc7da6e6bc3b0d8f5740a73f4e052a866bc2b8799553684d9bd445b19bf133aa997530a91c8645386e86502bd8184bcb4eaef901a8b37fa34612c197b899ada4eb5eff42c8b21106fb708fe0ae00f4655de45237399c4b50ff41d3d7b51e77e3f2e439cb7ed248af023554c1ca9545c69868929f8726ac6602d3fd00e9eec486c558453f830a8a0eaaf210395dd87001b98d5f6c64fce9b2ec9a1ba06d74c09d75d7bc01177b432a4b847a97f158668c0a639e3f80affc1c2e9774f86a432e115b53b71d07ba3cf5724e95764a605e91b641bc4361436bbdbc604f1d943a7bd95e11ec82c53c7c14172d88e5ac16e9e9598adb5be6244612e1dd62ce667175d5f2d56117c44388f7e15a1b8353858fd555ac1f04990065c75b7d53f82d4634454d2e513b90a8afd14c63740ef4893063da71a9ebeb8266b0bd7c80a8bc35ab9c87713837640b30f1dddb1b691931892047dbe57208ae567569936709e03d3247d73c9be7c142dce410b6eb43f3659dcf9ee8057612386ae39eefd28af6193a1d201eeed9d9cde681a9ca0a9688f0313b7ace0c628cb8f6e85da2a0457872a306658a1e175be311cdd6ae418a9ca9638cfb26bed6d93852f52bf4a58b4bc8fde9f883be9ef42c5d10f164b96dc91159230a52900e4bd9acafb4a14e14a833cbb6f22f2af77ee37a45dbb39da5939c3dba1b9444bb2ed3ad0245c9cb2e9a7fc8de8a40b3b58159a0007e4da8b32be10bd86c855cac35636e67096d72ae05b0847878d5c8945008e567185a67f2939b3b0c00a1f5f3a4639c3baed0128a419e81215b044f42be95bca2fd96fbb5713be75f290affcc924423011051a649511ff80a7b21c0bd91c5d58123e3898dfee618b74d86a32514b5345ded59d1865c77fa847c33eb6cab6de299648f50e18c32d66e6782f9ec8115602e44ba6bc63a7f33b000233db50487d0f5fdb8620b4b15b601e40e52ba9631b191ced6a9ea699c2d0005608ff97e7f87733c8ac2284c31f941c07018c668b8383c132eab6dc10f6939222f98ca7b2577fd484ea6c26ef6b0fcc74010cea215ec1f36a0cf7c7c38873bbde78bf194439171acf8a5f6f46683455a374bdfdc808037c4a589b85ac5f9763f85ccda01ef05518018d3c2bd5fe4277a5c3e26dbc12615099f69b8989fd507eca1bbdc5a0e193b428b91d8e94a0a989cc31e8bf10ce1496bd81f51f53e15beb032e46d9e29ef57e2fde673c5a6223d660c0dc0a3803a486ecceeaf18c4e8f2f38e6077ac1004556b720466fffd0923719baf046b72a43df59c36db989014a2781ae716a145f2f44c0bbe3a8b32373b2efa0ed929ce9886e405d063982111929b161ab721bc52ce5300bde5f8776d69db532b6ba6cfaef96d1b49a029c32b861320486668541a3abd6d9f6b7e813c61318d180ed6dcb83b40d3cb8a6399c28fa4ef052df73ec33fea85b18e492853ce5cc985479a3bcf128df570ad96f9b82f4f166090b71837dc4fb2301afe37fedf684fef8abfc94ebf79628546f86881185705111038da4106fa095ba22dc7005d4f2eb7bae3b97a5f5b98491d9260dd36da10c1f986be71c9ffb41f92148376d74be1bf33e44c98a3b6966c002a5001ae8d82ddff6a0f7198ba8035021df3bf7da1ab4b3a45f402015ac0dc24ac49b2cd616a194229f7a43114ae0270b946e893db9591849f687d56a8cd5a9c0f8928ee693fed6096c60bfb115f9360bcbee8a5afbbcfd34585ea835d0bdf115c738c52753041af59adbb2366a2e76181b2fae2bd3b47a36a4f45853004ecb9b299398c456374289008ae03d837a5d43b93f3303a8e5dedf5b2117d68237a9898588a99f133233cce110de4a353e74b0bd9dbc60217b9ae01bbaad54a1d969691c1a5024a5c4885fca790258a02d4589e47ef761cde3dbda5ad28557eff290111f86a453bdf10ffb0e110fde63dc85cebbfeb109651b42b25cb942ffea41234f5c4a6949e233ebe00b22988631c4630f56ce11059b4ddeb52f2dd5519271c9dbffa6bdb45ea9ea89ecb03bce79191c056a4d373e322f4ea9e95aa893d8078406a5dc570ecf00a74b84578ca7566ccee16c39e903506158c26274a5e0a7792d52c11fa94f29e70da9d8b7d780b4e0d306a4fc54e809bbceacf6a2ad4343f9602008df4432ba80e0c5000be37a3f4e2965ba45522a34514fc58963a28fdef40e14db81d85936b2099c55cd24be8e1c7f4ef0006cd9b9335d9c949a315e474714f3e63ae6f905bcf87337d69dba553a0489120a519c0022fbbe690e565417e4dc019e77f17e6dfdbcb63ef05390b3828be70242703e8b4c97e054b5397bb9c29776186e5cbbb5624104800e6f4ea90ece25814b126c7921550e906539e108d3188f30455f3ac3fc2f21109578ba3a78a60f648cf8a0b8513603053e90e6464d13b19bdd23a90336967a877976bc6ff4052027b5eea63aebb903645e6ce8784cf928f0edf492d8bd9c8b709b9dce4db383e0f1a59f70b3c295294d5bd23a096a9e41423eee20207e72b4917e96c9fa76508b516ab44abe53f521dead5f230a2c6c1189d84af63e755d7672051156871e63f01087ddedef048b0f0a99b1ff647be773ecb2d9c422f0f9ebc3e07d539d6e6ba12a0813ff20129b33fd83c7c0ac454249d2c93710113f858ed7e33a7c550fd3c602720cce28b21ac6a099af344c2b2ddfd2ccdbf7bc8a6c2820ece258b20c64106882fcd8c1c3966e9787081992606ce41d38d1397afe9194fc5a20bd7ad4de967de9b3361b556c2124edd6ccb8579ab123360554a2e566987c5614c18f567b6a295022665e287fd50684116bd964624aa9df41c355d58f80ad1eba2b88dea288f7980100c92c8870e7fb8fbd349382e8ae470dde0d95698d394e9845e58ab6dc6452892362292b1783730737d5cb076f463b96c83f17399a1a7a33a211bdaef5b08eeb251cd422bfef7969dff28302be59196191f812d21d29a74f1974545200d6a452812bef0cb1349f862324e322785feda06c1fe47012cc04a95bc8a5b57abec05846f217399e82a0e05963ab0f01a398e2398022f17072e2e182311348ee4d2c79b8758a2c690cca269b625ad8f5130f5c186d96a59d0850f6a55f719591e6fa4f58d1850344126a393df037676ccd127427b836f81f58d2da2ca4f97322530ae6b3b3a110c84c6bb055ae583eec24b859d6457cfa6dc1a9d1d088cde9841ee3e2183192c40d388348ed1cf29134e4cce843849538342e48799224ef9ac477a8f2c7104723e768faedf73dcb5dd4456f10fb435ef91e20d8c9922138f8d9580d74a1f005f1b167d82ab020e0ea9476109183f03df65e310a921497873e15f8abb81ce9f82edbb72f0d1fe61a760b511aeee866ea7ecda3b45fd18e22aec4adac319177e9afec89994dad6d9642cfdc2124acb48dff455210286f9786abce43172d5ceb914cd81d123ce5199fc48f58d6d143f22df43fff51659b80a3d938d410e0c9948cc477bb7b302b189619dd66626d90218b9e1dacf566bc9d3aeaa352dfce9850e10c9fcff56b38adf14a093690affdce9ca1bcf9a23062400ef24247548b59881c7798d6a87d55c392768a39cc9eb3e79c0b2f60707da4c821b79e0e69387139b793c5deedff3ab617fe120e7255fbb321ab6b880e9a1220df03f7b0bff8925650b48963253a04fcf012f0b64f5740701b2f85a3cd160972290aef37e28d3ea12595363fee4686df46451bcc82084815ff17c9971d9868d04c5d5d9d5cc3229821a9664f3271c64aa0a6ca11e6e2229dc2960872588484d211155f7945e728af9ce75aa2afc041cba55a4912fa6a4662af69390b4c0b7ebf5a489bbb82e13045e75d704b9842d1307fe5a8cf0230e838284495e5f94f666a1704816d39add550cdcbd21ca009987401d0273b467cc7079fb2053f44c75ca0017f999b861186b39c920066353b0d7e2354dd904b51fae8d2251d00b73de396b03bbc9f17879f20903e35510de42686bc47b8fd40dce9bfa6715341a87b774712ec247675c02dd25f7e9192b7358dae2d8a006e63feab5426d90ef41d509fcd3b5e56bd2c31edca12739a44225fca4a61f98d696d3109a8c40262882b2a60842eb85cf910ba08ba251e0d30d03f882f7e4f3543e6ff822ab1abc43e39787da0d274046efc2cbe40beca4110237994ab1b627540ee32a6bd009c66aa878f89f44fc58310c0856785c99a68749efc37860ad13c2e380f9b941fcc462dea8520f156b797dc00ffc719a027e0097f95d8a63d19cb5039388c63ce3af1cc9b35fe0e3b349584db1b43b7e02f44a734f4f385ea360192caed45729f23a3df72821f45f49932e3a6ea70919398b11d128cfd38fac9e8d3f1b7616cb0a3cd83b89d0404bf1587d245cae0423281bd1e54d5b834fe9479f13ad35bcc3040b190f1b5eda2aa04b0f2552f9a67280d35e50c72829a761718fb50c8208cc0739d13b5c5c7fb3a89709b9ce0eebd8ee633b0d5a9d85b064dc05aab86afe170d9749d2ad0fdcfadf9c4445fb15227c08360c478cac993c9884d1c383e020ba042cba98ff3fc968991e2bb2b4b383a5b42996a4b00112a22608241a87fdd119512608e432a78a66e904641966f2d8bffc4fb6a894d6751922f65dc2386d81f3feaed892e3398a5b54ddfc39055720d3de0c2d070e30a8433915c99140245e840c9ad4c013b43fa55b03b8013a4137c85d94b989516f21064f330af650c04241d6caad32590d7b166e9f24f1654cdc81b6a08675b32facc0c75798f9498ddd42329313330b25736cb0a30eea3667b5a4551855a9d8dc79c7162b7af1ddd3cd49f4ebe2cd8405e71fa0bb489a672e4b18bc032ce20f303be676abc604998fdab8a74cb695b4a3861c04b731c189bad19eac8a04eb918a7a56a9b7f6e296ab5c7198f29512cfcebed85651a1a539f17c68b54969c4baa5f06da130aa50a49ac985101855b8584fe6012ee842ba866d348c90e8a3186725b11e29ad3f0a8b347187235f11036d68cecec7ed820d5d0895d435bd0ade94c62ece2a6cd4b7fb62451fb419c04124116b6f7fe21fad5ba4ef21356ccf2fc9424ed1fb856745d1e32cff130076e991ac61571360b60762faa70b7ccd4d95dd14d922efbb885440812e887509aeb6339250dd22cee103911f19e8ecbb7205c8b4edf8eaec51fbbe82ebae61c1a668e4dbb5e019b7ca7c7a6452539e3bcf7c54ac286dfa0325773850c08fccedc8e0860f3777ad2009587048b783483a4cff6b59c006f1a68ef02c507a620762c2580b181f2176fe9708ac281a4a0adbc33ff4ab236eebed3ef0d196d5f82586036abac980c9dcd55da2910cfcf7bacae7979d3d938f3721df7664df1ff8015cc850237a388180314152fd359821328a67ea47994c81030f8b2988d52f134aa08155a7bde06412f1e853c56ffe5a46c6798a2a9b0662055d9faab09aa80ef4c7fd8a58692666e6fc0545c5acf9263e77863c5d8112434d22b76a73ec22469a0b8ffaa3a90d6a485a5e3cd230b2aeed881708da94b193d5cff160fd018b314ed928563e63af316edf78cf8ebb70d5787f3c9432348d81541cf1de77855eb749c4ef076670cacc3008b3275c00490d2d364e6bfa4c6bd869f5af700c6a721a83c4967a53c69a4fc171badb67e354c25ba368349889cdd6ec692cf2c80c8a1faa0c2afed6d3851f75354d446c78744a154a1d02267b655bd26e48a49a81085721f75e1a52cc4f4d67f4ea86ef514a810879857ee69ddabe97abde3507eefdd9c34c216b008436dc8157ad2e5d3b5ce2ece26a2c08e543a92fcdb23e3b5db8339fc63d6498654ac4408a1e2d312765492b1794be100a03246843010e4a51b345ce256bb625ce32c613ab0f3ceaab8b18ff357b105d7b11f28c7131e4b23a3403c1cd6090730cfa4c8e4f5fcdc0a451c0f6af8defb716154c8e532be193230785855a7c0db864bd121011d064b803a2e7150a041c772a2dab165ca7da95db1b6df90da3ac0e3fcae305923ddd7647fed29a2179bd547b15b189d7cd865b7ef97ba74dfd7eb5b6d330babce9866ed017f07ab137a96f56fe599ff233fb0b1735e4e2cc146e2c3a0b0d3bb0559cabae3988e1a38948425b1d51ecefa172511bee538ed79d29042be868e90dcb36a46b5c72e286d24718c9870535100bc959704ad0fe217160352179e0810e2494dba93477e920a16111aafef092682692ee048e3d84614e0d9295276f4715a31170a20b599fc70ef58a95585645e1a7b214a2516932e671f702138aec2342a850dd41e39aeb1cc672bb98873632459d8444b7ac66c2700c940055f458eea573438319af3c4e723a5a96664c3883973d92b172e36c7a80ce46f9fbae1e15867505d57731d5c20106938ef9146cc57d07d8628a380b0e77db26699213f4e0935119007f2eb44b07b875d7f2a808da6ae4f1372c0d1638b954e43bffca20899249a772b9ae9561496705005f983a69c90085451712c43f7eb4c715fa926d0aa79748ac3e6e1e6f87fbf160138112379d1d3c3e941ec1d87c4a1957f5909bdff07924c3c8694fdb451bf8edf235d70a513e6aa9af5ce5aa97857ae9fc2fefaaddf60eb1a08d02526dc076aa2f24a3020ba44543d4fc75f04ac455030602c7cacc757eb1e60e3ccc9c7d54ab233115f82ef1f9ba70b6167095ef59e402e85a12237b82c5734497121f4f03dc538fed2aa96b5afe63700977a82e31ba3c72fde8ab37ecb4b8f89524b71a75e86c943544acf90a3e7a48ee32aa4dbc20ea5f2e44b62539a8f3386b2ea2e2230db18f5341f6563bb35e811dcd78f5d5eb51d6b56ec69df3bb973a30114c9b958d6545ebcac6e41ed3786e0ab82a16ac986460a8000eb72bc63961fbaf19a5cded68fec812a615b37adcdeee5d056b275f61be4f69485bb7b625892004de40c3c644ad17515a3eb1f54eef8f3c7591faa8f241130df6e5a9dbfce6bdc74760b0e50b9b65c9f4d1bc31ba87e4227a31c4d94e928a6e19964502e57a5c862cbaf266d504fbbe3a10bbce0591dd439048482127158e9a912632057c224ac0bc55206785204c7375a11dfa0f2c5b9bbb38ef65b3bfbd6cd8264288a6c0e20b1437320790ab209fbc0673e624bd4629c73fe97e38379cbfb9415ff1c23d4450b4de15dcb3f0ba9ef64a3f652b10c2d20226115788dad517c226cb2533161d19010add51141e809cf616026ee91153aeacbe3ae8a267ab763ced0a6b286b4461180334cb42d9040579ced6c600264b27fef14af7ea36c8b94ac2b42142b1ff21c710f1b2daa03b2ea565f80ed2d278e72ca30d18e2d5324d9b91c4263203a95c9d38d6ad844519d5c354d251de56ecd2694ff3199e91d7d649e462fca675073f5f01f6f388088dd0914f662dc16b709484b58129a0a47111b3aae753256c543abc862f9159da789b6bc448e33a38ab26618d401dd7e86c3a1a5814e6d30aeb93d92ef053e78a4e19cf1a7718c53b3528f16d15244941d35839477232ecf59483143f11ee58741f6b43e8358b3633e82254ec384203bd6cd5ce92581ad09f3d9957b818619d8d8398ea486906de9f97ad814263441c3b0dad26d0752a72c0186a708a2f9cfee646019e4d9320ead744d8296b29db6368fec8fea8755a11c699be370086fc5a936a0ae8fefe8701d2f1ca193385291e3418c317e3e1967684b56619566bc90e29c961053d7ba26393f5568e3e7429f0b544d4824f1f4a45e3d187f4f3d13bc97478032dce5d05b862b24fbfdba02bafce638b83f007d894711cc29796dc2c58d7ba659c9331a926de2311311547b63c73d9e4d0c1d9189dc237192bb1afeeba0e4ceb1414e7bb8c094adc3c9cac7c62bf72adc0f3f93f2a1722f8bab3c815bc75d0d51f570e434e87487ef60765c4040cf8189bb87e5d2f8cebfe5d7b58ecbe1aa1d029dd8e94643d4f4c3ebe94dd52fb9a24c28592c6b1b4d7ba45874f740abcd6b442ae2cd0352db03df47f773f9b1b2284acc8837ff4d3e102697ff876a278f97ff16924b029ef39e983198ba919564ee23baa977193aa127a5a83659f160f7720aa6a6ab272c6e250838235357e52ccdd2da2ffbdc91c8ce944c3972c5512689f92dc23547cc6d79232fe0945fda802616986034bea5fc02e7a123e9b6feea159142084cf53d4e607b902d3e7de8a06d568e4c3d48ceea6c7b0296992163eff3494152d037cf9a35acd78b28afa7b30c60c68a21ab3e09c19dda17fd266c739fdd573a1e9e6160a394c4dd30af155d1d3c743b12a826c09bb094ee496531ea6cfa8a1c58ce53886c0dc55c6f53582a783177fc2ffd6c21cd10eee9868c29047b9a9865de59356ff2f0df3f7f4f7e1d3c04ee15cb03e5b591e906c1f02ab569a89fe00396d71ce9a878a339df511e849b7fe8e4013aaeed2c39c1e8a92379a234651a7aa7fa335185c8e47206718e4ed697c3512bf4f5db7a77e86fb35ac77e31450c1c496b00ff29d95d92cbc6bc0946f5e3c33f4ae21a721ca35268ed54ba104203b2854fc25270c71d4e5c22f1a49b84add1594170d4f77cd5349f6f25cae0efeaef8a7a5d2b8e6884ceae5b7cc80d6668d2264b0045b7c12d69a1f3deb9eb725d46fab9433892bfd4719f05bb2d4b0bb6de6ab01067a6ed07673a872d2acf065ae5140e23b41ced4d6b17abc709396ed370d8ef2f6b32ac918f0068dc617645539d70f859692ad9e55079324ec52721074b6c862e2f85a8b89ddb661b1085ae3270fc204ced4134f38f9e4122a514ae5993f7fbd0a35ae4c5165518462c9e986c2a8f532fd87161203b40cb7948b0ce803efcc8c35cd5397df80352bd6eee23c8f78add5d92751bfffe1eac3af04582fe303251b8404b0983fc0de80f5d98f50275a22588ef95f6b9ddb84eee8145bb18bbd0fcdf9db900a0b24652e32c636c31332385056e13a38c5e56cfe72e249056b437758b0e1984fc95983794b375258282dd1f449428371962251f16b588b3050925a0e420a46eaef6eac739ed63c4200d039d69383f5e408481033d53d430be446b0b8dc9624975a000b4ef2254da3bcaf5200b3825b27664faaf01ac1450b7d3ad7e1ac0c21798bdddfa3f7a804ac6673e05509f0e92e8abb47071e3fd46d371cee71466e7283d63ec228d29f25efee399a92b80e46f8d07c248afe759bf17d7b7e22248fc116bd623d04ee0b663caaea2d202403da8a3dd6fea0b58da944500d11d38d2cc2f2f9c5283d00b07b4356279f436afe082fa9fd936dfd1dc6d98412a29932e4189f4d64b01a2fe9d32b59f087b31d41901d11b01df91f64f8b6bd73c5e712deda1042885b41b6a20f63df998d07480178428148a131cb728c0c1432d9eb587b8a3a27434306a714ad36bc5b5d1e506a8d63ab69aacf1f40169946d146557aa3dd3c5e1f5952f1200979030b90d86bd996944c6d107b6c056dc64635a1c2bf185dc85dba17ff10c3a940559a270e8417ab7ff72b1306c32712306a0637181b58caa94151ad8a9131529fce79e2a0ea1ee2fa6641894999e23c0d9dd2adc1b5c2adc308ab18841203d1166c058e83b50ea684663b840126e55ff65a4a4dd0dabd6c81dede3af9fb43210442579a0bfb5b85f12a6e4a72231b47fd07a06576445bba5a80c73c43cd78ab5980007403acfb3579bc04033d6a1f85385a1af5eac8ae48a2002230186f3e9337e0bd3f0540a34cfbb53b675d6dc8a069403197f87efe6b79d94e083717f51b571bc8a0504b6e5e48e965a21cef95829cca3832f063b6de51514f08e2e2f1d05e48e9cee5d47301f74a6d94b6c131db2a1a0679b284a2c7658c9dc9f6b01460fe9918a900358eb5d5a552f8a24ddc569004fe2837c657d54be1cbbfd2af3e4bf85be4502790d914ee7733b1e7f4250b29a0bf7573434078eec0ea7f657677511407824c83d35d1ad58a8d954ef6a2632cb775955ced46067ba200d4bdc223664717deff7f3e2de486b9d0f2ce4f61f13dc69d427781a96074cb052ec0bfe421224ee65a21d642233d657049840f3953b5d22c0441a8a3d0c03c4678c86282c33a714ab293ceaae6b927245a2b9e9c7231fc4e4e5067050083d5d4312a91fe645a135646688da854ed87113727ac988771dc491d5455711ec4f2b87df0a79891a3b689c9b2e9db7bed2f64b80a8485b9711da735d24d2c8c56b231ef7641dcde0f08a186f1b6ba7f200fefe18c79692a2ec8029070681e2ecbf2b8dde6093285e806ac7fdf91546769e8ebb90bae902e7d4780d5e334d2e744c15946c0c3489e02dbb73329b731c3d02f9f19af18d2f6dab7b29b1d9fd269aec621480e5f863658602c67f24e10953c528a29fa3041be4b72eb06eb675fb491b31dc547f69346bfe5a193763f74103b4c124fe97448087cdae63191196cf29cf6e720cd50c928118a9137103fb198affc853b3c1d14b54c0750f3355dd07ff6ddd7d4efd550644848ca620b18a20ebb52cf4093327255b182f8beba0f20adc6a196429275322a5ce7941f4993a1d9d111beb0c757a4324f9a2343f4fd21bc5ba294cae04763afd6fbc65f25e91bc07cfc0fe0924c27507dbf66379e1e8098732be56c3e36359d7f6befdb6040238f6a56867ddb598861023858c14e5de0f10c8e7ff04fdd75a148103d5c3807d2023d11ae234040cf0d10cc22ba8eec02f43edea8cd1865210be543f48f3d57079bd830a2ce738bb0435270a08aeb1f440a04efb6a676d1549deae018a7d550d1abb75f1f276ef63a88fb6396f3be5a977fc7cdbf50c221027510dc64f59ed8e6023830311efbec3e5c13bcb36854cf0ce850e86bf668466f6e80f2601d09ef04349f608854f9e3a8286c76ceb58dc58eb793466335e15eac460b443ddcaf9034a1b99b14b1b1fca85ba3ee3ec3a3f934c067365274be68ad1a8be85d65452a3048d18b6220857473ec62683eab60004d5c1406156ceb43a553bc27aeeb4672f7db749bbc14c6644dc2e09a288e4f1ac793979b7e87a664d0bc68d82c0f5754d10eb16273b44e0e7e711d0ba8e27260978868abfe2d560603812b7588fc6b03ad5c6bfc2c5e89d6db7fc7b08963ac7a4f4d8151325db32b37205e9264b0f59adae3dc3761e720267a7497b68540e05462dde3370cf2eaf6c10cb5b8e02cba2ed834ab0568b5e4ec3f5ca161e2ebc82d9856cfc68b0226e1c902c0ee968110eeb86760d817679fbb475c4df6da10866eb77ea139911e750ca199ac483b2fda4748e0fb982fc4a29f2ab412166fcd2c562ba364a555857d5859df2a3b9228ad860a30312fffb65bacc5fd1a66b565274f4b7b42cef2abe06339a6a360e9c8aac3347002637cb499c5531cc9b391b17f695dbab2f37cb8a15183cafa6d3d86b68bb76ed343a3d77878803a5f99b292dd7e0f86cd10072bee22842ddcea69646566378cdc63851d3a20454190a9c16c75993ecc980b437247f0e32cc40ca0f09766f0102033060c560b8175a1e765a278bd68bf2a4ba1918eb4d996783f78d02db1551ad0ed1e5ad09435791389df01d882286ee09218f6b0f4b99e86f5960811a71913f4d04b4d9d1b6f38aba8b4c3559edae15cbe5335bd0fe0ce75d84a3fd7ec4bc3aa056734ab110a90bf379e89cea9bf944588189f82589a56d56290b8fa1414f302047bcc0025ec3b6d3464f915b67ac2a41117c3a5a33ca3305a2cd0cad185c6d35733dbcea9475fa25db3acc5d3e9e3615ec8dfe12ff68caa7822120fd10388987a90f59f554012fbe848c27f2fb80d15066b795e0f61ec6d5e90cf7205ed1d9c3622242ed5ba731c6b31eef5b510c73877d6083050c2b8bbe5b0cb0d4bfdc843b4358e09c113879385d3c23848697e44bf672dcf8826bdb733534f6f27bd877f81ef111e2298795bcd848d9c6029dcadbc605f893b4e9fef6c837799f37534459350cc4e5f81fe87073f1af4c7dab5d8555154e595bff6ab90aabedd4d18c145bf458a12dbd48a8d5cd97824d8692b55c8918de59023500a4cbbb6ae6440e94f28b2a94650609984a48d93f78f46305fb4e4174e99ec1efa4ae2e4596b8ce3aa1c28a2f93d1c51a2c8cdfd770bd1d2da7dfdf09e1834165d58e33c4c82c19f783254545b37f8e9845cfd16ed55cdffb1c562332bd8c9ce45d5997f17cdd46e6b12a341b5ba9dfdd48107bd4078086c1b384646f8ee58b0a1149186673657dadf63680da855c83e8b4313e82d7d5fd3f0dd5bf0382a715edf8f1960710c6464fc226f738959168c0df743a3007a1a5d6e3da09fd7ccefc1d1a67b1ddcd38a3368c71ba1ca9bb06e88a895e24c9073637220cbc102f688ad51a5bc75b563167c8a8529ba2221a0be3946c797a3616144893a61ad50b70f4a6cdbb303ea743b7f9eadadd75cc7962da3508bbd74c993759ac1bf54e6d086529908c08319b5a11c6acacb812b703d769a6979d2b640c503cd0d6c112595e3b3acda9abf84c9ccc1d9e56a09abc4509bd3f10686f02eb412458cf394e564b7609102f2f282d19aa9583f6c765c7cc94dd1543813ba41d5fd5e508f67d7a2cc06607f74f1ca4a41d3a3f3d5b663ec8f85b9286263f83530a8c1a105365218e6ec7ca52587016df05d54172f1537582a81532cd240da702f11fe71185287f7b8abe737881c31cc74a2d866717fecb38abeb0bdd1fc3e968a6f7db99f3eb556a506c995e821d7129e4719b95929d682b871ea02f7f8780c0f6f02c5a668bf8bdb5e8d70c0485869d1efed4410e1c4e2e63074e6f236515be339acd5c8da57510401c2dc916522f0ac2529a36024b735459c4fa01f77bca8afc8d02258c316a553c2dddcea1b58b3820fb6ad3b0d2f8f30d3791e7718e4b394aa45bdd0d1abf620a313237d439871401b7b9a365873bf1034f6e6ae42ad849cd10ffae74ac68fff38ed10af306d1524483fc57032191609aadced43e6f6aa0bac5e419e3be4a42f0e4c6134abdeb13c3e6b796e66a95472e1b1d1b29562173421743d7a618954f59a65332d5dcd745685033e298f76e83bf8e116b662b7d8b34dba85dee9f16e050822f571f23d7c43fed5f44cc6cbf2cb0604bce35415d3e5520152d2f3106918b512ef9f9034f41a72db3612e5e84c20d6cb9a677a0994c5eee8aaf50c136fe437a4d38c3ed27665ee4f6c055dea2b9bf9c533496591de186f0f0dc2f44bd346aa9ece713dd755312975ea6d88507715db1a1d7077f0ca205b0947ed2bb8956b7e8f73356998c8d564a919f0e640d22db42648b432a7b1b6510f8d4c75132b8bf268922e48de01898974df2cb639c685caea577cdad238428f6e6d23aa7b832cd585900c0079856a0c0f81c7ae7fe2dffcb8d5040d32ab25889cd318c0b920588de362b73c9a45c8574cbdb5be7bf2e6990268183301d6db8e1b09cc35448ba076fb83413014e80bb036a22653af7c0b9e4d0752c1a7e908b11bd4d4786c7e6eebe3bc2239bc4529a0cc3371623d6c33b103289c5349b91596c8aff76ea0e9cb17cfe5d301a9e239dd048ffc825e7005616f0daa0c489b3291bad5a3163eb803165f83b6540915ecebfce37ebf5ccb6bc351640da9cda7fcded54cddcfcadb11e922723b21c3fb20498fa4d506e89f3b0262cd9b7fe8db5a11ed5f986ae05b4daea355d758906db608172e34e90b5d7455a91ca3e81921041ee45b3ea2e97c4494331ce792dd69b5afcd911f25e2c938a65801ff35c79a75cdaca5b340b98e10b553d2144fab7e9938b40a3b7c38f978943edab2504d0ca614be0af1450e742a4f9901038021b4d053d3e1cada9a280ddbea094b1445edce30dfc08de71adc6a5b3050e1dd6f84a09f0689e83a86f835f733a3df5da2f44eded1202496cb851638c7f833b077151b54da4ad78b87565e0ab72af82f39e91da25e5d6a2ec76c58dd967d091e85073d4dcb86582589a9a54a9eb5e11c314db8790b8466ce4a7fa1ecad3400654258cc3573e3ff9c43044ca37f6997cb2d0e8393961f448db53339c54aa728e04b929b526ceec59270d9b989f08e6e2ac27dd9dd15da58c9fae0b45ea965bf35e1cea97c7234cb42787fe112e613b0046128bc5e592759f5ce7545eb3643d9573f75770c81d550b833562ba20b8ee2e86d9a1ec2371a7ed01a43d90b4d0a8a6d239a4858d2b486143dc892fc7e5f9fc3eef5b08eeff4e45bc86b406d7f8c30f94faaf087fe76301c0a53e46e1470fbbc867e3e68a1b3ccb053f97e29944f8e195761ba192b43fd7970eae4425487ea1c132926aed931d1fa458222417a582ef0631bb617c9777801e95b26f5c09cdca06d8f84044f12280d71ea037550a2324a831db9f930f448a8805011954d55ea9ec82459acc5ecd050d0fa908a1de82d32802a59f00400f86ac14776a371e8e9f8b9ea744ca1edda998f86f1822312c1f8223f075428583caa7152144f75177ad657e10c276086b50c6b3b9842d634a8550c736c8ea7d87baa11179bf81c88d447175f0a6ef0df969d37190606765c194816f16d3eee1a4fc7576a2a389fc241509c76e29ab55f7b4c2b4ab2efb5c5b266819444cb36626d598d7cb587fea51e4441a0e86c60ffe0f82eee28ba52c053e9b2454564ac25083984a945be6f629ad9f3700f843a81a2a76ff6e6ff378db2aceec03cfb8d6b81fb76293c096c83e009ce27e5548b14d6d1ceea5a84937652b44f1acc3a3d695f081c6d503690608ab23693112d294ab6873561f732a7d00e0518b4683d9197fa02d30ec7406fb7fa058bedb7a6018c08acb3fe74eb83b08d541a5caa9458458c469c52679126fa63b520ca4b4b2bcd7ab46ef8a46ed2e3e43237cda9a75e1019fec04cbba9a59504070498a618fabcd426963ee6ae9fe3c87a1ffcf5685fba1ba43768d21eb2c9dd844800a2a1e8344b36a1dc94027ff9cf831ab91a4f68d4d0f71e733ab1e622d3b0955ce10244abdea264098f83d1cf9ab9e01c2bd96c6d4d724d0538eb982b513516ec57dc05bfe06cb09d98e177c66f1a81f7f4e35fe40ed168383409dc874856217325bc4eeb8e3a56a9219426d4d1a649ace502e5661cfcff34096b98dc6d82c868e51654f071cbc396362bbf9a01ff331b17cfe9dc0a8a52f4ca0ec0d3806b6f8d902b1455f4c1860454edbb99b8e4fe66543e07ddb50efc62d4d44f79b77a1e4c1f32ee26168d4f5de676979d972f3a2baff67ac20884311af141225ebe71732b795c511874942c621195706fc42a025f9e18dc5ee08d138e8e29dd5ea58eb89ed29dd8e372c9ae2088a31624be35840f4aa0aa516c95d1169f429e7a1b61cde201dbfe84842903e55d6985060195aa5ada50724e8ccd0dc3ddd9d4d08286aa45d13221ed89351000b229ee6a071e640f5a7bc98e2bed64f1f7690878923113bc62b6a930a3859e3a166f5d9624ac4e8ce07ab8ec7ea3467968fbd8b0627c5ab1ba2781a1589999d3bcd74535dbf7495c5d5b5c73ffe3f54ebc660bb353599183090286b594ee980ec7069920d017a2bacc907983dc937d70e6c611bd71a27188f85a453635e8b05238c9c2e796718902801627584f1d319e958c0c213ed48343077e5c378560ecf15db6d4d73889c288012e234c2fd6189599a97e78073d827de3233d437d520855b9d25a0fead1ebd8bb251c9d9c687ff21823b4b14a5ff996e8e200e6c7d493861814aff4a859a62ad61485d5800614651b22c77892f039015cf7ec4a99cbe40d37db4f7374afcff3c493d838ef6c057dd6d8c8043ca7e1a8c23305c5efd5f98760698067da88bc7b66d61cb6123f1a5ac2ad912f4f047c2c8f9d8175cd2794d9739d417b907fee54e48077f458e3e57bf5dce534f67ac36ff2768b0544cafcfc246c442aa2f6162e39abfd7fffa6c0797ce1a269fa7566554b21737d3fc48ba7f3f896161e018c7e44b8f5a216d993e800c88f0f186146a0e89c1a4fe548ba021218fef2f17032ad10261caaffc41a6547cb958aa0ce600b538e02cbd8c413c9a15b01bc3a9eb8bd1b6ff5490c26224c3c709181f4ca81e709a875da2b23dfe7d42d15ea2adbc8b020d87f48594f73c2c104f6e0d98b035cee00b5d9c5047a5821687404ad73f7eedb79f59b12bb9a6a77d5d786a80132bcee042581c8aa0787bb346f48fe4fc7c3a1bfb1c4176333559bb5e5d3de76539ee9a003c823439c78e1d931bde2e4fd6907a93f2e3a9ebdb111f63f90a23ecb4331ea4fd22d2604d2ff455b69dcf701a413de8edf9a4e422326d8579b479571c498f65ddea29a4c8e98e10dcb573de88a3760c7a381d32fdc71f650ad842d8cc8a91c54775fccc39e4420997f59f46424d9deafc5d59889e57813c609b7de85d6b5abf93a3821ee017513c738f894b308c6176eae2b0a806b5124799da9c22a17be6e9d8f0395ffdf2e2b82c6414ec25769639bb6a8c5584072c7df028bd0c0d396ca84f79f0591d8d60470346f7a314118b1f6ce40f3355b2b6ff9e8bda155d47714360241dcb94585133213f54f89a476dd542de20b9946f1f3f4c72f2aee52869ceeb43d2026f9651a78d473985843f007f6c3440377f5baef07dd4ac6f709c404b6ce06c1df78c510576216ed72febe4dc29c3ebaf6ed27d452c54fe2abaa5e66db3ba89a1b083cb700ba048a92716f97a3e335013c5c02456e6db7712dc5abc205b01681ace2a08ba13cc6b5ebe61b7809ff0c4583fa3fe308638b9a4a4dca2610d88a8078153f53292e29164c7422b23fddaa06053dce3b37c04f9c281f962d44e60d75baa97045a0fb0a07936d7b54b4de5d08d07578125468668872edd05657672b9af6ad154ea9f288cab825c0957a4e546852b3f3fb25d8951ec4c84ac1ef7c4d2cb060dc34ca1fbe79086f51e5be8bb494a3a979f127fc5ad509a226496faffc53a147db6a27495405b09a9c6ee97a4f613c6f73f537a8f25e9bfcfb6c7668fbfe89a777892bf98a0d1eed0abe9f04ef2c1ec8749bbac47eef288f441ee1b1f4f525911719ffc3889c4ba88fbc287494dd60366556911b234909bf171b63cc21fcd7c98d4b23e70cb76a562d0def1038a09116fe66a703bbe87ee14d53e11b872cbbced8ee6922bcbe09fc1309d99ea26ad3e55984f575bf0211ff5744e5413bff2f61fa3373e074d0034ecca8b0875288b18f00f45fc4d5ea9f3e9c15edb97fad914618ad1a19971df13265450def6f9642b1d78da1068777f1166f833c8bc610d1c18c95ba082f7fa80f6d325c948ad28b8fb72d67b7eb5b013e864134a0507505322327f463240056c02ee93c31f10a0a72582012a9b84aa36e25b0dde8149450cc2bcdfc164e79681c936e810681350813789654f6e417b3b2e1820f853214cdeb0530e02ab879f88b4e80142b569fd1eb9ee886755c3cbbbd715b1d11e1b084de7338f06d5f1902d8a6deda3fd4ac8d845eef4fa9e6fb611979a8593d306432c60a9a5c237bd2761ab0991e119885fa10d73ada6494f765018e25c83e39941212dad34b679b35166fefecd521a42ec1d6236b3aa625f691a697023040bbcb1c78e2d4c21bc7f7bf0f2b2905a4b306198c82ef55da2d83154eaed87d89e9504803f983cdb717cea40a07d5e4b8bcbb49116ba7bc11c424fa6724f63a046f1b68c19ace0c3e9c7486400188ff182b8ade345f7c7f12fb7ee1f1ba86da04644b7ee09f659de5782a329a4238ef7b80da307e86c9727498e0b77ffc320e63657255113a34c08a541a84bac12ce7db4eabf61b9290cbf738e088cf95c21005859bf41b8f7af65d255a2e913a6a8a5d7d5d04ca5acff99d07723ea242dcb3e0718b83e306293c56d67110203a68fca92e48aea3adc1ba10d9f6e501ddb9244a9c27ce7a909470b4b18ab994c6792bd6237219b8760881b1b75c249e6317d411a2117fa1cf9ed0487a88a9c85df1ebba7de8dee874783fa844407d7e741004202f7d68640bb656c4baf42bcb27b5f91375fae10924c505d5d311ab9dbee491a2fb6f8150146bd4c726beff859c4240ebf059eefbbb0df954156ab82792ad59d6b938f5709eb8f99f041fcaccd787a7ae8486f0112396f27c78c9a668fbd0f0adac5876e25b31edda94b97297c24f7c277039fd4a7bf074fafdec6791c9403a44a4920da0c13faf0a1ab4c06ee349ab87c827f9c0cacaf78a134d55bfd8889bd2da4b042eda16879609631b0b7bad12231b30851cdfd6cf968f204f52ccfa858c1abb208e0e840b6419db248309e296b12e1b5dfe90b1481974ef5cf0813bccb2efe34522c5219fc0f4046b418bbdc0b451cc5a869c6c757593cc9ea048268ef3a06258b79fcaa2106d02dac65065e212ae456a8e56cb591c3cb63bd93190f37e96b519f11c27ad3187c4378ab8d684ec1cb2f551fd39fc161713cafe2e20bbad3d52b38eb755ce1e82e08fc45a12650651723761e106ba1942c89ca391743b966705307cc046c6d9ad8e01e75f989da24fc3d17ee1d1613e414dc08ea21671671ab14954dd1fcf87c2f1bd7220a912d3f6fe8019ae002d49d3d1759c27af55bb647dafc8713fb5294b0b052e7baab4541490b89d9cee3e6f8013efbf53fe168fee970e8336a1cb08ca5af9349810a8a9d15a21677a8d150f28f98c97cd7ef46436941328bd028cf08e03f0edf565a045796077d8de2ca6e58f9c061adeae08591d8fc0d83728efaa46f79e66beb9c9544dd0e3d679985ec693d31e4a292575be37c9c6e8c6ad164009493d30038370f33dc446330017be9fd0a4d6f537194b54031883de52821742c1b38e7b87182735890c13e594f4267c28b2135b4f3942a8200a8f39c0005ec29f074cada4b708b2f495e10b0b08ca305f811363d4a1e0c310c4449050c31f3ad2c54e39381a6432a33acf9642c4b93f6d1c080cf0887e61dc2f7dfa775f4d8a15d9ad7699721b15436b1f71bb316e6c6bb4d3cb112eb25afa410bafd6e2b8b53d81b9e4087d63406168f667f102d911176c03181047959207bafd72dcd0d5aff6ca40e3d8f2ad8377d2a6e665ff7b1bdb9e5703526be0406d44ecf699e0a592355981f132e9853a0442829d16e5034156641a25c2b44f534eafd6ea2f1f8813260ff69c8c64057a32a3bfd08499067b638d83cc8c62873f3ae16d7bd40fca4b1f9fec18eebe3e2e3741772b03a96d985a440fe965cd34900bfb9310c203089e0a222d4c9ba4344001c9ab0c00c7ce1e1bffb9edafdf9f8f9bd12cf412f6de9e0402b18809acee247dc8adb8e29079cff536e6cfd9cf0cf5fc978c3907543d0c9d3583d9aa3c0028fd07bc8a0bdf232828c7f6f62fa6346c7ab8570a4b9d678edaa94dae05a774859f52436d371d31e3618e2b363bafdcb548933cb970275f7a8c5dfc237146bb4138f6d0ad43b9e1ac4cb0ada63c5f4729eb3b7c7d1049259ee9360572f94914086c8f746d84eee9a5d2eb767cbc0e34fca72891ef8a26a458403084731baa601bfea43c34a393a0f1a30faf016fed337f8f387df5d72dd6c22aabac51a006e279e3fc70f6be039aeaa45e95a50eb6b079ce197d5122f72a34e46fb017a3f3c2043aa806e399fa6b6eeb25c958412defed3ca30b4815d1cfc3a54db768fe8acde979a6a55d36aace1a208780bc735e94446fd9dd11e396c07d5c6d2a428612b451d33d2ea20b713946fc2af5c898cb1abc90c9e285cb733b60d700001c05e16d854d568f4e2709610598530d1c98c450e4a790a792aab0272e120c2981c7be7932d8ff8a50842d3600b3bd7dbb9b1b5d13b97a7994452ba3bb1669d77f7fdfa51a376d41cabb5bab12eeb385dff75d89e3ffe4e8ba80abd7f8619292a785033bdc3b63c06dcb940be6f54a9ff8b8e7c5ad0aefff8b8902a9332c137092ca1590e4ac7b41d230bc490d4af0bae0e1f0e97433e58370e3579da7f422cf1bb935688cecbef289f2c34b86500a7a8da29cc6eab07ed22c61f69a660cfa0a7f35d8e56fd14928df27d7bdae89e5ceb3fdd3d30c3962dacde9454e7cbdca8f1875f117b543d7d21c9dd402279fc1dd9d511f182a5c65a6275b2748538c1fcf21a79ece00a1d586014a155eaadb8e210ee25d03572bd2ff4b1226a32123a6aa591198a80762eb260336ad76cd5e0c4e15986630e355542f1ae4487ed874bdd5030bf8e33f7f2b1a4c2453c3f02e6c56ab59d3d60e1e17dc0f45ec685d03320d2d486dc7a7aefa59199ba113963801fdc40050d7291d68f2b7dabc38304d94d376d283f7feb40b9504cc715cb4e40fabcafd922768ba67dc5dadf305f9acaec2f671b77b81679e2234b37c55d1873107afb6906c42e36d63e5e61e709c9e5661208642e5f438bd2534959dd79a55351ca4355800699e6a4d6c1704d2a37453204cfce2c2036f0b034c020523884bb029c8980d9012807f91fb52bb08f1a460b0dcc00dcc644136a962ff171637546daab1b8066e4e0a1cf8af6de981281efcfabda29af8fb91a22a34b779759b76a9eceeb62402ac5aad10a7d5c9a499e6b50738637da7c4c8aa76ce492f1f404bba2f1be323ca1988db18b4aa55b06cb8295720771cd0373a5bd3c90aa325475d8c9b28a3ddbf8094ba80fcc2b227b963617cc05d76b603f90f78f7c1eda3dc67e404cf7b852ca69737cebe83337d4ea81bb0fd6e3502cc17b5d16c7a0a2d33d5eb59b0823649aebab2d84bc8efa721cca48bf1e3f774e0dec186f8426458d5d6f7929bb59a5cd75e8d6193a205ea45c548694526d1151212308f0e12afbae90e2c4edf1c06c68a783fcb3208fd5b3e783ae87433acfe12bfd054a73b810595728453a18367bb91af8a38ce9ac69717339b47f864bf6f3ec95653976417f126b4018126821db1a0a9152570055f7d4cf601a4a5d1f250ea5e4eb8a8a877aec5fdf28b63a61ae31a86ead4e3b0f74a626c54d5d00db7e395a545dd9221f8879b570ed03e23d9a3419443b08250b6c0cde14b136961b2b7bf9d6cf2780b6044d072dd7c0853e6a65b69e34c76129296a17a5c18c1d4cc829350432d5b99aba5f327414e87643b0b67581880658b301015c00fd827804085485438011a466ad84373f4821aee725ab93f901d4be72f97f66e4f8dd0b5d98cf54c372fd0eb2f52a2f35da5f3eb0d6f737906a59b95a4ba3847182f5b4de38e7ba86bb4d77271f3f41f7d2e6a2a6a30eeff0f56442d2b1996d023494f1f0016e06d5f3f1e38df2d9036b828e8837fb27877a74ce98eef538a5bd56e42b00ce31f7a3618fc402652852a093d374654c191b7f6f07938e555060319784aca82fe603f00dd8d698c1ca4b80927a49369612fda06278fbf9990d44f7d322b634e7d8e7b13040c637c7dc5b538f7e1b13028e8a635f4d9837ea536ffdf35351a7caf1bc1947a59a71c526c2ce6dfaef810cff1c6c4e31286aa35f04fae1f3b9fd01810c3f2c5806b3596848166f62c289c8f8a7c0e1797071d6f9f9667f508f2492a3a570b0f1591e0ba5c57b4886ffa3cd297e4a01b3c6ad9f8d4abbec7372cc4d7f140e48939508fe05220a5c108b89e3e77d19caf0b17c875124f63bce7d083b68fd2e07375a52e4d0a29ec773dd2c87346604d28ef65c4d1a5efb977a3c138df772297b7a5e54458242426021cd4057cfb909d883cdd2d1341ebb47a6ce67014a9952e4c694bdbe29c212dea2197945ecc8f98836fa7bf48a4c8a45aeb8d7e8c891e3ee427d4db24544f0b4737dcc0a0a15e911cb4b73325eb0abdc1abd0eedabcf338a46914f23674393167c73c10b695c2943f996317ca038d98496fe32ab0978ca085da73a6e8992d76b9cded989772bc781fe3a68c332d6197c82d8c86376b0f5df96a99092b4473edefd17ff906da97f2132c37727af0b21d9c2f30a641fc275e40352db725cb85b2525ee598893defc09a73aca22ef740716ed8c39792debf54e88db2cf24ebd25e2268af5be35e36eacaae68c969513acfb2608ce25f60bd4b97afbdc24278337889447188849ceb18a8b3a9993aba42f7026c0930b7f286dff54f6c892df04d85207c0082f0de6f0d104dc541046db8f269bcec66aae2c1cc8a1e04ecd457727148db4ae49556914fb9bbac4916f969fbdf1877a239f869263c737dc643707e6861bdf995458d16b6a88dbf5413aac7f174be82d8225b6d61a7ab57222c6397c007cbdd031a68f0bf8e2c0916c6a400b329f1c1ca4f04efdcf9c1bbc22dc7b06b2fe5234be47785fca32ed7663e6446aa45c4b79a6b9d75d86eda9f57699beab3fbb9dbcca90d997ec247f89e37c294dcf31e2acc641ab8ae501298e0d613d86a98290344a2c4b6aa7dce2cb1504b030f054b4d10b4708c9ffb2b1514cc113ac836f54e9a995c00716b8cedca32463609d5f682a52230a128e55b3812919fdbf01f6ce3715a1429ec2c72aa0b64b3689d9afa3d09bd6b703399f598d0018bd8a30330c2a0629a362859c96df521747e84b80311420a7856838741a320dffbc582873bc6a4b321bb4c4bc85475162b2bcc97c02890d9d7ffbae1ffaef99d748e0986c15f4be6fb1b53f5057b1c1af654fce455ba58a8cde68f0c8054123727b9fdc06611d901dc50923451d17629e421f8a7ab8ce33868b1c071925d16c7586dfeb1351db7baa294c23dd9a44f5e489a38f3091e6d4de1dbfda62f125707f0d3c2c951081f46ac38b748454df05ccad2af091c46854e31bd3c8c636b6718d6f54e31ad1c846372a65410452be8ae436e234d6e88d5938cf92988d6e5ca337368d6a928f60471456d64be9c4cd595ddac44047bf1da163f1631c98d22aada4520288a63531810e1d8aceed47edc5ab30800ef4c069eb33ff350f791551149fed7feda8511541aaebcc13e6b6127f18742e35cc9895233198527b0b71b189209003c2291892da15f4458ca165ecd21d422b1f6ddfe9aa841fc69e739498b19381c96836e507e77ffe33c3c1c64b3ff382abfce7eb84ff706e3010a657a4e5559ab5d1d729c0f01a30bc21ce652bc5a2b90c28866580a50e79c252835b80fa475d16d5dd520ca98174959bffa3f63a388992b1b2d09fa9aef9599653fd1660970a1310cfc16a8fde3188c5e5a7ff5a4a45cd2c7fdc2a6d5e89d8b672acd0ab9288735f90060250965969c11e2c4143acc7b4a79d5cb36a2c0e349805dcea01634108b41a87e5f9b496b754f05b5f676988143683b794d5466579d14e2cb99961410163c1c27214dda63f43ca9050dc8ad3443f78f0a4f0e85a602c209cfd6c15308cb30a4c85e5b019aaea4732a374c3c965c2a93c524d1008db91983d1e048dcd03766f39a2412cdb9f24c0459895872cce4ca9e88ed85b4a2fda9fd489fb9f1c1ae4b5ff395778818391769cb1d8220e001554e4bb0e4cdfec162b1d49c57c7c025f7a5cd30ad07e02481ed12ff78deb3e1c59e98ac1e73c6e2328d73ef36b3ee7c0332f1563d4325fae3cdadd840f892cd34cd62a9ee2298ace7c34a336187639be216e988b367eb3b34973894ccfcfe908325777ce1cca25b1f49e193defd4e6bc3929e013ff5101d53281069ef35ffe057db82be71973ac0cc9a19dcc7bf689c555916c68d4c76718533ac708738c49fda017f0fac047ef64485b0760d64ad5dd411d4182370754953cbc8971c848f0166ad4d7da9ac2b6dabfaed671e3726c5551bb8161d6136b3c34e503f9564da172f33c9bdbeaf92bb7b480784b4056ea3790fd2bfeac0859bbe23a77e2202e29ff21ef0523cf9d376f2b6ad6a526ec22bf105264bace0ea32ac95dc09ae3fbbaac565003040f64185ceb1cf4b251703c3029adcd08a7a1bb753810076088394c87f4b9c7a7b678b44a841e48efbe35cefca121c1a3091267cf41367a0c934ce546ef5be74d7f44ab17da715c890104c8c58d4bb24086cb84da9ff09beaed87b8e4dcf5cea7b0ed4abfeb8a50015bb5800e52ecd1c6bedb4ac811c157dc8c8be9f258d579269b890d1784c067646008d80f5f899e63687d23d86070a2b104f24d5f20ee6f7be220ab85db5bcb164d3a99d20115746154c2d7ac25f4f7d730294621067818e8df06dae02eeae75b18d12c6b7e974824ecd4ab53002620c406eb3af4f3c095d53613ca1aed39cb04e21d1a2650335bf412f4dfb85bb89f30f23265fecc5185de17fa8c6f699e154a4ea2c23967bbc1f790df96a6de7b3c4abdc3fa00ce3723253f4fabb7c2fc0f06eb033db768bee920cf9b4694a654f09640f1044b198a60c7ec15d46e2f37a63538d4e798dcf3b80348829915ff2a8492362a70c0e6c038f4f2735371983918be1601cc0ae715cc3d1700a146abfcc8449e2c4c8f5b8a4013bff15e97e6e315be3de6b31164ca38a2c8b178e83e9a378a02326f448b26646c03cd13415072acd1d473164b8c9bc6a1c1046526ee8e581903a3bcae3712780f5f692be9e509476c47b14076014cab0319196ea387190ea9858c856c069b0fab0234cca71777a5a8343174a5a01f7c054ecec5ab1715e99eb4053eeace28733a4638898a0b9e026f4e5394715015b8d2cc9fa71f1b13fa2c3b3e6d6da59669ca5437791ca0879980a25c2c727a57dd560f882501e8803a689854d8fb716b891594e6b8baf8549420b2baa10f917ad2eb80594185f5821a2713f538e0961d3184cff34e7c6bc03e2ea0973808295769ddd86d6503aa3ce78cb47b61e254085b33bcb02aeb04bbced4b5b1e04356e29dc64ac6f2b9121579dfc0371dc92b4f438d2e617594044d9376d940a3358f050055c8d3eb2c19c9d39a82b22e375c4f58209639bb9ab4ece8e7436d45a756fb3afc1a356f2319322267dde8b622508b53d44a9d418b815067b81f9835352c876a98a3ffd17f19e768e694feb6868ed7821b6276c10d8037182808b2f1068d2638dbc4d0c8e058c4c540a9013bef9d9e1e2ad956500da779e461dcac4a3a4a9b712f797347010a9b79aa3835641a2f5abf2f2860d71766906296378945af549e12ef9daa2e3f86afeac35510ba29ac3e29ff3fb6b3c1838d21f13f6106c4f1981d9a752f740782f4ce6db2e5a1691c63ac5332b9dcc4ce7514438ab04e5529c436775b712ea8287681f64bd94e27bc17b180d0eb86189dd12dea91abe3db1e99ddcacaebb509b9c150b0ab5e6d91586491fd6886510e7accba02b6f97e075cf20821fc1e5d570944f806736fad3ef68930883a373991e8a69b605eb1889a60e608742a4c377c8f267a2f0d14edbd19fc595fdb8ce931ad6e8f1a3620dcd3c741ca82d13ec51499543dd437680ca96a89beaa608c85bd622f985471d999988145b4c671f696b5a8506a2f8de4c39a802b47272678077f0759897939eee1a634b2d9dfb17eff1d9a5073879780c7d0c4623b00858f5afb491c282ba6920267a3152708951e7a82af32203889c2274cd4ba3e79ebb21bf6872ee205ca18036e1d2fff66c6fed14a49d9b1754f2141294e8ea2d20016d4c80332c68dcdbca843f740760aac9b1584a6a531683241d99b30108f9b92fa7cea63f20d5a48735c6a46f366584617e308a9383e99c19af97f14a4132371494fc2cf8c0b255ebcb28cb267f258820d1319b41a33268edf8fae06d512d9d6f6fa83d33c7695cb2135b87bae2099961bd320ecb7f6e6724878d89fabb1d065a65ea00f2591e67e24508c15f126f575d16028689502cdde12f139218b55a93ea6de46766fbf413463283970b7eb3e2866d815895cee513cabdf611a93ef9320ba3cb1ba9124ec9dab70346be8850a6a5f54d7d532cf24f258798cc175ac3378456bb79034fed1f97d04fd29331ee6c64e4b67241efb0917129996aeb85692ac8f81453a39416e3da9712526ef37a43190fd9479b3aa86f5e990e2ec7452fe9aac3f4b4f2618fc3df1094c1f1e7682a3f590f9a2aff82b558bce3d0d7dfd48b5b5d7a662fe31dfe92eece1154a2476fcf5f8aeb7f7d860399c66778ffebd2758e84b8e1a391df6eb4fa0f11effa1cb7e665f8d607d9a97224fc72e6a684882c9afea62282027be9fbc0156af8b28a0c61c92584d1c824b621d6f20c51630f8f67cadfd14718ce663cf03d1c908fbd3580870802e022680deb4e50b511873f08f7c9014343253b3c46e96f3d91b956e4f27a13b7a0f1f25add8db1b6a6b4ad1cf39eafbf03f5a1c6e309d5a65bcc36e4734eb954302f648c51ed78f6e0639745a67f33ecb78b9a0cccd90756601b1d96d8e4518cf32e05c87910886a499f726c30664e63a8a1b1068451e40a9c3d99480fb5ab7a4e58f228df6d426f2785935678ac616511d657735515a018a67703cbe4423a8c701114d193c0b243c854be7b6e024903815bfcb417eedbaac541b09a4fe41a846937b2ed0185b0925381b82dd5d786ebf087b25772c8ba4d2eec76ae144c39000cf964f61621a8543431074a7ad55deb9a9d85a50427884f670d427f6c8f16648d9709126490c8254b18ab90eaeafce0d9b49a62bdfc91089b82e864db41e19c15a813c925174338bb5e051bc051d0755e4349e66ce9506830f80d714caf3e8f6f4b5afc76a96383b83d76396c4385ec59c04c18206f4989a76c2fbce48c94f0c0fe888d213011fa1706a518904855a077dbd80046071ccc0abde43712974c398fe98724b39c8bcc0101d3ba6e90931543097caf0f3a6a8fd9eb31974f21a46875c803b7282d8ce3bbfee509ca2508bf6e27492031a8ae8591d2772f39dd14778b5efa25003453ded1ae21a5a9679efd7faa12a5dec9a75d0764b9a023a428af1528d05066c9c8ec162cafe647a97ba818673d003e292a73643aa6a7c2760612af5075f9b59b8a5d56948d60eb3e4f701d82c8c79899a64539d80c96325ee66f439896c31fc54c1dfbff0efd7b7c8885643083c85f600603f0bc82802bb2af694985f60bb9a30eeec8fdb3dc3e7ada1b9cdef89f96b7abda9644497eda948f4f02a7759de7780ea3a5e62284ce46cdb7b3e545ffc8dc8f22ed9be344a50ebdb6ac9756444c9f779137a8a80e44e0e63c48f7db5feed4f64e8356413e821e52c2e0b4bda740f3b20d05afec90a53e9408846391461fdd5a351e0440ffec1cfef10a76047dcb2080bfc6db7c4655d4917e6b0b94404d824f2ce97e9ec7ae477ca462b55a210a5dfe7f0d8aa8293972ce634321f00c0c747b023801db44882f8ea1e494b9bc1e393f72d3c832301c47c0fe43e035a772a7d5c40541635637226e6c2aa5a43d4d8131d9fe47258ef65589227ceabcea2f610f038525ca9e4c387411e0721ccef193eef18b077d0bc07fcbeacaf97d1002e1d321e60fda1ddc76043b9746123dda889880891de2449371121524a29036e07a1085507d3a7aa3708e2ac24bdf75214752f75a97b6b98cc6bcef9977a4dcbb2acb152140abe1764fa1acbc5bcf00482c5bc537fe250554acda28a3a45f5a955542952ec12b097f7de91a26a2a49dd7b29eafaa02b50bf97c6561435274551d41df195ef1211566d94f3969ad4a4f4045d1028349639fb967352bfe3ec39420cba03dd8152fb7e5e53c4b86204486adda001b0c002e8de2ce62aef0e90beea75c274c39bd04011910c510a882c211be9c13315914bd3bd3b690e74871d4217877eb5db64075d23af1dbabf3c4c0fa2079deaeb06e3218c91d16b836ce4033e46e8a8e50db9e92d659dcc4d599e7ded99512ff5a291851032bdb5d4a4e3537950c30ecf1115e63ace97050a1d14a2bf3d422f9508b944400e35f810cb012844e4d2bbc75e7315554a95828df39ff30a318ae9b266639786f425f6d0d6b052140a4fe472f6e0de799970c86518d69f14ec60aa64925c9a767dadc142691e307df6c5362c09814e8f610ada9165f8f79ebe02b9d62f10a5f4426106b9444025abce2218b9fc2da6770b8cd2bd4557e4f2d6e770e9a5d6da7bab5b7b2fa56b104a3626aa73ea19c479bac518d19e17ed2415a8c7b93b898efdcc78582dced03803a69ec208c130555f7665b630f79c140a36e7fc4cdbda9bed997d82ac25edf9c9b367c0b9db7accaeaf6855c6e4986057ab7ed6577d4f6d0d7bd6d9848eceb6d65a1cb01f6c9858c5f4b242af8e553df245af7a68cf643690992c24c2e6b1b1acac5ff8d68863de8342a12bd3805c550f4dbfd490c6b15599b3b31dda16962cf24aefb68bdfc2830ff345f72ed244d75e747cefbc674f343312ddf48bf41277f11c49147da445998f2e7a292c1d7ce9597ef6fcf0bfa74599f0dec37bbfcec3f4ef34be7ddffe7de44e3a97b967f9a6e79b4ed2a20cf8d2492f8933fae3f567326951e6a67f1f69bcfb35eedc3ffa09a5ab6851e62a3f78d2412dca8c0e9268882e7aa771efa25f33a77f3f69710600371d005a9cd1a771fd8f3a3c0d959fa0a275d8958be5459c191dfc48839a875db944f7b877244d0d685fb6652673db6544d1f64c8b3299e89e2803fef2ae697126bb6846f4d2452fdd93b9a93bf8eb2ee03f2dca7cd47d233ddcb428f3ee974c3ef7ac459983a2974a5a248932273dd3a116651e8a33df47ffb438e3dd744fe6de455a94b9e8a6f022e9255238d2e2ccf6ee9b1667f2c167508b33dfbd7ffaea44e7a6488b33dab36b0cb876750befeab6dad4d3186ed357fd837edc94869cdb6045758e36d4b2a86c470fd1b35b5555e951570f855e613db467548b09bdb2465dca64d7340d645720bdafead938b31df45556add41f76dbd0202312699011693a8b411e9be47b1a33ea5c35ecc18c32a3cc28620e7ac6d632fcb949a45166339bd9cc6636b399cdaccdc2f16646c1da199b24595c5ce8cb0bcd39d44a553ba68d39f0350deb7b6976031f3c7e0e50e332bb9951729474df362cbc8ef0d9b68c0f1fda963ffc6d4be9e149db42e3e1596ccb090fef625b541efec5b6981e3e041f8656c98cb2b58f46c72c0ec7d1673643e362ecec279ca0a3a22264672f982eea4c5f3ccd6674949d7d1c7d7e293b2b5dfc0ba58bfa6767f57bcd622c0680b03312483af883cfd9381cb9cf2c8716ea324709c663776ddcaec771cce178526534e9c0c732161a979a17185e105f7acd66447dd9e79c3d23bef41744fb92cd91fdcbecbfd3ec06f899655a8cd10e3ec7c81efc34d633caced98c12c5c76746f96aae01364f57c96200ca68a3610cdacc66a36c746da4659aa66534d09b6fd4b47ac1c0c47cd73eedd234edca6e68137b79baa4db7b3796b4c9eebe6ddc75499becefa0db113cbea61dab1790b2b3d3d8153c6aa759768c6637463e3e3e3e3ee5057876f67a64b630774562578c0401c40f23f061b6304d2faf32f38c5e454024043d80e0031e085f7918d2811d74c80187d902e995031bb8c1060d64a086d9c24c81875c569d143890b15724b665c298747989baa4cb704f18922eaf50eb8c7419ee285ea8e147e1057c76f691e64157a0469fd98d11a8cb0b2081b2335d826ebb99e1e0ae71daed7b540a13839fe1eca5fea0b1b3eb120350bc73de58bd1b395d5ada64e74ca4c54cd3b2ba69930b0948a04d6a48b71960d68e9015f2b14bd043d65a1bc2d74f2110855119f60c03854018150261181e6f4e176551d829ccb2300bc3280bc3b010c530d0ad0d7d797302bd86683c916d18fe6528f47a73b2610035ebacb31e0a284e21234eedf86b70281c0a87c230ecafc1a1f26b36febc2e141acb9a1dbae8ba6a42a1cfebb48b1389beb191cb38d467d66af9021acb9a0d0ad950cdb4d4b148d3655893812c0e8543e51a9005598b59cc621664ad058598b53f0e5523e567ceccf2325be60c7f19be7f94a6cf9e3cd367cf39bfe580244992246968489a3f5f170d49d27ce0286c4243d28cc0ef441392e4e6c89c491208c8822c88c795a590a4b5244902a13a42768afce48b07494e920452c9b939b1784779370e52afedf876e46eb7ee18088bb8aeb317e806d9a2eeee0b04ba46d167d7e95b7108d71d02591615d7458595845c5542b0c972daf8d7293b9d4e3e7cecec0f431fa79b13be4e3e3676ccfbc0ecc4c7e9bab28f8cbdec63f4973ad2b39e4ea753a71b0266cb8d71073708420f768562d397f389e9b34b0b6cfb9a51fbbab3bea29000a187c914b787094f0f132838eca628e0210931429feb4476e35e2a9381de984fc249124f92182209225769cf9e26532e4a071aa1785900b8b6bab5d6da1434c1c50b2826402edb5eb717ddf6979d3aa0625b2eb6b5b6aa2a30b67da8836d6fba019327b6b5af515b2e8cd5a630646164b136090aeea9b64c1eda9384041bb4674f9222150c4c93a2288a0a691cbbef6da88c4f350a6c86acb3ed0d8a8e2f543a0885a9f6cc728a6c291575559083e4c0542fefa4af36c01c004357a02bcccfac8e3c300a642a03ddf474ce264a407bf634c1419322bba47b36a99422f1a343139d1e24a090c2d3032ba89dd7d9546109945d3d3191e8d9e5b57b9050b2cb6b4f249e20e1647b954402082474e861f20513256c6f5e5ac544ceae0bdf2542965871856365fda5565605a2d97589a4d4eba8173dc9f558682ce9716c106d293d355a19ecb63749f5d058e979b1dc205f1fc94942b7aecbaa4616967a97fa171da12674b6bd70689b4cd39e3b13db9d6a7bd83334791befee04b9ac76ba25726977762cfd841245872c5a816805390510e4f9fc840d14896db151ec8a2d526d64e7b1a14f255d5c5858c89d8bb278ba1b4e845c563bfb86dde936909b5c509cb0b672622f5d52259bbeac9e607b7e86261429db9e8687a746d9f61f68a144f8d04ac40e1ea84320b19e543d54452a2453be6080c5aa9e262a2bc885893257e87dacecc610455aee103b201ed6ead23ed9f450ecb43a5f42288c7855251549252d00b606c460879d6ac7cac06c8109da62f1d015fb2b07d98990088f625bf28a6d597669f178b1ed79d8164b776a6c8b78d9c3605b2818fb182c10db1282b1a73ab6e5c2588e12c09262a13c2967940905c48dba89ac8da15d11420990032580751b853e89e24379a444f981a2448a6de141e28416694277a4fc5c21db9676c75a28e57c6259ae5cda9d2016467b69f1cc5800467bf5c1d507ab496cfbb2053e58085314a594525d52d6be48ea1055493da23611428a6539d9a142f8d06d6ff1d896eaa4aed8d7cc05bb1bc09385dd2942e6ce6921174ce8490ec150180ac692b2353db51d015d811e47aebb9c507678500250da16f98d6c77589e6c4b97d4b6aeadd6ab93a9827d006cc83f9bfed509945d8790457bf608b1823d37ad51b2b6678f104a76769229ad8428329f082164467b685774f49400ca9e3ad8b3a704366ccce209039d243b2d73f214e1b32db5281e390b0a08d97e6e191a1ba26d5fa3a4ac76aa9db02ac2c303103d4514d9f6b6876aa366382cac8d988535ac8ddb75d896edf65676bd660e98e138eda28d56c9668b8c16895db13b95b41749e1614f635f630f83fd8590ebab9d4af2b02dd60373c5de872824b026d8d6daaa48d543254d50e4b2dad9b3da105dd8d53b6df45439a1d4da4263c0030418dbde22a92d22267e00636f959862db5b2776896a63f690000814e561696c8b0d4b343d64db4be1b0ee69571a5f6482fccb16b148acf58a874553c94adaab10914bbb63776cbec21c5a29d922d9970e56553881bdf20972994d3f91f6d85ed0ad6a495f812ea8bc28e020972bec1be36133675be30f4affb0fb6a6b7f4084e9d6d65aed670ded8aadd4a92e6b68ad257d6843d656f7d4a92728ca240227b079b29554924b8fd2f2e6b4abfd40ed61df3db3dac37ea9d489c613b9aca7a74d8d37a722dc6b2f318c1960d6ef6eb918e750887a3d9e34074a80b933edd8a40f619685b369e8b274491fd22eb2aa6c2c43b7a1154253b675b318bc2fd612c0dbd236d52916b2ee4338acaa3a76536363b77e9d25a6c62e65309096408d7d691bebd7af1a78e7abae58d54d0dcb07db5261ca6b3ba0c29076e52ac095bdf0a71a2c2cb8bce00b677c5d970626c6d8dea003e3e2e202430c5745b250989cc3f072a997cb4b0274f090f15103011862b80a705d2ed755809702b8cc335c7aa8618a216416a148e810478094e7aa80e87cb1ef35a99079e11c9a4e640d96166aa9902b840ab9d7a53d9850ac30b01cd8dc2ad0558140d5697468820408d05561488ed8d7a9ec46bdb6f056593d5f64b5d997a48f6aa30c2dc5818785059797042c8087cccfaea7a9a9566543afa79695047f935a063b959c3b09b6f8d6b02c35b8088d362cb93f57bd6ec87660e48a1b70d084217ca0a40435a8501cc165cc278c683c674117457e6c0881132530f5d9521104c661ee20090944a045194c7cb041c502074b6457546b03ad865a8df0a03efb2008130841010cbca8420c1d6001060a3630c5085464e006264a1ce108f68102913db102c61031b2f801090f4cac0c3418cc2a8c602d98d4d0812d9ce0c1110de0604370249b8206f88c5a8d6833c8c9418a1c9c88d1012796dc3095c001238840410693218c5045c645ce411019155e280125084f34c18a2d34d084b6811c21439cc183066cf862480b7c70e4493dc108765870c5141d25ec0b8c6422985a34d9010f153b3d52fc582547b42495054160236a19410891a3534419589cc08b2d4260c6b6031333b04208182e20c21221f60746320d20810953a6102206113f302201259470851422438aa08335624413417e8209c126010817d4a082292538a20741603d394374b1848a2cb018220822312e38820b20f87c600c271507980999fa6428a8f588911c16b4c0081c8e20c511ce8802539f2b138c584a5dbff7de28f2ddb3e708129b855c5768ae2d17e63e3462dffb57fa963179286baa4c547bf61c21629724942344f0b0821240214511404ce980929d3388c05344125380519f6710c8a84208539ec0600739f0b0830f4a4c49010868d0d364871aa20c1df4123e7c8007273862842fc8c881ea600c1e4a6d94e2a674dfecd96c6df8e20a308ac003172880b1386cd2e6f070834f0b961431250a18305603c0279779539d708552d3912176b5b6d29faa8d258e00b14b720ac6c449cf911df67d75591625b203c2d4b318d1d9f52cd41e235f6c70f604f1b3eb79dcfa4c371daf4d9524345508854e6faa2bd62bfdca8625e54482907d8d362ca1748975d801235d66ec1121955c683cc8cbe0b828a2967dda1178828a266adfdc33cb7dc4b2b9832adaa4cb4b97749949ba0c75a8cb6f2c7b7bd6254b55eaf06c3c97efd573015dbceb524997f9a34387060dbb43aad910bcf88eff59ffc0affbc775dcbbef9dfe3e2b697d5ccd7080ef8ead73185b38ddbb8fddf862bfef9da5b9ef9e17dde7c5f7ddeecb19e77a91770c31ec12e76ece06e76eee565a3337d2fd8d65cef77adb3d9d2bb91de79e62c0b6e062dbb66df3b663ec1b2d4b83e7be4f8b592b2067833a9fe3b66ddb72cd707cb7c0e7636edb4410c407b18e61630b866de16fdb3911ffbba5f3768f0b8edbfe71b16dff3e8fdb48210a5c7c9c2e7336f7cd86f7d1f759b76d04de1bf3fe9ec70fcc5997d7feb87fc7b86f2cc38fcb1490f38de077f03b384739036fd3fd3bd8fdfb77f22674810107614ace397bc7a3f7dce55ba463d271bef59dbb45d2319ad31b89447a3ef79ae1d88eb5f5ef39dfd241763e177e663bb87f27e9147ec8598bf9dbb1e6fe9dfb87bb29dfb74de1b86f9b4d873b5d7e1cf63c702cf3e7c32a8af9284cc9f9dff959fef5ec55ef2097bd679e2eebf61e726309647327e9f2eefcef2b69b0dec16bf9c5e631bb37cecd8d6510f01ae8c94037784c1b6d70ea06b36debb663db988f6135db81596d2cefce72dddb776fb4590cf7d0cddf3a1dc3e95bc92ce79c8d254ebd8294425c48c1711cd71d8fdd391beff89e756f1c59df3d901bcb6b739f8e01f59c2a64eddd3a3702ff5247c7f7f0588296c607b3267d663bbce73ad229fc90c18bf8dc2d0d7ac79b14f9de392938ce66c31eee3aeef3a4b1e4348e151fa42485f73b5bf8eee570ffc63b55e00e8eb3925cfe967559777e786e1ccb18b6c71dc42058d240f3472da5739fb305eee5dd9ef7d238eb8ab779630964f4ece16834b736ca40f7e8d868a4bb1bebce461b1cbb47258eb537bedb1df58a01ef6970a43e0fe3580f8838ea944a5ec59c60d5318a8dd4da5edeece5866d237681ee7c3ce66f23dd98f5d958e76e1d1f031f7ed31b772bdc18631206c183e76ed50c07fed6433ce9dbb9f15c673b2d7a5a46d49c2e61d8dc376dfdc55a3bba7b257750a7f043e6b4c81d7fd3d5d222a763ba6f9fdf318a3deff8341c60e3d01d8119e8ee8ef1776c06ebdb67e682a77fd01f746f3a3f26bb2eeb905d6d9f1f8de506c2cfc62414b8e14b6c7e500c941e84a497605f5262ff41b7768c3b0a52382dc67c73ffe6be1d87fb0c74e3d0dd65bd91ce7dda16d3c17fa02e2fd3c6dddb48e3b4dc58c290cf1de3b2fe4177f7b94bace26ea4bbf35eb398ebddb16ee48e6135eb81d9ed33cbd18d759f348a3693215dd42fb61bebce63991f3af7cedb4ed2a15dd9fe52bb1df53aa76db0d36d2cb376017b36cefd62f13837cb166326cfb63e79b6a56d7ed05dfeb04e8f63e91f74db446006bae91ff31a36fda8437a100490f41228a12d96f880800912264d8e80c12eaf0dc4ee59b2440ab860b2636f4d40b854e7989b8af473537d73ed62a44658f2439590a2c4173d4db4f811329e934e9d798da844b239e9129e232fc8828705aaaa95baf75e2446a0c0810f9ca8e2470acc05c1bef7ded798b6c5012e20620410458c11460f606e55ab11bbfe261062d79f6ccc1e25666c6dcf1e253fb986aaaa6aa8aa2fe0079b0f9607ba8fd5ac4d60ce2f5818cae7c2b6093476b8955e6aa4d7053ff223b58695a44988c2b8fe522d68531931cf406dcfd2d5bd3a4014cd7adc99c9501d1d1899c90303d2745f16ec70d55a0096f0441d214cc1c51b87dad70b003005b556beb03da53421501468e3d85d5a7dc5e0976ad30f72793520dc57d5a52a6aa92ddae758cf5ee154c13201ce2097f4f2dc7b81ae0b028d7609ebe4d4c6e0ba2ccb73ddf254f252cba2a87bf50d79cbb0bf74497f617a0921acb55aab5f837d496945f306e97b595448e1a8dbbe6eba5f2a914b519475bb427549fdea6b6fe504b6d537b42bdb06cd964c67cb45a95aed4b650176dd20cf39e70b3c30a2aa9a7002f40045511545892a6c2a01779c2ab099526d43758df2cf885c62cff33c4c6d8d5249fa2390883115ce9de16e2156b3dccc2676e58152c97b046b2d3955a0179180a2acb5f1bddd4e60a75defb5af24a529bdf6de5b8defe859eae6f403bdb275cb9c1d8ef4bad5c65852a07d2bcdd7b50dda33eb7175747a501d1d98abc7e481b9f4655728cd4778d5c64bfb4c2fc54225296b2d3a00166b291d80b5d6524ba93d352b79296b71eaa698e45b6b0d710ac025288aaad66637acb531d52beafa4551d7524b5f80532529154e15e8b8ed38ee2cc456c6bdd4bd9b1999ea29e44392cb8b6b852f5c6dd0eaba62c05d8366391cb05ebd14372c21ce1ecb9e6262afaaaa6ae36cb1572b719fc26ac022ee8843ed6ba7a5e8b55e586afed209aa225bbbe758d56a29ec4dca563a298dd261cd8177732ae68d77e37581cdd307834c2f7bca76e052d4055d96655995a5340657053a06b2e3a56270a91b664061aaec6fcf67b34a82670b96004e29d8b0ba5616c416b000baac24645da9bf233d4deaeacb0304c63dafd2154e3caff046ad990bdff6f734660b0a53cf15e80db0e9cb965d4f5fa6b0e93566133449fa34cafefedd4788949defa5afca6644fdbdf49d47caf7d2177e2fe92f3c168e39b48f6e6531da4737449f59a8c598eea2e7e872b6127bbb37d60de2c8d91f0dd5b12bdb49bbb25d08cb8e5dd9b68f1679b1357665cb3e18eccab67ddb07c4ae6cdb77ec1b737cd77eb3984f3bcd6e74224d25b7e76c1f4a484d4443acb0c20a2bc618638c31c218792371a4b7d1c88a271d8b4036f785a36d0bcf3decc208c32d8c6debc29c3d1b469675866165ddddc11cc3cee1a8bb772d9f346e792c816ceda0d7619a97751777edece264b62dcb58800106186098618619669051da6e916e79e73e91a46340bc6df7ce8d650c3b406ff4481c29dfd3962e63d8563e587adf3ccfd3319c6595c8c864e4cc953830735dc75d3272e6385d5e5ece0db5d76caf54024b1ae619679c61c6e8df491fe9a2966519e8ce8e8db23c1acb9c1f83698c252c61094b38c5b045142449d290343424190519054946c1791e77dadc696f34bbbc214992244952075d60988559563682b7b02fbb85dd1a47f78e65b7b67f731cc76dd8ad73a351766b2c6bb677ecd9f6ecba72ee9e5935351b236d7fa9592666e78e69cbc2b02e50e8c2a230766bd39d056a6066591a87da38d3c42e2c9188a341e3841354544c26512c9548a4301c8d40f0fb3cafeb386edb721689342dcb30c6b0500804fabe6dd3e5e5bdb476785149edefa3cf2ad474596deb9eb5adcfd19c2a787aa336f7396d6ce72639ce495a35a00d0eb541ebabe0769b819b675135a50d0a2cbaaeeb46c7e3e8dd575ebbf3ba63dec8c5789e077638168fe02778ef31b392383f6f1ac8c640b6450abb5b1a63d161d175df371a95c6b2eb348ec5a2d3386ed365cd79c481378da06974d3086497dee7dc25f6eed9f77d875f4763ba6b83de475ecc8eab921888c8c4175e68698eb485a3bf54fcc38d196bcb3af771e1a88a98c3de17dc171c377f32077ef3e78bedf3c726cf1f6ffecc9f18eccafca13e7bee9078ba1a1aa284cc1d9fe3c61189d31ce9e04190e340eb3bf60e5ac7dcf16895ea06b3129490b32ebf6e4809a72a61dbfebd3d6bdbaf6fdaf76dff9eeb36769d07de03bf8f9e6d2f76dbdd57b9cc71dc318ccbf256f73782dc58f776aed3b79279db369c7a05c18210430c31c4b848b6d8300b052464eadeb66db185e76d9bc771a30709b7e044220eca36964afc8e723693d971834ebab1efd8cd7a7857b2bd7bf7bc28418ca6d19fed1dd493ae505a243f686cd0f336d14877d7838a6157b6ee18bd43f2561dc68bee85aeb0bdd3f487aef083c6eef4469bdc211880a2331a5d245bc598f8c9021321e177c7782cddea8eb9634f8bdc31c68d32c4602ec63bf799e1f0380be30e779675eedef1316b9421a63bf899e1e846decbee259dc20fb9133bacc54ec7701e290b2e0b8e23791cce44c291c99445a7691ec7756309c3ee3e6dcb09ff540e76d70957f976535762f70e3af771c73e0fb4d98eee60cc37d20d7adccd62c077d98e59499adde8743ea8bb7b63ddf9cb62bc77c72a9ea149147fbe8a8d50919f8d5ab775a2975d376a9aee82ecef9885c2113275907b47c568049ea302049f7923d0fb44daa789b2ec4bca2c1fcb547cddbfbb8b72f7eb5df6466379daa38363e963835da7cbefee3375611876364817bb7f5719675df9747852d8759fb545e561a7cb92caa74beea3797004bd3496dc6f4edbbbc8f3c2ee98cd622e0e1b30a99a35201ce7b65903e8dcde580f8ee569835fa6809c9346278d461afcac24081eb328b0c1972a1b1c8dc6ef2fd6e3ba8723ddde58f7f73aba0d78ef2350e34a8aee69964a8a7e5552f41a95143d47f412852d7acd72508cd94f9fa60aa26b9b8cd39b76213bfddc181b52c364022b0ee327f3b2f6d27b5989786396dd1be9dec632c8de8e5949c8d439f03fdcc11ff0a077dc795af612cb3415aca297e02f29f17fd02d3a2642e1c7c3a1fbeb7499339634dbf3421128aabce43df42efaf60e9648e148a481dc7615afc4ff0e7a37fea0fbfb2e0eb3d90d70a6663394766349eeeed8cdc0d34cbbd2dd474af79ad17457e9b4314674f0da9843a4bb83ba8b01ef5d1b7380f740ef2fb6ab7b34cefd8d7563349b61b12bdb2fbbb275c72caed98dee5875c97665fbcb367382034ed03adebdfbb7bdd3352ab93da6bbf76fccd17564253bee187f6a17f029dd5a166497789795c8ae684ca6ac084d008f479094bd0e77de76eb9874e36505e4ecacad9bbd8d489ef735c16bc2f7816038f29a00ea3267839b97bdcc719e57ba01ef1df36c40ef03419b81cfbaf436087ade8d28e58a2baeb8620aeedf2672dff76dd8c25690204080e07c7fb1df8737bcbf6f53e0296e30d77537780a8c73efdef2379c5dde608c31c65ebec1c73983097748a9542af9387de77cf8084ba713134e4c38dd21e1c9f42022134e3e36f7bd994c9b0bf7186eee13cf891fc789e2cde9743a9d4ea7d3131fa6514714b109b4f8c06fdab2acaeeb78ec1e34aef2ee9c776eb3366ba3a15578f0085958b460d182250f19852c273c888a1639b3f080427af6994822e9232b14db72e5912e435097274b72f3d8e50d0b0b0b8bca69b0a88c3458544e4345b3d815161f1e278c3a2a2a3aa39a09c1cac04446dd186ebab3b0852d6c610b5bd8c26118ea00bf732c2c25b9ad6ddbb64d673d2bd9e9524729872e2ea3326e5cca18059e79a884ac180a83d829a21100002001a315000020100c878362b168340e44c9c70714800b849a4864469949a44914c3200c6210320811030c21000064cc0c4d49e7f411180080b661a3e1ba06262542bf17a90636949fa268bdb0a288b6c84e696f2a0e0d595870f46aef14925f0d14b67c0421c92524a2568e9adb743f46b8949f490cecd5b0376518af76e324e5909598ece3e8de88bb00df680de9bf00017a6a58b05a95a94d85961e37f8ff4c53557777450b27d2e87ffd017424224df5a8f3d2eac10f420a3180c8aba7e30de7633db86dd8509d4b5f0967e204e4d2c39fb452b0bb11f0927c42efc934df0df6315176a37962af936dd20dbc4edbf2a44384a52f3633b81c137947789ac53e631a6071d2dacafb8b391a9989ea4003eb2841c096cceb5a3ee094d06e4d6d0b1504e0c88c4954a465b9a44855d04069d006a403dc30659956f7e366271fbd9da98832af76130936655647e09c0d10ee96465e0f6e324d5b12040f0dfcbc45b97bb376bba5583c3612fc92472c15c1dddec1ce60a09eb411b54cb7e3c024e2499a4de304dac10ec5ea4913519242cfd064be264be10c1e1417aecd8afe7b81b039a65d59c58cddfb859be494dfb62f07e5a884692a50ccac9b3b01a4c2bc89392a965548a4f6826d0b5f5be7be72946a23c924c6775d99258635ee9d6c93de285d16de8de610bd5fa6393780d6e1ed18cd5821580254f718e2f920f8c68eb02cc85e687c816cf01140dd5dcc6c6d8abd205b2ff3243082c1051e9d0223213cf77dfd3f7c0aabb14f8b807773c4ace1590222aa67bfe880197648a6d63bf7f8890d54db21bdc27fda3e532c03e6159e97838ac4849be827bfa4a2772b03ffeca7ee0fb93fc541876002ea27e540edf146f1727f8046e80f7ce2c397c222b39e027aa8702d06934811e981d276ee56e741d77d976a45746a3c704b036be96c74ef626258364d1d48d104447130de28fe00413c3e5f94a2d4f05e13c0a838007effbbc0878f5fdcde5d8c007a3d6dbc5fa203f4eec0e0ecae8b2363602ad9aff94c28322a9b9b1286837e27f632d9a6de68214cddfb1a04d04214c9957fc321f17e8fd03a2f0b0a870690c66146cd8a8888ea8a6485ea20212f670241a587436a801a25cd8fa6e0422d8409173b1f69085c1008ce2f5706225c72fa0b7d33fb7601a0b9c929a3245e452627b4d31007a28600fa6af844cf5c933f545b83d300fa1900f86f0849dbc09cec0278d29a5a008e07da0b9fb9835cf7998d03bfa9bce6b03c700ac63582da4ce628256f54e70618887c751a2da8e081caae45a0e68ba70d0e0e8db9e9846564dae3e12c0eb8abb3001edd0c0cc08594ae06e8d556a3f1c46f255bf85a29cac6d48c4feb4e39a21b5bd6d88c3a9288434a482d181f14b420e48fe06bedef144057bfa58dda23d107ac862ff7893532da9142577ba872168d4f5542e7da0fb3ae3ef61959e5473013f08e45a82deda0b413c94ee49d917644da816427f2cec83b21ef44be137967a49d917622dd89b403f28ec83b90ed40de116907a4b7172291597c2ce4483143e7eefb34bb5932698fbb515c22d9b40f8998fa6e5c282230b64a706730e388a2a16202ce038c7159a88d058f30c1d52f1981fbb9626c1073a58f21b1b391345c3637f0be8faf28f9a8ed0256ea41ed9b1eab990ae2ea64b0f8a6353d9b1319043a417688a6b84c70f00f4d0d32227e7ca9da60668a8e5e171b32d0ef3f762647d2c8d8e3dda7cc6a4d885b6328c340bc2088be921c0742ff7764b6015ec0d4131d395134d2ce696dc3938d23da78f80be85172611c30af85067c0cfdd2f2c137a831e9a9fbf72a4517c9c36ef24ce10bc3451f498474743ae7e6d5ac642b9588e1d0d13da51bc19b33b679764968f52cd076dcabe935aac211edad385ecd670a1d2d1f804259548006437f7556676b129641f9b2ed4008b627567eda7a44857cc69a72556016882cf2d2352b90ba846d70c236eb492d7d486e7be5ec6d33dc019c8e926cdf5f73c7faf8113fd4a66fe27c99127337f59264b638c64ed8f85d6645c7c05273b7a3c694715d48f3b91c2dce2a8006676e408a6576da875fc55cb0304d8286c793230aac58f9bfecd9d499f37362edd8ac62ae2ca688f5d0196a8b50fbcb846aa7e64c82cb88a02342dcc819900b382b9ade55c9447102699325ea77158d86a3c599a047660eb5ab23e01446ff5ce535391a2e941d5f5a741988daa86b37888b1326fcbbbee36dbe75125cf28bf9d0a2886645c102e909d6a7fb858d7b41650341b93d2dbbd26397b8a6f37b60308b074794a8dfb4ea3efa78b5168e3a95c6e295295435af1f823723105406574ae1585fdbba47fc7a3228f79a99c7babac44afc719fcc40787eca105c0d72629bc05aafcd92f9b036e5419f5346fc5f0c1d2a563a6ed3661fd58a36283c9ca407062b8d27d98323235b0324884f08dd763f1ccb256bd1e5f2bd17fb93df70a03f192b81232a617aad5830285c150dfa6b6ee7aa114c005bb4e487492f08293bac86086b45aad35fa6944484d08dcde96ef7fb3eacb8c4ae7dcaf0f81e320c4aee07f9d732992323db870e6752e86e1640dc8735d7914080308ada29dcd7ed78162441ef3644213ce17504a5e6c024fe61117db51e3fdb22043f282fc028cbdede87a5fa969e378551f8b6ff08c5b2a1ab4de1517dfe39d8d609b5a83b6d62952808d062587f7665be752eecd8bcf2afa8e3333aabf7e3ca3a1f1dda96648475395a4e48631ded7252e3cbc92ef9772713d6835572c53bc8f90fcbc55cfdd7a8f7329bf4c674c270d7a51da77c8e2074a94424ef4b4a985503db2b530266a638ce2af1250616c69a72f22b5e924199b0b835aa63f9dd17395df42e616a933543515ea77f1b380febd1eef95dd08399e805d9f8f726d7bd7d6f77971ecc2593d249eb2278d83e7f6df51f37f5cdf2e0fc31e22e507469b371309f35079308a3b1f3d13565cf30280f615c3d1e47a12619cadc72f3941eb8958ab59c486d3c3ff0c6d2edb862634932a89ef12da0522df428a2581b4d2af6cb8ec077aaec5081cc56fa7890d139fcdda7c6ae146e04ab4ae78267822609cc359fccad70c04d3b69eb43fbd7197dd045042e96f581b78b9b63564f9921d1e98a74b6e7c599d81b845e0424406ffeb355e9bc91a903a2312836cb2e3b07d3df54269f6fc63037920463da90246b0a572520b471ac6f0de92b580a7c1dec8defbd37faf5dbb85743ebdcd99c118ea230f101650166b223bbd705d973f4f7999c89b9b95fb49ea59eb0ebd39dafe7011a39e332c079e8b899f941d6e81ee6d797dfab7482e8479cb1f580d1df3ec2d46b65e895891b3f81f2f9531c878f08edf939fde525982b703e38fc08f7e56e1b631e23dc9737835bcdcfad3d385c53966e4ff02178bcbdc725b5a5b9f9f29ac9841b435be3a461ff59667b53d590dfb64deee8ade072c963323d407744623dc841b7bf45fbda94991a381116bafc8cf089ff6e6b1de2355bd8f3c5fe1b552407327fcb47b3c9fe41f289760f65aa117c2f7459bd3a2f9d7c57383445d81a205dbd5f62a91672e9fdae066fa540fa49d759b0ce2a75616ab1d0bcd5252cbf5434a2e4f9e5a45c9b54ba14ee254f15ed2fa84d5abfdb06a94bacd9c3c7a7af169327442a21029df7a48a75e27e15bb23ecd9a830e2364089e4b79db0a0677baae2c89491fcc9b620babe67dec8cdcfe783367a764feba7d28e3bedc5fd9e3647dba7f69ae9f0ac9899aa1d241300994ee5ae16f0f26ef373fc3320b500ed83a2aed2b92b30d4dbbd9c27619634ad8bfb33ab0598028eeaf76b28493bd68c4c7f628df2bc8040fae9ee1c666c321affeb351b4c1dbdec1e0c3cec2239a86cc62c2952cea95018ccc3603dc07088fbd894122ada470891bcd43e2bb90d875bffc6dd25442d77a704a650122003a806c681c01a46a0b5056117fa2fe77662fcaa82829da12a40c5706a802bb1b9e7fd3981a40facfa018e8006587bee533fae5790d4d94f3c5a2a45b9186284a81031c0bd70c62389a72eae3fb91eb7e69e8083cb557b4a82f43fee0177f576eaa6c9b2293bcfbc621be78846fa9d08b35406e0730dd390a00e6625ac72cc7cb4257b0602c253b285db40d4251fc65c1c7a3ef95b0f06f71a0b286817e1fdd8d4ee75a6b91b7cd7740f1de295d3131438074169612a58a25addcda391dbdf05a184e2e025e1e05fa90c3696a4876916b344086bcef3c722abf3efa6120fb86b5f6101796a50431e349b9590a62761a7c726627c02c36b038a7543e506a44a0a9168d69b3e4f47432e64e799c437f5f67e00512b6f41430cb09c5c2c891eea86d2e20074893f1183900575fa332468104e702d406932363e0fe68a47e0fd3752b1e19cc52b5009f259f5b2bbc05ae9084dfce39de2104d7b85f879541bc7a076081c41b4fea319f6115f345228918f0287539bd8faad59f54526c332c58d70ebcd2e0abe18e5f7721d6044b2a7bdc355c363c43293b5888719469f9cdc4fde322743ef1a31bc6b7e51baf5c00bf4b816b8283a47e0dfed92313b1c18b679714568b1b853958ad7622630d3838c659ad105849c8ac2c666f8867e90ff40637c983e77a07bd3416b0744c3704828d63b9040d5505276d82764d917b51d085b89f7df54271c10d804d815bf284b650a188f8b5c02d5c5eff6edc13818c645e0b8e279cdddd8bbb74aa3b834f02a2bfe23620b36bbee7183b09071eb5d9b046394238e3fff7edeb66f91f584713705792bb08e0b2be0b39911e04da81c21e397da01ae5b6b0ddd1ce01c84ed6dd6f543207fa42b745118e5bbabd1834711883c9d4944db105ab280352c11ed1c1682bc660ff626efd4333e284a1c2728abee589ccbdedec5564497b7f2251cb7b39f6682eba9c39f785b99ecbd0c05ca8f473f88d58114fd489e88a7df897a4fb64937f222fcbbd1e82a06d33a805f7068a44c98e4e0a84b6822dec5e27709b562edf72700de31850904f5018735947feb87dd1007ea734c2e59dd06d2e20669407d64a0a0e20165e2242911fe903ec57214eb14f17e8620c2cc449931130cc6e43f30b0590c4f947d7a935738c8f844ba58cf956a7f1aa5c6972084d4056b5d927ca50e99e092dcc7aa8b11102d25ec779c1258e2e645d5c7bae43fbb0be04e52802436b1698a0e0b58a31a3c094f2880312891d41c36eadb94c3025ede3434facf4e4bad90b9f84593bef82c227a57b97b9ea2510e44a524839a3035286934a6933323fac17ca190989b5c0c749173c78d96c31cb15f37d82f0413663299d161a83168c505ad902969da8487a75ce3fd00c7d0300fad4a73101a9d43c2cfde89ac51facbdeec9707d6a944783d45273551865b4e548985971e947b4f94d314d46a0a8d8df7d01d7fb481fe64d0be555f5e166da31c14e4e537911eb9412f90c0606d090300fffa90c6507f6c75ebad8e828d7e181efcd4cbdef2709f9c65f1f3bed5ecfad417fa3385bad4366fdd334783a3654b0b626f1ec3ded8df3c6b63f5da55b60ee330500606e0e3120ff94436a5925891ff285f417d91c163991e98a71f13bfaff67653138ff02e897cd4f267fc45c960c44ecf7a8e21286fae3331f3a282729810625adc69e2cb7c925d4a8f29045fc6d7e4a2f061a78e5b30900613548b106eeea559bf8b8fa5c5170da63e6e0ab6652f6bca0292c457204ca28b2cad41b760b96bb9a3ea2185d806dd99003cd6702179b512b74abc6fce2f73f2652da47d0297941c2239e93ba9241ec441f7c5253154b25439eee0d1ac2f25106ddb6ffb52d4e34e6e4e82ce4b9da071489a18bd172729deee85ba270cd81c566c056dc14b90898825f74ddff0a9cac4536334396be129ad30c479892745ee668c8d8ff80fa28d4316e93e94eb5ebb4eba0da721abafcc73ed1fed5461c3356f95ee52c95b2ee309b96faf33e715e65c566a4906f205960f4c73c8d74280dd7df46426b8392b53a68d68fdac97ccee7c07b61972b7537cfaf6fa0ca4e61c1bd942dc81c64c0a0c50dff0afee9662a3584ae49df9fca908f88e1bed6ca958167a40545de80151debde4bd98f7132cef077890e8a18ef61056826388871841f18528eaa790567ab898cf0cfbda3fcfcdd8c47e86b921c49480bac6476fd06c38eaed536d662058f36e1b4e6b629391b614a5cce9c90ff7bce579e82f0c873ac27f2e37ecef69239ca6f2ab209d639437df172a7f2c46124a9e323341e98ef54ef48387eeda29c984c32ab294be0788a7829c3fb65efdf8c8b542cde579642a2d01a509c76f933c56ebc821191f20f542f6826b9f8ff72574ffa9caa5795d54743762da7f1965523122de4e349e939bbe14662bb80ce32a81326fd44719f284e8cc624243db31fb4e9998dab702c465ba2dec4ccf4d81c5e5ee06b6b060e3c89c670e6015004d442481aef0e97594cc19568e320db41263728655641906c08caf1b5722b3237c8db7015f894792fb63b5dfa77659c19d337599e575b1a0db6e25f417f25e0cf75a17b679b3568580de2888e32ef2125e5d1228e0e2fa12763179789811162f190020be5e409366b62e82db3857992acdab0b4234c19739089c2a208480499011debc28381878783ab9c69ec1776d35c2f6d9ecc04bf26a15e2f9bf80ba1d24175d9e79da07756de05134d37f0fb9914a08fe96a2e346a94a194ebb7d9785d48ab3d84419aef38015f96e92aea163ad309ab4a6052b9623e7b6686d7b6e6acfead22f9f118826cb4a2833a72b0f62f0fb7bcf3b3810217fb0ee1474484cbfd74feb97bdcbe7576e51abbbed6b88631da5bbd51ae0da70e5434f409f2b4ce76e30bff53e87a4120edfedb90594c969b753dc0bf909bd1b5f1cf2997887104fe33dc6823551cf729ce04d3e5cd98aae74d785c575d5f07bfdbe821fb937c00d021896fc9406df7114dba6dad6b7f5ea661b2c6fff5d93210070f50e67d80da9ea2d8d995dbeccd0cad3746e7b3a414a39b22ca3db26b24cf5cd6e35fbde3fe4bfb0f3a03875df60cb1ef46c2bc67f61f4a2c83352957765f97e0d517e28bdfae8f1ddbaf91cb0b73b3b7593dfc4c18cdedc74f3091e8798b3f453c474085cc3aeb5bc425a9330772cb2c7652f63e6ac76c2f8d20ab6fd035bdd7528a51a51a3a131cb48db1e7f9a8d0f69dd68c6b0e6fc210b8fcd65df0ab922757fc604ac81ea83471911a31bb2ead3b1bdfa949e72a2fe31737d5719733a1b552d1b20635eadc35ea60c1a91008746971c69053d5e91acef8eb8b8a41f874cff1eccd46ecab36c6e86bd6f550eeff4192d18bfe0d560e5391b6d9eb777129d50b2719460a270c67d65e275b0f20a5eda2ed1ad6f8bbe668a439102c42b398232a99914467c23c36d691d96a5a300f35ba931cd05480e4464eea6d1bf2884f260b34401b9d7b14f4d0cf7b2b59a597bd597d0d88057493381983a08973f55391780c4c0663af6f1e7547e6510526f028a675e5e7e706b98a3aee0ac8ed3b17a0c77ccad8b31cf3547e455c4b5cd053988ccf3cd029fb110821dbcedf95e0d040b7ea04eb3bc9082549bef80c6c88ae535d58309492f12b9d22494c6664c07cbd61d21f684759f102316a3292f2378b6625c8cee30f5aa254c5d22e3162e546a7f1b1fbdf519addeb48064196e948d4776451f72ccdf1378c7cb281031151264073a57e3c7d5aaa64abaaab4e04d23674f5dbc3af315646a8afa4a25ce1fefd2a5c86ad1ccc5582f7a70aca04f98dd4f2603cfc0257c2913f4cb6e59c50d3c52fb99fa90e0855d178ac10e6a1d09afc7ec50cd55437349d8c2114ec777e6fd249a209efcbf61f4d6abe82e879113f5d42448fa607038a729f80b50e3f5c6c2276a4ae1f577a86195bb0cbe26676f34d3a9ff252dbe3998c237707cc290bfac975a73c889a8d804ccdcdbb7bdab69c4c48a9ce0f75ec6780505fa9a37105dae888bc49ccc5ab5db18bae9eb20b34f35d096372b72671fa58d14287ddb380feca3cc0606bc05c56c6927f5b31906edb24978d828463ee5b90d16ee26f74c10d0c470433526fea6d8e78eb37c8b0b67f492a43947afe76639ad8b59a17907f0db50dfa56dd7eb5b50ccdded0d636c6cb95899c0a127b6bb2a430aed09f84ac1930364b96fbc7479ac674b441136a9f520607068331f62cec907c4eae9c5428129816772971cd676171b1780b340e15aacc7555d44ee8714162a912014926689057415fa5a674231bd1d0234c5de3eeb802a3b27253801d8adec1ceecb37e04e705b2a76aa01a1d6af6b07c56ef952f8b59caeab0b78b64ee64659c73a443dc5891f69b4e4564ee4d3b833dc8c8ac0dd39baf0881ab5053b685cf348e2a77a0a81462cb01893040d3da4813ab3f13729f5224dfeeb8775abdef7c6e04da7afa7052a205f6b6d3ca293750bdd243ca63ddd55832c403cd67a083b46192683b36e15e20b0904afd91c787a7514912fd4b0762aee3bc605782c3197fc759cd3010a969ae846cb0c091096ff96e795dfa3473c648f0546f25af1876962602677399b23135cd7c617ed953c2ab62e4c2bdcdd0a193cedf65ad17069b2c802e84c42716b1cc41f5ce12d7ba499eb090dd862d5bcc0844db13102168ee6689688e621c0d31669f627c5605f6cf164852c69a3fde6061ccc66edb84b3d87baecdadb8a10d32e1a5fa01a914da9a19a558112282878be80021661fed3d605023a8d7add47a582806d8032d6258e4f601dc8b2a62856be156e1a9357cd9924ef99b3552e1b26ed59c1611f4c49fcd0a10c9455d250ffc14958d0d110bf3b8344b283c855f1dabfd79558b1c818743c6969c384c4e6e5c60ddaa111c905cd595f49bc3108ec43bb66222658841d4ce74098cb3e80dcb9fb3b06ea896c6ba82cc10aea871c232375b7daaeb79d410bd77ce868782b5203741ad3eda0fa831f8d75dda99cc3cb4b16e438cf38c85ee96cc539c037acc3a40687e55335d8a0a79a34cc72018da500b874f0dc703b496f559c347bcbf49f9586b1b28466aae628ff337ddcf8646b7f151037a8a87522085ea7fe52272fa5de397c930718936ff27ba4529e20a3b22231b811bae0a50c55fd049e9406a400ed729840f4dacdef3796c2fb032fb17f677fa96700a4cf09124f777512824ac579d8288131745979b255087d996b7b498fc8885e850606d72024f1847f2ad282211bf08727320e62bf7714656fd86cb9ac4fbf55faab91c457f9d3f21c589b6562245e5f46d020dcb09ee2e27beef06e4b1fe53977c0580200fdcd48ac1b59d958b276d1fe81c58d1633c8e3b69f7c145b160e40b52f09ef50f7205051a254dff8632359e572c86c337a9411ae4477478da384e06edc5665f34a9c6ca4e8b3299cc3893c7a84156867fcfde9b2a4110c8251c54bd800a873f0c67901d0174c89056f45c092fe400cea357092ece532e62732610d51d9e8f35deca42620c9b8b69da3986f894d931a89af8570f4b54ebfa8476e04e8e16d96a0d6a832b20c48f306e6e7febce546adb05d4e15dc8a1613b97d428a9e26a0a09c18a18f7879289f6d1473b32b279758abc59c37e769799ff0f208e5f6e8f998a078af0465f8d3767502d5682045fe427be210527e887dc80a2a096a0ede1a6f09f1d6154ec87392445a519114e124a976df5be99cd162f62a882a6def4b5d8b8265e5fb928f7b25137442002471ddd1db9272a7e399247c08e44b46114a01835610afb444a1e1010ccabb5266aaa5bb24202de0a7696beda3a992f19d3f6333f19911774c4bb706ac3230b5cb1752cc08e128075f5cf4ea584286dc5ae51a1135e9abde909b7cc2e5a91b9efbab1e7ee649de8d1c9453e71274c5682499d2c80460189c5161966a2e7b8aabd9066947010730f22e2d634ce7a383b09d35d6e0f98e36e4c4613917ab237b563068f75b1e672b45146061efdddfefb0c438e2bc4757f3631643999b50b07c7ccf0cbc30edd3f430c39b9a934f2bc05f37695b716493ce3fc8703d715577ce8162c755b714d8cf848dc10743a460bda2f934ac0c0e8f0ee070014c1d4974686aafd016b58b4a89fc280030385866c70f92c6160910fc75adb3296a032683f6eb9112d5975b883ab241be91b2645da7335182bbf8a41271d1378015a47fbf529d5c7ecd83f4468273c423b4296645e2e883f35ec2a9d9724ce9e44ca6523dae0ecc9ada9e8950b4ab0060169976771fae9068b726a9bea3143a597f9eb43d63aec00453f78481daecdcc58919b7d8fc170da98d49b93a9401b424ad29b02e3e5407880ae2b4991c79c7a9debada4d2f6c2c600a812394f5f93bca1c7780228d70427c308561eab81cd51f432a6933ae80ebcb3a8aa7774bbbc0d58147983ad08ee02ea026a9608ea1153a1b75025387334a6fa052262f3caf480c8c5833e41138a5d5df7cdea80945a20263205dd590a687be8530402473ee66a3ded440eb0a4e3309782ea79e47316a482906bed42d8638244983f0af60ff9880645d0ad078b0a2a77b5041b553b4b53f244d13c6b68d064d6beeb82722478b84a3c2755eff3d3504b6c3264db02dbd8b82db19eaf8d7b9e84398cb8772a0d1ed51d0b02b8ae39c70c549d34dc3551d09956690c1a01b3e0c5087b337394825f97d61f651b9e0baa0645e48e4ea6bfa62c7f6467ce81977960de387061c19ee7f93be3c0e791e3fe5cc04388e9cb5a8f3041fa9fd62997c0f32d53783abed090ac6619e2d3b8f17b8160537dfb08efc39fcb4d269ce5a1f33af305eaa76ffd5b357813e810bfe8dc00f0cafa29b204e0705ac0475721e26c49982299f7e7c5f4124b7f4489e883445d7e53313221e6f407060e7f33f83787bab96f37f5c94edfa07023f28e94094404bcc76a35f7b01e66aeb09cc774642a0a56ba2a7c707ef2ecb04e1b309ec66036ec31277971e353d99258ead987059226651baeffd9c2abcac035647e8975f02929399ec63b9f62285d934e3e73a917c3a0bfe41c8ebc33935d9bc1afc306febf4ee509b2a552d94f27db3c24e127a92fe51d912606ce17354b18ae52537dcb809178f0fb4afe63fd8566565fa7b418bb82ec80aac5394ab50ebbddc7b443d978b9a18e0484d1e4f8876df9a1e6a21696e0b489e189af34e860f2c02e007e4906401eaad3e752de31bacf1e23adc96f955ac0ba57ba60df1874e5d8b3250ddb7ad2c52bd9b26e52d9771b98f90c66551d9f5d865669f21a17966086fbdba7ced68095ce311a364f9aa0bb1ec3eea767b45e30a8068886fe5f9f12ab9ac139b646333f7a5dcc6c407d99439a5cf5e0524d8556b019559d39b1c9f77c2f2b758861a7e8b8d2e78d760d89ead1d8557c590baf436ce0825163611b071fd4f92b8a1ea928fe0acaf03273e2eef391c18d818a251cdfb3aac7beae43a4cec22f6f64bad8339758bd10306c9e5b3f2095ff6a74e1ca92b534150b9d0309ffa27f7268a6c952f075ba590b3df7b2dae8a4172c65f2c60a974af2748d1beaacfc2d8679acd086e7d2d89fe90c248faa5bc84b87ab6f82bd035e9d74a2a5fb7b35ac950efd6f5b591ea7795359cfbcbc14fc1a8a0eec516d9dfdbecc27d17ba27bf29e7724835c162a312e6f53e3eebf819bf4a34f100efddbadfbaf51769d881573ab8b14d9ae4480a6af940c0ba507644e763d29bd10ed54d9cc0e3290722fb8c655a161b6dcb010ddb18de1633650e7c6927e0962c431a6382cbf8317ea6165be14d3ca191655deafddd801b280356bd010c8e3f5e8a89c266db625e7fbb97f83151620f1d282b9503455167a808c7730b91acf8155a03cac5bf8b7d5a14392d38d35fc59fcbf452f7b6132f29860730eaec57e10f815131856a311a6feba3b4dbb2cdfa9e4ff2360e562f7bc1008ebec66757f9be6d4f27e4e69a2e93411ce87ba46e54416118d53c7a1dcc1f3569353b87450840017984c4c8f4c194c7c7da2875a1acde2534294cd14d4a82797c73bc2b77a9cd1fd382b815359a7d85876bb3c80b8bbc91f2ecd00d634aa420f0c6ca8f18703d71cbd863db93752f787ceac08d007715c21cd283f1ce7a77912dc98cf0905bcaa7090e966c76af17296d05f038070141a090549572a2227726dc1e81ab5a5a0c7e30e77e4e8f081ac459d7823d01edae94abb9ca95e449ec2d139fe198a3984875aa747bf6c3b8c18f5212b1ce94e85d2d889ec4982d8c98721cc423c834cea92886bf4b892c21f2a6edae059647aefd2ef96e79eac71a24735eb8a53bfadc1743b3d4f5bcdb491a55e6152550a741d7400d52432fa8df61900c1fcf697a3fa756c6660874a0d85e1ca44ebcd00df6d3e4097156bdb6fcf82a4e56d5339bc6b520a5145468483a87d0caaab5b2547f6f5eedd5f62a1ebca8f863d60a05c924576cf5659f35f3ffe7655a562c6ceeac0012b444aaf2c716a64f8a883257965c6a0efe1610b7ae1d73848b50821d2ed30ccef9fd63fcdb75a9d030c6e7314a428fcfb4409b30531221439937ec003d1c61193631ff21aa543aceb88552f8c09b5f8e592e2a361a9dcb7002bb560f41271bebeab3bdb1548aa8e7530af37772b084e145af0fbf79b797c255b5eb80859d99e44bd4697ab84c8d2fa23af716ae7ece631f0272951147367aead5e77b2c740146dd072395426a385e65735c9c9f6483923f50684517f78bb0085c84c011d894a2d66364dd596fd5107e161b4bf72366c5422f211e633a50c07204542802abe6e69d6cdfbf937f6325b3ad096d661ef625d32c05fc1e251aa795dbbf5bbbf5017539f94905881d25c7f548a211ee5be7a3ac4c9035512abad63d572de80f6cf171f06e56bfa4a18ec164ba513c6f7c43b882249a5c07ce5d54ae1256c2edfd623ee6061362a1c1f515f220f84ef00943938e108442ab70be2ba6964af9e43ba92beadddfbd71b34d50d0cbaea6ce09562df23da52d408ff458191de51e4a4f710f89c275294458f750906f1748bf38e231308ccbaab1fa50846b64f6cfaaf7da6beb3d9b274de27819f9c8b108adfe49979b1de4e3d1acf7cdecc641d0a2fa882d2871cd49f2f4f41aef19ef050e679821ce8cabd59570a002ba1a008dbdf3350513099c75ee778f535f831ea42d4f1f7ce6e52bbaaf53a9077da74cf0d731252b4da36168540ed4b32e14e98bd4cc8da8a42c394264356872337579cbf8269e1f24671a24ae92b81e71a46106e0e1ed87a1fa579e250da2b2c6783d1f9138baf7e13895da6c57f063264004616ca56869500a9600271a6c50f82685beb2b9acc85a2193282514f7ea430aff201b61bb5fbe8358ed208418f83b9eb30beb7eaa9e5d9f0376f5763bd1165fcdbdb627538172e16b58c4b5a70e9a2234d2d74f2510e1a2debf41f5d0f339b4b5baded0b32e227f1b39be598d0971004c1cc2d46d9ef0a909a1b06e8c7bc376e32e0fc344e8140f21662d3a24826c41b75bd22c1f7b761d4c8c6fe935f0a6ca4408ddb7e5d164e82a06ae4e2cb4e61c300de3b455a437e585c28c8574c051c16dfdc41fc29c0be418fd306cad385494e26651c18aa3800c6a4b1a886e69a8fce0924b3757406f4b7854f85564729d3c7fbfb6007102c3e38ccc022b3bd551b51ab48714e779ec4810ce78466f86b5a043a3d84dec4a7e92e38bfddca83b2e4a892a6d75884dcba56a52bd9ca8a253cd8eca79d84909316f6d7cda2813bdb24614e6487ac225fd0707939b25ea7901c88072cd3a67a79197a9a2a1e10a9b9e1497582320404f5125322e6b5ede16981e22748050968b2667073713d6c2f54966f7a6382a52cc08e404b3fa014bb7636aad0777bb48c8ddd086a445030ca8839c49e9fbeeabef0f569609e29afcf07e29e18a69b92c083389318eb4da8de317fd76125fc8211ed6437562ba79d4418e5a485664a7c75014660ec3183025ea1f7b34b41e78e96bed5b11de3947834f53dc5cd85ba460b5864dc2453ecd54133a3c2ffb055e2093cf6151ef022750c0a41218641c0cf66f1f6006c5a6ee8b341daee14383c7044fac4559d2efc03dc4da448d3deb60452c0609071d7da69d7d5d61ea1f01927e62944aa5821b53587c5e402b2d6cb6c16dfbf9cf45e238c18b91fa914a47df0acb72019e45c77e0077f1a3686093ece20f8c860274b4c92b90a93d4881a83d6516ee629e182408c31bfacd8d0196e53198c36005ee7b72b2be8aa81b03d3cc089116a1789132504aab974d9a2995ac0e72fcb99b7360fcc63f10540b1e7a184220bdba7fcb1539e0232cb13355f94e5823794e02c35bfb64ed76ac02d88b25b48a7b233caa03fa812a4325843342043f0a17c82a5ba61c0ed506dcd022eb566bf313467396475f17abaa527187f99420a090b2a281187d8751fdd5fd28a8646c0030c26c63d9c568a96b7f8f687dcbc7ca5b3bf769915213a1237ec2f707e9dd8957a4cce7c80c7cc3fe18d1831f890b0a91aeca71d805c55dc8da5f6394b51cd91f52b785d61f5f10119f8c03924b28deda335ab81497c9a71c3d0806f0104865fe5406ae2343034c66d231c75e4f0823708ae4c011f25d366e978511ce1b8658f9df3cbc0ad2b0e66b986c760d59666b7c2d6702bae8da0d85bed0d348481248b35219b5af02527ea7b09437b6b9004688c7c41823f2dc3db2b382231b75357d6e7caf5ea3e0e2f361cdad170d112d26e47e9a7290a5584f97c6156d6535cc8606789ab2694b76129ff4013ce9d668f44be20f67fdfbd42829cb3a4c50a5cb3041871f9e1784278e886643fcce75cbd0dca8d48dacc96ebc6ffdf85b632de97e5d65d226a41b666ac0fcc3553e998d6af728e1867ad987af45ea42ec4e95b1eaba19fdeac0c8e8e1bf9be3c7466c128b8f32e28463daa0a2d339ec41947d718f280640dc0be0bbe8fc9d62d9d38a018f91e98d29a25f5601fffafb1f195ffaac17d0c18b5abb0015589751693246320929af11960196404ed4ddc8932fd8fcb64b570675d9b1178612ba60efde8e203dc7e85b6d1ebaca89e2987c1519f3db331fb308c968ed0c0bad1f774d4f017bfb5148c136032500c5bcb160e0e1ff6700e294da7dd7dbb2567683fe26e3296694cdbc7fb9597d7977af4fd08fc28a8432f68714fcae39a95774ee68bfa3f8cfbae623b30d2c0f75e8d4848e232a60ac2840c5d8bcd4c43ca051fa3da5a2d9a56ed2fab3e05a3714fca868a004e07ddedde2f782a171ff0bd3268b1b9c895c5d026331be42e3cb79551c677af14f051a794bf0aab0262ba4062edaa6189e9d42426bd6aea1d40461285e935e04ea21b9df191f05e1decd02cf69afb38d6aa012774ce4a193c08c81964633f08d318142ade8c65e438e9907665a7a734fc94fb0570c6aa6c15576c9bfa0865bb49a425f798b53c35e918b0995d2bc6feb8123601fc90b87802e655669e37abbee7182baf9156621451047b85a91325e0cbd22596bebd2356f026e4b16ed62f29abc49750da3bb4d5c1f7849419c4f81813be93fccc41790077aaa414eafcb71cdccfec986a147b24038603db409ea4b580eb941b7994be1af2db086ac4c99f39b7308e2da0b1c96ef75f57ae7b6ee4ac1657cadc89731d3bc31512b6ded001016f1449f102713ab42898d27db3abe852fdf426176455ec32e3b835525c38db30b08ada03ac2e883270fe7bb1bf0db4ab43f06ba7c21e3736551bdeccb6736bcaff4997d603218ab1169e98a23fbd011291f915d85407043c45db0d1781d50856471fcc4f72277015fab6b34f9eb543c48b10b1285215846fa08b67a38bd26fb5cb8a0f3dc4c6fad2b624049ed7707d7667f37302660e733554044e82c39cefbb138de3b9d81d4bf8fa41f052a7fb4b0a1d07275d582e0453b19e7d7aa8f2464c24f5e3f00771a1b987fd87c8168256be1d5f562d8b67f42cfd93599df063f2413f4db7f37a96db9e3eac413d15b0c5660a5fc4048bbebb6b7ce41b530c96a69d970291c9228ca0ad1f868d4768fad37c762d61b1ef75fea33da0f539211b17411a3cda729ff83805ce1cef2efd72fecb1c1f0adf805d31574882e89474a46a39423b5dd038afcf279ae4bfa3aaf587aa5213e67a354df39bbab09f92276e9e932f0b29f92596072663021b5a6fb2ef1d0c2e83a9c0ce64f02a1acc791890c213febbc3e971b7576b55be7ee5db00f721a81a380f241de12ae42055eefa184464ae6d3880ab72fb82f754e7313de65c9c2095a5985424f8deecd373e10ab14a82c99fd6a2ca15daf107b37d11c9ef826ec1f4445b34a06f428d448a8565b4e718ebd5ff40171130b6985fccf1e07672965fd5ba2bd0a108bee9e3fe1ee8ef7e697db8bd35478c1d96da037ccf47ab62d9cf0fa821ac3a75f595c42d50680cb2856ab4033c8f5030ae04623182922396132aab3421fc3c57561724be8f403f90c185d9caf9239bc36008442c56a882b58a061fa362d5cf3d7ef98efb8e8f17ad0a3f394df88bfa249f9e4fa8575eddd792fea1a49480ac0a2c0e5a2d9378efb874bb9e01df5602c99452648d4d202d62cc5857ab38d1743b6d3271ff935dc6db684506b91791c4c764fb8863ba307896a3105f700adfb976490fb4ed5e522f675905106e74ec8a6f50ff35c1c0b687c2f6995102ce759c5e7f44321c5ce081c50a896019e01ebb059c58ac8f69e935196432d9bfcb6809ea9b0b640e636c54e5a36b6feecd4da9909605c2b9c1d07819f5656405a1151858d41d742d9f65be4e5a970e40e45391ece5379f9c714fcfccdc2f52e8afe029ccda4ff5eb9a02caaa6e30651aeed5a2f2fbbae6f561942ba547279b9f6fa3856fb696d66583ead98fa7cfb2664b290d8c3367f221ab54d7e095949a2121e53e8937a691340346177ae8fbc40d684c4edfd45eda9849449414059024ddfc148d6c448c88d31c2b2a19eebb758e8d746e15488a5e96d089f861e84dbf619ad3a0822dd08dc2006086afeb1d59ac86e5e4a1fcec173b8bffa50078337f22c42d15fc66faf4354b4f4039335e3b5022cb347edfea0cb9dcb3027f40705b88a133b83833d058d3814b83928549f4819f9fe87908b7579fb621a3888b48d1685fc7a2c9caa7e31c343872fdd059e88e8c23e87be5e00d25659fca7c499eea40c6f0ea58f9f2246005b4eb24547ecff5b78eda899d67033ff89d75169fbcfb359020bb87f9e63b9954bfe29682676f7cba5d1a4439bdae1268da898b4a04bdae5e893e5245a51fe17ce8bf10b86af598efc7819437f6ff12c19dd82e7908210c07cb98796b9a48908b8ff01ca4bbbd8a13ce80269288a440c7053be5869dea3aab116913e0b388434f2090400db2891b5236f28e05accde0ab08b7c1c421a0100824207ccbba9581bc2d4212ea068b429305aafb3fbcc00f9744e13625e863bcb7d6922ab4a657239f281328b0a45ac0cf4ed0873825a168d87f5c548d30108b4ac854455214a7116686f6e38c716bef93085e8c1b514a9efe74029950aae3b08321a7f17339daa559d7dc7994fad3341043921afc7b094de77cd334762a3508b6dd0367a6eab4dd1a8d74953019e027daf4f68b49795d994cca6bcf86a7c3f9e8053db5e46caa62e49885c99f679c4d792eda3c74c59dfd93959815a272f58e494a66c1322c3230716510ca579416995c8b3e6c5b45171029fd5f295f26a2dd1555d71c757ea40beeede8089ac55eef4e6935998a55465efcc2690544abc5fe0c21a2a5e790d8703ef0b9e6e190906f7ca383cb3abbb2f57df873e1cc1755679938f0a35dfcaaf5bfd2b8a404fb747555ffbe5ee1b7d8872e22e7980515734a3dee1ab9eaba31e7489f532f583dcff5e97e307ba27f3f50647bc6a10c7d758e6cf092ee8c330bb983cfea002c6f71b9cb4c448ee87b145b5edeb71fa46f42c02e12e383d7259c40058be055f5686e0856167b583218e683919a56738e24d43b5191ca7d3ff57df481b9240518e427560d73af89c7f411fbeae01c84eda72efc726590599d40b12e1ad8ddbfae15b7daebea2398a7d43261e32546f3804b76f3a8d504b3d197cb97ec697ef9163b186435846e90d49fc3752b6eadcd5facf0523f4c311bf8b49b11a13ea7ebf0ebe99fa760da96b5de39e610342eb9cf7d32fd186224066cb64996333fb9fd117b90f855816191aeeb691f519be65f273c0a20f8aad6724de8cd31b0ea15f41ca5a6a8ff9c9da1dc2b7feeb565862ea8dc01a993b54fccfd417d7f03abef7935b005fa6e89145215e139ed996bb627dcbbfaeb2de3a9d6e77125488c9949ee108bed7b9df06fa0ac2729371fa41225c6cd0ef9cebaf6f0197d5ac11f0d6408445b4a8c3ff0dfb4994cf0ca57afbfa51b7d9f71188e01c42b375918245b48b4d4e8050cc05110de46b5a8717f1540ab30395ac4f51fb8ad1fa13252765c67200dc3d9da780a16a825f0a83e61f21f910d3831355fd9dd719af9af83361ed3728ecef69070ca129d924e4a17b3106deecb3b9b714865f1246c2adae323d800587d212872a35ffad5c0139df846ebda3d7563f2713f57fc149fa22ab9e3b1b040bfcff72014c9a7a9640e06e29d3be58b0ec7c7b3371aba389c95782e23f4c2de0b3974400ea7ecd976af194a24cf5cd07182e5c791d518b4a8766e9b4171ce129a5b39ff56b39d9acf1ed2fa2b7b354d3625615187baf745449e8888b6dbfb297a46550ce72939aaae5cb5b11f46bfc16ce40422918dd7228d431cf22a210b530150e6c8c7884088f7c33df3ab71f0adc704afdcae0ab2ae1d2cd1cd1b8d79942e0a9a8a2a3ec4b7709586ccca4b8063e414e88636d983b93523efdf859aacf96d95347d8977406ac2bfc5ff46a63ca7d2e03ba162f972dc5cad2c26810431cb13b87509a85743f5af2e4263f977b98bd5e06f3d4be311d3c507e6ceee6ee6a3a4b908e39c99589ac6ef2882f5dcb407f5a64278ca2499b3ac7eb35a2d2af7819c8e17c81000d9adcc10c44f2a674f53d959a5b348bed951a4514e07abeb66fb0671de23b411fb3f16fdc55d718b8257601643e8de404af800946dbd4540a86fbc581500138f92495727827f384a8128edd854bbd520f7b93877d18059e8916656c67fabd66a8a93de36df952a2df0e031322bf2b696490d4e1076c9b0f1575c6a0f89d516ab815f876fbe3336da69204660bba66ce07288ffc3c4c871193e13d538a2ea47118ddbe0deb14de76e999b3dae7f19a7592d60e5f4cca039c7b0794c1047a4b746d16fe9f3ce03618733a4c2dec0790d2a956b6d29346f147bf200dd30617e25965c22c6401457ffa45251e3772d31b3604f6bdc12122e805875ec5afd6b971624234db30a7bb7f191a8944c883ea76d7c98659877c2dec57a3f8900d416f4afafff3fe50404b0841aac5eec0b82344f008dfda53e80a7e2344f780eee5d8b161953837c4035fbe4d718618437905e512acd1d485c96a44c6d424543363744daf3382d2d6b81b080ef461c94ca57ba06bfe302ce4f179db01515a47de680e1125fd5f31caeeec59f13f408e741418263eb6558bc53d90dc6cbdc88e6524521e9057f2227a62e921d66418a1ccc18db0cff23aecccfc9c456363e4a98648d233a1c733d8a819b05486271f86070df9983c68913942f8ff596c0304ef2ac0ccf6d86adbb0353b2c9a1590bfc967427be3541c64cc6a8f790753943028292a77605b1e8e5fe17a40499181f896b553c3897a6795e4803811b88795aceefdc4e2721a4fc81ed784f8006cb3160b311df9e151f22dcadda7bd1642a76fdcf372165927781af7066309b255102ac6fe46eac8a4dcb794805f8687e0c2b4837d2d60249e8481ee6314b659e793f41cc99b0b78b186606fa006e5eaf679bd617e666b851cee1b464bb9a56603358ee7cafb7fc81cfc358d8ea41ea0fa188a193e75d270879817fe676075723e93554f29311f395d55972d37156c4dd3f09f6176defa60bcb75d43f552b02bb5a85107d4345daf80aa6089a959fbf809eb5a02bc46afafe9589d4a0a364e81a88b4357eec68b3404370292be1785020bc46a804ebc5078fd63158a8a6754a19f0b4825a73f7247943c20715d6f08a492e438aa911af0ebdd00f7e40395ba0f4489c99af17a439809ac379fbab6ecff03e47318bff8225817572f85ba4f9ed1255ce66f5d92cd01709d7534d06108220877f175b5261e96ddda269e8453dc536c100b4744c4f9dc187d17ed24a78666afeec8be51960c26d7968d9b4406b2d747fad0018e4b1f2f3f61b307e3a633d6bed9e6306e2a66b1e50f642949a91a163b6155c4c4c2ec4d4ddfe4ad52c3fe00da2decb0a66225a6d44b17ba7fb3a0866468635c9037a964932f53bb935c456a736040d5f9ff419055708f7a514a198a1f04d1d754706c8f6474d98ff817440907ead0fb95530b95ee6c5259aed336f582448085890fbf46795910a30613977a4e5ee6df9c6c405213a8bac8f8afadf0f01709231cb618c002fd652ebecdecf5a60f7e72f55947204c029c3906453527d60038b733f55c4c27cf4e0629c2611424b80e35c742833e021dcdd9b40c2e0949cfdd03963d416eaa46ac92d6a988892e1cacbb37966ddcaed3038a1ec15d9b38402df2bb4d510c8fb216d5c2faf3127cc3e7613db72b31ecc4b4c4d4658e375cad8d8bfe5654957b27136109f7a5348d9fd67024149623fa32ff11b86b85bdb216162db7dadc39367b85edcaedab33e96222ce615ccce3878b16fd303bc9f9c56e022edbf34e3af895ad413bb7347ad7b42f0ac9c6300d12661959832bc6c65e30a25705d0db3440c73d7bddc0fd389f44df16c989cd643029c5053eeb06ad7343a038715d507e4b8bd5c9319c43d5d2487a4f1136c93f09eee222011a9ef524ce4e4c5ffdfeb815c8592facd589577f2a77a53ebf51de892fb6fcfe8cb131058cbe54bb73bc73fdf5771e62931b251bac1387f272296c8163568b6892f6ae852f35cfc0a9c402cca9d61fde2c0858e22cd240d9f58260ac9dc21f667ed1625357188796387c9346c9167256d7b27612e4b2d952a4dfa3c243a522a49ab778bef03fa0a0a506ce8b3a281db4d76d61dd01164cc0d240c7735711f9c200487cb812091bcdb488c95f59251323bd57a9edb45919e6e5c9d738cb4e77e042152bd87784a60bb7b7406717e2da69d8321a50ae6a82cccdd7e105317afa07460fb372b7b29a6ac18348c9a150de10163e925283eac7e500ae430afa1bae7cafb0ae7b20c7dc9472513153b590815c18d513d0c5b5fd8d0dd9c676b9ad65be13fc086a81fb30b39e18dcd06d2f238d4c2d21c5f72b8eaa51761a92710a5c0b07d35cbc2c764b0d21e42966cbef7f1fb88da22df1e80022f35f6d19a52ab8273760cafb979be6bdbac3a0d8537088992d656750b6cc6319cd5fdd2ade171a8955012b048dc83ae22142a541e7a227653f5706b9e9632c2e3cc6e404c3741e624050806a71335a266c12146fe74ac632a2251b1ba165cb3d4b26577ab599bcc228509865d04187d459d5885e326388cd504c32a01c65cc2ab4cb64d9364740d7f9c655e6a3d1f91167d787eca69b46227ac1e893a1501365b1c3ea95c9baf223f2d4fe3452ac710f118dec5c0ade55b146db539cabb350c2ee19150fa7eebfd4f92cf29abd73d5c43a7884587968ee658d8436bf42ab5a22f8ad53bc012344e8cb61ce719c7a27290638d773ada13139bc0ab1c59b85cfd44b30767c37744098260e28d112b38505a0bce92263daf67b7b5b4e2ec8b1b1c330435f974949f279c1043b9ec6eb38140e868b400a0b31e26a4a3e84548861c4f2278872b06aa8e7f0e478a41d6e5e47ac1a1f7ad8b11042a369394c25b955559df020564e8eae7ac700fcccd233ff9e8196772c609b618446b4e8d56782f79c7e9c7882fd8562611e2f727450a5864dd4fd5401393cc4dc85a0effb053930e54229ede7acb8c8fa16e201ac5bdb5c5813701319a907d57d92e1e9f20b4a76924cdca3532c5db296014d3ac29d9eea25bdd8b2435b5044db2dc30c2a6b44ff312f5376c711d56c8d62404ca5faeb0fd21aa6e2418a9f6d8e9ea576248379fd452c8511c350b48d6009311e4c45106e38423a63ad8ad261a46ae702e805e398cb120b324e6f141c39518f31081560dd0e24d8288279e708c58d1fb4408779197b0db60d1cce06f0a70b6b90612fdd8f6325f9302ee397274261030193103bf8224cc6a8306840b88444e78f1411349e91f02e74ecf00bc1e409e9e04066ad23194b8b905c21f2a10fd584af2fe8201697d6960e14c39baaa911c9cb73845885ae62a1537de05431b0246f90aa1b0ac387e6fd8ec73b906f4854f5eaeafa8cf1aee054ebbf58b211678dbed30ccdcf1d0d8da16014771fe562ba0099afa460736a894305684a5598ad5391685485d11757e60c9344827531f9593fec2d3c94d8af82b231ae18b14bafb5bb9c44c6ec782877fffd984324d5b41f8494fa2a8f8a66f4320da5570151afe72525ba49864b70b32bda46b46adc79363dd36b613de7359afdbdc971050c7c98d7ec1cdb35409fc9a177801d110fa5f10e676f736d89c0d1e0672f18c0c2db7066c60badd9dcc0b9ce48263acc52d6355e9af967457d63112283cf479d45bd2c77e2e69d4c3358a898d684c2637ff189be4fde618bba974a8ca834720448f734f13d802c9bed8714de456243f15d6bf421ca7d7ef1e14c22f74d327ee60c6ae1e6663998990be44f2939a447329445c27f686040761c1f1e4632bdcb94dc9a5baab7b6533a80ce8010114eac586d24ed03a164779efe4fb61bee982a48b0fc9fc8a04b80b2e488b631c68632296d4ee2c1652c5c6c0227e6f62e94c6d5f9bb210179f6fca0d03c32a7cba7932f8030069802e8ee455958406093d123050ce6fed3685125acf1adc17279c4a6612324845cc32f3ec8e3ec2bde784cbac9096abb1b9f54fcefc94025417533e08d179039b74d6223ae40044d0e63cb171fee21465c8ee2c4b846769019cce61e1c3eff614b392ee1e5e08ff51c9968a47a7941d0a30f88af756c093cea08264f5efa502ef2c7ebc0ca57445932b3f0f1b0778a6acda6efae812c89c24001fb8e2433fa156f895d0c27337aee228eccaf4117f47c6adcb123115fc5a08f374f35989095c6ae6d7373cf64dd2027a9c78b418f94e161f8a3570ea9e11544c89516f1b34c001059db84ac75f7adc5bcf65bd202065bc20e5f04a986d480e909f11c9ea46b76d482299f96941fb71bbdfc09458c2507003b7f5951bcbc840185fdc48a789416b7ed633c84b98674cca16ad83d77668ff93c4a44bad8a5764a7e5147856817d745fae5c5b82596eb78c76fad0ba7caef473add08f0b8afc1e2b375102a21e8a4002e249449d1d77b8007262cdb938c9d54ffca1d4c70d16a5e699153ac427ca6fc5218a2d49140a2c40eb320a9c0c32d483aa6de050215d41476ea10c80b2e40a27454b73841a2b4b683265e0464e2973718880ac5c4200cc023200a4449949978e7933176872a94a543fd88f2fcab70a6efdaedfb4d4560105aba588727461d5f0f176268128c12f791111451f71a2bebe8705b6381d496ed09fe31f851f70eecd7a00bb612be2309951860b4a1095fe795ef457ddacb1813df8d3ddebbdabe5118c1629d0308f5ee4dac7bbb60523f291670cd7fb27ab62b4f6b9a33b07fbbbaf5040124b26365553804303acfa5c7a83cdbf993fec15f3de9b783651f6c8e0da7cb5c8e2baf29ec09e95c313feffbbee607f002005f2b0d706253fd809748ff0ab68fb6ba4092ecabe14d36661a70c5b10c834b1909e1e503bd4f4489d21e0030a80412ca2ab4c6f1fb92203d5a7e013ad0d802d77866c6a2a729e3dcefe9fe94b1c98a9440936600f589d8f5d2c79a242267c04a7ddc95e0dbc0536077662f1f0f2762cf10e6b34d53a04c7e4e4e58a2857c349f8e2afa0c7dc249f970f461f9084caea4605ad34b942b16901632a6cc5f6732e5c10fe974a9ed730e19dab32299d445f7ebdec6e142081d1c44ce1689c6ab329a9472c1a39fc6444898aa32e588c7dc6e03366ca09e9385019b1270e23343c4aa5dbc49fddcc70610fb512da84cdfa5256369570a6b495cb60ad878e63cf9359271739cc3c79a29811407c218963e8488582723e3119429f7aa91673537803f8cd15fb47653553dc99c228e4e1b9aba0241bd5403f0b211515dde3494743b490f32e7e4b631e411967cb04f9deba03aae9a71b128edd46fc1bb8ca8f1bf10f5f16aaabce0307d0a3fecd85cdfd5fd70855d457411f35c357d7638f18e434eb10f3b4fd0c7c32443c877f9659ab459329388eac0f31b6538961d54d1423090702c2fad3a3e6c207d7919889a1d67a0e109e15d8b5adfdecdb0f996ffda6f28579bd97053633b8f70b7d1c93d008a14fd79c9138aa742b7383b42092139eb88cca8e0a13b47164b9d342b0d88ad4886a3410d2b0071a03bb22a7bf220f7100ffd3850d7dc10ff517032ac28dc758245d57a75369ad3cbb67bb9e72455bb80cb23a6082309e204ae344b123cd3468b541c6f4fff5303741be4e56bbf3eb37e15b8ab0221c10c5fbc03268f3af18833db207ced2cb3241cc46359d412c991f95b3fbe1557d5a604a45f0e05ccc4788aa47f081d52a1f4243184917483bf1f26f69f671fc384f1573d374287a8898648f3b86351fa0534c5700f788a16dd9bf0ada47ab01234ad2a03f5c6099b0a64bd00b29dbee87359487c467a8ee5361592921feb2f3a49401eaa737de5fdb3ae307ed94889cf6a733bb99b86787ddb24197c02b5719284c59e76c9b681fe2fbf20e27f149de45f968e1fcdffade98fce41c1ce27f8c19f5f80e7c8954faf47283d3a4895416f7351be323bd4322bb87c4e560f96c4e763003c56ca7f2098c035a8e7410dea7388ae87a106db281a4c23c3235d5008b620254ec660077b372ea8d36d3a53081e248913320a57643bc73c07f8a00efd27f83902fdb742a38cce1a2948fcdd0a6290193dc0d1caca96c53f44483bc467b443d8062c5e9fe3cdac9bb06137f22406c0adf14011720ff4993483e659ae03ee86fd8c09471c49583a5b77058b6089200c57a3588030cc3f64309431ebe3037fd9dc318800ccf4186cc7a8e2b33f682733b32148f4d7166ebfa950f3597c2242df98b8acec5b78b140cea0fe05907b2435955222f8ecb029deb937490712da259bbfa1e75e2ed55e189f888ddb5508646910ca7e5e94af97043d78418ee3f9ac8bf4c41e65bd599d5659bad4404c0816a8fd100f920e14efe4251d7de305573267b1c81cccbf031f69ba163acef7520809423fbcbacc2c779d949db8b2912d958e612c297767b7607fef6623af3e4cb74cfe9eacccfd42aabcd3594847661104272fb17d8f4213fa69fce15de82ae8d8ed2617d4722bdcfe8990ac347435b05fbe1d380021f94945cb4297a71383c8f8fbff7bb25b17b3d6d7ba277475faa7530bfbe1cb9b8586ab295b5dd9468406c21df21b1ef8c5d915873e6c2a13fbcf164959254a628b9a56d0491fd31bd0a5a71232dd52bb59512e27fc3838bfdbcc8cbbb7796ec37d7187d946359ba894c9e768ed85004193c42351953f8717c880da31484c0525cf612861c8a4dad62d95cd74169a7028ec7d92a46ca053d36b2287a93eaae7b34718ec70d9a953a3264d0642045dc0db8d4412b0c05be91c84b11c29937585bebef34736e19e754d4982e1357bef0b93fffb8544ac41e42fa04816c8ee87e4577d5238002f7ab985352074d545927592cb73dc5888551e79527c01ade17a1264ddcc930ca6d3fbb99a1342f188a5956fe736479e7a617f56242a8b206b8200dbfbe39fad4d84e2fa512da5ea3cac08454ddacbc8993747d74c8b030329ac20b32841faf22ba635830acad0a004dc83c7a7c9f0997cd2617d6e8ce3afe5cd17d829d217d19f16f6a94736a8966bc3675d7b26402366d90c788293a49e6855bae51e34abbe5172438764ab1bead9865d5596a39aea09f745e812ca752778b382a81691d95d38e333447f0050f0242c46e819d7db4bc47ff9b456a93418d5fbf81895c28c456402e0246830a85adb10973e3ea1c162508eb85986a38eda56eeeb306ecd75c15025d5c31ab440c26d853b7bc85162450bd892508d08435dd290546ae04b2fec7a1efbae73c04201164c5c042a819fb35a3092aa927455796902abec0b908086c9736058e2db5d8015bcd65680cb5a2e26cd9f25010790dec38aef01e816efb53a8f6bfe03c15a339219052f713988d960eee99fa1481b0d21220aed8ac4d6b6dd1a21841042f6de52ee1dac0b750b8f0ab72f1a4405d699506c9938bc1fa4fb41facdcc3e98d5ef171eacfcd1b03d80a08206136c31c10eb4847d1182fc0a0d2e4d1c76e98a13b7ef23070427f6b79593c3d3d30f1277688e50c207267eb881891dc26682828a283775e3d2143fdce862a5c99154818d4b3220ba392c2b5baebc083c9e4fbc3fad25dc5e2beba9d411b6c55d59ebb02d160fab819a48ef0c11498969d93b202c798a029d4a98254f5f43c3630436fefb8ce45cfeb7e0ae8c5fc9bf59393c3db47ead1cee46722e9d4a150b0a92f2c37d0383b673601077b025c3d310d2ad6ff9dcfaeb8321e8ca29218d210cdd9f919ccb202689b024e9a2e4c3112f2740628d31b24c09a5091e2978228c319a505c930d8866d03872e30d6c8c1c64707451451a4b63d451a38229563c48f1c6928c66e98626386c28a217ac9eb8e1850f5933010102cf0551be68c1a66262e389cb1a3cec60880ea308944c0f53b680e24262c3a90d2ad4e8828a349aa608c053941980426cb1e50a97ca7485104f8050033192ae78015219a91592144230d1c40d32dec88e6e6024c386125b5c596670822864f8c0724f4a44334b54c1c5083017a22b6d14b1baa206126f5c5983490fd95683ed7c4861c02c2541d463e5ca9bc03a32372e39d1c495b319a67d50860a2e0062f0d2836d596bb797145819a504def0410d516ed082299430b1477cab2000053651e8e18da4334830841c468412eb4b2bbf92bf3c4b72ced2fc94428a3b27eb0a1f9e8c88c1113c8092801d8080061d807812c616a184a28d1d9030a2071a8cbcb06264218307173c318793501e0424fb7b2bbf923f8b8b2f3c588b756356064eb448eae2053ddc208370ce1ec3468ac316eff531b26c6af4f12d4dd33e8bd46bb788d6a24354bb9446b025c3ad8f35b8f19104eb72e5bda20558fad401237c11451d37e85618ba0eeedbaf6041d24d222f076e601123118ba31bc10d442c8e5a41b7c18bc5d1a5dd187f88a0d17c6ed8b964e3c5ee75974bef926567a28b7d558cdba295524af9aa81911bdfdfd3b0f26d04066b2cbbae0b9c18d6e4e4c31906c64aa308379e2376bddeac6e772ff98eb0f258abc9c9873106c0bdb9a008d1468e875af693d6a6d659d45a6b5f6f8a61188675566bc5eafb9aef6b6633abb5fe8b23dc340540d32c031f7bd4f735dfb4d65ae508889a68667da588c1d4dcecbc71b28fc80b5158f99e6ef5f0ff2ff6b8384affc5116e5c98777611f8228b5e760a5d04664739fbb107bd9cbf8cce712dbfa76104e652dabc7dab1f8cadb5c9c98761b86ee7c1ae9c88b3d51a6fbd30357dc3451c7911aeeccab3d6be11984bbb255f59f4ce6d06442a468838fdd8e2fab31faf0f0f2c3f842c6c765123fcc8893dba0011a7bf63878bcb6da14668a16e5f62e00866d88f70fb3e4380fa449e906e6be84631a50a95bb4529c5c6a5288ebab7f8d2f819dc8d39fab5eaa53344c146961b3fe30f705efa798bd0c730bbb830a42ef78db7b85b33dd6d627137ba74b7ca4d71b50e05f06edf229d5b6fdbc6db26b76dabdbb66ddb45836a0d3db9db97a2b872b5af15516f6567546c5defe25bd92baa43217b770d88006a8b3150028d9b02b1f86d8245b2f78bd0ac5361088a1ba308adecfcd93d207b67fceec0d0d0056f2bd218639d23de5a116fd588b18660841b97ae90e0badcb814051a598870e312156744d1451313468519973f2f154d5cedc6a52872705b375360c9322c2ba04109b8108306229218e3004e557010658d14dc30c30be20ec0c8220e2bccc8419411744b4ba4680941151ca25c410c39b1032ed698410e4c10c5142ffcf0021ee688811920a0e14a8a3560424614186041841332188262030db4287ac28c1c38b9a05cce520327d248c10988386a8300366079e28d198c68a204210331e4030c949e9280411d69c411f2d0105a886183154b5ce14552a873b9e0aae0c406307000e2044648093903493ed012021dfc008e1cae277768881f38a1440d6d38912265680624e08841162b18411d2208f96ac1e5181441823470c0618d1bd020e4e8831e78900226a61da4b0417839c132bdd8c0164c341105133e24d5201c81053bbc51840e401c2183b06f50c4164c969cb12483267cc822cc40174b6c295a830e276e5c2cb0410206484e3845518313167840c7134a14a18396a50be98b2cf58b332a172c48715168dc0953b0c0f104154a3c39114a710225e870028c1b76802364e6c28a6a85e989aac596046358b65262295850a58072f9373cabb3a4582205d116db7706ffdb51c57b3288755a3c51ca7825417c7e8600bd6084bbbd04c58ae4c8b3532465053bfcd10bc34a26b8332c0233c6dd66ee3e008eb0fc20dddd52f617d8e3bded9d2215c3c07a232cccc08b46239ef07af6152dc1c2eb463c217625d73ffaebabf41ea8b777d60be93aea60fa1e6ed54a9bfb04d9afaf68094f98dd080b350d3be25df700f603607fdf8ba00f86817162fceb33c24228d8bcaee4ce2a2718435f281eb8fe7275e66cee3aea20a191c81beba823bc6412be50aecf116cf31da5ce9c1d1989bc3109df18c125ac27265842d419392885ad03134c00e00189a430e8d252a52994014cca010ac23e7f411719a10c3042840d628c007938dc700a0d80d42429ece1c60d4dc2ede2fa8b591c25a114f2978344b86159c6b71574e50d20c6d39690bf9a108435e81b2974fb3650c581dbaadb94d6dab491d088935130854cdb28473b20e07621da05e0a44874ba43e150c8dfb4af48bb6d1cfef6154d01fc6061885b6e92beb10017ed4e18bad8ec1c70808b7d8b33728cb13b5406c6c0f79233a862f40322af7d52628f5a7b9312035f8c82b4092933eb8418498181e71661dda13063b055947d891418786e922e40fdfc5a4377fe8421fee2fc5a325c76c0cb8f8c38944ab93e3f2432b2680af4324b668e14d5600c7caf8c28ccc0a225368cb100079841294c1fedd967c46111f62558a881321680bea55cca05b29c21699b294c5afb9394d22a6bc71079b29438231014b14f8e80c94ebe7297d07500bd9528516e7fe8ce770c7caf5f553e40dea14bf216ccfbb151fbaa34490223768845edcb4296fc8db754316266281a333306ca333e362e0cc3f81933940e94213a85522ea70e0514322c2864b129e7b2101b475ebbf283d2a10062a0950a307a58b4e461953a96591db51b79002a3f5c01dcb8b48493bb44c5e9c6252a51ae08372e5169e23e8d22b00c61030a42c0861c6143e9c03302fa9675022059fdbe67857dd0ad9768504ae55522801decd2123edc8d3bee79ec1bbafcc933e408f375bea79198b2e5942dd998b2e5942dd998b2e5942dd998533ed16f62a63bc8989323997d98b8a9d4e9c7d4dda1208dd37679c62beed0f38d34d55568a4b3638c9ccda64db6d931c6187b88311e84d931c6186990585dcd9ef3e2ca9499752633339b8161d6ae56fc8ed74edc99d136cef7c661e639c4cc656c18eb484a299d734a2e638b71a762d825831c9a2cb3d8644a5eb1c928986947563f7ee032c71b19d5cc49527660d23be1575838d43248962fd0325a2f2cd372d032ecaad48cee411036e359a743d91d4c84cc87dc01f5256116bffb8ee494f0f598f00561960a582ba795c37386956fe5cc39c3a43c430e565edab0c5149d7c87a694494a57ded82b9ec6b28ccee69c0924be771e71e2e3f9cdc36ada978c138cefa64a7370353725c40570256cbf3156a14504437b3492606b5e863992515a2dad8808e0d302f8b8b1d5e3c6b742b8f1008871be25899047c41ed28ac8e2de91484419459220a7c411f844b4e685b92d49444baea03ba260ab6f4b1271e510971f3b2073069688cb2722dfc2583cb1b226ab365d8a54779043694fab657db50f63a96575550373e5371999d52dd88aaeb427b0fc38e73c361f7b20cbd8be286d6e9400b8f10d723c7d8bd22b8de44823b66d8b5d5fb26b210329fd5a3fb171e66b042ed04b0189bc154c228bc837f61963e3c48e415e29e7d85e64f9db7549edf5bbb68df2b167af177ff15e1a866558e50e05b9710bb13ba139eca73f7bbab6ec8dfc73c9c0dc4953d48889898989f9e4cbb7abc9d2abe1f2951aab15a77a79e9503b1e44a3462a1503b686eecb8bea2f2d2e46460685a1bbe299a3de5d6af572145e52e00b6ae6434998d451dfcc634e18baab7cbeb7813ea8ee3dec7d31dfb2d5615e34e3f9ccd93432dff1a2a2d58b603e5f34f3a2d4bb67764c98950c8c0cf7639e7a9cffb19f293028f51830a89f7a0f67375e1b7fc8633735d81686c2e58019c38e92042ce613ea793b6fff336f5fc19f7eeafd09f5633e3f2198cf6f96758a681fca3222577badf2d6ef2b521fef2639ad6a28c85b7d8a8a5cbfa4fc34e8c9b7b7fd13f224e8d5fffc781be8557085f9980be9c37c3e66be3e06a6d667da560f83aca35a66d153798571e82946444464b3582066514a8152f42f9f3c420d6116954c72895994de268ae5a78b574a5bbc89920436cabceca8c779d485cca3fa42dd5dde58c1233befad80fabc90ee0d0649c9b27736ff839a0d06f5bb07cda33e14c60e08fd88dc5686c275b1ed31ec50c87aba8e0fabde069e505fc3acfa78b355168b31abd6db2459febc618b378f8fdf5cc2b0701cdd38c68d4b6f4cb95b732f55ec111b25bde349d06ba13bea42fa7c21a8db8042dd51675048ca4f077ad75b8ed0fb41819e6cd093e11caa01071b54a162ca952ba408e795c49d11868832c4145b10418326e18c57907ca0831fb4e08ba32fe6bbf329e2412f29e8c3c3e6367558d4cc777cc248a3de91f95c7dd27c1e61d6549284591dc5ac6031af30a010afac5df4c590c7bbcfe6b203e2ad3014a2cec25088028386c220293f36479dc77f824610a2c0a02026a1cdf993e126bb15625834e35d3c6c0e045349f9847526dff923bc73d3b4e45d01c4145a60e0720514a7cbe1a4b2e90a209a904e73893bcfbde342c72c27a0ae0b59ee3c7758902dacbc9cde9569db8ff04efc8192a09d99705e1aedd819976a10e5cecb26f287379adc7989342f93e6b34d0302c3f64cfb6413cc9acf50f748ec316f838595e778145979d9612cc4b0bfd1f01881950f410c3b2f92795b39770241e25da00f0f9ba2a21d9f79d1ea3267cdf98dc7f79aafef7dd2a877fa933f2f8fbade7925f1c78535419249de0aa8ff3fa81f0c92723da88ffa05fe7407010ce277ef611e1fea365f779a95ec3c9f66ee34dfcb777c2e5f7daacf7cf6325faaa8c8e5f645aaa74ebf0b6939c2eeb1f389018b8a6ae0fef2a2229717d9a35ea47a51eadd61e6a7a471e6539f34fae4cb3cea8b8de3f2c5c6e162e882e2be21a2233c3ee2d39d3460924f51cc10c62e22d8a4d66077673dfbf19bd472b5c6af3567c778ba5d1c119a3762cfab312c6a1cc63aad1863ec6e2bc716e7d7e2af28d36864752b9dfc5665ee77ed0acef7e51697822422bad7048d70376efc8de34cb5435a4a33ca71b5031227b7a1b8f9b5fac6668e595a866da8d6d0a5a3bb8aacb5ce585532caee2a55baaf74337557b9ba4ae47abe67777757a14f362e7ebbadd9da9d5c763f5ab1da93a34fcc0bab4a584667906953bb52f3f19212e6898edb382de35074f3e192cf611c7979c92beba635c75d985104d70233829081ed6e5c32e3876e08abddb864860e4b66d8b0d1a16482a62d5d0dd6deb8d4e4d4b435355143b0b2769b825d6686638bd6b402d5a585286b2af22a0eb02d1c6dbad6484d13b460a95ebcb4097220d19cae62c3189681360ea2388ce238c2727a0534728e297350b1bc54c651ea4f91774c88630be3c4dbc26c1946985d51a7dbba1d410d7675e3d21234dc34d99fc16d61555ac861554a5b15498061b91b979408220e255470e5372aeccc8d4b4ad860461275f890441c6b2471831c329a606e5c72220c3276b8ad1585c1d69236be25b3f8cd9645fadbadf26e9493dfefd6ccabc669c52b9e34b949785edab5d00d3233d639fc8b3de26bf79c2b59638cf1bbe7c913ecee5673774fe6d50a646ebd38a151a22b6f3c13311bc9bb2d911182cbe71f188993d80aebd03be9e50ea38a6d8c2574e0e48d1eaea08110436490c31238aef4d0861897121c932050533679229358272e89a1036c0ea41bb288810aae40419570ebe2871b9e7a28c20754c22b09cb3ad98f9c48a721179421060b94e881163fa022e4cb2dac3369b81cc60edc102e7420c4d30a62a0e4c4c91766e8e00461a0e0491b485c3e53e12658878b41dcf917847366e1e24e2ceefc8a057169690c37746aee3cc667607632d3c5ae9467dd79b96eb2ae0a0bfb2c33dceddbb70ec83641951a67dc8b9dc14cbd13248b15c6894b8c136f174d599cd0786a8371e2cda28571e26d3591184b5ced5adc99b981194461f61877dae90951887581ede05e9f1d906b0ee0d6305600a4622c2222221a94888842fa4899098c327cdc7e273193941249f215663a3bf1136f995866939452325d4a84a203b392e9cecbf35463fcc1142326432881833192f8020c10783107952c655c47185dbe09a7c3321845dc7ed71f8c600b1258193d100c1c6ebf06e3a18d2667b9a38ff9e0ba6001e2f6692c0e3db8dcc30c3f6624175f7071fbab07382d6105142f08a3480443381011041547e000858e2f8ce841081d6268e0c50f6e5f8636691a90056838f2810c11a8a04912614f1b96e8600742f080043a08bb082b7af0c446696c62f2017a8188cbbcf32f5b5451850e2e58e262892e44d04596cb17a10a4f0fd78b251adc207271d98b272e2bf520c60d4552c7ce2d5070fbaa0e48633f43aedb5d1041658b347630824a17616bc95205044cb66882a88bb0a7dcc6c188dbbd74e5256a26d9125ca682698ccbaf4122e4dfb072b87c11588b2c970197df00c23c2ba4326a86865d1971fbb3eb80f48b165994a0e6f2b91d9ab8bca448ea68530a2cbab8fd8d0a2c6ab89cc50bae28230040188da31a99aec0e1c230f93401dce0c20752a0b1831f98a44005064e558880c80da28b882eb6c9bde4605bab955c292db971c1dba7cc395871241bc7ca95cc55e8a0e5f20c5112e0f652096e7b615bdcadb915592eb84453893fe893154b372e5971745bd80aaeb40209e9ca79c2cac96230f6a69b441cc94e394f504c7162167d02691bcc92a186cb8742bea607ebd1df5633b9f21bc605815d5f2b75134d458abd3c7ff31b3bf50e5d23e2c8c771e575b0e5ca3a039153efc4f0e93651ec0183945ecba6c23bb2e9c94a77d159e4bb69690649b7bbf2fdd43ca9938c72a53c7d9a42b74824641523185c79ec8889264d20493992b45c59a7087165a5920d71e5ab0da45c79b6c18ab5625d532e2a5d8f780a159ec253a8285de1295858089e203c57b0347125d2c23a2d36dac2445bb66cd9b28589d8888fb630921c50b0c7ae05260a317048c7420cb15c798c0896884618c3ac13321f7d30d0ab44613592d46926f51439144a499ba4ac44d5a81ef5ce1014f2d753ef482c4d80c012ca5f5b7a271e5d89195d89115d499de8d3a7d43bf4e9caca7ed5e4cab7585798b05c29a513b324952bdf545aa9af341313f1c79cecf5637f4a82e21618c41f1b3012d150f2e8e345e3d2d04f121155893f221a4c74319048cabc0c118dce01f30c7afc78bb87991831cb0889231e8ee4e514d6f164931f9ac8cb281289594fa8d395a74ef4896ea9441243128011b3e976dca92023b143c1262ebfb5dd095aa1f53235ce1566662aacc4e72b2d5db4b03c25fe9897ab38e24e893dbe37ec6cf194a666eac3166f9cd878568c8fb7abc79da1195ea0860d35a8818e199c08e35971c725a98e1034b94102261884f11bcb9c9f26621d097a18b3b89b68d521883b3e1187ff43fe8a121d531ec46516d813e440816883cb1a9040a4e3f2a318979f736313d1f94682755a3c94f2dd913f682222229a216402e532c7ef1f782732f1fb499328ac1397aaa04267bc305794cb3e84b84cd4467dd44d7cb00e934ffcd146b1c7a32afe90b7ab2af6b8c0a02043a1bc9e255d3e27355113562af150c8974ebc85888988a9095292d151b79a08e9324f61bd1f0cc4dafbc1ba57e0b082b1e994c9db175b7f4e4a6dd4d0a92f4e6c13f98344f2e165e7dbbfe13419254ae582c0fa3cfdee13000a6c9d1876a594cecae101f2b37278281d18662510dbb1951325d8b231462c67e8800b2be8c8c1941bc218997e10624b0e4050c4104b8431279ea7273e484b1151d9c6c910b2b07c8feb19642148184fbfdedfb8afe61f4b0498d8a35fbf14b0cb730276573171847e92d50db107055b9afda2c61a9089b5e4c46eec66127a9963af071ac5c607556b95bc6129662f90157bd0f77010eb4430067a31b0c83c9744490e3d0fc338d9f9f956cea52644b095845eccc7e97398872fea613fc22c8addc8ad9f8781274c90c84db561839430cb092bfef04e90b79e6fa4ff290cb28e39445d807d3c7f37f5ef1d0bcad7275b05e9e5b185d4ed85b8bc8042a9dbab52a0a7d91ad6a7a22049249924a7482a5c73eee865cd6ddec35b8c610c318924a778af3b5e2b8fd7cb249a2b33af5a9e90ae4d723631e48e05fba99efa6a2efbf635f053e7e19de63fb2d7ffc05ea5b8d5cee0560ac5661f12beadb84549ec5179e28fedf509883b920531dbc08dbbb0f55102d5bf504fa4de48fd913ac37a8954650592489f6c8359f51c4fef4824c6a9af58b5c182521662687324d93dade63d6ce3bd68759afb0ca94a12895f2fa954ec562cf525f00e910e410c4b772413c6a9b59e99c41ef5218861f97a2ba86e7321aadbd0330fccaa3c6c524c58e626ccc3ada9c7ced3401fd55988a1aa061442326fdfbe057e2a862e5f0c2f98bfb87c87cc87facc17739a4f7597cbf3b196e68b61bcde17c30b036b403de64545307f016256a522af482c55a91e8522f2824442520d61fc4285ef5195ea1ae85121976fa04781881c51327f44de55d391ed2e9f5d2a93423fe9b5ab38140ef5aa485c17fd90d453185060cd037df4f37c5c5c54452048f53f5907099224d8f524f6fa1e0001177c5885e9c29d57350cc41ef3f5cb801c615e7e475e609cf9fedaa020504e8e0f9e125867e60da43b4f04e88579b1284d2e15f4d936ed3d7c561391122022f1c7758d8e56b408752e06ecd2d72f067b7dcccbed2effd9e883fadb29f8a35d0506f1359e064310c35e350ca58eeace6d9448e3cc739f1269d4a44b6531cc809ae26526ca5c17db0486c2facf07dfe571ae2cc095076302ae3c8ba777b46397f5f2abcca777e8e5e5c11a6619993c99913c972b6f82bc0f472499241fe5b491818d9e0fc76ddb4a853983ac817423cf92cf91f7c13b972f41aaae4483c995f7e11d19ca4f8e920a1bad1afba53d9340dcbe675fcee52343fac523c96435595be2e18c222d687461869555fc2a3ef66c311e8b555c61420925b4eca088508806276368f9410727d008e32303b6186f29fd7c64588e4f0e4ffca1ddf99e2073e6703cdab7ff68df5eb30769a057e79ce7699c39e3cd32f0027fb007f131d0abab1ecee1e9098234a5b82895368809cc5fbc40bd13eff520f1c776af5fd7d3bd5eaad89e2ec8d669e734d0ab5c7b82f80ce92fc8d7c3acebf6b54b7e0bfdeddc82067a18e861ffe96fffe16b5e7605f119b2427f7b0bfd0d6c81af81398d93d34c4db0c59b2be7b702f5ad67e5f0c45ac11d2cd72b801d66fc91752fe7668e82d93eee66e48ddb36835d1d0b7598978bad0d373eb68cdda8d607aef7e37214e86d3faa7b1bd875b6fbcc67c0a0d4bb0f85d9e9ede17ab76943b6217180bc408c30eb6e19282425bbd03c28d4ef6666406ffbcc06fee542abc33c06149af9cb63887d9a0d779bd98e1d0910ee9ecf6a754f486b09673e73ad5e8399f93c6cf5ad56338f0185623e13f3990bc97cf518bec4ccc0c8ac565f0c6f57164fe3d4abbe208d536dfd8159f518289b30abf270ebcf3c0af4b09f4eded7b3ea73ea79e4c59c952dde6c34ee142dc1425491114f88fa122ce455c8ac90df7a81893b454b7842971b6121cce33b1797b7542e6fbddcd857a12e141849042888cf90dee13f6d41d91b05f1e99dd4e7817aa7a321aa4198357d5460d6951fa8d02034e77351bd438fc6b006452373e7b77819c4e76708d00b468e2421c298b04c2abde3c387f4d1c51e1c476bec31515f0324ce3c6f7167902bdb956de31ec4e76708d00b468e245142b471dc374edbfaf21bc2acd9673e8ac179231b36c8d7a5a2a04f37171579b72fa2893f50771e75fe520f410cdbaabb7c88ea2ea04787ccdca32e1782ba0b2824e58751770185d8fb624ef3c17c25f3cd623187899d0f2a152fe6f372991715c5c0bca87bea33aacfab571dfb96fa7c801a671ee63b22f349a28825e6c5a87b09c2ac7921a9bb80429d10d455afdf0a28217bd4d67d1e0cf22281c101120910ec1d18baf5ad25bc7860561366cd5f16f5d4ac8fa18f57c1209d54a2921aca1866ca166fae75bd060ad50b6dbfae7d9ecf768f85186ef784b496507b6b09913800c80fb3ae13e4951ef6797d8f6259f68d62df1b679b9508b3d078ba61bbea5dde3b2917506541af825e5dadcecad9a49d73c5ac0be7e255ec7161b562555aa9b5ea65f5e4b14b065d2559ecc11a665d2bf46d9d9f575335f579557521a9d4555dea42a0b782cb5117a27a070a755709a1ec63885d29d5d7d338975d5d1757be94987556db38b5ee80f54e7f587dcb2a2fd4b7e76715fb99a0473fef614f7d3e7509fe74eaf33f7d1b2d86fd92bf428b6999775d6ad805ca5aeb4d811e76813fa907a99e025156f538ed556050dfbe87ab873d86f6f3301043d55aeb9f78b06d92db7e1c53792ba5b20375b02ce7b3ffcc67a0277ffad9b50bc9ae8142527eb06b17da9e71a010d65ac2507e306497968518a5f4953a45795b7e2260dcfb42ba3328a4bdbbc6e29cded99eba101612425de1c5625dcfb9ce73bde7425d6790a771ae1c66b1401f6c83425284fadc3550bec56aa1cf696f81df815ef6186e5ef556e0deffe9fadc7f78721f780259c4ac2ba771ae671f2b364e8a092b991831eb7a8b752f59248f9eb6c93afd673d27056dcbb7b01eea53dc35f007f520fb1876299bfa0fea297a944d691beaf3b68ed324988145e213d3166f2e56e3d45c97901421eca58a5df54e0ce9056a42527eb46fa0d0760ef4aec82c1ad2d58afef42cfa1cfab881b1713466d115b3e8411f640dd8fb3564e76f4321e84d70cea1b05edc356db8f1dc01f9c9ce60103ff32eecf3aec710abd7b7a24f31618394308bd2c71b4a5db0cdcfab4f1f7b10b9afef0f06598791d59d9e3c3d76afaf1aa16c93b4c51413d6488344a234f174336a7b87dacb6f6b1c2406ee60eb5136e064389c1d3cb24252b80bd1c35c683ee67c0d08e8c9c37c825efd7c0c061303f3c530060375b07dedaa36dc1833730efc817990cc614097181998c7fc07e631609014ee41f430e7c09f98cb8041f331ef610e0b5d66b8a69724683648122e6f057ad55ba087f90f3d8ceaf43faad379d5290873fa9f98cfc39c7a12e6f3a4cc85c07c06149a39cc65400fbb27ef0273210ffbcc5f2e44e62ea0908b941f97cb5ce8e5338f610c631e4398ef8d935de6cb699cec2f5f6c9c986fe6cb524c5823ccca3254a7b2521eb5ad5af2a86fcca5ea30b2baa9a33e0f75eed8cd3c14f802b3b21b61161166654f65b1965959a665d8d0c59b125bbc69c905142db1e17c91f625580802594728a5dec88673e786716891514e38bfc4867d7a16eb64a73747579a4a257d6408ebd44b0f44a477ba6d9e5e49efd853ca797dfa23bd13737a49f47299d944c9b028d8c7420c69b62c8959f41bcc63bed45dbed555dfcccbb7e3f543bdbb373fd4fbebe69c47cdeede27c3fac56b1fd3638005fcb8f45bec8060192699649f6556766934c4d3e272448f6dd925bd94577ac70469022d40ec91b3050cf5de5681d883b62071963c8cf2002dd48d1201ad78c6d540e949797d083d11de9909e98fd027a10fa29744f4b2c8885e1eb1bc2ea9d14b28f6d947048a1116daf76764c3fefc8a96e4840dc6c631b2a10587c41ef4365870e605378620831ccaf8e5a9088a1ea08ab0de8d4b5098a104144c70406103288ad081e56e5c82c2052817d8971b97a0d081d3028a22250b73e3d2134f6464fc399e5cfe0d8f14421cb1c574c330f38b8b8ad976a76e7777777777c76d1a33672b66c62e197b8073cecacc4c27337733337777cfc933e7e4c6ba99993936730ccc8b8bcaa6501db7c9a0440863e359a30acbe4572486a6f31ea077b9f4c649441435addb66531f2c24d3fa60c50f5df9c368d9d671282c7a2980adeeee691fb1477c0dbf87e566531d102f3ede7919411f1aef4f540aa70f56c4ae8caf0c3cd49cb51125ab9a9bb5f37c32edc2aed60bc6452cba505aef81ebf66e3266556a536badb7edea803017e76bf79d1d39eb83251f3bf66cd4964acd4e75d66231e69b73823df2f331e7aca133755d48d7785daf51467e2dea6382774acf0a7b6d25cfcab019638c91760724bedaae34fe88e7893de29c2d98daab2bd2c92d1ff623c3cab7b88bca81958ff36badb02bebb6da146dc352dd7d9b9261a46c2a8ca6dddd9566f44a599a6d361506cd364d9b9a36b38d6a1a786994892dc36c2adbb494a46f9a6dda75d127175293eb09a59b963db9909a5c4f287651aa6d1cb76957b76c7961d8c4b0796158ca7298964aa57ab82e65299da8492f9b426d1a970a63d6d3faabd6ae769dbd337acd2ab5abb5ab174865df2c0a8c5d7fdb346e8a152464b8ecd3b86d8a15252a74cbb094cd362d1546b6694dae1f645ab74b21866e5a56a55ed77c538cd6b30076604d72cf7a6119f7de4175f294a524da38eed223fc8111bd13e4a5e72bb7ca71124bb171d2c43456aa43987c26a6719252164566e3b46e26295199c24af41295aa94e33acec61fda8d56d88a152f065dd7d9f823bbbfc2477cc440f0134ae9bc9c9896f1d193ca3cd427938f9e54a426f5c99c7cf404899bf01314aa03a21db5a5383662125c7e6be67e55739e1bde915b1a2792c04ce40837b2ceac5b2ed90399aea2b630938b8d98e8622629bb5d5a2a95b24d4e39b89ab4f4f0f0f0346941430bd7a4e5c9494b97a1b0262d4f4e5a52564ba53a20fd54a7e24c60fe159e127a626be7c61c16022209328b8ff8a35bd5a82209d28a65fd7d250b07b3c465892972b198aea2fa4aefd82cdcb1ac98b82cf40229ec9bedc0c84d2ddba6584142666eda142b4a54ac60a04ad501c1aeea50883f504dae3c456f6cd222e4f8c08924c828ac94f5c13e30b4ac098d527fd8ba14beabf1b38f97ba13d84a93de51451c4adf9249a005bed495b97056d3e416801d6cf1c6a6bac7a7fab6038bb217f197d8b07bff5dffa50a1fe631f498bb1097bf5c087718ee2fccb974d85886f481fa44fa47b84bfa787d64089094b2770c013a2289ae214017e842943a8459fd0af3598f7bf7225f5e5ecebd2099f798a3e93140f7b7286bbf6b351ae2b9c8a37a7577b7ec02c41e39b1475ff7b802b147777ddb9db56c2dd3b6eeeeee9646f288b52dcbbe5dfb86f43528dce54784eb9aebc6b08b411f6e73517dab2cf3a1be527d2f33d6a676ac28e8c3ad7af924d151e3f4ed16d4d7dd19bbe470b9b8f2136b79dbd25ef91bd661f91c1f3c605cf9127a82f80c71418908ebd0cb1bd1f2e4caed4a298fea650e927c32870d576a575e52914aac43c295974c2d2fb1c82cf28a5cd242c46a7e2acd0c8b41785dd7f568c66a76402a95c3c9a54b849452fa9806bd0126d3d3d3148f4305b77fd37168b9dd021c98e0f64b609d12e0406a662b3389d1b0c59bd6dfc0304c092ec095d29d16bb22a51b54bc3b7f6144741b2d08a28da5dbc69dafab24e664238a3b3f97d880e3ce735c4578032a37b8f3b40332bfc4ea6914ddf9294538cf59989adfb044601d11d408815c72e7794ae83141051f1b94e0ceffc8209c7701e806a62e2ea53186084462dc696384431fe970e50f4b36d872e7e593e9b4746714630a943b6770e7d21a71dca9647198e2e80d2b0510c6e67cba13ebe100a0f1c365f94d88adfbf3bc15a494a0173bcedb37769e0f57e6d74b3048feea245eac9f17c1152ba767fdf59ffa8b83e42be8f5eaac9c0ec8ec146cf106637ef3856ade67023a426f9d15652f047515ea3653a9aa0be855269f2140446caaaca00f0fa623447c86005d217cfe08cd77f0abc9f484521e1f6a0f7e2e07e143fd5fea3c6c9e7d36073fd5f7c990c717c37f42de5307e11392f2e33d75a19aa3be494e329386dddc64f53decc3c4e433c4052022469228092232e2f1e17c98b4d30cf4b1b151b1403f8f5e083ff54df579d9797c28b4f9bcecc75ef5ec2a97f30083bcbbdce643e11659258b58a7c5b36d3e435c00226224890b124c3a724786f39b96a96e736f057b1effb1e7010649d16e0306d5805ef6d63cd0cb408f823ffcd4f9299a2fe63b3e98cf7c2f5f7d32df30acbac43075c9a06e53779943882831b247d6a7a704269ec8e333a47166d3ed298189474966486317176cf34636441d093d94a22558887d89e558a82fb1a1bd3ebd166c7721a87b6087fd0795aab957e3791545b382b1e976ccc85c4d990a1712d95555b8ea2639fa79b7a979f779289477d46b50de6d3e19529aef78ec3ccc7b0f07f911a790224b40ecc1c38361e048069ad8d0a8a66dda46374d854d8392faf51dc152b7d63aa54020a02ccb6487c4c3bc5fb7f98a8a66bee37bc0f5b90001bbe4c59d8f94afaca9f1b02e803e69934562f1be9a4f480a95977e983dcd7fec69827e52df0106f153351feaded79de6b3dff1a54ebfbe11f59f3eea14fce1772e9fe158a8a957158828317af9649327a2232420daf48203e6029ebfdb54ca82423f3f7530bb31445ab03517927a0c28649f7a8d05bdda7284561581881c5142a5d15193ef3dbcd5c46b2f801b103e0f8007e021d800117901896b452f017c310fc007f39b6fe6217c32ff6a6e0f002ffb907eea43f8aad73c009f7d8d95e1f7c53084cfa30fe131bcf93cfa5d48ea5f08a090cb55ff5c52477d315cdda969d709a8cb0303bd5737d9c4715c772022468e28092a326272d484eb364e854e4661d68fcf92a621d9aed11a10bcec42faa90be1abceea9d835e9d2bf47f21fc8f7fbe10eafde802320af42ae865a00a846fc7797cab7b34df525f0caf99ab3e99d77c31b71fcc634c0cccb706e18b218f548df4a1f16c5dc1c8ac68626676bcc470255195ae541f1125291413f63593664863950d2eedd2c8d0344e8251ecfcf6221836e79cd8e70adb3b822d19304cd3b44d4369280d85615aa73dce3963ac9c06b66a3c86c563db57d88e3374aba665b40dbb82d1324416c5d2671b86599b45da01d1b6edb1639124f402dd22f45e1127762f425b325cec37822dec1d189257deeb5aa1cb3ebf78bb0fbb17c8b5616b564ee20d6f4c7348357620d6e62950c8bee629fb9a0ba56ee31284c763e8491ea0504dcded856c86b4ea4a21364f5d48cded63ea36ef619eab6165fd25a5931dab634d4e4f3c3cef893f22d6d440b81def0fe99d9998f795f40ecdfb3cbda3faea32ef03f50eccfb4d7998d53d2530aba31a8f6624bf1d5f5d156379f0589dc777f0585df549a919919a26fb41fa3efd9fbe0b7da0fe0bfd231a954a57fad827b7858d8fdb3db9cab2cc66194fc683858d52152f3bd5572473fbad03f26ef724d8c35129f5e5a878acbd0a84f3b8658100dac691e7017af43c408f6a29f445594d8ba9ae83a16ff6798f9ec7ed539feaa90be1917a4fdb7c31aff9604ef3bddcfb5cbe4dcf67c75988e18e550c6526e732f31d325f3da4f99298b5fa7a7c808e344ecf7cb19d5c7898d55340198559ddf13664d8f8f192a77e90be4fffa7ef421fe88527b74f247a557bad44787a4c08e2f3e302d00b4164a91a7dd2194f6ec7dc4ee100da63aaae02a722a8744c989441eb18433402000000006315002020100e0744229158384d0355970f14000e83a44c664a98cac328ca619432c818438001040000c880cc8cd818006014a1da9380ee16a9c23df80303168524791f5bfd500cd3fb113352913bef03a0800a3bd74ca25cd9fc580208ca7fc9bc3345641bdb3da013601ebd3c93152d87afcc441421448d588a5a54e047065ad5b5dc5f176265b7e6e74bec24b237588bf59092833ef2bef1f0afdebfd70b89a8df11d97947da059fb020cfef57b0c9c23bcaa854a898cc8939f98cd734ae54f33a4c0ffe9c99045abdfff4f2d7eb5f7a931adca1e37bb3045cf1773d71ac57deffeef78c4c0aa53007bcfcdd0707343da3d5c1d1af9966fa7525c412fe73e7d97e8a09d6423d5b3dfcbd9ed2c0b4518f1d0f1574d96248f7223eb8747bd2bf3f756c56b0400025baa01158c19e8b36508d1478ddc106b64f458a670de47f622cc16fb2424b114c3a5a03f5088b9ff517041636e5d8ef622672cc1b947cad31888b594f9f9f986fcfea5d03dcb7a9e6c4769fe89f15fc616b668de12200dd979b2950c18e9dfa9faacadb361621dbba0efa669f9d7d9e818d45348d8c789b4b469158737cc1868a7d05cd9c11b24e301b8bebaf5dadb1a75ad5b8172b995234e25fc9ee29a8ca571a370e3cd6a69f9f428427506b0e2d5a5cc9b58cc02abe522ff370e816529124785845c184954569ff283570124e08ea3c4ebd0b2d7a617215f14de3204449ae1dcc74d823ac1698993b4a783862bd140e385c8c15080edf3a0a5c892ac947daa29d69b802f5af19940be216c37bca86fb2fa2deeda3fb5e247f832c705d5ebe2bc88c9d5cf58d5af7b71cb59840ba8e3e08ee55fda11642ff831a50d3873d83f93e16204fc3de3e665e7365ac64581ce94596313163df005fe4824402e0093b3998288e6860c8f228f5a90b30f81c29f11b65a4a75508070603e6a6f1495b45151eac6e71b1606d118386fa475ea51265a0070103fdbb2aecbc3d2fec3dbfc222cc6b06baa4073028c56bc11f6e300e48f94f77a930f2100758b89726c8a70e56de9dd676da7d4d58e3487fad56e889f4ffb7d325fedbb9a08ee747c234c71be54ec0d5f7f45f9fcfbfa6ea8322043407bf5fc0e68d30cc4250050f27e4364260ff7b5612709c84df7263c737f0c34035a0893a9e56bba7b1dec345ae3707889c00c227cc16fa6187977858c2a56fcbaad9fc06b5eef06e8804d07f933e69661ede364c33f6f91be4b2b86217fa972b0d4a958d1a13eafdb04e8ef9aedcec58146acc838acc0e8b2f3e71929ba1a30aeb852067bdd4674fec33f59e0fd9c02ffaf3dcdf1823dbb679f839f43f3fd0f87748c40f67664240fb6250f048b939568243daff4be52c9fc108cc75c4cc5abbc1b590da5faeb7400543df1ad6744e061d418f3b5cd1d7b1e1d3b599c4fbc621301758080cec107e1b4afdd3c88433bf5119779c16ff068ca7ad8a795065a514e03d9112d6f101c25c4d7f76a660de73b092dcb9a548cb749794cf575aff2e4dbf1e1b2d072ebf5cefc1718681e34a40b0b31a0eeea7369955e2c4314cb0872c5b2135f773c51c0512064b5854760ea8e0c0e1c00b2d4ab4893167af439c145ee030b6e48b81edf06e647321411621307de8b644adbb463df1a08a3c6c59e10b01d611fafa4094d5a9b0f0851752339e0f3115295cb30e0fd5d05ed0bec960b7d9af9393c7c6f74f4091e8b1e9d3ff0fe8a5919196ac81fc7382c939f8910a118fc150c917c6ec7627e799d13214567eca8da237d4cbe4c4abef5eeca2984246bfe845d2e7382d9b3112430bd42ebf7a98a4631922c1f44896f1c860c7235f1d07eb2708bdc964d318a1092c43bbbd0963393524fc943456ae8e1383b89e48e13805ec5a651645da3698ec36bbf070fc2209285f1ff5fc1688b77490dd761d4e018159f47306dfe3315c383fa7da250ffff1812e16b5cefee3828eefe391782c268c0e016366b657be1c06ca151a77f7474440ff0d60702eceffb460ea8abba3eefa37238e0d4f1c75fe274cda9cd498654bf458e7d3cba40c9138d305c1f6bc19dd0d341d5c2f7c4c1e386289b26d6909d80cb7b6e828b1f42f304c94c94e5507d5cd47ce03e4308cd5d372bf7956ed113500bf202e4eef26310f94ff31c5c51d8a908962fc98fb19a43e59d5f36af54b84b33f274945be1dea8250984447da009f0707dbd562f2a02f2ecf91e64822b66d814725c98f79e152255dbe0180e624231cfd5a3d43dc1fb650813ef0353aaa93701a0824dfeaf2d604c7ad4b2530b199c3c732ccb523010fc7d0b340e1281aacdf73ccd991a2aa7826897f31b2bdbeea360a8062446d66109aa546e19493ae5940be611092784813fa5a1494f37e86b51bb8e0075c96d0eb9cdb2923e26638fd3f3e00748b2e024736c44a9f5e3964acc642aaa72c1901101ddd981c7a2bafd5caa0c59545fb717cd5ff428a8135a3956c33de3982a156aa96e8530a965084a24411810f25e2aad7969df63d7135aee3701edababcbba902b5e80d6f6c450ded6d32aa29729280c329cf1c5a20cfabd4efbec7f482aa5d24664becbce3f3cb714dbd637924291efc6f6e63b52c9c4da03e6264840472eb389f0e1161d223d479e5e60457875090d0af2d9429cc05d97861fa782067931ba16630de9d98054b485d3e43248ac70d85003d36046eacff4a3aa3ca22317a2a40f998a0a8f94a7b756fb040e83a31d500a135d0d3a4440b4078f19281d554c4ae3e9b22016cf8668508d89bac31f4026028ab7c0a650b4c3f1ed5e9b6c77918614aa78e29efee50d0a8da9a5531ee226d204c6d166c9ecd04d0d822241ede7b35b1fe124ace665c882be10e8c1c5dbb57d370f98c124d54d97f47518e2441757cd6db085dc82fdcf037cb07cbb0506b6e03a7b10ce32c20ccaba584f0899dbec3b825a36d821a659be881df0b0953278542b5ba7f72c599050844919f1cd29838ab546499f8f6b2d68476ff889418b1c8a201cc98e333ac2604ccf8e3ab03caa910ac9d6011ca31a2528d4c0644027f0f1c8ca7ac6e490fce3f54a8857997470e4e672b8fe5f33b71ca30fc0689ce686366510699479aaf5b8e24380873da4be5a478620843f1749cc77c8f9de560b176f62f20634b9aee16044cdf7c41d2bd165206775e98f21ad979ee44f5005970d339fd38413114789df6ef9510caea64a9de820c64d0ede5603073f5d9dd6d428dd23d79e85712e669f6e996bbc3044697d4e5ec495094c6f3a2e553a124ca6402d029a88246ce11731223778ac28b143fba2966f7cd29e12644cc7ca2afb03d8e0fbb4c9d669f3f41666f54b12e6464c6cf7184a5e883abab4497a0c32939db149dbc2c5e8f0e831ad157796447283935e68987657f0646a92603d563a47e99960b6fd2b5b19684d7ea37302f6fca2b1d1303ff638a9e3f263dd2b170f83c663cf7a1be9dce10f2e10167164f25b6755effe5be32a2a0cce42c01c2bd4d570add7462195d967c822a58d4c8c553e6a3bfe33e09c68b1b05b4c26eab3ff695882348483aec6b435f2afafc24c32e0ac3ee0def0f87b4dd9b07445e4b52581dda849ec3e99d6918c0498e9f1545430262c5010518098e9ce28a3a196d6a50a59f0a3ca05e46cec04fa0ec45b81d272573cc48da48e66bef4e08372c5c4c4ac94d1df9aab122cc12fee1d7e6383c3e9070d3019b22f44d431f6af62a483e205c181cbacaf0e15adfa33f4b6b65577cbc30bb109616f0afcfb1e28619ccdbb9739870409af8080bc3d2fa95f501f96bd106fdc42199e98ed3de3ee6d5bba39fb64d2c56391fa93055816e281286ec2f7f4a1ec3f31097d99d70e3bf2c64b8a0db195c736bc6d9fa08918248186d816e8788af72713eaf381a5ccc6728cc5259953953cb8698bfc2801e59f9064ec17bd58f0cdcd80e80de98bcb0320c3c0ae4cbc543e52a174e8c363c65010d9f8535b511c70c5e8c379beb2d0962736545c5b4b7cbd2fd25523f59dfe905c485be739155b978dc66bd78d8d74fcff88c8cf9b44d5b70513e6c93a7f3fcfeb572a1ae2614b8b6118e43cfeed30033149353b990c0761792e5e75c4d6f940c5d2cb44f9a0b070e551783c33f5b1d46d2f560c1d126bfefe34e1ad372d5a3caafa435c97a3c38512eb3962e9cdc3d7b680e9c80471f2f6d00e9d461781c580f3bca9ab2e8a4baedd6a9bc43e70755bb6dec13282714d135da763dd2e7d207a3ec677840e4b5910069a90254b29988ff10046c871e330ae16b10c0a977e40c8ade36dc6f776d619ebcc00c0425285def597120c4ebfe50b71709b1affad631198a547ae4de7958aa0da4114fca1bef246bfcf0a31731112cef060c420652662808195c30bc11b33229fa4a6a1aefd681a203c67d8f8dd4eb9e410d15376f51d70b72a76b52e05860f296b2231e526f42e96f6e7d53808f6d3c5a01ec03a5686e82575e369f6898afbd76507b26aa5a0b889d21123d69515443c98d39ca490a6b01f9bc03dff865e384470e96c4389feae1fa1638aea8512a654e8bbd7f435c1526e521c26da34fb1aa7f38b72abdad2d4e0d6fea9abad18fecb9692ce8730e1adf5cc1a3041c939dd301cb2db4a816254e914f17b23f693fa484b57c209b2435ff38fe22cdcbf857ddc5bfb80ba622cb168f510ae8de9e72577be974b1685c62ef5031351b333492bdff417d8a042416987d558af547a604c7d3420b3cdc9996b0fc57134bc1ee5813231412e07fbb312d0377f8954e05431cf23b9de7220a2f25724e36f14ce2391ed31ff9835e14e2c0eaab5ac0f7271b75ec454932951a7500ff20fd7ee55e64134924b1a54cc800676cb958bedfb80d01cb4202f188f7d7d44de74922380861d24528407c7559a2c8e85d8302690d3a93e164e51c716f39d53c6507615584ff5c56d66c36cfe6bf6637c880a518a9e94b75012116c3a533524d0143cccbd5079b1ad05320c09cb5c6b9b1d4b0e2d18a1f099b9a7a037b842d1ada5665bdda8fb8fa06d5acd6c0a685e3f4a6c48f4b7edea47bd19a1d2b3f24ed3a82d0f94d6ce94a19f61fd07b3f90e0ae9f08de49692c4a2c1cd023efb7298d0cc63d886b8c69f1b3866d013221277648aa3f9faca58792e1ade128ca2cd4c7662af28f892e26114507b78861db287c3368c3db3994e8a1991b383101c93240005b31fb11cc546221f9c122c32552001e22361fa3a7e48c8ed4fffdfdec6c6c5210a5628729a956609edada8ab2fbd25b583cd6391bac50ae6920e50ae410e3adc7da8b2e9b9c503c35a8b8f92d3658fb1c8d9903db6e603c290ca1d26094ac58b01f49d92a24db0498a7065ef94ae5d2363d0d064f949c4f0eb86721fd1f7b7605147109f56866cea28639409edefb54b2b8833c7259254fdf7b57786957a94256ae50c5b353c20870119d2454622236a064dbd477ab36d756a0ea209c1d5264bd4b443c144a27044802bbc070162f536b3dd222d5544dda53502ea87c7ec30ce6b37f946c8e06862dafae9cc9d4734bbfd210dbecd1757ef2356c757283cbe609fd9789824c4c3239250349935175324ceb35e4e28f32cddf11d1a4bcb4f76a2b656a3e7d4f59997e688a540e6bad8ddcb132d3f619b32af6c85d3ab7bb7e01c131570e5548b69f94254ed2a88690f66d414cf87a926b352f61cef22403970a9b7cd8013de8281488212719a5d5af1cff440b457355474b9d916db17e4add06e68bd043ecc2d94642704f4f410ac27335142e69529d6ed243d671464d302aa3f4b76beb9e1dd13cf4942aab739518214ed16818bd2a855bff41149a305502185408c87b81d28b03537102a722cf713c2b2e1c59bdde9d34d00d42555f014e449c6044cf107827ea163411a18cbf59e6b7c80ad517b59ebb42a770073011a2b5d1ecd4405804b84460d9ca57ca4d15503c51c52dedf649dd85a01b6558a477f23ce9cede474cbd09acbaa511e6f8cf28e999dc85509368e26831998954121a95e284d547cc64fea7e97a69a61edd6b65e7e2c742eb4a40d639916c7574495aff50969faf02d5613e1cd3b3c0e08285fbbe1f8514c216386836d0fce2b795bb3c0337620eeef895f7f257714e59f17143db906c59f93f491913ba01ec724a52337a35ddc96ae060016d7242c4ebb5f761762801b57a012b79ad7981214f88ee77872bfe49296e363958aee3958fb088ae07c9b8432410ef4d7bcb50d8d1255fd22541bd00acea13760b64d4c28ee639807fe58eac65a095501f6d1647cec6e0e08e391abbebc36935e113e5ed84e9c04353148b8e24a6c870c709d32a131b0e94a1d2c02d588a8b20ca605c378940d9f6aa7bbfa2ef9bd469cbf8af6898584b437057e86279523d47a0fd24f0633ffa8206d41fa4bd270a017e9d110475780b942b0cebdcb426db9d445806d828cf37e1993d55a083e6679b26bbcd15e7c05fb80df80e088a8167d329891b78f6883db2a0e896d65a0d3c44d8461608435a0faf0c3cf0d8d1bd0630d6170f9b443533a4bf29e81a33984eb6354eb2ba16b784cd825973641c22c8cd3fdc2d0ae108544d894dfc1cd2aad7226fab9c5e5bad3d89da1fe8f449207853de81a8b654827fe40281b4347c42132956eb9697f3bfc0043e8316c3e94d79624f6eafec97f8874416020715501251642161d121d1b2f42ad1fcf0ee53e80c3b3a5150614bca63ddf6e32046f59f9f6c7631b6891ba4fa473adcf8ed239820e5901d565502d37d33d00e74fc8d898574763f9001aa61f8f64cf91599c6f7a76fd9772979ed6a8e86a61a14e4e26eea910972876dfb705b9bc114d8da8a1b0b24c612508dc314622e0def84f7308c183847d5cffebb9b3f19b75b62e40afe0464f1c7391358ad00c29973c1925ffeac4b1c08b4ca38b4eb7fad6c5a71f4bf6ce6af99e35c54909334904402d70154088065f21104066b41cebeeaec073d6d2597d936baed2b33811b6a5471c4c072e66cefa060ddc1549f66ad82dbc3f86812916deb65b4240722f266ba76d474bba7364b58a644d66217eff8a4569ff8be108c2b78697e8fe6e30960399bad5c6a17582831d4a6ccc4e8473ee5a6be52c5c8fbe04a588058a04c25145df3e0c85f7cceda7a4a8062b3c4ad8669ecd948b1e661bb7b7d17869789f47bf0c7c60a4f180edf4158856cac40ff2ad9ac5c7034ed49e1db3dafe2f271ea348385cc05a344621b5f53b1de43574246b7c2a4e75e2c74535b42b3f4384910beeb4912ccb4ba956c85efec44145356622ef88a83a6f8d064534a5a4261ce236456ef8785ab66dac47aa4dd92982aaac935d1aa7364a46b2c297809236bff1675836a7f5ef10a7e0af973ce721afbfb95b8208edb68396ffd7b05c0a652e589d5f8830b23b8b1f855efcea6331c0957414da85f4db43510f9607338ff40c1bf51a685b7e8a549abea6a8af9ca94abc9bc6b895546dee17ca98bb7701a433da791cab71c2348395331344cfa5c30dc5da24e4345f3d8bd22eccec20a19eff03c786bd046a6525eb478ed81941790ec206bd5cc99ce331d960e3dae010838b43bca86ad87590aefa47cdb50282e8cc5ef5a154a98e5bb4f4cacb65c80afc892306be8c0e403984698dc33c401d4cd81dc97b9bd9911f06a4d79e4aaefdd4bfb3a94869d7e97c54eddee99118c32fd67e2927a96ec037982eef67a745252481f36826b854023e870ad982da02dfd2600374280b49540960fec4392409d051638b87ae59eff0e2ad4da92d34b55dedc688b8d89193012761b78e3d8bb74e35ec665ce943b896c555482c24267cde9d819b50e00d8f33a6ea342a4475cc24cbd9f2de58e5d7c879549a17502554e2e60918f14411e7ad2e38ec5d86963a2d2641463f4a8cca3a9f89cde5b4d24ef975d3d57e339148f83e80fe8986e18a7a6375b220faa2d241c763d9008b1202e60ca79a21a6756bfcc55b1403889925419e87ce22fcbd28b9bad2993e159b3c6e35219a4ea6cc253521364900a7ef21781f4a9d8ce1f3dbf22f4ce342c35e52e640f882a3c4dc27a88414044dec82218274c260de49cf5c1254d0438930bb2f6975ca1e9c3a4cab1e2b58fce8e1d40275c1fd9f1ee63744c71697c88f3f1434b16f1629160b397f301372f84542564cb3a73f273f44bd6f91b293834d48ce3c4af759b95004a4136e4afaf26fb033ee43f08911d3644b8860f95283dac491397055456880ddf7bb806154e73f2a4cc241c187b73a07f7f828360272c3a05b1cf7cff91101063793cf3111b5b60acc12abaa16cd45df4cd3f36cd7b5a331522aad2f4c9867965f5b6a9a2bc41d507459136ecd04888d1291939f03b64bb685b0fea014e18eb3b3dbad02d083c197626d1263ca5fff63b5fff86e03ea8c693b46bc6dd1cf66c33d1bd3ce30d9b0af9e169eb94145731ba61ea45af1a29811b3c501f3c5f4eba50ffa8169eaae353797e53405da508cbba2224acda4c03fc5aa692884eafb4cee1b6f4acef18d816e77ef30b08a913e23dc95cb41b574eca892f4e5a67bf4c59d96541c1fa2fad64dad88ace0caa6c95ce59a09cca75de2bab77da08e32eab24f9531ed6df94055eac42da2e2e254b1980e6fccba26b0a67c12eabde26021ded77399a2d244161352d677718365add85a1e2a69222f0849e480e874ce815851eb45f5624265de5c8c65962b1306093b2d148eaa5dfd5a58e6a5023af27c133c184ff8de41f22740fe0314d2bf247e31d5a1c6f036b462fa28640bac5a8b219dd21fad63703de165120aa4937f0d924590645993dbd874c49f64bcda12107e252e2416dcb3cfab682fe8c79ce1af3f70240f2b020c48afcc3d02b148ad3acb456a9c844fe119365d9e082526784b9d4d09dbe7064144d746da8493f06a384983734c25cac62eced683cf03ad274adb5a27b9592fab82b0a64057184b7433514ee1a6473cb61d3d3b2736f9d65aaac67e184aae1d48eb5781678cd4c9333ee93de14e05dda69da71788c9a9b53d8528307720d294b62c6434b37181a4fd57604aa07391ee655998c3fedcb5aea08f57f9d86dbe5403de219016d24d73000338f1361e355ad33ed9a65bf82f9f83603441229a9fab2ef67ea01b5a5084f4201a24402dee67fc3bd784a8e4876a1154b3a93ec356b13a13a040fe8a8b9dc542209b8cb96bb5a3a03fe9d559c0f25f83cf880f1f3cb526377aab6e17fee12836ae42247d70327c30409b75519e534414ef25f16e34bbbe826a2f086233be18807f7d6262e05ba9d20474ce0bfab33c8855ba0b5a981f77ba32da045de2aa8f07a1ec0dc806b932d6d4ed1dccf15a4676f24a2c936a699f4be7649a89c60e5fff1b6f97fd01d89dc9d926b8ee10d91464c2dfe0d14f8a434950a90b9f255160ff4b61601d21278f07b4d5c58193ba27da002a4cb16abacf3b4af0a6cc954c0b55081b8760a2cb029e031a381144a4272a7ff4f088be55e87efd73b1aa3e09447597a4056648555a21bf4614196ba1559152280b931c4829c861ec312113c8bc4d87b18c199cc161b6f16cb149d841ac152f4458cef8c328e3471b44ab53f14f4f492c6e9ded5f7a5276c0d525d4b39a236d149e79aea737730bdb94987c4bf93f8855758e80a83c8191d5e7af2c09a042b3c582c274c412a97d022142973f16c34b2fb5a733e4c3487be46d21a72652d8442c5ecfc9c9265658570f20ae67159132018ac80b15c61d7b2eaf86bd5494c8ab68bebc34d1fc9d8fe0ba52d8c461346f89ce99f61ec80982e170c2793a48bb3b8bf8daad70c89b30ad8c8213133b50c7b21e0c70b929a1c36d4ffd638d9253440cb9c69ca4374184cf0699cf46ed38c4812ae8bb160ed58cbcdad57775136599ed3a6522a562f57047c570e7ad53b2fcc68ebbccb0b866b274b50a0a5978f384500915015b427c55d06b693f75c5580e604ba6c4bd87facbd54e302ad054113321919e2fce70c635b3c09061d0ef2622f88bb2d7d68d71e6e485e3082dce89b1c3e4f60da2fa7c07408ee3143882113c5d4e6eada5c3fd51c342395077317193aaa8602b0545ab91156db5d6166e621b490b8c0cf6d99100cab84a0780f49096e6fbd397485ebb7c003e0781c82e94e99d916bead36858386f40e3c62b9d3c96dab420de63192fa2d6be106d17b8c729289479cb2fec2a0941178412be9d4b49883c8bb40805192d94eb2e025a7cf626903a353a078fc01ba201e9352280d0cf7b73d4b0a5e0a3f2278f8fcfb5160f618359db3543c4bda7e2e805a19c77ddec40ee2c39fda1069d7c623270cdead9cfaa5e43bf1fd078eeb4b9e500747df603079adcb5d62fa2cf5f310f5a0555af97964e8a67467e162318b26bec8a002192268adb4df72b86b7a839e09e70b442a611d876891ec797f2c793c69935dac600838c598d53b799b43d09ca3c4503aeaa99dcbbce82205cd614103b9b6db21bbc1081e0afea8e3acf5ba0736d3f97e3e18bfc69ef02435c2ccf1b77454c2a1e15b3d9072360e361f12b17dabd8437dcab37325ab0639b0e4118a14f669e522fde437e443394a08f9b44b1cc3606d1b6c92d78734d1c878260cae63c5912175689d287aa15e00a15215d509f706bcb17a5ab1e5803dc2c1fa5c8b9085f57ee80e0f88984b79138cb3f301a519bd0b863c72b932be78d5108d6538a7aaa290f4c9de28b403fbe5d122eaa56768abde95a9b4b02a64d5a4035d1eacd8ed583e209ba03dde4456a4c4aa29b802f0051d292bfd72ac55bb631b70089e703f91b59c74261ab3fcadb6c6fbcb5e544b4c7e9792387a439a6f864e21304392df9e7f305f3e0fc8d062e24c30729f81db386666ef76e300c3d66fbe4c00887568b6eb1e6076a10deca6e8eff298959309d7a4ffbcbe3f144359b9eb94f2bbf3ce891d7765b923c1d8cc8ebfb18300d8cc1f9a75eb5acbe5904e109d9cc7cae2b5ed318233ebe166f6837107d1eb1827dfbf14d4580f2d8f994e7421412d5f7445df320d13948896fa8425a1f1e137859b1aad48bdc31615379fe29e23c49a16bb131ca33b63dfce2bfb87961b2370274b68ed2424757647b78e3db6d55a6392b6495d750b286cf28fa5b63b412a8469c52dc81503546e89b24ec5dc6ff9da87b53e24e8fb80cd745dd07f9dfbe02c623d41ffba4ce4edaa8b4b26d42167b7fc6d42da065dcac2015f9bda7a56273ebcca53e53948684dfdfb9d604524b8e00843faa10ce1552d9fe358ac2082aa65e601dac953b3be67aae0d3214406826afe85ed4b0653d9df3664afeca0d43042844f8eac88bcc019fbf4f6a067ced9f863ed526280d5a82e15a489eea81b267dbf81b7efa27aeac30cb46395db59adf7cf26fc8a564cd7568da4739ac3d3d7efea74baec13295093ce8052a26ea469ceb3cd18a95f696fa404614d1e7b1f273b9dd7484f34c300f8916a2b2722606714ea432c945f0c4da87deac12012276c291c91d7fafaaf000c2b4403055d30ef00b823401378081defc80369abe35c7b384991f5fcad7b45fd4dded213be1fa3f9e1bc753a3eb5b2fe35ede587ed58c0caaa10c0e94f0b5282310cdaf943d66913f7320b0ea4249e7ef71c772aa1e0340d40c6087fe0d7f6ef61bfb17018f44284521b4c7e8de8fdba18f830514c25c49af8d27f4285bf8b018b977a63c363c7a7db71de10aa3de66a21da1918236e2fff8b3bd4bf0c541355f27c471cba8386ec30deaf0f01bc851997cdd3055687743c5c06b73576b20ea9b38d0cfffaf8dde8ae1a3701de90b43384ab6ec412c3216e716b3d75ff38dfb8267102cb226ecd0e3c1206b64eb60704a8162f48713b5947a4761167f99f6ef6ac0e3fdee036be0f89a91390a8572fb4d03e1128fbe895dd30b9cc1e754943456dcc569d939502710dc491da77e01acc56f485de7072acc656c198d4efea266c25260b12e10c4214c6f778f148d5a53bc75c561c51d7cb102bbb97a1d1a5728c676c51ae68e284b429e89d01594ba69ccc31b84375b0bb0188e3f35f682c343d5ecdb888a7451c44a1a2930b146974786f590f0105fd08f49666ae38fc355069f515b376725345901f84cf4143306e8a6fb5b053944121f174ce8e689b262bfee5becdb4442d127ee4cdee85a9699e95e2d9ea1eb9ad2703c5f2b4899d473344e8e99c18c1609a344da9c0165d2134c41eadcc440ec69398c81f6562951c393b06e229abff4fe0eee9ed5eaaf7810819709fdfbf472b8b3839d90a690d5512448eefd8a3c503fb201921143efc12f663aab2898ee0faf085f1197324166ddc340951be985fcb89a9c94ca054ef2b7c921c5612c5e677993fe605088529dfa4c98c4b4bd3c898390f63fa6e60ded97b8e983ece37920908cc58326082b7f3ec04e40c988f0afc9510d097a0fa0d849cbc3db814a168d416d0a8d5182be54cab05201bd81a9e4ec49ffbd9c7cce008c6fae4ea0fa9c25a052d26f4ac83311dbbbd8524a7778b1949435dca1cf602231826989c4e7374c1695f760b015120394a511a1c3c1830c0ee4ad8706e633bab08d078410f3f8bbdb6d17349889f8553a4d741f990eabbfcfd1c0a3ddb6ba503ddc4232250c510e3e6b7f89a6b4b7cdab13a7de21a023599bebf9a8c4756adfcf85a8e409cbd852889fe03117cd96de27b54ff8a9e9e4a9c668915c38a98a56a40021795f88e2bd99374c98f0167e9bd22ef5b228359def38604dbd128ae8516e7e53cfda3f34e96e2273b013ca472c8d30e09f47e47267c10ad5181f30396d5cbadd7f9081464a253d0b386b4c58fa926a49f2dfbbff8e013578cbb00f6b0b540d8a35552291973496e88f62755b0165383ebe1f167e1ede05ab8f6a0977493f221a2c8a94661440c93530d7113312ba71ab115f1f2511139eb63ec88d716ec8928a4b630989ef0a58837014b774aa99c22da972a3b274e0db45b27f8d362e7c80c299c10af2a449ef15566018a7bac54c8567089ba5bc4ec4f7050fae7d72624ccdb1afe7d0dcb60c37db221b2dab07c1beee486c8f8bb61335c0ab8f07456b43e3e6809573ca8b31976828b776a34f6e3957799542f21145e22e8d8540349e6edf7b00cfa6b43179d9068485e8e49906d4627fd4be23984b6112e635103863f753cc4a1ee7dc60d51ee88021364cd62372de6a68c39da12f9e3c0443071e5ea7ad987f0034147c102fa76caa4335c730a6f6585ecd64e2db2add08098074b884904118fc9d51d8fb1d5aa2b18d0a1e5f196860b0cea2684dc7c795b163267c806e85d2ca97688765575d504fd5b6f100964005503785a246278dfa841ed9b199f2b416f487e89d883186231bc4ed3249036065158f5c04f5401dc8ffbc65a17d8dc707c337e4f345b0111a61ede08469a762706e30fd27183d0dc2fc38cfbc6b30989aa26eb64676bc2329972b9dd70aee78181bfdad3abe679f360bdf0f1d78ed43b5a9087c7c24d19a8dc0ffac55ee186dcd731a45cd59e0021564a34bb4cebc3ee4e1fc07f202e17b5e7bd08ba3aa5fe27d218c3e021d8d0e506934e05f38681038c1637b2ffbad39697e77525eaeb5b56fa183d5b516d5e20da816669082044e687c3a07a1399fa7550564b198d9f23f2f78e5bbe9e5e878ece4303b88180b4e0e28534255ef006435639ef434610fc4330de075a430681a5cc67250674b26049a44f19dfc758294d66f85025df9864187d179788223a82aa3aa963d9e380dcaa09ad6a8135c2b4a25cb47ea758b972a1d1e3f6dae71365e26bc683258d140300c97a722e7cc529cce12a3200aaafc231cb637a8c0914e95101bf54e4e48764ae1c22683c7c7985d027617d997cd58c0f54c4c0c2fbdc3cc3bcebf15a51e068b5fd0fa3102052d5af6bc654a9daf378b84fe212c17ebe8c7a36264f581094b74fcab4b9519851c6271ed7e992b8723e09d7d5a1587d9ec3fc74a917d0f6b6ce0ef172b870bd7e548fdb08bda60b4a89156e7f82a68160f13eda7c89f480f3f2949807509d1c9994199c33772ec2eaa7ff19e845d267b2d70c9032271b0538406695c13d7071fe8dcfea4378ea2da3a6bca57ba94857031f9dbf0d813fe02dc3ab9cc9a91266df4cc7b9c0389801c62fc16ab73f75280d8338133485188f43b3483ba76e83617815e537a3fc19d645393f292a8cf901f622fd5525a1b5e5c30b372bb70a7b0df349752c4fa4adca29d0c2524a75ea689868a3efc724ede8a95c4899bd319e74eb0d2b2137d0402d00017d561e2dfd51afc1f4b26f806a77b794e98d6733bf1de854479565c177532db9c7bff18cbd4420e9a20ff43a8c2f863c48f127db2821de1946423582d09570654d6b2a414aa52b80d0a7854e64e002367b22191bc53923edbbabdd8289af95ceb1d94677a15a8f843e089e8c7068460b1d646a51ba74cfea18a9c39350b9c3cc42dab657117295687fa7668337999641984a7a4f85eb3fbdbb40d9405ec61eb15fcf33b3961c1ad66502d324a04dcb210717ffe38601149e1f2b9f15ee5f804804f31cf1c4d9582cbbea97641fca8d0192e1c7bff7edefa00d9c69d33eb4aa5c179a9ca1762a7ecd02c806bd85706d82d5d7e7e9b21189c44d1618da80a3accd74ad562a92e6e9f369bcdad8dcea09f5e32fedd4fd7d957c5ddb162145b1718b467c78853bcff348c334b27fbb211f9e56c9d95276c17c6a2d37f462db9591696964f3ce95024802c4ad6c40003544656ac49a2800137985cd660bd05a3c9605ba691316c76ff2dce03937ac004d55acc751c6f5f7f947d519a25c355ab068b021dd8b4689a49b17ed7514e81ab86a2d26429f606f34a36fd7bd477da9fe8e2c24d3dd5d48512382ec117c003efed8d6da68a673a1478273a675f41222721ef5eaa6d9bd09e4a874699ab798b1bb48995812dd0211bfcaea01bcf15c0fff124c901ce65993b0898bb1b9de1e720242cf4f5bf40d869ef0d4bf7b55616564ca9010cf0a4c252af5994489d621b26aad75675844fdac00a155b1bd571a43358c4ee51bd7e6913e32c7a9e1cf533b811e41157a1edd7a365bc4b4cfcec73c50d0937ac0063f9eac29a03b295293bff1a0091bdfaaefe4e04beb384c5b21ec8b140415a00d1ac8ffce0e3c0b608277177ca156cb2c489438f7aea2d4d923a77bf90e8e68242b0d4d72119d9c39fda88194fb3d8922c81584bea67b8d2ca5a5b54250dc442824482cea6627d40c2052f33f254d00c061c1dd1ebdaccfa91a7bcc70d3644f5c98561df204298084c21504feb1d0f9c341b7616b8198e41dbb21fe062206547677cf71cbf6a4a0312972df6e6e3b2e3400ec78a1b9ba0c632a800a28b18d83c2382cbf64f56960a0ce9afab88d49fe80bbac7451761644f523420ef1389e7a38c4d736dfa89fcf6a8063f52c6e0b50d7bc5619d42c17f28f37d0f0ce2b84c00abc1fbdfc93054b9d1764f56d533b6e6965e555fff8a843e097eb42e32c365cbb09898f6b2df11d59557f7f2520dcd5b4f8bc0b241ebaf00be12c3f728332592fd091ae9cd71c1e39d40d6244112e356bc01a3faeba845e350c433381528747fc2edd585367558374c2c03ddbf6fc2c08b2b57353be9379745432889a2495b3e49f6e9045f4dd62fad17073e30f4439b64f72b3425d0bc18f64ba9e010e2ead92a9eafcfaa74e90c4ff549d9bf37a70eb29f128ff841049a7f448f899b7a67ddfd839cff8f5b6e83068f7928f5bb0ba44bd1b6280866cd8f29d5654b1b1211c61280f361eed7f54730c7022d1dd174a1976a991b697051b08311bad225eff5d7e9bf6246e98d0d31acff396aedbe53efa5bdd24a985699637e724f83b30a28bbeab9ef09024eb8bb47e52f3fe0957bd1a1897e4346931d44d24dbad08b751e41bf1da2c33c546618e3525ccec47fe5603288a5fdd0c2bf3a3541ab282c5ed6dc52512f024f5355c4ad2f872ada4c462a9046e43847190828043285afa53659b5857b1f35ce353a928954018b1c8671220b2adc0d7c9e67c0d07da60969900bec320d62bb38ce07da06a793266cce3807a4d43086a5285fda0ffd8e1b83b68e0684e176f1c609c169074aa3a8bbe186c3633783443c0f7b407a74a0790aec09ca29f1964f6f949188b16b6308fc79c50225162c8f81deff2f6478ff943198eaabccfbf9f64fc6a5ecee0cb467ccb66407381548268f9e22ee86dbd0dbbec6224cd386220fc8f568ee733ea9841973f96e689b42bd43c37b1c4ca6d953acee90678ac386323aa57a7afb2915a453849f131f1176657b0fb1ec88bea013d1e375288070b7e59243d2e45f44bc216a1efeed930578967ac677e7b19546478b98bbd1dcbc5f63ef3f50d7e2677efea68fc345068a567be1a0bfa6b9b7769257f6534c39652509ff9c237fe4a72ff4a47ff554e6d96004e8560caf96d2145b0138aca02b013d4155130c0c722b2d1eb60471fa33607708a111343052aae9810b5ba110cddf1b97ed8c8c17c107125ea23fb5cb3baecc9b959556b532cfb88f4c8a82d8cb507bb388483ae5838b449178e25307b8b9f23acb210a52183746921b24f017747a82862fd4c31579d6c22b825750284cdc5df5e2f8952b0cf139b90163fc3babc12845eb1ead5285b1bfcf65110d3fbba3000339dbb990ae04db86a48c588150824ade9f4a4f34450084d6c2f72c212b75b4048363ef6e779265f118b7a5b6848ec5062380775f5253761076fb386dd8a780b1bdb1c629493e990dc18603af6e59109345f480f948eb472a4c7494b3cd238a57b879280691878efcaa700a2d182407ee8fbcc99f4ceda5ce24dd8f8f5daa8b3708d90fb530c675c80118ec14d118feda7ff364cc293b4861a80858e9d6b9675b18d0f7608d5cb8d9ca70d8ccf22756d9f6e4c6e9462721d389203e72e49f4a612a82b627eacf330984ad2a47d086826d727b5a6d9b42f37998c8d7edf2171631812c494518ec360f073fed11d7a2c65a46d1d24a215fc0fb38cd6c7d3df30902929cd362e4b7a20c2074cb44ad34f937be30194ae15c609d512b49abf919760b97c993b6b964b84866cd4652635b166d7837165e972a1446d521d48dd335ec90752fc232ce7b9fcd547ae916ecb053f882e34d0b50470894b97c39e79c05bb849fe3c402fb3942850c0bc9c37753ed1b50a43277b8ac6ef091c65a9daec12cefa1c1264a1dd51780e40860b7c40bd36f5cbded4ef0e309e2d76bdcbb2a8758c42516424500c3ce5e57811fec584eabee2e2b9252e8f8459811b4964f1a15da1faa65d00bccae726834d8fd62e10966989f1ee1e6a4a2079ecb8f228093f26529e8ed85eb11e233cfa24a5f2e6c8c34b13c4cb0b054ccdbf884bf881c4a4958a1b1dc6dc6a96e9a99c39b1d5266bbb0b798beebf684179e2ae6c87b69d6615c5cdb7e8be3ffa2d0c78b7eb842280fd021f76d0da03fe52e279778bd5f7bbaaea19451ddb8611d405a1681e3c8493b69dd414820e043af6334dc028e51f5266d4cfa0ab1b5fdd3f8820d89a3ac1e64037505724eb1bf18215715012970571a39d3b63f63a6f100a5146d35e598e274cf83fb2ce547ec122f505723480829344d3540838187c3a4656c2a64788b727475166d642d2d830dad692fa7141e48701bd10f53117f32ca450e256840d782203c761371e927f52e108bcc941b05b0cf5a6ed0265bb8e81bfa495791165385cf29894eb7ca2e381c23861f6155f204a125d52282c91f97ea85afd31d001e3f507275cfbd4fe8ad2cd82321b10f8ab8cfbe825201015fa1dbd3e5cc7309c8eaab4210019439b4310eec21f828bf620344f35a29108d1aa1239dcc9816064cad4d044b936e2c18574f568d07487ed519ebddc11c49e1304d6baa1aa3ac0c951da3576b520e414fdeed3f6210ebaed7aeb6dd5fd651126b38f441272a6355b649a820366cf2317c508bcc6cbe4ba58daee06a847225642070f37bc4989498764fd448384ff3f9fb7b2fedf6a3ae5452509d6faa7438dc3a142c77f809667c36bec43c4aa0942ea95566204e4630fd18f3553ac510019adcbae5a9c8d6dd1098eb492f97c38a0122501100cb5f8d28617594161c6715cfbdcc824ab768b96552214f3ddc42f48a0ba22eb548b39fcc7c4bb5dce060f7c3ae8a83e577a539883451c0612354fce3f8ed17a72a1e54c5f59067ad34c407d469a1aad15cf90dbae6cee46ab8a5a1a7a8318f48b42d67f7f00e471e1b5aa32dec6679cf48c703f26e826b19d7e325a517b8e21e469e573aaafe929c8ce866af8467de79edd22942f149075d41ce532399afdcd89967c867fd934bc84169b2494710d233503bdf82093e0ff158a667d45170fe3b73f3cf94ec9d9c8411c9283b1e0eebf38e3bf04455c0739231ec4450e2477b9e099b0c72b96707e91c5505ee782e9f0375c330f493bcb25089f5613944c342fc022e16270efa526b3f9c0b8b25fba320e1c3ae250c284970eeebeec811f49563d3d9261ec36182a64bca265a57fa62598dca38d780026177682adcc4ebdefac4c193d1a61a8d45fc72d8eea0aa871e5f558309413c33d994535096d02c6d3aeaa52fb263e07cadcf8b8d70eee6c7a4aae637f18a1cfaf42df3c5dddaa3cea3e86edc23209dfb719c7d3e1b3690fa0f2fe2827e28fb931447617b96e768548d574cdb01cce9d7bb44a002b3c424f2bc5bde7133bd3425a02b23a02ed3d4836e55861fa0c8a29da3d21c385546c098797c2e19de644619ab901b475810c5f66d0feae2eb320f0f294b28024371b61121606ebd9b3e29637b1363370391994385d036222a31d4e71b66435a4dcee6335cb64f20b8561e5c7efbcbdec6f83b589e0adc25b8d17e47270b75c3862d83835044aab73a9b695db292ea6115a5cf1b50a7304f5d0ab7029f75f05089ebaee28e0cdd535408ce0ee8cc405827ae04a0d4f70586ed99ff77d79980444a824ada0b00f0c6908058229fa8cd3c7d87ff60080c6277053171b086768f291656304dee1983b8f1f69911ad2dc19b0e8db97c320a0aa9fd13c3f1ab0cea3ac7313002ebf514d6de7199e881b08b6f37f74eabddd3097e2a88ad26ed5b53a19bef59bf7da3d701a8295aa0dadc6656d45b2d3d5c81382743b0265e8ab8b4ba3e03d0feec6820279d686e8e0e61c4e35b61ab50ebae42b2bc790cb46ff361182b1e5217c4525de3dc42607e49b296792c08badbb58e0b5dcf3e206484f084f38d81f11eede8ecbba30b9deb4bf5f6a1b14ba86ec9e29293d752c5a6773adbfd7b0f4babac122f2bfbccd3d27e9ecf37162286d0bc859ed3bbafdeb562f9d65a754aba67d676d6e25ca622554090d20209fb3db108fd0fffe271af47739e98de71064b126e8f65634dcd77234a521beb22efe2781105b5588ed2aee6fe5f955d00989071707f8a7a9ae3af142eb1cf02c8fcc37bc76555532fa03eed97c834ca8bd67636e63c397dc0a864fce52e5c4279c14b524f17d4b7407adf50a909caa9efbdf10cc7afe5be6d04a195200ad5cf224205fd003d5e52deb7f40efca38925c512fdc00c110ab8985425b4874303657ac6cdfd33a7fa1d63249439a44ed398cad66c9b559744843b56252a3096e00fd473d92596736b0a5456b8b04145a99eb222885bdbc05f4c4503586495d3a6225d23ae7c57c58b8b1a65e6777884debdc206642d773b858d33144301bf34e45d6f2e94ac2e1f5a874f9a75b6dbf41ae084d44e0f6d3304ccba640f3733461539ab8b6fbe3624642136223424f125026e5bf1849d5e752c6bf6901b541fe7b4308420d57ea224f571f27512dbed755fd8f274d30d46b8ec22bcdfe46eae1320558fd1b86298cf2efd14a3900e001d7781b042e3b43f080c87709b8ef2cd40d4caed284b8e3354463df0d7ca15a8a3598c8367883fc7740ad1d5d94f4aff0527145990455973e295c77297ad4ba548adc8525d10afdd70f13e09fb105806b697d1e5b16b136fa559c37594b6e98c96e6060cdac25c498fe49a2a29d45c7f8dc6d6ab54664febc47476d7ec34c1a2af12882f3b35dfa705c49f90c65c8e84f031e2717867e59844171fcb2cdddb33696e7d08899244ed439599f39e534409c13db9b2453c00abc7e2c0cc8b43ef210df019294ecf555f2ca51d1e7e1e6b9f59d440081ccf9e5f91ca5ff55f8ae21f634d0286641983df4fc5850fd0c87fbf81a8b9e5a9e5c9bc753ec15454b36103c543d33511f3eba2d1e8e39680ec0b27ed4d9e5d95b7ce90f0b1914f48741ce6b646ab12a0e1420eb32e6a4ee839eabd7e063570fe8060b49cf58380da28028ce7b6de471b35923c9e89829cdeec7ae85b35f484f3d20535450e569c108ca808fcf610ceec529880ee9797bd921fca8713b9cea3533e10a044c4e19fe50c2c786fdb1afd464899986ad591c771191ae4568c1dfa33115041a1e3cdca57fab61b9a5fb9407204110031034b3416c0e97aecc221b3b2384367414e962488c784720b78e76980d036eedaf78eeeb880747f1d605c625d70569c6b64c07f67128b84e24ace0407cbf6419643144c6aeb12084430c840a20e4250d8bd0acd0b946b2266657c3f2a4ee98e1b9e442022b5ad3883ae25359a935b0d8f2156c6a0e799f5f2bf093fb55afe7478c5160fa3325316788814206e020527f8e2c1516e7a9ae884775e7f839a398297768ab27f246ade761f54422994ef0627fb12efe094b5fe2d9ba74145b441ef2ac2055f2544106826d32036a5fa419025ff89a6708e4867afd384fc5d800770fe11bf87d246383793bd098f232499494a8b996382102f147a193b782eaa12411b945518ddde69028f10f0fd9636727a52f50ce72b6db263b35d73fcf2ef64c2b1597ee106f38149808c970bf4123ca2aa057e71d993706e1547f6f3b067602f751c7a1bfbe97493bb9f9bde9e2d5c25dd5d5576612733709068d3090400e33feca4f2e7c835960531c6448805e7f78ed49c0c6e82097f7816c186ad628012c8c896f0a51b08433abbaf4114247656bc25ff653a9cb2bcd13a7ade31d9c9498d9c6bc22eb1e3202f57e48c9641b6d98c32969c31de4394956ea45f699927ae7556c1fe30884ac5921383a9e082312022cd5d7a0a188a13ed718e83a8fb488c822320d28548a0b98be250b8a89a40680c12f4af7eebf625ae1378d80945481679b47c1f891479bc0b8c383fd3f7739b36d64da99ce6ee511df7579852a8c384a889356ac8e319b0ce09184d86a4922711a130d27ae27744e6fb64c4ed5a222046dd7d8082a3ada85d4bd5441597aac5819515f250375038eb028dad3df35d60fd0830826db0d46a0f166bf2840c699ed41cc849738fad983260dc278014ad4819b86b81a8c25bdcd2640b878fdc106e55063e21e04901637b8a79b1e3255352425c9ae42e383bae9da9ef7ecf2c9d73536406e1d8041e41aea6b2230164f65b6340012ee4bec07c7605551a06348df2efcf352078259d53bbe702dfe6e97bd59120359b5017d038b64c723003e0550648737e40f72bdb2f8db75ea21d4e929c706efe164246646544a1f2d5d84e9bc0aa01465287f0ff123a8bdfc73a914be1f2f82c16efd157b94bb56efdece65af5a71978d540538aef820e11256167d11178e67f93d56d203183b165b57bba67965a201f028095038dea2c60c87ade53ff94d9cc76d8c153a8ae23c94105b1bd35e5ad9c2021429f75046cc4607775e33f5244a6fe8b2edb9c84b3d0f98c9aff6d112714ec8ced555d6a46e555ae1036add7b9382f86a0c9ecd5d69e54887c4cb34f29433b2720c2fc3eeda1b6b28f91509f24495480d6b937fea7e7803ecd58ae6fa8734959fab127dffcca34538c0762056494739086d5755c7902c37073d51759df05f15bfeb5a842246bc6344d72d5f23d06e2c24161885090749f6c3810ebe5df2e13f6fe52fd69f1acabc72ae7417c9478a4b2dfb83ba4d1e603563a5aab7aa5fbfff4868f8560f08e0ecca6d037cd3cbd9a5111b0f8bb90aceb729d83dba750e950114c846d55789256ec2fdad254bf82ab1b88565214a11a64a31ca1aca0a4642406d8dcc4586c4c45aae94e54775a79d032ab437783d7d1b9e1d2c3f8f0a48a4f56ad4981bb9f56c95eb0eb88008d5b649800bd1064472019525bdb2378717b33d0f1d840e6e08e05a54277a7f7806ff2740f72e55b8ad74b107ef11c7d94d15f7b605f36572746be75b7184a6b4ae3a03e90343cf7614471810d024d6363803f1b8cbe58d1e56513c28228f38e2815e666a23fa0b495f44190f67cdc6300b9e888bcdd4f082ae64ff25239abd4c4f40ad8e04711f1454318acf2804a4e336f6473252ec844e56a14826999cd548630772726ef22f4fb0a7dd095ffd3ced2984b5058ce17ab32e814f0e4a6c9d9968ba54fe64029a1b23efad46024228a019d6b9a11a262690989e826868442beb419584a5c8cd9f67a49e4ca5272eee9d78c56329527c4db7c597bd3a171318fac3d684b8820049f55d679cba2d8994b41f48227fc04938811b5d609a81b1b90c6246bcc12905aa451df845fa07f285dd7495b3323c1cd2a9057474d2e776b40b4cb631fc9ec0bec083c50d6677f0d8a6222ed25a5f743aaecb5f93362274eb1764a7fb426d8967323bfee681fe9bdf9c42174a20662d798ff17f03f1e7d8872d67a6156791ee5810b84b06c8eeaf27778a24f3afef7cd7bbcf07d4a1b72b55c81e05594e6ddeefac4b0523deced207bd33eaab658ac436905c92f2d7434e684f8386116bc64ec645deae96cace46169ba8128b82c3f1ae187e2474dbdc82c74d9589c9140a7be861cbe95f057705a9e2b3e4f98c54505a8b47027edd610bb8b1068a65caa0408f3bde3d7d9fc7903698c135ba495fbb1e633d9f2e4ae065929bf36fb8609a47ebfd96ae5e4a18c5febe94014cef56deb463d820bdd4c797963ecbfbce1f1d73c0ec6ebac81f0c1735758852c2c86e8de9917159e007cfe79871321ba3995f8cee4f3806aa4e9161a9e7914b9d8489dbb74da8cff690489ad38a8a2dcdc2298d1260f5752393af3028094678ee8b636780ca53df2427e36584209900fca57273d6deb84d38b6d6959ab441a7735cf359a29ed3dec3b4b01009cdac14f1602919950ad4a6d713613dd28e58790de49747cef55fad96583de7d83bbabe5552d8ea7a4f2c8c39a9177e2179ad12746671cc06d77d01d88c7c8559416d9fcb71b10296064cfbf2de3bdf6958c89ae213d6e00f598d0c7c788975139b369b92d0755a303b5e7508c148430461a5b1def8d6c3b30f276b6568cf597b4b7ed508c8f6df30e0910a96d6b19e0e9e4ff670f0a414dd78bcbe5c25f557a8d60b0a344f0d49921a824bbfe75282759d0a71eeefae460dab828b7d5f4b8b3e351c30842bb0660824117862b7a084361878ab76ed76c62fdd4f88a9eb75836b15fdc17d4b23da88e8b98781a89e985073a4480b6a855eb70867a0f25cb2c29a4fdea1805ff6994844ab22a7aa642d44fd373d022e1124e227eae0cd6fa90af0dbb7149b31db91072be5d63bb61e3d43416f6dc5bb22dbaeb70801f3205d8e2c40d9f5d2cfdb7be8565f41ff3e88b82b128c579d5fcf86878262a2293ff65f2afe88a734bf8442a0be0a322fe74d46c714ed1db983c7635d09f536fed3180a08cdd6411c644ede91cfa6661af791ae8722d326ebd1f0621cab847dad0891305b40e4c94c38c27c6c333650662b5425aabd8cdfea7ca2ba4e5909ddbac172ba2188a114868df9e6a8d190bdc8c26a57a453837d6fac0f4aff3e8d1ac30eff4ba739ab0acffc2521628ef1bbe5d75891e6692cef4dcbd28239eb2d042572412a62244bb19091019a44c1087dd93004451e1d5436bcfbfe51065f21cf5519f060cbe2ba96d6250e80708539953f05bcfe2a7357cfacc842e3024d43a7d245178b34488725b1d9f4acd26b45862a93a8f1b5c5a21c416af19abd7ecdc268a02aa7c974e1643ad6359ec4aa9013fb5940fc948ec84979cd8311e7200bad34cf09125c7683c416a59950e790709676487d6039080ad93f1d63410f324abc826ea074c0adf4f80195b1833969d9253103aee45bd7d002534abfc41a625ca150bbd4dcabcbfcf3cef0ca28b6fea95ba99fd3ccde73d6326bb7e8fc1cf170425da42bff886f65768806746e0034145704c059778d79aaac85b45d5f25dcf04559da5b16e42da747c99e75447281543bce723fd1fc85df62224b736214a47e1c151186e63cb218c8530b08d887b7eecd1d6e889bea6a8e2490ce12bef269d407d8d69925bc7615e2675693ab6ea84dd0f6008fd56eb38be15cea216b4b6e7784d1c451e2c214e81b68137b25287d0bde95da6200913c047e20cc9088dfd605e2f724f1ab5f95cfbf30ce03fb3219da3f009441fd52517879401b82d03eea54a380bf20e13ace28789074ce7b99a73cf6cd56893e04c147616bbc322c8d74d7136fc99eb3579ada91bad88a56d130d0cc0a41d4b1834c5a381a571a52e88239d4407a2187aa014f2f81a5351ecf0540afce8fc80e8c07210055740daa1d68a36a9ca5e6056878bb1de90e86e8b6008738b7e09173514ef5915503bf8351dd514c55f56785c77011cd1c34e3fab2b49876510c0893efd1ba488ae73fa6dac576da5e0913504d4413bb673be07c86f0d4d03db8124c9a2daf08d67ec423e8560a639bcde26ccb84344573d3278ed7442530b676a146debb64ba4482243a14858795da0e5a6f3e66784014732da01b3a1f50b121f04592e374e9b24dddf15cd985a16e4b869fce1ee94ffbe31f047d77fe0e1a9215a05912424db3b40c49998bdfe9bd733fd17ab8d6b0f28dfac4102d5f30b5213caa1b08d571288c6d19b3aefb0b2284542fe8a3234af5c54ba75fb9c4bade59c6f8ce8eb88be2521e9f284b89844032b545606430d42e94f186e32ed6a7a755d4a79f10f7255038e2ad9b78c2033ac6d6222a6246978b2b70b4c4db16d60e5f5ce503abf7830cf1a2636dea4e1876ab420e51664c84ebb3fdfb17ceedd8d3c79391e43d10835b34f14718f16663248634f2be8f3c38adac738144e3145afa912411e4c4ccb218c9acbecff9a024785dea2b53b4c0bf6d7392752554c1492b13ba53296a4ed3764cca4b04b68469ff62b92cd002c292667d069519d254c9c203bc9a392e1a14ce92961ecd3a2b22d8ce82edde89ceecfc880be6dcd1363f418ec340adf2b606a48cf2f63106b0eb91233f30a017fda3bfa381d2a1d8b8f310cb2c4c0f3aeb6c6002c6b07989b16b7cdf0fafd71a3b03d1529c45ded99eccde02beaad2c081370cc786af56356daaf337050f53e60b53d51e284ef36f8d126dce74efdd7d319de742c3d1715a2149e1bd4138090c8e44ae79e2795e7444397ba6d55204b2606bb57118fd81b76a5dc369cedd37781bb52e005466e203321616e47106173049dcb28055fe87bc1ce98664dc8dbc63533e64c9f0a37cb2301cfb8bbc1cdcad320c8e4e2c197ec3e10727fafc5d2208bf9bec8138073e068975bed283f7c0ca7e5911890535f02af4850c44536d122103de97568aca4ddc30ac6d9e178ef7c98a8864f52ca9732f84159f1c2a27712f42a7f16d9bd9179e383ce8c8bebacb88bc2afd225d0eaeb9804348d02f79e0ed51a032994f8cca6a17baea5e9bfa1f49ce9689d5eca5cb4471e582c7f84bb16cb45b062a9d4ce1f82469862294a624b111b1a479ccde5cb13a0e2351d8acfa289420857650f010e82009b65b276300e1778c417d5c9840624c144ea2b093f90971f9893bef9a24ce9c9241dac999f8b208b159560600126800504f5c1ad46e0030e4c8eb7f5c4911d63b357b1fb2fa012923b49aa15fdbac9344f413c2c24f5cf82f8625a8016cc1ad6d5a030084e873064500f26510aca52670d261075a01289a445d6f0fdbf6be7c03e03f85a7d4b66109d26cc8dc675547eb7a4f7768818791fab1a647315c745463afea2026e605444d148a8e04a5c657c6dcd793b9a3131a87b24ced467e30e48df34e05af9aec4de80eee4d48ebc46e1b75c0e27a7229cacfb0bfc5d8377a8a72c61e7dda8cac0eb286db1e1bdb463c3d3dff419a8fda34ad70f74884ca54b9d5b110347f8e17aeccf41ca65ad2274b63b637c66090d117b565bf40f343b3697f951b93061c8985e6a9f648ce9c6ee4cbc418831ca72b460fd3b5c644d906c8a781bf86296070dc796c0c8e5ac23a38649d03d61a8cc82111eb748b104d13e2b9b03e02552c2aae51ad53b16257982e28ea08f1b39f1a03862512aaf933822c1b85d132070013c8ad4b757fcf8135d8e845cd73c5ce14740bcb8eb6ec2b4bfe896b208cbd618691081ea661146da20ef88e08444c8d55a7b32fac3b3d703889361c5811020d68468a2beb6b1a6c8e8d76b72659b0ce52d1ca113f5846691858542010dcdcfeb720af4b71c6c994c6be8ced97500b08bf1201fef14a7830bfa58d2cc1dceb821b9902f795e027e3cac21cf33a43d800adc04afc974608e167d9af5e84dbb2d3e9755bc418d9c35767129c48db79a414b6136ef9bb6a574e003d37ad89a4beb5f1d6651f9dd8ae3d0563e0df39500dea020186531ab2ba1947c7f8ad8021bfd19e83131f36448c80406580691a042b0e934b05f372d5ac1e84c18bae8a6acc86f84fe5055ad9a2ce7dabd54ef4219eed17833ba31f1fcd1c881601465bc99e750d83f8859d771f50ce0ee5aeddbd0d3b914a17a6703fe677a596514da4a75ddba2454d0b47663c0d35d0a95388839b115771f1e2be71a142cd24c12b63024fe1f2975df8058c1ef1eac6d5b3a7df9f3205979e28f370f6716e26a522cc6b2109c7132407d9e763394f5a8d8a5114a985d6a537c087de923a60fc3f4b1488899eabd5ecc460e3066aa6accd11caa69859077fd4b225eec992d5ffe3f61c75e9c2723ce78ba9d1a865ef9c24a3dfbcdd9e37125b2e0890f2e6c741d29955c59c3a2534bd21fe9bb0934b077ffd8f64580064ed2a0c214fb2627a2ccd96766f427871aab4885e3ab3c741c025b9688b7503edffca5d32c7cb590bfa48117e0767d5caccfec37d888d644e26b934fbb36e392daff17d481229597666584b825b509b6c2c78a8eb9eb4ab2dc732be953ff9d9161328976fb3bafb46c87c3d67acc7bf2b984546757ed4a6d5002ead0d5a33fd3b64035dd8a6a862ef8d3e69c16ca9f005f82c9002f8e433f533942a8efae8c0acf61dab3c8f33abd7d4c253d5c0febe095476a2f33a63548a98c4795f772652f9215ba04c2c3893ea6730c7cd995866659d1bdf2becaee84c69f5a3b33b7b341b5cc602b1c5e7e4112f79c6a0a77092169fa1108e2af4e7aa617571d02ec4f7e45f3c55f548729fbc45fbab23bb863e0eb22366ee201de797fb273b451bcfeb5922a36531f078641a45609cf66446b1e9d2fe2478998a5ff5260a5642c6ea63d1c487f25894a86649e36049e3874ffd64bf147c65c688f23485f610723059bbc9e48d9c665dca8744c7c1c8bf57ba1c1867fc27510cd82556a1e909c5932c07b813af02ccef086382c2ce955746fc396392dcac8c16729f56fecad640d32ffe441230fbfad69083aa0b73449710b1f7fd5b373a801ff40f1118b4d80e68eea0cb061cde844c2cd4422e92e89f46bbc1d525c8b92f91edd67218ff13b0c211f5c5c0c456c0917133683a1e74abaa2ec784751c5b1f64c4a04c685b016d7a0105a1310bc9d077220c54324486bdd360d5cca44fc6dd0519cfc0a3e7c218d4008c3e46ed6746405b33cf7c2056979ec1f5a25555a95494172dc84a59ff7eb9bd4403cd4f27a12346d297a0a82a3380133b869c9da6788355810562ce79bc76c203184af74d630a4c31f341e8218f38a7a857b324693db8d53b2bf8ccdebd76094b4b35c60b6e8d0c5d81fbfdb9083dd3ac976049a9686330e6a4f26edbd67d38e76b89b267c6ed6b358915fc4f8a80275cc497b6ac4b417d51c3f34f500b0c6f04f4af643ddb5f006d2b06d0707abcd0a993bed0e970063111ec1c89ec99db16609461c51c1f3e53599993b98a9217fc1de57d79e3561bee1302b4e7374df7aa750dd5ca96c87fdc8fa6d4bb96374cf4e469dca5653ab607f4e4360da846312772bc6e8e10e10f44e090a0ec4aa3a1f47ffdd1a7fefdc8f7fe90b5e69d919bbd573c84ec23bc808c76f65860510ba36a27ccc4422e0f4ad109580e6f450dc43c9f4e7859a35e26363e585c255a6cd5d64470e3be93c84cf864e2e191c414ce895616dd4bd93394f6b8c0148e9e902a2ba2912d544844a9de7e50668ec59390cf2f26364f18d0c02de6df7bc827859b513f7ca4d7ad0141dd1e223f106cfe10df5e4a5207e3fcde0b8822479a012a34c58bab30140e6b5738c7db65333b2131495420dd612104e386a898823e7ef0c5399c644ac03d463bc00a346edca266d7c7ac7c1abdd0db97a0f789474768d77bc9557c9315ddb707df6b088aad076104636d3f0e9f864ebdf18d6cd9edbaea1f74c1fac91d578101e049c5c0cc6f09eecb8b8eb93601d996b33d160fd7bb9564d0c5bd72c536d68a28cb191d90b56ce88e73337497e9427729f04517acb4667ba821971fdd9754a7770b6dbd448be3a256a5dffca8e9b7881603ced218207a42638c5e3b94757920267273d752bf8be94df09296057bb52858ef32bba397eaef7426a617f8b1148ee73c6c4ddb2dde86afef5cdc702237041c6777375a097269f1185944565ae08b873e0d2d90543f18934623b12e818b58a8bedde604584f83a4cfde8d9c0492e418510d391aad2fafb7cd01f274ea7b38fb0b2bb80d264d42d0b53268d7d2a367dc89e725d7451290981cf4b37a607a47ac0b493ebda3aaae373f011aaca5961a8b0b6800dc0d183e302e0519bbc94bf11ba25cd6530eece8504aea7492dea0dc5a87eb886316dd3662b6f06c9b4911405703b63db3b48d083a70b351e15787bee6f288cb42f026b0561d5a89005dba3a9e5b818361074e39df4d783a42a9c39c01ab6d5d63118102601deea56f1894a6ae7959ff4449ee21b93bda0b537bce9d8e3ae4ac14d1e3659657865638b8185917cbb7443472c06f1fc1770f4793090b1d0c18e57bcf8383dcc688f77b1d6fa5e02159e5fdc9c73e4a456b33a5c8f52ddfd212cfdd326a946b5dfd76841a6b5eb49f2adc24168e6cd516ab09d1c67caa11f2a56d3a8c2dd7751389d114286ff83158870b1a69be92651a4cae70a229440b032427c28963fac7ef9283b20b18e31a9829780b973e1c0109d1da7aced9e5d8c8a41053309eb059f8f1e536ae0fc4275dbdae74b2c63069e80af4c178cf6ea2660cde364ef2d3218db6d36e6af1102a2bf9a08657e90530e3c6b0c49c386c4a4411a22be18de4587d066cb302098ce5ede37db5e109765f9e899b5451472503fa7c666ef5e581cb239121960b125a332fb62b2a4cc565e0a30c73e99a0785a7b10c7a8e943435a60a1c4d4385545609a22b8650482d7175201f3009931c9eb3f8f86f598c47209b38f5431ae8807d3c22df2c7f8bdc2d83d47a37c9e0c9cac2fdc6c9276ee30115f1531b5eaff0f423747858746ed6da477459854315ecb5a027f4d0dc2b85e3bbf30969ab71992b7927f3749b1be70dbefb44cd7ea16510242708ac6e28196bd553f133c3334e30f41d516694363f9264d8c7d898aef12d13aac195d52531327ffb5728e8177e8ef711faf8c4bba1883fb2a4b3f89246d587b5c4e288819e857202fda1ce4e619c7a64e6b64406dc399981a585b104aa1bba5736bde84a5ef4f197bd2cf8cde5026752fa960cab568de749064a340a31a65be4908c0891561a01a7b8a3e4167cab402282a292bfb0005c621c70c098e386cf725bf1080646b584f17ff86487f3003b82a1ee7ab4c8c5b0a35958824b1b74c093630154432ef105765bcce347c4ab7d68ca2c5d4e006649e84b799d55ded3bfb836203ddf953b04dfe228d50308bb81bca31882323fb4efcb92645915cd66b1d59b8348fb65230347f3b77697d58d07a30b28d45596ac203b829f6d8aa009255ca499782e124f087c4ec2ed4ff2140b21cd1f8c86a153ba726b8b6987cda36ddaf4d91ccf43a6e5c7e7736fce088d21c67c135f2fdbfa56c6802b657310aa24534e2fb06fca540092a914294e5dc08a31800330926edc033d22215f54dd95f769f92ee5331129baeb671ef803f230532c6ab46cf664741b4646c3c3d8a748b09bc2b80f10cc0a0913167515ebe09e29967516f5dc8755a9ffe104a40894dbd95b21ddd0134cf2bb4105ad7ddf72cb5aabb932445c51e5c30b015c81b6d22052b81e0e049914c53bbae2ec48782c6f28ad29aec207a403afa375cc1b233dfc8e2dbc7c53a5f44a74fd3006eafd2d1d549789a89c454cbb892f7976ea2d49b061522a42031a74099981077038a14f1113349d5fa45634da9345df7058b6815d3d3307895cca464961bf42e03657acb061d888345fe691a3c460cf930477203d5805eb5c3f01b88dcec365e118823fd95f29a583efc067534a6f1f42b9e06bd37cd32a18739a605431b74cf9641b1e9adc10d426dd8a5a6fd7827825f3d03b8c4936be031e6acce1a227bb24359f5b16492df4c169798099895c08a2d9f72a785ca9ff6b34712c8a200d553575c88415a2b48db6785a8280d17b4cb7ec64c661520aee8895a245d4ca3940c5e11add6181f2a0be6b8cc5eb9631601ad2e99db2bd012961d2564841b3135889a00abc1b34cdb9402ec1542e48400efb2c5ebfca1ac184e0ce2863ed9ca2a8e2f9206fccc64647f81b6e2148a306435a90a8808a00c3bc046f3c398da9e88b6b8ba11816ad242804f6f7531dc4846834dad00402ea2e4831e5405b89fffef1a8a615bc77cfecec585b7d6325ad19edc4f939893cb084fb78e8bc2988f01b0f323c4087d363539467a018a0c7970e11e6ca5d30b0015d9669a71d0584b89dfa8fe19dc206888af77c34a6d08c82dea033f8a57102609d8faab5d361ce26c4ce14541aa49f1b88878e071adfbed4b4068bfae53a20d16cbf8b11e85a47fde07bf81fc5342db77a6eb26318cda8647c72bd19da04a6da0b0492864b6b807c2f92e6a8177e660f78e1a41c8fe4b445552c1c12dba1e1afcf18c0ac0820813046950578a15e32574277d0a64c44b84f5b1a26c88985329666e2e41e24cecf332876eae28f24b27f59aa66ec720e12ba6f3314ffac8b2a619832d4febc2fe13023d0f57bbbd3e6bedc3199de83ab8f20f5b7b7374ad8a7fc6c2e52bced087ba40aa3232bc54e183d577f6615dac5fb8b593a73ac9342f99872a58d0b200487a4b1b8b47eaab3217d40445b3bd742789f2a8530f409759a0edd82a979f1174b7a914c16fe62b8d33828180664625174313d0f775e437536d4391b6685b7134e31da3a53dd81d9dc671056a3b840874aa4a540454383392b9eda408f49fc068b579bff705bc18407cca4e50f758a13879804607bfb9efda13691d044b2d870c50bef584ca27bb0fbf925e925b5af7f69c8ad94e007b05982060c6e0033c5dbcc3abb8de50b5c2e649de7e90f9c2a2aa4f9c0ac1c3ade7fc1eb18a9c9e072903380407c30a3d3afbddba45e0ccb2a2a2b914e19ee6eb85f40e8c88f2a38072bcb41bac4b98605a4f5034497f125545802114d0726e271f487b8a66108107c7e97c2389dda7d5e4981a0b8f1746e379e0f566132014e5844a895a9edae542ca5bcff8075d6c8ebd36458ea9fb4731253a8e10c89d94562702f6223be49724890151c88dedbd3e5c3d45f6bcb33c60435da27370a7e30e5acd6c4da337ded15e61d5326bd75036fe6cb5412bb17ab75489ebe2f8676980e0ce3dc8a4f811df96cafaa6583d55fa312f179259342be83ccf3fe3e7b1e74ddc41d68020203080e508f20ab2ff8182b0fd1955cf56ad2ae728788db310d02be91b9771531fb816dad453e70411c15adafe375791891bce35b4798ce6f75655c89c1fc1034245bcee07491f738d07269d0633a88edb68dc703d626242fce1b90f4e3accfaebf55c66a9c43b279034c6b869293af2347c434d26f786de482db4992cced86e8fa7badd75db3dffdfc5f583e73eac0ab41e28e2831d3d195fbd7e564e654e940f14a925ae604909c5b64b3308d103e8d189f9e83add953614481072e547db10faca60758083c45745190371f7438237eede430ba42c96dc3baf45ae6a1961815d05a9b71ab8313ffd6410d021c3a3c3b9b09249790b0470f63302ed8f6711481f9e64cace3d1a186087f557bf01bab472601e7551a4625857540491e0f2463ab41642d0e009bc0203965823a00b4b67feebfeae0cb93e83a41ca7956a227f0b26399242751e26a373ee4c48450685f4981c7e48aafcc8c9341384f55037fd4ce4a307a7d725b324c1284d3dcd7b898dac4d1bf3058f4e8236b2b39da032bad93d86cd38cd69d38ad8dfe4fc07a4a6b26bd3bdd04507e42021d035e2a9cb955147581c54700cdab046080f03a0948b6d06502526a652133cef88c06541ba5e06ec525cf462f498db4a2b9dc83ca69d48d6639bd06827b4564110290b960836d50e7806c5ddf135348d024ed9d7b534f979416037c817853310dd518280e4a952a09758d5c8712e47d207a8037c5b04cbe43c2312332ff597c655c5b72e4e62a17c1bf130b87d5e7d4115a1687b304f90b3cc9f1abfe6c08fb1246c980fb85ce39ea28408b76b17f8ce02fd07bc55e01a92fbab1aafcb82af1eacad890a205d3933a12e7f633162b2ce34e59050685302aa405d2c4ffac2931e556bdadbebf2d3bd5b098b16d094b76710aaccd7e51bd0ae4a95081b04eabfd42c674cbac0189168c14405a9f54a8a47c990b12c76597908b13c39e7c3ec4b5d4e31494f86e956033a67a2c543e40a5db5e6862a242a5df1acab847ada3d482e915fee465ad4a01a8e924f11a006fabe2ea0b8271ba18e029ea1ad4f8dbc83949a702f0fef576c4c13c84dd58fb6c4b19ca4af9d917a35f3ee58fe9fd549a8697d8b3b8daa90f99046fb005308d91d07465af8d77263660fcd37b4b1577b30c3c5a3dc63655ad00653fe584b0cdd24467212e6c5d4072dca2db8227ac964120c24afb4e27115c9474a5ce1fac51783fd8ab93967398a3c280b8243ed5bcd2ded8830e50cc354d6dff6b9cff0b7bd3fd967fefe62aea1407f2e536d077b86a6d35561df28365189125aba5c4c2e803a6f7e15146424ae05f40cabe4c4cbf7edaded2f41c900372660220970510aa89e9903fe4f0bce77dbda1c442e429966779963e552ed5de0753142056c8db9e1f012c58bd0a31aa19d30f86b7ce47c7ec1283fc050d31b11d1cb7333825912c100eef3c19ea43faf48bfd725c65c0340b8f1681cbf4478af472bb573c5dff49a7f640988e7e93e508a650db630fa6f50ef738fd37ee2404bdbb8a31d04650abddd11db03cc539e3144741c21d418d57af3f7070a46ae2afcf4da34d9304322daae012ff76465a1c041ba393c1dd4caa13f4a9da1c6c544a5e752612c664c17a8771b52e9529da6433af665a3dba336e245fb36143f78ba4c5fba4243dd30b058ba494be12df5d24c5608bdb4486e2bf2317e7e82c47d643a2b628763a2c525411bab922bc4e538a65497a60b0671f8efb28e7d5e46d551671c1395a8cd7e3074f7189cbe158b2aec51f4afa2b9542f354c65d22cb7be139cce24088059a6b58f55f2d4e9f59bb830ae0f204419787cbe342f98026962d4045dfbcb183fb6f87fed595ca48ff1c965628d3164f545c05a77a6190274c6535e46eda578ab4f1726ab2e321a1466d26b1d036364ad9af2208124570d8c25a023e448bd904ce57d5e9cfb0944b53d3e49361d8532000270d9d33d775b10a738e0ba1806941e6ce195e6c090551af814c032413afd00c191bc6d8cfd390d4e3ae5f34a88a026024cbb58a23fefb06ddda5245130b2e16ff5f3d8cfa16ef3bc5a58f998d502989ca4a280f807c4a165d21a976c3bfd53542e8297d54932184fdb8bae060173986ad2eb2e202bf1051690faf4bfcc67af52a33a34b7ff94e89beb143fb23b6fa92ab3902609103b132670d887a694f1392a0f102a78a4cc2ed3e2355714b7c6dddad6698007b8d842a55517bfc5ccb155e40bd3a3d08594dee185442926a1d4f6e1b6da1cf3daf4b854b68dae2b2194a0da33937ac36049a354ba65930ceb29a0e92bfc3c8d3800336f07d7a067c92837bec48a03456175f1e8661919f73459fe89686d0667df98c88d0ba37020535dda88540eeb3e8021f985a716ad067f2492dcc8ac4be6b6044fe3ebe7423bbadc92da54c49a6a90a130a5d0a9a8743e553f99afc90bbd13bda691becfa96fa218e4a791c0f2b86e51bf2f077df5de2e3ea84b13a5aacecafdbe594ee956a5c7d4fa9344eeba2ac93ae7042a0577e5fe985da993367cea89436e61fa1f68e826c42e66a5fbf1f551b76510cc3a5dd12ee4e7959e5302dc62c587388d679d0dffcf95fe5d0e78f3ecec1c186adc433fb8edec7c5f3cdafd585c5ca77a0ee0997b82e7dcd49f7689e07cdd4cdb4a1bc90bba82712b9ee71d2361ee80c21d2df8c43bd339fd36a5a3a3eacb7c6ab7188fea68e1bcf6ba638d42f1b897270b0213ba5a438b9f3b52e0ef18ff925a87e7e33f1f07cdfbfcbd54e2ba7f35d4458394205ba47f340e0abfdfc25dd83a3fd173192a47ba8174503baf49d7ad40ef15685a05d1b6b5fd3b46f726bded267d5b8771d2502d134da52583535359e09da65b1bca6d3de3b164dc7b693ac6ed59d106f1887ee4492dde97d7f29efd379f11191f939b37a9a56132d18a22421a18dbba0867b414721a9e7473107416d17d4e03e290d8181f4a3ba145c3dee8dd05f7f1111f847938b08ffe8e7418375f778c86c6496abea1119c1491055082310718108cf229d532b5ac96cea72d20e6390206907a506ec30b3526bad3c1c24ed30c306b39f8ac8f428f3f4c5e5c69014376d30f500803244493a44d1e1c6136f4a1b1b4dc8c0a161795c46326a630ca3305e587919c988c90da3a331eccd6524232172300a926e3871c51a503cb54dd6e03e296d1e329bea5a65b7b01a16ed3754c777aa344d55b90b90ac563f1503e9a73a065fcaaa514dfbd991e5caf28ffe27adb8728f867f38ff20818d1f5a6badad4ea21856e786dabbcca8adc9d12a1b545e42ee48a765397699a08acd9d6be5b02e2799c0e8863a364897bcfdd293fd516e9981a6691a75efee0c8098446c61bc5be4ba8b38dca577e3e8f78510a7887cd48d4dd7f6d7bfa47555f896b4601c6315e738299d53ded8c56eda98cc0d715cd643f18876d1d5beb821ce11ff6982dfa6ab516f093739c7b3e587385c7f2c3fd220eefc1887862ad1955e74f95d48caaa857d5317c75ed48dbf695c55fdf0470d253b36d8b0f1532894c7a409583dfe59b4d538ddfa4edc62e3f39516091bbf7a87d421d9f8dccccc5d0b6cec5a60e3d7ae359f4c57b25657f5c965e46f4e9793d659a5119d9a36ad0fd6bfa2364a3fca8f92a668045193ce8fd23ffa8c515654ab8a2dd5185cb1fe298d363522f6f308eded59c1a9b1bf28c88f4aa580c5ab4b58ad5a1eac7f4c71cf1edfe383a9ae792775690aa92b9f41eee8a55a888382b4085281a0422c168b6100848daf81fc1ba7d149b5d69a58ad2eeb70fb65b52eff3e922ee04827647e5681650624166248a30c9ea8ad50b760301505943a626b20ce5d68711555b59ac2821d51f4020b2b106349092f403f63592f9b49d4fcd10d536ebf67e99ed5edf7992bf99233754f98ee69b953f7dc7cbf93e99ea7356edf5c02602146951cb474c10414607f0b962053747404c61640809a1355ba4787c5818adb2f8f904572d63d5186ea02ba20053742240f8dc726d12c9a47ddd338df3f67ce029853c6aac7f7d31806df4fa37495192e06187c95ae96b55a5b3f59adabca1aa9ace6a830b83d9e87eaa787f4b93939cc6ecee3a87e72aad67471dea5fac1691a9ab7672ecdb7ba87834be3e5d2fc05aa1f1a570feaf2781daa1f1ef2021c9edc0b7e87eae782eafa96eac75577dc207477fc8dea67474d813a747c8dea47879de2de044d716fde46f57353adeaa755bbb8355fe1b835cf754f026e4d0978b8354fa3faa9b135cf97e66d7ea5fab1a9e9683aae3f6bb3850d6d0d375cfbd6d680c6b5515cfb2e22aefd1c9b64831ad7be4ef768f0519005b29e53fdb0ec8a8a1377f52ad5cfaaaa3ea5fa51715f872e97e5723488b9dcb7b829632ef79bea8773f5b098eef655f5b3c9d4142a9555bb24cd2054bb24c9505065166d7091240392941e249561105d3ad8fad1a514c3f52959ccc0e3fc36c46085127748c729536c883d0810030cb71f03d54f4b23a2bc21c337e38089f20501603873fb73ecac1b265b630a110f58665083498aa1286ec8d1824c0e6d05323952aca513300c40493084c1b9fd3cac055cf8810a2682b0c10821115e680112657461c51315684dd0f03403bbac80a2c4edbf4032d5d0c4141d008042e5f6ef50fdb44d9717b65c7f79a3faf13a43991fc81821c5942986401fc30a313de4e0434c0623292ed86073c10b586e7fcb6b88b2034d076bdcfe1ad54fc7908218583f80b2dc7eeb63a2c46a5075403edcfe157bf1e5280b33d238d2c28c114fbe2cf1a0c5172d328d892860f0f8362c09906e7f3f27c58b203e9231763174fb5b494fe2b87d850b56fcf4ebd8028eebef8f52fd78cde21f9d6ca9aa1f67304151a8064e7cb8fd1a4c055048d9218c39a2c4a1068884052590227bc2cb186d0919b6601907f074fb27e7ee1e65cbf51bc0393d2e6eb96dc4ed772e2807591a6f5801468a22409743d76328737d755ddaa1e769210600dc1a91c060509265d1c2060d51a840892940a9eb2e012a5d58f992050e568c013a6b666d1036b43c8600381d29a6cd096ce8da5c5fd8be0c035dfee2daef6ffd4a5c801c975584cb02b32850c05823084a0ce02463450e25124c11860a11c8449c25b130bb45925838baddb0a0223557d80370c041a4582a5fda6be1c7c8414e92eda0071276c7871c74d16608cbaa1e56d83016ede8747c2cf2970e2d7471375e5859dfb2a9a1f12ad03bf16b98eae2f831f5377e292fe4b9f17574ec3b71f38ef417e5a7bad01e853c9bdd126eba3c2352e408bf300085186358306287169800fb91f00b56a5045ea404a121830204c62ad0d65c829494265951a25432a8c11736def0ffca065d5a6cc77c27c6789d48760f8e08f1fde5470fc784e83fa3cbf55f3f0ffd7e9efe1835f8c2bacbf55f3f0f18db7c7e1b206c582fbb58331bf2c8082502e9bc6e0efa637f514fa777f819e4f1619f214458690e3297a9b89c141bba49b1a01b80cb48669c584b3664258fdfc4814004573f7f7e4ca5785af5b36d91d3e4ec862834aa43fd9016a1beea41a8af7ad8ed2e6472fb55dbb3aa6177f324141188f6de8592cad53e65a4bf58e53e80c3dcf694946080dbdf45fcd5ea9df8311639c2c5073323c00081c5134e4b5fe7f21d131c5c8da154e40892f849e22b1539822449960dc704100b8e08f1f647d77fcc82240242c622137f60cac202e3bb7290e018a2418ac34882f16b7c964497bf5b12452c7150b9422e23c1b1c5774f061b0079c9673ae310cdebd7f3f45c37e4a30cf84712195cff2144fc8bf81fe9f8b289f06da617b62d4766c39c1b9f7d744f7b20f0d5f97838f0f780c808fdc53f82e3ef5e91fee2171f4992125418820492a515ccbee83085121c4c1e18f30589042c80c20b2b40563da0556824494a502146c4c63ab163ef84172ce99df85cb5363eab88fa8b1f7bfc60c3287b99abbf98055124e2574d1343414a203d116308307e9c452539c416ff01f1afec8ff93f669dc0327317a836e3e98a1bf2206169151c0e5ab2d8da846a8b24543f5814115b15960e716ad82ad483ad41aa2f162503182f6c659e5a50296166a584ad643627aba5c125d91a2f5cec8a3353ac60539791ca38f14512569429428bd52e2395192a23c4d532196934b0ea96aa2b1e0edc5803b5b512910a8c4d4ae989535aa19480b62c5ce5e29472030996f6847223888dfe7019aa6ed0b063126936baf14425514840b4c69362b305366dc59274303731e9a877b8c6369456f607a9a877b8b6313b0a9ecfe97332fb9ceeee1efadc251ac42c7ff511bd0cb0786166667f59fb93744e29b524249594d9a93c617e4f7766f798f987ffd4a846e99c28f0dcb0fed28b0d9295ef73ce39e59c73d239a58c57cc244baf4afacc3cfb63e420da8c413746d7628c714ed4fcfa29257c2b0ae5cdae76de452d84c5e8614ca594a4bea26aad1ee3cffa31fa37537f0ebb654420aeb96b3f5ee3d5a8068226bdaab4f1fd82529f73ce197e97866dc33a6005542210bed24bfc22c6f8133b9b28661726b9d3477fb3ebe8d94461594e29a59432b61120f0cfc99e07fcf22b991d6b9d7f543d2075fdb96b1ff199520ff89daf84c31956cde30087a13175e9478e717646422060a42a64977d9872e3cb9f6e4eeac129c98718154724f990855759886e77394b9628b70a31bedc285d205c4011037530693d0d8dc724c621841358f33734ae0b3adec2d5b97674960b1b1e5e0cbeb8a9c9d0ac60c356ebc85f4bc8cc59eba87b384910f635e0c2eae8befbc4e0716961e3d774437ca7fb758cd864d3eddf9aa418999cf557df553f28efe786887f3839f56764c31b220ec2b76593117fe2e4d374d264068a08841be2cc7572d61f97427926683795f2a418eeccd05dc065a4399aee16b9379e6eb75e7eeba8a5d474dbe9ae7e7b9266ba87663a9940665ef20c19125a6f7385e68774ebc869ab63a7f1d877a8fb9caaa9e2deb929369cb332b67e3867d5934dfd49279a8f119c4a73697e994cdd23bf47f5dd5d6c7dbe61eba895a5356b21b59496e4d32bcea184248f4490090cace1a6a92954eba89a619a232885aaad23286e88fc45e3e118a1f9d6b73c26ac66b158226c9f7ad8457594d6fa29947d56d56a5194d54931fdb56c0a81c3582fd6886c923744bed353a8df01f6847a6f4e00de0cf18ffe9b1b227b43b0f686bcc483c850110da9154cf726c660eb535e781384f2aa17de0055dbd4726a3dddd671d392526cfd700edd9e9e12945782012eea519e91267fb5b2b490a4936c924ead232efa379b1a6aba0627d35319223e92e34bb7949eb8fd33d645ca08f853cdf7b766feb2f9fe9652ab4b83353fa467b7b9b5d49ab5945a5d5a5ffaeb4792a3c66b1df9ce18ada3fecddb625955028be91aa9b9c286ad27e60c07023d6736dd9cf94e0ef6c7da3bbb33e64933fdf5ffb543369c33f9c460cd74f2d764aae9a692eff45cf29daea9f1e6cc77bcd8c460c339bbac830d67533f05f217cdd7cff24c199d1285a428957ecdd99ccdd95785c78a4f4887b8fddb34d33da19cb37ef11827a52e2fd6ebfba79849a67b18c94c53acb7144a3edd106109a16f88380804f8479b105d5aac10cdbb5cb11ba2edc8de1cf1576afe86c85f359e347353749ba8483ef5d72c24fa6f805a4cfe6a20dfb9894521dbf7dfb010851cf94bc67ca75fe829c8a9d574bb65b3849db94217aabb355bb396527f6ba9df06091bfa53d33cad1585aa28af3275558c08a49fa6ab47fc559d9e6eff92cb6e58cd08ddee32521c665ab7aa486070026005366c1dddfed651a34060fec2f824856e17de74fdc9a7ee09eb6b7355bf2ee9af4be8af93b0b0d8effec974a3c46a02c8b1b18eab8be5b721c2eaa0c0f2db846139be2bbe4d141b63152b5c6350acd66543838dff5bd8a7f8ac241562405186832552e4ab3e41ee422e3444b4d55c616f881f83e2b717fb414243f16dc6b04eb1e9d113e0088cd0ede73aee8f9524f9f0946405c88558aa0df5d3c3313299683f1f06d63c0c6c3d0cd4f130d0f53090c7c3c09c8781183c0cfc8781dec3409d8781017818f83d0c14c0c3401f0f037f3c0cb42b2ef5d4c3314299d4a70f03691e06da3c0cbc7918b80306e23c0cecf13030838781ddc3400d1e0602e061e0060f03771e060ee061200ce4ffd1d529d665b15801743bddbb60bfce67838ec70436001d00ba2160ac4e77a42ba283f5ba24be13bfeb9094b1dfa9e03bf133e84a98c2c6efd1c5d81036a78b41385d949d119f4717872ee8a21019eb22aa627574f1a68bac166c188fe2924d1795886c4d179b22930649368c4c966559f1768b71ed48634b1446d222bb60c6542755179fc4d8303a756ceb1a68071136ec580a9542d51838a71d59c4506bd7b20ef29df8346bd8b06537b6911b4521fdf13de6af36e29df8d58d3cd6430412bf8ddaa97b428fbd3aa12cb346ea570b8cdf5d5e3ccdd46190a258baf15b4cf790f1f6d8110ed43d1cddf87d4417750fbdde3d48f96db3f4d747fdc536b26274e3b715df81c9de2165cb5244970d2e67292226268a24a123f985574c754c44b921514f361950386c3e3811bc42417442db5293c42c30621da3b95163f00fbff93dcf5d8c140395ff7b5443c496a3c35cbb5afdb94c2756860d7d767ba9bdf0cab0612fddce2291e44c16c92369d41f4569cf8fea7c0afe415feb9c8a0884fe26c3b8186ff22567f22f51080a64faa36fe6a93ffab24946f9b1c5f4471d280a899e1c8a40a0c82034ee09a87bfa4946e9a5a7a7a7a7a7ad630e0ff2210ff2217cf80875743c0fba14e54d1a357aa8879aa88bfaa867adc441e2cdc1cad73a7a5de533fe417f070e76bee51ff2439f3d3d75ac81a2748ff6944a5057e91e216d7b4dfbe76ddbb6ed53aa9f4deb1a42d5e91e9d9efadaffa6fad1745022d49b7a10f89eb03df777934fd28c746a39d41f93d75ffaab33ed258dda81fca5f2e490efd0ffb0fad0d1c9b99e03c9a2fe680e981814f6128ca8e8889b929470148b4051e6e33384489123485071589f0d5dfad5ba5e82f4b66297c240fabe44df99bcc9dd69c65c64eaf6280f8542a15028d4b66d5b0bab1eeaf6e4f241a3c28a1cd60aed97d5fe70fb7f563166070b8404b2aeff787ca6c619aba1de7cf3cdbb4ef6f4cb6a5dfff1b40f1779eef66d5bfbdc94c7552fd4a8373de95ec8f34498db2f590751ffed8eaf8d16d663fc8e3b6cb0fdb15fcaaefc8ddb3a527ff2bb28f5273f2e6966aee37b674293cbedb3fefc39d65734161108139337b9933fc998048ad7460b4b6fcb268f79cc815ce6412ee4432dd4423d44547434e3203b72b0fdde4afc43fe0e1cacbfe51f4e4e4f1d6ba09675d0d14c6989a929ca8860a0c7888a98e9224952028332e4b992c767081110158795f2c3aed6f51f0721722ff2170c94ef472e1994a07c5fe22051a602623bc18478e6ca9f15d11e84ad23cd181f7f353829f57694c0ca3ba4358fc77798a90cfd2d0a89fc49a290e8c5a008843efd9083b41771e01ff4e93747e364435e2aa2fa768e876d4fc7196bfd956408117f45a5244e5fc9836631c8566efa6ea449c3ce672129a0bc1d36d8d9a30d1bc6a0bbb47afaf14bf76c4f3f32c5303148f5b55aeb0aaa2f82f6dcf7f51b551f687f02ea53f16e343285e9d884527551c9fa2b0af90e7deb0a72d94bb715a594525055c292200870505014a23775f979aeb0fd4e291ebef6152f7eb4a7d09393527b9fdae4e852ce09a4be7a4d52a90792910b401fd54530aa8c4830e53d698105d66f10f49eb69c52257b658d29bf9c2e5f4aee62babb6b1be460bd8b11f531f29c3fe76b1f354a37c8c16ab30b5b92eb000c1b769081fa3d9fb35fa37090187453951be2c1a7529aa63d087c03284775c84bb7c9b83307d672e74726ae7ff44200508043f84b7fb6fb00c5084a975ee28817a074512266f4029517b24c1564610289195791280232bab1e9460f85be927d740aa8e444fee49dfef2796c3064a3a72472ad24be8cd15bc28692729014be1f8d10fccc1c21ec8a91ea03dee2f40102c0b81dcfa0c286195c86d1ed076307307194c1047f19a20b301f30172538c98adb2f551f309215cca5080c1c3c8bad7051f08f37aa44802d01e6ba0a040440b9535b8521f0705baa4000c2e587161f7c6cf420000c2371f1c4e0e1020d976b82570e9891c44fc456b82874ebb61776a00b8d0d9b18c9b30a4b70e2b64cadc20f287dc0cced0f536082011b1a56886f8dbac507da18b77fe2a05a852128a3890182174997d2dda5bb94ee2ea5942ebb8c5578e70dac62002acb6d21b7bd1a6563feca6ff95db1ca111c4d908539a6b0817ed86d0f4784efc6126ccfddc3e589ec321717badc015ce6e242985bbb87ccfdcb5c9e74b99b8f00bbf577eee65c7c9c10fa99935d395a3faa1800bbf5277500dffef9b46b1cfadf9d2fc277a7f4a443e1f2e4884b7399cb132166fe3e2abb96065bd8b08523bf7e802335f941a37e931dfdad0be38dd237adc3d1e8e368ff5d79511d8ee689f05d5a1760b9febcaa850de34d413eec6e208485b07353b4fbeeec4257e7f2041fe839e5cf544510d64dba45e0fa4dbea89c93fa9c524a69fbcc6623ce0a52bc236b420e5414ff90a91476240a04a8fe4192804ce5021474dd43a1ef075c1705d775a2a1f628a5cb16e2d9f667fe185dfdc5d6dc6b3d33dbb31e10691fc103671efe9c890586173058f1532c48f9f4ed171bb6eefc7e7775cffc9cee59a2c4ff0aeac76b8245d3be3d1c11faebe3845057b8f22f161394f8b37c40fcf6c22bb4256179bafc35094bd3e524229c5caee2721211546efbcbaf85b067afed8e3b7071c10a17178ea09f1385744e0e33e5e4e4dc9a08243e336d91344418ef4692a4469bd5e87cce8d9d8acd1598982cad480b510b9c8475a7e1baf439a7cfe9ce92fd72a2f19858a26ca18b51e59af433e64cce295bcc132d28acbf0806b82cd83ede7ef7f6145a841a8bb570db3b8176470622bb65376d972b13dc8b543f917fccc9754e9165ea734e39552148a77286d96af784fcc4e527f8093eba4a58b29452c658abb52ed7c73cec238f16201f26e3946dcc4154dcc69c6246d5ee8f1a659e92ebee7ecb3fb8bb513ba83654f41863ac1d51375229650789fca3591b8bb55aada47b1207271415697c7134c41a2c5802fb8a2b381c21058817cc48f1129881a3055dc0b182a1dfe04eb09d8914d03243172a48620194251860e4831a664481822a94ba484c8a941ade60238b1743408925e5d0e5e909176de60dcecc171fb488d1c41b53d08021610411258002098da125cfe18d8d0c9e258c62395c59011119d80c5ea4a06106164f7821a20b38546844383e1e86220ea5211a972098a4d8be9c14041857cbe6f09107230c2112c41711f5c4020a98ac68c2cc93245878717286892e88f80236154746416c71c34fe90d1944d5a44881240112ddfddf3c733dede28839a5f63cc200134611d4b35c8ce9f437a57b3c986c105f92c084f19793c03c9104260938b835cca0820a346470c2c6aa4b176464c1822d5a60d0a4e04e52438a24358c8c4852e304524e142a498d28496a54a1544ba59c92d488d58adab6a5a4314d4963b6248d6122694c102c4ea552ad58aca4315492c658491af342521a72d0d0d4d4d424a5d19494c653ca8dad371f4828f5d1df41bf07fd448af41be93f4267ec6f69d95bd87aca1e568865f0038f0fcf7f31092e2c2002a711d9630c503e0cdc66675d28b0f176191461230911a43f655a80c01c31e0ec3a1da09081f48c15679a40d9f56801dca674efc8535b85b07bc69628325076bc2509504ed9c8b0ddd5e3ea6b3146eebf2e5dee436cac332d4dd799692a42801c3800f5f8c286d95532b8c8c031705c7104ca6e4b02bd63c25b9831e205b0090667983163b25d0136b111029c9eed031801dd50863956ca6e735d51fa54250604ca0ee705b0bbad6c1c85d08e4546e8cf638c31dad5fc26f23adf0d79e62ebdb04a19fecde90cacd890672f77ea9d7e7fbacdb3d897994c4c1019199d80eeee9c148b72fda747e4bb588e71889545cc5f309641de8bb5b1a5c4ab07e88f04e9f5b158ec0bcd1b59aebf0a31366337fb0ef75cc09f3f33770ce44775447cc7e792eee9e07a07bde34fe327c9518190016f497f9e810f969f7a7a7b471c8927f1129ec25c7f26ddd38281feec2f1818bbfcd62661fb87b4ab5c5b6cf4c28e11e977113aaec8d8fa596743a1b67c93ed77d336add65969add2bb46ae1a6be57fbb637e8ab18818121c43343726ad7044f744e712fc15bf031c04c54747ee0a4db8fe5d6cbcefc5da13706c12966bec6ece7577025feada62c3be213fa9c03bfc91f9c3f8144659fb9c4753ccc6fe92de604ba1c60d4a7060e58527d0ab18a106d824a5069338c7154c60930e8280b80294ef1d93f8046cc25b40e961e9e2dd660b6304814d80c0d18312c8f5019c4974818c18d884c7091a58340ae07843ca13e89d84c10bb8699cec98b0962225b089b700727d001a51bcad42d84d63072f8040efb624b0bb787b48b2abbffece71e980c9e9cfa9f7f58e7f6c9d15f8280669266272ccea4d6953ca4c2937a5b3299d3ce1129eab6994524ae7a3becee8a5a9c7cc6dcc70e7c74199274a8ca6691a4f2f6c427fc61d7d9f337e7b6c5a53a9ab514aa953aa513a278ff4e2068a3a794e76da786c90c3c6942a9192d9af681ff2154debd869eff1a54fa9459f524a39a57497509a9899ab063758d48795f32aad679902cc1a97f965998d2feb30ea3746a1288a524ae9879476c7e7ae3f52fa5a74ad29aa29e59fdd4d6967fba3cc1c74e0d39fe461840d39b8323cc0f5972578e2ca20cc3c47ecc29beb69f0ef90c6e59fdefc9399bb6e357e586bed4f5d2535ec6ee6f6c226b751fd21ea258aa29ef2b7ae1214658eeb6eef0ac7757785e37e48d7cb492630a3b7d85ae4bcd8d6dcb6318a9959f5a5abbe33b92ebec6df9d7a949642452657e32617bbd4ddb4ba555a9fd6aeddddddcd1c847f32654af9a815878b8bc7fcc329a5940af1ba5c4552d165ca9d549510caf0fbb428aefc9c288c9c5c295fca331dd2efd655c2308afa90bdb0c965146a6bae76a8faccdec4515e6cd6d6adb729a5946a94ce29c3d861c5ca7767e7eedc9b00dd25f1490afb9cd3e5f88d55ecdde0d043c740c11963ba091d4456fe15aea397eeddc932b8c6216553d191b13276a111e30aaf8cf5973cbc36ac5f1e5d1ab6f6c770ec88a1760f15428b30646e28258ff04416fe314778e2c80be52b912fe79c733a9d534a272e2cac7c678e68f050227f83ab6426b9927a9e1bb2190f6bc2a47e4d7928cfc9931f20ea816cc0fa3c3618b23c376c5dd9b5aecdd5bebe367f7a57f84379859f5511e031c090e3b8feb38b00102e9e904f35ea5d194113e62203d98b311719c8baadfbac9a00739181d163c2addb46952476488288a93e2a268590e2030b3d34013a79f2038c0f6403b293270dd6075200181fd5012900ac4cb01889cfa43e132c46505f8dd48f1e93cf77fcabc76e90608a2b697811441858800cf2871fac06a42674d0e18925235a003268e463315036bb8e99bf4d6666e64ba82aebc7e333c4a5b7b7b79452ba7bd5e8f4fe58355a353ad91be78d2d8c1cbda9bbb5e340a0c11628c83775d9632fc4f1e66eed2f941f65c7e365e0886c097739e8704290d3c309e10479274744b2eafb8853a9113bec6063e5644fbff479c3c447af798199d9e5aad5dddd3f6666be61c2ddddbb6bec79b0f179905d03c5c630bab87375ef3b21ce17e2d4d8bd857c41be206774195d09195d894945f0236574195d09195d093a8180628cd1e78c334ef7483fca77195113c5cda119e42f94e7339f56bab69a75c6c7e9f47783532ec7e56ad939e58f64ae7b26176bb777b3848ddf5452ef320b7594ee04e393ef3cb1dcd73d9a0eebc87e76e5e8e8504969f770d458fbe653115ca79ae41413b2a9689272524eb5620101010d0d0d010df98edc985c4bd6e59a9252ad46f655b4d10b7b76e5f3dfca519b2aee66fae5b3dea9ad1c17952b7d56e5ca4d5ef952c85f48ed74a53b3dc9af99f9ec4aef3287225033b980aef4805c43b223093511a8f1bae9554eaad59350e3f513eb49a8f13c36aba182d64a459d4521d69db857fdea5993ce7a651df23c5b529a7d3c5e116ed5e1685b73102ea308cb631227b07a55cd57e339a1f15c1e93085aef7d47f20dbda95fb106a5e814c9f4cbd54efa653b4acb9a4af7443aa353d2158efb55c7bdaae3387f7232b1c99ba2d3954c1aac760d51f71551d0589f2cf7826b440a0e4c6881461b64c8003d0005910f2d80a28bd216305a71e323f1d7779702dc89850b0bb8f3d949aaa605a3082731b9411546630c2eb46c1174148b4da7eb5e0070998b9332496d8c31d94835715f2417274ad7a7030ec2df9f000ed27171a18a8fee09795a39fced73d9ca6ebfeb856eff47749b8b93a323c7628bdfd726c82a55a05f3e66b3520e19332f2431e645ba67a34f3961eb863eb83b28e8e3f7efb8dbaa9f219c735df5534446f695cf1636d09de1280b27ee60bff4d8b2efb2d375f2976c16631964902fed2fc2b13b32fbfbe3142524fd7281fd49fa97f4a3d0af0293961e8b0cf11df6e98fbd2b0b2c462646480c096690bfc5d83e3988f62d44139d4aa71ba31cd92ba85cf932e6546a485b4721bc492efebc53f5d343fdad6e5be11f32e752d54f1769917d45a4c8111f198febadcb65bea381a0c11ab689761dd45d8568e63bf2995c4b56e67259eb5df7aa9b2e09f6591f5511b0f259bf725a59af9facf53c26a39018d22bd95510687023a1c1edb7c9c94a39faea8a7d5645a041eb35cfe8abe8b5507fb285a210076a82c23fe4cff70dca0d5dc981a2105fd2a0c9c62f4e4e52fe943fe5c72f91290a8962221031624f1c13bf30159b92e89ee8af48e44ddec597a49441574a7fba52d3827fc8774189d51539c271d3d4c7914eba47ca58f774bfa213a7582cb6827f61ea974bbe8b91ef64a4ebca77334a55ae7c09944255f9c6954eb0d42aaee43a066d537f323a4531ae746594f9d295d29bec9469dde2c24ddcb48675591b8f5052012a30030ba630a8e4e004d84c64617db76956b06f7029d3c58a2a7cdc79fd9db3aeff786ab85dc5992eb7e7ec6211090b31ae271d719d8ceb5c6eb8fe2dffcd6583458c48541410a38f0f362c31461827b65429011b3ac4cef0424688311a1534084123a68a28aea844549058542431a68a1f30d0b1d43d85096eff146c68b9fd540717332b50ccca78fdf413bd258e2fa458bafdd345ee5abee860cb0d5cb6b0e0f6b7dc55d43d8b6a20e3f67b4074860d2de85a66f7068cfece12ab5982b8fd5c5b2a6c285b310aa51b8f688458b9de6e37f5aeff9eab9de2174e11d6abdee268341fbfd55fea53dfe3065b3b66b3641ba89de49c6123536c8a4edcd74fa13ef5d1a8531f85fc253ff536f547569f4a3d117f6d9ffa22fee23ef5f10b0ec237f52af8a7fe4b9788944aa55229a09b92dd225cc76d5f43f3439a0916cd2b42e339b1cfdab6d4abbacf7752cf753cbe93da9afa4b7dea7bd8c81bca54aa631fa4ea4da53efef61d0bd33ba94f89b9a954ac81fa4b7dcaa6de95fa4ffda77dec5c97a2be56940c415c64439b7b0f354951ccbcd9b26e7ca698c6662528cae5d82c4b77517f1ad85827ac4a77fe2a76f9531c840c8d9b4f748821f98a56688c3a994f81fae502e753d9b4f36995270a85d39d4f87ba87a8b61cf2b9730a1f0e227ff6dd501c7f8d424e40a1ca0fb7cbb1861b6ebc44631d5d8181cce7f9e43bf387344d1c36fcaa7782fc135070f988b5a50ff9900f712079a28fd5c1861ddcf91bcfa6cf10afd5daa9838dbfa52ebf0667d85abbbedbe43430c386bcd441be53c5858e442127a030010e72825faf47be339fb827b80fdd27fe313f76f30d06528d6e8ab0619ddd5967f54f40a15eed51705da4eea1b1fee6948381cca7f3cc9df3699ae11ff377b860c329668ae99e1a85b0117be61cf19b3f9fee9c62ee7cda4d3311c8d4c1d628245e7e06a1870aacf6e17cfaa14f6486751ad9215f3be8cf8707fdf9b8f37d8cecd79ffcfa51a73fe9e3818ffee40d7dae7c9508f156a2a27a647d2792c07971e6b97c274c08bb29596aab51e86124acbc217da4a331df99bf751488ca68d07cea6fa69054603e691ead4ab35966c08024268b26ac781bc5108b32c4ecc009a739279d94ce185bf36be6db393908375131a7bf1584adcb5dfa0079b9f9db8a9bbfd1709383b438e620916f5621eccaf8a81b8ee0fab75c22f8f5ef8b0302779daa60feb6bd56bff923f1d7ca8b517ae33cee3292de9945d6ba5cffdfc7c3e313892acfdf62b33428c3d6bba15a28d58f3dc3b2066558ff90724bfa15a364a05f51a6a97e225095be4cb01861fdc6794cb85fbd7b4654bf794c58af7227ee594ea6f3a71e49705c655597ef4c57e14060fbd51bd97ec5fde6b9c7facde7bbd38784086e44d387277c7f11e91da2f771552fe4f964bef317a53221de1c323674a71b9d7c67feacd5daf95dc4147ad351f7ccef2a9b02b69fdfb2161a22f2d72aa5fae9d7a00cbbdd13e475266f92de08fd75aaae3bdb727990ef4c17727aea98bf80fcc5fd8cfe05ff9832df712f6c920ce49c61e9f7dc5442dbaa83815cc7040672afea6060ab8a704c6030905510e08d090cdc7efeaa6b21df99afeab8ae895ac602c3469917a3f4377bdc60a9cc091bf2eccaf6fedabc18a577e64f2a77c608d4df7c9616f66fd8b23b5bd6412d342f90144318531cc1658829e0fcf932ebc47fb1f1d9dd9d8807fdf14b9f73babb7f92475229651c61079677cc43bcbbf051985da8bafd314cddceb13bf7bb010000bf731a6a93754a94d603d731efa49e535ee7a3de9427511a0fb22aa1699af6d1f99227d532053cb56ef4b567676f1d1d8e7e9d4bf4d75f4f1c2ca84eeb5420f29c403ae5a2ce1757bdd1bba2695e131f10cb7c8942bcfe20c0ae7b1cd560521ac2b4e2d89c967585d11af25704bcc86006116488202a03f647a2fe58d49c250e246ecfd997178dd671a07925f4abe0af05f090451b36d080850f65c0a63fdcfe08f4c6ed8f51b4c00174db06ec8f55da6708912c4ab2db6fe408163705f66780830eba27ea4883f3e1e0eeb438e880998c6ee08c7e48251915a159d7b32e27194161c2e986dfad546c9d81eea9280fa562a814edf585412c95aa190100080800f314002028100c0744229150241848bba83b14800e82a8486e4a194ab4208a6194428618420000800000001920a199cd00fc37eb554a7fe4f3e94fdca45fefbe241744719d137696c51f14958f8ef30c7b87dd354903edcba0ebb464f28268424cc736e7e35b3b1520916bb33e56635a898ddad695985b3eac712641c94d92ecadc92c369043b566e18022b3f98c62f5c9df4ebf03fa7f70ce7395cf234209d8b4667150b7742ef2168770c5d26993926e97aa86fa8232b949d1f8a90733e6f6a413caa5e6449ed3a7f11c75eb7734d4bd3493647de38d86e53a4ab8b7a5a70859b1564164c3fe5a43e84c06df86cc74eb3952b103d8c517430a2e7b4b1204392640edac4fb522b63539175546370d26372941c74ef4342f4b6a8e35cd07aa24560f6e5551ae792486310b105b546dcf475816541ff4ed55b44d06ce988e4c5fe9eae039b39a68c59be3de9aba70a21fe233a8a5828e2d01650638999667f5b782d241ae7e79ca658c7f7626274b8ad178ef830e68ecc0f05f70edf21f61043e64f2ccf36997af7cf5ad0bb6cb35df929f367bcec026ddea5ee7e946fb8f8a0ed331b2827d90bef32b7a586b9728f487b821a4774e8d6e4b06f4e12c2ed3303c22b44cedfe26ff132908ce631ffd44323bc385af0d562e8c18f73514eb33f6a2abc2f2e5dcf45190a9335f1818ae661aef49e651c39ead57d85b12824861e9368b0c65869cbecf79fdeb179ca1c8e81186f556502f484fcead22b60eddb8b9efebfa525573bbec16b8d4282a00e52f3266c7da2b414dc6deb99834d700e266340cb6d5fc7c63d1f256cdcd43fe09db2d2b07b13bb1bc8a40d4f9d9535e5101c77d4351f9f250a211730362ca6454f6db16b028be3c04bbd43746f3fb6192d7a28a9e5f11f8c6a03a34d8284c0d0b79616f7c939e2637e7f23525aabc94ef0215f9d6d6dc2581c5d91f9fdb1bb33bee45c4d8ce97dcf0b624225a9558caadd142768d4ea778391f6fd5de174988fe8a7b1ea31ca4a48508e33c4ecf251ba18d77045a6e898002d6ca204d64bbaa69efd718e265fc9873f81ad3cc375ca1cc00a8103fa573b810e0172ac07ed508530572b12d891061b636f92d4d7b08880185a4dab8383d06e28f7351d0fcfe9c4ca5d361ed0b55132623e8a7782212d288ebc1c09712c6467bca7bc5fce60e6dd08542470228a85b99154503daa2066ec5c2a3fc9611fe24550715cfd8f5bd83ef9af4209415e2881e27365392919170ad139e7a2065d9a95a31bf6d3d17955bc07824360e35b9c8a90fa39196dc40062e9bbfd603cd8b35f2a5471d3232fb5835e3abd9fa3d2d4635da7adc6ab23416aa047406dfcddab9f45ae28349cb0112905477baa26a6d0a57836077f9d444f1c5e5c6a9937e073f55bdadc8be09b16b663459103ea96e3bf2118d03e7244640c17215a98e3b3b543e65c8a82b15c410020bf19bbff7bd45611379e32d9d6c11d15b2c20521539433d04a79eec156aa9d265c0787280f45aa12a5aa38f8c8084bf0c08f457ae77fd8d1a1424038336f1413a1e97e1a4dce014de9964b0e0c16fdef6d009b39e62eb8551950648c435326017b27b35583c0064757628c4ba9dd75b069949657f672221230f9e6744516a8bf3f5894ca8a0b03f67a2387380e51fbadf1d4984c87032af70f4d081d84fbab7f55525c7b51ed66ed82cbd11c098b423edcc93accc212720b6f5a16b08258ae6c6adbdc4030dbdce6bbcd140f15bfa492d83701c6c006e52c6bf0b96c415b10138858fcaf775d2c46b8ea8f031897e3c03960aa7e438bc9584cecbf1c6ada8790a9dc11c79e5d7714f58b5c3802241428e3a3fae778d83899653f9136d8f97f570f4fad1d5173b07cb65fe359171c36cacfb0ce16d3f7c5b61c9268e34be600709f6e84e8480958343537811eb455401e6ee6951024302af6dcfb8e908ecece0922777091614462c2e2f49625f22d90a2603fe8005d1d5f4a9a42bcbd592f557f2834d98b03d4d0cc3245d4686c02618437f721641a89fe229ce6d484d08ff5cfaf27c443938c6c9d74c71c2eac0efa49251de095c362a864a6ee7f42769c2a55e33479cf321cb3f80b514f29d14424c068adfad90c2f17f55e418f0e5f88351bfb4837af2e8039ea7270f114284f0bac8a38a8ebcb9e4cfee51abcff6c76017c81ec88c9a9bccdcc613b1abb48417c1303ba16cbbf01b51ead580e94879839031528bf3da0486bfcbe32966543eed1416723eb63ae17d0c821bda025f1fc37e89c4a7d5b649b853b9a022c3e0e0b1b87aa18708779f0bd30838e1d763ff5f0ffbd40bc0b20f51f2503bbb48c5d62d22ebb18385d8d8437c590fff20a0f8082d8676a50696044fbf5dc64c814bb00c66d4fa9f5b3e3e506fa2a227fce4f2565733e90ffcbde8f4342ab8ce1fc37b826e2cea273ee141688d745b37da4d61d5cfd8ac3b70e4b5f00a686dc1c7e2ad07070440c3564cd646e89277851e9bb22c675c5408b4fc4270a3632283e96a8410566f9eef9a945ae109e071abf31e786a522d3e4c2458915660094c64dba0d1ad2e53ab048b6de1b442c4dbf88ea4e3259489a91ebd5d345935f9c1f21e15c59cea20a02d43de11009aa5c8d924dac53fc2a070b52cea15d130bea8f80e28e195b0da7b54e7bd9515d98be06c03b91e432e0e650b3b3f1892d7013574d3e961c99cf24d07be30969ec83a578a9d4f6d01c58959a1194b9c4f083cd4f356b0a6d51875d671fee2ea76068c5bb2758d588b5ea0b8bbff2f3990ef2354d9d4707061725a2d8eb918ca01e859e24261132597e8fdbf095238ca37cd5000d5aea8d3c7109b1dde50e8e6c5f4db13240928d6ba6f2117d419265473452d408bb0d1892da2ab352a19ae706dd73c051cc3b226c485bd9643cf3d3af95febe86c88e0e571765e9e489cdf570831952554b0828ad4289ed497401224b0de66082805e3f037bfd7471f290efe9e9c70336aa55db67a0b853dcda47ea3b60a5f6fc7e04454b30bfb06fbcd414bbd3f2e4cb8264c31be523dc101200557eec131d5a5c49cf2a3445592337cd00fc9a6bd091a1939c0d38c1150819353a5480911a1289441847ec4182ad281789aac7de49980b34c1e0ebac8c25125be22bba47771c1e00177a66d05af6b2cd20018c4a02d621ca393706e785cb41bdf816d33d8875f25ac3c89c9ae32a62bd3854f22c954ca0c28cf270ab890a5424d0500e0ab6f5c784122296caa553ed49fd659e3591c0551fbd75c3afeb2c52406aa8e86990b7b429a2c15c70b1dfa206906e1c2283863668287315a147d593376f0f76c1f100e30e818f6eb0210067104c005bfd508a1d81ff336fa0dec8c920aa887f0779b7043c175b7f93e0d3fd7274a8cc89aee8de9ba6846557c16b94ff6a18cb8ab0d2eb752c850ef59cab39702ff4430609b0edf829be02801ae9fa8ee616a88784883b73deabfb06c36ac2e89430a7bd32842198de62052c48427cb562c278e7931de8c6e351a6fa9307a713da01645e32fd9296b91144020a16e9069a0be2d6a22e6061b0b4690ec51f492bd548ec321f847419252c8d412423c4c1b0d7115ac19f0c019f10b7b1ad04eec2251dd48062ec43191a0710219d990ec03ddb2e1f74ddc5e30a5d2bf4a114e0f6f0058c49b980d48b4e02882970e2813340ab1b03a8a4d23ec2c30a8a8905879e86a3c0c4b8b89f4a4a40c1901a98c79cc1b3733527e8cc3b92dec6f3ebb45d8d7c619e5a822604366787ebbf745c8e5690fa58af9b95de178d76cf1d0879f3630574eda0580cecad2f879162c543d718f00c3da9583c9c36439b969ab13d4d80544ff8a9d9104a433803378d316eb8a09e98fb784ff66cb84ea282c1974fbc67484627d89018eb711d1330d48c4c97122cfadf5bfc0c074be1a87675a274df6234c1783b12b178356ea1683eba068bb225f09bc498cb66b73759e1199152235ea120f5223e50dc940924c2b416380f3e0b1bab9640d8513fed98351abb5182c6a5deb1de3edbcd3c3394cf2508843bb08491754c22b83b22c03e51183691f44a994043335c8cd911ed7b37e971c9eb83e596f29547d86a5e22ea4251e0dc39cad270294393ccf62e0d82f0a7bfdd040130a9ad0a10de0758c795112de51b360486c2e300a1ad8c615f780520577ca07446761f52be41e25a7bd47a4ea88cab592cb5cbc17149d2b2e0b8154235cae9272cca17b3601d1bb540d1a4939011d1f34b4848705721dc9bfd015ae863ae1ec67a59cffffe9e6e33117b6da6c6d693a588dbf3c2b1b599ba53596a82f1f501b3c6d4c35638511f3a7cc2b15f8b2368697e2e5e4ad27a9aa23a2ed390b449962b5a2049bc6764e00911dee88ffcba652908d6de3e7dc4143d68d9e3a1bae68e29b1288a66f81e1d1948685afd0b7055119f611bddb9cded10a227839286478b4c64c37701e581ecf5c18a230d05cc3933a23db8e38f8047e4340599e2c8f3b65236aa237e7a1540eab57f380090bf3767d37b19e5d9f1a3bb18aba72249aed23de4b80a97732f9d0bb961c481bac84e26983cb335f50a0843463e3b80073c924c2de257713826bdfe29d794679d4af036ba10e08794e1305f463e10afe4e5e62288187f943a4a88cae3ddd197abd4efdcbf33ab71891a6b59761a56c3c0b74a1e6c25d477e2cca129b276e0f650ee86ddd804123298f41ed0ad32c992d48cb85a657a30b7feca0302318140073c10650d7a020f98b5987ea322212a997b1aaafdf0745d117afbd3cb4c0cf609c1798593e9701f93e4c8a0ea6cc2e331e12a020bbdc621a8bc8ccdeb4c64e60d1c0e62ee9e4e41defeb44159e93d03041886fc259526a3ac84c988569715313c915ea106f7a4f57329988c5ad27321f9a7c2368b46d07659570098059dc10e9a6a0782e5bfad20b6d340389a6ecb82db8352d0db6cd9abd76d90cb46d96ec696810bd2d1c6cf96b580f5a3a593050a6346b9dbc3c937e0ecf73b57de8099f9f6bc664c12ef3772d2fb5be5f57e946f906e8bd5de3df326225035cb57d9279a0fcb6e55dee7d825a9dea2cf189cf03340285ffc4967f84891d363e3704a0e90c2568517591f431b4cef518831d20ffb7585a5e9697392f17df5a29c22306defc41022d545437aa9f93533aa94d0310b005c53bb7288074176cb7781f14e88427c75f5101ab2fb7a9d472491c9fc61ff7bd8d4faa598b9046cc1654d2fe86b0d84c38578972e6f2f781951e28bf01504ca2dac5dd9caa0d53ba83c01aa8609592e990e276702d8432f13399726e31965ddb7bf640ada676e3288847c8643ea9697b15c5713721a0c4b9ce273bf7e6f3f1abe61522649aabd60153c2d522e2db228d01104bb3130f479672f4e1ef7d22c70d455e0014c46e93ebfebfdd1936a2adee8840e1d84a0d7a3a1f100d620da3c4ab53b6cd06b39cdf8c9129dd8134b8b9f53131e6a5de853d7d189f0b7f3cea320c46982256a96df7614f045955c1c07a47a89194440c8fac64880a25c0058eafd921b5dacab37cf65eea4bf8babb950ba9da96109b544c972cacb8274f4399ea2a6ffa35f6a60aa99f7323c686bc5f93f1c6769a2f059e0ed29eae01d05ca204d40347f685edc112d8734e6d509fd3600fdfb649c9044c83fe5660b1a0d52d0367ed87b6bcaf9ceae325583f0cda13359ed999c2a30dc753ca3ca42e715d56e59a0e43924a51ae892de88b9eb4b98f077d02533e0a27d9a505a72ca37fa7d6cf8e24447f91bc1212489bfce1c5562cb7b46fededaae4b6b711343e7cd813a93c0ef84984b65ff434f57882f123845aa3ea1f081d03d6cbb9c7bf1b895cc1d8e4b308cfe9aec6979583b598602a40b582f64b834651851ee8a138d8c3d1284738f6a33fec9d09c2f4a65a7b08ca4493ad60ddafb1ba4c397f30a4d90cff84a076e1d087afc787e6a39acd37d3ec152ffcd9b2a78cd5a7cdd9001fed9c974142c24c43c46cf760d3c5f82daaf7a8f27f16e39413e6711c997bd3f888b27f5689d0484aca1364345afeffa214a6cdb46c43f36582731e5a1ed26efbab584e9c9d0fad11c5d0e6b3eb1e31850a7a69796d95bd30bc768d255e2c645cce147d418505f2226378a48c74d5b09ddb8185e7024e4d78f4aa03e6cdee5097e600997661e67e355510cb7cddd5d0e9a587e178ab588e06546fc963e2dc58c85fd4af91ebe2223506014db1e6a5bc91eccffce632c4b64ab33ad3638fea6f933d350f41fb95b7be8bff85f0ec847468748c231b63c4c15b68145f79dcda15308ca99f9b2f2a9cf012957289058f43f729fbdadca787798a778f8c554aa271fb8cfa7a0210d31a878789f51b303060996f0dd74dad5e685073e68d611740d65d6e19e530143277ddbfc952fa42da569b46586f64680acc582bb829e39774e0e5183ceba307aa413211a21a440ec9a5d9a1388212cee71c5f2f632024d2ce8e6b0d4976af1400221eb0677406fc220a79a63bd412114f41ca9c4b159406dbe7e669fbc07f8c67983467fa30fc79eef7a3caae53ae088205d7e6cf2f18d0492a90f6fbd731e5aa218e0bd542b6d49863c59d71a86e596f8511471feaf52c1c2d93666d1b11a0561c799b597a09b1bb728d31063aa66681f47fe3848cd380f7e3a8591378c828dfda49530abdd4b07c4ef46e26e32945c27393272842a213fc4d7b1a03116d5ba2230e49e5c56781d769586c3a3fde7a799d52a5d740f101b1259c64c11779c9113f6b6dd160d2f2925d3a16da6eb58f84db83e1264e34b2b22cb6cf6cd97cc58839184bd5beb2b596cf88f3e4ca9abe3b0aa63cf4ecd9f803ca4adea331cb8b3ba234b4bd386b758ae5ee0468f8a46549a3a8e004384529bcb710b0a8571986f1064765107566372b0624b570986c995ca8d70f8fb107bb3048533fc4bb90a42c8cc770a24e59d9013181cdef83222380ef97d1226a3003e9681334004546b59a381107b02387651018e49f6aaa23060f5f95fdfa1d32a45a13cd1e6916b76e1900d211bdedbb9c519e6f209d3529467930953e151a2d316aff91bf0c4dff8cb257e279a57bc403d4f3be39c4d969b90ea3b55134297da66694fc1dc1adb78d1ff3a6b9ec501bfe4afdf6b9d77f87e414250de31c0a8603e38ae31dbede10f2d22b5c4897472dcff457faa4a8884fe3890e028e1f597851eae355d2031013f87d43e99d7fafd9515d61561fa9d2fb6e6475fe34a7ccbf6b4d018ad645ce458d5fc2c97f48db61c582f06735cada497bd76d314aaf64ca6b2c6e33cb43f933779b4c9ce02512e4e1e72d8b26061c53787991ab2ebb3a909940d179033866f69481b4d970a632e4852ca1287553b1861acff6bf37b20c8ef8f5c04fa3793a104c8a417dcafec6f809c81610f0d88c7857ecea1af4055f61a4698ea9d3e9d034d5e067bdf4df9981abfa3bf388ab152fd5321988107480e3b3713d463c7630b124e2191257ebda33ee9bd825581c2787cb0ca0dbffdfcce76788844c2e0c0a225f14a093f533b73368646eb823f038549290e409a8ae17def8da641a49b966f8bf80da98bf973549fe66667ea78cf20cfc8c237ac89a0526da75ad67837c69f23ee4bce52399b9489ce7bae123092e7ae839162628d3879a41307e2f5b1a0a4b2368b752332c577f45a5a412be8364408cd0968f83c3f985e33b4c8f452edd192026837c20a4b61aa02ad2c768e4e36b9a4fdc6143965ed14100924d600414633ec8ec7ab28c2b1e9f34eb85110088d84580cd7ca78d82769bc0c5ea643880d1056f6850bd27f4ba145e5035163cf58e4ecfae1ecae6c4d80410e02ce96a2948e73174de3156c7242578c015462e3309498c2b84f08ac55d08a846f0dba619c59b86359425095d911c0fc01cbc8009410921816ab68ace63bf626b710aedef52ecd80267ad77338b56bd47995046fd75935017a98bb0477b0405bc775ccac5d0d1f473dceb7a6a96d831e62647deaa3f273cc9027d4b0b9cc359bf783625a2abc3f539588b64a29296558f1bae2069e4ebac5ec84a5094c17e0253be550331a4d020b91711484305ac69226bf4df63ef5e183bd96a6f808091e27035793532f570c7cbe89d4468ec2fdcad58f6c0db6f8b53d510c684429968d46683f21c4d3447333bb50027054a78708ecefc794d2603c4b1d044294ec3daa4ede4b6c420795397a8941f851dd40d32e8b4049d1086aa22c46a7b968e84186e5955b95460865c65410b5fc9a17d28b4df951f841c27514c7384d015dec7d05b69ed96fd08c73886c4e1281e90a8f89b39800b8e1a44afacac4902dbe8e941b2a08a95c1110cb4dd065c6a4851cab913a102e99e14315f5f2647aa6d0396b230fe1e254f15c8472a910d58432b9668f277660d37f2c9c158f9c1dba50c808c879858db262b1ebb1e2580f603f2499659cdaf82de6711eff3d088c27ee833c3982414ef5a218281eae359c7535e05714a00400f922207ac89b19eca3b5a1b6bfcd16789c32e2f3a2daaaac59b30e2166a7d263028dba54f9d5151d157c6da46a3de828269ed1bde53f897302dce9719d030db226f7710338c8abd3982ec4f5cf0182c4580d55309061496dd93bddb1dae569aad442912c9fd1c40035740bc6b84236a8e8d436def1f14d0d27107adb11baf0918adc5fb3213d022efaa4f43194981cb160162f49e7f4f898ede3819d5ab3c566a6afcf060cdf1975f529503ffc45a34e53a4667fa0216594bf38fb9bf600bdfa9b500b7db51d9d3d33e3e3bc4ea9411e12735b82956eda503b8c2bdbfb14d6dce414f5a9326338af5bb7de589add6325566df81427ba604920e0785b1cefdce4938ed8d770cbb5ac6baac50254a832117d54d470934a93572282fe44ac698d9db0b7dab986af4d19f6c19e6c0a503c51818561c0c56049aa4dc9ee0f9aebbf65f57ffa3f1d844957f4ba3ba570911174fda1c2e5d250ae41b9ff38c132e7d138f0437e13495248852b04fcef32eec7e9f6362de6e9faeec4c520f3498893ed1a3572e0b64f8f040dc662b8b75c7ab80ffedd5cfeb10793610fe6a93f05999391de50e777010017e3e7e99ddccb2e820b1fec762c68b7be63827f5cac1411632fa352088a966aa204fe4ba2fc8a807f074df0073142f757aca703c459f3dd8a4f7443f7d6e46a10e2b703414f8fbf4d6d67ab26592686b50a5cbd250727611fa7a9e5de049b2283af9ad64c8d85682bc195018271ce638182520a43be0f8898e57ff5c1aeeff88847eec5abe8128637d17e994a87f32ecf2615a94296fc5b8fd20f0bd80b9c947ca54b49419d74b82a026258ed577c66d291e1243eef835b9d0ef24ee7b719f2fdcaf0c5d91f4b56d35a0659ad27c535ac4d10bfaa17ad650fe8e16505dc470a87682052f77636c04def01898182638fea392c66cd00bee2ef7fff115e89a2ae5c5dbbcd038c4ad3d354510e4319c77d88e575f89c12c260c5f8734e5c986d19f6e2931e4a59bef7b721b64e1fd6c733cbdf4949474a9062937d2e2d055150a082d371bb8537fca63f0406830e5b37415124ced3e5c674764f6330c1a5ef217a8e806e755085b97a34655158c6fec2c8c0868680b51fdef8de89eaa1a30ea331fab49b54dbdcde5e74266d2808df8cde9664b0c170e00c8bab273eb263d38da49ca867a79ce73016407d5161561502133cb962a2c8de2854cb7050f7313ddd70abbfddfc385769e7d18187049a624b8b25938791459bb9f74e8a1f2a89f24cb48cd9c2c95a5ddb913c318d1d5249f2034bf81eeab6ed0a4b646e1cbe6b8b92af2efe3bd2aca658f60efd4b7ecb62dae9c5c39f24854e1f8aa4081c9afda931c623a39804140e396bd5a74cff80afcb066611f68f03ce5d98ed54c0cf4c0b73b3695ea5ee9869aaa5a90de1adfb04598bf2f08553772d2edf6cf986d9703e8ef62cc875671049e3ce71d7f421be213be6f90933bc732d07084658ef116613b2fccd7a3e786f45eb1331190b25e12160a19071eae419f0d5e55f600193baa26083c403804330c78e043907b3329f05a2c02535a0307342382bd6840afd427e75735655f01f4db8c0c16e0352ea23a598b203bd3a4e5b6a30e200a99902670e59bfd867984220b46b3c4ebf6ef110f0b7dd719c392bbded46667471ae77137256d12b9e73a1212cf440cb6f8345b8c31a93f162b3171e3028d4cfcd60b516c10c77b7cd76548a4a99d21e468322cebe51603899147bc70d4041e36f07e81b48701061acee7a6a5bf12d60dfe93f6a932ff6beee11ac5ebf18b02cbd0787ee4ac411ac37f569bc78529a75511aaac894a16bc6b890827f70ff126f62409802751e11f174868f6078caed5c340c96ddee47ac5cdb99907784a1054adfd0b4ea20cfdddcaca88bbd4ac4d6a690f8b1e8cff7855fe447a1fe75acb9b10c78995146b40e47d79dcc989ee70f82476d9216d10e339e98c4c322fdddedaa8f3afd53b0a37e1146cc016c9a2c26960259ea4e79d2ed27b8691ec229341181c09015ea4fe0f9b53b6090ebcca6d3ed58d1777d68fed37dd0ddd327a689d77bdcd274732ccd1aed0357c67e4c593671dee6eb634724d8069a4343512ecaa912f5923edf15f233d977e2ae8d4ce1d3dad0a19ec34c59b6a63e7c54d962b1e5d7752498dd6d8fd0a19b56c9d3947b8b3580db8473dae1913aa7884d00f74f5a5205e1f30760bf7e1db3373cfedf45f62db315dbdb5e78166c15278dde9bfbe770a325d7ecd781bedb0fd75a3beeb512408974496205f8ee5d752976b119f86a82c054d658e40dd86da5f2c720f98d53335d97b00fa5e6420b932a9749f4c7972b49b17efb016cea3c178c1ef88342fe9347da46d7f9fdbf98dadec062d68951fd7b88f4f3b92c5b0a2c751d5b3fa799fa57976f1e14a03613e36d08a6452874f00ce2baf0242734135df8222f3cccb41ad7746101a27ae95a3c2894b0b08381c7101fdd2b4a4b83497a855037d7015526842bf61317acfa59375ef5c7df12ccbca56aff3c795499c297564380c82b8b000ec75108be9544022577015e7fb565814d49d43cb62c52032b6f3fe49085f7901eb81f9cee6368f5f3fadc692244f663f35eeb650c8484316b9301dd26516c0d74f913819ade391c842911d57b456d5f37fd1055e6d9f5224d8ef818f87b8f806e87d8c77c07e229cb2dc445cbe6c9411b698becf71f7775e4682939cd81e4c494a8620fe74eada0ad65d20144d58ae6fa6e97f28b057984c2ac2a7ed9ab1bee255a1a3dae84c6bfe111a77c24739c2653931da270abf883e2f93de2b813255f1147a55b47e34cb85e4292f93199454f6fe83499c83cf78a3c0450f7afd7ddb007819c1a3477e84c2f24c0393ed9e8a405bc7fa852cf8c9939aff1d7a435ca637061ac2ef41938cb1a7e8a44b509aad0236e468519cec2f79ce7194718101ef1f63701670996eb2e21bf78d5e5153cd3de3f68a54c7fb3755d458f1e8db471c16f9694ed8478bf635640ecbfe62c92689c01c1d4e26de2227b28c90eeb5034a7c34f9e2c467ea638b01e1e2b9703f91b01f459a0486d8ffb1ccee65f4cf7c80440f17193016c662447243835a962bedc8e893379e8f935a1d995bded15269ca8eda121599b7291394826323d3525d7a35f06d41ffea650a06748fdb5d3d63aa6735b1212cf4ad8179a780d0d112e1ef8e3cd560d5107c2fd5a0c3b9a1eb28abbc545f30f2c6a129dd0425a6638b40aa93f5dec289f48b13d3473bfdcb819f0837d55c14fcb49da56759e42ae480c0eeeb8b5daa547cf44df4859dac56dd407f9ce8635cc7a15ebf93820f083e82feb98c1e41bad7095da1fca4f3c007dc7a766229313e593d2b41c07ad6154edd28bb8d15793f5f9ae8728f5beba2df85ab5bd267bc4450801f40273abec102afbeb0ef93dc388b3957c205a9e7f04395eb4f450022ee5366073a7f8aa81963a10de8d705e9443360ffd5f9692b86e3ef63ff53c3a2acf0d7684815a8c6aac9451ea1c322bf01d57055dfe7f43991ffac766af9b292007fce14af7fc98eb8f30692f09bf7cb2b9ed41f76864018e8a749d755cb54a4b44ca7912b73e5f9121377849e8ef71147497c335477dbe4c0f49b7a6a90459e773c2c259bde91e0e5e71fc7ff868d3bfd3146cce7b0f298ecfbecc4f79cc3f44abb64f8501fcb8163b432112fa70e753eea76433f251d870fbb07a069847e0b9f91ad836df75186414464d9521fa029dece55f6a67e903bdfe886909bcce418b5739a357c91bb8659c61c86a7e7b6241da9809eb92164757ac6d29ed0f3723e15a4405f7f1c20af7368b19387b8ed113ffa912091865cac29594bd8a14146737219ad817f42b9f555b218f908fe6fb3fa53f45c78bd3828191a263a680181bd37917302623212af469d83c68aac3b129b63c25dfbe53f60396859c1b17782154cf8707ffd01b60f44dc841c34183a0bdbee442698f03c8e23681b913e8263c54107889cbd125e34e1b02736117f375238e8b09504246f7fdf697acbdc4d90ccc9026146175033115060f689f6797eb9cd832a6b906b234775686539c47d954b0ce1664055ba5ca2e44bc134acf245325479d9cdbbefa4cea4f87d376079b7f300a4fe11bd58f097b1fe088cb32a0c1e6e21949f106363db5c9fce904e358d1c8aec11fdba788c7b69680901822aa5a4b21d6278e0c5214eeabadf7906b116bfef97075ae5d6e03297b1a8631fd2a1c0684b05e0a43d2d80d773c75b8afcafcd89e149b4db80e6abd14acc400f8d61be6f188e248ae730d47d7e44715a832344d214c1bbeac4b4682a29ee6e8c4bfa5043bccefe0b86b847b7b8cb89c20e4779dd4f1fed3fc066acd7108697b401eb6c911e3909db60cb39d21059182ff196bcef6eda796e8598c4bef612988629d363be82c91813900ab8585a5fd9a13db933e289b8a5cbfc8cbc14e1c39e61b0f61b312f38f1e205d6f296b6769fe91bfd67f123218431c28de2721c89986c7443a8a5aa698e0804c148049ff0536a197a14330621e65acb7f9ef97a8451a49d87ffa0083f1c135fe928cd7a1d056f5317ee946ce0bfdc3ad50ae583d5849d7fd52a5d8abdb4dca5f8bf6ae28e2bbdc2d74241357b95344077450e879be475a11ff044fc16816010c978169caec507b81c9308032bfc269e2808ca83eda07e5cb0815d57006463418b216f5a7ce566d0d9423170731b295474f960a2b9557f873ab36e956e2cc9da0d510e65b91f4a4e9e303294157cce00035b68f75faab6d0c3027e3773c4e12dde15f57fe49a8cd1a4ab5bac0939f8ff38f3cf8bb0251bdd0e8b8352bfa9f2424e46e0d3b90340f653d4dedf08fe83f4d90eb5a7b04a019cb8b71c7df7956511e9946c4f1cf3b9864707dcfcfd665b9c0f71d69a426141d5ca8b7ee65b021dda9615f5c4dc8daf8e1d00cc557ef8b6c6401efc24289ad6d0913ef75037e10bcfa2f0ad8e753045cd5394fb29462dcf6e8dfcce852d0d46d1234af392282eb5f2e840a402c6810ced2a96860fcea7a96ff940d6a838f82eb83562126dface12f6bb6eda60da347413aed10f1ae36b566d16b293a884087aed12b0856ddb040500ab3d993da52755015bbb73a7d8d86d5ba12e372317da63888213e6dacc2fdced148eeb5c11764a76ecb0251be8af263f593b0545b6af502804cf2040ba7097211f3da812621d8821aa2c1ef81055745c47fba954c36d956fc5a229473f56db36fc046d8b1490656feb89195292770bb6f1cfcb0baa3cc1bbc9b83f871d790e6e31766d0df58548161342040185e006b40740d023a52588817ff24d53c7d7c58b16e08d9bcf19802f18a2c830343481020e5137f114f74085b1a2bc4f1734b72c43ce2e014e6341886dbdd0cacd42e2f5a95136b7b7b9077dc1713b6acb5d9c26eb62a29fcc2529b8598c8d7710d1d5651a29abc99eab6e1fcc079590ab6806e6a0d161c43c75358b60d0eb883910a08ad452fb55096e04260e291c94da95ecd44076ad2ba4c49c73d31c15b1b29fc8623b22ab14488831ee409714c8e3c0b2b97e171089daad55ca52c479248741f48063b3cf83b114f428a35fce5e0a42c116f6da39173826cd5444925d86c51bc74bcdb420bfece188ec809a46e33f6e68660237ef228b2afd43759770620309478f102d302f4fe4cec008ed9f1dd64113a66f1d168dddbfec37bcde539dcdab071768d84112786f40d2a46cd3bab997249084547b907f1072c3cf8d300b686bc9fe3a6531993a56ca107cf96d11368f0ef5128cdeb90a293cb16c805719c0eeaf01047b9be3e99c80b6844a16d0a706c19868e804d4bf3ee17b75caa875c179d0e042e3c0407f5d3f1bfda0582704fc87ef3ab8779ed12b397608242eae400dd265ac3cb7b7e716df25c203188553b031e56e4eae24f0ad53050d1167633ffb057470cde69abe9c3680485a71855199eb0e613b1025dc9c3961dc1649931e1c578d95de754c88268fc9e21de503fb73f8b65e8ce36fbee21fbe5914467753f798e465d8ae16e19fb117b80654c1c057009cc05748112df4b40cba6bcdaad7d7d1435887dd9d10eba1a124b5ee481b0eb46b191b3e5c740014678855d744126905e0b316afa06a09da4d49711010cf5c11c9a09c80b00e0bb2a610580ab08ac79ccecb5be45ad3a297bef7f28f1981bee0491544f9725ae707cb4eee8b1ca78dca6bffe48df19dd2b6fd9246214389a6ae63cfd8bccc4cc0b09457e7afe1e6404e1c99ed96041658a64d48c4d5454d97794b91e0da0e9d12919ce139f9b0de51018152e47b5125ef46fe1eb75928b16a405f1fca621253aaeba62f4df4c2377c55a6f8a2a82e7e60850d6e7580b717b9c47b52ea7643bf9b038ca61cf932e458e3f35efb7888ddfa5b9fdb276518e541c85291a2c7e77d8192ed622f74af66acbef2368013ade882d104e1523b0cb403ac1a1d4737a5d53957958da8aa68df16f3b4ae8d2b3d219edcdf79453caf7e5338d7e31a068b208ff702352995cfaf1a03e5e85322a2d423fda665e4933cd05262afe259eef9161f6256543f503b90b5085d83921e3af904926aa4abd00e513ff8e0669d6c870f8644880aef0ae049eb731a49ab6731e31b8b2a3aff43e0a35d03dd739ebecafdc976083f41621229a24fa958b1d66bf97b5ee35d30882b75fad8a7eb9d3d0e8dd1998dbe0d59a5288600d9479a1a117e4cc5f2dba1827729dc5d57a4243670dcb6a80974ab7908b6e94d19ac0decd70623b6f9f27ca8e932a3a94c4a49503b5e0ddf938e4bb31a57018c3d4a67a1670b3a429902c8f80c93e3139adecf43fb1f464083866f2fd84a0318c5f3360d84be58e94a5dd38291b9551378e06119378b722f9b16bf4e2654344dd2fbfac4cd448ba6b6cae9923d50c8e94b02055d77593a603fac966f9de21df62841a6acd51b721a581309e1568781abcee4e48220c295386dba596b2a8ad42a3f3ae3612e35d5240e4ce38803907243eaabfb59e171ec13c72ba9da5381bb2cfef481d14b3acb3ae6b19dfc0b9b281b3b494d844a40c34da0073a51c0dccc0117afea20fa82f8ffb3563540254755e1ace0b170b1af55c17cadb73a31351062d22f1938dd4aa8335ab875dfde012240368a68091c0dd493bc675246470cc289052b0ce5eb67e7c9ca82555c4475e3d0163d4642b5c52a8a39e32efa76bdb56a7158e308273a3f3c0006e017e043bde2ac8130a0dbb6c841372e55c3fabd70611070a5eea2ef1f7ec0d1f1c976a5e195812c08b2304f1c746f2a57044e86c22f757f0d0849a47fce182873e52ff8e063ed77d2671993364518343113549f0dc112559393fc771f925f5d9473c71ed1be6094cb476698d4a443006b681f70d1317bc8e95f0416fb32f893b716285dd1c514cac01e447c392889bb860cca9a74794923279f0169a5051113092da76ce001fd7f0658421da1f032eb6eae0b5274a8a5a586aa006f2168dd11f9d87ce776fbf5a9661f5031b81dbdd3a4f495cb97016223f89291ad4f88f1f5d2e0488e28a555ebc15240d8a75e935089355dd9cc6978ae691631d4f0ea8be7d1cc0190818b379aa67bb327fd34ad7fc94c1ffd8e339fcf39b44978cac888bcb8260044eb4a2965c928c58682de192e982ff6812e5c91d4904e648f202774136f02e57bec56181c2a0a01574617473e65903feb5c6a7e1446ced6480a8c1695a311ce6ab6017d7209e6494ae6c4fed86f1875642eaa133dd21d1924bd860f9c62bee730febb285fea9dcaaaa62ef2c1096405989663b4dfd3b8ce5f5251d37946dfd49789f2f8f5b44d4eff2dfe424f004a8ed7ce4100a45d9b6070b91ca1401e5c2b373a6c91cf004fa980dcec4e252cbca9610c3f714c6cb19d7b09e9d70af29fa55c7d42d4f85de9897b403bb4e51c965b704920752ed3116a404f317f4928cca879b392e7f524b7b6196de80aacdcbd6c5ecbc82c5084e97669966ea7a279934e5973075ed1df50f4177d2f47f55b5be10fb696b491dc393eec26413b41ace59799dded04ccc53b98e2bf574d2e4e08a108dff52c95bb61bf71d1b472b34e88d977ea90e19e4b297777853f41aae95143e399d2923297adf8f29d9c65626e9de5608f151db8b6186e922803e5d2f1311c01582d38b5cfd970d2ef086f9a7b8f8b7766a8cf8c6477dc6bb4cdc9d2f0febe59b7e39e7fc9278cc3e0d4110e25d26a72ea5a0dd41875394aec015128e4a947a3bb33acd641c90d5958913a69d4dbe7345d6274f9ae93d2b9937a47fb572dbc4bdb1778c102da2d16aca109a0f85ca27cf925f2d1325f54ea5db82168d3a2ce46747b0c52ff6f1cfbd84fd0ce716fe8499ee3fef4e5c7a0def9ba88d335c37a177c3541561e5f4c6603bd8147d178edc86c5953fea3d30b870332baa49c610c1c02a358f5d4313cb55c7811e2f24887d8593c216290d8c1843de8f153c83badddee6b16fdbd5cea2bd3091def818d4e377698fc4c88ff180a3dece60d5da075024fd3f6c709c00f4f1deaa513b8e5cd665c01f3593a294fcbcf185906a348125b263729eddfa518f1f502d3e46625216993d1e885c4a4008c08bdb4d9f604cf6dee0fda1357ccbbf9beaf65422fb2a57d904609ca30fe272edffcee7e671e49cca4f35635a40929757e50ba127afd2bdd3f79909e8dbee8472e8810d357002ceb204a53ad837d790ca662efa86793427068449c947c64f9bf6e3b3f62a3ec7485072061e071f2e6116043a5035bc7227fd36dafff247ce44c2f143bd9fe98d5373ffa9253c3f2384bcd1edcbdc69a7b65d863c547ffdf0c7e662769aa89c56e298cbecea85a0dad9a9abacc0579a3c0905e5982688bda8bf58eea0c24330da5fb97dedc8d8e33e27e6e151c335f7803e42b69ec0e290d14d8c918edd58511dfbc8efa54f6b616b1dd344d7481549391454ceeb34b82be72ca0fa01700f0c3d18697a8d5b360e9727b13e5553285e803ff74918b6474cfde6f81bc78c1cdaaf106dd00bd1a9ead7356171f866440ebd12d6be7646a397f401ff06900f88f14142ff773aa3fb5e6cfc81fe906392c1606b20cd26c9489b2d8b6b57c8e3043f146cfd737870c73514aa0908874cd7066a9919dbcdd8154f4616e0a1249f359e8ba17d0c1670052340abe3ff03bc827ce1a7b9e40f8c39fc356c3ef974ea1746cc3ef3d5b84a7e6c4c6652f44200b0bb503d95e586f5e1e891c90862592919df22a55cdd562150dc3b71caebf1fb77c68c70582ec30b10efe649676b8dbd06741900ba394c88ce9bdd0d5931084939467408c0f4f3e503e0bef010f574f598ae04df66ecaa2c68be3d6da7359a712d88d4264c13159118016d20410c3b7024423b47ae4a9ae525f7140ba7c40b6375b8f1440e3465a7237244147208c64773c0a49b6f41974f0b593ab547e32dd495a28c39740774182c19721e82647c8bc85fc352c4682014bf22687e68543e94d0e7e4aadd873f97b3807526308bb7d710d39e1cbba93a9028c942db0fff370b59794dd04e478adf0980890ec259589875512ab15ab7dd65ec049073234de87b38808bf995f2108261d6ce9bc89496293c553baf7f79312579994d34a3147034819d21133e026bb851d3dd5d889325539bdb4afee8e2fe86e8f2c8909064fcb6dcc32f6c2e7b42aa9a28c11995b7eda6bf27c458e75a6786e6d6a04878553a8584e3e90174d2bd5057b7dbc99776c1c451772c5603719ab1a8cb61ae67296890ea35fd3ff03f66050e312c00f0af72e14f2a3e3e2a7d962cbf329823ef32213bf449456d71f3cb6808b7ccf369f48183a1bd72a76f01c40c93b035d0d3347e6dc3c4ce913cd4b9170648c1438a8ed70b4e4a1b7d029d42193434ae9fd3e27be5c0a1cd3227f3c2f91094b0441e4f8df8ca91de3835311c790e4ee8c13d9a41678ebe9f433901ce5f2b80903999a44703c8716e8bfbc01058aca1567d39a930a47cd4787207cbf465d665695c1f9101acfd191c1a10f4541515f305b6bcf31c36c105dc418660fb423dc9bab62a7d8b855b51d212ccca5243b1ca87732a39decec4764468389f4d2bfbaa31968b2c43cb3c5ccfd5378b9c4baa1030e4a9fff6fa12a77320cf0b1d85053f07291de8babc2b08735542287583ac69b5bc0eee238babdfcec71388e3700faa7fa72839f91abf5a63f03c099865d4bce203d50ab6634d16f232b41658464cea9b18ad18c8c0ad793a9d4b2ebbfdf3e63148f988d9626c6f6df6da9dc90bf8c567bcd3487c93b03823ea74e973a9177c95264f7e860482263566d67b6561b30d818caaae3d85918a567b781e144e5fc09f35685ef708f8a2f6e77670a805087d1e40361687d7921b17f8871dba1c290461e5aaa80649b67aec367aec6439482da21f1e8bd502fafb18331739e96e31fbd206715586be4834d25ccbfcc45f77dfb9f744da1e346fe3994a888b12f67a599dc56ab319628470f6023dbf5dbd59d37685e26b2a3e1b73822085ef7edd8b1142a50e058ff1aafa66ff893cd6ccabe4cc0d8c766ab90ff8f9ec9d782e305f87d171a098584312614a4ff8507275cf7504a958b06059838c1fb674cc36efaf76be708071405fb3b4bf5a06de50c021bde47a3beb95a29e92fd91abc451b95a413f6eae76f9ae0c73b88250aae668fbdbda03fc620d875dca68b8b650583c6296f0cac9d3dc8a5c52ee758136d438efbc14d7e422fd60e06ccc6f4ad6b17dcb89441dcf92ab03fb25e4831b9f0b2717bf03b70391fbb9c6fc484de813154a3286a17b179f56a540b186874eab191629768068541c4c60868915e930477c8ae2dad44d8e13069161b6bdb68a84442e0cfc8e6cc700daa9e41340a558181d484ad5771eda2c9bad19fff0a32947cb72845383a1165236067b0754bd68252b02f7c7392e6c7ead4c548125851eb1a75e9d87e556129c65fb317c2465030213620490675ff7b85f289176006a32a641da617162973e8fbdaf1258b8fe9d567610207c906d53935d9726c35d4f35869f1df3c065ae50d7994a9de13d7b2ecf7d46ae78b464b3d181222814838a2946df5faaeb3e761da04da7d913b2ecdbd0369f3a52a1ac03561c79aa511e62873b3b87eb8cb6a6dac425344ddd206b38154a3511f51e9135196b10b15fa4047fdc9434d4766115b8acb334693557b99a5156100b100fb801c763432919bf94421f341c9fe8074d879064d67081abafe4d918a3b19a017bed9db98193d0e0f95d0da164e78d611251867d17118c0831fb0e83876c0fb7b2b3a8e24e7df56f60d40846496f8a3bf8383e9784b1ae64516408b19e034331321e1ffccccc79ba0e621df4351bd5b716d63be6a271774d3338d62a99680ee69a5797ec3635c2de5e0139a9e7414c00b32d2f59e189b76707feceb8d01828e1a102b4c123e9d0b97c8bac7c6a2cf7041415f33d39700f9213a1ad4832ce8859fed8e2c688b8f1764645efa388deed0c59f59f9e86277c8d7779a8b617e65c073928d8a84620cbd00ea5c627376788ff06d7a6f6362474a73b5421e9a845b514ae0428ba166824cc35f11f6faf8e9e24393170e0cc1ef9f370522fc7153a5211df740635fb819c2a9359ef392106ace485a27cb1d2ea2026ad7fca8035737893e93806c4b57a6f86cb8cc1bae1e07aa6b15c0547c62e3d5438d3ffb778ff7a385730f209d3331de44e8f8ba6d22dafc405b998878c3b3a7b3926155afb299b42b11fa216b1a0066cffdc63db083ade4703896238e111887a3d72bea53dc165ead0138d053576776716015862487f635dc8557bb9d16b80385775bda104911893b2e9d6ea202a28928ce86f5d612bff3142989f30122ebcaf7e03369c78abb5268134ded1c0a9ee5b819cd3bd653459f1556566f75de21aec0c6f1ea64de780883e881321a8acb842818d7d47fd784aa59ac34741f893cb2c5d2aa898b1d34b22df306e717f8f000e4c02fe0b2834fdd6897d6b9d70ec4c77044a983d8630fdd6ae623477bd9175932b3c9eb33bfff5d89842ddfd0b47f483639202049dab67be2f2d4f625fadb40caa7438520cca3de4e13e190b9101d913c90025e44fd0c69f42e7388eecfa4b70e5b05a0cc00b4387084e7ceafa2057dc00b00ebd15e1e4a46a9cad92e26cd308bc791d167086d7a8a38486c5a825ae4be2220f67702c7b7b1106722727815d7d817cb59627c3af825a3cca362cb633f707daecbf523ce0b7470c3cffc87c7777167631185ddeb3b11132316253822ac3a92f2fce2db5fddc300cc313f0782c30e90fb0ac5dc8669c04270a4225df80bf54f3e477dd071ea37591c311036a08975b59c6124cb6e4ab0f32ea21fcb0fd09351eb6e4379838a160781a5f1be93b1256cdfa3ee1a334855a91d867b4fbeb8608413f1631491bf808ca2de321812f885a56103c81285a4612231f1b7d0c1c71a00ad3dad15e24bd9192e1ca051dfc732a79ec718b434c3b4924a19c8ae93bcb16698f25dd0ba6c41d56092dd238927b4ee425e0f8e2d07bc1db62e70c7453002da54d10f72b6a8bd3e1b6e21edc66c214dd9448b13424ced0b6d5a7f1f44ff325a68e7192b6b5db85b1788c3da41c70629aa9141a4774d79ba21ee830e90b43f631a12d385165eed878020373b658d2e9f38e1baea2d310cd295f4acba0966868e96c6da21cf390c5cf09feedf1d762dc1416b14cdf4eb45d752a1377a0946c5acc8e3d4ba27ec2d0d97e3b0f3f58240392e5e48c503dd245a8e08104e9d964067cbb110a626d154cd229eab1b996389e2a27777a50bd031120c478463c52aaacebe4e7e491a8c95570a332b7c93a93606bcdc1e5892cb0cab6ecd7d19f24210188b92991969fbfb5720fcfbb3334b901a2d92f75f41a8691600b9e220b8afce5811fc4841cb3551f9ea7af46887c846fc9bb2d90859f2507d8223e74bd8920c18d431ffd134dc36bc8b506af3516c7f21a2e66d654709c900074d615d2c48eed7776e9d6a693cdee8cbd4b18eb2d9366ad485c85d13911233aad6310d9d5361be3c0c474d2a65ad3b65541b2ab276867342c15038a7810b45c979c34ea53ff0507076815ba2fa31d00edb6abd9d2a4ea3778938586c9d64be3c75810cbe2615a8e2f1ef662967720c7bee48e69c47a5e6949551a7bef81a6938917700343719e932906e468cd5cfdb06d9672000cad750cbfec9b3a60c5055b7dbbe5ed83d7b0023e0efb012dc4222c63b750689edf2743489a23bf76100b4e8c3600ee0c30011905b044d2c41fd3c0d92af1e0665810d5e89065e4fcfc26f983c0c593c0c5fb4e1f7ad4989d9216235b9c7e02bbfa079208891f1b644f857c51a46697e1ef263e97328acce386f1bb1610e5d83a57e28126b680d9b0ea75ea6509fa56aacaaa5ba3057075a10016e713fb403d40fc6026aec90098bfe64dd1f08f10bc4a3833b6423a38b033678d3b56d60003ec8465356f0bbf753ac4a2b61cb617404dcbfd40a264722d8beba56300b5a220c08e4fdcaa200527c8484cb36b2633bc96d0bfb55f582d8a7954af66c21b96d6dbfaa5c30fbabfa8244b48839abd956687692af6d0dafd95410af75a615208de04e04c6708fa827d0c0cc890991306013a362e5b49cb9180a927d37b8097401d11884eaa6095d02aa596433be618151df3e44c3dac9be50f04e602127b06571972750ad43efb31a49eae4596f827291f7808bceb7f580a55d340900fc43d724289c0b62673705fb51c5de7a6d2a359701606f992c1bcf335af405d6a458e40f5b8b9eb8cace86c6fd92dcc924320d3ac99e25ed935d644507d8aec2ef9b692dc9ddc6b37494c39251ac7a6a0eb7d0a2953a76bb0ab4ec022ffcc916ae35d160abf68d653f7bcddac524e8c79cf90ee5a5965a63de0fa5c4c4b54759a3e8f650840a4b11516c478809a3303b4e8171ef516675f8d7b1a3d856d07f2e2a86e17eca225502b8c184f5a2111be1a73f5d19c646e4d392a33089f0475e83790018e7f370dc91ebbac2ed67020952b4f3c727a8b637a448fbdf8688ef723212016dbd0e48e9fe16401ab117b5534b875ddc3bbaa80d84a3f500dcc37452ca5d0354341f7bf970d071fb69ca041d4204aed7dd0ca1220e8fc428088eb7ec214b5cd8a7585301fe2d816d512b89397bd4a0a131ef67e20849c6be5fe947ddca6c0fdd182aba0c8738cd102bd5ccdfc3b4e4dc7aa51324e8f9d4ba73dde344762c01097697ce3f9aac600f278d86f1779d5b89979258c938d071504ad6c97501fddd4d2a935813faf2abdda35ce398e008ec1f17b5c70c74d6ee7cf31b7858a5ee1c33b1a3d98605c987953322694f1acf8ec13a20ea410f8e19db5c01faae812e16366bf053c2c2a775c20486712d95b194290b20153d65ed3328ea49a954512722d157ec5007b28d5518a703f47da74a365ccb4a633465c01bf82ed01109b946a57e8dcb1b0bae28e76262ac5c9f373fd7e5cf032e2fa6833484ef0da5e6be8f87c83c40019ed445d7ceb55d3ba4cfa256414e791572944708a1af26c804e64fbbb1e25b2e4758ecd375b0c95a24affe69b892ab53ffa7acb0708900cb7c16f7a185e4b80fadbb758cf6bd4028f4949d15893d069b157b60588ced72ec948b57d961a85ea70c0f346778b042d766d78c193d2907e65b76a06d1dcde4d681d7e2028b6ff4261d4e55089f8288dff9fa600aa918e6a8c03723f30e965df014033dc5efe2119a1206478998526d235f2f9d49bee240b3b68dc15427c470f9eae75d83b3897839829c3b6dd4918f8c3e0e2353b4366933bb3d553bbbc5060e7903a600bce1e20dff77c5d5aa224db7a404229764c07171407e0812b1866243a24757c32071cfc02773c312323121204f0b8763d8e1787503bd1da4e5693f16a202e0030dadd7ba2ed7c571a6c331375aebe1b11caf45ffced468c8131b2ba3315dbb5b0e46034f408fd2cfaf305174909efb0a92f8d575a7af10aa59f71e75d45764ea58ff782055539c3f747152f6d69c09e0aa2ee374523654d94f6d6fe3d42343eea491464ac8b2b025109931059c5a9164f22a6c7e6ce65c81047cbe5c5f7db2b5210fc1f9ba81a2975279a80e4e34c5b18fe882d98973e60f446509cb2a58ef0ed6059334957b20b0b9bb005d8dfe38d85880ce8596ec7a05cdd5ae251516b1152cfa58dc335cd3723f652d775e23e1613cd14b5efae95983298aa8348dafce560584495265482773c138dc5f654e02da390fba815ee92aca3c43f5c38d3c4e54f51699df8d3ba90d94f146077a46af90679582a2f6c58b6b84beacdd0cc59db80098a0e90636a7034f95e4402c4989ede7e27069be58b20ec939d4f814c7efc1d12e8de5428764d4ac150b8343de79ee7ecc6c1e46d7663f33bfaad11e4a0aa981202ee9e8c089877acfeb7edd076b8693553babbddff76940b2b76ea984dcf3bccd9770ea674259a46da63c54334ef8c73da20b72cdf9094126e77be961b00a6e8f3fa2508e49da0d108bdc49fc4b6fd819181a37b63f4ab48f9a4bb34228176bdf865aeb7eabd44ebdaa7d94dcab19c2ea5249b8f44a4f8a42ee9dfbb518ed3db744a506a24a50d7e29b57b422ce615c9da2e0f59f811923f79ac6eb5d82661f15a5b6a990b62d832725a88110bd73aad498898912fb06b4695e0ac88e4c9ae3d44ef25af54209fa8542f0bcdca705684279376329eae5ab76f57d6375870310869fee86d8944900a28db3cb3815773484d31ca6157b4661b42db2e4f18e000d074cef340c29fa9d880a70d7d101b00007d461751863a86b2678c8837e94e7c8875e05bd02eeae12fbcb3dd9e62888e11d55f2cf39e71ce7d621aca6170cd0d87dd118d646681c9a6156782bc7449efee4309ad50c11995c46d756cd5a499e93c09a988f56052eb34bb437930ad8e0f0ff09ebbd2cf84dde3a5f0eba3c7d30e351fe9bf356772c81730e4c8d30bf123b7320e2e234a47e4d57342185fb147f3e98eff24ac2bd1e35734ccf8090a80e5fa61d7d82499640bcb54e4bbe9bec15e89921b946a3101bb854cca8481ec16c9e3a4f4020780eda1da0d6cc8732fbe0ceb706e90b4c9304ee896dd45dd9f5eb6b3f2e6ade494c22f91a523e0e2e0d2da51f604e1a7e14c309f55e1c7e8ceb2037c0df1050e77b830d2e49ecff09974d3e931af9f88537047aeb7941f12392f95c2a834558bd446cf80db734397cf18c709ab1c993e866748048dea6184bcf2d07489b16ead6e490541ba6a57676d3d4b12182ca6392acd1c8c885b3a0cf61a0826a720b49f8b023ddc69e8d24377830a65ceb594d247b6d200ce0ce3e223cf0803505c320991f645a500064ac8c5fa79ecc30b387ae0625f0a569fddcc706e6bef756414e34c5cf5169eb0451f16c7cef59e8fc0b3bb043f1f4f91e8293ae6f3f006b4e097e4cf093e6040325a36ebe8e50ddb468505bf2ab3a2aa129d6426c4fd2ec9e1b3c771fc4922abc7417ff2b5cc98d052d3ee18b683c1505ef92950022426039263bbeb1e5034b8863783df13eb1d82c354321ae7d43232c48430021a91b442634967a7fe6617cbd9e329f1ec35f168047c95e04108b01e4ec473aed5f3478819f65998ee5bc94fd6dac3dde68e59ff5af296f04b24a342107d04ef51fd47de3c7f9173ba233d207e7e783b07a512cc5dcb1d42498d766abb08c029e7d6a13a7a947d7cee9e8d3bf31e2f2e2a1517c16d8574119abaf8437b65f241f4c0dcd7ead501aeb56cf44d6a415b527d776498ecb1397d31ded3f879770ebac4ed477f1cddb67ea520b979ae14c1e9c6a842f5e4e23d07c03cc81255aaed37543ab16c049f0ec30b3214f3339db208d7f25aa516710796087336fe3d03b103083e2d9c14525a9881221b1ad33ed74fc07e6e6ac83b706935c8645e404a9ddbaf9d5c8c7bfd832f83b50b9e85a5746582155ca5e56915dcd1c0b4f54d8c714d5f48d6561681b4dafcdc54afa425b0f0ddc46b29148c789f2e7ef9bd00b4f4d91518133058d0f039055b4118df5dc603daa869fa1c9cee269f401505ee6d832bb3b1de777839cc53d04ae7a734bc570d899b652ee8256c2be8212557e976d03a0ebbea63a0bf44ed5513a4be6044a4a9915875b2752c8ef31638e8a6b2798afa3c605d1002493d33e29d3aa0feb9749fc472e0fcf334243f8fe950e26802d49d6d82d0b3fdb12a16b227dfe624a1c8999e7c408b02b69f184b10912832c6f2f2b123837ee2d79a6c0eb2f314a9b42ac8116aa392e029097c0a44ee4fac461c538f021f92679500f60c354cfd093648b5f1b459a78927acc77bc388f01ae2d3cf2070c686cf85cea07b91f28c2e5b5009e99d8eacb9944864c8928294f0011eedcce5f06bf4cca85b03bf5c1c608f80f0569afac476688082561b3cc5ff5a2bd667d8dde78cc1b9398fd5f70560283fab5277760753d29e14cd2642fb0f2e01da0811804bc577156153d2806b36cd95ac7070523576b9e78f383e79bc2b65f5ccac5f2e43e57abf576cff15ebbe6533862933fea86e1f81e3a8aeaec1c371f20ef56dfa04ef55f41aa6253d2b53818eaefad158ed196b41051a1dcd430c62e765cc9d33aa7e6741694e745bf807bf1315852a681e423f25259a735dd279e8616812b370e5c4ac911fb4b23a73c5ff7c1fec2f0c100c3dd12dcbcd5545b491cf470e0d4609e3f970c4bf4edef66d102ba62aaee505e4ef22ae3c9194c9204540d59cec1bfa2e26068657eb7830228229c18b0fe582efddc31b079aa07563e1eda92891746262eb81868ac318fd72e39a53141114c27d80d0915d35fb16bafd6173539d7bc46d5735f55defeb651fc2a7187cb533cba17f181d370cbc9ce94ed4713a6194661e44acca7e124f5161bdb4f082d1780b3e9143ebd29df79428828548ad2e83a8709e399bf991918bf6a4a0733ff6099663b90fb2e35ec5f6ba1fc4062f76ee9d41b0795b44da4ae52c03c0801b40d94b7b7ac37d80209b0f6c2d22b23865bfa6a2d4cf41b0ce7bf433446ee91c15f445680e617d1e2874d969bac6a59198bb24ce3a269193f8f446a3c49f8d7b80717cf4957f0a59156870b1cfdf70320823ddf64f3f1a463e8c83706314c94b43e5453d0c66d7c2bd6c40459769ce5cb38d19bc659d19f96e150af9c3592f46687af7679fccf207c5bfa0ae2855c3a47ff1df78cc904f40ad0198b39ddbfb70d07b439d4f215ac8d87104673d480a7c202f50f385676ef93c7b84de0fc480606a671b0b50d772bdb3f3ac71f4110898adf78a0b1829d3894140f11414319c8b391674eb09e03b197bd4b5ce191d576bdd6ca7965fa0368bab2c7f70c29813ac622ebadbb7ade05f51ab2ea369a0c115e9014e84892bbb51afe2d522c716c09e46040c59ee9f99c2e1921abbbc78696e2a85d2425a88b995265743d1b8803531d12df259ac208621190de591a818767d1db9ccea6274a1dddd7cb069463a8b4f6c9fdeb2977dd55d8fe8c4aad32e3b56c4deba46c8b6f6b05eed44b784c95e1e2edd9d7b812d5b9a5cc6663f73cabe83bc013a97b0ce958d7b4f507d422596c726c653bc831f263062a7fd6eddfbe0a866e3a339982d37ea3eb415b99a3099a6575b580df8b74854e259f46d55e9be55bfc2fb31f607dd23eced07a7582497c0e47ab911327793808ac60585a815d64b432459fc02668ddf964454afba5eb8b8d7c949304353adcd39410db2ffa6947b907a0e049b0d857f6f447f0630bc5be23c5469594a8d48f9f79688e58d545d8532bfd50af71fc0d91cead7f025fee8a7a1c7f58233327b8bbae28f08d2766dbaecd34b02a9e972da8e0187f6e4348c9134bbadb4e5e2e40180f4adcbbc91493585b16435ce13b917534276e4f404e8245748d63295f7236f870a5284b2cade594d55803e865269b548d69b2e3104b2629438375872be969e8be75f6788cc9147133290623a6f69983b36a980d897d84e5bcfff7bb47925a855535a4be36953b06c111a2eb4e9dfc01bc4f14e896fb3b11fdca08e6e36a162183e9d81ee81d9e468ae12720cbe720ddd2d105a51c8407584f480fb5585fffad76be13c658513a9c87dbf89dba0a91d35bdfd233f1ce4184c542bbdaa16098de7262815d1e4998d551fe1108140fb60678da4e17386601dd5f53d39640ec21ff3ecc766250b202b9e272f3e0695056a0258225f7ba02b5fc648fefc275d69642ced36bb948dbf2c205f3a7fb7515f0fee1722ea1a8195a4e0d908d962f7534bf162e441d90296f28f0e6d85e459aeb74081baad9a1c5b657bae5932a845e8a873451030f76f53a814c35625b83dec04874e53f3f2d8421b6d7b763a6224536908aeb4061390d3c534bc5c7b2b2e0aec3c5be3f175e68a215ec4060d926b4dd31a320a4c4b1278410faacd8757a269b88592d231027dbc40db0349f2cae7ab3cf2a246483028ec1e2a8f0b6a01f92ff82ae8a7fd058a8afa5ae2536663af235df902fb94d0431af2ef9c947002e9b059d6112b965005f73165908643b808233b269d78a049f49bb8589c9c49d8ae8f3af2d59f6b57b496dfb638025602ba31b1877a395c1fd8765900afc4a6bb60e2992e216f511bd621d8c1a0742ac6bf091ab7eb302a6cd6b552a05199128fcbf045a4dddce726284815d77b3f43d1f9984fd9c7c5bfbc655a9d7ddae1aac2afa7f0ae2b72620648ce68d9564b311d3c067ac633118a082932d3781b9563c525cb381de2e89d87503ed9e1b993cd9845be3dc9e4dc0cb898075f3005570a191c3746b20d3b56268e6b0832b8c29848ee2b875239ed07a5d3baa7df0ed33a3ba9cc0003240765388b940654347dcaec30257dac18cd0ca66ae825e740193131425154484d2761c1cfc2e2fd2f188046524a29b80443e5fd913b922308723337537f2c40c3559c6be2245b0b6956aa60b2ba404e6ab241add30685e63f504995f88a75aa5b41cd98313b03ef52d039ef8ffdc8160770b1327478fbb39eabe8dd130d4120c4192fcbe19b94db741c0ede9d8c2d69b60a54c8a4ada51848fc74bed7bcdda01ad932fae5bbab1f2ebc6dd5bc677b354d38c47f13d7b31a68b95f30c17a69a4a92afe890a0cc48f9bcd1b78b3e5ee2693868c9af9037e74bc38f43d77b991ca07de8049acb018c0cd0e986596aa7433914098819295e86145a2ccf9a6a2f4ff6d52fbf709de79150041c0e2d35b4088d5392b46d08ff182661cb9feb8ae8bfe022f13678dd3790d17b1e427ecd6a61ebd329b6f698cf7e4e6275e50d876462fceaba3af97b02a207861ebeb7423232681e8993769253001c7b8f3fc5de941c3798ae2a3f7c641ff22dd6487ecb280adb2b68e1e14424088ea54c43dfc04dc3c983a0ce9c9e279d98466b58df6b46a5ed28e70deb664421b13f8d682f20274d5c15cea8f8c6d17994133ad69186c69c555d7e4de8ac838b987f35562b99474099c023219f30ccc988dd3a9f68260ffb8567cca5dfe0f86372b89f03ff604a3836a5131049c59b567c8a52255944a9b0a3458206f009f201e64f0b6171510fcbc12c1597d337f210b0ab69228f53dc092c58a9cf563c701e00f3d08690bd694fc4fff5d5a27b71fd60d1e6029e9efa22fea2490a730031c18ac8dc0a3eaca6eb4cc8101d43af286438f2bb91fa2ee985ac655d34459d8e814c0794794a86e82f51df548407bd152d0a8a9003463992ea4a6e046870bf9351f16302fc57b691ff024423390338e9010a36c3f76173ae60dcd5eda3768b1b8e4f6dda953aeedec7fad1c9a0f2d732a674378133dc13849a20a17cb36317e16806ff55786707490936a33dfde91c012adc43aa1b76d11bef38ad549f9b03929d636ce5698629ca66d0d441e5196634022002dec6074cc2fa98afd0c8831d4142c2ce5d6befaa2c458aa0b059e94fc256c90858932f9c204ef8f8a1cd19862e14beed24f2f132d0c68d762055846fafb7301e62193ad6081e8c088f66ded63beb123c57b2368872b0de23ac87deedace8a7a8dd6342dd3874042d83126963500dccbed12fbeb0000dabae99c817b3e9a30bb7ac005ec111d86acd2a416456b546f087a4d66a2d30e9a76d18a85ee40333cbbaa1d3a2a2ff7808b52b89ef4f1a55456eeaf1468481fe0b78825508cc42ea4de4961e6f604a9df92f7f57039fb2d29d70086cfb2edd5115355e5815756c32845491c82d7b8bcb2fbd2ab2b548a5cdff806826df8285a4724b9f88a1ef7e8ff8da365c6a8bf29022712d7b907848fddda0a7f8607338749378bc33c50801035827696d76c49b8a3d6b15a1151f9562dd0347fc1f32e0d8e1a17d60591e43b40348e8fbd3010380a446fccc72348dd1d535766a63019a0059743a3673bdf58a4c54f2dbd23fc7dd032774fb7ae805120221057803c99e0c4a024da19cfa6b5f030c4e31f4d20ebc35cafd0ffdd715e495343411dd517035350bd210f9c7215d8b55df900d831818f33d26106319d08a47371d192c17a7bbe08090476a36df314c494c5fac1706c705047299667b2e4df1be45b2b862dd49f53705bcd4d7fe4766fb0b7538f0ba31885656a9bae874f0bca10a78b7361f1f9a61c603d101db295101dfece0eeb98919226603cecc7eda8be0b2220042403399b536b34eb7055bf3f7f24ba31739dbd3ce867926a19c9d1f1dd89d2d884609677777469f7e6f98bcedcec62be2a2cb00be9c58ff74d7deb3ebddb06f26de375782f5f49e9c8e3cc22210f23b3dabbcd86ebe7d1c1631794c3a95d8eb2241c19150c7beb38c63757281cd0a35b938360fdc4957685d8e78135c28b429f4d173a19d5088920a2637a8a5f2a767cfaa47fd5e2ef382d7f575b352cb69e8ed13204f1d247dd73620375619cf2975ba7c46bc653e14f4979f96630f83bc40c83c8d96cc105f7a26fe144ccf0c7fbdad3e48b0e6e84d034a2496441d0e17aeb0e5bb75907eba900f4104be4e1fbd700c55fcd4fd34bcc7399339aa50cc90f4258ede034717dbf869cf9a9ae27196fcf112ca2ae97d4c4307419b445ef46bf1d7c4ae3a1f804693f4cade95a7bae3b5d5844a45cecf3667525f832c3fc3a68135fcb9e1a7c4cd115297985c896779e58638f9a205e2ac396452f44ac401e5beade01b697c58e0d5525a19a67163e5ad6cab29faf4436fb6aa178adafc8498334e1afd63f029af4ca9ba2a415d3a470aed4a48e5ae0f3b51827d3469f5e2f0b688e028f1ca5872536833246a59745556df980c23a307c590c1114473eafd1c9190f887645901721becca4dae2f93433c9b353e616d80efbd67dc013bc40e5ae85037b89d5a692fb5d7b9ef3e6c24e184770e287ab8b0347282d92e689ef5d3e4c5630c5492c680870eee6cc4dd6f9d54a7ebcfa58f3c8a041fb5b9cbc97c7948b51eea7189b1d8d664ac8ec40946c4ce6e4101e728157a6830bc0dab173fcd3e8a5dbaa5606278a093719f506cbb67edcb4f80a3018a777cad9c4658eaf7ea2f12cd847770297a0c5cb7c84df4f2d000ecfa2ab3681c0ec04e9be2ad72897780f94359c2ba2eddedd54c5e0289593ec40d4d76f599b6b15d715a0ae901bd7edb1157856aefe42ae356747bb8879fc86f5504f58d7716d44cd5f5c1a39d2d438600c8dec22ad5aaf1743bf0afca1428df1c03827ae5f35241fa95d05a1051851528ca9323b42d3b0b49d0febfe663fb8935fe470137ccfff71bf333c827a01155f7cbf05fa11c70bf7ae16fb01c47054f0c26c7ed4d8e181f2ea2e386b8d34c6c63ab3a39915c895d411a5d076fe1537fcb97f05fef48937b66d8b8f0ae796e9129ee507331060dd25142693b1428ef6347e440b887872402d1f5e305f009b3316159836bc6b8d945adb141709ffb3dba5f7eb1235bd9c17cada314540235d8b865aaf6e63651274bf400ae7ff80c551b5e331fc79b950a0f41c87055202ab6417270251c7646df7eebe733092c4ed77d120f75be89b20584eb7cf5e50c245be8302867403be131c2a3b65b60f630469aafb211b2c7ff53166eae552bd92ab10dda3b51c648354431947586da0ff08da54c82a23575c2cf096121d7583b02618d6244d571e198ea9aeadccffcd31c5eb9fb5e15970d06aba57e59d9177a53f1da489c952871c5c7e5106f8c505f26d84095aec54b1c9feb9a49cc4d35bccb1ab73dbb50860a4cfd1815ae0664f241bfb0711a8491bd5a045db080285527308e86910228fc4da8712ccc08e713bfeae2693c39822a259f15107f5b4a20112260509ade6927d388dcb2e05a773b480cff3887b521e9f3697e2e15ffd822ecb4150e1fe55b3035b1b39520d7910da5c84757f6535f30f35bdbf6ca6f0d630f51e720f30a0e864cab01900e2933e9cd7617e75de24702d28b73d0d7d41d847334d6a21d44a0d7146b3839b9136df95c1c90a6ab07b7098463d0237ffacbf819bfa61f1dd01b9598e0f6a5ce0eb1f68fc3c36c7a34bc250752c4cd61c4a235e8c16298baa735f0ff7a57ca7b02777cd44e5147038049fe2a6c4772f5f7ab84d323b93ad98b584b5dfa6721b8fc63b716bfa1f5404a40b7e1a4a5c17dffcfc168683e5f14a47695bb4bfdf85dd21d1af3fcec26b0f4098b52177774f4f28f703d9305821b4198f412fc93e88f4b754c3374e55ab3fce3fae50f485d5372f0aa831a4f427b22158ed878b884434f3771ae4665cdd1ab674a4b3029f8fd9dd6676a855fa8a3b7e9c7121892f2a9833ec23297e26e68bc35cc5f2f949a0fa402cee402ff8c616ee0de6bc4e1375ae92ac77d93692a440fd158963518806d53c4ac2886a3435b5d40d7bd8774fc13e187192dac4179eb2011fb48a7436b3beb0bbf86aab65cb99cc605a0236ec92f25a3448f668f8e88f7f44714d4029b4a6d415de2b36ce74951a24afbcfe24600519d6e7a59b69715fd035216d69080b31980a70304bc285641404521500309a1fe49ae17a2fa0fa14003ee0ef22fb57e5e4818d4eea9049e831f25e268810fc68f13e04745026b564e16056ad0e3085fd1d7d106f4ba1797857c97aa6c882fe00d9374a5a2b2e4185073f8f4ca97aa804ac194148cf6419d338fd61779407c3427f72b51ff2df82acad30723209199e89a339fb5252f657d49aded49cd7f4311b35df22b354d4130dee78a11f7f25c3e95a2af9bf81a88871d52486659980c656ac40a7c82d59dc812d77f43d8a4eb593c1967e7b478ec9152252ad107ccf9ccbb3e9bef0d06bbf5cbb7874062c4407ac28d122f70c87c35050061d5a17c4e2a3cb152a48463dfb4313246c296bcd303c3442e5d37cee1d64898622fa7e9352605c8f20ea112e5ea335c6716fec72ef1620b313203cf23f911c079d8018f197e207d1cb1e82970a35401bc02180eb1d7251236af140b6f502d86cf631e0b9a0a6475f24879e4248da923e58f2ba5828a91ef49d71189049321c4f2ca2b4e1a821712ded7e54c505617d6f0982135012fddd74e75703e2f4453ff38743f7a2c29d0656064768f118be666c0f2099a1277e7404a910e8879d21870b2555d9cc11816cb983d8018debc214770afdf5ae5e1ca9a5aa6f083b12aa51a1a9a3d3973d9d4ffa61bb45d769449646af8731901424a0621a280ce5222f13ccc44e0ee7f67d50c0c4d95f729e9c7183adf86010c0a6f595b56f832da5dccab100311aa8b3f968c7a4401ebd92b476c08e0f4ce3d2735468d82728f1041c6765f74d4a2974ac4f68d9c1026e9d346abd845827611ad8d9d02c5077222318272bb5c906f963c16238ff9c3a76dccedde920aa2330515b0d7aa102b33e4f867acd11c54303fdf668045fa25baf22a13069e715478478f811da483d12c9186021016f321e1bf62da720ff1928dacf5a0090b3dc47ae01b4f1eb682aadf81ab7cf24879191cda991e9d4b652551be4580bfd859bec20d94b6adfd818afe7bedd29292c465486a64450c62270ad2789a2966dfa9328a09dd29362a5fdef589ca96420f43613969f5d121bba6a6330e5019b1b05f1c9c113a3b1d4c1b5bcb29d4f793cca0104b7c264d90c649d1b61ca7e26c3433c753a13cea19c72f83dc4579c83cae044aa309eb3866901a65c598eb11719fb32c3e0005b9d5a4bee1545b4d32aaf12a024470a04d3230e64c189ffda80729d06d023b0c7ea7fcb262da6d56b8dbe2c7f7208ef4a9e6c71233402389965c0565c0855bef83f16ed00f08e001b49803caeac2965b30d6954d07e50ed9bd662e2089315217b1a50370e4febce2169cc16bff79861760ae0085249c7aed4505767e8b3fb70919d4fc79f40cee8663f71ad817dba8940a40bfaeeb616664c8c534c2612714a44591ec6e5b6e29a54c49068d098a09070930182cd6d91bb286d44849444566598183ecbfe2ff38d9bfb5042bb2bf4b13351e89aea041f6cf815424fb33c06b3942b99bc28b2dbb310808c7d6a75d310990f8734f3109aa4a0fc73e2a56f9d1f96b4ad03013cc60352d37403f9d61216e18672b180c6035b106463fbcf96b24c518902d3a70ec86d1e68a89b39ce3ee53782afeb2a52fa8e2f8878afc2135d8a284703fc7cce888af041c5184064b726084285a50d3cf23be86f840052e8088016d0826eca0a6df41140deedf1e494910c2065c1c3d01454dffc7978c2b281d8949d1051248d4c4530baee2e1d21cc90e86384d5105d09c4b4b4b44780fe9ee1fc4c4548eeb0642672f611ec1063b3200220a393ca8a902148ae0050f4033131439922e5c66443dfcb0c5921f2c2101104ca0248491104648f1847b1746b010e2c14d87db164818d2031bf0e4a00a50d8a12887237892a518425630220a3b3021c5916803e2064158228aa3d8149cf01a54210847d0725083286a90a488213d43561429b9c1912da4e0685e7d6a20c444103750820bb8c0a1258301f18303ec043c18c18fc81133b33404490e3ec002e673021ebca8b1400e8ea81599e13004165c135e6f6085902366c6bd8ba69f275e75f24e2965058150fa48d0cf65cfe670d34925a5ee84c6f65ae93ec18f2f1dda39bb6ce9cbc828275445f1953498dfb37bcece5e3705fd06c8460274bf337599693f9596127bf6e4e7b3bbe53599d808cf5659ddd67607e2bfcf03b97fe594e250fe0defca41d993d2399f0626b736a102a51426e7ef989e8a4a0b9c8a0b9e27eedc5d6e5d2442efeef8d2ff55a518bad80044e67be317b1fde1fe376b60d1d93df736beea537c511c57ebd7caad2c1272cefaabf083c04ace49c48bad9613cb39e594534e39a5b49f4f81b66cdcddfd5df79fed9ee670c638e3d38e32187057bf09e6ec16ce101103df98d27e0edfd9ff35b80242ef7fa5fdb59638baab5b5a176eaed8a57b859155e8310f90ece4de85195d5d08280466b692cbf46984a136089592d61d3b3d14f90043c091ad074b3df41c610a98b5ac1bcb939e7fd6ca5f99f3bb95433824bb0d12fb1d6873f33516bb784b7403d4e7eceb90150c59c8ef4af9a2617ee3a188872427a490c9998d553302cab783f2ecbc8b48f3fc4ee2378ed3372c87dddb8dcdd2ae51cfe2cbfcc67e8b2fd36f33f44c235936eaf1a9f13cf0cb737a3ddcd533f4fe3ced48999eda5a2df771a71d26aad7e1454545299fdb32b1b861f7c8beefa4a6d5a47a1ab21b4e9c1ccaa2ec5385c36bc21d0ebff6501cc6340e67a60f3c449a18611a9b70220e55528dc9c798c9a1df4e6e298c1fe4c1c9974cf2969974bbee317219cf6f52a78b7ae8aedc7c299436d56fed3799d43d3dd8e58c074a1137df030714ca4bd47b0bcd7d0d25d7f47606cc01ea60c03de1b961f7c884ef53031b29becc47013bc9d627b097dc353fc6e4c053f64e8ab8f1647104bc2609c5846b31c742c40dfd266330bff992cb7cff836fb59bd04dbe62bc4a8f18cffa1415fa305e05e5e72dd6a060215d83f27daa008c57f93ea980429050dc4306b649c142ba8685fb47b6cc8f8185748d4dcb2201e613b1358d833c5b07797ed7201a603e0cdc3314dc3249daa452f7f8cd6fb73c9f87cbe5caf35b3733dcdcdc2425c552aeb2021b83b2d7b128cb930d3bece9fdf481ce2755e7b4c3e4678ef8d2f9c7c99f3ec6298fbc65be5c9247f2481e71d66826ada6e7e0901a1595972a2f41214386d4c86701850ca9617907850ca971164c6f0e56585599efa9d81b7ff92a588864799517e258a5c33f3abbad3a180657057cdcc395aff221f7c3fac97a8ec5fa9095e3cb7c3cbbe18c15e1afc36354245863758705c965791ab25c31163c61b5561ca5f4fb29efdd6a548b6e4da2551dd9326335b8f1148178da6161f7514cb832b0bdb9d8dab0e05ccacad6d2db7cee4f90dc70c664427acb37140e2dfe0e872c574e01c3991c569d678161e770c6660c187895c23016d0821764c938d141d5892fb013194c9771962bdc70c6b81f226e3cb13871e54bd28c5ca6fbf9f368d692e48b653e8dd1e80f95d11e497524cdb9c9f3b99a7c356d26b91f0e8875cbd39667126794a747c46b9048c084e52d1801af593901bd6ed84d8e476ff4d6f2c5d216e62df4a674b91fee27b4b0cc1371c0ac8dcb544c973c05a9ed9bb0ae710bca9a13b0a709a4b7f93594dc138f2c28dc4814854fe7cc98cb44222408e5f993275af0043a386b3ab073f72760cc2674c626cff4f1961cf1a5bf7a9e83b3e6048cd9a4873f0b3863b285e559e6d364b36ccae18c753715902e79b5f1167aa337d347c306d706363b090b7d8fde5894eecafff7492502337ee57dccf8951918fba0f18f85cc781a1444e51864cb5499306f993f6b33312c150e67624c5836dfe2f09d105fe67f35945c3abf7b4b3b70da4cd849025d239f9e24e0356e3f0e88060d6edacc005740161eb2052c4205eb007bf8b81fca3bf96a28b926ab6fc2e48bfb41f9262ce230c973d25c664e1f7f559d98cb7879feec7119cf3f43ac19745776e6872bee67250a379c31ee43ee67c6a88d2e71d73cfde85cc40af73363ee02c20da92dcf3feda8b80896e77ee48b05d79dca9327f7c3cd5c26eab86b569df9b367fe94cd9f3ff3a98d2e597913b08815acc36bbc8eb2a5c9298c271cfa4f9edfb6becd21b4ad27bea8e019932df32937e38066ec7b6f7ed5a93a55a7eae47840c6fb0fbbb80b74c15a87d639b4bea1e5196fac89a78de130329bad6df3f3beb72dd8f488f8c01aa28d7295ab3455e4862b5902b406060e59b59f313166c4e1095cc1ee7557b3e0dcd6711993477d77d8844d26d3a340068031409b256802755c1906ee1bd80d57565c72cc39c198e7cbf64ec79aa77bda47e6ae86d5c4d64932d3c1a3470cf1e53b14c18a16f80401841435361c667057391241e1440e634e3edc2f472228846003850d8a2e4a8e4450bc60088a9c2fe77a3912419183091045372f8a926ab31de66c2db5ec4559cf3bb1abcf5e1861cb764a1cc15a75d88a1a8a122f389d4c91b45222059fea8adb891244bc14153daa1c50e1e47e31d6de235a2a092aa0504ad0b94964616252fb4125818493131542264904e1e4a322e9944412947714fbde894899be186b6f154255d0bc25e6f07a123f7456c04c5edc931c899238410e6d1629dc15465d114ad5b14530512b7e381edcb9845a457292b51cda8213ff62acbd57c4bc255a9cce8e435782918c912f5be34f3483e1af05a49ffbe3d9cbca91a84827cf6614810737468e444640c108f7c6d06784fb3e1f0f17468e4446003104237448d2b3a4c3bd3912f528c53ca02887e8881f103d21f49d764457cc8c0ecf5ed673429ea9ce186374779fa0e9b443cee8e0d1a363bd2b86dee1143202023197e179417ebf0e996580614c9a291028fc6080212ba380367076ae602753057371973cbdef4e2f3b3fc7df19979899c2a1fdfece0f059a802d304e777da0cb546b07ae5637b479c89cee82d170002c79fdf1a7dbf7ecc9cf9bc6737d995d2c218cd0e4156b18dd3a6d77778c2cbb71c8fdeca7b6b10d9f39d9156c5b2deef852e7c7b8cbc55dae76912cc81c312bdf32325988337f1e4631c4c0a08301312d73dbe5df8526d94d50b1c5a4d5c5e5e12e93ecafc35dce0037e2bdb861348ab9a12bbb100fa357d770a19381a6a1efbf81a6b9f564d37bd3d47e7def7d6892e3c78691234b8e2eb738460e5d39460ead34d11676d430baf63b060eec08d33d056584e9de255f34b674ef0a40c9dd8733a7dce1b0fba64106fa0fe86cc2187057924bb10d9fbbefa70d1840fe11bfb8428873b5e1869a4d0fc4f30f056413eef8d2df4d10b0b20e6f8b637cf1cc610cc8708aa17a0b31088643cec0ce7b34ca18e0e1df608cbb5a7071e2f687ae23432cf0c97148c796c3992116c032d1148eb2bfafb84b76ede246a22928e570e686cea1ccfd210b58beaeb35634f43fa0b3e35692dbdf716256c5ab6a439ce51b3cffe8a51c71d800a466cf757eff9844e0c2c6ef12e965318fe8c908b659ad1cc7d974886c3d361f6c4462c3c48f82f7a3737fc748b44512910d1623d116b72da0987389d219592c9a4373b8b096dea802a4ecd56a0b8e4335c1da799bd1da9a73ab3973c6a1a538646ddf6e7d9b73898b18e77459726997db2cdf6689555e98d2bd8560adebe69a99b176de6ef306c481787ec09cdfd21714d4a818e769877cafa9a4e04f6cdde52b58451bbf1b63e4669431d248442b38a792e7c566c90878ed3276c08b43423d3c3613563b02fa913ad2c8121b6dc8c77bfcc66d906a33a01d9d20407cf48871892ff169433e3df366da20d566407247eadc9614d1643e8ee337494841b3f8123fd63b4282c4e023bec43f11c18b11cfd8dc59ba19152591c91c89a3942414c4e331872d1d19fd2469239de3811a60e0e16ab590701b4f8ae379edb2dd44035e6c97e3181f1695a2c49533a4ad58db4dfad482cc8d6394c15d71e6c65209afe728cb7f94ec493d8998105770e21661cbb189234039bc4786f24ae6fe1a4dc0710dc390dc783a9d33bb2de2ad563e99930386e4f93a1ccfcea145d448785e8be8c618638ca81612aecdd15d37a82f620d058539727c16fc0583b7fccacaca8ad7c365e4d0cfbf37a45911a51c67447e664484b257bfa9e42f938eb7f8db25772eb16c4c3a38a659f60fa9911cdf24e4226bc95650b2154a8692b92cc95050109050929fd5150aba3d73579b84b2ff8d17dcb087727f68e28640ddb850378fba41e5a06ebcc551371e0e8a07b5d342282338a89ccf0a7127eea1167257cf5aa705c50da95196a89517dc1085aa821aa18004e92021a84c8d220e8f05d5241c591177db9959a41b1f5ab724e2f0cfe8e4424bae41ba88831a798b3fad65a7461526972c090197e37f2088308e81c4972fa851ee7a78ef24c9b10917dc7288aa22fb0b20c726766eb21715603a356d70fe08bd1304b82fbef8420a597efce68d17ac4ce9b1a9898a0b53e2900419554b516102588e4ae4d8040c287b2da2db5127b7866eb798b8e187147ed9256e2477f9cbc0e14ee760b296fd8928cadd4f228272f7938824b9fbd95736eba36f24aee5c405800b6e1be5b08d626e2377e1702d87e967735cc9ddf2bbdb48764632b6510364ea7357b5a221d0fde46a2f74119ce00d9d2d0ea3bba2acf5c06b11e1764118f15e7a2f3d9ddb2fb9cfebeaf7dbe0544e2a27fc822bcbefe7acf570786fc42eebf6e9cf1667e29e9e1e20df5331bdfc175cd9f4266cbaa1b309bbc81b3b979b2b88b265b8c0aaccefff2607862eb92ba63a4ab965047143567cd68ef92bdf5b9fd446193af76dc05c3284b852657e383377cc9ff8b3e3f8d15962eeebef96747ac76aa2e2420d4b30b7d0f9a1634743f9fb6e420640f9fbf682b8eefa52397e98926fb0e0d2b761e4869fab8ac9f7bfe0caedfdcb57c4d5841b74cd68532beeea4c5fbf7ecbd51271fc685bae4f4f0fe8ff3c15cfd5ff61150fbfe072813774f622d8c35dfe8ee78d1d1c670eec7b1cd77dd7750e3712755194bb7fefec87abdccd90c38e2e6606394fdd71a7eeba97f66bb00f2488107fcdc816fb331b1bb6916ca70ceeb21f65ca3eb53f633d1cda3a93ed77e0776ac0e7eebbfb063f77cd6093edd7e08122beb7efe2329cfd95db7ffb2e97a1df4a875b16d3d0b1da452440fc3efdf81f37cba226725022c7e904202b7c72688f7268b31376a270c2500e2c0787d6b795bb6277bb27e1e82e49e4d5e80982154488b82822e20289e24025fe97b9ac127124e20208391271c1441e800f321f8c0a00851bee8ad0464124059f1ca5c0044d7dee62e5482405a01c5e7f1dbc2410a95d11440fecf3055cfe31fe33fe3afc4f6e704f82b8ae19a7f570439b5b628b3f010e90fdf1ec86aeda911a2cb39023511543d943c5205f5da3e29d1401eee9fbe09e0a41e2d807fd0e0ba198fee9857098763168851b438ffafd33782048c3babbff14650beee172df7dd8d7e4250e2f0e59174720b6f4a3a4b02638268b1ef145072c51cc00e70821689004c90296b0c40e570ce1448d891a0e0b4122e4c34290f8a0cfbd100f47d9621262318785541c039ee1c8ed590b352dbe62d1912608a1040851ec808b1a5a8f183030c30912f71b329d5bc22c562b853783cd0e57e0e00758ec702407c9600a2e90428a238e780d810e9dac4c101529a8414d0451af132999408929d820092272968881d2089030426d07218850f2448dccc91338207a3c1085909c7033ce5e1958eecb91488b25d42aa26d46c71032e80837aec63f03b2286a204b62c9142ea862fe00c104268ee0850c82c045713b0da10839b0c0a08387165364cfee7e590fe648a4050fb490e5d045c34207179523911642c4e076391269a1a3450e8d1c8990a8d54563ad31e2e839e34c8e73ce242b56ce037fcf2206d93f870e1e423787cbe289ec0fe483c084aecde99a5094bd7f7af6f5ddb340caf508b9362107b9d6b7d7bb53bdde73a71d9e69c6648144ee5cb97b7bdad1d9b7562ec9e109df6987a51feef1d56a4952c81cf7f5b4833ba954938f35df531390f52c267491e7cf242660e47953b294ee30ebc56da13c1f95630e6d8efee3337f0d31628b296051051f6e50385233df85fcd53f103d01490e7ca600aa99480022bfaefc1c6944ea488e0a263c7143c914b2bb6c23f74e7219cf89a1a066beef78cc7bdcc7651147f4398592a10060c1c59d617e90aead4009203ea8bb86850f320b485464f7db4390e07982127a6802ed0554a89953e45841478913b521923828603a4c15744ece1da9546ffdc5a95ec501a954cfc1a804f001c021ab05bb30e66c60dc4281b525b056ab2d65fa600d133c3b0267b3d951a6ff7f6231c54c402ca69829668a9980327d1a34be1926986987c50433c14c30d34ea63f63c54ba92da5d46ab5a54c9f45c524637694329bcd8e32fd155687d2c53a20942ed6c562312c8c0ed6eda074305507eb76327d192beec4d6ecd289ada96cadb694e9a798aab5337b7462672a3bb3337b94e9b352395cda81dc770c28168bfd20d367cd643ae3a140ee4d2cccee58988559988541a61f83e33854fdcbd5b825aec6d5b81a77854c1f46ad2c6fc61d71336ec6cd382564fa2813002ad04b7217fd13d04312f282868ebca2d611ee67e3af013cfd599ed96bf91ce4f2f793c75f1c6cfacc244099c3cffd7c41a4e176660c32f77327e2683df713e6af4aa3cd1bdacca1e964ae461791a6da6c5edc220ef0c85f55264392292d3172991950449a3a341445e65e16451cff5ccdc9990971346a1069aa8fcf0d641107cb732f8df88bda6c72c7c6c3bdcc711919cfbde421d2541ce943e65ee2441c2b367f511aed4693304e258b48439594b4c85cca7354262b921d71309e7b1742a4a143433e84ccbd07451cace7de7bfc457364fe13e3b97721220df521227328cf4d1b8e11db4ee6de616d854843c35e8a3856cf4d1a2d8966e34c52449aa9a4348551c4a102f2d794c98264439cc973df38883473a861e8900e220efbdcb78ebf664e2ca7e7e47d5690b9ef14449ae903c45fd2265ba86d89c3d92273cf814833711a2627e2e8e7b8af21e29049b7c67d0f7f499a6ca14adcbb409fcbe1e22f2983c165ee73cfc3e532a81fcaf44300648ef537943e99fb1428b38d4823875ed2a761e873cfcdb20ed7e19883713b988371300ec6ed64faab16aa06cd8669349a2dd33f014d6654d9d08c2aabb22a1bcaf4557fa25173aacf8c9a53736a4ef5c9f4532c9f0c5bc59161b3d92a4ea67f573c159a920c1a8d864a31c1a0b22118544665543694e99bb0ba183487fac0a0393487e6509f4cff84624f368a73b2a56c368a93e97f2bce44533ad152349a52a6efa9aa896c4826930d65fa264b7358979ccc8943afc69a3973fa64fa9dcd9d39ac4bbeb34d1c9bcd367bc8f4bba62e99bac80acabf34251a8df6844cdf4af9159c8f920dc964b226327d6e1580009c5c68c9a80ec049cd1e783f987c7db018ed58d783654a635e2cbed014b63670b853daccbc99448131eea2af02ed07932fd7c43069236f3c4f72310e888b71312ec6fd20d34f91324c6fbfcb5a7918b08dbc85bee7fae0f482dc453d21f7691a2f8908439f7a35961784f8423f9433c8f44dde2cbed0b781c39dff597b6ffc6099be67b365eab95bb2e432e1043dd79bcbf4d393bf5cfea900be14d8f98212e4a2abdf8bc997f7d334f463f490647ad29369e8fd48e06b5e7e6697d39d2fdf9d5e05e2175f7c71059acbc7d304628dcb17e1f230a08bb7d047812e7785f6dec8e186f6ebd78f79f196f1859aa8b870025b680060d3bc88177cf3352e26ec025e6fa1ac953ed1a43773dd97eecdc299a537cb34cb9965e070e717dbc010fd59083cab5f1d5bbadf7b988839b99e955bf66907286595934a19c5a16b4a1cb2e8ced04ed6e1467268ed90cd134b192893b8cbbfe5c40ddb48469432c7e892519e6ad507cfdf43b9b75aa706b85cee8a71076a07005670e56c008e37f0de8b5e7f5e8c30b88cf73c5ca6878f1864f0def33ccff338ce56012947a51c89bab865b7eff9c781927e1c18b290edcfd38ec62cb8cbbe47653b8dd48b36553f12758194c31cd97b9ac393f19e87178558d2b3b8b1e75f8a12d763b48dc328c4c3f3be87cbcc8ec3ac95cbb43c4c43c3943c205f30fef360801d5be4a3802b50dec0b91e67230ee9b96ff070dd8124e8cfc9f7b0a594af43feb84cbb10d18dc8b556d70e727d3ff1881d235bea87b67a5cd76ab5e89237b6c84eaaaeda57bdf94969c4721c650fd9521dd63098c3bce830f9fa62adad6eaadeab9f09d857c6c8d70af7cc5bead7d01ab16af5e67c4ae389eaef872e2621a63aee924f833f37a752e7987cbfc771f6e4a706b4b2ca0d33cbff81ca12c7f812c664936f7c43677fee75f827c1cef9fa33601f35881bbab294a7aedf5aba2ca4de6341317fad228ee8234be232f3ebfb4fcf945ca6b68e07b990cb983c0be91ee5ea45b9fe0aec6102ce4493d691af1c15d51ec7ddd0b1c252d83f3f5698d5f7fa4e648525b9be7bf6934ea4c765baaf2fa5c432349dd2638d79acbef3c488fa186d46a13ec6c632849d4ff565b4a9d447222f92eacf301ee5fab5d6af15e555d669e52efa172c62f5a8fa26d656ec38dafad56d2c3978b11552987dcbf25e8cae9cbe7d73bfff7e2e83bfc6c7f76a8036481abf97a2c40d7d097fe3c6f81b630c9ebec7a0b4893770ae57bfe932f8e3dfe8e17af6db1153d75dde04fa795f8a38dc65785ce6060f379cb9afc36fa7c006f4df59e74c0eb7427c4da1191fca1cf2943c44f9439edfdf4f21f9d2e12df3ef0c1c4edacc7c0ce6682dddd3772b7779309b9b8803e6af8e2d33627793ca3352f28c0fa50ecc655e31b6808f250e38c1097e287b6c7001ccf8598f4197bb66bc174f3b52dfe04de116faefdf972718868060d879c6f7a98521f9c32d77cde8da3b6982edd727ff4009f3e27ab1d025cf19d87be9b1c098234d5d779d5ebe7f07769e3f402e2387ba9fdf4528932792c24e96dff27bc7ca37ac694c3fbf4f10717c3fbf718832f855e343dbfaf066142eb6f4a33c06658c30fd97460d30c6960ffcefbdd3774fdffc6eca245b66c708a5fcfc692459ae3b852ccb3f1938dc1bfbc0cef2747f9e78c4ff42ef4d9f529d80ff0900df846fc42613bea133c661ff7d1aae979a49dc3565edc37a538f0f8de953e35f6ef39689ff82d65df883b80c911746f9fb0b84f2f3e3b3e8ff55c35f461cb13695a6eda7d0149a4393e638ba0babfc40e50fbf07dc1583c0f7177f1888c388117bcfbf2041dc354f6888eec243377eb8e114ca5348be663cc651c84ea1961257c69bcc2924f35d99a47f66262e23e34f2da4fec60f378c361a82b86b3e90ce40300da907d27902cd1ff99ab1148efd10c9f39b07ffcc188724c82610f4071d09749eccfad097f2fc0f6c9eeeb934f00cac62c2ddcf72fab0631df3d710180c06bb61f1b139f5f1249582b1807368d2dcf5dd944ac3523158633c85dc35dfe4c38ec10232a6976f3fccb2e286ab4ca574d087bba8b53d601892e5abf8872f3bf98e5f70f180c9e6c09b7bc729476e306481852adb6bac25c88d5fbea6b7ccfff2a42ee1671addf5005776e1388ee3b82c391a6d6ad504cc48fe6aa833b82b7e37f6b5a98b25e8a4f429a594524a299d72ce49a9a4944e4a5b43b894524a29a5dd720941b209984d5cfa429643973c3fc8173d33ee323fc665fa73d3283f4b1054c54071c7976924f17cc761b4b58270e7c7695defd2c387ac9962ad558b350cc8166923736c1a46c6e94554749d449ba6b1ef0495feb08964699bceb8e4ccc7a32caf9c32348ca420ea24ba6244199ae68b30fd5108264a98b9ed1596e4cee6325750ea967449f23b2597e92c4199ab92b5d6d6ae6b596b2d682db6d6dab7b686b5d6b2583b83e3386ec55a158ee3b8148ea3c1711cc7e2b8181cc771281c27a3d65a571c07a3d65a53b5aa6aadf5d67a526bada75a29a5b45693cfa394524a29a5b443594a29a536220de5287ddaaaad56adadafb555ab8d6fbd8d56ad75680e25c9d7a475364d338990d4c16a37231b131d91960d3c856aadb556fcf571ede9b142f2357d2c52d34c19cc205b9b40d66826b1b4598455523bc7c9135fda730bf45c1ffc6a63637be46bded8a0a6992688d9998efdc9b1321cec12305993357b235f12c9f2348da4422ed9985c6275a492cd9155d823f228beb4e71aa0674f0508884b922f39b3364d2377208d2c8cc6dd84385b0f2c11951f1d1d4e48bee40e87d434f287245ccd8733e2e16841704a8ca8809ebd18bec49770414de35ce470b31bee07c6c93c0adc1231dc165f9a46e36ee4cb8b389ea6712257e2628ec4e9f811976304ee888ca1f8d29e63f8f8d424f9721967d3346e8410079bd5db4fb521c111e9b9b9a942f2e53815a9693c079e5adba946462aad485562a36aa446aa3df2d54935a869da0a589df5adfeb4adcafa8aba44d766b37a235f1d54799aa67dd04735565475866a0e10ea11a0f8d2eeedecd024f9ea58b5699a66c14f85c9e8ad87da5c5089783a5fd7754182b8ab8520350d088cd01a0e35b2a1b44805aa0405c4e37cf8e891af186850d34420dae82c26d19f58a3b227e8125c0f13b5313137f2c5024fd3bc4498fe211a0ba23a3972c3d0232697f8d29e39d06752924f529224206a6393a5e377e9d2a54bfff7893491b2749f3deed25f1acd1994a5cf789f53cea4cf9b2c7de57df24c9e2cdd6592bbf494f769336db27419ef52c8dd59ef1249bacb1e77e9ef4232480665e930dee58dcbfc87c78588349247f264e9ee499e94a5a7dea58db4c9d255ef2ee44259fa7d772447cad24fdebdc75dfaf78f07b9c9bbdfdcdcf4f88d4cbaf3348c7c7592bb941c88346e837af7af21e2307d920bc916293f7421d2744f4f8e9e2c5dfcd53db2c5bebfcbbfcd936dc8f76f451cf5d54ed33c0d23df31883108e207410c82adc7dfc22008d2c09e45d4a66926d154a21369cea3398d405bafc3710bcfa11a0f82ffe03f08820f3ef85fe3c1af01febfcff4912135cd3442a83633faa121a1047c1d5e03c4b3a706e819839ebd192cff2c2cff2cffffcff22c2ce0ff83cfc2c2326f58c079e3ae9e3833a869660e9367ce9d398dcc5964ce783c6d68acb0b0acacb0fc0a0b0bcbb3acb0acacfcb3fcb3acacac482489e4ae964993a769a415b0db1547b27c1a2c58d668809e67809e3d19292b2b29292b9fb2b2b2f22b292b29292cbff22c2b292929b31450cedcd53268da348df4c1d18415dd866c120893880e97b18225900a2b2585c54a79564a4acaa7b05258ac954ff99514168b257758a0dc7157cb1852d348164498fe9f9acca847ba402a49791dae9282a54e7c69cf3260a0b0582828ac4761b158cf4261a1a0a43ceb53582828287ef39bec912f5f92414de3529046e4ec47da489953412ea1c361b0b02f89b1424159ad507e858282f2282b94d58af528cf4259ad565ee445ee6a37e2691a77c2164bca2dfd892328afc363a060a779f654a9d52a955a7d6ab55afd2ab54aa556a9544ae6324fe22d364de348224cff50d00dc896694024cb15769f939b4add9bfa9b4aa56eeaded5a77e95baf73a8ee308c997e720358debe03d358f19b94e6e1428c9f2a43dab4c4ef79e4ef74ff7ded33d9d527f3f754fa75352b75250d3341636b3a59f2599094b985cdc48f1a5bfd3e9fb4ea7d39fbed3f7dd3ffd3d7ddf17d4417e235f2dc4d3349d442d37cd73827024cb3fb56713d0b367eabeafebbeefbeefebbeae3bfdf7a7afebba8e75208fb7d8344dbf20c2f40325b9f9d83a064ec4f4e1def16cd759dbbdedbace76d67edffdd7596b8574c3909a460411a63f473a2d7ba124cbf73a1c24bef467d3b4764efbd35afb76da39ed9c3386187ae44b86a0a6a1c09299d24f47b14496d5621ff185a373523ae7fc4927a576524a596061a6799a8600b2750a7024cb98f8f27d9fbfba24d922dfae5a718718d9dd584adbdde95fe1fedeb6bd6b59be8d1daebfed6eb2f524f9fabcbb691a1a61fa5b26d8ca2dcb952d4b6e872c5db94f1fcb756fba1b69e2eccc9db1849e665f5d92b7489aa880e8eaef6ee46b01d136cd4c84a1fd9025133959e298f9e60d15dc702665f999e2b004a61add2ae0a208111d74d041071d74d041071d74d0a1489122456e6e6e6e6e6e6e6e6e6e6e6e8a142952a448119c2bece49bbfeffb3cbaeb258b85a37c01455322c6f5d76dcc8c59df95d0d202075bee77dadf7ae286403cb760738c2fcd6589ad67a741c505fb1db3e395bbc0d651d3801166d6882f7352fc364e70e5d3ff29a3abc696faf357eacf67d50f6f9dee2d4c0e095e6c855f2c5398877ac1a83eb2bc986ca19ef7d330f4531e50c3d08f347b30692d0c8cd9fbbef73d3969e56c67f2be9309eaa654272b14183158293254565866d078107f9e8d4f7ae5bc996cb1f19d805ed29050507ca1ef34214418a09a2c1b65ea0d21039d6e5ca608007ca787013d24afe6cdbc853e006045c01471f3350348ba11ce24015009e05536542a53ad56aba9c05799969654355e659acd6633157e95e9e848a532c562b1988ae555262020158d5799600e53a954335e65da51a9545dad56aba9525ed52d2da9545ed5cd66b399ea5dd51d1da9545d2c168ba9505ed50101a962bcaa83a9542a158c57753b2a95cad66ab59aeae455766949657a959dcd6633957d953d6a187aa44abdcac66231db2a0ba4b2402a0b53c1543095caeea8ec8eaa7bd5abbe86880355abd5545c4dc52da9b8a5996aa6e2662a95ca7b1577a48aa9622a0e48f501a0fba8d4abd7ed7adc2aa21900808000c315000028100c06444291480e88a228c70714800d7da2426648994b83810e24218819639431c60000004000406086402601291632c3fbf14e1f28c4dca6f4cb32aba16823fd0ddd4db3da683bc46bf8e8277d56e0bf648182c97ab49be3410e216b0bf57e2b3f927bec98a30316b7d82e60354a1973a294d943468602ef12463aa0616cae9314c89a2bca951c0db62c781eee83bdbb0ec5f96500f81de6ebb322d2ee5d67db40b28b684ed4d7f985a94cd10c52279263732d2503bea0e3195c329c69a2e81c09b6af989c146aa15f2e892e68801462e1245b10f80961c2254d6112e4087bac0f14c83d26ebf6c04780313c595356fdc236cc45d3673c4457f491d737773b76331953a48fd736aed7407209f1c9f2ab1a96b3261b7574a227acf6aa533d77e74433714cb99fd83d439d8a10061e821883ff9cd486fa8107eee2ed95c7bd4e1bf77364fc873bd16bce4356de6ae4626d141878a3f322510531653c960b0d4ce6bb1a89c7e7e564b3905c34d2f78d67b3c93d6442c025253568f224a04d89bf30e071679db3c8ddec21e587ad21513022c657032de48c86381c8cea22b923876e5b545d5086f1196bb4d3802a8f707db01dbd5e4d0b09dda634c8415cc1b80f08210d1004836b40f97a4de6512de93d1c572b8523ffd2ce2ca3faa9a8ea51f451be63ddceba52b9b17963598053514dc789d95f2a5e84eb6d8104314e5eec6c80dd0b265632ef4c7191916004bd407b76c63df2bc0a6b8b5cd7f9cb76dcdb5a8c0e7779884bf10386b4e6e184e91b52432bde275d013f84c9b878a3b33cefc06f532cb1702860dcb2c6e98d04edd2ad17e1a52c140c9079bceef5c2c779dc1c77c5b6ef3d216dea42288fe8073daeaed503ee832a8785c08d1ba9635d6550b3ad749fb33291b7ee5e78ea7e21be1e674fb1a0cac236f841c841021d6d3518c92d82cb98b97e22b92d8818599ecdfe19601082d4678caecb436547f9436fe1037cdb3336633cd6387986e62f57f8111c43488cbfa0491241fa39e8f2aa8b5ebf66573e61babdf02b79cd082fcdcae4760ddf31b2c7034e0f4384a38c1ce5723203ea528fb849f048ad19419f648a27deaa6d84a9509726f1e20213050138c27018c298a9b445a3b8dc44a2d54d16b1951c9a22f4400805d1dbde4ef54a5e2eeb60996c3f2b4586e85a0ea10ae030c4c548adfe736585de9670664f6f9b28938578350145117c30b402e45effc34215af4b77f24db5ce949245b4208758097414b23074b30008c1ada32e842c5f799ce68a204cbf59eb84e5bfd46d9300e6eff90ad8b07908df5c142488159cc310879e6871201a300b27821c943a93538160a8156ae3dfeae7460543fe8ec7681fd86fc619169ba649e9cb3193d508a927ba227a5ba01a67f1158be01b1636d2f782c07deca196a611b02eeb66e4875062ed6f1fc461c5a61ff0eae0fc6915692386b00613aef7f353caf9be2bc00fbf0d564d4e00c3796940af7604bf6d7afb77f5de30c60df95f260e18e72e4ce4229ede47e3e8b98c0e9ba96a4cd29dc59bd88071fb05df5291dee2ca7bfdeafd04a5f123a72853259dedc74da943da34eaf4de3e1aaa16d0bfcd7ee3f2fc92c46b63655f3da1259ce02bb8883d4f7a3427a68072e8c26b0389e512bd8e61f47eb5c94f23d7da2f82123a1ecb5a98364e053fd528bd27b5a7070471236abc9c9c380b24809ed5d47bb2949df9c6ac4637c44195464816d3a8689e2cf896dedee2858be5f4e81abc0fe192cef66226d4010fbaacf7ada777b39a097e2567914c8686acfa37f866bc7f5689cb53f96720b073765d0a8d2ec36fe9dedd0142e226ff697f0fa51f6f63f33127f8027e2415d2162ae0fb2caa1c884096e93afd6c5288df8b8d180b8a50f2015650312df5a9e286bc31096cafcfe9da4afd94db582a6e0ae18adfe256dcbdabe09a20a9ddfa19478c6e9affa9550ebab055ba9158dcfaecff84341270653cc9897c1a737d445c7d32d659540a701b24200f715d9269b2de886b957de7b2534bacfd4962c064f7adcfd7892c88b82e9d7ec499882ba3f1f4bc255c769f861e326984b84ed52b84c1882be53f7179286dccf0ec6163be6376eb17d5c4c79e886b4cff7d70c65c701a2ef3e04e7274886b357f505e2776fd7906c4f5659f3b30643c221f779cf4d0445c8b548d9721ae71025e492fc4d5522c9d254845af005377e7d4d3cb82d6cfe3891923f15fb32c435cebdffa6cffddea2609b1de01ff8ff4166f7d7e12c563107175fc81df8c6165802617c30a2e7ffe6dc776c4358caf60cd87b852fdd7547e1263a88ec6b37ef0ad2f85d8170e71d5d68f28f1dd507d151271a56e27ca595288640186942b958d586dee440c2831c42fa6d08d3b03b7be16fd0f7089d533c1d6f6797842b2d95f5b7ebaf5d97d102068e512dc4d6a3338443f6efdeaf2860bef49c0bc4e4dd729666489c813ae708eeb9ca7c72e4088b70c7a394b50a9475d0fa3ed34a8a7ff9960cd8f489918b5eae41a9282b00f7fb4e9036bd78a05ea96b9eec44353b00347a5d2a4bf8a21557cef0c4e9637e71d47337c09a41bf7ce5e035980349d15ce1269a3f05a9d66bfc46b762e266e7d615f3e3c888c83b2516a666d894e41a16469190e00b5d62a28a5c33bcdfc95ff020b4f22965c4c5b7d474f5bba32b6f26c5222aace583d69ae9b8fac58c15f4e80badd67cf8b2903ddba8fdc175ec711f53acb34f071522903a48aa2e2ccdc73ef609a638aaa7d4509de7400a5618e4c0fc06684dfae146e40da5be5b3e9a25158cc62a551c62cead77bb4cc68c26b3f8a049dfa9573f20c84dce6f1007b5abad94bcdd4f7a2b6b5c761632a42b6992aafcac3999d412170e77bbf2d3d5b3d5f00c53cf748b14046351c7626c57820bad2a304d33de5f28538197c8cce5d80009b227a2426a525a0ac71ac3cea9b493ded6f8721eae8fa9790e0450770362eb07e17e46c61999f4e397450340d4a7bd9b89e67d4e11f0f8ea8b42a0b191489823376ef9afbe4a32456f3d52760dd02a3965e7393b8d9bffa8c04ba6e36588e8b936be0042a092630b6d69c256011cda5d0b693a30eaead712910284033e626bc6db98b3223a29de3244a44c52048b8e9169b9000b60b1a76ee4839a14cfe58d8154329b820c219bb77cd7df251c9cfc33d98e694068a42d9fc96ffbb2fe79545bc42ebec32841b40b63b5929a53a7b010818af83df86365a2e5b395e004539e748370e8db9c77603396ae0984c2bd1239811ba29eb508671c920b6ace63e40b119313696a8c83626394ff10797897e994b85a9ebfd8116ab5c9a6e180fe6c17523324be098406b40d1b28879fce79f6677dde12d9d2d29613daaa734c119f287f2f06c33ecfc875b6adf5c5de2c4b87254536901686fe7dc4c1f5d595782bcee87baf9bc2a9f5fca81c669536b727cf01e19cab8c2a52df73227705b0148b51371e9a4dade79fd1ad901ff0dac98e5ace84697fc7a1c3926b40e84cfa6b5291b9d5116ec27c4c33fb785d66ad9d667941ab63e7a603776c0e70f1525e1486281149b0c4414a3d0598c6f722503a48242ffa59408d374f43003591d65a3fc6c5b0823b93463b42af5543ed016c5c8f8828a481ae9ef43f161ed3c37651dee1cb984a9f544781b9c3c00c2e242ac33534fbd9b698ef48e6a3e6de0772dbd6e463a0aa0a8f2234b0a5367a601657c7cbcf91df1c1270b9caefb01eb78850cf128902cf12144941829970125e22aa66c56d5410687f4b7a4ab7726382f3d34759f19ea9ed10782df04ddc1bda757c8a0514157f49282142ee2d5d8f4233500c0a813b8e8c382ff388e46ef224818b214752c2c31281f152bb80530c004a1f129ddb7b0195b3f3de9926a982f7e25121babbd2496f9de0b504b9e46f3f336db6a14b19e38cf97ca9efc11ce8f987bacdd71f19b739cfc5c48b9cef76943f61272981ba40bd8eb624a1afe8736c602002fc173e08bf82be8a086b34e4d00829c03345ba2807e843bad7335774e011ae4e7ac142c3d1fe49acba6a5a33ed6946b7977470a84ab98f0bb6508584bad827c297b16c9b2cc412aba24b2510651688109a4d34dc94a7f88b434af7d5b55f17d94e27c41c7944e514fe449027b567224279cc64ef65738c4707cbc40e2f2312353b0c448c7834e6d82e17ab04f392080e35c29e7a5a424394d59583dfb2f3c879f1cbd8da0f120d6f53d8b0211c3ba4d49fbfa26291acf3aa22f5cfb0e945f851f9930cedb622474c1cdf0dadc844cbba39e2e8f09d9e8df109c93018603094e5f6a20bd48857eec3fff5b7271fbb372e9e6bf7ae9eeb772e1f6afbce49e8c1d87bd70e8d507bdcae5bccbf43ffa253a1ffa259d1fda259d2ffa05dd07ed25fde41b73ece5a25e94e9b5702f886d2fbd1f66b4ed1d98a3d9dcd73436245fd7f301007ad88f9e9481d8c4f50ca0817e467cd0ee1ce988a411cb54537201387317d6110c1a72659395e9fd61646f07d72998d05eb67a8337094ce64ebc10d5b86645c5af4927fd1cbe1034d23f41a68d180b1290ed114290289fd38b90f4b4ea9fe887268113f16441a8098079b447e349af4dc3502667d84f9f817aedfaff9a9e9f1221a5de6c32a7d9ed3820a2cfc2f14a9913f6fee86dff9b287c0b8fedf182fc36dcc93daeb1e926ec861ddb7787402d8e6bf0f832aa43525f949295cfe5f01d6e4bfe3ffc3035b5ccf1e6d3e87b14aabdee411bcd13440f59429d6f343a7b29e38fd81f4f43648248caf83dafb54a23aa599935b94acc45d9fd659f2d3e4127cf6a366df4f51947e647e2f5c7fe000d6785658450c2ce3314bf9d478a4d2389ee69037b69c0bc0b5dfe6a9dd51b03540e53eb4607915c0b660b8d2687ab9346c8742a5a46fae132c32e58799225dd0384f558ad618c126fea29b2b082c875e057f0e6b36d452d60fe33e23c0d3271572fce942d51e5c511faebac8db23deac68f3f2b3b20f8cbceb579f90f90748c4546a808e49dd08395ce64b6bbcc2863b364a5b1f532ab6017d7bf9691c2c7822723739292356809c9002b14c92c5dcb484a68582ce00654981b658fd14d7f9b3bfda478c80c60d00828ad14e7f63b7a04a501f7886f64a32dd0957166797051444ba70f6be175c50cadb20a5d3e36ff18b19f0a46109f20d354a2dffe12573d5341d30f34f28a4f8651bce6b50b089a201fb0648505965964890596ac67cd32162cb3c62a8b2c58c392d5ac59c68a25eb58b290152b80458e59de86bfad456f7bb94b45051245cb69e0eff144d3745cc135918a0207d532da8280d999a43fae0e47fd39992acdf31a8e48e390a52b919169b39e33e10b8115729a43c4699887d33817a7dd1c6b1d432c5fdc384186abe145b81a609eb7144882657d94ac0adedc34e56f5d8ec589c5105c9f125488181e4572c32325a6d072a7c8cfca28037b3fb92f3399febf93f4732ef54bc59b909949ffaf76db93197be117aeff536efa637c9b909969fedfd20dca8c6dff952bfdac4bff5289266466d2f9aba9f664c62e991850980aac13934c38bd1c7600420bd545da7550e1aa293376ec2f5ccf4fddf4c7bb375d66a6f9bf4734253336d10feec28f2efd9b5b32a37b9e462c3399f78f7fcd909929f98fe5f14fa5f41feb0dc88c1dff237e37050ce031b4ef609870ed83a7417bd2392e7b3384661691ccb4ef8ffaf1cfbef40f4d734e6632967f9b69accc4c843f94cb3f95d4ff7cb5b4ccd8bed977d5a2cc4c363b2c4f3b459929d9e36c6eabad687a66e4412e266335d646511bbc39d4f33b000778057050f741d86e99990012675447b54599b4b1d4d8efa7e02f2927f069d0d6eaf477f94932c7a195d2e20bb76999214545dc9619121f7037f5a7e8954c02f3cb6da562bca55599b91e7a7b0c82e556e0a1cc14bf73a46d9170a90c3c87120a31a1ed3bf2d7bac309e76c4dcc70860e5d803784aac13f1abd19dcbb76324c3140bab597d08cd2be672dada3d6d0fbca2145289f2b33b62e528d4d5cb8ac9207318ca52ca23005ffae9e8a52079340e5128cb16ef3995675ae43e4ae0210b1ca374bb5108256452d77c6e50f3d8e16948b66903536348151876d996616c334242e265fd239a815c0e17f74d453fd005a96c9a41fe584f9c13a1f284887ee8cce810305f4a5dc819146e79700e1290e8f1a387ca7b72efba24b3ba80123637d81c34e2898e217d0f75957f4b3d130b2cfb1b7895aca82bd519d2cf2c9d11063bf6fdaff2eba8b8686798220eff49275a5508704ca540857e0c58b84a342fc04b3fc7dbf8e3a784a0522e98259d4de5a8e4158ce522d67d7b44f9e74a7feaf83c38d96714a996eeae9d4df859701183a8185959408bbdd07d37ddcb23e81b163a463f164ae6d6f203f9780df00282122871eec91cd5a3537431490ff406e017c3813919de73de6d49274049394c40231c7a5240ecc75fdefb6af730714d366e5e436388625e6cdfe8cc4cfd4006f56093ed9ea1f11184c1b9541573a6ce04fc1045854ed428434cb84b10f694bb6b7929a1994db9b63fb6cff275820cdc62135a112d289df4d13a01c3234c857cfde7f0e8288a0c071678f821cffdfb382445ba9e83e76d2c241fb10f5088bd4f4ff649365baf72bae00fba9038bdd2e54d22f4c3a81890ecbce67c69ff60b4c1822b6ea008c3c587d83261ac6ecdc747f9278a0b91898e07f3cd27df37369931fca4ecbc65ebc3b8c2ba5fd702124ac0908a5c52b3457068830bff5965f3a7cfc22f184dde0747d14750c088b80d6e715085085c471ccfaba01689f77cf415b37f1043046d6a48b0912f954ae1b100aaf5ba20b23aa243efda48d640e85e7403b144afd52d523c65702184f14f336c7121807fa14353dedb1a47abca37959e046d033672cb8b2502c0c8c3b5dce95b43ea0093aeb4ec9b3094b313fac5d49ebfb6074c98c19a3aacbe4f15514dfa6904a724b8a850b59361313a9a1860b29231910267f3b72037432d5257560819c19199112e50695c6d4d4f051bfdf9e28311aafca399d75f23140395ec92ce98b30e93de054b90856d21c57d08f6b6236347c65151a60daa404e37fcd6d6fe2c466bf0614f93cfea93a9968cc955488aed095b190ffb97e5ad0d690cf0ea3ca4da5383d3002bba73efa9fd5d671ada9cad68b1ca38fc1eb9d0eebcaeb3026a9ba832275ab81af2c301cae946f6aa0059132e8a15e3199c0800e5aa4c6f5918fce5c17e054c6b38305e4de1e059c8fc61f7ba009431eb65e6cccc1512928e62c07b2112aa340dab64702057500ba14081db391546bd9ae80a91f345a6dde7cdc61b9e6d1bd226fb7613c5dd027f359abfec568ae89c5125a16b7d2cdb02e27c1ee0a68cc5fae813c8b4c20f788de71011cc75451925510b5139fcd85d18d3be0d18d458c0df0def04fa846f590e58166c4bbfed8e9164b9faa93d89905425587d62b43800a3e725482b344fbb732dde0b2cc8638e446ce1278b4b1d37bc5ea0431e2393572f0b257c106c94090cbe16e0da9a5f611402f8f0a9798109d95e8e2ee12d878a8e6299eb5d1dd564a47fbab11f2fb2b0759b0d67f1a827438cead1ef6c69722397f8c957c9b4449434a492f4954f377e8fb67c9b3137f9a0f0f5e91777b4a6f167036ae74390cc3da690885b8238776a41c359d79728773f7982733b8eb682747f1db0422921ef7cc71b5bc8099251451020bef3a8254075fe48455d94a6ef2afcd95255a596a11f758c695f01b995a5a4d6a08505c70928a78c8778a2c21f2b84d41528f66d529acd8a29501f07e1c35efd16192286a86a182baf3187a57940e2a3c4d41e199c7501c111139e0bd379b248e58740a741abec48fa74b8d71243423a55e2d7394681e6cd7f043f59c4f620c34f37c9f21c8b343e16701ef71c778964ac2e0c83f68814fd10285997ffa017bd7ee851c727309e9a122ca91707b17d87fbc2da9e318525943376ed3d3d84fd2443ba4eb1559917efd5b033525ac1a28dbac634402310c100f0d90b84a6d2c2a37f6598d722b9729b725c9a898266a81448e715f2b9b3122b73f8df16b53759065e88bbd7815666666ff164f34e099304faaef89ca4939c04723f0ca19fdca7fa6ded0af05ac2cb2e1a2b8e19f51c9d35bc41cfd309fe43d59da4d5d9ff4024151fb73feb4f15cc517597fbf2ba1e8349fd460d362d818a75c35ba5633d58115252518467ad36a8bc10167d61ecc147157321c944e5d36b129824f5c853d9e9e92eef109055b12aae516a9d7396c9da6e09ec721429dda76de0a2b4e7be996c8f81d3eb1863733b2d1bddd6242403d917b832bf4f69659039f078e93f421366f522abb4898239d264bdf58979d4a73eb477a0af73c1e7d2b1dee9d79d8541ea0a1565230900de35402199663057dc55165a86e6c5a8f5b21f45b2e8b6caf4bee226efa48239899f81810d6d3c91ca4a2cd62dde0b588401fe6c157ab2e9e0136d20313e81cd36b326d12e9b3b6b93ee53edcb24863983320e8db91f6df12f3e821262e062bf02a952cc8fb42c678174ddc78ded67dcfa1a1c661e43f779f16d2042d7f5a69535aa78a03ec586389547decb487b8a523a48feaff3308dbb4a4dca28c5b5200d4dff5d64f429a47cc18858f369eca27dbf2876784d3ff3316cff4b0651d26d6c445cc04ddec8192b83dc61b690b7222587e3244c2b531ba07848bbd481832795167215c8ecc8d1c1683c228f563049143b3a457c2e9e99c175870fafc1c81c074a3ff7be762deb6b4ca0478a1884422526c46180e7bc150e3aa140053679d1930deb62e03f4429d20928c227ba80fedc16a93b77809925125785f190711321731d58ddc05f09e8f5d0621f9f024c487a8698d4b39206973caebe46a6d32d30efd5e302cc199dfb72215ffc2c548049ffc51b0e9e37c3650654a74ff7ec7d119ead2d1b92cad39c60ac1c2548c9d58974c99be30309c9bc8e3ff08e8812a96fe11b688c00142440383f333c12417172008ad56f501de6f2f6df8c072fb913c79ad6115031de060947675440533182a0ef5df97cf2ca33fe2385d4dcacba1950cf5c6f002305a7459f5085562df5195fd034f7cc7dc68ea48f1dd5e43ec12bffe01d31d9f93bfd1a266fdd1f64339fc0f98fdbdec7c3cf34f41df5aacd55edf987532ee6a227349b0389a38a1d0d893a8d1a701849a1ee54f514eb04be081a29a21f1581f29174e0ca32ae7f58e83324f9943aa7f824e6090bc434b181b1c0449c081a3e83cc89a75e426ddae4d8e3c16b24bac9c3c87c0cf41a0b118c6045943044a2d5dee2f3f285b09dc213829c1f9c95a5adf7a4ff610a31fb2b7846e803f6a434a4b0defbdc6c190e8ccef1e2c56b1b88606c2680c6960d9a35870f73c09d2d89b99586b0f329fd31fa08dd3155edecfe0cf9548964930ee7da68df9a6abe3857e41be775c9655c416d581e12bed9dace211fc22abc8a0c9c5e4bb742f5472e3172a32fb95f91665aa088beb3b3af48269ef539417911a257c2df80161116331b94db369a97fe679a085c2171acfec8ac37c10fc4639b4cd434825576c229c87925f93a3276dae62bcbd041c8d66faa8259c18e78151633cb401bf4a978c5937743a2387147369e75927c7cbb7cf6705ca2dc464e5d46a2306657ae0d8137e950a690a718f0145aee05c25853663680105f1df1663501be7d5dfbc08b04027845d66f1df894a1b68a36cd8bbc68ea561ce5aff9da80677a0d8f4b22c84ff21193c414485fe1ecde682c75b7f0386420bb3fc3e17387684d41b3d7152c1dccbe261895988a8af93a7c69790ac46a0e246b84e782d0993a8b41d2b901812cd668da2b7a9cbabee5cb24e7aeeaa783ec0ded09e3bfa0e1f7ff39999a76a44b0043a54ca703e3b817ab2aa33c5b91e43c46c50bcbcb9ef55c1e2895f9a9e6b5ceb683ac98ac49e720fe67ac363e62e129299eb17c4ef9c8308178f75cebf671898e594a83698915bebf368f0b75f0769423b64a5d0f58d3bfa6732256e412ff6ef2cd6a1581f368309c53a4be42d6f0306c37aac8d3a1f522e58858f048f932a133d8ed63f3e3e6ce47fd6d90e600770c7500fbb5f811f0315ed2247602daa75211fce493b4c46d88306a8d3c26b450f1343d6e865106ef72f173a93650b437cbc9206d5c888dceabcf8b66be1d651277bee7ac30c2da667099dda4d249a74aa9d9c6e309e37e3242bb1ff1b8c75d852717ddd5cac2894fafc840877322b8cbfb3fc6c7872c6c1c8817a2b712b06c9f006e7b30b5f58bc7ef477c3ea4cf981b0a8e11579f2414c8cd15fe50c2d3ff38b069d8daca0e6fed820a578f40cc900ee3d0e9b17cee03265c6e8e02642040a52d135ba5e59e9b3c9a001de2c5f7863a8acd8e1ef7105d3758a3c633234dd97779a710f55fd1641033300e415c2c603ecdd2e1148f547d7c14e099ddf2af6c3ac91f458e6ccaedb266d1b4101e7c86c6e4d9b4139986c95339609b2e29e76f5a95bbe50cc19e75f47383b55142075ecc9c80e4f23c043ff61f09c85125b14b55017bf08cafb29535d6b7c4e0d587d7cb23dd4f096be0df8a39a3f7dd8e03d872e38a3ea627ee2255943005bffef33eaeaca44f4d0fa8e52674fbdacf34c3be123e771fc671c6a6cbad1d1507ca4a4f2d9c5d7bc165eb09e74031a6222a8f0cda78ec47d2c5a6042e73cda84175eb30372af6d1585a20edd2b807878cdb02b71d188beb245824b83cc5aa61ff314b5f2c588f37e34673e06e894206c944f071a204fccfc42e490918a936a1527507383c0e2da7e8a2941fe344a915da8452fccb7eb325f3aa4495ba6d720b44efbca179d93a1cfe8fb6c635265c7baf0f699fa1c52eabc82280b9c8ac083274e39fe722247d14994dde3f19c67426e806568e664f98cd2d41cf6d916ecdcc7c476bc3ea4b6d7d282b219f096999bba2c375f2f8be55c032d867136204aecdf70ed89abf508383caa5ec6da14ddaf3e535818d7ba0bd2c55a1177c15b0b5b530e5e5eea08c30a019e415d53e825b643e9c3b111565e430ad7b131083399ff35d8685b7424a8936db278fcfdfdea3f7529195661432ef24ba426cd2b77d336c9f4d13e314e124f54c1a24347bbfd637cc3ec756691d737592eb7a5fa77c7bdccaa89b52f0c7da7a4286bbaf6b5311a2d1d0ae02dc58a2355d611f0a4a6854bdd16d3af2721bd20a1a86068504ea7977db4a25b3732b2eb098e23cf56455e0ba1fe35ac394d23315fb67597d483e4e5fb8b854c96679a5aa5e84af14f8e4ff00d4d199922f610fcc6e579abbd845b64d68f958a2ce16ebfe2abdc01ef557c19f761bd5ef02123457555a07a5f881147d6fdc9559adb1b01dd5b19375e9421fd655ca3434cd3c65f254c47df59533351ce74e6b60e521b5226f07eb2e8c2c33cc8956b978080e66c9ecd632a5a2da63038db3a0f7ea64c3003915642dd8667c262ab2105ea5dc059b613a3cd146270ed5c677fbbc9b61bbdb7c424ce2fae9341d31ffba9b11a066bb7762f023549e5aae30cd892400d60642e0e2d6098357e3cbe0a63c1a952615f88f711fe780c47e7b4fc7de4646584164f967e1636966b4004796f9895f9d6452c535dc2e68f716c5ccce90333b38b78d6ad3a88761d0706a975d4213d06b41f55f9f77b856bc200637d7504066fdf1cc0b452080eacda1abf8d47ce67d15ef3fa92797cd11f5dcc44cbbed9327abd0e18faf4ca5821761fe3899c472e912e48b2568d8f027e27e4a68f5dd97fa3a583f3003838cca3975a7b34cab462bfd75214132aba875e309257cfa721227387d60ca55989c9a2bd10b9a53a539ca3aca8225e49fe5358272d4c7c1a012944f053fd686dcfc128451a65a582db3f14c098420c36971e92dda82e1d6a04d25dcdbf00301def3216105b63e848d70d7298ff6a1f0089a9ec146f313008304a930dfbdbda56c34cfdb9a46ee5ce32b296293b3234b2cd533c50c6e8b979f568eed35ef6084d0c47e2b7b63fce9e217d00ce0c048fed4f799b9928f4402b4817689e0b7f28326fe885e2e9a08d8fe50c7d5c87a1946702210030a371a1d74964a33780fed7c47b14b7300a25762da724a02550936640fa14925ae1662d9d1a42ee7a4b0252b960b6feffd7adf486a93046bb485d8c4885f80aa735b6938db4f6c4dbc845c9ee54e3417324c484e560ed37d7b57025ba0fc5ed7adca7892aa42cd42f91df555fac1f25a656e019119cafdbe38e0cee4161cc37bbf2d383901360d28f96c384f709a111a44f39e75022d1c980789ffc34a7c969ed920ed816f2517112ec47c3b26f796cd52729141dd896dbd2bf2b33b4be52a90de653a5f45d65e9a4a7ee75df1658edc50a21ae63a5b3172876e0987ba5bdfd8198bd748c425087afe976642f8dc9fedeeba24bf3cd5291f83a4302c46334c4bf78dda5312a771b1a1da1593496587e0caa5e654acd0c8c3fa630b5198402b130e2356a804939aef98a954a55c596c3b1c1c3b4fe06420d9663ab0d14f8d1daf51ab0e94e7ba2a9c3abf2217e20db9d71d8d0ac2d323059dbaaa2d1c202ce9d9e95696bd9531f2a044b4e30f978a8459e964040725fc13769ba0dd846cda92b77bba4a2c8d901e9c2e0bfcaa73d113f38048f7f84b6ea568c4088500776ba2e5575ab9299735ec92a9a92ad5a5e7e416f168bf876619a53f28542b7622d26dead593b9dca1b0f586baf8fac23a5c6ee360e8747feef04ece5e3feb250d9958056e82fcef6ef3b33cbe2d695776966c91f3e054eb8d1fff26fe9ba3e9efb41f7c2adaafcdf2ab83fc79e10d63e5e773ef23ba34220d7441fbae759475f5e0f224b902a67ddc2d0fa658452669239215a12f09023006115b2b5b75f33233334dab4f3b4e2b3de7c1e0ead3daf218143c41a507f2be4080f585d6464e1078fe8009c659f55672bbfe1fc3fe82f5f21e9d26d7d61c21e2c9501022449b7fa58fff37070e1ff8bdb134b52379a172dd9ecac6ba4aea366841302b9521f23f773abe9981894625f6539ad9464d49456c5ccdd50f0e0867a55161362f34e4dab69fa46a6043d3d62dadfd191108385deed2c2d03e542c19e7f4b1551101038e86b153faa58910a22bcfbe085c5bc7c399d51e7b5df0a1269e7a092160cdaa1ec2e94e00ceaf4d4589a8f98338a724159cc97ddd83ed29c01888dba59dbc4c2584099463d9a458bc932dca2fcfe90861a5e44b3b4ab8d495794ef2343c40288fc51241adccaaeafd16bc2e99332b19a32d392e3a6a9a9621aba1d27434f8617b6da11352186a11a24e002fc66847db9dc8f13e3b81004bbfc0412da00d5d569114e475e77dbe9089b1cc0d5eb727d414f61f651c7a35945ae6fc8306b9a65337814b5ee584b28c7e801397c05876ff3eafadfd55e487c638412ce5cf6c0f5710dbab750d9ec09193339cc6c345771eba59d3c7dfe699cdebad5be50fce7bcd9bfb7d4c662816812ca6c191a38901e81923628488365b47df51f3f9d96d9f64918710f25e1f8d9293f43acc2cf44acf1998fcebd8b3cd8f2fd26b7c45cee44abd2abf52b936c90e8b2a1b0197d943a9a66de81f8e137486ba81fb5f9bae0aed2d7366181ff4fcd33b45275069afe51b94d4003be6d1f54f58a5f442ccd9658e6be5cbaa73591fe34ad6cf247d926869415a3fe6210884098ed407814d722d6f874eb23c713748d58973ee838a1d79874e963e960ed7229e2c68d1b7d30d1bffe6c5861848621e9a3729498c63ef4905d43213b099ed3302148e9aa8b6dc892958eaf65a60153522745171020f3c928b3ad6fa6e93b7ea399217725a2b5b69e568ff6ddbeb44d94c42490aaf76b391dd050ec80b2c1799634c589fa9111500335c45bbc5863e93531d1c5f0770b9c46b4d48aa1a8a53c1cfb03939664710f93d6ae0bdf6710e22fa9e5b5863cb0ae172b451ad30d9f7d682bcf5c47743e68379eac25951a71b26ad8cd9847f693c81d8e236cf4e7af31b2ed86cb8eacce176e092ed5dcd4764b92336c029fff9e0c0c79afdc4868b56aebd2fd4e78afd90edc6e74d5f256f1b860593cfe528a7b6ca72721455a3ea74bc0c4dea7f142e4ab849316575e85a1e75d71c60b798b29464a01eab1b2aa67131951376aa22ecd070054604334c53083b9f16498c2c92e0420afed3dcde2e9993a2f13b0432f58210d26f260e07fcaf35bfedf8dd87f7741c01516cf7861d81dca2d33693d4ef3cd64a45625e70851b594b995e5efaefb7196298487569e94f41116891a2433112a1d4044fb88aa8b54c1d602e5128bda0aa00f654473631b460c22330ee63691026976524d052bf0fb0677259399a49974b722e57e2505923045766577c6a9af36c968a82e83aa43464d323191296bc8a63e93f1aa6390ec91b6a96dc95e8b6cab0b975c73cc0ef30630fe10ddcb33e61be907701bb1e727531db29b970975c85e9fdc26c7442d19d593691d19989bc9b5c9366af600594505054c69ec4b1b2cd8062953edef57dbe83f277a0f3ab7cd49c9577fbc826e9b754dea3ae4163ef2715d220ffffafed7d37fec5499f77f3dfee369c3e36ac9e37fe965c3ff757367adf26d15ee0d15ca76950ae99cda16329fd3d5d9dab64a3d9bc21edc3556ccbe7ca4f4e35468599bff15c1ea890e2261d687f4ded7e136c4cda89534dd83b624bec46ced783236aba5e70c4ce935af3baac6f812c2947e6077194dfedc586800dd8e84dd02d7e248afb4b98dee4efdbc8a9a49753732695af8e192cecd2af420e214588629a3583d5db4f6e436d1425e7dcc9f7265055f89c8159b97ab8bca8a7bf82a7af4f5eb5435207dddaf8753b3b6e91b188e6507b06d42b34835c1b64d3c62937370c5957d69bc1516ae33042b0b6be31dd6f2195a38c9942b5b4ce56ca55231531b53f42d927efe7bd1c97ac85a05316c2f54fe013e40e9bb731796ea0eab58e328f9c56597effe84bd03654816e45f98cb6ca88a7236cf1cb0305786cabf4b260712103f53b0bf337bf91b48a921ab3a660cae64ee816835d4c45bf85654466710ebbdb4427b03a1ab5490036435300e0a520b7beea69c724f47226ac69b3275c7f77b8a8bc04bb6ce1bfa90884f4f4d5d9d561a9f16dc2b709bfe96c936e3e968e2c3c8252a30178aba80064be1e37eaeab6c15787bf02f3b1cb4a51e5865267af8283a85313c4d60b0e00f926e0d76ac5e8c281da63467072a0589c2374f076fa9957febe928d710305d0fd7d0d11dd86d741c98c9af9046185c801563c9b514945b599f6946a6b035bc89ccb7fd65980ad4af2897c1aa011b3382d9facdeb4e2b30ab0a8d288b23ed4b330a0ada46bad1de3202979076ee41be124806755b2ecdd384615e2836b6fa2b578256ba48b1e0a0d7ad19b8a0a4249ae4c572d7a2290c4d3c34013f19d215805ca210012fda0fd38fa61dd40fd31e25612eeb1a674b4f7e02bf992cb4b2247d2c0c821e4aa2a0bd3b80870af0073d4299ad2ae228c687b9874127c04f5618e4639eb787ac759b2e132b253474d70942abd0bb7ee8ca38558411159b1f1a4505638f3e3ed75a696b1d530feab35bafbf692ebca7d56ecdf21157c834634fb1c04d7a5419aa91c8739224d45940658802aec6225e7ddd608bb88d466d641433160395fca3e17c50faa256b9b00fbb830a60c6a82448082fe49d8dab70d76590a6a781f3da84d01e5782c094e6e45091559c92d8d846ac158689d7f9326da356218a3db5f59e3ad76dd8fc949542d40aa0f6dca69ed56f6d8e4da11e341918aebbd293f39cf99ce4c8d675b5cd19b5c4e52056f2bcbebe8358e1b4bef202286dbc15af857c9d1c31683b4fb32fa0a436ed850f0a1427dbbdf32c6cef146e2d483b56254dc525e56d96a06ea7ea6e8349f32757d9b727d8f7643a3b4c12f81926064b98949bfb4b0201f13632327f377318f36c1c521d1174116f5b255b61c85d4eaf796e5432b923adaadff5f1739a1b53e0c524dc6480cfa80b467e5c9317f0cac578997099bdc43d8ab9d274d54adc99b7e966d8a430551d40a40e1751e90c503874ab7a82f0aec201773350c17492854552af02246ca2a0e780f64e0e489a61727d0f899f3a6b5eda4b0d13488824506abc6d29c59ea18fe40d8501fe8aa2c4e6dd6c4c93ccd84dd30af0566d803ed7f711c38fb8d4b1b2b591f48a3a835117d043341a6e01ada8fe5d380fe5ebcfafcfd6e14f0e19c75c0c2970783d860f3cfb7e9d64beb0fbd2456872a9c2fdd98d5401cd572b2670bb6a3aeaec1ffbe8e138152308b37b9c5788f34e87ba852c17cb1ecff99a46619602c6a8d91576afee5d4523f4caca5f421853c7a2d0d9f992cf1cc9506143d8964698cdc78f30ef0a88aca14312f0b18e922fbf5ee05f0a812a33c3d0e7e6401bceb0032d360f01a183e1970e2d285d388684f4de654c776fbc7ba847bc621b39708213ba1ec76a4a5e2be6e527c8f76ac58c1b8418ee34c340c10635ab44f44d71c1eed38bf301bb38a9309aca76e55acedcc476d11c2cbf226e03a90b8a894bf88f4e96180df541431e250a9aebef0a6d648b02d155b14b1b5738696369728122c85fe521e77cdb24fad822ad0e6ddcbb6f688800481f05bb06135f6e530d2718508369035c14f08b5852955eb9452f4416ef22434d77cb9a4da4bd59eb2c635a6607b7bb72956ae9344ad7ec38924ff6e75c3f407411f018ada20b75d9acded911cba70098e775ced9243f9e3101564a4017583c621f0fd5772cc9a60b0782edd101c19d11132825bd80e0028808dedb158545bc20b6dc134a7dd14d6768e9ef151940bf9bde37212c96961702aa1120e81914829a8ded6388b2067f7c9e9a1cb4ee2a522bcd876e766436ee78a524266965cad7696c821c5eadf6f080302da35e7f0638a9d84e9eeda15b50573748593d90e7344774432c1577cd668ed50405bfb9f079dd6708866d412e86d4f5017379ef4107f7e1f4d3ad54a2fe3b776cf50006624a595461b1957b1820758b990a5e73cb7ddd88bb8ae1a6fd097dc2d5f003964da5fc5ae9b0750fd5df81506b6f33f5c4e4a23d75b673a3bea314836e7a73118d75d772281085ac968bb065f5d42eeabf210688e483fb267a5419e72b08eceeaefca068f294a968aad5051972c5d0f6c55492748a1c83f6f5bf71da311d552ca1e1982f8318f2b60638be9f1794a72fcec609441895cb1c69fd36ab57b23860d00af6bb81dc08a2b68868fd68bd6ed74a9c40db90e0fc6c500c95a99a0581a72c332b595f62ca5d90bcbbeecea2964b1591a00f2390402c0014e6bf6f73e7b51b54b20d590929d800aed63bacf6358987e72253ae7d0f6d75db3caeaaf62abec311bd0c61099fb15209de9bb31ff0de60a1781f40d89e9c1b0e196f619fd83a67550457fe128fc5378693489d082639328a039839ab08c5181041cd429442c57c7398735368bab41ac16699ec1935e0c41ae69595377c660e5d8a359d5617a0ff4df2f9edbafb18b851ff553416a28f349332e051526fd5ccde55fe94c61c11c2c8f15a882282e128e885c510153e425fd44ce2f10b214ed514d0f1a9afb8fa7167279eccb88e9e0d93db05194432eb91ce51d6c99ea275e42a76dbe4731e6f0e9890a72929aa859c5e3d57f5b33a5cb5ade27361d8e7fd00a0c74e0800548612767e9856898f274aa16896e8ed284100e8691e02f0fa0cc786ef82e6b83079e4a6ff34a6ed0a9ca60c39ea86d866dbcbcb8cc5d134e640be3125ae23f3ad838ec6eab3b9982282f4961d65e32fb30fdfbd3f70d5c19a8bc2c5709e15dbc31aebcc3401bdc0400041a4000a6f8ba81018d46db82461a46a116b6098cb6e24a0b5047c0c08354ac6b8407fb8e4c6e1813f3422607c54e93e8e95f90a7894e803965e217e9622fa274203e0e81826db1f325015da5d484827d9c36d4d6bc4587eaac285b57dd2d4d8d57908cf9ac2423ee28171e793886e47cace7c09e48c68a679e3a91162dd7532dac1b1f56a6825e30ad96ad645894e873208c0164139adea19c25651231b8a6b6a9a18ded013b20b6831cbaafc58c331801c90ef13ae0f3ea42aeed3c8878ec14b151dcd4550f5370e493f2e9f5c50678696bbfc3d1ddf20c5fbe1d60fe1bd1422a2dd4105f03f673ec5dff0900c8fe46bba014c98f9038133536d0b53c9e0d2987ad55556fc64fd24e6becc68100b7a366c7664e14706741cb13b30ca9835ce917691a09ba97f25a2ebbe43dc0afb14dff7696ebda753794f9b9b5296fe7503e3e0263e027bb33d2be501af9a85c3a59a9a33be65be8c92929281f2e587aca7e90c272675b4f61c9a8031a1149e662fe0fdf3465d41e0ff42fc29a15077251caa5ca7519634cb7fbefad63cc3eff50705e9cf4a329cf22385cffc390e9282adad9d90c277d324759b8fc526f3c003338ab0bccc0cf9aee97dfe49c6011f0041bd6f4ff7224bb3fd619afbcf4ca30d438a7018c0a1cdf9ce01e4bd4dab900d8fa27a14a5cffcce6e610137ae16bbe227600bb0574ec99c780cf30e2b7f19a78eda007177cf93509e6c0a21c9d8326f54f7ca84baad20d2c393f784d05792a621898c0c54071d36232441eddad4dfa62bac457eae27a332a438143361757d341f51fbdc10bec54b166935208f4e34f0dc50c51fcc79e563b7327c0cf18f041a1e91dc2e307d15ad2bb5dba573c1023acdf993c3e7e05f4b40fcbbb4bed47d43a23ce3429d8c1feb482f3f00b681d12e10c0df11eb71cba0bd137cd203be9ff03238fb63091856770f199ccd53af3836479b3d7db05cba03cc2531a4ad0138e3110ad100ce34a7195498c71f0bb9d987559fab0d3d7630fdf796026fffd07e02229fdf06e67f050fb84006652f76be717f68104722440a440bfb88c3b7b71842ede2987041769d10b705eccbb0a04b3090f79ce5f4b2bfe0d2ef74391004d9346e0f17ecbad959961a145e370be7db56cf545ec80e9085d2bd60f740a8222ad4d8c61b426d651a02802801871a851b20636c2e7f8d90add103c50296dd4be3e36fce6702088566e1e6180186582200fd09fdcf52b567d6b0409e7b668bac7e7cb69575e8437cec6189302ae0a874039b8876ae282350f7728725799329d72daecb8cf24be1f65ebe16c6d1b99a387187b6e282a0a5708fc6a751243c8f6414259a3a25555bcbb76f809a10a6807781347863246e6c88e147278fc601681e6a9b9df17a0e207f925bc4cde6e344281d6c9777d4010fa0674fb6e8d3760a526061539eb24499d6a556ee60c2530199f035b626072001878af2e49dee34e531a0f9b38c6a2bc39e3ba17c075ff12adb67406f3aba89c53ff2cbbc5aebe2fc3411c42742b1610f38e7d1c642120326c3882925ae9bf1389d07109353aaaa0d4ecadc25e13cbf13e2f6b31c62794c264000b2897346cb2717e7f978b568555ed3211732e79bd230af11876dcb63308b7c382d60b2fb0df879c901c22f09a7550f62c093c84412f989a102b91610990e38cb8b2356533847efe8e575531eba3b3a3102bc09a00171a741b4368ad042cfeb5612b695085ed7781d80a67bcd430fee2fea54305b20d771936982570e2c5c4a59599b8fdc7e277043288f2616ac116d254260acbba807b5aff4afb7ce83f5f549cb57af89edecc0e0d99b0f84c593ae6861cdb3236f958f43a1879662f01f0c5c2e8263065117f19a53ce22de8c896094d60141bd8ded951d1ba32706f7c3961be7ef690759f00d008b879bdc8ad2b6984c9349140fc4904fe91659dec637a4edf6f8a2ba40017e4d59acec88adfce2398c900877de72e98ad7b9077b9c762b91877489f97981b3003a179521f10042f3903fe87f095d4d4940693ad22334ccd8a4d0243a8e653e6dec3e19f50c4e0f44ea82e40f980cf8e033934601ae454b0bc7bbccce349b342a4d0ae4114a1cfd502a85da5050f763d16789559a676bb5b05010720348ad33991ad1ab1996b23644db8331a55f7d3a6fda40d4d75f8c3413d0298293c53309dd10b8b41ccc0cfac86af6530a15c08662e336b9810f70cd9ab240d1e997b808235344049dd6a5b24f4122ba58d913bd26d71f969a4af367b6d7cdc04dc599e81181e9ff5bf4d519c58995b8b199c6da93327a94b4c1b7b64e670f8759e94708485848987e738b0db37563fd6b1866e0e4718be125582079d92abeb8a72266b034d03284c1cbb8b203da15a53fc91d26afa1b856848e1f797aa2f684efc6ceaad50bddefe25ce8ac8a3721001af701ba8185d73872a4d827c4d812e690fbd9b8b9b3a7fc1ec03e521eba514eb7d5baad3e727e92b1f02e15224040e9200b86c4391f7d4ac4733ada4d2edc0001755520539bfe9fea513a93ffb95b5cb80102ea54653e9be43375f4d91cdde06781d29a7bb8cd2a1579e3a8fb7f48407ed0cb92449b2bf593326cbc03bd6df5a2f4e2c3bdc48ff0938017a49d4390adb459d5c9ff4cbda80ac984c0f43985e84caf0cd8d82ca0c3d308279f3610c544b8545e7ceca01c146a51309465d3447597ca5eb15d0a9c4f58f78f30f7475e73fcacdb8cb9ce005969c182ad1950f24b913151fd322582e8c9488205609e73a8e906b0d7c316e5daef7052c409b8e7f522ee697c65e72be2556888d1949394653239a9dd6472dcf720b789237b714fa799b9e96dd7f1211b73f4292072f36909b4ec3f9c5036e2ce4d5edc7bd212bf7e921ee9b6a90b13d85ad32acfcb14a5f9bdfdbd18b93fef2d3ae4f994be896e590c4df12bd7d9cd6d6e125407449d57e47b71a96da5756bda0d78b1566b30776315d83a2481c1c32061600786e65380aa9742ed77862a004cd700f5b0ad984822744a52ae72e46076d14d148d71833f3b72e4c43eb578796a5d2a75867ff3f1578b7fe145189017e9de235d87b54739c05c2ca6fa818f706ab01b8bb64154ad4622b811b4a2f48443de94b46ed681f6a8556a8fa43575b0c0393261cf1e95500a457da9ca0f1262fe4e21866e1d18080c617e3c154fc94e37cb7b8bb3d2c59949a55778ec89151858be6111989855a083cb0085550b4f24725e439bcc5ce19b030c46d83a8232799121f051d0c2dac2eab028174f5fec19a27d1348fb4e5fbd4aabc3f38a5e810340144d2708bd73bee14f2354976d85d0c04f799ab755ff646f9a2efa8f42021adf25a87d0776e5cf6d9fac2580d2c2d59afebf4d4bba7b706416ecc98a53e6fca160401b51950a7a251dd3720996ca6f90606b49861890c78b20f61ad5d6420e81bd0d6e7ee4145e4c0b614a39b35d45155e61ce29c0b5848846eadbb6049d4c66db4253d8f27dd77f1364d93e6e905f38c045a0b4039daf5dc731b91a650c18b68c7eeacc4e0d0b52bea8a961c11ea80608ff91d07f7e098cfd31bd84d367f240d08eaeea47488cdf4cfaa6d6994eb607d450b83984963b75ba12e81e14dbd711f1f423751c244644b82b27e4c4cb48d9285fdd55b32f26d02ce42fa97d81d7b1076d0657162d3ae5baf39592581dd5a353cd021f3746f4fc6ac5806b66ec1362dd0c145b1f280ae3235590d27763bbdc5cd8974cf1d60b611b4b9d1410f43d959073f949f64ffa9d7c21c4fed10f237c7687c0a03629f6333fdcca591b258ef52653b16c85509d982b7250f5227ab8d28a7658abc978992c93b8c4372b1704af2550800f89c4469ab943be3e5a496d9719774c2c74c314005f80dee37758ac25afed8a8998262701817100872504c7534c9ce8b203d40ea0866e3091853cce7c107a81371563bcd37370071b6801cc77f01447016e838a9bdd5bf6a420df406fc655b5ce23631e2879c077dec2f41534e41de3551966a50acad6531c36cafd9c6245847a4275abbbc15c978cec9e1ce9726c80979b4f3091b4b2e962c8c198338466de1e5e542c9d48d1769d8703781a3a9e9dfa50107d4958bf01874b732ff414c8ae7a5243d9d3da160dddec898083a928060661c2618d5930919ef3c6e4624c19d5b01f385c1e117d54e79036aef5cf6a6a23419a591472756f15e08189e41f371189d41b25b24dc7703e017abec1ce691cda77ad1fd2573b8dd354687b40c31cff2c8104b2b6ce4d9f344e5454fe1f7602f85bcfe212058b400e22ff8a62869453a53ff528e8f44cd2f5a97434e0a9377d5172f41c9c342bf50fbc53975782a17799c5e6ce36a9fc14ccfd2a88e68f433a2ef44e33a15db873ede37a600eb493248e24952250e8f8ff661969a7a6a5a7f76040379ebac6383aba6b7e0318eef673937fc8d955df778834532888991db29b5933264d30660f9a06e1cab04fee0932975aca57f764e4e0ab99ce6065bc83f41b3c431c57af13ddbc018139a75e840cdaf4366ddc5e08c2a3921db7445f064d801f9538fbceac2ac0225f1bc53475369610ddf553e7da848189dbad55749f7cb61a46ecf8a2a9b72f715380195a3ba55c8e3cb6918c8e7374a4d2bb275d9281b1042f37624003ec811af53d2bef44a6a34efed0dd67284bf809e520cc3a9b1c16c07c0b5590f76df19d298e775f8968747ce21c0cdd7bcb3ee0bbd0cf315f3f0013117a1e36a2f5d7319207685635137c3e749efe55ab5dda8dfba0062226cd688063f1fb1de81fcaa0f513b9f03b14a0160c2c59bb170aa33ba5a8d4c79ddd2061ede570e2be0257b9c336a52a86949a6f9e5ec537f8e36b40f64133e0b95c3765387afa69b361d66f971c89a4c94739cc77f269325868202217aed9763c339312e441770677fa3992706910b3e519c71770155f372984082b261ab353d7c7339de4466eae9631ee2900606bb03c47dfcf10c391f089414f90c344a8afb2307e652fbf91887c0c5cfc5c9c673db1b8ccb01058c33a392b2b747acc969b7198cf5e72182173825e02160a3862e40800dad82c4afac50cb2ed455dc9bd719326c277887d1b52acb61db7dca8208130c153b2cd0834009497b48ae291ca6c128e03e5193aa36555d7859266c31b078f85ab68d246c172d6a0e48c7ce55d23bcab378ddc3bbcfc941db3c4147a3bddc9354fbc0b2cf61e1008f1f15e613692eefa67e552a64515e4c618aa6a0111b6b65715616694a6cd2ab1ac141f19d4bdb7d0ea15aecbf5f0d000871122077c36264149cc009fbdafea734fc01e6c722700c54147cf6bfbc6578576c411513553e879641d0ab63c15d448df9f76e09f746bc9c53f4f0f9de38385c3afd58eb90812ac4d9f1f6d565290127352a86dc02601b83aac6c410134a2bf564ac8e6274b8ed2ab2c07fae064f729c534a6c751501e4c66f857f8d16f8e328298b90db56112023589216b330f7f12eb825f2537a83b2a14c53f36010ca1e3c5d3028de851ef07643880f1f2a8e093406c82fca9216e347fe119428dff511097dc4c404386f79bced881c5c14bff133289d82eb9e2e10abae25e07eb036c078ad09ab964335fa99922f00ccc88a03076bcdba1f4d16490b81e0d8650001c7ab9a287b4cc065b2ae6bedb1765925beaa290d161a530c25700d3797990723f4c14d958d4167839a9fb92f11538eb780db400c67cbd970792419e8b4fc43cb133f4c42ec4577503e8b9cde2036ff11d5a2babc364974a804c92c34c48d3d3ba3ae56adc0d66bca8af8c2289d62cd7d8ef74934ecc3c86836bef3172c884d19f0a424033cb92e1219d7c028829390408894cf189ec3db74cd68b09e9468cf8727cb1224f639a7a5663a3dae915735f05d45816cf408acf35d37fb8a3038b4128f0405c8e84aa2833e6af613791d3236236b4aae43bb0d723466d66968c544c40f6ccef01f6bb4093e512d9ed557365766e2e8702343942ab15a91970b83371fe306b3ae16cea8b029d515e27d1dcc98e119ece1626a50f6fd9beb5fbc4d7e2d10e295616227408e42fee23c9233fb44812bc59b234d8533efe9670177353a86a160cf737346772cb9add984f231ce5c1264b8edb4e1d347388b7cec4c663be61ba9b49077f49e9ab15b0229c25f66e5ba92d480ae314f2d73779955ffe40df860dc24692d8a008030e9b726bee92cb88fd8e1a09efcc16e41c61e3346cff27dc724866a5799bba87bce6d1fb9e2711c3c6b06701456acc2aa7ec935d556f06a2409524266fcb0fe94e36e98210b980d08c3d72ed9b582d3a02439c9365d29e925f1987c795b10374a52f776dfd14f3de4ef8ceb5970e57e2d018c5a3bec19b6ca1a9866e2e2db3058c60ba5a558b12a8b5044e878156dd4206de0c9ac65019dbf3e1352661460da6c342a6d2c00a2eeb4d69ccfb344264d6b69b60b0c4e849406dedc31f834440f201b568d2da006906bbbfaa6b498c54f06abc0ec61ba031667e8a287758c0096e553a2b74e13e15d37ca9e8d25045d1a757ff97f039ad00f643fac83f63e8240370d4f86b04acadc407213b98f94289a0e9b83cc23f3f9c5a93cd9435f2ae1ac543fffcc90ac32ba1ec31d81dd2249419f803e1d4970e1649aa8007a8e30d5ed1aef69c986d7786a61f744ac08c83d3171310cb288597f457ece1ccccf33f4497fd47ecbcbe884d97405199473ec78fac463fb7ec6ea18e3242ae4f5d5c05a0168ea3082c437192e1308a68fd2da05bc9c1e39d926f9ce799446dc95725e1ffc354d2ce4a93fe5f910e437c9c5348e20947c4aa6638157f442b86553c8a43cd9e19b5aff7581c7ee9776305952f27554f8e6fa7af1ab56c9fb5a74547e6e059d05fcc5016098297b65172b5b44b2a2da346cd0e0424342f229aaed6d916d133954dd852d22700cd3a5e33cee7897f2d6c3e28ebecb53d28f1063704d5ad43861cc3f70ee2f970d36744e6a48512864585e9061ec992832dd93553bac890d7bf99fce585edd70da102365ca0c069f4e5cd6f479d9bbe437d8cbbe2083c606c5939d478b6fc1480f6a6eb96940a49318923d1df224797bb8ea4afa2a83ecf38d8fafe7d7ed9f9a427b3c701bb3a538696f805165999fb200f20b8b58faeaf61565394416517f98a1c7d64120109eae7774b5a194e82782619e461e888100f8bf2da53dbd2db9fde74ab9b3c1876e8257303ff6adc87f9e8196012dd28d63349ae52440529e0d20be4a6a075621ebff1685124e660d37b193a360a4f9152995d47ab9cba2f4f056cdf4d11f826efc0217e1672c4ad8bece625c17170adc8472223a022364c7260c90d5c4b25b435e8eece8960e61893b04558ee9adf330a88131c5046ae338528e1ad0fb41b4a16f581fe6875e9fde44b742144889b06678ed7ff6bafef25097b4726bc4d89da36a943a564d7d9ce3955eaf0133f3c7ef73edae3228b437f0975c2cc0821ad0d0c312254979d4488602f7fc69bc9f2c5053c51172958570706119086bf670ee259848fd94947224817889e644b3a0a8e9014182d7c1ea8e0f48191594a3de4d8b041c8f1ffa7d750903fac964f59240bb5c742d9ed39f66a12c1e7f1c38f184860ee583ca82198664a0a635e662679e452a547929b9fdcc9fc6f32c1d5524fbbbc348b48393a3041ff9eeaee9659c188e8e93da89dd604894688388c6861f522c41da615ab44343e5e543160e77938adceb95562a078083cbea034c5d13c0ca22f292af2bdc07b3b7b1a66eeab7aee3e4617a05316d592c771c33ff4acc4fd185c6dd84f1717465870c0ec2bb98fd493dbe3bb9ba89d38606266a929159827dcaa4b96b2b4f71788b1d036102923c606631d36428a078cad06d2423b39f41ae3b758c6f6b24f6ed9891000f62dc8cdcf650049a23c6cf372fbe114fe5984247b504d92455579ea316f05c701793ab27c26c0f38cb8bfbbc95abdab6df4e7683142b172accc8b4cf9ba8d68bd9ffb825820829492b74cce37f4c10725e983de438c65e6fc77bf5c30de9b6ec8696dcf64b99ba0e57177c0a8386cd3b971faa208ad3eec473b3cc6800c8ba9b7ce8cc2b15b006688b83d878da69749e2074fb132dad1a5e7faeaabd4cff93881d2d3d490666e0255191d526810d02f9c83ccd7caddb5bf1f8fc093eca4a673c247dd5fb18dedcf78bd1156cbc5ea549a3cf838f1f3ec61bb90b829887fe22eaa5a42d6078599c1e9fe060fbfaacccb1847da24373be6db57f83c2029ef29ab90f6e4a645de40a3e55cec255ff66239ac328728ccaf0d47119fd5e31dd51be7ab75102b276828660d3521305c184fac171dadfc9e04f5a81020ad8c565c64f76fbd891159d1052e8210de6930881925265c639848819fe71fbe195da5d78adbfaafaf35155676f36539cfe3c9b0fbb61591cbca1d0398d6f862fdf2e48359d54481c3a785261b54cce6be00460a674924cc852274b11b7ab52727fcc629aef51c58b0c974ed3e4909f794ed07a3a84383843d25a7ada72cb87a3ad74a4fe3019e3773c3a9c55a348a4ed896a15b640d489955c5909665b526c8a23e1ba95d54bbdb30b3a38ec9db291e14ebde099383ec1b00896c304face6113e89b5a64c069407085e8ce5cc18a4744ae3fe9fa9b1f3a54cd8a59b637d5515d7a7c06381bf83a5802ecfe48164b010a95b89f858a616f315011b6ad5c67f66189f8ba25a65bc78759ca8f635bcfe6c74a64888f1dde397b9585a824c138518d612b4b6c8d33cf58d251a6ba86e5f596369b5664670618df5ff5b9dacf9fcae92f30a33b4eb98fd9af59bd8a609b8d340424617950ef0e3e1c3a3e24d6adce2687856364c90120726a7f02c39fe37316be7c1671974bf87a444875fd146647dd0d159db4e83cffb9a3d1bc21b5218546c13b03725a1e75474a6e68060d068523fcee209d97c5c240791f94fecf6ff3b95985434d720e5aa81e81623546daa03f04a05350bf81046841b74186ef1176a8c0b0050a10ca9b69052ce52d300539375da6330d0458b0a09b7832acebd7fa82d29f4f391ea044a24f12ccab3bd00a19d31cd24c33e1c3e9d296f33053cb2b3f4007108bba10b48216e5236747a87cc19a886eecee586c585c414d6135a8681ec377aeb1d18badc782951b2ea0f4d4525be86373c35377530fbfd9cd7ad03074d4360e9a03e1a9e6c6c6d4281eecb940c0455feb30c4cea3bb03c79c5167874b50bca53bcbae9590a20cb60bc216c3d4940d2bb45e976763d2c8495d0fc57ca64622bb48b043548011c77268e2bd04fc00f0b72ca7f2ea55ea1697a4dc140e3dd55b8cc10b2f9968f220ea7e0ee89a32efd338b596f06a615fc0243de7eb60f795f678d8464110e39f16432ae3cafde127037efe70112ab0ac859a14f8bb4d21ea8cc001cd250be6200c2c048bc64fcc55566312ed049f53fa03f5959f9fbf670ce0f960e2bf024606d960706b6ef1185cf1d8717734ad5a9a821d4f563ac54acd905a5f1d20df1a147a2c8da2602c0211cb3dc863c0956e4a79e260a56272b3e65aab19e7c62889ff83f32054e8e5d9a1ede1b0162a620599f3ee5d469b3223fe194e9582b4fe9744159997fe9744285b546fe6159c1dbe3a057ab1c8d6781ac692bbc1765c9e2236c827f18b0f871dd75c5c5b01f565fbd3170477aadc966087158eb5d9e2a19567a92a78c8295b2e553a53556451043c6e4fce1356ca62045fb393f944362a06e5ce30d0466cd3a4d8851da6d0a12597c3f9459eb113dd4c562d14694b8bc17b0a7c7b7abcbb791776262811a44401efc951115c58e8c512c36b9514090168629209ab69341aab76abc0e128c89662a5b72a9fc7363ad8ee078c41b8ffc98c34fa2e583c8af4a0c20cfc8fc699c6dfeb8a1e6b5e2b2677fb3683fb1020e3a5d6f5ff35abf06019b3af607d5975e6bb5b60c16bb5147bd3a0b9b5a3bae9eafd4641700d3c3ee8568652b729379cb67100cea269db21b6b56bf0b9d5c6b4e89024c048ff1c93832b6b04e92d5470bee5bb05be68d4046304831a010772c312fc836f076254831cff35369466736d19b1b577b86f8bf34b37c56035ac96e8a5a309819271df5f2eef8d9fb319c5df7f7ffe27bd519a5817662d6b748392d75c31f50ac30d7c4d4fd4ab1315fdfaa78c2dd04f81f1e7d740f024f07c36bbaf4a6757341f74ed1851659b68f997d4a31a4d6089146f6267b6fb96561085808ba0897be1ed1b46fa7db4c76ac43025e52f7c13b7add8264d7441f5d393622a114c426ada2397da24c707a0ea5b4c33da1394e2e7d0f45efafdddddddddddddd7da309eecbbed1539f4ef14cf6ee44f34e7b29b149d2de0cc26616138b0b493ced4e1e7994127da2e0aac4814e943af2b13f11af44cfb66d8929b786cb5196d0b9d94893b20139dd2c7ba1d1ed23399365d968b3a44f7b7d64e53396a3cd02f72cdf29a5966930abb5beb5ed7aad8fa25f373d3bdb5b7b571630b911463fb97e0083d4f7934e897ae7c5365363d00caa5264d327fa5a39aec44394873e914dcabb9fc8e6d66bd107caf095b18a49cb6c4542deec444837fb25c230924894445423a219a28251d92e12893e12dd6882fbb68be84549b28bbada5ed42efaca16243eeb9080b75e345fed0c42a25e29b46406f9f0b466951b365cff63a07edceaa3e8444857f4eb2762b5ebcfcfcfcf4f9fe82f1478f6c6192b37de78481fb34a7a3da9ce2c98be35c3c0718015824b7f4a7029bca2b8f4d7755dd7755dd7755dd7756502d004b001395d29a53dfaa204ae8676d9d1a3ed248ca2df6c3fc1287acd3609200c3db46dd34a7a49936c370a1845df266018fa6a89c0ce9143b86d2676477446da2b5db556cc09d60463822dc1906048ae5a45f5125d154372e93127dc36735551fddc80d4c7eeeb582b852cd1bf78113d56b3b2cdd4c74ffb46ff6994eac4dc28010482598040bcaa4010080241a05aeb89906efde8f5ab9dd67d7d2e7b5f88d609d93a23b53b620803f5a59494cce1ca95ee8d2c8e9c9c1c999305a088bcd0497b54f65cdac99ef6e87734773b3a005ab4f4422b73a413a92379648ff4698fca1a308a5ed28061e4933ed14b283b975e57fc25e5a7c707caa53b975e47abaa933ed1c778f9461c3139e2e315af783dbb628ca2c7ce89146d9b1175327b3fb39a8d2838d14771b405d9de3e9de23e7dfce1155ffa6d9bd9ba0ddeadd3ecc48261e8477666c128faccbe888193398ca29f415046c8e652d229abd27274aa9e79caa53b5cba03efc03ba876e0133d7f07ab644e5cd12b7da8fca7e4c3f1c48d08bc90651014a519ff8c192b2b251412f2f68990eceb16247b733b3a2747b2644bf2d0d769679010114b01787b08d3895c0c9a8fd7ecda46b69219b468af0b83da13b273a83d3aab2cf1b1e1c15a475897c28b44ad7d578f4834a5e7d970f5527a2efd8d996426e1d575e9a70d2502efe84e4a4d382673c9a59f4f5a3583baafee70504a3d974e2997ce29fdecdff6ec97924eb2cdf4b70e097847d98b56edc5e4bab996b4473fb297123b87aa5c347686e1d24f2d18867eb3485424b81b8fe944d5850371a2ea3ad2277aca73e93feca775d6a53a3a984ece85849e86a029940299c32b7ae9e58f74c2ab7869a599cc8130f47d46425eec444817e39b953af5412c701fc7f5732ec5e129b59af6a7a3d6f4895ee2bc945c38181fb8f49355f2038ce3ca4aef9490964c22a11751c9e45211d5ced1d79cbacd685950546932a74f6b2e1a4a85f04b0f439238f181556e769a0a929c9ebeb531cb755b10eddb6f6c3eb6ae957446e0d5bab6692f5ad1bb9b428ca217d91904057dadedc51f42b2ae9574d7364944496ca858397571facc8eac6454bbe8bc8e9b0a2b280ef1781a0d9b8fee848cbade698fde08bc59d7acf6e89fdc3001f7f51379db54af7545649462aadd8c77eb6b278ff87492a85516ae69d3a6317deaeba82cae55e279f4b9f4598ef968e7ad9608bc35fefad7bfba0fd3b9f4d8cf36133bad4302d2532a6209413282254890ec20b9aeebf1515ac0e4c647394273e3fb125b99018fc0654318cd117d921a6c5eb1f104176f6aad5d5702ea202a7a694adce2e7e515fd6dfb21fe9aa6a96d40e68c53ebeeaa5659d5ac7892b16bd74a58ddb160d74bf88b4d22141a507034a37f718a6a45cecf29dba590fa7819c42b0e8bed95b3f08a2a57e34ff491d21ecd913ef9449a13705fa48157ad449cf6e4576c6cd2a766f563df8e5b37aa1dbfa9e013fc192b58edbe06fa1429dd03e5cabe70fb11a958794f692ad0098d147042b61b81536e9c80fba2107c9f67aa05854b5cddd9809c6e03b5278b48d8a43df912a1b427230ea3e46f38217d23f06e9742e6e3c889fa79b939128a43edc9cf2eda0801272f4df09fdc3a13845dab230fb4e993bc5659b8b8c36aa0bf945a58daa653700969eb01ebe5ad3d24bfda16b29ee8589884369566895aa5a06e96ed1b51c4269dfafa39f5f2b10a5ec11321dd796b9416d8dc7808cf6d8aef70b4d7500736c39e491805d429acc3d199a6d69e6523a4bc1fc7314a5e4873597ee8c7cef3dafb67a4af90f832ad3743072d9ea4d9ba8613196724eeee581e617271c722a59452c63b656b913e2608215aae12531eb33fe6e594f350dec03930f3802f25f8979498c5b61e52fecb71658e0a6357ae58c7dcb1445922c9f53af5b1e0e8d48c6196120d0c7bbdacd588ab13c23f12d29c21c01fb5073819d47e4e445445172c2fcd78569df0d9b8a67f2e2dff605ce6e740b14c031826aa74b8d4e8be213abc28f08f121fd9224623fb833ff9f3dbc6db7744223a5504775b37aa6169888273b989ffd591cbc865e4e2a223b674a64e3b8dee93dc9d366a8f5b0f1deeb45f8eab5d6e3d72b4a74d9eb737a0e0be790974bd9bc5082377e4cbcbddb781bb49172cb9abcb5198fcb49723477b719e19a5c4fd4c7cee62366cb3373cc07df546137f5a135f748cefddf98dbb19cfbb72648dc83b91a897f4263d47a7b823a24ff1d113c9e8bec7e8be124bf7711f17bf75a6d9cd78973b2f729cd56e9abf8af4e5ae485f221ba0b9a479922d02b767a3b3fd5ed836cd8b8febda0668ae917aafd90d79b9976986bbd7b97b7ddefdf83197a56cc8522ad102352764fc022900efa5e9b831aef06c8eb4e5e8ec9cfdd86764316b84cd5ab4d2fb747b682f49a77ce8e1be97c3964e41b6716374517d306e7c4c8e8d5590269ee663973ec67ea84b0f63bf1b2e3d00ec87c3a547591cd606fb310f2e7d0df6e31f5cfa93fdf88a4befd98f8970e969b01f1be1d2dfb01f23e1d2dbb01f2fe1d2bfd0cf603f8ec2a5a7af56328a51f430acc628face728ca2b7968551f4b732d81646d1d7b06714bd8b7d61147d8bf518456fb23818454fc3c6308a5e86cdc128fa185607a3e84b56871d3cf4c0287a92f5010846d1633608211845cfd92118453fc312c128cab1a45432d1a3e4c25c8ec204939b498d714ce1dd9666702b90553dc4df696feec0bb2d2951c2a71905ab3a0c7c9a9f610693e9c5fdfac5fd7a28bb9f5422a9f4699e3f1d1cabd4fac55a52445ef4b4bb806e3cc17d75e80ef18a6423855a1547dbe7916e55e1ba8b352bc7954abff7791cf8b9dee5281cd0b919373394a34f09ee928a936903faef355deaa6ac824ff39ef7b7843e34c001c7832b9a306a5e4e28c58a2341552e5402e2a6dcf9af4ed8330511fe83920eee9c36b8b383383656c049f9ba83c3819afb72390a13532ee99274d94399b0b97c49cf5834181b902cfb843285664b6e5b0f8e85762a8857d8e72516bc82f1f99e41c7801b07cad42a1d84de41dfe04e2925ce0ff5b2ca73971c272547ad49629735c1f8f5c903a39b91f3541ce0b3d52928ad3a4097c4d54da12540365390dc39e1ec89f1af9444c9421aae7293b80e43c64b978c0e32e12a312e185c25ce5f71b628fd689b91526242463702af69c6d36a9f286418fa49298d88e332eefa79e64a0ccdb3975f9a81613117894422914824128944229148a4ccc60dc737fe6bb9f32dbcbaeebc6515e413fd7c0fadc298340f50ee3cc684ca931f2777fe7427fd77c39df45f0e778e288a769fe87e10e7c3981c83d2299e508649db2e571a6e9deda3a995e7ec472f9a7265f7bd5cfa1d31a396bb97255db8f9e82b97304a74d2bdec6868742fbbf56cf7b25accd1ee65b38824bb9715516194e8b2d8ce656bdfd47b595a85decb5e3ed7bdec7432ef65254c720d6194a807465d8c1261503620a71b85da934be44e7b52497b93336d3db889d39a2c4fb9f83ccce1d58bcf431af06ae5f3b208ac8a4371089ce23e2f5b5046da4098f999a40a77ca1a28c42125dc296da6cb36c39d726749a964b126f9c2128126796a5ad2265227776eda9b72c94cb253f364d23819baf332e8ce0cf27c920a91233096ed0779d28b0d08861d932693ec62ab3dd8d3c3d245079b54ec1976c3039c923b2f97b42a019f9708f8279f00f14f3a09f203cc4b2a5195800e013f10a552108e3b40c77d9acffe910e71e667480257b1cb7aef6a552b423a91236e9517c9eea32bd688bca44b2526ec10c784dd84ddbbd9495837e3ddac83de953d8c9a41173b8d1b4bbe8b75e7aff96be76a41195b901870fba14a4a0f639ba9a73fd45312e94564844201256e6c6137d28376a6992e0ab537eb15876c66a9859bf2047772a5c9433592e57be188b139ac0e3b446c45950e7deacf1d9e2b06ab59a7f1e8dbc03501b9f4c27880343c22830e4808e79c34774ef8d3904a1013476e9425846e16351b20b860cd11ee8a47e6a53cd29e5c8261780539c0287948f371b5721ccb0fae344dfc84385a0f78a4a63d096fa985795ef29c9764692f886d767cad94da1bd23413d6282c59a202886975b489ae0c4238e77c6787a22b9b9f1b56e594dd8769a3d3cf6bcf46b6efc422136935ab4b304d136d9b36d2346da469da28fb689bdb8cf64cb46117bdbbbbbbbbbbbbbbb3aad52522391a89b051cfa0df99914895e3344dcbe8cdb43afaa6699aa66d9ab4dca77dc6a4d7d126ba320e9b105e38491f59be9848d3340cd3b44dfb68c3ae758fbe618fa3f7e83d7a7f8eb62d63198d8260ef11361a65da8b1a97c02badda78b1798d4618866118866118866118866922d1350d42082184c7208450c3344ca4611846d2b46b5ddd66b06fdbb5735b10ec9c9dc7bebe8655ec55bbae47acd65a6bc5321186d55a6badb5d65a6bad5856b18a3dc36aada218638c31c618638c316e5b8fc8a8cca469580e240deb885d9836835d18104c13611f8db0c76eeb3e284933cc38a5c0481ad67dfd1622c2462499532dbda22b835acd018bbc1a3d1ee3d555617da9d75abb2ac98656b3952dc8e83d1a8db24d7b1175abba0346679c52d45a2ba6d58ed3dac330adc2594570ca2bc2ae7a5d57bdae18351aea124ca46118866ddfe875aba36736340c8aae0c89ead52523919665a211361a8db0d16874d1081b61188661db36d2b46cd34ec3e643dbaabd2e2930ad6a1a36129d344fa4611f619b8f4ad32cdf6b7e5e913502efccef3c168f358c438490f14b09c24f768c1d7351e0a40f50ce4bd99518d59fb667c7d358a0cf5a1e5b1eebbbe5fcac14638c31c618638c31c618638c31c618633c115216d1f45009504e9536d1f88c5fc6e1e1df2918877fe914cb215ce14887d761070ff03e00a1b28727a253224fcabbc822228b7d5a97d7facc5ed76c36b2dbdbd638c98ece59d25756fec2ba384b0c0be3326c8c97ac8ccfb0a5d3b0336eb234de42640334b7a3924875945c5ae347ac707907cec39e0617050e429d78a22d2b191ec4e9c09f36bd465b2fc73d31f513d3b9539f774ddd07854cfffac9bbcfbb326bb1f0ca60891c714d9f5b9096c7cb6da6e5b1e52d332d355c6cb451d2277a0975a2aa083ef1aa02e9c0d6a5ec1581d764b9a5b6576f8bed116fb2346cb766d88652b22dc3760cdb306cb3d87e617b4a7bf42e6c5359b10dc4d90e12ea214be3111b6bda4312ad8d221b976c3e9e342b053dfde45298d33a3a5c4a447b120af7cbe1d2d7fea15f2b63b562b2ab3605f7c11e27d4f774aa42863d504a57e30a8db93734fa850f7434bd8e4e8be752cce752ec871b49167abea08c767ed558a6a1764c4a0ccb589814fdab3fb576df9097519665472a9552a9944aa5542aa55229b58370dc46c985837145fd64555f516b56b38a65b5d686c2b587be02dd16baf49894a7db524419663ba79df4502d8726b2f0baaeebf17abc1eafeb7ac692b978b112e9979dd28e060d11cc89d745ba28a55dfd22ab59cd3c9135a5bd1616088758ddddfd630518e47afce9149dc233d7e3696d4fd65aba0b18f2b290080c8359088527a83d298326c306e474b3971eee83ad56ec1ba04e8d0e5b9d134fdedf62b158350e7134a59a27c964b47ad2c322108161668f14d862d47c855730ccbc572ac121642f1a778a7d62cc112f27e9d38f6b4a1987b418e215fd448faf57fd3574fd5bf930d455bbeca3f71684feeae0b3baf9a88f51486cb537776e988033c5739d2976335ce95e4c6cf1f8987a8a8e23a52a770a71e774ce6964dd18afb85e599daa700b527f45d64e6c61db4cbd2e6904a36c309b3ecd2f994ea6c424ed4524b106a84f50a6a3c030f3b37f7e7e7a0a8c9aff580a3eea8d5dff308aef07876e64c5a04e5555e74c281c4ba9e52f37c6d0644e56e345095c2cd58051f34d038699df1155cd0363777127b25ac0c1cb387405ab5e7c5ea77fd17d468cadebbcb257f6fad8b3bff68136ed4d1a5a663ba73d27539b2f2d2c52fe526a11f910526fa4bb61026ebe95ba3a53fd15afae8bc8db4e4676324cbcc8c6778e97939363cae24e04b27d6d44c1e180d3c9e976d23abc8a538802cb50e938e215f649e38f0cda0e2eb298e3ce71ff3c960fd16f988013526fe4ba4e7ab4104aa7563a938baf9c8a56a74c2eba19efae7411a82b22e34eeda860f93cc9428061e647162681488618c128c6c29d2c5d4c9fe22b578a2cd69d0ce768ebb4ae0846cd53f1e2222b64875758e7a3764660bd19350f1d64fcd291bee95b6b4b9f615ab42dcf4a45444945d855bb5b521176d5ee789728eff2ac25dabe545e57462f5b23b3226a65a077b131c692d44c56861add4da650778157dfe19eb4933b77fa345f39aee4b55aeed27ddeac260bef5bae6d415a3359befc1dede222432fb9e9d37c8cb4488b651bb78e7124ef026f8434ec0c0b7b645828a5bdf91816feb4370fc3c229164220180485e0104d7b47daab6924edcdb6696ff69266d2c11dd862c2c50feed4c4fb9d6811fd6ebafd303796900614a75314625b10fa6e9c4ecdcf194a61cd9cd1874daf8bd2aba5638081052a60810a64a9d49145935364fcf2613cf7e508ad84a4c2a8c92bbe3080380c339f33a74729e5b9f3d4c7012c437f20cc3c3d11bce24edf0096a153a640e1d20fc1ab1c4ecf0096a155a842132ebd100a60197a852b28e1d207c12becf40860199a852c1ce1d203f103cbd0a0a0225c7a1f78453a3d1096a15964a19dbe07cb502f782108979e87cb32540b2d7cb0da4ebf03cbd02a04b8f43ae4c032740bba85cca5d7c1ab18a7c781652a139fead2e7e0958cd3dfc032b5894f00973e8657346a602e3d8a656acd67c3a53fb14c0d01c3cc2a021b2c5345c030f3097acb32f5091cbc329dde7b39af6ab8b04cb541814c4501c34c28645c7a182c53a190827e8565aa142dbc92e1f425165e75a7e77805e38674e93796a9372da0c758a6b6a0be80be8061e66b1555300cafb215af56a7675efd704a29a594d6ca71f1f7e8a53cb330afb878f1e2ccff996564ceac830e67de6187330f600067260001cebc63c799ef3d330f1e672e40017838330f3dcedcc3c7997d9cf9c78f1e801860c68733f77066206736c09967ceecc33391cde19815fdb2d849f6baa67ddb1ec396685819a6bbd896d7b02e97c1d6b8b532fc6057f7c17eb58a3b3f6300203dfcf0d1838702f0b83b0830801d7490f90b172b2c92b2e80f8bc5fae91b0ede78beaa8b154f13ab22e833e79cbff1c4c53269739a34ed5a37272bbb58a48b75b1ae8b745da4ebbaae39345bdc3587ea6cc5b985566bb6668b4f730e8155579037b3b87362e1ce39853b6713ee9c4780383aae9cadd94a99489367c6bba493ba0ba83d6fc6ca71a5cb2631e0151f5621d485199f133e71e2e22c67f9778c26623734b4bb82b8e91574057141dddd379544ed075baf0ff6ab2fb8f333f6ab2db8f306b040ec57a5b8f33dd8af4271e77fd8afa2e0cefbb05fb5b9f33dec579fb8f33cd8af8ae0ce17c07e3504779ec7fcb55f6de2ceefb05f65e2ce13c07e748b3b3f00fbd12a777e07fb512deebc0ef6a35eb8f332f6a359dcf9db8f067d340b77de85fde815eefc8afd6815ee3c8bfde814fa73e77bfb518bc017fbc92cdc791bf69358dcf91bf6935db8f334d84f6a71e73dfb4931dcf993fde61277be06fbcd26eebc0df69b1ff8a613771e65bff9c49d0780fda609ee3c8cfd660aee7c8cfda61477fe06fbcd15dcf900d86fbae0ce0bc07eb38a3b9fc37ed38a3b8f83fd260dee7cca7ed306775e65bf89833bafc37e53079307779eda6ffee04e1d9757c7ea3bfa072c539b3409c20eaf381eb04ccdc9f1018b5739e88065aa13273b78c22b110e58a6eae8e4e0ce4f1d99fae4c90dee450396a92c560d727845b28265eacece0c9af04aab82656aab15031c5e8d5cc032150a142a98f06a5b01cb541e9e16dcf979c3abd2e7a7142c537b20ccfcfc5cc2ab189f9f296099ea0361e67da2b8f35309af64988065aa942758a6fe38c13275ca0758a652b1e1158d4fd3e7e7fcace195cba5a0e0a70477ca08a884e0cecf2658a602cd2558a606898165aa1084d18265ea108439c2ab1a9f9f34bc92e1f3b20aafece7259007387087c270e7eaf3120b5d60995a05c24c215ec190992d0833b3c032170bc24c5e598165200e8499975fb8b395c59dac2ddcf9ccdabfb3f6306cf7ccc278b5d957b69eb3339e83e56698e1e5c5868d1b3768a0c1f34ea71a6ab0c1061c385028000000062626e6861b0220801c38a45232d8bf8695e12eb6c65baccb4db6e534ace9322c8dc7b032365bd2b45f9674cc5e1759ec2b2b9f83151da3a1a753c99dc76e669801bb69f2f2d224c7868d1c27376e38d1a181069d279ef784753ab1766aa861a765830d2d28387040e141a1787a0000801e1f18181f293131f5e786dff0afe7eb9400501100508e201c3e5f85520fc0140150c9017471084a5de8ced721958ecfcf560e9fbf58abcf431cd5908ee7f0d6eaac95fde6a5cfc1eab02a9bb21f8c4b8f83cd613f974b2f00fbd94b1f00fbd9b8f437d8ef14dfd13b7a47ac2bd7ecc8faf8accc48e58ac7b24f7d92fd0b678b18e16880818bb2b45922da8b50b8f12cc4108c8a378d80fbe4d568f6eb5fd619899cdd7ad135fb7157d39a508207065c5c031970f10e401e2eba24200f8e3b221178653512af24b5680719bf7c91b33d482f56cef18445ee5c6ac0b5fc83372d166e3e568edde53bdae53bbace38bcb49b61936802f280377c83fc8cb74d02f268273cedf17da2d39eec928c5269466909266070e5234da7625cf97824c99531f2902fc96045d59b870617b8af7d7ca8107f6ae538cdf64e6b97fda3754f6829edd3cd6a15d7eacb778d7cadb15473c32859c371e5003bd061f6d19855ed134ff29a26db932e35e03a6b9fa8d2c127a9c3278335edc946d23e31a43d6f08b0afa678a2c2746b693c8b9ac9320fb8fd18bdde741df046831acb375b04de1837dc85616f398b2b83d5e2d6b072da6f085c019fe4ab90f2de95f08674031df23be47b900742dec5c29b160b7130ebc2421df804b25a9007f658e813a1e092e85b318f80be063230e31d803c6674f0865524a12998c012c2109cc06115f38cc00b34c022a8033f49d06195cb142720c1228aa017f080873cbcd17a34eda655dc0f472101ebca128f284f3c5962474a2b4a09783ae5a35d3a2613b3feb2df3963beb9345be188ede8749097fed371e55745b63332efa43f66bdbccd184f64fcf275d0ed67fc79b127f48935f389251fad638c314ecb97ceca415e354d95f61a0eb5d72d45894fa7ba9db44eb37aa7a1344ff7f48f921b38048792b487a41ede2cdade02a3fab567d79ae326099a9ab6492d99b1717a0bb7fb9dd335b7bbb7c0ab786f2369552be9f8eb8bb973ce59c49d46e09540ccfd740052ba1f105402a58b759f11577642e2e93f23944495913ea23d1c232f48b84fbb31ab366ec075ed21a57bbef27dac481361541fc1281a5a0475d0880419bfcc52299ee0795c34ed25d15eb4c0ddd126c983943b72dc945aeee168159743870e3db46c3802a824c2115820c6e8052e9eeb8e31905add7e652c99e5584f74ae6d5edb764108b779f9fce8e84455b75a3a2f3dde5e4e7bb249e3c4293ab6a6485493e3863ba8855ac5759518632b4ec18383459c82577de510ec937351fbccc681c7481234479288e8f4f94fb7e27935efed564369288c92ef8d763feaed16abf5f38a0745fa7e90c5004609c128496388933745c17d383e2351f2944b734c1e7ce8207e6cdd2545c732aa72f1ee1bc21ae4b9cc824bb0168c055bc1c5ca3c379aa37f33eeb5722fccc58ae5ec08fb65451b11adfbe69c54745d7c8dbea3a918751b602a3cac98f146d4a42ba0ecb63cf4d09e24a23d79782b10278d73c649a305bef043b1a800115105446f3d2e0b6f8c11bb260eef4562f7c26c8945036285fe8335173c7c42e9a14ea7fa4a1c78a858c1952b3ce421142a7aae3cdc82873c6ca2c943d605a9fc8ea83a62451c028257735e0b748aa324d1014010dbd5fda817882a9c94ff74f0079857f08914ace04ad1539ad500e9a3c91d36bbaf2db51fb376c00165e37bf162e88ceddf0af70f5bf9076f5cb1cc27ba9d22c53e89f0165b6c3186fbc1193b2204d8e223c0165b6c9101ed23db01c8436b3a4b54d49c077de16145772d50709f36b54e63e9947ccb8fa355cc438b3c9712b5493a883ff1a77a22cc860ebac7aba0fe42ad9c911bca5a1819d25efc4d843a413176b80fea40d6e32195a8223d1e06b9b80f57d291f329fa7878e4029c8a3eedc50b414411460c39c288057875a56213d88b59cb9b59be9ac8ca20421634f7eb21226421944d4d54b1d884e823696412090519d8a56153d2481a4923c47d3131313131d806817e1815df164a813e11b66c8851602f3eb60a883e45cd6b419e183ddcd7414143f1c5e3ca238cc7479aa88a3f413f4a94e0f1c22ac103865db14af0881b0298878b2494e0c13d5b796195e001372046a3bf2091b8116c419ea8621e51f288311e02756ae40546f1dbb6108489cf304d246fb5a34b2d47f180112edc7c2480fbcae5b600ee2bf124122b01a3af74bdb212a76da11e8aa7184ff1231b6b7e724af13f37be8366d802f711e153fc074a3146a11b75209775507bf1a66f225725b2a64182ac88917a230f0b719fe7795e6c2aad245a24eaed4e0b4070862d707002d0035bd4e0c247b9106e4dc50a6e8628dc67e2ee6f36e19c91e7e8d3c08d3c1249140f1c89e2019b6c86271c3c8c31c61863e418638c4d8c48f799a6f5e66394030efed364ec1e31a3e2b9532c875c90b10e1d45e870e55b87f6e4e310b275304a16d1de57b913a23de61f74f7713bdc0f870b8f62d5103ec943a80426978d6094bc8d16709f0e7923474cc08b00cb7843201209c440f1ca981c9e9435dc29af26a0b8b87b1d72574c7b97c6a8cbbbb40b07af3825c41036a4e03eed3a3cd2a91a88e401dc73553a8a7000cb044104afe8af73578e20ae2b09f78ac1312f6be51ffea195563aa7c6ab0893cc2f3c3185134e04c1097e84a78682f10e9771b87c1c2866216c8c806b6621381c3ec1735de99eae79dabb3a367de2abb3a4da203ac9514aac127d6848c13555618710d6d828e994902997c81bb98279cda639d227f81a1869b0e863a3943ec1f3f5a1b26622993349bc96c02af801fe8c15ace7504a3bdc13d81752813d42893c58079b5c082f69f302040e9e6f47261742c9e4f09289bc6ca493eb2f2d2c546bd2d31e8452da835f843e8c8242fad0095ec513215d09afb605e1477ee4db10011767678a1107a753dc9962cc914d682092ca9562131cc8b1e7c297161686d23c3db0077ff0c98550073a8139ed411ef0de9082fb22ce35c52638dae3570873341cbc3a7797b62871772f5b8faf8a6cd0edc836caf66a1875b378e62dee0719c53ff423f799b9f36270308abb15267ebcb4074df354880edf379dd2724451572bc735d679357d82af95e338d6409efbd5cbf6bb18600482415028763ff856699a3ed2a91abe9188f6525c447bfc213a658790393598b871c1cdcd8d0b6e6e5cf082174c319fcde8c13c0f696f1ac128d133c846b43761cd9ddae3a781bbe968cec73b6b7ed98dc9543be2691ea3444098797ebccea286f2c775b9d5294a25a8b92ef5dbbb6e4c8f07e5ce2983049d7ba8248c9795552c15a2110100004000e3140000301408854382d160240cb45d910f14800b8fb64c604819c9b32487719042c62042000000000000000001cc3600e4901362cd2554da6eac99d7a3b2db87991483dfc09a30ea32865fd1237f857a7401fc925c3c92706d1434b4082c9ca60fc314ed5a16a337e9c208316f5769bd2b53832f8d138d2112593783d82be349cbbe73c58774efee893517d0c6c674b016254e2f5f21ef97bd80bc08baa2cb51bb0101f183c27a506564d62af27986117e48a73aedee9135a6e9a97e8a65964bf503e82889ee5124ce9f206ff52ed0f738b74d7e1be9d8b8ff1be9c3ce87fb4512e809021973f847e2a6508862ff7a98691d2b66c6d0892a90e0235852b90493b985f5f4b7e55ffb91f606d7376cc9c393526d96ba29a91a11ee37ab80e7edb02788b70d2828e5b864df197d190f1575399c0ba970c50f9eb2fce0c5d217333199a7fa0469cf960ca9ff1b4319db2c6c393b5a9db09f3127013c400777556d650d63a51c946d40f44b8ebef7d464b5a653d9ffaf7eac2e15e37976c49b4dcf11f2814dbfe4f648043180a6ab0a41e05efb58f979285c0902351eeadb09e05997f39a262a974fbca30730f909101b911b477b0a0d8be60e44077c26dc0ac1bd779316435b73a0b58f380703ffd7180b1c3d4e053aeaba0e2c27c32de74254b6585ab5280cdd18f32fbabdc5ef68f070ba96fdf908983e87b8689db83cf000c5cb14d615805a40cd5a188bdc9f1fb99ed2559efe59d551e60dac540a6f5459c463ab92a57db9027a17bb8e86107d4a393f77c3c2b4a125ebd3d295475949345adc43d81f482c24fd98b1e0092954f0ae66cfae64416062abcf4f754c5727fd3aa81649882d6d490268214056ae9cc33969bb624e23c9ce7cf9ab72ed089ab282d498d62ccd1ed3380e1669fb05605d5800ce5959f233189409eed493b03349ca43907953d1d6aa444f6ad2ec13c8b6641aa507770d2c178678f1a21fcf6963004d7ca166e674cfe4dd303c667ec006c42f8a03e06d237cf46301caa86e7812934950e2a67a6fa3b6baffea9cfa6b0ddf66419000ec57de8284db0c95514399c40ea54e10a9c656dc8e9b7df7ed04e1275de3a00a74de5d0edee912dddc799aca7ae8e4c7be909881aab94af50499c8a1e3f199420435b52d8dc487d3002438713c3eca79c813f6dc76b0669ebe7bffcb402dd2e482aa2eefaa08f9853e3f73367a1d3bab5b210a49e0a92f381724a7f6c73909f67e7820d2d11f68106b717814712a330a94ba932e15aef3a6e3c774d9845dfbb8442d2af32c665328f1dcc476e515549877100c26ecfe1eeadac9ca2dbd4b9ce73bd32e1e31362905e82101b4707bcaaa1de70a8174efe525bcb88208b4b61c0c653392b812192892ed2aad9c4ff481d2e98affee8a7a6693b976b7fe0c5408ce97cb35e27d1e066e42cd77020d3ff6723b17894fce2dc4cd90a3d7ca6983644a8fc989162d97294a795a99ce56a6446df0a98fc044b8b79cb34dd19bb8e1b6eeb8360e41ef4b684cff1f815944826a2f90a80415c4e81cbf8ed57e62b10611ba1c9bb3e915e9e466a8cd735a3901d1955d5659396d086ccea4593200a0c3993acee995e1325e80b0a7220467f3748bc792d174333ea327410b121bb19bbb96f2376abd114e297f5ac0e019a9aca4c8ebaeec636ad2bbbd0e767629d6a8fb70c7e981f7a404f6786c0586236e28989dec22b4f72a45826b664e359dae7c43c1270de9e9fb695499a9b93595643992991ba260a4e435fd98740c58fd67190112ef95b5bf9335d22b6f2178bb7c6bb07fbe06fb455efcb0bcfa5be3f4f8545bbc7d933b7e40500e163b45ed3e408a4aae4cef6bac9f000634c06a57bf9dc08eb2d5e65a43acc9c84d8888f31eaabecc13e37a45583122b91a1561a0a8716689891fa6b470fd3c29732ce95f939d68abf2d0977437e0dbae64ab6e6e8a3f43bf2465500946220624e571a1a36ea360b01aa0d63cbf444a9e42cd3bc97445ff93a98ab68a5e807f63eb36a68c647a05e69847207a1ada1e8198aa0c4a62215a67821c25ee3c93441864540ff0ee134b725d9f5d576bb9be66f82bb078934af81b52d935ae626b074c244084410e768ff20a6583fe67c089ab4b3f0dd25a55c9a6142d2f36ff1a3a8359680ecf7ef55eaba9774815ea4573ee5fa430061aee6d6b530e60cbf990fbd2a9ce35774e48ec0d1b0274a5482cdd7dd997748099884951a3814f271d512132dc532463043de007c08ac477156da4df10db1c52739d1da073a4e6d47f5ee094a8c0a05472db04b060e720350f1449b12e800d7d1c39c3ee5f1e8cd825b3dbc13ce5a1fcbd466ea5b759292ce6081a58120fcdc79acefc8c02333ecf77441acf83ba8247104a60959a0f0ec1c0e7c1251eb695f1a5c0df6b99bd083d1fade802d96f1896391c0bdd942834dcb36e08c5cd28ed199578d9b2cbb045313943da0e429f008a0e04271284dab4abc3d3595efd173d50c080e41b643ebd2f283c35c3d47f9688b340a2f519b0998c327bb5e116b9563941b9daf4984826fb33f40b59f5651cb997dd0cd31644047411a2362c26c0bb6108f0ce85325ae7e52a38259971e1daab6e1b9d51cb05492e3836df905d3d414cc28cc57581c3b7aa5e8ce99ffc1a22ecbffe74d83fdd0935b52faca62c7b40c2351d09fc3ca5417f64ff998ddb84d6bead8a49d83491e530f53921e274ef8b59e93f4c08feeb3e75ca1667397754f8de5692f50918545915cd44bf4a97ad7b285008ec5cfbbdcebfdd8c7f67b24b30815adbe684fab1ce06014947a01279771797fb67e27bb09ae5e6f6b6e6d57b3cdc6074f1f56d57c28fbb8fbe168738d4c531ee63260f5da159f0cc2caa4066f0c3b1f221cd7c924c9739e622da461bc817b3f960ba011cfb47ee45add0b488acc2921b143a7e88f5aa47c1d20479b7c97009c0ca9f48b351971e8acf5a54b4dd52bf3fcb103f73b29af92b54a2cbc3440b847997cda189e671e14b73380956772320312fe5716afe59be1d1348b6830b0782b30a5c0f4ed25799000d0d3e36686aa1c80a837226e368d11f37cdb3479e0ef75e648fb9a2ffe9e6644db376e8dceae56c2de9ebe71970fa08917b7d6c3c62545997b2e2cc7222d22a31182e9e73596e2144e4f7895c1d3ae88ab5d55e7f1144fc664e4ea019ec09a44f0eceb0bcf178bc3dc04de90b46ba8b3aca456298657a8f9ef0cd3dcaf3e92f8fd04cc153fc3c375b58a5a2fc30f5e1d6cd97ac55b153cf8f1be02711d935495503904d85c25400c6069f56f7ec997b79d038ae458dfa7e6879abbcf622c83a445937c5669e8cb30f2822ac7a9f104c7c74584be9ac0416e793f1c2562370bce745bb0c0801c7d3b54ee019914d106565bb6e14e0b8aee97cb8ea74822c110440f9750c4e97eca4b09aeff06bd5f5f86f6470fdf2a55e7937c05a29a26d293f2117949e18df1dd88ff0e27387b30b3a76df0121b801a51bc0897c492738f3688110b194228b28355b556d2dd414b993b88769fcf2e191ac514afc3ec43567c9c630f3a911e071c986303ae168c8daf30191b84412e1f096cdb8dc6cc8f57942893f4495d7c5bb58e2067c60f8cbcdb7d35dbed276417ee967d7202dc5edab4dda63291935616cadd4ffa6cd300fa7f3a00acda0cde2fa6af2d3bdbfac5d79cc008739bb3d030be184a28980502896148c653a43d5bff47a23067b519f593f542f03bcaa7848728c6ddd205f20775b1fbb1abe191123d3abfdd649a05a7aae907be371d5faf3bb33319bd5e20163f9f928818cc8a2b097feeef394b8fed9cb69538a5e8dd79c1320b3643d4a2e9447f948f3f91197455bc81e20ee8cb37242a2e3c4fdca51019a818363d7440b18fe3350c643b1b80f52d43a60c6532afc19eef45c288a8662874ae9b84bc7a8b9b3aac1ab6b96f56e372a0d3e16e569b52976937b854074637c4ca15c903a3a4e7a848409dd0bccb32f491de2727cb349fa5263003c74a47343992333a8b705f3e8254079550f7613302006093c53f9c75ef631b5a72124f0f5da2bbba770cacd7355a2996c8f102adf101acf1c3eacad4ecc96b2c46688c4b2411de6b5982956870dfbff21eacd1c155dc9471e2d0ad4401a94d9a9dfac775ee4e1297f192bf31ed019149829a5f16857ac79bb4a1f8cc6d79e81f7c14083b8eee1b6aeae3af727bd874eb0bb733607257e8a9414aaf6abd73defb32405c612dbf9151d02c65cfb47430e54ecde5927f07bd6df133136fbdcd3307f094913b4eca21b23c3accac96ae4c6d80d1323dc59e5d06b23ae7f08529e1c340443afd8221bc0ce4ac96858ed958ada54ff86ca651baae4264a7166e07ce71b6fd1184fcaa6d66473384b2ea0796a7482953beb5b6bc1119bd748aa329a245239e89522020f565af8d4f929dfffb84bb3fae204a9cfffb313b79fdfde8a333a024004ce3f032b7915997b29e0ab9f7eecd209bc3c927807827f1784c770322a079a2c405261f9e552c87f8993665291ac44b31b7710ab9ae0eb2669a25b2a59438995fd0b8989c4b0f23ddd835e5738b2ddcab92856d02764dac503d0a3fbab7bf8e8c5f4a9007449752f91c906cbb26ead957a71848d0da84b957bed13f325003809d9b460bae2f3117e838fac79d8aec8a9381c5af565ca18f935ffc9fe0bc7ef78fa4ece0d0106ac2c7372dac2a67a862f5c76189974fdc90750a4fbb3350023fd8394d3358acdd2de02b39f7916082763f94dd2e15540d2eb1ea053a1956888cb4ed3bea1d7add2b698e8e290908e655f6c36763c76317a31d8a7f521e2d0220e63cfe8df71463f756e4b46ece7f572b2ebcf6c4b0c062d9f20093509b7836605a104d032e968d52fd0a2a068bd5bad616f0b5b8a46793f35e14f68cd8cd996dcfeab2540a3d5d4b7c70f141f8a4e33a5569c794908080bd13a68bcbe7588719c11ae2364daa45f081e46e17bde2885e5b9708386fcd9c68a779cb6146c2e8960a267a6d009d990dfe73a0fa1c1ba7de6b2529ef28a9e82ddf1d7269203c43a3b7e4e4c9a4a4bd2c4fc8fe115a2429c72ec0fa34eb6da650a5ce5ed7586e545d81bcabad7198ac0f56951e100c8a22f4cf8fc1154c0cf2cda866257204f87cd3f84fe2feeeef737e6d90bd223a745808686371b2900aaf996be0f7582c8a0bf4366ae34e77e0a4c89fef07161f2daea4ee799c6bdc028744c4929f1d8a9b3bf39574529df0811eaaa36c5f7ac7b865541ccc65804b76363ecc2f689e3050a1ea0f60da9a7f2a4aa4774bb2f7d5d416063a5c6a83ce7d97578cf5b2b0678a09ae9c9edeab5929537c1c46ffa0c52b7c40a7570c1e9163da14a2df881799caf0608d955ecf4cace1b3770edaa8a8fe756a1cf76562fe9088035b3ca81b0b3a31d34255db2abe8090bb92fd5403628e4477d6f6b5ea373f2d7fb08269a3d10aef7bd0408369ce1c22f506c8922f1444a70b8a47b3c1b9317796aa49ae138e171a14cc722355bd52d52529a71168c662a5c688a8d4de5a4f095c09b6a6a980fa4b738bfa4f3cbc0839de1bccc46b6ba8a7444617c900b3db7b8e1ec118068ce5d7670857efa5ce94c620006f27a87b109f1bbc7c84559035093e35b14797cbecd95775789251a5e9a7a325e2a93e0f3fc5ab49deb991158a813878f4dc004e5d9d8c94af725da0e0150a35a1d7c2aa3c9486c92feb9abe6f61f2795359bc9f94efd635180f54e890c46b47502a35c7caf160b4fb6130035fea6f07faa70014e35c05a6f9d0a538bd5fa1aa1c822cef293f33db680f5bb01ffb12d360220ac733d1facff148c0faa03fce7c19a9b8bb6276e1f0981d50000609cbe47bdf4dc24573ea7b79ee7fe720fae5b41e289508679e065f856767e287d541ab687c4656dc70f7de58dea0ca57094addc2f3e3e87e906acb271240779ffddb91cda3ecd3c1e2736bf1e48ebf777a98b43ed4437859ad0152ba4d0085631a3fb38352024db5d62b146494c92f3e8e428b8159e5a711ea064cb4a3c965ded29872afbaaa996947a67a425692b20691d62a87102f0150ccb90c0699fdf3480a0ce17a9a4071f149744f29d5ce8fda4a6aedebd84ae929a0744588afa5eea5d5318ecc6ce7d4da6b1563b69762193c67d08ecdc2e5e02637aadd614e232cd6776e71b5c9ec627f2cdbf3d6ee2894c745cb1ccbdab11a429bec34d0f2348e6ab8fd730c499a1eb266c8881a62e766688901b25f1c00b3edd0cd1f6de0ed855c53f6683bc7874a9aede380d31af8e7a878752f02fe743667573ef5539c9a389a6f2ced54f485429614905cbd02ec3e48334705d3fe2146ab81bcc4e4540ea2c7d2173d85f90ade3ed4566368f1122fd2976d6bd3d57883f327a57d72f6bc386589586b8164f6e24c09388bc71d59cd091b9ee47be1a9aafa06c638830cf928a9efc3c4ba85d39d17a5345492aaba9677a2a80380a0be80374642c4a5fc9f146561adb989bff3ed018a8f22e52f545185f17a96512ae76dd11da67d49ebd64e90109ae140a26718bdbc710a3cde6827f0885b5d8683c79bf0dcf794ce549efe118227f56a083f86aa4b0e6a1d8459276c2516d8b19cba55dd05eead666047c6d8bf1b335b5ad49f97df5fbd5923efc9d6b5a7c5600aeb3e76f61399300e69fcf872a7bfed0f945c2aa21268ac2ee426c384e5d2bea6a91f0ea36a3e8676eb131cbb0e4f7c0d48714e85c31e62640699fc2dfa4f74d53ecd29543648f79e31e9de21c5fdaf5980b3944f3cf09ea74095f598dc0847a181d196f62a03e0e9101d65e0a7d1849e8c9988d7aadc31a2f520aa90e20e49e081aca419548f9b7244bbc5a9b77511101be9ac58ea8fe76c1453b18984512c04712f1178aee85b68302fe4532ed2faa261d52a4034f90560e9661b409d6467871dc232976fa0a3dfa61b4c03c9aad24faee087f6524f492fc04c3e2087f138692214871fc680aba617f88c5cea59778f6ce68764c6d50bbb11c11de894ba1fb938717286fa091b7a58ee5231f33eb3b68bc56ca4272296cf50060ba0e790850866254e584437e54e9cccef5826e1c3a88716e24643c13fe76ff9c08471b4145503076375a002315a312c7022bddf9e8d1da1a4a0bb3303a8d0c6ebc943049be238308943b0544eb5b173d9b9854ffcc940708678d2617260dec0002afebc83ea0298479c5725b92ec2a9da4e95d7a98b073dddaef35045cdd849dbcf076a257160743634a2719c0c4d0cc53f5638dcc53cc15ad50b17d30dd3c4c23b53114eb91e2865bbaa299b6d96a151fd08c48630caaee9e55926a6146b3d4b9b1773cb167599af9382a22a4492c285b133be50a04135ac13d786d761615b7ae316a51f26c92b50cc9e8ca6c42e0e18d455bfe3d1a9aea2c37852cba6fdd1fec74176096ebd54473ecb830f5ed72cd835db9976ff72cd59b53f7ae717bb1735f66ee49d8fd64f46234ec5aea4573f40cfa3250402225948b49a2d0fb961d919d7d82dcd349b051f905db00b53bc9fb7827ce817b9dab672696ec1b55d789e905578593e1397181334d196e81901f3393fb0146dee61da747adc12af7f0a5eefded5b83869c22372d12928d7bdd9b35a4e41a5ee729923928bc32bdaba3f7d5c5a7c7dbaac599115d3f047c27338d8b60131ce025a84fe0507624847ae97bd413d383634d9033f3e35e8820d049d7ef7fe91eaff829570db42c55af736bbfe8503e970ea931f4b52fbcd5f587c9f0cfcc659111b5bdebe0fa6c22683c95116604ee372c082679943b92cf67fe0aceab03f6e5f7b7eb1c28e044130b1d60ead5ab4270f8545f9180e7d00bb5b0913c4b63dfa9847d29bbe84e549836e67ea4441338f45a27b3c380e64e81f121a19b610068017d81fb7118d3f97ad50ca2ccb8483d8ea14ac8e1f9b54013c9bbd67b1f72d1cabb210321b560ca5ff6a2d85910f9858f712a901463eddc56d8922a326693b588f22b1c925ee492b095547a7d2921027536be48a890b9c5ade71a9f5198106de7c778ea892cc111b357c48c5d6e849310e172e936a409f8dedc5aa4ed750c64d8bb58520aedab4adabcb29f15b1224b9ade687f108749a80f9bee41fed15c6543c0267f0f174d07b49509c596e6619371c0023c541a38eaee6eff0329c8e186eddf6857e6130f0097d8522f66891be115518c8d99c38809541f3c239d59b048037cc60746f6887e4b3ec71eade13d59be1d46c074ffc3eb5c41adde9955019180a74dac86cf8a010a96cc2d486804aa1aa08df07d9def1b53e658a6dd36d9bd65815b0f68ebb67e42c562e5934086e451ae77d0ffb45bc2073eb342d8609521416f47ab5724d9b3f20883cc2923556400d4f6047b5d4c0be46c01bb71f0b84f1d21c39aec4c4d94c03a95ee410ecb19fdd7026f1a6f2796e2364e8d9bf953b2be6b99f51a5ee7a27d40b00dbba1c2652971d7ba1faa93f8b025e915035b82632441d7feebffe837a68153a467073ea2ca6b187248000f5551a3c133d05f1ae7dc6aa930c4640942a0993c139a556d5b5f97d09328473a1a11c60667a9702759e203150109400f5bd6a81c34b75110f0cb604f830ccf726d6ac9f64c3a1300654d3a2249784ae53fa22918c4c7773e1fa091540f5b26cf8dab60b4dcada30e62b2c4b08bbba7fdb05eb56237e374e3efdddd6bacd4400642228f7e0fb6b100399a07bf2b6a018783c209f97090e5c1eb9000cd2b123629e953b9c27b50a45c51dc10ea7683a16862da491a8444bed3d59995bed8c7ab6ec3fda124ee96ea81816a43182cf10f80a278f565b419414713b5e72eb95151c9cb864807d570a243e2a8eeea28a46031500390e0f19cf060d031e4e043e0b51321b3ac32f4d1682aa504eb4ec9da224307131958ce136eff07091aa909718f038a9dc1291c3b6fe455426a4e7a50dd58090529349eae06e14cc1d8a383e0d9e46e90c885df1620191202dbd791e80c1e97a806fa60e11215d633a0f3d721cfa5b048b7aac53ddc0cfbfdbde539fa9fb6d66c6488b500fc5974ea9cc901ae8c44f086649043994978e1ee9c05c2d6548941e26b17950df4cf1230691787eaa8f8c2b3e097f173f03e334e789f4eb4a1b5ffff6deaaff196feb1d9ede80fa3ff2ff9007a211eec84bc4f195b13efa4c6278d3230a41b034e55ceb9dd6511566871660620d7d2aad1f687d1bca15a31fb3906e8521441d772a9800b7706bbe26d7c9adb3b1c860bceb304e45bb57d5c05211839ea7f7a0ba27fbb42da2f7664aa2b537bd856bbe3e41a77b9693fab239061f013982ace656f7063de284a604846a06e4fbbd2b5463cc84657bc4f2817aac2047a49ab50cc1a15005cc4d7aa4442180e06e257d064c22e0704a1ce2223750b734c0dba228158c90c9a8317518faf902a395ac0e9bf56f4436eb513832aa486cb42e22a8a96dbe84c4156e50cba3d0adf7709af00b41354cf9952822311227fc60043704368e6c5d40eff94abbd59031a14fc299f74f577bafe8840eabbce82f9ed050522e7662e77b92baf91dbfe5bdf79ed84a3095ef2da656c52f5d178449d280370e1296c1b31e9fb6a729e54af6fd6f5b336b2acf4afcf383932dc4a3d9d3a93809f1e35108f158586fb8c2c81efe85133183302bf066f6580a103518b9f39104b9ed6c384811e8725c33dd573934f8a44448b4ad5b41876168eeeb8ee941115b97a4921facd5c8e93205b757eae5218f52d8dacc57f033129a379f73afa66e96837f8a4de150eab2e34b8394f28f0c5c5a056420402269c706cc209d38fc422610b4687293f0fec3937b8d43706cb290882c261caa2b2219cc94a4fca63ad19b0a1d982d7dc31959a3a4c106f0306f66fc9d72bd2549781909d909238675b3896889f9579488c6fd83c4fc49506643ae4955193c2b2c2a35dfb10c69133f51c216c2cae1d8874fca5477702aac0d9f6e45e7a09fecf24086db2dee5eb8948e8705feecc440800bb330826ce482b84a492085d0b6492551a989fcb5c9a263e75069a6c4fb7a62a20e7ab6c9c7da4d7dcccfb9e7b23bab2844ef266d2073da48847eb5fed4f3a272a1cc1713be648f52f6e69978db2f43d1cc5d245acac6a89322bcb152550fd3c550659fac98bb917f9d8637274705ade5f751477c77cf8f3ed573b90b59df7245502c309f6fbcce1fbba8b941c9b70d33a5fcc80692b18d76a33613269c852a2669ee150d3c0c7a2698280f1bec1b98c68d4de99bb02437ad8b69ae386d422b524fda5f014d8ef51574454b05b42f43f7c0f93421066605580c85783995655a06f2bea63351e099265944a232592b10b110121ca9c76ba40a9ef779be528c6383af01c92ec258b836ec733633719d13e7d59ac81aeabe5717fca6a5d25d87ae0e4b8335df1fe5c0ba29701fd690ce235d56c4117e2feb9721d3fb070b83dcdf26d6b3c70bc9c71c68792cdd3fdb95948ed285942d8f0c7afef787aa06febdbf8a8cb7949ba6034dcf3247bc7d0748d0a625065794a4ef9ad89008866c8593624ebe9720115e0a11b75265aef1855f0f7b2acb16ed62c4d40b5fd2daa29daa5b06ae44049036048489f6583e0688cf461aa7e3de14186156130d4ec1fb4928d8c66087a1539bc01560aefae2345e9d9d30bad85aa7f020d4034aae0a39d7ed4b3376b62681b083c63c4144adabf0ccacd910836cb7e77cec2c8c805aca694b92825cf5640bff5578f94ddf635a507cfd3bf49e96254a36a83efd5b151920ddcaf12a82a72e9851c8734b07903e367e7294f9615558dbf480031cbea6012b5d9d6da0da11499b6cca39aee04ed7082e02d12c76be5c4007dcb0d96388151d20198c66ce34ad43c6336313a287db459b2b446a2e8c39ef4d97d8f6320ca85c1a323d11660f45bc2927ccbf236a10f7f0bbea46353ec87ec8ffb1c7b70fff5e6bd3d2450fbd2a81604bbb4656d0715aa8935bda9a05219a6b8e2a20f93519edf539310096bd2d7112380c78456af35ed68099003b01092abd21fcc4207a211f6adbd4a156a6bf93dc7ed049146e6ad25197fce5f3598a5e7b6be93f4e759b2a77bf262074affae5409a2aeb2189edbc85603555a32a29263a2d6ea43feb4ff11741bb2f72f1f981722ae3a2a1cece2c31c3e98400133e5030fd68522308fa1b54cb224416c57015e8f790a71141e41ef16ffeca00a73f03f86f1a037477ce25208d80880ec75417603f0a498b806278ed0f8095ff020c36dcc44803145358945a135ca9f5fe1e15cb5da99d9b1becbe3eb150f33e8892a6e0fd75762c8b898408123c41b76734cf31e38c6b8f4e57d255ef3c8c1c59aca37b76cd26c7be32f6595fd21a41842bf44db318eb435fa574fe13679c66a1523c730c89364f254e35748e73dec86484f40ec84258ea83f9fc747b9721e9ea3227ec6d68de30e82846fd43a2e5811a6f96bf140271ca0053fd8066a7a8342eeaf2b22703da3b56bc55a9db26a7b39d2e25d693c4681d4b9a5f127934b21eb966a25f174b99096435899ac13c7e644b7ecd69a672c4ee8c9f1ae0c13972558501a6dbedf6ce0bd77c61d4f04d0d2bba6be7c48af88411719d45886a482962451111cc7b37437cef27f79c7cc3d36daed43d4cb381c1d75ee6928e6d042db43ac36d36a91d629999a3b965a90671c16165a982cd4f1f55a6b534eb41e6e556a510431b6059e4379eb58c6192de88a825a48c214ad1e44b6a1869f17d24581896710023a0d10be01021188805a247e159cfd2d24fc0a825942f9f65beaf8c0cb5e9c793ed1c4017ffdefc5852c61373fa5e25681e49ab50230c7ffd3f62bdb5cb9b3e04536fd3c38a6bdb4f5c290d6a76e0e461753aed60e9856d8666d4d8170fdbf4290d0034657f51d89976f9e7e5fc6e8bf79da3331ae661f3b37ed1bb4876b2f8e245dd6f42760316891e90cd1050abf733e039f144d0c2ad2893b0ef83c50acaee6a860a35a5115e26454954c07acc63dac90da65ea8c28401133f507840273b79f4fafe58313577d535e4e8ec38abdd815b7ca0758f2af21e00e9e3c1d7d570036e02dbc4b5e65e9afb11658b18e2a3cad61dc774f886f00f768094b60d0c0d568d265b394c7e1bb483630d8641ec7f50739388a20770659bca74ad54997ae4e19c57f0ab167ff14056270c90a591d60954de1831087510f7b870e9cab06b423b305b301496d20c2ef3042aaf0032d12d52f2802e971c0a454116613ce91d55f045f5d3f630d773161b1668c177be8af04b062633a4e6ba0a92a466af993cf4edbb372a522ea39e015847f857ac40f63de5712a37fe931e55004a834660e3716a7daf11885b9db758a9b5e369a44694298bfa268d1c471c5656636da7d9a9c807cb77b7e2c729a5c13a292e3fa17bae416085eb135e27074ec876a5429ede3d833cb742b5bd23226aae4a28a9d1cf3d05778f95d5269fdd9af97540152a1fbb3ba8ba0406d5489569d299181fdd0b148cb3c12957b30e39e1f9b41e3aa8302efc40f8d3fab16edfaaf4c33a4fe2b92297cfcc3784cdf503af76088fa63156c4f7f400e7037655bc56473e279b1175a11caf85541773811433c9eeb718656ab5f324f9050a4b3978f07e24a08a5d20d6004fe9ab368d8c238ffc42199f56c0a7f110f513f4edd617c4969fc32c816becab03edc0aeb78b0f74eeb787fcd417c484e67cf77a94c199fb36602d3f184eaf5ae93c3fd3e9dc8077eafc059cf0e92c279c4c6b33350ad9d6ed8861892b54a64bd84b600cf7cd4b1ad5c77f9f5a0cdf066f68f8c3141dc51980b2ab85ee82a9ecd27d7f44a8f23fde15393b9cee297e2407330f2adf9aafafb8dad68bfc3c4baf63b8dabebdd65be82c6dde66bf5ee40264c954eabefbefbceef1fc4c6ae371da7889ec5ababfeab902a5c7fe69adbaf06b96952f535e12831094200e6cd5bba6c81634139067c79e48c30af113c72d637e349527c93171d28b6ecc4f1d439c1e28e21b67743f8a40bc4a6dd1c9b3a2718d839c5f36e081f74c0f8da996353ee1027972362db20dcf0446f0a23f3d08ca99731db8f65c970ddede7fe25c24bcc22ca56ba8d2414ed9d0d50b15706e61e9cfc49a8b09e3a3585f783ce9ebfd3e60bbbc7a52bdfa5626ad79836264e5753fbdb2bee2614bb0e731779f358397bb3550a8ce0cbd04cac3f65647147df3eca3071a3814b12febd630d5ba88725e9a1ab6957774960f2e8ddf2f05968544a81ca3171704cf4a8cebc0444ea875dcb8d55cc3500d48fe9403b0c28bd9f06f6e9c0a637587d24239310bdaed752062e525d327eeff8dfddedc61985581d491efd9c6eabe51c7b78e0acdd6b5fde834cca69919511e426a3f238cffad82d5805e4d4dbc7a8f5aed1f1f184b437572618de3d5b58b5c418d66970bbf11889901c8f781bf982cc0b05debe2b9244629f2249ec65b26a54a663a473a32d811968a8e86d4092368e3540c68b5de785c938018086c6835a22cae26273a1cd7e50b9764a7dca6b3b8c0b3d01a164afda04c1be791e82a70310f6aaa128943f980d61103d765369418f5f5d31a892eb5f39190bb7e0e1553b99e8137746edb740e8ea5194a85679b14fdb5f6a73e52d13422a1e2be8364f37e49d59ab38c93dc4483cafb56361f09691bece7572d8a52eacb107392b826639fdf8d11d760efdc89b78f4709803ccbb3444b193cc2f290f86433a40bd4300695bb8eea53bb826c222b0186bfe994681e12996531a7d41a33b192768ebbfe9e99d2fad3b650e2ca97c5394d181ff3eecb4adbe8dd1944861fc3e5bb9db31aaee128118a97891fb4878815398842d6d11415259c1a2ed420c0030ea61c3d32ba613b159ad9e88e93cbbf08036d791f31c6fab271dc3d58fe44f1ac643f26982d08553ae935f2f5fe518a176db75c2f3738228c207d573cc34195eea0a469051b25200857849aeecbc23bb184d809e0b0a8a1b53538b8cde0ea945a617d20b3ceb789d9a5a5632c26c9ca9fa7410c745e66da6954af59ec844d8013900f2b178ade33a3e36df3430a9d2fa556446677f238979dda159186353f00becfdcb6873d2e350084c9af6331aaf6024c0410ec791e1d27ab7cc0625fbe9819ac9fafeaceb26300dfe6ad10df0042b6e51be6b501d4990c24233308c8a0b5613b33dfde23cd89bd3f6639a5558eada90a87454b1f1d3c03540db1c33c24664adbb9db0ea2e0c2c8684d8887dcd1bdee5e34f8082018a1719038b23b8f396346a1dcc0cbcdfc0101ebc1b3249c66fb76c5bced9c0c8b6a5976724b0062f280a7479b70cfbd09f251f2460c8f11ad982e304abe90fa96a5255fac1dc0f23dcd031c57d45095fc30e6952c1d86dff2fa884e404629480c408814d0f9200fac0643b8aff24a45891b1b123eb5074ad79584d6a38cd1e1db0d1c59d901c4db3ef99cdcc6684c2c42b552333b73a5799589d9b4cb1cee54c5af13df1ec1bb86559080629a45b543674f6f0896467d2735ced8e26ecfd74317468d2017a91794b4991aa383f4f97588e7220f401c79c5542ae0c25400ff7da9fb8bd600b870cbabc3432ff97a9738686bcf912248280215a26aaa7911be4fd46cdc42983fb752fdb0b16a4e8b316fd6da1d8e1566431e080af94ff671ad15f61cc2d6599abe0799712935308d82fe512fede913ac96ab6d52f62d8ec8790c567a85c6cdf3bf224a8137ccc987003192a54dbd38b4bb02523f49c31ef2893661e5bbc611b987fc44a9d8dc05ecb4ce227eb988367dabc27efc97361adc3ab1640082ba0d1d67fd903cbadb8e7e1b81653fbf3309fba0103c8d7a9f32f6deb1623a32a04db85c6f28f1f116b0fb576c7c149e94dc31c9a0f236a9bdde10eb408f7cd0dbe8e02aebebaf8ec5a087be14014b7a7bac1e841bd76945946ee33d68424c60a976b8fb48f0c3f6915c879a21b6f9414c344913e69ffb0fa457ba5c95e18b1269a923ee5f86b4d2c84485953af534eae64f184adc0498b1f6084a73804003cc7e99e8eaec94a3023fc468bba6be3327751705011388be2d309897b1a4c9d8e5b13bb16c0fb1e5057933f203f4a3f40dc39b5e725208534194d323e9086db59842b3ca3580ad3f46d31a037a9bacddb7bcbb6b6cb3b212a1fea8f1f23e8fe497ff31e549e69ffd27f613b1251fb965be8bdcaa30bd9f076af89c73cd70254aedfac09b274e9431839a39737c7170257eac444a504d49ee1ede4d0df4cacb5920294a75b9cab7525cda8bb1f7513090d670b65c04fd1e751d59f33ec9b1c452b0d408a1eff4fb583ccf60a227e68c4e7fa094979581d97d71937b870534c74d847af6122c0513127981c6ac27037578adf74d8789bd4524a26bb56104bb427c706f5da84bf1a216c28e89c6e6ed4d2878f8139da691f90ee9fde3b57be7699c9e515134b778c923cf43fd180e35ba755a530a0e7baedb05f77abfdf2eff0980f9e1701fbddf92e8ab62458fb49844a9a42faf5d8ea9634ab5dce69aea743e8ae5027d83fdddf60fc90971c6bba10c1a4dc4ef250ca5f1a54502cdc7edb0c3559731f63cf19b501a8134b15e7c0defb609a277caad286712dd44ea72cf5be83b6080359b281e54d6b399cd4dd3143f0d2c03f8ac2ea4dc9b6061e44fd9470625d98275c17c3dbfac0ee9147b0254738cbdfa8705106f999b5cda5f68651215dfd80ffc2fcff0bf3a0f5a1c3bec6c727a43d582ef89aeb4a08a5b7463d506c33034d87f0c21b777302253cd2b3ab341d090eea28c964547a62d17e69948cafead541e380cc5d6e33b8fef70392a1356b3f5f7d5df3edb686614cd55b05ca2f95b148f30b94e8f6481a8e7a8743246e31b77b1f33ed829c9dd48f4ca229a7603f2cd8256921fca3a7b453e2a05e8eb1e8cf2f153f3fda43797da0cd7d12bd81a7b0731c7ddb77fce7501e7aeafed5a2b63ff234b8ca6221ea62d232324759fdf18f5a59b80ed709a46ad94a519ae3519cd09b348f4e2244ffa581a93569a9cc484bba259dd1da66fe9564ba6338d16694aca27ae3b427ac46fc7582c9e20289139066d4030624d3c0f376cd5e783862195f351ff28f7acf3f6a472db1b42c27c7292de929410132dd16309ffab661041b24abe1c8625153106424ccdab966c07aa2bf1c7492e8d2f51fc8ceb57d2304ad9c94fe468353f3355a141f53615fbc6edf77034b1a80da105599d96fe3dc14f627450f4f6300a2f5c2592dd1844931b9e26d0fb7de58e9cda5f747165c839d671918f0254dc042edba90c847b4a088d6eaad35002c3fd701423d9c3ef35d33601002e9dc31b34e391406470f8fc6b171f2d1eb37f41432323d7c52cf65654117304e4ad5294b5d36c2adc0e77bd7b6720610d0586b9560159a6a231727769b1f01224bb73a514dcff9668d78f81ba69ea5259e7bc409a8377a28d3c7abfe7472c5c2ffa3ae95a65766a789e3d57b788ab86b36ad3951d314c4fd94d2293b6a6b233120579e4a717fb0df7854f4f614d65c30557fda0400ff3ba737c646c2fa7174629679c04da21d3d2582e619274cea04fa7b7768e1e1771e847ca44849b817087ad072235f59a803ccda3ab3f1099a9138eecdd0ae3a46acbbe38f9b3ed17cd52caef302a2cf26f833604d89c008fff90b13db1f39df71723bfd218b85a9710b84353114d57c4e0013de9875f94776aa13cbe20645ee7ab6d716a40142aed7859e5cc363efb7f2af91a7114e8f7b1b5b0e2d91b37117790ba0b4a7343450ba9d05db12d6ccfdeb9e827ad312b4f3f80e28e6cf7ec558db02f33153f43546ed0ef078635c9deebb85de825594473477005a8f6e09a5135bbf03dc81139481a9023ea47055576780704331f72b8c0c4046e3d59dc7211ffe771ef9daeef49ca397ba49c9f64d1ce6311840b34f0534af169f2d10dd9a30d1041880bb714348ced5734b2f6ef632700b024681babda8f3003a2213a6408a6b7820d31df165012241bd009291a1901f8e690691695b461e326a44ee8d47a25d40a90798df145a007a9e14b9e874af83c30e2b35e91598a37b41649d7e26e14a3d740f123b5007bcfdaae839a554af120a102b34d36c22997a18b140bfc0c4b18f7df4b91e0ad0af5820b1c28a0bd06c30b0d00409f5d98539d3eb11635e0605ec904f0ff5e16b44fd1031d39d17e537b88d67876916ef7e76d0ba25bc79d5a9dd62be88e8b682cca7055312b4a86a7d16b881d3bb6049e37d8057d44acca77e8755a922b05292fa493fa22782a32ba82c12aa4a7d8aef5379fd88dad648e3129e6248519410d016b273d081d37d734c13103177b62f198632e575021cab09c1ad70b5dd98a4bcfc18d9609bbf3d14cfe737d882e09724d61d98f5379f78473bf36245a50cd07f1e32f1d5c921f4f6557bd462a739d778de09467e183bd397cf52fd01dc6cfbaf0d9edd98215c6966756a3e442d6b43ac813f0519fa81724a9de34087ba59ab8976cfe2f67dd980f2955875100f0c74a40546dbf09b497857755704691e286140c3a0ee3b5d25766b04fe63f6ca73dd304ada5e80c1bd1d2d8e037d0406bbafde22d9b5c5558bd8a8ba81f2a23ade756826b50184f3d0df76276ba2c22c22c23e84979fd03bd6cf9eeba48388ed7b565601a6d6883d7f7c884a612194febd31c1aa8ce167bcf3d152c6fae938214f8854af018a493984a62fd3cfc27574d935d08f46734c13c42eb914f24e6505b78733d3e660987a6e7c3eac433cf946af73ef43a0709d62a3de004a2b7a4a5c6a2b17ce45c6d64cb708d203f15d2ca54eb5b38892fce74652989ce2ea79f1a640c85fe01a58cbde55ddcf6f1bd179a4b1367bfced24a6defb21e06400a948bd6c552fc3c055ae24de9d89b9f21fc249fde096d3e03de367996a74fdd57482194944d8ed8b6d7c22c617b161f7e807c83b24a98d113117a868ae493ed777ad219454a38021d3392a0b59394b975f19e90c4c23f12fac8b646fb49502c8fa92e80f2669382374131b6b608792bb43880c5a2b11c9b29645851bca56d606c2243d777b4362521b79558d8a57d5b8d1e9c13613d4ac7ff7f6f1e752649c71329304337d212d2e629935bc003adff29e6ab840d45932745f07d771eec8dda5001864a8561de0bb33d24627831803ee1690b962a84d46955280642702b2559e10f4e8a8d5bc8736a4a1e71d5dfab21d8fbc83e77eb6242ed904e8ac54e0dc5ba95b6b7506956e211e5373fbbd8fde5bafef815465cdc704636d6cd89fc66215b023852607181bca73236e11622b0b53c2f99705289b3951f72078b004c263a758e6496fdd174350b93fb754cd0b26909874cf2e6b98e9bdcc223dff30aa1fe54aba30774624316ec6cf6fa1660abafae8ac3a11fb7ccc3d535a38a1f6649935792d17e54830d0299eab5a64948a3ce716dfa896cb13df8ed0d411f00bc6242966a7108eafe79f8c78180e016ecccc46faa1216f48bd8c66735201f06176c2510098bb73ee9c2d05068549cdc4f5062e43bdebcadf7ca6d30ed7cd108a285a26d5d38625af2cb7bf70b3a4677614b4caae46ad9760949bf148f1697701d311cbfa968d5c4daf5efd2fad4c83ff5242bffe3e697d769b1919a5f7ca11188b155633cae4dda3a3530bcf27e718a3e74c477283d7ac87c1be80bda0b786d6c2e5ec30512ff6e128f62245bf404c5601a9b69f6ae40288218118de8bfa73de9c04938fe9a0d7ac2d580c80567fe09cb2a4845c486b3dc35a9f536254c64cb231177b256836ff330b1812beb7471b0d513a859307a74505ed0d2b176fc5ea78a5d75db012ba96df6932340a9cf3b14dfa76838832c77bb12dac86c29c3914056b916e1c218143e3a1aac5d64d5a267a33358a556e79f30450b07d6611f8ae6ad8ae8c07abff173923d607d245e854c1ff69012d340674c84992e244af535cc0eeea385b0411f0a0e0d8de1e283188d87362b7123f87ca2bb6b36ffb0560119d63ecc15c76f64043d5028b9e5016611570c03ce2ffa2041435ef298d49818c50339087510944cfbd2880ca6ab38dd0d2944dd2fffeb55c15e3e6492aebf2e507e47d343e601db76575e7e2d8e8158338fdbdb4b58cee3ce2e2424841977f3cc53eba329114172cc5bb4fb0b03556ee9bd225fb5e40612d86542e55f62aa7ad5a7eaaf888b092db9e77a573360385e446aee451176c35d0d2f4f3c2869423443fe343a53845d2fe83034df88c19c793de2c707cf0986887ad2d6100cbededf7b361d8f7f57552b43604f0e2170f378d0616c5b177d01fec3ec709d42158e8a4e6a84fa6d7808bdd46756021ea02b03d9a492a49b35ed8f06c7a4e351c75095c7400d3276b3c67469e687ebf7a8deb94db097b23090ea74e4ef98d4ff4cd8cd61a613d713ba1c8e4eba30cc1c338380c1e2defa798d05bbdf86ad229164535bc11024e604f82256972c7bde289efd5f6f4dd4942a4ad9150c30d9cb8462e6203e49b142cb0615a5708000bab04464a6f9ac9bac68ea0240293a6271b7441c2a62f9d2381076a59c12c76d5776e7549e9d73f09d3fe83546756c0e9d678332e1c6cd003e12d2dca7bca0b18866ad21feb2d78e7fe137e8e47a97eb2aaeb0baae5d80e12ece4ff5c2087fda90016f20bcfd4e0b02e2f7c54efc9968ed8b9104fb6f438e46340526b503527369e71fc1459d39f58caf1db6ea7acb1a511724c85d006509e85462d4b3f0de7ea08d4b808f0fb1a9e456527d54cdfc03ccab50fed7b359d230b1adb08bc513a6c6bb44a600b26058c848234dea8f322db787bf862a5010318945a35c44e604700c2faa607c1dcbcb315e3effe2880aa4f7de8209bc5b63323f028ee05540d317213fd0e4b02a4ea19636a36904cf848d0ffae3e9dad9bedfdc50026ae97b0e66ea045bbfd3a6537dde075b7c657be0f89aaa20ea2d711a75ae8312d7f83694b28171146088a9b512c24e811fd87427e54bb1054b7885e8af2436c62fff369ca62a6075605985841622a42746691771423524a445ed0cd39e2065eda3bc61ce92a89e543e8e4acde0c2aacfd4bc9b15cff194e83d0775b422eb3c50325283771fdbbe0f46463a098424591064520c2adee99124df5462523894eaaf72637e7508628b0ef2b218642fe81af98acc446935b1344bf6cefdecb18e24e30c7b302f0c14a2659d1ffcd3014882809d911c4488e1cabb19351032e7a8a2c13d2c7858d20ba520474037c9c53f83f77a5d509501096c65fb28afc07ee2c45799a232c1338079e9ea961bf62e2b7cab4f19fcdb2c88c757e343c94335b8ad4878fba482a1818024d68546af7daddd13a906a53df6fdba1e17b44a475cb158abf2e88e4ccd646faeb5985e5682b4e1b2fca78c75e399fe90b8dc60c3db79354ed17f2d0c9c3395aa6f008ce257f979d1c4629af95f35858909c77d5c78e42e64ea31247d12401d90e65d21ce58b7f2080857fb095e4822739eb6090800ffab8d6e5d1c0167b06056d482434d5539eadbd6d116d7af5ba72a7a902b0bb8fc18dcce6be5186c6b8078b9f34e61cfb7b7f52921ee01120fef32c45bc6b5f4f4d9ed4a46b2e4d996d7569f32cc488ebe6193fa3dc1a7cdb11fd2becdf0944ae427736bb879d4aec401bfe3eeb42f6ce6c26a36425b45b89bf35316ebbbc2fd6c28640d2f7600e65545d0beccfaac3a12652bb2d154b9e9d7ebb26960bd030396ed033fe746c9ec355a6c642f56d0dfbace85f49d35c067eec28e1cc51648baf7e297f186545b8220636a242cfea697ee779e7e2f9027587d21f7487f1ef494e7b835a971b41bc3db4bfb5da8bdbad753d3c5be9c240c26d057c6f2cdc18855ce046ed4a92045a4d22709d5213d132882f1b209f1ce2acdbc17d6a97f009d812176d17ba561291ef617eddd2b52407c2644b301181958b03ea756c44b6cc263e44fc3358dd4b1a9e697d2b547d0a483d49d34382d120428af4270da257d6a03f6f6f60fffc39374f7f74c30d2724cc9394611a88ca468532128baf2fc83cffaa13e121cba1bd3f9337d49edcf6c16f5eeb16d163dc93bb83f2dc497512fd9b069722389e36a9cb36fdfd066581b6a76e9fd0dfba90e130b090c1eccbd69e701a34c9849507f8c9451a2036237d64cc4e7366010887acfa54d21cc64d3ae64e7bf054dc3bce9e3e7222b5968dfa81c2de98fcf7d023147200446208a206b43c405d96a6d0777a6efe491ba514e52ac2bbcffbbb9992df3c6cd4c926cbd89a72db42c9c98248cffcc34c0dcfeb727e01e73bc6ed97d17a30469a35fab97199a2cf9fdbdd709aec333581bfa77577e2e8e54b76648d7591454a18221f5e5cb9906b41dcf3c0721c374ef80c4d73ff473fc63a5f777dbd11dcc32abd6266919ffc41beabf9782c3bccccb26d646d8ba8a470fc50225954bc0d2d7b84802409ca37fb6d5879f6e845569cae58d8bbb6de9aabdf11ea5a92a67dc76a6bd9d2d206d175fbd380c72dea7e4c131a16b8ce2f81ece3f500475dc12bcf385f3094a67bde53a544bc2f05bb8a29781974c30ac36805f1e53a5b8ef8fde7ddc511fed5ec0eb598520f8ecdf88453f484bd94ae36007bc0f2d0156effe4f67a87333d2780c38ec2aa15e390f6a6cd37da6c5b0f46f888500243c1cd0366802db7823843e61a1f293e4e0cfe667c0cad5211d07d497198d038f3dc753fa3b6f20a3dca5d3203ab6e107c0fb297e376f36018520876406876fbecf1eaab90a8ed8c4b6dfc65c993196c60c69ac9cc503ed3201d2dcff74b627e32b3ce4b72a0170574bd2608c1e7b86efb51b4014fe46d5960ac2d12d74213749d03c60cc9f2b192dbc156119641a85f28fd2f8a128475228d9b1608931f2ee1684e7ba180f59836b335fdccef0c684df96d965c7ddd1b2d14bd936979895e70d4c94dedcc278338983b8a143b4d80f7bccb91edaab139b43b18caf6ab0cea80ab285457f916ce2788d9a4a774c0c3d582ca882cb4802db876ee500045fcf01809a0dd764ce05ae8090c35d60ac18d5624de944200112ce4f96d5c0e504f33278a473d6140511a11127af1ce842532316c25ff6eeddfb3a7d27b2f3ddc850cb22b191c462827f9c243eaa7d0263e41fcc5f11af40a5a64f417dcb209d6e74277dfd9dd834656ff63011747b7cfdfcd53236ca82bc2011bc5cad7c28fb7fb257a3bed4130f8a011c631cdc546eb71382457c88cc3ef6d05ba6d4fbc5202dfe8581e4364b89e267a21d12eec066d9064b663a8c5fd214ce82e207a12d0d8b171cc6bde3ea588a55dc6456484cff92164831694b78eb1cd9cb37a4242f4ce457a00cc827d9c624cda8d5b6074c201ef31b66f7a13a5e7187137c8809f098c92ab310869737fd34e8201cb61821a853c69532e66d19cad6d811b69c459c26e0b195c5e637859fd2f9339a84364892d9fabe9232916e70fa9049c01ca103bbce935070ec70ecbb22d3916a213a438203e07c2add51282af2d1b03df7e4f9d4e8776290f59ee8494988d21119011b665334d362b4d06626e8e2a97c7709b155af3044641cefb1cf447edd9b2aa8515c8c0cdb6ed2678b9356dce9933704f34366ebf08f5afcb2df38270905288b82d5ed4768e315a6db72367f242557dcf9a502843c1dea7a77a52d715d14196b09c9d5ada202d846cc2475d7db2e91fa10cb419b915e550a2c80aea52074993e87ef0b8cc08bc93dc8d8bf86703765cdf3d18add3c2fd2d144136100897f344d298335130251ce2e66b1485da616d093cbaeeac846bb3b6118ab2722ac8463bf06ed0bdd6e836e11f562cf9a0d2406b75b8f5d0553e3c8c03541d7e16244b3a0608519645da9e44d4105b7eb9bf994c5b22cc5768a10872459ff18c370939c641cce89da09e109ce4f27a982a5667fffbb9df683303db4b91ba93506fffbdfa7a454af75a22715a3150ddd88d033e3c2caf0bc381651f85b1076b63a0bc050a48b117fc8b47b72ac5b36fd129745baa3dc4a9000863d009bc772715a4132551ad01f74d9937bd9496daeef5c58af6d25a58e4e402a958204f3e81fa608294cd0aeae5a22b614328cabf99ce7e6e90b81171e97d9f3900892cee59308c533950f8136fd655852e668360d21aaf977762023cba86ec8e84c52019e1c5a502f9cc2d8c5a565387ea8189ecc58d6d1aff9a31314b4a9279cceb50ea499228724ee376dfd6afed17383705e930f6ec168f6ea2c3ada7b2c4a093d81e981243d305d64cd8440735934b3d93d7e63c15b4d7160b5195698bea4dab42a1c990624652d8a18dc61066ffef4a11eaf8d4deb84c73e6d07165ff581bb1bc69b265850fb41bfc873ed715c532721ee4cfa9213b3c65fd3fd1adb3240067e93e619ad0ab2de30353fa07de66c6ef50a5841b887fb45176160d13c10176124ae87154e80435610726272dd29ce79a6d082fcf1ef143c627cb623f61cee1b4b805096ea67b79e2054b443630a83ca82f5140052c05d8d302571d08ac8b338335e42ad2766087a5a3635ba2dbd26915f67c5e71b24a69876ec4364eb1daa2864e531cb5a6083c2db01c2458a4c60a203bd450fa8bac71d8ec006eac58a0156445bedf074e378b8ecca9f7f582f44bfd0ed4184883bdae978aa8acbada3e8147a949636a9200334d04aae69afdb97161bcc45f6e5ee7440192da4374fecb3b121ff2344e368267bc1d4dca8f5433698592ec14476622818612e9478c0ca5de26325a606197bf0d5d8992f6f940ef33629431fd76b8a6ec0c9fdea7411ef582f134327d41e753e68f9dc9841b0ff6de550492390e0878b5bbfd68e7d80223d9e0a8e9ec3521e52c3268f94357b973db490f557eb4fb03dacd9949ac64f181209e2b3874659e51a558559f67d3babfe186ec16982a17d872be031eef77338c809ba6ad2f13b39284bc794b7de2f6aceba9208e813a873d04d7a2b2ad8339c18694e2c339145a09fccf64a1abd0ad807814e721bb4ee1befada382bc1018eefa17ef06daeb628287320a82a703b23c98774b5ee769e29b56e6037d2cb36f4b9ed5e92bb1e8769d94e657a2c71653713c830fc9b756dec69b1b3fdaf021a001b6c2c0f657dd47d91fc5fd69936b4bafe9302be543bb8aa3666f470db0250256a7e93abf5e6b322ce4590a92f08bc50b007c954004b8f7454f3575990b36bfe0a1e10f1b9a769484a6c5381ddc53631a23f8c912870b052aac0b81b993f7de3ffcbbd04e2b989b5a0d589834f6011b5e47b3dd23a4dddc1e1d3a3922f1587a5aa61d3ef854e1f8b64d0a2a5f5303c7b8a578d1d3bc128a0ae1a8af6608df7be45d0baeb49e6897e1f81fc11e3c0034c2b2444899fab84e09b8a4e08365e0ded9e042a82da72ec515b43f365fc6a55e13acdfe54450bf28e1caa242c5105cfe4f0acc875e87f3de0db91d2ac60c55e2a632a806c663db0293490096eab9bf8e28d66132af0fcdf8660ffdbd091de23f67415971086d66a861df9aae5808558d622c9089988e18b26e0ca4f6037da07e89d6c6407350dd079d55993f2e25bb5d24c743e2bd6efd4883cde3d99daacdee14029ef27883007602319535140bf1d340d0f36f5e3a9a31d25b072c5662f2322c0003dc80d07a26edf763372cc29ce06752ec0024cbd2bb12c9cd464f2d00095087b59125d1eb40da94158648138cf227ddb3fb786d7a32557131e5dc0c4de83f57c0f4da175cda54f635be09619ce0614e2ee2024b37c603caddcbbdbf064ad7ee5c8be5b9ccf4e44ae090d20dde8210cac99d702b4eca7c5b779fd7c2d3118839e24c229432722f8a4f16222e6e581f4872d1270342a30e9332de81400fbe8d86d9b3ef9cd1bd4252b5f18c06e7155b9431eba249cd3a3cf213f55fedb4edca270ed7bb214b3484b994705426a8777b138e3ae81e253fa81714d580fa31f3ab8a0b86ce20dae9977e8bddf25544d5e6bb688ca0ea499eb945311553e387b59621d23fe7b7e485c54def0752fcd7ffd437138cd234699ad3b563647c65a874a56c443bd39199ce01a294987fa57ccb1482af3b0e02d0aae43753a0de9640a1cba141d49bbeb5e60c5ee0ed41ef43350b43161b491dd37f726ae46e6524d3ca947214ef53f3008ca5913493db4d670d4ad46209d33f5a746ed1020fcf494a90b7e2099539b1d3ebd97049981c84ce1974378a7418cb4214410e57fa58b243b5c13a4b42f5293756b94cd733eb0745dac6370850d3bf3fe427a5b3d0eea13c5842fe1de44b6784d493e23e8272a4160e2511c22cfad5ee1cc5ba1e8ca92a12c570ac4dfe6a1abe4c6f5b4363bc9ad6cfb7caf7879e2f6b1f92ae15488f1e25553a28eb9f882721c8d2af7e74ab248f09305c1223d34c519ee0b4daa6f213dd56e7d37e57e1da991eb069f3bae519733c2aa97ffaa6348b7fdcfb94c2f7077a21d74bc897abaccfaf9d1ca6837d0b3f55cf9c0a984297d167fc781f966681be3fc267290c87c07f1558ab8ae0c739b35580cab1067b73137f4248d63c824aca2d27c8e42b31c18b14b4a25c0c1c4753ec32752487ed6226aad1a52d7f382d763f48619869899486a4f42f0282a9cc41c8ea2080c893ef2533720c598caff7f60cb35e6ab54ca7b2817bdf78b28704cd96353b927ab662a4cd51419f684ba0b839c2375c0cb26976b1ee1637b4ad31fd347fab04dd48883e8d32756c5d1e788ad8695219689cdbfd881c56fc25046f97d06b7cd8500749ebe4e67140bcd2fb280780d9ea0285edce7c4c80995a6ba1687ff8f7d75632a0a5e949eb9afb470c29c2f38c24fea4c89a8b1264fdca994c4accc51dcf4eadebab16679e7c696b2ab15fd54f02ab7ef2e0832546899ff2c5f6dbe318d93ff533319e7ef3a2126541400017682cca6424817f90c4510833936b6841da391ee02d732e115e4b52d17b1e3d0975e41fdf6119fd14a6c9a467c6105bbdd77684940288fbe13c593847a02fb7437b8d9c8ca889d59c86b0ff2e1931b80fe99ff1f12fad02be02a9835e07459a9518e099a39b052950541b2c4dc99d22b6e5a0904627141b04f6a50791fd4c26cdc36d9b82babad9675f794b1c8f88e14530ad8511ad25f27319621ea2f6794793fe1edfef3144704dab93fbc59309c15a7318d42d1e93edf3956a7fbd3e674bfbab65c5dd465023b5d7d9e47023a9cf74d7d924268b45058d31143000c781046807653093394428720281067a1498509438b72d1cb8a4f4d44846cb9f79672efbdf796524a195b0bed0b710b5af4d3a9f452f75087fa0e53477a37cabb13e553a974eb43df50286f9c2a7a28c7990273c85af0a0dd7e71aa95d6fe669bd270ea8f12427c018c628b2b840e1a8d4637935217d4343c8a07c3a847a42eea683930dc3f3438b790a9c3a68c001d1108862ec874f11d8d462e3bb4075e3cfaba51e82012280485120441a1dfbc4d1dee3cef2311088640dbc110e7fd651bd38d796b9a3319a1b5855db2852c441f598b71e860e8a31b0abdc31804028174a31bee381bfa1e7f439534697b7f68cc71f35acb719cfd29941d60ca91b274178760dea26c63e22ead8ec62512e85bb85d76689bd2db6d4cf81bdde88641208741706463d29ca65910143ab76da6db7c32659cf70f8d412018dee3f0cbdbcb3626ce01a647cad275cfae51191a35e99b27600a22e5a66f3fdd049192e3b71c044a36e5485994c4261249087e6c019c360567b042153dd47d5ffc166ed0bf91e78542210f64637799c9a9a8b636762ccdd5893febd9d1b97cf1e8dd1d7d1a4ededfbb9f46f5f4652f5b1be2dbdbbc73347ed41c28e34c6ee32e4337f710f761217477b983b883ce7d23d143a310ceac7a54bf2fb23437ca1b678af04888d1a7e1e46d0fe485fe463588e6bc9f3c96e63e71a6770f9fc399170e814c5d137ff32947d437debbdb73df762f772f86505552c03ac327bb2538c9c06743153076fb6a3afe2ec3af138570e9249288440a81aebdf479a673c7dfc775a15077786edfd775ffbe0e472ae5e2226362a4864d3a3aa278dff14bdf26ca1b946d2293ce873d0ffb1e13466aabe3bbd4b1894c42a477ddefbd4d64027aee469754fa4cc7a59aeff238bc41096ccaf218e3504854d33d741ceeee78f41d99742791eebf9fbcec7d931efa4ca55c5c644ccc95b263404ac618852b95aea9647ae9384ca5dc1d93421d24bad331123d1e8bc2eda1c8447a3c529485bb8b4b4c8c8ccc02528ef2d93120256b94e5e28eb1c9c48094a37c012919259fb270d7d137d799e2eee53a531d8e2eebe81b21b7e51756b84007c933e004343107a247fa371ad987ecb9682d0804028142dc2de88dbcb06674f98f946d507ac48dc22df56872a393f7693defda6b3dcff33ecf5e6e34edbcd2bb0cbddb4085efa11b9d0bba518a4a74a4d0dde83b5261a28163b48cf2b641810e7ea3f4c5ef4061d49d8804fa1e7a89440a79a8d1bdcea4bbdffb697450de3d3488d49dd47dd4dd4b339ab4ded1f7dd75a31c3b51de3628ee5eed6e0ed1bc5d02a2de9ee8dbe518c68883b5d6dacc72f9451230169a60ebf10b8024e83286ce062c30ca53bacbb0f31e3b1d9eb5a12fc5da90b5df4b1bdca3a33ca5f3bab0c6bb3cca28db5cedc983422fdc527b5d373752a9d475bfdce685bbbb77ea3202747497ea3c2fe5a77bde513c95cef34ef77e4a5151116ddc793f9d320274344ab76da0309437e8dda492ea2e3d9d5bbaa994f7d4a5937e680ff42dbaa1a583f73cd34bf8da49a3ee326a53b8519ed275974f41c936577757dfeb7928bf39f448a592974fa3d794ee7d54baf79247025d5058433ae8e64dcadb4593fe7d14ee1d7af42edcde81bcd05dc9cb3be5405e68942e9f4ca696d40e534adea71414947728ef8ed25da5c77d977777202ff429259f5454448f33f5437ba66f4da3a0743fe588fa944fa7d7a41ce527941c67ca946fdea47fdf38da03913e9b7b7fbfed0be33b04e8dccbfdda3a79bf2802c65e029c31902428098ebb0cb9db30057c92b5f7de7bbde6661caaefb59b475d77efedeebeae7dc4d97b9ce5c21a6b83486de77735ee5687f7d970df5b13e9aaf8c0a573366fd2ed4fa5ac833b91b20e2ef4efbb42385463ed9a80e86e587bfc6d4ffa16ee1a9bc16b9dcdbb6a7b1ffa76613283b607e1507bd0b776597af42ddcf8a4c7ce0796ae91a77ac48dc21aeef2249c71a8e670b835bd757907d11d0eb55d58133b1ad1b7bcbdbc3f0ab70f3d3a17ee7bce44ba2a3e708924d2dbf70f7d3ff3269dfba9b485d0f7f344ca34f6db3bfe0ea26fdea37751e3c78e4694370ed5271f42dfbee59da343bfccec4250be6cfd4220d4e61a71d86ebfe100e78a094510699032fc096b831430f6ec0fdd461da13d22092d7fbd87bc8f3ecf3beebaaeebbc8746f744d78e43959051b8418fff4295ece15e82ee17cadb70f3d0f6ceefde53977558fb85f216c92386e89dd2d94cb6e4881d9d658f99303ab81b9dad7bc9da3db73089e6ae64479f1da33797db1df4eddb65e81696de6df0dabd5025644b6dbb2dfae8a4502575e8618dbdfc28bc41092cca36296db7d065a6f72ddb90e338ce1ef3d0f73abcd0e3b710286f30773ae24ce1c76759967d7902295d13bf3d9e6e68bc6fef7ebaa1f1f2bb4c73733cf70208783b776bb7c7735b0642b55c41e5f1e209c674843e1e12294dc3584a991980f1ec7ea7c4415371d4d799e2c171c71810290bfd8f1f97019d028204d154da1087267bc86bb7210e798dcb9b87cece83472a95c24c5023132d6b2ae5e2121323a3a36bad129338b01c2bcd329abf63070f1ed2870f79b35f1d296434add96fad35e34e34dab9e3d0b8ec3ada865b0749641299442642a60e36b32656eb41fbac9fa7b5d67a5aeb7ccd3271d39e6d9bfa8c6ac7843809410836fa4da3db26e4476732bb8dbc966d6412bdfda45d26d9f249c3b6b036f7907dcec71a6bacb1c62ab1d7e47b676ad65a658e11075a6f6855bee28ad9d36852be263bcd71a6704cba1fa0b31b5a0f19cad01aee1e9ac3be6d50d9b77c831238cb3628adfd943dbe3e6af994659a8ae59aab0b2346aaa8b50b11114c51ec687953143b4890685c98c0044e38a171518212cc24dca98414931668f91493161c9149e6143ea0e5e7143ed0846ce2c2ae274f9e3cb9e48782225afe434191299658e2042778e289108440d3b830c208259468410b5cc0e4fac1125afefac112ad1612483c5441a51a17d831174def72a2a92ee0d1f25488d4a153b26004238841888942d0aed88096d7aed880084490022d05536b178864d8c04e0e56b08258855abb8856b82528810f0a5070c411b57691441249d0342e5c94c021c1012dcf21c1011290207641d3da052a7aa153f2012ddf29f940cfec9175d6c083235abe061e1c6141c802d9024d678761a1c645f61ee984e88923b4bce88923a4153b9adeca90093c4f1377a0e5eb2fec7abcc00e3c3e5abe7ec787b24c252869c28f66d15109138ca03f1be355a714530a25337505b14352618f3c516b4a537a21aa903f946aee74fba1920b4dcfa5a88c2d4b2344167a8d092e5914aea0a9fc4980cfcf1518ff542bd89495943f6f8225154a268ccbbcc2961c3049695aeb26afa0974de86516f4520b7ab90525697ad9c58ea69f3b13866afa3964caa033f4d85579689ad2fbc05ed0f43f5434a59fa657870414a9421c40d409289245c4a1be4619f357cbcccc07787e9e7efa704e604da88f96980fa547f20d4a604ab1bc31263fb48610d0f49fce4e8f601888c57a8312981ed19b1ed173077dd1022c234bad9466ab5813265693dd0d22c0f334f7581c3d433e633f77ece5d5b2d3b087fbcc75b25c97f1ca38312a33b1a94e1d6d4e29a6884eef5a87e37adef70b13e82151770962cf3b18863cef76de19a3f4f24669eff2de97f70b9d6559b4ddbdf07a2a52cbbd109dca08bdfb064334801d823d502f6f549735cd6d51082b9992dfcc8a6822b794534c982cef14ee945ea394bb0ccd4ec305eca02cf23928cb96119003fbbc41092c312ccbf7d8a7d82ca7a04236a14db01185859ec9d49d66cf3e0c822af67abf10a354a3989aa817b9292365a74ca5aead58d83d456584f0b7f66b432030c48ec31e6697774a63bf8e65bfe1dca9d4aaea19e3e702838da82dbb1bf4d963a7c221b2e722131ed28712cdfde2ce61dc76eeddadcd3ca80cecea1670cd74b75c787517cb3b32d1580fdb02b0994eeb421e3e288b3c66a21bb05a8d315c7080f6a4492256d32cf8e46ad7e68840d88123cea855bb50baba8e7370446348cc0ce8bba4634703147a3c6ac26030e0e35b6e7c9799d756b33c280b0f9addd77b3c531445046f7c0349e28caaa9a9dae04cd6945167968c40031a86489c41698e1d3c7c8041d347e0479c31512d3168480126a4e96dc419323489b24885d69925482441d3ab3cce889a661306f016e92bbc93455e2e41c206dad37109124fe88d92158b0bc3562ea0051b27cc8daaa79ccf51cb49a50d6ad802ded794da6045b4762933b5315398ca88992c94cac0311f12fc43ced1017c013b775a72b08179e2456ac1046a4604627010f0d3e359e1a3840288971e3f8ff2b88d6c3161763cf4386f7cf478dcf27851001e6f02c0e3550cf0d833e373f7e470f9781df54880c3789c49662a3e3f4e28662a9ee5f13b5c1e1fc4001ecf43008fef81c3e37dc4fc9830bb07e672f720e02a8f0f92f2f8eca9c74b236e78bc4c62e5f1d2c884d9f4363cee1e199f8fbbe7e5f2b107082905e97167790e99a9f83f5e5a316136962791998a7ff178c964c2ec9a6791998aafe171d3781a1e2f9b4c98dd43e333cf24662a3eee1e1d2ef33c229d4c98ddb3e3a2c7cbdc73e3a0c7c7aa5d19ecf136b4c7ffb0ed703c76c825d23d7a8fdfa3ac62c2ec8984ca60d5191c8f2740fc154e243305e33d843cadec43c8d352a109795a290908795aa61f429e16490161e83a429e166826e469b5f4701df2b40a9043e6696d02ec001ca55b5005d01a0004c8bb006fc943e000e4dda2038002004b1e2233400f06980123879c4336400e31729004c801e790099019a00027806e7900f2109a26c0bcd431f29679cb1b406722f4795a05c8bb27871360464b0e0fc08c4c440fe769cdbc7bf4a7d49707c00c00588e9a81f19c87d050750600339988999e1947e58031e339472622c7795a35ef9e99573a737a9990a7e5423380d708795a0200004ce6696d960de32a35502a00a85123b3e40d80a3f2101846dea81a3054729887c870a00940cc092605262500302d301b0b0c864961c9b60000e02c3550879187d06ab068df6ab4e4bde5bd3d0035321135ced30240de3d30678941c11c468c96774f8d6b5b8d6fa77996c9e155644e4fc94368322a984cf62c938990e989b98a0fa798a7f880e5dd23732c9379761fce43c8d34afd70c37708795a2bf925f3b476b84f37eda062ca3bec9012e69daf9287c0a7bc557638995250f210990d3fc090517a21bd9060bca05ebaf005bf90c2ac83911feea0f2531e42db21bcef7640e5dde5dd1dc60e99881dced3ca79f7bc3c94a1f2f2938c9b77cf0ebfdd0eeffec353784841b98987d24979088d0713c7430a0f99081e7a64dc9480928c9312c0e5ddc3c339cbc3ed13701b214feb3a5efc00214fab86141d324f6ba37c9487d076c9244a390069749e164ade2937e52170296fd3014aa2511e22a341c78946e669edd1433aecd0413a804e3aa8e800a2e8807500a164e0e93c2d9403985eca43683c2d94d2795ae00154f206f3067f3a4026e200e769a5e4dda3c3516898747889462682a785f3ee39c031788083d771521e22d33d25d248d33d364207e521349e960874ef251bdf497988ab331136ced31ae5dd43e3220584681c9487c0ba67c867149089e0697979f7d8b8f7e5dd33e43336fe5d0197a10a087764169dc1711de18d27200422b3e60c8eff10deb80f2102324bcee0384d78e339421c3d8437f24c4259e26d843cfc00e10e9f0979b80e77b84cc8439e43284b7c8d70873c8b5096781aa18ceb10be7c4628e339842f8f0965e49904658987095ff23c4259e241fc79ddb5dca665d815565d43ac033b7042054d434a820b28d9829e613684214d88819621c6840b08610b2df3dc1142834e8c19d2e00c2cf809831940a0f7d1e7795dd7755dd7854030dbc4e498dfbd31d67ea0981b4323878b8b4d4ce86e77bbf746c6b8b8844020500c28466fa0504c87b1c9f4a7522e2e315e0e7d41a0182ff3322ff3322ff3b29818171a34a1434690230cf80c5ae842878e51fd6e47b7f7bbfd699469ba2fd35cdfb77b1f4dd70323b470abe0055b8651d781be7bafc8861e71ea2784b5f6ddfd3a171d2751d661b7fb7d15c4a9221308a76adb752011ae5bf411ddc6789e2772d1329afb145d24f2bec3d479eff249e4e58d39cfcb1ba7de8d0b81debd036ddf399cba6d1553197707587482c40b9e0fc8f044176300efbd5ce8a3cebb17240add7bbd5027d25b17fac659bc79a04874ef4df1d01b4a45733754b481c00b822250a43991e6b0e5f4b51161efdef4bcbc6d44bacb13106d57bbc942883f9288119b2eac145ca0400c24e0a20b03c68e472008026dee5d0d078aa110c638148adf3b10643b10ec42f62089543a974b1d68c23fc09f429a100e207d76dda316651c0a72619091170281e1f6a14113feb6c7d2f81ba7a2d6526d356c43f8f1db4dd44708c43fc0db9f421a65e14a600e8274cae1d08bf44859ba7b4d279972e95b0ea2942365a12c3970828b6f5e2a98010c54d088d1a2378aea8142a17aa0502814c7dd8d468c165468648342e90dd50385ea8142a1505214915db4a087198c70b285088b2e081e04c2a00c0543d1392b8a4ee6b5f604ca0ee0b8bc6de422084b0ed1b1218db68307816ec32de488b637f103e51b94c020d2371093c211b76d34d109e8dcf66d7302e5206cde3a45b405ef6d74c27579db4427fae6094427282fa1984ca51804ea831551411127786a5cf8428f1790f0f9ce664317b6cb7003ef47ddbda150280482367cbb0d6f610dc6b934ee7ce8adc3db16823817beb870471f196d5df00d0fd7348cadddb60de7d21b08fa66391f3817d7e15cf7402e2dde78e3dd6c8093c9264df8f8cee5822583e764970e2a911e225d042291ce911e129d14467db9a845e1fe5e3aa894da78cccd4b69efdf47a311e9206c32ddebfdf3b6a746a38744a45bfb7b63b4b529f03b65431f8551dfaf74d045df072a659b94f652da8e6cdea3bc537af48f5e7ae9253120528cad89eb4a218e2ed78be3ded1bfcf14c7e34b491e1a65e1ecc498b27037a12800c5d43d76f632b30b715ceebaefeea51ce528b7e5174b962003280662e002128e10c34c8201ab63330add7b1afdaa5cbbe9da87ac170a9126d7759e7722651c3afa14c48bd7f005bcc835e41c94c594721ecce040219148c711b529ef4e4777dc296f956c23937c0b18fbc5dfa18feaccfd2c728fa4a0984e0af76ca2493947622ea5944c3825dca18f8e82f18824e4c77be82499a40b37e9dd4ba5a798be6d4ea4ef12290c2252d37f92fcfcfcfc7c347c8220c9fdfdfc8007887480031b8833220ddf9aca37267d1631353089983c33031303f302f2c919ccd04519c830863823e5520c6100c3165ff04217e28c780308f00d45e07d6dfa0c0d796bd8146752f2d6b026e56dd2333cd0261a94935048d9479b482492296faf140af9d11e69c4c924f546e7801c94c53e0765b9be67117d5f3f80b7fb99994e460ec05ebf6eb9fce208472ee4e71898494a33844417b4007e1883dd47b7eb42a150281402cf71208b3b8c5d34961acf8b31b679efd0d6c5ba6099181a39389d2d046a72447329265acc4dfcbe5d521c6743d6ba68fba752a0cb9f4ad91d2e2e3652164dc3986a5dce1370f981cf4f123b5e74e1e7bb820b5adcb86d9ee77dbfdf47a0eff33c1004afe77923cf6e1f7e3c2854c9b8817ee8cf5a3b41dbc97e5a1baa68ac0782bef0e62ddaacddb88ddb4aa46ec74e69eeb33161aeb4853b74bd7b47226edbb6ee5cb69ce7fdd0dfe7b6751ce85f88f30edd7237b80c0441db77ef79ffba50b581dfbe504573df7df3be75d7e7043fb8d0a9000c59c0d8419cbfeffb4caff9320ed51ffeb207027d47f98ef21d05f46dd3b57b76dbb6d13647dfa7e53eeef8cbdbf66d18db51caf741951f222cbaddb753f719eaba94d108256f539cdbb6c173e1aed9320ed5db49d776e5c2efdb5ee2b6974a1b89a5bd739e0776264d7f414cdc779a8d067fdcf77d50de413408e7c77ff8a07fe13506bdbc7d684fc5f443845384d0e0d5b81d4483797b077dde76218d88667bb775f85fd41e8ae9dc3993291c1d1496f226651cfa89b66d1402a1a19cdd6cc776ebb66dfb8ebf9006bc771a10080c7148d3dda3d9fe6d5fd8853c602208184432f4c417b0407a8904821c778fef41a57b390e731ce8f7bb769104915e02c1cb9370aa0685d052835d3737cd8a441d67b90d0c777730745127fae8a750093c088e0efe242a95449a0d7596ebde6d17bc3af61824bab5a11cbf6f7cf141d10824bd745009a78220b620984fa2d7840e5e94e34c81d1475b302604e62d0a915e03be3b097c77b08be1a26552a2bc4707f2225203b9743d10a9575c80e9b72c42238f29430ed9992c534690c932a7cd4c4d193d264b103fd8982c33860b5d8901968f4b64b0a3afcbbb689aaf2bd3bcba916f49f14005f11d2a3f9872886c60994b2366a6e657373586134eb24ab234cd9ba5e9259d92ae70347d9db6e82becc123881d3fe4b021432326864b4b0a75151da94ad670555b347d0d57ab557d8c38441cf2a6af61d414c80bbd75b48a077dc9cc2b53c0a4714cda0c760506788bb75eb8d2d9d12bd5354ed52b2ec0de4acbcbd15ede39da7b0d37d55593526fbca7cab465919a85f6421cf44a4bdebbcc5cad56abd56ab55aada48f8e1a8e32629c893351a7931707eccdd42bd5d4bba72585ba8a4984af2673e27c916fe1481d638e55bb58645239aab54abd9860b09cb51c7745cdd9effbb8cf72dc8d5a721f67638783cb99904f63e10bf9aee5b0f72fb76ca8b7cd5a8296942b8582323dbe04a3a99036d3088613891e71e88234f031e3c75c2fdf03e485ae6f6949b98e23532914ec38289429af70fe92761c1515525ee1489369c41d478a44a2bcc2911887ee71e4bda0bcc2919a06e6158ed4dde9f416ce2b1ca9bd138ed4df6318def062914965a664696248d896969a4a612894f6732a2ad764f244228c31e85e91a6913ee56b8fe953e61b1d3de7eb7b867ce67acbac71e51c564b566b64398795dab01a5bce61a1ac56c3e61cd63beede9eabd1e51c96ca776b7c39876502bdcc627d17857066b1708d50ce61e11128b358434035463987754ba2cc620d11d528e51c968642ca2cd610520d949cc3aaf325e519f89e3c79f264c69459ac16cde9f22837d548c93932ef8812d6f9226f0aeb7c992f85da7c912785da7c991f8577bec88bc23b5fe643219e2ff2a010cf97793014cd17791c8ae6cbfc179ae68bbc179ae6cb7c17aacc17f91baacc97791b7ebec873e1e7cbfc166a216abecc67616abeb4cc17f91ab6cc97791d29a4343310d8d9325372ce3955664ace299a2939f14cc939e7cc3533ced47cd454502e346cece8315352caab0936a27a4c981e332579043161829829b9e38709f3438e099363a6248c8d99828999291963a6a48b4ccd9444cd94bc94f32b3d587eae56abd56ab55aad5658c822948a151c60f9d8325313a522433459e66faceae929bd77ade6d5eaf36617a3e7cd367354e8b9e5a9656c9ee6b9a2821d97c42089a629a82f03be7ac7253828a2e92bcd1286fca455902f60020e7aa0a3241244068220021d87343112c50874e4a940089cc0440b3ae6a0064990a063ec02034170810f748c5c90210549967099600918d840472742a0f0b3d3011db5601d49b283011d67eaaae46fb2244cecece8ed63c2a864aef11ef58d7d6206ed63bbc4f9afa8005f7df3c40cfacbdb45cff91524f2ded6d15e5ead563e664a462cb4948f5a6829f38e5b68f9c8859659ee6899b724a2a727af226c7c6c69a9a9071d7c7c2a05ca39ad2b844285724e0b13fda29cd3ca462a2aa39cd3d248261329e7b4b6d2498f17894a39a7c5993036e59c9645b91725e7b46e8aa6a5e49c5677aaafef39e59c967756119f51f9e911e7ada3f15534d7e0ac9abf913d2a39a7f5a984a7b0ce17fa94509b2ff428e19d2ff4a610cf17fa52289a2ff4a4d0345fe847a1ca7ca117859f2ff4a110355fe841616abed08321de3a1ae7d59763cddacd2295a36a6eb13adeac47b02b4de01d97b47cb48471a3bad1d1f2010875428ec9ebe075fba930ed96c3e28d4e8d7dc685d48220053596c36ad963d7edd513fa967788153af89d9d859d7eb3349737967126166e1d0efbbd9c762cf46ec3895d71be68178273cba61e3b8886eaebf385de0bb7a67d80e1dee59df580e7f216a2b963d8b5375fc7e20cbe52b455d5590a96230c2155879b1817acfdac8d5dcd5b88ae8fe1d630157695bdea7abcd1d157cdbdd77533dc9a9e199033bbea2b87d5babf7ed5dfb0de0b7bb0107daf70c86770d75d67c5f9628faffa70e3cc8a3de25bccd236ef2be34c7d65bf429035e4335aad01669697f775ee2cf042f0e37cd9557779e77dd930eaed433ec36a5d17f21de7960d3d0dd5f5da7c99271f744dc1728d4a08bd3f7d3de5cadcbc8ec0f2ba68bdea55e7fc0e7e34f5d134898eaf4e747c131dbf75740b8ee8a8a3a540eae9c689e63076f1a10f524b9c483b20e4b14c69c4706ad601511f5b2e9caaa329d601214fcf75406c9d1326f56ec9da49befe2431d9a275c8cf5f28d8f19930990c7b2ccb1fac04d8374dbb99a66999a669d28a99cab28a2c7fb6f4d15874a54f154cb07022bb1862c49127a4a0e2e78a2cb62841768d88a6cfb6ec2a91f21b9ddb76896df29b767d3496f7b5dbaba63de369edec73939af66cd3ae655c9653cbd06b42b9d0c811840f9b203c458c4c8b45245d6c17122d26cd9e7882bbda84d9b626cab829e9311618d1d82576ec26ed1eeb68b48cb346659cd8abc6f2ced157dee9b640b2b37dceb953989c9b7ded6ed81de7dce8353b712ab66db5072c6be19411677e901d8b284bb367d99c5936312dabb9bea204de55df38637bfd1567a83e8d618f9d0fd97609e1098dfd32a2a3be8e40a16bd071c91124348ed4f4dbf58d615b865375d5d1f68585db8571df2ecde6add301711df321a5b1941a494fd763cc6e60d8ac1886617953f993f694c62ef3b19cca5c0b767985274c621786133f2d230eb265a662d48eb0b6a56505443476ac892eb4d0945e76a31da5274a6f29ad61ed7a90f246279de81baa525a785d6e5a78c9a7b4f64d52ec8a376a4ed1a973e565858df427f9f8685b26cca9be892774d4f4b3aba7e1d6d1359f64ae39ce94cc5916e34cd568a7bcb1ac92faa233b768921261bf6518d6bdbbbc53d362bc3f75e7bacd9e66daec68f6017bcc5b9eb66ba74d6bc9752281899f0ff78023b5fcca117857fdf97aa3b63d9c6e762055c7ab3e1d73bca6ea80b01948cc40e4ec68ee411e3bc567afa7a8652d57d6a4c6b3072a6042d75f3552bb5d9492d298250bb6d0d8ab0a785260859eb7d8331420d19fbc95d969b0be99b7b7f334461c22d5d1f2f6dbd771a4ce279a5c936bece7c36d1f773d66650ab0d0b2bba1faf4cd63ed74cc1a02b9fdb4e7cf0e87dd1e6ba7037bf64a3310f939535fa4c94e9fe59a9a6bcdec412575d67438595b54e8ebd975ad04382e49c1a769189b4c3115f33ef990d22d3345dfa2354d4f694aa7d4d3ecf558a7e3baf6aba3c19ea5748a8cf59b56dd3261e66f5002c3f29cb9861bab3a6ac73a1a4c755923a9932fa254b2fa70e53a5354ee00468a44b3b64c18edf3184637472faac3d2001ddae5759c9ab5952270c4c16a6f9930293d258e4e0f5a0f294df39640aaaef95b7ecbdfcbd08bea1bd6380348b5f9745d3ece54ada74cea99aa2d1187692556848d21f619d270a5089cfd3453d97c3e4d4c8659b86b8bd66a3a2090e8a8af9f20091d75d476c619ab53fd159e2a8d9a86292b47b04aea1d73bc8e266712ec922552a045284b96e059b28491254b18b1c4c817b200a287254afce8b8a4043ffa0b72262e51a2899607e206d788ad5862640b4b8c50b1c408168c60a1455cd862091f1d972c91c4c810133061029e25b058e2475b79238e2cce952270fce97a4a67c7aeec432a52ed3a8685271dd9afaae3c32def2c3cd5150de02db576e51310096c1dad6547a31dabb952faca299ded68253ae67de958e98cc7a1da275e3a01efab0913f0f6b99a442e8e4c19424c166cca223e43b2d869c20513ecb4666104bcaf311ce07ded003701ffcc40d31f0d9bb43a044b728d3dd371c90858a0ad8e4b4660023d8229f49e3b9309785e9ed371491259e84d7f7e7a20a71067f8488c0ae923aa57d37924e2402fb19032ecb1cb324418aac54c35a1326cbea6903a5023c401c42f68ec516aa1b5bcaf37fd79a23124441cb0ef2b07d9a63f171734864463d70b3416655c47280b761da11fad797f7a5f4d34f61904fc79823843159fe8ec2e3b3234fd2ee93d7778882d97965106766cc386581171c01e461934095868ecdb45634fd0d8370bfd9929d9849f6c270836a2f667c87a6326cc9471c9903b3fcc2026124690e080964522122434a597013b36d1f3f57505e485def10a7c05930c33b1026756fc64f8a70a9c55a124c34aa8c0191519a6813350ee0141d78ee1a25356c680b78b5ee1bcd03df33cb05a83c018f6f91d1ace3eff03d6b4cfe7e0f0f6791b98d3316244133ab8d87e9e06be3a51f4400b26eee7633cdc7d3e063ece0bede51e3073a008de27ce0b8d730f98592d95902438a1ebf1592d95058a5086274f747debfb7c0d6b543d26ccd572c160f9465533d48e09a37da654be9db33161ecc534264c77df795fbe51d5dfd47f37aa9a6fe2f127ce5f8e9163320d996c23e7c83fecc0728f999a2b31c03e1d0a2cfd4a13f87409be424aa311f0f5cb056ba2e510f0257da4934c6609a3c775d150eaeb86fab8b284917dceeb3aa574ca49af168db96879d10bbbb00cbb30197ab5686c0a29a048f20412268e1849c288221d8e08852ccc8e03bde60f263b2276e567a59a7aa5aa91aaada3927aa5aa9f576da9674b0a751593086b3345af6062c54f154aa858d1afe8572e334563acb8205c710196af79a585af0682b5b19bb44e26e86fb28ce53df39e3a4774d4d334e79c530af151a2c4c7c747eb6072a64089129f28c4470701cbcf53fa9b2c3b3691e82bfbcd7c425f59def51206164a9d235b5c2ddebd5487bab72a9c691369b8de4cc3ea8c5eaaeb50f7de5a158e336d9b48d370ad37cb3049f31de32fbb10e9e1e51daf18c263be44263c41cc97eb37ca9d1df3e5fa61fd305fae2a82e4982f97121c1bf325522184cc7cf1b1a1315f68fc88992fd7b11c8118f3e5facc2e2e120425084a10942028415082a00441098212042508ca794c25a70c7b5a5a88a4524350289e5feecc970b64cd970b0c325f2e1067be5ca010f3e502af0bfc315f2ef08a808ff9723dd6e7f881861d3504f182c77b8457f58c6cd89091a141232626460c17973085ba8a0d191a31315ce69c73ce39e79c73ce39e79c734e90a572550fca0e0d57f598786ab8aaa734e4c5553d2449a4e757f58c820449c1c139092184c8c626f4e30728028f400f780c66a5cab28f99baaec23e7ace61b5bcc839ac540d398785ca39acaba0984a2352c9849259ac7c948737fd2ffdc549afe1a30731a564160bc6537e1d47a47242fdf4eb42cc1a2a39878569b0e12abf6e336bd090735857145a390dbffe63d610e51c967643e8a21a37dc0062cfaefb98356ec8f276895fb1010523870f512fe46ba0218cf345e544459c2f28619c2fa630ce975218e70b89c97c118571be84422d869607c38aba4a3a77d650855d69025fd6cb152478bb1c61354db1c984cebe27131aabbfc9db89235ac238a27344d79521e021e09b2766d013bb3e9d581142a5d467a6a85052c58f154cae688245165a38d9820bd9c50e8f9697938896d3082da9b02b4d14994d74a63c805db901967fca518e12e353629630507af00862c70f396cc854316168c4c470694941316150573189b09169448ae92a9412e934fae8f1240a3d741794bbf49c9e7209020f7e5e772da7a9604fb90ae52aa79cd3aa29794bbd12a253ae42c9353105e55b47a3e4956945caab6885965f81f20acbafbcbcba99cb2b8d86965f617955b34b0cbd6591151fe0f82d8bcc232933d3c2ae00810638522fd8f81863117663273a7e4d74dcdef5ddf924d936664ee86b13fa99f7f513bf02058d45669e95ce190a71c2636dece665b87b58de55daac7133aba5c29460406b5d8d9b592d95d4daaf63edd98b28e2335dcee139c34c7773ce95b50ce40cf98c975942382920a1e40233f74230251898b9b955f3aa46fbaa67080596b8020d9eccb4ae6ba1d5bed97cdd5fcfc21510a9b3e3bcd0da6b78c35d6573cf0d977bbaccca69696fd517f199dbba2a200524945c406721a604031a0bafaff0cebc75349581cde15ec4736cf69cfb229ed3bd881caf3ee76bcde7e017f1991cf02dfa1b1dfd855a17621b9a54e68bccab2dc7985aadb21c636a85e51853ab2bc7985ad51c636a45738c312544d3d1a6e888aef414a3546a5ad5b250115d4121500824af60c2c40a2b7e7eaaa84289124985cf141ae80281329955a0245925815c945210080402814020d0145a0649916510088a99aa18d6515a6956f1a0e92ba0310ca334efaba9d4aa96579637fdbd966be4a37e915da3f492946ae14d469f514a2956232fb310570f44b865236adb23ba1219c2d305175b38d142c5dd87166ee7c2956af5833553a9542a152546e9c5fdde4281f7b6a3b922ba7ebb42f49e2157300931b10264c50ff85305ae42c9a7848a91f7223e33a2c2c7fa4c71a790824a01c5283b76d5f50d8a2dc9684b72d55fa2bc5d11ca1b1350deac00f3f683f356c59737255edea8d87cb62968dea49079cbf206c54c554deb28ad3540aabeb2ea85be1eb5bdaecb022cad71d7af0dc3344925bd30ac7e7aa335d2f0465e751dbb0c71241055a6b1afb009846a154b531cd58a0d70f69d39d95813ecfbfad9d5e77a9657a0c0d90658feca492451ed11708251d45a6badb5fa60fab9320556f50cf90c2b489320c0a035c36a753932e0001152ccb05a975585248ac0c50cab657562c04511ca30c36a711590c20668708619566bd380120cccb05a9810ac96f6223ec3d299695dbfd1d159f6ada3b3bceab2cacd269b455cc65bbe58d62e1dad8571c6097bd4f2c632cdf52de7639ca1c29e5d99a63b2b3ac0447658417084b0f911011ff2059ad62b0a9646cc9bdc055e33b3d7e5cd59b9ebba3c3ba736ab9db372767a939b1df869736233abddfc38704e0de4b68f9b9362cb71b36adcacd79761f6deb083af3d8f7cc7795f47aacfb545b81fbac3e52d7d3227d7fcc93b367192444f99e9a37c8c71c7c076b08c59f9d1a8224f2061e28891248c4015a9b9095cb3842175f7ee920891214378e40e8b1524080e8e1042d8d8fcf831535175a96e84e84d87406a681ca963c461144a6d01fd5d0b376a48d5170f7ac506f80aa5d670442d5aa9b6dfdbd5767b2b890ce1913bac203842d84460a662d5eabe56dbef372a89b6c106221366a5e2510116744d0def194264081dc21322946026a745c3101e265b28c20c66725a2a3c36ecd412b880094b98c9699d6cd8e90253c11346c03393d34ae9828bcf88114de86026a785c2c516580d7ad0c491999c96690b271366a5c2fe45d1032d9898c969959c6821c1f082276798c969592db2e040116e1658b06c11caf0e4c94c4e6bbe88cfbc3876553d0a8b996a326156aa9e1739a725ff3d3943129c98c1720df6a85535ab24904b934e5f43b681080dd986212ad9069e53b6612725a3ba40c9282e4c19b54529a39cd88cd2e266541632a39aa0b098294a9a9794de8d4aa2e90db70d68478ff255a3c207021ef4ec385ae8593e89beb10c0d8540a8dedfeb412110aaca342643afa971f8e92f8c66d01e5844dfd7aacdefaa2bf69b22fad6d4477dc3ddd2ab5ee82dd7ccdfc82b8924b00b71a22710a935ea051107fa1d5d331122fae209f174d1c5165b68a185beb0c0425f6fd2445f5f690263bfbe4149f48561493496258ceb1bb47314114dbfd2034c64c26c5411d410d491151e60212b1c150bab75a38a685a835ef9a1e10b567523f5cd7554c48e57abd50a6b72436fe84ddef153e788c6c2a83517172d36d1dfb1496c4229ad94c618638c31c618e32b19e2ca13989e3a81af286814f4b2be16a97286c1aed8c0daf8d979bd1bd66c5fcc809cf9def3e56d8bf7b29eef36fbbe6bc6bc2f640df9ccf77daff2579879db4c672f4f53ddabb6abeeb35f21768fdee8a8be7ac31aefdb6dcb3b9669def75d6f79f335ccec1602795133ced457666e757b8cfaba2a2151df942cd75cc772cd956bbe808da8cb5ea5d14cca7c3d761bf6fb5bbd7b18562fee551689faba342da31abdcafee6cadb5ef878ebe82bcb22462461e40813489e4802851453f850a1a48a1f2b985cd1048b2ca2f856a2c0d7efbd7bdebde7eda2aff6ec77c5097c7f5d5944bb74f76acf9ee5af4881eff5bce204bee493dc25d8151ae0a855f32da9540a8542fd57515131994c229108637cefd5346dbec40ff94c65b554f3ac3a5fe25b34f2aad9d3d2924aa55028d47f15151593c924128930c6f75e4dd3e68bac75bec89a73e27c1122e725021b519aae9a96fd06cb350b6bae22ba669986e57c835da5fda65eca502dacd97e24cb346d258a4c9b3f2e4ec4263e927ec5095c9f458133ba69da9c73ce39e79c7366cf766c422b762c5fb5520d0b76050af9969b186bd5b47b3116894c2615951f85ba699929158401cb6f171c581a35d51a4ec5af3481e96f5401a7fba8942b5988a39a640acd0004000000b3150030302012894423511c07429ad6f81400108fae566c4019a75110c49432c418430c0002000004000060409b000b6d800662b5e6ffa0ad19d969a2a3cf38119bebbf9695e7bd502ebd94f70c45f9d4518927213babda1a3ea5a1397d56fcd984fdd51b9dcf1840c3632b63307c15f2da2b30119ce4e1d6a971ded71fcfd0929331ec5b54c1ad047805931db48ff9c15487f498024f336d328a75ffd08a52959a752760f92fe6b8215e053bb17e1ed9fb8b0e56e3d4c5f1d1070a0559355dbcb09bd6c2a18b28cb78cff0731108036935cc5ca4e867942a502ebdc95a8638918b202664aafaf6942c8c0b2e564c18a5e413f7001b5159950170a3263f2b7a65edcd5eb24db05639020acd51eda34ff73bb2108b4b15332f89d7253abd8fc35c085c41c15341f020f6adfdeefcca2ff621418f51ad1282e7032571ba349eaeca48f6f0e97a3cb73776a73f564e9d35a48620a70aa3f632e96abe0830d176b06bab87ee5fe43da58299c18fd35609bf403a798f8608e776b48591c083536579e42fa2c2d02854e1f2eb7eeb84fb5e0a500caa8449e12359e2452eb1bd94e7d8b8fcfd170cc896de8219cc86d2809fc3423e98b28762596c061ba50683935b679db89fb27f616925929828d1f1e60aee0baa2c143255d4762b58161516be4378f0f723f6be43a84ebba187e0f37d10cb32285fa105a26ef6f7d0f2a0dd94a49b6f1a4bcc14cae7ea40e4f9b3a34103e00c67aebd33d1591bac7dbfd193463fb34b2747efe37eb38d7ab6d8de71bac954175be3bbed3caac818389d77cc312f2be79bd4e5a4e13c475cf9b06e3ef8509e92cd43a492bb55f34511798b689e0674c137f38c8b5daf96cc5fbb183f2ee64b569c968a686e749233323f76a6744417b3b8d82e1147d734154f584e1fbeb53f58a149332b5d3d7bc958113b6c88f00c0cd8b9f77cc109460e1cc80af5e14318b14f1f85bfcafeaf153e472711366b6cbf42e9ed368dafa7f82ad9fa9716dcb121d162b63d5891d1b1d5463b30d9546d074b80a605571dac14340f925b3b35f420e9f9dd97de83f97fce272e128c11c1a50c446062db0dc25ecfb48c26c1e03710f8d2468aeff71f17e6ba040d44f80aef71fbb480efb4e464e84d4946ce168370f8e3f91aafb116434d76593b117160861c5a6cd61c7f388407cfe3865a6fc774b7f1f33c1c16d6ac8d75c8a637b6125db5a2b9ab1db4c24aac5706feb75eae30a4074ae588cf541657e49a0eb263b4f7687e561879806ae465e99b6ba10ebdc3df5cd7c7e20b746728732f2916b415e4275c71f386dee40e491067af52dbc3e45db99307f7887f2c09cca5d7e6f4374cff28f8b5911ff8383ab830a46d3e4ef8e80f729028e784bc510b7b280e548b431b57f3bdd93ecacf1f246fecfa0449b80756c9f39ccc1a5da7318966674aa3e129a2d0f70c69e83e5554f49f291d0da8b0d0de1f84b220a24bf173d6e4aebb6f21669a1c506649fa962776196dc912b39cb4e5a9514e34f29469b2bf0af3c30b6af80b3c783080fd4491de3b04731479242ea6251c4b28e06795a2fb3c62f1d88aed2e125e624356407e8774fac84a62c659c6cfbbc8b39aeec99391bfea0d5a621690522c8434421d3601a4ccae7a98a25067594f1d46cf3c3b3bebceb42488e6c8313a5b0d98804848f4513a7e4eb1efdc34c2e224e1d28fe2f7395f887851f872c4e712e9f91673c8944406311b86fadb7e4938a73ac2f1befc503aa63a21f6be4290e1f2eec1e3169d565b2e3362da810a00f2094c6fc95e8c9032025cec93326008e1741fd253a3e77aa160af27193047647f01fbae42d63680dfad5be5dbedaf704330af801bc531001c8285e09034e7b3c2da7b553f6c17c058592bf769b56dfd8ae7a5299603ad3feba77ed5a7fa006b5d26154a84a8d0832d2b26b9894e8ece1874e9f751c4998e047d44d18d77bbbc234fe52388d853dd55874d0b68c3c35112df9ab5aaa97a4ef8f6dc24e541d0599d02e9815dd92e3b7a5e5ae60e9f2494babbb6c6ebe9da1124874c58db18f6f6925b595e9e49a841805186ef10f0fa3fc357271f19c74d14627579fe7447826c2c8255615b2341f093c4244ede6d070ea02ef3482b5bddfadafcf94c14ecdbaa3b977b3e5827ac93b2c45a581dc9abdcb35509ace2554698f5048ce5e8683e019ca8a9e966766063635d8426af7180f56297b3a22c35047b6009b54e9eb78422743f9192eebe3e5acef51307683fd9dc1c81ced7c1a9fc42413d28721e963b22a6b68f5363a579f2a1b1cd64e24f92a94975d0ced30060201aef631b2640b5d2d31fb53a0f491de48d1f8ee3cbfb7ce7c097d8859af506657d7663fbe8f48f6ac5a9bb661e658441e329351b76d5efe699c74b61a2930b239d0ac4232acf6abc0e3bdb2e6f5a7e6eda9d124c723af8a520ce20e27865831609830468b98c0fa07607b378d28c952e48d51b29ac0e011fa5d6b9cfaf6562f061374b3c9025c3b8d86080e285629bbf295313c029bdee56b4d83eb2346def0516e0a518634fa582eb811daa5e13c7e959fa1c3dff9ff6ad8c0b7526f2d3a52f8d21ef7e2e97ef47ab79c2d415012db6f8dfb39890945d1695c6c38c091aa767508bc7ad9b3450a1bc476e3fd265f65b7150bd0525ea64a56a1dd16a4c13c63a6177f648c50a915d8799f5f71a1a00e78fc69c03cc65eebd4dd2a6db8a9306743a68ef4616a9e89430c89239934487301236630a937412e749fce1b8ffe36e4baed0cb0a9d00c6bec051094ef2718f138c7f6137802004278e5b8b3e0e509036f0fcc523c7d019d47ccb52c94a6d89a1a9bfb2e68154cde5ca6032200c9d6645daa15434d72edefe060c352f403c019c77422ead5113280454ed7dbdddfb62c0077bd4c8607b9abcb6b022a5a97bbef14253afa4d47cadea9b369559d3c88972591f77e669ed8034618f903b8e7046ecb40aef42d49ce57f963b51e0ff074a41a6a4ca2517cebde0fbbbf1c57eb157f8d404b657060e7e5a7960e498b5909efa859955eb6836a227d058c2ec1d2b308f5349f41d14aac3f0ff9364fb719883811a0f54d72a9ada98f900804488dd7a75b8560ab60447d399e01af83b1addc8900e4f7ad567d732ea58ac5a1d4740ee8cdb55481f65f736c6d5be68710024cdcde8349dce764a17f7e01bd3f9d339ff9cd088878eab140b6c057a30825a5dfa42543e617553cb824195f185850725e0a8c5070c23d7e4f8559ee8ed8ca476665b8592fec89d73ced796a2e09a14ca24aa824b6052f098128b48ca1052b9e3d5481394aea4f42ba70e626bb2191cac96941ab9db81504a6027748f71e8a893b871042b4e782433b1f6a02950a0389ef2f87314e98ba4d8d2898eefe074eec24bcea8d8f00a06be21513784649547ab6ac9505fd22a7e32ba5406f467293c1b3a6450579de484dc24b3fb8a7b8232a06b73e2f5466a744e60698c0a45c701644ab35be390b3e8d84f2d98d4304bed1f1bf7308dd01e3369963747664d3324d39b4732ad1936a4403518616c97b1c3d294cb62042cad2c281930fb8125bf39ce9c6ce03025a35ab5945977d947a29e6d131978b1e8000125eab90341eeed5e3b85fa96008a81aaa588c4be2c562f3bae5d68a45dc106b6502a784097011f0711e9c931a7239467e6ac8008ce91982c22806dff6287744af28dbbb6b8d23a221b00ebbf1f87f36fc39b038055983b63d7adcc7b9789768bc3dee3674c1e5650e30a0069f75eae9df1c9fc1547c8f2158810b8e6f1c715f04b81332318537daa8b32a22153166089f25006b2659091658d18c2498d7da0e9b383e2c41b186a593fea89c6b7d973ce531e4e80d3980b7140c80135b41a29f80bc629bb9b794c0537efbf8143dfec8f51940bc7b4f918aa0a27be9993e8f8ad7894a77a14f0c181a3238593d64c70247283d170346cdf94d5b7733a6d4ce969bb8093695877847e53d308765bd626ddd8cde388856137a376fa3d76b302ad6cd8adbb7c1ec76e225259b6191501d8ad2522adb51b5d8cabc56ecae099f0a4d5e9121a76a3f06c659f090d085f3076e3a3cb86d0d8cd784c8fae9b0456f8fa78a6ba01620c7dc7f6bcb1771821762cd21bef6d7459bdc073d757ea9bf09e3681265c6f0b70a7cbaa2b8ed08cb633ce50995529da2bb2ffdb888d836810f142d3251dec11f8217453e9b6edb63d60b1db0b3d127cbed06085407acab90883b11bf8c36d0250fed8024149689301341412ad08eadd098bdd482b33761822d7e4927dd4b9ec9a2c801b91989a743ec11221cc21bacc71b02e923007a530d7e54bd25f2e08c0aa83b5f9052eac10dea344d096eeddd620313e52af2fe17b972e2f483bb9c10fcd686e36e73a168e0ac2a5d9e5b0452c439b8966736a2d30a276a6cc941b098e62af2b45738eb245f392758eac5dedb9dea5d4264580e4a1bef6d7dd1571e38a75743df3c072002f7dc3798dae528825c773322a5e7849d59533ec5ca8146d94b7915c1348782395125de93ecdd1da3264c7389e67dd999aa057ebf254efe8c573422cb574e262b8b1c2f78867a4fd8d38d4949beff4dc5b197f32d72c7d4b955e4d02c0e33e16251cdf2eb43969e22776d5f3869509c01e6e2ff05b5781c8ea13e015659c1bf4c7bd2138c5ef04e190f88a1e7cc12b47b2e91528f427a175bba2819c8275584662f1f3d92501e9f15d01196fb919820aedd0a2631661b02377424ad1379fb9588972be120b7dc17d7843a840c0239f3e5deaebf45496af1d2df530b00b3732a8a4976416a74ef5490635eae5ddc40d5db4117cd6d123bea7460ca4d893372da07456046df4960fbd2bc54de08a70ffdf0d0222fa9c7ae4ff8f22a0eaed17f9ce845b94a82b8c28b1b28e7e813dfd514a7a03756c74184a370294d8410daeb0f3deccec36b8fedb405c3e7971913ec31590f17e2f440cef55c31158e6cd94e50797fe88c16f20721b4ddfb0f30580a37081784443be4c77c104d4512eee94dd9633bb5f1ed35fcec15d3e52f21f08af8da7efd8d8419a3649d130539d44452f049a4bc71875b05f5f60aef7d03f96fb30e5b5b57b774678dc69a560ffb693aa8a66a23f6bdb9be2f04164dde69f9968aef454696ceba6dadbe03babb1398a833861dca5167a8abf9c5774d168af0c6a6f925a5c943ece3d4984bec4d3cdaddff41d33857e32b099fa60ed120e8bd279a7dc607d9e210ffa611b44f8b99a37c07737b8ba675d3b54bd04a64f76d9059c4bf5ea2d06fb144076db541aa1c5edde663602651dca18cd3fd735875bb8e077750dde20cb5d72c99303cc4ae2e6bc405238b3cd0fae440ac00ceb28af9f800a95c38c4965c7825525188f9779f82c061fcca00406eb6e45150f3262f03332b157915b27d708cd8336486e1c2eb23354cea8c89174514bc61830ed7dd8386c6a86318139fc156df8da4d59939c893a928a3089c796e77bd764a9e9c5401a4fac2fb3e59b69f2cb247932afee7af0325c7f81fb251bcbd3af41b4b9731da42d16067e44fc19b1cd1e99201ccb782acfabec4d10f855e18c17b4c6697909fddfbd410d39b31f2bb6b0c5df61b5ec2f2a25f11b460323a2cc8d168d544a951f6c66a183435645e2e0996c44de157d8219788eeb787e5ce0ba9aabf3fbbdd683755805578a77556ab7536744bb83cb3bb0c6f9c7b2c3ca573c271d06063e30e79d914a12baa08db7b34781f5fdf12051b6c0b6579f0b3f02ae5a0e3bf0b6f5ce8284137bcc8a8eaa49db074aa135eb9be4cac913662d085f6b049146afaad1c68eb915f871d12b724982291af1dbb4acfb5a4a0a58c272c51b2159ca9cff4b9e4e541a98605d815759efed882e41db59ff5db4860b0f7af2d0d80d1eb2fd4f5604d60871474add8d4c4fa5710ed79b4ea56767aacb6afbc446afb8faaa074c479118cc4be0a636788465c4aea3db74f4e2904cab715b65e1f711324d2653d5667de8818781b6dd2af09af5f758eab78c56d00b42f7b0aa8fdb7098f0e596cf8e6cca0363c46c47d7351a5395e49dcfd1823b5832e16303da26d332cbc64e0188919e56efd1f9cedabcee661d982dd34020676d0774e671c724b98f670da83c79b29f8c95ac3ba21cbc658dbcd091b752c39f773a89affac1cb368081eb5a7e5d11a4fd04d31ca5ec308221ae6b70398b73c4b5b71715af9fe897b7693c5c0c33c887b45bce9887969a28fe4740acc778d6b892fd9f452f2d0cf69e7b55452194a478bc6c610ec518a0bae55f2949e4fecb3813caccf673282e4bb17779da03384dfd18c1e168e47d73b5d45938b056f30c4d7378eca147219d3b58518b146f01ef11934e1b4f4c61fc225a082b803ae63f438a5e57439f376e615daccf03ed02717f95f23def7a243476a190b557950b257ee5de7e7a0234086cdf34644cb6481af0c91509a9212bacc9287462072d17113262bdc17376c147862fbb38f79888e32f34dea5119ac6a7d668d4b3e59979ba551d00eaf80fc360519a7aa642736582963e404c968f1f7eff580653a3058b5a355f708ebf1fb4798d6bc35f1fb79b75ef1131350f5d52d0ca006906afb03f649cf046977c8ccfa46e7b9da9e32195caf154f0a992f363c0b7f8c52767fa369632c24da130d8e08739d174a6a210c573e477c46f28e4858756a980d7e3a76f63bce4bfa6dd13ca0a27e964b72297c8be547cd6dd2c6ee4d92a65a534aac747b859e489508408591d41aeb0561b61bdbf95480c37f4e45896b0d8550c26d76f54c28d021d91686a446a32f4285c143173a2adb6a9aa599616e2391d7d03feb74ded1ce668b40d079b47adeadf46eb27f583ea1bf2d08543530a053109d185497bb087967dc882ca82e08b6e091ec0a9bc6c70f78468a50366ec3e5ffb16bb4167d312ba8964032dc15efee687d8920ce97db985e8436d71eff1ef820faefb59e807186eab8aec0c4807f438a456ab0a15aad1879250c8bc75e9516ea8c53976ddb0c5a9fbb82fb07b1887b23e6f9d5a2688f2b0c6ccef826101f30397f5bd14006342519e6b8b9d984265fac9b8dfc5f2c3833db1c4a2531b0fa0512389c1f0cc9d6eeb68ed4766c7696025fb7806561b6b54639a51b4c49c96a1c87a9c465190555348985f2a2eaec8111c30d4f6e182f026d0c672575abdf34721a81d51c5adc6492f6362d9505e1e3080ebbc882767f83002317b63290044405fed00a30c50065c25f5fa927a9ba9f26b3a2784d4707db55043aeadb3b0201040a030984a68822666613be6ef33b1c7a1946eaee8781445815e9799d3fc48418bdceb2795f026d7c57e803721cdb24ef9e503398551328073ba841b0750750c0b42dc30acda775b9b509312a712c32a86916dbbf0cf6734ecdc327cda81f934a3f70ee45c9e2777aeadad385d68e62a4e179bd9f8afb2b2d778f3664cd2daccb09af1d8787afe7f63e119eae09104d69f9767916b803f59527d096b4b416db4ef9af6014354a3c560b6aebc2108cce8b540380e2fcd3069d254b0689f43768a7f31846b3640bcb9d1f7dfb509551824b177a624230de6c0a195b4fca9274de2a16b8774eb2c8565dd9291845b4cf15a5d1ac3c811487aa161bb2b9657c1b44d5c8596e257dd13c8fb5c71a963b99ffdc938785035cd1944e3ae82e21720682695f32e2732c3a407eca2dea5f548533405c3c0704518c5ae7e4b4ad6aa41fb76162a0567091dcc3aad70d650fcb2c624cf3579869e3300ae5dec8188ed31dd8182aca175ac4977d873c5608df323055e669a47ede4bb80b2a8b03735ee975d77ee93ac29d421d89c9bece659747793baee0243d731e5147b388ceaadf16d53146c183bb50647f3ada06e875104691dc2f59963b555e2f4105b47abde2a6c5430944a4ef6842b6300722987129288b15d2e5e6d1fbcd4ccd2476ec7a4a7493ce615bdabf48c1ed9262c981d5c8137bb62132f101975b577a548a99c29adcae6c3ae4d84487d4e72088a6abdad32bd4675e244192f48192e4c80a138cfcca05887c40693d459e5621fbb9b9d8b802d144d235e323d70c38101a90e267978ec32854f88681988b262a38553dcbc2872eeededce8e22f33d0a33294b42ad68130c6cccd274fe85a302d8a1affe964e2a1205b3f44b040443300a1a2830d132bdfa8e811599f843f61ae59aab01eb3d354f7b7775d53fcf956bdb689f1925bbcc750f0565e63cb002dafea40ce48d541367de86241db9d1771c1f656a557a6f26df21d54c0dbacd1a4dffea68636154820ee110851ae8453ef29383e4fa459b125e625f8d920a779d883a43356eb5c7af42ee7387eb8df870fb7890d40eb9f73b9bd98c15cabca24563ff2c09020088761bf8100cd6649331300bc414029cacb4110eea530068ff04b6ac0bbbe2615ab0d5e26c785dd5b9da249d237df66f52f8917c9b34ce2a46efcaeeb445983ce4b09b7712c0b2c3c002f67d3813da5c5532dc0b4742876e9df0789ed39c241b74b4614386cca2862e043ba636f19b5b4369c8122b5393d9f9e406f28b9dd7a740a534b222efc4f28bb51400bac8555f1e5da6b0098c9cff2b64e942d132536fcbe53a38383a83e319d37173381419a9e98e83bf06a33517dbb0087805c402c002805d90952d4b6cc70d8a1d47a18853149439d830ea216084b33718c5f9b7804c8c741c6391f0263a78ca6897dfe5013f79325c9b4315051935ad32326413c07510bf4b6d4acb0ea9e127fff9d40d178b8520cff720ad723af4ef3c338ed9344c9173bb16c1f49a1fe6356c2307c458b501a8392c4ce87223b517c12117762d73588e774a576abc311fc807421983030815e9472d6f37111c4ec80b5ebe0bf834d2986dd556a45e65ecbb40682cacb83d205db46fbd3722009cbcc482acdd54c0a42a13043e0e98e40850a41679b8be29c96164d5b11459e7c187d731265842b1e9111aee985b023cafdcf42e43eb0525789fef48043fa3ecc86e884637b61c7e206fa6f85032f2c3f31a878c41e3790669d6e50c21a3fc638ad9919e0321e893842b70591ed2498cec561047474247a59be5cbdede4df17b1567954376a7abd3c52d79942173a151292d4fef2da14f0213f48871c9c068398618f48870bce940694cddc8d4c89e527bcf0b3e40b2087b9880e4f6c844b45bacbb03431afb1f23144e6b9113f1567774f662ce174d3bad02656d361cb5f1eb1e32e1fc8d76fb39293622a2914b4dbf28e156b9ac68016ebd19a18d42965878987527b7c7de2aa35ca365f0c6845e6bb5d4b8c48aae33cfd667e422372d47af2c5b59eefceb720a4347a71ac6a72baeef28a699bf529324d0e6e23aab50a994a349424a4d4f731e384bbb6b79cc2cfab3ee9ad544bbc5cd8b39d2b1cc6ae2540aeb9ce7ec6ffb7cfe14fa8f63110ac804f27c34b88c1727eb9ba96d94441309e942e53efe735661b4f2bd123218cbaae378f3ff5ef87fa830fb5dde329079836c77fb782faef3ece145c05cbd761538e79182965275f1044064057fb0120c9444ec5b9d9d9c7f3d5cd84371141b7e89f133cf768b04d4272e1cc8a36c7c1c5071c04d7d5377cff4c544f16952ab929d07b71943e4dc858627cbfc5851d391c2e4b8a8c2e82d272799dc16105a34c3939111a1ec9168046a7a161403ec53cc9bd2b1741c568abc05244054001aea1d5236b56764afb4de7d4079b4a20399632861a829a1f066fc1586e6d85373bc2b2501aae51a0a3a2461370328a5279a52ef1d44b24dec31654b06ae4bb1a8134ee24d741119950a5181e3a82934568e108060dbadba848b620faecb8a59da4a218267ecf40575f1eb0dbd60f1854f7bf47326dd3e608d9d0bfbb1117be560e21abe4e48cd0fe8af56f55aa0e1ae1001a3fcdfba0f23aca665aed275de43c59c89a7c0b3e90c001c5814acccd7257b80457cc38f56871fc4295545eebc6e99a8efd540c0e7ba370f48e5ab042316511085746ce558eb1a442df11b0e3feb8245fd5528737ed5412eea3c6f4e987414eb4c19edc136f3aac180c6043c522e55a5daa37d1d3e6a419998f0af53621eb0205ab3e673cd35216e89647e930d1c6307cfd198386667fc0a472ede59926b134cf1accfa80898145fbed9a8718bbf8a7ee48ca15e1b6fe53209ebe4ab2716bf32b8ca4f133ba81667a2866718012f489b6a8052a2d7f8030a6eef3183110b4c6a2f0c391961084360500802cad8a0b0b7edc7480018249a3c12338121d5f7f8357f82a0e7311805c669a46889de7cf570622a24ba8c63af4d406413e1020c37849319398d2ee19baf9d5389a58b01c11f17e720dad2db2ad6b2cd707fcd71e305ac457ef551b94d6933a56c5f45b0c21ed50953cc84d97b49510039574d4a132fa95f4c405d9364f3e41b05ffd85df92fa097bd4390fa083a649f43c0e3a36b02b07a74876cbd0bc309daa6f2ea4bd4412011137e0de544c10067d909f55f5d79a5d113da327c2280cb9c2d4d52a834250a15b7e182e395de9be1c00a1a980979f8194983952b2c5a6655568bac734127e032998a976db574c2466e30799f28b20e9e80be1276cee6da20fd5d41180b3f061eac1d63a88a56b023b881a1fedba68fc00e09e4420ea4f139e7bf29e17cc80ad511ab14198f04f7bc56922ca81f4cb8e385190178605b9f491bccdb9ce6ac469513432bf184b7058f4c0e53ea7b18317521390f599d2ebd4810b1a189781bc8a520d24fcfde655dbd1865b7402ebe042b1eb120fd25c6471427461b7dcdc2d678865f2b56d637494a71d2b5412937bd17d5e8573ce13e5241c55e6140b74118ccf9a7aee3b0f8d489161e7f4f906b98deac1d397f8cbfd277858d47c5238cacda4c13887c38842007529e3cccec579e04221c479ad20188bb52069178998e70f4205021e4331912f3517a9ccbc095fd93ad5fa00ecab193cb5576fa9296a3e07316bb721d89f313402f4b3f97b8c94a2a2a3cec3954b534063046061fa6b81b919e325642ad1dc3cf8f3422b5cddb412871dedd09da76d9807bb0e9cda6677e133c52104844c88a64e2f731a8b89af3bc8c73d4ca593c085d411b405a0ebe56e9883e4882874e6e8825a876a183d4827b53bf4dfd917b5e9acd10c604472f7549d9a3cd552cd09d7586b1561b2a9524e49d730f418520272e5dcfad6bf6cf324ed35fee88fb19ad505397c43923d09e04e5c95b954c9087775a036df1923721b12d8c0978fc77b9342d4352099055133ff5f3f8379a037782110c5aa5b366a2e24fdd3a37aee81a54d06774d312395fa064b4d63aca464352b89abcc1073f698fe4a07376bdaf37dd85c0e94a565eb42ba6d9c917bb72e0ae7efe11c64838ba82809e02404e924c127583d1fcec9f6723255c74e6c41e3ff713acb3e2073d7cbf01eedc56186de025b2cd65602e1762b31b0e8dbf9d7769497fa20118d4e39b5a6fad05d57b81327324a5fd451ae72588e4e96bc11e6d57e1b9e96799458590bc3abdae689916d6a60f1afa4717f2d3f0216a9b50a5ce0fb1428d462d4685caecc04729783c6ac661d29868bd10c1d25f1a455a303de931b869816a585aaf0898d776d6b5b8e579824021e366b424655b91a0363fe6a708dd104419592475e76a8370af3eeb447357a12d6e93e3e4eb34375ba8b0f0d9046b8b231c68d8e5de77fa062da2b19c965c38494dc044a626a9044e3561b84b9e309c72e1c690f1581ed69f2c30e803db9ef392cf1e57272965e22a8b0d52f0b7e7712599178c697254e4f32d3735beb4e394a53efdeac7c2c4613d02faa0afafc7dbb7e544908769824cac951d1c0d18bb491e77d87ba49108ca2ba66ef46c7b5cba1675125506f76353296c454b8013e0cb35efc201dda32055c72584de35bfbad4d140c733bba87cb4ad129665c24c18affcd4a358a26e589bfa45b0dc5f21e2ca75b434e8e6c83537a5e53b0e8154f2f91359151e2ebcc60ebb83e65ae13f5e2eae0fdd4809feb4076d19165e2ce9a85ff953ea81fd2a52a9f02acd5b9f3133dc77ce8528ed6edc90e0ff42a5ec586101e253eb64ea41113fd8a032426a0aa305ef05a4cdf749a3bae1784b898ef2f17e7aa1d08f42307eb3955812fd747ece75079550adf23a172637bae8237283ddcf4cdf5e8b289c43d4247e409b4dacc239394ce5ae4836e87e5613bd1613d7a51d4df6f9287fcff8ed0f4b9c1c2499e75dada28ae56406529f3b92a2b11ef08b8def326d798ae755e43792c2f8db574be3cbdc436c7fb34d65ee34ac849ef6d26b3d14530bf1d62b3edd431daa53df9c9ffa4986ed75fbdf844c0d0abc87d589df193e154547b68106549c932f523507188b260d7ba2a286c8d229a7ae7fb8d9f3c4ebbc1962a9983107d57ef2098c26c98fecff3bb0571390c7e02ac407fd11477f1bf40d656fbec7f6bfdb55cadd5a3f8339b1fc1bcc6a7cf6dd83ef33618ae212d800f4241c332544c9562dc8ada8cdd5f508d2719f3ec98e91ad38b9d224d9b96d65f4420895279ca1f3292b09154ec388c25094663f232828b4871afccc84b4aae4554781f6e710de1957913b6756fe64f2658839bcf6501e7e11fa7e5e18dec4d064428105b68408f34051fff2d9add08b52472f0972f62c1e335c383ce23df3466f0cf0ca209af23f0b863285a60cc2eab5c392cc6380af709544d45ef57d63536b30c5a16731ce76dc7475d93497926659704980b04e2810ca0cb2aa71be4d0de0426a421b455a78ae4030479d7e6dad06f33f0a3abbe492890b0b2881c80884ec076596060305186c65f081f264a03978d66e1063adbce65d3e09a3df8725d009a458775cd090755185121b2ac2ea40445ff3c491083264d606108b0042a11a1676388914d2158e6a5644e9fd751c2ed08553b5a8506aa1585e61880a8b89b7a1a796cf3fe0339765250e7314648a069436e444952222facc02927389092d491470824b14d42e20390d05466a0de17641354c4696b8c9026e280857aacfbc1aa70e1472db170f172df6c1954621cd6b00e8b955e8200cee6a45b4d4ce2e912ed58d1592fc11484c7f62a5af0ddf1c4f91a6f43fd303c6ae74b8eef6a095193a34863dad22481d3fa706c96c8457665e069b3af756bae728f94f987040382eb182e13a83c460a7ffdc52df48624b1c2c6ba5e08925d131b9d9a2853310a0ebef7a521266bbf5d3b0c2987b6bc43952ab7d6ca298ddd840cc7c79fba0a84e9fb195bb662aac98578d554a3134056bdb82b2d3f7867af481529efc8e5a163045c3cf875929e5eb4b0a252e3c55ac6310b0a12d4c0b234a5654989299d720951e9f5c7e651d38addc490b08e5e764e196945744c931350e2dc11e4469ab3306da1f6959789c7a6044936c3727744d57122627fe7db25717b959360d9a163547183807515fa4ea5a1d60858b488f65470302a6c58db15ff0799251e389105ee41fb6e1c6558030831788ad236c70ffa0661bbe34925ed98f5be5202fb3e967dcc543c42fae5c3cc5b768b84713f788a7ba423a2bc693d2e37cb8744e453b10249b71c8dc2c18cf38b942ad5183324284714a812a09e3d8fc51daaf754e5f289ebe8cd8fa8e40cf337b93d3e99849a07676fa30e773fe372ae90df7b00db08d29c52335c8383acad2006975719970161299e07ba5715716be4ad991c1a667dff4e5ffa0f2344cc7e637561c979d6aac49504145f2a55d4e2c3b9c5034bf8e56939649303757fbb7b04ce7c199d76becc724dd24df305935fbe3f491a1efe856e4380c85247f9bbcf81cf84eb18c316bac0cdd0dca035d63940f1cdbf85b95a4f583ba8599fa251924dea541c664338e75a0f3192deda61537f03669769e2b7198576e3d77fbec0892571afce0f598564c784b3a9f0809f165cd8e87e79b2a315c1d2ebef1fe9336d7406aec797c90b6e15bbab039c751cb9aa4d56dec943e3d127113864a932d153c7bc6c0898a4c4844e1ec693f459e5df0df5ba955fa1892cf0d93a2a6c195765db8cc0dc73e42ad21ef1baa9c5473c1b9cb6ecf1343272a39a23e4e057da392bc9b2f91cb63f80a58f7988a3cfe03560463ff892f36b8a066904a4b6ced9d7f20ddd20dc3dda9cb30a509f79ea62ff7cec5ba15822b02dcc038730b085fb7752eb96b7481c53e1c2817850f7b6a54ed7bbdbec2476d31f9abac093d0444228b006cf53024d2a7f405d22f27a5f3198ec37dcd515b44f26da616fd65d642265142989b3fed3737316b95d4b47bda75994db092f98605dc14c7bde412116864050116569fc348b83d1941e43154fa6ca3c88dc5ed0d774f51a23d76c8b9c108ab5191583e6e61df8d81964561539c2e613009f1005abd3c895e626c1075a9804f2420aafc6f10e20face09a635aa24500e6811b3697f0f6a35eb515b0132ebb3efbec67f9a1662407da04d78e98bc0946a0b3c1f71c9b90ee32e14012c58ba97f1b915ab76f232078d15fe5f9ae9986f7e8a029d84171123820ac6503a3ab03c8a908a67b951009130c7d089d9ed69c51147dd8514378c342e82a244b8e1534ae88a183b64c84b04522066c3a48aa3b2eef2d22c214fb8d9eb8709431753565d7ff14d1d038c80ed8f78e6766ec30065797fcc60ecd5f75b142ff75406f64d594e2608032058ded561f9d2b8b65edea354bb0d233fb6a3d6dc4ca41d206557082b191f528205f130902e6a730b905dbe6e9bb10946514075e41d904e767fdaa7fe66cbd171cf1f410fbfbddb84f6e7d271c652449ba1ff620a8803455117d5cd57c995430a2236cfe8910fd6d13106087fe30a9ad4d4e3682f114783292697008072b39a02651d6832ae09e369616a02ea549ab04c23daa2c6e3a03b6851adc2a2501f5314541282a0a348e80174da195477d5492257d21fd57e6f0665e1a8658cb95f5f25c92354f6819c1abbd9a8c9012bd37272da07f69479de993bc5bc1f55c69980f23a6b8a3532af5c308eb8f601ce7639184b03dc07b81e234292038a29d39d25953e088eac62a529bd7fa174760a578ce8281989d31188821f9216d82ba8c30b2e9a9753ec7fc883b69308a8d463a732b37bc7b389992dcc152e41378b4be08480a36ae6bb7795173271baf795ce7f43cb742249709689671458f6de7d293efad0996e3c55681d6a56afd5a5337cf15e44a4024fca1ac7e690b5f99042bad39ab8400ccd7a8a263c3301b17c76f8f4c8d4b2023a5f50758e7a0009a9647bbd57e662529443e891c7f53a68249a03debbe87fbd33c126f01684692a498ccd21ebf1bcd4083d2c43d2a2d089e4115b3a13d9121a311768459f401f2fe5212dbe578034de7cee2ab42a6e77eea356e29c5d440185ba938c8dd28d16a8c2fcb8bc159c3c3340187ec30a25db35522b75a0121c7502608c746aba73d95a00b135fc74eb6ffd152455e26f24fad9365cff30745f293a925851dd910b269580698e52adf15d0a2144af3823dcd8d78401adc32867f3def07dd2f2933fc51664f69a851148d080b54f541a7a082e1a9c2fc8e6d4ffefee9194bbbdb7743192ca9b4a756572bc9c1cea71d59301feed067a9f1160348984498a1747dffa1768e9e7a2f3023c72639f9cb84ba2efcfd434664fe51aa660777faa2b5f3002cc8a28a90db18ac3d40ffaf6cbe82e9c3bfb34e3dc724e3c1bb75011f5daceaf3caffcae43a6cc3a4cd90c23402ec23694711a64cc1c92f2d90a369d6615e640975d22e9c8aca8809fe7ff160e47903c0b2d86db001785dca0ead29b46c8b30f213f0ad2809bb6424157b3197c7ddd394d24627dca6b834526e73415fb4f86cba700420af2200def80640332277013d5d509bdcd32d21034c68e2e36257e81dc326e5b1f7eaa8158d5a1b01a621570f7f0d9c0119858df6029ad45dc8e76d8fe4e2e89c9866641ddb41422eca156b1fea1e45a6cf66a0d6835ac787b51391590dfcaa194350bc79214e6a64f85347eb6f379cdd4845bf0b85e06bb67d8e617f039b2024523f1295bca87fae0f73670b852c815e549dc8307dd0c71ede8e7fa196b14221d347e6836c2273dd817cd5e1f24724bf94862319e9e084120e4122278884f91ebffcc70e15d274edd87ba979bd0211d517eef8f7c138faa0160ec48b824348c8e61c1e1b43107b4341c1c842990b4abdd8a6b53639fd55e33462df302236ef9d360135679051a49a94a660f90a85d85405b66a3b8299365ce174c258b693e85157a3808be6c400c77c688b4d9bc11d7c46a007449a650a2e35a19cab69b22983b664026a8ee120cee473d469220bc64a9c52c04378c2178470b787daaa9c905087b0037bb9404198541233daaac51b4949abb46b78e511ff9036c6291f287ff963c931f4814a17a826035229dd3ca531725a0c13e440341209905432c9ad42f463cd700c82b0d8b4418b68ef1e527af17239fc7b5709c866d0ca437e97f93f2efcdd66ca28415c55b24b691ecd1a19380fa40003ac53cf3d19d4cca84aa6acfcba5017692ad117651a60c159841f2a731a83bc9a906329b293da7d0bb28d4ae31696c0764eb5dfc7c1feaba465ec94b1497087bbd2387fd42f5cc782721630da14576f5e3107ca5a9ca7385ef7abdf8dc991076679593dbda09665b122046a705eecb9368e989a7368986845aee3e817f6af4aed79d527845880bfc97fd84b076a61bcffb80eb33243fab2ccb6092af50427724f95e88db2ef114a230a60ea01dad51fe003805878b4940740289f74bf1d0027680668d7c2984bb1d0581599bff1529c6b75fbc5fc14745e35d0264bbe34fbac5df05c3955344d4a656ad17c32a520e4bd499ed3a20251af9fa70823c5cceb4c6397167681101205f4f624545c69b3cc3f9938cc0a5327b8033e7526cbd561e61415ef4f5595fbf3bc57491905c2d6198d4040eeb93998477b36000e09b8b9717a427e2bec355a5d0c9160ccd7740f3d0f805414f4e32eb75db2f75c243776562c5024c3f4929f1243fab0e5df21efbcd5a359743c087c259e8f17fc6698630b4fa0206a91225429e6b0d357d65db8030279d474db935d71d266b0e70871e8152662c17df994398faba373532cc4254d55749fef5e2d152d1058675281cc7be7e9b0b7a27c809b373e394451d57a8d720bbde5b50227eeba89a711ebad6ee9b9acd62497e5d2df486eb187f827822c610ba9db4d2884d4e2d639fcda6491f41b1000fd72984d0b5fa1d84aa222742926a333569c4cc806e1793425db53b9e2d2a6a8e30871c42bcc63c17df9d43a8d2b93d3532cc4254d55749fef5e2d152d1058675281cc7be7e9b0b7a27c809b373e394451d57a8d728b12096b794edc75030f23c65bcdd273ddaf4946cb852fa9dd621f914f24586a6b2e94d91c24d25bbfdc5e598e3be2400ceb3d830d6a311e6abccf562c771df9838a8d42c2140816f459e7680a7da18720a1ee2431653e4a00b295e0387ce942767045a3607922d5127915977dbe79b554b440e4554c04bacfe5cbc1aa9a68da2756bc151342e2a793cb290941e86e225be1a57b2b7348c417e5e2d28816be26be7d09dec5b0a61ae516f75522423dcce668c538132d72b319e64f9d0d01fad326e6dabf82129fa81cc62bbf9e37acef9b2eefb1a10a3c720d71dc0efe6ea4ef6477c06d37b23828fbb7c9ff4f43b3ac9e5e56878ee3c2291a141c447a366ce4583b029e25291921850aaaa499f53d48d1381378e5683771de9ab2c0d1b7e6032f722f5ee292f40dc35592864efff0ed51faf3dfeb92b07c76d27e060bf1c5a2105d64f9dc2f009278be732ce517b88134f34dae88d9e4566de9c16b2920e0f1221652ee824b44b9950bb7658c678ba10f2b0fc0f55354cfcd82fde386c9df34bf76f5d994ce5ebbd740e08b7d89410abce777f81f18ea18c81a117891361f176c74052f0c247107879eee1892e4c79a6a6811e20b9c84c0bc9fbcd3e1c38ca707d763b367f847ccb681de87ff1028243e93488653ca40498f4e9a4517f273fe801419eccf51c71a1f20772323e56f54602299a00d8c8e940cc60f26e3f90f7c93217074ce90011da7e10bca48311b95176de7ac9660a4e5ca3826515899ca69443bd6947770108399ccb48c32fe0cbac9112ed34e0c3a2df6a47d6f691b336e3effc10a337ed8419c80b0c802185c3c6c898773c96b67056f3f45a0ef06d566f3a1af1dfc99370b2f303e3f85ddbed37bde8cc242e3d0e8b80491446fa9284eab2c415ba1944b5931a7a766bb8af530913e10590d70620ee4d43b8190f9219e14992a28951fa6eb7692211425e0cad14396de04420ab422607818590cb653a97f4db26d92926778e1ec4aa46667b0bbceb9703a6c5133a791ca014172647514ba2e8df008efe47aea24957f3c90b0224b918bd94aa8ca1cca6710462b53eb1df2cea488924c90313e5327d86d8f8a50ecd951410b34966067a48937c1816850089c6419b4ddeb96b704b1c90ce3b4f61018782b4e5918fbf0442ee573049cd2ac826e431b59df4d7265b50d3db171a1bf44969500e10add37bf13ef0ebf849b9d2b2f029a883727342b3bb63e99d51799110d5146826b81c8fb44c2914eca5eb0196d48a0f38885a11f75e183e13f09e35e1c1dbecd6587a3c2780a85ca10ff602cd54569172ecfbdc1f0df82f4033b3e3c24bb2cc87bf8c403895f64ae8adbb46ae7d07e923028fc603ccabb9e1762de4505e39928062bc349d188bc442436929605081ca5141dea9d2592d88a97796fd58557fa44ce4fedaac97541fa28cf959ddae63e5ccf5ddeea927679761d532f7bf3710e03acb2972b42a36053618b1d6bfad74fd37047911b6857f235a71a2c084c2f455d5a6d5802d10eecd1b6874a144ef63dbe628005c2fea4c02b635d4fc4d04d95271a41fa3d1d45755dd3fefdd32fbc8b408424bcac45e8e5083a069589e7eb5de9fea6a45f915e9455ef434ba1f96f3eee487102aa2cfd4bc74ff25d320aff6e23ce7d9a012ca19c5206c058ce10759fa9fefdc9b81bbecf54f4fe00b67be6915d5af1b9f84498f1342aa104f8e3ffbbec16893b68414855d3bec646e1d9cba0cf842d52b60de503565918a2256d931e350aee96dd865a50933b9a40782d1d5df4a74a05b55e534c076aee73cbec21addfc3d2c10bc2d27faaa0483cd26adcb7a4e2ba963b69051bbba409c90192ed0dd2480eb3debb653b3fdd19c33076e211771715cb8e767e3277573d203978420315198f3764801e1e212ce3babb8e20f1239f7009a86ba83e40924eb8bb0f8f4afddad1a5c15214ebcc56a0077d244a594852eb53ab0fc185cc0f7010ff171261fc930c33b6b193af95090e46c65b0de50bbc233aab6a0a6c56c4b1590a3ae8866a76b07f9afefd07e7553a66f8ac18defd2179cf8c655092bbe94fdf35752e111d41fc3997b6605425df10296b1c10a1a0b252a39c3b230c6df033594ee61af1be36a0dabf4062deed5f48ec10874254c509a498555c39378f8ddd0291e6704037ed6b7e0b24efd5fba438e9cbe50291038a102390981753531748a5d3c6e89c97eac063f3c831c44629be64bf7ffb64c563e3e902911fad115094f8bb1602f32472235090e816f2cc27f86792b01788a5c924a5909fba0ef14b7ded3fd0a21c29d801fb936963437f9480ad8c6cace4a3d26470d232be4010642d04d3c474737ba7eaffdc6e6d8c6e4a6647c33b708bb4c1697b520ddae8fc937e5481fc726db6aa490a2946e02ec76b9ef6f83d69785f045837a31ada20b1c446e8fac7c5fbd910fa42f7ecffdf64fc9d6b41f1fc2705ba9b61b39fa2eba114771ae0321beee10b078c33db56013d40a10fc4e177113e1b2133aa4c52c4b8b5c0d61f0f9512ed6c63c9b2082567461ddf046c26a1799b60d17dc3c49d14b97f28fb62e99d1e8410757ceeeb674c7a0296a393d916280a2da1e754f8ba2cd116974ad642216c03a7f69c662e783d12e0579a3d3d042dec2fae85b526a8864da40b5f6fbee8ae3775a1e06367f1bb62fe09657fa2b8462e2cd9e12709c99de8a29bc77f12d2bde07fde7f34ce89ca69a1fb8178f09b90925a029b9a5bd15fd1650fd29e30837a24125d339dd4de83bcf04b58772682b2f8b4d6df58b4fbfb4702713e8a32f4b4e57f994c9442e55556e1dfaac99708a357580f883db6c7c63c16717e5d962a5e56269ab7076911eba5e18a0556e151a97fd79d304f77530638e745c1ff717463b5a284e960f2e9d17f87a35edfccf9af7c02a46efc61e18a3d1bedfbf3fade1ac05980225977f5a25ec109f313e21fc6d45c75b018f580a0a124b691ae8a527456a1c789ceed78fea8d99e0141aa0a64700ff1d16d380f19e121887d05c8bf6426084e0a928ada2ff74ae07600d28c83abc54bc2c400ad795b502fe45af209067984abbd0e59dff342357febc0f07c5d444cda2ed14822abcf6d039e98c0eee42f98ad86d16e2c711cb3247f1ddd2fef77ba478d460cc1df699ddcdbb227ce2850dfe82411f0d020cf32bb31c0b6c9db2d39dcb0ed74e453efd77843fbbdef1e170f8f36cbde9db9708fd8fbbf1bd82c68d90bdc305d3fdcb676c79574cc11dd165f99ac0e730c45006a0ac3125f1fea766237dc7d0c21e0d4adf8ea246f4dd0e2cb31995f092b483096a572c2ed7b3b4702cf2fddfc6e417ee5de75c334e644a68ebd9029dff3ae4859055726b641ce79ac35465e35a8b74d339c73d08bbf5ead61bc6af8488421b9b5f6d7e854bb3a345f3ad39255649d2bc62adebbf5099854fef87cd3b438826106f2dd545724da7308f5510378d0e4c2697778855e1609de2a16425cd1db1b4d6dc23433581a313540856766f348df3107d2da5d4a4d51e04f68e3a8c50e20430aacf9e7a303b53a788745f3ef8b2eb080d44e0eb3b2d5371aa7499783ae013eb70c67ad6e658d04ca9f570072199e8767291d1891472934dcc2ad17eebbd5daed850c24c637667da0a7c26953f0e850d56c4861a90568ea8641d8cec88c2dd0f4c0eefab7aad970dc0fdd2fcfec296f4a0bf5770ac290909bd019bb26a91833804da2ca67858046ecfd0c64df9af80d42a54aabe5120db352aadbc7060cb072f6d179a7359cc5199fe9feea9ca7ce14c43e21ccf7b19244c1ce4831ab96eb023fe53b4e9e1b8facc8a373271edb764fc54a884d3cabba79bc9b6f7640a84f121e89ada82118343f6878f3eb440054655788a09dc10bdde403e4d18996b6b59e0f27f6745ed2a3693d6823b8e3cd88110f10ea96b4fdc79852a1a9b20e05474847c50b6443cb7dbe4d0d947531f4369053237d5e1bc347abda64da480312bf4d43342be4778ca6acab81cdd578a78f1782b2de3235d46bbd86ff38f44a2c226811c9e97817775d5d4c9c69cc47f6007f3e94f6284177cae60b1ba0ddaf8446ae93bdd7324f2307768a64b17de9f6fa7007d0fc896e09ea62206991a6f9fb8a2448fdf4d7c9809886d519d6737c777ab8bb9aec44dbe4c677040a38c91bc48290c93a8e1d7305a27afa9ab9ee5294cc4ee77b2662163aedd7899b01b85f27f13f1c9667666473e612f7eb94d32f0e721b12b725245f3212495945ad1d01e503f2fbfbc85b064043858c46ab13652b2f5bcbd625caafb5f27aef65ddb52b0749c15c1be9d35fc47d271057cb1df598d9ee86cc004adf7e5053e1a3fe4cb013dbc27b97b14e46916e616bec4258da9efccccd348fd35fa4027291fda8fd3d617f341f76347ed1b685bac0d74395e6e0838a0f6c08b45f51df3d1413f8bd75104a850d913b875129e0a69e099672ab977c8ed619a1c9b4c92b65e2389e4db54baf43ccccc3661df2a888594c4d2e19084027478330a54ae8a03e649ae0f2cafe70ce51c25a6fdb94d362b85f07449f2ef937598a62bfae06a8d2f164ab4a5986616e774ea599ae0eef3cf82a626d34ac0b3ba5c0b050916cdf848cc7d7bd941ebbf1e3b5e4cb8d9d9b36f578b1e18fea5ddb865829823e84cf8a8873a5d3fef1a4060b4254de73c1280b9cbe4abe699c574ea2b28dc09ea6f0905c802f9934c72c93d9ff27ab8bb410a8c86c0465919ff89db6e6811fd213cce2d5ab7cc0d80bdc8207a08fd61c382a452d3243489098b785f99c4dd359dd2cb01a43329bc008241c52ada8b66ea8db8d2794d67f42de759005de732e786581e24096d14ca3856f425d8b168a88cb063c080d4df738ecf69da0a5ed458492c41154682c3d99976c16e6d4adfe29c6841cba3912b9a80d06ca67e595e045828b496b36417828891f3ac3abbbc2c3430f18ff93f93590cbdc0ba26de7eaf7e14458e8230609fc7a11c289bb30649cfddf926bb5301142749e62803c0c925eb627881b443d8fcbca88a54d642a6697675358124ad399ce59a2a2e3649512c8e6d9c56247b783fb388d5a8899d2242cbd43a12f5348a3643b8a84e96a1010653d66364b7b5912580cd7951ac86228fde280d33871ccdd28067c747b0b4f262e26045d5a9cc82ac9f17d4e0645082c2b3b4b39c324be846ddc30bd4e21cff10fe153e697a2afeef115e89427e08b161f01a741a64b9306dd71c49c7db4cff62f0837511634b6bc0a29787ea1933f27210b5b064a7e975ad06d16cd141e4e88c17f36621f75edfe2b3640ebcf2f2368c2d1f3c6ae666a31e795d22e815cdd7a14bb5cb41148ea98b89ced61d62f53f9a7d3ee986a5529a901c8186371b2a439a029a46903195086e486063a9f05df4e6aebc0b0e6fe6e90df8018f8a2297164a3f3c6ff7001b1f40868285a2f6aa3acf29dfbbf55bd3b86add9ff827e39c0f256a26cddf0820058bc7fd9b4b2198dfcf9c79f860afbd48ee9c4a29f0c9085b44f21f9765c3d86c76dd0f77cf8c3468f78fe4149b72fb8a6233f160b0a89c721cf1af2370b9fd2be52763ac29648537a3b277c5ea98811a3374bcc68c74592c150ef62ce8a7cc7c454de1a5c0a23cee48d64f38445aec7408764ea424dd61a50f087122e4897c37e2183fd7545f364a6b2deb6d569cc6462b1feaf6070b8ceb35508b754b75e58299032f3b408384de6a7a26aa70f9487c5679c94388f6486eac0342545bebc434a46651a701ad5ee3d90ad3e2802dda23e0ee76628bfb253b1c73361a163900ea06fec211b7ea74e95b9024aa1c1422282468f197e58c03e2b8f84e14dc80c2865f4c9e7f67d052de46b6cbb9cbc690ed7b8737c832a1a899f93ad959589f2838daa3d064ec1f348ebc37c1be714e3371239e0a9665d3475a86fb84a7ccd8e5c01d80b19f1246394aafed4b1a4839bf24d8e732d8e3b013995dcf2ceb721ccee97f0ef8363a7946f1326ed4fac91db4a810a0c29dbde9fdbd81314d428c39c7012d9b4cf07b0bb5e679d8f8b3a08f815acca33fece180b756ffd61185ae68385fb3ef51913a0935d7f7fad5bec181d28aac29543d06a7adfa72a23e7a4f735151d94ca2ea167873bfdfba0de97649710636b4b4bafb1dc8e2235a0bf289f3e845fabde2990b519bf22b33258d3e2def612f5f4111bd8e5006d3727641d4cde835f5e11c7d7ae7e34bd5ce17d279ae27c1c33f429404035fd9db4e13b7e2af527bdd94844f215c169aa70299dcd479e3dfc128cf62824a64bbf17dba3e4474ce358f409a808ad5cfb153ada56914a7153e161a77ddd400f0b3f74cc1bb8421bb1e5bec5c5fc4cffc0d3cd41dfb838254d2deaf533bf7db6af9083f075aad49fd438b803256f912558542da0c2cc0cee8ed651049f1e496e95fd85efbdb242d685cb74455535d2be80089b9e9c22df3bd4142be89dfa85c8bf67c51089d0a4ddc346eb977d5d12544bb0ae23732db52cfa57e5aa5e56fd2946ad61358b89bc48a8c43724618f7517402046d71d55b64f836afa714d85244091e2d4a95c79aa480e3312597280c3511892c00512b0794410367e4d9c53409e090bbb46a79c0b52423663a642e7bc84d8eb2520f28bff63cc1db7a8332dee08364d5ce0d93d2b982a0fcfa7cce986b2a58f00eebe204bb9fb59c03be0dd5f283dbc5147143e4ec3b2541d0d0a83a4521e6c3f2e5ff1d3c806a27f38a43a8d96a4b8b49ea10a06bd9c8e2af0b25473eeee76965d0f8c24c76828888a895de12cd449f375f97616d0690ba833e4efe3dbc1bcc718ce06ca924fb90c3afb7df468ab721584dd0280251584490efbf3f56ea3c144095ce9081c1d42912439b4952fb142e8b346a0ab7a238dc1b347ae1fac457df098e8b1eb3488c0bb289400ada22a7c23ceb8dd22470e10889f605a6e7cab162c1097a1cba05105c2c6f675673433c4b12f29ff9f763650cd3fa08f7b8d2e589846dda2fc3490c06adbed1356e6854b4b912fdc11a0b76c44bbc1b80bbce052c5f468f013123dd81d266594e07a36b07e1e52412113ccceb912a67ea5a14fb0d21894643c2c66a819f006e447b12cabc4043f07bde6d3407eaa5d1b278b58c88c5d2440204f763a03c4d8a364aa9f7f72faadd84a59fb873eec56becc1d22f4e83963a043cf9ef3d01242a14466c6b8d8e3e42f76855ab99b6078dad060c33709ed299dd10e390d98cc4321a7e0ef5d08da63853a3a6b0dc964a5cc320b23888e158844a26bf08dacede58a6466574d34cc491deeb6e66f7a8228fbf19aa0ec739388f55dabce66e2d1f439b57f8463a2e4b556603cc76261ad34dd9d8ed39cc964c9964e156a39017d1d7bc486cd68b43336848567bb5e1f5009308b1f0a5b9a75eef6342d0934e8ebb40f50837483266daeb241b82c02fe5cff28f47d2a2877f3b784ee007f341f271a9dda5299798cee261619bfcc5160c925961e0a059994f9f81cfe107bb8dd1736668fc4b753bb578e6d97b48a4ebbad6b1eaf56006eb586e263abd988af01e676cf68734d72f004731a4c737e4715bde6e31a014eada8764f424d486b36525ec8ad0005676f824a8571ffb52bc63685fd9eec8e041bb1b2475e94e2475b085aa78cca16d9a30ef139598c35afa16ac54a9ae1ac97d41a5fd104939e79219a11fbdc32a5def06ca09a3806aedc63ebf60a2ac96261e03757a30363ca06b33c6a87231bd88bf55a2a61810aeccfad728390bda3ab61cc063daa54cce331cd8ee708ffe592a4dc869d11c80115e5ae78571568cc06a680576f75428a858af3ac51e52248646bab69351f2dd794c0cbc23333ca46931ea464838c0a79e5439eb4f42e2c515b7cfab335661d3a52ad75155dcf57942a0a3642484c147c4a5e132c5ff94f34ff8753fc2839408d45233f4c05cd0dcf061f506f998d0f70c0a508bab4fbc4a8a7c65363c831848d5ab279e52da026b3e7a2269dd93264961e54d81e6096f3e984d3c6151f26b0e0705809f16014c0c2d17207989dbd9fb5a38a06398b24bd96b6ca902991322ea6401e2281578b4ef69abf675c353a8150a498dc0db23a272314fa448c037480c18a1fc22ba08797516fa94070aa6838881f1faf4021608c4af42a66dcf69a795578471bcc82449f7ada34129344b633636a407af838ad67dcfc2071d548b1d7761945784e96f8933fec2d7838d0ee66076dc169a769e88d0f94219f1274aa8033a345f8311cc393cb5527460014f068a296b37e1f41fefd80f0e05904bce06a91b54c2f4db76cebdfcf780669ddeb5adf22984020162746d5723654e0dae00fa78902e85cf2df572b9a782cb628d91839cdd72aa9d81ec6779163847ee3171df7a4027f6279723e5c11ec9fca119ec21f63b3a1f71cde92c1d4fd3429246d17ede9eb082c233e40d423e655eb8b56e06ed750be83a6c9ac65846b78a2e7dbd974a5f12e1bbf2cbb0e8b8f076e44da58957bd576ea1eda4b3e38f8fe2716162a5916b87100d9b33697f216c169903780f45cb7927be78cdc9f819a0f1bc745f330bcb3604f688a32422ef277d218a2323cb53f9b22e380c425d4f6fef0f1100ecee1a94ae8fc62c0c1608724004c166dd1a08e0fb60191208dbce3b8df14b04a0c96d969b2de77e42e41b8b873c6b7cea3984b7450a499ac3d0c49ca67d57e90559c5ecb86b7b571cacb18c45a7009cfdb96db2d368ce66c8706fd354636ea8106c6fe6af883c99c5a3d6480a340ffe7f5cdb0156d2b9083bf8edf268704cd475448db451aeb791590b16659a4ddf2e03a5f08070d528ea308ea78020b13f4089e37712d10b25bc05562e12d937077e4713b211e8eb017f3d038ea0e441e8f85b1639b4a1686542deac296565331afaf889ae6fe9c970459ece547126ae47c44b0c9395672ad24dcf98f12156afca0fd3241989c3d0495dc39f442db10468c362173c37c006beadec6f8e0a0a135ccec1c7b189ecf15f0506f0dd66168069e89a3dd042c0dbf8bd72d38ed4c86a21d0dc74856674ade7171c45841e7b32d0988cf1710e7634f5c3f264b70522388dc9ea7e1e56b95567abc663f795460aee444a5682c8f5113c00ac15aea24e8411a9a7f95b4c7f26f007ce4fe882c35f6ea6c937e6f7542982a8b0f186456016ccb6408cefa15067c2f66b0645771050783b232d209911c2eaf60334753cd04f7a9a18f1d0864af7b2670860c896baadeb74937ed262c49e0871bfaf8e6e510c3114163a2a2bab2a04b1d22dcbd62c36e20a3c232d46ba081f0faa0f1264174653b33fff244a0bc8347d0463f0d10d9ffd9997980ee780294065dcffaad671a50fbbb3960a20b0934be474c64a791d88423363fc0daa7808d3b260fdfc0f429a8af89c27a54feda067aab2ec18c201034d3052906d1164c32830281c005f604d1b707a9dc2e4085c487f89f00fa35807a310e3a20c500e86a8e9a574e90eb0bd2c51a48f0a6b9041e8f218685efa7b0a38d8a4804f9a66f1496d9c3dd2e2112ff9fece19f86f790f4e78812a3109d82bae4b45c0f9e8c82395be15b40f65556974dea343566d8035d36b8ec9161852f17cef44aa641f848e03f16bfb8ca7b9b6742a683555d3631bebdd4ee0d0cc5604652f41903c4583f8c6707ad04f64a338e6bc1e81f282394dc5727fbf952260746c900d7513b6cd1ba45100f5efb0ccfb732a770471dca00e2492e3d9fc501b3be03093cba99e7ff83444c53e13c0aad83c8a57951ff5d09ed725ec23d2b6f630abf93f394adcd189761cce4a52d21e12723f29c05c8ece033998b942fb524c9f58500705dfb1c3fc18a775e517750a9541ced0b7e1424f64a48c039921da68c98dbb8853199350c9199ceef6fbcd7e5c370b7522b37d069dbc2cb6ec5f4eee084588719aee1492ff214f6d72ed8697c944b621a14c31da69ba307414e9d56b2c64b049237318445628d1b821d32864f22515651afae837b0fbc081ae9181917a103168fbc73c75b6560e1306170ee76ec2d8c5656c1d91f96efcdf69a5f77d5231f002bb38b3f698066fa5bcad203bcf3172ac0ddf087110db2b8ac09c23f7af3f6238759f51e886eeea17be80e331084902c04325829024fc43be7b48730627b24b8e86d59214a4bdd021fe9274a3f5808e4653a221f0574f7545539f6addbc412a76dd38ccfa03bbbdf52c11c6fc8a17a1a4c83969ffc2f7507de507ae102d1d87487b35f3061240d32afae645a8e2ed7c32cffa7d38e64d0fff766bf7f442c9c549b70b971d17600642536cf5817d88b86386da90dc4f0c1de2ac4896d5551569b2a888be897a9574d0a2a9828efb3e4e4402ed4b2ef2c6d8246205310dd50ece573f8c3d2540065b6dd397abe3a2b6a00463e72e90bb29ab24e79cb91d369911acfb171734dc179826312711ae4e5b060e0ae367f69dcbc376e7d2ab18eba93bc1a5caa3b7a3ca925a368b04160ad0cd99cd4251ea574b9ab6dbc7c345c51e405d7afd97d0a6354e31fcda808d14a3c85732dce78484703828c82a1deed2b32d23c2936ad8cd3204820b4b8d57a7a1635c3ee3323b6f6616036b0aa5185a37d1e829a006d3a5b0ae215dfbae1157d4ebc8015a537629e42b25f09b3aa734c3eda6e6fb57287022556184a1486a033c1659c647f76c08217fb03c9bbd4ac34b1b354a08afaa81743c298310674fe3206d010e593e252e0e9d9a3ecaec2e6e3c78754de901ffbeac68e58703a249291cd0a1637919fad20a9aa085357b52d5fe6e088afb714b6307d6dc687b607ada3f1b01b92174809fadd34282589cdb611bf426acfe5cad14260b00d49d050c14db6799e5b3348cc88733458869444a072c39b50a02426fad10b626abb333dd72f9dab9ec96ad83a07e659c7eadb5d70bc9588dbd1a18047fba6ee16259ec729c6e95049bb785f339a88aa26c4bef5187859700077eea553abf0aaec997fddbb43259e3200069a5d66c12f3c6d1a4621c24d884e402b45d66f24a0d478934c0512ae4907fb3112fa38edde0bd4f1f047f861b64fd23c71c936ee017e28b7e58928c4b796666dc5f945457e8c94cbd05cca600751df87502e5d3ed3d5fcdbe3983e5fbad00718c506b5b981453d8a06373d0e24a57beede83ff2fba3854d605edce54b728fe9e651a1a232fea8f8d934e5ae24b6827ff020886b88b39cbcb2e06a8fb64ab98673c418244691c226210d299f19edbc01831c7978fdf8aa789cff4e3bd8cfcd2d0cbe3f95be6a83253b56cb0ca7562b99150cca30af4042ba33a64663cc921410e125ec8f913acb522f6579f4850cc90ff82ddae0273e59d4890f3dd935e78e122da17b29f7a6d39a7ddd5eee9e21332de101d1530779f0e84937676808e1d1e4898e321607d5e85990cbc034ddc488113a211faaea69ab4c25b20897c2128e39d71d22f6f885590a6c5824400d4bb2aaeeda9c482228949403b8a5231936137c2a2b7eecbcf0a44be5097080b8a02b8bbd20c1b9d6c157d7f05719b57103aa9de6a1460c5f12f9094b7116871ff4112321d6855a59c200f5f96757b59767ad9bbf3b2990771c4ef03dbb6e3bcbd81dc88cfa0add8ca0b5d540a231a0d2254c41b33837c4a53203f3b2af9499240801e45ac6bd5fb0ff2604c7029554c5cbcd14808d9c942b6a24308c3a156b64b542ad681204d6642f98278a487c1fdc891d3f75e50fcf55e8605a802b3bc5659375e2b723ee0b709cc880f35bc38ae85072ef0ea721943b09f3f626183e86afeb58f51844aa3853a20af95213ad1bdc00b125b64885a1dbe12310b9beb6889a83538c001d91e6abdc208ad347b6f612ead7af425ee7246304383c1624332a67e5f77bc2f25bc41b48715486f2176c1488a9836d3f83b776e86bd9401bf9106f5f419dd47892441974f00db34d3bdafd335c2957f85f022564aa1f30a8541b8dcfdd1775d773872165f6e90b60552e82af8dc7fc49ecc2434bbdd2734e3b82f35b821fd8b14201c30ac1bd51eb944c292c758582430ee5d33724cc33d9323538edb9e4ce451d5d6122cc2092b1e04384d03953da4adb9d3ed989f77ec47c3de6f0d504e492f588b02aa182d6ba14814f5a82b186390803cf34f9620199fe5aeee295a13b97b6d65630884a6b85222368859fbd7ecf241dac9507c4218c302de125551a6aff4c875043436b8e01c7461e5d6c957b2b5c13669425f1fc66dd35f902c76682ef004c9eb35e8fb01b93dfa948cc56431639b2c4534ed6c9ae6abd0bb6893116ee8643c4ea4052c7d5d536ea2d303fb36c41868c7a50571df68c42302dd62b968a959f90a0d05aeb4b913621f84d86b2389a97f3f4f36b98352b7c86107f20147b83b20a20f4038d65be341ac52bdf6a86fde48b8c9468cbb11223641c9bd36fde8e369ffdc60c4f430de1d6926a1510b007c01a94bf1fad80c3beab8ba138e292df4ec75b3ed056df975be567f12aa38339e4b1c8d080430b4014d96629bb4365df4e38f73e976e3d9f6d9925c2666a2aa863c98921b35058aeb7f5fda8f1b8d246d2dab7c1419f340ab8a392d69e4068f65fdabb6d29c5842217a956fd007467f7f9d2c1eb57497965a4bda3f23ab1a8e4953bea0b7a09b4f02cd2f642bf92e7a2c5412363172176d02b8059babcf4a970cdc629c16eccd6eb3d62a5d22af849c4b81fa5d542a3539814d9823615e1474354b9e7d344ad7fa2a29d463de329ca78dc66fded7700e81d54c871c70dfba516fb840536e7535472387a59140da288b06981870183447e0cedb254d0f8c4a105a6de28fcde0e9d3244c80553252282031681cbb48666d38c1469f86e7bf6c9021f35be807aa934bc01ca7aed412978fbde87c723afde48427820d1a049138466f13f5dbfe5ec9cb82369b720ba50c2eff0bb56baaebc3788d0bf91af2391e55a8889617a2e3d5fa52bda9193f808b322b99631734b247bf6334f42e28697853cd8106b01cb9776dc947dc2f2060088292db702704221d1816c711832d2386bc72a7d7bd5c285c37927d3b9b92fe5a7114294ea5dcad388cd2eb345fe0ae12ddc940e05cd1a4922dc84d5657d3fbfe82e0aaddcfe001dfc68fdaaa50d0ff8c13f923ac080b0ab2dd09295099ec37fb011c8cb02568bdf41d0b5126cef2c4a17e4a469b61e1abc5cb186033bcdccd6396d45c53cb7266d24335609e3819b4117277d9bcc474b2db5b8df02e1f620759d4233ff0f534f856e7303b4c3f86240b23303a3b8cb334c8508e3484b8d52fe41413b3df4997c400316342457253faebe30d92d0397e5bf1d0a7a81c74078a0c0932e036012575c86024742a845356f6b357a8abaea278838efaef1d18640e7bfad6fd804f6944a806afa59f6c04693ea78e96ea9a4092d3e3fe3aa0b049026e503744b3fc186eb8c9fb8c471ae5d7b9257e9c80af6672f910e82f5847e134839707a6d6bc0290185a2f57eba66e9f0c4548a3ac8436689e45d0176cb0af45963dc119d2946714077b46df2d44887fbfc425655c2075aa1e7d59615b8c5cb3af8bd1db37d09eab0fdc4d25b09a3c0e641240f6d8e5dfdd31a9e19da47ed7b163b783643d6b06db108a5d7c6058e2de4c0ca90c9952f030449af28b35719c8fd0505e3028e2ed49c60c229cf54476676230c6400fa521bc23d1225ae9a537045d6cc0c7446c520ce013c486adf5e837340f8a5a901c2ffb2beb04bf3a76f198954b04ce720bcc27209812b120c137e23805581a06a4b009366a6ca931b78a8c0215c317c235412ee6cc3b559a480d4374c748225f53ff45d93172a9d948831bc4fdf8f80d632e541817bf5e261a779900ba8372681152c789a885e45f3976ba62b1737c77876e031309da54517ca63be56f5d7396d3a4faa486391fd27a4d41a99f5c5ca489ce669d258f5611119c1108160a20ae931d88e37205f4888328895c682fa20592702120565213d217c46233134fa7649d35293adf41c0461b29d7ec1cc2b18dd832fe60bac9506db2805bfe34edd5a62d56b66ac06ac5c46949af502673f3b626a8b506b687c42a6833cb76aafa9e85f7b75cfbf0f1887b6f62ce372723e30a72158f535ac3f174c867b47729853f6eefcee7a9d21be997a9c6c92fb5238f5c1adf462ff3d5fe48842f375b290489a08ef1ccbb5b98937f054d27b9edbd0b3e0c0ba77ed75f02c0dd58a0945fe6b3745c311aef6d016fc047605fe3df1ffb4156175644c6835801dfa1ad0ccea08b6801255bc422f8a66cfbfe76a1019de3d6edee2c55919978dbbec271376817c75cd4e5d58a96d087e088800b83af874c9278fa0908ab322ed811953a04b7c5e48f53d3790d11d1d121f831b9a3db6c3ea3f238f41a9b22f39bb304febecf5f1b7c974e4c1b28ccc22765cf7a8fb2b7133063024dacd05dabf1ec2da0d1dd2ecb0dc4a8c908f4b1863cd5d3d2d262349e46c6e845e790c087b3c5eff00cba97123b6b92bf2ae296023fc63ea07c66948484965c3c2e089d96b12e7904edfc842ce4dc12a401c47fede26da3d73a5d5d3a8ef612c52101b10d1c386472b574e2f20cc28d19087837ec87acf788f74d8298040101b82278eaf7629c8a6c61dae4deada58d043490a97339ce71860b9c12038c9d74505b538361b4a56be429864fbb01a87c868f4d63cdd28f0f70795e896bdd12fe83c930cc700f4a2660842a3858222e4831959f10941527ac89612e4aa0e17ec32eb1c5b9a6c78eaf8e91e036b162ebf74efc5d57248d5c42b5ead8b2b81f193a5bb68a8108ac260f98b0d6727ced5c46ab07c0f37b3f866756f795511b56fa68f3c39ab48f44ed7df409d82fd835b6522703935021472d663ccb71f41ebd14236d4ca463377fda47eaf3e511ba0ac9d645fe95f01f38d61ce7903c7cced3265f287f3a5cff79b9e5a9f5fa530f9ed337c78f907d8e89c0aaf23be6b1b46f3ba24043d794da394d495f11c7677c138a30c32decf7eb5e0d6970ccd94771ff423966b31f4115aee8f7227b949430b18940bfe3aa73df824e7bad237a79a0df79f621007d62545991285c0d65adbf9526332e963c2813d2f824b572ba8a7f040f0396930a90ac83807112c2ed5a524cb742f83fbf4834e0e7d32d9c8c061e6649d323371080ad0eb84bbdeff7affe7dbf4ace0f80162d5af86b8c1ebb137dc9ac26d822ac6d5dacddd7745db3c564cbb2ccacb3dd256952a69402df209e239a24fde98094c095f474ea04a748f45386a14e5041431ac9da203b941d9a904644ae9aaf72d262676b02361e15a676d2798d5aaab5ee91fed91b182b546d9f2953ffd9aa50a6c5750a8b62954e091f8f959201510bd80b6e084bd261951584a452d7b46bd4f4ce1e402d60614986302027125890a268bc1669b1147bbc6c1c92a4b1e83d14177ab47e3a1d536d808ae455e14a2d30bd567deaafb50435d3356d7af5d9f6485fa96b3d72553525b4b4ab552d2bf715039236b2a99686a6d7699850cff48a45db4a8891be56d59af4987cd50e2badb5d23e6530bd4a0d4c071c28c3a2ad02aa6ad32b15a9e7cc0a65bb598d8696a2928a0654a9be6a6ddc66da5799eaa8e9b56a45ddead9fa5a83a3666d6a9234acf6b2666d019f8c6aa55eed2be9021b8cac4b95ea27691196b5eaad0ba01938aa5e8bac5f15b25cb51b96ab2a6543d950d31ae9013ef6999480b4c90a652ffd64d54c16d25657bddeababec5a4a612b4184972e63318e1b9b9895386abce090784868fedbbbbd7912ee1e38a8a393836353a01606b625151500c0b797281965035a06c18100db2424aa24144d193118a021086322ca62a7492e8350ce90f1c2050bc914745202aeac509c98931b1585a3f780cd9a227863a0108de0bd0306aed419201cbfac5a3869cc082be0653484bd56a94b4a3e7adc6179b2240912233d1a3d3072b8bf6f6e0ad6d2d0c2b8b2a682807c7a6c151f366808f2ec1a82e3468dc406755f5e4743f694cd377507c6bcacd4698e0c4174b42021a20385152a5434beb91d302020dbefd8763c1d3bf4aff166ec321e8cd4b36ff1593c16eb95ac153fc54bf1973e478dc3ffd97e1daa3b5599a44b3d48dec813f5a12521699007ea5adbc763a5576fad563d952af576af7b9f72ceaf9c732f45ae353a3397adeeb05ef72c0697c9dcae3defdaa21fd6eb9ed180daa29a73fec3bef72ffc76ef72b8db5666654514454bc464ea8b89fd2ca9cf43d3799c0a48e53e8fcdedb1cea992fd2b05ea54fed3a545dda757b5ec2f5e3fda4d545fad4e6b2937f256dc738fed0c6c049d530d48795d67f9cfb4f36e544ba55c1eeb79efbdf66abd53bbefbd9e4ef0dd77aa2f8aeb7ddaa9dcf71eabda4fa752d7df6def6dc76edbd71ec7772b97f6dbcff7eeab745ec9773fb57d4fe3bb67d08d7aaf7d95cefbf45edb75efbef7a9ef66d29aea4354ad7b8aeefbd4f6355ef776b5772b97cff603d52e85aac73ad57b3babbe7adfa77ebc3a053b0b9b66bf792ee5dadcc3e8762d654b7dafb974440fd3b9e75aad9677deedeefb9a5ef5037af752efebdeb7fa55aff6acf7de4fcd3a54f7dedbbe63d554bd6391aa51bd2728c997e8528fd4ed5e77eee1fcbf769b7bf094ffbceea1e64f483a275be2eb3eed36b5f7f41ad2fb2a98b4834dbdfd7dd61a55db572c3bcb09abfbebb4ea7bef9dda7b58f79e4b3ded566fd7827debd1bdd755dd8af5bd4aed9ecc3779a67ac9e635ef3f7dea7defb1b5b5ed91bcf77ddaedbd6e85ea58a9efd2eef3d57bef5dc9af51b156dff5aa59aaef0c7ab5f7da77bbab75265fc02fd5bd7bdfc33a93c77aaadd6b69ddfb57afbb54b7f66cefdd406ff2d79adaab76f7bd87f53e2df243ddf65d6af7021edb6bdfd4ebda7bdbdbbd80f73dc95fbbb5576ddf7b0feb4cfe4aadbb5db57bef5fbf1f0db01aa809487bddaddd3eea566b1816825253076077efa79e7a772d111656ad77df7defbd8a5339994748eca1776bf8bfeb9ad98400e613f4c153981b0e5878f2064f5b781d8b29775d570aa7eb5ea69803337e9bebfa85ca81e936c5b1e0227303d3f446019825ac02608eae0a747d6c7c81e981fa7aba762f301d8f57dea80aaf9f875779de69a2f29ce1a9f2628c0948620d20f0a9d838e5fdacd3370ae2924211789e1404fff605ce6bfe80bb71ce35702dd00c6e2e5b75cfdd2fdefd1d7bc162b4cf4f67eb7b8a0d38ef83509cf7724fb6630ba5bedfee8429a91b706cc63383ada6a4f4d066bceffde7bdfbbc565e9c77cfef1ca14018260f9ad16230a0d5579073fe816b7d4239c7fa07fe59dc05b4fa8ac77cddf2f7aa90ef3e77cb67b3546e0e5e279b2870c46a3ad39d4ce6d05d4ab9b9ebb031d2a433637a47e77cc4caaa3c6022f282a25cb25719a523507c6504e78f140562f29f17b8254144571a38b5ac2813a9a20102a49561e7dcbb9d718aaa636c25225d42a9dc92c4eeac5691120714c0f9f3ea87080c4ffdc584d56ac481ce8fdeea3308eac0d922a3841a31989a6f113fa7ceb9bda60a900b01c3249b0a9c730019dc8c8d1838e1844be380e11c92449aff9491f19e419273015ace6b339cf32fef7bf7d7abd72d00f6e5d5c5b5a59585e5e339e704b8b6274bcf112e069fcdf7f7f779cf5dc07f1e8bbff91e7fff94d4ef3bf389eff0bfbde0b0f9dfde327a6cc6fa077ef9ee3b8fb1b8bed8379fc17ce0efe0b85c1eeb8dc5bd06e7fc906bb361381f58ef1af6cfddffbdffbc6071979cfdc139e7611e91b00be81f60ed89c16e5d3702551dcce5e6d612ac9de1255893c373c06deb7d5658564338d71f3bf0a7a4c477d8ca7c2e77c99702b004e8fd033f0216843db49e10ceb905aebdd2e15352856732e08d67065beda1f59ebcf757eb1cdebb02448bad93519c5b5d5cc938e737ba7cbecde1ee1ee71c00e7dcfe8e01b1b8efe1bc40d63ff0cb65b477c00f2bdf6673b74001b0025f05bc0a7415e02ab05540ab405601ac0205c0c0c0bec0bcc0bac0b8c0b6c0b4c0b2c0b0c00a7c817d7d7d797d757d717d6d7d697d657d617d15f002f3faf2f2f2eaf2e2f2daf2d2f2caf2c2f22ad005d6f5d5e5d5d5d5c5d5b5d5a5d595d585d555800b8ceb8bcb8bab8b8b8b6b8b4b8b2b8b0b8babc016d8d6d796d756d716d7d6d696d656d616d656012d30ad2f2d2fad2e2d2ead2d2d2dad2c2d2cad025960595f595e595d595c595b595a595959585905b0c0b0beb0bcb0bab0b8b0b6b0b4b0b2b0b0b0f4b0f638e713b8b66a4888652e5b01a2c55767c0bdbb3cf68e39e70fb8b60a541eeb7539e75bfe7913e77c8d733b8422d312e7dc882771ce9138e747bc88f3a14e8409e7dce65a2a002d55ec8799bf62f458efef8dff193dfee3331ee75c88731ec4b57f4cec9bcb565f565955e6fb5cd82739e758ce3b26e7fc8e6ba764e6b2d5fd1d7bef6f965597155615589739cbf9ffe15a6927ff6166d24bcef93f8b6fb017bcb787368bc157299732c4b653e2dcd6b20740f08482e474418b0d14d23e46063e718930dee2848989df9485f0ddc0e06725c3c739e7725e87d5614f9cd760419cd743758f13e73e947b1e592e29ce7d124f82f750ce3904aeb5b5dc5cb6d20387b7acbaacb2aab6eebf6e58ef6a2f0b0bab2bababa7a7a5f5fdcadaf3aa1a83adccf7b95bf65a1596cf6630df5dbe1af395bb5e6d2dca3917dfe17fe07fc1809c732dce3b20e79c906b6bb3b8d07ca3c35dc19f572ea3e57d71f78bc73f6f4a8adc2d0f8ad16161e730da7cc7e5fdef1d0e77bd9cf3eb193d2eecb21d71ce2970ad97bc05f106bb6520aef58a9cf3c17178af7c0b8e7fe119eced92bb5e23aef564bec1191c269b7fdeb99b37a6f550de87735ec4b59d0ee75c7c87bfd8bff5fe378c1ef799ffd43783a53ee1fd1583ff2d3806bccb78e4eea0d9ca39af5239e73e9c7b44cef920d7f6ba33e0de792cfe5ff0f70376eff2d9fcf9c4e0c270f9fe8ad1ffee3b7ff1dd37f8cbe372f9fee2eeffdee232fa7c97cfe21bf00e9301c1ff0cee96cf9f4f0c3e9fbb80e5f1deef72cea79cf3ce83f71e9cf342aee5739c7373d9eaaab0dc2deb81c357deb2f96c4697aff4c0e12b3178b0dcfd56dd6132b95bc5e5d5e72d77bb555e5a5505b0aab8b4b0b4aa0ac3e73e3eb0f8ca2c0677fbbce1f1f87c45469fcde8b2d515b90b0697bbdf2b73f936d35d71ce7bb8967771ce89b8967fcebf7718dcddfbe6fb5ca8f7ffdef88bc7e073d73b0e87bbbfb03c06bc0139e7d29af36c795c2ea3f90cf1c472cc749acb6b1f239058ac00c9c75e7fd55fda13da2a1fa1f54f81b5d772fdb6ecb7fe7bbbb6edba0856808adefdfc5fdffe5d3fe7dab68de6fff553ab36f56ad756eaf753eaefd46b75fb57dbb66dd7b5edd7bff5776f4835e4763f43ae741b68c8adfefa29f088dbfdb5baf5f34f7ffe4fa54f9c87d57efef73fea36b0e6dadf902bf5bfe7cdffbffeb9b40896d7fed7dfaffaaddf3f61b152ebe7f597da82fe4fbfd47e0a3ce2f66da021d7fafd53e01177ba3dd76a9d5badb9d6ea36d0904bddfed9df7f69e77e7ffc732e7fd372bd3f82f5f61760425b7f1f86159042eb17fda2f4fbafb828dd66f05a0ad5fea4f502606833507a012eb48a8b948108b83f83f4fb9f41baa50c44c00de498ddf70f580ee58735fd86f63734a49cc3fefa1b52ce51b37fba35ccf0cbfad610d18af8ed5ff55f9b7d1210438ba8fd4f025e6811addbea1691ba9dfa7daceebb196d95436aa53ccbcbfc132fab7fafbd62f667f88afe2ffeb2fa296d3fa5ed6fdd2a2efeb2fe33fc320bf6f7f6b6c6faba3f1d5a7fffd927c3c4b2acf5f77f88fd86947335f6fbffc0fafb3734bc6eb5f594fda5d9cfcbeaefa7b5feffbf758b957da2a4dabfdb5b25eaff874ad4ad1203fbfbffa0cc86cb6e0d7b596d7f5fe62dd43f5d679fb0dffb3f67d7bfc3b5f5ed61f6f75fe8b7879473d96ddea1f5c9706b88fdd66d4fd753d26f68fdbc9efae47a4afa43a97f65d96dfafab3dfafa713cb0cb13f6b7fff64ffc3eb37a49cebdfde1ad6bf7f43fbfb8fc566ad4f8694d9fe74d8734849fd87572506d7efffdc75ae674b564f490594d0dad9efc7b34fe97eddc2d553025a68a9dffed2cfc97cf6a93bd653d4ed1ff5639f78d9f5c9b0977549df25fd025a68abdbbfe9afffa80bf8970508b854df7fa1ffd3ad0ca5385e667f438e595658ff42fb975556438fb41cea490009adfdc5b07fd26f7f34bfedd22ddf92d5f513e726d67d01b62c18687fffcf814edcfebf36fb74f4b4e4f567eedca818da21eedf10d7fffaa7b151944458ef9fb0b6e772b2965bfb1ecab59f9ab8b65dd7d2de0407db6dbbae6bbbee75dd6bfbfb256e9dc1ffa88e848db2b4a12d7b5ec57fcdabf897f22afea7bc8a7f2aafe2bfcaabf8b7f22afeafbc8a7f2cafe23fcbabf8efe155fcfbf02afe7f7815ff40bc8aff205ec5bf10afe27f8857f14fc4abf82fe255fc1bf12afe8f7815ff48bc8aff245ec5bf12afe27f8957f1cfc4abf86fe255fc3bf12afefb5394112dff5f38f6887f1dd553fe4bfbc53965f7e1ffd2d190365bb5b9ffbcaea5b6ddd4b335fffcf39fa61b61a346a3f26885b07ed4efe7ff9f7ffaa37e19431febbf757beef9f6ff1112125afc6542425ee853fdaffe08057d32dfa3bd5eeddf535f81ea4f7dba02fd05fef9cf6d5bd049c610f5c9fab3f8cb86b25544a1ed81a1ade1d04714b2fe9f214aeceffe29b0e79ba7bffaad64dee7fb35edfff15bfb314fbfefd9faf5fc9fad79fa79ff54cef5c9763fea37fb3fddfe51ff75fb57fdd6ed5fb5c75b35b1dc1f9852abd62b36eb73e0a7e9733f9b4bd9f47f7c7ab2d8abb54af5ab3f961fd08fd6e7a7c727db83cd5eb1d66bd5fa3fd5f0234a3fd347947ea58f28fd491f51fa913ea2f41b7d44e92ffa88d24ff411a55fe8234ab79461fbcb98fea02fa3e6322d3dd9d5ac76e868e9434951697f7c7ab2d8ada12175bb45947e6e57b3daa1a3a50ff511a5dbc48e88e4a927b04b4bbcf681b5a7d56bd647bbb474743434a4d566b3d5aa6d0751ae09698384809e6cbb5acd66b5daa1a1a3a3a5a51f6f7fc172a83fa9942afdd6273fc4503fc4506ed5909bf552d95fadbf1f16b76af5fbd22fbd6ea9705caafdbbfd790f164bfdd41fe5e27ab572eef44fb74a6bd934d727e0548c50797ecade2a4939d713b2ca4df46ca1ad72137915d3469a4ed0e9cfae56a94f559fa735ef05b4f55b03fa3edf6fcdd44ffd55ead6f7a0d9ffc7cff6f3f93edbb3e702fdfadb5ca0afe552b33edaef67737db43e5bae2fff7ce9ff79fa936efd643c7dffb9885ced974a9f9e167fd913d007da1e78da1a5206fa183e7da9f6c9fe4f4fbc4cfae477f63e4f824e5cbfed1ffb137ffc53ef3f9fc96fcd9e89e9fbbfd4b7e6bef4b3f4fbd213e7323d75aecf8fb467839efec24ddca12ff4bfd2d6af7395b255ec4f1250419bfdb6979a7eecbffe1ea3df635424ad22fdeab7fea4283a5afb277d6bcfe73f7ffab3de8be9076dfd3a37e8fb3c95053b5786d33f3b717dfe929f0c0cff3f7d1986177ad9d3c7e0f49ffecf13d3d3b9739980be99fa7dbef4c92cfdd2bff4fdcfd6fce3bfd9ff9fdf9ffe02b59f696b66fa4ddfdc7fd33610682be3696b784819a8fdd24fb9b43da40cd4fa50fa7c73ff4c9fac667aeadccef5793af252d3bff4449d4e7fd0931e376a8ed63e527ae2dca427a4a327a3a7401f68a8b4a073877ee70e6dc54d5ca1ed79cab53fd667839e38178bbd4a9ffcae549fad5f95ebf3b552a9542a954a7dae5ffb1448b846e50291799f40dbeabbb7762a95faab5ffa44fd5dfa5435b43f99a772a89e6df6e9dcb93676fb77adb950d4ad75fb47fd520e25fdd32769920f22822d537fd9e797af985c4feaa75adaf0f93ed3a90deaaf724fefab3d5cdf93e5512c25b9d9dfb3cd4aa7d88f9d4e7fcfdcb47fe74cd75f1cb2be0e49d95fca4bd99fca4bd99fcb4bd91fcc4bd95fcc4bd99f0dce4bd97fce4bd9ffce4bd9d429752aed5e12eb850796fab1d8eb07aaaef97cece76b5833758bdd9af9d7062272a5da9f4fc5feb3e7fee9f79b5e81be8ff69f3d17bb2d0b3671b1ffecb9da7f45b4b955eea5fca8db2a76fa2423481bf4b4f8cb820c177f59d0bf066d0d83ac1fcbcba6d8a9d56aadadbdfed3276bf7fa0bc44a65084d9ffca64f4f8bbf4c285bd57eed56686b28f41183aadf5048fa29b39ffa145873a55ffbb13edf8cf59bfe7c2ad5e7690de86bb77e6bdaeff381b666ecf7d99ab154442cd56ffacd58eabf52b77cfb47dd0692b97e42dcaccf46c10a08a19d6efd9eb87f7e829d6b9e4e7f39d097036d6ecf2f0756b9d91fa8e562fff55379dd63ff64ab5bf3f43f2d984eaf4fe6ebb5ffea93b95a9d9aa93fd0facd57b3fd03addb3febe75cb3fdabdfbe6efd0cb94fb5bd3d7bee21d7fe89d65e7370e49eb5a7df74c4ac94c4c24cdba1766824d4e312e39054312b6ac35182f5d3726ddbff69a85f5028976366c072a8a957f973c568eb3f8d42a3ad723f97f32a3e25f3d3e9947bfa05854ea5de965aad4f7ee18ec9ad4e4303a552e9542a9d4ea7d369c7b431a53fb055efa594e6bfdf51e880f3949b8063618f42b95c8a8d82a1edbf7731da0e461b94b6eddeb9fc8bf9f93f3ecc686bae9f35edbf8dd97379f9e3070f1e95953d933d933d337a66f4bce879d123d923d913d913d903d903d9f3d8f3d8e3d8e378f9834765cf64cf8c9e173d923d913d903d8e3d8f3d8c3d8c3d8b3d8b3d8a3d8a3de99eb4a8281d3a70e0848682829a31f3f9e9e9d9c3d8b3d8a3d89316a5032714d48ce767672727a7152b9b9b9a9a9999499260625e5efef8c18347656527a7954dcdcc2498973f2a796427b393d919d919d917d91759c9ac6436321b9985cc42661fb38f59c7ac639631cb985dcc2e6615b38ad974369d9dcccec8bec84a6623b390d9c7ac639631bb984d67154545e9d0810327341414d48c99cf4f4fcfce4e4e4e2b56363745e9c0090535f3e9d9c9b96945b3f6d1cccc6626b926c1ac625e522f7f4c7ff050e251895439693439836806f685d4c64a7a292fe47db6584d2f85cdf452d8245e0a8be9a52ea75bec0fa52d9607d2165b69b4c54e126db13384b02fbcd4e50f1e95f6a43dc37e614bda9136a4ed683fda8cf6a2ad68a745e9c0090535e3f9d9c9696553333309e6e58f4a1ef5643da37e514bd6913564fd583bd68cf5629dae159ffe76ab150a127af2a25cffe9c0090535f3e9d9c9a9b562fffa3b6d9bbef74c4b494a5f09a96828c847fbbd936ff24c7ec927296dfdfc11d2d6cf17f9211fe4b55b2fe979541bad9f35ed674d47b5d1faf56072fd078a02a3e5dfaf07cba3f8c0e4dadb6e46ebb95c8cd6cfb692d156abbf897af54132221202ca366dfd7a2eb9feffe05139d933a3e7458f644f640f64b6c7b1e771bbdd4659b158ebcf4f0f63cf628f624f5a940e9c502ca8d50cd7fff2755b7b7e52a99f695acd1a110901fd5ca95beea598b67ed94eaeff9c5636353393605efee0fa6c6596c7766bc562ad3d3dd9c9ec8cec8bac6436320b997dcc3a62b38c5cffcbd945aeffe51e3f6b3aabc8ada7dbe95f5252fa495ba4a3ada1d4af8bb6bffe81d87fedf9d99fef536b7ffd036d292221a0003f503d00b0db5f0f05caa8d6d6a5ad1f5694eb3f1d38a1a0663e3d3b39b9fe97abd84daeff52aca4f72a07d63f50c6f6dbdfdb4a00947e1212d23f3232fa4544447f480880d00f1200f4b500a47f0a65fdd500d87f8dfa3d3f2b606b18d5f335fcb20050d6afe19701906eb7879454db0eec3fdfe7db4a584daeff656c26d7ff323609d7ff321693eb7f59687bc9f5bf0cb4f5c3fee0fa5ffed9627970fd2ff7602bb9fe97b15bec24d7ffb2758b9dc1f5bf4cdd6225b12fb85efafdec4caebdf5ab3d054c6e50fafb0e220d362a34321212f2f1d1d191d133fa45bfc8d3a2a274e8f0cf4f9efdd9275aebf7e33d58ef7fa8fee787eaebeff37d7e7e7cfaf7e39e405a9b3a9d7adf6353a954eee37bb6d48e99edbcfbab25ff574fada9d44ffdd34f9d7a62b1d4d66ff5dcb4e7dc6ff6dfb7f676522bfd35d7cf4b662ded1fdbfeb1b7d4ff03e4d37fbedffa61d596923fd24d69cff7f93e3e759425a68fb4c7322dcd6eadd4749d964ed35813580ed5d3e373fd579fa82f5a9ecd7eefa33eb5d3cf3fffd44ffdd9fa6155ad3ed9355a3fb57fff57eb14b387c2c072a8c4a84fedb58ac5aad15abfb50320abfd935fa21ff784e474dc5ccce4a631452fe1f0009dfc7cd11969e5519391637aa9e9b4c65a6bec1411936b6372ad56ebe757eb568db67fe9112c87927eacede85969fd56edb7d6a05acf8d4a53ffeb15939bfdd83f3be90a979295690b657e3df3cb8b181ce2a848912348995f9f538604071f169adc5052e6d7393b2f2ca1622704174e3565774a7016b172a1898832bf6e26b4d3492f3a7a48aecde52862a6d3e90ea378caecad5fd84b72af7f5a57ad9fd7d5ac151b65435b85a1adfecead5abf751be69edceba75e9fd0ec2c26b76acde456b77eb69f9dc9b552c0e45afd12b9d6ad964becccbaad566ddbb66d1b11b30e734fee74fb17f692dcdade529f6003fbf75f2a956226c9d4dce4fa6f85eb0d25b9bd4ba552fba93ff93476faa7589769ae5f987b02f1e4dabf83829a31f3f9a9a9f9d531fd54ff56ac707927b773473f6ee62bcf4ff55f6f033bd7db1db2fcf3acffd5bad34bf9da8a9ff2b5a69ff275123fe5eb4b3fe56b1e7ecad7955ecaffba926a5995fe6cb69af5ab2bb3dcdbd5eaf7abd37e5adb351586b71d3d2beb34f553af5249bb2a59d54c0274a9e5519dacbef8523ff54ca7fd7c55329db6ac4a72bdf7f35447ef354d7b29fffd74d24bf9e90b3fe5a7917eca4f1ffd949f32fa293ff59c4e3db37e53cf6976eac9f5d3e9346d39a54a37fdf7bed35be19a3e891817772a95f47ed33415332b6939f5e4522af5d34ff9ef3fd58a9fa28a52a9985ecadb65b4d5cd27d5b4b7214dd7759e97aa6bc54743c6b39f0a77d1af87d331a9db74ed29fa63fd3edadf93ed544f0db54e4331b3d7315adb11cbebcaea977aefffd291f73ad27a2f6dd673bfe9bda69e5ed4c3f1a0fed3777a2bf5d46fea79dd52a7f6986a1a476eedf3fd7aa88df9f3b3ff5fbf1f9667f4529754451ea293705e80464e3ffd545d7b7aa9baee5b2fb57db253cfebb45ba969e9a6ed18ea895939edd3284fad744b759c4a6239549f5a5a7bf7eba13e92fb47ee1939efa2bcc3e9a1bcee36b8f7eb26a6b623f54f3ba6e7d43aadafd2eb9f6eabd6cb4f1e9d93565e68463e5eaf8e5e8a155a9d56ad575eb5a1ad7e5efd7e58d6ea8f0aa3a56efd6a4fe9d6af87d1d6d314d71e65c346ffdd7b4c9f2ff4b3fe0751a77feac83db927f7e49edc937b7e3f2f0934bd7ea954285b0759fbb7313b3fad746a5ae149fcfacf8f0db4b56b9fee88bd5aa552ffed50aa9a502b55eab57c68e8fbd99840bfbaf5eba13e98965529d73ad69e75e5f44fb9d0f7f39b519e5a4fed0ffada9f3ff4a36c641da75ba1ad1fd6d04fdafaf9c84fa4ad9f7fec3cdafa79462b465b3fafa8e9a7fc2fda26f153fe136d31fd7aa8e5d0d6af7fedf7b33185fa0f02dafaf550edd6aff6e4f6ffd3b3cd62eb34b7576da43ec5940239f548736bff3bd7fe51787ccfad7bc7818dbaf2e449c509f30a932415a5f495234f2a4598578624a9045df9f1a4d28379052b49c59abe42857befed43cffafba7fa73ec0f3c7454dccac06e0d2903ed749aebb1d4ef9f0c3368cbb0878a177eb27f515b863d44ec71544ca7cbb05bcabe2dfff9aab4cc46349d2ea3ecbfeabba857ffabdb73e7567f20d66cfd81d7ad0cb3752b23eb3fa514db0f1d15d3692ef5c94ea76d2f656fb9f7dcfe54f574b0f5afedadff3575dbbbd46a5b6debd6affeb64df55c2fb50f3db989d4ee776039945f1126d7aefe8e597d2a0756ff35a82a950e4956ff3568286a8b5fd0542a95466dd1fe4dbf794afd7ddabb544abdf2e349a507f30a56928a357d65ea49c5c6bce26748ed434f6e11b611cba1fca430b97624e4a323e3a2a24f8bd281130a6ae6d3b393d3caa6662697ff245ceaef9855ea5339102a5da67eecc7f69e245373d30a67a7e7a719d0503874ba685a7191d1f111d247f65e57ed6bd4b6a6a2f5838a92e4dabf7fa834d7febdf7de7befd54eadbfb99e4e7bef94c2bc6ad0a2e59c7262a94aa9d3e9745aa54aa7bffaa454953e4da75f5afd7ceb57ddae51bfb4fa39afb256a93e0bc595fea5a3216d763a6db4a73c8672eb2f9d9cf1423212f2d17b7147ef15e9233da487f48ffed13b7a47cfe819fda25f0c94729f1615a543070e9cd050505033663e3f3d3d3b3b3939ad58d9dcf4525c33333349121e28957ec1ceb5ff04a514b8d5bfc8adbf1401f7ca952b3657fba9403fc8f1fa837e908f847c74645cf48a3e2d4a074e28a8994fcf4e4e2b9b9a999849807e9415c71e62935b7f20fb9bfdc250692eb6f22f30fb057b7ed9facf55eb5649fbb564f54f55b00ea4726d272eb6e65e9fa2bc68ffa4df2c58733f777414e34a1d4b40a5b9d3ad548d2307f5fc011c6d2e94a79d99e64a7f54172d54baee8e9ddabee8bd1c1925b97447c7c750ed17be9dd4dabfe676ebb74a6d5e5b4aa5556f694fa99bd4adf7d2fed3a2544cae3db5f69f1f38b5fe6cb140d9a13f54ff3ae8d7bffe5196da9e1f6539f514fa4176f55faf36ec22ec8f756afdb16e8b7ed1c7f6586afdbc24d190d017f292f5136d90d4faebad1ff7c4fe547f15f3e7c7cfc6d44e3db9b6166b030ba4d5fe443dd1627d1ced1e4b7b3a9d62bb2396d5d3de7eaaa3e5948a29d4832eb1515624b9f5b77620ab768bb57a49eb0fc4027d6b1548fbb55ae9efd26cd4132da68f8d89edf9d46ffdf1d628cba01f041414b4f59b5602616ab552494b4cebf7a386026dfdb8675d0301015143813e90f66b3ba67fa2ed58eb4fdd43ad7eb567ede9e3537b5e25afbf675bff2c16ebbdf7de7befbdf7de7befbdf7de7b6fad3d2531ab551b935bfbd59ef6a76ea592dcfa4fa5d2aaa40f1d6cfffd29ca8eb60748ba8a0e58f8d261144e230d9923690bd2d57480e4019230753db11f3ec5a9a9dbd5693ef08befa19a306aef891d1e054733cd22478857b0a4495dd156c1131d7833453240e9bb6482f1189058743f1f0bf5e60fa6fe24e2b2575034f32bd1a87f04638393a06aeb280462b8d55d991ec4c24c878300a42ec731c0a937acd48b4bcc74b71469fd8822094ea551cb336180c6818860fbff01c8ada485792992040fc1a88cd471a80d3f326345bd3d91ee5497057c1c378d9e2d0b469d9635d9213f953de48a21ff70448987ee5de1de443375d70f089f638b5243c0d0c3f5b614f83d3815b81127593dc201289c536d0297dc02a23f78425377d900739fb4cede3369f4374b82d458c4b4e84afe06eb7195cada888c9e670285e8e96a5076070c0078a50fe89acd0ccdfa2a81919ea745849a6be9c44662a0c9df748b7c080a54dc110b01ce03ebc7edd8673eccdd27ef4044aa9b3981c6917cbb4e642243cfd1805a0fd0c1a50f6615a94fd8723a268931fef5edec463e60eb103e06fb0e2cca9ad1cace73269ed5585a8cfec84bb113e550f25e4baebc23259f372bd4ec18fc17bfbd3d3b13ce4e0eeaf8c45faae8c293847af16b4eae3a59c363ad614a05bea40991f7f163b027b08570ae969a9e1485e96d187de95d9a94e145442639e08fd0fae90e53cf3339c6e9d0e97146299bbfc035fd189857baa18a4a7dc3f04fea432aca075901da916d403b12c436deeb8dcf7ba915760c6c65bd2f45927e4777a763b990a667a140d8ad108ce08f1dcab89702a375091d793a78818cee84bc82d3dd51515b3949f1175871bc15b1b0f771fa74503811fa0da8490e19e583fba07ad2a5ca5c5fc79be05baae0fc862302d2269a5e3587acd63600f0a83b9c9748b76026f6b90346a63dd431af82b2c0875410c2cb5519bc0a25859e6432b12e7256a63f00a0809fc1a4e49e67913c0a9d84cb11ef79214a1a3cc916abba68488b2e28a38bebf0a0c8ab7001f34b399af4e91e145e4789eb61242b6d0467627ecd92b09e3437f1dc09a3d3344c673fe81465bfe16ef907521050c3521938de1228bcbb258b83b992a5a6b2a049df2c92c4234d0a724cbeba0e5239a1eb2063c6133994d1bf004aeb335a235f5225f361828a7c0895895e84324f07d521c01371d1ed01ea283be213562770a1b25b595bd1e338a0f156b0c27a94a924bb478c0e9c6e32487dd424cd03c5b1f3d5f214ffba78aaa7d4edf1b91296bc8c928cee6f2f9e420241de06c99b57037cc2bf144f7d78004fef7039daa3a087f89d0a203c8b9c24a72164afde843cec48b6e5ee8498d8b190527433ef87ee442ed37fb9a8ea5142994cc148c9e3b984e8d8d9092ab80b4d692dc328c8d3114caac3c044f62dea08ce2480874e04c712ef83773c05e55b8dae2d700c647db50125623823d5d073b943f3025e78742d516b3c8e588abadca38dcb0991d42740d8e260d6e2b80a0695dc07281ff74a6df007b026a55f17c0fc190c177baeb3f7200e65f6e6d68efed37d6cef94a9aea44e0a9f8682ca73eca8d0eb351eb8549db8cb21e4c13d17d97897abaa7e6332abebf88cd1b72abed474411f7a861968bea7840f4e35ca815b46dee820c8986a31e728ee048fd08f408cea30ba18e87d653ea752a4c2c7c053a6b3e839fbcec8ada10a084efbca12ba1292a89d57c6835f00b4c176f185a43bc142a2060ca3d8916a2c711f46858ba9ba6acc284a78d7994fcfacaac00fa5407627ef542fd2044dcf8363476ff126d0a398e2c7ddcc89aa11db287912560fffc4860c1e4088973785307b1c5701bc68881a9e49ea4657c344cbb77915f152138735d504813a6a061b3e834ed7cbe111a30f79f0a38e42229453057ed651c2d270bc17439ddc060e374c93f37fd7b8be2494cb811068f2279171ea244359788dab3abd4928886e25a60a6773c2c47d76e479077b5fba08af2dbc2ec185be46ca487dfbdcec1050c4a821f808f5ca20aa7469324d9da6d33b1d902df34c2c604ddbc86cfb1b1b675d90c6630791215bfb3ebe3e49020537e103472760e00d2fa226d7b30419799edd901eba75a3de74e2d63511e7700e29c2744c2313fc61d90a0f733beb6e842f0e0604608d20015d1d440d9df404922a9c8a94437f7707402da5b243fa60e8ad4f59f2d7b57845792d6892381446cf3fd934d583994bfc90088c7720430d77e296a43f1172d9272fc9b555d247bf4007804fa16401cf3195e46378c8f529968a8e4885f3a9b71d1d8e982dfc30d48e3ff009a6c701d26ba72f9cbfb5b8b187cabce7635c48c56c1ca94718f8f16136c33c03d61c1b4855427d236f721a7e2bd3457cc5e05e6f4cfc4cd8ca0751e0e466d628bb99450e7c820b399c2b608a1360b4c1f97e0c76218c026a003d493c8017510fbbf1c6097760f9ad0b360f4a6ff9aa2fa52b2d12f6353656bc4e06b39adce1f3beea677d5e43e907619cd54e640a3a042c0a76a00e0bb5511daefd458e088ec6c205eee5e4d9bf4e70f0172ac4bc8c6d01c721aed1e58896f00b6928700d6e743c0b3b025dd0ccc457e0d086871a21c30f9c7ff83982631740c2078f42abf2734572f0022c1a3dd903049f06374a913c80f09a7d92dcec597b0c615cd86f6c50701762e26a320a2eff93e3b5b703e37f2588fc82b0c14e3769a106c0e5c79f30b3781b62ea74ce069cfcc058a847816159339192e871c244bcab05c3c76339eacd340a3a100a079d4b59587fe346a9d77991d981d8bef0b91a29789b2b10ec6b1c357550621c5503909ddee5c28b1db606cd532490aa7558c876242310f83c614cbea5d2f28770b4fa14146e7db50094479ec7f4c8329bfcc74c58dd452e4f27ebeaf1305f64703b207cf0f2912e3c8123a30721c3457ff34577b22d22b88617346a37aa28ee39f478320b4e74253bddde0648a0f75223b6b38c9a3dddc5c9f798e6e95902e898b6b90ceb614439523c94197a8f9211bcc8865e1f20234497c2030dbfb2c5a0a763b0f103900b389207b53e06177630c1c4de8809d8e9687cf9110f41ea422fb50b6e98ea5e3b377a96396b4f2027ae97b3ca7c0929147ec152968d8706c0872dc0530b48e2c22f0872a776c3248d5f31c08734ca531b4fc98182ad65d1da150018f3747695fd0d50939f72c0ae67b275f13145121d4295931793c3e38f5c54d49b56bc740f3db478181bdc7a100a17b81d930dddca1d297596a1a44eb57059bb59c3c5cbf888380c3654fa5c6387ba0b6c03772432c23bd260e4610a0750792ccae875e3343d3c4683f7194277b634e39e7434e741d858e418ae88fee88dcca10c11a815cfd6ba79ca103ec70bb50fb8bbfc561a265c05826d0de57ca667c16ef96bdeb437a910e5572980bdae0705bec26a00f7ac13f3b3b1af6e7e0045ba5d43ae1559b8b1d5dcd07605764ea6d515693c948507e952f7ace7b1f1e55e0403f40655a54ed605a58ff1ee3a128a122fb1e8a0268bb0d1a500f9701540463aa161592f32e34a5f33c793738324e01f1020e9a253893cb07be841aa44f6221510f95967cdfb3049f4143eecf4190dcaa8772fd6b81c0a1dec2b391abab7a883ef0b83a7bb98bafa394028fc1dd1ccae0904491fe272f56bc83b78da925a3d618ad83fedecbc09303fcee5f2e1a108e175212b297c121600ae45c3488fd4eae29c23f0fc28968f03b84452ff1823e1061268f053ba5b3a87b60dbcd06d4aaf73a55c4b66f978364b34fd88ca1847bbdda674007678395ba3faf2cdcb43f43453b50c387a1eb14ddff685c185b485f9620274ef1b20a52611a447cfd006ce6b9978761a2b12f80719dab81c286ffde310a877b903e6597baea721f8e87059d0b8961460fae1923237c329daaf1ac4f0461bd6f80590033a0710e07af44c11afe3a98317a2c4d0f7ee183d9d0dd74e36e39cc64044d2bb454df5f6c16707ed21803f480281db5520c111b550e861457478297506fb9e50b9164373e9e1b3b5ba9a6001df7282c93f78d275ce27081e04e6569ff22148dde8c1cbcd04ad3858851abf32a845b5d310fc79c8b79ea325c1431803b38b88097ac748bba928870dfdaa51a8e62464e25bb827b884134e7dc91ba077a729ffd0c18e2783e6a713292cc289d899f128759f9c06d1570f2b80e2dd74c0ec735f0abd8897058e21c99d8f8235ec67043078d13c25f804af88bec18db893c581b4614c60e147c838627718f3527f05dde950b84f7e495b9d1a684a6277a491c1b65655710a09daf4b0bd6d77340cc13d6584e875d72f9f30e4e55d3a516ab91e78b8f44e59ff40f4f8921e123c15f1805ea4f1839fc084d70b5d607534781db89e8a197c4b8108b7f2018fff1d19f7341da66c49a329bec41121b564659e3e2033aee6208602978c62d879f4d8f30cb60c7672520f2ed8c50b078134d423cf60ba1951531fdbe27235215f3d840838358c2409bdebcca93e62528133b6b9f42a3e3c7538289c1d2f7406cfabc5ba182b7e7cc10113b59838603a9e04387af5ce8d57dc51662f7970d0b93acfeaa21b66ddc9034b690f0e6838e7669cf445689f1fd33b60138555f028359a7ae45e578fd4d259d70002c89964c1c3931e087669350bd773b2d09d3e8ff01f483fdc8b0a98ae34a2ee478d43ba25e0b453923dbd37544e0f9036d7e6374bfe75e1c8c7a162c42ff06eb69a1fbd73317066db8090c0a3b1b2a1c339db752d0ef6a6930484d4734b6352a11940ba0d365af880114eb8773be60b7404e96189657c1882882e8674a34fd501e50ea014f1584e14e93fe8b03a611e489ee68e402f0287d6d504e8d2cd8842f674a394da928b13373326a89b208e798b4421b6e2519e27eb81c55e2103ab3e7bb223d50066dc7d6c22d658156bfa0dd06d3fe253c98d88f03c9684889e8646af16a1b8c9ad0cf8e00ab6473d01860abc73a0c3bd0458fa3ace273f2b60878fd9a8701730a07c09a8ba3e75a58e37c098a02702fa792d58747aa09d28fe9349f03b0e1852b58698e852c08cd5262e13f42a0294485d8420731358746cb8f259773c226a2be172c3d3886ad54c8e525c468c0abcaa04b8a798c15897f93a072bd0a1db9b39fa07285875d685ced1ec68c0871abbbdcb88c4faad53e0252a6fbf230a55ef90a6ecdf305ee8e323673e13c56727c005d31fdf926a18648248a536373d1005b1dd559cf184039c7a939707bf05295a9b51a1d3c735e0b819f407e743e155df09667984ad185f13a242e76220e6331cb9795e8aee6f2372df9024900f2599eb730406f8b70a90bd87320347506683ebc95852830803d8472009e48013c6f04cb925db6ae5f62e0cd1361994720f7100d4a6d6c979c23063a69f6b41fc47618ada11f2434f241ae1875e88e96c79dcf40e5c13b88e36821d0ce3477790250c07e3e974088c86bcce13071e8621ccc77c837e06d33b8cb72d5e61cc0bcf6153a8b3c003a17b3950e0438d98f51704632d8d42a2f62134a15360a226358f11539fc5d0d83f5b1a7d19e5a5d46c9392cb21b0644b992e7b12281d5d938d58c74292c6dbb4c63dab49ecedd4ece06834e1f847193d7a191d38b588062cba950b523a0fac1567a21dea11e6cab889c0a67e7796e25876df3a14c766e7fc0e79a348179d701ac59fa7c478c3355eea2c043fde049686fd67d4e0684b6450f5ead10ea9e6408a034986be236d5caf75cef10fa2567a5486317c8d82ac8eb60ffb6087d1453f697012471e3de8900a3d0152099ff5a0c78b90d0ac796085f63743216e21f0e66797047a66d29abee2eda8eecc83d8c750c050cbfdecf915177048071045f6bf02573602226b1c4215303b087acd3b9575e9a285593ce86fb2a64ac3a20ff0b6e05e4a4cf00e7b5bf8e418055dd0419efa0a891f3c48c657cda04e041e264c0fafc191478f1c8bea44176c74a10e347c109439fd039cafa71471a323986ceb40e298f91b6284f6584c4dcd48a7d5611c60e20d34d9fa1d237cfa548e31b579c1941ecaa54d6dc0071abf108141ad570394af4953c27f1a0f38ded8994f6ba9d13b2090fa4b02003a132a6238e11687de0b40e0350a465ec2cbebd9089ee8713d20b9e756803e074119befdfc765b6d8977bea1eba15c53ba14cac56e600cab9601e18367ab9cd656b214f90ed334f505aacd0e220fb4a7f11274244d5cd45d7c91aba571eb3b30e0f81815db9e858be6477fd3b7719bf2278750ea1f18feba98133efd8e99081db1280e875b3473d032187c002d56bc0c1521bc71cba6ffb5c1e0733441f1714663d87142cede0ca58c77c245f30df242ed34821a3c803469fc1a374e37ac70ed7b21f6badc98c9fa0e19cdab45636a339458b855006fbf14d2d799d2e4e98800a6704649339e8ef6abc3d092d5d1a6885c6f8bf539a218f6073d4b1e1314b4234a18530bb0977881a01fde4bc8eb560668d6dd501bde0092c61a0a19983ef65af6db874d3daee16587301cc0c1c8a9da24cc31b8053be47e84ece68e3f365f6336c57da81ce054a23178b7c372233f82fcb013938751a9c1b3527fde8d12c3eec184843aad4a9adeafdd7e643046f7c2195673087ff21dd7027525e615ef6d544a0f7459e9301cbb520f20fe7c82206af5d4cf9c4ffafbf3862d781d40cc043bc40d22dd019b51cde104953ec4c40d5f53000cb7566ebd581a1b3f8a8ae430d00cfa190d14ddced0af6f5172e2c7c6465c4a198d8e9592a20bd9f0a30ed1d5d15d848dd58c630eddcbe18db78a33c43f61c267a7d1d0d265704bd84dc0633a931f083c5611cfab1171278d3b13c5f75870b3c54008e22c5274e8525857dcce9c25d7914304bf8af4ec5e5c3cf16b1132ee06041a2e64adc70f7161860f80ca51f3f320bf4afcc0a71031c359504a7d9839331e2605ac018ca6e05516dca89d02703b1a3eb7cee5c884cfa1cb6303758852cb65c1f22f86b0e99a5f44ea96ee4a4743444b876408f150183e3a9d16387acf99074e4d8372ef19d8afd48edc4d851b75071371bc0b132cdee0700c777b31a3de4b01c831142de139a24071393ddf9b2841f4a6112eea00136a5e668da777a080cb2b0da923c590b4d9d53078314533a5b3534ef5f062b600742b38bcf4155db2476a02c51e3cb0a663fe2b750fd1ccbe09e3014722c4c0b3b44fdecd5f8f0e2eb1c32fb04ae839ac957e124eae6fd11d793c0c78fdee4e1a6ef5e345f726d8ea3a521d5d80df1b1ea682c5af7898f04d48cc3e660bca0f3e69f2e76fa1cd6188921ea45dd1a12c90f38b443fd218918bdc8412b3548a091dbd49e0689d8492ae4b12a1f5464e34bd2c8ea3879c42e1362483f4241b46bd33684a2d0944b0874111a106e189d7091130a9036d4cb9579187fae311e25d9070e80f8cacbcdb288077cee8ab2729fb385a08640d5546545f8609ea32aa93527491cbee84c2a4ed244b0a1785c19526000ac0e7b204d45efca874370a7aeab339449e74204b2d94c5042f7cb2d02d20d1e44952232fb4e0029f02a67b571e3c7d1143d6abf801e44b36cef04f20641ea5aeb3c691e5ae1366d5f138b35d0fd211a61f76a0e325f8906bd1a1461ed8f46b310b7d9d801b3b2fc467d5671c884c897c2e74308504bd6ff4013f22c5a6865124a5c31851e569c0e8ae49c5569b3097f12167151cade94bef248ce2183c7cf60e4f76d456652dbfc021815fb339a02360ebac972400e4d5f307ef35055dcf45d1f30c6e695d9563c8f6f1f7d9c53edb6985bd0b9d098bb28f20bc500be071b55d24f2e81f88ac5e52ddf2c12e58afd261910f6d07ebd141bffea375c413406cc1c5cc5e7a1b1f3e9ec1ce032fc14502dff2c54d8762a0e665175a1d0e1621dccc20996e8d72ec0c7420f13350825e0627e862dece74396626fd070a5aeab022cb9a029acc6ec0d06d7ac48eb87b91a2d4979c20d0999482eadb6e4da7b3b2ab2719b97dd043964b81c3a04b7153a793017ee07937a67a66e65c5fb2a28ecf0365a17b2a822e40e8b13f5605f052664c6e3959a2f7a8e039981040fc7bd150f368f2f56d5c14fd255aaea3d0faea8d416a7ec491052f9efab037b871d0530819d37d5288fb195ad16b6fb4f52ad95d571d68d2b19491ebc930437820903c7597273b788a0e64ea4dcba2ee93a58b3f7990f62c6b58f023bbee3a1884a8ddaee2fe3497e993302bf0375d109e510ab66b5874214d0cf2c2c7dc3ebc173c79dd8d152953240056df97c4d3f6f0c244dfc193d452d048f6006b50d45b244bf4ec39428d4254adcb18b3c51dbf9ce81f44c5fec38030974abbabad5c1072ab8aefa7087afef8a645b743a2e394767d5ec81b1c9c8d8b90aec6afa763ba69fac42222b80704781e944becd50688a554eb61a706a1fa3c4150fc154a32359741351e6b51c6942702f23948739e80dc973e55cdc01735b7f4a40c5b9e9d40a55b1f8df8230a297f9295d8f3369ce17a947bdca7b8e36ce09c79580d4bee21cd087ee70194bee0c719274711e8583043f40c666add8aa5c634401a678f13268a5a06d6a193b9a675093e3b9e10282d4d32464e8df9b4f5e9015eba1469267faaacf6bc2b126ac4a126dd8a94a2ba439e9f8e0616c5a37962e961579f1c0d875217d0c1dd89b24907e1464b17639bbb84ca33af6761da7dd0f07c0b11b02fe2a5eb14e9afa75286470d4699a5a72970458af419c6678863e94d9415f6091ec270ce1d77371186869fe15dea681041fb12c93a7c088d9cff5da8f820e51bafd973c8c1a6e2701112b0389732ef3f76b4e06821e84e654c1617151ad20d0868c291a8c2ba8e34066ea2cb147e9ed3d69f44d5f05a4f39fad198860f7121d3bf45e9924e7185fc9c959a740aa6957e25528d9dd4a6e74b7041d96e2e8a749f1a753c891d427895ba0b7d07060f7d888c2a1e09f6f9010c6b3c821225b81cd1bc3ec002064e3755a73e90c3921331e4f3841feef85752433dc7e53807bb02dd8b8d1b9e57798627c012c4c330d2a20e899d7c170a2da4713250f922a067be8bbbf54d6173bae45c19c701d46d18427eef933ce1db1040c121b758f1728b25dc0d17b6ae07c7d8b5606ed46c6523fa0b2948fa26e7065ee3b38ea3e9867436b8285ec783b62fc03284b3697beb6cac7aeab71a9a3c819d292e4ae5ee66ecc03a90193e7513e4563aa3bff5ce97655bfdb45dc399560fa4fbece10141f69a1258fd124d8ddf10ba845b62cd3a91316bba991d2347c127d99bee3a2ee24a213fabd0ad27d4e8eb427088f4a9c60a9c0dce0f7e24898b3772b0d670c818722b0ed21a8bb905f7e1a26b321007bcd38173ed626c41677be1297dc196e5c7ca8ed407d87af8afcebc8e24809c1aaacda594d140b9abf5ecf0617a8cf6288190b5a498905e68069277cc29ee77f5a989c4437895b2626d47e8e2ea463604b745993a981becd36c2afa9d2c32f8906c1eef0227f2c6a3143d43132ade47b2d25189af2b011ced9162b26ab2c241fe660a16afd371dcca10931fd065428f31c6ea75b4b1d35e2d5d65f9e195ea8759af14cadd70d72bc77f4647479df0dce2a2c22cbe1f432b6352d75c03b5d551c3a53660d3515bd3d21a2663f6551a43a472960a4308be1a1079481c6b1a5232c2e2a508e2da36a63743d098ca7491e0228ea82cc5a9a2c6cdca799a6babf0f0ee38bc875708fe62fdb103bf7b0edfdf7bba54350788166babb4ff2b468ff77ed5cf8be0b5f5a9b420e481ff0d0effb3190df8c3ce62301e21f8db2de395cf663cc071798f735e806ba934f7c6bf3c368305c1dff2fd1583bb8077f93e77c3686fb8ebd552cde09c8fcbf7845fa8f7ef2f5810fcfde3f32f249c2a906ac03947e45a029ce2f27d3e77c99cb721c0563e13583283ff946b07a8d10e18a31d50443b8007cffb7be33ff5a5febfbf60b318fccde07f067f0385e56eb9dbe7fd5df03f17ea0d1031e0c28044ed80c0bcbccf27067bc161f3d41f13fb52636211acacac20680738f8617577ea47796c0e87bb80e6abef5deef699afcee5b1f94a3bf52ddfdff2f887bbe7f1f9777f61f8ecbdcbe5b1d72b46ef7df1d80c2e77bff7172c382e93abcab7190d646a89f370177c2e77c9bffbfbcee0c13e33580cb609706ec5b55256382fbcffbef90cfe7779bc77ebfdeeafbf70ce13b956ea8c9bcb56e6f2fd0d83d17a695c2b000ee7b778fccde83158f02e93ffdd7787c98063ef3fa3c77d67f0e02f2c9fc5f7277701ffe02dfedd2f06f3dd7a7f7cfedffb4c06bccfe76e040814ae54535729a9c37f78a5ba52f83fec537d0affffff0770cea7f8a322e73f4c809e8005020cf01f76fd61e7bd3bfcff35efdcc7072eff7fdebbc379e67bec696ccce6a29cf3cfb5519d9c7f33b8ef6c06ffbef32d1ebbe57df1187c26bf4571883af3aff8fe67b4deffe7ee376ba3e6bee25b1bb58dd2ee8dcbe3bd72f76cfe379fb85bd654c0b967e3c5f8b0f7f25b5ebaf4ce494ab29e2b8ea92c2fb1ff09fc1b366ad0c0fa073e11e71eb8763b036d0697f9d8ec9f34248a88837c19d47256c75181c425040f314a34c4ea2d56b68c524432fee072d5981ff822af249c8d3652d5308a3c7d92d5935daaa0ea0ee9b3051226c8908261a9264f4a7d2d7a06e04c0dd57465b428eeb088cca6c8d60650685f8c3903226baadbf5df7462a38dd140914ab49e76b0f1814d0fb2c824383e8d10413636192fceb4a07ef30e0a432d2f649c897dfa1e33b44c91bb13b38344a7471146d2b2b384135698155f01b2e8c11b0a4f725f34fd9ee68f82a2ca1d218c249e6d51f48d919b2d37cca5cff2d159446eee0c91283c7c919c2527ca2e2057dc4d765118288e707129c018e04507e3256dc51013927862223b93110378dcd92921b9e3b14f6676c929c92411618cb187c8002143080828941c51ec833ce63e591476391a34ec776eac8414781cfe6138f7b216802e4c9c6033a820dc056ce96bbe49640f68bebd27441b982a865219079cbb491281a94e5920d38939ce798149f543928d9b0b1b1f52e9e50663cca49c71c65ba8f1b6c8b292e48e0031beb8e24d4094d1892d1ae78057a880bdb07126dd47c5e51a11b5a250407347e61c0cb344140a4da8443b9a2a20284048e7d1aac8794d499846c9a41ecf8e9a3163058696dba35122c94447774cf161e4200cd24d0567d404e3a5a6750cb7a8093a8a7839a6fa0d019494e673d48b4783a59b0bdc894fe7e85a0d2828136073882a5646ad3eefb44906103030d51c1d328120cc924d0a899349f2d481521980eececaea7199e70b876a289d223f447f3cf22401724616d138038594c93c34e8d0c093b2783e7c7c91a731c697212b7e8cf9d11899e7fca5ce2014790a71c8639e0724dc303082081245c798074193cbd13c2e2358728a790268d0c393860d157430cc73b5b4a49c516334fde38c87cd9b3074447841d2262a8ce78a0b1b7b0e7af0b6c8f9e209c265320c75a80743f10e8fa488bf155184046842620e0f06255dce0424558112840dcf9f62a6952f549620307086074e0718df9d015d3a3e88e1e962c37585341a3039860b8f92640629504a142901870a0fcf72c6f0248085302650a2641c49a01983a941be2d893e39a27df46abb53f735249ac382585061841e511a644549dcd05c0341462807386a8b524013b91d04b0a6c31351d16e8ac0c946ca184d2ce188a655617027954577e202a82895874d274ac74451b14f5120227520d870ffb0643befc8191dcc214ae4b2f3cdca9d4e1be43c464c4e2c71c239e77934ef18219324a51e4b42fbd2f3532bd544d2b687b4cd361df03b354e056d8cb4549aa5466da960b3c8b28db22f6c4c39a46d366bd175e9e842da6a673fa89bb0e769b69a56059b5e6b03445dd2d51fe9a1bb0ad6af5a851b2b98b4545b21094b3a7bde12495b8f7c3cd580f44afab848842d3a61c1664cff3cfd3cd5554057d523a0510b52025530e981faa716abc249675d4dafd3c9748d9d26d954d8acbadb599bea9a262540b59b264daf53bfec5076c87a642da2dad5782c4c93ea4a0bd2cc74003f1bf0e30560b2c3b23f5320bbd755b5990d97359a7a6a03aa12d54d4ae4d3a7d85a6a67ebbaf635b5aed6d6eb925d53e9a8413f705720ea94da6baacd655fd9bd8a542f55a83a496da47d262b004d6da5ea9905fb8b852ddee7a379ca68e19cb2d92413cd2707c211ad0cc1d8d758cc66cd9500ed4f950ae1c19bdb68142b54a444716ac4822c41c64f7cc9228549111f38645c594591409f1bcde5386d423baf585162998828e1ee818337b704694e4d46459742da70dc403cc4635a1a8b9d7cbe7809044c8fe69923e70e8251115016264b8c14f1d12347e3870d7812ec1abcb9ad4989b204ca1048352e5ba430515284488c171d305c68139ae54a1122973a14d3f7770d0da82774cce797264a8404e141038487fb8b27e10e42833534036153403d52a23449810284e2fd95a0602d0dcd001ff329258a93254282f0c84123c407c5080ad6c60c847d71654d0501d97c74cca717274d9628111224078d10203e78500c8317e10ec19595e81db6053f3e5d961c193b386880d5c2438742424aeb689dc7e391def176aa36ec1a9e862da36bf92c1bab5b61ab6a02f52f72f24b5d899a5423f523dba817598582826aadfd93f5d1f6246591b04b57202bb53aa5fae9542aad3b9f2ada4953add3252a98f45a3365e72a1cf03655556a7aad82d9d99f6e67a778f660dd5303d99c174ea4a73e9e6ab5a97a98c06ea4af75d9af4de553c1732949e9ec3e153b921e633b03bae0edabcd363527ed59a1db04b0a4076c56e8d2302027b20ade4eaaabc8013fe72d7c814993d83a40c8dc857df136918b03ea6d5a1b1a0c87aeeabc78a22282152105929b4358c010900cd0e9c98321ceda11d39a9d94ad737ce12007085140198504281468da0416de08f4d0e2640da70c164958c06487ecf4c2c879e13856e3c3940d5d46136e4863212878b4f16823d2c29006089b222d9c9ed4b0c0a2fb94f72051c0de8c3f1c1c84be2800f1a29347275823a1e494595b8fa32c4c5e3e426184d276d4656e3d3e4139653f2f8080dc027994473581ac700a50a8cf874ad8e8e28a1f3125cdbe05403e8fca82323429e2b7a40a765bc4828419119ae24a48195ea1116a809266ac2727ee1cf44645615b8a0e7f739e3b02a4d0f266835165062316f69ab401475fd848e1c87f4c9132526c489bcac26385119a252f18330455307304fd644bd4a618b19bcba82c568cb67a6f840e6c5662585280e30fcb43e6129a3b38387d143b637823404013cd111614d4a5ad8c55c85a264f921d76c81a2545251e59e43d69a0d9c523c9c68dd24f7069acb0c98f3c5545261c5a096c1d2811028a116e1252d15962f2438020710629501569a901203388185222078e291d57ece6283d56d7e4990136894745121c270e956820310c23f0a600849b2c6c728ae871638da8430c3b3dde84134401c0e0f3e3851d97a4358e40be95091cb099dc8bdb83428ed35e49327b59435562c493226fd2647b5b44d7ae160b0d1f43281cc0119a07978899c456872e3b1760728b0f0450c2ef8a4a2d59e98a001e2518ab6a75cc4f0e888932c4b87512c862c8f80ae16b93884fe411241c040e7dae544e34dd4893a80961e646db43c14a6a09843c984666288628f80d0e69b5d4d131c74d1e32d350052d27d0889088b4844e966c8864a1ec5ac0712c0f9c1ecc9110e0e28fb2b18a7cfdecd8364290e72e9c4b00b0151aee4da3a4650c1e218620729b33e954824be2a2853f65ae4985d789169625041c52c1f36b41434a43681be6c3c8814878c30585163068b8e06094e6c40c294c5e8ab6b03de8f036940d3391a920e7c7d0453a7e09b4da6af9d11054a9ad02460a5d852d1d625c5e6142c3d2e88ea8bac56c401806568e616c81c72dd356d2026d953827c64ce0d2e043ad33200841a8188d62615a4a38cf4a5f923b418aa480728011a004983a41a1d5829c301a4b17ca50ba89f16839436ab040cc8e26724054c89a0ca412643869c4d228868b60a5284176f44eebc160c896e6d6da277a4d897313c101482f19aa7411b2a508215000f15910a0c1e9c098cbe6e02250100a2c888ce8e5e82be383a59264845fd154d206a52c211190fc291f98a0832441b1a34b403b4a9464028e853a62341e8380815b124274604b972cd0858f0e55ea9c31f102009aa40f8e751c3f64618833e97c790fd5a7d644120a3b0e9894b9c7501c4857c57e868a74cbe8aca903e68007eff3af0b8490d81410e163c00fbb0f5865206664bb64d1765d108d9bb0e38b8e972914d6ea55c650d9e71d3ea43ce91c221efd89821e3824391561645f7e50cf5c9efc8125c7174e3330644e318a618d033a5306c5050f28424de45258b8c144499505594d303330e0474266288a7950e8438d298f18968c31644d6842c458ca3a0a9014e0f089d8142f8e427128644c5181c308ab8178c5b426907424a00cc492e9834e514005694c2ec401d39425e4f5a5a1cda381c548cec2ef1bbb202f933d0c0f39a230baf4a80bbe1c1d199168e021e87109896221c886262c5e989828801e71136604cd110060027b8c236004019aeb64f902d10252f724e41b75d16054dda4d336562691cf468d29334c56ce2c3d917ae579e8e271493cf2d00ba00000501e315c5107775c16f32c850e69e0565784181944417c0efa1b7b41054af99466a9c9cc28490190d1b4a7074c00a7df1e5088336bc8620537bc9952664765cad244735ef8653774b1130da225f7e549e82ba13d28364ece55523043c40c96330dcc004d1196b53ce1b1a62d709041060658da1099b1343a1e6831e509e54a803264d828933635b7ce6e0a78d87505e3ee972f9cda23899252956b2a7d4846c19082409a32436f9c16b5ba0cb81bb3c10bb005c98049ba2ae387e0f10ca7294d59a592474913da08a12df82e9b1c8990b3dea060f89937840e3fe936ee48f821403329e98e89102904133c478aec78ed6515f9926fa0b038cd29c4a315f903c928112b334daed66085ec4c1e40c0e2cd84442c5d181c0e81c3e4a84e8336291cc8764e9a8f30ba5405d671faa27c3203cc8ef98a00913247186550c88226971328014a24b358797a7c52e17ae44de48a5266f9b0f63499aa93a7dbd664881744811311ea09030367c2c33a92423d42fe3cf0b961190d5222f5c4edd2369a32208d6c64cb48248b6039cff64fcaa4e4cc996df377b5c6c3dccf101bd2254128c0d46a51183c718ee63660e12026d2a8cc4ccdc9128a216509e049b6aac80b4c415692445d1c998c22c736c22b50bb082290c4b10b19bbc96e77e4038a0b2dd28a7a585a12e1851af5ca2dadb22f07cea5af77fbc007e8d291250479a8e0a1fc004464481c421d6f40d4612063d4cc0b636191156019cb974ac1c11840a34358ae4a2805a94a612c11f948d44802710b568821d01c5a051f5e8c747a2824f2a39680ce8a88465d980058ca72959c552292ec06142a094d9ec0c1e66326850fd81c4f3668232de8024fcac60d0cf4a4c49c001d41e38a4880044ece377f3082ec58aa204388d084a440afc61facb4c6293c312d806870da69331c410223522115725983b6e02a006c68467905922e3e9c38e3ce6049a199638a44a531018f2b5065a2f0bd604343d02581168009c629d22f2d18be04878d0468d886a81243a5698a5790c8e8402081f4f905e96b05e81432ea8a07c2ab4c4152829113060d65aa07ae18e7a0157f9216d12984769c43efa82e3f926894379047ac5938928ca342248f887a9293424033080a314d997b3e5464838c69cc3822a7c899322e4263645a4798c0c1e0c45ab8e5ab4d932647594704e6c23632c43a70c229592366a0e987c71b9c033110f64694ef1cf01305414d367384f83a7322a38d6c34a985938f91e15917394a88f030f8200e805110830a13843aa2b3200443187d961f4ca480cb10644704a5af499daa32ddc0c2efe3e68ad840203b223a58d82d00254b9f277366c98696f68d90110d802c72dbca6a49174068461540d28dd5558923b5b95676b6577417613ae0c738b9e8c66c43087125ad346af5f9417a95c5c6d58f92f220872f4089876e9c48c6c838c103e6c2c7a18726d197bb161fe0f4e41d5e2689e3027e13951a6c3dd1caa1fd9182409cbd299943540015a5258cdea861d633509867c6247881e8ee0b163941a70d73d2e087dca715a8a41d528fe3349ab935433531fabc58a9b438eadc29a90c71a65c33b4d83928b91ce23267c79c251f405ac0266a743583049282e248c211f389e52d091fb2d067258e76811645133e63699b2de9ec940a1892862448195324eeca44cce06ba560c8e421095ef87215e5a1706d4cdf10f5011e1d272b5058ec84626589947004c98a35478ed06789e91d96a60c468414788341e4849da32e974ce06063489507505d345a717f381111a8d3c6a751c7071e1b18cb75a84409011a30f4a28124c504d695394c3a01383852e300e14c2ecf2cf1108b065285caaae9c1a41ba23eb039bc3b3739a904730a04d199346aeb02e01262a2f24d1d2a3b8a463db2307d20e18e26cd843587b04000a6178c9f7d6598f8fb431d76d525100765e0f431e2d8d94de42a8ac2a503856124f52128308e50e197be54618a0dbe284b6e7294f0293b705067c4db22ad886b24c8e8461e3075f0cb0bcc0bda1f94334845294e10a9d7e8a43513222c4b8c78f196d03aa0a2528db4b31f5cd808032fbf806cfccf3208057f68de6cf8799280a84511d119a6c6ae14d331957f72448eb860955078bf6f6a5b6dc5520629ca15405080b84d4e4660c2507a03ab68095ff8fb4420ee185db6407070e9a62685c90b343349718a6847c0b9b14ad3e55203f1d0404faba5845f84b81211e498a4c2c8d1a95341f483e70c8e8c312e199fe6243372c2684972a224b2a6642b4ce9d208c60517b54e7b3eecf2652b630a8001856aa65c91c41088147475691828f98b73d497200d4308520fbbc6648c28af256e2458b0cb9332400b74048d8d3259c28835a00034d85981c250d1168c3a3050b63c01b4bb72a50a0b2d484a981f264f701920aa552e58a0c6e1cd49af524703cc2930ba6ce994d09434294628c58db120e7056a8d194d8250d99cf439c290849dfbe0a2c98838d1290d8a59809a62e47d98d2c126c48e0c215b67f6b2588404883ad8f2338e6338e30a0ffc9239356a7367ac15b1c00d972a57b20f0d825099d64c5060e547139b104c343773a899b121c8322b4ef246884ec8a5a71f736da833d27be32078c54960c0e4518ded366c30858901141212a52b4e83a61aca91a211416751a0a8e8f2c000a92b1fc933e1d65484a5537ef901491230f953a65384058ca50e168e30a0f1e5e52821f4d6830d071fa02c596f720bf222c579c24054e87aac15b1e17121d504868403116a515a1a005c943cc7b06e022c810308b8c88513062815a0709480c106910e927cd11bf8f878d4444cae72d0555d10c7390c91c6089785ad047627450dc24f053a3ae7c4c811c28a0654a728e3d0e1c30d1c4e9232adeea03d213a53145165557e00e192c584b02046079246c0f04167824fa81b1b4d389bf4a5e8d1a6d010e20edb5a5d091b12041c82d1931a4a726630881384c931125d3922d805d1812407c0951932b44ab0dd41c2c4a3720a4f5b00cbbda12f518523939d1bc735485c86d416e449736445062ea8ca71d794641cd203097962ec48c067a4aab3833f57f99c2ae51081cb43e2e62894a34402744d0b4539e1e546eca7894f1a2b6c26d0c4703c3a4296e4c613212171319ae061de705c4d6e36e36c39e4ac21008e828f4ac4175ca106474cccf820c3cf4188b6b8286f51348eaa769005e96070b6a687a78c0a6142e59a0a7cad91843124067c21a7e84198ec0b12c3e3ea83e2ed700be2170b5d0a1718318a64910d5106200283a612dec72c2a72305d68f2d683ca24178cbd31b1093d19220495234ca1626643b20c1e19344d35b31d239f38696956486c78fafa9205c103c73a4b547494e0dc7049008c210b949facaeafa01a878a327544289edec4f09c42346256a48822030b02283a1ab223e4969740114b018ef4ad0956387267791021c3d24307a884890a55688090120584ca3183215308119e443085df11785edaa8e16a21230c8d92e1172d598604f181e5465f85270cac2f80acb066a2b03cea2053d5193805c5a012157e0883c558e0cb8a1f5c187b59de1693b2b839718943ad818618713e981e00f86997cc91b454e3c18b0793376b600ebcb643742c17c5f4852a76eb842a65109bd948f20a9366c98c0ac604c2f0b6cf6a858456af8d4a1b1a77ca843b988da83085f23234014c821b4448264efca83cf2f8b1534b3be28b26038ebd77993c228cf3ef7deb9101c1788066c06ef4b8c7b9f9b1ec11ea8b902382132b493b8e902604e65a1155cec9633c3e31380c3e5f019a01c98e9e9c73ce37e1cf77399271f35d26038ebd62b46391b691ce3f8ff93ed547fb56795a8363f2effe5bafdba7a46df48ac7808063efad27ee7abf59dae6c365f93e83b338e76a1fe01c3d7c72eee481d05cb62a0c8fc9048eb0f07a517253c6c801dc0b31276a0ad7eedc9a8cb908cb4039e967e0338de4510d01570243dd4e4a4cd1105fbe9511f8053c1f10d35bc650abd04087b209d042081bcb33e29e35bc326430846b5cbd0fec0ced3849f08a7cc066bed2c95b635300146280d59ca7e6cd911e6a7cdc106148a094d443130377079f811c88476132104e6b482a497109250f090c1a98681500e44ca51540843083bbcc32e6f3e13df27afd413e9a48912476e30c8b19222c0f0c1893de11e74e94061e2492e2b8696ce11faf5a22391290d8497f8ab8a326956851070a3818c5811c39ae011a9e1a640339260e82a481c3b149b2dc0b5a39e77e140ff6f280285cb5859fcf1223024a6e87c960d2c1141c1983c72e7678420da801a2306ebd498547783e04991471255b661b18d407b92ab077d06aa288359fb8c0210bbde107e5cd669904446f23980c19606184d04894cf84e0689cbb1d1a1cf1c8658bb8f9fedff00ddefbe235b15a0dcd57eefebdf1ef2ee0dc2b7ac52c31784cfe5a0900f9ba6c5f0c26a3cfb7f97fefb3195d9ee39c4f79d880a213e99cfdb3ec8dad0c2f0e0d0e4f6ece0dad0d8d0d0def8c0d6d2deddf7a7ae37019f77900c3b50f5e561d9e5dda5a1c5a5dd91b5b995c5a843b070de4e2dccc6040c0b1970c46c3cbaac3c3c353339be3962578b0c02c8ef734deb9ba96d53777ff0dd83583cf40d39cd16431f88fcbf783399c733bae5d04e35c5c605c7864f0fdcddd3e3ef138fcc7e333384c069fc3e838cef538e70138e7112e70dd13c0e63f382e7f4270f9dc05fc8567b0183d1e97bd77b8eb955b2017b866e708464069445469d540c832942c8487e18034e62df3646d3ada040115a01b1ad08dd824546006d1960e051ad5841d39d9d871ed049b71e5549b74a9cb5e4033785644698d8717d9263742d02015ab50b0a0376463498234b8ae141f9e94e2baa449b8b296d59908236819e8f8e0f07670468c9c490adc2c3d162f5cdffe0600052688e074ea7400358366fb964525029037a09e234b0ca9309b3232aca891d45caf832e7240667b80ba7d45eea831c2e43381147d86c34eb92420492a591858e82bc868e1d1d250c09eeb6ceaecb27081192448c8580c361851b4d828ba01c1689a5a9283651100190d622c14106b04056095a5f8a5a77c64b90c21a52dcde090c148739d8fab31a5d3c1e009c7d4856593d892ac511d0e1e94b9d4152939f4045571e34ac44fc283cb1a5a6eaa346aeffc9822c4b311d43003188a354bcac418adfcb0e54d906959817c84e38d494ff55c0966724bdba1c5b3b938388352a030a8ea8064580d46c982278fe42e1813c4d427905e145c813daba22458b5e48982e85360838705713e0e26941580e9bee849486f52b271a4fc5064e60c89091c921ba31ee80e0f29aab0ea606015bef5fb2a700218240b2a85947051042b0a199e7159d2e10739e73bdb32bdad2a0e4fe02408b3623348b585054a22012c9b814a87553094f48d8f1fed13dd578aa0a36c8dc5372708dbdcb024e48b71df7072d209220b50230628247e506a81e8421ce3c0b2478d4bca9d90255220f34a1ca61d6fa24cdcd94c0026a85088b84e2f8dcb92b3d8ebcc50b9d4932031c68db4ad1c1a44505d75db959b010fb480518bc040c0578e2d635450bcb42861b541cdd09f834bb3b5e9e4b80b2fc28471035f1ddb1548728e0d47f40007299e74a0f0ae53b8287c3516211166ba05084615ef14b07652ba5bcbe4b2b671d2bd56dbecd1a1e9032212a957a5e042870876500ac76845b044e2a5c8208bc6364faa9f41bf3768cc124944895625884961d983718473ceca602f8e2e2ac65c813ca0503de9be15584a147108cbe379d0b83f46ad3ccddcde5090418639d3c6eacfabc2d364160ee5b57acf3061c6cbe85ad790ab0a89e0057d904043420e3494f958d2a12db14bde26e4a693490d7102c518601d31b2d7031041c3e14503954a681b621126f0cb8967481589c40561ea30a0ab40b6a9154a638d1c9ca7631851e162101e97567cb671e6d48a8817efb081dde1e095cd3361067f71fb39a280208b9a50a7cbd2950e5714245446447604b9c18e05e5d0743907cb2ea37035d89353dbd92bc3380d00859cc530cc8e0e4f473408f9e065293c5b25ce08267860a01945b0b637416bee056bb31a197253290ed5b60a7056ad2c38a572435ef8d13c10f28c8e8e8e9acb56e6db8c77dedbbb3287f5a4ddc15b2cbd7178a5a21a3b30f6a708bf60a9f3decd1616577e3befdd6cffff7fa5f009bf60bc9bef7be3fd79bbe5f3675b9a2a4db39d63629f00de373cae436d36360e3d29013ec6b589a09cf3fb3b16ff1f767fc7de7f87f5ba7ddeee5d16a3bff8fe61e1ae1847e2e73ceb57ed856ff31f1bfb7d5637dff70ee49c37722d620573d9ea8adc051c97bde8f2d92c1e7beff2efe3438fc5f73f8fc511b8be012e2f3484c32bdcab4b4bad7b7569d1451d0a718e8745887548281e83b5acb4b2acb0aaaabcf7776cd62939e77e5c6bc89865e565b5555555780697bb643f676868d55230c3f90fcbe31383f3fed9dc25ffdb2bee0a7ec5beb6abb5afa97e4a9d62a766eef706bccf6b80f779cd7c0637b8cfe235ed041f9c7f3318102dbe7f5edebffbe6cee8f2843eceadbeb7b93bf8c3e1aef773b5138eb48599dd3ec0fb0cfe77984f0c367faeb6d091736e653677fbfe19ada72d8ce39cf3b1f87b6b6da10b8b38e7745c4b68c4cadcfde1f03d68ee7e2a3e31f86c2e83f7fedef87fabc27018bdf76ff35d86364798f505e375d90611b5eac4dcac3a32de6deedee13b4e70c8175c2edf826f68e731dc8d0e77ebf8c4e0f358b0cfdc552b2b248fcb67f17d600d0eadb545372edf0fc46337f3791c361f388fc372375fb97bee92cfe3b0dc791c36e39dc577b98cf6ca85c7e6b39aeeb97b769fc775e77158ee0604cfdde8c02ef9ed2b062ff88ac17fda739a73dec6b5e72dcef91cd79abf70ab0877e771d84cf51583ff20dc5999ef3e73376cfedfeffd3d8b6fc1fb9bc17d73dfea3c0e9bff0d083eff292f780fecbdc9e6aaaf18fc27f515777f1e9e780c369b6f73def92693bb7d3fef2b06ffe57df12d08e6db1bfff2ffe2ee3783ff5dbefbe6de38e759ae351be19c5bdde4c2f337dfde2ed9ac8736e3996faff8dedb1b8b6f4134f391d9f31f56becf7bddb0b032202020601910b00a3d06acbac37fe51bb07cc6f90fc333ff756f32e71c82d6161a8f4f0c1ef39dd1633cc22ee06d168fc9e6bb8c4738d613830f4c7dd73ed5774d4a6c1c18c6b919b05beec2856fb1b8db67769fbf5fee7dee7ec9746733385c2ea3fdbd118ef5cee83733605898d97c03f275e76ebeaed97cb7d52d2077dbeebb3c57f62d7707efb8f2f8eef38ec9379e980f2c1787f6bd01cbe03df1d82ba6fb8ad1e5fbec3c76fb8ec1e51beecf3b0e8be96eb3f3d82ddc2dbc17f089c1623eb0dce0381ce6ca158abb6de3f1dc9f77cc16f7bdcb77dc79ec761ebb89c18063b7fbaf7b961383dbcaf703739ff70c1e94fb8a6fb8ef7d1eaf01a201c184ddb6bfeed9ec0597e1ee72b74feebb363ea3b96d7568e33df1da4d2e9c13af9d85d1dfbbcf2b77fbe9bd7dd708bb6de339f3f7beddbc3759ee06ecba796f729d573c069b9dc18060b6c16edc7dee7ac16132facc4cd86d03b7956fb7fbdc2ddfe23bc178ee7b4fb8ef329f78cc361ecfdd805db7b4b5c233380cd6ebea8dcb70e77198b0dbf65dbb2780e508bb6ddffbf612a2956f387378acf6157307bbe56fdf19dce03e1bcf85c1dd3470db574c27be01d36eb5c1dbed7bf779cf5d4073972d0e8d4f0c3e83cb83e55bf08d4f0cfef376cb736fe7f138aecfdc55bbc37add30b82bd815d3ddde6e19edbdcfe371dced75ebde6a84ddb69b5c38f7edf679c5dd72d9e0ed16ee9ee5ee32fa8c4e13afa1cde2db2c1e9b89dfce6130ba4c3c3816ff89e9cce7f138ce7cdfe5339edcfd1d9b9501dbbeddb2ef7d2e8fc9771cf77b9fbd3799f016d395c76d75df6ed9597c97bb70f7b97b963b8fc7717de6ae5af9de33df77daf716a3cb70e7b15b1cda597c87d17b6fe6b3b8fb15df5ef37d66069b6ff19d804f0ce613dfe170b7cfec2b468fd3ce63b733197c7befb86fb76c6f3c2ec37dd1dd725a5898994fdc8d239c03ef81cb775d58d8de785c269bb9bcd0e67057b07c9fc560af2e2d3a3cc2b3b85b9efb8ad17b787877f82b46ebf579c764b4efda59380cd62bdf70df3531b8db67d65687f605e38585e18585dd869cf0fe8ad7c8e332dc170ca15717d7961661d6f7fef38ed96ef1d8cd0b16148fcde4ce6631b8cb770b8ecb6432b7f00c2e8ffdba6de59b8c963be3dde7b1e0373cee33dfe5beb9fb3cae03447fc577f9debbe3c25df3983c2ec385bbe2f27d26442bdfe2c1b7eeb9fbed9eefb6b073f76b6da1ffd97b7fc7de3bed3e8f05c3c20abdddb2770c787feff3b80e4c2b0bed05c0efb3dbdcbdcb5ef15a197c7616df806733daefcb35f375c369ddf299102d1ce67acde0b6fb4e33dfe4c2735898590f8f6c168fcddd3b8e7c9bab00c7df453d107a84fc8fcfdffcbdf9c4dd3e2f79fc6fb4187c168fbde0f2f9a3c77620b47a4f5c80b86b06f79d7f9f17dc37f8a9f8bae1bd3ff7bdcde88f1edb71c33e3cceb99573095cdb256b5961596509a295bdc5cdc9e575de677473d9ead61b97cf58565b556270b87c0326a8e29c7bb9360f949bcb56607217ef3e7705c165321e9e9616df389c077997d1e7eebdf7f304fff2cce8ffbdc37a5df1fd6fbdafb8fbc3e0f24d26bcbf19fcab0aef3fce391ae7669cf3ced1acd1e2759acb56e630f88cc62bdf7ce29b4c0693af00cd807c13feaebcbcde3d30afd795de9dd5d5cadafa6e7175f5b4f4b6f4aaf826fc559dcde8f21a3caca7ef3de746f7668677e646f716879786b7806b6686b6e08bbb7de75fbef1be62f4b8fcb95d56595658557f5daff7fe4b577b3a5d217d4d739e4e739fe6759a6f48f30e1d38bf722be77c91730e696e4da72ba4d31dd29ca7d31c78da02e79c7332ae9500f5f9c46031b87b168fbdbfb05b2e777f793c751e8b7f79fcbf771521d6ef3b8ff5a47e57422da147a013e11b90fae2fb1e3cdf7a113c3168230889f0e29fbb9fea8711de7d603e31d86c06037e33f81382f7ee32f913621500e307b8b2aea437d7de6de09c6bfd018277f936635971596155dddff26dae0a9301c1e65b0f102dfedfefdb9dd6dde760f398fccfddffcbf7d9db15af8df7c46bf7b75be623d39dcd5d36f0192c5e9b000e77c5e034b4c23099ccbdcddd3eb8b9b030b63fef385c76e07b93c9e0f2d91c0668ee0e8af537ceb9986b1fcce0df3bf01bf882c35dc17f369fc3e8eedefdfd77580f6c16df72e6b295f90c06048701efb3b91001e7bcf389c1e5b35c5c5818d97c0376c5676f970c38360b0bf3dedfb1573c069bcbb7a0d616fa40f98633e3956f326117f0cf3b0eeb95f108bb8007c408bb805eb0590c2e9f096fbcdbdcd53ba0b585162bdf70845d40f118f0061ccbdde2b1db9c9df67b0b966ff31d77dfe534af190c18166616df7fe3735898197dee9ee56eafb81bee967dd7ce7738dc851bef89d70acbe373f72beeb685bbe59bfc16ee0296c76edfc22e5c9fb9db274637b0d43660f1c3f2f2feb9fbef73f76c4697cb633342ac70372c2c0ccf5cb60a77af6ebe6e797c365f79cb6432da7c750376cb7b577a68f315575796979657d7555657d7fbf566dd7a37d6de97d6bd55f5f735579dc7dfee5f784cbe329fd1e3ab33984f5b3782736e656525e07c87a9ceddbbccf7cf63b76f65fee12e9f183c380eef95bbff6e1016be05ef305ed72cee96cf616337f36d571e97cb683d39e840b9202f40c7c6efb3f916e395ef3318cf7b93cd57de5b902e2b0298b9b00b77df7b78e6c22ed96cee86cdfabce72ed90c3e339bbb616f83731f1ff81e9c334c6393bb9c53f0e705a303af380b5fc40570ce97886271ee1dc4dddde72e1f58b02bedc2ff18de79ef0ee37dc363ead5d9fcfd6363deb2d9efb09b5b33e3c271cdbed827fc826fce3907ae65b0155fdd77f9ac7765bec3e1b1f7c017dfe1f20dde039fc5f717fccfe22eb8dc153c008616f3de7511b0b422686d7d0360680883dd382c2dad2df32d083e8301c16532de0d083e8bd1653c31b80b38fe7ed7ce62f4d8ebe582cf61749b0eceb91ed7c22df1ef2de6039bcd7de72e9cb96c9565a55535de1383abee70d76beef26249ede6075727aa50c6237e217b9c29783c1141309ec7e5882f81834ac73323a853b052ea770b28358ebd235c6d0a850797a0c151b8a5a915144af53b1d5a6f4575f5ba1a20b89ab6cfaf5c27be0381033ce98d96a75bf38593bf7c721d53c5bec4af8d6721fad63df9e678460447fbe8e8683d3a0adac1e880e2777646fb6319671fcb1ce59d93cc9f2f1df02054b0be4195021c819f248f4086464d11ce791fd7ba5199cb5683e3af183c9865c555f57787bbdfaa02595d5d5ab76019eded46e2a27a920578bc108d17bf08eac9a94b25ba51df9aee9d0aea673c26f41009aabdcab749171a72541370a0c427dc44f5527a494ffb8cc11140a6fb84af28de4c04b4cf7093e25c0cc4fc0dc8b169a41817ef336386d404e75a4f32f782faa44643e7daa2ad2d38513b8ac64f1bc0026bdfbc30a26e7362a3474948f3934686ba1b1110173b23a5f78118e47790027405823efc86263b1d44a1113e072da75fbd5dd576eed8e98751699c860c2c6e2d04aa9da871e99bdd422e0e0ba9231c68942e1aa6f062d299d3fb0ed6af889c9c9ad8c1838bb149774d4bc5baa8888da98b184e3a9a888c1ec0051c6ec5cd9543f822e26e43641fe0eb07c7d3c64c6f5ca181638071c41bed387959976a7dd58df44ab2b37e63ce9a4e07e6b037c9c0ea38f28cbad92f92d331d2c6215471e1426a2ef69f7449dd0884aec3aa033c5f8ac6e993f90e97d2965903f23df5c6c1a23a86196527daf2a0376d90c189d0fe78e0911cce431183ffa0e9c38f64c1f455104370b8aad19e2542928e64504c87ece1d3cb7866e828924c3b0934b60795f2ea579aecf12f28730f374ad510aac63d8c99afc58948ddcc42887e87ee095f6ce2426ad859a25ebaf03964860c7e13f3cb3e8f28d1c7dce5e85ca2a17ded2bb05fa24073c52876f883359a9ccd161af583f1182750c4451de5c88157955c71c7af260e060a4d3d22e905ff10e8d4ad1ccd710465dc3c630b279e37e2ab8e70d45313d9199d425d4ef15e17807425d8013dc30caf1a859db94e2508e0f44e24d0b58a46d460cdaa1ec6ca833e42051347134289c318ebec1b5e887134130274cf6deb553a02dd73f7ecfe8ebd617d73e235f3fd1dbb7d6f335a4c57be05f1bee22e5e19afcd16ce79dd82b970b86b36fea2e5bae7eed9597c97ef3ef15adb9903c2b97097ef0e87d708e76e3e71376eefed8c7e239cbbc37addefd84b2e9ceb9ebb67b7770d50108d4cee92cfe69b0f7c26b717bed166f35ab87b1ecf9901b0a962ae229bafcc577a68b53338c195777c76e3956f2ffa3b2e936f2f5eb8ab370ef31d100b87bb5ebc5bafb00b78e0bb2676bee5cc7883e370b8ebd5a5a5764f00f3e10d76cb37b970ee26179ebde0b01e1aeec0a72abc17e089eff2370ceef392c767ad2df41aad1a321aa93377662eb966e0d2e2eafec85580e2aabdb2e09fb92c816f2c2e6caf2cf8470edb2b0bf685ed9505f7c6e3321c0334b6b33e73572d2dae4e840cceb91d83038ecb699c73182f5c701e0e7701e5c6e3b9f2bdb7872e1b6bc139ef4034fb94be49a6900376c555e3f3b84cfe82c7757b65c1b0b0b2f9ed2ec3ed95ebce68f2193dc6bbcb642e2b2bab31872abe6b37b970aef05e10167697b5b6c62469c71c4d595959497dee1970b43838b02e39b90985848382e8b3b91c481e8b01fffcc07d7c0fec1c34a8a39b938b6300e7d6c6b640815a8234b433b332ee955515d5288101535202a2024001d83e7da726a625a524a423a3a2d1d17ea71563647c261796bde23b8c373ee391d178607b673aceb909c8cec37829d4c3339bbb646f77afea7b039abb83e6b11ae77c04e7bc3f72ce4584e007bc7867c25b7c0382cff71e388c571e9fbdb7194f0c069cfa5452e53dbcbe7b0258aeb03c3e9bc16adebb3cc5e585fe545c5e682932de791cfee275cb7761377c7ff1f8c4e0f2b8ef8ceefee1f59dc9f717ef4c788b0f7079a1096f319717da7312abce7c1677cf66f1d8ccdc67662edfe71bb05beec29dc77065f4d9791c96e3f2429bbd7864f3791c96fb62e4edcb93b96c7506eb816965e199cb37397cf7696da1c1d0605a59682f8fdccc2706f79df1ca37f92cbebde51b0e4c2b8bee7b1382d3aa41b45df038e76161bf0b1773d90aef7b1382f7aecce3f2fda0b0ecac8b47367bc1e71bb0ef0c2e73833a6f7073d96a0cde1383abf6c460ce372cf23b74790f2d3eeba1fd0fd6fb7ea7cfd922c9cd65ab70182ddeb2b88590739eb7c501df12b6858a734e2e3c6fa96ab5e491a32594733ef5c3a87e18959416285a928801d1e1b1f7ff5b0c0edfffa3bd77796f6cee02028ebde533e1ddf7bb7ce37219fdeddee17f8bc7e1a93d31b8ea8ac02f8fbf5bd7ed9fc77c52ff3e83c5e0bd6fbecf6374e017830befbfb0c2fb6f2a2d0b0b0b7d578585858585be93fae171f92c1e7b6f72d76bbef3b68711a8f2c2f2bef7f6d31b7ff1d90c0effaeb9dc25a7bda149fa98124be195bb7d5e3c33d86a2f7c0b4d9db010f2ebf84a1a5e184677c36433f84c4306c50bd6d1fad287fd9ca772dfb738ef783a9d4ade6774175516bb77994b2b4b3c36fbe12582d17c83214da664e2240527b1c9f356a260e61827001ca712cbc218882d680992d83340e9d36e7444cc32276669b3bc05b1458d37056410c22002765950838ba811bf3ec516393a12b15ec253c0c49ccac3288f9977538c6c879083d3caa7b1eba137c41f66520903875770937b8e6de818d6e9a9fb6186c3c430c9d5c6122403c00c1dab1bfea4ccd931b493519676a4418e211486282a264cf12884fe6173dc0163a310e4eccb05021ed22860a8c9f80d635428c04949d31556820b852432684f73ec244c1883c156a24a903821c797972180f03d8142070e796094e309695603e9aa068c13802445f7384c920b3bb9985c0727b415c6705c612044e65861b987ed6a866456a15818a1c4f3968542aa5299e69d9c4e48c5b08bac40021f610a118b3b6a60c120e4a3113635f7e607a1969acc27ed913a8379d6c8b8caa8b81bcc0c33810414b1725084de50e410ada841bc7aaeeace05f2a09414c10e57910f04df6821d082f19048b088912f7e13ba420437f08d5993e976253827d7e440f200a3e02f43a464cb83058da6c61366c8491b340f2979dc06ab98e8748c1b1b02900fadc085952f7038b068a2b72e89e622626730d91c5a4746bd671b092aa09902a9e28ca61285ee3ce1e8cc45077691933974c6b25922d1204606331607626c14c6d966169e3db64cce9be6f089217679ae82d92b0cd62604412866efe6c16c88872d435140218d9d2c1be512e2261b1ee16c28eb15a1b2309363a55c95a78c62451bb9c039798e142179e80c44a2c5e565421631811f7a04c103c2ee2fd04188ab2cee505d208019018cf02e406436e6310aaec7336420535144486acc91157f9ab3c84533321c1909c9653af32e71fc1949020a6091e6b8f2102d102a686c3c41af6a39bdf03846530a1bf0172938d686795c73794825e6623f1ddae97e11c3882c53e24e854471a082b82fa27c26c4066a346d55951bc5d3a71c47381cc9024e210346ce15090921860ce01e0d1b4dcaded2006a3dd585a1300308e3f1001ce9fcf80a3359120ee118e404189329e1083c2220f990b510168004d10b3bd6f5f7c63f9130fe0ef823f2b7489798a5f527e44f6e10128e541dd69f9f99341d0c8387abdf0e365c555f2faa7e8963be9addd4ecb7e63704be51965997057bce75e8933cc302aef1bff440096b033e9739ca9245ef0198ec87e7e4a41b0ef0d508df044a0539faaef061b833e4ca833e164e2af4f29ca9f5fdf575a5a9523979ccd2d717ab34a80e0af169fa34b5910195868f44a08e07a04c1bf8ba703ee000a0c00a1f5590c331d2b30c7b72ee9440e397026cef88de9735422aebec79f01bfdc4abd0b8d76051b3878e28d9bd6d152c741ab163f71a27220f1009bbf70fa49b28ab8e99fb4202452d1c26a0b71b6715b739f3d07d4489e6346b34fb8a1932c7d32bebf5c541c26eefd2b3ee5b88361487b583f07bf6d55275cd99ea5be1d5e259e7a08c2c8ff7c50ec234147c5a5e72a3883f1c188c78c312e3d0c6b490e2956acdf842630686dea61e8a6dd3e8186e45efe631c68422a7a197d5bd935965ce0eae6c7749981955e31d962e88ccae21080e09bb7770ba5147ac04188b22c973d325a86857c2e70dc9d3e03669a541408ebc3818751d56c4c1c963bad200ed890f357865ba7cf9b3e2b5c1db6134864dd80e0178888c2e8e22a429e3a9912d147e5e42c093f0458daea84c83440934a635088104694a384be9aaf2b860914026c12a09380dd30d8a6025dd00cc32091d41726fb22ac28d2411fcc63cd5467c0246e06a10813f215359602ebc73f225094d501c84bb11896a42b85c0cefba5a9223a2ac61dd11688320a7be33d3e38f413012a9402e0999121018abcc8018b83242a883b07d00ba454f0aa14ac5031f444a5f8650880f2c683d687b60d40234c9902402bb307637ec08edcc8cd8f97439e074e0c2c1d841813f07369b069b8c0d4c7836f8a61b60d5d9a953a2002bc192c73c7520ea2004d505d0cc33d6c5e943d786fce44b4008019d10ba0c716c3af38e5ad031e0f2a668479a19ba39329d47e23a70eee674ac510678447238773897a0af836501b600734141ac1198909be4bac841eb71eef0cac978933367e50edc60bce1a64b2957858aabc214b7220e1cc715c7193499c0e03193411e208301107a0f291d05b8387098701cf0e0e8e09e4cbca579eb51f456e18dedcd2d8cdb64d66d70ccadecebd6d396a5ad459bb80d2c4e5b5d066bd8eb826093c28486418e54628364f3b25d2da8b32089d002471a0b1e701740455110aa2088020c0a1828f92841fc9e50b036c6bc96e36ecd702d6d8d4dadb3502d4657ad5c466d0c861a350195042a12f48949b09596272d334d84511a5eda141a34386898681b3cda5c17da077186e6ccf22c7db6e0cc0c8c990d334133ae59b60c4b598b32c0b2af322f89f7a140b94b6451f4066d72ad14d374fc902c369291d9412108e55c5e68ad2db4d616fa8fcbf704f158fcbb60682c2bce39a7fa7be37f8bc74d18c73faf0ada04cbefaf1756d5fd2ddf602f384c26bcc364f419102dbec95dc0db2bbed181b7f9dfe4c2f3e02d3e83c5686da622ff997d3c2f532deff389c1549cf3bc5fbef9eeb3189c7994f9c339cfcbfb5d71f70e8fc77abf7b068bd1869c730a7e0813402f2badaa3b7cd64377ce79e09a1c775c028777cbfcc11271dfb94bbe2a3c9bd171807cb7f9f79dbbe41f0e7339e7e4b030cef95889032eaf245392040128b35d3e493391c01da9347286e9825b611df1b8ba819a19c61182c912e7bdb8a0154262a05c17e94557a5e1386883ebdbe2a442c985214ca48b6a51e43029ecd8220769c114afacb00d48c50a6e9198a24067484c86040fa13587b095c01de1d3951d2d16863107ec22c59756b69579498c994865c458e0b9ab3ab4a3c66edb73044336f4038fdb776d481ebd065e2fe27a2a70ad083c9c7061796e25423a17ce594eec2565d07bb30344892a01389854e618078c1181bd4ddd9d09abd445e0f3a96115f2d5d6e15423c6318f06d0675cf989855e0fa52908456065bacf85291ab82e297603a22038ceecc4f11d900226c42c0181d724905e80cd4c2ea81682bc11713e4725842a6d8a552003179e19e56cd85879f224a9880c8b6f2f089335f7093bc61a622d280069bec1902673451b3460c08ccde1716bb244c1496cf2bcb564a3ee7784587d9e8b32c73801e02825e6d2f3898e28c23420288c81d88296206f4d5064f0d61855b0c83440e9d36e744c9c41278bd4cb7dd66334276669b3ac653448dea49d034d6496a01a6f0ac8208031d125135a1b593c2c64eab2a00617e11b6b2cd28ac89e111f8c3ec516391a058cc82a1836c32c35388596f014303107878f4a6a928b12416c849a1e33efa618d9ec905ecc0943a539723a1a9c563e8d593dc1c02909655af444120af1879954c24052db96af370aaa9099e00437b9e7d886ce80a2a9374d5e9cb20c40eaa9fb6186b364114888d418c4c42f7343571b4b900c000b6f11fd3e20f7d8ccb4d50d7f52e6ea84e2c04aa22a4c43f64292519676a4414edb18242413ee6c90193284218a8a0953092f7c249032a2884d1a27da3f6c8e3b600b7ad49922a8415884cd95a4b32f170878406bf3817c77f1304a664b5493f11bc6a67cc07a68529065348d9b564a9aaeb0125b38ad6339ae149ad8804d2283f634c74e4214faca021ba93833828830d84a540910310c60ec2b223707c80ca02f2f4300e1fb8b6eec9bf8a9d39553eac0210f8c524c644d26971452a3772ab21a485735e8f0c44d0124720960a060039214dde33039c602a10bfe092b1a8e2d7131b90e4e60e340408a4fe210b5caaac871858110996306ea101cd0d44a871009ea61bb9a2189257a367a93b353be904b618412cf5b1544b0806cc106e68dfac048a94cf34e4e2f2b43e9e6a24c39ac1664d845562081af0f4883f21210a93a4926118b3b6a60c1384328b264c7c816a82d231a6153736f7c38aedd95992886ce20095293f9a43d52872ccc07a6a4a156886f5a23e32aa3028289398c7c7c546540a4380a3381041411c70d3c17184001809e1185f4862287684505407a5351770180e3d7a99eabba73816c00820e12a153a8a4591c4911ec701569d7a4488a105306971349425a08b4603c1c92f4928109cfb0a646e464e48bdf846e9013785e049e20a3c9b6487c63d664ba5985f95ef840149564cb6d48aec981e4810e66e0c00706e3bc1a03b56588946c79b0c89935dc545c25083e24d578c20c3909c580018698d2ab7a570e49c9e33658c5f49bc220400309804d51da18373604e09e902d321804e508fd4c93e4c2ca17381cd7250360b829be95b13249f4d625d15cc4c014213ecab5d9a94b1d503687d69151afcf951238521ad972042925a880660aa48a4324b12063740cb95d20a21285ee3ce1e83b843542f183200c2f2074601739994217cc1e0079714a40034289cd1289063130a8a0326509e5e15bc342910331360ae3ec441f0d4998c6d06c3d90678f2d93f3e60da300b832cf9c99be7462885d9e4bb76011075d06cf5c0c705118ac4d088250dccacc0191e16bf6632ec8cd83d910ef0a23039e0c153d2245083229a090c64e568d166413d92ca8aa1f438cc44d363cc259acf086d2c5830b0d96e4092a42656126a70a8aa9069661fce48a2ca63c65142bdac481e05264033885679e1e46798e142179e02223cc288ba70549b704212d2e2f13b28401b534d1c6438c88694c538f207840d8fd0dd11d215243b5868481a3105759dc213a1a5eb8bc346810e04c5468460023bc0bd05c0e2463822699369b3899c728b81ecd68b050a5cae479c54310692a8a08490db915283aa7886c6ee42419fa69ce2217cbc814ada978423e82576b93e8360f0b4869220c1b33f6d0c7562321b94c67de2196884ad2828dc83c396528920414c0a227934eb5a5b5c6915019da43b440a820b10d3ac01158d0f5616648d2ab5a4e2f3cfe5ce0d2c46fb95c5722a5b0017f9182652962a85c66b8a65868c33caeb93c24d098b55c112183e3939b92fd7468a7fb654182c53ca2d774d71a51649912772a248ec380904d5af0012c8014c47d11e5331120b401a558698bae4da946d35655f9838ba40061d69434ad1153f494e308872358cb1b8a96d4cd311dcc00f1f8d06520ca3849871411566c6120166469ae4848083164a8689923341d2bd8415244c34693b2b734056cc9412c5bfa0870d0535d180af3f6b1de212248ad9fcd3179008e747e7cc9157062d0430b0ac90c465c67c896d451d259a54386920961c85009720c72028cc914c3361080f8655a624033f18880e443d642d70215042f3d6c0cac314282e8851deb4a8ab241cc113640930e42fe8984f17700054ef15bda9881d8dae4e7054fe2b4061e66256296230b6b338ee812b3b4fe842442b11b0d9ad0ad64101a848423557765227048d327b30b52710a6024438c5036291e6b84146841d106ee284d07c3e0c11a6480839ff190a1911e21365c555f2fa8994f9e59075db04e909dc67c35bb69598b144dcf0f563c06b82129225599f0d73814632c1d4844cee28121f08db2ccbaac56310f7f304a40524b3bd7a14ff20c8b39052457d3dc92f990f4bff440090bfd211ab5b7c5f32b8b82a1324759b2e83da82281c189284d356940fbc37372d2ed06072f9b636a68866e689264846f02a5824a2f596e62671492047d88f830dc1972e5c182072ff0d4236e24e1047252a197e74c4d4ced029ec8c122b5a7d2ede40b4f584f155995abbc2290d32da234552a278f591af0fdd8256979da728016ab34a80e064dc695296f3422a500b1e4d3d44606141a4a381f860a101bf52c1405ea7800cab4c821461d2c039065cb2e20381f70005050a5855315e615a594e39ca5208763a4671836b3c2404122eae151a4e84e09347e29beb418b13046592330c21da4f7658d90ca3a143a571ea8c507399a98fc463ff12a3412e87a2221b965000f3c468b9a3d7444c96e1dcbd8d8014608123c4155b0d069c48a9931836eb8e341c2ebdbe444e4012261d70c4a39e3710e0087b023a49b28ab4e99c6500e6acc042d58b9239440510b8709a839ea0a87480952b44d9a38abb8cd9985d204d2d510e1e4b3cc8c234a34a759a3d9d608109d59d5875310a121733cbdb25d967c5c200f88c7f6e844c26eefd2938e0d16859b9f1ae4040d48684371583b06dd8c7104ae912cbcb362e8cbecfce6c812088c8c1002b459e991d15275cd99ea5381c3850b43a62c0ede9a903ceb1c9491e1194365059568074cc412433b08d350f06529ce486c803586a215a46d14f1870383112f355a935145b240284b4a8c431bd3220a11350642815a6e08a420d29af185c60c8c7b2aa30c33ce870d0ab471e4f0d87c45382a4e7d272460595495b64da36378151e17eef300ac201464443cc69850e4342274a14132f7a68c080a5004c5099b5cc36112215206a7ba8dab526695393bb8b0a2807516b4e1d2e565b028cc8caaf10e8bb743151608444972d401caec1a82e090f0ad4507a030839b1ff296cc1bac9edc79a323858db7cd223c8c7ad1112b01c6a247e2286063eed99b9aec415d828a76257c842b8c77d71f4f757c4cdb0661526d52e8b149ab5303b3ab01d6c86dd24a83801c4a6e56586db7227c110b8251d761451c9c22083a3ab83522b261315d6980f6c4076868081f680a12b10acb1875f9f267c50bc544e3f9b118b5bbe3246434864dd80e013cc298356546295cb13531ba388a9026f0c4159605d9277416501e912d147e5e3e0053c44b0bb28b2a6b03210f5d56702470248d8e71c3b4c001f08b931a5d51990688204c883ff9beccc28c224d6b1002097a2283d20d5c5c88484bc821295d551e172c4e442098d165457328b5f619549ba10d36c8b5a90128d042b44192049c86e9060d4571416be98c1954184a3700b34c3a77a60993a4470423974bbb375915e10612316ccc4466a131c6e7248d79aa8df80caf204366c7cd8c2e0aa8a13c6d532f707564184019f1414d52980bda27642a0bcc843fb88167e5066a965e495f92d004c53dc0ecb30c83eb2063b18e28514d08970b0528dff18eb9052860109096e488286b5759dac89a4cbd01e0805652e4da8a99c1d6e146149f19882bccd614d577667afc31b10e9c582079c648690314a9402e0999125e1742628f4fd2648d2c5599013170ed40450586aa205fbc4c9052c421f2f1ca800b9f315f0d32771ce92108aa1e9a3910b55086ab23348d43a9742f6dd19342a84a718187911fd8ed8d106246444a5f8650887e4ecfab9ae930032b6850ad0e1653160a3a50c80066c0f2a3983ac8888394f98607c7d04598c03a13598c5a80261992449028c7c992a500420a42416686806b2069eee1558be6c42dc9ec6ce25efd0836529221b36d3af878711671c41500069d729b28cfeb032c54171cd1427768d2544961a62123c60134c4ab8740d31d2042352ed7a48bcf056f2300a89d1d656e5922c93500400f383104352c487e09550903969e12f2a6242b3a2a04c50e3c27206038bc4c099b9882d54da74e531ea4ee9323eff273d16104111f76f2c6400eb5f1306f455873466cf0c9926e992621ed81a93847727450d3a4ce784a19d0a31f243c3f6c5298f912a6f308db85ece41bb62127e628233589662a5190fbb0841e71a16511e78710d49e1ca6a19d1a424c143d92222fed7e848dc541118184e803af038048015682258f78b864a1d1e705bb65c70250356a0515ed93a2b4a79fa345e31d144a64639a17dc80868c7528676ca410218834f38c7571fa60e14181fd9b43e83220f2932f01a1031e4ae0104b22d34688a254c64615c226278601c650c9d124237a5814c7a633ef8885681aa62121c630907002c4e54dd18eb43278163f4bccc8fab27165494413871f81e62b2e6011730537938b459d47e23a70ee02406973cbe91f420183d628033c22314c8315a098240af60d07a6b21b2d34acb03af30283459898b4b841a3be0e9605d802d46318b4655a4ee1122228883502133253a48ff38130023e6b654c72d07a9c3bf41e1d00c133e5e5b0ac36a213c10ce59d5b17212678841c7db9a4085519a9697088fdfca992a55778068996a61b8c37dc74272591189849d1d8196e3ceae0a288941b801d09ce418c62ac8596855a9cb981702e35862374273150df7c70fafbb14ed93159e039023c54cdfef844da960183dc28604d0f6a302be08209d390d20722566d988441a10a7731e901f6a92dc23e7160247c75dd104a604a20af07d2e5171b46ba0a3fbbd0489f61b1012574a804521dd700266814ace15f4100b002b484608090d085858ca134e9707913734a82d07b48e92628416491004e88a33c2d22a21374ec33bd2fc80ad3085c4a24235a2f4422bc5228e15172498df886dce04a1265c320f48e84510a19c41db45c1d7ea21201b808b84ad46a02e660ece9c6491a08cd47180c4520e3002ea18c6a6bacee29b528b2796514c2766d0c0c963088e62c454a9a32804c105952bf3c6c98b9a70a81706001f519028ab0e202924b2068343c2eb175105a0362a90749850a93c62e308214b96881b6f2084289128d0e9b8d7c64062d5598d3c54cc65a03100386487d595260c90e98714401ec0c46a5c1113e5a588e185905c1d2858958062c867835028fa0f50575c8b4f1b9c2bb02080f129d802829d4304d9ed3c220577ccf3cc6a1cb1e36a16034646a4ae60424260d3522747151c28a5e101e213e05ee245040654d0ec4a54241cb26bd24621ae99481181c9a69c2446a081ba13258c35ed7f1066821072222da30dd4e4c6818e4c8a41c13ee80b04079dcc172f42981e94d25d183cc35190feae65c79113af3f979e4cd999a6418a81a5a08461d4e9d2cc4f60f402e9790b6a58a66420fa4c3b63629f21af06d21ae18aab22633c4d0f7c083cfb6a01f71f28ca961160090ab85cb0a03373643c49cd1a627290ca0b89290cef82189928116c9432212d14c01354360342c0e3581c2614b2ba8e809e81d282d8f70b88bf840550a0e17b47168269aa4200986461c62f5f8cc85a8ee48e2a225ea5211ec8207f31ad8852bd9a886830c48c94709e2d7040b38397a1b02403bae2401b1ea24ac11aca1028a1b4fc24871a23159922c32cb41a844290a3036f33990a2801d3c242164ce78e145d12e439a2f4d6180ce6d2de9d9c2e23b8df382f3a23f1fa166772a0229f080938280e31c88cd123b29870b3c883a92d96732ce9774609173944928a66a8709c920710893784ae65912994ab02333829daf242432739ecc15b893f44eb54172f7a2880d2071ba1634c08954c0b4b7bd338047942a038a58e468b2a0b7e8d864f4c3ac0158e95b6f6e491f05d59152f8c3f4009bc39475cb4cda2c10d0d0686613051a4ec39a90930c193f8a21669bd624328f1203e7423f2c2da5e2a21d446cce9d3cb059ac5642c53591e41ce9805d0149c6335caca4f95096a71d32599e0c6b70ae1550e6ca29a802d622e7485a023ff328f632647c88128e0fad9a0b08e7da0e03a8a4bce323e7498466855a52f0f89c135579266014c849736da89469db95109c2b257d6209c3068e73221c4c84968c641cc8c1671e8831ce958c00f2b965725ec4d50003a724e740480abf3cd37ce92f4e1417e74597499a1c390fc28a1c43c699921e5b706ea4266886f32049bccf99a0dc9c1b6551e45c286893f326c5343ff2e35c68d1896c8873ce39e79c73ce39e75ace39e79c73ce39e79c07d9286244129e2c62755067019722240b23bace2b3809b2ac7982e34b458741c409130139036deca0a0414421c560e1c7ca30c8c0905490f3eb68fc62cc816b873e454db44cad7c90faa2756609ae0d45278325c337b50d3976148dbaf07ebbbeca0d04258787ba9f9f35784b9a9a2e5924712ae23285da0851e5cc1c1f3062fc39e912a034e50e63195cfc44c368d44e2f8f0402e97df94eaf961f9a6828f4b3bbea68201252628cea41cf0d85330d9260301b34a334e030bb46168223490ca5658c47ba305a3b1f04509241b791a3b081585cb2bc4154202b8789bc204928fd8b251a006290923420328dfe305ae3650d5c7c27b97cd13edea052a48a8f07c929c1254da0d6bf21205b348c9950c9aa6e59198c2103bb04c90c83a90540960c5140d66484235c941fda2c2d2052e696bcdcfa0ef14cd0aab0353496d8673605c02c8c4f61c859e4298dc4f6a54cee4d7868cb85b34e9f3567be38491a0599094d90040455241454e34503a1243e7f5348509115f4f0f0244d8d183e8e2c83a64aeef8608cf0cd3a406604dcb7294cdde2e00418e3f390b10f92612f0e85da0489144ccab867c8492b84828a11e5e8573991a2c11404425b9c4680559b169aa6aa15ce28957ce0e45198d40acf5a04698101e704144561029ea6d2b6c0091923479f1778641c690089c962eaa962c80aa67390db18900e3588a14dd42097004e83fa3a90c910f8b132ae3b848267684319f91b6d4e96559a74a06222f301415ab584c4ce93cf859a103573a01cc7642d2104b2734445b6a4077d0e22b8a511c112b68850c517dc1c472a53ce0c81d8f211e3b354a44449802e343583d7ce32910a8a29401f0ca0f8e282a176e439021a8b61e1256ae3c482140809a0271e15444f3a375c2a89c7b619eab8d6ecc6a4280e549924000445a64b441c4fca2c4b0054a09e2d404124763a42e78d032d6d3e26bb6b44122a243591b1c307d6d50f8b00250a513ce8b1d512a96ec621328193f8409cec4739ae0ca9e960f331bd48d2354642832ec18b822429354ad2637ae29849b00435d2634417addd230a72a31410054a593bea0431d5181ad739c2a6c34d99481679fe9c3a1844481de8687df98283c505278734baa8dc1e38ad9183a04416141b3e8730095918ec860ac5b12b43848c112f2b395a54591c52781db9a9ecde900cbc106407111f636ace2e385ddd4d4852f3f04923efc6ddd337e285d0a1094d38400737ce748647a5ba11341c45e008be8b37b6bc905b3ce0a6908799a633d9db588d2d20dafafcdc701c6db742d519591938649ed8ec9605568d89ea8c9c5019335335c18862a1881e42275b6c300dc900450f4c4be098127336b1e001511744e24c16c1aba1cc15a29d3019244cc06224060477be047bde910004850039481d98b0442f40a451b40bf3eaeb6ddeac581314a52603972d2d1f49f47aff02338b535439c30c88d1d1db7242052e86e99c9ba5bb2adb1e89a308b65a9e40904980c60a28481d47c7cfa80634131e77ae40dd442892527cd32462142c57a045813b66ace028e9887145066cd46c46f59a39214c580ea037195dd88859c1614d3a1dc206e58b83c805882b7f9d1ac25cd2d4c2927cc816a5aca082255568a805196dd190c9d530d09669b2e6f26c0d0ad6cdcc6317fe2847f474e9f7477747e6b66d1164880c085f921f010cd3013be0ba3616f499802b63446b01c216802d954163d89f273c2a8e5a865ab419059d7257a4d946e58c0f265d3f484f6e249a91ee584aec26781100888fd33ab5fdb4a91bdb4889d45c5242048bf390802fa7e6ccbcc6ecc2289d31c20d5390b0ccf49919e178c6ca77540e1b964934a7c3ed856d9038506b8808de78661bd409dde802118787162fca3565e884a93d481c993822c7bcfd51b4f363214783f5858126cc2d1e3f6844dc63250ace529a3d0a84c03edc0637914e3717b74513898b6e4753a9efe4d84c0082b8ed80225ffcf49aa83a0eb374106af31355c3729ce5cc4e5012291f62f40015a4413820c74da6c39291605d86fbca7894c3d215a1485e9518263945b7cfc329857d4f8e585e8115b80b9ad3cae116a5451a30897639c62e00d85274064184161616c4d0f2058b89510ce8e6928bc62eecd68ba3639d2854e892191b884c810a51719e243df08a50a22808a82ec2630286bc63cc3314091c512e24469829cd01a245d3b3c78e0a8e1bb120c3b047a00956a47eb6dae012c9e8eee0e1450a222d1bb4a47eae80369c221c5813d89344e92d0da28e202856a2325c1f6af430e002027a7375b500330065655acb00b538234475633b779a2aaf909658049c92a8f4ecb1c67998e41853d290c88c602000a000c31440405828128b8663c144d044a93b0314800b83ae647c3c9a48b31c8a418c18628031041803000000006004666a14009a51973ca16fb8820826fa4a001e6b64c4bef037dea1f86c2aa88f8a2a7d51ef5551f2aba54c2de81a7a919354a4e3e516c151570d2ab6bff5f90c3f24ae39fafbc4f8a21524848c83732c1a84429c78029f7d244054afb4ce8ca1b0f0031006ad887e2c35c432742df40302667f174e6723a096b27783d31e6c16030e4507915257e1436c6d2037621b930d027c609ff5885e53d12754f83feeda595e940f0898bd94d112925b97a43aa902596ed951324a30845688a0b82dbc8122be156ba437d1780acff1701290d7b28824a1ffd7849e8984d4852b16b6e9b96e8db27cdb94a058a5296585d94dc288a3b22e29e8a33910072c30808d23c80b8d606b8c788ab4cb0950e276aa0321153fff36734e24b07b165f05ada7da99ed0ac17d6732d3dcf8a1a83fac3011de32bd677f5ea67ef48f15d25327df6d8cc4416ee264b1447bfec374c84fdebc6061cf4cb0d9e9ec1d85f9ca4f99deaaaef8a39ec02f6dfb18998f1b287a8d037d3d3a9283fee2f8c090b5f5a768531f3e3dd3bb248363ab83b1a6e5ad3c1058aa3dbc26670bdbabd9fd8fabfeecd974868a8f04b3c2d3f7cdfefc116a271618c56308899b2e880bfac3593a3e55d8d0c06d8449ff2ffcc4830c6ecaf80021e501a7405b7e5f250c6a9e80879d311fed4b820336efebb1ee9cc6b61b8cf2abf6a8c49faed7d328c79d924e25fa5b5fe832de98f4d78e88bdfb9d1b69144b690ef2f1a7eb6b2db3af603d84ad7c55ad7d63e02ab250af90dbbd137425cf10961a794f5c1cf90d7ebacf69664fd848646ebe95cde40f1854446bc5ad6963714d6f3d5644ed699183dcfbb6c389ea3ea335848f69c38f6976506dc0a3740d9fe7e10da29c221b82fb79e879306c2e824deca0dbd63ddbbe1a06b310b25296f29f1dde6cc26cb7b8518d83c6b5d6735cec80c5c6a2ee6d83c930360b137e4accf88489552628c54e6fb14a6438b6fb6bb5b8afebefe3354a19ad49696dd56d5c011b9b77435dc131e2033d03a21b6a3658e912ae769ed00c48d545555dd070436954c479ddffa8a4f3db7635aa625959208403d3a09355d51456e0100ec17026e20276b88880ce19e9e42bfe606949d8d866bab002d4550999bedf1e9a375b8e9bc12e82f53e32b6896503895812554afa3732480b5223a01fcacca05cbf47bd551aa1dc9f4b081768858b5d161a0fba73ead8b5b98f12d405d43102adb45ed33c08344b0873ba51db9eda8f5e76df15f5c1d671e2d9dbf7f2f7d2323a5336dff1e0fa351b69f08ecffddfe693b0cc22bdb1ee2b9b619fc18580166fe437cec8cfd0ed1ff543b88da7db7728edfde95b2b739f55674002989980dffc3a07095d579964bbca39779d5f8dd96d4660f85ade89e63ef4f8b1d5649318802479514c5b76b46615a3dc81009e82e4585d478b4d60515b54dbdab0892921509291b822a29bd7d7fcbb0508be898758c1dc14e0add4afe8759511d804316139636964fe2959ce4ef34cd26e2426448120343269fca34350aa59498476d09efccd0d793ab8331ebc7dea5639beff773e35b9cb493a380656544face95c78f6a2b0ad912cde08a68c078ef084d98c282682337665e6b9d2e2663ec82d465577966fb05dccec3e93563633c56f2bc0aed4f2240a0bf696da0a3f1ef2c7b7af9e5b8e1437c0ff8df70bc5e00c3ad03765962b4a1784ecfbfc6a9bcc8634b8e891b206029cc7297430b1069cc2079378bceda9de34ff6cce735bc948e13344bb4215d7262d06a808bfa671c3fee9ddd46ba237eead7ce315c56fac5710c061bf460947fa451de7fc44728a552707bd5a398b9d7239e75736277a259d73afe9e7d8bb88ce17d2f12d259d5d4c27a49a8ea5a7530aea108a3abda40e5e53478aea28aa3a555627aeabf308eba0ca3aa0b40e5e5b8714d739afaeb3eaeb6c5060e7d81a3b8b4e6687589576d26a3b12723b9ee08eaab8e348eed09a3b8ae8ce50ddc964776eba3befc23bbcf40ed1deb1c57768ea3ba3fcced1df9905785a0a3c4d8247d7e011223cb80a8f5d86e7d5e1b98478b0128f468ae7d0e2c9f75b0fb71e932fc8f42a3251924cbf269327ca0455656a65998c2e5329cc94589949a7cd34136772d599963cd3d46712049a3e8526ba4413abd1848a34212a4db54c13a3d3140a3501a5a68d54d3d06ae2c49a6a6a4da65c53a4d794059b908a4d8f64d3aad9648836bdaa4d966c13eb360d859bb6725355ba096837e9e24db37a5322dfe4eb3751024e960a0ee45b2e528fae4167f0f78aaba426fd4173cf9bfaaa7e7218b0b297ff0dacc1a298ea03c2ac57f057e70d06b336a227ec3b41050925a14064d65e16302be07b53dac32619251f30b6531a52305ea54db239d74fc6271a5d04b15f94831d19436c821f66a615695dfac33a43f3dbcb3ece493113ea73bea39b6e38fba61ce22b2915af7397fecf23b05faaa90a647924701fc250912b151309359dec51eef2497e50dcc59a9ba3065c8f9889bf81bc91f2f1dfbc0ce3740d12231d8705099d9cf790e644749f9427f219635f5b67f53040fe7b2072908912edd0b91d107749e1a5c891f10d5f938a0bf8a02409bdea417bfc7b5ee3bf315d184607318e1b584dbc283b7d6880e32fea33f7bfa2a9cede65d825ddb372f42b7833c33919f74fed24b984accd679b01b6d1fb6f727c02c39e230093dc84e389b07b650653df922aa9583450508cb681fe7e1344a8ca774cbc89f7267ce2de723ead1e4ef96456282b6ea5df870fb12e7555f7da80dab83335ea29b9ab5754e882ca89b6b4155a2dcc3006d3904c9d6602f49c3ee88b578494ac0454011621efd815af1265abb7bce153c4bfd32ac470ba758cf4318fff9a8e4fcf52c12d3c9fbf08b14faea476454b3d8c52f1aaf70e60ac9fdec39fbf64a6b1a933c98db41c5a1be687615c9571f380c72a7b7bb62f150b67e3c718e02de6cccf7bf05885b0da0b33c6e8bc341bab6a3d36130c75483d2bbc98c6aca27ec4ce0f554c4fc73ccbf0e4b5c51d27350793877496e100a770004747fd1bd1a1af18125e481a13c68d0cc41544195e3f9131f654b23e93c801e6ec632f761604ba1d545d6de4d6ff74069f268a2ff08cc51797eef5d71ec18a264e45a9be03a5b86a660736c1a13507e82d10567f336d2dd1dbf00fc58b835dd705d0824d0dea59f91896139b566c050e8eb47ecd503c625b305ba11686a09c2b09c9fbc6ccb5a8221d1aa2daaaa1ebbff39030c3fa16b3a94b2f32fc2c0ff710c0399c64d90580ecbe4e932638c9b24f6aa5a81a218c1b88d38677db2659d6e3e8d94eff722ff382310b15e8917971e24155ab7e4b373a0adf1fadf81e4f7c65659604e49c88c44306bd6467e24dcdb837805c94ccb609c7df53c2968cd9008265266173121088b754eecff500fbe43c457a754732cbee1bf10b5bd765bf1886cf35dcf47ef25e20286fcfdd8cf68562fe46f43b546c8a0a7440744e99ce9911c0e570cddc6d9e5d5e9ee76783e3dd55598f112595be3702f14712c5923522222d148f27e98b821c25f640c290f8ad01f9dbe064baaa6d27e16b730b3f55688380ff28d16d1ab8a37df55a4a9b83242a3594b8a5b259dd6f9ef3803c48b6b67f03fcd3d8dec854bb4ddf6d5ea6d9a8bf379c7d0aaf3a7e4f5c7f74fbce03b4a303cf8987bdcbbdbaf7ae87ef485b9e3d90e38c14714158750953f4fb86fb4533cdddd7db87ace845d91e9dade3cec43fec9c61e874c4ba43d023dc7b72abc5ec2517d2985b898aaac37ee5f2b135fcc91670448a7c558e21750102dc6f0188a643bb2d3bf52d672fd6a87be8d29f0f602a25af1def173874ae5d965ed6155ac7e817c514533449b49eebc6988720f7bfffa83567296588ac1032e1c0f7e857ceee64e2f6b07b709721f1fd290f2a9b189bec36fe447193fa2438d2f5c313f4188b2582ab261409da220af914ffa2697ab88d2d9d3e671bcfdbdaaaffa1a74a1847619e08f1f34ae03fca4a00bc1324341f4d0fe9e1452a8fda9100ea93319d82ff8c396726240d7a0251bc33801567e8597b3e86dc20c4be4b34f0ff723526879ddbc8a78f909fdcf6aef3e3d662baa95eabb8a78e844d995324b1ec88351e37ee1baa757bbd1070b7d5d874bf3ab4a0b4068052a46728648696436dd2870e8918ea3c1fdddf325bd07143424aeff0ec8733596555300477e28d6ae9f21bd78aabbaf0fe5f7901f49821a538ca6f83d51b1e8fbb53ca8053bc47b1f7cf95956fe3e42cc9784ab05279d37cd318964bba0efdbf6fa130ba69210350e7ad6c9a43db52560a62246c16818a252db2f341dcffa7a2a351c6b325e3e088635c7a9a5a5a48dbdcfad01aade470c90650317a49519b6f12b837264b91f2d8d407fae003c85c99707dc9067bdc0687c7b9f75a44e9ad1b2937b9269e880bdc075f3fd7caf42019f407b9c73940970a778592d99f4bc44150295e661d3b12e03a2a3ae379e2bc85004bc519b962f1e0be5185f0efdce445fe013d96c7087a75a5e306a2eadb5750fd82bafd73882715c7091ad1f3185b22b66408868fb93d2bb1f40ed8f369d4024522c90660dc33f933cbcf89297bc825410fcdf164f2e12d32d0183cffbef51004e0d1cd8b6b38c206d016d7a417df4043140c47c5f053657785cc0051d31f6a6d938ce2241c7166c6224c7182a117d84eb94ecd41e62a08cb56db13637daf42e11f3e061ba3b5b41e8062df7b320538679ced95d100178b73e0d7c7b25edb4eb5c75a20f54708900b6160ae424c442446abc049528b1d7c99b45563771ecca73787074b5480317a4ec74573a543ea6bd9bf5c39f22b0d41b05698c0635626cef389100392e90651ca05e496deaaa422d38982f2a4fe8e9ac4f323cee28a5e330dc290a0f4ccdea0e239577f44c1144e35115e76a4d229980bcdecf991b14059c3b657a8be741e33eda672f01e4cfc897d6386691511b5cf4fcd6af00fbdbe9c60c7b0156b9bc2f5d06d190e84e1e929b86ed405972224b8f4da85d934608f416cd4e4446d8244e8b1cefc3cec1f5acc2bf473a112ff7216f4fb40177ff2a047e78b7d2a172b27f998a8af491667c8a13ae5c8ec33ead6304358d04821f6f51d3c8e9950ecda5392d6c77b3467cfcb0b35d1db15c8ca70d7d7e25ac78c1ca9839b27df6f06e62d434e7b7a2896afd4953ae441c4b39680f92b1c519b8c823c3512cc6a8c1f1d56b9483cdb79436ab8d08c6103cb0ce6815bb9b2b64f3340ca449bca132277cbe45ee2eeb4ab2224618243ec4e59b09ca5b1684b583d090becac287851ab8f08a508ceecfabee301e5820649ea4facde7ae0dfa3d3539b8185b23766a5a39a602efbff70255ce58fb77d0d1e19b4eab116c5dc1af3b7b0ed622fe276889dba455f515e7f20b9f428284ed27d027d4cb0ef758ae2cd46f3873dd5c465173d236a443957b845466e4a24292578fc83e64532d645b6148cf4ba323246720fca218be5e754829e9864565a29ec5f873d0c46f7a462581323edff9e31d3061e92b598da8855810e430f1d54f76037444b611b881f4d9b40aed7c78e97a1bbf9d485b98ab250e416f6999423c84c5e303783dc370d1a69976542f6eeda93f3ead4c426077397c7a1eefb22f786e77fac7d2642cd18fed52a3e634cd5eb6d5f9f37c3d03f374d67cb613d7304398fa1e85bf689435a3b8b87f131b8f785203273ac8ff5371726d68a6fbf73ba09cf2f84b1e289bdc83500106de38cb8d97c769bc19bcb8f6c2b6b4262df28eac01e87df3776cd87a9cdde1bbad8f0a7069171c7a1bae77a648be043556dc0db936450bc214124660f7d44c307270d924b07c6608225b816481f8977e9029962f06429e4e33af34ce2364a7b89e31f6a1c217e6627f577d35175a09d4b183fce6babc6bd66ac9ae5214f369e17df2e3ea465301602f4389e3d0507be3a67dfd06c62faddaf7a69e1f81bba1bd5bf9c33648ab9c64674101f36e71a7ca734982396637fbfdd1ecc8a1dd380bd7eae5672fe57a11c5e1929165fb0e7c086b9697cfd6551aba58f9678f1d40fd34ee88ee7a5e0ca0e4e1cd421bdc858355e59a09f2eb5a3e72e838e33797c35c97192ee1672f0c27ded8bf9ba6a338fa07386447f73514c2ff902c28988b9a08d7424be28920cb6105acd0c6a6dbea571b7676a700e6a11232696429082e8adf02fce657f1cd6ee01993d50597add9704cd2fc941e14d0b8d9380d295b84a05f865dbeeb2e39f60072aed0989a11eff7c6b066c3de9dd44591c8d375ec1be7f9070ac22ad4dbbe2a9a7904b4ba11bfc207a44c36e10f34f60db1c5bc150de56c24ad729d87fde4f3b83ad926a2758ea4d6702629532919e2f7e20c5a7e9057825d0fae4b03ab764081a8eff17232dd42fcb4506207d9534022ba9597b48802c22833f31e5e4610c753b8c78b7c81ae96f8c17a6f93f99515190ae3e50b07bfca603e5ff998849a453a477c218ade961151fd8c16e047573568be74f51115f9abeba67ada40d852bfa6004efc8ebe2f30973faa2e9dc233c9473b9c8ad2b50a6868a7f9a9235b1306603a58e8638a2199491a673b0f7253ae5f5dfd137614c2f3ebd4f9164355c60c1e7c0c89de31a07a43e224244bd74db00eb2fff4d819e1263c79f150efcdbefc437c04e15d80528772345f91a7a281e1f4a50a98bcdc8c86c8d7fa688840b3bec5741633c51c2c643117ffca318048fd23e3828182f16ca863d08710d5ca7832a5f91156e300730c5b56019b63f578ad1ec1ad762dafa2b72ef48c878efacf1ac77062a4325efeb04b0eb2b0f45406c03437b35e148120d3b3e32a91b36f320433f84b07697dfa793a7b4d0902a247b0f1405e8bfb1aeb104f4f50344e314f90fa814165d387c4267febcfded99e4b093eba1812bff22f0a34a978ed08373763fa6ac36dac12b0f2358423ef4bb0d4ab68967a215b9bc4a440160176c5a1f56b25aabe758101a378ee810bdd4b3e4070b463005f193e1b1db92376ce361f9d90d1e37a4f8df809caefbfc4b3b5e80fcdb2ff88c10af03fb7bc801b91ba007ca655ae0dd6c4946af59eeebc55529d53c4d1de3192557787128659d2b25ff02fa8fcb4c0f6236242adad8e0f7ca90718d8822c0a9350d6d06919de1c5cf7bf47f5868877aa67b2f607c1c9ada101a754eb86bd8bd23a3c3d65a71b7f335850a22b11f2b7daf8bbf4e6bccecc9ee48bba8bb9187c2bb8e9c993ae8168405fa67445ff5be6cab5d20af49eb9faf27c1f357346df73d5417faf1cd44264dd9e614e5fe2108eaf7f2930ec4bab916b23cd2ca230b4ecb8afcaead5b1374edeeccbaed6c2dc1bf438f3976e0c8c347f0402df175c851471c3afca8230f1f76e4d1870e3d7af481c376988adb9564d6b10375988edbbc9e69e0dc88efcd56e48f6024d10005f84a60e8f3f011471d3aeab0c30e1d76d4d1870f3de2c803871f75f4a1438e3afad0a1471f75f0700fc24a9f871c7da40e1edc8d7c2da1e73f2d92c7d7199e6328fa086ebb7ef63d2280d39c981be77042756b5ad1d0250054d61dc129a2c567396ff207607b1afc7a1eb4ff9969d98bf4fd9719b2dfafeb064c6327a8f4dad7c51f0ff08ba25f81f0484f8d68a4cca76969371698a745dedd75b564f0037b106480e62f11d0845ce15c423598413f21d7f932ca45ba18836250faf05918c478fc6ca3244eed4f0d7ea1cac26cc3f2efb31c498021053b7f3f83be24a52170ded98ba4db5976802646ef0058ef67fc4e4837b02b536cea5b0d3ab6a47c33405fb7fa56d5ec341e4007ed0c323f9b8ee6201b76b423b647748ad8a3fa37b2f8e52dbc4c300ad7d52fd31fec83737cba124c52dbf7b96f5e426ae5dbede4a693e2d59e3d0dc2ebab28f961d4b61df96bc76f932fcdfae06b38101e23271e2fdc70128e16626eed134783c0f06c0d4dff432ea556586805080d572758d4ba0132a5695b246af4517c65c53f5072d2eb14fee8d1cdbc6657e8ef1e26e36fd45a204933b71b0cf2bc849a7043f31f07561b38e50ee2bc9c8b065674b13079cd97199c86bd63984b69c67c78efcb88c2c30d2d9ade1b44376db65f25d57a662bcfae5d6e9002694cfc6c860d57196ede0c56bc5b8f111528668fc0cf79ee71f36a470e4e718bf8398a191f159fc2d4772736ea2a190c9eb8db0a9a60f803eda7843ae50ec4504b9278cd87fc8d0c46c9f169f1c9bbfac1e60a36ea61be56d3eaf21c892f46c6edd93d3defdb5134c07153c815a8fc399fefc2f0ce77fbd18ade7516b8e4f3898b8a77f4e0d716e22aebe2e4ddb1f0ff0ea07bb95519068222da063bb7b228e06b4a6c9eb8ac3189faaf28e538ee6d069ae18a4bf4d497a29cb5d7334ffc12849b4780e9d61a730635dc00087623b78afc4c358199422ee6675f48821eda2734e8ff2a1ad9e4884f87d9708cd66d5db255db267b996ab36145d39187d68481d18efc2b4c4c567a93c1ea0058324b343b2ba9c1236d135e8944029f00989a0d2d92be9953836269f0d4b3b6d6a3c54d006249716721a91345c78e0b169a4cd0daaac36775c83feaab09bdfa888b5f65fed61da50030e5233c1ba7691c1ff9f827020a75ea374da70bfe9ef7d02c03853418a2f8da38a96d31c34b544ce904e7c32af2515da2612c2e09f6ebea08052bbb6c41709a0c4e9681c93b82584c4731c2ad556ada2713abc4e9c8bbbe18a82c8d28a9aba9740e8855102bbd83418634873d95a2cea313344c14ecfa061129ffef38a89c87b2149e2cf75098de15bad849e1e792401a266a0943747a1b957fc85a9dfe8f84314646a8766c555edc5860175c8e579db47d9890fcfdc80cc2f244dac92d04f60985d4898e88d056fbcdec3d2ffa5195e45c62487040e4248030cd6c0a5f5cac28214b302a9d132c8edfe643dba0426e93c131b548cb26af5ee927da0b194b9701a32d480271ea4a61f4d8be7661c07a9b889e58e21e9441987e0fbcb0047f22882a4124a9883e0ce9005b67c0e11a51197c7f6624c1b618b62664f0b386c84715285b9584250a85e7241c4f933c7b58470dc93201aed9f4bacf353219c7e812abcc92c7dddfa50b02c2ff68431b2abd2633def0dcb51b13a19913f073d76b53d502ae5e02ecf023985fbd85f3396d086a1f67f1cf9a48c6c4f843ef425070d110f4dc72b5865baee176cba50724ae4913de6955353e8cbe3035e0505a497ad38307f806193cdded15e8b4d404431cc578a896693f83d01cb8a93564bdddf8f73c5bf693626542fd71fe4cb24435acdef3d71273d9993f5534463b45808580e25591716c1d02d5d08f553fda3823d428fcdaba90809e8d2ebf7838ef77452e78a9da1f144914009e1a005d6f427c913aad8d0abfa2c3bdadf8057105b6f32c2d92d0e9a6ee8d97ca72ba04be4dd3f0e258dcb52e522bb38d08790c10ba319a5585888b7c0043b91b9961f45c422ff43c53b6b539226cccfc85c987585497ca37d4e4afb4eeaed691f7f3b2b8e43430efd8c576bfe862dd9f1740aef3191a5bd19870c5a50be1da33b44bb892b28a62310336e688fadae57b4a41d6b1e1faf5ed86df35d280542d1ece231dc493d3d085873b14317de19454012ca702e850c229b6d6e0e06ac69116a1a1e3b39ff0f5b192c054114bc2786318649f1fde0c3eebc7c3bc5d3e3621ed7e99cf6c211f6ae3c1ddcf398313f5f06028a1e18ac90862cb9e5c336d4eb622f4b6e49aa6554c8da8adf357d35085438424d450085cbd4ecaea8f0edeec603b75b177d0bbb3d643b2dfa6b1b65f58a815c05575471ebdb164700d6b054c8f5f5b4933580132164bb567ffddc6392c5c5b5f787d3370ae4f9004112fe0772f3ea239090f5692a8094d45abbba59b4137a3719f469c887aa3a3b3344d1f39a171540b790bc8db1b8c3247e64a32af3cc308fe5083e6e50bc117dd2463f0c2c2cb378f1b90e810152cbf753eeb416432abf73998f96e90ad3d73a8e1e430870392dc589dfa8ddcc801ac9462359495e98a787b58bd96730543972ce40290d0aa0d6599377072f204f03ffc003d96c9ea7c08754a89f47cd98f62ed97a51a9bc9aaf04268c2ffd7cb7bda4501a8e78ad66e3d303e076ce203b8401e6c0ab4b262139fc7d4cf529b1a0ead50c51c29521172afb026007ca3e95ad1b87e80e66d361cbe4573afa0c78e463a1d70f613e8b8842a39a2fb742a1ae1411e817f6d73af4cdc3150991cfe9fb2fef541815e457de30de4e910e1fcabcbe02deea359cae312fd5fe2129a4a45bcce4d5bb037d1d00b53017892ec7d2e72acc41f32b50dc45cd3b2776fc1a89c11876591cc0bcc0483ff0f69e84627f0fe3d50eec665f23e289261dd4a91b5f2672805f4a02a39a9a174da25d0fbaae4300e4c976c231557cc34c1ec41d319afd9e1c738c121841b59eda961aeac998e92cf0f2cc9ab1fb3b3954248b799f7805384fede18de226dbf1689a141598f9226675f7bf2f5d125de5328b884936c007157e943a2a187c4f0d8ff737888c321ce6e43352f531032a1769a12e6ea40a7d85f1d1114f52da7e7e4a46e168f2d7f30977c3743317b39d03224e36c072d0e20f04b10a6564a07d2e9cadc518d28cc43c21e070eee81132a25d8173309ff640626e1e6fd83576a402f7d9ee96a806fad0ad0c24fe48cf3ddcae99a86b78013997704602571d43c1d67ab3af76ae141e9c6dc7219076f265ab02efb2325cc8c10810ffb4903c4f5de036c21fbda154b8508472e36dc7ba4c86cf6c11a56ca8a58152bb0222b8ac50ec97795bd4bf49d85de2d7c57b91fc97a04f49f6fb9581ddebb09b4984a09f4aa9bed86174ee6de0269be161bc0276ab1c5740665f62ae88847923dedd71ea5385ed6703ba49d511961d5140a0422fa673d5c5f14847fae75e62e35829a66194e4d63dc1457fd4da78c4bcd575b7a0d453b17c60b66539653f367773411931dc06b4c676249ea667f6cb341ed9af32fda725099207cdd293f41bf552055415d9e8c2eb56f85e846d8def99c1bc8f0383816ce21daabe6890155685b82b168dc3621cd22bcbed90581f400ccad4391d3315a3f027ddec57b068896ee7c866f7e192645ba70be20ca2ddf1cf8e8912741133164b691128923fbcb829b455f451ec70414d949315816a0975bd1cb5d35951ab235d8b288753728a48ad2c4db98bf3a22143a6201eeb046ab31e644c9db4eb244920dbd9aabd3b45331595b43d8fbc3f0e485930ab9935e196377dee102c54e6b96329a91cb38c3a4a87d19176ed9922de05be3adad6cc585bde5a4a95986ab139165e6ebac24d59bc0ddfde8861ee98524d0b9ad9e1e75c8da06fd8eddf3fbbe0c6da3623a7c1e9125cb740f88684b55d0db8daea605f56e87f200bbc06fecd7b97bd09d6c07ca48cc9f458bee110e16bf4e46b1072e2afe7b619cb59808d498b3252090bb87678bcda883f94990db3f35f20f927982b44a2a0e68b04bb8d3d203fc512ef1a0abb146a9329e5bae055bafcaa5ce8c960c81ffa28a64d04782c1168a846990a5e25622c6a741a54664531e4846660d27e0745af5a5e782c2cb2e48b5f69e17154ea100c5033d8c917a9748d576346d87e199a20d24856e386081b81e3074f7731f52a9870fa10ea499873ec04fb39de19eb4142f88ad4e9a6fa7f4e7bca92f81360d45fc4b7811d5e805c43907b848fb57b76ef194c4163f6c22b52d7e7d80eafd537234e53944ee90a019a20e73ed7b67750ced6e551aa371cd4ef519117a9abb95a49dff67350c2fce84c72e97eb4376c67a795609cf53317b4a16da624895cb7e303787bf47706bbda6b2285706cab5e5efcfc2411cecd307639b6878f5e517ffa0f6914ed99e9b00fd763075b2bf96976392a2c77eef037c3570a07cc0cc34516575db6bcd2ab1f64a4df032b2c86890df3ac3f847c733ccdd08ef011cab41bb164ee93fc659fb8ea6b65bbdd26072f8b2ded1c18e73582b39be5b6c7d34541d6b98ac4a7290810085fd07886b3f92f786951d270f38dc690b6cf24b36a4f09666617bf1b053408f659fa336d53197015b9f776a631b1974809256f3a0dc4a4c57124f5c323bb363718e7ef439436d6b79a8e392e7a9f31d13148dc3da6ddf4d75e873552c1f8521c66b1122e5ad07c08b95db6308038a7e7d2b4435c80e34d09a1c5587073e0d89349eb3c3a2867a961ad8e7510d0cb1528a77d510971aa9d04516394b52e192bc4fe12ac23d6651a25984c5ac3da49d8565efef343d921ec30f8d8a9c66307fe167e0ea3fd9c9ee9937959943326a917ccd2bf2cd98e7036a185e03a550f861c654fa5c0cd40b921dd55988cbfce307e925b616dd4d342a43fe7c41d0d8f7320e794b4321a535ffe5062032f91b0e3fff1fe810d9ac9fb9483f905f02577355179bcb8b39b95d049dd1cf6608c0c7c3742467eecf164830f46f2ef6ed5efe70def43eef82ec9de73d9a8a2fa0c1e53151cfd54076fef1590a3d0f9d935dc8bc54fc73cfecd02765f83e8a437c3b744a4d7eceeaf0a4da1c1fc827502699590d922431320a21a9b41b13ef946740937827ba6dd1e969d56d8764d163c641fe46f3e5787883786386f93ec20e4652e1f4b26de1294377dd1c0566568ffcf2b791317f84cc690a0cc3caa0d2e7e1b81e5e744f5a140e07e0412e94ce933ffcd46a1dd634cbe1387b34fd9a01e4337bc9fa948afc8b8b844f1dd294aa4c4d94f314d08bc9d6796ae8caaaeff0258e2132846a492e12437764bea648eae5455fa24e6c2d52ed0ee17a3331d4fab62527698ff26fe28d1f595f9316652f769bcb9a59f9f2d212876414fa70b0354f829cc431487db1192b99d2c281f20ce8c55c5dd3785f517d1109533bd2dfea9473ac18708e8a5414632b0713915a009c9f44902e9ce66b0c5f6058aa151fef25400831a4202cf2a5c27f5663992e27275a6f0c2a62af25b3038d1d3007642c6f474188ecf6e6aa5f8629206225c0430a1383445a3d7697a0289b7bc35f42c13024bebe670229126f2b51a91c7e4f13f4f1871829e3f246f437774bed9e49685c0ea1db40fa9125fea5c26c8afdf7952b0359978937a05bbb2f2b9d5021f6c96f7d9cca30f3504ef3d958004a3f0f0cb4ba7520c878f93663e7c9f059fa08f108362d538341c3ecdcf9b9ce58074d7fdcc0255c8e9b0709eb7a1fb0af10122bed55ed3a480077c4656fd9959b10110d1201a2649050b00f66a7663deb2fd159828b058f98f40509e344b8c8ab2c5ee971f078e1df6198615326daa26d71df895f0e5336e43f6fede17c0f82310831c114d48e087951e12869a80b5203a843fa26798258a8e03871d27ff03e449baa6d6d5e851c7dd154285dccefe556f6a721c16350f5cba3819d6da29a4e405086017fc981d8471351b23fd37dca35d257b7dc9b3442309e9a1192689052334cc4b0d50d2e546e1fa042f9eedfb4202ff348885103e1ab4776482f03756ab489467979a2e6b9b5bcb78304d80121a4fa307dcd97735a6c56f3cdf8293e61c5542bcc80c948959c400296db5ccc66e8ec8b9b65400e841a1bfda7ef0500fe0b04dd241982bebf9636df4eda6b0242605ac84e91ac5b48357cd55d69d05c3d48018c051cb0e5f982199d1e523a24e0e5d209993cd431bdf298e08d54ca437d624a728ba5327327aee3eb65a9aa60de0c8113915249da29f58c126e86ac8100721b547213f3fb9f1ec92d7d92578adce6f5564b33fddc12582b3deff97973324c9c2f4db36162364f601b725fb686f449d8cf8731bfa4b5150afa458225107495045f38682d08bee0a0e4fd82111ecae4a15692bf73d012782e3988d4059750d0af42caa98273f9ebcb372b5fbd7c72f2d794dfac44f86e19a086564a16f61b63548fa49cfcf5f2cfcb575bbeb97c74e59f91bf563e39f9e8ca6bf698b499908554192eea2508c0cef5ab2ed84283465d308b04fd2ac1120fdaa582211e3457045f5490f2bed2520baa1b9b896fe5649f9c8a807a24e5e4d7945f4efedaf267e4ab2fbf9cfcf5f2cfcb575b6eb34764ed842c244a1051bf266e06c692c1cea03d06a563982051ba1a68fe9f77111faa265d9b715a29d290f89c648f4661c6d446aa2c7800a22dfac3827121d169094eba1820ded51465fbce45ae01a401a61080dfd7a147e6b12be1bf798209154989068a4b12ba81de05a775a7a90a3a4163683639ec4b0d71d77b643472243344af884a139c25d7458dab04009dfc04b3e23a831286a575932eaaf18a4e568261a9dda68bf626bde86e9c72e8e4279815d7432b2ef9ba6e6928903f8e049a07bca5a6919b713c789600d01f0ae1233870fd16808b9b0c7f419feb95c99d378c040103f259c2de5007e1cc628ccfb31b00aed70b3766930344d223333907cdf83fe513cfe96b8c95008c6c60fc8284321ed870c3e34d710eb0067359d1d2317a2491d55312c89491c7d9dedcbc945c8ea6965c5c791967660c3ade622bc92e337653b097de1440d47ac4ad78cbb8cbe1bea6a28bbaab467b5140092da9c15ef7f99d1547595bf17c6978af094f8cf2251fbf7b4d7f118aafb85f9ff79a57dfca16b215c09be40d0f0281b59ae5daef41fb7bf49b5623aef77b7d68f9f47b04590f767c2bb8d76f25a51bc57e1f2edddceb7747a51be2f75b3b4a0f0ef09bd0e3f07e77670147754dc9d0966ad2c455b3566a0876e7c5bca83d0e169835f3982dee9f87b1eff82de61f432ba95a4c43d55b4a4f6562bfbcb4becfc18ead986933566159774cb06540a2053401a4cee8a31504e4d39d8f89b2b8ca374ffca887fa6901258f3f37df36bfc77e5a647cfe7e522f5dbbc0d3fb2f5b0651bbd13cc8f1940c21b98b1b8a0078a615862d948afef7ba98a8f131705546dd3c171e0e095f2e4b824a077db8b722fc16b2fe01affc2420c501945e8a374fbe6553f18b3fec5a60286667085836e922471d9b880f90895408082a0b79e0bc41528fb9600bce3085706a67e413eea74dc6f21f1d8a98b21849362cc57b3a96ae90dd404fd00ea55a195bb8544086eb0abc46ef422b3215443c4e76beb98c84948674e0e6b5b05bcdda03a702d3421c57f95cbb3444dea212a80d5e26d175317ddc77b85040da6c3393b7536186b9132b17cdf8bba04196a78ac44757aef08aa66ecbe788e38b6d6cdf84c8b21045f0d4c0a57096f97cbc84034916807408ac11aad9d1b06dddfae0110e4100cc4880c5f3f949b4d9f835075a00bac83b9442d7ce899db1a0dca51bd56dba42412275adcce378e681fa1aa6480a196e56d88ca1d042b3df10db8c2c78b37a33946526a09e013ad91c3ea332092fd9b8cd19ab03737e1db37b397084069de55fafc78271c249afcc80d22067062b71463be1e4f4b66710e1426fa142e3ff7c0339b02a8799f49b86ef9e57cfcb1d7866ed0b196721f50a3a60917cbef127d7466e3e09ea0f34942552da2524f076b12c8b9020fe4a6b543c31ec16783240d98337e46ba37260309f0d851ea72102da150bd2732fd834fcca5bd0e96d721c4a0124908bb124b30fafac9f08aa0e9ba1c26272f5350bfd5c69aaed80f3141af5146a98114d4b44437a1e8b9e2f0afdb88ce82f5e9bf3742957c2017f8b95e8ba5c953401b3ce6b8169ce673ba2f3badbc91b8c8356396eb7cc5a4c39cad363362756a080cae02344034257628195926baa311fbaeb762b0ba64d9765928fc711ac10a203c0b75053626684a7d087d9afbb072efbb34302e528d4a02260fcba70737d6c460c9a85d7ddf6dd8e893a565c7618d88219bc8ba408c56750904ff40c5447f2c51e120f28600c1311b991751e724e8056a9330893b843d7fb50b34767a991135c44d24bd4230031b2f9dba04a35667d082d07ae73b776c169cac62c8751d3b12544d716b747925a599f7d0c04b2a44ab2b72130b6d35db3693538f3d955bb0633a1828c1a56d6d3f4b017a080052790905ee1f8eb6cea1143fb1790f9579fc1961d0a47ef321af3291d763dc1026d53cbd92d9185c18a75c519682fe06553aae39f7eb739210a1efe41e2aeb84e04efb6323c8d3dc7de0272de47c87ae77d13be71aeafb04dc9e478f99af287108936fc2376b1a145114ec8dcf58e695d47153348b1a4a473d42643c816ea6a115532daa9722226246d36359a9c6c927d613a6c078c8d2beef7a0da33f7917e3c2d295527118a4630f49f0d990e1afe15420525eaab5ee0ac135ad51e59265e7e6e2b53f25c94fbe048d4d0ed3c27505eba24a0bcf7589c0f4a982ece345ea2a6cc83f150800011de68049e8a37303cef96f9a1dab3254112c60b926d521f069954ec97b1e68e6af6386843395c815e51dc0541d234677330b8ad2fc475f9d234f047b48f7726852d9d75269205a575ac4188353379138940acb640204c4e180ed7aeca40ef01b0dab0c7b30de669816d03bfd14ae1e5ce2a03e7d780fd360654925bede5432da46a0840f4262d084d2a4b8c39121ee17b13f67cc851e5ae85560914153becad5c69a15d536599d4361877b597971e54afadf3b6330c7a8f2446e83833ee7e2906abc932c82587bb4a1d1816c0ca920a7d918f22d6b41ee4ea528140bcfafbe539c6e88ebf2e2794794252fce78fdac84268558d102b5d818095ab29a43afba41aea5fe07162091e606ce99eff425568d241e40960c146273844f27391004d2af7598b397ac1273988961487dadb17b7e270dcea799cb1d023f3949bca409b9e55e18807a4e358305090d19337a7ca82009cc32d1eb869527316110c43f12ed976ebb5db0b96b00f8cd6d52b68c71d2163026adceec6f5eced04488f4ab8bb685d6be89e709ec5ac69f75dc02940d8262bee89c1f6a031ca46a9432585336d3855142e608459ca0428d3860eaad9303d4d319a33d0fc311bb4c9824500401e34daaca89ee0bcc2b336b3451e14d41771027cd50351f2e17a72428630380fe76d0ddd1c1c05001720efdad0fb5c86e5ce2523833ec801e42c265104b42e40390426aa57de6e0c88704d271ad9a895a1937e3984d93c5c58fc9e3b156d561aa5cc7d5656e09d04b9219bca72dcf12430895f1ec0e2d87c22157ae1eb9a502880f67d0b3843327d80b4cc3102f550086af30944a3a181e076b07add4d9e19118247bc1d9f3f97c477b423f328fc25761a14e6f592a3e5418670d92877b78bcd06e29f4bf407bf28872c048fd724bbaa83c132ee643cac15c4d61ae6b58e84ad13646bcbd97aa6b66298964d7a2a4b3626db7ec85efdb1d8edd80c37965dc6761836ee126b6663a87950ed0ce59e6a70a20c159d8cc307a5a870b25a8ca647844016b1a2b2cfa4a0adfa3eb2c3461046ca6ade80a6838fb00657c568c24a0b6bb1be24f82588141474b0a7be700516d9be6f316ee323d803643dc03d3e556c4d3b708002fc5e2d2e016d8bbf9dbe6e7b196572e664b517b322b4f534f0a090678259426f1400861835ae220a827b784c9e9c8e2f0d178f96dbe27783317cc9066057410021229e07156816c0516106adc9954b016dc50a2caef268091bf7553a111836c32addc35852a137ba91cc3b50cec69a4d5e4a011868028ef107bd522dfe401de44351f46b6528da4d5e077d4a22340e1874fe83eccc0eb2baa21e93cc9121972e4b78d81721e48e949bb70a6759d61db54d573905421ffb630e3931e3fbc95053a7f341870bbc69fe05cf53dfc4f0a448cd48c4c69149901cb58a034d7ffa4db6979334f816b7b0059df3e597b6dbdff1338db545daff9de402345dbc6e45be9297b1bce4ffc571cf655effb86128a1a0dccaf16cf6dd4d64b5782d7869abe167d9cc511b7ea5f1a9fa9b02afc2749d16f2bc9139c5a0db82144b65e9d92a347b89472addb0cfdfa52182c563dc33e9852fc9b460029233ab0f7979525a141b309e5fc023720378026498d5dc768b6ae5b32a66960b8fc41f7f1961c88fccc1d4853af548ba608c2cd1453b9149adf1f0694b2236c70de5fb137996110cfafa3e56930cd82e3015434b6e2f7604202fcd37dc0b82392592352fc0d8ce88ba30b85b61854a1e983c64093a98ee0c3edef3fa0638ce9362cc414d113d5db298704061988a5d3aa0e6de5c71e8ebcd297de3b8a3255b40749fa5ad060c88807fa2f9884e874c45ff6023bb059f2e4ee6fb49d30b087b9b20ca4c672fb9ba26a621c0541e2050f2478e44ef9ae733e7ebf3c6fc73822aca0534203dc9094f1e8b6e47bcdd00ece84f18183150597cff00f33b155096a6285042e15b20e441279eb4300ef9a089df9e7bc5d95dd27f0179399e28b1e9029faef048dc1ea0a74d58674693a90fa07d3664cd259f22178ef78dfbc3cd8a8e094fd2a7c4024092a52e1bf38353f5bcd55afa6fa2c3434e6b9f5e9cb9eefd2671c02061a37394b55ddadfa7b1d7007ad4661b96454042e8135e6f56d7741fe9fe0aa79d7d2166398db4069fea858baadb0131b607dffb87aa32955ceb2b5da4180b076e55e839ecee614542f666fb6c70046e9daa23201cf001ecff540fc07e914ffc52967138751924225ad9e3df05e4074dcb6f5f8dc06f2efb045da6391f1e69e8eeaafcda084ec7fbbb8f33cb898b011ebc19472083f0541e017e3a68a79716d4633cd1b15dffdefa7cf44791a90bbf4d93a342101ccd0153cdf0eeb3d6c9f874c7986ed8e18c7be087187c88fab3096f3cc56201a00e0a2f14207bba0b26c2f175878bea8ef8f440d8a94240de4f8043e9aa47920645d41a1f0b8e5929a455c3405d0209611c1555c6e895f8b6478fb7407c8005c92e1bcf355792445e5e8cbaf80dd108421af8dde035d09f018fc2010321ea12351fd2c64a4453f8db3c9a5313990d884b304734c167949907a9f3ce3b97858cad2000b08f6e30d2b80088f5490415dc97be0cfcaa642714614bd1a634a6c2047e6922b69c0d822ce9170fff49c6a4e07c06624cebbfbad7ea88f71c21306483b92049b09d7cc719bf8d857cc324d900a71ffbab33789701c97f734bda49d6fa0f0958dbc4d1706401d47aa0c9414336294126440641c9fb028b61c52a493babe5aafb16df522413842970a71f32c7862ac3c8e35a1bd826081d484e5d67370104a6cbe86fa2f8739ea0a51897791087bad4d3564446483aad80d28e0bfe1154c71fb47210ad57fff510af5bff3b8a174fff6d8bdb2b58e82fc50c22a2e311fe7309152eaa06a989536439c117b2f131461e6b44a24401f9ec87da3751288f26840247515181fa9a808c1fe231fb3cd841503aa5793277b9b331b3d73031a733e2222bb01eab3e1f416224fc59a5134c0274fe131a456907ed3ce8740273d37c8db4c463ec5f410191b38c2f999b3f1e943a21afaf0a5469aabbe99b7f108175e3e50588259ae4ba699fab5b843ebb1541aa364865a96b402a6d9682d7adc0e27464e4b769833da38a867c9237f3ec6e0c2e09254bc3524310ff8bc071078342e230f8c49477b3d8641e3e76b4c6c94e5e4d93fe2f616058fd21c976fad447359eefe9ec3974c6a359511d32c693fe2570e7f9d82436d5c66e67aaf6bf6fad8ac9719074d60eb85ab785954bc9c0a34ffa31a0e24c56c02668ef56545e7e0cb2f428fc4de9aab584bf24eee5880129cee65dd01899d9f56c884aa7ebd6ce592dd39098e9b1db74ead9c4dca220d514b3f2913c875dac446134037fcebb71635cb052ef20dcc94e4a085d6dddd43cbd508f3a0819ffd56f66737352e102f4bcc1980972e99554c64448d10e2513353545480d4533427a76e5a31468d847898f0e75700f8553889b81f0440c76bce626dfdf677b1a4eb73b1335c67f825ec9e6ea63c557fee1665bd0c199888113efd10ab84577edd1fe0a8e1994b01916899532627b2e10338b66870336ccee11bbcc42738f09fa87c52e7f7490c0c734ec006235751b24fceebfe072b21bc0519568b86d50a8808e483025929755620031f212fd6cae744fab368c1e305ab1f55b8b34a4e20b1a8952574ecbec84db304643d465278690e7553acb876186a0c130fff3f03ceeab781e20897a1cea47f1aeb42ad42812cae58c1d56e08aa2cc82719d661d7650f88a39adaf42a5e1db52b709ca1a76e2d560f89a0d5dc7448da2e62be8e0a2a8e1c204f601caf4465e4797892874141666da778f05f9627f9024d36656be8f00e34aec141b152b11b1eb8a0bb733ecaca373bf6f5053b1eaa704dc1dec0ca1b727286d3ac78a36eb933391fc4d5c3850f6588bb53afac5ea167efdf956b51c8e514732f34994bd7658526689bf2d3f262eade6c9b18f83f868c520422857d1440568574d5565756a59d1b8277842bb3e0b2158d2fe646e286b11b2be091c0290c6efadd7825ff025bd5dc110825180b5f66c66e7a5687874139de5b9b9765606671fbb39160c60ad6e9a99483fc64a00de077179e0cb42dfc19e989c3df43222831abadd9ce5cd391e2e6e576a74da88bb0fae21a5d8c51ea99849ad08ebe4d0f2b48f042b6e21179c50a5ebf00211344917fb094e06061791616c566444fb255b26c300826885cc6de6a70c7903976be4bcd301bba711e5be49305eb8abc70302e3bf38ce9a6fa466d20e859a2f9e5ddf55324fd9647ba9342c3bd502b57ab31297df6d5ecec7182c543bafecb684365c49e5ff62e04b66c4edb0060009974ef22a6b1082126aa4d3ec9b621ea51695a95505db787c9bf5c94dca56574b0ecc5e6b1e8661842c79780114bd82e1d9e5998d46d95a98c08bd10aa990e3c2ef4deac6adf6c4d35dca9314bf58628f9dfda3b0ff01e8569f3f923e44c4b628a52aa0872bb12136a55009ca83ab514104b79099511e8bcc0b0c366bb2584901c0d875345d29c515847f471c5c065394487c2bedf1e0e04a5ee76d48d779d4caf9ca04b398ed856af436e0623082e94141cd39a8c3fe69d235a8762274e9a15976ca2ce41e1f2baabda7a3b8fdf6ec56ce75e73d67e505bc207db289e2896dd298f8a2972fe66e33dbee3dafc29ea12cae98e16bffc4e265940a1e266a333d74c953c31cf4c693c8fba8454e15ef9007b712566c32b08f9194f76947a212de81479ea4bc872df254e018de3e5096815d78409e5718c745438b31e0acd4c29b5f20b9557a41a077cd4dda017d5276f5aef2ee4b70aebd566b24dc0487719b681e69d166ce33a2104e2fe63636b2790fca2c5b36cb92afe7459b44445ac0316a51aef7f897d5584ba03f404d807c743bbf4f1f44fcaf179f9030a4c2b31c79c26eb5c87e56e6132f4e8c0ce569b3acc390cf2806c1d8cca5ab4bd04b91a9e97504d278cd4a573750c7675e5aecdc04f09b934b7c4dd5d064889dbb10fb960e56fadc123f572a42ac99c050d490adcb7e1f0979e4d96e07eb8cdf75c4eaa4c701008a88ddfacfd5423e59a472a1e19255dcac3924f65031baee03d8911e830ecf96949557610a7be317dde0ddfec41e9fd5e68f3e4ffed29d823520382f5745971f0d946e6abe298f2db7074419069536bdd29419cca17e96087379d1fd8da294c1c8c96cba7c042bcb7d5fff4d8351192e3aa59643a5c9e8ec1dbe4380dc7ac44bce4de8a015311bb9c5dc5af7e905d642b7195c016f0b1d6e3ff89e196aedc34217bb4ea0cc25e804360d898b272f74238fcb4723a61615ef6929ffa2e2c1e16ba24dfae6122c64d6e7974012443b3653bb6f336a25015ef0a59bd7ac0c3c27aa3e8bc1d81412c99f44327485e0e2a602ebc02be0f902666856ff3757662dc92be378a819f68cae5ff1b54e48103514d8592ebe97cb6f3a92ef0c517bdd03d271898068e54e260f6f90c40c7d1e5f44b74cc13e486fe134ae045983fc7cb54a00f363a56589030cfd109cc05681402955f435150622a6692fa14e01f22793e8fc3030d437f41f5ff94fb4f76502979715aa9da80d39ec6e1a6671e45ee677c12a3d42e8c7ec6423fc6376e644f8f4eac59103f2c52386f04a29a8cc9a2c6142e6d007f08111a07e733cf9452601b7e7a75467e9941927bfbc131644ab91ef10d654ffa30f31717c05483b55a78347f45e0c2f08765862a7d0c6bd71abe08f050157332be8993c9790b22cab042366bf0c98a3b290c9bf60dd3e19e01cd1b114f0a94ae5e8fe7c580a4fca62404ce261e21dce478b3f8a84db0928550b1610107a058c9ff5be0b3bb902789eae976ab40210c4a0046e1c9129d9c7a937126524567ac92c1d300c7813bf5638aa7a3703e3ff0275b956da6aa84e0925a88caf2b5a0a06044fb7ff0c70e2cdaab34eecd4eefd4def7c1fdde91b76a925bf818034ceb998d2e8b36b6b9fcd25014d1305f3b124dd361069cbd7a07b4c2cfaef9f427d21989c37b9d40251394a9426973ac9b27092c738652d61faa85f2487092070596d0b1065b57a99951a51d69e32d8240276961808053997dcfac094a286ec1ff07183b4c9b8c3a3111d21833ced3ec87868f5a202362a88b05fecb3746ee3b3bd7913ce4661bd9b0c8015e9574969ccca74c2a27fb5485654f682729506e13b9eb8d108e9480f09ceb3a29004eab2345d65ccc30fc09a3a44f6140d1004fa6910b57501ab7774f2620cc6b43e5fe3521c7cccf2f5b681461a8f2cc6cc2b3f30d3e0ddf755aedbd7999b30e0beb2cb4bbe08469249e5a2f1db1d7a7e6c7d11263132458dc456b205c50a8dc5e05aaa052152cebb99912020e15df34879266b177d8b53830eb6954b20e96d4d505951a668d5ae8291354aec17314fd9b32ddfbd3026e99d280498270221deea7ab6bbfb2f17b7f0d5c860701880abcf000882ce91b4999bb9c7968310015fae04326b65bea72abad9366ac0657d75eb5fb120e6eb55246bb58c45f28021c7cd434be7da73be6813e9408817f9341fc4fa3aa7a6a5dcc65af12e2c58473d0a1c21bba81bb8e49923b9c12a71850313f88f9bfb83a28ebedd2d9c594c51ec3c6d5fef29581a123b37acf317992ad87f93b864966fc88478fcd146451dad6caeea839663b683886d7ff4d03445def9003c9bc5048a27ddf543bc61341ac75fd2d901ecc1a98ef6ef6b7d3170d6809e89152e4500a29a323cc5062a9b5a94909754a619b0e09d95656f4684164dfe045c6f63eb74f9288a0b9a4bf474c67e4d3b7897407aea20f72fc87bbb35214071361deedca072f26dc040c2347aeb31c5a6022a8d90a95e43b81e03ba5f5234d0142b828c395769bf15d300894135e75445f0068894f32125d4fd1df969b37c9f3d1404127e577d63b7abe5b529e47d4cf4e23da5f4a9806e8ccfdf5f8c1639ac149d9413fb0086dbf1157bd701c5f5151d6f8e171c908b37ec8cfa968420e88f659a3cbc1cd5e083b90ee5ac478d4e7cbd733f78d4b5057a10eac1a21b224c147774cea1e32c954ee82d1f6d0948dc6745ba38f9cf7dbf001451967a9eb99902704066f7766883a6452472a4311bf87ebdbfb4b216c65efd936d4a2d819d689d21bf6685a6a9be8221a6518166a4989a903663db7ef1ba89ba2908160b30fc6236a812843b8eb3035ea5affc95a242599cdc000aee0fe27e189749e0fe12045ee2faa00b529c51a149e7267d08f9bb50b04bf9f0ee9d30dd38b4b6c27b2df3eb6eaf91d09b8b8555cf39a99f6195c651bb214a780ba5974583876ebeb18becd830152e60799ed414592b455ca93268ff530f0dc80d08e57559ae82dde98c68e40ec36d234f2b87535858896c47f843418b37b41d5e2333c68e2a62107d29ad2025b51f447d8b7cec4d76763a8be440e70801eb235c21e676167bb43d793d98455fd302ddaeeb54c6786ace27a8bd4c1e5548052e742ed62b4cb10bc4f9045a8f47b44f107039a539e8390ff93325a98c211c431e6b201087aa701c71d1222906229d098ca06e448ae82db27fca6d3b2569b111e714a9a786132230b17577994eafffff7f2d8b8c52ce931c0ceff49c54fc29f30a270b440bd576d2e7632cbfe885d54ef0f1cffb63eaee02b4e847e6c7440333680d641a10804f1c221f253e547477acf1bf35283d4e0a331d721f7c8829190e9634d7755d99cb2f4439c6943ba1784c552a33a69b29a6785ea9a37886e1f997e6d9d6edca70d7492d73521cfab0ca50eec4fc8137fba87695a98fb2cc5f88767548c428973eeb03f9f8f84cc0e783189bb255cd8cf090dcd14126576a7d64b40fc2c249ef7f3d4b747f4e3d9c14a3408cd98c5570fb3b83aba9d2996aeaa4cc8346de46fb205c29863b896589616c9ab03cf43376ab26fc5772786666c6e653d1acfdb66119ab9662debc72f5d7473327990974b3c4e6cceaeb90cc149b8f4d6c7676e624334d93621908032dfddf93fd32e093811cba82f7d344a637ba6705375319a6a11065f2e9ce980e3d9009a5bbff663775e7c8313fcbeeafe794d1363922e8ee0fef4739bc592c7c212c55e9cc759d7c84d93c256a66e624732d8ecc90a50969e6977cae2b446118368303058e4ac7e9985e5ac2c9a15b3ad08d0c4437527483d2f1e7c69fcbe19518bff6d5ed749b71c6e0cd1e761e95280fc4583ab6f1427767778b23b24922b24112b13b06519ebfd734598a383639dd7d412cffe6cd6d2ad01d8fd8bbf9ffddea1051cd1835a71a139a1bd06c404453848806a5bb237e55f7d87b2e3be9a7873457d03fcbebd8aff5d875f23feb367b567b547d2efb28fb6ac35acadc665f7dc5d7e6c798764eba1cfbf0ee8669516949770c5121cae7d3521725a0d201ba9bd3e4bbcdd547f8efab6ee2e7b65b614c6233145b9aed564d1c9639292874524c7530ed304fd6fb1f863b79caa9df7da55d052dcd75e14cd3a4ff1b16caeeef8c8f6674f091cc7d15ed7ece0f9af1767c54e3a31a19f93ad7dbf90d9bb1581efaff6d069bafcaf8b3ecba9f76e71fa7fb693dec7fc376ab26bb558a29e9ce3221486a8f904c484c7749242487b0c33ebd96ae259ffc5bbad2902b9f165dd963f9975e3974ea82df6b57146449779c96a7bb5d5a144449d7c9fbb9a39b8b8264eda46aeba41a058182fcf554a58fba5f4d518f5412c5c011c345f4cdd2b42846889016c55c5b937552a337d1b3777b111025fccc997a28107b9f69f844fcb4da4cf844842f94d22220487477ccd4fb9e16c170410403064c91ee8e1f769fe505354dba5df910dd70f8422810836eb387dd5f7f22fec30fd7cda987e7871f62965cd7491895eedeace8a5062f47bcdcd01db3cc1f0ff1f818f459dff3f764fdeef3e4d05fbbf928ff26b18755be90cc5972f8af21784c3c3f25222e4810b99011b3ccc3fbaaf710e5f36ba2d095de5f2755fb427247e4323ff99c631fef6187f21ee312ea89e04fc98f8716b9f410b5a0d1dd412d6aa1a2961fddfdd3229638442c53749cdf75a588fd5acfc2eefba487ddf4507a29cf7eda9afc40b52773ecc3faf73671be63c955d0f17bb2baf61fbe20ae3f923e4d714ac9a58457568a42f14f498fb264dd1d1d7b167bd75122442c312d62318068a507a295dc3d01ed3f4acab6baa45ec1db7574e5595a9e98610fabf454a5767a06ad5d7d7d20d18a8b682576779116a944a1a3dfcfb29b4f3b9447ff2c739bddabf43f52eaac450969cf5dd7e9a7d5664e1afd6cbec19accd246663971aea0add9fe07cb7b735d27950674c7fb18949e77203e897e18a13bec6667fdb9d38cccecace84714dd31253ffe6a7da328a793e8874f49f403a53b7afd473996dc491497f46bb2fb5cc8daac44ca75a12481e5115e4a23cecfb15c3d7712c524fe5c7e20cbad664e325bcfeaeb4cd7c99a9914ddaaad712cfd2423336469ba4e6ad187ee066a11898d8ed2b3777311e9062212121dc3175a7d4dc9565f33149f383f16915244a41c7ef8217eb59354417f946b3ffc103dec72fd2abdfb3ea2d118a21112d1e84504c4928ed8c49e3bc5d06df6fb18743b41a0d5949f71a5a317d29e8bd6b36ced4fe65ca6d2f1acd24e30d7e73258e2b0e4ae2b099696a19f5548668c312a2b8725972536b52cb1c9619953e3020366dbe1f91ecdd3845d8b6d57f55f789aef51d96958a54afccda0c5585ac03f4231f7bfa1fe674c1c96da07fde3fc06f3c292a3c99bb3b5b793956e1c969c4ce6b0cce1b0cc01c2aacd7806687e271fcfc8681ff4597a34e39fe1b0cc91b9d97a369badbd189e19b90ea3996b717cc46199e3231e992ba37d9005c638f144155083680238b8010d4e92887c0b510f67e86e981796212a41393ee11391ad8f7de9be01099b2bf54cb7cf555e09a61c53ffe936a1718101dde68ca5d66c88800cba7b5e7beaa31294aaf4fbe40e7eede975652c75b08c65c761c961f7a77c0e53fdfd7c4a18ff4dbd8a72da9549e49c86e0b9d1c180806e78767a6c784a3f5bf7404215e46a30fe9a2991ebaa99d76affe30203c2ac80333d98a505cc8fb7cd7258721707e3dcaf953a600c0df3c2025e1786c1bcb00c1139208c769103a6601139e0014dfa6b3552a67735e55f948d0b0cc8a2ba2efc61510356206a0009440d8822c5af3f4231e6d18c6d7f511ab0430cf8596a1f84e957c2f493dde75106a8a17b7e5df54c13fd4afe61f759a54feaf473795ad91ad102c0f0f466ecc32727a205e874e774370ad82205ec00fb69eb4f5bbb7ba785e8ee21440ab8a1b1a737d39b45097804480101342928dd263e2e705d170ebbda837fda9d6a29063bad9ae6d7ff866eb2e5999dcda943ea1fb117273fc6a52cffd6d8ee69c2aef6e059419c6ced4fb5747e2731f6b13c3ff73d10575b53698ade9e29ef8752c7caff91786a3740379dd4ac8e09e8da2cbfa628ae432ccffd9aa24053d24c49e3d98cc11afcda052d06253774c3e54b69244dd7c99a30530ce685c5ae4e1f2864ad4e0d87658e4905ba4d7ce836a180c904ba4dbcdba4071309741234f2f2bebc372f2f2f2f2f2f2f2e2e2e2e2e2e2e2e2e2e2d2d2d2d2d2d2d2d2d2d2c2c2c2c2c2c2c2c2c2c2b2b2b2b2b2b2b2b2b2b2a2c2a2c2a2c2a2c2a2c2a2c2a2c2a2c2a2c2a2c4182040912244890204182c4c4c4c4c4c4c4c4c4c4000102040810204080000102030303030303030303f3f2f2f2f2f2f2f2f2f2e2e2e2e2e2e2e2e2e2e2d2d2d2d2d2d2d2d2d2d2c2c2c2c2c2c2c2c2c2c2b2b2b2b2b2b2b2b2a2a2a2a2a2a2a2a2a2a2b21224489020418204091224484c4c4c4c4c4c4c4c4c0c1020408000010204081020303030303030303030302f2f2f2f2f2f2f2f2f2f2e2e2e2e2e2e2e2e2e2e2d2d2d2d2d2d2d2d2d2d2c2c2c2c2c2c2c2c2c2c2b2b2b2b2b2b2b2b2b2a2b416280c0bcb8b4b0acec74325feb79a6ee1e75872d02c0ccfd1ff5bd6a2f55d51b2ef774f281aecf7569f47efd542793b831c20484d9dcd8f4d4f0dc603f3d3f3f37d88dce109b9e1dac486947e2a9fdfc2c53f2b3f7d3517daada6e26254f7f2968e4af4f98e9b5f47e2f644fdf81d3eec48033de6753ca76d3f495a6eacd0d0710f5e8c0ca562232fe4dbece043b6d93af1366ead99ffc437018f4f97a347adf0379aee7611fdee4ebd41bd1c98c89014404c05f2d4ffdafa7b39acdf6faccc7b6aba9fff54c2e5319ed83523263e10bbd562dcf6bd5d669aa9914d3329e9876b18fb45d28bf8c27a65d3c4d6d2842377ed0c8ff4cd37fb3dea4a0741e68e86e3ccea0840d56e42a2bf5e8d5309dd80c324b1b8c7532cb4dc8fa48466639d7d00416d29eabc11f9659daa8c18a34e4f184ee764213ba9b8dee36e1b0ccf1b99faa56e77ebe9603f2f1b1f1c9d6fe5c6f0727bc1db861fc9a06020d99a0bc1b76861e6d2788b1cc21cde937ec7388c2b69e8c6d8dcd66b18cad8669d493359ca850ee80a7cf9379665a0d5b7d9559dac82c27467f30feead959e59d91d13e083f969ccfcd63c9fd4cca4887d1cc75d9eb9241d14146fba0497730f5585ac87081ee2e74083372e8d87552a39b0fd498d556b0e4032666a63eff7fde933c42589e4a42589e84b0ccdcaa0772f44f0fc4e8de6c0f84f0400b3cc02253e741d6d22b0f62bacb38a30c25ca78801176b0821df4e8200f1d8021890e84e88e59d6b9ec3aece3b94cefcfd357db69a30afa5f99aa34bc5908cbb0932397b37e4ace6ab38338bc190b61798a986638cbb2399a588e2cf6f0e6bf403ad821074b7240864b212cb317569b032b84b0ccf8e9cd7fb118b0eb64cdcccc75cdbc2779280ea4d038d0be56ab4dea3838c83ae24088c6c10dd2e8c63718ea486f608325ddb1c70664c4291ddb600a1b6820d6ffac5dd9a0067264cb53032535e0ea7f5962af81471b9377b34a2e9341461abf91d1814e8610950c1e68f046370d684083acbbb92cbfd7c0ac49ec2325b3631f34f0ee68639a011bdd918cee38032cba6767b91914e919a074cbc00e191801637b6b52d81b634947af54fa1864743e4686f16bf67e3f63b82dc5000b25510cae8841d6ad956270020336601046f4b0bee611db98624dd1f7d5571830e1d3c160f53c30f06e1f18e4d0f1056ff40bb068fb029feef92fd8a125a764499c5f5f09194ab088f3534a7cb0921dba4b2eb0a36305532e50d2fdc5920b62565faf0b660bd868eb7918b9055f774755a905392de0a1fdda8d0578fcf7812c90a3bb59a0040f3d0f0bb0e8eee6b0e45890d3715ebb6d92053cd82a061ed253a3c5902bc796470c2462f8e0ba758fbf8a81c30ac8e8389a8f9fcb14af608aeece78055caf00a5319dae023c5a0565f449055c74f74a054566b5d7664daa00a55b051de7efa4808ee699e93a5933f4b39ac2f0228c2ac210220c1d5000477767f87eaad22c28250825c8e60fb2f983382cb9f941287814f838411bdd4d57d9bd0bb5faa9fbde7b3d01ea04d1046080a3b31494fa1df6d7357392b92efcd9ebe341f8977d584d2632810f30f200430560fc7cb1862fc6f8428a2f56be4880176778518517305d2c998f72cfb6528a41ec23735224e2394b7f54e6a498a554f0937f338babd57ea07898a98a66ada29ce47e7d96f47e7f9f7bec2353c7d23175ee948262d38508ba307591002eeee082065c4cd1319b295986e29993ea0bbdeab14bff2478246141122792fc50022b94c00aab1282e9b59dff28cb6cf65cbf939892000d12644182224800812db8b045175bd46cd1a20516b4a881162dd0e2eb1865e6a4e855fa95ddafabfcd86db6f9da2c43946759279de4ee1eb3ec927eaff5fc405954218b2bb2e080288b2d0b058ca00a23906204a7b851c7d2e7a7aee41c4bee3ef6c0540531ae1657ab5589c2f1eb102cc480850cb0f0b010a2e3e85556c3349aaffcfea6a4e3ee8a325c91c61563b4fb10afe0e10a13118cd122a011410242e085ee8e3fce655a2d29cebff4537908bc103cc08a2b5801042bbe8e93f4f7939ea9cf3aca1eb3c9435f5d521489f4aaead28a182b72a8c20b1db394952bbfaba9620355f054e1205803044e8020091000808a235041022a8ea0a2c7146464292bd9fc7c6506ca1c67eaddc4f95ee9e7cd27e85abf1647003725009b7d7ab45bc61227c31d955b06515fadad74bee751fcf45ea9913c52d84d41640a97020c52a421458ea468b3058db8159282f2a1c430cd7c33b90dfa80f6010378a0091ea0810792f040059610c55014a628ac0eb8d101197420490784e8400f5070018a1840210507058e088a1a282a30dd63b53e33f9e359ca8fa76ce740f80fcdee28e5da8d3aa61eae28cf6a7695fd7fb8afb23fbcaab3aa4a3d941ef621efab64ea6f2a25efabecbc72569949765ed235ab54fdca723eda4cd1b1f5b2cc6deeec26bfd3688cd125f6e1f75a17f259cf56e5d7fa88746da628fd09339e8062002d7a62f5c4a8bb639513890990ec8890d43831062770e044e804e6c4009ad881a809254d107197d453df5115bd1fa94acc6514cf523e949ecc2f4c6bc92f52748c26ebbad7aad4461e38b7bf59a43e1f7cd0884baf36257dfe7dd5678a6927a4c90ee5cf651cca8a3f9419b4f58239ec3a790abb4e663ce5acdfc94c3fa9d5d8e0d4773f678434ab33833fdba021b9e3a39499114ab641a10c65dde477d8f53c99f085b00f132d31b48410d11dcb15d012dd3d395006f6a8ff95ab7925e758ba4f77ffd0220e20e1804a7763ea479674db55769c6d3d22849912ce12b31836337323336469b099cf364866c8d27cb62a6c7ea881d0bbe57d77cbe3f2bebb741f4a63a81b5ac02a0c2b2eba3bde4c7d7ea5db4fc7d4390d1ca56499578ae299861d47419f9b294ecbe51f2a0a1a795f7511dfc720c6ab19d5928e1a4dd9ce7db39eaffc7c56e9617447bcb9cdf2e62dec46f7bd2b715445ba39cfd2f167abba5101d1be597b67403baefc4ef30aaad11dc130c022bdfacdad3d81289fba12d3cc86db9a91c88cff86d22b65ef9c44f693e26a6bb2233c4461eb96072ff1c14ababd6bb7fb38eb383fdb9a3ff4cc9d6e1baaf52c33227486d0603736a59f217c86603940a51cac486927f32aedceedc03d75c70ccb9ca7947372a09b1dd3c96f7e7a769ca7c76d6e74744a357e43e3a71e1e3f010dd97120534e158c5061a4eb7884e24e4a1f3da62b8fa94a85641e1931c0b784ef8aaf48dc2c297258721c965ce6a478ff93cf69ce69a0e7927aaddf65be99aafcaec68ac1a6117641ece7f7a9e3cdba5007a2fcc6f6d43c2a0c66959c5ffa5cb693ca2f94deaf7c842fc6ff5b283fdbcdb0b4d4ef66524e3e4279218d660cfedfcdb377b3d923a33d273c156c3bcf601ddd6410852db7f276e8e4c8957a5d195deabeeeb6d9c12e46c88e98722d5549ee51987a22a1303aa6e0ff2da6e2a30871dd5128a6a3100f4ae0315f8930ba513f7fc6b448892ca6a0b81071fe4a7259098f940d8af26110d3a16e3aff6a3eca320f51be3a51215a664c21d01db9277048e6acd4abd51edbacb29e63b90212713171664dfe7cad523cadf7dc89dbc1de3f224ac9d11db321b9932aa3534358e5a5944a77cc663a9b7392d97a826667b914e9ef7725d5e8f6f5693635ba6396614f569e6d8a0e33dd8400a7dd76e838eb7329cab9b5f9833e8e5ef90fed83e6ffddf0cfd364c384c1e444b3074d8ed6c0f9b75e10958dbe435159e90b49ef3d8cffce291dab1744612edd62c7d4eb05511f389f6eb45e9046cbdaa55100b5469c96cbeff9d079998bf1026d182488904ce208201417a8aee3a9a7e7e7b56b370f512eeb10112a88cc43aed17de33ec44ce6ee67e6188772d5c91015ca95a76a96f8b959923c92025915b211644874bcf65123e958faca768f724c1dfbb8af9a35bb38993f57a5dbfc77f3494123b4cb0080e900935810986337c4947a414ef3cd3ac5d87e95665b3b7f22286e019595ae93ff9bbf8aca559c965b654e8a3b7e91866c408e0d4cd1ddd11b655c963fb195c552fa6851125a48028b248240a20e1112688890b8020927908847b871841347a4888c58f2e0cd28fefd0bb9dbec587ee7597afe5250a4e623ef3a9c759dc432ff925fa4f851ed6fc63f3327c518b5fc3e1ae1fb8e92dfdfcf73d086232ae4f2e4f751a394ecc19bb357d14e62dfbf5086e2f5aff5918f3cac1257f91ec6be43490fbb6aeffdedd25cdf9fcb46a4406484aabb6396adbd9963ea577660eaef0ffebbe194ecb66904003cb7f63483afeb24336469302cb50f825911150145113edd1d5356507a9c34a5a8880c8a18510407223c2032b3cc3b70bbbff2aeeb3aa9e151963d97e74bdf4c1e67953eaad4bb9f7fba3d79c41ea85daa79d749a19ecc89f410054121488c88656b7fe27c39a40ed110140c991bf58eca0dd575f6fa77965b7961d7498d7a36cb131aa25318271da03bba5b032d025a81082803f500a4453f4b622633b96259f9c1664f514c7307ee642b1886c114120ac41ed69bab5c79b6a00d3599f1ab24e7367b160ed9fb65fe1894daa3e2478ae2f3afad964b553a1f4b14294b5b1db4a16f267f0cd6980a145bcbf9d79f214ae26a3fd02315f37b10b1687cee63708e5220aaabe99181f9465c48aad6f056db7df28106c019acd209badbc1e9f971a9444409a66481eece568581b20db284e8426718b38440d2b567489e7c70b543f2e47848eef8575be31ec8f3298987d0a454a54f490cbe4afa67f0f39c27db2077afdb779e82e2afc9ef889b38f10283ea6e1eda9af1f1cb0ac207dd7ef97cb53c2bf9c3619953a312f4c9e7aed350c670fd3cf43ff6625cf789077238e940f70914274f705872489c304143779b30610531b1ae3088e0f2f736357252acfb64090e74770e2747ba4f421feaee1bac206cb0825061050949dd272b154af709d8dd1977770e27b7bb813ecb4cbfeef3284ff77914d70c9d98883436eecfe50aa6e057a1b890fc6a31fdd9d9892928feb3b353e33f3a1eb1f7995e1b4f464ebec6ba4f6cf5e93ef14e3aa11d9430f1e93ea1dd279c92c648964beeee93d4c9f6dd27f3023e64bafb4403406dabc5a55de593197b3477370e2626272d9ac04af78a0656463dfa072dd8e8eeee113b104677dba0fb5d276b3ad9dd37b4f5438c1501582b8d86ee36405b2a5dc082a5e2041524582a42b054ce684c22614be5eb0c7e99a5a280fe6aa78f70ac1f4db07e2869f76aebc84e10f760fc8f73bd9debed5c3b41a0d30950f7c94f779b68a0fbc4e7a4a7bbef7f9fbc4402d0166988f421e9ee288461083778b022421abafba408139c40060f5680c2088c3083111c9723e2e86e931f9862d4e086117060a0bb4d90a4ace488a3072c44d1dd372851c10b7c10e003358074b70906b238a2070b2a4c6046779b54d1851e522e0e3231e86e13015c00098f060a5614a0bb4d76e07819431b9a65a5bb4d948840112680034a1be8e86e133a8a0085142b4081113edd7da27383812c54e1a38a3374770f055cc106189270618613ba1b005e90000f93362e3608d1dd275828c308965043123a8074370e5f6401e8824b821256e8c18435ca23c62c739bb3cca0cd8ea059c66b6b620eb3e4b2f8d37afe2a1a6fb89cb2d8ff16de078dd4eff21048bfd26bd5f2449b9f3bc56c669bf51f827ea5f846fed2af14b94c579836317522fe61d9da1be767db7d11e38c4ec786a49732243d14b7f9f395cdf13f42819ca6544b51b21ac752f57bc96594a4d931556179e83b70ebf19832afe4369a2274ed2a7f9dd25e5b51fca31ceea466bbef354de2881dcbf6f3787fbb9f1f7c5003f3532979ca327ee7e1a3b0c459562fe88116251d7754e69f5eaffccedacfaba53e94efdf786512d97565473c68e4f1a73ccbb84f81896901a26d17c5a73f875dfb2bf1a5f2f394ea61673f144c53382dcb0f65b38e7196f9fc8d8e4c78d26c525a2929771444e1bfdfdff8283cbba7d5c7e3086f19ecba9f373ba51f1c97d8e4b3a26c87729e1ea00c64997bb55809fa95aeb7137f76763469b39b7c4a9b25656b6f12476899cab3ac52fc9bfcce6795af923cee61f0330e1dbf4a7e87c11b8f59cdbc931a1d6529d583c8f0661fbbc470a53f3b3b3f3b3bb2a3a0a49ff48c26abf198fd4a95cc72e26031db8a29cea0f5e89ebd3b3645300c57eb1887554e1abe50f842188661d19b4318a63b3645bcd61d9b224e3d7bcf02658e879e7ea59f88392dffb661d0e957f2f085e2a4f885228661580c65f777ca14f626c5302c6b3c853d1cc317f238645195d2af44a427d24ffa7da16b57d8b6d9787f4aec387c2222fd2490c7ff422056f26e16c33ecb88c317bad129d500d5cf52ab568b59cc96c1ec69a692aabea1f717e2325dfd63ebf42b610cf39c7e251f8c7e256c134d3e25c7b0283b6c7e20a65996999c15dc40cc660cbb8f4d89c230fd0afaa4188671553af6bffde6e10b615888c226c5c21772cf3f84e3c7d87dacda1a71fdb9f1b04af0621b162be819ffecac6f3666fca88dfe34f9d0296689f9a493c62cdb012a11f9712ca62aedb60de4b03bf631ec6e1ce328a90a3b1339b46532d396490f6d9904a0adb6a3ad76425bfd83b6da066d35176d35156d7597000744a05b006dd2431edd4d455b3d7e687ce327bdee134b9e88d868838ee9640799e5ac251a99a54d1efa5c6d0d904a10d0273decba70b5f3c39bffc7933cb7260d7174635b6379568f63ed295b9e9ff93c335b9ef9d9f2a4288db527511a54f2f042774f2189925f2d4f1e1de6b4cf9ed5220ae4324dfdf871e12f67ceb3fc5cc8fcfba914bdf9822a8aeb6f3f5de2ae9379ac6058625d27310c4b34a440725ed375b226662951200ebf6e5a2fbcb9de240001221d2698600c50a4f1c607a4a883480d505e2020024170d079838e1dec2009187560400fd1199a203ac3195f69574da12653af9373c2a7463903ca1ddd6d062698818ceef6cb0c48cc50a4fbc60c15e84e4131c30ea2327ca0bd4dcaa0c41d65b8230b1ddd66a7a3d5f3380bb040811d2a2c2c2d2bf9334d433faba4b903bd10f41377f0304b2232a4a03b148ad6202c5185849aa4a7370711411ac311bafddacd0360cc31b10a7eb6f50786737d959d20ce93daa0ebd261c547988c9d2050aad2f96f5393a25b0d87e0991190ccb5385d273b59735d3a5cd7756158fd392987d14f621fbeaead7b3c3b9ba3c9fa5847b50a5a6ddb6c67ad2694b1dc38ad82b2c31ecb435fb3d0832cccee8e547ea3ffcddd033dcae58fe66cb33ecafe372cf3d2ff8675f2bbff6dfefff6d13cf38ff31b4631a03f42f15d614215e4342ce440c792ee883f9ad3c0820e8e8e181a3a4a73d8f1407384f18ff3d13cf35f98b1076fc6309559dae099d24f7b7fca9fe13225c265fa5dcfc355f0a9c20e71bc61358f4305ddf8747ffe636cf5358edbdd3dff817a66fe8219dc66827c4404767fc2c185bd1b1c42f7e1c8314d4a053c1a532a90d1dd910a5c9c1f76544099821d535082a9ada94a3dab553a05245310a263fc6a3d3ca4c0464b810b9f540a39f1fe2605e936af6cf7061b6f90aaadd9ef6f6fd860194f37a2e0c614dd71e7ef5f8913bddacde26979a8fc4efb205bf1875178a3bbe3073ace94d370149e8882101ffe8b7fd60f51dc65aa5295fcce470e05391a0a58c46bef7d215028020508c436f268434996a5842894140e4b0ea50d24dd1e6d23eb3672867eb6d11db12ac39b95f70965c451d85df96e6d1e7a42ccca9fc043f7fc6b6bca0978b413d898c07cbae304253d735d333326992674d104249a0044139a8d2eb0f1051b47d89049c9583c8819966eabd4312ae5033d839f5f9b92b1b88ca3387d6ee538cb22138098308125706109365802099690638712ea50c2154a8859438e3592ac71b3c60292308424d824408025662b3e2c3e0e84af5cf0f39bb95cd766b13f4271e6167b36e5df4c5295d7703905449c1e0844bca34e763263a9498cbfab205602ac1625375a679521cafa0809234042089010e408751c61084798a2e9ce6fd2330a04f2886958e53c45fc1343f9a19ca52328400d32a871861a2d5063093584e8cce737128ae34a339acc493e0e84ef38104e133369042218a109232061842023341e929e8f0f4a4f9cf3871837eb57a6fefa288f30b5298203e620020c885002224c41048c083a0c018e217c60084b0cc14508720821064248228492100410843282c045e6b3faea194fca7cd26b55d6fb2a9b2291306976d6b39d8cc781709f9d8bcb74a5d510e74f75e0f6576a9e1f67612dc524b223fcb93c694a56e965af22b90f1167b8be0d7ea0ccd2211e2bf5cd76ff1ebdef51ec997af5a7716cf5357352fc28873dc73e5e751fe5fd4eaeefd99deb3aad6c05821840d802081848830c6938a189347e40030d6858018d2bd030020d1c7e604777c798e5c718566df658b599bf90ccd735a94de69b4501bd59afaf38290577327fedc9503c4b5941e9c99c14b1bdef9af657aea43f0dce9ff24c31cc3175c7be5a9e24b210e52f2537da4c1e8534dbcd17b2aa4adfa379e6076974ff208c1fa47eb04377ccf4bafdeb67c8718692be76cb408bcef0e96e94cc67e4d0bdbaafb2662c996660d151aebe828ee5ca0caecd5069f905dd5d22430284ac3128d1e1036380802586ceb2638d3ee9644c90c042f23fc7dc4d49d48e911326ac30bc713d0f4854219150425a0f21dd3daeee1e417a00e9f1622788c30001bcd2430a5280ca42214298a48061d4312b518594adbd60e0c1af08f4e00305261001ef41021180c0031cd0001e18a0800528200108d8c1da41b4c301da0407130244e104cd811b071790e80201ba9b870b7774770fd143b4cada421bd61672f7b59b766d2100ddc3003d0ad083003d06c0435b4b8ac8e9ee2515e8eecc9704008fee3ae0c8eab88118dd8dc13ab0a8e38954b5b410861e3a08a0bb470edd3d02d003005a3801c90297851f8d5fb0f0c4cbca279f0e94166b0e2074376699c35bb1e618cd7143b3e0e07f84caee1e57f8ee2072c0d17eb9c84104763fce37e2d1568b95709bbdbb478f1e27dddda30ddd6d627203167d8317961554f08d3f99b0aac044874f44ea9688e83e59c3891a5458365b251ca3b6e090405b70586d5d61bb5b01047863d4d61b0f68eb0d02b4e5461bda72630b6db9e184b6dc10425b6edca02d374ad0d6154b68cb8d0fb4e5466ecb0dd9961b3a6db921a42d378068cb8d1eda72c36acb8d1e6d45a18eb6a2b084b6a250467733e0000b3840045a010580c0027ae070d2000188e0f0badb254df7c91d64c08979c14018d39dfc43a4ead0cd278708a54f95dcc90b55f273ac3dbd3d0dc958fa6c3da92b75ac3d8d816e986689eb9029698024cd349dac7122869aa29dfc23149fd8a106143aab8d35bad8210c55a4a0140102324e11e38fd2eef3e4afb2cc1fe59f07a252230be4117bf6d16c71d77d9fe47e956596652e24050817e23f3810febf61281e847f3463f93b21291fcd285a27352c08f7fcdd8f1f3eca18bc5996790c513e4af968765be71fa19814765776d4abe025e56aef966558abd57e34bbec322acbc24c33bfd45a0a7cf45215053a993dfdf74e82557a765aecb9be67bd2f1c618a692741293db0de08f97b126fb6e4317ca1ac81f74281b8e63e9eff58093edd9ea58420ddf723feeb791af878ac2cc6986fc485ac781033fea80c9bba4fc0d07df285ee3639e942f70917ba4fb660a282ee9ea2ad2434a161b3be90265195729af4489f65eee93a59931f68feb49090c77c4ff2589e8ca54f35c5cce35fa12b3d4eab8f721f38d777203c3e9723fe0e25c3eaa2f287796121b1d0eca2f21992b7a83c0a6149abf57064721e8080a66be603d9d4642c7de6674cef7fdf90e7c996075b9e6b79887cb53c1c96399667d6acacce7cfc384551f2bb14457958f25813e7a348379232965b0cbb5c392e5529f591cd54ae80dee4d1033fdba0d85199eb3bc6d947ffa8cd4621ed75e27c999237eb2b9b73136df7325f79bf825dce8f32a5a078967d4aa2ae4cb9748fdfd10d08c7c7e4d7fae78113671987654ed679ece48fc74c53505c7e72c76396dcca6dc9339c3929cb3227f995dfa3738569a6cfe14ee2780c3b3f790ce52aacd2e62fbcdaacf657f7b355a922ee02c91cf785aa1cfa798353aaf7b56a3593f4eca366371e41efa414923efabbfd953efa4d02918af41039f9c9e3ac56ab433ce29fd24b41f9f14212e5d74fcfcfcf8dd79886e8d1018047451b99761f10100f82f040028deb9039244fd7e7ff71e63fcfaca00e6aa61e8da94a4774f41ecdd2bbff51e9d2e3a4ee23baeb44fc77865556ba132b8d5855724c63ae96c6f7244f8c1efd8bdddb78cc328fd223fe6c7295ef45214dde8eca6d85bd27e23153fbe19ffe2a8b0a3bea11cfead8afdd30fdb92939294b99149b2899f7f9e7c6a74449eee7a6eb64cdb2d0fac9e6ec258fa3d0e6ffe47b3687281fa1b895463be939ce529556f0fa642cbb6c86e459e69b2d65ca42fafb49fc73833daef895f9ac12775de62b2d401ef5d77a2d4060567e849ead3683f21ffb083f969abf672be8985e3d363d27ffb9196de12777aebcf6f37ef575cae7463fad67b8564ffddca4643e42f14f7a3efabff93455dce6c77f87e44ea66595d52cc6d2722bc7258f1e577f6578cbf2933b3cf33195f71425a7d94fa3f7f351c6cfa5287729ee3a49753c4e53f8423fa9ea27b519a8c32600438eee060307dd2000633a18360d860f60e4d023cfb6c35fb4d14d637d11c6fdcde68b697de162797147777b4146777b81c4afa02ed860754106ab8b377a341afd9892a60d6d08bbbb88b6bae8c137f2589e0fc7e607a7f41d8aa62ab8cdcee67091e39c25332c2df0e042a6e37c8b8b1d24e9be95640a561236badb87a4778695240c9f71bf6e9268d11dbed0576b834b768240337c22269d2050921c3b41a0240b882f941fdb09e2126471ea3a59136fc048760b246c3146fbf5438b2938a6c50ab4885a4880d4dd274bba4feae8ee1b4eb4d04c78b348d67e882c54930d367fb3d87f613e9d60818e13356cba4ed6646b7f6ecf1c92e692c2fcf3caef340cb3f955d863d867abb213c4566cd18d55f07e15acff18c3dfd6145b5b530cd1d6143fda9a8287b6a4c8a32d29b4d0961453684b8a34da92a2066d49b1c51311680b4917da425246773fa0a574675bd787b68ccc81d3dd435fa01910c44812da32e281b68c64a02d2340b465c4a4ad8f0a6d7d66b4f5b1a0adaf89b6be9bb63e0b744d514c84219c08a1fba40b4277dfd019b49562dd272300421add7d82c60f0230ad27b89002ff6f8f93b1fd308c7ea5bf6de8fea477e77c9b393fdb20277ad0dd38ecaebcb1f634ffb30d1afa594da96aafe569220b4d88a0bb4da7268e74779c55cab859fc75cfa58428148fd8b147eb3872587225bfe1086b893196f096c0c0122399a58dce75f5c90e8e700049774b3f31c2019d78c40e8b0308e8c61e583d88201c7b60c52eebc8d763e6884adbe054a0adf08e486fb60971d0032674f9319447cc1277d26ed5344de1959e070261d975405d574a758fae9335e0fc3a649aa609c5074b1505be317c21ac939acd4204aaee76892b7185d4490b5459e066ea1bd40056209e41288d2c4777a4c0192f66740700c707dd0130e11eddf3bb4f7ad0dd267dd2003ce4ea40a336aa4abdf36c6b4d9c8f12e2553a968f921d972f45b9f4ea53a25242f999ec18382c736a3a19648d58b67645a3eea0bbdf9377c8ab2c4a52ab8be303ed4d3131a48259dd8f6eefb3c9b3b94ace07c37450c20b4a98d17e2961855f4af8b45f4a40802e69bfe812dd94070e0e0e0c6efa15be9095c22345865fa9cfafd4c8afcd0ebfb628ba3721daafaddbaf57a3fdb21e49fbf536dd7e7d0eed171b7e4d2efc9a59b75f53a5fdd2d4d0ed973604bfb429bafdb2b422969600bf2cd41a7ea1b6b0503aa81c304caad17e59328a6ebf84da923b74060787259781d17e651367a36ebfb03bda2f33fc8ac22f0b93e9f60bbbc1af0dacd17e6d800bbf90686b032e49e081f9682b0935daaf4993c0c2afaead242060210147fb8544187e5948ccf6eb083cdab67504922376b08c90c32f97b68c10c32fcb88aefd4ab555841ab0b68ad8a20824ac22bcdb2fab481b56110e23a2068b481951f8855944728824c0af2038fc926d057ddd3d6a2b48c62f6b081b43b8f0cb1ae2629d2eeba446b75f3764e0344fdd8db2754a9a1f35fcdc71f245f789173cd75581ee932e445c24392901e6d14c49906dd1dd265a64f1bf61ff1bfec7190116dd27570089e02404dd27569c540182eece215569f709158d69f7c91452f4a0c2ea51694f1b929e0721e3957aad051e36dae229a3390c5ecfe3b1a2bbfd6767870dd60e1648587e1cbd52b7968e0b744860e93861e97c91d6b4b7d101c2d2918045041d2928ee58e59e2b682f118b0820ac0cac21035c40719c82e22e75acfdf9eea3f784f1caf24c9347afcf340d3d8f0d36e1cf5e1f22f2d0f3d4d7c9b60b694ad97640581239652c757029e86b5eab14c8742dce7d3c2b88739a1ea8692f24517548c6bfb23a2c2d43eca9270f3d4f35cd0e48de9b3bf43c93daa4e856f3d0f3600ecb9c4f55f903a4b3f5e4c700b06eac30c9c1bab140e34ed2199910e5d5628a02edf447c90b964638dea1ae7d6c39cd2f688bf078e5f74970a27ef861a3d371ac8ba8d49228c6594d324523030040001000d310002030281c0d072452c17836741f1400015fb264b0589e4bc430ca2984904184000c00000c0000491003605eb978323810f02637b8a5a041bbaeb1a32269c2475679a73dec89bbed214cf1b9d93520273bad51e6abb573cc4d2360947198f72fa4939c060db0e3e6372fcaef9e75371067013172558626de8fbbc64afbfc22b873a7f417b26a0e702303c91d04773cc7a18f01ea3e3ba8d7ec92cd38afd13c56c7f0851d153f6cac6ee913cdbc9e0b8fb9c71221d791bfc9812ec1dc87e860a75933a271e7b458d5f6cc631dcc63648ee058f94e57ddae1ef7b4a06f2f3627d03660577a6c68e0c860ced88719298e7a017694da7dfa0e36eb7a5bf8b4295cbaff114a405af03ce59e107cbe5a9678bd632196f27c84129036d20f1a18212915a0adc8193122872d0cfee16088c78817726a46e74c3a0ce9f5dd91c7bf8f07c18c970807679cebd902ae2362173319c35dac5eca358c3845aaf71d107d75b3581f8fed9388b8dc4c77d182962f3640a53ed265a1e5b8b3dace4c53f7cb7207778cf9f9d093ad8a4d5a704fab6750b050a396d4f1a61a6a1742dfb3f04d73af0650e65a217ba80ba03fac1db9fd829d38de0620570aeb2301d49f67c27c60fc58f59906f6bf117ee8919471ea96ef53f1ae284730a624cc4cdf83136d4bba163a9fb5f65b33a28a7fe09b362838b051a5b7b80e3adac4ea1175e3c2a97af8d846ee19c37ba1819ef7dec2fadba23fc54fc230e1ec2002c5b0711ab8ddc970c0fb920de04a90c0e04febc18ed792e8161915db247f1893014b974d695c304240b1873f75432c64e80db31678ce0d44c649501fed869ae4888b2daaf7eb66bc9e8c3cfd8e806d1e45a5794e5bb485cf6aa2e66afcab73a89858efdbd75df64f5f42eaa2725b195080f94a10aa69d4f79c5e0fbad02a135bca497ea6c4e1a77176035909362358d694dd6d9482f516ccbb0eddd0560465d23daab108bb0ffe2989ae726531a01352371fc5d26a1dc56a6798f760b8dc2b4e7fa0e41aa2d99c4f7b4d80a3c27e3707928dd69ad038d52df460708a164ec49f892af4ffb4d7765e9e5ecde97a07ae184b7e8e06e59d0856f7af656afaccf56b12cdde371e787581329ca1aa9f4983bb4d13e5965b7fcaf47d2596b2031af9b7c9354578e8d01f2b75378ae83ab0d26c525b18d1d874f4186f824dffc195fd1b073d18b9b0c6fcf6cf95120c52976d44ab5c5b966087fe60550fb1132a7857a6df1e9c5c7a7aed60ef26ac7531f49495ca4901394d9fa1308cda942a3a17739dc930741d244685af9865511579270e18d036923e27f4c2cf31f58adf867329ea547cb3b27df896b51350958ef1a053f1b6427a74a4d8cdc3af1fce15fd86c474a8dd15f7ef4e162401235a8e9b66bac5d374451172629633630f35c62ba7e3932b5b4e013f073ccb6432df49d7a64b5e209a32d0858f131c0ac6465441db3082acf215dddca5875276c9177aba26cc085f3d8c911b8d5f1a152060382fbdbfc8db11e66e63217365382ee1f0a6bb2cd86f9ab4a6746ba430afc64e605700353a55dff79f5e546b51db84ab9de3c9c27f0107a4d1d0450664db34bed2aa9e34ddde9a672ab2ff2e8fdb30e47ddaaff6e510f80fe55b60d3507fa397f2a6535f2ef2d7b39edee86159f6e6eb893722f458d58641fe21e192d641a757ecccf5cd34fb4451c379807cd869c63c33283708bd2e17d16e49ca9d7884b2c51a5445aa7f2e3f428c27d320db492a663c654939d7b7af6090cee5a8c088782fa4515ea1c07bc5f849f837b1b1738476c9dcf7ef90a7770895513b01321f06338ebdc7e75ee99f8f60b6738c041286a48c78d841ea14a991e6358e9520cf6e8130a0681f83138938e11f222ad5fd2d2f5aa9cb65b366e377d5ac209cba38d01da2608facd66054f032d9afdf248eacc44a1846e368d4433c880b093a2fb0bf607f418e4d22e73910deb092de25f87f16d3e08799a77b6e138aa7cc2ea9d6cc1a63215b3559a261e0d00c935278716c99ae5a2b196497ce6ba763d4ee3e4d382405ad412998884195acde6658e3fa2353fad1baad75076ae206b990cd9fcd4315ba7786f861c9830955d978604ddec6d8ad16cc49c9251b997c61e709d213f5d3e27801b2df90faedc6e76ad2d34a1fe36309f331c6127c02b26899ddc0a8e53c51ca725c0530467723c3917a25c69e79e9a63947c62bd370976532135278ff27b716e753d6d25b6402ba96ff3001d4b7c4b4e5c418eb19e1bd06a77bdd0d5787ab972cf74faa6db55c5417a35d6701b1ec35b7aa985948e661a62a2a6a206a1935824a3d444da3fcd2ffe93868f699fc4bcfe646f8ac2f01d0b10f0b381384073bc679ded3cd047f5509c5858dfbb2bcf60ce78d4e9b17a166a74078487a062ff231574b4d8aa0f030fc1a232aad713a42a3d4f302bfa9ed8948f30bcc033b119e2835c0acc6ca668028b0c8593178cf7d9e82a78e14f7436a6d88ea850f085e282c37af27d3dcb40bea2c10247b702e76044ae2cd2d23ffede310ada2698e267366d99c4095021c168680e23d6af47992b0cb80a1dc5db49c12d078f35cb9aa375d5eda0362a3901967a68d07968655c3f575c4e670bad0e19ba6b16741e97c14d0a13d7a1a19222e1c5ce00a138b6d2896d9c23a8915d4a5052694b8960acc8e0fab2f084aa76647ecf410ceaf8ff4ae709b4a787750477efb96e764ff13f01780c4f07e26110bb08ca0c34c57cdaa99df384f32d7e4565a493528ff171644d578c5a9a666d914a1ef71016132a4f536b8317182a7a46d82dc8cba1c2651fe1f90e1e9bf9bc64d479304b5d82a5adf183be1ee42b7004efffbfdabba8e3de1d345b4e6c9af5161aa5b33e04f0ffb0f22e593ae8dc7841c82d56613ec8ce392abbbfaf287a05c7d1ecb896a7a73adf8c51de12224c365ead100203820907e39e98f50f370d1d31a83ffb9ec30b257fee8e4ae659356247725cfd8e3b39aa17401f1cd8e02dca4064814b0fd0834e1693e701aed9fb203980b0e1151cf4e68311213d45c7499d4a69d76c6045e9109315a6c0636a2ca82c8113b3f760d0ed78e63426423f32f909848a328f2015bc03697d3597808bc4a029cdd976af5014ca115a5b9bcb63d9a9bcd98e452005ffe406d34c721d6bfdc33016fc89e2424279dc3294ceb7087b756ec458c3959549c419a4e46ad1779f9fb4eda88fe07ca5306a8794c715d99f4a7b07b558bd5af411715b99803ef214f375efc9e47c6a4c393e2b4469c5602acee52e5a4469035421c0ad4e6d0e1040b8989d0883e15f490e0b99b00724f64205817b8e3c38408dcd57e684864b7edef86d5524bc9186c6fee9a6326c2b1eae99692d42cd604d23d6dd90b3a741b07da28266744b0c3fd6205804cb022e9e5c939212ec1ed68857164cac050d0e701eabc65827d4494d253c024188b0b194fc9d2f43c5dc6f4a38fc4b08abe2309de69ecfb6fc5fe367ed29913a4a7f9d5c3bf2739d21d67aee29b6e8aace6e4ab8e1d9f76f82fd83139356143c88a4a818fd38b9be0599aba160a86d56c45e423db725b5b772da33320d83231b6c5f2faad46e317b19de6d26a2d7c398a21ff6377521f7dfd14508ec27048a9c7525e4a160317ba14e95bbfb28ccb63721ce6f049db8242072204ad9de4a12de8e1116ca03e1da82355f6832f028f6cd361b86a260f813b318f9d79fa54e529a3f1175f5008bc646e38dea4251dfbd74c539184b24a3c37457297e865c643d031c631fc4af76a1f7242d13b0a42b7a176f35660bfbcec53486e7286f9d124df19f428d01c9b522e5ab919201ef2a24624f7f5391c1030dc0761e6ccca06155f8f68bb7923d1d3d40ca354b515536e7e3be283f062d37ec1421918e745b50e5e88b68dda17ba6eec17dfb78ff1c807968e8e6144b67675a85e89544beab738c63fa0176f54ae2c8629256111ac86ac45bed1460ec363cc6e4a75e9ca8704c18389c3acc8de851b4035f7b626590c9f61ddf8eeca097ce5fb9f7845f87e1c4296620e9abe70a7d4b5ea4131849570378f1c407691333df37844d05f5a8282289ae708bd0b08cb1805b2be9783025d01403c0a06e9467eabceca7a14347df2236cea3404833c3e0a9eea3e8bec5bc829132179302a36769ec3666fb29129a6afccaa76b69471275c4866e0849cf050385a808d1414ac9229404da2267b853413ee98d4244096115701c3c5643e85db69313e1d29a1cf2970e8363de3acfa9bfe02832e88e95d589885e28ff5472abfc54c10329d288f5bdbdb7f53b0d16a94c684a43c1d30174b55eb16bf05b7376b5fb6fca12009102c350f647db71c9635dc9d217358009ad1f6a05fc7b4d65f155bc32b6c20aaa09e1a32ed77d32e5fee6a1591aa5674957854f50a52c10568bf42ed193c6256d5cc645ba5ce3405586004048f77a5b9e8f54a0304a42acd938f0f50674dc6e748214ae60bd93e58f7b9ea487556972d4df856ad91d18c690f0c6d4a6c2817e2e19873a16199b3603fd289971bd4bec2564e8c78a9b1768afafff72570c2777bccf3fab2f3b4644c9be4bad9646250692d8f35542ff5b3593965890c47c8d1303af375d4fd09085c1c025697a5933bf8bd7b2af68fe8e8ddf17ebc2ce92487d017c5d6a49902385578520f037a2af90913ea0f9b3dc456a8535025b686df87d0cecc1a32ffdb258078c960332105389907c9c1ba9e9578079380d474f2403672619dd83775c9a34ddb7c2e10c4dafe6b78b2a2632750a34890625a23408c1e86dc6e28dc901a4c32704aeb7d0c1dffffba3ef5e1ba50e4221c69f10f50284e2382035891b0acfeaa8a3b6e32222e5c775169fba49c1a6e846799ff83526a4b3cd02cb47e8b8016b31681a64ee205783d12dea44e4f58350135861f4d0da8c26c133d6310540883bec1527aa95ad93a8e5d2d13f4af680ec37119f792c8adaaa90ca3cbbd00d8ead915d6f1fbacd337b95ac3c14fc97f40ea05ba309f248e4d32551a251e8f864d0ef1798020da7b007385a264af3916f89ba5387c551d033826142c9e656775590973687b6c2ae94440813cc397d0d2658cb471336d5f712ec40e10415ce96cbcf93d1974551d30180acb067e4661e56c45d67200f64d806a8b8777b28596e697a3747e0424b63c120bbd06672827a6e0c3c937b4722f58e03d0226ecaeeb9527b37db3987c69e9ac45c8ca369c71a9e55642b337728e2ef96154912bc9ae856711b62c8c291f736f267d0fc4259e3dc0d1c03b1b6184b8000d2c9922fea47384e1b58f69c6c51974380577ad8b4b212478cd974add9f0d7aeb39414d2ec31d7a9d09704812891c50ed15d0ca1a675f6aeeed2bfb3048dd03cacb4c37d4c760d8b07e7de0ed5babb04093311037e8884b245acd1335d7335b61a849dc889cd68a5a5ac785a1d23b949db74f69875355fd94aae5c6001db047af3c0ff8a37315e0bbdf1004f7934c2e15e6499e8c0ea5bb3911d00cca4ec0e228c88ac829c5c40b169d533d07cd0fb477bb2c798b95dc20296ebd7b406f55ddaf0b1329c5fcf657a65380cc6b38e1616eda341366117f5a2d79de9a528a189edb9f507a7dde21472fce0df55c11e0c507fa89d2e4957da0226472d4a2b3b088143cc5ae6090d68dcf01aefab0773aa729e0236414df6a22d4cdcdecca361aa922d15d82a37951d55ca215f2ea4744e8f2dc8cc1245a7f3abcaf7755a7342b390af48c00453608e650da36f4fb904356da31cf41ef076944eca34a51856f0e9cc4b589ce024610dd2ecfff04b8ea1b16666123be5c1d91dd024f4f88bca8205b9b982f8f2cc0dbdabd40d9b083e51e43105bcad7b243a223746bbba559b6e1bee716529c73efb8381b2a42038a2a224a02f87bb5f7977107a435aadb31c165dc96d18692992efd739623fcf16128a69d9c4ec16263227f3b634d6caef74ef4c4839a9e457651218244c614529493f736701a4383a28d5350c7c0655797c3d0a55abc47a65c94707c79e554007fea3fc70dea44fb95efc35c58b17e38f9829b80db4135b8c879cbe11b852a956f61c3fe8f7e62a154127e8dd3cf741d408ad980838bfca185e469292d9e0563c71a89b9468edcc67faa6d01c60626d697f65ca762cb52241bd52cfb5297cc01ea586da5847cacc544ec0e5bbe4b6f759f2a0bd02570a1f77ae025a2ef31f50342be8e0028087d14862440a20db79caf6da27af72c006edb0063d4187866589c27bf5f74c2c2b76aa6155204d1969d32fe03a306ff7bf2c5087d6d1793522713eac9ed68663f0ed16bfea6f50f466bc70dd97362370903deff1eaafed05f6806a512555f6a78f1902d6e1e6fd000fdc65a56af46dca06ada95ca3516d16d2a15f01efe771a578c219633186b282449b4d6d4d201197606de907d65bd48911359d87dd1b5498a34f30cfbab174b0b1a8bc8674521fd211c3202bd6f74493b01790b4de8b0255c9b29a06c2927864fb8e9458d5aa9468b96adfe407758dec19715134f97d485ae73101daabafc60ab9f081a18c81c0a64649499d342a981ae7a67548cacc55aaabcc5378db49772784cfe4e00f7dd4977e069442e87d6dfb7415351d0b34400ae0a1646395e2f75553cdd2336c5bda02ea77d0bbd202c835bc39447381544c0a8a6816fa294e390d7b0055d8ccad92e6c6e195c47212c130482ff88948292b7a07f1fe469172d99f0df12b0ab86e624c6fd9c5f8082c0628c18f1b307b09aea63184ccc2337a2135c88b43bbc3fc58ee950145ae96efaec9d8ebb9ff3214c41a2fbe65ab9e2aa0383d0a6f28411e4bc9b08b88cf202531aae9985b4c2f1ac7251b5d6c7c681be9c3ba18446fb1efe494e9602c99b31407b0acbc9141eb212b3aa89ab4a7121a19d51fa2174496491773884a72c230afb8b93a6a1071dc46ca2ca1aaabc3fd28f6f5edb39b7da8560191ef8475663b89b034901ffe558de5ade258aa3134c4245f5d210a48f9c98292c124e2f5b6d525bd6e64f74c0e1bc892a9f84a3a183c52cd9b50e80282cb720a70768011a3a021694c02f1c7255692ae1641d37f6c00560af767ffad695c9fd84de216c1169f90d20f4d513ba7df153f43ad8c7f4a4a6242e07201e3dbe128c72384abe93d3b4581a21e05a6481a9f3579932a603b7a105c55d9e1d3d4128496fed5ff185d8495a4f9f273f495e52be45b0b36007e44eab02624e5f907cd6bddae0466480f78e9f1fd3cfb75aaa17bae99593a4753657488eae552e782f17ba37777259ad7db12e4cb20e7f6544d845691e0194755694bfc833737423d2376d8a2b940dec728a143425accefb5e7395237956317111ee3140f7193625cfcc53f6199cfd84ddfe38fedc6148a4dbf42960afbea7665eca429d3f7f3b3028ab0565fe0506e65641d71c341ce685bcefefb4f61dc706d6fe6c21196bfb5aec1f9097c734989aca9db8b24b379d52871b72a482fb060655eeff095131e2d42b66c3e85e8fc4829d87750695387808b3fb10d729939316e1ffacbf2b916894104fdf978d413b4f16c9adfef9b9f028d4074ea2a5d2c574cbcafd7cc41cda4258cd53b61e896c363a588f5a1efd510562fe3243f6fc07c33e4cf38fce7ba59d230843acfa7dc4c3592bb98f8ba7bc43e4c1dc35b59d29d48d03bae95cb1c939d80c0e534c40de0fd0c2ff11dda0d8f37d52bbc27000918e3007a8b7cef02053eba01d4319fc059525bc2394ef1b7f603f31805bf99cf898c400cbb3258335cc8e62a61c2b57bf384ae67cf4919e299ae32fad667c46ec56603fa22038433ce08c379046f9b7fc99caf105b8837c232396bb9a068fcf0bec04ddb14d0312e80b1d9a2b01e7342b76db454e3c1e50c11a2a771bf47aa71b6ae25e3d5140d0b57e816ffccf1f12e0e3977093dee61056d49f7348c353909ea0eeb0550c4e75251d3095a80a9ae62d7c60f703791e466cd5e2ae61276fa10fee8d06a2c9646670876c42d16511e6bc9cb20b00962f4af8eca398ed51be1b8833e0090f65cbac9b11d039b99357780b2050ec96696af12956ce4ee6af705d8e27ccf03a5e7c0e87bd8c6097a1eaac7c99de5847c0e740e55c62cbf2749219d601e28edbc398426e575e833a234ce51dfea5d23e65f41306341926ba840c07f57f896194e4f91356f4a09202985394fde83128e5224050b247dffef732efc29e043e745d3d29a23d0b7321e0de52c848eca671cac1e57f2ce8832d55230a2390f88f9c823b38eb3bbd2f198092a642f6f5871ea512c6382244601f7192bd9717a81e304656faace4097a24e57a9cf34a4b465fd390a53914930db97f32219702a968cc777cf1454bf6f89bfc8e9047adca749d6863ef073018b55f7e391383bd67c287d373d7f16085f606fce7076db88949a731a11ce0a0d9d72318e487a7adf34ba81df6816438edb906e3afa254bc139328caa39d48a430c033e48116aa9868d726919fabd4f67b23dca6b7813447026bb651aef7415f8746de0fd77f9260c2aabb07319f0dfa87b3486e9828dfb7ef576a8e24209bf809395d04980bb3312e555a378cac3701c09678dd67b0bb00f6f8067b5086babd38f228308cc90071c717be4be3071de76921f5598f0aaa2fe77d6b36cd1b88ccd0fc28167ac42b7ce97f0ad89d4455f01e041363c6592dc4eca2d8eb6afd6d4e2b822dfe022b8784cf027b7602600dbd5d597a0e517a0414fe7395e99117f5d2aae111153f4d0c69475d0d571381e1520a385c45ccaa867b33c25b7ff2c445bca38ad3f62ae4736399d259a20a815b33154ec909bc140027b7ff0b47f3f2aadfc9ef94314ae1e28fbd4d72a5f059b1fec61d902ff57206d8a4707099461851a02316c375b14152b86e340cdf3cb4109f9970d7c651a0e90a173a1a4446a1bdf482407f65a4f0ba42df2797e8a23519f267003d8b543fddcecfca982fa01be6156bc9000a0a4b71ba95e093bf10b26ac85edb2855a858c7a5046b2ed7a0532fbba6d7d42de2554b4c146581c05b967d7d26db77d3557899c926e143f3f7cf2b04f458261b29421360401f0a9c75e103b71e1b996a5e5f5666efbc92db820f52f9f00216d4b7aaaa21d1610d64a13fe012970a638b3ac0a51c5c880743bf6dd5db035d8c80374fc0ba59b48bd68f4d7a4b509d09af6d24780267be1a12ec74c441c8a4dac466abf4988a37f4c529ec39754ebe7654703d584d96c6da308fe1ee88461e63bee3ebbcfa4786728d341738c462f778d4881a72f70dcdb3c5fde21948834cfad390381968a5fa2d1f5f795f6d402242fc0aa8f0ebc69079e46e23d20db3786d73af0c3b5063967bd3d5fc1b336a96b3608460607131b83023c8778a5e1c30a9e1d368c8bf5b0ae8f7361463401445b8456e883cb484f6d7114f0aa2566749baa0511c60e9f094ed39303c8de43d0ff5a1ccc58e986495a6946c62d16240495cdc107d8a6f62a943b73909ee5cb41367233d3cf500fed3fb2500cad84fcc01dcb7fccb8dfdb3047e1ee0e87a0040e9a1cad088bbc3aa2ea8eba502e3f19fa930326394ed3172e421f124ee7b7601baf836f5deb9e13caa263f5493b893f38cf15cbe5ccecf0acbed4caf56be9806fea7e407026ea5c9d96df9970d0b834e52b1f02bf1cfce765e82065882391bd00708aefe24b87c26108fd256325f398ef34791d5df72fa919a9c80b43ad3ec02138fa68475b432af9052b5f4f2555a89daf280e6f59d979861fdd4bc1cc91306c9417fb9b5570c6745a2c3cae3abc3c2db0855415f1fb896aa2dc86ce383cb7e8055c0c84315cd1c49c664aeede46d59bf6b309a67c2b2f4c16b003db8f885889bb11c96560bfad2db6b056e500b5b4c401b529baed423c44e74f33f099ce812b8cbe06e6cba3419a0d783f0bbe8f5812c9bbafb89cd4b0dcecfa8d22cd9479469c1e1241b700ee16015ae6604f08e74de72cf3a21e2fe5f4d90c963c1260855914c343f53217475d445b390ec33959e5c9e043735ea718bf9808652049cb2905d997ffc47446337867847b5fab697aad36aab7a22e079ff086c567e041bd1ac05db772a69ab4c503fa8c46405534c9ad19a91d341737a93dcab7c8554409167ff26b5c4095aa2d0dddf5b196ea26ccd31ce61784487308c30da39310f924537c3302e1a0fa5cb8849441d18f5b8aa1a207ed09c3d1c754d88c989865063fa6f111de810143c4c9d8da9099efbf0efbfa0d95d54fc992ef4a4b34548a81c526e139fe95d7fc940619f42566e3f350304fa5218de395336cfd0d2e0b5a508832d220b584ce60e4c791bf3d1b3a87f8546f30c3c80142885dccb22fa28f7e624cd1af4523b2a852c1c68ba397495ec6863a84420a90bd8af4c13e3a69acc420ed97731327a1f90abdab70f88b6ebcd3bb28c517385b5982ed59d94c7be2c6febddece3827f2c7202cc08b7efc0778e7f90b01be13f23b2cb6901fdd003c088785b80ae1f04a57c25825b28db0a1e4396a435deed0f751668662aed2916f8881ca05beb7818ea3e5eb2dbc1795e15a0a56a46405f70ccef82274f2d72e9e802a0f910091ba404d8e81237d66dc474a12faa5047ef7728b8c667fdf41a74cb8823e92fa3453bcb7437fd4090d891cd4ea1169d8e9bf6b5024c725705df45ccc9074ca7a90f81249b51eda6f3989acdbee87b46f618078e7f83c8384ec387e026a0b8055d08b44da45f5b0047e3cc5cb18fae2c9f81f8ab72fb5a97237619047a6d91528750b29587f49bfb2991bede0321fb3a464de776c93deebb9a6fd8cd1c29fc386eda8a4fd77140c995cb1e1ff5525d8aee5e0fc47159f0b414b72394e95b5f19cac3b20eb5a016b5eba18d153c61c3989aebfb1e7a6e433f968a06ce87f1f3062953aa15bddff5af0c5f537be9f5364af8efff0f645ecf6bcf3c241c81dd7ced8703f4c4794057b4ee9a9c63749e56d9a10279a1d848e15db2b5a56c03eef3905c860fbe50004d493095bfc563b9625f40afecb6946e7161c52f43a774c86d2473bac4c1ca1d8cbe9454fee3baa15f9372dd21ce3a10e1f850627cf6d7519d92650d33f14fd1157752b662bbf8f235f271d7ad686bf2c16fe84aae9634b5e6d0492d31ffcdb10ed5cc64c370655e253eea9abcfea90445945b51fe71c4ffb47eb5d1e37b3b2d73dcdaa2fa066b5eeae949dd96df6306839df0f7da01b570dedab7a423b755f93725841fcd1fb66e81363040ed0b571ab88aff1d95796cc9271057f08f07f87e75679abbd51a0235ecc9451cc46dc0617b8be18a9eec82e842d6c21059e35e6dab1f13dc4945a3c8b4060225ca4a97e3053cbf45bc8f0ff3a23e72301cf92a58c77458a3169fe838b6be28fade15fdfc053e7b0cafb0bfba2e1ecef55f99cae4edeb828858c989cd3a3b0a4d71a080c1ba3cebdd49c2f07f6bace85fef63ba6fbfc600ed7cfd64852efe5fc00642cdfbe2344dd11de50bfeb57ec0449f1bcb49d2b9f9e2a7fe750eece4a9df6ee9e913f0f1bfbf77d07f9da294013f5f902e7092d26b95abfc7fd0399c0eff1b3cc487f2778f76a9c18b05e7e5a7776c163452fb7b263ad6d94ae728f637cb29c409d91b03ee9dd4dfa4e3bfba2b0972b64e9f47c8a8fd50e24fda3185520c51dbce96d1d64f760cf0ac86172a7749f4f0c819a9f22cee0f24d6773b335840b7d018c40c98a816c10e8d9f4afa949cabd4449cb75b5f825ac647b77ec84a3e0ae9ee85fd06b254c7f3ff455277f75181477daf7911c393458964d45a71e3f00178574dbda0535e57e386ca386351b4566ecc3725ad7be1e2534af873c2bc2f8b7cd9f3162a03ba8cb61074af9d3b5f66d0368a1577fd6843bbc981c97c6e68a25074ae9c6def670708451c9384963d2ba87fc71c9c337d95ec75487687c5c13f294e0ccdc3c2d8cbd2f17a61d8a2a006a54537a72cb946b4ffde84a1f62e7c484f0c58fa773af7da5da6d3b809b54ce3515e2e93098a5055f5abb45ed45aac80d384273eaf17031727a4fc974966b989259fd7236e53d73b4e0ea130000de658591d588d540e96dd3c6a27748599e1808fbd8f6f27b59d3cc6f932bd6d9222e2f65426517d186a5533f53d60bc6f76afe694109135b522e6d11a40b8411ba2a14d8d9b36bed9f0fb8d1f66651d3af947602e7028f305ffabb1f95c2c1f18f9ec32d75d9347390b7110fc252c7acb9de45f744aed17e2de1ae18994c00439ca5329665b0e740f653d631e4da188cfa370775d81a3b5649413c437833f4527f663262c5bdf9a03c63b0ce06ed78b221e0c43c7078747a347e544b003775f26e77d42155a27785c28e179d1f3362bb850ef76767dc278973118a181321acad8af7a3dbcfd69b70d8b7c155da5e9830839b9b37567060881a51ffead4dcb6c506fcbe5bd63f23ae2be09a8fba992c00e257efc7b9b8b86dd7338516e4dc07452d02a5e6b795e64e3916925af13912d6422b747417555b21b88f6059781628354d8dea61c8e432168216b4572b24fb44d022f50b735f4778c93de8eb5c61aecc4def24be16eb87adad9dbf521c6ce1cd8a4f4d5829001d2b554962faa4ebc5d354fd8bdae21987941d5b1da168e6ddc7d89d9c7d9717d8e2f78472f3cd622bd6533968c51d26883453c24370fc9a68a603175036f3a40ddcba10b6ba573d705d8d4b240f1bfe68e44211d72c9ca02a53953f52225c88938dd523faacdfe6199b27f935b2612b49c17aea54b4d62e34986cd20585fd5d22515e4b68a51239a747a281d6e2a09340eaf4951fe3525feacc3cdb40a7679e28ab8fb0895448de979345b1b2e833df5355abc19b3a36b71f2ca1097bd07c440d60602024bd63f855237bda8c34779ba42dddaf2c5e625a9791ff5c59d73533716a1f6d9cb820928e384217b0c3efeca49861eb4e867619fa2cafe43a4293cdd09f3e3ccc21e747b6dd8a16d154502d3820bf287745446a44df5c4fd683c9085c73855c60823ab608e39401c1fdc139bc076e52e27317c9ed14a5e2ce9461a0a6eaee56b1df2827c495176f29f52df2f45079b8d53e12ecfed108397ca240bce1f3e627c5dca16466f67f44b0540a141d95915880cb796534d72a8c45e3c71c5a1182e617d3d73dadacb0ec85b7e0e751157d20e59c8285308c99e750aab7ae18cd3311fe87b9cdf84458d5cabe41e68119cb2c574775f45583602e81ef7f441864e88f76ca5deebb81c9eae1a2f685a71af3c47fc671f06e02145f8a55270afdc390b017147e108f7287c370ea213ce8e82c95ea00079944ddddf4640d811cfb0573ba37c4030f40d9cf81c1ed7ead1686f568404ec81ffb65943f9c889c97120ff21cfdbf4e680f0cafb64be9dcd483ff88d2b4fd970b9dad8b4fe801484963747899a4717c33c4a26a901013f0bab6dd7096ef12067465ce373a59ae3d63cd3a837771c62bd672bb09c0ac23cdf3f7ef6182c9bec0b7e60078410d7c95048fb84e688f968722e1c111a3bd7d02486279c6cdc8ba318a2a0d02d77a0da32ce5fe89e9ac4be5b7600b26f623030c5f3aa811747d48de23c96a16e8017b6e4119a51995e48bee8bc0823758ee674c0958779d8e0adfbbdded1c3c03b2503a0b8112bf5c13d092d1cf3aae5d68fe61eeaf381032488cd1e90984d1cdf5d3807a042b2d948ed15f7e70f7dc252fca96828b0bf2ee91095d5e36a3aee6ad65d630ab97edc7cfb8dd94adbb7f8d964a84df2d4d5f511a121cdae0847615beeb365845871650c7151a4032bb6ae90b37da0b885b550cf21703c2f38bfb6f0522ed58b6e4ffde66bf08edb72f3861505b087612426713ab7444d1907331d0d53297cbbfa8f38491d2746d9524c2c69f115775d192338cc8e91fc10c12df90328078a128c593c8dcb5b058cc4fef87ba8fa630e05447407e4c786e0f1d3ce3dfd5604793c26581b5da31045bfb170a44c60fa5f65663bf1c87ab2883bdc543fbdc43110145c21038429c2a00960f77dccfb11ec60f2051a6f666e42f9bb8965118cf4d02656e796700c37e7d16648647c624cb327c88cfba54c7310b05b127d720ce3418e86f460e2480f19de64a69a0f71e64725a2490c4bce36499a057e3eaa8ce1949fe4e8f8d18551e5cfd81bb99fdbe163c175e006eff7d86af01eb2f2b755e3590a35f6b66e48fe8c06c09ac0e0540c95efaea203babebed7c54de50fa25fe4d4de68c22541992943de5567b47561cf3d48ddea99852bd1ce69962298c661ba121ab16a81bb83ae04c4a58bc05cccdab01bdd763a3870389187e9539e50dc1bebb56d0259c6f3031191283fc682b05cf1b21fa2681d945824da1bae11f8bed19cbfdd486f772584d2333e400ecfad91d8c221ca88f352ece5dfac56735675d340c096f3956fe0106438bf77ea218c29e93c821123513d3701fc440061682d9dac8f9feb5ebb7c61f3f511721f0eb487aaad5cdd4c74e74a3ecbda8dd10f278a2d0a5a10951eede9c144606eada8e3e40fefbbe640ba91c797d8eb1e3a1b6e375120d49865d3a02d465a9e087715ef16d80df71b6b634dbf1af2eb16de45868fde4a0bdc3c399dcfb6bc852cf70f925ee041470c8e300eed0dfc1b3a0e7f1eec08db3fe7d7e0f2c93598dc0f531ba6a1b60569a1529cb6925dc9e1006c8606001e9e2ad14be3540a4e6de055bbbb3d9617129ed13ec5c4804b86e5a22d7a3c09e6f62837331bb177ebda121916e1f532e99ca2023671eb637b78e1ebe1b63ca3deffab03cbb63ed3e27b80ed9927b7c061ecaaf58773a49dfc884f31e5e9f333ba64b6e50340098c943de97e3de866c6268e773e37a976095dd42d4bd066587c875f6cad81668ab7c2a7049b0624c398dbfafdfd77df0fa7e252bb293efc94315f5341f85abf0cd0ecdc90cea880c51aa05a4c7fd809dd59416201e6f7d0bfb8e47f492f04acae0e70b093f1198c92042c5806a52a4f8b8b053dc6656a2512af903ab0ee49247a98aebd4cb073be47c6dc747350b6311ba30e9ac25743d15c568a0686a4c4de19c9fb413111a1ed6cdf1d613964a24fa065334f8dadd71546ca9530dae0c5a5a438cc95adc1f5a954ff2842e0eba58766b0fd0abb24e11f710ebc94beed98cf8f6ceefbcfef4f9363f614fa30ecca6d43c9b0815ba527df8742b07d40f4bfc644037d8364126eff20c5ff63e5bbb4605ed4c41497708c94e3bb9f4e75956449c0ac809dbd0c1de8f782fde2077a6f0502acbe8b3a4581b59e495933f8d4926832dc92d0a20adc50366ce436e6f34f6d73c1c2129a8ee00c744b4d0b54e2658822be9ee3b73077d3db4bf80a92587c68cceb541dbeadb2aa2e0f6fb94966c0cc15121a622231949dcbdfcae0903a41bc0b35a7e8555c14caa999311d6c5de94abb390b7fe40a8a55bf835bc7fa19e5cc9678cb3c5f6695293afa582c0d547da33abfc81032ad3ec06a9a569dbd34858f2909695e32b74cd6a5eed26f27d5ea3f4e15b3cbbec31a0ecfd8fcfa0488d7027618a62c5106d8432b76f691791e0a2c43b05afa651b91283e0a0994c7476eba71ae91189096862541b33a9efb7a18ffa19c511625ab1798ffbb0bc1ebe282fae6fbe54e6659b58666f3babd61a366c7538d21c1c4638d72f51f7f296f911c245bd8ec120c86997a607a27fdbae24e1eb1ffae041180e4ef06edd800b380db72689e4c964c5d7ec37103f1c4e5b258e5b9f02203d4b408359e69e2d92276524bd68fb84a826d1a09ccdee2c064e518fb9da920690107eae8a27d306afc8f3ee438d352c849fc5bd46a712ebb8646810c5e8e8f8b74d2d004f71b2726a604429e52edaeb2d57ff64f283c5b6f5ed931d519964059c70afeed251bb84cf8f37a012da461aa6d36447d532b8a9fd127f3cf8c1477bc06b6cf8003320a4c01c8e5d9e0a1fbaa37430a3dedfaf17b41c0aa38d892923d60f52ece56faab76fbfa2c5829ac2a9d17f38b2b4aff73e39fc167305bf48892b5f8a4876656651cddf738018bad1101c22242f1ba4865969c7ccbaf8656c734c35c51a2adb4ce83d5cabb4ac778f7f39d774aec0c1fc734f661e9aa855e0cca9acd2db43d514a9ef9e4170fa7612bd519726dd47e4eadb31c80b8a0707d1ccdff81f7162f329f0f657e1b6fe23574f61c966914ab2e6ced712504e7e6a55717a0ae9480123f57522a8eb93e0d7aeca5e7a9d3f229827b289914bb1c5cc0a7b1bc9902acd784a7816cedd1933e7f71f165098bc78d2cb1cbb20ef99d79bcf775c1839a395a2709c755842c28ad8a95015279316f318770c37027fc2656086b2d53b9e122d72c8a0a6f5232e8e69d47d3027132fc2cd02e74fe1d610b65eb09664c570447d6293e76bec985fc66f52866328a7e4e59a97a0501dcc69e2a8ad4588060c688685888e4be578474817ef67e421db0c853b177505821466c40cdbf8687e0d5bda8cc9c41a9c8e1022f20623f9288e0ace638bae662b4ebb84e0eebd58979053777f014a5291f21aced14444bc4fd9183cc8a413a93d39b05da8b5938950b68af08a73a577eae03ddaf584994c0d5b4262288add33c21136f71378196b51e41c5a63ecf0e4701629048d55727714488b5e69a16e752411515f1ac3fe7f5bee8a4cb66f9da5a6c7975ec1b8e9da72220d90de244f4ef7e60120284c7d88b53786195d8099fc8474e8cf8e146e6cc4b54db8bbffcbcc1fb5d78913ca422e1597d9fd01be2ce91934b7a89926f83bbe36adaa3d1b563d742981d65b7251e8c245bd0d78f89aa3c2ee607d19317c0329f8f6595b02d5075db4f20e3b7a0df5790ba07870340a6b60cf4a7e19b2b68206d8e66859739687d85481f20d8d0e11809951e1c34c0cc607df09cbf0506563b45f5b656fe3c09b86a3bbf94a06da03a4d163db0f5168637298e230ddfded95323bf7a2e3340bd4ee0e286838952906d2cee70f26893cbe428e6ad500ed88d984b92d1309a02c36b89b3dd2bc8e1dcd36095ec6c4c85aef8831923429e3176527701498924f45b74d3d5d2e4c475ccee91c5de7d022b0146bd690c027eeb00160221728c10725ccd835e4a139ca051eee064b1799138e1337d48eb37ca0863db6b573baf220afcf49a9c373661aee96554d8c2e72c5385ee586fd514241ab4e70e2c9c1ac4febf0b0f4d5477fcd589cfbe622c2abe9ffac0e0fc8a34f12dbc1134a1b579a5fc57e50c9735f7e287ff8602c8611e3229fb409156679c8f6222f25e41fb37a198e1c8a44eb03f914e3b8afaf0ec60bb964c618aa81b4bf139934e0d863352bb76d8d0dc6136c70820fe1b2dfff2f6689f1ed4436e17826327137d1b7f819dad06f438c441f7ba7ea483cded904389d5cc681ec9a5ba6f8a2c31d78668bc8bec6b8717a6eb628b84f6c5609b667dc954906770fbf9de396ff51f2b4ab60bf9ef7f100efb7dfa0eb1081123ed440bd1da19bb8eff358d17c3aad73c297e35c9da79a1a1c228ac2cb7293f4599df532f32c2b8a29b10c477fe3d60a99f7bfbb05eada30073a53b16e2dd9d901a757e1bf7fac739dac729f065256116bf7d8723d36ce6a163bc2ac44f3dd482a6ef51e6c25bb8c1267966d6fcf641d9456694619ec771747ea274507405d211e7b8d5849c8d5df32392c1def2826b32248907df0fa35df3792e3113dde8dae0e00c2694ea385f517ac605a3eab3a6639ccc29b569a8f63b5a3381493a6a13c770979333760f9da958664e4b69077e088263ebb2a1a344e8a0f85d9a02ceb788a9233e1bd805d7b39eb2899b1f5a7eeb01000cc96d9a4f230eba68ba05d852ac946ac62c2cedbbb1b4060270292998c5e266e8d2cd380d7b89734cea42c23bf696dd4cfe5d41f39a0b7f886642a616dfc88b97993593f6b73f716bdccbaa9269e6a82ec97023edba1843ba0bf196ed5be7bed93bbabce1a1f5a0fef29d3eb5eb184c6f88a9865610f1ff849d84078257f7825e6599599e27646a2e212ec9500f0e95d8943350efb84d5db08507165d3a1d3da49b1c1a3d7d8c0ab5688e61ced554c0f097b1b2e1440cba2eca238b77b1a191e8b49fd10c22f1e2456de2049acb9bc9bab2b5eec035387892559ff4de32c28835473085bc0db22ed712d06a004c710cd4f922b233e722a33341b29ab65f5b471ccc2691d9949781f2c736ee1f4cfc66048d676307b4e2735098ef86281dc8be372178c6e6b54683a5b3861987d39d876d3c424cbd144964a2b8f9ad3b6cd8a26d5a07f65b5469345c7d6d5494166108d0c783cb8466f3f6d981e0eb11e258cdbe63ce2a15e98e8e3dfecacda3a85031b18f2bd075fb04f970b0e3507a07abde4102bcfcddbff1a2e58eca1cc17abe073e91ee45991171c42f3bf845ce72408629348657d22ecdef5429f4cd8da75326b4a72e6d7c4f2130aa75e342a7e1c263307a37ad90e2864f0d9d8cd237a765cd44888faca0b04392f72d252a0536974413656d5004208ed7339b4358a8aaab1445badc4185be76d5e5df0781e6d2f2fb1594793453c019068660f9dc0408e7c104c4090903bbf113158f30bf84911921c5018eb3f22ac6bc37f265e35b383335de3ca874583fa2261cbc9bce81823b3398f7c30a42c0be4dbf74bb583a79011bea9e59580d8ea80318bc81b6ddbb205193354ad976a5ad70a1a3d4f0d76cd7fed5963bc6e10bbd396c6768348e6608c0c797b4f30ab6d03afb00eea60552cdc366e099aaf6a9e52789880859e339d63a620bcb24348cf862bc405a5bf4f0aa11a57142162f49212764f079195d82347beb36bbfc3ba9bc2d260355275345b7026d73a6ac04421bf8563f731791dbc050d58c73eec400d3671b2d1bd52c8f6f0bf2534d6adb665f354e62b80f51a3408f0ea1bb19ac052d0d1ffbc5c14fc344374fb877190b6d741a3bd6f1e8efe5f2234842411432a1926b119b81be2dab198b007726f0c7aa7057241f0d31970a1dca5af3030b48d8331d9dbd9e2215fd981daa17ec054cb959e9303e9e833808a45a13c32090a0df22877cba45b1894a2c64f79ad3d4aaf04e2ec0409c668650df5b1bf6ca85b88455db907b31e632200ab1eb5e97199257893d2efe8272e472163577d66b75556b34612cefbe97bf252377f9c6899dff1e3fb63f1beabde35879edfe4f5a590cb20ecd5b98c736218ae1ddaff81439bf09ab1b6fdc7a3c1cc8d00caa602bb3b8a44262cfc3b2be0eca9cf08a8f4922742f5bf177bc665de427cbaf09b121502e2cf79969d5847636de460ecc7a88af3e995e1b26bb73ab4d676c055bc4c9cd6883c3ed7807ffbffa6ba77e9a0dbcd9063cc56aa9fdf629ad3d47e4897f6af5ddce5099fbccc4fc346e00b740bc9b14ec70d0029d2668e44544b90761f14cc3dc8b9933eeed6906656b3d6efdf224b3ff3067428c1f602638f32bbf66089f7dada8fbb4d1debb38b7c1eff8fd30aa3daf528a3afcc82a48f4ce30179cf8303076483afb7c3febd72bd50777507a1b6400e9b400d28c2d420163606dc9125819698990b5f6de7510c891dce66e766a6aef8242994f47ac30f08b23805d7e485dd5afc52ee81ad3198a6628e8063ee32582e37dc98d0db77142d388a53d455bc861e356836101c2f5245699125858f213d84413e37e4a508b439d69645e56b672378e08af28d31de4929c6f1ea1898011d9fb8a0fe75f9d8cdbd0c9bb1595c817c602720623f59801851e2f5d5312a20d57ffcd9846d391c8518cb4fc7dead87c98854f66fd579ad5a0b7d88496f4bc3f40d19defc62c7770eafb7349c9ae151d92f1d4c88c95bd3d188aed404b5e6ac1d6e5d060737363e0b42e5a5f86bfe849d1c4deaab6d5be3212756937fb9f7d8e2c6d6eab40e952c7fb44dd097d9aee96ab7a11ddf53fc610cbcdb5f440c31f93abd1bb0b9afb488e04c56717feb2d274482a6edbab5ffca15baeb521820b103622913a83b129b4c27847f501eacfd6245b6f8a0e533d918eac98f56dfeff28cd188f9879ce55eb1a05ba96195745f654c5f31b8ff1ef507e0489f382103df58cc9b16f9670aadb9917674778f517c5cb6339f99c70678c714aaf5746272576ca9abcaf07e368fdca62e6c1dcf02ea8e0a85a9a35491b09bcb8a599f2ef29cde774fa7064f5c932297196b79277be747b11bcd433f66e2cf507aafbff20c0d712d6ad6d05ccc56f76a55ba1c4ffe1bcfad893e54f52a425058152324894c14033918a9483750c546567114d046627b17fd2af3790bcad19f97475ef45b3d98d89b7fe9108d802372bb9f5f4de2d3bbb6173af9e2ab8e3392c1ae85bbfb964a561e56584da9a2628fdfbd37491647eae7c3034bfdf6253ecda15176fe9b6d0691c6815e754f309d46f14c1d8e214f52d094001ffe9ce72d0e09f1dae0adbcc266d78b53c74bff857fee7ad196423f187bd0593ed2622e97add91aa3f5af278f591aa1fddfb11b2691c12467a8bd11564aae25a32dc6e702c20bc58ea7d6b3110469efbb6e563c2259fdb17a2044da41b09d44f1729e9959fb5c1af306981a8614a40cccd8b4126c5d213221775b0039b950be382bc095cc9080e7a1364570dbfcb8602ff73533cfbeaa27826ac71f5eaf9faab8dfec2303be3338629d8d98d9d0fc36e50a084245278eca80a105c2924083783c2e66a2eec5751a02401bf8b422820de1b22fa02a2ab712a771ff165cf4549635e145f3443d03f01f53d4d34a00dfbda38116020495c66f789977428d96005acd2e1a540e2cd182cdd09582a0b97a488aba5990e707425763dad0250f196217dab5e37bf36946a556837b432ae690aa395180fa857b3ba56af16c40423cf116c4b9d9375f638d8b3b1981e06620691f4a77083f4377509de1509328aba47b0f859dc99f3d68f06eb558274d320967e33a5b467f9288d523eb7547416976b9318cadc0d54eb0b8b9b87a64a94d21478d00a29a1e9474c2c3a2e6f9ebba47985aa3c93a4b3a7480a446579df5f47d1a124c83c9ee8c54b5a03405df41036aa04d08cbd6092407e7f235a5561bbb976225a242072b6b16df5585f129927e7d31879f4a8954f4cc97dd2225ca6e1a165d1376a42ff5bcdd30130ec342c670b3a8bdd7d45155483e28d64d9521dcb7ff3b32fe9a2f0d9c255df4b510ef06f8fcf30d0f9ca835ec856f4641e5a5c7c6c29328387ac089e7397be1c0fa8ff794729dae5b02943f478e2870976ab8f3361af7e4feb90c4ef5983f0e3f8b49e8c86e70097bc3354b2b9a4a06fff9f7ac463d5f3344915b0e547ec92541e1af902da78a489a74f5fa7c27d18950ab4c9dafed99d9ab1ef228254b56d96b940b0df49dee21ba04c10f627cb5363e55c6d68da4c19171c7998ee72d8bb85bd64e3a9f427e3367966736cfd4d0ec3e4316d4b8a8b17c08f06f0af2091f64907e6af780f5615761393e950a442cd725003cb5e76a87427169cdcf646a2e54b9429040a97b0a794df5481dfe09ead6dfcc79a64340ee91088ef3e2b27a924717c99e9b5860023fac9d15f72f2ee2333a01ec23724a1e9f6d38c4421cbb8e22c2b957e78fa10b9d62cdc3e6b7edc76f5459a2312ec5a79343997f63cee2cd8670d174e48ca2cdc3e49f84f1b4482522340c87db886ba64f2096f2442817634a2f92a4a0676db47e4f50fae1da4650dba6948f30cc7d8d9aa2f2d45aae0c8c47b7e3f8d9e113233e075326e4d6aba6403b6b3f49d6af0049412c9bddaebee95d4fab2886ba31892426676f55436b6ab28ef3848a7e999c8d446c21ee513daa31cca49f98247bb7b54e06eb2d64e80b5fd5ed85d34444b8ae6faaa8f9b1d3743221b4e9b2d2fa70c78359ae243d282134b8fbbec9a429472163cda013bad8299e579dcdf8251b2487b55a09336850920127500ec1f60e2517fd073a67d7d975ce94c9c31954e2412c5b248a3ff621ab58f06c9472577884b9a7dcfd3589f4803ba41ebc55d5d4d0a4d6651c80811cad8509ee473373333c6c6efbb0788faab32e3593f6ed6cd18e4202c1701fb9425e7029a041f53ae6002b96029e072fdf619fc781896fb69498a7ed2e435eefef1c06e1d9c02f7eb32188fc403a19ce65674db46b759fa3d03c48c75d5a56e9a8b188223f283057648761ceb5d07ebc31edd1ecbf077c51ac9a44cdb4e2e176e93857c2f5356ee7690cdea76d0f44d021d6a12b7011d659f3eaeb665f1cb3342ae67a161eff3a7d8725dd006d7fc275a7319beb04e5f2c36b4d4e38e9583d9db293849110b748a2dd7e52d9877b1f130d0a976f1b508cc3ec1dbf860e0c8f2c236071ccbd6e20cdbca351d04c8816faacddaf6a5afd29b46979c46c0746fcad4c18a68798b7b2d5d64db0aa5186260b310f9d0af36692c01e0d43ddbb9e495dafcfea6310af0c99c4434ba92a7871c6cff3749ffaa91adb0b728d3fa4997a131d60c5be2961bb28ede5877d81a1360a0ed56c3478a39418ff1d6b20f87e055ba6076bb3dde7db439cd660506e70069d26b56aef1ead2af073ca808521ee4674e7025974ffd843cdd3238c05d1fc8adac9877ba009119b214e737677ccd5d6271fd60d8ad70089aa822ff21f0aa788ac9a46632368e619a53edd0db8360ced14011a46cd02c85dedbe18aaeceecf1104fae478d1c210c909a9e798cf5e47900bf884de16c2752d1d680fcc2f757e61f993e38e6a2176ad9872ea0a0a38c67e000929c409cee2f92d7d36b9fc834bd671c71d2f6084079ccec933f29c03e691b886fba801cf721ea4044b06747ea91cf36e133071c90e5ac9fdc9082121b5d7b601e33c6066ffdea6261485ee486cd382b7ccc38d736cc11d6dc3094d1d15fe757f2d87e48356ab4886e15eb2de69f4daf6f03e426b05fd592812c2e019608001b80cd7affbd9efd28b6adc8e670f9998c6d181076cd3de7db731bc42645af8caa66a0bc44fd5053c5d9bb9df8e49561350012812e738f62450802fdc0853052052b926fcddc3b9d2b3551b674e35b26fa9fdb6f4d86feb01db1d7de92582d033f700a7404aa5678607bae9c0b078bfbc078d1ec332c2423aa8b760af866e8576ddba57a923d8ed750a72fac4fbc64f5e99e365fe5929fd2684415c995c12bad6de4d3bf6a0265db2db4506f514b6d4e114355865d94c60cc33a82d6267bc52651d985b28a381ea84b78cad0f1447d62dd9cfeff3396df31c8c32cc2b7e61d6c04f13e61693dbcd489e295804f2a97d2b5f490e046b819ddc24294fca7c566c43324c0c24307a076b3811510cd5f6fadb04e0a227fe32360eafada6d77d484274caa4a5d331c703676ddfc8289c0d8f2f7b4913984606bd5f0f93dec274be39bd051e7b43b84ad74ebdfbf2329767915a047cdfdebb8b260be30f710e5955f8cf03314770fec32f9aee3a3a4ea7e8cfa7d8d53940ff4b932d0b97afcd781d61d83722daa31d5c534194715de0a2bb7ddfaa8b6bc106692beb0b1f6dc750c4f81df5e6ba69121c7317d35776b43a38f05fe22aa999f43c6c9572639324a72ab88c9568e3851416da3cd4adbd2561be4ab136e1c465b8beea46e5c3020b2c5a6edbe0c78b976cd8a2fb6d2111a836938c16d1aace50235df5a098244a3413826da79b9b6f876b8de7ddca46360d53e2dae1d729dae5268e27d354078781548662206c139ced4a093050c59b01fd28afc0fe8c5a222a685154a43384805b33b6aa2cc2887520c1dc3ca9cee438fde45c85f5ac58579843359b5075f65d61defbe2690ce70ff2e349a0ce5b240d84ff0952f6ab443d8b63135ff60eee16dc231fab745661186161fd85cef21e9cd9c2204a75cbfecdb6630389b6717e658a6da543d19c494414f738e43302f7712368e8e068416399bd8d0873a8a633ce89e5f832c2bfc97a57e21e5bd1a4172cb4f7b0cc22a809d5d0b96429b1d8490eff3c79a31298d46eb7a46f19d92b4e49b2488c2b0f63d1c02a63a0fb83c98621d7955bb66b5911e9507a421340fab2b63737055fb1422122f357171f8e87afba5e6e335d24bdf2738baa890d171d754ad2ec534484efd5753a31c0a8c3bb766909d514f141c335f0149a360f8ab46555803772c956d00dac469b09509da512fa88f3f8661169e930b253370783124b5b0368f1e8181f9f7c2c471fdad0253703a5440c4655b1d7e05836523b474b6d5dd4536188be79fef1c1c4545b44fa9bd8ed0973ccc7754623381626be4fecfb1d0a3dba39f8e705a22a12200abb086839b63c80d8d614f4876432d35d7a2935e241f601f9167e7faf16455dd14d03b9314639862921ba6ad6338728d8f8a4c6b849fd123545704271a9d7f43c7b699357ad4178c719dc682e1e2a7709312bf2592ca9dab8c61e37c6219e10252f1a01fe173a69bacf6845fce3c98d1b13fa450ce05d404b943feb95f60df4cd13817e33bb8ba20c691a789c6cb513d35be91f39d24bb4573e3c44a0391c92ca813889e29cd40c1c64dec706adbd83e6669f2b1ebd05df997fc13b690aa858eefcffb52376af270581ff95497be6b2e8cf3400544eed939a64b791fa7ca38fbc48cd9cdc80cb2993b3482f7ed1b40e879bb29af6d07ffb756fd3216e581639ce28ba90f31b5c31719f77109775184fe0813159d6139adbfe4e6a72d42a45080d5e669c41aa5b64866ac51ab27d6717de55906faa1e396fd6e7d4a57ce1b6ebd2b719177dbf30c67e673a59c612e6cd8b5c5fdb9f0245eab9d95010eb40b4e9af7b72835e5c0952ccd4edcaec5879c644e359ffa20495c4731bd33d00e1a1a1bab17c5559913d0d0c9b21c85219cb2b34ba7e5a6dcb0564da734323bf2c87bfda28e16487fe28c8f5c7a848105454c10fe01982a8c86e580885b3469e54e8333203029fdeae62fc1cdc446bce796df7a8509e4f3b921f02d34a30a59917ee8504063abe0b7bff35764ae56a6992bc337ef9b447f6baadc5f43a73e6a5e924804ddde6d2bde918c1561d9b7685d19594603114c8fe9642b0f7601f51a2bf427c0ef92e2fd0a5f9a1dd7a8e76e477e698d75917667607920e9b6d5df40e66404eb4565b55d31126cc4e6c91be4f71ad53e3555a46bb4c5747afa33b4154eb90abebfda689fb01e96f677049961cbc9a28cd017da284abc3ae0ee5d9bc5df0c0c2432dfbe828366a156bfce6a3fd83957f7b9f82b05705ee03eda9a45d6b71a37f9cef1353f7d76da9c9214ba549e43b9c22f4fecb2bb1466148ccd56ea7a56a411a705a050afc87cea4608773c59bb83059ad72ba109c52d61e3916fd2b7fb4cc2d4dce6eaf815346a03c30b27289dee3f6019bbbd21de11570a6f628405461db9c749187441c6553d54e62a64a7657ad76431c8f5632b7d72cbd937db285786a89dff192a0f53b69cad96c25288e0e75fb5e7f186fe358e54285f1b61dfb34c128abc684e1f324d383edadc6feae32c5ba62e46cc4f939ccfcedb4a7f9427a58151c8965e2d1035449eb9958966173620f5050260006915905102df03c02a27ffc4e427d5acd4bf8812b79db0ae814c734936cdbbfb97ccf61a0d2c177937ebc208432baa00280441188c53d784bef0cf59130c04fc9ac7ad624b358cfdfc5cbc1c61527d4a2dd65f455853427d17df6b4f29fcd411b7d120fe674f0d1a86ad8b0fd7d3e83970e3ead5ab63eb60f6d5b371389fe40f6b78010fd761f6070a96d2688cc93dcba28038b741a8b7752e41bd15be1f9600e6e92ec23c9737965661270c6db91fb036652e950c66fc49351199d631f645ce20574ab1f9dfb6071335ab8d17350007f3ae41bb7ee9b4814a597ae54a8ad0f5fbcb3434de28a784157c4a8b5b03c476ee03a23b1e71b5a8390f9e38fcc38ebaf3f95426f60a5668d87f7c08dba598722b2925c752fb40c65c250faed359ebce090daa79e2f76fe3376abf746ac308cd927f1bfe9a7292d2435581e08bf1e8ce10cdd25f096d288a3b387029435a3fd1fc3dedd7c4651a7f641d1233da5c93a116c0ca805c150c704ad82da3e91c891afe6937fd12734123a608df1fe97001172b6d2bdb948ae74be1b0d7058659baf695e22ad773bba416036337c7d37362b5feddb3b1e3b1fb908b50446f1ef7ba6366af10de9d60cc9d68f852d7e8b21ae259968998c0907b6bee81e9875d6f0bc01725d143a8b3219557497438131b3d77fca6a5ea215915b58929a115c3d814934139a7790bc37b49d9890d34c0676c27899e605b6424f7256738d57152f8771dda13a51a4cf7cbffd07f94a9dd671858788d785163ae50c91008d60b3b7ea83e458a50a0d3ef0ca661ff6dddcc0e02a82c2e2a9200ae65a616b9751b2f5521390989ea024b3c5c1465f97ea6e560e5f2434b9345571aab7fe78753f77e7ed0584dcd8aa3ac5bc7e67f61b38d0413b18ed9863d3eff0866b1904e730e7daaeb6614d8c8796284136187d6c63e64e4429d5d5fc785a90747087c3b73460c2d2d6f9d45beb2861b97ac9940ea56489e5e14299b66217e60c9e479571582241fa07e28e3883131178182857933b3155cc34ad7b651fc2e9441f6a14b1cac5eb1dc90c20f6e55a6276ea472d8165ea8dce92a93d6a9b640157be2008ee12a521386072ea21dfa2fcb33255b65c7ca92acd24233502d9881b9b11b99acd030803d5f25025a3a1cd8a42b8a9d06b9ecab4a873c7bf4b35f2f6f807f4744d0e93b4295dece49fcc22d3387ce03d747b90947bfaa985ac0cc163d163265fa8211a2ff63774329964e54c38cd190812d41da664b2b4d75931e48698289537f790a5e0ff577f6529f978fdd986618fd47be1d73064b8c695e07fcc63a9477e3d446226c6fabe08d1cca94406c28020c1d53a9780eb708d0ca6f72fe314a41bee4fe8f08fd3188ce4952df08c91c27f6aca8f66f5eb74fa09e86fb6a993daef69b4c87106eca6d2113c2d79bfe398c44cefccbe4bb978d7cf744fc45145cc935477fda4a5f7d360a1125aa88087989513ba4f75bb4391ef0d4c7e58747693287c728265d75c05ca364458576b23d8be5db99d6d68104e51fa53ca149ad9266afb6a901dc49a8d10b7650503713c5e451cfc2e0c8113797bba3212b44613c28ce2b1f092e17a1798fe5edbcc428e9c52fd48eae5e785d86d694224c0d4486f9ddb700b359a7d70924141ed358360f16a9165bd2ed368f2919b19cdaf4de34e8df8306d600ad10f1b0aef45de052db312d9d575f65fc649aaa20b15f2f87001f805bda8c74422ea54d9492eeec08dd126fbc787476f83b048dce02b5a2930346c656634626009b52d13f05aa25cc5ee31db615cc66491ee788c1c95d34f989f41640e4dba3a6aa9faa3e6b009fb47551179c531a2bd897b58177c63a1fd88d7e29d3c06485baa13dbfcd4f2f00c0d8f5135d6dc11c6d5047d33cbae9ebfea50e4855e6d978448689ea82f43f4fff8deb958cc02a3d5a99cc834062b002e1de824a66e663de79af0ed58e5bb135a6d3a343b54fd8e7e6bb7086102a03c72ce96508e8f3aab75b0f401c76abe46932c5e261c601dfc466b83f051ae68b449a918e0f72acc5869df7aff57358829bf9c782e174a451f250dc1fc59d47e5fb4dd84e9ae6acba5f5d26ff4f5352f4f02dab7c04bb58939f1e86e3c79941b928609f15ffd5eba675b3f4da249ce1323d1b65bcf097d54b6847241d06e9b17a6fb14605f3a489fa259dd849abe0786f3e640fe457b4e95fed114fd64e895044689c6a9899c304fdebc13154accb4e1c6f41012c4ef3524885a6165366b9abd62d86510e6eaa995f51aeeaba17487f702e2f4c446e05a61ebf321507b96bf336b162de63b5b31e81c3c8a6bfb8a58ca412fa3bfe8d1a59037dbde5c32656a702faf18c501cce764c9317bcbcf0cc080d7f78b51a406abe88793ba70e5d49af12fc59cdeb774b4796d18ced0f3ad9713ac62a780c41dae2430846dab78a7ff25e4f0adc0e35e4ea232ce4518ac555d1b7a681d34f8c25111314014588fd767e95faee289d7ec8ee138d075d313281799a0b2ea2d391b4b0dd731c8c7ea649dfa8fcc634dd9246dec5fc91122ef6f68baf24994f137003b9b89863ff5166f6cbe0f0154c3538f3fa9a52c67969d9dde033314a4f5a007c0034dc93f7b63c92d4cd73bacb340bc7243c399486b7dba4978216a49d3b17e162e8bd3b46d8cde7711163f09c25091e7bb76359c4b74acdd2ef6c1cc0ffea7c7f943407ad3cd99a18bba6fd47ad5768e65aef554b0e5795346f8d84653c0c4478692ba44fce48781e1dde031160c23525253aabb37ef6ab4f8e1b9c8f77d23c78cd7176c1163770cb28e98a5404f7388cfca7524c52ad3db939828a570663f1d2d28e96c7b8a35c04261f713af1a471230a42fd64bcd8ec5ce6d3bc2f73d8645d4aa2e0a4f0f32a978aba1773123dbed6affb86c10f522869df4b6c71b3800148e8c722e01d64c50300fd207b6248aca5a1c8adc45c390db8790f1ffec67d6733b68897dc381ee4f188844a22c942e9bba3b979069cf0d16c34f388011fe65c5a97778f72a46df9cf22b9acd6776935ba4f91323a656209f7d4127e8145ff09c37a3d6c6aa160d3b54e7734d12103423fae378e4ec68418043886efb7bfb165c8f5e91367c160806d8168250e36ca53d432341fd000fa29e78ffa1f30dd42c3bcc75f10771a3980a214a9daa4c9744a866358d48e10953c014c51c452616a0d124b9dadf644237b8f3fd380d3f07aaff0c7c6792c9f977c3ff1a87f4d6b38cfeb8273ff0284772d9b68333ac685428b65fc34dc38076d5ff3f34759cecfb863e758a5267c4666bf5b1dfd5336093c85fc8f834e8e7ed34e7d1f7e148e274963c53c0c56f4032fc813e7f8e71fb099b7a2d2ed2ac97c09b601fd1e3567d3d99f66f83db00cb08c792e9a26e5cf8fce2bced8a7fd32b87492d30ed5d11c4b365337a82e0345fe6365797e36279cabab49c6905fdced38bdea94f031b4ad25039fde85080c9bc425a0c5880d880dd4fdfeb13ce22e3e3cfdeb7ef882db8e5fd89c2d2e0faae4963d2462c2b15354e2d052111826a7ecc873ba6ce7fd284eeb7a32a144bdc69461e80c58029a57dca3b9103ec80c3926fe8c33151a0d910abfee329b71140f6e0384578b9998c2e1be5219dea621ca6c3a1e909048ba3e118ccb217f3253cd284a61792e968815398e1da046cd02ed6609f77477ff41c450e85635cbc2970e3c8e89d26bd29f2d0f94d3644110586407e52a39d3884ad6ee93f53fc81cc2c1cc837c511088cac60f3c81e6f4600ba4558556043e279975477cc46cfe9b20e6fbae064ac18beb0cbe05de5478fed3dcff111cf3e1fe1f91e43e5ae479dce24c858c8f82c3237a6efde5fa0ede42fc9845971e8cdd54a08d37446e9f584d6203d5f56f65753108d06f4a0d765ed4a7f4b4c9b7bff4ba44d239499f823f81642138be891bef279a54f11a2e59370bfe40dfb42035dcfb93d3df00c090f0cd2648a3fdc2ef47c4eee90ab161c59e06eab66972ba6fe8cd6ca95d88bf8c443727cfb0fd66c3fe56906fdf2d822128dd672e5a5f06356c6671500afada50b0a8cacc79a3c8aca3c36825ecd9025ea28ab84f12f5284b89b35ec7cb9e41079918501288f3112c8b01f8c55f45b137f05b19393087ee50f354cd2c165953ef9e644f0ebf1a6b521948b3cf83d491f2ee93de70b1d0c38fb46924e12d5d2f22309721a2023455b7281edb64527f85e7b0a508b5ed496edd67957f1af548ccabc7bfe80e0c12264f4d5d74cd8bc1f67e1a9a17a15a7850d0394e371a72516ba54f5425bc4863286ef135309bad162734aa00cd3f75dd5a517083217b69724812259ea470bf513da5d885a5af338b25e0fc2e411d6058096716b28a0e05eedf3b2c83e27df58cfd39ab46fa010743a934d10a898285ac46c580c49d267428ddff2dfa98d02b22d2d26441163aa34d475889c41b59429faa18df6d2cd88703bf745e09a27c1197b8618408a04500661fb92c9a7ba36b8240cc1a08c2e42b8f0509a830680303f743823735784d6fa02105646e91e607fc9b6869a9c0b14bc703b0c113885d5deb7ff10f7fdef4e6c4e03a38fac47d637eb1ba8dd0ef0beb66ef56fec477649f9625181edc25f3b471384d367315e50699c7304aeb2874aebeb5d63a99d3af4b5ce7976d812ceb893e9f96b5a4f86137f203ae968ea8cfff3ea9606ee0b0594be279a4981e10c316d8a4f461bb60a3848b23e75ee7fd99a30334e350dc82d50cfe0cc4048e7ff41528dd726d3ca1c3856b2e83df8e69c733cd3290f8cca4c30b0d65950529a42c32a6915060c10ac99db54f2b24a71e0579c0189110fae11885b733a968dd1a1ad3d0140bfb70b438641ad0901ee08bff48cfd8036d9ffee78dce007719c3f7c8a8a7c86851fc28c9d467da546f4bbadf2bd3d5156d849bd2fceb7883b9789fbe087dc15cae054246a9cc83b5d3227a84b46a35f4f7fe7ee71a8535deb73b63193c524c07aeda6d50ad3e5b1c4b09ccc23e8be4d3dc76af8df8dd210d7057b518c1ec54a8f099329f2b0d9f69f6ac882e3cf89435ee3c51ef188cb4130236b1ad6900d8d459826ee292c106651d8bb962eb96d3eec7f022c2d85723b0a7644e86b01a2939df9dcef6a5608b5f4fe69e054c0e64f1cbf34b36752788190648c3cb8526f88646a0af6f782bc7aa2a8a506ed2c4cd19fb398be963a841e845eb40b5435d2f6a8ab0743685fc9ce762c7832033853404e49697fc53f54be24023502332174ddf62f9789a135876ae3911fe7b86a7f84e40fe527a635e3450d80a442833fcf7edffeb06e731303fc7c28b378201dfdbaea3947c748afa9577ecddf9cdb7615dd11358a659e1fe2b6bd68c6fb4e7e2943b45f6cddf3eaf1ad3992c6722f9eef675ff20525a1a4e6282e627b4498527d379e16b900ce1a9b6e809d7ba76b9352ee23b08e85b3b5510b45e6d0047322f265b32bc32064a219bbb4299e2374e2eda7bff26985a530ffd7748784b2a3b4b68ef8a5cb07fa637e99c93339a60bf26309b88b660fd4fe7469c012bd47583f03fb8bbb3a6d44543d40ece383c7717ade5f57c33c3ec995191c300dcf87a8f48355eb965c42f1cc4477417c983ad7d81a10dad63b8555610bc04669803d8ee07ac424645232a89c980342eced3ac35eade17a6478d7e56a96e99b68ef07d762da05cb87644c3ea135607aed6f9ccf022b83c6e98b7dcca293f6ce55d6f875e1b1247fbb5c85bbdd1bdbac3a18e648713d0d2642b57fe08cc99d7b6b935919f3b65cc85dc701942313209da7b1da35bd2e62d8a98d9985bba5d8a32f179745d5f55b43e2222b66303319c0757417123c54b40b84848560e2ce867ea6d46518f5e401103ba40f1b0d0c68bcaa4063959996d0a1dbada647b085ccec69c2367a1fb31bda698db843c7f6d732d8cc789b7a42b443ab48d1c277f9b974653aa29b33fb978d70996bc6c827d247504488447ff0bd82339e4d2270b922b7a61bfc01875c483c69509158e677d76b8f06734d0fba27ea107d1729784e99b40e3676d2892336fe0a116f64f52da8a7e630a9e02333dd7db4bcd7fc0607d889144592591c8086b0360fa404e700f46db6e430d717c0542e025a88c4d6ebd23f171b73208a5271b2d88aff08dbc97fda5eeeded8955e49201b5ab392b539ddafa7ec03cd3ab8c48e107cfb8218c262f352c2f1b312fa54e2a88a123fcdb058eb1d0e5bdbd3ea4f0579fd71ae0b070d46a90e5b66825ebe86833f3177e277eb0326bb01c5ee65abc58eb14e85bb455f1605b172dab2cc621a4f5c39201cd63da5d88525e18a1499c7a70b219a070db0897292a5d045671585c1f762e57e265f31c4c70e45b6ca29b11722aab3c2d30d73c97d15c8bb78c1f2055aca8280d8ce03aba066301ef13ada3f58896a40d2337ddb0271b6f0d79bdab863fcdff59b3565fbf5a82e6ae03c32a494f9a758b5bb21c10e2cdf24efbd1f5d3c968e1ea5af3d07dd8d13df207580894deb88a46b48e0b26f279fc1a84540139860e7f06739b41dfaa22273c7273efe0844fd8d5f7be11c6638f762f8de80e5c8bb762bdbca6806fcd2afc62dc4f0724e2edcb4925c8b8a795394a431b8b47849e26250cecc824d6956e46d36bb0877db0df0ec54d8e19f86b39eef33ef5af487b64b3cd6e5e299a5929bfb0d2061312f68fa1b4dbae4f77e8d4d4cf40e9a09efa27d101ad2b4816d88f635970cb94ff5ae784408e0486b67602238722ab4530b8f165123ab566aa89ea1aea8ba5e6a47b588f9442a892713dad606f2b94cb014820705c63fe79e97eee4f1ff7c6dc4f117eea80e7161e010bcb7cae11eb92c82d61641b1c51356b777938b675d578ad58bb476b70b1ee25f4ae2daf856f9ec49eb0a0b18cb30c5a1cb6f50f18f4cd765d91e8e0168b90313516020e646d723c68ccfcda750544b5e8839a81e49584b815fa6e9d9c2ba90149778bbf8dcf2e4bc2e6b6a8e5b1956e17559e0696a8614d5d69aeac1a72e8a7756d8e6649df827683c05bbc6075dad0ebacc588fff8b8294000cf3b223cfbe148f2036a43d7a83802891ecc60816110a42cb05158bd522189c3e7a0bb3ba4cfcd3f2016d5a007c20fcd5f97ab9957c6abd6b330fa1ddd5c84e588260fc03ccbcb496305ca780a341a2d9695a281700dd5c6dc7a73033f40b15afbd89fbad6c5d5dcdbd5b0345f4967dee576f460fac46ee64b1fd17ef0122cdf35712cd8d9382e5d081fdb7d5a52641450bffbf5a905c32379985a8b8b6b52e76a4f4aa241b3f5112249d121351f7055326ec918523edce872f9c6cf0efe7a0ded848a54d98306a3db6526403cc59618f9ec49b8e722b5423acf4a5d3c26f05b76d44941bf8d9fc55c5bf058c707834537166bc98ae9119a5aff9594c436c064b8210026a95a3709413e052dcdddfd42001fe1fc16d1ef7d0da4c7d96d5b04ce2029d2ed4886d324253122d6e2338ddd2dc77d8e6b95ccaec181fab1ac19e7877c8eb0df8fcfb36ab70f27109ff714e58f48b6d23c58074d99445b24ed8e4a9c50f686d4671ad3b73118f021095c8f97fb725b2c05528bae058ca3acd10f40ff2f1ddd279aa5f4bec335d328f177095e15637d962f0fa3dc5107a5ea8ffa3dc30d5ea1ffbbe8a0a67f4d99cd71c723d990e1501f85c58af72dcd242f59aff709af1b338b87c973b50ebd05c01b1006518fa62400c0072659ba1f0246fb80b028b115ffdc29a468fd059b2092a33cdd2a6cf6e9c904a00dacc0c65873aa398711d724967c50d96d83f0750636ead324f231d673b43d13344b662f4861a86c50097a0730a48b40be3845ff20984049d18cd54df710be92bd2f1a04928ed9dfbfc9e5dc4b59899ec1cfc611031cbf0f465c3211e3ffd92ba54aec62d8c10347a53ca4e453b6c7e54dbdf0f161daf4f2ca00e6c2033e411fbbf9b2d07465ee8960834a4b95c3ac7cf1663de2ea96c69d6bd589b107ca202294bef92bf4269753f6f860ae89ac2c317a574428ab94d459c42c7bbfdfd921ab51f5d053e0affa871837844d5f621ec37929239fe827091ae0ac7d5a819e7e242653e08d38daac5d1348dc861956721efbf18da588b852b37ba0d8e1daef2adaec5dc764739c9427d7008a5f9be3675563d42837c11d99871909e137e1e3d8c26018a8b1450d42cc0904f078892ce7af20ae3c9ab5bc027e55e89e42d40457e285d13b61e89a4366ce904b7ab0cafeb291836e49cfff0da08a6525525f2be0b40e11dc0cb137e52b831ac68a52c9d4ea57437c2dee1cd4f2a3d7cec8f26ab6f553fd27ec8e3fe46f7fc7aea35d29d59c0cea5dc9b037ad849ad14d8a629582ba0381294de9bbb8d7f0be3cf8a258c863e92ca5ebed5f74202b1ebee64a4c1ad617e0d33439a33b6d6ce413bc494821e3ec0cd0fe564cc7d701fe64a5f624d640feb890935e7299bf54d69c811dd64e9c96d2ed08f8c79e6adf26ff7aaa94b42e588ecf9db87fbfeed53a00babc9bca7cd8d5a509ccc3fab46aa66cc930076950636dcdc561ce99ed51ab04ab126ee9bda088de60264ee158d983490643f7c9c328d837a25b1c2a897322c6dd77aa6144c6606b8ebea0d94fa8f32c37451fec87aedac9f3f12ca4ec4e769ee0318f6b23af2f2c88ea0613f7c1d1ba02befd0be9b7b05f7641ac18a3f4a18d992b4473fd2be209eac7bb074de16b7f43bb9a003dc0d40c16545216aff9000a88f29332427f6ffb419c3fd7e78506a9454ee5c413e7c7aff81678a8a62108ad57335e9a75e237f4637c1333979addc2966f7a86a3274eaa4c2aac88c14007221297b463b73e537878758c513ea2d5a231c74ac6673b4d67122083149625a3e0bf64e5703e515794896c10770b3c8a8398923474be668f735bc14a0c38204294f8d125f311e578f74f9d964285c40f94e00a9c19dc26f1d868651fddf47d8354f36f69056e18157a738e9ad546c2c0f1550d78515e22775b1932e756d7cdb3ab0800eaa3b26a27a25cbafa4bfad493bbffba50c6c19613a72d12918f0f935df50ba4af46436d6417d8813f6b918b9e52a2ab6853a64db672c6c23c7dbb65b8ac942960f1f668d4f16d4889f30ee84bae61101d442202cd3d6bc566aeb53a55d799bc00a17c3fb56ce6b2803851bfa995dd121047784a578d29181e29cec5e684a4fb9f29a6eb3dddcc3e42d020dbb79b503ed0c6cea31385abda96a34d1f6ab773f84de761f3ea0571056bf5eaf7216d6cc5801b54c5aad1c2a412ed1a4b844db3d5280177f62b14a34280eccaa0b857b00e3db6c37b34d6fc2eba6bce2516c2d4af97bafa56e24df6506a796d1c64028ed02dae512a10b82c77662ebb9696d880bfabc2f462c37ebd2e6f89da9fb7020ad7f5720eff5a662fd8e916c3d2d87a031cb3e0986fcb072a1f5250f080722be0aacf11bde2ee17c1b1270b5a9ed817bd943454de3524479a6636ac819f1cf5216c86d3c2f2aca962715f831112ebd405b144da135790e55ecd014ad7f1d431cad661e73a91efa5e8eda12c688bb899be713d89cf43fd610f68a9e780c47c1cc4c71c5e36da2282e49134d71ee6f9454a2d3d9938ed9575be11d63f9fc8147b48eeeeac622ccf4df0bc688fd205c0152a8a85babe0a3ac6d22d0fbb398fb3b2bda80bd4ab6abcb7654f830e3dde40f427a19427b3c4c8f731559c92f11422fce78345aeb06a293a3b89c9208fe400737ad27e6c2fcfedfcac206dc088407ff8fdc142dbf38c7fb02a1d349f5096324683c34539d56c72dea63c86f446353a3966913832be6227899e559002e96a620dd2fd4351a6dc376a58199cd49a14ccb267af37f238bffc9d9bd5fbb1f3bbe8d0d05f9387c5d1594f09b5b10123d674c23c5f15f7c40a418ffb051c66c63a2ba912228d843db54668777f48acda931562539e0d0915507de96a880284af7890053d1537bc562b75c288ca37693b78e0d9a7eec9d5c8ee314cca7495c5211042f694af5c20e930ebda4485920ddd4df3e8f8edb9566fc6b9f1863eebc06267e29efc0fe7f0cf2c0a0d411d88fec9c59d7cc5aa84556bedd9a05a5a780d43423711fcf8c16b11ce99ae302202756f557c83e88a35ea03807afd0ca9f3d12a15cb4dc0e661c6c65d7cdd5da210addeb9e4ad1c5ace9057c62a57fccb1abb88ccd0f746b64fc356ff85c0b164e06b5770d7a18de6b88ee2b2df66af86a5b0ed9ab2cbd94e55ec789153ecd4023b4363215a58704c58d6f17158f11df108a7a9dc3881730468659ea771837038a5594ea01a61354c2893a5a5aa5bc6aeaab8b9bbb71dc0419f1cef358a5e2ce8471cf497cc27ce09383414f631fc1705a259f5e15c4a0d046866006705a05700acbedca01b76f9855fd21d49a99b2193b1c897300f20f5f029691c56f2d7dbdc42d4ae5653eeded069afb92e55d8c5fa20859db559b2c89f4871de217174835dc52a8a8e70fde5ff21127c4c68288d823ca83fac44e3d615143c63d5646fdc734dd926b67a20391d15f962005e503357d58ff077574171f6aff2997bd751614bbcc47e293e46f8bf3645f685328557c6f01921121eb12452e8c8aac78f086772ce62e2a6ace04adb9e04a817556edb1624445b6fca39a50ad0b065aa23ca15cc74925c2fbbaf7250599e1239100a0b4e96c7c7b6901580587277bd64a5ef2b2b1b2745ac9a70ee9a99b9e12eaa9eda355d3303fb9d13ccb8dae77962c31ec5a111a1331a61d8359d52f3cfc0614a2e3acc627bf39a28ac300384a3474aecaabbd08fff69adb368e866ab5ea210f5b994c610fae55dc389b432dce5e6f6b078552cfd400e1cd70eda6c621ac62ffa5e839bdd21adedefdcaee1c6cc4b11e01680bca4778b7ba7fcae9b17227a997a2c75ea3715da46f00843e42657ce37e3003feeb50c6d5942735f82ec1e6f1fa519f950db4a59411dca03b2ec978f311e6e9fe80a014a16548d4aa6a47295a6bed32cf179940c50ab17697286c9e6cef018109975f1a0a6fadab7a7b65727f73360d5d20b8e6057c7d764f1313468ee08d5d5161e0d30c9595c751fe6ff493cd6b51538f7e3493287c9f575adf66b95c7e97472381cc20ffb77e6ab4906aa415bf065fccdb2a43a4e3697a5c0ea16059f923816a30698bdd193f0ba22f34f81ae7ca91c83ce7c9b681944ed278f7ce6c671dd098ca608b40051306a8228ce312b9d0f8efc2f489f7fcadfce4a8f6479b46eff535332bd49441a9610e028f937c4e3e3c21b93a3819856b7c240b782d6e6c4baee557b622b98b5c6dc2ac265d617dd886c972d3d17a9778d9d23641241f96653eb06f4918a6c02114bf748547bab3354592fd93a4512a99ff0f75886ae4f5e3f607cff8c60040777d8a80ed53c01d081623ac8eeeb6dab01c030517e57b36d564ffeae97a1f2b026a95e69671761de376fbd7c05a94591a66860278d755a4f53c7c03cc30eebc104465233b32b412a863b8feb14c127bf20db6b90f67a4b0188daae23f1634200fa11dffde3e4ec59a107938edf2f3a703d239cecb9600aa36f7e92a75e0e9702b61e860d5cb5cfb678ffe71bee3d1e1140729988989b644459871bb1ae0499f7100f3ddae666df63223a349c7420d0622c8b30f0fc552247436c5772d4cd63a0c1bc5c57efa0e43065d419a858a9e0826ee6da3f16b1815d785ed44d63eb3d67ebc6e089e280ea3d3cc979fd738a4c2dea0a197498fd8f46a82d5868fc6aeb5549901a38a8150a4ac85785169efcd182cb1c09e1ff47de5c954e3228824d91c2c796dee57ab913c8d7cd551a9a3635b7335a212022f992e734bd38dbe52ded25282a587514f8875e86a5914b8ffbce9625eeae50c5f034058e1488dac347bf1036a8d8284e1c24700d913afbdaf1de1f18d065cfcd6fa4931ea953fad462f5faddc9afce0c69c102e6ee1db722e512de43f17588349cc01c20e6425023ddd9a3539562cb09cc005e8ed047ae770f9d6d4b8c63529a09662c172b05223b84ea9f43dc5c82ad4f7a7378168193421c9df136cf4c0579faf1fd348382929593106d6ba678a905cf3ff80ba85f318bfb9b19401ad2dde9fc4134261f1a6852f5d18cdfc09956b9cfce40b602d6e403242c764c8c2ab907c134a62cb85c6c21cea872f129d4848edda098020e049c6dcf9a070cac9a638e8e9746b5521913dc64612bf3226a8df44e16fd082a5489ea8a90027fa6e5d1797c0ab2d7ac1e1e0790b44834dd2c1b907af988a8fa427b0dfbb07c9a7942b9dfd7a7f35d618ba4129dbe5dc2f3d3add7ea15e67db2ee73c2f037d7384cc1770223ed2d20ea31e660ff41785f2ee14efac9cef202d4bcb11476f55ee561a4b88831bbd3cf986dd5dd9931418ba1def4741b415c6e3fdd5fe945a516757873900e2bc8d1288d5ce1e42b3aa5148bc8d4618a16332646eac0cdac14b08020fd2df79ba5d6b6315cc1b65cf432c6b05b62d118cdcedd8fbdc560b90b68dcd0be3805df774d279ca78fe34457fb26d2cd6aefba463666628bea1e4c57c0a5687cab66f51f085555a385e5fe0d5f3d9c83b2fffa368a2562f6341117c61b3fe232d2755b4623b05853d1e4d7dab7e966c5686ff075c7de439e10f39851d96bb581361f9f7f5826b5f6bcc6b78dcd71472b54e919a96af15b59c05525f5329fe14805dfc4d03bb62622a755f49ed5a8eb85120dc316c8503e3eebbc0cea651b64088e1b2581a0453a510aa93f7c912b4c54ede44c46710fd667519214fa7a0984cae870348dccde81e7176b37cd900c5c99555b5fdc0c4b557491762db83ec0d32a30cd41b350ecc35735d61a4f34b732f180abc6a429beb768b7d873aa3d65159a0a13399504289ca8ddc9291cb86f4a7521fd872913beddab3b59c48b8a3b6cb071bb7d129cfabb2c17e657d98e9265090023fc2acc24959f5e43550e6837f91405298e55b6d8e1bcf5151f2f7f57ac3ef4eafb8d1cfbafc300a6293dded030c4bf3f8af0c92fff0ee3008d62c58a94d302d91ce3220ea115b6106e2677d2cae330b42476917065036164004cfb9f6ae7355a256f61e0985d0ee164df9c6164f825411e76098ac3247ca701ed3d852c2b725d88c2d4f7bae8d5a960dbce00edc0762a3e29c23c6a08f9a0bdc26fc19b86d0a41e60668198ecbe83c47e95175b3a9d8b1ace47357abd1c20bd2ce163e1db75bd78cb256cb924903136d7f8134075a4793497c41ba4d4baa05d43b178283fb62d04adfb3916ec63cb92eedce2dcd79a755ff1b83a57d700d17ce540262f8b505b396f5feaab2d4fa51c15dedc2d925fee4b4d5e7bf6b46546a190ba0fca69242e5dcf9dc060181e76c20598f76af9e13a21494872af2659414247a4e0d37084e727af4c03f194b4c4ea1a1fd1e0604bddb6296a0b60d1e999c2f9886dbcc9077f7c05ec5af624d04c82edb90fb6a16a57f41ec85c89d3d474e5ffc23c1572377a7080136a4e7cce1b9bbdffbe174cf81503150806967325f433d141330387fb702815e87058d303bfa506044b0a6ea9747ecd13edc1653a0dc3fd39593e5fb84716ed54d1d67b3f264f3fe29adbf3bd8cdef3fab511c4dd10525e501debe87ef8bb0abd4315b25e4888c3650aa37cb6066ad996e60adfa6f95ed37f2f305fd0210261a04e571e4b9b4cb135edf808eb3d9a2a0384ea5dd8591e847aae0b86169a1de23583c86b10a99a2189332d3a6254f23a4ac3f59470e15f2e3724b4b7a3eb9da329967063ac21606d60f0e44e7b4ec64929b6c9e55d7cc7a4e174c26deefa2e68ce0b8b85a26ac68e8740bdcd9f10f641a471afa0a6c1cb5a7a8f0053a18657206fb0f9442fe8a3308fa98d3e080933a476cb0d5d48715dd2390ac2e7e797962699aa5b5a3df10ecc85f4c7610879aeb2f895472f88e396471228c0b4175aa4c685aa88d21ea87f5aba91928c1165dba70900cd327af34286f678355b5b19d04d6a72634f6d19f59b1e32c9cde44c842c8147fe112c9999878d45c171952163fcd657ba4e41c31f005a810a36bb23468fdee095bdc2811102f59258bf28d87187ee2d766bbaaa0fb9d9a76fb7279832dee8863b26978d1aeaa698bf09f5e24aea2c99ca6cf67cd1c414c38dd543b203e88c48fcc4897c847cf787213d3d0f742c7ba71b9df72a9330319719de2998ba574b26f979a5293f5e92fa1faa25ed578929bf5b3be51fea48c243e129fc572f5d1fcb4ef7ebe2d378a0423affeb48edbd5aa97c4e6d52f89f9a4fd8332a949ca7564ae1bb7a137fb7e2f41fa848ff8ffa527bab66aa9fad9df00f75a4f1a77a32fe5597a89f05a7fa77fd747c2823cdf745a4f758a574feae37e5f76ba4e2899a847fa82fbdbf2a26fb6fd589ff51400a7feaa7e35b79697d5974ba0f574fc78f3a52bc5f2375cfd54ae0e7fa8ed6e5c32dede176cab683da0ecb7615db9dd76e5bbbbfda556ae7b76cbc313474b02337631022d83f0681196f44611a79a471db7c00c1b06098a05b30be98193498119b3bc891db3106011833f2308c36b2b86c38e0e05a3cfc2058308e180c1f8cc8cc1ba408ed1ed3808d3f82308c3042fc361858f02c1a66902d1d77cc0d188c08cc0cfa3481245f743388428f329d8c9b77994a5eb40f398f1aa1e57146357bf88040a42208e9bfe2d32cd25d912d91f60df186380a382b7a7dfe98d6484a52e1d0850a2a78897b8b529ad08b6e9574e6d608b6b5dde05c7f4573b5dff5b4c966b417bdd635fb8e42c2c3cf9d4a7cab093f878ab369ab2fc58241a40966c3fef7dca09560cbffcf4965ab2f4cb49bcb03601420ebac3a0889553e46e324c0bb62a0020c42af6fc3087086971bfaa788fb110ec6527108559c8d56ca3507c6bc30a2cbadc134e14e7e642b4906f8c9e3f3065e5722b45a57c675b6c69ef81fbcbf34bafe6477e9bf82c357d27a7248bc99ec430a9906ceae59b9335e9b7882d42a84c85b975120e6c7c3e5987cff3decf89a3cdad1e14661bf9935370f8954e0412c0600ef92e2fd91f35e66e0e37d61f8381121834c2192d37aaa66e386116222da177adffa9abfad3c2bafe0ded31de29a136c07ee5f03ed3b9a366d6097d923c9db048b789ae6240f3aebd063d265d0a43efb6260d17f5d4c1a29885dd3766050dd75268f113f529046290fdb1544d9d1d6376c81404f45b67fb3c2480063282d1fa9c8400234a905c63028c5d1f0b541f2560c213383ff7063d5600ce37ad6857da445d0971c989ec2e38535107c87490f1942ac09458ebd5b497024080fdc687f1300bf22f476ba99bc04813a0f1c33b63fc9b416dcb86f588848f03cd538ff84f5537fbb6597a2fc7403dd1809aaa9ecae12d2efc5252f3928159890085565f003869ac654ae9b647d52f0121ecf46e7c8cb76db3bf5ad913dba3c7cb095a4eebf00051d16770ab050b697e4ecf7675890fb9dae4bedd3f00d1f831e69ae7288d0f29ce654c470b814bce79991b3874034e64ecba0bad08a94bcb64a82d9dd32d1035f81290e0a63409c50dfd6a142a08920a1c7c4e394d16441f06b7a6d3c5ef4afeef1e21a2166f3df0ba1611816bd0f6072e279e357bf2fe219e3206234a67aa6045eaa941e536892c01f00ca2090c568d8581f18cb3268add9976e7a0c2d59b5e31795723b5347fadd21b4c1681a6e3b043e1e795b36027aec1f206193b212e2fe846fe1743c6e05ef28ccc6cb37b3322e4376bb7a62f7fe1a991c70c73a2a3e956bb417711085bf81f046107a44ff33c57cf202c38d83f2c1606f49d8dba049b3e4ff0b38b3981cbe2240d188899d21572f0908d00a80973447045ea445be104310a0b5491b1bd2317c1dc38084455116b3bad7228a7f7c0ef4db2e969a8da5db4aaeec4e5a2c65698c0b3cf3310c61d87cb13757f6ce328481a7c34c9eb032fef7b72416155b0f2c0fecfca95e208f155e8ff582ec985bacda2d1cc716d9e3c556b7d56d39bff7fd6aed4ce93fc653c50816d3049aa6fa4adc578e502664049176b6430727f4f79e5a37a2f283888a8a91202a546b2b4728205ac8f9a85ddfd463a3ce36dd38c36904d4bd7b8d997f53da7ae31c827909c154540701225b8cb3b659a79b956bb53bb2900da7a5ae461ad93648dfc639499d2110a5a4528d3fcf612169abecaebe94beca74b28df3e20dfc900c5d64f7bbc2f790ceb771de80e6a65d40f28ad1551b6facd1f9a31be72ac4bcb82236f4f793eb336dff36ce6f394b281810aff878d0999963e76237c8cb718b9457fbc637c6f73e37ce9def7426e59a8815b2d67efa2dfefa4adf8c1be7b798710f591f65485f84b63a8b736e9ce17f2a1f9fd9056dfc568e502e02f9cfbd55df7d68dbb3976e9c217b081eece662735fccbc986bae5fac0c3ab3ccb55a77739aa629be9523940aaa906cdfb147293fbbcfdfdc385395e5762341543eeff100a9dfc51110d03b9979f4e7c9d8821be725d5a785baacc507a49d71de8771516e35dab7716ee60149df6c77d69e23b48ef6c6f93d15b5a4fab4c0259348f4c1c3e18a8bf96afcbcb9c7eb416f73dae8eafc56dd3f6e9c29e7fa4aa825f3e32488f23d7b1f4346275f6637de5b51310894edba78dbf238e9ba8bae8d33c5987ba8f85031a26224884afd2e1ed75722c4a917860bd2245c76d6f6fc3ec698bdcf855cee62b636b4b74eaeccdab676e3fc999bba38a6e3bcf7f17ced11be73be71fe844054fc10e753020aba9523d41296d669b4175648592ffa7ae34c35bf90cb656ee508f5964b55511dfba1a80074c05debe284d4ba77471f6f9c432e97c1d0bf02345556c3a84c53c8e54ed37faaaa6224880ac5dcca11aa33c117ddc50639368e8b31189d2717259dce2467c309eb2fe766658bbd8db38a112c54a6699a548c0451a13c1ceaa5fad86e9fd00bfb4f55dbca11ea52f1a12810cc87a21eb083a9d0b754c101aac7065ae214ed49400a31aa25a109682003cfb50603cd1bd0dc6854c4982e14b800535587aa3a0eb0804b05f83f97fa54a119018d0628e080093c40021b88c0fccf032030810738c0010c8a40035c2a2918d00b808002380209d0486c0104c01b829140144cfd860a79389f17aa82382e1180a229fbd4734df527999d0d1c80a9290cf02d9414056802b47dea3fd404d9fa142779ae5fea837c001cd9b9b64f55a197984fbd80007a04a07b3cc1550080a9ce0c818e16418a1014a6c4a05632f1244603264c813853a401265c801231307101cd2593021610bdcbf4a05c8012931840f4863000a247c4810d0040474a1499644c4e4ce688a24e441127a2288a3411459488a249449124a2281251f488288aa28811519488288aa24344511415228aa2288a223d44511ea2288a223b445114451bd8810e2228585c104591098f8c0b0610bdc10b80e8111d620f2b4928c223136a5cd014a0907c4c41004a48411629736c420b9c98638e393a1145d1491c9e4883046c98a3cdc18b3e80a00a0f08e376e1025c40a20137a468431351066d00000b66504153096a8e4aa02184393801874bcc31c71c9ce0c20b140158210355cc71a2e31109b0c104864089307018b184493019dd85310080081e408a900820705a0b7348a21158ccc1091f9598638e3936d18428a440e0084e5081c064794f0b97e525029e319ca00372843871f283052c610d3ccea080259798c41b7d70020bde7064032b120f023168584440118918142202d41758586003588021054850ec20860f9c21126bc0a2020608431a91b80007e2b88118a23ebc8103191cd9c1084d3c08c4d8800b3ca230c023e23823062d90c20425361462087e98811820e0061744b00444c4010e59b451070cf4800e6c7861c510926c02880a1851054b9c000a410a71871f4f48c20207988226ee222230881c28228c26bc610b238011853554810f5338620788f8401be4c0000ba471060eb50616044086048027da20620507d4e10dc0011634a20b9c30630e5414e18bab8337c0210139ac4163461ca13a28a1034fd8200f4956be10093e30c00f62d8c01a2c50410ae0a084221c31c201e218801dd6d8c40a6060823448206645c8135400892dac01850d70c2015054d10028c51569a001f5b6828d0a804006627801195574c08b309080c407724840215c42a0005b068f041002124204b1073536452800046ac08233a0501972c61377fd80053b3630090b14e9329060871914400d8490018c24430320a17923d58c1e194cacc043461c86cce1065930c0174cb8c0862078f1628514e8500604da08c30916f841013720610e6ec8a88110324001245010803b481280800c3fb0e0066a0079000c6238a10354a0030bbe60082ea8e0018b341231461201b8a00545da10f5265a24802668208a2202cc31090064a1073d08e18b39a248a1430274f03112d3e040a7116c30630d241750430f12a1c62424e1864b143c48a3106bac61104df0414c156560c1016d50d1b28833989003209011061b14028b4e9036b260070128314412022007944850e20f146811680cf8f100932814115b60081f6801012564c187164fc0835da2450c26510602c0d0b2e630044b4cc1122a1370c21c9da0429139e6d842139c109981050ba2169cc1061c9189234c1a118789174ce0606300d11352483958120437ccc8222a238bd0876385075a83018de73b4b03820a683cdf71120e0801024b50020a52e0a8076aa4d14534240a81a4c61b1150e38a47a4f106144f8c208d56033e4451468e4b642c518908007150228a229368004d38820dbcb0018ffae9b122d5e04305159e160e48a281202a91242f3c3c2d1c500b074485f5c0fc90d05882340344486828f9b8b421d2f000b97ce78530031e443b76cc003483cd0cbc88349e59353b7850abe1c1433a830667b0e00c8d4603aa5e343c420fd250fb7171014964c0114964442192c828422491a103034862502192c46042248931842794b011494acc8824254b224949279294dc485272249294ac4492122b2249c98b24251988a2080050443a08000514502cc000550322a97ac2738948f21422923c7688244f1922c9138548f2f020923c684492c705511429000107903c5124b93422925ce2882497354492cb1822c9650a91e462844872e9412499000e1735a2284a6180e46212499d474452270f91d489432475c2104973039134251049338a489a3a582e11492c898824963b44120b192289e50a91c462844862692392586010492c9c48623112492c238824161e91c4424524b13c2092580810492c5114450d18c001a4282405402149142022899203358648a2ac104994132289f24124516a4412454624519f48a26624515c4412b5452451564412c59144a94412f58048a20e104926e844249960119164823822c9046c882413c0114926b84214455000208a023c5180014807d040d4000c84a186480ae3099114061b9114460b22298c239114c6153a084000247a882424748824246d882424618824245a88242452882424458824243a8824246a44511400030ca000928404009104062522090c43441218714412186c882430c2104960302192c0702392c0402392c058124960d04802c34814450788c20007380282483a2245241d4940247d2147247d718848fac20f91f4451c22e98b3244d2175e88a42fa210495f1c218a220240e0001290bcc8432479818648f2e20991e4c51022c90b1c4492172c88242f6624798145247901a3a8c5f3ab8b28ca4002a50755685e66a596bc07e50d3d88784188e8115114a16c917144a611194664d8003ab96b505fe860ce0b4cad95e6da07c1e898626af1549f251a108501e9588244814a5420b38828ca28e209009420c633df8e208a328988a20c220e114519434454905a1086288ade569e25bf728416c4c0040c520b764c3f4ce6491c241690219256b089c8561e4d8c67ceaa43359f28ca14228a3284484004445a412886078fb72db50451941944146504a18210e83375223356a4125051e4e198b0c800d2188aa81f502610519840218db103f499aa14f38614d380288a8200e20f1688fd544b40a03964139a434049ea731145193fd86905740f9a56d86945e7f391b5caf4810f7b88a2c8248eff01c3897e0c4ea8f2cccf6ba468e1d0215fe74b91695361623a2f2f30457c4c1f4efd54a14ac4c3d96202edf80fe8eddf255348a1e10b682acf87851263baf0e0613d218ec688666261d15421969018ef6161d1dc6a0d5c541616a9a26a903c0a88a2484a2e509ca0238228fa9868212581238a5a402e2e52922111e8339da010463a303e5e46d10924c0c26903c78d48c383b3841386860787e301625f6ea519a291362c1b11489b1d1a1e9df778360768b94414697868785041c5ada8b855f54a42f73bb365d6698240a116fb9d259527499df75614f59f17160d78389e259526f459a29940130d695a11451a1e9feafeffe8bcc753435d74607e6451ad542b839088b8cc2199e07d5c5ca817900a90fc21ca0112285670a40e41908e04c98c217d6105e389a9a8af842a81177e0c0e28f49f28ca0c400fd18f288a3891d4850aa228ea8272d1082efaf0970a2e0210511da9881c11e83385605c68912b343c8890218aa208e589284e74a4208a3267600214847442c82484342204fa707e5849c81b511402c16c01ba423e54ad58212b8958e183b47287288a623a5b6421a5951cac9021ad844255a708109018738b0914a48887b3c5e4a2d9c1d14cc1c22285e67f68884c16d05840637f0a96242c9a90a5a2d24c293ccfa205cbc4eb61de7e677e944cc1e9743c9514f3f39a1820f323a72495f3a1d5fcf808816607f4496628499d34495505d901ea4c259f3fc1b403b44313333b53686aec4f0d28c663ffa3795a39a13a3f433413e7f399342050e7359e2954559fcf928a4835c44835c44523359acfbc1a10cc3405488a978f66d24c3b66685a161629ecdf8a7ebeea14d168e6e735213134a0221afb285c483d9e8822902402382411c40025129d597ba0f4e143551728059042f046f446aa212800a0909042a091aa608487a31952051ca228d2402455b18428ba804653858c5443342d1e8e143c92aa5851a60715ff7991404087288a3e54299140708408009c070189a40f881145d1e4e174a0c543c47efd543f8cd42a887debe154d013b1448a58b185e57c42f3e589581bfa2a4808047385fd2555448148f2c0185114559f3f32439dbfe20a909d7f458b871313e27438445a3c9c10e8bb90782001080f1c4451d499301e8e18738b09c6ca0abca7e258cf9cd5152e55285459a199aa1047f381097d4bcc7401c1543145aa2b342f551210e7a3f12c89d184a6a60265a199ec53ff81a90ff2705834319a1dd5e7c7d06c20a6d399ffd94005841091478848233d24112c34d20a14075440a3021568ec6b40508546052ad04c21058833fd7f6e6612d2abc4d4b942c3d20176b1b9039d0ecc0b8be6bf886602c1544ae6adb79affb93b8a54319e1e9a093439311d4fc5c202c3325940a01da07babb72197aac258a199585860aa2f56a0d1687658cd8e0fb87036455ee61620d0fc4b4c0a34dfe1bcb854b5f2b0b0b0686e55856e3581421c0f4c3f1145911691c45e88a249031ad801baffd1481c3d9eda43c3639640a339430c15c4a00d1c4444b458593da2289a3c5cd86ff17036a16a05b4c5fbf0542b1d70e90003864057a4c8b4a4f22499ff02facc4e7dab89097dde02d0814016f80f74458a68ecbf9d407486a6dd806616f6a5d8423381ac4793018d669a2cd73385142ccd60585858585842a0aab309699e7aaa90a7aa1e96cbd921058be661fe562e208e676eeabb80be53a9086d5a381d0dc86a40951302712ae7a5fac09442a399134b15463e007299ff79970a742b2a5a2a312a2b34d38fc10151e1e174510d791067490788a67acda49958425f4433c50c4d5b85401a78992e528076b454214d08e6c56aa62b8008911ee0820d686e6056a2286386288a4c240ca848183000064ce6905418a1f20749250f920a1c54b8a0f286c60c51f45269a6c080141a1e1dd04c81018d660706343c5e2acd0e0c68a4d0ec0069c2905460a0b299420a8a07557d7e0cca53798c7cf5549e880bd2053810813e53e5b1c01a00902ca00049023c902a0089289a2a80870ad00a10e1b101cd2c365f917c9078905c2414091224164002c6009ea8c0139366fac05050a733a94d68be45c304520400214d400e50f5f9313e1a5088433597b3014913480215aa5e3c558c675231947a4a0241a22802b2052e38e10968c8942100276980801a6cc8f34a9eea7092502198ea6d55a9d083a897f9520368243500492435808800f6e080275410c705c471e980e48008743a302d9fdfe2c7639109424ce8c5457a847c2afb9f213d2a1f9df94a9e88070810326e445164f22d3304a25a3820189790e741b4470ba708cc165194f941e7937c3e9567538bd84ff2995b84aa15cea782debecbf4803e1463451499c811f35a14f92b1ed4993f6050203f1f1945191f24111245991e647890d9810e40358a326db0a1803c9cac4451144624296013a1e041705a5458cffcf4b4a8a0424a401a127004cdbf5415a4f17034b3487d255492f94b78f04832bf041f1717132848521d2249d282948530c0d880661692b46909465194000901725009016e4451a4d17874d8404719084002830229480890420851c81145d18b08a428cc10453a9814c509a42858a228d25100090a2b221087f34a2ada4382620b12146d441a10c74e1aaaba402981740039a2289a6247cc2791228aa22922e9006588a248139a9fe40323e47f10e9c208ca13a2280a45d201a228920ce008c90077d0f0d084661751b81860471499c82115800b0fca98210d400e5114490388f14803a840ac00e8e0f108092205c00e5480a4002c89a2ea3d9566f280e00312005a074e2e20e96002e833f1a0a81521408a10915d50128b1e4484182942513c6ce5c38894745021a5bc21a52c218a40524a24a1d0209250541049282e9184c21249285c44128a8c2494e900058042f3c4492626234692ca481465964451464914653e10aa3a45a2e88406d2891118215c803c958f2bde562b574875af90aa53440b22f20ab94240bf69e164f12324c6af806ca7ea01e204b11e8e163156fcc80204ea5459788480fe7f8851510f2849ad82f8001101553f3ed50fcaf984409c2b42a019c448c8f34aa47d6b7b2cf9150b0414aa3ad3e79578aaaa01cfe4e2027adb11c245e893548e110fccdd840e3611b309219bf8a1d1fcc7cc170de833590fcc35d180263e110784874c7821027da698cfac2c1a0f27328103138d8822967f8909512c1a4f162c9a5b61a20b39dc882604c88164be95630208b84409a22882b11a1e2d5510232e31210e0f1e43e24044144526881060892ca248c8ca1641b440402562b481284c0ab000045042091cecd007420c228aa24e848049c401f49980a064b0c84898f11145192ba228d3238a322288a24c0832200890d6f8dcfcc62749900fef7aae420abd32dbf804098ef96bdc1664abc1e6184717efa37f1f83ffd3353f828c9752561dd2e6b72aa346907cb9b1d81c375b46172b826ccc57a4ecf76ba5b53111e4e2dab6bf3e8ff7e95a6c08b23af35d7ceb7b6dc168c58910e44fe8f1d1f928f58eab81a816fa54a0e69320c8e6d9ccea75fd9635474f80e0cefdd88acd983d5f1dd9e34a19accfcde6ef229fb82169bdefdeedebe2c6d9c5931f48f8b155f61032ca3cceb7cf4c38f1816cd5beea5ab58bde3bb9c2324e7a209932bbff0d5964fcab6d9c81d47f29324d3c9090aef6e06d0ddec720fb8d4f53749fd00b0be36407b246dafa21856f313b7bbb269ce840b648fbc1d9cd1e1fc2e95c1bb2d1e706dbf2e9f1fd3e1b1242e6a7b1b23bdbb99c733990cd3c9bbdfdf19b63b783c2c91a72bd73f032eb3e3ef798834938c181bc4eed6587d6d576f6c5c65d348a1b114ed490b3f1e38fd09ddfa3d15d1a725e68ad5b6f5ded6ccb16dbe0e406125e071d5d6f5f7cb8a273ce067251da6cb317bac7fdd8dbb021d3b460705203e96bc53bdda4b34eca5e6ddc05f471420359237b9739b6a8f764f7a27082867ccd7d32ac7039f6967b6fe508654f6620235d9039849517e50a6d91696acc143756c29e7072869cb4add617f6add4db355b6d42bf05e7a5876325cc143b56c2a670628674769b569f6cae8db387335da8d0a702852ee7631b57712203c9cb56cb153a3639b653d02bc2491992e3e31999279dd39f3de2e0240672561afbb5d7223fd7ecff25c6c8628a7f704286fc599b7dedec5d5ded5c30904c696390b9b996b50db2f6527dae98a697ea63637cc1c90be4b4abf97beb7dad94179b26b872845272e202595d63eda95ded2ad3d87348da74b2bdec26ec4819dd38f5a0aadad4ee447b8f1db25edd60e3c75cb365a94f3ad7adccd5d81f8a7998439512ce8b03c38413925d67e79d7031f3f4e8e16ca81f83039aa6487163c36413d21f9bf1c1c8cc4db65e37ceef85c04413b2b1cfb6afc24addbda862040b952144860451513112843dc12413d2dda4cee9bcd1b58def3c8f73608209e918ad91365ccb3e85976d9ca9cf873872c8465b652cf6fc8eb0b29ba690679a6242d3b498e2902726d44930b9846c9439376a79fe5bb48d045199a697e9e269985842ae8eb3e15b1f27bb0ba39ca6fa769aa65603934a48d81cf507d77acfd9751d15f30941344c282161a4b0c1c8b4a39d33de49c8c60e5df4cbec5f36ad24a4f77c3552ef07bd5eb69190d0fb2147f82e4f7bdb83846cf65d87be1ebbfe26ed47c8c8cd3e8594bdb556639d0ac8347daad00c01a9421e20d3f4f91087aa421e0e93818923649b0cdb39af93d2c9be605ea8241d18da999e8f903b3f880f952e547ca868a1e243659a3e9fe4335dee13795bad4cd3344dd0f93990a76236b1844923645bcdfd2ff813326aef77a8ca434576f56d5529c808e9d8d618e972ac3d6c972d42d6c59719fdf57755fa96892298f5ebf8da73ccdd397eacf9fdbddae6eedaf6285b9344c8c7185dce5e4667acb4318708d96c74ec9f757bf3dffd698a143b374c0e21e97cefba667bdd7dd6af21a47b7b6b0ee99ab051d636ced5f570e20a65d3e4a0ce8b0bc77d6756d062814921e4b3cefeb3ace163a7cf04268490915546995e086dab8bb98db37dd064768390cf20ed5eab993e630b37ce5485dca1b308c7b6124c0421bbed7d0dba49e9f3c6966384492064a4af418f11da08aba375e30c7aabdf16268090ec6bb3cce782bc78b64bf5b92ed5e7c734b93b57a669ea95239409244cfe20bf364bed8dfc7e52c77ae38c82a742d5a918c1420505f25d3846a6699a1e5c3942c198f841c6c5913ebcec2ebdb0d7a7ba1c0f0ce43e3c6ee6fc628ccebdd88b9f536a21edf6ffeb59f7a994cccea55a389dcebf8e31e183a490da7ed4356cf559f66d0ff232c8edc53919a3aec2b87126e2231a318943beea9699adcc995b740fa6b29fa984b51e646bb7767a5db47ef33b1f3429e7339538e7413a9bf017fdcbb1b5a38d07795bf3da1ebf5637ce4cbd7c08f4ece22a14fa4f08c4f9c43b480bd75b4b5d2ff80bdab57116a3a2547c2b4728294cec2069a38b598671f6755f6f1d64bfdab3a95bdf1e83cd267490ed1e1d32db1afef379e7205be45f0bc6e866fb6fbf716e79cfafc445031339487b5fc315db5ebbdaf7c741be73f728d3782da5b15e38c8eacf1df3056bb765ebdc3827e925d58b3b62f206f91e9c0d363f56bbd1c68c60d181d902dec1c40d2d36d838f2725e2c3676ed3c699d6fcd8f4cfbfdfe67c2a000d4ac029336487f6e4cfde77d662b87a2421f14807a9aa01a266c906c5ecb77b98e77c6ea1134a1ebd7d2769ef3e3ad415a78bb31f6eb325dd13ab87284f298a841b6475fcf878e566b6f9c69905c2dbfbbb8b2cb6dcee9e1dcdba331618206f99c73aecddcfaba6a640a53e40c12fa7adecc6dd3d6fcd9c9e43481ec672eb11ff270aa21a0ce73565e49f519324dd6f698a6e70c6ae684891924b395c6daed36ffa6916e9c5d3ed59d27b093f2541ee73248faa67dfc95b1d3f5f89a90c1237becd67b1ddb8a317284dff6b169e73bca776d9cdf2b81c918246dabbdf5565b17c6b5dc85612206591d5dd75dc8dd2c322f4cc2201bc7767f19640ba937db3877605ca898cfbb542d214fe5d2180cd2bb35e8daac5d5785f56d9c290c88c16630ecf917245ddd303a6afbd208ffbe34152358a8c42e324dd3d40c669aa6699a9a831ef578e50865f202132f4877fb27654e1d6dd5f1bd2c267048e66d295cedcde9f59b6561d205e9586b6d5df3c798299b9eaa335d38b19d0917a45dd5cd58db6470596edc2e301e932d48eaefdb31c7c90c27cf8df36a1718cf1bf232beb7d5e51c6b1546c7da05c6a305791b5b7b1b6bba5a75f6c26441d6d5deeacbd8db7a7cda1e070bb2d90bbf67c3079fd9c5a8c915e46b6bbb9dafbfc8af3576d3c40aac6184ceb93dc2059b63acd91fd2ffcae84ff677e3dc9ebfb870980b8c8755413a56fde16a6dd1f66f4297ff50415257697b95ddf3e9600ca594702cc59aa72029af4a1963ea932d5fbc715ef21ef6f94dfdcc2ff2091561f64f08c4a420ffb6e6ef7f91b63b652a464156ae91b5dbcc2d877356fe84400c0af2b92f0be965cb97a9f313e4a4b7b17b1b596568e3dd38571c2594fd5494a70a7d2a500c7d2a507302afd72d726c8eddead80d9d63b4efb7afc57cfd8ec0a409f2c649a1d7faff6d3ac81b67f732b760828c2bb29ef3f16571b6e38d73cc27612f738b2548e7a273d6d79d977d5dbf7176a187d0440992ad86f597bdb0a7afc9bef30263642541baeb1a75d1f95a57dbfb8db32bc20c432e9721413eb3cdcdd67545e638528ec911a48371c29ecd76bdcdc5f7a197697bd83964826fe508d5626204f99c8dcec2cbf86f6d0c9d4911e4b59556c7aa6b6b52176d3421829ceba985dea8bd8cd2b728d0102463ccb0df5567d62c64d6c359e281a93c14641e264290dedfde473a63b7ed78e3320982ac1e9f5d3799c56a9d1d08727d8d3fdfffbdac325e1b67d7e2e124893b4cdc90f4def9abe7baed3a6497f16b931f48e7daa32f07dfadd67a8bc0c407f2b6d5cd5ec81abe6db3be2b4c7a20ad439f6f9dbde6d52df37c87f23cd5daf140beb78f4eaf1f59ad6bc28db3f5c0541f2aa6ed40baa60df2638f6fac94e1d38184b5413ad99ccc2cb77ea9a8c83020cea7c599b421bbc14a67e45e75417f6fe3dccc06bb3777c75e5c0ca1ebc79cdfaacd2084f56d74dc1b67174d72207f2d581df4079dd778efc6194455b6b17b266b480bd929bced1afba7f0866022087e4220c64c70202fdb69af5d6c9df66b75e34c2dd6c3440de9e037adf732b3fb07d9c699eaee74beb634647befe04fbecd46cb37be95231412931b4807e3fb3857cf76ab1d773a5fd75b39427d616203b96a37ed77df5b6d76ad1816888a91202ad3344da0978a7de508654d6a302f7594dbc7d8fd16b2699a2617188f890b4c68b09a1b77638fddd1bb596b767daf838f41d89c71375b4a4cd090b1d782cc2ce5ba1c9ddd0151ccd6f32ebf79999f16c7cd3ec46406923dee1bd9be6be96d4c37ce2667c8066f5d6bb27b3f48db6d9c1d033131433ef8fcd96aef8570b6e68df3e2f8625aa015263290f4f1eb689f8ddd9abdb871a63cdf718e79a9aa53b10e46c5880a75302ab1dd9b9421e39dd7dd5b375d5bf4b68d33d58171591c03c9de7a9edfef1efc077de3dc4baa17aa03e3025713a3590bc70af8c890d0b9e9b3e69cb1d6b5ba1e2095e39943a6a9ba1e0ee52b47a86b0203b9ec65abba17ef6a8ec1495155087ec0e405727aad9751cafddeb2d56d9c3f541572d1c405f2dd52cbdecee54ffbd6b75415a29cdd05c6e38116c8562f6d175f646817a4b10161815cdedcd5c5e5d84f366b63b10279eb8cf3b566adc6fadc58a840461b696deeb2f9de83f153201f7b6ae982d731637b218f21e35d8cd55bdfd91ff4f50981648c6cb0d519578b1e216bcf9daaa2598821e18cce39ef8fcd5cb7b7934ba4f5661d5a36995b6eb637ce547bad043e7f8d5df4b71c3b772eba5bd6a1b766675366b98fc04858d9638b29a4d3ffc5b77106853ef385b21fa2ec7c891c82905c77b5a38b46db1ef37c61134856fb167cd1518e1e59fff8c8e56c33e5e7afcd46276f9c3bf3d362e74bf3e74311a24032075b64e6d1b50bdbedc6d965e045aefbce9a4eb6ac99bd3da629e472ddca11ca8b4a725b3ffdb6ea208b1c12e3a91618fa967a9fb969907fe6a6b6221e39abc76eef18d7b7e27a2b1612976e35b29bd4efd77963db38c366182ae47221161de99a856d239b0d99fa7db0994ae2dc839157e418e35bf0b56b9ecdab696c14d2c87cb507433de8335f1aaf9c40b29beb3a18697318e7f48d73e853d17901ceea06df7b15b219eb62cf40366ead73d05da3dc6fb6c72b2d77dd18d7e4d71e9dac697121847e1b8b71ae582f6bf1d5b209dd63cb90e9bbd5ca5b6d653ae7f78c1136ae72aef7c956adad5118dd8c90ca7e8b7174b7ef8bdd4fa7b4f532c7fd26bfcf67e7c6563c5824bb071fb34ce372b36fb3b6a2a48db35e7f3f6f3b5c94ae8e2690cbeb7ccc365b8f59e76ee3dc7971e150211817aa0a51d0c3901e276b67f735f6d03d8044ce1817bb69fb31faecde6e0f80211f7dff5c2faecbfec7b8a4f27744c67921737fbef4de46bd72a93e2fdc3cbe80ecac39bf91bf5b7b1be797ea63198817142efbb65dd8eff0c2a080e381a1409cb75202c98ef6a270f1fab8665b972e64ff7d58616dcee9848f6eaa10632e6a335b9fffdb7aee37ce54e5846608d43c0223d25a8f95398e7e7baef68d33b4c2ad1ca1ba0825c25a84eccd61f4c61ec77eee8b3e0b1d6495bef63f060704735556c3745e5c38ed5c603c2ce472979040d2f820c3cbe65b902efa1be72ae4e150cc0f3a101d2257b50cd9d2b75e5f0adfc639c6335da80d686ea210e9ff665cb6715ccdbd9b1b0f9feabec418898ec20459f9366bffce28778b0fa22c41ba77ed5e48dfa9eb7eac04c92653d7dd26b3934e7693201b63bfbc5c7cb32dc74870cd18648b6337c7b1b98e8b3efb6aacd0bae9cbf108508e2069db46bda3dbc5f3d98a620419e173cc9a736f41cb6add3853200ee42248689dbb38296da6f3ba2582e48e0c4e68bf276b8dd62148ebafbd45e7b6f9bccf8520ab7fb3b3b9f9d88294174a10a42fdbab2757c7dc6f5f2048e67b21a44eed6ded7ebbaae3639ade5375ea7343bea55ce783fce6e58f14e50772ba5fb171ec18dd8bdd283e90adaba591ce48efaccd3e6696a05a62a48100a507b22debcfee3ffbd4bddb0a151f0f8507b2ddb3cdb6c54af9c61b772019bed756f3c6b61dbeaa03e918f38d5f9b4e1a697d94362464ccafd2afbf6eaf4651d890d432adac2fbcce2be3ca01941cc846e97bd71e5e68a39b5e75289e201027e4992e302614facfcb8389f9a0ac21dd556ae1bcf5d147fbf1c62315283890b6dad99c8394b5c6dab496e21787286a48fa0b3e9c35c2b8acdb84aa8a76152869c8b5fa7a9cd432485dbcb70a4124283790dc60b4ade185b355d71c141b48eaf7799d8e72838cfaab818cdc7cd7b5cd1e75ecf29d77f98e74f9ceaf1ca1260a0d24b3eeba368bf0e78acb32330a1a1246fa2adf469b1b3f9fcc3c83081f37771edd7bcd6faef265cf5f6dea3b9c1005e2174851ce9034fabbf8f7fbdda78f576381628664f5daca8f395bb3b5fb111419487f4f6fa5d159b319212c43d26658e37db4d76c8d3a9418746b5ecdba19b6b6205cacb15d8cfe4367b5b67f5f1432e4e5b95eb3eb19db64c8191ba0c040d2c8b5d2bfcf9132fbf972633ad510d08f698ae9542fddcc2d3ed8ca11ea8413282f90b1ae69df27c3bb3e3a4471819c0fbe47bd5d7ed7b98e8d456301fa314ddd32875c6cf9398d2fcecaabbe8d738b87f3e1cc17c7a0c59d906d31db907e74f4e96decd3e371f5c4805a15194ec87919d766ffd93767d96f427e845f5b8beef8aeb67ce31ce250ea419f57f21fe7664dc8455d7fa3ccd6dad1c5ba71ce84742bbefbf7bd5be97dd72fd3857591c1441419392090b98402329680225309046428b180cc24109091c402329190ada76bedc1fed7ce36ad42d46a998184ac7dbdfe5afdf4df650b8b235a807e4ccb3799474838197afbb4f1ab33571f2a4040d311d256f88fd1f8bcbc576c8d908ce7476f3b69a4fe9a338cb0ef26e56eb3ddd6cf6e9c5b5e7e301646547ca87c7e6c3184bdcc22a4b37635dbe6f7a3d6766df623a308696d6b06e37b7fed311b132199f505e37bef6bab5dbf0a79f7c82042aeeee7a0c36e38d9b294561dfa449039849c6eefa3cdd7b27eeb8b947dcaceaac31a0419434808d99b9b7ba695ef724fc5a13c1caa33392e9527a653bd501f9a309da9e4212b84a46b79fbf5d8acb132c7fe40861072f2eaf9ef2d6fdae683603e2d6324e1f64066106ff9e2c6de631de15b0e5a18dfece51f821184acabff7959be75ce57e2e150d4e73607423e7899bb76b91bff4deb80900d27eb7ee8ee64d172fc83fcc7babeba9c377eb3dd0f92ef65ebbadfd60cba657d90dd76f99ad6b6a3f12167f8202b83dd2e2e7bddc147ddca335fc4f8d53d24b307b99a5d7f979bb532ecf9f94c53cb18498a18f9f103f4630a813a946a192349fb201387a4f779f3bf93b9a3d6d28d33a504be3d64f4202b7363da186b7456feb6715692a471175ab87e6ec8e441362f38bb32a570e34c5516e241f2b365776fb51a23a36ee3fc6ee60eb23db8aa5f5e93556f7cbf4375e687408ee367ec202dbf5f76cff57cda8516bd46a60e923138b9f9f4b5e2742d1eea718b9521982d16f7dbcad34edcc8d0415ea70d6b33d3f59857cfcc41bee79cd2e81a7d86ab9b1cda5a2f7a8bb0adc72dba15bbc1f6d7c2e66acdc4415ab696e5ea1ced19ddd708327090ec1f2dcf1afdc5e76aa19079438d8b72bceb4d37f07af0c107d7830cbe66ed2d6eefad87d51b6596b541f2a23e9b52cad4bd35cf820db2baaf652be5876ce37c59ac4152db1cac0f36371d6b6c3ac56a90d679378416c6870f17cca441b24521bb19577d8dd5c6cf3517d354820c1a64df58e37db169bbeee36f9c6de54229e1587faeb96820973943378bce19c7e60d1974ec1c47caeefefa72c8ec14e3b3f8fc922a886b66586badd62c7237b3b78bace347ea9159b5cf2db71a46a60c7231c6eeb394d725838cb6f9d6d962b49931c8678efa5b95d77d0adf37cecfddca11ea8b8c1864a4ce72bfc7d87abd1dffd342302f1d0619abad944ee8d5d577d753de302f1e20a00f8c8f08065fcda3bdd33a5baf7e819bad860d32d790ad05598b6ef93a461b7bacffc6e9858643c26ec6d441be975ef65a0d325d90345a6e0bba65b5c2389bf520c3053919c746616bcefbb946b720619ced45d7ae77f7c3f986fc48e7cf0b2d7b2dc8595dbb6ff2ea87bebe4922d3d46690c98274eb63bdb3f963dbd72e16e4b77ef72eea687dff3a5e41b2ad13d6cbee7ab6dee8ac20d97506e3821ce13be6de3439c590cfc85441d6f86e46f81e2e77ae940a72b53be975b6615bb1b9360569e37a94310aab3343f6884cd36b29480627d776616d75f53f1805096bb4cbdb35632ebef5a020e1ebe9b1dd6cea13b6f527486f8d355a973fbf7df5320f324e90af2d7474356c3cff5943d70439677dcc1ad3c7dcef3281c1051763cd39d8ac355ccfe78434f2e5f8ec6c6c4b90b1f9f26dbea27596b1aa04e9ab35fbabf5abd11b8b4990b02ef7f5295b94317b764844829ccea7c778ffb67ec762199923c81bff56afcb397f74371a413ed8ef469fd3dd7ea4ad0892d78d4c7f5ef8d05eea3334afc81041b267f955fb9a8debe1fcd643903542ea8d299bceadcba810e42f585bfb8ffe2df6ea4c1024b34d1f7c5de1850cddec0c10643f5bdfaa5bccd93db68c1bf2b656d91d85f13a5ccc333f90b5c1d7ec45eaeabdddfae3e2c23e2e40323e90cbcecbe89b2fbaadaba109323d905c1f57e7ac4516ade399e141f37b0eceeff51d2d7c991d4848d773777d83acde6f5007d21f6befdeaeba3a577d6d4c7b598cce3136db5d1cd9f0e61c6b08b9b93906198b0c216dd620e318ebec1119492607b2dda48c4dc7f832781967d690dd6c7cdf1ccfc9bc61e3208303c9b5f173ecb185cfdd988ba846460dc91a735b97ff4edbd7df4b23938664c6adddd7f15f7bd86b9aa689623884cc0d246d8e2d3aebe509dbb66a03f9628dafdd5e8b63836dd540aef71e9f7dccad07cad0402e0797f387ec9d152a3e547aa80c09a2f2603268c8161d7dc796bbefce5b6d1032339036b676b75d3ad78c8d52f683cc1992ef6b963176e77e3e5b7c838c19122ef616fb8cf79d8d8c0c64dfe59c85b4fee4f6d89d2648b167ca90cb3ed81ed76d73dadba2908981b4ac55da75c67ff551e7889021433ef7af3e5bd90921030309197c4bfb2b65f6bd16a7292a21f302191985f0efbf659671fc69faff84a8c56d645c209fabcdbd482b849356cfac6f0e397fda6ef5278bb7edac1b67c78f4770d209096ff47fcee97342ae48bbdd689fddcecbcc578e509e934dc8b6d467e437ddd3d7306a42d649e762d735f7159b6326a48bed7d8cb1b9d92c534c48eacc6ced4a999ddfdb629343ba15edbf36ebb3f15a66d3344da0767209c97c32565f835f177dcb969090194f76edeef85af795903caf2fba2cc376fde8a4845ccdb4465feb35da96b54938738bb5e538b2f8fcb9d6daa3a3b7ade720fc5a25213f42c8cc99d976b031abafe42412325adbdaeb5aabedc92624e4fdc50c2e48e163cebafa08c9daa4755e16616d377a74845cfceea7f3392f3bb3ae11b2636bf6b2bf77afdec918219bce595b8d6bb9a5ceae45485fcdb5d1e99a63b12a42d6d8f1d6462d77e4365b22a46b0dc2eea77135e7ee558e9248f1428484aebe9e6e799cb3b2780f21bdf5bb10c2cacfde6a6708b7225ccc8ebbbdf6b8bdc7e2b3cd4d462d6b31423b0b2121745d59bb0e27a3f779e3323821846c487bb1d52e6dc870b5c683900dc2e59aefb25edf3f189f20e48cffdc5cafdff2c7ac4dd31408f9adc2e95a850c2d655f5bf4c1092038d2581f846e36f707e9ec7218dd6dfbbfebd2699a2648b1737e90ccaa8d95af5d2c7ea5dd07e9adc25eaf9951c8abf1e135876db5d5186316dbc5f8609c31d636bba99b8df61e64a4ccb9fbf6775e7fbc5c1c92f6bfb7f1e1d7165b6c998df520adf586b5aee6b19fb16964f1e2933cc8f516adcdf67aae2c4e4b41d85c243e788207d9f3c29f37d6f7286daeddc91d646c67919f3a64da90b9133bc8ba1c47b68f9d6d105a6ea93a90f33229b67284622775a8cc7a5cabdfab959fed5c574fe8c096adacb9652fb7eb6d6e9c5baa0e9b277380d0d96be7a2b7b618ae66917a6c1d9935eb67bd0ad2d2520579a956a6a9a5ea9cc841d65fcccdef68b9b5d51e4e711207091973deed219bf4e36c1b67eac2e9509da9640915fa16c68e5d402eac658c246ce508158213383c7f0ee3e3d72b727c0cdfbdbd62830dfeff8bbe717ea1e05b394289e0e40d72aed7f6f533c7f139bee7834c3f06e7c40dd2a7a56fd2f836dae7b71be725f3538516c7b79f07519d1717cee236c836a947ca9cbee5bc1a9c268714371a276c90d1e79acd73f5acad5d3bc531276b90ebad78abeb6a57748f5635c8768eef41778ece7fbfd2d03142171f3bb7c5628b8f35c70ea163bae6f4a9c5091aa43fb61cb5935f73315a77bd727206b92ea5eeeedee894ef9b6690956d63f7d432e8a2eb5806b99c320aff7db3af55f88c70420669bf23bbfbf4cea6b7a983699c8c41d2552f739d8e5e6697ade8c689186485ec7436ebc728cff87a8d9330c8e51e5f18edbd8bfdf3398413304866d79779fce9aab5b3412b47a8cdc917646b95177cd3afe545694fd33441cae406275e902b3e46eb9cd459769b7d9b88c5091cd2f99b31bbd6e2b9166c7ecd5d90b455bbf8dd8291e74fc705799b5f585ba4b5db5b645b90715d5a27759029c7d96fc8f5ba356fdad0f97932e4c55ae8382dbbc7cdf9c52cb406236bab1974e79139ecc8a67b3bdf5d6ff9e51984132cc83b1bc3e755e3a495bb6efc878a91202a20e72b4eae405f6d67735ebb7ae32cc66f3af274620539af857ea3a5afbf3e184faa20dfb2ce3d29dbf96c59374dd3628a2b88e3d2dea382b4ed41c6cb279dad527a37ced40bd2c30a2141b0788fa720617cced545bb578cd6428a59702205d9dc9bd9c728fbb47451d8c6491464bbf12dfbe8de9ec64ba30e4ea020df9bcc6ec3b99ce962a09839649aa609520c9fc0ed9a3dc68d715c0eb66e36dd55c71ab48dda76edc6b985bb33193be3952394cb8913a47308dbf4d81ea515fa49136433a73c1bbbe758e35e274c90b6696467d7dbfb7fd42e4152feb82ef373b117d35682ec6fd6b2bc051d6390d4d6d6d131ae8e313a5b8718e462cabc217bb7c220ab6573c1f7da7560906bcef5bec648193366ed0bb2c16e702de8cbbad5627b4142db6073161964382475b611b2d9bc57b3b9ba20f9b285b7e7f5e7629ccd0519e17b2f52377db6759d8565e8d8828cd6b6b79e3678bd4dfaf80a3ade70ad1b337487edbc39189d57e6eaa38d79bb0fda6f69e8d082bc0fe7b3f68bae05a36b5990dc2c63f0cdbbcea0030bf2b2fbba0f726c5ad9b35790f5bef39fafe1734fc62c061d56907335bba837ca16db58ebd2828e2a48f722a48bd5bbe88c7eb9d1a0830ab275ab36befa5afd766fba30e898826cfbcbdd5bf3f1836d971186438714e43b64703ac8ed699cb0be414714e4ec79ef84fcfdb5b2c7d5051d50906f51caeaa21d69b317743c41525ad76d2c727ba70e21c5ec0d1d4e90cc7af964d06984cf96db3837415eaede60a4f4afafc5cd860e264817ef6df7cdd7ecb36f0771a0630972ba855c793d6b6b56c736ce91d7d0a10419d9e40aa7b348a18dab73a023099232badc9d33f27c6d42b77176ac083a9020db53e7b7c247b99d41b8716e8c083a8e206dcf159d9dd44d389f716ce76e2348c61c64d66bed6aeffd5b04c9eef56eef75bb97c2698920efa46ef9bb8bbeb59cd72148faf3bad658b7576b7321c8199f729b4def5cf53a1a04d9da6c8730aee86685160812b2e6ac17b5d717737743ce15e37a18615bd1ce357f20e7d39f9575a4b35567d107b2b2e6b8f8317df8d47b2099edac35da0bd99cedf140dae5cf238c6f421b99ed404678ef7bec93ddb898a10ee4b4d641c6147a8dce52d78674f0d27657e19a10badbd890b1adc7dc9d8f56ef779d03d9fc1c3353c68e591ad790be68dfc83cae38bf9d71201b7558dbceb8965b550dc930367deb17a3cee05b3ad290ecd9d6b367746ce16baae306b231d69ae97cabc6cb26ebb081647f7e6fa7bb0bdef8968e1a481a67a3d3af7dfff5ceab830692a35bf11be3e5add2f868c8ae8f5518e95accfabc76e30c7aa9423390bcfee16ad7b133686b7351f20f888e33a475ff0fb6ee3bebea478118af1f3acc90b1dee791525b2fd3e8a60c24fc6521ed86ddd6fdb972844a818e32a46ddbe87bdade5cd64217f35a340d74c440dafb90c6c72674b5f19c530d7490219dd37fccfd6b8eef5ec340ae781d852b36731d2f90b5bae81cbab6b7ade708a3c305f23d66ed6a317ed71663cf21ddf9f4beee173a17ffa7699a28f68623a513b24e66efa4eeae833f21e584b4ec0f276d9fd7a15d6d1312ae5bdfb77b4ed9b5bd3421d952770da9a3d4c1b96026e4f3baec7b10da860908997bcf616371456f8f41e89ca75316ab3b3924ad96b955f6e682f62d5f42da559f73af7bd67e386d8a25e4f38370de671fadf77de677aae322a512b2d1f7c9fde87290b57b949097366e2dbaff46eb63731232c247df2e76d12521eb6cf0b25b8b83901209b92a65f87c6173b459ca425f24f4201fa4404252dbe0f3cbe0e26795d923a46d94c5376ffb85ee3a778e90959df1b359e9750ec60bfa16ce15143742aeb77ab1f9e2b7b92c6d8c90f5679bfddc6d5e3b2e422e3a577d7d697dd5faa25f1521dbbd75d5bed1b2c76db92542429eccd5e56d2ea71811d25b73b7ca1d59ad8c414f398464ef5ee8e243e7229c1da7e9e565bebc4cd6821443c8f668993968d7fd0d6866314d9f69a2409faaa5d3e3b99ea6ef24f9bc4b21e4fbeafacd6efbb5e0ead645520821ddaea7ada7a5705e5f3c084959bbac357efbf0baeb40298290b4c665fbd9d3c7e2af0f84e45a5f8bf7be587b316a01212b6cdc765abb286bceed1fe465efd77bdefdbeaab37e906cb1e87f19ed7f1679f641babb22fcbbd89aecdf433e488f8b2d3a298bbc7cbddb83a413d6f8b3b6c8d7316771c8eabcba6a2bfcfb2edfa50779dbec76fe15466b3bf6c6991b839e1d52f220eb84efe684d6adda4c5d0a1e646befd69aedcdecb3ed943bc87f0bf26cd80d32c3fa52ec20e7b490affde91cbbc24ea9835cbfec7a1d67c7da6caf143a487afbf69a94c2055bbb4b99836c7dd73bafccabbe153b450ed27a8dcb5a363fc459e24989836cfcaebfb96c651de76d38c8d5de5cd3c6e2afb6b4be414277679b6ccd752937af6e90cc23337cefce35f7a86b837c2b5ac76cd78d73ad0a53d8206173d7d967eeeb3e61dd38c75cce47c96a99467ca8502a4682a854a197988f8f69ba9f2e181952d620d9bcf0beffbbad39179f1a587b3b5b74c8f53a433152d2f0903a5b996b97cef73c4dd081a85b394255296858d1b1b55ec305db19648df945b8de7d575b77b7bbf1760659ef57b66def7bbe58a31be73724c50c72d909e9846e63abadb93b8b9432c8e9586d4b79ddd7fc9f39850cb2d2a6b4b166ba5ab3ee2963900cc61a69f39d9546f633450cf255d7b727ad8f5f33c861908b31741c9f369fabdfb29caa8be79202067969cf36eb37becc51c8be20b93d6b5659373bda90de8f12e669a47841c66fefbfaedb66a5ec7e9aee47c9342549814352f7934dd65c8b96cde8ba203fae6fcb113a571679a57061c6c5b53164f6b2189fc53459317e5353b6209b29a5addabfcfb5ad4b7943be57da34c2795b5b9eef2f48d182643d63bbe5cd2d56fd52133252b22017d318e7ba8dde45fb35b340a6694ac1825cab31651132fdfb113a7420107cfff19523540752aec02c2956904ca99bf559aeff90dfa65441c667cba67bf376db67291564bd73da76d0c2c5f7423b05d99c4ef775b9d55efd7aa5f062337c1ca183de20738e8c6dd34797fb8b827c975b7db46183f44e467d490a1464c36afbfeebf77fcdf4091246469f17bdb4ed8b313a413acb2efaabce173bb6564a13a4ffad8f31769423afd74c907e2363dc16bc975e077f09d2d1591bde572f7db79aa62841c216bfd7fa67d9df842e09929b2ec7d57d725c1ee3c6d9f1a72041ceb8d6ba3eddbdedb6cb36cedd202a04aa36d4ebd84939827c707db3e87442db335a5092fa1b1fd34471a71841ce0a9f7bbc1eba6faf6911248cfd2273cdceffdbbea610210529434811424a1098df82ce38366bacf162af538020eb6db43277f62e7c10b21437e4e4674c69ecc69e6dfe941fc80a2774ef205c1c69753e900fbaff74f0d2d5ddf8f640b6edebee5e7b5d57868e0792add6afaf6bb0537620db9bdcf09b9d6b2e5897e7204507b2b6c5d65f7dec317658db90f3d7a26c697dedde1b6323850de9d4fdb2bce8b214fef569e21ea4e4405e7791d1faacbfc5ed58ca1ad25dffb6de9dc74a17c7141cc86679f57a8db177ed7c30458db7989963cc5e7ced625ccf5fb3e8608d1f196b6e9d869c4f216ccd695bd8a2fd941bc8e975f1a5aebd7630ceb781e4ff69eb5b4e5bf5b7680d2483d7d9e6ea6d31c8d64ca1819cb3f9deb666adf1bdb52968c80beb829399eb6eb1bd83354899817ceacb9f4e48236bf7fae41483425507c620e50ce93c79bafa165b7a21fd143364f4bfddd6b5b5e07bf0a5c840ae57ed8a74c166704208ad07a6a2622815d35819b23d73afc89cfabbafd28db3128e655744d81cdb4a4a0ce4c74869f4f87ac667c652c8906db2eeb7e85c90e7e5df387b38d48766cc27e438480a0cb8e98dd517e4c5be55d622e5056d6b6dde8e728a0bbcb1c5cca363cd60f37aded88bebb65bce70d5e610650ec9cf1f6d8fd7718df3d54ec876a78dedb55a5baced26272437d6ebe9ac74765f669b9095ff636cf0bdfbaab4753a1caa0959efbd94b58770319deea63650322199856ddf8594d5175b7dd3c43d40c184aceddd836cd2ebf0d5bed344c921ad5bad3e7add7cb7d9fb1be7e79a9febb901bd9e1bd025643bff866ffa5c6c69bd2f2e9c69aa38289690af5e5b2b2fea4e2db59590bedee4ca282fd89ce54709e6175dec66f798b941f6f5939d4d67db6c9f444b42427ece39a777514a6b63916848f084f208396b9ceeeda3d0b685143ae2d219e3f446486e6e69bcb74ed66c6bfc791073144648bfd1ddc5a0bbfff65e335e847ce890b5d8e86add71b6a7028d60e508f5288a908c316516e99a91efad6f51122161bdeeefaadd1ea3cc6692e9b21811d01b6b76eeccdb35da289baf4ddad6c6f92d413984e41a9933db56a4ed22637e8690fd4d6184abbfd205a9432984fccbefc5fe59a9bd93b2b7950f161442c8bbdcadb7b68fd14ee7ecc6b9e2b46b9441f024080e044f802082f20719dba5d41974d3efabee36ce11c50ff2b176dd9beece6eafcea2f44136fa68b4ec2c3e5723c7c57c90d79f636cb9dbfcfec7e626943d4868a95776eead45d7bb8bf11be70f4a1c72b507a9dbee66333665713e91699af4206b7c0b5e18ddc3e5e6b2310f8db2b76e8dd7dbc699aa42d40b2709a8e1c1bd3d6e17dbb9c6b1f9728de9b58e6fbfc61ca41be75b5144be723a45e21de47bafddd9b6b1a785cda0cf1cd2fcb6ed20efac2cc2e866ad8bfd9d4940a9838cb42fb4fe62bceda7e54ff523e472a709f61150e8209f6f8c4fdf7b8b753e27e43d42568e504650e62023734da985cf7cbde7e64d0ef22d1aed437647bb59af576c429c12bc1707b9587df14167f62d736fa7e9ed34a1c041564adb5c0fd78b7f5ba30be50db2d73ba30fe93b7794ba41d2bf8e5965bef5327f0f04a50d9231b795bd1a2fbcf0d9c906c9fc269cfeb82e67598c9d59399fb906d9da3e850dd9bc1be76ea0f550d420e97df8609c6ff6bbd4a5404983fcdb34d2f7b4e9bddf18050db25db39bb576e5d6cfae33485a2dab94b5abd46d758c6206e9b4e7b28e7d840dde776590b3ffceeb6643c8ec7c649010b25d7c293fdb071ba38c41c2e8a8b3ecc5d8f0230c7d0bf5a928cfe79d3f0f5750c4f0babdd696776c7fac5b3f7fcecee76c8bce7fdd5e18e45bf3c50519d6b92863160c7231f4b797bde5da35f750bec0a26331c6e7ae9d5d5cfe9aed7babb55c195d2bc64d28345fc640f182ecb7f1be5823638ebe0a613aff797138e4bb2bf662dc5c5cd42ebb715ef29ec756a0744156465d7bd47d9d8ff2bb4d680e699bd07c6931a16e285c908de37591dac6ceb8aee62b40d9826cb7469fcfd2ebfe1f6bf7af5082f286840bb2ebcb7fddebde7a1be7cf338610450b7241d76e3fd85ebc35cedfd4d0e47c42f013027d42202d50b220ed5718bdfae555ddab130b72c16fabf2852dce3719bc01ca1524af05678d937faef6b4aa0c09a2125f50ac207ff17cfad68d3d676bb40ab2cd763dbfad69bb6b3f152437c82eb7f81ddd85ee369b826cb77cd1dbdc33089b99619a4b822205d92ccefa1ce4d51a6d8eb213a044413e6b94355706dba38f2d07eabcb8703a285090d03e75cfd9781bba66fb09b2c6dafff89d328a1364fb67f139ab97b976cea134017263de1a7cecaf2d676b75a5ceb827accca763be7176f9543f5c029972a8749147856992c328886118046130b86805010093110030281c1e8f46e301895c36e2f6001480035e78567e4c32920943e15834c75118c6400c04310c2004180408414ca3a32b006860eb4921080e0cd4a34eec71d714ca6ae79eb8eb0a714728313ce427f1d041572be4739f1154623fbfc4f1f32386322066e3f0178f1de43ad5af9a6362fc4a821eed921fe0ed717a61702fc4b44b987b0efd2364d0d7ea0943427fc1eb08b53bb9f6e424f6b0ae3a400c9d2d0485bf204ebcd5a990dd7ca4838ae6a78ab48fa704dbe8a5bf3020a693c684b0f2966756542091f592f8a4fb67ec646e3323fa1c027eeefc9ca71675b876e6c2e9aa588513bfe5a27b7347f020a351cb59e0fa14a72b3ccf4cf032743d55b9a30e49d567431f83442847c8c0f6eb36f86569e3b3a4aa6a1614bed8480eab36f0cd202adfa244ae70f68388c180d5de7ca756a80e73a97f8eb8c5f4e14878c21229010ec668b162479f1681e764457e63a49520c6796d33e04fc626d640ca5d07f37379514cf488915d2bca78c4025471302d29e768564b9223b8fee9cde049b110fcd98231eb928bc1317e701a2b2d3f083f26ef1ef0877df0eda7aab511f64dddf52149c251f516f685f0f1c8d9123baca0012da97675d91b99a2b4bdf7578c5822814ebd628fe4cdc9947d33d1ab2406e9a05354d124dbe98ca0823bcd7ce5ed37a3a79bd3e7867bd8b5ff63a5565864eedfe88be885ab81d7e7a4e140a319003113f931d7bc4853a48f9dd43dd008ba72ca7880b4e881c59c0a2d05dc1f16876e59125183d29ad43b72afd94e9a9e4ff898995cd6a107f86c308c5ab324f2c948dc23ae28349691052c7507547f5abeafa62aaf7fb2e0da9496762c90ad2c103c1275037051f4db841ed567f63e75d278dbc1de09734d6651282698a3919d912343418602fe6ed84f885eea859ba17b67c438f9c5b9b798b7274ec25d5c3f65cc09ef6917320a3d88597fdfb6db28a9ba926656733440d3375281e5ddcdcd3c761dd96c74777693b402cbf9300cdc4bb4ea8e7ba03885f809b10433400b4376c789a346440021d335004285741a9f288565c84c4c331823a4466382cc44121ca151aeeb93613a50659b090a8538c24d1c9898bf3e246fd104e38ac02cada95b42313edf84d02f80f409511905c1c00e54a4b86efb8389ef9c0e11ec6410daba62a2b9e804c4ec060ee1112965f8ffb0d409efbb61a568b03735ed66e5c04e8e108cf991073b0316a66e36c0f3092b0f7a855826a6d2a26c7187bc2a54f4a1b95df0260078de24c014d0a0d65bec79e1bd7378f0885c60d39ceb2efd48a16b7f6efc0398814e6b7aefcd2dad4b94aa6804855d86e07002fd3522462450e9f510c94dd83344df4afc1efaf8336905c61c481af6f51f09f2cdb78a83fc575d08582c4dac165f3f6f2cb94de0dc8c1b06804c12ff7be7fcaa649d236e165c95996f80e55fa49000818358cd4a2c44e3a9f92ec07c136f172fd9a3011282761a04495d0d215f0817c8831dc9060ce4948f53567ae3748f70a2f5bd26b7da43b41245439661caae144c47a510422025a71e2fbd5c125500b460d823c668647c61332ed12215e5077f1b3c95f180558adc5f2aacbfb0d33b0a2a11db80c29a7a40aa0756ac01d3edd65f47f87d8c71bfc1afd607f0cb73fa3999813389266db39667cc13abfeb2dba158c91efa111ed1c57bb9df549428acd67832c8f067d5946a8f5a6571c3981c306119a0e0b77aaf8d76cb80a2ef05caa9dd0e8fe45519dd443380ac6f075e1f451df32d89ef783e156e127beacd8b1f7d7e366a32d7f53692081584bd825daaeeaec3ae2dbb71206b749af3f90df2b5470a84501b628488bb3a6eb81711d2cb3353a1039a7f2c6bc950211e2bda1ccbeda96783264628d705e5367fdf971472a9f32092485c59865f627804bd71a0e73c99e02709a156aec14e8bcd2aa56efc776e2aa486836d2470ea9f8f50dfc212c96fe4acab8d740a4a9be2cd49bd49938926feb3c35f96ab1080fac2e4a0d15b2454e881533d138afe2c426284f074ed50b90d31c969538a32123b67f90aca76c890f841079424ae0c62091ce0700c4679a5229372eafa94b423b2cbc6e4b9faf1385933a6ac8e9d8dd39eab91dd68e8bc3a257900f0bc55ff29c263e3c70235d7a2cdebe02cf3649f08574bfc824751d8b1083f8274ef00d91040a88d3c1cfd35a3fd9da26fe7eae5da0428bce3ac1ad512ac238bac54e654ca77e0664758ad74a0221d77aa528a6641d01064d2a8eb2f452dc10f75c886e2e11ec7ff178d700c13a18b022961c77e69354181febba00596b6cdb0b4c86649c24b903c2e849763f14183be26a12e477b718c8445aef551c209bae2d0ba776eec79ef2bb6093479458f2adc81485358ca05312a61b8bc00280a190f3cd7368788d6029e096f4628bdf13a140a5c0d5612a5bc3d92e58993d06152a81bd8a9bd2e56985ecc25baa00fa97be2eb9f0da0735e73f05bad7f7998e8e2d4c0888b3e38270dcb468078d34bae7729c20d4f1580e18e19277a8a436b0fe25c98ec2e05f4aee4648da78354588e547dd8fbab4d2ad350380ef48a0aba83cf76d4206a33adc215e33e20dbfb6b18af92a40fda34a211929f4156f58ae0c9233987ba9fe60a8f878580a11f252f0e9cd6222fbcd6da4280b3f0f0bfa253e31fc10344bb710927defd92f3079ff54ce8b3206b6058eafa4372ae4277218d4e69a32592446c4d1c3d42f96a496afc7c467f573666712cc11c9c22874523368ab418094791708cb65284d1a0107922274366b930adc1d889bc56e72ec433d1ab9ab6fdadb6e390ea5b1e02ab7266198a75e0517472ff1fd5bcc115469806c5aa17ebfe5cfa29418c9008bfccea5d9264959145028913841432e22c23e9d396ecdc0c5171f8b68204dc61f2cf3d57f144f28ca50052d09c98247a641109027cba0490b7e1dc0a29530e408ae99333f6f4b38b49067f8b9019b2fdb6c5079ff387dff258b726178333e4e2aa2a7c9a2370c5ecc6aa705935a4cf9a0efa71f08d9a27f3ec40112d56f028355a17b902abb1b5cd8cb198634ab3038c23f4a084e616352649848644974fc86f9ac4b29d857de377287ab029105fa001f7627e9be35f1581231075fcf7912dde5357c932ec079f3d536194f177498f22ac48d7dc9d75695abcd111e475c4cb606c86df5800321644e6bfee76b7f8a037de2ace2ab83e3364bc31022018c855ca3f2dc8676f6a353e6f51c5a5995c6871e23455fddbf9f80d4866f6325e68fdce7295789e17b76400cffde04e7d072239651926900a22ebdd9a1df873ef06790e0e4d515ba1c10cb08d63bd0fc4c71e0cd84af61b7a93000118c0047d427f5469d98ec52a8951562e8b6d38c6a813654a758cca411e028436bb824b0ef359f19ce006965783d61c8c771a81850f14c51f10982c11ceb4214e93e760ebb6c940308b1b10fab5c5139c0e4f9a39cd1dddcf3efd95f33422bb89a007a5183bb2ad84d133e8c8bab8418b002352a50be642bbbc2ce80c7f1e41c09c9fc74c85fb5dff1480437de27a12cb46b28c586a979e496d144152c9d25ebbf9b934589963bf0d98ac04e243efe50a3ceed054c82dcf6fd56e42191796d835d01dd1c7c15574fa917260a30ac4ca46f0c7a252a475664a05808cadc00f2c16748fdbc920d7a5996843b3ed361b2c2ac927626753dbeef734284d5d30c468131051f1fd3857f97608e5862379bf81007c36815dcd6f27764920698693871b6d0485a846e7caac9ef9708b82049f0f9b0c433a45946a13c0900fc731f336743c36ca24915621bdca4b544563ebd26c07d0a230bdd4223d1ead48f2770ac38ecb480261a12e074db144195cde531d39b600aaef3ca7932f2755b1c63f30b3f828968a946b34e1bec5cd76e81f34f7b34831b328d14986bed9dfae80642057848e9573372925b78ea1c92840a9b014a60d0b8eac00e41f167294bf0d20fcbb82ac9a8d39862a12e9cde8395976328c09f2c7f0f81630434e81a9de01e33d82bae16f88a8b9e9187d9641891014d3f4ed95bf19e601be002787ac9bb43ac8cbb064023842f6309b7709ab3539697bd2bb2c32af0ed73939da7ca530dd92685bc51d13f3cf645a11a9b3ee077f68df790597ffda73c783e1932b95eb0a9b2c1c9a4d0d70df33c21f9b5e25713462f7da5d666489241a57e018f72b211e3b9ce76fc4f0890343db1eeed595b2020ec91f8a11927b53567acb10dbbcbf32ca7bdd243224db4b6317f4c22ccd428a6ebcaa21e96bd6c5bd1ecd6a156cd481dbce6fb9e9019d75521014363808eb95adb241aa0edcd5b65d7a0d8570581bb9dfc40d5b29a637169a5062763cf4ef23a06f1eb6ee0d8822a5b4894430cee8f4f398a784d81e7810fea2b53c5b01f9f8c47061d3d0affadf6e5e04bc8471cffcc864d9ad4ececa5bceabec1448e22b40a82e0d73c2c875d9c4789c7103adfd640972e0ea1ba198cddbdcc5549aff1ecb9ad3cd1796f4ce426f96c7009fbb9a1bc70086027f4041498ddf289ef985a4846b69a520448ac55efbe7ebe1ee9357439bd1d45444b7c4e06ac5c31330dd555667b4a5d05addc9d962b15f1c07ffdc970911d990410792e118dd814985d341706759f3375ec22970676dd1f23075ec7ca7d04de61655b146600e5085c19f0c8e0a2a7cdb1681e56adb1e660d65512ee0412f0dc215c7cda487800d9ee6a9c7c1e07521081aa2e4b1c195c19718f1ad8acfdc2a458b45bab234831aa7f35bed6ea956ff7df2f278c8c149d66f558e6008216904d09209949968d0176d59688a0dca60993bb32c4e7a9821cb6f1b60266a327c7a9b9ba4eea718dbecdc60309c52f12822651f938ea0b25f184b4b2ffd26a2b078c8d56bfc00744dd117fb15ea2bbf1a81254794fe35822563c7a9971daaf66896361172214b58ecb8b96fa8053fc55028e6e4caaa554212e403bad4468f0435fe4f78261f4ae2832602c9debd8ed9d043ba339a7e046973771556a686dc5bc4f1b2f38c9fc7852b38cd725281104a194de0468e2c72584a01f32e690b0fe4a9ff8b95e79d6af6161a0a9c499c8b727a0c2aa706b705a801b532811f0973c6fa933bf19b69da363912e84bd322df7a8099ed4cb7c59d7caf52ab7019429fce2a45302edb7972fb2836f2a2a46ca74ee1fb2f78131a3a3f10efbcf781ff97e948683924c769f9fb922cb2e0261f04c45b834b58f99fdd915e1d4e4d41def295c902d0674862b205ffdcfe5001c69fdf99bdfae8a5e7cb444afee2758b8cafeb2ff854129ce954092c02f89c6d61f7903902d25c08bf70ade067214124db8258660adb7de8531aef67311c2d4336911833463e5d50b342878fc9888e1415bf4d04068b61a0975ca115442a25a732add3709009a240835a7d6135e8f58f72cd894b7e0db2ddd1a8dc7e7249549bb23bc2ec8f4f5a0d052908138e85781926938e27d4322b10052958cc4a32f5cc18e5d4e6067ba094e22b69217d495943c446e27e121315d6e43e94ea4a4b424c20df0151d63f81c0e66d658ba086b8ea1f78e3ddc0674720a3d1873864ef21e55853b61a14c2f4ed3585dea9e81bf3aa7ef680fe6b8e1311605d34c6de1f5784e5482408fd6f865406bd435459c616e3b56ba5584dbe6b2f3d78fe3c0de4ab4cc5ba5250dcb08ffde693db09bed2cea427e2d00e483c6ef00a2605db7d377f119d2481648905ce380bb941eda44bd179324f90986f5a117c4065f670d58e4051e32be8aa0765f4f9f935f3b5bc478914668216c96d574a976e6729965fc8fc00bff12781400057a4a8df593416fd285345a74551551f20248f270cc1023e6a2509b9e37e6062193f757cd2cbe8e5d39e7986d3a2d8395e7424b9508014a9b04421de0103d550455e736cf05a9049d1c301b71653256117087e1a744ff329a99aa3c605829914ed120268a424db224ed77933e86529a229df94a5dee6677e736a9e023accff0123420ef0d67fd654f7e51e5d813b41f7ddca1c68816169944f39fe1e8e680e679dba1c043d586801f2ea2c40820f7d130576c68329b28e9ab163108ca27463a7921df12605d312123765b0279a36e885e33b030e267a3c652b11afcba0d73592e8408a59b5e13538b8e28ab43403d3abd95dfa10f5f54195e920bafa444ab09c58019586e8a5899d9651656fee6f43229b3280f63613c2efe06f49a369eb841b6a116d86ecff8ebfa17e4ffab427432d653d1a3501dc3494b4e9bc33938eb29e5ab9f470adc71241c96fa9a925063052d87fa8030c999c44a52de075d64c16b432bc4f6340f5ed77955bbc9a69d0b1832c57df3f1be2e85990e0fd86deca247f217cc6497e2b5646a4f8416af8640c61abd9486e1e592dd0da0a76c6e0375b10a9833ceefd63e7bb8920a8c68abec7ff0d07c357a310deb7d737310d9f3321df60f5b9454441089af6473865a847e43c5d742252face568e49a73aaf7374e909ced518f431cc77f853436f0f7c79c6bb8b23d83997c9825f16c2a0e2de61f76007ba5e6c8b6924091a2d96f0eea362f122e186cc2f572790426db7dc9def97a322cbab547628c12654a2963504665191ad7467f38ecabe12d07f09aa94de13e152adf48603d910d32a8839c72aab92f4489b917089f176d0bb7f6303fa24c3cd2e30cdbe4e36c46b29c262183647248ab085f498095f790d27dec7b0e4101389ca0b1a19723b5984c8678d8072fd5a6d89c41a2ae5a01d1e321a45a9028b448352967ca8f959a58576e8222c640032234c781c2a6d24a1a561bc87c840ef82a6d107e2e92fdf0731f858ef0e8bf48d2b9b394a3f8324e6b88779c068b66055bfaddf43fd8802f5b9affc129363d39a7954cda66f8d8f9e2439830e17b66c834d66b435cad1dc6e2ab572b2663500e85b7c4f6da3e4fe021b4133d011e411ec9d4ef782985d337e8b3cbae9a8d12df1a33b0eccdf84b47fcb89a1831772a49f4cf8a435195af01448779b38c301ec6288287b0fae93a73068ad712bd900c70500e1a5fe697cad7e168b0169b27ae1bd31bf87da97d0e26d5a2efcf5925d6eec2e1aeda9829824c9c4a1627961f306b6ac6554e5b04ffca742c52ed7907601d7bdbb330c2d1003ec89c9cdf00482b152e25720d4a06a2761fcaa3f47f4444dec15615df7b6f6a818e2cbda268fd30fbde9a8881dab555026abbeb9e4df3075062c612368265f9004ceb484d1f83ee33350396034df261f9d89ac597e8e5ee55bd2bacaac6d6bf101a2a3cdde2d3e8cbe62118c7e9cafe0b1c94c6f333d5b7e5ad9cc6da85ab3ec8ed6351ebc462a010420357b3cd2f2dcee019f0ae89d978d3472107077eb5a0a0064f3c6d82785398260cf23d7c580c7a689559284786a3fe77eba996049d9bea03976d5ef90af85ae478cd2e6c599333cf68163220eb593238d190f8c728fc36f8f8394919b0cebc98671e616caa1dd6d6564f3436917dcfd551d60802d8d0e255e01661c2835a39a8efa0b4c54811834c08955c0dbded3a3726acb804761e56ed4da2b0178aa325d400c009cc1cb9fdcf28bdf56bbf9d94461cb17a15552cb7f27c0e4652deacd6a675ba3608d7c89198efb620f422377a0be6dc70b331fc3c01289c5295d6403a37dacc40408342d6f8759096e93474eedf10f182e5b0b01d0c6a3da81d5a7de592a2377886dfa168d6c2269d9ed03583a75589a244ac53efa7cc121a5c185a52584878d7c3d5162199d67244f7e8cba50266fd370c8b009cae4b2c2c766dbb6756f142989f0a2e8268243fe0104bfc8b7cdcba830c5d30abef346f106f872a518043bed2b9a9c43f08c02195195640c46810e443c759824a4b5e52c0e4de88d1381fb859fa5bc369a3130083ddf9000c70256fbfbaba9746ad425b1a9cde18c2e8aceeb3bcdf2988ba5d5077a64e9961eeb45d303c487dc5c952f25a9385e423c1d8c00b538f4cd8b1e557ad2e5001a26496fc52bf24d743d4547a5fb2b6b1326e2d40402a400cabc07d3ac64aa1a1e49e80d340920cfb1ff3bb3d80a1b1759657d472d228a18e4ee422455373730b3ac79fab27267f0a92613a3ef66286c51304af7908f33cbf78f4e9ad74c7e6dd32312f51a6d8ce1514ad977029cfbe0b651a2005fd2c0f83db40f83ea4613589c9e80ea2b7be80643050b974906a8f12cc8f9201bb76ac7df58d026a2f4c8e69e7b1f1ca8df4f446e35dcefb0018629567d4a057108cbdcc0de0968d94ad1da001a7722d03920c2f93c30ee38d9f974fc5fe6753401be67768a793bd2dc9b2b85a3657d0005cdc22c9e15b0558af527435a02c5f14bb78e264306e6ec40c340ed00348f91c7b61fe34ee8345b3ecec03ea57a9cbdd557834b3eda0d958c66d424cf3ef79c4016265fae642a17a21003766e4526a522bb988834be62bd87d9297e75ccd54424f749b8832f2cc20fa6990f1171ac0323922629062be76c207551180b07ec36e5657359bb1fc4c098fc64691c88888708d6be3a0746b181dd93c46418e5256bfd202287ad80357fae77fae9dc98f75c6db241e8ba528d48cf7dc1c2da8cccba0c64d5f8909162955cf287499303f4c2e8fe808fafb74857029d0291f8fda048579bf0a8478dd128444d6a5d8b16a15d635f70c3072673c3993f45ff7a097ce350fc1987bfe17242174421ee9fab970611afba7a8bef59487b3a167cff8a12c4f773e4fea7794653877610b984816f28624c40a274480d1bf2cb1ff629b2984b69bfb9a5c99aff0fd62f949cfec382a5fbb1cae17e869e8dfc0226e3c3d264fab36fe78635e65f00feb7651c3c61fa3f63c576c2769c9383e74259fe22543be02e0f3de15975276b8a9785ab6a8b8f0a6ebb362ae47119840f997585410381320495088b8934e47cfaef519b2fd4cc8f17c0c64a159c8afe024338aa6b4805e168155530d12659f8f0c2ba1700af822a7751bd674226a850571f6e042903348572f7a633897315cc511ead58d1d86f56058d5db42c1cf872fc49025a07c5bb463306bfb6da6db9f082537b586aca732fbb6cb302069a876057d3dfa443b425c161cfea775f96e9878c8b183f5b00d074cd8c8684a9a0654c192320145645bb6c82f32a2d399387cf707859aa4b05c8c7309d2f6053865710f032df43d369af580215e1ee0aaf4920a801c2dc81b078911ec9937f185ba6d07e7f0e2705e0f63436119c397a8d7b963d2a4a326d7a0048e00e960cbd3b1ca71baa565dfe8876562b18f4bf4d6cfbbfdbea5b529a41dcc9618931f32c3045390a7ac643e24ac86c48cd2a16b0c63ede65dc2e77327a4f99c4d119ab8f055cdef0e493c11417419d75b02ac9a458a375e34a03ce4868a64b99d830f5c40410a68f7780b5e013d25f479296b44c84a234c0769ba0b798dda7de6314aff9a152fa43fd19e456549830efaf74cbf3a39ba61424784b5d3d8a80077b980e6024c6a93088477bc44e89548f9d612963141da1b978326a3360e7d54fc5b2f4386a3c5c214035d22a7ca9c43b15c60624ea36a4f9b0badf0c713158f7eabcf89cf7ffa52e0e339d27064a75c5c523c4aadb6942522b292d4021ab0fd7cc82d52d3cb183157bc8c25f16bda38de6ac9973f4f1b0987454b91dd6bc879bd8cf1e6c3d422022d9103debf3c85a480d4c13d6c12077f0bfe5023f9ce35a23ed9498860675fbbdf9a187f8960270cef900059d02e9635f1d22905f613c6391b7e72258ca06d2fa3d1c737d74438748b7ad0a085032aa00fd78cd2758d490b4c64f5b3f22b00ba4a8613c03c5e4baac611f65a01cf0c67a1e862ba412ee5c25a9ed40fbe459e8988582110facfb4d608a47372438773958189735e49ef95df686921fd579896fcc9fdee28165b104b957cd4d7cd688e7c1f8abe84385d88367cde12d09f33098c037be7c7781fe95198bb97be80601731265709777105ce68c0091cf3a4a506eecd54b98c02ff4849669ce499af78c2619bb140ff16f8433c6de98a85993b9217ddc24df48383be04143622c8bfe3ccc2bb6f9b2fa98cbb745b7617a09d90445da74b295a03bc11f329c939c8153187b463690d48a961f3fa5db7d8508d07d5cbbd3b326fac0f2251f0389ccb925cdaa440120d9bbce2b5243fe69162e78644f0eda2a210191d219965ddc1339fa58e6a86e2733460e18d8b830d434b6f8cffd2925e60b20aa9d51ca177774f388c9d6529c3dd013626e19043cec67795488b030f7937ec25d539dbb23dd7430f37b49e0d7c152cb054f6947d7b805d647fe98ce3f18cd3334d927e50ffbac2d2549302288eff9e1092da9f50e5bbf215cc0370a76754f20f3da35c4deb17f8703d1bae1339272303520f08d404d20598bc6b93119baa68cbed74ff70c0f15cf77158e03df3de60d3771afbd8264726f7cc4074b22bd38d35b15696378fa7944ba6aaa82aabb601ca5a065aff8d5222aad14073f5b5f1aa6029b8127b60841c325496dc4e68fff4b451891eff560a70b7cd14518da955a50fa549bcc472330228c6e8ab87622cbe9094583e602cc775fb7de8dcbe0f224b043d82dbff8b8947ab03efdf07a84d22bfb555b76dd29c8049e2631916420178995405d9bfc0d86e0e153881940f57cfb27d7062fa9f3d353275312e525668af03fe2b0d23a14baee137de8ce6df21d20e6eb33c29ef06662b2f21d0a555ed277ebac534dd61f4a1758f25db417e805bb04eee9a6a31864335e2892ff285d42281d1f3144a046075784ecee2eefc82e3a6ba9626523fa2a7e5ba3563f02f7341a986b6352abc44cb746d9b65faac0806e63da6f30839f2f6a36db3afe33a124e9452ad247c2dd96760a18d04b7f3464c0c3edcc3f805cf9f3770c3f938dee4319203622f095c2e840d1d8f375a15dfb74d2e198e073dae19201625c020595d18b2abb5df24dcf00205f6433aed8612bb4a75c9a41c45f46c01047292166616a01523e794db17f4e33b66d29948190ccc702ab5327a341c0a8a7daeb5af75ef0a41763b9fc32796480e6b224a213b43fd2acce7ee670216827bcc4fe26da70f07d9f70427d1a8ba2a19086aa4fcb540a5cf26419eb9162849d840af965dbbdb1de8f5298e8194ee5ad73a4e147be334beed2afba5756d5ff432e381b0f91563b162fc0cd4fca6972bf58ae05388a63dcd99b281b67a2a3dfe2c764ffb83fa953a594c9ba683a15a9fb2a22d0ca20e00351ff25e62a1cedbcbda83214cd25fb4f0a20d7f55070466e4dba4fd602dc15c5bb6654118e663b7b1552255ddd7f1c5bd1eb760f0a676613d9166e7ca79fa794cfe926b74c39186fe387320e1f00130c1b9c316e503d9ed1c0dcce1c9755732de5ad1044f3a16478b5c33a68a31e5a37359d6a975140d43a41e6f122d01bd604b4b27ad50706783c417310b9b3c57773f0c67f9ff42ed7b453d611e66541de64e7a3c84f0ef300bb1013084caf570bbc44da5df0d6a39e03943ad43c936faae730f7af29dd5fcca1ea1cef4f1d9d7337d0e66149194c5cfadeb045324a39848e562bc8a35dc8584acca32930de736f1276d1b6d970777bf67dd24213753d40668acd4ed2f7d0bc96df6ded74d6f8f78cc40783d5a6f0e62d125ad9b6912d8d8ad0b1ad267ca63a90c584be016b8ad43511163ddb8514c3356dd069b2add840ed0a18f4679b9a38901a2ec1fb432a1fe236f47c0ddb2837ca9c1c6708c1e15a46c8e654c1591e140d395fe1944fb722204192bd1f50d9e2b6ae39b223ae4cf0c6111bf671f572fea3950fa4bfac521dce83c5c051086667a4ca9f5fd392db4922de469ecf3a4882a4d8b1686a328a36ed44fd4be79887e9befb36b500f9cdcfbe29c8bab03a29526077f32ffaa31f849c9635cb10b0b2549c2d04a16aee3ec87d5d10f2e4b3feb5267cd4ee48cfdc2d8fc341f9ce38c4bd0d3747f6cd93f2df8c41d756fd5353d53a2509fb3a7eebb3eb73532374a7fff87356b2af3eabf81eafd83f736f53fa23059f73c34f8a1fe0502e439c43bbff60e6f3d9d6705554e3c3ea7c29e93406b095163fa29cbdbba80da0508d793ae79f40ae2048cfa3f561730c2c01bc0cbcf99dab9f210c3df8815104ea2292bbfffe464902b6423082340d1b51c152fa367a75d94de6a3258f0718eee09e260b7628e44b3203fda420913840292e5f3af60f4c3d18b992935b0292fc9c07795e5844121eb9f7989c9d1944f5471b9d980c082d9a70ca93d382399c80d2a0580ee37d49f00a3a9b900652d074a7ffa1f426c47ec0a6d9dfb0fe58618becf66c4843a0f1089054181bb14549b0f764da9ef5872e775b86ded4a67aaf04ff89205b5c6e3353c5e76102139e0efa82f0100286f5e54ac8036d20772b6a9e15d0d398449edb1ef83a8f86f53b802c98e33422ccdc84b71ff35a6e16aab7ae5a904d24768fc6259d34de0f380e4800334fbad12100446a736ec93dc28045db05143eb069a3e9a55d335bbc77251fecf5693211633fc917069fd67668ec18f458792f075949be0b421df0892d28206f3444daf713a7328381e158317987f50a8c407eca175ac662d59def6317ffbc578ef1007f0d778e55fc8a46c821ad8b3717fe32e8d15ea0a02a2053e519aa6a7f6c009c161ec4743f6310a2baf2dbe032ff9d23fa297acd8a1b356ecd161c546b5880c258650fb2c2cd4f40a4442124d567710cd2187326e6d16a92ebfbfe539dbf2bef994361c446c075936da981938ed46767c0eebcb165a78f3405f3f7e01e37fa9ff490b3aade0ff6cc4fe3356a1a12ca321247b3a357618ded9416e8eff3cd584dcb0a271ef496ecd82278fc972396fd101895db3b55cf1184758326e9688d99a1cff107b574d41ea192ae68b98f7090c1e71923601eacbd41d663f138f4dab4760036eea09cb471e8927658cbfe4de12f0790a91c7c389024e39f4dd8f6a392292c22f42f17f40a7afd17f0e56de10d71eb14034eaa40be9e3fbe32615b6022f230909eb7220ee75b6057e3f20de1d55b4b2962a62c8673a57f0441d8ad8e6f2d79b1eb23f90e69061cfcec5484b92a9a5e147d7f18cc46ec1d347834837084d606c28ea1cf80511a8a3ca9b2f4a1750e8a3f9a6044033199efb4d08a3cf368774c3c5ddef84e950c9a02c6f58d1b35f13a8e639f14670ffd67e7240d0bb0be4da7a7a95fe089343f83ab9d5db4dfcb977eb85b7c5a7478ca507b86271c74bfa0c58c491cee93cff0c02a70320ae75ff31e2e55a2e657d8a52e464fcc603f78cb9776d040518574b0310d637ff6273d7aed29ca2700e464beede9ab6e076f87ba87a29c4200989bbc9169b6cb5000cff25cd06b796ab50e38812ad5fd82ac85807667a60ab15bdfdd4fe31e81389f774356e2ae8e3d691e92c00ddfa3ae78b80e67b912351b336c93007b01787eb1e92ce121a1cbc3733794718676d5ddf87dc4dc9173c31b74ccae463a0d52907f32390b95ba89a7d2f820b0a031f1b29a4008c4a1d22c8b9502ea3369293d597402697ab8acd2fe829b4437836135680f5ff9dc94ad272f8e5c2c9700433bc68356e499bb3ee5ace885d107f5168db1c3409cc77e08cf09dd26f8e97ae997151e88d36d0e113fe83bf4db5bf2e844db01635c0dc1b8d17a544be977b23605c7eed59cdf5e51fb15cc9ff040dec84ad34b38c199b7dee4afa047cf4b118df84e52115c72be71bb6fa146215a174c9e70f072a6670a7f10de9c8739f9a6512a7c92d302ead51fa091cf42a5be9011df1f5f07a3e2d0c2cf6027bb2751a4272a5e97b67257b577e29133a8b0cfbb2974a36fbd8f4901cb38d49782c9329ea2463f36d17d7a34ba086fcca93b80c647d991d0318121b374a9a24439a49803b3b17d1549b069c24b02c7c32763bb4aedce7442d08d03a17ccb553dfd99f6abc9305ed0a47c61e9c352fd7c85e59b2202e63b35921711f707fe05a587a7a0b3b17fc4644d9de7a66f0ea6a607d6f3e5aeab70aba86f2463472fe3eac309e82180e5101d3e6e4ac67a47bef2014e7575d6e6bdbc5c13496449bc7756b60852b171ef45d6de0291c66a421a3bc76fdeaf12e622abbf52dd237e38fa818efd2e26f91cc9e21fbdc884b763f53fa1235134322c941196abfbd2e60528230d7dca6f34b90aefd3da111dd93ce6bef03178754985737b1421648ac4aa6f1fdf4514b26bd058adda9e1d426ea74aa31f8acfeaf423cf5f4ba1ae616a7065cba9f4c8bc1b5fc63846f46c30ff575749e0abc3b3da29e1e46b9e1737278fb3aabcfb667493019571664c88d2e0d8219f1a355f52177538233026dd52a0939e76952b6145ac42b0f499db480302d68d95a489c1b4d5d9837209c91fce78a46c8eff755795c89e5e3bccfedfb059a727115b2712f7c0129e242ed888d25f7762e2fa90f698709a1b324afe291b5ad87a2d9f585a790cd0bea7c64e75464ae6f2ac94e168bdc2f988a1a8ee2cfc0304b3fca97448fd8e5e473d5f2cb93d5fb99f4f739e71f01f3eed6b81d061b927c826db278a37a4cafbef86c1938be9bac9caa5dc582e215bce880b0ad917b4ae707a6c4fa6a7ce4ca2688e211e0c28d09a1c079100f2afb17063e885161fc44de86bcef410c1ee002ae212f4ce5270d254cdff5377842b3d5e6017656346dffb2880c04f70a2642d2f64e27a6cfb1b13ef3f26e6ce7be4d0bd822d4e672430b629fe599132d9ff5e2ba87536f05262f448d84f7a8200a6842e8fb17219f7282807c30f216f6730d9b1c073b8a6cbb9df581c673ec5922be18feb64eff46cdd568f68b6c30f53a2c410c8a12166cba5879d870f3d394802328857e9536e108506e21290548de8b0c0dfd22a1b52037b7b32f725f5ffb73f469f4da29bf9e4e2a059d69228d2d4a2bf5355a1e069611596a0ef59e4b472eb29a4368f8359673a24e8c9d1b01ce30d27dafec9bd7d3688030306a655a51a35c9d2bfca3234be1562a7455533617e3b1894b886f37cf50adc277e90dbdedcc8c0ad56f076b0063bd0653da721f59b6d944dc70b8af0f4afabac96f601f60aeafd66d376d6a6ae59b82bd0def80d86c24ae7383082ec6743b963ceff020d2234e26431f3681a10f170c9fb493a1967aa24d2252f45cf915f3716086bf62ece889c79cc2923609f758c646ebbeb455ba548d7d500e37cce3bdcb6362afa6a880bca24dfa0467d31b55abfd21942bcd46be3cf53a68df56eb7400b6b004714505f47657e3c1a19bf7dab3d4dab34643ae5c4b0c7f8312f0a682a90b2a5a2819798fa986a42e7ee0497b0af47ce17a1fa3a1522711b2511a741343adf027fa629ed4fac9ebce70aefc7178a8c314e3da2d4421bd710e61750edf8ad06a1ad5a15593b15ebc9f597c5bb2c6afcd39c7e45be3fab31a6f38d6a40ba71d6dd498428c5adbb11bad86ec84d092ce669be740aa68480ba9ba1ecc11a3533d6f27436d2ae7424a60af6482116246eb7a9cbfd79c6161f7d37905185000f3ae6aec24cbbf3f6867e5bb8c90875c0e7b8736c936fea3c64c1a61f441362643135aa157af9ecea838fa8c1d525a74ed8e054e692c93a94f1cc3b2733bc8e1a3a67d727d25a7d7ec6e93e2c64e35d17741ba4ea8c491f900780ce367794daef56a9db0437c280260c324daa38a0a0fb8b178dcd2547be58aea05cdc99df6817367e4b95f97c8d3b7088f18fde873c2796b10305cdb5b4f25a541e7e5f518ba407d6583a04ab2512c06105ec4a81d216f6e97b10ae4e91a94949c4594d5be1ea5fb32a178cf3e14f2dfc209e96a1dcb4f22a46b46bcf49790dcfdf0a1ad75566125b3e042b62b268909a14acf5d4c39d1d89dabcef9176846fcb41f09f3c13ad1188777bba6300b66c0fc3ca71c4bd543caddc31ae69d8ab346d61e8f716bb11a13dcec85066516e16bda35974792764fe3c0c179e25bf52efc3bf581e729582a5963ee0c929e202d16eb50a7ba1543755043f16abdba2bc018ca7374519b7688119be9c8aba7f7a2f570a131dac947cc187e042b2c529ccd4726fec2ad60b136f13ca80d49fa8596c53b169c6cb2d340700d03fdff12beb96bdc34c3d134d1feb76ad4b09c64ab3821b0dff86fb53594ec269b220e63edaad8badc3d10ea00e621d03343600636124557019025f4c5cf6cf499b7b6b0898d5ba1651984200d218520c6b08f7f829daaaa6589566d21edeb1381b2e52130a5247a0b4e00aee03aaba968da9ce614a82ae68f637a49d724d5f51209e93dd7e82e8d7fc1f90ab0b053a282a51c7bcb3f12d0a471486f15ae613c0a8351ab5ed72a545138fe05bf35b46d7d03aee2a78e208f28a79b6af42403462a3594594a77fb9d054ece4a610e3b85522c2db332e1cd014168563a6df926c1dcaf248e5f16a840b40d549427b8e14507e38490c4061ce168a08d50562ccd9a1857f8817e3889b44e5b60e39351c9812106056322579f23da2ee4adbd0f33b7309f2c4711e907984080da410d7a6da559251f92b3fefc891138702c21160a65f246f9dc8c773c467e280e37cfcdd4130edab1064ec9bb21420b39999db2a07210014eaf1bfaab2ce5c07d92743f9a0ac71f953554b996acf3dbf29399ce082a74dab7614d9eb616ba1211a0cc801ac3c6cf174bfd7dede054916929c9a900d4a45aec0741a7a850c7330736e8605a64137bd7cb33e0e6d7374a7f7765c4b233ef41621b9c297983292aa2b41c2aa82411f8c20d1bed10449627a06657af5348e11c2fc5e66ec0bf4a7fe531bf3afb2be7c5fbf407a625b103acc4fcfd8c33c7bec08032ba7aa638bb53805dbdfd4da362c0e82a1540eb65f10bdc64d1b9bda31fd3fa86dde5760b87dfc6ba6a0c7911a8615c2a8e003c8133b070cdf0f7c6226d04a4754d643b0a22fe83e2145fac2080a7ee02d9aaf818db930adbce5349f9ded08a773d3f0decdc3680851df83c78dc5e4c9c24a8fb9c6547c8e842423cddbecd92ac3ff8e1754a03cb58a44f512d62fa92d50af614844d608f94bed03e907c4a9755ddcdca1fed09bf126b5dd214f7141cbe74484124997ee0e863ffc93978c1da97c390910cda9268737faba8154bf3bda1438501fa62cdcbb9fe3cb7b2b4e26189242d391ef2610542de5b67841297122c7f938b3e66566879b81bcb3492ea8a483999b43c9c8488a973f599375a4bdb986a019c878dafc00022b43783eabc8854489409fdd7d3cb001360a62a9dbdba7b56e9e2afadd93666c3b332a8b0794335c05ae402bab6a162498325986050ed5681ed2aabce889de864ed223bdfa713686cd009ecb95a892d75da7f0a340ddd5cf8ce3c0aae777d8723cb4902c712332671d9547adcd0ca0dd6a802083d95dc5f7a1aaf7fd2b51acbe8fa7d8cfaf3ae905788987bd786eadfa0b9dab21c6d5c041a1dfba4d878ff9e93784eb9f407a0c26fc074a5c2b9ec71ad8c74e319dff1568362674ed9cb5501f083d7c3e4afdf6d00624285d71ce484ebde6a0a78db115f191351afa323da05f77e9ece3ca1499e641ac0fc2996b6baf2133a94797fcef249c1a5921fbaa1802471c80c13e0793c5a45dfe2b4f5a6c31998b41c04a8396da0b8af99963bad46bc36e1c52b7085eb959afba37990649138a405e21f851715e9a86c91c3f3f8c098e2405c5a10b1355969bb56a8ca59904a066780052e48933e970c9917699d5f4fedfa67fb8fa9890245194bac406562826b0084632944c4dabcf05fcc74571314dfc5e84e5416c9818160d7f13fd6dc45f0af5016a8e2adc7dee81833d20d25be9414b069a48a893bec06fb8c803e6c645e96de89dc22a71a419ba955fec5bbaf84fcd446b0c7d4eaf7b4e420855d03828dd57f0a2ba20b0b33e3504ca99ca59e5895983e5bfb476806b5c1a08214dd8f1682c461c0800ae5522ae6b3f6c2046d59ea6f760e2d264929ac4ed1d9a81858a0bde1f504fc202312018bcbffc9e9bd74f20315fee2d2f9648c22c8a29e0e895c00e7981ae33224e1b31b30b27b14038f0ab82f5ebba6cf681472c67e29ddcff700a0422f3440c8a9a97667aac3cd492426661a32f4c11008e2b85a727c7a91935d99866a61aa0f8cffccd58abd801e06fae2a61f57e8631161a284421b919bebef0793f809ccec0731341523d08fc1aab1c954286584e2b17008a89d5c6220b5fe8a42d62ea8868185e40e5ca2a3554e5ed0275be407fe7115f0b052a257915bb794c5e22b3bebbeecf55d3c36924a31e4edec06bbaf5f0a2722c77890eacb657b047cf4150f2028a1c1228ef010611bbcb9ab397f4f02ebb459177d11ea4253b57890eff17342486580429a764de18126052b4269311d16deba444f2e1574ef5da973ec28ff4e1bf96b7f4cfc745d9533682df532ab0d0e63edf325c76856350adf8dde7b11fe3a46f44ed9372460b3f59af85e2c5aa28657175a9c853a7fadb4920746c2571ba2beffda55cdbbe965210050b7caed5bc1a9924e2d4d649a225ca630a27ca3d7fbf0fef1c7fcc26b31402cf10ce216639e448855e4915c1bbab6b38bc4a4dbcd1b33f4c7130781a80a6f56405e978fc600880732afacab2b6ed51982d1191c197752735c3d1ee88463bc090a4120ddf5c6393737c6f907c1b895f2d032001817861882067cdcb4fa45e65fd69fb521dbb18c7a61ec681144a2dc1fc9f749529e49b9389be6daaff7fd470e61fb38e15eb1dca7492c6146bdcd72d9683e8947137981c71c84badfbe3e028d1174745f9075b0c83db6c4a2dfd6232737e4c939638d2ac8632b56b67d556c77eeb523d709caf841c5ce8149faeb517fb508092902113cff1658e32acd0ab4c8604bda0580a34d13d851b8783d0604a7202317d322794e5ca9ff98a63b9875d1594a1439cf6c12ff3acf11d9cffeefd7a8a6793db5ab8c753c4c17999b86c6e19d420214cd51155bfb575046cb75bf443e1aff820bed2c39ec3f855b2c8d9278522e8f540c586aa35df5dd0c7286ff434575b3688b3e52437c336102ad9fedaf5a72714fad970708246f313af457f13291b464fc49aa10c654f30fd2e3910a2ddd37cd2c02ef3850db96e0b6778c7d02031d3a306b0d0f5e44fc0b44ae422bb6ffba1a7bac9c14aeaf531e4d1fcdad4485a8a5125a5bcfd7984baa84117063ed4f01f240731bd37b182296e12ef3a4fda7d70fef1f324b1cdedc7ca623312bff8e8bc4571f488288fc4c5cc6bfac006483c73d4f61248c8e3f94c159bf21cf8ef80edf147bf5cf4c87084b0050dda7819c3fc387048a07a3eda80a71d5afaec8551ce64b833084fe4c6cfb0b31d4055179f02be1ca0085c8c7d28a1410ff5a0cedddfd4bd7987b702a692cfcff44727a906a6fd8d847adbeb9dcb4da573089391ae9385acaac5b3f41477554034df40125272a51e2d1b59c80399590ad0c124f1bf3455ba02fda9d9418079ca9f0c7996635762aedc1eb9ef7beee589e5a9020e1ea7650cb302a21892e5d6fcf3cda1a8a937f3e96a5f681bd676e10e489367ab17ae6021a5f9c575c4ce1ea0dcc071246c804ce6732429e3e2f722513ed370144eb4481f4c994e0f1f5aa357218ab14ea8038fc8d8611a66c289eba423db97fa95ae876a924b149b6de54f0de48649105dc01148a2c6de40758019e736decbd4daafaf33e56e823a87ca171131704ad65c3d0284af6b91ba089b0f2ce73a3ea6f5afb6ed698b38218cd8bf16c4fe4c8cf2ccc3e36cc4b6a2e49598a60423995a2c6d936396d2f908f928a6b40abcbc39d101477fbd3dd9f268bcb49adb231070633987163597b825726a64a658b4547c6115b6ca6e565e235f3d3118e5f4f1e2bacc0466a2e078180f986d3aa4834147981a19249c1cf803bdd7afde7094443bf1c18be43e4a037d66617964a9c8e3b2c4721dd300efd66739c0dc27690b2b98e5f9c96a1a4b36dd0b05078b553de334c8aca0f0ece85bd782805f5308566e7dac5e70117f2673b1e08941e12593b08b985ac81fcacd966ad6ef447f5189937aed089d80ca41a7c34046e36f40729d8174ec5ac452c752a51dd56cffafc6c5c6c1c02d2fadc27411c69b96b34ba556ca3c116c75e2b105627a512c76c488e66e863e020f92861f8d51e5b2568c32eb5c4a73446afb3ce200a5db090c222c029464e695763700f10ec88b695414c2b39c8d52a42e689e4e2a7642e93fa0ca63374501bc953220ecc239a519a48ccd6395e43b120890105ba5c39baa13515eea917d0760f11f8a9d474db956ddc24bcdf525e0624b0ba072be228a5a60d607ba91d0cf93bdb52e342a1300e2431fe97694ace0439b4b014331373f992167f5caf3d4de591eca4195fbcb377a49debea8f291ea069574387c712c8b9d790a995f8c329579ef6b51ff77d72ed778264badd35d1d1299c6aadf875f6413464fa48ad6ff3f1eb38d1493ce0e686abb9a4a9997159e0b24df6137317d755379c4fb1aee60c4af91ef3d699b0093a8f14a9b97d946635706f22d8e830b58f00e486d340f01f7e4dbe6a0aa2cb930991be5521679ebc3a9ef9528ae640bc29e11d114be00c42fa82732065ee4b79e3277ab1b9618b8e853f6b252dc542dd48b9184d5cba3b07e93eda67847825faaee77b167d198fd0eb7c283cd62d7151d2d762d29af8f6f99b101f18a7ca82d5982620b7371436373673deffb376d2e301116a168f7185f77384731f219adf051cae41301e914dde1bb0d6ef0e5fe6badd0addcd413185ca121e0b9fad604abdfba1520efc49aa6766d9bcaba030ef927d07e1a2e4c39649607089734e96763f3ea69245ffea6a904cdd51ed5d5be0f7bfe2a9013c6f9c7b77d6c779409da8d0437a3f57ca4f468de4875aad08a45c454e5cc9a1a1d80f13df38ae98e941882334b6226107c18589dc67d4f313bc9f0ee450f47fd1e13877a342a8d70ddcefda80d52f4116ac04e53e72ab9095faf59d576ec0b6ed10123b062e2cc4011cf53df9d5db0b7f50a86cf8d0a480d58c7ed18dbeb807643d28ad1536f53eaca2ef9949c5a47c64ca838125097f13ae992c0f495f07addc39af4b044c398c87a55d67c69eef3b1469ec01f623a380b5d89024af0b5909f85413a480ed9c6915ce778b0a6c18474a5f51e69d133324f6f7cb52a60a5fddc360ee4dc38b711ac253fd98dbdd5650ad8ab30eaf35f5aae5838768580d8a8bd8f27f204c448b75e168b8f5327c2d9ca633eb7598de02e85ee58d413ed17ac51a7e25c239df81277346f24a6909e7d0c1ab88e5fba67cbca5b2dd655c5a3e093893119d27081d9e2eb7580693906aaae420801baba73a0664fd580b4af3936fc3aa2bec51330c2b5cb7de0d9789b7958a889e023eb54685d7a96283c6230df5306f0db32a244aba12505b824d3b789440bb0e28a8e4b59c0b93a496687da77d002b24f1e9c5d71592b0d2a2a1168944910a7ef5dddda16e39943511dc71cdd3d7d74d4b385e43d58a1b0bd237f44f3ffe1e8da65dbd9c4f654dc628694e0fb9c4af717df3bdb5b4fa62d2a0565858bd45934009e0679ce1112ac8db3c7b9ba3df7f1418287bab95c30bad299691e2d2e57bf39be6c6984fcacaacf5eca1857e9fd91d941b5368543cb1e05774e2a29acf957b6f4ac3c0f9b3947638f9881d873a791487e3795e4dd8082daa14eb1fd67d2c19a66a84e3cbb64b53b0d53c752a9c457a122690ec1fc643c071e852a50e85e1662402e10a2c7215aa7987316cf8b390cba378d565f44f37f02f1b8e47216e3c85c43425c397c49c6e2dd666217e6e3cbecb891b34d4052a0cdbd0de931c0649bde0d0ce675549f1fd0a66742384ae2443a3231c4ad34a2c73d0088a3a4937845d4222eee1b15369973a424c8d23920dc035f39bddebab58e484c7385bde0df854c0b8e925f1c625a1f8cebe68e77b931f7ad49d4bafb3fe61ebd5b812ab1981c5107b5ba6ace2cec9c13efee0d5374f21ee7a0f536523a7838b002fb9d0abd15a0aae1e0e18c59dd6f18b46eae95c7595681d9146c60f92aa8aefe8be65c4401173c55924b1ebb99400639319a3cab6dfce4c0673a557ebd44806e94274d4c4317a5d8fa3bf9ffc1288b98ff1277022645692016907020273bd540be7fced10131eda319f2f928b9b744bdd9b30c03e393849a8689d93106749fb6359b394e272cd3c9a2d52a26ef48bafbe1077d571f2cccdc1da8ee4861d645be118c9da045919c60e5a8ee4adf1e055c129ea41c5011c57c4a29b901053df88a0847ac87e862f12fe10b7424fa7a940d1111505954bae322aef4e7125b0024f5b0f192e2714cf5ce60fedaacd4959975efedc3acc08dd8f7097536b27d3c20b1bf7412a15e8142aa9472214dc89b8015cfbae2711af6d18d1e5a934c3a865f3f3c187c3f8de726d80bc5a13126fad604f4f3115561a5de9d50b2306a7c3b2b26910a9613fe427049dd80756a7ef50f38aab268d19d152d37047c05cd0fc06191e5cd3b33f38a7947d7c5b2ddd3a0fd7b41fc5af9b4e27dc0a02f6a7d179f7fc4a8755798da319f8a4298b8b8889067859dd96d77be23de06732e7e434814ebaba782575ac6d7394bbe2f65be0402b3692b3f4ae2d104239121b11a904b7b5f5f762fbb1a185e856da2c66fe819b8c9ee857ad54fac6595a7cb11bf6314a8a48386a1bf27e612d5c6479f980bfdd3b55911d72ae07fb34cb664e6f64fbd860dfcee370697416a33ee96d1a19096b13266de50caf820676776cd5c99e1d598fefcfc09a72e8325df983e7fd20a3be9b507a3fb4b80f50535b219190704eee14c29c64a5029f23e95d78b497b3ec71619fd874f49130f9ba1afd108252441d4bad1a933ae2de436164074d052587cfe214bd2a67b61e56fa9a11b8d9c0a4d22d39895180fb4a4cb20073f3d909230bf672178cf0de47fdb6a38e04b10f961dbce78ca14eef050217407f53839407e93b23cd3f8670ca8950c1f0ec67943f1ae81363fc340fc3329e4e7ba74321594f36ce8b8c8d16abe1de3ed093bb063d703f48434380fa7f57cf8ca6828bc54674e831cbe3eb10e7a491d27f8748d5b605fb0c6465beb106528b7c99823659f9958b20cf888d65da7effb4b49d08c06a7531c3f5f7417fcbf125c3e4d57fb8729a16e61b58c5d5799639c4ef683e89dafa7186309d58f094a4d6244869aecd2318277d48b0d80faf4c4f97bfd5df26fcb3bcfc1f4ef0d242a12224253b7963c52538694e1448987f932c8e2e9b85c6a4b0ec45a2a59b36778206aea93eaa4a3f4977f6d2f284517ecb50984fc1ca65922d2cbbe0917f96b954ed1762055dbafcbddc1729d5cf2397636014de12f561b8c103594bc715d41cebbc360b833b8be582523dc77f7081167aa875e585c2d819bd9ba038b3f602d15d6b64570c6f61dbe9a0ceffbdcffad65f6dcdadde85e2cd80d7da248de88098d29d60ec4837912dd45f06307bf491ba7daad127981d12b96fcb36730ae49a03357424b37e1d5c309f20e0f379986af9b145a3e302ef3cfa08704c3dafca96bc123d6dadd16b395303356e8b4f35a303a7038bf3883367174747f2705d40478317c7c5b243b55f6e5ed807f1abea820ad97263cd01d4f39753e5c945e979fe76387ccd3d9d5034010e114d49a576117286c1bdef365f1ac0f4e820b0c24e077fad965d22461d968bfde3ed2eb98fd50ac09cb55bfd68907a9d93d7361cf9471b8568b917a4503c05583e1829679133cc462de3f2b10dfbdd45fe049bd25557be88978a31206aba45a8adc68b85ef33fe9444535029f0ea0f43e28de1b8b370e5942f3b73b8622fdf9dee682fdc29cda7eb1a89e08a70bf92dbff08bc7576d08a5ccc5801dfb8fe3e901a3b50fe0f63d9c728d2a8ef5524c8907a75a6dace7d6fe2f0c29f248f72e51e84475acb14fba5db63db8ce84dbc760c2cf3adbd632da9206fbb357d36ab9999ad35cb66add6ec3bf8c9b0ff074bf07858346d9f4f3b6d336b9170ef017a8e06d2553c098f38e86a13126fbd44f66960cf1864f87011af21fb99d5653718300ec2538aac3aba3b547802f48838f7a99fcfb2ab4bd95355bcbe0edf12cbd9d48891fce8f263a778fffe63f791e7cebdbc6b733a0558434fe648ba338ad1e335f7efaebd04ab81856daa1c51f6d0bfb5f85fd2a8d93d9bc248d3e6ec7517ce5bde47665b4a51f2f8da026c47495c9ef3327e2b3055a69ba765531515eff2f9e381124216be9ed14959ca99c5297154a47e1de94cde4285017ceb41a3ee4261aa556499b8c43f0c728c462f80e7dc01a4b62a359d1c381dab5c609089e1e21665f1c0c2913d962e334ab84201e756fb6e324102d1a1f83f27f919f932d381da80f4b0458437952a8c933b8c19e340691f140b2a04a02072c06e82ee6e470f3e0642025daad9257024a9e201b52db7628630ea28b6bcc00ef03acab952edf7509d27be04b77902bc311476ef1150114f55c260ba8f4dae85cca1f45376af04b17489a310da32995a858d72e3fbeb460ba96346897667b463872a11065262a19ee5bfb1ad631c0d3cea3e3238f4ce86cde1bdc3a89a564aee800037aa5aea3aca4ee7f9555318b8370306a6a78638953e2990e8809761eff4d907a9eca935183e60dbe2d0e33614ea2777b42e17bd4be5e1e2ce351bedf82c910e20520049d8275b7a1506a409429c1854201d5f844ec7731ff53ecc32be3fa458de5148cd905e06c8adaa431e589f48e299a1b80d69be23a569e07a6280281fde97184c78a001a4e6a9271232d6bbfd4d277daf456f1b0733548a589e8f54db5d01a4492b683621cf226f08a38752a64dcdd6831ecb7768661d48d32bfa0f829cddeb353d3f38e1c7cbff383fa53a866eaf820331d55d9af53cd340a8a261404d46e10bebe8986826dcc48b359f1c088660af5b7c794c85acf5a69b77397b40c570bf7943f272a94c5cd9b4e7b92907c7344b4641cb08a310d786efce1de08e813b3c89c2def8e1acf605abf5bc9df691f8e53f050ecc4e86c52f1075b022d8e19b2d8bbae6cf171e48b2fb4363a26073db228d13d3c1e8163adf6cc88f58c47d6a0bc83823548e21a71d62d35a507e56697344981e90e6b443d919e42088eb00987a596f2c0ecea0f05d2353d03fda4ca5bbfa0f12f4079230f36def914eb8ec2ac467b4977d76720fc33638593b7d21129a5d15522788e6f8c89cefd9a5ecc0ce04194ff58656fdf6d0ec4ae3e280d8979b40efac24448366e98cd1dc80178bd0cc03e82f6b3ff8346e6ed15713a991f7b61ec379fe04a0e7e9e3071fc04bc85022e71857e0d3460b25472ff0000000000000000801162509a6fb7d32e39ca005802ca2b6466ca4d19424f67e6f845daf0176960d8056d454da95c650d820dff0c76abfd0a3e6a9190d92f74051b5735a36dc8a5d1ec56b0a3e1973c3a96745bb382f53876ae0f6ad371d5abe0b5f32fd5c31ffb50ab820d9aa7c6226af5a74e051f722de3f86916cbd1a8e0f3f303f564ab513ffa146c344d531b2aca3d8e3605d7e551b4c5d09623674bc1e8741c4b1e8f39c7ce9282dbd7adfcab9a3d7676145cc64b1253a77d8d9d1505ab123a7abc65d7dad950f0933de5ddcc3c219d05051bca9248770af13ace7e829bd4f16807897b829b8e524976b2f7edb7136c7ff4c90cc18364fd7282fd9cbb3d7529eaf2dd04ebf942d4b46d227aaf26788f25e69fbf19ddde4c30f152ef83ce92f9d2c5046b39cab1da294b39dc4bf01d2753b094d68ec2b504d71fa96c42444b39b79560cfc5333bd5694a6f29c1c48eca536d245779ec24f878f372f0dc96e3312a095e32269f94928a858c4682fdd8ad438a2735622b24f82846887973fc61e65a1fc1658fa7684c367aae3a828ffb4a3b2aebe491ab8de063c9d551c469bb8f2a23b8bc10b2c791e394bcea22d8ca95d3777fe6adaa2278efdbbdf4f59829d54470661f74d3721c772615115c0a8f24f96f3de5510fc1488fe5a6b2f59aa01a82cde923cf9b7a93d5a785e0355ab858ba45674c09c1e5e45ff9df32e7673a087e4c3f47eb7e7bf94305c1ae46e444a654ed0f0d049f19c1f5f5d5247e282098cc39538685d5851cfa075e6d255bdafbf7e9d30f7cf7a7efed8c9491927de0a53cca941c88748c271f38db603e29d276d06fee81dd78a5f9f6952cbea9073eb64de28187cad268e681ef4d35f1e3ea044b261e9894f64c6347ee16ccbc03133a5d8e438ed6ca60da81c91fc5491fc3b286987560222a453d23d8c42fe9c0e665891d4711473d2ee7c0e5c823a72527ed8ba41cf8f334c12df4bd7b58c68111cb084b76251c988ae51f5e5e889dac7c039f5d82560e213dc751ba81f7cd4187a4231e3747b6818dba314aaf87d2f4b3818d13d3642749db7aaf810f3fa8af66dd106aab815ddfd30f3964daadd3c08787c9ee7ccb73b76860574245b437f388ea19f8cbe926797412535433b01e7124c52adeff59066ed37460fd398a7d4906ae53bd56e89ce97d1c03933d323f4664fb184431f0ad3b5127a61c873b6218d8efecb0485a1ea488606062bf5ffc9c7cd522f8053e8ae9a35df120b45be80556527a9a6d88a646d8053e8e21e5e9d34afb0fe402639a23879ba929fab305ee4d24548e9cd1e2470b6cc6cd9a22dfc65c3f0b5c32f15821f353ea782c301d7d2d54dfa2d6be2bf0697254a1a356e02a35e6ec9da5ffea2af0ab9263f6e71f8f291558abf0cc617556b2dc14788ffa3ebed039bccfa4c0da564c627a3a11d54581bdb71c486c0b9ae31c28b0561ea5caea3f81495d4fb7d03b81cd95d26a9407cdf1a5097c9e9c3aa4a530818f3c3a5ae9a85a6a5902fb7771dd3e476f7425f03123674dbb5f1ef124f029762e314ff3571b09bcff5e8e3c47b49ceb23b0a193d7313a1e952c3102173a1a6d8399c65c4911f82cd3ca1f4dfc3449428452abc7e19de7c8107815f538e5bd8957392204a6438b13298f47cf5124089cda471feb72438e721020b076991f65dc4a4f1fe4077c99c7f991f74ab20ee203ce4c52b6faa83999df033ef290424712b9ea390fb80b9a3d7a1c78ca3936003be0b73ddc09b1d51c4503a003a65a3c9b45deee400c400e789b689f4a53966218001c30e27dfab95250bd2f0037e0037f89e739f2d5c805c0064c9d471647c72d2c62b560937ef2d7f1c0c394325a30167d93ef6ab44665b3e033b9959486c5d1c964c17464944f0aa5aa1e160b3e5a0f2cbbe310bd3a0c16bcb54e1435cf5ef97905e3923acec861477dde157cd00ec7e35a4d9336ad60a22306fb2872e810670593c1e2558ebb25b55e051f45bb83ced1d9925505d39ec7d732af7baf950abefaf3fe8dc4dc8a162a38fdb4c8492727e7ab4ec1c53109124dbcc2aa32051b19af2d43e8918eaa52b0d1514ee4a451d61f450ab6e38dca1f073ff3cf28d8cdef104a3aa2603547ccd145544c8f130a3e3ce7a4b1520ca96340c17db4962de8a787a2f904939373bc2163eef08a27f8dc9d62476fb2897a27388d69c163d039c1774a3a561e5ecc4d6f828b71726df23097245b136ca87ad6897f1915cd041f11cfcfc4bdc33009136cd0cd294713a44bf0994ddf33bd7b881f5982d3cbf99b3ad3cf33aa0423be9929d35eac9c224af0ab37a97b375d5ed124f8ec918587b899cd7324c1d9d598661a09b626048939b9fe4448b09a7fc9f2644e79e7116ceae4d7e96574751cc1d4ffdfe7d08276fb8de0343a2cef1c59c77461049ff73442c2bbaec317c1bee6df58c13aca71ac22d81c3d9a184332115113c17afcce9fbc2ce59844041742c8413ecffa3cef107c8e42ec3859d2bd0d3104ebb93d67af491ee7a8107cd49fefae26de71c741083ec7f839958f7ec58e6310e6ba8ed4927f144919825027468e9fd5bde98281483bbca243726c114288903e6f7af7bdc80004e751fa38a6739b0ef7ca818c3fb0912aa25484189965c9f003933ea6cb76290d1234197de0cbebaee3e8e34a61937e0978cbe003d7299276637be7aa0b8c31fac61860bce0b1c4300109c6d8c09144011080e101197b60d2b37f3cfab8ab63e9814b1edbab64ae6039b3379208e921230f6cbacfa25122c6689d2c3a1978603a16ed1c4a837777603da7607a9da56f922579906107ce3e7e90d673146268187880ad800460109251077eada23a920e4c9cc8a2eb1da7943d73e0ca4663ac90f3bdc396210726affad793a450392cc79011074ef3e52affb8534a41bb91044618a78c6acbb7c08c0c38301d792e0f5992eaaee70ddc87579fd29393796e64b8815f8f2d48fcbedc483a4a31b2280002305820a30d32d820630d32d470ecee2da923ba75ec41ea204a039b1b6c276748880732d0c0458f4a2d79984baa878c33f0e14bb00ae9b6a5b9438619d8d7ebad78e3e14da559905106be3f5d073bcd1b73df4d9041063ebb453c8921845458340932c6c09a55664d972dfe95470cbc7dfc3e39d97699250c4cc85d5d9f9da31ce9648081294d6a56d5964efc2f2cc8f8029f6387d16eb7bb3744bdc0e6e520dea4bb8eed6132bac0bd680a12da172eb029f4427b3f42e9e45b60fc53c8eea1d986d64d8616780f3bab453ad69c1f850932b2c096781021bba3ceb96c1b366cd8d022c8c002bf923a7a50578ffebd8c2bf0617e6d9198f375b8161956e023c247c5420ed115655441cd8ebc3da2352ccd23498f52df74935bd4eac8a0021b1afe1f26bdc84108e614f878a29fc7d799b5267f2349a5c066c9c1a3cb8e7223290a8c5ad2144f8d601f77a0c0ea6b7a8c9f3637920e4a194f28800c27c86802524006134ac612e801329470458eaac30fae31373732013292407b24d12da4c3c34faa6294d0a4e5932203098c768e621172ffbbd523f069af41ad728ef526690426efe5ec1693c48c3bca28027b1fdfd564cc414998379236023288c007712b6f8ef32731cd190267313ca7b59c0085c0f8a45dcda156b24a73c80681af984b3db2b2d76ffa46529206640081f548ec83a829a4f01c12e3075c942cedbb7174ea0e230c1fb07dfea3d3de693a477540460fd80cf63f91f7ee6d7d06c8e001abb992b5bb8e584765ec80ff5c1963cad1d88de5c63274c0f7f7a7b0e49168c5f44612cac8011345f37462bfc4149581033edc4388fe945452be8a2a20e3066c56ce2f6de93a42540d906103d673dde358d2c7e935bb510b26b9be4f77d210936e68c1e48f7b789edc8ec3e82cf8fad043abe9c4e417dc42166ca7d8e6d439bce4717c2c58ef0f25c608b1b5dba72d60c175f647bdfaeef0c013c3084d608b57f0f1425291f48e68d5bb82ef5042f48bfe6191390e6a05fb418779982d6038600b56f0af1a3f448716b287d18d24ab27c10ac6201dd862156c781c8dbae53876c81d5ba88273afd6fbaa549dadba91a41cd822157c301bef24925ad4d40d6c810a2e5f0ecfa31b3a7a4fc17b55dbc64b1ebec7e68d2462660b53f09ffdb5c172fa461209830460a4408ca30008c0b0c016a530867febc7e14f0a5e355830afd429fdbc512cf9398ed3c7113a0aad28d40e25b5945e8e678582d08e253cddc54ceabf5ef24fd6650b50b05ac1576b42c6601ee3832d3ec18797a305cf14b161438cf2046397ccb4ef2ca8a6ba4527182d4d69e9fce004e79d7e2d9f471699269b603b7f3ce6bde79999d5043f9e2dd28b59b2ffb02d32c1a79d9c3685a8a955a3841ec000069c408c76411dd5842d30c1e7d0d13b5be3c6e84c075b5c820f3a508b1f417307b65b824bab3f96799266ecb312bc46c91ca6a496c63cbe05259870bbb1d4929d36e580618b49f01b62b24e89b47cc9488209a9de6cfbbd03fd728b486c0109acc0168f88c0168ea02d1ac15de4e54bdf913eecd82d18c1f74ab06c91d44374f8168b604bd3c3cbbd9073d01d5b2822d16869f110c92265522e92e934b7638b4430591a1e7210dd922d8704e79820052778000c142086186d011b366c50610b4430a9d29e57ba60f93cc7da2158fbecbcb93d2154f32d0c41481fee5f087e83774a54d2a459e384607aaaa7f247569e2239082edda247c5cc1e6b7404c1be897898c4363dcc0e04974aa2b7739e9cc84180e02f8b7e9443ffb1a9fe0f7c48bfff5071c3524d7ee0375bcc295afb884bb40f5c468ff93e481bc53ec907b63b90c83b0f2a5e593a6cb1073eaca34959d292a75a67d8420fec77e68beb22514d359b073e8d79763dcf6a0d9d300246a8f6ce8b17f8b3d85149babdb6b67481cb612226ed3a17f8fd6493dc3cc48e52760b7c6bd68daabe5ae0d7cd036b17cf9d44cd02af96e379048f19ea83055ed2def3a4ee9dfec81578a93d9dce4c93f0cd0a6cce9023e91cb9eded2ab059837dc64ff539a254e0c3dc61fc3d4d9d1caa29702947e9fb5ef37d7b9014989435548bc41c8fb900a2c0a438fee1ee3f1418ade021a51e5b76da9fc09a5b7ba6ef6827a4760297d33c8eeed394a33481b3bd8e536ae7cf9e2513d8dfdfbc1f4d7b9c545c023f2695ff2fe428a58912d88fa62f7fbb2470a911435f4d1402012081ad5039ab7ffa20ddc71f81edf83ffca8d471d45f23303596952fab5e564a11b8c9710e72103dfa6d2e89c07707f18247fb5237e110385d8b961ce6c8cb622704f65643ce76d71ff727086c488bb6292540e02fe71cd59d6f8e5e627804f003de77dab74bbb23a9b40fb8ec1ca2ab4fc7ead9ed012395f59992eac50f5c1e305ea1f759b715bb0377c06e16c99f10bd553fd101fbd1e738b9d427cb15c9019bedae6ea2c470c074471169965a625c6fc08779b234f1903bea2801d880f19be461f1a75ab05ed9a1412c62ced3a105e35a956fedfe394bcc2cf89c17cdc398e3d4c448164c4b55a49c501bf3a6c482579dcca1bbc674fd820517728c9c2ad641e5bdbc82319f94c3944657b0123fee77d52a57b3b4820fad646fbfe91b2285155cda17cf4a295ad2bb57c1654eb614b23e54bb4515bc77aea82192d57edda9e0e338654aafdca182092173a7cb9d8aa7f62938bb0a1234d8aee470370563bd31b45d4ad6f7d1a5602f3cf3daf28f4f2749c184b86dcc7ce938673b0a46f43b636467cbd588828fa3deaa4f59ee7a2f14ac7a2e891634dab9f9a060f2b26ed63e89dcff2718fb38c8a164c48ad6154fb027412afdd574f638e9045b7fbe2107a1c373df7082ad0e53fa9474eb0bc926f834ba5da925398cd96982f338b462e8c04cb07e12e6ea718c7917c304afc9cb4bc5727a5f7609c693e549f92c484811b544b57942fcd0e25509d6277d7c91cca3e8183283124c0cfd593cbb6a25440a3326c104694b6f17e57fb59124d820e19ae320467f5c0a4e506c0515b061230527286d822e1998110936a4ecd177d9ce3a3cc03003125c68c8eaa8e80fcdfd0c331ec1e4c0a63f3a4bb12cfe1a86198ee0b2d3c7ffdef65a9d7ec11b143c20673482cf4bd38f23572c620c23f8d8d2214efe1cb2d68be0354e9b4675178b9614b1469694e6418eaaca7a2154a25fde9b082edd7fa26e16b3efc8083310c1a876da85f0fa981b1d4f987108b6d294c771bc1e891e3885198660d386cc61d69d4c75b55e614621d8528f7b632ecbe952360a3308c1c7514731dd64482181099c0583e0731cd86f46458e934f15180305c1e71ca98be9558a9a1ea7841981e07e42fa8e524a9fdc374070a1a5cb4a3ce479a46f88d10e3026ccf803977259b687eb5aa8641ea01498e107c6fc2e44ab549792cfecc28c3ef07153a5f1dbfe8c24e9001fd8cc5d5d9b31b9073647f7179df9ccfc2d1b36900b33f4c04e0a31756c2fa1fc9c801966e481df147d73858c24e1d11978603b3dc8b8fb7982a5983bf091537e468e6207dea31c799f22a5fdeb7560cc36ec737758d93258810583c4482fcca0031bb3b74ef66995688f39b029248f561f77c37c970313f5447b2778e81dcf38f0112bf7f37d90236a100e6c9a903f67bfeb0daca4f867bf6b1f6e4833dcc09be70cb5cdaf39c9a30d5cca71ea3d0fb4bd34870d5c48b07f4bc1e3d8125f0397f43fe3d58b47b13e1630430d6ca5d5e8a1593b8895b16163461ad85f09ab8e293a875fad208c420a0d7ca66854cc9d322cd467e06a82e6aa160f29d7ad1966603abcd4b419a3de454a19f88ef3627d781f450c6ded0c32b0aefe2b393cb79cded8b0d133c6c0e7f798cb23a6da8ef125cc1043b9c943da8b676ae1110642f4f04cf78e34cc0311cdcb3cd9838c8560061898081e66d0fd7092abf905f6442f86c68fbb208c2f6cd8c8c10c2fb06b3e39e78aec3987bb7581b7ce6377294a58b6760617f86dafe471e88b558eb6c08731f3cca2b42543f40083821fe3055c3e05626c0f6668814b3f936cd14e3f2d270b8c07163cf61495e3b36a061638eb98ab2f912d2dab33aec0a5a82cc99a6e8284678615587f95cc137206f7cc3e0956304626614615d830d789faa8eda79233a8c09e6ec68fe3c0734e1fcd98027f4134f85566fdcf396648618f83ac1e887ad4a1d191d54dd048de167264d16744818d7ee9f8934fbc98d36f8231c2086305fd2b1823034f821568c0860d1b1400011829980105f62eefda4dbefb9c8e194f20c40ebd2304eb2834bdbc2d53ceeec84e7fd330c3097cdc716f64698f97a398194d603c67b77cde79ecd49cc1045e724bf8f8997690c5194b60a5dbed4c2b9559c56f24250161861298bccd715cadfa108f3aec662481cc0c24e0cd3842d10c23d031a308bc4ef0ef30c72a5193e5a8300e0a1e604c40821b5fec173388600861f13dcc9af21cc2e91a495269b97a7654f741e748ca6b0a81cdfa9da735da67ce91033382f07eb8917fbda3aa338070685655857684728908e9fc3e3ecb6aa134337ec084a88dbcd050e9349b000f66f880bf0b75b3fd1433a5b406337ac06eee57b2609b3e62c8623083078c8f7f56f49c152ba667306307fcbee7925cd5d821624cd03374c075a59ef6b4baeb682432989103ee436a66e54f5d9143693003077c4d9f795c92367e9042639871036e4d42f9f6fe56443fc3067cb499498713f3adc35d0317b560342ab55c629ada96d082c9d91fc64dbaf142a265e062169cf9e5f2d29cb35e2f040217b2e0e388c1f252a5d8c9364548477d808b5870d1b17686f08a19a22503c5052c18ab4aea112bf70a3e5adbb51ce8879e15c2852b1889ac8b8b5634b1734cadee51b860052f11d4e35748913a0ee462159527d1a831a4e8296f1a70a10a264b128d21e67c39fa8b8b5410b523ed882e0f455333b2c7ced9d16d424e5b9b2051c1e74bf79359b36464fb469219430c305220c6d90ac6480117a7e06b7bd279382e17a66052a4a694234d88293f2e4ac1874577ccbffd12cd6332810b527029274987412b9f7b84052a20f242030df0a204e56f7c718c82bfd59c3e44bfc7097d056cc346afe0b9100517da513cebf5d064111070110a3edb842c6d3f9d276740c16a4eeda19a9845bcfa0b2e3ee1071a63901442b2601d179ed82b523d6cf558a222a55473e451876b79ecc5e7a2137c9a477abb1a0696134c64ff8fd65fa69a29ab002e36c1bae5f7e520cf83de51137ce0951d69f5a7509f13fc180fb061c3868d42021b360e2e32c1a446971c4f8e3faa756e24a1073ac00526f89acc9bf2885ec6605f828da3123c59ca715d865882c959ef1f4f58ef07d118b8a804e7d3e1c5ddb48ed71b4ab03992e60991e824f8e8da32e484fe58edb20117926033c44f8d0ed224e43802b88804ffff39be4609e9bf81045f61fadadbfe3b9947b049624e96dfcfeb2c8e603ccc9bd5e5a9ec2a8de03e5b7b6caa31f8c719c1f4c5786a1b5f047fff1b9ec9362d7245f01e868ee2e96fe96513c10671d7efd1fd285c44703ed17652071a3fb287e037667718d6d9d1060dc1685d5bc8090bc14a65ccd92c439c144208266972fbdccf7194c81904a751ea6d42eba96747107c8ea35489356e2ed90904af317d9cd43ece13d6010417923d298d649c9cce1f58f51c43a6c86bf91fc70f6c07ad41433f7d602c2c4e9ba7659a1c3eb01d4f43fae8b923edf7c0eeb47da7cbdb29535e0faca7f9b6bfa6ec907f1e588b189ed593479ddfc7031f8fbb77e07310e1f6b9c5ce563bb067a19321296496b40efca7cb109a621a52920edcfe78ec57da9b4b9c03eb615a65482f31562707ce7d3a2dd9e77b8dc481932c31277249f67038f0a9d7347476a7b4f6067ef26785579c249abd1bd888ac7adb71954bf66d6043987b0c1977dd43cf063e77f4e1956d7e747e0d4ca6e4bb10d772d25e0ddca474cba9a53a7e9834301961fdaa2968e0e39843ecd82605ebcfc0479339557f5dd2dc9a81cb29c12c7a356560b33e8e1c79a42103633958778e4fc815cd1898cc9b339bc709e995110337112a750c95726f3261e0b3876d95c572c7cb0103ef1223862aff0b7c86a8ae38b1eb62bcc044f05deb7c4b5e17d8b8fa1fe6ff6825d85ce0aef382855fb576b6c0bb740c9bd4abd5ac16d838b1c3a8a8cb1e93052efa457d3821b5a52416d8ad89480fb2e678825760cbd26b471da5a8df0afc461e4db1f753c4abc0c4ca9ea1fa5a734805c6c232d28ad87bd04d81d1e8515a84981458ebf138ae6a250adc47f238c81e2a5060ec2d4f6a45a8d6a93c81bbedf2384dae5afc38810ff3f707afda90f4d304562a7e9ed63cf5e8c30436e5fa49175a6275bf04d624eee8f95d69c72b81b59822786fe68b1a930436abc4f2d077b35283042eee8549fe670c31e508ec7a9422f75788dcb81198aef1184c3ffbe5f022301653b445688a9a2c11d8cf951f76c86c19a343e0234327d8587a944421f0e1e5a9bfee82c0879ef23b3bf28e69203016b2ff54e5694ae4075cc751476d447a69cd078c4db68b92368bdd3d607d3a927bf618b72c1eb0394af4473539173be0b3b3c3b49aebaf1d2e74c087f8e6a92a7b53fab9c8011bdff3b4fdad05d37081037eefc3ce9b373b47162e6ec05bca51343a0e43d60a1736e0b27b7d64458795e35d0b2ed8e6e8a13c48398e372d180bd9e9b1638ec8e99e051f33ddc6ca4d6ad16e59b01f478a91732c54d21d0b3eea971c4fdf630975c382b588f2f720370186860d9898b126c7e1471a3aa7168c5ff4e823b3ab7a9f16ec8f4b5bbc8cb9dc9f052f2d29e44b6531aa9705a7e6c9cbd38f0567971fc51caf0a49030bb642b2e0e9c93683e615bc85ba6ed4b04a61bb824ffdd9d246e29ad7ade0b43fcc320fafdfb082b753d38f25d7725f055f1f7f68e93c6287ac2a1809e1173ab08f0ad954b0adde3a253d294616158c87494de7ca74a79e820f82967b8e5353b01a3d8e12f3b4342c05ef81556fbcc88c192956496bed78e128d8f8be1f49f444c1070b25aa495242c1c6a47e99a318d3a6a48082f720e7b67429c573aa7c82c9395249f7553cc1e7ce51d9d8769c31553ac1d6c58e63d7ab5656e10437963a0acf5076e9a36c82ab4e95b1cea378ec289ae0e3d43986bc390e153a99e0b7ebbbadccf3b38f09d66bb242e8385fdecd25d89cdd91f395e8ebc6127cc4f6fbc9cae71353093657bacf1c5f92dc6128c1c6cfcf9be8e9ae9749f0535e6ad1ab535c97043b696acf2f57b4d423f1d69a75a5b590e0a3585f7dec71d6e5114ccee59bedb36aaa1dc1e4e01b5d347aaeb2114cd44b53bd9ba3848ce024acd37a18a2ee8b6024b5d507514530b1f3d7e32e13c1e4183cbeac410493feada64a24f772082645a467ceae21f87817315368856035848ed637eea7ad08c14f479923096199e3d02058491dc791b5e4826063ee93bed6cc397d7820f8cf103a477d382018e9ce8b9243ec78f903a79373e01e555b76fdc0ee68f43e9d0ab57e1ff8cd97730ca12282ce072ec494d63de44cbfee818913fde357e7f471460fbcf48759fb73b3fa7960b3a7ea07f53fae173c3099a3d84dc894d4bb03d341cc295dda3c891d58dfa07d3f79d7a14fd5a31fa1a6039725bf27749e25cfce8193183de704a9b374ca81d78e366a347368391707262b6d975a57c8e9c1814b99cb53073152bd7b03e3615ffa783b100b1237709a239366c91a2d45dac0e57c1de738723f6d8c0d5c9625e918661e1aeb3570792a87541fb4ee6ead06d624e4c08314aa7bb44e03d3513c75e0f7398ad6686037e36657eadf4ed66760c4f4e27494cec2a736039f6167512b72ccef9481bbcf771f5f92f430860c9cc40f3a9e38dda962c6c0e4aa6932f1cdd01a31f07561abc96c2c464c1858bf6ed30eab63d9050cac59df6eca61ec4bcb17989cf387d258f1022ba29f36f22daae85d603a8eb8755ebcc8970bac7ac815247ff098a25b60bc3a8e7e47bcea530b7c95667eb27cdd20668189c9c5437f2016d80a7e7a7ba1a3875f8153b1529fee8e539f15d8dc51d2ae0aecfee5e8e0c9b4afa3029fff631efe44946853e032682b052e3b049bd0a93bfeb45160b352d484ccb150e08257f69c17b96e39f6097c14cf72e80fd2bb1eeb0426d77ed289f768ec348149993ada357edcfd3381979449d354ca61257f099cc7ca16b37f18f2c52881cbcf1c87a72609dcd464ae90a01e790509ec57fb4bc8dbcedd8fc0bdf459eab18dc0c79c7baf3fbaa54817817bf14042f74b04d6f4affb2766fc981d02ff13215faad7dc6e85c06fa57984d892a96b10b88fd4f2477620f99340e07673a53c1eda442c7fc0afe64fb6c92d0779f401d7f9325b6cb7cf31d803367f4beeca395239e401e35ba6394c15fa12ee80cf963cbd07d52173a2032667e5149207c9011773f46793b263a50d077ca7dcdba3d279dbba019b328d66560dd13522800db8fda0959146534987d682b3d7649f424e997268c146a8c4fca1e37790330b7ed3a59164be1fbd220b2e73eaf0f429c4521e0bfedbe39f865eae5cc382ffe8ffdafcc8ec7e059b73aa0b92326fc8d6157c5da698fd76a57ab682cb769b2eec5427c90af6db3b847e1c07cd71ab60f3a6f8d1d6217447155c4fd636d33ad5df52c1e7505cf4cd37258a0a7e72a287be50d7ac4ec1e54e37d1a89b7a43a6e06d3acad2b7e5672905936973106e294e0849c1efc60e2b5572758e2347c1b5ff8618f3a3a4bd28b84cf9bbaa3d388050b0557952bada7a971c1c0028b8080f16339f4fe6781cc027d8d47f29b1a3c73f1a1c802718ef3b357b0f75938203e8046b5795fa2a87598e8203e0047b6b539a63a9c77fe30036c1c41c7474bd95af7dc50168a21c448f3eda4e6226b8a81d7ee6e6141e2411137cec93a368e31e650fe225d8cd1f2785ef078b205a82cdda31f53d540829879560436547db29b6e6e0212538318f2f3f94d0390ac1497017cfe390f396e66b28095e627a183f4ed7614c6124d82b0f79215b62ba0b21c1b966b794fa31354df808d683a81f7af9b7d8848ee03b88ebb19a7ba7f0c046f0e1793fae6cffd27118c16d0aebbacd933da7dc2278f38ee2775aef902ba708d6e2a50ae9fb2582ed9c1f7f67c923991f22f88acabeb5965a3c7d8768f2666a6a660dc178ebe5ec31e4689f4270ff9e3e45929cf91382b1cce19692d7260e82db8d1cccb385e54b05c187b12ec44bc914760682f5406fd5c3e4e3f90304231d77c653f1b0fd3fb0515442b61cc4093af103d76a29488ed3e1b9f581a9ce41e56bbd90a27ce0774ac24fcd236ab507c62b22323d4836de717ae0425d4ca1d92caccd03db1e6bfb9be47821070f4cca1ccd2bbb77603dd2b48ffe62073ed6d76b96907dd55207266b43867c9a962ea7039f3d2555e22591eb39f097527fff21da07b51cb8982f48ba5497fad438701f7d9c963d09073efe8c952383585cf10d7c0c39a3b7799051a11b580bd191a4fcd0939336b0114245ccd174f751840d7c5f599de693f4199135b0b992fda3e8e5ff1c440d5c65df1695f038770e920676bdb2586eba8d7f10343055133f3567e0b279989ec33fe6583330123fea9443569fe82065e03cca96e2bd748ad143063ef030f2471dfd69e6c7c074841c544ce771540c7ce41bad4287142213063e82eb75687b6559307069c13d5f67ec0b4ccab7fb2065cc0b7cd0c1ba7d2b471232d6052e7ffe20f398a74ac5b8c0dde54fd1ca8e29b96d81edcd64d9715d7d949a169836f74b1ffa4416d3b2c0f8ed4d0eed57d28f8605feb2fb83a8d5d9d6d915f84c1f6787d4ef314fcc0afc86a6918ea94d346655604d83a71425eeab584605aee3ba570e2b658ccaa6c025dfcbb9da79fa25930217332ae86fc7d4b113053e4edad81bc9f3c30e14f84a6ee2e61661de3f81f71032e6e93881efaca1df738eef7bd30446420ceee33a49730a13f890233bbded90ea97c0c719ef266590e4b62b814d593a6487e6bd9f24301252ecbc13cf6e2281cd5e6bb172a7367704d64374878eafa3636d04ee73304f2e9917225a04eec7fdbd3efe8fe24904ae3d78b47d96228843e0438ada11242ce34260737a46b4ab8ecb0a02e361ab44fa65871f080446d2545bfc2054aafb016ff5916386e4a31a1ff0f77939c9cd3bd0480f58d5949716390a0d311eb0917314539d6a0af91d70296a935e4be6982e1d70e339482abbdba0e7808f3a16dff03892c7e280cbb12a4b9b797819dd8009515253d01cb23d001bb06993c77135e4a02cb5e072e4be881e7f105d5af0fda1c71da33b5778d42cf8d8dd361e7e64c14aecb8a30bd158b01633a3c7719ca38c3f2c58b5f1a03e658b48cd2bf82dfde8d12f45b38c2bf82075be201e76704d6905db41dea4ed61f6cb3a2bf8f0a3f7a82a759be9ab6042963c5af92967bf55c15ba84ac9dde765d954f0195ea65bd92a5214157c1e8f1fea53f0f107295e89760ea3690afea7333fbae36c5629f893885fae1a52b09639d85446c1c7a4d13a7673cbed89828df2a0b376c85179170a3e2dfa680ab12c6b070ab6a3cd26fde4139cc7adb7a0a35d51e209be8275903f0cb991229de0ff34a60fd3a3d2e7041b6d9dec334adbbe095e72143a7c62281735c17d609a1e8e99607287f57fb176e39860bb8338e9132ae775092e6e8c29ae6596602b07d12a55f75fb24a30d9bdfb314f45092ec7d3dc3105ade98826c18b785de8e98e3145240936c6582978185124f820691e72143b548e0309363dba887bd973e4388f6035334bd00f8b39f28ee03c87eb27fee1f5691ac17ffc903fc59043fd0c23589fe476767b2bc1b208469345bb907745f081995da7b3ff38b413c1edf626ef30a7fd7611c16866668f1b9596e921f8487374d2edafd41a82d3cd3d116258083e4a3d11322404977e2247235579ec06c1c75cde917e9c20f808b9fff37df0af03c1851c986e4ec5dc5104106c648c399aeec0aab63f7049cb3e6affa8428c1f1e4db9f5bf3e7031bea71ca4ea10001f98ee16cf1d4bca29c6943df0b949f722f4a2073e76f21475a307917ce781cdd09fd03d96dc26c403d71b3433678e52cbbf031f4272a8f3d0b20393bd3342fb78d2c81e02a80367276e22f93e1db890d52e7f47f92fad3b07de630e2a275f94036b7a56a942ecf8cc42e2c0a70d75ef31061d0f1a1cd8eb88d692971dcdad377099da3c944e22a12e7203bb5bd5b1c7d2e1edb581fbcc889227e6d04276602404c00636b775ac8e97af81c94fcf1c78946d2b5d35f029a43b9c34e94a219b06de3cb4e819b9375db568e0c37afbf8f244c9e146cec0c715a5d59a6206c6aafec3c869152c5b06a67b24778e5c95c23332707ba5abfa315df6f821803170c1e3cfde0f3c62e0374d6cd7fe88e4ef87813b096d129d36e5b03760602ce47fb55819669f2ff0d961b80d1b49fb872ecac07ec78f1ef6d8d746b10b5d90017d4f49b722f918d84a9953e74d520c4c5e8a949a5ea25abc3030fa1e64db95f2e8c1c0853e0ff916b262bbf6056e3c77a65fb6d4a1835e60731c7963392dc7df6a17f80e44f4b47db3d383dc4832608c000524108305460de8820bfc6eaeba4de69a317610d0c516ce145532ea2e4e4c7da00b2db0133c471a3144fa3831592063ccec3072e4080ca25a74810546bc2da722ba745ce215f8f29c627bac98f6c137fd378e3a451756607336b11c69cdc1c243aae8a20a7cbc52556ed13666cc74410536a2262c258967dede0290bb98026f9a1e7be644e4d83959e8420a8ce5f0256736fbc080175f78715cc08b2fbc382ce0850524e0c59b20052c18038c153c0a504002242b7411054ed2e5e74d8e3f56cbb180171a908017b8842ea0c04f27d72a6d7d69cdd0105d3c81cbb18f7727e3f7778ac02074025313d5d367ab65b6c88b2fbcf813b41118b402cc43174de02ec719a743fe8fd1e3b780096ca87d871e31724751d2842e96c06df8db597cf7aafd98d08512f8c02745dfe71873b44b12f87c6d9e83946ba10b24701b3488c65812d3a4e7087ca56bba9ca15da10b23301e5f8eeb26a423c4401745e03f50c9518e236a7258de483a01182b08030c5234e882086c6a5bccf098420a51b991a42fe862086cb21c3dbf5bcc10213a18742104ee535610338b9474aa277411043eee0f66d9a39ae1ba2ea10b20707e399fbda44e95d0c50ff8dbb7907ce2986bf2f8e0901a3ad4a46e0f789d382107e2ba9f2dc342173ce043efa4d1c2b6ff2377c05b24fde81cf32f6e5d852e74c06acabe0bf917523c6f8c0623075c5fa8ca9b9c8e95213792c008c36471a00b1cf02e9e592bb73af84407d1c50db8d66d4b51a3689e90340344173660725c153486b09449a22230c80e356ac159aed456beef450c5af096d73dc59043a46389023566c19daf45841824ba353fe8083564c166ed28f5b5dbf44072234963c1646e468ffd936879e54652d1170ef8c28b321678a101097841450090420d5870e5c1564da3471973ec8d2430ae3450e3154c1ef534fab1bb91546b30a8e18aa26be9a756811aad60eddf4652eddce3efec71a2062b982c39f765fd98837e4e05c8236aac82b314d292796c21e9c455c1768eee91c7db1c76fe28448d54f01be29b6dceaef54da182091dd6e6f0439d1c5f6355e3146c44d54fb4134dc1456e4b9963fd94028d1ff4895a8ea4603a8ad2f8395ff68cdc8da42f418f410e5063146c5fdb798745378939a2e024a4c43387caf1de130a369bb487e9c3fba092080a2ebf2576e44d9213fd0493c6b3679fbc3e114f7019a12e466dbbf2b84e7039e58f855f8e39569ce0c436bb620cfafd6f82af1c6b768e3b8ab66b82eb9cb248e448ad438e9309be52b76bfbae6bd260828f3b4cbb5695bf041fe77e45f42cad7abe25d898d98378dfa32bc9af04a3dd39c71fe44b99b386127964313309c6c3f520693cf3a0638a2498d0cfbea1f9639d9748701daaed7fd475fec102092e23434efb29ff73587904dfa79bfd9dcbdc3b7504b7d9ffbc2525e9502a8d609367be05f7d41de43082cb61c6e07feb51e87e11dc74fda70e42570413279d849cc3742298e88e73d0976c44f01e6ad5e9a5db23d787606c3245ea38ab74fc5943301e62da18e6ab67ef1682b7f0d8bd9e3697069710dcef475135781c2d77ec20d83d0f3de4d9ed445005c14fbefbcb246920f890b41c4546fccd310908d6fb2ef2a23d7a1ccd3f3039f3a567cce184a8313f7015a3e49354ba17727de0cf3e48557ae9ba28f9c07afc4073a6dc2dede01e18b318639ee570775b0f5ccc8f97cfb62a49320f7cc851bb8f7290fae9f0c049aae718c92deb5beec0596f96c8e351f08edb81ab6c93943648eac0e5eee439260f42074e62a8ffdb9bf687de1cb8ed241d5e79befabc1cd890d1e391e8aed59438b0ef2a1cf8388ceb1bfa1f749af606ae4cef7c43d4a4d1333770e39198e9a60f4290ac0d9c4bd95b8e837d778ad8c045d1884eeaa15dfd6be042b4c79555961af868bc3ec7fca6812fb37412ebd26347f42320c14181206aa0e1ced41b76313c0397afb453b7e56f0e34039f7c3aaa4de590e495810b21c9bfaa3aee6d6460fdd3fdf8d5a59caa1a03a3ded6e9b1c3c9129518b81ccb97a7337a3513063ea2dfa51873c89e1930301e674fd2b1f2054e72e0b1e27e540f712f30d16cf457dd2e309ed77274294d9a1cb9c0e50a8dbb1eb956e5680b4c8ca41db4e78fd451b450230bec84e88fbf238f3dd70716587b955839d00ebbe3ca15b89c82d5e76a65640f95430d2b70979db25d4ace1b6a54814f6d413b6d47fd1861a0e048410d2a705a53217a48ab53a2fb99046a4c81e9bcee55e9a385bc9914b8b81dc137324d0c195103d48802d31a5265b4887cc93c3792c008c324b9a00614b8fb38eecacba1bd5d82ff143c8189d751f27b184742a83792bcd040034e06359cc084eab1082973cf3c07062b78165cc02250a3095cfac7d395c32813f8cfe8cac9827d7c93bd91040313a420057dbd82315ec05e7cf1850d1b0a861a4b607fcc4df276b4775b2b81fd2865684ea14d021f7bdc29af9926cb1b24f09e21e967b6ce1d9579043e8654cfb10c6dc9728cc0c7b1c7f17bed726a4a7aa18106983728601b36cc1b143c18868c6a14818dc96d275fc5d8a14401358820468d2130eddb618ad261a5e069f3000ed41002e7d16d2fb369f6b9edc5175e78f1c5175e78a10109786164851a4160b292a51c4b945ee76e5003089ca71cfbd8f557daf5357ec098e7fa8e636dba3f138f05420d1f6cf1db24581e8f98c004fdc57128a8d10333cfa34eb99b8631060a1eb0841a3c60244fcced6f15f2259964a8b103cbb44b2b72541ad15a16152358764bbadc395243078c667560953963144f6002133418bee585061ae085094c900005d8b0214609c208e3c6186ae4808bbd21d973ba70c0c40ee22d2985bccffa0df8b83223594a39a7afba860db83439bcdd2b4b88cad682cbf1ef9f875b48ef272dd8dbb8312544fb143d370b3e6d85103de7587218ca828fa3ffe8b37fc5e81f8905d79e7eb94c52a224070d5894aaec55b42286414117598980c62bd88f7a3ba46baacfe1e90abedaa35b65ab1c716270a0d10a3e8814ec7e3bfcd3ca13e3030d56f069731c464b87f9c28b221aab60db3cc5f8da9bacb2722389140468a8829fa8cd3efbd74efb6e24550668a4828dfcc8bcbf22ed23bb21060b4c70884ec0825212f0374a7fb14484011aa8e0e376b6fc1b43945cf629d8af0909b1fcd71c6b0a26e4ca3bd6bd39fb5a1aa5604a432444e4782f77280d68908295b4fd1c27ee87a2fd28f8f7ede4e95a230a36a5fb28771822d1722a14fcddf67785a604c9d601366c2c0d50f019232778876ba93efa04ab973eeaede83c5a0f3dc1ea79f4909432537a4d27d89f48d92905cfe154448313ec660aa932bdf885175f280c686c82dd1cf43c88592b57499ae0f37dca4dc9fb4c702f79ba9353acf8e1850624e0051e686082f1cee821868eceee309760a347e571b68ce3e16809265e0ef3f37b6547394a2558cde071c41c04cf21d394e03c73f4a6cee1655585c624d88c9ff7327754126c871c3fa7df607e2152814624784f113c775c21e6491103061f010d020d48b07a9b46ac547374f3477012a13b8c6ac9b64947f096435f47e61b3afeb4117cad59fe47ee818d8e8ce0628813fb9369054fd222f88f257349fba44d9d5104f7eda1e675ac4d3a1e5b041a89e02c448fe933a7845b8608ce3f640f73ae67a4db1c82b7fb9f9031eb8b86d4106c6817cb989f3aa7bd1482bd9574c96ed942560b21b8c968964c773b4f42836062b0b859ece3ccd9a720f8482243ca4bd1dd52078249edc1eabdcec56309084e527344a410b78cef1f98f420849424b7a7bc593f70f92a7bf25c1d3b4a6d1f389b1477cba1e5b83e081fe8f2bc1f7b1cc4d0d8039b3f9e14f303090d3d7066ba299e3fdabd2d21d0c8039f420c796aeb72530e1ed88e65211d274f5bfe0e7cc78ff9d73bc3476307aef6eaf637530726568ff694a8fb64e8c05f87317ed4d1b2e3650eecdbe41f4f1b27e65b0e5c49744cbee938b0c163f128f2ff7a641f387021d15244adfaf8dcf3062e27b39c3acc77e1ed7103b796c3bc296d03df5a1e31b534b487b2814db1a2d6ebf55b1cd7c065d254efb93d8e991a584dcbe96145f1bd2e0d6cfe98c3fbccadda113470995207aef96c3d686760ed3ca554c829ed6f06d67553e6684ab9b365604442881fbd687a1c91817bb17855f1d277ea38636037f476df5d30c91103a72e95733de4b578c2c0c7e3a1aaa8265fc1c0659a2aab8c791a5f6082d8ebbb684b87294fc30b8c65475f8e2c5ff3f234bac0e4f08eaa289d1bf5a7c105b6553d8698bcca23fe34b6706823a539a85a60e3e9978fbf74387516381be9091992d69b8b053e439e9c4248ca4ee91578cd965243dcb069adc0494af719c9ac02bf9162e295a302abbe95833b05366447b6e6f2eae849818fa22175433f3a4d1458c9a023fe1f9805a1c0c5fc61df41c8d37802a749ea34ed6a2c4d3d0d273039081d4a62ad4f4c3d8d26b0398ebae9e330fd46eb6930814975d71e87abe1133d8d25f0bb1ee520f8a768fb313494c0c6f01ce2b8775cd9313492c0872d1ec24c2f63f60d0d2430c1b527e728258b1963681c81eb2064a78ed9ec2cc6d03002af298739938731348ac0ef479ba5582102bb1e3aca293b72bcf71058b34fad1f94a996426032bae5ac5cd336d920b063c1aa4d4b20b0a7221df685fc804bfb18f3a77dc04ab8871faad9684b7ac0e46665bf4909a1371e30f951cae6e9323476c0c44ede953466339b0c0d1df0618e43e3c6eb1c7a6468e480f5cdac0fea43f4cd6168e080fd581e87a31eebcfc3d0b801d361296eae940ea2238a49a854ebe3c2412121e170301c0c85c180f034d6065316081040c088241809a22449f4e90314800339242232281a121e0e0c0e142010100c0a0a06060a0808060806040482416130204c10c72331d23e9d22d702c38e5458edb94260a0712031f69494a63084d2a288e312d2aef0d565b721fe8f7e7242d290414b1420a20c93f0de34132d80ab67a010eb2e55323da6229a2a9b4fb521d21dfcde8821257c04cb3e449c33372a50471f45a683f36777d752f59c009d831a186b1b173a1dda09c44007f2e63c4563a373d400d25aa2f822148725f561bda018c35140720c95ba4ad80d9911686c711fabee8913aa73788acbc1ecb5090385d5d65438c40fc3f4489adeccfc6434a885fd5136e323b8d98efc2d29c2273dcd199a1ada097ff4912210b17d11c38cafcaf792cce25c1c484503e78ea0cc156b5ac5935607c13367e18fe92afae0586ee4e04b60ed27641e8adc7c4a92ea444fbf9898b527449287edd088667641ac46a4d7c8c5b0433312e29c535205a86597a9e80ec4f59da66f995af31a242521975ea5ab16d3345461af502c5dfa1a8e85e0f823583616846689f302d2e6f46dc362358ece81efc97699aa97f1abc03c16b27bfc843cb1cb3cf2b3a397b963b13de7fd1d2dfd5f173135349aa2d39cac60cb30ec4a18b7a6bdb3725bd1559310d43bbfcc984b602ba616a0eec85879c31bbb6f3e2e056085c443cda5998cf9b99ad36de2d69582846484bf64918a72922658d2d10aa97efded1c19b91ad5dd4faa9b278aecd4e6e5ab69e9cf4bd6f36cb9cf8663671d1141d2d6c4d6a189588e62414ed3959a549b92a4738dbab500d21e497b18fd20dfeb74e9b17f60c8dce6bc730662a763265ed6246f991fd186da92c4d4bbb2f41853ea2aa42ad06cea6c1649f180a11e41e183756f0eed6172668ef6e5fef2d930688292e30c327425f981ed52ad8f95e06368d96cc396e565af7375c2e20e8fac27c80ae55208cac84c8b1939849f22f2894ad4525402960ea835f8baecaba9d30b0032d82bf748bfc2a11c17efc20001d1ae37b6c6b6a50e83ef6c4fe5987cd93950417b3e180c7cbda81e4b80c62dde45611c53f3e5dd0e6e69b6e0b1caba540af81cd3438eabb693ab583e0ea531433a35d3ce2d4632f195dd21e3cf858e83f070923a6770fa970e160feb2120823c48c3cda989025a40a20fa25645682949055a388af61cae9a57149099705673f71bd1e8ea340d3f024add15dea90e41d134a041c8e4e7ce38a6ec51ecea85c5b62048623b1f6324d86033a6475d664820a1d025ecdb6864e75683caacda3937b4ab15ae8a9cd556dc53492334952be70ee8c12f01eb3585c251f5d3fc5e4bd5c267155083f2493f4abc49e3eca84ca0324c9506f561d72bdbe2a21212f5a8519de2be435c5bd7222ee89bd6afb244d6bf445336476dc2fd0049eab841b7574bab17824c46e1c761f830ea64ff27dea5ce52285055402e105221fee341238506a1292ab8f59e0bc9727669b51553321078075acda817abb18243c2a33c7344ff24b64755ddc95bd1a45c79155441774b2dd76080145d5139980201630fe70861b5854a6713ac5815d561a5c9b2f23ac9c4112a6f468aae12d185909e1e57e475934a4b58a75bf14c03c5dbb3894225441ca66118d0c50ef9cbd7e83350e69ffc10a55568770c6a2921e61227191f12cc7a0d9a20b29ee5a690129637585f074ac773d3693ecb036e5cb1393d395cdd54ef217c85489132719346e584c154a2e4d1f3b7f566f2c90f6909a15e0a74c553ea438942d7ef95567ac2acbd799722c13fe441165adc8cb5bdcfb1f5bfb8073cea055b23b0bbc0ed2a8ff9643e05d4b0ad8634135095831a9d7634df0742078efd8b600ff3cb1fdd0b260bb2c919d554ccead79ab060ee1524cbb7181d1c971a72c6c19823d5e12cf04e3341b7b552f7d7fb729c2d2b90848054415f7a99eaf328cb984bfa774b0f431ffaf99c8fd6f152cf68c418e65ccefa163409a1154e66949f4436d572be237396dc8c0b76f8904d0959dbefdc44021bc20c480d3311fb93c85b0bb4a4aeb446e0062d71e3cf1018e915e68321b4998a195079b808371e842985216eb8516758ca9fcd9822936fae7e437f9c59ffb61983ef1c94bd73d935e22e26e1739af9758339af0091ec0ab9ad54fb42cf5a430eee79113216805413972c7739c8a01a0e5f46620269956d97428ca8279718a7845136584807d668491c76e60b4a706338e306a8984e43323a2ac1c4ad7aa588015a99b20008f6c15c660054500094e999ebb4d565f4c329e3a19c4b2cf36ea19258fd6a7a8ac5bd4985642358d9b95c1ff0aea977b75d1462775349c5e452e4103b622156f0e1244d2055ff82a60656366e424d929985343d3612183dd6e765a07d096a32ca34c511f6ba625112348da9dde7782b5a1aa30d9628bb3332abb2ac75f0fce508a9bd0cbd083c1287bc5bf8f9380ae1940f71bafd992c404dc4ca08f6d9f12d72d83a6958432b85b3df0607babcfbdceca9d97e2630bfef5b3d61b5eaeb46569c1f32b314132c0df9a0c1c51a244d1e31b2581b01db00d604ec04ad0ab419800581266d05ae67b95fb3337df3eaadd91021b63402ef9cb2923aa818165c7c9ff28b492628ed092ebd5d77d6a46dcd0fcaac4f8a9c9212afd219779577c72e8ad800c9bece368b4ddaec69c14c08438619bf38c01fa66d1ab7218905891a08f2bff294a7308a619b99e2f62ee6b2e653afece1a211eda35c7815e2f44ec47e24ad3e6b0fbe80e027a077eec734c39d5f67f2e80f62c55563dfc1af0a05cb2b0190a58a5885671b36003466a3a711ac2fa75c92b7f2490579cc5b80ac4b36e32a86872b40e443aa5ba05fd4236469d1d51a59c4a96c408af3d0dafb3ab66b6b15d151c691f42d01d1cef83606a8b16b1244dd3e422ec557758676e8aeb42a99f43740fc903ba61e72ac138edb3500efaa93815efdff7454c32bc3c856f2a3eb7af26736a8711529dd1a02675125d943611bd88d7f1cf1d728a17f8d8dfc0a98e6df9394ac831a25580c83229256d9f62ebfadbbc29a28e4220b15cc5d6f07f1d17f30b54004ab87e2ebe719f95d7c5e798b50f786c6e689eeb01bbe81b70d967631809272b5f9da3dc0803608b1118a6a136b4b8049da00811b7964a4bf52a53c8640495ccf88d6d74c53e2919d52eb97304bf5460718f6c1a665c2fc9b4f1d8cb88f7ab96d34b5a1827295ca2f39eeea95c025d31338e3989d31e56992a60c79feaf0a507d54cff38c9f3f736183e7443db32b5fb3904845c8bf952b664a3b39356321f70149647aa959b48aa4988a9e1e82f8a60e3f68f474e38f9d3a8c4748f60cb14b4692a36ceedb4a5a3f258879ae6a30537abed3f5ea6199e80f856a7a177e53e49215311f31900133431078c0bd97390611518cbef08dee3c7a8661f8263ee5a0fb1dc3167a2409628f63a1a2e9cc2d15794aab4d49b1f486354b5f1e92161aa7ca9f510eee204f97f0b4ca1de7ee93235d76fef10bf15a999b7171640675bc50268ebf2aa87b1f06f44c19cf4c405b16a104a12d3cbe5d2a4249e15ce9b04332d3d271d76d7291ef0effab24cb0571580f821302e04f6864c4e9d996b325407fb60a06ab5387578715a6459f77ff70875d3eeec4736fd9a7957c2af4c850f7d2396fbd73dae5bbb5b2c9db977bdcc18f2f3a903c2c5f9d6eb55dc9d9b0767918c5e7fe547d1148c44fb0b82c1e374d5bd10349c6894748788d4f1cba6133ac83fb27bd37be015a44b3a690a48bcd20921ff0d17298830e1f77cbd907ee3aede8877d80baa19be6f245478a4928e1dbeeb96c4256f7999ed9ca745b67763abbb15042694ca58e29eea8f9cf0d1bc78009c315f12da660512080044d021124a723458ac8d256c144caaf0ac8e54033a68a004aaf884d678c1fd2f23e3aa6ade90eb23785f1a9a60d9ab2153a194bd65a1e2815eeb28b5fdf791edf040df580dfef75f2964d0892d091084c3b02446804d7034f1197bd99ca3112a878dee25890e6d87701d59bc64404134a9e208d54d1254d21d5725cbd8063f2ae1a8899e77686a9449b450ce77c179cc832f15769c657e6c9f88249f9598e72c6b533658c3098a468879d55055b32648101fbb60bef717fe389efdf3b6f18b6084668a564d80845453d2837faee83ff2e6ff4f4510724d7ba38344af3154f1940244600b1ab2f6a599d53af93918e64084fee101c5643b18e5180005af4bc988f58a59fe8e2d3bb1dc19d19c3d017faf3e7dd66889dca9e3361941619ad3c6889fbd03313d547b1c8a0bc8e1a08a91c0f556648574517c0ce540d9bfdf4249e3d6fe3fe35108723c62726242d72fb85bf8dcc20726be7a1085559823a84374ade5d947ac09bdb66a128e186d21b252894d05b49d3b324c612fc9ec5fb881b2b60ba832e5b56e0b9041e2e78def17894e2b13f55c651f3ee59971e438b878aa5deb94a95adc6d7dcca6e2b9b2d1b259aef15d58ccb6a65fa73f9de9e5b798850ee8d959b411e3a0e3a94115e9e6786a10cd4b29366bfcc7f94f373b92f3f56be12d027f0f09836999db44dae91b5905d25271e8b78f014af7b764c67aed1fcc394d8afbe11e19fda51e6820a4205485ee0150b01be2313186285df8b045121e0b031059b0218059b024c08183385e60449f38f1300ad17448ae1c8c916a0590183a685c79458e85640570b5104209d5d28957457982d23308d05250474b5f09500421d0b1f16d1b2a4b902eab0905640a52c7015f0ee022804e85a407fc0a5307415f06a41d402ea5908b40f7863e5d6b42bc4607f01dd2cf07b01398a037f650d6e21071700406defa6e92139e91310097c8c3086c3e596f7dd3d3f5cea3495400ca832931b402381f52182e22eb248632c4f8c43bc7ccb79a4d6c0e2147a91561dd5f54fe399fd5cb2305a645db4cddede0795cbdd658133efffd7c177fdaead1a446fe5ff2fce76a02366180bf05db2d1b5c74c2ea544d249b288c72a4349c93b96e71186daa4353170fa6e5d3e965002cd73988c4adbd316ef240b9a4cc953ba2849893f8972f0e18d44497898cfa244b245bb4ed4d998a171d16ef9fb3b35a0ade9def70ba7abb4352e6769ef00bc02cf32037550e6267623cc8f69933976068c17c985511d21b5ccc164e5f24c810c543120594d907761bd13d4c1185ab6d3ec1bc561f4a168d950d7c51300fcf6d5d1c9bfb4fd7972c7643991ae850c688ce00c0e4d8d58b0a87f426611d635924b5c42498db2f8fc7f2b555e146b5d04a2477ac615c8cf2cc55639d081f74e21bda841e0d0ad49142bb3aac63369a888816deb7945e1678849ad0d0033c1afd4e6d02803a8d6c9804313211c7cc62e85f2419fcbb35c612943257a1f0cb94b995a532b5154d504af9f2130b1986a8111605b6c072b30c2c1755695f98dd3032083d446cab263baeca7e1b6cd1bfe37e6c6ea70bcb1ae241751dd44503d2f64a38027059d3262c06109f30319f2176af1aef6953caa6de4a531fbfb4ca02ce40016108088b4759145b103db71157ccd6ab45a1715e4cbc7a2581d80ca8e8b10a439deb9d5703c7169766f1a91403ff48d934574c0436a0c7f10790195b44242f2108dbe051a5b96415d2122a947c531c8ab14acab8534d0917637506586c392536d9399f599f701f2e26293fe1ed265b2a0fe0f6a01de38354256112ad4cfc68408cbaf4d153405caa944276ebecd330866edb5c4044803ce17f797b720a82b3d48abdcae4178eb5e627552e59c4cd06fc5d219b8c6652ba9430c38b4aeba91e41ddef17b4583162bd64246892ecc8a6374b55ef26e9e13d6bc945445e7838782131a01aee4e93f62020374069ffeb76432b509eb19e68589909d7c2fc8053906a239fe702eff42c4ea955c90cfcb09265b8221dd87da002e0749f9000389fd5cdb1f9629581edafa8f82b507d668f4b24dbd5e7d43ed1024b64d4b5bdb0519d7861696d4ec7380b29b8d11d83500e3d8cbfa6cecffe740bc658f79b867e39a1b6c11f007cbb5cc4b59c85553b40501835e1b259a6b07dba1c7c1220853293131b71c130f0849510b9462a0fe9d281f4e3005343863f727e55521f34f03f3c294ecbcbb1fb4c413405ec24aff3819b5e4de06a04e35c342a09c42e2754c746f0b28e2c68f6b07000b0069d9300d73fc38cfb031fe33e89953af662ead75a70f04b4c43adbc4a12203e9651b1f68444d2ce4e7033823c0b0adf336e04f10f646fa88de17da9768006799018a16311348ccb7945170ab6a23ec03f2261588904a0c2672d890726dbf38eca8bb881f31ee849842dcacd8df994a19916cb9da34542f049772724142a2663356fd10b81206bcf34b3ea6c628c2fd5089fc7b76ebd9a6c7a940a274ea74fe0b1e1c6c6a198cc543e595bdef4cfeb309885ad78a07dd12f3780de48ed62c53e81c97018d04c3b84deac4c794e905743354eb72a7aba1c445955220d28f3065a83bd9020d8f65a978feaed4147c5bb9c000fe562d7733a27a1d21906b454a6b7488c8410ef7ad4ff82b839613479217575bba86b9b5fc24f63a275bc38d9237611ccdd1ac38bf789f175eb227ff9435e0d1ae5f04e691e6fc07a659be102fedcd4ce415b413e84e4ab1be3b4943913e7004ec7837526fa4e7a47528146454cbd5a859c921d3555b6231dd1b6068236d4f224c81484633f3faee38627e39d8d5a59feca4f91dd9af9a3cccd288c62b89933b35885cd859ec47bcdca5cf3b54a2ad25a788107e041d001c027e30a301cd89bfccd140cf789a16e1ec68297ec3e887cc1a3ff8818e5217010619bc35628da1b454778f83931cc7a841d524008183ef36ec37778416a68025bf09e71a38b49315a597870d23efb024942da8e01d322d16066914e1359b26e7eb2d539b4a23372bf35231bfedb2bb2f9d1f5eeb4be0a95f27cf3ee6aec39bedf0a113b03f6a0141baa4124b414eadec989fa617df6105390160b1800a2187498f9b78f575675c3af741fb929a4688c6756f9e931bb640000badb9b98353540487044dca8caad3299b288184abe0ce73a5836a01461af96bad4ece90c4f7588419ea993fa65422e4f992290133c5fad9c442c10adb24c4173aff883b8e1dfbd69987de3be9b817a06be50d7b41c0f0a48fb299009ff276bd03b0a0e99126947c8134e9a24832450a6b698eb1d5ab472245b26412429938c984694e478b0414284451312369e8251a08104f93240dc890d3912019744813482f09123493494a0702e4e92449003de424d2480609dd0492a58304617a9292400379923452947352c5f48ae95221beb6730fdf73d2b1afce39f21d03c4d32093205d248b79f9fcd12cbc8a9e827f242ae1c147dd6bb894fd941265283b67916bee338fbaf94e5076887441ce3975e743e7d8234dc894203fa4329850254704b9d4ca3ff12ea1e448a197b26eb2e8a6249fc6fa4edd71d3b92fed90953e15f268a8b0af35a96bb5e4a0438f3ef682c9cc9866f3cf47dd7da365805ab9675e0e20456042b40b54ccf3d0be4dc508cc77e088079cbff1e6cbe7bb76911601486cc29545c00ea86edbae673e5e0a2b25223a588dc2fa4e85b4c7e3c5aeea01ece231a1c824a8e336e06369e80f7a1a725919bbecf108601010594ad8122f4e2b015eaef978ea0f03cdabd9feb1f411b90f3872a4fc24267f6be8c2586a345a0ae17bc99176168186e0ffdf75efa96a26dd633ac35202ec3cf62e59c219cfad6790d6fd6eb10a4d5472b3ff2c23d1799367147773310970b14f1f0652520cc6e84d93a2c3462541263f1c7ae702af2549ebae93233f8a8360570459326328b4ca6cc6c5d1b0006fc1fd48f00981b4fa2b6610c78f6442c61a370bebba8adc5ccc60da1dfd6ad00743932668f1b1b19f66047295fa5ca6a65747d854be48f02d77b68a52686fd59563e8782d0c2f3c49147b72384539627ec176017fc1974cf855ffe1f2b6982e6d6ec6c41d5f76ed7f912c7def020efc0c185553bd6bd780b18d48eae701139ace68468f229b0999a623fa7592cc860a542257fc58fe680ddba8227b930817e31e9bd98010bf93690cf60c19ddbd71ce8806300a6bd89dc9561b6298f7ce2e98332e6b68f0c4775ef2fae4d84487d6156fca880a0c4dd2f079706be65a7a4c1dd1dd2ad31116e45ce7721964848877588f749d0482a7984c2990826138fd813be9f94d1045ab0d115b53b358109a4a049b68646514bcf81543d7dc09c8dbe6f1e155401d4468de8b2493bd9e0436a0500dabd2999fa43132f4a602920def5c715e37e43e5744cf2789c5fb97f219730e9e9b704ee5e135f88a4e61aa9ff5f995cd651ba550bbc95c163171cae1a1f0a0de2f1c285b3505ca30433e0b88d0d4b08e92c729676777108c65d36461b53821d6d6e7a48479f0b576ccbe5141916f2de3a128b31446226f8b29a8c7a550a07ecafd658d3515f1f224558a535f4f7b5ca4c1e11a258169183778782b6f1a9f4b6be5f524c620eea61cd6d9bb4a20714fcc3bac65d3ce81c3445bca3221b0afa159cded19d8cdaeba739b414c7fb011720416414969cab53d9594dedb641dacf34eac3a25bf8961a492ea95946d34de22085a5473c82329dc2b347a3a6db179db649d41e3492b49431b5eaec230ee57afba2af0d30e4e12833ee361c39eb4c13dad2340068a6eeb04354d3ea13c5ea190136d81bdf7350cc7afed05822906dbfaaf6d259a18c3c08d858427dd7c61abcc51c1a994b92b0e9340d5c6bee0c5441aa105693d3b5da35cdf12f94eafa421ce808025e1472265370910e89f1fa6aab4531a9d48555877fc30957c884b9888334523616ca5655d378687f65a4a783606ade4b1cee9296fab84069fade75dc181e6429af5060bc0dd5ef733f4ed641100a1e80882df0d26a4a17bf31922fb62d2012353443b953f125b2e0085e1b9ca11d20ee9af462087cd039d3615e751ec6f039300eee5c11a405f5da5fdcedb2ba0ae59e59d8f82739814ffededece907dc702a73beeccd70b9523d4601ea859004b9f2ac52654d116b0f9a540d582e1cca337d528de406b5d863a0fff68d42ac9c9b1b4c1c4dd41bf4c0650fe2ad8af5ec054d292a43bb00a640fc9ce291f10d5048147dfa2b962b2b665d052b85bd7de37f0c66b161dda9a6c7ce67602f6a952af457d6aaf415ff5c01ac075a05864b34a08a70bc60cd6b08328b7eed2393f2b3d4f834d0a58a537558f06b5bc30fc31431cdea4b95f7604a193e3947ef672a6547295d35739e8c0d26d25e63a3dc582b89a1aae3fbd6ed83522016c4cd52b985a623a8fc9fb357069e6045bf249103428b84d4e0e6188ef9636eb2670c3386643d942a9b14cdf3ac8d38fd58e0c8c846829c59bd828513d7f430af291932f98591f60886ce64064715e08c370e6df971a2025fcf5def002fde6a30440f934f305e5cac10b880f05709003b5eb700f1e30e4b5a4d39f0bb0a08dcdb93a8a9d87e5faacfb2d936c338d34cf7ab335cd5b8e8b1619b77f59f7eed2cea15e6527d8a0eb8eed40f27c0a32e2710fb0113f373b4fed0d328245a6f1a3988fd38c7141a4f5f2d79873bc68dc72f291b600081ec518c97024ae84fa53d302c25e903300cc3b0a8edff233cd4f6af5559eaf36f9942b50f294ded9492c8cd7a9331963218b820a594a44c49fae4013e5a6b6cb1a507000000f006780ac1099a0a6a942fe38517578a64ed9e6ccb82900f5224f3d5646746f469b618c8289272cb5dbfd0d23ca77ea81f607891255c6851a2c5f260ec50a8470a8b22a1c35f8877d95b0b91570124146979f14d5c90cdfa3a465143334040916eb16515118f596d653c5274f82803e41329d7d192edf8c6d6783d91669c06a16a1a1b3322d48984c9a88b177e4b3f3d67807022dd9983ccec728fd2d042209b487cd459bcdd1ca389b45aedf794ab396619cc51c2c5162568968984cb3abdb4e1c444ba65395489100fbfbb2f91521dfaafba5b7c0c1e4ba4a5f97d902efaebcd974aa4e75b5548652f4aef03420965e64f619f473c74a09c3b25009944dac598b328653e6a804822b59b369db6b8e1c2981e4022910efe9bf386dbf8e9cbc5162626070412c9a07556c82e1f6ddf700a401e91162edea2af8ab90dfa00c411297feff04266edad3a49f97182d788844e25b6b96575719932221de6c36ebc5122737450d4d0802c22a1447f2ed5fdd20bd5e5286145a48571f912ad4e354800494442a3940f7fd1b2dce81091f6998fb317d5e4da41513b26264e003944527716b4a8623ca67dd010c914b2547ffd6e8df84801a41049f972fafe9fd522934f88a4f093f5952a3b64800c22197795e6870e1f3a70c0255c68f143870f1d2d383931317913131098989ca8810822f1c15d90f16513450391fc1cb59ff3452dbef36480b0da53fec59743286ac7ce0b2f0c3213c4e064006380fc2119af5c675cb4286a9b6782189c88a001e28764cdeb10da3688d9798f00e94362c6efb3ecaff9459b51d4d25aa0e30b0ff8d0f1853aa710207c4807ef16f7540b1dba35286a285b90b29cece8f71e7fd245a7ec588804903da4be64b53c9a6c459d8aa2766180e821995ace1f3352e71aedc2db3ca4a5b53d17a47c97be1d4a09175af80e1d6080e0212deae6552e850e3723bf435a3b5d6db5d62d6bf96387a4ceeac63bc7fdaefe85005287c576f9e47fcc45a6e3c44c5f004287c4adb2d12fe67929bb41510b639ddcf16081898983cc212dbe223fe7dd98736edf48cbe51bb2ad5bc7efcec821f9b142eefde3adb4dfbef14c108393002801c48d94c7efac1bfd6eb1548304481bab5733d2d7de5cda0e20714897b6a834cbed252f3c0c0287f4e69197e53c226e22a2a81d9037244d53c9d7dfeba4c7c98ff781c60071432fa7de6dd9f05a45286a277b6d80b0918c75b917b472f72063440069433aec73e99c89165ec87bb02129a7eaa2d0f1cf3eefc96ba10355821c80ac21619f7ebde44ee5a5d8ac91bc975d4ba295669933684700b00051437a4543a49cf3ce1b9f943c011701448dd4e9c62c5d5e54d30d86b31540d2487a96ecf56d14d11942286a3f5276f838312be1428b346948c6185edab28eb9df5c09175a281034522ea7f6728de1a2b44451bb2180a021a13ebaee7ca53a711e8acfc4c4c4e4e4fb9b470a0f1313931c612c2c30c9616282e24389c0c4a4840b2d4ab8d8c2089004903352fbb1e5426a71a15b85a2d68347cae1628b1280e0053c4ec062809c21712f5c77521d6bbbe5cd90bed3ac5e8890f1c3c5cb901622e3e30b7e9321fd1d2b333b0825feab31243c26175ab4a8f3f36331a45d3ecb51db7ddf6b350c29f9e8bd318a787ad34e7ca006a3c78f15acc00560a47ce1454a0e139305014352436974414c5465755f309314102ff000e982f262f76c58d9d246a1a87d0f307ca4ec68139313776562a27a706162a28c09102e98492940b660265a00d102428568191faf7dd56cc6a252170fbb1aa62e8a5a892b18255ee840f161828392a560947cf34831e79bc7097884207f8094c17750aa1a93a88c0ca3c4b743777c6937c506c38bfd014609788400ad8f2f5254009285c447299e6541542058488759d19c31b8cd7f14c815921a478bd8555fa252ca0afacabc53117f1440aa90d0c15cd05a8c6a2a2456daa6cf3a3d85b4a02d6a888f182d48fd092052486739ea3b7574205148a797a14ab40ca175e65094053c4e70e63cc038e19182e6850eb6010814121efa4c64abfc28a34d238090911ca5fa95bfe84248b9a2a8250f409e90dcf87659289751d356d341ea0188139242a8df187496660baa26803421d9ba52cbe1644db5f94c482bf5173dca185e42328e56fddff672676b959072d9e6eeea2509e95d1f7331e8cc181b8d91d48dcf9afbba43340809692d3ba316e4758e9034d3f220ca5fec97472324458bf17a73be4548acfa967396348c66692742caed53766f6b19425af49c79df7757e9bb8490726dd7ad646b35beb018699d85f196356dbacca120a45b508d77bdf66216754080907a7dd9e6df33aaf98d453a745821d466510777f1c76bc1041cb048ffeb4d9e938b4a4667dd20ed503a7ef450283031f9c28be65724b54c9a5b5d6528fa031caed8cf440b8d1a9b2e5e5aa154f1f9c3f5466fa1b382ef6d6983f6963243bc8aee3c47e1b155859a33ead6930a65d8767b49848acb56c6d4fb1489cdf28fd4abde438b9d096270c2031ca648fadea66616b3a39d57818949f7d885a31469b9c51634d74ae1f19222ed2d4a2d72d479ce823e8ac4bccff78be14a7e3e14b51dea7478a1638b1f3abcd0b14314e918df195d4afda8b9c2118ab46c4fe56efec95dbb8022ad72477bbba02ff53e7ae8584ebe48f9823f91da1f4fea32c9becdee89947d0e395fd7582d5a9d48a777792a4ccb65a1322712a34db58819297af34da4755697c67d3b7d888f26127ade470a53a185ed99487dd2158f42cad67d6102a959a57852695f2229c78356f3d276b69525d21f65ce65a14521e466552219a4b6ae6697754c174aa4fe4db42ca78e96ed49a4c3ea98257a67d52b9524d2c2dcf585973ae7dc48a4c3ea5fcf9c5c97970b8964d8669d22da36c69c3e22f5b2ced2b5a8d5bfbc744472478b5a8e6e2f36fdd8886494ad2b3f57878311a9fb2cf6673d69896b8b48b7b832cb32de7d0829a48894bd8bafb3f5b7021c8948ea164bb4a89411af373a48f9808989bf0e5216521c88f025155accab34a3be2e004dc07188b4eafdcef251a554f1dd9581c310c9a0a551cefb6d45b90a9176317e7b3b36ca79152152b6e144eb1c1efe3189631069595829beeea2280d221c8248aec8decbf518ffeea539068e4024f375d22c08572d37e61cd6000720d2f14e5c58557f1df2fc43cad45b703988da7679bc030e3f2494bedef8ddd25e70611f92dad328f7bc31875c2dd507f40538f8905adddc9997359cc7790f89b1fde03299073daad743d2b345679e19215e0ce5212dcbe965abfe723ca8f090fae8325b10d2c516bf544de0b843427a8bccbea8fb4064091c76e8468fdee7d5941238ea9072b96e84db78189dbcd3081c7448de6791c17b57e6ae991338e690d6711b99479e668fe82402c71bc957def207b5d1b378251e02871c929d5465f76799b175c7c51625e7dcb8450a591ebd562780c0d1c6f24bf7e339fc7f16450d790c38e2909622f352bd559eab7e283fd9b14335c3219d544b2eaada985b3b4451eb71f2788fe30d49b9a15185bec7176c47e170435af6cb79a2d3ee6af5edd000071bc973293de3cba0d445c7870e25018e36a4b3de66ed41457dbd43bd8f131f3af0d890105a76d933637c588d5a43da336ecea8365c2329b6f1bf56d55ed8c9061c6a48c88bd7a2f8bc31a6abd4480a5bf3b8f2f71dfefd1f292d48038e3492e9be7336cf1445ed478ff7f1c3d8a11738d29052e1ba59075922346956004678ab0bdbd5f02352ab6551b8b4f3828cf10e71443a677c6fcd411dd288748bce72d8d71306218c48ba0e9b44a8f5a85a8e9d226411c99cb5ffeb1cb394bac54314617cd4b42ddf2ea6fb896033791219ef6f2d22583dcfdab99e396700c4083944f23cf36cae17e56ceb0d91d697b1fbb6fdf7691622dda175bce8595c6d191222e1ba519bab6eeb749defd001c62ac951e23c7490a02447498e9244840c222dea1e9d754fdf3bf6ac42882092b1c3796bd7ae9d6de50c4202918e2db58a060fdaa3a9158400227122db345b659664b37687903f24b5286dee3446b92b3c3623c40fa9efcc9f75fd25a40fe9cf4ae4c5b486f021e93a354a7b9bd9a0b4db43b2f4e35c78997b6e951e522e9c76fcd677fdd043f290109573a11bd57bbb0cc1433a46d7c78f94be1884dc21f91ab4ead0b2b2f1dca11484d8212934e6f0a09973fab2217548c80a19b49073d308a143fa659f17b3542f5f1fa721640e0935bb2b5adb67ee94cf087923b929e58a962df5cacddd1742e4b014c621c48da47b14ffa1b5b41742da48674c2d8b5a5f6b47fdc721e9e9e5d8c7f0624aede1903cd7a34985e7f8b7f41b92b27fc40ba36e3724634d4353bd652dbb9a8dc447df2063b9bcaeb46e43dac56aeb4751f7942b3624631abdae1bfabc6bb586b4a8c95bbfe86250a9c56ba43d778cd9396a593c6535a4e3f3be9c5f7039a70eab915279318bdb4b0d8fe134d2528f1664fde98ccf9b86747a59e65ecf78bceca29194ed0ed5c2b75bb3a0212dbccc23223f239953ab54f1119b737f86a48aaefe99df96b13243326be80faa34f74759962121779e69cd476448d9cb82fe88f28c21a921bab388694e222486c49f67797bd7f35c8761486cb77cfee36216851e0c49113af67e3b7f3fbe2f2456438a77f5981792d9f7324368417578511442ba907259ff6764b76799722ea4050d1b7572a9755468b79016c256c9e8a754d732ef430be9d41e5fce2e77d7bd98910e5a901d5566d4aebf94913a6d8daf455f971a5cb290d4f694fdeb3e1612be42755611ba9f657d85e5df9c43668a8e2d1e2ba4e5c5c74dbb73c9335d85c4bbf02fab8e344dd9a242e244c6ecacf929a483790b2dc80b9947ada490cc399bab9eb9efcc370ae9d56d5169e771f9398542326d6e1dd4781aad17198dff0791f1cf63632f0879424a56356c6651bb2c6b8e13d22ecea78c784d480b3a0795e23ce7efa863427247acb6fed99690eeb4531973a4e9be0c185f2821294745b686889562fe24a46563ccf1a39dafeef818c9d0e3d2436b24a45ed80f9a3bea7359a78f904c9f5fb91c3b55cbb78c907e35c2753ddcbe567111d282d67aeea28817af444448061dc5ee7daed99eed092143489707ef4e2fdfa37ade0a2142484ab335fb9032cad5b284889172199f3c3537eb77594282907a51eba065e221356b090142ea75f2f09faf392ad5128b647b4b22c5088bb498b3d8599ac988cdbe22f97ac5bf452bcd39e98ab4d439648cfa5a7a396a456a65d4e2a8cf743e232bd2b2ace94ab6b5b4cd5691f8d42dba6e447dce2caa48c77821c757b73eb7a422d9ae57bfea8efb428d8ab42c2fb5e8b7e52b5ea7489fa7cb2ee6241ac5c714e928b2458d2dffc6acf95224ceee658532fbac7152a4c5d0a331d82bd5623b8a84ce285b78ae3a59a528121b3c94b80c7928d241efc680222d5ff687bdfd4da2e39f48cbf911e242bf5e9db92792a3c9837699f58f70752229a3ce32b890b96d439c48b8cb9f34cd75f9767a13696da9c5bc07d396055b13c9f2a03e2e4a6d269239fa43aeebcf28b1319194eb5914572e0beb5e5f22fdaaeba2f8dc61b5bc25d23a42cbc207a13b4a7f5522317bb62ecb332512aee7828dca0b22d549a45be928cf59bbec612e49a45ccce596e5167f2d5724d2f349b5c7d19ce53d2410dab51625de3f22d937271fddc518c4ed88a4691c712eea1a910c4fefa05d942f62364624cd958bea2053d4ba8894aad6f6be4abb051591ceae659675854b22d29ff63a3d771422127effc26879a7eb993a4442ffdb73cbdd6aad674324d3be67155274798be142a4cf547d4a99c7c5334c887450b95a7e91b9622fcb6210c915d73af7ee46652f82487a4ba2713cf8ee880391588de6f2e586994d0191d6f24b2652b5ece89c3fa4c3cbfabae2a596e2f1433a7c674e97af47dfd687d4ea96abc13fe8d8f221b542e5c597eca517cdee21213b8fb0b3d5e299593d245cccacaa19d73c24bd74649657e6d4625af190d6dad3a05feb0ec91de141bf86d08c971d12ab46bff8f4f2cb25d72129de653cabcca2e6920e49d52c56e76c5f67a339a405cd2fcb19a4d4bc9dbe9116838f6721df3fc64ce590b2176694f6a8d02e8b1b89153a7a98cae4abe36d24ebe34be9f21dbe85330ebb98b1f244947048c797a14575b9f5e0bf2175e7c2c5e8ee8674fc8e7ad54748f52a36d2526a19ffdd57ddcc6d48e8acfe07195d0e32466c48ab8f7c88d6af66235a43faa3ce32a651e99fe5d01a666246166a484a179efbb318324a0d5223a9bba5119d85173afe69a436deacf893cd577f1a12eefac5aa908d973e1a099d7743bef03a684866797365db663071cf19692dca579ab1dbbd37e70c29f5db96f3c65feccd31435a94a3f1dbad32245b54cfe275958ab1c9903a97f72ea3cb4df118d2e632867ecf897a570c09776db151b35e2dc390326f8f39acf22c6a0e18d2a9e5b82d1f545dfc0b494f11a6aea516ee3c2fa4eefb45aa6cfdd936d885b41673eb4ffa725c48b84be9b210ee16129ea679b3e77f5c580b692d750cbf2ab4f3cb8cf49a0b32a5cc9fe9b36524737a693554baf42b948594cacd3b79f1c35df0b09010a1d1cc758e9a3d5748866ba976f49705f1ad9096b52c73cc59680eddaa4216544897e874f3d2a73c53d91452277a766bb52685f4cb7841a76f54b6ae4521751f5634dd4699da8642ca3f95b720b3c848fbfec7553bbab5d613121ac5e87c97cf5a583921e1be4a3c46b5acd36d423a6ecaef152ff3fac6a0a8a59d200b26246b65cce9ea6b43b6822c969090ca45c7baaed1ab5a9490ce1d7547f3eaf4f56d1959242121d66b45462d1a1e1e231d6510fa75cbd2bd760d21b24042725b9dbed00df3d52f47488eaa6a14db2e286a6ccc09591821f99ddf4748299f40645184b4f8dabbfafd83fecdf00e59102121b5a023cde52cfd0f1b590c21b59d56a8d5a41d1e336b642184f4bae8345af296b9831631d2dbe16531cfff25394ab8d8a224d3c82208a9f5b4b13bcae8cdee3a68640184e46a107bcfd742fbe6c422bd6eaa6debb598c77458a4a5f708d57a41b5a7d80c20af48ab4ddf99d37c0bae05a1286a1720ae48b7966fb531a5fafc82d60a3c466dbaf249e33280b022fdca656f7597c5d6acb58a849c5f9795c81676b38b8e014415c9f832faedabf2c400928aceb3cbe6f71d5cda0d1054a4a57631cb3afe7b059053245e3213dd23647adfa80331455a87a6baac7767390acd2c048be46b413439be0bf56305f78a64d6c96719532b9197ca410a0f1298882b921e5b8babd979652a2de1628b921c83482bd26163ad2a8d2ee798252b9239a59452f3897f8c556415e9cdeebab25bf6f57c01060ff53bfa24c55591163ebb99cb5d2b140681482ad2ae37fcb6bc679e1d4651431d104145723d6fcfbc25977c751435df918272768ab49631a4f0e0f69be5d70732b3858829122e6bfd186d57a41469ad5ddac82c99cbcfc9c98ff7b12540f3a12f10214532788df09e0f21a3d4328ab48b6e6ea1ea46ab6c1145ca7c85970bb1cf82f243916c7d9fb9f5f27d66172892328b5174b71cf1ee599f48cc6be82c1ec56577519e484a297d5c5feb9fdaaa1309f53a0b661ba538919697e5fe7833ca5fc89b48d7e7ccb16bf548591349399f9f42cd4c24a56aa9f5c1c444429dc88ed11b3a64fc12e9b3b7fb52a1a5163cc812c9f0b6ff31ffd1625425521eede7366f8fa9f29c309e043b54a76ca1c62210a1446a835cf9726b51456a964924c46b911973df9384482492c1c3c6d028bcb3dccdad210289e517725306a9de7b4432c5ae68112e8bb7af758e488659b11ef25fc6d9f0e941a41149f90d154df56a2ea68c48f9afce41d4899613fd224e4411e9bcd5e262b46c22d21f83268f7117df354775104144528a8dd275a697feb5e7106959d414b5a1a2a3befed041c410e970ae32fa26aac5c714229d25d7e5316cd4a89f9a830821d29e5fcb63bda3d8a4fc48e1c2c4248cefc2729498dff105185c94a0608b92c382c820d25ad4daf3eee76539eb4c1069f54e3a4a5e9ee2600422196433c5b3452134880022196fbeaf9dc552dd69fd43624ec3f7afccf3a909810a4afc90f4ed159d54fb9acba2c307521d88f421ede28b2fc96c9617b3d8260f113ea4c3bd5c32f2b436a58fa2f63bd0e1e39cb481c81e9249b5fbc897ea3a7fb9f4c0c1ee0844f490f2fcada5b9340b65721e12a72fd305995a0c360744f09078d5b9fc5348153a3c286ae736207287e36fd0d8313ceb43c79e0b81881dd29ef5df2b0dd74a930bd72119c4deebf841472d46e9908e771f63d8cfa2d0c2cb1c52bb1f5c167f1eb578292543e48d64bf3e77b5af39e3d27248be8b6cedd4982488b891cc72f6dc193f6df6e7b491163ef72bc7656d1a4361fcd03186481c927ea3bf85cd74aa837608227048dee6dca3cb5b4bdf3724649e8b5a1619bb5f1445dc908ca5fadffc176123f572a3bfcbe2a5ca961469c31e3eaac79cee2f1b129fb7473d8bbb9ab3e8c841640d698db97ef63c668d84eaaeded7ee6a5dacd490164766b19945ba68ecdc1051039d2597a262b3305b4542248df408d91af647ea3055a621b56b367f1bb3d0a2c7f120824652a49e552b1eb2cd443888a021299f3ecbee416d541f74465abda7d62c76ef856f47103943d2d3ad6a113a6786a4d87ae572ea965ff85886d467cb1e64b5a79559680f226448ebd432a67a353644c6905c9dfd5145b96ad0320058838818d2898421e1598cc15e5c880e0d113024cb8568d9ec47c86a5d1c44be90bc57fd62e87716e4345682881712423e4bd6c7c576c8cc20d28584bfd4b8a9428be6c69441840bc99c736b97aad5fad7bc05912d24748e21342a93afcd2f14353d2910d142d23f3ce72ad11faf4366245baecdb9a63736322d232d87b0f14dfdc1a5ceb290cc5a16326327a3a89989602159e39b19df836b86c815d2ea5cd8bfe7f451bd5586881552e3eaa5d1c1cd6eeea50ac9a02eefdb31c77511522169baee5ade4f2fdbdf5348bdb4b5dffeaf7db5500ae9b8ba5fccfef1f5b347212dcb4c656ecdbaaa130a691d9b63d68d5f716b93612662883c21591b5ae6db368a699613d222858e99c4a3549773912624469daba74b327ab7a50513126ad3d68febdc741ab584c4bb66b95dbe2c8a10e2154494905e97aaeab3aaf30e2f66824812d22e260fa93e4a3d078d0a226324f586b99822eaf63f8b84842b93f99cf7368b4169511039425aeb8cfcbe0b51152d23a4a50a37d55afd75fe641152ead27c1421ae45a54e849466d1c9b6051d63a0203284d48a16a59662447dee4b08295b2db810a76a9a2eb461888891f810fb7947cb9f63a84582903e7559abd91d55ed530408c9efe8724e9a93b14869920f632a1f58a475cc4a5e0ea6bd2279daffc2df6b78ad33ae48cb59d1627364961b632b124a5dd420b2d55f102eac38e77f398dd975142fae5ca8ac222dbe4591bb6f2eec8554919a1565eeb72fc8b0316769545291daac9d05336fb18f66179d62506166912b7412574f73e514bd6ce5ef51c6dcd5b8d8a2628ab46c2dc87bd1c4b3f8e801a3528aa48b514be139d2eef324455a10ea2e8895398cee681449a9faed2bd3ed03b1a1228af46a318daef918e76a659550a4366c9dbabab0028ac4e628bd338b8c545e1f35543e916e8ddd598cd0e9e5ed21504109f24462ff4dc599ee8bf13a28ba844a27d22fbef4e9c24b2d76a3d0142a9c48bd2c6851646b374cf54da4c5f032efa956cbc2a53591cea954ea4e27ba5367652219b4c74f3f1f5339624ca4e591e392e68b2e42482f911ee95a7859cfc812c9169468d4307b2d2656223da6e1c55bcc0b773928ba3d7e7c51a10472eee9dd6922b6d4b4ad4c222993082d7cf4ec680c2b9248aa7db1cd959cadab178984509a37651217e6231ba30289b4d270fe4935ae667d7944d27568ef8c5a1645b4ac23121f3ed48aba2b8d48be70d57278519ebf18551891943a087151e1fa5eb422541691808a220e5049c409022a885840e5102115431442a442881f29293d0a501984042a82b04025100ca8002201953f54fc30814a1f2e50e103042a7b3840450f18a8e4218cef8202153c34a072070d54ec00814a1d4e2250a1c31cfe9793941f16a8bc41818a1c4e1c5071e3640195361a5089c3c9c9032a708040e50d3eb8e206930a1b3b76a86e8363a0c2060a54d6b046052a6a8840450d141f0a85a492461a125041430115349c71063364a05206322ca032060454c450a984e1bb011530b80e91ca17de539a01152f9454ba20810a172050d9c2032a5a30a3029532b24052c1828f0854ae70c2808a154e747ce1814a157e073a0c50a182022a537840450aa612851e09a840e144c7171e4040850c0a549e70f2808a134e305069820f2638a0b284045494a0804a127c20a03286022a4800a91c41a462842c2a4518408508891bd358f7b15a9f63d406952124f5666a1dc65c1635b74248cfafdaa8c512d7f91f978a18894d679ea516efce464b10d223f337078f69f4c7a6028494cbcccae7e53c67f1fd90585c082cd2316be95ebc7159da170f798599b8e2975f274f97447a327df00869059b316669082bd25acbbbf07ead2229944b2e6f3695416388a2a632085145420b51a2b7476b396b16450f4ac585a0e24a11728a7497eb2cb8520defeea71622c414a9551752346b7099d4637f0829455a7c9d394b995722aec31052247cc5b5f41e55e466ce42469196435c1667b3d0b1d94511128ab4a073eb5be19b1df40c0a6374767ecef91369d965ceb1fed6c594ae2752b3f245194dd7682fda89b420fbe393489d3f7e4e2473eb6e74c45bb00d6d2219f555bf28e455ef05359190e76a577cd6e207d1652265a3e23cc82c4b759c3191b091cf66bb7a2e89e71249f1c1444f5b548bce845822ad396eb806351d422a917657fbf4249e00ed104289c4e7f34d62faa3a859179db2e3033c4eb06f844c221dfbdd5d6a39b99c972591d0b39bfcdcc5d50889445add37fdc65cb7995c48a4b4b3bf022485301342245765cc65b13a3efa1e44fa5ba5f2d430a71bad41ca8e1444329a0bdb2ecb35fba51ae3411288b4eb92555bab45c9414a0e4ee008124024e37ac88e1683bb3dfe878e43f28764faaabbac3a1e54a429fd8a247e4867cd2a64afba551d4644d287a4b696428e76ce963b6c8c0fe9ac3d5f4e63bb08757a91d26331fb1e5cfc8e2e7a7c09d8ccd80431384101c91e1262c508d78fcd70feb51ed2823ccd326c3ecb1f491e123247be25d1258a1ade16247848c7afce71cd0e42455ee8b8435af4dd6bcf879adb2db1840b2d8e406287a48cc94574f3e58ea40ee93befa095c6b72c4b5582840ec9f4dcba93c6e8ab512799433226fd0c2ec7f2c4c7a7388b80e48df4cbb6a3536e6e21851f209143b23dbd6fde2c64969be546c25e0e9ec9b3a0a56b416d245e1655fb937eceb01914b514b48b4352b678af45dd5dead1c221217dce67f486b4dc32932a15ff237bba212144b90c7ac56c3a972161232d27cd41ea602e437bd6172128c9510282921c252a28c95112021313139313db4290b421f1a9d5cab5add1b22119ead96633682d8a96f3e2950c246b486a49858fb0ff7eadd33512b731a336abe4c36a49d490cc2d5d746d29333a7f0d3e0082e5394a56d0e3bd78942f92090f1d28adbc4008061235d2b15b1e97b36bbd7ae734925974b1b2d6c3b565fddc409286552811632e745dcd6824ee35cbffbb9d26ae732468486fea9ac617ef34b3b8069233d2a9a511ba23b5aebb5f0d9233a4be6cfbe368e9639673ce02891952ef2dcb67b6f118535386b4b89df7c33eabca5e9121a1c3552b113d3b32745820194342089d44a972bd1848c2900c3167671f2ef6415b302437b38b6dad32745e0e45ed0be90ddaa32fd8f6ce86bc907049937b3efbb309245d486d9432b44e1f122e24535f3c849cd504245b4806d182f86a2f5b578a8361665a48dea88d2fff6ada55223392db9d5b9a515c3d753448ca48ab8f41dc7d725f216576064916cc5acb2fe2b2d7ab08245840d75fe708e5397684a2b62706c915ccc4905821a1476abbf0b925a94252a697e6fe63bbde62659050c1682fad8f7c3d325473f7039229a4df5cd4b6a6d75e9722914272a4ec67549f4517f32189022367223ac8cc1d1e4a3e122824346a49d366217f9f5765202123294cb3d4bcf159d8f5489e90161df38bd3ec5781c409e99622a50bd7b16dc34b13d2fad2877f0fdd97596fa440c284f4b85eddd6423bcfef46b284f46a2942b6f4ae2d2e2927283e148aa2f85022384aa284b48e16de634e99df3a7f826f902421ad51b9987adc6b83648cb447d7d9ca374651333948909090a94f34f46675cd3e425ae8cae6fd9eae3d488c907831a416e5fe6350798bc0749014213962b7b24506f1d0e2df432de3620b3e4d21214252a9f2f8d27dbdccfaff918283d305922124930b5a0c5d7bfaed910821393ab70baf59ee68bf48c448d78f87df6a412441487b3c0f3342bbacb5d49000219d854825f35a64ed06a130128be4ecc630a233ff92ea4660915ecd1f43cb5c1ebfe3465e910cfa6350db32d72fb4d431e28af4fef8edc6a4a341bcb422b531cb527f894e8fe9196145cab74cc6573e668cfac82ad27a4474bc67f9d2a75591d07dfb9af15424f45d3cbf1563fe590b1569e9e56aa966748af4a8bee4328b38628a84a77bb14165cba399222e058e90024746915c212e2abab5c8917951a435cbab636f94776df74828d2528bf9857069a6a13b2892e667aad137b327577f22e1ee31a2a3dad7eecb13a9edce5a30ff17a31dd589b43c37a37bb4c789f4479dd933caccc82612ae645d14af853491942efb1e57bbdacb9989a47aadbc6b5fd4a21a1349fd24deff42641c211ab9445a790bf1bdb26e4fd426263efe975ff0462c91ae97758e9fe5e569ba3ef88b914aa4fb47a5866996a38cdde9628412e9d6b20edf539799ce85c706239348eb2ce6be8ca98f482229c6b30bdd50b3e943d92391489d87111b33d774321fbec40824cce410238f48bfe899cd963b1435f4c6882392a16cd4cb702f9b7143510be3e048231232ead4e45dafee82341861445a96cfa3595e45ceebbf06e7ce05238b48bbce4c1b6c4b47a617452436c7b96c413bb3146e22d2f2acaa5d71f1f3e7d3870e54094a7284f12428c971e2ff8a114424d48aa99663e651d7f521929daafa757cf91bfb35445aea1893ead79fcb2a5488a46c8edcaa4c571f1f42a46f777f5c7ccc57fa0f22293b66d136675d1049bd725d47cb31cbb2680722e9f1b3d0821439ab7d050855b77b37e4c559e1f9433aa91add1957a9148ffd9074a1b3e0bda93bfeee437a63788fd1ae2db30ee243f2f586f37a5d1b5ebd87f486d539de71d4837a55bca697913ca4e30b0dcfba526791d9081e92ab61658ee1c5f91865b418b943e2db738c3979c8ab9aed90f4a8577b5c8b237548c71c1d6b45d80bdd3e1dd2928b525d8bd49d6517cd21f92dacb91cb59b57eba4e08de4d946a1450f1efb6a3e541891434a5fdacb213de7c6a2df888670bd593246da4868b97308d958d7e0a2e2909625bd0da65a9a0deab27048cb2e7e8730d741e96b6d2446de90d813f5d2e5167a43c7dc90d4517c86461d2d8cb091364d9ff3abebcd18694352738c31c5cbeaca34e53346d890cef138f97b597b14e11a529bb1be77936c67cb6b244b436a29d65d7a17bb338ca821295d561b5b99ef39a7d448e670a3f9ff99d244dd3492792fe96a2d9c86b4e0c9dcc54fbfadcdaa1134923274541b47bf0c8dfd0b46d090b24f2edd8dfafadc148adafb48593046ce48ea7c9a34a6cf51d4525c7f8c9c21b9b2a3be19f12ac5ce43a133c2881992990521a48a797ddb5e1992c23ebee87d92e21c841132a4c50e524b9717f6fb4ef11d19436257efb78be9a1236248e615a27c5e0a1de18621a973438adfdad118f905591e53e869be90147a2a2eba982deb9823c38817527e9e3108176be3830c8a5a177eb129fbe5b8cd9fd71d4b750f305256b0855a62840b49b97a5bf0fdd0b29142513b5e18d9825e1fb54a7df3a8b3e8f0a15a48e68ba1e97589de1c5e50d4c2503b7c474afbc8448c98911e29abe576db1c75e80b23652474f3680831c1309285f48d6aa74b21365b6f50d470040be8e8f49e426ad7e9222505e5e477b88e131e2977821c3b7678a0244749498e921f3af81f3c527294e428c95182036368e40a896db9d14b2ba445f34d3f8f2375d06415d241e7ace9728e286a27272727299ec882112aa433ebac7ed1652d2727383285b43af528dcdba552edf071e2439df8e8a2872ac18814d24267fa37f5d55c1a8942cac55f94415c1295776261040a09752943bf8ee7efe84286182123dd2fed3cf284c427d5f1b5b8ed1e469c9054da9ecbb370eba268f830d284b4fefcae639488aac698904c261b5379d0b23ee43c8c2c21d95daa3587112524a3b49721f28591cf2037469290ce919d4564b8af0c3a3b14cb61648ca4f2e452681dbb4542ca5bd6bfb24b6f63e408493176ba6265a88967f9078111129ea35b2e66661fdd81c34811525f9f724ff44e8464fe1675963fefe3481d3646869010bbb9b4956f6ca1109251cae099838e18091dd346edf52db886668d9120a4452d8c3417e5b5982f6f1a234048b6dcb2f23ca61ad5bdb14868bf2c76078e6ba83492c55239240e464114064108c303eb02f31208303028240b06c3e18050d76479148003442e2c543a2e262a2a1e1c0c4582c138180a8502e13028140c04622088a14890e772caecc42fbac82b8c195addba1a6c3f5f4c750cb5acab3d141a35e6f63a0b7b2269c8d10d3a77340700f246f03432d687a0bde570946a45e9b735e7c68738a0cd1ef96e4e68e91236884402909a21e825cc3dca65accb1c6a2109554e70b47eb5615b9696b982b7b4671712daa8555e702e965c9b02515ea62450d367b06e9d689a2f035d3cf9174846a6a28962c1543c1fbabe55f5f999c8c8cd8b1df88fb267bf200bead8e59fc229a84c4dad0af53a858ce708a2c1854bccfc95da9acbcf9fe93c075bb4c1590af51fc0a480b25b1515d3ec093b53230b50609b4b9508d2e5f4a0ab945208447892a4a1e72a72c3adde44162e3b331b94accc447ab23ac9a93ed158fe1cea4057c057178efbd04dba72a4c9fda37297d9b7c6a9105875625dbf4146dd3775b9625a110ac68a2d4878b5d93d24fec880529c384123c0d24a7340a84775375873f69937d7d3f8b92a92ed3411b5985f66560d91280e5448a2ccfe04ddabdde0cf98e20f6962d7851fb42135402c26bd823f68f3b28ffb1e91fbf4a592f2357829a08059d909f64b59164eab411368d799b10bcf90d3707649897f8a57b3f7b45c0b747e1719958544a051c6760de1e2fd8b787028414f42760fed7fd60420067d71c2086792e2eca3b23a5931b50cd32d088e09b1a1ebaa0101b9a0a7f2117ec6ecb078cd389c0e258e9761b0eb350dac98e3556e4630db18a32f5cd7d32d195c9f6b9519938c416b00aab0e96a7950f1ec6136ab0085e15df5bd54c465eb8a32bc835b297fde46cf9f53d417467192cddb1a03aca13d505a653acb415a835ea0c72a499c9db6ac8f642ca658f2a7e271cc6d522c22c2fa2bad394dce41278119f45560d68197755aa4cc554f9bda81c37b50d8f824fbcb83ebdd2b9a7c6bde3429442bc8b2b161d6ca6729f21960e2aae2870711bff015c5a29920eab0a5641a72358e0f5e62144e3fd831d2e8e7d88e4ca1bcd96185b2e5a2438c8335dd0dc24f4620b010667ea198c462ada324325c9556480082cc15095adcaa550d90e0e617ee935292d040363f2c9d37825a1ef70a1e9e16525ff5facbbd339ea93802fdc529cf27ace1a2cfabdb156083c403dd4edef8c6a54e9a05ad4b27944e1ed68078511a3acd175d2b15e1e9dbbdf814d80d80f40a11c81e1378f932721005f44a99274c85c61eadd69a93edfea7c404deeb49f22f0e588b82901d094af1d1ae3be309a30e12c30ffff7c42d3380901e0d1c1e64a9622edeea794b7b6a2ad11c95c584879869866636938958c55ba5b7166e6ba1554229873910f7aa29fb9bed8e2812a3ba6ffcd0f828a5c5e9d60ee7bacd0a5eb7f8658c4e9fd63bc18445d9f38ecb563e254ee830840b53a01b025ca1d92811546511387b560de6fa5be1adf7e3d27c2cc7f7c9385bf01cb76cc1cdfbecc1107d6d590f77029a8a00bd78aca69f077b6786647b7c100aa5f55e4029aae4434d261420d287e7bad1de24fa5f6e295fd485deb42519a6d3a150ed23e6096ce2f85da15c6b75e8e2162a97725bfde2df0c5e26f3dce7ff28a1420ecd009cbbb88cea93f365ad3ed10192e19d0da2e2628f2e205772cb21cccb1ee7cc769b4d6687c51756540ff55fa08b4ef9b02cc5b1e6b107e37e22e6d4a680b799edfee2a4592872cea874c916e73a8c2a5c31d43c73ff8f18def12fc72fc2f8f41d788f96458bcb903db9f7479601fad584bdef448d009a11ede8a61d3b0b15772e5d33686e80acab79247839a150c3c4c3d64823a4cf960027a22baec10714a6095d919a3e9a4e806b3ca16e50176422eb57678370aa2f680331c283a612aaa21482959dbda6b40eb2298217c9d2dcbcb5ace58ac29f545315c9b426418a1211216f305b139e69dcd94af505065253e68ace3ad0fa84e29e1515d31916e8856a88765da4b2670bf2371059a1c5933752851f768160cfc6bf7e465c8e4d35feaa4d2d9d4f8b1aabd80831ae75630d2cf5a98d55475c85c845ad42464833008f0fb93aeaea68ceb14a6dc766607497236bcd609fce028d50f106da6c8cbfbb5dcf363fbefea4682db47ee9e6e55217360b12256622c0ddc2100a56d0784957f369530202ca9c4c5dc0cbac2a016c5be9e316e9fd016cccb430dfc4a2f6b99a648963e17a55be0850227041e808e9293bb5c9523beadea26ae89ce461d2f0727cfe14c8d14ad32bde19116e96d58264db0d1a8e51b6f60665ad3483bd9452e892b77494a754cee1ce392c3841ac3fbaf4ed4bfa62d9771f89e78acd14c063af1d22ad87a7c2f1546d7468b61a156caed041263b5f0a18dd32ccdfd15a3f319f7de896417e8bb99baef99bfc0a5ca6b11d919f2e9410d309d6e589c5a0c53e6b3904f00741c94040aea162bf72d804a6d3d76fcae485667cf8bee5d0e91e23f4ed52a51522cb5248b17dcb048821702ce9a2e61a7aa5645115cb9d6a7225f1505166958267052513c6dc6a7cbcb2ad98d214c7574ad0c8bb89e2e4b90842b8e1c73949d62c4a7caa557e65df33c53f2c7625e658bee5fc1abf8b0b7ab5ae6000f9560ab2e8f3daa34649ea0b898b3c1611aed83d83ee2017ae607e8eb849ff5b4b1796cb9e97c4c95c0585227a382ed0e1b81c029ebd7033e45bf17b58053226de33e6ae429c93d038ff5142d62266f719ca224bab838aa5bf175d716a241023c3d13a6df6a215a23a63d5ad711de20a6da09a21a907945edc72b3040229ce99e046d24c038896d3e0c9e1fc809db0f8c2874476a94a0ca6d1305362ac62fb21f767bf39772cca642a75d6f7a3fc1a5bee90087e891e114610308e29a0460e748abb8a8296dc3a935a1a377dcd8913ab0a1e7af8aacdac7484790c12d2ddad64fec0c03042bd6074b73cce3289d7f6bfa9446f87dc1606c20042fbeb574814969eddf277908bc9379f7604ef861406eca144cae16b60062d33fd7ed86b4dae184d0ec11dff81e348e5a523230fcc598642edae1a74f2da3b6867b76161edd4398a7c27430469fcbacea15d6d6a8d7061bac88955c9ce30961176790765ce2a0883c82ce522f4b9219c433f4b00e6d9b17304716f8c58e236b04f662ae84d2102b3ec4c56fe2d2f8f33957883aaa1408738a31fa03b6ed3c642b76424693fccb4f1fcacaf1c17b968101530a8800a53169817de98a3ae5e3f7b2026563384d41df3d3368c4f52dfbf31610cc8fbedabc0d7ff8326801d1cc924c22a911a5860d192edfbf8c2227f1806700aad57c37d2a0703953da0ed9a8efa93ddb71d1c286f43ec7c1f391b73a1fbb6d1d254168c83433dc9974f5a0cdfa83c79d54e323cff2b0a664079a6d36e7226596d7e05da3d974f9a3f7d7a56b4dddc4dce803f5826df78d7a7ba1581871d077107204114d091f322f80bf593ebebaf04e2be872bf1840423254e841f7c4f0ba6e8c1aa6e74b0b4bf268c9f0dbf0723e2d595cbc37d733ba8e037e35c17880318e2d053356c4125676a375e6a9f2a45eb51bc0ea574045bfc4e4377cba47b87facd5355295824689fa4bd9ab1771830c2e6b312ef10a2b9f65138b89953bdaa343a41c7ba6df1cc112b43d53f562c8285af0f935f2865c273c347853cf5e425a91f2c0b2126dde0ba1840c5323582df3775ea6cb97302751fb3caf377591ca8da45946747817aecf9c8f1b5682d406c52b0a750db97e7c9bd4ed6cde36f609ea9c0c47d84b30856b29763183958019970589f3b32ce7a3437d09797744348f5f7fc088428ae1eb343933cdbade613cb8d84199179183344638a1f37c420e279808e297992c136548c4b2114f48c7521cd852a21641dd2a1707a1b16073800d91ee9d6acc94f83b88da0843a309de34e5df18ebba57d854f91872a4be2b1937c518c7b7a16199bd52a70e72e6f94a4303daad7bbfc8d3eb0bb5fef68f9bb334f3f1d39679109793e81cba275a52e18bc2e099d1ea86fe24ace504918b5fd5e1151779fd38a4dac4968454adda9bc49a42f82d8007bcef987c344cdda488c3a30d08f0a7cc57d8e228968813cfc3007db5292716e9736b2c4d75103ad4ccae6359f88db4c71cdca890be1d014ee0cb8990e05087ce6f75485ce0d0a3929ed3ff1702ee70a386267d302166d236c50ac367f09623feb43ddb83e3354b9447220f22117781d38d615dc95fd1d164f2db7e9e311c28a94dbbf5c149a541a6272aea39152acf686aab074f20d56c6ee1510e03be31a8f04e84a5b11f5c89b50847018f49e30c75397e0e511354f4681efd6b090e3b7f2e87730706f1ee890ef0e709a3539122dcc11c16f51dc241ea43e1358703f20bee10032bf70323fe7f239da61556f95a137b28626c4b7f34b8fe9239a255f984a042bdf254310fa64a131ff38eb1964dc0efec92657820bfc8dc70bc33c2b70a29ed5ed0552fd828fc50caa6a2bdacfbb2b8c3bf8bf8bf7666d2f0eca0e809523fac15011c65e572353ba75aa016b8d3a5809bb972adabde7733d3f90c3336ac3c87338e085c41a573f291c21f8305467a9419123bb9692c31b5b17e9e3ec6aedae21e7bfdcdc6d4e34822aa052ef8469b06c8dbc2f95c50801c1e24958ff87d6fe8faf44a4eaede6af8d8a992149c9ecd97fb73cd73879e95f8a22cce1464f1b97b6431f845595764123c1b286941f9460956c7476e2445c1a8d0d258874807e175524fd61369c87f5555008e77e67b841da2251d1d99e2b9beab89748ab8e6f7becb2584fa5261c6dc02ec197a98c8baaa9cc951a521a381766d6f4423923c9df5e44508d4de18d6b964317d88ddc1b0e4e7241a4b1cf6b487a8e4123b130cedb91e2eb801dae89a537ff7ebd24f8372d636fcedf20012ee90530096b0b11c0677d3c31113fae0f6e3dbdc494411ace28f756cf919b92afd147feaaaf3055c351244427dbe44ab838644a698e63ebb698ab53f5f2731249bccbb7ed16ad57a012e4a679e2a78bc15b5c55c518f5c5f67bd3565a7fbee42183093d8be32ed0e7d982613a6e880d4d11cc3f685ffa49a1c82cf850c85e88c49e5942a6692a02a33b31060920028740d00027be6550cdf362cb5aa43dcc5a0af695a844361e42e7a8b13136ffb25407665d5fc49d9b9e3ff7ccf81c1b719292ba81e11cdb1ca64ab116c1e5cd64ba2efcc7337a24b1a0e3ddcce41f502671bfc5b4a434db5100cf52de71244c70fed71a359bc2661f971c47caf132cc30626450d018986e42ebb38371a425d6eee969062f2a56d4a2c335502dfb1141554b4cc023a33cf9cd6ae5fa5526ec44048ee28eea00cb663c7b34fa7f30a50d25141526c217d74745f90f98cb48ae2b4a1599c05e8b0c2321cc435c6bcb1e25e2cb5b88356a1541ac4351f48909b901977e45c09f447510b222dc8a1f9b59e8548cff9a56cc4f3280e1eb50967ec94416a05d0d0c5a9eb8e108644d34eb5c0fed11813f9e485f5a6c85c21d0cdce1a5d03b309adc88f75bc159919f183f821ad2adfbe98d491e5628de3301dabbab0a850903a9acbff1bb564f7a15c759c295e6d26abb5d9648f5cc82c8d7fa89e5c35e10a8ac9e2fd969f524c9c904a76d6aa882482dc29b0798886e5f4acff1db85d30e6829a259d184572d94467d2fb12d0de66824fe331fde7e284f30b18e96ea6cdade3ce5db0d99d84937cf741393ab1e43eae9124210ee219d22f07a17591faf6ca8b80ff032a72a8eb2ce1c8773ad62747168943f0ec12b0596870ebc0e314872ad3669ef8c2816fe4927b51f8da0975e1022d805d20ee01ae4cd30dea633653c0e833cd8f960a5f3519065952fcb3f0aa19682399b3bf336d421329d40f43376e4fd7d6c997f60e894bb525e2f3832af4de3dde3e425b4879657f6de777a873bf41a2690832387f623bc038d9d7211be86458463be3bb11e669001076b7e023105e1ec122128667bdc1f0bc195b9e11fa70abd108519d023e7a4effeaf00827b86d6d13373336c41468caf869ce10d590d36e677320d248a356ae5a188a0b1af31468f0a1c8e26d0f439d575f86608703c8cd644a05297973fb7ee34cb34ed1e767e64b117750d7b3cdf29ea99628ba7afd7bfad63bfd93d12fc10c6ceaa971e4a86b1ff7b8335c20ca323d004ab33cac3be824796233c4b6c4a14deeab7e2e2b462fd1400eeaaa1dc3ca2390a3c950a4228802093620eba4a5d9f452a2822dd70c029f45fdca0004b9db050d37478c4d26b9f2cb6790b05f003c7bed55ea18d07d8abb2e27ced95a7eaf5a95cad8c04143e23934b91030a6208906b003c910bcc96110194edd3ac64377f7329e4f78c61be32a3e46403fd08244d4b94afb5992be100619ba7d22740e8083c87791b41bb57048fac042f615ddd70bef25cbaa11db2295a546009ba89203cac85fe715e1d4a9604519cc2d96705cfaad3083cf87ebfa07d5624e7528fd067f91e6313af7c819171b9cc099c689dcfdc1564d26d9c87e0beb87ca69149e8856bd202ea7a418d7909cf576bacaa0b5c140a6c34b5b42cbbf77bce5ebfa4cf2a2d0d130fdac0c43a9426765f97e481e549c91197b1b27264ace79a4b558e58605978b41f000effe1dfac05e093eadac170d86fb357c65ac7f890af4a7c6e3596f915213d8cdac9116ab83a24204bb74a4f531b1bb881fae6ebc7a52ba11dc8ed32eab764a3401c1cdfa0936edd7bc03461bac5a73a05324385c38166efc9e776e8d566b1a4527885bfed739aec6ea3e4772f31c5e8d536e39f083ae8cd471657c5d81cc26709112301e66ed00e2101f3ddce6be78ccf97be3b7acc8218fc8a17a1edda12e2432b860aedbef1c6e786264d4f80e0076d4297b9af5c4808ce0195e1102e41953714342db3b1a894bb29c69761ac79cbb5d6a98647dd634054b481e1744594715b9dcd098a93e9d2d8ba66a6b77c24f8cd5bf56388b3a8fb3516fffbc25f6586567e5f0ec1fbeab033bf448ff5861df17d0d290e0de24ac6e94aec78f011428a0909b4668a388e12ae0a6b0befb78a5e4f223147cc7b172706c181281ca97e5eea2029dca026308689052d349d8629cc4e6111459367b89c4d6d083c8599151760e345b8035bb75854bcc6b71b3fc178d037271514496bb77e1b9abf9573ad6f07443b2e1ede7bcb4ec126b26dbf2e2dd9158e148b165e2bdcab06a58bdfb62a42eef25b5010bec8e8c4e1a3df728fc840afdf12532660da8546d69e704060cee18539c7b43578d1598b55a19054d3207ff67171abbeaaa089c9810c4860345151708503ce45b48c1081e3dbfb26e1bbf18e403356b350e30d2fce19bd052ea3c1d6f4f289ce20b84e45085553c12948ccb81ef5254d8ba7ec4355dbe0f290d2885f9c92587ade370a2680329c8da3c6312f6380410c231c33dae80da034c4381fc1bda570a18c67a9ab70b940760fdaedcbe10d1b70e2c9d8a9476108907b53f10bbab16d98007410f6a7868f17dfb21c5c528bc18a60193e036170da88c643c601d2938359628a4efce0ba56aeea9148c65c1d6c1e83406305716119b13b6266d93a4b10d8d9c7d2115b1c89cb21f75a7d67f5efe6b77a15e983e12e1ceca893a75b25ea4567b8119a07fe2b62710b7c61d6e37c54e7c3216118f3e8b053e65296b298d82f2ae4475f58db9cccd0eb257633b1c5a3b3344621a319a2c5546661d35a36a34e32051836beec1b77c02a27fe87391e700501181272eab93a8628ea0841a2b372203b5353ec338a98003dcdb5578e3d41a1c0a9901fbe7d3eb6f29830de97e10d08979b5a4998a38fccf3eec4110e67aad81fefa2960329f5c4c181d0f99f05655005b06c9398861a90f60755309f7c461a3ef5dc6efc1acf8dd3cece0ea519c325d23b1116e9f13cb03ff136632db2fc9ad1b57a001b7c4e3106a220cf0ece1b242c887bcbec14b449b27dc1459ae11498bdf2436296b037a8d63129ec3a2a2b3f39bf12ad50e1be9c4d60fa3a087a927d80942a62dc9b09b2bf19507f542e4bdc1dde12d36e235594eefa0b2a44aaae89e1a9d8749be2d5690dd406215039413725b93e921f32d7b866ff3dbe0083219c1069fd0de793fea7dad2cdf70690b11934014620e4ea923860dff9f7bbce833cde8923586d9d390eea8b2bf12cd160cd04863cb7b18b6a662ba021ec26936d057759b7907b878f4e9347fbf62be8ccf3770fa61dce239162bd6be4b419ca6b877d8fe35ec6c086f806d12042724f7739bb25e259cddd184c62074722ef0062b016ffcf0237043cb68594a61b1b240c43248df9dda7c9877ad80a608f0ea081fbc4a3c596d4cc23b9f58aca50a485ab5cbe586b1c032079c832adb9be0d2a74234c375e8d310feafbe3d95f9f15c196cfb88656c8c8c7eca6b811b55b7654425048486d1d02301476e7e929174bc3c226f0e5f05abcf7a7f99a9606e55f7344a6637cb3240f5e15f8db7577a7c83efc228557b1d82618e164fc898cde12abd70400ffd42c91d2df8a06f8db48e680c0a82372508a7974b73a512a2f6833bf882663d1b9e8d158f5a1984b4a62d0d15ab1621dd8ee7e92767f7762ec9dfeb2a99192daa5e479557f6628be049f95b70d94135ef305088e983489f11586ddaa09f4051a7796c6225052adc8474f8eab78e064f1ccd25a49221e5aa3d1486cee72852846da4a432f8bbf6deafb5e668c56fc194af220e26928bc7d9911adbd9a24236af4589f3285eb4a3a6fa3b17fe8402040596079a0a67f53ea5688628652884fbde883f068a4d3ed49ef04ebd4dfe389e2232bf04cc4c2ff0f70295c7bf9c6beb5608e75db516d3280ccf4d16eb58a8ef717bd182248d9c24cddbafaf17901948cafc8c25eefa05fba6b44ec5f3bed129a4a6cdd30ed90a604dbf73276787ef6353c135f2463b8420dbd82cfeacab740972890cc455bbb3e5452cf87d0a61888aa6f5eb456276711ec6a0180aa1be5606cc7830e1d2460bd5dd5e55c0ef9d9ec960423dd91a545073957d3dde93b5a5c5217ae8e379d06ca1b08c1c950f86cc015836ee9c1c870b7f9695983dd19b0cc600a065b34488301620d42c3e05f835e31d0d603e226c29817e020d05417e64d0227115ea883cdb375fae43a0ff61d05c85f1de8603408fcc6c1970863d583cd5aa952385123599ddeb0619f9558d74d805a305a447b308c5087a740cbec00c85d00595d7ddf0d6900c815e0c443a0290eb000984503ae9c6e0d3e358132018612a07e0dc0e85d60be36fd124188529d6938cfd1a9b3808e0b68c1030e8b0a4022068ba5bee25e9d99c0e8948eb8a7d2550f207902d80d32630f3c5e80a801fc02e07580b404c0d8eb0bc8631744c2b69e64b61f863b30bbc985e42cd3c08da6c418cb8685a7873e9e2e352de0cd1df7e462adce935ece6e890de09248f766e315b99a63b65fa8a0874c4ac4ac665ef48b41acaa69256e63d31379409adbdf4e3986161728230a533739fe256b2782ba67de8386c400a72dd97fe153cd8245febbb68ee06a0a8b120efe61ffaa89bff44af0f1a6cdafa4d4da0243db0961460867d2bb2863759a0e60daf76ba75569975f5405baae6994f77d76a3680932817b4bc507f434c6d8d98f06a7ebcd94a61f8edbbeec25ef6b76835802e51bdbe6863f8e6c4f58d9a41b4160c15f9f10a04bddea7a49f5925e987da59fa6746d979a51dbb5ab4ce183af8e34747674919726ba53adaa15b521f5a9db72fb5b342fb8378237f0273d57e523708ee6ffc47541add0b32aa651fa9d045a51d38bb6e78c9c7f896e00968cf2a9cfcd5db93f1781a45ff6b63fbf49293dbe9be609fbf3504bab4cb762c54b357a75fe84e75ff2ccec6fa42b924cebd08fb932d5cf4825c1e5b3e9fcd6b44d047ee4d2a34017a47066c5a3717fae6aecfd0a48d5fd45216ddbc09231fcf3d8766c28bcf7ef17afe682303b4b33ac561797d60e3da0b3c1414359a64f4d24be77ce736f96eec7963b456b0ac1740859164d1bcdfff5656f81eaecb163b8d5e8ecbecfac26b9f8ff4d9700ca16b2146d83a586ff2f4b4fce5a71257075b6c4b075bfe11420705961a94f83a43486b8df5123708070c8b6a9930014aac3546ec029282eea028935cd04887236cd4f1390eaf1a0548f1e90904b85147a6279659fa94c086b414592b8d94553978f2a52140a97c0c62123d4320606ab5d74e901d651506f56ed412a6132c241b3433748f294dce661ec67d39772819cf1ca619b7f9107a5e07fb94bc483f42fa8581985427f4769d965a9a464142362aece66094fb4fe7b85f7b2b7e08c32afa621797724bc50ce2eff311b07ce4625775e669f634cd0ae5c5d1a702d852c12cecce59e6843b528d2708b18e7216646a90f4263480b25f84ac72c4386b271a1abf5bfa1e6449b3c343d310960f9c6c288d2339f69f83e8092ae6453cdc8fca679071458c71c22ca8b5c656498b8f192e3c56f4b1ab4c5b732b7d54ff532269560a002e07cadaf78ac95da97e78843e3b5e4bcd5f276c0e890e11be3612c99b78be3f1ef77cf5d59ffd396213e345c7f0083012d93e3d8a4304d9b4fd9e4537404cfa53fc4267871aca50c90da0e73630a6c5b91bed0b8e7406d26715cba30c810ff2a06fe4db0f78e612e153ff03cf999cd0e29538209fd9ea59b9962ead73c71f85802b1e816af6c19890580ac2fb47a862a9671853e1aabd831c29101285b42ac31067d075ddc376fe824bd135e05b34b96b92af01579f9616cb23dd867cfcef356c8c6c595d9eccd8d5f7aa114011ef56ed937638b5131200b3fe2dcfe485d6291c6691816e1f0a683019695b1523fc620db4f9e4704f102296338ba07bf53647063c3a024ecc436476385b7005c2fa5781dd713a0828a8d0ce9860d067594559c724fd87366df6c8af7089ab88ac03f1ef0acdef5032450d05d2778bf6e4c0ea0818210343873d0c5f10cdb59c8fc95f2acb333b713ba7871c134997a23ffc6725b700b0081d0424d879c082fadbe9bc76b325ae187383b6ac945a83a88bc2ec20dc64638fbdabf2622b8d48190b57e585ec25226e14b0a566c186b4a830235898298b35ba06a64aab513083dda5e2a71a3933d0184c566d7af5e2776ce7f5ab0d7e92e4d4c7435a236a5068a7ce6a1644e3b7ace8af7ef3f9d5d29a608d4455985a2751fe488f69ba5fbcf4c1e206931b6b024833526d18c4421f8aac2bdea6ead0b434dbce779244940a2fbaf57a7aa6bce994379526667f3c034954412988b26671de91ce25283f0f45ee889a611af887f49ae9d2582d55f37f1752cb9655754a45e8db189a925e605f79564a6d45f33e5fae6e4d31d99f2ec4db2c665083acc917289d59ed7d4d7a6597c5d228a5452e2110dc8f3ad092fc332b0594ac54c2edb5f5cce31f27848ad637e9303ea9f964d6e5ba8e724bcbca083ae2739f88cf8c01ca63be21ef3087acfa77fb1d4f49a05fd3e2a12abd7c9334be7237e79efb2aa50edc4683735c2b542fbcbe6450b51e27416b1f538a4e32635c704003fdd8e51e74f9fbc08a95b35bb9cbf09100e70023495fe72fc5c06bb7aa5a6ae754cf555ebae151877d5ae5c910932ef2fdaec5aa548036281df9945dae6c6da7feb0d34f006a7d5db6abe746ae13a8300f9832778d80cbed7f8bbe8be767b67859981daddedd85327844b34c9a90c06420ba57535eda4216c356390a5313bb740300170e2c0a3b2248e740cbbdeca6aeeac0da16221e81122e92a16951643262b3b8fb186809826492a1b66b12e21c2fb2ed870e6204ea01986696efeda74a70db8961da3fe5e3bfe7607b5e202ee8ded391108be15f02afe1a1e361c7ee3d3191d0aea7a8dbd27dd3d07d5722c8092314298ad0015baa4667326a965f2c9cf14e30a97a2d18418f8c42fa7273a9c741a524b1d09d3c0160fd14e4809f170957d614fafe741bd58e8ce8aa0c09b2cb46cf8538c3bc16a87037b8cdda69dc26d7512354e61976941534d4a25c54b330ed295384be23571a9274264ea4d2490f6dfb90565c680ee52ae86ae89be2d60ee65f884e5037a52251e24bc29b2ac258ca491e581dd1c54c78133c7d5af11be17f865fe70a493812d335e9cbe3d619c7399517f5f046b39e0a3346cece4cc7784933f126505a59703767e018e3d6029375dff5ea38b512cda92c5da7c3ef1e18fd9f0a69e3557cbb36d1756d5c4c5dfe450f9a8980ad23e8f673c6634fc707f2b98b27839e871233d4aa673397ffff7e5b44bfc3888f9e3cfedf98d4a8a847ec10dfd26b0fdf254507265b1a57e35e6e02569ea1ead514d475021bbbb714218fa6a78f8d1bcc13c0cafc2d39dbfbbeba0adfa81ae84580a9e0232066545f00f3421626cbdd4714a2e3586ffcdb1be8ed435640d5bd648b8d5b9598958a14c44436fa8bf319625bda3f5e704a7b2a812350813892b1468383b8d46398e49f404221d3cfd7bbbde4218be9152bcd8f0005bac7d955cd996c02ee69ecb2997b9341eadd8a3b5e9c9b3813dd7c966cbab9c609f9b9b17f4b8e48cfa17cbd6489905f3dfb6b430ba06b3541e06b62fd35f37aed1fa688219d543d42189ed73cd86003389e74258c3172f537614dd7050c1cb52cc6177a1d92906b999670818035a3ded7887dfd9946ea14320af94f43529a01d1e29d7a38d45cb654a83c4c1b0e31b275e2d94621d63de912b7fc81dbaf20b61a21e39ac7832d2c69b852025157899aa1c03414417e3fc0a34e3a054948276104db3b62c00a24cb844604bfdd6180678bb3e04df3d2ed92172115c1c9ca0e20b8a01ae220ca52690ebc70f6d3f5412e578900ce2d1d12c90e43c11aae08a2b262dbed790158370410b9751155cc0cd680520353519e9b3e7e7a618c13b17c56660b84057c89610108aa38e06162b0c219ec6966d9acae57c31c871144e0dd5eff9089525b1378544215500ed61e9befe6de9be459bbc29b61965908a77599e3c4069c7017e58e3469493aa1ff8ad758c22144df5786d246d51a1462d181a2f252eee6612735dac8170752c879798069f9988255445d9a55f330f6c1458158230528682d397e3d2cedb1d24457710afbd07e080115497f9279d0489862024227e24a3e52d23acd3d0e97e0109b2d59a0ed0ecc588be09dd98a9b0f89ecd1e58de4bf70e256aa02df7624bbccf22a3d0681ecc65914459586a7c1cb54a1d684670d72b897fcb8a81052f591e032cdf8585b229e97bef7e782bc8e7be965f0d45f260965cc0cec89306048a8eb34988520c8d33d7bc39fd121499ba80eb3ce50e522ce840cada058e2117e192ed103a15589c23cff2850cd7b73232446a8b2103448329716e94c6c5133291cc7ac075adc20d84b777a7443c1b1f7fed432516db282f950d67861ddfcb64f81d2e27ba29b014be275fbf72c1c719bfd93e23fc7e37edd1c907b15349a82a9b586c0730a427f8b1be0d007b02b441a62903cf50e841557ca2c6927193d9b41b2a252ba94ee81056d085158d92ef99154c161291a265836e2e8d58c7f18a31c3be20b5dbfccac27bd325b38692d56a154954893f79c415610419bb54986e17e69dff2a663632bada32e36ecb5c6a67b60419fd60f910400bcee95411610e6cf68a923a7f0536b47b0ed190a0bf164a223d04efa6e870f0b7016c800b51831206c1622a6038995362c38b59ece73743026a3cdd9cc20b80c3ad9600d302123692c14c77031132e0bb9a686c22d905dd1127d44a709ad3646122e2dd7847ffddfe08e7164a8ccc20afde35571a82cfc26584d9ddd935b780c67bb7c1cc02c2587078742f772849ebb9ba095aac619cd60351f8d0f39b6fd5b7b0c6569428ea89403596123ba65b627d7fe9dd81989263fde57505980a65063e97d75fe984719cedd9eff72d4fccea1d8e23d9b4a23dfb89860e86b502f84c2ae20887d3aecce9d10510ec7f0721f3bd93b78def86319daddcb31d7dd1232edde51b974ce05d3416af6a2379384b00125a1069f66db47514d1761f3b3b46b667cf29a24c19a90572b94464aa221356d6e276468774f759b772b2e0449bf4520a35d327542dce5424f18caa18821aea7cf4cb4a1c459f02169fa26e9711fd5633e0b5a12c93eb7820f639d819c87c31a5a4939550f43ef4cce0de15e3c1f0690759363ba642a3ad607525f7df7835d73434129f2aa4e3d65ad6a99322e4d574a30d48d9f142f9ac64490fa166236eb51b8d4efdd41fb241435f023d81ec71836dc5114d895081d4e63e66a85759c3062540cdc30f2b1408f8b77454c4ab81aae24f1184bd4c1fe309cfe9d10600cbdc6f44a6ec95313aaaba3aa91d3b6c83cf4f214da36b98efeb1a490ee64f897fb8574560af380e9abfde5ab971753522220d67e6e1918e274385d3201c8c2548179e5c389d675a020fd777277b2ed78c18163bc50993b0f32add18cecc87eb02e75763d31f4b72fbceb56113c47907d6127cca38cea3335e2417191760ab4d849c699d6cad2ef8c8d0b9bec6e0af8798d0345563c63f022dc620953013a339cca62877be82e19d4e22ee685e69dbdecad9840034233cb74fbbff8c4ff0c068647380c46adc5005c4488508b32716ff63ed522656b42c9c3c68997526001bd9281d6a42f98d30dafdd4b87573fa2a8ec1a31dbeaa45f60f2fa3612ae4ac4d8ca5698852facb031416dc4f2415a3b646a07b3a6786d1d55922cf84e6e9ef19c41a1bcb2aa85a0a526d634311c9cacc70a246a787bf1d0a9b9b737c4ba7e6f32e6f0dc213f983c3d31af00704c424f5262a7bcf616b06d27819956d2be1711d1f00263f71b48847090bcb702542df85e67b14c29ea08603a781b6d2e05193ce7b698b0b4394f1a764f2229bc4cc45d8f309ebfd09579e248940c90a1e4b28f592b3b84ab17ca21612aecaa357bd3eb7d1af97238bf473c7ebefcfbba670fb07ffbb8ebe40f8e3e3a64c6f7f4d553ce365fc34dfb03286eda4c846b690e608bc0e4c75028e4684f10a3860b26639ff0000000000000000805a28364a84d914694aa62433ec599044fa52654a294999928499f8e82967dba809991dbc8377f09e15103d0be70a910adcb5c50d56df05f732b7ebaab4e19b37f1e7a561293674593ae444d8e55eeccc1ac088a186186920410c341ce535697648d2a999331c565743ca6f2f495dc6ac19f2dacc3d1799fedb18653886d29ff11749cc951c2910830c485ac9e93e6f19c3297e84c87aba2967ae05dcb8b183186240a614e37223eeffde801861382657b55193c4e9e9c831200618aab4bfe7567944b4f485a30839696b548d858dbd70acdc984429a14e4e6eba70102ad4be29f5e95d315c28492e952fa6bd4c49bb8593b289de3bd92c26616ae198f6ab73c74a73a94a168e917289ead706916a2c9c66b388ada8c5b8c2b1d73c5f4388cbcdc7b002b22fa38424e35acd0a418c2a9ceca2f7e615111d978841055ed3a62db993a48e6a6d043b1010c643e04dd07f011edc803bb3daf1397870036edc08e3939009780047008c10630ae75dcb22e4d88865931a2186140e2258b014e765060c214614b2dd5b750d1498302b49e882184f604cc449dffad559a12fb80b1c3abe60094cc0ec0bee424761410c279c420c5aca2e6848a7de184d389f65b6cb7bc99b50c9a1b66623030ce8014617361670011b3198709e1331da2cc451f936879ac558c241947e99b692b1529239d4caee94702ab1eca32abf112309e7b14dd2444a332573ff5e088f8a8184f3fa661e3993e26ec3e308e7d90c32ee2825948a8ed713c30887dfb04ce24ccdbbb9458c22b8b17f9425d171a8808b7446846737dd8934478c211cc7274535d5aa92ae241b882184f369b29c26735772db7102318270de746a66e53c43d70484b36768994e093b497323d0e18509d602317ea04c8a2e9a21c463f8e030b29452427598430dc79d0662f4e0944da920a4eac8ab0af3e05cd12b678ed8eba6f3e8b1834ba62281183b38592a6d35a23bec5aef820bf4ae83933e252add329b43ed20102307e7edae9351f32efecfc7b1c30b1c9c6a2eb4c67c13af98e9f0e20b153c89408c1b9cf4dad60515f3766ca483110f1b1c25249176d17ee45c3c879a3d20460d8e91da4b4252b99a2b5a82ff2fea02760e884103aed6622aed504199760687942588eac4109146048821833a83260f2dd5167e3bd3c860c588c159a4460c22aba5fd559010030627a139426e5bde2e78af382815c6a40847b0e32570e3c68f00078e2e01c2d1c30be71298c08b0874d1057eb8e21cca2a8a508bcd095e010fc609de71a047810e3e5a7148ea7fc24dde8759cc1e073e58714afda23693ff8c4848b155a033a5ab9f09411faa38289339aa92f55c822a879af2e02315c7740d62b4454fcbf1dfe003150715fd8438292927e7c47c9ce2e87d29a9647271bfbd0f53d88d52d80dfe20c539f4c509226e8d85688fe2d4a159eb27279d259d28ca4728ca283e40413e3e71648ba3f500c38b3038023b7ec7dfb8d16e36840f4f9c3598b8c86fb3f6b914077c74e29416b5849f084ac812274ea231cc044b211667dac4f12a6e7d8698d26790260eaa91e25bce1c9d99cfc44972970af94e6446091327bbdfbc9454a5c9eb254e23fb27937c8efae69638cbed8964a64aa590822a71da20a6329be61999a6c4416df853ae11b4c285277110cb27af193ee2658d244ea27b4724bc8892772371c8daa71382cef6fa1512a72c3661af76c4afa83ce2a0bf237548d84b26479cd74c437bc4b7b69134e2a0c93c82b090cb1033e25ca7c442fde649deee18f0b188f38cac8b7cc6b03d72459c2cccdd449cea67cbf298c4d0677d20e224a635e950ab71939e87384e18b54a42f4b5c387214eba2249c823b98f429c2bebc2699cd40721ee6310a7f8a1c14d8bd8d4fded1c3e0471ec085f9f19254dda53204eba69f465f6171007f591e465532ab6c45cc3c71f0e3792db4fa974fd193ac3871f4e71a9825d52aff5e160a334c5bdb29b98faf4c187431ed3995e4608041f7b20c5a0cb2bf378e8f89f30f57088b3a5ea27a9995a36f8c8c3712f9f7a6e793c9cc47edc1ff8b8c3d99456abebd0f297ea4881173a4a80830717298a0f3b9ccb82087f47a1808d2d6edcb871a35c1d0e32c565955554539a54850f3a1c2ec4682944c8a9f0318753483e9fd8adaa5712317cc8e124a7dd957e6f1387b3ff95e59799cfbf72043ab8f0ff0f381c53927129865cdeb8c1630180838f379cc34e2411526d2def7dadf870c3c1c429ad913c9625aa14bc8e1e5e78718114fc0474506041f1d186c3a919a97a269243cdf047c0b0e138ba99ddc3e636df690dc7b8496b129bea225354c3417d52469275415da9a4e194317e7243940ff08106bf4434aff56813899f615b3dd38c192a34d5810f339c4462d224224e6e6dfe28c3d94aa9d747483155853fc870d274f75a11e38eea110c1f63387ee705f1a969635df810c3f946dfd77957e67e46b5f0118663c81b57b3c43e0b4dba7143c17090414e6b8c8921c92037e1e30be73d35712475a80ae9df167c78e1684a376590aa1af3ca3343eaba70ca9227e4cc6917c9925c38f9bc9ea68d13fc34b885e3a51621943ebf1c11d6c229de37a50e9d1d5de92c9c54760d695a2ead990c164e2afc28256b3d47787e85f3df6cf558cc0ad5c9789736ff5785636ebcb7d5d14916545438c8192f91d2dc5338a8660e7351d9e33294c2c1cbd54d898a264ce68b8f281c466425c510eba743e1b8fd2ec25206a5dc649e70309127c5e7ae2631bb8e1f0117147c38e1382aaa9614994c53e3f1d184e349dbcf1f0dd35bf3e01e38ca767c30e1a873c946e4b424c4d8120e326788985755b3ba26091f4a3889efd990e25230c96d22e1230927f5ae11173735a805f30a1f4838ed9718d5d499a664f408071993a5663815fec4f461846312b162e474c3dedc4538654daa3d4c9a8e145356f820c2f133829a9043289fd58770f4f43021c3a8112abe297c08e1ac49ec4494b7c60d321f4138e8494bf38b5479f206031f40388fbe94c4a94ce7a7df3076f4f8c1f97499c765091644d4f5e2c307673d4d32696dbb9bade4504b197cf4e02cb7c12ac54def5ef0c103a3868896e92e28871a8e1d108492f30a493ab8d0303e74708cf123aa86b5cebd10a6e02307a708daaee357e22de2c2040d0601e303072791d5f54bf7b78f8ae450c311c68e1e3d3e6e70926c9b9fd517c2086df2e1c306a7ec95266ab192909df5f062032a60098c4007173dbcd80091c3470d728d53dd943a7cd0e0de8b5522e6522f7ccce094546bdc6758cc3e11ddf02183931c795ed12fbb5bf3f417d8e279f03809782e7664200d1f31d0e433284baa71c2070c8e16fa629c6cc95af5bee23cf666fba784b070c53169abc6aa10d7d2222c5a71d612a14f9c2471771a3360c18a93fe7691189a45bcfa37052c567150b22185b8389164dfaa704547083f11938af386f8279bfed4776d2c50710ab73dbad13fc5496c485a1a93324ee7e5095898e21823befefbe7d7d2588a4dc6a43ad7122ce739f40a5890e294b2abdacf46bc676c012c46b1a238a9984da5b5a43124be39d408a90116a13845fc17ddb96c597334c00214e79d20929ad37b1a51cda1666406587ce268631e41f42bea4a3c714a0b8b1233a9ad1435879a5e2736952185386f2941cca19647c082132715b25a9350c22ef394436d13c79492da8b076101169a38a4ba1cf99d29ac8f920102169930e550b9ab5693ea868005260ea3ae3c548a93c9742bc0e212c7bb51fd6df97245a92d714879dfa7559a4a1c663fa4a6ecea15b729714c23523891b92652d227a14fd892987f1b49dc0dc3221207a55ea3251d79481c848630ea92c535e5328762f188f38618b64946cea1b6c38b846304486e8085230862d34bf875af8be5506bc431f989bb117716a45ef4f0c2043c0e065830e2bc2523cd46748414ffe7403d3ea10bb058c4f9d2de059361574ba673a88d800b13bc220e217f5710257368ae4e055824e22cf6bb92820a4917220ef94782a746ae15a517e810e752a537fe7d86b74be5504b01168638c59fd9a8dae8abd51a0ab028c459d6456c2e693c7870d185b918604188b311480ca78c3caedd23e44cb8c370bab5a0d4452b397a336038ba679fc4a4614d5bc817cee7dd6aa6eccf4c5633bc70d0adb85c31ff48c876e193576bd7ae242e1c3cd426c414f35b386dbeeb8b23fcd4a65a3857d2939a1336ce28370be74b6119bf22998185d36b887ca3844816bd195738788b4821da940825a32a821956386839d59b35fa5ba25e8543ae58d232653eb34d53e1f8b3172cc624a394504ee12065cb4edc33a5528b148e7ae7d6a6235ba6861a8593c9a468912b85e8f1664021d9e19a6f5f934f38586a7f5ffebe58ad13ce3b4208ad90b277457046134e425c2c2f11338309c7b1c935298589f99b5fc2a967d3cac66254647386124e3a36cd48fc2b87ebf81e2a78b505cc48022355d44687723749ee988184b36bdcc6b1cd1a23121d5c708fdf5107987184b39e3a55218c34871a8e1d5e94dd85b1a3878ec72fb80b128219463875cd29b791414538bea4143b4b9970fd89708c49f3f3c08c219c477e9cf9cf9a58d8cc10c2418b8e8b94e28b6f3671cc08c231c52cd57aab1884b854e0021a289c800770506006108ea35f7365debea5c63f38f9994c734ac5c89a343e386aaeca4b161c61ece861b63aa307a7b07d5a27bf4a27667970486aa22cc4b84513306307a7cc79f2193a402f66e460060e54cdd82fe2bd93d5a1811b37b6280218c28c1bbc62860d4aed7617f25fcc69e750cbc1831bb085a65162460dca0c1a9cf2365fd811bfcde07825e6b9794adbc72b09244001663b7a7c5184193238fa88988ccc1863524a313845f24c418411b36cfa193038249544a95c593393a4af38f5a8e5cf34a52b8ea66a7aa4cd6bf756325a71bebd308b29eb5f438915073f0dc93375cd05cd49c0c61636325044206315e72aa543ef78a61073d1f123303864a8e29cd14ec9cb12d47f83a938ef26cbda2351a485160219a83825cdb915e54d39d47e046b23030cb061630b1b5dbc092e200109ecfd8e2eba302690718a83fab7a4684a554a2903c617c503324c71d4bf28b9b4b79e94530e351e25e0ff02078f1c3b708c809b98042e200109d4ede8a20b52c8043c80c36594e2982be49f867111d12c61348e1c3cc0f8c290e2b4bd7312638a148bad8c511c945ebf9b93ac51df03c810c549bf2ed8bda60aa2f9501c848c22cc5486a038850bfdaa559b8c4f9c3324c5b431d69cc9ef89439eb9cd1eea4e1c7388d3a3728ffcc8d509323871ceb49ca7d62ecc786913a7ca7c1b13fb6b9ba29a38fb9a99287d331387efd7ab1129b28a8660e2d87173fd272673adb6041997388664aa4aa28eb6b05114b0b1858d9a808d2d6c94046c6c61a32260630b1b05011b5bd8a807d8a840046cc8418625d4942d355bce98b52cabb554102784d64dba652d000212086387175d7c173d9051895374b998828ecb0822607481a38c4106258e2993700d62c2456fcfa1d68e830797f140c017644ce2ec3db3f7e117b39c491247bf14bffd6b2f648a227118b9294a420a6540e2582323cbc7438f386d868fb2d41187b3d3da48a315f5d488936c5c1d79ea63c4e162dad8c848d1ed648b38ec45d914648f10a257c4e94d2d04adde1b5c9488b3b9a89635b527b28d88a3569ec7e8bb105c4b873859fecfb8217c551019e2243efe767653f444bf1047b3244b85dc3c3912a4320871ee0ba91d21c4bc49c907710e9559d4f70409e298246eb2aa090ac47167c77c5392964404c47194aa684155251539fec3e9cc64c50c2332cfee87633e914ef8a99dfcb6e9c341ad6fbee85c1032c787834a95e554680fb16af770fa4ac9333f36f5cd7a389b4bd49b28a2946bf270ecf4f1f6b5b624a28a879345dfaeb3ced4917487534c217ee7acf88409dae1a4fdcf229e38e9b1d6e1f491424c8a8997a252e870c86e3f6e2a956855e7704a319c84d419cf2484c8e1a482b030e95c7d2e8ec3b9cfe4db97f4e070b817891f72fd371cc2f9899d13ba1b4eebee13e4ea46a8c4b4e1ac218f168913af4d956c38ae7ae5cc8994b4fdbd86d326cbeca61faae13892e2ac655b8d9441196938aedbe68bb1cdff2e41c349b6d4441d65d94d2d196738bfed297dd7cdb6b3e1c930c3d1f6f67e33d8c8985cece85166021ec03100196538957a91bea215046490e1a462c509933531f3623ac0c09115a8fbdfd1e33820630ca7545e416825a1996d720e64c470c8a72a4cec9588a41486f3868a1062f9fc02196038f9e5e98d147b7ed3fc8563aae68b30312a5ffa5e38a9d111212a6868c87f178e72912288af9e58bb73e12066c5df4e972a95f316f450bb1052d0b5708c9d9b9343c9da7ab370cc2a4274fac690e62a2c9c22c6e811f2065de154a363b28698fd28530eb51d3dac70d82442102986bb3af5aa708a49f246dcbc9323935438ef9fbb6a698bcb3699c25945f595c2d1ac437d4d2445e1a02963f4f7bc8c56cf0532a0708a7d5e252c6ea499fc09e7ccbfa3d5d245480872c2215dd2b191f336e13873719308d2eb3a824c3847d64d2b73eaee2c6509c591fc97e2c3334137173a70181cc850c2a9443291bf4aff227849388b6e3cf952d294905599810c241cfbe47a3c544a65773ac2b92b45394bb327fac406140c6418e1d4255c53d216f3590a8b70d011f2d9695321c26baa54d6547a92430dcd0d640ce124b27825316af4eb32211cebc747e5d73dd950e1a893118483486bcba031fce8c47b70a1030cb20219407854ec9abff6d30f0e1a232ff9e6a29f8e7da05a7a9db0d7901e1c3586eb32ad6947679407ec45cc16b38da56f0707bbb31cba43657f51eae09ab7d8167ff12539384e34b571a356ca292938d07bdd2dc8961476dee054795573166303a325bb88d5676ef9818c1a9cf2374f3ed3b7a9665d80a1e32c0dce153a21e4fb4dc1f542eec5044c994ec003380a20630607d38a3d9122e4d1d6cb0141860c4e2125da8b892e8bafcb88c149ed9786094295c83765c0e07491f4c5fc32d957cfe781e3c68d77d457200a62b8e224b5efdeb7d5b2f5569cecba34a2ce8515fbe8d2311daaade204315471ee5231c46c297dc6a8748c541cc34ccce9e68b8b93848a83c898264186e48df34f714ce2254edf3dac3d648ad346c835e2cbd27675a538bde8b690f5b2529890e21c29c48b10628eb8598fe27ced3737ca44472689e2fc1f7983ba24b90973288e96527a4b92424071ba24514724ba96cc7ee2ec7edbbe41e43d71985f49274efb71c13555f43bc289b39e1a574b955b96b94d9c4fb42c47462935cf68e230a7947cb948cac4614f84f48d2f264ed2c4b45e55bfc42989d4f72d426b89d3c619a94985d556bd9538cdef09b9fe674a52498963abc577fb0aefcf90491c528a119b5a84eee992386c5ba97af7ca8c410446248e12e45c43635d4ca183c4f9ac32d3aaba471cd794ec8f74ca64a38e3899ca719bb55923ce2a1bd94cbe133c063606234ed94a6e8a5a495c681771fc92fdccbb1596a44811e7d4c9e62e4a6e86f213711e55fa3286184d7d4e1071b8b0fc0b772a3209ff10ba95124ae9ef07310c71d4ead3b56c1935247921ce9bae59549b6f0cfb0871cc9ab7ad89d1411c4c0611ce826a9e2fad204e418e3221eb27b2471b8853e8a590ad1905c431059d39137e23ccc53f9cc432d6c60c4ab62a9c436d8b0d62f8e1dca136268d98d223efc3b1f404cfb70952438e80813788c1876352918de41793be96ece17031c664fdabb698fa18d8e1851eceeb7e9bde74de657b653c783c4208f8822560f27094150bc2f4f2e8733b87e2e1b4293162d0e7a3c6b8c3496a05b15943d2fc76968c618753a8986b3aa335495675c02a5dbace3dcb64d2e15421dbc4d0b0764130c61c0eb276f2ce9b8a8acee5701067f515c54a83e5d00031e2504938e5bb19a28ce0809618265f4e9c8ec8be61f5dc286306f86020c998b0996a39fb2f9c322593e697d574aeee052b8f5af30c2a712cde85339ddc8a71425c3856b8b50b7a84b6e0a6da48761a349889b4c0573c11d79672260b87ae947d83a4da6a1b0b99f012327c854fa9143163854d85b1dc2c3eb92a5385228eb855b67d9568a970ba5bf9b8bfa7b088cb9510f584ba524043373fdceb7fc48dc2d12a88fdc46892bbb25060bf23568b18994ffb8444288da7a24e40dfcb6da8eebe6813b8cfbbc9992e57a54c489d8ba4b51084b6984bd84ccb479edf59520929adbcbb643a7b4c42a5fc35b38b48b8a4a6a43dd72509113cc231d4cd47f4d0085e4c1af7db12f22815a1f3f5feddb98b17229875632fac47d9d96508885cdfbb412599295c8450a6afaf1f84e52ff37f05f51a2f10b209aa46296dd6b3fea090607973cdf5415e9a5633213d386fc68c3762a4c5f8f3e0243634c5939e6192b98363676c5242affe68783a404cd2a37d7dcb4161727acb6ac4da707012f952430a32dc7ac691c50d0a32cb45c888af416736482f6dca6a96354e54032e96bc598d79c1a64115924a34a6a03795c50cac4c52e2bb84703118c84206872bb9a0dc6674c6d85b0f07183364118383e56dd52e9977f13658c80206a7b56c8d29d955a578bde218476eba2657b140c315a7bc8c919e7fd984255981462b8e299ca80f97999d4b1568b0e2dca3dfc4bc4ae8f0531268ace224bc8250d723a2f8a5950c345471f651af2d0b7e27a24ec0402315071992ceca86a89adda8387fe6bc6570510d424ae31487f70c4b35f263baa4a638a6206143c3b6674ba0518a839a8888735127c529474533578d46717ad76021a52823c44ea23886204d98de11a57ed22fb80b42041aa138091993f86c2f59b569501c6e2c3dffe6ce544c7fe2dcab67e225c2973cd9132755212177c43b7112b15de2c8a0a47b643971d03113194d8ed0a42d07011b5bd830d3051a9b3876bcfb9b8ceb62ef6bc294e52d4f0a42c6a69e093d5e7c8265c5d88a63e2184ce5d864f1fbf2fc129fea08da5fcd2ec26b8973c80b8b1025da8346254837c2324de294f046684c9a37cd7f6512a8ca283fd799e1269104f2c485ccb43969ed7dc11248fb82bbc0f1266830bcf0321a91c8c3e4424c49a4300f12a94f11d1f4479c5f42568b93376f884bc311a66b5677a957ac18d44b36e9b12547d6fb82cbbee02e880a68340261f59bf9f54b1cce7a051a8c382591c915ac4e344891031e055cf4e082871715b87183c78d1b6120137cd10517376e0c81c6228e1b235236d39b54d21787a11d6828e25449c8fe8efc5f57a31c6ab7011a893848f457133186b3ec379646d040c4c12b7cfe8a9d4eabae711820681ce29446488bf4a644834cc310c75177dea97772bce441a310a7db24948b9fd9e3314088430cd12a58fe1d11259b434dc72b01680ce2346e2133afcbc68e8a86208e755a630271d2a93642d4348038570c174198d86fdaef0f27af3bdb5291df53f1c3294512da4d5446a30fa7d125d773360611e245830fc7d911ba24597e0f671df92de61aeae13c96255e9a240f27957a2286d5a44fb484875312225e1e39dee154b1a3e26fe5ed70d0627ea729c8eb70923e22463babfa4b9d0e470d319695c8dda5793487735ba97d116145348fe470dee05a42b2ca7586501c4eb1b136e58da45c26080e075395e1b19b1f93ef371c3656b4d11817da84da0da70b9a52996b8814d26ec361ddbd22778c6608361b4e5273c36e33648cfc1a8e217eddab66359cce469a50d6f76b316938893149619ae3f6326838fce99760d99b42b4e60c27b95cf2526d97949431c3f1dd2bd96578cb70ba4bb174c939ad7f52329c6f4ec7581a750cc794e632d4656d9d3cc5709c3427e5366f92ba65180ea3ebc469565ae91082e13cb79bdc4458df91e2170e2206f59965b7ea43f4c2514ece2285ae20355eba70f4d3b3bd916323bb850b27fd9175a139d9c26973955ad1a1479d9268e19035788d75559ea85f168e7f7a42f44c0e0ba79020415c1ced21afbbc26937739efa0aca43b6c2296526d1a43355384abc512984581943625438ccdebd8d380dc2b75a008d299c42634a329fee99f3580ac720632ecd5ad939495138d5a651abf4b72126060a84f4fa61a9531bd078421583498cb14250516740c30987b51bdffccef0f2b009a7182abd7898e89b7739a0c1847389f985a5cd283196251cab432819e4a49035667966021ec0f1001a4a38a65f51cd7621440693700c9194a5baa8923192907092a4bfda33fb473845335142442519e12482d8c44b25a7a2ed4538a8d41e11737984889d08c7241a43af9d3e84d359be2a992ade4ce7423897b24df9abd1667b1484d34413abf5b27322df4038a86a13a52f4bf88af60fce9ae55c9456f04cc9f6c1f1fa52f6d1bea934867b70ca7d6a94f9f78b48320f4e4a06535a93907770546d376923f2a84dd2c1e922b6f6258d286ade1c9cfe82b02b5391f571717092a72f2ac6d20d4e76936392295317691b9cde82eecebd06a7927f9b37320d0e41834cf9994c1a3338e588d894a4fed367a42183e3c56022d14a24b51ba4118363675ba4d4fd6b092a346070cccaf74821432cb194579c74fd06ab1834855429ae385a856435912bad38f7d85fc69871d1645871d4f7dcbb519d9d2859c561452dc892114fcc78aa38a95172ff62946da85371ba903e771392b00d5171fa887676f51644acec14875c1be46db839d191294e3b37ea84a99044da94e2b4964577d3a9f8aa92e2945375938867d935e780adc18c519cadffdc246f8ca65c238a739a0cfa1adb3af1148ab30999be84642d55e582e25442fb4c4da63798f189d3a86649213b224b843c71486b7924e54c22eef65f8491011acce884166c47e696f3197122a14fb4a6db8d3124d30061c6264ea9cef35acefe46be1283199a386e253149e89f2e989189835bf49d0f15b7bb5c18333071cc957e624e9d6ccb5de22c4a788c6e24ad258e22f45dc6e3afc4f9edd2f855f98f7a91128738e721d49d7a49ef2671bacce01797298e5f30010af047fc0506c2780848e2944b5addea9ce512ca489c358cbcad9329777c9c8219903856fa4c6a4bebec5c8d82198f388653b12c42e37382cc638623d0a35d9723b5598a9dd8c800031610c643c05f07331a71d2f5ca9cf81642b9cb8893cbb898c5a0fb25a738dc045ce44076396311879999947bd5f394b01571b68c624134ddbf0507f730c13bd68c44584ac69a1111630d6880796206224ee367d1c442388799997188d3ea6a3c7df367dbbf21ce3597e57f3ff39cc90b718a9ba13133ea9e1072429cf545588c89d331511fc4e92d24dfbfcccb2374411c56b3fcb28e50200e3256cc9e94f97f360488639cdb78f1428898d31f4e66272dd9d64f50931f0ef9cff72adeeec349a60ed734ad98226d3e9c2aa765cc78660f0719c2a265668cd6e3eae1a05182fa896ec945b87938a953316fb071cbce281e4eb96557acc2ca8c48dee11884c6aeb81dd1df4b3b9c7533e48ff153d32aeb70d056cad424291d498c7438f86ac877fa5fdff2391cf7665266969852cd450ec7cd4a42e56c9dacb5c4e11816deadf44710292970386b1a19e5a379c32936dbe84c956793256e3829a1ed23eebf653c491bcea9d91a1b8e5ef2ee62ba89f2155bc34162c558ea3e53c3218460a5bea254363d0d87e09a21acc51c263468388aa5528d2a4ad4cf331cd37aa638494377896586630c31a437b16f46190ef99465bf76599239190e6ffb21f2255ee8f963387a5ed83b2527866c0658387f572ed98d1bdece40046c68718553dc8c6b9e12636b2f5a58e17895de62565d1d55a62a1c5743c59b64192a9c2f2cbde59c7eae6e07d0620a473795565264538de84be118b64463c8eaa72cdb51386abe5d309153dd3981c2d13464539f8d9d31625a3ce114548c69c5cd0a722b2d9c70ee8aa09204b9226fed0974418b261c37688adc50e91526269c829638bab67269296809a7afb7b33fe9deee172d94703a91b97c4d5a0c6fa2249c7c633f92bfbc85905a249c64a42037b68998a0c5114e22bd26955d49359836b7a085118e11c3fc6f4ad79a12d682164538c908ef9a164e229c4e450cbec12c6dc9c815b418c2414d9ab879319b37bd06b410c2b9256f124ae5dbd3a7caa18617042d82709a1843e4d9a4fe8283dc0fb400c2f9ce2a55672cf1277389032d7e709a9c7769c45d77c71b68e183c3a7ab8dda9b988d0c3000f5d8e1c517240035d0a20767f7318d1a2bb8dcd67dd0820727fbbf3019c2fe4eac48d183163b38ba8e1e9596dee1a5d2042d74701c3d6af2c530eb19c54b39689183739a0aba47eb6662d0c61645e0a0050e4e41b4fbe8cca87751a3801b9ca2e819a5d225b13b2b15b4b0c131799eadceb8f5c85d83c3862da91b13d4820687afeab137a1a3c08eef01460478ec781470a18044811d9fa30717a7a0418b199cc4dde6051137415858068710f2755dd5a6b8b2c4e0db4bd72fb29d1630387c78577eb70825ba2b408d579c3268d6f96b882bceb3ad17a35ea6c958f3a0462b4e9382303b99e3c488d68b099025d460c5d96ec3bafafdcaa4e46e15e7bb0842d30475a6227baa38f8a8a4258cb66b09b21c6a7b355271821aa8389f960db2632161a8718ad3a5202397be5c496bbc001b5bd4a086290e326694bf753915b98f8d2d6c28a04629b41854a3aab5695b109bf47b565aec073548713495a49b6bbcca68b5c6284e5ea22d3285944dc6ac218a93e518aba44a66f4fe1aa138ff89ebc68cf1ee4423d743c77711460d509cc287be5371722584518d4f9c26af89b82f12abf2f3c4a94f826e49f98ab9ab1a9d38a9f1d519b5931847cb8963d2ef4a65f1cd74293771d0cb6b4a7c8f1031483471babc274e2677cd25098377ec60eca24626b206267014352e81352c71503a4c4890a1a9c5c51a9538e88a6e9a26dd6d92d922c0e4a006258e2337d5d5b9b9cd5e2671487b3b29a3088f584be2d8a3a9d92c555656498d481c4b77bbed3e467beb9038c4129d27972fea447fc4b94ec406a1efb582ac1d710a1a466a6a4a36e27095c34c4b0c9a91828c38a810e73f7562ccef2fe21c161bf2bde6f8c64411875f15a916b94cc4deee2c8cdff1397870037c502311c7bc954c4bbeca555142c431c7c4c85ee154799b0e71c81549f7d7fd9c9dc910873bed315bcac777f48538f989dc88744be1f513e2d87fe20fe218ab1be2a998572a0be2546ea1fea258b2d704e260a75474c487a68580386555c725fd0f67fb4cddea9afbe1bc41e5ddb312eac3318f92572228555be2e6c3c1fe4c4f797f26eff770d470c16753520fc9a454903517c27938a2dc45b28ff1703221416533bf42baf80ec7a0eac4eec79c25b9b1c331452487850ac24c377538fa657c09f256d4a90c1d0e5976a2daa4cc1cce1ff1d288b56e2d590ea7d924ef2ce65c08327138c6d7fa51d2475e8b0b87b3eeace5aeb0298ffc0de4f0d4f86aaa1b8e59237e19426dc329f2c8c98ca1974cce86b36687095d495529bd86e35f546f2b9554c3b6f3abc9fbcb341cc4faa6ff3e5bb13c1a4e5ab12559def10c07f19d79751534c3d945765e94cfb0a6548683f4aca44245b4c54a8683bb89fa2c5171fe3286b344335575a676cc226238fa8b90d94d0fc3413f364ec8f1c090050fed0bfc86ac8921cee94cff50c30b67b5641d571baf4fa90b27654a9dc6aa5c385bd85cb1ec23a637b7701e3d2735c32521f32baba185b3860eab702a5c851a5938785ed4bc9cd57fc2ab8185c37867469777cf764d8d2b98b5c485157962ddf3e8e18509f050c30a078d187a2296ae5185938c21a7f63ef4857401868e2ebac0614e0d2a1c4797cc661395c6be2d60a83185c3c60d152d9bb85bec5ca82185424c97927a438d286caa2d7543f74d0aa90185abf104bb61359c7090a09d97d4b8ad88f703359a7012cd4d59495d1072a006138e9719a2cf990487094cc0e5ca066a2ce11444f4fc69b6a69eff77ac55a086120e2afbc99b185942779a43cd0b3fd2811a49386deb7ee64dca2e875e030907616a2f73452b879a17ae0ea87184834a2e711e22499a71e4054ce03ab8013abce0e2c68d1b370a1d6a18e1ab2cb1a9d9274e453879676fc50d7291944e04e3b4c9ab5cb2d2d7358670960f19216d36252d6339d45609358470c81bf45447ca5f9abd4610ce3a41e9d7540f0827a142bc8b4fff2d25f9c131866f8adbbf6fef261f9cd64c974e4c7e0fbeb8613ec2f2c9b573e8a5236af0e06c1d63bdf59b95bddfc15936ac7764ff4b617b1d9c2f88ebbcb154ad71948363fbf89a8fa6a52a350eceae2f23e3dbe243dd3738c689ca2d9254eaef6c83a3ea597f7aa9ca28da1a1c65444a95fe378be5930629d394466d1c5ef4d0c1058e1e3ab8e8626bcce0ec21920cf923a62d25cae0b497bb5791366908490c4eb9337f6bb5283f1923420d189c2e774f6776c76cb3579cd446e37f0525571c4ffac411b2d9e49edf8a83ebf7ce8a73c89ca6e7b782a7edabc84215c7caed917924fa463f15e7393117d17ba71547a838da044d8b49aa8444d1298e31dfd2fd560ce7629be2a4a48c92203e429c202ec529646eb455111ae26d4871acbe30e736ee280eb175d4c47efdd82b45711419e5bbb7c5501c63dcc7a89ff8251982e2982187c5de5a3e711e954aa91ce51664553c714c6b1dbb0bfe23933a710a622a29157425c6df38719618e6c466cbefebda26ce5a1be277ab3dbe04888b0cd8d8c2c617b2d0c42195f4fb0ba16e645065e25c6f5a57453736640a13c7bd98f733c6698e3c5de224c54d98bacc2536698953c68aba94940e3d2b55e2a037885a9dfb3e6f9b1227fd19a2afd2fd89f327714acbbca2f3390f499cf76eb37d84854724ce11b75f5de4c6287282c421b898b6acc8b0a2e48f3804192be9d5cc52bee9081c718e94b37477948d389828b9671b66e67c64c43146daa4587af92f858c6011a7bf925abd26ae33783c1471d2989324ea554d8a3511a7a859647237cd1c9005228e55496ec525cf49aacca1b6236d6480015ceca84017fffe17701d602cc0b338c439375e7348fc11525442c8c210a7b0a49a4f890a29a29d43cdc0208b421cc74b6a24cf98514d8810e733a152a6132b72533988536790bb41c608852c0471aaa062455c5a027152912efcc957ad102e8038658e0ea135a28b4ada12b2f8c3f132c954299324e89ffc70acf6d3a4a45d903c7e1f0ea294889593c48793052535dda5d4a1fd1e0e2f494ed23571a62d7a38452c95f9673a548ca13c9c4fc4efb4e8351e4eba53ee335c5968e50ec711c946e3b6dca5db0e075dab67972caec3692b53cabc371d8ea17a279dc8175fda9cc37982df7c594c229b16e570902f5f252e8f481e91381c64d7c8bb4c4a88dcaf2418ab5f6401876308d3b3a67944a42cbfe17cb3d5797de523bb2cdc70d03e9244a950296d6b6d3896a6b49347b7c64d44cc0b59b0e1e497a4bfbba618bdf71a4ec944b82c31167fa3cc420de7889e31aad594ce36e1f811b017c98f84208b341c54f39bd4d1df52576581866f4b33c98daafda6339c42a8a9f423a3c8904d66d094c5a4e5af72453195e1b09823c484c8f797c8f0f7e99e6022bcdbe9c770dc74ff97192308cbbc181e1f5d16b31f862dae8b548961e21d8c01a8e48e862271241408c3c170380c0c8565ac4b00d313000000101a924622a15030a2e9bafa148004532a2640442a16221a1612120b05035128140a8404623020140803c1a060401810146382420f3076c202f27f70b36bda4ca2bfa6ab9a4fb066d344a7e42bc6cae4392cb9d9f61caad85aa9e73bede47c9deef367e5f4a6e806eb99451addf7309cca82e65a894ed88a8854f8119c3107e540d3564aa88dd7f9b1a928bdcaf71b21f4a8e798bad8d99458b89942d4fa44b90cd1f13efb88231991d72d49cee5da4f470b9d44a61b62b37ab2fcbe7c6967db44343ee86d45dd82aaff240dd54b9c8c51c9ee932803b383d55f52c568ee6e052e799ec8dd1e24b84f376196f2554dda669639324776ac8d4091f282e3469cd595cd2246238b2b9c9f39a819661aa62d76549c2643a8d1c48140a6d4beb36422b13b9db25e0ca64a4c2d8b48462b72a6f7509486114c64fedc2ae9f84430f400489cb3fb6e6a47c0ea7f948df8c1022d8539ca9ba58f37b52e740990bad07bdc618cf3e35983bac35cab2a37fedf4e68beb9527e9bdf6ed790564f4f12e275c1df58853bec35972092cd04ecceeceb63c6d71d7f8fc12b18fb855b2e7b702c0266d31d404c3c9ee51d956fecf846a093bab7f6712d8317af02eefda6681cd9349c58a9abde4b70fd09f934d1997108ec5ecfc7aadfe19d8e3bdebdd3500140b276e4d57e613a41f9eaf3a5d1aa35dc3ed840b8ada1a4ca83b6ed7fe8a820302c74adb073c5cb1e40ceda45bbada223e6515fe7578a706d8aa52380f008058ccca509bdc54632d1d8a3d0f2401e75198cab63b5657aa5483d7c219859fe0339137333520b38d2a4b2c6c8b81858c8804c1e9ac8c2f0b67a6cf3439a2ae39712715bf9b1a7c75505ae917a6e89db4f8eba3a1db0d028711c74d088ef9d2e987e25a20c6f2dd3dcf1b6c5c203d6ce2e31b159f45b7796c22445d67b0cbdcc08e06bd777846dd1587fe430ff3a825770cc1381e6b1fadca8113768e84b3239b142699f45990a274d0fea483421039a1012c6da4155a0ae00026aea2b9b73be5eabb8e1d7264b574b635210c3c786e0ad0b5daf26c3ae20a5ebd282158fe7738e6ea806c434707e973545c661a0c1e7415eb9c54de62cd5d04a551a844badbd7f3f968af5fd9a1e948e0a1d9a8fab4f0e47ee18153a297f10302e3e15683b70b10b1ecc1ad59f17ec0082c31d160c9072b7293047ca1222126e0adf4630ecb09bb79e2ae1cc62269c36c6045838c110b61bccb88b001df7bf36cf573d472a0304e20683bae310c5999b22e6ad7418742e6a510421e70802c7e10fa65796b2381e13efd76f3214b40d5064e9acba818a254348bfe0e70ee95088298ba1abc39bedc37874e0d5e582cc7e563826afbb125ba31a61c6ad40f2f3da69c7ec1147f726b828eb71cc466f9b2ac88625bac132df051eb28d5917c39d0d2b479e36b6a597062e5ec23c635209a8e58c9e4cbbac98d718eb6f13bff94e944159e7bd316cccfbbd74bb98a3eb3d998d3caf8defca15b89db2bb58109802eb30cf5422f3e4d320a35d8f6eaab879c29c2ef0a65f56df61b2bf846d3d523be9ab7e5f18fe7de957b00d71b5c0024adcd4dcf11475765eb77b9ce2dab9820731a2f4a84b97b86e08ba1c7459d5eef2ed4868ec33388194778fa8f79bde719bb71e656e79adf1b78e27151e78ebdd6c88e6307d0e5d4ded26cdde3a2000d8a3e5ad93dc1c86f1d5ed455deada07537787ee0cdd5175831abbbd28983a1f9e769fdf7b8a77987773e6ad8377e028a2dfdd6c87e3f3563e7627b73758f3d6611f8b80ba77cf59a1fd4fdbd8dd05defac56cc47700edf66254ae2669dead50af3dbdac79598fddbae6c46a83cfbc75bb9c71bc76ebc1eeae0b36104ba7d8457eb86ac80ca4907c9dcb2522baa83e90c0a18be5ed726223f5ad5b3e021dd6ff774f42373a17fb15688ccf32adaabce7dfb13b08b0f44e8bb71e9b84ee7d654346fbb5992706b6ec755bd775d92905061019ce2a4cd52c4b76bbb282281a55c157c368419d7a00e281663c46826e1985b694e8ab55f4c5b472d13b2934230a30f40bf611e347a90c65a05837a8eaec9006dd34f66fef44ad5862bdf8c13ae07615068df1994af8f1d19f0e28d42b3021d98029957fd72bc0fa7003d2b8db579084d02a3e2605d07228a75cdf57913799938ec0244942a91e214416b253f76db21e89b6594a4310cdc5b5a251522aeca0f9e9cfbcdb80a1e2936c893e8e56abdcd26ead1e1fb4b44d964214b7ab2690e857d92a24b6d195cc4c9c06d40489d3c25a3d5db74ceb4db43d7917326b1ed366c7a2cef9a1bacfd497a7a235403bfc7239d793a5c00fe26b6055fc30dda402f9c7583dc8a5703928d41560b485d60451f48e490848813f829b73b012035661d9e905e2a5727bf94614110183893866246a5318109ce50c47892b0615dff45d904c8ac186748cccc6b4fb17e0935957e0b277e9c99f23b7310389fb7f749b9bffbc428e52ced7c539644cb472784ee99da64f07ea2b2e804cac20d450638b14d9fc409fb1bfb9156f1a42cf30e7bb00a6839b830d1723ed946b5087dc6d1a622f32be8f9868400cc4b2de1d04c43cff7da40b65e53308b2e6e86362060e5f3c5cc21d890b62a0dbe0ba815d83d6064d6f3053b6013e0e00bb1e5e114ec413100fcde86fbbdb24c36f35a54483dd196c543122ba77ffd406ecbb9ea9e59c9fbf3510d30633d52f28c9c6ed97692083830138cad16d0eca730a8db0de005883de06d90daafa60c60cb66dc5c660f53e98395f190948184c6f83e5335d5630c2205607514698916e70ca5cd2d37e36a27cbb71a98a74071900b61440f7f705a24d739a709ba3dde41890e65487ef136060bc84fd4143d3c1e62ef3d517d10f22f602997615981dca00302d4a7a28eca4a6af1080c6125eb074d600380148075cfa8a9ce9f9ca06a068802e179a84c43426900f90f9714a5edd948322669da53b8cb36a501d3b96f486e35608af833e7608386a4b7054fef799d215c824a405a3226399d037d789cfbb75e14bdc147b98178f93d9d7a417e6651bc7e2a04938ff2a14824121f26348930bec3244e80e7147142332c930b1e7c44c89a1260214829bb03690081cca0d0e9251d79cc52740cf7b90f4dc8ae8c943969a4a38140448fc20b46181b0a5ec4195ddf22ddb0893d5b36d29527e1c7bc8500066e91bc080a0832b77313b790e310e6feb555c3ef6cdbfa3738be2592cc78802b505d8e19babeec9cb767e75da609b8fb229d20d36ffa64386c81d8556dc314af667298521a626cf0bd3d9f36ba23823ee04821fd67a64d82e43692c5b48d8b9b62650e46b94c546ddac268470a9ad8031d3a9a388b3f99b2856a1a66b8d84de924599dfbc7680da78fbdf1d055c8e1e5a730b273be469a678b33b6fb9c4e0deacc1ef147e956dcd4cacb2d2748db716ebf733061e15dd1f1abc83a353bed26243a84b68113aec5bbcd04c631707ee09ee839e2d8d0b47c96a3cf03e8d3cc711a98291c2d9076ddd16a6c25bb54b388d35cadcbddafbfe37601b106cb878b781b42e4d05df56cd67f1432dc7f85dba07b56cbb0640ad51815bde4e35873488b2def65dceea8205b7e62a1ddcdb56bde09ad5ce51563479532c0b8fab9aaacc4b07f8067c00d272ae67675ffb03ca75dcf03231f5163e907c520d4a3b11fb66b4bc625b8f3baf44b574d30ddb0ed7d127f7657f623a0155dbfc7452569c011af33d528ce0565940f511f8304f789f14234a3e71d9be5839e50d35ba55bcba030b22ced20c395ea1c7a6d57f2e31552c5ab8426891ef02ad1bef486863119c64f5711840e4b8bd131925ba716e0c9ae51a272c6f49d1002cc98179184800ec00b1fd2014d2e4760171e0ac1a57ea72bf10923966dd14d6fc5d5c465079879e52e2c455245c68a8ab260843915336448be543e308238eab2b399b2c042c28260a61e40775df16708ac31b4e1dcb29b3084fe79a3afac5a1dd12bce57623a6bf698bc73c1073f30a3358cf644b0887ff14b615da50410d4e399127839a62c136bb278c1657bf208835801191482f48253b112244514524add116556f50e67c85eb373e090e9349c0225d317ef7d45ba37f22aa92621b3f42210e11778fbfbf51d5be911fa62934ec2d981d9b94fe3831beb5a49c729548f1e15509063c8c5e618c316bd7603490895778bb1067f7ba3096134c0f7e8d8f34ec372d47b85dc89d7afc2bf41b3494db583c002449e7e20211f07c996c55f23e5ed31ff9a2cc423ecac5f080d2527ae1d2c382b211037b648365cf1a95e622057f55a083613129b70646eb59d8c793302098370d7a6412c71c14ac69bcb1045e00c0c43a4ae8f3a446b98c85caa2b23e796da1c5fba539fa2aef44fcb9448c75a5ce896e3e324a60e81bc4fe8106599584f44fac253ca2e970614e3221f310096b56ea13a7d028e9543f18713e168abc271dc795ceae7f242076ab1c133149feda390062cb1630687d8aa1ce2e523efaca7fae7ffb53f730d0b4baf05a391b5613ca2afca7ef5f6eb99b39786af5782ae5f9f3d54304479f22f3afb82ee9aa23a3e83c95712ed29240931464fea263079c50e6dfed2e218e4e930837c35fa225c82f2c03d9604dd80196812db006b34ea47056b0a12dd4ead882ae87e0ac8695d7ed7218119164b9a489e222e88d66a23bac153b44f290255253e88d5f84a715c6e9d06ca6d7c012c6d9a22526ffbc95d76cc80fd5e88c8c91bfd4db0d9022ad2bc6930ca11f0ef5bae9d2c104171b54944804508f447f238bdd6b86589f1715a3578d844e979d93a22076a07ff8326e41114f72037e948dccc0107b14e43b32c55847745bbb2515b4b0a88c60e7a87042ac31292729b9fb1b1ab9a95642c942333bf8fb55ad176544342bc65968d47320a27c6054096a47d1255ea1724408342e2a138d87c24461a1f050c68c9e58fa7f4158a4de553f683b0dad881d1d5c462b825a199036942064b50ca23a869b992be37519e57e67b133c8c9eb0486b28fb4ab393188d5691a899a0a25665aee5a5c0d42dacb1af0b58f56065c31e52bdfd1c72086358e71966806bf2244f50c3b137e6ee7b8ceba7534d747c6eb45bac2068f2b54044228bd0040c78950a15515988bf1139a6fc5a0c1023464cf0356f9df1480640a5cefde99d898d5f83f6d909768c5f310c3c00b5e83bd2207aef99b840295cbc8a94b2dceb0df4c47e684db671cede95c7218a6e6283cd3ab1e0dc41bdfaa0a975a94a94283a0043e65dc794048c51193376b6bbf681cdce68fc415e3c02977bb08bff01eb61f9d124f429904eb2f9fd2bc9068edae2c2fb5f20c9e7313b98d3cefb5156609676cbcb2cd5a29bb723d8007d865ed056819107421df38e7606180b90bf8bc3527de0c484afcc8eaeb992aa92ff8e3eea79311fd948be5cc13cd706951aec02f0270cafdd7b729fd3ecb468c397ad319e4d20b8a76822cfc0829688cc702c4da20a5263263c39b18d68b192ac1175dea0d2451c9438e0e712a56f231ea3bfaf81004f96e4af0068cfed901e33375189b168c42f653260fb8c122a0d2a0d4942c94705f58e137e1d732f42940ec125e039b82eb6b7c2cde095bea138f42f6ca2e83ef32e139ca348db531f253623a263389378aa7c41bc3456280706eb89ee5e874a3b8485cc0b095392de2f0971619f3fd5cbe1540af0702b4d8325e61e4e37ec0d7740295d36e9772934f4db76bb809544da248edb0a21ff96b7624f723a3250d128a232a0105532bd829d016b6a9e0bb0432f917af103f4351a2810150b3c3e9f2c7473a248c35f5d93f0fa0e7416fa49d2932e3bf2d03f69b984e71762daf3e2f0b7de897415a9a5617952dc40c2c39a88fd4c8c3d0a4acd595d5085373beb5369388647aa90d3b4c959388b4a48a84ccc2f44a5e36718d8883363397d18076854def915740fe0c1a5ae18385d5b7bcdd2381f6a1e2085157554819e33dc5bc8798f9245bf017fdef6314aaef6c1d53fcc09afa09c8531fbf3802e780f333122c4ae3be25c1097f8093447fc6bb14b5a6fcd22cf52f61bc0147b15e369760e787b6bce3053627bb4dbfda6a5b4bbdbf12b1f328babf35cea33968a4b506b856d1b58b0c48efb44abff6d888db44f699d78610a50cb0e8e341bbf1c14c47a85ec0f0644e2d71f26038c1168573fe10eb331e8134fd9762970aad1d1f7cc63c72aeec29940a48b44f244eefe904f9b7999b0325920c1ba9bd1e3f872c67fe50d20c2f4d1687925ee3a880d5f3a1c0404ec0efa775c03419c8b03a2d7c4cd121973c04763eb888f53c1d583d6e32c9baa9fa8cb29fca153cd10587560f913fc32c68f7df7414f249d61e43285e3fc1f9dbb5c5e10e996b6c79a157458e86ea9b9bc5f1aad34e24028ea7c81d5348d2ddbc8dd33df795a136d690ad9b1f70930a43577d47c14781739890e7d003918c00b98be00d397662d25035260c59589b7a2ec826ae3e5ffe864b86faf7a02e16b1a6976f069dc1cf8a8704cc5b57884e7161ab632ea96c39db894cc0f73af930f7668b3fc047df49a6390e64f5edcb03567a5144bce669dabc3c8911fcdae64114a80258ce2608ff1aa51f9563f4ae1aa51203bee86e8fff29f896a2f1a6080aaf40acac29a647219aa41c258bc08d0304282774d22dc96f483911bc56162d3ca8cc80caf9875f10a735aaa35a34f768168e66a33fcf6621502572a862ea1d9c443ca39b36fb4c79bd2abfef7b31a629904c6013b0901868ffe6d321963ea833b00705b4ca010876e130ee1c1ac09913cdb34dfd0127b5376108171f64125874c47cdcce65c2d90afe51c584ba3686ce825097903248bb5f3ae001b6bc866f8d835c77799a7e39f1bca98349f31de81f96c2c0fc8e41ea98c76ad8770994e78b09c6e5830fc2e9833524178ced07078cf5170f8ceb8b0fc6e02b67780036fe522367efccff230682381bbb17bfd73e6eecc637eee41ac7def727601678308dffcf7314617b456c286eb9597ba0171b3be20ba8a94057c3b12baf4f392fec1601b763c13e9ca2dfaca4b132ad2ba2a8b25bec7f40c455327e70ca0925b6140fd57beec7db42e0b0a5f1d96add0b72b51cb8d5c86362c71ea576098baf95d7fd89c1a81110069b8557e2bc5ea49aa460327ce60ccc55720a37ea6dd069d9aa0c539e270f377f14a81814b2aef74e47ee13f9d47e5cfc1c0fcf34c3f090c4534097ab06029b54b38ee3e1628dba0a5858764750ef5524ad01e9a5f85e498acbb052ddee7bfe9ee642f1390e77b9bb5af7a1116b02890cfceaa919ba8d0396547c76e8341e300a789cbd839fe31718e7b55ba02271225beafa42a665f63c82167734d607679520289e1c76b10e781f272756c35844740499636871601e393d92441e84e211c845c931bbf28798289cb6577c47de4feb97c0d5fb6a47d4e79a52c9c77e92d47b5401b0dcbf068f190b4553dd480e9a39232b4565301bcbcc9ba95060788b376d04325a953531fb82753035100fe23e1bfe1a08a2403cf20530700b551d51b0e8965486cb38a9fb46a17209a89ce8080d2233cc1ff4b91954878366c2316848815062aa821009996c5503c13da641e906f060b23040b1d7fc91257ee07bf79554c2ec6e8c04ff3b78c4cadaa7ecb28d122278c2e7a4117795b1c965efad12b9f25880633bfff98e06c07aef342d3a516639c6ae05adbd5f7510f4683b7045a0873c144ad832c4e0000842d9ab18c0ea9f392ca0836ef2635cb45e4b9dd095adbffe620033907f75e51a7321f44671af4ee766b2293f1feda40fe2f027788a3e1085bdc85914269080afffa733d3533684535801e8831db954a59929d6fcb8ac00b29585fc91763c7942cbcc7f1adcba35b19ae6c88b39fac345481a537b022557964592676c2cd891ae0b4345c6134ff534664e53d4ab9c2985e04b41124a4b6582e7e2a81e644f97571888d15ca1819cb0645e95321686e6fb2460d1f8aa0554b43fa28cf2a497a6e9942ace3b65714ae1c76dc6d87fae8111d2a37444e0c5a75841729e126c93c1580883b2b694e3b308d0d6e1089b4d2b99a25619ed8e54a759564dc7a949c241bdb75b9cf760c230fed5c7857874d75ae15511773b9249d248cce047cb2ff2169352d6f687752243292633d3d534a2c6097c7352bc4585f8e17951be5f47e6606bacf27266fb6ddfab1cca42a523d56369b0825d0a931b944a908381ca20b06ad68554b6de6941b1454ebc369b2c6f8476e6986579729de6c233b6e5dc2ed0825d83252c001ff526173729c4b78ab658c64260656bed544186d9dcf7fa825e83d67a9ed79d9bbe6ac9bb27f6fab706bb111b6b033853ce2951f02322fcb9d8ab95631b42e069c2a2cc82e88d9f3e5539b421d3e2fdc0dd292ca40f3d496e2685d9c892281397a36833c8b12133be908bbf527fc98b711c3634ab4555f0f8ad01501d0fc0b3bcca77bfc070a17b919149ea53f603cbe326a9e4200ad6a15a937f57b6a5e12e7734fd01eb2bfa9aa712af5efab33a80e004e6c145801889a6c1ae19e0730922fc3113df61ade48cf0208ce6128993a6a54c12b9f17e034c454e521f2a3385252fc5b6e5a226cc7081ccf2f1246319dec9dc13e074cd7291cc7af12a1d36355b0d7b8cbc9d0ee55bfd68a7cd1e06346f7d56dcb77cde1dac6f5ca1b009c5baf570f2a20688add226aacd012ee4384c28fdd38f4d3e2d7da444cf460988791468051d9e6eb29d5f009a35e7815b3c9227fa38e38f9b126680d5073b48f53af6772f071c9b6c27acdba63b2941ff0c77127cba66ac0ec3e97518518062f05754de5d0eec1a14e6c35eddcd59e787ae2f33d4964f9240b050c0d0f67d963b622f0b7fe472194a8c1c5249e67bfce0fcf9c99a71b9137f88448b8ddaed5062f02876f2c4d49bdb6796098d2b137bf4a1a640a47e97dc79246fda2c1ac4c516104e298c0f36b5daf5771b230099ec6b3575a60b6d40f6d65383059c3348474343b53226249beb80a04ee5e95cb80baed911fabefb2d9a8c5c7d24c7140811761da15d13cbe86109a4a5bf4ad9b0364cc54e40fdd03ed7cfdc530a1a0ef7240afd4ab0e8091fe0ef2a9a5ac0cc48e53d77e1d554e582e6f9a820e3c258c433c9b4cc33d92c3ab81c25b18fec76bbc49fb2c2f4836c339421cd1890bec9df55cd24016513241f76ebda1a892765deb834f22abc02a8a6d878a4b43a795fe2568df28b32eb9decd967b6ebf3ab79b4b4abf534887918476b3bdc677035a3dbb476ea92fd7166433e79d5ff40eb4620533f394fdfe042f43a7030f7b30cfb3e8b4d24821245e4194e60e7a40c592d2d673ea218da54a071631d76d16c8ffa7c53ea950e578daa119d172d67df32a29202e6c66171c02c28889ce65945290dbb7af307ea84c5a5ab0cce4b0c19709793b1c0eb0bd46d93f4f47bc5ccb4b1f01b0a1657115361e97a73723604d77e602402f4608c54a8803961271aa42e18661701627af0bcfb2abe87a3e157efcfe0b33c8dea78d118985960a7edaf88bb114ad755b01962b2624db07444fe9f73c126cf6aeaa05fd2c4846e670a846c38dc2a909a9a8f8c594a997607640a0571b0a9527b81b8e9b5baa04664e7f55ec6127c00d0a8bfc2df0ee60e67e39f819f9de4e3dd38859794603c1d201c88477af6135e07e6201f7d1bff6643af17023cedb9ef74da057c2c905d901d6caf2bbbd64b04016decd6932e331bc372188fe1f8b51dc6f052eb246be936935b25c4260d9a323069cb25b9a8b80e01ba1efdcb2fa6a7622b24cea8f97136da60ce9e5520f88e19c3027f4d38df443ec8437a0b63b6b6f6ba232e4f5bda1ab9d35aa6b6d65ab5c35abeb760ab851b9e6871c1fc40faf0570b930d997ca3c43863641d46a66e1f5081481af41fc975ca9b4ef29a7fd9d2a6678948d8c9682920e543d9f14aae2765541e4589266c4cd337741c09f02f5b32d2091b420ff8cdef33430f49a3119e80637d043612c982ad829e61c298a261b0ebf9ecaa0211373a2c8c790e11d003719eb9a26796a2a4f20a29e465896be06309f272ae13ce11f7681e7ce78e53052eb6ef3a4a31f4e869d58f47a29f8d8fb41fe9d98e5d6b1befba91c8e0a38e8cd6aec368d6ef095c9add6bb414b189ed1ddd7146a47297e3d3f1cc21580ded4c26f838229b568e60c76a65928286d52844c435cf3f0a817b6c6eaac6a9259507191ed8886e080e0b5ad04d975a208d276e97c793bb1eae3abbda4ae0fb4ccce2ecb367384b2abe1a1d6d011525b11f88d4f89fbf0a69b0113660fbcf95587c68577e195cde67922cf81e25ce14b42a471e22e8a62d70c62be4a2d27c4c3298c1d41c1d0c8d2dfef26ccd7b7932307e4afa3c4487e1d51717530892b838e7f848a47fe5527b032bd9b824086187e429a3b5348d61d36cbfe5ad7888fc36a34fb0be46e4a0dbfad73e0efe62e9208ca1aae125d7814d6f513769740057565f95bd02e5bbb8414e0776a602de1096a5886e1d63e5034b0b01380703e7c08c4bba1d4971d21ad556baea3305a5315d097f16fd45da5b4eb792b910452b4f3157035edc4e414e8af2df66628398e1c216151252674724edff4f272b6185be1491d6dbf544798a12325eb498ae67fac5cb1312a5b64e169b48387f2110578852bc73548861d952e4fc14c0d6179b52156f7d24045a5d314223c6a4ae1e41635b0376e08232371218e45eaa00aecf1b07a24b8cd996f79ee0fb86e4a6c253dbcbf0484644bf50b27146cc2cc6d0d0e6a0257010eca3c87a920ab36ce1ef4373e06320cc2d71ef31367161556b65f92130a7c8c07f694a5072181ea37da12be72e037d8746e6a6ab042932601b7c7846baf0f9a234092beeefbeb170662875fc11cb0d5e1950ddcd2bdee727705e0f51a0e1273ca0a212b4ee6970ea5196981b8e55c119e4f0a7c9d53facd12209c14d1f7fab56408fa43471fab5f5216ee3010ea044213ca9c426e127a8b4c41d0719ed2409b20ab24972a5fcb4c67f93c2717dc7242a7c20dc3ec948e343a871f8efe75e481d2bcb8f985293861128e60a64a3181eb3fccf63e444297e7eee6c38c07298daa5ce641258477353394e98b98c5ffe001f7238769435e2b706bc69cacb4fa04f0739dd0e9ebe5114027a01ff590462968c5ae0256ddc26139c8d24346078326d07cc4081765687423f46d028cf733f4f9a80a9e83b8b6eb60909f29aeda4fe7a83d7686a57a517ed473a48593034a7055908cfeb0877b38c769683c425ca4d5cf90759545a6d550a4f008fa3405930a524aad3af260209ee3f5207a8750cae63accc88b3958da9da8758e828368af9345b50c79fd2d4a392d42626a7b6347e4458f50eadba9a19695e618e6af6b06a8a3c4672abdceb52b86915c445c60f33ffe56d4d1485896adfdeb80b119b7f33788d8b0f30e416f9249b6ce17f39e8a9568f2b00f9e525d304bbd1c2c9b2c43a91af2f82eed019959cadfe13502f9d22c71e0b36528cc89ad1ac3e46929ba43d4443040d4f672d7833a2f00160b8eada5274f6fe7627939ad6b4fc34d8228b3f6ef8d18d9c3e1d2856287a699083d5842936182a4c822d787e91ec5e5bf8a5bed1893b2642f42668a3d38e504faeb2afa9fa08b4b3205a350f6502132850b8dbd1b88052f661b5f27da596e64a4114bfc846176fdbf70f55d27e1549073cc15296b19498d20d41d035927210b2578439cb42429a8b0f9bca2301778115691c8683686c3207928ab159588acd7f16cb239e427b98939a8f2671f4acc2cabb3662abdbcbfe4765fd7ea4a58d585155c9538326d42f03bd0d0d6350245948a1815315d62549f5ef9f84c611ed27552769b476fde0f4f241730191e6fbf5f130210d4c858554526b473a9ae4862ba037581dcafe38484cc286776be32a589386e41e92f9aa8483d5d9ce9ec54faad8f0b945978d1cfa2f13aea7fa3194ace68c5b8507eec8f4903c0bd2e8a8e6188b5f492172898441b0998f7f96f67097948587d473027f9182bcba9893d975366444d74ec643ea560cbf0ef766977a08cc8ce850873812d6258818e597c734a223c5b511d648ca4558a132efe9f10baad2bf1df48239e31fdd6400f703a73ee674e736de54f5b78620701b200d0c59dc92c44a1e9846a1b6331ed29a0a94d8a6e00a52567ed707fe16c5479018c8e029dfc038ab3e860f05166f2758a98dcda180508bd6406f53e65fb13625cb42f4495546bd53b0a7b09442475672f2f14b859f300f24d0032446f782a6fb02042806253b8c7ee24a06a72f4ff481b042474b44c3c8f8088256af68881e7d23ed7230f517af286e117c701860781e6dc8ce8d8e442a67989346d6e275b783f3a25832b52ec242a9d5b1a61f5efe03370415c7520ef612930d0d26499186720528fbf8babde5ae122dabd5fbfb50008d3e1d1617dabe9030699b135723e6f7b0e2a321fdb911b3f52e60dadd2629c13166beac34e7648394a9b287b02b1df91c8dc194005651c3a87c844030c26871d523cccded8c021e29841b0b3220b224e9003ffcf0c30fbc73eed5b7ad71db1aa5b4f677925212aa0c19be9c4c49a694524a1634eb37db5ab3f603f08fc2016f0ae80ab50ae67d317b9e7f0de86f8de7f9f44b0b4dab01d9bad487070ffe62db6940ede9ba58bf5a98c6190dafd6f5cda2ac7c06949acb25ee2b4b6b19630664b057ae5b695b0664ff460d1bb9176d4506f4af8aab9393aee59831a0e7e55d6cf1c6b4d51403daf435bd4edfe9f51306948c9ace31be9cc555c180b6cd3699a1326e1b7e012df65d868f1da512cf79012dc9139e35ed2e20e5499b77a97765ad766e70016d1ab30b274f9bce9c2da04bcbad65f95bd5722da0c585c86a71bf39ab9f05e4bb9c39dd2bc74db5b080d4c2bee0b5a21bc5a6ae809635e365bc6a9fda6a05b46c8e2dbc6f09d7aa2a2033c5cb5e3aac1e4d910ac8cd17f72fa9e6f8fa5b03f533266b344b5dbda7706e4baef7e5570a881754bd8cfaad326d76230ac88c5fbd255dbfa865b11ae4c891238761c40d28a09378bdf49a673e83ff04b4666c9d05ad4f99e4eb8613d2f46e3127915713d062696d69dbd50d26a074da586d7ba6ab4de9c612d0b9b3a9d7ff949bb39e0ca470415b7a3e5ded5147c64a667e694f0bfd18480d9b5dbfccf9e7aa630cd489c76c151f3eac4e1703d967ae956f92f2266662a0f5a8562f2e553b0779186869b675afe2c5e8722c0c9467e96b5321eab1713050fa4b5b3fcbed32a70c30d02f8977545ab564229a5f20368acfea6b3c4665942f901a9be922b229f35ea0746c5d066f4965a6961748f16d496bfaccba4abb40eb6cb15fd42c5b69a52e101a2eb9c6a4eb3378b940697c6ac153636396212e90ada68499fc4cc25bb74027adfd5fd48f9775b60532f5a6777fd96c79570b8468322dcbae42b5ac460bc44919a527259ea366360bb4ccfadc625add8f966471965b4c32cee76f2316689d4d09551effe5751616084f62d237ff5dc5a78f096cbc029dc593ed6212592137da70054253b82a9925131a6cb40299a7ee35ab64d4fd2d5620c4b4502dbd94cb60631528e559cbe9557f9695ab63e0297e02344a483a0e3654b1d4e1b3189b759d41828d54589e346c76749b0ff2ae1edcc5685278b79cc5518192a9aa3ecb4f75c1c629907daba362b3740d364c813aefd8a29639abd40e4760a314881bfbd7d7ee327593839033427410220317a0d820058e02edd2ff7614bd516c8802b9e14e8bd1c5968d5020f5e62ad5f2c279966fa9021ba0c01c98363e816cb9775e7493d4c1333bb5e1096426f132eb7ef975eddf099436b5d105dd2ceaf0399c40471fbb557ef326503a5ba5d22fb952ea524d20ccb5342e5fde474d792650a2f965cdc22a8f973f9840abcf9c6fb3299af39740cb1c717956eac9876d09a4f6cb92e67b611d9e86c98ea741490c42ceb051099472ad5b4ea704324bdea5ea45ad9173990432bd6bf947fc94695f124861bb29b5d8fce8ea2381fecea27b4b3f2490fde2b6ae2c3d027dae53cb4aeacb116851bde929d33aee7a562390abd16bc5051723d0a999eab57bb4913d2d025d32e634997a4fa6a40894e7bf2c67dbc22a6d22d049ee69b1dfb3a86f7544a055bcce9a2dfbc8f787407967ab4ed5ebb1e6630874342fcf152afbc5a84220b7a3f819f593ab6513022dbe22b79b2654f983404b1db3a7461716c4c264924d20d0b7f542fb5440a04599bc74eaadd33ccd1f509f95bf98fed7d6be7e40272d9bf75f6b5efa7d40f9d8ce669359692d49f980fe1cff7a47f45de37b406b6a5916959bd4f2edd403624c9fcb2964cc034acf36fbe7a8c3036a5f66256358cf1d90e7a6332f49d5d3253b20d46470c164348bdf581d1027639271dbf4eccfb44107949950ef3fa97c4e4f36e680fc1ca35eeaf6ebe5724069d31f554773b95feee38076312ad5dae2a5666438a03d3eb3245f54a73ed737a0f7566dbbb49b0d37a48d3620674bb5522feb7fe9946cb0012dad3671d9946b0de878f97c546cb7768eab01d91adec5ce5357889e06e49a6af17416555d8c1b0d48d110cd3591cf8014fa59686d8c3bfaa219d0c2f4ed748c3955b05106947c1dedc63e269d31890cc8fc294b7e5ee675bbc6808c1b5c966e4ab91c632f06c4dfea56623a8bb5518501e5d28a2699f5b4655cc080d2395529dd18ff024acb0c8f323fabb8d3bd803a2dcf5b9dd85d40e9735d9a5f4afaaab880965f632a5db9b7d0760b08f74fe5cacbb42ce26b01f5ade1abfb374badd32c20d75cf5b39cc202fa4cc86af230937fc22b203e34acebf853cab4242ba0de6c75da4fe951d55540ea69326d1aef4ba67684cfd0061550ca25f9fdeadd146cac815c75ea93cbc2a676d5a461630aa8cff8ad159fa5b82ae97192927aa030a29c91041b5240cb729b562fcb62da8c7317e14730bb470f6c44c10614106652c99796315ea84b498f3e818d27207c7368f96ad1567b7102d2755fcb71f17a765e9a8010531a5b5e6932cb7e1b4c408f6d1643c50557d9dec61290656a5debd659c940a7fe6e2103a965d136793451fd98740cb4b49f735e97ea5e86c91848f116bde44c3e5fe3c540c6139b9b54c90e2feb10032d7d7cb173f2a5d3668681127fabd5ae4eaf55ad30109fdab56e61bcd4633618e8e0a5bfb528f55e76050662dffcb4dcdfb267aabf40adbf3e259e545fa034b72856686cfdb017885ff57246ddd17363e405da5d7257a3e1cec7e57681d08eaa59a5da165f922ed04a8bef0f119d557a2ed0aa4fbe6c2dc327f1e1022d5f5aecb831c31b51297ea2502a3afce44b1e8dcb1d94710b94ccdf0b2bdf3c6c4b95121392c5326c81ccab4dcec48a9d6b6b81d8dd32a962441d4e92ce0bcaa0057aec36c56b6799b37ee959a084c61c36d3ecd75bdfb240c9957163decc6b72d3cb32a3342def7bb6618170c994e7f24d2b6edb7e0562b3a6d6669fc517be6c57a0549dceee9e595a8172e9df7598bd98cdc30ae4c94e7b3a6ed7aabc0ab4cc28c345ef967aa25205ea5cdcbad5ace57af8a402b97265781c6f6d6a6654a0bf4d5f7b53ff2517730aa4ae6b964c6bf572d632054aacdeef4da3e22ad652a0e6a37e31cbae19aa4652a05dfb3b5bb52b6314876d766fc985575a44a18b5f530f0f2fab5c43c1768a97858de7a283c4532a77953240818c7aa3d2ecf66a7a5c9f400aedd7b4f9d95ecc9ec05b521ff366b33bb15c192fd9896a38817679e7f105cd26d0e95ee6b027b5f84a969a40c792f796d32b13c8ec77e9d298d0046560e2d37a39ddcb7209a44bab9fb4bb38df598b25965f3c1dee5209676530d927f2d1a7845acb69277b4ebd9f44fa572b6136ab3246972474f132d4e56759b622e16fce5e1a5eb57f9f20a1682675b6dbe2499b1eb190fbec4e32a79b1cb1b2d37ef1f1469c1e733e97166446a8842bd9d25f5a35da5904ea2bfa62cb2d675b1148a945e56b3a9acc5ac78938748566fe3c7b3288583b7aacfa0c6eef21563ac7cdda6de7929e864067ebbd2b99c93ee32c44df82bafe1ca3590c8f10c8ded22763d48568b804650ce2a4d4e997e3c6bc9715c462d6ac8c402056ebacb5662da66b695b19804098d8ac342af71865962de30fa8978d523ebed82d6f5e861f902fb3f4797d54ea0e261494d10784e616f36bf4bb5ed84c8a32f880945d4aaff4f8e1bc4f89b528630f887de9a3b8469d51ac7484cfb8a20c3da0c7c378385dbb9e0d524a484c78ac924b18f0a022005694910774b7b43bab29d73594810794cedab2ecb29c3dafee8016b55cbe1dd0e165ca0febdd2b5e3c1065d401ada74fc919977fd572e8806c2d987e9736cb95d97e28630ee8efcf3f171a1512ba06ba94dd77cc6d78599c025a44bbe52cde25f19a91025a161b5d54918d97f328205e96333f9a10cf820d0564e7e4c2a7d63279739f80769352be6cf07d51ee0464c9cbd90edf6d79a34d409eeed3515d068409cb6f695e463ff7e451729f0082bdac59a7b6b86532d04a99777bfab33d352203a17954c77dbc78e7e131d0b26769aa9bc7653979c6408b5a4715035d1a34eb9e92a16a22065acb72bac59c5e4b9f63237c6a9ca4943c0f7f0192e06318e95ca92961203dbbbbcb1ca31ef4130cb4e82ef5a46f9633ba808134f91a3d27a9e56f384fec031fbf28f9f0c5e5e8053a67b3afd6ed32f2c10bb460b6617f5ebc70b9d6527cec02ad39cb2643f1a10b648b3b19b3a8a56d14a78f5c5c0e940f5c20c793d24aaa1a8fee9260f1710bb44eb2d367322d5b20dcb3f35aa0b4ec6f2fcbe4d2fbc7b4409a66dd9c2f667e2d7c1fb3585e955697c3c9235c62628677777777677706c0880f59d8e6a9c2c4a7d5e2101ba460ada02406ca97f888055a141adfc9743b7c9ae40316e8efda518d7a054a7dbe98174c4f96aead8b0f5720357553a87c598953f521323e5a81f8cda4656cd3c1c38a89f1c10a9467596bd3f15d607cac02e9316bfdf397a4764d9bcd6afee24315d67fd627ed5c34111fa9406d86396fd94313f0e10315e8d67de24ebd4b7c9c029d65d66874aff7245717b4e2c314e83c57532eea54aeb1d4633101bbe0a314e8d672d47df2a9bbf134c26748814c2dea34dbfdf95f6b598c3d62a002517c8c022da5afd22fd546170d1fa240c7acf9ec314bed1e951fa140e6f8324ba9f4eb7197e50314e8f4399e96193b63bcdcc727109af3e207d72c7c6be11e3e3c817ed9175fcc3a759656be76f8e804cad3a54ed2e3e99cb37072029df5cb7029754dc9d66f02ad557bb87c0f6b02e971e325296675c347269059fcf19fadd995fec104c2d74f7652e92bfcc4357c5c029979bbb9dedd2e7fb704faf34ceccbec3e8b47838f4a20b5be78161a5c5cad6caef141893e558a09d75231598a1f9340cb96d474b9a024507aa37e9526f34a2490528b1bb572193c9e2a7ef29514e5256fd2f880043a53b84c329e52bb6bcac723502aff5d96326fecca289e7c3802f5fb62655e93b9217c3402a11fda3ee21a9e4b3cc267ce38c9017ce18311484fb59f6ebc5d7aa17c7f52e16311a8f516c5937039d9466f84af8464592c2141c1b9277c2802ad4dbffc7ea2a3fb3915148482878f44a0755cd23f39eefbf14704322bfd51cb9939dc4957cbf07108b4ef77cb2df79d0f43a06f74f3eeeafa127bf21c3e0a8114cd497bb6ea86b78e10c83fdb55e71a9e765a8340e693974ca6dba84e8b72f81004bac5e7283d631b0894ba177f75c72cfaf9f9860f4020b34aa5a3968bdbe982d26355d02821d9d1983efe80529d85baf8495bf5cc5bf9f0035a630ecff2f66a4ce3317d40ebac74d69c74b96cef237c25ae2e0b1f7c40c68ead7d49db921e470064f8d8035a723166d4a1eefa53317ce80161aadda4fa9752ba76290d540d1f7940d86b575f8f415dcb2de5511a0f489935b15aaabd43daf9bfe50c95890e14c2871d502eaa8e39aad0bad572263a2aeb5c902387890e1cc3471d504a738cad548babc5ec8df0b5009cf04107b47cc6dc1697258d5a6b0b1f734029ddbac6b4560e68596939da787f96596d0cf11107842929b762df67cb7cc3497cc001dd51bdce6b5289fe4b1d497cbc01dd2975d37447e9bae1ca8949243edc803ae9633a75b8d22eec941e3b0c19f1d10664d662eb1b321f2f5e49eb494e6c80880f362055bf785253559e56a935a07d57b45cdd6b9575ab0119f3b896bdf3c5bc4f03e2b35c779426a30165e22e55b3cbc4eb0c885d9763b598523a890d071f6640668cb698de67ce597284af6ff05186f48715ffa227657ae1830c28ef5fd36ed93c8a26752412d563fd097fe1630ca8f9f7d8d26acdc8f91003ba74d2b5cf3e8abf8e3fe1197c8401b1f561fe253d25a3f68cf0c1e0030ceb123aaad3451953a5be80cec9755cfc244dc3e355e2ec830f2ff499846c6e8e91f0d105575c67e1c4ca5f51cf03a5640527870f2ea0c5d8e9f3963afcda6e5e607af0b185e596c5985986717d518e0e93911c39500f1f5a582b57b239e6cf7266842b2526248a764b87c988b661c24716d0b2ab4c2975d5fccbb93f519727002b7c6001a1a2413cb796e50a6869d38db7545acbdae367f8b0023ae7d69d854b7515905929dd1de4a51ecf8e0c1f54406be1da738c59ea79f7d640fcaf8edb99b99bbcdbc2c71450fef6ca5ef43b1deba5850f29a0b32c8fb6162f260a482daa949675cea4e1030a48717daba31a8d1dded2c1c713d0d266cefc5071bae42a061f4e40cbf269497ac7ac5e671ee16b343e9a801ad992526aade2948c237c6ae83046f860025ac7ab45f85842de4806e2b52c6a59ec4f5dbfac113e4464a0a316cfce3b06e29494eba2f929f934de18e855337b1a95146df547f82a25ae50c78d62a063cec5dd6617841bc440494dd74f5b05c59fe4c40678871bc3404b19e64caff87ee796186e0803d92efebb9c4d7acb9a341c6e04032d5c73eb9a6d80815cfddc645a6cf70bb4369d5af8cb51c6d51c1eae377c8118d7eeacc4cb3517a3bd4069f31cb3b698ae1b71103778816cd1b7ef5fccd2956ed90542c554348b3a6aface80b8a10ba4ea97435e6b7923176a4eeaa96eebf536dfe13ce626fb60880d52b0b838f73cbec68be93b799404c18d5ba0e46adaa439d64bc5c516a8f12cb8967d3b9377bc16c8ce1beb7467adc93ca505da5b525d2b7ec775cf59a083eb33b95af7271b1750dc9005ca7c56d76f4b9fb336266ec402a9e9b7b3d2dd2dbcf65725262547881bb040af8ea6cc32a5cc25df0a42ce4841c8195bb8f10ac4a78a57e13a967495bae10aa47a9fdaea74529e076fb402e5729d7e6a3927efdc97ff881d6eb002e5499b72ed5a36d9116fac02dd59f7eb52bb7babe59c5305327fbf8e2ed5950ab474513fbcf6cca96bdd2bdc40055a92d529d75749efa853203f336ee938e5feb2f80d53a04c899ac6cdea851ba5408a8b8d0f8d1f29d0a5ad5af3a78652b8310ab4cb317ec7675970db45815a31a543fbfb50a053de99298f52a040dd8cb7e8826b59e2743e817e494953d24b13851b9e4077d4d1d1245d999aef84a4c710fea462785fb8d10974dde977782db6ca7cb4708313ffc6cfb432dfe6c62690c185598fd9bc26d0b2b23b21267a126e6402f551cf96f8acf56ae9c204ba3668def8d52516eaeeb9f4059525d031e75cc65c8cd2edae044a9cf43425d0d2b33edaaad571b34c029d3a4b32fbbda8697249a0650dd7ba366c22a1bce8e20c098469f474df2ff5f295371e81d4d75aa874f9e208b49419339feaac636c7d23503ad39a96f74a89313d23d051a6ce47755aa3cefb2210ffbb52eedd8a40aadf2c683efdc2d9c61381dad15b9946b5a8b2c48840ea99cc1c95f6d1b7f510c88daaf3f3deac4e264320556d671664838540788c7cab751102a9a392615e4ccbd8f80d029dc4d3ab8aab9c3f19ca0d41a04d775e0ffafd328b5266b81108c4b6e79093590081b8ff8f9352072b63b8f1077496b5251a9e52831b7e406ccc31666c44b785bb0f68b13d3d27758eff72e5036a357ccba39bbbb1077490df4e625a8b6295726282c2c37fa46fe80199a3f9fde5ee9cdfe6113e1e24dc37f280dc1c3eefb3a88cc71f0fe8e8d2296d7a354ee5bf0352bcf096e58c9b93b72c3b20e379d45c775253be55079456aaedd4a96e9746d101e149be8bfed2d44b5a690e48252a6b2e1e631abb1cd01fe65eaeb94b994b8f03da375e70dfd524b596030774ba8eefdf9937a05ecb546aae563527dd808c2fd7d77aceb7739e36a0336c52f5715962bac306d4e98701c95ea971ee95200419485ff32c9f164ca7935a34428e81d420de592e46cd0b428c8194496acceac3eb2b06eae4068f2735d8b8983dc9890d96189d98b65797db41c830107f1aee392969eed114065a734bb2d447650a090632ea382d978e5a464280712edbf8f5613a6a6c846f51b017a5066785fc229d17633e8b5293795a91e8483d644084105fa064ad36174ec3c6ca97121392905ef059d5b5dcd2b5f0029db39d598c597e1728b5bb9755ac8da9af7481ae9725364e56b940cb31bc98eb35b398372e505a5c4b79e6dc0299dd9d3a8bca630bb4745af6e70cde2f9fba16e8ceb625a39d96353f4c0b947af9bc9eb4f42c902ee37acebaad83874616e8e0d193dcd94c2c509e949894597b5fd48505c2d7bda4c63fa5c52c7d05625c7668f8645af4a4ae40b7dc2ecbf2a7dcd8505b817aa551cc6b31975d2a5981b8f3acd9548687d97315681763eedbe4a52ad032dc0593ee52b5b84a054acfbeae319979358d0ab4b89ab1355e96ef1e9e829bdd307d592d083105f237cd64ccbcb965eea540a6f9d2314bb67a79e910525c8e1d21a3b85d149f94a89dd68ff0190d11055aeb79b13379f6d2f61d4242a1230414e83dadb76356db31398d98cb37847c02b5e73abce8c2f304529a7ead5d5e544827509eb512f3935a495962082750e7ff9f3c66cea1ead9045af76d4be78f5990f535814eedba737752fa9a5226d01feff6e5a2d492ac1b1397e3422e81569d9b9a9da1822739b181ad116209d40a53dfd2cea34b325f262979bf4c60a01d520964d21c7a332f3f558f9440db7a49599965dc53a5ca480a09112a3c7a54846062a2837106e74c1a219340f7eb2a35b7494c372709f36a4f3a656b37ad48dc9fbe3aea53f275698e100209b4b4eea6b71e4d6ebf113ebbd613843ce2f059bb76d68ec0c5bb2cd54b7a5adad24132a22a787da709218d40bf9c7bd9fe4e677131237c3a74b8d21214e085300279f2f39cf679391ab20864c68d29342799736e2902b94ae76ff9d59208b41217758fca1644a07e339ed6cb4aa3e7e910c89633bebcb14c63cada102873e9655ca1763acb4220b5729795a9a5faf2961048b562c3ecaa95d95d8340cbdbd86acdd5b3838240ca3fcd2a3e6396654f03813ce55b52bee67a590102b5f7628c413caaece6fe80945a16655327f15f2a0bf1034a35e6a9eabe5a2993217d40cb9fb57314e7722e11c207646c995f966d37f729ed4c22640f087b599817ced4c8bb3ee48c4984e801f9b639cbeb594ce601e5aeb3d81eaa3c739321784098cee27ec7d4c421e40e48e949c638cda494777f08b10372c6f3da67ba2c49db7e49155207946ea57de5847ea7b63c08a1036ab445fdae549cb84fdfd20b217340a9f867ca9cb64f5123690e200d217240672d4f262d96d2adbfc744849ce568fe0207d46a196516fa82cf68aa078fc41e84bc011d46f7a3ce78c28466dd80cc52d3fdbafae69a69034acbdd1e5fcbea5dcc516c402bcd9fe3bd4af9533a6b40ae92da519f8ceb9b1f35204f799633fc7c169aee342093d76c925996e52cc4460352e45bcbb19b332063adf97f72974d523603faa4e6d46ae55a06a46bd73bedda697a75216440a9e9ae563ad59fd0d618d0f77d5a6ab45b3d2d250694d0f78c5ac45ced2b8501a5f529cdb331d3868b83012dbd1c3b4bdd0ffbcdf902ea8553575532b9abaf2011e205c49696f2726ad905648cabaecc2e6b44462ea0dfb54c3fb9897669215b40ab9231e9a4555a40e8cb71aea33cade3f92c204cb6d46abd5c584096d9ab8ccae597596bae607f3ea1496b6cfa5207215640a8466fbd2fbebe46ab80dca4544b56bc102aa03cc62cdfb3cbb206327776b2f95ecb1032058496d6b6498b99846dce762042a480ee977a2fe6fcfa66f369f42042a260daac49ab9917a18096b4acf57dd9548f03f644c81390eacdc7dceb74e7538638015952af6b31bcce081f4a6e21a409e8f4b4d9f5fe8852086182f9f71b6ba536852c012d8fce77cb3a012419e8135f918196daafa556cd31d0a294e9925e2d5bff4b1063205e4c73e5d13377fb6dc400520ce4aacd5a8b31c78c79831a071062204db5163f7fececc41b06425d4ba5b49c4f295db6304ee6eefe396d3018a87badefac435e2b19050ce487fd4cae9567e945651b407e817c957d51691627b74d9709c4174825859cecee17905ea05ed02e4d9b46e101c20b646cd54df92d687e00b28bcb9103105da0b57caeda01482e902aeb37e55d8e9beac30552c998dfb56ecce914416e81d2bea55b4c275e874d95a4902c0d406c81d08fe7a55f63d2f95920b540a7cb2b5feed3624a40689168009905eabfb3ea2ccbd26673c72a82c94a1980c802b5267d837ec7c402e12fc9fd2cff6f8c3a29fb00020bc46c7b09719d05054f1220af407ea756a23d1befd4e40ab4e8add6d675bdebbb2f01d20ac4c6666b35faf2b678b302f9f29227e1a22c7d510cb20ad486a76e09cfd2cc6920aa4068fc6bd95a29e169554580a402295bce935a9ad31c97558103082ad062b6a56b3ddde20bcf290eeeae441053205fdae79627f59ecbc2fd034829905a353fa776a9a3d41b2950361ba3b72cadb9dd330a64361d4f2d79a917fcaba090e4c851f11c394cf7a2a0808802e9da452d44339050a07567a83ed52e93a7cc085fe54b4c0e5900020ad47dec767943652acdf81a063ca88400e41308b72f4f8e1c7e725282129cf404d264cbe1e56ff76cea837402e562702d55c9127fbb9e3180700225b33f46f1b5f163676e00d9043a35aacfafd41ffc5f03882690fa3aac4c72675765ac034826109eb763b27d39b324f6338060021d57b56ff39bccb33940805c02edf137bece96e67d2d104ba03f7a56b1e9e5bfd8b26e0e2095a004d2f594f2fc322d5d8e751e402681ccefc2b8a8baf84a5f12883be526e3ac1f09a4aed42fe752b8b9d28204ba5ed7b4eecfa6ba528f402b0deaa2ee67594c9d1c812ed3a4348bdf1b4e4e8d40886efcf4771fff5e9a11282ff597f163168118d570b995edff67ab089496b15c96a9f38a7e341128a159381db37ad25d9e16401081141a4bb3e9ec5a8e4f5501e410682973afd6e1859da91ec4107fbed11ccba4d4aba506904220336fd6b6d892694b2d84406b975d96443f1b04e2de63f867adb1bb7541a0eda5279d73b203817cbf1917d72f6a970d20503aa5bcb85fda3f20854bfe62c3a77e409fc996cd31a74dabc93ea09387acbada567d3ae30352696aade3b77652d9d903e23b47d5e44a0f28b55accf6791f5d899d07947894ade239a6cd15e30131afe5b48f47e1b6e21dd0bdaa3707f7558f497640c7dc3cb593221ea392fa34ce0f207540e89df4929dc5fd3d0f840e68ad650e13558f5a55069903f2e6d93673f2f4319c022207747decdc52bc504a7e4121d9b106481cd0ea5d32d31bd52070406b96352adf3d0ddf315725266a6fc4bc01b932a97e8ff1faae591640dc808e25779f4a67a70bf21540da80de7d51492d73ae464da700c206f4787ac70a206b40ccfdeb9f175d7516cf91c308206a509034a043435469f0d1808e4d9f4e956b2e25730674d2f7382a563320376730a545b1ba54b794019dddf379f70b1996f3d1c51c2603c81890cae5c66d593120b556d253e78f29cbfc30a04c9af68b7deeaeb607035a36b5ffe8da7f01b1fee15acea2a8b8dd0be8184b8e897ded726e571790596e07d719535c40ebd6a73ec73d6d01b9a19dea25296bb7252d206485cbfed99ce6e99305b4fecf345d7959fc7cb0c07c965ea66631e70ac88f2edac9b065b6eab602da5ccbb1846d96598b5701693a67d97d53a602522765aa7f0e283a3c99e840c303ff800e0400a592f2689c78ca033e006072580e3e03a051e23a940d22fc49fa1d262a700007d6c6ed2e7af2cf066ca8a12365040d92120f588eec1c8743a5a0f438298000d4481e6040005012d00314121ece80008c02000000c0031600282829070104508000788a2f93931c0700c0002e908047f154a9e4c8e129be72d8200629282300275f1182f214944ae5010010401e20e551e41007a427a1733a7c86033a4bfd5c175c69e1ad95fc222142a794ac40052130e30d485bb926a3b0cdb4526e40b96b5d15553fdf49462a263a524a5670024d29211981196d4880196c4880196b40c92bedb266f982a2860398910664da969964a7aab7ec8edfc13b7e8731030de8e0490acfbcb2f9363b7ec79a71860498610635789401bd1f22df9bebdb273b1941d1410674cea89399d41cbdc3a46304c52b95b32230630ca8d7d42566eb495b7847f85a478f1d090233c49024150498110674ce82bf4c2e6ccce3dd08375e0fbc1d7fb2d4f34039370333c08016febab564942f931d5f4047b5599616556bb36a47f89224250d92d5a352396990ac1e9a524292282524296c861778ec503b7e8701cce80222c00c2e6c414d4a09498f450b5928719255f2a9b2c304036660018d2f510c30e30a2743b0828e1e3baa4085b5bcc2630d0a98318593450a1330230a27434081828e1e3b9e907aa038612d5f80194d28c10398c18492cafa931293920898b104b3980cb3880c943b860ed5e32b278b314a2acb644725454140a418c863a938408418c328a9945474f4d881e2001161945476901421b9044482a1cb6447562a131001068a5340e4171522f88906447c91425242d28bc5048d12921312e705568c503149a93c0a899f4c4064170910d1058f227c25176b392e74a48500915b94d8a2a4a223adca02446a5152e16162a2836447034468f125261514920a1e8f651686074a0f92924f26274b04446461625142c2001158181e4bc5d428c22bcc08666a14410222aec04380482b94c75261454591ec304931d1a1d45013105985e1b15474f4d871001155e0f1582aa9585490a0f01880c8294c8100915228112a273f92e268644084143a0a14458a8e1e3b4281a2038d0a82023f819ec04e20271001229b404d602624208209bc045aa208dad900914aa0034428819340495c0a2a25240f1089c4a15129698008248c5041e95142b2a3f288c5114b84caf36884118c50512355d220590910618459acac06882c6215a144888048225274f4d881884a8a8e250222874843071a95141d3d76184287f718c257504824205208088810c201228328c98a1aa9a2a3c70e078808622d5f0e100944e5c4a452011140a41e280b10f9c35ade00113face50b10e9038fa592723204940388f08107951b5840640f253d2420a2070888e4a1448d141e152b4103c50122785880c81d743840c40e6bf90244ea3001113a7c09c9b278c52425022273e0b15474b83239e141a2fea401227228719264a29c05954325263680c10a6220830b88c4c1e4e48d5041213980081cb4b3b24c7654d0f812c5009137a0f125aa723c2a29283a120344dca0a3c70e0588b4a1a4925262b2a3a2d69f2c40840d68f7b7f1fbf439477dad45010d423e450d13ac0121abe6d3cb2dded5071792119483c2c3a462226a40ad0bb22db52aa5b52d711d32f86502834e9134b0e9dec3b5e3bd6387e7d0800cbbf3a2967a300f1b39889c015926aa34297147f82aabc42b151d8eb9041133205fa6bd3cab96889401a15a6352cdfb8a9001a99a3379b6acaee33408226340694cf9da6363ff213cd241440c68d72d67c7ee645e2a35c22829279e82120694d0ddf05ad6eebd5f9d9889081850ba2e69dcce668bbe2a31d9b1c344e589c817f4ed6e699b37344afca49222e205b46c7bab99d8cf8b2ab913e9024a6e773e1dd94dcf08792390a0f40891810b42d4e300063972a0800621a73e8d633821c205b4a7dc9f72615eb7f49c11d982881644b2806cdbfef9ea96df9492dff127aa84844b2004ff1cb01244b08074515eb4dfb2d38d1a912b9cd6f755792ab55509114c7488580145aa8092a5954c1995ae40840ac8329915b7ade5eb57640db4164ed66b4ee7f85c45a680ccf1bebd744b45a4b06d8b66b39995fb701ebb6579d74deae1b5c281481410f2ad54df5f98f2d746f8564909960814d0c2874957230a449e804eea674af6870baa5235883801b91eff53db2bd20465ece9283cff07459880ee6f4db3f797f365f805224b30ed4d3d7dd472f15adb784ab633d028a1418e1c7f624283f691337ce48c1c397c44f988aaac123fc1910ca4c99c856874255ec64706f2eb4f5f92393d065a96cb41954b9d857dcb18c852da2d4beae79faf2a063a273b9d7c4bc440b7f849b6cbafa51b171f06fab5e58bb15c5d4fedc240ad4af9a81de3ca387b30d02727c6458d3930d0c94c0ad92c78782def5f204c7a7cb8d8b83abded0bc4da990bde31b698a3dd0b74cb5e9bef9879817499590eab4ad5b6cbbb40aa3d15e3adf775ab46170b2755eba02e687281ce2e69332e63cbd8e302799bc4be79d65ad5bdb7400b2eb69cd8870f972dd0a2c9cf64566d994cad05528aaf964eccb4f0525aa073d2afb22e3b5cca7216882f99d3c55475f62f280bd479eb2cd5cb261668b17bd1175558a03b7ebc97afc244e67b053ae9fafd184dc9cc8d2bd0e14c46b59873aacbb602b569b5c4790c2ff53313e060053a9ca92d1de3fd3ffe55a0cf6354fff2fb5c834a15e8d23819d53b97d96b2ad082bba8dcbbb32a2dc70fe040054a7bdd4dea3c7232bc9c02a1f9c9f3b87cbfe95d4c81be51255de5c6cfc62f05ba5d6b9bd4ca637299450a64d89b175c5fce1963d428906a950cf997536b67110532e6ac3bb99c94fbb9a45020666376f9dc45a9bd275020b65b3897f4d50addd3275052c6ef7b518c7889dd134893d171e959525552ef047a3363f0eefe18ee3ee75827b334d362ce2690e1ff5f997e69ddd3a309d4ca24347a8c7a55659c09f48bed78b95d56f9174ca06f5d18977f56b5a4bf043a9c94e9b353f6736f2c817ea15efb4a55b9a74c2590f19ab95ace319440edb828b5b9b4da4dde49a0b546cb5f67d562d72a09d4e62ce7b94f19097496f2159ef726564c48205c4efdfac5f4a86bb947a0c434d44b6be708d4bf2cb9289faa5dcb6a04e2574ddfa5fd7f3c3102755eb719de25533a470438169186431168b133a64677fb5f4c5afe3480048e44a0e36acb2a6c5daa2ded44063972a01845e04004522b937166c43e99cb0f8110f71ed7bd9759eada104831672fcd6a2955b50a819e3fd7c2471d1302ad29e3f3cbdbd498832ba8018f1eeb4f9023871c700c029db32c9f566d971868127008021db6f476bce3cde38e4609098f187c0ac9490e68f08217e4c8f1e7081c8140c71c7759d23a4d75cb1e3800813c57a625255366d9539a21e0f80332ffdbc9e6fc77bc40d30f88fda8d5e9fc7b4f7a4c12e0e80362e345d32c69ccba94e2e003e294f234f7a5af81630f087f293c6bd99fb24ba8060e3da04eeda6b86c71435fc70838f2806ed9e2694b293d9ed6f180cea2d09371fafb3b9738ee800c3ff3c953d676404b732f294fda5acdb975406bfbf8ba5ea9ce9ae880b453baeb1d455fabc9054f7262034dc13107a4c79997a7251fc45b7240cba76237547a5682230ead3a7da9da2f86034a7907cd9e9fe58c6e7a03da75785aad9e791c6e40867755df8fee2de7b10dc87b5d26daaec50694de589e5a4ce9089f1a26272928bf18d780d61cb52ca8bef0664a5c0492e5a8019df692cafca64a03327dcc74a33fef1938d0a0b9d672b88ab818db19d0b2762dbec978f04d1733a0e5539ee3a98c47f84c2a2c031c65486a5ff9cc95273f40c04106f4ca57ef52c6f808df8909490c708c21f52f5d2a8d5589e1cd9aa5975e96ae30a0d7c75b8e7f7b19e52338c0700e329e337abe709cf71563f35ff29ec2e105f4e8e8dd27b14f5b761790596393d2d2eab0df191a38b880d0ed5ba5aae716d0720e1e7587a77f80430b684156cbf1a7746c679965012d6f799e8e1f3dedf85840261985af9fdfcaa7e90a281d97c3e798a7ca65d60a68e5f3e2a7bce7a43baa29c0510584e8984eaf3fd669760538a880fc5371afc4c9557d710d64d49e1eb57ced3879a7808c3179968b62dc4f935240eba46b5fbe7e2d939628a05fd29773b3d5357c0a05a4ceee2677a9bd3ce385e3098857b5e9c3ed47991d756252f912121d2524aa021c4e406ba9a584a6f6a78a889728c0d1047416dc5e98dc4d9b5465c232bf692d7d1e6f651ae1aba0789fa210702c013572626b4cbbc940beb99ec7018ccba8144fc672712c108903e28040088278769700006313000018141a92c702b150301e68f2f00314800359382a5638301c241c168b86a2b04814080702a160180c0803416130280c108a85339e431d58d7b88d402b5671d1bfd89becb2a3dc8460af7c405e9552488a5eb6bbde7fb88ac885a0370ff90eac4471b47fab23b48a45fa48f5a1ab91c8a5e8efe35f20ab791db086d5a20714e059820e0dcd65b1098361ffc78437d04c4cadf5fdc2a8a03b73662269858cadf8faaa61eb384b08fb7d09c138f79d97ccadaf2c9d6fdbc4ea50ab6e88c7a490cc171bc976d0d56de5d4c441b73c96d7e34b459e67341400f587547fea936e264668e8f3224780ae224b20b44e746d61a6cab810090ddb9f2a5d112db22462335c622ffc1ac087147a69d20529670026ab77ae7dad14cb16831057a410051258363da8089857045b08c19fde1a5240f5b6dff8289b058f777fd7673743b940eb44911dd8a139fa8d3792887fd441b7d9b2b3f4948a4a9671aeef742f23c20380ba6b7b0c0ac56410733de4c4780aeaa944075c8581f0f34fd05a0dd43d9f13d61df5fccad97f0e7db53904e68f585bc589297da24e65202898d370d0aa0166b83bc02e6d08bd199a6b434bdfc7b6e6bb4aad68547d02286425b0f5a15a876ad9c161b95210b75131ee3af18719aa69e2a1599fb21a5082fa909e86dc57c85212ca21d0786946adba36e2aaf09856e94350df21eb82b4c768f50827e33471a7274554774f35a2a1ce39dc8a730ca1dd6a1424372ff538350d1cc4be1bb97e132fff8983be970b6d1dbd1f8568f8d9249ddf1af9c0855de4ebcbbfbfd09b375d3a74aacbeb3faacc6eeab66fbbadf5ebf62652f85bb66f78bb11115c341dd295cb86d02b8098828330bf639322cc7523ac93144275f927883a5eee2fbc6416cd938a72f1aded65eeaa2be33cec64bde7b59b66ba680ac760c279dbd578a5851b7eabd955122f60609b0ee52048dfecd982c20485044b8b6200c6849ccdd1941bc658152dbba63c0882cfc9390c14ec8fac48fea145d7a0540925fe1e1228d50b75f9a2aa2b3b4456a14c476c531a62e26f59dad47017e0902eb5ae0ec968a58e3341c321ac12ebeb0b4f2f1055d9f1e51dad616c6c63b9e646e79a5b203c6a7f9a02c0f0253e90456949b435e967cc721e5f66884f7e1006d03ec07661d0c0b435deca869f8899ade72b22d706ef72ce217de15b674e33d83412eefb10a0a8f380892247fe3f929f003015e34168e47e528e60912dc02ab13588273ce927d73c5fd55b89b9c59f881567ccd2e111d2183c447845230e324db50907e89ae5fb28f898ae087620e436e8fd8fedb79b6a6ce0d2f7a9bd51369612c7b266f08afc98332ba06b7bbeb3e7142f6fb3328e1af48a678d3022d78e8a186de56b9e3d7203e251b7ccca5139ae9071e002d801d2fbb835a83d912fe477bc8911bff62fcfe9a8ebf3f6eeeb992062a50bee29012b9b660c6291f743410ec7f93b7a09e9bff7f8353957dffe337cdd4b10f28f2b1ac5bbee7f16db111ee14f7e10dabf77fa3896cfd71ff224e82217ddc254e7160a35d798bbae778afd5bd40cdb19ebc500c2edb536c620b4d7295d0146a9330d998d362631dd18290a018981c50ac4c7a4bf966a0a0f2ce6ce91cab7b6319c08d42f95d637affe8199f23f0cb2ea114cc8afefecf023f0deb4eb7d850ad195f957e681069baa6bf036ba776eb179400f9e7d66000582543e6be380500efa595c44eff9f4630332e807d1355cd0ef6f8b5eb81f3a0d2b0ce92fa6b975102c0cf288150d90479df13147810a20213046cd05064075004938a928b071c1f15ecb04618c688e112b4106d7a70e773dfa063981820044969524ff55721063251aa02f500d789e62821105c213f00e14511f64d3b6bb0d30082f0c981d33f511a822c6dbcf657b16a382908a31b781e9dec229f26d8ce48cef646cc831964c8e78c1ed793879d8451e4ef257dee2a1e90b1929e0d27c6361ed3bd9f54446f6209fe1d3a7c51680ebf1c3506384b2bd495bfa3793e77f7f0def4fd17862e1ae990cb1b96de1fecd8a6dcd9802d0a51dbd48f731af1cd1dc6ff9bbbcec7d1f8417af683509763a93a053dea8d379ff974bb5a6950f3b0a156851676a75654efceb947ca79838f49f8192e239bd83d81a9e31799f47a979a8febb7500d24046ed047ece9ef002b0c59c15f1c7530fa2cab2520de84915250ce99acb114456c59e730300c02c55f15bb6795c7225bfd8dd7a62dde876a9d870c05d09a05f49223d3f69db2b062fc455ad93fa545bae3e449d64b71bb24c0e605298beb7066cb5ff03c6d052f3bd2d8145a5af7733a2e082f5d9d55bc0e3fce381601fc1901874e587cbcea2cc77f42e089c4fb9be8fea5b2037fe370756ccfc65bdc57cf6408cb335396f27e1274e38b7a6c8b0ea89ea1179defd26b717fa9b56fa773ec1ba9a813563b3ceb496f16a86dc186afe8da1439655c1c263769419ede203435d1ce098aeac364283b37e108bd9daacc10fe1eaee5cf1497bbb21adc6a4fe61d0e6e2b5d6567f55647355e62968186053b8a2838757a346b0fc055d26e69ba059d284705f3bd6f80a26ec473304768a1a36ab0da6491a55a5dd37c3f896887392f80958f23438481098ea82ae584ebb60d1a348ad5031442ddbfb0f35793ee0df07066829480d77d947e41caf47c0fa3bba0c3947770141c6a820f5775b2ceaf5ee6001970d3b0a426f133bb039b30f09a648bbe9d2d76ccbccf613751433206dccc1aaa18e45b82298269fe5aa57add614c57aaac75ef65941da5f97320cf767f61195d6e918fcbcb786b5477751b852e5b96a0edec98d3b6d1a4aab8136c45114836665c9401b2b48ec68f0a542e7bcc872abf4557e90702d8156578896a10b441d4a7f5f97824d1cd96efa9e7d318409ddb31f5941350d012527af140c73633494520a51f1ecb837c2edc7ef4ccdf48eb5f78a7d550d8fdd6d824153d5e8aca3af0ed721cb4787ffa5704bae0ae7fdfa982d7928a90c2e7a8e9f0cda57ccb00a35482ba417bc669439eb758b6573f18f8ca5f31789ed595daa8455ed488a71d3074a1206f7d24c2eae5db15f12d26c41a987619103f0f3785d3c22b36ad74363d4af9ec5b71cbafaf157cd6076cb4a4cc3f45b852a26c482ba2dbafcccbd4d23342fc2733b779bd9bf3c2066869629ee16fa4d7b2561ed43a238fff0fad6c7ded6c3a7c11efe83ac1d23c921941f71e241e95f3cf79d4f19abbc4166c58618313510463dc0ff47b4312b0ca762a259af58b66f880bd3bc1fa5d438d5f379a9af672bac6e95b6e8a3fe245a55856b8c1e463e72ab5c87e67de835e6e622cfc39e98f6e60a8e920709b42f0d376a8e4a58ca0605e88ba912af612456c15d9a9af3183ffbd3a4006fda4914169c59f24c2a943f42873020254eaaf1e85058dc297cf5c7943437955a078539b26d3b7b9c7a8492519a0a73566c66bfe8b2d3e3453e1248ae02ac1b1c816a7bad2be9a46772ec841f7041387bc67fe916017d2e31ada540b035e995dc2e8a57e1aa22ad21eb331757b65814b87503a9fd81037bb8f27388790a3c601623debcf14fa1c9c13b58aaed89e676738d456cdf20307c9a5f2f6b8f393aabaf252cd3ba745e935376f793cbe03d47cdd8163c5e2d507cef974839a8fc712eafa83cbbd5444baf33728d1aa0110e6d21045f2eb4d073865d966d87566f8e8b0744e13088302cd4b7d079cf16547fba4c529eed03b08c6b67a0fdbcfcc734f771e00835cca6a46f8d0f12bb6600f7ba039421fc3729712aa347074f6d6a89bccde4e94b9e584c6761b68ae09ed0ab0c6d37135d8fbe793362da59baccce3f872e2f4cc64924de89e1c09c5f96c640b0d8623a04ea48a5eca4a95161431570c84aa6ff4ce74197d2936801e3c25de76e75700daf1d3ea09319497ea84b98a82e362a6965c77e91863d0892f71b9ecb73518f44df5ba2f564ad601fe8cc78a1c517071ef2ffd55ef45dbb7eee50b2899adda8eb40e6f65ecf11301a6f6b4d5d0b662d62666e829b3fb783fb9051aa4dfed271047dd98dd9c5bf2b8937e803e299547e9f9e210b94ed01dd505d91b5b5b0444e05dae90f104e76cb67acd349e10ef9fbe6584b5488ef7e8e90d0e930e6d7200b352923bf59ff052f7a84336947e4b954835401e7787e75de8b004bfe359fcea75fc1fc388c4c3d053df183f067ccd0174eb976d3c442220d2db97d0766e52383621157716401b8b08bc0271b9b931faefe1fe1fc815dca869e55d344bf73feb15fdfa64e8a4fef9b57e7d2d4fbdf82cb8813483e130a0fa9e20b21a2a16cd3d0be01234e1158d688147619a5395f6c9af3739103031f3e6f1346b470c788339e66f36abeb227edc1c69eefd616860a0a26a91000d29d72d53869932bb2e6263362040b736c974ae9fe90495472fa0ad61de9b9bc8592cba1edf467633f864b6e97fedcc4c765a63a64d9d7d5d62b1fd1e9c6291fa353272d13c2dc893a191950d0c1e0cf49f23482e60137cab5d19c46c43262278de6781657baaf2321a5463b423d6115db68b7e31589eb7cba4b91ae43546a5c45f16862026321dd3a02a54aea1cddfaaffa96c81c6a2ce96df46c11fb4578eaba2006ad8f7a8a8ac04692471ba4236c8fd53dda28f98e9db1b4d1e64511a6a03410adf6966ac7b43fdb30dd24d9402317f3c41ad5300e920114a241dde03ea23cf66a3360f74ccb5ce650350959a3a471657f9c74171647bce9b0093ec13f51a826829b130e3968fbdb24cb59daec4b6bab9ede9a78a0c2830fb512273dfcbf9b7cae1ed121dcd3a293caf121c752fe5ab96a3b1ae8dc1a40e3e78ca82f22fa5cc8c2a581a96b13ae4de9f533fd90a000e2dce7ffd9a06b3a4258ca8d6b2e59831c7f09fc2465fa4de87507326a86805f6ce58604f4045e03cd6ef103177694542df6ca2c3f69ad79602807897eba67debdfd6ca3b4a336aa32bba253351fc878ce4021b619be2bc6a09fb57c82fd2a7a1c41ba2c549e3c8c77ea6b770408fd00298753ae67477588d21e7be9197425b87ea5954bb07c6ca7681ba985a5ab492a81f62a49549bbe937a2edaa1ed137b4580a336244f467e5774978aa7069224caa20b128ee1d8d6f097059342dc28ea5a8df4889716d6d2d84e6b6c522f6523f6f919c8974437995a28faf981bd0a8cf950b2ce6de6dfbf50460d5e0995f8f3d1452b5f5dcf6911220aa0e015beb8ef8f6aa36853f033f9250ad1ba792df017f17b11e218162b9be197cf534d6b74cfde8df8c40d1320e126aa1f155c20a3d150c684844e62b0c53a5051e859f916fc82eb82b57222d5a071c8c59c66c61ce590a264d45a9b0d7a80abae8b0a9782ec62e0bb80088f83da18a33de8b07af1142e643f0bde29f49d2de9fc607a6045c4599791bfe255acc8d9ec2eb8b688f416e3aa4f423f131e8fca4b7e0943b6bb59ba0a4c592e4a5005d2365c75bc596f017049ef728b75a23b1d8b0d0617a20c0aa7b4aa888e541a7e15eaabc1966494895520605688149bc9bd29aee29aef565863991101edfc390297cba506cc599881777697c064c03961b3166a93fb48d64e408e09eccccbdc120fe7c0821eaab778d08525d907c061277c8a269cc51f501670ad9a8958a7d4c276b3b27006176b9a4f3fd92af0639e8da42195cfd5b6989e4c7836547c5bed133570e86f350f1f61d8ddef4bc2502f70039d92fb1235d7b18c64b1792afbd02a66e3937c12fc9c5399a7022f576ca212f18c726e51dca302107b7e45002ed0c47f7dbf4774299293de2adf211a1c8fc91b7d2832797257010e6ca02f546681a5311e196bd1f2701295f3b3587f7e0e25065309f591aa23e75dbfac6ff92600c59e851d08d4d3ed4c2ef0b1f6e6c7610c2af94a18bda10924c15856a11f203554291ea92320c677a2047e714470e337b995311e2662110859d259903dd428e2553120d260e7c580c735fe726f54c76366805e602850c82e2411770f077825f39aacafe2edffc54245682830585983cf7acfce200af0626134ad1ea340457fcd633e09f6660957430d52c04ee58dd5b03cfa0d722fdc8b9f6c8c072f586ef350f0027c63c74822e39c108b7082f6bf5782dd5cb9fa5afc1f7c2af893f2d1daff6b2fa75411cfffbd9faafe8588bc12220b9660ec74e0f9b8027f830aa9ee1d2020d0a6782921c8c526292d3c12aa95d804c4d5002181827bf8f80e71b1736a11baca1e2fa1f81c23db0f66836a23a27db4508a3a972998ced933c4b40b3988b803ad3c2b0bcb51b80389ebe39704ff7630c4cacc3c2571dcd1058d9326c2c98621796b9f9d7fdc52bf455ccf58b1c5406c38b212fe1d0b7d09f38e714f38a349216f185718ecca63e73464c6c6ae2e4494ea834208df90f017c02e629f07b87d9fb7061ff4705a4012d01fef5c8cbeeb29827965d1db6d9358b8974ccee27296155037ab36973aeea6260453239a9c0a55c19ced711bae160f88c7955e93cb09b2cddacee5eae48cc41171d0577629b72dfadea0751c71d6af81d867d07cae7a56ea77cc0340b624489998d403d6995c1b4d9053e6b6c6a100b67c186f188dc7549e2338c874805bd3a1b683f379e2a471deca536bf95270022875920c9a7d6b31faad12e37d588b482b0677de89ce5e28f5e7eb13d4df1e59dbbe90357283efbfae57e39176de01b0a1f5a6b0bb09ab13e2a35bf05d8fa8708de570642c73f9fbcdb9ef561bba31a3852c334824db8079b7e5c555431f13c5653d7cf899c36cff1235ed490cc93c5d9b2de2e14b3bb0bcd137512ef01e75c3ae6cc6fefae86d8f942087cd00de4e8c0fd250c7ca6a19d5b9110d48983fd4151f43f361362d8a43191ad07d14f83da2b2467ab34feb1b54c42ad8a13131b380d33d9d3e26eaf0e173c3fa23a3f2729fa29b4a705bf1ab5c0b31385f816202d48839e166b241f76f9f2202b22551914ba131eade27e2a4c43ffa68877671704b15a5cc1fb39225fba04df7f25f485aa4bc84dc0054ed5258d7c3c582051d1ce727068f39e02516ade37dc9dbb810eb14bb8285a1cd7fa963daa2f306869c3f7478bcccde698546e8cbef151c5b00c6ba2510320ff77366aededa95f231ec0f56bc0770f4ce55c30dd196c864ea6ea8f9e304df1ab134101a8721e6171a36245dc90c4eb0c5d958a46508aa9810a85510ee062044883f188109b22a616df9f73d958d89fa9bcfd19d256c575954c9495b01c7aa31d28f237102876ca6cee05b6072baac561fe8077d4c937e7fa5075deb44f602d2824e900a1046acf7b2aede09c94694d236aca4b3e3ec41d59e8a6cadaae22438aaea85ab2936e02de6bd34f2734150efa56c2db4bf59c0a7c9bc6e160d03f0c1d8dc178d929cda23e2d0221da33d5fdb5f8f21ed40e387aa9734275f3d28780810f65fa6a5698eb0289121d57875b646a7330c6234567d57f7e1521bbae4608d28bf20a35d240dde29f669241188d886f7386e824dadd812e927f71bd567cb28a8157765dcb72f40f76409ffce70fb32c3a08722293654f1d0bacab6a71b3c949f5741452bf5045ad4ff18677edd3942212e003526a12c1c6950f33dec4e4c2c77fa69d863a3a76763bc6f5d738461a8cd6be365ed5371b6b2f2b5d87fcf0b551a4ff933ea41fdbea5d49a83f1e5395a826f01962b6094cde5e4285f65d2d1d4430e907251e0b829f747badd88362859725265eb7657dd14b12851e8e84c7c4e7edd07cec81d798567134a7efb143463d08bb6e2d0d8d7d843e164bec0613cdafa8ad9a3e2c084ef8ca834c579288cb606c5c54aaedb14051cc9ae6b2dc9c42e21a731702da5fda4ed0f0c695c69a6471416396589c3f55c93be16369241f0eeb21e8a802556aa741c92fb62d36ffbfda637282965472e645decb1eeb082fa214cc2c3272b0ad97c5a0b996de100a29d4fe74280a0ea6f03a1cf414db3986dadeb0a2e28828b37843f3e775cb036cb0f86d839a510e04c114db90744947f348193082f393e67dc81ad478114c487a29e20f24090018fe96c07e2e27d61a9019b4181df9190bb7d64e426643c9e5c5701f8041863f837599fbdd53b078778a9faa7489c44227970167137dc893b7eaebb41fb54cf69515b97a80ae60c5a6233efac5cfd288ac95654d1fe0781a3fbfd4a213be0e0bddc00232d6840150054573e45122f53bd495da101ca9737902775349ef5beeb0aa057ad2a42db1b057deeef1060382b3077b70a6403fbf0af55cab4ca4c817559f6824b487ae88bca39f6292477c08a01896014c780947461d072dee89a82e20b96b606a4e8a8513a3eed2e81efbaf71e7849cd732c64c085ce9c87e01835ca1ff3561ab310c260e03326001f69778b69314f7a4a81d3713b39ded1aef95bf1fbc6921c5326c918180801e85e117540d44080a0563e1b870cd81a5509dc41733115916103debd7e75bb7772e4c341a0b8d64688248896a339266ad1c898853870798545ca69ad0a4bfe0c7f2c4e0af466a3b036c5e35b74b51c0740e0cb9bf2ce8d031b27b0e19b10ea58ea9700881207181527224c7e242726a97c2a151ab0f802e330fa9704e8a590553f6caa54ad35a39dd52092db7b4bf2c96a9177f6460b0bf1dda1d5bb8720b5f503b85918b49d0047e0a099881ace49ce64911108f9d847addaa9d30e2b1e902ba0df63e3a5eaa704e27db271cc91bc7455d3c7cc1ae2e5d3e18caa04abef017a7a4723d6b8d63158e0e56704d85267eeb0132d9b32299ff687fe322151befaa3877d1ab6bda99bd64bc8c8f10ed24016d80a3b3feb29ec532b041517f7fba90429945b1fc088198b33ddc022d8c00aace5a9408cec59296db1e951bdd3a583aac3750c0c30bb9c64ec57cd158178228638178599d244072e34c398eb7e098866ebce1d74e9f2acff75091b1d0c08a5845be3f41b62111022af6ac7e2dfdb694c89d69d08f609710e215794e5b623d07d4d9f62ba50c19d0b48ae64ba658396e2ee917afb813ec5d8a832899abd99b476d890e3a943b7913a67c0377ca078b6114296ec002122b9cb94f978cb27ee8551160bc39f407de3bc020e689725ca5b4ec96dbcb8d90c2a86706ea4084632c479e808954ded5172b6c8e61bcf6ac1d0d9aff177d4f159dd3439cc9b60441ca1786b8ffc7e461685f83086aefc39b427458f50cbe854c3fb741408d0745f973befbf3b03a49569834f5372bb4b6554ba83777945ae0a877d8c9b380718b4aa41839f08c68d45f37100f35a193edab6045242cd2a8cdddfa98d4e64300aafca11ad1db2177dbaa9ad24e18b1ecce001f512308cf35b89803e0f5219196fb43871bd1bdc5fb94364d00d3b03d06941e94428a715e8f4e9b99220357342f0ba586aa8eecaf395badbd5262640191982c00a2be683b5640284461821a9dc55a2381da485d0a575d2c07d92aad913ffdb0ba503e04b08c335bcd3606883768508e3521f8396c22e9b1d0cb1284c528d8a3435dc9230f38618e32d4c5c4ae988cc976f8e4152576c51cdc8c645099c505fc4f4459e4408bda272d692f9b2b18856f7db21142230a8e43c84d505b771159cf9404caa056fbbdfddde6092f63dbd22f8cf8e168fa804463091a2a9a2a7fd6b8b9026124c606a72c4f0b4c51552180280d992373326e6465c22231d3b44bb460c007a47510ea9624bc46878d947f1cb5bf62df1340d3f808dcdeb3ca091202357f7da46ac69013ede553ebeab31a76a6f4de16434dc359baa166c0dfc6c2801ddba456b0d7814ab78ba6b6397edef22dfaab51f75c5f706c07e65679756b41ab74f9487d875d27bfd747901260652b25884cb95cd95966c700a221c414a3b47448a6740f999c12e4f89e7dbf146df5e1d19026f723c76f739ef449eb2732d12ca9333543e95e17ccda2f6bd7984a8376aff7b5e840a0774e5e65ea1ea8b72a329d8532ddde02b6bd445104454e0013f472b2df450f8541ef4cc35f39b79a3bab1533aa756df85a070dd1dcca9812c24d78789e3aaf73cda97825d6c95b6a1d0fab599ae9deb1c2ec758f325661186a618811c2e42ca7c1fc5df1e6f3d28e0bc245ea59c40b428525fa8d4ab18d2d488a5204afcc9fcd71a77ac1ca09f9161736e5366270d4cd383f5022b763c4055d995a920199c1ac14153998081443190abb6f6c2d98890bfca100587762ce0e20929c6b8df7153f572dea2dea1f69a49d88f602f42ea43e0905b24e188c23ed4090c287da4d59b2e05971686f4f62ec7dcb7b0cab67cf3c0c2660998519e86c1c2a1c29ab5eafa2a54da5e8be869a6f58231619b30ad1b47887969711b3224bde76e17dbef4f0d821a90eda47c0528ed4824fc365e72fe411833b3ea458a1072f6307bff2cd22ab1e34ce8dc9b979f924fcbc849f66923766b1e802b178b2408e251dbbe1d54e1aeb0ef6884a12e8b705ff8c80a58fd90f672b978919c4da38fa7daaa11bb30ebd5128df5d6461bc2f701febedc61e06fbd417c0f8e230a894cad524d0bc86a16ab277d427134b177d5bddcab844613af0a38e4d518af2790674d16a74e784c065c1b53ff954567fbffff5328b48e7bb8a39d26b682dc07dccc771f5ebca5dd36c4ccada546368013ee81170008f2289d4af8511b19c8c9c7f56655aedd3312dead49b0ba48193044414786923471205ff400ec53359fa892c22a37733597de49b5a2ea452a653999c32e197054fde4dc5aa8aaa16713188e3d0e71d681aab17c5492e307ea32f2ac3fb295b6cd1a78f8111f8d9e401ea8c4be31f76a53a8a7c8b514729030ce054a7827d060683a489d1183b9fa81ac13885bf2ffa367fc14762e927658a0be0aafa382620695f06c736a32050c18f247f864c6cf4ceded3f4a4b17f880052c02ef42532d4429d213004e8993858e17ae6dc093459e79e34fcefff0ae15d19240115f27e4e0e096f8f936740cdf74e4a724e47bc908880f4eda5bbe099065657952f2c010544cf9f0b64a8905daf7b136c01a900d656d8855eb011d5e26d10dc416be1376d83c145609424109cc57a4d526dc1099d4232a31d17f286818f80217a19a50e047bf79a7e390ba4a2eae149d328f69461e05839c11cf2c89a256c20936eb291f47bfba02021885202116037b16806be7241eef25d8f52874fc938edbbad52805f2613be602c23c0c87fca8006e98f3f7f8c0001503bf3c60ab87719684c62630c5de9c22d63ef52e960123d1bebbd8e9463f2a57dddc4847265e7f665364d99099aeb9602068515c8ff1875a054e84732651cd00a1d3e1330ce4af026a1a207af3940a3abe15c96e36ce4131a6aa145cc62a71f4a5bad56e42242ad480622b8427678e24586fc5f9cc975d6f2bb8065276172c32737db8e8891e5464585118e5a03ee60fd6672d93fd8d285562dccb9c749c631d846c9b11581790b63390cc49266238b4eb5388281cc5053a34e804b2017ea5b284d06a7b4f4bb9902065af9938930e7df9a819608bc66a653687ca5d021e5fb9e1ac92455e92f9a5c5a7d3927268e926e2b87a61c6af0dd3df193b769687fde7c181c74b76e8df90d5f811fc81c04024f955d01f4419aa87089758a0e2a73aea658596675146849cf61df75b13286486b21c8d4ad55a4b9b69bdf046d04797565110a5f9f8a1e49b97a33048732f7952292f9618bdf05f141e1b48141be93797e16e83d0e39a82aed26705700bd75c6bd8dcf90caa0b432bcc58cc29f5938f249c53d460bf2636f8ad8962fb297c6318f3da3829dc54cbeb6e9d6b190b25802c31c3b3110c178ebed7392da68ddae734595c0f9f76b76f3c2ed0a05ae497d3d9d4acd23068310e5d8cb2572a2faf5a8c30bdc501186d040b4fa83e05bc3c81731efa9226a58c2db75b14e235247800f5ee264dec9da4588e9af124251bb13eb3ea765332abb49b32b8cd96b07254c646678eadecd58a48a4ac43107adca65d3d585c66e6a07b4d8bc3cabc4a43528c6a7349d951a931e53b2aa332dd69f04319fd4cd638b1636c1019a870e5f02379b0ba071dff94b3d45b4db1a99c79ca28c3146e1a280392ea172b48514ff812dc86a513a9634319fcd05ab1939244e952948e48647f9d6bae92b6735ea5b04c627d127ce5444848ecce3245bbe0f657af043cfc891b2abff230e3e416a6d9e6ea33b4485ccec8121d70facc22c291b5ed5dd5fa7de2457014708ccd475b0fc95866725cf780acde47d8df9f91ec0268d46888e8664f87e415a718e1d264ae5a92a765cb182e9ac5179063d19b5b400b5cdd76e6c54b0251d6c7ed6a255f7c97277f089fefec1869b88cb268a8bd5b4a3b5ddbc1e222b73e5f2cf7f1cb994f123486791f47ec87b72ccc689f3fa6dfd11ff14b1da4fb07678e13b801d02122d68d4dae8d18e754a8b7bb82a0f6342deb948715529da5497429368cc16bb6f1e9192cf0fdaa5243342904706786ba928515de009df819bb930eacc5949f25b7c530b63d11f2f99ca5823998a9d801b0d2d4ab7a1619a722e39c1d0562dcafec49bd165334e898e22d0033d719a7f00688b3dd1d75c109afdf660595393b5735dae9e65ae69e72883b907275759439261d13f10e21ce375c17bb1564a11cf6f36824c277ac4b8e1ff3427c568ef3f9205f19e8c0a996cd04f9796d200c3f628527edd144758f421419d8c8391d14b80efb68dc55e6424bcdf0832998149f88bbf28e3278367e52c372c96970a90ca9b9753b8bdc12c9899ced97da8bcc3021f239dbaf0f10a590c9cb824a2cdaf60d460ce968f87bd1ac964158d9a58d091afce240f6a4cad2f885da2ecffc06bc050104699d15b3a504249f379856d8d068a23a50a5b2140261a230c698414128b5c1a94d43510c07c62df9fa603972e0ef23fc95afed2dc79bfe36162b0e54cc122784e6a8f9bc97a8c1e6cb661780845702e6c1071c404b2c40f0deb223b58b44b277195fb48f5cf688bf1b370f53861666c7ce9eb087c9b63dc05ece6ea0ca933ff503440ad9c55971d16151ebdac015377a206d51c12199a56bb25f9288d712a185505aba1a657ed9bcc4ab14e90bec8fa40cffa1b56f51e3d3c164bcb4b7ef904a32004af2b8b968039940354d26474c67d7835b26111eb97f5a25c40e905ff3aced5b5be3e6bf603d69fe618861eca0886cc055439d0555d71c3fa665e0bb6aa8b7ef86debf7cfdba7bef8058b7a26c63692a83c6ea3b91d17604f045c52872c0ad5dcd1d8d9c18e88e73e7077e4e767a2206c1d2b3d80d9227db64edf91152d6137fa7dd3567e4532d06894c58aeb413e9e2a65a25a443037e91070227442993f0a2860b94d1a7861f29ae0d2a6cb37d91326bb47b4d1889920dd7cbea1608ca659bfd6227c7a20d5d649a47", "0x3a65787472696e7369635f696e646578": "0x00000000", "0x3db7a24cfdc9de785974746c14a99df94e7b9012096b41c4eb3aaf947f6ea429": "0x0400", - "0x3e1e8e35b440038ed6e6cf14c413a1022829e1f7dd845076ef31888516ff15ee": "0x80d1f008", + "0x3e1e8e35b440038ed6e6cf14c413a1022829e1f7dd845076ef31888516ff15ee": "0x80d1f00800", "0x3e1e8e35b440038ed6e6cf14c413a1024e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0x3e1e8e35b440038ed6e6cf14c413a102583c8e2a2d795fcdd0a88255e8bba7ff": "0x00", "0x3f1467a096bcd71a5b6a0c8155e20810308ce9615de0775a82f8a94dc3d285a1": "0x01", @@ -105,48 +72,9 @@ "0x540a4f8754aa5298a3d6e9aa09e93f970094ed11a4fa1515abfc26aca89ae4eb": "0x000000e83c80d09f3c2e3b0300000000", "0x540a4f8754aa5298a3d6e9aa09e93f974e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x14682f9dea76a4dd47172a118eb29b9cf9976df7ade12f95709a7cd2e3d81d6c", - "0x5f27b51b5ec208ee9cb25b55d87282434e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe380faed4eaef575446e4331b0aedf3af1258a3d7cd0171466cdaa0e615533bf37891d51589802d279537ee0ca1dcd7500e": "0x0800e1f50500a81f0b010000001b0000ac4610981cf4870300891511004eed00240000001755558eb056b757544b", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe380ff8f7c8dbf8b1ab0da6bd1d0d1f2e79920e642365c10c6ec3ea0674bde84312fb8f26b9ee76fbcad37a892cccc04004": "0x0800e1f50500a81f0b010000001b000091af1e7d0f2d4b0f00891511004eed00240000001b55154c396d4ac1434601", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe381ef923637ea66cf01bee7ea6ea08e4e87a65d30c7b3606d16af154d852bc1b47152eab5b714ccc9e6d6af4e4a364b14e": "0x0800e1f50500a81f0b010000001b0000380e3e7a8570f80300891511004eed0024000000170000da2b851f0bb454", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe382171efc85ee96dd122f3b2765b2b5d724a6e9105bbcbbe1019cfa1626a13c118e6f77912fce939fe987cbe6fd5704453": "0x0800e1f50500a81f0b010000001b00007ca00ba07dd5f00c00891511004eed00240000001b55550af80078ca111401", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe382b52ea25f22ca37f15ba4b55494747fea44eff5faefb33ab41cb98d8b6003db5ed693d302430d285c9a8e0915df5fd39": "0x0800e1f50500a81f0b0100000017000053162e86cd5a5a00891511004eed002400000017559531d78320918707", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe3831cee65b35d0b6feea23d6d6a6b35f05e8819ef00c0eb981957634ce31f2beed46e6206057485cda652d8b5664e5ab0a": "0x0800e1f50500a81f0b0100000017000077c1c9926b3c7c00891511004eed002400000017aaeac97a3b4c5e5a0a", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38328619bcd15d3a65e5828c4143340fef5408160bdfd98e298253355d60d54240413557532d97e9f297d18849c2848812": "0x0800e1f50500a81f0b010000001b000040683bb3f386f03400891511004eed00240000001b5555059eef4e94606904", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe383cf7c292560b2853cd863055849dba959affdb642e45267fe134a281638b34973d04eabf4e2e419725ee4b9e8a425978": "0x0800e1f50500a81f0b010000001b0000d8645211a0c2780100891511004eed002400000017aaaabcddc6568d651f", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe383db2a7637882267dae62ddb2296d63f21c71e0c8615d19b0f973afc04ee767138e44b546d2294eccca2e4afceb31cb70": "0x0800e1f50500a81f0b010000001b000010daceecbc213c0d00891511004eed00240000001b555581e7bb1325581a01", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe383ed3bdf051aea0dd9d324e63d2d1fe9c3c13320415f16cc3713b95c4e94bf9e8ce08c765a970e1eb7f14f5c422819b46": "0x0800e1f50500a81f0b01000000170000a29f07f2d3eff000891511004eed00240000001700804d4d2b54fc1314", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38405d66e8362d05d2279a7f60ba93a27a867ae1095c920bb339b570004ac97121c989fdbdd3db3965908279b7c5724b49": "0x0800e1f50500a81f0b010000001700000e6644a594a3a500891511004eed0024000000170080d65d70b8a1cd0d", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe3844d05c4c59c44805473b81294dc5feee4c6358a29ce86cd404342787dd9e823e1da6a82cd0bcc74f286d44b7663f2e2e": "0x0800e1f50500a81f0b010000001b000080d07666e70de16900891511004eed00240000001baaaa0a3cdf9d28c1d208", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe384755a560a6e7b022fde2ce4ccef2243c18e828e85cebd4c7684e15d2e1e0d0699b243f76ed457d22895cc48f3e3b8c35": "0x0800e1f50500a81f0b010000001b0000ed9b8c4313bfc30100891511004eed00240000001700c05362f69a41a525", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe3847d1e019255f155b1661cbc344650b32549b096144124726bba7b5f3518ae1229740be100646ff0e4c28c340bcb80239": "0x0800e1f50500a81f0b010000001b0000b0ce36beebfa0e0a00891511004eed0024000000175555399184fae894d6", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe3847f82480a4b98fd0aeeccb69bab9cf45c450cc0c6b232c68082436ccb0643ba45b6de77b2e5abc4a416aa7ea282ec131": "0x0800e1f50500a81f0b010000001b0000bcc471b5f478470700891511004eed0024000000175555ba257464144a9b", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38575c2ebe0e2e82acfe7764d89a8b379c302267ef0b206915c96f39d81ae769ac11637665be9e014e4898fbbf5db92f31": "0x0800e1f50500a81f0b010000001b0000fc3f17a658fadd1100891511004eed00240000001b00005545d70d322a7d01", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe385e52e5fc69d19c5249999ceb9ff179aaccd886be975fbb469f788aceac28cd295b7fa0e5c691b8e3fd780fdae59aa144": "0x0800e1f50500a81f0b010000001b0000824fa169df67091e00891511004eed00240000001b0080f51b78f3a7c88002", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe3871e68bb6be54305b43fb93f16a9e922d8912d71a1cbb7efc012ca9c4cd6b7300cddb39d77f088d91924891531c5421ca": "0x0800e1f50500a81f0b010000001b000097774cdfa2d5830500891511004eed0024000000170040f709f1e722a775", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe387ca5649b924e4f7bc893244ea7d7289ddb5c859a44555a3852007f4778184309f12a02a22276c37decd753ed5f23e56e": "0x0800e1f50500a81f0b010000001700007ae81442547cbb00891511004eed00240000001755d5b4682cb0b19f0f", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe388267d571cd2043eb6efb3c65987bf59adea39270c911c627c2bd87dd8d7f9665a262535de29d894d9a8347137fb8f237": "0x0800e1f50500a81f0b01000000170000099717993a2d8d00891511004eed0024000000175515964c17e2c4c30b", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe3889730c255c6a693ed024ae6ca098b117a8be9e9b93257140edda73958d7cd2c49ef796845cc8be9f56ea0829f413ee1e": "0x0800e1f50500a81f0b0100000017000017c2c5cbb5df8100891511004eed00240000001755952cd0a57ba4d20a", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe388c55579a256cc8aa3de388477e3c2f10aeea4fcb658f17b2c6cd1fce911866307e614dd49c7324eb9ca193ae037d9c0a": "0x0800e1f50500a81f0b010000001b0000c2508360669c430900891511004eed00240000001755d5ba4660dd5da2c5", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe389263431d73699db702329a3fa227caec2e28436ce437f5f6705fade3f5986811bbe50fc6a78fc7cc3896d5a09a142941": "0x0800e1f50500a81f0b01000000170000d1adcd6d690aa900891511004eed002400000017aa6ad123d17333160e", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38b2611eca3c4d08d1f96a367f02e7ef421ab54e6f4b40816fe44de8fe8933fae4cbf7239428e080e6fbd92dd6c6bdcb2c": "0x0800e1f50500a81f0b010000001b0000d8645211a0c2780100891511004eed002400000017aaaabcddc6568d651f", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38b2790bdc65df4f43cd1fa30327e0e4616262eae57cdf41aec44acc93f416bfdbb6d8a1430ba19b779ae5c98d6b7df870": "0x0800e1f50500a81f0b010000001b00003b4dff244be9ac0300891511004eed00240000001755956f461543c6684e", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38b6ec98437c6aeb030233efded28ca4eeb621672f0d8be43b4dcd16aa2aa034db3fe3212b9f46fbfc26668426f9510a65": "0x0800e1f50500a81f0b010000001b0000bcca3b6902dee00800891511004eed002400000017aaaa8ffbc488d567bd", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38bca32e4c2881d806c76954996916e56540cb8e75a9a1e766c8a6b551b635e513a16cbb8f4d9aa13936254166e4de4018": "0x0800e1f50500a81f0b010000001b0000c0a805aba81c4b1700891511004eed00240000001baaaaba78400e0eedf001", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38bd8f48d51b9726ca4bc2073ac23559d59ac654f1421b1c97b2380e08e297bd16281bdc486be24d970b9a5804e37b606d": "0x0800e1f50500a81f0b010000001700009b9d3b827fdaf400891511004eed002400000017559577a22fa08a6714", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38c6468891467af33e5ed0b214c64a254514780e5747055d126e0d809b1f504def7e67f14c6256012ff2a4965f5b95661e": "0x0800e1f50500a81f0b010000001b0000a0bd52f8b1404b0500891511004eed0024000000175555cd8fb1d40ef070", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38d8e3f5f6e0e7467fb94c6f63e03209d588a7d9e994528a48574fef4fbb9b731976760ca7a97358a38734c2ef04475909": "0x0800e1f50500a81f0b010000001b0000ef462c64b8d5e10500891511004eed0024000000170040e90559087a7c7d", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38daf780801663f5988ea2f39ab617da297a8c2df3c7945888b20fcfc570c45c7db18e20c9fe57b66b0071bcbbfde10e60": "0x0800e1f50500a81f0b010000001700003d9640acaa2b2d00891511004eed00240000001700c02fb75a8ea3c303", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38ddde0c79d5570b8684a0379815fb60c6127661e3abe3f347aa88bf2cf09545f387f03438e8ef778fe0adf3bfc61c395c": "0x0800e1f50500a81f0b010000001b00009e12b3d70c2a2d0100891511004eed00240000001755d537ec4e67d61819", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38e10702f089fdce41f89785cdc64bde8dd46827949a45e460ad655510b58be8a03079eea740ab57f3cd8adade1de78935": "0x0800e1f50500a81f0b010000001b0000ed9b8c4313bfc30100891511004eed00240000001700c05362f69a41a525", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38ea7d4c5edeed232ba55a698373b8749c146459b6f23d9ffa4876ba11293be2dc849cef7d5aad3c583a5526764dd47a54": "0x0800e1f50500a81f0b010000001b0000903e44807e55781100891511004eed00240000001b00008c5ab08acab17401", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38ed8dc744f3fa96cc08a0e88c2ec81438a02fe19c7b04359086a7753e0ffb918f3b8bdbdba1ef0db8fdd50f42e14e202c": "0x0800e1f50500a81f0b010000001b0000a0bd52f8b1404b0500891511004eed0024000000175555cd8fb1d40ef070", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38efe1dce87a8138c87a9755a192d55aee4e448bf0f6c08e0443fd318476062713c3b84e1f0d3558206777991441ed0a1c": "0x0800e1f50500a81f0b010000001b0000407ba5f06381960a00891511004eed002400000017aaaa9a1f63a91de0e1", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38f2300b6e4e4a41213463d1870331bc97b089c0020178b1025ab79018dbf442db463aea6b55feaee7c8500e6373a40c3a": "0x0800e1f50500a81f0b010000001b0000a0863d1f35a8c30d00891511004eed00240000001baaaae2759ac259a32501", + "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0xde9b986aaf625c0c7017411c00a43f2a07e0cd75adda2240a24bf720cab33e1d", "0x7396903df85f816e40b96a10626866ac01ac5250fa7bfe35783a9fe1889d6309": "0x01", "0x7396903df85f816e40b96a10626866ac0eadc3147dc36f12179c6b3a86499a9f": "0x01", - "0x7396903df85f816e40b96a10626866ac29901cd0cadb6e01a632fba13103515f": "0x00", "0x7396903df85f816e40b96a10626866ac41ef0da0f95d3738a5926e940c49d240": "0x96000000320000009600000032000000960000000a00000096000000", "0x7396903df85f816e40b96a10626866ac4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0x7396903df85f816e40b96a10626866ac94cd478e543402c40b2bae3ae4be4653": "0x00", @@ -155,48 +83,13 @@ "0xa8c65209d47ee80f56b0011e8fd91f504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xaebd463ed9925c488c112434d61debc04e7b9012096b41c4eb3aaf947f6ea429": "0x0400", "0xb1598ed2e9f28fa2e985f81fabce8e1b4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc60faed4eaef575446e4331b0aedf3af1258a3d7cd0171466cdaa0e615533bf37891d51589802d279537ee0ca1dcd7500e": "0x046f726d6c76657374f4ffaf1a416072d01f0e00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc60ff8f7c8dbf8b1ab0da6bd1d0d1f2e79920e642365c10c6ec3ea0674bde84312fb8f26b9ee76fbcad37a892cccc04004": "0x046f726d6c76657374f4ff43be7af43db42c3d00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc61ef923637ea66cf01bee7ea6ea08e4e87a65d30c7b3606d16af154d852bc1b47152eab5b714ccc9e6d6af4e4a364b14e": "0x046f726d6c766573740000e038f8e815c2e10f00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc62171efc85ee96dd122f3b2765b2b5d724a6e9105bbcbbe1019cfa1626a13c118e6f77912fce939fe987cbe6fd5704453": "0x046f726d6c76657374f4ffef812e80f655c33300000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc62b52ea25f22ca37f15ba4b55494747fea44eff5faefb33ab41cb98d8b6003db5ed693d302430d285c9a8e0915df5fd39": "0x046f726d6c76657374f4ff4b59b818366b690100000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc631cee65b35d0b6feea23d6d6a6b35f05e8819ef00c0eb981957634ce31f2beed46e6206057485cda652d8b5664e5ab0a": "0x046f726d6c76657374e8ffdb05274baef1f00100000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6328619bcd15d3a65e5828c4143340fef5408160bdfd98e298253355d60d54240413557532d97e9f297d18849c2848812": "0x046f726d6c76657374f4ffffa0edccce1bc2d300000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc63cf7c292560b2853cd863055849dba959affdb642e45267fe134a281638b34973d04eabf4e2e419725ee4b9e8a425978": "0x046f726d6c76657374e8ff5f934945800ae30500000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc63db2a7637882267dae62ddb2296d63f21c71e0c8615d19b0f973afc04ee767138e44b546d2294eccca2e4afceb31cb70": "0x046f726d6c76657374f4ff3f683bb3f386f03400000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc63ed3bdf051aea0dd9d324e63d2d1fe9c3c13320415f16cc3713b95c4e94bf9e8ce08c765a970e1eb7f14f5c422819b46": "0x046f726d6c766573740000887e1ec84fbfc30300000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6405d66e8362d05d2279a7f60ba93a27a867ae1095c920bb339b570004ac97121c989fdbdd3db3965908279b7c5724b49": "0x046f726d6c76657374000038981195528e960200000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc644d05c4c59c44805473b81294dc5feee4c6358a29ce86cd404342787dd9e823e1da6a82cd0bcc74f286d44b7663f2e2e": "0x046f726d6c76657374e8ffff41db999d3784a701000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc64755a560a6e7b022fde2ce4ccef2243c18e828e85cebd4c7684e15d2e1e0d0699b243f76ed457d22895cc48f3e3b8c35": "0x046f726d6c766573740000b46f320e4dfc0e0700000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc647d1e019255f155b1661cbc344650b32549b096144124726bba7b5f3518ae1229740be100646ff0e4c28c340bcb80239": "0x046f726d6c76657374f4ffbf3adbf8aeeb3b2800000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc647f82480a4b98fd0aeeccb69bab9cf45c450cc0c6b232c68082436ccb0643ba45b6de77b2e5abc4a416aa7ea282ec131": "0x046f726d6c76657374f4ffef12c7d5d2e31d1d00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6575c2ebe0e2e82acfe7764d89a8b379c302267ef0b206915c96f39d81ae769ac11637665be9e014e4898fbbf5db92f31": "0x046f726d6c766573740000f0ff5c9862e9774700000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc65e52e5fc69d19c5249999ceb9ff179aaccd886be975fbb469f788aceac28cd295b7fa0e5c691b8e3fd780fdae59aa144": "0x046f726d6c766573740000083e85a67d9f257800000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc671e68bb6be54305b43fb93f16a9e922d8912d71a1cbb7efc012ca9c4cd6b7300cddb39d77f088d91924891531c5421ca": "0x046f726d6c7665737400005cde317d8b560f1600000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc67ca5649b924e4f7bc893244ea7d7289ddb5c859a44555a3852007f4778184309f12a02a22276c37decd753ed5f23e56e": "0x046f726d6c76657374f4ffe7a1530851f1ed0200000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc68267d571cd2043eb6efb3c65987bf59adea39270c911c627c2bd87dd8d7f9665a262535de29d894d9a8347137fb8f237": "0x046f726d6c76657374f4ff235c5e64eab4340200000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc689730c255c6a693ed024ae6ca098b117a8be9e9b93257140edda73958d7cd2c49ef796845cc8be9f56ea0829f413ee1e": "0x046f726d6c76657374f4ff5b08172fd77e070200000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc68c55579a256cc8aa3de388477e3c2f10aeea4fcb658f17b2c6cd1fce911866307e614dd49c7324eb9ca193ae037d9c0a": "0x046f726d6c76657374f4ff07430d8299710e2500000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc69263431d73699db702329a3fa227caec2e28436ce437f5f6705fade3f5986811bbe50fc6a78fc7cc3896d5a09a142941": "0x046f726d6c76657374e8ff43b736b7a529a40200000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6b2611eca3c4d08d1f96a367f02e7ef421ab54e6f4b40816fe44de8fe8933fae4cbf7239428e080e6fbd92dd6c6bdcb2c": "0x046f726d6c76657374e8ff5f934945800ae30500000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6b2790bdc65df4f43cd1fa30327e0e4616262eae57cdf41aec44acc93f416bfdbb6d8a1430ba19b779ae5c98d6b7df870": "0x046f726d6c76657374f4ffeb34fd932ca5b30e00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6b6ec98437c6aeb030233efded28ca4eeb621672f0d8be43b4dcd16aa2aa034db3fe3212b9f46fbfc26668426f9510a65": "0x046f726d6c76657374e8ffef2aefa40978832300000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6bca32e4c2881d806c76954996916e56540cb8e75a9a1e766c8a6b551b635e513a16cbb8f4d9aa13936254166e4de4018": "0x046f726d6c76657374e8ffffa216aca2722c5d00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6bd8f48d51b9726ca4bc2073ac23559d59ac654f1421b1c97b2380e08e297bd16281bdc486be24d970b9a5804e37b606d": "0x046f726d6c76657374f4ff6b76ee08fe69d30300000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6c6468891467af33e5ed0b214c64a254514780e5747055d126e0d809b1f504def7e67f14c6256012ff2a4965f5b95661e": "0x046f726d6c76657374f4ff7ff64ae1c7022d1500000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6d8e3f5f6e0e7467fb94c6f63e03209d588a7d9e994528a48574fef4fbb9b731976760ca7a97358a38734c2ef04475909": "0x046f726d6c766573740000bc1bb190e156871700000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6daf780801663f5988ea2f39ab617da297a8c2df3c7945888b20fcfc570c45c7db18e20c9fe57b66b0071bcbbfde10e60": "0x046f726d6c766573740000f45802b1aaaeb40000000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6ddde0c79d5570b8684a0379815fb60c6127661e3abe3f347aa88bf2cf09545f387f03438e8ef778fe0adf3bfc61c395c": "0x046f726d6c76657374f4ff774acc5e33a8b40400000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6e10702f089fdce41f89785cdc64bde8dd46827949a45e460ad655510b58be8a03079eea740ab57f3cd8adade1de78935": "0x046f726d6c766573740000b46f320e4dfc0e0700000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6ea7d4c5edeed232ba55a698373b8749c146459b6f23d9ffa4876ba11293be2dc849cef7d5aad3c583a5526764dd47a54": "0x046f726d6c76657374000040fa1001fa55e14500000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6ed8dc744f3fa96cc08a0e88c2ec81438a02fe19c7b04359086a7753e0ffb918f3b8bdbdba1ef0db8fdd50f42e14e202c": "0x046f726d6c76657374f4ff7ff64ae1c7022d1500000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6efe1dce87a8138c87a9755a192d55aee4e448bf0f6c08e0443fd318476062713c3b84e1f0d3558206777991441ed0a1c": "0x046f726d6c76657374e8ffffec95c28f055a2a00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6f2300b6e4e4a41213463d1870331bc97b089c0020178b1025ab79018dbf442db463aea6b55feaee7c8500e6373a40c3a": "0x046f726d6c76657374e8ff7f1af67cd4a00e3700000000000002", "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", - "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0xfffffb4b6864332cae5a050000000080", - "0xc2261276cc9d1f8598ea4b6a74b15c2f811187ede3c61f3269344d168d3e63373ab039f243151a36f024ad1a14816d2e14682f9dea76a4dd47172a118eb29b9cf9976df7ade12f95709a7cd2e3d81d6c": "0x08000100000000000010632d5ec76b050000000000000000000000000000000000000000404f241839560400000000000000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0xffffff5e123331e43d2cffffffffff7f", + "0xc2261276cc9d1f8598ea4b6a74b15c2f811187ede3c61f3269344d168d3e633706ce21d37f174aae79bf2ea830b90edfde9b986aaf625c0c7017411c00a43f2a07e0cd75adda2240a24bf720cab33e1d": "0x0801000010632d5ec76b0500000000000000000000404f241839560400000000000000", "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xd8f314b7f4e6b095f0f8ee4656a448254e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xe3f7c2bc432e0a0f756f428e0c68c57118ba5012bc2612b2ae989dcfe0d2d6a0": "0xde9b986aaf625c0c7017411c00a43f2a07e0cd75adda2240a24bf720cab33e1d", + "0xe3f7c2bc432e0a0f756f428e0c68c5714e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xebad2dde00469f10ee456ffd8609d2824e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xebad2dde00469f10ee456ffd8609d2825a36eeded3e33ee246ca188427546add00000000": "0x000000a1edccce1bc2d3000000000000", "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000", diff --git a/crates/sc-subspace-chain-specs/res/chain-spec-raw-gemini-3h.json b/crates/sc-subspace-chain-specs/res/chain-spec-raw-gemini-3h.json deleted file mode 100644 index 4811f9593e..0000000000 --- a/crates/sc-subspace-chain-specs/res/chain-spec-raw-gemini-3h.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "name": "Subspace Gemini 3h", - "id": "subspace_gemini_3h", - "chainType": { - "Custom": "Subspace Gemini 3h" - }, - "bootNodes": [ - "/dns/bootstrap-0.gemini-3h.subspace.network/tcp/30333/p2p/12D3KooWNmq4y7maKK55KKtRiH2AR1sTbu1sdwuE81wmAKQHnbo1", - "/dns/bootstrap-1.gemini-3h.subspace.network/tcp/30333/p2p/12D3KooWPF7mvVCctiH3nauWPSV47v37v6stfs6Km612HgnnuLAc" - ], - "telemetryEndpoints": [ - [ - "/dns/telemetry.subspace.network/tcp/443/x-parity-wss/%2Fsubmit%2F", - 1 - ] - ], - "protocolId": "subspace-gemini-3h", - "properties": { - "domainsBootstrapNodes": { - "0": [ - "/dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2", - "/dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu", - "/dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H" - ], - "1": [ - "/dns/bootstrap-0.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWFoiz2iTkmnnSqiL2oQRhGzaqgtUjYNz2jyWKQqgPXgx9", - "/dns/bootstrap-1.autoid.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWDoPp1RLHUDX7YpKLc3yhymNGykV5f8ZdYWc1sjoBUrCX" - ] - }, - "dsnBootstrapNodes": [ - "/dns/bootstrap-0.gemini-3h.subspace.network/tcp/30533/p2p/12D3KooWK7NuL4S6aEdy5gELnvhCGo6EyrWVARnBy7W4AJTVkaF1", - "/dns/bootstrap-1.gemini-3h.subspace.network/tcp/30533/p2p/12D3KooWQK33n2raSXzjH8JyqbFtczBmbwZiK9Tpicdw3rveJesj" - ], - "potExternalEntropy": "000000000000000000037bbc7fae1cd2c91dba8312b65f71352630e938cc4dda", - "ss58Format": 2254, - "tokenDecimals": 18, - "tokenSymbol": "tSSC" - }, - "codeSubstitutes": {}, - "genesis": { - "raw": { - "top": { - "0x0b41d0c7f7b4485bd7be1d66066b00ad4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x19bc6099459d33e46fffbc8449a0e7014e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", - "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90faed4eaef575446e4331b0aedf3af1258a3d7cd0171466cdaa0e615533bf37891d51589802d279537ee0ca1dcd7500e": "0x000000000100000001000000000000000000b01a416072d01f0e00000000000000000000000000000000000000000000f4ffaf1a416072d01f0e00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90ff8f7c8dbf8b1ab0da6bd1d0d1f2e79920e642365c10c6ec3ea0674bde84312fb8f26b9ee76fbcad37a892cccc04004": "0x00000000010000000100000000000000000044be7af43db42c3d00000000000000000000000000000000000000000000f4ff43be7af43db42c3d00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da91ef923637ea66cf01bee7ea6ea08e4e87a65d30c7b3606d16af154d852bc1b47152eab5b714ccc9e6d6af4e4a364b14e": "0x000000000100000001000000000000000000e038f8e815c2e10f000000000000000000000000000000000000000000000000e038f8e815c2e10f00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da92171efc85ee96dd122f3b2765b2b5d724a6e9105bbcbbe1019cfa1626a13c118e6f77912fce939fe987cbe6fd5704453": "0x000000000100000001000000000000000000f0812e80f655c33300000000000000000000000000000000000000000000f4ffef812e80f655c33300000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da92b52ea25f22ca37f15ba4b55494747fea44eff5faefb33ab41cb98d8b6003db5ed693d302430d285c9a8e0915df5fd39": "0x0000000001000000010000000000000000004c59b818366b690100000000000000000000000000000000000000000000f4ff4b59b818366b690100000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da931cee65b35d0b6feea23d6d6a6b35f05e8819ef00c0eb981957634ce31f2beed46e6206057485cda652d8b5664e5ab0a": "0x000000000100000001000000000000000000dc05274baef1f00100000000000000000000000000000000000000000000e8ffdb05274baef1f00100000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9328619bcd15d3a65e5828c4143340fef5408160bdfd98e298253355d60d54240413557532d97e9f297d18849c2848812": "0x00000000010000000100000000000000000000a1edccce1bc2d300000000000000000000000000000000000000000000f4ffffa0edccce1bc2d300000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da93cf7c292560b2853cd863055849dba959affdb642e45267fe134a281638b34973d04eabf4e2e419725ee4b9e8a425978": "0x00000000010000000100000000000000000060934945800ae30500000000000000000000000000000000000000000000e8ff5f934945800ae30500000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da93db2a7637882267dae62ddb2296d63f21c71e0c8615d19b0f973afc04ee767138e44b546d2294eccca2e4afceb31cb70": "0x00000000010000000100000000000000000040683bb3f386f03400000000000000000000000000000000000000000000f4ff3f683bb3f386f03400000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da93ed3bdf051aea0dd9d324e63d2d1fe9c3c13320415f16cc3713b95c4e94bf9e8ce08c765a970e1eb7f14f5c422819b46": "0x000000000100000001000000000000000000887e1ec84fbfc303000000000000000000000000000000000000000000000000887e1ec84fbfc30300000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9405d66e8362d05d2279a7f60ba93a27a867ae1095c920bb339b570004ac97121c989fdbdd3db3965908279b7c5724b49": "0x00000000010000000100000000000000000038981195528e960200000000000000000000000000000000000000000000000038981195528e960200000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da944d05c4c59c44805473b81294dc5feee4c6358a29ce86cd404342787dd9e823e1da6a82cd0bcc74f286d44b7663f2e2e": "0x0000000001000000010000000000000000000042db999d3784a701000000000000000000000000000000000000000000e8ffff41db999d3784a701000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da94755a560a6e7b022fde2ce4ccef2243c18e828e85cebd4c7684e15d2e1e0d0699b243f76ed457d22895cc48f3e3b8c35": "0x000000000100000001000000000000000000b46f320e4dfc0e07000000000000000000000000000000000000000000000000b46f320e4dfc0e0700000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da947d1e019255f155b1661cbc344650b32549b096144124726bba7b5f3518ae1229740be100646ff0e4c28c340bcb80239": "0x000000000100000001000000000000000000c03adbf8aeeb3b2800000000000000000000000000000000000000000000f4ffbf3adbf8aeeb3b2800000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da947f82480a4b98fd0aeeccb69bab9cf45c450cc0c6b232c68082436ccb0643ba45b6de77b2e5abc4a416aa7ea282ec131": "0x000000000100000001000000000000000000f012c7d5d2e31d1d00000000000000000000000000000000000000000000f4ffef12c7d5d2e31d1d00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9575c2ebe0e2e82acfe7764d89a8b379c302267ef0b206915c96f39d81ae769ac11637665be9e014e4898fbbf5db92f31": "0x000000000100000001000000000000000000f0ff5c9862e97747000000000000000000000000000000000000000000000000f0ff5c9862e9774700000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da95e52e5fc69d19c5249999ceb9ff179aaccd886be975fbb469f788aceac28cd295b7fa0e5c691b8e3fd780fdae59aa144": "0x000000000100000001000000000000000000083e85a67d9f2578000000000000000000000000000000000000000000000000083e85a67d9f257800000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da971e68bb6be54305b43fb93f16a9e922d8912d71a1cbb7efc012ca9c4cd6b7300cddb39d77f088d91924891531c5421ca": "0x0000000001000000010000000000000000005cde317d8b560f160000000000000000000000000000000000000000000000005cde317d8b560f1600000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da97ca5649b924e4f7bc893244ea7d7289ddb5c859a44555a3852007f4778184309f12a02a22276c37decd753ed5f23e56e": "0x000000000100000001000000000000000000e8a1530851f1ed0200000000000000000000000000000000000000000000f4ffe7a1530851f1ed0200000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da98267d571cd2043eb6efb3c65987bf59adea39270c911c627c2bd87dd8d7f9665a262535de29d894d9a8347137fb8f237": "0x000000000100000001000000000000000000245c5e64eab4340200000000000000000000000000000000000000000000f4ff235c5e64eab4340200000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da989730c255c6a693ed024ae6ca098b117a8be9e9b93257140edda73958d7cd2c49ef796845cc8be9f56ea0829f413ee1e": "0x0000000001000000010000000000000000005c08172fd77e070200000000000000000000000000000000000000000000f4ff5b08172fd77e070200000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da98c55579a256cc8aa3de388477e3c2f10aeea4fcb658f17b2c6cd1fce911866307e614dd49c7324eb9ca193ae037d9c0a": "0x00000000010000000100000000000000000008430d8299710e2500000000000000000000000000000000000000000000f4ff07430d8299710e2500000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da98d1ae6cc576e36be3db95844cfcd04253a2441e795639e09a33bf51199132d7ee10b9b67ebdb1ca30b14544c90018f7e": "0x000000000000000001000000000000000000a0dec5adc9353600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99263431d73699db702329a3fa227caec2e28436ce437f5f6705fade3f5986811bbe50fc6a78fc7cc3896d5a09a142941": "0x00000000010000000100000000000000000044b736b7a529a40200000000000000000000000000000000000000000000e8ff43b736b7a529a40200000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b2611eca3c4d08d1f96a367f02e7ef421ab54e6f4b40816fe44de8fe8933fae4cbf7239428e080e6fbd92dd6c6bdcb2c": "0x00000000010000000100000000000000000060934945800ae30500000000000000000000000000000000000000000000e8ff5f934945800ae30500000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b2790bdc65df4f43cd1fa30327e0e4616262eae57cdf41aec44acc93f416bfdbb6d8a1430ba19b779ae5c98d6b7df870": "0x000000000100000001000000000000000000ec34fd932ca5b30e00000000000000000000000000000000000000000000f4ffeb34fd932ca5b30e00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b6ec98437c6aeb030233efded28ca4eeb621672f0d8be43b4dcd16aa2aa034db3fe3212b9f46fbfc26668426f9510a65": "0x000000000100000001000000000000000000f02aefa40978832300000000000000000000000000000000000000000000e8ffef2aefa40978832300000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9bca32e4c2881d806c76954996916e56540cb8e75a9a1e766c8a6b551b635e513a16cbb8f4d9aa13936254166e4de4018": "0x00000000010000000100000000000000000000a316aca2722c5d00000000000000000000000000000000000000000000e8ffffa216aca2722c5d00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9bd8f48d51b9726ca4bc2073ac23559d59ac654f1421b1c97b2380e08e297bd16281bdc486be24d970b9a5804e37b606d": "0x0000000001000000010000000000000000006c76ee08fe69d30300000000000000000000000000000000000000000000f4ff6b76ee08fe69d30300000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9c6468891467af33e5ed0b214c64a254514780e5747055d126e0d809b1f504def7e67f14c6256012ff2a4965f5b95661e": "0x00000000010000000100000000000000000080f64ae1c7022d1500000000000000000000000000000000000000000000f4ff7ff64ae1c7022d1500000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9d8e3f5f6e0e7467fb94c6f63e03209d588a7d9e994528a48574fef4fbb9b731976760ca7a97358a38734c2ef04475909": "0x000000000100000001000000000000000000bc1bb190e1568717000000000000000000000000000000000000000000000000bc1bb190e156871700000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9daf780801663f5988ea2f39ab617da297a8c2df3c7945888b20fcfc570c45c7db18e20c9fe57b66b0071bcbbfde10e60": "0x000000000100000001000000000000000000f45802b1aaaeb400000000000000000000000000000000000000000000000000f45802b1aaaeb40000000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9ddde0c79d5570b8684a0379815fb60c6127661e3abe3f347aa88bf2cf09545f387f03438e8ef778fe0adf3bfc61c395c": "0x000000000100000001000000000000000000784acc5e33a8b40400000000000000000000000000000000000000000000f4ff774acc5e33a8b40400000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9e10702f089fdce41f89785cdc64bde8dd46827949a45e460ad655510b58be8a03079eea740ab57f3cd8adade1de78935": "0x000000000100000001000000000000000000b46f320e4dfc0e07000000000000000000000000000000000000000000000000b46f320e4dfc0e0700000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9ea7d4c5edeed232ba55a698373b8749c146459b6f23d9ffa4876ba11293be2dc849cef7d5aad3c583a5526764dd47a54": "0x00000000010000000100000000000000000040fa1001fa55e14500000000000000000000000000000000000000000000000040fa1001fa55e14500000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9ed8dc744f3fa96cc08a0e88c2ec81438a02fe19c7b04359086a7753e0ffb918f3b8bdbdba1ef0db8fdd50f42e14e202c": "0x00000000010000000100000000000000000080f64ae1c7022d1500000000000000000000000000000000000000000000f4ff7ff64ae1c7022d1500000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9efe1dce87a8138c87a9755a192d55aee4e448bf0f6c08e0443fd318476062713c3b84e1f0d3558206777991441ed0a1c": "0x00000000010000000100000000000000000000ed95c28f055a2a00000000000000000000000000000000000000000000e8ffffec95c28f055a2a00000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9f2300b6e4e4a41213463d1870331bc97b089c0020178b1025ab79018dbf442db463aea6b55feaee7c8500e6373a40c3a": "0x000000000100000001000000000000000000801af67cd4a00e3700000000000000000000000000000000000000000000e8ff7f1af67cd4a00e3700000000000000000000000000000000000000000080", - "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x00207375627370616365", - "0x3a636f6465": "0x52bc537646db8e0528b52ffd005864e3055ef107bf1854209a19271d454922d6df2e97fff7389dffa73f82fff3ea737c387f6f87cbdf9f7bf707278ff3c6d109037b203899cc368a81f111e3fd460d31ea80e142da943beabdc17cedcd805ffc27db0821841042c8de5bcaf0197917f518a9f9fe7ca4a9f978eddea47dafc122782cb38dabbdbdf8353844bcf6b9235ed3bcfee92c40ae8fc88e1e0518b21bdf675ebbb7d13bedbc0487602f88882c57817ef80a119175b9d8ed52ba3ebbbd3b834710e928d08f006c649c795766bb7bfd6df4463bcf51a0eeaecc6e67d0081e963b4fdce84f8de5ded11f01d8661c8efe7416cb7da3b7ed3c830618b25c65b631233804f6f9067564f50ed9ec936ee7917dedb6e56394411d1368d68de38a87bcfea2783be1ec73e885911514fe02281b543ae97c5364056dbf00eafc536405c55f0075be2ab282b25f00f5a06ebbf6a09893eae51ebd07695d6f7f337dfbdd50bfdb5fae3dab1738c180f5b63c03dffd76f5c2c0fc7eef9e9dff455690576fa974ae5e987a553745eef1d77bacb714dff596debf30377dd63b1fd60b9c5c5c3eeb056faa17c34eaa977410fc351dac17c3c28e2fd58bd57b7ae98dbdfbed77f5c67a01d46f7ccd51bfdd51f5bab8bca5de96732ff5bab47028124652c5c4d4ab8af985794cbd61f8ab3df599d251a77ac352e9e1afe9b55e1a1a9a9adfed35f5d2a84ad52b91a8eae34e3f412df54a025f4b94fe62a7351426ced4aff2baff326aad5d32919e3a9da5d3f8ff827fcd35aebda75e61b2d7cbf8c52e83d2dfed3406bd8cdf2fd6d490527fc79faba9a9a9bfa5d77a6b6a4cdd65c4887119193a73944adb2ee3f4173cfd7fb13f46bdbf2ac6e9af77d52f97a2794bcbeca75e83425d3533f3d351aaa37ebfa350bfdc6b6e833ac95cc66fbc0c14cd55326ef34bbaea373b7dbda87a51979141d59bba0cbdccaf7719d4af76d4639c4e57cdd42b53afcc553fcdfcf46bfa09f58b3dc6ff5b7aa9a9f7e5a5e6177ccdcb53f5d67c66e6ff8579eab7bb4dbdb59ea6de53bda7b7b41c556f4ccc4ff5a2ded2f2d36fd7204ef5c69c1ef3fbd51cbcead35c86ea0b2f536f4cbd328ff9f73df5eb551cbceaa7ea0deb0550bf5dcde1553fbc8cdfec32eaadf50228ea3d46bd5d77977a5deec5b8f7cb551bafdece3baadeee1ff7ef77d6f3aa8ffaddfe7a5f5e5e53afaa5ed563ccd3d49b4a5d552f0668300431fcc0ce79d52f4c55f1aaafaa375555a67a8a2bfe4c4ccc51f59e602e536f06258b2760b031f231bfa43a63ea85a9215899577dd36fac3678d537d5fb522f80b241e05dea25bda55ee06483e2c37a41f0a47a651780f00534d8f8d3596c3ce9b7544dbcea93ea05eb49ab21affa5b5657bcea7ff57af502261b94bdab370357600116a6b05cbd406883b2287a4b5efbddeac7abbe566f564d71c5bf58dd78d59f1f7aa7aaf034d34b677993c373f8a5ce14dfa7a8a24f738e9f42e62c6f74b80ea44f51459fe58d8ddbf849ea4c51aa2f987fa5bf7c0af0dff92c75a690a9aff0a4d3a788f1eefc4dea4c31eb6b7ef525e5677dcd6bdf5f5f7dc95a45ff25af3ae953bcd497c97498fa7a7949e6307fc1d49789def417ccbd971e737e2875a6e0ea8b7b8cef4cf55573edb779d46efa2bde545f59f6595fdce75fa6779f02fba9be5c5c1ed657b7d5d77699ee2f9977f5f57d7f7547bd65ce7bf59565e7eaebabafd4b9cfeff32fefb3beb296bfb2d378fd6bbed6978bcb5feaebe59a76557db9a8fea2bdbcfea5bdd6976afb547f6db456b16aa9af96bfbc1cd5f2f252f373dc55298eebb84de6c50443faa616370ee693dd4b5692c9bc284da4529432dafc26a7bd749907638291322552c66ddbd74ded85e44d98cd3391b428235792c95ebeecc5f4499b1ab38b2599ee2b52e56c6c5a4cddb7d1a0f1573c0d1a1b0c4ccd674cf9195e8d1a7f71af514346d34aaf390d8f3b8d6cc68cbf643ec366862cbdccd7bc8689f41a5ffd05f3150d1a7f75a751697cf5d796d9d87432aff98cece533a28d8d4d8dbfb4d7a82f1b1bd2f755ada9bfbca7b6d79c86eaa9c3ac4ee32fd369cc9821e3b5be66fcf534fee2febf660d7d4b4b34bde636a9d4af521df5d49ffa8bf494bccd6ffe2afda67366befaabf455d37ff59bbf60febfe469cc9899a9f90c8dcffc25f399feabfbcc2b0af5abea2b555fa9ff28d5517f7947f55fd9eb67fc353fa365d8fca5dda6be64d8bca6be645ca5fa8cbfbed7fcb5fda6be6ad438ad2f547da1ded2f299fa3a9d8eaaaf99b7b41cf5d7cb51f57542fdf4975779f8a64fbfba173e555fa7fa3a3d75cf7bcd5fdc6bea2bfc6bfeea2a11bee9875ffdc5d527f8a6bfaaaf1ab58aa6d1bdd617c7dda5be5cded5777f6d15025d7d71dd67ea8bbbb7ddfb4ba622c137fd99bf5e6a117cd39f515f362f97515f35f555f34aebeb34afa92f168391363cc9b282348ca0a825f3040e58e10437982105533ca13585cc79e40dc3548e5159def069eae50ddf5437bee9ab52329fa92f14cc4ff53504041d8c014a1419d0a0094068c90ca9600356100111aad086282d68c9fc25535fa51ac6d44ddef0612acb1b1bf5ae2c9f544f7f7d9509bee99beaeba556d1ad29bebbd457e92db58a9cd614a487f5f57d2fd5d7500cb280431631c0020619ced022f115aee800062250011622b4a145fa8b545f5acd01eb49def0bfcaf246877a7358feac3962edc1377dafbeba5ac5aa35c53c575f41f4808b32dc008c285ca9416bab55bc35454d176bd8c110ac40851bc6d09a225efb4babafac9e6ffa2fac86f2863f2bcb9b1ceacdb17c59577cd3e70f49a11a7187293c5e856c843238b18fac5564dd194656bccd91112b36fe8b2c6963dfc6edf1f1394e78968fa005287c063db65ec76eaf693c02e3c7bcb345d66d2baf434804d7cd8b5fd3693fde01ea2bf647b3455c4a9efc9a4a0b16c9be29b6c847e21da026b23f02b0fd78068f98440dee08896cff23b2fd1845caee8ef23cb1a57c9452f6656f367eb3b1a68c889f8f9fd5d5b62b833bfab1def8be8cdd4e3cb65b64dd199214617cfff23d497b08e3e511f13eb26e71c53c71a89b001e66990845588235a93c5e85f3399175b71c9175c34716761c91352df65364711762d0c262574556b498bd9fbd39163b479dd8ba9fbd278b3d8cac78eca6c892c78efd8bac3e76b6c1aa0f1f599631d4dd46bc3edbdc1ccad6ebaf75ccb8eaf98347cc6b95f3bcc77a5dd2f6bb9b22ebbbfc29b2b66fcbb27ab377cfb62fb2b6cb8791955ddedb685b2fa31c571c57e01b2422da195760bde0bb6f942d48bd8edc92b451b61f659bd1d5c9f69971aecaf6e555a1ed7ab56397f764b747d9767413409fa32ecc769b6cbcc75efc1824227bd7bbd93e538ddeb6da25c8b3a57f3f2bef4d9063cb1757367125bf9de38affb8daa6e5f3441ea951b64c39aee227bd6d7f3a4b962c59ec1db2fc8c5e97b4fcae0deae0ca71c52056c3b88ae7899f957f64f1e55791c5561559b7f23678475a798eacfeb5b1f26c23bdc67ee0b1cd0de3efa6c3f1269eeff18c50dee31aa1c737423e3282c4f2911447ec2dd9781f2c1f6d208a8da08e1dc27e3ccfc8d21ebf4516db782f823ab4caa1bcbcd79fa46c35dad66b50de93d4d53f3a665ccdef08ad7c8345b095675007c7d5fd6c63f50e596c931abdd3de7997b4d919d4819d277a1e834464f54e9b7dbb46efad7649efbd573241e43e61b5735c69e7911bfd7959798d5e959df7facb285b49d93278c4b418fd91567e528eab3e833a649d71d50f2dcb18d25a52e1716435b7e57b258e2cb67c8eacf81959fdf344af2987f1de0c1147a6300e5b2f7e1dcacf90a408e7e5fb11d4d195c3784939aee4bdf8cd1071640ae3b06570568eabbb59799ec8a08e1957f23c9127f2c4060d3064e319d4d1e7893c71a8bb9de0b1cdbd8df7b846e8f18c90e3ea86369e411df20d0ef10411119106acbc17bf1959f27c8eac3e9fc12daee279a2a45f5cc5db08afc9c6f7e7ef66e33d5364cdb8e2c79f22ab6dbc2ab2e4e3bdfe4e91c5369e41799ec813272d526383866cd794119bed6fb66bca88fe7c7f56575b5939aef80ceae87adbf679224f649b587d6e59c690ec3e82c71408afcaf66d22abdf5745161f414a14db7f64f1d10796d8fe2ab2f868034e6cdf4603c1b6cf5287e30dbfcf5287e3cddd2cff6eb6cf5287e3cd0d2dff86b6cf365d7d722ccb18eaf6f178847d8e3ff0d9f39802e1fd6cfc17597c0429516c7c18597cf4812536de1459fcf85364f5e3550d44db78b689d5e796650c750be1f12ae4230d20b177b3fc30b2f80852a258fe16597c64062896ff45565b3e471d6e5d93e5b30d579f5b9631d42d008f73086f68fbabc8ba9fedf74f917557b6dfb711596dfb6164f1d1069ad8be29b2a2ed73d4e9d655d9fe1759fc3edb74f5c9b12c63a85b011ed308f9ac8154a010430e3ab00ab003d3c93cc244c20682ed03db916e0b9a153233686fd0c2d0c2e01d755f7452c0c4a02dd1b8d09a683cd05ea029d1aad08a340e68536848b4106820e8bed0792163814694c5210b237b43d6860c4bc606ed8ab6864e8a4606ed09da1934303c117823c8ae801ed0d2d055cc164c25f305b3045e0f34216841d08aa01141eb423b6a1c681ad09090c1413b42e606cd089a179a16b42ada183a307462e8c2a0b9418ba2354183a239419ba27141dbc2e6010d8bc686ce4a3786ce0c5d185a14b42e6860d0bea09941a3d25921a9207f207d2085208320bf902e90309047e214e211da0a5d858ef2436448051280c4110c5880021060801d0f7040035a1a1586982ef8411b020e1f78905cf42cf191c0a3124bf055f115695ef0e0e0654162c1ebc2dbc21b825783a88228852606b98527050f8ae70420ef08de0abc147827d0a4e099409b4257868e0c5d954e0bdd94ee0a9d15ba2a7459e8b0d045e9a8d04d01abd241a1a3d245a1831293744de8dcd09da1bbd219a1e3a25b1273d065a1b5a133415782ce035d07ba23dd073a29640dba0d741ae8883838c8344833c832482b1c168e0db10a9706ee0c9c19b832c43270639056c80e70619023e0ae7068e0c0e0d4208b38327056a4114e0c520d5c1b3837c42bdc1bb830b8387059ba2a9a0c5d51c7818e8a6e8a3e43672446815bc324426fa103411702ae0a0706b903ee0b52079c17382a5c17382e705be0a6705ae0b2c0618193c25d81b30257058e0a5c144e0ab20aee0b6e0a5c143828c828442b704f904c904b904d38289c13a206621b3826704fb825704ae09ad062e83134186da5d9c0258173c221813b0267842e02e70557048e085c17120b77d4473104dc1038217041e82c1c171c105a0ddc0f381f704db81e703ce076c06dc1e980cb0187038e499b81bb0167c469c1d580a30137036e09970527032e061c161c0cb81734173817c40e704ab816c831482e702be0aee054c0a580430197443a813b016702ae049c151c09b8117022e0907021e040208db80f7047380f701de0aae08a380e7054705370463829b80d701ae088b62c5b1c36386c614829b637442f6c6ed8dab061d9d810b5b0ad6153c306c6960619860d0df2c97686edca6606a9642b4334c34686cdca36864d0cb38b79b48561abb28161fbc2e6858dcad6856d0bdb944d0b5b16362c6c52b62b6c56d8aab045d9a8b04d6193c2f6c516850d0adb13362811c9e684ad091b13b627db1236256c4988536c4e36246c47d88cb079b1156123c2d64563d98eb6216c41d880b0fd606b124110a1b0f160dbc1b6c5a6832d071b0e3626db0d361b6c46120d5b0db6259b0c362c62518c123f10b120ab20a7f4119a099b0bda090d6553b2b5401e61634104c3a6024d0d1a1ab4326856b42c6850d0b0a049d1aea05541fb62ce2093410682ec03d991cc035907b22ab2a28c031915d80a66192407260be60ae61553053305d304b348b2419e415e916b906048324427b28a14436f404a91579056886288566413a4126412240f24122410a416d20652051109b20592057205f20ae90179026902590219458a40229124882b8861c829241552037203922866896f886e88718870886388618852e217a2122217e216a214e29498859884488678855885988278451c411441a7207a205611a98846e413e217d2898412371051d071903468387418fd867643b741b6a1d7d0696834f4952e4377a1a56828f4133a09dd847ed24a68278d04a9850e420ba18920b3e82639f1482be916f40a3a0bdd81261a027293905800e0c7046eb012786db9bb107051f604f9b0000f223e7a98e0c1c36b9984901e1e3c3aee9e2016f0e112e284123c5c3f7a8080242104080f1e28900a0e0aea0942036ee00524e22c0cf3c5815d4386347180d207070eaa5f184a0c19028444124ef8001ae2e67b03eff0b981697c6de80912328448500f108f2786584008901c3e363c31c4022e2786d44f0d1cd4b3848fa0a09e26501f18cc848b484f1250f808d20324e34b032701040a1f417a14f0f2a181790c512208c88cef0c1cd444124f2c21a42728a8e700397c5798702d21a427881986b878b898580248cf056ebe32705010203e5c3d49f0e8e951a2c66785a100ea71e287071022d625a4a709287c20f16f0cdcf343c81021428620c0d27c624862c88f9e246abe307010143d3e3c8278f4b87c000541d1638490214082827a1640bf2a5c3f3070500f0f224088d89e203a807a7e3891c41020245a00f8bec03d3d4af0e871416101199f179889201f4cc87c543809203c5c429c18f2e3870f1e43927022a80b4b080122640920413ca0b0008f2480f0e00207010d71f900ea2132640b3c45f56921a8270b0cd4c3030a1791267a78081922040bec02d284949e268080282164c80f214ef07005f5241164888def0a0cd46381269c10c223091f3d4c58817b5c3e5c413c828004f508e95982e6abc213ae992f0a1369c2872ba8a709202ed34705eef921c4872b4808909a6f0a9c0410984f0adc93c4901f49c4f8bee0247a7a82782c210448102594708289201e41365f1438c8450448cf8f1ea0d40705467d50382888134a0405f5fcf8e1c48ccf099c448f9025800409714208101f4d0c2100fd9ac0412e213e5c4c6057901337091f3c9208e2c410268256df1386a2c787c70f20412ce004111eae2141882c81653e257010504f123e7a9890f125c125a4a789257a82627c4e186888eb474f50cf8f1e2044783ce1a3897f48e01e0c0009e20105d010571010264edf11d81504248810203c8280a83e23708f6b4811fa79c1438a0071e2a787870b6808911ea09caf081cd4b384101f40a98f081c04d4e3ea69c207900f223c5c4388f00042c42e60e6eb82837a8204f1f12389235e42081022447c34c163080fd70f1f4088d820d78f9e6b81236a7c43e00b002162817a7c80863ce008fa09817b5c3e9ce87122010c48a26789257c3040872f081ce4030e7209e901ea614208907f4d84005122f5f1807f0009120204c8f5440f0f28821021e28307504f12418038d1f2f93124484bf5ed808366be2dd8070fd5a7036ec287abe7002d1f0e300024880f202e204280c07c25609f1f2e9f150c3464005ffc414bec0133f1c3e5c3023c5291073071075084710b97a8035e02033e3c7a5c4e106962c88f98c8848938e1ea09e291448f2bc80920178f247c0c09e2128dd825a4a7892530e0c363888b87058604b1408c03628cb42b4838b205cb431e1f1111d91e92a80c3301668226d2da8c2e2e2e2e36363176f766d2308c93988cedc32426a5ecd648539ab4de24f6d2dd98e4306c6b0c938dc96e0d9b18d672b6941a8661cd69994c77d63299ec4c766759675996759665b359b26c96cdaad9f5d6adb59492a7ecee4ec5ad69cd2fb3bbe59c93009b246ddd2d92a7c793d40368951a9b73b2c4ba23cb9e3db1eed624476cc69ed8b43d7bc336ac594e4c6ed8c69347461640a7356f5246cbee666e8975cb9e73f29c1cbba786458edd1c867d9ad65262ad7d58738d31d6587fa496dcdc9a1631e629a59418a66911c35e243627cbad2563b33fccf384e06aa66c8dfbb44f636e625f635ab3640ee3fe30d98c69b2766bcd3dd31c336badaadddb6c9896a94b299b7b76d396dd5bb7b4ec0048c630896930dd413410dd2d7ba7653777f784e996ee5aa2644acec8547777b775b2196bee6600205b76dd30cc2d9bb97b3206d35b77bdc996929b7bcac6b86eadbb5bb8d4dd2cbb674f9e53b69cb39b76cb524fc9dddcb2b74b9e39a4ece6c9bc4d29236fcc2c654b9e3db999276fd8943da786c9c6b0eec65a36c6acc362e6c698995d5c7e68ac5bb6265bb2eceeb0db149a98346bc2eec861cd69dd38489fe4b06e9e73f2947246b931d6dd9d64664d4eac31ee2925b3c7733233736fcc1ae6f56cf922bb8525b36c6e3925333733c798ec96524ad9b2a5ec39b796dd7362736a3e6892d4030f3937629473ce184ae639e59c734e2e0c51cd13eb0e9418e67198ecc95d9c2d4d720719e3c4b1d1734e19a7161b6b9eed318354c02f48178e50000d69a2a789ac878993122e2778b88400012242f312a4a7484f101e4ff868a28626888f1f4382ac9ee849420890f3e0c3e523091e4af8e809e2ea5902a8892678f4fcf04124c8024e0409c143123d3232eea12728a807884813437ef000ea2932e4470f100f1f4149fce8e1c1830feb871e88fce8d19199d18179f0f9d1c3c48f1f3d4ff4d818dc030078f8e1871e8082780c71118102e8878c18287a7c78b89ee81112c3e7870f0b040932042807af89213f561e900f57500d1c2c9a20571090277a54f7f1f1e3478fcf51dcc39021403c92e801ea490268480f1020570e20eb871e78f4d0e3e32388051ef3c34790101f402e1e2e204d58c089201e4280f860e287124a0cb9c9c1470fd04ccc12a892901e22447ca86e96181284c71242802cb1c49020289a214a0801e2e307909e250eb00aea590248123c7a822421c4090bf0e8290204a827091e3d3f7c2801d4e312022409277c0029c153c3e5449021413ca0500208504f911acc43124082f8e0a1c4101e4a0c190244844710101e414e0409e9091232e4070fd7133d3b1411d2236398872680b8843801c4e3471090262ac83ce4e881071e4f0cb9808bc71242803011e483891833b887278028d10344a4965c3d41a813908f9e203f78f42ce10368882b28c53d3d404aa88a08e9911bf3c043c8102041403d457834c1036888cbc78f214182f8e0e17aa2274611213d92c6e785c84343439b6421a1a1ad8750b350f48486660f16ea7a0cf5500fbdf418ea9214121a121a121a9242b2c7500bb59050e48630890d6d43b287500b0dc51e2cc443424242b1070b750fa11eea1e424242dc8385848484584828f6186a21ad07730f16ca7a0cf550f7e021ac87d0d0ec31d4433d3434247bf0d050ecc143dd43c79c4133733711e48303211616a382c588a208e30d2c1fc1600b36b6c0f2910b886057968f94a0c1f6a30825112c1fad80896d2f2c1fa9c08ab561f948055658de893b9de5be315fe21d86834ed637fd59efb684068cc3169c9667c912bec176d61beb15b245a25d02a86d9f3375a1f77dbce3012bf6a7648b6cb62f9f35106cd9de686f66e53df961e00e2f0c24f6121106921d99bd4e88e0084c98627f7ad8bec202fb2344b2d7c5852c9c5a60af6b490b3c2ed8ebf200176cdb1b54851de8f00328f6063581b2632322da3125b883b3d83e06eeb8ed7b0dfeb49df726d5266844f658ef0c8e2c38c43c761e19ef90d58ed1941118157c6ed0909dd7fec359b264a177c846edc862595861a946312ad8486b6c8344d02230587545236ee323bd6d3123e2b363d427d6d48e79db62cf6aca8879edd9b13738c4bc565d9ee5b8ba7cb4840beb8a16ab37be485bec3c925a8c521b5d9e8de7264422f642c7cf2422e229b3092625a3c20d44579162f9b1bb06621259bea77d121c82a5d8bec7dab66d5b16b74df6b6612b52dfdb0014dbd7de6ce361b4dad85e531fcd004343f8aed1fe477db4f7254884f67e6bfc0af96804536c77ed7d5ea285edec77cf935f83446ce7ded1cbdd47a3b7bb764fa3a91d9388c8829f565a06c1f344edc3e2354a7a895e6d824368270da13d3c8f0c69ca08eda46b27559a32a2b3da3babd519c699d9b5c77ba1d4e1d6bc464d71355f3a49fbae814774f6fb0cefcc63e01129c699ffeacc1024126d22cb20114d9445cb796228755aea8c37f373fa68ef7eb5b3018686d0755d779ee8cdafc121fada19dcd112dca1bdf32131ce7c8971e6649c9981701269c082f7380faca533e370a593387aa5f54ef2489c779002914adf7962e93bc903bf735f65b6e1554eb2e528ff7656c3b892af361e8cda9197971797b73c7ce92f2f2f2f2f5ff0f8a57b4d03ae8135c515ab188741da44b0fde92c20e394e8c738a5371512920efebb77216177eedbb50b2995fef14e7ce920efb02d3d529b929411606155968f4640852dcd790c3b834764f35a1592559f2055c8b3979def670c1ec14d4062b39a85e761d4270853b1da3121dc042416fbc580cd342c131200234737a840841b542042bd4f58f9be17bf8df22795673002594421c4545adc390b229a0fc4c00a25403394dcc009918b0853b15910dda00211888a04c0c8d113170316db005369719588a9b4b07afbf25910c564010752848188a8c5350aa1ad12cdcf7a8958c980962d64410671304244d462f0002f168b190dbc79b6b98da447e8335fc3de196d0fef00e5d82cf843fc85f7992b568d5081d3c25ef4d2eac83259f919f00de10d62e773ec35d9cb5e40c208f63e1257f217086f1fb1f2c50fe58d1aaee8410b7ac0640a11510b7bb79a12cd1a8000061b7841105a46a8c069f58b5e5a7c2354c456f622215a7d8c1609d17a1931a0ff4242dec83794971103b263f5c5f3326200f6aeafcb1b79ace6fce6e888d7c081246441062bd0600b5000e310726ba8044f82c00216741125076968718b7f73187022a2561f89ac1a8d24c699023927c5666b18a66118365560e34047c43e7564551557589d53ce189de0f1d98677b0f33d4cb6dc2eb3cbec52bbfc96c9ec524a4fa3aab8caa20d264679b6c4d47cdb6853d3283ba655555c6575c6156f186d3b291f3db9a19597d34a29a5e4c13cf4674b7f88ce76942c63ec23bcec9ed7a08eeedee735fa61f7403a64afa7813edaf91ef52c1f85e00a3b19078b4ce33faa9da36de3996effe8768e883e9f276ef5f2b77b4caf77be27bf8d46f0cd3edb7dbcc777d493dcbd037cf7bc37f34fd090057f2ff0063864b1410c6589151db0a0e761df46e3f4b26fa3467cf53e61b97bf7182482eb6d0c1ca27b771ec9946d833abcead30dd19d6b67b9eab33dfe6e6f23e2b70639ca76523abd9e4ff018e39d8ce288aba3102cb13971859dc1abb2d8258343be4f1575ba630f8277ce38dbb1db88ac30ae36eed83b6a1375b678b31d4b594cc7144360c45e1c167b8a77da621e475571b55dc6a0b37cbbbce52ec490853d3598d22e6db4294d3b1f854089e5a310c0c09a68735515575b658d62e0cc685b69e445661bf25e4b7adb663a46ba1b3192f738ca47317af1931f47790a11061a608247486e450fe368e50b301402bb1d91c35710c063b74bd08858b2da3d8eccdc18e90a21b1d979622c82c76e8f201142ec8fd08eefd658ed8b6001865a60b77bf29be010434aec4f0fbbdd8b1d9944ba424a6cc6363cedcb406dfbba8da3dcf2b8afa3dce228b722b8233eabb763b3245d213eb2628acdded190a3df312fab047f9e30b2010d1059a0acca081e312fad8f3c76068b60ab55274ed675b2997c4b49d962d4a79f32e242c11385e25016312cdb9355c8bfdfbd619b756d6c5fb3fdefc812db0f9b6dfa0024cb47473870e48130b030e5f8830e9068619bc84a4fa73fa63d429fd680c51e2d17c18a2d6c3f82463491cdceb4c8dc11daa13b9fdad1d9597f4a96cf54b03916ab57d6f998c57af163ca23ec1bf11bfcf94f686555c5551359963184758481a744e8793b847cd38bc7b3e58bab697a11485099d917f373661eaf42ec279ec8ba5b119175c31e91953d88c89a363b04228b8f40c0c4669f4064499b498e62b31c36e3271c57f33cf11486cdb22cfb969daf442b2f61f730cab6c16343b0172dafb443fb766dfbbaf3f7ee3bf7aee3be6ddb36deea19870b230b7b767e83dd73ecf706756c3c9227fa68e7ce3b6d337ac6e187919563f9d8663123b4737596baef0dfaf0ded5d3574d6d19f4682abb0ed6dbee791fdde837eeba7bdfbeeffb576ff7eed87a6cb7fe9916d3e89dcfea4f5b6c686b6c099e8c97b447e8235fc35ecb47901285776e8e9d43734767e7e7fc95f57207e02ed859b3d0e6996a9fd40137a8d04596165fd2fbb2d2270853b1d9b15f2120986f5c3e422204eb6a9b55214cc5fec82c592c56b38842889b80a4a555226e0292fbb297b3b1863d8311e0262069b1a435ac500f613142f158ea80475ab0e10c4f88c108aab49488a2012674c1491c9eaca1c5f205e117577dcdb2114ad0c4b6953108efc48e80052cedf137246738ae2e2987f15ec4660475c8ca613c4639aee4bdf879f393b4cf603c4fec29314ac99b9440388f4597b4f2d14697b43b5c72dafefcecfee2ce297fecdea474fe4e221c90bd0ab524a8439e47320801ed597d0db55ef2b195bd865afd45d6cc5ebfb88ac72210b2bd93017dadbe845a5418fd08c062efd6a4b262f44a3b9f51b61a8d2d0619205b7d9e285b33ea3411111111512b86334622784102b0f1530cb5fa2f2aa280a22f80d650abcf23bd0687c8028a7eac5964200abe508b4124babebac517eaa8008fe39c93b665504ac00875e2355800150c8087939ee789b36e956de412de01c2b82a796d4438671dea268093265232c7c7ba85fc1befc3f547c8f2399441154e2c1f55b1c4de929da51959f261bfc3091a60c80ed97ea42429427909eac0226880a18f232b3b690aecfc0efb18a533ae3a7b6a88b6d9b3bab5659b597dc238780708e5a34f7c93a6681ea2035c58ccf25115542cb7786cc467bd5287d9e5f9f1b1ca4f2c8b97e7891c59a921e2e565f6c6ee233f9fe9c82a879fe5893c71a8bb79e0b111a157aa228a8d729ee7e7bd520142f9f81f213b3fdf3a7eba2db08aac0f586130ac3cf62944e4c60fb1f34fdc92e79137f158bd4d64e367bd5d64e33d4999601cf9a6401847569214215fb197af487a7b58798d7be9a0771766b7c747992452c7a444eac0489d9897ea52492d353ccfaede53ccea0d2df6ec5a0c85a126caf2a664baf6f9b0decd4e5205638de011f2db3d2e22e4a3222ab6ed26cf51a06931d3a3f6d8cd639804756cef28f78662a2dcea28bcc3477c64bb0abcc355a069b9c7781ea9c3a9ff6ebfe1efe9a7dfd56fcecc6f0e1b4f44eaa42af3cdfccc2907aa32dfdc9c13f6bb92a9cc3758bd3deccd7e1fb36d3095d9546716cf3578801622c24763ebcaecac9df5bdfe80f04ef7903a4cf08eac18edcf3ecf14db9737fd2839a0d8fecd71b2ba8db17f431bfb77c312e50a14ae623b9ec19eb20db944120dae83e5a32352b04cc28204bcc3f3f81e01efd8c7b70878a7f5f846c23b03787c5bc13b02787c27e11d9bc7f715bc03c4e35b09efd4c73716bcb3f3f85ec23b7f7c6bc13b00788c01885d021b8d74847c546485f54a6c731b8a3d62bee619ad39466f0f8bedf0fc4a4b23885fa602eb97afe0c32f6b81bb60258381c7c066b0f29177ec6908e097bf10e297a510805f9ec28c1cbf5c059d5fb68205e297a5fcf0cb58c0f1cb5990d1c32f6fc14ae6c2ce2f53612f58fe020d831800f0cb56980c5c062bdfbcd33a8d33ef0ce0342e411ddf07401b09e3c4b7688b8071e22ded11304e3c0f6d12304ebc00685bc138f142d02e01e3c40780b60918273e08da27609c7820685fc138f13bb4b1609c7800d0d68271e26d6c9e23c67568ce52fd87d471ccdc07d46b7d0f3ce4dc80f90ea6e3fcb7a1430e3724f039c21ae75623e1c71c6e73f37a5efdef2a78a746059ab6c663e4231bb7eda6ded0ae6a0d7aa933c473e4c8c9b9abf7ef8900b7bf1bf3a9fb0db9dfcd6ef1db1b89d419a232dfd090d751996f66c8dbd4bb11a032dfc890aff5862c75ba32df50f9d77baae1475047168bacbc27df31162bebc5cee74eba1259d9f93c3206bd8d021b4f436fa7c0c6abe86d15d8f814bdbd021b3f436fb3c0c6a3e8ed16d8f813bded021b2f436fbfc0c6c7d0db30b0f130f4760c6c94818d7fa1b7b3b0f12ef4f60c6c7c0bbd4d031b1fd2db35b0f1257adbc8c693e86d1bd87890debe818dffe80e1d7b85acbc473bca517a6f6f23b1f15a46ef9095c7a80b3bc0ac5964a02f1b8a65194272a8154128455fd878aca774177847bb7c738177b8cbf71678c79bc23b2015dee1a18a95bec23b32976f3078c7c6e51b0bef9c2edf61f08e0e9760b0720c569ac1ca3458c9062bdf6065162bbf60a518ac2c839568b0720d56bac1ca3858e9052bc3602519ac3c83956ab0b20d56c2813beeb82322b7ed86f6f21523968f2c4fb1455ed878ec5e89cf36371259798f00217f0688303e1ab111d9ad89a48e10f515807b98cd329b6936e36cd6d9ccb319683392cd4a366bb1998bcd5e6c0663b3189bc9d80c65b3199ba56c4663b31836abb1d927eff0f0ec1befc43cfbc73b38cf1ef28eccb39b78c7c6b39f78e7f4ec2aded1e199f62b6d96bd79c77bf6c83bdc06d29ec238f21eed2d308e3c479b0b8c23afd1ee02e3c8f3409b8a17fa0b0d86b6d260e440997182f8cd0a88d7a0cc383ba70180cfa0cc3839646e4399717458af9419e787531cbf0fafa1cc383d9c1e8332e3bc9c8632e3b85c4599715ac2cf9448cf116617e2a8cbf7942d46e6a77a4f4078273b3dbb7c0fa923446d284cf00eaa7614c691973fd1ae02e3c867b4adc038f27c73dc9cbbeaeee98627fb85f6dbecf7bddf56e09dee00e3b0100d045b997a4f76b31b4cbd9bddce5267cbb2ed55d4ad001ce66ecc279bc96730375d038fd0b130957425aef8040889c81bf9d44ff56e3397a937443da6ded3e99dccef2ae637c7c2fce6b0f2193884b40108f94888f3b177aade6da6de1055efe954ef65ea5dc5c0d49b83760718878f813bb0472c00d4a84867b17b0c2a805b5218dd218b3d00cf6891b658cdce238b2c51a46dfc900d00a5a26b09711e1904bd1c10f47a3bf48200a0979483de920ebd2d2c7a5d7ea0f70507bd303ed01bd303bd322ff4a25ce89d69a13715d24b53a23706894eb1f21ddde8bd7285a0267a1b89e5a22d2c1f4d3125887776b83c10efdcb8fc0fefe45c9e08eff0707917efe05cfe09dee92effe29d9bcb3711ef7c976f23bcb3ba7c17f14ecce5fb08efd4b8643658e9955e645235bc062b3b924bcc4c0c5683951cd80283a2b197af3491d479752b00e7775103c196a7d8ec01a04d246f5a1e9f3bbfb8b484251278d295ed8cf3db56d8f8ed12e8f0db26c8e1b74fd0fd76121abf8d8219bf9d029bdf56c1cd6f5f61b1db2ba8bfcd02fadb2db0582bb158bba0e6b75f60b186c1eab7b1b058c7c0622d83d46f6761b15e32f3db33b058d3c0625d831abfad85c5dac8626d038bf50d78f86d2439bf2d821bbf3d829d1d7e9b0416abd785d9edfca6173b42c76ea42b040803703e0f9419473e8736e3c8dfa09171e477a09271e471e8641c791b14631c791d68c638f239508d71e46fe8c738f22b6a621cf91a54c538f25d771af233e46de465c857792aff7dbf7c8d7c0c791a79957c4a3e26e633f228f993bc8c3c8cbc493e4708f3005ce6a66fefeaddba7ff57b4ced2af00e4ccc612edf50a44e002acb9bdb441d8577646a17310e5f3e8676158cc387a11db0fc6662aa97a758be3c91ec32fb4bbd395ceacdc9de52ef2a7b58efb397ea3d65d9c17a377bf9ca572f63b17cafde76d2d5cb572c9fabb78facac97ab58be566f37d111ab0ff6f88c021162d8e3b1ea837dd65b64f9aecc32e3dcaec2f2ef2d4722cb3284e2d04ea428f80ea6b8ea93a4a728365e1559f3688a2636ea74eb7ef687c7abb06f8593dbf8c936d10b1bf21107b0b09c15b67feb95b4ecdeb68561d7bb9d1feb0589b8e5dee0016a6c579f788c035b58ecb1ba30ab1de32eabf78fde69bf33eb84f2267be9772381bf27dbf5cacfe708bb732bcc3652bd2158efa929c7d5771ef9d1aca340d3a676f4b5772d8259ecda0560bdb07c440591bda1cdc2c8ba4d64f91991dd3e23ebf2918dd13238041fd92dfb16596db36bb4ed0f4f769bacfae4743d8beec94afe263f5bf7b327020ccb012a363b1f598f79423ea2020c9bbdcf0123968fa6b862b5eb60f90859406239b2eee695bab3cd8d48ac76afa30208b3639fdd27780466f94d5d98e57abd68b72d0c4fa77fb5cac9b9396cf79bc36267d661bee98e7d82071000116dbdf344a601087db637919d7fc91b15e92cf7781feefd4b03106e35b59d8fec6d57c137844d64d96a9fdcf95e7f1dbd6dbbff4ad5af26f3eb997e4b2dbf2fa45f19ef37d5bf35763ef20e7d8c5f8ce63743fd72a7df2ee61784f925bdfcb6b8fcba84bf30a5df18f017f5fdce6cbf34d96f0c3bcfbc23e3f3cd3bf5f393776a3ebff10ef7f98f77529f0f79277edec43b339f3ff10e7f5ec53bf108e368d865d0bec238da2bed33308e764a1b0d8ca3fdb4d3c038da6b6883c138da63d05603e368a7a1bd06c6d1aea2cd06c6d19ea21d06e3689fa1d108e368e7b8a3b85327e3c58030245329c6bfb4b8b8b4bc8430a518920c53661c3e88fa66bcd44693c5b09419e7d6d8db578cb89dd585d9ee39c279d957b87ab7d0debec2f59eeced2b563b10de9915285a201dfc79ed3da48eac3d8509dee9da551847bb76a61d06c6d13e698b817174fa48de68cf91232767b5fa4fa71bdeedfbe52897a15c760244d8bfdcf953a4ce4bdea8bbf63eea2a0d045bed2d06de99d7de4452875b278e626f1331147b9b6863275b78fa2a477b833afa1e6bc7be7dc71e7ac77e621d9637dbb1e70881a23dd2888e32a2238ce868121d49a2a34874d444374708d4765e5e3bcbafdeadded06af1e69e6cfc56efc96a6750476ac7f6ee5b2d82d9ecdd8f96c5f6bd8eb69520111b91e5cea00eaefe3c4164fb1e0b11f21107beb0322c1f4d61c436780457535bdd116ac0f6ef46645d9d2db244116fc86e443b360d68d52722b12c6388a6c31d78bc0aa3bc94975292000b2ba395527e027110211f5141c5f29195f74a37462fd69fce623d068de0231bebe5b1f14d2f10de91f5a7b35829259df436b883bbb0d603c23bb76d8e9cd54f2113bcc3965bfc1c21900e208cc3bf8cc3ef216ff8978f2cdf8b5fac3ef2f1caf799e09d59af3c138cc3b2a676c4cbc7cbea23cf47b67fe5f9123c82bbb09209c6e1f3c4a1d8f205de0eedf3dea4f19b543b8344cc6b3c716edc79e2a46d4b6d3d0675f06c09e36a7b76ee11d431eb1db233a321f5345aa4eda445da6af77a52ed5e8ccd7192ce38d347bb77060fa0dd9bff514d8f3df931c8d53b64b94faad16b11d4c16df54ebb3dbb46659cf56eef6be7911b65fbf3b291ad1639fa23ad16b7ad6ef1ceb8da1ec121da829f74ceca71b5d5eb8af6a7c3b0dde53d067580d7e8d55e24b441269106ecddfea385a1812cb6c866b74f7abfcb63d4a73b76cf9bf586767edbe6fccf6664031ab0404532cbbd886683862c57e779e4a4f2db8f76c57e976770c7b4dd5dd17607e98fb45d4dede8238b7d823ab04b3acf23bb63b448b4f25e8ccd36b821da62efe8d4ea6dab9da3b7397ab3ef9ec72095f1b6e57e0b303404cb6c83ab377b7f3b8fcc32696fd090edcf7f7588f97e47d9d6ab559f597f5ef64adbdf11da789ee8d1123fbe6f92e7895ed3369e6d8a5060d858aad1575a6999466a4c19322eeb13ec95556c94a84954c2ce51d0f08921b1c8a837776e61e39d5fc4a83f35f348081a558a9a3bbd08eb4fcd8cdf09c5461abf930b1b4b357ee7131b6f7ef355d4613ab158ac6c82c5d5368675657e4fe7b8325dd49b7567ceba35e7b872b9a937177115afea1c572df76f2f645019454e9155641379249dc82b33a8c432895ac99506235a212351341291601d46188fc4b8d6586a7034bc19b108495cade2112b5d5405a433ca13744a7971746eb489e80483b615934a1b99583ac90c83f6157105c5de9844886a536305924a464eb06114291a8d6d06f7cefb6e8022e4552a029882c011c306cfcc41435373fed3da5ea4525ca0505a2889ac98182535355bc834162a55cb5b60604eabcb39b2666a109d397d3947d6a906d1d3a9e94dbb28a4a9346f2b91f51af4fff46b5b89ab78fae9a799cf7c664a64c1c01ca64a64a95457c5c43c06853a8a4a64a59e7a4aa66621f4d26a2b37aada5552b5a9c455ac3d45e6328f6f2991555383606068ccd436f241d5fec2a63694b88a32646a3ff189a9ed04a6b694a021db4ea4174fbe90220228338a17ce00031b664cf082115b92021682604972891520b0a0463403fb79607842124b43d40620d88ee4832e24b19c4c07c890c56e9d1215e860469952661891554db3cab482c506e62d934acc04c3e66433a5c6cc5d68a866d03cc6e3e71526ab29438b1897c4558c414363129aa2f10a1a95c4553c8aaa68dc827e118bd8c42672d1c2474c98d81b932cb15736691bd655a9da20d51cf0f36a105de5892bae1260d35657442168d4ff946a7d4da2992591151fb590516b93c8faa979fc29492836514964fdd4c826474ee40d139bfa9251e44d7c944da6c41baeb25de1b9019678c376561e2644f186adacf75837f45891e0b1cd9d4cac9422254a94b88a5c70e79adc4889ab1865fbf6e4debda09ffeeaa67bf7850e3a7ce145e95a955e40d141934fbaabd2495c45ad4a287115a4693524177115b72a9bc455d4aa3c8a539ac4243568d430d2efc7a8a1430d1b3556de0ef74e63a50677ee3556efaeaa12b47dfb8986bc3cca27a854a271a3c3cf873b78a483cf0ee6d0e5f0bde6df530fcaa2f32ee3de61aa914f50f71fad1af974371cf79f5b6ddbe9b74ba95d5e7ba9f4fad2bb1af4d30fea6ef3ee318f5c4456504b4b8d5c6cd172c9a4e5718bc80a7271a9710b2d96b83c6a1159412f2f356a818554f288456405994c35627105c795e93289e9f18a2bac8849222b68c68c1a9320b1a1114a5cc5cba0f10b1a8f68f422aee2298d4ee22afe343ea1314a9442e3944825ae621fe1a239ab4a1a914471650ae3fbc098d30a8655ae12573ffda0ac32969afff4d906d5c42b6fd98471e2db03576cfc8f03227b5b49cd6fac6263c7c72452a79dc49bf8cd54ef16bed41b9e5cea3db5131bdf12935c7975e26415ff84d49154e24dbc950d8c508661239669c4c6dfdb1641786517396862af9cd2c44a244db8984be44d74f2e4a7662a9137f145a8d6eaa724b1c89bf8539a49e44dfca99153aac89b787945dec449348be44dfc44226fe26baa944de4142a39d078fc3442237c8c962b8f9760d4a041e345a84914593f3534f54a9717a1acc8c83c5e86b152bdbc68a6b5aaa2c3f6d3e945a8560e28d47d4a9fa977e6f1124b64fdd4ac9e32c1d4db30d5c8a77b4cbd318f974d9078bce4421e492fa413f924b22e4c955022eb9aeaf778f94564dd970a3e5e4689aceb52e3a594c8ba2d35ac25ba023fafe336ad9fd5bb61271b3f99589621e40dd9c494173c8eac20e63ed7db5724496285154890f4bba88bfa4dd444613cf1445cf19f88ab3e1860d82b57ac58a952850a1529454a94285f7c61f9482011577c24e2aaffe48913275e78c14741049123070e1c55d6d5cac6c6e6bf4aa53a9d4e2693290cc3effb3629eb8c2b2987bab927cc90a4085b892d41187f5b494c82ba1435422fadcb61c0f415b78b8a665a3045a82335a64b54929939f3db46b0db56649728ad1af96c47ac8471b9bc8d64a34f8461e5cb312bacfc3462e54db4fb0a2752872f3bb97c7473dc1ca983c4ea0a57e1291c650b95c46d9ba2694759a604c388a69c22e351b4a612845d140e111fd4d654af13276b7aac4ed45853759dec1352875b2ff536914bbd5dd4526f2309ebed24561e8995d481799378c3a57a390aa95e9e02d6cb55aedc935de5eacdf1adde1c2babcdc151bc61abd5bb596973e024deb095360750e20d5bacde9395d5e6204abcb9952e91fbe28a9539e0c8c1871cf873071c1d5ecaa16b72b0d161f51b1d742842b57ef8ed2339c8183de4a0430e39dc90345ee345a8d20f8dfaa1079a1ebe1b2e7fb1b98df3f987138e78191ffa31bf4d54d38354bd08d5e221f599fa6ad9a1f4a299160e585ff5325e846ae9f0e7508dae8439c75457db98f765641e7ff98b5375b53d4541a18efdb294999967bf3c2595baf6cb5454d5d556f5edd254575b9a73374675b58df1eed65457db9a7b240e5d2ecc4d97fe57c6eb9d719b5be3346eaa2baee457b5af882b598312892b791ab493c495fc0c1a24aee46d685b1157f2322813b491c4953ca549c495fc61688fb89237d12e8a2bf9173a81b89277a16d24aee45b28046813c5957c893220aee449f41557f2204522aee43ffa445cc9d7d0b61257316857a17d1457f234b4a9c4958af614da4de24a3e455b4a5ccdd08e12574ce24a1e45fb8bb8d222aea0d096a1fd24aeb0882bf918da4e682b892b28509c30161bdf4a2e43e94ff0f21be9320c2f6f6ab9fcc9e5f2aa974bcf06e61e86dac4557b1db7691936fb1baa11412a786c73e3515f7efe3294592fd7bbb22c4f82500978d69d2f5dbe9784ac9bbde56a77b9db5f2e77d3e5ed0e73bdc7dcef322fb297b160d14122dec447893265ca6d25b78f84f177755b899597a11486aae80ba52db44427e875f1dc16af65f1d88c303d3be0b1cdd5aee8644be28dfcfdb25fd3555d1bcb6720eca5739077f282be0f4626a8eb668240f0ff7f4a2e6fd98dfad4b4990ed527cfc8e7fbbfb57451f8d336c3c238f26c835a6ee4d312535f463e240ed42ec32fc99e44964b0d7271a9d9132f825a5a2ac75578ed28ac377362e5332f228b548348a49a79c105179105d62010ac19175b2c89acaf067d5fcd9628d122b2bc1ae47935d3028b6c8bc8ea6a50d7d56c8bb892d7b408e2b8aa35a9373bb23248fb4f7c90563526719535b132a8ff13ab8f0deaaa2da9376302148230126151b0f0119328f62f11694a342c228b24a324b2402f22ab5f6cb688acaf66c124b23ced28b2bac3681159dce9d3b888acadaa96449676da64a6918fbcd624b2b26ae47332f231b5914f1857fda270dee37afb67c66e0f84ed8110cbcda0644b388aa6245aa9a3298937f2db16869a929b61d194dc0c4b0625c39241612af66644d9928ca8077b312658148cc99c82154d31d93b91cc26134967af3caa7264e5fb0321666fbc22934427589cc427d14a8c12a5c42af18b4825428953a2120d8b95f2372a6928448d05ca17604ca172458a952855322c4b96b416fda49b3417eda4b7682f9a491fdd26ca69a2bb5d8e92d32108e36f86c5ca6758b230645e62aed0aacc145d5e3b627a797911aa754a12593f35da1479232faf19395d6b62050cccb52844279998aa2959c24443125930a697aa1d399137f21a94f8ab29d1ae84b15ec17b22b26afc25458dd04b8bc3b07caee917cd5c616f17d901cc98f1db476a30d56f2799216d7edb88e573cd46837f53435b3752d4a05a379751e3dfff9ac3430f51ccb814a52c347c1800f7286e3c0ead01bc08d5b2c1712abaf5c35fa9e816eb54744be7aa4a45b7729c8a6e01e0df8de97c9bd6ac2f99d7a49ec54b8a52d14c8bceb45a3be75f03e245a8d6bbfb4f298817cdb40e0e60000fc08b502d1ad20730800b5134d38a515b3e809b9ad6ed792e80f39188acefa599d617dccd2f4f11a234d3ba29425191f5a744d32f7779d14c8be697a5748391d1c41c66460deaa74751f319bf1c05ab3f35323bf622d495adaa38d52f5bf154f5f5dd7b11aa75a3be5a357ce951d89cc62f57b1a97ab3a889f12c6654fa6bc3ced48baaa9f94f37395ca6de189ac3d49f9a9b63aaf7457597da526f38e3a51bbf3948f56661633363868a2646cd639ce6aa6741a3ee70e346a5375fbdc6691cacf7ab5efda9c1f9e5a3ae5eae7eb3f1cb5e58adde8c1ed381e569956133e33697f17afabf73c0d9e1c67738ce6d5c87e7f0cb4f2c7f00148916cdb13c944700b408212804021004103b39978fa4cfd2b11b3ebb2dd77e5dbe3dbe9c7b34bd7b7c62a2a72ef44469f8c5559f44b78ff22aaefa1de785ed6f5a10b69fe5b07d0c876d4939aeae0ddb070085400e8a840ecdc1a2393f501e1cb4081f688f1e28133c502239f409867263071c1b3ae470b3aa4163657b064542dec4db5008c89b7819b487bc89af940979134fe9e913f226be86e6c89bf8183487bc89a7a12a5a84bc89aba1990883028f4fe74f1e4e39a7f36d4e327f09c1b4bcec50a3aba149a14219e79b6cc8d0e145a8968cf32f8353af9a89302d3bbc7c327aa88fa1a23568ccb8908cdf9cafc2c1a98fa1a2e04f356e66f0b71e78c8a92fa19c1b2b19a76d871c64523be4909299019353ba711a3637482b197487f999538cc9e58c535f45a8968dfa2a9a69e9505f422b19b42687cf9c624c2e1782a97f09c9c0b4dc5423ed65e5bd4635fafe1292711ad5889b518db00bd5dca61ac9bf8464c4fa5a4f2bc71fe25f4ff1879a6a548a51c3f8034d3522d55055b71438f355968981a9465b9d2fd528ab2e7556a3593f194360dc4ee0e5a85e32852e17f27868543142970ba5187c8b519017ab5d48e62fa56a242f743accf9612873321d06bcd0f799b05d48e7af62749ff7d485c0bb9c9f43a8e5aabf84becf98fe124a1d757e1152e725f49d06bc2a857d06558db49fb80bc9dc74fee6f2970b91def297904c352afd2514538de6bf0b8587a946415e4e52e74545b75e42a66ad4f5f4d255954b35e26ad8b2559bb01a99e2aa5faa46415e6c56bfcd2af45523575b59b91ac5fa099986b8388d3cb6d9b6303c9deead04bbde21dbdf36b579791bb3be9e9037525e85cdf922548bfb4f4d11aa95958ab0c9b23311729b5673e48d7c0e79235f5f109037f23d1a0461ffe60865431db123783c614c2de7dbb4c8cfb04508979617a11e593f35127bf622d417a33de6a7c4bd7bd14cebe5fc2dc6fb07039e64820314eb537af8525fa7b88a3fc5954b7d19dd36c5554b35ba324b962c57ac4f1857b4444974d28f7a74a31c55d12fa33fb5b1c98648516ec153996cdf95d5fc94ae1011d174ddcb4fc91681b1dd5dd3767f2e403f9a2d2263fb2e69bb0e6c01fa695be464bdbbda04d3f5862f826af1ce77f1807e04608bbcb4576f0924b50b09e8a7c61681b17d17d675e77b5dbde08bcc643f24222222dbdd25b5adebfd5e0465bb1f698b9c6cdf156dd75def45666c779febed1ee4c5be682e594bfd2961e12cc9488a11ac3fa52ffed0dbb7d5d7b6bd08ca5eaf66f192a2f49adb8b665adc8bccd8fb62bbfa53c3d597143559b264696d95e30f7da1975611aaa5d5974d565fc7ea4b35ebeb846ac9fa32c51ffa4533ad58c3f84327b4c5cc88a7036b8aab8d716a62d0a85233a8934c0c8ce9c5a5252c91c0cfebb84dcbb029e36dea44f8d9fbd9f84d6ecb449002192ce5986121e77e36ae6c98a80dcfc61b686163b4d12636e19518a7df301edb5cbe72662e0a7fe4bb28c4ceb7f3077b178543dc0de74eccdbeec24ada5dd1c5bb4b8bc9ee9ac1ee6a9aeeae8c728f5bc73b45c20fd41e4fd2aa8db8f21edfe2bd9860b28a43e684c26a8e94aaab41c4a8f9ac3c55860d570940a3c67cfcc63b5b5dcde09d598be027f14c808f0f627a7c122ff13d68fc04c02f1e02308fe234f3780694645a661ec5eb37d514687a3c12322e328fe2a5d25c3563b2011f6f0017979696308aafbe625e5f33637af91e050dd0250c49a8538de2757a8c16d0f4f22866fc73712191502599bf5ea338d5978cc71c0c5b5e1e45cc3f120a4522954a322897938c0c8a464bf857e92499d309859a11964e42fd6553a39051ab5176b085143e0a997f8f82d6979000b26469bd1acdd7d4570c9a6aa45d558552d568fb4b4846618a2f6ca035b3552057686b18a74fc3371a25534b31b574128ccc12df7085041e6899b40a54c4b3405b6a06c6aa18a7ff12ea2db0e0c2175a2fb302cd03b94e5626b4312e16e8545d9b45314e3f0a97fa12ea0ef4200d64e8284cf105295a2dd508ab40db5d27eb711608fbc76fb8428223adb01a7195bb2bb3405b7585b6db4ad568bb50eb800a17c0d0225523ad6a77490bc469d9e41bfd9790ec400fd260a505562313a9f45920ec21dfe80b75163528a10cadaf1addad02fd3416222222ab55d7c94ac6e903b942e61bfdac0261d5155a97937d29592013e3f467756d168671fa456101866c0ddbe8b34d144a0d75d1050d1edbdc1c2bbf951045342d1a799b92cbe5af43cbe555337fa14e85a945bafc69060c611e450cbdd0cc655cde04862ee05f42f4321ec58ba60acdf8cd656a7ef9f014bab43c8a527d09d5f88c0bad5e73fa1715a656a93e8a1d2e94bacde5bf2cc2f07472716921fd85aa2f211bbff94b08e733fe12a2f1d58572780d19f42f219bfaa71e45cea930b54297934b4b0b0906fc2bc6c66bfc2594c3695c08e7abbf84509fb950cc53357f14372e64f3dae2d2422281a5bf646a142f219ce770211ba7f197d029e6a80bc9c4787d142f17a2b90da9854402c15264422bbc0a24954a30e1735031a70bb9b44a2698bf60fe126a85bf21d37221d24f7f09d13cc65f3bd4288470aad1771bd5084bfd25d4f299bf84641e73a1d3518fa274a1c88416cca3d0a1be8472a846f137d5a8ff125a5523ee35aad1bc108d6ab47d4635eafe12b2a946577bac2719d5e87aeffa5a8d6ef6ad9ee2aa4fabd1ddded5bf1addee5c4d35badc6755a51ea31add79ac9ae22afe2534739a6a74b17f51a8ea4b087caa86f187fe4b88f4991ac61fe25f422e475523afbe844ed5a8ab32d588ab5bcb63aad156a930b5604cf55544d37a952ed40aff7aa92f21d25daa915685c0b754a3ac0acd273880422bac52b4847a044f084305ad5215225523ac82d5680ad90c75d17382b7d3bc53648bbc532494272beb874dde2922ad2ce265bc53e4454b5959c36865918ce39d22242b818ac458594db2487fbc53840379a7480b0965653d4d2b5f645ab953e46be19d222617de012aa2b2b2aa5e78a78866e29d222518de012a2263657d0cef148932bc53a4b372a7880b8a77808acc58596da4e59d22984df14e1150c53b4560acac2b1ade91e7c7e09d22afe19d22a195d5c6db48d8523c2cca912dbee80d4a1bd1e2c974f2926f2ce22a7a21ebe5b89259b81cb9e22afe16a1b1d9fb8ae622b2b2783991b88a2fd5a572bc01df5dfb660625f67692e622dec447b0de4d8693abf7646fbd3715211fdd808bdb5cd8f8de22b4e15da1e5b488b1a4bb3adb8285ca82774d5b7a7c27c1ec7757ca6645a2cdfe625b6a12a00d2b13717542d9529d806649b587566f5863b3ca80b66085402729025aae064962e3fb8867b9bb602cf8f836d262b5bb4ab67bfc4bc6627771767bbc8bc6921e4f845473e22a7eb36035c0c97e1589b83ac97695002e96ab45c4d5c964b71ac467b5ca1357215091199b551c7115efca2c5673c455bc3cb2b2de09e43ac9d032e300b936cb8c03c48c336b8ed4e1d69663630e9428536ce42a363e8c5f14ef9135b14c3b73b43bc77ddbae15a1c92213b2634d708311b04f335c310613ccc7f9040750b0b7088ded7a1b0c54c8820c5676bd3c4444ddcf75dc551bb7fda46d55bb29d3ea8d4207d943ec0a21c1c11440c0fecd2b84a40b5688617e8bb3de0ce8a00936b0d7891a1b2f69ac5728c9922824b05c4b3178f3080917b67f8026b2133c22dab65995fcd3968fd53bab7c7c16db5478de09886cb49c09aed8c813ad09a6d889c3da1b8465d235eefc93ea3691b59dbf8aaceefc9c1c9125b37a876c46a219c53ee9cd2e49d48811234648a7829987ee1615cc3c5c6967bdd9e5bbc52349945b474c8b6d6c49984fca88ef5eb41d8ddf079ec1036c9f067ed8bb7ba9ed9cdaea10ddb973d5a3d93b8efb36bd7395c123b8ca8cb3d59fceb25d1e3ce27a9f6f8b813b842c77aefacc070db5fd2ae7b59d6d872c47b56f74c862f4b69dd5477b34420553d1cc837cb718d4412a0ab55fecf2325aada68cc83e9f7d1eaba9f9d4ac4660cfea0eacceda8c23857aa88bda91b0869d911927fb7c53ed19bdfd78090ed1e777bca3d5f82d658456fb9d6dcc633ae32a9ee3337e071ee1314e3cd78e716213d98c32e3c4a801fb1a765653ecc2934a84e00ee1dd6c0c3d40a5db5aa04f1450b1d9e5f641a0c709b6b03d9180c017724a91abc84a65cfb1d89188ac6b0381c8baab1e4c44d63db113034456f351122b2c663beb84b397a550b198bd6c45076b5d19468b7576999db9efca2cb7b5892cec40d91b3482878dcfe84fcd8f006caccc3658823a3a030df0068790f2ad65c0667f451185d02664b373bc430688f7d9eacd86c82e8d8897358aa6f25ec768847c67d5883e459676ec2a7e85f30d07cbb6cf4790122534f1d10990d88c62368c2cce8edd8ba001e0008738c4c13298856df033da592c83446c231269c0f6a3bcc21d793ffd1d7ba4416db9ead3e7520086bdd1626f0ad48c83ddb5d91fce62bd3338c4f7aef3bab6fde8cd8e9da37c8f79e6bf7bcc44c8472a3062e51729db736f7a1bfb2283b1e9e58c98467ce7eecdaf4122b47b6fea9da3df2768c436c4f6aecc387d9ef8d11b6b334e9fbb476fb4cde78a6cf647c681c8d536be3f9475e482c7420174e39b784d6674e31bbe89150b8566f3f8ecc4ac579a988c5dd73d4ed936c4ae6d58f34ade9be001a6cdc01d98cdce35475237a75653ddecea4f5b79a0b6328c2c59b3f03eb9f96d93bbf881111b46969cf359e6d5191a6128d8798759f2186665183cb6f16468848fbe3e874622132f7ef2b3fc94ac43442b1f753822530e3026941309ca111a5c60af8de53384616fce0c7b71dc202e1fc9e8c918bdd81c495d7b072143895990c08c47f076c26d6ed13eb8c211cb5dfc0089ddc1721755f8c2b26cd9bc48358da3392b9beca6b8c25a38aebe6bd32ca971f41457328c2bece3b2a32a8cd808666f700823fa5988dd077b5f76010223f69e009175f9898dc8922fdcc507945869a58d954158294d608dbccaacb457e88869b32c4e70478c0d44468b441b8f813b2611918d3508305a114e1b844d64dd6fc53b37923b4e52ab222bc63ec748d2ce133f3eaa0289e5a32aaeb0a978a096358beec764173f3062e5c3484d51875bf2aa77cda2e8adae82a111a33e156f19692ef07846b8b25ea965cb6613061157dc2d615ca5b0f3111627b69fc2ea10d1629f2f22eac8232222220db426c0840b8bcb61cc23d8fb591d232422232e82155fb097ad34111147be882bb693127184495cb16d4ac4912de28aed2ab26e8e9cc8ba1d021b91e5628b88377cb6f7b37765999de4b03dbb07e14ded682576d63324b1dd84f58a60050f6cbf7b10ce2925866107c2b279eca7b3d8091a806d741191b5b27c03202157368b6ddb27a26d57228e48892bb643965751d62cb4abe28aa356b7e641f862f9e80c53d8bb35122d664190403685231f5db9620fc5c6ab6c6cccc1a427a7d79f9becea23bf498c6253ca1899ab59bd7def3cb27f5e36bb472f76ad1f3464e78fb459f599ef4f6a0ab708b9b3e530700786cdf77de4b733986958f6acad27c11dd8b37a7de47de4338abd41b65fd4091bccbce0b1d48992a618b0c99bbea42906c8634fcd37122c6f6a02628be54d0bf550c70978fc722ecbb82ce3b22ce3364d75ea675996655933563f17b64991c33233d00a3caf43965575c2ee4daeeb3ccfeb386e5bc5d5941ac5669cb31923d930ce7cf8cdb89a1d5b6211da68d99665599679d9e4ded599b1375959967111882c7bc675f6ae6659c66d9a89b32ccbb27a8a2b9b90ebec48563d4fd6bb619b37cf71c53c2310ccdc9cccdc8c2b6a63b3b6db89c830ebc92f4a0ffb66f6611938c4c434d25659ca33ab6cc6a7b8ca8e8371b27ae79999331b71953d3bcbb78fecde226b9ee7d65e143cae37c7bdd8f265b16b1cc7711cd7b4bb256982d897795ab771dcd6695ef661e024c9520cbbe523819fd7715b89c48c7367583e36bf0cfb9a069aa77d5f73cf7ebbc3b8929ac6da763245d6d4b4cd764d19b17575b5d5b67ab923b8fbf4b5ea691ac7691ac7691c97b9a4c7454de3348de3388c3b47cf38dd9b49183fe3aac3344dd334d6bab17ef70cd4d1cfe9686b5f3309f95b77774739b14c6bde48368cc32762b547afbb675c71ddddddefeeeef7b99bb1defa1d5958f68b6118866118866118866118866118866118866118866118866118c7b9a66dc9e71eaff51fef3577e6b8c98adc6347202277ae6edccd71dc2747b76debc6b08bd50da3340883e4b0f1a6e700078f993567ac37be5973ca08448cef1879877f23ed21ac31c6303cb6e9b028aeb0f34829b7a1eddb769e480626d6c3be0e5966a08ed0c68b93e94e2d6e929b1de67da00e79cf237d2d6b08eae0899262ef50460fd401e608bf1957b35e17a6ca563671354f3656cac92325ed1b8437c7ce6a6a1b84ad7d9fa46ca59452be69f065d9cc3eb3fbccebca6a96d54bac8b48e20acbba0c8b48ac0782be118ff40df9acc6a20882be213fd94aba491a916059fdd1ecb631f68cca4fba6d0c88ab3e572394274ec07ff5de7ea6ef5dbd36b6bbc769dbb65d7edb320cd366f7b8eaeeb2da3f3b310cc3304c6e7f76afbf30b232f0145751155e1b1b57196d6b13b3c7679c94dfb8cb73cfde813be4b97a8fc8aa27395a896175c6d516e4b3d83d4c66314a2965e6c928a59419d67dc655f79965599665dd4f71d575f1dd7702e9fd8e9ec3cdcc9376b2a68c324b962c599881d81ead0f505bce92c54a0cc35cd1080158396d7006601cee9e94358c2b4e621cf76d9e9452ca639cc4b84f4a80b8e26e10cec48558c95e0cebcbda34d8b2f94c6236f2524a89d9b0cdc933e398b06a243faf691036c6f66218f6799e686a2d4c13bbf63b27f689dd6762555ed69b05612f68d7202445507ed3c3ba8cd33e53645d39337f314c1efbfd8e90f7c1ead73408ef176f1359b2de64af7c287b08db4e7b3f3bed37ad29b2a6b5ccac1e71d531dec413b9a676dcb698951fb2d7252d56aff7db9dc32ca85dd6d40eecd362f55eecd9872ce9a4200cc5922ebd52e95ea95af01f25791c89748e54417af9e8fedeeb3cef9d578b68cb6d9a4680b8dab63933ccce28b3b699c5e4312aa54db4133b562f1076d7b4da654ded90cf7ee583b01736fb901db243d69b989d71ab360c343bcb590677341191cd8e51cd32b8838f6cb6c2686627bda72039a29c5846efb4f7099b2ae2092222220e58f992bd4f1011111591ba016ec8c291ddc1b211b280c47aa57b8a5bd4b28d5f99d8ac8669ef15bda7f98fb6953ae03970b39857efa61d4b75f7e1bebdaba4a230b583fb76ae725c3161b1d77b91b0971fe464e3a51229a5943948810653b0f16463fcbc14bc0ef99c791c59d8fb9aa6d98de378e48fa6d53bc43626b117a3d8199c5d50628d400625b66510c64b70c73441dfc02e1f29d6a1157d23568c9aa06fc4cbfe1675b8d58f1b76af411d913eb2daf3187b87489eb0d823ddb159f97a876692b88ad887cdfaa359f9c5d51663fdd65816188a8da63d469b28438b31c648c4c61cf616617d48e71ee9e52adda6e5b0a46b63c1d2ef67b7d06e26d6768e3a2fdf7e37bb7d933a2f55725cc53e0122ab74f91c52e7e5f23c91155ebe88c86ab9bc0122cbc5543d9796b04b55fba69d640d92c3c6a8d529c4c66235480e1b19cabc8229b1dde7156fde0b7bcb46a0f2e40b5bd81ccb46f88211bbc47eb67b4c628d50a5c8ae2c1b010c53ac11aa24b19ee5ce33c2ae62bdd4178710a6c2b88a1df750ead43c7e3999c65fbd394e5abd7c74ae979d78310a572f4fb939aacf7bf63df3ce711cf73b555e0a3cc2b39df7199088f0a8ab50e7f3e9d3cae9a72b9175ba7714a8c3bb46bbe5052646e6f1bb57ef4ac65737c370692b5aea9dcb2c4303e162e266ce9deb8d56fbbc623b997a575262eafd1730f59e9e701c57affd82e0088243fbb7715f9d65487daba92d9c2510a33929fbbe0bf3ce6650194d4dd5992a5363aaf78e81a91c574f20111dcc6538ee248c3bc8bdc4c554988ec194689aa6c9f8ea3eadcc30ecedefd3ca04a35db47aa3753937aff467197afe6ef38a0d1b95a9fbecae3dc7f6acae68b5eae3dd65fb9c4839faa2c913265ee82cb1f13708db5d1c2fdedbe59e4b56b57aa76dcda5a79517aa7a0b8d7113cd1e62f4dede9095481d225b78579655ab54bdabcfd4fbd3f6711bb7751d77a7e56a2af5ec5a286fe2573f9dc28dbb160487ed7e83e0b0db697e736ce68a77da6ce62afa0212d1dd6753dd053ce2b3dd43a933e38d771b396c72542b93f5bc7a69eacdb1da67191a888ebbaace32f40dedd9b905d4917d984d51b6994d4161bf3278a1877939417058ee37c77a5ebd4170d8efda37adc7a011dfb7996fda14cd775259f63c9ef2f28bc37a3787f5e66f10d6f33ccff3bc3ba08120f58d78ef3327b25ceebd01bc83dd3bcf3284f3cabcf2cdaeab2923e4bb1321df7dc8bebcf87d74fb4cbd73c87ad415ed5667194ecf284a75aaa7b892a1f1303d8a4ceb438b4c3befe272cff39a360c42ef7ccd3614a9739237f1e11642810225a4196d619cf89062d6c3be904e4ba245a2f5ee3d7bdfe4b5779e989dc17e9093ed130c38cd6379e365e768f68f82675007583b4a4bf2b22fa4d19268c3c0ab89a7d517d2b6416c2cccbd6bf5865f5c7dcf7258efdecb86e5ea163f4d1b023b77b0ef9d4485d8581fec5cbd267a6d402ac4c672f76c2c775376ed1c756a74e83192d74abc6f86f53ede78afa1a1f5b47a3febbdbfcabd75703f464d416cb82fec2558b41222c49b7855142dc3a68ccd1b290cb7eda583a08e52e570fe2bcd83db277561166cef1dcdde75ff22eb7b774f6b1844913a355bbcf11eeb29aebc1957de1bd4c16defe8f6a6d78531a8c3ab1ddd2ac7d58b0b2d8201dc12c6559d1eddbaf0a8bcc75ebd26cbf7c0eee03d963af4df37a953ffd5aede06c1233ccb7d2011e1b18793ed64ebcd7bf7401d9ee7d53bb9effba42d7df50ed96f5aae7b9671e791dccb573a62bbf7ec3ea5732dffcedc5bea8db6f4ae62bbbfd4ee5956faf7aff3299dfbf7ef3b8307e86ce93cb1aba9eddfb50370f7eaddc1dd3bf7cf7b57338f2445d855ec67c37f2011dd3d8ffb4cf5e5ebbeefa5ebbe73df169394b612bd5058ef1e772c51ef1e7bd8c720115cbdd372df2ee3eb89aeab160c7bb54f7087b4d9bb7a876ce769ffde531a08ee5fe5911ebd6dc5d3d1d51f697dbc091eb1d5cb7ddbef7cd7d5db55acf6d2bbadbaa22dd5ee77d6ce7bf6ee577bcb267564bccbeefdf3e8b425eabdc12330eb7dcb2a779ed853fa8676170abe85926e43e965d07a1e19865c6d2671a579dec665e73c8edbbe73596d2e3410b7ed76edf616de0c698af0bae2f566485384ae69bfeac3d5db9233a2fbe79da3d75553d94bd7bc6b9f89d17edf7e7b0b5baa242942d7b4dcaf6bdaefdac157caf286d6eb9ad6bb76d2566f6f61b5732011dc7dbe7adb7adfbe81477c96e3ea0d1ab2de41f01aa803ec309b519b5d286c776f7e1234a2fb768f5ed7b41d6524dd0c7497e00ecc76f7e8b4196dcbe00ecf6e5127bc61cdbd7f91e59de53db6de9b0b0d445befde23a8c3ab1c76158d56b1d7156d17411dd9bd1a5087f7d5542a0135af77c04faf006e1999a2e6b5b2bcf93ec54f3f643d7a43eb9da39708a55efc3aba9d41ee3c51bb6bdaad3617fac67c46b11af225dd680ded48130910028f6784e0bd92901c9c85dcbd1992142178ae2b87600d92c3669f964123742c4639b0de210bbe29e9475cf416b69b896d5205a910ae62ef5012eb43bad71f8974ef20bd392cf83b6df7bbd9eefcf2fbb9fc86b6fb35957e4fb6fb550911e3f7a85f9beed786ed7e736c87c376e7c88a7977af51b46110cad42f7fa9537323456fc540a92e1fdeaa52a71c6f6a726c89ced08641784f973a468ade8a712adea2b9fc49ea18319a39156fc540956628c7550ccaf1868672fc01454f323130f485bad0161ad22943445baa24f01c89b205bd1a84ebf9c555282487c56a10ae62e71c9a895a91e775182b8df245b849a6f10cea90dd4aa28f2988cd8c7687aac919a804b18982c7475bebb2138b2dc148044f36f001327ca17543cb36b4b77c24724866820d5820022248410454b8428bcf40dd4f10111169a0bb3b480e1bdfed82451248102487953565c4b4f2d3caea6a1b3f842e6a70c472173440d283e52e669005db4591b53d7b1ff13ad46ebdf879a5ac37daaff3c3e812428eab6fb4a36c8dbee22a6b239185d539b126324298ea29a9a6125719f6cb61bc786217f591195759f422dc9e9d476ef46eb64af65713b511ed33b26e9bca7a898476928ac2789e71352575cd30aeb21a5759f422d42030811e0d44dbec4c042112591a08b98b1948b1f3f25abd27db57302b5ef71b84e53317cf2700dfe3a0908910022e6c8b652280c0099641229e881ba64921a33c575592fed4f5645352a219618a2bc8900611286102061f4e18835192233c104193899da4ce26bde82fa3615c6d36a42436d2208438c040042a6882143643962b1bf0020b64d081259bd4393dcbfacb6eea22075df06cf6f34e101b9b5d9555de6cb320647b4f369105daeca78c084659d856761b5167b6b22b34d9620c1ab8a2064fbc6865dfa44e0f58b8e1480920180114b06865f506c961b16aa3aeae08af8deddbe8f01111111151ab23b559c59b7eab20445936c213224bb2dc455117ecb5e1a2c6038f6d2e0d133b8f049f7770e0b8fc850facffc041f8f0cb545839cefae52b3a00b84e8e5fb602801d1cdf39008008c2870771207eb9caca074a5a226fe683a02426f2661e084a6a226fe671505291bc99dfa12424f2661e00949444decce7a0a4237933af43494ae4cd3c8b929cc89bf91f28098abc996f10843556357e514bbc199214612ac9155c2cd1a209165b286172e485932750be8822650a15254e8ebca002e58b294fa4388992e40a25582cd182c9164db8a031a2050dd1923068b0c042a3040c9a2baed024b1426345151a2454688e4ca12922857122613991c03891ae9c48564ea42a2712951369ca8924e5448a722a8aab2b272756bb3447395062b51a84b158faab4232a50917529c3c89e2c517475054489668c1640b06bbf344aa21b17c548021d9d5020c6995d9060942eda924a92b0210c48c9399273e7091f3a299192b3ef0f01e524b7cf87c4a8b1d1f00f022541379e345a828335266aaa4b0104288cfa7b600628717cdb480f8fccc1733547ea8f9534a84b809c08c20b4db7c3ec504089c17a15a3b6de345332d0054a32b75f8fc0c94991f7ca0a7f1f9d451645d9bea6a6b93f222b2ee8cea6a3bc349db9bd493c8ba395457db1ca044d6d5a1badaea90fa22b2ae8dea6a6b234a645d9cea6a8b939212597787ea6abbc394c8ba37aaabed0d2a917573aaab6dce5d66c098c13213468a28b22e8dd3cfa78ca43e9f2a8aac1b237524b2ee5348e6535644d6eda1aaa4f050698cc8a0aa4a694e55355415460caa82424355585454f524455560d0a02a2794aa66a8ca0b9515d591aa8a8a0b15155513d5941c7ad282468b1bf4b48466c90ef484050d1638f4a48446890d7aba82e60a1de829094d921ce8c90a1a2b6ee809090d9219f47484e6880d3dd114c595fca5d17e5548a6d8a9d51ba495d854153b7f554decbc0a89ca0ad51629951215162a2628d5152a2d645449c0eedae7554b5e5255bacfa7ac44d6f55257489f4f81117e3e85c5e5f3a93022ebaa8822ebc2a88c9c3eaf2a8aacab3a42a251495acc50d21212141216a42724252427a42b485e9092908e485690b820212135211d216d41d22889495c69ddbd9b81c86e96bec11da1a5b4485b274ed5473bdb0e4118b97e08c2ecdc33927e3a8b4d1560c87ad589d39025826d571b4978679cace85dd5c8e246ef4ad2cb505058a40e14a983631eb564b27e6792d8f9c3ef0c123b7df89d29b213c7ef0c919d2cd4153b7f4055b1d307d4143b71a0a230b113e5c44e528c34472d9947698162328fda22b2ee876a1259f3282e643e8f3a9a4779318f72328f7a125953f5184741f9220aa18383054664e1d8a6e0f83c8a8a0f2f296a5057a4e4c8f17994957954941c3aac7954951f7cc051519ff9fc4fa72cfb0c4d11c5d53c8ace4489abf9134d1989ab79193a2325aee66368aa28aee661e8cc94b89a37d1992b7135ff42679cc4d5bc0b9d0123aee65be8cc93b89a0fe90c96b89a2fd1192871354fa2a92371350fd2192a7135ffd19930e26adea3335fc4d57c475348e26a9ea33355e26a7ea3292be88c95b852f5e96b4810d2d41b7f4935f4aea0a8e8652c368b815a42194bea97a1a4e8a9c8d2f89d454842279bf71bded37d2a899cb9227556f126befef21519bf5cc5e697a7e4fce670f98c133b674845304e4c4b5e8a5aaa844e26a968e6f3f34864cd4f2491353fad88acdbcd24dfe7e715313e3f95b47c7e625113f3f9a9c53f69d4cb58669419f572942836f5f2942955aad44aeb5dd9531b555c993e556a0675a21c5732710553ef39ae5c6258ef897358af8b596d1d5837a803bba6617536ed2c3616619b03384b0bc731baa3b10481e39d2587945212d94b2a6a30b37d1fa811f68ceee837d8ce02c753587540a985e36c7bd8dbbf242222d11dd2818414ddc2515f3e5c8a9a168ef3440f07c5418d141969aff7cea21d4058ad16c96cb3e5914dd9ce22393f97f840b9753a714f5964e767c0378491c8b2bda4223b4fc3e4463c00173cb6b927226cc8deae886b24e1ed9c3096ce8995f35a0842ec37668a10166b8df38e608eac083b24308e7c4c13a9c3ad23275062a258f9182452a78ad4a930bf314c7e6396fcc628f98d4932a3da1c4429b2b93144326e0e7b618eeacdd94298a3ae48ea7847f2467edbc2d3e95d51bdab554ecef572d8db1559fe26bd11d362264456af132aeb3a596cc7e7a7afd8ac4e8c7a478c83d53b2df6bed1dafe29d9ecf39c5decd73bc2285bef48ea70cb09942853aa78583a227bbda3294a6c067314e3304791754d305e44d67581711259378479220f0325b22e85f942e6f2305122ebc2488199c25d1e868a96facc61aa58918f39b261918709a328b27e6a240a0cf91823f230575c5e628862ba466218764a6592c45c91b922060c192531586462a6c81c89a1228324a68a0c163161c858e1d1182b324b382a4324a3858c91b83aa5683edf2108697ebaea1d8210f518128431eacd220dbd0c4545ef6aa662a6c05098a3eb1dbd10b54c098f4a4a4844d7f38eacfc6603552f6381c0b66ddb693b11d5c418106044361ecbcaca2b9b4c6122a3d62ba95c7925a916a8748815cbe4b1202539c6149aa19919045000f3140040482c1c8c8623a22629ba071400119eb05e58238b93284842c61843902106c000000808004603100040d84fe3f266ff7789dc40d7f936011e89d122cc1526a90e9028cb7228aede055a936494bb4fbe9771dfce69aab366f539d2302e34b54db47723c85dba5b7b091a07785171fca3b2c6737ac732814dc5d60c179366d8db8bb730c99c93a767ab6dc7fed78aca5d6a39205198afed72c59d6ada8000adeae0cd76afc36e6b3653e184e584451dae982d4d1a2e36072baace5998bf7dc71ca121a3804250129a9ff18a19bc43ca8a61cb420ba2738335f97cf093852b06ad0279345b2cb6da8d59e28b4deea06131ce25c71084182e28c2577cf84dca89f1d16d33ef641e8d8691e4a09b16910b0c395760817ec969e36f9e60545aa1e2ec5b27127467b888756da717bda4e7e8f5c69d4d372f3ace7789171de6f6bc977c0eea9c3f3c1b6e5ddda6859c221d1d716b78737848bc9dce28a23d306bb2e042e095dc26296c4907e12c5f73c363ddace94e5c1eee2e1677199febe3a0c02a2c29db7129f2696fe8d1ad408dbf31ce481d22c407a120c19010b0d4e6ed4985d2cf744a606aed2280ac1b53684f5a8a967d081af9d9cd55ba0b1467bffe960f4ef1b6517adc97d0a6b6d46aaced6c2d659e6df702d1d92aa55e7d6147b3b38996746ff45899fb0c7c33e1ec84af25457fe7b688442e1a6afbb36c9acfaa318554eef4daea78b82c9e369b35131fabb9ab4c4ddf2db0f34075bd057f627ca8a058878c7838d2a23becc7e689042aab76749b490b73c564779208e5de5ad2f5d0ee12524923343fef1b223778f914da7878ea72b0b10aeba7935d3d7f3b26d9b4e3ad1bb50e63c39cd9d07f2510f2402433d81ed3858e09108ebde508678f98badb1b7e5ee7bf4d60cd6d37d6907a09e774d0c5c51998b3764519331dbf1bd538d85ffc410264bcbb5856e3ebebe899152eaff3081c46074db7b01e8f1dc2e8d81fd605003d61acae7463730a61c986aa5440fdb0f0cfe18bb41f0ec0ab6df7c77db2a2dfc2aa6c049329707d9121fe59b74e67d34b568b1714011def289b03eb60f44b00148aeda97fec830e49b9308ac8158a4c7af09eb55ab6982ea16b4fd512768b130a71885f701956cb872a9a0f316a65b8c212d800814c23df76499631fa774be55b7ad369669133a39d3cb1dc918d600dec16acbc4e7fc32844611eeb7b26c28e3eabafeb9530d5ebf0dcf083e8451fc26d1f1552d70c800e58e608a086d7428e698a3c90d9465259d92315651ebe10869762b6f2a58555eedcb46eda381c88c550d5a2ae8cf8fd969034a266b2ba839ad17b62e9c3b819843848df64815fae38c2d4ed1d88feb8bff806dacea766b2871d465e317a4f3a89301041490bfcc86234f34fdcf9cb847f6138fcbfd2444c61426b276ba74612e4bc91179d806ba4e50cc8025a894c51c410279dfafe946ba08c3366dbdc56c22d0bc1b47d8f0b495f7b5ab9e7cba10b693f5d1a34167b6e367534507253420e828035164fa943422a805e608d230c45fee13e685225b6e3a114815d731f29e9f16b923edcf835fbaf0857cfab0f30919548f261abd0ea452310bf328a58adce8dc0b399c64baec3cd08b0f8bf6b66c204288507d88847691cb8940868c79b83be7c89a0b153560571ef4b9704d0fc5f596262a4de230f89834a58ef142ad702d17c33d20725b41fef9eb17c13943a6b01371b3904b7fef5eeb4ee44c1a7c318d40ecdd6689ee16506932375c4cc1f3af1ed8b9bef8308e578d3af186c2892c6d11b722980c957ad2812ea3c90d01653d529c059054e5e3ef94a655431783852c9bb3d05eeeb9cc26ce8e3973f81fd11f03f02858408af29d0b2021e372eb1734d4887cc919bb52516c6ff84a538d18915b7a30664062f1c8b617fec9764ddc3c248509b09183cffcfb4cde59c84cfc3c09122af7c296f6c9da5aec1c69a982ae6312298f772ea89b01a90969c59d9ce44f2a2062654713de4a9fbab1c1ace6e38b93fa3976828d6df54916ad7627712c9d06f500251e5074169a15956bf05d6d9b46acbae56cd6814997a44a85c3d85601731b02ae74e395f95cad3672c53efe40094196a692c963faaf3d1bb08a9bffa6b64d8b5620e299cce3f916fb4d05915af79e483235f27250ff75b40c3be0db0bda4a3451b6267738e18b87c716b5e4185f02ae6b2e1854513788218cba4703a5caabd592bb9980be98e39138e9ee4372dc5e2f14ef7480fc9db426afc44e799ae28929643e42a48b26a4a5a6f88cadb7931d344ce42bfe9154cb2086e7b8448d60c0f3dae1970674ef4f7661144b1b8381cda4e01a087b0bd3a31d30272c149248ec65040996e764da6112f35bfc95358ced568e3eae8c39a0be892c2a2c7c7289648ff696f4bfbf8fce1fc80f7c2e8610810b60c0749345b0f6e458d18282f4ff0f1e65036165b7ab9a1debe15fd9818d15bec4b8437b09a9dbabcc114464d22ff22732d466013848e6d25b0d9e47d1b67aa16925d9c66cc3a915474addcb5486aec77f4c2ae70de0ac5adcdaf4c359b97e5b1ad8bec13dd58c24913833aa9f51ff36c082be9c8d8595801c895d9cf933ea120650e3e31e9eef078167b0f83e9cee9841b90c4c1f7c0c932c44f5c62c62786d68cc350453568fa049ae8d48734f90de1e5e686944063ce206d35fec2f0cf61a72e8de5dd694152b2f2f460f258e4e35be4f157e4782ca27816b9f816617c8b587c8b2c7e8b1c9f4514df2215df228c67118a5f45780e9ccbeff54657780a27523923e6d2e3037e17ce8f4708b29b655524dcd5fbd378d753899f76558a31c428cd55a6af868b53027fbfc2613fabf3e13ea46789a4032694a5569a4d5b5d1fc5833e0d370bf7bde23a4ec116b829ddb8f9f7b4699bf90d2db4a38b9964b987d8851cf4f30b97b06362659ab1bbfafdb84710ab7e6d150c5dcc6d3ae049729cfea3d0f1846391a7dba0a4c675431dafeb51e3cb0410577c86687f11058be8a75e8cef949302953fd885e911f0034cafcfb07d90ffa0328456a6df215bcef0c00475ec3f77811b29bc6c3ca5fa71517de689e97b4fe57b6cb5826377f45dc97612918e055f51eff75ed940cd3aa04cc470d20696c6c62eba5df988c6df2f0145684a1f13d57a84d9ae722647d4f3afba44e7056b1f220ce3c0590110cdce787476b99bb72c619511ba1c75a5753737fcfca6a4277f19ef4ed886e228bd99d9bdb99b40edf1f4b42d8a00f572341f3872b7237032d2a803c710e0b1d89957fdec1f4b3a7f933edf42f831acfe336bbe22674e8274cad8c2c2181e999ce519a87440c1cb67d032dc816f23904587cb471a67484fe2c3a732093cc532c3cc00792736df7c51d55bd828967255f7379ef3ff13dc9c513d3f2923fd7e9c8b6cbbe20f71e9fcaafe9fcabe880095c313c78d7b8a9f937fcaff9f35c8959fc4b3b31eaacb55114e41038590f2a4007744cd2d842b04e95ef533ea57753b2c39f4d0e1c41d7cdadcf48812ba10dc3aea10ba692d2e82e298c688f0a94700dcfe04a86ada2f766b0b361b58f3f3ce1935f83998beca833b83357a5c3a09c857e12af53c742d8b2a797d05b08a04a5bc5fc10138a7e5c9d3934ce49a2471607d8fbeb87d13bd4d7cd020227c0d08c0a81db2d5192976cd5a2f56dd4ced76d4956def920f92a0624c66c315e7e80e516f4ff1bd54641620fc528ceb6623c286d02e77c2aeb174d47cbc81894a8127fd873f14236357375b7f15bfa87329464c11bc1a025fd8009b9a184840f7424012ee8afa74c3100c8c23df92ba010525d60f898d264ba70128649061643e48449191c7f25a023e4023b85174b25c66ca85b006eac2346e2dd7b397d4229026f43a8a697a687f4e4821550cd26607bc0085d09944b88f7152f40b16548de7579ded3368935c21fdab3f57b6bd6ed0195140b51d5813216cb020a6b592a258028a76869440b916786888998dd53996581f21f8a8e24085d3a36c886d9aa90fe72a16089d9b3d39253664ee01942262c50e34476105cf925ea5df5d008e08151832b231eef6b636e56c27feee822ed88eb42a38443e6de0dc27555bf2b4b19737abc3f81cc8ab376d564c5d8c9e364ea3f568450afe8f2a3827d111ac86d658a5c9829dac241d8b6ecbbeb1512d34af00c896837f7f02006a13424134f2e50da72eaa62fc42b9046e809bcbea70f762e1bcd61059731a6218ebe423f1dc40590322fe667f42f7ec0bf74058ea3a1d6c5900ae1d81f841fd145a7fb56116ec04a146c61437e37ca3b73ae77456c01ea9d667bf7c935655ddf4637c31d31542aef3fe560556376fe7069df482d1d721a81f276716670a05850d82897edaeebbd118cdd3045e410fc6c695189be8ed77450a78a93b7591c6a81936e86e0d3049a14489864783d98f1de98f0dafb4c43905ab68e0d2c5e3d45690a1221380d6924f81832a824ea87b93d5e9e3531c8d0bb3999844925f7e320b429eb322bc34d3d3919b5ebe029ddf77d4e830601cd41809a6b40407222f3ab5e73e421c1a3901ce05fcb80167a3eb76e85130f87ea47d1628d659043abed5251d34d83f2dde1a19e62535e1a51ef20d1a0d50870b0d4afb5b47501b17f7d23a79b775e6032d170f0498e628483e4e71a346fac19cee6a212cf9939eae9cf4169d155f1f9338424ec48f630a8c4344966683b813b12187ff532c549d3e72108e059bf254bd9ffadbd7a25efb48e0b9fb7978584d925f4c9af00e930ce5307ff058b6b6de251aa35bc5d46b83169900901a24f7cff4a9b58b808bbdb074cb5482410df63fdd8ca996d7752af7d17cb0198dcd8e87f335f974209ad70b564e2e9ffbc14fee6876f749d7e78c4e990ec2d78c9cc60032002516d51e6304cacc517c298b5c70deac964350bef73ab144451f822db142f10d15075c86badeacaa702bdcc18f69a3e7953c449bf92ae6ffd5f087d8f15ea3679270ec090462939d0b3339db14f56e4e7fe910c223fd6f1339bc56085694203c0a7bb564d709e538688e12c868dcad9498d6111ea98bc6c6793dab28e0f7973979877ab094e10d767a795639082aa3f9f8915bb08f345a0947a2ae101a58898ae02e180867820c943f10f075916e4763e8a48fd8a8863c6a16170639695428f0cc57f835f250c7e018238ba932a4f5db55acdad8157ce6ca03ef732e131372a6cb65919e9409dcc4019a4c40c73521cf1bd38a18e5ab8b79e29ad11bda39e70a35f5f17b460ed4271b222d5d29d8f119f24f83b6f87267e8e01f5c2b9252b48404a59d2a702ad04abf90f8c0f9342ace11f0266dc87f24b13d755d863d206e967a891ba4bdd84d69afea86dc8bba215defe84940d9c72d9b1d866574c6ccebfce40b4a4d7a6f368252ca4aee367759eb23f283a079a53d506fbec01d055db82f416162d7b70ed3e70f0cf2dec439be614d5cf4242a47369ba6fbce46f96b3ef375c58a113b58948018e27774b0afb1213c08b917847987675f58507c46ec22664482aa8788dbda181531fd53f20a3a857a9cfdcf716798b6e9b9d2111e5bb1440890f28a637b0581301e7de434061b0dff8d013f370a454eb92f7132c188f561346b37e5734082808a10be1777373f2fa072b2c738f4cd731a9e09c85a6f34d752240560f3c7ee2614a5b3e70afc20376c25dfb83d0c0447784b9af724314b14e826a94835b9c99761a5573ebfa6b44810588b29a8c788c81e8e3222b244ce08417227ae9cbe17dfebf8d9b3c83d4792bb1491240b4301eacae695dfd3fc151a764f443cf7b5567c902373cb53c2148d00f96a68d96e5fc6e35e199bae1f744e09ed98541f30f361ea269077c6b5bba693032dfd006f47eab6d2ea11152274aff2286c18edf01c47a896317972553c1981ec50af3d795e35f5ef0de7a7653c540426acbecb02f37c458b34a3ad06ea7a149e49ccd8920258e69227053c68e29ab0b84e993b303cb584ed36ddf78a8fb9ddcaefe3458016f86446c2455cda4bbe18cea71b2ed62ccf643576fd82bde0b3756628d6d98e787638718ae20111c4013ccb433fce6a02f87235c35848deb04513413a0db1220d8fde4029ec69168621c9841afd7cdc87a32fc3e1696d17ad8120fa78569f1cbcf46feb2280f8eee3c1c163c9fe591ecfe5a2b67b5aa49c867f178ac6cd74dd18ebec7cd000685753a9b3bca8aecbe5bf3e2b72fd665e2db88fe1749118f3ae79824e1982abe84d9a5f64cd3ba101e2b83a3f164b2722aa38549d0baf89f0f18644612151dbf9f87b249ab3e6752fcdbeb35e39bd2a1ab424649a7a294ee06df38f4b78fc567f1326370f5c99a7e80bd4ef256bd55bad667295d714346923e3e16444d146b12394ab2b1922b2eaab64a47350ec367e8e8627ddd444c9cfc2dbd0c3a57ec131613b9fee3759f0dac38d203bfa27762635ee82a88d589e50e1fd6de117e5b0e69f82164d83396821c8b11fc1bad6d4708d0e3ec2b398a665de27d332e5605331e4792b34e283d8bfd2ddce1307d97db63824d25ba2cfef3961475ef04357eef136bca92ada41cf36d46908cfcf3901841643bd0c47a613712327f53431b2603ed7e427545eff77d20d71e8727d45786c40aad0a489f7fbec5dd3f83bbd3bf87a57b1eb503a1205f22a51bbf34ef18851e6793a5638be7939a432fc7f78c3c702f38b5aac8daf74bb146f71c3bdf7a9d25865cd7945c09ec6ef7c8fef094c7c36ecc70d528adbdfbe7e6eae7ce2fa333ab7a52f50499d0c392710592dff619bb8f0b9234b94acd008a13c45450efc1deae02d1b427918c0394be00b932022b004e7bb109182d8c4b6945b042a5ebca4283f949da388e83a668d128a8f04908c7b4c722aa409a24d34b42b60b40caa2693b96620457cac69feea32f70742dc88bea67d0dc9616a3246015f07d1949a56f6903241c5264dc0072dc80011e85d75f162dfaf91f2527920eca29443e3ffad28e6a1150bf29035251457058aa71aa16adb4f4171cb618dae162f7373ed2cda635cd8d18f968cd4c144bf5133f5067a9d0330fe33c76cd74d054187240886b320730b042428020831191b1b329b43e8ed09b56ac607fca949087152c82baa29161bd05867065e0166224d6a400187560391580015b2f50b03c0bcf5fe8d60b1f3aa8085715d699865f238709cfb0440eef103c96a5d81ea4e519d7f571ef1952dc1729800813142152eec5c17c496035b02792735f2206fb8e102348df30f6d2d9873632fcabe337d806e6e6b6dae9e456d9fd50d7ac8b221c457a4ea46935f932a33de8206ac6b33ad0d99a55dde545efad89ae6e8b77484c7dbab10419e31c6e2605d185078d18e563972cf1f211c4a1080b8179ddaaf84bca9dae60b71e903492d6883d1355d11dd4a9d2316143f5e9c591a0d5a59822a811a42412b81abbd861e9e34f19b6c3f15bbc993ce47da5e9465e2e15242b0cd50fced506034a437e1e91ae9e23591b5f90f1cc10d1948e8f0c93764d5740e7399728f4706d0d1106e79f1b24d95c30bce04eab42603fc4b228a4bfb1b5b829cfb073de7266c108126d23c8afead7643486c0de48c9f814555a696983f640ef19ca39e07f32642bbcb5b880629149fb716845b0f379d22bfc3b0ebe811ed95b890f5018ffad625736731bcc145208e5a1d39c41c95922028d83ac5b878c0fd39e24531bb1e7707c05a772fb75046e7f7dc59cf10779f40b6f6ade8c5d0b8a1d7810e94a2bbb3fe6e104490622b0baa352aa9611bc7e6e6a910698056381b73831f7b4effe18211b858f61fac7bbd00e47d8abf87adc2fb6ab54a46e6573ba2ab6a3707481d66e3668f5910c0ac2654bb1e7b494abbfd5949b0c6a3e7469b47074cb9f7c11b53cb95349873ec6f8ce0263a7f4f8edfbe3fab7c59a06027277d3d882e9d8074e05b25d8a4930302c3608305b5f3edf30e0902b8a22265fcf9ed8ef9afc532a7237174c0c5a457a283221d0c07c7cbd692e2d660e122860da5936f066707fed548aa7281b264a24078da3d86617956f7d833d85e71274b86133207f3e17c9e7cab4e9a097800fa50c6ed89da92c81dfb4c2e37c5f9a03fcfa71480b271ff9dc1d2c44adb97a8c1516ae7d9b5d78837094f5c0006969df3735b756568a8234b5cafe84b6547182d001cbd4bd6f7661d0ff0e1d399b3910dcb6bb2cef7f5ba9593da0799e61e7e770d5ca9afe051770a39f799366502f8d4b6085e8b09b86dfe7d1aca71209d25689d9569c6dc0acb71c4aabf80d544307bdd5764984268cfb4fb4fd11c3df666e62c96fbf6ff3cd7b71891c7b268d2fd1b30aa955ef57ff5c5e32c91456b8b46ffb00efe892c0ec65b888ef19c08fd352f7d7f2151e93671b222eaac59621c45963bc3614499271782aac05a45d7ce1a641d44e00563be060653bbda1cb6ce93d767770e718369581dcb09b53747ab5954bf7057729ec6bff24cf5e4a3651aaeaeac2e62a5d7e2a418a37b86e5bca471ab395af2c7eb5c7ed04d0f0da0aabe822f55db4241357246d27b5bcc33d6533a914edafe2fc04a1fa58d4b9d68fa1b1156fb6342b3a766c9044f74d94d60a5c273605119984137bf8b28fd9b94b95c7714b67b74ab44b14fe176f7a5d31a2f61865390da6db3f19e425e38be341cdc8fee32462e5faed5082e49042d34196ea027ae4a55778931eef2a8d344f2d140e5406cc2314b7405be97108dcc838c20da6614b5e0ddb89269a976f7fcb6bb1d6c472768c9e3b9be1849bb8f0c92fb24cfade2c1188f6bf5352855b4a0c84c422aa85c2738dcd2615c2255275aa2cf8f995b5fb1f031d18cefd2cf1ec602b269c23b8ea0bb37bf74711fa12b61ee26f3f788b1bf46dd64634ce9ea772cc8baea825e56d72b35e651b8ecef2ee22ccd94df60061732f628899cd09d29efd99ab4ef9fc2d4bec6b3d44a29e8079f6394c6fd14660163131a34ea1c0c87eaa819af6766215aaea732e64a34a3414f7226110ad8d57d8469cff0e9f2c36244b301566dfd4b3a87598d90ce551ff7147a962c8521859b4412d30ab910d1e4275e98c963da20c8f2d4f5609fe2ffac3bd83047b54de37401a1114c7357fcc1a2901ad08336d93a4829aa48dae8bca9cf42409fad17b927217d6da694f54c7abbe808b1b4737e2a907cfd4606e8672322fad772aba822798596d04a816d26858e38776662af6356593a26f241562a3eed3eff8747ab48cb40af0d99dc0cfe892cd1c4020b120f8f91f644c4c0c446fa6c8df12437db63c21ceeb2754aa1d2c315fa35cb26c660d909e9dc745b278aaaebac292dd4f7b7054e238873f4eb7fc611048c18b29a5b2ce0717da87288fd6bff042a3dceb045ca080cf5c1a59e73e95093e376a74d65041fd4817a0698e7d85a0211d911cf6aa4a2b62298529d57008708d75f7e301d84cee8213afc93d72671afc11053ae40ef90e6ba5c5831cf8d00fc741b1f8ce5839841151034396174807b0f1d681e7a5eb82a9739960d60e22144f600a9798022d65301c04e0890955cfb38385f05c6427d8cbd76d7d96873ae51d752f047ab6c2b130abe5fb6cdc6ac00d3cca933ac89752ad24438b86670c838f20805736ca737408a7d73a674094afa36a5434a086ceb1d278b9899a49bc2a156c9905ae933b5aa0e95d34ea138fe244d3a2f1acfeee6caa4f26c6aeb93a43005a303bf32512333af6a2210d1027f95f57eb5e8e561025d78f985a6fd0fea1fe1ae36c65e319dadb6526a787d6f95caeab60af4ccf811fa27e068700460f22475deeef90890d9ee2d0fc826b602f4b964ec139d0920dd8dc56f4e8337b6a07cb4edb3abe55a117f11a0b90f659b52565175ac8aae0799e17b7e70395fc4d01974ed0fcc4d15f7c22554ae09a82e7347590111fc420ff7b4b67ff2b970695b1107ccb60e8872fca79a2b049bade305aa62582abfd98efb949b0cd2c64d98a8a497ae0bad3a0af02cf796af3e95a8f93305d23115c4f190164ba14525a07608b83e19e9bac8d161d592ef8689550eb3f83d88b1d0a801740f74a3cc6af975cd42f0184a6881d0982b238463680f504ac42a7073725b88b5b02d221a58ef4b6f2e3350cdb2aa4999b03b6ccb524ef664c97b6c14dcfa909123ff83ab6e8d3ca1e43b8bc8881406a01c7d4146c51e10a25a0b6f75ed5d1c5a3f33672a5374a0c22d977c453e97a69687dc85661168b349996d1ad120f9d052d597c8d4dafa104a5cb6412cc1835decc802dc113c140b2dbd94fe5fca1c33024310da9e55094c66e506702cbc8aaa5cd7249d264dd4c1609c0cb76064334801f5ce9495997303620391d1c0a6b0209935c2e3ea8afe8337557355ed75561efbf74cbf1126696615a663429fb61cbecabdc221589f2571827ec146d7941e65f2fe14016468835636b0b28233bf9826f1d28a70119b2e5098ca66bb061b01b04675a0c63e0b7475248bc6f9fe859d71b35ed4cccdd376ba9d031e00bed5c2831fb45ed3aeb32936a0a7e20000e9305220777f071b1f4217827b64aeeb2fc8ae49c5888a7a2f93ae39cc08d7380bf4b7e289f87a5a0afd2426f4cd22681715216880dca5ace12cf7604bcfa07c610db7db80c53b03646adec1d3471f7c9a6100e7034ae6921eb4194fdd588d35fa14e79189ac5c04a07bead8e6ba0467c17b68cb9b9f62042f7913b8024d02ef028a46c6e958a542e454a0be4c06ea3c4433bc35c60c468e7791cbfc003d8b88be68af445fec85ad4fa8ccab175ebe78e1e59517aff73c1e6fe422fa8143e45ccc17a45b44d11fed25fa84bddafa0bcbbcf6eac56b2fafbc7af5fa574b88e525dbc9e9123ad99e503fd215f745f44b2b599aebbca890665d92b79433ed96527b703c6ad877a83c2a178850c51d237d9dfdbb560aed45407fe81f3de873f5db1b25e06a770aa196009e8de93639d5514d6b9bc0012af282d35c04b41d7cd8a1120c462f21bb273c66d41efd6706484b9be21b16a3e53bc8e173ae013a4aa19ad24ae8bb27b10ccba2a1a772e6cda4b5f73d750c1bfccd4bb59ad15a64f172249ad658b170ab0ef89089e72e88907144c19828e07e36b191b89859424e9d1cc765b543c084b2c943637b52b389945c44914fb592347e6f7541f8631189b213339793fee2023a14ee702fa92233f29fba218022d5a2f00f7893fe93b9242b4a35f5460f8ec146aaa75350c27699efa02bb8545a22c2156fdecd6bb6199ac36607c99ba4bef217786cb120a2d440ee0a7bf8ac41495015f58417903c085f6e0b8dff487a93557523d078eb1b782cc0047e7c6b01a9971ac0d7e8ed5f7b48f3fbdc777d886a36be5722b4c18f4bd2b28af335e6b19de0a5d140a59c7444188e24da441835b66240d121432bae530e61d455ddd5160ec63917d5b78458adcf59b206509c8a4a8815027086ee5742d8678355ee8c10e54853c1af818ede48da8b3a5d8fdbc9e236d6121c85c5aa2c7024678b8d068f40b8ee58aaec904d56f5277b23a938e3be8beed2b2bf0a419c238560740e4612769d44b7d7d1bf5ab38e36504f6cf11d45c454aa132e1c4af53040a1e2c927e2fd53a3a4c6e12bc1b3296861d9c3f192d3ff38a07271cf5099ad1bef83b2c7abfb35e6109361836468abd42b67f2ab9c5401bdaaaac853d4e3c3f4569ff7353c451d3ea28254b8edea6041c87c632003ea3c5baefce02480fe5d64be8220507f14775421d46118d97dabda1b6628a827337c9cd434bbad4d1c29615bddb9e7f3ad63f784f8e823cc630ad417d7c0a0bdf3183cee71b45ee5ae857a2552b1bdd3dd8ef1788c9e3429ff754e16e66612060fd89219f52da9f4c3e1da92bfa758bde0de0ec2c67552ca66c1482a6ab7e2e1edeaeec30fbf4de8671898459d91ba92f7cc3c27ba865b9af65aedefc4b32d58079ad91e2f7a2f0cf5bd320e46fa30f720f956ab6a0f77f7cf927be16853d3d338b464fa268376c280068234c18ca68a0e25e6d3a56a5866275ffe1980050a32f63dbd37bc9f891795a1105163df9f2f09dc0bd9239a58e8f3fcea9c10b94b3e33d719047cad135c804d06f515908a845399e0bd974b4b54d55f3d8c4ed1ba6ca229e8ec2f3b269d78b9b859bff0ca73bcc281865104a3cd5e3f5e8ebc5fc905750d239cc30bc17dc1a64c351b7c50511b1dd46a72fc4141ac6660000e8dbcfe879fa12bf9cfbbb4ec337bd6a396296ff3276ee98d41e006c266e01bbbef3a26f3da0f8c35905cd003e0985586cccd5433600f077173450f623753fbad0f805e144bda4063c82fc37484d93193490b9a50aa09545d2008afdc4e2eac92df3977ad17f3dff004b2fd2c5b8b51d131d17ed9f00b60bb5944265fd2578f414ca4e607b2ca67b002bd3f739d3f1e6c419866145d48fb785adba8cb082fd6d03bf10139587bb29264d6dcb42958b8ea4e8c97c84979967ec2f49df715ba77c3fdf2f21f8d4c0225a933c264ca9248cbc7661cebcfeac2928b3a85ccf56eefe52624372d02c25ad41fb106a4bedaf21bd56a622319a395395b46ca6d9128d7f992130ad55bc2e5b99905e55d770f53d4b5d9fc1cb634250ccfc0d384049c5dfe0ca1e69ff5c8d98904835dd17b722df63abedb23386ac2f9074d83d96c8b7dd5ef4b437e0c4d0e76f41e52b490225ebbba97e4c2213401b2e320ca49dcc926cad2dbccb6d76ef5b9fc9900c10b8b3ec060dfab254479315e7125bda7eaf26eaf509f311c098adf6761a0ea319836b86d31186a6b98d4348426a0c7145c3938a98aad005059d387e28f5e088c1e08a207f64b9419f826397b94584215c1b2ea087b3b045aefc85602ccfe3e426f65713720da34b2563ce7b60b8caa6886bb7294ba5b86bbcca74d46b8a54fc94c7069def9969a6e25f0baa48d188338967ccb1c4aadb5041cf868c48223b6845c1a4620601c97ecb8d5914a3a4e1755a5ef85e11ac4e0fc62900d63f452d894440a7fc67914e2e9240a978742bd8042b59f90dde45c213b4cf9c2739fa233503ccb9d779409b5849c8ebddc8e5d90c68427334ee10965e30adf211e8db7d7e065ae655533c32049c9564ae34ccf2297f6caa629506729632e07e0bdcabf8dff8b9a7478dbd3a6c72aed2905ef7de0c157baf98dc70b80e30d5b9543048ef74f70bcc0c2f1021b8e17248e27189848d5704494446e44084503b28a38037e79d2fbf24dcd7abbcc0c19fbd5d19b53bd191fe6c352ad3eecae5249394e7735010a4a4090a3ae71da934d8424b353867aa99fc989f0dc9259abb819f27017ee22596ef40c1ecf94070baa6121732d3aeadc5f1c7a09dc318e1a199006d0972f5d9e1ca2939198a1c755bb25c957c4c7a79859f2a19bedb1afe4c8467aa0340f4efd83af01ab4a8312b7671381cf9fe32e78dbf5c99a0b26a261c0001f7d5f98e4cda643458c07523c7d1ce4f0b0a55f0a2385ad4501c00690f0232102587419dc1abeb37a5bb7da056c5aab96e4d0d69c82e9a81c4efda8249ce0a94d474b7b8e9130034647aa93be246d915142f11d71fba575eb7d37256f624a3c24265e1a4afc0b255e094a3c01250e7791804b49e6db482e4c5fb616a1956bfafde57335eb6a0a07c35c8bee03cc6c9d41fac60d5822dd97b6a3e8496cd9e231b1af23146890e5629a5f18fd9b5e0f115897a00d8ffe9f39854f138da352ab286eaba8d498e016f189a50d0a6691cf68618086ef8f4e8ac36fc0f4a573fc00e945311a83aad14736556b34be3e5530d940b6f71db2fa17712f4cc20eba8be6422e642fb194267266ce83ebb224358454d81a347c5a736b10addaf59f8d9de475431ceeeee7111edfb6e747be74d9ef20a35507f2d10e368f9030d7b2dc3f054a02a62d205f4ddb1bf13f252844b40118c339908100164817825643a8b54698d7343984600af2dc27dbbfe667a3b59a6a433bf37d8f25ae65329dc7b0219b1d9c95f7690998994689019d975d340dc5b85193d8a6786f4564f0967d25ae39541c71a936395d68f15b4e82b209b4fb025a57e8160a567d7a46863b668033a9e6b8ec2409cd36a59ee772093a1f2bb43849136674704566e89701eaeacde9d12e59cc3e6cefdb806b4b03f0ff04f06954cfd7a897f70e38be2ee0af7335a73973f5d15b2bb15e0e129d3add6e4109da09644dc3daad147928f99450e3dfb2ee1412b34a4f456d969c28cbb3df735589902343cb3fabce83b2ccd1eca720b278994732d8946fd10c13c5a54c94154e609e4fe400a2c8752946caa8a0ae5751a75d81c26391e664a2537967b1dee15cebddb36c9b52554f467452b8501a359ac6994b6d7a89bcb122c5aa2c62073ec25dad349b57ba001aad9693ed827943f28d6eb249ccb08fada58598aa6171432924b550edd914d62e157604bfc52009d94722ab6624561589720fb12c33ae93cda4a78edae53cdc3e1a56cad17de4c7cc490e5132c416d650a6b7ea1213282805d87b7e8b86f4e0d82444644e61a2476261108e244e8ae7f653d2a11f3586d386efe03c498bcd4889ca14fb792de56599b13f55b311a65686238139ff2bb422e6d412f5f6b3458d1bc87011c42c9b0628007a2dff7d84f0992ff6ad124617dbdba14199a0d7096210bdc312a124b00c28d17f291cffc6606972d34120303e15d7228167bf6a2e61028c6c61965327e7893567efcc9cd5a99154780840c9ee842684f66c0018ed186f954e990079364a19645c8dd4d4213c7c4e25baa446f644b6192f68243434ddf4c54e662e13f7379ff12460c43c1f2e84a69593f30e1c985b3c4f31a09ce9480b5291899b69405ab497cff97385886dadecec9b7481a124cc77c88b909731729cd53b501123cf9910307d739642a676bb093587b4c32b0ba0ac4ae96df43881f89d975b265bd8f9d462ad4ad794702bc75ee759bcecab9097bfa57a8ee6ed0500cb2d35fb351883e0819f5d007f087bb1ffcaa12ca85af8301c1d3fd236eeeac9737af1f0082529f54568b3431f5003b03af370cf06dcd9eee9bafcb72d36d05494d3339357609b04a8885e23255e1203482ad9efddbc2eb08d41bda6aba8e30e46cb5469aa9f4eac9bdede2113ea363ee5c0e2a5326c63d1fd48ee5dc9eff02ad77cd5a612e8861c5f2781d2ce2f7f977a55be22af5ecb8c32a7a6b512203afe1b9535e97bec9bff85d17decb022b6272a6bc6356960da52f622c608691873aaaaefadccf7bf9ef51ad73c38698d2301b918670e18385ce2f0e1adf067182fda6c8858b9bfc14960041656e7159a31f25e34d910c608b2f63733f400af56bde52ceb7eebb15308762388210e414e31ae4763268f249123fe1b33d790290bad882e642b1d63e59e26a76cd347306c9f3d502873d905c267d4d57e417ee3853b2cf813d5d2a23ab27da6cb4b2e774bc682d08ebf64ec83bbb5ba39da92c2a40cb93c43dc086aa814b099459c9c6cebd4e7d4b4ed44a581129e5d94625bb0f5b5a09de14683b3746c948c6603c601a944f4b7959e6b659abb939d6da1a5de012b5d7816bdbcf1f6524db5a93523593a78b5169eb349aa590a9e2d78c69be82aabcc8578f35d699f8be5c0ba28e1580f2ca1ddd6088e97bc928136d7bf7147e13234db7a885a34cb537d68562652515219d5afb455911b6394969970ac707d0dd85029cf86520e5e9949112d4f65d2803d8b72b9d9c1a662774e125d5e63089784cf6ba1c4cd9d663e73e61e1188ce8c0d210fc60d5a8ce27a77670d85104605e584f4850fde2628a5a4567d4aeeeb437e3779ae90bb322e6699675760a5f5e527c71d0248fc23dd6dae2f5ff2ea4a24bf80dca08c25a13d24401d02e541a08d25c293137a6cb19fea390dba9caad91974e4265b3a8de80ee5e2445ef549747fbb64c9973771c0e6cc4c74974c5c43c13163fdbfa31e42118cb98c783cbfb9b0979040b2e3d5f3794b86473c16daaba4c82edcbbddea0aa811a4839668c1339bfd88bba7ffe9b53a329e4d02fc56099ee52d57ff09c674cb1e2dad786438a288cbfdb3a2437c91d12e3422a81e18ab0c7cac3df4010b4c4ac9108f1e9c5b4d188b0025ab939bd67cf86eb165d7f0c7ad7957a2c8139dac09a3edac4503f49bdb285e7230dbb3c1e4d1af5688ce702e6bec9d32ea614b6015b64c515fa9ddf8ddf2aa5740ddd2a441e5128669eeb8e58744023d316b32a679e2481df9e66511c40b902d0db61ce445d0b27c0e54ab740c0ef68f752fac0be483b822e66913a5526109d4793041eca91ea1b013cb2937cd15ab6ab61152afde0f71c3e275a5ba6dc39e1e1cbc150bd19786c3b6af06af48dc0eea3806be29528bbf3cee822295a6f7b9ca4f466d22e33287585fa9a91aaab7addc4e067df2f3ef0bdb84ec9594cd66107d5407506749b93df6dd625a0f27f11fc13719a249b3bc4d1fca2dadcb966fce9d48b2f1faef300c8d02081bbeda78e92cf984369b11586158a395033d5e485cbd8969dd104de7320ca9c3e04abf512fda6fe3b074e2d530aaac9c6eeb783c2e1d81c9db8b95d973a5a284a5156189a357cfd3f318084d51f50bbf906ae38270f6e32032c8e2c4d89d37c9f6e34e18c9601eefcbc19b9f24d1749f2f96268d273a9d27a69d48dd1e06ce4d58bc0b6c7ad2c4ec38eb1df79cacc494747a85d3d4034bc30a35240f29ebbd3284a0124cdee975e500b9828127178ab1031e5c18ea97ddd1ebf5e2aa267c41b711e3911325cdbe45d89a4887d5811e6a394d98afe3a00caa4fa5dfbdc28748e33da02c818626a872f06ed0ee6ebd850adff1c2dac126e10e4743ab22f3e4030697f62ff60cd12ca8621b8dbcbb8eff21e07f20afbecf913a621a6f0745933fb6defdb4615f9f8158bb9fab124495008055f87e09be7900ffd529c7fb12b4a0f0a5e0ed1d3bd2e781fe234a99f49182400aa508b7bed0ec97713f3664701fb67426deba50e20c84e3cba37220d2ba89eb03d13a9cb04310c99813e2708254308cba1bf7af1fb36013120a004c83a606b278f47e0903d1cbb3ab416007ddf49043cc369c4a88709ff3c0dc870785a66720599c3f1d2003e9e65c199340a27c55f16084b60362ff7f3b86f5bc7a98e78f500a881122194c8a9e26223bafa067ec295d128630db40b06b96608b7258baa236c675e4570cbb5e9c7173e9ee75335f14c994b106c899e02eafb8532f34a66f39c0a10ab8330d38fc7556350637ebc7d15aced04bba196be925f0645724f41e61358a852630f15fb8da2343327709841e5c2135da29315f876fa1bb1efbab4634f9ed8771297035fb43b6835abbde7fa614572fda2d6bc16812b3d36a07b554e41156527509a1eeb814f5f093faa790094c5f86386c8829450397423221506f4a98cf6beee7468dc80b336e7237442afb0e3cb4f76665b8d02da2c478bf2d1568763743a299916a6e3bc39762b78c07cefdb3668d2e36b5cfa165e7f9a887f8d06c339d62b2a728706e765507048f65e4f18aaf297a59f383d43a62eb9d22ea66ca013445060590e5dff43ae5209b1ea9775171c376a79b8f3168108068c50f9e9e209482799401e8133c907620130646037eef06d078b692370a6b1b452fc53897d12c6274ace5587b3d644760c7027b232144db63f0ffff51f5e8e1047d8821fedf32b09ebe46b05994c0ad5f00716fb93452029f811c0c09ac70dcdf24f41b77fec13e4e7143844a53250e7505e23febbbc6115fd8f8f84afc5584d1f79ffebbffba536c00462b00803ff1d563a8a66cea3db052b8b389d47f6ef1a37e1ce5c6dbc2cea6276266898b4579e3da3ba88469e29727804bca4f2460ad14d8da0970d3d1167a617dedcf67672e3b32610460072b64cf6105eff996a325fad56011d32ad60ec18892325cdc2072e9077a061b496f0505995d27bcc0ead20ee8f0de51c252001d35c361380d12a4464444ea9b2d346f1fad41e67f047b214cab6270bf170f9758a74f41561f529984546c4af34be066a087baf1bc6cdfac1902924a6855650fcf0d9e576caddc9d70c1ba003a9a3344b5873f1bd5a482e011e2bf53af157e6f662567bb000e9323fcb9bb75bedcbd7da287d5dbe2d48c9dbcae7172ccb18ef46d1175672815774cac267f547c241714111e08d800fe6edb5dbdbd37e87321822e63bfc25489c2fa08e92a520efc047f4bf4d710dd15b0f7e1359dd15e4fe5e2708cceba702ac4701a11ab0f3b7c647e9b00d3190b22c688a91027d2f0522d2795aac30fa2aa60e41501d0f0c16ea2727cd0bb9a0c409089d2cdd61aff91a9a8aa9f406ffa9263910d4f9df29c10f6e5ebaef5efe95626c9eac2b99a524f4df2b9f20117b7367fb3648f437d1c7c0454baf990f02a2657797857b4daef594c39046062b5e486b552b02746e20eee9a9d06b2b875dcaa4c921cde1c07ac8370225aa1092d28106ef88d5299b32ddaee16e19778dabdeead39a81057eed6f890a85ade86b17dc1d51065af17ff62250f7ce4f47328b898f3b11eb02dae664741ead2e620eab51393ddda35c303d92344d8e1e685cc631e7d75386feb39f299e1072896b9926a146018dee053aa6d892b6bbaed0684fe546dc81a4809a61ed5add49515c2f6c4903aacf155d98d682668eb57e725c4a9676ffe3d06d5f7f53cf186079f2b77b485590e0ea2ba1df6df7eec62055929d41c8ee84404342e08890b7cf723424c7b5eb83750029015756c098070de7368ead486eb1125ec5f7eeb1d4519c33d4e93e9a5b870a92b018277c119980d96e1f7b88db1ae073360d99be7c746f637a3c918d46e92b7ae8c04fb81ce3f5f8e95c4926710be487004170228039841382ba52e2d800e81cb8f2b01736aa961d02f56bdeabb64e6d069e16f85b584784089a6811136a2da4c6d7da1a46206dde02253d3ba3873c660498a15c88990295625daf223fc2393056f43a5d71ad893d4b141f3c9b1dc69bc9cb9d936b24ef1321609b85d2f3d98e9e098c569324bd0cb4264d071d8a3d6c99c83a641417bca089e73451b3dd4fd45a80338e3726e69c5ff8a17cbf8b3a47cd33b7801160c066e45d20ec4847c24cd5a12de43a00bee466b0b6a899dab46ca09b464d024209e469c80f2a96c76069586ce9b1e3975e8ccdde406137f5f85de1ed6e6f74c90f9c7eecf3e6b767f9c9ab92b2a2214439baff7002d4c4073aa02609563b2aabdeee08e6fc7f27ef7382afc5a599222068c961e30623838114d3ba6b186b37ef5a3dda673d06b6fe61e7a2be36ac2b1f1bcce5dfdef50d54cc5ef8b8ea1d5d7504bd7a3138d82746a3282593cf0543c4e50144479074b4f5ea6b7f580b92810f927e6a88011249b853b76f0563a48258bb5ccfff43893ebae79f52639c3620108d8c862efe2e9cd6aa93875076c92c8bdc54af4714215c8197e48b59bd2b84d71776f7197766c71f18c5f82417467c8f52c996659646c3692c772565af7aa3a3645fd77d2d21509f109ab4b20cdebce5e98733c3bd93650dfb8164b24bc837b98dd668ec942007f3547efddcb34e686edf3ceed3646378fe1ee68d1abc3bb54f778cd1bb8f07ec17b5df196de074b8a6dae3b3fc79b8b17a383cc4abf624e633a77a9e529e3744ca60df518568c66d32c13bb0550359b091fae9923212275d0c90ed6544182f1a9b54ceb5e3e250d1dd134e5b61ede65dddbc63b54beeeb0adb9ad920ae50fd92777230466099ca1e5648b20a18f372243d92ede39f8dd8350234369d528341b0b7d03a1db20b43608cd06a1b321743610da4642b361e86c149a0d426b63686d28f4da483f3079f17e128274d2726d70955d32f5b9bd04d4c578d907609e71c5fcda8aefce4b0b8a10b6291e7816a2837ba75a020ef81737010ad2f82bd5269e9d6f3c7b00236519d36ca1ad14b0b0b20162992cdbc55cafc87f8d29e15592b1805905477727d44c558b45255028e6ce1dc03de15e4a85899cdc91b5e8d830ac41bb735876e0c931e5a4c707038c866c6855cd605ebbae096777061045610d8796965e70c04bfa7a1cf85ffa6ee4722ae2bf24ce7dea9a4c7b8e097db76e6f326f34a7f8373f364bf37da711753fecbe36f943aeb02abead6cc641db970d6dcce39b4e1a912dcac0bf803c08f041e02d0384aaf265d0c05547b68253ae0cc734905c4188081897912efd90213fafeafb2fcd2624672299849b3369f1bbd0dd099b9214cedede631322548bcdcd7a78ed894775beac2eb25914b506bcc7f4ca69eede9d088dcc3bc5aee8dceaeb34b7c45403b7f747134436388da5d5b6708baee057d402368e8f378e3ac188cd598c361464ae14bbc89bf27f904a39a2330635c42ad1bd520c31256f130b561a32152746a5b4dc7c23b52b13ab4d2a7bc35b97dd6560123ade571bcd40fb1937546f492f2c39b35d03c989df81ded9edda283c1beac28c30b8f2aa8d9749fcf5e68b94c816aa8c560300a43a8b2f8a83dcc8f56e14ff61a9e463e99a79af79fe1978efddc5d8a622f18f23c8f12ddf80cc6197237d1b928c93e747da015858a731fd9691bd12f9402ad9228ed9f6fdec35e0a69c79d1a4973b253988f1fe84b104b38cbd3fbb43a419a0ef2c28f2553af2623daf4525f4a788b8f86deb2b2645a60a9417dc0ba17e96cd86d66532cee59d20eb2a064edf64974f175b5c6ff63b814052311aa28f1e690bb66c963380937d90d155f56f137cb9aecb008b0b63460c25dcead07e67f226bc2ce5da988300bc1f37d4f4337243bae68e08a93d107a2a69376948a41b4a3494f501eb6db03adf43690368a8d9e4d551329e5e91f9eba1f242acb51ea69b68504a988435e93db4b0da7836781a52e1afc14a26ca2eeb0ee186820220ce07aed6d74031fc13ba5aca4de6a7b812abaf4ed6d0f633c85baab51a79535e52b743d91c1d24606d643431169bc7222444dc1aff21caedad0b3419c398598d9b6fdaa942121d86450d4446b75fd8b38419ff12d8d63d88d04e0d700fac134592ff3413d82316ed07359e64ed10cac55fae81a17010e96e893bb5d2cf4f83178c1880316f99c2cd5dcb66f161368d5b2a783f554aed311aa1a0343f15d00eb3dd6589c16d44450e5f2a2436a84cee9205b8933643f144830d564accc12f5ed9dc0830a61bd6a251f4b6a2599b4699000f5c77dc2a57a949188615a9686480a885d36abd264d954961214ddd2e66c04621976d711b0f2e60b61d4cfb825e5f9b8edb01b4ef45fe818d153067e16ab6427c3f2a890c7380ab4893249d8c5ed46903e57f9d0cc14e5a154ee7dd575922f54ac36eebf0b40f30e895b1f10bd60fce8d55e6893d1b70af43a3c9a8845871e9186b606e49c579a477830c85fd7a4cc61965fde19e048ea26e2b48c4a6b077e9751d2bc3ed87d0ce8f5f83dbf1209a23845f7303a3b966b967010683922718f092da76b52427688a4ce9694722460dfeda11fa2f2d482e10b9692fd2939efaf23fff035488c8530a617c3d09a26683961ca2eafee7e32bc293685462a030c62bd4453699384bf0a577a0c62ebd64b393af3350e6685866e9ac1fcfcc26b0dd2f930ebdbb5514d4c82912d31edd598fe1845c13d3381dce5b4cc715efb7ff3354646127f9bda41224b60482bebe80bc9f6120eeee7b174d50d2c95876aa3a0cf280880179d03c17f8b31e33de2240405cc809c9f5adf39f4bb2093115ea38926aebf842156091771647a387355b3c065bcb99c9b03eceebb5fe0ba6411523f6e90c3792119f29e909dc57b194d0383d91eb8c07c1f6c70df07aa71419938cfe952ee8f86d73bef8c3dabdbe32b873a2ab03db8b3533ce66cb3ed063d166b34153c3e1b87b50e02554b78e3636f0bb2f6469fef841fe12b24228e10b81eebe586329b9d9134a5ef5d3e3ac012f4c1c432edcd4ba8c288d925bdf160f8844d0236fe066abbeeb3300986b391b1e90142e832388c40c67406a2d0f6d94e4eef3385828f205973d40f480698875a2826cb1fbd5fed46b9c1c701cd26f9f6b97958e8383260e310efbaffd0ac8c311a3677f1e485eacceca7bc95f2b8083b5ac2913a80923b5ce414a5539aa0442fd6af2308cb8371b41e82d4509f7c9ae3a75669c4fd6514b06806c89605cb259085766e8d009b7d91eebc4591e26dc00365d05f7494b8e5c5e3ec2a6b25c42801044d7af90c32983a13350c20da484d9ab185c435ff8a68ff06f9d1ba92e516882a1e14b82e5e3566522814661cce2d93ea16f5070008b584530cd991e2329b812666241e501381a223c6d487b4e2f67e182afb4b4b6f0a34fd875bbe09fa6519bc685b44828079af25920e019f0d68c2c5b314c14b59d317016fadc77c6be49c77423b1fa86855038c8dc25061cb50e0314c0caa4f2af408a8487cdf0cff5a5f522508611e6a50109de9a5c7f1a78b82eb8cb46e2be61e48abb01bcbfc668fcd1522b5ee492485840a99fca0a89afeec5a22a4d5561102cd01ec6c78bfca672f0579c3dc4c52151e2123b7c38725022e1350d94e62b68f5d5f8c0c97b1401e3a95f3294b7dc66d9b47e12d752eac1eeccde354c9657e21009f2369662a2e05656371411fe65bd3f6b0db19028705266fa55d52c4094cba3b20d182d3d24e814781a0f269b0df50fd673b565f95ad13436a1c3c217c68fb2cb3cb67e1aa10849ba77a8d23967f7ebaf84d3cba4ae0d79dc43d2adb18419277a7e0eb32108e528140379087a87fad6d328102910620592fee25e575df56bb014a3987e20b794388a34fa205589541a01aa846a01c8fcbf2c9a96e4c1c3a72b58e06e6d6031514c18a701d38a90256e4e19e432c0b89eeca819103e779c21f5373ae5bd24c9e17f61306d3712b2a2a30c09134cb6bf54b96107766e8198f4ec535aa1bbafc5870c3b3a3b55644c4e9fe1f25756905d1fefb00851542b47e60e8357ebab1d925f6082d739efed0f6cec6cb31e94c120606d97f30cdb92b72f8cf4e1d7238fd0c08bf99a615be3fa4c1a05e8fa661a256afcc2667d8108754c740e3413fcfc8da42268ac4f16b1fe96040cc63feb5b4659c400682fa25f98eb7e02f64a444574384d6710ea6cfbb9f1bb639e8d7a1a0038d9ca9b896210cd9c4491f930ad5acc330d16fba9535bf8f972c729ce7079f4660d9375141c90a54e4dcf014d41dfe1ef4cc08b2f983335c0a80cb274408002a7a7fca461387a0f8c3d30e28151af94d08aa0fc6cbba561a3cb836019b2507a5e0d05c70bb2d75d980c63991077d568ef000c173a48ba706017af4db6844e57ba0661330fa041c1158dbdbb2fa69d1391e325a374cd3d60d4d0e2049c46736666790f1626801088ae4facbdd6e65797200cb4cb99c6871e40660964ebc06aa9c9c4496880344b920d00f04c6ee5cc54bfb1c77ff914c289fe9876a68ccb7b251bcc72ce391ed71b7c3acc0129aed01747deeda0655f1a0933ebf8db61e09db1f7b6feacece45f283770ae81b9d99c22f84acf6c6a8c67f7e815709160b705ae9f267e94ccf9a2174423745bac48dd2f293d3b8f8924b0dcba48a739c589f49b76e23e1140440989f8add7c9c34492d2149b4f402abf09199a9f53a50199ec5fdeed738638ce3c61250b852912d0179147b825b95f74be0726930ab1f610ae5c11fe45b822aaccd6321721f8d584146302e54f5ddec4586614b7c9853463577828b445d6c55d855fc365ae948443792d0d0cba956e4c968fb5ca011718b6216b40c9a82e8fe3395453239d1ffacd36ab90b43e737565956d3162c0457a4b59618e863c57969bc33d972b010657cb561fd8a413e505fa06e0e88be9072625684142af07ae7176fd0c34ab6bd9eeed8f9066d9cb9caccd49c877d76dff1557bd762995a66b86c48d8bdb24ce6a25f4388e9baab99f4f08a48d30d93b613741091331e2c6e08fab688734a19f184945afb8d00b8710adc54eb7189e382034897c64aa27c6391568f568da20b24c87fd7b1bf713c1de733a7b4e9c9cab1046e35e7922c4acb601f0b75ebe198ef5691cda5c662849e060618f621af7a01a4706211239d0d110307a3b9e0d307c579295cf2b628c5bf80432b3e65d9a322930ea3e30b6da12e67f7b440add6c0ecdfdc8cd2ba5c816db08fa5245a30a3fc3961228bbfb2bee76abf567810628c69136fc53fc9b6ceaee9934a0cb4bf3f89d251a3ee89bc0e6f65166292c234be72d8161cf5909e78ba17587eb1c65330665a028431e2b938fd6d0f68673892edd571f71d0302d98ef6ffeae6adcfecad0a02262910576d290ebd7ca9c14976e33e17b43d3564a9f36873df5e896b35a42e447a0232e78cf34a455538fe9e56f15d4ca2d585e3d8a4cdc2b11a9e484c87545d2b0c9459a8b7c084d8b464cc88f307b5a8edd496f30ad02c3b53c82416ecad49a66b8de61eda3ab25232d13277ae9b2ff7bccd0b3e92366d656e94289a29df181eff8e0df304818039a34833e3b2f38a869701d7f0853ae7c1887352ed0db0dd0dc657dc596697b5239f09bc1f378ea50608a3143bf7a522e5da3fe2fd5304093ec5be96c87bb9109a21366b16e0a5d8862a599cb0c9251c88d4a1b6b8c6d0fc32cc1f2b96557a8ce46501d43b684a75c329ebed8ed4faba3703dae82f685f4e701d64a0d78c729ea19f3a54dcc851791580dab44cd4e710d10c9c80925b39c94a7ce621be222ab03add1108ef384fe260e92c800597f2747362d2ab1976c2440bf2f11b7c70f44620e10d4be7c00c7b37f32fdf8e185ef2c32e9aed610d38adde954a9b29ac5e88281453975a2123c0f64e11f9ac2cf1edc0315a5a75a1f4715c4368473ce9416922e55943e4100fa92e327eaac35b9c4ee4d192b9e6894266c0967538cb05d3159998526f3ae391ffe6fadb1288a319cd7f57251e388ca17973b06a7fdec2d3e0860b824f18bacdd2a5484e564dece45fdd5f06d51b457c16e5f8136e4813f13811bb65caf8998ddea14df2365b5768aa0e537356ce6d5753cf86a4da60f73f84b131d778e01e1a45482b9f2f4df9ed22a8b4ae5d72917f08150eaeb2d8c89de25ba84268eb526f540293a3a5df5b4b9a164133dedaa8d982e0d513a25b33aaea99825a702365171b78edc20527d9ab86c9b46ead9172e5412ffb7fb92f4b168c3365b20307f97069844ee2c084a4835244051f96e65e4007eb50bad4643e2ac8e630c159abcee2b680eb29f5354ade852caa42be1f5a9d5143d1cd6e995ab3566108199d7e578862b77aeb383690e51319f8c88a09150ebdd15adde2ce5cf29392e584e339012f51e54b8d42ab11bd60781d73007235b5d37a90e54ab32587c6288b149fd1f6e9d253bd2cfdd975db1fbd2f297a19e48e167ea53779322a4ba7711488355208898aea205e68cc28c7f8ec074e47a736497cde4cb05230d3586698fde67e00dc4ea85ce9e4997718d00211f698ff9e0a6e8c15f89e24f511e700a475b9bfe3e134dd83d7a54a5460e8c1f5cd2252c3dddf1e4cedf90f960c278e9473f418a467b12b917971773670cc65c5486dee98a940835eb240b243f1b4db3a21b4cbb350d9d425f6c771b85dd451ac46d1717ae4b274cc89c44cdf16b7039209766ee7cdb81bc66fd09a3d21492996ec628e5e2ec430c32e74968eadacffe062011a41492946a7e4ab23929e40529ca92c3283ddcab32b4ef7b3fb7b1a215d78abaea7fabd60ea428a43d5dd57a87f9fb4ec58bf820388e35306f7181fcff8e08054ed9865188d39970b8992cdcd13fe85a32936030d7c9a813d81b24edd8f05c8e1ef32a9bf8b77402c624c80e0ee677a167412e8d6338a99fa11346af3a5770d7bd48e5bcd2482d346a7e021554dba175783e40cbfe5e5f1068833d91248d393149e979807551bde50089244b491687d387e72cf9ebab9e3229716f9064c14cc4a04ec164d4f134f52c7401f1b6f9b32675893b9cac93d73b5d4f8be44ec5d49c41af95660a2e06512e607171cd9666c668a463eaded199a6fd7259401cadadea33357eafddc6b5f3b56531cb901afc56f0d9970790f1b5b67294f9e8cfa8a51c40cd698329d52c9eab84c51dca8b31aeea72ff41295818ea1bb6b9eecb01668efa23515c082e818a4f52c22613d9800bc5cd1c84cb247e1e8201d2460d3ef6d34a3c81d6bd7e1687bbc14c4e2bf65e328199151f71ed40c300134fea046b926a95177d8dc2a8abb15c6e68b04211f5a16d292bb3248a3d6f104c0cd210b14f86f1bbeaf7424de86ac591b7c4454a3265b834cb6744622e4a5bd30023cb24a9c6eca9664f50ff9cb6ad0a9203299b8892a3e979c4d867642bd54fd302271b51a8a2e6bc9c483522a0a5f51e5ea2428c2663490460cdfc34a7c619aec4058fab977e361d45caacbe8a09c39e12092dbecde68e8eb3047133018cbea4e4e612822324e7f57dd1e40026b4d9e9719cbe179adcc08d63a53cbeaea67a031963408c03e35440fe33b80f20e18ca65e9201d6f097441f84917cff93dc4ef3b6ff145c7f7372861794343b4e5068a9f9eb755c52a16dc5c40eab60682f5243bdc314dc1a2e23bd292f5c13b18b1ff3677a223834c043dfeeaeb896bac0f010a88b92c336d0a26d8a15824c7a24f4242e7edd5c602be170d4ccc04272e98a0c530b2e0995e6a59590e0bda00776be54992a5531fe88a2106b44c16b53f97b1411a07b110ea13cbc147a6df892c1c5d86a42458219f5ed5c420c37fdf037678ec1bbf31f1fe27af1e460be9e1cd03d28bc7412b5dd9214c85c55daf693e350eb75f2835e4be2e73e3e7cba62ca1e3f02acac364cfba96d38394e53be880659899d076e5b9f2cf6378119d140dfe6728314a7d9e0a8ba7958280695fcbf204435fefbc07ca590ff3ac5ad2ad891cea20914909a1859ac2a4b56efcd0a052a3f473422049f76f9c87536784bf3ce21dbdf26507aef1940753616a0a0d6c745f4ec19a09ece6987667adb4ff3458df3fd550995d502424ee3de2eb38065ecadcc77ca60321931c9f4340b703c2304d88488200a3f0a02b034728c113b06469140791069c4219824cb710895c7a48c24e0d0ea7e1d30195d0dc9f43120a153556a1b90fcf434c1eff1fcf539c2fd68210211930aaa0508dd775a4f5e4407c2594d62e6185519cd3639d8b5c3c9455d1c0c17db39d823be961d38f095c0b065ec983e2ba71f366f740f5d53191534ba43c9949a9251b7a38700f0e5c6de0beedbe8271ff7e27b5f5aac2803c7c42fb8f450739dd150db1bb6bf5890d5255d35504141a5747660ee086c0bffeebe60d2b0a84aaae42a49c560cfebb46c2725f620c66ce47a0eee95bc1941175de731ac6d7cb0d6eb6d2f4d8e4408c6bbff39438a238c3848d4c09719339da8b16b825fb338c453163a8d04220c361f0f48007a4704fc1e08fcbe17f01d1f8831ae268b9c1df29435879771479ed6228af4014d091e85483008e08f3e248029d47322a06313c9511c19ef50334358bfc65d303ff1166031dc9655fcbc75693cbe2d735352adb54ff734cf20287fec6a95faeccbfcd2b78688c31db7913e11063db9298150f20262bbc571423d1e5c226e1305927456250f808c974bb89f4419e9f6ed070afc087045e40b8120ef102b0f495d484dee2006dfd69a54a3cfec884a094ce6cc4a4afe921bcc04999bc8cf4e9afd13c3433094698ed2424b71d7532e371575ae82ceb8b7f2f7af28612c14394b95d6f2a8bf05ab11bdb8d33d2870ad9c0faaa48e103255648852aa775bdecc4c3f3cf3c100e7a7a496f5dd852ff171d177a6b51c5c1a4ef4269cbf82a6f53848c85a03c54705b80d8369f62bd5076ce43a7cdedf945bae1addbae46cae9481bc5fe23376747c1b7b1f2262704206dae97f6fdc6a6b00a5cd2511d741622286186dc9ff5d22be9f20beb0fd4ee40ddcfffab263c112cdc659e8db7758a752f33fa647d456c0c702ad9c4b7f512c1dd0b883038eeafce12a7ee48fcdbf0503a8c0a403f63e3c3d628e3b5aa08b3302b34db1584e81a52be44752144c5a31dd86a3b0fda43c8d68f6f9f51c81feac19880d6b6044bfe03603a27d3d9e1ee0364e12c4ecb3d1dcc6f89d56e09ffd1094f9e6e16a45ad87bde42edd8fc78dee9ed1cbb7d1db117ebd0c6ad15fe631ac97a208daddd832acdecd0d7ea4e42bf504b76738bdd887ec386febb0d6b2f3202cc8b625bb658832c33f7ba9ce475bfca7ae73c65d57ba4afb60ca052a7845f7fbf476faa842f11ec0c1a2cfb8b27098dc651cdf5628de967c7e4023d12edcc5c5b0b4579615e9a8aa08bdd7cbf1851d1e1bf0f8d04aa19db3da1d9314feff875639d867c04005446a06fa1c632f3a8323ebac11834caaa59f2df68e2c9efa2eab6f43bec553500c2c6bf382a40b4d4c6db3db8d3fbd2833b3236c45717aa264c60ed82d8c66769ccc94fbdfdf461b2c2f6f50ae0ac2b964c71ba0ff8ef4d80102d3eb4c253cc083b44f4285007bf43a0fdfab78cff41e1f42a3d1973c928946c93049d368449089dc7510cd7879247fc75094b635b80b053613443a258f031f4f741ef04df8521af58aeea382ca558f2a8a461f129131aa7a389676004977231b1e37d0afb33797d7c4241e0e6bff2ba0944a4fe00e80d94f0bc7cd8e83403a662184f70963ffb5bfc50df9a58729d67eb406064c780d2eb038f8412cd598d7a48033b3f05b5942e102df7024f3976e306608032e14f5294c29c7d534dffe0e97b218c35547636a8fa9a2746b57440fcb95fada4d8e82e8d5c0bfbdd5463f82472eb3f9dfaf01d066392d12e27a619369caf84343fbe9dfccd91157e49925f847af063cd6e156573ec6be90e315b9992118e83ce51b930b386a2a30b3e82035175c59e6595cec0537575b59882c5aa2287a4c448b5024923f32196fcdcc74849cf8259400a6ddf7ce1e2f3db2273ecf11bc3d682bd7994f7116842f6f539c7561a0c8c08ae1d5af32dbf5565b6cd64dc3bb4dd3f79dd9c5dab4edcb708e922629d579c63fc8964d3010b822d962ad79153c84cc6449b64454f26e77b63ebdba90f9a0a8a728c9ca7d252a34e7903c2a454c4904a526f3fb2ce2f9eb6c7b6bd55931b4d4bd556e09af11c5d9bd716d9b609015fe24cd8076f1fde687f4e62abee12856aa2e7fab0b3876965fd3540dd7b95e14d0d02538184c53e5a99197dec15cb8310b345aec5d5af94018a6337acb25c1742f0cbf53d57f403a6bae0197ccd8a156cdf4171ebe228d156291b91f4b7d8caf03aea7ac97aa88d11dd87e9167c7196438e15c7d97eff9afa18aeb4e148b75c0a2b8fb964a785607a6f3a3285607fa13c8a4ad7fabbb96384b387c0573890e0107aa4031b4e4cb22fccff9c5e96a35b5087203ae7f7b22b848b6aeb7428ce57af95af27430a52a5a14b258fcae62ee190499a7de8448b2c66bb0cacda918eede4534a4e2eb2d47bc6ed0959169e154b04267a21e0d5c127fe635c9b0048392d9ba7afbe7843a85b55bf2bd0c6eb9ba616636c5ff52622279614adb7b4ae30c2bbd29cc8ab6f70c43e0312c1b98fbcfe609ae855f55c6f99045c1fc7d2c6c7c840e40b01611a2a65367329dde498cc1687804127fe271536690c4a25e4062d6f86eaf66df0f7445dfd0959ec3fac994b02bc91320e86e8fb7b00754238bea46fd4cd3d144bc1f98fe72be5b2782a0ab39a907a56a17d0a4b1ebc4a9183a2be9d83ae3aac981f2d07580e0caf40fa7184ebf9a66ff73bd4f0194f5101b8aeb45c5281f89c17c5395617ec741467f08916eb83284ddee80689a438a1b551b42b71ce434b390f24d4586f82d078df62964bae9c25076dfc1a26f0f316e546c88ee7390d3ec42e49bd40ce3f71c30ba4788e9a62b43d86d078ad62f184837af18c6ee3b40b4c621e3c87484a903d71395459b2bde348dd71f82a33bed050edb3a1061ae12fd9d66281724f1d0bb489ce16366a59f92ea581155f5fb3dc5167e31dc3a2b3e74aa72bd8a62310c2d1a77d95187cd75c4f47414c5a6403f314c36fe6bb7d78acbebe2ae6a42cb50096043c4f85c01ed8fdfa77bbb3c492924e7dd6e0542262a591d127eb42e101f4a9e9ecd51458b80991f7bcc3d8224cba59afe4d8bb58ac4749ee88a1a1a549675c92c6836e862b71896284300e26acc2bfa5c7fdd0c248c9100b7e83b14105ee80157713ab548c572fd3a1d0accd03a25659679b9b2d87b59234375f63cbe05dbcf24f2f3574e747130ff2a35fd1c98493af7c462ef6f92b7c9035fd212b3acb82bc76e5b6f5789e1642b3c8fcd0e2ac709c62e691b8502087e3776cb1e94cace67e8ffb1b06fda9c5ceae14b504b887893ebacf0c1a9ce16ba01b738203ea7d73941b27f0c147bd9fd954ec4c85f586b4657538e484542c7fa173c850d013a3ffe6846c0c7c5e66fe4274093091ceaa5da892d949b4237cec29394a95076d0d9f674b0e6257d0b783d6e3884e719caf8afd24d304a5481da6dfe5fc5e30914b0aa70a52cbdc37aea059fb4bf1966b31e600f301003dac81ba0f2cc909ddba26c9660f2307f29cab264ecfb6949399796344405f3717a4ad6c4868c0ca106d23a8db75a72193ab730ec321ebb5323c8c449a5a44169418c5e2f11b4d964849f4a67ea1ff7052e76ff98fe32282511fe6e228a92ff37481e6624d160cdafd482941d634e88844c536679ecc2fed7f413ec1d05a66a39c436451ff2d43f6f91d89726ceda4237f59e3de5902c07db47047d71044a8b2124581469eb681dd901b6fd8d14f194876b275d23c504adf131e5d8d770a0a8eba4760e63a2c3bf9601f9205e3fb0fb8f685441db22bd652c894154b3b934d4f2c378f8a42061ba66023d3ae0406aa6a1f2944da88375912a3abb7ec47caad2530f271046bd194a9427906b717a783d00ca163ad0d2abb976462ccf390f78847f4116ec002360a3e917298da69aa84fb1d23571402ce050803f3d11ebe73b0f3ccd6dd848ca2a163161096c53a1cfcd55a97d572020b57dde26fbfb488baa437b5c3fa7cb29b3b3e638f86ca12732e870499b61f88b4a700cb1d978d791f2e33621bb9e5d8acb15f34b7738d8556c7c8756d068ec2901598ece5cea517ff2cb259e8af300979344fa047e75639defc56541388705a0d22922ec56a6d16211754737844024c72c28e2d00e4c6354758fb17116fe2030bed2e34066a8776102813d0b3909755f8b4f2e462d60288183013f6e775444c3f3e41b97e52e9da32e4a465fe4d2f58728b959516b09140b5fa60df99c308c4545a21a6b5090d8c7bfb8cbfc9ea4942f64ddc09be668b43c091dacd54790cf2a9fe1b69122ca2a9becd2458228d666951c3e75440668900e4728066c73441e955f1f6c212eb82c905aac460923aca24a01b41bfe95a9643c34b0f57e6a33dd8fe44d37178b8c21015fde543da6f11e153a55dcf835ba5c104284960f154914a484a492c692295245c981dcdaef3672978dcc88bf1a21168d5f24fbb6d361fb8cf84b926fcf5490eb416a3d8cd5d3b262d2244a9183d42f9e9442441dc5fff664019514f6587b408a054318fbff61e985c5fe998066e6e95bb13f51194d573e1466f749db6603ee32ad9fb29b14dc5447a2da0579f5692e55b93628173920a9d25036f18bb8cf9b4c3c62ad07791ea4b7533fb77c0e85d5c371317394a9054d513ff627719402608025f8a04289b16c7ca4415ba3a1ab6b4230b86a08f2725c36b55eb8d1f1be7aa912f9a1df44927cbfcb122a0f4caf7a8bed24873afe6f358b18809bc73e907ffa97a1c9a6e9d151ab88e936af13323082fce76eff683014c5fde440368a47053ed38f276a6cc340c332e39ebc7bd36620c7dcba3e95df00c799bf1e48e5cac275e09f376d961c6492f9a257f3a05821001c1b7fd6cf8ee136539cd13e73c96ab3e48cc7b1cad2f32c4fa869fe68ad045bef7189a279063a1ecc1a80144f0d75344b8d5a1d9510ad02e795740111e2e6e385e1c0e25d9d9e9b718016d5803ab35d81a5223c03329179b6f0ede7194d3b5cfaa04b7b7969e662cc004bb30b2b539003412a8018653e09e3bc48f4b794b30fc4644a65d63f362a9d232200bbadb4990da286863525a904caf7647e1965e1f6afb61e71af0a344be2b68e30315e4494b877eb0abc1d4fefd155694712d210e120eb0d9090db556f021dafdd0527920a2a7e189acf9c3d467b72b0c99018bfdad094bb447ececdde65a72e01c6fdbb06fe975acb3c010825fc2457c4bd88dc8bd6083f35390c7a3dad647df144b2abf0c7241fb453b8f3bbc97159f3f3757cb78080657dab41af54ff07fca0047ed0c4980f551048ea382d060aaeb43d4ad6f0db5cb16f21208ddbbe0a5d1126a17764511af60441caee3384e9d98c7d6c143fb564ef4424000040d61918f5da992f3ef0a670a196feb6b20f447fedd16abfd612a26e92486477efea0f3410be0e6fbde5a21a35a451a8962bdbddba9580121928c9b0c60e5258f12206ad85b7a75b77e1ddba7d87f25aaddb440d64b630d41f15d86d700b9e66e51a9c5f4cc5e834d8bbfa312049ad569b41ab3209f37e73da6eda52f8c3756be58feaf610fe78dd3ec21f37b797f087cd6dde2d781d0a9320137351df3d3d523655d6aa3eed6f70843cec6db0843cec5d98421ef62d6ccfaadabe66d37673da661d29b33a6848ab5ebf2156abf2678ffc517d5e46c29cd6e6163cadbafc88402f44782142abaeca3943bedb7fd94b81a74f3f6bc6dd3a1eb65086ba0eeaf308a6508692a1e827c46ad4e927846a540e1ad2f6f41b42b5cda78293eb2724490f15d86398bb7560582667f330c73077f7d0c3e895b2f983bbedeb6323514da8b0ae4c475c415f20058b2744607143983168f5cc99a61a7889e20b0d67a434cc42260654ce6031cf5441cf4c316f34ccf2e4a4390db39019c2cc66663ba3a4b7d5f5f0301fa0d3ea19e000f863eafa15ce24e97acf55eb93681b3a89d1b572af42c3d7f7c89febeb4d82aedfdeadea9cb3d24b0d61f705abe9dcb66ddb22972f05968e55401ef01cfcc1d255e6ad44cb6edb208fed5b96db06ed12fd4c6a72baf24b6796746c7ae723801e6d1c8d33c6a8f1034a777443ba0179ccff109a51208f79d906a548f08710bc4243c8e390e689047980b92c3d91660ff007e4a267f472e7b70804e40d2be02cfe0079830b28837aabf48c37d0506f9606f2c616288b260079830a38003893bc1f54b87acb41310d7da28320b8f3122e99a1f447cc1718c1b87069084e3a4b0e65f4e686f0e5ca37cce8c845cf77abf96ee258d354d74f85c8454f11d4a323918e44e2145ca20950c3e8e5c2472af0875024d2910ae401ff43480821f4cc5ce00f21fa39859e07222315f047e4728a231590077cac02fe8887e7e08f99833ecf7454be3e4766215273bf0f797acf4582fc89b74b57cee037e4427b34dd3e57cee42db65b854d310bd9410d6907e58f7c0aa6039736bdea15effaef166ffbee1b46e18dfacd39bc5d4f6189b72bef2125b69051a3a6e64862bae65b4895b78ef7f4f4b8be5bad23e1d1ad6ff99b9bb75ee0469829dcf8be4fe57de37cc78e1dad9b9b9b1b1700c1f44510542a95cdf7cd7b7a7a7a5aad56d7752d283a936608dd6dbe757c878e8ecebd374918294446b7272727a7a6a62689103f3c41a981b1582c582c16e3b6e820451a36abd5ca060683a9542a6e4a144568a8589ee7d9d8d8745db7313521c61a1d8bc5baf756306b40c9e27ee75bc76ab5aaa9a9a16d8cd1451535dff9c6c9912387e779dff771798aa2c4cdcdcd4ddedf77be6f78787876ecd8b193f70c02cb1b4ca88ebf779ee37f4f4f4fd77532073fa0d1a53bfece711e1d3a74dc7bc980f1c5e8e6e6e626ef7bfccdf3e3bce31539ccb0435c42c4d2d3ebf55292742508452e970b8625ca703245c789154d51727474746a6a6a869c48a20635a889e5e4e47cdf37f4e4881d9e3e582c1653a9542e583aa38b152a1b180cd6759d0b7448a3c50f1dcbc6c6e6dedb821cb87c51746b6a6a92d800832747d478abd5eafb3e4e892a3a38f1edf03c4fa5526d558608d3854ae7bb67c78e1d5dd7d5284e3de4d0e57cebe8e9e9b9f7d23392e8019a1bfbc6d1a143877c1a83e54a0decfb0607e7487034cef77d120a303a147d36dfaf9b9b23c1d1372a952afe30650b33543c77e9e8e87cb3be5dafd791e0e857d7753f4348a145f77fefbc959393f3bdfa6eb95c4782a35df75e18acf800c414ffce719d582cf6ed7de756abf5bc877050e3618d1c0f12ca51739d6f9ee7c060b0ef1ddf38e723c1d15927ef170ce10769a6e0799010cf737c27e77be7311b1b9bef9eef638c73f27e41cd49165c72e4c8f12db4f320a19df33c47ec5be730168bf5ade33bc7ff58de2e609ac28910787878be85741e24a4f39df3c0be736eb35aadbe71be7972e4c8d102a63780d86267e748627ae75b28e7413b36dfb1b33ccffbbef9dee1e1e1b1c99bc341181c78a0a3a3f32d147b9050ec39d7617dc3bedab163c7f7eb5b676767879577fd01162ec0e4e4e47c0bc11e24047bec39ab6f9b7b3d3d3ddfaeef1c1d1d9d55de948b2d9a10118b1d494cc7be856c1e246473d86379b3be43870e1ddfadef584e4e8e97b74c63ca97346030d8b710eb4142acdb1c9677f71ddfabf7e0e0e07ce76f582c7624383ab6236f9964832c5d6c6c6cbe85560f125a9d759bbcef7bbebdebb8b9b9f9c6df3630d891e068584fde300e264e48c162b1be85bc0709795f9d9577cd757cef38ceebf5fafe37cbc6e64870b48d8ebc6380e38d1b98ac56ab6fa11d0f12da71efab9edfb85caeef1cdf2b16eb4870342b862942e082c9f38e24a6bd6fa19e0709f57cc7bdbc55bff9d6f157de422fa474eb42483edd3a92956e7df37c7b177a61ead58590a8f4ea4870f46ac8491a6394d9b163c7b7908e0709e978cf77bcbe71ee72b95cae7c420bc2788a01959e9e9e6f219c0709e15cc77bf2be376fd5d4d42461320432e2d0a143c7b7d0cd83846e8e731d79d7dcf5fd7ae674782307657070703edc6ab55ad9a74a1267b2dcdcdcdce4ad3a09f20729601045974376ef8d5062700319aeeb3c302cf9e005a966e75016bfef73c117325078f95ed7d1b9efbaab542a550b7088a368caeb41422fd5716035bf0f12aaf97dd7755dcd424b0dc8b81e24e4faebadbcbbe37cb71ebbb9b9f91198bec92e288bdf6b1e24f4bde6f7de23e1d17756d103a21ebc5eaf6fa1d683845a77fd95b7fccd37ecf57abdf2bdaa7f0f1252fd7b4d4dcd91f0e89a18aed8010e8270b95cdf42f74142f7adbbf24eddf56d53535353933daebbea4142dd55ffbeefcbdb95f70b8e58e24616ad56eb5b88bb6fe58d7acd37ebfbbe2fdbadebae52a98e8447abf2aec99b6b0246131cf4bd4712d3f75b687b901077fbef7ba552a97e04a6559942590c924f3d484876dd91f0e82eef2f6f0aa58a18487a7bb9ebba1f81e96e0bd5edf55b0809a7b90b21b1d1dc91c4b6109294961742d2d2f24878b4bc5050ea2899c2d472f8ba244c47ca8e6c3a220a5748297f84c61829a5b5d61f81dd6ddb388efb91c3acb53f2eb8f0024ca3fe82d5a8bb7004f523308dca4644b5a12447245e41dc41ea3b36e9b9831bf58e4ea96946cb9a3492477a3eeee0c2274e0bf9887d676e3dd43b6a2a94002d89889858da9295991a13182d752226325a2a13319934efa9333181e6652bf21d262232f2414b6526285aea4b661c359a510e5aea444b3834b51acd68454b7dc9ca4cad56a33189b4548e477336ff25223d3d69998312a0e5771010fab8032b35bfb069f9793173368120ed69cea0d661989933a8b518b539839ae2efcc854c1aea2d4be2e4b646a7430fbf8209340f799e427dc763cff9eaaaffde751cbe75f80b4c20d601f07bd8e1579840f9f04926d0cdf12780bcad16c05f38e7a21102701eb7c1381765fc9ed760008870005cf60f3f17f120e136efb08e5cd4f3ebb8c53b721109361fe11c8ee52200ecf8ec1bcec93a9eff57ac938b623a97982717edf892222538b828e74570ceb60078ee2281b6c3739daf70114f6e3202ade83bcf634fc57213152dc7737211ce57d7c94d6c6845dc6387e1a254ce5d6fe1a21cd775aed2b9eaaedc64d28a5e5f1d858b7472131eb4a29aeba88a54b909026845dd7952b989ce73721317ad28e7f42c5c14001eb9090eadc83e761272134b2bca295a52a4843642d6790072938d56a43acf6d721316adc8e6abdfe0a2596e92432bca7995e5263db422d85717e11e2e12213749d18a58d701406eb2a21579e7f98edcc407ad687bec1717e19edc44045a51cee79f9bcc6845375fa1fe475ca42337915f52a484967313146845abf3e42294ebad3789349ee3dc048856847a2c17c5de24d25e9f0317e5e4a2269196739e1d5cd4ba4e2ecac9454545afdfdce64d222d968b8a8a8a5617008e6149e3601896cd19fc0baf3067f03738c99cc1dbe0983467f02edcc23e7306cfc2179833f81a7c71ac3267f02bacc23ee60cfec31e8e467306dfe1a83467f0298cc240b009e60c9ec3f168ceaecc197cc5c70c9833f889573067f01247a439838f382ecd19bc9218030f69a97470c785875c1b66da8092000a213cdce7b61c60c4a0c0c0e182cb174e694411461b46c0298450c20c268440051569f0308181e455d1dac117679268030b1e00218c1528ac98c1121a3438a1831b0d97d85882a2a215423533b4994aea3495efdc36367af0ec5dd65249dda63294e2c80c15b5dbbd383940d1dbb66d30170ca2b6c841570db16c21042b6b0d3b2c4c7184e68c294b80d861c70428374022430323a23774ca3ca1cabc815b45ecc0c41b4b4148c3068d2ef1011662d4d640030744341f4c66a0c04899d1c40e3a175c08ebea8382c06f411e48ada0eb278e951ec8dcb00e744c090df4fc26869e19421e30eff98a8594e839a312bd0027ae7c116074dc94ce439af7508e10a881480865f015434842fddcf3347e0f88a7d908fc84f1b2c689a5882e31e6e8c854c4133a4621aeb4ba5bd978e502e44f8cf6d49367d0148449d96513082ef9c81fa8b9fc2debc0603fa03ab466986b5e462beea6a13cbcf68aa163cda26e330b999a9d99de2e504cb1324d7c65a45029b9410f3908c3cb196648c1440cd6b8f2830c66d6c0010d658a50ad345c2a2345ef5bcf8826a48a34fc0a3ea002ce59c825c28d46c9038a3be536eefbea480575ee40e48533a9db28ea1b2a5f9c2c3b14b1c57a5beb56296d3d7104194b4d46446268fbea89e5862e70f4bc9d4028f480872c986eb0828a1dd0e6e1f575c959bc1a66d1e1899315894b37586785e95a8648d7ba5486065d6d68b51e4e2005ac21431334b8d8905444ab3f344cb1410839f8e1091e68d5839a46ba61ebd270698d27dd6988c58c34f4a6d7061d9c404392280b25da90fc500c1d1b4f4b34f918601762b6a00dc51a2d0628054d662b319ad0c92489248fa4d1048a39a08195251abcac997912e3a4bfe8c8252ec52b312a410444dafe4e80b4bdd2f00c58e1022c4ca01292a0618a2c9a68f02698402458419209f4a3872aaa2cd56850090d3e1a4da048832a29b6a8e2a846838f48260cd1a444838716fe884d1afe4e2025422811a54b1825a274094383877d028dc0851b6128d568f0b209a4440769d2a44903ef3381220aa220d9e8210a3168f0700aa105065ad835c6501d1a2ead4185fe9ea0db98940f26d74bcf2d64b4d0736289e2a4e7a4cdd9450d6494ae90614aa206da4c7a42250a304f18354941f3c1146b361a32856184de34c492030f5cf88057fedce825ec0e540859d0c0e08b1750d4d0031e6c60f485152270e01485e683c92688ba050b223e88c5065c7a8832c41751a0a1048935d028e50045165b6240f3c1e4d258b218e5c083a61b8d1e008d1848b51f70a10334347a3b815c3a9481061735d8d2431b341f4cb1e66988c50c133ce8b6d43b463b67d8c80b535369c13c4ac3af08add5a8865f91288bc025da8c3ae2a863884aa48c4cb65984a6284de9ccae0dc3ee8533a98bf5b49e8afda594aed183a6146aeaaaf4deebfa34dc8205117a5f3ac32957b72532d26fd9bb9652b17602d9ec9270de5e094469f3b09a9ef3873f5ae891453db3cbe582bd34ccb2434d530d97d6d8416f978e93870e42a00ab40171d606b067ab9c34fdf755717775d2f45fd3ddd5892ee9cf8b0bbf53499a4231d3c8cb85ffbab853ef0a46d3430ddf1d6a18735012067c310fb15ae68f8b6b7505134d809a8631bfa791a6ff6c70e5bf1ceea65c3e1b6ed49b72d174532e332e6948a9553985d1c19e9d3ad21c9524bd3d7e2cdd4d8f4a2ca75c4a9768106d804c3ad4f4ae4d9b7b92ff9ab8f51f12376af998bcfc1e10f5f69a061a42181304209c6146981f9441c6183ea862840106981ef0e00bf823f5ba032fbc74c1c5165a34a9965c99c4fd83e2ca9a864c4f9c3e369a34f7dac4d52f9aab4e9aab623497a4a1dedc93e68e658afa7d1a5e7ef489927c7205ea274b700050b322eb881b9f3ada7ce860cf8e4a7abee3d9d1c989e1c05e3736ae16abe6ae549fd7a55096db2afc01e10f087ffcab72b70bf22ebce042d4321f899ac8d4f232bf70446a222b2d1f6330a264cdc4a1b8ceb61edc012c138a8a9416dd179e0fbe33546456f08d2b434d13160ead28ae1f6c86b849e2d5048c09878a9816395fe8f860e70c1ec8834c0ec863c637f4c7c6959f734e25cb65c9c69b7abcaba3f07e0e9e1d9d9c180eec7563e36ab16aee4af5795d0a15bf205c7b59ab728988247f56df1ea5d464e0c44939d2f4343e7d42e227c47b8d785fc739db8e62ddd71c42a01c3c3b3a39311c56deb0d78d8dabc5aaa9c9fbae549fd7a550326fcba1344aa3340aa551abdb091491e66cbb2a6fd77e368b6f97585cd1c58a2aa8506da88c84fa8d9c428a2d5ab2606152dd064b1d4401c5134ee4a0890d0737606209256c9004fc01e10fa8b7b7b0549ab3ed1f1b576902419accdbaaf2bea8bc619512a9a7394462fd37c6addfb28aac228d903f505baf3ee21d8f74fc441de92d9590f4f68f0677db9892de2e81b8f371fb84781e9120f528fc9db9f148430d9964d0a4a1863a7ef2c264cdcc9318a72f4d5c9692aa285da9191d4524334f629cbe3471f1e1233b8ab65a1da2f291aa6b6c4327eda9f24eb2d56a125d729a3599847a0ce5a4a146a5aec2414974874a3d7e2a70facb3b065defe1204e773995e145bd05e8a4ab1722bce8fa2e665fbf20367e66dc5a3f973e991385e9063047ea6bb5da91bae3aa74b7823d1d9c9ff02b73e5f773f0ece8e4c47060af1b1b578b557357aacfeb5228cb6d954e197f547a7b1a3a21c11904d242f8006750ef4dabf4f7b5713f376ebcac795b9af79d79c3b4944b154cad58781093c2f527803b4f816e7b10a0a500eef6f1e15345cb97504fd0d22565b0204a44177f7da49452ca1374b4f460d3a5744e9ae79432285953d8a49568015cc974c39196723b6cd228257a8b4755923caf3bbc09a8a88e8259e8ed2b4c20558672879ba2419bf75d61027df7be6dcd4257aca4e1f377e6c2260db54c75de9721b6b72ab192ced0c1093481e8e737acfe1217d9b6c74f5eda439adcf2100c3667db6d916905f58dfbcc435cbe73366405752b2bd03c1469d40aeaf02b325ff3108473168bccd33c6495c4183619e3e860cf9e3525ba8b1e9c401269cee6ed4582599974924e7336717d1d994e7a12995ae6ad84662253e2a92ba651bff09204d0e017a4bb99d7134c4c6c0219f11c0727c7a7399b8f590bbb54df77dc55aa243ac5fa3d106945bea69318a7755fd88acc2e14d979ec4576fc7518bbce8ebc63b51ca279c7c79e7a6c1d993a67c877d4bfef36ff6e2373867c6ffd7beb844b33f03acee75724168f936376ddbcdb2ef10b5ba1d98522afebbcc8ce5f565c2882f3d777b24e8673466178e5a1d771722cc3d4257e6148bbc14151c73469e2d03943bca31ebd1786b49a33c4bbcdbddbe4adfaea4024deaceff805c919e2bd75efad6c847bd52c7c6412a9fa5e7e99404e4d2c7059c1909522afc75ed34b13289687626dcee65fd829c3271d3d5df7c2b1475c24c75f87e1212534d8e3971381d85faf402c273d033109e787341890094354fae280e5b8149572fcf5d88e4b44a88e79c7c080aa95e8f80da95a66f96520c75f19ce594ddef149090d7e2a541df3fecee5f89b8dd855de551b91b7efc1b169cee675e0f865cee6338e4e73368f71143367f3aa27d15b1a89f9c8d4f64726121212929e8f4f3a9f8f6626506d02bd3e2f8d2650ecf3f26802e17cfe8be1a1d899f01cced9e376181e829d09cf73fc85875e67c2f31d1d0cc346b0bfb011ec39329c39868d60dfc95bdec7c13942a8e6f2ae3782652b34072540d76ca43b5cd2af435a6c9a40f2ca9ccd5bfbc2a6e9bb2509a0c5be7399374cef23534fcd1de7700e19c5320c398734d8759e3a1089c20d9c74173dd9348198f03c761f1a420883d7c2c5895ebaf284d4a23f8160c039d479ed3c96ef9ccd3f769cefab937daef3d8b70feca5aa5d48831d861860dfc93598ce864d31fc4500d2be211b0e4a80eece8397248096b393e19c6d975c7641eaaa9399e41c27a7f2f698e41c96a1978f4cdd652a39b905b0cb2b1308d252795b7905ce192aef2353dbfcc2a6b7125de1ccdb7e43ea69364205e7b47e42a8b400ce99bc112a2d80bdc6a5d86319366735dd510c97340e6e41173d1cdc02d8bbf8ad00cbb6a661f9c6250dbf202bbc8e5f1986654dd734d411c34a894bc2a860ba81a8d2cff9aed2217b57faf999b77cbd919a6fb61352c8035ec98c92868e024bb7a2a894dc2dc7711cc7a16acdd087bbe5ec3dc971dc3de9e238ee7219661334c7711c77c8dd725b8d3e7afbd0538732c6c841ca12554881dbc7841bdad0338d0fae98e18a2bd2d8a2055c7a7a824f3a9e72536ef5b68e4371291b85573b1fa075f294c2db17c4a27e6829a369c32285122a2fa04822893343f8628b1b9c408a2720f4a0c3184c84a99c5d22455db07b614d73063587375ba97c3d943aa9f706d8a50b762f0c064ab3890c9ac67a9999398341ec271094d2880c442d2167b08627ecf541a30ca594ba60f77eaf5f7e9620744129a53dd0d2b47099ef81c3ca3ba902e2005fa4c850c9a0a6430f8e78b045191d6864b6a8f1e40627407082e68369da2c4ec0e066d113da6ab8a5c88b1d482c505bba60d1564326232968dd8c92b071cd39bf6924650302d2e2d3138931f464f28194397d18157546471e14359c019383953134d0a004232e321061c413a6264c6978a0a10d2df2ac2c0db7dc4046530db368b1c32b07b72074160289e165d1628755181990e0e1882e68e0803c1082108c00028ca62a5174697d3e98688842a5450740f8b4f08046bb3464a28108337aae0b30dd7d9fa061972ee0178aa2d8fb84404aeda7bec2a5b22b5f1aeef6742c236790091aab692092330b2f4cafa0582994725907b6611e6c0279b9e78706279ad27044a9d0828c0e8e80628b1358689b1652ce10820f7cd822031acdb21e20b8e45ac096a7d961c941145a92f4ee49c98a05422048376c4469db2b2e7269db279c3307ad34958de60df39c1b86733667b116454729ac16f29049743cc431165c031c997ad64ae9d5e2b3a1e27cda42d5e3c3d3149d077b8222d53d2d814a51fa44e5a395524a37ae04a62f62c0e2c2c809209cf12245182f62a860810405104acc20058dd6398394a5d7c20204b1f29c14110687273a146d41a343c801119195a42649351a9db53e21d58d00da8b0c526190c8610623233092d0f283953064a491451b5abc519f8cee566bad7074f5b07b3fa686f6c87e6e86a1b4527a690fbd058d2f5d933880d0658636d054a1d11e19c481031c6e60b2411a1a9d07a367937d4b430b2fba6aa5348d2e9456caf4258afe34c462260b961a6f4cce078b992cbe16f85034c6115ee4d0a48b2337f841135de8006588306ec896865a9c6e28a293020860f411090f6f988a966c69da405d0db570c9a23d0db55001c40066b050e400064cc8c0e2064a46b41a043764d065ca0f5b00f1c44a43a61b9004a0b76c5f4a01e878c8841554c298e18c35d250b2c31828706024c696274cd0a28fcf161f14a53d52267bbddd3829886070a7ebbf96a37493dd090427dd62b09279723c74161bcab0007002e303124fa871c405054f419851c50cacd496643db23bdd70654ae9a5585246abe7feef717285def7b13e9c6e73ced9c486b294bab62debc074b6a8a18472b9604dce700286deae532b24e82dd323e80d97261721848181953134a842dbd7110770c8e00405520e4936a06d1f3a6a783b03a0a3173688b2c59732a008810b9a8fda175c84b022430f32a0c12fa2dcc0083188b4506308b4789f0904a730bad2c4186c40d18515b4782ef0422e7a8d0ce08044050d2f5400a10772069bce38a28628845003081d1859622573e286cd8a1194d4000b346d1001c5932f564461430f3120e20834a4c8c2449484fe34d4b246172e72e8c0a5b442824931830caf31365d7e048f1432d8f032b12d72133852d4a8b0561a66f9428c083fa881a5c40822cc7891c11565388962892ac0a0a18637a6e822054cc32d5cb8d05443a632be6cb0fe707d30e5279452ea83e9028089a806a632bed02c9a80a9011844f8d0c30e344ac31b3540722246181e70c174a68969491c637cd3bbd6da69394aeb922b6c643c0c3695882de1416787deb62569e86d45db36318adea8b2c30f61caa841dba848c901942a676031c4961d0d996618428f0f8a8a1ab749460edde3439717cf1377a7881a1da61962c093a3464ecc0735385c70603760bd90786e986480c1670387caf5f4b5c2a4585cb46ab8747709d76aca5531d56eb0f9d25c2f4d1a574b15655669786093c68a551a1cb8dcf8d204c14a93032b8b1a3cb4e288c3260e20b8e2f8a286a706b5a634c4f2e48bb61a6289724515cac12d4b1854e839e7f4c1d4a3e71556090d4b34b164092c8470aa928310b23861228b33ac58a3d3308b0f6a505cbac1496badb556a623b4d09c864c470041081d40e020931429618288228c1a334cb1010719b66c21032d4f88c1c6521c5910e1dda22257ebbd1a47979ab3276536ebbaa489ae958909225d53b45a4900d3c3131f8a20e38c2068d5873152c0d1e406274639e8c0742c74c16a34cce28316bd5d564e23e2b092c3c6a1030c8e385e7038f1c0d1c505c7924783d8d10acb972676ae61961fb6a0726003953745b50407d1ddf8c2d47871a758257133254ab78446069819312d72689845ca97af868dab4c2adde3c3949d0fcb923236de1b506ef7c60cac541a2d140f6c2c15355c1377b3e25533491fdd620687d5fc6543a7070cce1637a4b8b9d715d3304b0f4168951a1dfc3175208fb85914853fe4290912c8ce193d2a65613a12e87b40a732baa9d37b98041f7246df612052460fbf1452f952a767c33eb804295b809cd11f986152465fc69d97534a0b1ef4428497225af086509a2394d51768f93a84d65cd8221c403d1d8adf103af11059d3f171fb11abe18e41cbc7ef01536f1f7d57bdf982943442aa0a9af554fed09ca9921ae510b4078888e3b095edb01ad9f0994b0f757dfd82544a83df10296fc68ddf366691434b13a06e81628d3dc544a8cb77a8476c45b5e472dff694c837c41e953777fb14fece5cee90c986327adebe9311471afc86d8c31d977bfc50195eeedc3784bb918ddb36cd610965f4db37846e9f0a94fb865017b8bb70c46a0907a069ad9afb86cc17be21b2a63917b81fb11a7598fc9953a3b0843ce8ed27444e19e1e4a4d41c8e90073dfd844418a5ca3e6ac883e61c4ede257f72b81c14353d3d9578b95d5ade7a17366715a2833df56e35571d9e75f81ef9937ae71ddea704f8a3757803c01f1f853f600a977e4236ec82cc564fe28e7af1dad3ce7a1f8690878e94fd1b52b5eb2d9d563eb2252d970ee2b9346735de807abdb421064e60504313cb6d1e96343029225a328394a1e298260e38d09c19c21bd58d36d828b3861a646245e1d854e99c4b134895e3139d32c5a1b6b9f4f4ed69cad83481666dceea8dec91ae9f484fb2caddf169264da05846ce9e26908e9cd5ebc05c336926e97ac2910eecc975653dbc4e7d95df1e4d42a5d1d124f8b910e47b7c87a3c6a9c7cb3d65664ba42ea786f2ec9742c65de7c5cbbdfb82a0de712a20f243d3a1813cb643316580f9d2d4458b8e4b57f4b684946dac2edeb38e3d5c53730f6f4f7b8ff7a6366b6feaad77294ca5b430454aa50e44d2231b579566e66c3bedce7ad761cac2d409152323696df2b677881bbb6892b26ddb9abfa6e92ffd7dea0b7251f71249fedcbc9d62ef9dea934241923f2d29ad0c6f67449dc81fd6b7d323ee0bc2da3e0728d15dfc16c48d63c46879aba15699913f397abb4413252946a91245e946c1c12b474b341288c84af7adf3a21c69a8a51177c723d5a994719ff10b123bfc799742baaebbcacb42baa752a75f0a5d0af1f61de74934f047d4dba519f92355f615d2251fdd51afa29e92fff0e67d92d2a7525de725d1de9096ff7027bb6ede1af9459d9af4c3db273b29bbcbd72f88fcba78b4c24970ac5e87e516f50aaff00adaa352b6243a35a47a873b15a6484ddcf84da1502852b6ddd74889d47d4ba44d7f3822e98bf7ace9ed1ede2be8167c347d87b78f9614ca0a534d91e48feadba914f913b54a75d5295dd266a49988251a69469a813a5addc5fb9d4b52ab7df8cba977787bbab3de77929bef212a5fdedd392857aefd91946d9eeeb04ba7f04e52abe923359b3e1e4528f2877b8cda4a148c4ebb396751b839f7cd47df608946ceb60bc9d28c946d47e123cca030e468d2953127aa92aeaf11c72a9f5f1099e58604c50935a23534659ea44c8cae654823ee9e4b5374bd44e2d2efb9a4eb6992fcb1afa75350974af227be5e2e21953c29abafb1de4ef9d9d12a9ac3748a94d57a486b6d62252fc548d976f8438a813cb6146419574271528d6a0d4d992729dbc49451835ba5e48a2465db774da2b5a732f47689c4addb6b529d12bfd0241292929238ba65ba3681ea145993261095b3ed5dde3a30d7f5f4ae495b8fdecee55d97f4b66ddbe5932cb36d44f99020655b2ace5496a15ce8e69c76fbb45f0f97be933288e4b0ab56d1db25ae49758a946dffa0dcaf871bbfe593debe3dcd4b1faefc76d8b329d9a2ed4117eff5a4ac01d449d3471d6ffcbc2e85b25f8eb483a1e017e5c6246a2f6c2acd25e40ff73a8d26111a334f63cad0543a4919955f34ed42caa6d25ca2cadd52e94816318f62e430eb3be22271277da4f6742acd1985691aeffd82d4471ca1fc86d19a3dea44e56685a5b067d3256dbbe88d014fe8f8f80e9e0046cfd31ba17b90b2714fbd1e4299a45a22ad4cb2560271eb65dedee1edeba7c276d43c52351751a71e6a4812b7cb47a24ee52351e717a28e8f5f109b8dd0a589c517eef5498d52170e63f49e4e62f4b63b4e284153aa61cfde94747d176f8dea5dbcafc77bd3512b36ae4e4f3f61af7fdfcd579fd1ea88ad5e611b639df5a930a7b061069ac53a569dd220de51eb918b4779ab5a2bd5aa15c393fe9c2410775b6b57dbbf306ee52247adb4bead6412378fba75d45b573d4683b8202b544dd3cda93651254d1fa33453d5399512edad5aaac3af85aff58853d0bac5810b7d77947454e548e9e8cad1521049b14cdf30e6863237a039223a727204e5480a94d11234c52568a61ec6ccaf7582d6e137a4757b0ecb2a5256eb57556a5a7e3a4d209c576e6e2ed873608f613867d19575b61d6c5ff1f431bfa0ba0b47a2ae447821c28b7e214a1d1f34a37409a3843e42757c1034f3840f37e817a88ef9751a9443efa84b20b79217f6bcf835c0e3e83655d4ead899f7cd593d06d3dccd29de2ce84d7ff3885f885ade60d5924bdf9d3bb4c128d44724479aaef3387c823e424aaaa2f42bb2253883417081327882a6f804a620bae80e7e92c27a9a7787b72a54a6a4a09affd4b841d47668b943d76f53c0c0192cc38eb965e00c06f1069cc9d71d0fb0975f619a99333867117e1288340a6476dfa6c89f2af2a77bfd66c427904c92e9ce87ee0e3b98eeacaed15e7b443e6afa05e99226d07472e56d2fcd1ba621d30c6afa48d5f2d3e94ea71c5a1e883ca2814c8995e816de52ab8cd0739f988525de32494b89a4574a247531c68e891bbbb82486e6f0844eac9aafe817a4c6b62093f4bdfd88cc296c90a2ef854eda9eabc156435d83adbe9c11fa7df756797f46ba3b0e9e4e7356ff41b94f8e3464c2e1ca74923fde579b115256ef12c2082196f8d1423c01659c4b7bd815e4ebe1aebe65520adb1429ab5fe1ad8a94d5f3b87b9ba2ab4c9a626492fca1afb755741d238124ad7e3ac91fc8248491ae9f65c81fa9e5101f2def63ebbb4a399a3a97da29406da4051fbd5da254804e7aab90a4b9db9c02e8a439fa01e87da456d33205275fe4cf9653e0a3656ec147cb43bd29b9640f1b1ddcf11e19093e25c81f7b0210f943bfc3330016815f345c72e393a4fa244947d487ef83d02355df5f2943ddaf6e4f27ca6ad4bcbdeaf30ba2caf0ce2e7a2a6cad861f777bfb6dedbdbcafcdd69e7bbdcc2dd820a589149c7c9132a8ada6d8ae62c5d2417d21539427b48db56ec32e38e7f43167725ed2e07252fae8327dca87963e8cd8d7c36a5236bf07e4d0f516e70cb9aebfd6d48cb61616611328d6e64c5e4a680656d34341924899f4e15e40c22f491b0e771ed1430c358440aa7fdfd6fbbedd370c9534815459d6b8f92fca95352b65cd4c19299b528c13982e9aa46c72d1514bbcf1b1f92d6b7ad6e298581fe395485c89e711377ed3a34d561cba0de949ef6fbfbcacc1dd8094d55f40caeae9f787b80b9045dcf9d7749c29bcab73ce59e79c93352fdde0a149db5a93b63527ddc11df52a48010a5a30b24f7014b4109680042310410840f0010f7480031bd040063000bb5ba002142832010944e02b733f379a56885ed4d35a92aeb52a35255bbba2ebb6b5a51a175dff45b9d36e59d2ebcdda4308b442dedbb9cf4f88ad25e9ed0958610279a74701012798f0e300a9bcef6a85817e0c50420108d083aaf00004c0838411023083220060478f8e8ce10f780f7fcee8f6f8d34beb12e40261705bd2b5093e59897ad2c11e1674cd924ed551ff27902a03f9b297e19c751925b9344e74a6c4b874a6508fa7a9bc518713c8caed5a4a59259533d2e4657742c9ba85927ebcf610b66496935666e747e6aea0c61427612b982bdac5a3a85afd5ba353e329286a29f16b3a1e45d55194394002b5723c92ab0d3e1d45d50ababc6bdeb0ed9f18775bbdd194b596a6b8d768db23120f47f213f29ac62bbcaf573256cdb5ffd4b8f1dbeacd7e5ef7a971e957879cead25b61946c02b1f2b632bd7d66ee865c529cb492886b8f7ad429ee7279cbdb9bcc802f7bdd3f32f77e3260e32149574f4216aa5c206905a44f020c98b3d96580856d8f47db512724f514861cc77196c3f1282ae990f1a4ed6d6a1a32e180462fe9d7748d93b6974df5f16e8f17d525e5cb1fee6bfa358dc21d9c38785fe374f7decb8af2e95e1c6e7e2ad8cf9b962b6f188c15e5c4c1dd6178fb7ce7aa196997ad1d6997ad216957def1a94fb5faa7c69ddfd7f51f99bb6dada6773cf709a39f0af6f235496a352d31d42d587f6b54b80cda7b0dde4ab4f74fa057bec9adccfa72aed5749452aa71512c49c44dbdfb8ed7348bf5d4af6373f68dd7f59f19d88d9156edbbada626a2be20d365c4c6bbbd77efdc5978bbeebdeb382f6eef2dbc1f638c31ced7ec9cf56d35ebfb6ad68669d64eae3919ce19ece61f995bdf025271605dfc227001312b3831e0cb9cd5c34f0240e6ac3e36cd59fd1bb7e6df1b771e4885d50aeb3acf66bbf6fd7616def73ef51abc6f3e5257787bff0ebf219741db4bbc6dfd878dd843ed75699c9274ac191d4d2427314f6696b8347d49aaa27405e9c8484a29a594524a29a594524a29a594524a29a594f20b9242e1ef0cd474886bf302321029abe92dab965c5babd55a4da7f09a964df247c6271b996d108f381ba434118fbcec90a46d6ea3a4e7e70e47babe3e69d2a847ddadbec39ecdd5ae07bb7bf805b13910f96139e55ac8f4c4e91b2235ea2956f9ee7ddf3b9cbc95689cad44bfa8eac6a5ba715d15e4e5799ee7bd700aaf1c4fa9f43ccff33ccff33c4fc8ebf5553b190fc3fb1a7689f18e47d75fcaf57d5f87f3f5bd7bf76117be54eef7eda5f01d88ac4f130827bf606a5c79d8f7e4a2c279d14f88f769f37aea4a3cd2afee85a510f795c22b5b294b9d06f7f5a98a04e2d233e950f360f8da1c88943fdc789b5f1b1ca3563dcab4e7a33d1f77fd53e37a40a6eabe8b9e0d561d88bc56df7df5dd307d7bb2cd66eeae4f930b0eec1569a957331308d25cef5e792bd1af7bf80583ddf390cc3c8971fa323d1f3eb26bcff3bc7b180e4aa2bddfc34f054eef18747c10a73d551e22f517e406b1c1506f376c366c31d89c6c30d86ad89a5cef1b0d4c8a8896ccb0c9007fc09aa6c651e1a868ea993a84fa4675a30d36caaca10619f803c21f10eaafccfddcb81bf674557dbad86a2f7a7155efa04cba90898727bd2717313af55dc70851dd3341eadebb1a0b4b4e5af5d4bb26cd9df35448495a75efa85bb1585dca4be10d9b1ec021297dff84b85e65b7f25278b3f000c8c2b2bb9e875d7947ed8a49da7bab7516ded7acd7e07d5df37b719e3a8440f5e9fa93e9cf477f3e365cfa8efa88a88ee3bd3ec1ead3ab3eddd4279bfaf4fad4bafd84b8ce59fd5dfdfd1ba6bf430814abbcfb88a8beaf63959c5c2596abbc4a8d4e4e0cc682fe3e3f22aa7b9f66c026107eea33cc0fca20630c1fc01f305f276fabe33939067bbd074f31c200034c0f78f005ec3af0dc81175ebae0620b2d709ef1cc028b2bba585105fc4105fc0131fed8b8accb4f88eb33c7533cdf765f9d6fd865fa8730f5e7ad44497f797b4454cf91370bdafbea23a282de4a94b437b9cc59ea299ebc2d4c276f584ede8fe52d4bfd8b72ef27177b61b7c95ba6f7e4a25307325d18ea16decec2f23598fe62780fc3a7f90589af63e4cf75ea1ebee6c169c5831838831a42a0d768de61f0070efcf1828dc11f2fdc1cf863751df803f5ea1efece5c17aef6be521d8854bd8a79928e4fddbbf2a77beaae4e7af948d591ca9feff37a5e6e211e11e16c907245c75b0d6d2a958d70b59704da22e503364043771a32d9800c2ae0d218602071c3910d4fb6402af45c430835b8088293263728e1c5674eecd539e79cd375a58c4b125874497c91f39a81193a30412669091d68f3c9196e5841031258ac419b99565a53b947ce39e79c73cae874f5c89260d2bb875a8184936eb57135d5798725bcebe27795ea9d44a33bcef3de451c35900ee57518029138c2597c97f23a2c75bc1605d77bf77d555f72bdefeeb71f91efaa73df90eeaabcbd77875d06927d7c67ae77a8a3fd77f9a9f0ddc62f7243bc1bf96edf79f8052c75175df022adf5fbd936ed610965f1dd37847e2a50edc5a0ed3bea79f8053944d63c20f2674e1db1843ce2559f10a9ed3b2c75476584f447a23e2151dba7bcf8a980d2f69d17a1547dff893ef227c73b41fee478d985a84b903f315391ffb1ef6c87a546e17d82a6f7a12fc18795d95e222b355ea67c7417638c31d63ae11a5df4f1a6770f44fa785e4dcdedf5516f6173d6799ee779f35d877df894d0dd661f29a31b2e755e2e41ca7c481a07b0e193ae3996f0eaddbb8f94d114a44665177cc81f2fd77c7baf5f61a2fbd53b0ffbb83a289ad1d387fcb957fb94e0c35e6c65fb0a3339cd4a8e10a9eb736a5643c79c23646a17cae83845e324e9eedbfb1693b417691063ac325dbf65f5db176fc3d6a39e277fbc4c61109577f72d5b29a355747cd761dad12e7b54853b8156a787c0031c40a401436ecd51acdb4c593805214116a0009a4e000a0838c1841f0700fa3140090520400f9f15f689463adec787a2d1f4d4493483e6a98c98311b80401780b3f8a62eb874815af609244020190c0034410e21c3fa4313a4993880f81a2b9c458946377512864527246af978e925e6ee3c91acc9d3c38f66786f11b825c629526ee0a00c30c6e8411b556c00a60c2cc0f8c1074c409135641a030bdd69b8858a2d45e418e361597c2c2a528e4e98a58620a4cd5e1247b466eaf552c0f1624a024a0c87081d82d0840c3e28c268842088a8c10da529508ee8816d5142838a2d473aa401850c4e351881058d02618d19c6f822841920eebd16252f9fd2189e0839b03183126b80996109902a3e28e3450f64a8e0218bd2968b450642a47a4005951ebc34c1808d276834cd1632b80114307a10c38946f36cc2dba6d8f848291db9b0bc41d4515a2953acc12526a5193a2772ddee46c734cf504d1f58ce502d5984e8604ee4008596288ef8428443658aa62296c2d06006770b1365a64a432d6b7cb14d4a29a53e9820131254ac525ccca00b2066d084910fde70c113164641c4a0cc941b683e986496233828dd220507ddd290090929708949892a94e080c40e677021c39828c850810e5272708411686af0444402be7061fdb8220a303b60e981e907e894c51351a28c51e5cc17280db344398349892d8640e1065956342c33a8a9710618226a40c1144b8680260d324e484820a1370d996e70c49cd6de0b833d878c35d62d52cbc548698c1a88ac3eba5a7b2f0cf6cfeaa3ab91ba6fa593c260f75a2993cf7129a5f4726e0bb47d536ae906bde9d9a837dd4aa257efcdf96ee203e84e7a144b1dbf0879c44f9c7527bd8973564869a93bea518cd25d9571420a2ba7aab9ea8979e88e8909899aa72193d218e7d4a041924963c9b481fa34643a828c97202e183d904e5e8e40d2280d998ed0b25d096d3e67cb2b1015c5a75e14330cf64a68b948f79987e0e1f764c58b1c387154abd150e75e558fb752e4bb0af522f128149787b8cfab542a55be2ccc59fd97efe1ee296ce9e58bd0cb59c47b9787a49d2f123f9fb65c645e566badf5a9320fcdcf18f31090213867a9fb1a050769f020c451adc6a2419acfac2c5a0daa7144991c4c99c1114c66d028a475764a3a4f3f64a588fd7c44e5a1b83467392acd19cd434b43312973328946bfe3126d7ec72629b92aea0a44f2f440e6acfa602cb3b8f4568ac8c75bd93e247311799b8732e7a3e50413042835daa1537c5ad2dced049287b2ee291852305829320f039cb3cbeff1de7b917b4ffe1e958bacdee5a1f8d5bfab64be77ceb8771d91fc4df7d73f64a588cde5633c7d91784a1f8fca45609f79681e9657c843568adc3ce6219f39e37ef357bec94340729787641efa9c71b7c9dc53f8dec3ababf09787ace44420f5fb2229d487baa78eca45bcaff2503c9ab3c7dc7197bf370f5929722fb9df7c24f3d0909522f2310f7d97998539e33ea43a9c33fb1a1fd6210d3ac9ef58731dd2b8d6212d7ec7a314a4593c646585561e8a34efdd59180618ac14b939261d86fb2f8e9bbd1c95e68ce3aeaadd0cc39015091cd25219867a0e43da0a439a0a43da87214dd23c4cdfe11588b617455a3d2d2e4dc9e1d041d9e56e11b4bccc5369f98dd2f046cbef1a0d79b4fcc6d110688333792802fc111f3300200f791a6efcde94ea108c2aa5f4949e524a29a594524a29a5f494525adfad600f8db97ec74f0879d4bc6be4c2554905fc01638c79494ffa186badb1e6a09886cad041105cc864c4181d998c303202e9840ef6ecada6658c53a2117189f8043453332a03c794c17501bb00c9e68c7a2e1d0dbf7b8cbc2eb565d9048a4a28999571795f6f59cd334b1e1ade1d10284217b84f2aa61ecd568e462c2331d1e833a279db7b99def2f6d13b2a6d13884681337929ef03935dd491cd477449ceea11928e6e68497fd0f22b314b30ed348120cddeeaa4e5393154cc93a652cee5185ab4eddb13ab278c100175d415f92364edaf54913f4241f4423df6768911961861ca0a4f51a2174a3d28c7085449ca2435a28a94d1a4209a8d04c53442f641398cd84c93a44cee502946b64c9124523d62018a08904c20a585a4154c3952258911434a35295b221249997c3d4a9a4f66aa2469292b1439939762a7183193ea125a26d523c8838a69d2525e9a9168662cd625a46c1a4d275549ca7eea4fd00ac76a8494cd9afc19a122499914018a94c91efa7a348f6a152993d1ca9edceb0d4b62c6d42f313328d41f7c65a946972450dca106482815f56043153479ca4502c52ae088e288062280c04293a74d120866291af344033369bca001c1c8e8f234431a265a68f2d44902c11ea0a162c9888d27359abc14237fbefc45fe78392887bc1c237fba0c46fea472d0ea49fea0b22c237fac93fce17219f267cb5462b11be1d06c6493fca15db86c723d9a339987ea97399315efe4a1aa74654956d951db9d4b54279f9028dc5c5e2ec91f7a79a94572915de44f2a163b822251c0af1be1d0b013dcb91ee59454c659849dbc63633b8fc9cb24ccede0ef4829f22768b5e5a015a63928475d9a3309bbc9f5ca2b5b313273ae4a73263f423d424aaa3267f2f218572eb509d72f4e472eb030816297af4f22502c53317226ffc360f71adda0a8e912e431e78c735231485a9e8e51ddd0622762a2a2b94e64e585989e67b2d16c6a3a2f5acf8998ac683727b2f2028ea667c2d15e397660b133a9349ccbd3324eb51a8d498b864fc4a4a3e59cc8a8d276ce64d274502062c2a2f1e4c067226927b2a1897022261f2d9fc868d27acea4d2745cbe1a49148896e458aad5684c5cb4114ec4c4a3ed389111a5897026b43a9128102d593dd56a34262c9aec444c52b4d9898c36da0867226901b83c153302d6813de2038077608ff819e6813de2653807ec112f02c6813de2018063b047fc0e9c037bc4f7e01bd8235e077ec11ef119c3608f788c3dd823fef8833de2736015ec11cf8357b047fc0e46c11ef13a38057bc4e7e00ef6888fe10df688c7c11cec110fc316f6887f6117ec117f836d608f781b4c618f7817aeb047dc604a5872c75126230664c460d6ae26e1ba74609db4caa64f85b960290d9990f892fa9292696ca575f131c618639c3142e9411ef213a7e042a6219ed09c864c45c4a1b7d5f0f21facd190a908f923571a32151186763191d28b0ef6501a5790b2586fa49ebe8b9f909a81e405481903208f6d08fc112936127f281029eba8d7ddbe6361fa1ef9435f833aed9e4384be3bcd5df7baa3def44656b7362a74dff4f6416a4eb1eadfedbdcf4f850e759a559ecab5aa77b56e83b73d877aeba8d5595f7df52e7a3af2c7de1c88bc5161239f0f29eb720a65b3a4514e15dd7c369cc323d20c5d727b42049a9afc21aa765269bfe16d931c91b23a247f66a649a4ac36e5c42eb42c7344cbad9edeb7a6eb8f2419e2b84320d2fb68b652cb5da1c805ea59a81741bd09aa13cd016584bb7da1eaca1d85ca412ce88a5bf0a169ad9b048d7ac529f0a18dc8a3f2decef9b0a8a76e290adfb705527d7b12166be0634b903fdd776bef5565f998ca326f94465549a5d02374c75d9d4eeaadb64baf607aa5a3575fa1b06ac95d1d75d58aaebed3ef5d547d1dc5f5f235c894f48b328c0ec2f82e42086bdd36b9411865841e1765181f16d5037f7cefbe776828db2468b87a8c316e71f336afeb3ecc49efc3db87abee70f41efb82a4beef2312bd14a67a52efc33325b587659dca83dfea1dde3dbadb2e3d617aeae839f3ee9eba72265d99c5baeb1beebe2f88aba6c6c5b5304b2e5d7a6152b6a93e21dd55073257d8bb6a955be8d1b942860c4ea7bca8bb9577614b37c64fbcafcd7c97f7767a1b1c3f21db53a8cb943d4235eaf62392803469d268946ac9dd3eb7cd7e4460a57aab594f8c12a2b3b8560caddd367abb515bdfcdbc95481d6caf5d672bb5f55baddf6aa5aff5d6627aa8ed391a64d67895a6b55bf70ddb6e4b59fb05b1ef362e8a49a562d05c873b8bb738c653362a49998d6340dd591cc548993dd775f30be2e54eb53aec56787ec3f4de6cdbb66dababdea9b08de27ef54db5bc782bd1f7f113f2facd87e44fea52a65fb7b97eddd562bd5e837a977712ddd921161be99ea24f5266bfd4e117c4e9d483a46eb72db5b76df6a918e4c3dd3d9c3a90a944c36f08eaab4d359551dfe45d8256c948788f0e2bab54a712e8aa1e53a9dc820f22ac29543cd17a3bd55bced9ae44df15d55de4ee0472809cc997f131c6a70c19182d61175a4a28eef6d1bb8512f6f6ce626fdbee79ddbb0defd48594e8eddd770fd3a72f0771bab3a90391288a461c803dc7613a260e607b0a7338b5a16cde49b4fd86374c9f2c3d9783384d37ace426da38d14915fc11757c5cd149e9278d975f47b1aba25c47a1368d7201e572a12ac546e4e94a47fee41099a771478f6279f83960fb84c8d339dfad207d07bf212c2cdf237fe4a313cd5d1aa1e9735a4348d1f4f30b5273b9e557291ca4e6137b97f8bb8efcf11e37fa997755813bac5d8ffc81f740e4107997ea2e9c5373d6a19e77bd7517ce21c2b5724ecd7388b0ae3aebaaab6a3e717789a1d6913fdda3a66204618f2dbfdde6f52c7c5f838528d137dbe0952acf73f7f0ae9f19a7300afb90b27899b7cd5b89e6f209137f4268ce70e842a6216ebf06a0bc78f81191a74164a601a68ca8746a9869433dcc39c7d48c6004000000a31500303818120905839138cb336d1f14000e91d24e54244c932009428c21c62000880100006280310c00000dc1043b4f50fd58a226b20148dfe1f36005e983f8153092f035afcc7a33901610c692e0e3a3633133b7ebfe9c8015ef4fa97302e2d4e1fcfa8ebac63db1988c16ed2ca8945f1b452fa878226700c086e7f678140ec34d18dc0f05ad2696642873c1cc21a00423bb9522652fdf7ebca5ff32336d57194f3caa4bf60168c00d012997e5de87cd9c8e6e60099bc916392bf4700cdc20b51acb7e1d1de6cd2b7e48a462dfddca2508f940923c787a1f22c841caafc3eef498175c22834db4c498f6927e74fd8ac590e02965bb710598682fc9f616a62aa23ae957095b56fcc16b0eab912b6e4b16cf2bd7389e3a6071b17888ebf824085dce87684b8fd893a3fa9e39aac508366e92ab19b234cc0ae78e3227f358ff079827914075d3c918065234cc83dd49f9df8e18254d6e0ab81281c76420939f29ab44958764a6f9789f26b1782cf932790598ff02b585da10ac01bc87f634196649899595fc1bd451d733482e71b3919654e7ea20a0b21446e46b029282e5817b4a4b527b64654f2c4998137493629c32337e93fafe159c150e94a19bf9f2cae65a7566f2966b7b164c7f34182c77163ca9fb876a67e78592c0b528c4ee14395ec646223e3186363ceb6cb6d54da1081aae75fe22e47a0b49a209c2ad12ac23284df1e806b9aa34d412b6e8b8a24ef8304f17cfa89ae7c0a2542d90a8daa885ad5297e282c9b44c5a5223eb2f75c4157dbb590875014d5fa41c1d7031160c7d135694d06dde25dd8af62725f92722eeec13613c4954b53fc6f5eebadc1c2d19fcb724486f02a07508d8d369d243ebca4d32cec0bb9debda9b1845953560b85ce00c58195cad6420fff04819ca07af7c30332446fec7fa2596bf55f690c77a201d6e479b48955c5b40b6f30ab5649319d16304eb6bd5fd013c188d8a649f0a92b9b9cbd91ea6cee292243b974faebb5fac0c0a5368f58708f7486289ab38aacf87b5122be22988bed4a38bb379327afb785b4660391453e12c5eb4a686bfa44142bc2f2bd614ab6e34854d8d5b375a094c00b323887600c2085c87cd6b06dd6637525ed4e8b9d77a90805a897b0b683f383aa2775ea57cdfe452f563af5f4cec398caeffc4f05a5ba32dd7a9080584d469904500d0fe6b20e308d3f2c622c837845fb443597bea422f4c1fb8f2952c4882d48a5ad28f4444ce29487ad3b905f5d8726f9c624c4ca692598b09e5ef45aa96ad81d76d9c62ea48c8ffaadd17f9f9b94b86db24b13b91f4bb8068dde011dffa68e00154201438e1feafab919d85ccb71625231e0c635bc133be6bd29bc81eeac7de658564c7f797294269cc3d9dfde213749d3df4717ee54b5f330392f05bf1e5def2c4a49915ddedadc1e6dc41e1b03c6864ba0cca9bc7d4c3f8837cf274fc3e0f5a94ac1ac007b169d8a58c66042d619d368476f739556b1b8c2d657a2ff4223590f472e28a25244570c704c48d27bfef3a452e78642aee431796639502cfc152ab8a7b42554ce2f3f12696a43a9c172dce9d8c4e02ef6c1ab879b106852f2caac797a3c672167d000f0c608a8508092cd55214eddcb1156553acdbb930bec450803012c9848cdadd768fcd923088345c9706c05ec4dce8f585bc2204b1317e2ea2223c9ebf758101c297a59fbbd8c352378aade397a02d65d305247e69536c410654bfd1849580a4c4ce39658a3f659e42ad1176dca17be512752eb5f44ba300fff3458b8e3beac18a69d9e184391ec55b864c197d78bc2d2f9a514197792c3b0c229f47780e169c05c2d3f6fc581812aa10f122c1e612f4cd856ae2828bf032dec64d096e60f5b2125f6caa18283566115f6063b1516c7cc70bb43abaf0657a0f836c5a19b8549e45bc35e212d96aed0487e7b3889f85bf4ca0795ca01d44ff310b03ed9b7d8255b8dec72e78622bdd6d3ac05f819f844f76963af8e521620fa0eb45fdddca19bc9aea568f06faee0c44fa2e819813bcf7cfb8b5b9bb307a973fb6a9ba7cca2cd5b6319654c24541dbbb6fef1d7ef5e962c8d0229f474379edea8f0a3e901a0b879fca2a51c930fc6c5fffd385d58c43b2aa41bfea5466726ab56875db9244990169492cf947e8b295be54a973b33c1de7b85573db3e690a2dd0dac0ffcfd32495cf06dd5a50e3d8942789f8086ae0a3c76a7b7dcfd2c4ef4180a724a28504bfde269de7035cf2ab24df993d77d95546e45331e66afafcebed420f5f77413412d34bf1076693876c4e0268c5b16f8ee06480837defda9480d07585ff3eca739828a576afcc858a52897a6972b12b0d65394b82705ee9190fc3222092ce8896787e4b39b9de7554800bfe2b20d9bbacc4d1e99d27f345eadbd6c412585a26370b9ae293b603cdc905de79404a3ef33845f5a64b18a862dde9d7a532f642dc86c9e241e97e1b5a8ad6891a15f87bf15bbb7f7cf668fb00bb1d25471e927a909f7bfd24260218a5e7876867f133e6c637138676f529d5fb4381f881cf8399fd0f01756eeae2550ceddb7bf885a4810bc8675c65c77e4a61bf6324ba1b21c5999e44b0a31b13c6966631d42abd159c9d05e3f66ce5eef96782872dc0ff2c0c1f4c1368641f4ad98d4d01137bb7370113886224e2fe992ccd861aa1c6e30ef8f3b27cdea17220aa720833a52e06b1962ca70cf3dc72247d1608150b41eca684b7bd844d90451f7cf634b69548597492c4bcbe389065fb02afa3890e82d4b53d1c121e5547bb22940729aac963e5ee1fdae00f575425b9301e068468a796aaf7d560ecb905fce9b6cbc32c4328434e847d89a78c1bddcdb071a6965c443b31395eb2e554210351e94eb52af4b96b875c62ad2505514ae0ebee41021aa3d8a6a5f6e132801477193454f0e2e73014cbb8ad788a80e66b65bc2d144c6d271828cc666170325d0b9b809a3911533ad4bfcaf5a62d0f09347e132f4920f141546e687e5b794711bbd1b3917e923a5ca00bf31430634f0a3c9803989e93ec6102a9ad10bf9be0842e6abdb3482da598545aeaea8b3b5cc8559f419a37f15a2cc17cb2ce628b49ee01e99219d2174e226c4a29afe5f46252babd5499c056a7c203100d9576dbb9675543d374dc764ee1a0c7848637ca3c3b665d05c7492acdf6904fd74c19ca0d15b7b86e437583743be3f4376914b08cf21c39a52530101899d72573e80a31fadddc71c279226119b3757437c673e9b54c1d0c8fe1ac3254e1be2d3cc973b3323112711053fa000999840bcc904cef6ce361eace5149139962561491ac73dc0acbd958edc51004c420ce9734608d76f737d8a40652ab512a879ed73aa80051904cb3e5b1bedcf848ccf33d4d72d49ad3c4cefe1a929ae0b0b4d01ca16db0e4393a0511ca59684dd7a25a48b3073d93560936681e57dc27ab57b6082e428a17edded7e158f0ac59579046be5ac0bc4f4b110344e9dcef8fc15044b04ce8a0c91ae2603bf11f210b8c4ddea4bbddaec96ee13a50be911be7b85c572605987cf7b60851263ac1693895fb660b59ce895fc9935b61d0764dc78fb26c16acf3c9889b84f0a50a214d0662af4bb8b7a266193a6cd221fe0f9b659cf85d95b3d0e7390a0bde669389679a540bcc22f225c2eee497baf2b3603d643b75dc3a706df7b58b220dd9123be9ff3d591a86b185b6a84326a15a2baf93c865b5abced70a7640f66b94ae7910ff1048db09d940c96d300e94abee427a120f3e482c5817d95b32686a49a8d608e070928f586b010101527eff3a22a9db8be8036cce533802fc8147294fa16a5d3e819aff01b54c0f7be18746d6619ba56b9a14a658366ef8350b84020653fb5bf63f871a746af64775f4d48fe3d8875aa2c1ab321fb14460ac22d6102f1b322393302dadb4f090411d4827f9215dd3d297b544694a58e9111ec894fc41aa23f9cb9c1cf4b6b1c595eeb4d045adfed94674d4765d3f4a43090379c2a5fc64ce145c32cd8a6bea51f0adb198307352088aac7420e75e2b3ad39d03e2051b9d413b5bfa5a1b1714d6c91aca315c371adee2f0ae637c68b14fd955cca5ce96fdd62ba93b0c8455594e3969d3cc9ad23d0ee0beb7e79a5132bab3afc4d44c8df8045cfcda803d7751988f99873e1464cac7eb0790e406d1750a53c382c804ba7576bf3fade42d92f93e54dd63eda283cee2d894052246119730fc0216a85dc4b9a1a16f11709e2e1851931d4abcc9aeb63ec8d1ba9387cf3ab916a82264830775b0c7c90f4cde67dcab0e54d3e7cdb800467580faf69e6ccf6ab5950d7525493e3d0e4ae2761123ec822b4a92e953c4684c85981e928b75bc1608e6e9512b184c191c998b2a8f43a8336f399c2f2140876917b795122bbf5c974c237c501b05ed6d6464e9ec808952f664b6269a60817e2112c16826ac871c532417e0554ebd281697359405b645cd00fa876360c4d8f492060cd8af60176fb2693ba7519e221a1f83ed8b7ab6fe86bb21231a17bbfd5f9e8cfc1ca20fc5f00735d567b18a517e7c3466c8fada94b56cba35a692d941cb9861693229d210a589ea94e2ac4c2638c04b5d01973562634ee483dd8fe536cc293369915732fffa5a651aa5922d42362bcbd1db5868a198a8c6946157e46051b8f7a0b4e4377bc92974788bb8273f750237df7574dc43a5e5999a2c238a80df50e67bab92878972ea7b0a949e9ce86e10ff057fe4c0d1f32cc6abd9b04cc2c4698669b71d8b62f9553b88137a6cc1cec04fd27b440f3f48d05b3b2721127613cd88af3e2a7b118bcf9b8e086f7f298c0fc80a7c2f223bbbbb0141d49e2c1c4cf721540eca5db0ac65f3a3a8f6ee4b9ae7a7e8c24959f19905029a9ef9f53c6a01782c5b243c92998647ea6bdfddaa47fdc5a3e379c221b833050c86dc3b8cdb0cd2d36a8bf75c816ed56aebf06c8475e49cacc9ed87b1d299e2d1d884cd458c521e18b5d2544b5a8328e9aca97128a49fbc04b375ee51c6cf3fcbfb5f128390d37b88e3efa779faa236d67756c31373739fd67505321bbb782fc1ba85a664606889bd74a2acfd0b6582b150a8fe23f99963005133037f5562337247c05097fea819e473a16c63fe32220f9335787db061768dc80aaa7e4d740d94d588e7cceb4a76c15a113c7947bfaf9aea1f3a98c756afa13bdd06acffabc7506e18232be79c5bea4076c12ae946800d95445f83c35932e87fa208074c670e6b83d1a9dd3a88c7d623aead784df513eed4553725dc1a041ed00f4426ec0570923555ada180bf6395fabe22e930d7835d1d6985c45b8c05165a89f2e7e9621092b31bad86a9b7e464afc2f934a36e0797e19c1dc79de2e6dc7d26543301eafc7c45a3dbd0f4133c840be1d6c0a02ae98a2a6b0b8f6ab2bc41e67b33328cd567db0cb4ef452efbc9b965d095bed73f003459a17c7eba6cc293e0aa703b484bc7ba48c98d9984545a11a9a0e824c13571c0a0f8fae564dec49a8f16fb5b94623439d6885e225fc5d6ae606017e3858ca177c0f9484549053066ecca8480c3a0be58bf4c27f369308db7b26c2ba1500bb5d37511907288e90ca46c2ab5a38d6cfb9dfbd2e8920a5dda3c172b2acddce7c9dd55b26f91fc6406823ca65d87939fcf0e5e247ead45652220adfc9f3d723c1e623646b599c2da077ea87ad5ccd8c616230e56947a932530524eaace4dedb83cac2e80e79c5cb8a4889f5f88ca28ed627edf9a87f5144436801c41319aa274b275c41ec09a76fd76e4717b7b448391365aa5f29bf715eadb5c81db32f5f4c770ba8ecd3c860396c62ba2841e33433169659206c09b0ab46f38e0ce0ddf9f574f980204f768610fd9d33d29f6b93ea75886e38103c18115250cb6515d6a8194876a2429760adcb8961949cdf7d45dd651fa68b59a8ad20d45c07c5eb5beecbaeb1fe00a92e6e947c06428b10e530a07553d4d2794884d64a20a42a426a1e8b1fab533f9c6d32e344daab4c7816f3561949a71b51fe374a22b1c9d0586aa345f9d66b162ca86f835f829b0b12d83340c261a3c10fda7e8d72576066fc779a983df15a770b8623a93882df069100dae6620af787614d8835df5c170823006e773914a2a02569654d2f8515095b5b4b7ff0259f9a75303eeee7d71a05053a73fc37a3d322219ef734aeeac5e2d2615c1dd38e0ae85c37dc69992a38562c32de1e36f00253c4d15f872b4b973e8cfa43536aa00ef2dcca26481ca1c5405335c35b01bd0c129dc4f05ead50bae39d204c7c2d233cf721477b1a280582ecd1265492864ac023463d2e555a5af411528076a343473235bb8ba651ce5815f23b18b15b88a2a66b2573b639f1018bad29c091d1043be05dc1f09dc90a146b141d6a80cead43a0990900ee6dcbf5efec015123a8a29090ac4afc0cfc62959f504a651812a9b5c36df5200cb9b33f34cc5fda95e361d75c8791a2de97155527b71968fb72c03a3aaf77e7fa42b9f78c4775a177a054779a1e03311ec26f21b4ff542f7c7e7e029d832740f983ea90e7e6efbd0fcce6b3f9fa1dfce6928972f9e129a577da781d9bc070ee870771c17790e7329c6a86c2860db7c0b306e0100c502743067234718f2865874fa83c69b5f232d9fc6be915655b50e95d9d3c628f8dd847619ba87de6cd5b41fd406349cc796e480cd9ae2438db4510b51b4649e42bd38b244db64c2b3cb3eb91b6947a69a91fd84a0acac1b575db2f94e08f9050f809e66582b53e7912c016c7baa374f72c6971a0c7cbd59bc2e54946ad9861ca912e717553be054a142302c64304e6031f30d67cab94041934894cd211498f8d5c4a2180c1955f796d257c48d46b8fe5017b7dc00ab5cd46df53beea6313018ed9548c9a24af6d16b8d43a8a9c1776fc3b74397b33e69855e4cd3bf070cca19b9b186ddb7b0376700e5d74a2d87022c62aa29f415baf60a82eab2558a7341b44ab8262b91660378ca01c8fbde9964651267ae7b1175fec6c3d521110475a6c47097052a9f3e1bbfdaddf0b90b00baf93f383bcc88da18388e1aec98366a65dbd35ba03ea12c62cbd96c7783101c1b0618400c3004ff4db93736f6c93ee8bd2b10e9f310c9b1e143f52821dd7f39e23b424bf9c8aeb2759a1430302c6648540e76552f70cfeb21745704c86f35c6b5c8fc42ff353c57e20bf2027e698d22dad0cd58acfdbb04e35afc7deadc8bb97caf7db89642d62520c0280046c1e5a4f696a8be532daa058440bf560a6bff2af1413b47e27cbf33cbe0f6de57b2231fb56c0a450d4baf7012cb5cbdd089a393af5453fca1d6ef70729de054eb39719efe5a6ad78515e94e316c327b54febfe63be3629dfb9e3f8d907de0ff0f88dc472d6cc8bf52635dbf711ad0c5d6b12a09d5510df442882bcdac89a8b154c972838744999f4e33e20bfad1e89636f8c86aa63a35cc3404dfe19390a2b4548501ce5009f1428d8799337e0a0e23766de9e72de33305c4042775b91528abde95bbac05618bc55dd71e97a204bc863a5ce317e530beea1eec673ff00df539666120c22439b9409a56f99b2f2f4b353220cb06cbb6d1f11b45dc1359879bf50d1b789b6e821d6cafa2ee69899e51e6fcd82b81a653f132204a38f361ec18eceebc95a216a33b7e37af05a69b0dde8397e1706b24b1858918e01be3fa54b80e3d880f3ef49f1fe4fec91d6ba96ae6ce81efe377df900427af51f15754e8607d748929b35a5e20d96f373f573d4374db85a0f1ee77a2771d901f99f47ffeec222c7d6179f31fd73a50fcf244ed84af7c34051c1aca744f21d43ad954c346129c9bdb7e5d1cf3faabc43d26df4c61f8d209ac625db7581e5fcf299ba8abe26d071420c4ed0688e642e3b7f546418fb1c41d8dcc652382c9a7168d3de9dbdc541776aea8168e1ec2753d6cd3cb2dd75441663525e0e48ba7b60fa631819c26e67ea1adb960eff7ca0ea8bfb3089bbe72cfaa019a01dcae1fcbac4561b58362aa1c36c5b0165dad4e92f11124289a3d201f8384c2d9b3313073ad5b08502a7c0098af17eab3f169330f53730c69b10b70f5a315e6ffcbad66e9a77dd584cc41283d2d3c9c306f64ce0c795a074971ad1f469f0f28abb12563c5fdca38bb29deed2bf15c27eb4e1b41188970d64a3f6dba87f316fd82fbe027e00946274a481ae2ffa31abc85484a698a0ec0b1d3500a4e56d5bd76625a27d2a4c06d62699e12ac032aadbd843b02d4b32bb5d819a1be2b0db51008314b4e599823abcdf68729bd0820b5531a309138cbb355ff622dfb4a974aff99c1056a8abf2cd793dbd4d5fde747fec8d0294a19e26d83bdcfd0ea92721bf73491d0aaf4228fc382a3bb29b8f1cd74d254d19e32d3ac314040ef54021159c2e3a4966de177a4ccd780bf3507954c7755756d3053b5fe725e627f0bd447c605bac6615ef2a1ae411f415b764c09ecc88c677c5e22c4f4b2e0f1cdaafffc26d10c50b0193fb5ff44a43b6984b30864a2f00ea550b80931e1fa2dc294536465d617a737f48ee42392d1938834836b3113dea8614c56dd5900bd9b56c1da1f29e1c9840b73f670f2d6b3d6e4a8ec7fd5d1c0fff39c8731ba301baafc6bc095febcfba323ab7cc7407e8a0da7d8ef5d3ce8d06eda6acd6559d98d71285ce4f0b4e06ba3cac308bbcf2e4f3bf51babf1969b2a6816ad26b3735fb1ed81e112ebf7ce91f5f1f9e681c68591c687a1f54bccee58b361a16fb344b1b98cb29964ae082261b2c47409d5dd59304807352471430296dabc10e31d6173380488ce1c0b323ab9ad4ec639eb530fbf41dc50fd173102cfcd2b795d98d94bf07ff6b8cb99e3a1fae0963d20500c6bac31d48794f363fac9004c390fc2876fb833bf9957c0b6f9848751091a6e05a04a4169afe73e09de9c4283d5f113ce282e78eca4f269d18edee8a13694c3c2a813a7d89996cde87ed1bc8f708930af6f1a65e66793ed93fd5f5b07beb19bec7ad35a22bbb39681def04aec262f168382a713004ec5a0632309305fa4f259be939bdd7f3c3b1f87526828783683c68c294e31373b9bbe6fa6f9b1baca043129850ce466cda56b22ac9a812165839e429895a83b526791ca167a7061de91363c2df5db3710f8c29fff94c0ef0c251825d5f4ab39f798f8800d5d95563d9a7dd49d5e4623c3a1167faebd442ad0d541a3f18cac6abf40669e4e3f3b3c76cd14647ee321668df296f3cb29607500f041ea24203356f13a792e033484a61a49bd33ad1854dbefbd504539ee158a009a47bf0a0f5820fbff698fec9c35b8974594d110ac29b446b88e44553e9c829f0307b03d84b64b18d01e0f9839f883f6e2a94e80605bdd3df94cc03a1f01e06a09bc18b1485a284c54e706a9fa7bd9105e0eec210555e7f6fb1e9f1630ba5035f5e5ce7326d4befc2d865e30a8ea5be8f5c0a68cab12f2914441da9788db0ab4cec3b69c662003aa7fb0eebc168a2d1203458740073804e7b62e07dff85ef9731c9b8b20a70bbb96d88e862bd8d750973240642dff9c02339bb1971d86a9d9bbdbc7a1d01287894dc7c2bec667ec3d943ca1d9a60252439ba2e31d6f829c7ccd081a59d27d2a2f7b71a000e2ca02c295662360e3d928b9b0fc54ebcf6791e7959c91b53fc81fc01c4070ac2a94017cb1a6dcdc6e0781ecac31bcb2151cfd6bb0c64f148d3cf6815cdb2afdbbba9b92f70bb20648d12a8119d88cdd55e241022ab023a959d0e03d9eb0353124e6b5816619953efd07688f594a44e2c7a01e5eb1bcc6913de2d4d14861adf15351be9cc78af3108b3011be3e75271d2aadcdf81a31020a7d7600376a80012a98391027f783a9aa68d9af23e8996645f6f701eb313bdd9bd200040824ed923bb71490885a60dece2f485a5d237fa369b1092012cb1b6077c3d81feedf2fbf8e2184f1b48ccbb601e25dd7a1c57625e29dc9502e3bdd56212ca840d62acb9c043eaad36efa888a4868fd9343e9eda5239512263a3efe3b4ee055442183971bd834a882998ec433f0af33f4141132a0c661b0949973edec60347c0118e6950828b84d5d5009948a82ca05642908a7a580278bae310b29b3ae6380d190288e5230791e428e56b104f383232edf4daf412fd1167ba94e92d2ecc30831d3e4424273a4fb47c3600fe7b696e474bda5bc0ca963fa8d0f8b9e6d927ad71da4c333aa763acac7b9cf0c8ce31c305c0101897fa5911fc51f1e368d20d51b6e5010c5e98bc2d183bef708ae3a0876a891201b3f0d42d6ffd93f563fdbe3aa79b7ef4389f6c60d702da81c529476c7c45396c3689c22e42e64bf0351e080f926e841d07bc9ce87282146f02af8addde3ba45070fca868f8403ada3cc950ac405038f2c0fd6b376362c272079c5dccdd73d6f7f8bca1e116f9f4ff1117599a3e934db32c46aa5f9a32207486af046346d76ee0fe7a00a801f9eeac30fb7a8bd95a822c750814000b2031bb4d7b28025fbcd6db70c1a8fdc0661d8a5a7fe1e64e99cd57996dca2fb4b08bb51d9934b424ab1a9dcb7f14cd166dfca8b3e3c25e86b35bf8414c4490d28430ba3f85ec5e944f17d3ca5392f551e6cc0f34dcce720a5f30fd4dde299d5fa51ab1888c79df8272c633e8ea93fd946d8f338b35bb2628ab176c67e368954d28a41130cf5405a401d2d58d5b6509bbb85c1e36baef09c4c610121926c3e3c7a0173000901d80e59d6d6bd0d4d1af7e217076488712406c025ab6d6a4325be751fd7df2406092804b5917a9cfea011c36849bbfe74908bca32945fd93b1b5e2cd397317d63c1f06bb9e3cc1cd11bc7c1dc6a417dbb1da793fb75b245268431a1d84571e14c6d2ec11fc5854b72ba23f063137f192a536c5821638cdc102cd87728ee7630ca8575896ee075f8a38c7abbe0affcca3dfcea45acfc6d3017b57e5cc456f838001c3bb6991e93b1242885579379d7ef806931554daf4c18585ef9169f8bd03a3b9e71001c7bd3e2927ec0c89baca241024a51a3649897cece67c38393f7d1246cbd5fe78a3a414ff28f17a5a5d613c2aa64d0f029a369a543bbb28e23f2dd454b982a5336ea1a4545b05501d910a02cad1f2294dd475c1c59c1ef37ba86036ab72cedf6c910700466602edd1596d764e61afc6e0f9bfb19383dd436619433b17eef1e41ed1166637551b697855214140ca388874f959c3e9d3608d1396d08b17faba639a48f6ff95324fbe81601d6b5cb8953a19370741a835ae8bca02d9e83fae607b70e6bcc04ac4fc914f365d4e6d8e26a5344dc1e90ee3e7a8cbb333aeaa407de700ce0406f8f0c8181ea4ce4767f363071308e18b965625852c10e993009b7499e0421cc69f9b2a94efc709c59c5c6823b3346d7798da875ebc3fb3914d2cb7c5d7b06679ad9d81ce44d9bd9c223bb751845698a9b05c1bad329082190cf3935cea30a4ba3a874d9330b8d9852bcdead50cc1693416805d681c00cd0470a83ea0aad4501093640a33fc81a3e57bc9233387e3fa2af9ff15319630406716c435c9f791c92b4017541db7c8c33d2042a8a45ca2684a4704aa7b2daeda6bbba9b3561c51e2f5f3518cf3b19ebcd002c33c47e0649c82e9e563f55ae94cd37a533a9cb9e3b826c1b3d79fffbb1810557962fd43936a864758ee3d0874677338564349cfa3745fdd5371852c1c653be51b79474c3448b1936e28f1578e026c219de8fc5679b80e302a0271c1acee90401521193d873d84dc95f3f0f555b40a1c742804f7072bc2943c274af25fa433673262f382281e1a75fe2edebee877362e4045c2f003622a5efba21ae2c0d716a8f907bf38b480660b9c6d7eff973ac6131f848b6f8cba2b61dbea15acd495df00efd336c012ddcf3a375be84562037fec5b17bdc8298df75a4fa4eab365e527cdb00ee44e7c6b09df190cdf91221b909ef696d29257584874ec31b2a2e889b6bfe5c68e20bfca3a276695e5eac5afa5e0deba2902560eca5f9b5d9c0de1f8b37b75f141c134cb6b3d368e8fe53000c75e7cd8c0f53c12aadeb82891da20844e0759e870f98fd3f9d13ad30ece03787ec5555c087e03f4694116217ca6783da6b60115e534e7644c9bf83fd45d66ade88f549f5683044ed7d16d1b9fbc6dbfedf8c6b6118e0037063d2e47d29d3955d4e15a63900e09d69fd802574821184de560e714cb6d598d0cdde1d005dbee745cbacc3646a3e92502c51b6a8f902827dcae605e0008e2d16317584e188188fbd3ed00983c0d05097e52f2146ed643e8c532a9f780d91e931eb220ed355524dbb7c8affb480c036af8374ba6e18c9aff4aafdef5bac35952b39ebe1ef947621b2260a51ed3830ac5e7ed6c5076f07e8ad5b9f46e5f39467efed5bfe51bdbc6bc76c5c8c388c790c5d3e18e9181d0162adf447d74e19cc181c3f3c553d5ef485a41978d6f2c1dd7c95b053966dc4c946d4d996919124b33a12ef012a87e38758e5a4f11883302b9ce9240bffb4653d75175198b18b75644daf3d37255d4992bbc56c162384738d1d2d1a8c00bf33f38c5d6fbbb7a97f43136dcbb3fdae136bba51e03db52e0f09f9146476d44b038657cb3dd78b4ac6f5fac45171b707a9c466c3dcdfde0b51abac4d2463a2953604ef9e824678e099b2b28ed4754491ed932b1c88b0331d2e42dcf81b8627526f1979ce2ac5978bcc4935e4f4a0354387f899c5d92db2d648965766538b0182162f4d9482ddf6241838c911aecdf09550d4556308f3d8a4badd5ab6022ff5ed4d446c4a950ce28637deb0e3dd5fe72167b4887d2ba69064236bee49723d6c3bc905c0e8fd6c20f7f851fb48ed223b6e431fa78b690bc50b8dec2065eed02f54d33c023a2945def3180cc27093209ffa28f90fce662e1d30aa89eb27e2b99f873c67d5821730053bf1b477667718d650e9d30ba9bf72607838dc7b8346d40fb1073869b4c49783106724cec43df4289f570ef2b60c15ac5cba18eb005b416b08425350d237eaf9e24112c122e9a31a8652e38b802981383aff717fd6aeae8eb121fc0cd29f27c77ea990cac9d4c86d25f2b81303b98c273ae4659ccc206687dd71530eb27b3589feaec15ad23ba21f5ed97302bd7406320833b8e3440f414c99ea636ac06ddee8fe2d0260f42a0addc0528471593b1ebe3b3492ffd8903c02cc8c4e6fb925e5fa4682114c0bd6a21fa79be48721420fc4cd4ddb8268f37d0ee170d605bbc6e9c34f0703067dcd36b92eacb5046d059b00215944c993083f23a1964bf7c7334682a65d26fa8a608626da6d6bc1a21ea03c653dfa52db46abc7ae1e814ed1c06e8a3d49040a9a0e30c6a3a0bf87c610e9645f40ab4b5490749537aa855f89382fc747c4546191ee6f221e9cef4b55277bf16e6675070364dc44710624b6942a248feae3f061c3356b91ffc9fc696afdf465fbbe9320efae8ec2de7ede4fcf15b6191ade754010cdaad726308a0fc200b12f59220c35f033fe1273e7ebf362be5b46e0dffb6f7e448a21c3a1efd4f7468882119dbb6796cfcecd000613ce498e595e42220a6bf6c5456aac71ae741026d5884b3eb252dc5cbddc0c62438366ae8046ac44a42839154491964398cc5e49cd815cb3c74f9da5d0672a13b739912fbbcbe25c2ba3dbdee5a3c46d7ba5370a49fa4dde9331aa2c636dbd406fa311e8b48af9aef271b44e505a4f7bc339324de260851d46e84e796edb9c62805b6b2e4d5cb8dba573e15aa787433a2aefe7268b70a255ce37844fd69c5b3d98b6ab53cf54988a0ac925f775b891bd816e1d7761a1a26843e4b4a3edf33ee168e0f17e0fed5665eff19bf42709444d9a42d86fda10e65cd43dcb42b8d450aa922204510291f463dc17cd9f241688f9b6b2718e3468ee56bb99460e4c89f6f7b34b623760a1d80601f534078aade1922cafbee0546f4b0575be6abd2ef2a828162c96718a9538673671895f08544a7bf7838dd34f5d8d2fd13f6ea905f30f5797f0439d9743eae8a09e2bd0269a517f4ec894946a041810ecfbbaa2a14a8ce0d79831b23d62923b275a456c68bcc5cc0edebd196bb316519f647742c03c2e493c6116305053000697a8a643c41a653f028ec10de0378eb3b6d12e6873c9e26971ffa388fc3558327b8bd6f155371dfea0c60f6ca01f9c231349d5264a3fa5aef5a1ada09474008bf3d7deb217de4d5d6ed3d308dc39d1793da9771add43ce40e37108c38e41f8a1b0cd0607f9c85fe9769c3a91ded6d6446d96a49eee88b55129e241d79d3176dfa249ce07c595841f47e413843d200c8925be353ff6e00f1ad5f4ca8deeb7160d148e7100d1dd45ed122e31c3614e4cab7eaaa2713da2287a7ffa9f66ae46ce654328264fa86b3fa8c110164e3bf4d3bc89b6a2cc87a43d78a012ea695a4f9678d99da1f8a5e20323e4613455fa21d9010df43f261f43be6b2f5ea31bed9bda72484ba60541a62457a4c3dbddda5568b2e51e39236176b142d63c907232306ba40e82ff17ea436fad3bb2b91cabd1ffd58703b788cbf67ee093ca3653663c6e59a48856ed2202d42d9a8d492a302119adb29abf01515ca02520ce4e285f4568415758b3cc83da5dca7671ecbd1329ee85be83b60334cb2bc783b08ef2f193c162d288068a0237f71a6728cc531cb64a6c56a4a0c3681e347596ef78b654cb57980e9824008a6f505dec45f261c1740b00a846b14805adacda5111cc20124da65c8c3ffa525a1a26445b0ce18f5f37cfb39c91448cba86f4b11f37e8f10a2da03d8af8c9a2aade8793b98f3c81310cd41de8e1152740f9eb0d3d64fea9bb9dd3d2a335d6e1d242eda9d49ec23668ab4cf69618d44b87392cee35146eb38cff20fe312c8efa0b3a453b7bab921e577d19407db9900c3447235dcb257b3ed8c54f6816af7dd687fbec4c4638619ea765b05aea0491bdd0b08494b4c24bd707fa14f569587ad552da497a3ace6a0dad6a9133a3d0b6d9dbdccd98c5dd48faa78f9de0da0311b38937d7100130bde367e8939945b569f28b3fc65f5dd654d1d6f0d659462b63188629c2091e42966a955016373814e5a141f0dc3e7fe6d6ac13dac8b99b3ff1ed7b4e2c119fbc419cc965b8a488c5a407bd4745004ce7eabf4614fa5717ed0f3b823022d61f47656b8640e6826679d9c6f0974f78e2b6bb3f18baa793fc0f1aa0269aee49f92f6876871e823db6f1d08502fdd689300160b32cc16103b832f5d614533261a852ddd923d1e2932fe649cc7787ce2d46d87426a348d566ca8a6aead722d2a902e62def817d7940871fa096bde084701c630acb5e0a7951dad0b6d984e4014dc0ed45f26f67f3dc66b13b500ab0d614c5bc14be38e4881262417102ffa82bd4cf2552d1cf853d2f916c1e3f82d8995ebd59b8b4aecaf5774e899c223f9963a87510d90ff84f7feb5862ba0cb0dab5fbca076e2f0a9093cc9f09430d88cbf08adf4f9aeebe2c654e90e2181d89b63c16f86a61fc16abfbfc8297b19860224334131633e7d841146a16acca9f67076324d5941ba048fa5daf85fad4dc6e31e4801744ff2404d66a7f132443c49f557acb1be1b9eaced654c659046309eb1e075c849180456b74623e850c191d3284a88fe62658d6be1fdeec8567b2c518a41b619576bd7a5b9cf39270be8da4c06b80fc18c2fd8695645d406c1ba464ca2389d319c94599e3d49b92253c26ee00917f8133619e4d2ad8fb87622d1236b65978ff8937ab2922a784b7ef88090ee766a9c2ccc5862437c9001daeb9d5e14470e9319d09dd994af7c9f3f9c1690e7a194d69bfa7b9ff99c5c4ebe265258278013d5c62ca9f82a6332b9e3218669a5088b06098e3f9f512702735f224d373a058569d98d0d2126ff1ca2e8fafe76fd3e7aeb509aab43eefcbefdc4af9b2d3b5d9db5d9689013c8f877b115f705ed7473ca53e11f1602b2947a0f47439a528e3b9a0364beb7fc77f4e8835cb5ab7c90abcf0091bd446c53882c3fb819946e63e099a799b395b0bc7649df73431811ca0efb97b2b54dab0126b6239e36d8a6f61e9ff8683ed9c45e13dd524411b9c600d3ed531c8a384591f0c248f90f4ddcef6305111195415fc96beeda27416e0487249ad27d7aea5e77b61070538d0ab15af7bdbcd8bf22690ed9a961f5d7eff4804d13f063f3762a67e28753ef07b8e3ca65c7f3c0744615323b7e01d1f009fb2cf47e1f5eb386c532619851f627776217239a3a2e905e3cdecd250a377c8cad1e0cda885349fa15a1abcd001a2377be61b577203e91724e4ae288cb063678cf7f1e8db88febeb868dfb36049967c392b05b3e1898e7a415c1bcc08d4f393207251f81f22d4681c8ff26112425c279a79f4696e791fe60cbbb4d33b2b0ea0b78a50b318679eaa9c320c31db40cbf7701421a87050a50dbde9769cb3a2fca062de624f6a8c1fc945333fc0fb8a3ca684badc52a6032a1b974cd480f6abe1080867edc1eae67da1eaf129f9ee782b6ffe72920d5c3f1fe218e377b2c897005a9028b99a5047ce246512eaa69d92120d5c1e7fae48ea647db49b6b149a0a0da54651a3a45968f61a9161e814a962a6c16e2749709375d2b40ef58a896e5b9a028a577c3662f9461a5369533510810193786e34de9f687c2846daf54fce2cd83520412a41a9c7c5b8f7dedeabb8272165da2234eea5de29eef91ab36dcde2ab407660d0d88fa581a32ddaebf4c861217c30d5b6265869df69e0c686c75520925a10da7c99e9e234c92e211c4a37831546f68fcab2abd6ef083dbe62f8e133cacf0f0d142c1b18aa69f6870a2eea972feb95cbac46cf9e9dcb46d839a547672620794b06439decfa1ca05f7d9d417256b58496c46628006fec2d43f1abbc0cec783374ddff64f36ec8c8699200e322e347a109e068a6414106be53a594c61bc293752a3ada82301d63a4c8ef4bca2700230a8c76df72abca3ae57676b90fc7ab33c2cdfdcd57fd1a7a234b6e1b324d578f0e4741b87a4ea01d10688c0c0b3d820f2b75952794501268ea39f88d249779fc19ae2ebffc906153967b61851e13dd3924cb69a497a62384b95b935de6d25d7a06321b297200991c16debd494addb3efc70ac81c1bf38d30b4f46801115ebfa36236b7984227dac92e4f3d715ca70e7c5289712993067a971e02129266b85f7d7a02cc2136ef5b846e84743b6b33095e2491a8e7bd3cf485e1f9bca594703f49a4f2756e7ab03a9b4a01bbb9e2991395489f9c2b042da7f0d98235d36413211dd0398166dfe23e3bf8c5115c7290871756a084077f3883de1b468f256702dccba6f846bc978cafc0b4c782505875e1fadd886044c83cb2aea578ee26877580d6a5ad594af0da5e7ad6c95cde007c6ea76a22448346520e85c668ef870ea67a445c7ccab21bb50e4101473ed19478a95e14934982b377c32d6f4664fc8f4e636382caa3401810ad3f09eabce52493c725a3d540ece60c25f23803f33c755615015aaafc78a1812e3410107d3fb04e4e5786225848c38e3ebb59e9b85843c921a09951011f55277e6d4881baf12fd5f89b18da34133d3878b882997dca64daa44d3d2902679b7967eb7e33033143794bf8ca98d4f37b354ba19fb68b3500e7ea6b0919e6d51df44cae1964a6eac6334f2e095cfb6869232e55759d00e48054c48c25e758aa4889d8bd3d0c52894abb5898ee3d42c4095b99832310ba5501ce524ed68ba16cedf59328d8600b986e6d7af6fa7e0897357c6794b3ae3b47427ae7bc012b41de5af40ce38d912cb8e52b8a805e37461272a5ee158e705d113c1bb78257361ccad78b6d042aeb74156fbac10bb81201a918a6ede28081634af84a37f6031290861ec42414db04b9a9202dc25e1298ae1557e8453ab29a72b604089da086d0aa49a4f9a851bfcb1d08245a592673621547615cc96d743b12e9217bdde18068803de0d4940053b3accbacd4aff8f7971387cee8d4e28c66bcdc851e4e0fa5ec941e13a312f39a68342f39cf5260453e4aa7ef1fa5d3de8cd229468ed2c9ed50a61747a26d733bd3cbae5fd337a02bfa2619b884cfafde88fedd349d6a6f6e0d50ffcbc0c343af4e9e9b272d8f7f98ebe8caf6964e5f49bc206765b8a3d41e7733f6cb24d526fcd0981be97bd759b011211a25ce1f9ab5981529a354091bc2ab4678ef52513f2d82bc49fb0165325b5b266dd3ee1349da7840a0f260580787e3a9d97edbab97ca0585bcb8c74e51ed9cb023b760ecbe6249ef030b09b3fa1bf7f2d733d98feb1a2ee826e38fedbc9cceae7f8b11c2b2f1709795631a1b2288a55e7669f0f360b5a62282a4705a2b44ab0bfa5351d912002589b901b5751cc13844a8b96289dfe4294a767cc9fe86b3993ad800d95171ecd429c13ac8b010b242b0bb9d394c28d9cdaf85ed492005c632b026353235525e298086296a17b9bc3fea37a3e5886362bfa11553de0b7f0d5594de1bb869569f16cd3dc7a7d1c9defc8df9e7e86cd89eef56a5dbd5acf45735934a17600ad73cab67f650f3eb430e6cd94a073868d29f752250356dff03a3ce5296dbfc50051bad6c4429579241bb47652c8d4fcea906402751a8a3ba372204b05ee0276dc9ab678c795033bed08f4d9f6910e0802a04ed2c76ac45dd1281160c3845cf80dd37f45d4f8dc558b266cae6a413fd6bcd3e4c2f63a1d5b3faaace1e6617220709a8f1a4584f0d7c17e2127bc43e116324e92e43dc9ea1922890eab1820c9c4436c72797d5792f6041ce683bfe80583276bc1674249674269bfccaf73206ccec7c5004e8b448c2ab20cae13381bee89c38ad2e3da942b14ea179a627c6274433d443901e9c5e0a052127e89e4a1f1da13a7c7cadbebb329f35dcfa8efda6ae6242e4086fab7e6f818bc8c4eb5371e97e3013642805af2690673e5df2e369f0feb5aa44c9f19118f8034fef34a0149e41d1233179f4b56f883ba38f40fd45f062c2d04b588f912c1bf7511470fe131a0c9ffcf9a13a0bd13e5b86e895712ae517f36df35a7667cf478367cb74e3ff1b9c319ebaa9d93c506c7539a135baeeaa63a9efcb258146b9c125b2c7798d61e23f4de6ad4b176e12c923e007eca4b33a4711cd3323fbc5610e9421193ca0717d51c21a31f7b7acab6d7104675f674d8d9377d317f4c254a5484643a637b488554ae428a6be5aa7b4802b402199ba4c973950fc3f5d5a164af07fc6b560a6224fd48ed26505cdb88d78fa2b289256035b2161b6ea177574b72d6d74f29e2099920dc8265203b9816846361198f1943c0a9e4961e76c6a5368c737a22b8efe6e3d973948f289bb5211bf4d04603fa4125e0244727a69763d476a1b52023d8238baf72aab1ab02f074e032f461b19a5479f018a38ce027d88496c6608078010644e7e87d6bf8bdd0d1e8991873132947d94efe1b14b47ce7b1dca8755a1624e8a69266e305a7a7f8ae719a24396ca806c18a98a731103c9bc497a1250743791d23ba6adc3d22d8a5a812e59d681e3e91205a0509cff76c17c33c48b9b27cf171b5639d7a95564d9e471922b66984b7a6d3aaa15add4868681ea19161556fcc5ee40bae01eeb2f60a000815df496b3464a738b8cbd82b1d7c5790889b2ac199b7f8ba35505eea8e2df018afe7ae073ebba79cc853d590748ab27d3414a27af83286c640575e37153210032bf02a6d217d15e4d0469d9cf1014231bbbea9250faf0dcca860960e8e8111bd836d63c35cc3a696eee29aa374a8f03f31d127da79120348167b016d42e348d42717394311e6e50a3e85b819c1ce4c6c9054ef9ef24134f37578e92b702006090bf91187578bea49eb398688de9d19a6ddbee22fa7402f07d20ce21596c64d484d7b256949fe540d202188ef35c9553beaee9370166d1c27fe71223e004eceaa27b4fbe88b701e2187819014869696b2691026bd12905116111f8c063056eec2cfb3ea8ae12409d2211f911edb8435715d3c3d5e2d7f040aea190933332568454c451ec265b15e7e7e910e458e6632706b7d715a48c040b42a26507d236c9b815a07274d035290c193266a0574471571aee985ef6718d362a2a4a164954f93c5f8c725824263f4bef83c187413858c9a0eb5045fde4d8102ec2080a4b6f0f6dc53dcc23772ba76a4fe24ba881304c84642a5000815878f3c8e169e894dd7c636ba6a6c88d74619c2f99c2da80017692e85b074f12b960b67776fd85b1d7416151aaedb4682cd1550ae4685fdfd697b49ac949faf66cc6ae1558f02e247cd9ebb314d339205d85b20d5f14daedbf4b17522de226fcf7376dda1238ffcd4db8d42b5db2545b8a945846091d854d6e94ab300b9849e49b6fa5f390db836b6a536493617b0ada830b80bfce579b4a0db7519000d9d5f9a6b510ac5c542179ebb1f990a80c2274d92217d73c8380f179b3e4df4e83d89019d543e25b4b927896805ccd55ef25e67cb7e2d7adbec1579e4758ea82c25de52a9995b845e2502bc910cda8982e44a21f7ba0efaf24baec7fe4f2e2a545ee4e7c28765272e8cee8c8271e0b180fca713d684ceed6fd821ffec79558db8be83f2fc8b48732dc09cef7495a6fb95aa82a64f86065af21a9f02e6b2fd44ce2d2d25806f5545e98a4a04badc04045440320b121a5cc04994c406090e8d568d2ebb6d03355309f107c46ffe3a1a1ae5c7f1a7dc2d3cd60e49802904b2e248d53f0aa36971b3f9023625720f48400be005a035505f01e94bb08c04d58a5552268e30a392223bc83d6cec48ecc8c8cbac705e00d31878285110ccaef70a4f7662a1baff33d3404513c34e0a83de223d1f4dca28a925a2d99d97e56d9da9eb26e9a1260e6e2af098b4e5a851d21b6cfd8e62087a278288bef3d483e84f83b44e66685a7b902ffc14911993dee261c9cf2f06c70d24b04f51c05b9643bb9c9bbf64ec2a30a2ae8c1b73df5f2764b1c69a695c28675614be73e7d0abaf9d0e1ffd8a0e7760481ec39c203c5cab2e1d2059d3edd43da837e71d11d7dd90ecacf7c719ec497b775f502a211fabe5ae5602398e5892094847607b2b1c4f520e89e5f557d7b791467c0681b796c259f1bf9c63451fd08817bf1ee3f85e91a2dcb17d252d9cdc2c95a82af172a08cd878bf4ddd252157acd35fe90757083139439edd09f5261874543d3610cfaafc80233c8c1b2159f53efd78180ed9da8ec573f07153781e67f54d5cdec74d1e63fcce3365d9257368ecd190b85277c67193565a297acdaa68cff318e4c93f0f357308cfbd33aa3992f47e2434ec13ad727a7b1a9e1cb4284226730900f5af65ab78ab7860e8e8456ef0c84314e5bab2c51e3b07aa9474067c8be604a3c247c27b12eeb344f748373435b3a3ad9c1b1f594e572221794f964afd4ee872c2c3510951d1b958e6c04beb572a64bece6c54b14e107f1edb858245b082603ad0efefcd9958715238270ff616dc475f31bfd55e997b4303883d88074e93602507607cae2b4df41315a4387cf198fb08a07ff25f78e1ce6ed3592485632bb41f9eb3303145cc0ae044c0aa6635261a6a06dae7f10818f4918299b14ccd243b78d2569b418696bee6bbe591e450679117d82e6c70fbc194613783c0d5567b57a0b8a217a26b2ef3429a80f359103e8bb79c1b274f0aa253b87cc70a6a0ac033e0e503b4facba5ce361471fbf7728fd398d16f6cc7cbb5eaed066e098024ab80a389d3d5994f2da3909fdf3c9dc4dae51b1ed9d3e8d73c9678e7cf6e6c44d577bc6388cc64c5f96a1d4b603be30ca178d55c1a8efeb241d06c910ef165d411de055a03ff1acfccfdc47fe904bc744583856101f9c314627f1c2609bf4f84f318ecc946487b121d7fadd50fd81e3b0e75bdeac910a9cfc78d246c5f05e283d87ef746d695c55a964616aa318d658dc93da542149789085502c12ecd3c48fc4470f55942719eebc828feca2a94bc59192981a023f6c2147f8e805fe645a891d3cde6e78c9dcee18f5ea6fb71365a50bda49d45b96e5835769a0e61a41984f5d1cd6e6c84a4ebeb4b6952d0d334647dea094aff02f9878724fe6ff11c3dc6e29c73be61897a5b8475f44b70b1f3a17a0664a580df86b8dfa451f19afa6bcdce303de9ac3f40118a99b5e953f0228658818935fdc45296759e8a891a667046202493d959c92461c5b52866ee0b70e0bc6239050e57539e6665f6ca4398a3c4f7320782553261bd9ad9b0595b54235549963b36c627fed162b57cb71e2a4c634942fef4cdc7a6a33a551107a493091ffdbe3d4df3053006f4e3340e240c422105057df0ec8840ae42c3cd2cf792d9b13226bbb03c60fdf900442c71d60a084638451c6481b07643fb4d32c2b056ea9ffcecedf0fc37d41b34ee17010c60fb3bd2b883e23c6538e70f661a77fd788d8b51cdbb03579884afaeacaae80881562904c298768004752316844d138ba181a37e4513e2f1a34bd9e4f8d8b2e2aaaa712de5593254b2760a08e057ae35e1dadab9fc2862c015cad3edf3641feb01339a5f34776716f12c8961be0a295733fb1bef470d4deaf5c042792bebfe587be37f2fc3d76410e39580de76470025c341124f121283f11542b7390513588d19f0b2a7c4812d162fae8f4e03e7560b122f828606675c54136764a4038a08ff5b6831500589ea24af9d4d754e892f7aa2b457de2e76bdb23d08f02480180a0e018b048044652291ee6a57c7eb1241f52979f378b7a45a29eec4f88182255a93b6dcd53a60f515270b50a7c180b6d60ac88b50f0b79f4461c45e3b6c2ffb71d61e553dd1b6c75230564bbc9acfe31d33907bc36e62cc4054b0c8538aee3143e59cb8873e27e0eaa60ca9ba0964a41b32a9316dbbae68ea2bb69d66155d797fecaf01bb0e24407cf41f9273cbf4edfbae2844c09b06ad335d32cfc5856a911931f8e270d9e7d2a169e405c26258b6a1249ca3e1e22c99f8ba59120af6c926f3f8ca864d8e224f965970039637e0710205496fc586a1e92d99085bb00bb563ef501a2c09c03df2804343e3d763fe692863bf87890d07e2e21027b2ec8d6849d4c231d92168452b915a0932599ac9309fa6a4e26b18a64d94c1761f00f0cac284c3139be2cdca77c581cb8f7b746df99ce8681ceedd23f15f99269cc8a9453e7a8421c89a4efb1dbf1893de68375122ab7bb7983c4e7eca59891ce789aa78947eccfdb1774460ffbc541b040ec5804466a21ab88eed7acdbd5813e3985cafbbddeea920257693808f40d479d8095f5ac7e4f3ea534c9e191e85dba9a452ba043d34512679752864f60adf561ac598e1139cb6edd27a26ef92f609d67a1e981821d21ad11769b4ff2381bf56c6fee57bb76a825bd0caa52334c39a3ff3eef2eb241098d6d79be100c9720e132379f92cbdf5d5b1262700a2a012d7dca038bb2972c13a022a677623421c96a05bc52b163d155342d9154a1dc58a5e33d377db39a02797fde709090b1fd8bc33c101db42fb97964bc62931ca235a08490cd877e18c744d45d5733f4c0c440a3a9763444a77edc27dd13cf6cbde3896d929c6249c98a500c77c6a024899f4ad0835498472ac0d331c4e16e88c4838a6ddf0e0224da509f16463efcf00082018e47d53538a4b85a882f1772472e3bf918412e180252540bfc8a70cc7d5792cb927379764ca4931aaf56858c30125aa6967dc816cbc31b432b626edc6dca426943f9c8d6d4f6622a55f5b5fa52e970004186c8e0031fe019e41c9472c5a622e365ccc5ca0532eae4417d54b2da67e5cef797ebef11d47b635936a51f6cc4d02465af7f1c743be4f64412d857aae81b1898efaccd570fd822d624a6b6c8948dd425b6c81e618895e8f6f3304ec3635374a2c7909a62a4e6384b6ff66438a1e11237aaf4a0ac604f0eec181166f02228f434a0431bcb84e657ff56b135324cadf49f73b7f9b5fcb4b2869c87b1519ac86bd9d19f3e241d6bce988dcc1c95c3f18c5fee6de032ad134a7fcb5fd52afa1f43f78dd904f056fcdbf8686ce9dba13f76d5dbf8fc51e54d45f3f67a1f5bfa76f48d5df1b63e70747953d1bdbddec696bc1d3d6457c4a60f04257f6ba68ec56c259f1eefdf88bf1800bdf329848e719b5b59d782ab9c3b28820ac1195a6fc2bad26400bda7e39d168007eca826c58526f800bbdbff7382620cb534da52ec71b30f6d6047416e3cca1f328f60ae2f88f43508795a84710cd3eb84c8d3697b59f3fe0a849fddffd09db1a2f559387f1afc1fb4bfff7e168c677af9c606ff6321b885c9edc28973ecaec256bef8f4fc853ea8eb2a898d3b23a55c0c483caeaef2aa367006a1abf8a98350eefa95554aac827f755d496f29a82e3144fd234e303ac3c496f4d60aba7735e8e5fb7a27bbdeccdf7769e8030ea730cc9f7769e9c9f779a77bbdcc5fef6aab1e9a0f5d6e1a7f7f2da54c9fef45d01d108cf024dfb75ad493e4f32e0dbdf83eef74ae97f9e35d2c7af9bedec9ae37f3f75d1a7af37ddee95d2f30fac2d37ddfe9783dedfce6c7db11db2b189dc16068301c9a0c8e06436930301a0c8946863e8361d06458343144cc0c59e9a38b9ea03e414c86dd6a45b1266b9c05bd37ffeca94363948e6cbdab456b9c5cf6028b55346e6a7de27f3f472c5624fbdf30d53a3cd2fc758b2ab7cb582708fdf70a47a9f52ac8b400cbbdcbfbb7e956f1c597a2f4ff1b40ef18f8c30e93bdd039bfd0f4bbf1c73ae88327547c51e5bedf07fb08e37fd818e2c32e047a424027564a5ae6ee08725184cc833a2871fe8a5c05e2c1433326b9676abf95d2251dee60a31c478ebbf16dc4433655c95cfb01203ee5a33fdf095d9192fab583db9a764b63cfe9514f47c648817dfecd1650721ca28a7f9f0b9d265c449767b54f94f609f817ecff3d18d160403419180d06431343f356bea50f89968a2d7d04f9c084b16d1ffae8cf22106b7e743b4bff26157fa84966ae7e6b1f0c2d79dbf487ae7c4b1f0d2d7d7bfa87aebe651f86967e3bd4bef24d7cf420f268a31533bd0c2fd55d6b15e9e8ee915c51069d0efde4c90dd4bfb596c4bf09a4a6057c910e9004a8c2d34c0de82022323e2f100968f124538116a222b0f30f685250bea6feb8c6ec0b9cb5fcd6d6015ecf2741bb4f5aa4a2f565b6de1fb48719033044b5a217c3d4582b9658f4e1409b4f0d5322c48b92ea05fa15674f001010979d8e5e137d8a19ef83db79a114a72d4490cc966bdfa8e8bc87de0d9678838ab76c91ed7c6d0f8b18c42bf839b2bc16c4738b0e658bf5e8aaed0ce25abaa30db7db7a875dca07a3c6211274f70f03ef3311138422ad43a3a40632747dc01b9ad748f108673eeaf683c5fe458785c9716616bda6ed0fc5361ac183a3f8ca3a00134e247f8486871f6596b5f9af6dab52d69ff84d49c96b92f1217621add2a051efcb6bfa387a7e14024b89e277c0ddf4120718c7057bacaaac5a72a3005fd305b63aa1a47172fc2d5cf94a73dca2b229cd90be6c75712fec7eb4de8e96661248b96cf7881748b76d4d6ea82241ab01bbe3f6241abf0d7916244877af6ffe5d6983ff55d3b3afc14f5a10cadaf3044628c349eff39b81ce8ebc77d0865099316f293164cb45a7117f1a9499d4e888700c3cfc283a26688d848785b676d8b52f2e09dcae5aa380a05daa6de6c937698d61aa4c6480c3fd1c4bd4ab0260596a29bc2fb74357ce84308834b181cec178fc84d6f5ec3d1d3788a1e398f88c2ff09bf039574b57f6b70e82e3e630bdd9a75da77f83ca144b534e1d2f02fa5cf135861ab3a1eba064f8c2f1bed010fe542f590043df4cace4d9aeafab2b5977a9dd4145447528844bf8a34bad1b7dd4f6e2785411b86f4dfc148fb22e9763f15148e90fc9fc0fa7325411e45bd628acda772855697a0b77da864d77b9bda5519873b9a9b8aedee0557833a1d422547bba6544d823774903e0e5bf447547c2162b4488561baaca369a80e088438202d1dadc8e0629d2fd32765a706247252aaa3e79227eca72c083650df3e7b8c87fbdff66f8c421dcbf49ff87fd9dad16e48a04e6459491e87236d5d4c8400c1499aa101fddb6c077c778b04a14af1497dfb588f07ab48ed931598a857704c63cdbb246df938d30cf126b2c7ef8bf201300074565c4006831bf913636743ff36ac70ba2f808176d89791f6f16d00a17e12e716e96b5ccad7b79ef26ead4b363ac9cbab781a8718952ef3d57bd5b8af9c15eef517a95a5c8ae4c7e8d88fa46f0fa32825250b9f41e1eb6f8eeb2c4737cba8becf3b7e95536221f3272caa6325c1f1921f615f36a88967d53ff9aa2d02ac11d54e0f30815188bdc9aec2c2645996b1427ba763f9e43182213e1caa67f03379cfe06cebe381bf16ab498fe542e67eb36b961d4475f3ef1711f8028cbcd1a63a25b991079138f9840c81b6bab19db07ea85ee2dd67c0ab76463340c1dcc6fedce586891ca4b86ee9196171d639cbc20834a3a30547e31d2378b0d605ce869ba8eac20fe2ba8637e686dc09791189307d8e6759764f019e3be3967647440a38e006e6940ab2a2732602bf8d1442fda09593145dbef04207f1c0fede44a0cd1472c0f378f7510179577d58225bdbb30ee5585eb06445c660c4a24a6a73d89927bd022752a9af5fd13edf18040391f42fdef4d7f7fe84b4c1c2fe4b70675b09445878830e8f1b004694c9f8b83710e339f332d1de1f83f3ffa0c98774d37e9cb805d5a6c2d9d76d3e9d7c43d40e0161ba2936f4024fb8475a7fdd9699354140c479c50224df80bad323e707318b325e31da61acb5f03511c520134aee61fc814038b76bb971d17e5e14c61b7dacb9b6285278e032837c3a149f7dd7777ebbfc865fcbf78ef22dd8f19d2758e89742fcebc90fb1e5d00da2bc7b5a33ba4f71e6560aaea21b7d2fa6248e3f982823445870af7351bb680f0c0585136dc6682cfa5d46537a692de13adee30adc5e502e6cc9468c85af3ae35ecd570334d4671b26cb925b2861c37a6a531796daa6fbee774fc647420a4faa6aa74fc644e7a17eb4488783ca1467bd59180b1cd0c58a9a2f7b875128c848b4193b4a3cbbd0c563429a7fcb8b2342524f639ce5c31619c7d66075c78f892a45b31512ed093336c574e692ce2df6dbf037fe9ec2ea2472154d4774ac418569038ca35525130775ec2b060173cec9d880adc69648156d0f73230e8eeeeb15ae0508bac21b71bf177c67a47d355a9627a0c0e64cfb3c2ee4f5a34318408727188c800f495948121a1797f0bd553b2d75ed84e09a7ceab642d27b344c392eea0afb4350af4c5e30412fb92baf62ea881234643edfc8de8b015fa14d29fff1d3fbbf7ede951935f3749f847aaa5d33acebe309624a931e3a098538886311d5572763db041420d3fafcad012d2250a46a91dc51c90b8972fa6a3525337999f5e3b814611086719f9215a49484727fc4124f7fc9f594dcc9f5c65fda69397668799f367359fe59d20114287ea9a3dc2ae9e4573bd5beff9453423920a45871dfa8bd9edd9e2201a775071e4a7f797df0a12006bc1cfdeae8b3ce968c207e723278e9f67d7b5f4db68dc9dfee7bc6fd8290e11ed88717f769cb22f391abadd17e9736cec629aa108e4bdd2de0f00bbe064d4c8ec30719f4828d544d9ed82ec4586b389374ada11ed4c78f36954f655a0caa806433f765968e9ee8b65d7038f0c3561fac795e5922e5e94dd9cd133aa09e99fa82cbf74f262d9e9843f43cd80fd71c87a49b72fca5e8e8818d580e4474c162a5d79b1ecf31f4ad1abff7977cd88d6319d334a763da1cdac26656f5cd954e9d00b65df12af4c35287e91925d934e5f20fb0b50e451a33a87f25267d3ed0b656f538a3c6990f7d2482a355d79a1ec37a2aa0749e340eeb9fb7ad9ddc0fb84a87dccee1c1021754e5e5e761ed17d4c50dffdfcce2a628e92712ed3fda0fe00ce770705a4fa7009a15b38769178e4d57863cc77eadb57c43490224c65a6aae13f9a3e3527d16925c16b86b69b61e730c84746779f7e66eabe6ac1df77a3a37052095d77070dd7eab6b0ee92693b1d2629590d8009f1faa18c4e4f2e7fce0ae874b66ef8df77a3a37052095d77070dd7eab6b0ee92693b1d26255737d5500dd627e3974681d300e109aaf17c749892606d15e47b5fe78c4d43d894046bab20dffb3a646c1ac2a624585b05f9fa3a5609e12a1e8692aa9784e44760f172c10f0a8707de5aa33d0cdb33372dd205a06ab68c69d23e062805ebb7f8de1e6deffd59dc85f2648ec00f24b7a7c5da653f9b65db30961a70275fd373f4c557272bb783d8654ca38bfd4042e7e55a8078bf2d889cdc09e71aac26867b1b7bbdbe51310a9f125d733e5b42f0a7666b6b7180a198f630233d68a9a9ddcb64c1b56ab078c8f5e31bf42df6fa2dedda52abdf86eb9fd71b7b74a6e6e60bf84d86187814c5070998ffe9f72da5026a8928037f13f801d63b3d426c053fa0bb100eebd1c7ef537504867f7be38f529e8a919fb8cae1289d6e424180dfea6bf2233ac5b75b61f5ca51d270526a251d91e883589e26c68fb2404b252261f58672c487f1b176d539b0d03c0c8e4921a991417fdcfa9a8c63f4af5627ef8c6cee383382ad217798f391903bf946301889ac75d08e7afa18131d6145391d95ba02abb68c228bda04c3b34c7428963401a38c708419d9bc7b80a091add60808a389bfac260e143c75a0356dd80794d99583a21d83b7876926979668073872e460e5da80fa9a47d2bcdd02e9d79a34c2e030b6e0a84d9d5f81f3fad951fe645404f155f0e8ec789b796dedb823b85deae0522da8c9b8fd00dd7eb121087449ec7f21eaaabbe50762a0d0b0133a54fe29b11da75a405b1662c87ba3d914df18c6cb1f76f58d713acb2249a905f44b2302a30f1ac9368deb86cae8d2d844f28076076b8b8db37633b94a1b2ffe0fdb429fd5c919ec031d88a9e6de1fb12d45aa62806db16a6c77c46b303aaca28663684dac0d895bc194e6fa46f73d7a85c7f8d6235aea21f8193fc6ef909b0a6eec21863563425f1f1871d843b6065e793afcd07f95d0b705b109298ca71f76fe0073fe61a217e6d262f53287b271df7cda767d5bc71c93a655d9d73c45534cb79ff695ab6f1f6e98a089b39fed83befff571b6bbd1c3c74a053233ad7fbf4767b500fa0f8eb3220cfe13be7e8d8209e8a71466924fc43658ff7291f2f98ee14472431e615e25cdf827994b9116986f9f7fa4c60668422824a2a28123f61030324d652636a0d9e31ac4d0178f4c94adc84c3e2aebf17f4467059e02fd6cef3f578bacfce797984bcd2f082c2dab4020721b725350dca232d2e6d730beae0e36f5d30e4c4b75695278bc2e6f3f2112e4ebdde8099a37255d1f46c8962d1d9f329b3736048c705f15253964dee0f80bc472f26cfacccadeed9bbfd45fe022227b6865feca66446bb0fa7c60b17d50716bd9dc3ca5e52448ba3a955cff25a55945a788c09f8ad43644ec0c6752088fe67ed0244d9f1634da97d3fa6ce17c9e6d16894076a882c520c6487edda9667e53ee0940480b0d6028d2c9edd537e945c11217222d3b9f99c6695e25c2e2b48da38003d1a4552ab65fd13f1165bc21e89ae547473a4a35f38b1c8bea533c2de061de788a43d2cc84bada8aabd8d00b4d257b66a5f00e90f0f50cc72c7e3b2303b8279d9a0bf07a67f0a8ce02b00e4e9de180a2fee98649bd3a681e14bcd6008edade2e0686b06c7614c4847afeed441f84df3f77147e79b1a40f3b5735ed047c52fa163b66eb5165cd53b308a8706bdd74cf66aacc928b08a828a0a94783ad9cc1fadc256f482d1907be7c2aba760d4023f76267dce2098731e14ecf0964a42386c9b7d233145ca51c6b1fe53065209396e5ddbe31bed4b483a70ff7bc5a72e9fe3fccb5f53e57a20d70e9248e726199d5d6ff2673baa582c90541bcbd06822f6b19b4fb42fb6bb7b9918b47530dfe40b3da4730256927aef95dd8fb7541d118bd1226a3e28e13ce6a12b29d8307a5e6a75559757006e62240108bfd4ec64653f4b991f8dcb50e7c9e40ea84ad283e4b3fb9822a54a50cdb3be6dc8b587a65559b4f79820b61eb5d03eb6e40b8cac5b1745fd9dc8683568535dab9c0cdb340519a3a205a3e4686e0ef149911e05f9dfc164844e4529b9be667cdf0ddea9730db26278762595d60a2eb463398b2b8f30c1487580e9eb5c50e113566b0fc2701c15e72b5e508e75d765e212c099456dc3d4adbdf34055e1f3966a994b03f7920a8c6202523842fdb6b1a0cae1cd7772d104c1de1e4065580ed8eb9ec2dca9e593722df37498a5b146722b12171467af5a47c61924270b2200ee89be13029211749a85cb2bf41cf8b5827613bb427354e6813e791abdbb8b20c0da9f7eb83a352197a4288eccf370cf16970b1e98d69897615e3e4774ad06a1843921acb33f41d7357251e7a7b0d4fbdf88a4f1c6730eba80ca4bb5dfe5362a38c254e456ee01d13ee8e1da18cb3d44924f937accfbc43e6eb10146af86d925cac41d63c4e3c9ea14b82fe286e15ade04250c011d943df3b77534334678c6ab46929e5fb7d3804407543840dd9cb9a06b0a46f04cab7a1616352cf18c4e8ac9ccff5abcf54ead29511b92e314269586535992eaa843c893a65cf0724e31042b2ee675557298fed66bee8940187e4796a35fbeb54cd7d57b8984cf7c8f8a76b3973c9d94e3b0db5755fd0e32861a2d173f8baa0c253a185356505070c378529dcdad064c508c7c8faf8b161eb01d1a998765bfdc8494cf4353651eba8cd7dc8281d7589a0f1445a32a1dbfe7d2982ed897af414788b3cd3dbffef55aa8a51d01f459c90933d32f02d246072779163344be512885c7ec805c6883e318addf4db713b6b3f5a01ee329ae5ced7dc099f5e249e69480d15b916bbce9c74d2bd6672ba6e42d1381a50e9cc4b45d7a0686c239cc40d390d9b1a930eb63bbbc7246af44abe600c174413024abbed5d57204e69261d00519404d551c2fc96d90c5783b400750d808125af60860f29bb3f2043440d6e61e4847d3fe55b25301033cebeda6a1b77b2346e541c0693752a629e320f244a2eed8346258d904df6de7b13b9a594524a193105d805a4055e69505ee8d9d0fbd05afe853fb9cdfa53b03cdc9d8e68e2fac3b2933cfcbc9fde7fdfdc48362c4f54eed159f6fb79fff53a756718fe57eba1f8e2f7bdf6b6ff20d64e7dbcdaee23e9e3d970b511f7d52391bc6dc38d7b7cb20cc9c7919ead14b50d3753c8c1af960b6b30d2a07102f0e99526499a1e9c46f1e985868adb0faaf36d9e6d7b372a15f7f094b7fbedf177dbbd89df2ef7b0a7dfc37fa2f2dba7ffc3a8e2ab3de6de83b79bcd76b3d96e369bcd467d6cb6db0d471fb791eccddb29584e3e52f529bb0cf8d2edc79fa28991b4fd89ca6fb7b77da74f4f7d7c76eff0d4c353eac186dbfde7672dea9affecde0197db4c21276f3f7ef7d9e4e32e6e77ba99427edbda063efeb19ca28990ef5cdd51fe5e8da221e4ea8ed6bcc3baa339ea9dc1c3777c6ab181aa17c9d26eff44e5139c651ade019f5e67baf89922fc007c7a9d41c1a748c2f23eb76e5241067c7e8f019fef51cb75b994820adcfbc9a9fd2b2a59eef5cb4fd44ef789cae9cfddab9408cffb897b6f77efc39fd5e8f63523dcd6d5f189acd16d0359f08d6e5ff5b6fdac46b73dab90d65f6d7b04b246b7afe0dbcad0f6b7725621db58825b8f5fc7ddf58fe177f1c7d0db5ddc4c24f6d2b73b0dbf7f1fda4ebfb6fbe57a2fd1f794e87b3b3411debd737537bfdaaa9703d44056a882600da948b70ee750af463799a343f699254e1e875cfa1e7f5fcbe1db37410216d0805786bb37d57e8a1ec56289cbbf4d14e2a8eeec8344b5e88247b5a8ce8beb9cc92fde539cbe1c527f273aaa459dd63824452aa116d5debe034c90807d0dd422f02def94f78dc38d69c6ed5b2f1ca6b8fd126a140d81fe14bf5da1680817bc26304fc1d61dd236a11a115921fb16ef3eb37c07896c6df7da87f7bf6dbdcd14eac7dfc1ddc3afd6740e69ad0d584ba85977d5fbebfdad5a6bbd836abfa41ff31ad6db7e13a7650f39ad653fa1cbaebddac46bc914f27c9f22592cce5994446666ee264f224b333fb0b649d39a054e1d2812e5ef522971a335c1d52c6e7b290e8ebaeec6fca3f8dff7ed9ef78fa209908b2f8a24ece7bfb5884efebd54288a1073298af8c872aca1b8f17fe2832008de10956c53396d7b7e3905cb976ce223d51a4547c07d06f157a538b83b0641dc77fcb9ef3e9fcb38db7f0ffe4fb1447e11e376c744d6e87d5e43e07b7177a5efc5ff7e1441b19cbc57296f7c5b862209dc8b206ed4ef23bef77df779dcd77df2e77c3ef7e5dd698dc8e7c79fe398259698632c8aa2587692dbaa820b72bef1816285a2237c62af53bc7b1944aa573461dbbd72f0bf2af55ecebb5729eefd89cac5ff30aea86f3753c8f55e127bed9afcf9f145faf14f7cec89a2f818f4f607752bebff941d9e2cc7b7f69bfa0b6d36fd9f4d3ff9fdf6e467fb7ed34f7e8f546d65d7e4f8f8df1a11d970fff7f83ff4da93a36d3385dcf6bdb699428efbf16b396f15aabbdf3e7c2c92b0fd126e77ca451321b7ed7edb4c21ff9e6cdf8f3873dd5fc0c1283a02feab9fb8b8fbf8f827f87d7cfdddf67a77fac431b89942be047eedbfefb60d7ead8f9b290469b55654c297d75e7c4a9fc4908be2cf1a4547a05cfc2ac5351982257d5c7a4fe72da4a4f7b78aab284283e30e72c0e4e393987cdc41b65f1a3fbf6dfcfce39e7537ee6cef7d1317cb1e72f1c113fc7b5bd92f177f2cbbe6620dc9861b2c9bf8573285bcb691ecad027959217af9fcca52850779f3c4167bb8c80a3a7fbd89f3161819fca607b7d65a118f99cf0b8f99b544c45469f19eb358b2c8252b08b30a00b753463516044d171f4453527650a143e5ac6b8c71c158785850a6a0b1a2e40d9e1b29e8ca8185d6961d165cb486e4c138a5ae1695551c41e2424ae6bf8922767567b5d65a9779680c71444623d1d0fdbedbd59dfd4b4511f9774344a22882e672faf50e52ca7f42c89740dc441da56d3832144b1ee3b88faa907d9f103148d027144b1eb6f772696708f77589e7eefe586a3085eee3ca7216e0feadbc4f962a50b0edda14baafcb894a0ffe84afb397863ca4737e707110b69bc7f8f641e86a1118e252e4b59cee239d80801ba8eeacfe5cdde9adb5be77f70b522810f729822f6808f8f5df12d310eea52f6808f7f52d6bf7d63288babbdf3e1172ec7dd75a6bec61cd14f28b4b1040625d2484b0e47ddb81bc893fef000cf17a759cf4766e7741d4224c86e0a83d6d85be7a6b565f0f3fee183fd6b94be68cbdabb5add52fd440756773756741580a86da7e351d8ef975793107c790d620a5fbdedf6f9a7517f2bb9942dec4415bbd5bf6cb414fe3ebd94a3d6f7a9e0ec7bc8394408e1fe478afa03e07eb900b8a2b9e73de9fbae88e506db43400592fad6d9014e17d28eb6bcd1ebed56a946b6b44a7507d0dfec66bade4f7a9a854725d477a44876a516d07d5826a44e35f7088e886204197938fbb463a0109c7d761e52778ed75598bc0bfdf77f0c30d82e012b8c9baab226bd7f96b255328c27b5b457a1fea5a77bf9c29e4ded6b3a85e9e9567b069303f2ec059818a9ba91e676704406146c5c5178eab394974cc4b19374ec67ea84832d1620e981e1c2d5421c365c20c31378c85393912e7cbe4a2a282f2c54b9dab38139bcd1091dc99554a944d35c9414e140c662e80252dc5d495b22717b65630e3f6c6e7970ca759c6719e298ecdc06e2a608591b3a3c5530c666a8090e191733583301d664578c827179416f6f40dd103f2bc94e95043078faa198ae8318b9174dfcd9b2fb22b25304c49ba36e37b471a7af792b6cb570b4e1ac9959f155210d993a66cc51bb1a4bb85674c8c2a779e801949bad65af02db8755cb81caddb2483cbe90e993b55337024dd16c480726345132e163324dd6b6fbd5f525c6c73a7d3ede834e15d57ab1e9a0c35d65a6b6d0e4919abe9c55f3468f080ecb5b772c138ab4d5d77d42b88122457ee15486fddd51b86a0bd37c4a2889bf1d89bf8b4946e012d38914ed0c4412ff4ca5d2d0103ccad0ebd52e9a2c8b372ba6ba1977115956e0915f8e5f5ed571102f5ed7be2882671c4fdfa93675bc91f6137b975a6764bceaff14f5d0229471525ece7cfbb97e21d12ff44ba49e01cc06325bc97ee266d54aeb505245d5b2e98b95bb66a98b91ca8828281ac851d388041abc2c375c3c92aca9545717346228392acdbb5dabb171ff96c08446a0da4a61f08c8ea08f1f57233256a9073ce552c80392a6bade57a618bb5e40c2b5aaea840ae2bac0f8806317ab40c51f2425a93912146ba5c904376270d990e3721978e3c200a271a6cdafcc0c2044a4718a7245dc4ac1ca981e3530b890a5d3bd2c687eaab7536e79c73ce4378efb87a90795972ce486868d2c54b9a0dafa46e434a4a4cd41cb1acaf1b4778d711e12569b96acd11b22b8af1934058743874e4a171a4881531fa93be8e92434b8c970b19ac567831f6803418ac5a304173014bd2fcc934812b533ff604b93a42030b056890a9e1428ea82c566c9858d0cac0d4ec30c3b223294f494345044795336866623b86c81c88992faeb924aff0bcb34435d08089011bc3b2a2a3046fc8b060c7aa0713ac6985f7236ee38439e2c24e8c2f38662435dd309b21030d1e292b52497dc76d19354672a87346ab4a455227fa5285dbff336e9fec6071034cca8a3a9a4c9391e92bc39d998a113be49117ba12dcf14ad1d522ccd38e24324a5cecc87241489218c48c9cb146d2d8a61d4bccd844a1b931334bb235e0f9aa8a1a73c3060cae2bac2c46ce8c8419d102337ec9180bb75260851df0a965c406bff1d905868af3ae8b6edd4d91045f2d8718d3103fa521fe9086e138626f1c1fe3107f9882e548d5cbf86ded7b700cc3fe3d1986fdf2f143b2e3378a5d06a0188ee1d77d4272779cbd7d273f5773217e5b0d71367b13c7dd6d4fc35aeea977b73ed4ab81e669cedd9bf8bcd99b0f7a5e5a9db42b6959dc007c0638b7a9debabadb3d911321b7104f444414828b0ce253abc99a2668bc13cd2c110da6d922e9a0c3c183a4717b116a3571ca74443739cd2b73996821c9ef07f8e564851f08633b5b9870c541a104f7dedb89389df7de7b6f7d21e09cd65a6badfdfafa29a9766ff723eebd38768d311ee2d85a5bd987dee37587b609ac36083899a6198ebdd720a5748a239634584462f2fafaeba6ef794f4b2f97e134c3ebd61ead4936a85971c651144991d47527deba13c7bf93533c9ca6f1fadd83114e3043a8df85f8fcb984fbdcf7e7e3ef9f9305978b19e8bb8ecfda84dcf18a1b9f1c5340818b8f7bb1643ae265defda8933c97233f97c3226bffb7a458a4edfbec62aabbdac90e3a2e0ef19c458cb8cf95b8ef50fa94b7b2137171ab40e3008cc03d897ba092629d30bb404a8e0f7e18ffe7ad28e2674f326fa6d9c53788b7ff536272f10dfef6182de79c89786edfa73ac83eafd4e1f86d236c2f80bfd9f20be0411ace3a3cf7417fcb3ebbf8fd598d88b8f8247051d4e0fbebb878790e7f7a8e8bffa1a437cc0fea5315aab4f6fa5407fc2929f7f0038315faf9d954088d81f4fe89db7e76f4e967532a8a45dabe7eed818215b26d8a82dfcada83d6a175aec83ebba678fd3aa5439ad5a1a44d6892baab7f2b996a9188753f7f007f825a347e45a3bbe77e1c40d935d7ed3edbd02e5e3f9caa3d74165e5f00650faafdf873fc5d9e30bbf8065f4235a2284cd040173fda117150ee138ef86fa6239efbfada1a71f0f549dd1401001f807dc2115fc23df9fd7905c16def807ec4c9a7e42359b2c4bdadec1947719b7e07a508ac107db10d004a344e9f83b2569e30ebf0a5bbc1df0dc6f2fe06e512888d426ef7269eb343c8cc028ff726147c697cef734951f08c828fefbd58f659878b5f07e7825af441aa1669508b806e5f3d7c7d5aa416fd7c25bffe09ac91075f1f056bc40101be3ea5b246bbaf35a1efdfc1f7235b0359ff633ae23e9ffb5cee3b7c7d902c4be8015a213907ed2b1e94d30ae5ffa041993d94f97f3ae4cfe5f749c3f3e3ca3878787e0294f985ca5dd941c94139ad5049c59d37be5d7da2f12cbc4f33debe6d38dd69387d5b9ef03835a3ab1ea686ced8801183973b692f70184115101b98e490d2757573115b192633b8b5360e1638358204f1b22629024fd8b481d285889520417c6a2d8983b307622ba0a890f7b5b52d39e3cd2d3114184b0e7c2d0873be1850b5b4adb0b37bef5d624543651b65c45b92654bf2015771e35e1b9f5f2a626cd180a76a2d39b20406aef9e48a42a32426bf4fc93ac51195df9d5f83f036c5af02ca378fdad35bdb36d209489df3912aa5e3652f53bc8328d535e31c88aaf7484e6e9f099190740242f7fd245d1150df09c89c20d0ab2b58f7ad3b6afb80a43febdfba6baa94d600ce9fbadd8a189cadb822b522ca195ad20a6ec31019626672a0a39534e98deeb9dbd9fa95cfac1831f00b02d9c9bb1b3aa2286c58ed2defb0eef00ef9cc8a41c5efce516e53802290954f2f2f7638fd29826053f626b66466c849a6841f7841cb961ad668397326e9ce71e145f5c545948b311c209a121b776b0ceb12c163e7c80a40ba96e8d1014388171d2c3851296161b6e394fea4afe903796900ecca070d1d5243de8cb901ad851b2459ee40a5d12a10530219a8a24c01e323ad4593d58f3c478e7c39399162eb62c1c69db33a5ea2f40803632c2ccc0c1e1694f0c0ba81632c33e03849980148d9e283c70c4eae6c2c010186951776b89ca51043a695644a117076403e2eefbdf731c6f37139711545dc07411d52f01345d4e6ecb4c47feb9c734e2c8aa8f3deacb5ad141c8394407e1fe477afe0bb61efe7573a421e716f13397e20307c5be904447cf24110144b1ee35015b2ff3c87dae3f6c5d2ceddfd9aa874798fc1acd5513f52d5355da7d0fd70e58729745f2c79e070af33c1076e7f2c71750a7dfc3e282a69de4f28c22991bccb200c456f07dd9f3c6804a79c2c67d218faf83ce8534e5ac7fb01780cc75a607a5cfc7c6a8179e2994faf293b82804124e6f8443e7f1a8229c2e4f541f0010f7480031bf8da77a00c60e00216a80005266022021030a1c40394bc11224a684012479a224c510e396fc5389c619b3bf362cfb4cec2b60a707ef9fd79fdd7d53f9be215ce3769d0e501373868fca8b2820c686fd0ac184304cc4a4e0e6ef26b3b645f31aca841888ba8a44e66717396d622aa87d58daf2a964f2db3326b5666c1e469bf78a872efbd4c7cda7c1172bf14f1a0805181648593b428a9a4ab2787102f5ac0d096a42163985421a9c19716f7deabe79ab9b937872f49e6cccef8c827d7d513de49100aa56a72c6574c4ccc7ae922c5d6bf9fedb5f8ed11ed640add2e41a6d0e437d41e9450c0abbdb8f450af6a7d4acb4a3b506b095e971c699e2ecd3a3c1d8e3733bac4b8dec4d9622e6902b0760d172e35f09cad65e385f460ca951b656840c365c7d4b215a787559330438c5cecc3cb39e79cb960796bb81c6980921a58546370ace8c2b18485332b3a576139b8c078629b5c52d48ec8d4d6e4c82f475a6af8d616309f255a76fca0f26486b3a9a1272f39a28af8d09a2237e7b165063e249f5b29dc643d39b40dacb54586a7b52585963b9e4df304027bc0b45eb480e30693a44ca68b45990b18aaa6aa547868a6b4c0892ecaa0cc88dcb0c306a32a5f2f4c9133a4ca0b407c6a69199384086b9d77adb5d65a7bb3962b3e20f45f1ee05f6bad0e484bcb138ca58de870d4e6954fede69c69843a77b5b448e57befbdb75ea01cd09edb9e6b6e64193dc360b22cd76a6459bc5a6d2bcbca25b5c88a701c9f5b535af04e8648a23c2f312b886ec832601714142f55b6c223a157981d6456f34c2b0aeda906b02a3c6925c2bc105684481599d719b22732285b02d6006921066a0e95130f33b070b2c2c518ae2533b822526bb50659e07bf0bfadb7de4d1152a84f62f2ddfc80fe24a705c0fffedb2a7c0f7e53d27c9daef63a1d88da83e0d456eff353fcdd7a91dee75fcae42c49db039c54bcb609a23b05ca69d7171a3cbc6e923f0077efc539e79cf78dacef0404cc3fdfd3db2bed835b7fdfb7c39b6b9eae5564f63cbced12909255eb4d92268036e7fc37e7fc38df9c5f8714678dc3ac826af7ecc1612e435c1a91738ea002caa95862eed993f1a5db5e1c449b487968b9780367413856d1c44581428944c1e9531fe09c39100472d6dd4ffd2ad49bf86b3511e3b50f71fad3ccd7973a5413e500299fb7562b8f42542e12884f2d2b5bb8e573cb0614bc87e01ece55f6f0aaad97efc556bcf47c933c44f0f8b8a3c30e550e5658a86385059d3c73e2c84113470c9c2e6faeb889d2e6091b236b68508395c6069a2a2da455793ab3c7cc1c1cd494412353868665cc1431596190dc10048c0c6737bec830a3f2a28cca0a5eea7461c3a5cc962f5ab2908565d91a538245880d3caee0b032a38a18141531156276c2dc80999902468a962854bebabc98740de19a610b06ad1a59615150c2563cc1e3044e933426619670516225c9171227478a18f951e48a48d51030a91ac05a08d133033941d200194383971f36f8903203941e477800d911830c5631b88035c5c5d514143ae8c0b02607191c662f8cdd00b3d2b291a46a06543b6abc40636a861418535252c8c8c185362de02075c6025994580c2ea825306a78d1c3458e271a2da2c46011c569c51da7372acea4b881aeb085a2a8b2c74b4f933c44f0f8b8a3c30e550e5f2cd4f9624127cf9c3872d0c41103a7cb9b2b6ea2b479c2c6c81a1ad460a5b181c6ab8534afa7337bccccc1414d1934326535b4b1316162b8c230b98108981f67585faccc649475c1f0d2a5a2cb1d2e70b6a0d13286ac2ccbd85818162e1b985c2162e547152c2a566232c2b8608071a99872470a9c2868bec67895758d71856d71696d31c922c2801f0bc0528015093246d88221c2968a04dc39826384a6680c02ca428c1d20cc005c0560424424841f20607d603524c3032d1804d05221746707a703341c8c1940996e4c00619bab64f24402f00300581b588190119405e343960a0dee00c1f180e6674c87b2dc984f188eebc6842462fb31628956a10c100a0cfd4171aae5d1733c36d90c0e7381bc5810bb0702da8d7975e82dd16e47c2aed62ae6d1b0d61075476bad44b592704442885a6b7dd2c5eb83f8fa4773eb10d56866d510f7853190ea3c737975c5f6d22ad2f6cbe99c3bfc9deebce79dba9acb80b946ad376b70fc2074218e8870101169ebb1c193681f85a83b7af4d6889481732490672dc67877269d676dd5d9890b8e7192baa894cbda2883102205872400200043160000200c0c8784229124c8336dde0114800a7cb63c4a40904602c2398a821806a2000060100401180400180a00c838c58ce2015fe65211413b3352a900a058caea34477e708bfb90fd41599d58cf8ff0d56c471c7aed258cd341cd1573d83cc5222acf5e95bca3267f55ee7392165695e15cca64555b1cc90ced2833cd7351d6923acb5f2bd3640212d398ebfb3e56091d6dee110812b0260f26cfe13863029f96f8d05b5727b58f7ac7b2062b7fe0c386bfa01f8d74d4a8941344696fa35bf209bc5bfa71d05bb05340227c103421b348661a38aa69f1600464455263a165a0f2562493c4d5b21e34c4f29bcf7a02e82f6fcf447202aaf1f9faad5d07eec41c5cec59e60204eb9bcac601ba320e8ada47781b1c5da0ebff9d679a700c888aa6e3082dc9bd959823b936e72e1d01706fcedbda2a41f10beb81459ee816aa7aedbf0f12943a121c820d114fd46a8ae72bccb8dc95fe56e5e3b8b00393ee7713202389ee6d0c7b0a878d203427fae58894d5c28096fc1e057d0dd5ab168364a5ee94434853774c229556cbe859f38df18c925a9938898af92ae318a17e040a33016f680b9f4a65ae4c7e34410fee47ca1b0a4922f8e031fd16b4da0adc83c0f6021a13a74c3f1b96cb48785b465c43c5dabfc780900f143f08ee5ad99ce753c173d69c0f8976d4cc79be204cb31ef513eb690d7434ff7e73c767c7be5e1aaad8256f1b910e5fd35dea2e26007a151b0afc90c235f54af0a2cbba3824df1af441463b6358e457181923b7bddfcad736de4dcc8e5a5054f10c86b428472062f6c36210bc61f66fc5048319fa5f492a063ed5cf9097789fa225b1face0a581e29e0fa55bd2df7f31733af889bcdbe53c88b3e3fb5a69e840a3e95b18f2dc77aaa07bb0733d8870a8a7322dee4ac965dcf34c6211cb41219ed2ff2ceaa9655fbb9d3dcaac3a61157c5943824758bc92266cc7ea221d6489d697e7e914181e956e007d9f17cf16bf6ac38a86f14dfb59accdaf389648f1b02e7d8ac667e4742148a2ae25a976bf828cb3e48b8b7fb1a41e6b03dc78f70c5e1be222a584188c3630ea5cecf203452dd4005c2b4ac1f0382d0153843c7031e3426e02507268cd33286aeb846c30d5cdce7467138b6c1abb366d5fc873bec089c058c57e793d67e6a6349c8057bb81d7871f8efe1b558a1572911ee43177a316dc178d8e924abde72025b063a013723746796e9b1a5ce65492b41ff375c837a9bbd7d34bb07b2625ce7ccba5c732fd135df6381c44251ca045b3cd8c2d9819d0e730a86b8efcc4fa7901c831c4c6e1fb908402abb0aa65362d090e47380252bffb7c30dda6d4b48fb7f4025414e789d0fbf247e26e1740050edffe4533fdbacaf2128191f512a0460fc3860d29768b79d77927166f780690a9960e6bb00702426e71bb6538bafe905ed79ba63238554f78f4927f02e629c6e66340a42defbdb430ab503f1ad3fca1cd375da4a1aff8ff6eb8486061f0e35430f093b44ad7b70b15c00ea6ccd14b77acd8a1b82666790ccb10cd30d83fa044c806d2d24ff48f3d426ebd01f501669e6b445c228a564c3988b05533688780f25dd841fa0d760fc30a0bb6fbdfa23038f5b2baec1d35e76e7b1d678b6ed7a40003e031706224b71fb800778cb9b7686e232d3a1412bcb0b40ce9628a7edd82da6b4def77128e160e376f92341d136806e632406217fcc00c114e9253ff607ea4edc3f3e7c03c02a5e4616227052e2274bdf92faa3a3975bcefb2f88b25f25b5d9cff473efd82c247da902bec5f3b03b2b72f61e67c16617f5ec5b9e9d0d8502a5ac84a399d2eac40201535b7d025da0aebf57391759775eca41aa5045a72e61b64b006dfa00ca375a28c3629a3dd031563ba4a498087d714db3fc4d1610882a069a3dd464ae4cb146c38ec69e916843650ad61138e1aaf88e15c42934c4a9227f2ed40ca41e8e81c6a65ca814f94ee43a1781c522f6d6875b989c149c807490fed54b597c62a188f32be2776804530e68151a1a6385c963fc1723234fbb21cfe6a77a105acb71605b0ee296040bb00b63ad196fec647ed9da87d0682ab1ff4150732994ec2fa9a7313008d64284ab92e2d026c450e599f115edc78fca1f89c15d75b62d8b42ab6f914eaac08a226954efa81d3e4c56bded454f4608b43ba197e87ac4ada850886c5f46f030edac93f9b93934cf7e8edf058e735e2e98117f6dd4d0232e6fe50532006a0da008739852035da24192b5a8ae41761ad9b241d98224900de6869d323647e6e8d8a489ca33e1dad99b14259a045975109c0226c9e6d785a2923aa9b64b34baa4595efb5ea8a6807a33562be3a5465922cc330574f584c7660ab86bc375996cbc0dd34e900eb0da31f3a6f0a464244fd847a4ab0b6b0901328924dc38d02d2b604b7fd1fb7ec2b4e01688a72f3666fa9484df6a40340defc7863860e0093bad03047dd1315c1cd85f3c4b57c0c1e2ac91a0137677990f6c77a2b6082d75efac48402b5c06ed147df57802a476cb5ecdcc24ab4bf9b5097ac0b25f527575b48fa7eb9347baeb1758cddec76f0a284445499863d6e59333b3b2ff2458f9a63af70a84d45599f9e53f68db53ba08b4e442dd3f7b6866624d58e35887062d29567047c0b44858ddd7b4534968fbaa21c871032568716f1a6cdb4155cf624f842dbb7d809240d6fd9db871b688c6a212867744531cf110220b88bccaf73f8dd8d4de4d14ce809d281534b32e45a19995045f5526ee4c29fd998d68130b2ea4190c3b1a99438895cbcaec45f222e99d9382a43f20e82a389d6966341e09336a7b9159f7f5456b251b86c8b8cde47540a9df0c8ab69229953a6bd7f54b3f7016833c5aa83721d5eaa87710ef010a501c1aa16bf0ce3d543b07ffb5a99a0183a67b0d27472256ed449d6a2431201cfbf1411231a5564c029f067344c3ddbd718a78a6894edc5f6875888b77c90c274f09aa50088ef2859d5304da6ca840ff7d83f8f8ca374ef37b1fdf98d0de2b7e9febf952375f07f17356beb8e2eb7bfc4392ef1ef9329e3fede2f3115f4ee18fd4de737ff78e48fe63e0633bbea9cdef8af9f8c2374af13b3fdf90e07b047e5ecf975cf93a889f5bb91757ddebf9fc5382ef1cf8329e3fe1e273115f5ee58f54f9dcc77722f11f031feff34decec3bf1f7f8c23746f17b1fdf94e47b05fc4cc7975cf93a989f5bf2c5355fe7e51f127c77e05e96df7ee2e27371be4ce58fd4f9fccf7720f31f031feff24d6c7e27c6c757be118adff9be3713d87b44fc5cc797def93a989f5bf3c5355fe7e51f127cd7c09773fc29379f8ff8f20a7fa4d69effb77722f21f031feff24d6c7e27c6c757be118adff9f8c604df2bf2b37abef4e2eb42dee7d6ec45355fe7e51f127cd7c09773fc29379f8ff8f20a7fa4e6f37fbe03c97f1bf878a7bda9a57d27cec756be119adff9f8a6ec7c831af17f335f6bf20d087e2bc237127c8f989febba975edaebe1fcdcc21755f93a9f7f4ae4bb235fc6e54f5c7c3ec29729fc913a9ffff88e08f72f23f758c737b1f07b111f5b208d8d31d0f04540c427d27c7f99bf69f8c2255f03e51f127c77c49771fca9bb7b6ecc5e4ee58f547cdecf7722f01f031febf24d6c7e2fcac757be1195dff9f86602df23f0337dbef4ea5e0f699f5bf3c5155fe7e51f927c77c8979b4786285d62979088341c726559122e21f3f18db9b0842c3a5ad075e5dfd0cb37d1f842467e9fc05ff7f1f10df60a56ed1fc67cd5cf9767f38bae7cc7906fe5f1f3347ce285ef49e4af7d7cfc86af60e53f1bf9aa9f2f9fd9bee0c2bd73e45bf3f9390d9fe8caf714f8eb3e3eaee52bb6f21f46befac79767f8452e7cc7886fedf173daee8997ef3d89fc958f8fd3f2152cfc07235ffdf1e532fc822bbe63e45bf9f8792d9f70cdf710f86b7f244e5a9ddd7db5a8f631c57c57cc97e5f3cb72bea890ef65e8f821b6846e51a17c4c4054b9f1424511f86125341e0d03f1aeed645981b8c6ee026d4a776ecce3fa3c34c29ec1113dd1cc1040508a91223bf27a52522d3fdf3090ee2c6048981284dbc24ae7e4dfc5193db5cfddce144ba09c6c0dbf4d75cb3d4ffb8135be7e10bd154368a4702451204a28347dcf9c295c5ef8b2b715b62dc30a27a9b0274f9c38e7952c1d829495082e4d690fccc7c569d558816d7cc33257a8442c93450654c2cc57915ab91a7a05ba21ea3fd861b6e20de7745df4af2460bdd3a24be2865abaadabcba9330f99c42820d4d6dbbd6dafebddfea128f17bae2999baf77a0d2e4606c034e202da9796320e706bc68cfd228b456558fd612e640718d6be1f4ef8f5b0e1aeb7fde6f21c6e5e6786009d224332b968c742f24c33869d71f734ab068df54d186886f94c08e7828baa0ce225d6b539114c12971b5612415d46b457ef5445006a304420b7d31b9936cd019f14671b019792e45693992527d1f88549cbff35af822101fad962ad06e87b5c7ef3cf776ee4dbeeb355768761906c6337a9917f181de39012489a3d52e5803b9ab61efa338a74cf41086c0c3b520853227192b5f62a845cb4370a2a6cca1586266597661ace8f9ae55f063b948955aaac99c353842f31d60a00681968386f217ab67f465bb10e759054f325e369314d8f008cc81ef87efe9a91b2517a05d140129077ac78c14ba1f2a788d4d034e503ad13afe3a3b1e7655836494818be5475ab2b7682e839574605564f7286f66b18ae2daa138b3440695c1d7883d3189fa8ea390e31ecce7ccff38339bcf5f3431ddf97799f75da50caf74a70fae8776c3e18c2db5d80a8a3f898337530af7bffc1fa2820b3523a6e3c4954a48462299ee15d0ad3637d9361bb7d77f4353039c962d9c58ed5f8d03a8e069ce4f893f0d07664d3af30e73124a1fd1d0de2191de8664ae87a01b74344cefd8841653033ff8b65f3c5cd8eb5d872742177901e8a2534ec439cfa4aca9cfd11d16d353414988c2a671347ccc2e64cb91193bc6c22caad63acefb9df0f09ffaa296ae99154479f8ecf020d421b94c0d98e1171bdff029497876d6fe1b2b7ebf2571259e2aba631e943b227d609b3acdd264a0a5c2a417c6c79af2311e7f4db240062d79b195bf0d6157f320014468046d91a432e230340416b19121c98e7687e15fc5eec08012784afa2df4b14194f20824ca879882643b97771cd8fb71c40b11748db85139428a0768b0c62c03e501faecf2ed7616ae96de7a86cdf7d28b2d988e9ff960109143419d0872f4abc597eb5d4bc4b42322b7acbc80f6507f374e73c11bf3b741351f0f74a6c35f14da181ce7150178f0f7c56f1b2c163c30ec6af966d67f0a0716d7036591baea50d61344e20a0c5b2aa627ff2f480e3d3f43ffd9684c705234ec62a80bd7d3dbd738f3b1b32a24a1370be97ff0ba0e3ec9ce99bdcf4bbe2814392f4e01e9e8c79eed986b9dc81d789961585dab60ea1ced196d0d7a29d3c92c79eb011a5dbe7a23a8bf452800cc62934fccb0fbce8043363b4044cdaf25c323ea4f194017f232007b11afa21719516bbad8062fdb9a7526b2864461f93ff036e162a0e4c16dfdfc3d0752df8bc8af7ddddb55da4a7cc122b2c4fecb1de5798e09394fe47b6fb4e8cb8c82876be1baeb169451bc87f697143e5ffe5f39bfa3b9dc4765ffdef22a67f89cce0c54744fbf262a2b5430f1c6bae0a60de24eb3995c4180cd420eb5c8670adec34ed90ef0b185ef114ddde0b98e43da04e5279ab544f8b5c0a57236cb308f4bcc08674ddaaff8cb3af6a14600c8f03ff19dd3254e21a9709c78fcc84897c5fd113b7a1b5f8b99d1a097b55ff2dce57a1441aaa938ae151200c3c6fa9584c980d846fc7ae187538ee1fe14afbc3aa03d3a18e5b382713afbe08c6e185595077b772c1af88b6d23222b138d13ff646932bcf7cbf6bbaacc85e27275a27b2dc3eb72c2e084b316212cdbf053fd52ad0c86d7787b80064a96e140a269f45cfbe7a1c05343a5d3b2c853c7974b5e203492b179fa06b2514e562783d1903b1eb494a1fb571358eef798901021b97d404f38005831141838cc403adec097d25d8cdbb50079b5cee2d89b46ddb315c08d9ffd3a5e71b18d5a8584b44a95168c155f9d6ff3e60a2fbb1637fd5a75bc50ed8a6331f4823a4e3a305d2b000c562a4075124f7973a9d3277f99094302c2a4232489b0aba0c1e47822d12fb0a650e4e7a0d21bbe8b2552472bd450793efa23ecdf8fdfefe5c352f6aa9a166f7f475eab897cfe00568eae5d15f72acd28b61858e594e72f3fc91d59cdb80ce32cf80ead18c3852cbf305efc308a66d9f80838adcb3891313bea0386042db6f7a03b81f8350254231772698f7ae16b73fd4e97850d3341480e3ed0f0a688fa50a4af9fe4575831f324efee32250698ccbfcc7d9bd7ce6e0aae8bb4e3722192dc2d52f72f91c5215f55fa741ffcfd5c7d9ad996a669048b453c6de16d0e3f3a4a4eeb78282280ad0396cfa7a023a3c1fbacba888ade62cfa2270d13bbc949b42511305332a0c57749222560468391988dae280888b647f9c2fbde8228541e05b170e259d24d08c73247454b248e82da454d4e86482c4301e2025b7aaf9d18e269253e04275295068138255341b720041eba6c4037ede770ce3c02093545cd313da1fd89b4665bca5c3d8732ad9a10a1add06f9f9b93080ba1a9b8ccc99106e202fabebe2c1bfde636765dcdd7029b72075ffe208bc881a7c046892074f31591252112c491d77d2586747ac5d9c6a762482cf966dde4ee01ea4c6ed94888e6b371ca53ce93fcf8bf8d9b17a1c07c6cbf5ab528e7fd434963e5f0164c2221b403748b61479e2b7e8c7d59a3d569c29b7f184ce59f3d2694a388722cf966fbc4bff0fb3a883068e00ce258e0dce5fe79b95507239880cb00f0389037f0350690945e946a23afeac24ee3a6706da7e043424527c15ab31f97f135972eab453e8c7acf5f2387ad794d653401cc501b9aaf2032d9e8da9d2792dbfbeb0b5fcd9f16963d7ab1a6b37c7c2f4407e5104634a06cb0f0e43c31d8f372a8d019cc2b3e776acd95638120fe3e0300f8374c01590ba942deede592a2403900bf2e93a8e26f653d58fe49553a33be4684f491fea4e78285b7ff0c98fb853089ad1b0abab1fea004eb14a4c82b1bb25059ecb7253a4583b79fb87f256584e6607ed4a8fa2fa0f19fbbaf137f97320664d43500e5ff713586ede17f8ec1b595135e1d9148581f5becd36a981974a0c04c140b148db7bf5e5215223782b6734d7e4c3900981a52b9c2aabbc15002c5ba80f0149fb9d9348f10e730ac52eaa35e9bdcab8438ffb0a3b3b64b249abfaea1d5f3c7ca46fe7b6d2205eee750917bd255d6ba5cff2962176a95adb979230d25a1105e0a75ed2f53053d358cef1842915a53f6466a49d98f0c93284aa44aefadb4ecf4a3054c32c4ecd12c1311c6a8dd80e1c5c7d2d8c4f4cc44428c8c112a7f516b2e9127f3a8bfed35f6e0e28fe09746196bbc2423d2bf592c0f08d067a5f82e4979800c3d838e7227e2404835b53c5fb40ef9840a8bc50b41d718df44c10fb79079a3e2aca4cbea194e343ea6b89b69db9f03435707e9a2eea5d225ed0885ee0db089e52b669c8eff0acaff50e0d440fd54bbb1c734b80e3c43b3a0e31e09412dc96f113f75208787010cce1779317b277d4dc789bc7583915390f7c75da794072813b6f88960a3896d172bf8b3c0fdc64e706a3917c7fd1620314a203a265ce57fcfbcdc280a820818f81ca5ca67cdac36d986ff4d515291f906cc5636a600b310c7bf265a307285993626a8c77105985ecdd5ab2e5152c8117bd9406a449cc3d722dbebdaec73968b31255700fdfaad2088f55271591640b8b810ee3bed8dbceb215ce432a9461137e727267d86b5d32c0b61cf3244bc49f9f5d61c5000191dc8e2f40be7ac1682cb3189902c98a16f8eb8f06dcdb614153d3320bc88000c7014a740df2a0828d3b7dad719fe82c6f0eda9fb1340d5dbda64e82b77244a58397277713f9cbef1b0298ce32b083b08c0481fb719545374cf6e4225bdca14f70b0a6d06f571e2200ecc8e143a5af93f350a26aef49d73f06d796696eaf8fb0c473c288c749e243253ceb26edc17b3e55610031f03f21ab51b87e394fd33440f1bc974369bcb71d26b66f264c92bdabd1f12502fac275862f6e0c29e7f42350eb456a392baf82dbd5c9b98ff42e7fac308a414323e0c33946f0d08e25fb5f8edf7ee7d1889254197d4407a7a08f08b5b1d877afe5182381b98070b6c45ecfbdfae3fda20c2c0555b4a2ca04143322b0b07f7353b53b548247f1307e89640b6ee29790bf441c5b47aa380e946f2d0ba0c0311e609d9c6a37a0c1cf096a71657c37170300251157da57221fde477b321bc13adb41bdfee0470459be10963ea6af6d8b8f367e5a84a522ed551d18c16620fdf8daad23fdd9ee721de188673015d473083c00bc02595443c8e6c1ace46bbb9eaeca33163da5f40365388cc085ca2ccdea315a49ba3b51105f26082126a07d7201b2c0fb99b870a05d27451a61073fa4f0e06e4fb24b4a90bc84deeb957dc572263b3a8d24dacfebd57c34016377862d7c8f79e3b259298a08e884fcdbe5fa357204b6e7a969966798b9b8b8f7f54a490763ddc6febf1f1c8c9d5412943d4a6b2a7fbd321eef3eb557d4fc74f0efa57cfc137b8527bcafa321cc75b250ff99649e1ba849bccf725d3bce2660533a794f68de777e48eed35d9eac59f59bc90ed97328b618316bf6726e45a529f165cf30003c4f958340ac59847eca9a1d3bf48ca719f417ac4d76f320222f06c1a71e5bc49261bc47f26fe11e29bfa27afca4a3e580263cc1b7ee008e23917f26bcb3be3f5e6258aadd668533f801899df863533d495ecfd3b8f3e8961619ebe4b1064997865bd90c4296744eb2e4b1c1bf3c89f09ed65dcb89e4e520f4b4a544caeaf8320c52365b01becf6b6307158932644e6f86758a1bc6fb6a5fe74be13ec7a669d6b168950c357947840515c7e0938e7a98e525f7ed06a6893dd2387e8729147a9203c0230b62d66a017a70c05045415e369f336d0db03485e2373932b49214a00ff70bd5b0f008e0fa5f99629e90f208b0eb5bd3410fc2ce606cf16c7a2c4504df8c3bac0d01e9254f54d01e0d4fd7f90d4ebcf895a7a7e9d0066bd887016c3031ec01c683dd8c92ebfbc798f9f74673f6300966e7bb5cbeecb6f23db648661ac2c6fb78a6caa175439b81a0e5b8ed741222e460d9c6167f31d5bfdc74bf32606325e17fa95d01d113c03d02c997427289ed93e7650b890f73b907c7f240be45c1358f56a3a6ea907cd625cf32b927961a53138757e56611195a5641224eec6e1420ef89da689f86aeb9d61f92cfe1065457fe9a850a8b490483e4836f134457c33910ba43e8d0de3af038f46fb7804baf8881ada588ea950110209da215faaab832d1378e9c2a4e52eec504c7ae9208f4c90854ee02f70cf70f0f8078e624537918c0f32b6607dc9f4483981d70fbd65677f66f5c347a90fdb34e50cddc5134975b039b5ffd852928a60b8a0a3827698b3e7a8207ec23332aea8d9dce42b24fdecca8b4daed99d0a46aee4d322810ecb2b67a6a63c0dd29d93baba39ef40fdda966a3f2a646debc3c504323a8802da8318bb52a1e76f6b04d9d829f9888dadfc0c1e840c5beba98812c818893cf4b509dbbc29043b36ee2d8600042e405655f549e6c08b0a92c2d5a7b2d5fae5a8cca936f8f8067e309793a3aaa82f9b74e3a6656cc7da7ed26000222b40ad21f0de54dd62281147f0b566e1bf616c710b01ff5a3d61e16aac2400c153b77ff1666f43112858de0b461973aa44ac6d38ba99f5f89956a5dd81a5deabad3529dde776224a5c3cef001bd000888b484766020e6a4c48ef858500ac84f8a456047ada59a24544f84504c92614e789d129cb27be9109bb9a41dfd876d13c113890b92bdacb14292d3ed5bea86d3a03a52f3b4e3e544668dde8e3f38a532305a22e08749055a4566575c77e52f1e8579d1132e4c2ccbcfcea442705b6d8237bda0dcd3413304c3105db81a59a5c20f11fb8fde557b4e706ff7545ea06d01af6ed4a02f8800302859439ce2c0a001c07ec28a51b042bb9d28dc249cd311e31a2564acb490ba8704126bb0565eff2eebc26be19d397d63ebf29551dcab70abfba7bd5ea25ede7a78cdb046fa4a9ea30b835c6d798e294d43c2a5f6df9dd6d8bbc5170c2508ab6d8394ff5dcec30a7d88fdb50bd28733217a3420115aeb76727f1530f72a9192110d1ad2f1c400a1d60d93a5771f2f345438d6a02dc0cce83717c193b841187ba3ff91c7544b481debe86a9710cbefdc8b2f92abb928377b5a894a823c35acaea5a3b0820b037799d15b1c50962f0efec9ce422441eb7b60537957086d437744b0e360f933770daf49961714d1dc47fa4a2c24461b29231c094d8f8a964dcb232bf08ea2634fe10baf3c145104ca2626703d1e7f52d9e6e82bd6535a012dc07f2bd9899ce23a8061707320075c39166528465f61373fb63c7ef56382809553ecbcf5a3a6691751fdb41a366ebebf949564fb645d6aa31e26833a23ee03a6a7eac7720fa2ef2717f58dd71aa9ead3fef388c80949300d2afc0f79d56628d03d3dc55402fe8e5ca9d29b53f13111c3d2c9fd7b246468ee9bebe2a85ad13ba45273a723198c62ee9f7e35e4f467bd4fbb4cdc68a942d22cd4a563e4f2a17e7cddc24e255ba5151881c825f985bfcf614e2022637354a62daf8e80b5eb3f7729c03e21a9826a5b0e57853606cef41bdc831ccae9436c2e45b1d00b02a20cbb6d18b7acb2c62b85fde5580db9f3828057dd5ae73b2221572d092216dbe893388082bb0b70536e9837382b253826755103f7d83571d5c6314d5f1a38ee238d974b190be1205d82f2e2f0472e6db6ac85cb91a80a9cf30d3a698b2aa12f9dd166cba5db312572e66f7043e61c05dff28859adecfa07f37e04aed035b34e636ace3ea02f237c6afc46f629b8097ccf981ef53244d4810cec8859aa706fd108e6db928d93b2b29d0849b1df85b432260103e33ed5490452359b9cd55f51d91892030cac40083b4b8198380bf45535e327765a97b1f3cdb317b25713b869c052f19dc0b41087f906cbf1d7da03d98c148308414f0c5eb79095148da8c192125aa7a63d8d2a9209e94822cd32bb76afc18eab3105cfd1d4a3736ef033dd40dfa2d5c8dc60b83a7594f71afe23c23b00e662eacf4949442b73009fc044960957c1434e5dc1b77845dabc67f0bd956d59f47b0da571553980012531205deb67e1dd06d0e857cc5a66e3635c9487e275d568515e5f0fe3e81f0698c4c101de68401685838e6e6253a31f2976b07ce1fff5994d99af52b4ffb5a6936c4ae2715ae969c588aec008a588f05f04da497d20af4785925926624c0a5173b9450093b73220272e172f6142d84b1075e88a5ea6cc989598a900c880edbcacba8e540861c9bc2924c47efba8bb680781aab95959827f48012dabdaed7343edb4e821749706c68d5e421ef6d61e7c2b2f5c2da3d9c3451b40edb91f34042f98c4b550c294d5d8dab972507a2f976aaa2092b7ea9db98c0c2e40807ed0478508d7ca12cbaf5483c305977f9c7b368cadb7669a352114e31d08d81462e3e647b2af19a8293eeedcba6a50a6178e90e38126e602e6201f978486ee9f6679f7195609a518ebcc49b71c0dd06ab21fccf44d7b21637e78e62ae84429c8bab6e4f2b02407cf208e86684ca1721220ab1828db88cfa7047c33159d71299924c12c596c042f18db6018975fad1f0dc66b484aac711e85735b358a7c38a20f4361b8c05f359bfe4e3e0aeddee522281b9377e5c04b8021e90b99f3820b08404e9837a0dc50e13450eb587032b1b67ea8921078a2501d45076366d143fe90b07c244b6abb84425bf3aa1e05dbf5e6131b46f57c7334b8a842bcab4af377db6e83085c144822ef28b494c9d5698eac6b9cbbbb583ee3400a7241cd7851681574bb84d6963c898177d01608b4cb830d12c1fff461722362fa39760fddcaa4b81ea941f9da3d7fe129f10bb43198006fa0e8d6b0665d740f0dc89a2deb186f97f252e33229cda6d249eea1e282251f154a94eda13d6231f1735c5d660f44fbba927ed2019c43ae06d115b255ae050c1ec281141c8ede413b35921f68f0275982e39437b55c7a23de18911255f815f48111d166ba8f2ea6693902dffbd6e920aab85121b7d562a243af426d78cdeb90e228f30d7953b0fce62ca71a773b53b95ab83028f9c3827176b0a6221943410aefea338ac5d0af8f20d4e9db0e5e7811f50a3674902cf23f66db5a158491c2c615ea2fb8f2169e19a620dc66e54d9d6caf9a93552b87d4c9ff49c41a3a66df16897124b9875e8dad2c13d78a934e01b81c0bca62a59bfd90d7174e4dfacadbe10e722a4af15bd83b94c43fb1080871a1c4e26ec6d6c658ba1c9782233b25141e17679f8d36c12b89519f71670e1d0d50f7986632b98a235bebde880f92bc52b8fe7d09085017a42fd37df918b1375c7b53d684d01c84e8294ab651f4b77d00bd33cc6758ff5b6a33ea4c26b99d317b7d42747665006fbc4dac0de6457de96cf9acad4987e9f07f18c7623c4430a6d6625e5b88a416c704381bee281be55aff08118214fa6998524b630e6721c812294a421e5efa4f6762c5b9987b4b6b71c2ac8fcb8a20b7f4c1c4beb733c46d4ac249e9f5b35daf38534b633638611150412949a580d09f24b5a25a8e1476bb2fbbf5b26a4dd2b135651f94bfef96432d23ccac094206f9bcef6e43dff9aa11972315d95b58895732ef9d1f38bcd8d8b00173a1f7b86bc8664206ef04146742f037f17419224535667e8c92a5a5fd6e02f12766e93f93883cae712bfcf88f04a54e8411673a223a458b7593737b0572ddac77ddb7e605e4212797445af08fe9f5274ee54e517617b12706019d6db82fef5430a2c79bad2ad08c34caf5bc38f2411937ffc6b33ebfc9c49ec6970bd596a41c1976e361d6d9de0b220ebd2042a412e67ef032ad54e0ba32b9933b7c5343b5e65c0e86d525eb92604e1999e5488ceac4d75cd86b29b6cf1b4ff629dc50ab65287780e6b69dc3fa3d31658fa8ee5ca05d3ec524b2535a65cfd12eac2626f2473dba3949a274e8db6a5a2129142b56bdb8493f0c9eaee7bf77036bde3a3d817787761c7a21ae13805c844faffd855814d5bc0e131a7cc8682e3bdf089864db7491d157ab39279d1b690918bb78614d624b85f3133f5a1f2d4a4ceaf805dc36c0f1ed199fddcb883f5304c4b0dc24b8de6e9027fa2d6cd096cf80a10a0053e395ca0747a6fc39602865f7ee261cbd962fee29c797cc16109a58b8e56e3502af402c8a659c881085ada1087efa7512c5037552de75078505d9df3e108cd41b7467f84f813d90c519e7602fc0268567f9adc3c4c5a1060b1090ac1cfcbd742c7086994067c049dd18201ccaf12d7bce141458dc37b115457a3da3c0cb6184b59fd91c2bc31f2ee311bc0ecdc8f2e4e02677c502479eccab0f50952fcf61052cb6713e3d3fc9d44c71a86c6f5db8569bd825ae3600c9513d365d15f02d380853145f9f61c52a9f166fa8ab4b0020156ea4d2b9351b8bc05bdcaabe43806cccce6383d1d8bcd012888707eb33889d8f5e244f20b0964882e2856c8a8a1959fb0ae898d4e1d6e253b4c5517a8adcc6a1d9d4e95265a1f72e2791d761c5703c3d929e7c00000532399d8962179e8166cdba7057b891821a4567278a6ed40212ef2a4413b58248bc7563ba9db510fffb7cbf4d5585df3a18360022cec63b86e1998f54707523804925b31d2712d8d79edc6405442012b71ca602e7c3852cce9f8813760b0bc786b9bb214cd26e31a0c317043e3b77fc588c52c2ccbb617a141f6543495f75828438304be78922e0eddf54a324fcb5d7a11f727429ffa0fbc6a3588f0be9dd5efc53fd71f6478b9017f0eae38fb069964b8459954d360cd5c376ac4e55c1a4797ce5fa738c04804adf5ab8e5ba273a7b710b9eadcc8e8f2c034915455b98977383cb80ce864016045aed018996417b2bffd98e9505ac55f40770a1f6425cd51e626a865b987f03c660849757f7e0187044fd320750cea0a853812d586af25d0cf50034640ab16c6730218f28d3e55318f0f7529bbaa83b478b3295b4838a7984e1cc56c5bac4d8564a0ac10cbc7b138b6a69077556a7f0e825019aa2528976fcd9dc597fdb525b60b06870eae57b4e4a8bc574eb8e5b178cd6f4de3709f984a4661972737d446d586e896f68af5188643b02ccb79d958a5266deea39706ae98d8d420f1673ef949b7e115f31565856b6533c3054613164804044a3bb921ddfe2952b602801525d3aa4189ec284b6acbd31d4d36347d844b8fba7266ca259c6537bcf425a6889464977084227e840550527e889ea493c8362c58e39c04664ad4f6f17638cd2d25ea1c0ba4a7509d5068db10fabbf2590ef7f8aa392c2aefc016c615ab293e9eb1dae89cb2cb92eed4fb412a272c6150aad9fa17e70abaae87735fdfc94a7bcca246f7c89943ea4493af892c346f3f7f545c49c88500e99580fc3c52e3aff30eb279bcfaed3d7a92e1bb402befadf8ff3925aae9208794b0865544258a62fe4799ff73b384bd04e761d7e55dfe4eeac47875ca8dacdc9ff3e423713ef7ed09441eeaf2b6d64ba0c38d7da7022e210267a8216885afc154e79d940b0280779b10033766d33f7886b4be55169ee23ec96a914436841ef09a3e9576d183ec40f2403fccd8474138fcec5fdf230384606fa1d6b18e93fcfbf812a661e976f9482e90ff0a7b81abda80c9b066771295ff33c7ceb32a1ecaf9718ee3188f79e535905f59f4cd6a8b2c0fd8bc176bae3ca2e7900739de4fb7f970c95f764beed1d1707c9264bcf8247ea0d231c46c29a0de40392b37d1d89619ededeff33a9c4ac31881496700694951c2876bd7e9c40768d8908be5f4ba433964432aebe189247252502a8628a13bd8ea181b3d84f78c6610fbdcf88b382c28e02e78e24deecec52259fa7f8fb5925d8f6ac61caa4ffdba6bb12fa06fa2ff967f62349a6b477e996bce8a2f6b26982482f0b0d927083bd21c7c29fec72706eadd59b27c2356728fa1e563992077244e10d531c629e35b179778d564bfd54ea185936080718a38b83b4efabf0097c01f9bc6e0e30a235761cb158f053e8e63588bb544ad35d63ce13e91f62c116292048a7d73181b76a5ff151d3f3e127642fa1924012b7b41b7e069955cd0fc33e13a8156ada588a44b82900f973dc06faa2f781b19f15d551b7fadecf5cd53956f437064d5907594a5ee8b45efea0681929b4d1a34b8c3c2833a09a1515716c12d1907fdc03c18a25b016f2bab80c828d255d33d0133171d5b1040a1878e2f1340d9477042ae85fc7572054b2d21c026bcebb20ca98e5af75d3aec4b48bf328786f5d447a4f4caf0ff7aa1b5700ad4c065c8d28da12e7419b7eb543f03a0b7ad640d6b855449d5d8f32f9bd62eeb289f7d17195fbdb26bb8950131122a54c29059a0cd00b860c1cc5cb2ccbfa0925309032ca2fa9943e5485bb4a178bd2254043ef8c4218e81d4c6b2f09e6d9493aeb04bad07ff2cd19a95dcc04125be12e4d2f256b79c95c5ef2d2cbd346e962790dcc3e09d080d1afee5027c853e34c0cae9b523ae4a30e994a0f611faab2cd7ee447ba56b2c5aed5ba5ab9742e63652ebea28999d90a2e5038695c2e9d9119601e0a2ebf6228a574329413bf7e648bbd725dad28855ee28a99f9886cb18b34b5c3eebfc8dde2db675bedcc4b0ea061696969490a53c9a87c3b1b7151ea3129d81f7dd3b0b4b4b444df01b2d54b3ccde0f6c7c849728a1ed23e7da8ed458e489756eb6ae55b9b7ce4272b865f2c76e69f4cea91ed91bf5d7caf18df49d6a96344df4575557db55dc5fdf66995ae153bec22b2b5e2dca1f64c9a4d95b8fde16b64fe76b8ecc4f36122ef903bfc95962d3d84f7632c2ae0222750aaec6f672d1df2960e190b6fd989a577b677f5bcebed0bb25ec87c7fa9bc026ad88bea026b009bc3fefd5e79233bb196537a41a5d7306b78b196f0d3e7b0ac066d3bf2d84bffbe1458419b248ee0e423e07cc798af57178f7940bcdf72f198c76af08703f78136493c8135e8e0b98c76fbb1d651cf72a17f419dcd613fbd0c65857fda76b45678aef350a96ebfd67355d5ed479f93e9f6db9e9be9f6c39ea3e9f6f39eab49a1bcaee3b8d3a665190d4afa82c0e695acb04f3ad7f49ae702ead7ca7392f7743a490cc5da4ff2d862b1c6eb77bfbdf29cd6edc7fa49e1b78be7b68ef502cd2ff8e3b953b71f6bc9fee0b78c3f79599ee33ace9feb2aaaf4a2fed81cfeb88a3a86b2bb276f863a6d1ad735af8762bde0bde6fc1a38eaf0ed297cf61999d1c4951798d17404255e0df0d2c50a221934f1618aca4523cdafd86f5cd60dac32d6e72a7d7a46e6b7b3f697c880e38b1c14e10da41f56298a0cc4bcc184063380a23f6c7ecd48bcd421970e79caa4d50f1d1684f024516c62e99d91b96ce99db185d0c258b83ccf39e7e40d5bce95a83965f322dd6c6464343293d1b38d174b5ff4d0851a32182372133530428a283f484184c8ce4cfc2505d59f0ba52a6ec820882638e0e18a175128e14596a52f441aa014e103296c9cc12509110401054328991145511c5da435cd0e7f051b5e7ead80e2f523cdb76f0e7eada862e9695637538dd74b677a39e2f07abd5ec9ea39f53bf38b52a97eebef8e1e1782fad4b18fa7e43632bf5182a37c1bf8a57f403efffef34ba736f0cfb781e54fd99ca65b2beee1eff9e2a494ed2c0c6329a594524a29a5e4962ea57429070b1886499febdb9a3a3cd255645b5eb7357dbbddb9e186d375fc310c448243f74882b4c7301049d0530a4ed1a6ec9626359a45ea87afcb1f3e4ac92eddc3de01e29d7a294f3ea25e4aefa5ec6e3c1f39d6cb138f97db8e97abd7f152dabcaca15e3383b91c552f655eba74aedbb372098e40bc04e7807c6109df0fffa5e15996e025805b25906f5f4af7c04febb09dab746ea28ef59b467a3b57760767ead07cb1949204f0731f3d706e583c76ac74d8d4d064291af35ca594527a0ae575dc69d3328c7e7373364782b40e2d13162ce0e281b04605c70021518733a929ac63cfaeb33da8e77185e72bcf0b76abc533335387eca5b9cb8db36f0fe67976dea52366191a5cd1d4211dcc0ba2d0a14e0f09e3f05ab62481af08814a17a983d0434a038d2964da4b179ecf5d767759897555c947db23dd87956749838dd22173976db173eac7d48f953eea39ae9279d54358faf4a15616f988355de8675ca63b551a5fe9f2e1291b70dc2f34ccec3e960905f29174e980635d79387af81264290bb251d72177f3b17e709c25c38a38ce9a4186116f7c0ed5f5053b76ed0f988e00c5f147dd64051362baa4bdd274f4578489f2e36e59a567d9cb473bc7b373bceb46fa777dbd1f1f5ea47d7ca16cf1d00e5fb19cc70256d4e145fae8e6d3912d769c8fc7c7daf1e9e871f3adc8fa56e4b162285bcc484ca543f6f9aaeb231f6d4236ad9282db1f2da0fca65b14d4719db077f873210d43877464a14887d4651d9aaf23d2c512a9ff48178b41560c28f77c06e90de6d02edd0373a802d42e3d90c5be22ca57fcb40944f55f2d4672c031070cc2280a43a442af2490408309276e90c58b48857a102208516481a4650b2b82cc80ca0cb0f0620930a088fd435d91b5b9744364014937441ececf8a61c51b2fd2dcf260b1135987aa6020173de921d487aacce9431d357682c456a4ab876b791d912deace5a9e32ceb7620f9a23d225e6a9d37e291d710c64a43a546582ec4487d49bb8c8567ac890aff78342ead753e7703e94f7f8bcd3c77ff355918ef21eda3ddf1aa77151ebd99cba00d8b544ba56b6c69e67222b9ad41ed466c1ef15305c9e29dd2b6938f1d4594aef20b113540e367a233c86998f48173be91675da4ed8894f063687fa12e9d2003391379e526e8dbbc66b20064a50d9bbc3f958dee3e3e1ec717ea3390716e92655677b4e4e3d8575310db6ed479daa730219a987ca3e325292e94616c97423fbd81caa93fa24d19cb5f1f0c9a48e8cf43334a4c36b7cc8c669b0a7cd56b64793fce52567dde4a1ca4f327f5cad83617ba65347c0bad804dba24e8b00e329fd09b293cda13e79a84d9d3d560c2cbf7107f0701c67efa707067a7c383773877ac3046be0a6c7fa41f93e900c237abe1e6b037f582ec38a2c30872a9be7209d079843afc78a413aca81a4a37c0381da3d5f31fbf8b14f8615693c1956d43ed60fca655811e5334837446fc5156bb887ce6768be1577ac8cabbc48f3eff83a5f7d33aee393719b4fe5355f759a2ff5335451ee1de9905247a5aa6ae9a9cbcc7c79ea5dd3d31565be1555df8a422fcfe76787fa03c2d0219dafcace438ef91992dede334259db5ca1d4592f9c9e8248524fa9b35e60a3e7a6ce50d4e9e3a419c528cd1cc3284629966518a5947eb377e8a4e0d8af84bf5d1ab1e642ac6edf5c486435f893f9c985449e0e9dcb2a0d1db2043a646c3a0bc3a8d7c08e431051ef3ce1dd12e5999d3c336374c200b4c4b3b3ff30bb94a3fa33cf3927f79dbebaadf6edab8f04879795850e4316d70b3b646f21062558224c0db808c30851488822b081821628bd20085188ecab3112d6f3089c6c4e7e5da4c366a1c3962c29b7bbbb7dbbbbbbbb5d2ea3d03b230b42dafb1b856f97724829dd08bf34d22f41969c53b0d9ed8df5afa7d560d48a241ad277f5b18ca3b2f7f7f385072e60828d2e5f80c1630e3049188901870c642082590c410c1908410a183411598b3063a84009092f428021b228bf15e511aabf8e7419600713fca0a58d16ace089c8ce235dfb050c96e872051856760084c86b2485318609182ba8b8213295268c70e2022631682349ec1d4af8bde2a54b1c5166ca2063c1940146172fae0c6105461067124b9081c61671489185c873c5cbd09cab2320f1834c96219c503da1c61113307c98b205121c20c38d183491c30862541179a811b24891c223c38a4e68ca121a34503a7a23065b0ce1750215a84007401cc1fbc582451c3f3aa6061c65b8a12a838a9a2190c0419436c09cb1439258c61c705c318518609a2882e3b9c2af32c8e84156c6175a1954eccca0d2ed374b942cd8e80362ca9841858010b4f041095e4110021555be7882a8a9c91a4320430b1ebc3252f0548748293dfd5a61840f4d38aadf2c43384129a557c8b0428918acba28c838c10eef378b1644d02902116e7a7698c2850d38b6786d11a9113ee4c0053eec008908a2fa9b050744bc218664e3a5a5046cc841258a307c9a0cd1c552139722920002185d0ec082304a000317b8a00b2f88f05ae28c2082a8c10b9608130608546440c85279acc10223fcc005154788e257a002227c91c611485500810a1092905620b102f9fd5e613a02539316dc0c142eccc4f47b8549698bdf2b4cafe7a22e2f9d9ff4ce0f95cbc4b06203b5ccc7626f9771d5c75aafb220921f193088c50657b64020199f018342f01283644046a201e5e9254a0f67a4cb7c2b5b9f19d5a5871e6b792472cc18a0f5b283d8ce9a619b6862bb90b8d2c5459a945e57eb2b56a741db24fbb03d49fa174ce293f2f50ab298cd910cc7c746d81ce93448172badafafaf8f2b0f5cf21338ae96752472cc182e62236c4fe536c0bc642f2fbbbce4f232d4f9918b7824aab524e4d47aac3fda08a833332df9b239d2d160216c8ef41fe9e224d992cec3a3a31386eeab55ad74296bcea533137f61222f216c4fed3c03c7d5e25170dc2529a55c6ddd167bf7691f8a89b4531e707070705ae0ba478f0deb6a698f1e3d7a5cf18284c363b543c7aec871b7e30bdae14d18c77de0780f1d1fd153221d98af3e221d443aa6f7007b8236707eb3d2e13b709c874b9c9b1d2b1d3a74f47ee1e894a753121f8d861ab6e704f2d2e6b48bb1393cd89cf62dc2c3a3a313865266e06a21525d09a97fe4307ef0d2c071975669b534cd2c99b63a6c6a686664542994d771a72dc3e894cdbbdb68744ba44b47b6da79421d1d311ba875a95e361f170cd0b6b4cc51e89d0c44e1e7a7064ae006991e4e09bcf40d3227f0d21bfce9d451e81de9e1a8232778d321ca515d6b5970d3b5e558df8a28d6b7a2ac43ed3f59ec5e28bd1d88c1201edeed412c97204b489c8efa56d4be95734ed4c743ba21def0ef0d0e4f87d361e87066e00f500f993e548566384c5f225ded935f3f2757f3ade863451a97ae95d367d2ccc0222ce0d0e1f456d2e1f4262e2ee921b3090bcde8373de37c7c2889e337b23dcd3959c392de19978986e918e89df9d37198ae642e13330cbb65ee160983c6b339d3c787e3fddd480e646d38f4509318d9c9439d9f6426616de00f8eef0365aeedf0211b5f3987f3f9f09baf87b33ee93cbede261c96c480721f0e84721f605015cd83a4a35c03813cef0106e17c28bff93ce7b26f7fc7b7227bac1fd93b52345fe735df8cd32119af3ea4f294673f434343323e541de5432a1f4ab9e71c57ea1dce25b2351d95aaaa39917ee2205b33fcd1e19c34425aab4cc0fc5eb651c5619eb94bb7d897a5751db2263f9a9a82da45d21582289efc000745d881142710d91b8a7405c1c00461aa88010fd89881c8deaf2692df2f9a3a54a5c11e6aa21ec23e9fa8cd0d8efebc72a2b29174c9dce0084a145b9a9041455c3894805041962e55d268125928881d94507005152b535021722b61117325892ab6d881913c839343b369ba90d8ce50d8d781d8d7a52f18544582403b3d48c461c936bf98088725df4ab6646b36b14a3adb6a6f2d0813750c2291f06cce6c4a4d4e0decc01f2726572f3529cb708de66645437373b3a2a159ddc8a6b9a91d121b11f1866729e01648fdf1f387fb0f973fbe5dfbf1a3f69b693f7efc00b74e12c0cf7df4c0b961f1d8b1d2615343d3af1340999151d514caebb8d3a665189d519a3c094cdfe06e7e2cf30ca46c97188661ec593653c0ad5cbaa6b81e32119ad7af572ad55d954a1b2f1bdca029ca177b843698b0c10a6c805425082360e2c1933090b018d145280a175240d1844617444a88edcd50d4008e2aaf368c9410fb0747496718210418339210dbb75d6b21da6563184631da94522a7725290591e020b3eec99dc637e0f687d6551a6e3d6d8ab624f399df9953b64b37b8f66ac16c66d9c47a310cf4c71873c69869cf96db9db12c5a7daf6efcc73685734dba3270a8098fb839071269e2c9db7767e6dba74dc95c7e230e3fb15d1b94f4cbcc47a0b90abf33a76c700639660c11e9e3ee6e12fe4cba92fe2999a66919b8b4670eb89dec800eb77d944ebf5a35cdbb1d03bbbba553e7a44e904c9b3c33cd93e076777777779b93a7c93b79737694524ada18af9452a652dbb36528d4f6689ae76d4fb675ddf66027eebb8772a7d3f6cc6edbb6477a3d8dcab2ede111c34e28de9cf52cc334baedeeca514a595f4a29a5e4ba636db78301a7f50e3b275bb5dbd3ccdd3ec1eeba39eb47f3a8b22f3dc16dcf29db0bf676251abf56086106b8cd028eb5de7df6ac05374b1b457c0a474e24fdfa10befc824afa6976b8f56f49dd2c4378f2639765084ee2f851db2c6b78f9b1db2bd2e0c216c0a934ac30d7b4d135d732e676c2b24b6020727ae92a1725d93da778619a3207d04d5367b8286552cec84cdac9b8ca0b13a554552786e954396596b5a6d5f5b935e5f9cc3985b0c642cf55659e4954fee2a55b58f34a8f52cf677dee8ed34d364365685459d5521beae4715d879c77da525acd54189d99b26db46f9773c5ea56dd9482194181a3d64d29cd53ca9c736a58924e964d4d87279412e4896934dbcc49865375d54b6da894573b1527739ad968b41a6fe76c3ade0070c274d0d5dc217934eba66b226afd766ed770686664543585aaa11bb36bebca9cc1af4e96cbf3d469bd33ae4f6777e9eb5301eb36cc9673d69fce364cdf3a57ebb8ce7145191cd7e7ee825a87acfdac3f8fa024cf9052503a4b9027124ba51769da5d27e786799e8f06ce6dfd4e94e733296a76ad9a523a996ec2a0b23711957f6673d6e79cb3e326485b014b70188661fcf387dce6d78fd37b9d5d5ba45debd26361be43449aa8f9e6d947a4893a00f54bd47cfb9af08899eff6b030f027f37da02a6a1806224909f1ebb56f4350d9694f26c43029292dc1f17acef28326314d5b5e493fc795ae975fa70b866e18ba715056e29bf6408395242d4af2c9af73149642e5d74b535a84c17194ce9aace6f56dad53dfdae1f6377996d1bb32c3be7c63d9191c643df36e2f1ca45dca66eab0fb0c0ed29e49ccfbeb2f1db6c430975f7bf66198a7369c43a4386e653679979d689b4637a3d83a363d9fc57c97ee529af94c39d29f3ea7ec0635218da7162cb7b53ebd5b589e3a6b515a62621a1ed3eaaa88c43e25f42590a7be493ed2bb8e7ea3d7d16f049f4a29bf6ef4ebf24822492b3269f37ce662998e8226e4e7f4d3377e7253edf091d8539fe30d13f31b4cf123863df97549248b241469847d6912235f0d85b69656eaa5669a7dd4485692966493987e35d1efa43e6a3b3dfcc9f3eb2770e449d259a45f1ffde8d7e87749639a5f7e7d51e017ca09b73f98b9339ab58ec8cc4c895c64caced3b5a769d78aedeccd400091b7b7613a04fa25ae744eae4b1636b5d61157f3fdb249148a4bb4127712b9b84ee7ec2dd24c8b00c71bb89d4e4241d3dcb25bf50d344f37cb4f771f0a8e7be567b7735c2b7ed2b9c4f4e5675bce5a92ceb6d625cdef6eb7ada54fb8ade135c7b26f5cd19fad84e686d56f4625a554664fa807d42f71db1d474eeaa35f59f43b6a2fb495c740b91dee18bf64bccf5d104907f6cb63e02804e535f086fd22b54d7542a97a27735f30fb46e9e3744a7fb6c65896b9e6fbc90e744fc151c963e00d933e5571fb9d5c4a242b24d94b50ce782e6493882a46e96f3adf07ea97e8753b0e136962e7a76fa8098fd8819b1369a2079ebc8844923df611f18827f7bea1269a7872221eb1736ec9af739fb821593da680ec3f90b26182cbf90836afcf71877a3a7d9fce952b5b5209fd75b0dbded9af93b2799ba21a480926842d0094b0ea70ce90faa424f8b1352f7dfc5eeee65406d27388e63add04cf6764d1e9dab676b561873bb2bca583845d49c2a4e94cf07cd6694d47696c64586d5aa89627a594ad0e00a3d0b30932c45ad8e9c4e3849a27a8ec34db9c73f2f0e8b2d8d36fd962cfa9b03ece2ccb7c66f3eb1752b51e4376ba71bf558fed783c17346cc151a706e703793787e31b745e4afa747bed31ad43cca7b68e39c7e3f9acfbf66363f672c5d3cda2a57385153c9ff5a53ddd14c24a8a48378b2aaf8f99cff92b21b247cdb22a59e00150a73f8b2a7b0bddf60eeb8597e02caaebe38a668533800dc57a617beafd940b906e48095df601c9beb17f3b642b4efcfa14a2b2ef8c4226f8e9fce3f41944659f4eea0927ec98f44afa777372722617a45b6fc1910449bf4e2a3bbd61bec0d9633fb77739080058279cd0a3f3e1f950df6ff4d16d0fef00d2bba59443a1e674bbbb9406808420418200d1d1f9a9e139e71422bbef69b839eb3ad3048fb53e83e4bc5d7a0addb216fcd95c8232ac380301440e0c656be9a883c7e9121c497839e9c4687642a3c00560644dba1d02f123f532eac847341df64a1aedc705a01b593f2b5b3bb27e4ebe3d875d10d9ea6408804e6a53a79b26a80c801430d428f42c204cdc5cfec83f65038374104f26742b5d449ab835f73650d00526e2e15ae774f2250ac5cdb9b0db3ea295b8f912b9b8f97a2e64bf2026c78c993b668c98d3ad9c8100e29613800004e9b8520fe2f9acaf7cbf4a43c4af7f7b9e0fd549a11b25a5413a01643a5d1624852e1340a782e7b3be52850efb0420a4c3be71d2163264e7f4ae6e7bc7e5caede77846a1dfcd911c8a3e05c76ccc98316efc5c97ab93b50c48689b2f8661d8cca41c1ca7f32d7d5dba581264c5309dfa0cec0be6b0ce4ec11caa00ad33c89239b04f90255794dfca8bb41f69d769e769864329e459494d5bd7912245d6a5a3b32ef77555595769eb2a7d91662e38e9dcf2ca18443c0d457981715964a71b684d4e3c4d8773ceb99d987853300cc34e1c0fa723344de3b88e776882d2fd6669227a9ae6e440a9c0a43acff3bc54e5177646dd7ca0ea248d4ca7f27c909e46b5ae527946f8d95766b9994e7e4696f9535277cc7796216c799a0e1785e2b24c19b6c248dc923ee9877aae0e5561d92fe74bbef2528b975dbc1c032fa46fcdca77137d3f462946691117f5ce7880b0432e1ab728dfde57ccf0f2ddfd0f06e920160137a316ba004360bc60df8a53a7c55dd66ac312be5d865d2eeb50c5bef985812be9c29c5235a4bc1a51befd070a1008926144eda7a717059cb134c695a32755b440488a395260b40514595c19a29e0bfc34226022091a443182010ca410db0c24284d4bf8a00a2394405c36d240411471ac20052568120de083d212466fa061461a627b7b462805ab8cee7372d821674734d1543192eca20ea29d1075105d447fe07807234eb6f44e6be99df5fdf5687a47494f25fd2ff4eba5a4e7af1f60b94ba33ce5eb3a3cbe7d54e1d75358222b0ed2be281e62c263c4ce99e8f0123d3a29e57a7f6c8d8efab19651f9c7d6b3949ecff4d32672b4631b546ec5555d491ffbc795906eb5a7beed16f6f5061937cbb77716dfa88f45ef63a2c34becc07ad2a628024b0fc660e1c51208e08209264a5cc451832288ed3aed3c74524c67925131a736f504520cd3189b139bd4f39994520c03f9894ab913f3644a2965a64040838d5a87aa60e38aa15dd162058e2b7c4b4a29a5544e2e93329392ab101d296ae69a63be49b94929e5c432143a253fbb06691de732b478728c52cc0695eb5f55aebbceb2ccb3d6516b9075bb35063de340b32ccbb22ccbb2293114ab4e59d643521d33e6a8c941da4376610cf2ce866118d6ad74a5b03902e0567baf15df3ddfb287fb5a0b963a99549eede91f5a2530befc7a4650cfa0cee600a1663ed947935293524a909fa8189dbefd6c83baaa1c778c61bcfd4c3799aa8e101e3612c305cf9f4e87274dc3b009f213753f4ef5c974fefd8a733c9d2ca70485b8cad3d722f6edb30daa8e6a53757aa7b16ffbf510c0733c05f989aac3a4350a62701ff39ca350fb7eddecf9b063188661a30e4f41665f8fb6cfc9de4cb99d1949f6ddbf4ebfd906c7a5680f759cdb436521afd3b5a33248d1368af26416fd520cc3306c6298c7dc5a70738b2a790dc0e1d062c230758e175b7203e516c2e9f5d2b9f903497f30b72639467b4faf7d8cea239f632f4360f92c7320fd10587e6fa87b05115e5e1445b188af561a35a24714895af929e20302bc0f063000167a96be1c61ffb2aa4a9aa6699af631f47459814817976b474846c462fad5445dd450b84906213d5061480f52484127004c4d3f7599b42c20003cc8610ac283134e0040c8048609cc12590e02148a61424b0c20407e80dbd2fcb236d4bd82082ecfc5d0c510c314edfb3178469c24310852a2d9e4472b230ae535c992b919c0a58f84251f3e7adc88d1b406dc84c1c20963c78e958d152d9c039a6c7650a3630733335593d1ea06a6090a8db23589e99da6d9349b661313f7806e825185b8f9d5e7f6f975f58c38c1d23b58947aa7dd88932d9f11274a5caa11275ac0e66f03d3a15479fd455d25d088132c1dee8fcf79469c4cc1ff469c6cd9c43c96766d4ddd92be6fc449d21b71a2a5c37d8ca911274af433e2644b87469c4cd13b42bfdf79bb2a234eac74b83f6e4d469c2475b85fa44fde01b23163c6ccf1ed34a977c60dcc4b234ea6e8705fe947ade9a56f607a67dc9836a6ed4befecb78e74b9af5a6a49a757028c98bca82317f98d8f6c29e76ca6727651b5d454aae37c4a312ccb344d670bf774e2382cf37c968bbae06ebdf1ce99695bb7f493e43a2fb5a95496e2d336d7ce67f38cf4cfcd59a5b8aecf2dea82dd646e70b50cdb363e315287b24f2bb062e9d586521b4d3ba70e6a3b8a499d495b54eeb9dde0f66a4bc5683adc9cf699940339f91b67d2b3f7a7c996f47ef6fe1abc61f5ed1d98496f033be76012008d294dd2871224fd98494ed0c0480d91ae30d5099a88114f9c1ae2e642e2ce295d520b2030bd44c6a206e2cc5254460ba024891c3bf941e423225a4a193978895c7391c2042f91934a6c216e5f7f31075192c8ed74f283b87dfd04882a49cc05185c50818297c8626714702132134be2f6b1188c8145cee50978d092247292073f24b1134388db27938e68f212b9a51a0ab810b74fbe62208397c87d583c69f2124f1f3351429c4d8434b4c0f144e46817c44e8859c11751876c08a21642895792c8758f42cf4d908e94440e6b03e995c82562936b8b051b48cfa012f98c451b46cfa0f4fd71bb93b66952c0c008466ca9e2346db0c691c6656914810652bc4011d442106f30892717127d73dab76f25b5a873a5eba4f291ce71bb39d9aad6f098cfef86d567aefd50f4841874721d3a4a93168855a80b89dcf6ddc0b1e7a3f54f1d16d0e62ca06d3b7d2c2030c8854421b188dcbe15f9c35c7e487440c29f4d31731a1cd4f18699f4149ccdbedf66c1346629281b43d4814606e2e6a72f68abc203d3b6b90e591a622c216ee0f690d3b7598438e248e46477fa76074555a088dcec4edf7661250c2491a3dde9e3226a208548dc3e1d27440ecbc230430744e2f6ddf82072a74edb9ee9ebaa6f8d80c5509278fa5631105b90628b24f1f47172889cece4f6cd37906ef0124f1f2b0a9193ddf6f19728422489a7efc71491a35d908f2ea20e3332104fbe7d41fc0a42931f88413a10d9828924f1e43a3097a53252209e40ad877018313f5614d028bac93643b1803091f3291c18a48358658b5d0d29aebcc4d3b75e5c21ce2d577cc1248221ae5726d2a74f46f18229692489dbc7ad41002894b02276dde90b926ba8e08ba803b78478fa364be5523e741142a18578026bb705f110139493eba0c20ca68827b0b310220d36ac889caa3b7d41bc430c96441d6413717bc8d86518cfb09fbe55434b194de2f6715b88129c3a3cc23c97aa3d57e5aada114e9e7deb176976c1ce1563d5b5224b706441c863659c600c355c0b471447cca0064014e1258cd85b3b6683db1f9d6bee7e7ac3491c2d68220b12a20c2d66de744e4a29a52c76df2602de9e2e9e26f5dd460fa8beb5a7f41b45f0d2e7376ead85ab0338aa38e3491737ac6021ca6431e60a2a90c0a4608cc8beda11b2446992f11016516a1ad0860f9a9a8043490c14cc61258c96222e5b48c1c288163cea178b28473040fd5a51250c89850ae2a8c206e5de6e1a9a19e69d73dc7607cb98379b4b7dc0ed744655bbe3fbf50dc886eb12d2ad762142cea8eca3900d6b6cf8f942cdcf95e3f714f8f9c28739c61c6f483112bc7496d9549a27a0f4bbdee19d764a29c89241d0d4aca28ef31b64a191fec4c262417e20eb05a1af79ae79fbfbf97d2f3f56ed90f7477bd1258493863e52665a828f948e93faecd0049fa9a73e9ea29ef678ea3dc579da3dbd79ca3d653d3d3de5f1747bbae3a96bdb8379a6e329f6d4e6a98f746e4fe6543e9d79eabd3d9aab64a873dd1e1e4ec1d10497ce99f075f2003e9efaa4d404cade34fc504c4c704e7a3e269830a7d44967091f659e37a8ed0ce40709e0e73e7ae0dcb078ec58e9b0a1adc40d6a3e1aea3332d455d42bf5147594e73de5524ffdf46d1f53cfa86314e988a4ba4999458ff12ea5d44a95587379ac1f73f9c2b01b4c1e3d8661cec96e68f62be54222e66ce439ca813c14ca536010aa7aca833c9025512e24caaf7e15eb571761de5030ef17e69349ed173fe663333dd65e6e2836b693c7b4b05f9e146ad1515a7acc539fcb16e6a86f365175646b742de4d8c54109b6c7ac64b23b9a630e845d29c463ce49c969bb39dae8b980fadd1caae483fd6ece8be6a7066e873d34451d7574b6a7dbd97ca4f951e7b126d9c21c2bc2625b376152497211d625c358aeeb50958ccb8ffd248e7e6d0ee6328ced979274f50edbc25c3639e7a38c4372e9502a7588759bb3ba4ef37e61de444fdaa8a9607138f1584b79ac8f1e6ba4c73a6deb387a071ba7102face378cca51c55f3cc47a9f4d8b66d5bcfa1c77ceca1dee14089f924ea9d1338c573cc65937449a6a64d327588656087e910f351323de6538a3ab3ae5bb85a7b07a3dd31972d2cb4277d1df31fedd2d9b14460e020edab836f1f599a561d5c2a2ad320811fd96a979f033607030d031379c006d1e941ff50c17d952538b79e6264e981a9a9a8e968c900688723cdd75d66adab5c48642dc88a21e5d581525e7dbd025557814155c6551e940259eb2ba6bcba904869a8e187ba03e8fa5c26f58729f56e8b96da65e5c5c18461468e63e4197aeaaacfebd7444d79759dedd988684e5d85752d9175b116b9573c3d797b3e9cb7f742773ead54ecd7d3225d47a3f6485af8c957c3e650e7be1b3aa47efa70a0ae7d9c7d0ce5e3281d52af5feaeba7614651471d9d06471a1a038b9a6c4d2b75fe9e3a0b83eb823a6ccfa9e38a2172f2d33b8b051149df0eb444baa85310086c97e6d447d74007804b83817b43c11fdf618f3a9a531f350d6c0cdc6d517025d83b2c5b1aa15bf9cd6ae57eb35addf8ca69eaaadb7f6c0d177de117154e24c916d261eb74d8ec4bf8d53b0b85a544f936eac728fff4cea8f33d721540ad4429a53f4c84faba0c4c04f325b2d51b720123cfb3f7346062d2db96b63156484cc40353491c6449ba564db23506bb566fc85452aae94b01e10d4e7d49253191141b1ba449ba526470ab3de58615dfce35864560d504d236c6b6c45f0a0832c56484ca9e047b25dadb9c4eb0414e457054f6f154347db274d97836459b23a6aee03dce9e64b491aed9742a3afa463ab28274b242b57c9f8a7abe153e9e330c55ea9d715544b9f4ce76f951c52433d4be23698716e95ac1bf38c14465498a52142d4fbe659c60aa2faa269598ff21d3f3859887619e0b2eb8d0f1379f73a1db91b423e948c71ff6f38d3aaa10d0d92c427da39e525e525f36f7524c44a8632ae525f5a562eec1c07ac1e635f0860e0903592f60aeb9d625c9fc1b56bf1da68c3aec54d2eac9b72aead073ce47f6d5930e57503c0f73665e15b1af8a5650524cdbd27c734efb56503a7c52f4cdbc82c23a7855b482c21e98d2924a494961e930098c3a3f6534455dfd66510289cf7eb34469a2624a7a06599eafca8c75d914c94069d78e24a9625279d99e9af251480e109c1aef47159366d43247bff92883f4edd5a648c88fa7229b2a727e3c15d9580182339e6c8a349ba20e8dca203b994d4cb423e9db772449d70ade9e22835d2bec50da91345354f4a47736e7ede998fc4869a762ea304c557d5179e970ba51331f554c5cc44f8a30aff3bccef33c0fe4272a166e5c02ba2dcbb62cf3e4730a5080e7e3c1d021c0f3993edba863f7938d3aa69838a06e32a9a7e767972aa6155cc564e4f960e06caae30964e7b827bde381accdf7c4a57716870e5db0aed92446ba524cb215a57738c7dcd3543e9e94bec79316a72bdfa728be4f34f83e299162e28846eef55d55aa26e962800b7860d2440db4e02246ba84a8b8a20b2b2ca8024c1a5a88ed2a26e9da1e48a9c28238a8b8c2031062bbea8b7409557919c17406d21b728421b6cba4ca4bdf2e732a625bed7dc2f2ed2a70a42db80185f2c4b7a74070a44448d4d3111cc860e74bba8d3aa698be534cd2d5e3ed3643b0ab073c9da47cfb986a7a26ed6bbcd31c421d5748dfbe427262fbf8c543a7d3e90425dbb6cd376edbc06d5b01dc36909fa899a74dd97ddc0c1d574f4a0fe41ad0ade72339193aee41cda8fc5ea14494a7e3643a41e99d7136cd30bdc33dec1558287dfbe9c929cab7cbe019590026e5649e4cbd1376c841a0e36f9b18b6792725f780cec67381be11275d22d0a1bef4cf896a4281e9b07d894b87bda5c3d6e282e7317ba7279be339aa4bcf2d5f1a05a6779a7a270c4a0b6a0b4aa9774ede8ee2d23b9bb7a3967a47f3c9858b1349e68fa7a26f3f15f58ee77d3a158db3897d9c62bef947113b37c5b39f362ccfae6979f6accbb3634cd38b8e156a4e70e9d9c3e751e46af982662dd34ea8548d8df74e92e9496886658e4487179220d651f94b827a25da73e52f8912ed06cb6391c4ad76dac32793e0459a5b1f29f9e3060708f801f956fcb12288a3799ee71901f954fee39bf1efb371f0abd13e7e1252eec3d763512781931dd1eb35f49acccc32c318cae6b403f952fee3f3e1ec6d4ec206b2a60ff0cba18757ffbe1caa00f5f0ea39b8cb7892ccb5cc35d0c83ee6485813fc49a57cf807849e91fcb0a83bc073197700caab733e3e56e63e5c484c7dac0ccc7cc63f1712391f5e9679727a5f8b3a2a977d07905588e862ccff14cfd78340f5c05715cd75905dd278f2f20ea03993d0ad7479df8ade3b49a427c17c51f810a8f03ace8e7d48825eafcf9c437d3cd4ad76ca4ea6784355a47be050932a7aee79932aa25a9429991f7614ca65c0a01caaa772a892838ccf0831ca53555fb1657c06cf65401930872a4015cc21e535282807199ff12a1ec8e21519e529317d6125163b908ccf3850f594afc7623006199ff119aaa79c49c568e01693740d51e7316215cc9b5491c69b868874441a6f5245d09d994a87cd484eb0122f4997e75dd3fdaa990de5dbbb9b8d380a2b357359ea214a5258878e0c55571439f05bca496e36417d43285739277d5267599651692adf4c850a65151c19c12f805202283dbe1bf751f37d6ef3e1387becf49b92d2c494831f511567dcbf1e5874a7f9869ae888334e54c594af87047306531f6bbae72bce7cac0972b3491d9789bb6026f6825beda86fa8898bcb2a280d199907dfceacd443f532cabc434cfc052f357319b9cb77b7c49831e6e9f9683e9db6e78339e6b198bbe1a73bbe15b9ec63d68f8ccf20dd10ab73dd652b7e1f7b3e356ee3cc721efeadd8c3777c3e7cf5b15cc7c7c3bfafc6713e1bf78fc51eeee3077544c6470f1e2c9b1a1b1ff55bb146db328c7ebb6953522a29558155465652c2a6b67928ef5b31f33a0ff3ecdbdefb56ec3afe58724ccd9c9db58c318c3399b34939a94c87792ef018ccf3c9b26cc633c2cf8a41e5290752790a0caa32fd03831c6465ee390834e33ec0a01e148cc173190742797594579f716e4559e5c7cf1feb47a59ac1e11e687c8717e95db98eafdf8a381f8ddf7c3b9cf5ad9cc7a7c3653e1baf5f8dc7b0e2908dd7a87cc68bf48caac646c76a074d916ac51e976928e5323e34e3d569bc1f95ea9b49d58f7f863c47396774ae1b194f2a313a69ba9a9999999a9a9a15e69e0e8c95799f8c8cca51600e2857a140d68fe7a1502ec388289025aa3c070f6465202b0694579fc1f3149843ca3daf600e558052ee790ed55159777baa9b9464ab6160a5ccc7d582fa74eafe7e76d2b493a6691a46e5d6bae970582c160e0e8e63ede34707e474228104cf473a09a71390cd81783ed2814ccc4f2d29b7edc24adbc5266d581a306fbfc0067647cb7c5c2d38f3e33261ac79459ae3b88ee33a8ee3b813a6498f43a1cbd1a610b9e879f64d210a450f0c81f61a08c30927783ed34ff08cf4671833c6cce574d897e3f94ccff18cf4538dbffdec481a75df7394730f9695326fe72f76278cdd91de0c8e3c657c068e39cf1ca4d376b9258a3a0d52d3c64a99344d732ddb346dd39494340de4276a864d99ed10e2ba0147e0f6c7b8816f7c5330dc1c1c69814764209868073ff47dbc9d7d4aaea1034c04037f38486b46b203ecd292500a69b81f574cbe48d7642ddb2b49cc4f2b4daf45ba280f8f91917fd5792c528eda68b79f524e299f32a12fec472ee2226eb5d3171d226222582d12421d0110501cd184033054fc20bade8c265fe4200b25bcc821b6d3577d042c3106125e70b1226669016bc8d103951fba50a273d2397f4eae3b21ac815bed6365e70ec02e1de50c4e79bf59b573d1e95b2d89136c10ca0325c20b5ae402ea25485f7407f9237dc93ac43c5fc479a4eb3dc90a11446e50d12488212345ac714446103370838989ed9428cc8bb41701a5a418ea7b9d9758a458f95fe72a6f744e3aa7e733d1a8d2e825bf74c8f2cb334b29a5a434d4c166e0561331110cc40007690f656b067605c00b37a59c526280891ce1203c3200ec6a815b5abc2ce1c0e6b4b77084898c6083b48fdc6a3f020aace18cda3fee17aeec299e5fea485fd588be644b93a24939ea215c0037aacf5deb8823ba189103231364d1c21b6af45004182d9c28829174bd7415c0fb458968017ca450e8eb8a3ad2027c2c19561412bd39ea8a2771c5f751f3229df27e7cbc8a019cbe26a0c5c90f3f6003ca0f26d83052e4502a81165e9e207dfd53ca29a5017cbe001f7fdb4f29a7949aaa93e064528b9a7a27e52c14ca27539d438091c40edfbee30ca38e5cc445db33e96b56b79934139b73622f2ee283d96f8a24a7f3f4d3a47cda510f699f41a8efa35600378087bdc3a22ef454334292ae19909ab862082e2bf88203b15db3225d423df8d045cc0bdcd8411c3c88ed9a11469de3cac38899323b51a9116b47bd63e3cd3e9eb987093e7a2e1f719e6f9eb9157c6401c0c7538f8f3c9eb7e71defce190b3eeac8f1117bb6f900f8489f6b9e7d6ecfe729f848f32c9f679ebdb7077456c147d5b3007c947966e7ed21c1d9ebf6087106471ba771cee6d38e3429461db66644311ab7f9f63bcf8786d38c8efc29a8d3218f0f8526aa66d43be35674a449e99dcedb352abdc3f956e4e3efed046861002c10e95981c7b53344880a02484187877022087b0072d851603f811d00ec2df6d004f612d881b0fff848f87873d8c1af9db98887b7af0f70d4680f705cd1384e918ddf803fd259600d2f09f6b892a3465f33e0e8a00a1c2b58c151fbff549e0bfd29d0011d4a4779e9b622229f6f880df015e00b6fd82fd5f3a19e8915b0828c357860a2054ca4105b284a0a7a100494348a7e20121bc34450fb421474b8849d232003b161efd81ddf23bd53438740ecce46c486ed5b1190e7c1952d26720307e92d32b4f8ce36a8dc4a47ad41ba98fa882aea9d9f8d88dd59c086eddebe004a5fc0ad76aa820d8b80944816f151a3488ffa918b680cbe7dd222a3dfa4534a8d36a75d7ed4059b33b9a8ffad38cf30faaf454ad40c4e33eaa8197d7b9274c922d93292ae6e92adf6167314a698a8648c16954d4e3ac5d08c00000000d314003028100e87c482e170388fd4741f14000d89a04e6e5e1949a31887514819830c3184104208111819189919ad00fc9498cb2208f1a06b0b332a4f308310fab49f0e9f052d71d0910ba84a854048cc2026fa1f6b411d6ad3a068b3afdc126c74f2424d5c41966cea436381902350144403a9f776302f25f90a72329163d5a5e39bd1c94827b35896f9e52d37e63e60b749177e343fa05f084eec51b4324976827726c06e2b818bfc2a61e873e86e6d79c4b96835006099877e124af353318c1f843f8cdb5324aa52b93ea72650561a2f238a4484006b8b6544643fa063f9cc16dc1f4c12bfaf09d98763ab875de1c355157320fc3048fd239592a27e3dece292bea6714f995e58850d373376626029f8d204dde92895c598a90619e00f01b52084d965cfc872a3961fdc3c9b95aa7c612a3854162ce80ad52d40d5ae68d627803f76cf0b05e7713833c41f3e997290451e94c607ce15c3edf6c5accdf034ecfeca80da645a3de48a061328748ba77ba1c5d2446dab8130b78d53a087388039f3cafa6ca7d419451b0ad8a168f85f2deba31fd2cee018648cd884308be5c709931dc54c64cf04f3e9f967a817977f4de5efd6991a2023022c1fd5d31c6c62cd2dc8779449ce289e0dda228477e7032a4e7c8a284c125a5258a04e9c8dea5ec3ffbaf3e70d2f9e02c0331d38667bb53b0f0a627b850320f3ba375e324bedc1210eb04628bf7c7146b642d0f8cda41f3014b22c48f991dc61da4f5c6e26f7a83863a647d75f253a62ff09417ef0a7f873a73dc2ad3b1fc63d4cef4e3275e1cf1e6461dcf1168de5705a170e551953dfbf2ceaa7367e49a16569ab5a3bae4e5be92f69214a7e019e8b1417010504390ef3c89fb86240c1c5a9db5b11deaa067ee41de11a9891c9f171f0652a2a79b96e886068c3daa718bf86eb3543ab7b858ceeb67d74622e137a585dcdb3278ec2486dd792c1d109cc32d034147d78479c53c1e5495e72d183e1e522ede9c2b5b365d282e754fee5a087470bdd2cdf323f66a9185518a9d969f1c9b4aac7a5ae465503fef745b850b897864c624fd0545dca1b4fdd24af9391a0848ee57e51298498da265d3b1ff8a1152dbacfcafdf91bd15623d8df1df963f92c5737c6dbc629bfda72410369d13d8943852d3fb89b54307cff5dbcbc8224d8dddc39a5ae0077a8dbf5dcfc67d1adbbe2191799915cb548185cd409e435ebba4413563876976c7c1556633842d5bbdfbb856fd0616f0f3f2b58de20882f161f1d75ce0cb34422eba6d99b482cf2268f03a394f8bd850146a30c56c6915f9969454141c52d72c38aa915a8c30bb7619cfa3fe0ad0b1ffc203488be5615c63f4c0fcc377b8baeea7b9072c37e2590046975a4ae7d7bbc5962e4f85b9e25d6a8220b56cda093f3a6e6409fd8f43d6eddd0daa4daf6c60981ff93f34b7081aec6053a29c76448ee12a1d9a644edc306b26d1da91aafe2e657b5cc6ec9b9b3243f9071ab1147d8e0b40b689f1c661fef19c5af7338b989882fcfd7e28bc6627599a6887ec035f7c28d5c8b6118912a661912b4538402a1456e8934a6552f182468c10fdd9203e7f5c40958733b3938e87b1e0fc56daa044ccc939933d6ca3451967c33381283b3a31814404994cd0553f0e0a7a7769c7c1dbbd2955484a9175f7e5d08839e1af7ea87c330529b0ee9b68d81e1ac7d7fb80cd84187391eed14162cacf338ba8c1836c62221f28709ffb684e8017f4d8f498d2341d3f3564daaaa3cade86f57704e91d0c2b0b958db9f6f9c104d00541442a9b548cfda4c653b0ed379621baf89c512177b356ea08be525822f066d04b01bca15a825e3b6d9585b6d850fe7f01909ea6c3ebc794a9c7fd658efababcfcac33dd4bbe5a1ff3b197e72327363327ce33e3ed30cc217b9bf48ac0993e34b19339d7d11e020ef44c79f5a13ee30dc938f5d5644c3d7ace7d8de4fe3bc27a5affe7d242ca6b947ea90ad194620ee26876e006ed31da417dca0f44f5223ddc1aa3570a0a62158a5219e9be7768ae7b0dbb61f4b374920e8bec044508d5d160f92b1d32aa96d750bb873eb513a9b23b84b1546416faa087780a869db8b7ffe9b6e2b2f18bb891905445b0e874310b87f8913b229c6c1d5f5d3522020550db8775e9cf9da914444530eb21638089a11a5a61dec95ed17c60777db55c39708df56f16843369e5aefcf0ed53c0e2b1c5c1388bcef4ea48aa8657b9f37d469acb13af60b3d8f690b67fb5b71dc99168770866eeb1b850987209936fabd01f2597d5fac87f63168d6c9aa6ca7c506b048b2dd138cff235f9791b44d2c64b433d1eaed4cec83935947010c44d37d0be38a960a30f7063f5480595df850d9104254332f5540ae6f291dc0dac5654535041ab212a0b17c8a16ae46d6106afbd018d597a9f76c4821dd61736f00040c41cedf76ecdc8ec6ba080dae7bc132b6a912e081b0d96232f1492394d240a7e4e2ddae2ede51018d7f5d99d141bcfb56507b81785d39da36e116cfbe6650bf9b7755d9cf4d4488dae6828f3853eb567e7d6dfc600fd49c8bd48a7c9aea5991330b86258bda92012acb7a50f2bd3bee9b35a341206593ac4ab96ad2a8684d60706a65cbd18ed56a5210182823644dc44637b709c7b23e0dd47234a979204b43974fc3686411c5496da2306e2d8e0f12334fefc0ea6319bf3eb777e9f5b6c28d66570b35d546169babaa197a3563a8f7f12939007bebc427aeed3183eb5893c1271b50e4cafeb30836fe1ed38f7a822df62ba48afca767090495d267d5641a8d66f49a6dda4fcf0bf8db7ae4025fbcfa2610e56351d67a67dc055e13f4e4b9b20ae9234975900dacdcc786368798c5101c5c19a1152433ac361bf64514bd66b547e60713cc497a2639a1494c4813a084f883ee9a0f10f0d3d88983a70577c06b2abf72f79d796f84ab79fe32bc40fd6bcf34d247da9d409d1613846375225c376dfc800d3a2b631e2a8e2cae1b64e470fc94ffb089841badde7f9277298f1046d8dcc97aeca4f5247d3a879ba0d265b64d14948aab3a1b417c20e81f5bf795d569f4faf0089b9d5613c0889dfb960984cd4713328cc854540465dabd47ceed2583e5a1b5f8320a4f67731dbc07a669e86740535ea572bcbeb7a241c307072afd2d5fa5dd8ce6511824c5aad8f44f60ea86037ae00aa9ba5d6add8855b57a0d1b68e186b84528848e243dadd4f798d2e3aab6a58cc3136d7dafdde9fc37f751b8c61257d57232b9694115cc6382ea926729934ed3ddf3188d317b84774fb467408c536fbdd68b978c898a0eba60af67e4db57d8f97366d7e20f59291dacc6da265ffdef6d8b4d448c379b840563486a37775f905208f871569ea528b858647dde60f1e2681fadd16c622369826ff8040e153d0b9004abe92d7a9933a24d85b6cf87ee34efc4a28810786e8e7d9017aeea692b437000d84a8f6339014c5036a0dd446c941ea500ff9d6be247646850f528bb5cb80ec2998b9e063242f0949f8f5040d1aefe464b33da713db3b8535a091079bc9d69e69e960330903c0acfc2c5e3af82628d0c343e238fea4e6417981b70b83fbe176a45123952f6446015f08022edab5cb08e2f96aff2b0cc2c6e210b340d7e3185bf8bffa7be99a888b20f05b0089589dab2f7dd6ff0c1586df27e030dda45f3cebd6e5ee6b830faaea02b2ad978b35b0f7f82a7018fbbac0848586736e3cb40c9aaf49022c8945c787acb5995bf348b249d2cb1977f7a31f62a0972fe47b10a1657de56acbfad46a82a1be60b908e7ca9ca2373e5a46b2b0007686d698ea44a997c2c2fb563a49140233a039d7074b3ca76cfcf6b3810ef5512cfa952e9d1befcb9601df9e74fac3b7efd0dade6585f4d228d5eab1027f09dc9f9e897538e93be3ffcbb6e8af5cc6425f036280b184003e51396380cb5ff58d3f22c7ff6e715fe10f1f1ce74b57b818d6a8896589bc7fd00b8452220287cb25223e7320b4f2a8f09c3be1d7a91033a40b836423d299ade20126bddde269bf4ae181415dadbe760fec02b24ee206463f7623c9ce83e858385716263e6d7900b0b83a40a195b779c1886deb44f9429546ad58a110535a40b5093b04d7880e06c93d30bab61c499d4a3a90a30c1467637af64ef17019c474ff873dcc5634986b133fb0aef7ad4cd4c19d2cd437e6d446d3342401f75cb671ca703e26c5fb1020ed0ef53729e032d27cd88f97b93b4e1a7a5a787c44d529a2a9b9190e47f0e7c94add0e9c43dc5d09ff6347d0ccc4fa5c450ebe571b292079442f7c51c54a0e8385ed2f148f7cb5957d17eda09737ac71e32e0181236677788b38ef6ab939ac34f9d97b984e4da7516b850899bb5f7ddd084e1066c693335c89f5fa947e55e683b9b5d04bb49358fd587dc6925c60c0326f35de120afe05c0f188a69537e01a300405f5255cdc42ea631466904b3b0948b92b84c67157788deaab92320871a02326a988b2552a6bc941b0a373886370cf15cfb6fb07be820d13bbb53f0ac485e15d5fa88b39a6fedef02a25eb18de1c9f256bbb2a9f0c6a39a058318c333deadffe9a9d15a8968358ccebb65cfbf773d6d9f01f01043737c594d94b28ed411c946ed519caa40d9efa5fc35e92ddfa1d5db1f430a282fa68c416143475fdcaaf5319bc20894d84e2257223a2445f4d098efec9132ee5d7dae3ed9fa2a0bd6c063315cb015371ccfe98e0358cdd55b9895a67990973d38f49e7537b989fde68dc8cf83bb9d4199076582a8cc8fe20e2664085136b2b05b646052116977b90aea9f04451811375181ed3dbc1e7a31584bd0ac5d6688c3f551dc7facbe8824cbe588541743c001ccb32a934b6ed84397e0ef3b13fbe15612a8e888a934d025adfd440162fb445ba7e02b6a2102c1c4f13b4d1bf63b0abd278fc279f4889cd53c660dc84789c9abf20119c05febf63897c51fb3bcfd422849a0000a9c9da5edc5407c3dd222a264921b5c0ef1c0cb9ac3e7a06fe553cd20580e5e624f92b09b5ff2418705595f4f3c4afbc36640842ee98a01de71c538bab452a184f33705ce04ee7ed8e9e7e02f1449dac2d6704e958fbc18aeefbcf32a53495f8f5c4ee958be6c93351dac4e804b75d827d9957b05002ab610e038110ad8aac9a66633919575ae61f0ca9cc592510061cc55a652f851c184f25d2e337e2623032932e2140b05fdb032ecd6f8a2fe8aa2174fe1aa1c3901f4b743fc7b2ed8a45c3148e82896483da9cc8fe84c9439b9dbd678057070773fdd1d6c48bdce24770ae470a175c7841983d6512e820903150b1ddf964f4177af5402379ae73df4e3a16773f1ca0dbe02a97899f57be826f42e885a1321c24fe41dc448b2e3cc1d74ae8a7c69d09c825394b8846e7ea093471de0239918bcd719e09d8b088a56cf47134ed70b52dd64a6e77f1ff0ebef9eedbfec5c520e3584518dfe48153c6ea5a508887f454ec0ff6d6924423561254c7afaf9ab7a260988df7e6e09c37bbd20c3875d57d1259dfbb554834bd4c10e40957d5e5e6ec8047e175519d428bc0155e99694874bcb4eebe2d09c3fd8615c90a92873b1438e3b0c31a4fcde7fe84e42e8492c5362404fc4ff7b116d08f717cbab33596406d7c49f53c92550b8a20abccfb14787b3852147be1ee3b6b22c304b767ba61631945699549e96f88bd273877563580ed209a196ddd27281c6129137bfad1448733e33079078e49051ee8d53a790e7ef712111bbb129c8015eff042f12bb1d95c36e0fce08d2a397c956a05c083ee4fdc39171b303f26ff55e20795bbe09f4dc75b67e0a940bca07277dc1e20ccb5b83deb53721f4d87afff46af367ed54346558d79c0105f1cd338cf31402884f5cf389c9e28a9b0986c17535bad840c9f2588e77f152c7ecf2d4aca6d808392ce9cf7262a73a88a993068c32ea38c8575ef5e26c87a978dd805e747ccc7633757ab92fcbfc05991287999f0af6b747de47b8cb327950d64988e72d9e393172905bcd2180b23540fe1389e787ef4d1bd5f7b255848cec57168500e53b912603e89527c62144ba4530ed95b7680b42a2712c992c32401fd5e1921de305cfe96127f0e17e9c91604db6631adad78d8e3bc8d149108784bdf57fb713b42171b183626a0296b7aeed5ad021893cc70f3988f02a8509733189aec1a5841672fc3a4dfff1e7d5f248818ca87025cbe01ad911c0359d8af27e88b48407ce25c02657cdd2115cb793b383c35080be7ad72e506d5c3c3983ba7141910c8c20369fb47413023a152a9fcd0710e1b2276ea2158aee6e82443d42b3ee7b89108720e337b6f5f04038935d80969e8b41afa755197c7327dd8b20c4489b2b6aa0f0cd4e29f1b3b565f8af1e87fde7242102689e39d03aa679112f58ae4aa5f9b5d7caecf79137ce6b99b772a8b7a15726d26a99fec429ea294edfca6d1dca72e7e37fc807cb08153464e9cab4ec6d6fde402c73303ec6f1accc9deb7d9a564e6d8e5f7976ab1a54475efd4ed210ef0e965e91f2ebee6a58b5dd6871e8736ed3697692df62598a9f4b14280ae40b263c0e1a4eedfa7492e50a1d3fb6b46e64ffd3951d3a8283c52205d94f678f9d03981ed4128a19423510026cbb3d890d3f8c72072732f11fa9f00a010f12442e508cd9f6eb3495ab101f35cd514c731391a4c43deb714e7e084ce69c146618a1745ba77fbc85bef3f2e22b7389633241716fd90c67539221568438f01320e0293bb594d0736b42901c6334fe72016d96c99101a36aba74cb8ff0d1f762c8c335b43147385ce0e50f1cc1fc4c366941a8587cc7bfd01dbbd0b9d360950c2fdeae965c4cd32c3fb07dab88b865b1eca4ae36cd9101d48bde9d55783796ccefc2f039123f61dba1208756414dcace208e68a3c7c6614106b442528f052175b1bd16add0a21716e30a06c4c60e1dbe78c876b7231627253d7c748f514fd5b99a90ea4353ab7d8295e5c5fadba4685c110c3185916beadd098423f6c6f7c4c0ab33dcefee80f89909581e064f9d3b8a7da58c027ba3093e891ecefab6bd32bb6d9c6d034122504723eab9222a64f45826750e3dc583149fecc18791e19d3773f30afeb2f689a8df9bc4cc9fb601fba64f3d66edef0edb0d2ebd005d65023fa71f086d1d6c6a60803427f5c63b243940e3c63595c39df1f4f65af068c31fca5eadba1bb9d5e7846c754e276b5f9aebab65d593d4d47a37a4d1345c8841ec1b6cc0ced774a82a0089e790aedac81fefe2cd6d4e54f35b4897000293f46b34f7f13676a18705096421501473ad493eb9cac90e6874d5a2a9051b98346bb57adcf89e08d2f54a4b6e8805b98a360e3c21c2c1cbb5b2443f661337778ad72ec6af5a0adeb2b783e31556b195ae43f82498f92ca3c55e9b8e75765317ce7a9f018d021f35641fefd9f97cb22f5c39dba3e7a9e3e9724d07009d627278d0a146c8a6f21e0f9daa68988d5006aa9a6d50fdcc2c3c7bc1a2a76d22891bc40e329bff92426a0735ff8df7578525ee9f0ffdbfb1fdbb4bc08010a9f9da5dce8f68af1a3b4569e6ed016371ed23439310df5948c2d925c23f66f1c235c58b9e1d37c2854af81f7b13bd0cdfe9c66812bd660a446c0d26d4749cec6486b3b4cfb1020c8f6f020c48357af451594fbd8ded2a2d1fac53f1885589df0d393d2543c6e513abf7746cc71943330fbd9cd60000d2c188b3567198ca8c83132faac25d3dee7c7f57a35a89314a998a4d31647489290f3685c7cc55211dd44d8b33ed0f6c52052f655a2860cd395a14ca15a1e2abd3f2c073e6b980bb89b72b04167756574a68f1689e6437714de9fea4f0e57dc311deca9e5dc179a25256c24d642502143a1f180307ffe54858ea7224600f213782c90095ccba9494b2b8a4a789d6b243b5051c6b2ae83f9ca527d2b168acb64aaffc400fb65e56c8995b5bf8ce575afc63f6244654a08437d9bb4bca4a55902d5bb6d9fcfc7959c42d5b45eea3cee6a809f1128b031c7947ec2ef7123c9e64e9df42f2b881a2ad5681edafa0091eef8321b24c245be8412b294bd640bf796e8eddc16553bd570a6cda4cf009f2ddbc3590f8d635f1044afd70d2efc31e27f23794730685104173bb2288f9982c5ef5ee399227d28b3f2988fcae2c5e5b333aacc4a29f05ed597306a9c4834269cef40dd77e5f200862f5cd28136e76e46d94a22e6c3b3edc78315041da4261519074600ef0910fefb761b64b14831d96d6848082208de8703376a13ef63a55258c9ff59806ceb4b1e41f5973ebac5b505d7cc1b3bfe4a55e05d8b3ffd6c5f53126d839e53e4ac3e12720d7d7fe5ea9fdbe09652708ccc7f548edb0cbfcb2df39efa9390b4e2f549142232b088f3f787854bc6d121fa95804245d0a57d1792f81e1755f308408add9809c4a297609b105c6484a8cc6d02dde783609ca3ba922c7196f16ac6f14cc9e252b7de33cf1239774b90b3142cf9ca0353fb8af9c9ec9e27c5aa7b87116f6cea053a39e8020432461b67387139c1883545035c3cf7f3d4ac6caf3c31ec6d49d5da1a01c3edaa144c7e40f8556c97d0357e28f9f4aeba98935c0c7ea31310f4cb338d820622c269af1a183b690366824809b2d1f35965c2743cd63d2e14e14557783bffd5fd6a995b4c4d998e6ee0d05fdc6f7d25df0b2335a4ad9af3a64977ffdd35b8e938503e374e237e2302094a0ff43ed6f4de803643ba14a245ae8e89b78ac569a30560c4a6e042401893dcabb16487e46d84af79a84f4c8c38531a903ccf01ddeb5eb1e34380526d104a2ac845790e8932172b3ad5f3153ecfe862a56b0c42959e37b70144df7c674345ddafd448b913eab1e6293c495d40f73c481204706c5791464bb0398f02f10e17279a635d55c28da5554d49ceb817e6cee0e0798f3a10ae7825b5ca941b5a47dd8866b7405817d19ce8e5ab26f34efc63715c5ffad0e25809820cccf68f481816204a33f807d13122007e76a1b62c2695117aa9f67a7f2354a7689fcac7c2e6fd3e2e87965202113f27d0dab20521d2a712eaf3e6fe008c3049bc18d5358499deeb229c17cde4d2bfe92ee52dcd9a6a102849ef9cac6ea9c8de0fff8c9448b7848c682c2addc6905905387cf033102421b84ec98097195e343a52514a7fbfd5dbd7c4e36ca275559c5703678ff5741078dc8be4f79e5517f0b8b8835886a660543c1431512ea6fccaab747328ee65075f0e87416e399e6db71359b5ffb96b29e6342186966af1df0c8ebd6f950bf89ff40fb002c6d2dbcbff260695007761e2239d7eb792f187c524610ce91436584bdb9b4454d88518b3cad45a109fcdc77acc42fbbbdf451b4b39e0691857a934ef88b3cbb352827957f23d57e388b227eb4185ee7884dda7c6261ec8163d197450c5857c63338331a0ab3038e2ae3f947bc6c39098b5e4118d602a69137fac3f00fd4b65b1a45a4f1d4bed16151e368f35069b99d140b32dc0778ce84dd713d878e67df3044d094a1647fe09a40e387a441a7262865a068d8eeaea818e81088cd470841a04d6e7efe17d04641110193e11b5e7bd0bde06ecd8c659a1c2553cd29a131c8a169b7b07b289dba9495f76f5234ca9bd97e568eb256cb78ea73a50db90c280f764347813df25a736c08a0dae35a15dc8abd44f65473dc00e6c15d7bebf81d63990b1376022020fd58f1c73285f57d9a37d80be0cdeabddd7c8aaa2b4a73841fce6c63e63185987d19d8bb375bf81bd062719cca88af707f6e80c7cb85f8a5a1d105b38c00404a022409b1f70a30ff1ad1b6059ebe80606380f83cfd148406dafbad940d60f4ef15b980fa819296ccbfc8632d48bf418656656b4d2de06eb2589c1f314ade7d93a28f60aec767e035b737dc1af328877b78dc8c5bc9956fdcf898b62d41ccaace3686c37a78e6f1a4d30a8a0cfe350a26c396b8469fd3ee7251de1edb562f35429d929b214e75a08bfcb5b80556528c03b6d6b1e749f343d0c2146c2b40f3aec5bec4d783ddeaae85f6216bb51945b5c20e9f1629e2cb4d597b6c3bbdd408754a6e80f6a1bae20708c10c49095aa2911dcce749204774f1376c891dabf71aad4ee90d90a7fa416da32c2597bff12b403448e93a42c68b970042a7368fd2410c633e5db33349cf171ae5ed4833d96ca58beb20bbc1bfce83ffc7972563975e3e0d5a62c3e9b546aa537a33f40f6b0d38e7d3c63a38018301fbf098cf9249e4191c9e9d669762139085e7850a7f8aae270537d346ba6937ab5a3c094d35c259225325f385e3177afc646619e352a9dc1a7b8c5e697c3d65374890724e4dde685366b46604681b4e89de3ca2fbcaa1166ef1232ddd613bf5e973991e81dd8dec5ed6487da53740265503c98dce35d0907de5f6d8727b416354e721f588eca625f48e0c93dce99e4f2c23c4ae93c6cf1812c3fd4fa54fc4209252eadcd8b6d6173d70e831b6e36ad5d882b37c1fd8c24c6d5c1b7de150950bb89a5a71f42c63e94281963d353a380399a9a3663b91a13394532377b86126500bb7b2379a4d752f8d077b7a611b6e1585badea3ea2656593239c145e3c995440cce18b1390e0b4059f6deadb64b34b30ad06e4075a4ceb0fceb21323a699f157679dd1a00eeba04ff6a106e7f978d3a5550a952ebbb49bf1b720dea3fe3fc964502de836d86b58b30809909d9b07749a77d20711350d911e37bb65f28b94ac60a07c1b39f543156eaa78ec5d5d8088a407be979a657237ce21fd63417fde28d91a51ad41be61a26d1697db079444b4a740c12570dad281d72830d974c37e3d342efa682b878381f823c331fb0bc07cdcc1cd836c0515721e2b60e7859b411e89cf3b43528dcfa8aef230f3c46d652fd1ac68faae94e8f2d68afd1ca2dfd5337b4685eb6d1a60d00886b9ae2005562f7e288eb83be89910dd63e5a63d680edfc745cef39ec720c5b0c551f75dbe3aa0c6458cd45d01d692bc34d53441f36322695a5a81263c087028a0311f646dc9533be0e895d34e8034b84d85d1d30e236005bcec2e2543f48fdf796a096232dff91fa9c8f691303bd61ad43843132f9ec0025877d93143deec8257e0f021fbeb70e96f18b24a384fa3e40bbd8bcc567eebcaa40b7a979ce560952cbd73e2b4c6cd8ce80ec40133f846e9219306ad11f8a9dd0fcd17ce827d1955315a51dd5efc095de162be5ab51104557e7653f99a365bdd2d32839dd34d192b1bd0a05e6d555a12870d8b017af2503cad58867e1f94afd3f83e2b72d15d6b473506267bae938696936d2288e96813d461d257b3a1887b37038b85751af0c889f3ae9ecc7ecef9408ec985a316e7c6c3a229d79ed72f1d96dd2ef1dac147ac1df1fab94de57767430b72b065355de541266876b4d60a31ba1b6edaea6de9520eb9d27312c7c0aae054542ebb29067cc7cbe0094c8164dd0bdd62343d9d0924cff6fa3d7d49666dcfd2801b2123c40036c445256bd200099a7598dcd7f877cfb527439f587df22e46a8bbdf0dc0b65b54d6b63339370da4389fa1b0ab81efbfea9ead0b23d7acd694eccf75fd794896cd6b638c4122062e0d910474ac94585fed2f3a42668061ff0f929ab45c7be18fe0df5e9047d01121ff4f457f68f03902615212f75ca84a7ec04d3a9d892531755a815e9d9d09842c6749e2d25ab0056c75e04b68f18be8b29e366165af5de4a037cf36fac8d1d04e385fe4a798a0ad1a4edfbc3fecc82d33725adcae1ee4f95e9bacf1b0ddcd26f4301e94fdabfd980d7ef55f64f24017b042a89487c9eb1058ba1cef11db9ef2ce7cc7902e96d7c1ffba3ea67bfdcba074fb5507707d10c422081dd1934be907ca9837390dfacaa06a3cabcce87eb3a2f3a72dab1a9f55c10bc0e2f92f2d1d22d474031d6437056f49fdafa73ad94ccd98ec2affcc70f97ba99cb82a73fda9d3987fda69ab6287f7c3ad2bbc1a394618799cdad7711bb851ab9c61c80ef3c5517c4f386ebaa1f696da964cefa41b2dba0145bb1a965c97f3b1a06076d7db071c7288cf613e9b88b8ee8199efb88c80038ca10e9a2d8efe80c3f75c91cfda5d66061caf402e1a6262aa925027286fbc3622d809e06edee0f06dde2f93cdc18edd664b54daf7625ffa3aa33ee1919e851825fedb91296bbe5daa489436564d2fa028456d03f44b4ac5f0bd6a462987625cd330c06152d013b6974ea34d2438dba436afffa36df4ffedf54b993e97ed572337248b85f364e0f2d2a036b9efcc60df1e51257266beb4fce1e21f7512b706884b510056b1607ce7c6411d18842c9a374b40ffaa467146c6ac02110efd829f9783cf29c09b40cf7a808f6388e633c63a1f7a4735588a96da449029d355e2307c5908807d4dc8e07eac8ab8e1d568500f01d540f8c7dab17c33cef3b4955e764900b57faed932a993d528e25ff956b0905d040980dc2f454c638a7e2599175135cc873aa3d5606069aa562643a82a1b4743106234d974456324a15b2a654777d0c87dcf5677d286076bd3dad4ed06ad6c84a01bfaca608fd03d72d10d560ad94e5998c0a42f88601d08da443ee923980a0810b08a38ab5c82182a030f0c161b49d9f74ab2df3cc0108f67160b537a1822b0435f7bad18498d88b12130ab6096d597e4409875529610ab07ea299f8800bf76c324b451f60828399cbddf8661f88e9d94a1f5066ce7066c2319cca81439f022ac9be76be774bae3b144a77d8c50f42bcb280ffa53f2a5fb596b182c55ed1aa5c528020f72cf05395e60b2a0db14ce3b01ea24501e216870473c782ca729d274c4085bcf05f8242b9618b13fe52859b2631269ed2ef80ae0f974b8645f8b2ef633175b36c6954758501d6f077c67b368315d7ae85709f9748ed15a11b0b180bcd59a59681f1ef5ff785b99b526621cfbd6be37cd52fd01eccc64eca76a05bb7427174081f908a242ce08c4ecd1a30a0df64230e55f95b863d8271a8251d9c97464c57c7368d7cfa1a40c4c15fceaecbdf3acf21c3c587cb7e47d24c9fd19614ed6a3eef0423d12d8e83610cfe1e127483837df404cd3344c4199f18661667f0a70dfe1a2cbe48f4e14869f95edc93b95cca653757beb3f9f7526a6de938318ff4c4ac7de5f7c5047ffd744da615c0ad419c5f551b602af054874ffcd81a8f378713a806c92d03190f8dc032e0da49b876d3b2a18903193bf1994e918df0898cab0066329108e1b794e33653ca18faf6c21ad9095192aa04bac9a38bbf7fe029972c266401d6f03507e0e29e955faa7506b4ca36c0f131e0341b11f6ed8f9027f28d87ae46dbe692ded97eb1e6e96ef2d0f5cbc30812052aa7697dbb276b00dc861ca907026dc51cdc29c19bcfbd1acf3446436fdcd8b7b80ab7582f6a40895eb1e25188dee655f1d5042c321065e51e0aed15236a152d43533186f5150da233bd19c5c433612660db3924cdd86eb050dff8e414f91105b067459d1a70a3afe707cd7e26f127759771ebce67ae63bbd25f65a51d9f09939266f800394b59cc0d604be54a29ac94f1ef9421637602310646c275786761e045c8ced5ecc6c543141ad16a77c9322c4d5e967e839949a80a8b9e02ad76b3717b4285090b14dad64a7c20a71aa9aa3ab0ad0b1a573ca085dd8b16b68cf6c15e9a0b8eb1bc6043b9ae039f7f9811c1c9159dfee41cad53fb4c752cb792a7ce345aeaa00b35ea82c3db515320a21b70b4240f0a0dbb93dac42824976edd5c0bfeb4febaa8bb0b70aacf0c2f07992e3516fe0693fab18c98c65ef882396408c9c79c17a2a560bc75dd34e66fb3b09d2ee47ee1ca414c68ca6be05141b601e51acbcdb9c17761a22a443904de99fe3629b4bad8582dc66fd87b5b2dbe6d0a428e0e756bea96804df626e896ce35d2cfb198736d6590aeec429e4e0de06cd0e8508288b3ad9ab538774606c042727bf59e363ccbef70eeea175619486fc726f8fb9b5b1b8a73179ef6d2f9e7119aebab51a1caf9d6847699b06394486551296428f656f7153f95c519878c615ba6cc0aebe9e62c5313c4209fcb32e6a069e6e6f622bb3c1fa2c01019eb7b0c07402ce3df4353fa5431285f424abcb0ba0ea590bea092a6c1315a3ad1adb774487b5c1d8ddd46db5d3f19db961eeadcdcde78dee4ba158358030e2311b0dbeaf7f12ddb742d46496cc961f51ed550e87bc74dcf58f63bb193e40462555f5bf4265c190fd649eb90f08fdf6c366a349d902952c420a4431a2033d369b112ed814bcfb3f356047a51d68d5015079d289aa5f6dedc2f35f19f8af20838faa8ebbe88fcc4f0f63da21c091306cca32fd1f62bec2b5d5281032bdea2631e3a0b483ca895f42c0281003f9344d3b0a37fb955488f829a345667727076ec600a00849ce8e9ae6936365f14c8f4fab71d6f78e63c07743162d5e17b3ebc46418bfb84c871403442c31df69a15b41921921b23b99622bbf9bbf9cb9f501b7ec59f678f64665b64def5c6812cbb6db25a83cd680c7bcb4486331e71c1eb2f3bd4f21432c2b1d69bfbc30824b208eaba9b4663bee8591dfc22b426dfcffb035e5dd9ce72ddb3c309f025f5aebd4000e3fb224c4b138d48cbd2973e4799c143004d624063d8934c31f4c4b28a1b7449cd83ecfba513c7e5100baff517d0a5117409e690351fa961f430e26223965d968450dd0b986a79eb384fb1adfa1c30afb287d3c9ca977b6cc657a61fe4fe23304dd25fb6af6f0ff575569aaffb127b955b664864e00b8c949abad0b49c3d7b2c17989f37b4da0ef5aa1369fd66d12d3ca103f68c25384b98dcd3b27f31595301352c1b4950cf54ed8e5917cb4909ed619509ed77c6a85cfd3cbfc4a55ea816e7bc7f819f62494a444ea7cb5880f6d1e56af1d4b077f5ce19f09c9e701c4d08ebc0116c2f843d760b4acbffe84f845e36ccbed2cfde1a6039346bf04205788ebae9ab5f719f99f0092c4825563056c039363e5cbcf8cfd8913e62e8539926b70bed91f2a79591c1b7b0d8951dcad503b201660780fe4833824d4326b83fcefe818cca4c0fb5d84789f55bdf7da0791f4e10692b6f7b51d81f777063d8d1fc66c7833f64b243cd176749d2389b216c415dfcef188d409a14a4a04ee3fe6d17e60b66a067a559c60a9e21de65480840ff35cda401366f10738dd46754f31c4346bcfca438a05ad319484ffa1d5e61074f52413fac887cf2bf345dbb028a41eea52fee891f36e95c12eed9b04b784d05677a1e2e61c5d966783b11efba7401bb91decc9376ac63211ee2206780a4dfa61aa49b3b963e6a67a99b3481d564f180f68a3ae547a67ddcdddcf954d61e7df59944181d78bd709b7592f849b4f82b611994b382b17057d902fe085fd9f5b75c6b7f49c25b83a3a2ffcc3d595f9772b6907fd60df4bb892fe6227dab67b998decc52558b71dad7995a35e1fa3ef21e89640462d7cd9e010974577e72398a27a9842e45780a603bdcdb9ad49b82584abc1864daa8e18ef5effd1b0e23e6cfb47c6441a465023b9985b0020ea2d54b16a7fd2043069b70a891a5464197f570493b401c90e041ca7cd5eaf8063fea32c5d5ca2fae4d70210c0eb2dac7d56a43317f8904154336388a3e8180532d0e4231fc0ca42bcae3a5bdc88852f28c0497134391f38b5acf2f3e54fba9d8ce4f9fdf3ddaa4695c402d7899cadbb4abf15b026ebea89a4651d3e7a27768dc923404a971cc071d1ed0edd328d8e62f47f5537adcc05ed89ba3ed4958d287c8bf5db0afb724a31e8d9e8582175f8f9cc99a3f6f4f971a8f7b802f755181818d50aa4da76dae2766377b6492f347a0f2b8b7349cb5bc170f286ae45548d1f75f09383848a7666e3000bd8e49669585b00d72169561739c8d46b3650393feb59da41cc853c8e63fadca76167f17b51773203f93b1f999f1a85bb7ace94f72c70a454a51a73f95ab5a1d2315f05c180e342df111e13537f31ecb123834d9be9f357c2de269add35c70f645cf97aeeca7cd8ae16dabb43efbc0532fa89bff9bf3b0232adb42a88c583a48a96307e79bc4fcbc68dcb2b4265bceb84980c927280aedd075afbcf8406867e7b7229f1d69aff31b6255c249e00479d5269bf135d5cdbb40766b626e24dcf7011095f828646d1506718c92c5f658b0463cbbf4564ed3d995831a031460ec986f2f957d84f8da9d33432e7dadc0f92bb4d2f853311167a12c42c134c87a744841fbb45c1fe0552d97521859958ae75e097b33b2c41f7267f9015dfe30b8145ad1c75d5f28aaad6e335ba07884d61836635104ca78e5134d8475e7b592a581721994f2ae7aa4a04b0888279c88280426c76170622cf08be288b95eeeb7e0651952428d0fc82c0b343827301b67fa90b9ee585d92e930e7ca9922acf88f9617c4ea327018cd81062a39e995ebb60b98dfe944a6c23153a1d935908aab41f0212f78c8adca3484c08e493fe7690d1eb7491fdb6c99d74a0c1690ad14942e38412a355b9d3e2203ef4ddfd7d133370d6d97b9481651fdc0587793ffe0f1974b8a5c7fdad08cacd25b03ffd2d2bd802de6ffcb2fc908361e98dd5643d5ff52c045c1fa98fbba20ddba1c6d004cdf7d3add46001393c64ae5caa32d03af1705329cc514008ed7611ee66102ca8d058b40d5c3cc0dfa877b98d13be3e4d2356152bc9e1ede8f579d3d96bfcca6e420fb3103c73a69acf18e346b7d40a22ee15fd44c66d63826700bf27e22e3aabbd70b5e200eb90fb84392530c54133e25182144f681ccabb8819ec84d4d7a5eabd980ce0eadc2879b55ce95f5141c2ab8d97b88e8a3a69905af2666dcb64bf598af0955b12741933c646570b5db2cae00de26a1423b6ab2f1dd8c261e54dae3979dc867289a6acbdb0c3f480a030b7779247a07a05db17df150568248f26dce00f729291e9d730169de4d04ccc627a4848cd4ba3b1c8c84feb599fc0b39767debb8a0f6b47c1dd6496be6deef5f9c4a0cf62f9dc9ff1e5fb14a170c30ebe9c24feb01c1de89760c82387ba48e31faf45bf8e812e0608840508749e4a10d3a0535623916d4a6d463e78d2bd975d0cd653a7bf019c983f3bfd93bf51cda482fd546f6dae5ec1a8fa777dd85d3d0385b94c2068286fd5eaf43108889852047decdb0298278cf811c91711a4ed2cb8df20023a4f4c28ea61343cc8a4dd03f783f7d428d10833ccad0b61ff6148a4a8171437303b43d2b64035e1e7511b1480387e3ee207b11dbf87c1d26246aeec9b48334d1a09e60234906a43bb42e15df84b812c710e53da6379759e7f6fedc99ad8a87ced01019521bccc7190a5215b6c8984a8d3b9d3a9205dcf20609362f58c28a1713f5045610fa1b35eb482bc4e1e5fa7d55e874e57e5c96697e374f5340cc2d79ab398c90c00aa52295ce914d31610ccd4816e27bb5deaf3ef7f768998e13f8ae2c6a4f58ea4d2686260c8f09a177afaa49c5037388f651d0cc4fcc06308607458a0d798fe9b00bb03015c4a9523e80a755ad51abae8b1f65565a8d785a0671d498398c953cf3e701b11d4894d725abe0c1804758e6f71ede5aa196bd39e94a2cd29d851ce099a32d87686b7dd1579003120918a685cbc798e8f80c5321f3a7a2d429b2c55e1fd6347abc0785b5c039fd7c4793bc7f2ce1a611dc066c79f7e70415364e751433249426962c84fa6dcf4cfa9cb659610efdf160f087cd224fb14d0f1c70822079dbff9b0fa856a29a09437076bc074d907d48b776a8c0d240eac5b4b81c5b245a6efc8a91b0956a24505d576cc4d5cd95b1a9a478ed5bc52b3ec7240508ebbefe223b33d9485f744bc74d2ea8e1f5a2701312108e834a411e64a3876fc7f063bfbc63c7c8a8e0af54a34ba289138aa23d1da1b227a2b946d2c08dbccf418f8a47024a31ca6c6dd111960a0f796c1fe5661d81ca01b836846a26da47cac9ff7b6247edc12e1c027191e1a0e24a9d1f6ac0f88324d8df1c472bb4cf71bd3ab0932c12005f6a94cddeae3e6ba236ddd96ef52a4229b40b945128686bcf3154868f2e917d4f19e2b0c8db8a50e4366f2cfe58ca58ff2eb6339bf1705e12bc5bf3d8eda591dc95284e6984785220693a5dc0d4277da654289c0d8933819f2ac4d4bcfb97c06748b925501e033c6a0f80cf5a3aeb0ab422078eccd3fce180a5ffd7c241048aad72560aa28319cf117b7c84bfae5a341989e4ac21ed5e82ecc8438c88ae05112829b6d23eeb679fd5537924c9f93e1ba38b37af4ade7395168f1aa66b8593003a315c5ebe546c890ac9ec54102ceadff9e39c9a2543fd3b3f1f0adcef43e1913af1a8cee2e9d1a7b2ee312204121fc92de0dc1e57fd04c67f31d21543e66a2d0c301c147ed135731a47ab240142cc2d42460ad3b28af0e5ca00da52fe1be317668bb7c4a7922225719b09aa62ec58f044c3bdb867bd8b1973b0881b139ab5f0165c512de1a4620d570468d3a33b4ce1df40886a1686f20ef8accd0be4e3a19c4b3dce2b47a2274cafa43005ef9577fb4384b27fac565df7c7940c419231037c3c9be8e16941cb9bd7fe19fe1519d2e047a2a018b50c7a5c740218ec220a27f20f0fea44ba85f9e0b29e67ea2df614a30b9c94bcc04cde8120764ee63319a4aed21e77c9b6b38864354e24e323c7cb31ea1fde6b1e08403e5a1867603c69c204d40d179a3c115d6c860276a1a5100505331d87f237173f277b5392c991427d658c470f00d033970556f3bc292e43115732fb76522fbc84b1c3ba0e87c20313e5417071e348f200747390275e20401e9c38cf5136e3c1502c28d8e74837807fc259bae3ffe4c5296b611eb51f06970929004dbc9c5037d8a4157b505f4513a82cb97c65c1832c8d3a28be9209eb869deb67211479a82517012a6706fe537cd0287e3df336cd4000cd1abf770d048318dd728e8244bb3fda991ce2e9eb4daeac719fab6404af359fec8ddbcf21c8d32f3ea8c7990ea3d342d634e1d6e49dfe225cc39d236a34194022683a1a9999f90492d7a1daecdd5a58636442e43763b6760d8184407dd12a456e46a08a37989904fb49b22d85bec80742bdf519c6a42095ee31a135bcbc359900b4aa6a9976b49a7e87de60efc091cfd6216f884f9e7b04281f6a7a2fd5241c0498d23aa0ed2f161fca826524673efe55d5349feb3506f2aec9c12a99387487b8734f262638c69a2930af6cc9c45cbee2f9817e22b422de9fb122cfa029221d348b34e98687583375eb1dc076ef27ea6f509beb273175a8251e0c2710706ecca87a22aa84a26aa83c06b9871bf32770536f1689494d1c71ea5744c9f17d9f028b3682dae0085a63f09d618e2506fbded049a9dfed4c4394c69b0ecf9e1fe93cc9c039b152e602f679057cd4ba4b7b4e966f477c3730fa08581a2c76627ed0837e31097157cf0602dc1e021887b4d61eea961776491d50318eff80fb07ce38ffd79e623551a94de294dab180009626c9c9d09165c6c063d41d5e1dfec140528b3f3c782313c56c79d68a76b8b2492b4b5fbf21b77d2fb0038cfffd5b6a44ac344fe6a4d5992b8b0cf3adc52e7565b2129b18a7ba64c8781331954fc76f9d9b6880658d3f666a9acf8c694ae69195df7c97620b5839355c21a7fade7f274d9cdb54e3034d13b86136618c7d54c362881fde14ef1f46f4f9475c6ada4dbf46214d305735ea78bbc34a1ee90b22adfe5bccc203c49766261806f2c3621b14ed05a9318c005a5837abd0413c7a9de1416cdf13b4d33dce66407f14e1cca4ade5f101709e357f5601e585ab00d74d7a517c5a5902f07cabc7efad0b82bebad070adb2449b87b434fd8df00af68d21e55de8072d24a0d9c4539ef63cb1a88054edfddfea386a5f77a3bfef0b9c8808599c142c9757959ffea760638432547fa53529dc94920417d21037923c25a3f86107a829636952f72fa484bd20cc0b42c9dca54d4efdc644a51f136a9f76ee67a9c0a574610849c3ba1aa86530947aafa96ea9e147dc774dad2482a02651a96ad23818a09755675fe8baf6ac614bd507511b23b920e7294c173bf64408827a833fcf0bac96fc258d11693a36957db4eb747a7f607354bcca680f7707c26681332135fd9e1977107b9510e8e4392e401dc280a58a9afd0b930db435f58b20b238555f34f13ee06b4895e9ad34e4291db15a190e7ab74d25dcb294048e81fe7922552e405861b1f110483d247d6502bc3e33c775233d4956700c881ddc32f13a738f429f4686f9da2ce3d106cd4d273c6586ca68bb91dcfbf0482e941e135fc3c2da265b75ec9e9049b853a19f608bb86e305107848e36647969c5d10f26a69bcd20223d3dd656884dea32076ea00fe167dcc11947f13e782300782f193808d1045504c6fabba71e1a6134db70032739b2555731720046473306752a2dd784ede230d4d7f3f2f0b4feeed9436318d92ebf797aa3cd0115bfb73b9435a96298e4ecf22328ec5b22c314218459a98420947ef670fc594ec83357294c11104c2837c2605b79c813393a0fce34936db10d89733729402f8236ea2335acf2c1a3b895d3aeddf02824003ad034457fe4cfc1afdf6758b3be8e9712a5a78e2e8fa933e98597e9bec79815298b9f958dc07517c1d51ff236f7c570c73d305b44f10df7d2d88f70a7fae26ec8a93f6ef3c09c2457ce274d896a6d50826b1fcafef9156a7aa592a89a27aea10fafb43a048ba1d0d25570a1aead4c0e3213a68359ee05916d128b890853e1b328da79c414b966ff503ff233ad914f1f09bdd910072d07391961ba3cea038b13964b6c3ca1e0a679ecb4152af6f4d2ea6152871605a29d635fe36a8c724c43ae420a377ac58980b8307bc8c710e9ced5d39d3198d5f88c0cc0011cc571384a322147cf43938db7e0aaf925fc7ca3e6423621fa5f1771bfb04c5c537835c9926b92af00613d1335eb41e62409c0e10e9ae40ef84d48de9a8d6dd3236face619cf9f6f3c3e10ce32c4c9c4c26dcde362cb6fa79ca4684a296ec35ea0d3b87337a235a9ad7c28068ea5abe6f68126dbe0f753610d5909ec98c418a7e734d759682e6115ff55d4944969e6ae860114248678d91fc607c9536bd1a0c97e692e0ca44c16d7717232af25e45c0b34bde3e640471dfe491d1c39ae1d1931c375c37bebe990b6186e0db68b10138a479dbe68ba13088d6880966d718b70f5de83f8f87db9139bb781db1316c2a4437657dedc1ea1c03e8846ffa5d1c320ab1afdd49409a02ff250f3bcc0c9cfe641fa01e4424f71da9bf7bbcf400eda3c221e5bdc49bc6e3bf7edc65fa36a03c4f6551f66e1f76018e446c7b3a386ca4ca8d26091289ea9d053d9ae5ae26e0ac97964b972088b1afa612563079088eeaeee6249c4f595390c8a95a4b8ce579bd5c861f0b6373302c40530354043f47568d5c87945d01856a22c2da23ea90fae667e0144babe13b2875c90c2b9beb3ed893ed8556bfdea6117046d6411a970af3a63144a53e088b7e434fdca82706983104b9c10bad1dc274c49e979eae35376ae58d366eb0612191b317290fad6e724415a7290de3e117adb5655f09bac8acb5388c045d5e8ec31e48f2cade38ab2df70c1b67abc26ddb2afecaf8115fe6732e807137d5d1b4d7c033bf836c38d3b1469da2fabbaf07214074225d2d40cc327993f14f048d06e6fe6d2dc091c1dc4be5ecd88729148e93ce72cd891c90447d20d834937135521b8b75175af75b893777aaf67f208cc7d2df1ea4cdf0ef8ff0f2d011e733503052f5df54bbc77d74bc6805f85851bc725eaae59f66b4b527c8077d1ecf5a76a64cac9bc27cedd2c8a7a8a821da534501c351a9ef3c5e84aa9a5ee52d99b50771086bfb81269b5d71c019761ffc9d8cc4ef1d1c2b2628c501c1d084948cb18b1f069814f27cacd221daf9a04c2a5ef3a2a94ba39e072b1b4057941e8c1d1cd91521806a01c04976e0ee066f155fc2a4b50a439f662b1c3f1256cb884be80da309ce61491fc26b2bf235eef524a89f3b48215595a2aa8a6997573178a48fc3cb1da88958c4668ec12d811390ed69ef5dbce1841bd2656208091389dbf7f966722cc559136a6461408643cbe39f68f6f590c6ceed7319561a1e8a9d47b40394be5f0ef5dfbcd26fc38321c8f66a1349325a86b168bf6b08a736e097f6f53e99c9ca8c8ff371260c3eeb018630b558dc7d30349a3137e6914a137c70e44e56335804e8195f29a7820bed2ee60ac4a4da94c6bf5eb0c2310a0f6a33a1aacfb6f88445a755508a5ecde1abdaf251a11aeaf00e93362d0192a62b3871e5fcc759d1c10865db263672b11d7c7cff0ec7df4c00e92747f8472b5a08f7310c4d037c8d844ccc11b41b9bd6425ef4c3829b41899374b871c6b1928eb2a804d794ef8e70f7645ccf47703983465421da128df6c16f39672d1427b41468f7fb86d7f0e69ba0d2a04c9b9ebd8ed6a331e85c06af85667f51ec1b14ad1ae97721e0ddd3ec2e9ff487462171c37a7103eac6c9a02501f3b340b06b391474e30374d624cafcf0be70c426a56051ce9615cc4809f118856558201c912a2403a91fa49d3ef77e979676a08a091f85d1fb83247415a247c23e24a58200882f185a0a952579696b38d3d4fa30aa32a7c1d13b1816018da7cfdb40b8b531656abae2007e6aa301327527ee195e6cf00a65872297cd86867d28eada4c6d230d3c3df2238cc60b92eb42eb75bbb85ad6b7ab94351d753563b70a2a06f9e821cf3b9ea14bf4c4929c0a182921e603b60741972eb46bfd28a7e4fd3f78053b5091898d7d889aef33dde1b17b5a57edd318391d56982bff1e66f4fd29f704db577f62cadc736aca3e4befc1e1275849f3d9eab861b0a4136845501c85f5b26d3837347e77092024b8961d7885c78021a8a06ad804c9b3d2b11fb6483800cec588d7f839c52877c51e6a31e83d8ee2786ca641464189d09f144ce3d4339911c9917ab2e8eb5c1fa0e0129d02e572e62329efdfb73694a8630c57b3f4fe8bec974179d72cea886a793c857e20a1b4bf469c115acab3028130c169fd75cc1ca2a62133557dc441bdb8f22f8b3cc2a56ba8bc24012f397c533f4fcf377cc7ba1be5cbd2822bb10465ff6dc3abd48ee9d117ba6834636204988547996157137fdb7a6471393463c156deeff1c0824bc78e0debf6ca4c64e1c9b043dd586cd9285872c7764f1e95b50007d5860e985bc59e7b52a298a22a92192a8308365828a927fc3b8dcc9ed66c278468061d6d28f86032f81a02516adab1984a679bb209e8184300f5a26c82d63b23c15ff7b5f473d1f01fcf8403f42d7da08348f28cf933f7af4cf4481e373c07aa6d07d11e8f03e3256c3885ab8a1f638297f6bc88a88d38300c4ef3c54a8ec4c82f62de62ec03891db584e9a9cfca74fb10d6bf1688c88a0c5addf24cc671c9c87484af3e78a5e32963dfcc43ff60c94ef0dfdcd23e60f5c2f703bc68a025627071cdc40b826e738389f3615107c7f6383adc88f4718388d7c5365406eeaa534a0a6bc5fa801424e2d4c0b120a457665e8cf017728c14d250a30e5ddb1df216053de3b744d6d0930f196ccd28c7049e932ecfe718f1238bf363641ff901ce1c3f65f6de8ab1ced24d9833ec9e41359e6ddc47503b493b08d79c341c5c91561bf839ed2af1646753b052e9963b01a6574e5b87a05a1b3a4a6360012c83cc468fa76ffcae1a6092d1eaaca6b066ac2420a1eac336826294e7fd4e8a861aaf45278b605f5a5593357df0179df67f309deaf5f702d9509274f0050b4fb494a7b17cfcc9823bbaba09535ed6de5001603b561ad2f83008075122631ca3a2863f4fe419d93ebbf899bea751a80f099474473af1b91d860c29cfc148be7a31ff238e06288a5d28adf26790f5bb702431221d9cfe53ebaf12a5cdd7912871f725ed6e5e7e36d075ca448144f11bdb3b6a1b86b8247a94c29427ac6c9e133632ee026120cf9c0c8fe7c3c464ea3ab6b54736ef07e51acd690f973cc9e2af5dcfe1d7f98b2880806bd87c8e13affaabc25534a1948eaad35292c9745b159c338533be8f8481d3119588bb3d0749f804240455ec843277dd02e68b9142743c11d98118c4312a437326a0229d6a4a7972423c1c16b86b46a4a983b3fe5554a979fabb80fb1340be086891916520529dde992c04b753e38be39144203e3842790baf9b616acdb21c85851a0e3b96562565891b07aa37f451aa8a9bf6fbf76202cb08d3be1c3e5a2fd8d82bcc292404bcf479766f04b2bf7fd74d04ef2fcb85c76fdd85676305bb4bb56c7eaafeff55d6b1ff01d04893c741fa82ec120557d33f15cbd976a549342a71aba01b587085464b6053aba1c406cdd4d5487f4783f2f039d3cbf30f96b206deff54ee9da0df159e6ac8bf4f3e4927eaca82e0ca8a4ce80704e5aa822cb8093862c7cece490a0d55ee682e18e725ce3c08ebc8058622ac2c0727656a9571220844179b737b43c01ae5deda47885f57c5b236e40db881154f241e8172c12220ca097d20e694e213907253537fa832290aab3a1c7cce138f5a3e8d8e09a2ddcab47d8a97637ce8e118e92f093daa8325443c736af3f6ce0787e50221a18049657b29605d20b63d493d5b94822a9532ca0545fb5187a5442fb5574926d7779923f561a63b16d88c7172e0c80e4aa6d6dff9ebbedfa1ac1dadaf772c0c8890b7f619868a875a55952f59c728809b40c362a30d8993041a180286df38e72e46522a127587a6d48ab545ce068bae37aea2232672f36a02b097320a2f593e75c734682a0b9bde9b1265f6b4bf6c0f689cf417d35b9bcf8bb836880bbaba82dd7f0f1664bd95cc56da3c8b1713b3d4df22ab6470d9f1696100c929905377108b3ec7304fb1958b883e15d7e1ad478812022145521519f3efd9d23622eecfa1427cc0b0c10157e297fd81ab3a37dcd4a2ea8205fc03d1e8903f6fd36097541ffe5cbfaef2a7f3a70f75aa3dc863fe698f2b77caafad8784f5927a1f050571b0a9990f5215f12c43817906ae1b78999841d013fdf8c3ccd69fc3d2023be3abd35f4e3edf2a4344d766a589ca760710747b325a5d0e351cd36cd578b7b321766d0307b65519e1f1d2ad554b1399a2dd9e351ecb70c5d884d8566d5812cb22140551cedb5db314349d309c1f1e83d0e4f50d1952b50ee0b61011aec1743587871f27a1deda01befacc77407b3d19ce7bcc71c161cf8b6d142e6e889047e38c248e477076893cefeb348641e1ff91811e1cd322a527bdd24950a64d71ce41fea44e0981f3c6df17c6d7572a99d3b0d669d92c1b15c63f8ab9aa0603e7cda5de3185159ce036e074a216d9fbc33a0fbcfb1ef16369d117f1598d05f70110d29b4619c1fe4d94bf3abb17041c41e6c757bd17a4089de5f857893f4a7e2284b8c4881a6843201e029cf15686910bd38ad6f8230ef2c8055c041043a2b5a31390b26b5d10805e2b993549a758020764bcf8d1317e73b2126117169840c9fc4c1db314afda0209bc692c4be5e4cdc1c1cbf14504e0b1b4e96f8eac6b5413e42b806b86e012855437b4242548091c41e6e45d1142cef9cb45ff6d054241d79b0d448d7166758eddafe1ad32d8908f735e04001a6905d107b595e6a64e704144862dfa6d21814b4081f7fa4683f62f7eda010281a4cd471006cb5bf86bdc1cf35101ba84249b45be58ae6618cddc51a8c6b21002247b66a93d917c87c3244ec776a3644c77de6aa989d62ee2b6dcf152e40d60abd2ac32bbd389a15da37ad9051e80a517604ad2c1c03b1316275a5113401a247884ce6391d8b1089c30ded2170eec93ed1d07f54cd93ab7522c54442181ebd16e927f50b52f536caacf40c822431998f3b44497504bfb4f5259172d801521b89ccd59151a7f0471d83ad4187f53ac23b814522254332d4e00597dcfe86e3f76a8705878ac90988fb511edda83ab8a0059fbaed24899d81f219eac00ce8847b6c0a187a0860facfb715418368197d5973ff58e8b9a24b644ec0a6b924207229291618cad64da1ff0c3ee703e0abe96c05b763b05b31a02b242398d8e774b68c6426569127b10bec1a01a620af815569f21db954c006ca71c03fac33506427a6c03ec049b62fe93e4881b5456011526c5a32f20a4c5a21c965f05ed282839614faefd726c7db6480dd8702afe46cab6a03b536b5094a35c1afd2d36e45bd9299eaf586e2fa8e975d384d93232d9cc6f0d351a03a39a78d9a5b4fcfc3d2909a2a2a15f9cbd513e174b32b1566a699e4d80b11b007d7e1eeae3dac41e70c81710c1eaa603a65540556f8c90b9b2aa6877fe9a4b90d9909ae0538a029327e34ef3b2f88ed05c9d180a0674f014ccf552b48a442b3127666d976d5646e9935ddcc194b5a0d1a9775d475d37d5d32a983991e297b18404933b653bf5b4ca3af430a5691b8b49eb653c1676a58723cd27c15d3c1112f8917e65c00359ed373a48793d73c25db32acc1913b70e932c415a5ad904f116c810e3494a0b40d6147e17d6cccb961ffe387cb1a016cc87f521d7020689d820014f34f455f0ea080b70ff500358dbed0bbbe357b91f6c82d3e89984d36d9bdba3388f3d85cdc1950c401d24ecbc642891b7d16d076ad0fb138538f9a34b11a8c6e574de2e1d491b7c869405ec2fd4abbb6d30a980f7d69e609a1bdeecd40f1f7b16b8c1b1ffbfaab40365a867de08f8ab72c8f26c808f014a1ecb5b98eca4b9018bdb555584140b21bd6d6cfd7e3f14e991953b8d1b99c66b4a1a024802a0df3ade4535c886657619ba4b26a79c6797e9e59474f03f359892eac269f10d2a02dc70e3ad45cfdd5a09108676fa6950f4b01209a9a14fc27b1786d6630bdc633bb093ebf0cbd2ba5eb0ea58c53f588b7ead47f4cc2485ee18750f5b4bd89c1d025813aaf9204b12221965b89aac35da288e95434a5ed61af340a819ca9617fc9aa0be4e613b5140ce8953a08e66acf88a6b1fc079c20546baad31240f3ce46ef78924cbf8530c084b8235840f6e38d205cd4ddcd92905de24f53546b144ae4351d9eab33e434a08d81bc587b48eb7d9f318fc542ec60884f3b45dc818e06b23754f209341dc490f7dfb49071d0c63b851f31c2b82e10bad35afc22fad897bfe80b5559de79eb8b8032155148b433641c9fad0950d9f7a42bd3a40c9e6b33af20bf1cab4b091adb5964d05d49ee3868f4def4830e744b94da39fa3603219e2e52d716b7ea39582ac69e9d2905fe50c17029f51d98375d7f66fef8635984cf149363fe39187716e20e69bc4a1b0d3137d08c4286690bd94272f1469f18cccf67eb00a64147579e4fd967ac12738c91824dfc1a88a9af81e24661e8d7569351eb2fd4938f4af38caa085ce05d6ea4d058bab9470ec92f3d212e37c69a20045c1d7774b671f0ff91c962f82a22e594fef758f1019b5e82241242c07247b1d920a3f72803650bcd4f97136d359b27c8e52a3f8e798186b9d967d7358a6a828d82a7cb9db5707b0d243a8ac1211b75a7c4e6430827454a0e985907cb90f49327aa8b5ce06aad02bcfe39d4216dc20a0a83a3ea71d90aa9a7a4217094ac3fae576bed79fc02d268e8a4f9144ada979e174fb050bfbdc86975598246a98874158c2751eec74355a2e9cad960471c485de86983fab31cb091705300a630bc8cafec7a2e90a0ffe810f5352acb54f8a26a50858d5d1a9b5ac9cf5a1d730929fa7486182ba17d76828e7b0d930a187ef0c1f6051eb6ccb55f7468a194c90dd66177f0dcedb9415d7d1def26bb1ddc27df19961c7a87d2b50bbc73f5a431813dec7e3846e727b6cfe539a0ec664f9f4bafd614a0b1e150102c08019b6b6c94e8bed9230485bab5889bb71ced66026d17339e84950325c2c9245f41811f56d487bfd5ac24d351905006714360f8d2534604099c22b6628026f667e7807fbcbe2a53d311d35e936aa98a61cd35369cc0125dd6097ea760d63920e152bb430cf2f645f719ffff2ce750b6620ca604812d31a482188cd995a4a10efc01a5253bf0058bd42712822f4ab20b90f480cb8357d75cd98ec18dab1bf913113af0c541ea024df045fb20282bf8c2b9c880a783910bb345b463ccd8f8f3257ebae863a06454a6029376d1949444073ce0b846ef7eb078e3ec59c64442e226dd4d1d12af81668868ea343dc281c044be6ec016cc1df42e33b872a7e52e8731c5a66188a45304401d91d63215f7d827ad040d44d1648488c8cd21f029c50d615d2d01a1abde9196396fadfeb78a9d2b1d0200639633c09d75da1fd34cbd7abe9bed137a7ed11cdc5adce00c63357de05542f7c1372154bb79724109b3d10322d9b5b88fe4740b090d890d5658020a50251c8b8733b8b0540645c994b2901762dac1b3c11c9418b28b28cba7432d8b523b433e7da757c3b7dd27b2a58d7b3e8e334ba129c29ced0c6df5b6363f7ac7da2224cbbeb61a3ea952dc1126bb7ab8fc525934c8bfe3ab841e7dd3f3a84505b17654888c1e53a8cb2daf4bab811075c55c7e4a1c549e7a1167b52a4d1b137cdf290b830da68e8650fb3362584aa7ce9ce38af2365146e5dbdc65ee89ff2efda2ac620f12ed5fc48d1149b5c9e3f468490ec14852677dc3a616c11571b1b66569e85f12d87fc528b85b3575b3fe8c3bc424f8da016ca17c6b5ed93f63b03f8fd6c716d94006e074f91fb6a5d6dc199b1ef790fb119b4423b6bf4b651f02e0c3078e3a9d88ac45e8fc16ea089cd9c413399d362289c65bb0e9a8d5e4058960cd6ead75960ff0262bceb91cafbeb52e4046d45cb7f5c6c3c7d00796512d364be72d516d1482115b0856552e80d3906c98bb50a02fe52ef63b63111d720799b73cc5951f2eb340218276fd868e7e29483b662eef558c981d32f0bbb635375e05a67b81c366c7d9d1bdc084b76343e85e1a263b364597cabb6948dd2238f7d3b0b2fbcc6d3a683073cf4c997bb0339c1955e70cbbd62765820b71333e27b85bce129c26a850e69ad51debe76081c9771628348d2e501d46b8eb10d57d65f655a8a1645f69aaa786d1932261344c7553b88fa9d8db66521fa935db4d9782068b497e151085e5e7d97618b34e1348a7ab623e2c971bf5a772ad1f46844c116296af5dc08f4fe6510841697e16af6f643a55b33759136190c7ceee5f19cc6d1dc8a3679afa8dd7454f13e99797fb935fa26f964b5574269a01e576f3bb500f1aac00910e54a2728af63dd822432bce9050301d48629f16a0ec4b1b5b84b042c9aa3d01ffdbfdfdfd20a1dff842eaab4dc2fb430df1b912825dd0920b4ea954e30b8b92334f9b3c39f4e46e85123b6f9fe2b53c341e70e6040566aee3bca7f7cd86f2600646e4a3cd41f928943d10ffece71777acb75aca845394392d90a589ba2d8a0e6a5dba644dfcbe6fe16b75a55070acae6828947757b4de9ff4c81883f4616ed09ae4cad03d8c7456fc9c6c99aeb4166afb5dce6d4f304363f5f0b2630d47648c58bfce3e4dcd7ad845eccd74d075ce8d6630be42dfdcb11dd6f62e9d98fb78bf5f0ad2adba238fc1949dae137eadc779541b28d80f5d4aa52aec0ea05c554b316160b90b1ca06004296049546c4dda4cc8862b7e4762d3e4f8c0605ea632d982d39a2ea0fe10881f525489bebeea61d2ed442c3dcdfc2026904a13539a6b02cd0ad8ba11cde5565a4bbd5a1a05d686d5f5a3ac6fbe71cd39f1ed3080572e58ad07f50ec04b6c2d6da274788d630f43fc5ad76dd6a82fc49103f63cbda1ed380ba1cfcd3929613371fc7e6de0488b8c109c67fd3b970f0d998794e683f0d18f6ad53f8a2557a3eae829dc5486c9e7daf6bb2f38e3e04e0d7980337216b870905ac970a8f1c54802f05ffe88503bf831d2359a19f62b6bb5e129ec22dabb19dd465099bb0858c05108217363214db2fd93270e84572fdb130d011f7e0fb192817e798df3d5e3df49b8c5091ff1981343b375c0e28ae29b5b32a8b8fb01d6abf5f84d6420640aa830a4dc6a19f0594212961addfac4abf58428bcec0c6c9f4f59e526c6e3b84972045298fbcf88de329adeca594c1d7fc753ea31bac95122f13cce9f83c370e0eb44fbee85471c25e1d05b186af40c631dce8a7e27715fa27d26657b325284e9be1958547d02804c0f0ef3c714075b01581b4f3b58d49a99604464df298cca47a2128adeb0c6e46ff681b6ae10fede63fb1aa5f379837af2ace7d3741ce6d6dd5e8115b79e3f9132ef4473b8fb566aebab10cbea795ed7ea6bd7177792393286ef6a7e8b0ae23940b958a1413ba824103f3bc0c36d389818e79f986b52cd0d0e8d08fe14727e6e2c595b1c0d992774c66134df901ae083754e511860f953177a7f2346ca1d0feb1339ba3010246550c439e2b5c06c356959d278b45209a24ad16aad00ca1132363a9cb952fe35fe63edb87b4c21d9e3c9a402b5212c891605ec53895d71e6d8bd8ccff93022dddb1099e6860a41e18e497e72621f13e87390655b487c00b5c2d3029fa8c6725c8e544749258acc3babf5451aada69565f85c0f9ed5f4a54f14b0299a4f9c5f0004110f3340f5964fc8175c2a04ff40df2fa155c78f5286988482c71360263e54c3f6c24f5a1c8a2e84242246fe385dfb44042cff8465848aef0e4bc421ed1ab543b90995479b6b64b18a307877c1905b2ab326c96a55fa4eb7887a81a50cc7980a364e51cfad8b5fc47039f440eb047d2a7007606df5cb1872de4ac8771a4959897a10a4c41cc8b74b5712ceb2c001e5b21cdee1619e0c2b4ddc7127e5f02551d2ad81a4a809144b5cbd92f4888149dcae4d250ed36bc6d23ec81ea325540442573bc4bc1b25ebcc084ab2b59aee1ea2960d1dccee420c607de93e2a91ac70cc81cbcbe1292742b5ca04be1ec42190f73e92192995e846b7a087cb62b44e310d79d48473f4f1b97d5728098521597415fb11c0345e646358751e67a356eacf1e8c4cc9cd85ac9619aa14d3b34f1dab0a25c14956ef40070693fe981f438dbc1fdb84618b968317c3a94e006c466643fe7a722e997fb12028d6b523ddf6266e1040b6ec05fe8cc491115ff312f55520cfb0f97903255fa553237c6cfefa6653c41328691f97b509234bb0118706206d4cd78d7e730162e47e900aaa96aa8d1c10d02e6cb739205ce84216b1bd621d441b24aa77e1258ea941719eae0bc03c2c6bc867b8bb1ea4c51b6c2b6d7650273c20d2553b984e45cab758a59de5b7231cfb6abbb61f132c25e7da4e7d76643b58232ee66453fa59769470541db13733ebbe6b66175f0fd756e58d0586a9243353c5d98c258dbf4cc91426be7b3d7068f5ec7f23ea0adf51b43389090291ebd19b51de51891e223d30e9f87aabfcc5913bac2484c022696f35f0d32ca85df1886b10068d3c2cca79de3f402ad2e3bd73665b496451aaf67ea0a776d52125418a6923f5a1051e9d891c80412148ea4309043ffef079a00c7dfe22c342b30a50860ec316fa30be605344a9b5c53b0d8987156c6607072b570f45be32ced493efa02f5b8d1543e0faa2667618b9bcbe508ef78a9dec3a6676285a8a41360f271f3eb3430271ac0c443d3b90693476b7d6896c58e4a1efe5195a5582eae175a9fd4e558ea11ea6892bb227d402dae3212ef7cd23bb455aef73e9bbea55392fb712eca9a4355cd8568697cace080a56323fe5d52ce9967612d8b56268b85ba8d5695663b05c0f43670e7c621113142b9bb6ca5829c3328327f5f10bb5c7ba8f708a7d0f1d2c33c7f3a10e8efe2a54aa951f4f2517ed4c14a2a4d276d3d89721f720f4e459a4dddd3016b575d28f29a3661349d7a9056fe536487a44443a2658ea28128942924495da206f13e96c8ff948446614aec4a785f77a3def51c83c2a5085070a141704d0ccc3cae86ea54c42e49ac8b80b2f717e850db5a0420e0fc6bb5ab031598b7fa27f58605b00e40893f5bc38d70e64f042fcd12446eace0c9c50887d575817df0b2e3008a3db542588e403a26900ca0f421bafb79235f1394056b87762d8b46b7db1e690800da2d3fa358f9dd99292e45a24d4547402fa175b96d4452ff1cd31aecbc01f589b5082ae450275fe822ffdd9454726524c4993b50cf3e062991ab9448bae7f0faf22d4cf139ec770ff5aa87b0f6854e02d97412a64909d65f8654a3c6e654809dc45472d1cbd279fa0fb05f948834b5081418ffbb4fd712879f9fabf11a7df7b66fedf2faa807a4aa5518e8a99a16bc85d94665f0ba3463c788b74685b4cdfbda47f2514d17f09392535447fd738ff3eae59d2fe70d220f3e738a29b5362b938d8ab2a391d861234febcbd01004fd3c15f61e8e290fcce4858999b1c7158e29d0657f05aa2ab0c513edfeff4e2300f4e1ab2bd681a3baf9f1443fa35040111ba69ac239e08c996cf959940618b1b7056cc07c23677ba9f10c69c39d61a3b626af01e1c2293daf1166b8fefff2ed5c1f9cf8f4df793ca6a6c58e4e66f962b169520c4db6a4a5a1deecdc9ff9a12d45a2e19b679451e2816cf1329302118c77c8f6a22b883f47d865f67874c90d78a54096fc20c9e44ab8042a266f1cf7e924fa31ab0857a1cb142de3f6df367d5532bcc33600757d527559e45ce009820e8a96aedef4569150145187ff60dc56a39a947cd5f1503687f3eddf2d0eb0487937135c68e95b427a7c2d58317d74a546eb966a32e46e6933173241ad542ca53123c8421ff94b8ef4aa84559f89d44c1893a4d22a3d5b7cb049556afb63bd778783eed5aa7b8276f47e07911b350eb6c19285e86a011ce35ec0e5482ca01117224abe1b5fe3bf412e678109b8847a00fa69e84b63ef01e848444dd57d3259c616f61a2ace225ec5647676a362cfda366b7af8421ed1a80acc4d09fcb62d9bc6307e97a9eed69cb4446cdb76b4ddb5d6c704d6e5b53f34506bda65187459b5e254aec6c64b6f032a7977fd443d8ea1cfe1f0ed92e4afc94543ad6510d4591ba57c696544159386da5535185a7d7aa88f2755916f8deb3cd17319ccfe8d4d3b85ad8372e83aad6883e0292e54c5a3b1418f443f0001ceba844fee850a4d5bb2e57cdbd80e08dc97d96d9dcd1a6e3c12474f27e398232a85ff2bbe859a3a49e28612c02e790d0b62b723faa33181eec8ebc4188925b6612f3b09b21ca7256015586430e998c3f39243b1db8875b45c9e626a2f49214bedd224b09cf2af19672ef4f2887fd42a987d82d43a521bb5bb7b187806bffdc8e897ae091c3ca4fcdb38492aa4e042ac55096a31ccaddf949cd0c48a1c4142fb8f7d80d0fb8157da124380ee5809a0a27a59c716210e1fd5f3e74093e0a7b172ad9192a37198bad795ea85c69f486cadd0cf6996ca42181894855c479714425346b6ddb8832be81a32495838c1e86e818a9a11aaa4c20e4dc9c30d0b34438cbe1aff971ee583f30ab7751b944fc6bb495fdadc23d1ee25015a5ca4a6dc3bb738408dfc38de17673ac2f9acd7bc4bce9da9bd366263e20a4a4f94e626a5e6be724d41e91a68aac76de149b881e0563b9fd357868154f1c6c0d53713c3a5cd698fb9b1683831ca6a40fbaad05b72793f52a547bff7540e0775bb76789f68e163d0fdecaba3f3c317674720c16bcd52930fbad4cd483f8d6d8757d335ce08bea5c22aa582e6f6b90e5103df3872b32fb5c021cb068992f1302149505ae1685101058305c15271d99815284dd292dc7d5b17b2a45d8386e8ead699414c11291a840e3ac6604b25bc5b0dd5e607f84036018005cc000bc050e9560d65daec059abb8e798eda490df1b3ca37fe98bdfb6a935420821846cb2b7dc3b37105010ca0f9f043b97097683e6520d28ca255d24e6cbe5e18e06c801b82fee58b300ee0880bbc3ede14e243c4994b46ae21b324fd1aa1e1315a658ab4cefd725a628af08a93f315e7f5abc1fe376aff60148a33e6b607adf335d696de5a17f650fd42e9259135d7b7543584778ec9159eecd3007171797208d0e38fcee4d4fbbf3c4fe64bed65af19c53744fc01cde3c09bc61808b5e5d326b4ed4d708a499db5537e5e0dde8dfa1170278e161740b76007c055257f7e658b3ade7387085477762c658558e111e3b8357d557aeaf5fdd71e6d1b9598de00ede3e0120ae4e70aff834aa3f2aa4120a10f5f3f313cc514f27084ef01bbd01ee38b3014e026fd8cf1198836e163c0c6ac16f3fd92e026fd81b01d28716868aa55b88871b7173ce0ad2b6a95608f75b5d15c88ca9a735481e376ea62b9803c463e7d57dd856df68adafbcfd26d1b4966223e657b73d7c944d06f0515e41808f520c05f828bb60edb6fadc3e3f5a6db8be0251dd94c3dc18f7e16e37c095595657a3c0172f80004e80970f8087f780c7963c965c299fe9508cae44a8bfc0e396ba003000fe82473100e7018f2d95ab1ca5f5c47d3b78510ce501c0630b00f028a6f0181e850fa232fd78042ad78f360c5a221c77d05c0ffee41e7883de88babd03737c55e592ae4897b484f21837657e04523c66a0479e3f393907d29cd82c7336731ef84cb73a3163c0cf392f4799853caf90a7c48287ca47a068aed808fbedf3f6db47d0d6cc7df20a90a6fd017265826967808499597b03244c76ed0e9030deb557eda22b737562c6ccacdd7467e65e2077bb528a4f44c03cc68780798c187682df707562bed0ce5dd1b7c3c33bee3004e633bdc31d1203e6de9c15e35e873507e14a6d2261e8fbb50d12c676dbd652cab9c5fb71713d2c5c72b8dfcdfd80746a0bf92eb062fcb92c2ebd4a40244cf6bea80b12c62bc5f8b8e57b295730bf30b8aa3c04b2eff058ca1d0ae44b0ae44bbffe88e22d1e4be249e2553a97c5330859bef2511433956e4b1eebcf48f3d8b9c6cebf48741e3bd758dd905b9c85e5522c1ae53569547b3f9f8fefe603d2a82f93014e388a3f451c11837045ce937c9aa8ad69cdeee93b7dde31cca77b9cd4e63bcf13ae2a70752e2f14d94a4190569b4dcf43a160b5a156880993911963b1b86486704250884b721f0a71098e58458ae9072623212642ad8cebe1629c0ff763ebcc5689bc60648462a826ff117d6274eb31c14c301e9408471ef25872d56a125d2198e83aad985af2e50ab14912221a96f8b2db59c51f710d219cd634c14c52b470423408e1886b107fea3449d15222b7c5a15828d61bec59b444e4c355ea89afdc1775aef61db81c2e0a159391f982ae422d2e8ab90a316132a222c298301969997c90525942a5c545c1e5883aa2ceecc49f26a696e9a6723c14b48154559d46355dc978bf53425732ef773f7435e3a2ab1912e6e3ce038f48ccc78ea76b927ff8e8b5ba185d85a84f2c480b6923b96f8e644a84da583a92b3ead5fb1b080802881fe0f734949cab973911826eaff25013ed1ce960ad1add4433e376afdb05b90d6c5324bc8d8dd7c021aea9711a6c43f31ab8cba1a91e52e3333d3b98e976481ac573b9cfc8a32dff50038b6e27a4519d4e06240461918f68890aec358b4fda65b6a2a96364ea7009b89205c495acd3dcc17327099a9310313fc06b643c88ff70599f71693c015c06e24a960475dcb041433f7046cc59af91711af7ec97b158af9164f8821592508517acd562d178bd5a96604723c77bb058349ee3350a38ebf32c1acfc162e1166bc680388da94401349ee34348d6cc816d264c098d8f53498e8f13c67a0e1a78fecc180b2ff1041c888f730ec9a1800f21590ac044e4c07d435339ae80e7ce711d77408eebc03c8ae89879be0314709b1eac9b80d3b840dccb7161ae802b736f7e0ab83c685c01cf717914a9a171059c478eb384c871d61d9003db14a9c9711a7f398006b6296201b9e488213c3a27076e051c8c838ee7f8d839df75e4c0bd2397b0729c465fb25e0373560e0ca3006c4303efa8323f9cf59a1fceaaf11f3e71cd8cd3c036383ee3366e8dd35c1cdb576fbdb576cb5efd2808ba5aa66007bab2511a4823ba47350d9f88a071d687a071d6364ed6e812b4348f40a0cf5011acc6401a102e1d69948f04601e45e679d4b88d038179e0380d026e17c4ed0e70714e42d4b88dd7d4c036700d0e1ca2c19d0e4d650e14a259373028f320f15e254c8702f972854c419633c892902da86dc87d49a4c668aa4e1f4c4650551d1fe4cc1e6e0b5c4ebd26252623705b30f1e4cc185314a4e908a629dcc004a339c64e0e5dc5dc07f6c3136a92fb1f3b1d399d08c1db7f1694115d2908ebe74b06d71f5758b1f8124bdb168aa258a39ad597b9043799dbb9eacf28cff80fe75e675c99ff7065bcde30672d087914a991f198f39039cc79c878ccb98ff547e63067808cc77ca6675c98ff7063aacc952c1957b2bc1faa9d140ce184a00031c7335f84603405c55c85a498298ea74598a803f9d20f49b1c3f1cc18d108f285b80311091c13662a122a2c04450847d481a8a3c3491a93825574894e845a33c6e20a9b2f441dd189b9127d506ba8055ece87bb820fb85885cd184e0c3a74c561812343a5092d116a39e1e2ae30b99e9e92ab54c2a123308473c10e8684a77de86730a8ef77e8a3889de08dcedd7c816ec2673b597a391341a8cd9b5a3fa3174ca406101c12e3a2580cdc4389a7552397036ab36ea1d8178a81d8abf149ba8a71792fc695ac6ae73bd78c0171c9355f744f518ca67adeac255fae1055519bcc982c09f9a2a2618914c4b8cdaab3e2daa140be0029056948e92908829d65d92163c95572b56aec762613360092fba225ab4f05d613e09b57cbf3f65e010c2045902539254b29823421bb20e1899d1c23cb2464a1953d6f7e3324eb87fbc3614ec48cc7601e319f7118cca3484dcc679c07cc7fb8648d729050e699e78f269804694ef3322e59a7898990b90ccca3484d3eeb3c662e73225897711998471e4db03c739933209ff5990ec19310322ef31a19973981a771c992f18a6b64cec23627f0ac4b96cc4319326cd4f062ee693ee63d5830f734f1c901308ff93cd53c9445165964c18ac1ad1b07010f1a73187c9aa72f197c9a18891a98cb7c08c9a22e6c436ff02b37cc47fa92f9486f64767668aafbc6611ed35ef8853287798dcc61643e710dcc63b04dcc61eecd70f4a3513735ee48c63dcd4bd66962518c259a2b0847514c14531985a06c9371252be64a968d2b5935ae64c53cd46a143661112eb950d97e98c280118345b18a43373ec6502c875ad9e4cd5cc9ca57b26668668c397764229f4689968c265848fae63dcd4a30cf11e1741a15a332e9215a5245b17a914fab6afda9f547a6fa157bf48a7c444b443151ac555565dfa028d6abe7894baf12102a845b1e45b1182926704138723d5d99d426ed03288ab520fce1339084a6968885c8a451e2cf372f4a9e20cd498898cbbc26e632d8a6c8bc8d8cc77ce21a99c3601b98cbdc9321e33094f599cbc094cee022f3320ef391caa03098521a677da413532c645c1a87b92c99694624c647da44e6c61ce6cac0b06ef6ca746ecc35c1a88737fc61189c652c0847f147bce30827f753ee98eddcb845b8fad3a93e0a1e45f187849927249cbdc218ae97370446872b370c6e29097ff88ccb7ce6636de5fee1322762c66774f8f8e133cec97c26f4c36b60fe838d8cc3ccc0363f3ce6f37639040671b297f3b2d4570d32eb0b09ee3bb68cc48e30db831febcf8dd992b91ebaea7068aa371dae8753d2c568aa4726d4b95a4557205f3c215f7488e4dc9896d20e9ca6934aca2743460469281642e692d6eff4eec8727d09a4a9b836a94c9e08393c8a96e42674258343383c74c523e632de45ea79c05ce6f45e96200dc563a7a426e63270c7c3922598807afa8fb61ae5a336f97065425b61ccdd8e103b24adda8c3801a19dbb86bb1d0e77b0acf2d5bbd2219c99bdd337870045b1ee51b492658b9888ac58c122ac4d1ac5a4feac625cce0050007cf582d9fb37c3ee084db7030ad12cd6bdfbcdd0fb0569b4d7fb9c3911dacf9dee8887bf7a9f3bb4ac3778e3acdbb9b21584ac4b50880612daa982709e75411aefe7d9bb3367290843cf3e76370eea4e83ae70d4b8764957366eef4df02404eb365ec3ba0d6c5344741b9ab32ec235368e03dbe0b88dd78b923d9a6b53a486e638b04d0b043c9ac681380d6e1e9a020217a9a7398e3e18071a8c03b74ff7e43ea855e3343eb64fc58d05cdad711c97c6bdf9ddb893d54d501076079da6414370e4fad9b8ace3b8362e41064c160e6cd383d5b968ea4697d3d1b8366e57e3b2325718c2b549862b93138434b8c6682a7be9e53dc359070ab11ea271508d7799680d1aae35300d56066b144f45c2cdb8de77bd1cf9d2dfaed7fdf0f0d59bf99034358672728a87396505591e4895949e0d24aaefddc0646ea724e676406e40daaa3184634212c2c989d1550cf187eba1ab4ca6e6c1188acf4feec3e0f2a42fdfbca23c025272d53a728d7e78a39b9c29118e222cc0fb4daea7c4f5944a259d56d51a8448ab269057ab8494725a35e79c5b9d1f4baeadc2c060516c8a62a028268a81a2d814c5b27b193e6597d99379e64c229909c2ef6327806fea10552cee60d148a3bebf00ebe705f30bf0c6b326c20f7b2f401b34d78bae561e3b9cdcb93a20b77bdd2e0887433c486003f8e69c73d65a7f0660adb5d453c15879311a8c2c04616643f5ce5c7235aa4b404a2f9b95201c3b178e102f6714c5c06f579b50849f2fb9e8aa736d31bee5ef1b48f3cd1b5ad2289f4675f62304419a6d3e7b1d12d1158a89ae50ec276c791fcc0a2c5af5e1253e2126a126adfa3ebc933b22b9bf8c04a1f718175dc5e03014c5a34aae926b04618c7b78661d25d787433c21248d02df1904c12c411ad0c671d64408620fc713e2e5d0547f37689eff9191a8a2582827246405de98b3d657fba0c1f8befbe50e0552762c909d0ce43b57a3667613c6f8e6e33d0648e3dd6b6bed7be47a2590e72d8cceedf4f6c8f3eec87287bb8af962fb0c8501d26cb832b92939bb48546eaa202391e54c04191320089a60a009d6551b435b800a5ca20f441df18a18f10789ad1bc59f3c02327235aaad1de5c8c842102251730bc99de1d80ecc7c84a78993a71013ec89b0ebba0e0532d567810c6cd093fbde4fa8492816f2a14772d76ca751fd9f520f5dc9979ae42efde42ef9e42ec5f2589af1e5cf9b61b5d6ce7c4772cd96086768e7d26915fdccf4ee1069d52c19c92d85e4c89212e1581292fbde0c08442761f2c0569ef8345f4140dcbd3a208dca920867409a097399d7c05c064b9aaa8979fdb95c9e01313073d6922f5d7fe44b4f9c25215f5ae1c8e564998f354787884eab7ef88cf76bac555b3dd5a12b999f467509a7512d7319af91b90c6c5344bb8dcc355c23e333d8e6072c690ac4229346f565bcde2e4bf0c671cd22046be19f928bae4455cc547f7edcb48fe74aaeef630f5954c55c753ffcc3a36ac6393c0a208fa2d8353cea904751eca238887814ad618e2233cca07498810530573f6015a8a3e372e210723a1c1138841bf670b89cdc9771bdd64dfe3e594130baf28474ca45579e470496bd5717733b98cbd33541fddc478ce57ed7d31d4119391131ac588414734ab8246f08637ce478725ffc69d5a8d21299b46a0cc17293063f86a3f8d33fb91f82d155ccfb211e95165dc50031d7b3653c8621d703520a52da515a632e8aa6028d42b2c13658ab2c126b37d8c663379c9014c251db391282b24c82eb8acc6529c50b9a90e3edb46abb8c9b3b41e6a607568b8f1e1472df5b82fca1c5fba36724f747efc8fc5a5eccea581d9a1abf972bf777937df24ff69ae4a65a4c83e131fcc98d359fdc587c659d846856cb2b8b896615b901ca2cf7f75af6a4a021a6b3dcca9a77080bcb3dd09d196cb9cd6a2f5302f743c2d8f7b524b496d6f2523e96d526ad5eab62ab335fd41c9aaa51cc54b36880e3b5a814c2b1bea4108e9427db0bca29a5ec3517842b411473e531315335c7eacc98396326e65e205f3001247326b031c029815c6557643f3fb21febca51022448fec9ae90abae53d286dc59a1e5b5be2ce62d6995c581893ba18ec7e329e9c9fde9922fddf1d055a863d2c5e8aad69d50dee962efba7abb5814c2b18be52ed6aa52ee773ea5dccad17676e8ca4b42a6fa5e133b158fa112bcaa72274bdbd9e8663acbcbf15a34e5891913c20c7758744d3a26b9479f200de99eecd9a0b1479edc921cbb01ca23c7249b9282b89e467513c22f0c3f61f051124a2455589147eb9248aa3092a7f7a35792c5ddec6666ee8775cd98cdc7f31102f9e201c91c1433854353de0a3214d3fb91fb1e134f78dc0fee072814d2beac0961cd63f6d3751d48a38350e5a7839e09cb930ac550d0763cd80cb7f11ea7d96fb087f04155c986c7677844d1aaa40621d484000489474e0bf948abaa86a4572709937db23e5048f4161bce061351f086c21b6e8140d63543d1439026f4ec87b24c9fe9957f599270dc607608c932dd037d33041d04d27c0785a7200df55adbfcac4bc28084009dae3244b37c14a91414a2592ad847910f74ae878a6d09f723fb14c46c94d73ab999010ad8702416c51156df7bd1d565c1124a10072d0c810d2360f5bd9677d3e27a3dde149e9295ebf178481a05f38e783ba010cde209297e42587b5aa54dd12a4b575bf8da5eda8eb6a3ed9c74ac7cdc72b672bdd613e16c2d09b9da7c68aa2561360d0523a764c587ae5a1c572532d54fc9a3b69392c7cd07847d50a8966d6b81a54c553c86a198651679e4f24d55527bea148d5a422bf75f74d5e56cafedc5c325c9fd0d4657dd4b74c16e602b554955d2c3044018b2840bb2a00209a460f5ab0f5d0df104154a7aba30c4084a6a8fd73c0deb16df4add912f5f1eeb4eee6b5ce9db6eff5696cd2cd76be9d09577435d3b79340269b6249dd2f2b8c15440bf9435ef10d35bee86a4b716f7666399f096e407e1a8ed6cb0dc2d341e2d89a684ae2e5d65e24ea893b36d28e00d50b6586bc917fb516b713f72bf5adbc9a66b3b1a8caefebee96e38ed43102784a3d77a9d1c607acb6b587e6c53243b0bae31bd05db843d2f80b14cb8cbb9a03cc12126abc5edd5b27743572e1e2c878fa178548bd782a1792d1fadd29ec3b68de1b1a4da0e0c96b08716abed58174dddab72d38798ac212d3e7186dc5c88c932dd13bfac09219847af952509edb553d34c4f9667fa66d8dd04d27837fd52969df9bb5ecbf558aef7a30961f623736540389c81138f9c75e5161c8e10cd6a813d6d8709a106d38e342a5b4268b1b6435759cf665d99fda1ab6c67cb7eb29fdaa451158bbcd2f344f65a55897713faa81c8e10cd5ac15e8b074787aea4149ce08626389123022042587d6e87ae241649f8003603203ca18217b0fa1c0e5d51800561c8b942139468c202d64c834f13af1aa4210e6760f55bc01bad516ba9b5276cba38349f1da866ebd45a33a6e2ed355fe097d6d288a0ed6caf19b3c1e68baa84a66a155ed7737949d42a7828902f3c253c151c21f70c6d9db3d2a9c306ab55e0a0f8c106f35a4a0827f65a96525ba7762575f1d9cb09912f7ded7235e08ce4be75713d20c22492b51dbae2a0e070ac2b37c8e148117238adbaa12bc9a2daab1664ccac5cc8fd4a8584f180c817257475f25a9bcf8c99d85b817c3183b93a61ef86d69eaa24db943c7a9b8f6a625705bd5612427ad3555e5bf67696dbe679ad1f26d9450c3f9c944602079e7419e9a433b393673e61c2668cc5938a199b4f98ab594536a998b09e55cc984e42a261892de4be42aeda069d93c36ccef984c9d3a97c5ab5d9e00674d1082110664c0737f486ca80f6e40635916e15c55c5ba1a790a82a62dd846c1f1448168cb4d5d5ccced8aca2a7983116f791f962fed054157335d770a4a7e82333a679e68b1f3ad730571d45f791573711c55cc939639a05f2450e5df50866aaef0226e47edf644408bd8f7db30a817c80bcd92773cba132b360cd6c206336b0e180ae40ef10b444485bf446c24cba02bde94e2b4412766cc662d37e204b3dcf66d4661e0551e9fdfb3ef0fbc0effb3e8a23b3a32f434248df5eab38d24f461f088ebcf0cb881052d241af211d844fb3e6249c3c61083495cc248dea19925e033a293ce815d7847e826da62b8321b699adf9baa1a9bb3ccee33c0ff4931be2a60e88444de8206c33439d43535347d2891336ca0b85300840b8487d917910a4a9586cd4c4278df2ee89bebec98e1002e10a5154f1851e2c3903aba90f7ad33e88401bdeb5b27eb29bd409d2cef3b39582b283efb6addb36f0f4b5f8cd3b4fe08d1f9ac7f933af903093de2db70d24ccbc9d4384d0e6b1734e2790a68f340f5df514158a70ec2936ee358fcd93bb99713304ba07426f71aaa0cf0bca1204731f096266da53d0bc51dd3ccdd3aa1310190f39e1d847721f691535429fba5ad571b44557a0f7e90d5d85decf60a1e8a38fcd24cb346409862cd790a5155996214b34647986ec7598fa6854b74e1e5e76ece421e9a2d7902e3a3909933ec236241c7ea6b3228463c7748893fa98317d93679428d94020e6c7ee130f39f9060eb939eb0483a008774fe5cb8810366dd170e0498893935e737212ae394dac637410891ad24fb08d04f0109255044d65d047f943c245b651760e6dd11b9aa24984add344eac7ce2183a45f9061902aaf63611a72533c667976ec04da7b2d648bd937db269d90e76f56401afb15f04653fa65202b2361a1161f28cba80d6ab3cc66196dd15696e1489227d57a7cfd9284d9a31ffc9c210a5098000b2660750c9c90029d2f4c218a9d27b417b9ff42c2643e6401832c6aa004137a92e07410061d98e007164c9acc1e7bc834cbe8e52a484329a592d229290615c1932ea38afda843ae3895d65a9f908554292605392699eb6e40d436912f6d18359147aec9ac38150735a751323287b9ac38adaa3890aa9a0589eadad3a81892f9a20a81d11597035271b0466541aa382448549f8be5362061258f5c0f076b15778544716e98292e465793d52991bb072e676219196ac954bff5564b140bb5720948a35e8d9a3326842342314bae6c08e12a6c9149a39a1819b5680847a6fae22b74e5d1cd26433838a2918b3bad3a6df9bbc8273c099198518c334f7185d62842fb51049e72e9550252721dd18420ea827cd1130d4008410bc692b9c7820e58a1dc175921fa69551b427b01b9249be67d1499a64f13b0bc419a12d7436d0d593ed3375057f977c36f979e242e21a190504431d164e46e0fef17fa1e1289402010040243a00e14fa4c775d170a755de8cadc755dd78540204a69078294825d37410d6240347ae8860751027ca3599665f4dbb82b73768ee3b68de364e6388ee3b62cf36aad5cad1c37b38d82db9dcf46aed10f4a47370370891909421e3e8aaeed27d7b4f110862d23aa0792d8f2f3d3d262c21180e9250011087adee779f4fb3ecffbbeefa3947ef37ade4729f5a80cc1efce87222b443e5e285a22fa0eff2e125d9dea370f3d882e951b1156f121ba5270545a628ff8a2c304bbf8049b761a9532e1b46a147b4c12e6d5aa17ef9b82881762ca31893a29544a182a0420e552c68854902ffa017878651689280d4190520a7e823474349ae911a520486918866138d394ded188523a1a8d5e6f283a39f9bd17002700c011982f4e3e436f78982bf6d05488454b4657e423b24214ce4983308553446c83a260d10a2cfa344aec51b92c7f71c7149cdc1780f883c4cca3f8d38338804b808bba2c0f4513ac55b5d25a6b380a47b8b73014c51f85eaead7239aa2512d4a929ba7516e0847db0412821cc9b20b5922c1053df764826551ec33cf1775a17c79b09e3f73677c66c6675e33e3339fb886f5dc8120d6fb5910c218a77198676057e3315e53e33166bc464d8cd3c036acc7d034eddc1d7b4890abb57ad4d3b4124fa3ba84a4513de3342eebe3a8954b486c8ac4380c3e4df5459f310317a987798c8f87c192a662e0991e246c482bc687c4c03767c15c47c94587c0bcc6211c617127c4a2111dae499791e0021eaffb28c7552080a620f534aa4af0062946f269d50e4a5a42f2a11f49b1dc27f9648a493119845cc5d111f15c51922b9a42d453bf068d9771333258c1d562c95c1983026bde21791486584ad764a451d94e98fd2034dd92543e93b5536a3ad2aa0df7764d47ae6967fb6832623202e6f05e3d90c3434cd6123a625c06d0d487331f84a3b86da4d74c77d83c49f7444f54059b608d429990f4202ce11290466546c251a5a5d252f1a172d32ad01193915ecd964a4be546c547a3da9a5e12a68a6232c5021f19fcd820371b7428090989e79292909490a620f590f225e99076a090919831f9428a6d5b18ce2ec8545f0caf2b70721b7232c5261e13924699f0d8e304b03c6fc104c89f22e4f9c3cc3cf80117194bae1853e4d33e2c6994dd41388a48b191b42437c9a7ea20cc74c231c5d62d1447ad9cf29383700cc542b1920b2601f932812842fb51c64e403e3f5527f629c92d9e1b25d9d593fb5991b0e2b16b923322e1c463b7d3eaa196823029389e1903e2aa335f84a4e09ac0f14c18b507e120acb8ce0bca2973ce597fb21b84a225221f1b842b39e1490ce9e57cb82bc897ce89999a3175c654dc39c1614127ffd88f5c8f8d90db422dbb655bd679e0299d73d6afda3ac10ade69edb5577b65d6344dd3aa9dd3ce4933304ff6df659e17443f9a7a10043bb2336f32f1b40ffd8c04e1b87544bcd09c73cecae580eafc340d043f10fc406bada5d45a4b29b5d6d2ef1303e069ad60c580a6d9fc81a0834cb04ef5c79a4d3071078445235c0ed7611da2580887724242421f43389d47dbcadd55edbb48b7f97da005ab66351004c13a35f0f4d68357b399b5d65acddaabd9cf7a075daf7e160482f6526a431ae208cc179e76efd6c35c2e87a63a20ddab0bd2a82fd465387413f2c1c91477d1464d3f770c65c1710fe90ae69c3c3dc6056f745eb99b4fa36cad392395910a58ba374313280cbb8e761d0581be5d99bbad037da6b76d0381b60d7465deb66ddb405d67ad9d73db3e2fe812ec3a6fbba2836ee8dd9539f4ae7da644d8c33dfb7ddef7799ef639af699ae7699aa6699ae67d5f7bda9cdafcbe7b73feeb608d3a62ed4ea376108d883bed433f2341080053ca01c01200124b89858585a5041b12f270d9a8d20e143cdc9b6168564a392ee3b87a10e4ca4d1004b30c04b36c82341303341c031a35e704ef49a082ffe4de200666b6d49ba7b70bf26ad4ec80d4209c0f5d00a12131626051a7530d807b2f6648d4096dab51310250c229387463c2211fa88f2158abc60a9330a5f74b3bad7a79bf74ba2f2129f19492b42a1c5b482189341fba325b3b4120b41cba042c0832a5f58e334704e6b51702f3c5644004e68b79fb1b3abd328742a1509d695b4f6fe8f68afecb8046550934aa8a2430a7e8f5862ec11a4a93e92d77ec915beed1afb6a44c291c81f9c2f419da724537ddd0616e85d1540877404242c2498310856dab5117dba059058f448c329f824f5e61741503dbe7704df710b6a1ef3ed3df493b0e96774f1ad621595c7baddd5004d9d3bedaaa4e0459b6aa6fb2bcc77dd26aa0b147e6aedd1641f6b8abfdbb77077cf7f0697340f7d3864f42780fbdc67b0804621b50bb590e62e6ed434856287584e7aee5c2ab594e87f72124cbc33c8a6ce751ef9d089a065608f3a00f69397c4d7d88c32d572bbee11afad0b5ab650334ca1e074dd97b20c8bef3f93c1a1d333465651a656f5fefbda6dec327ad86fea461b151f692a58301333824a8c3473d7ded0e089dd9ac3bcbb28c524aff44db98d9c5a5cb0cdb850e2b3adc22a37c0e1fbbe5fbe29f5d3eb78f21506e96dc60ee16b9bfdc2bb9bf8f5eeeee72abe4e6726f12869ea4e54ec96d73977267b95172bf4a98fa3ea1b9fb2dca3dca7d99f2c6a3cb5ddc73b96fd4bc8bbbd2a829575ae5e2f377e182801eab109f346ae670c3b03f4394c6f72d2c2d564e2a2631a584727249dd1ff545fdb01fea83fa60ffeb7bfdaecf6d2d5fe44b4f17bd4dc17e9c73ce3fa3b866f5167fb57b6adf561bd5d76a96148f271d9a298bf24987c5214dcd7339ac5454172e76d8c1850b1d74f80ef774d8c1c50eef7f071dc4bbc0df36868d42097dcc7e5f87a995018910246a80a92149775da2ae4e3e3f5d739caf133c5b9bbc0569a49c41b98f221aae81639cadd9a2db468f728bc81c22812351288ba8778764027e47076cb41d5906dd232ed03ea4209c37f791f5de9d69142a1f47ab34cc7dadddabf116ee19c7b642f9a8ddc3351a8543d34e5337bb76718cd96be068d46f108e12b663a6060e246a3e0295e50c32baa23b7ddcd96ad49478e2dce902ddd0ddd1a8a95d9b5af1a83d11761dcd8c13a1769fe51d671e25aceee880cd12b62864999aa7aff5c29057a651746673221c61c0c61d59061dfc3c8ced405a05c2f3638847104f57a326103884dae90f3c814c9c568d534af11ec69b5c893235bf6d4668e7be7147a0b23683ac20e43e8aaf208cd0f0c9bbf60d9f3c4cc4c911a8dcfdbbf60dccdc71ef2e87a37dda69a81d450bb54ba97d17e50699a08f1618b60472bdbcf5b39e74c0a67d98df98a820dcb670c3b07fe1b5315b3eb2aafbfc7cbd059a41ee81c07b92dd3d495c4476c44b41b8657a6f861d68d43c75af9779bba7acdd53973d7977d8bc9b91d7a6032808eb8ed5268b68d588ca726440d63e690793322571118d7a3e82eee840abb873202a0853922a7890e5b72c41894f40e00f5b00958fa85b9e61088b3862c749fe028d9a3f495c44a3e68fd85ca10dee40a3e676827094b095144310a82032852934318634b0a6197e808528a4204109b6b006d6dc4ef0694a7e6e21a9559cb06d3d97084351c2d8dca329f7b79b3b957b1c409e990bb96bf7b899b9578ee3384eb66a663ad34785628bb641c6389f2ca729cb1e9aa25a1b32fd0866d9ca1203599617902ff4b50b61bf260965d8d34343318722b9ea81a6e8ebcd5b0f74b5e1312587deb3b795348ad2cdfeb46dda674faf286c5ad12a1f4732a5138b4c37cd26c963c720c3288503b5d65a1ddb4637bae131258fd2e293b5f81947a451f3d5297a3a6e74b6e8e70dfd05e83bb055e149979a24a4596e5ce7d524a106061df44421021734318634b0a4bcb1e50f09fbacfee25d79a3288a7ebb3c6817c6897ca1cf2e123bb68c225fd0ef1033cd6e541c368ade8970943cf393b8769316416e59ce6e4a3f79b746358a07fa8370ecc1003d9b7e300cd02a79258c61e70b5984010a2c788142094a3cd1e409373061cdcbf9ad67ff78d2650c99382b45513485a149bc3cd5467ccd3cef5e663a5551147b749caa288a26c971a6dbac953b5955e52a3f8917b18d7813d641572693c9040a45a27bfd85e25d426c152c4ecff33e95cb73bfd964327d6cc9526c958e46699aa6dd6671f30e116f5251c1f43d5821d08874622d778b72d2bd90286ad3725e6bc670b808af6561605f45cc987963613057591533d5ef50a4da472c73f3cdc632a15826182c93f6b1c26815d5300c02644f7ae0277edab5b11ff9d259153eb9df57c8177deb85996a9b8611e4eed0a74d4d9b9ad6e010f509a1a6699a36e79c74ce39ad9d5a25dd239d7097a3a34f82211e3f00cbe14df704fef41e2cf19ebe39b328772894b3984cf5c72d6fdd5663fa097fb746bc8a77baf66571ec6bea589c139e3b133673a64e9d52d66722fb0a812c0ce5a20bc2e298f1645fc8fdec22915dd2c511caf5489f68229d90a6b84283981ca79d90248c94f7c4396f2d672d67edd5463712a609b99a28c8fd1fd01f5831e45c50166fb3ea1388b47d12114978246624b7b5f62090c6aec20d04696816a33296c56ce5b8ca719ba7e29d26c795be19722f8134e13995ef745538d39dac95bb72f1fa30fd04da205d64237e17a99ca812ca4bb72df992c4cdda207de89b6401bc33d1034bca01a4dcf358be09def8002c8378fc008cf4d34fd86645e5f4f76091ee5861455c60e59e6a5a14814ff6d9ca5bfcf416f802f62b169b2407d2586b45310c2b89a48548a387b0044927916eff31c9f6214863b10c43d243b5eb4cbaf60ee4634f54463ad5c2e2aa23febb338f6eca1db32cc60c0eb90fbaddc6ca72ec0bac12a3bdf9002ccfcb5d85ab228ccb0451edbcf10167be42ee9e544cb726f98378297e6c91a5f8b10546a3fa302ca5144611148b30b2289558edd509a1763a4f274bbc371b4bfc0cb58bd7f6d8987cb15e98a87e57617f5cf3da2ec897be8af81e2c4fbcf6255e055bf1a67baa51b13834d53d7962219a75fa095b184f134227c8181cf34511b9cae8cc4c80829c49c83d87907b905bfbe8b5b4876168bf30c4120c3fd3592cdcb258ac725ce5b8f1cbd6d2d82ee4c2cfd0c24838a4380c7d589c0fa3bec980868f0d644ae6718ba91c015a743573265dd92d0cad85c160ad1f878c3c6730c16e1f0ef128668b3dcf5aeed646d9ebe1cf7e26b12f6218b0564d8ce3228c5ab9dbd9935e0e9f046f8478acb01cbe3be99e3ce45cb80069b2ab5c714e0b54581e3f00cb4684ef6e239edc6b79af569156d6defcc8e23dd588a78befc132dd538de92a57c1362a37bd07ebe47aa7abe354b3a2039fb853cdca55be8219804fdc4fa91387856896ca557016f3a1a97e42387aad1394d2bcf9eebd5eaf977dd9977dd95713c2d1be62af2027e056044d35c795b00f9dd867de8c16b68470b4b0dc813e5ad8ccc9a16a244fd5e85e0edfbc2f9d3cf1188ae3964578ac46f26861b91f86ee58c13b6619d3b1c347782df992847cf16e3ae52931511e13b95fcb100221a980834c5b4eeeda2d4823fad0032a571a8295bae6069e7419edecb0c36b9f005c747846ef7c0f36a6ceacde36c346b59d4372bf3bbc00bd005d6dd50961a659abdd5e8e9bae70c6409ca816225131a033cc9d514ab326389dea7fdc6c93d72484a3c599d90ee1a31d92a7c5d93e5a22168fb606b96b46396c712ca7f5509b309161315fac647198a9be6c42575dad36a3df9c94669f57bb9a0ee60d5dcd1dcc23cc2078216fcb9a34ceb058c99a7831c8dde119640ce5cf2452e79d422c4e7eeef90c9b3c5367ee581cd040da21a2e541de3e7686cd1f6c78f660b62ac323e8844cb101a8607768a6e1a9235fb2108ea7c77111f03e0ea944a667943e20b7cd189a3dc35ba3b22663cd9a508aa790a6a758ce1759bd5606f2a56d8e9dc144599d968522f7339c65a019f31167f90c5c406c55addf5a15a455134f2119983712d57fdd2696f38590dc3308c88884d99940902b8b637374ee8c7cc94a7290e5127272e7fa8470b438d90ac9b25aeb3790a60ad16079628b9385709c3a38b97edfc9c99c3a2e3a5327cb2856f272044fba8c9a37bacd9a5f9831eb8475cd6f74258bb35a665dd6890c4f20f3659d98ab09030dc88c01993193c87cf182c15c4d1f681348eedb5b5df285c3b5255f92f0c14d2632632a0aaa1233d5af2ac87d0d8f9dbd2ddc6a8bae2890a64268909b3c633366ba649d88185d3c11a49b308fd249174b2791ce03e547d1540b7cc5ec9256592447b21b244ff29a02878aae4b72d78c6e76c3f65622554708e1587fb0e856a3729a48a384c8972629175dd2d5e85cfde681a177925ea5603af1487d9c7063a1829b49b642c44d45ee17559241d485a2ae8eba2a1e6b130a84ae40ae6a12b58917e476d5160581e8dc2d09d3de0c2910cd71764e3be74e38f3585b1448af2a919a435d1f756dd665258c97270c87672784f1e4a63db4e774c9ead3185d89573911a69f308fd14d57c13c8ad48c6e329d07e9223ecdb360e850320a3b90667bd684d0bab22684a0dc6ad55c8dde63fd911bc82bf7491627bbb060ba199df49a11164fc227ce844ff3a49b7ee2701117a0291284b738d6655f272146173f5b56841266fae835a68f4e377de21af1246ca372f133dd7332ba75d9d7e8d218a5a2513547e5a4826d2414544086166b740b9e1c30baf81ad24d2471547d328c9c9c10e46976e251e4b0088fdb433f3807e7d49faa5373a40847ebca39ad7ae1d81c9bf27ea684aee81666aacf29f9f02866ba85b93a5dbc874790e91cedc99f7864c9236562ae4e58456431e13c56b1a5bdbc4944be3467e488b6d3a879cd48b6e9c1224d168f223a4817dffdcae38d2e8fd347275c44c7e9a313f6a1826d0bfb1071d624fba1297b43533d6f4e98fd589705625f47c271c664267df4ee495d74f2d84362a47cc1e1d15483b189e46e9cdc0d6b4327d14d340a2cca8d4338f3e8a48f133661dc847578c2f0b8cdadeb3aceeb3aee5ed79de022a3755957d7e1d98370e624af5c83753dc276e1f3e16cb04d8aed95fd68ad4d8ab9d298c87e668c75cd174ccc9546049bf5e682edb549b1c1346bb5496bcd3132636ac7d33d816afd833652a3a8398d2382324f0542f7843e529750613508b509150872c59540a67a6707033764063d9b144403be8bf9702b3843ee4b4a411c0d78ee87a6648a5669da4ea7dabab41e2242bcd676b2c1a8c833ae98ae4d0f96e9a7cba3888e163f5de5f228a2c374957b2b9747cb57de604d0b2ea2a3e52b2dd8c7e92db00f959b7410b69ce5529ea61a754195ae4ca72b15ba3a591b9ecc1148ba0702853f3e85ea4517e1b15e19189e378587723202cdbac16ac61382f0b62131f9d095ca0f6d42572bcfb619ba72ebcfad3e35567bf0fdd55a78dc361a86767bc562db8bae36d806db5e5b900d27bbdb6b7bbdb620adca244d563d1fbad2bc1fafc94bc3f96eb49ccfa5e97c2f6d6713834cf51550d87cb6bcf96c3e120694b526af9b8ce3caad82b71964af45534f84e3b6fdd0956485adb5e8cafbd9bc26add60d8e2be77be9e41eb75cb39f8e89ca2548d3138e5a4bfb219f20c50e9cf8d149c2153ee415563024c90a623b20a20256dff38698b4165d99b0b6b36da1e6cafda351eda3514958aef2d903cde66c553c1e217bb2ddd19258219c1f3524b9df22e111062ab42e6cda561bcca4ed8c273b2bc9da58a3c693bd56a33c1f5ec8231b359ee4516ba1be5c8550bbf1d1a8d65a8da242386aad2137d7b144280b39b5d614a176a3f99882d6da602dabd95b63466b692ebaea71832b74b08224d0e086267ac0ea6b2fbaba51821facc10a2c600111a0c0ea6b5a9dde0c43db6b43d2a822e3fc68adfdb8c1ec37d8c6d3aaecbd6d566bc954f3045ee77d2008047e5ec78540f6d96c5a33ab6d5ce77d606d2961e8ec9ee249ced610ceec5ecdacb6719df7d9679ff5b46ee3b8add33cfb656005d1508753f4d9af6427206ca61b0822cbf4271b34d3ce34d3dca21db46893a8ed218db277a267b964dd7bdf722272380be6e1e239bc05f32852e3e2399c07cbef252b0b12ceecf216972b592d618b0b8944e979b4fce7e172fc96ff217039eebfa6e53fc5352ec72496ff352c7f00ce728a6b5c1c631b00dcc5675a9e219459d25456737c8432b7dce53875c912e19adf46871febf0895ff3e396ff225c83312a75f13dd1571dd6ef89621d9285a2a3c3ff10a48e3fd3f844ff72c9aa71f989621d2f2e804b96044f42b41cf51a97f3405f5c01dcfa7269abc52375fc96cbc3e52d2eb748f896cb4387ff1eea4a160f57b2fae3018552895057d6e17f8d0ef8448fba64fd21ae49e113bd0e972c7cd2f5b2e7e29e4477790f16cb3d89f0c9012d77790dcb5d5c7417d8a68808d7b4dcc5c505b77670f1167c123d64c1271146a2a6e52c1f42b2366c235b3e862cef8371e86187b3dcc54993526fb908d7b01c00b7c652f72472b92711ae391546c2d90a5ccea55ca4ab1a42d1b937bf5400ae6401e04a960bd5197d0bf368f4143c8aa35b1d541ee98c1e6294d14954474472c135c7b5654aba282e6f798dcb5b5cdce522ccf2967b2e2e0bb6d1f1d45de0142e22ba8bb31c8c830b2c698a054b80a6402dd47510e11d8d6ad459ae0e17a8efdee22e67b92d2c9f69d2952c7c25cbab1fe93e936e98b3168c354747080ea611e151025974dae2a2bb23cb54a7127922c4a2096de970db870715a2ae10850577ac7176b8454ede387455733ad547226166861ba7c5c91dd2d282e5e85008ef7338cb5dbc488dcb5b4e42b49ce5352d67c1364568cbaba6e52eb04d075af074c12e1fe7cdfbdee544e4f0dfe77009eaf0e1f27fa64f5a7e5fd3f28b6d8ad0dbb878cb29ae61790ed8e69ee5a4dbe576b578d79cacc9fdb52f17d7e54a9a3a5d823628e96e39dba11eee1f37786c1fb423954422914824128d7e8231a07da2d167ba7442c254e6ee76969ff4ced22595998adc0da394528ab38cda1ed13db94328c50a6eb29735ac61ada2944ada3da19a934373766a4e4ecde9e954db1ed1332542d129a5cf940851c68a24f7a9c8c5a55cb578f84dae581ee25174126e248d6a9e868559f4b161468870f334ac0de1d8b08c278b482d1a5d6a844e10013db2089f8040a266d1471fe1f1248b44df51b3a847b64b8493059f74dc8fb5610d53a244d8a71509ac5532c42d6ecb59aecb8310b2dcc5254d51518bb7bca6c55bb04d91d16d58708b8f700dcb5db08d0bdc2ca2db46902f2d5f920847aa33368ceeb4aad46fea72593e417acfb328282828282823fad145c9de82a5fb2d5f4b8625cbf6882e2967574909965b7471bda93e1ad53d532214ffd2cca42b330a0a15894a22d14f4e48279fe912e98424a27424fa8874c79949232aa2f4a3cfb414894824918824a25724fac9c9e93df90ce94f2e036807f2c90885d29f9ca09c5091a87409a294aecc24dad3a8297246b93297eea44a52505c0d6b24cd8352516ed01d1e9ba4552774d502da97eec9bd1996badba88bbabace53b9994fa3ba53e95470b644e62e8b358aeb3a6ca9b0b15256a20da30d6b71d3bda9a3619d835bc8c9c7c6e9b9e5d2b53c8d4a6295d01fb4e27ea1e006d2ae24c2166f58ee165427fc46f1188e222a8f54c7529d59dfe1710b45949fe0f127a77844f590c30e8f61098f220a1e8fcad94ff088caa12c743975643b341587163b68ce765ab9e68c368f0d1b51796cd84e3685152345424575559c131f373f2a90faaa4144f444444954f44382748970b43d19bc5f673ba3758d6c4fab7c5a45f18ddb26ad22bd6fa9a056fcb48ae293e8323339b9d99146c132241d8eb29d11ae3a95080dc279d3a80e83927cb34c4218882811823527db699548f49345222b724bdc54e868184dbdbbde0c454c1ad56148a7517d6a84ee141191b21dab44c29cbc6f6fe8aae53abcc920517d151f534a0ba7e47d2721fe16aff95b609b222bb7e151e4741e2ecef27f05d7e0b7601b1e2e6f39a6e049081767798d8bb3fc846b5cde727abdecd525c28ec7e5b73d560ced1a2716b947eaca2e77f1fec462457564aabf519d90ea882dde039e84b8cfe135f739609b22a7dbb8f8fd09d7e4701db08dcb7338bd5daee08dd72c5a5430db717117aa23613220c8977e4a4adee80df3b6edc817dbd3a818c5968a161f6d4fcee1deeb7073b80b6c53a4c6c55dee3284c7dc39066616f9e42ef0cc39b98bbbb870c19367eeb0bce5e3e4b14ae44b3f876bf1b5f77e4406153cd25cdf6f1c2ce2106f3249ce7648986221c2b449f686b0c547ca24833ec350bf6f426f9026bc04493d5464213345a178c6e6925638663b19cce0101a417a8672f2120aca2de1b14746f9684a1045449aa1f4d9b302a43a4be8eccc2cba3e4690b46a49eeaa73a4c2683645eee754228d6af18c0421fd5873faa6530d836d61288a3f0ad5430f0d6b2c4092925a66b19a2c4a228d9ec521278343384727bd9f2169d5090f15bd4d305f9c60121e7be4b48a48b64375f24e3f3bd21992dcefd12748c2fd63bea07dd3280a069165d129068520dc51f3e863d87259aea4e3dc993a3445e945a27084c71e79747a67e8086340cbe1e90de16ed2a850e8e2b1998c56c7ba7ad341a266fbb23b51a0dd3f6e7af6b39d9a935bc80cd63e1cc122d45aa786001b3ce932663fd94e1f8db21349ffd49bfea937ad9239198890561dc9f64710792bb394736712c9f5abc2a76a4a61a2ece58f64dbb3c40ca52dfbc6a2553f5ad5d8cadcf4a6db8e5548b6ff6926dda47db0cf48f0f369dacd72e48bbd47bf0ebb37388464d1d71bbaa2188f5b188ae28f42f57093edbd2c0421f823dbbec980205f6cb624d725309f568d194fb6b796cef064495a957ddbbe2f83d1557d0645a824d7ebdc8c48a39ad69bfa86d1edb39b1b9eba93e148985716a455592b73fdf8c47ac6aa245b7b9946d917121e5d7a675e74454f71d5c9d6d61bd2b661d99976e774d154cd22a4df33f02444c6a2afc958148ff0b5aca45176663aed837d4ea3ec5b05e15bf56c9f1169954eed9b4dd1287b7ab39ef6c1de84f563a6e4fbbe2f87aee8335008c9a2d866b22a3ed525e17bfca0890a4ea086234d18821a58f66140e293851150002409cbbe7fecbb890585aed6ef91fb8e1200dd7ca21b8a6e8fdc77479643dc55cc17a0cfd0508c0684271537254b90c6fb4c8317894a8584e95b24b27c9b897cb1ffeed88387fba751f6594e268230d321d2a88c897025cbc935dae532056d4c95dc734245a36cac7db0cf5c108efdd33f74dbc250522a915085909ce131ac71083b3c7f4c38843d7e5ca1401be0305a35f690b3dbd7c8442c9a495bb189d9472b66316b386b22bcfde98ade1e455735fbf9ba3485875af998cc14885fa32a1ac27a45283750b39655877dd9277ad439b540b356ab7cc8225a26a3cc174d51d577a96d5c68e481442d145c04f5d942d4c928639207875c49928f96b5767ebe7088ec4c24143679ec6c1cad923e08e0e95b5bd1405faf086d74201b41d01ce2d126872778ac998451235118ba33c8143273a64ea3e8c13b779a520e5b278aa02b2199d249c4a79e01071d5de4ee0199bb28a2baefc3e30750adf2f098e5ee54ca97ee288ce2300f8da2076d05c20d6b784809cf209d9a28140fa59762a4f6b6307f90902345bd226c619982ca86703b69548b8dea95f6a1ebed0ac2f9f1246c1ffaf27e69086537077c642f245d562b9f2b1845531d9ed42bc28a86703440eecbcc500002daaa88398f18679e9e04271e6df00cb52010cda0d3357dfbdc54b4236cd6b0a7dd79d93f5c1b6ca6e704dd10b6d764fae9fdc3643add740ad2984ef72498c3cb7276aa5f045dad5c762a45c33e9d72150ca30cae6cca32095630c91efd3221158706e9d7ccd6daf98d9bfdf8618bc7066dcc9cd9ef2a263c7e37bd039d02a5ace0193b71c4a38052f0b8e552cab9976e0a1e535efa0c8782c7efcb28b7f75c5e0a3ee2cb29f72ece3b8af7546ebaa025c2efa3f8121e6bde6e7a88c79953fe5de56378155cc2a68fa1098f35cf3c53be6fd808ed59fe3694ef14cc9165ad43b7f774d01dbfcc804649c0da0f747b2d206623e64157842919e8269caf61d3281cad46a9b4effbdee2d65eb910681587675af599bdc5c1cb5e812deecab5b141a055139fd33e3fedf4a12bb50b6bf231000212a040ab40deb9d3db043346e6139661bbf24c030967f6ce0531a96012863c0902a1859f4c3aa80520d9931efdc492e927945323ecb3dbcfab79b74bb23dca145420c93866a6c8dd4180a0dd1a9f0e309f65a047feb0065ab2c527903dc8fec3d67e782c028f456ce376910604e873032d19fced77bb6da70f1fa04706f109bc11dfb783dba73de86620024c386ee89e364105cc6cc14b5001339bb28318b44498e11ca65b6c84e91f3602e54788193e42cc2531a304e1dde2daa8127e788bc7134e80ca532ec104a83c45e58e20c829da9d201034a7dcd33e7b533ec1048cd93509e48dd23cc1048cf319cd2a78e491531e5e0313d039e5f6f6b30be40d8fe177d09c7209daf03e4e118f3d720a161f76166faf88a586472fbc9a76414b84e1b59fdc1d33db93db5b20e1c446802701019e844f40789ff73ef1d865d008f0a42e67a42468219679c832095a3092bd0926009cf14eba278b086512a830924907ffdd51ccdfb73b16913795536d4ed355ae6c94098fe16ae5a64b1316bf3de52b57762a05e5dcb72bba78c723c49c1de5a0bb8199b35710880ec23b898447f019688207e8216d64a07f37e5f36ef4bb11f3dbbf79fc3d25bb9db53ba27c047a8643e6537623b4cf67da4b978dfa70a933081b01de11051f21661093ce7d869edc9034c2c8dc45772c2273d7409af008316f6066ef201028d93b90e96a542c7bdae7dd2cbb76e76bdc561dd8916d07f290d1265b3c7277025141e8fd460740b8c946330352d0864bfeee289104315fad9a394f57c79d64ee2be7fef56ae270f61cf7296333e73340ab649e19b2f21a9dea994655813f709b1fb71afd14845347a55d4ce1cd39e79cd937b56f721b7702509647604209e69c5c6782121b28a5b4f34ae059916559e67d3f50aca0699af681240895c0711c078246b08203cff33c50a8091680200886c29bf00b8542a150344550caf2083c5750f9ce92e230888f9129ae3c34edcce3b6554d22c10789b681700362ae6f2a5f66d33936a5d7eb593ff3acdd79c8864f3a35679e7962c1a3f29b77ed4474b798877d770df3285263df9d8776eff69e74683f9d88a04c5876f6ec09de00756cdb6c50870fefdd3dfa4dbb27fa53864f4268e74e84fd8679601e456ab6dbf3e0cef266987994b54996dd68aa1ed1a8fa25b9bebbaac093326bad9af3d6b8a19580ca667b1c12a6e9c557e8b256ca26d919c299ec7376962528cb97f2cc4cd98f366b79de6e95b689207b340369baef92c5e11aef36210a9e747497b986326185bc77aff1de7901aea3a8c40b94a7c120664cd188000000000314002030100a8744c221a154a8a97a7d14000e8eb2526e5819c8498e5306218388012302000000034000040058c5bd4cc30a13077f3fded778f9218f6b99b21eb732652d6e65ce5a5cca1cad60f08d5d4f0348803470b5cbd7cd56fa4876fa4092fad566247042337fae3f9a313ce74f265a9df182f10c6f04eda87892d70153c5041aef30ffa32ec4198a81056b419da232c30adc648275b8c81c5b872a02cca6bf9eeb3f2267b8cdcf78b9d0d3035e5e753683a5854f0fe872d5f91916167aea004c6b6936c5c1b6e56c2f320d73b11100d508741ebb7f503b3fa326105026c728e2f4db74b59ca0c76571fdbdd3a25211607c7f1e1e866566ddab55358dcb4824266fb67fadb1fbf0d191e201b3e7e0b63f9044bed8debc043e747b94a8811015ced1c4741c129e16f60e9c0cb9cc2ae54480d73619024140ed4d00bc07f97790cf8ee6e2c1679b310f9b78eea4d89104db56004e2a11472c38296846161592b98c087c3e71adefce9800ebf8e29259b240d000d5895d40fdfe4b6d346ca03d923c84dca144230bf8c7199f0401342203b6daa3a6e30efb17651837e8e5c4148469e2a138352a423ebd480d79f40aa6c8f9bb4c9d053f7ab3af4c472b92c108daf16665939d6aa6c9c48d413550a6c5da41ada3201b977bd866a7b637309173c47498e92f83a13b6202060cc3e5478c05909f486edeadc4c77ee350c47d921683c41f518f6714551fc7578a17541117e58722e3f4561cd2552695f1eaf8ed52921b982fff5a2a51f92dda64494de2bb3d8eea7421b4cb30581e5f0ea738a287a16766d76af5ac1f6abc90fab7394f9da47df6c6b601f201a3f4d685d58f78d402de8ee69b43dfc89053b3acee52c13441cc85f054044560ae24aabc2d3f49bb015562499de147a2d7783744bd381c717377f5166a3a29298abf5387aa0534b57eeac67b7c72d67cc2c31a6ab3e738837192ac23223170b57ee982538e54759018d5cf5847c19edb6dc279d9355bbeebd36b67259c3d6b70d7a49a2d4bf7585a83b3eb8f1b55faee6d8e712fa949786c9e4c9a7b22334ea98ca70659a2392dc670aaa29444729aad0a82edf3fb52bd8f53e562b906112177d1045b9baf4d3321679f5c0b850a085f5e3e29b693d3301e5d53c136395028e352585f83d472760b7d2e4bf78554f74724bd2546182aeb956f8bccc2a6e6e71bc2afb04e03a71ffa58599326b3a0194f98395b4bf8aa3c83085933cd5312b844265d8d55167ad6b8cf30b650b6e4785ca1cb01cf3153fc4e24a75e7bf8877c4da1afb2934e878d388edf0026762a5766721449cc4a157108c2bea337032cf634738f4f3bf7b4bf74bc604359991d3f475cb2c68e3f13e67d6f795543d3a8f50f9468921127d41dfe3772fc4bb35b07c82a33e44f5fb35c2b71067a141c42545a7b4e2f3d2397e38300468713578b19e5dba22558ff672f6f75b1095fa5769a1fe3fa9b89bb2f346bbaf1b0ae459886fd7ea43ba3f0810a474549a8a6cd47a7008c3af5a808f188b05f5bed72fd145e88513276554476b929717ab17a443c482e559c02551a11b17a0ec74d6dddbbdd58c51b813a490749e99349e9039572f0bd84a5c04b077c20065a0e3a004acb53196eb95a168d4c17399d7388fdd233f04d39de3fd15c7fe2ba0a7fc5c97ce88163fb674d39ad6870c82bc4470318187b30fab124f677711f0c3a0135c257f872684543badbbee1d8b8963f103c7be9fe25059539d548f92819012968f822f25b4aa3ec2998f21bd19c44c8e9e1440a9af24407c952c60997372b045b0f619b341d05912eedcb7860fe2b412a9fca0d2025f74d24fc5e8677a735c30ed25fc2cc45716399515fa0fad199be7fa3f19cac9a69bd14085bd3a6c734eaaa76597a3e6a1a3a2234512cfe5a070d039522e9d14d13d52ccf4eee4cca556baaf5ac4de7aeb06058faee40aba04f4131a18afab833fed627da0656f2d3386685e8381bb682d5b0fd7439763c234e8d25447b7dae7c0333e354d83c4ef1f9a940a7e6dec39a3295bcb41eb637bb482a3fc91283ef4ac079c509f11d2d689658a9162dba4e1fb8bf53ec2a4aa6df50729779f59451d88e42ff90f98f29283963fb2ea822eb03b7dfb213bd80e52ccfe5e359855b129387bf49cdc895e1a023de012e417b3376fa00427a37c376176fa7443df1dda161a04202a9ec4c9bec20f080653e371eba5a9ddb01a0f7a7f4462674bb8bcfb25f1d0edccf2989e7ac8b340946a1100c93d21d28672b4834225fcc6a1db9d23f784f0226d2faf3c96c2cd10080080dc203e75066e8653c9f48363b0ae03e296f2b30e8bd4847aef6581aa6b92abd6c08267d759b74727503401e70f34fc05f8615624ad32b2fdd03bc6ec9805b67f3ac47cbbe32d6d5dbda57d92caacc598ffadde74bab443a73856e982d63c7da1ade5ae3e8c7b85b7e8db56950fb0f42dec42b115c35a88ba67d231dc2ad5c1ecf22c2d0cdff657495e629594ba17f16e4551b9558f1405b77a0bb95b69c318ff6240266a2fbff65e66860a67e4e925b27e988ad03d8d1baa647a443ab54a9ca5c053535e633e5977371801d928e87b50c3540b124b5f3fd3d50d1b28295a2ca04a42c352bd538479181cab83f6c9c2ec8773e1d6316759ade2e84e32112a592e245bb060df5df10d4b88b6da1cb524914bc4367f2dbe5e45b35643a0c38fbd8a90df5d3e39b8aae4e26ddb0a94b2a459c8d26c211280a05221c342a196f85ffd39396bc5ece4695a64f4a07368fc3ec66b780d5e28a78432743cad0b3e1aa99052f833411e22e32a5c82715f7359c0ae092704225bfaf65902ce858dbaf0aed6426dadf0be95b5b47704654db620f95b22a74eecbddb66cc4deaaeee9cdafbd8d15049eb9f1839252dbfaa9624b5f618aeaa8404a9fb38ff76527f3fea2c548bc9c38fb40abde406c3b286af0f3f0788bbdbf13e91305ea65c22caff6aaee0c54b09e4b021c967dbaf7922a97cee48643af1e353dce3e8b8b1c689e50af5587349409e3d3d00bc035215472ea49b1ad0b3e3695e084d676b720b4a2b704523bdaf982312d861e8023e7531c9ec54d68144c1616f7da29101b5eed92b8daeec232e0e0c5416bd7309381b4acfb4812e6ac5e0b38accac5d6ebf704ebe2afa89d2a2653694409da6b19531740e6826db43cea6a448abf6d7478f0370a78e8e4de115b69e88860d95d975f9df95fb9b882df5d85f5faf2badbb38dd7bbbe50851532481b7c2352b31e05a67fd57eb598edff06c91af35093604e6e968566b155336a4d4cf319116aa60c5db8ddcebe5ea0d0589b96c94ae28b89d892e0fe7939d77445518e04b989d04d8d8d039db6e6fcdb18e85dc2ac1805aa1a0e9df15f96cf120496bcb6f0b9d22fc7ec582175e9e9c8c050216172a571c521127c9014d0ca8da0d0c6d61c002e5ae24d14678cb9f2c5b888e52fc49888735548bac331e95a480eeeabfd96c24651f6814ae50685fdc079b4a089d6d3e5c3abe77394eab30798f818343497412fe2f07f11616ec4a3fe5fe3397cb2d3ad24764d22a86a891c25bf016003c2ae6207d11978109c5ecd142614cf57914cbbe52bc75c86627a0227f60d80c3b01593e93c90e954cc81932a471548a8c204a043f0f1e67eddfaec232e715fc54000cacb142f36ed6e2df321f6549217d01669925c73cb108119b1e928bb62295308044bf591ea6855b7a70b7474371463e1957be9881ae108ac100390450ef93d8f0838a4d0b71041735a6f70430b6532154a3ebf36903117ddddfb9902d2b00f69c2009947cce24b636a0a6f3307e87b6d4c675d2a89e4469e8aed1eae6b1f18b7f17da6adf56384b5e8cee2002900e5f6cf53094ce14690c763f3739b123fde9689c04e415d308dc9054d10e5d572decfe0836fc2f3bf34e9cae4dd16357ffab0c1d4aaf748602f739b79fe76ba67542ac5b7f5b70b6b5c93ed9743833f9a031e23080bde910a579ff2e4b6e8a020fc98ae6f26bd6b47bf2c434d62f7471ae96663110fbaa32fbd3623688690e156fa581fb962f832489dd8256d7074a1f1c04a44596ba455ff67edb8239a39d7e880a3022cc611f276b29a0f1283a339666b9389cab7460b5a17f56ced315578c73eb37616c0ccf256bad94a9a7404b7a9446bd5dfd8776d4433fb2dbaf4cbac763d430fb8267ca386e806fd896d5800741d531e184f0865d048000bfa1b5d96583043a7acfe5b8d3a1268aea176c841dad8527f52874cc871e33070703556db32437e1158c4707ae63d126d435f812458b5093ad29e9bd1cc70ad6a93d042c55a555bfe651e9d2fc194b65b3740af118e0b0c6e2f20b82b56aa340a30cac1cad3cc6337efcdbfd547f28cc180a65546aca97c64e55f80aab688b0f6ceee99d9bd0414c5ddea7cc48f4115b102c64a6fd9a61ae46302181beea307e65bd51d7a39bd8b1bab325d4e823405cc0b0d9480729398f3b4514f3139cc1b43f21613e5bb593b5fddede616055f48798a7ea0c6dab17f0aecc28b559006ce70cb22ffdcd7b0b1f2b856f116808432655e13e2b1c9cb0ce9b9541b6fcdb0180602631149724f931c408257a83048cc3d4b4628f4e1345e9478d78439f751b2ebe134b03762466027cf542244630cb2a1d5715a67c8f3fcd3f3dd9691652c2ae845fc2829ee1a3da56432052ab6d1fb5b684246ae193c27d23287a30a1de04ccdc80436067da846596ffd8ff227542c68c940a2c9a96b2afc8814518592a1a26c9b255aac61aa953c09901b4b458ec8654be48aafcc6d4c92313c20e9b7442fabe7a2d8a33230a665c617ef398a3fbc67341a66aad8b1c61e4a0f9e267d6c0766f9513db9b48cc4ff1af561209d70e70903495bd0d0eacd62b9b68b7d8cd2abada4a31a23f45969a8e047a63bf3dfef98d69c82fc6726161ad8c5db26d3b7a1d53ea9508ac6e89bb0dc5e55a63c01e99fbb0461d40741b6ad2aced78a3b9609a0e5e1f2ed0797de65388416f485ed016fb705542bf494363af4d19b2fee65c7a8fa0810f8bc56c8429bb43f15ec2cf43b96bbc66869a9d73d8c6c6899e49db672ea437a7cfc1ee059fef752345fe31aabf1069b3ad76c932acf0f52a4419815c3d236d161fc04082ae95b560a5926c441cb2df507f443b806631b94f0537ce629b511519b7f8c421a1c70e84a1fb0f46f6c7d344e4318bfa0cf7826025c81364ef7b869f7734b460f94d650eea74b830e6e06ef517e8a109572fff142075da92ae12e304a3445305920c09fe7d6d079360e64de06f7ffda1724639fe6b7b8ee21e134ea0f7a7bfa947f7383a5115bccd5ee1817cdf51a9a93551a6551216b2d4a792c9eabba2675c6e1ace8125f652d4388ad027a43f5e9b1e6a81696ddecbd214ce86eaf80a0c15d2dbcc0b64f01e1691342fdb58641a7c266e472869205c0a19cb50babd53ba8b921b684d99f3ecb895ca944e2e91deaee4bb5424f79a733ddfd88fe394b697b14f252d1e85cbd644233976124caa5b98d19d0ab47ae54167c322ccd397719dd0a60c8dbd55ed23ab9133451488c7b4201483b016732d70a149941197249102a9c8ae367ce3bb0209a9dce81d71779b850080d1739929f1ee01a23eff17a527a9532fed726a8a285b654ca53e87ed041e95d1d21ec0e4834993808fdeb0c84584a3809c75d7208de13af6982259c8841c745967fa8c4be82aae74b7ede67a1042a6225ec75c1434a1a714989e474cc49fa1c2988fc667f729fd1ee09328b076d3327bd5e99644206603d0086d079f0fa581cc7936d454e343f49e235a48ed27c1200dba0af89ab7cb8a2c7ec896ee926d49e102a62ca97e2fb43b45aaa40879212c6cb019822633878045d538ea1a9e0b4c164b0d632dcea5b57d5cf64afa6e8fb14e6adea26c69a0d1af3fbc8bc621b5e3185d16bba74fd631c7925b80a8aee9a54d8a08c84a13a27221d948040b333d7da1b7ac26d7dd503f5fbc436a0c3103528a46baade95167f5c2db85d0baf40d7533731f329c545caa536fc8a9da4f208ab207caac16df0e5c276a5c375daba62d62c1a3269205288b03ae92b3154b2322c6109afe321b7334a1f7f0d4b58fa26006294636b2cc9adfeab50cb91f29ca73f3917e943be0104920e07c01afe87eaa6456f56c2757d70a7f54cc8a120508016ed340c855e2e7581403d9c0c51fa6731ca0e02ccec50ab314a02baa28e903242674348b910bdb86365160b9d513d8acae6432e023eae50ca32f840eb4b188405a0ce7b0044752f54222ffc40263e8d3b1423f8f4278e6aab45b10051c4b57e788df6a606d5ef0ce58af9aa61993e58841dcf58d3688ac804c290fb1e45d572ed48ca02d13c1dd7e344a26f22e0abe8d20d5da334876bfa0bca032342cc2b2877ce46bf43115e6b8d5b2b22b1985ee75da1e84347841ed8ad749be9bdb4bbe2830a70905ea4710d8c7c361cae719e90988f1ba457d0708a0244394c6bd4029df81be83dc9fc0df949efeb496fddd1a831b9c52fb25a0388775ecf53fbd1865b8e225c8e4710d8ed3559e2e4dd207077b0459c5d30d1bace9488a44b1888110921e5c46d01b4f152e52a54b4addac3658c258098b0a4e7a98cd819a6de57cd4d50f2f9a2186a45060db41ea6d96c79667a372eb5a7079121d88928f1a702fc9fcc7469a17430a16a22be563f73e27165054da5c085dc6b055f7ed48cf9a8d2a848ac82ec60c838103fcbd1902a485357a09e0c78b7cbb020fe4cb4d3225f79948968fc367107b330d27c4a7dc90e8048ec348d27894dd23f91e20a3f6a883bd056a953981b6cbf1248719cf5d009b641481750e6f9ef0f3db11f5d88ba7d97a71e3afb67669abecbcb15c2062bfea06cb0fca5dce15d3d4851403a667792fb482eb3744ba28e4bce314087082ac07091eda351e3a3a23b9463ecaee439d91a69261e19c4e7237358f6966386603458b6d9d72d623b4c09ce5b672ce3f838dd8ee2672b37d39197255cde6080716402c0d66503b28bb0a193f3a48f571483f54674d8b0802d65312385085b79d2e8688a1e239116650c26e22a2282f785f794aa3b1dc3a46472127c6e4f6e34b692b057966cc9668fa145212a9fd3891f6babce7b24cfaa4fa3436c594515ccca1109d9fbb5a845094227d7e0681884aece5118bbdba431e3ff4bd048c0b493307dbbc8d8a2f408db998689ed19095b081699814eaef16e73e32cf2431a0e783291c88c037061d3ea749bb11b26062f12fe300cea36d9e6314107668e5679a9f5ab854e625f97394c6f54b83e1c58d241716c797840a4d04650e02d8259b69bd3dba27502850c957681ae63fa381311bcf16404edd66fe9dbc6304626dd465cc9f88ba60bb8c626ae610228671e8d1be10b08b9829c888cd14a4830a343c1063111bbc5b430467de1a958f411846d93200b882c65804ad824ad1df433563022b7cf073e024db65edd5a8858dd8bb428573011acabe835d1428d4853160176bdc13736cebae80b080c45a5b9406e37e8acaae7e0cd0047ab4bba87d07d7fb147982c777fa84e59681439ef0e49bd4cc0ef42224e901360065a8bbd747cd018fbee2878b214a74ac7706e5d7af5be834c057f2133d2516800d7f534c3f0700172fa515cd29a8d55a7a034064d58128b2ae06e3656db22cdb0293c19ee3ba6b3cc0258379b31e2cd3604b4454506983fdc8e5451c917d33bde54fb1ed9ad395173b36ca2291df3901d19f4999f41cd2dc787578cef7da6c880207dc69b65daf400cdd45a874d8381707a673452a4fb0363155d1bd277c1c569c8e32ebf60848a583bba2f8b121527546d3681b1d07c342f8663e8efb1f57e45c3f1940b50c6b686a3ada28009170d04adbabe34bf1b39558a4fe741a6694b7ae773d87e82eac4596cf65e5f42f15a76831420fd782404e5ab81d9426dad2650e5435ec2aa1d2c9156211e890b64c3bba159f10c086cd353da08932215e2718d00b835e542d1b81a231e22574cd380df4047d7051611f6a9085314b2d26ab82ff8f3c9df5ad4514322e3b5c83fbbf011b8c3d25fcfd506f06ad86d18e28d750697c487d5d6c15db0a109c2af931b1a08e69002e85c89f194651552501923eb146a88866abd9a03f903c516fc4af67265f84504343739246a93c5f9e818897394c784ff4d98eab90a03d0f3a939a245e6c33806f64f24b832b9328d21b0190dc68a1910b6fe98d213503ec2a49c18e3dcbbf8ba63d6f7fcd6b7517de3031de5e30388d80c05e9e8e082909684acdae92136d8d84212faf624c8ade9e686f001f3bb8c71c18743c3962734c5c806a13d7c1531a97ff824a2c9e230ad0b7d93997dd8223daf2658d721ce34ebf41b5412766618a4b58d4f9698e0d07befa1123537ba226d10f8015a750c9d5cd665db20a8275fd4961c9eddf3f0863cb5a4a7ec09a01e4a6b6bde3f24a7f9b3c26bd5750f11bf86941323a338509d625c5ac728ca4920182f8e9eca8e069bc6c7f50eb0f19662787e04167d34c930bfb8b396a4f0c583103e47a9c00b720de139afb817b75c2f1086104e8830695561a3a671740cfaee036aec0d6efadabdd2f7a1d671d582a0c80b3294a4adf227fe923fbe2de12ff6ef34d9cfc67eff422d97cb69010cfbbb5b5ec8537b6b7afbf52e919385c5145d5115699cf458bd406f6c1bf86b384023c078d0337a8031c0e2c193aa135a828c895ea70d186dc932f82abb472dde78d3fbda016ffb2ef85175424b9031d1ebb40153be50f05570874a9cf1a217cdd6f2976b95ba4bb4028d27bdbbf80e7f0207182b89ce6b86c9ad64bef8693ce30b7f7f68cfb644f8c9c7ccaf049a0bbc9ca5f17ddfd6d72fd616613e26ee41c536bd667f99f340e23761c8c8c090f6c1d125599f7f0885394734b15f00fbeaaa0aa1f92a24733bc582d04ad2005beb1c448a17cb8cddec8cb123b43c77e2f9cdab226e4b3a49e95ec208e86fbdb6b05a5812122f083dcde1b1d068d8127141a8882632dd78a90b00c410fb0dffacaf24fc91e7897a3ce908fa4926e46979781dc914da94ca296c3a52311e79ed5d5c7d5f9b4410828eaf69f5adddd550c7454f5e28b1b2ecccc614e1e8f0c059287dde872728881d8fe65782e1252e62cce512e8ccc8bbe52a113ce4495835b5d1eebc0b896a8b2cfaba013a0c9da4e46e745cc1df49a741d5ba32d504eb04ae0943dbd60489a40c75cb3df1187af678727dd2dd796edc16c86d0785fb105059670a6cc2828df5a64eca08411b65aebc2022b6b2499a7a6fe53295498bae2226e8e93170df3f9f718f01a153ae74bb4de1a48b8f13d3a49bd923e889b17cab0ab6a62692d29d1a9a87942a71082c1e798a3a5a368c85ba5cf169dcb0a6821ab2c4aa61ac5bc4a77076f2e1a7860d373fddf627c382888ab273c505c00c74379284ad15a6929ee84ca340015be54c2a33e9bc68d281fa20deb2620beb86fca1935f03a2906567c31aa2eb27f2824a1a0aedaa92ff364e634ef5062a7417bd42372b9a8e2b7c155e4abee3ff38a47f1fae957e4268f7512f880ffa2bc9432f8f68dcfd47ccf8bf8c04e8698f1c11b1434f8c679c473134400571b0b48d5507a472dd8f82f98e1658524718be6b57de245461abfa097ec2c7e2d46f601ab2baeec3123a8fae6f1a450c5357d8b246ba370664d0cb318aa6267664163828b114745cae8270d6f0b2736b045a848818ea8652728ef68dda60bdb6dd1d84619d1f7c7464748ca20b82105ed4563444ccfdd838ce534407efe1e3c62bd0804b675883e9cc9a359d8191036e66a42e6c950e7b2df596ba2ef183e3ce564a1221fad20f232acfea17be60d943128b3a265b724d73468f194a5603c341c0091877105eaad2b075df4ea3a9371f50d724f54847d9e7f06b624359ae93b04641dd0db1a1005638a957d1293646a46f4bb933a180e2b1a042c349f865e94f35f913af66cf4ec0c08e69172bb0dfe84562b5ce8dcf9e9d40faae198ca52275324abadd30931edd557619fcb84b0a0a5d0a739a2dd2aacd40c8d6ce64ededf2fcb110a23e48f0c5b914eff2084ab2b247a183fe86c961dca21e2739c49a4078315970e587ca45ac804bcedf3a84fe65fb9788c4f6a82e9d1979abc4696db7b2d3f5cfab783162d0d2651f15cff87c12b0f61647297aa8ed7bead61919c0281a090e64e3402938385110c67ad0e17975e9d8646530efdc18ecbb3787febec0138064531c82abb72579bac79f836d425067cddd3ee9d2c9d21826f2f50ec78549d2a817e46a619baa48ff673545db5c97d3e4d580c690a26f7cde241384a2ade183ba4232cb7c152b33fdbb52df20e082d98810dcf7b528736baafc42bc46a0d97ce9903a4ee5959ac6c5ee1a5750c9da6bd9c8324e46c0776644587cd5506a8ada8546087cf65ef80bb02c4484d3947d9bfb9b60fc10e0c80fd9eaa7a1570411e20922682fd58940840fee2ab3c9e43be563daea52ecdaf97e4e7523958d40780078d16c86ff57c5cd742f828923b2b63021d4dee26e7f13335f72596edc6c1a881b801337278c84e4a1972f29fc3b62d0c8008f112e22f486895bd3626bcd0def81c3de1c15b9ab572a2f31c76f185de0f156ff55b97d8a42e9324f344222d97d4b88f91ccb222fc485d69687a8fe27c3429844eeaf0785dd1dcac12543c3f135f3a4aa4fa427254004b66a67f914d0f690cfc59e7aa74d9fd91e939179967685cae519500f38fe74a7d0bf2361b4578f4e67ba8a3d39a49e72eb0332743268ce3ccdcee148f92de98b340333723a805480ff1d3ff143b37d5b7e6f4523832f74548f6ba9c8ea8a867bc147ff89ac397a4c580661c2efc601874c03e326c6bab993b3a5707f46729efeea6ba76b7a0add22728526554127ab3a6f6e3a8c0f66a10b1cba5fedb0c96e5581545da335f757295ae8deb3a747fc84eaddea1fd94db9e84f19e4af2851262a27d03fe64045f9af3fda37e1aaf347f937b4d64d988351e0bf85bc4f68e8d6765f54838277a9f9bf20214e24c26436105982d4036f5fbddb786909be302ef6085332ce4e8ddfa9018795706cac945428438f004e01a8b55b3c51d8acd8e2d77d1650a888d4860a5599aeb7d288d7d5a903568caf2cf7c8835d5a5260676453177b622ee4f55a226d9bb81473700047a9af9dc79380fed49d5815798ac0e982070bc2998848eaa468b345b1d02668b34eb615340cb3743a496e877c1c182b002900f1bfd6708a5682d6f45143f10a1b1ac8b71c901b4eb7b4f17daf5b76bf7188c9bd6d504c18419b8df18bac478bfb0ee83d5948147d155bb42f1171d816df610e71e8e3566bf867ec5a60fffc66100889b28ddd8d3980b9c0c869d04304a1729bb0f229d7402e97b8c986c92436b57a5a53ff122e70773f012082ce1989a7c81c9fed7e27866154a08f8c84d7678c19c21179626c01f61bc5ccd8369f61e58522fc895c0c8d8824b3990e7a84531331ad94d1a76d867db56c82edf47a3bf9e81544325eba6d3d931c6a4cc06c904f90120bf5d9ea43c52462accf59a809421e5a483c2aede6cb136c52ed11c820030cc76db9ff89d9f2d38dd962c733531a0b9fb354c800d639a03ba5edde5f922bc2663edce5f1a9ff0dd03d2c1701a9e316f04f10068f37ac0e4be1fba2593a74b1268f6dc4eaa0e1a1927668e9e3faa6d7bee787f2393d24b464174aea52b617863d357a3a4d71f4d2b74ea699e872e5fb6928c7f5b568b4e4a6ffcc225a3aabe5105331427aa2b9f12640df7155ffa1574c078da8b4b42d63dcc352838087854f84c85b8babd0b9107210b955fc9e1af02af7993423511832e278a842cc2c1fc3c31fb395a070bbe1856adc90ccbd01e35ab3e7583186ecbf00ec67283a9240b99749d04e4170c015768245216cee1e6d42ba24435e08a243e33be0cb567c2094fcf98385a6c8913e3e95cdd41c89e031c16eb5c093110d81e50c15d4b65769a8170b3419f87ba709e1d860b6837c1ac5f603d5860691badf4b755558433c97c11167eda2bf789c9df04b15df18a7ca8fe1d7fc11b376918d51ffafc649b3e9e9c623138417be2509c14591b26377a318f07853078497bba20be1c29d58c7a4a3ba5631b56f7300d8b79fa32c0cfec1a1bed8559063794a16d1d0e19b7562e92766b9e2e8ec3b3edcdddae76c3cfdbd43979f6807c18e97fad2a6ec63920234c4e9094fd898f1674cac456fed2d6ee434721ac1996bb69118844a92c0a38276e071e34740b1ae063a4da962d45b30bb17076884c49092252afb2782e8b9540546e24ca13541d20c220f22b309c76dc491537532cb0ac510a6af4817559167888f02604a3a764421411a10e72befc6f359a4184475a7914c4eb0da49d6ef68b24a7d7ca48eabe03b476590f9638f8443768ea01cb5803d8c23cec9382f19f738ce4ae58f3514e28b845090818151c44390d1d729f131801e4d92e96dc61c8d8165b8983b883f1a63c0536004bd70ff4bc7b7ef3fc6e1608232da3b45204f9057e0bfd4ea26540444e348687ef77d31a0398e37511401ee5538f747e9a00d42d532a4712483f7074c0f000b724f7fe9081e3363081070ffc77ef26bcac7c7560531a0bbe1fe2fca073ed8bb86be953f10d0a34a4ac7372784d0096de4ec47c634d8d84a68f72702fc37e4ae4606b13cc7be97f319d629f6f222b15a6ea10de659d30378d6119e294e6df806ace3c683a4d4ba424ec7566aaea3423972f90784e2ae2d2928ccabeba8d90aab4c97a26955900c67600c6b47f4b6aa6a84b546d6b429ce6f155b0551ed44ff3ec974be042ff766bafe17147579ea2401027b000e2064648996e9b2244da8a37385b80061de3a254a9e3ff3d5769f02e04a51524df4ab3bbf32e1819959f8b77cc3b3fc0a96801816703806a4901badf9d31d29b38e1546a5f652d3af70cbd3a0ba51652cf42135c7340f15f3a6e0547f44f836d880773e563043ee8ad5a393347847af5027fa07b435edd17387c47bb16c963c2fea3e3700b95ce636178bfaae8e4ef284a1329e5b91fecf4c59aab588453f52a9fa3e4597af5c91bb7356b6fe66e0f31b049b3ed056a47bb818b4cc248421c6ca0e4d9442a1e86fd73efcd3c3d57d32e59164328e7488f47f59cf2a32366f48d2b058f7690509adc049c95e7fe7ea4e21aef48eb1100b2ff1e095a5c852b520d42974301fc2e8e01946b5ffbdd8f7ae574601732c338da18a4f2fad5d3c4275b895a8aac5e81033193247f1d575751afc38c40add19273f7ca41e87de47a840851117f19141187f2e32d21dd7007606ab0dbe1669d0f3cabf2af388a05fa496fa8b2696ae7db629cd71e39f538e3b5548c9e6931f55074a2d6141c422f21b885e62706919aa0a0c012dbb212da8a8222a46941a862e65231251bc53d167674cd049a1b53564f5c0f6257a77d64a9e46213bef9a32c7ad5ce39287ff113023b800ae3093b6efe54c4b813a538d0584ea619e0d62989d3837e8715dc47542cf4e842c6d62e6f60aea1bbf8218faf024c60ee5dd13fd103a82b9e6a04e96d8428945eee22991dd48eb3e9d2c5d9ac48bf92e3f11c21cd04e24026b6b7375834b8d586abbe08c8f079c5d6ccdd31be29e3f0c67a5cde40ef7ddc2656d237ca9ca880c4d9a38918418bf59ed5222fcd92c2e778299c362d6e4ec5105445eb9310667da972bf856551ba20a19576524cdfde0ddac7b94dc67ddd9cbc8502e792698db33292159ea3727fbcdb54f8d51fee03c2568e1a4099b74974acedde51681082dc81a4d132805b04b2345bb82603bee51912e142969636ae64b3f36a7e66acd1a4fc50d3a00bf940159425bc89f2108a1ecc9b82a92a9487a8bfcd8537484538f73df193df2e8a3a3ac600f3a2c9f733cee67da777c3fdfd9be282ef4de553662a18150ef28515093efd43f84922f18eecef1e44d55e7c6953b16e5a9092351f05485c88c08dc5196371011a2098f689f83a465c13e4252bb7d5fc493f286075d0fafd0d522f6a600946d7d3a18bc74a97321697e73b15512c3f8197061466adaa86944df8b4a72ff4a86dacd887e571377e509dbc83e84115c1d128551392392031c5dc04ec291634bcc9f71377b4a0a452300a75101c5b5bebe909939f6f5c43283e219b52d0c48f6c4f6e6352df3e66f02e1dfebf9031876af9dc94c4f63b53985bbd90354ad42a51e4f8de8fd8d84ebfa1aae1e58471fa65ffc5ffa5562e273b562318403b44745f6c81ddafc3638b0b8e66ff6699ce0c176971a5a07dd50080f5529eb6bb539600eefc514262aa3688a76d9fd3e9e1f36d6d856f9ee771c4f3e30a61cf9a6aee68d9a2c27c72c8ba666dfd84ea6312dd30911534d0f125e9bca9246420bff94ecfc9b615af34518979b8e4d0723f6db48f960e816e466db80f872997754c68117f74314fd3d3d08e28b621421a5514daa958dc5fb8dea3aa43afa5a23570d1f34b347cd2667d35dd63c39757e5ecb401c34b600dc89311533ad8e9c8c03f0ee001fb49da6a5c4f94de779d35bbc01561fd49d89fe09f0d1e94dd20601c3bf6c7b1a92691ad282cce7681e96d273ed4ab1a2d45b1827ae9887a79d1845c4b0a79740d8b5cac4327a57ac3ce3b221a0b98f74195008e963b4b22a876c5c3cc7745b159f372de4580b56e59c5702afacf2e8ee74a2b33934b9f12da82fdbb39d5f05b595e1587c339c52850bf2ed83c05d18e2bbd81fbb6c201b6f26d763aa4390f97478d8cf8a48dc2302dd7d06007db28806800e058a5dd8d475e07bd4b03917dd6989714228f0d187c52ecac10f0948032ff9ed07a372206885e0561153016d1b6c02ba9c8e96b7fb2256301c5716121cdb5f7fbee3dab7bec4878cc9fbb1b8518ad6b7a1745d0690d22c82274a9efcfcadd29a40ad24ce8af7847166816378956eb8b376f84d0562ebad8989a139249afda6a83868831760336e1af50b59c4783291a0d38bbbb9c52fb3b132a6e2f082ad501419757089e7c017e2d855b81a8452c9fa06902992814cb594f90bdd81cd230d3a04bcd47d4a48c486f5ca23b660a31aac945aaa5839f31aa18e0e58f057b3649096b87e6bd578838189a6bcea96ad6fb983bc17e89ffec12b7127a79c1a457877a9098c2f95f319af1b64e8caa58a04a0c394403705b6e5e8bba05aad802ae25c95fdb7a68d3ef2993059baf432dd0152f67f6b764e4f7c29e87a1c80489b0292981e7d76cd67a97d6b4a6ff37cc6f20bd8135f3d65488f1dac30ab5779a576891f288d1fbd6fea6dee325a61a7a5d867d430a00f06bdc3289f6c4eccf398445ce1c7b4f3fdf021e18363103d86c57fa5ff77710cd8d5606e3bd98b430a07e1021ac78c807c1a76e84963b813390cf7c26773bcec84421573f1a0d208c81ffe35aa5483218df51a599200ee6f0136efa015cc641dc36a263223a044c1c3d2c856200add601d463483cedee160041860c555051f5f569603786901a48759c388291c5fe30371223de1e346bb3a048d47841165cec959384af8b1328c2debdb28122b1bd4cfb716f6240d2044b0ad5476b6d5c6171bc5f36c63f21779f01d1cbcf433e114ac1fe884c4932198165e0154f5cd20f7d8fef771e465cde3c42bbabfb31536963b77d092fcbc9c24f7ad8ab2c0a8084be6b3fa29f29d3d0b30453db9d83a1bb2abb0c4d84acf66d8613f9e7aab73bdce057a72e8c43c90062a30a76db38083a0ff0553e686982035c3264dcc443bd6ed326ce074c5137998b39e6eaf192656f2ca6614b71c859077fa1e513afc979e591d6ddec067f182ba2294d19d47aff0aef7390c1891217299a8ffa0732f72b4b42b8332b00bc88f3d75f7d4b112083ebbea9f09c41c7273d581b0c507b59799bcb85806fb8787189f4cc9bff86d6913c07cf130f89a31d66d0c3179fbab0706f0016998c219931515b12b5d071013980125033ca407bf4b220847908205d9c49149bca6091689b85ca42f01dc8831008399c14e94b0e3e9fb3d8039b5a9fcb59e62fcbab289da21d6b91ef2059203d6834922517c3e564b1ced628400a9a9f4cf1f12a32d24ee01d5c1845327b61190711bf9c780e169ee48a6b3e15c14ebacedccc8d631431e486a990e7304be4eae1a16f6e41322d50e84cc8b99d694705204d05521e070b4c2fa354ff7cd4a3cbe269f2cba82df9afaf957376e3140ac0d9c60a11c8fbb47dde6d001799ae128ba0ee82dea125f276b95139792df4ecd9c167e8bbe2709bc307e77df5b4a8f0bfcd1afe28b1a53646349a5ad1f7fd19a9afb48888a822253af97d2cf4b11f7dcadd5bf928e767c22d8a26e1909766aa43dd806493e74f191e8373e264dc0c133928d728a6de56022de205e744eca658dfe4d58acd161f4134a2e678d1f0c78962f890b44fbff5bc6527bcbc31857dc3e372b63db016fe5880418961970b7dfde3bad588104ccf876eb5e744e4d4f5a7ffcca64e9d5021418dba08d796c0843b2e633af424fe92551d13610acdea489d62925fbb74f7ef24677fc01f2f57d5a3bbbe030200a85c3e8bbc0b20422699ec524724fb0c273d89146a234d677ec9e64158d85ac078983c2d75ad89c23d1f0aede548cc86338b715ebf19ed8c6096e270f9705e2211f0891264b06fd3e437026c80ca69291977cb5a129b8d0603db994af41dcffffc57e59630077f41cb7932e4be4a8e56e5f30df74d2294514ee8f0e01348426d668b0c2bfa26746fcdcd8fd6b3646ad6845cf68d85324f4ac1dacad9a00ce2ab938fa4d6c82a76a524ae78836542ac90b2043560af9eda401377c88c01dd1b85d40811fa0d7acab92b20fd13e7d86d3e99f7c00551e5060d685497d40b6b4edb0b6193b7f199a65e3c41eb8116e3270453e0aecfb08285eb7deb39e82cffed5f0f53e198a4ffeaee67192c30323acd1c46485add4f6b2023062d813879fcac334760ab02e7baeef013d37c59d867397e56f245b5aaeb58366bc3ce91ffc810cd7c985c075b941a104c7f1f19883b64727cd7188633e52c459069f4e4ee1e1948f2b5322b76975d246ee3ad9824a44193084e917085b9977da60a170226404148283d638f89a3fb412bef9c2e11cfe3b78a5632fa198cec9d493e0cff0832e7446dc4247a36e5af6a69749b8e951093756fc9478b543cd1e6e45f112a4baee072802c918b323f37117bcf851903488bcc60cef7fc79a1da35ad2b097faa867d55977641243baa761336a753a43ce9761353652f80f37996a20ff8cfc10ff0ca11f2e554e7338e80537d737e512415f5968e54b0d82afe3651c6f26a62929736b64265ba380a2fb365e5950680146209cedcfb3bf964563f03bc746034b9e1aa0ad856414474ad27a566fe8c91d315bb3da0a9102b2a2e260eb889f34912a13723ca0adcb1056968c8701200c65d420c5987a0ffc40bf2776fe528b849964b1d7ad2a7e9085f5bbaa8c92560471994efacc2851e49d1c0b6e9cbd4e8ea590cd3027c75e9649701ad28e62ca4d8ee6d86922136a3a7b3f7cba34a1b7f00a7d1ff68047d3753795b312273ca3b97b746c40959286cc67fd53323084a417f201032aabedb7722a298c2086808d2f7a0c56b8c3221bcac26a049281e26bf0a99907c7784c4e6d32100daac33d7edd4fd21fbcc9bf0af327261cd5152f2b3f52f63d6c8472406f0b4816c57b26097b7197835b56a3023c84307937a22b90cc381b6f0b8b3f8765712c3f016e5f69503d08203d7d1dc8f536091af8a24c7a37b38872d3aca3443bc5f0dcdaaed72fb1d7e2ffe41c9b7b0b7f200275346f1adb25b08a41a99804ba471ceec524dbf2d7ba3ce10ecc2f1a04b73bfc444daf21d0e89641cfc2e165d919c261b3cb222fd066b20aaa255f31752e437629401df97cda1c2ffe3933d7f20aedaa5b9485d0d03d17fc97ed2cb66a02f5a0664c3bc4baf8fc0abc580b21009ef0bdb89085b2b94aabe72ddf67831177471b6bad64a68174a497513cdd04c6cc3ae1f95cddb6599a74cf6756ff58e344ccb7aaabba55a791b7bd75996a65e3affbe31c14b49e59d2ed113d7d3aaaeef20b55319879090a82884c72cc433a1dfd179697479de47959c89d8d487eb71308113f2d7f7ca4fbe3dc2ccbf58f2be579b8aed4b9e41d9cc0dbcc5f25c49316a59d16f59cdb9d1e168c78b46729589ad26f60e10a509eb0ef723716a649768bed6d1d4b6653623170910069122699059e0ac82b088ad49865299a78ff212e70fff3bb18a1366ff26ffcca324375664ac89d7a6f1a71a14725c337d118cbe2cec2e34fb298f25562388858a999691891f69172f00a3d97625699ef1466929c330a658daad34667eea05a1be780766d39a4d6c36fe0e44434d42d00aac471d064412d466a29648d30a211810e101707534ab97d09c1c7941e953728558ce9f63fc89a4885a7ac0e7306061839e60df39f18beaf593813021f1c29900cd8c6b748e22ba53398c55ab7cb5618d4004288058388c3b3bae2374f256d1bb28ecc65a08c9f3eabac5fa81cf53e17631075b144dca796a8d11efa73b46cda8c1d1ad5bac3cb5f55abb105f972771840f9dc227e21390241d5b9757f82fffdb53fcbea2d1804a36eed25ebca63ec2113f34d116fe125759b2619a6774b6beb118b7955863b79e753b9a41c195902401d5059d5b03fc1fdee12a46fddd57814ccb1fa20c899418b19d29bd18e457741f4fcc5930e5229a49008d6cc47710a26dc055c1f5cdb93e875708684e27a6901823596c825ff2db0cad584c2f86338e2076b3b08093b424cf7aa2096fe2f8d478b82771c28cb40221146b4fa9a5c9e4dc22c777bd302228612210b4c8c13618027b1ce27b23f2ebb8ab5eabad5b0a9b5d1eef94ad06e36850ee9bf95d6630b0218a73e39445d55992bd913050a9ce401e0233eb2d3b4cf01e7647430d9e273351142d8e784f9384fce163cb7a5783d67545372c17f6f54f3ac4114182530127419458676cf246a586999ae3dce782116962df544729e09ef9d1f5ac6b21d9302b01dd19fef29dd015ed2b3ab6756c9183289e3a678c6a7b216afdb6a8d6f48dd1a1ea92d9071c31a6df44c2817e8e12635ca0487998249059c68b1469d926db0757a50e6783567672378877b929b0eacb0f91d75d23102742787e61b3c33484d083ead2bec5b3b31e6733cd013061fd828e5d1813c9319ac2177deb7046e2b1100c323af2d19761637687c7f65e9d4084bde8bdb88a24df88c8943679739c579f08647cfd74608d10c70899a1459f53d703436bbb843c33da8ba0885087014dcebbf94e2d05a1583f0a03622e73a623d2abcec779f524d947d2152a969c860eb194424fa7950b5c160d8f1b0a5e18164fd3ddb935a3949b867be55caa0cb7fc87836228497b712e51b92d22a374cb307eb293291a6d6fb4031520c79bc5f35e3684c6d2e2e12bdebfb16109c18a971863a99431f905c321ace76bfc09518ea556cde44e914b63d454514ac1959798840627c3c2452c0eb53afce86e99d7a4487f9c878a85a07b75d003bcbb99cfa9e4dda3e548ac145a5363d352df1d1ff1010e7e8b9394080ce4212a3c813fbf7aaddfb26e47491d474f3b7afc223051c74f5c1bc38be5f356db02e03e5880827a0f6e92041aa4d7ce6d970516d016f1916811bcd1cb511b2761b3bd4e9c44a3d5263c52ed92febb98aa3479eb7e9a95cdb6bfe14ce144a8786088352ce80a4405055fe1d1a9c05c3cf2eb8f999b2f904a95a9a89f5c1e87895784d376722b71c5ef3163b38abc725e2f7680e55030de16a43fe9dc32f12280687ce0e1632ee5b990a2a98b1629eca1fced4c3e44cd447b9e51afaaa20e4289e9985b5360e208fc176e2ed991c2528b7499be4d0e2d500be1a3c64b5034cd5d31ae49ca8e2925999e4241a565d950714063cac3accd1af4666ec92c5a49c1a9e2901fa1494136323f960ba5371b3a5bc33dd4694e2fc67f97d6750b8047b1507b76c09e669182cb0cbfadbd26179a868783af55d49c28e4d3c8fd93f0be541578962fdba54338fe425924a903105d6ce61cadfde0a428d339221fe9b9494ec515adb5c68be415aab238d30e8b4e96814acf2d065206e5fa4d00168c9505a048e65ab10c17039643dcf3caea0e3da3c2533a22b22fd1a029e317fc818e5ea411d416fe6bb9dbf0d5b20dab070b05c568751b78c9664fa693289c528e026f9b1b4d7c11d62dcb552a9fd84105f9e60c9969cde8724b4e407c705ee99900c973fb167709cde1a73739f3e10809f19fa38fe1bdb43ecb021e0f6fb0904f159a1e723ba85e65a1d1873de3389e3e8675105607c4dbe8b8430e6035f68b02124ad57e3dd4b6b38b675a8dd43ddeee2c9aa907b5cc651c6f5d1c1082f94afd36162571a27ca42b2101defedea881d3dd5644aabe2a309b57679dbe47be1f019ef653f35eaaf64892f3bf4e7af54642dc264422cb7c5798220647c8378eccbae851f9893eb2e4208dac8a0237c812e496b01a5e7bd7221c803ea5d61cc5be9798626364265e8477d90129945cd2abc3e5a280fbb9669bb6b52e80faa4c5045e2f81165c44c0defbe7cd0b9a0190d64fd948ab0261c85e6258d01fd28a2fd0cf28de00b3b2c70f5cb784dcc0db19d6b82ad5dd621738025b0bb2664ed75b559f8fd406f6d2095a42cb983f0293da567c85f72dad0f60a74db99e137426bd5c058ae69a751bd3c92e7f5541040d4c8b19580a6e9e277b07fce959e51b495b82c85c63f8b7d5e925d210b373aa9399cc6c38f7d5f0ed4849645382347c26d49d19bb5778921484dc50d5bd4378401616d2a96408c69595be5bcd822aaaf30510bc665777f0e3984a09ea03c0a0ac0332961e0e8b60fae90096c9c16a7c4693ac6318054ea04bd59d6d915cfef7baff4beb20bb3f34d597a9e46041487da09daf90fe9d2d82a619c8c264eeb5b8d7ff876e9ec8e75e764cdc3bb30464c80e58c7dffc039011035a965d4bb79578a5ce13f2ff09d2ed2b2fc9e6805891a7325bd7f7c7b5437c68c3fe17046be9a2917a99ab12890012e1986b9373007d11f7993a1244c85d56f4dee129ec850b73c7108fefcf765a7b47736f7cc1851135c62eb892d62a91424e6885d5a9808132c74f35f19b9869337ad7e533d19e48e85f385e777f6233e998ea1f002761ba3d768e00904e31aaebf49265562441a49a57d04cc4c5b8d66395134f866fa0c3eaa9314b8f461d09c28f312a1434f65117a7eb872308d0a586eb08710fccee10fe8ea59e93aefc539a84f7498fe17c6481c67bedbd9a1e7c49012f66bbcb139083f225fe99b0bb88477b8fac8bd8dba3971bb997a6eceb43b61e7263c80cc1c26b03a84c9e1ef868dbddf10f7dce234e731d59e0b84fc68886e6ebaf74166802b6010ed4dd24058a1f5cb6ddd41c79ab27f847ecaa3732710a98912d70526032cbcd3473185c95f670f6c925638d013554b2bf8ec066221416102119ba46b7ed5764797ac3e8b4df75eba7d07ed59c4b7b8115daecbcc7c302dea5f3e31011b068e978ad8c384762e28cc9987418d203f9c31eea2cc64f062a9c4bf9aa2ac9403bc69a1d951b2bfe18c8a2dfec004e27d0848b4d2a6b1ae3622e8654cd30f46c74d43545bbc1063ee6e743482f104963af3994ce29d88bf498676f119fbfe9b36875967e99fc27110cf5f7602fd19e4d4eaee6691039c66951fdbff7ace961703193455c99ea497a1d879eb40861a3e2b9f0f20a7dec86eaf0d033a71f5d2cad02a86b4cdfa37fddf2c008930f24d248781168c8575ee12c323ad6a71d4b6453d90c8103ff70a9030f1850e1b8564ee0bdf4868020b761039dfd870b89783810dbd716628d8fb43f56a82090ee72bfc61dce47a5dbe520004159e2aa01f092603e9f42530ef211316c52194e01b5c4d8aa427d51689b65934cce6f388528ce5c77836596c3ede3c632a151d196c1ce682d54811a72c42be77710b90738dd4276808ab4af7b5b3984fef83c0c1f22ec53bf46010a72010f53f20240e87f820fa43437f4839c0fa9b3d504c32a27571f5714407940b3ae0291a0fef26fd1a6d70bd9a92f8870845b342b63db576a6081b4adc61e720e9fac7492d24a65c85e961f255a8be93fedadc5bee12a8c2263b55d6a88e686a231f252927c682e4607a5b62d7bbbdc92fef4310a444672e46c278c0a99ae160b9cde4ecc2715f9465e7de0ebb27cd5f55ebc3356070ecad20183ab922419e41e7d093fd44efc463f4dfb759e5de52c7cd61764a4d5c7275446fa96dae941287016f4b779f98928236bfc43cbc7981453f319ec70f0a0643a7bf0c739e76bdc07c0dcf08e8c6ceda9bac301f7b7a12bea87c05a9be290de47aea08d598def03a0ed712e7b4dc5b05766731c0bf57d9122e94a9799a498ad09a7aae72e73d9ce6a4ba8fe403ad162e2ab16838277049062a283ad48ac3880694d2c4a1a50f5c29d8f404ed83d6295fded99493cffeba32405d519fbf491459b6c2a8d204b9bb27be853b23af282d7c433dae9ec56cb2d3223627e110da2fcbc58560606ab057d6fdd4062cdb9bb7d2b3d75b6500f7edb3fd2bdacc80f423b9d7c1ec7cd5b5201646e4926ee40ec53040705b9af725a446190d9d2f3317fd5a19fe6b515f40710474f6c0207ce0b367b9ce5a7b5593e3e9e3a544474c8173313e682db6c92a29fa7aac77cd8ccca7f2ee04beb28d008902e7a95a2005a44e0a36b42ff3eb2eecacb4e4c7a5260b754a2811593569bcd0ffe56d0062c8e881f0ebdd5efe2702a5217d913b7700d6542b3a6644e1ef3e25222dfcf1db04d0d37aa7c238ed0d94b72f15060c81e9fa27e809fccabbc5a4e9b86fa7d4b4ed13924a3045f616167b15259f882d3e0e618bd80a7ef656d963874288d6c2d19aef0bfc1eec2cebe21366d4692d17e2818d9b53a995de7c50590e3b62ad153aa4f64402e533b9caa792df92465396ab9a390f20bcc3f9f05d44a661e535dc2097ff3a0acd0a8b2fe6522da174700719de1b7cb39a1e000d5335ba787ddb24aff667d1cf9742c6761c3d20bdfb785f12881d09a15fc8d1ed2a703a0c65ca7c62ba1d46701ab4fa61553c76711c6de61152d3a328728d244d04583a6df1a0aa17c34033943dba2f4a7ffe9b85501ea47645b661398233ca99145ccfd8a88282d792d4fd446207e7dd0248bb51c47d7dc4c9a6af7d757fadd30a240eebc44f764ede62234b022e6503b66c56ccf87b74324c43d661ec574925a9262f268ed0623469a4cb7f5611135d97453adfd71ef04285e9107fe91f9416b0e3d8f973b68e648feb76f7f56aacb5109cc0c109efd0d53fc492b736d68f793cdafa7d75e2f7c9488729ccd984a88aa21a6cc123a05c40810339971440b7ea0e281b8e96e90c18a986aede6c9c25be0de289527b9bc725ea395e3fa8c8b719e71e2e653e5f3f2669315f760609fc523ed68cc5bcb098a8cc444a1e8364f2c65d7b6fa3e9fc3a480df403912d49ade8a009f4b0c6b4b8146b8b03c52cea1906cce0cd899e24366bbe46ace1c7afcd83242e079556ce9ca83cea4af1ef177e6de6fbf83623f8dc527499780f2d31cd1497a670b5a950445cb71b8c7525ab6905177e7666be9cbaa229ee25e82939914f62904a7583f769ff8e86272bf7faa927863ef5c66409c779cb771f2b2d3b72b178cd11c35e3a8792bb515ebe15eaf2a00b69187a4031d5438caee146d1a17cd7ac310ddf521fc6f5a3ff0afd4dd48944ffa493162fc14a88341136a0cbece6867141809899f0f0b2c0e6d92738fcb6e44d86e51f16ee995a825629854dbdc02e8417daf22b06ff13f7b4cc225b8f8a16ff8fcbebf78f05a4d8938f1c4198be9f04aa5af018c7fd493253b68ce023dda5f1ea0d8e2b6e314b35693ce08c64e4720811b72fbe2be3599b1fd30d52bbe02e075596c731b405d88383a178c763bf31899718ba3627df42994ec9d0445be48b6c8347c6038f6e671849c2bb9137001b9dfa3a60bbae48c634657a61a4e664eeda80d3d04475447cfb7b3c890b11e7da2a05fa0544eb054a4ce6284a5d97fb74a155541ded109d384bec89b03951654845c7d1a0d8a8073e017bd298c83b314b44da6e724adc0e21e2ec857184203784ce80450e9b954940b9c7f29501c71e5b6ce96773151f370194d92e093ed04a38d590e3b0b396ab636119c13befc350e59110bc46fd36f888a9cb29576789e59e924f3262dd34a04407a0adfdf47d9830f60da14a4e3fe91484c5dc831014414114003c72e64255cb08d4cc4a5d9c621972565c25823a8a77e876a3e746e17f252b817c94a977407d799727b302956a86c9bf075f517f9dee0a94a711a4453a6a3705f710a942f48a3a5ed35cbf0c66938611c4d6961c20f5e749949d9f573b844b68a0b98eb7c33b81185291405fcec76e056b6ffc52cc811211fba29a8c23f21c389f81a22e16cd9153b99d3a6f1c81c9dfbb620d920a84648cb885f55b25798bccb382a1b8abc4d03247041bf18235e59c4fbb90fb1594b7529db5b059ad0549ea27f98b242691bba07f42b2dc9fb86db75d8a8ef741a289a4727a8c7e3934c8a88709f70d26648397cabc69054bea066a46bc2dfea56b13248981f53f4a1b15fe2cafd49e64de64e21b2fa20846163ee7baec2be7220c5f884cbdd29a4124ca82918b7cefa0c44bc8a8ab46517ec1e33a32a5138c017317c5740e5cbbf1c7b22ae315f0d31674899e4f4c52b724b0e03f4aae2984905ef3624efafb41c4f7354ee1aef4cfde06a8740fdda26c5f7800f3b4ac1b2098ea9e245ce529a9e32e9f8ed7ff0d72c6eee5558ca0501c95175aa6e7f25ff8d33a955fecbbb71bf00df6c59c150fba397856054e235095c4573f91500f2db73ceca7188e58b7f11dbbe5d9c490df87dbf59d36d04f0cd7af3539edfba5f97d0b58fbc2f02e3666d66b7d0c40bf408b35dd7b36c7b3761cc47864e29c0461b703c247c6816fc610b7d832fd092ba4f0499c2552ff3702cacebed35080cd2bc07ca8ff6930eadbde8b3da0b1ccce20e8c7f0aca271ac5072cf17f0e5027a014464514deb095709a58a09e958a0e4e0ef4eb06bd140c25381c17c9905789e77b2f99013f0ec026a43930a5b11a12a8a4dd58c00294862980ef4472b131aafae05409f324460057f4b362d190647f9d9ad5db77f149d55044b87f016ddff7117e9ed6f4a849a98cca4078ef2620f09c36c6b31c8ae95f1c5f24040d3cad1dd5086aec12cd4fe1d4f544b9cb568a11a2ef3299dff36afaa65eaba5c08b59ca0b7001172a313722d5c76e4daedf9dfd876007b9e2742b0b0a790e796934137066d353656da0c1240b158f7e1f75f24cb57bdec9b33024539e434007973410e8f2a515ad165b994ab01079d9bbfa80d4a9fbf9de46c317dcc12ebb588ba57900358dc05ceef1ad18a353ebaa10a8a349247809cfef1b6c83643fa8fb193bf2f23406227b1b99ead28f80789a12e76df4030ac943f4d14db3f351e34a673e5b5a5b6f80f1c3037da44e30a74aa5207c1715149b735dcfaba39c2838eda7193b09457a0628626a47f88bd1b7ce7cb7ab71e71102901f8ff3dcd0239a6009c709bbad8d6f2c0196c2c5bb96b33f737169ba073ee87d47735ba7bdd985c675761e7bbd4c14e26187191dda2e7d684bd14b158fbe39bd2224f5f216834a7614cd9627d50f6a994d6659782ae5ed805df0b8837dfa6332037d2087178e92a77cf047341597472726e30dd284fd38174d2f1bf735aa77bfcc5a377dca909116f55b6aeeb0a678f24fe404b3a9e03f2dffe55242300d6e78604e0c58de709b26ef2a113ebe88f53abd1a6ffbaf145144fb0201f5c7bf48f15ac6418e4769950b32cd473561d58276b3d8d3ae7f1bf3bd8053df918fae07117018d16a9fc57f4237571a25aed9fabb5ffeb5970f2eb514a8d195cac8a559402f978d143c506cfbbce0f7329d714663cf22e514d15fce688ca94b29d7ccc9d975fd86f101a679b0f6ccf51507252a9b9583559ea0c03fa5a075768aee6ba0f28caba3411207dcd433be601d9dcfe982800f29bcceaf2a0424fc536b043a9ade90c586c33b43c662bcc17c636d51d5a3b966d0881d31e5d926929bf4e7adfd19c702f4a768b1b9d3c5febdfde4db330891465bef24b9fa834a0ba39f9d70c908be884c63eb7e11f0cda28219361e4bc26392f94d322d5e7ce50f8fef389be87a4290fe5052ba059f9635afc79ba1af93df4ebba839ed76381ab8fbb057dc3b55e48a0f925db88e74f40c86bbf125a1354875dbfbd18125ff284a418d6e40a64fd46ec3d595b5714c8a2619c0992ccb0c333fa8c4154d6774c565f6422da3e79f9952ba58d93e95e2c782f99b2fcc9363e34ce547cde66e022dac9c05afe8036b35f6d4b35e5be0ec281f8b001c5d1e79b1945f84fc419bfa05aff20e392cc174de093f11cd70733f9854ef5d79995fb21eb2f10ca90ec21e243ebe72680bcc98acf7935778c433b0cb86e5af0d5cb3663f72dcec873f1f39e5f3d4c8311f459bb839c8edf7d620fbb66fe1b4b94889e9a0daeae150955314af3dcefdc70ac579eef146009939f2b6b3b9b1ce539ff67a6f6b2f4b701be1cfb74736c3c399c117c3634632415c4ef07fd22662025da2fd3ed23d4fefb6592f5c7b07074e3f6fbd8ff49a3cbfc3810a516318da9615e1ee698a7755a999bfa7a8a0ebc943f0b14f1f8c21a7413b6a9d9233fd7b2fe955effc3678392d7b879333a2f2c7481595eb6a01f08e9813fd229492422a289783ab9314a9d1c5598f8b89262a6c1fd35d93d1a1ea880cc13935f8400a2e9eff1bd7d01399ce263f027da15970be8c8de8dfa426285445e8e258d87c539203cd8b723932b6b2be032a04ec0a06b13da666dac59ea3d7efdde9780e3a4317a032ee394800d924db69e951ac6897ea0ed3496847397d57cad8ff9f15f20ac7c332b5414fda54ecd737b71fa945b58e85b4c1c005e255fa6c4d6deef576304c119e9bb91548cfe68cc3b62977ddf77f642b527ac2f824dc1e5a325c16b08788bdd3ce23955962472242fb434f202415b4b2f9c413a828b7771da8b445e147b262cbbd8bb760c38d0891fdfd0c83a5f44fce0f9cd04aa8f1d02fe60dbfee4a4c949a359575901444881678c81102d46e76f560fde80004ae3bc96bef148bc1ed502a42b80e15f9db3a2b61c420d967940a6b59b33603861d31a89c25dea03d419c0ac94abeaad34205418b39f9c24ed7bebe7f2e621d102ec3e8fb417a709b48d0f59937b64b657efaee4b8107c37325ad9e7f0eb98d8c2518a746fbd20299260de971bda6e5dc37363541fd901ab0f9154c3bcffe5fec1f579c9c18824064e8133600e595501c293281d689d848ee11c6c1e035b3dcbc330ab10ac666695023ab74a26c651d33931e79afe98853a32a24b6c72ea496887f70884d146657ac4af01b1eb8cf88300224062b8f6dbe486162e8b6cab3a4455a455fa264cca9aad8b24f4562ee80fe16f5ddaffb0a60b7ca9e702934b10ac9395aca3af36536e48af477299c4d04f1e940981d648736783c2479fe85047401cc0003f53a60e4e1161acbc7d5c6008fe6052c3a95f1e8360277754a1adcf0114427f3f56cf11ec0e6c1e6d075320074a8d628e494680930490e9ddd23cb072d5c7105d74d5607775107e8138bf06473984f53b91d2dbf40d4e8967435bab73d662f1819a179d8c325faf8d679e69469381ca00dc0345a9b75bbccff43dc4e6974732284910325e816641a5ea5bf0d6e28fbadbcf39b706348818338329e9f53694dfcd6c597fe10cc90dddd7a76a4750e597fb1fd7fa303b5b9d19a7e7f09e1670675ac30c921dfe87a70877cd3ebcf65e4602f375356dabbd740e493e4634c44555e8e78060317b8165fd30c178cc8192591b0a58e013e3dcdc63e86f90b5ad9594334045863e2cfa7f10647c66590296ae00959eafb6f2cad9390cd0e80dd82100783cce63b3c103875a1525273003736e69b14ddd4c5011532423aa3402d679e6e336f254bd0752106f728accae41066c3f6de5bd07a2e90b18dab1849a7ff458e8eb1c6844e10f6c91cd7fdf6b4956f9074a42c2a4178b94030365ea3c53bc30f026cd064e7ccc33090381b9919a767a74d82a66353146693e0209b164f1d3bbaa52f827b3890ea30808524751364db968e013c499696567d65f388650a2dcf02448b065a3bd977c9160fda154a44ea8e52cb59e714c35c9e381f49114e8250c311acd5b658e6efd3b2a81348b027608efe576c286c35394d9034a9ee0eb99817309138ae15000225db3b0290a12880a9e5a9348162990c4ec15b8874928b025c0a62db8a656f682589d0dedcc94adb8905c98162bb4db9f406de4049a6ad61bd8476583de5606d5169e458b7c9801d0135bb27c3cdf3e4ef41769621415867433a9de3800598777db3cfc586c7df138b379f5d595e0458608f7608ae7c9a2d89bb007c6803353fe09160cc7a1b1653feffbffef275ffd89cf55a0d4e2b2e836ef92039934e82f6bd535b26a26f6e50a5632d0d7efff19448093f5ffbf025a324863ca0684e32081a12b256ae27ae3ff0f80c2782da36512c66ac828555ad6a0255dfb29fea3c015e87f0dbd27bc0e12bd60702335994a2d909d9bac5eb366860651be245294462173710cc4dc710d71689666d4c132b1c03ff8e8df1987b80325551ae8db5a625a726ab3a79c721e198d04225c86bc199c263c58111a01e17127ec18bac4234720e28d05ebd5c19c8188e67981ed2682074076b52ff2e32e7d872099e421422e0c135c000eac84ecf2335fd680b724d50f01640d9090a6e58249d9d77ae662f9b9fc24d39dad5756a3a2cbf9d42a8d5a4efcd27060d85262e1238922ff75a07028dabf989b9dfb1bb3f4a55bbb46e8574520225dae8945525900b0af400da527c44ecf5440c1820432d850037db99ebacc460e0c89f43e75fdcb6b699e2e25026a78a4d7b2bed789054a5bce4b3068ba580e2a9ccddc71b1b250991721508aedb97a3afa20e45c68df790a725d0f361206120cc8532e15975a664249ff33dfe11b75ca859514176aff4520da811203924cf54a0c714d21aba6cd24dfc987809fb7fdf9feb39bc9f02a078e9dd1a06ed5b4b1dcdcf3b9ef4259791d566160c122302afa8861ba192e0a71a63d9f596b1af9658b5946123515be776db06e77217f11bcb45ea3c0932acb0c9317440e1a11be8fc6f51083d01dda708875a8044acc074b1b70dab4bd8223104de42d8f018bc36ec4ca9da8891ced3d746b61672915787fe63258648f5b721c5fe71c5d4123ea87e03d922833570f97615210e05f0ce3a6b0e17a35ad52df3ac67b4b58ae50bda7432bb3a226f3b83da51a84c60b0e41f0dcabfc6712f4f749823fed7b40141ee2564f689382decbbad00ab06d73d9f39e6ccfc586c98b2ef4daafdc895abc552d594bc47ef7dbc8a93f0f4e31d61501ecca648eb2d60fe224f080c6ea422ce320ba12de1a35418bf872912dc05247813d44b89b74fc8991040c20b6a3302006acd3b906fcea4c01a775f7be2b83d73a844c29fa27163161f03aaa57e5bc27aa2ad8c7c5c577d193fde250a6b2f5f974342acf2881e33208047068dc697720cb747fdaf6722e1583860ec18d5d2c469d24082efb7957b16915ad280693b6df493db802101a05a672e3c3eb97a8920f0f05c8df9286a26c3b56130ab4b6f80f745b4093d00613c8247966862566ac6fe57bd73d5783dc4fc48d3baa2b5e46671e7b97f06b808a8bd4dee40f02787b4d36674112cd9dd5dbc370e6b21c5d5e6e50d9f03fa8c7d62ddf2e0943c42bfcb95d196f4930d0d7d2af74f4fe6156acd9a607e119d9da5f88e76a6324b3342981b5684366d93e5fe295d693c264aca8d5028118811cba13e2e071b24b067ce497e81954cac15f8388a5c94b51ba828137090f5c69e80e7b8683694bc1b54c0590466b4319c62a85949868a30a3e474fbac3372311eb4f2e14d0c8f2e961d90067a74431bd644603a0591fff235a9b4c0c7e40033d6952585e3e91316b8c9112d2af6754a911af17b09d3da18f0e466c831d75a45acd1d134d4688e6e9e683ec79f2597e9c26d0704038cc8d6eae9bcad8345e61754155626abbbd7df9f50219331d58a6a8a880a74aedba52aee48e3ab85979dead87739f1bb126e2bda279d5ffd425ab1525300f8be525737bb093858b225ad429514418133822e3cdd0e83e49c12aa8be30b6ffbfac7ac80e11a470d37784f08a9883e0f2d5fcf918bb2882c2404692ddba3724265e0a4a4a25c31aa305590309cec6f572ca78ca145c5f91e30ccf72658ed71d8da9dd1a558772e7bca95031280e93fbced321c24209a83535ca3c45522e74f6bf0f292f83b221768704d82b509457b01f4ed77216021a148caf5b54fe4832c6505d7125ff48ee2e234173ef636c58a08624318a1f8a8cd31b6a4501f632ce2437e14d43ece2791b6424100997003aae1ab1dda01ded735bc19fb80a4365aace61bdacf4c0b7b86da787591472c5bd2431f22e8362069df8cbc52a12d2db601471aa305b46b0c064c03b2ac665bd9d513504d56052660e9060ea5cb346d2c4f3a71ec4bc75a4cb82c04efeec11618ef8f6be6a200261f83a54434a769811ba1fb91507c828f1d9eb1d2b097d3dd2536448d8168f43c3d0db99bba9af770d098b4a12e0a7a128f1c2c61327d4ca9607c579a28c288988895063f676d273d9d85712a8371aff41b27aae699f935a3d14cedf295ce7423a828e62d67216e0b0c82c6d82e9d1f20fe8340350cc03b948f0cbf9ee9f91cf44e21e6684245008d20251ca7a17dcdb31ef74543929221f2cec1d70ea0e25dd7c7c541829fed549a30dd8e0a33d3671a7d6e8feee6ef0bcb22deb92a42cdfa10e6c8d3aa14c32a3e4d5712c5d7c0fef34d720bcb7d520547bcc93de869a29082e37d65a4b810ca6c35005ff8121078b8fe92255e68d6c81aad9bff745072f777296683ca20b37b1cbcfeee0de51ababa53d9769fadfee66f7e567be92c3c53ea0a922d24aa03e313284436fd3457c2c0c95ee0dcae4d216940f97ff318bc21ddbc1c876d2cf5f03fe9c4c5218390f6d7086797d1b27734e3841d53368e24cf0317f061ad168f1fb4377d8979cc33a47e441a96a38c919ef7477f80dae6ebb22f27b97839c4fc3d0fd420668770e62d78f02b826f2f35ed7bffc10996cb72c8e14bae5b606fce31b1a369b2fd34adff566a439394d9a586b8a12e6371bebfcf4a71e67a2084a4c13fc6a8114bd731edb279508441e98c81e74216ce8b1e293df153a705abb6fe13616c8120b93e0bc8445ab2568f6fae49cb65b9240220ce78c608c3f025ef75bea83202060872e0d635bd66f28735243f7765cc530647af3314b749e5c62a6d11fb6c7806d1b845457ffe9592320543d8a5a77382426598c67868494d70f31a18932c1275dc8d8b600e11cbeb66213aba3262c7af785332634544fb907394b7755314e1cd9037dd5ec0e43df0a60b7f4ba5cb3b5c56f1096d37b7a0f03bfee412cee7f3c0789031bd01f29e13d8d9b0d1a24a0411163b90e40ae6cfd4d3cc4c7087ca1b38c427f41d3047d207c281beed1e5fb0f68904d97990ad1c42e0d923f25f458c5db2c1c6688eebf133bfbe1d72129612afb1e620c178b74ed4eddefa5f13ae31415c1032e2d25456ca9725a969284a0fd281d0c48ab51410acdfecb17c6ec747805079eeaf90300acd37d634a2b3ec9e66c18018162ac6b64e6b38780085200f7806fc077f7bd5f58b35cb7176614b7c20826967f77b2bc80ca21efdad92ef9a4c64c7af99a1e99cead28d1ed4b077c9d8fcdaa348def82a2c3c6bdbedcc79f22e0a2f465c25c183fc7967d547af45c7019ed55681e821452a6ffc92f4ffb713c59c8b7694cd5c6295e70ceaa6376565fee5bae759a7cf6e225c2173e8319abf81fa6d3c8c77fec3edcbe4a80e39ca00fa117b0fdf00bfff58f45db7d803e01930335832b01b5f13beac46df39befb1e855d6a01b8730ff901297c7d2de9506db86ea35401797cd9a0f06008bba85f361e37397955a70712a82647f923f55131b06ef1def3fa5e36e0b82a6f04ee46312cf582cb624d0038cda0b8b2b5350c9325a25e0e1c2ddf729d7413a8534cae57c4d7e2d40dd3742ab3eecf850a3e03e9fb2a557c020901aefacd9c07637eb5d086084ed5711fc81654c6783af307b369b0def70dfa5d98bee71c5c385461920c77190cdc8a25499fffc8d3e09107cb6108931910a851878d5bc9cca32238657e965c05a86f5cb7dbb69706e0435d2cd4addaf66b88cd3ab32da1407e9f7c6b5afc8059b8a9d9f09b14edb5c1d18dfe6032cfd8e16261cfcb22b540912cf98b20288c7e0cf7a348a5cc88411c22ca2f2b386b14e7857d06fbcdcb17e03542201c555147bb1331e08197fc89db83abd788d81d2f7822faa9a217461f9d81967b89e797b2b2a070dc9a9474512656879a0ed19a919e988005757be67490d548103840696874ae422aa0087570321891659bdb75b945375ccd09246f496e660d088e36d71833604331e79c9b0a47e21c066573923130370d00212826be9df7445fe8516e8a6fe7c07e205c3a97e9addc15393fc9002419aa7c7e245bd0524ca08044d90853ed79ea4011601ef6b638468b31c22e328ad7611cd31709bc0bb977f5b33baacec8194894e7ca723c1072ff223f6d3a8033a12f37ed42b634d3dd554233c2b82164298a08502b92324b08285cf3e10701d1ebd845ed3b7266ef1f868e291e1e1a7abebf3031386616d2a468dc7e73a9907152e2c91067fb4a9a3c01a31d51e8450129649a11b0b2fc8ce283a073d006538f122b1601a50f403090e40fd837cd94010aa68d0a68f162f637daff2321b00a0fdfe593f33d905900c0ab29a42745f6833febda1f50b6088b378b18a28a1a844de47df3dcb29b4cdceffc3cc632b2de1a01a62c33d06da3115da24ab1097fba9dc0699242a8c929e36e8563041f2848a5587f87994f283b1a0a374585003d461c73ba81bdc1d5443bfe29dc30255e5c4ca9b89f43a026075f2bb6dc4991032967c6c455497557ea177e363bfd80f6b32f1e30eec4d44731d8d66ac0d58b69a859da94389b109e011e7fa99a9fa9e0f8b40bbdd3f212c20d8d9a2b610161daa3d8586b1be6af70182b7ee4afc60718f7971cc078b16118fe7ae8803d159b76708ae59b37c3c68c59dcfe7b479709174a8078b76cacc494fe16429801690602744fc53d2c16237302106862a6a1cc9415e0fe8aafa6da6dff0515acda9e06ce8b486c68cfc6c1c18244d7090a0a7d32b7a15fbc07d088f3c9a987fbef05379aead437680711e81537899fe7d8ea628e22e6b4254d1b98d1993fffc00e99161a529f05d6ddd2d5b29c14156dd2593ed5cf8877ad41980d23552ed813b4191251b6b93a506a171bdcd244ba1d02dfe8dd2e6e398ba42e20396f59010163fec7e659bffd70b572cd6a6f8a00b0b6fe11ebe3e0ca315cc072906f226826c362cb54f77277545b70da6a94ec5108dad7eb9fd6f1cb771401f09606729c53ead97a848e1d37beb9d12e58cb46fe2b2aed56104203efeb4cf281f865bdc261efdedc6229d25b77c51e02ec73a7f8e680804fa57ff438d17b40d059dcc6296f7c0e0269a628c30254971ceadbbe414b6637816e15a4320ad3b43a4c88431b5fd4f48d4161d41d439469687a04e18e1af702a9419238461570d3edcbf9c5bd420a6dd029981100031f4c3f6c1dbe183be90d05e6933d4aecbff6c6742f611586feca6db6c2c20592d19f47429eb4f208eafdde9bdd61163c8810d14cc17e34d53b8290ae3f7f0b7b57aad1621a20ecb680e41f9713adc0f9676f6236eff071980a85c045c91e456a407b4d666929feb1df0c1969a85427e7970494f1fad3951329c7814480b4150c68f61466de64e833cbdcd9d59cae911ddb42089df60adb9f34f332ac0a7ccab33119c44a396687a695554bc99084b2af33049f33b6ed4663d2b9a81af027f19221a7fad2d641149107c8c0f87d18a05e963a788cd08ab8f0a022518e896da925f895792d76e9909a08d67260d3c669b9357b1d97b8665527672adc627f88d5561b5bca380b4d0babb41f3e1a85a71c36917ae4926f845bf2ad29194485a31468d32f2e9a2d80a281879bba097f5d3de92fff2da56e68b2f10052c3eb05d88588a10163d440d873442c4bec72513ef1a0c21cb99092823ee49229e07fe4a62c167613c35455070560dfbfde059f1489afe518eb966aa282003f5ed5b429ed0091461cdbddb08791838c2eb84adadd4c256590cc04104f40915884cb1d5a8df329603c95000d818dec743f44ddd1d17b94a09f1e6aa5fe97d7e3fbd41b6b91419ee4a67160fcdc62334c8e6e5c164f00bd19860a8e26e8df61f3d06078307a09230187d426f3c297b3a2459695626d70568e1e7a110605dcc698ef5da0d20c7c4be7e96b343cf2445122276172fd156c460064d41ee89f28ba70ef15fc3b1aa7225358af525d64445ca04f60808c440bef37339a11465e6264950c1cecc30cc2833f58c7e667a692eef302b99eaa51567946b8a67652f8f1edd7cdd4efb5c1f89afa0e2b8721c86436c7aedd9602100e0ba65c347c87833cde4ba494bc8ab387f33606d02a31f88d4c5f143e531dccb42d89fbd19c9c28b67a1aee2cd4a3621aa222915c21f813e88ffe9711825c5434a058f36bf1962c3636b75ec5a170fe28d6f4a05a1d398aef2394d7a08287b4170c354deab6c39e6395244466a64b620d5c7cf119e0c981f60a57d1494cb4d8b2a5122f186e04fb548fa2038758a654578c9a92f058585b36f39d8330b02663e9ba5db065959332f9333b18f7c3e2a99fdb552cc54b33c01e6785cc2cab633edf83cade4743499c19f4803a93ddfc6a272b17365310675fa048ffddbf4cb6102982834551c825f26649f028398618a706251ad041a6ff345dbe161185f54b589ecce8f0e9471bf5e371e34948e4c2b0d9b033d0a713779e1d7a40382e9a8d610cf5e79561a53b8a5c15a68ace616aacf46ea1ce7cd0ea0963ef9e8485e11b751f4127795df4337e32ab6ad1a06d2d890831e71770f506e8b56d8e3885fd7e8147948215c3d159bafa24fd9e7601d4728a923ce1375eb0412c411d043d8302e8caa580258481838c6e2209e8b99cbcd09241221ed085da39bf7075dad306e9699e44fa52711738824ab677ce54d3af6cdbc79afe1bec4b53de2e64fcfe38e65ddaa9a0e73e2ab868d1993f59773f33a0d5446b24b94dfd577042c6f558bc88454f1c29472a1357ad3ada8d46059bb85316c62f024c9f479d21c860661bbe419ca7b1c0abf80b6e0ecc187ab9a36a64d6455050bd5ca42b3424c80139b6d42c424b3427226c056a1d804db3af6a3d1e11b92140b530a07e98ed0fcc477cc06e578c23a609d484f6996ccf6608cac8390f18f84ecd112e4c350522c6a40ef5189045aa89efe3e6e6728fc4ec15d7dafaaf60f945639f02233db4ef68a208868d0d168cddb3b30a16ef337a5887af5fb238fcf38feecc8a5865bbbd10173461a1a344157a9f99425930353773a7382e2ad28d60316b3d89abc9d049765d3a2d4e1e4b66ca2b1045944e43a516be0b8db617397f7034f03d937f3866aaea55ed018c1e8b469a50fac864d4ffa4afb23526133bb5ae7b04be31b4196b9b06a4812230de3c7377910895d8f880d52a53a0a156127f333039c2666aaaa4797584fa6579aeae5b453d6461178a2df9b9ed96e3bcb104721021a060cc1a54105b92cbafb0eeacf56f8a045d5e1c26d7c77daa3a918cdd6f46de09e2a5cd984f27fa52257a0a4099dfc07f823595a2cff9525a99e09e638396e9fced73ac7f98f71bb940927c566e3186cf5cd8d518c261690c9f0bb9716177669bd84eecdc0fbee049e9c2865c55539488cb04429b6b87dcd2b26a38978de0611864b4c809acc8140c7dc8323f5560760e25fa0a57eaa7b0d2bc6c1965a51716dedf0b40d2084fd617a95cf515a83fa1fa750bc487b484f4025a56911b252dd545209dd87e899fcfae2d80ea24b58e116a3b077a2a3fb2907a0d301a8322338ecf91c01a877a9ce347b5d2042dbcfb004d4ac23df4c787548c88de560d1fcdd9d3e573e75f18205730140eb508bf6ed22a0a712aa1278d93aeb2f40d5a1afec8afc1f2bc560e0e9cc85d38adb43228ce130adee468512235507e397c4bc291195f69d6fbe9f50b71d68f839a2d2b3ccd70dd82c035950c9374bc611315c799c3669ceb2a063a648a6adcc2afa252efb6a99f21f0137acde221a2016670cb5da984df2d6ca5cdb3c0666642b58180e60fa0bccc9680154c8fd888b4287c8bf53b8b54860fdc9fe4ef68349a14ac1cde523440512d49745ef8da27c4687f2a135292151087ae408c2dbe3354fab12ac030049f6d6c90d6215b780d60aaaaffda60aa0c119fe4ff8ee6e37f65b62680bb46231792d310fc2a7350b0d211ec0360ff620e9a69fc0e3f3d9bd74c50472b68f1ae2e0df87321c9ef6f8f1feaad5f5d44180e94aacabc107c8e6d8f4123000400b8fb3ed0bde359ece208b4e1c5d0633ec124aedaee7c3e67aba8f76af1bae212416bcf8dc34acfc33810aa95a2002aa18b8a1601d97c23ac948db3f6866b776d418ec73c3f11d2ce6d21ba6ee71811ad7c5bef585bb0985e347c9c7cd191a593ee437b7f84342ece2ea95ec19966dc4e6e083fa74769869cb95c1449716b19f62053b8085c2ff36b3866390b318dc73b1553b6a1809fd06f8183f341eb49d7f236d56609f3c472f2e685d9a34d5076eaba73d4ca8ec40a2eee482875e9cbddf75c94483df23824e9efeefe406e6c9db2531d3b9172447e0153d4d7331a95f41664638ae47728151e3dc9642ced9e4465bf25704f892ac3084a76af86d05694932364a1d19a11d9fcb1c259bc78ad3afe7fb6ebc82ed2ba503740726538178ea842b954b9887547905dd7c706f48742732c84948c967f86928e5ba48b604df9ea95405b70a6835784d992e20e466cd922310e67f32a00f9e9793c35b240edcf7259780e1584dbe7f72df13cf1acde9b55c09646eb44eab16fec8ba00d4d0d10993b9d1d5370b0a96ad2fc76e74d1e37c5ef797127b8e17912b798a8f24ef0dfb858800b9205b777ca95bc35308063480c9a8ce14e4364cc92994837ff345f68004484f24f3d0b4a080b063eca6ad36698b6e84d254e849f30d5c1989122d27dbe6463e569a1b1fb920042482a1e8e99f44eb555063c78cc9013f61add74d7a650e828f59aea3a8af77065c29d984a6a3b516b9dd7175e3e3f1945d3aa6fbd81959b050cf2c1889da8c8d02114d8ce13f5268a3c71adfb43a58a7e510fb6f177fac2470f335f19336c9d88088062d449ee3802041b6e9c072651dd07bad918b4bb45e0c39d60c3a324863032543a3811e1034eccf12ba2c0e524e1fce960d1818d87eb2d2bb28412f0eafda7e1a5d9c70859a0b6617a04f4bd79ab1bcd6820dede41735ab2e3e5341fb3b7b5a7bf5be8cf1707524fff4749907cc653eff17157a4f7c21d5ee71e7c41deeb490624d6c9e973ec34f62edd67924e3d72b9248b75b607ea0ed7a10e86fdcdbe35280bdc74141c36674cd45dbaa2c7795fdcf54dc91c104a5e8065ffb0111fb57342689403527bfd16ec4f3f1175d7f945da2621b37c1dca4458f78b13342096481ccc3b82134674b7b149ee45ec2637cc48398a8e7708c40fd9716a921f98936aa91f19c211b0b0b564af1b6080673a0228067a86af9319dedf5118cc9d4a48454e8d525995766e05defd6e116f7e84f0c43e290f3701d0e7ba34e25ffda7a5beaba801674b92d2891bcadbcca4c9e6d83d145bce8665b2d450280d4f61ef4d89f0aa633ea32195622a001165273504cfaafe94b5832a5c2b0af35a962b6fb34898811ce87585134f81dd824a2ef2494cd58451087018e608e6d1d46cec03447b79b53742dd21377eb1793862568c97421c3005a9936a9525c33e5d535b8508a5e34a97736749e9603319829d011ea49fb88096b79a84d49dbbffaea718112d7c5ed7ff380c1f66566070416f4f7c736b0800d422063a40dd424246e15dfb62ccf2313a22d48ad4679134d7fbf5283467ef915379a02f37e39043e63cc887bbab3aae8d6d7e3a7ef01cf4f2ddd7da2769d82e703e6e17c1c9f4156831285b536746b8bc7d15252d89e5645b42f11c27208574d6613aca0ce7c29efd83bf1c823e66627de2d4a4baadfb24a69b6132518e384fe11458ef1f51a8b05570ad1cb95982736ee8d9c41c801a07bae8de2bbb8ed3a52af8f811446550ce32e34d492a36e6c6857edf4c2ed15e57fc31bd928fd28b669853e4d691a7dc0540ac12e03b7467dea5b278bc00608f1063250eb05958f710f334df5f5202d9b9df9dcdcbc5df4559b8affe06dbbae3756a5110dc9fb3a515cd16a7235cae45ff20d0a6d94b55dc3cd38ec621a7f0c3f88d16311b1c7f3e994c798d145482bc4da99aac00cd09ea4005dee29dfbaadf1fe6938eb01ee467ff87a038bb3d022912c770cad338941cd5b724d43c5505a562ae20457e76fddf50c99635959438ba21690d9f63b6aeac7b694e5a5be150d432b86e018a4dc2105989bef6c8d6e98e39229a9b162ade98a0f0df2683228d80c6273e4ffd9107a424fc2b07add8f808193a7b4f635fbc987f4214fdba9fef9715e795ba80d1b9b6b9f9566ef970c825bcc2c67337158b269371fbf83a8e7b9c2a7137ca0020f12e459abee2062caf6f26cbab4b5945f4fc7435d7e463c3d7cecc6092052ccb59850a86ceef9495205af78bd4406748545854b4c62ff0eea5f04981c201805456f6dc457c18560276616888dd38f0b7be50916c4fd88fda919c77c18deb1bd73b020bb239572e0490ac309a2344342bed2937aa65c6f5c5008d22000fbda57a2e09bd9040bbf9c0ecd0f24f52d26f9c72a030a9af4c822d341993f8193d142125b1ca76fe61160cb47c234ec18809b2bf975a478e518803aeb040288d291a4ee5a8e200c22957c7877a4bd71339757cade53df3c4cbee9459704a424c54f7ced8a9799caa4d9613804eaad5c9928c23140e2d73ee94c37e97599bdb3f10e51098d80f24803ff5c6961fc57001f9b6088bd48522686cd4683c1cbcbc7012f92e8df2d494952985f330c553a96262c9d442d03c649b3e0d056e4149b586ab04b7cb7581d8cff0134452a6c874ab2efd0b1a679c28c52741504e71c51d57b90a2463aea56ddc8415a097eba009d188760b01755f113ccef582a0ae32e3b9f0013341bd69f29f9a7ce392a3d03ff028958854ed9ce58b41108912656a4e6ce392164ac48679987a58011971ddda97d08249396e4ac0884cc30425086d44674e1ce826a722c424db3e369f9ca7dd4c4d48f7eea36a2f71fa88dbb3b439a68cf764fc0d6d0f5094e2ce44ca82626b7cfb00206bf4d4598ab2af7cc15fe2d8c333cf59b0abdf9feb5a43fe4b0de047728812a97c81e274be792fae869d87692a0924bc09a0e6799c19d3590fc79e2f8c2080a2f8545231bb082c32f2e32325d456e79d945d23ee8127dc241ec6869af09c503cd1a6f865ae0b40a97165a681864d2cb6cac181ee26e3b6c0e0d448d1730c5c9124be2cbbb5cb207cdc4132ca63524f778fdac9c0c96b8ba089a7bc3f492fd93bc37028ae0ad4c8c5908b9bed4d3013224c7205c84b55cc6251d7f97b7ed912a3ba8a85c4d4ec8eedee3369a5a4f4cb8c48493a4ec41dda57bbe3192ee2e329aee6fb8c1dd866f4afc84b828f0cb223fbcf75986207c4d9806361372192c52217c88a4307287e71fb8810dbf1471fc87de0c3dab1a41b550c4796b986ecb8bea58232c1b1481307725dc09b4603b0de6060f9797136a6e4cad452fefdf11ba0729fe1e27621ce8ab8d00adf5a329013a2b1610be5d9ebd3819c2464f1021146597f2a11040842e499b624799c3c8dbae735124001e5a1eb2066ea92c438e1e9081bc6efeb9d21f74d7642998ce2d90b34f4ea302399f05499d7f0b901e0c7a53a58d164ea783d70278baacfe481630dc5fba91a460749a4b2a3add27c3824352de2cb2923d72f0f3c43840a1e4c14931e88207046211c718f7e29e2ecee173076172f59e57385322096927921aa081af7b052b376b64098a7602201d24f22e243560e739e51d4ededb6173b56d6a8e435e5b6bcb47289d892bcf3c41c994ddab8ecb502874ac1b6d2b96ad204ce91491fdcc10c815a24efe9cb9295a1937bcf960e15c7e212f53f84525bc0f27880a8e8c2fe0b4ce769d39cf0c4c53a9f96802c090a9211aa072d58d9a9e12837d75bf5fcf8ba488abcfbea6342674262926ce9ad5466470c26fc9d8ae9818f92ac051dd593928d24bac81f599b03f70f875d48456bd0209ee7d18fa7122382c16122aa1218d29415066f660a15803bbabbd0905512da140d04828a47884621a079640c8c857cc696aca5f1cc48ac0c3493d8bc6e4bb1002ec09d27c3ff4d9956c36228a1470c3ca2f8c910d844d4aa5f0f02ea1c25ebc961bcf032c18f11d6ac9816e205439698439dec5c230626671ce882540c4629dca05716df1bf6fb43e891c8d8fb6c151e7578b846b9ac07e2b9374f4ad6f48cefe1b18e64a206b2870097e7fab8a0bc6f71f7114168cc50ef6946178dda799b0682efefe2aadfa5af0371dd8af4fcf71d390cd8a1b5f814f8bbb8409c53ac338e2c30eef4ed9ea62817763b13f54269a48221e496d6f01a177e153b5840a747acff194d65c6a69d613e969d63be7568200df7e570278c134ee7f78f94f04b97e6ea4a68754b4a326fe6bb76d5ba1d1dc25a4fca2094bec8525a1c2cbd57ecb65ef5ed6381f9f271767452d3a4c7db3e409166a71b3e741114c499d023a0cb8b13b00ea8a462852d91a9a15f29e3aa7e531ed6139a5b903dd78357e328754f2f67330fd1fdea10a4a55a31e260b90e2e8a34fe3c2c812643a868c09aded96eebd224ff67cb395e28b2b198430904ed7144d0305e389533277fa1a98bd5bc11bdb928d3f4450f338f0318188c5c0c7f55ab2269bc0204c9f2dc9d89ad348d23e89ea39c6ce8182535ea3e8aba6c389d920bc23ab7225b4769fe1804e9ed16f13b140d98d6587e77f1c142ab04b22777422bd4f7fe4f99247b5300d41aeeff11088722e9103094a8d8f556c1dcd32646212019b45986c4bae18d444814b9c94046aa963b255209cdd241d4d5861c6934a2630e3492553707ce388cba4da16271ad1f490cbe031f0f17501f283905101d0948055c1200c6525447066ef442ddfd59c6b18c5e0177b810c37d468adbf6da4354208217befbda5dc3b050b0c0b2e0b5505ab635649bfba042eabd2675425513b847649de9da46459ddc9c1b7e3d25c54b179951eae4ad32da3f936aa61374ac36e194d77cf099834cf1d60b9303aae89335609d0292f3c921fc184c7891479eb3927ead589bcaa48a757425992bccb395159abaa9d56245dca1c76649e9ec83c9d9614ef4ef34af847c02b017f041e49b31c41165f68529c840a246c7a23e0d1e17156889085293a8f142922f4e6b442842d16e83c049fb4191a9d7e9bcf589b968ab28c4b0ec7a3ac317cac1f26e20b495214b16987b5dca0c2f442d0f32a9870f9ca382b554c71794a245cd32f0a29a5b41c8d685d26a5b450aaab4d48b8c4678a645efe3d135d677a69a9cd2e1a23cbb8f4aefb2615348d071e78d8b24d741d0f1f71cde3b98e0753d4d1d1d18972729f618d879f8733b453e38107eb32ca39f6c92f588e261b89a8b583359ecc9444e9646666666666a6f3319f19beffde7b46b0c65835824bcf1ec13523d0df65c2feec96245ab31e01259b4190b0c6ef9ffa033dd3ff40fd9d1f44f5aa72e052555ed5190397aad6b5aabb58edc67a493fc79fe770fcc0f7f11fe61c8ef71fec0fac51361e891147cc6993c4fb2edf7bfcb319883788683777c50faca34d3f062d0d2ca6577c22c4aa94135eca0a236b4f6e0fc278c55a3d5679fa393c7526ec907e300aa775c85ab366a975f1549dafa8c70a84acaa3c04227e7ed6cd8851acd4c8dd9a385401d4e24c8b4312127f67b4dabb41d617b5892421f172c835e3be1ba5dd442ea35480e81dcde6b0d45fd7a66b1edeaaeee4dae4a8758a4312429d9efa6b6ed1baa36a4f34d67654b76953f6f70772ff7c9e5925d63fd6a6ba965549b492a82539c0dd3a91cf41a7d41271b72ccbea581a766749f4a38f25519b0411f74ff6b14aa81b51eb1f676d34cb4aa1bf8e7db3a1d426e0ba55b120a2c8e4e71528d6a968543b3ad173d6fa3437862480996377777777773747f8030c6e7e34841066df8e51da6fe8d8713d74771b507da750cd28a7cd3f9b0b6077c6aab29b06e6b5d981f996eeb4c306ca750b5e2f2b02035284b5b6a94570a91f8f9c4268e9ad588f1431832c7e73598ab81d10095561a604ada8db700d6537253bec0ed6accd7c91228e708cd688911036a870032a5c4821fcb497adc0e84a6bd33b6e7fa358ed232e7cc31d3436d7fbca9e653d1453536cc084fbbc354f9d693e768c6d02d7d13aeb056b8c1b8acf98c7d577b3995d1787946ea8394acf85a79f4358831489a2e48bc01fe11aae7177c741e8c58594fcc1359bc3e20718dcc01fcccc9890d6a20c4d96b86d9dd326943747d65d28ad289332c8fa578f1329a5b4be65d4cc43b2c6c4b0ea857f9810d1dd706edc2c90391c30cb28e572e5be8c86aba271e9340e4117ee703f17ea702176e18c0be1cc85d685a40bab0b655c485d18e34208e34279a1cc85f1c2982b0f4517f68530179e5d8ff9970bff5c0f7a18ba103e733d621c6adf680fdfb25be3acf550c36ea34783060d0fb67e071d66cc9064c418c1908989320611cc0b7c083e037de031f80bdea2e8ac0c1f61a605ea98a0c97b12ea74db0c74847571d338bfc54b082d84acbd17213f298f0cc972bbf4e6a5138783e7a933d14f4b23888a30d25c9a8b8492dbe4e21a9a7be3e8aee665cc2c82fb5210050d0d4d0de4288e00231cb20dc637641bbc7cd564ac896e842e09bcd0c2c3247dbb0fed9604de9c9be302779d73b792f4bd5e1561adfa658b7839aaca5ebb3c322939c2899f8cbc0154e75f97dd94dceb55b57db15b57dde82f9073af5b95919bbe90e81b1b93875cc521dbac2b1359968c7fff9c01ef9fe7dcab6ef45e1f8b2fabbaea34f272ccdf34adf0b3b6bb38f258fcdf995b45ac7de1b625c95ceb659c5d2ac846d18bccfd0141d334137d03d4e9c25affda8e9b0434957b1b7785cbc258ba8aa642c1ebfa3b77fbed294a94ba540357becf3c6c628ed283c5c988c914c753faafffa47bb0055057d2bf277da36c4da5a9c420dbde93db7dc6d25b4e15177e34ca32c6723bbe28455c4823ffa21c99d2a3519635fc138ae20b75a8136cd1b265cb96306ca1250c5bde7b6ec836edc225aeeb1161e0c57548b8ce0a1830e17ac8e42dfab2c48d4b40aea1504b2675b88b4ceef020dba40e454d6f4a4f950b1f7790519d363d1dcae44d691ed61ee5b969cad333e503999ce242d9e4c2d326d4c908b2f82446611ef05bece161c2520a49c585679d1564f1440f1fe3d4316102a9bc1d29eff105d90699c854ea8479c0472732ea846b78da247308b134c59265716fca96aee2c2c334647ca59fc00921841de5c29ee24204f43ce14aae9bb0c99d9a6491c295dced79f2b65c78da5a8a0b61cf162d59a6b82b3cbdc5319636b9d368b4856e590679cb85b0af74093ec69e6ca33cd759d1f3c47577eb2dee9ea81321a55be5421ed620dc74dc784bc2206b92250b2c2e9c57762e8c2fc8660e8c7441b6d12b3d1a65d9950b2fa5c882b8bbc51e4a0b2d90b241dc8d5c70e9c235d236155df494db5438f6c4295c136d10774387d9932853500141878f58b0c99da0abd9e2950b1fafb03e35137d2c9c9fc72748c8fef9167be63f0f0322f6bceb2552548cf352716e7c2f6a468a7a893df109d7c01c3e46a197874bf0307f52ce694942c03b0fefb4a4f99c2bfac0cb43856c9ef25c9f355eb36ed49c9379e67ca9ee5e513214b3c6cbca4fbc1cf354b456a57ee583e2e5981334670874d0aca1ae823558afb8f059d814b374f17c78c12628b5c82d174a2e175e526113bde2844db1a7a50ed7bc0b2fe12513964db8c661c172e5ca3605ca9e2c9f2c5816d982ccdd8d5e893dd0b2ae6d96c1b03bd909ba5c697b1e0b3299d36fda942a31ac9491954279da04e330ac927792b124da85e704b7c84e83ecc0064b6491063040e1448e08aaf0c41a6ef0063974c9820e6b30521ed62075c25a13d6e02dbae3422d588359b290cd5c67050ab2dc479d70cdf6a66c31cba34279e06913aee10b5f28cf852d872c17521445f59d168acc6f38d61bacc11e19d8c31abcd4b9103a346cc10a2b9083931a3031e5049d1ba8984283235081811574e02593789239917892b1ae4bf0b1ce0bb9c8dc7d980394e49c2e240377c3c0fd81888c8b8ecebd614d4a1d91dc610d32611ef0700d99dca48e10bf34d0e2542fdcc313731e1162a48822d5c83bc7783e5284182384524268054dd34cf46939010bfa4ed0d3f51d27e8e97d93a90982b590555d28d86365803bed50a77ff5aa3b4ed89cde99d013f668822c9e3f04499baec3226dc20e8fb8aae312646dc8d3e0e1062f6908eaef44a83fd744ae6356c9f52c65ad3aadd6bb15bbaaaa4b4bc43ab54aae5bb7a82b3bf5475929121e9b0366df25f88f0ef54b067957471448bab4e9b810cafb0d5fb5c8115daae0b343ba041f79b2687fb8610dc2c7123c9d48042b3e5612109f3b7238e0e5fd952ba0b03f4fa44f847f7d9e88ebd3fa92f9eb4458a74ed925d45a92ec2e274adf5d4ed492a4250d413f4f04a53ebfa43a3d11f3d8316bdd9d6e38d6863f5541780aef4ea38c357878a8d3cc65e0c96678079bb4a6d8dd69106dc2ac4d97fafd6c34b65aebb8a1d9d8dcd698d0822882846be8df4d00d7b85b5177b7a2dc950970590411bbb0e907e1860cba52bc6e14ddf836e2c2b716e569949c6bfa5c13adc87ad30a0d0d4d0dac128514ae6929a5744dbbc89cc981fe74da9459d7737f4d9e13d7436677bf19d247da24735765d6e62ae092701abc08da70e139270537de6acb52c0e1805b4e0a1c192ebc4c6d404c172ebca80a712578984a007704cd95e04195c67d0c507280104408b7c595d6c6e6c6ad08cd95971609252050f3d09c8b671734aa699a89f25861410fa24cc1ef89db77774f6edb247c27949784ef49d88738fdbeeebedb87b0df8717a70ff9af4516d630ca49a907ed98c8ae0bffb2ec708d166cd2b8044f45da85bf41af4c14478f08ae040f1f122ec4e2428bd60ff48279c0d3ca5d5883dce57217ae91612fa8b9311aa87d5534a18a0bcde07cd0bc1c58da441d3217ae07c74b9db97038e0699e0f3683cb010fd170e1b71a173681dfb487a54bf0910999b49f794b18b58e1c4173b931464ab32cde7d368912034249377fc38fe749c07e8c1fc0bbb64e14a8c8f400ea0cf38891abb4e98c856bb0c773f4e1d1e651003eae3c1ed3795ed337beb164f1049b380b97e294a6d2a69ac7779536f178dcf138c5a89f6433cc59b4e0d14c26ca72ad2b66a94f0a18dfaf75b8144f797a58c7259b4a9aaf39012e804ab2ce234a913513ae81a6c3eb6853cde16ddac4e3f0376dda71f820da6473f8216d12c0e129bcde3b437cb875d56662850c0681bf6c33610d9a38cb2fea3ab1796e84b675588be72c6dea1dbb892eb55b762f2d376efdc48d8f55783c97c88efbb04aa4c0efb8f52e1f7507124478bc875522c53a8f5b76c80e01ac9277aab90f56c93b99ba602d5e56ca573f079f93d7e409166789a4eb39d75561752ac8def3a23c9e4be4c3ad97e5c8c25a7c131faa94ed3abc9ee31b8417cf02aee3683a1e45343134646ac0e861a4c528c9b001da810480991b337064d72100a1c3d0cb0b0f8776d371ea968efa9cc4783d5eeaa8ee461e3665cf49bc7254d6420a597c0070dc00808d92d6430d1a343cd8fa1da0d322051d66cc9064c418c1908911c1bc84b20a82cda475b866876bf8f11d65bb4e4f692aae0a3b897f5a1e1523e562008f7f5c984a9b4c1f3d3e2a6eb8d10b017c639d1be3133ec4b8e31bdb543e59efb2210001ec8e148ada54883dc65f955ea882d6e9f88eeff88eff54ce22de54b9a672942ec5f3a8bca332952ec5011c56e12b914afc002213b219d6e247acc5f8b884ac2f82955601d4ac4b3cc31abc0fec70c06d06088c4dc8aa68e5dce0192ee02269ffbaf2da102255b8244f45bfe256c1825ea2992ba98a34a4baf58b343f7226d05fac349a165bbc2b5893ef0af390af4a14b2ed55913257fe5df1aec857df96c705f3904bc8e4f94ffe4924af8a20dae4de488bcb22a5c488500751b74810c1e6319bd9213b9755f24e96a5ade49ddce80a19ff5d199b90f5dde075938925e22283ddddddddfdd8777dd88f1d87b8e98e7666d4f1085532ebd59f65ab7729ede2bcab22d165d16826ba7ab1c6c31de1cf0a56e422c3918f7252d4371d9bcda5a6dd1e679c3132a0e2c45f1445dbd1f88e1fc2fda6cb903d38020aa3738222b8c00b45b0b8c8705e0efa759ad9cd0337fba6dd4dc76673618688f927f40985422fffdc610cc82acee7a090f552b77729cdb26d746160705efef97597599ccf410f88cf41b73ef5e52564417fd81031bf3e176b31d9f587017979e4220b3d34efe713bfc5fbf934f770fffcb91eef9fb3ebc1ff7c42bf6e85eaf5522143c942415e1c286433102fcef5cfad53aeb95e2c1207c81eb2db6fe8d6a76ebf1fa759df66eee7ae4d32315ccde7f391ebf1f2cfe9ad8701d1a2cbd4ea302af597ca1754fbc25424de17170473cb6930768b01a3d22e852e535d971c3684e831d6752964470e47e87a28abdb75919cf152924822497691785ff491785f7cf8620db266fdaa9435ebb10c19fd06af559db23c007328a648d0ac436311d4df7bf50cd99447c57b16e7c3d67b81d0728d75d6208bf30e879d5be33a2b6fd0e25a79031677e63a2b6f9872b7c700778275f4e8281b4d9c0ac0b959a715e7bdaa9f0fac86ecc05cf4974a9a8f79ce295449d3928608fde544427ff9fc8b5522655a222f8fb14a44d646090c8501f16e124a443a6cac149210f4f3d3e254609e2444fffa6571ee2eb5a7eaa643d6dd0dbd54875762a746618d199b6281e08b5d7f53aee01aa7056f6f8bcb53ae649145cb459fdc8dff9c30a5945241d937c50c19fdf69ea03601ef89cbd32a61ed5928a1f3950849c01e618ddf877425f2a680f8ea82153834e9a2a54b17986c82270a35842eae721d047a11fdb2301b455d543c3c3fc14c280a03425915865d14755dcaea375d6199c5b15e3114cf078651ecc2302b2f0c93d575cababc2c891efb3c653721d7a953c728fe30916117162474ca0a615885bd6055859dc268158bd2eaae4551d775daace4aa2a29ee360fe575cd63d7316e72b729a9fc756176639e3bab0b87ba7c755555455db5aa74c26b558a3ab5d7f9899783ebcbbb8a6e1a049ad8a9eb976d82a2a7aeead82f86e2f9b05b12b85198c56913264475cc5e92b2f30cc55521fc6c492eaa304928f5eb3818755d4c264539aaba55c12b699bfaa7a83314cfc7bbd4a933f3542f2f4a5cea2fd7552dbbbd2997a1809df36118243c48635c43c68752c2cbcb6899dc77c851d2406354c346430861b7bdba69bc3a850d5f0f2fd1f8abdb3b8dd7b8f52e1b95c6dffb324adfde7bb761a10c1b36aaf6d22906a4645d4663d228d1b0a21e687ca3616b74d3a0718801a1f1fe321a351a035203421e69cf02c3142af0b061ce272c47237b90e6de803434a7f1ad9b06d2c0ab871eea759a47c18ba6ffb21e5efa0d3b0c08005e83a66e347f372a7c598d1a3434bf61216b7ce3326edca8356e61406ad01af5dd469da10060472fb371abc65f8dd3b8f5ae8b6b68686c7ca3a95183c6c6290c880debb24743438f10872ab774dd11e050836bf165e395329a97ea5533d66a58de9ebd2c658daf73349718109a1efe1e6bd07c34f31a7fef8a68fc1dc2db430f8718901e2e0dad71c680d460ed39d69ac80100dec78a295076eeeb1283107be881d0aedf7bae5b06d9bb7bfca4b877b603a173cd83af03983d1cace1cf0b2ecce4bdcb25f10e04fe6141a8c328e390fd70d38399be47da540057ea23c1759f0a5df475d80f87a3df48ac0458eb28830cfe3dea20e36f33b7e149d5dd9d37883cac2ed2bcbb9252287e642ac87e88f626c220d3c25aafa1df7bef7554436f10c238e79cf65d82b1b7e82cfd026bf67befbd095f27b9b1e18487b5a911d7bb41c6cfc646870e4debd10827463564dcedaa18715d6863dc42e925b52ecb7dd00877c57d1208968c2273b7403459aea358d02b515c16140bf2f8da402964969b90f2f9b2bd00cd8235776ec282f3bde7b0d785b1f020a15dbb86d75f853c0db96509b2c753c068f81b0dd7bcbe2c14b9f37b0eca08878cb2768379308d33c8dc379a1e801e0fc87ad68b783ee8ad8c5a0c5b80756141aef72b52c4f3e1f8d382d47c55bd88243ca95a04d20ab3381ff97978ca5c7dfea13ea73ea717825a927cf5f869b737ed2684fafcfcc31640bd9aaf7ed50b0b02fab43816c856b4a2d5a98a3e9e8f94d5ddcf9c9f5b769b95504a6d12c7c5dd2858846be2ab1771d3935a245ada7823cf47f528a9d3db0d679ece09efa7cebf4b4b15f172c463d5faabd96f9ab245e6acaa6949d52923cfc77c3c553f4c7c4bd2d6b3f9f88805a18e832de0bad48d58232f4791c6805834ca5b6d1bb8469e8f8743e9ad64365fc4488455959d01efd9732e5537aa043573eeac465e8e7858fbc3a027c08b79f493f455c1bd124043a3cd795d09b66810d2bcc3ee538d358635f0f2b401ca27189cf21b3b6cdaf958e7ea75a1d3ba930caac335f009ece11eeee12855180b9b2cb887a9f01557b0f4e5631baed960cf0675f0c306f64849e5a74ad1c15a1f8b43861dc32eaf3306e4b23b58eb77d94b0713f8046b3c4ea014ac35dbc026ac75976cd3a163c7e7939d75b22916cb2b78b0c03c2790b2bdc7f768297ccf3e2650b2ede21aee6ecb342271a50b4af9bbc1abe4c65f588f25cbe8360ed24d22de24f15e56b4c5cb18496d494a52ef7615b2c1edba6d33394593bb5d67a5090e6e053267c5073bd71dbbce4a132bee46fb569a4831050d9721d7eb82cf8704016d13c4286bae4b59cb1dea6c51b52bebee342d11ea4ab05396441ff6dd2d2105a1aca81863b437e80e8aa228188a94ede984ecddc52b9c7b8c710b17098f40d8f06dc11a8d33c6538ff18635780821edd94dfd511445ddc1d642c3a128268cce3907e38cad755c43f666d399a5bb638cf00f464abb9189cd651d1d5dc439e78cd4f644a9b14d187cd87b3046e82c37588e464abcb322e411fbaaaa3b51f6b992bc931aa09e8e8e8e4ec802a1db40484358af4ec489a03039e0b82d37e79473e27924de173bd4b39deaae4b98171912ae8b9ba49df3e137ddf48d0931803b6fb9d7d887da0cf09d56431d9d29a192dbd3e190b2ff4e54959201be733ee6004b14519e0e0c228470cee8203c859634447f9e083eb54bec12294be63beb52a45b6862bedf043ddfb224f97ecec992a49532e704e50521084843ba2f051e5a22f46c95f0e9ac246987509f97b44bf1b4663546c785193e61f5911a64fcd174d3561c645abf6629adc367a2d10d0d4a26bfd1648d41a169a04e835712aa42fa1813420fafc63531c6c8b71988574747e1f57831dd865dd2e335b7d1e3355f62e3a6bede7fdc9d42b76ddcc789e8f11f7649cd1229446adee34b4cb7f126c2741b27a2e63dce18e9d9216cdc74227abca6007ff5e6d920fabd77f37e9c3a75261f9792fea83e2abdb43fdc507b4367dd603fca8f0b505f15e6d191cbbb711c1f52807e10435ecf9c79f477a4d000bca9b4cd73dcca51713c00f50601a850e9ceae765524bdc386044006a0de74a9a5f5a3fa701f55c70b3080cb818bebb4709d157280829e3120495456bc785477da51dde94701aa3b3506a43ac4a0139963803b19e03faa8dfba83d5e0020a421386e58140bf2b94d648e62437cd03ac487ddb1f11ea706b03b3cbee3d2860f1ff4491d1b758b0f2e3d7af8b024ea05f88ff7b005b03f2c89fa0f1b964459d2103e6ee344fcf061e3378d84fbe28b2fbcb8d402faca23d197da722ebb530fbe3bc51db10ec181e3864d75275375a79aea4e3c2e012a005c00950fd7f11d04a800b84d15c04dd587d7541de751737c470d40ccf1000cc0eee0f88d8aa306a0ba2ee5a83aaaeb920fd5754900d5750900554700d59d7ca8eea4a3ba538eea4e01a8ee840300fdaabc2a58ebbb5fd386b5b62cabfa4d10448e18412563ab923b6e3f2874d3aaaa2a2049b81bd342b1711b74f403a538f437ac35b50dba74874b3f97ea702976e98c4baf4b672eb52e255d5a5d2ae352ead2183daa53994be3a531971eba1ed6a9e8d2be14e65ea7a14b5fee073b7de67ae8703a6b103fb0d6ae8aa44de78d9dc9e8a3d2f42f93bf09425a184aa9a3b4a4f55083060d0fb67e071d66cc9064d027c418d1c3a097a18f11d1c3d0bf84e8337a10fd871ea3bfe82dfa8ac2e0864dce0b2d4634b9bd85dbe2b8b82eee7d6151ae0a459964788220c2b76f4453928eb8a69d156b6872fbaf0aae89b9fd99a694522103b8bcfd5287435e3ed2fa3e2bbff820774c4e0fac0161bebc5b724a49657838ca656627dccd75c1aa2001054640020aa8cc93a4939d952b65b87cf947b8065e9e733e08dfe9302103b85098fcf4628de01206848e94d38a9fbf6f7ddfc8f5a07fefcff5c8feceae07e82f46243c7238624c00e6a5fec035484219e8835d56955d8a29db2080c823e69c42e4df2506e4914bc6151c2cf757b9dd10cbb91e1fecbaee963bf5eca3ec84a0eeb3cfe180ec1ee1c535ec34782739f0185403027db0eb034b60b193ecdd5d8f3b92216bd36752aafab38cb064366d1a39d1d9c21997234e47c47a72412460482fe0d5e0f21f8f029c8ff7e4e5e03be11a28059b403c6dc29e3c1f8f0a95cf947ef745e19af8a83c1faf8a97a30a9daa0497f8b126a9e2f940c2e5e05fc0e1e06faf08fda1f18a2a102093604084810a38c0aa029cd083046041c5a7fee04afd39317809270522cff7f1c03b414fd879c7097a02e95424dccee6e47079735ff0d8dc1b2e7f8e21fbdc4fe5d315130322a17c0eaa58dd71c2e604b2ce956c10ae14e552b9f107a7f5292604deeb16c58e41ef845577bae2b25b4e15564500a5ac20c2693ec71f2b45b8108347c83142bd8150835a959b1b7f65774319e32bd90186b79a92d1be08bbab644ab05c9be2e5dde99df8f549567625585d9881cb349e187b0e07bc071a9e3ac68f7338e04fae9b9989d56fd9f1b263747d69a3b5af9b99198a3b7cb08a76942988b9ab7c7c258221e35bae86d2c71675cf39235c16a6423a8d351abe98e6c6cbfb43da04f37655b0acbbad596fb036bfd1d01c41d98d867480ecf68fdd341d990ec68688a7174bc390c5fc4df958c7c571a92c6539c68a46a32cdb6e2ef527abbb23973a156ff52ce81e7f2ceb1c8e8a46bb614477ec7e055c960b4719531d58577e5cd7ddcd59503a5d95f8247bcebe978128e728b536ac39f798f03c9d082184106e91b18f7473cdd3d17fdd5a680516c93de73a21a4d7cfb95697283709dfbe727f5c4712b2c1b69bcccde17293f075ce5e69f877632eb4376cc39abba68335770fbc9ce6c7057c8f5b42ed65d2c2eec99125e5c36686ccddb25bc66666c68233edd053688789cd297427e8894727d64e1c2fd38e133627ec4ce8e9f32d1a60c32ef62d847d8381aec73bcfb883f2794366fc862d47218c3004d9111d0ee19f93996fafc771715de8583b5477d2c106feb2a97284da91484b764402ac21611e500b155a6c4234b44446b5ec5043d7a1663376da620b5e5c77f83d49731e61130f5a90708dd379024b930bdfcecb9df415e11a788432507121167ecfa64d3490e6421b1a1a2034f497577a3c38cbfa3ad4cf40a2b2a4ca8240a846e095e0f9f1b8ec112dd683b83b4faaec90e65f20e7c6235d825b86ececc8f8e83b310ee3d69173cd4ed5233e90356908ec335e04fb0c4ba29f71772af23989ce3811a1cfc8bea41f3a11d9677c865dc2cfde9d950130484342a1990abacc87b87dcdfaee4c059d54652ea3c63c4615c997ac2209bdc0886264403d3247b4bc865c640f2687e2972d44d8cdcd104a16efd5760434984fe35b3c84ddbfbf0c694048042c48680202d8530496a3b162842b3774ec703d3e97952a33b8d73d735f5cfe06e36389cb31658458903adfe57b7c43de835d8b6c0e4b1381426ff08de7b2e0e071990b7099f90e07ff866f5cfe1124438a5047a39465b01c4dcf77bdf47a9f08aced12294b7acb4490cddff0c346accdc72d646d9748895fd2bfb06396244fdd9d2249da21d6abbbd30ddfb0c595248f9d2d6988eb7d22d8f9d7fbf3ba21fad789f0315a211799f5323aead27c55dfa5390f97c894b0364fad12ac4da893cd33b7132ea7f59c534e09a5947207ee7e518b8b0bce551ad61e7cfc42b6d15cedc6332209782dbd23479f7059ac2808c189112ecb7deff08f0ab05d9689a5ca7c41c06784cb72390a4250c175185b21323979c3da53824b8f8f60cd08d65e24c528df7befbdf7de7bef5116c1359be34202efef479e16f7bde5f098999f92a8046bcf0bd9e6b280f687225cf37ed3261d3a587b7fd7deb32a110a5de818b564ee5d82c79306f8683f202f462e40c7da7b5728d76cd49ddd9833d063c273dd7c3ca7ac6e4efb9cb0e61eb7c8dee9b4db6ca68c84e97c076139d783df9b7f4f0a87c35d4ad91acf1e20418b8e164620052d52885a300113fc6e13572c614a6cb9862a57ae81e74a24f0476720bb7d58e59f949f95e5c382bc2ba57cc7b7ec965156d772f3de08af45afae7d2dcaaa2eebfa6c4b2ebc2301615d68dfe57bc3f1055344b972250a162cae44b99e14aec7e78f47476b26767347e881ae34ff2a9236391744bb2eec56b98cb4882efdbbd2b7faca89d6cd0373b8f10317fe45e91efd5208381cf0d796f382ebbc705d17728cb03de0c6eb4202d788f08a5246feb72397c2fb5c0fca6dae4ad47a78ef6b76a33dd82d8b3a5bdc1811cc4b28037db0cbaa283a657434908232a2795b3c2d9aa6836b5c10441a26a10a1658b268d1828697c5c3f2b4f4b45a975a0cd9f6de9587c59c27ca65053a01341bb94f6e1a9a8ddce5115864ef11d624f0babbd1b5ec8ad76c02cd46eeddfdb28651b6733242f796978d8df6dedd07a81ba4e25c1f20aa217bcf51ba85e7359b90bdb3bb028b1d950ed646d732f7ee76eece3967e99c18e4cb39e71c9f20834de86e079bf0ef30a23020dde7db99dd82f562f3e84d82de24f0527a9d35e2ba39ec2c49c8bbbb837fdcdd3da4f92a493e4208ddac421c161bbfff9e73651502a91690626166d23bec1622648aebfeec833dd759d3d9e7b4a0d7ab2421af9220a91fefbb465c972d49485ffebbfc72ae45dd49028d749d95218061085918c2154af564558caeb33284293f2816da0d9a299cc8e26ed786d073b71b77835a30e1072d5862cb759d9525b4300215d175568c30839b5d32aeb3628410dccbc55c67e5073c345707cbdde0afeb7a9d152cb4b86f0d564431e56e971551f4dceb3a2ba268729d1551ec58c1230707e33a2b78c27021958b01cbbd5f017e60d759f9010d6880006514e22283b9ce8a0a665081cc553101157783976d7eb81eeefc02b81e15c6755680c0736ff0e6b2b8ae86371dd75d47e76ea3034127045edc4dc7ed2c3690392b4cf002749d152690e13a2b43e0b99b8db3b20416f73a2b4b54719d9525a6b8d4755696e8b9a4ebac3081091768d9f67d79abe59443d6cdd4b45176b74d126fdc21ca4805cbd16c8fb9f21b26b178491b644ba4585f027f7d491ffb759d08b4a4787812fd6559226d49f17d1d9e481ffb0d3ba6d75d5f96dd8e588d01517ddeaa49e2a58faa20bb8267044dbab8d6a31918ba2ce0831d74999d2d4ae995416a190a2c087d758b99d0d1cc61e63b56b337c5829fdba3cc8421ac2a06842dfd4046d9ea725c03dd8dd46e49e461ea4b0d55faa6588801817c098329b7df0e7477ab9fb0d61da5a7601efdf848828c2f37ccbbb97976d8f4aa4c6927559ec0d2248b145a9e54f1e4f677a4c8f713ae994c98c78e0c32c71a648d39e65eff9cc8f58f8848e83056c9e7a1f33b11eb0fcb0eb24a5e9edd127dfee9fe5829f3a0bf37a8fb5bf61751c5fea92f07d5ec0e033244f425300ffdaa4ba4545f62d577eba2cfaf13f9fc7a6589c058d7614048d4639e737a9544599203408f391199bf5331ef599d37a44b7d98832c897ace49c692289b0411d063ce0077b251a2c3752926c6da235dea8f4ee64ecf4a99775ae63c68c8ce07ca7b961d4321b39e1d74994b2112f3f7679548210df11ecf11fd62ac8ee37285aceb4464d743bfe1f96e9dc8bb65fd7d5a22a0675649765075b16b314c0dfd614086ec58cffe3e8711d91d0ccebf29fd6e273aacf5616aeb74a9ffd20f55d6d2a57e56194b97ba4a97ba8f7571fb5796e69d2abaa082cb145b9e6891a2093f71fbf4c23864efdb7b72bba750fefc0066b7e0b3ecf6ac67594f5e175bdc978c946a56f22c6ba3feb1aceba22eea49f85e9feb5565614fc21826c3a28e3d938181b0adc20ec22e4ba9eaa6dd6484cd18cb2a3807a394b26ed9bde42f8ebfe42feedb1c0fe5ad2d63625db394b2e59b7bc6ebbae2657c9a48d297f5f8eb1b95767b254fedd6f299940f49cc5ed475d9cdb249e0adec96f3b1968aae8be714487c6761f75998b5acb6ba49cfbfd7c7302bde6af89971cacabaf5f958ef63bd8ff530ccc230cbc2ae0bf40d6481404d60a0bf843eb72608d45b92063d5493b4755586e2e5b0ec876597317861c1edbd67b39ba3e49d99ccbe5d719050e2f81bf324e1edcdd13c6dd3cbf9d6e9fccb3c4cbd92f4e72f355441f3f163a9ab4c6496ad826c393894e56f49e01907e67c3876818686a60676152d5c773ad854e759f4cf2e916da773c870a675aea1d56563557a8759b688aa086b6fda9b9656349a118d66b8869d8ebb501a7939a47d9f5f64f1ef6e9f9973c8de7df76ff4771879392cfbfbe36de4e5784550aa8834f27c48bbe5506be4e5807f924601e9b48e382d468a2862e4085cc25debb2baec4d9ea29694d2750942f85921f3c421623b76645c231acdd06837e61c329c2a9be19af3699c96ec9ac81a7939def55793b411190a21d130eeb0229e0ff8a745ca1b793e605555f5bd7a1147b8a602f2aafab8889150bdecf660bc08d7c0387c113060c0c338c480c0804642a12221232fc710a4cffc55d18c99bf77870d41b233bfe119f59d9ecc1d1644e62251dde8157da64e0c08998b6e51f7687fa0cc20cd9851f924aaf317849489acfb8a525ed2facbae5ba0831e8232318f81f1187f81f94b75f9aaaaa1bf0a1b2613cd8c32d18ce8f255153d5437256e0892aa4b59297195b8ef2119c7a0e82f245fd10b4396c8cc49af60b5c9f88471118c87aac35b5515854422fb612293f6c178c8e2c0b8c8e2c05c3ea61b13a2612c642dc65e97768bf1f272c9c4cb44191919f88aca5451e6d7a90c0cd9ed9269193bfad555e82fa34c6424214207599290aeec56dd104ee820900b81ea163aac2a24f8be3e08f4501091ddf88a1e03eb76040c9993ea13fde530af4811828e3da622f1f272114e06de7d7f4258883e0864b7d05fc5b7aa5bf5cf1fc9d22e45687142df2a9ba46fc882b29add2ddb94b81389f9c5175f747193404c484c2662cddd11d74859893e90bd0cc2ae125ac81abd941086f092e49bd55d3178b406be48c452ca27ed4d2f003eeb16123d250fa5767b6fda4dca532a25bddc72a0786340244fad3030303c8c01819956ddde7b96b4b436f1607fd598eb5049b7acea128d2e870c873edee01a6ae9b0c9a191b3ba6567541ebe43b5678c013a58d26de5a1de74103b5c9f9145cbbf43ad3cd4dfd6aae3ee0a1071c66ddd61b443bd2eab05af19b57e87faf350eb6dfde5750da18325bd93d4da54adeb5bdaa5eb578df94c90985fbfe11d6654ebaaa45a370a44ccaf5b0c6546875bef22551deeb0227c9af94ce5d355a98b62ce4ce69cf1b489ecdda800182f89fd659ff850e83032a7a2f763c040ae91711838f4f3f4efafca784a2f238bebf37443722dcb22911c307312895a2233ef242448eebb651d246316301d3073d229a596255d96c88c2559d7a5c7d4cd828139b51f26b08bd27a5d7684c19c5a1c1819a7169d30312e654421322c642d86fd07068c8fe82d92b569ed79694951ffd3a7d3b2dba7a34c5b997f644eab0cb4f22ffbfc9384d226322bfa83c18179a8baf3a1f85028543718191f0a1dc6b25bce1d21e998992ae5932789feac29447ce821bbc148074cbb3d529dc18890cef7d5ed01418464475d12498b03f3f8ac11a30b6343a77ed32f350b81ea8604c807131273e3ab4a55ab6ea36b5d53e24a796a378b6627a3df7ef9992aa7cceef51b964ad03b7fa11086f0d2686d9a219da26e7846a5ce95281252b5e225c28400dd499588c1336c607deb5b0f0bb2830ed7ea8b675c0b5e3d43ba96bca28c6bcd4bc6b816bde6e85ad445615cabba28ebaa62ae755d96e85ad875c15ceb73612fd7025d9fd0b5b20b945d2b7465a06bbd5ca1cfb560ae17ec5aa20be6ba56cc25b2ae2573c554d78271c950d71a5d30e8b5625ca3792d19570c792dd225235e6be622c16bcdb866fa5a3a5c33ac1d2e1dac5f3b6040586e071d66cc9064c418c1908971ffc82cf444914834e39ce6da6e49e495d2892c8888357e9b5eaee9b865379a71f59750e6b480b454b39ad5a47f93aa8e5c349a914924e88b2fbe78570624a5184b27785ec3286797eb65d469972eaf0b763d2d6f0b2ee8df5f97d7c5f302f4f7aedcf787e5557951fa4da1529daf74897b9c5c793ca3a713a50b2ecd0454994b979ac996b7e5ca962dbc6534bab2a54b4cb654d5dfad575195944d5cb97245f215492b7311f22b990bde0282ec9da34461726317b72530b738816726cc648b1ba5885bde96b7654ba42de4a35196d1dc58c46c4c084fc5570fe0f5b6de7683f0bdd8fdaa74c95dd5b515638c3265cf842bc8dedd616caabb3ba911a8e42cd6f4496c999a1100100004003314000028140e0804e2a040402a9866e10714000e94a84c74569aa7511063ca18630c00011000000000000000a800835f090467cdb63b7310271c1caa8cef6fe39aaeab44e2b362da97cc51df9892306ec18c49405bd2e16bb8fa3993b1af0d68b6dcabbc33886af9d95e58393e1f0db00e30988f0252fabe608aaea754e2b360dc86706b519797a3cbbce397e1c9c1dc8aae4d49a26761dc63281e93e21b3165fb78bf496d4c943a6f60b645531777f30588b50868a6aeddbd581bd5561c193d7e73602af27b273363c430c084c9c7266f2b61e7746240c6a8f645bdc99b3022f298dc4309442a3bcdc3d622d7c3f18b7720a996a97a9606cfca3314e2350a99a3122dc80ac9769f2603d6ffa77ba169ac1a80a619f0b7cfdbf37c3cb546ad6ceeb29cacdd80cbf05df99bdd88fcc40d789c71e9c6b4569f3648512ca4fe05f4c3c3f43318d11b7faa5cd4ca874f26559f7e7392751d5e9fa0206aa162953d32c84d1e6dab91b0e4dbe71e23b9b580e2c74c3f1f0e47d7542af10d1dc78c7f39f44dc472ba024c5d07afaa4a40c821222b4de743f5188fe241996ca0b07697d50719e1399e30157119819ff51343f4e813c184981069744eea3712feada4b47b2d6bd10d29b13b8cf276fd9a35fa84fd2e4afdbc8a4192401c483a447d450e85b250b3208ecf4c6e975b9532c6147bfd0a41d1307e65d3ea1512b1b46b1c48c17589d6deb1be1c715a4097e4e5f35886e9e02f567231d310c8ff46177d3b55a0906fbdfa4248dcc108c9650e2b66fe98baafefd59dc6657ea9d0c0575c17b7a9456a9c0b874f3fd869ecdc0ff427867044475a63d9a8cbf699d41ba00f6588df3b37d898130aa5167d00835005390aa4153b24ed35509e458978004531295aee416883d10048ddd5769c3f9fabeb5dfdcbe219c8fbd45c0232087fe224e779a6eabbf556b99e1e3909081adbe68435c2504246da89772b2dd1ec24d42539c31a2324d0f9b8783a83997194f9454892ee322bd9e5ae2b80c0ab5478eeb4e3c4bed42072ee952c419718cebf6bb1bc2a63b5386519251358e5f97a3ee37e6d65887c9c17a993136d3884676565869404eddd174c22c4d143096956f8dcabe5294adaaabd3c61496f7ace0a959362d85ac7c63d94b19823f7ca0989ed757cb01a79744481fdc5b59dfc6a0a3c7e69e4ab9537baa245983d3af534953954d07e84efc8a5d22934d83f8b839b5c4b5e418ecc4c17d4ccf5a342ec97493bc29a842f7dac286b43a3c76ff3bd412a0366afb519aa302fb0458cc464994813cd352fd66d8fa0cdd0a13f80da1bf7a88827eef5b3379448d0c1b1116e99182887d4cf33164f8ca42d56778b5777b8575faa982a856b3e6e5c17526ab9ca40a38995644c13a31e5cd9a0ad8bdde2cad4f29b7f5b5196cdc86ca766f91abab24af2354b18b4f713e88c6aee9c71563edd8dc3bda8e3ee7bbe4551ebdf7902f79966cf8ebded85834196ec2ab33810629f82706162712d68308f2fb5b0090845e34bd3e66d9b06b0070a0dbd2d98a0c59c0a61edaf4205b16b444c659350d98fdfa340c771c8d39ba4b725097596b2591358e2a4ac6481e6f940ff43a0fbe25164af14b1f661dce606582e554874d095a5dae6223e6711235e299d74afb989e422ebcb90733b171cc981106f02b9c640f866879d5224ea18f6a7e27108dde8e525bff74d886a23ae09b183aae3947461260deee413d0add06a9d5f368bccf7cafcd7819c32624a2e1f456928523722c92cf6d64953ecaf9c12b7321f0e8f817164580b9ff08ad5dfeb21d2d0eaa1837fd2ffd750a0392b824a9e3ef9e822328e33caa6941f145dfb303509d74a3be66f26774c3b8f66faa5ff70cbe76086ce85890f36baed1bb16347bde83607faf7857943fb2ef5e175e2c939f3b1c16947d690ba2445901cd20d3ffe86b6a209aeb1408970774f4072cffe2a01791ba9ed7f454009d74bb4f21857ca11f8adacff34cb308ebe4abae28f23f5ce4c735b3aa22a85bcfcc6c711cff2f43a70ffbe332a5cbf39b9d60e0d360cabf068a24c883278c957bca4b55a8c281777816faa92ec4102bba4d0c78b6f14c108814e74de3eb97a1703af8ab985815361989c10c29e0fb181e1da4f62d92b23874dcca5ec36dfc1545949201f09171c0473636eee8106667592174e311c8a1932d7c92dcd01ebacb34a069c648513268cb529f0f4cbf75ad005d6f2d09f2b466a70617d9300af0f728ecf416b6bc0872fad85219749181cb8d9dae1b281451a028dfed3012cbe2ae1352616b6cf54096f0a7211274e74f6e8ef2132407abdf415a67a927f92b17c7490bd0c77b5b5bbb9446b3fcb4c3c1107cc36006d7a45c1337a44792c3d8d3490c5b80ee125b198843182802f5a48121c93637f0e688e9b4e2dec53c338d41a3b982f22d73fedf5aabaab12daef5a62e682608dfad809f2b01648d035c72b718ad5b4ebbef553e549fa66c423e33f658b47df00860d8efb594884c484d3e0f57a5b3da77f1b5544b2ad9a0aef5c3a50c0913f178b86b312fb5203c4c31e324e2a76a12b8f78a71f14b6b532d5d1b2e56e65d7359a35c4be7a21b4e0436b6fd89967c32890ee98190f54a08e71a53c19ec3eda950dea4932557ab9346c9c4fd6d33f32f8422310963dba7072daeaa10e35823d25c037ffa32fe7454e50c14304ee7e9925133fcefe672697ba86a2640a6fe7e887c8fb55e8113bf1d7bd6c721eca1a7700159d20bbdcb6ab89e9787f3e36631a3e2d86bc3fb282c981133dcb008841a895abf418123ac0d34afff212c750a8251f498426047839b67f778f41f57b1134e866c9a09012b020504346c3a2ffcff9d560409b984acf2378a3bdbdb347dd3bc156a2d034e3d5c1b8bb245fc75e7a9f4ca54362e7bc3c532c5dabecac39e5f4b60f7eb632dd7bc3c60b9be5eb739fe347490cea205a9b87d69698ec4e09e3fb67f049f7c4f43db73d35d9d0dff6d2f4e6439cf32ae3b41e8d43c4d0c0cafac2ce7abacabcae668891e56a16e542e3f7a7230c88e584d92c9a5481ef1ac636e06a823f3c257d2342b4e8139805a44a08de6ff63d8b4f54938f624dfb69ea9885130b3d5182734f8efc3b0d779ae214d9c3238262e1d4673f08b2e2a74f3c80b6f559b53940e3a00ca9c8df99a5a2ffb602042421bad0adf572e4bd6664aaf1ed4a5fe0275f8208c5e7acfa2041a2abe3e71077fdb04fc4c151844e6ab64330fba7503ef19d6d97e85b6603ddad9058833eda43e66e83b6f9380e5b097a7a3c2bcb120c70e5e872064c6dc0d09eef296a336b6c9c49262291b1ac9a50c24991668293bfa312bdb911f94e4546f287e507652f039ad1c4b7568b33efb4570bd59b73ba5c2e1668b45e0c1030e10f1f49734d43eb503d87380d7fa935fec44c20234b5341c70e35b5c14768e89a4ba7615c23f4b4b9b019aa5bb7112fedb266a83ec3011dcfbc9572dce19ccd0971b9145b48a70e11253a7b883ab8bff4fa1747459af128433c1331c35669faa642f59dc2d8bf931eb5ba03cdd281e19b64a8661afe39fd53a87e6e9defe5bcbafa2d77c25b9f58aea320445dd4e6ef37288965273556f023cc3a3c62253a2c81e91e7265de352ddec7acb45ba50268eb314579519554171bca57fa1e040f802d3f3c1885ce2c652af864efe0e5ca512ce5f654c716e0784a519cc8f690f9fe277fde95b992b8845854d1116f89302ef36df4fe009c6e94a5c89acca5b0c642580995ef6a5c426e498419f721ae23118d3a4190804d06a53901de399e7325dc44419b982377ef4a2b35baa49293b0d075a70bf2ab681595073d9f502ac254e4aa07272133c11729e32f35770409007551e03c682a4d2e297ab5df250c6e62bb6622451ff1feee1d6bba68209027061182a2c56891b936913a422ad0cc781816a2a178742e4fbc2a9dfe17f8897ef3efb265ccdb5b4db6a963b2c2c4aee832ecd657a1663b415484b374c58b2cbaca53a35667d1259f1668d071eec8752c108b5e038bbd11ff65d177c2c596b5f46bbf1530c092f42efc3f51d282fd8bf7f9c81929adbe70a5453773e5d722a0902390f1051fac9b6ee3d1ea51ccef933f273e953289a88b52323593b125384ff476e6f0f30b50faac71bba5f746ab0f818219a65e03df1dbd7bd9090cfe4ac5604747736628325f4262dce1624bb390680a2d7f0c36ffec393a81afe19b2cdb632ef5c4af6f9abbf92d205e00e0a5986e5f99c2adb9a25200da682d2593a0166a3eab05c865e6ec3a88b37c6673e35f1ed4e86a5b001d0340c7801a8a0b6dc320234afde9625f66f251e51beb327fcb3b4cdd30315fa5307e4ec67cbca48b422c2caaf9ef877afb7e0f7e5e4ddf59e722eb0aef8a45962b7cea0691eecb41f3a640e03876a276051127a7b47c456ee132b4256a06bfcc8e5e0c4fcecfb253d06c26a993dd6270f1f17babd0301583cc029e10fad1b8448dbd217fff21fcc869b7a49ea12f8765d0bc1f14241976f810123bdd8f38a36e1c4bfa6ff91f2fa99f62a2d11d76adff7d9406d571735892e51d423e5ad25776ddee4c56cdf9883b55ac779c8f7fbcdfe56ee2011c44844e9b1c51792d22d37a320708397c609d35683a1b0e068e1c7bf199aa6af5df4c888b06e767590c46dccbcd6c913accd62c494fea90ec887fe2b3faa47efbe9f3a8ce07a026a0d4e3bbe4e80bcfce41d89578a94f0da55e7e0fc7db755f98470b30dfe70c9fd039ddd0d933a16d9a54c7feefe857553d75d0dc0cf654c700bb57b499bb4ab3d28aa5e5a277c84cabe5a92eeeb19a6345d27b53f9e54ea34f2517cbf937e6bc778e564327a4cb8a0466477bf64edc341ac5ffffd3fbcb807829354a16f3e8274cc184194a772d32140129b5722efa3b631433bf019eb63512e80350929625071350da33e354567449ea549e79684819e0f9e4f057af5f8003eedfd52c182d82004be086c960c944f2a4b45ff4abb0f885528a4d6e66659a9fd49f904c140c9db4b893321591afb5e9eabe56da5b8547cb33a5f2962fc3ce9be8f2b1becbf1a4a8228da83357be4ee5857e302948c1c4e8b0016d5b5fd822a8c1a311196e98acf0d9d5ce337ff3765d3c54e8a47594b17c589009c3eb39df64e37cee77bd95b9a89258ec57ffd76f71c876d839d4e521ac64453e1023654e7b793375105cbd1ad4a70e0688e03cca82c1b74c953883c1d0eff51a0cd44923fb5d4ec011ec08037bf622908281e33ad9dda6293e9bd62c17d807ae43473c0f008de6c9f01529d5e88ad7ce1a3c4bc20e83e875016a0a6f294c1954964e58be1a994c5585c24f706731be59f9d08ab2a3503e0203318810a3de950f5287dd50a2bdc01c59540e21e4695c23b6ea3339939e6b4ec4a024e5f32871858a85eb693359f4ed7a78c5add22b8e63ffe3ee0ab330844de2c73778f9901bab541cab357a6a449c38ac996986fd0da26029d46241b6e70006cff3da724f7049f1c537749bbfc056cac2d8f4e138ef8456dd72cb6253acb98088b55171a048774f77035abc83a8823dc8e78cfcf1db2d0051d5e1dbc720a81086316aa3a6570f851bd1dc9832ca8b86cf07559fd1f0a99e0b45274a201a8fc35170c184eae448fcf25891188ac7047b1ff1cee45ed2188d30a4cb61c1e78cb2b0187ecd3067d89ca03782b74345280268427a98412a50774b8adc3a9eb3aeee8b03b93f835ba39c59c7660ae0d4d9a44369342722d470f7ad594c819a5a65585a8703cd61b6fff1093d675c424578f44190eda690881f57d1b66e1a4f810deeab645f7cf8ed1aa8087fb67c78e08124897d143504e25597a198a38213980c540485e017d0aa8ef9ca80aac5c814c35e5e1b99760c73535a282dc7042fc4396cd95b9502c6d99c20d33521c4fb32409d9015b0edef88825f9b3408dc8e8f2ce786f251e74c85aca6e9fbee393debf0fbcf6c143f5f0fe227c52f27821f2ecff90fdc97b9ae1a7c61dbd75eb3a439ba222a179654010434b21cbb97dd8d6d77a9f9b2e1b61685820dc89b7213d8e79f69bb11eb3ef97f4f1a6fcf416bcbae3662f5b5b111c77ec679c08a08c82f3252c6feecb8358238a11545e57c40639136c5b6df3261be9343c462a1e70732efa8cc66a55210fbf0e10c6653c62abf2bde022117d3e5b788e9233102869bcc7de6e0fa6ccdac68a25a59d8284702bd05d2f7fbe673e6fc0bd0806eda0dc09ab090b00ef7aa5c350f51d9c924126f172e48b490328e795890e7aed67ffc311037038059f995cbc148822f2b04634a5f89ff06a52f6f20227222dc1b579a4e24eb03454d101d1dc097d32a9e7d00605d10009bdbebe59df756d91529eb6500347eae5bac5d4be9d2a635e6bdf8cefc165cf0543555ccadc4588ee972ced219d47026fa973678b37ec981bf9576bee19e818911f96fb8e1186f7b96cd54ee47e1833ba03d21601916e046881d2143209f16329eebd5ff5eb1700ef0dcfd694aedd8b032a39adf5f7b20e7bd6fef778b4f781991130a01b738fac21249e889a8f32df93fc8313ab90e36754f375e228c33a153b8225c00a2ce48ba0a532b658e96d90200d7ab156e32f9da41e5a0bd8401ad447870b6a6e218abddb7ab5f5c13c02001e98b1effb382e519351e2cd4c47a72a7fd29c01ecdf10bc08a9241c712fe853af9a6ae3edd35245e640b6882ed6d9e9f32b133b116d7c0837e4762648ba6184592bcaf33070bd4ff04501604041223e574da95c8f714abacb5264db68993e06f124e511cabe9fab0f9083db243257ca26b2521320047a35734d429b489a6d49081025a622f53c4f170575cfa38e26b1b9a21520ea48d6f01572d27b4f8c92494c072f3a99ec92d03d57960d9f58d4d1547a4a87d9826bb7d1cd0f49a8a8a2ee7b71f810250b08a9baf9585c44d66490b71bb1d75692364ac029a77488d22bf381697355a5a7293a98bddae019d8c308a950216f53602a5116cf9e42e52c0651ffe68bdae8c92c2689cf5ac40910158dd518b14a068ccb69d9914d0fa9c5200386470a004550a706444526a174616a30d927d78656fc12d0e304d5e246265d8628245cb570f506f4c96fcbec4452fc93e754bb180d44f02a6c50891e636eac2eef6f7a849fc1a8fdaf133a186eecc373086e4fbda65282981bc80cf8dc2503991646d02b5bc80df6344d01882b138708acf855af0769de9f84421b4bfbc80357dd5361dd44c0cf4121f252f2f408a0868a60699e933d46d222ae0033bd2ab45ee63618c6656aac95eab2f3332c71492573179775acc4584ef61505ec0229067c2a5af0acc8203f78524b309d8aab7dc3ef068590ff16da25b96c53c85d72694e6e2f139ec2e5a0d4d1bd197a58a22eef8619017a097fd3271fd0cfe949ca64f5e001f658770c1577b5c80eacd88bc00481cc27da1d98ae192ffb80811ee0139e73aba8cfee9d1ccd0d7d60ad43d4a8308ff5018cbcba85e30598d14b9e5ff9a63ad144f298a0117641a9001937fc41ae1add675c357a6e4ec16a57bc90b1de50c60f99721b6dd3aa8d1be834fc74823ce6f34572fb47b8fc958f1c601191085adc03e3aa7d646c4c9842ee0c72dc4028211691cd080a4e680efbdabe9ea714b51f35a070c3025c2a34d05822ae57b2f984dca3a0485e701994a91354de8610e473bf2b160f3d8f569cbd45588722936efa072038603463594ebb593c1aa19501638edd709c4ac8df9d5d513ae1ad0fa716582fe482e6d418bc3a84d18330cfb217686bebf917af5ee2b340db808f1ea56e0c5c0bcd65738c386ebdc0c55424450056d1a8d43a86b436fc00908f00a0219d4e61d40137c4a016414002be1a2633616aba12d709414ff43639523d38a18bacca44fed39ae830d5b3421f5ab0188fddef7052adf2f3681b1c7f18901df3ec8270c78f7c13e41c0bb0ff489039e7dd0270af8f6813e61c0bf877fae425832999f9e25751aec5e885f13499370fa5af13fa5fccdc239fdfb14ff64fcfdff8ddf338e275a0127de7ac0a19319370a979c94935b248e53f88d700b7e5a77b4d04edd4d29b3a438992344c7cf5a84e386b9f833050eeb5e2f214d601ab07c169983d21e9cb7cba1feb1e33681b782ecc163e0895a0c2c22427e70294142a5025b206e70d9915f6689a0c8251ef968c10889c58879d556f60d92396b76086394e891cdcd0e3397707c83a04225063168a2674c1e2243223d3f79244b5a94a7c354938708c707c1a3ba8f5cb421a3f68288ae75b4fb50906ccdb5f0051f80af4e8915389f380f2a5e72a504fc870506906365a20014126743e54989431b21589c2689426091f105186558087c3a5e1ced738a7c7d93d39248ea7a8a0d306255cbe7cc84f44422de8838441fd5847b6f5b32016228c09b21662c123c6976afb68c85da9ca0490a9151ebcff632ce625b63111ac0fdb2b987cd656d09af59a486afa0c62e554561a68750fcb1390de47ed2d525f60d968379eaec890033e96c79c0f54196b14b73a32089f7824182f4e3fc027c44f614a9e8ef3cb521e617d114490e8355cebe9e805d2eb089b41d2fbbab8a1acb0f9f5aabc666cb16b72757c6ad112f44371064d4e27a270bfc659ade001d943b36f8cd0347a83ec00b0e48caa3f84ed97d25b09c5a80cd33cd675f1ae56bca67f4bf2845b3676a28eaef333159ee47dd09f6b1d10412c180a1d6edb0e66bd3eefc15980d445f6d17d752e82959980fc78e672ed42935fc61b6b0305c77fe79f485f238a561f17c7ef15eadd1ddc2197604f386f35562ec694007e6630f03527fd0ac4e728f42d42082257200bafbb69124e31999bb6584c47b4ae985a9d2c9e30592342af53ae6129a3085742404be00a54ac50c7515a848b014bd1618ea1459d2a440c583e0a1ab24c0f387f6f8893a15b0999806cf22b96404a1a58ef0c7cffe3ff66f6e7ab1d1bc353b86d26518a59597e51d6be8757a8464e1968135a432be045c879dba0695b11e969fb19a96f96ba501ac139fb18ec3124f53996dc53acd0b79600aef8fc2a0aa6c62cdc048c48847da28a5c1c235e865c1519ea5a984c2158bbb9873a5bceae04db4e4a2cd8776bf565df5ee6fff47f3eb8b3816b7dd9067175a7d67066c69f945cd592475f2b43d86f52b5031948792e3e86cac638287d12f8ecbb475ad19a42bc12fca076fb1ad9b5fa008971436cc59d83f3dcc8d76295c188b17f7c53367f2b20395dbc16d52b05836987f5d358c06bd35a88c7344517badbcbbe1f260397b597c3225ca4f0dff72463a98a2941bba397871cf280a6e88f136ff1340bd201b5de0626d57f401bf05493a3446724ea06730c9a9e614fec7c4c80b68b116900a29cc714cb0b5fe6be98bfd3d4dff1f8af82a85ccd130b20d98c5f554f3ab129225c7700ab847764bc3432c7e6721546938301aaf94dbadc12fa2ba6da64eaed60e86c494e2d70ea86cd25666532927769ac65221e95035799c27f468b0c02cb1b7f277a39614be7882a75bd24c394c456c67404c7901cff2a39e459a4c75f13ce798a862b0ef1c6b05a7365c2498a0d567ce59a40ca1426b64b36234f457087cea4cac86449c25bb426254259836c3b3f9a9d1ca2a4379798135ad4c25eae1a41f21b6448c4e85a5263c85de0f935b8ac7f89ea4839360e7a380392934c6ce94c363ef011cce3c0440ea919d3bd5ef2daa702eb9130c5ced64b899400650911a4cd9625163a7c9f147890a61717a5928ade505e0c1843a918b8b829634f28b426f8322c30292b9f886438c80f2b583446a11274245d46b51babdeb8eb91384a95d86218ede0a8a92e2e982aaa4511f8508d8a91ad04092c39a040816172f92c5263f318bfc38309dce54491091b620c55316663d86a82a15d152a8652860bb3e0c196e302a0a996ed9c965166bd3ac4856bc2b39a96ec032b10df855d89251cc4f53e9cf24dd7c48552ac62c25ef5e709e82c26169d94bb52e039423180b4ae41360022542d3817a52d371217251f38a2bb419530205b84422a55ee0330dc473f13551d1cd32622d350146a752a89339cf554a998abadde844343ac6b736ee989e4680eb52e51d36c5df18cb10522c06a830ebe79682120b5ecb60d93b841aac17d39d0bd54346fa5263eb1716e5e0adfecde058ee8b219cd513feb0f9df1b62d785eb2c431ad663c6261fc9534fa1c02dc7040a630e0f7da3b98fdfe29c84e525e2564d4dc334b006a5ff7b6a469facb180db72d88af67fc33c89de6dcb0c321f8edb0e2471b17ed1d05596690a5e6a4a64de9dbb7122578421e84410e3055985478edd0a42ef06be58692e9c48ad03d863a4286a544a0ad9e700ffa0fb20e621f5a450680567b83444220f5cdeb02450b040f5300c98919424459f8f87a890c723de47466b04a684f6c4a313fd08c5ef230a743b68a321c439308884a24b5c2d0e0cbe7fdda3e87db5ba11cfb3eb0bd8ebb1003f9515f48118952f02f347c084d70c8458da22ec4745ce8e28e10e5369a7e6664b6a1e3d062b2e3b350c3ff19bd122f59adef5f6e2005c6e1949bd8c5436e412e24aa3e6d22397a221375679b5bb8cabdaf1623bdb4ef348a4ef4f103c4597b99a165852b9a5da5ad0a8b52e79d2601ab5b144214d2db7da9cefc797cfe00fc7d6cb084fde81562c0a6baf168b2f7d75cdbc33f0c10a9c0bcc117991298976f66a226d0e491ed856635e61564f9c5f80ef3a8696dc2bfdf8537a4d73ecc792f6be32cb0fac58f241c99da1cd2629ab4cef12d1510bdf5089bbe4e15f09857d9fafddf7adc145a96347f3e39710f133363082ed9083219253f156c2e419f7392465f12da05a018624d9356d7acf619ca224035c45807b2b2d251d864f6ffdcfa7dc61d5541e325bcf43f6e0662952bf84c972da09400cc9ea579f80f710a34d75513921070c6ffab61005c8b76ed6b66e374e90f8ae3c6a6b8dbcc06e18d36543cb5d48a9485531d9ce5dd5b9763f72728e3e48664d6f3f26167f2c89bb0d59b0c2498f504a78d5789d37c5c54cf32df8d9ee19ef968854fb6ce660350a929c3c5b09b44164dd54857f08b5302459c11c7f90429dba3c94d4757a4cc4e0afc390fdb681a4c9300e05060d005a08f7f3b8546403943eefe41fff4ae163b8fc889cd5952339f1b2e4f7553bffe07ba6de519b40a6dce0526d0f7d37261290de6a1ebd7665c66b00d09c8775ed445666c24dd441e8333759b65654d123dbf6ee13d9769a27855e553344691353b26ebc71e10b02696c10aecf691377eedc8ee0266fe5d9f9a56bda3c59dffb4ec28557c08eab76c54a0cf8fbf761f1d03ddd28e9fb02f3f16a90142f5a96b6091db55be4d46f13de25616e934a1af410250687c9de7289dc92e9f7a77f7852737a9d9eaf4c8a4d5a1517bfd85e86d7d58e2c97d7182bd42963563cbf4cebe028cff05a16b3ab5f280435e9ea70e2232a86a3aa7499f7bff8d0cfa9a32c279f3d7b591ba6fb63311e13264f653930ee5b95ea2f50c2b08ea8d77c9019c93ff24c1b32000bc05b8c9808aee2b8c4c74b834d36c912aaf20b2391386532f0412d658d55a3a19d892a14d5368dd38587314f932f893d51d756a29c6fa08a4c1536c261dfc241bc57e2a824973583b4b0628014a1883ace3338d2d51193c146d0e0fcb8ea0d2c931978468a09d357f1cbe3c5314effaa8e5965c298cf7d782a93c66e80093708777ec651267cf50e4cda4c583606f42f9a91201b597fa5c94f8207a26fd93f9d3537f973b86928cb28bee623046d911c69bc401891c77b789ef8db9370a8be94e0aa5747af572c4a8df0b7d582074414149f993531a08f9d345c251b322b08e2617166e341a99841354b53da6579e10e9ac6a151bbfec88823533e9bf454f914e5aaef6f78e4a7e9ea798448f23811e758361ac1dc3b7c1536e9e9b63a67aa9ff3fd7a25e268fda8741df9f448dcf80a2685e8fec5736844be6c19a318f731dbc51f4837409377cda2576926d06bf1ec361f0eba7de673206256c5a3c3c6889e19349e6483a8638003d2bf8759d35475acf4b025c2891bcbf0f521d7fdd92c83ab35c41fe62de72f5843106b466750e06e8fe60e98c02038e6b7f8549b1a62e19bfbbbd2e20f929fa421cd4531efe7d14cbc79f70bff56fd4436a92ba435c7267128ffd6591e6de2673231d6272c233c3bc91686d80e4cbd0ef065a1fef37e10fcce4a527bd7e82cf5fcceafec0dd07ae0a80543cf0c9bc487ae1bf71bf9b1a53134cdc82f2e044c1722dae8b7f017e489a5da0e185eea0e9885956f14b8b924a2bbfd00fa7d3b7d990b711ece296cc5500ca974b55e84f452632caa5bf2a8c005c67f3e30bed23ec1111b29780154f549e19434a28f4a6a3b12b278c8a8a49397fb6791469f015d93c90870561d4418bd6a3e2a0855071d23addb1f7b283ff367db2e4d8179683b248ea55951a0838fc4c11a0eeba696803ca301eaadd50c27ee828dbccafd0c72f5508f7cb956f42198fd883944ece50e9f617d7cae2d71ac7339d1f4a86b74e0c46f7c860af055f771760f0028eaa49e6c0ec3dccdc13151b4a39f0e9a1a12072f5a37e86075fcd9ae9ec30dfcb8baf7d4f27f1994a04f13f876ff2a83bf0db161865a97224e3d13f86cdca157f3d5776a1b6cae9a5b4951a3d7ad21f8181cf18b11c45a0e54a5a82708d6a3c95ae7a617baaefa7aa7b958652f92520fd427c2d2b70cd1071648981f90445d436ecc9164affbadefc39f2272f9d1fb063b1b8099de0e2ad4f07725445b10fb909a48e0b39cba66c954bd3066d6b0a6b2883f5df5093f6c2a463588a53ea6cb03f2e64eefd51253151c166d27d10c861ef9a61ba570ce30b9d9eb6f505b168edbfa1e5ee32c6f4f4b3a31ae9f0e5655a835d1e78e1f5aa91a4bbf2236ad6774aa7eac9698eb01294d8b82c0f0d62d465431317beb27293855acd7709765fd60994584d0306fece1067367e0055e01ccc31bc761e88c0ca152dc35e99789ecf77f243fa52fab37bdcefb11b04c82dba0d6797ffbd8ff08007c9b0015d669750623cc639948bda188292bd3dbe4802bc36aa1c45aa20efcd99522dc8a70a06eeb8e1e319491e1ac5018194ac0e903a9cd7af29782c50526535f42e8f5d06a4ef2a8b40898f83df4f855567c3ba893b0133059c1bb4ebdeb0dcf7c6104d099a12904a4b2e7e46a9bf10d855aa3f3a537c356095a050126157efe3371cf7307551260b76be505d88aec6e6b8d5a6554ed6782dc9c91bf9a7fd54575d06da5ee39939eefdd2f43f8474fa720a423125ec002df1b6e57f729fbb3c15fd038a1b9e809d4d8dc2f174004cf73d6a0a7a9dca2aab5d0af476e615bf0ad8bb677f35fd706c21805f72a4ce8f9209499a819c5b6b3b5451d456a34b1b50164517d12bfe51ead3cf21029c8bcc5ce03074989aad59fd197f32697ffa9d9e5d3635b3f04b0495176e1fdd7cb53e7f6bb57b41b4118873db72a2d55aafe3582c645d50cb6e0342ed8371441e33450fbc35bf8e207e13f44af494b2b520abf93a00b98293dfa941d356ed339685e05faa54d5a1063289a9d4dc6080718ea761ee7a0899210def724cf35738b1c4c4b349d0f821720466a0aad8265c32ab00fae8eddb4fdead16f2b3072f077271421245cc51e7f0ac6c875c2ef98b41aa0de030d5eea4047a92037702bb68034db3c05d698b91af0fd38059c20ac49a3ab95575d7ffbb07a4e1e2f931b5448d4cab15057c3af22141a272e271de1fd1ec565e55a35284dcae367655fd0c61590c477be1064452587b6bd115c5aa9bcd139c7336c796a33e951b6e377ccc53bb8919cf1095f3d735a8ae70585b5b3991c794b9d602e198b4d36bb4f50c61de4820273d3d9ac8f18b85a827c137823abe6d8f8f972195b0b9d562862a790cc80140750e15c1583dca509d304103887444b6984d6ab29bb540c3cc36e619cbf244731febc742a68bc3c4082900d51cd772edb9813f3d2995b41e0e860bc56ee7f7dfbe0d7be2f673daa93542cb1b06886b81feea0ac005082bb12748e061ad26b06f756735f331d3b31203beb03f36a4efbc6ea00428c004901c4effe5546348187f7e562d0d2f811d0440194acaa380a525fd896d7db350b071a1b43e0ae2b7aea7de628305152a4696219ab788607e6ff13fd80d6b5cf607e043bb47e92fe37abf567c44cd80043f09f870f93a948b1ea9610915b6df3ed86402ff8c04d8bce7b3a12bf818de3aff85c97f2cc5e12cbe501d727e26467ba107947a1548dbb0f4e845bd68660dd133680ed1a09ebc310ebcf40f0701c4fd8ee237a9c78e357d82ee4d345f8601b60a5f26c9065ffc0ccc86db65dd6d8c537cd6525eef286da74222c3e2cd6284b23f03ff099f95af6cb79fafc9f8087cb604b4f0bdb56296a500b317974dd5915bde93458c26825548d6037c95e8b7cc33c8ca638ff1717959eb7317adff4f3e996486bba9752239d827682f2c565377fe14ceb58c474ee444d8c81c314bfffc256484d40eda9b3a9f023ab0abf9516b6ebbf9993ca84188e14313af96bf83f782f40a7fbc2b59e26197392ca9567a6d2fadb35564f4f345f860e21f2fefcbb83faa0f373505efa3a4c0996f3db21484f7700e7776d4dd01e460cfbdcc6bafa3710120b103ae0301d7a6d24cc02945844a04d31bcc8b8022d232695005c112d31cdd7cc9c7d281e4aae6203e984d9c67d6ef524d4e66ccea93b87d8a5c32aa9f0dc2b0a59e28bf19025465a98ab81b6fbb1d4adef99f4dcc481300e5ed7c397d7414f324a7a6a00c5bb017f7ab9cbfbdd313636263838abc7f705ec171bfd845f1eb82c35e62c7f4e4de82320be530f42a08c74fa4d6c454958c68f79c4736d444497d971679277f4b16d3b0931c76c6510ce1e5a9cc545e00e7b353180ef3f76775e3cd01a7f06f7888c1bde06e2c0e95ec0d903bb63b8e29b75e0053ae2f694b273450fb09f2dc306848d70381f60d21f413e24e769d6a7ade495c12349e3e8b6c8b68202f42e92a408f4fce5706e1186101e90a52d378b9093d1c56ed70675360805d0dcdf17edea3c0c72bd0b93036edd25d948b065a9d91610b3f5cb940759ca1c007dc1ec340e71104717ad175e26e09ffead9b7bd1a6b2c3d6b301a71bdc4fbb2ccdc883c31f580f65dee6fcb32f8151a8e37d62694976ba5a4fb464689632aff48acfa6824890718dafc0a5000fdd706d640fb028f5552736e4336c14139b0669ca313f0138c3a2ecbd5b88aefab8eec38fbcade8d076c391c3627f975e6679961200703b6b518824167224426361683c0eb02d9b442628bc6f1d868bd25e2c5a0ea95d0131702f3e14b537bda68c59b7c02f0d798a751272c77e0b1f92493f0b3048ce78a254c26562cacebc63200b58c46e409f39837e662277355cd926ef36f97562d7ad24eb5493d65642b114e24c58e580799b46ffa03648f030a22451adb384c588c50a995c481e184ca2bdb7a30c0246b1bc59f99810ec54b1240d6a2547cfb8087320d372bc0723bebc820789a3d24e72088a949e2c11e13ef3279f5e3c98ce33cb418415c78330ac6326894b289699e97df591c3f8e545bb02d3bba0c0c1bb58e65db1c32c91f5bf327901a6c05d2b152efb810d329489dca56d69f14f2b398db79775a4f932284245f523676cffea331dd9e26ce527bc321fbf7319199d6327ea3fcfbf7c0e58209a0e441a0af0729529a901d8ffb4aefda7ff312bdf80f3d2401ff3be113aa993b207a3bf85187bef17912fe0e6c70165357149cb53e8891384170e55fd6a62fd8c0346d4c982ffe2f819ca2541036fbbf90c3015379c02988ec040ce7d4e9ba617cfd32ed2add8b14ab00c46b8bdcb163c5be92b62266124cc60a2dc086dfdfb0c91e40528463ff83ef0b1f24f1a3ce1f719d2b6298caf924caccf50bf3ada9a6064324368b935a29b640b4eb74e322a17a1fe2f0644abfffe2201d8e8f2901a46b3b6ff332f7136b9135e460d729fbfb9797d06fc05025abf39217a0609eec9a32f696a58e8910f1da7310c4739932bf4186abbe57b566bb6cb6ab5dfd3dab6db3224d48796c1b87c04cd5008f18c3e9f73ebb80c02e7d3640e8277d026a989983e55d8ad3f5dedf511371da836fd173c9cc71054cda611593ecd3fc660778f1133444f6270b6cfc1fe341ab43c44cc40d09f9ad7ed727d61685c25ebdc524fa1cc1b1fce6e45fb2dc38cc6f6a765f5e9d53f3a61d1e38208edd8b98ae0f79481d65be1a83dc3d3853254c24555f8b0112634761b711ef09df73995f509834acc51b2388d34e3d9646d59c50ff9c5910689f00c8fcaeeee7de5a7f087960b2bd0a9321e2c8a3f94036e05386ac8934e1a83ddc70506d092b70d269e6b0059d712c8e6ccf561b2b68119f24b2d885eafe43dc61d35d6b05292c124adf35486091ae8f2808077e583911a40698a7113115398e5964cbec9eb7a0bc92d6bf7463c1ba9cfd51f73fa474d29d5ac584e883886bd4ca355aac5273330644a7a683be012781b4eead6fba8f6ccda8e4f7d185c4310e0ffb9aae83f64984b2e8c7b1b69eef2a393fa03d8ad8bbbdaa41a1b2b9b9967ef046c6f0238b947451a6f30cd485915f468967a187929524daf043d4a6617163c0175f6db9cdc76f9cb67ad7304fa5c5d1684bbd07850a91d00dd4fbc1f49f390e444c73ffa404ace69b08e81251c406f51853418a2a372b3bcebccdd15fba593c4034ecff5ad6030bbe5f1e7cc65cd1cd4a18a6d722695b2ba87550e44c0a38043d031b2f4d14fcf60bd0355e03a2909544c548751a031b28afd3aad005cd1bd91df64d418e13d09023911d71d37467a0e26f7c63417052ebe488f688f68dd1a90937486050f3f45c601d0f4890db39dc277d73ad4001018cb5407275abad53ef5c98ea98486a2f11d01f2def1928a3a10053bdadf3d0088925300363d05c08e10004b5566c1a748b85caf7a2f74ea1aea671b0991f0a5c84f704a8f93f39d40fc847f7f5fee8cb0f97155ff7b5b0cfceda0c2ba5d78903a9c96fe2dedf014c2a355755a6708fc52c35fde8540fc4ef42e0592c5db141934b11dc054c829fb04f305f86a958f802ea09ad4a4b4ca033a1a97e113f09f0e08b6d2bc69472af5e4eff31c371743c8b91054d615e0db977c12612a680038b2cb413e12b81c514741328e1988abc5a4e1db644b73d793855e669b1d3b232cf06b5d966757ad5cab14dd9c2202603be0bb65dddc845d5686df3d2e19b03c574ff705dcfe05f4b1cb87bb698d1fb47cec4c44f83fb33ec2a8637774594d1da7044a5dada55cd6a740fb9d25bc7ef1c0cd033945336260c9bba6d212f71eec032ce2aa46aa0c470cea5b09da79e88703143465dce334bd774f5cf895e3df143f558406d118fa34a834a7ef5a12404012c6275e6b52a0abed967b29f62bd84ccc81b8b34ea676b677334bcdd56f65420a490174fdbd8538a7d6d45a8645e0d2a964c9defe251f139e6dfa768a2b91fe24bfa0008e3c03e2157166f44b32c4044383b7650eef59d2a32795a2e104d856021096d8f696c44ee5bbd2a24b6f9319bac2097625a5e5988c5c10a77788d7e3c4a88c9f6235e1b5cc60c813cf7ca4afb9f0ae84506f9d05d85a0156cee33a46c153e63e70a59b59a81dc005f2cb7bc5e5e594981330045790e5803aff88c149210e55dcce7e18936e532547a7ae89eb8a20f0d256d36e5977ebddd48805e754cfa077a17657110b6c176247bdff501783986c78746bac6d9f6fc0dc60b2e30d5f40a2b4bc9246bb1cd525eb3fbdf9adfe40253284ca359877235fc6f2b0c6e449003679c898d959fb98f5171cb024581275a70d908a1c141a64aee21517830c01638d9159fed75954f7ff9efb81c109151bdbbf4eea52762e16384c960779d0321412606d45e71e5b1f68a8ac471b8cfbf9075c9dd6c4a365498e9d15cbde0d6bcad9bb5d8ce0f64981fc98d269f8cd2cd395aa85fe0f5f5af9b4e3eb2ca87446906f4046b34b02de1fbe8b68a81940f044fe1c06a1969465dd2b0e03415ec94a9b869050743ad37dd07effbe166e1dfeef20007c3955fb52b81f7564db1017cff6e144f9188a5e6801b020e0919e8abf7e817f326b0bab92f182bde0d1d9bdbc4085ae57718980116848168bcd0f77a12267bd7fc6e805a2b1bc50798917106c1cc504f202a4837ebfbf8cecb8a3c84558d042cfa39bf63b77c2a45e9bd96c2e54d89d9cf3968ec3018505b4d42261e29db50eb3e7d742fdbc6140fbd98bb5e53a5825124abc7a5bb80537bf52d4b5cf53cf37ea8ac1a75f3aea8a8ac60f7e8f9f059a747159669ff0d12aa9cac6eb962a6ca40abe5f8d8a5d5e2a2a2009311dea2875fde711ce8c71861ed0407dc6664896c4df357d815e1530aedbec9bd7824d98ca0502b7b880fe3d76c1f72db6d237bb264a15b3f5770e08bfba0351977a9e84634459b3fc3b908653599e33e86f19784803fed75e3da5fdda7e1088cf8219e80cbb8b625f8e083e3662dc5c2856f176eef58bd8fd103843d48520cfb4c275db8165c433908e10a72f044af6fe9761ad406802a13e421d27ab468c5367be452b642a57946094c3b83de505a06abf7d6fe0a2f2eaf8f976d133ff6f1d7cc3c5c77d3ae8670138716517e84a2ebb7a78f30013d2e0803704807bd1fe3d0e3d4b83359bb4fb8a9c86fa213ec017ce730893224dd3f0aeaba02dce191e09aac9aae5b95451f9bdd003b1d258328267c62a965cb6afb6e21a327f96bca6fa6589995a2b69058229dec3f16a4077dd26294039ef5fc4d41b35fd4dad254d441a1fc596dd02298f18e866b9add7057f2caa05e6b852f6fcca76a6abb2d52f56b4a6a4608fb4cb9390985a9cbc9fcf439e940ef5539eaf46770e338ec745b0aa918158bd99fdacda92d02db3636f7c46b4a14d7d4fb41d050a67f603ac75d2cab1eba94ae5722667dd8e851a27862cc601f4b3aa48db45cccf4d49e41934a25b50190625266aef706473474886ad70cf769962ef1ae44ffbe7e577d840d1b70b6381510d1149748d8c9f6682cd6a628e00eab4773f7fdaf525d33e3709e9d4696f53014a1110e4083e4b35ac41ed5eec39f4f183e41f55c86e55afe89353bdff7a15cf53dfa23705a6ebd0ef1d0801b96a07e77890ab15abf689e1d3014b6157c40db9a58be844354827d67fa0fddd6cfd00d57209f8a93c38b780749f9cd1268d50e0aa538c57dd2107ab87d59b1085b3ba8eb43abd5ad49a07f20c90b5acde72e064a9e53fca4ddcefde8d64060258a964c86e0c96a80f202b6680acfa1eb3d56b7556f4c88bd81796d01f32f293b7779416cb3ebd2376da987285ff714cbf20dc893ebcc4436d5cc5a17a931103ff2fab0978ea29b04a567bf2827ef305a3cb712d9a24eee84e2b10370584d1ae1f1b63876d08951de4b370981e5609fbcde05c08b49d0b6d7ddc2ecb1fe930ed64fbe571cd34a3ec182f829d2c33ac1a7cf6e5cba5e673886c8468830f6b12bbe8ae449552d54d73d6e13191eaf4309e259dde42846895c3eed404f8dca9a712e53f66ac9780a62721a62a74f93c896a03ab2407efdfaff435f03b4fcfb547bda6defa9f8889efd85db2c2063ee20c9eae6b33aa603706ba77aefc9e39e001dd5fa076065d2e7abd435ecf62481556a685556a3c41fe0a15595bd72a51f5136d51d5dcc124c42313aca25cda736f7d620455e4721e283bdfe58324e1a8b89ed5eac734ab31d58c4a02fff20342d8d4f48d2a05d08590a85cd3a6fe04b19669ddc2202185de92028b6fbd700788a10f49722b73aa7af236ed7499409408db59fa121d7af8802a084d68fbcf7e5753e8a441d7110c39725178e13ebd2a4901de5f8a96473eae0954c6113920a0e5e6c08c821aff95b696b5ac95c511412c2b815b2baf98ee343138026834def764231aab6b738a11b9b274274a696232082d2edfe77c683484a018a34ab20ab4ac36a191b0eef34ba3d03fd32ebf34bb11b876498b987f19a55a46f5794266fb8340e329ef5b3841472f7a27d47e14a14e2bbdad599a245433cef9e781a701cdc64271e280db97755602a964424530a93104bd0ab8e142cfab1c050a7b9ccd19d11efd92db3664b6d951a06dfe032ab7a1ae1482693ec028ca913e26a87dd7314075a1b8d93f570068eb7f65da3ed1175f2994572f0e6729ff02e9c983f0b11aba7b1ade771ca5535e307b60da64c53a4ac2eff5f379753584dcfdd28e7923f5413bb21d0eb34aec32f846db0f17cde04984e89cbb8784f712c15e79687e2a23e8de94267b27bd30d4720f502269d6553ba805eab072cfd1922f7298739971269e949ed2c7d81adcc5d949dfb975a1fd4024bc86cfe2779077debaa71fca21d45e14a118facd8742617a5910a00b62bdf656e6a0be3d4c48c10652acb8b3a31378768d7a48f698120a97fd3c48b5b8c8f6487b23690af56fe6d94aa63294887149648269bd68c257ea9dfcb11d625a9d30a37afc166d80005b5582520da334b655eaecb0956673dcc3bcbd9526615942df4c23da153a7ea3e75501915d08d479a3a3702117bed63ff1b0ecad737094c878812370836e651a25e70587c89ed4984538a37b84b496e382ea86db55a21eba905b44f12a97aa3f42fa0a3b625f24fd73277549161e66d3ad67467de2fac42f24daccd09435b7e173b1bfff20d3a8ee10a50a0f4b07579cd122dbb97bdc39538ba79fab3ddc0987da3b72372b8005735dd1fc60e343302ab0f301a7ad2508af508a45bf010bcd9b97a57b90ca997a0f4529878a976ab16f57346df0559e646d881d4c99849043583074f83337b4e9d2c72c45b0912cf01d0749f176f35bbd8ff32ddd0f7c3d739c133bce4c53d589b1e78f0042ddb234151fdab334429627fa54d493948b58bed644716b92c63c62e6316d5f8ff5fd2f9e54095c3015d4e45cc37c05f750a613c80cbe0eebf16d2976d5e5d4fbf70b5670938b5b995306385206dbdfd31d35221990d13783400d2efcffd7709952e7948e8f9cfc9d50780a822f9e282e878a2fd3356f2764bbeb56275e6f73c2acf984168875d42e5f6319c84c89a89e5fd52b987792fd8a0e0d7b9efbb1bf7b6a9c03f9748b5f02b207b654d5e92bb3d677ba57a99c84deeb75e112d3d3a48bf9e4d5687f12c1b82ffa6da30f5589ba144bbd307336b8231ad17e09ef399e7a4d636eceb510cf220d6886f3e71fe855428e610465f271a31dfacf20950b5d1d28dd1b965b3e37581be61d82f32ef4a3618f388f2da952038c23f5015253fa08d1d07007a1a7f8fef25f3176b42e262d581595087d517a2844c29cfdd40affef93431c1119115ce28819d3438f56f320c8d27d4313da7d8a9cdb0dc0da1f82772b84847fe201ca3314e76aea25937b9e18f2795349440fed5b7b27b7394948e0f39061e9097eca47e2c2098c21b860d16265d8da83d29f119408a33c76d3d7251ebfc584ec47dde547fea700ad0ddea125f3ecdefe1523c3c15dc020442cd6331bad381841c13e63bb7b992d9916172cb802f955f1ac09fd4087ecea999897a7e968fdd59ae85d755589c7664ec6329e7635d0f6a78cc18b042dce6b25f34b866db54e3a540da910e9926a89d7b5e22dd9e40e3fae3030e3ed60303200b2f79baf02c5bb732dd2ad3e3c1ca6877022a3c04de4b154b8822a2f4d8114a81a42430826040231ad541b32a6087e346475ad94e18a45fdc42bd79e942009727ac91be8f248b2ff9537285798e29ae6330f302f81475c6b461299a82f92240077413b3640c5c1a9ddee2476a847376dbf1809eece8e7e86eaaa721b35df095093347eaa6a56d6c9cbfad723b5529e335a49788a668dce78aa47907c514368d128ec1e8adbc17b620413ece077c4d9da58f49c4e0a7c4a04505bc5c4867c8dd390afe6e5264071f21960e0f3f1bd4a06f2d215e4c804fb19114e31c74918365e4474ae843206afd8e0820047c7c9338625897ab042ec2c9e3e444055af5d35eaa0df678ef9ebb454985be7b6ef7a74072fa1f7ee8396f2fa5174ba2da9da8fd4f5520d087ba236835f760dd23896f4f1dc3cd0a73fe131a02888ef15120da22465fd14a8f17449efa8c6986b4eb1d1a741bea6ce68418a50167c5c9212acd3ef4e3238e50361290ab7156e92153e444cdadc235ded60e4a3da0be0ee04c5c840f6fe10dbc2456c50cae1d4ac7ac9f83591a9b6e66ea70c01c1674c5b1922091e3159c4c63d1bd48b171e68fc3320c5376e41d32dccee3d8ff53559652331fdb72c0f80a91298d60bd643afeb30e86095068158c5b89eb613165846b15a39eb04922d4d24edf7c8a90723ec565aefead9ee57de2aaf5277bc293dde9ac559c4ebe7515d2242d06789459446ebd58ffb3e91266c0311c094a040e34587f09144fef19fdbb0f554dbe687e480b4b2fd7fc19ee3f8a2a9282109d516fe50f4df01aca863d0302c2adb05a1bfc46b64d1857c077a5058087ac5bcc4320b3b00b23ade2f917acdbd1419a90c60006522b00484b1e86430aa931bb7dae2476030c550a9cdc2da0a01d17c5cf0b20ca391d5935cd6b7efe282a012c9ca81caf4ab04592d5638f0ee13ecddd50dae9bae2b7ad3247fbd6a1488da219dcb563ce73b1cf9e668dfe0baefc5f7d8feea4b0585232cbc8c24190a81f46ccafd97f1c8e4379c96a9f6d4f25c7d58c1c2822f025e1c20805cc6519aa2463793779ec5c66e4a6d741b100f252e1955c4bcb2bc308cb09380c9fe0f1c789b3d5489002d4c42199139cb5adb5ac5a360c9e9c355f86e5f0c08f65109841197967df9b72fbf9ba514e4e09475ccf9220e0a9c301a18de96449ca841c19563eb28960aa0ab4dd8d9ff6200650652d0da4f5f46d4cf204360e8de7c7790cb4b7b7f416a0527cc54d7c991dc35994ada5b59861fbcd27c61c317061f9a6e48c7e5b09cda084ff2fce9787b847c1da8a6eb7c4379c3670c679b13197fd82491176312257338c437fe277ab0d392c96b23a5b1b1ccd674e3ab3120c71d6a9b0802938c7cd0aaa895303e709343bb6c07cba234a0c912783ad2d1a26363d1518b2824356d3c785b969ea5c159bc0daf594b95f41943dfb83b4d60161295285e119dd215a4bda41cf04cb8015c439c0210c464c399d938faaedf4f2a08dc29de4a8966c4478fa09bee6c6afd1b6ad22063986e7f97ef3d3aa8d73e95b8d5f5f23847fe5e52a97b1575d9f56ca0402eb1ff317af4bf75fa898df555d23ac54c3998da115408e9fe53d35adba44cafb923b2708454457aea797800551a1d22e63f3ba718f8aeb3e899dd5223039923b7bb68a8c59a651a4ccfa74087e0b79cf62437ee7584c3d162513e2d73ba22a394aa4b2a2bc35e70394f8bd866da26e6056acbb022f3c15cc227517fa998d5970828842f5ca9b67433d5de4402cb0c36b0c494cd5342065075870935aaf87ed065d79b9b278b9278e14a2b7db0cb4505491f4593982eded0831f70274a0af197e3562d3967cfd4dbfbcb07e9d208dc56092f625143acb320b1b12dba5da88a1b9e32dd67550b3ca6fa7fc7424e050dc350a1b350624396e94263c83844df0bc0dba28dad137a1ea41e5e552912ee5d2c7614db1def73ca8152756cf0a8e1a10349084a8aa91b1861d846c6a680d8139bfdc83bb4c5788ac0e588071d2511f29d7d68014762bce337b442100d17f730be16de7218872cc8cb84b9b11815d76cefa13081d2ad7df3159d63943a0a5732648e731f318b80555fc1583d325bd94e32c7d3fb8847c039eda8cf358ea6f6d8933ebc68f120eb8942a8fe5bdbd49551776cae6356d93cf14441a952bc9669b06e5346bde1583648becc626c970acf7b643c93bf5d44418997f12a31abdf2469824642a5e2445e0d32ce7aaffe18da77c9a068d297533d4ab687ab928b256926acefc04665f76bbe85ab6293860f6ffcc17100f6cb27fd5e2d4d65ebe6784405007e33433db3032deb061c5d26dab54b6fe1dff0ef84ec915e524f89e4f945ad4f1c95b9986b0d2ded71adaa82a9483d65917b28eb291a4b045a550f19a8bc258bb1fdbea0304ce2170e790a662a7970509d8c7136eeb54db032096904d184d723618022f13f7e79a131cfee29d3d7e87bca823076e751b02ee65bef9ea2ac240e7a69f47ba245102c329307cb3826a025b2ca56162c6186c41272866321bbe08ba22e9d02e043ab0094088a9d443e1e27b3a560a23dfec2ae2ac2b41e02cb09388292ec65bbf47c223b16b8d6b22e8cb15d609f1488a7991fbc8113cc6a5cdc2b9315e01cd2e60d79cb664c51db6a3500ac66e6f2d559f2a9d63100b91bfd7a57b1b6cb5c77dd4dbb11fc138b084ddc996dccdbab4d3e53fc0bf309f4b329769e847e75aaca2da4092e1033cadb7971e3e3cd0cfbab2ae77d6530cad0ea76b44e8e6c4b09e939f1b333c03f3de73f1a14d31a40a94f870ec1e9624e791f050b33252d1ddd076cc960f46b06571ef9b4238b840f8103b33cf845704664a0727ea0ae1d26cee8b8f51871525169c19ec5550f9e5f06924ab2736a0c069f6a765609c6cf6420569c106499eddd3c10fe783335551b8d3565dd7afe49dc9edefb4f1d9b41fa844e9f6e1546e815af5a77b6c140f40addb9097bab373e8bf482d1dddfb36556faeee009502dcbde0bc4e2a3406454dec8b4b0652fd19f80666d835472cd2bc569e14e058613b965a9a02b98d189d872931769b557502f5730cf8a40403c7b4bacce3001b4091d0f85db05b1aa038320a687fb7fedd7a39de5bfae34a7c25462b660c941e370c3225fe05c4f14d870cd9ffeca5f9b5d18ef06ce1b2db47690019469371c26682867560f8c4bf07bcdb7820f735981b7f1a7ba25ff6db00456400cff65ff469caff44f2e509d7018f63050fcc21f4cda26a0dfdf0cb5bd25435442e059b424681eaaef405971057c8e90fb225a320e40a7d8beb6f7e410c10d54b81c1f001fb2db0ec58d77a78fb16af08fa886cea7f5542215068a32c3ed29255df859f84c291de5f51a8969e4078e583262298b46ca6cff00caa0621b304a3dd6fb13f01af106fa92b1df912cf32f4415f7515edbc31be0893e59a1f3ec8c607054afdd86aa718b95fb928f479c7a306fbb18caabe17cc1dadd46b38c66a1864cada9abd764d0f38eb9f8d071f2af068707ac3065d6235ee7342c0a481727611441c93dd69b96f749cbede4b8655e48e758a44808158531a402ef11ea674a6e9d32a41ad1fd76a234eb9bc5b74af0a3c750883e4c4360f0e8e603c06249e7e23057d7dd37eb58ff04eaae3f7ad5427db663f4a52ad926331932d675cd090449cf0181e4ac5983d70fc5e96701dc388d1fa28a4ad93df0887c2bbbb27121598fb10e5133da46aef5bf528cf7fba12abb2170fd0e8d04a048efc542a351f275b2ec8b9f4a857ad3276fd7923387d07e90232c4f0389e7b5e339e611e0a84604016dd5fc8a51f9135c1d3c02af50fdc16efb476496ea33c3f7fda5078a9273bf232fbd39feef777c649b21cb600ea60f5b9ff50c57e9d5fbdf708ef70cf508d9d91e0be6ed45e77c8d627dabe48c9fc77dbc164366d891a181d5591f3480c553d2b3cc54294efff907467f2c3b4f48fb1ce5885a5cb1a7ac8c391ee85defe3fa6a561b5337ea2a1e83446d66f5d743105386bfa7e1f0682e9ad29cf52668ca0bb9e1ad1ef54683b588a53f0a2744b881b200d3b0a7e1bb399f317011bf17c1e0cdd2cb934b6078b465ff0d14c84b3e3f59c4a1d400fe7358450a3ba81dcd6a9ed6c2f336cda904887963eec8f7799534c4d185030703f01742f73f471559ed8fd08093bcdb4f00123b9ddd1624eb5cad77729ca33609d2b8eec4e59017783a4b55c223db180a75824d3b79d0f151f9f107bd2bc27e00b93cfa9c0a13a6422c0c3e682ec9a07f4a1a433277acaf4c66a0e3fe6a1567b69b01fe3f7ffbfda5e4d012362ecc0f468050d7f235d55577b95a3196098c8647c1e6d03096b6e2e1543c7e5c69df038c610d02d9f0e6feeb174b4ce86efee058c116e4ebc4913c01c00711af274ffab22a959866fa3c0bab4c508dce1870fbc16f2966db2d86f5c62f5a6b514447de009bf559915a7a26a46aa0ad5c627f0fb977518555e03fa6a40b94d80fb5b00b4005957140766862f57eb886b394598c1ba086825df3cc24ee0470a92936b5f05dc205020eb84234678a51a78fd0e406424473e60fac8e3f97abfe36a8b092668016a403e5d765861b27f3c2257987bf0cd9aeafef33fedd27a2404ef473405a56c5e22826386b0c9e9ba150d66ca3adc0118e884bff0b450096e9fc0011b91ceea8374344c93c46498fc1119744043ab4a6379784c4502211e0c69eca3ea3815ca81c040b4ffa9e7d39f558efff93d8a4f384e17f743e12958c9cd1c6b85b66d63b44db70f26b11c02f46938cee0983f270c2ed201a8beddde090af51002a9048ce77c0071784746de915eb81ff4ca2a5ed1053af26513b3865e752232bc13408fc3a78e1780b2a97ee7b715a8000769f93703968923693c6649a6613eb6424655223aeaeeb4cdcf1c7cb6a1e0f236fdba0d7839d02e955481e3714607994537bb6cf8a0826fde28e65a96580922f01ba3e45f18e4cbb73ed9e708d00c1b1418bc23607bebe4fee91f29f9403023a46470c6fb22c03d7034ae40a59f9952fc36498f0236a41e1546b9567c99658b436a059a3eb41f6df8af1832b1d64d58adf667c53284e644cfa3d499f99f450ea140ba84a9a5fa2e7e8d4519bf6dd1ab10d1afe8707700e0c34ff20843545087fa862f163e390542b2078fe9973e328146b51a17042041d1130147a44ce2b350b5a668a545a29ce7a25049efe2f049e5dd9e9042aa9730b9ff8bc94518e19b0fce57428de90ce3467ff3d63603318eb12847b54a0bfb8741c5bd624c36341c82bc24e632b3582f674a9ce704167c081f57393e88c40eaf97768c63872ebd565720584df90e8cb63236595aedac4f62431a7ede803d197e259e8344046165f9d516b2a9dc092b76b96f825c9d77965e9f912b910f7c5d0ebc0989faec88da7738c4704cd056e1f3ed96c7f0dfe055aff6279641fbce675c87fb168ab04bbe62de4ffc0f28119c3ed92901d4152235b03c4a08ed1ee76f2133889d390f7c740c4e79dec2caf8387fa92fc60cc43792b468e6d141d8739a16c2199fac6fa89182b919e0265e8014c14cbe3f183b4f98a55d8b9cc9d0af1c5d8239d707ec3af621d2eb2ffd64703a9835ea40582c51b608d8071340aa4d56b56fa04db80f46c003b28205824b7fbcb02cd8f7ff2119c032d197498812ef2f61c8928fd3ec534aa868366b8bade7602d23f6b82ed9b42c4e85d4433be8697755d45c720d097ad7bf33b2eae6d683f61c0af8ab637daf677037b32d2070ed100b51ee7e1dd962e75217bddc55a7e668fa12b7c22edc04e60af3ba6c6bc83a22c632aa0027409aa2e8e7c32857a6d9b7811a8f001a305736b0b2eab91d2c46a3875d5dccfdcdcd3aae9a8aa888848a69a8c4bc2df15df7eced3d4f1b72f478e09ff0493f5241a8f5ce688480109620ef1e6b9fad4d75d1029a34eec21a8a21c333273f5ebc454b5958642f0652ec737ce7a6af1e8c60df79d58490b0d189e7df1cc8f32143831dfc3844f089e8887b1f710fa3e75603acc82100a13804994fa3035d02b91b66a8df49ae844695ec29cc250786d554f431e5ac69d566402f5233387f7b68fed727a5463b57189d1d1483b5c681bca3e380635da8d3afee285789d29050b73a8dad4e5c5828c681701aca4aa8398aeb56fdd4cc56bf7e2b71566a45c25d283cab9089c2a6231ff2abb7f061e0b00639e63c84a3d62e75856af8ad4d3a89961e01c8c46c91c91cccd33ca4fdd385cdcb92435c24571e968d1df58f4701eb9add1252e06a7498d7e4c6a4bfe159ac7e9686f773704da8a897d953fd90dd0117cce00108565b8fd4ade691132772bbbc7bdff57e2657dc8d37fb2d286523f2276ba4aead1a834a37260f6b957e1c1a72040fc390f4e436c8753f39d584118833a69ab4035bc098457808b156ba1c5f52cb4c96e391ededb63f8b5b953fb03b25cc64b77ef809c46a1dd731ddde3a6003eade6a2a076e04fd415462836ba0c02573bdaeb5261f19258c3ca32438a9660974375d80ca95d3923d2d245d54ba6ebeaca102acd9296a8cdae3d7f7434271435f7bacb51a896b7e8d1b8988d6fdcc82fc90ca507d3474099fe01917394ad52a4f4e9d4f69fb7002fa0bc4c15855f0f86996ea83379fc895fcd8e0b9334987108029fc270f402f4aff165a3cfdb001b9679b5f16ce4118ca1d55109858fa6934deacc3ef6139636b75f178c6fa93ce665799867503bf1e2db4d354058737939ed02632c0c38bca7c1cd47262505129d7dfa4502793023efe828480473a8659fd8723797c264076761a9532a1770d3da5fd2264a12d81adc7bb96328ef993b99698338fdb49189e29cf11df4566d2811a0c57d39f41ce87f72537cea6f1cbc35fd2e6325c26dc1a28ea11d307d9db99b480156716f2f6e5bdec057bfd4eb155e4d1859e0f6131bc04ed667006c182103546c5e2a43e123b5a7c4560dd9978aab4ca95bd741dfda19dbf6b408a8f0b596d2381d8fb47712dad6d79f54608fe7b3d08a5c5f0837d3ae69f480871e2bb50aee9297aa52cd0a2983b9b3f9180a2c85e4eda7ecc56d15192d30c8dc5f1a4d3fe51ad6e7effc898b6a4b4122191de55ce52501810a25256d8b8d05d780ed478ed76beed545ff1f037853cbec7bd95fb3d0a0ae68228e574e1d9bee3de8de5f96f9c963b15f8be1ddf6578d7bef3f549fce1f296c31d99952e0e45b3af7918ccab42971f120a8bb74515c470c7c1c4c26f407162e516acf9971850325c0093c7701f99680437717f7522704bb2b6b53e0b7c2a9b476bb63640105e6b27e293e58ec5056190f5fec2a70c5de13f599b84e2cf006ab40c320364e7afa808237dcd643f6162c6416bda394c382efe0add10a733fbdb35d793b028b863bb586ad9c190815d02d1619de945492f5445827763907a1149dc527d11d16f616d478709e24b937f29a633127dfb29f47a6228b671c4cdb0b71f480be67c7552c8726750fb8bf4196f9ac256aed9507d4e6434db57fab89c06e5b0f1ecc13e41daa01f44ceefa51f5495cfc917e2e32afb8fce20d36ba45d4af04c020a3d753bfa87711fc5d9e7114b87f25c0431bd628b5f0aaba7f9c5afc1dc4d78694a5a7256fbc7a4577632f81e315e2d8accdc6bb7763aff7fc3e39b49e4a0541df29f0861db97b0c3eb57e258788648ac15be0708ff2f87733674daa3b3af4f547daa37bce57acacde5b835c2079f15e1e7a4b8afa6e32b100a5f05a78b9aac673b62778d0be21d484e76e5975ebf9bcbc5e46f83c7ef2134949aa1a2a5edb2581e207f4e0bd19e39765daca0624d929260ce071da229e1e0e78d7384470f45516d5ed0e3a0dd84d6a4654428bc2a033e134f61bcabc0c9c9ca54bc1a1ef6021ace93300d90214e6021516cbdfce3c26232769e8fb3ce2320afb425866de5ffee18ac6e02ae9a67b1b7adc439a05a44a942f8bc8322546869bf518ddf573d395c4f4ab385a108cc3d93eb0c420f006e684403343804c07a9788bc18b467935e680c4cd0d57f263bc57b9fdc5833807e6ea04f095a13cf5459bd284c61699b5525a45ea79ee193d7e9fb1876e8b35487240d8652dcb20d2ef07d921b66001231f3e0c8025634275528b57e3f3d0547da5eb35a0f850898a971780dedb9ba94e906f9ff64ae71157059defc44db7bdf00082d253820e9b14c7d48463070ef69eeecb08fc9688c69287028477939d15fcdcc8f470b5e8b522846b7005ff796e4b44da25afff478eacbb0d234b374cb53854eda3b0e374ed1d9be07b731944723389d0b30e403cdfb332e98db2c8ae888bf331173236cd07957b2c20b98b14e3de367f122546ba7077c58360e0181742467175fc2bb9afe540a22c3e7f0074c9ca28d153863b7c9ba129a8b972e94e5521c7dfc3017451b0c4b87ca496aec664754796f072d0a95cefa1cabd9e20264abb15954a8fdcf9c8cfc84ad279f20f9e03ce6d10fa7d13f331892510e05b5748c7ce9e3bd4d0f7cc0dc2d314e1f9e3fb023acc104874ba10a686e6ab5f319ce262a8fbb67a10eb1e1862ca5ecaceeb1104a6d61fb7812423240f8648ab95a8c5fd44ab22fe0769ca2835705f62e3b6a4f9b7c976f25388839a65db25accc73e63345709d0c1ac44c52284f90bd7d2c45fe6a3df2a3758057e7df5a8442e7857e071fb18c3edb68737150a3ceff27d30c1291a2e82a8e35cb161335c398d6e945a77d00c0c2dfdf061282eecd28a4b45f8282fa9771958755878b2d3f57ae1734dc9f663dc15b8e27eb51fb3281abdc61b6468a67864482f5f93dabb5461485e8954202f10a414fadcbc09976eda6054980b095966d2d888d9f7aaa4d9c39d4444e1563e926c17aee5f391154ec4703748ce2150c2688c69f49677a7896f6c374370db4ae3591f06446bae9fa15fffaa7b885b3e455c8b23f9add0a37c08ef7f9c050cd9f897ec771bf49ce65e7126c8de9adaea2e574b50b8ec5d583134248099d16855a1ca6f7dc8b7aadad6b17061e467c75863540691c7b9f7ba0a129217935aabd976e7f56a7dc24893d90a4dbebaaa80ff39c3b2e2d35ee58d2612bd1575ed49a3333a86ecac030d66a1288b57609a03c767bdff6614bf4fa8bdc6ccd0a90e94f0ecc5a96d1e2ac97170d554dfccc0e8c293f4ed7afaa8fd53169805e10b0d5947673a3e954f1b94df1d00713b9073407596cf79dfa9a530bb572db94143063fdb6f89e70e4fea849688feeb3741d4d09f9ce359feae53174390ab337044c8d23b7f3b66da6b541e4bf1aeb82828b0ee69b233433d6b7eb64606dd5162882af27485fd25099262fa1650e3a8daa640753d95c48c98f3511623e1b2ce537435d1364448654995cc5361368920a98734e902fb9fefc2bcdfa2a18f371efcfe9dc990cfafb45619d46419eac151836e9b51f480d6c6653fb9e1558732a42e22993e9875546fca63541b78c87db86c279cb01ab11e74ccf1a3d090e0dfaa086caec3be61800d5e43c8a070b4c2bcbc2397647d12f5a08af6e89576912f67ad9ea6b505211b95a0732d01a854a37827d55f04d84adb9bc57515d8a3031ccd4d31df65c5b037408b0f92bc01bf52af7d7fc3be155bc220182a1764536f7527a4701b6ab686ea9fa794a0fcfffd2ba5450b1967da03f5e1fadc5defcead28203e21db37f4bc30f6dd4a3d6fa5e03bb5ee776a3a3be19f83b1fe144232a192eb6be0960823f40b5d83a153672026573a42416667d20920211ea89f8229a14cf8edf2d7efb27e802eed5ffefe33272fba4187879175f5fffa811698c179bfd666d7837d2b77ab7dea37e7499217463bfb338b4682a44b2646d278699cd0c76f032a5331c3138a316b93f8930e0fc6de8c7747461b60372bf128962833fd556b89462d4a9fac6c53b25049c2ff02a7ee3d246fbfbd5df0e506c2033a80be2cb566fea489204cb1d0230621f5d2647bfc1f54de68a0e82b431208563324f1dc9f10ac487829f8d0fa5536424dfdcb2c2f3e953cf62eb2c236ac57a12e962fa8d401eb272f6a5b5a297f3c3482c59e8a4bc4c8149792044eaadf3f666f8031b3e3cf2a31e6436e172cced741c20a2bd876647aa2f4ef0cafa8b9f91e45be399555113e942644d96739a54477f9b0273f1967e382cb3aeb8152c2a4e53c15b6307982fda68e4acb168276df3dae624cf4a5441adf1c6ab9985acb18274893940e4b81138f2dad516999a03aeee329a6a3bc903c4e110c318885deaa6fdc51c72fa898966bceb1201e002a001255113e232311ff87c75e9baf5d0c725ea4aa18b5901f075a704ce203e722a1ee2dfaed63f3aa72e45d87686e3a5803f33e2b0f3a016208c916d8d9d7f521a608b5ed9caf37749021d9250c9a786c9dd09c8b80929a844b063576b4d29a186305b9c0edb26aaa0c4ee847d0e1050d66ce59f260e2b2396b7a064fda5e6ca38158bb8adf334523f7284204203f6054d4e9099c93f62a37f69f1ddb03d64fb08da5fdabd2fc1441bb1d3e891ab05672ed112fc12582f1ac006bcaf7d25e4c69148dc83807c4bfca6ac96484086ea3059f4662cc4c4d2e2a6dd24e41abb60b59c26e4500a9a1e65d4953931acf8480be0936bbdb8181ee4adde79a2bd0d59d074e80e9481f4257fe502c1a12baa2ba26fec44ac6caf19628222580ff6d43636df9d171ca4ef4d7d1685134598a9a9660862102993f6efdc933ff125fdf0a9658904ba4dc77f9a98e4876232180b6b3da58a3743abd281bae02f7774fe1ee183769f23c284447170b6e79116c475e5cb62491313bd2e2b8e5f0ad6880a6248667a0f4464c2dfd10d9ff6f38e330dd530ce4583f4d5c8834c38751ae4d03766362910c0fd94db1f944b8f76b01a302c81690a51dc615319ef71150b46567864b4c090406749a1888a96cb95326112362f6987c2b1dad3d0778ddb191170b5242742de6ecad73ed95f4478cfd0bf419aa36882901654c04e4e640be73a0fe12bb2c57f03dbd6f13a1ce2952f4163c6cfa994d571cadb0330f56d6ef6a0516270cc1e8d5cc71dd6400a5c07a96ccdc10da1ef2edc858fda8d40e55a817eaba5375ec7c04f99990c67e8e864ca43b978b25c9b9ab535948cb8ddaa6c84bf3d6a0c532f506a8c9256c8965c7a6f6bdbddc58f41ab86077f47ad58c4521e140b1ce70e945c93200978f275cc490c728fcc10da544f7e42446b0569163ce17d7a97f6d3c70cd4ab7d39eaf45943fd5447d47beb7b8b1af89ff757d42b163d64e2c147ff070a7da6512fc23e115ee3cc3d52241f1ad7a78a3cd45367953548508322b1f426c503b027a2d4c9fa10f7ccb85ce7de7c82398ab56e71c9b8763afcf64354bcabd3df20c4d25d479b32f796617d62164d4e63759308a70aadf91780fb3477b438ca8009115dfe6ca70b429f3816a6999cbf21df770cecd6fc33ac78c73b8b2ea94bf73d551c98de8354c3ee80ba95d3a868e0bd4af056ce0e3ee985c80c0ad2d01397361b17c92dcb3a568e07e04f0ebff598c0734ca54a4046bfa47f3bcba234828767eded7e9c2929095752b4cb948d914e6a3408f4b41716d15ad18e2df9c46509fb6c307ef34b419123ec9b5ceb22b0d9771f37388e66603ee09456487a90500ff4e5636cbfd12b74da57eafbe33f12ebabcdeffdebf7205f7d8521227f39079f3fe13fa9223f83caf331ecfdf397237586de6a6dbeb5c4b560a185d64b32b894ebf636a4fcf9a025784f90b10d3a752b1a69b61046cf4694da791930543a98d7fada9ae7c3f46f54e8aa004f4750a6566c7e04f37141e6ef14e426483034dbb043bc24a379232b67a1256647319be3e99a033be23a7042bb3237adda543348cf4c27fd73af7978961db4924840d44298d58722f10b215ee5624128367381953985436150063963c037d61cee427b9d232f1e3bd92daec2e4d600e336e79d620674e350456f8a31d32bb585acbc586686646f163df943b3b4787725f6a71ba324e9f323ed805da7ac90cf60809e7d101270d5f5be0c4a74552fcc35c853733ed5d508562138a4e09cfb2781205a5daf9df9800ece1779f366509e41383cdbe64c55a84903fd6daaeabe35842ea6dd78e7a2cd15fdae0a3cea4f7dc16d9c6c2269a574611ab9c7468ea66b718f6e10fd4096f9fec31e0840cc11f76716623042f9260319d0281d18dfc781998e1ed89a15fb2b19bfd8620ed18cf4f498bcc321f818276fe9714bbe1fee0fce4ca5fa66a339b062fffc60469f6b497c5ab05d9cf32c0839a35e2402ab20c2ec1567cba82f64cacbae22621c1beb79c56f30aac4166271066aeecb7ca0f400b77bf815c667fec514a4128159ce0486531d4bd1fb246bf7222564bf640b7bbf5aca4dc45230a054ca5dc78d36baf0e7a5054aa419dc00e395f2b211f1c39a75833481c07bdc4749f3ab73cf660fde10749eab6026bc4a82220232b75c8fc9ae091c71ad80bbf247211ce2a0c19b4770baa4a4e5aff668a12c56770bbefc845b31e09ab5d80354b10a06aebd08dc7222dcb0ef3901dccae925588c1225d9b6755f88248eeb1b422f5074ba6720863fd2a48033212984e7b12883a889413800920f0f3d99a403ee57b906a7ad86ad45445e834ad8e847de83ee82cd833e76f635fee85339b66ea393c9ce5f4182edc94898530b9703f95a842c49dc50459bd38b77e3009c46292428eab03d8f44ea75fc3d550f5203c3c3d8f8745f2eefb94437474df240fc7f505211a71e51ba61a152d25cf038ee8852be803ac911a54519b89a3a19e38afae04fb4f304e942a08359ce68187ac28def9abd8521ad298d9e234a991f626874c18e3a5815d3faf84c05078ccc2096e147217d258514d76b5a3690f8b3fbe373f9f4c71bdff2040f8abed4706690d443c1bb2380657fdbad899a251a67b9b9341f0811bb46c65c954d6c72bbf37fff321f5def4a50964af9360b17200ca63a49c292350ac2a02331886a316994d3592ab55bdda86ec9b521db571a03fa169d35de6ef3615e1b5f262c433dceab749a8d82905ab422afde67e8b5b225474fe99d0e88d4d26ce477386112ca62bc87ed0eb01f3f665066a4d7aae485eb11183ff7c4e3730c949989cf6ef52c190331a14dbf6f23f5e01c303090bc3d182635abd86f000c8b46b72e1fa7b320f7238a3a8789f9b517fa7e2cc8c2645996490b56c6a3abe3a5eb59325529f8245803e66b820c2297cf852cf3cf64d9c24017b98c4b7d012c31527423c61d6c439d3fbc4ca7555ac6e9e9ec3c8b022cc20590b70084a376651505781fdb74a319b9c758cb8a037aacf96879e4b60a645ee56456360059802f03913217748219a40ac9a53509c5a42705c023312a9bd8e13645706bee07d8d62801af0a40035ea17489276519f3d3a1d28f62bcd57127389467afa22672a096184d4ce8e7b8a8aef00b6ba608881b90ae937dd0edc336be530826bb896f7193c09810c1ab4065e10982a8dc689e25d85277ad90c94d7bf42f1a2444210d60cfd994c5ff8584b43d87ab555796ba21f78e5f37aad6d43dd404507b6a9aae607a041c462e82dc2a765008e3d5d05cba9a5733c4ff66f48985b7aa4fbc6b1b0f063f5aac249013b1a142491576bd93b1f7c27e4dd0ba0271fa73ef992100e8979b6581a8ff3bb48a9971945920e8af695d17cf02a17fb440c4d522830b67ca7714c1432d102bdc08410032f3745f990b84ae042a14b86dc6106ad67fbe40348c3bdb2990e80b84d7730b32f3c721127efe6d91bc1054b3f19312bed394f0ca103d0c7a7dc4ff53a0f3cf5c0b2ab4989753b096e08254720212e3200fca0582730752d717f9cdbe2c8763a1d764427781df151f61b5dede431de0dce0350481db97095ecf35b4b24edc364fbc606dc0157c4b2ae116495c30fec8e4d2c4caee41614795920aa5758db3d958d35a811b55528ee107f10c5651b105dbd8eece4b3f634303eef36b0e786cdb6428c1472a304c592b53dc3938c3f0bbfe87cbff6b8bb8c981b0c9e919a30ec8b47e3c609b8d91f4a29120e10feaaf3d0ee807f89ebb4402417bd6cd2c8e14b15d69bfe9ea22c8849ad45e5e1482ffbdd9f81b8ed3382d187741ff7b20a20554a04be598a8b74801bfb18019a10a179c525c88a4a09d3a595bc81e01fcad730b300b0c218343537fa342ef6739b9cd04d9c6e6821367c00e452111ba8b1bd8fc96a025b7d4d61fa4f17c15c9d759e2fc6abf1adfad77eb0ff8a49e8b147c2854dede3e84d238fbeb352f96546fc56039a6627736fd13c64ad4dfa06438c153e17803f990fa5d6a24943f6a0792d945611af44803641dc748e930e19a0c741ad8e934d07e15bdb28b60b2c9c7093aa7eae7dadce6693e8efc8e7d6c161cdb1b13eb829b9ec9ad3da60673eccd65fd8f01f1a34663f5353efca89c883f57f2b0480bca736944596ec21b047d3c4282a2a3e54bf4029a1e0f9a760aab9365b471bc9bcf82c92ae3464958a7f74018304692381e1407adf04ccd99333e1a3fc70caf2b158fde88cc1a8a7e11c65bd13de34978a27a26784d24229a81a1ecaec2eceb9ecf2278b5a60f8cfac995bd006cc3928fce8b2df3ddcb3659d89a22262d80143a361e7663d23801cd08240f4bed84d6bd3e98f620983b33888a785e0a048e532f4af7395bf0cca87876316fa537835f478044da859d8e10132d234dc9b8cefe64d9e6c95c6329b3ed12d980ae99efd2e7cb43a6d826c788c618d64d28e2762b918525c8a8c8068083d44580c4d0ec02b6746bf8a6800aa25dd0f9288f04a5b3263ff92c4dc21cd198c8f29a859a829f5c041956f50ad2abd4cf3548f2f2a26555f6453a95fc854e304240799814e37cfc7d6e1311854be20b853043aa39f5afcb437d0c8a9035cfb198d3cc69361ba8d9814dd11ddece8181d88f018d16c8c034f0603b4b6774f3eeb2a03aa224f0e486aeb1fcd9fa281351537fe2638c7ab06842e1d2808f387522743dfa46db62480d3eb9a009e010718bc81b58fe5d874f24272e63fc840eca4b5eacd133717f864434f3b9fb7ab479e42ed422c77c591cbd82d3f17df7f52313fbb18e9be697886df735170421b1801c684dd480b046b8afb3821d7dafd1605e804fb4b0a771c25f7350bc1556dad2955e694bb3f4a55bc19b13dcdc045e3184d00c52201e59493a741c89ea80654b02ff50f1176a8a3182bfd96ab4a80e58aec5e0c0354c7f034ef3320429cbe4929e38d939ac1b7f15ec58db186072569b18f35e6a078da9a36b6323ad114208217befbde5de01c00c770c430cd785595ea7fa13cca7a43c89f914c96d4735ebc239dcaf530cc339f55fcc5cec388dfb9135fcfd8072255718fe9890f704f22c9ff704532421b16a63c12aedf22d3f812a8924541a5655bc8079963f40bee52c9d6cc9d7b7c85a596aadb5d65aa912ed5114a5b4089470466947aea80e0ab487144f3fb086b1c2595c9794f236133be7a59d735a3929ee79455a855aa48b2fa23d4829662f57307533ed24e212471823f341bb29467819447837b25533f996c7e42f39a795cfed04ed58c50cb497d213dd8ed40ed395ca74472a4b9c83677b38e473a2c43939fdf89b462247e2edf5075dc4510697a401004d9ebf6800702a692664c90b000068274178019d5dd062cb69378f26860c22faa68853ae46e70fa1835ef6edc8d70557d967c6c4c54901e5eaa63a2174d0bbec359b981ee8a8f689a5d0704c37cd0c8206637e4839e79c73ce297435878470eb9a4aea9620a58aa48c0bd555e9034d8b1dcc114ff89b6692639ca169b1a3a14d9ff626a573d25961ee370d327d62bd30cf9ff662cf9feefae38ad44783311f4d8ead01e56fc71663a4d075cd6ab935befa421a39d017616bbdefd6d62bfacbdb3e44258cb2a857f4d7d575a9d42f8b3c59c4a2c5c2d62c922b0831c618637999e54d43efb3c9f1d4a8c5e967d101727c8b572147ba052418861cffcd25f8b348d21a1461d0a79ab3d40b340cd488ce81b6819e817681f542c6c5eaabd5f1a559618c57b88f5847d0c5332fbb87711bad8e5dacb02773bf597b449afb5525995e7bc1bad68775adcf0b7ceb136d245b55057045a34ddd893068e541920d32a53040aa29a854c81802e320b2e30b23c3c7b82ac9322ce3df6bfea568aa0b5b89220cfa1787d64752a2152600fe5e83bf140d96c12e28518c18f631eec9f691b5fda48d1a08ced03e228b34cbc5e9a59166c9340b661a5853730fb607d49a453ca0d6696a6eccb308ebf4164808d62cc26209015443936535975c86615793d5608c7fd36d84f1eda3f66a5dfdebfca2aefe22c36d2473176d4423e3e2c5fd2e18acd6ed11bd551bcd1be37e3179081957f6c8b8b267080944fa0c600027e92381c81e2170ddc141cfccb541ec4f23b592938aca490821546e97853869d3fed82051e8bed873043f2a748406d5a4d9874c2914d405d349a63118ca1f1592e9a9916cf12eb7a02d6e34853469519322902c12fa8c34ab473e958ab9be156748257249b77422a14c2117feb698dbdbe2f8c20cc4fd7e64207e44b32451c79ea62923daa3439d2de20821745b24ea487441a1fb2018ba2f1265fa1cdc57ff68bceff85faad22271454f6956f8a3f13cfc79e77af563fca5da084289dba857f4dc7575f6ca21c022d1c6faa46a1084ad5a9245a49452ca5c25f4ecad0f7d0d922d0b57f69d4dd95a16d96219a53df91a146da8518441670d9a276ac4593b0393f531994c5606d946862f2f0ad74e4a795aeb13bcdf34944ee8f0eba514eaea25c6356befd61defd69d6c0e017a7416a54e4f8da2cd2c1261d0d453428033f45fbfb8c55aa5a2932c56d0273276a99e1ac19a7a7a7ad4846ec6c5bfa73c154c2b9108837ee5b0ee48fa4a24426996bc0bfc7d85bfd449528c89e44a45675f6eafcbab9219bb646db640e08ced6142f7d5a04c6d4fa6b740d9e9ad900dd22ceff4d607d6ac4e5349aac34e526598249e08831ee6de9d505637e69af4c3e92d4fcb53a9aefbe14999b6fcebfc599e4c9f787588e74886433c431a8919926488c40c42f9b34099fe458648cce0b3bae45633436e857934913f2d4b24be11ecececb400e6205823d4de4f5d56b9b24acabfcea7aba47ce591ab3183baecd8c3179eb916391a419c12b547ffe27e3ab32ea18b3988cf04f1994b8b68120a6992f6e8672e2da244426611214388cc22df358bcc2253b80114296881279b329442923e640de60e12d90148f66eb7206eed690fc6634713c463c4f86a884bd65f10e00490b98cb76ade92c7973788cb6b70899aa33a445f83e8ab1051a6abd5b3fb319133c8dda8992a013fb2bcf56e8f41f0237b38042cb2c42a17f22ea477893d0f7f4c647b26323e16c2bab8c51f8f2efb50e515be94de0aab56cff19e7de5c1f6327917f7cb3e23734fe6f2f53056f22b990f7f854b4f7418eb4c18871c0e994b9c23730fe7d45ceacc0f639d9965306c8f00aff9cc257723089c1a3cdb23003ecd25fe6460d85eebb3bd16fe681e3924587f71c821c1fa8bb3eee7447e615ffc05cea4cc98f5e2342f70863f9aebc8fce290ab11c4bf298778818738cd1097770869571a0d0dcdeb0720e5002eeb12f063c6b758e611ab7082b87d10b7f8cbf2ea39abc7c0413c46108ff11831ae86af8b201e23c65719fe7e64260a701787dd22e22eb0f7025cd82b0f7f57aef5445cd8ab2a13e3423cc3f891bb11c4631c7238f831f0b73abe0b78d3186317f7ee8bdb9bbd5ee965f7b2db67de5f60896f6701b838c6cfa9b7c7f556e616cbdcc3322e70ceea41c8dc2fc33a33af708ccfc4b8300fe0765900f78bc93317e27e4ce49997381a343030ec78d8207ed3382b39085c7b6ee5514257778a8c8ea8d0135843a4591089cf50a6a73fcda29ff5414a9a4ea890a04c67c7c242c401aeeaaccf01f07719c0fbd7150043b9aa58f6c815ed22c019003c009f3c935e3a317ad2acaf8b90e969b36c12a323a466596c0366254c9a854f2f93b2d3cb26cd8a7285bfcbc35f57714f56adfa886cc954aaeb8a646b16c915bdcc8b221745991649ea5d067f97f717f8ebb287a520e22ef097cacdd978f688c055a857f4905b616a5493d0d56b31b694d3bbcc5e940cdbabb80ab5472bae4115a8abb7f45f0d2a323a1292e992c9a45990c80e41997e2635ab49b32012289e644a8f281209e0cc08e04c00f0777900386a24785d3f84ff2197832ee62e02ac99a71ebe405ab4c85ab4904e641c73616e71635ae01829f1fd62c66f8e86c4174a5931c69887cdb5e2df1bf3508edcbdd935e2082080b8c7f742162bbe19a54754f9047d31a9fb59fa96fbcd3b647a96fbd122997e851a7d337fd4e8bb526a50d017436fb23e9fcd9f2cd2d39365e438734c11dd8243476cf4a86ec5191495bfcd3ea6af5bdc7536f530da2156c728a0d0a1209d10e28e023a9440421795d07129a5d6d24884521c85182189beba28a4579de3085d55e15caf178e3c2368af8f2072a4fb20d2446525646bbb6c477bfbb6de20526f32b28c237224019194e855bf5137067083246cc813ab6ee489b10a27e61c8b65c49858a6bd9e99ea68af9530828e7aa4fb361494ad135184c4a0b8fef918638c3142f82b5ffd163140e07b162b7e8051bdb8a45a58a01320655841a9a49c3a5389dbb40cbb6ce58943e6211dbaf92f468c18329a454f93e76986794c8b1820f03d8b153fc0a85e5c522d2c0700e6895148c20b328cef0e7749880663bed8ac1ed77be85cb9675f170883de5e159ca1d7e4165341e8e695d83eb1eafafc8f194a7097787e6be2c70c2dd51e85cdba3e3718a94d8e4656b5ac5ef8edd16b978e01a6acb556bb697b75e88469c8245ff8d406ddf67a2d4d514a9b7edb688c3bb6ab182e251d02ce4059e5690c3843d31efd576fadb4527e3b2e217cd62b460cbdf6624c7b707e934e09857a85ab7ed61a85d0c5b963abdfac15627a68285aafd875c760b3e43cd15aea540e1fd3ac4cdb620c016b300c7ba4198bd83d3ba3ed8c61d6de1d5b56c1d8fd747287a5684949fdd4720dc3f067b3b513d6a8dc5eb776e516756b8a491d662d8bfd8a3dca5ec53ec5fe64dfd9976ce9d08e80c3b9f285eaa7fa305d2db5d49eb3f803dbd5d03ed60bbb2c76d944b652a4704449d1f21452a49147ca5339a59cf5a7eb571b74fdd8c94a2dbd68f7558d68dab30869299dd7c79229deb1e51ff4479e58ae4348a1b2fdd62d6beb7551fb28b35f5baf287d29013fb26afb864b3d9d0a473b760d6318b67761fc2d21b7964890dddddd32de4c3a745fea46b652bdea3fc61863e3982693cca69443cee4729797e8dc32a5af2ef88b93bab89c526a391a91de88bf1f3e275c6f4acabb379094948e464a673299b654b3ba9369ab9b0bcb0b4bea372b67398d6cc1e0947ca91876eb46aefae5b059f077b15cbb0acb559ed25e5e7e4996b71c855d506f71790a65ba4acac4a272977fa6bba8a4fe99522c2fa77fdba95614eab153b9e468bc7cbbd7b5d8b1a4ceb27d2575a74a6bb9a88bfacae57ed31a7759eebc2f776bcf5ee576edd9972eaa3dfb580375db7295abfde5aa586eeadc5d812bb2fbcabdd84fa8db759dbd42e9b1c3d12e2fcfc91697b31c75a8facb8b968289790a266665a55b5949a54aa9522aa59242a9a05c6e7a7931b9b8b8b898ac8be9d6d4d27253cbeb6dd14c26d3ed5352ec1550524a29e58a942b2b2c2f2fa9bba45852a9965f676151e9dea2f215295756b6cbc2a2f2d30a0a8542ada8c8948e72344ca5ecde1431b7d434a2c23ce6877fde2753041cbad16ae5685c90c3a998fba6513f1c7bd706e81f6ae46ca4620a2635a11110678034d9a2b29d73da1887e4898033f0360b5d949152d2eb8aacd1966e1f891e8ba2a5b7d7ad92b8a45b2c6eb7dbc726ddea1eb9b2f7894fbe18250fc9d6b6b4c0e07a5fef6bbbf2c8b5552a3afaf96bc5b71f3eef29e52ef6d2e56ebaa577d7f4d3ed9e9272d45d79cb65b9c6c3891d1eb1475e5797b2d7b0ede5aeb8cb7d79eababce5a60ec3e2f24cf1c3a3f80c16af68e8baa85b5d44aeecd0126bafaa69b1f67549a75df5af9964fb8dc5b5161e4c64d5310e47cbb55f2dd76eb46c35565c091424f4c39d3c3dda06e00ad65c4d72db27b92df46c8f9855b705db602eccaa7b6579e51109d49ebdcb9541edd9a7ae146acfbee5ca2149d49efdca9545edd9a3ae4cd29ebdca9546ed59fbd39548edd977572ab9728964d29e3d678f5dd9e44a27573e9150ae8c3277dab36771274f4f2036b03472868e48da4b2b6f65b2fdd74436ae7ce968ef0cf95bc199c69f8ecdfd67bf9ec57b30483aec30d248cb23edd95733745f137dd2481278fdeb2ce4da4549600dbc71e179f988f9eaeecf549bbea0c1981831be1879c6e8150dcca9f707a990e31039cad5bc0cac89392e91242d965ba562ca686f42a43c4f21c44ac05a43e68863c099f909370067e6757ca1fb6230d1ad6b470e003ab0c4d5d3a562c01a99e73d191a2d46cc9c3072e464e04cf4915ddb005bdab54ae795cfeec48ee1524fa7c2b92c135987ceec22edeaf8ed5e54e854f13f72dcda6b69e985d9ceb1a7b73c6cce28955f67f9b69797fe46da1f197238d84faf5dd7ec95d1a775e68d03d0cf4cf12529b596ca78d5582b8db3564b2517afc51ab57841d1b4d84d8e464d4207af75cb3967492573433c553833fe744ea68642b1b277b73b9dba9fae5d9b5d17b36bb096a1d3a006ab924ebbb6491bca8dd11e3d75ed616f28b0a6f3bc142287e4d93dfb61ba36b49f3e9ba59a76b61e606b064914e4295790e784f8dd8dd1de94d1ab794b53c9d06db7d8afcb8fa08966c99d8ed2ad085718623c2720199f1a4a4769d6bc04f2f2f98632bbcf2b482724cf972e4fdb03e7e60e7bede1df6bf09e4cb886f6d34f38fb7c7334b497fbc5b487afc92df6264bd9dd69281d650c1df6cbc8d750388c619fb6f6b0ebdaed53d7de76f97b639e466424b2499ab595b8cf22b9091ba2b40188466150595bf111ecececf0e411ececec4091b5cf5a391a2cae41e87def606b049af6ad27ff91a3c1e2238836dde74b006bb2cf9b00b2f0635ad4982c5c696f39be127a1a0ceda6abbdc5d51e73b567578bdc13a76ba71bb347eec4dd74ec66b45a205a00f19bc6f864213665598663e519f611b396733a4b77af75926661977bbb0b448bdb4d7a35b37bb5a73d769749525eb976edc28e64468c1899df3492e76750b3f05b3144461369c2bc28493eca53499e7806cda02934874c2a1e319fee6366ed3c4c59c33fac5cc33e623e1d72354e6749993e352373885ccdfb8d89669df0bc76e5dcebc48cdfe18ad47d73c8bdb3c824726d41550c1d8c7c4f53d6a54f9869249f5e913a1b279c733acb73a64ecc93088c22cf4721b359dae1539a16245793c60c4a795dd01594e7454bddf1ed98db4b7a358be4976b371a8945da9b9f43aecfeb77e60ec73074d9b51ba9dd5f83f1b4b5b7bdd5b3b3b3938219f37148b3fe997d5e2ab0a5fa9d42435fcc2b2e390dc38ee647b646603a61167806b5474f5b7bdc4bff66500f600d8fe824ffa7591db3bc76fa13e7e3105803f3bce56ec8471f3163bf9179c585f9872b45cc61ee07977cdd157fbe0894e75de2cf4f0f9b3f084527e6153c02d98228fc5d590cc6735e090ae8d840b3b64b9a6695b8cf47ee7a8cd72cf9a975a6ac74df1e47ef7d3119bb30a78354a8e2276bbd5df5f6a250edc51fd3c91b0046d0608ca6a9fa3f72e3cb6b2ef774a1066fe24b3f4f72e929d92f8e06ea17ea9a06a78443d9a4a5dcd26d51f7c1dcfdf46f072aa71cfec6881b1ccee925fca5fc643a3575ddb56bddbddaeb3ae9e27217fc35b601f38fac759c8dcedd2747e374ed7231dd47cca66bd876babd5d96ced976bafdeecaec7261d652dbe9f6215743e6ed74bae9e67437fd44e3f4c9d990b93bc7d9803f1966983bacc2e96c7a6b18f6150cbbc9fe99aee10e77ee61036618675f729b1d45d59485b98ec5649e26b3d170314ad906cc3aa66c036622da33410a65a9f366edbbfb753b6b2dbfba7737e62ba77bdf74793891fba7fb55154edf74bac672219cd11e73dfe7e7d36551cafd52294308b7db6508576ec01324d723f96192b997e8b672b3a3ee5015945bc1b0dbba93dd54eef376e34e3edd0885be0172df740d106f86baec746dc4984ba67f7447ee7ebaf74365d323678347ac226f3f6ccf74cae1a878b6677a36ddcf74f8eee698f00e54be6ef3e46e5c530aaec1514a29959173faa56b6fee06f7d291fc1c65d33be552de9472cd244d37e14b08f07402ea4e97717bdf8f47cca5fb88d974eb4b326bdd5d7b93e9d25e5be96e37ddfac8d5b83277b7478433a6ebccbc99aecdbe3660e64c3fe5efc7c6c52a72bc9f1328e81d288a74e7d2318e46e9d8e44ebf34ee766e2e5e9b7042593afda6bb9b4f9c13593b97d3fd74d34b978713f974785538a797dea3fb76ed9add0eb0229fbe62451ecada8555e4eeaa700c904f37403ebd740d903f78c2397d932995532e391a29f3de74684a29e12f95690f9c9b27367d9a6e644267baa9dfdc8d86792b5d154ee9a6974ec75f8c9c8deed73a15cee9dc4f1dfe76a0f276d3a6d2e530d46e76b1fb0154fe76648b77a0322ac32ec52f59892e65d8811ac00d92b421a3be806138fd82060261fb28d1a0114472cc316bf006fb85e40640b26687f2e6480c1331639a15e35524306caf9c46c8ad86cf6b57ad355e1b849aa4df2e842baa436f7428d612089acdee45a34c28f2493bc93167b893da8b2bff3a29cbfeade02c9e72356256b94a26edb1db50d95deeca5377e52d1742fce9d0ab336114ead939fca5f2374f9f39e29547fae9d08c9de6159c833d1ec339a7d31c312a7e9e7027e52c53b9f6d9953f3929a7e04c4bea5fd77289d425e52d6f36e01b99552e1515957f2b87dce9f1d7d5e52cc3df75c29fa66537be973493a41fbda4596cb82b57b97625da2c69161b56de49cd925ff9e468ac60d8c99f952baf4b45875c357d1f8553f0d70d5df3daa6c5cf1595d34d972b8750e5a74318777087710d4c87c63557eaf9e08d399b58057f5d16af6e8b8f3bd953a9aec39e5dbbb6c8c5c71d795d5d277bc3e43bcfdbcd8668d34959fe58e91422b5085d8ef6190e2dfbd5f29597bfb05c7bcae5a9d2bb97b8e872d45d9bcabb97aecaaffbe9c897e9375d2a954a5895801f9f0eed40f0239f700858e412d6914def7efd746aba9c097f3c9e7dbce4138eee259597ceddef1c56a9e004fcc8275cbae9d751f73b1db25c85e5172e3d214b57e52a5d1596d25570e989ae84cff20be7b05c05e7b8fcba0efd4a58876616cee5f092bb11715cb086677b293c4d2d5f69f94acbfd9cc82ba6bb728d6ed75d299da32bbf5a563e4f577e995eeaf037af23f3ca3771f69965f88ba65f8e9be78e5ddc5584d2632edd8473b25b9cec16ab70e24dcf729693dd96ecb32fe3e2ad7da672bf679577f7d3913b8ec31f8bccdd7494097f2c56acf8e107181895eae5c5c525956a696161595941a1545452524ea7ae33994a258edb364dcb320c6361c12814feae6cb2997b31b5bce0af660ecea4f057b3e92ba64388bf994d5f39cb85706685853a77c8e12fe5dd4d9e097fda55feeed2a7dc4f879e4a3762e9a5d2e54ad274d36f64e92b6d1dff69d81e76f9fafee9987249d69939de25a27668a438dfd9d9d970ea82a2fb529508dd078d30ecd3a1af537415e61a4365a4578dc4c4e4c8f06563b227032d065b3491a381358dcc948317c43a7609c21929a193fa030dcad614f36aee013d53f0909173bcfc63c685238fafcb733d8a2978c8c83a5288fabe3ff2afaf3f27b81b2ab95e94f6635f948a0083dd1d69c9e26bc226e686d33bf2aa954a3dd0ad0dc0134537639e678aede2898266867c4f37631e7ea33c3d3433e6a3e866c8d37bcdc24e6bbc71a76a98ca790c7fda1b77da638f36b577d4be2b6bffb46befc973e3ce4e0fbd760c0bc086769ef67adaa3d76ecad5d143d04320c41c308f437aa747e51445350d1bd1de1175aea0fbae193f7c059cc1295164b444090dcb881177787a7a88a34cafa56829575b7153fec33dc9cbf2eebedc745d5ebaa9af5cd5b929180067f0a0aef2d666141a8f7cca2319badec10e8b3a61426787873a5142b68a80444845d010e2460071459f5293e9254da6342ae8fafd8f66c545fd87abf2c845ec11ab2277dd88029f9882b8a2979105993ec61d28babe56b5ca61395057c9c1c3d37d9ec774792d7be118103306c58f9d9d9d1dd5eb8539c32ecc59cb594e292c2d2e2faa144baa53d06119a67c3e8994cff994d335d456a9765d547b5274177703aa019b01a743243d3eb9d65aebeb7be726ed5f97e28e92027553efe4fad2d589d9e20df830215fb79ad5eb902d943c6ea337c160ee2092289c64ecaad1da8bd5b80373cd6e2d2157d7231434e212b2312cee60bfce44b3e2afeb3471255d57900db477bdaf5fbfbeab83129391af57cec633862dd1aceb3b9a257fdd4aa16ded5d47750b5ef77e610893afc3665d31f992c9d761cc8573e2903368900823440865fbd64cf23d70ba0c827e8da9bdf167faec23bcdafdb443158ebcbdc4395ae36894c3b93c4c190410c72787c3bee99cd74c970da8e261ca11e3a8104bec23668b3f93bc4e4e5f27668a79c43cf1c523e62c4e3a599a769376d36604ed379389bb1135edf59a4a5db9430ec77ebbe95f6930cad7e950be4e6bc4a15cff4d39f4d1c71cfaebbae8af6798e2aff38d94a2bbd6bdd5956036211bcfd9ebcc35c31b9642dce5430e65f9a124484c9cc8283d4186180922325292349f34abb3bcd65d9e29aa14024202e7eda54649a12e4318dfe644de7ed3cde11b3e62fefa540d3b99d26f7d9b8625d9bee6d45bb89db2b81b310d4e3212773bcd0eb96ef14cb1c97b37fa748bdc0d19d41e96421ac443f749a02c2fa550b36c866b14c86024b74cbfc427599e28f76dad3220927bc3389c2edbdff4857944bb3587611ef1da8099c64cedb56a2d775a9129678345b698078b3c6b9b4a7972364cb9621ea698e98d2727799e475ca245786a2b6badefa77037ba4acec60172c53c0e10ed17abb0f1f88dab61df57e16ef42bbe9106c896b371806c318f03e4f9da50c69e258a41d0d947cdf3b8816450b39aee709de28526f04d7292933c448654480aca2e9435d3158fcc29e1e5178152fec520138743cbb0c4d9e03e3f2915f0f21c4743cebb6537dded2ad96bfc1b7fd737a77cad15c25fd784b58473ae4f8c8a6863fa74ba7eddf97a0be50b9b669575c28b41acc21e9f9d06075ee2808ff2534af9b510c7d9385d6ea7d861f92c838f9c0df89c997138b60c4f231bcac70ce368684d68ae97949fec26269eb3086ada8f6f66d106f650fe321e1777d842397bf6cd678715e7c8739fff76741dfe74543eef177764f9ba521ee3e42fce0607b7d22d9de3e291f6e4e1b963dacb956516e7cc63e7b20cbb327b6195bd6cd1c855bf744b4f749fced438eddb4db9b3571bbece51ce46f61c6c7238b69ce964789393669b3f12e44945b481db8544fdec992d15db647d5128c74bd854449b9825cc2d94875a7a6210836a86202138f08215820d42ea327559ebbb6a59f734ab873ccce91b48b3ea297d0769d6cba9cbe95b48b3522da76f22cd62395d3965a14e554e534e4fa7aceed4745a2ad29eb592a64dba257bfa49944ff2d4bae2d80fb7f7d26ef6ed6ae7ee96ba2ddfc9f53057f6c8eb9a2f57358174eb922bda44a69020179d5fc8f47549270f732c250f738ec391bafcc6dd485da65272c595468e00fd706594397b604ded11334c2ab6942579987ba9ae34d21efd0bbdcb9540f42d57b25c39d41efdca95a82b8bdaa357b932893c5dd95d69ba52497b72896422936413e9a4e5932b595c19a557f4d89d3cedd1532246e8a424d2f2327f31083d99d60721d30d74377de59090446491f6e86d10ba6ff64c1f3a63907b9a5531ecd903a47d604dadb187c69f4c2377a35f6bbdec65eb74f2d22946d06277e3d8d11cc92b7f1e8d5d9a70e65219e905adaeec236703667b0dce395fbabc1f909173e64bd7e62dcd86cf016baed7eb742be5757e9b3ffd004d322997a657f3d7dde0ccbc76aff6a2dcde99b8fbb1c81bee11f3bcd8b35bbaa9f66a35a23d1e741f346aa25947bcbea153c9cfb9c134eb6b91e76beb5bc95dfa3c075b39e46c19f5a91d74b5f49edae795d7ae8d79392fe99c9053f53fb76355e31bd888f6ea63daab9fedadbc5e2a29af3b3b44c4c8d7e3f56dd7e59cb423a492d6920aa7e6f9d9a7df6aad32180c121eedaeebbaae6b5ee67955684f28244092e40f1a5508bff5668326b97f59235d1fe2abe3373384cdcac912374ec12ec39c57d27fd7c5c1ea5fb86b6fc6dc97f496f230652e4738130fb5d88d02998a365107ddb7e50993ea50f59bd947ccfd39c40d40a264ed32a949d62e6faf0175f1f2f0a70c3f976c73d0d5c75b2474f27dec2a896f78d7ed75e1677b6fc2f656f9cdbab0ea8697298784bcf666a9aec73fc6833530db6bd72fecb517a54c8ef6aecf0b43686f10636b9c4898f439f1f31b17391cf3725eca6e1f31379e714e4de67efcd79f3d0f7bce241d8c997b0052048ea0591009902199be89664d88a4c7d45accedcde7bedf97e59892e38b127215a312f47405422758e8e821a589790c991c9d441cb203244949724d8648927cf23c76cdd487323db07fdae3e38669b7da9d35e8fa50152faf8af732764d15f10d2ff7bd3c73638f57f998193b0f53c6308e790cfb8879e29c7a8ab14e6cc11962d0b4179dd6699d66a2938ab9e7051fff02eda1850d2194762e49ea39e99c736217ae3431ca64786badb528980c4ff1c4cfb734a844a82c6fcbe45681262444455084d13f42859cb4631f111232830663b2adf4181fbb6b9d7615ce46bf69bf6eb4da61ceae9bae73b774d55f59f6183bcbb22c5ebfb45aabbd342ddb3a7638ac8d365ebad598c76e67eeceabbdeda6bb3d661b57437e76a5779fcd32bdebbe358b7b876197fda621d689f3aa70f0f78114fdc6954cd9e3b6fdba4c9bddf2150f397bddf8ec36907b65d765baa5731bfe525755635ec6ebba36ab57cdd835ecf253a3f431ed99e296341b0c451871448cc71191c989b7ee1cd7fd74ed845546c07cba0d984f5895f29cd3e9534ea7a7d36fff91e5fdb62fe6eef37e3a793ea5933ff2bc3bb66cc24d4584c15d725d7b700a61f7daaa0eba781981f26784c45ab4f8460a5dbf27c5a71195634aac33d002168a8ab0500463b4584f23e10667aaf7a752b5c27a48013853af447bf5950bddb75db13ef2d45caf015873b444b764c8156bbe1e03d026091db0c6bebeab314f1949d4a25c2b0443ae735e577317869dbd2c3d853532fa54288c9690373dc9cfdaa95197238513d068c614f3921293b7e2958b61bf9112bbf32bb7de25dad30153bbba854e55e3ca10cec81a8762527bf1d40752a100590e91e54c966fb92cb71e75d7ebbd20192d9edfb1a33d99eab00c82ab7889a73dc1b487fdc2f4a762fa193140ea159c11832537477bf04883dc279d4827334a896513ea235b1388faf4e011abc8f33aa677326092e9a5bc71826cba8c58d7631efb75752276af4f21ed188669c772300dc7cddae9102951df51ff5864ac2563a68c614372158f5d429676ec10da4c26f85546384b3309cec4d96448c64f26dba3dc9e82bfcedf64521ff3477d6612f581359815604d7d3cf569964a7be952a5e11b5ed6ae61c9a43d299f25764c5eeea73ba447ccdf14aaaf9762e51fa5950d4ab23c6637193c3b48fe742b056bb047969514e68012edb5cc61084b1e725cc1551c39034e7d0e3dc55308e89b4015fb4dd34f2958ba3b83ea859a2571c493e5f67cc68a10507bb1e26932e12994a453a96ae49963ce91d789b97e1269d697bd48b372b269641e8135f6f1d308b0e6bab28ba3feaabf2e2b7dc43c87fc08a14328915ec50f09d2854e0649b1f29b964ab8af601924833a47ce86ccf3a759252ca45915abaefa2a63131987c9e22ef9934d7010963fd9a4bb4ea6e42f3d0f7a1d442283a34c89e4f80891c800488ea7448ce4f8ea854e1ee67a85ee9b431fe7c58bbbeef5bb4bf5d549210e67952593f6628f99a324d21e25caf12d89da8b74089c89b7429753af139bc4effa7cbc74d2ac1c287a8035180f53fefcc5e190c7d89024cb6330df90c75e87887cc45cf12cea42f7c5a11ce3e3e7508f29855412dfc045cd9241948816d121b215ed0057f1910fd7135db720c72133889741f2eaba545069a33ecd0a123394b3236c26bdc4896c3513e02a1ebb4e9d74499d457c4cea169c51856e62ff669618bee1654c3e5e4b8a4b3aa967849396545f133498881d04f3d74136ae8c491931891dc3aed7c3f63c0f06493761b27cc5e4069aa5da61b38f5340c7122f1c1fba2a725f8b509e62dadbe26550b354d9638f50b35419bee1e52c029143320ab0262601cec41c1a9e40b0a6275ebd8a8fd715af785d5717a38d0c8a30e2bfce1626c9583c4b8e8c650cb3dc267ecc58698ec6cc9e5879133f66acc82098858c3d6e2108fb7640a39ce34366294ab07298658e15bc72ec56bc72e5fd4cb093e56f24c6003863e5fdebc624e4f895fbc48f9da1213e3d3c2940c1ce0c287ecca818ce4b010ab4074f8d503d63834fcbb15b00f69a76f8786b16ba2ff6f480b9eaf611c8cbadcb6deab6e5f6d1aedca26e556e536e4fb7dded03ab6ff6a060c88fcf134000b1b362c98a254cca20a33c6972865f098b0c239461848698806454d404162c825e7e5e7e84d000c808111bc0c00451b55c98534f624e3d8142079f9e1d3ba8544e588c588c8eb2d08489922da452495a542ecc282331a38c1c0942d150d0105a5a8aa45c984f3d319f7a80404144481015a0503c29b7b3ca515050d01193983b264968e81d284ed4a0a28229a594724343444e884a8e9240c124641332e40641478ae4c064fa81020546b94310203c79d8b627d9edac5d47d71112179c242df182a619559a4a13632609918c9d9be42611d8a2d1c0bf692403ff261006fe4d21fcfed401b43942c7bfc983dc7f2bc705fecd1e0bfc9b3e15f8377f7203f1bed403b4d941817f920fb9effb52096c3131817f928904fec92611f8279fe45ef10568138128f14f86e108d6c004c156f481c03f39f4807fb2c8019740cd62f1be3402b48949fc9348f8e17d1904b6e29106fc934218f04f1259405ffa34cb05d02626c9f14fc220f72510589372025bd108c7bf86a2807f720789abdc006d629323fe351c92608d4b12d88a4e6efceba304fc6b2538ff9a090b15a04d0331e25f578108d6a08ac056fbd8f8d7476afceb201aff9a48f700dab49122fef50f72bf87c09a15d8ea2308f8d74066fceb20b953fa006d3ac9cdbf58451458d32d81ad363ac0bf9864807fd14901ae729b6ef2453220c19a93106cb5139b7f91282621402701da4820118694f12f2e21f70f6c499fd6bf3884f52f1619e25f3c92dbf418ffe20cb28d34a2035bf2885cc9378c228001d0fc8373c87d0f401b9924c290e7b2f777c09a0bc63f9814c43fb864e639604b1ac99594f907b160239b4418f2ab7f90c8058432b0259dc8238c8035d8dbfb1780fc1d00ff52b945cc3f29730b68337d622e38834418f2ddb7b20535803380bf2e370b03f84be523a28d55a2037f9d73c896bd2e80bfcb02b802f84be51dd1c622510036c97602128800740224dad823258064fb0301fc5d0ff071808f9168638192307244b62a94061c61c091051c49126d6c901c49b2ac48388c146084847c6c126dea93236213f91b09c038f84be5232380f8c856fdb1e153c387868f916853818a30922585828023338ee42349a24d0d729324cb23c9d5018c0c605400dc4da20d250237c952028936944a23d186dab4939a76428076220348962d964f1e22869123b235a1c824d18606994872d524dacc271186fc008e08e08810476892c0c05faa0b027fdd0c366a39837ca2cd3c9a3f401186fc0bec023b5949279e4f4e0100b7c03138889268239d3851f20b3336fa8d191b1d65275968c244c91672fc27eb1013936409d292254b90ee85190823f7c60cc434328fcc2014cda119348780312e9263e7db207b6483ec11cc857945cc2b66cf0432a19844a6901964aae09f3cf607c8fed81ffb03f4c3859905931f6ecc2c24139924d13077a038916a58b1022fc9b1330c141b040a14283648eac2fc3214f38b1c9244d2094a8e924828c0c04821a427484f5c2eccaa985552881c226f1074a488ccc1cb8bfc71b99d53414741414147a80b330b94cc0225ca1d64100944f2e42195c24f72fc01aa3ff5a7fe0065995b8e626ee9a3466a2e38e9a45ed25e6061c14639764641a941a040815283c09c7224e69423403d4592266aa12e020ad546909e203d395d98556256b9edd32be8223da47fba052929dd73eaacd1a0a3a0a0a0a3edc25c4ada6293b886e68951e293d886aec34ce80f10fda13ff40788bb309b884c444551588264348552e70d0a0d02050a141a248b43a20ea250048a46220fb62d0a417a828484f424cb2851e28e1ee24ff4893d7cc8322839071d0505051d65798bf485274d985c173eca3fb275ed4ca06803230c79f954d749a02c3f63c43c630891e3a1511c80b5592aa677605ad7ce5669868a8cae9dbc036bd2d0f52f9e2cfbda91313f59fa6419776a3e9b86698f749f97b54d426ad3602f19dd50eada591261c87fb475edf44af6b5815e3cbd07805e3c942d04c0d512ca6589851ce9922c3f690c6a8f74dfa49f79622c0331ce800edaa48739cbce03fb96533ae601abc852a4fca3cfaed1cb711cc7bdd42658e6a3b894037be9d9e9fd2efad26fe40997300f798c7e4de412bdc944e9e986b937472347147146f7ee9a869f38bd891f334ed72a57835ea3f52ad34bcf914b57994c3751ae847960ffb89f729cf0134d38510514ce30873cf0a10f55cc381d8a1f334e180a957718f3f84d6f59c85345fffd2a8a2796578ad355ae1371c613b08a1929b8c765c609afe074289c80e2c78cee743a9d4ea7d3a39031e374274e988787a747c68cce9bd1a56674efb96674efbaee51c898d1e1141cba7e8ce1c118b8d033059018784105481aa8b02407516003d18c3e94ad1f4478b4c0e3832451d46034e3b2c113bcf0823430410c2b78a9b33c2c49caa70c912c3942a150285486e967b535e83e5496aa79149df7b2f63abd3cf387ca351a7ff5dafd60cd272f8e4a6fefbc56aa1b5e9ef7f2c444b427cfd1c832aea7cbfea17c706095fb170ae5657abf141caa32eca10c0bbb181f364354b78c902bcbd568dbe1b3686362516803b7cfd99272f610c34ca677c7600d1d838e41c7a063003bc82574208bd943d842beed9ae9e22ccb6ec2317b67a7d9a9866ddb85b974e347873e3a4487985c4374a8574d9ad5bf1a4a37942abad1d743de9f4a0d7577777777777777d3a16b387d6e09514a094d91f6ec5514cb24920867aa8f74a8591247764ab3d31277d34442caee1403ac8151beb924dbf97347f2829eec2243242e5092359329658b9d24d2de2a4fec8dbdb1db9ac4bd1691416889037bcb215d04a3431309ce0cc11a8d46811231a149fd52d797b467da33ed997653a9748d7b73c7be0625b9c5366f7728e9109597f295d3b00df6fe876df8e270301c2d4bf572a83deb69ff7e65ff22d2509fa63c0f5396af9e90074901e92a4fe489922d4f3fe916a449b2a547d95225d9d65a6badb5d65a6bad55f3b6d8791cce2a539ef66c7543d7bf5ef2dadb2ead114684309aa8eb554b29b38c2ba5703825ae9a5ea2a5479ed2e5b57ff2dbbfd88323b18fd87597d6a4eea343b7874e97af9f9eddedfad06891cd2eff512b641487437b4669910a77437bf60d6ef874650f208c1fc0192b8326c967ea389cd2ad6de8fa372d87c01a0ef700d6c02c89149144b2a85954e631291888553674338b403109591681b2089445a02c02657b9965dc775d384c78c33e62e6f097bde3704a5c8d9c0de774d7c9de634e251aa63c1d766590686440d102a035e47ed301d8b86bb37627d214c31c4384614fa144d969cf1a319fcc26d91ea3993ec9d60a49a893af0f29149cc6a50c65de22f543b742618b0ed129400f0e57438a0c9d17b2a558c8f0d87b4ab80403b015e10abbbd0e5853fae19213f60fcb18f6ecf2e27094ae6115ae864ecc25bc7d93eed0ac6cf34e252d9bb604a93dcba457f68f49c174df4422aa6be8b05f59497b13294ab7604b28b0a6d63c87342b260583ca9f84327964ec2bfeb0b36cf352a2d4965dfa843aa14d68122d8233f6dba5568033f6a64baf106124a14694a83d0bc508d9a247bdb2dfb97a3a9f6c5f7fea90183a54cf3091608dcdf6b4672a813532bf4b0dc919a1cd448a30ecf5c63e66eecec394bb63d7e8101d823557b6a744b0a6662b9d304995a1fb0217b2fd47b3902d17a890ede551e996362959d9245bc924db4b254eb2bdd5f037914ab7a94ee26f83258c946d4e762dc6881d3e404831ca10a24e0272e4484211026b862e0eee980b57c365abb9746976695196a457f64c68941c71fffa1bf6164a0467ece7a5434c283dda5fed491b5844e21e55d8399924db4b91c2cab014a6ab823d9a23434172c848b5bd70351ae794ae8379300dabb06fb8c7cc9f1cd2f60da459252c87b467fbdb85ea521149c65e0e912d1a0b872c2cb2d0c8b3d7565be97d379d986f3cd3679747ccd853b245897a659fe4479e124b99d02639fdf6acc53e62c670d79ebdc53e3376610867faf2f6aa433752006b16ba2427b3e5e144ca3cd026a200c2989f97b0263e0167e6af5c71dc81336ae8be2eeb6829e1e5931a52c4a6a1a3cd8a7127f634fdd5a5ba16c990a33169c488dae6bb91bce027374763d6bb447bb331ec68f2bc0e547bf1d2a318ce53aa3dd85e9f32d15e7cef58399421c90c3b4a9a64789866c14f180371ce9168693075417844b3becb8866e5488202dd4ac995f68b4913adebd9c9b04986485410246b91bbf015e3c231a88c4d21bd3eb3c51a1215ece48f88ac9d12a1b1b41761444ab6265cc56bdb85ea60b24645c30e5fd76191119aed9a65af5d3b8cd1704edc692326648b6563b911aee4572eea4ad9d1d37cefc09a5a860eb2804845c2022179d6a4946b76ebdbb989344b3efe78dbe8c796b7dc1177360a60ab2b555bfb064774f557edfa9ad4aeabe3b5a1607cae4b1e7f51cb32289392d28ff427cbe76818369b441f9ff6eaad466713b510b7c494d23b57a782bf2e1597e4ee6ed0ab97da26379afced88c92de55d025fd32c4fd7d5d3c8a7523208c7a0f6ea2b193a9af6b01d22412dd4ebbb07d6c006d2415a481222cdea8ef64e8aa8ab316a2d92eb5137875cd57861cb809efcd111a22149723dca32e38e8832b2ded189b99f6155e97dfbaa2a75af57a6868a47cc2a2aee3e662e9d872997f0f6c8030913f611310e87bd0afee28deca5a82abd846f78b9f41296692fd3b64d76143c58dd381a8d69da93980258bc1339a6d4374fb34c8f97a6bd8829d05ebdb6aa18a894ecf405a220658a66244000000314000030140a888422b160342a9a76b50714800b9fb04c6a581ae6490c31661001c010000010000000002000030038734ab9869d894e7076bd886eead259c86b4fb9c6dde46e502733361618ca8e3856862d2ee0665147a163ca6b7a82d0ed7a15bdd4a573c8216ca2065dc95e5867aee93d92f125844420619a69a8a1e3d4982a693bbd472775e91452889aa84137b91bd4c96b7a89d6d55e6234bc70cd356ff8f1caecbd74b9eb35fdf85b6e1c46286d9a6aec3065ac485256289c3de1e56bc556f4070e3ad3297a0adae9897ddb4ef30ffdc9bbf55693394400844d78f95b31576a9854f6627b904b0209469c3e1a8b912ad36c8729298d20c0788a08991ca5c5151a6e3c6c98feb9d2084fa06ea1a50e5252ef1943f776e065da104a20ea7755ba7eea293e5ec9fdf730e22cf95e4fbf7ffd34c2889ebcd177e93b1cfa9652e532cb97757eb18b0cfe67c4df42c1445b437e0508c9d6a0d158807d5e0d053c9a6a53ce53e156e81358b0118a4b21fa7646082568dc1bea3299a153e29d7da9241c0f2cc84aa800d1755c2bce925bb5df3db17fee31eb3ae27bf48e86ac7ad00dfa958178e1a97cc6905819a418ab8d46e308ba079a2b9b473f5046439cd8f3da41d0fc662c5eb017473c520f00e3ff58e971cfd6208ec471f771bd93d582152ddf0fe15aaa976e05754f8d81008d4c1d97fcaf5331943111c42a38e29d574489e17fe668add83b6ef0358a0ffea1fbe9187c9e8da15cec2650360e3da45b32570cb3ff670bd98b1b0d9f420ba0a25cf349db62836bb16293a7a508131517ab3b5709ac7728568bf9f47414e3dc9927e6e41f6160625c87bd67d5d7e3244e30e03e9186ed3d58a6148259c1ae7d63801650693e0b188d69464ffd7d2d40e3e994f4fea1f45ac167ca2acae9d236f811ec5127ca487708ab548ce995f13fb1b44fb2c7df34169618e66f73f3f4372a1894d9990fb9dab57ae7262f9c6b8078b9dfaf397df574092fc722ef4e9f0e05061d5fae3c01ae4e4748b70921a239ad8083806b6abdc001bdb6adaee9c01529a589c4975c5af182bb62d124d25257d0029b01dfc0a9d7976e991825e99e28077ff83746e8474343dc63835063c93442ce76be9cdcb6e29fb3a663d43add60d2455c98caccab770568ee15cec134000703a1632b4360869bf1e062fe6031d9215568f00cf95f144cc54cf78b8ae9c310053c803e4568ba2de0b2a580c833209e5ce603144ef35124835e0ac6a829a1c73e27e4098d01f9a7ead051922fdaed01dc5b0838c7f6c75715296be76470a12e6e7079529bcf38e5dccecb09b65816023d59e0db9a90dc58d4cbd3388f688985bcb06810ea8fd0f8007e6d9d93971d11fe1603d2da79590de5014ed601a74f09409992fe7e16e97f61a0a4e73ea0cfa3a43f4d52f9ff12d20e3750f954872032bf6aafb71db0456cd301e706450ef649003600d61a9ccfcd1a549b60a7e319709e8869f7866faed904503ea70da6fedc376cc9496c270c6db03504b7d76b83b6b48480cb1ad69aab0380c7e1851a7db7d035ea5f40e64261c752ad3e47e50820cc1b036ca0579528d7a1fc5010802a4b2805f838b0894a7c05a8b3ff6f0335c9248d76a30d2df58a887af595e52a72e889680a16889b553595b4350e28a3c6d9c6c30108bd61f5e3cbd78aade897cc500f344df694d1912b3a5cda572e52de68a6fa2feec3be07c1211cd5a4927cf017f963085257974ad804af536a37cc93bb9ffe0d3b89dd7e746e98d4faa57fd7bf5f1c437aa03886378c4316f51c501214fb4a7d0bc8dd5c12806f422cdee46305564ceed8503551e4d42a61232ad9e5d3546307156ec4d4f9861ed2ceb31a8bc9bb825f64c8a9cdd7a0e9c2cd5c1b99ecc2509f7c72df752d3da523860881269f56b4420f6368a41ac7109aa367d35e9089bc6fe567d7b80486192780652642bfe75fdddf7bf6870889576f22bb37a41055ec9af92f32eede6ff7e453030fe43f55bae1cd26aea1fc5b1157bee6999f8c4c25e9cbb1c817ac594098a28cb8f92fd41469ac4f5af1555359b256ee5b0ce7bac9bde95e787d1587034ff56aef27350ede6fffbc7bf7e6f0152b1306653eb7420d2bfb0f33f4e6d242871fce730fad55817e813ba53de7a350186f138843e61f4b979914fd83ffe30fdf612804d97d881f43689a34d6d061ea4e3d7bd00ad9949d1fc1cb718ab7fc5ab915940d5b51558364df3cda71067614896240c5a28767a2ede7f073ee8c37749766f95a21af500f8e1344978d324aae72aa491fed048958f952c643d60321d66bf46648f45de4d74a7da56ab6ce2af06a5adc76384dcd4e0df20e794fcf14ef7779acca39551f31aee9c6e762fcb5b6807701cc92bc10104997e508fa3e1fd42851b85f335ce0bbaee1b8ac9eab175297488cab634504c66f70fe9186107ae3ecbc85262b2a2a54e417a1b9bc4674413d2b8cee41ca9063b306722547176b7d285775a7447dd4f82d40ecff515c20e1149f18d42c984347784ad3e600a2b1047b993e54364b8b051a34c308690f6ad41c8e642dfa18654c5c3b3a1024fded25b0af43ec925b50536f80c551155d2187a2b0ad1f78ae26419deaa8e3869230bed2ebc48bcd23066f860dba66728a40e322d12fdccb573b9e236a4bcae50f49d16186badbcc91c2cef35b191a373fd426e879f1e57406983e2be23c886ea0379bd4d9e92d2b042e523e60ee03ef3b154df295ae7d3c171a054bb0c95c87fa830da085d70fb10c199ad338d0e50143504c80f0fc5dfb8efe97a5d317652c6e98802638f5a3b40702e02c3d65d48b5b34257e6c199cfbb570e83d0fa651e708089f72be2ed154e423b3f76272ecba4865ea0163ad4513d71458c8d2a70da86522f66efb62601347d93a79eed4ed5c3bd54d2ad15cb55af18920cc8e4c3ddb6d3a00e7708237a430e1a6d79d748e8b7792b813e008b849a501e8e46adbebdca20add250672992091d03e423f2b7146c82fefc25152378f116dfc785d6de328e0ed62da9c0872abd909b50da1dbf42b7af2016f5a6d00616d02fceb2f53ecb16cc1ab11be251e2d1782f80f7c340608a2a2c01d21557e12a06f1d619e93459c9bec3d26bb53658cb0454ab0e2e32f6b140db2df89402a5043b437d0fd8abd098ba9aa64acc5a7e11b9bed4a68fc6ecd72a3204ea809592869dbfabf2cb1b8b1cf57879bbca97c37312ae2f0f29c4b097120c94e3cb710a6107e7235c39d43fea8149aa2c49a7790d53fe28fd5431e761a06e12c094db08c7a0d6452e63d079693f7bc2edad2b4989e78098ceaa4048baf2f1086bca6ac3786f514a0f6cf1f0b78ab1d67b52c3c06423615402946ca01767ad4c7c679790cf88b2758e41abfe34159bd554a371cdc23b56175c386a72d02b509984c8d88be8397ad3d4287ee4dbda308a863126448079783541677212535e634f8b2fd65b20331e7ea031cbf1baf52db0a05569f24bc51059f7d46bcc6728505edc8d726e26747eb6c366432c1b7ab041026ac1f03ed327969076fa6117c9478082253ed7d3595e47143a8a4c632d93e538dd4170f44854de0faad4513a91ad135e91728971bd27b7c02711704028dd9287325fe89c6b62414e3d1a2220b41cb9d623feb9619132349426754d5442680f0e3678b7f25474be3bbdcf5d8919a07fb44774c843734bcc381cb78d1fa6078fd41bceb3ee30563bd5216f4e088605cc0740fd790ce53445f5fd517caa8ec351e68e1d5e2aa05eedee7c7d28f56f4b8aac23138ba1bd5d7691ea3d22038e6a6948e1267f530dc84802d5c7f3de9c3b8928c3fd29d94dae6db29508c898bbd76449494bc4063276eae54a0dee0711b5f3ef502c266eecdf39e928fd6bb07f24b9fc6443bb3b678fce0431fda600f6a23ea3439a98691b6c71b415d0a5568f20ef49107899ee3803f8eef90fb87845435de6b34b823c4eae76169278a92dc8015396957bb5d6ba6da3b6b89dfc0d19c616a17c0671ac870785040662b1cc88a024fdc6432e0a464eb5c6d155a18de92d4ced9afdf916b919335fe6b1bb879edad34f6d836d714a97417d3a2abce42baa61caf994c747ba9d3b59058e20a95c872e1446ae688a93d4c309006432360111f8ddd2ddf21a1fd465412f51f31d136613186be5d2bb6167cb94b01c8d6df52c543dc1928e771c5236eda9f37ca8329f72a090a8f402df898c49198194b0581566459304c2eade949ea53e48ff2b66c0bda27d5135e4f517fcae3ccbb9fc8795d4b74c892d5c012b692f361eb14c844a9efe37d0a6b6c2e1c2257e18dbdedfc11b44840008207d69515e6a47c52d6cd09e6dddb6550ec13ac0471af71c5f7a1096fd880a57c6e86c12ee25438f06c9b25c1955069e1b126c980fb26c215e0095e0f82a70802566e4f00bc2bc02331e2d2b3d143a091c78fd99b8038f011d25ae20be7383e3e70a580ec7bd0b06a01e8a0e22acf5c46230843ce48a20d7b411429b594336ba72c26f69bfbfe06e30e61975e7cee7c479e46a581e740515803347641e0dfea45d6ca9f043f7948c842b174cd5a21f6e1e8db7524d28777aed8e16791d8a8ca125caa7bc25c4d5bdc99e95dfc466b75d92ebe36abefa8ca9d6fdec0d7f00f0e8d284fc3036c3e67fe6403086fd6b642bbc9001c264851f3f41a2c71909a2b5f27e4812128b7da8a76e068ab0bc3c0e874492c08c9371eea8b0649b53dd5f12f87c77754e0768de8ea618d9b97960440390db28bed47ce0b7ab11e14893e0522f87cefc906e5c582b24695c321609a98b3f5339777ddd6c3a3e8ba5501c8546d2d84c38e94e22a5471b24daf94fbf5709c85818126e8e5d2cbaeeac493422787e42ebd1ca77432a6de4d6c5756ba892d256aa719ace806a8e240d2b3e35ae064bc34143b56b7557f589d5994be0ab6e557895f41112c3a41610a1b7d32e0890ba20f87855d0be01d7e42028b13b572c648c9479e2afcc0b574978c46717a151e0b15358c9093dbf560da6e2cd8d71c483b2b10fcd263dea240e44863864497ee2da540e045e9ef03a9d6bbbd26e34c8396b1e5b6e073ec4dcd2661f7e383caae6013b3ba94695aa2d195910857848e1ca2a4dfe91b9421603b4f9b622f1c1e45a1301e33b4a893384ebcb65a75460c3b5224444f2d0f372a85c464ecf8e30bca9129d4403f1448aa2aceabfec805fa25414d737e06e9e9f31f17dd76b34ab2d5a2586f19dfbabac12d9a29d2d6028297d83b917e859048917139f6303d140b545086f4d7c5bb56459e1f2f70881bf791186da1c900aaf37edd2cca5328ef2fd03e74c9d1189218420a07852d75454c61904f6198b7bb0025fb5140b2eb05366cc559f64fc779abc19a46e923e165b153c38d7495a6b66f3fe198cacd7a16dc9ba54829d3de9ee73b7d3314b1b74b70e098da85b384fc82447816c4855441ad2d07b3afcd2db8691b5e54ea0f030ebff1235cd1eaa090b25c9b34ef19578469ab9076afce6236decc461ae8d47f47fd45bb6e8fa8b9a1677a6c267aeb97f4788aee744d45838929a0daedfe79307c03c538e9b9e9a6bf2653c7ce78ccc0978ef40804d7daa867b8e1d3ad4e410c31e516f9f01f8aac05714b8563d33c5cd400d4189bc9478736b1c44a45453fc44bede552f0ec2fd6fa209a8c4b0349d524c50238228764559adce336034224e5d02cbc730ed01128da95cb71920e7cc99429cfce300c25e26fb0a473369b83122910a52dd1ca091591c7f1b43bec80da3f1e6e61ab81000a7f65305f73613c22b6b24cc56bb114fafc3d400594e524d809fc4704afe5d5a03d517f74443a8957df6a2a0890e0d02923bbf80a442f87dffe12130fcfb3ec5d28e700c712208070b8eab33527d4d5ed643d02c43c180c1ceed71964e7fb5843d8c10ce889001f8f9f94b49e3a7be7242673b6b5d9878bbc7a9892cb56142a8b36ed3f40d6bf21f2dbb7f27156b6c3cdaba689817db2c1582535f7225dc207dfef1e80718fd9a4ebc6f7268ce4e7bde9f23b8b232ee77df278e26c16a9e44601db4be9c8d999114865fdc4ddb3cca831649905a73e7cea935828c384a490423368d7bd6039b6c6e03e62ddf6c972898fce51b605d1e6f08e4480dda52e075d3c70626e8f574ba6885efe3bd41d22543b9abbfd2a5c2117ff6d5d77026396783a248f99a979ce553a22064d2425a4008fe87db81baab0a833d36119fb07d593ff8239f25bb88fc739283927d9b34d2cb567df45d7e7099a54819a15a0e2e01756efb973926cb3b48e80a4bc8c34d35fd7008e3309f5e7cc678b498b37324275146be50212ea8ca20190f370dc344bdd55d747326c3eb5c6abbaa7bea39b2113ce583bffd56178389ce32961ba270323a5bfdad5db8502dd3bf1606b63b931b22515064cc379ba5375ce167d730e4d5d2e826e6fad45e5822b4752cd9d8119ddf5985be10cf995dfd1a18383f6ccbe8647cb519fedd7c46875fc75e5313787c07a87a604891fe61f3e0a1836e2e41d64587825680e4d3055cbd6521a63a8b6dd42366774d764a6c4448a99b80da86c38a09e9ed86205351c37aad3aad92cdbcf6ec7132004cdf5ebe2725522ed75a8df016e208c636d5651226891be19b7000e2dbc50a37987cb17ad781e1adaad3a6da41ab2e4c167d63a4d338dae013a902521c124194ca933b8843ed3de1b35fd13ce3392a349ca12327aa1999012be8f6569e5d79e133cad4444b489d2e864530f56dfde0ff788e80ce500045c571567c0c342cbc13fe0d7b98e143dc0d0b19aa3e9bf9bf6fb6e4134138065be1d532e7f03324da57030966d151e3e5d4897ffbff11c7ae15e9db856c885f4c627feb5b0ed5d59bccf4d76961baed19cf53d2f478ed4d22202e3ec59e0c904a08d3268fd0a6d4c1b841216fb5286d9efa49f45ad6a239adc24ca94331a88ebdea3f47131a589d21ff09d5e679d961b3d58ea01d75757d2983c87943679d3c59b3e9da2f40e8fd253087f599d1d90cb71c0ac69da369d9d28070a961407c8c5390e569edca767c86f6117a1990e4e022292357b476184cb79b21d255c30abb6f97ccc014910e1cf791d06c9cb0c273f7b5df18f4d0a703e30ca9560989b4f87aa029f545af58c6887a93c04aaa093654dd42af4d9dffe189e7c61adba1ee7c1d15a32f024e94fc8c6c507e006ac15bcbeecde69dddeed28439a68178118321f08453af27dcd2165cad45870d723fb58e4b092d4e457814c1aae7d7aaa6d9710bbd871ce0d421bb7ed79e1f7bf3458f3300085e7cf31dbd2b541d8a4a8a806658f9077ffe19cfbc2eac2e5417e36726a10508bd4d734bedfb0986b3c442a09102038909eede82e110c11b5f26d361c16728a7332af8b2a1edc9c822496a8fb10e3b1d5cbd7902271833df1f99ccf1357ba29260b9495c34a2a33ca4b03c8c0ca260f158602731509c550820df617a7bc2911679604a76598beaa9851376ee1370217fc03984cc2f55d26e38ab09fb60defa5d27aab4485f9788ed6a0a94de1e2c3e9941f1b9a7631b8da56483c315d0660b5c2335901d414289588f00c0892be61ed4a22a5319b906c7f389f016f8adb3acdf6f5834f4e970803d9b46b3d9a477f984f3f9b8d603d83b6b9050e04a2a56d279f65ce0aaa4b5e67379e79c6a9c18bc02e8e3d9b715ec9989ab6c98143d4baf644d6731371f0098411fb8b996c637d7c3959fd110877c3bb147a2fba05ed075dea2fed45d656abd176e42fd3595aebb67d8e9fd748677151329621e38263c67cec79b4e7f8073defa8e7b29fcc39df8bbb4269cbb326847e691c86ee7990c312d832d2879a1c2b3138a973921474b12a0516b94c7fb11d92940465a99cf19a1b2041c0087288939bd8bf0c49b90a5054fae942ad1c0714d634e273d63a3418854993652213bc4fc39804f1488501b715dd00733134c5f96e66b539f6a818487d422841754eaff2a47e56405a6513c0e7f581fdc2f9c7766de0ad826f6f112baa8a7c62e2d1f8500ae7d6d475bf2a0cc8d09d1f57390192972b981ebddd29a25f0ff73744035619f0dc4f429189518d61f61252114876ac087de8e3895792454d61909d35da34f4d83268161e2dc87d42c2ea13e7ac46b7b452d790d1f845840f217bccaeda87a35fcc7e4c829f5cb1b9bbc03e3d1e5f35fb35ee494d8376d05c3897f7962d0fa4fd47298f51013422cc09c727ebb4a59462276ad7512cc4a20b4aa922449233e6abf26549285faa36d8f2e7c48b0fee4007e9ae8c631a08d016baa62aba6e49ee1879a9bd2ebdc256a7b0557841d9f065415788ec259f477612692ade7b0212afcffe87d2106beae44d8e1cfcaac20354a8f2be53eb3ef4ddea39c7b20e80773289ebddb864c6354685cea605086ce3b704dde891ce9c9ec434c5e19f64567c176150156d1403ea117347ea9e6e7dab752c6fc031bc133ee398168a21133eaf8143b9347cfc31248966def6950b34299557309ca3bdf8ce4465a61d0b5bf742502d0955fd49d93f1bf2a24f2e957e9003f3516a8163ea8e3709daeec557f385272b55c3cf1f628313c859b03a7a731979edb4dac9763a456bff1a600003f45926d244d143119b9e7ab61170921954a4e0b0034230ad3c28420a74caa7de2f072f53d89687d03179c9348375d89d210b67e4362da16ce76cc13b8bd7d0956362e56b07aa0d533c9c6baae5744540721461c6464fc1334e69139de62ec9fcfa13853a7e41eaa9aae5b09243ddbc15eeceb91eb16759a8ef39820d529c5aa58387f3f311347c2cc1cf7d4084917723b4f193fab3f05cf5b76773e771f15076529ca24ae1a8efcb4351db4045d82dd6363067ecd38c33c899bf7b1d71465252d060bae2ca768e969a58dad4d597f821d56ec9c6531a34247a29882022237467f3340b78360e93582a358e56fecbf0883cbb01b988cc2e311c5711c36c37a6b83812da9d8d4d81158eec5c1c65398888bc44ada75238cf82c64bc2e15463e5537011e816b41fecae7a09d72e1bdfdadb1d8e8ae622125ac2ee489f9e8081aed9260c28b0a4536b905d77e39ea87b9a3525c4356ad74664b4bdeca6727b81bce5fae3aaafde070b07ba1af845a3ebda03d7817ab35732d7588d3b41e84a37bab993974e52fb2dbfab27f50430d22ef6f0eae597b22e30325611d327d2d74361685704e45696fea8d0035a9c866da603559cbf79f0f4d624a0f18478aba130a14bab123da9c66a3e630c4a08b193d5aa32c7f5bace131f53b41eb9548eb0fef8bd4d51017aaa4a9d1693b69e959881edd98478c667a08df9b047ac37396398fa1f4eb637a5d86c6551d1f0239bf719045f9c962fca636d0214dbd32357c2f806691063f562de744dcf1c95e71014f3b22a18b7dc4d3a55409fdfc0f46f8300e073daca1a80a81ceff9ab7b3ade015711e9fa1ffdfd8c105ead8a6b39307c5a9b7e5148056d9fc5a13bdbd37b2db563e5302d0f5b5f66c63b1f5d7e5e2fbaba6550f6e039dc167916c5a95442eb3986c2ac2d81c277a117f28935683578592ea85b43e5a4c7df3323ab47bd4e338c53310dad111e8ae2f9bff9b7edeb78da604c845b3b2614a9b5ac61a69c2b5c5b971aca639b25a0f9dede5659cad250a24617caa0f9d7de063216ea0f87426a4b29f42a6d30bbbcf646f8ded6d596dc8788db6101a117ba8a63af41f356ac043fd5be3c2a740021ae19953a7e553a1d1459d07710311326b60c9a20c56a0d6f3f95fac705fc4d642e50c9989eb2b2b2a934a25832fa78ff3fdc1075e903839f55af2aab68e18eca3329248e8a6a5854250829b4c9deff53ab57ba24152ea4e0b0ff56844ac0322fb6b638ac570467a7c724e4a160e356780cd18586b548e641229839b25c24b229b95e69965f2110b48139ee183fc8ab8230d655bff36600d56419c47f1d791083138249135193e42254e2b831b7944cad0185344e43c8f3bf795f7ae66af117cba21b714e1152f3acb1edb443955c59a5a137396d166f34dc7e3aff609f0b79e09aa351929ec59a9691a3c285129b92c5b4e6483690dc12108f79fdb7efeae2d9f9f69e30900bbf03665d24fd6faa0b280aab1402265870c1a22e34b2298f5b9c2be62e38b83e8c24fdd5318999d5cf91534ab48257440ecfc17ca98797be62aa09c018a97a3c93793d09abec010472971d49317724b0225268e13b2f2f0e23228ff2fc9c8902259b08ede365cac1b44a846a132faedd4f58e4fbf9244fc46494b29c87de4e89438f85ebeb30bb2e4f472a6ed3217e7a4504949bdfff7b8fcd56e1d26a04a2c7701861bd29c2d82111f1ba7dfc16ecca0b673d6deff3a1379da45dee01e337dbade3cafb078c03009063001cb92f28d5c7ff3d33d1b08ab472d349986bd398d25574e551d6ad8f73eecdc4b467f5ae0b394a25fe9a2350631bf2b297608b86b5f7b58ceb24a440237337ac792a9540236f4740654eace4ca34794e220ea1d3509122858959648499c58659c75402677985a6265b34995e07ff77250ac58cae19c0c86b3554edf9c4c4c855cc03c2bcb0e7b98c87b04c8dec9be3d4a9294ff30d6771c5f83f649a05c8beb3a38e920850237dbfecceaa97ac126236b5677d6fe33ec3e50eb5b0ecb9cd52adf476ebe1abed18d25352ab542b42eed21d7e9e35b69dfba47a4ec477b76020cc86c69b56b620a026d1470c0167fc9e33709842fd967b2a375103f453de65feb58c1c2c2aa8b44dddb351610334df0d9ecc4eb9761ca29fe2211531a1f3b62a403f6a5310a922b159f60f871e8e5c3556d974130c1a6b7992958492531a11d4af19c1740b51e801bcef7e62b74571acb81e95a9577d5d8c2960b91c7040f688af7b541d41897bcb66f291678fdbf39f06b59c479018e254ef3192cc7c3c76ebbc9adec6e0c498d6e35e24b3f18d69f9e778bcb95cc8984ee90a4492abb79849fd93d74b99b7a6437896815bade7338eea3da03fd2574bf47b955554e710ddcc57475b505aa308d9bad9f0b7ff1b2dc66b497f248f9a607b0285958b0a2b3ab4e75e102a195d242f47978b0ab10f536c6e7d0a677a0cb38124111bdd17c7d8c71040edea60f28c9bb94f0a91decbf7f21920d4c88eeb8c2e34eec8b49e6677811fb392015c9118177befae3f5fcbf823ea9bb9f29d822e2508609435c836bd8a77a9dcac80b693f7c90b6c1fda36ddbccc49c1ed5dd63ae510e6c9e8f4295f76f6874bc5bf48f0d946593fe8a484a7c09c9d6486c722e8c3f5b96b3d3be26e79a01a5a56c94d84bf3cd49b3fb9d9ecf1a8b86d0aa604f70da023012d5b8cdc8c469fb224cc4d5bdf41760d855e2aedc996e0c068078f60c9144418870edfd3cbd1cb000285c32d30ebc8b95a1b92670c756cb936926ff685a5765820ddccb24eff7846776aa15afb72650b3615b8a038c5c5eb6461021bb8e24c8b600669f25c114c40615fd76fb92b4893101a8ac45bdc24ae79bb121db42dd843c97fb9d23bf714b41ab45c2bbde976499a9ca5e6d83bdc6f836166bafa73e6499f71b9d1c3d939c7ad12072c9666fc2ab47de3f6a1a2b7a82b7542b447e7ee85b3f4164afad40136c3a13987047653de04cdc0ee4fed983b57a54f8e193532c852d5a175554c180ae02e52a0776d3572a2303790b225764abf984167a7074aa4cb235474b7623c464ae57e0c0d3831a314ff987af2baec10e55b491595463c20ae998d2e92966587a7ee428960a14023fb2251364e8d0a01af13c46bda0de978d6ae1c12a0aeeb14eeedf7f741258a2368c3d1d8e6e8e45748543346d06ea84e786c89737ca6f9f04fdae2f726ade0f4615d6e6274193d7cdea7eaf47584bd58d19974f94d38abe771edb4be06202d3244edf647cf685eafac602f3a347a29a83fb0aa1ee3bea6bee214bd86e6daff6fe0dafed3e84fbd1955dfd885f5eae1a0bcc1599cea4f50ea6b3053c938b477c04375fc49bbd3f438734407d6f4a3d8f9f318a35ebfeda231cedf7888eb348f4f5097de5753d46fba9b597faae82cd5e5ed8a9e871f7d04eb5136cebe7eccc4358533471a3af65773cac8f88e87e589169797f8f93513938278807bceda620821582ac30f3251f8637f94e8644f4c7c183139681d53a39154a2f155178751eee70407a6abeab4aafc38b864d15d7083a6e7d30e3f6e3953c8e10ffee241eacb04fe08b7ad14dae111e77388448fb1c30a61dc201269f1a2ae89c3b213fab636c5930b39b48418622375bf113894c25d638607207e43dadc51ccfcb2acac5d2a9bbde3f9db51f6fa60019337ba58cd1cba83ffe203d0e4f61164aa1c9835038a075ff0f21ea80b939e0c80870098d60a15a5a08f8250870b0c6e1d09ec7e964b9e133881dca9878970fd66cc0d25423111d443b7b0043f841c16ee46efc0bf8e1abb440081b3be6e847417096b5960104ab9bc11e0eb612c19d937ec38776bcf14661889bed178b399a078245722429f1d114e0d112d32212ef3aaf4f820fe0211112e3876bb09c73f976a3e6752ef6d7883a07d123837c0c0fee508f6ab037aae9479114e371b7a82a8271c411bf55444de249054d1e1fabc6f98211bfa16e38597f7b3aac2d4c2a921f39d38989c36d94d68910da713126933d963789c340210875136c43436cdb87363431f30cc9e071b9a7e0da3a17fd27529082980b965742b4bd561d190f82891408e599f6ee3501fdce08a33e186fb01aa0f0512fc608b32baed93bb852134fb0259c10f34274dc335565865a961872055565780a794519f58ac4e27c52b34a161edfe613ab05c7343b64d0131670ecf59e016b8d4caaf0bd47182de81941f0d8a866571303ad5956ba81023e20a3352260318a1fc479b98a72e8864a97a5bf0fdbc24d5da53e0a6c2b0e19ceb12e6c199899e3c074b23d3a1cee602041e670128824b7dddad4bcaccaa25d883d168a70f29d8b35f5763cb38fe71109415d3f28a1dfe6e76486b646bc53eab605a6fa9f788671cfb5c8c606ab9977aaac19474fbb5cd9ca016e2be060d31d6c30c9afb4c5c6d8f20d5dd7ac00d5d67278777e09d999bc0cfaa17014d463ba23909e608f9406904730735570749529fb5cf0e81af88e8f0f6c265668ae8cc1e08efa72f1a6245aab4f0f0d94936ac1140b0bc4c0cd52a623b3347d3826f92fceab5f7c53ec4c11361fab575fa5bbd5986988bc9691b48980c87a4563ae489b521e843c4a0d95ce1a44f6c071bf9c91eecb8fa23f513051681958927114b9fd57174e788d86189890b6778323dedf28effa93a36b8b44522a52196ec91411dab9f3e95382c32e1a69625761a6ac5f5755c4831875ddff792a461cf073dbbea2027717563d7bd42bf56c7a355e25d102aaed6fe923e23fd7972882ebaf10bb49ff9e3f3ebe43c4d2447d568c5111a6a71d89d1eedd3dc8bf2dd7559e7877dd7aab1d7c4e2bc569d99d9c5bd56c55a2601bbf2ef14f475ebf8b8f5943ccca469da91afd4df38d8c59d792d131b19d2b5cc9a4e43caa5aca73daf50542b137f0c97db565d65a073939446b8a3603037165d26956030cdeaf3c8eff95a67650c42a5a589bb419816a981f3b81d2c2bf617babe2b2e33f690367aadb43c234fea8debcddf6632b46758d246731de0709650fe9f382b94d85493026fd723ae2fface5c3a02b114b46132a05e9c1118016f8dfa0484ca27c622ce493b55d7783e60b2a5ff7187c500050f5f07f4e1566b842154aaf11fa14e04c17423ece22a6181eb98abab7d0c6be950141b44b793ba5e14f94d2388931b8800de4e4b6c7adceddaed9c55de36c3d5e136ead132be548bbec1f02eadc3a4a6caf5d0b0cc999168fa5cc4eb1a2b0499baa8f9ed1db890b9d6c0ef76d678c3f3dc4b38cf497024521d1857537bf2831ba7b43ec6687228759fde5f3c36638b267daa3155908a2c7d4c9d4f5883c062edfe270af001399f0d1c52af537b3f570c30de69a73b397f21fbcc1e617f07c014282e1331bcacebc230c112333aafd2714c97f1580207a024f18315174cff8a79569dc18b59e12075c6cb0736f6f90285dd7144f8ebf124e3204c535049b713f1c182720494c3320ced465919e68cc5f300791c94b7c538091a66911cce1554a0d52798a19a9fa0b8ef8f35bb0d089318971f13abe34425a711c7469bcad908babebc45a13c4c4dbfe7f961be61bc9e43ca4fed65b8cafd1ad544e6cfd73f5c8a204902adc42fd94ce0ba0fae64226e2fc5e06335f6baeeb9d84a40f226766e61f26d8c34fbb7c0556e61237b11144c2725e776eafbc86befd8ee573973f4c0038a9084ab1676a5949b65d029e8f0e250bbe935e8df2e718a391375be5a97c6de3f5f23d8a49e3c2a5802a51645278aa4e71e3e3407aef6fb92551bafbeedffaea2046a4ca3bcc7b38286f9f6d85730177a9bb28b06a026688d92299d10248beaac4d47070e2df31b4ff2fb8b60e87e2595fd7533026b09291c981e591f4f1aa217af4317ae1c674df518782490580455cb6cec6087110e3eeda9e9700e0e92eb4cf56de7dc0106b6b84d34688077c07cd18b8c507506247ece76c5c6b8f5eccc469f30b6dd47f5565e3ba395dec2464b869ab8db0fe15fde62ca1872ed212de47cc26466905ca6f835e6e1c326371477be744c90a926d1a586ea71e7ac785d8353a1006169a939ec5b6769fc33f67addf4c9818c370aaf84e315d3c8d06a931634039e33ecc542e79d511fe2114f50288d382769b3a0a9051f424f01fd13e6b3613df7e7317e9531104ccb97e2cd4d923be9b81b3ee851722254203b6e12f78510f259a6aee7e3c174df18c8c6730609d3bd9216fe15f620fa39e8dbb987853a2804734a92e1069d69867ae66651d1e627c6033e2b36280b963fb341ce988b76baeec34c2b9dfa82d52725221f03137d97a69d645e5c993eca2093f5466688118d071ad948b95eb2930a42f964952dc3c0d0e7f57988ca76de733b2b838aed04c96776befdffe0da34d49c94b8de086f05a355667a52a4a813518201fdbadfb9cd12b0deb9098a90035f7b0a25794369a47cbc79bc9c4e45ef413d9ceb9e6874a660f2f0d3b27459055395df2abe41d4ed64fb8bc520c55f73bb444903115f52c2b1975490a203808f51919e3fc396d4a353ee358488966b01721f8a74e8adb6f4ab1ed4e464458edabe53d4412dc1c39d4dced050f3e07228b059500ec0fffb513730eec3e48c1957bf4a8a5d7246e63bf85b15150201a9cdd84e36dd4c185c7f6b38369594e3c8801c80530b2697829ca528da3fe984910e576a1e9b634ce3ee5bca8588e6dc76caa0730661707ea2083ef8f3c33e129133e87c6225aeca1fca33445c04c11beffb1ed989bc7ea51ea431e397f7c191cd8a800730f08b7cb0152746717bc6751b53c606c252dfe5477caca8260c169b6073c4fa27dae316d8ac2f21facce6d7d53b5f1a05397822b609efcd78866c358b3c01042261d8c07e8709331eae306be0cf92ae1413961a8e9868c88bf9cff064626d91c21d80b557f3bc400a3411a58366414c740400b0016ba1935de2178ef264ecfb5dee3bdf83bcf8b2bce6995390c1338649a42a06d5d211e2caa3b76f7e7e0eeb4b94eafb4af667146623ecc5b63a1688aade493fd019442f81dc5e89f65114e3719f4920822854932bddfff892ba6bf308579eaa2888990efe206f3f04d3030e08887b20104578a3ab29098f3e624328c20eb2042eb77151208b31f0b64e622f48890458654011dcfcfcd85a9603a7854d4ff2be14013f39b63f5d91248850ae5c520425bde8138fe086cc502339109ea0c4ac0958484fc2be986b86a5cf00b299bd90a4c690982d5485ed9a6b94184e4ac16fd5668babf484b003fa3024cdbecb0697618014406c47c38a3c3d5f80c80a65e94fb83b6d428604cedded6ea33a5b1112d5f3d73bd2dc522685b4c2588773f3d27a5cdcf0955beebdcbcd3e6fa7be016b33d018d3e30682caf2987b63e4b5dcbd766caf46e482921f2d5bf5108bd0c8739ae73955301db8d23c10703d272aa279332e8492c1935f2e93a64eb4e7d27200b03f7c06f0ee2e1b918bb8a25a0f6014ce83b9b82983e1ed8ec03aac5cee2a8f75ad02104082a523aa22e76413035aa2e4b3e34a7c9893a13401e42dd03b3ed0086329702837c8ed0162ec1c3574e16d870c18a87e381327486fa90c6c341160f8f6a8b4b74ed1e5d02003d83860e5b9baaa825823fb75c245fb9bc488211371ad61218c096b43dca854042ffea220daca7cce6d67f9cbc589a3520812ad56c254aacd3d47340423cccb8488cfe29b9717d77a98b0bbfed90fade1d1715e56b9348df728e9528a7102bc5c443919cdc4d6459ec4c6a36541477ec12377343ba11f93a9f12e8b5543690e21e03e8ecc713772d3920884657bb70d1d573d1f462f03a3df665fc2e95974e9f53543376cd72354a40987a1bad6ad41ef093c12cf52fce741eeb2199e9660cfe9da4b1ae2b5c500f1b49a77a7b36dc92a182c5c1b89aa01bb7c4468e049520026b85392cd37b0d8df0f43669f026f221d44a044405cd76fb824d27496e6dcc7a8356880e586d4870ad74f65b8e26c65b5377bc3c032071f2e83002e75998a20cc762858e4bd61746b1d18a4f8db45aededee7b1ec60b630ce8ce494c20a63cf94cc268012a9d4b5e66ebae2db8bdfa65e0e2777567398f97bcb02b8362357a58edeca721f25a02b35517504a52fe84160d1730351f8af3ba3c4c5ab469cb07b0d352599028f642c7509feaa62a5aa8aa803d654114b9be6a240ef3166242054346d2d4f203b8bfe7c1a3021fab04bfd34438c2f2373767e43903c23d06a7c47973649f0c162986f4a586a94f055ff8c418bed109ccff50ead541a0218272ee2124321894bf162daffb7d0ccfa70137408428b211ed0d0723c3fe7f0cc7d282376a38bc95ca46f693b358cb660e1cf91a50f2d1a5333f341a38551599eb09019f018aeeca62413983e35c3f7a402a38a956bd5dc74d320795c89c783544d195a8cfa323c7a377d35a805e9dbb1743ebe1da6a2ee850ea1976f8179f91f61672f283d5585e059573a945084ce620836a3b9fb17a8503df1a48ab78252208852b2ca47e6365927eb929ed95f6826419d912bb587a6bf266c296dfc76da4b36a8f2e20e9e3f5f6403dc27ef9e2feac24c592fa2556dfbd8efa620ded0c0ab572dc3514246194df8ed52ddc013d7867e8965b54c4c30a6e8fa932c188d41d026bf562c707a496e66d4add27f5832b5cce1c45dc5142a15c291ed1aa377dab8f1bc868461926ffe910ed4219c000e4e5c070d71bf0340d6745ebc598b5a5df0211b74426aa6d181ade984a83e96e92a3141aba4577c0d1a1c6bc4be27423388e607f27d0ff47944bd9a4fe6e4b0e32d2ff33b5b28eadb78506282e7d968ef4e70a18c5eaccb3b403b77fefe70a9470cd22c4b537faf7605df47fa39302e50fcef71a1d8947c04f8195ad2b3141772538588a955eaca92cc34321df92248257fbf80e46c6c5e689f1940b738b22c9cfefee30036da239f172c9bd4750c9e614a21f4b06ac2bbaddee10ed3db227aadb38f836c7e63ea86fab3f6944c9c1e0f5b516b826d3beed5fa706abbe4adad308ef79bd395d16352f00525d816b716fdfee3059c662a0181490df1b878402e46ed0c56a61e039f96e0a739a49904663bedeeccf87745002dd613c8a90adca9c20a7b7e1459aba9bb3e0fa6ba5e9650fe7f1b72c51a4dec6315d54b9c5a200d2e90ed105b517ddb1cbb3dadf3cd56c053a72296c163d209c193275432e1ab01160405b8bfcfacc310c908b947cc496bae0140695a6a90426268205c68f90627c90f6bbeca0175be158b467a2cb0c579137a274c08f37803db12fc4433766881066d8302e1bfaa8c82cb5207f6a8d768e7a0c0a0a465b216b480ae6a44f4960239bc8274071a2f73834118531034601cb41d6817013324ba23cb8153100e0c4705b3482c030caab813bf8e1ceff5f99613c78665024d508a6674ef630a1e23cc3ea8b0679f69d7d056de9879dfb39bcba90b4a54c2802e60a62741bdf8eaf88de29874000fc7d1f1223a7b0ac890509c0deb486964a2d8e52cdfaa529039a57213b2fd0b2c1e46295ea2d46b96e47da5bf268de3670c25f3b03a9f661183d185e1c69e453f58442ac6f3db8461a56752fc274c49868e2e2e5468216868763dd87083b0df34e151ea21a9b4c1c5df8f0f6b4e427e84bca0deb9e83976e09e2fe4fa89641ddd8a78964809c4a5210b08d9e341b1e8617bc6ee4b185ef0c0a4e69a7c4937d48166a60fe44de65fc3ccd12616c3d2411824059a227b49dbd01ca9bc6b2ac5b9414dc04aa489b7eda21c3eb52e0404aaa1fbb0f11fa6108c54f25e443a50bb8b5d8729f5f840e633918ed0d396d5a7d41cc906b7f86fe72a550576968543415c3ba32e25b320c0d2818acaaac100785d4a5b2887fc9d18810bfdaf994c91fcd7a30f125d3c87a551bcf2118fc54800ec89931bd100498117265ea58d8a20855f291230b4627a91f0db5c97ab842bf7b2d447602252aa6d5419e114081d9e23e0571c550e98dfcd2d05aaf75fbc5eeedd9595be486185fbcddc8d0aedc2ce679800db5db8add5e12a72f4ac6d227c1fd25508a264b4190c30487b43b169231dec035375bbbc73c07d65b86dd17970d519b7035906aacdaab2516e25b9ca6e71a279ea9ac846b5ffcd8d5826164ece7b76935048c54d5d7ff71092854625d4c989d7987d3252e8fb106041c4a07ad80096c62c305f5d2e9dae4d96aef1b2802c848ca190ce79304848521cd436a5eaa04dc450020b015b500b216389f7ecb0ec6ba5743b058cc5975ca64c5f4c8bbcdc76fca2cf3e780b03f308ba51fb6580120ffdb5fba9da1f40704e2b9c0f4fd41e0b6c5a81e792eeb43986d9fde9d36fa2cd3b79b436eee915549b131eb38a09900877cf2b4d802fd6c0363dc7438f45da10f3482e839ef356df644046e09ea21870e8d1c541d6f0ea964885f189e5d44a27779aedb97e38a613bac283672ba72ee5bcb1f2e0b18ccbeee5dd328e1e953d6f8521f24b63f3476aad63e32c8481cd0cb3108fc9528409965a67125dde6b3b6329ee6ef17e94de1cc71e92268c74b50773550504801df005bc48c0640784a5a4b86237dc79e97293413dab9680ffa8ba8a28145a05f5c8a2ac75ab57607f13483709346ac9650df023ef5d63f6bc8bff83ecee69a158a5e775b5a75a1dec042d0dedecaa1d459f2f8dda683e83b0c01e39f81a76364849be29b9f4a424062bce8093dce7d19b167d6610e03a7c5241f6d35e9f8596314dac80f63d19652f4530549937c3097a7c77b360ba931d67057796676ea124f91b90220978774d00704625b8c69b620e2c0927188aa93c746aff2caf3a087e516d81fb79554c0eb82b43270039561b450db07cb4deda9d47d6be9d68350db5138597808d43f2a950ec4a743dd92b4d501459bd55ade26fa42c6335c1c988c64143c282af606888fe6bb5c5f587b2bde7e741f8fe7dc3d804c13653ceba82f61978d4a5feb1d657f4b55cecc0200ad845f089b56155c6ec885592217fd62ff9d68793099b1be39285aa53ba5cd89d6a1d6f32cadd3ce27708bb1b5082e9a928169293d82654173eaf4141b71f7b39f8550aa1578e7586f02e0d1fdef45dbdce5052afad9de2fdc9ceaeec5ddff5052172c9928e049a3b29ed74452a5a7a4bc5c655a690595a76d3da5b89b8f353e230db206c9ab471895ba12c8cb7fd6469be9b882807f091156e136b918f3d67e3ecfcfee9fc4dc1f9b12f0b10a2cd66416f02353f29850de2ebcfcc8616d126a50e6019735af7bba88b4733cbb6c4232aaee64137758a5b20e85adb74df3bbb12f930eeae373fc700f2536ba6ba744f582bf5a28bef62874d47362fbe38a36646d516f3fcb3ad1ef28e8e6ffd1c181d275c718f5caa289adf5cc551918d93f0f9338bf51a3d8c9b9c3fe368cd288a96aa36cc9eea0de38ec3e21c55c4af1b32432ce33762d77f6a96fad532be60466d54d004a09612fdf39175ed7aa10365e05a49100592c60b7e95c7ce8fa4de07ad898243c56250b37085379d86c2db37dfe42b970f2c29bdca53cf7350bb8f3929f36b646022fc5b964fed21828f370666816c48ebeebb6559e59c46121f236711e8956fc52399b709e366e740700f923708af9de3920cf9ad9d209c9c396783e9ca0792fa5d4667524a1279ce7d6478346df6a695db4ab988652252ac74b3d943c515263bf2272f7442228d2b5ed1575e4287d6853d26a84b1fe6c4b17a1456c9e8884de571f2e7310955f4d9c5f9acfed28408fcb9cf75b0ef91b4b20c0c963800f7daeaed3ca307f478c8fd6544443e1cc55e4a7cf67e2e90ac66d960245233ba585b337b9e59c6fff7a515a3e0c4b61ec16b98f1fd803cc1c35923771605d2ab452486c0b2c2d38ce9ade74336f784302814551aed15ed9425cd4761a19f23aa3cbfba91541642a90565712f374e4927ba8eee58da597d8c8dba00018607fdfa270af314dd0d06fa0ab0c1d353dcb294529ce5eb5caee45a9da4cf84b1de2ab1cf71411dd9cafbe48d25a2430486ce9563c208cb0d4355069eea22a15c013dbc8027387d59f6e52bfc6d4eda9af32f98b045a2e7a1be30b1d395631e645b817d891cb3059bbe8c1c6a9c6710616af1ad8d508814b531794b201a046a59e2a4f8ddc9e1e0013eff43ea37a26622756e5ec62c45dca84bccd10b6dd7e1bf890c6408b266c08aa825c8d5f88be325885cd6c25ea224098b61e2072013216e96ceb05fd12f3dac71a0889c116a9b0c9adcd70bc369f89e357192258034b850e80bb862a620c74750a0d70f2ebc3dd56b378a255172d98af84021650c15ae43ff88bd2e7020c7d0385fc4de3bc03f88cf9df19c3f2c22f183bf9877557b7c61b89cb0f8309b7a884a6deaf03facdcffa0c5dd300f318744473490411c717e164facb308323ea7612f782d10b91eab79d2e8579db30063e12d286715b056aaed988ec61e58fec58cdf305f22ff472fafbc1087297005559e9c94ddf021630cc98b7ba8c5a37fd97119bd5409fed7373ba95ed10e8166d8feaf180a5e62266844413f8245c23ca02f8c4ff01d6ebf189f0107b9c700c589f9248ad985224f9596f10514a4d633f3317255c4f0d09e3301c457a2cab61819c3133bbb14abb21b76428ec59f5fad0914592c62eaed3641370bc6e05c78ed765f26d4b0f90d4952e8650695db24cb5f2a8ae3f72a324f8c5c4963de6dfe31089092fc0975802ebe5947a337140b01c595e38379bd95f3f2c65f1256d95a39ea8dba4883642126bd7c550bff6f72e4c3033628e55fb1a60ba9312cfceaf05c93f68cd1001a58d9a0a965c789733a78dcc5b9a1e2729c4ba3218b98ec871b290307d83c42d0967c1e611610ac02349245de65aae7d15ac6cb2b36953d8c225c85b0a1f43c4fc11289ec6e9531cb0e7a309b90683fa950a1dc01ea2d4201c941a75d600a14a9b0244651aa59735b8376b5496e30a5b46e74ddd33ba0efa90d39607103681879c9bcb9c9add21a6e15097e3bb5651c921d38be8c86136dc6796e66d8a66fc6d4d3777a4014800b8300b9c901e03482a566122e806f2cbe79ef2a2b5e0f905109fd2e8d45d14d359adf91b3661269808b33b87ca98b5a97506844d09e6217f1cc9a82567c675d5c1eda315638df20d940139c8ed8694a0a7ee4c22f0ed20952ca239cb542f19a5b29c19ffd769fa1728c23d433504adc696af3af8bcfba6746a0bdccf9f3a6f74460a5dc2a32ec8aa41bc610776c1241cfaa12ab232a6197970ddec77f2128c3e7ef1213ae9c8c1f3e5dbaad0d42a8c2b1cf3b35e302120b04ebe20e69c4c50407fd001207b445bbe9124bcca385ac9941d0d2f71d6393cbeaba47349d29d6033d62aeee00de5055bd8a90463f613243b95917ddb7a43fc41a52b9b70aad5a024e3b5a9d2d4b419b12b97947016596e1ca021d15b138d7346743f0e0dc986b0769cbe7796365aaaa33c003f41cf83aa8b09cabbff9d38047b2c9b576c1e2fbdb465996d8e0c113c21321153d69fbdd5dd61a01052a24a478734e51c025cdb8b50b165c9480b00765eb0eb933329964c9869cb510f596d63e99760d55a0705f12e4001eb323cc97a841ba931b9d4bc15c5ab4ee684d8669bb8b371d4d5285723c9657e37da7fd65ea0836f9ae4394286b3950f208b7e3fe9856837da3b730b5fc9a869e2beead0f07f7a1eaa112736743c6ad5bfdace08d246a9a9b59b1d0dec4e82575459fedd52e40296147a547bec5951e38535f67e91adcd50260b4fdd2c89df4641ffdf9b8be40a7136ddd82c1e81b6ecc9de4bc454319b3277a66feead04052f68009ac7cbf9abd449b08400c9d70eb360a317458a89a5bacb67c8ad264622ea6209900194b2539cc97871745fa5637eece06f67904a6235040a18d88a6a43f628fe376ad5879e041ec7ef0901421b669bc167c101bd66e8991f2e10a5f3e550ed69e1bb381b420b62c6c80331b53e52809dba3cba1194335901e5401fcac57ae2b8883e4cb712752972d15c32b8d423b3d6c44dc9cbdcce398d625762b587c440de8f5b5cebcf3bc62d8c19374e69666192a118a64cf264cbb99ea06c47cd26698f50fe3367557f10c716db0c67f248ec269f555ad53961c69c8fc645d346b3dbf3c42fe81bdc758a418d13cb94b5f1244bf885d0b88bdba5e62858db548957b86adf401de8c04d1099d908ef624494cf9315bbfcaa2847e926bc19da685a1a3454c4f910d153a3050ec81554f7041bf5e95f2bd3fa6baa68d084c94f8a307611f0b251645416e3c91aa043524fab28d41f72814865702665829f2aa2af324a15414abb1af009a630d3dbfea3908120e3d06133a667d2105b3622b2d29d977509ae075aab00de2cdc61a4b60a9208ab85068bc241a7afc0eb12683a86b888d7d4a01454b30bffc5b9b3dbb67301d056811c973928b3dc3cd053c52f35d571c7e3ad1f8e215eb82f7892fff0dca0e7af35c6596e994a7f406039caa59e9b2109fa51ca6838bf04b9f97e770fc21b0709abc2b0761236fb85a3e9577d932b6f5940ab1acc9aa71bdafac08e5020ef64c0c6ed1d2e1735f6f7fbd07a94fa4ac239de98a8995f058ccb4425935759e63691ff7a4b29ee2f77d94aa64cb0c91dd39cdfbe357d59d5bd9797f4e883e8d562fe47866999fd9ec43a6f3ba9f8f0d437b91f67c45cb4bc40d77c92a94904925e1c22671eef99e217287f54d4344b8fa2b8fd8de1068cdd6689053215c7cfb027559b287acfea64c86791c3f304eed17ec89a558c865dbef26903d4a0f8ff42ce505c3d0b0a2fbf480d59d93976367504bc8619763d363967be6de760de1e1be4671f7af114b6fafec7dcc8c97ed590f33887a83acff325dd1e3c12e0256daa2f2a8382c2a3be6c277ca40d3d2b272b2c5690510452d78289cd305afb50a8ec21d111278821bc0e64ccf66894e86566842f50dbd2f64bda73c2473bca1c04bfe181b9eaa29c572677d41c96281de91fe3ba6a4079ce9ef3b357720ce908869fb27e5d50be0de727267d2c7376ac85dd9cc31fc00e22b006e48e14144748120860d6c597c840bcf002013a4a2f0275b0a45061d0e45947026e2ecb11cf1fa9571ab392b1c1bcb8c2e9e2eb8ba8e53de27e0d0a41eb088a5cdb25f0b771afb7296fe3e983fbb013e2949fb4c19ff5f048b4c273662162bc19ecca26af03d4bd92a5cfa0a0fb1cc46e3fd9cf92f9bd399a00c97d02cc4993efb8062d8f5c9e3c8f4b3e468bbd9dc9a3534103280e7e62c0b69407e52d5eb2397915e3747bfbb420d3d7121f8a9dd1d7c6f564c7c547fd1f21d03797316d71d073b767dfc303360fb9e2460dac04197453d435f0951b25716b50563de7cf37918e27d52e36487f6e88b0741c40a24a2b9f29c0a7aaff784d2c46d47e41a1aded9a9c02ff5c4ff36b031224d6025f2af856222b713cbdda2eb580b3603fb044522be7d0a2d49c9d10b2a4cc4d1d40b75d2d253eed1e9e9d864643a1ef096e01dbda23c6d59a111a5a7dc0bae69da939e32662ce9a917e59fbc233d3df3d1fbf66cb40ed113326fd727fee9ec24fc29fe3ca5bdf10549bda6e9e19fca586a8adcdcbbe6f9c940e4168cf351cef1cc5257138c42c5996352f756970cb5a02c170d0c7f716978a547999a12ffc5327dd15047842a872b5e3bf7a560ae3e4c9d3bde943ee300422f7ed45dd6428e073442c11cfa0d32cd2b08a39414cbb338c361f0221a0a16baed42289f12c16b1ef19ff4e921b41670ad59120255c3e869cd7fce7fa2d053056621201226d187a78134f07e64d60a5a13692d81c642d3b80110538949f4ea3519eb5c518a28050140672a287a2020d843f9d58157095cdf8c22c47985758845a57becacb1779cd106d26203edecb4b491cfd3ebc4d39fbb4c1d578c15beab4f3738a9f6c92e52dca2414e6ccad645c234fc5dfa117eb9def8bedef268479fad3eebd587b86907269d6c3c170206576d559cf86b7458d7ad1306e9dd66fcc5243fbb890a927353645211b222b5dd119cd7e75b72e8232a654dc6b28bf88c7879d3422bf1e61bb7b89f4a328908996f3ab103d54e4124cab292275513b330d6d2d4c4f6d8b39ba6f8a903b3360d377afe9721b3a17b25a3cfd893e8792fe1888a4fd35d04f5a16d8c0e1630ec0b4bc9932d080df15d7f25732930c8b6ecfe7064ce5f42014b19fad987d5e768a8838c5d78c8293e9d4b1895eec047332a3ea372ee32e6a745e353956adf08ab6d6b2ccec02cc7df5ecdda781bce70b74dd70f51275da092efa61a6add3ed7dedb27c83d679c23ec45fd732375362e4e20c003fad9cbeddee2b13c6f60cc03cca637e64eb8226675bbe48fd4fc6e22909f4d7814e95da328515e81e3dd3e72b79bceaffd66e4f8cdb96e6f5cffc58e92e03b2f9024ddce9cfc0beeb7f6e17cf19ca1edb72b996e9098e74d78cf5916b8ca88b5cbacd9cdd24ebccf2ce2763f2e518247da537c4d22498000cacf999457c2207d1fe62860e1f32cc4627b1588e6d10f0a20c9f09d875a971d30fd358966321327cb3992b5aa7e63615c8d162c89259a6e30b0ac6f4e1f8a7175017c58bba4c00e00d4dfee1e1c224932c55b1721c8d8ad2c5c3c8c02130978e55f01619e17a224bb90103c39b2a67b79a548f3561e0368456f5ad9eebbff768f667e16871d7e927816217089ce5fd68964a55576661e09777f07d2de566af5e58efeea27f3ab535a441a99cccef98488fd323545b4854224f0954d19573526c2aef25424325df13308366d9a4e87611b022fa98013121eeb1eaa2e153d102342a86000d1d9533c58ef2405ce0477ec2cb575a903b637a2f7dcea108a73f1d0fec85dd7be5534cec0d5297d8e22770293f180868bcfcf9ea60be10aec4490c749873288fb82eb673dbcf9187fd37eb7f3ac3f83642e2908f2bea7950e421878944dc8925a0902d56397bbfefb4378ff2860ba3fd84a0095cc179162c7e353359a3b6f9d5f60a1062a781ac6100a1601988c54950be8e9c3ee146f9fc75f1214326b059634cccb1844a2b76ef035858a9b2f0371b0c62109f1e11b814c10c52c7a56a56365d157baa070264ad7196016cfeaaf5d509740500037060508cd43fc25dcdca08060df4f60e37e98e1b36bd4cf37c4e0b1a397e30cfd1519b47b2055a3a82617d44e292b70334b2ba3bccac59d8cc7f68b4a130a3ea3fd163b24b8a04c309d7bcc15d137dfd6251c4f5115c4f66be6cd69011796076806e2339d78e0043c6d410dac53a116700202c2b6dc8fdd6970362ca871a31f9e4456e7c044dee012749678f4ae0b065d3c0e06401aa0e70d0086842718b4897c2b2122244a54c1ee7f395c56c4a8fce8580e9714318a5f3a92e312c546eda70e72b84cb151f9d5919c2e2962547e7524d7a58a1ac50f1de470a922a3f04b47b99c2d9273caf118fc52ebabb314e537916a9f9e13e6657fbf71f8f1564facc699b9ab03aac054e9bec5c5e473aff1e76438d176bbade131d947d2594cf4558d43257179214ee123a814edd8cfa392ce9cb364f66ad1b8032b663593ff5687004992083be1e73326e58aedc0fdcd6aca76e4c996c49c3dc1946050375bb991239ab5bf4e255d38c5363e6edc332ddd6c522a43a89d405c0e09ce501e796253b21290f28d9743f2411d6352e755c1600aad249a8207a7aa8b7090724a541003a3bdf426a6317a38402f7ea1dc3e768b15bceb784b12c1825f16e075373486da0b3767c298a6bd9da91643b8d7a6202c1d0603d7936a94a130e17ef72f18a2a1895ec0d37dad34ce6383b17a1773ba049c7889926a9b7b315f04e55dda58e9129cf6976c4d70e90d75ddac619d4abf6f10811fa3610461060f66ceee9641a8be3d4f9ca8ffb5d92abbfb72f0fcbd214c732741f9324e6218340ce236a665c67627e1c0b6e837844a4cb585e51754e760ee3457223ecaf69c079d186b6bc18d9739e4b15b6335256b8fbe89cb665cc5ac945a30c41820614a60433e5ab5178024086ba0111e5abcab9dee4d33e811022742a07fb33874ed29f497599bb8287923c19ba19836192ca24bc7c32f057ab3a323052c407ee895a001136539befe87a1695374b3187b24b791258d78213d07822c127cc6d09ff1426b12eb91f4fe0cf8d7a89f6b5503518a713a23dfa81d375d49c311e7e2cfa32bec1ce51cc2fc3a9c141ddfe84fa3e045e10f120acaaf15e3ca07d44fe2ab81cbd6f41da5e7dafd4dac304434ddf3ee480d0b77e1bec4d630677e0d488dc325ad163a7fb8629c97ef75e96f705aa6839e90f6fb425a305355f3e9455862bf36eb28e360809a3703307301e4b43a72528f3b2d1f8637b22557cc61b6e45f3690e92760712d825980b062d3eb67835ffe3c885cd88a491463f275d965677e88d94a3cfa854bea9407df8d39461e709a7de5d175fcbf094fa956a27c6f29f0ebfbfcb17936f4a8305cb9096c236f64484da6acb195bad55627be51eeaec3dc20d8ab5e3c79f172a4b8e0c50dcd83373947deefab9fc93cd3649f2e82d9d39f00b6d42c6a4498923ec34118dc47e004ab16045e423f211dfcbf07eca3ba4b59715b36a1035ad3ac7f63d1dcb436dbb7c5bdc6f83283e746c473d8cbabfb48e59827cf8747e7f9898fb0b0f3c602b833832eff21317eb38c4124e691cfacff9740bc7456b52b3e62b79b1e6bb646fa3e039618b4cf2d31accea5c790480efac82cd55fd7d2d2f12b7938f75567bb7aee90d6d4ce9e0bac0db6b274fe1f865eff312c15b9481b5b46a62553728ccfc521551110f0a544c84e2b4c5952680c28a84d00fd7b509587062c85b032a94abb1383b0c1d05f594424583f8ef6eba1fa602f12e0e276d24f2cabda666a5ec58e339e7b56f75be54bf53b9e6e52d0336b9d9fb90b6cb10e759fa14f65c91dcfcf7f05546e26ee451e9895346119726032f46b41a94d269825ffb8c12c858145406be1b0b1e6b319312d0229e4a03c4dd3bbb718626539be65d2fa484b55a852e8386315df4291bedea2735ea9c046260d2c30a143f6f1116951eb03b16aa319b3dc75214920d262ae1bbdb7f5ec5716f6e325f2b8415aa8c1597e7e90a553ae4e3cec34e91f4763bd6ac7e4f1928b5b5261204f99b50cb52571b45ae51d110713e3df0d30bace9953ebefc8efe4323bd7b6d43322de686cd9ddb2eb12c0e1806169d6da33421749e81f2febdffd1d454279899f0a4e9c2d9f90f7fbf7220c6785d1c0a77b3bda47fd47e5c68bdce9aed33d9b8a98f05f3b7f33e000b89c5c55e7b00b99c6f69f21088f5e96337781d892996b90fe7856f09c246055809ab128a2b6ade5d56bee49a949b6a7d053df72bb8f81a59e316e2a126c9c7c77d878ff05850d1969a5c412c31e0ebaf10ce8616928b72fcbc381ecd060e8453272400c378ee2d0592e1726563fc19544ea5b444b0efdf722be08d9b031c585b757d01d3f7b2f98c6e008fda6a6fb3248bbe6cb33b019d28a409de1f4d21323966098cf0637e0a5e10d6a0364436e403eae30b86a6a518fc13bf1bac7deab045ee9d8acec658468535832e0dfab2241b2f6ec37607a5584f439a2974a724e366163360ac5b6caae8c10994816d59533b6daec97a0ee4af68503d295e72734613cda1996e94234959b92b01a5aa4712ec4ad6be283e0da94ca681734e4a6951c1559646123fe78e0d016723353ebbf81a8d217554727b3c293d530735c116dd1ada5f67799d468461cffcfdd7ae6ea5279960e3ffdffd341b3ddb32bd325208501f002f08fa45196c453a00d80675800d2d0752925e7babfa7f0b621c96eab36a5f69b3d86ca29a13778624602ad95d94c5c28e372acb25507ba96119e43a61a240503ea32dbd170ab1f637274018afaeae28c76aa9a359cfb7e8104308082298ae37fe4ea4350438dd8278adaa4d5abce1f074c3f0af24b3625e5de3adf8961ea372952826312639247044df5e373d8d1504649a9a1f89c38cb8f967c4ffd0bdb73964cabb76e9796cac904e8fcd96462eb74f067a536dbb32a425ccf4093257ca630c24d1269d2d40c9125d2508228ef5b81297e3317a600ccbed0346cb0f97db786577a374aa5a637165dd83d907ea17743c0b23221712a145051457078e971335282af946ef8ab3a5d5efd87e0a0367ceefc0efa392f2d3c386dd363510896058b5237048fd3e9862420d84fd280a77735ff5ba89f1d7a27b657d5daba57c5272a69e40dffaa66d278038ed0a1a0574416067584b3dfb4bc54c9a0052c68a0a413661ff603d00529a4431ed222a982eea834b783fd2a838c6433ada4eca1ebb11b46532baa24e4fefd8db9093a2e2b2ee15e5e27a1247a103960ee4442f3dd3a97de397b6e88275eafb4969028ee9566078c0a18a1ecb941036ec74cac4c7a22e951a934b532bf29fd5874952f752063569d24b1a91a68415bce690d907d1d5ce8340cf80e603d200c403d0eb69ac15ca161b9e2dc41d832cef26cf8d25a4a590aaa9295376ec56f3d4f6aae537214809eb7d2552202172d1636b206da230146433b86a86163dc6f6da8fa214a7083d83af5f8c2412c475425edbc69b83b8c84e20e0676a737f4ce38c0ad994ecc82d908e0c6f340fb9413f5524737825a0ee76018f742fcd64796c3ac63213aa36ff3288db195d03ca0864044e54207b235628f0e64410bbc39de8483028331d93a24484a52b5d6a021f23aba2dfdd754dfa79ef6c1af36b62c7b9a71b350dfd4be7f77dd9c02b4dfba05a3dad38c5d8bc90f76962845773d7ce3ba351c00d9019941072aa353512263b2590f32822207f703d53aa2ec4182e8be318992b82968b8e432d4db8f36d8585955af659a3b979b39419234a0850c2b91dccc09f6c1042b3df1c1c23a807e80d04449f17122edcdda2840dc48050dc30639a10f00f818db4d330a88a7410170f716feb0c016c101a6d755f2d940ff7aac1779920b35a0c9f78f5bbb6945725d2ce7f2990a99eae6a4ac581c3c0b803329b8ee6464733790564614a0726bd41323667ba147fdc0fa030cfc743f25ee60c36336b7761945c77ac10c10bf554a8089e49fc7b6f722780bc791c78138edc02213026fcc40ded833c5e1305a5be4b0d7f3de76d8a96dde8f13e7639ba80217aa1411295f7cee5fc94d9d16d9950009f1c69d4c654537158f8d8addfbc9897767cfd82dd6f806b8e7f8dfbeea8f13c658ed2fedadc6902daa3a51dcfaf7baef6aab1bfd2bf934be3bb7f3744df8e2257380967a2ef7505efef67ded4fa095c2a337529df862ff0cea7a84c2ce3f5bab0c4c7dcee067d84424cf030441746023d4026c1c22482a54b3725a4b08d2fb0290d9a38672cca274baa656be088d0e673a1cb3c098022743b113d478597e3bcffbf5934722885730b3b8f4f95015409c3cc830f7c5bc174bb444b807f4848107be14b704abc24a0678a24fb3119fefd8f86c822da5f75951e95987ee8c73b2ef2a15975577bdacf77b179d0e3376111155456e9dde83bf42f41156bb9269ca65a4f7fa3f0e0c0aaef7a5a0b9ddc9c30999c5f0dc7645d1020c908c7baa3dd55b0c73e70bb1e2c6d0aa688354690da335d41e8b9c5b7a09e8bd77dad0c7c2795e7afb4069077b91778d4716368b000ba38cebdc8672e8513de93b69bd8bcdda19db60d25990b9c0340756768c09c66113d41c33a07fab6516362a869794d50d16e6d08b0e7ae2f351a9144ddd5873e8b51d8d6122c3032eea564e4867730dc7cb559010eaa1cf1b5180eb3d8e5eef48c3e5e80524e66598bcf2512d1b4ba8c749f5e71c54565db88dc145e51a990f7f628bcbc508cc1b741f77a16f8b5f644115421de5e8635d3c342c8866a5b81e05ec00e59078053b40b02306249fafa0eeb297870008fdc1f841036004c53b8f451cfd3a4021283e5415436875e0da82ae54be98266fffb6c5d8d50a4ac14aaab2ac67b8a32f6dd80c2767ed2afb930b8cf47fad6007d0ba46580290516cedba84b05e69cecc1e34ac79e47b32d18ee4354a03dd607a333758f572686627e2f668673f4d44c468ef05129201f8f5b35794c7d46f8ae1248859856250a7d9d977acd5d13496d5c9a25aa8f5ddc3335da90c6ca8c4d14dc9da9e56627d5a482ff90ba00e47cf817a8c90bd2bc45e0ac87850bc237b27445305256c909d4e6fb175af17985841c2f6fc2fcbef8d1e86cb8ad82f0303530e185d3fa45ea94e7962b384029ea0b2569efedc12cce740fa1d914053255d4a85c351ae8e9a0d9f5880e96777b15d1e156caa964bc8261026690cbcc06c848ed7a2f5b4e2cf8cd9a52a6f77afe490f7dbe091e93903df134d64034eea4ed2201aaac47198d71860dafe7dd351e6bb39347c9d41c5ec70b57321877d643720bad79cc7e33de8d4d192149cbfbfb97e42a8dcd72437e9044fc82614906d12c6bb0983789f8c80d16f82c70021e640e0274b39c06b332ba68600d6db52b8f9c4dc461260657bb0a149e46a0315df56af51a2cbc353215dc13cfb667105fc21fb9460715ab0b69e6c807bacaf5a57f58267a14c5a2d4c57624e9d3ef4b0f308e14d14388985108377d4ad3309313fd7c8ff22edf95dd4574536c292407016f38ebe3e4402dc7912c8f7161ddec9b4eee31d62f2dc36ed482f0b44a04875a648dbe9e564e88967151001ef6aeb2678cab0d9b624233db3c790360950d6f43e8ff0df66a17c613389a3dc1b2d092caf56001044c975c2228ad0909b6ea0fb759d476ad65280a031c73d8c6c3d88f235ed69ca2c716d432f467c0257a8a5b0be515411c56141fe7f63428668805fdfcc9a02d46b16e7e62f855a56a9ff23e5eab50d62fd521bf04dec024965e87013866a185a6bc30b6392111d3b6668bd9ca9c8e4139cd14230b0fcaac85dce2e98d7e12d16bb75c0be9a5f84749df0562fa045d5028439d6b2b902608938ac7b28ac0b8f8801e419361b222e5bf034b5bfa5a3ac5e2726065bb44546c29954e17aa666db3588929acbc82e28dcf2186b6eaad8bee5b70dd6fc441b4ecc3e7376c489338da807c815df3f9ddcc7e9bbcac0fadda00a6c1e20512eef4a507e958a8817b633e1c229e1cce056002b6fa2138075fe1d6471b7196476ca0f217ebe1b25dd00ac30650299b462fcc678b14a2b44dd8d620027ce5b881af39502af266fb3deaf03ae56278781e446cc44fb54183900db93758e0f6c223390063503f4da44fbbebed9c1dedf5430af9b537010ea9d07a158d7c4ee5ff53090ea1e567212f644a3f5906ec870715b23c8bf66bcf701cc1d1715a3eaac5f656a22b10b512cfabfed75d5631041718664d5407c011e4f1af21231253dc58933216b4e728199a705cd7b9858d665fae830ff8f10862c6ea0756d955063449a11a7528ba1d0d6090f7968a2ba3054f7bbd28f2ae1df542bdfa1307ee3e5504b0ad31e1f8cbecbd396e74c05817bb37f5c4e99b4a494f294ffd9fd06c1fb4ad9de7d226b9c6d676f52d906e5647f896c513822e70e2e51b4f920e3dfee88831c843d7804fa25a10e435d90969aa6da3ae5d72a615c1b79912c7601636e06a1d3ef4fca2b6bfbc91a82a4a36f875a0678cf932dd8b8c73d8a8e1b09a38e6cdf822aba132dba842c2adc692af8486d66b2d4928d3d638cdce0262be997ca514ba1a54453ad27a8c9cbf22041a32bba4274faf562dc8899d8f5fcb9d81808c5b3b593524f6303148fc32ac88431f2b7109bac477247f6db124d2fabe5fc20d40aaabe8877ec9c5520e75ec2e4da29e0bc211d3520a241d280a17969ba13642db4dc9b477320c047e1b7a2ca2d8eb7c3dcb58a79b36dbf450eceb14ad5099e862f7289078ecc8b6dd68d4c5f78b48cf292754a5fa0f735def4c532cd4ee206c8c4d5d97d784b4662e85be49feb7bc8566aba9e2eee0e6b6e1ccd9f834b43f18b7f066350fa42da51c39b1d69e847134958349bd4951e695aa0b2ec346532f8d3177161541df3bd6c261fbfed8957646a3b37ad7d6d180543b6238d3297773c14be8b3791ac54db91063891052cd46034b550170378a4a92ac0e5c09f82eacfa8e727487aba4d8f845c725b65650580227ba7696a12fc941d5ef5cee89db31aed481807dd90c134c912f14ffaedb40dc41682d38c6e58109cd6097a9daa8f7532d4773c2d39f4e012bf1ed7014f2f54103b62a35e05a931ad3ebdc80f065ad19ff808834e30c751f08f8d001df965e32f020cbe3e7d09533bcf1b9f63363049fca9340171b761b3ef776d617020d6f3ddc5ef4bd58a09cc8fc9a062cca07258da619c9be1241b31a1ac0c0eff7a3ec48630c3f71984076918c7fc93888ca5bd3d3a47c21155208d96032d22663b5a7080f543239463f71bc2497fc3f534a65861c9b1587c633d0b337a205a0361a56cf47e86d8f48497ad50bea4a1a782c901fe5862137998492b72e1347da675a59bb99fa34dbf7691b6b2f028600948536d478d19ae59024823777e51631c9c3d68d4124ab11b91fe2dd69048957cd6769977e61aa1374b1d905b6f714c69f76ab906aa7189a48f215ed31b08a95cba73331c3ec122860c75aba2d1c44e354b904c893068eecd4aa38cbf83a76882fa1ccb5542b4629a34924e361f2b9350706715fb8815218a6137094fb05ffe25f4a4ca43acf7711a710e4aaf3f19602c79196bc43f9cf3d6e1c34d1a51d03911f40cf9e1dd797ce738ff8b10719339f99f1a52ee66201e0b83a21236cb3295d4e6562120261d6734476f29a4516368654051f4a18d160b07456fdaa4dfa02764b592c91421018f58a8ab2e540c0f5bb188dfc90abd69f6331b12a77078559f880d2aa875cd29947a453ec1a38f19e5b941de2324e59786084e108f466497d8d64947fee21356792e41f446d5be18841e062ab313bcfba497975f045776316e980ec71f8bdea180f94ae2f538444fe4c65624eb9cbffac40ef9119883443966212d34e44cda95974bd9425202f51e76eec602aec4d2b6fcc868c2de10d1fa90362072cf27331ac23d6fa263866810814c6cf6d10ab12604f4f98f0b2186168f2f2824a605121e40b1071c75a36fe085cc3cc7879edaeb9cd51ac7e520624b7e3190482db91877eb01ff81568368798beecc18c01beefb092cb78587d38e7bf638f17b042438d7410f84f53099b21f274b30bcb26f77b03c0813670fc495ea232ffc79f83e2486fc569860aa533677d9c87f0dbd206c031e7a39c0acc76ab9c7f153e4a4ccef0074dd016e5ba664c3c6bc9ac25fde4e40eb66f81497b5dea85533473d2462478638dc49ea947f13eb43f5579da789f08557045bdab0e1a965615a51b9028c05648311ba1e5aca81168f8e1231a47e5ce962832caf8c73b09a0717b2275bb0c48c714f81fccdd44956d1f7ec00fa46a59e0c9fa8a958f24aca7830b0926086694177aa42c7ee3144f5240e8899232c8f1083923c3eb5a9824b324eb135631a47b4c2aacd60f13f2ef3213907915156ad8bc404ef775035b5236b20c92de3fdb82e7c77bd49773bead70481c70863c8b4408db56f81c564c410360c9921ce8966fae1a5e6ccf02a1d360fa5fe7de5490f56139536c24a193815a76e17a298d50d602366e971988c2941301326c03ef94e8d87ae89f57f45cc8391f215c0f265778d8aa63c55a81a51f7c6d3b6997810d61dd59e708c1a58f8d5b3092793a21994843b575dd89b5caa73a5f94d6da1cd9c6dbcf6d2fa7c38cca8325f41e780e92e7a11237717068daed2b09c250f612b4e72b894a0fb5837bde56ca11288e827f334d3b31bca819cafc22c0d1221b7cfa8315b08a52d3b631cd3e950f91136dfcdf4983037a300cbf0d2347990e981adc98e2e579c896470a9888173f6d5918ecc5cf8c5cf1032b925c752a5b7a4d46a912999f312bdc23a040f8189e080e020288fe408e471282428c926bcd00a5960d56d084d55b0327ce397ffb8b825f0ca3cb9ed992f12e09f646cc06cca8f5107f49e89da54b914e48f6416c0de7d14abf114ecb439af081a494b4094972f6936a75eb78260a42122ab41488bae8904072903fe40e9a00361d6745d48d837b3bf340f0d9ee335973b0263bcb57caf2dc539c33d38ba0480973c7ffa989c19b4187614636a4add15b5ad6b74f79da6a6a0563ad57d6c89ec0697126fd23c14c518355b64b186877d01d19979d406107ea115a0ec3c5c94b411961c6a0b2a1eea71190950f75c46a431304cea62b61beb4e06d1efb1615c33ac98f14c99e09a0985515c9558b19a1231746649e35bd774ec0593d1c4c939dbde35bb3fdcaa311fa829a5d3fb03a578dd2926d39762e8cb5ee7d448e2c1ac16f6381f7dd835bd400d11ed83308537df33d8ec3d495fd5c78d5a76dfb58e2c79e968ee759d8ff6b8685d5d257b4ec9b2b1c8622ad2d3714bf0317502a5f5935e10fa0306a2325e44cb1ca394c3fdd03b2f15d1c086444540a62f74ea16725d99b214ca1c36963fd4d3b44127701869e60b530542fde0069756b63b8ae2afc57de70feb2aeadc7714f2b21c0b999b59522b7c2fe1c6624ca1ca6c8529061d01f562b5de2eec147b140e24140782fa4aed0731adf86a0c37146b332bca41e00fe4cd5182af5df34865f50c142786f887b008437ae7c38e0267923dc4ff287623ec566bbeb8b72b6a073bf6750ccc220d358806c36d411176b3b021a09f9a398daecb44fc34167be1ec9226bf5fd3e94aa4886b2842a16b7c3c4a9035d3282a018903436a87abbd33c53537cfd4ae7119d8e1c3e7f3175e6514efd43b26153e99b53066d18e1b6dc961b96e8ade61585d62e3fa614cbe7a8e657e43c9c46d4ac0279b9987427ea9a2461146974efe39a8ab7c4a8063200e2eebbae8cb08504a5261475231655ba2f3ddbb1e87caa23fbb96fac6d554869b5835959a1f4a9bf60196dc32b51db13b6dab6f68426c455df3ebc05a617d94eea96609dcc8ee6b9d8f4e88a77e1c8dbbddea1bfac6c48354008d92406aa9cb86702c2435a5682f2ccc403de42921634293ea10b1c2894a99adbe996b748a97cbb14ae22216a5210910a779c12b8fbc7a9dd73a48bb963e1d817549dcfd7c7dff7e425fdf9ac0037f1b9b6a1a3197deaee91b5ace89b86549f971740d3fa34b74fa267cf75ede6809e2c5053d5f3387617cc92e3cad5cacfe9def0c9ddc706d95c4d83ebc9305c4a1c7c20b0163f8e08afb14408c12d3c5523a03c0d637be5de8879f2b09f49930b778b21d26c78e15cad5474533561cfd2d2506b80d97eaf3ca430540ea3b7274196a1c8a27f36c1a998fe93010bfac4a43ea8a631ff7e4d5a48d2264e557bc81717ceeb21317f724852d7eec738a263b9bdddc3d6771118fbc162713edb434692a8b97c8b25108e43d50542ce32d6e5edb9986a863f19b013a28278a04665f23391790240fc277a88bc54c82ac2a3d6291dc5b3b7d4f6d5d612e8d43c752f3cf6ed2b04c6f950e28833163d510a6ed0dd3adcec7a1752cdbde00e6cf75fbf4408dfa7260d34a71f2896bbbb210539cc1a6dee80ddfee794287d3784697c3514313443c663153ff06a038a5bffbc009a2abaae909739ea76877ec1b1dc9911715a5cf28e64340e0c7e060799e14e09dd328fcbf666c236aea6bacbc150f394c283c0a9c0e3304b172c5cdb28c00dc8bc38f3ef6e19b180513dd1b1b254a05e546103c44edd88834bd9da7612cb14dd2885e9e5fdd7fb8edf514252b9fe45bf29e507dc9d8ce930e8e35cd591dc4e36e28e529e3d9ec75857f546437cd49d921103c5f84d3de54070d3129a793ca692ff79e7164ca391a2749ae462b63d429cb47436572c2ca082dce9752d640de3cc840833b93580665dd8449990928f443d74d5120e37f4ea3ea3f550627017eaafd02d4d858d0671ca12af92fb7dd8d80901487a2b4236bc08aa412c14d4c90ec4da3d897922b1c7d9cc5a232b539e297c6a4484dc840c8161b767f9f96429928616d17d46125a654d6cacc466c54b984f06d688d527fba1eeb652ead3e741b8bca8495cf9b32d2126bbaae0f0f2a000a1122bf30522c4349ebaaace7674a3dd89a2950932fef583f131bbb6ac8720bb2f98cf9e999c9692b8dbd3254d762f42ac95f7133d4d5d1cb63f467ef9f953fbf2bd386a58cdc1c359832d40645fa52268ee965daccde52447ba90251b0b02fd561ca14063377fb27bd32cb8a7c4ad4ed212cc56af267a84f30de07fab832e0d93ce4e8c1843f82678fa25476097445e3be6f35299be33d522832faeccfc8dd8b8c5157e901d4ec15e180ed585d768235084fc285d147c6320f4d0acee0300896ef28361d162fed96acc9fbfce38a546d0d698c7d782b93708c41d25c868b28d2bf40ff9ecba0f998dd0ea15552342a1562b2dc636e58bb54aa3ef25c66ef8a52c1ae9328724ba5caaf02db8b0987b1d921ad00a176d7b5b484ed591dda2f7f7540edcaab8ed43b327a567f22398b2cac2b97e1f66ccb68db0d4a14345d86654272cd90aa6b20867c2168b5195752defe457826c6765c8d5ff62b2e6b6272d37554cb1a1a873714360b972295f9e95466aea3b4162a2646aa638bb49a32781ddea128931abacd982a7792c8568462b2aab431fa3d10d365828e44d2ea32eff0521645c0fba318cc9afa7199c529058f5c26c64cae0e3e283a849b7e97a9e5b84c9c940d81e074c95bc6dff796c90b4fb67ccb24b4a9580913bd64ba76a751a77cab482f8ae6d6dae888485d86a032a77197c9aac8489143ded287cff118e0d9cbe0c5cbec587b99325f01e5367f1ef293f8c5b513faf2f1a60054303f23de1552261fbe4c87af36917d32ae5c62c8ee52b4646f103bce87b0a66831772a14a4044ccc68d90119f2e90b87108a30ab374abb02df98e7e6eb3ea19b5f595dd30e93c549d88efe28bcb77603c49da40368869e5feff639b2456693aa4f5f18a130ca84196cf0d963f1b8030471db5858db5f990dd2d10e9879ded78bf96b7542b39307d859a040869e81f3881060005c2537fa669b45aefd5f8e5f4dc2ef1647bba503f2896150e5bba2b9d32e4f200d1d34c2fffad72dc3ce4f5110c4c8e7d87dd2c6b43b038a970a8255205e554d07b95172b403a4dffe00e4ce465836b61fb30400b0f20aadb724f02fa47413169be02905b36e1b640b851980274b7c5d5717088bf0170e13e3b89d3f495f6fa5c8b658725049ecde6477db52ca246592297808cb074808a7d3e9743a9dbe0438749cde89130a8542a150a82f010e1da82e55060efee8f99220849079e51bbd36cab9da67aed91ffdf131ec611617ce2468165964f1865b7f761fd64571fa264531f33a4e5dbdf27a80def9db9d9d9008af2425d12a1ff323124396a07776432234f50914191761628c91f9878fa570f929a594f907fa59d67d4cd039e79c734e0c934cf43be1ee4e29a594522a9f59e50bc1fdb01fc518633f937c70777402173a8cc418638c317677cf77c23b23fd2ea5944104f135c10c04f6d17e988f78479fa363c7fc03367af751ef08fbf6f8a76d62be112758940006299680862b74d0d2e14e1089020b2480c30f6ae08327a8a023c6183b23b3a362d445777777ff12e0d0e16fa489fa2770a1c3881393524a29a55f021c3ae81b696284831c106106305042146c7434519de0168e1c8c000d59610e54e8e0a20aacb5d65a6ba59d116e23dccf39e79c737a67a4461518638c31c62f010e1db133d21d91e8046d1415f30cd30c196c862280dd10c2142c38f90f5715b644a29d140ecee54a39c9c0c98f5fdf869288738a8c6dc8f866254e49811e330bbcdcb7b4639be19ac4a363099be3067ffa0588fcfe0f7643e0ed91c3c1d08473381898dcfad3bf5d5c5c5c5c5c543ebcbb724dc001718191edb2723f97074af97051cabb22fb65be77e363a423885c15fadff41ef3694797f6eb0028b8f65c9a04dd564aea31bfbe24018143e0108844ff0f28044ea016d2401ad148236da5e79ca007629fcb43700f740326b2a24a6cc116f79ba3c9e4e4c800cd2cfb2c4a9fb462a34c236d25eec47442a1b470917a0143535951e4baade5eca0499882395165072db25e2db8d284608b7f0bf6e791ac867364a608b3f88fac26c32c488c708b260457da133233b74633c1f5874213a22ddaa2410df383cd74ae6f2cdbe66d3efcb6ad6c3dfc966d331289cac6c36fd96bdb66fc96b1582cd6d6fd9601016df6b78cbb66dbb6ff2dd3d1d964fc367abd5eaf6d87df329a4d87df46ad56abb5c5f86d5454b4a97e1bb1582cd606e3b71110d0f6e2b751cd56b36da9df463a3a9b8bdfb0d7ebf5da5afc36a2d93694dfb056abd5da50bf614545dbe9378cc562b136d36f18106c71a0ede437ac66dbb60dfeb6613a5b6db55aada2ed3bc0ab5a84fdf64cf40bf7db2fc1311a6b636dcfcdda5e8986a9aca8e240dbf7e05505aae1865869985a7344bf907efbedbd7ea13adbd3e055d5796dafedb5d1d7b63de455a5d9b66df3c1a35f833ecb4aa98778271bb8120f592b7b799d8d2e6bd5e8b2d7f557cdd8ba8c0594b13256c602bafe302ce9b39a4c27abc96ab29a4ce7fabf90a1edf0ca685eaf574673fd533a64315a45ad56abe8fabb508d608c584023d6883562015dff162fb0d4a866a433aa19d58c6a463ad71fc5456d81bd46341bf61a61afd788e6faa35028aa5534ea5aada2eb7f3a4d13c6c280368c85b130160674fd4d276ce0fc7ed407abc174b01aac06abc174ae7f86d9ede1b6ddb87ea3b68a5aad56d1f54cb3da73b6d334adb22a506555566555a0ebaf451b9f546baa4eada9a93ad73f52d3c8d22b13690bb6f8679bd55aed016932114653425b3ed779349922eeabaffaaa4d1ac6e56f1a86d2a861a3e47d8916a5944a2f651a86e2cce04824a5ff12ed2975410d436766869894ec97e84d89d530d3e5da71f594627c891629edf0a5d9d31393f4dc9474f8d21c2a1135ccc4c1e95729f5a5c9538231678066824a2fbe346f4a380de32e578e8b55427d691629b5f8d2779186f19e233d4d5342f9920f954a8e83e3c2212a715f729e52c96766787c4a0f4b7e035bbc54bf245d2e68e3c22995bc88906e52fa0ef04a0ec12f957e098e89ae52e995287d0f5e499e9999214abfd23072e6887ed9bef445700cfdd27bfd927d366ee969f04ade94be364c744515ff52bc9057b2f4291c23bf542a75730d9c475bb4c846475b353adaa2d1d1564a37430d5ce9290eeda1384f71284ecff53fe9364b67e80d9d793a4367e8cdf5e7649062b85c315caed20e9a0e3d433d317a7a86aeffa6ca52138767e2a426cec421c118bd9833f366cea4e6cc9cd15c6028d72ce272b96691eb9fb5a8283d433da89e9ea1eb3f3a51ce717870707030d33cf1999b54e733a5ce676eae7fadaee38a301acb8b4897744957fb533570f27ed447cb19eae9e919b2f047d90cef7af47078707070a88dbfc118638cf67ce646cec8999beb4fadfc8cc364a8771f07b919a41e2ad7a53d7fa9e96433b4919db764b5cd568da5e9b47c9c6145184d49abb80b4e0c142b025d7f2d8759d2c0710c8a4193475ffaaa34f4455ff455695a500cc645bef403c156abf86751eb8fae08535fb2085c654d52dccbb326d7bfc8f5979ca6f38a301aab559ac09526046ef1f79fd4abbeb421308bff97cde1fa8fb49c3470f2b55a394e138a3052e8569f7ef92475fa63afc3b4bc3f874a65299a1699b2375fcb8930990c4c25e19eeefc4f635dd764ae3f4643d6d03239ea29c445d1f2f56197d56818b9866ff1472e16fab48a7fdf62b556b1a918ed39d476628ebf7fde7f5a8edfd8c54ff1ee8746c4437f4026634ce6c6d6522928182a14990611e7c6ff9857b406b6c4a74211866be08ab2583530b325f6204bc582534af947a0ec2cd81259300ac9129fd873a10219b29b1a7b1c2f4901935b67fa65490a866e7c59e3d722fd02eb911b3f5e49924c3490010ca45c6086052a40816e0212880004fe01321cd00006ecb00005240001310ea052220903c040e2081f46a47ab8288207112d761480003a50f7946300023809806988550c27440907cc0b2908000071e3874dcb5c5a7c60e1a187156c54553c1b35684caa810c60e00216a800052620810840e0010e68000316a0800420e0004a246100248ef061448f227810b1a30004d071730c40000118621523040e9897206e0001801f5c5a7c6059e9810715cf460d1a332cdf149f1916de149f9f27b8845a51a041a3a7c3e970a6e0018f129d2852526e66c8b07cbf880c0bef17e9cc7233148d4849bf9c7c44122b977acf2574facc8516dfb9456b95186394e196e8058ee34c95460df610c127300cc794de9fb5473dca0985e8047b4eb0e7f4dfc9a9a774fad2a9743a9d9e4fa89fa8cfd1242250cf241ea7ee47e9f4a8d2a9539d1e75ea7c7817d599ba130b91b4c7ad6232b58cc964facf238d3e48a359beb0655a265effe9e2be8824d6f8c9ff94c4e94d4868620d46f271ea647bf24d2793ad2ddaa5733a27877374a4994faf7fdc49c2a162442528965ecdee889f42f94cbae01c9aa6a17cf642d32c44b19403cc02696e163119bb48d332fd04c3b4788f28df2f19fd1728ff9da0bc0ccac725522eca03295d1494e70ed2b457b2f00844f231110aa94786a2d9d669cfb92ed25364289ac90ea9f734d42afe4c6a91b78e500775b3224c2bb1005cb510b80528e5e3436016ff8fbd502f4ad7d4051ce770cc8cac866999a8e25f77b89ed44f6c45242d64a4619688c40a1c8c483eee516fea7a38db325da467e6cde17d84877662cb70cda1fcc9a34c5e1369fac5d4a9506f52a13a1fde35751d447a8e72d232476864fa04b924546e54d29eff74713de328949404eaa57f17f1817a29e50fe1ae1078657aff6671271c737a2fb944415989d250acdf1c5c84f19d5a511ee53f47f9cfbb19ca4624edf96c713fe663ff03f542e0a5a6f8a6d72cbcd0a75f68142dde55b4f3e15dad43e982c84883eaa270f1fea7328c8187229208e3a283342dba24f5869b22a5f34aaea3c4868ce2dbd66d2fef46ea34c02cfeb62f0fc78c3a22b0cec221292391006cf0966d640b2f84cf31eea004e16d48a1e0fa598a6cde2093499abc5a403a3911493cc2c4d5c373d3362dd324a8c5d281341722215a827d8aa0473889846c1e81e35206d9a707e7a6888c509012560d4d11d18fcf143833458684769424a9791501fdb8ac300b3f93f698bbbae3c7670a9c21a11d2531c9ab08e827678a9e710df1ec3479313dc275c74f8f70dc318bf7e3386e5c2622ed575d461965dc5c98853f83936353ef97b0d34844b73fc995f006454f4273836e7fb491c75b46ef8f3bd525842dbbb8d35ec3a1db3f545debcbfd5246d61163a41c19c66712d18442e836f3540d156345f6dcc0216b3c9cdb5e5335ae89fdb5b6ecf14fa570316aad459c6c52c4e5472411cde5974c1a46f6b4caab56af895f6ace9fb9d16ba8d7380e50ab6240ad922685b41e27f178d2d673e14f9f0bb3138daa80fbeacd329306395367a70853b9f64c41dd28304bff4761e44fabb47c02b774a429e03eeea46dfed31e7cca99341e7d630777aeecbe942bffbd26aa74cc176f0c82376e4f8f705b07e3266b228cb382e0ca81604b7323afb90d1474fb9d050457de822dfd9d82b3b7cf89ab75b28759dae715fbbd55bf53b42f4d418f0c02a9ad31354aa050119cbe317d63fac6f48de91b73c33128ec45c99dd7b470a14d9776c43981fbe48592a36f4e823afc4849741bab1e77e6cf4e848143d1bb1deec7ba1df914051c0c6a28d45e3f8531284b8f42314657cb315c39d42f2e8ee1fbedd1486493d1137018378c56ab0c3218d4134e08b190714aac316a304fe933b5b4041c4c2abe84a8feda310d4a440881177e8d4f3f53458d3395c6cc0fa4f415084422eb86307c8f1d11f0e7d3972aee7c7897e7fce19d90d86d058cb0852efcac54a25fabac31460b6c33dcfb4fef640c604bfc1c516b0f4629269c70c239638cd9b4d27db606436b8f2b707d4e7b3dd264309c0c8e866122e59af641d8c9e8948e46a3e7c177d4a9b2ff31fafe51c73fd966f693442e577fe89f234aad39adbd189754fa04f7c91bab365dc69f4c6a57e03e972b5de095f0637c8ab74232822fccea43128f6eaa84c8c5344d7b1e7cb54e4522cdaf4fe4b6fdb4dbf61372618f9e4990c88523fa6d73449e9404b2f28efcc9828b2fe974690599419714abc0678d638c330b6e25ca2f35fdd99d0af9d2058bd1940357357f08b1cfb01f8d9e6f06ffc33ad9290e549f96783c87c5ff50b73f3e63f46bfd4a5b7e16999c2e35d91e145cffa41936e73400bc9ad4606c504458db7359bf561289f43cf8923ad5f63f488ffdd66d335c873d7d22d7a3fd84dcf89b25452237da25b49b79fd1c7164b518024a022e7eef48b5945308bab9d8576c349fe5570d0aaefefc11f6190cacfb6a073945422af0f3c93f7e676d7bc8249af01e52a6bfab1dd22c9ffc390249f2e1af8524373e91db241e447cb4d643fad2971109788950d84434514218a3062dbccc1c4bb72509426712114a0c61978222b7a4699ac62c31be0b77cded7597f8a777be973bdc18b0457e4a7bf54af8f28fa4f0ca728bfc0f1ab9339845fe074d7061f7b5426ee6b8fb237b9463c83963dcf9dd4710f9eb97db93fe0322a2cb4bba30733dc071138884ee279770410d5c60d2843414b9f3f2922eb098ebe5255dc8e12e2fe9824d371458e04066d8cffff57bb25f3c219ecb4b5aa0a4f60b16adfb979760c1ba59841e145cf4a8550d7255d5a39fa1e6f421c90822577303f02511d14fdf6df5f7aef4ca90a57c0fabc0650c81b8d92fec4f22458f9ce999fbacc63b636b5af7c1119cdd577fab4f229293c5ad5f86650f4462dd901717fb09443e087ed48f99cce4cfcfead7cf6a0704937f62b2d92f41a4c4759f77f1b3987d2973ffecbf7afdb32c624d14e13964a1e3f450cc501d4688e83875b3fb620412e7038177ce7963b444c81f7da68dfe239273bffa4b10c9b971d638e4c5ddfeab719ebe623fbfde789a1d90ad8be204a747a15028140a854205b1649fb39c8c3f9171b2c3ebb0830eaa8f51c5c4f8558cfffaae9e7988219e39000178660108e09907308067ce91e399ef7d661d3a9e99000428c0331760c733ef20e2998978661e3c8ae861848f239eb98867eef1cc46f878e6233e13e2abd5363bdf64b747b1a647a16cd8d4d7b0369e86adf12996c6cfb029dfd9194fb2dddbfe23ec175d4d5e45444c5c4342412da01f9f1e9e1d252c9d9c2970e60dcc4902577108b6ececc4a1c8a43d95eb020edef89fdbcc2b6ba28abfdc89ce535353436bb8e86acf5f353f888c4ca6a4a99ddc913b72a726d6d4d4d4b85c9e176365812b4617ab782c83ff0baecb14a42414d789d680836d5458b589feb572a3eee352a9761bdab94d0cf76e86ebef3b3b0883e780577108864bc87f94703ad5a728fdc94ba22829114da5388e12d5ca7131473bc2fab046d86f165dff1eb608cbc3126177d80210c0eab0d7e6b003b002b001b043d8958db1dfd49962e27cf3e6f324f5be78928d45e20cb3f8cfb0f108b3f8a7d8888459fc69d81a36d6308bbf0d1b93308bbf1765be68e48b27b8fe3dd82faa20b6e0fab3d82fc2e0fafb605bec176d107370fd7fb05fe4c1f50780fda214d71f08fb452aa210ae7f10f68b448846f86212be68c5179bf0c5277c510af18a2f5ae18b59b8710bd7edcb6bfb933636a968f3b6de3804577267670b1ebb70fd94055e4d1c1c2d5cffd8e29816ef730acfaee0d5ccc9a9c20fc76052e0d5d4d199820fc78c9ec0abc96245a1876364137835952871020fc7086105afe6ce0e1338467bff98048f4ae01823f06af6c01647c2f58fac48045e4d1fd8e2ef5384eb1f75e6cf8f9ba8e0d504928257b3c5035ecda01cf06a0ac116e718141c8e41ddd8704cea8182d0fac10d8a426807d73fda8057736806bc9a2ed8e230e0d564d2025e4d22d8e249384615638797f1433870d5e0329101d10b22145ef4abf9822d4e8df06a16e118fbfef1095e4557d12ba6209a4087976177f89385f12dece933198fd9ec47167b69472f84edba1933525268d0a851c3860dcf5351e181871e7a58596161f1c187961617971f0000c48d2082d0216555efc2a61e655db47df1268b32edf6d6b666eb0b6135409f3aabebe4cecd8c19373829293853d0a031454e8d1a393a366ce8b03c8fa5444545c90e0f3cecf0f4d0034fcfca4a8f0f0b8bcf8f0f3efc00b5b4bcff6cb9bccb0cfa41080040b86e3009e27f080280d00562e8862b0826d77f12bd14c1bc7008f142045384e325c447d70b21ece7973e0e0b635f6c10f64301c27e3a5cfa00b09fbdf47fb01f8d4bdfc57e2a977e8bfd582e7d1fecf7c3a5cf62bf202efd15fb0971e9f760bf005cfa3cd88fadb8f455e87bf6e3275cfa36ecc752b8f46bd88fafb8f469d88fad70e9a7d88fb370e9cfb01f6fe1321697fe0bcb6d6d6516fa6f3566a12fc3722866a1af834d310bfd183606b3d057d96716fa299be2c27a2b2e379885fe6671300bfd69876016fad5e6284011cc427f648f5022b30a68611d200166a10fc35a805998d2962de99c428f78b3d10a5e3173e4d9cba917b5f228b92d9797aca0e766d2a9a45062c17b9b7ac19dd01d67d926f0dea65e605088551c7e8161e01058c57fc60c95ea74ba1fccee0785605846eeb43724773c264f6bb86fbeee8b63b6f72e1e313d8a471ad84517c7a5524b5810c4cd0c7bd028237764b898938a3251c6c57fd1274a01db9932ed2fe33eedf94fab780e58c5ffe511bd8dcde736520881338215ef367e635dce83ebdfa4e8995c8f2e97fb60a1099f841411aebf5391433bb7c9a80c38fa1fe7c382296ecae5252c98b9f37b1611d46405accba994e92137a21b4f9ce1981370cc7c7f2803f8822630088c0446d18452aa21115bc4162d3e4747957c17aaf9d88c02098884921c1e96ef74900b172a0cfbf9127befbe7817d88b940db2612f67c4e6269fd22f917c48299fd2ef07ca0b8157e5c3bba646d204ae20a5b4897ce69825524c271a0aea64fa1410e7939950365bba70b3db66499bd5369b6d76b4596cb375b374b3b3e59b959b8d77b3bd59d8a25b696f73e1f64e3882be216e3fd64283dce8868b031a86ff9522fa0270d204297c2e3088eb9f49fa92663f4221f170a1416ee4366ed3bac1502ed3b86ce362ffad7096d2587b6ae56bb64944c8a12bbb2f658914ee66b674611266197de966767b6d37b32420d2cdac96a3ddcc66f1c8c835ba99c578b09bd9da36f5669636b1b3356f665dc74a888459e412cc32fa1c5d44bc99ed9bc22ca3a7b675d02007877438d25eebe4b4e79a8ab423c6226ed342327ee3381cc3bdbf4bc131a4f76f31f817f84583ab9e02b6f8e36471bd6ddc0083040d42d7e96baf03a5b4654b8aa9fa4740a0aa9faafae7b74ed0f567ddaf75a24c54719c209b56c279cf2403d75f49fd272424fa2747ead13fa5ec787638267b7f6905c7f47bed0152aaf6dbbabba190aaa5751ff719d2f537d28eea4d1a83990373802025fe6ba024fe6b1f03fcd73c48f84799087380ce6d3c25fe9348a50cc0714874d3bacdcd19b8dee416443e1026ee9c64e0e88ffe731b29445ec9d5aaeabb8daafee7a96a75efba0fb338d1ad4f61c0394fbf8ce8f7340ceb00c2c4e84fa4244c489064d7fff44f483efa693fa5404aaa20120ed921f00301910b8538d20efad3aabc3637929ea25331380a84eb0f85a80beda43c779998cde86418b7cf895b3bfaf2d229534437b1a439d09e7fece00ce98988574a6622b9b78e03cce2ff8de06e38fceb0ed793faf1b8f742765127cf9f23aaf8a9640194e7c77865b230d32cbceedcc96794868b9f4d14e73b90e52814eaf4a6d39b4e6f7a14ea44831ceae718b8294d9ae57afad82cd47f6d84ebdf3a2814aa7350285477aa3ddc4faaf5421d5d244ed3ec0eede5c75a53ce2df1b9d2e9f4d9a691483c24f74beb7cd6a207f6c837ed7477bf80fb20d17522d4737b260e555451451555fc5451c54f153f7205c62a55b1aec01782d9cf01d7bddb36ae90d87df0317fc93143e455c94f5e955c89507e2e3fa095568106810681028102815241a9e8a955989148b36146aa23ad6a1c57b75a6bad1f89e3481dd6037bae1bbd86693036499b0d3352adb5d65a35ec479f756c9256bb6763a31f693cd26aadd3ca87f46658adb5560dae34ac6ab1d65ab12c6a9af675fbe6be420c7b6e6ab56258ed86c08a719f916646da2aacdc46ca26c7711cc7711cc7711cc7711c47d26046da48a3d1e7459aa66d5aad246d93db973252ada3af75f4351bd5acb4d5faa4aac1957685a6699ba6699ab6691ae9c4643ac1aaa51766a49e5aad9f17611a8661188661b55e51b55a6bd56ad5344dab55c35e7066a35ab3d16834d2b86f36cc4895faa06ed8d7df46a4d16834d2b8d1087b52adb5d65a6badb5d65aabe5b4af18f6a47935bba327169f8bd86b7dc528c39ef49914d2ea17ae53d5d74eb02e0ad3d32f6da6130dfb51c5aa5635be15c8aba3ee8105fa03465dd8dd669211dd1d47084ba03dd41e6a0f9370dcde2469fe34e0bebf530555b0bffec7499a539b13566faadc771212f0b5ee6c7e8aa77519cc5809299bce809bf20a19c3577507e18a94524a29658c31ca286394524a29a5943249368fc075e7a0237f56ca5a93f673e2891e2d73f91972dcfa1fe6881f7c957cfbc33b95ec7af077438064717909e4b8e1c70be9118e9ba8b951053797977079c911a19bd11cc00e0eb5ee07873ee8ba0d3bd91e1c32029f70c02951ab7751ae3fcaf393f8f4cc37e050de9979f053f6a750caae4341d90d0aeef42afef8fea5cfe4e9543a752ae667173631c7c1de86b8db53fbddb8d11e65fb69ce1d1dbaa544e0f8e32699dccdbbdb675242c92d73747b1c638c6eb167cb32aa54cccef185b01d5269a42a97ed919885f42afaf349af5915cd9e3f485fee82f405e284ccd5f8351b040ae1ee4ba1dd7c5f22e5aa7c70773e273f7e12b8f473b92c19ca9c6066031c32b7e1ceed785f5e8eee8083df9777ae64f62a4a1f4b1f4b1f1f3e27338e59b26fc8a409c4ed542e1e8948fa057b397a0989524f44d4499ef64859bbc670bfd4421d7bc42f75b33b4d89be95615a8855a44b0806290edc0ff87fbf16e2690f76b2271ee1b42fda449bb873e5b78c4924e985d43f31bde9a18f115ceea1cd20a9bb20a48fef5608bcfef0e5fc18e7c7286b305212f6ce48f4fd35bdf84fc68d2e6e2cb578ca3091687ea4e94cb28659641222f992e6f4f25f745f2ad57d9c8beeabf7f42d3a9a7e783fb9236be61b36c9138fb8508fa14e502f50f0513e27eee49886ffc9b8a82e08bca420f066f14d9fc96423131334757128bee4b8cd379dd8e8ea67224fbae86a4f32894346e0b838f4391a5aae8b4cda6bd8f18b081a69dd90559a5f988c6422c3a60f27a70fd717befc8c47b0b78fc88d02c647180fed8f480a12e29812162478ab97628f8ffc81612550abfcfcd0642d04e373742c12676074422dd442230dda1ffd4280fae5f39fad7ef9e14151080b8945b73176bcb353cddf3a9f397f6cc091a75ffc657ceac5ed82c01b9308bd6cf5cb1781ae84340a4e3e5f292311ed01c7a487da752416e16a0f917aa8dc2032a5a83d297f9845fe88dfb4812fe5472938a65f427847a424209cf02351ec4879c07d9186e8ca971f89fa45055fc82bea97167abdfa45fbae01abc8df41fd0137845423e1f650c370b79064a2c99d7ee1913d1869077c9e2b3fd2d4f4cb4e7bf2350b9540567b489845c216b08a7c192f52271c4452332344245f16b9f2e52b1e694ffe5c0924afe018d882f0e7474fa21ff6c368a1c38ee37f9d7917c9917ec1ba95ceeb98901c84b0e7c79f314e9f1e354e912d9a071764cc31aa7ece5632957c197455ddc1a7f407e57ee9a73fbe0f049d0a081c023f36910ae391547b1305a34ba5f5b1c963becf77ece59cff03b310975ac137dc17e3d2ff18fdc290640411ef32cc629d6c4f9230f71b3bb0ee466c4899621d5541cffdbc0fb5e2422b45a51cc35c2ec53ae62a569f859e082ac18ff4299d1f297dda94f6acd4fe700a03ece53bc7cc9ff5277d3bfd2514b22f5a1a03aedfbbd873a7ea6efeb772f947ff179a7c814943ef54f2e3f68854d85c2841d8c5aebeb4fc986aedd3b41b26377e0cbaf3c7e073f97acddde1f212a1d72d098137fe0727fd09a9cc5e060152ba43e4d55e88bcf53fb7d8538bf953bf900848443e0909ffe973c70ff82a5739d673f67c9e3f64031f11f8f055f5bd3b1f7adeb7d22f3e5dc68063d57c7e56cd9fefddfa3e995f88bcf32190d24a7bfc3b60a2496725f6d19dfc863027e3948fce29f4fd88dc28c32cfe19e42b05ae483d729de6ce2778e549924c28aeff947139b06771fdbd89bf813d0ed7df5fce0676375c7f2ff234b0afe1fa3b919b811d0dd7df9970cc18d8cb70fddde5606017c3f5f721c782fd5dc8b7c0de85ebef4159e0d5ec617f6fb915d8b170fd1dc8af607fff7129f06a02718bfb14aebffbf81378355bdce2ef51f026f06a06718bbf3be1fa3b0fc758c1ab29c42dfece84eb36dedf93c0ab39c42dee4ae0981aefef46e0d574718bbf23e1fa3b8b6368bcbf1381579309b7f87b11aebfeb704ccafbbb10783589b8c5df8770fd3d876366bcbf53c1ab59c41e84bb9aaf2938a67bfde0fa3b0f78359b708b93dea3b8febe03978b5bbeba70387664f8c58be7529e5fa8044cd82b7b1a32342300000028006315000030100c064342c1702c8ce5553d14000d869c4e5c4e1c0a844912032164904248010000000040000000608802023a5fb71b9612fb0de2c788deb951ed333c1e14a89d9d9bfdcb753f03f730d4fd94badf817b3cefd558f70451af13cae15f756b7a65910feb73df4bbe0ab7731780cb77d39aa6807d354198ea084233faa012dae593d2d5ccaedfa1c9c5b54ac7998c78c2995bcb3d3f4a9e64861569403e73cfe45257dfdc9053dcf00edf3f8549c155fcfa0386d595103fa7444ddec044c3bbb478ae31ef6164477d95c88040bb5af32d252148b084dde62b9a82ecfa666fdf2c604559f6f80808ed77d922a2dbacca1290987361acbb43720970eff7d80adaaa448220d866a507b9dfdbe494f3b1108dfa3687af6d915f6c29d01863bda70fd68549dbc25b5d0c1049c64dcb8bfaa53c3a651818cac257bdc64406ce4793ea5dbb50043d5eef2bdf228c0d5434b2b695bf62f733a9c5dec2d8fe686a202ac0ef7b6717d91fa3a6def89801099730b4d3c9c260326135c3ae6e47980d12cd61d4dc5d0f634082100d7691a0376376fb9590bb6ab3f4a343aa85fa0349ed39f1470d077600fb30354d34cfa859771dc6c0042119d875bb60344dd81a63576f02668309f7186ade89c31090b084463b24d24b0637cb7e70087be63f1682be9deb9aa75e12f2fe8275f100ba9711a489fb527bb317c5519457a697738afc413576e9fbb3c8a589a78cae104b4572cefe307ca8eda27d8e7ce03132a2ce1d953d9b7e6c461799324b5a5bc84713c070728dbb548bd912a0ec69fadaf5f98824d1d16439b8250d69c1a33c5ba004a89919817b467fdbc27f4922fd7f9ce5036f427d3bfd5850e93696a2ce7f6dcffbd16b0d6223631d6c278bcaba07166961af0f21addf24ff0575cf8770103453a559c3d43d1ddc480ed11735b339385e39ec1ab2674f50f794877c4217f7bc1d3e6bd4c1d61f32082e1cf2f9b1b26e1409904f412b4ba7e1747caafdc7cd95c0964f4ffe22bb777e7c6939df33ddb8dd5882503476d4befd67fd39bca119bf78fc3c6507761f1cecd143cb6748b4d4e4eb96cf12f8c693d3820a970b696950a3574fdeef5ecae71481366b93829e28b90e25359adf6f470845646c360316ee278c7c30f3a9e94c910168d63e91790f1948c54edfdc7cae5a34d735f1af9fdf7de2fc9131d4209459d22dd96115e9736a946336bf03584895412d708d7fc99ae853920a5b708339c4aecea780b98c50580025fadcf72f18bd8929b0184424c8be40faadc1f27fc98f7293c64738d3339c6fb8baf89be8f824aa4f97d4945f3fad4ffb0e3589a0c7ff4f75bc310157bef0f88650511a5bd28fae8f07967d06382da8c9dc72d529f51fb924cf2f08eb98f529fbbcf78dc1052f11921eba1ce85519529b96fdcefe3b62ba1b17aca00ded5321bf8f702fd7a1ea45c594aeff6ddd80bd465cb44f1dce0dccef631a204073980a2bf57db0de5d9b1c7883db64a17d3a2857f24f2c051fb5ef09edd3a55fa0a83a03f21b919488c16e0d5ca40d0dfe54fe144ae4600cba72c4a0bfb94fe6e98fd4f5188a37db90a6dd131160201817da671265dba6dd2781547a7d8be5dc729893d8819f74886db50200a4bb810b23f289b47baea3da689f10cb0c57935659acd783a37d0627f436c3c94a738c042d1ed74b8310c706a3f520046807451ce35bcb9bc0494fbeba4f5cd31180222f90f4a0778df47c31f4cc82f9f8ae51eeb5b709a10ff7a5c64b4f32e15781ac463fe5c4ea247ed041dd25d0ddb82e18e8cb63e4d926c597e4cc8f284a6a448f44b896418ad261e081e7302b907840cd885cd0f3066999df0986465460dfdb0ae9f0203b5d13d7c3983f8b41e65ba0e616c743d769bf34890785f4b35d92911ac7dc816fe90563cc1f7e9df71cb1eaa0fcc3eeb6adb5c961599c17bf3df995b20fda115129aab92902e7e65d9e07695efe403ac9ed58794a54502db62ecc5b909aa41bdaa15bf62c49971c8ce1de3d9af3c4b2571dd0d67cd96ef2d045fd4fae9699f9afb02a8b7f32868fbb0a678614af434d807d204eb2f83fe9a8c4827cb7c52ef721282c8e6204ac084edcc418a08b091e4e6e074ab7923f9118468713033732b0d0969f0b81662d26d21eead5f673e8cde92d40d3354553b45d373d050be1faaf6a918e2fe84209b41e11845d18d7641f3acb9704dbcf9c1cd268e996c27f9c887fd7e13fc52a36b460b4f653e68e9520cded2c2ef225e17e6510b47c9039d07c4631fa2b7f8cee0656ce3b2f6649dbd8af54da31f257a32af8590f1aa916d90cea2ae4ffdcc5aa2c790250d4d989b1f144a69270e3d1811491eaa5846048221cb87454b1be05c7d8da5718318a638065e7be9583035e16165aa3cbe6e6ba2f5829f26504284eb0931492e7d90146e12ac3721bd9cd43c1fc8357e27ddeeecf97f0354deb4c3fad4060ea6a2145a63c33654f9653e30de3fc999a99f17311a74ce4fbfdf639f71e85df4642f061543ad41f63bb9d33455f80930a5be50fc916a807839341d19ef1562c2238ed30212cd7a62503f8e450ff2a60729212e8ab12274ec8bfc676499b3a51a5bc37263ed94a74020d6b3d47d96de8aabd6d600baba7b228aba34b76d7a387ecf32b778da82c4238a5c30204f1be2a44accdb787374f0c7a35a3b479216d89b665f7705b915d6216e067e4e8a66775baf783c4f5d91570b3e8b2b4c4048c0a64f22edb603ba06515a99ba5fb43e198f8b8ab0806956eb5892fbfcda952538b6ee4b5a183cf93f54fc8fbdac3746029633503ed4087ee17cd4b50e9b03655c152d5a02244b8188d3c510dc5689f8c7bdbf9e44f14081adf9e52c03880f7f889cd96b30b62af79beaceef7a0a8e7e3bffd62694f3e6b857a0a5c436e8cda33131a66eec97e30d5ab1bc282b8d7c56bd4add123096d95e97fc99d2bbb356abd6d92c6d7769f97355ee89d3aa86c44eb0d95beeb5604d677b471616c895e2fbb33171ec970376f8f135795e2671200b8633abb8274bec59260f8763077e4accd42b3cb600163c66ea9745c1cf52766400310689a3065287b657fe2269231ffbcd3da817cb03529a9d107b75f1798bccab82cf5421cbce9923d89692bc3bc41cab3d212216b62d79d4f3da533e8e3c9fd82dc0e3c5325905c5d11e696d81d88cfd5b008e9345668f6f3ddeed3c281c0a07b073e8dfcae73c688c0561cb3d20e7ffef69f2bf05aef729e385765cd39b9cbff40fc5c50763b4a25030ab080ea823281ab555acf39184e190484d745c32604a486b0efee67916a55b1a93040dde03753396886123e266ebedf204d900555bce8182c8b6f7e4466f9d364503aec96fb74695a66ce5815b1d1cde682ec772640ed10792129cbca0fb00bf9b39e7a5ce4deb1faf1786106a7e0b42f3c2f443ccb001822bac45cedb97d58068cca6d360c0230ee6bd9380b46a861a40754de6c466dba79d8f51033cf06dd1163692251eb8be4580de4a78b2f2ccac8563544154b2a45e3c116cbafa563e35b3c033d4220c23ae972e40bc80b1cd19c07ee130b5c4f3644be74252a7e40244657424a2cec01bf78ea8d448e2dca8abcaba1ac442385a859bc53f60827fd133c8dc851260977111b832846bd231aafbd0398a299e3f231ce866ca4e11853e4d84e78a4fe53e1db9e19c50f4ee5bb361d8e62b2fdb6bba2dd3567070e3818f0ab9995f9ea6433931bbc8cdf2e92dddda02bf11dc224edce706db9c4f02de22a245c16931a145348c5425dd29508236bb50ccedbbc3de02fcdc048404b825dcd8c849d394c72798140c3bc4aedb04c2c561970f94e5ff9c4938092db42a8bf85778b0291c62a980b28e8cb95e6119a0d311496cb7f857e6b95dcac20fe589c0f0770e25f5569b9a2e22f159c560f52ec441164532a074486ff621a396e165c5e03fd128333076e75107f274ea630ba848987a9c2b8a1b3c3572817777ababc1c544645300f13e918acf2c0253ccdc43db2da1e59ffa8d01eacde1ce8b7cd8ed5c56c317fe2817c9152c2f7a4cb9cbd92f6ca4150eed5f74b8d27a03012fc00de19ae349462f805f9842164d98c0589c9c993852ce3bb313883613ed9e2d8ef9a5f20e178c3937245c226845b17edbba7eaa29c2f867750cef16128aab02ba12b85f0acbd4bdfd14ab7717fb40085da81b263393d8093cbaab6fcac525f0fb98496fe696a078cf4684bc01891a0584dd45589137b56740aae94ac2695116286b5d239915642ebeda7270643777be9ee2e1b4f01f7f42f4cfcda77847bd5ed3c8ad1967ca2141d91c5a52c101af8010f4c9c6626cfa0386c27c0b33207cdf6f85fc628a3e2626f40a5f300c50b5c5c94b7aa787fd4ac683ab70fddf5830d3086dbade7cebe73e2e8fd9fe1ee33361a5d17853741cedb7abc485d07718fbb0bbf12f944e424fa8c811e7ee7c949b042d4ca9b771207e2926da20385c15dc9d6beb2c6627f9507443a89832c99c6607bf3e438416e1ecb051bddf327f11b884eb6ede8681ee13e6acffe70189d8a429a1238b0e4ba688c2d3d6ef1e0454b08556b948871f4963ca3551cb4ba75d7e86e6cb7254189add34c6a06bf94befedebafd02844c642630f999cc14c369b9d7137a4235f7c13c57cfe19f08ae1901f983f99f064e5833f3af7e23d2a502f737988ff4d8637e3092a85a126222c85550b08ce124394e7cb8087835ac51e99aa4d55e9e5b15da090471a0e9733b14e7ad2b84643d89ce6428aea54dfe284121c3ef7f9bb57858c24e3736e6fa105077f8aaf018c9e3a1a12968240dd83cc1b76a01c2e6239392ce2898508e4d68535bab9be1545e5f27e350026a2442427ba746a9e9a76c6c4321fa0a653e973dd689611b10170b325def556998a76d58b404ec0ce6dd545112da63295c7a190868011c288068a3f57cbfc134c01388b06ece15232686a161c8780f53b40c44834f0f5d97297ea8cb104a260c783b1cf466352c18910354c8544080668a8081c41ac024235ecdfa5434d400cad2d756fcb48df388747288ffec93adea10005eb9db8e8dfc622698a46550c7cab8b9f3c92f4905a1015a23241e05eb8ea255d158e501e022835946d1aca369f232c9fd5ebbdfb10b924983197381ca8efd39b2401973e82c416bf40d3230e5ce773fbeb6dfb3e58d2aa789cd93a4a1edcf06be370b2c9b1e9745f39386e2939985072a266aeec590aeaf2bb13079f940716da9f8103b4f0fa21a364360187b2625357750b7dcc1973736367adf0ed4723df43dfcbf99f173d6534b046c33ac6c292fd181212ec052570e581152f415061c784ad2b4f990431d256ee4913784873a03a94e075477117eafb4b60c1713cb6521da0777aeb86619fa392cc088fa5f4eb5c23a2782690cb107300dcfa09d996fa8dafb1ba28a9ad4cdbf5066c255c43b3bdc73e6335ecbafbcc5d01533a08315d0d3e0549a84615e08dc9cc3ddf0f7092935d19f16d5db9e84728e41348aefa9f344bf4e4153876bb6e87d880f349c2837d16fdcc92b2826ab0c563f432b202b25de6e7c2c2808499cf9f6b0c71d4f4e408ed308bba50e1b5b246e38a5b47eb21162d42d3e16135714401206f6968753667d7697da7876b2d7279e100d40427c5aef904b4b9af7ff2a7ae137a5f4233ffa408ac6dc5c5da255e683bb93db9191b64a321aca4ba78a963448cc157c0e70543b71ecc2bf6e2b89a61c5df8899beb15c3d6dab3f83faab1d59b40dcdec216cdba721c06e7bac40739ae5d8238fecae9046cf58c94d4f213516004b166a23d4156218a2f826218d0a60b75aa6aaaa7a9947d04d9ce873174f467b12aea650d447febe81f5ee7560abb3fff36fd16f9e8a066edcde8f038f7a7a3bbb998fb27af675c8794d1654c6a9ba856df60ff4f60369b39cf2af3ea096f80d94a6ccb78b433829f6a6b8cda6a5eca33fb83d48cbea5e576aa266babc95c333b23c4c427b8014c5c2c8b71fe9029048cd12060863c2888aac0b0ed3c9b016ae42a3667a112bc239a5f8d670e34d0949c7fffb8496b413670567050fa5adf9ddece59324db132bc4be0c2ae4459388efe0f9c9dd718957050cc2ebd8803a7bb12248bf42797b5b91730820a06e0c15cad9537da620f229c0317381284fd255445b9d91b88d5aecc1234b262329965fdfce27c6d9db97c01487b666e1bf4b829b3e5b4a995c0fe54e868b59c23014667e10fbd0f6fd8be522ef969d621406553e5b3ce187116ed24ac30d6e1b750dd95c77c7609936e4c420d5b1c66b8fd17c62f9aef140968e3bdd03777a8f0ce5fc409e2d4507a5441045ef8d13f0b206b45121b54b5f9578f0de97448774cabd7b4133002d6051c0c30f198d35c397d932d9faa361aeb7923becfeec233a0a03c9b0ecd25305187beb2a60ea23af6f8c95938f8a556ac622fdaa0cc3b6ff4ac63b40bb09384253440a35cab8efc26cf600b8e88dbbe3555b9a236fefcd46d01d0c425974f724d02529f09d0a15b78d2779b9787244951d0c657287ab69593a98e8aa71aca964d1b2043639f30138d84595c147da5413864abaf4c0fc229c45490c5413734654563c4f402e5ee3decfc07824c46e2cfb80cdaac5167b216b4ff09272e6a08c874266ea8855b609069c80ecfa948ebd8a3ab2e714a1846a2a709cd600c5cdec940bf40a4a8cd38f07b8e5ddb50bcf1cd39d643f0b94ad729b4cbc7a220a58cdf17f65b1b30f45bb3f6919f8a2d41b9cc5a56a3a89569b6a26b9976360b6dd86768b3888eaa7731c1a3b48554e99926f333dc01892c0056b2aff904916998898b8d96dd2660726e3c46f1e48215d0952264422a1356b61414470366b3cd9bb94ce6dac4b0a270ca68a3fe7bda858486c5eb0bf82e270aefee9be9967050fe71815a280a255c1b3e7ec14dbb8658fda2d644956a2fb269b9648c55b4d396cb6426443bb45c063e5bda59cb65b12aa71db75c0eef49e3159740bbf0497a99dc7269e84d6894964bcc86e79545fbb50c2c17b578ea7805b8849db5ac33b2954f2bf26a25562e023d4852d372c9c0f0bcb2e89ed683482f503706301df7b430f7d925c0252634c84a426eb0c5a47f8e05e094587a4e44acfd7480d182b133c6c4fdd94535f0c71648c18f58fa3a4b0cb77671c2ab3111311a9e13291f54977c478282a5c518304ec9294015fccc0c33ee8cf16f5e1e4e256041cfa6e77a4c1528cf21552a026ffff8b6c34aa13462552d477e2e716b01e248e388103a767b3190ecfd6abc4af36a2f3f387f9690b72a537c616be7db7b7914e2a6162c73707da651ee385c98166b001b0f73467f4135dd4e065104d315f930ee028b559b97c730a19f11129d431168caff8167e8b0e7d0d813b988b3d6a4393145e0a35dd8fe4db14712916b336926a4019be81f0dfbdfed005bd66942a0a6a09e8d1def07ee47f1c40c5b6ccbfde2c202115d0de125f3050a0f6652676b5a2e154df9a75990cb3c6429b5c95b78342f468ea9e3e763d16c81dc50935409fd77a53b2edead2ee25291f623a24dfaa2609174e8d68c29ce36fd00911202e0ab2a00cc698a317ee5ddbe7f151eaaa86f4818081ae509b44ce61b68fa37ac4ede3f9ff07f29732f3b4ec0bb7100c58d154c9e50160781b54a4594e8baa6c0b117b16a0768100c519bdb161dacc97933f5f9e0b126ce788f59a7fc02d020389b8b1441a149e18b2d59a7be2fe0141fa59ea9ed2ee3063999a158d2658548c55a6257ad39f4405d3edcd1ac787997c3c2bd3bce020b229cd5421247fcba67e2202c9743ff9ab3c5f6c11a730ce40e0d91cac1208d2144af2dee224ffdfa849a6f7fd9148fffcc9160d4727078ba492226422310dbad51ffc6e286e8a0b50ab2669e4e8584918155d6f31550c724b04f4dd60182521a9b75e8586f61d00fab077af0520dd7ebc020c91380e5d41fb36ab2072808c99b6e4ae7a878e50d3a20187bff2658cadd562a03c575b6938f5a5d522198139f530bbe8180c9942f5b5a8ef528881a416db4336c0c308c0c8f2f9c1c75718aefc49993bee93ee1b8147c3b93802faa59a9d50b4d7177170538a0862941a06e6ee86484b5d3327f0273756e002cc1e1156292ce5526896230daec13b81589e07ab5b8b54529d5742a970664540ef688e80462bc1226e6844faed44390c793c06c0541e8020cf967cf58580ca8865b40b28dc3da05a6a54d699e59f4b6ecfcfe362e6e2a4632c0bf261addb293fc245f8b32722553858af777047b03efdb1849249ca6b89dbd04064179ce2e62a5c3a0c13d3b22e91c9d882894b29f35386e52ee308b39c24153f185fb4da6c14e838072bbc32bd578e9e00ee2b899d1ce37a41009c08e802308cbe81a8a84849f6b23d526cfd586f223a05a5c3e14112aad9558629c0891d92c632c132061b16f3a5d8f2e97aba58904f7f7f41c085cb7dd300eb830d0369254240fdb3b8aa1f8d38ab3c2193df9ce2150d68d58364847e4636c55f6246db31bb2acc04cefcdea4a4f02ed594b1c55d669fb4200115e1df7fd787fd8de052462a8b9be3534ae14c08605f12ba2f7e06f2baf2a9356ca5db8c8cea5d7ca1f2b87763f09fa354c869182475a2298ab166e988cd6a12dd883be3ff53c805187244a3ed2e5fe37232a2087700107eb33ab94faced192a673e7590afe0e3a462e8d8e2f232531ef50b570ec5a2ab71a378adf6f331dbb97e5ace08ceaf7dfacc3ae4a93fc1b22172dd3f578d0e97851b955208a820799a5fce119b74d967949d8981ed7b08b8de9047ba000f44f4d6211c97c621821b3cba9bb935aa2b17501246564f275014504d4a2750174c00abcb3f10bf56855fcfcafe6f84ec5d97d14a7e3a8bf8ea1f875b6e2e19b8a87fb2b1cc7a976bb83e2eb1cc5d767b4b2e0cda903ccda9c69c4e193b9b1f13d09c10e315553258cd09081b4f72378d012497d6e1b95707895bd18624f244b18b8120e886b0d4089cf5b42223af104f90b6c44a10e8462682226d104043d917aff8b94398a3089f3d011102ac2a00fcc49e86a9058d572509f4125eb969ddf9f9ba2790b4759f6a9b14c3404cab216b220fcb35c74448ba2b305e19a695b59a33779c5981cd212f3ca8d0aa1ba4cf1fcead6c1503046a51bb83d8a62b289a7fe1cb598c55e43e644c96b238d207b16cedda5d732a2ac1acc43922d6b272a661e483d0e2b7e1409d6ad990a3d083dce0950178b07e5189f815fd87608854bb5ff8901c22bb89953238dbb746ebc97e589e6fe74a20e2931caf39ccb0544cfdf83678372d514187a5aa584ebee823f159a4cdea11707b5a18b5d51fa02a6b35a68a7309b430f4e829e3814ceda383d3a009b2a6b1dc24bbfe0b6e161dddb72eee774e20229c815eeae5247ff2441e89cda98889ea39e0e764ccf87713a0f6fdfaf622a60575cd3ed42d5670568538d061d6f611f455036b65ece857d898d97f0e1738b57ad312a06a35d9dee7ac716ff344540567addc34a6c5bf02b6772a11c800f57729c692c56e7d445c75c04b62455636c06524b58dcf0b73dc3c1ddd8042be9bd43fb3bb9c829ad38f85c858478d510d6b82ceb86eaf623676eedaaa06b459e89113a0e5d32bdf4014706bf3aa4b6d4023b0de0f1ea154cf43dab961474dd21d16d5f8e7540a73d44ee218ab37e2152163143719079e16187c4cee4d831b63cc806c951d8964792aba30c38bf85365a760840446c1913c82bc3f8fb92e5954d4246b6c1ed7a906f4bc000b1148c012975ae7419d96ca2f1fc40444dcf4c982bbdd29ba4393b67b9fa30d6e68696ac4e601934affdd9b35420768b4163c205d7b3cda6e313e3c6a1f9282af2810850d61bfaf55b80559ff30370256d5134f47c8134391e910b265d730c9a10ef58ee3d4305ccb15f889b85572ff1d5c2a584f162093476298d1b84c8d2eece5a2c983a9d87e6feaa462c608c88fcde2854ffadda7912082392f2f2ab633bfe1a9180f1c9b786cc816a359e7f01ab291f8018a8f939935c58185133b45f33f85e0844da58e61c9d59bd9962586139f365c42f3dd115a137195767a458bcb071a669704692a5f425c9d1f488ff743b57b18b581b7d8e692ece79243095a17fb2d3013f6ba4890c0b295065c94c79117f96a2a59ce6121541923b030079aa92b9ca58ed419aceea491b5a25dfcb4b27ad5778f5c07a30c8318c770d002bbb8bc8ee4febaf1b5c9b4e19c3112246f76a2ba5a82011752c743a90ae651442429e43341060a6aee1852849ea1266465910f857901a64271fe9447fc48f051d20689b465989af82d9595408e7c40afb04fe517db5d82a85019ece43603d646b08c17df7394ee60f49ae49c51cd97512fb8b86bdc9dbd8222f222965ea6e76f6ac5bfc197b26227d2d38a35b4b2128ab23b4ecd4f002c969f895b3f46441367a4c4a0b8d363ace660e0ea833817629e9e6a322fd5833432ece65ebef675556b6c1ba7410fc7c466a5b59364beea031d56e79a2ace63e86b343a7913a820b0e68d3f5aa41bac606c26c3520814e6aa98350e52ee693a07136a21218ffb4c607e983b079b547b09d8e64447bdf31b297d696d17648c47e0d2a1c524495ce499e99b1d4cde7849a8345273d24fb5a8f2f435ba62c8d5068524fb2e160c17c425c3b96403a9f0b0ba2c3c3fe83b8ed0b061565986f9e70847582a74831815a9cf019d526b8bf5212c3b76065c616d021ce9bf6a0979b0374cfde3a20db595d2909115c2fbdf3b207df42fafc40aee1be7b31422481a6950b1e6a68b5482efb202844cd8dc536674f814818ef81adc4cb1758df359cabceb229679eb49a1744c7740701e9b025df747d123702b1426ab7ad6391462c7fac44cec1c91123a82b3fce3f5816097e14ee50850616d5607ca4ff61687cf53a0599bf39565ea096d5e8b6458e8f4259b33f584499b95eefac8aa6ec5ace68107daffcb8691ee7e1e5351d25a52ff169546602484319882d5b4bac598e2becf45ab32adb65ca75019de573d9e1830692c3ae19ccfce0294dfb4c2be580c3c0cc5af701e880dfe287b13b22ea7901f68ca363aeefc205a524a5e016735c4b6734663df3437abea74dd64c4ae16193a806e6e9362dbbd5c6b147c6604ad0e1d485e13db26c900c114363a6946dd3b8532aa266b2bd7ecf9db2ff02acb4e4cf4f496a30ccef7e9865a2bb3ebd7d2a478a0d9925d1aa0017f79709bb0b43393e3afda5c35c7bde2718ff59d8e72111864a4416fb5d0285da47efb161e12010a3ad2d1b75b853a9e8aa4c03de74dba6ce2cb53f6cc5fa9b86fecfda250f2e82b64b97c0c31e23c09a7d1a8d8a1a310460f7716d3ac51b99e562be6ba8991b36b144f5a4febd7907d1a47820371d9223e241b8d693a4386055c0bd2c7f95e85a68b5fbf120078da504a21cb51e9b7126121c4756a19d776ad21aed6d4ed98c64b93e37a807aab959f65f5b34a73cf4b4074f86834943d05dfb43e17252a635ea97d4006319a01dd63edc9e2300e6c7b8c7e4284f126e686643c828206e53fea92f42cee62d39711aa01181a3ebc027465ce41e1351429028b3cf842662d8887ea85f93c6dbf80544388db9456664c03e395a74d5c3f3ee117f2729b71da40668eacf01f982287e3980e3a493be4afe62fe6cc3a8c6e316c467adb7d563f72b0bafe0afbf25ec15e127e66cfedf7be44f140252d9b5fc3b0a22e489246fd0517dcb673346bde2c9caf866673732f50c5b8448f325c71f38faa938bb7a54b93f18e4864649cbf2f292ba0c04d2642477b59e5805a93b9193d54c343e0af9fa67d08ac91eb07ff5ed468bc7206661f5897f4c7208fbaee2bc18bf4da1cf405e06447c51bb8c049197556bdabd032860c3e3dc516402dadf667cabf8bd491716cc2d5c4fba42127c0836968ab0e6d9434a8022aa4a8b670a6170b789d9b1320892b4c69095f636ebf4eefc0b196976215d08b804e94c3e6391c8ae138822027ba11ee300a357d4323da5100053eb86bffa2929181a52873d94719a2c2733ecc36f34ca7275c6d12e25e0ed31be1ebd549477e7d75e6102ef8bfc4f5d57d911caf171a32d670e29370a1a0fa543873ffbb2738a1dce845061f154aaa42ada411785697e80e2e2dd53020d73b70c8362dbeb42be7193a1b799b3f06acf9d8e31b3d35026c269433d20c90188f505a717da6fe724f76d8fc33c39839b8ce698397f131fbf0ec94aa5366a8d06f8530f4a5b9c253add55304d78aa79e69b8ec89014bc2590b2ae06fd9a2417d509a051469870a314e95f01ce09bef1800b22c8d594ceb6f9f7e18618f3ccfadd2b65cb8878056e40863fe6333a85be6ce6deeaa6246deb0184aacc2841c253228a945d130ee9e18fe1ecb72ba96932139824a66b5a9affb77e17dc37dba1810fd7ae5746260136f09f3d6f78981c52d035f3a59901f253af30dcf7dd1c668b3a3680c385efaecc8a77c78693c9f94c722d466ef14816af4b3d36472db16f3715979b1516385b3a73d8e371b0a2287693accc8200ae31153dd8dff498f27b73e7c41161f5bed0e49651cc98ee43bc2e76d94e4693b69d6506ce52c56989eaf501af5fb08bc5f37445a0fc598ac5bec5b01a28b0a871f42862004a5df0be685faf12a7f3f252922e3e42834978319d6a89a6db1f643e0f24bdf17095e2c31836f3d75516815efe5d5301b869ecd233ef0c508afc18e720e53496e2e3c586da64017665d430e0bfd688d8e489f2903362da4933a3c559606db44dd49bd5884bd3c319cb6c29c8338c82e319dec5ccd26101e90b4259767bd189282f2102a85dbad2422b1b7d82ef7e880829b1151f11a09b7212b6861ee9d1b2ddc095104850ec47a64503fde81cf6d940273f4d8efc321ea313952c45ec986b132bbe696a0ea05f27be4f8edd56f04ca0ad7bba365f75e5da0b2ec39694fcb188d0f20e813ed7e33b67ec4b11a22336b42be1e42f8e4fe88dec6d4523ef7f08069dbb2c5930aa8738845fa422e016e9f91696c24d4dfe5331c6bec8b42a8984f76e31118fee606df414faff193b70015597f6aaf2ff89086050dad71586fb973b8befdac383eaf121513232aa688b266dbb48e5fb94963171c3a8fd709d96e0ab2a0806cc534ff1c8609dd75a90ac27eef0f2988301f0fab16a5f9b48bcf26c50409b0eb41b14fa9d734741a71d4bad2dbcedc479d60fe8410f79d9176d0b5bc4fcfe1e25ea2d183a00f714307c3169fb8040ec2d1788c75286c94ad487cb0943c03e643573401fd5f40c636ce20e49a58bc8205f3f60eeeaf3ace949a7712f5459c5c25c57fe716b04d971f6fa817a09beafa2f15724470f11dd2d3e5008bf804f4a311c320401673b768082620571e25168325c81898653b35f7db4b5bf83b9520d49033357100cdd9cfc799e456843d7dc3eb21f5424e865f6fdfdc7c8433a8f656a5868d52080c3da211748a207c3eba678ecabc85956da49e56493fb6cc66d6656377f7b237899e163c341eaa9855ba54ac2ed2ba62c34195f0678c2e02ec47931567130834ee5c61ceae81bba21aed227c1e176a039c71e273b334c56cf59b2fe3743326af0a833be4199b0fea41ad0425afb4c6ab828b7c4857b1e44f14d7be15e3503240a2fc20a172649ce0bd2861bd18684b055edd1a9d366d872e7edf40eb73fbe48fd75c1882b0a780590e1aead6fa39af460425dc04722fc30aad2cf1307bfa11e4f39b1d4a82d52e7ebd02e439516d643e6847a418a634ebf84dd6120b18c6dd5c3bc6f9b7fad75c099c8c281be6133d762d409fe5c68130ec4300d80742f1bea101ad9e4d6c0471f9c96fe022db71d5d21f30fbb99796bbb324214bba85a021a64dbe1e06f3c795dc54661702a69fdce1e99d74d86b722a05a10439995acda1760d94d18c009fd23f98d8c8e6e3f3cb74832ffede694a613041053b40bef90fde2f5729119ba42fc0554d32a1f1c86efa7feab975984674f290a050a05b9e106f6ccec85c04367f055c8a3fa181c79f17c1a5e60ddbded4383e68487f082f0051f37b95b0df5cc64f26ea8d60353e4d15f804974200d05d79a22e16702563b7deeafd8775204042641c00a7528908d4dc3f0937b1c66af37bbef5c5021742ff1aa9674655cc8b241c19b000a2a77eb25d29cb50be567b95e970c30b84f61652542ca0601aaae8929f26542d7e0231f11e267db792296a6fdcdf6d698dc50f25dd1b8f3962870024553b6fb37db5e783a99c70393dc446e637609fa2f02aa105c6d404b1ae01a8ed4962340823ab6ca6613655b96821da0813172e0c28fa40c5508f6558443fcb7b55f0a19a573578bb96424c5d32c27b35e9a2be04c09b420d492582f87fea384acea21df89770beda37ccf4d819d59a2509ad817f1e5579306b2f8ae4446c033d79984f410ea960b6dbd3e43d7b8584e9039d86a57c7b1e2c864b6a9c87f257f2bf557b97f057c2ae8b792cf157da8e4b7823e15f6afc447853e56f2efe2eb3cd7006ea2ac39648de521ebae39e2429fc92661a232ab598e5e706bc607b625c1d6c1b36ca72ad4d85191d41c86bb3d8859b257dd9e6a296b8e8e550af404be27e29d5efd2b773290e0a7c13bc182716e57689dd20ad64f548c8e56c19f5d591a2a7cfa048c8d21acee82ee00b2564941bc0f3cadc96a807b162707dd0b4838c93a86a716f7a154e456976ca723dac1cc6a42cd0359f4eed1e3d19de42c92c7368fa1d9a853c308606e458f9834a82425e3abf0033a29874c4dae07e895fd1c5989124c4b1c99ba26ac088e9a161d36af80fa348df43319dde692e6506b6312f8f311677f194d548335d4dc92a5b0dc966ca6e1b1e79ca9690cb8a478a2b9c9886574b7941964d42f0006a8ec56dfa93ede5f6d95c8201906552b32002dc650bd31600dc122843b6990c4a26b55bfdc7ac24771eea5de323e2743ff863db1d77cf33aa05dc3e25c32d4e9ba67b016a989cbfd2f2a1b675b2f9e3c58044d0e41b31f226e4dba30f0958fa01907200b30a3973042abd649dc9bb5af02b5d6368a0e455a3daf9922fb106ca386b8a456d1ce7e622d9b6a9782c04b7fc9816dca24f2ff0f68ea34eb9310f470195646263f88c1cfdacbdfcfc1b62fe0fd7df3a0b1daf56d5cc9166058a0a03d3dbb54396254a34adb68b9b541780b6e1a933409c42931ade58b4bdb43232db38767b3c3123be64640522b2118e372e1f0304a142562ece14f2a474e6ab64100f26c979ed089b6ab86ab3839aca4ca89eef1202f0ba135bc5c389b6845944ce437cd91b00c696a5765cd21ceeb000b6d0effeed50eb14497968be2ec2d6809857e486e377d2ac97e51e486dd882402ea81eca61d5cd065bbea090035e75f7fc57edc698d0beaffae237d9919f3a7b761fb348c4cf121592261fdfae3c6cbebeef8e8f36cbde3a9fc07b4334eefc6de2cff1f5e22cc37130f026cff04a098d74b594a94004bfba564cf6623900a9488100299301c46d0546e08a4fd4a0c6dd26cc9ef4a020c2f733168226cb2580b4b2453eb6ed09231f7ab4a2384cac08756c9a5a93f648ccc30b869c3c925bed0adc4297ae083269724923dad7a9258df1730c5be3891b89605e262387434b24c2b62a255870a9d4ae7da228b0463a2e7511666eb457027d0519e56a81c0b642d897afba6de3b393a6b9c583f6f260de3e891989ea4e15153fc1176c50b8bd35c202a399b3247943b44e3206159fd846263b26638f552e64c32ee2fe63ca61956c0118a23491835488c11b286c0c99fbb9f89207117156a6a03d0a8901004ac556a010a97a712557c1966d97c217171c3783ca51ed2b38fd0817223c96b26270e134da25633b4dad36b23a21676407711b22c8ac11d847ee98be950da459fc52449ae25edf529707da4a7b261c9c242f520646199ac994e05e7904268b49962e7b5f2c1977dcc921197d6d6bb65ff494abe0e3d96b42da379c5c22c2521cc7a6047c625859de6971a3565506875d9a07be340002980e6a41f7b9735ec4bcedf5f663a454ec3d0f128c0be1a6f1d3cc9ae70dbcfd746b95cc5f1aebf08b47fee6715e21bd4743ffd976f117bda978082d3f8ec0b150deffa4ac14df75979cd2819174fed50f67db7bd7634b94f89568c5e40158edb12c28822553e55efc3944362609d7b8cc83eae837125828b2295a2368b963922011ab77bff8a9366bd9b8ddbf447a1634394623c2a4871843942157f2f6f5c830af7ed8285abd59c3994fd9fe4a89ba52e7f3bdadc66ab7d2292a34198aa35f3bd61532edf95a0a73ad85985a29329c9d44cadeb58590728df3ef811633a1d30d39e9352ce9a4e7e472f82e6aa22b3c39428f217f37c7063715a4832452cf76be29ef614dc8b17f762e8b1fbae3e605e9aa75a3648620e6410be94b3c5b5a98eb53943e9b55157d6d2bb3ddf422318504e057452d0d99b4c6e758daf748a089d1df9b71709c48c302e64edeb7e0b57068e17311a05bbdc11296a756c1d5a68d6ba3b99c2526c41ff3a9edf0054f606f9d080822f18c2aecf9a00d1b8a4a5dc32c2a724b4b10503f429fd3a22f0f16433df756c11775d37dd9ff6228663e9d8a10f9bb2323adbd605c044ed549f98205c9d763d7bfef6383b4e833a5e4c7981c1fcb4bd7c3ae591b894756885802839280b50ce6cac45dd1d2250de75676df5616c745645399399e8a77322b1538ab991d77f5545f387b8ea8ad0cc4f23ab6ea31f2a446a30d16ed3c49965b72270f3f2cc2f2444cee0eb1f22012f221854cc08ee14656172c6189110a59d7ffc906c3caf422662b5e1da8ea1ed3b7754a9acc19bf6c5fe748c4504d6c0dbdda68d079ed95ee3fd89116ec92ef8cc0d50b30aa4ef37d42a66b214cbbd8d45f5079a629e0b5510c8475944ae3e14282542afa64af3910100a712345dfd0b9f18408082ba182d814ad07102b8984905de3cde1694b894a2e567131d6def672758fb367748623968fa7cc3e3b011d7d7a0f707525cc3e471fcb53f66bb5998f3b5506fdde6e17e65155b18719ba17075555219075001c4120ca7bbb4ba720848c3c0fcc8796a982f1cadd95c044b05b573fb44ccc32a8cc6f24a868d2bdb8727a7308d8a2936ad80021e169640a43e607c3e2be9bbc54002219458c438acf661764ea8581d8e3701e9edbc386778da36f17239173fd31feb337d2926d8bf32220871bd89d41e275f3c1e9c38df8bc611b7a8d75214b99e545bdbf17e54176a0275716c9d3a2c0ba94c8546f18c06fd19e6a5a7628126b4a98c65a41dd20bd616499db6de5f3b20b91a247d168ab2cae0d618d4aa8a58957fb1777af53abdf7a525d146f26bef580e82176527c0032eade6ef9842f86e3f9b92bd7708b737ed8e3e78cc86e087b374444fe4a081d2b14523f0da58aba67f1383c2e2e61649781007e8214051cbf092a52763aa250e62ee6b37af93fc06a6e845f0c04fc691030371fbeefed023e1d9fdc3777b0ee6c157d6e685f0567a43e1450103566079d5f153c55cca3892a7ef59c6dc3911303e3a7f5b3673db4e655f47bb41181091f0b18244870e5023bbee11a91b6307928885f05842d0c6e1bbad9000f4154a033ccb69ca8435d89f0cc928a41143642ef758ab44d02da6a4474058fcfc17969e9705f83a18086ac523151a4d505ff15584850e218ead59ed6400c56fa07a607c9e94b70bf43d192a3094bc606c264c593d3bfbb2dc7e6879b42aaaa6dc9a32f40f142dcc2954fd1498ae099418f7e74c59bfaef2c5f8c7b4fa53f6f9979d3a39f1bbbe141fc2dbd0fce8e5f70c5eb5ae98bf7d1947f8a9eeae09bc6862b12c37ae1499e208b0f1692c232eff99987ac34ef092062e024d4180b8148c32cbdf593b88038c076386643ee3004951b10ef1c2f16d07abbeae06c9426fe7f82516b31b8ee2df12b2a85da1340e7e2a0c06a03d37101563d168c8cf57f9eeb3ae0fdbebd74775919bc71975559b841ca4d3ee7c201bb12e677bc0b9de7db545faa5e84ebc51d4cca00136e2762a03e6e1b005ae84576d75ec6053517a2a5f21a2b867fffdb315c373dbe6ff1487cda5d41069a8c1378e8be8060810f4a279c1e1dd89fc3743f812ad0455cc9a7d2fea2e8c6aa5154d30864ddc855833bac28c2f4b00a4e7d977ddf3a42944455548856906afe7d361f29385e5b268b1fbd0922f2b820830206b5278a52179bea474a9828bb494ef18a5a69fe3edb06bbcf965ed67fe536d4409da47bbd4b24ebab4b09e934808f762723cfb8b2f841263865c2dea35012508f4af07ec5240e75a66f354cb6d04fbbb9be4b05f407f23f2a9a509b407ec09d06abbccd8203ccda50e9c7c009e6e92742c58a74c01ac5b23809d5b60aefe7c6ab5e943e9653fa65402cfb31ff482772fa604da1ff7b24ae600b39d4e0949d6e25f339d6f705c062145ab53c8ca9f5cef503dfa9d667ee80cc9bb2d0d3f6a1f80fd583eb0547fbcd4d8301a87d9bd08365b9d22bcce5c8c039f9c791fac068d35acbb806f760be9de2a68579a12c07c9430620469d04c75399e4fedcf29296d03edee92cbcba1b1b1040129fcaee789c3a03df658e238557f9b128a68d167d93c654934b8a000a9b89935842354f47d650bd4a576a22395064dc968c16e604d1341696277a157378a491cd0b5712858eecfd9f60e2dfcfca99216c77c4e568a53d2cefeb2e9eb7076e5c69893f0ae8e0402cb12c5bc849724af6ddb6b6168de592275cbc2dbf064253a8adab6b8569432b3f914ac94e5f7af4bcdb9e6e83bf24ef9bc111c3b50dca51052b53ee9c71da595aa6865f5be0818e45d5bc75d7578c602a80a36651c44c1db12e363e73366b08b41e79376b282f21b932cbf5a8ad0fb3905e71873873e8207298a64a7192e2f542175790231b94d47c5f84cca762d1503e39fdb4ebc6ce86200b63a63cbbdabf8f5c06515e4ab08ccc39008c9c7fab381d92d386b4d41d8df09a827aea24ec9103b5dbcc19b0b6009cc911525324ec8697907a38c6bccf3eb56ab84589df2470c1d69ab6e099657522d90f8792ebfaa6b0a5bb36a9ee86a4222a4d959d4e39e5ade3500afe5897ec08ae394c75ed4f8c3740158ee0fb8c331733fb873cc92d67156513fb1f2cd068c7960ddd7655a4319a4b3e05f875ce013aa4276e18ba015764cb740d715ebb6da130b7a6e24adfa071ffdbb402823f7f779f3fbaf41ba8f62769bbe0243258417aee18cd1f41978a5c00add83ac92a2ea47b952a356b9d0af2888547aeb623aa83e7ad43e8a77bae22f4cf39d7bb2d3b53499faaf8aea72a456314f96628b863c468cd1acffabdeba1080f1286f59d8e4ea22c25af46998c3248f10de3c88f218e072f2f6b6a30d8c6269fe5664b85bfb78632073f040a38ba1f8df41d389a12e926744700be708a6dc6d01ea3dcfdbcad6d299f49ad1e275d53ea74a18f503d6710632196adaa5054316693af02a31ad7c9a02e8e700d2223eb9606729d2006f3a7e3ce8d42746f6bbe70ca2f9bf2e61a98b5be3ef9d9892395809ffca12b41a172e98b05cc846278cb4c4f95c9e2ea54359b2f3c73818289f1a0148920cc674f2ce0260f58ce5e4277f84a7f924b84a4a51ddeff867be0b63097bab2318664ae3a77da37213aae1be39a5dde89df283f933076cf77e670250947d475bc412bc2fb49614f5264d475df25f97171014ab7c4dfd1d11d1368f17e7501a9916396e1958a90b5179fc85af246c8f1960cf772671787c2cbb8dba7a2c0c73a84e7cf50b28f899dfd6b078e9b88a58f1d402dd67bb1dd9229a05605ff644de1cac2c2393da1cb1b193f91bb7ed7d893da09a0b220449288a59143de7e2fc2268bc2d67fa734f9cf02e6100d4b01d7962908b0f4d94536ee7bf94a788c6f8db8b80811abf4cf39a768a8b580679dd3d6a214b4b0da67e2216d4da14feab1228ad20b7e9504df3d78962a6cd8c21c4d6156e9d04c83848deba82f67469c5a86602d179913cd394857d5f2c221a04711858fc1f34ab7a569d126a81f3ddb54fdcc8552847aa81b5a66dad822ac150fcc2aa386e400d532cb8351fad290724a0d5f3145a2eda73d2a26acd2635f8dda07b0ead00a5f9ca9518574227fb21b243d7d75fa1ff94bcb2cc58722cb21f08bd763e5bfc1b0cd35a09cbb91b806844b832cc32ec64fe199a2623c16230e96460c9b414a0c58a75fd555c234899e05da2e09f29a0aeeb982a12d86cafa40f619a51c6470b894c911e6d089e81f87cf97f1741686c1109c9bd96f9f9bf3bbd0302c3d1a11c1e97b1a9bdddfbeaba4ce1e1634e591cfa29e1d2da68c4301eb909afd221738f1f262b2f361fd4a41678700767cd6d70bf6a8efa8e0b4d5dbca8741309599aa3eea06b068d55979b6d308cd20591c05ca9b66d35fc2e55763eb558e0c2e60456c2edceaa9cbf96b5d338b9a001f0e8d0077e07c138c163dc0c6e99d9d43ec3bd66120a2c40e7f570d20046cab36dd82591d6681fc1023627a0ee0f40cdc1703f6c4a70e68074805eb67fe2fc4873d7d087b6adca49de8db8eb21fc34e1992c431225b0e45ef05393af8822137c0c11f6683a66023926c9f29e44a5a3869047c199ccbb7387f8e0a1a3ff0c959d13dcf459b803c67ffa23e342800bb666f11582228ffb2c0c6fcd02e59de4f990d7bbcb20ba6a19ceccabc6722ac834f33ef564611134bc0c5e057b000afdc5247c8c88834ddc0407c5fdd16de79ef8f63c0680d04b66cb4116cd89332fd8666aa88fe9f8c335421efe6362d9600a34331ddd9edf66dcc02c24b9ab017a39fb852c99bb6824121ee8d1acd801c8bd2a608b65414e15a0fb2ae6212ef91ed925bd2541026aa247d8dc4ee787e85d82f69474c863b739088da330b7392447ac24d2a87bbff9aa0eab98c57f3a31c4712bf356e3e302520385acb2f5832c6b7ebb0e28183aace3fc22524d9ebb325025296f24526463299518cf65968914195278bf19aaea1a37381ffea2978a4e7fd36b4976ff01f8d84aca433b9519b34a3c94b4fa7fee4187623f74324d43cb6649b9c2148f1f93139b3f6fae8e8b8c18ffcdc32a763fa17160b8e8fc0dac9ed3bab899dcd06d4c264a26aa329c8174f4bbe529185b530c2c31f3856c0cd4609fc64bafb53260584bcc37b9954c890be4b2050f30332c712c5c273b7f4959c5b2a3a963063368baf4ae69994dfa021014930ccf1033b3373d606a6797dea822c95a2a69d3a24405d4f3eeb38562f61dcb53c05ac283cf5dd8aae183e67c8789d13a0e049b147831c153cc1aa670ebad6fcb22d8e88a0faa670d84bb137e0c4a7f8b39db07061a2681f7270b9c9ff747b23cc3343fcc622e532b55f49e0392ce0967014da85829e91552ab1e42cadd555ca93f3a7def38a4f9748d60afa5c8144655b7e511e79c0d10fdb523519202e8030d7973ab060e55ddf8224505a7244804f3cfd6f1f1c018624adf2e80c58aff2a446707e37f69f05fe53133a0cbc5d9e932aa04705a5ca7bb2c0a2adc8708092110ce29fdd8299174ee9680289259c3bca6372d91c9b5c1864ddd03c4c824e521231dded1790c1c229e8bc1a3b804ef7ad66cea3286c429d12813af4a8e50bc01fbbe2344d1814de307d154d4f40a4d3855f96c145779def2c02c23d7142879638f29e316e00dd28022d4fe0e2448f8c4dc5808ab97c734f04dd7c496d3fda7f066d7a8828bb34d0af64bc86748d1a377a00cf78001daa699fa71817454b9969fbc74ac095d503fd3f0013b7f0c54a8f592043cb9ae89eb72d1fc66400cf42743ea784427350eeaad904306e1bbb31e50cdce5751e81ba9fc3d1bda86a1df08f41a846603d06e1c1a0da0b141e8350c6d03a0692c34af6146e8b4155daa74d74e844b55a823e46bd12f7bc4d2a62db778ab8490187ee72ab6aeb36e9cc99003ef79ebd250b05e604c8034b7986dc9a9983cd90c66990ade762a8cb55818dc7a618600cb03e1a8b2a8ca754c2eca4bac3c7d013623fed51584b325eb50911bb2e0063003f35654fbaa808fcd25f5430958a0fd357f697ec76a3c8badf7a2fbdb1412d8593613a400e6285a1db120c85063ee8b91f8b4a1359316ebf0919bb4f455f327d9c5c21a49d173e9ca6769038b834848d3e184bd2a376fd4446bf08d9a5dd246e8c94116aeec46fdbdfb9735b97e102dfd758afc9b28252fab91f93737e3cbdaa7be766e0c28f0570441b9e6187fb75eedb20ed37f6e2fd865b5db7f52703f8902ff73847759199d478a567dcee3bcac89f6b7a8f2bfa6e91f5395e3b21af5ff2bb17859fbf03741fc4fa1c0ff34e5e3b232f2bf7f123a97899bb87b5956f0a619f5d13d86eb8141d1e2651dc77f8155bacb6a857fa9f87e8b4efdf9b81365483fc31d1c1497454abf01757e8f96ffc593679795a5fe6dd5c9cbca20ff9f1cfe4207fc2b0fcbbdac4d9d6544d7a9480c3cf4d8db3062ef084b3ca1398ac148341e8b7c498628b81bbc57a39d59711fe4a297c537909be9a4588c16de6529843ffca02e8b579eb918bbacfd0b90d05cd6ae5f27e82d499755c27825d6efaa6384bcaaa95dd59aeee807cb077cee2d058997a5520a498125efb27ae97600cd382dbafe0c29c06239900b97254a8fb72dc89bc5594eb2f2d855de4192a04f216453b4020709f4d90580de524b7e6c0645c0fc907e95bb3680fecfaea717583dff836dccd3c71bb2355998ce693fbdf0cebb266e6c1d951c1f9fc04699ce582e917eb5fcccd0b2e64282cf0e8b886aed87d4b7dcecd59aa57d78b33774305c257548b27d39313402bd64422ca3e425d37c6173ab868d4e0059908043272d31a6c20d561a1a748d1c476398d42a979ab9d10d9dd3ae2071244e3176421a769a848b234ce693b8085cedd70ab76116af465abfee1e25c6c242c81325498896fcbde36fec875decbe0748e22243ac86e10e1c7726aa1fdba168dd3209e16b5cc5c9e046cfa61ac5ca7d2dde235c05228649f2fd3c5df7017397680ef94b8c7c077b104a5c7da27322bc68fa2279ec8f3db2304dbee84918ada8b2ea638e1e3f2b0ab7062006b887525468467121a6a55974ab4575dd360359f8e21567ca836847bebdac0cd82e944cf776743579e7ee9779a94c473d1bb0b60413267e490e26951f32d6249ca10be8782e5bfe98909f030becd28c677f50cb87167746c0a6feefb1be1cfa00b8eef0de2994810f00c1ecef84f4b3521d0af034ffa0ef2b0b730fdcadd2d8f2e40f3efea9e80603b031ff05fc6fe71500066a0d407bf786ac283f78fc8b92a3f01f09fe9e15b06fae6e77a1d0cf8d0c6fda59a0a2d9ecdbdff90bd084ffd41f19febe45a0cfcd9f626e4064ff820f4efe3fae0f8ffff11ee05c76e1fe12fb35da8184b2f376867db0cf6cffd19d40a4ece4fc05feeb400242652bbf9a11a2be54ecf87b43048ff70af811fbdf4d18f4711f778071d41580f919ffabc7603aa6937d6df8af7583d823e2b8b487b8519ee117a8994821ffc3a9e11591fe3a811b74a48f2473ff43a8a7077da2535ee6c84d6029b07b4984be8c6fefbbddbb429e2df994a7c50fd46adae4b4425afcd6344c5d7c619d034c6100f1851abc908dde25e10b1e349cae84afd5e907207a022c3fa4b2ef2fd7bd9b1fbdff1d7e5732800d1a52d0767fe7dfbe6ef71b846c5b47a92b8fe00ffb98dc8853c0492c5fbb694fd299991fe6ff96da7d660083e3102c85da920258644d439403cc6f004840f97ebd81ac1373b44facb5bfba3b54f8c96cc7b4a97428e99f0c86a22aa997a1dae02adb5501018d39121b75750f8f72ab7f50c1180243718944afc36dbb4373a5445af27fbc8d91c6b02491e632ece980c55cd2746e5f1b3b3d628645d0f8dad02a5d9673c34c2db8bd5096c31347e22d26db096fde88cd660711529c506d098f7ed3761e512b2c6d1bb3c0c183ce62891064fec08a8ecbad459811d2e16c506dfa38abfc89d0362c44265e33054325b11aa3cbd770db86a184b0f6d67cfdf26b6e7c13a330b0e71bcf15848eeeb7a7c2df4df7597bad494cdd9ac5de05545635563e70720591753f07081171e5efc11dadd744b7270c0a5c8c178610bde01acc49491307ce598615c0b2120ca516f9c8e0982aa1166e9f0f1221a5a3b7eb709a2e838c7432b16266bbcb722e94d9c767b8ac71f6267d3a39c5d2c3f9740c289e306b3828a286fa73d3c033815aa5b562f6f1b1ef7c5aea46910abbc3169c081726fc05743041f57f4f7a88b4ec44a887dca16a51fee062917018c71f3c9dfe1e7a72a2efac25c2dba67a2660a59480d1264c42ebaa4d2a9c0115f98cc80ea3c2a5c5a5a7bc082ea6c7c149b5de0c33b7e9dc8a9ebfda1365fe1395fc71d54fb9e578465296347c8d3b38492c012ec86e1146cf05b359fda6d4fac502fbc1689b2a10a35b470b03b8ac9d3b72006174f791ec265066110397d41497f1bfc696fc5cf20a6116bbd7b15549b239fb6535c35db9f6c1f604a9984e2c662b1a3643f130d877156b6df5494734cba9b8a34e5c2ad6c7ae37bb79c0095f150784347172fd98b65105c7d8bca21b5cfd04a208367b77b41d2cf1863b5f00e9b4e8d5eecc6a2aede057dc08c010b1c8d3977c1b926f746813a884d20bc0df2bf6b7cc788844a01fe71f09364eb7c0524507dc9b8655911a671cdff3f2216179357e1317a7b0960ad157a30fc924037221a0e720dacf1d6717241f4786f9b3d63d35df1e00cfb4dec30da6a435af10fa093637722fa74991443d65ba0a25abf3e1f18b7e1f7172294bc3181f10f3457b5576667c6c10a8b71204cc76642e4d4cb14b09fdf92e9b84c2a568c3c421936db631b3badb4be330104464f5f24187945248891954a7c215cc470ef27b98164bafe42b6d6d09f72a99ae0090cca503c9cdcb8111115bebab4064cdd8d586f9781840ff3190646158a53545106147dd5f116efc07ed038ed75fa809c132d584428335b1227c59184b478d98d6214df1aa3178e4241f797460d3bcab2fe495dc9d41541d28dd6cde2bb9afe4d1f04f3237869bca8101c0dd9c6c00a18a7b14aef98b6bf11828d5beb8b64c7db5a48df5b43358e74b63d8a012efa7197821f07209918d8cfa3624f7f812a6c75373717862c144407a12bf3a7352b122653e3a3130e6da2037c40fe7520ccc1a181f7d1207bb068c951aad2605e2bec5c184401062303cf53de1d1f28921105311c7a6ed1c6a986a1cd859d43d227e00836377f65089afb988aa0e270501b8b4688fb4e891365a0858310a9beee23eb826922f2b6f5bf50b3294c8d596157067e4b455714186f2792db002c7ac5c1b5717c02a9b510b2bc6cfc26863c545ec2533b4601596a174a6362c213296c8d7e9894d86bcf1c63730b67a870d20cee3478c8e3779c584049ff011f37060f44a5b5ab4bff6659ef9ed8fbd0c6646b1203e772b402cc4c8ad9588c562b9602562538c5cac60b115870b2b28168ae3de0a8a0531b8b59262316f679849a60c669841e6f6fb0c64c860a699329c997d43a64c339821c3993313c50d762b39f30f7ccd82a89f07beef1e3b7b96b9539f579789faab04633550bb893d426719af6401242c04aadaebd5501048d36c3a927dbefb7e0a2af37cf743284bf33550c5ba0b8ce8e299e7bbcfa38bcf6a8b006094511e221201c0480400000000206ce2a87d01d5b4decf4706b1f5910caa516c6b7bb7b5bda5dc524a19f90c190dd00d75a8b8805d2524b035c444044431cf0fdd08012f429cc408415375f5d81fe03867b033848b3496bec260490e10b97090f99cbd01272f573daff75ca1da8d7cd4d11970f2c62d5f129e6d8f0c2cc1de504fd79b3a5a95301cf163491f21be2e5d27f4a4da8d6c0b50c0c91bd3d23cea91323f48d863ec2890b1b3e24c999e31a8b421787c64b881f0490b9f301a5bc2ea0936c811111ebb09a3b566283224c0b6f0d845ec22f2d61138594e5896504d55d511f366c8c5aa871da11871f834e5b34e25008fbd843c6eb44eb973a68e24581a488f1d0179cce3251769ac9fc61a97c82d2024841ebb1296129e2b258e0d0923358a78a1f119771aeb4aff924e9edefa41f5b8cc633f80c6f20056d23f7b73a29b7fb879889ba4ffe615f837176fd2f9b7dbed26ec0246f4a6e935005e07d97aa367ab05af2d32aad71e02099ba5da0d40166049ffdc268a376a652eb265962c671b0176eeb1ef71d263eca899c75b6e923c7624b7edccbeb0b5ed6c19498220b786bdc7033879d80158299759b1ebf7f5babd7b75b3c4fb74a15ef41b65e4f795ba23eebbaf4f8826bc4d5f36df162c4cacebc56dc784fcb667337890b991ba72e2f2921a39239bf24a31c52bddb66ce825da29ebdbf1d6caf7db0295acb298c8720283a529ddf6a72565495355d558992de9b6583fcbe2073556872b6c7951fc6d6d6feaad38758faceffaf5a4a49fee07a4104b725efc2de2c52069824cd0c46cf44edc88a2438cca16293a29e6a44dde7c11c88bc0274ac24c194316c6462a2e1972634b481d1c6bd28dbe92ee6df3b5fcce79fd2622faddc1cd160f6ef2bca9d2828cd73e8251efdebff54af8d1f2da3fdcafaba47b3acc4d90a22f5d849357ee2a4af6f4be5470943d185d7a0063c9ae9216963e2cf3369b1f9d3c1b8a7e09224c50a9b453064cb51ba1573a4bcf0be0e48d363daf3d0491ea6a2b2e0f9f4df347b12a19f57a3d2660af9796f57aafbd83a9a1ae921de2ad9fda9808f1d80130c44a5a08f6d6c91eb757137d3ed1497fedf46ee801361ffd82e3ddd0033206cf3b2704e418355def861eb0dba76b1ff1b6ddcee03a1f318e65369b6df8d6c51e176d9cdfbcf40c45baa27de1c2850b17c08417ba3060709d97183060c0409d4e87b17445f631e01f8622fb178aec8b3d7c56e6a29eb0d30bf5cecaece77e3cc8cb9f9f9fa0a020fb3f60f80887f33dd0ed86e2fcc74b1c0ef7f3631ff7c347d6fecd1775de1ce7e5ed767bc2e1704ef8c8fecd02b7878f4c9bad2ccbdb5516d9b7e59ca7c6718cc247f6b3d6e46e8b4f6f4f38c1f1093bd1091f5947e1a245274f98cbb0921dde23eb768824c51a3145be7268fb438f931f09b0512235a44b173a3052ed6cc27010400b2c5358d0f1d1878ba5caba451d895155a3851b2c3b36b051020279ef9d9e8ee8e469a05fe3f5d845363e1efb105ac7f07c111a91044dcf121244b69cf4b156439ec72e62cf20870992209389a9304e7c6ce9f101cd00cc1409b3b4aa15bf6a2d093a3b468501eb1e57453189e2648c0d264fe946b2d91e3beef1d8c963ec28def211248b08d41a1a5129c6174e1e160a40fde282800ae6b7885db780dacfc8796d054bac4c10cd91344caf1d2998e6891a18af836aaa702bcf1d9b060b3a79facc14a01b0421720563090f3c2da41af0c0f81863cbe3f1d663ec45e788d9091b2cb2ec4831cef8e7e461b3caef5c88df44aff7873f01eab576b24cd66bd795089a61f23a788669c92c4ed79124576ea4d99a0a1ae9a1978ef049037305aa4593d5beed10dbc0818978ecb71a66cb8e125b5816d1633f8331d268f173ada69ec72e622f715c31b84e2dc44ab7778fac75fd13dffa6d126d353243b09339430da3b5e24bedb5a346a325632284c7aecdb6d0314ab21656a01c1c5e6ba694e832657794bdf6059058a9b61962c6045a0f2157566c8e9e8e1a2343dce4466f4f6fdd89babdae2f96893eb465a414aa856b06f0d871d94db26296047d58b2a000a65bf7fa2c875616af61532fd5807eab85f8c85a1daf732455aea7b4d7be809b34aa10960587aa8514312ea97623ac24012a274db4305109b248f56eab50879f77b68cec066a5d4c816e2d7ceb17d8c3f787956ada75d3de5b6b7bfb62bd75d1be9821243c766b87d6adf59fdeeb3213ae18a648c64d44ae869b28eeaa38c63d148d5e62b3f6f3d6034962a5e170c93d1455fbe3e168572f0f45e835f2e036ea265d250c6481c5d34d428f3c7800f3393a3a3ab2df029244d10fbb20201c857b8dae2f6125a30b62973d7870d2ebc9938008452d50e11a5d278f7c932449ba0747e1aef0c1ef6d038e03ea3f4540bb2000e43ad4320805e04208180460d3a0332a89864ef3838be0e587a215aed175118a5468c135ba75e8c1afab709344f00f45f5c79327c2aea21e3c7869cd16ace061a7816b7493a0bb0e5b705920974892241dbb91004208400700ec8a9cc30610888634641880eb305c10ca0501fda0b8db6996b6da08e3008a4628d24b4be24e14e1de66b857219dcea17a572248515b6bad6b5c001493222a5945bc88928fb1cfc8ebc933af9128005100beb37fb84648d6e29cb1113642bad743f0f27e107308396723bb332a42051082a370754b4b78b7b1865b890fd7a8c8e81a8948d748f410764646d8b3b557fc24e67fd8ba175dd489242aa625dbe61865f06273655459a0a811de0961bf2489de2918276e11a8f2f2caeb98060dc0303e778d465c6b7394a5456bbdb7d66b53c08259fba860a25b38145a6954a85b5fca7a937491ad460f10af697105f2e35b942b90f3f980ac37dee51f91ade55256ac74bda6e8add9a623f00fecb533aead221e7f784cf4d8ac4a28e0a35a420a38a996543ade6d15ea968a146c093db020aea3b8dbcec930ef812dc14a5910d76f686225ab1136eb91941d7b5298044f9262fedaaea640adadf766dbed6c8b9c8e486fe15068a111cd2d9c1d9168fd00b4d7eb0975b59c2bc6220846d7197d9124730b5ef451055d0b54d089f7fe20b158ed264130eef2b8cb41c54778056cb3606cadbd18638cf179eeac3d4f7b9e6559962e8aa7a770d6b13293e7799e35bf9d67cd4d735771592b6fa5db6cbecd8b2b1d47fa0846b01bc179731891ac6224794992ac6424fa640a6324499229d812b4e35bbd922449d63c5f27716d975deb11e44c5d450edd2a5a94443d90822d01dd6dacc5abc53154acdd6ee2e85a7416eee75b6d8ba48ba68fc0b70728ea29a05bffa0a80752a863bf35ba9b013e4f148b2ea2a7769c03d95cf4b368041684de5511ad80f9b6ddce158dc082c85da39b7f607db89cc52a566b1dd1831f7c75d1032954175fdba25dc9aa26ab98d6ba48fbb5edae26af8f6004760423b020ee4e9c6223607dc7c26ebba542c3ca5a7bf135ba54d5ca80a3b5c2cce561abb5aa950a0ca96b2f15182c60347d0c50f2ab1d2a4f6d9ec0f21c800b8d29514a84129fcacae053531d29b4301d120b72b2b0e4f8b8e450bd40dbd5c1c145c7c7a72978650d179a19da3068638a1c6002447c10d5046d5cd9382bbf066d7c09da98127f531d7c24ba255229f1f5dbb7514f282c472f18d78a6badb5e25af3d7a00d15b5568c6bbd317e0dda2851315869adb5d65a6b6dad5152fef7358a4c304a4bddb251b74ae0515c43ca7e8b5c5e45a83c757d75a1af5c5e3682bd3218a81016a441f555e3cbacb1e44645e1c442d078f2df668d163aff1aa4011ce293335ba0020c8233dea470fd8a8d8989182ea067cdbefa9dcaa1badc6fd30869e9e97705764d5530af5f59c62a6bad48f69c813f461f5f2665bd678473c83eecab935fb9e67009caa8f1b93865add65ef81aec61f91ec3d760ef099766633f7e9d9216f63140eb9434affff93a25cd09c653d28a0829c5c21e7f61e127115dd5be0667d8a0fa194980be0667a030ab68bdf5b4a4bd51c118438c6b91b5b886ae7771195b63f7a3b48e3126aa23604f7ba13ac2c5b92216504be35940ed8cdf3a213447250cccef0b0b2041a980444506d56f918a8c191f03d40c9208a322a36985b7a89561c56bcd94d6561bb491650ebe077072d62ae61fa0b5366bdb128cb11e6b4472ce79244d1e95246b260ba88df1e757ae39509fab3d8924c6a699730d56a058f5b96b549f446d45b98ae684ca1ff6f1a5e7fbc2f767886bb454ab891011e226d9fc3a026c453240edd7e017387fbde29ebc47285225c1eb08c0174d22ae88a8de235fba3d7933b03310bfb623ba46b5688b359be7129b964569c3a357afa76dac61af792dc25eab6ec3b57acd56541fe3d166c3d8367aad681ced57e00b249fc367b8f84c71f181d26231854c2976210115bf02635879eb258e04347f05c6d87aeb358452b4f85e6c7775325fc7b714451157cf2890329aef2541186dce39e7b168dce3388ef75e8cade706902a208999cb285a15d6c9aab02c4422d7497224c94a039395444772e7b6d6eafb83ffc558ef5074776f9a52a7a125795d02c2a99f1619f04a6d7559d59fb2d6dced70addd99b84af2844993264d98941f6ed2be6eb25ebb766325f5d8c439d7c8d3cd737416c41731c66ef38c6b582c325d3cf7085bf63730eb0cecdbec0decd01d41d6b2d76ccd1a894378b7fb60dacc45cb13274e9e38b91a03a8dd0a3ecdb9e1a4dc3822834c94539ab474a3ac5b4249d80b0a834c58f7aea8515d125e5ac294d972f5a6df1e8adaa8bcf061a3c48b334530ae56ab284689114ccca4d80c5358b9494b4b3742a9d022ed43a3fcd2ac965c96266fda79d3512d5a7d74e8792f5af5afe80b95236aca2469d2024cbad1b7412944fa540103b624ed49968f6a6a2aeb7753eb65e54d3259a8f89c4c5afae499a186449d295d5c405a4c59e1f3e2eade5f594ef91228648c9c23856a093009992e1f69d9c6cd9e2a9f9636694f3eaaa929fdcba19927f6dcb0374daf137a50df4d3a4f6b5aed61005028d0d28d723beda3faa165ad1543e9e76e63d8d50bbb4d0aedd232cfc92b6fef9e9d3c202c566f9a6ef19c3c73ca7793ea1075fd3b452fc14e87f4404b31c0be2c1d353acf936c02e4f6cec903da55d49ab93789de6ca1e44d7fd374f4cb9b41175376dc2ccbf2f4b22c4b175f964e9a8e7a69a2a6096446065ba4f8f3c39f6eeb9cbcd3dc9561be7c593aa9b176c3208b3a6f9a6ee94ce1233b2516547a50509013a121f9f920d705055d167bcebe2cddce39796569d65a2667e9f4b27413b47375862687d78b74237d5996a5e965594af932ca97a5a3a51b612503d808f2b002c6f4854e8a4e4d95671cd32d1cbbf43bf7415e777c5050d01ee007b925d3652156d2bfa0b296650b666c8076fa2aa84863d9b23743106eccb3f4138a4ea80bc360086d8250f3ec898632c84f2f83ce20948de5aaaab1e6e49941bb6d1f35cbb20cf2b22ccbd2ce9a2fcbb244771a6b579a3b12c6ac10b20f0a72abe6e405d9e1d8eb7148f67afc7a1d365a81e07bfc8d575860af7dcc1a852370ecfa8d522395d96b7da67dec31199bc6a8d1697cd27a4c6b329d35e45b03b5ebae2d43eda5c5b45083bdd6fa4a6b27cde2b5eb27121a4a87f6ba75d46b3df53a9b69edda3398963239ac4c6c5896b3cab4d5a4b6daf3d454a6ca585aebb0d719b4767178f55a24cbbd32adc5afd75abbf873235e895d2296ce404d86c1372e333bf352c1e13746139fc49ee8f4c361daea0b3aebb5632090d75a6b2c7c9da7b4b65a485b7d05ce6b0dba486b9d9f9eb4be5d5ec22b34827edfaf2198ce560369ed376acb95ba3f2d9669b14c6b546bb7624eaf735a6baf5a14d3a298508b428d65adaabcd6a7066a11a875062dd465e2751dda0f482196b4bccea0ad135d25f177b58b5a6bad8140165b5f966ed39cbc12e81c7ca30ed4428cc6ada778ebbedb248cb7ce61b7d16be3ad6fd86d9dd8c9bbbd3a827531eb7a685d0bad6b30ebfa6a836f9d25647a1040707be6e481b0e1f6be746be6e49520f8d6565b9e9ec84522b7654e1e1108613f222d727e68c82d999337e43a1d8a7e49d4b3635c370df9d62cb464bd060d6ec59c3c0d4316ece4951ab4b2707dade636ccc9ab69002366af3c4f96f0a4db2f278facd5afaf9dc3bc847c061733b8f572f232905dd0adece5e4752eeadc723979ba0c63c2ab9db3b0a0780c2ede240e8fc1ed969387615751b2d4edd2d2ad96ac7545c85fb8e0364b8921a7a55b2f146a6729342f748017728be5e4095df02bb969671656a43e6780cfb9b572f27242b62eb3aba47f229a980702f1406eab9c3ca072877e520944a5675d1c13c9b4ba6e3c8abae53a79a85004da12bfc4b0367f6ef8d3add6c93bd1e09657151f6f9a6ea79c3cb33ccb805fba055e895954c010f0416ea594679493579a4555bc46352c94b18c64826e3b0403fbf9f9f9d1f33f3f3f4efedc526b283c795a975faa5ebb7de2e4e4fde8dfef03ee71389cd7abc7e15c779370b7a9fc4ac0878ad35e42ba9211e07735ab684d2c2c94b6545a8260b6446df1b1058ff00a0597306cb8b8dcb15184ab0b1d1f5c5ef0707d69e1fa02a4892f63313979b8b2ea7901e307192c33d61ca951f4f46e2398543491d2020c244882f6876c096e048d1c696678bd7053658a06a09c55d53235e8bc283106871828a9d6e58f12fdf484f5f68ee578c7711cc7a2d15a41f971fc19c7d10ecfc6a27185ac1f47dc38fa07a41037e9fee84b4e3f9a63d1f81b9d48ca95dc8fae1bc7719c3a3794c02c5f9653767ce9f6ea07b64702d84b890c99a59fa5db246611195464927a2a880b08f53f3f6e919cbc9f29141fd5a01db02796d6f407e330ed9de0477ee7056a7ac2ee4e69a13f661e87736be4e4e1d0219cd7f4041fc2ed82bcd714052f7f8a9cbcf28bbcc8081fd915d6cb0bbfcd2869b8a45cbd764be4e4e9ab6f015ebbb51a62c5705f2fca6ca0d042c4891b9b65360554c3200172866248654e8b5a863b793a042867ca44c912223cc14f28c215a1afa30e9a87ac3164a028f1fddcf1dad971a1749c9725ae24a106317fe47a42e547b11fb9b28000417fa69cd14176e6c9eaca59aa010fd47e1c47fbe447243f2679c163c30cce969c13e938fee0bc4cd14a56a511e9e8f6878385e920a26e712dc993850995d7aed3f11acbceeb26575e3bd2529493b2d76ea9ba7c5849f7b0cd3f39df7c73c6e5dcb4e3b32de79c73ce1932994b48f99ccb9c73ce39af10e7f3cd1f904230f9f84ce64c44a70ae873ced9c9fc1454a2caffb8f8e3d6c7c9fbf909fa71dbe3e4fdec2a2a5a1d96e7712ee2dcf23879b827dccfd3d89468cdb698867ce962e9764789d371f24a938491049020fbd16d0e742c775b838d6ea54ede384ee5880050b7083e6842ad3e5e3db4d2f4f4845bbd3aafdde238791a456fd8b851bda0da8522cbe9c915aa2a2f4a2732b48c23868c19a9f13332c40c0d878baa71f24ab21d8dfc23240d0e0b3319596bbac6b2890c5f16eb697912b42223cb9514b7c3cd28dd429dbc92cb900c3bdaa02f6796448103041846956ea4c77a43ca694125a6cb0e11b11439e71c03069aefc7a71c344249afc409ac3640c8ce6ebe3826bed7be80311963b8b49cb6d2beca32e8e7850b2b473e67ad3d673ebb6d81daaccfac9244a14ab2c74a03d953c839e79c977cce39c739124548132737467c692e7796acc89655e0cf6e6bb011bd5a913c658173bbc2dace0ff60416eb57d8eb3a56c9cedfd5ecc3ef8a06c24b59aa6dadae68af66afb593a8ce8d90f2bcf625141c6081b313afdd032558f2da5bb002f0b5e7e04e961e163c694f4cafa7ce86be3c59bf1aaff5a079ed560570ccb8110f1eb42c71bbadc15220f97174eb841b73d1198a1357a2d0b2c3e273767b22ea1e598f72b2d96cd966f30f48360fa1d5c6e96d228a6c3627b2ad795bd1dbbcda9cb479bd4d9745d967dd67b7264e5ece6376b2da26d40eb3169badd7da6d8993a7f3112e464c90f97abd543b599948d4b21c589df597495c304ea0e3388eb627963ec282f89d23ea30e6f707ab2d2e2a659f5de73b3e735599f3d97f8034ee7e4e50a586c790a7243754d8596365052c071621a39757c995102d175e70458c12261e6bf04491019d3e58599c80a07091da6c3f381f946033f1a5f720cd8f577e741e90b852df9adca4b142c5c79d37b98e354c12a81e9e1579baacf4a4018322c5d9ca1de8c072713d7dce9e8393975b8095f2d410e3dc94597cf9cec2ecf538fb1ee38c853d4f6de11c95a11e63514a048a65e29908967b22d9100f16c52ef816bf44a1d825fe5c60d127525d612c0c04f3186f3d768cc57ce33174e3e1635c86cd1e3b3e83a244e837467bec75d78dbb58785387290d1890b31ee9167b8fbd6ed1e931c6688f71d363c74e37a96a5581f1d8310b3c859f70d4638c2d36f1f07e3dbec3c7fb823df68af513c6188f1863bf51641ee770c5b8877b180761ec564cc5e3339ccbb298d83db2164be9b705ea7c568ff10fc6d6faae678f6dcfc97f852b8f310e63ff80847d89cc63118fad135db3c78f31c6f987c1f7652185c5e75cbc494b9f731c9cbcdcaea2640e43fe8dc3cff90d4e5e2eff725a68cbbd2dca8eb775789b2d8ad6dbdc06bafcb3e5763b637ded6dce8208e5ca03b908e435387940179c06a435cb1a7bd445d46770f2501b902db579ad2ba0592dfe74f17419904a3915f2189c3ca1ab6d26e0b7f9a5133c5f964f845f3a0c6c3e74da1c55e1e4d9cea22511d7a806ea4b6feb96a0500c590e2c286c527b021639dcac609263abea3a692a3da53505005d9a4c71d2b4e584ebb5bfc0b6db1a4ca73ad5be5128eb5833de34dd0527cfdc55942449ed2d206dbddf66d76ffd386e2de9f32393e08fce029d0d27f6da57209aa16d2979f34141ae829317844bb5a7801c23bbf33f3f8e8293f763ed09ec570e7bbb7585e2712ee2dc04270f3716e0b597206f65600e93f3d96717734682e573921e9f9d042ea6da4770f2b40832589ec24afa6731b65651ac8ebcb870e4c7634f4167add9d9051b821f1a10e4718493324c665480e932a7ea5e246768b81b617ccad6e800a27d600046be98f92579ec1e4035d80826633dd6d849730507d5bdf6c89dab11bd3157405c44c1692185ac424921d769e8b759c4cce3b0c75b469c3cf60ea077f600556b39608b9420f3d837e00326367668590304cdcb0e7f765cfc38c0059c1a625cfc5a10dadb1b7764100d8837a9826d11c9c008a71d553b4ea4ed31f3339207ca052f1b2bc644f192b282012b3617382bc3e1f58f2dab2a0be07973563e8f4778ec153879388f13f082b187cbab85173c6c913a6d42701694413604450d3514087b8c7d0256d444895a01e48b9614913c2b34bc1603c429734e9e120820800002087ecb4e1e08649f94e457cec94b2222222222f21be7e411ed2aea411f40fe0007f00be7e41d6068686868c82fd9c91bd2fa1021fcb670f24268d0a0418306bf6f4e9e86600f146f0003f87573f20c50abd56a35bfc39357e361e50b5000bf6d4e5e0148922449bf6c4e1ec9a3e9094000bf6b4e1e013264c8902183dfb1939761caeb9190fcaa397948bb8a92c1a9de8300e137cdc9032124242424e417cdc913eafa010cc0afd8c91b402e97cbe5fc9e3979b95d457dc7891f6104bf664ede08bb8a9240404040407ecb78500793fff0c16fd8c9fbb0ab2839e64510c12f9993274259966559966559fa1d73f2ca600e13efc1450f7ec59c3c0f280ae6523bfec8c523bf614eded1aea264871fabd18f483f4ed53afc0835e44714574d4a5c690122e64b47bf604ede8863cb1b19f9fd72f28c7615256b10044b508f173970b6823882670a1d0499a1c20dd9949d315f5e6c4e41ce5e0002f0db85147b8c9ddef68c728e3dc452da631caec2b80eb91e77c01705d696cac7f41863ec42a04b36d67bdc749d32e030ef0f0b4806c90d6fd93daba938f11b4f611fb6fa69b064305c13e6d00d8c863126c26ec4abdbf45bec1285b807021ef25824dbb9e7f4f4780376f318874b64e0e3dcf59803ae4105479f13267c5b521ec0afe1f0841c3878d28dd62e1374e901bc72e20498a674d7b39e9c1875c89c717225c5b2435b76a7c4746d9a6ed0e8824709140398c00cc133c748112f271834a69408c2c74dba71d7081b469e64343109a3a549bab1b0e754c1a2ce507169a2e58a132b66b4a4058540f2a45b14cf3ec0a19122878d1579cc6829675ef07c6183a20857902acf81835f2e278f039fdfb0c1aff0e46de002f2e36e397920ec2a4afea0f344447eb59c3c22144551d46f969387fed8f143437ebd4ede90f943ea4dfc26d39b4e9a7eb15075bd060d7eaf9c3c0dbb8a925c544f3e28c875414e06f9b5e2b59adfae9357437b92f45b85f4e1fb0c19fc523979197615257dd4f8b224f165e997ebe495403cdc3c10508f280fe4770bbdc246c8b5838b8594225a73cadb3340cf871a3939f03cd9d232f5071d2e5e73e950b3236baac5141a1e495efb0d227d799345879ba93a6c9ca41bfdad20964dfbfc4346d819a82f5cc6a6c4792121bf40922b4795cfe5fc4a3979b92843807f9eae3bcff33cad80fc29e2cf3ee73d4fa6339fa79327fae79b3d31480491b27207c599832d27d83865a9c9123cbde2f99cfd423979f982bdda4643d0649d3c0d1c42e284c77e9f5c2727ef9cf22184e0b7c9c90ba10bc9eb74aebb4925bccebdc34dd2aed3e9744eead0d705bb7a8f0bf0d82fd6c9c35a6badfd32f125274fb7abe8129d0f808b01f0abe4e405e08699c78081cf6370bf49f831607023ac649f7abd5e891403060f71936a8fc149ac74f40688d40ab45f1a2a29863829745055f9a2f24225dde863702d46731071f4bb6ed528f2ba4657148f283a36b8b86c8cdd50f2daefd5c9d35d752f3d1e91b58586264a1e18488ea41ba90ab74ee0417b5cc3ea718ab43b35989499a1a545913829f69ba48a21599af3e33b74f07b64ea6db8b7ed799b7b072c5ab9593d15ac67abc3158abcad9ae5b1d9469b2dc866db9a43e36d38db99cd866e2b7c9b693b409daf1943b48838913106081228ac25674fc654135f8a54a12041555666dbe129919502d8670c8bad07458cec29d1a50d193e36304c42d0ecd4216bb2954db9bf9367eea5d78e64c4c8990fdaf2417e8b6c544e981f5d5cf3a393a35f22728c68f8d2af15268a43f5388e14392d1efb1d52c57c34d0e0e14a616747500aed73ed331ea05f96184f5c0c8737aa849c3c9bd89d3e0f00e003c0af0fc9e31c77e771381cce432c91789c083b385cc6e1344ec4f90a701e8733fb6d9decd3e3907abd5e0f87711847f5e5e585101d59675629cebfa6b4ca004141064aba51183419d1512445cfca29dd1518001e7ade30b5c88a7326ddb56b0742c8a47c4cb1b0f281f38a95442863072b8d089d2e6670b93b50475c77a03cf61b44376513993979ade635971daad77e8164177564f6fbe3e4652eb3173f8e7ea94edee8e3e4e1ea68fdcec59ddf1e276fb7ab28d983c9dffee6ba9b3b466fb79b2fa1fd4d4415de6e375f21c9dfd0dbed76bbdd9cbca1c09bd7db8dab4e8ab7d9fcf23879b6114f912d6580c0400223dde88c248f5dacf3b86ae181460a98e0ef48538afd4e9d3cace6c70c3ffadd71f2c611327c009b1ce101e44a4b373a242cd3a1d16456a4accbcc5554aafdea702e3a5272905227ef8643ec612f1db097fec7edcf05d7457be947dff62fb845f5b82b2ababda25d9903eb4a0c10285a59616e73905e0c39d31354b267cd8d1554a65c8989bae2a286c81ca0b2136edc51838686983266365af00bb3a205040e0d3d448ce8e4543a27c450a9c3946546559417235938bc58e02833a3451967040c3a79b63009fb91705263c4925f18185457526f641429618353821d136ad2b864557909a6da9d8608c29cd860d20bead95304eb463642089c395bca70b9d325c88c3b3e6e94900a2367459ad7982d84a9415f95b22a127ab8401dd1c147cf173665267a45a26e6f46bca0e233a32b07932d17322c49626c6424fa052fc5a222d16fef1ad9114dd60069f145662a8a30cdbb8d12a9f2fab59bd78e7461c70d1f7bd69831a126d5ee3786164b238c31c6edaed3ee36a541ab1dfe6d57c297bb2c68757230a9f345869ad466823c7cd2e030d2020b34e9b8cbbbede26e1b7db008900ba392ff43d13431dd288a96fd3dfbeb75a31b15fe45dbfc46d9fc46d7fc46b37ea35d7f51afbf8ef6b052a532e6a7a68c0490c8532a45480b319ce86852464dba51270c647141a2e205942159bad1a81b7c4dd1e1f4ab022324dd681bac165a7c70f2fcd4a41bfdc560c9d3d5568da1902ce946f5140e9756a61b87c395e1cefefec6a16d9cf02f6eec374ecd6f5c9adf38e06f5cd75f1cae8795283047c98a2f7d84574d2e40434b4a1c1ebd352da41bb70216a63757614e684fe9c6e1d280b1d105080f335ad28d0bca02c585e505891130e9c69df9c8c12587479e142da41b07bcddd26ae9bedd6e3711bf6fba7713febda1f97d13fb7d3bf3fb9603cbefdbcdebafdf7a5809045d2484202101266b2c8d001bae618d32685a9448f7cdc90257a23471b266091e1ee9be45fd1df2e5cd11e1d31229e9be8d6939b1c051438f1a28e9be2d60cbc9153a3d9e5c1192eedbef3cd3fe7adde7d87972f87d0ecf33ece9ccf1f5fb5c91ee73aa82984ac3e9364dd3dcf0db34c19e7c7fcffc36bbfe9a5ef9a9e4f3f7290dc52dcbd2ecfc5d8a9562259899df6599df65d8ef12b8cbaeb287956e2f7250c99246cf988b14cdc7cfc91a39244aa4bb6481e6064814093d3182e92ea3bc8260e981269825dd65952f3cc2de28a1e14524c52c7c24a85e0073fc4877997b365bda2ddd369badec6cdbd0b2d096853632bf6d4f3637bf6d5d7f6d5e7fddd6c34a3fd8d30466a785262c53d236255e84d1692366889b74db9cca2a88b2b4da580d28ddb59ad9d7764d0836e6774dccef1ad8ef1ab0d6f5b776070bce992532665449b16874213b52d5a5022ddd35a7114fe88401aa0112715223ddb528111469329ba1a7ce8d28e9ae4d41cd11f2bb0ab312a44aba6bb6244c5251eaa0412323dd35b10a422cedc9b1bf24499afddd241a18f9f5178c0c0bf39bdce497df640e3cbf49d2eb2f6f8d93d5d6141d7152a40c2862c44a9898b32b4fd24d3a6500cc95990f3e2a9848a59b8cda70f084099231c28248bac9a9eba4820d9a2f5431eca49bfc614595592d690227dd2496b08210a6c548f728f6771c8e64a3d9df3d768d5de3f8f57b1c73f4f93d76fd1dbd0a704686988fad2b5070d23d462da9092307c61e243cbad23d02359fbf692fd2adc55e0fb5d9dfadb13496d65e7e6b9f7efaadbbfe7aa5c02566ac0b079c2851d2ade5686d4183da027527cbfd5510d67f6961c29cee9ccdfeee8ce6cbd697bbfcce5c7e67e1efbce3c9ebb98795340c792226c89d3132eea457cf30ab8a598e2e5de9ce4e6973aa4cc0d013270e9074e73070ceaeb47e90482296ee0cfc32e344099b1338c6d29d7f44b29838b2e20d912be9ce581a28f211d3fede2b0eff8aa2d95fbf4e6298b8e5b72806f92d76a148b718c54ed58caab11a4aaea45b8c2a77e8a0ea72248d178b748b5336a820eca485a1e9c66264baf170e3b2b38dd12c98960bdcb8eb2ff6fa0b064f1536645ca050916e1cf5f78c943366592bb2a2a41b4fa9e0ae490b7b2bbc6267baeff56a87597edf27afdfd787e5f70546f94b5e0c203132054d8f326d9ea46756f4100e9b54559d49817c44e44049b2a7cf595af3e48052e74bca04d0461a81176fc6ca7c4129e24bf7fdfd8a245dcabcd962a2cb2add17ab840d5410d6b7e5f3252d453ab4666fef95dff6e9d6eb95cabd23646885713a0b2b82c24d7a47f4f8cab184c698271f8d745b271fd412781584f52e07e023ebd7532841af7722bda2924eafb37095c4f47a0f2a09f5ad95ae245be52f151d5bf4aff9327c53650989afb2f43a899516d064cacf4e0b5b4019e9751d568a401896195c644c792a915eaf386978c476bca0ca916eff28549ed0a8c125354c2fb065878e8b1265cebed25e69ad8ea09c31d2ad82c022454f7a0ac8cfddd388262c61445ab07132e485b57e5e4b4508949f1151bca4a294f4e99511e676e87de1e2729df842c29b7e5be8a91335c1d615b21b526a8434ae79b9ea78bdc183c78ca90a1812b494c5c92b0ff0dbf4b2e34d174d27bdbc79d3ef0af4340b83dbd045461c2f245400ddd982a2688af3f4ebe48bd1459f67d64571f2808479be70d1f2a6df13260a64e6cbd2c9d34bf3344d8d754d9cbc1245fd3691e6bd4216588d950083b2e4ce10a40f5eb19207ac6e44197ec1e2e265c4916090262244c82c09eaae1151bdb272e3b351e5064ebad1afbb240a0382d05982258895180b5d00be7241658192f23ba7c435395e25739cb2d69c16b6caa6ca89df5899324d32d2cc674715272f331d7ac61d5aa64793456577c491cc5967518c71f6d8451d79e1ab5699189556d25bafd649aba5029a47aba712496425b50fcd63ec3aece43db21bbe72f9b4fef695cba704c3282aa272458122479cb068c3428895be402b09092d4a4874f1b8493c5c21c3f48b7155072b0d7b11644b8d386152b4d829f149ec12bb2c0ab420acad62983a6611fd4ddab2e87724f3ce5644e2a37aef1d45bff892505905a4cf6e6b62175923ed66e1d6732c831684058a62d08210bbc42e6b6db63eda1ce2f1eecabd17499a2d4ae204e970cd1951a4cd1d1f5f42306f98ec3db2468b8b201309313cc8a0484393f5e48588142a656c9117661e8b5ad4a216b58ed45a5b2d8a365b0de75bbb6ddfc49af65ad59d367fd2addf8a5428c91a49d64eb86e42024494404225a17efd7173b7519d52d2014218a00004f829023180113e88e0e1082d12400801e800805d915712aa6fbf97bc5f73d277cd4b2f6b355b6a418ca493a4db1c856b16a160418ce358dbed9a973bd1bfe6b69253bf55a8425c142e0a470307857bc2d1c045e1a2dc2c82b567c77e8bac93059a4ce87c50d528c1c3e9cb9734ef4c1c3de550a344d845cd8d54dce5001f616c9db0ede5c07afdc11d81af78038b35255214b3386481bcab6fa5cebec4993749dcf5acb4a6d1db9f3562bd06515f5cf4a8a2f5f391eea50404c9638708153e2fc8d2bb43ad57eba4759d7524ac3482ca8e9a2826987c14d94aabd813142a8cc86182c32cb55e02ebb59e611b0478f3e86d51d1e79f9c09c0a6042e21e1a3ea46ae4337c68eab2f8f63344e1fa28992d937996bbb5c182f416a412f3fd14951cca2287e4ea7fb1aecd2e7774e5c31072dc9981654619014c180a6e545958fa05710aca624941f52c0334f665652225fdd024bd5ab05af17347a35e0a4d5eb0b72581c511fbac5bf5ecfddded833c65be7ecf8c8dac7d971ce5aa31a93a4637247e2235114ed129446edbaf7326049b955e22e5b6a59e4a81b1b90a4d6258b3c1b10a456d19b73ce5e2ec15d763cc6aea37a8cd1a2f26bb08bd393358635b22048865f96c48ca280a43b767220b9e46524ea624e3a49da9c48d249779274d4919c2cf3a5ae25922449779d93a493eeeb2d2d91f692164545d2a222895a1d6a2feaa47592449744ab132d6949d145944445742c137d16a562834c0cb5a877912229a2e28db2a2152d1088922889965924f15af2ea4492148d509d6845cf603a4ba2a825454b9296b4a47591b4a425ad25492472c93a6974c1a0a4489a5a68494b5ad49262158a4ba4285a92b43fbd2f71b5c3d6656f6fcfaef9da4657b3beb48153a20512b0742f7dddfa9a52f5c317052dad61692dd4346589e285225d73c7c59c2f40ccd2a4bb7659fdae60437e57a0510a5f0c31717e38b284a51f5842e20b18267aaeaad28af6d5add94d42ff567d2d41d532c2c6c9448de0571a033760862df8b0d8091b5124451392264c888c69939aa9e1a4ab0ae8a4e248baed5308ce9c4013f30349939cdac78d999e34403257d26d7d5fb3345569da9364079c74dbaeaf7ac4deec08cb72a28329dd1648c20b2ef88f6f2bf6d586c560e9b70513f2db0a7dbf2d5690df76eaeb0552f1d49faf6ecbbe8a25762b90c40e462ffa460a8127caefa5178122ea5653ba6b5707df55f8b54587c4ef0a56c330f8ae6301701c5cbfeb198d7457b4176d93937d82ea1af3dbc248b795b2543fabe05b61d68b5600beadf555896536ecc5b11aa22d7bd18cc96f7b66d15e4445a7a7aae1ef1b6523dd57eac54bc5248aeee5f7c5426fd68b1bc42f315cbf2fd80d7b71ecc5b2316b7edfb319296e727a113f41a5f8fa8da358a41b4b5161df8ba2e85d7e632c15e9c6592fe22ddcf522167e29b9f11b83b548370ec36326c49c88e4373e7b518b5c4c303e97737c64cf94fbe3c7711c3dc4d21e3c22a8c6b137aef0f5a30fa67168bc3d283f9a638fd17a0935642bb6e7c70b638f118fb9d16b8951681cc72059587e3b9e587d493d50b550070b941c3bd2316948703039e2a64c858b294cb6a4ad0953d566145be8e999e2a3052b636317911663bf302055d26d7bbfb1b2147496bcd00a3362e08a0b352e8a98d182637421211042421f5e28c40b792fcb0b093989b678212e125e2f24e446428e24e4f8b7949bcae55c6e1b7d0ee973b95ccfcae75cccb9e71c855cceb1919397d3e075e75e03119adf1d5e039fe16bd0a0c1d13e3f5e83eb48bc86b4b0d7e0b8885187aff1f8bd54821840322fdf09383e8462444c743df150926ea3afa58901f5a40f0f1771d29ae66bb53bf5b51a08fa9099f0e126d86393d61c13397935f38784fc908b437c4afc9063ab9337b4ab28dae1c9a527ab892749d79168319e7492743ce4e49156fee8c871d5d61e1d6f64e45808f69dbc71cf9b10e4aae94dd334736e9a8e749384dcf410576ddecc993b4cd3643249d334cd2a416270b941e7c609338a8b982e5c2f6230715ded7892740ce4e4913fb89274792121c754274fc803532fb6706d95f1c207cc9752c7e746acf0d253420b0e0b2877d29c631f272fd7e3e4992fde5d74c73cc8149f5dd41961a41025829f73ce756857f8fa7ccb3747ce4e5211f96cad72ce657408ea33877ca57216ca24b2e728129f87f258be79cc4cf9765d21d9e77c7366ca4ee69c6590f623ce9639537b84e9ae676065b45cf1a9f1510524ddb6f7ab5cec80d17ac2c5f5044cbaed1b35c01fc02e5b6ad849b72dcb1985d41b19399e3a7946a6699aa6699aa6e978c7c9334f3479134c70ac83d41fb0bcf971f4f0e389243f3a99c3c4d6bb3b963a792e24242424e418c7c9136a5af343438e6f9cbca114b410f23051c237462a0dbe383ee7245662c00d1456635c4e7e0cd39c631b5a6489314f2a3dd904e349c751a8560918af4183e31aa41693d8d76a8e699cbc19d829458fe7c0c131d4c9e3e014f640203cd08d0702020202f225150f24e28180305006c24040bca818497ed02172a7c71d2824555ae05859930201017987da1ead1c2850cc78fa9564799ebeec7849c1c6c69696531e19e3383a8e71f24618270f688c8e2fcba82fef97e54dcbd2977c5ffe9435ca5b96b72cc734f932a82c2a4bb32ccb315dbe0c2acb12a8b442b02fcba0c0d043a3e9ec098d0fea8b1b1b5a5476a4251a2613429ed8d8499396f1f8b28707704b1a156559962590d703010101397e32b59cde34df74f2c5388ee3388ee3383a7671f2469cf398283c06076e71f2326671f2ca1fbf6183e315276f039798a8cf902143860c193264c8c0053654113c0b23718a93979d969034791040708ce2e4817084c8070505b97730c24ab52c28c843dca4f1839000f9a0a0201a4141661089a031080705f98dced68f2869beecd009fa0005cc902040acd80813e463ee88951050393f3a3ea1338347826f9a6f3a693a36810b61243b89f6d9d1289f5de7593ebb51f097e7b3e3a6a5245fbaa82b9d2c1d97387925663a794155531e45673cea8ea6a82361253145abc41e255128d4a2165583a38ed81d3861ba0c47dc78f2e347973d4bccb6a42858973e7396b4a002a27cceb8e614c9434288066da82147d76112276fc4bdb4938706ab663c1191df3e648ad72e6af70e4646aeb5549ad71af495a1f5a87dd7e10a5eaf6ffac6d01ad5da83f605798dea0b43eb528b00e73512a70f4a82f6fd610147d871e7f5d71d9699e9016827acd739fda4b59006b1a786c5f010c909460b41eb0c9a003cec8857629728243558017e414e2c9e0ce03b47494d99a0ca581998b7725788312f7ee7b27c96d17a0798a2a15e6bdfef0a2ba984f672f15b8be9a126d3654abd1fc2a6316a9c7abd47dfd28a9fdb02ecf518368a21602c6b339ab1f84d3a3dbd26a1a248f04d4e51bd76d2c783b4fa4d025f935dafdd37e9f59a14bef64d82bd0e7beda4980e728c3c7b5debbdae3989f05d7b827aedb5285d935af1bbf6d3b5acd735a06babbd26e4f3baf6551bbeae95bdae9d99e0dbd67bedb6a6d74ed6a089321437bedc4455a5bb02d3a45819f169e9a126ddb50b074f596eb8219b426548baeb591aa6aa3d2f864214e9b6757c366adca0726a12441fb11ae31bcb0285475ab71dee3bb5afef825d301b355a7001bd64ad49377ec2e126c80b2c376ec6d28da3b6d8dba293d6d9977f62d4f4b09282474d0b4c447e704109d3e54c474d01692263c70b59131551e9d6357e53c2aa40019974a55b838d4ee3939925a448efc99a333c3ba8f21b6271ea5529326448951b5cac0077d048f7785602539f376266ce8288a59becbdd65e3789450e5f9365af9d38bd2983a2a9cb58ba6b5326152f4aa668e9824395ee9aaf06f6ba26f6da4d1092e24d48f3260869e14df0cbe7e499b0ab28ea73f20948805fb49397803328282828282828c847e48382fcee397941419ebc08352fc2af9e9327221884e94b28c16f9e935782082a64ecb033274f09773cefaee21d081b2b6ec0ae8081532675bf6727cf7715f52010a9278104bf784e1e091c3870e0c0c1ef9d93c701ce2300017eed9c3c04a0bfe1079adfb0c1751b9cdce0d7ece46df8b1e3975cbc4904f825bf754eded2aea26487a5cf5b3967cf8e028ecfd92f9d9397a9be5e49c96fa37ca854ca18eb5339281144432400400083160020280c0c088562c1344e9328671d14801171a45258501b88246a142431648c3204104088212230003033336d00e05e7012b9e0890591e6b23bc81e3c17ecc70d4ec2a5d480a620b3038b1b4890499b6e7cea2063839978fab036e94a8895dceaa158068214b884575355c757f008f12c1177cf74710adcac0e9189e6bc4440eaa33b1e292b16df79a596f919880d2e0904503f1beca1e3c7ebdf082c9159ee3558642534b9ba98a38d8677ab13065ed6649b7068ecbc31a2cf9e188914fb58880ca62676df4316e9691dd9a8055fb3c49b52127215a5675dd9dd7c483ce5dd638d5052be6dd45d263b316a96213f7cba4adff1cfaaa5f26c18afb5936c5f1462079e7e2da5e9a536514abf7d2c0a460dc37a05046712bcae2cd8d5f302cc0afa04cac49c9da3e9204f4d43c05ec9a23df29c3916c67c247d890ab0f079d11aa9a1be956137154d10e4a6a529c37e9f820456fdb3bce566277ab92b998eaff747097a1c26c020e72c3529a2707a0905e21a22244ce0bff8f54a1140236a823bb6c54da42afb60353eb26ea04e0c11372fee1561c8bba6cf0d5dae178c3c456bad41ab3741a36a1d0b69774b61ffaf447b919e0e2ef2a4cd0d4f9a12baaf59f10426f8a8652bb695452787edf59271c0bf6768af43e99b0941768df095cf37460b63eb00bd08d1fd02995d8819f7ae52d05c72c80f48580e09b4db9a92f0c3ecaa1d00c38a549ecaaad28242586d5f77ebb3a18d7d8a55ffa2b1589601068a6eb5201b9ff45cd705f207f0e0776f580e0e0372ab5ae8669b6f40c6e660be7d845a20169b8b5a1dc6d7ba4ae4175a123b6da14aea156314339c560698cccefa8c8f0bc6a876ec8d80512cc71c36a02646791b056291514696e9208882068c9c8bd7e308e956e6409fef77ad3fbc9ff1fd7209d96343d50145417475fc1f00ec39b2ab82c0df27ea776c17315917f7099da89920f1e358958fd5c889ee0975b7fe3ebd74e03a91f2e05fb71b0f4d0142306f9dd5908ca6ae7b1a88f1945fa6348611ab10708fd52baaf7cffbb2e090e167ea08fd70e9e112863fc76eed89ef938118fe8c1406d12a0a533b1c9ec6f1ce74c1b3fadd87d7cdbff347210a2d754a8f6bbc0da91fd7a0c0d9e2b61e838acc8986f0e04c0a178fc440445ef4353f21079eb01ff35073b6d62a9bc6c72357af9d842a6a611ca6a806723a4a2bf0d576bb3c2bcb5ad3a9cf22583d5ac35be660093732db55da2b71712aba4e09323cd18aa6d094b60cb841d34b5f1302f82d4da8d2026332e4b24e19b95a85ea10413cf66853c9407ab70faadbb4b548799a7812c346c899d1e4bed818603004b5f6524352ee1a6374819cc02149733727d5ba10841570bfa0522e4d6ae2ed46127d62efc8556555d6336cd48738c26a28d95f561b81da7d648c9a7ea92f032755dcd0341df079a61e50d81443efa9decd04673706fb6ac3a5ac9f95955c12244cf8cabeb8b70332b9fdd2961c33e225b6e0dc0fac343e47e269d704e394aa093e1d0492ad7e9227cbcc28d4089a2797ad88eb30879559a586582881f3d9a26f424fda75ae8ef2e376db0072a219378a445e29a1ce1ff7a8f367144cab084eb3ca54069725cd2408278b3d2eb85aa91727daca7ba0b04fc6d8526067ea209825fa78b39bff2b511771afc46c343087e4e6d573c5ef5516312203cb6b0b46d7c4c75cb9f2878ce985454846989e21689b08d3411e1bc8cc603fcc5191a9225fe582c5ad8e917e746f2ade3594f0d49924842ac0a20a1e48aa6ecc2d67c6a2c27d1b74e4dac5ce182d3e744a2259da944c258d092eab24cce603588e1b66cd181bc17f3e4b16da145b1607fdafdae3f369d3c1cebddea877f039c65910bb546e1703aeb6624f2bd4050c849531ec2a25651026ad1f7a675a485fd19eac4d7278f47f23914fdbb471a06349c363d19dc482c5f3a34c9d637bd283d53d134f73e3cbffd2a385ab21555d310a0b3505fa6d2ba43c5812eb41f8d800d5fa4751f2ce10a318ddac92a5bcb5d2cc9e6a7ee4240fef047adf65c57782bef7d78aa5c0cb3c62714facddf944a1b6fae7cc3cd40d50a3b2602c1f9d52ca478b18ab64fdc6674ecce8f5da36c17af9a5472f5d2f0a7ca931c287a429a570d4a4649e88c76c89521c05e51a1cd9d1696a8d420408c4fd05671350aaf75b29585b4b208dad1db6cab15dc93daf3bef757eb75a005f9bea1edba9f86fccec0f3749bfed59cc2ce56d4e1d9e1e20ab218e69c073422ef3d2e63088c88a235aabf1a5b06cfacad4c2d170f400233c0c9de0dea3d840cfb639d628c6a137ce1f755cb0ea81acff5a7a806467e75700beb3105e32f1f0b9e1a746ba283e21b45b2f28f7f75eb0efe2f25ce320b5a0ce00346cce17252dd954f2dc87fc9ffde9dc49e7dbbe646f1838bcc21d91057b134de41620b6e128dc35cc27d7addad3c440d29db7078db4c08964e51c14cc19a24182862edde54549ec2d18bbb3212084524068c0e49538bd493ad22b6d4315e6dcf1e6c79313c73b33c3fd2f3e3ae506e0ddcca2caf03f916b9e29f9ae6f67fcb4d2be1dff5088654bf0ebc80dfcefdc1c52e5a3ed9502f03c94d57ccdaf208a9c6ad1bb31dee1eada38920c31162e9f63471bc3b864a76856c66e3bbee61d43c8dbd2641ce98b7202ccd560474b74f942637574e0adfa00c7f415528f18736c548d6ecda420a4c9f81a1bdc8a2c89babb0632355287eba316e2b01cb3162c6ef8c046f52d011a2e3e5d4331e95bfe64f9fc544e00f43ff7cb152186140bb2b08e38b340affc22cf1b1f6dc69b2b6517b07a23a29474d89ad8683bfe9ece26a59fac0adac0e0d0b81b7b634a912919d903211a3cf1224c3e7bd79b5cdefbb86bd005d3a8f46fbc9e54ee1b9514c388b5cc1a2a6afa03d4d06b656867fe24dbdc86df7f0d38c00e3669cf55f50bb02f9a31e188a933dfb30dc764fad47af51298340dda85291691b214bd8c094ba10510ac1ebf279ce6003a6658b4119a818e6ab4dae4ab3f2bd317c3e0b23d95c544446be5f0498ce3c595c3e443c3ccdecdf9ae884a9660c61d848cb6a8c92a0cbcb61ef36e2ea21b42978cc30aaac20a61ca02a6491c180e78de7e1d52f4923c0ace242ddb3959c90aeb3c588ef37ebb0d87a9f6c1c88667127285a0ec73f725e83b3acc7f35ae3055b588c3dd8dd322a24cb1a6e0b36891200914fd18ca51a50794af045413fc4baca4b6cffa04b38e010eeeb84623a22a8da9001ebe4226d96057892b5ab692196df438a32894ee523d664fa9fe018738bf52683628bc1abad6e9196b8a1b943da54a88b3e1b129d5d620d654f1c0471bd4a821874d77344a7b8c3dadbf0beb9f898fb83c03c196245a3a8e66b75b9764c5fa5395e3b32812499a6bd89887c5bf2388626b4032b472b98a5b76b6b36dd6107f681aba848672ec70cca026f7511b122c36a80eadf0ce28be14a6a6a5e3fef0d9f2ace74a49f63af3867b81b6b254b651555aa3ef43dd6c19ec84757d2a659f3be9e47f7d9a24b95fe0a7bb7b393b1b158eb8a9631b2a1c0d33223795a0b07967347bfb301053a9774f4298042363b1459ac7a5d98ed781e072f01cb951a2e42d37adfbfcdc02849e82b959c473c836cdec5e97e5f68f30300a5deeaaee2ebc8728754fcfadd1fd81274c8487ec3db88d6386cfc39b2ed6773da4182885fbf081be3af9f4ac4350307084f84a47d794391768408f8c81add8a8c1808ed2f3e4ccf60f51d44b4e5700efacb578d24b7ceeb9e1dc1c0c9a05e4ae22d4f8079a13b97bb8aa9a654e9ec09660ac05d9ad0e8790f5dbd5a2ae3e049fdc299bac7ee0c9f715cb2b22bc0314ac7197a908b5215722166e263733df7a5232c5d70ba847ca9f0a6d138fbe7a4f91600a09793752ac87ce2776a5973f219b8d5a83ac0b1c17fcce5c2af61993ac6c9c6739365d1c31605dec6bf0b78fa073d41407fb654eee85109b6e36ec9a8589dd1e1e776af3108ca39d20295f6234bec7e9340902e3c8014916d3771a1a9cd88029950594890345f544e600b803794d6372e3e0f07fba0de8f8268a5d4dc06bdf4f521f826bf85579029a6cde67a265bb129923a3d6c0ee28949019be01dbd2732c3ce0d2df9a64cdaac18983b84b9c20d3509cfd8d11e8033ab0b369f2fb893e11022bb02812d47bffb0891ca94e42782ee41aa76409523ba946cf852902d29c9fd287a060b09f5d8ee4612015c2d9dc7d0f7d0fc18ff9487568700f858f2afe3446d3c7d3253e496c27131e550f5ab05682b6889f7937157d1d49f717de21910c9cdec171f665155c0da40e584da2f2d64f2aaadb13d9add54ee7d0a725ab0d71260f2c255ab19e20b84cb15196626a28a15c8e0287847f39de8f19d37fa40571c0ccd652b15f72603b5856a0af349db98f5fdd3d56167d6b2e3cdf785338288ed55244fef4d947a5ff91b49492a31ed409a9e597d1ac2feccf14eef8f55ffb6f328e76f3b96a48d36b0e6167940845134bf107609c99a44c4161d5212e43d4e220055be8dfced3a14d0ee29acb5e57679235f9fa4ebd4ad1a2cca1723d2b68cbc39d30ae56b8f2650744514ec99c0fed43d4972775f81a0cf8e74cba25d63eea65df11615d9a7c2747daf5b0da0efdae11886c8b2a547314374e2e5e8fff2752687c1b9dcf994dbb58693c3ccfdd2e6abc7ab4fb122606628b4d73b898639786ee2f3b924b96291f646398074ef697e9b94830e85a22e75bffaddf4e21152f08cfd93ee6283a812c9b0c9d8fb65c4414863ca8e834ca78440f4b81ef3f3a02d68ce98d04aeea5c1541b584bb69994d27a748bc6f37909c5cbe7c2418a94bf6d80bb4728eec1bcba2bc60911f7cfa15dffa3457236747bebf0803f23cfbf42a7f97d6a9eed323327d221bb8dd9a445d765bf6df6e1b4406bef3294788ac5aab8a8add4ee19c79a576d7701bce3a3e71f88a5c648738c7e84819b38d7da5127f859c9038529c3b234fe957050e685820a5edaae24c4322073a8356d97a1eeb3787e786b11a066837c428968ca61002c7f34771db52b21d1e45063841a60461321d06bc55de204da2061ead99e46edd8638c906e7956a77cd273bd2af15d2d633973a12ad02b16b80a2ae24f5d2be8c7438be3c750143f3b45963ec6364569556d4521b8848fe94fed3e2787cb9e0c07041e64f91ea4b33123d0b6120d9badef318902da927f9600973fce75b9e963e067ce369e7d72ec91edb661d279387d3b82e1326d8d82ae6f7dd6387f5c6148662637b7c34acfd9da2f41fcb1b4beee372795283bf1a31bdfbdbb3007726df54e6ea3b4b998ee0b58fc96e5a824e19d77b600a82cec53bd1885c8fd62e492360e2c24050049373a4033bd41c18d1ee0676da3630428f7d2036d099ce8287ef7c5d8d26aa4bcb79fccce6895f450232194b8ea87a3d8c84e985a4c8ecd21041e5e48f3ffd23f1a8e1ca94f9d5f15e3c2d9c91e4f1d0a9963757e3e5571d258acc789051e6aeb49363c5302f2e59e5de546f915f19b0a891f15e9c4bdd20a268f4a1caa155d07c2a338106f189d9fef9f03047141ed62a0ab0198b70e3a6d57351b8cc906c9f2840f0f5c5905ac5ec10658328537fc97813c3402e756b6573c28d376b6e90ef322b824609145743baeed8283fa707e5a6093bb1e87230e628bebc4e8231850c3ccf93c573c8a89bbb393c096236ef5224dd312cd25baa6e211ad73a364539a83034d0a8079518500e488111c2154495cfcda3cc4a52e397f16e3bac8f76811754e6300faff0baca2eb25cc1cceed0eb2b03538699c9ee2ad960cff32095240b979fab1721b3fd93a6daa9c0ecff5f3809c6a6a367b8ea101ddebc42bbec8765a54f8c1b654be69495d2ab834eb27d88df136f1680511efe98bfb70c59405669921572c7a38cc5bc6d26f82677ab383ed4b2d4a62cb3eabe07bd4c6c1878a5b65570741036e8561df1de01e46b5ea6154fa3687617ac45ef718da9d99c0a1330735528b969a9aeb2fa060a2c3ea54e72d9ee4599725de2445a84ccd1882fc56e644bfc0d8716818af8ecc34a22688c5c82537ab48b15df4b51f572f93708e40ab10cb117adf6e6aafe03c5d4af8f77b307cf32b511e883bd951b52fa0c038edc64fadd11c7567a037f8558b0acb21d7d30614f19b725f3d1f2136282bd2cbc26ac4f864e0f0394b0d1c62bd101e26a5892c0c73385ad0eb1899a9dc92f2d0271ee2705ad3954439e06904451a21d0f087c24505c623e48a3ab3d51b9ad9ea314345074077aaf429735c85e4214c5b210365f2548f0029a93060833679a18f4b6e008bba4a67aa4eb97cc17a654c1b6c8f92299333ecbed937ce9260a8a58e00c93f58308d14858d90bb2c9600bd0c01f54a3ec5f325bd13fde4601780a9deb7919ff8467a03d638b628604a9d3147039fe23261aebb61fdb058376015aca958b1ca614e17f2f2332c29c9ed72b1854bc25e492810992af315190fdebd62582f46bcc5f4e3a0c9b32acfde5f00c948d129814e95f890041545f44fe3d30c663069c39fcaa0ad1644b131b6a06ed6d7f2676c68dfb48592a4115e4c7bb9fa9bb7a0a3400aeb3a08634c3514f197c52a1966d1fa042ad81fb7d23a90f44ea090b10291c27d30b1cc2039b0d1bc2e3c368e79dca78fc822264ce5feb5084bd6104cc912d65fb24e7723c34b391b667602c483a17e176d515a421197eef329195c188a4f99a6f8830bdc5db363df33cc7b35b1d79fe30676d1e1834e12ab6f2731e755323539f6d067e5bfc90e3ec0d64dfe2685dae67017d850df84216a274e1a760bb7545cf2663fa92b4764b7078b8a7063a421ae0df5fdb24a889b234cfdf21b9c48cf2eb0d84c34478f3f13cb60d639ea799237cd167ef9304fe2be5916be7a81445c144372a747aa58e3ea2448819c6b206abea5d89b50ed791379b88ddedf310125a68db243d7e61db64267889280fbbfa660285f4076e4ba981db8ab272f961b39ff5acd89e4c7cf2d81a336d9d59c1a7022542c5e2a65412f28c1d2c37e9c93f656cb4f5f4d84f473454622990b0f35f2d23363ff3df58aebe1d3f221be959e925b022363f9e6045156bc23c770606ca59749043911694f84ec859ed288406c21aaa323a4333b3e0c0827407d0cc4f7be107f89a8d6d66df218f337332870aa1bc2a27932df418dab45ae8efc111ce3ca142bfbf37e3930fba9d14253011ea9b8442442a103b9d136bd41c461000ad027c7f1a3c380d79e88923ebcc475b3b4912dd899faa38c1040b119d8441cf5bd317029d5fa237c3de5f0ef90360df9abc5add428e55987378a8757fdc773990686534a97cabcd4202e5098820614053e25cb37b6b44048469c80ab484f411eeaf85e48c0d45516b868537341957495f038ccb6f6eed706d290989be160a9da9d630ea28d59f0edcd767c782a41ffb4bbfa1ee68193224c83be6f7bac18791fb7b106d86f07cbebab2362e1af9474238789ea87aa7e1f0242f1bc87c1836f5dad69bcbdacc6856cb91573ff94039729c53ad0682ad9c5ca95341b563e572a95d90b9650a21e82579db8be739b6256e51820715fdd622f39bb0d132823b97d7e274f8f3adb19cf19dd0af47d97d9256095493e02037a4b9b24e034e838eb7f9990053e0af128cd3343962f622e21f3b80b20646d1744f3d96117f3d9975744f89c57eb33f9c2d73577e5a958fbe140bb7b08a8d1c24c91ea1850ab960647a678239d7b3bc5c7ca937305739a9ee928cfabbe8842e0c0da94285126270dd44a64078e44ae8fc60898f84ec737339eb2481721807485de7684ed446899e72a1edf442dadf69c993bc581d99c83cd00f6e7b78c3b819e2540e20d38767585dd973aca4a7e85dc600b2a413edc08bdb35cd76bd80c7183075615681138bc5915e7bb488c0d40fb3a371c6bf8be6c8a7dab44bec9b6a48ad72bdaafa8eb5aafa46f1fa3b20fda4e64f43d68d38a0a8345e4bb52ebe94ebba088e191b446101bc4e4fda50ac318dda484a42acf1a5e8b7aed1b69d798095fe9fc5b2ddab17bd46c0e08471636c214b9c0c8c3f549dde64e558be39403819835ded1b160241b8d4c5850e0b859b015783d3540717c11686202e02c8f76bd450231c90da689dea31a119eb73fab8e95900eb129c0285eb2fd980d3234c9a184046d394fac79075505a36cdf2827ed17cf0482e190a561a8132cad2cc42e2d602e16313819a0d9b0ac770459d46e8a34476349f67ac9a031466e4004237900c6dce89027acd90fcef0e2923df18145fa96772add9cb0b239debca1338eba652c00ec49092398c01097cc12168411bb22a619344293fdd914b9b4455ef28eedd5f4be14b5fe815ab707597a671be0c621dd3c4c6d2f7b395b184e7b8f0c837c4ba71489952a782ca639bf2964181e999e157bf3095d67b9410fef9c8c37873f0a55c35b125491ab7d2d9543471f90e75af32f0fd6e849df1d1a1fd31aeb63c0a20b09d1ada5d3ff1f42c450995a9d19d7426264c7181a3e733a00412d1e91015fca830f2f86e9c4971628c88445fbc03effbdff6fd282e47d6bc72d43a0aebfa8bfcae7f96a9a84eb53fb8c597f749f083938554d698b55cc58c15fb944be04704339127ef8b39bd44fe5e772f7955f61c5ac8871d3eb39e291456cfd10ff5b2393afac08c4385104db8934b2cb6f42fc1ed236c81024935b1d3bad4ecae2ee58c9e865a8aa12a7e4998f0adf10283003e93f9244e299e7e53ce7f75b98056b40e5df5e5d202ca14f9cdf893a6cf701c538af252914940fc7e92c43a356127c596579ef148df66c052db856264b3191ef56253b679c4ed300803772af3dba973f9658e484bb3a922c9b9720490948e8cddc266fdff31b1cc7416c1fdfbc3fee166a17e727faf59ed3a3f1d500e7741820d1bca7a836aa0797f868eb52bdcd4bb5cffe5957ef03cffacede6e5b7b655dd9d7fc5ee78d1f3564ddb9e525cd8b9522151009ca746d457813dc9b19947587b71b0c54d26318c1a7ee697c0a1fe26df8ed677e9f303ee188c5bb7a8add46757b3147e91012a9ad91be2ea0f677010dacf87358dc2fdc20f1ebf513829532f9b34c48e5fd60aa77ba42ad4716c95295a38a3dde460ea025c7d5ff95cde0ce99d5362255d5a261a20b68eee34b37d797d1b087885925dde197975c6ed579334a3beb8b553489bc8a2b0aca5ff1f9b8e4a00a4d3cc34196c6c50b54787aa8dcd1cd7dda3c6b85d93a15a84a4b187e8247343c86fe22b33dbb9273cef9b84d6488bcf7eb969b4cdcfde76f9555e64f0c03510fc4194e24c066e36c934643f34143402d982fe28035e9c48cf6d0a88f36f30c3f636560f968a2206f616760b261b361579f25d1eb31908928e3546684d8fa029676f914e3f92cfd2589a4c4904a0d4757af569ad34d5522c515eb912bd6ab2a449a5d1b487bab5f64298cfc3109ab49c8de5748135f791e1db45c29c48e2117501de90cf95eca5ac5116a4858989aab31df1f592cbc35c76fc9e6b5acac8839097be792bad8f1c23aed3ebb2736b80a499c361e4cc384f446c70e1c5451a5503c44bb437d1a42771532cecaf61533d80f0984321c4ec072a2f825231d0832d80ddd8ee2ce7cb47d786fbf519f7a9d1ca98e04b713c8c35b48cc519677601e2329a05ef463df07e71f5c981be000fff281549b437067e8b3c703d05eb1c69010a78ed6e020cb6073f6839e0450c47825f6747bc0f62aff7a2783c3a464293bb80442fd68faa249f477b0b7ecdff87b9c5129253d176f44b0623cb1e7c683455ebf9503388abf2e90cba3005b6b9a3443848a2c05f78ae806f2e0dc33e7bc0e1764606fc55cd1b16dd226283fa7423ccaa28da01539b1c550e8808e66a507372d31e5f19c73520d1c45f9de0077ffb30e51a1332978c85b8a16fb1e5562b12dd73eb02ed42bd82220faf5221cb1bf1dec184fedd0937e1e7bce975934923adc8d852ff2737d2fd3fd2c94047b75e8c5e9987c82e9e92972fb66857badceb77aa82fa17faaa5fd5e1edc0b5c682083f170a7ba2881545a257c85e7c4c870399ce5c30a0abd1077ab950a7bb5d438f15858e8a76fdf3d1c3cef43110e304b6514a095751d3e916f01fefbdc82a4d1ac2be01166a2807ec972e970d97a44543c5281058b16005cf7ff3d957e906867a2ec40fa5cddcc941cc005aad94dfab60a9260d735f76bfdb9d74a8b56ca92b6628d66d6b6b9019d7e20557cd0906ee20ab6bff2984efe812d0a3c83c6d60f472700a755da523ea6f168f1ad43c401522080a2c510c4e17d11e08461ca6244d45119301263c515427b4032a07d5f861275a43df9838bbb13d7a3dc7b9dbc7def42178630c9e39a8a39177af2877b59d14d46744b7a0dcb9885b67983b363512fc72d42e27023360dde45e4c40ed51ef4774a3f452dcf8e93f9c51e9220eaaff84955822ea33f2fffa096049cfe3ec6bdc8ef9f8915c20b7cca6a8cbbe6d0bf4e3644137641ccff79ca8bc4916c3c604f9fe5a333eeeca9601bd70bd772f24c9786cf5ee6f2c8a14991669d2953c5a4ba3d4629b5d0fc750032ffa3ce2c02c40351b37a562eb578a8eb86d34bd8c89b955797541337826bcce7c62b9b55bc2bb786735485f8cf1bbd1db14071d60cefcf94a41dc877be52313b7186aaee95a9168e7b02303febde1629653321a157d1e81f02a91dd7ac9fb02a44d281031750f0ad76b80b37663a217f20069f717c9eee81fcb7942fdf72629898687ffd505c1b32829856476651371b1621fcfafe0426cf4e128927d1cdc0303e1387c6c1655b7635f1821f4bb529042d3f270fd9150a9054906d111e861a2c77aac0839a82b484311dd57667762a7e94b2842fd41460e4188f1ba6089fbd1142ecefb32568fab8dec4d900082f935ec14c0c692b4f7b4e1697abf3f83b94f9aa016bb240c45f47584a1ebc97f74521dc8a2de3911594549cc49bb4b9f7bd07cd39352b0e9dcc903ad1f3964c662a58e1ddc7020c5624203bd149e75ac0c69871d33c656a5fb0a5d87b50877e9d83c92258ff5f86ce817d475b4eeae4c6c704abc86ecee604135ac58056a156d2f56a49a1750fbf0002ca45195aec60052125347797f0e120aedca2aacd9b340ad44512a899c9c48c617376fb7c9709c5c0c5b906d3aec23d09f0f36f0cdfe81112008f3180855b9e8f3872b948d8fd31e28d46dbd53fcd933145c078963a2585c86276317799fd0c195902032ddf3e838be856597c80857893b6b8c90c3889c50abae2b253b97712d54e0e0e625babd5b7a9241b598155f616ccc6e4f860f74dd3916852511d68f48eccb30ee4d1456af9e9727aba03d221a2739b6f2a1d5e8401dfb5b624ef734c68daf518a74d0b692918ad24ccacde010b30559d718e4c313f97363512b71947afe2789338b38291d258c63775369105ab8238a291150fbfaab5829c143e2cb486e662010aa84e096178a36cf2780efe14033de93820c11ac9f2940775e7eaa0170e855059dc298f9fcead97488f38dc3f86f4417a24817ebca9efbb4ef652cfaaee661a33d97239e53337d2a2c2224fbcca108101482f4abbefb8ee3a63ac809d76d7548b83e78a09af7afcd23062d52c1ba10562fd2903057cb3263327f30506679c9b4a80dff1602f3fc8198b49e7365e1b07ca8928b77d64ebf67abd37ffde805481498d79b0a41752767a727c0e74a3825e48a7db867632b7dc77f23d0de4d6b4fa44df8ad323db4966682b50f8c6ecf01a8aaa13ad57ac6ed65101ca0508d57c805562caf0afd9ef0810f690a4b0763876490400a3476024d266b7abc7de1aca6f48423f8e2af00f101f60a9ef6344e098955d3afdc7848514d634f16202ec6761655748e0f0f8dbc6a3a3ce0ade9a2e0d79801c7123bae8154a55c1bc51cd564b6eaf73e25276be6e78ee078fbd64a2b286bd5d397b2ad9244adb8e2a86f6e3a2248fd3c6ae29c5f72e6da52f4461fd551721bea34db96723e500dbcb49bdaff97e1e66f7aa35b414b0e85cca706dce73194a2df06c0f170d9dad68fab19e9121c211e480a79957b77cb91f2f467c4ea879c2a60e0e357c929e47ff624177860cb931ba5553f2a3ad49a037feada9811a9fdec28e14db4f79e5f76e082518020410a507ce86ee473c99f63b1dcebdcbe5d3c7d4ea88132e31722db1f92497206966d0b6732368fa24788a38d1657a6988d1e11a6f6b110deb4b8091e2317b4d0649838240c32b251c55ebb678c648f914c77598741a4c3197e3b21c67280b6285463fdc180d34c96a601b160cfcb8d9a08715a120f23c3a3cb013f44574efed896a799f11c8b1895916a2b092b9668319998f8d7e2122db14df922813b5eaf583e20cab019a030bf54beae4fe0c414fc3545dcd793ec2c76b3281346d506667b16f953f10b1002e3b567cf0a0731fd1366c2992c29002e83629347e936159e528e698c5c474380d36e2889950253cbba09b43518b618b218fcbb72e14344e13f93f99c18de0e68cadb67c3a78ec978bce03ccc9e4d7fb7cb6f3529b3b2524f8ae64e05c00615ba3e5d5a318ab68a0c09145a11ee2e63c00998961134db63fe826cd79e1835f69dd0e9ea15df04aceae7da8e09cf42ec6cf6c373ed1419e3fe52cc2df0ade752ba2731818b84d20c872b7b58cb5d21b517b9a0a09588c2f3db05314c8915eb8c0d4b1f2edf2237fe096f2d2d7d81211c5f9d35cc51d0b92e18f0eb40e8572ca790b4369bbaba60af7fda2cdb248587038e45380af2fe951acf162655cbcb64875c7bc3d59ca6851090c63492d19d51548b43a811d523c4e4079a22af44bf1e994b295a065401cbe5fae7bdad7f50128d070ab7fdceaac2e32e2d0583ef79133f2ab43f4a36acea4d19310ec1102e691ebb467bb0e77a9a8c1d22e6a728e7679da73d5805502f2d633d243344c9a977ee232bf54fd2db51f1e873658311990710f3c0a72b42f26413655f9043034dcf90148ecebd0448f4001d89d9ab2716e5623a4aa1b47f3150c506a57d94b772d2e16a64c975402c0803f07a09b23685a1ad8f6c31b61ec4ab250ab3b79cbbcca1ef32238b468a4c21f040e8ac4f3d68a91707febd948dde3f644877e51ca1fa644939032b4ca851af2ecc8270459ecff27990236e5e9793872f3b085e88bcb3d62c76b40814415e857d550b0298f42000e7c1a5fa3e2564908238774949eeb621b8e34be967801cd57869bea1c421ffb986d0f190f7be823e81b02426c9aa0fb2dbb4a63aa94cc8fff4f733cecc390738d473049ee56bceb1fd3987042bea9f34893f981bb57e4e73172b970a91b3daf6eaa750eb2b24b5aeea558b78eddfe811af48ebab244617cafbdd0a3edaa2c792ad97182096f1dd53395823c4af2614aad54a7c7c8f5524ea161711548aa5fb25d6934d97f34a80d4725b8720394249c5f27a3b9e5a2c939c16e63e0a3d49dce3f90caff1585bf73071106924f466fc7ab0b53f32902036f878b3bac3d1c03ca408a30e4f0abda4ac96e9e7fe416676d51d4383933943a1f552433accbd450002fad56a0f720872e6e342bf8d84141c58dd433f17eef5fc889cf1b98f48aa8120cd8220f48408a73e4cc5d6a32f6792783b432b17259531e54185104328638b594c825be25c9403cfa6acd563624363ea7223944896444f2946ded33f30617e452fa0ca0a0b9e82bc809c63bc802d095ec00af32e207bbaef1d6bd6fec9621f70973137265fa79a46b56f9ffd54540d0d6b19994f844f002a8931f3fb323c94e5dcc74e505c60fa8fc0ea6ae159a69f8609734aa705d7455e998771aa2152cc6b118c821f7dae0deab221f7bfa0cb136504effd276cbc4aff78a2878eef2dce6ef0d2fb9edf88232e1022b26a24bf5a4835e1cad417631b4b10169ce228663827e2241adecd6e4251f25675109df03f651bd6ba4671adf5771d0c5e51d1026d88f6d02b360865a0276a531758fe66b83a4b3540a89b7e0c850c6e07662c6294d1274b49ca81585ffc1a5877bbe248cc9d367fb2176cd1b3538db62bf97d037068df72f788a9bacdef931934bdd60cbb826d05e9fe844722f4d506c77d654b1c1c5c57fc7babf092c570e335b6810e75280b49ba1f473fbe054deec7e9a80c76b7fc5f5fb460c9a5f8109f9cceb5be6772e0fd5ec95e61fb186e05a5b337c941be5526de21d7f2cf5017c5eeedb563508f522c95479284c236ee3f7b16d06455442f66b190bc44b7b40fe733770cd9aa2fd46def2a04bd6643c7c1d9119e552203339a68ac42872d73b198d120c749d791a86de1fe7b8d19c2421b6f217afbb233eae849a669d994d0197d3dc5ec7fa1d699ba91ce9cdd995669d0c9ae84d43f7635520d1f7b57394fc9289e0575336be01bf7430ced0919dbc32f29c064b28d7eb1b265e3423a9c8f3071212ffe2b17d7aada9ddd6c47c82ce41accdc4981d0a8829f531a91ec8f4c57f8bc2d79f1018e2a89b4054df4577e2d2794374e78833ebd5690efd2a75ddc0d664dbebfb1ade0ca4fdb9a31eebe3cf8277b289bc486d82d1b0468ebeefd8e584d88a14cda0ca286683d82d18ec94f5739eebfca9484f3bce5d3676d589dafbce5d7fc14026e1950f1892c2a475b4ad5a9307e61517139cc244f4b8f3c2e95954ab516e18c71dfa4457a60833f4913add2c32446e50a40641610947f229996888c80eb2e5ed665b8eee2995bb9eb1c75a312937d6c8875a1b3d347e696d29bf9853a2448b25a27ae90cd13180093fa16be6b597359a7478d648ba731388391af66c2c79508ece27dfb509edc48305e8b75ae054458c00a20bde5335aec71093d39295f6377751b3d961bce7ca0afeaba6252bdabe2b897ebb11802fcd7182d67322cfbbf532f6630c68fa63ab47dfd8d55b6c10b7f123abf38530f2a467a3ceb24e2bfe631e6a366614d098a7c39e96589acad9491dc97ac6b8eca969a68214ae9713dd9b243c07b1c55b3766d6ce40b983f91bb888c126e326c982002d65b5ba40b97c6f7c123a659a37bb4bc3a6a137ae768265f4f635de6c52b64877a744e96ac88f859ee50421f60d5e424c06a261c0ac283aab2b4483f9275dcaa778fdab4bcbc9a952b61a35eeba18599000ac2dc72206aa2ced4a34925f905a362ad6f8739e51ce962301792bea8be9e2afa6441fe6788ed4f1b4ee5edbb78cc32d01b867f02e09a016d84883a14711b983546767adfaf650c5631b074eeb0116a86215404e0762a73af23ff9dad99269d8084f333e49de8728efbde459e1efa08930e2c591a8ace4d27d897171c12d3b5afea3a1c27c8cea9b559a9e4c332016d7f6cbec53ecf357c0f1145ac17d12107d0f496681291b8ce9b1bdd39f5d4225c5e0931fe29bc91bcb35c12b0d275bce510bac9a66a11c63d05eb628d677b21bc5d2818fe9e805dbcce71833cd12a71894e7abfc3aefbeabd2ab802f5dfe7569f0faac4e01931869d3ca97ac2b6f353d88323225155c0f8fe53a54868d650b28a526f17b71f37a5d5ba62d029eb34190c9e117f9a8c2ee318a1bbf860c4f9cbd9c4001594084a03e8d165edcdb6fa3ca7171f84acfd9b112c2c8c211951a4f0b219f9ed1806dbf9a4fbce030f001859ee7f7060482063f329a387180a462058314233ed76c3c303e35f6ab2fc14999c1d5849cc145029cd63af22619c7d9c724d3b7c6d01b473a78cabc1804cc5600338210da2bcddd99f150f1cc70174bb8e1ce750401252c3d769d87878dbae127d2a7afa2ea3ee0bd20940ee30060a509c65ad5768ca9d5f05c14f03c05376a20a768a8b9936218778aacc0229037ed3781d638105b286b5d199230f2fdd97f5b5de60b039c27daf6c5f83caff7b978eda8462d0d00fa0a8239f1483999242c1cd48f7b3b0647598de4e22885e86ea69fdb83e6bd20127c3900e228d9b4ca63c827fa398b49a7423b4f6782fcbd8a905ffa7cea9a55dc4d014ef2c47dd66a3f4c9eb4b4d090525676108a76d7eb9f1b9cf2f29bdfb25a8ccbc36a2c9e42a32cc5530d738712dfe7bca75ee7cd521b50844d0c40188680537b656664ea66ebe9b62268df44d8eb028f47575e3845fb9428a3c14dcc740a20fa52ec93aa295f17064017e4d24eb1c0126f581a2d4b26eb1b13b9fb54ba846be520f41358d22a1e13e4d753484d9197723a980e0934449b08ce0169704fcf66d63d978a204ddb5950a4b7a9f71a7656768094831cb7cefdc84886bec595de53f6ffd00287b92b6ef32a945c768b8c6fc05f9bf000ba2aab905ccf2a266c1881af200a3dffc1dba5bd9501a493c0b23e0c27e07a2cf836831484891fd9d1ffe9dd1033c87021e068d940a4e947ec3862f24198f99ba94e9bfe7f32d9eea4d1019191a03d38d45ea852c72065079bc4f79d9455afb2dc8cef23c97d77a0a2649f7f5702a0efe4952d5d49ee00b9de9701be653fd7925b5b48d2a9655faa7ee29cad74f6cd89e71191a018dcd7e0b1a5f40be513597a3a4fe1144ed989f189da844f0d922ac16955c8ce15ae561d82b53c188a454acc87df42b52c81684d312d5d42c420f1bc8f335958f97fd0d475909feb392923f614567c92606ad6dada67aa075f18d5305ab50c3959da5b94cb0467f35c192d61234e5c2e3cc0f58d7b42fd93d4c8b6d83d25ca9b69c3a9a569554434b50b69c2a9e724d51e9d76bb3049402ea6efa5306e509a5a0622fd6bf625c1a725c737258d8fc760d7066021214a5d3e43313f8ce5a688907c6131117134543d015720e903a6d64a62b26c9c69c09bd4c11131cf08756317131f2f5be79a6f066f17ac0024a017d9d7e5b0eeb7a44d2f008550559ff008b737d0d3e6121a7bd00a344a3521add85d77827bfc663b24500b1a20a68b557b07c5851d4a6db41852b8acc5c406d1c4bae7ab182c861c40308f7cd1c9c4890a3d1878da38eed21b365800cbc64c605f1bfeb3b16f21e3ab2ec1152ecc60f5cfc30f100e3d0f0e2d1d413109b2e80badf2308db126a98a1f89eed518011a892c01d01f985d8b3351ee12b256e139118272cec12a178f47c449954b53da3eaf5ab49db7f091d8306330ee405743f65885ecf2633ead8f108cc6e114a1f56af264fc43b9fed429a134cec58f62353607656e9ccd90d6109e2145bed8f2e42f051dc490e4db76bb361b7dae77d30cb46d408a82215246d5a3a56c67e81405dca4fd62bb5efb5d5322ee3fb626e2fa6101a5510647f35ea13c9b76992b1696c6525791f707e38e8d7a95dc98c5e1901b84145f3873f241f4c8b6d6f694e44fa0ee22f78a328d40c11678d4f437d0ea660e374d114ba34449130ce10257f70664019b9120c874063502d9d2e37bbea51cb41b8f2aa1e6c5715e2abb258c153a05673ee55f347729a8670e11297058ac4d18e4a281f6330a34a3be7224a076f1125313e7be1ff0309549ad206bb257a837d20d442ca551f68fd9ea171d54cdc2aae10ab6922331e40d0541013d7ea150802a4b463b2d3f13db93cd9499733888dee9c608820052fadf5350f84104f4ad944a8f5c70c82a0996e2e512b08153985265e85ec1c7da85727f6613e1987ed1107e8c1ac215ab939a1de5e1fbb540c58dda6bb4fd94d7cc7052df13d70766e5d718a92fe08c3d8c5f9fcf8b847e4891e9446fc7a7798661962cbdb410529203dc2a5363e660434e1646a7a921da3fc9c603e7775f17b10b49fda7f40c63f2c3a446c3be61f9ef56630499efc1b5d4c10c600b570d6695e0d4949df02f03d944c6e48c7f3ccea5f68ec595840dd058e0eacd17a33efa522188817d818d788aee7df8d66a8026c16c9a241ebbd4a0d21359c9352625d78684959942c0d5a9cd06e14b76b59e6a1e7b59eda9bd2a95bf028ac9419231c95e6f375c33c7ee3374943312365347693660e0634c6210e4e74c50889956a1e959b706c0b71c74187fd1cbd278b76e3401bdc4db066985a93b593aa0ea67801b1e2200262454cdd00f3565cce748c6cf26ffec38a86e42823498dc7fe5b8062d0760f33a52106b8141e7e7f222e84b9ef6990e4ea801bef27843771e08c10af53988f58b2e66876e5305dcfe80eb71096889108d889ee6f836d0137fa3c4cfbb1baa0338ef018111b30dde30333409282e896bde5d1cc3c0579b8354192742faf9674daf33eec6336fc803164d39fff4b61ea506f09a6dccf0edbabde66785f9c079c1080a9b5faaad7c0f0e549b2ca18befa115180daea7fc3d7f047fe35129cba26f3f239e292db05586559711dc08df709aeed1a4cc402dabbb3eb20320bcdb63d1c0773d8d86a561c716eb9ec5f2c6b2a68d2e658d9971df2223e2ee3772f5774a22112ae21ef20c2dec43286e5d5f0b9f6a59243d95eb059ee07e37575c2f56c8f51e38e3cfd5d6c2ec284e454cbc42bcf815fcce008fdb190fea7d5d73e8035dfeb1b9d02ce70fc89a2ac1a3e51d8036acead986f120ac988bd8941f80a141f9eec09a4259476bfb537fbd39d8e4dface2e86a3a096474fa8842754eaa26b664f11dca42784dce5d40f38fb507ae9ef220fc4c28001b3551161e05ebd917d6dc3c2d48deb1e3cbaf3252a81eb0b3dbee42084767ca5fc94f17affd9fac71e915a40ac700b818ad132b433f4cd045dde00849a94560bb24cb4ed81e4c415a56bae3f484ff174f2d9ce96a50dddbf259edb52aab4817b6dfbaa1ae2723188ee527f50f6af00a65f3a2dcd9a83f9a5214f8949427905444d154e1bedf43c83f50365a9d2e91713e800d02e9688f765a01d25e11f8f576d04a03bef43a518fefd11bdef168be7ca73f7a655478636e97968a525ce96ae88c34f85f6e65eeb1d895628913a2b1413b0ac2e2ec608c9e6fb325c7b5bb1b8397689fe13ce708ea5c2474bc5ab988d123cbb3e7cfc78ec0d2f8591c7a38bba5ac3712498824b12dc70cf6c27df382f26a7620fea0be5db382757a297aa02caa543a58bedd01e1fb71f872489af6a2233d617615f467e3e64f11fd61ced07482f7960efec6d1c32fb4b6887874972b8bae314783aaf5631b19df60adccaabf13cf7c8922c0eaabd184691be577af3a8af5cda6a8b034dfcb09cf2b93a7c02177dc67fdcf391fbf51125ecb4b753e67c36bb3a336cf79ed84abaa3c838992ab77bdc4e5fcf521a64b078ccb1c075c109a210fd43a1512040756bba8ff5da84518defc9192f109f8514cfe0aeadcc0181c1ef28c672e74143308de5b89a2c3da8dafb68ec60a22b481e24541c88bb712170e6a5dc54c17eb1b775c35e719ff9b2e3a29f2fe744c6839b078b131f0609b2fd7ac072de5583b592ba9b8e7fa85accc74e3b11f6bd6b2713c35e914c52ab199784c721bf822a930f16f3c98247e9b1847abcce06e851b18dc905c60f5190fac41cb25098de07d17e53ea3e19f3ee27cbd123a742b9a14f09080387e48311e247f4422e016a8f7e094de1436e4ed4569e3f6ae459ed84b6321b7fbfe410ef66fcf6e2ec30deaae4708b32be1095b391d3ee07b52b8f6909ac62f3402aef95eb6554157a6c849136fe7352aece2698523572909bedd4edf0ed0762d80e33745b85a7eaf370d51ec62faa15917d00455c50ad6a6cde8f2a8d9873860d45b2a77039e5d05a3a9e6f7e4a65747663c687386dd340ba55398223c248d16be2b20ac01b09807a879f11000de10f34442895026e5d723c89f534ae608ffef25746f7d1fa891903a956030a1cb950b7c162c463a8b237ab5d13912bb93feeb55c3e0c15c03289d8a40187a8e3facdbd018423c95855dc2361d50bddf8f89c592563a7b2e9b731cc0cb728c8b8420007e3a7f718feb2ae034646c84b8cbcdd1ec2c452459c83055c63c18c665cf28da3138bce150ca8cf8990c683e8a4f526fbe4242b66821f13f74fca424255858a856553dfea5576abb20204ab5aa0aa94fbc6cc1929b03e1d6719f481b15896c1fc1b5132fecd86125018c359f1a8afa47a93f7b59c25bb345cf7dd1ac9317916502df4c0f19fb01df752e09879f317b1e3d947d140340a218725cf3652debe0176a080aa2f18f046e26ab1b8522fe50540c26cc0dc2a295ad0c5f5e2f6421d9ecd5ec16232b812f9a78dac37d6c258338686668c32858e66ce41438b1e6bea2d90bd9740df656ae2cfbaa987416d6f4044cf66277971f723442bb392fbf4016288588a968ba1659fa934fba11cb502445424ba6ab6b2cc3f12bcebe3d172e8f6cb0b566540f53f3580bfa307d1b6a92b581a55f8413c3c885acad6231fbdcdb6d197ac150928771182f590555970c2dee3809873da5577e5fa8761863783da32db6081d9e222f4e38f7f9111e0a5c0ad6093160e0777e613395fc40a8c8624224d2e56bba12f0d4076c6b818b1d53f40f0343419215c9a0e08c8dcd7d7b24dc668ff7d8c2c4c070cfbcade2c43315250051ed9f46eb66f223a0d58ff7deb32a70c2e621971e85070a3f87b46e316425f26ed5fa0d62f5e34a59611df4f7e9e2dc29d18ee31a508036eb1124cbd3d13bcda204c2cfe95d39a52ed03fbb68d7bf1f13e054abc9951b8bf1c98312d9fbd175fca83a92d8198297c56e5e1bf182510f40e612112860593a303903056fe170d81917380b40bc480f8bccf95658187c1e076afe79cf522bc23c33052436d9107f381408b60004c0441c6b5d75b791db6be49771f3edf966118ee813f3be5fe00949e1da7d54a396724d5467887e00f02a099034743b93057404c58362989d96becdf4dc4e0163a9063615d58b4f6e72f24756df5e8cc1c7657b10959eb928960f44002892abdcd88d8de2cfc0dd25cd1c3b979e2fa3d82d53815858587c2482c3e4830476df3efb2f055f652500035b86c8a9859ed2e2e6bc8e5534ce32decb85a77b258868d0a293cf46ea811e8142b47e0de468335f5e7c7812517e56071ef8ad8646971c1b54d41d2c5571e03ad0175532d59ae0ae76a43112d92e729308c6b44b14895370fe877a7258c02357e35ba90bb2bc9d244294f85886b0c41d3dce7056fb8186a71891288fdfd35e278186c07916ffbdec1c52451791f69d08d58bd197374cb26832c4982d2d516faa4b06e83e32cdb4eb94a462fce727fd8572cae70b86fb7316f676d3ace4dd16db24c6962002ee8c018832afc8a4894edbc280e5acb5832e12850b716eee9dde6850f857f3269c3ec42fe82ccae98f42e1f1b8c738f47c31ac8f1028059032cbdf7245d54719ef43d68197a74d3cad925e1a08d3800e50a93b4d45106ab59001d0781021350dab8e31ba7a31ced3134dd2b25fd6e69b92ebb39ea34c772989bb31331823aaf1b3aac45fd9013c8090906cb619004c03672b2e0d6837427d436a2514c9b32f82e2226e7bf9bbd8d242f633de78c3017e6f2a3dbd319de63d9613c08e15e2ba391e18a44604e914abee514eb1dda648c6d422b5a0a0b6e4d470b1f30e21f99650b6b4b0226d173b673ee1c59f0954288586e38f1772b1e24b72feb00869ab34299c807e7239c8c01cbc3005a6c473faab3be982f09ce64493df09cd44f53069c6bb8f358a4375c4ee70b5fbcdb5d03f4f3e8d87361612d6d2cbd44120aa990201d1f823e0dd3b69645bbbfff4a3fd32c3a72a1bb67fae5b8139f20d21c46838d759f15e6ee5fb842a3ed454f68819f1ba113017c02d1d38ac8676845962faa68ed4e2f44ba861363bc20b7573c563f8c864d59e06429250a1ddb5ae44a5b4afefbc67abe51127b6494964d826ec8cb015f976eea92ac79e8085474718232ad2a85f9ed89b73ce6bdd82fdfb7ad11f5453257456d40e710035a052d0739d6714068c66a78f373b8d2648835a0bf0aa6924515a622196441a66e70bf17d2b1f530ff45d71eff20c5d85c329636b28f2890dd0db5e54815dea6591de3b70e8630f9ab0875a40eeb5eaee9c60610adba1178d56e72c6bc12eaf6d2c21126ac60a9341819d416fa370309380ca5611d62a40361f8125c9b888f1391d2f2b060c19485ae585a505db12a6830011e2105277c0e9bcc61e1deddcd09ecb2c0f2c199ed15d0d6b6ce5ea8315e94908bbe9bcdabf5e1163c67e2ca4257c25343b5712980fae79c6c5ffcc507f21228e46e75937e1989e98e75774e4ea8cfc868dfeddb4bfd70217a02a5159b82247750b8c9dc471726663420bf7ad9c45afb19db2c9b80b8916ac7dbadcf684dcbf9dd1dcd3799838f3e6360241727a09af9e7b1acd9147c01be30db51be36361d3284bdeb59405675527064f34281983a970b9d91263e1a8efe8c905a4f452ee38517e4000d5ae641be6d046ad701ea64739d94c3d925a8995a2797a29673b6faa448626699e8702bf71413c7983100a20b4a9b17b358e9de380561bf756cea674cce537cb356e185e008e4df6b2b5a9356ea408f5a0f3a3a4316877a05ff2bf6de592f04759807935d1ba521cb166eb99e477fb29fc7370a2a3b1414c82447b2891dab7cd4fcdee27905dfa0b726a3e1dbe6df8a8051f4fac30a8e351d16114e98694402216653008798e56317d721d0df986101b69f766b2a6a2207aa33181678b5cacc5cbcdc417d1009b1cc7e07802ea16aaf27b2e43ca11c05b8d215eebaa6a5a23926f2c4658b9fd489787edd06b490b921f96eb00cd30bbed70e8a7f6c21983f03981642375f84691aa333d937601e5264c0c6f79c4167c8afcda80d7cf5ea64bba351a108480c6b3b6aae8042d8050675cf6c67c19a3c79e17d7f797c231e7c465cd45e4b7fcf7f8c35fa481272c9813b5c1f7df559a50e04fe804c9f531b8061cc1bcbe77ae33a123cc8ec20b61c0455747464c32eb48b457f808a0f3fe74c14d771ed8a6ec82206221237d66f6ff0dccf30cbff8edd0c4b9ba259e04831912d6290fc4623ae96ae9304b9621229b2d93eedfd88da0354bc5cb0a5670315df1fb3f2a2e92942f78f019cb86a9824ed220a624a728536e12a3b231ff541c2cc0485ddaa7ea907d3eca4f5788d4d639f01efb6dae378da447fe65a629e8979d5665da59eee74d920220b8333b0b37d2a35517cce09a1f6e391ef74896f3c436cf6eb4c93d84dc4c606e30d02a171b20818836364f4e483060a8dcc3d4720a3a188a8dcccb033d3f1b3ac6343025e1c74eb1927fb97cbeb0c415b6196925c003ec51f1cce3ad198592373029b30f40b6347192a0329d7d445fa799d4032084b8d6cc4aa2339161bee6623dc8b04b8fbb17e3900fe98459a821677bd287655b5b1cb1f6d31a02118c7c0759152596cd908e1e20784a916e2918b86013187a07f4f54b905682e23442223ed097557c208c83d6bdef41ee977e8412cc00d10dc68cc01d01e89fdefb690f3ee16f9a077d7025528e900b8bffe101a44b1b3731b07086e8c18a0599455c80c1958845e02bc711f5fa737791f566c772091f3acf87dd60fbd3bc7250c09545c3a4fc096f28d29759826ef3a0543ec90532cb29e4b673967c0a0dfea97a5bcbe9bcee21071200013be89d61f65cb5b73a08659630d95fa4c33026199475fe42852825c8648db9a3294cfa5824c5a64a3d3622d4e190047562cf1a8a9a65a762e7ebffb5a5b3acd31ce7beedc20eea93b28f3e9accd7ef0fe0a2bbf2a037ebec2b0df12963e4ce81fc0f03defb8250c670d6ebebc7a460fe5da1ae411f78a782049776d4a876b643f85ab8ad6234cdddf1cbf447e6e22282d3a4ffff1e626cee26e421ea8df98576c590f9ab80e650fb3a14079d48defe0d391f75e2fb3d6e676d1a6bdd0d757bc9397ed75b568e8ae2ea68717553da16f5348fe6ec5204826e1f50fd81d1c90800fcacd0a414cb87967de017bdb7cd5401dc95d7c78aae21656f1ab571a35a6b0caed931b8755fe163a02c8c86c7d2d76ebd3d2d52ea064331d607e9a1de07700c6892f3ab8b5ad4525f5298ec96faa7c8a4f58e50648a11d67f04ea069a4c5d053fdfe85ef9a81005e123a11fa1f3826fdf05e903c11088a48e8f06966d1aca65d402ea8c24611635330344271cc650d5b98176bf48bea42066da0328439d19f2a7f7ce63b984492ffb08e3797a852bb9669883f8653f579f8268e7303497dd7e02f6be28c68649eafb83e39e1041d42e459950015c47eb785da125ee6139eedaeecf5160145ba231eaa8919f305d0d8250b90d3f3f2a1804a13c604e0982cd0c4ee3006f77a7e7b06536b25ae4b16712272e50f409379797b27f70746ba2cfd8f1284d44b071db6a9b05963e26e8508defb7c622a3c60b4cb47fe9f8de027b69971cc4666207f6197f14d45f6e7796cc49a6e8a8753dd0b95ca009c4a1bad114e85e626918ca31e8987a876240c9317b9ce892f041a8d0be30f3836e7fe8a218768d3a76339cde96ef51ae71b0db174f12f40beea5fe7c2c51fa2cad625aa1cf5c014d06cb1b4bdc802333a14b71109810ddb812a651be5802da34a2c3aa38a943c4a5cf2f281f7e9f05fe68c6a54d11eb00f7d2698f28d2a79685e863e23ace4e80a6ba3ff3358be47952031ce733e510e07d61f55386d48b86f6d27d89d895841b83f489554fdd6da36eefd39b05ffd06f1a8e5a87b18d4db47aa343e150f526041f8f815981e387814b6e5330f27e92166fe04018cd37daf02ef2aea80af8c91a58187db5e49aaf8a95c01aeec98caab289b2af6b3055ff7446e8f0dea04615765d815a84d4866fa99bb34dcaa387fc93414aefc4e6a1517d62f2cb13e5dc3733e05877e108e5ef7eacaaa8895b8fbc9ed3ac38a0b30185b0a87cb51f65280c9a5b8507d01625ae24c5137a55589d59d1f980c8086deb92aa4d57ed3f39f205a81a607bd00ea578bcdc4e79ba63d4c59d1d26fef246e29501e1452bd44b8721491d554e21e93086aeec1c10bde0f31d0a14b4cfe51b801bf512b6d4d4489826437ce89457d2d5c9954f5b942b930b82a45a3ed603e47919c19af24173bc0a09ab41dc24095c650d5cf2a6282ce5dea69a2c1fffb0fb63b1d17c1cc071e4cb0f136647e2c843db03723a394fb9a92e5a0392d75d9c873d2a9ac62008325c5cd3b54b00224f997a83ba7c686e9930fcb2a85c9108c39aa2d7fb6b95c397d87610c521ae0ac02a88126e4285f23df887d8124b76b3f6da47ccc6fd6d2ac12a67c03ccdce1096e9506bbf60760c2e36e5c6c72380e9caec27f5512c7d655b66a285f409900ad0c01ea4035c07ba5c4eaac14c9126a729d9357611131f2e8a79592d3c7362d40e82e76fb113825d2e899d35aa9e95ea7ad097041c1aa59fed79e3cb28651b281adb9743d4ad6d807c7ec15aadf856b436e0ea4e84f8848d06ed00c25481ebb14c07d9c41c90b892448710b9d4741235d3cc7e8082ce2759b0cfb806a687b90e85b803cb7613beb824505dd5cd62a325d1dac69decc114595794f43dd6c9d2a4401d6a1ee749a5d071c0e37c89c9a524de1574f87a5df697bac0d4d8acc422ce350de2c36db810f6310d0c115bc7e398038ececddb7d00961a874e07da64dc77a552689ba78becf46201800985fed24497375cebcfa0e5eafc521a5f5b66a02a021f4d714de12c00db91efbf326e5d76cf1cd7cc207a402f26cb2df96f6ef6c981adb513c83f5f2c35c82bc93b9cd348fab0066cd817d911f0f69d4a4e4b9deb362370773de6078d000c0570cd0c718ce3a78443352cefd107e28a9f0a6aa1bc84fb2dcc442e520eb138c72287e65491d784027b3934c952d27b17decb1a131119fc41159f2065a06d0f12052ed740763205e6e8fcd117826b4dd6ccf51a17124a8cf306850f09b30852798368684fc246298b999c8957edf6031ff41352e33c14337a795f5b91a401b6c8af29e684c2136962db3d0c86cf6a74a3d727c11964ef41f4748a1bc010ddbec21b241b5250f6707afd29625637e19e5f078516e1608f9be29d96e5b0675b930daa2af03063ad3110523eb96e52e8247c6f6d5d63c2390018340d295b486d0281f956dcdaaf8c047bce62b120098edf94ed63ffa7e1fbd218661931c7fa0e86037147eca0b49ec12dff9744aa1dd19bc27fd1a5b1d678f3be1b0456b712899d6d0fb07872550346a2723c3059ad1c053f81b6e68f8ce61263807d0c17384a9dea3e564c695ad80ff2e381870cf1523675b939cc769f56da10274f0d49bf6e58dfd2d31e64a839560c7cb247501113df6c91ed34f84a8535481d0a8f7f401176242b5630d76a3a27ce1bd35bccbe5819aeb9943def9dc902ef2141cb0867e0d4b645536c4562ef256880ef0598f5e1805ab21f919949c07fab9b6483a26cfbbd27c2d79ac683f4035325e058fc6ae6ec517d767e29c0afbf9f5e269bb47d07963b4766ee5dc86ac1565802b71ce6d9ebf5586542e82e2c01dd1ebabac7b71482b39d9def5c7ea531aab814c4d261f534d8caceeb12fbb5e87243e505090b6db714ee752787cbbca2acd0a461bf19051b55ebffc506414ea9b640d07114e429f91252b03b7fe3f2fe9a7ba6cd058573671c0ba8df76dafdd5839314483604ae4cdd8d15c576534704c9ae2a9659f629bae92f26c5eed6fbcd229d5a7a04e4f5a7bc75da97716527115376d437ac9c1b95c10a1e5ab55f06033d751d21027e189b54a0ebc01136dc079221a596c8b853978adfd768428171fe3076cf4c9c5d029ee3d47d6d65b5c4dc4d70ef09ea9c7b497f8322d77b76dd79bd7eae7dbf0278d36ebaf588c86991b17be76712347e35ec47445613174ffa00f654dfffe47f14d1d9901726b8ca814992144b1c3554a9d8fe272a0f200c505a04a03988b188187f28d7da65fe2a08bc8deacb9fc49957ebbc7e78c53e8a6f3d7fc4b66f50e64146fc66fb02016767e9fb95a27f102d7660de480189c6bec64efe995abd886e69b199a228d8a256d55e6fefb7b71735b9d09c2bd1f3a406d865f1cc0bf9a2f592d2a5a44dfea5eda442d5a1f593745c71f1bc142cf470462352517dd05868f4d6f6f5346c00d6aff2a83df86776ff5bd6f5d7ddf82c9c7c6dfa41aceeab23014892673f54835d407822d90a0059791138247685b5efabc8493d4d7cd5cff9099ab9d55ea807738bfc96e3410dd2e3cfdd044462990b74119cb66ebef5fd579baaf4c526ed3ab5805cbc1bc05f2ad254ce11ef5379474ff1edae98aeb65524bef8a9eda10d74d52190a5910cfde72158d17531db055f8ae8abcb3f325580e20e609dfbe655ddfa96e25e72e2708c2dc78c10b18565b2f459fd525b4c5cd5c640bdafe741301a9eecc7f53b1b3942d711beb19caaacb839fe1556c97e3bafd0a1f299fc92093ca3206225b22934ae71f38ab868433b555c278b32a94832b8c0cc7bacfbb07473faf652d6e35193df55c1e62aa613376a34ad418285d1e60bc9fb7e68137488b589613442e0e2528d3a082df4d26c282295a9563006f66d93001e23c64c34971808dc10e5cf9839464b7204b039b4e58131c4a6787718ad62134df44d25a1032c278c531f700bdffb3f842c78f391462dde1198cd03620430d9374d1d5f83546fc65948abc6dca45cf9c8de1a95d2c265de462d53837502d86ca37c96a1423f33e1c1d7b597f01385f68310f0a1b28de411ba4ae8770373bec7da395fba74dcef808eba65504cc20b0529394d7f88ad68b3bb3caeac20694a37abe93701ad78e08d7ead5d1529e1a8a8316854e1f1a45057a30070271224a965f6f596787ba8a91dbc1498798834ec47c74528c472f4f4cf38a1b08addd2ba76ab053cff3872c3f3474aa03fd369640158c64cb25b10e0f208e56f9aca0b01de1f45a01c7420e9e1ab729c43a243b5b0e755e452ccb3400148208380222d2d7d9ca79d14ebccba0653c7fe9a2b7e3c4ca9432b6b21af2013495404124d326c18004cb0d9d68b3713ce3a9774eacfc1bce37a80a5ea473cbe05c5b4d566d4b2b53f86123e6d318089b17b8e4fae2fdd031564d680882c16525307a300fa7d1cc23037ffa297930e96ecf8cb26d439e9aa3e5cf59f28dd265f0005ba62c2aaf740babb00cab1728ac439a55869ef9bed475cf81b0136f80b65a682d5fc5bd6351d54130a239c15f2ed8ead6c64861dfe6688cab908495e47d21fb09168e6ab83d2f07087ba72857bef46f25ab916e62e803b429c117f4fc100aaf75deffb7ff2eb15147d338a9b46d50d07bb2182134ff1115404a92a6ac5a77075dad472cc4a0072015d481551e2ec03540433dfb440de8a4a5792fb714e4fc48b218f74bba14a47a1a8211f37ac59e2bf5d83b09fec82e5c2080faca9b34581e496578f3a535625c62663445dfba8e40966d2dda6130aa9ea9d3e818032207c05507bfcc6036f9e77539605719e661080c83635f93ee6fc10aa97d8a48b1d052f438e4a1b40e43fbae188dfe6f1cf8ce9f499f019685b84c94587d01d615526688e2f1f9f165a11e5d06f2b21c23068c0b12a4fdf95c59820aff23aafee5feea9a984dc889aa7a0d42b45e77a3e99d20b4b54f6e008ec25116fbc4e8796950949e29c38405dbe0c4a718f3a17849eb737318ca4cdce055257f4b02df5d975229b6be9d78f9cfb07c89321e3d78273f86e98d301f0ef2f4f2b9fbadc0af9bc36fbc4ba3f9c8aca8e3e859689d03a548735030083f7e8372a81d071aedc081d382654988d878d2821f8089cce4a0f01c35e823079e2099742ae38e7ee8d7046e60caa3b3fc5d2621f4a70c377bcdf070522639266602abf01d09561b780e4cafdfc0fc3748e3036e8756a02501cee452911e052161395f42f8c600927933c672a55c2619ff3ef0d675cfc11e38766844d5206bc4cd54a3442ce69329b727eb48b78f790c9a3da1201270d8a9d9115a0f932f56dcf135cd63d5056efd00e4b05b6fbf78131efa465f5cedc48075cb7da63ff303fe616aecc445bdd2e6fe10dc2f8a5d12fcafb9f84704d37e9f6ef3057a1db402443402caa61d5e55408e989b039ffd4472d3bdeed76bcbe7952e5a5ac3185c5b9dcc28c41a583cec2e6d7366f71cec31c877406ca444cd88fc27ca0c28595b61cd523d1fa6ce8b70f060a146b8d2bbe69b58c1e2776f29534a29a52465ef059c05b205feeec74d73880cd4cff98da11bc7dce212d5e30bbf1d620bf8ed6239afc7272149717198427149faee4f874bda0b287432b9247d359b57a215beecae41cb77ce3158348d8379b798b41f393c0e397850f4d30bbbe8168da29e278ade7cefbd750bd4abb5d65a6bbd359346ea458ac45141fd503f8e7877e9e0eba6a9bb98f05c6b7b4346f5d96041d95f65267c9640c47091ee9ddf086016ac29ebbebfe9d2a6af6dd7c0415507813988f5cfcf56557186031080e9d59537bc7dbc408d280b87450bb324945d25e326c7458dcd8974c27203968892a727fbb68b4d0037476188668eae2ce45f944a1e59cf5dd859880e698c9a8fccac026b37571033065130cc0c89d623a477622a042336292428e75692d501aef0589b9ab5bf29b3cac5da17c416b0564956fa57f9d62a8eda122a4dd591085b01e384a2e5dccc9058903b5c41335114307238324d484e181699bf11435d664e5555d5a256bfeaea5cc4276aabbada6bd5abaa5755afbd565bd5d546157b1563afb6aa5755af7a15ab5e6bd5fb60daea37475d5c64f52151001dd32d43470c643721c9eed29e383c640003ea04c8ec5a382d5fa838b1778ab56846420021c9c1bc987133a5aa1e5c40b580d55f19212ead984a4cbda68717ffdfec7bf1af40516b9d9f566b0a4ca0065ec34836b4a4d2c48bbfbbbc79f197c0cf99e72b4405ed83770963edc552552ffe2df2c48b7f8a9b6b9a6532554faa1c45265f2f6cf4d6b6344ced6ddc196761694842c18c540ab538b69929169cd5357d9801f6629973ce3963d01845a83263c6dbbb428c7a7bf1d7f87b17542ffeadfb42c48bff7fc1f7e2ff167baf0389004e0099015235b877c5e4c51fcaa9c2120a8d05cf8b972ce65edc02e8c5dfd822c78b3f044e064067d575a3f4c3876cd52b36fd1361b476f5c12c851008cea7154f6c2ffe0f6837cf594dd58c423e7000766af162fcc4f2e2ef81bbd3f3b5b6d0007de224a38017ff0baaca83f4a1b5050b9a01355efce26fe2bd641895816871f4a24855d3340c5bcd48805916130cc54e7486aa2e405580502537e9bc18ff04f8b6aaab174e1c49279e18c778355e084e396624d38046c48da1e85f6461c420ac607931fe7e45d78b3f02dab99b2515cb26a125073513aba01d18426cd5dd9873da10e3c1015403c4bd18ff0a99b877e57301546cbd187f02788c27ec948d9414b59894bc54b8bcf80fa0cd9907da2180e070492e2c059349c48b7f072ee7ea840f1d5a5b20ea00e0b377658488a4e7934ebcf8b72e2ffeae528b17ffefe1c5cba5e38b3f89d16f0606d70816b8172a132ec0946dcea99505a2e9c685c2bf7a31fe1c84a062cef9e2440c311a1e2abcb50c6b49426e6a9e6a1eddfc038c90d8964f3228f24c50a4e2afc8ac0f8767030d90885e8cff884ff9f438e8d5a56d4577ac5ca88dc185d9d561a999b93471932e3bbc0cf16db5f8dd40d1c79d112762fc2565817100e49f013e5203e1c57fc20f118eda950bd28905c6589994f081ade3720caaa545dd9ae486215f8c9747362ffe12da746c860d37362b98a9156a2649be5af941c5abf56f594054a354f6c4535413411559a2807931fec30ec3922cb1a109ed0765c598a61b239186a912ec06ca97a6749e8580b86ac61b487864404a7c9cf86a9124aa507347afe8ba1e78ebf4ce6e93748cf8dc493da35232397492d4abb5fe6d076e4849142e82bc9af4fe416cc3a5aea6460b1218ca8a314d378c572f8f53afd6bf85d3fb2056a46654c5c418633593a8fbb3988404afe8d5dae3c841d17ff54f2fc6df6b9b57eb4cb2e2d3be3c01f462fc794e5364ebb517e39f87eeab8dafd63a021654e2abff89b67bf54fc116f42f6a929515b4437578c1c580ab55d5c48a17e3d40982b4aec7b4ee575ceffe237befdd0adfb4d964a4824febe18a57c29b369bca50bc2851e3226706ebc98144073822b4907750ae1d7e443642488e2a078b0b17e01d09293d3905d188f2408d881e2ba50b970f8a0e727362a161474589106cb838bc35e76a905e2d06f002141413531667b3828576ca613ddba6f67c5cd8e47c919988fb13d340b429a32c0a4bf9020a060c2097a7e4883ce5177ad91e278e8dbada9f5ecd15e53a45e2d2cd668fb82e06b823b106dcd2866be2e0040e58550834a127291544bf94b46072522055287ee250cbb77df5dcb3f8d6335fef3d49506388fbd1413f249d995ae3a6a0fddaf917089015c2c225e9cbc1bc7049fa62a10acf7aca7bf7de8d84bf0b49da26188de01e268d849f13753048f2a6ca175120e67e3bc30ae4332fe7412fe45712df2aab720905d6e4c468349e34657249aad2a15ea6e70b6cea5bfe4788ee50f9cc25691fd39d888b7fe7e49254a55f99fc13a3f16409fd99f33fc2b90a13994b52cef927f25fc1c8b9c9575942e1119524076faa7462f208f37e4de680f9f09c7331a07f7a16afe5c4b6f87ff1c5d99fd9ef038f86950f94578c10538e23e68f8796ab21b4368f0dc34216d430c7989bbdab42b2069695b7e8c01a8e3a8f1bdbe45fd170d8b62930626730766cd7cbb38d2ad9f383b2613c5c41699c7ed870d15f935eae188edcb4ad84261f72ce7ba0801158291e720325f2e4417ca08635293ec472491ae2f33eae2db12dfe5fdc718210718fe177dbd6b5f9f9e07df56baff9d021f48b38510a2b3cf775c70bbf4f8e47cdcc1ae48176e4bd6b5c3810474ce8c7d99e9f60de7b89a6a1af3c3fc03b8f73649735687aefc0b2f23410deba3a353a3dab990c48870f3c064479431ed2327cd059890117d6666642c6463649eadec7360764e77cddd2293e519e55958acd3ad15c926eaf9755794bed1b31ceb9d1d88d56987f630b96b680f193576f72d6949b9f961b5b26cd521fea38734987a1200c94e5bc73bef7de7b6fbef766566dc0454b707903a663956101ee05fd06280be7d16796d627906fc8f13124ec9418677721d429334f7e0224cb54ed0e217803945d8b08cd1147874cf49b78954c510f27aef7de7b73ce314065806cce261283b81dbac0e093c2d9176f81b1f7c877ddb7c32562a8cfde7befcdf7de430c6d4bc462b2cf8db842ad40eefdbe5bcb8068726214321a4f944b9e7f6831a1ca2ef3fa484102821e07a62f124d2d94421149251352945accca9dbaf87f314aa30eb8ec6b40082db446c0482abb6b02bb32e2894292cb89a1b1f4f1efc8aa55776d100c9218954b1c09cb22209088eab6ad9b923c92cd79f88150e0c6a88d4388ae29bb0f17705828764430f524ef643e326a9c01a2b422f6ef4f7ed1a4e5337acd591a565d573ff5cc4a47e0d06d936d86f2a5d9880f62f1ef361375acfc03d7b5e3af1d249f6a8649c5f3760f94de3b91e52db3190d19b653557f6c6aae8339d52794717c83c19b22d2e082a81fbd172c25ab6891f85516ba4ffc4636ca7bbf4be088e0bddd21cddfdedeb79a7ab1dcaa4c125e11529a2cb924f57f512e030c763619b5c9409236888b3e652e070f25bcfdbb231fe8edbdf79111df0e5d96e8108835920b59bfe60247beebfeb821a1ca6657dffc6c05d7582c1ae7802b3ed6629c936d1bf1d16d1c57eeb95f77db0f90077d2b37e46d347befbd82b1582c9a9871b57c62f2ba35c13de2bfebfe686fb2c1c2f7b60c406d2c168d733926625836b6844aa3b722ad16bd34941e6dd399d94013c77c9390e1369ac7155c63b1689483eaa4fec0f5ea50478adf757f5c94c4c6d2f6f0ccbe739e5628ba453964924dab7ff041d198fc313941ca78574c3660e1bd5f85c195b3c08da7c383242d1e12e87befbdb36bcafdbaf166fcd6bd6aedfdbbfd8ff4defbf769fcaecf6d5b17efc9fde6766c26b6c5ff8b745b15a2d1a7a2c1fe7ddfc67cd7f6f63f423ce97fc5683c19ca25e9bb7e9dea7d27f6d5755ddd3c965c92beebfa3d0911178b7ffd2bbfe3af1d24466c4cbebdf7de7b37c145f5f7608b2dac5fbdab6a89b8a8b2242b3e3a944b5e8f2de0b0b7478f6fefff37bdbd77685b0e0db619a4a511289d0454314cafb7271c6a287d17ef904613e6d0bb62448acc79efddcdaa7e65c77cfaaa920cad632f1fdcaeca4783bbeed95baeba796cbd77ebe260e12d57c14276de3ff576c75c92befc6f6fcc2c34c043b7756570499a134d9c251bbee288f5cdf9de4d9aa1092a3574156e90cd1bab1b951b3a951b28159a9f2016016ab6432b3ee88454649e30321154668e7b1d1ba01ae858950d502a315026b3cefd9a17218f7c57c8757f181d90fbcedf847bef6d0c4372a0cc0c8b82b0bf27f9e08362f765c2620a18745df7defe04f7645e563bb25defa684fdd0893971a6988b008cc025af499564833282c08d4b558e136036ce78e79defbdf78949c793dfebd0037bd2cb390fa6418121ecef1f64ff8f95ed9ee8e59cb76e8daa966fee7dc84e3ddad1c30653cdc9994f9c10e886143950fc05c1a17016be21382218cdb3edb7dfbdef89e8941a2cbd43a8d2b7df7ecff45de42d49ca5a95b02ab8b2ddcbe59434ff3b05a050c573bed9755d7de79b7bbf69745efe47381acb6657cff2b3e7cbf9de6a479642fffdf333e7cbff0867d1a09a733ed3f9f727490f9214b568e69cc7f094b5257c5645800cad11d881c303b8779998f06f9cc68e4153c6e882565f1d6bd91198ae9eb5528678ed532fc6b2eb1cf3ece7e346f327078c8d39b6b90eb4e062b43863323adbdec484defb594e2e49ad7a4438d9d15b6d60378d67df6bb5d9109713fe3c74dbd69db1b46784b498582c924139c752691cf3df3190fc177fca0cba5f4c118b7ee2f38778d87e6a1532fef0cdf55e935c1c2cb6deb77d747a8be6e30fc4db7bef79af9b87f050fd903c3b59bcfd8ff4de7bdf7efbddfda06f0f004aef7df37cc1a427a11f882426ae90098adfd3045f4891456c94044c2cfe9f81aeb3ebc95f7b86157befbf77dbb2d4f7dec1bde6618621770f872d3fce1667fb971c76df7db7c27a3822d4f17c2f00d87b57f1ad5135094b571350723c9b2260606169d53d121f6d86d665b1ee71cefab609997331208bf41459fdd5081ef1df753fd2904ee2714d90b4de1f4121dd6dd044d10144e508da4c42d17bef15dcaf6c6202fb78cbfae40d101b087fd1e92154d96cefbdf7defbeab95f371f85a0fe3ef55dcf0eb9a0630898130725e0abb181f4a2d35342c42d19e4a3a4f5c28472422cfee45fe33c805c51e133c87a41835c1deb17120876044bf252219eeb87651276a855683704c28bff1791b9248d13b2116e65b09227e5e246a36c8988053452374688b09ad27092b4c3f9d8c3efb6adbbd58bff77f4de7beffdef437fd1713825de34826344d6d49a99db535a494e50530b2c30ae1abdf7de3b7aefbdf7cef9baa111f2d06d5bf7eba7f7de7befdcef2d09bdf7dec174188890ee8dbdf7de7b27aeab88b5e03288ae77ceeba440dcb675bd72de8060cf0fea98841f43d790b17fb787c17d9cfc22028e7810d85716ca2304c839ebd6c5c71aa0011387231dbc3e332490e70a1a4748a557d35af6610310efd7b298908fd6c537673b12ce4c70b0bf5fbd97cba01df318ae10318bc1aecd61876ec9b2efbda9150e5b776f121f41ee69741002f7e69e73a2f7be7b4e638390d5adefddf3bed7ae6edb7aded9869ee87bf764ce087d19d627ac12c200e13e2543fad83af57e41b3998ebd7adf3d0702d14221d0a4afdca74b3218916c5c3df76beaa6016e5db30e1fabf73efd1aaafa4b445d50841f90e585830d3a145c5135226abc408d61c970ea100244dede336204d3b60ccaf9b28c4e38c76e9313a3d198cd801da0effec4bd7bf11b89ab872cdfba4613140d9cf5782be7633f2cd4a5c384d05e8b580a9c1ba01c19417acf1cabe8eaa11d7aecc9db744244b25ef6eae4e68e9e187cfac03c00f52939690473d56683fa0046f949ed8935a3f054a096b738194663495f1dfbefba7f487790d73b88163d47372d13cd0a7eca430dbaadf7ad185d2e49d76690180a80cc2e48282f071e5f0680caa8a23a5c6c2a8e2ed811d7bb18c6a0d4c6a01e1b68f0736961737442c4078660f8c0b09b3a0ef139896d93f730803bd87abfbee500fb50a6f7ded90e15400d27c38fc0fc06b5711a8d754de495738e20b1e28e27054ac761a74794e385140862881563787b56707784aa8bc10dbad196377ab9c341fffebbee8a07e795039b23c1ac59f78ee492f1775dedd1fbd1df5683ab4e9083d34de7aa096ac6f98287a605cecbc41e1e5e7b05d70d3a20af148d1f48e4ff8fe89047624758413cb5888484444eff7efd2af1e22ca114cdcb39704d4c486610101427a8669c0eec38cdc8d2f9ca02718109edc9d23373cb4159317655ab7bf3ad7bd03dbbbdf10ddf0b5f4ec787280c2eba323cac2685262fbcb89baf183f68583b9c797182001a0dd38d4cf4ee27dba82049e1d5f02c9d4a08193550dd6cef56361d9ed55aaf7ed79c60c05f5b130cad3615cfaa60541d0c27bf279b189be745e8344b5e2729344dc71666da889a74c972b494a12bcb27441c908ff8efba1b52d41820034ab61d22185c24be503a8d184c681db0f6a6c24476d06dbd9f513abbe0823ae70b33b4a6bee6b1cad9954491137383aad523febbae0cd3900238b0f661439a9a5309a91324e1965823fe985928467250c734973880e0a28f2c49f4b6f35700a0b3a6678caa1b510f7884e4bbae86915b4008476e1e8668ba6ef46e947822c786b09c1a42c488015183be13b386660a16261f88f2ab3b61e4ac0183d2413cb185d090c7e16788efaaba08232ef1c5eea4c2949f8babaebd631508596a32402c60aeda5c5dc5d9778528a2e6e9eff333e7bdf7de7bbb28add6768d5a3185afce69e3a66fec0d84bc349632bc1c7dccdd66bd1760fe11307bb6c32bac1bb9a5092deacf8e2f8c0a28b75820266a44866389b8188c59a89ee1c8f54d97334f4dd7b1c64dada7ddd7bdf7de7bf376686c87216fdad4da7957da3c55cd5ae70c592d8459541a14c1542dd3ac88906e5074de871b3342ca1076591cb26a8e320b499999911088e8d64c667933b4ca2cc50c18447b5b395a30a24ccc8d2a8884518e37a117223b399fbb9a3f0f6698781b6ac20ae1f39797032d6ba9228a05363393bfdfe2f3d3df07d1983294d5d591adf9259166823628d964c4faa4587a8264dc906a7d146062a1222ee9d4e1ea9ae0bd64f069e59069d670bba281e1b3b0e753c3531663f386f7f4f7e9545269220886171f8ebd107cfdb0dc9869ea45857975686f3d146c534700c0524cc5c9a5084102067d3e3529987d2f6938ba143a2f7c95f10075f5c9e9b495e0c4885a3a5202d3c027e860ee392b65b15471c928d2c9c63467cd7bf3ff111041dc9bbfca32a5ec6383fa854129d5a195610c07e8ef73ca97bfef22d3dfafb4f9fbada3233f87c59e3bf39e319e8715ca2305434c1a568ce8fbdb0b00f30519925339b775f76a1dd481428a87b99f9b154c2874446023b33386179315a5c352662a9657d2aad409a2e8e9836cde95210b8c87843a3d7b5f58e6f8e9e51607bdbfd7baddf8e8a8efcddf83bc6913a70ee7698343032f367068aed5781181713cdd949853394f340e45ed5e35c62cf77a59d57aeb9fba37faf7dd07539c3c9cb6da0364dabfbf210125279489a66711940b9a684e7b5c7236490ff0defc7dfe988e2ea57bd5af3b89aed521105c8988f71f298f1d7683123e1c6d6fce9560827a076d425626c1bdfc5d69bb9ecaa2b5070f6aa33515db6934e794ce035ac74548191edcdebcf460f7e6ef5596655b7cd3a587164b0f473055bb23447565b5d6da8dddaefe6e31a7fa7b3df25dbc5624c9fb6b42fad315a0a76bd39f768c553db6a7a9437f5773fd7dd2dade9b89de9c749534858373ce3b92d253da0bb4d9e0e54a2d163ca8d4ea79d9375526b960b4afaa765b2c19cc876b6c6b441b1e158a7e0b3b43c361eb722b7953a5330c0adb0de04d95cea537f8a64aa43502b8bc1d6faa4cfaa9f0a6ca2d2424aa13ada61a016faadc1a7b41de155dc3b802b9ef9d8ad5be98a4e31bb966bd3e7715d16fbeb2e878d8ba4b9614c3624b42446d95436b1eba6d1b542687f4104589f4c0efd1d559efbd9b779b4ecef6efcf3ccad450f79e7fbddefb66942f53d470efdb96ea5847b594a97a329044a32f8e4d44d8158a679231d9d06a8119c341f13e4915cd25bfe8bd92e97cbdf76c33c783a9e3ebbd8ad7fb5fc1e87dff285374bf2884015cd2e131f960f75c5dd5a45f093f6c71f1281492109b314b7bef3d2416f799875b06d9dfb0003b58610cc739cac800b76e0db0b32b8b082a36502a3d9865a844ecdd18152a9895008318000000001ccab2344bd39ab2321400092bdc6890b45c542295088371300ca3300602280c0218860118886218c534a4e8cc008298c2f49138299bbfa17272ed948ff7d3bb0d17d80013cc2340c31402331504072b46b5b3a1e74194d4f5fabd16534ec46b5b2bce134d6818d36b69ae8465ef90ae75d6b50a2a61d721263cc01901598665facf576369d96a84daa21c05ff8e45b4a57ecb2a442b4e5970bce975d4acc74c3c4aeb83c4a429e0851438a9180275d242dc8f7b3359da2d5b4ffa465262b5f372917c4fb5336c2b65959c04e46cb64468f99ad233407358770851e68aa3552a13a929b3e5e16e69891679e1917b82cccdc5c9931a27548b61217628c4f8ac765bd70d033048ec20538b96329de1725cb4815abca7e66a30a54da0a0005402647b63464099d9a5d0160d9ad4c3c1fa43c0048a6a41a2705f84fbee0313bbd8d5434f3700b815ad2076bd24fb3e10768b5f18c6980a2dc83de9ae259a334834259d57f9de31d6a1468728760445bed3e71ce94dfa6b6e1e09a82d33ae7b233fc0b5f908f564c54965f251c7b4a8cd8abf0e23311ae827b2e53102dc1338dd0c1090e2630bd0e8fb51b87b4ff2f5eea4a2d8b9c01ea60843e36c82a79bfa1f0346a7747e2c1db777676aec67a184a1f18a6818d19dc6e1d24ac4632728dc8231b8acd425429fe2934bcd9532f9f9f34661a6b0e8bc673e1ed3eefcdf48a5b72a0d5c068e03da0f619450095187354b65ed3abc06d0972cc9c3c252ebcb03c2bed7e522b78c033a8577eb74a05056185c17e2afab7221c7a120a6f4641b442ea8a4cff06011218eb9df82f97047eb04d1bf1c80ddd542a160afa3352fa0dcc21979b21eb3d099cb0b5fc4bc6c1aba9e7fb03b2f15ac04653ac270d5549838d69835dc8c3d0196e2875e98c934f80d24cba31aecae0f3523ea5913a87e375f5afdd4062c6bde7c3da99789790a62c9aaba4c9b40220512db0bb5c081592ba6e0640133bcc894d1bcf635298250f5e1f2134574caf1a6f94d1eab48e83055626ff906df7df20328f8a352853ce046f315139b14ac4f183cae910504b2b1e98aecb5bb148cf56c600b6a9e5847bdadae212328ac9edda8f4f379be1b9453821e3e953d08fd1d5af36f30798e76e3390eb717dd6573b8c3ee4746200d130a219d4cc97ba5c00399122678af3fea393289eaca2ef80143485ad26e4f72de8190502930fa63945a242893d676f6fa491f117885ebd1b3b784766136546f4244e525758e84a4dada92141531f8d54f306180422a594d8165f025ccb843b2b1edfcd70214fdbe2c43ac33796486ff749ba665e194a85ba77b0787ee661a353590dd4ee35e0a801d694463b48c03b99d7ddb791cd4be957ef00878705da846a6bee7e6c921243934d8755a83a798cdcb6feae1834ca24f1e641c8ea044c5ddc35f4158675d84c7e8e84309e0e10453d7ac65f80fdcefbd818c712d7d219e1b2f2f73daa856bdffba0480d0bbe5c04620c3b5a84cad7aa3ab07076038e85d437683ee1c2bd5cb67b120e66331f10d402518161d32b2db62ae12d219d4f6e245ecc82dd634be07af71306dc98a3b76ad242ee79f3acfcf3c3dda847f1feaa0a690410bdc8a47d858f3f4e252fc7ba804354c066d4048a8c5a1acb0ea68c05d3c020cafd33939bcc03369fac6b337e146b05ac1d8f171f72eadab0554d7db81dfe86ef30c17a4fb601e05a9d370e1379f0f14d688100fba85ad30e0639a204d9f0c1b72675b8d660c77a77a28493f599ec29e97850bb740b8d00fdcde0eccb443ad6fab761984540cc35fa2760182ac49533eeb15b8090b34fae4e2a10f3ffb67cb205cc1b3ee9a74654a7b615b29f5eb9d70372c64a1e674a086f9bba539a7f8387d4404dffe3998852a5cdc75576f4704f117331ebc7285081fbee7dc535391b5c36a06aa6cc8263e0f6ba6f898663a042ffd71d977d8acb038346a22d6961b14a7f9570630ee4f05d70cce09115f0de59ec0afa09c9862ba8e0170c95cdc6fd86161be15ff173bb51c815010c9fdd31e798c021205593263e9ecb23418470d7f8cecb6ac578548101068382e9e7ab9f32d6b5ea9d0e40e52ff891852c7c17ead798ac97d825ecfbc9dd6f62dd93a833ea60929c4850d592723e02cd7bc2fed1014db9ec5a6e0266c9de5f371149ce5b2684cc6f8ef35877fd098882435d67b72c7b0b6cfb693b592e01edb824400c386dcc9a3843e7770051f5108878b42a6479b4c3c37718cbf1fb0420f178f512b03c98a92202b091d507ede945e9e9d37a7f47e2e5f104c9a4110c68209f21b8530bd356c9d0b050942639baa54297fa627ae4ef4f400767f4133e9b39eaa886222dc6d656ee8d2dc3d9957a599874a811d78948865b39f2fb745b827cec4dbee2877dffba5f7f7b609e7d96995c267ea745448b62942cde9d8515454f55137226b27304bf1a11cdbaa0cb5bc9dcaa2ea665db4b8a5f120947ad536260a6daa249229e279b5da67869e20a62c28f48e5f106502942eef7418393952756d8cc4a7789aea58541264b6204cb793b902440ed849bc4a4c27d91ba32748bb3949f90536857a7f66f07aeb4c6bd435b1ba385cb4a9a9d666a18a3783c85c4df5f4f0c228b503b7b3bda03b4ea2ec2a9c179df5ac4693504c2436103fd5aa7777afd58e48aa1a4220f72f591341423fa9f44ca3bef52d6c133103a2aac993a1f5e9d03c4ec53da7f19cd3dfd3f2fa14143f02f433caa62ee48acf66b8358dc43a454047cf4ad66363cc0616f17ec3cdf68263d7e36120c9a6df6cad800213e8be1c03706d3fa434877f5485812291245d0a5fd70c9531196c83889e4882a20781b57b463de0b6f18bf0d856f4a0436cb438152c5909c722d6f657257f56f29a852a89218dd0632568e9f0a310cca75e729115fa2357a0684e373c17457bd00f451e5985c189e5c9ffaa98b8efdc4d0c8b40b28d3fc6f11b8223e00585acea34fdcac421c20ff61776d40cb130aa703568d67c04226e0b682cc613608ddf87fc67604ca88749126d699d3a95ab6bc0d7e6de79a4abc320ba8169acf5dab412d57e94c068c3c59750cf4abc015a0c17486324e2d6ccb94a3f13aa813bd5a34e3c41dae9b68889494fd2271975628282d964c16162e2775012a06b27baedd70a090af0e16ac674a50e86f6cd508a241b0b91e48f59cfd05bfd28bb954049173a65efc789d4c4bbdcaa99676e71bb36abb178ef4d357249a21d54c782c694e8152534f3ef9a4be1482ecc68da8786b9fdb04776fc09ad67404305a167c584321023213124ac2ee1b59989754e5ecb1e04c3c8936df7259bc4530f24e248baa043fb8147c838b28434bb8daa61d316119da02562297cabade20b444434a9f2e4ce0c9e15589ae9025196ed48177a47784ad49bb9463c2efccaa66b6c06ea1a1b179e7bd41e7f0e9be754756e5247351fead5b572425f515985fe4c5d778a5fb1a112e14e223f83ec80cc0a876695fe3363098bb9ba9b8ed6ffb06bb8aba15f80157e05c4a52b061489278441ee0009a5be2ccccf628500f66542a3a5e174bbb995a33610815fa57ffb522bf10f25ec6e9cd72721a980b87c71be6f081ca944ab499e89ff7ce9827e5a1c62b712e03cc0205154dc694b2832ad611195c83b8326186e834f7a35b21c16faed5d44d16d5c214adb77c4f21f52b52079e93722456ca20bd244176c9303ed30bd894a4dc947a022efb17aeec9dfdc5fa385903daba62909f3301baf0980d90ddf597ab97bd4280d12410ada4b2af82682ccf4ef67596ca7c86a5242d4ad49c8ff8230f280731d3e151af3bb14694c2026573a6064e6d0902ef627d3b0d0eb652374ab71efa499974ee62b348770b28bd355f93faac5f007a05c16e0d3229d40e98c8231d013ad311d9e0656936c2f017c33b59b621f6bb90106844c2d397d2ca43142f6fcfd00f38bdfbf9c5355359512d42f8ed84c3626b3499fdd67f2f1631402e18a9914a331bb5b25f1d0a02531cf01e4ddd19bdef8e7ac1d928f251e8d2543e294f593538f7bd34d096b06a451c07ef89bbba78614f1c6ec064391b012b34ae55627968de75c99a20095b1a5a87f557ef66083a6c98bc6fa62d814873101bea458cbae5074d5dd21dc927a7df1b4b80945e657e5378f6301cd888af8fcc4800e6b24bf6c5895e6ebc0ecd4044a9ac86cb0f9c554fda2ef397ef27506a15bc932459d732d4add9971f7c1b50f61be0205465d343ca17b623c75163fb9906568f2f4ccfc6815e535a9c6f8e82a80bec0adb062c66a2c0afc18add1388735c124565854176d4b682f9f9a5e256bdb285a6343f531668d6d3f91128c1f97e363fe07c5b2fcd9b91019bc4bd590baeffe29d1da53763c84cc972344ed3615fd34d5245a86895688738eaa86389504a7e5c2ebeae3d7986a37c1ce7e5f1b03af27c5df6236a6a38443e5658c88db0efef40aedf928e36707cd80a5750b30c3fe700d937bbed2365f4ae77e1759229136afc378fe1cbac1b3025a526612060d04840774ea3cdb4e0a503f9b1d7d441734efb83666c2ad7019a8f0531d90635e9dab81d3650040b5154b5a293860608615cd1b4f1fd6fa49076d1c779841210ac2fd6c2a9af27775c67da1b1e74ac79f2d9587e19f719b84b7cac3024f0c86326a479b046214172b2b7355b26584f6e0f593818a3d685d51abd9f6e866d5808e25b1e355961a326bd70c803a0308b142f1ec0ba49e881a93636abed43ac7888583d20913fcc750a06733332c2d1d6f540d26e0f6f0822c5a66242c5cc886bf63cb1a7b608d096f5c2c563f0a1002480cb02d5d37b252e72d9fc105c9822b41f0d3c60b125dd14d43963a6d6a22829eba9b951621184db2469d1de6123e6b5eddf22934f93edf6e3b4f11f8f85d4aa0a2d6f0edd64362f837cac7e4292da571ac4f6bd0af77f7b349a11300ff8fd7026c30cd736c0e704eebfdefa7e5c7ebee9f83cd52d0e4a6ce7d36e1b81683c2266a89e2335dfe92cca26190145504364e42b7351ecd5bc2145247d818b6fd544cd9a45509dc8f6ea8e6d8fa0db12991785f2552d806cd6286c21c40984bd46f71bb2a561ed4316a26a4212d078b7a03d7393c6e504324d9347a1b0f69f9570f0a959ccceb0602c06a97e0e28d039994a665875f7c515b2f3fbf4b6279fa04e6bfb7d409a5fc36a93ccea050dc7fe9de8909331b8aebf73be16b3d1342aafbf64a78fec2015f82d809dd7075efbdfda0df65faff1821dbb8de80d7a5f77d822e2fccc2080fb8f4e10801ab69e47ab71b5e036aafa5dc9ac64ff1252302116ef29b93c4f906b153887074a504f95364cf3e7ba29f1012ead03b19646be6f131d1dd2a447ae4e8a3cf9ecbee064643ee4baf188d0b7eba7e03d54b55e358a955fb7220eadc80b9cd2bab516a5e9b6256b6cf00b4328f189bbae1bc8622c358729a23f41abbfb05ebd20e88723b8b6bc2b8f28973197775f607f4cb548ee7f924acff7710e7dd57dd5afb9ccefe9e01fdc287ff9b3c12b94c88490ed3673dd69e63a4641fc50ff7985c7650dce65cca4f765e075cafc90d3fbc4925b8dcc49ecfa724c5912b8b20ca67704ad091210a8e1419a8183d29b2001bdd10056c49143deab964104d1b283d5deb20d0d65301e7543ba5fd88b87d8fdb7ac7430520fb2ad3810e5f0c69a87420c6901c504b758778b59d57c4c4e248195a7c2ad5a1898081a1b9fdd159c7e73b449c78421b9f96f0615d069530605c5901f134b8f3739aa79b66fcc53c3a22e8d3b01c8b2f8d46951ce8dff3d206e8051085cba7c2ade5d5b117bdd17b08691ebc5c5aa47e36bc7edad64ccf45885fb336a8ab3911d60db07ed4678e64dbb204e600b8096fcd79c61760ddbf5ce0bbcb9276227f803a585a6bc7ba832c8025eb060271d21d79d0680e45a0f53a8536f5b5727528ae2f58ad02334ed9ddd4f5924a415d5e33877fffe93b1e234886ad1a37500b1dc2e9bbb2fa9e5188ce7c94513921a36a38dd0facb1a8e90dbd3e0eb3f3ad8a9c06b633d713f179faf65fb76d59c6a1e87a0d0f120730ca4dd0fa3a0166e668e7aa234b63b37c0a9775fdd08e25cb5048ce7ee63616101a6c5032d026439536b151d8ed14f38c6a1c5cc1047d2109e0bab3508fe2464da49b95b312b9514dcd1bbc380c836c4069f6aba0ba3e64abbbcbb3e3808c8b9e4792ace19b558ac657dd56d1a158410f547bb9e6c0fd2647c24edfb14a6d13c3f45d142133ad89e54877f6011930ce207b7e58af238bc0629234ff1be11911f06204105707500f2a8a505133b8ea0bfb5ab5825481ddac454b408949392dd9f4956c9b6b8106375c6fda0ad726892205d564d63397c457cfd7cec6ad3249b18b8982d620c4046d8f242d0036e4d4ed9ec69ff3d2c636c53c756c8f1511c6b699f294309b11f24e2fc95ca9bc4018dc66c379aa11e658642bd0545f7824aedd3457b49d02c4be8c6cf834996bc3623aa7dd4db29ce481c0d2ca71fa523229acfeff9f573fe71190869e5f629a4d3d3e356a610126e17172b6671bf88e88facbe4a39b69797962d835ab40e5628b9eb792484dc3fcb64679275b3806665afc0b4b6053186bfea5e64d9ff359608f61ac128f197b5942d5ca609223ce8e18c753203252131f6db8b7b1ee19fd371ef1a4b2a9e3270f5a55226c0751ebe0deef10b54367841c9939ca8d18df825b0bedd0f2030a6815f72af0f6dda5f2ad1d64ed5a432aae284716f00d1fb769a2fae007b6000daf681ce0ae0aa3fd53dc370686d12103d061944bcbaceb626e1beba42fd2049a15b568e6035e04505434329806d17269aea82c3aea86b3b3394ef4861bc055295ea26f90ca6d2aa65e3aff3f28b55061a97e71d9f7a51cb5c08f0888aa853c6f6e23405659a6ab503c4d26f5e3f141f30df7dce0546417ca9ebef9f24fbc8540b5370e2bd45c24805a188fc19b549a7ce83c530b08b2eedd513da18ad47989e435284b5c91621e2a8edb03262a3144fe1111041efab9e8abbef311db09ceeb3e3fcbe0f31d9123c25ee1fc1d9858ecd1ae14b83abf80101dbb41af8bdd9092312555b8026eef0b8862a01be5af651f88ce5f6bd94508319dffa4be0857d8b362e993d48524240e6b8320994122ea6d1e54042e4575590487bcfab53ccc80c2938b567db5f626319ebd9f2a7e6a73019bb110d46b275a33cb4270c1c19614ec64a9709c4f81a8322841072f8b48c2492093bd0f49f533646a23ccfea5c3addaca570515079d8672686a257aa7d24742e59e96eb18db24cfcdc47d3229409847483fac4549e77598b5e73ac7ea1aaa18d0d9b56b25cc5de517546fdf7430b5d1a90283ad71ed24b1eac105f232f463fb5ca8a2edff2d0005b6d7d088cbc8b640b4ce32c879f9b642d69029628417d60a4d4320fd3da414a6d4d90ba414fefdc3584e68d1aba550ecd1a0b9a1d8aeefcd961ce0bf58a36785815ab06fdb0838b7df8b93c590c9167acca666072b3a04c52f5e9177625f3713670e20c58415e5c9c6e3422aef9ae9defb26ed5a10521571b9d39798cf7a1298ed9b471ce4327cda79dc2caa699a0af9e172dc234e45d2729016e2c3df9b97690b809dd67babb3e4704ec46002c549c8259340605289af792924171b4fd11642b38857c831978d335097e4b05b464ea1b4a18c7298c7ed45e4b811448feb20ac95648e006a13b70ed1295117e3caafd1b8e414a7423080c829a3a064ace8b14893870209827daf74e4e59471960d55b94988817048a212ab9d666260895ecf37c686cc14b6b847e926f2608e6b68e34287df7e01841b55e190ab41965d800368eed4d82f85f513296a978352d517e14381211c150cb16fe2f3e0d875211ccfd5864de6a7fd4cd60657a02bd065875f3c5a78a7802a2acd268d17d0b45edc1f225632fd796e287b610ba6ed4abde8b809c8f16c2bb182972bd961037eb6c359d8ed7ebdc9375740fb564b8e6818f45be83d27e892cd040e43bcbe56acd589871252997d70a194fb0e2128143e44df3b48fd85406af3aaace1f4d7f932785bbe5f7e8decb06dfe1b6443436f304f9207f536f63a6129e486764fa12f955006df0f38f3bf85c79aca851ea161c47ee44f77b4c76c66e697c61f52922a09e04a07c71b543482aae2c82afccbe620c1f6fe522b3750a76d721c85df0c656349560d86c676bffbceb2afae605c437b3bedfff7ac85ee0ba589b690567c9ed2d0349cd2eecd8aa1d3465d166643a13e57e10b4a3f32b41f62febc0bd52f99de12b0001b8fd5db80a9beb6cb8af21e2cb6eec5264dfbc72202170d0b682aeeb66a2bc79ce4a8a5628c4053b45e73b26f689b246c4668e6d80cbce313fa3ca6127cb5c1b3ddb4bfe93dc904b50fd766a26d65007d5c5e16f1dc3579ceac468c6815218a542bd34148572f4d85bf0915cd675d249c82535397bd84aa931fa2af455c150a32972b597c2feaa4b1131d1a9474415f24f812c4e9cadea1db97bd65663a083d45f5920dae87eb20407048af73f8d050e14aa60942e80e3d29abe189cbb2278f65b570e92b8cd084fdf74472b9f26381f33443e61166579ad41f4b190c7d975f4945be4beb68c6d02a614bbed7437700c12d9fce7bef0cc5ea7f0975a5e406aff3827e3ab0f813852ac268d98ea962d14366240a5718866a4b95eb99fe4bb5564149d1df29b56972e650747d565e97b93b42d6c88ce13362cb248ab8e157e0a3c97e09f440d33ec30acdb497a1e17f184f6ee4bc380027fcacb00eb721cb4417658dd1c148a31fe8070fde8dc438bf95cd61f598f217465ede87a275bb830814bffe3e4752981b53401124374b5302b36a3c52edeb226ff8b692517681f4c99fdceb868d655ab6683cdf3f5324e9f0bf7847c8ac84b68f22e2342a4d5aea1a3d83e9fd9af629642aeb0426b56d61ea012c6b4ab760d3811702d7c50fb3c70bdd1ca47c4abde261fd2d445c5a0797d9794f2339c00f8899f674639db080e8f61c5f4cba86b55ef9939f621ec7522794dba3842b17d4fb99134bce89894cf5ede381dd8f95d4096314f0e1a0c09c275fdc39eeec20a92e2d5c5618922fd9964f904b2b294477c69a06dc7c0efaf88cfd3a2bd8305c99cb3fb3de149d10b8573309450282ab9d6d7144f144b3c65d0d76559fd2c3223a155cafd0c29705fdeaf40d9eb2feaca74720dd72f058c16c42c7430401b7ad4549ba558750612bb6f7016d31b1532f3345900a979bab41da40fc37b90ac55d65a6bb1b111e5844e30a46a2e8a1211ace1e8ccde63a21d2f2561049e198fb2c6c93f9e55983b5318053156d96a4386af74d080c1e059af79e3aadc8e7ded0f076416fc184bc45a3f19d14812d0842d84f4f070e4c939b191adff2d9cbbbdbacfe001fb57c2be8d5dfb8b9025cf376764d935adaedff52881a8d3d08e25a9db5306d1ab82b288a75a35747a9eb96a7110deb4bfcb97f0bfd925c14eb3aa6b5d4d2d5fe44557f77e7d618e828f2bca765bf861991bd720d08d4f54bdd8393716996ba4038242ce29d84eab979bae52ccf419a805542a2147978aac7910c8a4d17a5b44d978347a6a0f29e34cee560f2deb4804059897ca94b6b8d2bb8a6ac7535883aebd614992241af074e683a4d516a2c58e836219f7ddf268ee4fad9671a74be8ac8c511f6aab7c5100bfda918df8f63422d9a08ba8c0a7a02d9b50404852490b3cbb0cd88c055f2ff2ca7fb6b4db80c5cfc358d4c51a3b6c16eadfa2e22fbc61b50852669d88aad507008b77a56313892587088b35af213a621b643b9efec4cb1e73f17d91f187a7014fcd0b7622e43ff4dfbf022144b11c30c1bc6d7211419818da618bdc8552053cb9edbe250c4ecd801a53e157ff090e5a19a9505693d6c52cee5be9ea68393110f5e85eea54b3d078cec35e19bb3fd04d755f5a4ceac6ae9e8fd5492fcc9694a796a330001098bb6cdb3fe6270323eeb00ea4fb9c9058002a481d42e28df667ece1d360d5cd08cda6ca92c8fa97c738ae7ce76a9777a93e698824757f3ac06f0e0c6d9a92c24b3eb7789223d5656fa09aceecc8e81a68c5acc39e9dca078c9704110ac23ba34ef0b1624ffc5345d89c5827cbb3d4a5dbd359da63feaafee4225b98809959ababb10ade4320a34328d11036e4a999eed8a6726722257553ebca814a4f6990dbe2f3d8afbdc20ee462fb2e691a17e342508d9a0db748d30b7320293682e1ba9f46889b1cec111ad137c523e375e7bea81d54be2efeff8873d9d48f79fa2f63bb77f8e68719bbae05de895e79dd15d2f9b584a5096aacf0ea226a018b7d530ed79820aa855e6904975d3be6ff7718e4898c4fdb3aeee160dd604ef4ba5597ec84792fbbbde0a8fd5352862006c6dbed899c2784cb9eb42830841b59742f01ef13138677f42bd3d218f5bd6a84040e77c37d83805df8c70feb0a96783ad71d03e821d2dc07282532e7dda97651e0cdd529f0be3ead7e15fdc78961a3567cb1c78dd5305ac18af5b9fb6eafe33d4a8b909e22c352777f3fefd0fccdd34c3121fde34ad62e3a401cff2f14bb1ac931205515b339540d3afe0864c7c23756aa75f3761e43c640896e6f7d493483b791a025f4f59b122ee25bfa74b6d7d5e8b5ec903e815148f0b148b6e129bb84237b0c50e394a999e9f59dd254437ec4f372a21b3e433b0a248b608f3e72a688c1510c2dc321aa0f7c397b12da34c5aec22d48969d397ca0469e8787d20e10482613a975666468d0018f6f69790710775d35ecac863bc24f0807927fbd5acdd4b323b4fa3f32421d62caf26317d56133d0451d5faf0782e6177043e3f9d48dd19a4bbbf079f6566d4b96f64011288facb9d0b16d1a0c761de50eca064298fd9e5c99812bbec0bd45d2b66c1fa940488499f160ed174b29cb0280e3081b621312e434934fb987de8650037036ad45bcfdd3e43495dff1c9e24bd2c94402f7c39efec6f9ac7087c1d7db8bec714689166cfc96787528da5dd0800ce81ccdc0b3724976f8ee6a270abe0583184439ed07f480aef03eface83c65292a7817275f2c23142923a1d23f8c488a84c188b5a02932bf8a50341958e88e5b56583be2455183caec08291a8834259429d72af04b2c5c371d5b199eaebab0ee203e68616f83e4c5ccfd853637e9c0f2a6ebb49bdc2077248aac57c761f93dc3df2220e717b7faebb4d1f23ad70fe69a7ec19551c5ff0bcbfa656dda5d29eaff9ddbdc3284b0a74de41a8b320b29cdf102617092a1df6f6b76c8914f7cb3e15b826bbd9744393be1d160dc8eb552c76731a27168d41dafbb661152a5a7e3b291510d18601f440a77dd93fecad6901d7979b2168c12044a4b6d34ac430b73d448708b6e72db1140676824ceea18f596876e770269b8c27bfbeb5512a8f1560e7c516d2729a1a3d17074717a5e7217fdf26e621ae05bfa432adbb890ca3fdf3963e649410d6d9a3da107612500d91cb535e1b231892192d84fad0c6751f651819a9962065e3b4b4b90846a76c5cae2cb4cdf5c90c061708f36ac198326821b88cc7b5dc9aabd57cfb8413a0998ebe5184a1cec565c4b95bea6cbab18739897459c523606142a45b8ad3defebfc66d9e02b911042a8e4fe28c27588bf4b25f0f2e25e6c604b52534ab651ca83ed276e44dc5a0bf67a2f71facec3a3d1f8176bcc1abd59bc26551ab784958a5cf01814934605cb2dc1dae43a8d08a8448d08768f7b559476563819dcb0969619d62409094e1ca2f2921635f409c05fd353d731f46e8646ac48a0e665590c2822c4e02f0995179387942ee59eae65893a726bcd8b08ac52939dfc0f54e4f15bd7ddd4758b576b98a9f3d9912722bd8a9ce78da0687c7d76d70ab63f9983b41f0b5291d158a10423cb49b33d60f1417851182f2a2b6679eff9c9836637085369856644fd8e4a5bd0dfa421f83d18d876dbfd7421c444de634943a470de5f48bd8f44c3e3299bb4a79807e4d52898eff5150d958623cef2390b6fff9aa2ca47ca315e1d2701d6bddf760783de3bc69f28b4e66910455adf03a5f7dda21ef5ec82b91933ca709314f8b9ca59dfe3b2174c29b2d6510ac886f197507bafa018b73f420bcfa06a6b31b5a07dea5930e6a272ab80fd6bd9b8e96453470b0dc80369df8284c84fa7b13b33d080e0f7fa2d16e95366d0db45caaddfa251d1fbb0e4e3e6c1d87362916981a03eef49887ecf18db2629819639b31c26ffc3bac4c1693183979ef198ba4c9e27bf52ca22fc74650a29cdff21be66402caff0e1864b4808a401bc3ff27074e920d71862a851ed8406b783bc66480fc2c74a1aa515f8ac2c61885a6125d57c5513c4a20385f36b073b9e94f97728778db5213720227f5c72a1b4e4557ef65307946fe7670144cc4c53f26a48dad40cb7a4a46919d47967385d852e037233bbf37d0c04c15d501d6517ca088942e87fd2aeb999793933e6358db5b6278f4d1c9d85714c97d37a2624ede44d1a09c61bd8fcd2f82df1d3e267854620dbfc616b1374215dd1b02dcaa15620bec8217460b2e04e8a6c11dccaf05a4c2081ec20305e79476221d6db6c4380662978019444c6576e1021cd9addea26f520ee50261b30c4eea6af5c83badd0da357ef0f789ec17c8edb2dbb10e9436a3c563559c6a7dad135e31db3fbb24a7d3f02cbf02fca9d48df9a17347a3682f9ca2d0d161482945de26b9d150934d502271af70a3db50e3e6b4d786d4681c3c9665e1cbce6515522d766bd35504bdd447186d3b0cd6d420f096291fd5dfa0c123562b9ee2e264a4926b015c5398225c459a4e7b036586128c0ab1f49c71c8ca674ad1ceb228f77c049206280361b7c3464a7cfcfe2cfc6ccf4e2fc312571b299699edd1aa0143055dc4e144c6594fb20af3ce0632f7f519e4de626c1c465f3862e1c378259504633e6afb063715f686664c4258b5149be7b6f7432571057322f442ee3d0aa7d9dba56f109d55ea2bc34504a0883477d296ee9aad840101a74465f71bfc2118a6f8d8869b36fa3d997159264adf2cb7ec4ea91da709741048f7236471e1f60ce9d0fd118c8ba5294551c3031e79963af946ce23bb49aff97c413c18677a300149d36296e30cb23f8e391140695edc5ec0993199cae304e9270d423fab7e1981ed2c3e14f7a622ef05fa237e2e8657146fd0adef5b4adbf03dcad60b29023a4ef8680bf77f484eafa14dbd466e314894ea4f53c6fdebfdf2fe373e4c5655507376efab75eb11b624cd75edcf3ede2ec24586e0c0d60507a035e41c4cb7859987ba92df082a6351c0654140817d107817e0735a13600725251f4712f92e9784da2d35f7b2704ce6879109e5709e02133a8ec69f31a658b4716c44c76f00c274818fa2691ea0a1f3c55f08ad6c2c1ec62bc501af51bb611d55f3472c3420a50f94abf05c615a356ffe1ce1447b9a05e82b0f186e40945d7be31f26ace305ff0bf4c36723a7824635b07d5b508a7ae473037dd2f846e04a401178787b4d310c3d711d2e700067acb1bda28c5b93d8b75d5a2d410c6deb819da989f6983db6ed8915df59a4162c43ca7c623db33af12e5d18e083779a82f044b23bb1b71e22619221119a660a63bf94afd97953b45e1b396887dc39dde952c06630c59b28cb3d28ef1ce4aac6edfdfdff2350d5328b13f3274070c3299bb6f369e19e04d7b0dfee40c73425b2dd2154e96e5a60b83b64ba1ed0a8b9feea8e67632c1fb5e1ba1311a7d99b58da8bf120ba374a2b27d25e422ef73c59ec26e72f01f0785421b0a46c7d76a5fa0abeb1b96111f2cbdfc19be06370535207913b99af8d09e25d47a98e28db16ebfd3d98a502e81fd3eef7cd56f690d0ca0979bcd73a72bd50782cfe9e9e78b261b194d307101494419858e3b0d50f8aae7c513835db011d702a33551f2bc1dafb857247fc7df3a795136c9a2033522268e155d4a0d045846c4e963ffdf46a2ead8939b401f38ef45832f8df024c7511a06d3ab665813cafa55095548da68d686d8317f542abbcfd1503c66ed32ef6c0ee9f3972c72a65aea96fddac31a22567a181183e9810e3c7b3bb73deeb017ee7c325e8b98ad31bdbbe6ccd0c5d1d2954b64658d3e6b478e03a2a884d2b3c635dda127d3f91115db25c9ad833266dab4535391cfd5d6c89ced7f85221ea37a817a4a59ca1bc6e46340e1b8b8c19c917c03933b2da961678218a346bb38dc53c68e7cc55e0271c6a46142705f51c3adfdb6cdbd0021bd142bc6e57954ea550504ec6d5be99201c7498cd4406d0c0ad1634469466ae4f2a4179beab37520e82c93ab8ac971550f7910f94ed95e60ad3410b8192ef9051ccf3aa4b415d2d08542d1a5d8fcb84b59ca4984a511077edf24157c2535c8f0d0c327012dc27d85c57fd0a3f39394c61357d39a46ce3fcc26a92109c955f3c0c679870e14b2f4f8b68e2465abc8f5656eb580e812c563cdd891e108e5893d33ef71e1295506778821de3c45b23747cb7e5f2ace3c9250565e3f0b211b241336d042cb1d548efd0e4a1157621426b86b9b1c3f22483eb0d05d982e41e8d15c784bdecc0220da33da3968352d97004c3018f342b056ebb915657ebdb9ea9aa663df1df7a31e1e1ce9a16ce1b3273a90cb70a6cecc251ac231ea4e3271707587650370d93cff0a3e9e3852bce6fa8c5e449a75f04ed15ada739c6373fa69064e698036a8e9eee683e66988516010a2ffef48399eb6ea1647eb3ec2d19c37bafea35ed3d0e747634299fdfb4f7daab1a5717b47fa3a424df71c48095eb4869c18a028bcd952d76442cea4ef9e04e2d0e3ac0a6341a49812468dbc8d4218399828064ceacfda3519c4a56812b08531e02d319d216e2cc28533d0b9823621fe9052e591c9073a2caaefa5cc1ccefda82e634cf95c51031c9fdbb04cb5d802695009ba5812a1ecce13e07317da743c539d0d7ae2aad5c8660385b40caffa3778e0648c11c2acdca5131f55788504d48a30c6808fb03cec8365a449ce340a279740399e2e5fd96fd4ffbe1457bb17323878decff6c2827c4c67441af9fd6900c1e2b823e1f89649bd591fc3bbd002e79c08ff6db8f4de6123f83b10b199468ec37ba7195892174f337ca237fbf2ccf8b726ead463a63b1f6fff6a4f513001b15cdb30fa100f9bd734722a70d8fb6b887f1dfbef7b01e96bbb2fc716946425aadd636802f51a485bb6614e429bebaee05bacd04baf99056288df748d96a58c47ef6686140795e683d5d3ab35a00066ee762e08d8ea0043db50cf5c2619c1de78ad03b7d3a6364e7403c59c10feaa3d636cf494825eb0b3380b165c87652a1f72f68506eb326e72060ed2d0d113d9243af7bada4d09565f425dd745816065bdb963292f1085ca7bdbdb774ad32f9d3b121e1f03b1e60e02aee59a2b149a31ff9cd4e2292ee0109dc3840dae3a2f8a3ed780964538bb53be5f07ebaa7ca6ab787c1c1041ae84b2cd189365f55ec67adc13a072c126fc89915582ebc11b3200a546caaa8b64f986ece62126b652e4584a86d92a5c1919ea8d3f2f24023f5d40f9b8ae0e4d5b6d10f134ee57cdc25bcbe3ed28fea9bfb77dca842ebb1c92b67abb514c505d6e9aa5696fdb7922ce839b9dde706f0edcd8363e1c4d3369068d3c50ddb03ed731363783999c9b3d78a50e764c67b3d3506c7fc57790066543213c2bbae5517c5ef7a58122d271ddf8c2bc0a88814fe87b4d534db1291ac5e31fbdbc0a7b07353a2760ad04e3766cb83e66305df06b4be2badd95003e42cb6757b5be6bccc131a3b05153a0f750fd45f54d857f12634ffd8883bdcaf4a6cc27e1bd58795ba70d0036015755bd614bd1545eab67985d0ae1f42801b5f2f611a6f4ac8bab9daf60a7b9db01fbae8a0e44a1c752ac3ff571f2072612c6b1ec4955bf805f517deafbc14bd15fce8d4f73ddc9c7c05baf142af37a1ebb40a69beed946dd465631dcc02b6cafd899a4196b50bb2a3519488207406f449d366defb1d5401e2977c0156b673e597f31b8d3e5e140a476528a6cc00e4d6688c244b36cee6d3f6417a6c411d5cb81f3802ec85da85d200f03cd0cdaccb72bd2b66c366b7d788bbe0c82942e4dc8817c82ed3508e21f57261ec2f1817e38746de818a530071d473114d6cd5bfe0c524552449f06f86fed1427902be9f770ac14d97614d4815727734c5c7926e4acb9768d6e8ae5b432d119e889f65b9ba9fb912f9de93f083649ca28b742a053d13c86d1e5c8ddf6654721bf63c34f885834b6da565b7bb9f88cba2450268e33f29c4e6a4ec2a2c43732d9e93af6965083877c68fbaae4390a02429804eb30ea0fe5520fd8f2d82bbd8b89022de32a8a94e547f3e625b07daf8c10b03dac76b4367f4e13bbda75fdc41cf3f7f443950157dd15558fbd050ecd81694fc8d989fe5e05f1d723ed0511db91d0d34ad0dd7f4e6dfae0514e6b7a918281e26d7b23ed3806086daba013c55e899d937ba28913830def849766a24681dec53ac0c9e76656434fd73452f20a828beec66b320c2882f7f39217c9e1bfb8ae4e886030f456e52f68866c86bb3e5a44b6f11849044aa667c0202d626a79dc7ea4fd12429c0f043bbe8022bc1d1a77c52883968530952d2b1b22276834233536ef84faa63e05c505a60af87740f8332013d4207085234708592e9efcffebedbc1f292a2a480504c52f6afe1c641e791eb178f0be6f03b61cd752c9ae11744c3c9e42a51e01fb8f304a51a49dcb7ef1f89a7284ac66180ff8ab089ab82869744321ddd078c656ec932b30b5f6069b5f8d30a2832a23a133afcb13af1dda188396dff20ad6256e1c202da97668b372d57a89ca30ade4ee5a6a78dd0f57c70c34bb0d6f4aa6e6d51211a76e2230db851e2f39a14c7f3de9b24628f23c17dcc02e78b87355f4f63d5b80a243a3051ac918100c4a029b59f00959a993744e91020ca4b603aa19b3a55c30cc59351ded15aca7c0b8190fe8374f513ba5736e463a700005928236091668cd71d84637cb331862c3a78219ccaf13283070f4625e2d1882412a12fbee4872a99250368a2cc561d1db6b018dbcd934d442dade7b6fb9b794524a198d0bd209f809e063d0c421d5d8d358223871cff33c92c4188643083b2fa4d1de6b2efabe203be2430c4c4e2f44a92001a83054de7081aa31a48ed3951c0a6460b0b386cb066a4f3986a8fac1861aac4da3b50abdc5f35e6b1525e2a0a902244e0d0baacabb5bb4c849130407263354b424b913c5c56994085c6cb0d25223c019c04f0f2c5864e00125a54d8ca4a91c9526b95a0e5667f48ddac1c43d2f48cc505173b313040f1b4e593de0fc58810a942c7204324c4cfd1cefb870e2e49849aa41089733749a386993c58212181e494280b5e2da751db6de66127ea69fa75be872a735d347c2ec49eeae8b02b20286754c14f701a90191c2fb7e1e6acd75f5066bb54cc9094143091163ab010b171da8742c408a40d1d021841b2dfbe29c8c2a881c50ea81cc0d22b44921090dfb4063638614e88c9962a37429219bd0dd2c39b47e18a7d099e20489901e57c054a1f1612a05448a4491426f0b5e427879e9b1476003881adc13346568a0e1271cdcf0184263470833ec8dea8c98bb9c7306a20b0e1108c718e311638c71c6a3d1540abe9ffad29a51da2a52b48cf981640c092c7820070edc95ab3b5868b8587c98c06329aac6d20f2eb46e096e88374348487a534d3264c86024f78a065ba0aed8e87872a3536b0d3b4ca81ce1f1839d1d3c7ca727cb0b839573182b392b9860cc0a5ecaaca1b1a4c60ae20f2a08a162c3ce1c1c55b5d627af0a3ce83023430a3b9caed45448c011168cb0e9c1863a69ea57412138b2b8b5c6a0c61877426678543ccff3c8a51f8060fc318ca196cc744b6a60413459312105716a57346c4394255234cc60520686616494dc7950605bc008f1f1f46b053a3890bcc9c1051dac3820ce0a3fa8c932c78530b02839e75ce569d422e23950a4aca86941062629504372fc50064703c9ae5384640db941e646c9571ec6184a840f194235a51f39e119cf88554e61851709777c680f6472ac912167436e04ba4684186410b2e44a1c39bb5bc141cd890560501093e305204ed83cd199a3644c1b1f760082061818c028a19a9d77a54dce57cc8094ca95a99e1d39841e28d4c0e4234e8c15d868318186326d68009373ce3967edc64b1518112b32ce883252f0f01417b22481413923a2072b3b6b6ab0c1481c2064caa47132429b293bcb8d0ce5753be79c73ce7bc3faae15638c310c638c31c6b0925317c09cc15072f7e6ec79b55659628549ce2ff05e10b4a2d455af4af1f2c6d58a2142992a435c0921c7173a36e658a570020e4972b8ca32b0843a875ebc742f74d7c3b70a4ecefbde6010733880d4931aecb4e901c49320283812078d0c186a53387832dc1b458794100bcfb83c634e181f23b0a066098b1dce78a162c3902d406e3c057dd85a21376e0435951b16e3344ac70fdeb70b178a2b8e8d3524b8b171e34211419918a47cd8d171c298213f647079218719c2dc273182fc8061465613d40ca5b2d65a31c618634cc4a90b43523024862723d45a9fdc729df0aac305189494b1a1a30714ad82f17264c60828e0b0718294872f0a4094805078a6a6c248f9b8997112c4d08f242f306962e68d99206382dca72aae2daea5a50d3601927301d9814407e624d580c30e69e250652084a9324b9044ddc052c23a44e44c81e07edb11eac81d04ce0b0c9244dc4d1bd6f73e3307e37bc20f24af0d88b1f2b1a68a550f4a9808c902a747921276b84edd0f1550886008a517848892344749cc15d50f2d604a506206e665d12b8a750527eb870d19dfd537e79cb3fd34132a3ce36762a436bef06df0030b608c8c400353932c519c10b973a3a6a60b116942112a9e8b549d157053044a9c1c6f7864c560bac1851f4468d8a94283d7bdb76f8685a1f9b6eb881e73baa5880eb00e53f6d4608c31188c31f6e1340a8795263c56cf3ccff37227c38c9e1a4220c6900ca9524085867722236d2687d5033f4de513b7d63ac3bc257c08961e2e5d78b8c025e9668486657c7133e48e8d252d7262b1214f3a268a8385437af00efb6c23f718b9c273ceb946de28223bc0fc7a69d7d0caf933121601e23d4d3b9c73ce39e79cbb2ee79c73ce391ebcefa7f01b0106bcb5d6575f253bf08eea894719373804e114040f5ab786ce15392998a28402adbb1e1e33d551922809efb88c11332285233dd440678d153939462c89d931c3ed061a1f63b06009bf20964908289311066bcd9de7cdd1e7e7d07c33e2f73ceffbcebc1e3e6159ac3a72842c777a3c182cd44fe4e2542a0b99cf7a382e92f2043df4a0e68a2d4e1c203090e36146d20c544d3ac0f0686dd03eec2443a22459e922e3875b02095f724c098207366f84fc0756ad3ddce15862cd2dda53c36e130e261b054a569c8050e1c712311a8829b266cd9517c40441eb320671fca813b503abeb765ce910c01ea3a93a0ffbc8598978bdcef33c8fa90b62470e7397bd302b2bcb8d3783c88d0748121130123b48d800f110e3f606c90d4ac47001c2eac808726ed08061410a19219ed714f71af990b39747205213a388e470610d134284a8215938d602045efda003a446168c1cb2546bee5e2626293d4c52af1d820461a2238352949a114d0939253db2d4709273661ac2f30f2de7bc99d28494c9872fa4556b3a20a610a28a44190162cdbd46da7881b54173e2c793199ad480a6ca121d1a608a61ca0fb51b4d5d8ab4d911b619621425490a1c2c3f989c9cd07218aa28373c91631342081c74fce42ee7360ce434aa0d0dde77a7a532e1b2ed2c11123c2143435a30a14d9d14dcc86043c344b28ca0c30b479a38ad19a2062aab61a1e7841e5b8a286122c4966606aa214e70c4b0a6858c83916a44f0e10ad9c085a42b222690203586061184aa851c78f0f0c6c8b9a91614c05cb06131dae1aedc23741dcc9e0f060c987b06d3d9f96af19a978b5672ddcddead92ad96bcc8252f9d155549bbfcc059c9aa4282102c4566c8b892023665aab82979e0f86379fb74b9ebbaae277739e71ce485169902e4c8226323d3e48986cf3c5d89d346488dac219b96b99ba765076975b9ebbaceaa06c71fc33993181f79e1d718679cefadf2ca5c0e3568726c8670c1602d1b117cac0b6e5a6be6c0806c794525f131a20c9d20a8d4b1d3450421363044093362f02246aac61a1a7ad834f5801b34b35a9c46adb1a28be01f4ea39080e93c8ce4091399ee042b1e92165a3be79c73cef92a23b1dd9c73ce39e79c73ce19773aaa842d7ce434aa0428de771806cb0b1806b68715ee0f1ba38a961e4de49480c456c5de1f2ca4d192034a0c414208a37150d9c31886f1c730c6d82b4f231e66e0f73e79a7aa5c1f48bc133c1b37e2d8592185393618a9522105147c9801450a88d7799dd75135373ba595a3780862859609220c5697a99b0e38f4205323499b313db40ca143821026706638d34489954b028d61cb8d14a48c40a649078d3e0d8105a2d6faa40b88cb874bc9a5e45aaa4f757d528bb5627ae82c0a6caa5522e62a4ede1588fbafabec5cede1365984bad738e3c20488e4d67a4d0d46cceef5970f0131fd2499c6ce8f22b9b53ea326d6bdaea221cad322b9b526b38444f75ae727c94b45430d716badbfe430f402992fb1ee35992c301d577b1887344238e3c20488e4d69a0d0bbcfb10d0755eceb932467e14c9adf50d6564c4bad7624c3f49dac086c41c4f8be4d69a06187cbad743f07831fd2439c6062500e85e2bb93a91dc5acf60a7a87b7d44e7987e929401cd50f79a898745726b1d038e0413947d9f242f0c2574af5bd0160c97aa107837c5a5061c78d7bd1639e5524399180b1ea75ccad0a95817bcca55514de1a06e4e4d4bbc5625117090a353d54d7d535350e1c4e9b5d75ea978e0fd9abdd678fdfabde678bde2b5beae4fd637aa9f417d0eea9ba07e75aa5f71f56b15d627e3d28a3f9d3d2c569f197b9224aff6700e33cce0a67b8d332e4c80486eadadc4b0c1ea5e7ff91010d34f926a7ed0a17bbdc61b45726b8d46861b70dcb45a31fd2469860a880fddeb1aa2486eadcbc4d0c4c81c4fc7f493640d30b400a77b7d248be4d65a4c1819bad72de827c91b068c559cee7597b187b9745de7652f40e89071d785cb17117897826e73ca65c8111e72cae54b8d772223920aceda273b3eac3dcff3bc773813112608b73b77ee60715b100d663e79e1c46f55eae179ed276acfd678bfcbd919cdaaaae56c579dd2db1467bd80db92dab383baba9d128ddd3ba53afcbe0db37ba72484539adee41bf1de754a5d0f8f532e6672f090532e66647090532e668ef08e71380772cae5cc94575531b07fdf2b4355748fbd5013f86d59a7ea09fc358a0d5581ab18507ac27eb755aaceaac87bc5793788994b4dd8bf35fbb7e69956085aef58d59997bbb748c5c0cbaade0e3ee80bb298f88dd2a140bb1ed444e783caee774af4c44db203bf45aef411aaa2fbfb75b4ed0e2a1f410cde99dd8d9ab85f6dec8e71fc465113f7bd129ba1e77d2febceb0d40cfc7e77f1eee5c0f0fb6616bfdd539c86aae8bcbff6da3be3f63baec13317402fb09ff92d73ade2308ee7dcf9c0754af6cbbedf3b25dde4b23d2d74e1218d7bbbf0fa1452a25e6f7adf59087eaf492ab3324b6e8eb1d98109f8359978b67a95d2ea790234597c90c08402933550b61d45a4dcc6c481a2d5a7ba8770df991093ee292d93772644695a5f5917aa4ff2cd3ba572716516c9ee5db9af2c69774ac5c19d7dc0ea0d911e6be034a941b30f823b0b81182921c29c30c4163734fb2eec6f50667065f6f973211746fcac44b65a8b434889ba87c5ef87f648e801dee7bfdc726a8f3a51897662ceb5d65acd9e73493914f570b72bebc4f3cec4a7f73bd1addd9a9525d95947c9d88689527608dec674b61a9d8240c9647f0677b6cd9b94813da23cdf1a1805caa65036c571fcd9049fecded9ced309ed3645457129cebff7ce6e8a14a0d98d8cfa796eadcdecdd401476bf35b0898b1376bf4edf75539d978eeacec4bf1d8ef70e8a5727917ea845fae127520d45714bf50d5497c31e5d19f8fd0caef87d08d81fdecd7bb24797ea621d438ae4ce4a1d4f8f96cda6f541c0342d32b155d1af8e96cd1e419dda5756bb24a9f5b881add2843e9b7565f757d80fdc62b1ec51f76e16cbcab14737062150fcd61cdeedceacf66e76e9268af776b63bb372b88d5b2cabdd3b5b4787aab833ef56652b6817b61752cc97e1770dbf46bcd737fc7e067776a736b833a1ef3e07779669383db5a9c8aacfe11ea4f5d3a8a7e01503ef6a97a009fbd67256a653b3aa9ca86e5550b929ac4a559daaee0cd704b574ab4ab56abbaa4a58b7a9d632b8b28a4585a346bbdfda77efe6e2f575b4c0fe970902a6edb7b85bb35396ca56f1126cee048e042ed9af7f99364dbb39ec6dd23ba42ee1b0b37997ea897d5ed97d9ef2afec6ab367aef1b55405e576899ab80f2ad9dd63b35f2cbe9464d7af55c802fbc5afc05e7167fbef87596a098bd32f9c4a2d29e1617d4275cbd513a514a9dd1cb5eabac4ab991d0ae1546a2907c77c77366ebb7f6bf6884a1199e2178699ebfbd01377196a7197293ef1def01bed5881d78b4fc70bbc6c77f6328dee2e5d4ddcb6ca6bbbb2fbe355a200a5ddda95dd0791ec12b6fdfeb914bd598da254abd564f8b84dd7091c3ef554a582d4e15dc45ae2bcc0fb5d0a92c5fb55729deeed42f1fb3ad70cec51175dd8a31e8340188e2da828623c22d55a2bb6657067570695ddbf41c583dfbf42f8bdf7d6a889db29995d0e7bdeefa0d2ee9dad45a7e367b2d09f35308528f74c7c6bfcfe5dba7f6bf7afcdcdeecc8bbb57e6672fd021f460d7f87d4a54bdefb80220549ad7632c7118f4eaaaf3322e61396c1062d0bcef98d23cb343aad85a25617e4ad4b112b739775dd77519a9eb6ad55a6b18af531c5fcb2fbf66af2c34bf7f4b8b53b23bc532e296aa53acede2544ac8089c729b66b73895125233d27a6f92fcd74629b8fe9e4287f4b4afcbeffbf08e13a0b816dad25a71abfb15961e517ad6db9930603c3fd631f8a55809cb859db9b0b2fa55b9dc55a65334458d75226e24dea730f0a9ed7a77fdde7791c5fd4adc955dbd4bee8cdea67b9dee4c3fa57fa1eeec7b4af5cb2bcbbbc4fb75e2d645366fd395d90f7b6cfbfd36552aab57836a663a379accc0293dbb2e86b5b64a789f1275108b834c3b1bd9160964dad9ec356764b76cfbaa9ea87f9bea89fa74ac40877565b502579bb67665f43315980373a01578055a5db3c380794b5756645f2a7b74c7e86a6f9578c76013068ce3cf346a5bb37b4bbc7e17b5e9f74b056211b9978b150370697792bc441758b1fb6bf192dd89f8ed88f8bd17d893be7d220fa91b21104324ba80da1306bde2da9e369ba29dd13652aaa0d82072e38d0fb4fb2218645f2da326ea5b23bc25a444e154adb5c90715eda0dee154a4df63fc9bd131b85aad2683f63dd1f77d064dfca3ea6752ae0991e2bd00fc3b72fbbeef7b8f962d723cd9f30bc3bf0f915a604e5d5485feef5b5485f7df8f5445f7df8b5445feef43aa02fff7205571fffb8faab0ff7d1fda5b2dc5adafd62e8e8f5a7d786fc5435778ef534a69c594526ad6716c4133a6562312beb996df9bfaebbdf752cfab5737345f747fe9afb0fd03125f4998ddf2eead38ae30c48ee20e3fbd6f23a0017e3a01fc977a1eed1fd8af457d1a8e13b8b47e1fbad5c318638c31a6180f99638bfa2f3cb3ff572b7dacad0f9eb9ee3a4abfcc22be160413d48ac5bbc518e72a06b85ef16e6bb5b266af56fcbf7e508b46ad9ef9823e89af2fd6aa82fc4adfa36f8384be6a40e2297d4b02f3aea49593a8b9b105fdcfb43fa214ffcbf263e57ea1d2f541658b2cc7ff297b5e44c9f33ee5ebc315969694538c293d63deebd15f614da1eee9db0b43e4def7d06ccd001f56d2ef292935c15372fa2f4ee9bbca5669a909fa63893fb86259622ba3675a78ff429bfd7af72988bb8e52b3c3e8304418e60bef2370dffb3b96d7fe97d8ca3a8cdf5b35b0415d5331a8d58adf92841521c40694528a293dd399dd04bcab56754dcd6d50d758552bec83d765b15a282108a456353e384cacb5d68b5f9c6e515383c3ec69d68a2f982d39399887053ffc1e3a95e2cedee89eaefefcded0cb5e0fcfcbdc66d72eb3ef56ff6fe4003def1a7e9978278ee606d020e1250646a41b92600eda108309efbe1e00347b0b5859470d8cb8fe4ac03b4a4ddcfa155fefea83c3448abee2b1de12aa82b6e15ab433cae67666842a3dc8e0208346ff13a98a4e45fe1609484e7bf84bf36a527aa28fe0f73b0f103def7725494ddcd7432cc01e1bc665f9c56b02ee69a0c56a55df963d862e5bb6ad050e1c9e63706cd635f544fd15572a57d5271a32e42a23f26324f91f23c9d8932f52d99de4166644727b525c940864682e062f07296f6d7d4aa55620363514a1c198cd1711f60222398d624305779e90dc1b11350c3be324c5bdf5a92e7bd0b4cbe27a0a979cbe645b8d217a6c01c24b992ffc367139410a1a313b240923ee1893034a8d293819bcc4c0c1268810396578d0a87509c0141e717aa0410a14215d56d0d06508191f6e7620d3e59cc68da72608716a4d0ede0580d67532f0d025cd0930e46a46689d1076c2d8c162c209554cd4ec00ee971aaa1e2ed6941a89d5c885e4bf226285917b07ddd7d1852d2de5a118821fa72e5ebfc2be4a105cd91933656ca8a2572d280f7db0421a3f37267746691a37c5f5cfad2ac77fae78725cbfe654cb9429377827b162b7294bbc93fffd6769f79e9a0fd6b703c816b2a9d929eefbcf2d73aa654a12ff38d5224508d242d915604d35cdbe9c6a9992e31dd684e4020457a65f4df60ef7a066e11e54de7db07cb0a809fd53b3500fc4a764ec566d1b7c4e4db0ec00fc6adb2c2835d1691fc2555e45a822ec3eb43484fbf13b89057e8fdd46f34768c716cd4ea2896b120be8eace280d0b28ab1684035a9a0265c9ef40390e54457e079a2a4d3e85c49a4265816e404e5370404d9c67915824d6cf0d28c7cf8d94434de8ff91f203d7af93b8feb971d28e0a5c3f1d49fb65f71004c1ef24168fdd62371f1276ffb9ddb81e5afab971fd4345866ee050d3909221a7a1a721a8212c434b434e40d3c91328514e688282094c62456246624cb1233121b12131223120b1204a96c47cc47e5014fa5be0f835c8ee23a8b8fe3e228beb1f31c62a204904fdf919ad5aad46ab2182f67afd23aeac029248d7d7f068405f56c15e413f6388e74c4813fa245ba6f17c8d4b8b7dcfeb1f91b30a48aac1431bf1247abe86a50dc119693e9f64bbb4f26b64daff0c57cd87468425d2cc4fb2611ad1d7c0b40afe7cfd23e458052425d50069167c92ada39d5fc3d28a7e860bab56a3d5e0a19578fd23a84658b94c6a4f9710963df59f652c0745a1bfa88ce9a028f45b50c646a028f49728633b280afd4465ec0645a1bf82328683a2d06f963111280afd6519ab4151e8ff326683a2d0df530ad5a128f40f954276280afd244aa121280afd234aa13b14857e9e5228088a427fac14a24351e8172a8584a028f4bf4a2120280afd41a5d01c8a423f50194ba228f493658c0645a1ffa714924351e817510afd4051e8f72929454151ecb761b6c7a916297284b0ee8cd2b6d9b5cbec9b9a9d6c99fd47b39f46a01016d71f0423b13e4eb54c71c27dae6c3e6f300eae5fc39ab87e578eaaa0af5f58c8f2a5849ad0ef5293f9d37e3de1da95ebff6ab2a7a60f02b0d49b84dcc65d8e9a66939c6a7942628feaed5b6c066ccd3b89c5f533a0775715d7fa29dd81eb571308eeecf5fa5fb9ab5713cf5ff5983c4d2d8b6b8e260beb657234fd75a537f96ae2fa49ac3bab4d4f89b4f96228f759124c424ad4ed8ddf0f3ba3107698339943d81d0163b5cdd857f608e31472cc4b397e6a14c20e9f560c2c90c175c5804886bef7fb3c6d1275220954d9fdab37e97d7ffdfd94409dd5af663fe29d4ebd36bb002ce09d4e3dc581a468ae280dadd30297792500b1e988f76aab5767f010bb5ae5ec89edec10760e61835a6392bfb64afac3ea7289651883637de3ba8e65227ed6289aad1516df7a95c17bdfe998563996661d63cffbf5eaceaacd7655cfd8f37e59e8fbea55c5aa3eeea773af67aa52949ae3daa967b4d69ad72a38558eedca9e77ceee754c1d638f3c1302f6ec4c26e25f718bdb9e379b95ca9e60ba19bbdeb7b7cfbaa28417b79f87bb7898c54c637b80bdcfb2e78bc3781007abec6ea75cdc0453d8dd3a3ded2bab6fafaeacd6139ca8092a419cac4ef55e2d1b2bc14ef6e8fbfad8893dd25f797ee3ff1edfee8cc7ac4ef69adffabebf3aa9b7fb7b9bf566cfb356277bb4c7af7bff067fc57d953a5f138f13a0649a9041013f20fcd6dff28787adb28b1f8af7bef82392eb433ab618cd6ecb8ebfbf7eff2d3bb9f7e3ddf7f7d6bf3edcafd7efd7aebcd5010ab8fe5bbaca0e2ad7af45fc84a1a278bf4a766aca82b1dcc3b76c6363a81adb7ec7b70ac4ef923540fd5c65e7273b07edceec9be627db8985ede1b512e11e64ee41e65d5727230ba7ab84ebecbb747dd8b3d6c7426c1e1e7389538c0b83dca68a658465b4c2853dca60787d0414204503ac94c51971cfe2eeccc36dfb5853d3b5342255404d581cad5813789cad88cbee6969ba94f267b3e62ad1e902520940bf3e110866e702524facb819051c7fcf3776af80d7efb64a4d55f0b984959bfedd6fb42203a314b7c9bbe3baaea9f04b6cd7122f92e316702a5504aad6710ee7ec91cd357b74e1d4b147d684e2d5eaca1ec9c97ac2b13dc0b896e33c3738bcfed7fa96b566af7b9c4068df35b6185f57fb990ae1a7dcbe6ba9352259af1cdfdaefbaee03f1ad4bc9731509ff8a20908a81d7b9be335d66b73c7cd712bff4de2e7cfa9d8d00355d403cf39a42e077d6ec1adcb76fbfb34fadb5df5d4baeb185eb6dcbd5bd3aa5eed20ec3f5828ad7d529dd2e9c0a41b0a43cb4362ced7bd78260024a95f0fe3deed8e5c35584f78f82e60bfbe3f8ae25fe75ff79949addb5c4bfffc072fbe6f54cfa37a83563dbd136716bed83a3cb473d711f1c5b8ceffd57da17cbd6df4ea94a263c1f56712c5d4af6fcee6dfc30b46f86a2f902fcf1ed03a9187c1fd4617cadffdeb4e08f61680a895f6ffcde700ee7ec7f1f96b95c8b52f1f0c7dfad0fc716e1bf185d218caf3e8c1d9aae16983b2eda8a3b53bc11797a7fc70884df327bed30461304df9638345d40ea89ef6d69df05a46250b3aeb072dcea2a6ef514b71a77715015a76f5ac91e356925da896bfc9e2a87ad6c3b7fc7b95dc24a32864b6194e234fa93fc7d37ced6eeec625199fd93caee57a826aa4ea7946c2970cd288bdbef27c5398e85b3700e5fddd2853d2dd0e55e96e84a688356b5307586a90b159ddc08743803c6460e2e9489612462daf688be550a3b0cca6b1d91fe2b75d92915d7a15856a0f5e38757ec32d032aff8f7a3685e35bb6b1cfffe7e5ec3bfcf1a888fbf8568d27aa2eb5c0c4e47ddc4bfaf230bfd31b88641a97867ba80dc4cab27ece3b2837be70e5f514fd81fcb0cfa733ad207ada50a2951ad3ab4b1d564d1618d15277392a0a1d51a573db489e1c98c9420b4fa9bf4115222fcb42b0f0b4e4b2a80a9b1c609950842b69c7992022c0c84f6435b5220832bebcf69f5447d5a3db1a29ea8bfa29ea02e424a54bd5aa3b410bf50d755a52525f688f28a058bd75e9f7885aab5cbb69655af1d8a31c6955695c21abbd7ab7acd9af4158e3db222c0aa8980833b9b008e84261d606ea0c083561f047716e3461d1da020d1c1c89834b4fa2e369813d230acb4d22b4d5b842822440edeeb0dbc6b7ee964d93bd64ab7d0b9ba818e18dbc3e9163a594cb0e9963439def5963260e83c71ba858e12def5163a5be828f1fa7a0b9d1a35881fb60481868bb70c42064a4d6417c22742f62bef46b5a44fffa4bfe9934631c22bcb2ab180acdde0caecd3a7dc6acf5a6badb5d65a6bed6bcfbeb5148ce779de0677a6f5de24f97f3bade246bccbd6bedd6253061352a2ae9b7816f1301f1166e7c3caf2fb28d9b0aee2c0eceed539c2ef7b75421a666b29a5949add7ec7385bd2cb915ab65d816c21bb7b36251f403ea4cf938f6dbadf29b9d9a30e86f05fa01af4f73b27f6a8eb96823c204d9a4f5e883fdf931721f9f328e8a1d98068b0ef5e0e176cfc1a54a4579b02de164483c1de065444444b44a7e47275cf876b7ff7940099203c79f1227bbed7dad09d3b01b6d6eecc3ad526bb5b274f9b9ee7fde7559c3d12023f06d73d544479a958e121285258164594dd0d56d22d53c4f0b0ee9693e78ddf8fe5378edff77da3f7adcfdeec89ad139eb2a793dabde29cf8f71efd4c0f48eefd0aabf57bd6c9623bc61ee9a72a3ba3348cad54b74e4ab65bcba2b817becf7456715486ff436244498d7f62788da2b3b7e7178e3f37d998e6607c85b597de5678002ac35f6a19df2878ffca84cebe46e1b85ae1187f4d428fc4c7fff875cbec9be7cfd6f714dc093ff6f068f64dfe791aa568993d05af4d15030eea09fcf8ab0d7426e2f1571c26b757719fd9758e8b2829957d5a463b0a1ed63a228d26e6e16115eb0c1bdc3eaed113f68f2c05e17607b721ace1807fe37f789c408fc1f58f8f47a4d1d43dfc5e7a72c0bfaf35fc1ce05fe2d8c32bf867f6ef3fc85c87dea3808335ab82b106c04fcdea952fdee1a778c7ee15872b8e9ab04ef8df3ae1ff3be38052a3dbf4b2325b689f12f5b129f3b06e6b4bbaf685aec9c2f2fb547656a9b0aaac3496ae638f68d4921c4faa3924766a8e871c9c4a898d772de7e4b5cfc6eb5f6aad929de1db4da2d51b86fa817540bf05e53946cb9ac53b8ef83c22e50fed88d0133d1c76d7547c9b6f4724125f47fb209896edcbeea2132fbb8b504e787d110a63b152f6a8c320e2a388b347d7c4f7f18bef335f60f3456dc43946ccb3b232ece7eb8b36126f56f0f5c12ebb875653bb875555f648c4d70fcfd8a3d8d70f73f68889ed6925bebeb0bf7bf1c3b056da5a57da246bb3670eab542e815c760f97445b7e76bc226689754c98a2748c9de19a9555a73a4d7296e02859554d35b220b22338ce616d3e8a845bb4e538becf5311a22d45707cbbb3125f4b98b66665335c83445b8a3cac66f628437d5d658f66e034ca84257de6a90afb95839a0a3f28b5ef14a77f79767ada167cd1977800bceccfefb8067a0028e155dd59091cbcfed78f8f6fcb8edf1d5b56dab3b445a5b55d597d0bca9ad5633455cde2f4fba9c4e9f714f447d3a902f4ca7a47c5e997785b6afed87c9c452d30a9e5f9c9ee748a4a04db035b2249ee4c93a1b2fa37e8363b0eaf3ff0faba0e135e3f1412ebf65e6844d21ea73c24218a8872a1ebba3a24febc87c306b56c5c1698657731cb628c7b44d888a49f13f1b06ed096a26d4667259e3efd1265a532fa3c231285013ecf88043ecf1801fadfdb72888b362b2a5921a4e5414dd4dd432b2e667131ab9afd8b125ad9a37b05c71e8d49634dacf312b32e17b3b69825da78fd19d666bbb32f0a95d5b7a2946589d71778fd2e3611bd3da92d8138aedd48116c61f7b0c6473c1d918882c43ab6f827cdfe9cfca0b26f1ed403f4420f24f4a5cd1e09991de8edf77c8761c4ad19dacc3089850df442dfc31a07fa17421fd6ec69941373a3fdecfeeee256cec82dd65cec795c76235ef9f8c1b83dc5dc953372fb17709be344ae3d06b566ec901c61e337922d184f794311b7e78a76ecf45f97becfebbb1288c7e7b54708c4e03e260c230ef47b7c804f13324d38d08755f4013231c7357a715bbc32452b2be6c0ec2ee6b89813adc42b1735e236e85b230462f051f6f569df32935219f9a7d64526699240238ba10ffa15972c47bc5049795962becb2e02c1eb7f3954f62093acd919c5d1116f47242216f889ca102ac4ed0fff880f47942116fc50f6b4b53b3bbfbed89d657d5dd1d6aecbafec2467313e548825c4d9a3ca79376204c947d4be35228dc0b53bab5476bf33bf4ac6448aa47df888b2722cd65ed08441a5f8f7a059418cc4081b8b954c4a7c08a0d6254a6cbb321159a4817f4a9cc39ef58770d28bb836744d19f6bbf11a2ab13371ea864bf6a848d8648feed72771ca89fdbb63775c1b4b2c839e34e80d7ad617a7ee0cebc046a6f08ffadfc842e4b8464dd4bf434228287d67dfed7e50fa9afdc3edfe4df19ae3f54dd19697d731f6e49acacc16d3701aa56489576e8fbac6b5247b74c5f04aa394d4787d9b54adb556534d499523a725445b8ebcee1123122865cf8ac59e20d4e8228946d1d7a77136793c8946097089d7a761c183f4a9ec7e5149a9cc8212e5b5d6b43616b6065ed95dcce29fad5d70854ded69df9a44f6cc12eb8ca0f7e54e1c75a86d93949c26b1cb9f07867ab4158842238bd19aa00a1b6a53f0063ed923f1eb8350201610074a81e06b2aaa227fc5547738363da0b29da621126d09f26f6c71b9fe93a84458e2ed0334ffba8caffdbeaf7e2dfcb60cf937228d1fd60d8e016fe0130805620171a0143865cffa5d0982b1674da3a9a8a889fa96054865cf5cc2b636d326d9b37e6edad7969dbc185b8c73a55f0b9b63130b2961982900c24af512d1f3210feb8689f815b6ee1ea4b0b63bc5e1ca01efe4fffc2d5bfc8e2d5b53c8c13bbbd7155405a626eebddf69176ebfdea2af235291599386d8457f9af5c99e4545441c9f18d653a1ec5191d92b2f7aeb6ab9e80c0457663d7a041e7d2ffe35fb079917fd0e8b76599fececa2eff5d6a2de7e8505c19dd5dab7ccb1a46179a947431795ddeff4d7b1c5f30c9aecf3c9acde35cf7a9ba23da18a4aca413b9b14cfb2a8eccf8b8ace12f6453f65af2d78fef52246a4d75fa1eebfa7e789f3f90fba9ed3f36a57b926a71b54ee4fa3143e1e0fcfafb027cfbf46a41e9e47e211eabee82b0febbe3ca550679ab566e34539855df4f793cebfe7ebeff79e7fcf7f71bfd64c9e0a7a887c4a88b0e04746020028002289a00b844cc404300e8d38d1fa17cffd4a55b8cc2ffad02b8bca9a747eadd5a46a2b1acf5f61ebf63eacdba8d6ac3ecb7e7ed159f6a23fcf13c507a14051ba8ac4225d64c64623b3e8f517e9076df6e8347bd19f6fbbef67d1eba27fa1bfd6ec193416b566eca20ffffcb1482c2aaafbfcaf14cb6ac3bce86d2f32ab0d346b12ae9d0f8e48a7f745ffe9affb2435acebee7ded11e9f333aeb51302307141000020b3a004510566f9432446c4848280c81f113e3d3cdbd51ac55b16959d4af1a2a25b748bbe939d88f7ef6150297efe2dfb07999f48de6976cccfd75f5454b365d91a56d61556ce09ee690a0b95142ffa4eab8a68d1f793dfa25a0a225ef417e802f0a22fba45e5f7b784fdd90108fcf5bafcf57844827d90f9ebcf8ac56be53fe37fe7eb4f6b6d2d0450a65851391286060e9a85400c407cc902f283ed4a850a126f39723ab2108ac17b0c8e83d4aafd6abfdaaff6e9b8023bd927bf5ff4759f4f74fefd2ffa2bc6c6112d12aea1fdaf92c7f47e7a2a8011f994d0a4080b3e20302814fa939fe7173db5a004510566f9432446c4848280c81f113eb01e9ed776b54631043fed6115a9c1bbb25a75769c55195466ffc6140f21d8c9cec09ef66f46b229a79fa3ecfa9e58c709589e4dd1ac970351136486b249a32af3a1e5498e6b28570a095180e75f6f011ed302facaf48f43ecfc98d4de77e795e9fa29aecc7e0c5a0c5a4fe122c9fba0a5a8046c1776394b3205d1800000008000f315000028100a898442a1304c93188ec60f14800b69b23e5c6a2c9387a3510cc3200682100210320020438051042873a6a6280012374ad1e8ae9e6dc529fdf499bd7884d6c16730f182485bf2a09d7f1066c3f6d31066a3adc82c076a5b6f335bf76e7e4075ba25204b284caea227390fb509f705beb0f53bc758acad0861d661e5e2ef3055d32b57c8f790a952b04778b95249352ad418658175f2e542877ab9e58f9b66ec7e6e06882cfcdf24857abe938467f199a669d0b745bcac1e35061e5be2a7c1f29f6afd9171520c43283f7d6b3372655ee686b3ac06ab7242b83c8dd96743aa64897f93cbb9253f7977bb0d081dece4aea80cc3fb8762703cedd367d7d69b45ebf6170530fca585fdc46c256b6d89ced27548c68d23b097ed9455de22a570abfd831f2fdca58282128b8708fed41e2cf13089ec6651d331b437ac618070f80b0ec01b0bff80f5cd6635dbd4fe4aee09a8a241e4a098ad9cb8afb04b2b2afff7dbd8aea4426c04b4505c23fd66618ada4b47d0b4a2fd00eee35502ff350a0e221637a9af11410579e2a5346e8eb48e519427b11d827e378e819a55094966814eaae1e6bafbdf25b70d56855497ae7fe55fdae836e8be87a84f3cbc648bb2386ed978ef9aa8fcc4452325c436cb0dc585097bba102b4d3c95e05843e8385786cd38c52b94b29b85520e7213a7169e8a58384e6e68b94c51ddac591973bd165841ea67a9a9049cf30d20ac773d7579433513eabe8042d56f91e28162f163eb1b9286fda2ca19fbc1ccbb198f89262f75036804695df1048ee42365ff1e6e4934664794206b060798db0bbf4ab95c58097507a696a0a5ca0a1587657ad1cd19b4ff637cb4bc76139300cdb2751fb4fb09be6d1ec92f28fbd76964d81507510188fe0c0359c22ab743b68b8310537f2bf0750acfad2c3460101818b514afd668ecf8c29a315b9444f448e3cecddb891301019763011188766e7f3a2101a20125a8b45b28e11e329e974f7c4abb945d6d4e9eb3f926645696687502407657f09bcd61b9e355542c3bfa8431357f3d8a69fbb83c1502af5171cb7d0bb16277dcd00b742111ea983d7124e17154401ad8b876ad3a27633c4e98ee49abe6685dbaeec58a9980f1980313174b6ee5286359c13bc68055493a56db01de922b9d8534564242b971c786bcaa7c999852b5c8821c095cf8d6caf7660c7d53c02a4e0d3d4806e5c53247abd5e8fdf2b3c789c34413630bd7280ba045b742e7962f7c472364e70877e4bea1f0349138381ba243e943222107fdb78c3e72ac2bcde887e74a14f4b5d7ac7efaf71982ecccd1deaea342f05326177cfdb66e417938798cf48eec1063eaed62e99c6ee6885740c7a42c917a4745b938a8001fddb99c15952b2f8f665748fc63a22f911abde25bc4968518f0f638f71b0adf210e848aa9bb9ee5b801832e7c23afec2f67489725fcf30339fea4186529555994878fbb4d84e944f03de36de155757a8be4599ecb9ff1ea4c37499969fd3c627335c88ee1b552224256ab3219d81b41020005cb0031d4470f9f361ed4ac77a6a768df0252fc5f18bdf6214c0cd14756623442db1810b761ddbf5a86dffa652d870269503444a4f444a55f016d017003230b8ec61c16fe24f10cb3788294143eb30dc49c474a06c79f2186239a5816e6ad4f46f25990a641040dfd5780c9a9cfbac4a2ce29e29cabe6487af7f4ea8da61ba1b5b16a4b02b440743cb187b4ca867b520d7c2b91a6f37163e914e6d814f528b01226d488fbcb6e43ea23d94da5462d683e32054758d27a47d3f52c489acb27b0abc21269904c5cd7753004b5e21e0700f9903ae7f4761c9c685e0d09bc001a020ee029c532a0a8e8d90d4a927032653c497eba62b6283c3e0675e9ea03dd1c428f9f715b0e3685fb830d6be40d1efe33132241e078b85d5873512bf578d2ebf1c72e203b34cda06c9160029aa5c68ce0dcffe406feaf8af4497c9a398883ed6bf918a86e294e494de7df7da4d0f10e0274dfdb8761cc182bc12fc237b15062f0a0ad453dd2400cd0b6fc0e8b0170c94a099b895ee6f28dbdb9a1af9edec91930ac7a3c44ccf30e8522a8291c4c0b31a43f6aa9c8a316aef1e6117a4fc8115aac2598cea1b856ce9798129ccd19ee3386cecbfa22a56c0f2557e9878863bf041d85cf5d291c2bb74100bd9c0139f4d9a7723d1229724a6df9f6426ca7e458842a610ac80d62dad7487657143f10c512ed737e81d533402f227fbc6c4209d3d035277002ea4beabba6f0b3e3713b0ce76b82de5c23cc84b397c9803c240ad1685a6523793e10b49fac2f19b9f1bb61e86e8a09a3416d0038544a1abdd6a164b26869142f8e367074e33a37526b45199330662cd4c3b0ba394fc2a8500db856a41c1d1093a4d3ab7fe76c02c1ce73fec1d1295af98342a76748bd1050aee3bb18d4523320d403abf2487cc97989c2e57f0223368d11a595fce6bd2b344012c8819cf58f0c8ba4f5fb4f8d60eea542b64f3e4751dc228d5d2f27e5ff44e68c26078bcf1daf633b8a0a65bdbb9f6f4660e87b10721aa9aa9c2967b6e1eb2dab0f541c3c196dd78b4b1d6376e284b900e12b0cf3497b603339d4adf6edb8b4f480108a5565ab6496f492b020c38b25c6245beba92808fe34d311f8d7458b1b3a59f4d179ee98ea40b7e82523d3725b8754033a31d086604663acacd1ebdf3efd9e66e07d798014029608c11c60ff34d5ce7745280cb9458009987beb1ac58659f9b0267781a49e3fc5e47cdc5adfc2f79c079ad39ec57c68cdb96d1c4678d4577237530189cb20be5871789d3f780812e74823efc5599b1dc51329020977340700329542f78c42402acc48e4e20bf586f88635b347acd57b5462bfd7e2ea03c95b778431e9b833cbafa8ad154701c4c0441b75b627c459504f748cc9e44cc9ce2d37b708168fa47978deb1e368d04d61247df688c302d19a9a5c102981c41903d785f04df86484b994356c77f26dad210841a74f8e7b6494b8694edcf57eff30c3de18531414b103f7e41a22cc5c1b6c6f86bdca0d1f097f327718c59ddf01f46e755031e70db8f52556ebd507d1d5e1a9366206c079d4c8d05fb515387161bc41bdbbc95da0be674b6ccc6438ba7f5477a0d199a6c5b5d0e7a149aec9d5c9994c3bdc9a53420b17be64bb3c0dfd1599acd52447f996d0a8b55de803ddfbef05be79599b5a52fd814e716cb4729d68c30de057311f931adf708823d05fe09da9f18b5319c01139ee92f85ab9c2a6c88687870e4a130782282cda577081991f5c1047dc46a56ddd1e34a8d960dc58855d8e411a13344db693936192f0910ea9e0e4f36c7d82613a133afb0ad72616177816932058a07fe7554c966be7bf990ca2f276f8224ca3c593a53c35037bcaddd573f6813eaf0d75c499ec6b77209a403bb3ed349386788bc7afa3a35540038b6d90538899cbb55e9eb366b72d2513f54e4fe5c5485f93bb1bed6bb539a22432eb35ad5189d398391a955ef754a362555f1567d3a3f74bb0fe23b95d2b7cfb41ef90ac5cf702f6de8bfae9d591770be22266c4b797c55224f624789489a977e71a711455e47a403367e1db749cf0e7e7525c92cf74c2cc4808a663641bfbc6ca45c33ab20d315ad278ed409d29bdab3cb5b0a82f62659b12914499a2ebe863423a94e714720ffa9b4c5ba6b58df6cbbd9882ed1e8615965815e51aab3278d190bfe1694943323a6c850982f80c197b973c9959b72c9265cc8f0c8325ffb14585a472c90e33c6eebb64dae0d381e352ca75ebec96e5b243a09413dded0c0900dd8df863a9401f1bb60a79e5c8c172db9a40d26502fe1b824dccf8408188b0fd97473312563fa70d2f432e8e36b6430b33e7e098e1647453d6942c86d2edfeae4695c4719d2c0c9fa695374b800407331780efd177aaa36fcb2b240a05e2942dac7ec8c7b58d2e7caf40627af716f1b49cec3e25c13a555b33238507149f6aace040c0ca7a0c302c5334c1874b5faaf1a9a16f7b293fd07d2e66861019372cc363d0e296a6fe93395ac04a4f7e42f574a2b317d3910acbd67f00adbaaf0fb1208d4fbbbb1f7d14b8b34dc35514c6939483374d68c7192b13455a2cda2fcf2553c6ae5d918dab94413ef43e536bea11f6c4958d44cc994426733ca6c199b4c1fd44e3cd774c37cd411d13349cd99ee8fa664983e0e5e5b3c7e362d0c2adf46445d51867439bffaa960c56c56a8b15bc0a6b8c814b9b2c264a8dfa0e32becb57f10481b9892aaf5c997d77384c92d09626e53e2ec756a0a24ec94a0bfbac883fa15ce72946efa6176ce40f96aac250c6cea8e6237bd837bc1dc19d4817f4136c86a10577e7b78887adc327cc0e943252ced4e46320272868a4d491d8e2c3174079f29cf0c0521c235d8213123706461173fa4b65b3ab9411c75af0225b744e3f45159d997aa4119f93542233930207f1ba201a9c0de3cafbe13e6dfd9b5c3dfe6be5a11e77ed0e6218e6730209d32e54b2fa26d2ed675fd4d116e5e444ecfe65463e6017fe0eba5c7cbc284024a4b3d25b53e314ca60be4262eebd15259e9b2b40521c755e11498bb8d0564a8ec9ac318af3fa19ddb2cb26c5b72d8c3e0290f7e647df45c47eed27c6ebd6788dbdbaeaf74b472e4148c457d3b93107c8bc64094991d3a5786c327b24a301864d49f5088c4a7c12d3b2d6db890048a473fa65ee1cf00c50336306520cd63ecb9eb1e8184e1b0272c2f339222424aac3488956b57206dcec03980caa6bea6a91a8ce17cc89f3bb10f84ca191048d58e3008f311924798088de1609ca3233a8f59896967b579a408612fbc375411e1abacf54d98936a6d96d867e564c7c5f876da79c061271da6ce099ea993163cdf52868bf0d34ad1384033a2994701a7cee92844a7848db4844048497188bbcaad9c4d235269953a366cc38c32221e09707ff464134f87095732821662c826eba32c93db12d16abef0d2c88193ae113fd17b23c88a93a80636ca947860c2cdeaa68a3765a9f3e9ba2665aca9ba5e5cd3a708a45b2434138e976589f2f72343b88cde772017c9e25995086612c7bf220ebbbbc3147e0ab483656d367117546698430cb67cb5f04dc5b3d17acc536a38c3d60789c72564b5be79928763f940da667c14c7dd5e52238aa0f32f259ab49b89e30d0f3d42b20cb40da65c60aedb25099b20f81dd819030fdeecb689f55c708ac03f70bf2cd1ad4896679178bf417c47456045a0f6cac91f5e4879f2eea39d68b29475dc78048f270958acb934ad364d5e9ccafaeaeefa1c556b29ceca79011ecb18d7a76c3e8dcd6f41bfb609bb6db4b915dba5eef7ecaf727fef5e84c77a556a97281fdae727f201e345db4454bc4d945aaaec20988864eb02fe6227982df57c739c48dc6072ff05fd569fd774a43df954fe4efd5f94fbdd173bd91774bf2e7e3a5edf173dfa011fdbb8ad5ef3d9d30edf72f852bcdba22a491ba905a6e3246f2d64b6c104b896df1eccb6708c2c598fa74aed75fd56d219a0e6f1701305e827cf3f1356ab3df8801ea23c70fa2a87fa522e1d4877656c3a740f626d8c9e6924eb8aaa114c8271359fc28e374a46304b80448cce5acb094736f9980b05e83354f9493cb4fb6813402c7a8880a692071bd71466071839b82fe6e815932f55b0a1e164d49d13094fda3df6607d0533a3449fc14e6ab001e4663ee4c5ebb107f6e8746f19c548bd6b2e2244e65c86d76fd61454a917424fce7132c32e1830de379440f7828cf19d01db371440eebe4269b3f950a3101d208863a51f18b66fd0a9f3924b7ef757142f03c08562e977fa67ee9ed41d1cea8c3c93ee310c84406628fb66f8fc20c250bf709c2ed1e0d8a8a16a667215929d315813762e59c549b0d74a5e1f6e4f55c4a76c0cd8e0516b6f57ca76679d24fc45888c2084b77f88ec6531c1877a38b6e5917c38e0f237952328c3a8efb162454d8e532f961906c67d250f3aaf400c1571488d6a3b51e240e26e278c8343b8c47ddf5a38c4586140fa1890da62fcc40626a6009c4ff6735385dd10d7e72b13d631b94044b6fe0b31fbf53d581fb5e5e9696c649cc2cca475a49c67599d5468bd0d8748aeb3612442d2a4f1643a0383812f8a3cd0178d0d30b4b1b4219815851b708e83fcfd4a0ed0375d38b9af01d2c049825deae34cd307f59f9dfb80db50d7b41eb49e026c4160b375268c6ecdbb060a515eba3fedb32a9934b493701a0165f9fd397861df1736f4f7d8c4dc6981aa8b35dc80f1a0f8bf1f293f63abe8e509657aacf64d1ef37f8cf5a1d8a5470f94206c37eff629e99972120da1503abc20883f34d0de38d52506efb4a09526234e08a81f0f9c6e6e315d8fc4345529f05633be03af8d363aa801414142c8b93edd5208810b37149c22113c8c5ab0432efd89df093000b61e2eacf4a20db2a7ba8b0d28a9d9150dd24ef1f5602e96da5e246417d32fe34c3cdd3edf87a8e5908c78b3e7e23f52b412841f8bfa219e8c84e3a9a24607ff0d5d28b318c8002c290e3b850a4bdf4035cfc7be0a3f2b71de5f6079bc3eef6c88413e88d30427b847c1c5956e8a495eb15738c6965ea855d2576c17a46f43e19ac0afadd61ba55c4c86fbec30a1f435ea67b19fdde21c334da70d9033e51eb7b4fc9316e7ac99cd787703905082d89f13fc6036dae6076fa5214355ec8e26b87a92f5fc430ad42eb7b2d0301d2e0caaa81226e6635507a7f640c4c239f35862d2183feda07b802aee7addbdc8e4e2b08c755abcaf1b47acf675f64299378e9c76ce2aa198d9c6e5881132a653430c37cb2321910688b31503946df9ca03386e4ff50e89b8b25541bf5fa6dc8facfa124c6190b1b2b08186677809d5a99a5431e3af6770c49487918f6f5c62f50104096a7b0e1e7040816f829e4fd1f715ee93c41688b02beae0a26079d80e06247b38073d21389f76f52f42121923f1e09603c96c9e5ece07959588a310011d8ccd186e5b158c455a1cee694e9a29cac83bfbbacb699a0f9b0717e7abf89db60912abfcb502621ea5445c51a54c00fc84d3abf5b0d96ad753b2b84c494339b68887a1df16158a81a9ae6ae07db9d11c41e5d2f81539351fedcd53a248be10dbfcfd9746c2c188e0c1caa50b058eb2ff77672360d6046591ea46d35dcc1dbaca7a786c923bcd0ffa752a746a5375e94d64a6c126b5045ba1aa95b5243ddc57ca8dd59fd05661b8cb1086fdce57ef368121bbe4fa85a964f4d3aa10da77fcec2274a47b01861a83712d58beaa6985b64745415da16637efa6cc11f3e144cb3c6095151a94ba0ab16768d1bcbec3ce207a585d9ad0388462936bdbadd904a0489a736e958b2b98ee630af7c14e1aac3732bd47d37246eb12ae2f82d067beda301922d5edd8b706fbf32462b414145008b16ded96e78ba043cb42895340810e1b81bb6626837b925338f8cf57fffccd9efc63f6a7e3f44cf8081eaf8e48f3e2329641125f4bc6269e5cc47e7a4e43795d039ee5eaaa3fed417e581397c43f39b860d88bad3dda50cec8c7976e53964f320951a61eca685db5cf8c7c7ead638e4f2e9d189f8dac6754511a21db9e4d4eb6e4e70144869d18fd9bbb4603cc75221186aea0aa818c250ac0251b6198c10d4237c8ece235dafbc09209c2f00af4c042d01b24f35d43b95cf20d250e3ae940ab4f2932de3c9fa8b189b5b526392437a64f0f6650b7aaf0755f6a3f38eccaa38e8e775b333bba57a2ce2c9c03b04a6d220c9b9a27cd1df151a0564645635e300e37ca3e441b262904739b8492c928153e76f5ae2a787831c897c5d8a3d4de34945ba2e5163fb00e7e1072a8b509153eb027083011546f334c650b7a218035a8b2d9118260c8551c99b9ebcf3571e3b4456f76892eb687f8f67f7641eb74d36e822859446faef2a55f82cf8819e353b31409fc76b05267ffe2a755019a983638626e8a51e2eaa67668e9e0f2b5726bff217b8f0cc7fa5e56117456f10d1560e1303b8920e5de3ab8e6a9415964ca5b3598482af2b1d7cd12f80d136d14393fe5fa0825190989cc2d24863c5303443b317909494a0a758710445a843923c37bbdd842e14527bf688ae7638b779bb0b8151db6f93f5a82c548cd854517348b25d90050290a91ab553b3bd96fd6e89e921bd08d9e0ff5e06d46ad431022d437703fe7b97ca919847dcc876b439be6a11d0bb824c099161dbfe49df294b1fc51c0647074d502509f85c7fe6886ca945d117705158d8803bff8ca4f557fef1d8cb0d184ac1b1189ac77bef3fb8d8221029f47642ee1eb9455461421223e6742e5ea05e7bf304d50449e655d12da660208e0961aab99baf655eac888182c3bb384e5eb2e02bcefe04f3d494600db2b530f502006a9f38e6f639f46de5f357ab64a2a555fab76dd87f9ba9852b4014dffdff7a22b0daffda6eb605f9993a1dad813ecc80fdd78a1a5cce180315abed8eab8586fe822e28b5a896d760366e996beab5df81a3c6aae3bc9a7c438b4fa02ab21339132d5576a36743edc4c2b705cf179a176803b0fd6e71bf22881812f0b8667e259a7916845f3b2de2604d042f12773002f7d43587834ad2c837b312ed2fc05b22ac4b50de5ba98d81bc3a0cce26893a5334aee47814eb63d313fed4ffe182198f55a612b02f5c77fb5e1c9116e2978751e659f500af1dc9189c0b784f120b149cd232d6e682839da83c15bd4ce8d18e6f032f6c3da3b7cdf6e2fb17c4a3ded8b5a021910b158143b27969ddab646754aeb3f7950b295e1f7d807df5e1462400b10ddd7273e308c6ea2d642b8d5d82abf0cd145286fa5df001b14cdf523e55ddac7b38559d018905665886073cecd13d5643441dc3370ce65cc50ae0478bb2181dbea71acebafca94b979c5e05645c3d2c5c5990eab9e9c0c2b7211a9d8ba54a2245e4fcd9e39d2007e04288ba2a983d052670ed152b308187efe709ad5b5d11807a97048a16c4e8edc0912315aad68b40b2b7ecc5f800ae425773c2297819b1d1d7d332834e245bb15e9465cafcefbbc0b75e135d07d0e8e9165cfa5c98c7b59519c7873c86f17dd9f9eb22e1cee189fe68c61b20f7b14605240161d41b39f8cfe58fe68478f1c5972c8baeb51db830fdb8e34ef7d4c39412dc83a16e84009baaadfab78946745c87ad3047d356900e59ca56180a5d2902be7223c43eb896b4a0e5801417bc28cf96b7649cb91552fd5d1113baf8654b9c038d493be285c5256b7c56d62402bdd896381c86f1e17ad9028942ce9cf0dadacfc72315e7460f86b848206ac59e0839827ba4b402ca97a0facc6de4cf3fd1027740ee1fb7d86f7f8469d74f122cb1c731c1a98e48ab0a4ac48951bad4a810b194fff4a11c87ad733ca9b955120f610d866163e728a7a24d77f6c27803304fcca6c89f6fb2abfeaad4cef87afbc4b0a80fa64c10cd9afd095c1c1f204a899a425e31a77717a8311bf33215067b2e6cbc6a56dc14dc8d4730d3f4c5cbea1914ef90a732177f7fc6480456b4edd2b80845ca4ab48e1ce93d8a73625fecba47224342ec107faf7fcdc38190cbd34b72a59be0f38eed73ed8d89b3e5cf0b2c1b807ff43c2be5f803028d898a5af333bc74fcf50587f1fc9e64bdaaa59a1aa93ee587f3714223266934dd8f651d60d386d88be4c9ad7430abdd6656509d2930a6da5e386deb734eeebea1a9e53ea244a2c7e89c8f0587c8fd4f9a699a2652f87072305bd6efa2b83f5f92030b77d26361377e204136ac992a6dfd695bf43825f5789116d907b5c09a80a8d12acb99ef673ea3ab9879aeb0fc7c215e7b52007159253545d5bb770aff28596110d0516b6c5b2fe8f011865b20114c7360ae71a83c72bbc186a8f1c0c0ecaac10fa7ba16396627be7154cbd7a4b53090eaed745b74896fea97fa1dfbdc952f256ee4791d25c8882e36e7cb9d10f1ab433423b134acfc6dfaf49c1ba715b1657f728b23be14307216f4358e3e5a5160d66ee3da85c8fe14619500d410c25942e0a5c998b03256d0a7c28eeb1c9062e7abc1d92eee15f182c70924ecb787d3c30eec834512205d03a8cf98559bcd444267e81a9fba9bcf003ee45861770e0699484b1ec63d1df5f5b273e8a94e8132be37c67888eef4d1751fd6b613bdb2e9467446d728696b6e5bae819d73036c20ec2c57e6e0a3c2c0be68271fe0e4e9df6d4e81709589985d6a0cac2d13b92408ff5da4575742d157ad0fa1ee1d4d2f71700fc3a276437b835bc1f2fdedee61d71cf63eb4aa350cb31301953a6afc1ce02f99fd640c0f9296bc75190a89f7b981718d7c157e75685db8e800a70e8a226f42eb2ea6666bfc5e286cd2ab450143af8947386ddd53dd6fa63a18bf38e48927b9bd4305c20e6a993ea3cb23ebfcea4bec8be807d6800fa49c9daedf546ee84c65af43def32ba86f0240d3add1c829e6e1e15859c968f4a36bc91d8a7b2f0ea7d6fd11b211b0d565e2031d7081be492bd2fe4bc5ed70500d969f061b37f05dd16e3e82629fc5379573c5ac293bb118a5f064b5d2b414e6ce0229501e91e395520a0ea15ae713a616dfe6ce6f819cc3609198555c3c7f85656c6a5faff22b9f03fdb338d50cc1214dd4e28003e6b7dea3f0557f44c986c6472473c070f644e505b10af841643643056cbc20986de8d5c22101d662041e4c1fa62ddaf2d033cf8391b9fe7eb583f1b615a6786f0a9c949838ce78c8ccf8a2a10d10f3b1c75d8f1dba3e6fe1c22cffaa362465de6e237da58d6469926d8509702cff30af70a3b4e62506f3e20869b9b268e09f0487fb5b1228a72880392f1247d742a4ff7d12481da58dd175a04a56063ba53955380540b0e2c22114d1542ae9f959b4b66d14242ad02f4692c62cb0ba938a0769a64a4a3062e6a00d472027c95e248258d8644e335729ee5114743356bbbf69de59c59370f0186ae428571c2d333dd747427abf73b8d7ed40baabe256baa6b61f069c802c3fbe731c45cded5612da184494d61228938efe28ddf3c013f6e97930a9036e1eba81c00ac62117defa3a81603baf39c6c2dd37be0bd1cf43d14ce02a192e39a1130b5d460cb41bcee3018631efaccdcb6344eb59fcdf841f9811cc1797fc6dc86c4f8c18995a8d1d49b22ad63644ca4d51415a6161960e4e6b4f83c1ff5bbf830bfcec63cc586c120b7b6a986501c94a45a7e3a690930305ae1c37fa54c92bbd0f5cdb66ae2e9e1109f3534c480785117b3e7c2eb81e654d2b424e8886476aa8f18d5aaf4ff525b523a32c0a5c67db940682f102ca5f99555737d7252b37b8e67fca5896e209dbd13d01328c13eafd58c9c60c79b5d003e1c0ee6c959b6c5b2659e595bfc0885247af1f11c51a0d8a2144a8129a1ba58b75227bab318ecb02609173450667c0071f9ddac97d50303dfb2d0621930f22312eeb4557a7971c3d0cf2d498efd46a89e7ce509238cc09397a9142eb0c974347e444382e5c288a9ab8c5c6fa00b27ee09bc895e3be1aa59c497b7f74d976c00b05378c7ad4bd66d9db95e3a2472b8e7e30449dad78e2253437f371e8c8b9910684acff6f929692484f8b2e8e0bcf1746fb41581213eab14298048f9c10d49f563f0c047ea5b01019bc20285c01ca16f0267c5ebfd013226cce40abe3aae2fadae6c0d603fc287f2dc252a505c9834b4b2345612d265a53dc3e61b0c1d37321d7373dc50cdc827022707432469c931173c89819345a981119b3f953f44c3d062e38ee5b2b5a5451105c1f2fa289c4ee916c415a1bddcecceb170083b8b0f2200b665b39d0cdd0d41d3bc359d10c6e07c08e144f4f379b274407b63c662708dbb275d58b8033b18eaf78ad54a66338dae78115d1454725a82f1518c4b13bb247ce798ba7338858d7ad99af1f9c6ca1d9a29a673fd4ddf5782e01066ef2889f58b3cdff41fd94a0c3b074756d46943c0bebb5e1ba88967bd17d7e19c5dfe3a022ce8bbd98357f3bafd1af7986aca8e84d6bf5e55f149db08b2cbd10ae9f42784b31a341629264d35594a202432a063b17bde47d5ac6de7b7b400370c9c93336c15a8fe655474f0022caa0cf6714ddf2e1f7b0d14c0a09872640cd68d10383db7087c4f681f2bf5d765febae2e09d77bad8152c7d69f9250391a5f0b7624627f657266da8962d4726f5690f6df0b7d6923aefe47cd7eee259fb02f208249eac784b70fb3b42f58dd17f1dc544218adac750b1628aa194d55b9f26432cfc50a1066b8f888e73b9977535a16bb2800e9e39b876cc0f20dfaf7057af6fff7fab45dee8a0872e44af198e67ebb630e26df67e436528313f3928cfb8c45719562923c8daf52e384be6ba7e0b3cb66460bf4c8aa3c9348f2e13b6c29c7c8732f7ce4e5355338c346be042df57d911b7f07630828f8092ba57e53479c9670deb81714f3dd94623c4e29a0292bf57c2d6639669d9010962afcef2cab8ac2cdbb2d1586af1c1c62b9e22eadb50e3a81472269be6cdb41759d988f56fb8ba565b67922411b7ed005be753e01a8f2440d9773102bfa5444660bb48ad4c3f7fccb13c5ce8488ae0d68756e67b686e0c4171d15aefb83a1ffb132d3a416242e94e2b790b500eaf0de71bb509cef50e8fded242b03d63370829465b8fbfce8e9f46628f38edc553827b047e5bfecf4436b4a5122d71b6b351e5032d25b59a3bc369dc57a339ed0b64e4faad4e65e261e0f120aeb2ecf9b9f9a8652673189c112ce21b0fd3b37c847071f627a3547b0dfadc2ba3c30e361156a9d7bbf6d6121a35dc2d16fe71b15a7ac52bd9def0f743b1f64da6c5cc101512085c1ff65635dfc2bcca39cf599602996fadd073c7273da7456b6cf9eddc5bbcafbb4ed97c85fcf7bb32c018916d892bb6baf6bccef1084c8e5590f2fe80b50a5619d8030b39c04d7c0c5b2c20f427425830b72474dd6932a834943e8a8f7b3043e7c0722060bbbc64211071b2f4e7e64225dc991fad8ef22604d1a32cd03ac3edbeb1281569ff948705149e00c8e2287ae193c95ace8b75bbfcc289c341a68b490b8a1f482d8a5c00ab3e9a08f6ff4aee2bc90256210fff16e19cecf5197a128f9741ffa842da5cbaea78399dac8817c6a270f6fd06956d7dcacf530840fb4fc1bd322f9d7d458769af6147940d1453d5bf2c0adb39be57e806fa00f9b661fb268f7e3f5bcbc4e097fc22c62524cbe5fb584fe03c9aedf775888e09e96fc5812557e607e10f28ec693b48920971e93d080254a5d93a97f67449b266d9747c45215d967a63a64ef32bbff7356df05acad30e09bfdef3a75f277e8aed1cfe4c1c6f957a711c272161dd040f743643da78399d88e5e1a6054b54f574819d8b5c52167b2e17621e33503010a2cce6a41182d777e9136d5d473d3a5c766daa5b91c4f643dc735a20bd7b7535b6028413db86d3560b8148b540dc90d63a06e6d03522da2f00e1aad019fb78120399d90029fa26363aac39e410645fff17e5430d65211750eda1060b0f3e50e66f66ed5b0b51aac56340e3cef22ff11ba39c75b0c1d4a25871d760bda409bec97f35c9b2816f433b416a7d4295540efe37835c34b525f2a477fe6d0bbfcd5fed7ec99391ee5a4fb5d42c2e8a2fbc612b69cd31566a6e0c3e16f09eaf9cc2a45f984336c4b3b40993cdfd39e2c45f5b7e61aca81206be8160fea95cced1968b1da9a859a64a44681043ccfcc93031707c0caab2187f9017fc48180ab8b33583289701edff23d4868ac2133c1d32934b4fc0daa5ebeaf3324de9b57a836bc73c6e97b49a8853bbb1bd5df418dc0fcb4c186b97e60dc513a7333780be5d67e47955a6d2190f26210d27df6e2aca259deacde030b55ff058d02bcdade4f4ef12292e3ea2b4c13667c7aa8c32b5c4447fecf02ea1406c4749ce8e52d6def9780f6225c8fefc72219e70980434fa6df566ecf00a29f3f6f468059262c4ac1acafd9549a2feaba97804cb6e167783d0e0e1007ae7abfe9c446351c27747daf28ca3053c22a0939b78438b282957caf2bf02b93c3ebb3c39cefd7fc4c9ccec8b3091c106a924fa8f5ff13e0d70218a816061b8a648ec5c4a357a33a0401d17cd6c8d00ff3208be1603867ef7330c2870b872fd28b394803479e0c0aec0dae303b3f1dcab118848075e3780fb31eba723db0b19e719349660c4db1767f1e675dde484b405c4024492f87c5051c9ded8af8f86e59adfc556067b909601a74a118060dad0bc46a70242413e262558fb7687bafb5e0016a66018ad9c2b84bcd645854b61b2e82838f92660512533324c50811452b810508ec39c6ffeb06f9c60ae45aebe6ba5ac40c028d123fbbd1edcc67916f24b66e7dff68aa6c6c767f388abcebf627631fd8424d03ef1a79892c6125dc346ab2e4002792bf229616c68ad385abaf559c81b165536a6f17798e05b3714f40b2dcf880ee36108c9e3fea82a8e63932f16d2da7793cff6afb05f090e0466af3241eefd761af290c8d63169839daede9371a3ccd48e9766cb1ff25515f679e044c04ba2f8f81d2db4d6ad188c46679f69eef81d782d58758d81fb208164c90aaee35251101852f036adab7b20b9439d8cb1d891aca7a4a7ba329610f1d8454b1dfcc5c9f46c200ca52a9ac2592055f25fa48861ad66c703563182c4e6518a22c21ab8b7b0ff1a9d63af7dafc6f7f953d7c75830761f8ff600785e74c2a99403573b11bbcddf660ca6bdbc795e4e4f4f14b29793e43e85cd22acd3e1a78ebcc291b88d45976d14840c7515415dd489897a4679b2f7d78061614980f314c84acb8eb89478344c0d20b7a7367f012a7b655910ea8b05bd6426bb7d5fe832acef5c9899d7f916d3737bfb1bd32638136ce30b4bf26b45ae0c5b7d2167961f8000a12234079ef6ca685205ec5fa26e42bd23a6b125ff97ab7b0a3280014b1f06982b18458b4c998ad02d23112a464f30526654e4f3e0f5631d62f2663d80f70e3ed2a886b752241938d5ef71720c67dd5ea48d6a7fcdcbde781071c2a48644a0810a4e90a9c5c21f20cabaee058e93c44866a3a29024ba8814fddb265e4fdb53c55d351113f55f3179ebc923a64e8cb7e94ff10574bd20e564be28aa735cac53d33f2cd091f613f021353e749f054d434bdebf7f454680b1b93db44c1f741ef0460c668021ff7a1993331452c7dda5a84d158b5a2f6f4bade49a43ac5c2fe8c294c04cd77feaf4794c9784565f3a11edb3bf012520f9aa6c69774bab2240b794eb95b2ab910753ebe85af9ce77388b919de7e7701b94a2ba6597002aee5d9895bb70c59127362329a633e76d1fcc693d7bcb3013bd5a66ed0cb44de8139ff2ec9cbb69402ad6ddfa091d4f6502190ecc8b49bda95c984a3ab30e72a4c26aa3804c95a9cc09345171f16c5192ebe45738ba4a559d476d60b3a6a044f2ed487ef2a229f14531f0e2ae0923bbeaa6511c23035642563d0e7e767ab1c445d6626ec290134422e288ded427ead3b21ec5e965594d759095a72e24b18e3abc4d275419ce0aa979eb19249ba746437fd0bc1d9e87c07e1f84de4e4df176f15b8219c783a7ba9214a8a0d5043a046b9b759a370c72e5ae06b421538b53fa8e8e87e33cbf0908afa0fa36cea663a991bf7cdb4afd20c54a5c6b3a81e2bb34fb74d17f0f84fe4f2f6d4438d9c1f3de1123d14412162a913ad0e053f159fa75579942962995915ab04170d28f963017aba827b01e49186ce01e146f2dc750aa07419a4b3a2d80b8c3e0627927984db887d9a7e033a10d1200e21c7b60f6efd2e2fc5c9cebbe992de1ea5318d2e36a8812fcb777d3151e39c9e1060edc82af1fec5392f6603a6f8e16fdea425d416fb979d9b1e430f2146455f6f53005248043c7d173882c05bf4b68beac0f0142c7d6f7a55c93940fb9052c77dfdaa260841f75093437dd654403d6e96df1a84d30221eab3ce98f70f516f1243d938bce3cf42b17c6c6e4a8732fddb756bd53b9d04fa6670b1d09c3e71725c4d7409a0865d212bfdfd611ae63669911043fb687a9b39061034ae3a9e14937135a14d0148c04078f735510f189df8dec891335d37304243673417d05a0b1e9b3b7d8382dff5e53ff0ebc8462729f453e484d6c004aac655bbd86786808b4410655e3cb71a1bb04a42f509c2791f950e689c3fa37ea18af172aab67f507d922e40233227f4a2ea341fd67b4a66c1dbc43802c643189b2220e40c9e2d3f52f56fcd58a20326a354b5c6e8cb787647fa0839cd7fcae560c569976b13b69f6d128218cb53dc12c89f11ffb9ee16d09741fdedf0be5085c871a270ac68c3a003a3e3acf10a6a850e34d790ed1184bdde284e8d24724ee4d648b3cbef70563a86ae066604fa806a0d31b1385ee6b5312a4eeb6ced400f16f125817d82fa4df0847094812933e0822f9ab8086282a4722482c50635557f24fd39408aaf62f7b8fdbea0bebfd405847d6aef201e65226ee14b03b5a3ccf061f33d06f5d59c0a21c39d226448bce2072c85640c6ce21fb3681667cd08c79979a4fe4318e359f49c59660b8aee5e082b963213fd8f5e2b9bc66b44ccc104558499c7bb15f3e87199d09e373f115c170af9bf5090d1c2a39c8c7f05eb42809d8ae9e3f303acd7c96fe159adc7c1c38c170ac6511b0755bb370d6f9520b3c4145800ea0885a70785700eab3399560f2d73cc16d10d4e69bbf6c2307f76036df035644313dce6a3c6e65418c8b24f4534919653cdb2bca5415a78e3645f7dfa5ba7d7ee9c26ce762bfbbff92e956620c9ae1109844e5f7884804d955c825ded3bc39b160a059780b61eb81329d93a0bcb331e40e6b5b0a0790a853010023272ea98aadd9d63a5bf2814bc7869623a114e0348ccf01c90640858b97448be251fc8fb4f593d6553d2e72bd540bde0fce4d104db4f79e34b48d4c2ade9ce642a83561da147d0dc7cfff389c4c9cab12b564e842cfc3f66c8fec680667a6bda3c0c7e1f434d12d80412b14998e3cdeec16140eead3c172ff63905400e792bcf415466fcd00f307964c94cb42baf4d263b161e16545b6f25066367e73360f6edeee8d59306c0f2502b0ecfd6102ebfb570dc8a3c5f7fe5f72c962a9700b81ce9c31dc3505a236898aea39292ed4ecb0cf5738c118dd5bdfc48e976fd5ec02231fc9b717a05d6dd174412ee6e265c37d0e570d82f100a14e3b1b4f0fc2dae46a0f78f6eed44288edbf143c8402c73b99674d28d897af60379e3f2f102c1908495aea1104706ae102c7460b19c65189978e63538e17b0519c4fb0b0b11062ffd4bba7c4e6765594c9f1abb8cd0f2ac850db7e8c2ea2e1be5dbcd3ba41b8fc720310b4b607ec5d184cf0e864cd4007abdc20c141d2c413a65ceff318a7a183910ffcb1a7ad8a9be7eff1815aa3f063014969bf42c3159aafcba20e111df07b16865e87ad52881509385207ab5d3c39e81ab6b79121214e427504916665a36081b2247ac3a0c49a44cf95a722ecb28723f78ea4131848861370a72832a9fb854f0b47b9160bc4789375f12f603cb32c2a564e14c363b189c21d2140e71d2c062efdeb413f7d93d296888d8d2aa8e413e6052247859d535c9aa5620db8bd4b3d541e5692c3a0e06ad09a3ca958bd6aeff7445f9bee3267745fcba5d61546191383f710bfc69873dccd0a8a7c0ca05bb64a168084d7e26f9826daf93b89185236f26b2f38903ad5b134b352647941f38f038426305f5dfd2ae850e899325e33b0cc3e1bc0d509573517b3e5651d4a1ac2704602da4f06291721bfa42b9a340987800a65e37a3db3ee87671319634379a805f3a23a84737b1fe4dcf10fdad935b3fe7af6102bba882531f1db1d26c69166a0c0a574544e0e7072588ef5c6a1b01526cefceccff40b6a200afbc8378c1f5819de1731a5f72da50e092ebf09d83b016352bc5fc1204b78c9785ea14f2c4361b437b00c2ba922b01b6103595135d343e9804a932bb56a51b89a8404905acc98a60f11fe13beafbdcf12a068f2f383e30694c5e70a47210a749980b24bc173ed811124b54f513e8b7094ed2c39e81073bde432e901419db9ede543e9bd9bd10ddac61e9b4255c89cefa2bf56033d079452ba4c0aa5105aa0d2dd05d7b2a019581d50474b771498868cbb93f374fc7de9b49ceaeff63f173f3a13d3cde3108be19d6f57d8acac4f9df0b2c7fa4f7f0aec0a770d6a844c28887f447369634c281fad4f9cc61a69ae9316461dfa923c8fa0c5484b7ec74b4ab2546082a427cb9dc0ca48ce78c4eeafe53f6170913bfd0749670215da20f0e6d0a45b101ab98bb7e84de81961ec95e638f9254b473a502ea918a5b7a7f2216573f20925aad967c8babb45de857be38672fddc07ea775d8beb7ff491e9f508ff85446c087cafc4e88a624a5013e9991a3e92d4f84a36427bc7b99bde3413d8a822edfb733ed26c103b56505ffe965f0878d56af8e0a7e778469aea956ff0f71e6d10bf7f7536207bf5d327a41a39848056f740dcc2ae8c40e178854c03c91a8557cf9ac2ad48f3792e77ac0acb2273c2c88d0a688006615123377734f0868b233c0ae8089e8b38ad272aa12be3e7d4c4734258d14309e84cbab505291d3886de04b2975e0210c4e9d5bb1ba126c82920ad8b0ae630abda129b8cfe823d7160390a29afa1a9286704ad987289a920408408de782fe49204283ffa286c1c0552613566cc8ce2d742160614a533f3045a84de26441ed31a6bb13d640022dace87e2e51ca2e0258feca34b35ee9363833991168c296d9b5779256ddee719b319b3d2981755ef75e1f5f74a06ce4559f6d3cbb3408473936134d4ba9654b7e749a3c505156d492b030d70d888e503cd048695851f22faf510fc2b54ae533c09f610effa878b859d0d7b56bb49c381063faf39ae1a96c1c8162cc4675aabdedaab3bfd7b55e444323a370d92817b8ab35c32d63e30e77338c212cc565da7c865534a31cd201a8b2ba9f4e24c4ed39ac557818f71cd80ce2c6714f475c6465b5a7f3b85fefa93d704a9ea583220f30d7b02451b2ff461511439f21fda57f73016f6d92956c1b642f14532adca4a95308cad33f94bc25470e9dd644531c01fd873fdbc26388284d6172511eb25004d60c7d8eaba4e26840478acaa193df5470c60c8449e1322147145fbe1b56852825af22ecbbcc5179156215e50a403f8f0a21f630b2a5445037d851adfe4d415cb4c9d0dde851c9ad83de64a73f3612509fd6101663bde79c087ded9921511ee3484101bbac756924daee41d7cc0d9d41fc247e7186258fdf5a86f3ebde85f565afcc23b0b360c77953c5441d7fa38fb4f4e66f902bf1593f1806ca43f7801d487c265f52a6e7c0cef56dce5866655d46173a1389f1fd3fc86190f3599f0025df560f9cc347aef5870a9f1249e4d42be7f6887baedb2ec5117db45e2dd221669321710bb6a9c872c56c2d54199d07f03125a1958d1f64baaeb75ca8de94ad1e4ee8cc9b30d63d7b15a0a0f789d3da02787200ecdf8af6367b38c3953de484f0077c22d2453a989895d5a0f74caad35f99433809fa8713f553d1287a63d455daf48e538df5e11417c0c11113c9f7892821762288248ae2f71e59f648f2a642f8780560ecbe82ce25e68bd68d64280b710ef90fdf201144b0081e931657cb7e55323b2c7af0fb046643ba94c72a465876da4647eb2ea24efcf93ea9c79b7e799481137892d3f79320f9ff61d957827c249315d597f8543cb91acb1bdf31782a434e8d8ffc3ed5638e5d391b316d5aa5db69fc89d87d774168c80c3c71f67b1804204eba7a8c52e41874b2a6159d018ccf28a4f7fc8a172eb780acf901526334d41341b8c4a9ad44aa065737d87e1b1a3e4fb4495398f0a59b1f4161a39c49337938a0ad3e3ae9f46c4208fe392802edd11c6502e1049ae61eec24841059cd886d943b758fa7a3f9346bf77d757baa013c28bcb1c98d97a5ac16f964724e7f525747d601d31a667b5cbcb817026774b3cda60ee6921c754c7b3222082a6777c4a397eeeda7c40e7ec364f48246315164dfa087ca8703fdfbe68bafb87baee225c5a5076b336eb6f04c2ac81507dfb127d8f5a79c119e6dc08c4f066eda6710ea4e25b09058fdeeae449b61157aea0015d89b6f27a97d7142a7952e9fcd6d204e1b020f64f2b4a12a0cee0dfa2914488cb6b1dcc16c8a3c94879ffc81a01501e28c25609dc916769627a4b17e79d868d8594ffa84d07e781abd18f3f004125be605522fb4fdff6ee648318f26313a50c6809cbebeee55f716abfccae7ef69de1166b2de66ac7783df5cf9a06d30c072bce563e4d456707642f0499e298d57eb4241aec68e7a76387f6e5504d13fbc7d1053085c62371dcd1f584b226b42fe1cc69a0225d763d67f703278d7ceff81469b5fbb514d6dcadb01f3eb9f597e64c4155df5246f63e0613a621f93788de3a5ac8b50ce9ccba085e5cc1f716fbc4f3ba76c565624de397195721f500cddb53275e9aa7712aa21c12786724f153c88ef4334524acde27f2c5a2439ae3794052c651bb996f2a966a92b18e5100302b1e4bd18316dfac9ae338e1500c9acb143f818fe1410c8d36941b3c1aa20a42006465179d97503ce0673f6cb19633de352945066fd2110d35d35edaebe8540d4cd76b86ae6dca8889016e8495930ea95ecaefe1ee3bd026ab11af8f85f6bba3fac00d8da678ab7195889620443caa6fc0bf7d912da9a783ae311194695f859b5445003d6273e8d695b62408144c041aa9435692bb4a752a23151d1fa3da38062b438b0935d19f86a3000b800f0a0160b0ba0aa5f47e1be22e4381e1cbeeb34a7a8e356b62a494540e05831403419f64d9b54a1e502cc46995874e75d6c6d20a20dd2d197db8f7662195644522e2da4ce633d0170a0991ec7b8418b2de860a9b3a878d923d8bcaee2342932ef7780b2a87fa4af226393fc89ec8a11e60f213b4f9b20bc3fc80660aa89b644bcf6625ec3cecc51173b9fe2400aba05e2ffc5d93f39a0c917d195d9b885311704317ece3fc98d8af2bc7b1817dfeb8185de3afece1903e2b986cd515e5a020355a83adace4d7dfec720ac356e2e56b87968f90578dad25438a56641247fc9b8e5952183b81c639aca85e5b8472b455def6435c08a8e44a7816788ceb8113111717a75303ce233848e04f3f08fe4396607a17739e6430208e962581b7c76510db329c1ea317be68c8ddd8c4aa36920ae43b06185d6917da89db1bda29bcc249b620f49451af0f46f73e021ec78d4bacb252a831401fb61734cd48a0929d3c6f4e78924043a8e58021387a0a0ad4e027a47a65dd4a6c8afbb39cf3b35aff435be0b688f20abea344ab7f6d5d750b843d385f302d76ef7059398817b5774a846c085bd8c1a57ef943d1620751139f51e179cb479e846aa8f11801270586af7149ac46eadd5d6fc030eac4234de04dbab680c96d864ec91f5242ccdb7f2ad7090b521c810fedce7694e48265a2e38641c178db685c39770c4b29384f0523e2d712beff4b620caa2af69e2e8998ca181a3541a83d32bde737114661581ebd70e6c568f62d0882a6159c7b915365f73968fa2f9b4162503c4e7e31067412116c08351a7a03de817f87d0de99fdf2763efa0d6a02791da2c2cf011ee7ccaf1aeeee8e5fb7b093041aeb4593aecc8b623897465e9e69cb876b3dcb605ca767cf8a2c937e2f68c6d7cabf9368d12f23f29c282e3687f5f07b2cc46b2e62de39ca727087aa041805a717942912d9fbd8e4c3be89a97216f592dded8d8e5f87415e79e6c8e3382998179384bd6696093cf164810f3317202309454ab2c3f20471a0c1252e8f74850926c4700e971cc13ebfd0bd81be1f099b99698eace684697ca659a4c44e5a0955c96531e510b4108f824e0229e7d3d09cd7663dca73b644b0ccc302908e3fbd033e7d99f7928a12497583a245fdc304bf220960679b8c6a2a8aa3e5981cb1c410936b83f75823a1ebfba472104ff0b2003bc642369fee6af7c16cd49ac9cde2ec7643293c08bcc518a20c1e12e2df85d0c966593105f6dccc706ee483f3eb5cada42be239ee9cd6f5b8ecb230803ca5cb766a9e754fb9bcd8b33f5051e0a475aa41ccc89cc8af34391e20bb865f769d2d9542cc35bfa89b56eefe0fb078d31dbd53f019d7147c23bb41d5084653c6aed764b7635bafbcca6415abfdbad09e373d0581bda1237350bf73e0c03899cdd9bde5c7f2e732d523250a8032b22df0bb0b271aa6d1747e8229221d89776270215f48f24ac4c12d54812a18ed434cbb10ec59c660ed124950a7e7071b5ac99a9441e40ab5e7016e9dd8f1b3e1b296797451ee9f68c61315b58d02fc40630afce245f0f863d92963934c3219f2f8ba1de4107b9c96be544d702c3ce40bf0fb21c548e4ccc5da924d0e04e5fd17530c5483274ec4144fb2c2ab83859c304dc9050b78873ce8a16d81015fe864073eba2b8e7976e6e19edc18736abb434a89a409a2ba0fd2ebdc133b2d0985aa53db13d45ff47d1019a1b7afe4e243f74b22a6cb437cdfd9db485adecad77edb3101589c8419701244bd01b422ff95765a890307a65b09a4621144bc3bcf847c242a0a0f46bb116f90c62811d682cb8d45ab13d971e86b6590d2d18daaa4dbc4a51818254924558e22c4cd50c9e063d8466279e19bf1b4758953dda8858b83e924865c40430bc86b0fa3ef37bcb43084065fded88108f1e34bf4443f3c03c7a89481c2ff86c139211f93e31c58b1c0b7b116c12fe485ee67d8a85773c258508749791a2840142db9d04aa03859e26a1bb849c932b1e40e34e3fe62b109bb138de0417de26a79bfc0b00485ad9c76f2445e4ba72c60a5a92f832a8c7e7da003c6d74bb86456983181033f4708d6ec0bb339a3c4a09c6212e0d964959d86e8a338411d06dd7c52ea018430d0c06de097da77735061ce323e81893248e088b82b0b3a2268630adcbe6c44b841063d23e1dbd107fa060a2d543290c021ac36d0d9469684a2697e6ae3c204ebb0794b5ca53ae4e6fa05265d2b29233bcb77de200d1acc9c2e02ec2fb399fec170b95f07c8a01a5dde7a21d1f864bd94e3a2bb3f8fbccb1d3ce81041c54e758140ed87cbaecaec6f0dfd1dfa72d853bebe2522359320d578fc353aa55f981e6ab532c4e9d7e7438fdfc503936ec78bdd68a8a5e35efdeb402462605103f28ad4fb18c5f8e6e95c2a35675533e752c006e35911a02eec45971674f1829baf246d756439419105f0451b8e2d473e30151db0dc0763996b42d5c731ba2e0274e836fe57fa4a7fde461a67c4bb7f2edefd76bdeaf5fa6030aea80c96db5901e9a5e0d370865ba6ca2f9a0f0c769d2c690e974d4d6efc2be316b5aa8bd714402939994cfc3e3a4a37963e84cc43c90d1c92e3eb9dcc766951a752538e525d35f51485cc8166c111691706b2b0c2a0896826586fb0ede410c1ac148986421b0d24e2c5af75dc4d9f32adaa2da659ab16f3cb9e1a8b3d83046fce3db77f9d1360fd0fa02817dc9cb2a48f5e82d527ec903eb526068c35fd5442b98334e009072e90281830ac17a3db19ddc639953d7a98219a30247b52d04a90bf3e68f370659443bd4688362576c59980942970cf0f63928212940d0c09fe1aa178190f6380d279c16cfbcd09a296c7cdf3c4b0ed04ce441a1557c300a38a2ba25435b340608c617d2451dd555b3aa0c8b069d67d0409a96fe26dbaf12f60944e06f3b9e49e686e2d00cbb4837bd4c85bc77cd31553eaf77265977b4d199cafa83de7412eea641a937b372118a36c2056909b19e42f6acc0235bd86c62b0956d5a816757288677297a9e7b00c8e817f349a8b6159ecbf1b2fa88b0a4b973a9b26066af35f0c904efeaac8cae1ab14d7263e88c7e46fbf8159f15f1fbf44ad836d7dcfdb08774b3a3d062343623a68a101a0dbfae154d1ea15d24fc518674eed811275ab708d144b2f004862a9fa61c0ec8df3508f1f52f4433339d65cf4808c876c282cd2c8cf275396ac4bc79bc9b9224a3f0408d7723f5fc90259acb70e00b1f1bec6351780153574e931a3ba025a2ccb4913d660ce7482b570e6a36812c9ce190ae9ce28d318b0b99254949e8ce0d888fb10c0a981d52fea99f5dd85b8a2301d75e35eaf9e33d6ba1de4dfb69c19140c2b329df7e3fda9b861c023dc16e96ef86bce57cab5bead9afa4d3fd7168ef46ff0cdb9e993281bf85b548ed903f891de1a9a1a7311214e1f1426339c9197a56c90a5909c782d1bbad16f98b8b86478a22e7d62e51f2be5d2f45786042ef8658098a08606f7fefe6bf948def3698826dc5543f9af20d3c1adf4d90a1e4c94a968d4716b250b6e11117bc06bfea0d45a9b275f97e721c03a8b0733fe711c6f5974ee47c2a9be6e5c8f61365f2a7eb64030dfcb84da451e8084c8881975638c34e956162000df08adf60577c34724f358993da6bd6c92284a066b583140a01139d13dc76073756bec392f76188003f022204758ef81ff9580d4199179ecb8c938690dc6e0575373aec6b99a63e1525d2dee58a9bbb9377de178ec27e3bb319a85876862b9b1db37d303f833d18f50cd7667fbb52913fb9f8c3f2b9b34d552353b557cd6e3f7c3cd71c8d131d042ad043d59e5597689ec405f78cd2aa2fe74b20f0ac8eba7447813d931cfa141d4689bf4a803075bfe92b2aa86bb32ec48bd9ad76cd46d466b7af074ac8ef018d32d9545530a4f97f0f98d11937e135e5032b8d78f1234fab8fab41b73718d50e464781c42a52487d63db9bc1e39289cb13de50c52734aaed528d93272be33eadc5c6b130b6587090349b22ac7e8b92b9a15aab302533b128b9807f6e207e4dab20a88769478b504d3c8cf247e1c30b7ace6f3384f45a08efd01a1ad3530c0699ba17c4341882b2a8eded6017bac00ee1ea7237106d59b84d39cee95103a7e92d012c96bd7c85ec784203c1563bd4b3cadcc71b6e23e3a324abc5bf0a31db8798f70246d5ea0c6192be63d426721f41e4f7b7b26c364d29a5b4909e7b903559ab7128671fad38b785ab2a2c19e38915218926344dc2183bc7bbbe5d56f2183177b443816dce32e1fc2e33981400b4c16d6fc449451ac77926491efa94571aa80a24cbafeaaaf69042632faffdef2bc8d8998c35fbd0f4b53fc07e31c224748d6ee613d2d8ac76e3fcf958c4f907c33c4eec947f4a8ec7cab9621b1d5c72c2239d010c995a13fb478ce93964444421c1688ccc996b187c06edccff440118c0d35c5365aa7daebb818d4d3cce43f0d2b9cd6bbe137ed11ee470e4370c02660e301a49859970071846ebc1171824892602ced8034431a7a3df96548a3a33771ee250ea7bbd17189298c4c1c930295384df74524dc5e4f557c84b6cf80405f370ca883101e079418072729d8e5674a53a784c3c5e84b0755e1c2cc7293e2fa4fc5ab9fa2cf75f1b67bd912e1f28bfd3cb9d7b6d5ad262533061d454d690295ddae719c8676e6d610930aff15f8c33c1fcc9c924893e5342aa626442c756ca94e3e2e00f22f48b9b07fd6a565726e2b8958d1b9bea24b8ec900554eb0fb7be5cffe1c422723fc50cad300549a15d08603b01a0b3bb04e1b2690ce6b5793b4e21d9cde2dc7d4bbc9ca14de8502251724b4563ef79a9f8926d0b2a426abb34883626fb04ac91db257644792174f9fd572947d07c3f56275dc8e19d9c6bcc59ecb9e3031ec12747f063e12d33c1428420949c0a19413ad2ebc08adc4f22dd368f151c755ce4c3a91325e38e16d1b10d16476ee01e3aeead1d81e36c23d204e59535f6c303dc49f097f60b0e87cb1d82bb9f22bb4404b77973cb1ca5ee71300be3cb056c1e470ba442cfb6e13f5c9ef85904e0773d5fba923a47f5709ba1e532bee3a5b93930df18d9d69f7313f20d6973e8da049bf8f1e1cfae04ce9d1d939f094b581f74aed609cbb889c8d5d74fe2c84edf15bf1c2fede40e3cca86f1612d04d33d5423d294a63d0b74c4c20a6f9a786ff5d164368910c289b09563ca11351b8664aa6a8802b541cca99a1f8f038671da88ab6ae6be274e3a1cee930ea738d7ad6c345ad9477476b7e5ffa93eba218c94e1b9b099b4cd0780aadbf12d7daef11ed73d4b4377da8b5a5f7537dc561e8cb0c2930957646a5ccac1272a7767cbcf8093d96f9936c0caaf9a38ae38adc8d596c9eb2105d1d09620a234d2a514a5a5d43b8f3d296b0a122658e8cecdb7d7f51152ab2982ff70135da40d31e2928033e8058e58e96bbc3dbf870eb110e8a8bb325f9d388e1fb2fec3b6096f5badb69791b2b2e47a5a2c131a3298b88d83c93e765ec39f168431f0c6011d0d03565267b17d28204c70de11ccdd012b0e62333f088993c24ccc4312deac6c330d54627bc42a4d799f395f98e6c2ce98e3f41f8d5c660514764b6334814ec9ce8b118f68b782d00006aa222ca1e8701ac7b52686105f9563afb64bf62a6eb5b0284d9f87f83830ea09d8a20030c44322b757937a7ba5e7a170601aeab10ed11ce0175ae91036b3deebc9e47b2f6f0d3dc8f2c4c65b0c86219e2a4064d54b7fdd4efd8538cbb737ffac19986a7aa3812568e4a012a044996d229dc2fef943cebc1ed88d7c6064189d109075e2fa2d41f8a418c61b3c817310c3021ea71846d221c0f069c93891bec81a9755bb66a9a1c08fd7c6a4586402548a49b22bf4451f829b9411f9a910630f790dfa847c1e87ddc629f79706dc5cf5218159b3ce46ee9ab5a8178e68283d1fed7242f417f051c443e176405bdc0b6771cd337156c6447293a366ec06ca5854e12b1e4b05fe6015e840e1ce226ac83babb9a1b9b138b0fd15e1e1480d391fa41073b57edcd5629ac7e1fa35485b59f86dbc1c7239000242809bb6a62df9b4a5b8b7e16114cc58eeed99b48bbaf40f363fb1ad3d20db5243e3d047a1ee4a4b43fec262d7102f7fac3cfc7b685b0d4c6d2b7de6a1f218ccc189a23dc01734e9216c9e5b5b7bdcb5a5c286d2848c008cc1af4a43469825445895886ded1dd9963048a08649cb8ff03904941bf0823d3b84cc26db3a1ba1d916ab0d83c09486ad1bfcd20f9b970b817fed6a2b43595b019db6f2e90a0b70283e5bfefa7dfcf6eb3dd8960c52c5b69698311b8bd36f301c0800c31fc1b754995363852c3c6c828abbe0a33ddf8cc4fcd6f37bb44061ec08b8a2b6ddb5a068717d505b769981b60b1bc9521cd82a942952ecc8cd0e21526865308acbd0126114aa31320c2e66c8b8365f1254818b65454490566bdeed31ee614d246c15cb4d99c94b42e346cf30e9a3fc20cbd70406a0240c293192f68452bab17a73769234df7ad0649cd4d655fc51b06c62e9fa4cd9aac4befb8b896d9d23b9ac78e995b78a0d4095a5b447853cf01828998b060af19ffb54cf0e7912fe4b7442b1df9b2a9a559394bdd03379bc4c9a4f224cff8bc425568157eafa8ffb4f1048c9eea1d992ae0f98c8f5f6d538a325a4d07d8300cecc6847e7145cf02d200d926219c1c5c88f673c7c85ba07a2fc0fa2ed482f42eb8c9580927fc99fa8795b5207d263b13ee798e200577ce20988222f8afe930cd90ef932c1e612b7dda5bbd8c40bc4bc8264022af4eec3e3d0b8bbf4de3bd2158b7e3122313d9fef50fbe98070919327f82f76840878ad08dcb8fa41d421b50f7d0236a51a47320f2836608b480209531bf8d98762cf7938f068f2bd36a4598015357d02a2188afa102543f7015f36f27094b83ef4c2633aa284a2b521f5960d5f2214c306d07bded99b16628562301ebf33e1e5622a328516248b7ae63529e3adbcd860f9421ead3a872c30b28c78569cd379d6dcf01416d2ab5bb1254cfa4eeea6c3f64c1915c10c64d4d44d056b0d9f3ad2f241d1fb2084347d7e12a141a69a4ab1c30b20e0d077136d4aa8a5506b042831c6aeccc63d846708942a5a67ba1264b1a7d18f31440bac22056e8d844f0e5110706625e980837050cbc1e37c96c5746c8f570298a3e19b57454c051dc554d07988dd46ac3f11b90c866035cd4ea47aae8273ed2edb3ab0fd63225d46752f1d4363ead8b6763742c826641342f6967b07240eea0db30d301f02f3c81120bb2c971c1096db6832e43af15a0807dca6de7cdad9ffdad5ad1d407d48583e559e4f95937a53651c1e5e6e4ea93f55ee618728363aa46e641c4caff354b97b94283992f0536578737d77737d964598f2602de63619f2df7b44f60c798dbf560de033685c8e21ad4024bd4202816bb7869a08ed9614bd4202817bed16511331e40fb876b9145710b836806b97555ab57a0d0e0fed52fb351fd77e5cbb3c6a158e6b9748adf2e15ace81787ee9f17cfa79aef9e1d9a688e794cf338ece730efbbcf3cc03675984b5c7a5b8d2c0b5472a7195816b8f56e20ae89a05ae5d12c595041ef47cba405c9ac012d61e8b5a45af3d52d1aa7aedd149abba6b8f55b40a5e7bd41e35d35f4e35299c249e7328f1bc23e49987a66a9510d7725c7b57695510d776aef1b8c673ed45c7f3a9c6261580671cfc9ca3a79704f0cc433b046c23c51bed436c23b510da57f6758ac607605fa7669c3e6e75b3105e9d5a235867336b04c3ac658d60d19aac114c096b04ab360377899b4d8f61c0cdd67f60d9abeae67a1a3110311073235387811bd59b2bb44630dc84895b022446f41ab80bb85988fbb846a6026eb67e26b01c374326e88dba1c3f133fc64410cf408e9b857810d7c8fc633290e34631aa9b83a83403f54654889b17f01c19b8d16f56c06332f01bc50471b310afaa53f8aec38085c19bb377d7c866d42d116f66c0ad6ba4feb8918f6337077178a3ece61cef3e6dd04d00123f1488d6e7cecdf359026e46e24a440ae0b8d10f362f6b04c36e941de822e0e621dee31a9907b8d9742072d471f3956f0990186143dcace34064201ef310bf3962968e09c41c6267de6c3dc3c02d0112a34cc7cd08f81018b81110371fe0383000c48d70ecdc3cc4e7ceb31b61181237eff88f8e1b99aceb66ebd835b25d37c276dc9c80ebb846aa12372371d335527f6ed4e34876fcba9175b38e6397f602d700f7c187fb5c2333c88d9400c0cda6cb6b64e371b3bc050103dcecf320d748f5e1e62010f0e146068810b891bc59b63582c51b59b7c005f222ae9159809b01f01fae91899b54e08700107173dfaa8075a308e4e600fc870adc080037ff70252a40c48d0060ba59895b1408c0fc61028087b428206f6405e066200700056ef4c3cd05b80f14f8e1463ef0b81900973c6ef5a3c9e706b84666909b03308bb811114af4cda6c76b64eb1b459f9b0df022ae911a809b839c886ba4fadca8882b717300de3732dd4cc4e393b013b847fcde246eba47dc7c9f9373a32386dc28899b9310628d604adcc874095c236e6e804e04747884dc140153036e1ec075ae918a8d8cb859e73602f6463dbf590018cf00a6ceece1b946b624ae912d891b993e809b8d78cf3552b191cecd03780e046e09746e94737c337e1237e2b999e7a61b09b959c895b846b09e79e7113dd7c826e41ad984dc488913e06602fc886ba462a37bf311b7d748c54d86dc12dc1bd92389e23d4602b859001772a39e9b7baec479e212f6c6196075f802ec0e5780ede1426cea4ad89b276179b8c9e2bc6dead1de5c5a1e6e599c5f3675ccde7c5a1e9e599c439b7a676f5e2d0fa716e709b0378e84d5e108b03bfc00b6871bc0de7810abc381d81d5e00dbc309606ffc08abc38db03b7c00b687ffb0f73eacfd8fbdef61ed7dec7d11d65e003d982700440080c70e1d43ecacacc42a7ba5200b2b61c042d8280312249d01e7b0581749b430041c84bdb24082278c818118f21f22701d081c876d32e41e813d43ee836d12817ba47b863cc73681c03d127b865c2446317fc08de23d46ddeb5fc5b15dd429ed3dd83eea94761eec8d7d9d423d6577b03ad81bf6754ae636360be12216b0711bb789031ed2b50f5b5cc3e68e82b5d3b0b9bdc0da67d81a8bb23476c6e6b6026b3f59191b631f76803562e96cd6c11d4d07058418e47a743c31b32ca716e69d6db9456fd086590e6325eeb19dfb92567551abfada5b7b235181354db342bbf621fcb0a9859ebe7be994769e36d9ad53da3b5b3bc57281b673875de9f371a5cfa97a735010bc41fa8d524a6d0ed2c1f440f41cf743cfbdb3f4d5669dad9bdb5e4ebd394867b310d7bf26aaa6865a9f4fa62be766b56fda5f2c2b2d4248b40266f07b2fff6e77cee02cf1cc0c6e2cdecd8b327b5ae0c5bb7938d79e164879393398a78540e1211c5200b378c31a62166f98825f3a15639456bc42166f806265f1062b7200b3780311d611816560d40f0c13816538f12f4008217ca9d45fdfd6f26e12494accc2300c931618d30a4a3b60d2d68c131c829c8f49073daf8f5d3536c90b518d4dc68143361c36b91f6c9e4c304f9385033ef4447a5c8fff79363f14633c2c0fa5527ad5432eef9e412ba01209bd90f1c22a2015900996efbe130ec124438236ccc48681588e9d45fbb44c6c1808bb7633cb2936cf729ad996d39663569378db60acec1b6c5eed2fe7891ad5b00c7379e682fad1f2fa964bcc7217c853048f6ddb79392aee4aadbbc2992eeee7ba6614d99c99346dadb2e180cfcfc47167082bb91e5b9c41dd59a586e44c0dc1ac20e94bab64892d17cc612e44924ac1a1d7a915246aae870dbe2e1c7a43cd6fe97a864339f28e0f76753a15797664cb0b3eabc35e25e8253b0faddb89ab5652b7bbb27937d995e0e0fc323424dec8993d53dcfded7457421cf4e6cac9d31db8a3877a48723f8860b84912231d27444848d0a3d9eb713db45f3fb47b9dcaad4f4ab23f8969057883346636eb21b8033e1cd925540196597c024b8a6d52623a372b629a6d17f7d361dc0f965d3bbd2f279bb7b81ff3d2e0ab896c9294c21015547a831c5541cffb045e8ef5b68de9b561eff12aaaf1515a3647abfaf23b433c158e0ac74bc9cb4fe0e5c8e3b8147829f9d6aed4fc902ed0979dc090df26f5a0042107565cc121986442a20a979c2ecc9860d2aea8b2a9694218004a61853a3eb1e1133a303eb0c20f74ac245d8010c20b8b56b0811f942449c092309934f0836282396433f841314118341374815f4c70b49940097ed9a0fd407d50a2e828c2c00f4a1452f0bbc50f4a1443c00fcad010ce38f87dc333f08312050cf0eca23081c9060c15e7082c3ae007a5042d68a171838b4b182f339a00e324a6067e50909c4006668c53cd9419992c683668a14001058a22fcd2a9d3e974aa991103284840676cf08934e0974ea15028148d1a5b186a6c3366cc9851e352bed5a851a3c66d947223084ded062d942774805f3a05a13ce1021afca090e04a8d0ef5a3068e8fc1f166115423d06793e31096efa976bc54fd53ed744a9e8a972331cebb24fbba99b86783dafdfd99b89f0fecc0aadec14bc9cbee14c2debaae3ee2dadda6a253f2d5dbf5f3b995da4aab7af57a540faf5e0f5cc2b9c7c0f2b3da4985da3ff58a0742bc757d9172da9657cbd2559897d3de603e5f3e4fbb39e7c35dd774b3f3447f9aef3a1addebee2e62492cf3160e08c5dd3c0bf7c3c365e637bc4d2197b46afb7ce57ca689c6bc074be3d4c6fc86a5874bd1cacd1b1ecd9ba79c41e9704a615ee75d5c5c5cbadf8012d7ee2f2ff53cb1da2c5fdeb9dcb8402f7781f91470074eed01084c0f2e307f991dcc057a21804bf7979777170573fa98375217d99a1935bacf9b7f749f40bad3e9f20e8a9ae5124ccf83cd10f3f0cafde07c9a70627068571ff3d369d88efbe90e54699cebde48f4b276347ea238b6c68cbf9a2de905e665ce173bbb9b25eefe12fbc8076aa5c245e219737a2905dcd19d66c904e798ea7281a6e480b8bc8b8939adbf592ec1312fd2787ec3f5b2d6d7187a81e65d5e1f730ab7ae826b87d1438db1799ea9d7bf275d8abc9b56e2173be7615c626e779e9652c41e2c8ddfb037ce837db8a34437d78a0deaa99b6bdc019ea79ba8c89ee6deeb70f30965e3335787a350a91d50a90bd45d87cf5f9411dd7540a12e0af51ba76fa4581457ad64738b746f3ecdf86fae35b771f39ca7a7b1367e6f58d8da98dc8f3d908d637b68c5c6e56ddc469e867d9db271e72f8d4b3bff138dd7a041e3e62256cdcd139f4e1dca5e1805826d8ad3e99c735e3aa3fbacf9bcb99730bd85675ca0eea7cfe72216ae39ad6f058be28d3ccde7e553c57c7e3e95cbe7b7a7aaa7d7dc3c3b8951717b5b1878dbaae0edb5b7f7929c02eeb010cbed3296e6db65ab5ae5f2ed5babeab75f72098d854331162291af162a299237cf49636c16c231879c4fcc69e47c88c032703dad17e5e3e1fa9f87ebad17c29dcd301fcf579be7e9e92e9f42d8e5b43dc6ca6c37d1c00c595a7ae94e3bfb728b83319a2fd836b91ef3be97330f73c8f9c07416761f1297ba5bebaca787b53bb5f51d14f5e5f3ddfbe5e5b153b3ab9f2d2d2e2d2dd485d216964f96dabd7ec22410c7ece67cfdc393d2cfe9436ba5efe6ac26dbd99f87e967a7e89de7919acce4ad159378e806e250d13d5ec921161a07c4f4ce6688336b334cb2d5076d289813e37ee6e9e96bd59b57cd2bbd389fab2f9eb81129c1d63525100b4ca97645d56e56c26deff2c77bf6d9aa7e76312bbb10051087f569674ffbf086210a1e4401dcf1b0a504f7af2ec0a10b53581f0f1ebd8255280ab2c4059a20c9f19278bc251e18567963f4cbb1d3aa4885f7f21f87e150bc82560aab934dc27777b73ccaf5f0d1ee833db318a69ac57073d8a9f5d365625630a77b1c2c73e38d0dec08634787c4e753ad32ded8e0ac7230b31aa6d993daab76d237db06ebf51deab53d53d7755d6732c130fa461e22c9aee28bbe91b7428a22254baa5ce1610507e776b2e4c52963d1dc50735c129744267662ca719ccf3ccdac0dfe9cb51e1f67186b279d92f55a139867b6c9ecb8a7383b0f636dfa66deab80367cdd4da5692152ab50137ad12ad4bc4420cede04948751602e33f4421e2641d924c97b602e0ae62e4762f4f2982331eae6332caa30293bf73cdf0151b3cf03cd9b056d18c68259a8a4eb9cc09dc93e8c65d91fc79926f639b373dc2fce07cbb2cf874d500986991ec6ce994c5d1217eba9ccac2cab17e92a2a016eb13629b8dd774a5e4b42cd700822c5ecce4e45277d141684b76a74aed0b743bd5efbe64535df2ac53d6338e68e595a6f07f7f852e3b06da953ca467c8a99cdf172fa9c6da248c5ab97d317e2e1e85329399fad538d611886cd79d56dda0761775bab9d1c9dea8de218b143ec545e3266ddc311db5af570bc94f2e56d70ce80c28e38af674d9da8d4a5206f05876a7ac583a4f35643e24d432afaa67fca7131a4a2530d0f871a6b241e2c872c2df510cb6e3f8ee51d034f5c3da48974e5d1b50422d8843120210ac30a3c4f4f3835b88b375d870371581dd7bddc03129b4cddb75abbae765dd7755dd7755dd7755dd7752fefeab75aeb4b77b75b4dddf500c42f1c8c6946eb38f0444fd77b3a7263cc428a37d6afcba7a2d611c4611d3b19f433a6d36be32cc433ae2ca477631df53c27b6e82bfd31cc61edba5b48ddadeea7db1d554fe4c7313d0784304ce48c9897811c01e66570ccad236b59f1a453273a023c736a73e399214cef669bd86e7ab54520aea7265bff6c7a67bae9404ccfdd4f9c2dc201b198bb8564fd45d4a9be78cac7dde954ebe3ee8738ebe8e57037d38779e2569fb4aabbe5f29677cfd61190960375d73a426a55cbadd327e1c95a56d067eba87bd7753f5dcb8a4e594fac2324d499dba4e6333335d742ea1beb164a4a143c69eeee4c439c4fa7a72793e96658e9cddd699e21a63eb93bead4e6eedc796297b967a7b13316c874eecd01319dcb3f6d1bedacf622127240e6b96b6dd4cac89ca7a3cc3beb01892317281803cfcb9cbac009c6f083e282224c1fbd4e39ab6d32b67b6771404cef6e25d173d7a2d00aa48e569b5d1c10d3654ee15665aedde280cccb5c72446cf798cb580f401c7351dd4dcf1c8018e62fa79648b48e9a04580d6ab690b0651dc11db055ddad2c845958905a455b556fdd4aca127b001e057389c813e90131bdcfcb3920845f0ef4725146c4d7c7d75b4338ebb4d8d9a9eeef9dd61054c1797b904584a9c97a9cbc96924e75dcdd349b59a0792766f3924c9f84409f4d7e4b385aa7d30b46048ecfa61d3cb8a743a6a0f52b093fdcdd2a6bcbb104922aa44032a8f0a2c76012255691020b19c62d255a1b88b07579eb9875ccbae47e40eb5eb353fd78de4dfc9cb53676ec92b38e593f598fe7613d5a32d17a7e478c07ae81b1db9c113c5580ae6f3cf3f145b40ae83e8e783ae8e309f0746c8fa71bf679691db3ac63dfb053fb88407cfdd30310cf1604d904d904d904d904d9401b5cef138d39ff24a610cf1a4f35353d6f4d396719345ec7ec12d9063f7b5dd9a9ede5c04b2e506d8b1a2d4e50c67682588648061b3160a09c808c07e5045f3c2827a002e71cf89de004efca152ad49cc234c210a3a482240531466951814205d60b7e5c407171014518f8a553920a74000fe722125328df7ca608f1e32e08a9403128ea1f65c3143684110425024f04887c6602c71bc18223b6be1357a77713a30e8e3e322f274e00de0b742aca20d4bc1346fcac27fb4ec138b74ef1f09040a8ef79e759e92ea8a442c54e63528c49bdd2a1680c2fc8e8a51388d197162c7803ae82db4abc12afd804771f5e9ba442b57c6293a723bebda850db8e98529ec2793ae48f566deaf79110f801a07bcf79ab5e8ab0bbb9dd80bb9762eca8d4a98e5e5c372675aadf4a4ff0d0241a3a4527f1a6979cc4551cca1026e1b61af52cb6e5bad878b181b92169627490d9e1949aa8999b6c460dd5681c5ecad9186d8cd765c524c7d76d2a611cd59bd40e3adcb0b171ed6bd0985183a281452f68c3cc492606e6c5a585a576f054b3f0e5bc1cf869258c49d18b56595fe51ce7b9f6701e625233398aab9c0bc9884f70b6d9c37d7d7385872bc5938e554e61d42fde11f71b68c8c53f8e87639687bbc559ebe994b7940ecfa9f6b78644f1dcf33411e115548a37bd8ad6904e3fde9c4a9a40f3986e3e91d1dd370677e1932ab8e314dc5240a5b88257faa6dfd99d7dec0b78e5ca50275db1af9b5f18181e8b494a304cc29d24262935114682a1159dea9930b0c00a0ba8c02e442ea6b0420b147ca1eaa88ddf165a8003ec30741c831652c004bf740a7614831629684137a9820c99a4618721be0142d8110a0bdc000511ce5b9e4ff0e3020a275c40c1047e831d8604c3e40218598ce1858e5fc8628c292fde34eca5303a462f68b1822f221862171a3f2d50b083c885775f53e102194001c78b125c9e5e05ce292c70d6c15360bc1016c5d574528f6253813820195e4e4332c01d41ae5b859a5fd20682f88049de95a4fefb3a41ae6fa7cd21319fdd2346d62712d8b77bc4481ebb438220a1f708ecd1ee758fc00bc41b30285d0109778d306ff10bdca7114208aff374662fcc5e7f5c12dd735d1fd00aacd2a9adb127a46ee0a7c50aa0b0c1fd227831a4e107a58b3690a18b2ee8bc2538b493632a91a72e98e07c255c103189027d3694c6a3ba97f4ea99e12856f1a45551a890f188480a46c232094b252cdff10956d2aab8052c1f9f502b6e13ee9843dc9b2832315c039671c91a62d1cb91b7247779da1a43cdf209964f98744a5ec625fdb824c624f00b09a7e0b824164525291f151f0d0c353f2a58be09aabd892215672f72c2f330a9555b9487524691cf8f48f29a8d357839f2998d36b0f1062f47fe027115a3c4a21c979ca4542fb0fc132c4ff0c62560d42879e2cd4b9a4a103edebcd4d4a9a824ba733f0077ad2c54249a85a8852dd480842dd470c484223d1d06e89ef924715589e212dc7fb15f12950793fc7418098e9ccf12095fec26dc0135fce2bd52cac885212b64749296c20a529a091ca395f49208b3801b96e113e37f208e2fdef483c01dd1898fb8cade3e7839fdac514ca30f9e0edcd04a26850a9f7944a1661eb879a0152add33ae5e4f37dcf1f0eb79710589e24ddf4963d109eee8a4572f0bf1080b6905229cf8457412bd9882fbc2d1c921df1422893b8a942843434b9d85184b3094a1a59325a393788485e8a4afebba2c1b91bc9c668233a46259d6bc3e821cd1a9ee5b4ea8b553367d354785c618634419d140d6e380f42d1b9bcb02c95fbf2eca08eb02c9f7e5958733fa40a10b4231de7bf3bdf75e4e6716acda9fbcb44bed55a8d3299c4e35a4411461086b86c4d301a194f0ba4296388d1c9068044f95cb09b51e487b1188637f4806743dfee18d3b1113be2084871c01e2e1e18940acdd03d6a6b1e1ba7a5cef0e2d13270c441bb3dccd66d942e3463b9698f74b9e158a0b9ee087affb40b8e5580249155220195478d1633089f274b41458c8309e0e25add22ca2cbe66843bd9e717e70aeb1a13edc2e3fb45b4a3a95832c220cb79ba353da18557bc6f9e1d2a308c430d79af8513107b6732f0231e44e7fd90c8b40ac5dd75e8cd52cea473ccce385b9f1c59a5c6c4ee5e71a8c61968bfdd2a240bcc3a355d9e3aaf60d36adcde27caecee6a013be8e1da79fa3550f67b88328c23cbde14c83323b71257367431fd4c96da81f0f095f47fd804343f8bac48d211e126365df645afc857dc21b743282072bf8c00ad8bac4977d69d31aa89cd35e974e0bc47d1e5a20ee0f3b81b9779d052a0231130f735a8436105b8fdc339cdb756e62bfee7b49a70ed497234536d3b301f04597c0f0c726211806c1f0da39220128a38c39641d8cfd5c945e2899b0c1f00261f2326183e5058a421dbc4840836c52efa27ef4efb6861aef7342a909d698b1c0786133a1cf265b56b0562db5f0a8d6ae1392af96fe711d3d35dd2c844d9a173553086bcdb2cc090ceba9a5d4d6eed4d6ae5e78d457401cf4e10fe04a25a5af15cac36aa22c39445fe01bf841215201865c8f781f5ee37d386df83a05435fb7580a03b3506d7bdc8f0f10dbe7e719165ce1ab37c782affef531f5b772a03e282da8023f24fca01055c9e92e3b0584fa91fd617833ac75eb54bdb5d6d3f6e1e9cecad77a256c16c24a7ce37c94381542a1fd793e1e861735b14fec701efb931eb97b7df7ebe14c08bd12561e4b42ce24eeebd406f39654a41579056bb736cb32b0f68bf3a1f781e530b7389f9c78836c30cb236744cd93348001b35ce35edef6e19cdaf2c39378b549d8bfaec92fb8de6fbd924bf146f301c7ebe1db6155017168af150805ff70bdb95e76aa42abada1d6ee6e94c21ae9833bb04cc8add713c07a869d88eed196ad6dd6c17da437803b0877b54ce8607b16ae4712ffe1b4dba8add7d1a9a7f4f4e65a81504ceb29f7b3e3f2f0e8e1fa707d63a1713ed53a006c8e63d63a0f3bff1a779438bdf1593d86615852fd11318fd7a30b09e37181ae67b1af803b8800c0b1981d0018865d22e27311998b0061d915b4248b8008e294d69b7fc0d7c3cffaacd69a6181e777d80cf18e53ee8788578d88f9bec2fa8416242287e57e608e4f38afc11cd799411071331058952bd65a4f1f75d96a1fc9b22ca9054278d44fe00ef869118918a8850372dddc183b8f5f81dd9a597627bc352f503df6ec39685b594ad9cd45e4b4b2fa6955ecda7e02009be33c6cf61d3bec834796525c59473bd7a184b55b4b71652129f121aef62ec7ada3b8ea250b29ae6251bcd1aeface3d52e26af5b3a9905bef2ee4f055c8af53b8d55aff3823841c0af9d55decbd1457b2282ec51b4d75f304e242dc3ce18e7af8ccea7417e2195a81752eb36b3dcaa2ec41dc3c7358ec71296aef2beaadab93097181b8790ab1f055ed852ffbb01021422ee48ffb616121d2c4fda0d83aad5b078462ebd8e9cb562d7d8229fda3d23e0cad689512a7f4260bb1c5f9502c841cbb8ecd4258e7cdf9e89c0ab119e2ce62a78feb72677f9e8f87bb8bca0ed47d3eebb2cf3fc1d9637673ed84d45f55085f164fec6c63d1a9ee568c10fb30b4b9afa8105ad1a9aeaf8038e49f12f43a562ed56bb7aa803bb887a35eabbfc7615f3a55ef83ad9daacfb1dbcba98f76daa9c44dc2661d5c5b6e7af836577c6d6e9cad2ab0f61f58ded2726b73100c14a483b707e960ce0888e91d608f08f538e0af57437ed989d957aa9072713f7470761f71954afd57d29574253d328490e0388087c3bac5fdd0c19825644507d16ecfbbb19e60049e87c3ba6e092d01c7c3d44be52bc5233fadd02cb421491ba4b042469530300ff86d51e5c993b05ea7b42d13d1cdb06137bc797b7cdbad3631d9b02b66dab5d8475a8ad64cdddba69dbb490a8d48346da7b4b98dd37250ec9ae36e0ed2b0cb3ac7c5de4eb9771db799a6304d81cb508624f4bd775fddddb7e278093981fbd8d5c7229698898ac6faefc57eb15fec7733f658a471c3774b192586651386d9ae043507bda56b625777ec07a8ad6734d2e72d6e94d2ad37dadd20ec3ac76df46a37e82de1ecbe5fb6390595109317a3a28b306631d14c266b1eb32e9336352e0b61ccf40199b1b79c66894d37d59b2a4f34d96c62823326ef040632bdfbe38074345d09ea6fc5b25b2cb7eaeb592c7698bd42697af73cad40cb72f32c9a97374d619ac23485698aed2d614a40c2d8af6bc64bce1967c4124ed392f85ee61e9ff5e7bc4b4a26d3edeebcdee72e767af32c0a8ad9e1b39ba698f7c22e19ef4b44eae045053ca2d8db6e8697edced1c77d0454f0bc8f78a38d00098c1e8843333dfb8f69044b3c1087d6dd3c8222219c9db8fe2476713f13899bebd75dd003715cd9e77f321e88e3c26e7642095ff03846b903786451e1821278d4ddef36a956c5df2624eeaea73775623cba736ecd024831a29ae1944a555081e62d8a651bb5a085fd71145a26a2695de80554ea9414e845aba4929456f563417d585aa6294c4ce80aea75292aa8f0118361b42a6b58a555565aa5dd3130814badca5109865f40ce3405c4014d52401cd244a4c98cc9ec660e08e56905639ff3e65984b19b2d6b9a02e2903712654858ab1a536598d59ed986b8b90c7dae6519e5ec014cef304b4dda3b4ebbfcf51f4efbf583bbf51f4ebbc5719c7663f6f98d0ae1ec9aa688b7e24dbcb46ba0cf2663437fc669159ce9ed51d1a92eea543f3b0ac37cf42a22414ba96233b3945a9565119ed2aadc44d852ca324bc906d547ab845ce0882048b46ae66133ef49555081ac5b188956bd1fa4556d5ae243c810213c679e596ca6873ad549ac490c51ac19d6472bb18da453b304a6ecc8e58916f743622dd34ea1662232490177589fa625d98332eb3e724028c6ee9c73623ed6f499a66b76e66688674cc76e92c264ba6949abb09b308a4d53401c19d6e274a1f1d12ca75396d79bad18638cb3b2c8a203c02554e24dcd512e0003e2804410475f2e71f734c3c29e6a2951ca72fa20334ed867ecc357f79c2ccae6d7d8fcace4a7d4d3ef2124dbfbada4552c8d9996609ea64a2ac4dc29c7b5d098986b334f8c3a8ae633359fa1d3ce67d6e23ee76ba404f1d13fa2b5639f56fb351f6784f58ce5d8cda81f14cbed819d509ad967082dc1d874c28a158cdd053f583effc3927d0a1161ec3aa184b367279430f6727a6d99b57eb03cbb3928fbfc8165600d75dd1ed6a9665148d0f88c1f80c6f5116fe6675c1ff126bb10d66efc42ede9f9715dfbcf7579208e79edf2401c99a66942789ed66bb545d3aa763b282a765faf5da09acf07c123ec06c1235ce151e48ce03edfdc8f9a2b3b85ba77f9bc99e6ca4ecd647739e408905d93e964ca4cd39a4c9fd8c97417d36776cbe54522366539654c57e62e329f5626cbb2ec30190c55921de2ecd8351d6ada6332ee313131d969662fee313142d82ddb4151ad98bffcbae47e34f798c7dcac5d71831966594ea5c521f1e20d6641258c6157430e7ed45bffa9d82dcbfacfc3d665b9191e610cbb103675c62dc047bc31fd45d3b36393e93d6af8c12e0fc4617a761fc491a1156cba10cac7c3d97f1ece6e0e824758bb31a70fc754fc62b3134a98dee27c5c82e011c7f1b0902ceb9af6228e34cb9382ca3df3f8e1d1a9ae6fa226bade3b3b3a3af3749a9085e59257448a377d7884abcdb3891eb6543c5a2525e669157ddf572d24dc4be6cc969265250b15e1f91d273a4a4bb2a5a4942da5cc52ca38200f69c83136ef4ea7fa4d948368e690d7e63b33bad68aea1b3350d8516e12eeb09edf13f07b916ef6bd9b9fb07bfd03d327c805a0bd0f87cd1238fee1b0de175b0ec0f14763791fb1e545c19b72b39452befa627c76734cc2b008c3226cdd005ad67c96f50c26e13767ec2b46ed5cdca4a559525ec22ccbb267977dd79d01c411a38cb177c8e7782bc6b804e28829cbb2e08c48f1665a9865dd2ccbb218638c45efe65dc618a974eacdae2aa0cfa62dcbb2e29c44510c9bce35187bc1986c8c62f659966501b9e4e976cbb2ac6bb5e684e3ad6f56f6cd12d87a90cd1241364d08b2a979928630826cacd0dd5049a73e93ce4e8e4ec5c31dd01afcde9f75885dd77b8971b08aa6f52e6d7cb061035a1bb4336cfcde0cf13d85958379fd46e913d766278e5f17e3ec94f2f75016d14b2aa4134dd33248a593ebf0daa493ebba57165d97459d8adbb15358ad6a551c338e5989a593ee3073a7127bd289a4a22b82f8dabaee98954b9442ee67e62d5d074f6bac0c03775d108f3fbc0271ec066181b03f581dcb726827cbeb14cd7962d763e62d974bad0aa355358f9754eaf3aca9a9b9af42221cebddf2095e9b25ba6fb7e53c715ad9291b3c6d9e59e2199fb1b9e5ca4e5df37ec2df278ba493bb713e367e6a958d69e3e554ef663b28ea56efabdb06e15966bcc5da882c90c5c6a10d1b980f87d5741fec0ccba353f0ce9c4e3b6379cc0bc2c03c2e20e17aec701f6e86d8875318fb6e70cbcd12b79cb31d4cdfdcd1cefa80797e518a800972d26ccc28d2a91824ae645151dcd9d1d1c9a9fcd3cd271b57bce1e1b9e21b1e9e27bef98b375f55a19e1e9e7b09d07578bd87a1481457478cae2b97bc9c78a54e3a85c7399d3bce1066f9757d555fcf1138d40391e24d7c3c59d4756833cb2d82e1be403ea77b00c32748027ce2e250e109f0c3396440f2062fca80811b5ce0a4270a25810865509ac2031f4421093d91c711b0384310c6a882951ff444a11d349143931d5c19c30c69e8895188064f68a10550b2f0862937e88935b268431198a08528e050869e78f824aede16ac1041072da0c115286fe889d7af9bb97be403c7f98d41f3f7563434793bcd2fce8726489eb9e226202ef28123ad3a8e79ced3cdb516b9708d35f675aae5a6ad723e356ec342ec43c56efcba6af5d1a9227eaf0e3706759e3e7a37efc944aa4927cc02a577f3f0d3815930e5e53c1c6f30cb2d02716db1323036cbdce27c50a8570bdf62596a6db95acec272b3cc5b6eb540f0a837d783e52db5d6d4dc2c53656a6541b5d83c028c7a45b5c86469046c699161696161794dadb5c6c89c27b2d4a050e7699688517f28d48db12e162a6939bc57cb7586d216630abbee758551af4b421b7fda31cbfd6ab1199eaba2c21ce640d785522881f9b334ae5ecf0ace0b5361662e8f4ec59d1d9e0e8a0acffdba6c300cdd3820354fd210068639ed0dc20be63211c3b096c155464646a6c23ccb322bd3d2f26d9bb3a6065f379fe6aca961f90ccb6461d93ee7e92de7892d96fb767a57eb617d76b3ccebabdd80bc96d8d2f8b2f9741cdbeb059239cc4f3236b6621cda8f808779c460baeba353f130f688272a3c4c9c302f020bdab00ea770bbf7127356fa601f9e616d58cd6688945f520f36bf241eec129005e02f2bb987b5cf384fd3f86599e07ad03856045f3717c1d72facf73a0d6875f86573110c391f1deeabf0066df8d81fd6c14a3c63252ee2881d8c6fd8d46d8d530a4585188600f08b31308e4e7539ac3430cf9ebd466ea8633335a73ffd0454bfbd1e3bb417cc31ec2d254a8c31c6966faf7609cc88ab6215ab58bd281490ee75fbc34b74b72c8713c8f60aa47bcb6bbd7e51f3fee85a2eec2c167744cd5b6e713e20ae3976afbbb460d5b6d4d4b7dc0e8a5a6f904dcdb10b54f3960bd40fb2c1d8c5c11ceb189a6337d3d3896646e633323333a773c3ec4cfdb57dce1cabbf64664ef33973ac6e37d3ccc0a06e16c23317759af334ea9845ddebd7bd0e2bcd2f4bf3eb36b64811896d28141565043e1dde98c38bfa0173780dd700d53c3b3dab7906f32c7b8d106ef966abcd4be0faae669e85e584af99ebafe1cccd95c576f69ab35fdf5dc76699cd72afd6be4f97f9e9a743ce0898d3b39b6b7e3ad9dc99cd353f9d9e2290487bfb653b5699df7716a8e6365a7e8a6979cb05aa39cc793ac666991b64836b6e66632bc66cd8ec04cefd9c1dfe5a6bf312983be57c68826cb0072086e1acec148dcf56c1dc4cf3f21c64439fa8dae169fc7140b403d1b84eab7eb3f6a2d138859686c5792958e3ead0b03833666ca7b7b81e309fb7a59e1e2373996a3b27ae7abd6216085ee6790458a66d77f3f622c780ea9539fca9efea26af6f87365fb78548ecb66d4e0f407cf1c48a3b1999f374dd36192af1574a52a9704952e9543ccd9bf3411d2679cd135f1744d2a9186192568ab1c66e766a9ee61865253ecafecc7c7b4fa139a5b12d850415e22e2a752a763d66248e348fef29343c5d8f1df1813ccdf20aef769e48597e3ae47c644e9f91f90942f816784fdd6796f5422c8461cba13d1d93796789402c7319969f641acbdceb7008266955bcacf6160b1f632186b15b2aaee452dfc4c725b9f4febaee34889b5eff020f84fdc1ead8d952eff687f490767482b0299d1d9d1f9e5f564004011f8405c2be77f383d5b1ef997ebdbc3a81b5160b5d8e2f17ed97764a2f9b25bea0e95bcba185f882a663448e60ed66218c48c4da5f778b34d6363b3b45ff26e7a3f5b3c7d364d7e638d74071bdebc99a7e37577c8b723a036630bdcb7e0dff7cbcbc53fc82518f8b1724e1b7451cbcf0037d36167b733ed6a1c5ac0d7e4f25b33d7baa974ec5b6a997232f73736be4713a6533fbd9c6460632099b5e5f4fa7b1e516694c2f10f6ec3e75fa356575294993c4b27aa9e9b4379b996ebc44dab1ab9f6ccc672cbdcc84d7345dab5b18a6f46a4553344919e345994e9fd1ff74c274b07c0ed261a9cf520accf298fa15f7230f44816cf1913ec18dbd85e592e592f361b1b0c93e7c6113082414b823436c7a8661188605e9e8e078ec6617c8bae998a95a96c9f4a249c553a76c4aa6146fe4840277403c1f399fd9d997514a7fe0a5c4f10836fd7158b4f5662905ce6e59218c5d0905e298a7b6bb73de9f2a805a8f688ab6237c04dca7415aadfa61f16f88dea144b8573409d690a858c9da15dca752a051a050a05ed02ee813a8132ea54b49076d02175b3c1d540b0a856631847d4c588212b048c21548d8b1f4084628821544783a9e109e8e478fb4677ac425d53c97b21013bc5d20ec6e00080d498b625dae28c90d9668132a4fd39d5f4a97946b4a0bd197546ad690289256913c24d4852d4c128324947625224a02aefe8a3a25c3a8c7451a92961457abc31e2ebe78826bf0e3620b3dc043c46d088b3ac0eb814f8e561795c4ea431c85848eafaee3ab8b0ad217ea8143fc7501a947e966043bbe93a152123a2e2a890044d13dab0bf50c719374cfea6a4b3b2cbc126ffa28b8d4b3d4045a8937d04a92172025e1080b4280831066cca10566e881942200018b2cfb02b7159d6a2b5a968c4851e0113da249540a9d4297a88c47adcad7d19356e5cb8a2887fe9998c80730f6db649549e9d42cead5cd94f0bc9466d1b6b2435c6d29deecf4ac4e91b4a8bdea4b6e03a6250c7ffae4e98078e9a2f18ce18be2cb842f177cc9e00b85ade71af87a3f1d367e5df8d2f0d5e1ab055f31f8a2c157a681afc3a7c3e69785af0c5f1cbe58f00583afee79065f33f065e58cf8eb2f4f47cdaf9f9e0eecd76b9e0ed4573a78c209ba60c2043288c10b6d28831ad0500528c8e0e286a5472fa76f63a9105e4edf86a5437839fd6b29115e4edf5a6ac5cbe9dfd222bc9c7e0d4b8df072fa342c3d82a558bc9c7e8da5512cf5e2e5f4a5a59939c9c4d0a34c8f5e585c5a5a5c58606a8c4906eb66389a0d95cd9834ac1a78a736a1e1ebaf877bd690e890fcc34e7bf07434d1f8ba4df8642f8aabcdc9d3c1dd6dc9cbd964f072fa97dd66803414573b3b3a3aa9d47f3ad5faa658373fa54d43da5137a2b87aefc5c00b43d9cd6fca9578f3947017acc49b97f41496f4aa1c552446575b4f5a889654aca38bca75ade894a84d59592de9f5684a5c100d29deb486a4213dfca6b42a229199d27bd6f51ad9d0b3a4646032a6a556e24d3f1b6aeb6892d1a91e9a573ad5371bead4950b0dabf7af3398a14a19c820c6d3f1769ee710473aec35063184210c3080f185a7e3611fc25e5ee80217bed88216b2f074bc1dfbb070052b48a902159e8e293c1d6f652f25aaf47a2676e79556bd2ab8875a6583fbf7eda070f8db41af401cfd2bbe2a78a99f51e9674ad9142b948c5e3512bdd2aaeb3b5274d1a624b521a1434a1a52bce851bce851bce8113da2471a123d92ff751d3b556a55afde1888faf445b9c114dc975218b869126e2a05379d829b2ee1a654703f62d7a5d4aa6c1de17eff92d2aaa886ebba2e19869a2d892b7a25aeb4d3e9ca15dcf4e8a247adc294a4154fb0a051689217966654af4bca752fa52f70df0497d210dcf104dc31dfa749e6942b4a9a9598440577ac9713a69605dc5a16efa67f2dd57c295d5270bfb150af21c0958ef7e911dcd1510cf14c9fb0f34ca1e0fe83abd533bd02f7b52cde4ac76da4a7030ef1240b3b770a78755fbc71026e1c7c81337d428fa4e03eb5826281bb24f519e297a32121cda259eb545d216eac48e01012ee6b487195e34be20d11922a74c5188050063324e1620563e8e9d3a4b87a5a20c21bba40c10a9250f4454f9f1ef5e993d690ae4b5e97f692f2baae4b5a5d12c4d19fb67b02c4d1cf613b258b25c55537a55bc21d89709ef80644d8e217c5065530a54158be1ce0f5508d49cd5d845101db49639775b5289d6a2d8916a1660d89e60888866e18c332c9770d12574f0b1714810b2fbc70852b5821344514bed00234ac000d33b8c263c459962dc2470b21ff3abb794e7afb06a957b4daa68270f61c14c8baa94ed99d4ec9c723d41c13e815ec0bf46a02d67d2f27e805471c9d98a234d220393c68c21331b81203388cb15d3e88bc10791e791ff2b11e55410a98c29a514bce2967462d4fa594deac5d1f45c86961162cc247132a13decdabc211de3bc5ed1a21e9212b601e8a832adfd80add411aa2c061c8eabe2e0cc3b0177c458a83faf0c345158584f6e24deea3de2e0a898dfbf62895abf1069edea0c6dba0f6ade70d875ad4f5ee423d9b454524b6778f16095a63bc6c4c7204e7db397b24e7f4f1e8f34625a88c5ad43c77a11e1aed8d4fe28d44496264428d49bec0f021417948e960734fa386e614f3d2b27dbb47ead67dbb508f50cfb448d01e6e76b861c3d698819a918171a1e7cedd232ca717850477c474ee423d3a3b3d6860a56fbea0c1954e3d4c71b090384814a78b0c470ac5f142c40103c311a3c3c1710386d3824364c2b9c1c46982e100a1e22c61e270914929706220c42ea5569246481cff2371bc3f4abee8d4cbc1c9c1a138393ef89083431f12162d447d34846da80d5b60217be0a1071e78e801272707a7071e8e90e651d110ba80748625245aa530052415a4c1085b28c313623c7184863228210567b849dda452373cf4d0030f37a92eb6a12eb21d74d841071d7648dddca476d0a10652a2526481750485083ea881149a832690c1851a488104220801d5042258410865809102316ed8dcb0b1b9a1c30e3be870c346c70b26a2a23888a1238ac3152f44d31837d002d213ba508193a7c4823608210d56a258ba828d6be35e1b36376ed8d8b860704a486e4042541a831cc06002c951175fe082942878e1699105932d94c007670803137bfbdb6bc3c6b55faa8118b168a90851968a00460dc4e86ad0a841e3d1a8716b5f834647b4059328b02bb0985133a3a666068d1a3568cca8a9811bb221a3ed280b3968e106ac02533001030d5648811656e891c5135388c264075a10a168503434a89a19336a5034453598c30e43b2480957b825cca0067368a129031a5c4006289838614245f2e40953920841ca16664e33a7d30c0d0a45337382568826511c8265058a11a6406492899189813846e63433739289a13357546105ca10ae205971d237983de50c302f302f2f3031323231302fcf4a93a316230b32ca6882092de9810f9e907405165248118ac10de080831960a189910e5c5a5c5a5a5c5e60605e5c5a86806015c92b96700d41b9a20b40a8099822ca188650461cc8e0c2a5091960c00530d670a50b2c95a5569616179716963ab4846da9ad6451460cccd084254c5367ea3a536561a9a68e8b96a12b4a6240e12283a79ca56cb0b2030a4340ead9eceb8915c9df4a70c7f58deb4ca6ae95d8c06df4b27d05e2c030ecfa5184624595566aa42cdcb083ad288b3054c9a20d4c622276b552ab20848f4a5a7561f896624529e2f89f88e315b8e361883d567c1da76c3a45af518e47f1283ee1ae63d1008f3b001c8262034de85f7c4cd22918a5b04e3a05e13354964d0821841042089fcda356e548058687394a015b01a31c628c915a9b8b2132c1f04c5a85dda82416d1c3c72471d557fa061ede2b49ae60212140610a5350d284263278430ffc400c64108619b0e0074828ea816f25299d82ad94842a845b891e1e5e6707c377dc11d115d8ce77f36e62577a9d9dae54bb463b4f05e59729d8fb061ebb39e8a56d4f692d0eb521bc14355ee20e7a419a32e30da1ac210b8a2e2fd43e76681dbe8160774bccb211a266a7a07521146e704394396bb58136b906c31a323c9efed73f51a9fd5a695073ad96176aae58c67ed8d2e95497a10d456d90b205194dc87801192588314a0b0d5bc4610e6bd8220e52b6d8220e46d8220e3bd0b289518a311c6f2682c5a0cf26c7da4f07ca080df7513d30dc44707d39f18fca18f0bbe522046f592e3c5ad510ca9d4ef545549b0ac8049e563da690e2ddbc8e9274c2520603c90b730ad748c982ea438ad371843bba21fcc4b82e6c66b3afab67363758b553cd6ecfb89faee3e829a4f0c5d47f3ad54a651053bbbf68557d64796cb9f5f94c8ca77279a9184f33db58743fe9a39713dfe2a44db68b6c33e9d49267058e6f213cbaa4d29c4abc814b5f3a5de633cf6f8acb69ec11a19e98547d5192946c4186949f9e65d91483cccb2683a77d5cc4400c985e720a3456a8e764857a66ec11a11e97cb58a11e8c0be2f223423d2f3f59a19ec719e0f5709b8c7d81f9e30cb07107783d313fb5929556750de5e9b02e12dcd1f710477c3cad9bc415d3e67a40dc1d6efbb888c1949898273030482f97f9015e2e736152bc897d5149b85ce60770b9f028dec4cb5ca884e361ec8b854ee24dccf08a8f238220f172e2392be402419d8a2728d43c47805fa75650084843434324e889b8f1e3620a2438fe79d17150c279b3fa0cb853b01f3769f371e749a56ddedae6977eed5eaa5c0fee08b5ef6b5143e3dc48192ea54ed10c49780d18c7a53bf57440556bf15e1362c5afdba26d598dc1dad9c4b2c091484957dcb38968602be9541301c9db0d4f4455d48e828d50136f4b9ff13d25be91e23b299ebe6c700b55ab829f163d608225cea75ca31970844115386e5570de280ce47c883ca42ab888758821670487ad8b6122b00c23347c3391fa74583d68b03684da8f69d812667b70478d879c4f4da72c192d1b31c5366c4e6b5e73cad813be89d5ae1f578df44e3fa552a73a6127b9de49e2aa91fa26be67b565f5f30eb6a07531db513a697baa227030c64b3d5c040eaabc9b876547e9548e6805cba446ea543c107543a218c8ba9dd448495e94567a5c750f0eaae0f823b4a2fa70cc3661b22e74b0141357420fdea0ce4e755cc5bc877a1ebe79aacec24bc5c3fcbdc4d853bc81b9a7cac35adab12c8f1cf149e6c4b9ba3cf60b2abcd549ee1196f591245a4f72b5aa932a52844ba91ed913cff374401cef230a7ec1b127f69cb67872829f164ba6e0ae011638be66a6514634eeff346e9a211a54882d795b4913b510f1538a1a3f5f507323e11ea29274df1423e0e93544e2ea717913977bc4899e98edc11d4fa68fad30aa0531c4efdd7d9b80385b3ed6e9e5c44b30eaebd40947fc5e8eccf6deab7c2fbed70f66710ad5e62105ce0d76b4646c1865438c5d968ca6f774bc6aad0bc26a59d95662a10b5a49107694d685bdc7257087fc7b9c01dc31ff0e93de54aa531e844ee23caa4ff007deea03f1a63f876a9213245a720516a5ac24f978a9d44ba5de2a35e79bd8958e702cd20932b91f3a50a94627b831ce270874f28154eac7de15ec5dc15eab50a894ebd515aa9a758ca11101000000018314002030140e088582c15834122599c80f14800b9aae566e5219c7410c43c818630c208010000002300022331236004d4c9ad4fe1b205c0d47cba9262b18dddd43ae843425b3d3dffe8a66264ec81f13914a39aff197e23ceddc8924c905c451d51984a5591559ac00857b7d28397549726245f4727cdebd4dbafedae399c196eb4b6137f924be49ad58225aeb0c1b17d35d55f87cf57243f985628240bbef242d4daad018a8093a72cb4d8994b2ab3b1560e3d85c7402b841860fcf4144c5f53b965d7897e1eb98f5e0bad622d5cfbc9b567a29dd7e71ad3cfec3b7f3d248d13a889cbb48d4d6b796f978878bb363ebd24624f13002a7a7f95e922dab84e5d6e62744258527c587cd81715d47edc77a461e21f17a0788508c657eae08bc2029aae1570ccdd7bdd8a74b1ae7e6b2a28f5348a18774fa0ae7bca1f105de699b4ca02dcb81f8b1fc34e68b66c70b6ed659d804dcfe0e26dc8cc352b32c019078684c72541930a6099eb0a2ba19b3331682cd06903f2dff7a8b6e25178baabad5455dd0083415135840188659f950aee74823683db9f446b00ebe41145a2ca039430be526fa91002f2ed38e663bc49103916bb938349cb3868e1e07a6cd03516b6146b90bce4485e570c491572111d0c02b6d45f2e231333438fc441a992fb1ac0dc6822d9224cfdc38618dbd1ee9e36e05100fece3ae0926906da473ae711d0cadedcda0a28682335cdf0e6bf9903c23d4ccf8f053ef9381159a226f7783af51d250eb88a54a5f734a0f8355faad6db59504c98048061ddf1997890345e4745259884f9e3878a4bb04299985f3cfcc181e129b6d7eefb63cb2c1a9ff29cbcdd8cf864ed4d4e9f188e445def372b8b5af0315a4021648c4be1ed0bb7474b8e9c223a576da9eca0da3a3c28d4168475960875a4e5073081ef6b506babaa61612504c947f1b1a89c4fdf902209b143bb9ffeb51294e98a4544a52fa030ec3511c85719383abce2d20ed3bca6a71c47b9d754ccdbaaafefe9e5f62b6ee69e2812bb138e9925e2b103d0955173ac5f21be0d8edf6689b747eda8d2635879b281019a36fc332d2b4fbb44d53ebc87b9820385053dfa0a63eb0073cbb9deb9ac65a7e73696c42d1047e502585c19322dedcab310ca13b2ad27c274d63f17045353d29e355028b4b0f78258ccde06dac3c1463a73a8ad330a632e856d859873bf36f7d3b347750ad7fdc9c853d60acbdbf9801815ec3c7de7fec96733ea4e0aa8bcc8a29d11478b1925688a2cb4f47ca39182081ec138739d89bad722ad530964923e87c3f1733515507700aa3a6904626636e6c0821681c1290c0185dc6e625936928cc7f5b9852ede23e8ba135544276e694018a28ca7b38859f30fcaacaa0a68b61ad8376e671b9d62b346ac374996a2a69a72ce0ea16332bacb3873a03580721eb87c082c2b865b31522eae7884a7bf092365bccd9f82c836fc72e472d6d7a6f96cd967dbecf8f8166a8945e51261ee2e25127c19279d3b56e168b0fb80e87bb990f23930275fab4e2e0ccc07282544c128ce4863c34070b815e5b721e86435135764a501998238b74f17f611c02dd3862ff58649b8ea12b0370bf3c51167468717b21fa5ff5cc641ae02484d809138b6b849724a7ba70af3797e3812245d5dc48aeb78da64b655e7ede56a40cc926e8949cfbc6466a8e8db28aad8d97824a2127981df1828b01124562809d7f0d20a5d900a9cf069c4c6ca074fabc8a0e43fcc21d870dc320e0dfebee5daf0069f1c830924ab0e09a478d9ee8446cc76b6c7decf04a27179e4e9065d20e34cd20961a3c0a03dba973bc9b08eafde99040ef159f0771ff25bf4257eae7efdb0a283b6120b47e574f26831d50628f07f1295e46c7da7fcf7a86806e67fb9f8255683f4d8bfe3b3d6e85d2db7d94f4139af292f433309706c22b25691892888681de70fdd0bc92e47d8c44c353ae4959cf41e376a25747d944ace91775acf0c066cf17080c47312839f85fc491cede7684277c976e9ba4cb84258fa2bf201b28594d6b10912af60b5a29ad7345897044843c653200d110c8331b7887b1ea8ee2f110d3a039fe9983a664e8275bc88c456ace37a6510de02a553927f01ed8517f3a907fd3680b1ef82daa685a93d2ab89c43c719943183ba33259b786d83c4a9644c9775c95dd17d7c6bd5c733c75d6586db60c33e05249b7e4dd2346812b8979fe66f085f74ce3582374ba84c5f9349de0aa0b3986c74d11b99672f124ae769f34f9de7fc729ab53200f72b2a96f35971b8cee2cda7d3aa9fd084443f694cceb9f5ace848972ecbef4731b529c260a0995bdfb417a7dfb527d76d1cb0480804ee37276f1354b7fe7500736e47dc0c5f995c109649ac3c58d5632171c3ea934318d1981ba2db198a562b09d0c8976e4348074755f3816c38ec2875eaf468f483f98824f18ebc493ee9948100ad0be4aee5cd415cf69e9e8c5cacf65d3405d7a67e5abddb2352bb3fcc444d9d9ed82963a4575df5efe59bd76117a2e337d5d4d65651944c4b36f3b479ff8e5cf093a5199a89933110eceb439521071e0a5d7b9f033095db4d2f4a7033a7b7db2f0a67253e409e66b5d004b1a7c7110304d77c356fc583a17b08c2b2939963fd71603a46408e43f97175220e283e87dc39268a010f91fa6284ccfbe3760b8f58af90e9f9654bfce9009962bfeb611be73da4bda3bbe405408906a8ff02ed04715f688509377907dada025c25c2f8f234af89982f5eaad95f36658c5b2bccf796c8c49e200d65c3ee8072cec3eb93ff5eb968f61c8de501e47a708d27670048f1d8f996f45939dca5a5a850c63922e8e3cac44d49df2813564d1c712e273158c61bb6a9ddf17b0c88391a6b928889645024e3cb999d0b987e3639d160a2b53589b7ec2ca0f4990ec3d2f10a5dfb7fe0af8996b5d5f1e609c66927a214911f69724a5a1501e88c47d048c5396c8060e7feed89a430f3454c96c79f212a1c69723359c84ec070e4755129054d6cc9767490735161d3eb0c9caba66220ff14da04bd489d0dc25d2078c58f7b926f7ad44cee2f04430daea710edb7f80bb37aeed920f5b9c7f603b88965c150b4b0691eb2fe1319f00f9c891dc92923956756f5a3af74d3226d045cb070fd887812e6720db4f87c5c9dbea63025d91956575507055efe5bebadc365d56b41528a8700305e4996c43a004dfc03bcc5eee6ef3eef90cc398e65b769d17d36451aa578e1350bf2fed40179e5c21f769d64a5e73a6e3230ecefd5417c11c1ec6bde77e2d101fa312b3154526f767a497da2b0219903e045df0ea6c896d6e4a70de0af71f38ead5f4d1f1c53714323acef7a637dd5c0850a6b2c7487864a988a2e3aa2de7c623cfe95a8cbb478198aabb8f48068b107a6fc13d44236bcc257be094535dd9ce6a7a2e8887989ffa1457239b5829924138e5620d7522cb094117da0cc27109bb01e9dc80a84bf2b91731a44925b530a1296b4925b19d270468f679ae24405b86c960cd82205e61e5610f7764f764184f079c4645bd9cf76548fa9d96c2a819c53dc72a3f7a91d4d1ca4cd372db6b4fc889def6048e92f4c90a6e9680994cbf8b09a57642042bbab967411c443e87a590bd699f55f4bbac21e9b3eecb747058fb3ccc7025e86c250820ebcecdddc110422a2cacb3add028feb4b339ddc28988c4b6a6db6969e2cc2d825493096520eb4bdb795e2ce7134d64e25904a6cce0090c4f448d59a78e44a089bffbca7812e1ec9214a710c78fdf3dca26183893ca9ea1291fad0824642d1748487825ee180d46d129da58f12f6a30449aaa0b6a37dd5f2772d37ba8881d291806824d16c3939aa68ed7217b388d4d976971482232aa7efb122977d1bade78c5a69bbc5f80a7d3814d29dbbf2e9c09fa99993a34d1c0d303aeb2099cc2e12062dfe885b81636ec3132892e6a09953b8a723e577f737ea8297eccef780c206efb01cb0ffc7bbc17717bd6db274491191336c800c78d12dbcf802c4cf0a190f19170f873cc4569e7c2786c7f9f3c101b00ecc16299f8b3b3c62be842287ea5f81ec400501bc8e1904dd38ec86033a3f2f6bd5859d17b918c13a159b51cace15d30db6705cd2604af87c03bb841748ad75c2afcc29c3768f4ed8359e5800e5da91e8e575fe05285f4df050a7dda3763fc983ad29de62fb9932aea8254759f75fd6cd033ecc325090c39401d3b938ec040081da1393fbfeedc7c77d31b39b0e1e97d60200f0301de8f84f7943114e0008ac2b45febae7236c1d040682fe3c3de8f0ff54a9601fe572078452efbb21d5cb3bc23c23d02b87e0430a5fc0066b0154d0ff475925f6a206b09b802b362c46d27fa030ea4a047103200c4a6f24a2c375b821fca5585a6ae9209a06b1258096bc3dc739bac9c4f9332b34d1981e426d2ca989b9dc80f733040cb83cb00489be49569dc74623ec49904ed339501486e2aad84b9dd89fc1060033403bb0c80b4495eb9c64d27e643644cd0cfd8cb08de466d1ab3f2e0aedce864bc04a3efb087bad471ab899b7265374efb7b921f663c868ee39709d036cd2bd7b8edc43ec4073ef43f804c366b1158c023ad1470d389fef07760e8e2011981c4a6c0ca80db9ee80f770643e7339001a46d1a5602b8e9447f409230b44a828c406a536165c08d4ef487f785a1d32fc804d2360d2b07dc76a23fa475187ad7410620b1c9b032e05627fa035fc4d00623640209d53427b032222a6e57ced5145c9cac4a1651193a25ca1455c27179e34fa64ceb2073d412a3dee696c32a6e19ad5a2c0938812d34f9fe163338fda0f7e2861a97fa8ab198320141907164f95b9fb9d750e875123fd334a7408c9f7eeeddfa6daa580f83812f2eb01f6461838b50b9b01bae09ca586eaf4943a7df0a7a7e0194ce544c161d130fad0e90789c864d6e935f44d61b6fa463131f915c3d4589ef8e9e9bfffdbdea8c5a17856cccc49e0478dea46708e3f220cb210435a5a5884e13f17470ac8236f0fbbdb391083fd4aad41f9c83ed1c312e64398210423fcca5c03f78ec1e375ffb2de905d744ec47c4c8ab33d8f4a5e4682ee25958fa9646ec1d373efbade9692087977ee6e7569e98356d9b680771ecef0e34175305fea91e010996e0411f7d0ff19899e16fbecb927b5a81d183d158da734b15ca264e83ae9bc7e81bd5229d416aaf3478f196efac01a3d3cf436f2d134b6c6010e0ccb02940c220485326a8c8f7d720e60c7fa53956839becfdccd93928f5e45029fbe11cb6b5d18240d331a888e66263e339cd5b2bc2e0f4fbd2b80f055efa6bbbb269d28007fb82acdbe31cebb343a457dde2ecce5653758beffc0a4900773c6ef31c3d28680725ab822aea701dcb7e82ff8f2984b22e803f9e0cfd252755095b2290ac9b4feef6bd036d0ee73c3fcde337de725d1530f2fb49eeea87f24b6d9d5436a1e449e9812ac6ab2ce920a3a0ee456693f03b784c0737d9fb3faf81e11d00455acaaf0400e579647f66cd8212a1dca7743c1e3c4b210c9f7edf9df5ed5531387432902e38d4c28241ddf4b733a65a7effef6b7de26eed0883d3ef4b675acb18da1ba46206d0ff24d0d9b74bec1b59dd1679250988d8fcc3452a1613c0bfd3c08481ab44e378d37cefecab12faea21b0d9e94d70c0bfaf71bd93c792d93ae4c9a91b1fa7d440f01364afca1ff9b5c6ee83933559a1770d08b751ec4a59781ddcacce99e3e73537018054c0df13aba65d1a60e9640dad4b5b3dd630e4ef6cf9f2d3d0b0ca3aa809f0bf6485fdc0f097dc90da359321d6df411d167f6c4586fc2a622a3fcbb43a45f620a3ff072f49bf294ef54fd587fae58a31e6ddc870b98885be4c72785dbf2ce22ce4dc142c553e765b5f61f823cbcfcafabf6e452606801f1f502af148550a398bef8010eaf59be43a88b4aa01d902f7f66e8cd342d09fe19f157c878786da72962306871f6b890926927a66b7d3dc5e1a781044d8c2be320b3923ef863ee23ce15f5cbbbbef5753d68cfb4925d9c97d0b46820c94483e850f3578e540ece4b08b92186fde1dfcf45faf525f14ec634bdf040db30d07dd20aeb5a6e86c2e84cc0d0f48b26acfa0dc6ed89e61e4377bc9964ab7a05a768b9e7aec58104dedb7655a4d15ac093da4509f12f92979eb56740a0934a1bb52a0890b4236f1f2a6c870c28c9ef959ac0cfcdd4d49e937579bed020c19e962752141ab6e7d2681e7f03ac2e164e7f67ec73017d456911e7b2ef42748165cd2a0c923db7b2b6971beb2167ef10c0eebdd6828af166637d53f26310033eecf2a8324d7ffc11b4e79452cb60fd06196cddb5c02b182e482288e8c350af7dfe502bc7412eda014dc9b465648becace6710c8d3b7eb95670eb1265e08a3e585d365e4371f34b6179c8aaf353b457cce22d25ee0e8e06cb1bd4c572cbc1a56916123399b0a51c258ab56267c7853e311a3487de8bb18f0c9059c1ab68c4bfd0e58bfb2a2460c3cd3cad7e8755f5fe04446c486feadd175323aeda19c9461d41bd3aca11fd9bfe60dd2341e36a309308927ff120809dc2c2322d2d1de9f1f80ae7cd6122775d2ee2485ceae77c84396868cafc9e4a1665d62ba31c15ad3dfc9cce620183371982191cfc0f940d7e68675a144a9e47a7207b53df4cde7f69ba331f85c2db96a80bf447a40e1b6cb43bc9fa74eb21a7fa2d17829b5751cf0d058544932ac38f9653c3bae2cde4ca6591e86181a71461805672fa310fd31f6532f748138e2b49c7a5870e2f5dd169d53cb130efc29af607aff5bb0038383562a0b8e8ad4f5b6987a85b67f798d1607eaf2d690b01c4410c177cd1f11a46ff8eff1c142ee0792160bc5ff3168433746c49ef19588bde508e723ae3f52957ede00cd27d3b36a85236a6ed043fa2c6886874ad7c99cb7652008833d9999924155a49d3ac77ac2f59bb93128d9b7c69fe235b2febc9c53d5d70ef02b2c09aba39c21bb01c2eb820eb314ec8aeca1591e8babab08ee65f566858bc39d208515b827f471bbf098e5ecfb7850844b9b3dd416a3dc3178acb5936d309244236e8d491a197023fbdf47bcc3ba968f0f2885419e13d867c37a16184463d5de25d5909a75bef8827482a1cb9ba108040608e7b92331d9f998017bca87543364c1e9736a6af91944417db926ec4c17fb9eba681cc0eb6c670c890ca98014a94177bc698a98f2098512484601696bb2fac89b08d4b7e0a34a42b037844c38e57f55966c3e8a1a2b6d73c10d119ae175dfaf56eb606a0612e08e7ce624c45de82b5dd4052ce69f41d9a08d46c02988ce3bf55462d868777ef3ececaaf176df65a956a90043dacff42e2aa63ea9b0926a294aabb34eb1e35271f05898513733b06362ae13bcd3cf2045c21a18176af28287fd8c2b00cd5e118a0bf6c316faacd828be9446f22087ad3e6fc4837d7cc7670210c975242e0bd42c6b52e608a6c6a110c8182a853e86af5a6d7e25fe36cf55500a4aeaa29c8972a7e361127ed6e07f978a4c430faaba907873223eaf6f2905ae476726b0c5d8071cc88eb401b5aaa4ae00821a1dbd32a1d1717ffc0bc691f5ae1f41dad6b0c3cfc2f4edcd3c02bd9f1106b77e691235a2baff0dbab073e73a1d05bd43e54807d0f05858c2a3997b6e5148ea43f90c735e278d311afc59074fe5237120c0251f2321d951125e731c4436f24687055a532c341a1de66afded987b7c37e5722a13641362fc041df8de5968b14cbdd14ce7f3424245e9f3f9f6bd7bc042b084d7924c7c92e60efaffea2e9b4b462e3e30679fa47d71fdc7ab2fc2daedbf60cc6aa8155551c1aef9793a936a765773e5b050341932a847d09534e743a1af085109d38f2104b1ba0b5783b466b085de1243e241002911752d0420054319392aee080f878f1a5482d117b14d99904c2d6cc176b1523158a081b31838b7f1561ff611dceafbd6771676d537055ff29fcd5b6e116da7db6ae96373cc5d8341db3eb2c28b8ed4609e0eeeaa0da0eb17c73806c5e10877789eee9c492a8aca476871879b087272c25e7c1d4a9f4eca34bf85bfb33aba225f3ad245ee5749fa988f6cdc2e26a310daf47342fc12b444233791219999a348110ffc767834250f871e3c282a23e3668f066c0c538031f6f165fa5b31776c477fd89c2192f353233536a7f4c1fd0f8ffdc1d1e78329d754da28188b81bfa5696e6d86c7364275f6b0108cd497f48448bb8f35ef5d00707d10f6e73b0c512ec4cf7d9f80aaa553abd416ec0de5dfac66f31ff354d10a1b5a1040996956c228980201efede6a7574ecb84e991979f9067553559f80a729d419e953a98b99d0ac9da35fc0fd55646f9b6e403ba8d5bd65929676e19003c69f4a2ca35af8d9629d0941a0966047b24aa1c127dd861fcb448e89832a1f6b970a5d0beeb85e7b5fe1854dda4cc822477db7f874d71e401aa55f83e5a11bfe0202f3c379cd0a7bc74749cdb603ab152f4597db87f00e631b47e7c1d908c0a19000f5d0580ef2e53e99e099f22d6a19c586ff483f5e5dc5b1162e0ff275ff7afe9ecbbed98699305a16fe9d2c38e295fdf98e311d6ec61d0fb6fb5e7ce91709401d4c0f8cde978f2e6673c230294029857c934c6c3b6282f980f769cd981672dfe3147f2abce30d1f1f542716a7ead70b8585cf6fef17d047164f46ccc88b0d44815a0ce940a039d5b931760a010f7dd04691fa9fae8fa152c4b8d732337f4aa2c398cdda8a23295abd652e7723711be17c26a901393539afd4ef2ef7c1ac51866a954315992d1922c8233e2dfc2d62e0c0ba2288ec031457c6d6127246ce801e418fe0181efc42e1b419f00056bac521df4368883c97cc54c8dddfff4a1bc591ddc4d5bdb90fe210464a79cd01c615574efcc45f7231c74a54aa73bea3bc9fe8fe1676cecaaef395f0cc03ed94c1aef61edd8df53160742cb9cfc100279e7b4695d8054b5eae5347f73962df81f2718dcc23b097cfee7b30c36d919e6545d232cfb8d97c38fb42bae50e19b3de0f46c528b128ec94d904084cf4836f80e3940eafc226c7d16f42b707dfac33d1e8dfb9bc915e0ebdb4b1ba3bee5ce34efc673328795bad3d2983793f5b329e0f110e8e7396a5fa41bbf18d05d349af2008228330ea443beab868e29cdca7446f5753dc6c92aaf1706e7182a40176b108058272fd2df7931275427472fa53c075ff3ab164d556f0d974288fd4b526bcd51922e15c920129490054390421ad6cfb89a50238e562c1dad58403b53c7554207a195ce0924fd60edee8422c765e1d8b12378c188690dba35ebb827872bcb11d51ccc8a68290ca5e1e8ddd6045a882bb2c17e9915e43bcc04025d4cf3a9381cdc566b9fa8f8c5af36663c9a44972f1902de8c2e22ba3c86b0bd3c2fa839a9df98406114823525c34b7772ae99e9c5ea81b0f1a447c8c46bbf45c15346189f8477e2e1d22e29918efaff85338ff46c89c1c4398f9609b9c278c87567a0190d137177ba4041e3150909d0aea21f806af70bfafcf2465211d0a9fe3256049c72ee68873d406551f2313bfd6e0af6c70e6c9e0ce8d4f83a10744b6cc609acbe3d843b610ec00d699ac2c55666ad8af090ef01a25b8cc99771b163adca72976a89319d617e597c3d8871cde6b192f1cda3a14b6d9ad133387011bb6cbab5924b2efec88143cf680cb1e9107ade47ba58a78e6e1e14911fda6b5126f0733d3cd871434c24e706137b14d0fcc8dcfa1bdba556b0e5b6917c4a3172a8194c62e167f9dbcbc2afded62c87c0930abd9db6b86560dac3a1ad1717fc62714d36266f10dbf06198f0104042a17859fe8f7f905d158640b86fc3cc9baa21702366217995215027cbfa3d150ac20428a58c1c9665392cca10ddad64d3552aefe6d1d8e1b88ea374a3368801c287ef108320d5a874cd1c44623b402e55264bca08c453ef6a1e992586b6d163d848483c4fc0f823999efc2f017445f94201d31b5ac92e0b89959d962bce99f6d9522b3f2b268d09eaf13aabffe3f12e49fd871d03b83d3feab8e38020c263023083f0fa09ad46cf19d0388871678712dc2683257059f8206fa52cc49331a5c66d8631e87dabdabb80315aaf80675768b6349ef3882d3e7c388b6fa817a7cff4bda015d27ca06ca841cf52f54a5d5483282d2cb91bc50785ca069d97de4a3456ffc46b70cdec5f0883537070c4e2e7290a5bf9418149b476d4878e9564f299b9d019892757fb7ca4ca2447fe989868d984992ffa80256ec27e1ae64d1f5c4ae375084b5b4530810422025043dd3cba39c52d3b2d53e3c2d8a9be4ed06d789b4a90e75d6fe34229b07fefdbc2302879d891ba0a8746ba962508933cc493c2f215f06572a69c3fa0e14a01f4e0343a42b067c5716bd7a6393f7b89b1e089a88ce4ceed85c1b19be18fc7e10235d8bf1c2aa11f2255b369207ab51dec502685084cc0477dbc3179ccc3bac91d9387514dc1ce89d33333ec7c08335adf25b8dcd12bf18ca9c4cb0eb02b225cfb2829a09964038a7d3e4f597bdb9ef1fed59ae1a8b0515c84bf4d338600eb5dee2597d40a95b7ec06bfe6a9f683c151474b81937a66b6300261a6eb8d915b07d223649d400476ea8951eaf8d5e9d68c465900d1c63a09565b1012dee5cf228706b310cff0eaab3f06266b48da6509c195707b63de8c6a7bb540b9054a40f0dc755dc523923666b607db0eadcf8791fe1c8213cd953b5e79b46f7fe4e5479c456b7aa20b6251d645b54ce391290f7c7d09df389c7850895f22e9e6f6993d85fa3ecf44b5b3eae486a083c02cb82a8677ce6d99958f3d105d6b7cc8a053b52d8f6bdd7e7cbf695b8443db5c51f7f8584134bb0446a41cfbb91815883218c23d6b9c2534aeff152820daf0e652c9c8658beedb331e171f380857a0d1f4ed81bd58d1ba1faecd615c7055783cb4ed8a533bd515e10e2626da1783506e247ef508dab668f6039cc2f25499047c366ad2bf101ecb76b7f625eb920ba204cb6ec121afe55bfb7bc271fe1593b22abb095584f7df43b3d7dcdb58d06770b6a34eb360d81ee3ce7f863335f8c9196ee4a78d858916f076c53a16e55db93e74e7c978a3a9ae6bc2d0435f38e9fce3d381c8e51ebcdf17aec3d54edb30e91ccaf2478bea4308d9f51f76adaef631a5085b05849c5b620a6a668cf6478999fb77580911d310ae4324eb81b55da673d7cc7581b1094801f778df32991c4900c3401f66ae5973bc7500dba8068161f45db8a0b698f458d43e43d57609109a4f2b1233cd13536250b57d259ec6d95298de600f1bbd56f0f053cf82d5284d9cf55d1661ca4348b665c0fc7d131576f3b77147842f71b74e65fd9eb400c0accf190441d41f6a705be42e870cb2c32fe4602f3bc4d44ddfe5197d43943930ea8473f01ada0f8d99f3656945683404530c728b3830f426a665016a5f91e188b740cbbece3acfd659778021ff1b964c033d04bfa331fd6994956260a502fcaba5cc47e1929c5f815db891155e798ab7a0b7b50e576130f13a07d2d2ad982918786a2d9298a77890a611221219095cad1cfec5bd519118b9ad54e339959f8adcd9d984d61692044a5b82b1e93ce65b6e30797ddbeb72ba03d5abf6a3580385105b836c8f37a6b84c41da418c617da450ad0f222b0d697e137eabe3342132088805832964908dd8ca086d2282864ed64dbb841bcc5ea1f216cbf4ad66f35cb8456f71ee9c1aab2b2b10d668c49c26c3707671552a8697f15925328667009a580d4dac14263b4434cbd1572f2c1e06c377b33c6713eb48c6448f5a97f9f3614de74ff977af5f77145ec2d52d9e2c7b6495de3f592f242f9e1a5c5d9994f67f90c66e193d95445cb57625dc896ef86665efb9b2cdf94dd2260e61b0996e29a584f3e194a078c7a61ba721a8a9120b2faacd2d73f382257d0ad7d38840523b870a184be9012d8b02c9178e3af2e4f1f0e09de515ffa00526f3e280d350b72dd3a7893a10d46b4e3d38c4b15b68e87f7a4bef46a4c30588a63ac0e71035c3f7c199ed675d3877aac1641be14a90148c72153eff3f5a583b78ba581ad54e2ce2c9111ae176109d3bc6c0fe3101bc5ce453977dbc1215a4ecf168cbdcfd849552380b5bfaf77b7909078a6934a1af75b14b9c6108bd06016362592d9b958f1ee3b8ce5e8d0b7356997b5b691d7777ea00530a2a93e214bc878f288958ea6ce97e47414018b5ddaec47a0f21c5edc8297ec4f72fff2e291aab41d64e7316a40c8a7be120a12e5042c6a55b86f09ab8cb48a4e81e3e4dd5145d8c609b81703f60527431d4245a4ad10d3827c0707016690bd810592083c8de1be0243c59a21bab821bdd2e45fb4537cc354f8793781ea4ddd4f616906cf307a95ccf7915f98503381e2c8f4d792b22dba7a8a7553f4833614645dbaacee258422eaeced3a79bd44ce5c9812107e7821da029683dc4021f3116259eb4ef15edb100d113e6911ac959d90fd18fb1df8069bc77c3f92404676b49157bcab2be0688364c59a65b5b451e2c8dbc3d59a5d454184f3943deceb358ef7a149a06e8ace8e5a1789340da3115f0b91c9fd4012ec7b61f79cb921c9a4703eb365ddf024c86c9cbf1b69c0bd72077fd4642774c9fd229759c1b6447d68979176c1475b768f23e8e0a4213dd99ac2b5df9a67473b9892283be71ff58b7b396cc42300491d6d5767490b58cea995eef2ddeb12371d1dfd47c54ecad45d08b88be5bf6e35ec4ad1298278de43da9b0a618b3ca7f39645e6654c0679e374e03e33d39ccbf6f1780969feee3858d394014dde1fda2d962d9dc0f915c585ee972f425f07570a812e43e168f61b160ae415d846b2d7e369546aa8ba7898f13cfcff68675e29154cd679eecf516d553f7bb21cf418b99804619dd352c03d5d6b103dd6333b56611607d6c60576d8a50edd451c49b7485e291dad34f6fad55973c13d91728321a5921774e349e668deb748d083070043086f742d25c2e145f486b02b42d194c05e05ff1796053a042566bb0f8d1e25b327d011b139e1b49a1bd03bc7c17f9be1327503aa4ad99010be13a34228ec2db0f7280c228339f3631df0c42e7a3a94a4785b295c83bf0079d24dfbdb9b2380906f52e9e8a09212d57b97d97512dd978970e2b3b27d877596b93d53f3744957739922b64e94c8bcecab0f7d80febbb0cba1846d6af42ac82194c9a70648de38b1948f610a5c9c7730da7306390bcb957a8107185ab479e2f1280ee4f997601b1515805ef689c429f4280bb9a0386e36d133ef6d5ae669f2cfff34429210b8b60f135fbd599014e3410a911c2206b1970c7b115b5a5a862298284b05cf12679246ae950be29150aaa1b80ff022a01c8311999a4e8103ae527c3347f011d7e5686acc815469a2a357ca895092cb511c53539608c26ef235bb40d1c12ee6b8ad95846033dc14e0e926c372454847e6da511b7e09c88b26614ef0e80fdc4d4378333e25e540cb7823f251b329130142970a7902805650421b665f34dcb5d61ffd4105d26f4446c230c411ba82d117447d15869a7242d6b6ca523e25e39470a9be7afe0c014d6c4ce630109df923baa8bd9464e1a83676bb6d49ff9058b5a23cc520088003ca53c4d146212d5975a173c81e47405223e406378be403d2f4314afea0ea02cc58d78b8e35c7125e7a2b3168017460ae60a32a2cb0ee7376d54f1058ac85762fef6b569236096aa937ba175d68effdd76c4db6fe995513157f32995087da56956137937164575abecfea612992cad5ed89044abcc25c48f7d5c990e55480d0423c429e999f601372cda28f55d03f52e325c2d866ccd9183fa7490272c002d305493938644f405b0cf2124b193c7eda20c672102e2290f813f009addd0bf9aa171338a600d039ad4ce0189a4c3240c07d4e5d99ed2f15a318c65d6b3b403524882c317e54cb4f04e3cfb3f31d18175d6221004a0b6e64c65ae5e1d67ae4a447b69a8a0fa910cee7a4d01c60c841a9350e85ab311623ea8bdf9b95748604726069f40acc5498174b90af8a5d35a1668d8a464a23b86f40eede48e5490b9b812237be6f9e275cdeaf1150764801837a5ef8461ab0dfbf6b3c6e5f62fc48b3d40c34fe5737a51b1d17caff6122ab3ef9730f3c65a0a4f6790f34105731a03f0bb3138e4da7af9adf9224621931dc2632e5a0f88f3c3e0c548b937f63b2d4d53657058703e1f3fd4693aee9e2d55b2f716e572d4d9f71c3efc403bfa4406d315def3dedb549bcf77c1628f15274a5c6d1dedfd8302b1e594c6dd86f2b9912b5181e0d01e1bce197fd491c86f5afabf5f89d4f5940c9731836aedc32f715be49f5a712e1fbb48ed9ca1f6505ab2929e57b4a2b4cd013753b581dd2ae0ae75ddbf3987f860a1ecc112712955844f46c9a2a5c1ae31e1232530b923d12960261ed4b550748c0a18dc713f66e9025701aff9ac6779759928d6942f17fd533da079e519690dd7886d22739914064bd287e24ee82c44c01f7826719b1c41ce3ee0a271565c1f318654dd2916050c5a50094d6865447cb5491e815c46735d54329432de54e7a1cb0d07f13ca581a46648c668683c486394715789b9808ee048cdaa5cfc76a191f2c88cf9db07defff215f800750e0f2174c1d24acbb863d40db3c254189f6e286d9320da54c35a36db28fa835769c417131719c75f25e9e6e03a0bd50bc4058a022759013545fc06d313bd8dd1db6fc13b9fda3b5dd3d91a97c5e66ce2268e20a9a3875381ffe9deca92c2b1d98f6803fd7a9dcfa190fea5e1d32c5f8901d93c0811ed664821954d16d2f136c429f780dc82d997b91cd4e76ff306f16999302cbe3f7c624bf0538b5a47e2b5e7f951034411558ca28ef4c6a5d49fa1f981b6606ac5479f14f653bed49a522b54c473460da13964fbb4b597814b878939c231a4a67ba0b38fbb46ed1bf9a41815ca4462a9aa703b88809f1d9e962aea811b82843e06edecafc86c350a14360d52bd5b042f9eaef0a34c4570da4b779becf5968e53f90a63b82b00501df802e6abea9946e593697b625b16116c33aeb417930d42d3cd863593cd3e4a938db82077bc5f9cf9503fb69f4d6d305cbe90c88b303633d2989455c02da09691ab033026adfbc047628a0c0a4f110c4ea653f2d198eaacd717305618ef1b3151e9119d0da1906c6b373787f0e4ed70f399c5328dccbb86ff0966c32f48dafb662de7a082d9a2fc9b94be7e04183a88b61b5bb5e12f705f3caed79a74076999e9f1a23eaf5bcd6363a365e80f20cb9a0cd00bfd26a366b88bbf2b71da732a055c0e833da98ceb5c28831c43a1c0b2d14501274437a98d0056f557304f5fef891eae1ad4383de741671361852a597bdc69286ae00e53eea2d6985b7240636c5c27c490040598738a0450da96e231613a9275806aaf8040951f3e8535c950ca56079bac3752cb57da6dcbadd205974930ba4292f82cdca77b4a02e2c5f2560cf026f620a7ffb8857c987917500d16e0e2fd3f7420ae2df922a10476acc24ece72b7bf45835918ff850653163e573b0480c1ba36ab7fce51e6338132c680c277b47c8dd50a2f02087e95d64231107a22da3346280df860c6b685a20d383c708581e0edc33da831fcbf5da944c05a33ec0fb50f6f1647a4ddc5a43a853ec04f486738bc9d7b416d8c2f69a84752eade3c172d1833b6273b5091fbd302f96ff13f58e261766df0a47f8501d315787cef886b7fbcce9fadb109ad3274ae855af5ff8d0484557bc90649206632c6be370f828389cb56814e48c779fc1cfa6f898b6793c7028f21570138d17d270102eccdb17cac1bf1980416304c32c38f8c0bd2d8c7f0a433a1dcc1a79391b2afceee6d5f3b0e0faa18f1bbc4e265d715cbbe61febb25866436aca0cce053fecfa0d95573fad82b130429f7695a780237a60fb00ce5bb98a317c121c6c304ba0439f91228a8834eed1de7d368ed93581d2bc58d47024726197e79961631a36b002492aaa64b0caa64cd16309ac95283f964dfe5eb51b154b23a13f4408f0c883c3f622594c9799a310c0ec4b47309d7e38b8a15c1c6b70d6029253ddf3e35dfa9e262ca0e6fba0b27d9f9d318e648455f06392b4523fea03e236bf5d666e58cddd71ed7449c9e019533237aec46fa84190db750a286e37bbafa6a2605255f7261c260d838e08f672c9a9e1bde3c7e496badcc10980653779ba040f13f0c7575b76649e16550ae5a70297e0c42212481c35573168f1b157365c7e5a25efd02178c6b5b6d614c30e1f793b7a2b9c2f2c92fe7920a7f9cfa0469c559bae3a574a6560fffae077ed891f884d277c55c6711760a884ec176ac9c4a634809e28c3aed1fddd9ffa7a883dee8f2d228770919ab73cc8eff93bf15f7697fb545260adb333e932b3586f23bff1382c8214be4d8117f0874b3bd9e57e10039e3f1f31f71f49d3022d98c730ed1a4a8cb73ea66231fc0691494cb3386721fea1f499e9aad33aea35528fcfc19af891ce7618ccf4fd1414bc8d244f6eff376445008791b09e6fdd1f9fe283468227287edd0171578fdeb1091fef27e8efcaf9fe9bd18417603f12c8678d064af51711b45401c90888f3313f5551a887f7f3e2227f51a64e40df2d6c096aaa1cf8954a63355dcf1162c1b385f20d8b0621009cdb5e7f7949bc4c62c9d578bbbe18fc23cee251885c0adb7d140510217ea3d82c2a2b0a0c522dc3f6d0befa75f2289c045feb7896829bcb3696afa671a4b7520e903884c07cc469a10094cbf741eb9b0580789cd4f4133c9ab230f4af4eed39bfc218bb80de8d89a0ee99a250b9446112cf9f2e9f7d00cb202b01ea91059c7c617fc164fba0070e6e2c5440cdb466298d2891ef6bdf442318a1e5e8e5a035d733fecb6eeafbf4de805fba2a0bdc21d855a966574aeda4be385ecd39062ee670162083b7db73e09e0309f5b0e10eb0beb2914aea83b894c07ffef2652347461c5d6c3f29cbeed3430873c629ac8b566d564bf68a1e5471a623b1f2abb3edc204ca6841f6f4eeede3c4211fb5e54a6dd5def889e7abe4fda0716df71838a0ed4f3465f49b4a9bd3252be996b7731e6b10b83d04a8360f2a9dc965419b7c8b229e22380f8616b1878f990722f6709d94fb0965bdf98449d6daacfb89fc491b8004fa5253250277adccf3f8a5538ab0a647f73237b1b64ad9c71bd2737691f2cf0e482bde3992c261c459aa35f4d1b9252fc37ec113a7e24d97c237417d911870fe2962e6b78ebf7f6748d04f05267f3e655639240528c4126f9966a228987bf5b8955b0b1c2f469c0498dc41c9dcbd6a7d9372b59f62f1084f07daa1df3ac5623b82e923aa943320f8a4d414c21ca44726ef62af78ed04cd651bcb863e60630d671ced36d0121923e1c48f9958d91d4f19ac94d6717d7329be6a0c11a4b11c5d914a8d872055b7483351adc58862bd74d3c70d7d9b3863bd716088fae24f3e7f12feb20796b4d0bbe2b245d37955199ff37921416a4297096765383cc52a526f572debb3c1e6e820ea93f3499fcbaa3e7181e8f16340ce205280cdb3316fde956c7c09fbbf00d942aa545b9a07c42078fb8e14703458143d4470d20fcffa7fd221da8760c68c75f5e37302a4b5db0fc25bc6990d1f1790ed4cc67b1e3ff8588ae9a1770a520c2c863cc1c82682e5e259431a7ced7fb14c05516f71610d7659013ad87340dafbef1b78c7e9533a73a803733b794ce31cde62fcad3c450af50a634045001f9925b6e156f0102777980048ca50048093445918deaa41b879631c3bf102b8514e883053aa32fd901e0646ca03a9a1908c3417984c99c26b65603995e24dae8d2fb31233db77469d283a1a3f78e68ccac7a12e7fc73f501eaa8f9dd2bea30b779b88c1d51574288312aad392f2c077ff3f8b893260ae922f1b14fa359add25a342f53bd5ec6930eaa0e5db55933bc4ce5edd1f1034588afebca7ec69eb7e1da9cf74f503184c7227cfd1df758c664ab49f7ee161222132161d7f850b040f384c82b64af594efc92935296a01a7ef91b5e926ce40eaac446c0ce00e99ace77a1caea4712786a641f66ec18b65c7a1673761adb4a1366dc60b14982e9b78172b7f62438b9bf49a63aa2b0d6e3788dcd269972c7aaab21e76754df30582193a8ed6754c36d23b3e6e7c2be4eaa1401163229cafec9ae3616c60380ca4a75db1e93b6416cb2105496cc02083aa245370d6c1db5b77348cfcd3a6ca991c8d1a944aa8400ad0ef253f6adb95bf46892a80675eeb44dfca42dc495f4f19f08681701a571de847b1807a4374607a6785852dc244043c7772b25b9ff30933890b2c3c3aafc4ee1fd78be8a44f576e9769264beaecb49ceac66da0b1eea1cadd02361c4a33aad03a5ebc56ee6b028d236642c269187c100d086015b40d1351f3bad841a02fb0160860383d7f7a4013801ef876d545b7a69c235b3bb972d28e887d62351eea901794572f5d52431d554ca26abd3a39089ac6f93931105e46e9fb4ff5e6089c093fbd253212f59518b49aec5a902c0e7b469ea3f010e18d9312988bbc794ccfedadd93f854186023797136d6607a117a9235fad950ee07e92d7a1a9a67330257b53491b192a2c62b69ea12a6ea4319f0aba5d5ca03f6bd0fc30645ea752adebc4c69b221d89607a8b0e909d47a559f4c6e1191c36af1fe02594c338d8edb394426f130a01b41d2313fd846f97a2b6286bbf909f290593d4ea4e25b8201df12d6bae7cd480c5d1e7a7637e549c2bf405e549cf6e3696d86801daa068c8a9dec4d6b41f9fa3d2cf55756abcd55c4807225b7070764b27892d7667f8376546116fc15650ae528a155b9bdadf39b11413b3edbf4ac53863af1a8dd6f37e651e035f42f351dfc87f81b6d610962cefb0e8be13b1136876b4953ba6393765111a83723b8ef2448ee26eba4c7c49328df5d66a5b9bd5bcf549d94c0682fb10cc16b63b642a146078843f230784dfcd1d63a771b61f78d7f65cd5279ce24362bab8f964f68b09ccd0a05bcfdbd31704915b6b9a3e0dfb1b85ce06b0f8a43af5e91da8868fd559f074b4219352331d94add2319d606f46c1e0664ada0a8d8a595b4d1ba4e3ccfd5c67e9b60154390fcae867996da3082d62d4f0a5eeacf0b10f9d6235b958e3b3b23383f0b19935509f0f088e0fb70a59147b5ff8a6c3337c6b629d6713d4eb0902bafef44c458c51480732a0ad231462be0dcfd2787da7f218ef33c1449f1d560ad6173132c8a3f8ddf977ed6aa381c4e2f4ee95567883eed048af169ab3cedd7b9cdd74a1fa893ba44101145630482a7edd61e6f438c5c9393c3f9954074082f5d448e95268e79346a29c8fa9ea1a2aa3a37d3dfe37bcd417a579e45c90ed2cdbbccd72c01d4021f7998b4c193e2762d0d5b4f8a40d2b08c1ea2e8750512747fe4e077f1038313ebb2275fcddc5ab77c04b3ee9d173e68dbba9f8d40a005f1a83dbc27d3c232661d855b06ddd280a749619b9afdf7557e08698a9955dc296ff708f6bc6ab07f232439e8564e09b7bb01d8a046c9aac33f0e365ad01a825336a211a6bb41cc4cf67917337245ac43372b387068935b1dc88edf1e87534049bb07b4cf95afa6bda6a5401ad3ab81a53d845056550b547de3c853c96de6a60e48199f91bf710a2437ce70fcc2838b9a1eab6f55348697b9b3a3b2bed995df199a77d655d5bebda13178f84e35a069e9976644b40bac875a1e59d43b7b74d4b5daa392e6bd0cb79e7e3a3df88c6b65532cdd9c8da057a2171e1e88688ff650870c7957013cda5e05c4cb36eeddadc2a816c64705d49234af56eee9c6a262747dbaaca21766ab1b1febb608c0f0845cf50589f1d882e9a3e9202f2d2b657f602bae9108f04844262b4a645ef6ae2c334a776f284cf95faa5ec2c40e89055a394e6b74b8c7903117abf9825ca3d312176cbfb04a5e3389b5b9390f5ca02c5954533dfa7b5a92d8fd9b4939495711cd4cadc580e52d1cd656b370607361986f90863dd03e625d58808bbb65f51546d55de818172b1ae367d077f369da5271bcbfab9aaa2eb45e0909eb06b5f5687449ea10621a156281ffbef41c2f8d79a8ca1c8c3e94dbf62d06b574012a98f496d8d3789955b5e21ba12cb43ff521da94dc0a57461d6034ae2adbb0d64bdd0e7c2f020ad4dc940fa9516aeedf083c7c1affdf276265428bc05ddcebc99275e7c23285ad0d38d15528bfd96bfe23df17a5503e294e6fce9c973255821e0b7d754c4ac016d46361d198b857a561551ad487495e9a305904338c659552d463c7b3061975a5ef55a291e93079d1c20bbbf2a595ca8bceba8f49f60d62d46d161b92c1a3a3fe0faf59ee4fe5d66d55919e6da09642c330a77f6fe1f2b07fe3410116983f821552cc589aee8007ae6d040a22f65404805d3449b4aad3d7c3631aa0092497bbbf38e5974086996755c77195d12793f0fa140f9bb645357622fcc808524cff291b0295c5381eafd91df02505e814dfaca010c5308d1be2b223ef94b8564e8920ab9e7ede4a8770b242acab7e8a500da9f733a2ca36c822abdec2852e6320b0faf750ff935248dcce2a7bb512499cca34d2b01a09049f9cc4424aad83b705fcc1051b8094ab4dd2408a0e0c242f58c80ea474eaa76b887620f1afe8a662041606bab90163d241a109b5572776d3035217f5535b06e576da8468e188e2a654624ee7b80e6896ea530589cc5452c5da8d3a7bdc32512c73e225b36922184386cf0da74e0594593e7eea4bf370564f8e6fa6333529452e275fe7683906f3e5411bf1c76c3f910656d59be24a0d68ae6d4a31d643e49322c846e9bffd96f8f4ef4ec2b36fd935822a939b949a2b503e676a71ddc2e96241b7b119da1bf41f55903ad35ff4cdd710f885324a7d802896dec66df76ef3a4375858131b17265229d34bb860f36de0689a0ec2b583fd5b7905412ce961c41df5c91f0de295c81860d3424c3d3eaa0b15862e9dde860af1291c680dc124c06606dbc8e425da5e086f22cc944a339e455feb2625d09787b2002550de153d4106e38ecb1858d755d3cc5abda5cc7a6de448b185a3482518432f66503a208e4a15637a4c14c3381f051a6e4e1be1ca2806804bb230cc1cc6011f18345924730e2a78128157daf2ff37fa111ae083f9dcce0f7f32199574a13a3c078dddd1951b0fd5630c11f2a7371d32f9b4351a97dde9a932212056b8deb93f5cc81e4a1b7a654d4e6c7d4a55f1839a13b3fbfe500df7d998a5bb1507a46b751013529dd2b0bb8ff7847dc0439aba73b085a1a56180fa1876ce66420b4685c695f7e1a3138a40421af72171f502738215f0ab7faddc860d85255cb2dd9e158d3be39142c1bf62f7aa610beaa5a63c6f0f2c8ddaf0d2899606301d56b9469505454bf62099d41f40b71d37621e66c4227e62754935889234cddc82ae06c9c390428b83011498e4411c187161a4366cd79553354a84ed04e880c9b91095ccf8878246f910c1b0e43f74e4e62ee4aaf611f0391d48e88e8c34c60e52d022166a3716a11d9954528880f1e79ca092405678f2be6b7ea82c341afab2afc766450c5d65c271871e863f0c733aa2922e814d7d226c0d313ef449a8095d0648102bacfe79f4047e4cdf72abb9c968891a818bf6570a28438b218a65705a5095301c2b7d545880f8ea5e39fb36da3bf56ef2425405e1e54c8b545352bbf3fbc809e1523f393e6af961c5535e1c457c9327d0a00ec451d47d50b0e95a44546c50d61220195ea2e7f2a09c21284e3740d1798d11d81f339497f702d940b926a76c93225cfeabfea8e0b1f77b7e5c787cb68a6465acfa7291d0c03c88fabdeed60d96ba0ce72349e2fa24e8a9f9f8f82232e290ecd6e25fd7ef4c09ea93d3b895c4d06d5d4d46659b43ebe5c379280e092657139f2a7a11226f7c9b232198b73e9b5e54c7cbaccf850e03b3d759f4de08b42234b7c3d1d00f3ea426ebc395f00336426c84185ddfbe49f3346ad7dd45f180289a88c9fe7f69faac5aad7468d2f3c685a3509f6fe744cb9b2758d55555414a53a9c767e483d59d29a149f7b96976e91c426dec1428fee6d096e796440b882ad09de914d4d35d007355d16e5d83e19a8ac2981581cfa9594cfa779b5e796d5778e240b3aaa4f4b095980ceb73f6a797e7d2030d7ce3b823a0156bbee00da46150eca43848a761b7bcd7d8a6a830a792f908d2cf4edf1489a01b74577800f8200099a51122f4b9e0706dad5168855adc9d4d48bd44958805e7aec95586aae8fdf85cb58f46ce529f925fcc5a41c94e6748db00210b206958f0cc952021a6bb7f54141b792b9c37058f412152c2b983a8d81ca50acdc97c4ec2216cabf859c1bd7aebd1655cd062ce8130c6c55e132c63082a6c0be53fb0d9c77787c564b483a67b46080c93d4030145fec203b6505abfc5d26e5502e8977ec73658ced02e714a11466a3148ac9adbae375fa68280256b5939ba307affc81728d50e262c68a64e948d96accc5de20289f7a597e9b343fff43449e9c6eb943a2ae60fb48ef3ecf0d88d807dbbeac33997050dc9436633603477ec689259896d0f233a5f527afcbd86ec91ce8910c4e4340f06291b38214123744bc07a0bbb86acdf4a7d59e260ec8f4e12dba50b3f1c7d5b5b8918cad43b7a107b911453974b859f8d1a1d9e6326ba8395a3a44e7a6d0f56a6fdc4c9ff4a6878220608656861d809c6823fa2b2fb082376766d0e266d3a69c82405c9005a86b800398a643b3a4d451416ca5e368b2578e3eca49d32a7e3c73518e7676558d72fb01a02dbea393f8b64c0198be4a11b044265700b8c2f36770b11d7b7c765de77fa82909e2adb7e3684f0db1053877fc8186892f67f06528d313088114043f725182965f9fdbf69c1e2ba3ad9983b8f7b99ed5c2b1991b2375266895bb6ff7a78f02ce2410f6783a31be0a1192e9188dcb69e070e12766a08ef259ec7d864ab157192e1ef8f18434a14a945cc04781ab17bc8925552ee5c9c3902ce4f39a3ed93ea8056054fbbd3c8b5bf9ddf0baca8deccb33984036c7e8aa09cd630e67ed0bcc1fadc71d5bc40c9a81ab1a2321239d5cf617a333246efe1ce41ff0729d7c409b8979187ad3aac393028adb8a03b98fae0cc05611158253c45a85cc12bc2fcbdf5489222bd43bbc7dcd340226c7e16a87436a7fdbc634e48f96e77edf30bdd6060f060a41efb1b243de71c97a9ad30138a9c0279efa70a95cc629d66889fefddccdc1fe944d59e8c4fd6b0d99344e01c5703de4b0c17cd1688966ec07d765f61e27bca02dd75d4c73d8e72805540a44bde868472809c99cfd76b0803a7b62fcb0672a2b701fc52cb895a0a76a01c78fffb01751b5c1fa4a9c6c77daabc5a1856434d424b6f400416e1fbd5abf8ed4f82632caa6746a9ba807a2ace52cb95b3fa4b3d49c795543205f5a2701642bcc9a905ede28b646ad05d6a0bc6db3d37f4f4671dbf5b09b6a6d6672b8eb753233dfdd6514a6fbb160e9aeae86ef722b7f90c8ce286bd47225c75d55a9879e37f14b0fa7030d6f9df168cbc7e8269f687a5cc39cc3b8925b5c72ec3816cb9043255050e435413c8b910b5bce182c30b739601a186185c09b1a44e3a7cd6a3a24e1022ae05a7c990aa525992ecb750c913286a7e96b8a3aa7c32375e4d980571afc0b6e3ea0abbc0938ea588cec5c55e541cc358d14e6847ef5a681c1aae5f9f460c13cdc5b8271398c5fe69f735414f1a8fcd7d822240c93c71e6be42f73a94e1df4c24586e32973e59ef568e2fd5232f82c8db918380995193712e37a448b1d9e64147400decaed7c689a78c8e6f6dfb3f0657cf29efd63466e05b79803ff8b8d813fab1ebc8c33570071f4509f3b29a0e111c14cc322fe84e52307cd00f762e0333536937e4491414041529ea53c87f5eebd69b552555e2562e8b8c4bd3840930c29ef7b589bdebbab43b973e589ba23f3631fc9d2a8080a65ea8396618eea774f3d2484e26f3b12eef6613528ec221d7868d7bfe8ea980fbf4b5218d24d8a17ed7f0b37c1b3a7b492cee00f98de61db59e23438ed1fff7b80a6d3802e410a74b7acd65d30186523576a772de4bd3afd6f9b69a62a892986c33b66b8adcdf545fc46dc1bd5973e186686077dbb68b624f8a2713abcaed6566b2c907ecf9dc3c5c01eca35c236ff1e12a5c4043415922be85adab3d40f59b755c8a1cbe620b9bc3c032a0c7feed881d2b45659137488b308db5e019a32c50a56d6ef926c3906a4764b9299eb0a8de61e4b9344de33758856d5ad9a4817d9e3724c570e54a7c92632915a4004fdb2c462b55e7c48f65eb59eac0244fae2e1242537fb142b3768bac7d0096abbc3723ad5ba844f7eb3c80b4ac27aaa75e5259a752444fd7090b091f35850f413210e0c7138b9c2e57cad29fbdeacab7cb97ce14d2a9afc4912fbb57ad7b50d2dd6a8631a4f7573fa8c3c359699177d7583b10139e9b1c935f782498d641deedfc5cafebc747b92e289e335fed828975fe674a414074c861aa2de80e8fc283d97a182b5588057c9ac07188c760f46bcde849cc9a51d7f03ef6fe1ea473d5c16fb56e8d58c0eba5b3a308a19687b92f242b99256f773e9dd02e35158f05b6aabe2b6c8bc688deb5d79e05d0ece51328306766c63f79deea337d3a5813ea05b35a0a2c4bda5909e57ff3916aac58b78ebb2d2ae96643066a78a0393ad42fe046c831e4102cd60ba34e870e2269cd0d2de5e5ccb4dcdf849bc2b28e1c3d9f9fa1038529d09b707090446b8b580b3bfa4d78f976de3699758275bbc8f074f8885b4781fba8143a6f51a769905b9bf514df85a5fbc35b8dbdd685b269f4cac7817b7c05133042b95ac676d6fc74c27bbf06269d4d3acd5792dd8b5c0b50742c57c992fa2413ad03e73035cede87f1c0250165a08cc88834b697c3cbe0c93b36370356d0a3a4808c8bc7e3e326f9df3005ac54d9a70dec2845732804701f9a1d7df45dbad43a1ff196974cc08a99d8e712655488ff7b0c77582ac5d6ee1d0fe8e16e153bf33ad616cdd622f141b89d7f227ea6b6f2fe6490d1e813c75eca206f9c3cbc6dec6fe6aa318a7da1d7ffff8eb8a2024277b75d5575fab51319377c7daa3f1b360ee966889c8aded53c30384ecb7213db4ac0b867ff76372ab7b1216489959faf32aee5c676b2f7446725a1e4224af9d8042cce7c4ebc058cc3440111f94ee7e80d7db30a6e1cff5b8571eb3513b6150063f5a51e7c1edd453d6f98d23793b12777e93fabef7c13e52ec62f776c62a074eaedff0f096c943f36a8274cc0279c5df24ccccd986426c5f6c4ca98c3be66bd79d21b4ee0a9467c2f928d69624f4d1a2bf4fec8da2a3136922ea9d951025692e9488919b3a5a665ae5db9c7ea81ce085fd9bc158581c9329e7f80adc73488337892b76c3c2c09403ecb78b27108dd97f17aa80ed2c8751c2a6088bb42b6b4718b36c0ec10d57969e671a9a20f48d6c1aca2990f754dc6a1902ae3cb6f083587960dd421286b3071cb23a8881c607e84760d8738b61ccca1c34c4d3197346b1b5c3680bd96fe7ac3398d7918204b92ca5eebfd0cfc6a01be20cafd3659a1e5d9692a8a2760b76e9c9abdbfb78b5a8dd9303643393d894ab6e27c01563df992bc5f02777a64e7e6e0cc8a6179733984ebdd34d50cac76caccb6f0595b77ae9197cf695aeeaa076eedc83093f215b7cb7703dbbf7feebe579f6e1cd7fb100911919c0db7c400a330b457f5c918a196cd9b698c051ac61859ab83113c9b4fc67ca0fcb9279abecd148e7132c627e32b3a5e788fb17a55089531564319a391a5d7c0f81252eb016e7107a0404c2e9361a8e46b85ca1873c4df4e6a7791ae2891643507b21b6e4a97328efbe090a8956c9fc1c32b0235c1d4e592ca6e70c3749b9ee632ce0c47cc087e6bc049036896e604930579dd9ca6c6ac6a31b00edea325e8f4dec6dd5f890c08e5fa1dabada8b2be358127d8e78f097a6111a483ca8794c9bdd9ab0952926f9a359461046affe885364bdf310e8ef330fc56af6612a16bed43902d00026c23fabb6f978f8e1c73e0dbe4572487a75077cb88bf032ee9c0821f6620c737b35ee4fe5859568d7626a6b4d0e844cace408696f23ad60740f2a15cf3a7c4de00a50dc9e6301e885b5a89527469149a33119bed4cb8d456e73c3d5bc4f3418fca24043cd8d8be31d7dbf253136349381195652a132dc663fffb66e9f062e6a62ee9f9b12772b27b9b2028f0caa6776b464b7983bbe7713dda8d7e760eff377034f7f50d6a0043ebafe843a1bb677d695f0c5d880b04e1c20ca8fc82a01d8778578764ec80a804ceb4995874ceb2b70f3bbccdb24cb114eb94ab2eb27ec63ddb0a7978116a8c07e5c6aafac9e3e138c73e8326f8ea5682368f61e6a6f9b9e1a01104c64a3e58cf2147e6888253e8d2ad5e12e5198915410b1a26a39b5675226453ef5ba9c856a1877bf9ae5d671d9e2d8601281aac8625e5bf75e6e50ed08c77b4764d941ef2507a89b2ca4731ab360623c47ce3098b379300b55b22928da059c894d329fa4ab06088210ab863e07e4be09c97fab4ed22a2faaf55bf5c6591da00d421721d1d6707298a9dbbd73927c89ab1fa59bb35ec61c05e2d9031d0389af5442c43cc159840ddff3674bf7837e746cf52e04af275e1c949563bf7847a5b542ffee72c8a61cd31e12081a01960f5aa4cb5f9850a898f5d5b014b040a22334d20c48900130847e3b8a3a836416e571fc80de7c278181bb9c40c64f89c04bb71ad5430c80e28fb201fb2f04c1e33383760babd7c2d82e23bd3fbea17e36c1fc5fa6acb42e554fcd6b494009abba0f44db1f362243c2255ec9eb42a94f80e4a1094dbb6e72f9b8e70a80f34d01c46db804ade392adc74fe9721a84c3d279d584de44b9daede8c068b327468cf34d23645780c72967d260dec5c160270500e5e55420635dba4821303fe7680cbb640a5c43652461502c8df4a60686b2d040c0f5151570490099914b4d3025ba7b7043e0ae9cf907f7158104fab924e933332fac2ba087bb02c04e795639f0c5636bd3df34dd39f25fb4638bfa1e8a23f6ffc7a9afb5522e956fe6004bc75e3a81ab31c24e805580169f1ccda9d1b398999f11f4e1e3d36c29858829d947cfbedded117b988672778edf88ed09131c94117fe95ae984e5ab7aad04d525c0de598dc86cd75ef84b8de43d080feadf8dc9e46ba58dc409f28ce140a6f45ad8aae042f95f71b6f297ac26b175859752310bd57df4c26992c9e3ca8322473f1cfd41846d64eb9983880209298f35837d3867bfb601e6a15f0144a9a982155c2cc785123b61e67354107f279bb720ece927d9975cbd5eea73262d80d1229d926681b9e26a19527b3bba98677399966aeb94e43c8161087c4d338e1db327ab3f6a0e4a5de8b8a01673ec7f3154ab8139feb3b2c111ef8ac4a5ee3d9c26b5092474c2148749c539805be24ef69944476351c0acfc971ed5df19e2a56511c2134c5bb5c850ce11448047b80e0891079b19be16cb6538cda5e17bc9bdf58445a8a64d534c9a6b6c9663af97a66d660f318022fca5a0f74b2c7d77ed2485f92500325e9ef3a89d0a86c410595b040d4d0392ee2b0aebc08a0504910d857f1622e0f1cbba6a7f2d5e0980c66ba87b68691e431ee5fc3c89bc6a8f3d1a38a70281a61fae330e3cd7185219c6c7362ef579eab4b52ede80969017565fa718387fc6946d2ce48fd08187c9920458029d67034a6af0de65f0142ad2eb99b33a099281b712406bb036ef12a1103b34b580a6b74c712a200e57f8900e710117adac9dd574332356b96a7b404e229e14c4e89f0a9fb08f43f4eb5b43e6875baa62cdb9370f924d1abc7dadbbe2f240f444811d2cf978973bdedcebe2b5095b0f27ef7f741b11f9509bfa63db50124a8cac5376efab9c1d142642928b90eb5256cc0c4073b654dd5a0872b912e0c5dae842af85c17b13f8302191d0b551f95c110c81f2ea62836ade754ff1c1d7ec81e53de1480565244681bbf6262a724559273dd77ed64b6a45b79fc2f88540fe1bde5de4660c4385c0c7a8b2750d1573151380de8af9d573b56605437df357964a33e8376b3145f3f8130d0d4e7f0ec3e5abef981398f4fb95962f3096346f2adb9262684f88cb59cf6d4bf9b901c1be916f396830ab2b2fb300a1973759399a59260515cb27e72b508d477302ec8508022c71be254c85e907931885286927432bf4c6b8b07a02d898003683408a622371a5abd76ec55e6affb1819a3609cc351ec591a1992610546c913fabe882832e2728a61d12b0cca64afa99b7b9a6c3aca04f6113a5ff42a6b90ae2062a4cb58458db681c09ab34427f722114aa895273b0d672a4272246a3b3b34ceb96111c106d9418e035eb28b8a6c6155343b47ab3a7d4177f24521d5c46cbc926fdca05237406837f0e769a958902cecb1918cf80615ed15084ccf977cec50551b0b9105e720e0fc4ddd61fa01eab273384068c53ed70e25e8b7d5ef70a3dc1e6928abaff2ae4797b15840706e42c0bf6c3c79f41092418038145e9f81bacc3d9667e4fcf0c052ab3205c9e2e41cde04c52a054b543ad01889e7f36080bb30797e75a31ff01627b366a8e91d9e1308bfb16ca22c99b0083064d475617fddce70bde14e7bab374e08d3cf0f71011c7993195a8057a4e8e0b7b3e20ddf74a678d2f52ae6006c200b0627d91386203b6ac759ac464e00408e3fcc2c137cf4e13ead86bd0b8136ce8ada580c1ea5da40b05fa8d120e0b5d1e02921ddeeaf59305514b924ad2824acdb33d91371d0b9c8b8a8686f24bbcd56bb97cf54ca35e4136e3634cd735292817cf6b49b411c3bc33096f284a1fe25b394833c5022bf200f281e25c2146d24dcf4d5427d7d0241e867aa960adcc92c132898e70761a451f008a1eae51192b15a74db8f92292eceb539c9367944e69c10f81d102aa3ebb117942ce19e19300be1b89b775db47d31d2273742c72e51232a02265f6a655e25e724091f49f849f618532e1ba8f0734938a4cb74789bb932e772fcc3d333fe0cd82c1fb4a2b5bc516b09c19f38f1ad00948b9ce2cf8389171da4bb569064537d4f5f9973f5deea3f5e1a2bfcc730103f2af361d4957488a7a312174916f790d4cf72d8aec5acadf68a11584daa51d4cca54162f45daa2581f183ec6e36828328c5175f4eeb553f8ff76f0659c1c72b1d64b39ec55bb25d31220aab535c53f263affc2b46cceb7cf5780dfea8fdf992d6caa8989a94bb9b131318283e74cb049bee501474b2ae24dbcd4beee6ca7ab657f1a35107d9bc52c934d7c409be1cf343bfde042450b142a286e5d23155ba3225b5583abd12653fc3ea8133939d80e33698ea2521af2201d4cca145cdf0c7b80aa25b648ebfe233c3bc7c9e013444544c7e78dff7670d257bc58fd035fd3e961fd46664f9b247b47cfe86338ea56f4343abe50c46741d797967b39c2822780c7b6d9601167fe2a416b68e49415e3b4603cba2c0a130b31e2134e153267819a705032330a63b0275e15329dc5894fcaf00305ede4452f40064246522056bfab36ace18859ed0d92f4538786e4ca38f2cb694bf7a43e9165893e94ee1a2521be6c1da9217c4ffe61d2567149d953f7199adf3133125845b77aacf8b6a5fcdb236fa146d894014eaa48fed6c955fa6f6e9e3db832ab93fd119f62d1cdc4536ed4b4a979fc09cd201d60f9e2235c2f0177b41ab67339b95140e473d9f3a0cbc77f5516553d27d96824da0383e70b1b571f375fd6972cf48e7c7dab8cd745c6591daa12c966267157dcc9bbe3bbed970cc873c30b8c8d6917ec6f1b3d782f7bec16a1796706dcfe2a6b3664118aed4106bbb2a6d49acbf148194be8c66ed18200cecc66b127380a9b9ad72208e54c04f9c2bc323e3338bd6812c14e8bd639c90035362d828feb65136a5f7fa6d701dd7d2fe65a0b3f35230d37d1cd6c48d85477d610692f9dcbde55399d9558dbfaa2f66aa543f06f525ba1f3e64c93cc2df3430ab4a31a62c3aedce490a8cdfb74cce42097c21d9f29e661c859948cb33b0916302ff9281de59f28df54daa802219b49d9ea8df52a969641e9b179c45128f170511404bb8045d6f3f906d1f8ca1a083b143b354ea74097438d0b1c5458775fbe55243f10da260a57e46fa53a3d128f021f3a45562087084c643d8de99623c58b9650f061a55ac0d59e7ce2e732308da9cc2c3dc7e20fc1ad398a18830f3319da8e82c38c5d6fa923e2ce25585e990818b4b237d9c94a1d138fa164ea251c158660fc802703264aea2abcc63cfa8463ffb899510aa08d0e6322b3f3006434f48ad323ad858b5884870bb0f8c184d1e90796b310b78694adb5aae23288674338e99f4ac07350af60a5d938e0f9bc5badd1dc369b731d44ea63cac0f6c757e46370d80bd7eba220765ae6efe7d57d702be850d27cbaaac32ca5a1f51e134f207270361fe770aad210c8df2285d20d60a3a89a929a89356d2357b2c6f4afc284e78dce82880321fd781dc18f4f7dc1cecb0311ceeb4318d198487733b8ff9dd8f48b47c3829020625c36f4818e9ebbcc282ff1a3ebf781a4bb4c75baa0dc690a0f4bd8c3c12f47bde0ef7a2619426c7c91048f8939c206aba771f9bd25c55e9f05a3f0314149461d61dd4a0178d0ea0d71a48398d5ada6674101f266ece73f934ba9d9fab9a300c437481d3ef935a5368381d509ec26557b51d3ca197618e9a66acd9f7845cff7515579601fe91381e7de0c19a6462ab5dd3c52283e049449cbf7cb1162a8b989fa4f5591b31980204104b221681fdcbbf1c2b725d9fdf429ace58f2ab11d6c2135f1c75aa21ff02c3d882cf4003b13898a8c74581ebf08b0225c7a898b6bfe09d864c600ba22ae035a618a031004c7c6496ec7e589fa30903b46fa7a0888ba52a5973a8638495ac65a463c62c3e985bb38214e3470bbd93f194c51287a30bb0362c493c72e6902664c7f7f5021417dfb16351e600d4ad6df2de44bd67bfd5ab2fb664ca14f8b8bf149dd4ecc3a88b9c39643bc6631801683c09170f232d836f26099e3e503cd14ea9deb7fce02719d4f7c2b87fc06131ebcaf95e5c45a1f48ea585e341db600b4e2af84129fdcd772aeb0d2a4502f4ae6a91491e888edd418824e10f4d812d1ad650d47244a2b4c4b920c4c340bc7933375f90432632fc122397fd65e6b1dc49336e52aa4053934c889807e31ebc598761027edd35c4e243ef74318c7fafae702bbe00b21b6358ce54999d930566a282dd09f7b968f411c242cf477e6ad5c73ade18ba2eab48bf2d70c2f4c5e983bf128d9064eb6f1b98a87b42c43e50804375f3050d4a13b3d517f6ce9923859c21edf434e12afc34bb84f91b6266729192a926833e9bc41ed2453eb9bd444dc45647401196bd36b6a8a807eeb34d4c4744866b8a9f0d441d00a3e4f1fa3b1f2b86531eea67dd97880a3674715ddd6596b98d66407c727b1d13e1e1a63ea83bba2736074fa4df2e184c9a7b48c7323136650b6f8364499dead87851bd551108cbcc669c5fe3bb742dcf44d89eaa5b8921898187e3511b7c99025959516d704d80bb28df773975b006eb2d00b571c7adcfa957aa82690f3038a1431aeae30fa4e8968b2f97c3cf2664891bcd2a7bca2ff2094d6922216533fbc73bc584786ab6a150f0be8c83a2d37045b4b71b0893d0639efb8f0fd0b1dbe1e0be752ca16820211b6e2a70ef01bd800b973f188735c9ef0939e627f001d8593cd40f93d6438ec8d7ed5d7210401e02045f0e466617cbb5553cadc403e29958b44c5995de9738f8c01dcf227bb9fb5baed9296501c137c12dda105204bec1371407a315f340ef8fa3ee71b165bd052c45a6bd8e6d3b0f6f6738cc41a617fb55975959f01f65c15328873f67873695beac4538b5ecdef140e0dc2e08c26521105bbb5ec1ed371991e1767372ea67f3782e8b6f159ba34ec38d15c8fe69adb0b00c57090bbce310ff68ef201f3c01fa9e01bcba3c6f9cce0a33ed7b35dda02df8752101ac38eb3c57259d434dd2bdbabdc7e7ba7f7ffe33842d59cfd499a7a7a7147860659f2d0db1966e7aa9e55afe29e47c3c34a607395e89ba65ce7aa48c571411678d893474b8799f63754acd3c3fe8064da5b38a9c04ab4b52fc95b554eb9ff10e0dbc705f6e7fc4cec67988f9fe39ba40c34b6e67b7351f3bb1ca2387cfa72e7221881f12324b6033723543d23f82558c6396098e0623278d3d5893a6b312e81ed36a080af0de2a7ba1d177a8e19ff8538e4acd0f8355bf5be14b64f990fe571e07280c7e4f1f9d3585c3b7c1e7e7d7727491daab89b5f44596f4ffcadbcc359aa31ca2f56dafb75ca4450ddb7d5dbcc928df85a33bd3fd8402558060bc70fd7077700da59ab239e73f6a1ba8005ff485eb10834d6cda2a5266693009bf4d3d8621d13696a3dcbf00cd62090530778d5a3325305996e0364810dad4ada3b1a66c6e8d975193ae93e7f2dc1f2b666f66ad8a1a327a9561cc8d26cd2d17eb30a8d567a77228d9e9afb54ddf0838f5d2d979ea3fe11af99ddaa5cbbad2a244694eb0ea3a952bb15a0f3f16e24b1e9ef707c03649f0bae0c0c32c1388e2ed7bbd0f4715bde267909113929f430e4c322a8004829dc90864d0983f7656ef0ffec816cb23ca29e6fba205848d2e441f456494680a84bc7a222cbaa1f882b28e36ed7122bc1f21ca5d7be8a3c1480714ecaae6cb9db311c656357d802666a97310e231e02fa4d79e2d12f18bd442c5dd94009173409cb2f3c135f7d693ba02cfaed4f5aa78663f46173c85588c0a2b75a528deeabd317b73427340c2ccd803ee0086a9efb88022d36118329d0fa203713f93f18feca5efb2a618dfa5ee1ce9dd4f9ffef314b98d7d33bf9f2fce5cf4b294413ddcb4b6a9e60771a38b45e81d53e69bed81f0dd1addb31ba716e3dae497cffacf6baae83f2020e3d0d6dbff1cef9ec67c721f83f2d79ef5675c370cff2d1cb01c47553451e11a8b6dac3e47b1c79464a09a16f9c03efd113ec3aa0edb49f9d23dc1b6eb7df57f7908c1cdf2b9b91beb7731abf31a008d2f3b4c4c8d564b41340f1107727fc6b118a4694f8bdc1a755a07f108c44dbd5599b74168bfea8f8bc0d329d7dfd513a02ae787a30c1775cf420afd5d61cb564afa06a6031d95c28bb8bb1c6a17d856e9521296a1b746b22feaaf019c80cf9da09426bd55630a35f6ca26d2fecdb86fc4472f7857bbe8a19e501c338d6db07683f97de085469c59dc164f8ad44d1c1b98e3f43ec539fb68878a7450f34bcd29f5b6e86dbf1a5eef7f0b4ab4f59bf0b87040879f2bd129d1a7997e53ffbb4c3a22fb8cef8081fec2f61552ac0ca010cba18c3c065c3a74618ed023d41220074bee1e10d3d65727ce2715e429f76ae77fe7d8bc9dd3d96d82d637b31fa7d6d05a542fb1377154867a1384b2fc87d67bc151d6277577122bc71f32c18577d4fe01cb0d26b74effedff791592db00c8a480a3a7ee49df97a11a2ebaa2b6be278317ce7ecb3639100ecc7774bca3f86e87d924a3d8200f7ddbedbe794e12195365be1545fd947c5c0bfadb5031bc0b33fad03d0474e3630df7205d465a12f9406abcd5918a921ec5e1009d0e47173148a96a16ec05b8f742ea0580a08f104c2ebb72d54adee428a42b765a87474191a3c63b5bafe550cb025c4d6fba1565409fd8161b56bb4a9ad3d3d474536b45714b9573b07b71caeec08a7c19b36a26b023e8c341a297cf695ddcdcf8aa9d6f02bdc6fb3389a8c9fc3d504a3120e874ec668cf0de6e00325aaf47fb778de787c2fa9fce61c56ccb2ae005d9833ea2c4e1b0ab7472f38182a5e97a632b3ecff190e8cb62300b9df4d70dd6570dced04975f279045ec855bbe2c7d42ca358fe87eaec0cd196de51d58fb7950d1fa076281f90556f4181295c19f43314e59e3f8b0a248e109769bf156e690012e6272f2741ac4e52d3b930fb1205591673944227cd5ce7611ff86a3a54cca0f7ac48b447979abfb04db99a3398d0f7f8cb187870f828305f96567d1ee5fe5f8f1c399c7f5ce898820cb39bdba8b65aa60c15969c3a0df1a63e1262a5cae0bec388b2214b28bd78b6dbff85b298ffe49f1f0c633e045368457dbd9a4a138c418ef031e3a7f55f8c258ea3977687dd7f768b2d3f2f6098152e0d96f70303c06a658f62c5258e2fa0434e0415cab20c39977b512c72be39cc573bd3446e7b9160741248eb6ce4a6a7b142a3adb030f7fba2d3e2845223527b4676861499283236b666fe78b21369202084c9994ce97121a7047cc8684a456c0fb06819622ee96bb43ec1f2c55676964645a57a270a345fb159c247142999eee07e0dde0175a9337078095f439eb03fc8e7ae643d7ccab3dfe6cb04e79cff5e006a79d6265f49aa90746043c18d2276a247041bd46ad7b91782efce92fc04b8aa5baa33481bf1841a5c95c57a981a2d52c96fb4863b5977e8062a432968b7d0e13a50f48f5449040db9ceee35dc2f01bcef1639969d50c041f32a6294ef0c01f1796705c63c478760683a5daa60c86526e7c07c56b284a917e41581ac2798547af554f3b1599c94be22e53ba7e0bcf00405335206fdc0ad8d3ffd402bf6eeab40bfa3739b1973493704984856af29c11bfc3a247148d5b31ce6889de95de32f1e1fe7f57505df07261982cc0d0409934f69454989d3a09b1a546f71abc759e68880580e509949bcb6d840f4a9a73a67a2779bc0b021b367388691f783d244c06e0c1e26d6a4605b7c224eeca0b3a1d8318c81b95d480366fbdffb7f4d9e28d00fc34bc8e4bba4f433e3ecf488901583c36d2b74428ac7adff339db3d98ad68e9bfbb80c7f081cca1c9bd9bb3faee7029d594efc19f07e20f7897d0e5e86684fc45993acb164bc1be04381f7954954ed8dc85dd0a20acf629c91b90410bdedf3169b557f28f2771310acda628e64491e4449759bd0303270b41871d53eb647cfcc339a2d6edba18557c327ee73cd4aacd13e1e3ae44f86a59b7e9a8f7e5704e37f1feadf01a7a1d5fb21a2ab42936c9bf6655f6dcb8ac1bb04bc835400d67dcefc59cf4dad1031ec967020c3005ea27682ae00d17fd889913711434f71696fa6c17eb84dd07aca4278f7a44b3fbf19b34cfb36692b653c11b123c89342d8dff2f13c2be2a7fbd7ab4115783262fa439a9bb63141af8f5da926bd7608225f6b7e6e1c5b95053cda6832143c3942e04b615b368c6c83519406012158a566463568071c1a98fafa9e7fd8d0ba65954376c719ad707ac4f7802d32e9e3b4e97ccc11853b212e16dce63e636f4fcdfe96f015e9ce0ab8222242ef43bb96a9ce8518b24117e16fc1e8d0be66f58c4e59e731914c3ea064bf1bca4a65e59483974a0a1a72f053787f5c81af4cf1efa5b9891b2aa863ca638d29ae38f52149020e62ff50475b808d6e9436f8ff63e118c5620909c2522a8f3c97b08bc72e1be849d2b51c6c8dbf3e83cf49d401d22fe0ad34c0aa1314ec46641c315601bd5866f9a20437e9f8107c4ada644ab6d702db3f016d0632f62250127552d0fb6bb7efa790e383820d5e8ab16461517737f60bf44838c14f0aba7ce9870498a06fa7753dfa10d0a85030a8e5ee1859451f8273f8090add7d5fcd2e511cf326fc138749339e20c65566d9b5da783790e2c474c4a1bcb9f5adfbfbbb05bb626773a1d14761e83b74090a9f28d9234fd203b0433b760c68ad7d07bb6dbbbadee4b15c1770001cdf54724d1e7a1b7f0831917f331e9097d0433ec973fc42bd0ac6f9d01488b9a46fdf42ee47bb69e9a55e1e8fe28f20bcf21cbd05fecee4864fbdac4d0884581434d2cd27cf61b6b740883a1b573fd2b45b6885460d4f2c6f19209b1bbc48aa025eee71b34d4687208fdcbc62658ca4d3d58168e6f739cb3fdd78aba73951ce282a74aa62bd1e9d11419059a9798cc3f0c1d65795bb70e07f1bc7f227ae1b558a982e612daf790514725571e9cb632f2e2cfaa68c8b4f85ef629f98909fc158b633ba8bf865643dfb921e23c413da64aa73d12a24d800357957ba68c207b06c2bb20eb055daaea4a2ac6fd6a3ead94587e375876385f779dd4c4f2ad0c497db587fce9458334112b42998b1f44b48e006cf755e73d86c2251432487c85e764b0a187a9f53a9a0befb2ed8b5755df99128aa9cee077d2301f451a29183fa0bd00d53a8c6cdb8f3038eb6e7550715c896fd26a1dcfeb34d20df616c4a1db7bc1003120e83e8917ef0991816beb3722fd774453338270355127d06bf61f408ca07bc3e22ccb19ca78886f8dd8c5c866392de3cd728180946b44cca5de826be602e4fe92075b7509fe5ff84162c0b99d7c0c3500847117688f46895ccff60138f0e16efc26cc44c6e2e4cababa7421a1d177886e5d28d9e838d471ac90b1ca5997f4096c7733ada537a17f1771d9921665b323d8ac74c80758a160c6a736cd55a04d3aa369c98409810de36ceb412764c4d78c93adce8d94131248367f1ed2b8306064912f1a2e7adabe34ac6b7998117bf0b3efd3477acab416e18c064c464e49c0599e7ab50b64277903519c6a9909f74c3658ede8efff11aaf0e9a2d6c6db23ea4dc198df5ec40573397e898b76c732c1d454aebf6194859f8a243b6481a2225d35b7bc09c95c652fd810c47c417a2c1462e30be0ffe62614ae25430db8f53291ae3c114abf4f96e40b8521e9d3744167c6a122a09a88216803ef2e34f68b8a334fa5ee644f78375c855d08b5d5c6a79bdc231b9969e2314aa2023953964d3c9276fdc715626f3347ff2bd4949e1eb93a79766b78bca49438d4d4cfeccd14be270ea8947f5f2ba7f6af23a6fdfb760f34485526a46f7d966efd0a588983bdf832fb596a429a645c475417984fcf783f8d48e1bb2b21ba4cfe7fcd34816c1db6de36d9a7f4046f4e3df5e8adfd5a4526c608b96e94db4f53adb2274127d5cbf52c5e2c1336cf9146b2af4b87199bc92ea1b6c1c3fdb6685da8bdf1a24ac25184e53c1ef59a28011be286583cedd88bf607df9627080910cfe6c19e01dbea656c7b817b8c55829d922bd27e81e7457fa5e773039a071a34e4fe1d91685b645302c5731fc60aa1ccdac9e449636121f84a60853f7b3b698f6f9300123dd83e6f29d2a4fae1e0de75d6a58a5d99d0059cd1702b7813d922ea834e84c8ff928abcdbd5db5baace996b2844b7edaf88b44cef486c6f32235ee16b661f35c685dcb7d59916f5065ca8966b2ce7395e4fa17199ce6bb18abdc5e6b37de6ba1e645b8c1a93508f9730b244ec63ae4b3feb12827ea97d8e84a94925c2960fb3e9df629c226a89083962815eaf346457b9b36b95e84925c5ca24c42f56ef31b9237399d36de92a4441ad2c10e53549b142539886f70464fecc10e508e988f344cb23d40dc8e7340ca7025ee49a0b0ea5ae4134b8b5ccd6a2d51d62a65100d7bca28e7530eeb03a33295fc2a55e6ad29ee29ca0aacadece072aef33fdcebc076b8ee4e4958de96f5f7b469cd226050d9af25a267b9c18abf7462b3c0b23e375c022ec6a98bb1e67be3dd43380ad2ba7d27bca8312710ade2a3a02b19c626e9342fd44066c9b7c8cde7a262157185f454bfb2460db63f04830a385f1bca35d1804e2a512b7b7d29508c0c6c58892f6c25d4cf2e83a2d6b878a6c4f298704a665d9eccd9cc3022975594350278169f888c0deb8335529df918ae70c1252477184f03b86423fe97444c2323dfefa40e4e8dc5bc7e8b133c4997248e361563f336e8dd488b5125283db3d3388d3497b911bd1011217f8eb9412461ae7efda2a26dd1b6e9f040eb56d0b8395bf3a1863c861071e827d012501b432f7cafa1fb0b3d2a39729c8832bc575f4aa8f1d9e93d19fcbc9bc1e8ba38b18f7c7c6a160940db9465e031202909c24327e765d162703f2edff0c516899696294cd40deee1fcd6f272e5b8dac7b396cc3777ef9f7a59d2473d12ec07f3388945620d21a2691a3f30a5c946535651fb44d17e72cad301234e51831a4ef6c6a2f2fc3cc6a886b737383b8d311dea88bc72af7342ad30141168754685195161edfef96dfd6a306f969015144cfcbfb97cc638af169bf5977c5dc1c50c4e857ad198504cffc11cd3523cf780bb412c267df139b0cd35c98e1934cf1c02bb0174451d03d1f83f86db2269d8d7a52db235efd7860f4a82c2d3192efca1d1c1d5a0405a38ebf06e370ab3fce96d1bb8d233268c125ffaadca13f688aed95883600c6ffd48490c725af0f6a44cbed95dfb1040609b51ffd5f28873be0303814f97215ecf298863ecc692b41e8f18cf16113b88b946a7b4bf99b7bb509d2a98fe66b7b81daf4cbe216a7e614fba8662139d7242f4e0e872dadfb665c031d366e1d8d1fe765da54f7eb9a6b1ff23c492fff92d8bc263d3663330633319aa07aadaf6edc1bb89a35d637daf7bea2c2a696f9f550116bb61f2d3729b15ccedaa8f885a305d43561514244b175419f4c303dd7b73c3a960b54687430f74a011600979c45d53dc6d353b103abd5d798280e07ad766408e33f5e86bc2f9224ca1bc6017f8366f4c0b99296d2ff97411cca226acf49f5ae293115119e6741205dcb8059ed384220f54205c19a90355996ab88b0bc3b829b2c397e7506b29cd3396196db0c7afe619cb4c05c2ff7c464ece4a318d5b098544082db48e51a7bd6a73dda875a0060cba31a054f8bcb815682526c9debbc9de5b4a29934c016b0f110f900e11bf289d5e4c0fe34b09b3be72820d673787009b9ea5e7a9049099715ca81eb1a57d6c69b8c66b69bf93e3a3e6c78cda11caf34379e27026e3a840c7935db57ffaf3e58733bbfc70a221c7f7a4f0181b96372925f6e6936e893b369c397ea4c97266a9e19c1ce92cf7abf8748d50cf9885e981b200f148fbd32d760eadf2770165c1048f9d4915983b286cfcce201488c7bb467d9af93494c7e674afdc058ea7ab71a1417659a7fc432e87201e047c1f76353840cdb7be0f3b1ce074ef5dcf55f3b93b5d359f760fde1adbeabed4855ef977229dd04d6e254d5e9986241b914e56e28519890ebf817e403ca09eb6615db943fb93699e2fd2f155fd9e5ef9f346ee76f2eae8ac44770b6ae219e87aef8186902af95d1aef3fcf262eb12188c75eef3af1ad8e0508ed17b27f4c82b5166667b68a1884ffbc960bd1da99e58936407636b257346be4e23263460f3da050391cd5e4d0cebae3621456becef744b0b0d309a346130bb6e485669166d7a07f6a43090d64d0b4396711968d51642355fe9e6119c423ea91ac118f5439f8fe221e914cb23a1e9feca1e843d12cfb8b9210df5fa4136d4425346be423b291ac118cd444f6d7b153b40f14f248138daa6824b291df45aa325381a9c428add9bfbe8af82a9aa4cca2c85462d434abe1a936a69eec2693c93424bb8da74ca622a697a9a6ab21a90989c424243d21f190629ef28b8af1f6f88af870c946aa743cdfecbc603dbe22be524e29462b1543f6ef34ee0e249b9064431a520ac290ec5f2a39c95e960292919764d186c454166954d13522a655748be7cd0bfac10e922d771c15319094d6ab43aa905a443689400e9cc86656e0487153f24caf921367a9c0dce492ac2a93728a925d055692b1aa8ea986277b58fa622f76a88e8e0e173a47522ae9949a945cee54362bc93c29bf5a5392a9c0a82c5227608c31825e1c83a553722f69d2244715998eaf4c3a4b7ca512f35558fa51c9a1c9fe2a465472b28a1d5460a11869939becafec1ffa70501915a69c57f6bf29fd986c4c359e726fded28f94ecf44936259d924d4947b24c6868928d3fa90d3b7028c14c7688814ab29064a3d92c21871d9dd122bc05c254960552ecd1a7e36b82ed743c653dd2a7832527c19662531af2b418a3a5f6c3419b74239217efcc5dc9a4e245175e3c9de8493b9da6f453ec530d81f4455efce86cd40e8623c814835e36e64ec753a50f078807967ebc3397be1c5166924d8934c4534ebaf1209cca361b58190d4b3cd929ee4aa6689a0d026199255a71e4451b3dd53fe7fc70ccf85159b778e9d3d1e54ea75b3a9224919c448aa49e4ff3a438e4ad2ee48d609245b2e1912c15d8c847b2483668959fac25d9c0463c39845baa9a0842f6910f8907239fec3f8fd890ca665a74b6fce98f12406c37ea489ef3485610537c3045082cb8c28c094a75d01ce308b4297770e5b858092036d32a6491865f1411dad7f72c73a7e27539d6fb124fa9a724f32fcdfce98763042c1948fd98e947c4a4369987fe48958b142fa906dde2af02932c4a7d54288e951f5a18c9c6bb215859d2995265894acc8388f30536a4b2d2774b3b1e44496788af362254565d92f5fdb6597b3afdd79aaf3894a03f6d5481dd64ffad12a9af5c8b64ffaf26fb7bd7662655feb6343bd93f9564d5559af1f4f8e4d20f95b526135625865596786aba6ca8022ba25bdef7c7837bda43657406ca73c6e001c60b14cbcac9858aa9441a896c08fcbc0ec46d5aa5537ab7e0c40f936cba9a9cecdfdde4ee95dd46b2365848b221d9e4ce456dac6061b0ec3c16d483414f3ce52f048b4a65203ce536872998175649268f902ceedd674f0e53b924932c2a4bb21cb16c719816b1218807c423441704151fcd5b7408b50cf9d5ca1ba913df3a1276cb0042c63c9b66eb7ff2efcd850a718847221e84770fec10ff245000236f6cd69e1ae6c3c6a8182cd311a362e6c78f58a6257198ca47b0e1e6ee5f70c933cb9031051439b9a9907b8a9791dcb907ca32cff71f2b9adc9483d5d1ea0d6c4711ca9bb82f698779cc99d09d6d56ff7474517c85d27e2647f114125f4510045d5c52a9ffd3e9fbc0efef674d98c43a58972414b23fb5b0a39f6fb0a19f9d4e142b3137e39a786a6e61e787201894cce968b8ab3d95a7abb3fac4caa8d1a951aa797618d8446146a73613b9a6cdd768a7f3226ff772bb1d2ba90edda1483491efc8f7a1fdfc507bc79ee3483ce562a011406e29c2d024b3e8c844243e6b50d25a42888ff977fe1d8a67461363ac1504abb07c35ed6fb8c6d55aab46677d212eaac7cb0bf12f78052f2fc47cef345061c82b0e531031439319289a20cb41112578a10928b0f0cb773a328360de25c954db70c51487277f8162a0d7b659dbd55a95885aadb556adca5e6e8d4995ca87ea03008ae1a09793750b0836062b6b909b8a1638c95cb7a3e351d33859d790d9414b9ca5ed48150c003ffcf0c30f2f82539ef1fde550693b920532e22a37a22300affa7a5533fe871b9ef20fdfc5cf13d1f8f8e118c077d1ba7c7f3808f0a92d6f59734b43a39dffb38301f2108a615f744798d4434986c90715505c7151008ec5437d2f52796eb900201f64f480efc7e001c60b14cbcaa90633172aa6126924b221b0fb3c2ed297dbde21e976c2606d7c8eede3011e01ef2fc982791bfa8961aecc111c30fff2355e63e22affaea3c8fb1004ebbe0745f155b8bdbcaef31e0473960b1e10135013d04cc96c25301892fd413dbe528122c5e7c759b2e5df7ddef6f25508dac9bee9f82ad462b9889c43f6df90789ee78dc186201848c9135cc8fea01779da5e5b8dbb759d186cb8819d18acc6c457a0259e9a925f3b92f5f2db877f2eeb7aabeb5a59df0d8245ef724db82e0cf6e543ae55fedddec70f0708265b560f734db819080684016e8defaf881afff2379cde1af45906f82e7a35ae01be3f23bcc57a7fe9d4d82df64377fb1180005e002f80df7eb61fd68dadaebf220c806db074d8b82d55917563cb00f4d6a7978b58a3f4d278edba3c012e083680ebafcd0588cc34308b4ba75bf191a2891b4ed6c45714b032ac7fa1807d790f04735604baf5c2ba47bcef2f022f1f640530ef446cc160d466a52a6f3394248a900d0c9450ef0b3e53ab72f03ea77ed7759d8e26ca5aa7234796e648c45e24c783f00f4f331bceac7d37dcfb6a2b0642b3f737bc5a4fa4bae1a95e00bc006ed8122291b547c03dc0b5f13fdc50460600003e75eb4ec500c05f45a53f3f6e3f5987cc51963c1af2b73b3b25db764abe112c10c932371558b891afdc514fbb1d92b0dba99a7623fd342f8cf56e737e3859acef434e96c455fe2f2a7f6d27ba067b7fd5aabd6b69c861aba1275725e2a79343f93fba27d79ac3739437d462b95b92dde36e97840e49b7d32581792a76ab3db56d1f8ef8f4724db819e7c4535ad630277be56c393ddacb2260b0f5c3edb5bd3c7fc1d6eec9fe922c10ec35734ef7bc220826efccadf305dbc4572127cbbeaa9acc575a464201fbf261a7133907715ebe476cbd3cc848d591ac175c6bd5a955a7d6f8f0546f3ce5af69ed55222c3e3322d93dad46cf2098ac526a0478c5dc66091dc0c043050b9eb060e6c938648743f6ef1a5187102775498c897f39342dd62111b1ee8bac143f94364046220d5f6d2b70155ad9bfdac76c08dc40468c64ff6e62518fcae1b97e11faaef2a6f7f7df76be9defb49d68a3eaec90aeca8faee945b7f4b46452d9aa0e485979a394c582750dd2fbc857a2f77781399d68637b451adebda8dbb91d92d77c9f4fb75796b9e2ae0bd600dff9863fbac70115e304817903c4c0bc01b0cccb3b71640409c8f29768ddf01b5ee3d6fab2d1645acc55fef594355c5f44aab02b4f8204bc5c99d8623531d37af9d8927122480a5e3e01ad99d6cbdf905dfc72e0a4e0e52bc6594110d60769f5c7e305cb788bf537bc33ebc2fcca5522bab861299e6e58ba4ac41b967a55af88adc938ac31e182ed1c6a31d764be6aaa03838308815750e39d88ad1aef5f7324ab0646c5efd68d6445579f747c42afe6f5e11086c3a10bc5616a62892bf6979522aaea7f3874314008d3aafa1c0e5f0359bbd97f7e3b2e15392082832719048381717149a5fcb589b4af32d68951d29f26f1154a2a1173fdfaa27d4893f84a8a30c43245b2e314f682639c381937e378b81e4ec6cd381eae27fbf7679deab9759d2d729f27d9265865f2a9c041931c80dc54e0a008b9f36fc32f3ce51eefa79ed81e70ace05283159838c2c413320879030f7c862045cbbff3effcf5f23031986a4305ebe576ab748c78ca8bbc3cc7755e5e2ee239ce7ab51c89af3efbfb8eaf3cc9a9593340984df1020d664768768a80a2851778ac8072842ab6fe17123a8a42ef9234f1552b4982247b7cc12b167b5c6af5e5ab4dfb2a946ef1ef74647d8dd65a2bc679797ff90b6ee73ce5dacb57f2b58fc92468d6e918b19ee3453c05b2b13c4e9ac86ced7c7efddac4535e67b8dbe99078cabbcae3aaadcabc9bd02b02deb0fb09bd497628a1177648b2cbc8dab326cce5721569d5dae32bb945d43419dabff6d5abf5abb5abb5d65a6badf5b739aab8926a0fb55465d4eaa29aaa0f957e3d5511cbdff0f8dab70f327ac0f763f000e3058a65e5e4424552410421986e89341285c0eeabf569fd595f561b98f5cea3470c5024e10d4ebae0850e0936ec76b24797ec2ff786145b59d8d65a061ee8400d4110f2c41239749321ac010a2ca6000627bca17342274567850e093a9205030c4610120514474072a4e5ef3b92a5803350e1892b80c0051e2cb4fcfde5ef399d8ebb607e065531aa8897677d7d16963952710ceb61b00ccb000ff3322ff8e5593fd3aad700d708a9f27fb92d5532ffd902eb2bea5d0fcc5482ed9643d12a7f22647f89c30d09d95f732764f757b724617bf9fc198a02992c548fa6d3820d3b1d1716a69248c3dbfef3bcfb6139957c1e9eb08dde901504eb98d8ae346681155b9532b13163c1c61c763a916e31edb184f9aac68fe2098b34ea9653b3a6a4d6286cb8bd72cccb6f52556bfd7a67cc53f52514427202722f7931716ff258cfac6ed6c970c7b349150eebfd2bc25b15fb4cf6ba6ebbdc7b772be229eefd73405f91bde76e7785ce0a762bf2e1d074b61ced37c962bdf63ff37ff27ccf6b2d78e66b0908268a1104f395d4c237270ba3625e9ef52c2c136abdfc4ccb3ff0863e1ce077b1568ddb5ede700ef9be1dfd247bdfe56c399edaa8f6a2f922eda594ac9743344d6aff7d3a5c3cf85b115f51989219f33e1cda8f0c3dcc653d7743f459502f60bc4fa94d4dd3b826276dda74b8678c97dc09fbe8ec54126d9c788080e561c6b28481c34fbdc0e1e951189f6e18b37d172d06c6f6e98746a4d2b7347dd7ed90afbd7ccab520447de8c319cbf4fb74ccd7bc4979c0e1971e060e4fa47f815970e86908855958a8ca834c387c121ea984b81f6b354deb5e9352c266931c866428da903f99e490ebe48733443f24fa397118f4f3c0186aeb1384e550fa3461e3cbce7add7bbbc8ebaf3bfefc613f1cfdb12eb175094f1cd56dc3324bb4346ca5ca674e043b2fdaf9a10f47ffecf881acb5c1fc38d1c853515aaf968064fadddd329b97fb491f8ea69dc943229fba5fca99c48f138e9e26a9e2c2731bd893e736b0eddffedd4a38d3493c753cd52f5d040045d7d3964aa419e5e6abb0bf7f7a2af6d3a731c6c61ba594f687df757777cf3871cc3d9fd2588b74bd01db53b881263b1566e0c91ddf00ffc355d1458839e744e2c72ec0573fc463d1b908c0865be965a4baa528c390ec5b74a26b1ab69580c127b7143e3739fc8e008625f9d3b1f16c4eb6bd9c56c56fce8b791d7f6b9fcea7bd98758ce379f885ed7cc33918b7c45331e641c4259ac8f2774429520a223939be47c47b79457ca581beb9255c0c1439988d05e19a836b114fc90febcb6f6ed7be35edfbbbdeb6041b7a363e92c549d1aaf856e87eb890e38721c7f771e5589361dd126bfc1abfbe6a8e5bcfc31f3e127230afc759d10b9e8faffaabf986f8aa957cc149e8f5783d9f2b47af27c7cfe6bbc9b1157ed28520b1493264890e98ec20741e844ee40918428a24a4594429be0ab7262137036e065dc34911169391c36864f692c368a427fac41f29397497d4e2744a9d525d4d8e3fd3e2609c0e67136e3f340b189821623659bba9afea92aa90c6e84e3fc1f1b01152f53d1272d64f5addf23eec9e1edf7b18255f2d59e333a922e22b1ea0406607382e8749182aba685c3ae81a38aee8e372b596e827ad23d3c7e5ca13a3628d9027d96f3fc935436c86d8d8dc108937427c858aaf588483c51737e3605c4cc7ccfee99c98f09b76bbd5ad52c524646a8610e91e97109b9bf86a80afc2761273041eb19d84eca9b7a833b3d06ded56aafafdfbf3cd636cc2c4b152eaa06b191dd7ef757777b4f1548cc5644e7aa2189112e381e2f3e32e23be0a6312243a4678629239715aaa4e52156dea1fc6c55377081c98115215850d63911c3fec22be92383ac6d13eba9a2789f828887f04125eb720851190f4f8aaa530820d12267936cbbe6a2a66457c153523397e043ff4f6a31c599c10187a2bb1e86e2357f9872eb520e601828fea119ff6f890811678b04519a43899c205b260434e1a8460e48a2bb49cd0cfac3cf8eed8cacca04221d108e5e045394615b1f2a1efb1f221dc41b860571e7c943bee111abdfd20a20f7d0ffba52fe120a3b7df1578f137c6ff8f5ef4e1bb5c17148f954745a05b2b8feac142d304f8a76f02c44146a3d03b8e31bd08cbdc307db72ecf188c4489c3cbe56ad977114bf73e78432fbaa61fdd238e514580a07d10bb78109feec532471cc788de84658e90a53f915e80062ab860c58b6b1920074fe8410d640086d716ad6e8d3e6c9ed3ed5649d42dd3edd6e9484ce8473f02411bf05d609924a24dfcee60db07f4e8721da972e2c919dcc0e36a85aee330e782e5e1613c0f18e53fd3fac9f1616094631e34f17d0ba23f12339239822a22f4f68ff8cbc4c731a1176199f88a23dcadd087f115c2418ec484512788c5a898178ffa178ffa1046f5903982c23da24c4d6c897e091446f9db1f3dc884ed168f54d51f1cb0a1073d88b95cad6e8970902542d8053e88518e77449f8842f1c831d6e5924ed830c4957144d86dc00f230ff8b1057e1c61540cf8236e265511d523b6421f5ba197aa68436f31270bbda324d67638588e2cd7652b49e8346dc7d2384aa2a494f224adbcce13badee33cced32d2dc7d778a4a6c9244bf451ebc951f3c951fbc9519bf98f122cf8f6434ef6a341d1aaf844c81b123427e4f812bfba253e0f1a10cb1c8901dfbe8c0bdc5225732426f4e0cb94f0631911d662586684b51c6d47aaa20a3e52bf22baa5bda2885ace2b47dbc92f6ba4ca26073912537ad19b3e48e9450f7e08e5ef988709c737a28453f1453ba0cb768b002d99236f441f3f147af0a29c8ab006d35e322661a32b675215df5ebb1d915d5ad1977efa48168abefd1914c54f3f147a8b6542a3b7f4bb05d2f8a33bc10b03f9f3f2158dad18a736a7bdd386c7268fbe7168c111b6db16c220eede7e5ed1a5713ac453da8b12a156fa8d118b923f93250e63e67c3c1587d02114a6c12807a2582382b5219c6c48cc7e3f83eedc366b2337c457f129916da3dbeba9fc29274611911d9f4e3c3fb497f6f2d15efd39e6643eb0e1f471aca3b38daf50530aa5f1558d90c939b928f99d5112531efaa4730127dbe18f9aaf3c5f771af154cc993956d321928331c8e0860d364fd4f447797ca0bd7ce53abe72ae488e115f495ff54e125fc9d8e9c870c0e764920562fa048a5b70e62bcaa363414c334fcda23f52d5b48747baa603858df97dc00ffd3522da8dbbe3edc4c924d66e3c156fd48868433c35a56b34bd831da4d4810e73d8a21ce20087285b68f186686f166e68031436ac410d69c0020d4fae3883155da3bb46f3c0c1d66f45c7e1296b437cd54c727ced4623e22b19393e6e1bda19be6d683c9146fcd3c9da97f692de4cb28bd64c9ff9a3f1441bfef1b533441bdfc7d77a60f129ac033d17b5efef6a5a441a3e91467cf06a3d52455f92a5c5a2c693e37b38d4661687da4bc3a1dd4e1366294f8e3cb41712ea139ffec4a73cb42772b21c9f8b5c931cdfc160436e96c18fafbdba86ccf1c14b7ba42af2cc29ac5bc77578e9c4d77624abd1a073e37304324c810e2e68c5d75e5a4ef7b2a107bf9ba8185047ceb44217151392993b3fd36a91a83de5189543be7c540f1b7afbdd42f518813ffa6e351077f7eb4362d40e51f617657f77ecc3049e7dc8c7e12fcaf23615616892bbe5370911aa070e22b217d52388fdd077ab3f237a5031f6473fc232b3190b619811221e544ce8ed5b2c336552153f84274caa2288b91da95a6243ed95e38495663e6f85a16b191d14b63f6621720bf12f59334c4481850bae68420e4c44a135ca99f2029e36c840f68456bfed3fd9de72c39c30858f2c87a71764604047c303262cc92fb9a958c294dc853cb78cd065797ee7359205faa9fdfcd06d9eccb7259747e3ac2322cfe6f1f86a73852f36fadef7e87ec341b6efdeeb30ea83889e6254778bfe47bdb7dfa37b8a83d0efde76dd7bdee9258849ff61effb7bfb3dc0f77010efc1b738c89118efc120e07f18d5dd9aef02f3b944db247c248ca5577999ee4d4f7a172f431ffc201d46c5effe93391263fff432a21f6119faa57781653c1c8476ff7d4cf71ffd20228c8adfc7780fbeb73dfd669db04cfdef63ea7f18d58ad12846c5effb40d18b70900f4797aec9924ea1b737f2b8449e286c185dd1667ebc991f5df3bbefaa7c379fb0dd42f138bddca2858a915bb45cc4930b1e2c9fe3a91993786a4698a7665ce241cca739d2b135577e76a8dbad95e89a38ea18699ef8c453b3c783e041d2b1effcd8750bd54ffa99d6b40f7e8c7df0fb412c73a4b1ca8318d532e05b8cea9956ab2fe9f2b82d55130636facc8f3f910775bf5fb996e5f42e502ebe939ebc9d596eb7a213d24349c9137b6214f7e831d6e4691367be92820d4856334f598c31499299647e3878ac7ce74c17d8b07922d0add3f7905bb45c3c4b7fd6234fb7cc9f4df4a7048fbfe1dd6481d5b21273e240f1387de71819a5e5e2e5878a98c7f7cd16d89ae7c79eaea11da1f23da1dbe419816ead601a9ad28f9e86f4a28f1faa88ef4f1ff3fd4906c4a87e30e218fb2eb08c0a4635f83db60771902331a0a71f84fbed7bd0071fc441404fbf5b96a689d0e8454ff3b5a766ec31ddccef56e976eb9b714d266cacc191c653d36559e414cbfdf64670bf6123404f714b55ebbbddf22e8c54358c07fd1b0e72ce71d830ee6ed76b50d10615b98fcf713fb147aae6cf16779b47aa667c1d9d9538758bbf4876dced8b8a013df720dc52c56ddeddadd5db14bb48958b99e878065dcbc02f2718897d83d43ed1d53e4938eba280c6571d89306929b1260e8937f125e3caebd0fe48fc80f9f330e2c61049a040b2366b4fa71e35c8fc8a37540fedeb571ca4be86fb861fdaecb6de20dad79f3708fd8a8880868aa91ade2e2a667ecbd8136f52d5d17d53d2b50c9a896ac91fa29f7e0fff8883c4204762e23b46cd20fe8d51f35bd35ef92ef261e4bffc94ec971de934b7a7ca7d7f73ef846d79dfd6bfab1767dbdebb35b6e53d77699c706979b8c6b6b41f1e84f6dc6faffd1462c386f2437bee4a3ad89b8adf7b4a7b7907dbf2c3c1832662149569a97a0ecb182155dac79f69f9ed188acafce3c7501c139fc33229a9d25e467bc75a2bbe54699d14aced16faa26ea1ef1fbf7ef8ed338f744a3c902d4fd87529a5f1744d1a0fc27f6b1f2945c7a594d7fc151c31381145166e30869cce62491074c0042942b6b841cb3fbe624e37eea2607312d2862fc354f69c25631a0e81c8dc571ccac8e126233b0e5f702f03a780c8a110b533bdb6308b31496e254e70e599278dcb57b1a6474bd5c7c3457e46b454f9c8faeb2177a4cabf47ceb08c4995f7a03d288f8ebb9b54c56f0e15b33d68a6155f4a2952c697529c459a3436447c35b32b91e5cc265c91c359b3f3029faf5924bb23c9fe32767b5fccb6e18dfb0d87b227fb4cf270912afa8d4f52456fe83279b3fd86653c16c6172a666bc95d540cf7a0076199d8f333aded6e52d532165f370221d288af2436bec4b65bfa6775700a1536d941330bb67ab3271683993e72faa444dfdf72fa48169d4595ffb659ebb3d19fd8ff8cc5666c7e7f34766f6372db62ac8382a51fdf952966c26d1a27b5ae26d7b7325ff9262bbd5646e5bb403e5166639ef26944365774ca2e670836b4b118850d6dcccaa20df9617ccbc4532e8bd8ca6252f4b125c2355e4bf41515e3877214e1ea922ab7818d36d635fac70936b4311bb34ceecffc507ef5610299715011e8d6e8651ad64a81e853307ad174b9e677167d446998c708778e69584b84ab0dfdd83dc1cea73f923572750d8d89aec182aeb17dadf144d78830e8641d0fb27736c8a09fce95fde7ed7c44ef5f6b248bf4fe5647b244d854235542d47cabf4617541f6af2d680494fe6571586f4cdb26553ad9dfc67cb2e925559d0c94bd64d94471547ebb38a6d72e8ee84bb7abd764c519aec8fe26d893ec73f0421419949834c5b24996dde4053a3f54a1a9d95aa237dd1adb12997822c5a6279ef21e0f62621c544c684a68ba32a50fc202d1974c6fc241485fc247504d7aff789470f018fd0d37f16493c9643a9dac55a131c124cb6445abfcd5b0bd21fbcf21fb9b60269809668299785484d498783a872a34a61a534d34d5647f7b45b3269356c568634ad134c6d0d40cbd921f86266cc8730a31cc2cd8f81d6dc4dcff92255bfd4a428a83ecddb264e42d953a13f2952c42a5f9c257e13cbd701f015868960a5b35644f43f69ffdf0e13643a4fa11fdfc80bb30038f21633664156eff7eaec8fefd740b1a4c3393135fc5f72e0d367e57358fb22948bde435b933993e1cdccf5963ad31c6f8e18fd20d39c32d6ba32739f444d2c481e49032e24ddf8f3c9dac95d5e4352a253064455d7fb85aab7dc555d369c56bc952c920f7abee49aa6c14f6a3dead78cdf28a41ee9a1c9a66d925b5a31a1110b23b4bf4c3bd228d2ede8e0584e2b2bcb4b94ecdaff76b51a7e68becd0f3ddd4dccbb957769c8117df8ecff53be9c5bbc1e0c18bb63e0f1f0eaae5e63ac5e19e78724c78a031627c38a88c36f154a54da8ec551f7ba88cca54f79332037d383493e679312817dbb898bfeab22cb92c312f6539e35ee2f0c7695e9618cb920ab3f3431618cb4cb2beefc7bfebc1fb70b0c03c25599678aa7efcf97e72133af394b3c07cb58425e6a94cf92af42716c129ffd73eef9518442f8eeaebc5a9f9960a6402d5f556cdefe1dbb1e57a63a6976322e3629c0f206ef3c103e9fb1227166feadce4feae6a75e36a07f26aad5fad60add2a307401a6b0bca26001e6960846e66930f53a42ee5f436da1a2eb96a55ca2ba2ab819be577d5ebae41eb941e29d82eafae655038d870db3c202c93ec7e93dd099b84900f278209cb3ebe9edf772c5ffd3a22e6147297a3e21f13e6f70bfdf67e37d2776092ec3f91388bcea44abeffc460890b59b08ee79c734e11d05926fdfc726c1f32d56a02659e9220134fc9df416224c753384cef5f0350e072b984b86b18e4f19474e2a959b784605255ba60cc537426595227d39e1b1e91bd5eeefd8e9e1ab121e8a627cbf7763ca5440e9afd890065c760ac744d37e6104cb2545ebe2dd910744377b652a539d95530a533ff9e744315e4d019109a51f5b7ef2cba21c824140b1dfff8fcc3de15c184e50effa0b30cc21974e32909f3e2348905bd40443c259f42c1c60f4137597ec887e49c1439e40a60fd5e6785a5f7c7941f8e6e9f4fc3f9391988539751b69c711c239053a6340df2d4f1545c2265d40f6d7faffce76bf7deee6f5af7d883ae8bd693a0b31c658665e9d3dde7a494527a434e47c236615e80e8bc6fa3db662d95da10e08d59b2422f5d5c52297992943e275f5c726808982160e64fe7923a6df688ac6d92e5ad8e1f113172fc4800bab455f3e3b763eb56d33c5790fdbb4526fb0731713b9e6184c01272a6ba47a169ac518b34bafbf6b655f13777d7fe86cb39dbdfc7c49bcba7d4cb124f99c5a65539a594729b73f695e17c8afb6377370e2a77246924b221f0f33a10b76937caa7f2a7ec215238e46d3b9db87843723fa7f61d772727230c877d7294ab9c87e9664f1d69f6d8ab23a4147c662abb2d451afeed4db652b42123d22865cfd35929a9f2b99d644a46b4115fd034fc1d06dde21f0220fb9c9e9adf0822143290f831f74784966314e2ded1c170891c71ec824d953ce549e15f7fdd129d0aae1e50c1d5844a16d38a3927ad53a680a14ea1823665a73d2503efeeef5e691937ec6d2ea757ead3fde36769edf70db792156394bf6d1d85f020662f7fc36154a70709c98aad9a3f93c03fbc0b8395df81f94a4410342bb6ca9fe344a2ec1faee0fb242fc935b355fe4e604da68e10af971b20b2bfcb9d3a1111e304a9ff19215fe688e3fa5d7f31153b0e919037e48f53f6a73238fde08528be70fa294c9711fe649d5c45bf4b4dd8d0f36caca1dfb533e984a0728bdf5f3a7d4dd997b699765d4cd72f833e777f4c5f696127dd20f0d9f314fded5ec05394be7691f014a55f2f10c94281ab286da7b8e2202559177015fd2794a68c9859d89e75a7227daf65d0992dd21d8ce6288ee88fe26834479349a98e4673f413360247a33961a007e2f9c32390e0f75d47fa073f14c55c5cbc96367be1c9f346efb9f72e5cc54dfed9037d0887a9ec9af52469148a423804f106faa9642aa9744a95a8b541d3664cd3344d9b91214dd24f98f6248d349b6824d20d6d264ded9b44d248a4d7b4399990f008644822cd98462291c21f2ea427d5d2935ec3af855bd66cd65ec3e1c457f4a6182e78588181d2acca89e5c5dff0171885c3ee61c12b386c9e1376814df6b517e1b0639884c3396424b25a08fcb4f77eb864107e6e2a29792807ada16adf7525af84c3262ecbdef4666903c159df036f8dd5cefb1e8c5f2a957ec24aa1674b2510f43e14c212f44aa5bfe1f603df7e487ad0d3eacf0657c013e802044b0f822ec01f8138f45ea4828178d61e1c81d88481782e7d1f92b0e847188883de4f25df9d4a220d0ff79d1c0e375c7271113718cc59676c6eb5cefa1356eb6c326b873383e6bc3f63c0f84c4948d6c5371eb7c7207d687950f9f004e3f4e1bfc0ed2a16ade46205f53750384c9d70d83c2eb00a0e7b56c22427fdfc0d03f1126924b26037c4478727084f2553c954825f2cbefd6c51d87e09840711bf3f9491e3db536f3298d3f3559d31935ffadabf376798ca5be983c0f6f3d371b5213c251760ba0d087b09f7569270981ae1f045383cd91c728f8bef6d4a220df973daf8b6f9df6d7656b0a0199b1b8ddb66ede9e4987bd75c6eb7b316bf4e1a67485173c3930e74132237b57e31c618638c31d66fc27c15c69bb07d96c0e69c738bc286fd8403dd12bf8b61ea236c4e99ef3f0c8129e7fc5e5cd45df9feb89fdcd730253f7fbf7d381cf295c3619c1f04bafce1efce9f36df9cdfcfef4e6ee298221cc6959547fd84adacfc8cf90af52beff3073595441ab582269e4a224cb27af8d8035ec1e18370780ac07f3170bce101c79b1e300c7c93e3f63832bed3bc0ef80af5f191f81f1f16ac8ffad427d71acb3ddf7fad24d298a29f1785afb7f06bf7b4bd8d78e2eb2d9c1ef0b39cf06da9e27cf8ae87ebc3dda4cae6e85e7bfc3d5c193faf86f1952dedd217ddce2f6ee70e7c8a42dd703258f0ad08fc52e955e67f0db71ce363a0fe3e8c9fbee2e1614cf0bfef1a091e9af4c48f503a12c1fdf6df0d87d08898daa77ddaa77ddab7e11005813c44585f1b62885cff0b413ffab963e56bf7558300e8b987f9e6f77ddf87511dde01c23d43d053d473a8dfbef9f63b2d7e0f88f9e350610bac8651ff611fa8e7b00f1efefb0193bfaf301985db53317ef2f014fc8f87182f5ef41f0e2f0c18d3012f9ee5fb73c08b67f91bfee2864b6496c9f2dde6d5cba2fdb7b17c2f585ef41bcb7c4dc4027e3fbf67c1ffa2ff7afffbf0f75553fdaae92b192676f111a376803f1ffc89435056f1a1f225f04baff225f04ba557f9ae3be98543c480817a9695fb3d0f2f58e6c5a14bec791c03638c512ba9fc3dc8257fbfb9f879c31f30b9f4a3d7c02f9570a8a2956ea822396edeed37a985df931e747da8bcc74d0ce329177fc34f10f0cc611f2a0fbab8e1877fc064155c328543642ab2302018fabfe1a19b848702efe79cf30372060b26f1373c7e45c042cfde7761b2776772844956bc490288afe8c76db334fc1475a1912777e0477462c37873c58dafe247222f0e748df6bead674634e002f823868189395a8862ca1088c08658d1ca114b4219865085143eb3567c7bbaee834f17bfbfebfe6e8aa274767777777777f7d319fbbbbb638c31e2ee94cfda0f23592957f537ee94a7fae39003050fcc30059a2a7244f0c49433f418795d9145abbffb371f7472ca94482316400a714eadca9394efef32a068b051c382c5828d1d1536f6bf3cc2dd1d3f2cc66454d8d8bf4d6dce59abecd90d49e79c736e5293544ad92bff50fe9471f6c97f4ef7af7fc31d77c97d468b9c91aedbc218ca9fb271488018924af799197d4ad732ba6e05b009bb21e3fd316145741ab0f1db836870cb710b2ad818c95c0ea6c0c12bb71257ce14382842b6b9a7b8810f06ba96115657debe258bfef7c7d629348454559ebc855e93b7efa44729c17a75727d2b55dbcfb4ec4555ac448c3ff711e8d626553dd39a69711fbaa88a79d034e1ff7d138e83f8c784bae5fd4ccbc1e7b0cc87febb83ddde1e89dfaded251d2ce802d5175defb91b3a5231aa08ffae7b87b9e31b57e648ccf71ef7a18fe13e247aee2b8eb10f6219f0ed7fff89fe48fd8a63420f62191e52b57d0827f132476244eff8a33a6842163918828dcb051bb55a36e2692d8c10e509457a600429d2d0ea967fd83eb75b22cb755826baa46a7b6fb97db491aa9663540cf7fedcbfa46adbbe4b820de38bfa48d5f6b3fa1bf651b999e89a139d129e2bcbefdce5d4cb168ac022102e30ed315fc525f10e5147b276246bbe11f3bf1e54aa5c867127db6ee928a9e85a466c1b9e2b7744459cc373747156f78259008f0bf8aa9568e149965e37e1e99e2c3fce17be0a4f32e4fbcb7f3bbcc8f2db53ee977e3ded9873c6e586fc21e4bbc0c8f79c9572b95c4cf8b85c2df9255fcd38bf105972c4cc831d22ca98848f0fb69666dac476f4106d459e6198dfb7736afec95a8945dbf7070199ebfcf9e588434896b7aa9f8567947b826438cfa7df0e9ce57735b68331095f3946b98caf508e471073bf123f31cef6f351e02bf9734ac9538a27d0b4144fa0c94050e0acde300c1b6e794a29a5b5b13d6a4b3a97e1a9cedd3dff1bee7252e9919e3cd54d2927ee6ef1c621cdf2e67851d68750e1c7958178de1125cda81d2197bfdc3ff3289a7a4ff59bf24aeea67418164c7d120c97c873e6aed2ac04d769dbe67529db53ee3e2a72076e5d88cec0b6a8713f06428be41de1cc3f7ac9bcf9e1e5cfeb40ee1f76196c8cdd3dc16e1885f34cee64dfc6dd13eccc1df57ac26a04426732aa7f26f7a4331e52d552bec854b7f4572f5ef9b1d24f417d916c5a714b554e4955bf297731a4f9e66e4e8d43cd5cf37c41ee40218a4745f168a9eaaef3503b246a47fc1fa5dc9e9a9118f5337966ce1bcefca394ddbd3b4a299659a255f1e6a5803e286f5fcc74b968de3ebad130e6191bcf5c2566fe71a255f3366fe338ade336ad82e4d32cfd7a5ec267a6a3ace85a46e8a29d3c152717cee4b982275e374beb6e6d4ee100dd92ad5be2db06444ac6e7eead55fd6e8148456deb64c4070991c339e794d40d367242c0e47eefbe4d720e8adddd13ecafe6d8f8d3eb401f076e9b6b15c7c6af96360cc60e416aaf24bddad876f1e150a15a58179fd78152be97e304da4d61a3fca6471a9d121bbfb7edf3faa3f39e4edb86c3fef9b2dffb7074fdac64dd9454d16ee9f73987308760876063b763e38733b7160da543a75161497f3ae50f5f850f44c657be0513d945b2224f28fbc7b6d17a820b4da373eb892e744be750b2e27ba19c92acad26b6b6279ef27865620f05ec8683701f3f8c3c99c34d24a0c57dfc6b3d087fd0b66d1b8753b03dce0a82c45fa2d51f8f0dcbc456fc27d127fe449ed8f32e2383f5d0a59445e8167f9a845299442e71227b8c481f994436913cf28984426534e2ab50162123f1958cc3746523d91b8b1cb616d9676e2db2cb22748d5a738fc366526c4b95f4ced0d1efee888fae416f00bac53ffa647f20fa730ba22480e290629cfa14a3bc00b221628ef8e1d2511ad6b32c5d7c1506207bea05256500ba465341a3847c80ecdf5f8cad18b53d81f130e2c61036d34140d87c7a0b1d306c3eb1046be22bf0e56f331e497bb24b1cd226beda5edeedfdd3017e37b9408b606524d978ca49423ce5a49a6e01ef3693aad0f7589e1cf2ad490e7d487d32e8b90bbaaf1c1bfab0f44a459732f41df5425d574aa70c61b0fbfe7480df8db9bb4ae4a0593e11a02c3d3cfaf1912c5b2b18cbeeb9fccee5835ccab792da90f45382815edbd03e5c0d8a5ca17da2e72b6ffb0a244fced33467c04c4675ef03f4db7718acb1b83dc5e10d4f20487833a0e857e862e809190c81e9a9d1e8fb03f108641ee5fe44df853ef4481fce0c76e07720066f04c18f427c057e14e170268e2e0877b7f42d4b25f9a5f70f47a994471f3f1cdd28761f0e52e8714c6fff86c7c7d355df7b77f35487de763f1d21d393ee561f54e96b1291373e24e658136d748e380af154fd183fdc3010cf9b905c9f7e396206bf7d343fbe77b187c399a3e7654bca211d3eba9fd9621f24fb2c601376f4e10f1c4e9aebc727a20d11f6b1c56fc7867d744fb30de1990f02347715c727401faff4e6c72b022ffba8fffee9e868ba34473eef6f48f9a0db99bb320ac9df0d5cba38907e1bb95079d3e94da2df3e14ba369e9afce9850cd1df1048eeec87fe86a31830933711096632884b10236f18f57d1b0e81e0104816bdc87e1732418c0c12fdd6fd06a23acc80990cc22850f7a0eec12df5dbdbef86ddb7f7a0f7a21b8a429108fff0bcdfb00fef41ece3f4dbdf1f5ede3e743ddc9e72e1e5d3c9858ac9341a9546f63b5b1a8d46a2b7dd48f4b6341a89bad1b69146984422596badb55d1c441fb348d489b407856e08248746dfce5af9110eb76fb32aef4337fce175d704318b7ec68f88f8a217dd8f01337dc345df8377f4a1dbbdbda197ed4bf07d84be7b30d4d9bf2145ddd7ef45a2f7613ff422fba1b721ec7d7b0ac43f3c203fbc181f8cc184c52baa308309eb9a613777a168a3279d1f75f29783e2982fa5941dbbe9fc18a3c74afb66988fe77e8f3626127fa943a7c342d298124fd817b857c9533eb360e93c519eed29fe3161f9c5690b2b3f2c953416df689592c62baa20834c2b9d30ee25d5f0c257402690d9c485f57df8e41d1c6c2823bb8c1410bedac21f5eae1fc52577737e38b6afbfdd179850085f552a93e53786f19d9797f65548bff341bf3a58fa9de94f4a7f07fd1db353b4a3d2fd23222ae1cd4c37eaca147bdd42df335dc2049ebdee16fa5d2c71f3f6d3996184a8df6b08f85ed3be9baa32e49c30ed89cebf1a1764ffafc68b93c8114848968c8f1f6dd035ba8f1f95d035bc8f313ebedff86b08e8e3cb57457c95838546c07f7c4ce3c4b7eeff87710b39a6a29022b9fda7bbe54d7744e2ac9824c729727fd48936a44c56119390fb63117a25553e0e718f444c1fc620e47e24e4ccc10c72272159f2a75330302e2ea9546843df0d87a2e9cc1fc9aa1b0f38dc6060ff79816f24abe6c81a93aa2aba463d43b7c8a28dca1369cc7c554f281c9e586e56f069c705c6e1ac3ef247b2b4ea13caa1e429d59c4ed64af903e2f00819d74a9513d1bead87fb358a6ddbba1a4f0dd9f0ec5c349eb2e91112c5c6d76abcdb91aa98647533a9f2975a8d56a31323875acd4ece4e4ece99c5629d16ddc2136d743e91867ff7e3291fc9f25c52258b36bc9b48a3f6847cb2ef40ab22fbd79a4ed3b9d174a4a6536b9064ca04df28441b02254bcd7bbd76dc7b79304f813e9cd973499617bbb77b00e1e720c28f05d9dff37670136d786cd0a26ba821fb441b5e1a9a863f1db27f37db62e661a105ab0698af3e26bc35b4778668c3c3e26b22fb833c58f639843c2db2bb87857786ec9f0bbac6c49f132eb0f3430f0b1818179754ea9fe3b81b21992e11c57bc9d3c95aef957d6edb7737dd4d77436362dcd92a20a92dcf97991f0c5fa9992eda02a9c1526d037db78ce734db1a86e512ba9b54d116881b0b1b7396d4e1118bc438db366b4f277728a998e32c8fe5c813cc6371c763b238cb819194b642872283226de41067c997741f67491d224e3114ebaac91e45caa4b88ef4913e53caa44c622923429660882f9043a6df44a7e4c72696a843a64fd32df23b566bacc66aa4c9720929de7b4e4e3ff1703843a497d01b9d92d3c5e586b57605548bb3a70b08d24a56fdeeefa776ea483965b443d732c2c993fda367e9fba7c3b36c29233671957f8c55c313087f116ddc97ec3c64ff7edccf63879047db2f2712191f4f1d2c6cbfc3a690ae6584a89c19d8e4d034b35df7c3f5963ff13e574f0d056d7e7c325505e13fa90d7eb8913bc18c1b5bc571d341ad5b33dad30f4757bf1d9b463f1c9c4eeea6f7c3a52d30649a86fc854c2516597a215389864c659317b20b99ca2b32fd505691a93c43a65cc8545a91a9ecf115f7a7a7d20a995e21532699ca2c642ab590a9dc42a6b24c5fceba46eaa90c03003e9462c8543a9164c8b40cf97e28cd90a9e4c9b4a1642afa894e1c66888b0b719a97f2228771e6338f4f5e3b39e4625496ba0100800f324a797e0ff3f1fc3bff6f774b8cf93cc040e5f92f6e770b6a3ecb5d99eff19c7eac4fee99479cae8a8bd29d77eb96f924d128f475a067e76ff3410e08e53a93b0a0ebe331037f3f3668c9520279fad02af9b5d62a65ec1db47e9d3af986c7ae0452a334ce0e62fef6ed98ad39a869afba3d655aa6165b82b4b6a40682c1643934cda2120f64cbdb4c556dca9429ad2356e3d1a7cf54f6fdd0483def6a28f049c247abb1b3ad795e1cd553911437c126fa19b92417c3a0efe61db94452443fa21f2e26a58b7e7c25df5f2465e49a74caa73f3cf521313d0f47f5dcdddaeb54adb6d68f95d3e4f4eecc8d5135476d3ee53cefca193ca89c5f3f1d5e3d539964c5999dddb0e07bf63718d0d32ec7c453326ec6f53817b35b75cfc399f1f5e2a81e6455afddefe7fb496da0e79ec30237691357714f3827b46e5b73207dff40cf69b06dd676a4e1df755a78a4b4bb375029ddc7348b3662769318228b8b454e0bb32bc4b88a98ab224716367ef8fd70b57d452bcd91d0b77cff8daed17dff10fd73c8bc79e920719759c459312655de71c62427089dcabda22f4ff9d31c89030410df5f0efb3229e3622c53748a05e6a29f9f1fee27c555dec9ce5eba24c6388e7bb9732fe75edd538f357a4aff2459aaa7ff327c659f829ed2777971d68ca72f44d7103dfd79637afaf3358bcc1c5f917eebf1d5f794dba174ee64fad388b3be1e24991e20d3ef9c5059cda90ba49c35a119230d355b36dc78de5824be7c02e0f5c1070b64793fd14ac39877e2b4fca8e5bf9e951f1617ce0fdf55ca84aa37ee2307fa70986621b01aae1847854d4e5cb5519069e3be1db36bc1d31cc932cda434d11c69027d44f493dc55c10959e6e896f933eeaa551301793ee8c301a2c2cc13545a6533888756cd17409e3300acf264400581a34ecd570941550559feb7637a34ddb7c3769f674317e7871fb0a92708f44573e88e57a1009d0095f8be1df30bb900fc766c35995e10386a151cd5b7dc1624a162f9c0b7c3661a12bdc08e9e0099c0451dc96bb9ddb230c8a65968643d7bab0a489bcf0567d02c911430073914cae1f7639afdd064ffeee2cc788fdb912cd16cc6ed4c223934cdbe1ec91241711194ecfff50871a1f2339e7bcf572ccfe19045088b8d1bacfc90a586fb0e46a5810d596ab2b30c8936443d79596c586e5886b010f1018629cbff9ac5f2fa42a297ef750d1311969bae0d2c435886b0bc248b05c6b2591696174c9e4ed692bc0acdf22ebe7be5e2512ec99a8159a2b8ca59a2a05c99254a94ec5eb79070e39838335ec4b2c473b0c03a72d2e37ce2e89e65c80d0b11ee7bf81a309339dcc344ede87e7e87e310171b96db9de2566e6719b24061e9c9ce52c32284c5c6570d03c8ccdcc3f88848c09429533287daa1f2f2557024628299a7a766367df166a4a9eed62a8e7b7b4b7dea14f7e07dd1298e33993ed06b34d6c4f32a9f690645d42a15956f078d77bb38339ebbb4b9fe5660b46acec0a2564d1f5c685a75f1752ca43f7d38265e89c206692a9158601b66818d21872a3130b55c9313958f298aa74c3f26292a2e4fd1b8ca5f745584e45889c2868f043f9cea77f26cf72b1f0ed14f77455246ae15d18fe847d5aaf9a23b80996411408a3464af91e787261e2be4d904559e13085d1f3a357fa4a9ee675a81713b35a70f1658f9767cdd56be1d336b55d8900556850d452cdbc5f9e145976549b7f88f7ef8199766c63bf12d169807e1ffd58185858aee6eac2ac8f3634ae64d7674b09b798996ef453f2229aef23c63a724c87178fe8c64ee2959262721cbd741a977ebd49c0fbab653f3c15bea53a7e6cfb82f3a883959be1dbf822c3fa6e6b37c3ba68a8b539ebed26ae9c3b1f9a87c3840df0ffda478cac5a7e3734d67fdf0231cfef0ba7941d727e5fbf97e4c4e5ce5a619162a3fbeb2efff49f195e8fd4197fc70885ebc10d9f9211c85c49a9a959e15282b3e2b3f9e5a91c24293fde5921caa1451797557e5a65b664e784c4f80b8a61ea952a951994285080bcc572a3ae894fba8b8463fd95556a2b0c1859cb46a1b07eabc0f8c0d82f4bb50d718419436c81da77f382a95199523c62caf6769e7e6f9aa6adc0a3424f7a75c5e529996fbada4338b7e46352397cb979f0edfaeccaa6b9a7910a659f497526ed7b3eac6193727c79c37d8e85e0824d30d05dbf72693e9464d3c4e3cf5240c4dc31f8a690cdde23f311ae404a968e49d5240dc2073b11fee8cb2a5e2cade638262f23145b9a61f93144ff9cfb8aa4b5b6bf8e17a6b5edb29d0c75bea1428057aedbee814e867a840947e57417407edd841b2fcf8c38dad1977b68a7bd5e5b89738723fb53c53a0d5ef6a4707e9cb203e29fd11c9b392a5fafed38bc741ee19ff927be402825681cafd3256da0695fd70bb55a09f71413836be9f48c3df4149641007019b41d8d4637a62e262926582f2fd441b262b9a86bf94eca6285cac06fd7e4c33d38c94836db3a7d34caa4c33930ed3ac53438fe5629d048172373dd3ac6b68d94d616816176bd56645f6e702b124a8940cd4c6b11c75aa6620400000e313003030140c87c4c2e178442208b3ec1d14000e91a252785c99c8511253c818430c10000000000001000002001d68f5e53ef28501af950c6300371137d54e073083149d652492a283c3a743c1746c54aeacd776b45c82cdbb5e03ad755ea63cfe5f84f73beba0d97a77f415e9c063e18a6ef7eb525e852f58febaf5c4f53b804e33629a011dd6c367b12af82df5c92136dcfd0ebc47d013f263da860454cbf4beb52f5e4ff332fbb7fc4a1ceec992aca66b404cb276f1304aae2062c9b981c759d3b9f96536d77f089281120ed76e3e0f02cd6b2c6e1a4428012c3b5604171b3907db3077c2c80dff144e1f31d9db6eb25900ed17655b99e8bb5202ea7b5e574c7ed020640eeb2371f201c738356b0fbe634fa07a2ef383d6b3da7c233b1cb4b2951e68f6f7a3077791846481934c5f331bdf3567953d859710a9070e52bad60ea82001d882f2231b3e460c745e301e427ea84bffc9625ea4dfde27f4c5008f6e43eb0f4f3a6c5d9cf6595e9c14cdfc74918f19516b8fdf9d3026291696f2c3f64c8f227c9c414a8302e7015eea1af223ff48ed19883db8926f5a0a021cf5ae5abaa92585cb749fefc95af2a8845a6163055336c18f68cb6f95e4d4fb00256165b459d78eeb047f9362af76b535627b2470236e0141ba23c0ecdc412313b360fee709e90da42ec38d5226372882fb1857886b7f897d3f70bebdc4be24f7e45cd96727764e3a46931dcdb92e7b441d8f154b4eab7ad864b25918d99b9bf20e3fb5f15f6b7689e065e6a5687a818676bf554573d860d361735d1d763a9ead8ca75a08bd8c4242c328600dd83258e9efc02046950786c8b6745d1987cc201e5a78c954867d2941a90d8cfc342037f5d0ea027b460fd3a84c2fa8568e8df6e1ae95e1176dafcf42c9ca20770155ef176759b7087eb5f181f20bbf6b905838966c2d0c379774c692b9e1c18f9805fcd07c0985f2df9f6c53eb019a4c29adce46c316ad091e6a05b1bd71f75233fa9de06ce61e0d5f66d05889eab37ff8ffa8b1e701644676602223e8bb1b28a3cdac5067a2e9f0d5deddc52fd82d578b36345d10c61f4e29a514ef50453aa6099f1030e28cf147681b2714fdc8649ae1f43c4b87d7c62759df09ec55cd81cd5bb5045bbe7a0412f93da61fc51497b1d6513ab4a159758e542efd96cc1ff8134b06fe8c46bfc67cfe2b82acd6f9308bb6d80664cb7603825604aed18fee8355b1d5e1c8985240dca0ca52115369398b05279a8fd01557621f11c6af623e75ef510032ed1ddc735e53bc611bfe9585d0e3d129ed85d11cbbb80638e41e5c1375689419fac5184d721f1edf9d0e45286601e2de4caef4b33a2f421bf1610c3d3642a5662ca8fa40b37aad042d268a5611a72e4332db74a80363349061be835c078d1befff9ebf0a78faf85bc89842ec75626d83cc40c812e5bbc68b72e8904d8b390dad511d5459c54ed99f35e32d2f517795d46fbb054bc69ecf4bb867c4f950d3c4183268ceffe26d4ee78941ae25796de5a840c853a113830dc95e8e5171725724984c3521fd13acd49e68046b5f2d732807b53681f72041202ed4319f0433f8b262c55a9e860760708b694052884148de8c0c082ce4506914f74f314d9fd22d64f298cf5caadf1b0556ec69d4f56818eac4bc7c2c4fca41d81a1c6d08b6f286bc1feeea6542b3dfe9804a1e814ad565ceb699787b16bb98fb08d793bbcc07a8a4fe7dddbdc74543a70bd3439c3e0f719a0c57ca6ab0d555888cc3680fd8c124911049689dcc84e0dcf437c5961d46f747d694c34e949bf918448060f15b7cd1487e5ab34bc98c99c285159bda570da5389ba52ce091dc2f74572ba97d9857f0462b6e779873e61ae7757528fb8a5da325bd629c49a950031470252b156750cff66fafa0f74e49e5c52ebc2b78e87d153cd4173ffb29ffb123d20435b9ab1f2481777bfb07276e57e35c358904a576ba5d521b9183afb6f177e4714c60413f5b72d902cf36683f38f9bf3c6d083ab4a42296e4fc63150ee3cc4c71b26ba8294ec984539966f88b209f9579971e6f3632d44ab2f0e0a7d45e888a4730c0529c56a0b7bf8c49ec4ff4d40bd839dc0cb5c6043a0ee705dba89381f03ebf565aab3a7848cb321eced41b67aa6cad2670b862156dad944e0c1597716b0572ddbd824242b5d3633cc73e5f8c31fffa74f1017c174c0e06fa082c232b57eefefdd841027aca4d5e459f9591809e9e3edf40017eb65569ca658d31891ee15a7efebdc13dfd10bf2d2efb53bee6cf5fb9474964cceac4feeaa4441f0941a1195cf110765bd39cbac2e02a1471566cbbea307e08532273cfae4b9fef1807e065684ac4799917fbb18816d75fb6eee9fb7bbcc375e271eafd5fbcae03666038792d78bb66cd64ffb76bc3977953c37e9ea751252bd98f9b029a293d87ac0f8e7651c5a1747ae12177a9315864feffcea9906c77c9414501f0af23efc7f458f26885916ad3cca1d16e6f0ccf31c5137735aa38579a3b79bb827f176292a3741ada6d0e7e55da8878a4866f7290d2eeefa6763da0b539461ecb1da19fdcc0b97fb02f02a0ba173231afea28d59e1ba522465260c715f1641b87b58ad2d120ae1c566274f8d961c2e9430bbcf87d0f012b7d0617e374e764f751fb022821feb86fb1a74ae8d9d7089e7a3267b873ba9e08870c366349076e5888d6da450fdf333287dd0a455c1633759e775832f6b17dc40649296ffec108254a141d08333ce4e98188e96040e0b4afcb4b7a85752b8214f4c5339ca37035dc347a7c3ade32cc28ff77b48ac5e5f684691719420673fb9c0cec327845689d75bd47657290f34e291e51a0b4fb82e7531ae66896669b0d78f4ec43488be16a213da9b240e46f22b36d92947f4db31bc40e2ca13daec8ccd18c926191819949a5048956f0881d8072a87f4c131d77e4c582eee4d8c25bd3b2f25fa69eab4a778566124d05a2a38443fd018e56a6af738466364670066c97a8b4162e93caf2a1188065aa921ecea0882fbabf0297f729415dc3bacbb85b730abc0e56fe7e296595ca61575beab76ffbcee7af7282fd0c960a31a259a450270e71c50e447db34f2ed09ff9c252f666b601cc186c153d2d6e746390b7252f10151d421703142badeb126a88569c765d2c2cd8dc03332b929fe9ea0e7d31707be9f25006825444b4386d0792fd936cc56ac4f0b7386c8ac524f10e7c6fa33b8c090fa438dd940cae7459c0f48793a773932eb1db17e07cd7aa6d4171d58ba9f6355d347a3fd16ccc99733f70747fd11a6e95fa29feb7b2aa4a35dd56567bc4122945b6f8c48a137fd7c883d571e9f876621ba1656edb4acef195c9271d40781e7de7d90bcebbf01248486ec49c8b3e43c0877018723607e604732f3b85fac4328d22427a81b229bb8856881f8c1e8d2bfb5e6670680e8dcca4cb96cf104e91862251c2f7b21ad83ebd6eb72601d42c9407b1c9450bf008147b3a3553b8afa006266ebb3ddf87534ebf72a0f72a3d8f8c51fd082ac0a5a9536d3bdc021afa9561463f71ff4d2b54bcb427906275e6560e8780cf3d5006719b152de700f522d8ea46620b42f8476263153dbfbd94f5d7ae73e991cff150a084ff9d68ef8b80a7b7992bf026204726edfdee0c9cb4513e8864a3113d3d37a9375448f2fd6352d75a649d9f98acf3bad61f7082010dea5dc3de64d71d7bac4ea8a80a026caae4a2d241663d6b88c50b1d59e602344a6cb5df3f0813879b0f154b5e4d3e6be4231865494750c2ab94f107206da01f35b55f5352389108b313b2a705a1f1a0e3c06c6d3b6a5c3302bba81e240c4fd2d65ff2fa6ae51d4c0be8f5f879ccc80196a712d85adc9b620cf336921da8dc5b5e683e2208651d459746b11c060182ad3074210650cf56ac20809f517cd2586c33997eb2fb71777878c9b5e86fee603e8999ec9c7dc176964bd0582c7db1081eb40f46238064a4400be9b6c0dc403fa66909023e2df3098f54c9f920a5e1cab68139287d09e9dda40e35db29d857be4504681fc4c74c6838ae2137f852412ae6e87442cc0c03d2952b6d347d9b204a1f81336a2e75bbb1d1a83d6abe9705c8feba0b84d83bba1accb770b91b203d4ea37b1c023985db542590bb6c8e368cbbe2182ba0906c40f4f57496831a5cffd019de2cf74231e8fe7269eac1cf5589d1032008386d70e2b51752cddcf709f5134bf026bf8ea2c69fac7c71fe37cc692e08df486e031589d7e49dcfc5cb7d1a446cca32d94c4401436134805414dc6dccc9060ea12599a51a47c441b5c9016230f38e2a73e0b533f0947651378e53c6cbe2b10eca398b04ec25504f648a121aa8baa2fc768f5013b2b2fdfde73528ca94aff175aa7731b72accb6ade2914b44e31f4d84ae1d5d5673cde290eeb9bd05e12105dfcc9e186963cb2e6131d800b07bd50c1af7d9011c2b79ee692ddbddcdba310ecd08e08186aec8f539f5213142909d728926e24281ee3af0667c4c0564b1186c1d16b3a1bf924c2f8344bf08c4630ce13796665cffe33d4ca2f23d128feab3fd1bc004a1da877db2f417a320822b86f7ccf737f7b000f598e88aa68419a81aa72509486fc5a2787803452653e5a4b2b72d03b1fad6e899ecbe2c325d80861658abf214ac107d983d9255c3b364e934afb3017c1c41fc5ea7fbce3b4fd50536deeec169c7a232ace6a23def2284cb642a56bb6de0d7b55c77caca34d6220efbc32d6c8ca5c2f1c33e37defa367a635d84a1edcf4e1b8b521fc13355e252c936732e55e503011fa4baa1398964b405de323779f0627d98cc88c8f0b3a979e60087276d7115289a2c86f37851ae5691b26c78737bdea2fc94980b02c3ef2ea4eab89e3231b9fb760866642965372cda0ba6a274aa718d140108f5bed149aa8ed5ccc46ac6c7fc405db4d2313c43ed5738c478fd1524b730e0b39d441e4f00e6a5859722e7acd0aa18fc61c6b2a4721d83195c6c82150d16d1d3d6a7094c8c501ebef432984643590b577c445d83a5c691902703dddc4c39a08c7624040b1b5832f9b90370d5a0c15483eb98c2d31b8b2174c96ca08637f5f65f87a836e111f364b0b60a4ecf5a7a8997bddbeef988f8a54a7060253bde2587990739036aad0e1ec7e49fac077a1a1230f66f750520cbc538f77a61a10e948d29230b06a95104c9c36d0fe003ec3680690b736da3edcf8f99e9890ee03886dc44d6539153158a81e9be6754cbd85d94542d03965ca26673cdeb6c6cc908acf8a164ff5d62ad12564103182dc2df00a9cd5012fedc8a737697c557d5197b26311765642f351bba7b3d93bc2e78ef2093c5c2099c1527c560c8e66815e52b3e6dfdff26c46deb8d84db6353bdf98f0a44d44bc675058d3e79e4bc27da90518831e514674d31af13ee7cdbadb502858b7117465ce7742379c9cd50e20483893b242f3b0c3f415ecafe75237fc9ab1f1d80cf7d49320d3d1c1bbe3e9ae861b8a5076533f030e0e8b218eab299d937af0c46779e7ceacd3fdc0f3d3d9b8bf674a24c07172a2942861df312ce7c1edc71847e082ead200797f19d248c7f174d75847347019795b86557002caf55d20aca0dedf909e15502218f8c97dbe163c4a9f02c6b2824ea7955e1cad4a779aad033a3845fb185684dabd9ff216288c1f40ead866d1514b827a10761e112afe5f6bc52dbf6c6d92eadaec520194ee4dd61d3728414381adf21b7880d22c028e304bcff141f984e26efc4a02715f9b469f2115e0756a17015c662b0eb2c4eff03eb0a190ac08c96c7024ba28386569e9eb280360f7260b9be0beda2ea2de2a6a69a5bc40530566df6f84f96a1efb52baaaffafe5933ca75f17526b2436bc61e8f1bb9528a69795d0cb662404acd785244c9ad35dc923103a475743a33cc8833d3c32d5ce428ee4710694daaf69b19d7ed3212335091b89cc98d484279431bf67d1919146b000e62f126a4b7d37b469bc911214b10e25972277780befe00543e4c9d5de950e2dba4802f92d67c615092de48174394aaaea1b86665a097b83735603fda3511ee051a9af56992e196da65f9c1c1148f623a039a06a37c7a41fab5a8ec772d7e973e55048d6b825db47822a70b11c122576fa076a0befbfbcaed5b85ceb114b6d12c291ef4f4f0d781b09f9ee8cb9fe9644f7afd51cbc62e058df2c81bd1132fbee7c3cfd3322c09e59d0cd809ebd7c1bea559d5298b113b9fa95c9c0721e59165525673b4dbce150a792435910766916702df5e29ea1d0c524a497325af82942cec31e461b2c69152e6a633fd9dcf49c3946735bb1fa3f92736faeec87227a9b23d2806f6744a71d2ba34bae46fdc32c45d816f0715d95789fd6515f2a0cc2968c8bbdc380a90cf296db21a137923db2715214e9c7cf971b19d9d3e88edad55b5b6f659bddce78372eff31c9976d8f7d9fbcbcd05d87bb7862d06809f85502bad65e46776c617c8b5b8734cdebdbb3cabbb1f706d23345d4dd4106d8482f07209603ed72e5200fb94beaaab520f6b6c25419ac1bda46bb0f91c85b2d8ff41600cb6a4e654ab5729630ae8185135e38f40b6f908895ff2d5083280988ce9070ff33a6e93abdc2abe6304823710d893178210c93f93df268373543a1bfe083dc461595fe013a0282c76efa6af94d40ef0c169c0be713685fe6a4036fa66455824b20ce628253fdff5b911d9bf565c678a428ff897e1997670434de065e50b13078065bb2d163cc59bb84755b2a12c9249d0cad2ad20ccf865dc94350a6e6074c9e39f4080339dee38373b8eded06f671525b0399590f415ede4420b8d2f90e7c7fa65706e2d8bd123e74f0f492a65a98d011824923328f0822f0481337e1865b1ef3cd812d000d1e6a31e3db1331fd1adf598497bea942ed6ef3a30d70081cebac1cdee0b319a4d34a4037863acec0a89ed8e4aaa6dddc49a62e548c61fd6e82f74ae642e5de84bf519e4c5a6d0bc4942bb538e8530755136e10930827862077fdc4c8c4fca8faa3f9b85266f817b027d604a85f18199453d4b4de2b52f6e8cc51f0be19527079ea16da9ddabe5d8c35b57c2c3a8b13651d4e8f3806c059500e74aa96aa0664d6f53c711dd0ef3a37ce52e487393cb683fb8b8588f6b2064c09c8ef8540217377ff1a1d58237a3a816fad8e03a43043cc3e0730c8cea75f8ef44c6b3b868d553e33fdf40d160b8067f5950a6f58ae1525ff89d89823a30712d6eb797b179a41bbfa19d39cfe40a49a5929cf5fe285d4bd4d3a059cd869ffc048ac18c9ab286073e8556152e2cd97bd9c8732aa0e1ae89ecaabf10b20c35f53c88895b01f231cc48690686b0c12023f9dae7fe732ca62b7a74eaac0fd20a5bba8042e1c46493bbaa1e2db5cc710cb1bfb8125329d2986458d1885029a131166c7a3466ea894e424010f055d0262783c875bb495e82725e2330e207dbb11b094cdd89430c2def852b14019e74e6e26e69a403a94ef860411c0895057650f7eac485ec4a3ffc1302820c8f13f6f94cef3186c865d4def8443015489590ebd458517ef683a3c4ee021485fd11853e4ef5c5be722b7d57c5435c4aad27bed3add8dac4de13fdb6925e0b59a0bb0413e37c4e8952b3eedb35afd4a79850e8153b868037d0db0f6412055f23d5c9aada13e96cb68df608346eb9ab1eda048dd641c2088c011ddb119d95965d4fe82061fe4d7c505faab5619590d93c36c535d3b037d647b7ad02e924841f5d842d4fda2f2b4eaa2e6619721e5e7b4aecbc0705bb7ad143a6b94513049be4155d6d437b849de1c251a6e19e290cf2c8ac1f6142f3f3668b2da4c5ea45900abe3b63aa3897ebd9056893255488066189e782e04ffd89d2b2f4d00d144383d74be13fd641c46a415643a4b45b22cc40e46855dc7af4d374f9148ab2ac07cd9afbe81807c2356f3c3cadd2ad7ee4ff53fbe60e594cc6b9df1d5b64675102b68ad5335fe7e08f53aa04eccdafd7c28b3b26912719616e6db206e0a99c335d2e8b61562ebce0142616dc9a5b137370fb4ca7db186636642d249800033f104a536de83456a9c8d26effb5a3482b428e7d55f450c0b8b12df9f1f95465e3c437eb65ef407334fdf70883ad56b5dc4095a085e26bbe7f5fdd8877b5c67901f5739d8b0a71d1835558dc227144ab3b12997a9436e4581e84a52f326495291097d99163fd5897ecd071b4294783553817af7ebc7fab5d90d4eb8244690ed2d8841e298575626f07dd240fd8f44a16594ca56ef4fe577bc0fab14a724d6f3296091036f80134c34cb147993b6b2659b0f44c9e49c669abb72d5802e64a628a129b2ca0a03e26d22d00230371de9becbfd09578cd28077a01f95190b3e580494c048d41d19171a6ea00199278d9f15d5481607d6d1e007b927b76aed31ada756809843d2b3c93d9325287681b95cf0118e692cf270636008451ae2dcdbda5f89c4bdd3057badbab0d4628e57491d68d67d5840ea07ea404a3acfe8842d0af698482cbf7e3fa95aac1153d20caa38cedf478ea1c26aa01865eee73ccd9bc9818ae58382443a21992f444832c39f486b55bab1101eb5f64005deb4d4e0d42a1984102f5ae2e7b6885096780f789a11bb8e206596f1a4cdc99b2b4726a0eb31bed2c23b3fce0ac158133f7a5c0bea5c04035ac8339dbbab0309220d0b7c70389460c43654e4ecd10d13abd7be69f4bbaed2990b68b0268baf328c81164433b8209f0cbe0e74d9b325fcc6365a88dd6c1ec7153ce97843a018acac268fa61743e3919808192a67b2789ba8c988f007e28f2e3ef94fc62a3438d0ebb2eae77a169f63a335899118ea8544a6b5ca036e5ff99c22ca1f702b7faed814ae6b879f452f9035e8dd7be2aeb9ca05d4ce6c15a22c47a646026d8c0b10fabbf1234efdc8fa57f375e26b6d9257e1fdb7e0920aef793e0be9af347001a27804e1199788c883287fcc0792f04295e4eb3eef2df4dd43145e155f3503ce28997a3187249d7ee307a049c3ba3f28bc21213213244c8a5935813828e9eb041450048534bb7c072513a4cda55862b4184f4b96d342099f59ab1cf918c1a96cf4a3290051a3256d3016044bb1e5b4cbfb82d19c8f8bc028b9907383a124f35200a1b33c681152b996cb5d42dc86959ffa8a0f555bda15d0e4f11283459109c90c8a58eba11d9fd9a36b610fd2275a54af6ceb82c92aab2acbe69b0764a573ba93b6265d882ae1ce25e091c05440a076d88426d73d0b73eb5c56c1448f9abf9235b22430edb8687f560897ac9a15248621a0009451d72c87477516c906b9d8e71e9ab8451e7802c42ee1c66d21ca95b8162074e0911d84a7e47bc55c7e2c97f7b2c7163767b7aed5126d0bffd10208e510f66f2b5d5b264a40f4dd83c10823b150c2afb6b0025c878e2eb6d72eb65a18631e1a8b542d84e9fe5c780cf390f85bf74f7b091d50b4f73ab88477d8b991b4770e1ea435e5c029b3192e0e70db30504c8819104c51244914d54cfb354c4e829a1762f09173c6adb55887cff0805b70e95980e9a708273ca2eb95940535dff3947bae258e6d83e69289499bd18159f3b02f5ca4f6c2d6b797977bdb614adb103352e96f22eab4dfaf8254be27ec30c94283438696c01e2746ec01eed285f4f1a53a346c48a281d80b2130636cc1b35ed7032f227c5c9fab5c7fb87a78f5e8b4e5ddf5cc61278317a3df8ecf86aa3e991af6d5041f5a1be7f4f49c8212312e3263c981805253be49c1255befbb7b446f091d1a2f269d3bfc61895ff2aa68354b1c803aa747571cd31d4d78b337b8f8bd06e813561e9ac95e2a61578f4e6d9616e9fd6175842912d4b111e2a0143e09f316b58ef2810942f44cfcf6fbc0cb638cfdbf9cbcc669d639e1d2fbbd5db60bbc67ff892988fb8d7063072a33d5bb2703c26c851c855123e9f0575d091fd940e3e78c3d08733010d3d7a62361234658d841c18669f92f29ac9c822005ae7227ebdaa569e0bf42bd0f250203d72ddc28a8347a763a6b380e3936a8ee5878d75dcab845814b1673953177281fc0c0e05e625e36d44aad5c3fff74343332c52dbf52bece4c6f03ecb705ca93949208e755b2a1036e8d2a74b93004142441d951fbaacdd4c74b30699312c59107dea3132fa3f6b488daf34f432b641b105324dc0328b6558a632cc57016747faa2e9f208fa42075b8c2d78e25ced74ade8e62f47af37f954dd6914b7107272b751f9b368c3ca892e2dac8a7d5ec9673448cd4c6776e505116fd94e1b1ffb7a7b651f5c2a4242cb0f5cfc0e25143a2a2c888bc07c6e4487951bc0862587849ffe0be3d73ba88c43deffac7fc00f22c41c50c428360c77aaa0acfa5a0528edb4a6399864406af7668aae090e46e22daadace4fa170c3c9352350256ea86d3856be5c93430d73649f5e235ca125978344446b27817af152b003b9c5544a4a8abc7147b0015d6d192b89f0fc47428535dfb9c7cd9100ecb50057ed7e52533ce403a60bf2fba7c9292b503c959e685d1016d1739cacaba5dfc00e7a2bbd1f0b6df6b77b7402321d69345a484faa61024b4186fc2151b36804bb40d906fb0eab333669f74d0ad90e5cc7944073abb8a5321bab4a7125f038dd1a2525ab18da5662297c5223189f095253030fd62a7c7895a5afb915a803227950b019c503c179d73de53be94c9c911f84d9377564dfa1304028d8535b5090d71b44623d42c95679ebbe96e2b68b6945da88bdf9b14511012a6289903e2d0061a3f3ed983f872e84601a77546c973d21d9cec6403139dca1e71c60639d9d1cbb8c28868ba11cf71634ab0661f16fa62dc30c701750a1710de8dabb3a9252af523555bd0566931739dd8f58bd66d0593b39760011352fbdd474dab2beb590803c0ed4e70c9dd22b28fd17dea1931c52f69708cd050878fd234ec18b8213cb15a89b75278dab48c55a8c9a1eea2836fc50aae5ab9102d869cc2479f86766001f0f5728901ee39fe3bdc4336290f698799ae0873b7a88c4424aecb1f15741b68a477d3acc9b5a7ff236d60866e199923602098f7432eab7116a62fdb6d59e94a59e7335d10bc3b9c4512d4e2006e6ef670c4052d7a0bfd7b7914b4b0a8b4d1dad20093649e62f013d2bc118b694015ae0648a8f3a33776cda09b88495b832380389184176b81dad9a72742654fbc06cd2fec1a4c108bfdb6bed2a1d1a6024aa9f0bf6221d047370d1e0f94214a40fa3501cb17654f7e069ed466ba403249cf21080d5c80d24d9df11d4d49c049dc522f3de2c7ac33b1a143535087afa04970b6a1415b4d9d732ca5d8371cc2474b3cc24a290ef0af676d21b632988f1c715482185b1765728644d2e718fe9eb54866dbda3b5b8bdb6722e6197773210b11aeda2ec0315fb7167f0d19234cf9aff139b8ac6e40be1dccf38445cb58ee9250fa1286efcaa3e2aa7570e3d001df8cb49fe947fbdb2be3503c24e402050059843e8d7a139180a6c5420e8bd8bf078e84ca08b2b62c4535189dc81ef3d9d024a9a01e6654e6a28685f34173a5383191c510d7ecc10d216952da114ec0bb371d843fdc7d4656bcab185924d1ebb41ad661721e2d46c1da82192868de52f94f40d78a1ec99ccb779962b6509969508ef8e8dc3adf7d4d5f1b997a9d3261767321a85566ba020aa85f0e38669c1b352e4a920366f06329e63ef43d40b6da9933453b93667e931169f9da70d40e9b1702279558c179cd9d2513773312675bee1ee14ff04aa2f705030c18543bf422c8832dfac248f595302e359417c7e34e5d7b95aa4d05e43218c935e6e7f89ef84d42dd1bfbc50a4ea4c5cf592d0f101b966e4966ada940cdfc655c443ffadf3422647d87b5f24cc9203bd804ccc3cf0569517a174a92d1b7363bdd1221622c0d705e5dd7603e229e2378594ce19b3be75bfed620c7c4b81788a5996479f3a04d8441d4d67de1d65c8f30ea5d715cc1c364926ca68c48f1ef6ca16480203b37502e23f18b3803eaba7f490a2fc36653a32e4665e8c2e337a24b7d88c063f4c7f60dd356d6dc34ede1e33e18a431a72e4559e80f40799e0a1a9eb02e27c00b30a5e3cd9f4f1277d71414c790ad91bd2f20ccc5924928a2f0e2de6e30bc128ffca1b0111ca7cb594088092498b118a323228679036cf136507977268e567aec5fa7f4b2bb31c576f855c109e8ca3c92cbda6bef5d6a359c9ddca8d21028cc92464d1b08ea84d04df9f2306bc103e67bac7803fe9111023741630bce8bb1e0f71708d7db5e691235f361a3c01d9f47edcab30b33bc5f806107a88b52fde50921bbaa044a309c4c8204a5a7a63350426680ae6f5f7910c2c40077cdb7c96041dbc3188657fd5c65fde08077e513881fdc8853e9c6492c29c2346aa12244e80a6b5697fa76e7e49100cf6cee85707712bd056dfff4ff4d040187e22d981cc48b526d7ea63f95af78c5ff9e49591379bd4c6620b4cdd0c28746c92813ada55fd2ae787eb4427672de1930ff6dd9ba2837eb152f86c336e48e7f35cd7f0a00159f6e85a52b2fc93177f7ad4c743cf38f39b51d41842feccbffa6f8b3c73d7c85252451d5651b584f7c80c06b415f043e772f6819764a921eb619b20a2598187735dd0870ea681e768fadd10ad3a046ef408ea0855fb021b425c2661e56339f1e28892302fdded748c0e66c02ef65f1754b0160d28b68e0bb9f44dcb2727cf52693ef138dc952c7dc0b4574a012cc6eca1ee6e8472740aa561921cb2697dacbadb613b123b566e09804a222c70ce900c23181a055fbacf3eaf8abd9c8c195d2e8e67a2338dfea4a8ce59c26611c1c68046031e6d96bdc0cef95e86ad0c12fa74b169cc4fce29482b810219030b4ee108197d5d0029eef2b2cf88e2622260d5031f33f0b87507e2d485797689c92a1b01c29dad635d8fbd61a7e76efb344007bcc30418b448d08789fa65e62163ebe789d3cbb00960f2f024c26c52a2c9a5f8d0f7a54b24cfcbf382cdfc9e8a5edcbbeccceab26550f41e1391c1da64fbf3bf8e14eba5e2ff2cff80093a64dbe524b21e99cff68f6efbcffd9d51548d64dbe96736cdb3de77c774a4b1d9c2387eea24c81f957d0d7353f0e3a7c14db900530d3bb4237bf3e71f6b2cd9b54987953241c2369a3bfb46e06ea85009e484db649b56bd1f9dcb5ea1fac36299794b9bdf135058d3194040dd18bbb6c512dde6a6d3f6e31b37bbad91c0481bbce474b31fc6d925cf9be38c8e1504a382031ef73d91fbfb81134f84cac020493b07518a4490d0da0dbfe3100759cee217e182a431ed882a6631d82c1af69dfc28cb331869f6499b2cca9863b5ba1d5f42730abb7807e7c1027039ea2120aa005eb704d063397c463ac673773048542012a7e0fc9c3b25193e07ec497270e2268a3ebad658c5ae37ad1c0e7b9e6f48762fca9f582419b9cbfc3cb5108f2243b73d9f1de562fe38df615f396057345d94c529234f923051c751f234bab0de24b5181ea45fdee2786362b9bf6d885171ebdd9e3b12dbcb2a923bb0fe5e0679627d4f9b9caabb33495ec7043718e55e06fa812fc767307cba2de0429ad297445de796cbf592c0021f90509b49e22ce1dc4a1625da8cbd06e1216aac5abe4583b447b4e1a71270028cf73f8f6b9214fc080f4209cc1b7171723fe907b8cebbe2031d885e8a7b6b9f91c3ec2b46f332a467797ef33060650209f59f523e2c7c2b08efb02ec449354bb9d1d463ed119e2f6a03e2f684c41ee92ba8a87d9c073eebcbeded491e1266c793a4498d8628dd4611cf020f1411140efa7df632aebb4010849efc7f80caab4b4021b42a1ac243803173af070aee9b8a951df664f1fef7ff696d61aa5f35bebeff745d2e514db3bd95b1763c2e244fb28a3749aa3ace44250444307513aed01a99d9bd30622507fca7b77b2a4641a3d73b6bcfd4286a2d2ff4427869549701271433e043fe38c8acf2e178f6037a8142ae22bb779514382296796d1266993304397960ff3bb12adbf49c3c2c42dc120ca17477c4212f0f042907bfb4dc6ebc92f0ae6607f29cd03e33456329484f42290277f91cd79fd6ace0d7f6f4e592da16627da5765eda1fc6070b107abdcabff49bafda847acae789722d2c91952787ea63a48fe15a486520d51bb81a5883a8c6abe16ac0e6446ab31b2d0f1c98c27be4b40ca41b2a107837c0490025be99b7a191ae4a22c95e60b996454e03aade649b45b792168b94eea03e65ac9b7206ee0b4c7313971bdf1fdaed13844425898bffe2c80293fb9391442ae662be92d6386ab9bc9d056092ff9d55a749841a1bc6a2d70eb0b7b3030f5ea0b6090e73c76b1b6d72d3921616b8edec09458dc561a26ced0927cd69a69143c46cfea059791a8716ab47079ee560d7a3b268fb4f01e4b6de6aacc28e8b409a6e05819cd105f509a436093c3964159bb495a00cee3a005d7647e25eb7ded282d53f30ea8ac03d12840ac5817ea18f4806f53b0e77cb098b241a781e58c75693e8348c1e6105b1044bc34d8e17397cff635b0c5356a4d8cc459b68cce411fa9b2d186a404e1da7a43f0be52b75b9c8bdb523628f5b431df1c416b1032cb4129f34953f1d832ff96bf1cf7c5c3bff731881a3b3135d5a7909dfb35e8e0f2ebc6f49587b017840fd2a1d22d3d22500683504b6bfd2072049e68f3fb377c5cdd3cf6950abff28e1495d962016e5a76116fa3b49642127478e6c8daac46e98a3902220dbc4586ba7d9ea30b81bda53d7246826640c3f00b44f3cc209ef1f4ba69f33ebb57b34592feec0594a292f576be3dc16d4ed58abb3536475f230eba6853e88b0fbb841cca89d6a797944e2be4d801aec4552816e3bba7dfeb84d694e0db6a75690cbb4696bf0db05e2cc8caab62feb48b96d57bb39810eafeca7a7c57c50882752992befdc55e032fff65fcc8bb06f8cc2d3ecb1ea24f3d9072adb3ec3ece1f88aaa611f877a1de77145ff1896baba653e7ce14731ca321ffcad30d55ba22a056bb8700dc553ee49a598699a1d5802f5e41d3eb417d061ee4529c02b6c80c7e8d974117c4adc14a198264df568aa90725b0bc60b014cc9e638b74f7885d17edb140011ffb79d4f02500bfe31755a97c4a2f9c803462310b50857dce6e817aa40fa5fd9c202914c919d927ca5e5ecb8683abd2f529b72f3e91273ebcb3955002db9a8fcd9d4cdced5f0766fbdcc97e3c2c180a39a9fdb6197205c9e87a630770ae5bb0c90314a01ba349a843bb8d9a2f09584dc156459bde6e848545a86cb0cd1c268ec38adc6def95e2b9617d3b08f63cc4799bd20c76b78e875fe90c67404f9ed326043daa9be880a502d1f180b6f407606acfdb00824f25021724149cf0ad8adfda78af82e6d86067db0dddb47a6ba605cade76ad2ec7982f9ed667ed4268fef52af2ce479b15fbc3bfc4d138ac107b88c0758f67d67120a3c83258fb1dde4f244594adb035e0a713a23c8798a2154126cd98c001781088988d3d9d97d55bd74dc3a2a360c6dfa15bdab0313f147a4617ec3079af5db9ebe72458f15a9679fa4933296e5cee0e1372c24ca6c8a00ab40145b97651654db2e0262a95de2a7de95af7d25a45dad39ac52e74aa4275b0ce489dae0411ae15c02c531cc2da63c271ba30b85321feded921460cc4fb18d3564e762582bbf602a4d6d655559b050fd3302e23f64de59e601548839a8e7f7947f79514efedfd393598cfdfece3e9be0d29101182cb89185e647bfb1bf6903bd9cae786768266d3ae3511c6ea45f09cb6a56ca5a70748c2e2050570412cf2b2b3bf8f656bf779bdea1990fa98c0d41be253a398c23ad389f8826291ce257e19d4ca299ef7cde0bff26974f2ffe1b6f1e55c9228683b7e73be421e20dbbfbc63c30cdcd3c70954b15fd234abd7f5945772a97a0cd5319510545f31a1bcd7ff11fd61bcfbb33262789ee22d542cbe1480ee4624d8826e91787f1a25c2c01b77c85718a2473a4cc3ab4616f4ba7a3db4db90409db6184b9d065f7964c21bca38fca8fe6faa736c0bc6d79b07cde0fb272e101d898bc9d8b345cf0a81102ea87c41079a3b0f2d8a41fcee48b2a8ba8e33dbbf8623604def702fe438330c150701062e5617b34b5d97aff19dee66959b472ca0c30b8b8d861122b0f842a498a06f5647c4df5d89148d1f01d4d45ac2ab59abb143a2d0063f500dfb87e0e0c4a8cf010152b2f1fa5fde3e5dbf00666ee3a91a495b7f34afcd2012e9ae8d2ca03c6a8cdb6f297e03a8872dcf44cca61f1257ae3e9206d45da36aebc96bbb9d7a6025fbf78fcffd7095ed394e456cbf2293d53fbd68da94f37c121a50baa4ad49556a9e42530661e7ab954f26587f5bb1f00d58de6da6804b1c611cd116b8c683856f55bea63e6a6ad63c32520e87f82782f3053b880996ab8c0eafc9649fd1e0b273af09eb7dcbc0f5e23a4bc8e866bcea53ef63b50bed92e2743d9eaa9135bc0cd57bc761f8816948c7d8a28fcd8e90124f5397404abda8ca1c9e2270b405a0b13bccccb8c7c7a87a735c8569d380f1f9dd50ef1e5368990c3795801d5a56586520bfa1461a2e2ea32fad5f1937ad6bea9115096193f68b988d428f80f7dd8f4b17f0e360841aa65868afacf8e46a5692475f1dd112cf74952e0753b84a7ad6e1c8cf7014a2f826caf32a3f0af81d5c59bdfeac33e4af9b0154a5e3dde67666061d7c56787062f4b81f02aced7a68145de2f0f424d636734a525b1b9aa4b4507dcaef5fc16c75e8ba8037993dc24de1b358f94ba9c3eb3c43a2b476e6a8e14e4a5afc321ecc05314f14a62e8511ee09f2b324102123f42bfbd16637ac327e479108abbe62fc97978e14df07490c383115d84af3cfc977220b65c29558280c833ecf67ad2dfa49b0c6c079a11263a432f52b8834d655dd02acf49a772d3453cf09c86002ef081c47ba4d01519265143eea7e3e1f5ef217f2ed0fd33ce87784038e62252dd133b23472f59b5a744bc8cda40206a17755d4ed4eba5db944138925dd40009e8a29b85c0cd89b369af2870b776a6a73b3c54a825c4a5fe705f86e7cd9eeefc660067b2c491e662ff0d146cef246d0fd5bc06c9e9d094d9e51091a2a5f64770b4aec26b0b650826d29482b938ba29f8c2112918bcaa4f4924b59f549909dec57b01f4d876e4f972678470ac8796ecd9de146bb64cfa967e54b47efc425d872a728a4508551696065988ef9a0a816d2bf280c4d4bacf902f1ed787d0ba7d3fab38689cdcf7a30545656805242ba474fde6e955866890e27363a0b37beffbe9894b166207b520c0a4dcf8a0f71dbe1148fda804e7cdc11514b96d53846c89381ac07e0f77da7004d29e172b85419048dc9e95e840fd5a3b982764cb2d9402d8be2ac63c67644f4ba362e7aa73c57f35506e390c0f99de6572116a5715a19f1893a220bc0dabb920ae36e656a3837b3533ee6238ace1e11706c99a50b2c7d0d1d740ce94473d1c8dc2d2635235c9fdebdfe533ecc19014a2667d597de772e5c234a493ec679a3f18f3c8db18233a397b4100870b7f558940b67806385e9578080ffeaa35add21e7fe3898ec467b0bfa159d16813d8a6e16bc480902fdceded179e2b74d2121b26572e58d2bac46dc6b79f47870cd0cdc093117bd6a2554636b3062341e40716571d97f288baebf48e7250b4bbb8fec31ea7831063a7ce3bb5829c3780a025debacb1d3e1590f9058b5cecc1897f54e60f8ee8a361615bf94eaf62de3fa1b68196fd48fc1d5ce5babe8f022411f8da1bc0edae5c3942babe8d8c9b8aa8d76dffbfd0071d53a9ce6b31ad5c10b6c5b6f635d9fab9786e5f8f9ab11791fe1853275676dc768b89ce309a6671eda9f72c2e57dd8382b06f183176bf2309a9c316884a5baf51c7c3404d44f6ad302dd9fd5998702349378ee661a36357d3b070c0da761986e855abc2621555a39fc2d939baabf6ae880eba6e0b87ca7265c61b2f6c2994d4db7609964812af03270976fb54d8971d4871cbd0852ac25efba2d3204bf8c3c3cd094413c8652221d16697cc3b43060f4a119f58470c1d034e5e9cac794eb74214fc5203189fd15d0639327a2500042a4f43abb7dd79f897c63728beddf3fc28379af1fcb221e23cd7876c54041265d5ed5cd0e881748afdf67afbda06aabd9df47077a9e6248b089eeb95064a765f584448b8f195e4143e05117459f74b5ce850b7a8323a561be9954f2eee8ceb5951b97fac5d46ada8fcfbd5b9f156546e05e44ef859269da504fe85c6d95b7454f077a2087feda6992025a8a38c87cad4a18cd7bbba376c1137c471c5357daa9362ad06b42f8641b18f6a452e01987765d5332c81ce8611da312b39c1a842a9f7539393285bd494f05a262794466935cc270f5ac4818d9628f156d53fb7d30ea0bb6e348645d5c1a02a38255b3a1a3ee6833ee077ed22d5ee4306c8b4bd8099edde3eab0ac30a65ab0812191700dae186f2ddaa1a49f5a26590c86425d0f6c6d58d7344068e569c054423f47a0f346f47265ed0bc9a770faa406c2cba0527129ea842fec525d5b40af4a9bc461b5a85f4bb50d20972088e338d1acf663e3db65298b19ad4de0969f11fb03b24c1f3b459a02df3e9f7ecf4c70778b600f6f4f9083da673dd8835f04d4f7f4d9d5dcab14abf9166ef8c7b05c252448420227d86963e6ff70e2d275b3b2a28246dd7a150b9b7e6fb05a73c2f8ab64a15b8934501fa1ec62410b7b936730da3a590c7cb05896c655f94f2e9ee5e6899da0712c9d812472060a205db00c588b118fc93d60df8b71f0d15c61201b41220d1b0d44bac4cebb45829dddda43fd5d7ee51418be3fe540ffdf466f81b265a3d2aa9be86c5f4921b3251f5de6818c38440f50616916ba6ea757637202f77af299deeb598f613321972774346f00c2e28156754761dd2c38f118f1489e17ef83ce00168f88d9c039f93da58b9dba22453165a125784ff66266353f54744b905d5e8cdbc33e13712a548e90ac8bd721995c26fb0e22da97d75f52b234d5d9d8bd9da661b04892994c269970efeafb79d5f1243a6e7c7633b0321f133190440b2a282c4952a562537a858dcdc99628114edfabb3789afd8e64eb620858a05ff9715b75bf0f177275ac082e7da4efb0c4b27bc532bda7dcca59c586302c1d251ffa7b2de1ba1096f9a646c8390cd024dc9541021fedd4840ac2caef68d64d39cefdf8d60bd8f6d45529a67755546f2c7971965e96c2d70e0fe6e0884fd05ae57081a438777c5c5ff0a504be295ad801825ebf6a972d55ab140ea4a215591966b9f85a28b2cb6c64eb18c60dfa77809aad75e2b98203433e7e2b76a5c2cfbda8b7106801453a02b34815e040782817ce92c85679682fc09bcd5b3a77e015108dea48449261c6102b52ad2b10bbfafc3291407d9bb5820642c32ed01ee1a5203417549519927fdfe7a15498c8f3f7f9d479a77bae0d9d6c4b2ed6b39c6aeff542e0f6bba46fdeb7e4ff7d0b6e2bc3177571e5d0d96795c057e429bf07c64632a725a3f03f7b53a9ca1eff199914f45ecfca413726ecdab66ce7937a4815505374b59de7c8b675416d48712376340b5ae679f927395091836ccfe810e0ec5e6d0242a7c47b87512dc1b218d03d894aafa481a5935d1be26fb9be1546b76dc4877a7173fe2ffb8b5134bed8b2323a1bb26fff2965efadca3ab0142f710c2448e683f5b464497c4ce00bc15d4e70e0be5ca4cf6297a019d8002a7dc9b8af62066ba148e6da4c6975bd8127d4eb61b0a022e10df35e63088bd40fc05feab7ef07ec364576dbd3f7a55f80cde35e47d1ca07b64b816ef57c1e475790dfc853990d007c8ba6669db27f582d2ecce466f54ea427d0341bb602785ae8605e27e7d10e260d380f04999170e4d4348942b700fd9a95c7a962a02ded6e681e7f88526c23e14b1785fa5aeb4c3394bbde711f542007ae955f9231e8f7c58e539bc2e71fb9d3c9b94a6fa1a73448ce3a88caad7922caed869a2b1626e719a4f6173b3c8fe7dc948cf93abfdf168cc34a80c667f1a3d61be9773a3a25c737593f81b919dfa83c46a00c8f65dedc49fa89ac9831edd0eb3d459acfba848edb54811e052081d9c7193c7c5ccff316f436d7d9175dd7e4cd33fef906a87e5190d908bd0f921247d2ee76e12d2686224feffe419e52babad6d6192b8890655b51e9bd0116facc85f3e67b242f44fc887fb119ec97ab86fe481b4c8c52f5743fe61e5a76938be2b727a533f1fd35319ba638f4a47093d6ae17d3c1918c0696aa8af89dc76130f5ac84f8da04b820f9fd3e81bd988d4715fbfbbb3bc7994420133c22e06e3f3cbef0ad44c060c63aab14593967251c3b094ca952e52e78c8684067ecad0aefcaafd0b06ef0726a6af76c347fbd6beb4b66bdb23729e997459842ec470e7bc903283419e0efc3d6eb96a0256de804627ea8e27977d4b52e51c28fb5cc8b2fb69208c59b8c145aae04cc130c8c499930093959d52c17961f9b232bd0512740face730d714e2fc9ccf327650c913bbd31d383f52ec2f938274c0ee76151932bf6ba42303e8cb82cd1d829b7e5afb0d3e4d4792167c159ba5bdb68ddbc2fc141e8bbb48309965168b4cc1e9c2ed083536175fc48184ed00e7849070d527b1804003a964353c8976706533b98a53bcba035375ef291af383221fcecd705fbde3c71a33b31226cad02afccd92ff32ad341acd1299e8d4ca95dcb817d656b0397e2ae9f8bd4bc5e02a104fea128292b3f7643dc6985280b32d959bd582216aa8a74ec109e8e30d0fe071e7904f6b5cb751cc2ab06803ae4aa54818937a3839b882468f29ec317c416ad1deab41a350c301af62a55e4a429d6e7d9c5158c3c9f2b1431b74b80be80cb23e5f19d2d77e55d9917ffccfe51f75530b56be195854b14cae3852f30f43e4a851483e2ecf2c70eaa446339dba8d88a696ac888fcfffbbf4ff3a9f40f52173483212b8585527ddeadd9d9d5a24a0b80c01a22f9a423b082c4ee1df5dd6c2bf22e06ffea0fc3b1663bd75967ada2fbb2fb48301e650915e677af39c55560e420e00e00ee18672d5200f6ce74b766d10528da65afdaa58bf777481e0459e87d1f149c92b5b5300cdba0168ef95518649b07379cefdc6fcbab67c08b556554103b2e12babc485dcdf78b4464115d74ee395a321da2ab293651f40979c0330628517bd449f0e57dd662750e1bc922cb694bc84db7e1a42b5252e4aeffd629d59fa1ab9ea31c74269868cfb692fcff4f7cc132847b78d998384b17e28a12a6611c4faf8f2ea83b3ddb698d917e74e55d60b31353e1057fd702feefadfde8d6883ecf69153fb3b2c4474926868130a866025ba382ce144e3640bfd03cb17f816ad8e06190a64efb0e8e3545c95a51d1ab3dc50d87e6e6cfea1e874d1a235766bd39ab165f8e13fda9b0fa06074530ad2ba15f6be44e5603eedc6b900d94d9c63871646c3c1a697d68accd6d9915c38db99bfda0aa1269bb241b133c7a1cbf39d48c0fce10336dbe6633551caa0723444cdc6d5357b50cee93e8346d58be27f1ed606b3d8ff1a09c074dc89260bc9c3a35e615c0a71be442f5b8c5f7caa0d6d1acd42f3a4707dbaa297cbb8a8f93d67cce3a1bc40105ab4165df40a8b33794ee3271d1865a5aecf6e067823a57397e686cdc5ab2b54701e8e93bb8731810c68fa0d61a55f89ce3829506c1540381c083afc1db6c99a29addcc897a21c0c8fb4c2ead8e5de9ac510fabcc65e8c9f37b11529c5b6a35049e787066c020fc2a097a4b9610b0fa26df7b4b8bd14c5f662bd75d21932bb7d10da83fa88b1746843f8f1f40583fb365b7e531f80ea6a15490b8f0ff8b09004435573ca399b2164125f55a49cc58506f9ba3f09566f01140af882011017893391fd5ebba8358b7aee3da7df9a1e55c8db05901cf91043d6dbda37ab4eda510c50cad13f700f3a172ecd96281e402d0f866f9403d471c5edad5f78b7b41767ca6eb4e17a3391006061ebca6f787b7bb256b23f364f9f67c9b1a1089f5ad468a145f0017084b439b775e7aba5d9313714da8a55c3e720d81c0746f37a798fe8f86a64463a180c68b0ef790b866055bdb7200d7ca693ec741ad8076e7245e26e77e7c374d9c9deffe7f31661291bd61e71337e737db8584c7a81df6942ac84e71922ddcc7f186b4c5a36a5b7cb29698bb6d78e2e96e67f5e1764dc7e87236ee8a5c0a6fc235019ac3764cfd861dd53ba28f4a863d2854fb38e5370fbd44c025d6251ce8024aafc9060c0b377782fa7808d4b3e4612f0100812e177ca37aadc383043964e6fe27e536972b6b2f55ceb7b56a701b9bd214c005e4c03f0d71ceaf77a2177d186f508e9a0719f34c92b0cc6018e0e1db6b163d9a82a114fc8ca35df8c6cba8f12f433a06d59a52b1189a11d0a298dfd4bc6fb4ce835ee537f4ad2d75eec38d4b553cebe03e4846d102535749ff240c93ba0a63d3d24662854fba5fd0ea62a0d6bd098f675e4719a008391972c0a301664a5577a4ed67eb252cc7abacd7e1538afba25b5b8a9293894233dfde10f5a6a7d3b8f0f3adac94ec414fd447d1f5b23a63b0b73828d1eb54a9457fb9c31562e621e861eb7490da89da08e50d6e9be349b1f8bda4282ea85e2264f192bf0e63f9a853b16b926c3987e7169cdbe54dd45a0b3a75b79b721b7c40ea7df446de998dd2c0284bf39ca1d86bce6ef16b37fb0608dfb8a13ec4c76ca2df9776b0208a6437c89fa9d865f87684d1f673b55e61f33e3adb52c766e7ba68371a79469067061ed18fb8d77ef0515060f04bc50e4fef8cc1f000c21be6809a85fea0a093b952a0e15f0efd655233104499a9ef0c69e675430a85df35a084352c05e417185d5f97a4e8e4cb329e703bf93b7148fd14a026b14232e3e8be116b16fe5a8499c544460c4df7e4463d5e8b2340c65feb21f9fae5966abfa78e54b5150552562245381c7a7cb953bb81609564bd63747ca45887618125c9c59db53d919efc063f05386846b0dce8c50291d77fecb79d72a3fe066df293c0bd4ebd00ff7eaf483d1ab1bf43ea35cd27b623d559130cfe62ef46144efa27a01ac7cf57f7b3836fdb39cc4620d1f63d4c8faa51c58ab12c3d02be709e45cd77b28cdece6f6a94a54ebf16f14e7597343928268eced48237fcdca7538ca59b0519c03be4cf8aab5781ac50072eb8b61abe497f5744d476e5295a1aa43b8ea78826b0a5f3b9fc3296204b4e84c5897e00f46cdbe07d6c288801328a73c714179c7d383fd63ff529708fa4f48a48de455483b057a91341b789af5c5787787f5ea6641f99c8b09430fcc27b38f7936119f8b892cb28edb8bd683daf2e5853ce9b8f29b2dc5365a3e85231172fdc0e2bf1d7f6033a1f6a77c9e90c48c3f245e53b22415148386f4f7def95b7f4578d2f90eb005c7a6c8a88f8d08e646f2361751828d8a8f99161df66f7ac3a34559219766ab68a4a1cddfffedb3d22e4410ff1f0579b99dcd2f2567cfc47d4b3000de1d62df6bd2245167f1b87df3a138465e88d330c4a2403b07051c8d13ec7dd38a280ac252132f00887e1056067845c2025c57cf2d63af0199356e456ba41c8d0b650558252b49e2113ac8b09e327428e6635478a4b7e64858604a94cfad9f41b563297c89a6233a1e5069ad2620bbd842d713d4f19626430a31a7d7d653573d2e6dfd204d7e2e5c58b22141365f34fd89a76a932f7415734b860028c6a4382514e92f3aff7558b3d3c541fdf77aaccf265348ac304c3e54e6cafa982cb1c89013ac12d11ce379929f33f1983412a62c3d9fd0daa04fa3db90173c3bbc0d82c321156429e81de520ceffcb988f902103879172478fbd7c4dc31c0a05ca6b54100d5c68f007040e9aea2b8df2a1f4019ddf48aeb253a69308fcf5b37dd0651a21ba73d8f3e9fed98fbf022d37420d93490f1b593d149f17b9d6d531c048b0668ad189f5f4272bacbc612d421c299f7955ada61e22d40231d85779fa1175c05d6d120811156446a589ed3d2063b332eea0bcbd19b6608142d4111bb5787a5aa8b960934b8af46a93a86892050d8cb0688d7810c861cd6293aa2c8b3bf0f44725305b9b26b52c8c7d55a813e699f9b29b595af7084582afdcf10caf92941297dff31a961ecedf412759d7ffd9e9a4eeea50ccab3bf5a640c16b335bd755f91d141b6376d5d027d20508a235804568770184f3b04fa9c074a3dbf2edc2be22538b10fffa56c35646683438d6cf6fa23d617a8efcde3baa3419e4f9f05078b12095ec572984593402f88b8423bc6467f5e27d3b483669e879c918449628af6bc83ecb1977b5b40521366661f08df6c5eb65d20b35f0b20486fb27a0e1636d2bcc14e0b5e6cdd3c0edd5a9354d51969e34670c103d66105ba17628152c016d751b58ed4e4a55b576afb0f01387ffddd9ae2bbcf77748bc87840911190587fe9033b682d962a93a781c32e6a6cc36c624dcfc0db08b4164ebb2e0e6ea167c2b769d3bf159312c48c5a41e09de2b4fb2a36b3e70975a49b516934a89ac7688b2dd32dfba24318699180e73c4e6ea7af5d5e1a2dc2a72f60553565da85d67443a2fbf86eeabb32b7fc716ad53dbf4c633e1cc4bc0fd239454109d9118f63900305d549b0d826613892bd5b3ab2fef80a460b94d0043fd3e2f6e07defb456cdc00f8edc660d991b95d3b03bf184bd2a044093e5dc8dcd8a959be3c40438dac188e734bdbeec4de9df4aeeadb4acdb16eff3c02184d243c4db2cabed70bc4e96d123f12bef543dbb9026e59c180b0b622e67bc6c3352f99a660aed0a7861ad6c30c51146366d915c004bb6f21f8efa5d85e136e233bc9932e21d49cf0145d29462b635d8ea006cb01ee449531887eaf4f189a224d546b595b2d6903c00aebdc4f92172341f5da1b5ff2d27f39c720e474569bd80db6bc774c0bfdd5a79d4387bf9e957e261bad7dd4ef3e403beb3d14a1d5d89de11cc9d60467195178f626f48582141bf16248ba0c68dcf241ae4fdcbb944add358e986cea83a87db92e7db074580144356224b8addf4ecfb354d1d5b5d39d799918f46a281c98af27a8e6595151f7eec97493e2d2c82a228d08a5565c74c062b582a03c2c036df54452ffbfc229f5ff4053a727bdaeb1b59662ae14ab0805b6c70b6536dc2070a1b03dce31dc99e0c39bf2157861299416c3c62596a3c0fc97c4f4f057894f03230dbe091af4288ab7d6a42cacab79551d1f623442dff8d0091596f43ccf82be689698b4dae1f2908944e36c1044436d71d8fb5948b5542c0cbffebb7872457f64c94ca6f1e4cd0d267217de8407837a092defed00ad3c3fb6d3068d8ef90473da2be58384ad93614157767aecc66ec2ae94e4a9eac60618d82ed8e66e6c413b4b3f3ff0ac084351e68ad52de9358aff1ac65d6112b70ccdfad94d2edf609036673cb5e08ed2986be01c125451117b5ccdba625749bffdbbb393bb9f303ca1b46eda60a64c5e78683958ed6057abc00f57c6d2ef54400f4de346b59661d176a6a8c4b944a7a2ca6605c0641511483fc6a12646a2665ba918cefc81b636e62280f4675172334955b598a0111991406c268084657d0cb92122d46ae258be3f140e9a843499319b9053075c46b7bfeb43962609e8285487d089cb48fa2c7017874453522892884f26d7cde140d76f51cfdc76d0cb51350a5d5f547a448430799cc3d498f2b609a4dd071d8c834848e1b9174d3e56c09a260552f2d4cb9bb097ca227f20f6ed0eb3603ea24678439e26dc19b2784de6b57ae9f22cb6e52b171639c14af7f69d3415c083607453cd44606ed61509088f34a559c4404bc3e9749a1735660ba2a25ff2e6263d28d7781b06d3c8c14dd3a7fe3e8e41c33cabbdadc49d2e88e28c33059744650dd1be152a57df18168cd55b9e4130ea52f15ad3d9942ccd26a3e9c96eaace088d0a58cc2fa11b61d6a82dadd6952a68fd0d77f9fe47746485d2b40d3776d2fdca9cb71bafefee68610c15bd998502db2fd33cca78317a25212072e0f22ed54c6ab900647a23daacb52211b9882b38624d3c8508f5dc95c3ef95dcc9b92ba72219cfc5c4d6a05d84daf50e9a82424ddd8e4de10bd3c24c9c3eb843af77130bc37db9b5fce8efe37911fb2f22168b44e8a3a57966dfeddff175930baf86c7bf275cf1747fb09476e0c1461fc42ba86473e5c02cf3e9210f5900b8bbc3270535b8640375eb8f4cc0805efb141104ea1a4244f03af1b1d0f2623bcbf43626b120f6a93b7356e98032c284a7e379b7f5befb9a5c4e4923764f810ceb05738570aa4db426b8421d2fae6d98e6a10a5de8119c0816d10cb194458a2a7fb0420c66ae94cb8e66f56ae1494cac22307548a3d4f741747b945fc45383abbe20e124ad2a82c0c9c8db1917316a6bd0555ca9b4a37f4ba36ec847690c6e1d308c025c63a514366c046a4f90d949810931cb0c7f5d19b1b753922dc6501feed4efb4af5e8d5a798f4eedece618cf58fb1493eb121898a0e4902b3b79c3d0be0e4c973da7b03e1416be62910a150205b85ec802030abef0d97d2517086c0dfc203d3650f24953bc972a823a92bc1970088bdc608a76143d5a5c2fd6160f77b80f76caccb700ce0debcd54e645cb8c24b80b566d44fc9ab1ed1284eed60ba3adbd8c32a85c437d145e33d766f880f4143cfba288ceef4aabb168ea644bcccae32489cfc015a49f1113a1ff2d7c602a5fee90062182209e9a3fe029a69e09fd75c4b27f0850cbf7b325b9b6ef48dd5af41019fe00d7344d70828abf4a7e8abb8ccb7b0c6d3c39830e146f9e5ec5ec5c9c1451e5bb9e47cf0291b67d0e018d638a75efac4acd051688bdb280c31e2724803d54b677f6fdbdb8eeca4ea5a0ed66d5f5b5964649fd991873106ec1c5dc993bf64259a8cb03d85c5a2d64fa51f9d171b6f10c936703a76397b34ea34542e5f4fce0bf7c34ae969c3ad072ca5b33e7f99adca447cead27e3eefea7e970096a7ae73d4d4d6eab52084248d2d0aa90d5a8eb94b0dc16f4dc9cfac83224f50dc6bfc44a67f9678bc9ee145d76d8b458b2ee82262eefef0d403de8953aefec3c4b3e58d5b37738d8a1498d6d07a84610875a940440ae6dbd3d9a1c77da3073b8618cb6af1671948d46331c595db54a0269b576480a14f784c1cc58a034de7f6e8f5038c66fb23bff065bdaf3a442b3be80dd4067fd998fc60cb53263ff1860235825fff4c075e3c9bdf4f82861f3366e3b04b528ba474ed459894a3ac04a5dcdd10f1231b32d67c9fc66eee94823d378169470fa28c989fb0391e7731a9ee3d22ea06f7a3f708e88d7a5714dffa1035f413efe50cd2170338737c8712fd5db9d45f358f39adcd9453098a5f1a922bc2c72d4130f0043ae568a5317b5f60691cddca8d7f48e08d4248c62fa8c331220fa3ff49c18f117eb1f0198ff63f8270ed93b39bfec2f8d4b1451a7b0b2b1b0a5fd4763fa36f332be0e1312c3c0c926c467801717737ce1ffbb82ea1dc9210802fab7052d52a263abc8973e894026700bb08dbcae616024c7cf8b75e367c7aafa97acdee98c7291b15231c845f7f10cfaa128e7ef769c5a16ca5c97e4a273a8ba3161a43cd18bc397c1c4c2823274023d2e68100993e73503d70c136bef5657f6d0acf4a6cce06ce6f4f1776cf33de62f8f3cd95ad3af0962b03803ec48525389b56ed2517a9be068337012d9c41ff6d4b98026daf8a4fc019e6710d49803185a35ea1cb56ed4a0d843f42a0deceb7767e3c322181977575db977de51f7198d6ab9338599d814eb40971a88120a50310a00a5a0642f76d46d6d41fd6e0e8bc5d1cbac165aaaee6d90b68eaa0d8083b4317a13299ca002000f40182e6796cb38f79c05e7d8296bba3eee56d65c49a213c7ad00a8f787c007f6e11011f20965704e526340f2fdf724051e4702f2d4b8de78c8b8557eeec3959e1b1cce86ea02dae05e8eaa140d2c6c47fdee9bb6941a6b8c5ca04b2800dccfbedaeff740f2903b5eb7665f4bdae7e9fec882f81f38b0ed8346a9f95c6de04ea74e5faf01a7cf67a323986d7332a195e9d65f8a55317a7e9db53e8bb588f6238ad6c7bd34bd88d9777e110de19869a71fd5cd648ea58fe5c7616d9cd6510656970d7c18f644ac85d640115afe1b83d28211dbd6cb58ac8525f2dca6df93ecdd94d4e0cccb49eaadc2b9294d2a878dc0909a283343e140f424393bda8219bc40ef8550bd20917c48ec18d66359036e35c0764ca70ea921fc257c8e3abef9d4071b8464d8599ed51f596013363820477926f51050e3ee21745f72b631eb23288df58371b4ab6ebf50c45e1646e75f2f00b00aac20575f318a0b4c56e46f6d9192586a5bf479b735e05276abf442db81bba9031057eb20be9d886510853885af939fe496fe70aabb88e3d73a976e818fb1c921922136070422abd2da738d5db49cd4a87eedc54e01bc37b9d37609c5c4794abac64784b424fcf564e71541231016b6186ac2a8aa5a572a4f61e84b08acd4ba598960e2f98499c60ded80b414e3cbd71dadc5f6d83222e673a6d1e5e8e742f0c3d92fa9a5a380c72c98dcb48733cc6aadb5ac42f3b768bdec230d15d11c0ded748eec7b93af5939e47e9570a83ddd871178f9f7592f56a13286dcff5b2e0d6d2f956d8f3a3ee3fa31a78e21a6253bb839a2e0d0abe9bcc1e3689a95a3e58f5cc5303dce09e6b00d5296274c1b6756479f0c3ce24a074380f1e0524590680259b7f1383c7e4bd2b55b2b83b6f851ccc6733445dea9b3ddfb6380ba998a68440019cafd8a98b8b127d1bb32c1d94d38ff0c3989db55d48f338db20a3982840df8761fc04c1fba6522ab3e977bd3e21e7c2a7c56d98663a08a06e518a05796c653a86f4c0c8b436f252766e4d7e7683f409501bfd6cb7c59d0206c7b974e7615394b4bef384b8940ff99470f69bcf198f58d9baa68d113bc47571f2740733ab28666ebb79d648292ee01dcadeefc1affae9186fb57a770cb6a842f8886880c92dd06fe2814ae38404c6c743d463808beca5102a82db924c4c0447e85f7768f9e341db997c9b94dd5d54587c6e4a5be8107d8ad85b2208ceb0b9bd24d085a0011c21080a57ccf74d99afdc73f107665821a9a9b463a28b4457faed781435d24c93102038cbdde55952523f484bf0e8311932b5c18d0a33762be457592a29b1c1127ec3422b5c75df6ca3552a86e34af64041193f8f3938d617f98daed5d6d499159a84e7d987fcc155c235e5d36352a0f8b0a4b48bf28604a63d481cbcb704b140483207cda465350c09c267ec9584dd9b47ef32346a2f8766fff8b471a34a16e08030de5ba57f8811c91bb121639d895754392286829a8a2b774821fa17003ab7697407a20d9a0fff22d34671653f0b8f44719ab34d019f0c4b732af5887e1aaba32596965c011c8a00c1dc34f4c3334621f5419759d19c09efb2c8d8a212faf99580ff926f3ec9e2f3ae75963b0d635f36bbd3cf3bd99bbd75cf960c147f1f0ec87dfeb603794990e6d968fce90f3642a1dd1675c2ba5f40933ee2007ce56ef27ce6125f7f51cc8c93dc51f6c3fdd94f631c2a71f5fec1f7a057dc70b32e50da8f35db4218db557205dd7e1d9500058606e8025f36be0dae41c2b36e0d28a147a4df046c1b17d3bf94a6b1e4479eeb288f4f3d0f35598aaf77c4825534ac4d07641a36f71df49927b4a89d79dd1b4f41f461bf1c96adf65dcce2bdc166545c17a8ebb01211fdd153c694451bc46b6d8ce08d56d4643f0fb747e24593a89c504f51925b0e19a539aa16b7b41cc0ec979f82eb8e32a6375770df5142d57d195e323f6c52ae29a97cbc9dc0060bb2227b7cc5c5259bd93548d60395198b805a9601afb7be61a0553238b98167d7389c2af9db922411f89a4a1414c252be345b47025562c1eb51494bc1d4b69626faa805ceebf617a47a5642ff40fd346d34327935e1aaafbb45a53e28bbaf970b17fb4c97a68de08d3e848017cb9baa61450e40611bae5c5de6abbf40fb7520fc9bc15d322979ecb32503e75a3fa9ec823a1603973640d9c2653ab82047f9aed8be9c26a2be9aa09f20aab71ba2ec76e5cdfeb119a3c41ec6dee03a6d3a8d0fcec3c06f7110c81d7f6e59c72bc168669cdacb0edb203e219753a016d20b2acdb5b4ab29a471ad2e1dd24a722907c2d7cf9697255330359d1a8f422d70feb5a82d81771591a07f601de0ae0b3625a405c12fc8ea47842543650ea7c5888088ec6586c2a5c7be97878564fd28907e373a6060eb69d75ee4acbdec2176a4dfa684e6d1e8b52c7279ac6d7821c321ff272230b79b3b6d09911c1fe19817f1b87372b0ace6e4371e0da9b13549738566e4982c82524e8f3b30dbd9d0e19ca4b56f14d5cf21ca16af0f35f8984d0be6a30e1999185d12f06e9e34dfb994001bc1f59486f2a9a2095e05e5762954c5e8a74ffaba8015510ed2ede910122d95265e0405422234bcab177349adc1e435fb10c14e15af3b51f0a8fd1cda37c41af285eef0ccc6083d5a05375019241e5633c37c787f3e73dd30c7d631257dacab0ba2e5ce0f7790eb549b8a8d96880798747d6b12d92fe64e2313af12015d9cba244d5003f43db63a3591afc5f0a068710fcf60e6f01fbb91d4d20375875f693611cb6484e03e875ff465fa98ac717b45a1f3a0d63da32a100505c9084217756a7a23e6d95faa5898326fb057981a0423f9356c281e08abfa0f121c645b7bb92138c017cbe92335f86c966655595029a0a531d7ce9e3a0206487783530de58f10fc20a831ddcc01c3381305128288d99987c8b3c5538e3e92254142d1d17f5c1e8c894559c04c17087fb2008164575edb15f2d946f3eca855350a50cd5ed4094ec15842fd423e664798631a06518ed24a3c5349b16faa99518a62a523bdc9296bc5640d96c925090cfbeb6d3720baf2a75151705e623b89f1c5e922388a50b58d13272463c42b639f55a80f2dfeb6226e0ca8e7ccded0fd3046461157a6daba480b512501c00ab62e765a9f4cef2588492698cc5606b7962662c98c66e609181d8f41a07b711c3d4a2577a2cb75762bab891ee4645cb302f6a0762540700b34cd3a64f1057d055afbdc05c4ac9030336651c58b797ad26c4152c43fe43fd8bbd42756b2eff21df03a5aaf47f28eac91cad20be47a57d7d0a2fd86dc548f0e613ee604e2070e00d4d161f84866e342138c913f22840b68c9068f30b38a2067013a31e97bd8a8e47980d043ba83f13bf22841983266e2371c32d56b9d9cb8d47d8d3e3633322e09ac54f8123175150d422a9c56506d8c851484029a0655d0273b618353f0d8af5c721716374c1092ee96996a5aca64906eed148039daea3b62d2a51dc4c98f98a04e99826687323a15d3a121cf947826b4008be1d3df61f42fc824798b2f2b1148a3060550e50282d41f3e448a73f4e7484b41c6f0b21bebff64aeb1cd41d36634def4fe46ac8c60fd619af855edc5bf47d54c613e1963d26c78551d4b46933e917a4a89bb9685dd2bdbe280782acef1165f8671956817ac27d1d2a65b430702a1a24153c9951e9cce62c56c7a46ab137061ea9017c0a74974e6a715d2c4bad9cbd81b378688358440a3f225d8839ff0e391e73343b3b61b68dd98be55346d268009e6d9d1d33a4cc8768c7762e946ce1c7fa0ad9123178cefad6a29b6342d4fbf2761d2c423cb328c2136af49fd0de1abbea045d42875cb2a58334263fbee715ea354fc23d27af2da050b263fe094a3ce20c4f72d427d803d550e92e441182f185b9a8c484ee6d873f223a73f1f238b58fb41f3e81be29b93d386df381482573b5c9271aded881a1211bcc0ff964fa0e67bd86993a558ad6843394d247872ac7fa3626165a432c42c2f8c9cbdddd0d3f53fd3e5bf75c143b06c9937b2595eaeb4e35d529a95f9f7992bf4492ec7b26c7dae351075abf6bbb5f31b25feb2dbc52d0625e106bc18808726a5f0e5856963d928acbc8860ba27052ae5a4161ad657076b4e28fa1b144de4aabd7e3ce5348cd1cec566ed8c43012353817bf45f3bc6ad6e2fa8350e4f6047f13471575b76c490e577636a3891510e402188817febe2f4b96a13b45b0a7cc5e2df4398541b3e69b08f6dacc828ded47ffdb96aa3ec419d1b3d8a99b8bcd003b6931584f509894d35803da773eb3dc947b0cf865f2bdecd2131aedb7d1f27e57f2782736a917c343b954f3d4d4eed7dcb93a97e81eeab55228251534020f625a303d280b1a6fd231627a237cc6bef65244f4ffd8eaeb0c3925aed26eb3194083006eb446396969dd231489a16595f3101e952243e19b230404d3f297a37505dcc69a4d9920097f3db1aa484cb20e456d30d6ba9450f125c07014054872e330be7861a86d09affe2ee91e4b280d0fed89396913f53986b3fc8bf09cb1bf8ddf94816d03b0652d43fef7691d1bdb34517a90bac24b45c35c8b5e3c294984ea7a54daf6d57a50733aab3c218b1f9b1d4fd9e02ba1acbc3d9b8c925964474e22ab793e803671e08e5126c898741665f9f02f28adb109283bcfd43c12545c3e6fb17ef690123048f2bb9cc2a3f7a2de10a632075ef6227f10531085427aecba70eb7a8f185d49734a5b06034c4d349f5c8803d9663004bf988d5b8c854d7803dd36f13df4554d25953e82747141c58d20ce2b006b9e4835300e5136e0b213be18150f6fb86109b9359292fb726db1ea36bb3093aa7df1325140927d8996ce88e8484373fd662ac9532843a4cef74a791122270e8c27c77e4a8ef2b2ec4e368ae82d0821e4fec97b91d802cf289485d95bb3d43f247846945079a176a055b59004ff6f5ca9ee4d1c109868a4c34c0d8d9907b4a919444a8413c8d0a727cf4aa4916310672fea7cbc8d7ad151e89787f2f6a0b0f7edbc50bea47123ccdd70064ae22cc8cc2f2f5e22acce9759dd98050106ecb04cd71c412f29ed0843538a564ac9de3e361b39009e11881f9282a4970d9438c68886eba387343702fd047970792d0308090d2098a0a374b37eaa2d5c7f282952cbdf80790492a3540611746ed60b4589dd098a3078cca82d765120b400604bb95dc94c045af06dda54a72e41818a308bfb8c93b154498392ae14a3cf05b624f489b9aa3fecad6aad108b309830e05a6211586b2065658aeb489fa36503e5128fbbdc65f8cc97ac22e811c5afc0e8460164d0ea49062674d6678b9905890adacfeb9e889b5b96a744a2c095470794d8ff038f279c18490647d0a4c0355686687bfd60b056c9559a1213a684935531568540dce79eb880fe6d03d3a8e214d953eee59adce8ee4c61081afc9794c04c19538ebbbe3a774e083c7c18c701a0f0d87d7ba44eaaf47ffceb91ebbc9ea95010141e141be3781ef9569589e9382d644aadf9927ce22bccc943b42c91c29e3d3386175ca380aa0c1105c6ba5c1187e0a38597ce7c4ed141d8a0b5583494ea4a97ca42de294074a09b6ce2154a646c82e3e7bda4b8838728c1e6a8d1601acbad3aa4ced237bb1fb2e4e7f178d791391efe9bf4264dcb1b2057a5f0e267c7239f628f99063054582598c419a1a9d2df579640e9f1981df2a773e60a734aa556c43652929acc6800ede38bbe3528752c30936e49222e7fe3a54ec4f1be86148235c421af026ad04aec741c6c21bd9520a8c4b9d8d4dbf817e770ac369b6a0dd70df996fb1155c2fc4b4318690719ca856f2315ba3d211938c9a86c513e8cd33fd56982fd128d851c9e9c127be71b53e50701ede68f91d67ecc5d7e2fc85036169fc579be7c0eb4d8eb1bc042e0b88f4ad94b89060e73ad3cd4d0274394ad975cca3bd1e700afb19b651228482158b35983f12f099b392e45c7d6e12580431cba637c41155ab374eeaf8625eabde5b4ef7195a0f7a0c1734ec257414a5d8fe71146bfaefa0ae8b027d26fdb5c04edec878e0cf7ef9be2e3af3b10835847006a543233d25a2c422b1f8455d2709c03c0b86dff24189a6d9fa83cb61ca67b4ef0fd49bcc5656cf35d2edbb30a43134e3b7e27b41144cbc6fbd6a03a6e0052921e50f8503aeb36427e559fef6c3e3999d2e4024c458111029c84ada3e1c17a28f8f8d25b787dde19991c576cfb31056cf81f8482a6cde24c4d992074211c26fdd285538b71922a2caab818b65ce1138b186f079afd04cad2ad7eadb3d40f51bda654fe0968d3d25ad71c01685d88dd90fb53bf1e98c0c5b9eb7552927eb20128babcd9f287a90a89a1a1a4f4daaf2e12cc4a12d61432c72263f68747ec04f80935699194970492770439035133b8c7851e863ea12dad0b1cbc07b3ec884064d89ef479f529bd79eec39a2a4f4b3e70370bae4ac6db27b3638c98ef1b04d240f3e36d9673e8538a597571654344ec779b7b9bf39ab440026303ade65b2828d577d1a58fbcb5186d09d21bd494a0740ec627692d8f0ad5870e061b5d4e5ebdfecb3dc0cda7c5902feb390dfe9c1b11c2cf52d7c03e8e05b2ec1927d3fb19911289380a68076561770b62cf2d3c5f8e4d9a827a85ff97f95618779abb29cdc590a48bff36031371c98afeb78749670c4ce55f583976adfdd6ffd681a42898ce74c8b1fc327041b32b243fbe419a6b11cc0e296991870411bd5cdbbd5331bf3ac088ef0fd7a3128295895d9894181fd965edf54bfdb2de3c81d9f7d1b963c2429af40dc6e8b5072730e04738722650534430040e25828b0b11a54e62cd05710d053d7394c631dcbc21ef1e605744821ef04c6d1d0672ce8bb9f95d50167bb7b6c5d1b10d62539b4b750885ee6893f11596e2553999a56e084fa2024d757800ac340e63dab7e3d3ef02ad0828716f3d548d4507854f33a8165d887d3f70a9668512daf4249e6c5599ae3b889287db8d8d505890f240dd48c519bafb7992d29d4b64526c5be3930f875d6d50ca0f123a9864d78d918aedb5c8dd424f1a8ecd5b002875192e3e96eca596cf3be60bd46ae50338bf267b70dbd0ec1098306278a4da9c24fa6f4115b485bccb784e156e2c6f596de2ac485a2ec0d2d1bf13138ee34b2d60942eba00dbd701b1dc361a537c767253f87d298b68ba6fe47ecdeba7a8767664198ecdb6eda5c164208df89620bbf8657be2e7336d2cdec5c47347b11f066ab5397ec0920577c2c9e0b334f5b5b82f13835f6611e3b629571021a8741cbf2b31ea0dff125735a29ae751305188f08795ef76e9d4b717c36d1817151938f05f1b19f95302155a7a13fc333b48e467fc9eab373c07af7627b990490c9c7d669c535df3a3de9906838c688709a0966b6de7689d4d82011226abb906980e61a15fb83bad202b4603d31c3209b4034dd021783910ef0fc99b13c90f0724a384b649a2d93c1dc5d647f2e9d722421687c590d4abf86d281bf64c6cb583e4ca55d44c49e3a089f9ae8c87de053ac06640d792c0d9e017af5894b3ed56f2d66643e6b3e908dd43721efa71a7e5c6d707c80028a9ddcedc29264f289dcd7d7eeace067b47c41ce104c22a2afffae19a79e0877990d7aad7663315b0cfa1fc479a5c47d37df8af2944f91440d963f5ae75d3ba715a54fe665d03530692124a4d86296cac6050915301eac8b42b67c64e0145e1dcd9dee572b3c8f9399c30c9544ea844c8b6b123e03825a1fa6e7e5d2bf36f8247abc291ee0c01653c75bb3891a67e25250126b3848b46a5e9c78529ad05a16ff43fe57c7422fc070cba999e7c15884ec6a90a47c11b80ae706f218a9f7889c96112296a123da2d39fd3236b41827cf2dbb9278801adffc4d4a29d28fc9d39eee8dcc5c2b45e96504a66d1d5755cbfe2d808aee9a483aaa4cab84fb49aee8cebc5310866841097a64ae37a3b2514582d405d1c11f6ca6c105eea67fe54ff430586fe485f0d5a8bf86687935184a84b7c0c202bb38552c8151ebaaa05591e49ca99b35fc0831f18678f948c7a2c6d2c41787eac8405ad22a27d85120cbe8687d1debd8ae28502138e9fc382def6e5d5e1548b15d440bd588234d2725428fed81f00a2475f1023cb0511e9654c64c2c5c7b5635eaa3a5541b597c31b75003c6bf94b3d85eae43be2f853aa2a1019ccf827b5d70cfad252a5ae253fe36ad5ef4dd6bca0d3fa70ed332f022655a894600c85d6ba0eb2db90432a64d994c343d67833535e28e0d06082096c81efffca7d5e4dc47d9ee025adc51d372c2f6bd5d3cf6c596026acc200048d0237d0401182eac4b2b90b589f7b870b63b9c94b7981c568af0f2546c1aeed0947082e1047e21fe6be48193ad246b791596e6157a649cc17b92a0b675eb45714959ca3c93f001fb76c91d6aacbadca66ef7c36fd568223ef637b4e654df990b8a33cb00dc8a635b158a6d2f1180e3d2da03842a52253625f88b12e5f4a9c1efda93742f6f5257c87f1f05b7f641abcf3f6346edbe9e36c1d30b8e1aff508fd6bb216635a7e9d729fe9ce9a7ba5e4af93cceec4bca6386ef54c05a4f11802648e49e25d4ba3353b4886f15638b31e80f3fc9ba38062084970ec011ca4cddfbdd6b398298892a0715fe0bbcecf6d4b7150f275af250b2d49684a425b26d852d1908b8644b0654aa4346a44965e6b2b245ca42df8e8814ddb282fd20209b040a941d4cd3fcdd95982ed983c401830dfd3576ece35a813599d2ce13982cda034b81beee67a865d044216c88517de1489a311b67948cce72c24b714e35d6ddc762e7542073efefcfe2c9dc93116c2da51f7fd9a2297303d0e95cabef20787342c56c03592221ea73a021de0e1164ed3e7d9d73f1a29ce9eca5ab128ed8ed8a64994ed117c5f01fa082039b1f1ea289c49f3e72dba8efdff5e4f6333691e10df9c78fc918a1f4259184e7bbf4a7f93f9204e26c923a4a6230779a53b0dee37de11f528325ac2a991ac100b8e802ecdc25bddb0fa76c8d554147f4b91f67e18007265ff50847cd33c0bdff1622aff86075a1ed47f3fdcb75ad031c6af985fc231b3569f98304f8b342585354922b0839e50672ce749061382d524111f92ba2775644c0260b39c2c68e068b2505b0484c6c845406a0d6608ce5a5937f31ff76adaf0b8c2145a3f1371d4c92fb07baf9bd3fbe4861f857752cf8bed4e5f78534444ebf4b668448b55964a8079bc83f17869f3e1d6cc2991bac230c8260fa65166f785850145132df3333c81e4c55528c9006880da6d833da1eecfd4989d689eac816d23192abf770b9dcdb9381915866e0f620ab010e1862a2d8546579d42891a9b74096de60c8b0b21696196ac3666bef795b030b4d677a484c2b4f57ed61b6dc1777239975dd3a23d1fb5fe674da19fd66a3c97c72c784122de992c7608babb19727b9ae54cc7a2360e82ea0928b7a97f43bb855103c4473423d607da4960acaacf99d17598760468cef7550401811b3dc05a0d6f0a941ed9a4945b7d7f479fd12e79979624f27685d100aab85dc800a6c94592e1cd291025ece1cde172b2a4f8ac75a659929dd15c4cd91730cf906ff76b699ac87deadb767ed6a7648a342c188bc9b9ad1df68126fc3f9af92a77ec5ca206eea4cb40dd989696ead4c00aba3910f0decb5921f5c0453f808a500bdd5dec1dd325e8433f0ae052f465058a2641afed256ab48e4d6e69878f2371a766bc8f5e55b1aa93490f09d996204bbdebb472a3415ca4bdc881c5b03654539c617a295ce1176ae280a6603f0d812763e46bc0d25dbae4e97eb3dd325889d9d1102a1404cc3e0d47ed86d1a9a48ca7ded7e43be2f5c72c63c4478e4878f818b6d25b44bda3f121174802357765cbdf34a17710eee400fa84d9bd0f24948ee30061524d1a25f936bddd476c3fbed4730761c0d48356db2449bccdb1e5ae546f64a05464a3a9c6981626014f13841b56b992e59f72791fd3bcf9fcf37511d0b57ef317f32250d243687adecde7e1e73a2ada423e1ec154fde1497eadb8a5ca4a9cdee14f07130088a8586551e3fcf8637265f5d80aec992f1bb44ae4f24c408ece74bbf0468ca72675d532e7973553da6d484bda759181ac784dcab51e3428ebb91034efc74d1a0cbe49d9ea47c655782fb8fde5809e50152c958ccd864c160a2bea96dac1d28c1a024b71a17b2ab6f9d1fb4d0494d237148ff06ed0073ffd1a836bf2fe4d978f4411c261a585182c4ac0966dc2051766fdcbe55820eaf5ee11433e966e69960c011105e411214cd4b9e18d5dfefd7634fb180bd1e91fbb067c106d6979cd45843d437adc0c6822b7d72d408169834a4b38b938537d1cfe6c9b073c005918dc834d54a1ef53982de22b13424d056660a2c423a00070f96a603308c45f16cd77ec9d631a80fdcf6835b4670852eaa0c3ff468b67c1ddffea7bb21d6e568e7f24166bbf63d2d9511dfdda8c8c771fc2bdb9c78e3bd84947a9abe82a754a7d954ead2e7f0dbd8d41db7a41c660b1d53c09a1a3314bef2f7df8fae61b9399012347f19deb394fa3432063fc3c3c0fa6797fc30d8429e21cd3dfe7e0797c183cc6af7d9a4fff17435e23f9d2e16454d6ce77ab42a6786320edaa9787b3f2f439499cabbc5f2bf5473786a205c5b2066991554db61e70db7d2cb34f9f71ca176cd252365e667153b6558b50c6c62dd00870d84d2068d0a1cb8ccdee2e7ca5e34fc08e306ae15b8506739df7b41b7060d6f89aeb977fd0884d3897f54bf82d8df94c29cbba76ebe52475936ecbff228c7717f3741f1cc5d14fce351d9c60a8ec511c317fb6c1f0078802efe5e4538c626e474adfd5f6ea19535c8057de7c484c9c4a658369ac17bcb769804b83bd3a6ebe37399c26f7ee507b003bcd791d5558cb3ae9560cb30dc27d47755af3dd411dd6137aee3fb48517c51377ef1d383e2a8c102ff2f2d30b0af90942b63f108b01f6ecf16eb4f9be60cd9a920c7d8d75bafd68fa1cf061fda86d82e67f1c8451d495a8690b4ec8bd06855a65e918e1aa19c2347d835f40007b60c054d854dfa4a15ac8421a9e5a62c66c80d67aaaf79dac6c1d13bea33fce6c8eca16c06dbfc8a8533494d4a1ab8eb87631954c97ea36df711796b20406cadf4bacb696bbc0d0d36146d0797cc4f1ef293efc710e1af433f969db3d53363dc018f6779bc76757c0ce3d2f573930c318b09a124818b1ce2e9624f60a9288f22edab1aa3d2e21bd6874e18d83647d3a69374857cecd501e4f882bceac8962c8cffbdcf64aa48a7a4bfefe68cd31afd44f39b5db75f4e099ed027ee55f89bfab403bb7b43250c757e86cf7e43ba7707aae8dab6baa77df18f4e5c176851c5ae9dbb0844aa58c6c25bdf42167b378bb394a3d5da963f2ed29e5cbcb6a35f47b68d1bb30cacd57332618d70c5d6419af9c4d7291895a4d463919924ebe1b8f6e9d5f46be37e9e95928d7642fa9c5eaad1e0d53fa077d923a8a6456ea8bd40c7b06699fc697cdeb26e885c5a44839ec79cfc87a062844cdd329dfe2f7e937295f258bade165a3e4b3107ca6b0ca9dc6b2f8a4d4556314547b29bea2c32e9c5d9952a1b91729fd08b491226ef022acaf8adb42c62b3a796104e8ab77b1cdea229f57ea39637999da1f86673893181b73bf17262f76bb00471ffb48772a892c35797c3e66ba688d5491ddde8f6d645ea42b201775f3f351e5114c7b56d3b861a0792017f3b1778858894f32f485d2c510928a055f9732e9e9d26edf0d79db5ad6734350c4454127fb175058c5166b0dfc62f0d1e99db61f8ae524ca91037fda286db2dc56fbfd84fa83a244c2eaa71ce7cbee230100ab7a4e5e680000f3e49d5245d28c412418a43c9cb2ef21368f87e061ad15a75f6c2e3fbc99de9757d3488192ac07304694cda180fd4eb52314a0251887b27cb8a4751a23ca7ef9f0dc6e9c6c4aa1fe3cc276ae715a8202380281c5630e87df0255d8d8eaa84ece9779356e1fe5262985b4363409392bfde9049bc13b258939aa5e7b28c8b9bbf45b0795c085ed0fa477039070f0a6b5bd226489f8d28d63c1a933170ca866332a3344a28eaa07211f8c60b0f6399481eb41cff736a92cd05e9ba9bd56827959708bb2ff7db53225b11d669098022e8968d54b97891a29e159a9437e49266232327cf17ce5b1a02280d2a3f7e09c72c59d61dfd3e932c49d38ba41d921a62e50b38dae9334e8ef999e41174495144b18a67ade11dad3b4835a0d21c4f94fb66b67b1051313d1dbaa9896264fdced429544251eaa061fdc6f5e6bb843edfb0af3fe0cab76e5a2669da5922f6bb725df28214f89f0b04f4f5d3da606cf8292268fbe4a574e5a36dc80d7d7713ac3e50726a4c7abdcb08756692cb76e8cc79131415d18e71c90e9edf1d89915d7328d3bdd93ed474a9d0bef9cf5157ec2dc1ea2c430c9f1525ffe54d411e79ae085275fc659feb5412a9fe1fec8961d6ca4b1533408f2b558dfc1ff7da800599a99abcf04ae09c0342370c3d7d64ce110b85b330d563d0460dc3b064092151f36f0f9d2e2ce9d99a38450d9c971f3ca41de38c438359f0152e5c3a9486713f067f1b527bdd542351af267baf61a43e2d9ba3acfa03cfbc2f3cba6a6b916be4e5c431805187f71847a0577eca776e2cb900c3e39444ce07692ade5be70481527711ee2785ee6cbb9e4ea3e45406d551ebc66b1b0ac958c847c2c9cf6b018e1337b7a020a250286d04d2f1fd9aee9509565a129df521f841a3605069801ad9632a60af1fde4ca69684b998dcaca144056e62f67f3712e85b5bd6b09b4b8c388861618503e815c28e55bd49af0b7e95e6aa057194dd947a0c6c1506f895d4bac67876d0d2e95b670cf20ae144400f8e34ef55eccd3ec50ef024bd7c6ae8b8627b59750ea146f40a63a75389c644bdc8c89b649c6bdfe901fb85d721837225a0f0165edc601c6f982154a35a80e1c4563e093b09ddcf26849a1005946a83190578f3a4a4bb15b46adfad80ddb5781cc8676e165c81c1f8053cc48c5b406d6036327dfec66416fe38503dee48511587c8fd98fc3eb19f3d00dd44620332a46781c8f007221ab10c9365b63f7bb46378001c8c1caca43815b4b989504389b1f8d88b7d31b5f287989d52311577158df54442babc96d10aaf5bc7f0dd1ffb1ea62a6f39d3965b396f971895ddce4325a01e2919d91a1e2c7abf546d865a5d957e447810947d6d68d24fd98def9a37cdeebd4f818892f86209b895c340aa6823dff7f44c011575f90bd434276e2399697dd1de53182c9520a4bf6b884842b13e4c39e277441b5c0c4c378d0cbcd58b1ef4fdfc7af601c75fcf939972c2af6e1b4ca68f350026ebbcdbd4d2c7a965f340b6f4781ee48cc7c6add22edf388315b60cb5e5721030140a2dba2a703d540e5669689f42d66cd697e5016c1a6fc372b3947286d296c263cab6f9f0bca7b6db3782c9d94777ea588f10e0744d74a56903425debcb475eddd207c835edf3834ab884a5e88e2b17ed80714be309aa66bab9c54f0a7850636405825707f7b1c3c70f958c5fe9a4d626ac38028e9791f4abf1854d6adf149e3eb547e7fac5dc849bf9ed81f35fbc8518f1b07d4ea00d72fbb91afce4920de3f659acdf54ec3407af10c1ea20f5c02a333a4af7d587c719284f703ec96c1059b46c845936c2505044a7fbd15bce1b00e6146cfd310ff2dffe1f8e721bdf27a6fa77bc4c9ead36f220e31e2652e44f1bf0c017705d3e9d6caad8d657856183ee639abb83102dcde3d63d24e6eebcac92495366f618152125336211ef0ac4c5a651abdeb34a9531ecc05d586946f7d0504e3e581a38030c9db225e82269a3024be9dd74239e96bb477bfd1d0fee752132dee2993e7682cab3967ebc86a0e08a0496bcf092ec0337969623d60c08279f1e37501a103fa5840dc1f5566c7bd5ddd0f51d0581cbdaa47abefd0a80865cfc277865fb1048908da7ff3a5489c562b562d8055ba74ea7251971854b54e4e55b006c69052fc28d53141ac358b52a07b98a1a84573db8a2808d1e8a487b5e53c7fa74e058603accc092b24d5b40d68a4a3806bf16f1e7bb3836e2d0eddfd23f378cb6deb0875760be48f9d9c15b816e840caea8e34a2ee72f0a0da877d0550afe0998ec0a44907e38de79ff34dc3110cb34410284035613b6b6152a47fc9eea28cb7aa3c8254c84128247241a27fa260d4a390e0ee3bf14ec0800007241729f8b01a38790a2844f8cc4cc5967c6e4973ab14596ca6eba1cf759b528a35a535446f01ac984ba3616df9718645a681cccc6858208fd69d3d4584b1b0b36deab9764ab004555754238b46822eaedb16181ced1e398491effad0b875de1eb7cecd21e5cb0ea7d3ca410e6684eff0e8ddb9bc3cfcecce2e0c6edf0edb93ab23df7bcf160dbd7d9c89a6882f5448362a728f318427c5c36d15c06e27934c876adf37f818fe063fd3dfe8790e510414944406dccf981a16359273d7767465b34467ae1f34b151bdb9792d88400d2ba8df2ccefb4dbba8a7a9290c2c1736251240934ac7ff9ab3a6b0be143ca667da83366905f6a0a9dad809b13c280de03ad45e8c9bce196c82a3fadf27dc7c2a0eac4f96b33175195e595004f1ec7a793fd5d1791a98f66e6e6c13c5842c2c4c04ae9bc676c43c893a58982a54014eb7c6d0e8cad2bdd7d59d1e4fcd9972b156b59097a2308a8ba39f03e6e1b4722a9166d5ef4b53fbf3edf1b854c55a0f07a60fcfaf21ae5eeff2cfb672304855ea4f68f5af9a0db206afcccedd8162f79a41ba8b6de082638c1162d1a23923f4cc5330c3d34bf0bb048622b5a4ec089f5161508e1077f14921c47aef610aa24e7347eeeb1155876a40e0dde97efaa98208bf9bc3c40ffee5f1e5ae9217f052999a255bcd61547fe3ce422c2977be73edaf0251529e885ccb0b08b5e72491e843350abbcd8d49b82f3374cb4e1d176d51febd7a5fa62bd6d0326cee4a33df3c823961c7835b4b048b22b0b767018addd461133b110e7c96bbc767cbfb87a23397031cf733f96e83729203acf438eaaf51e8114c890e0188fd0696b542e8b5a9b4edc47e5acf1533afa45b537067737c803dd1744a38a195c77a1c4d6479954b1d1531c1850fd9e823db1e02121f7cbddeb558bc241733019b72433584ccbbf7418e981d1321e22ad24ba9384f2e899c6979ab418619428e1dbb8d232c373d1090559fd7490867a273d4c43a665909ed67b73b5270fae3719b122e3583cb4e83e81ef8c64b2aae30733b1d796984d3ae487809b2ec98a3909973517744642ed40d9fb99d61db5b4bf7296463463bece863bb78cc6db35550b1c6ff7f96ba49bd038eb4db649ce9421f8b325e30105e231b2aa9940d200e2e13b8bee9094bc5d21bb5a7bd5579d798ae5644bfc5347e80e292c4df9824419a24eaf59c05ffe9e2600fdd615c9930a0328d63f8de30cbf18e54e1723f39b4b8abbc10e77e6391c28db149f802be620457866fa62d6dc52352c12b549b6555bf702a6bb84f7e896f1964fec8431f88e4f47e1ca96f60cb14913e26c82599c5dd1ab091e2bb4659fc050f2b413a543b7804d146d3bd8894cbf7c8e183dcd3709db040124c3d081d681612d6bea92e09476de166de8621739105a8f3a9331975285cc0c46d50cc555fc84bcc610659ab8e403252e39376eaac55c470caf0eee2aebb06282ed0c6517620283fa89496d65e6506bef2ae5784acbcfa6842b2705078aa923065717eaec94fc79ec194f6f3bcd91d50a62ae869e63bce51a6f0f4c43e16469ed716c19265919b76c80165f10a5e9f285601a6b4af0fe6c9d0e7c9bffce42c49602810680f96fa79cc09dfcb083f04089c078afe6bde6d54bf12e021ab30303996d83c5d6b122c03a611f4aa4299358bc2540f770eb35b3fa03baa281b3baa7342fab1c848244222a5ceae76cb0a82702d91529fd5182606a196b4c340186b5683d4bb77b9282688231355380ae6107680f370626603f4870a496b995b5b3aff2296d7af8ac3c5e904c3b64776cf4a4d0674304a53aa4a790f437d069f2a4557e2a7f3d8c06a079aca869db478384957bfc37601b408005858e22d3a87ffb54ab69e472eee2ffe3555e265d99863e22d4604bfd7277d4ccd5f8cab04fc866fd73684b069d3c5b3e407c9b995ec06c86810ae0709fcf1aa28e0e41fc4b09fdbf8e7034645357fbe5dedb742f490c8fc2cfc1a3afb5410002a58498f7e684ad9f50b408317c6cad3a4c0c44a887a022788479b32ae652f3ba3dca8de4a3dc85a799ae5af1077740feff34145ab1020b9a927a4cde8ae8135c11ae38a8c4bf3382302ebbb425e6483c42ed2854500a30c4d31a489b88f7e75d7341315446505ee43c45f0d54206015a703997e50d5d3248df5c36ba268df3f62b7c1a6ebfd744f588576c1d6075385e1e838ab8e6cbc000480643a50569dff75efc605a2b1e409311060070faa52c907c0b8c4275a12d2f6de7bef2da54c49ca490d430d210d9d0afde8fc6f560cc4fb417bd86e16bb084a8cc98641bb4093db10a73f7de03829b90d9bf429d875d797f851e287d2afd13b57140ba5e38896f75df65c11b1c3362122969f7ab5a393db33aed2c77ee83a2247bc5f2236af1df199cd635b7d1d7189c478e906310d8308e38238a39f0ae9523f2604fb8ad597cee6569c36519bcdc6072c570f78a4511fe44ab13b24dfe6c61a0f41493e267bf0a14bf1141059b9db708ac0e17f3870f8592270686fe0706bbdfcc40d81c3ec00a99a544ed1b0fcd4a9b21f3f7506c0615600160158991038ccac0d1cdaaf060ebf01fce499949f3a208de5270f3ce1107c130effa381c3cfcae0d00a2095050087990d0287368695fb675cf91361e603400c793ecc18f27c1964c8f381f8a10c797ec90c793e78863cdf07a03cbf0734e4f931d290e7bfa821cfe7a1499e8fd790e75f36e4f9df863c5ffbf193c793d3a7ed8381c3cf45fbe1d17ebe164bd209371c28522faef48930f35bac90e7b35c21cf7781853cbf85923cffcb429ecf420b79feca16f27c15579e4fe2429e9fd2853c1fc50b79fec87e21cf1781210c0810e5ed6705e45966edf7714060ee547e12ad9cc74fa1efb356b4526599b5dff7cf93fb3b203f85542a1e3f792e2ff583e0fff785421dd0f7599b65ee793cee793cee793cb97b2876327d4e8abcbd8835452c114bc412b162368edaec13ad42413908cafda1963f176a71a116176a71a116176a7121532279daa840f03fa40aa9240fa0d8429edf71710e99bedf9c20cf0ee838420e28c853035b1b5ca0dd0cc419747bcff3d690290c3c97e7f25c9e2b779c42a637438069408c58a21f379d4d67d3d1c93d9fd33610e4f9dcdc5ea3731b7937aa0f5e0eec43d7283f1991e3fb399b2b6be4115aac9117f46ec8e78cb8727b22c7ed58aa5ff26c7ec08c68894328f2ac0f963a69453df38a580d02e111216235286a4d408936917ecef9337eaaa8d9f2524f4ebba296a8a70656fb50c4c22162350a0ebfce4238fc46387c8a43700c38c8b402115479ce6fa6a04084995fa082742110c1f9b2befcb47987b990e70d911fe110c43a15c2d8003a1ce2b089c99b9667076caed4309f3945d4d3a60ca505e6d16266324a1e08dab4c9df1b27f7984074385676e4dd70207ec0dee6623591d61ee80f40d8d810f9a4f88008a9422ad1cba7dc5c5bab4bc3d6ea80fc72323618cfe6ce3b23485fde2c76d14690fe36852675407d2d0000cfe6e699cd8889f16e48df9efe6cd5d6416264104178372acabd561c998ada6ace3cd97ccda93815555136b73ae9d22b43e1b4a96e307c3e0c521784673bd5a5ce3a6573434904c0857cba3e8958d8cff9857c4249fcc3502b774bc4f2537d7549c4a2d145cf5dc6bbe15fafacaf8aa3dd9a5351152583f00fb54249423e9eadbccfff6fe60078190da600fcba0c119baf3674da5c194bf46978365bd7414c9d3a6d5a76c23ed6c77ef06ecccac9e83aaedbb40ecb6ad775b4eb66d7d58fee8e3f1c2d61308511cc6ad8a4116bb08b84d4b40ecc89d139bd2bac133128d77037d9b13a314a2946e79c368dc29e6e46bc312494d65a29a5b5d64abb1a505a6bad947e9c3e645b40d7703ea76059b1c67c99b598782f9f529eeda588b658f14f65c8912825520656e4f833499f7e7815d1860c2267f4b3e4a03b628392a629106dd2a7ad488772c7f1a683032bffc71139a3df5a1983421a248fa87c6be556e11e32871b1279c48e3229bdccbb4124bb81f50fb39706fb23603f84a1c0395d8dfd9c5983137a13643535d24362d6586c0212886a42df352114a22b6310dc4bef8617fa9bd08d31082e5691b56fc2126c6213647747837c262826080cd268505016ab6042dedeb7e766f7dadc585bcf86a413623724b9c6bb5dc3812ffbf8f2cc4ec427397b2cc35146fff6c3759784d9279cccc87c6c87ffc566ae83a5de1137b2267a5136e1eadb4c6a33513de89c1388bc3692be8f2cfbbc32c24c0478a6ff444f1a697c0939d6ec6aadb5d29fe10d89fae44a5b94559feef889bebaaf38e4415dd97d7341d7d197e3d74bc3e17f2aafe93065d9c0ca0f3fdaca9d23fb292975e590474ae09331415d19478e25056e3ecad7ff805c5f8bf492444c3ccd7411e54a9404e293521c40244e9b68cce249aa461f6279e639f39c4fa38dd1cf97b186fd89431ea44ce987f10a200d4a959f648ee7789639ee8d24111dc4194da994524a0cbb12252577bb39dae5489d1e52031b1bcc7e7b2bba3eb3aecbdba5dd6c53e6e5c0139b2c36dacfd7483936a825e1df17d2cc9c7d6666266798921a6c1a58ffeffbbe36d90ea920c65a6b8c31569a651a9be853b43106c54e65251309d4a0fc9981954e058a0d41b246ca56596ecacc6f6cbd6a210d469fe8c3861e362079b12f1667f26071e48f6c152b8758104feec7aec87072bf146d7092c35e59d186263da4880db354bb15b6870f9bb13a44987e6c0e7146119c442bd61024cb0ca74fb1a637ae560ccb324dd3a67c0f87c4d81531c6987d967ac9823498a99a466341a98eb1b12bda94a1da2467ed32546357f060bde7322dcece68483e4df3603dcfd40be56438360f87e7ce734eeeca2e46309460e7e1f05ac66d86e467384698fa12a7593e32c89b14926a933b69d3106cd83fb0dd73462ce7eeeeeece0475711fd0c9920851c682a6b061b3fce47d7f8c55a3de0d6df8e5cf1187582b0ad9d360b758f1626141d28a170f16d4a64c6631662788909988f748d41a0f0381a226fa4d66b1e172f734771c0e7d93f926fbadb47f62412a3f350d62a93f072b1e7410547e8a352b9ddc3badca5058110d0ab12d33879914b9db3471727fab84b4490e0983954159a5ea6460c31655a358e497ad5a6861868d551cc1498e551c814996c9b18a2300213f2107479e908322a2f9a5ce72676d925ac8fd5ac011c5923679cd8e2d8e28943827bbde6953acc22727c78c238a236d8a5554e19563c611859236b1f8cbecb857aaf824cbc99c8b89e111c323a67b818cb1d3c0c56c07966531bf8347cc8efa198677fc0e8a3329eb10533d7351566bad3a727dd1d378b675218b3d4b31aa23d3181d31a91894f54cf182202ef2087904752b98c12bbef27cee4a5a3fcbb217819b54a69ff188af9b547cbdee003469b4d14a1b246a5f12483a912820540b9615a00681ee7785ad1f7e40c8d04372688827a98da4944d249004922f5bbe942f659074e9984808b0af2feb033122310c4b1c2e51bfec3c1c97053a70d14ffeb3895cbd62fa326c2247cff1c6f7e1597edf308b80639cdd3814dd520617f0ee4f1a4e3abcd4d8123afc646369fe7f4b50a09975119c537ef6d7403cc588a5f9307288349e1020cfe7216de038637ebf0e3f8d62a905f1742396e6bfb021df3ca36b0a33c88214f10b44b21641478001728320fbf7e481e9e4e1e20b9545a69f441fb1104f222c819a891772e7e0ba0f4599f3f9249d7d87439164126194d830027138944be01861fcb78f42eaf7903d640e2390ac372a28a8bbaf66147c4c1fd3c7f4317dccae82bbc2fa47b70337fd51597ebf67cfa6e794d2afd7ae4eaf0d123efbb9ee049604967ef70d2764a6df3f234089907f532ff67ee745a23e86e30d657ef99dfdc6183d0504206731f8c210518c524ed9ef5fdf8797eb3ba5913e7602c37203f43740ff8951a67803f27d78193b81357e42f61a44af2c8b4065fa5de3d83d9be68e39663a27add753807c8a7bbe534c15e029408648442f4dc73d710fe95dc848109d10869dec3d89c571ae007b452f2ff77db77f62fdb7e8d948d1bd4f380b8777b0c021e99ff0bc43e5b7c79ea639d15bfb9de7adc4cc6da1ed43db0d89de863e7a1e1436dccb15cffbd07ba187223741c4066ef24af7d67238d43d773df99ef732e4691ffaee12615ff4b17b4edeb0b3cca2efd1a85370283719f66802957d78de80135064eeb3eb84ccdcd374f413dec04dde708c30bf12238c7c6e7b0eef10bd7cef87b5d7b3b6168748d850a272a844ee44d4e250a232cdb694e7b8d1e7b67b48efbdcd092059bba1f7aec433e53ae159f3f094bf43c34fccbc3d97f22ca3e77e7bede96549f91b54e67aa4601befe57bde6c6c4edef08ed077af82431fae5d898a59a27217224580c5af3cf72bdb955ec50af0f0f6a4d0c78761b56d5904587cf45208936eccdb0d6f32f62c4242d8e80430fc64493be92940254bbc63b3e1becbe2577ebb9cb7ddcf905811794fd3f98637dbc75fd9707402187cb2cc3e7aed7523b072e3b67b630bdd7003cf719bd7dd6f37b4b989cc8944f65958ef537ef4d14f2c7e6371697cbbf1bd1f32a7fce8eef0e1394572bfd9702cf645a1e544770bdded4537140a451fdaf79ebb2c22cb62eb5f96d17659503ef45bbd1c29721fb99148f4dea75c1651cac7277dca872e4be8472f7acedeee49de936e17bb8f3d503012dfb3849ec5af7c18c248b0f815d1c7f79e1b5deb5d99577ebbf64777fbefb2f8e821c1c2e2f066058732876ef7d1cb1144963e7878def0139d3b1158f991ab5d87b2f2b5eb448d8f5d89d21f12986c3858120326b22709ba39829603187c723f172fd0a0120df6f46e759236c9250db674492517904ae6c42ac74a42e79c5895383e871c4a548ef4820de54f1352600520f9fa4175ce7b89879f241a5a6e98034d4b1f4d34d8445890c89e4507f7445890d83e66c737398c4de4cfeb0748a6c198067bc81cca9f2614cb9fce0436944a9414d160d334d87fad4c0ea3ff38894ed842d55ffbecf670c38a0ab3fc125256588504e5fe105b85b548eef7f00d3bec03cb4f607987a6fda6fdbd4c449fec03cbd953217d92a821bd2324531a39b305b2dec74f40f167f2f8e98797fa1b8cae1cc6c9c333799c103d79f22467b33e41f30ed2c3203d0c184f5af92e4b79941f8dbea54dde8fbeeb13658d9e43b9f16badb556266688988f824241e984019e3c7992edc77f11b98cbd7e63ae7d25b2636f6fe80f367831fc22a3c11871cad31b1681327a9a46b929783638fad0fd1a1cbd775b1a1c755d1a7d93f2e8575e8e9e8449a4ebf22b37cc60dcd007cdf25d605c17fca2e5b6121a570916ccc44c768179cc64ff7924d660316d7cbfff9cfc44e31b333193777caff26104c25aade832b564426f5dfa5c1159beca0d67b28aca8779cc64f91f2bf787b1cae2f6e4fe1a377a690077e60679c974697c8c2e04eb4f6039bc41e51df139540ee38732a42c1f0a948224d6a028dfa3aff54853166df96900df336fc256a70f9f062b08ddbb9236853c66b2e85b49dae43c2bf766ab4d2ba1a824afe0d860ca1dddb740356eec52189d64f9f45e91e50fe0cedcd335dde8346ef492cc95afacc5164f6e2651490e292be4b00f2ccbd764abc156d260c738e3238731d963acb597e47675f3641b5b2e042be38dd23b14f6c8f207f470cc2cb1ec26009d4412381c23d29f7e7c091dd535d80af00fa74962201245ff7f4854d857fc68537c021551e47e20b2af983946538fce3e3a873f91a80b24e61f7db2d1460f997d7467e9e5885a47af6c03fc0022a7ed786043928f36551558410a6bc8fda47e07820d635046031bc620e9a821c81f177589061bbc406422e54f16e413f9243b098a4f984227f77fdf28528c94524a5b3e213624e5c6c98d23041b76b9bfb38df2346094d20dc3de4b4d698739bc614cfbae18cd663f41a3abb85869adb5d22a6516442faa59a665d86799766566b4afd86fcf7118a6751af7d9731986f947ef6708c7d76ef7d3bbd17947bde7ea531068dd572f87631ed5b49f4030cf66e6ee3ee1d1d03714b9fb08a37de6ddf0a4379f6a1829d71d13ab5957a79661a2cf3e8a3ecb442f73626ae0e28b48ca788779d7deb7f797771fdeb1efde7f46d1a6d07b90a95a8ddebdf777203f954007e2078ff11ea3878fe13352c80f0ff8a21e86cbaae5050f12582c2d2fb58b48450c42adf8931f7e9a39fdcd64d94c3693cd6433d94c3693cd384a4a0fa62a92fbfba7663ce030b31887f6e29fc7301c95fa1c09b14695428491366a4bce70569baa4f83def2537db16a59f94c172d723e3b7358cc9c9f951ffb93790acacb8791dc14a164323e297ab223f12e4df4585a86b239a9dce9f068dfcbeafc7c3eb615c4ca5656c7b513e33cdb4c0c0ff87dd6aa5c34397b11d75e0e51f63eba8e9cbdf4dcdd5d89d1ed520dcadb45d1e5ece4e8e8e8e87c951b4f1572ffc6b1300e09d7f3124f9d4e8c42642a93694ba6a413d77a196d70349a464f3f8b26949e5c5fd4c3b11aeccf5260eb23e974b8168b4e670593b8564a4b02e5d81414cacd2248bb58a2a3ef8f36ceec5b868f30087aa3f91ecdba18c43cbd1bdc7348583d5344bfbd1ca2135821864c297d0ecb50cc44ec99997a31314141413b3ea9978c62dbb6cd7bea6d3c1bcfc6d34d720db2a9542ad5cd1119488011ac4f3d9b979f3095575faafada82bcd4bf05a5b6a054500a6807a8b6a40dee47ce9042acc18d21c2f47348a6cb4f5d8ecb95bb112021f7d397ca4f9bcb4bfd2541a90f3428cbac0de25a0d6eaa9a3373727f0f31ba9edcbfe98c80a2a48d6e08909131f8e047dae87880048808b99f03bad1e9743a9d0f228ca9b36253f9a92b3244dae8743a28e4fe8c6b2521f7cf4d7524f7d74d4587e4fe48ab106b508abb964eee9999981810fcaf4e32fd4dcbb22cd3e8e69a7373cdcd3537978c5c91c8f4b54c7bb933966a0684763edb0d6e19395badd5bd6255b6e4f722ee73ced978ee7438b0f1e5cb22f88b25b255db38d67f2b033f8aaeac99359c77a2eb738a6ed738f56c324a6bcbe89486620d365d3a4f9f7c85056953d762b55aad56abd5a76e95efe8344fabe692100b43b529c3e993a77efae4ab541473b564d5af5507856ecc58ca4fce64e527673549ade68aae7e9c459d3559186bbebb8779d9f4b0d07cf77022ccfce6c9329e8c27e399ef987bdf2a0c53612a4c95cd772148ba4b13c1d9dfd73499664af476a563efd9e61bd5647b2d5203175fc2f8ca1d72a971dca4cf71da7dc1646cd3d381c34aa9d76dd33f6bd8e428e52ab7711c37b74aa77703cb74ce4863dd827f5f0986e430660508c8462f8aea022528f8366598c6c588a0e729390dc3b2494f804d4ca39d10b1860c6762b89acd254c742c104a0f8881dd6b814c3fbb19ebfad4018920e3fe4b22448e2f937df6f3867845fcb4226435046815e7911c33d79cae18a3759b8723a77b110e6516bd976a13a52b5e140d768a0d39399c1d7de7ddf028f5518a97f244411af484b489528da4e26d2928d93ba5d713a2e2d660e9875e9020deca4f994bc523799aa7699a36b33034cbf37efcb4823d2558c94fee77259e928c947289ac3c4ae6d25e6b2f489b5ce5091951eefdb9981c1b9c59f362fdfeea3fdf56af2eba31530f0aa167c56c53ed9ea6332f47f65e8e178597ca6ac53e7218c0ddbfc35dc53aa03967c63c9bd766866d5c5c897105674b3226abcc15533136318debba27c13f8befb2b82b3132992941c1f470c806bb357d567e9a4a96e4fe0cc7b8f24c62c44afa2b97c6529d98e7adbc9537c4d369d05bf9d32f3d80bb3122583f662e096013cb42deb78aabe8adbca42495c3989c71a7155604633c9697fa94655e6536e97b7b37b6af85bad4a426bfe9b1fcd43571c2ea807e60e5879dcb95b91e049972a28debaa16ca199dde8bd42529b8f8126658a53b27fb49fca19b0175a97dee30c932cdc391e18c49d6a44ddc29f45e76b3261950839d31c9981ce1f0dcf98c499b80b226dce438cfbec34c741966f53498b532eba74cc9929e3b314b6264277bd127c84a244ae13edb079cbb7b43116ba5d47fce39a7a6691af6b43eddb25c9fc260d96b743648f1752054f7d850cca0dd22e04893f59148b5564a9ff4b5b453cf7c5ece1b6fa7c38fd71a638cb1569abddf25e22bbe66f07ac91c274152cec0d6249e2e118122109dfd23878a5530dfd460ef847c921d8712077b1318716226fb88598d359d7b3e1293828086638e51fc44e739ddddebacdefe3163b3d249822fd46a27d289cdc7ff50d1e6fa3c897abad4ad504bf49a1cad9e6d9acd11a857c56aa6784bf244b6d52df3429fe3081b233e7e4c27ea3144116d92fe3e5ce7b9949cc8b669d3e84b9bb8d8c5e44e55949cd18f1d61d304e675d3e6d29ac6e91375d28daada57efabcdd7eceb8baf2db5baa82dea5759d4955a4935a5a2d451ada2ba855c677c054085a9322a10f5875aaa60ad750cb9be541e2aaeb77efdaea8da2917d2a77ae3431f42c4875e04c7877ea4885a5f61a7b2213e74d7013ef41f07ca341f4aa0cc0005f8d05904c87e84f8d0733c55e343570de0435fcd7ce83e7ed204f061bb643eec1f1a1f3690f72b9fb4007c0806f1614ccc87335ac5d9901c295287545493b2de09814fa6299da42edd0cbeefff156b68d7bb229d0f5cf48a35302c8bdc104f9d8a738041b422c8fd28c80d84dc2f238cc036380253911d0fc106fbe0257a899cb4c91d773dc82a8e232f87288b5e5e42491b35eb2dc9e623b7561741ec39d1ab4d368224272a3b7255c9a2979f2c45655110ad2fcc02b9bed7e7e8c70dd3646fd856797831c2e576844da78cb8531a71bdc6aa501627a7c1281ab4291b44f4b21105895e3cb046dcae992eb123aecdfd695335b949cda5bb1157d61c71672c6d6f73b7ad66fa813c3f82543614304180b247352e33b2bd09bec6e663ced7d8a05e2129d4178d36422defce5c5f35282485dcbfe2b9834cfa2d82a41a941beed486fbb1277d6df21e7becb12044ec966ab08fb8d2253d22d2c707f36e96fd10dd1941ccfbe9e11048e65e03311c9bcbba83b40a1b7d180b6c7b161b8b4df74d9e9031cb2c5874df47c488ef6c8ef89caf31e2432d6943c49233fa5f2256281b71258b27cb7e646cfbb861cf811bc6a93a8888256db8c2fe5ab48c7386b027ad78f5b916dd375bb8e85ab8bcee82a573e1ced27243e7e7dd902cd5058647040dc1f06ce88b14bc4b87829b83b167a37527d078f06c3413e4ea6d207bf16ce60b0f9d872e1104703d74313c4ca7be4fdb8411ef3f6c8eb872e5a5a62a2f21e0ca1da9d360673fa2883a17a3ebc1bb81755a0cec0527d7ab79239508d20f5d2236362d30d0836763b394b887181d09b20f48e0ee8d08431fbb3422485fbb03880488207dd1cd4e480202ae4a2cd13fe2be88256ac48589258a3d8d1cf46ad18ba308d257d9e1c353e9430f5d8e1b6b2a058157023b7a63f64bc4267a18c6fdf0837743f4ca80cdf08689d86091932e952a16bd32259f87a257287a01d14dfcf53448c4c5bb514b5de81241c0e740c0d3eb0414a8cc918634a98833c9a1459242c0b5a82b7a899c04795774c4b536d71a71adcaedca0eb13a0d1669f048833c0df603415aede025a3bebff0014455d44bf412bd44af4e07a297b4e194c66e08756f2a6cd8a997e8257a833c754adab40c72ff0be4c9063bee1a4c6141fa1293391285b9c4beb7568c6e6e3e198dd107dd7c92b4324ea3dbb6ad7837eac4682f6b386c84891a968875e00031a263c340640df7dddfd4785eb0f20d3956d144499638a74da14b0a8551fd18a78a3414c9ddd80aa3628dc538a3df9ea65d922cc9fd2e41da0423f78b2e6a7bd173a34edaf823ef061eb2cafd38a5ca8d83f8c87adcd448ef868eede36589af5dd448c708b320617ff4166b3cf6658dc52f82b6176998c501b2667b59b361171bc72c2f142a378bd3b1ad0f5dccbb1bc676e4872f8242949ce8a53005f5affbfaa08bba39377555b146f822a866f7300a89954f9ff5ac6fbd8f9277b5c997fc3c9307fab1e14db6de0dac7ee67e2cfd10a5d561168f377a78fe576298131dd86a8ac05e1d7c873468439456fcd4abfcc4e280106caf7d6af53a3b3cb186cc40b80fc108b4e7308b0342c0fdf6b10688f61c4609f29286515e5edaae1116252e805358855138e7e707e815f4a8cf81b1b3c3c36af9b86060140c148c1c1829182a182b183ab1860d5d7c5c7c5c7ebab9a971f971017279b904c51ab2096983146bc4e8eeeeeeeeeeeeeeeeeeeeeeeeeeeeee5a96598b515a3eb1959f22b683b1b0d602ba0605c84bdd84b48182cafd12e5921361a260270e5354b9fb515a7ef256408ed24269a1b4c02fb3dec7f2523fa6134a1d0e0736e6c9b2048f0884f1602b4ca7fa60a8ea8a182a62a86e0ef507879d0fb6c2566d0a3113727f87df37a44d13670856045b71401c13ee47934382628df8fd5dcb4fdaf7777388a7ebe3e3278cf25c90db43416e4f0499f284d88ab6bc150b8cf2138b10a515a2b06c88d2c2a8dc28addc7f7de8f509edf591f2515a2c522ca2609113619ac52bf77f96f8aec26fd57ad10aef6a953b472c577d57ab3ba44f2f576d728c595813a007a38f2fa1ff384ba64b3dd3a6f83233318e7fceb8cc4c4c18974477894d28f29c37941fffca1f39c3a5c7ccbd64d2a06399e33e5ece7b1a6c17b5279161cd3e03cb06968f103dde02e20780b2b7e02687015447889656880669dcaddc68606384d98216b2a0040bb9ff0ab9dfad1061fa7dab810d637cbcef9799118266883679f7f13929f1ccb2bcdc676e76cef293949bca86eee32c7799fd53de596dea719a8e69216272ccd1c3403defd7f06243ca59cedadcc3a1bd7deedaa7696d89eb6766269463637298651e03a29744388cdf711f6fcc988783c334dc777736c8bde80ad1a0e7e199ed0516fbfa610c0364cd939ad157cf01b46684814051637170cfb9e700cf3112a30722d3b05383f229d73289a12922660645e5442726268850482412cd69a70d611fbab57a1887cc1de61870e96f377b8a8372d83d2f44464f6f1269438e70f384590e7f861e06297b6290e47e19216491dccf85c186312d0db664f1b427c9cdcab8270ced3e3deea3e46bf11f51b728f2a4c678d497344eb7a759ce369a0409eb7e917cfcc5bfc02dde625b72bf04914c82b8bbd3a617d3161976c2738b50b2f8e8b5789af69515952c2e7159e138ffece54f965d0f6f728ba7e924da145b5c96973f49b4690c2c5e3261c10247db4158b4b8a1cc2d680b18cfd5aea54d2cdfffdff7f33a0d9a4efcd54d644e62d2950f259319ae601f9d577ed2ef639fc0787af1218b4ff9d8271ad053701899b4c02dbe7b151a159516aff22d38845530e9e90d91c0b2c061f79efdcc21bcc3050e656ef134e4d1e59527e1302ec9bff234fbcb31481b2df08e95a7362b9876295de6b89b1ca7ddb8bb8ba7970952dee1efe239979736e5c5757918b7f318f0e25d9e9bddf7856e375dfce722e51281f1d1238273b91d8cdb35112e7ebadc17dfd3348c4b7a1a67f9efceabd5900729093906c9a443127dbc9736c4fd68f429d445cbb7a43ccbb360317fbe5fcafd9cafa224069421f37df6f372580e3abb0eb31871936786431ea4bc819bbc82390023cf9047f60f79742f6af1fe048cbca280ece717922866f9b01137790587726ce6efdfe286dd37317d6fde6fcefba57cf61fe691f213ef48f90fef50f9797990f2c43c4839a58594555ee37eb66016dc208b9093482452885e17d94fea9ffd24851ea3fe1947df69ad1faa980bddf9d2867e867ed2496987247b9577cf382ee37e34fa9495efbb1bf2c8dd3b06fbf462bebb0b16df7d8b7f7149ff3d8d7f57fbee8a9ec50d799072f6a45fc9b2975e0eee473fc261caccba771acf486fe767a11c9b65950f495965722a3724611e244acada8b6ec823873c12c7fd361fe38a70f9b0891f9902c974882e0996fb30b268647418ec5c3ac9bd640c9b330fd12697d7b402b8f8649a6ec10182999732ac6369186460c32afb9063156b58b16147468e55347192413f1da124776c03f7dba594bb46304d883679cf0821df8bf097d1ee10717bbf42cc7449f680beffe4415d799b810d3f990665a6327a4d0b387a2fd5b08e7b448352e2225e60eb4fda0ee858e4bb931a20eea4a67bee1d873ca82b472cc44ccca14ce6251d49d0f417d1a5d9e07371033656e184278339560187363869e558051b501926c72ae0d0844c93e3298647f50328d8800857709203cbb1411cf2e8384e765432a11de3df64797f84726c1570404276fa9a0fcf1996639033e8e396068970327d9242b42972188c6d28a24da10ccd0e7272ff104966604330f710497223c18632b95f66c62a41e2d827e8c0277b6a6bc5300cc3e847ca9151348dc6c19191a6bd232429df64898760436b1f3462a3279fa6e9145cd6a696b2b36cb9b5e6d98c1f6ba5d8cc5ceb4dbac7582376cb88b581ab02e7d3a433820d2950488164ac21b37cb5a9a5c82425cb88088c0525c23427838e74c4969bc28614884b71aa882d05e2aa909b448198e47edac42af189301d8f9f2ae5e1a12c166d8536e390fa8476015e533197ea6c60438ec56acea75ed1e53cc396f884213bb93f6b117599ecdce5feacebb27ca1502816d4649ee770d1078b6344beccc79710f38997b26e8c2ff1051a5c2246bc44187fbce57889252ed0602bb184ccb54a5c608918734873bc3cb061336122338bb25634a885070f0049da7465543ac821d7201a87dcf48a19fff2618d22775555213e7c6895c07c48973c31f38eef7b78f043caa4f42105fae143da247723a142baa990a6429a0a71778fce022098c6ad8d56e5a36745ef9d3a993e7e8c2fe591bcb2f20ae072e4b878a37b7cf7785d64dddd5e18305e5e1595f73c1515ef55543c9925ee9c06a5f5a7e9ccbb21e990b97221ad9239a7a388b8530d3afdb053b17efc90621f9d3b45848c385479273dca88e53ea608fb70eeb9d087e7d1c7c7561c87431f7305ab601f333bca0d91c09230cacfec78872d817df9a1dca1597eb340da10e11dd8b111f6de2c9033607cbcde735907e3695a4a29251197892fef70f788c8fce839efa8cc255d1ad7a63c4df94b44e6a7ccc75a1fe59aaeedd297f2a64be3512ec96f7dfaf2861ec68db90b797c9de3799e8e95b9fb50ee3ec4aab0449b94a0a227f75fa0bfae7ab02ac8fabf75d2c2e83efbeca9a3bc1dbdf7a49ff5fdbb777f95564f27c9f5fdd298658e598c901c80b163895cbf461116592636e226533c1f9b18f6a1d1cfd13b8e0fe3394c7a0990d9e9e86bc53cbed13bde31fae998d7510c75ef29ef38f448a41494b79c9528d6fab5f52366dfe5d78f28d6becbaf98fd503a6731c7e1904bb9f16f880436e5e3bfb83e64b6385ebc8e65c92173957807cde46f3be867cf49cf66cbb5fb2cbb61bda2eeb3ece9bc18294b529452da18728fbd7d99abf2a1c7eef69c4aad598643fa57542b0ee5bc365e9ff3311cdfe21baafcd7df115f7ec52b2ff1cacf4f8477d0ef28ce5e5c9bfdc69cc9e4d06f375c22879e93a80c0347cbe3cb4fc8dc3d4d7b362ab97baeebbc98a5d77de8d625d5d5a0dff033751d8f2c9bc8d2c78f2c81785d42c4b2c2ea72d125f467f63418ab9d18969d8c5c6f4897e41ab4aad8aa6235c82497fc8c5ce6474fea2873e9922e4557962d7560c31a44597411f3909825c74d96aa06a9b04bfad4d225e92ff543ebc31dcc11d316d5810da990bc43d5a6e8a75883ca584ec652b93fc6e479e161f2ccb8dbffcff8194fd333fe5ffcfc4d006fdb1480df9ed4a6207efbaf4df8b77ff1dc8b974f1df378c92c5ecce7e021c73c4dbb78311a8d46a391f7f2a470268fb23631d1e51df6fde7ec547ee5e793be36c1f8f92d1f63da9a551e6ea4d8c78634d835ca582dbdd6af7d1897b61a4cd2651eb00f9a539eb27a52e88b3a096ad3caf7d32b501c05e5b92bd3a0fc951b73c1976f50aa60190dca992c5ffcbc2fde1bbdf89717db0b3c1bdc5e000108e2921adc1edfafc1ed5bdc9606b767b94cbce418cc6326bb78f937fcbce1ffebf22837cc6e0f3be3099a77b83c0c225c1ec6cfb82e0f008ae2be87f9f66ec0e068e5c3dc99a327b1134d64193633d905ccfd5ec6e5319359240e67429b7be8a1871ebe6b93a4c2d21e5ef42115427b585dbf8df8fb1eeef72837fc42308cc98e7b4cd165f198c92d88f87ab8df03115b3fc46449856d81ded2a295f77db85a6c825d99031b469f8c3d81e51df3310ee36b8ebb8f37f68cb24c889c8532390b5fd60f5f643e04c3989c6599cd5ee65624b527c2746dd2a5ae4d72ff8a0be5ca9cd243100a0aae39a10fa990da84a2803f5e6afa9254d8105b09c9fdd80eb6c274583297b6bcd4d425bad8cab5c9296c488504f1f061965ff0f02f700d726bea474f9b78da545f623c65b5497bf95e387c79935ba74883fd4cc81d669d0e128a1cb9525ed1a6d6c96ca79313638ec7589b00e6308621f7cc4024a072bf0c9930c8985947124800c186e0298b25f91e433082e0c40166999d00328423b458bcffc5659c3f10c34a4ad112b6fc138ec0848b9d77d42f26a273a782541394e0ea5c4a31caed4edfafcc1ead584591bb97378cac974fe3d747cd94660821641adce1321aec7f8991d125bfb6c10b00394914ac9af821511227ba74c19452ca990893c45f49c49b408345746ffea05ffc321afc065b46faf2bfc1c62f4a24d160bf8c2eb54c9b6609f28b869d73252660048b7dd8d9609885beccb141c713983f48c292949880b549389e40834a348d8971ccbc0a0961352883c5e3ea49d261c0bec7045f235b4dc38672e6185b3dfe36623dad5843a59cee999f644dbfc5e1c76275571606254bb6640f28593fb5082d2ff1093c207d524b84e9a7296208c72cf1656ec9ba97a72cb012c708b6cce93d30822bb258e2c73ca5b0318266086715faa799186135ab807d7c09a78fcc116cd8755e3cb52b86cf8bdcadd22ca0d6cb835443748e341893492d861f89651a9cb40533093c71744de00750ee0782239990f9e947501654061b462ba8e049c295f053ac89ae99f7d671c4340d291283523168a5b39325b14ce8dc0e31c99c73821f2326f2f234edfd82675efca5d66273c1b1742dde8b908b0806c9fee8a260aa92654a96dfb1467d8992a51c6529dff280efc37079d1c2e2a2c5c7624585d42e70a5a08cac28e475dca66558a5f14a16eed00f8a70c45988d08f35f3e98d97c983f6eb6e26f40dd60d369ae06b8cf84b963f4f7f9d810d254f6649242cc92371771409ab4df1c37fe121820f921ec96a10094f096c8cd533e2cbb94b606354a263a7e5a70656eaf8f4e1c9cdc39248da67020dc620b9c7cc3d781aec6f9f76b592061d7b67442075440892fbed176385d8f0e5149d48c8535be8e21889725b49159652e59ee7852e8e14d2343abb5c352844360bc51f52a9929c54790be44aaa98c821de8279e5538f881fa858bbe861181511a6a7598da48ff44e833267c74fedf2dab5730a7dbf2b141de5212c53edf253287669e2d8ae8e426205340be40cc7dd6a245d7af9a977dac343749a0552007272bf0177c273e6597b38d8b0a9c8dbc7a662730eb378bf233ecd1ecdf129fd9b2cbd6ef2e872b7fd86fd76eb6ba167ac71727fa31aacc902500463a659681261626e9a650ed64929a713cb91c1c608ca940e0e82641b39f6dcc095b918c3b6d879c2912247649389924e7dea48544a85cad199f4b10db748fce96818c3ee210046967dd2d1e0ff68b07d34d88e44492791ae4ae705da1446273cda14ca2691c93f26c221d160bf0e9a22d86749d50d0b44e023032b8af0205902e96bf9720bad3926dca8aeba73aa14b97386c01345902ac5e8e218896f82af19bdbb7b149d6a1afdae3d14a8868375ede3f59111519fbeec810d3be789589fded0b22c2d85024559796e1bc7711b11da633bb4c71ed3be5e20d944bea4933679f20a1c8172f6e137e82fba3374a76a0a69d0bfbb733587cc230d4a67d1af77eea46877ce18ac7db1820db3ba12b556040ec7488def33776691d5a4ee23ecdc2b76f91c2bec999998181074da245efa0a2950c4f4054481247d35488162961987d7ea93ca9e735e167f89614f31fc929287ce644d2bd8eee2cf6db509c9fd5bce86a35d915b0bca9efcf68e70c172fc46e04d850d01856158275ac24d3a9d08f68ee1af4b24959d40c0d93fe0ba9819e0cba101fe4b92fb5b66d7dd962e5d1c23da9be06bba8f591624c7548e987bcab5dc6f1a5d5919f391b38ff735f9e127ff6bb0bd65ca6f93945f833d4dd3fb8b4f9ec8e77067d780643cbaecce93b19f4732d63333313120f8dff212bfc1861ff66599afe5234ddfce8ec17ed10a3672abad059b9395fc99487e9800edecf449c281a7c76709119edc4c727773bae6cf04fa7a4884439777829cbc5ca91dcd358754162beb6993f6fd592b4bd2a6ecb1d8e4cb94f429f352d7d9a92659abc19d706b41902708210a996559cc34099431c9583d59124cc9926c73509e38acadcaf252a7723877b29f1dd8700ec9716ea9ed0b5108828f96a2d1f31fb588a75ae37fe30903aaf12fc513adf10f229e648dff00628ea71905d90ff6dbcf812023f7ef3089325c5eaf83fd62d622f503a1495cf22353c486dd4c830d63688a8899f95182c809226426823d1275fbc1155d8348f9ee34ba746f16227ad0cc23cf29d890026d3b5b914dc73dc62c472f62faa24db04f82d6601808143534c84b1e119bea0749b28edbe972c72a0cd1fd2095fbed57059f21bad49f5161c36ed3818db1d4653e3b30e272a01e81104580648b103812652487ccfe12ecb75faf6146ee17b0082a77cf8879a2c1768c31fc70c494c173b529446943ee0fa76b2ef152413c21286d407949265eca4bf549cac0530d695344d2a6d88303249e104fc73be2f1782cafc76bcde9a546ae9192910f0a8f37f152283c5e8ad6f48f58d3336771cdcd9085ec2f9c7317ef1c865fc1c7d0c293dd3b95cea91312723164a7799feff5fdbd062cdedddda7909d0a5e0520de4b0eba0fde83c7f017e7c1f14bb6fcd42a1f1f57185d3f3f40402f1ed60e4f7694cba01f8d42e5e4a4522a550ea3cb7d7c5cae9f1f0fa3cb5d311215e3d1e55e849fa40a4c22bf2fe93ad274d9e9b2a19dae0e6d0ea76d32777c6747a59ad18501edec08f1e1e7978f672efbf301855ea104caa117da09a1fc94ed847842ac502b94134a8554a1554827f77b3e7eca7e76fca4ed782f0fc8fbc9a1e792f1e14c0c98d9af7f029d85c027c79f1122460694f12f1d5dfd83a6a45b538201b5a604036a4d0990a604c84f1b8f8d1a03d839ed987668ecc8ece42d050a0087e0fff7593be327032005939291923f11e6071c42912af983fe3ef8f710c3ffc59f077fec7ffddf1f86bf8bff0bff167f16ff4cbeb49d93e642dbb139d47676be164d89a624f7b3b8d247c59fe49fe28fe23ff2b7fea290bfe7dff9739bbfe69ff94f963e39be54af8d878787a7e3b86eeb36a00ea8530105a982542e29bfd381e12ce2eee5a7aef5ea8072772f06c49aae95031b662dc903f95600a3f0557c4708427628b690a50762c95f04190aac0bb2772a57e520fb87e00c1ade9c20bef47464ac815872998138c36f5c90657803832c9f0b6a2e28064998e804977f4823fbd3bc6c4096a104b27c2d2846f6175bcabdec1f94fb67fc0e04597e4bef500ad0403821276b4f3694cb8c82923458c9bfc971ae623c8d748ee4fe99e4e53e2a14e470164159a1da410e27cfec99ade933954ce9fd33cbb296977890f9b4a96bba4dfea1f664ea08992b1f4491fbe79059a40ab641d963e6b055ab70aec26e4381a13f7b420f64e6cf00d9fe698565c9d7f4cfa69572ce398be03e9c45d044d656c4b66da1fc2286a099e6f9397aa6496996d144df318bfc9a03907b60439968a3cd5328c9510a39f64c91937310149bd0f04049ee1f2236a14fd338b444bae76ac780aeb99997b6afd9f56e64d8cfc781fdfc9b2cdde5e637d9e59d69f04648f69fbea38900647fe75a1c14ecbc5997d114a195614e1d5bea9f593787e0d8ee27779c5924b2b466524a29fd32415ddd8441b7d3b5ba241d0eede5cf29f8aa414e08a76a35d8d325e1c460690efd318b80f8e449b6168732875dcf957946515da3bce3068b8e1516dff1743b3959cdcaab5c1c13ccd4ace094cfc96a586095a77127b03cca99a951791617c704598dcae7ccd4acfc50f914d2abdc1427be3c7a52de8028dbdf61f1139e89b038e93d90f2364f7ff2a4dfdf01f1c9931a9264b15847ca3b7680016a48b8137d38fa508482f2a28b823b1d169bce1c9208d31f9b906315d95e161d29a22b45efcf79cdd445981bd2e0bd9c2ac2a474283fa57cc718654ea7c89be31ff23a0ecbffafbb37ec721e933703d2208e0d62ee5e5d2bb061ed302598abc1e9df8521f7c4595299e47e253b2e3fc99c0e47ce4ed7937bb26ed4968a96e2a5c8964891dc4f6a5961364a39e79c534a128661188661d89c14c708c5dc5151be1aa751d837e6bd08b98860d81f5d149cc243f6915e5462acf4a0b560e1c3c6e2a27b7fd9f28e43ec764ea3dc29aa73a474d2a89c3685f28adca6b03b75c5153ef410e385077c1f86cb8b1616172d3e162b2aa41494911585bc8edbb4eca75a61432b513f2d86a1b82036f4af345252fc195142c8ba95e80a1c8e91f81262566e492b4a4a7f7f5584e988578e7f78091b82e918c1ca203ef2941fbf659411bbf3e8b2949fe3e430938f0d69b075b055135e928d5d6c08b63ac91a2c3621257642cb39416e72f42676b9828b8f13925c81992033f77d9a4b2a739b4bcaede79272497d3bdff77d9f176360e74797954bca4f2e3e2e43fae4e2e2e39272f17149b9f8b8a45c5c5c7e5c7c72bfe662856843fef74d21677c2b6923e67e972bc41ad1f3569e8eb7e3f1782caf156bc8bbbaababb3c3c36a49af397adf2ac23492d5eb15f4f9b87efc346bbe9befc318638c75620d19398ccaf21d5bdd29b0298c60d81411a67f1ab14d38116df8f76311e011883aefb1af4fe7dbf9783ed6d78a35a4d7c1c5cc12a7a8224ca772cb7b6ce8793bdeca3bd227ec4897567ed23096c97879c9de0a6317dbf1810d515ad7e7b2e8d0faafebfe5ca0fbba41770ed184ad22d88f51717d2e8bd4aef6db23a16d2cf27f7b202c12f768fc37357f53d3bd0803e9706863684dacf15e8797ba0703624d115ea2c1bffd4d0d875990d09e7b0db3e8b0cf8284e8b517bd16b094a8140c16c74d2f15cd08000000004314000028100c064442d16844285a46950f14000e90a6526e5c19e9519443081963880800000000000000000c00603489b4d77bd48bf9c2532a5136fd854485d129a383d192e8b833a7dc393f179c902770a0c5a5495abdd5df34f7554f06eb9fc6aa7eab0c3b3c03414b35f921dbff0d62ff9d658c2b45567e2c2bd33f2ab1a7ca4aa356e6355e6e79f61fcbe94d9c8ea37f7117910d677f7d8bf62bcc11dc404d3775f7c3f47e7c8fff91f211385e900d68988d07be16a6fb2193222f883041a22ea2c1ce7805fc41e1b9ce5cd5bae270c8289da32262f5ed9259c4d7da6e3ec538652136489f635ce0428108306d95b65fd27c9c1a75ca04c9684fb12f7a127c1e5c5f07e18f2e9eb9b53485cce23e056c93b7e139bb70a1db4a1a49a06f37bd42e47bff4f7778f2ddb0ba9a5bb525ef7380d82613557308d51e1755528f89c3d78a85af4e9e4792f673d7fcd9812e29ea9f1b75320012508e2bd9741f8b74876e5c4c41bb61ff04e8e7a9afc3098ca1002d1a2ddad3a95bab08fc791bf81652a9221b033daccb61ea0bdaa76a0232aa224e59a4ba7d221e8a02940abd66419b5b4f3e0b403ff3fd0a2b4f3c10fe24a9e70a902d2dcc68b6807694c0e54569a8a94893bbbed2ef5e11ad01513d1c642068ae2878116b1f4661eba467851e8b9d3405dedaa6cf86485db981a449b0f5a19b9e74733d69e70071c69b66a7dde5939620f86aca5d5be4a851ea8a00b443491dbcf476d90221cc8b66194e52b58a7f3d89195f27b11f026fd637619f77bd7a4c18b282b7f1ecdb296da1051408831f7715320a2c762a9a4c43476e7908119afb9c3e9c51a5df3c6c513257be7aabc33e697cb236396527f41cebf7dbaed6bcfc03a5e2a4938706a2e7fe8d008c8e89838332590ca4e00bb181ee9a921103b978477f227250bc0b3389efe87c812f5af5619beaa08da469db22a078a1719d8435c447eb8572f94c146f7933c200788bb3071956d19b229cdc92648309c82ffbd90baa212b48b697a3b6023b2316502cff3e16282db7d3c93ea961932ac68bb19a04024ed70c5a630700b3261cce2f1675acee1ea0d020cb91173b6f398e4e7384b2cac208f339756c870055b4f4fd47b2e6175e6a0c711ac8d08f31c2f2b12a3ac8cc91b282889cca52d3ced09e04f7eec13721faa3e500d479e2e75d51acdd46e41825b92d712d677e6a84efba451425aa944c5f5ac150f88f146780f956d1eee0396eda570fa138a90890b49a40851914c34c6ab4f41eef4ac2427012a9c9789616abd204085e10ef578d6bb75eb3438f0078b7b1ef551f9d1e2e4dd02dc665c9f0183efad9ad10ca0313f5016ed64d84deb0520e5bda3a4013adc5dca3169c266080d59e89546b2e52acb9db307f791077455ba2dd93c9d1c4d318de15eccbce7a9c00fca28ee0e32b7cffc2b912180a649f0074c112782c99ac28a5f927df13d0a51ae2b0b10049af2b45bb96aec5f3c4672683b689f23d0dfec310359da645c40ee1e7bd1df06164d306e4eb7adda2418c7516f7de544d48a5adc9aa148762edc68af4b9736c3afe2d8211e3a9a287a80985cd03219e28a874ebccd5357fe2fc0d6e910de1561061646c902dc5c0ccb3674da5e607c124a4a368af67e51703d877a62e7e6852226811fe9096d281d356b69c72c1acdd66d6d18dee1d6448f0a04fcc9f33b6d6cca8ccce5f7b19a16ff15c48806640eec3d78092f576e16640784098a366b36e3037cf3b1eed0a1659ebd03416c0969303bc59cc26987d4a3848c1cad36bd17ea08dd1daa07149e0f5e35d24411a7bdb20fd83018bb86bbd31fc449394ffbaa6de22a0dcaddff1890b3a8a8497e5e87d059f3fc6c5a9893d664af0aec1b05d49b69669c0e0f8179ad704affff83c7a47e1de42c12f6b7f70ccc2076d5bb4a48136e30f72820bf83b7a460aacd910d4f0b0a1be1031ae8c0db0ee3fb4f611a7a3b24bbd7dcdadb7acb25531938e9b63ea234b964b3681b03d4bc19a5b3d61d3317caf503d7f1d2cfec557198fba81c64996aad4427649d31da8cf37de2023a3d0e644dd42fd7b073162031f5bd532de183a792c7ce0ca1b314cc8fb8c90ca44ddffabdee6e880f984d19cb680d4f2043640bc497c740f288255641d5cc196e305006ad1c6d83898ddff1217842f05f5408870e097a7c0b86096814d10920c16b6d85ba00d7b5af80616fff0281a84d86a8d9ea9da41ce10ad1f5fa577f9897a2f1f883f2cde7c3b938e2e206b60155c8e54f2fac1613b982ce7d8a2632cab2a6b567cbe7d838548411ba0541fd37b70d6df10262fdccb43970aa30f918466d02c0dfd7657755de03a92080cf1ff57174a28cc730df120128c728397fb41c10542a4e0bc91abb7971dff85dea10648be3c850473b6a30fd8e042957c8c8d416c130375de4c593a1729d8dd05e29e3ba7d493b689c04ba5ff399891571a3ce3ba25f1fc6c40fffd908324c5da3075b82c0eb51986354cfc5c9db71201860a549ec40acff3b675202ee2a54e4f814a64092e1d8b4c980fc419444d6c0abb6b3628ac2f8cee7d69c8d6d6aadf7686cded78bc3571587d939b0f1d5c391243cc6aa51dfaa8c3c535043a6718f5e6dcb4190a1d271033c01d62e08c9eacdc61327f92af83a5679d84da456b63eaa00307a55dbe4595fdc95a1f72a91d72d4e0a1476a190d0356486247143e3d5bb7572d59d43d5afabbdd1692f453fd372315e9f1c3d5549617ff4b3eec6e35daee2920968294784ee95b8094c5c1eb040ae671f031cc52a9306afd939bf2bd7f5310e21ee48c854bc45f99393e20e749bf835bd6948ab30a78309a071c92aced8b8929980d1dc5e64583ddb2ea112a47f15336813f0240344a0d3e6e5234fada17aa2ae12f2e00c5ae47165a20d12a4889e9da67c1b14d8f5e14a45b0bf427888427a56a50c4930eeb714a8a8e54ab87336d56686ae585d284b23263148b5dc161f8289e1ab6e0f2f05321820eef7a9fe725f05bbd7886f02826f4406dc74c25c39ca1887d2002830b9262dd6a245f6f0bcee07887232f0873709c522b6bebae352dd92bfb2532b296845634854b98e314ec00c3362a322b9e9198e6385d91e2f700568d41eb549f315a3b79ef5d1018efe19df41e94e6d4f19544bc66ab7c3b2c48942f76aaa4275f40b6fe3a3a003489263a2d5ae1701c1da99fbf9048fcfcb297dffcd10977bbd81ae0c9e4201b3f6e3544e1959fdeeeb77924a020fa10ea6eb38b707265e64d4ec87850cf7c0e5ba8c86f59597665dd8f32ad987f9a3c8f0631e08009e548c0d0baae31664b698bcdbab67fd0401bff82726495bd2a186bd0e5f29e7b93620acacba69eca7021225c872d58ea28e9704f4d72255a6320ee82fda1ec936810c7f07dc6ebf81146f4039cc02d3499e971a2549cb0db687e60054040ffd1005c89e7ea848faef5fc7dae1fb6efa8d3ed3df24ebd64fab02a024a24d742674a0e2179f8a0c345c9a5828b6a2a1f1e061b27c21b90b7e29671218dac510c63fd9312c574514c0397eeb9065e49df2ac381bea7a3c688b8e6955ba6d8e1b44b18f995daad487f5a8c815cda531545cc0d90dd5b389edb024c8e7240ca298ee758d1736a778ba36d157f8b50808d62ffb1d60562ad244252c538d50a19778e0785b7e5425fd3874274490d8a3e3ab8b714a76d664a5f4696c028396b35320267218d7b1464b7195adf361b672a21a5c22d1ed936416e8c3ee8c83030b2e93d2037b8134eef12348542fc5f60a65487b5d2b633698ad923d544cdd5f01a65a8ee79aa18556fb647bb58941d78785704a9a44a11b760f689fc3b41ca1730fb820cdab530e8506817c8a47534d07f2afe15080bc535b848c02f6158a244a760a718f6c549a23d8b9df63f48058617ec51f4bf17c576911f7eb3cad37437ee7172d19470719191f7c03b4b00faabe6e9f18b6c2998ac6df87782456701d0b031071a4a4883ede65ce331afe8d0926a36c603f473c7ef6ceec0285a7e6b2b55b1ab26e625139ae6001bbf2c79c3a7685f8c4e973dccc868827eff3fa32d689ca16667631fdd94f192e82e9bb7ff284e91aa99b485c8103e9a9094938516912dd1d544aa0bacf53a46f470a06c2e8e4b20f29f2746543068cd5a5ae12c8b8f8e59302f976824e7542935ab5cea3e5c9bd5cd863910ee3d8cc913cca94e198a9f64e007b840d18c6a09574b1e1266574b07da8587e932ff95b754081aece2e54c8748c9943766ea6a221529c5e40e42c1405b9e9122e1de38836998a431d83b1f631a25c731fa2d02a001e465161f5ee5fb9ba5d0498f4e4cc68a070cc05b162d493448b0a742f0d43faaa90447836f2371f9efcc47382d2402670c75a19ff9dfbd466d4a52c20720b60ac2be847569d8f255e22929c9a215366241717c087cbb1530875e0f3926c02a3b60b4289af202cc6ba42926e56266f86d9c9f787ed084b24ca06cadaaa1a36c21a3251b8da4fb7c15edaaf66e74934f46cffd8921008725d06521b948b155693df2a4ffb968cc14b7408ad9739da7a01a88d4228b197565605d1219258fa3cbf4ec72ddd2c6198e170e249c1f7b85fe5d4f4583f9bef359b7f0453c1b3568bafbfec1124897d77c7f74da7df1f30d9434d2f07a9734d0d672e799a8f64494d718334e236dc502eef6fc3fe9be88d7346981c1cda363f8cbbbe4f2228477d6324ac3d530deaec6270ecef0479be25a85e0804e45855de91db3f80a1b2e548dfc5b4d3d80c6cf73bc893d36732698c639933160173f4c3d118ef5e7ce2e8c2159df514ee934e243fdbe5f32f10ae1c597f226402d7b65a85757c84ee0220e7fa00fa7e9381df94ba7945b0fbad127adaed4dda7e0e9e08ac5e627a53c71f2e23d7295b0c795829f264061221ed314ad42dd19e88f4417609c844e2c4152497a2cac4402027440f85fcc0963a89a1b9cdb138274bc55202dc5061d9093b852d967912013809375f3e550c615446028fd9bfb762c77c1d1c875ed1dba3e73220e05a8f6af9901313f4310c773c6f279527d3f50ad3cd2ed34f357cdf23a2f7d4047f16cafeed10122dd28bec0e64a2a330f873554232695e817ae58bc7544b848eb19939d2e300701e306fd2345eb2bdbaed3e3d607edf9fad2baf6fafccb66aacc88dba98fcaf1aafe410cad33aa129cece998d9e02f7034640e150569c48870fbe767eccb9627f8067e2340048b98b4870a65806e853fe4aa775b7555ba26d149356323252dc5c02bd34c41d730c35add003e5a83e3b6bda592ceb18addc893371acbb92e81d890b9817ff4bdb66e1aef1217f0803a51fca13cdd273ffb8d47820ea6a8db755d5d1d30b7a1ca55cbe811ed53ebea2b5574dddd94417634258195dc3a105c4c5e70371726c858f135c8c6f4e62424bac928b632f319aa16c1cfc13554c822068950d6b21046ebbfe2608d01be335a152093a2a534bd3b95d00a55af8ae3ded965cd0bcee8d921c22d5039bf82244c2fcaceb053760e5075a50d34e348273fd8c72005beabdece51004a2ac82ab0342a33307e59e46b4e7d3740632ca19c4534df9bd6d4093a9f08c04038a9923a1e2a97d555ca09c52c818f6edf603233cd7cc27e3a436d5b1ec15ba8de90e2c2d9c61cba03606c0b3ecc8e547335276b5e76cc0076bc134b872baad8d483e4642c3b1cca5c518dbc8418b4c319ae3aecf8299961f6afc0f4549504eca33a694928ebfa4c411d486ccaa1d51d06aab16b296d5c739384070f85f7db4bbf8a4dd6c74372d05f3a2067fcd8b3630810d20a931f75038ae221b89b4d004f41153eafed68f64ac01dc9b1979bb484d22c50ff264ee94c2fc3697d84ef05bf8322a68544f9ca1ba5bd8ec66b95157739dfcf62e55e17bb523ca861fdf40d4bec1c6dba5ef08f0e9c60d9368b7b24921c9642bc75507dbf950510cd82c93e93cc013dad54f2098e7d8600636082f70ab3164720f8a0127b7310acba06a972d5aa4c591ed8bc342d9700612e629d1afe7366522eaf0c3d4592305ea1e3fc9d94b490bc9d369c62e34552771c68f56d0bc28358ea7a38dbba59e0598049afcf4fa006ff81752dc1d17823509839378e1341aaa7890be60466c40751cdfc27cab02aa6280ac10629e70c25ed2719276af9b151bb0852ac6d392bf55fd8cec02be2a6621a2eae3818186d6deeb1cb077262146bf16c839addd4bd8ec03736932080ebd7db4e5822e69db0f07457a2357cc32c1268bdb501f71eedfe53a0571e1a58723a26286d2fdd105d61024571f1d0685c7cdfdb1be44a7fc612764564e6ed0800b2bf19cb1e7b27942a5f84a746ab4f6c3dccc5d6bbb6eec45a60e6d0bcb944217ecbe6fddc9d2c05c9d053a430a5fd498647802a53e70832f315a102e5c5b5ec37d5abd7b1eea19232ea7b7cb85e1d03b73b0162e1fb73daf7b01efcff736fa1eb01dc2353c6fea981598826a3681382883fbb639c74b33f10b0dd4032f1a5d26e6045dc73228b792fcf6b1586ab59f279f9618fbde62b4c76d4027f55d357f0b50d9b1708044ddb1249044ced8c01437c3f1113aacedfba634f5038fe8089b27e60776c77129d4e2d821260c78aeee44e4ad27878417ffdc890ff9bff27f78f680cb48911e5d6e3d783001cace6621a83f9881f65a891cc0c1961866af50b87eb0ce891180940fe95f939a46513f683e2838dca34eabbb44cf1dedb37241dc8da7b300365de77280e8bef2bac4b310a0333d5a3cbff8b4379392268ddd9c7db8a85d9468fd50eb60af46a5237fda7ee4a1506ab3b3d0f5c19b33714203e3cf980838fcbfc5b9edc16079ca505fd5dd8d898c7f1863f87540035c847cd2d972777fb9b0805c5c2f3f9e5464fcf44d00dd1079670adbfb86d22514aa10695e488816e4762e5421ff07e27303c8c68040dfb300cb0038e4c2a8afe58b08d50902c9b3649e581278daad415c043a5b40b498076e2529293ade75e74a20f0b8dc16b20a2043df2dde6a151053ff15ec0c3e41428f204da152bb951e4769ae2af5f158d02b087b7762db4c2062d6382f3d2e8362a89aa29c1ac3c69f88b790958fcfa73072c12caa391fb5187b109686d73dbee51cb87569f8e2f98a547ed38f799ad08f021f804d44f0d81ebcd81a19021cc34dc9600e09f1fb0d65612a04fa4070a373a02efd7f221a751034088aca96d6806fec904ad706240ec01fdd944e63ce4d9a66820b61e047f7f5595ab872a20dcfc2dbe481595376451b95a1595136c5139a547f1027ecc9f7cea934fe75409a70155fe7d44f776ae7f1075ddfc020366c0630edd0afc07215a21fa101a79fc27e3c51e509f850f495313d58d27f7c2f862e994b6afcaa3a8da5a8271cc2ec9a31d8fe715b5e6d3211590ff399f5f77a5480b194caea32753d05d15c1e9ff5ad240232a708af80dcdbce460fc440442866190c4fa8c5a619e38afca425e4da95e5529e65b688fd0c7b4a14574a1ff6a365467cdbd8d1a1c1ba7c7d70abe6311eb0ba05eefdfd093c1a12f3bafe7fcf330003b62caf14af8648af7dd3f14cb026681de5d66edddb6eab3f97821cbd336b522cb31f04dce372a9cc9941b3fc82b264191d2888737a91daa44d05faccbc06c05d437440ca8829cdfe42eef7f7586f8760c1875ceabf83e4d6503902ce6da2d69009aa85a776600a34aade9bc583d671daa923de4d3697e5e2f1623d2ff42d22cab91a48ed99499bba6495832f7e93fe919749064a2fbbfca2100c353008033e97fa98a9aff678b2c7533ff17497e9968fc674a8b4311fd5743d47fb4bffe1708555ee62b82da30ac2acd7c16b62960f06183dc3463dee9733363f1aefa2a8d117737010032d2416cea54fbef867fcd708fe9b3f0e64ebc128c165c068eab9d160487a45347852c0497f05852e27774c5c540f53e60f35abc89cf92629a058f24113efe6a1b5aabd85b82d46a2ae84e8359132fcd5c2149cdf061c9ac8297c7a299fbb80a78d2e908906981fc6f7743c23c4482fe51322608d662c71424edb064ac067e58821449f16149da665ca98c003025401e14b57743d671e1638b6140e97aec52be9163d98a6ce2d8ccab7ee75212fd5b9222c39c6f2d9b39735bcc6e8efcad44898d86072559d7f07892e86da801f7d70994de07df437b3eaedc9462c53b8f3d528a27190ad3793c6b21a8aa1417942cad26c1a45d448d07c8457752c899ba82342e55437bc96e1b969bb8afc270342dea02ada05be3a32445ce17fef225182f8e3b1e51aee363605dc05bca7a2b97d81d506b7915a387c36063b7afd43b667de91de8c9e617baebbb3953e4b828f62f7daf89353cd0d6440d3c16b91bdeb0b8250f355a748858eccf397cea62c15c30f376d5019214b6848ebc4584b3629ad31ed8ce2f142f23b82d688f695bee828d7bfd2e01ad0d217f4d5faae090fc5e81c5a5aa5ee8e2355875288b3e51a32df18989c4de6b664131870035f8c124aea50378f8895f1666377bd5f19a9c7d904a535a57a5f7eaef59087dddd5d0799a308b5164d20a6c563ca7c8923e64b87a4e41bb8870f60609fded58632215fb9fa531138014861541964e87a78226229695d9efda06f1ac414ca3c40b74eacee75c36e870068dc5b6888f976f3c16a9ba10d8369ceccd27c678f3812476e8bc2891bdf2d62c3d0c5494a1e5c3eb3d16e10cd57f884a5b3819c58aa21f12bcf9a158c13e0530f9e548b2dfb6a22aa15adaf27af7c022fc673d97901ebe4b059562ebc0a0a89eb70fe30af4216d19f2f7a18c479ca0ea55d49161f71200a08120958572287b42e3f194ffad9175182b00692b5212e122ac0afd7414dd43130fb7db2bffad4b4971e61adfb8eb8cf194030ba89ee616b47f9562e1eea465e12e17a34ddf0a097b12774b317ffe7bdd279b9bdb64114f58a097a38f8d1295c2b29a16e915d8215781bd936e3dfc5b6ea606c4eb1270fbab0204624952f67d3d1b6beb412e564629c3e0c0027d9424110cad002e7fb843e9931e51a025738de2b8e3cf2dcfcd01b542a57f635970832862cba9c4691197079bd2f16c408802999dd259c705cc02124aceab5a60dc6b7b5db0defcafe7b6425dbe16046b2d2153749e90acdd6394758c9d595fb6e00ca5b0c51764f212b0dd187cf0e8448853fcdd29a32a08fbba7752489f9cd4fac4f29a88669ca1001d9c7aa88317adc92de479efe201ea5f2ae03937dc06c554c4f638d97ed255ecebe537258b0185fa7948808a69e204a4f15f2db773975d01a64a803982f4ac5be280e2de038636c29d152e47c2710732e6ab91e6aa6d8ce8d1f1482f325fcda70e4294c2123e48dcc1883973161ecf86c4ae3b8dbf2557bf4ff18355650c3436ef02c7d9813ac148934ce351a70169ad3834c16708f3fd7d6a97dcfb41d02ef6a4add4c1529c2a225ec55678a2f342ae8997a67952d68bdec53c27261c1861cb6330b515f2b6cc7af59f8aae8541ade3a91b2499477d094d91e77f4a1d31ed8e1e16d6133824fe45cb32a4cc3865873a696367cae439f1aff9b828f06c3b82de69f85008d9e704c19c3987fbcba8bb1d810a8f563ea948b38dee40b3d23e4841efbea4febec63875467b072d2155f43fed8c02290580f835e449c9230a66de9f27eaa9add52883c7142a1becf52e4dbdd60456d0a551cc47866914de3e437df98494bd900d7ba51b0c3527e25ba1bef213370400f2e30d49cb59feb8890d3c86a48820bd3f0557a2a6292f0decc6f4971455190f0e0283781389e2884ba152737af8c3f84eb7dd0f7d300209c4574a08eb98fc9d525c2526436f7417d06b9e6de5b3a534ba47fa2b5be51d399d79f62186573b5e29998eaf18b2ec0e5644c1a5490204c4049b9358ceedbf243a615fcadd4054b5c47f462d609ba106c5553c965d623fe1ee08a2d6fe92f1acec0d7e37f98af00837ec115848184aa9c4562cdb1f9a557be26492341bf964ea89b887d3c71d7587e87e24357b9ad5dc6d030a8f281bec00fe3cc50e2a7569f771fe81954d997c90b184949c7ec2962a4493bb0e94061324303e8091f79dda0f4824d0ac59206b8f1a0134ab86a44796c12eeaee2c4a0156d4108daec5040ef7929a0fb5bb7293dc188db97138e94840cf3912ba3aeac59d23f03f8ecc9374a454c425bb05d65d6c1e6be066b02fce88b050b804b0e79fc34683961850cab6c31c50582ecdc6f065dae0115a4983b262c64118c6db7948980c36570a77c471c8fb17a23bfb9dfb7e606a8a8b5c67b68c84f97e29f0809991bc6a69cf903eb75c77ad431015c35fc1ed6939cd24c77055b49117e3a4d5c089b7ec3b84757825959c2a930906e455d53fc9198efd3e6be5e587337ad82f38dbbe2c015300ca7c67ee2f09319aea61b2a3ac19980e4302823f7fa0708cd32308f07106d05eb199cee8ac7546f9d398a925cc588479485ca712cd0111c56183068b23bcd85ddbac77046f057baf9aad7a9a8ac96e70ac28c7a6df2ffe10b57fa1d258899ddf7925d8a987b1007b291fc60546bd9f830f15c6b1a88e6d6606978f6081f9922fb0de8120dbb4643df899dbe1c10723ed3c86024f8891aca33ec9205ffb923b9ed9c0538af9265c8a1333be89379f095fe28437da3347df7fb4bd312637c24375d5afcabbf8203ceb0f6e532d948b954a5f9cd0e6ad80425bcb9382df36545821366afd6d84b666d9c791e7b0d40c00a97958b059d0cc213bc80345be0f0df0662a97358eb45186b1dad76c9be3c8ec1887c5ab4586ad292c150d48f56d1d07937f274531820ca8d9228ed480424d81950d5f7ca94032988025e309d078869cfd70a45f2f6ee8c251741c3ec0ce6d52f42cdd76a6f146729bbc138abd6b317d53946bd35c0188ac364a6ab7cf629d75423027c349df9c618837cb5e9572b038183f1e5bf44c7e38c90f58424b6f20fa15afb2b025d51213937d1150380b91c76e192281ce468d49a715158f739e0ceadbae600b26608d804b5c142574506c19e3221bafac9ed543fe5cda9c7e3533159e6991dda845f509014e44d6dc259aebcc8dbeb901715323c6408e8aa02957cea0f776b0414164c6102cdbad58a35a05855c0fc82f3abb9b12073db0414080c8a4f6e5caa8d48e83d844e006190fe82d23f04029b0e60304f695c5176213b8e522a6d0f2a7e234a2f088e9e50767422a409d572640d9726169707afa05f1fdd807f4220fb66ddadc8e00af5ed4e01812424aebd226e1fed03a0bdad7f992274895c9ad77bb227485daedce726ea7b623861470a6e92c361a903d9a7eb4a7169eb24e5f4cc8468ab3330422fd52d830a175b974dce7df9a82dc71960d0329c3a2d8e610a814ff503f6090fad79764e08f33ef45c96c0e67f07118ee190df1bd4848cde74cf044ba66a1cec44c46be2a9958cd007831a12691b608e4e14851573fcb2b46b4d74111d3908436a220fcab920862079244878322e2f6a3c6505de7919fb88643d14fe72cd921f8076c6b33ff277d5b2f69f6cfc158cc082a53eed460024dd5a01d9c15ec4f03a02f4be3e9313d0671dd495dd17ae6c2ac7bffb2bed139f2d614c28fee700cdaf861824e78130074d3c88c09de8d52ff7262bae5ec75645c5f8a45be60078c0180b13a77a1282fd040fcb8a82e81e11622f90dbf740fe86238bda8970225135217deee1a9548ec46340c7550ecc33f2ef2e38fc5a443030da259d2b9916c25649e52f9434e04549535ab5a76a2c4dcbc4c8dec7460fa8dbee2bdc4e6c86cdce7636c7f88d5079d6fbd24b8b960f58620dc7b20300e15f94f8e9742d1b79560edc159cd9e5fbc4b4ca7d617171bfba941629bf8656cf02d95c39d0c0c9f49523fc3e3f70fa2ef601e517f3fca3f91a460e2cb004df05d12a3ff066b84b0eadc1949d437a0b026093aa217cb4533546ed12b89a9bd3ba86b39e8d8c0ec9340f30a4682053f32f80474c933f0a196c13d66256471b89cf22316acd854466f9feb47ba150b81636205ce668a42da50125839d7b12f5d848c3cbfad83d2f46574427261e844fba04fb7446a80e746b7d21e6aec09c803ee9537098d5909c202ee6b539ec3c3dad88b67d061c4079f39fad6f834ded3263bc57886f0ed052ef07abc6d64c060230c2f6839975922240c25e6f25ec669743081d84566ee7f9bd107ce6fac81014afad3891fcdbf24a005240c527e4a9611eadbb40da5dea1601873e1b1b9e0b136edbe16a0d62407c0b02bdb24822f379e2931e7262df638ec3193d556620a7469aa5b6b02835cb35ccfc153a1cddb548b23181618b41995f72a3d5664200c17689331c78fa8d5c6e3ce5b2d01659e388596c9ff9f1f15b3ef95a404fd293902bbbcdeb8d12459e6f1dd02647577813887e87303cb0112d74c8e12413c3b83103573217833eac8eb4f0faed1325a09f691d41e17bbdb9835c4c4e47116d763d1b1d1c23a8e87a150027a67ea6493ce8cf5571a65022c97a2fe9f5c4782e482554af09045c55d4a9abc9d616ca89e18bb130f095276ec353e8145bb1808818325403a5bae2cdeee1f26b0f2fe461b02e2188672eb10d601f207f549f6ec5a6a1aa947c5a351ac2338412b10755832a9b97c69c6f889f5a06f613801a82f5e2634a84539c43ee22569b80b5d563871f1f700305a3d4b661b9162293bdfb7fd44f8850e03315cc3d12d0693c48c58687b1697ec59904530e8f5b202050fb19ab8b4219fef01b083a601eca1d14985f442faccdb2d4dc10430d8667ebe0379fd05e555d90832732de55de08e3a508284af1f2640a5061cb58be5df50225a1b69e30cba73d9c78a051a18d9b12b0a6459e73af4d68f253b64f7497425092a8bda64afa7c17ce4f543dcf25f6ea8b055616f93eac295a558e7c777de0bb144cb1e66bcfa1e90af1dc273f16f1da8a760409e95fc1e4541152e69b65c50bfb32c94dcd8e1986fcf4d1d76b56cd10f26147d7cf1c50b877b5fea550b25d4644bac2da5b4b41874c6d08898de17dbd38432ac3787a02448304cbd74452b48148a6cba8af0006ff66dcf549c453409e091f7f830d834b4d32e82346f410e002cb86b9c115ee37b2e5e560df80ce4394a21275bc5b9b10df0b8b2292b2582500949930581295950876481c9c882bf957cddc9a2344a5954cd846703b9c4b4e70c4cfb3a46ea5356b6909ce3a2fd01ce4294820f4aba82d49bb23469498ad314391c13f30bd4024d04d3f8ba221045da980011031c0448c8c8e10507790102ae5de70d0264cb0068ae8e3e82826bd947116a726753f5483a08256068958de72f7646a5d18f0d99ff225e9d25da0c547271621e19a8a1295ab680825b78d9cb0ddbef01f96339cce6b9598030184227da1a1ae077ccd999f88351ce58509cd3b11b9b104eaf48162a3838f496298a06b693d97c843a6de5958be85eb3937fda4017f539952c5a68808411409cef8060248301c4c2120b9eee3a1490e1a916d926d58f1dc20b7189f268520839a819538b9664f2da6cf9f83d2c9c124b2d47b46196c59c5e91062731e6302001960a3525dec6db2cb6d0d83a0b53a93eee3dba296f356d3d32f940d67e20f358b58306e3061083ecc58a36699b80b3e2e25d6024f43263f2f970732ec4e21464893d5c409258c3066aff4573f9fce3f483a11a2e1c086cad7f040b259513dc0bc4b5e9c52da3522ab7c17496530cddc2d4ab8b2c4e006275c8a4f15de50cb5bd8e4631c8521a6ca1c17bde707200381a832232c5160e898a4e7ae6bceca810e244bc9df8e77f60c76cd21e8973a1f0ca7c229eba931073dde1e73c0ebfc7270440884b46ec9520534914f0aab514329acf1af754d8a0d190871844a0730b91d13eae6a3d2ff0dcd184b48f54ac178c03dd9b5730b20ae4368e80579d6caa61423efe373ae26d42d67cd8384ffb40cd1fe7e0778919b00f9cce516a7c855d839f5d13071e8765f47e77af586f1c32be084c204c7b580a9279cd55a4688f9dc3d303d6d7d68353f0df7445367afc83d34033c5ea3969e09e9ad34d03efc3630de57494565975efe8b6e294b9b8c5067767f3f03772e61bac11a236c8b4da314cb9d054c689019d59d16aaf3b181b85fd1ec4b9ec2b54773916b6730b6c6a95c14439417b4664db5731b97f443c79265202271fab2287b277fcbf5432034bb51ce96bc74d0bd5b6cd0094bbd72ec40e097d71ad144d49151b882efabda8eeedd242bf14052a9f500896440b9c438bf741acacac1efb56ec52beea795270eae4bb5a36c90eac015a498d6742d55686a77ae835c8640c6e3ab1bf1bb8bc97945dbbccc0a890c3b06be68c506cf60a67dd77e9986e88c5fb33fe5e880f8088e97b236e82844c1aa3c59d8ae3aeb299f556e93c3c691b474d22d75ade5de38c46d58bc6ea73ed2cba2321457bb8293ce806858a8e9ea65c206316a7c87c0aed71afaf5736eba31ae44cc1c3c5d6e48a3ea60a4ed67ae5915d9687829948ae176c120d3cd07dfd835cc6797f870fff8fb0d04c9e9c4a17bf7bbc848e220be0e2bd36ca18b56122db8e2e272ed570c14b94d224bc7215070e40008f9a362561f6094fe0e148d5a2c2f34a3a2dca1cd8c6281b7d4a6171128e5f6c68830e5a29168265efa649cec55acd88464d839fda7001ae4ab9416648f57186519a856854027b9391a2fe3e3699d0ea2dc1eee88fc40ed7f697aeeb14f558859c7b416bb4c4917e9944f5f07b97cd3bf0022b034cdd03aa30b419948bb55c596e4498854f8d222dfbbbe4fb57ddfdaa537f917b6705e88583fe9ef2c07bc5996109631becf443786e29b5f8326a4d1c80a89884f4cc4a31cb211639604538306a57a731139242c7218814f9bb117ec6935c408f66c5a3c792d3c7bf3149241bd1ec84ed65dc24a3f05ecd5b1516208a06c1dec1ce4c38cfc779cf872ea5e6ef1db19f21641d6264b00e90d62bccf1e940570c5f1bcc3a9f3e7a407e83c12c7960b058228a066e7dc058632ef48ff3d6d3907ab1a70e9d432e14a953e2548a859bf20155859d19dd57caca21aaae6b92f7bc6641ebb0391057e64336c998c41648a984ca983964d1a066673f885fa656d0c3772f43580b001d42106b0064a24d7b882ec262197f5cb566b9fb25856b622f0ed1a207dbac6bc1d80f91483a0c972773fbe6296fe961c0aca0b2fd054b84c807915a3cbb03b8223f8589d56edd81478890dd9265391ec05107a15a5bfcb28920687d8edaa259b63e8a20680816366a516243aa88b0790d382331e2828f53017bd6955ab96a81213cf11fbfff38fe5ef5c3fe5d5e59b970e1a6b6d13de74743f49459a762017f1bc2bda0e38820fbb421c145bc7b3285e8566066512e0447a7b5b318462a0a77205e2ff66b53a237cd959a32db76deb820a0019a21301725c7d39c6007689abd7977fb60053aaf573a9a2b4ab03ba0b2b452e6a886110ee312c2f15bb0c2a0c4ba1ac09435395256fbbcf73f32e187949dcebf4741eacf90df4001a830ac36a2abd43ebb5100341aebcfa54bd25f9c8bcde1a8c33ece081e78f621e7ffcd244f3c1c0c5f1ec03ff0218b4fb899ea2bb8e97e44ea86397f1f822de8fdefb3f933655aa93152332e03670079a1fd72105913306601f08c8729dd090cb87b311459450e5c45b549cd9ae65483729e80b45a1a2b93a9deed806964a7c8fdd2d063b848337fccb8385adc7ca1d222daf2a01f1a65e6b987cc840447cd56928239b74eb8068b582053048cd93c944cd56c75fe06d6d6044fb6293da13ce1304ff8a1271cb47ac2322f0349c41bf81ea1ee8f3163fc39179081a5eec27aa1a8e0035a634c14c0120f73f795e0c214412e711e6966de0efacec3636ad128c77471848c62bf502008c788829fee8c1db74c2cd5bcc06679fa88585ea43a73d538525221b6d87ced0ea98c2fb03d30f47c5f1f5cd227962cd7534601a9a597545a2fadf04488727ac28c20a3f054aec82b919591d893231de4c9e183d4e7d37cd46bd185dd4b5f25afeaca0f605d52790da55f99fa6b0abac2afb088062f3e278de576b459598b33579f2da974d617346aaad08f34d0fc27e93e9be54dfdaebe7417505251ab37bcd8f84931c2851d48011a59801be5aa0cd7e3ca68aa9f3c57aa0dfa399dff765cf937db7d0467e667f3b7b7ab40946764e68ca874151f055a914a506cb673a0c6d582a5d27d602efa0eac43613cca99cfb7a4536463c8f869a19129daf0e66a2ecbe3ad2c46070546c3f74228471b700613e77b498d97d3ba9d34bbc747b2934e03a2f49fbf230483f61b2b9a2fb4a265b70518d4a12470a157d4d75b8d1637b823856e53d401d0f39314c999ec7876bbf637d61d25cb7019132e9a6f3b8ea32012db6e53290daa311ae58aeab14da05f94e557da1ec1b9de0d7203c3137a8b1015502a1565c1178e889909738247f5c9c941a790d731aac12d2c38148377ca700aa1e209ba40bd9f4ad842ac607185dc7ee09a825653b4bcd3681f0414fc50927c8de2d1e44ba9113bf0e2c755eab6acec75624765ba8a540c89d43eee835c95c0532cfced773afe59b66627b354ad76691e6c533eb313e632bd82e63a48daa0beeea0d2b02e7d482c71e59bf9707913de8dcccc2532c211c001b4ad8151af763c721c78b487717ab93d96b7aa584836341f54ff298ffb0a85241c9364dcd715b1c43c5850d33235e87eb15f4e3072bd2cd144da206d1045a9b7a04ca5d179dcaa8c554610c8b1f44201695bc6823fd8851e71a48c448d20a985b681665f4a72b002d8dab799b44073b8fedd58f3d7da0357896f4851e11c0de2b268c99845efecb8edab83df1e6ffff5afe0ee8457c2d1c0f1ab62c9832d209c111f7823116efe3dd5b558f6299dd33e45c8ffd3db7f4728fb933a78410e21a599669fd669874747ca526ce3b7e3a33b9a461fbfd28778bd90cffb0a573dd17f4f3e575e18eb0a1e122baa3e11d6c67acd90c371c9b4578aa56dbedd5a1650eeacea48caba5cddabf9624b8c2b62c704ae7e101ea790f454f5610c790e0d01dc0a3679351cfb2ed9a9e896696c83a1dcb0779e060401eb099e689db7e7baf47a1788a88966214385cd33a8b21e83dd88e6aa670fe2f63d805fc0f2c46a3a86421f7780201b99680aca8cc68d73b2548f5279db9c630654818b19fcda2fbabf35857a2b37a9656acb60d9bcfe3de04f2397da05ed5cc47ecbb1bdbf4027e8a2c0a08ba7a2e2e1f8177ca9e6f60d778d65725f9f1b462958e2d439053ed83d61e509c951b4bb042751b52a22c58a62b4a0cc85981f8143831b7a2948541e894a959030437b00b2c00ec36a54a3d457cb5b3cb2d98f61c923b9d248be0c922b8fc4cb30d2f9a2d0e0021929b40a2537006e2121c1fe55cccf375444fb204d1479e35225f7013ac9b01c3f2429adab7ed4331021d2142212625f20bf49dd5795fb0ecb6218cc832e144f58004105e686f4c06a17e2f7fc168759279c076789247e078e96072fbf1ee40cf47ddc0ad7ae8238f64a786546aba70ea3466815548e420af4e94e185bfa4361502a7702acab3cffb5fcb51712b86a21d8924a27d0875e43b24e55e8a9fc1b4daf0bca16a960f9508b423f89d8d5429af5c2d2e7c3f57fd8a7ee0feb2e8595cb24e67959215fb97f65ac0515472c6d7d9a42f813da391c16314166423d87cb110fdb9ef486a84fc45339023fa112d1ccd5ea0d9e4bcbcf08415cda162ab46ee5142909988b0166b70d61d1f851035c00a30a1b42596331084cc00a49f425cf047464561b511b482cb9183f7d84bc329c1813c9234bb4fbd0014d31e14bb2211965b2032477882f23c44f51dcac6cac7c0ba56986f97600546a54c402c54402eb5fb678289e010006b9acc9ecc65541ac2469880b32b314b3646c5ee673ba43d1801b3f014e58def81e964be61ac03a51e7d9926dc1f4ef0898962867d57ae524cb004b5817f7dd8c91bc0261e7ba0aabca7d3dade3f06191867f57c4231440d639bb75b21e7120015f70fdb2c96757d72e63a622ca230e0be51f3d3c38e1efe21c10051930ee0d68a69bfeea22fa51accdb40263a983032e30134eeeee832cb3002abc367ac0cd88ee55cf0cd869bc53e201f9908630c8812bb93d94c883786e00a19890c7f6eb0c8b720f83dd2d143b71e1c546b289a9fe6578c8b1bd686232062d8c3a8d19898c7d1964d203287c93cb67671390f5753f87a4982d11f5c8066a8559ecf954b0b840b54f16ee5c000dfdc5318632ad6642076610ac26fb273c2841cd003408f7730a04dfc4a0d2eee17bd26a3f2d85699340c1e8775d8a81debee311b1993b42e2f9e2d51c0b49f6412f07fb70bbcc0aa9b80eb0a0352e467064a09c4e35e61d1c136fd4da32045309bbfb2b952e206cb20fd0c9ad233630a9e1b619a4cc79b934be1c91b9975177d41d0566ef077acaf0ba29ffb5e2996a680f9e5eae42a6ec3a9694c61d6618b2078bc38efd6ca77e1e84a1048b7897a8bcc23673de58cfad9d006df33b0a8e4abbb1bc7384c07d6eb8930e737765232e8e002f43dbf19519bca058024a389801eb6a499cf1ddc69190b573af2e71cedf5b1420753111ba635d97efdb0ec4b3290dcec41f002d67272ac14726ef9564415e7cb58b6e57762a40c4c0112c86978d579904b6ec1f4511ab88b84185f1466a7edc5b76294606d122063364be2f8da663007ccad09533d3176834e98a8e92e3f1e68ceee0c974ba11933bf096abf1aae0f256ae37d5aea02f71aa0df39d251ee5fc704fc0284e34d5cb05aa1e665e0529f288ea533c0b5aeb9a6a493689098ad5571d1e01211e1a6f3d4916088321eee299a0f9099b81864f77477916a536c84f0a1f81eb7005f01f6d231a32544fc0b9f4737650299860a80c146d55a2bb6009a826053fbb0fc97eb9e65016bd254faf8da4732cf026f5585953c81412e7e3fcbe6ec4e142c039210b332c904345fbabe03a7390d29beacd2b29020edd3096d87b8851432f5d9c5f2f7df8a98539bcd8568923b4ee9ffdd86185fe29da48c1cb3c32cff5823a2b8239d39bb96d80efd320a53528e10313876035bc96470087c4b8daffc1d44b6cefc796be1fa2e952182bff5253da9c08676756d39513b87665cbf86add8efce14e18cfb0838b52a1d529bbd757a90352675d3fab54d2bf7f5b37768e6baebf02cd07a53f3206d7d7b887ea7915a3a152a0cf90c40bd640f2c89c36418772dc1e2289a2380bc4e89993b54b11355970b81d41d73e2b62144c24bae06f62e80f74d181ee76375459cf29f9d2a65a4cbf293527d6f12597583f1bf4b705e245d70711410d89002918b2546b5ca5c4041a486014c6a8c2a8398ee1e3b112346b3922758417741c03849849b5e18e72bec914f7ecd76d8822b087d4afa08b3b1cca20d8dfa1a2c8e194aef193a62a48dcf97461717c247997307a2219a0b3facb4e61fb9b0b1055d4df9fe791a33cff67e51531a4fe9e46bbcb026eafe8bb883b5a6fa1dc2d88a20e0f7e05329aacd2dcc667d8b7c9e310775d815bd3c35b153e46673446f605900a780ed4d2ee2f3287ac31b8e8deb4f1f965473f189e1e5b1c334096bc5a5158699fe159e164e7b5ce514f1b33cc67a75d8ae2b8d8da14dece1201ea2e5d3300acc238a6c2826da31094e79c79a3e27e06948c54a3e4d49211e982f46798c7b4b7066a761ff271ba04833a14a99e73d1445c2b3066a22c5983ee24b92e20468a05c64b4f2629a2ee6aca520fd6bdfb8e784708eb352c04c62c54b5e0cf10918f0b9096113e491d108d380cbae8af7d2975919ea7279caf2842cd9467a09dfd4daea00c5a459720d875593844109d5d09ec18fa76714a8b9e4560860bb61e9d2f7d9e1e2f8339e448514187341c693545004b979a741b4ec31427098a19109da2469e11996b8339fbe0f532d53042d2aa240f6c18daf314f36dd01c8e729c14a2babef195c3293c2f8f9758387ed8f72712a1885d155cf130ca1aa51aaf7cbd5138a56468d96a94a254d79022d85f87e332348e3b3ef41871666c3788fa63c1ee3b927daadde62c921ed70dd4439521805acd78df2cdb32428ceb8911c7f9b2c41e4a40f612a61441d4b253674e9e62d0fe45429a9c942c7d8169d3d84229b6818986ed0412202e6535e500f202096acc3805e8f06ca7bbc84febec8ba26d6beb914800c52c5bc1344ea11c99e7cede488e0013653aa1de85b61f908b8c6fd27f404854d3426a4a3dafddd3034e9c2e821aed1351d90256b52af7a6623e01f25ffcb2b0e008afd5bf3fd878003a82ba090e6597fadb207e60036b88f5852f545ae1d6d87a3b426da2711549bf063888f60a009d50189c0be6a95d579bf154d4ddff149b0f3aec5c06b5f1faaee04ec15147bc67d71211c3bb42b3fa974ad7fc20c76be4734454b9f497f333430a060217ac8c3eb6c34d704c115a7599560ef729a0babc3cefa9f920ac65942f51924230e62de8b007dd03b6b513eb9969cc61b9b5ee51330bd26034ebae53c53599d78c2a9bfe9047aee69bae9cdea280668717111edc14a116a1bff6db8a2b7a1bfafd4897f73cda32a49c17519b59fe5036a0a3fef6767b746de8e5bb781c15241b6cb20e4e28494c924c35c0105ed3c82e9ca6e10ccf38e342678eb56baa81725b40440ef65998c4c8249a700fc1520c8cc10ea5de87460dce4c90c5f2bff3fcfc09a0014ed4d167154c915285e22d21b76b191673a324cc02fea335f76f896a8266012ae9a924110dc85d078f480b0d48907aa8ada010de8ef41ef963546316f8b6c785e9cd5adc54e5551920f4ea1412b44e6de976743109e0fd0f25b9444b0ab71dcd565e000db87202f716a8b200d6ef00c82c908851bcee8545200eb9b2686e9ad43b7b2200953bd10f740c4f83b96e9b05dbd6836dd3f9e60f06246ee7e33a79cb5b2356a2ccf313ff35346dde44d1e2e6af38ed2f62c18cae861a75ec137b6af6395b1823a0e9035543ab5426145adbcacc0c43e7c319841f34711afee62548d38ab137d985e0638ce2aaf97284bb48af9f7fdc8506cc5e257bd752df9a4843ec17668604015595dc8743a80de286716d51f76d6d2422e5d2f3aea0c392652ba23a536ffc9a219f6d365b9ff995794aedbf202514b9310065b544c25ad4bc95e50a5c9bbdb7d6f1947c7bfb2f2e613d899736e2f351b72b3c5c45e070fd1d220ba6a3b1731ff048c84ea6bbd46a747716f273818ec6800a728da9dac3c30845205eec2eced2e40e1689cf69f1e1241d43250ff35e05b1665a9d68f45842ee5c8a39b76963e9678455888157e602f0979611aa3016abddccb75b4f9a9283986a2c292f2529c830a31e755bab9309867c35ac2936d66800b2416125cbbeafa5ea356fd6b7a43d61d7b0f0acc9f90742cff16ee60847e532d9b40aa39b9d3669030551228d8905bb7e0d168a6c2aeb8ecf49632506af29d6714a8605646f7dcabec8c4ada13ba1d8ed1d518eb713f43ac3e3f6c5be0a244aa1204112490ec62d587759e54c3ed086d8e9f16d785fc4b0634be4bfd7152c7ab0532df358e5e91ba0b5e1bcb1df62c114faf187532c65be2b2c042bcd0abea1a9716298a2b4fca17f5f188903939060a5445f166bdce4a2bfaa820aaaf83060a0cadc80406f32968ea00bd974b2f78181d8ae5445fb124042dd025edc384aea0ac15c916c7faf451cb8a384771ce54b3cd93f6b74112541f4ec6d8919d0ce25c690f7e8e3361f63a5b8cf49835a183db1574533b5d307451c86eb247ff9e0076e6193456c96bada5099adf2849fbedb9ecb42fe7bf09ad8d812b8d224673d7a8947c4b82600dc94d3c8d3ea259905028412c0c81a55f8778743fab072a5fb42b3a3342b08b181a0a888c450a031a096a6d738641caaa9aa683b862a88ba49a3e18a1e1418592d767bcf427f4b860882e3b0fd8a51f96a43672d95ac338623b431de9a38c0c1faf282ebacb2c544fc386131df77426a5ed97cc3ddd3b792c9d813a1567ccfda7b9029670b729e517eb5354dc05a1ea64a6dd2bc92cd6f41e831d72064ebf4b78279c64e325aa1606339efd864ae7b15084bdb48d5500e4ca4699a50089e4af7ac05f29b66ec0212d94c1784124df9dab132976655a6545c3cdaed64b42ecb454affdfde1246445ea0d2b50f948d952a94006e2b9150575926bca9cba4a8cf5a2c674dcaaf2b7d87f769facf59258c0be3972f3c8f1e7580e58e33a517fa5418cf2fb4c26f4449f59be724d4cf21b1ee10f2befde324e233898b70d7eb9d1736ba868bf7362b62b79897c8fc8dd3ac1ed1bbffc0d4beeca23e12a30d8472debd1a966d862eca1fcbead9761bdf0bcb875e83240e8184ae241e84c5769133c55ebbbbc4042e65aedd3ded230a729f4d48190602ab88a699322277cb45d156ba9266d96124def92512cbce94212b56b1ef5af266fa50a8808c3b96520fd5e9a1b073527da2ccec86fea6b2156b366a52dd6f40886ce35e74af00cd761f7c2ed91c312f0a9bcc92a5c5134307e58c01419d036b8a454b5417554b1dadc71915ccbd50ebbdf8c256665980ea6debb75fb023a2e6342430288d823613656d54eae943d2e9eb1085a6a07a27e3f960146f1d65a1c73fd413cceea46188d4b8665539a6f1c4b5f6adcd0b0a2eb23bb3220ced467878bca4f416885c9d43510e53270ed0a62f467cdf45a583463bff5f16e67ced02d7001ee784965410ba8f756b34142f2802f3fca343eb15c643115f4eb97040aea2e16ddd02a46ced68751869afd1edc68f7bd64d493612f052e1501a69c31955174635702cd14b5e3e9e9b719b05790234159b9619321735e22957fe77a53e20dfd3ff50e0a2b50491a51d01ebe1e96e65b3eac2dc17e48c59535395d2833239793dd9cd6706c621f324d0d819f40d1182d229e1f66b7e6c2510ca40bb797aed351d6642f1f9849c5ec38bb106c09ebaad22138bef88d740812f02451c45bf612c77658ceec08b5671873d8d9b9892e98888e30772d08ccea26801fc7c8294f372ee7f059942b6f8ff08034f0cf73fa79f795f3af578ae964aac11b045b44030d56a642e2f83e2f22937cf943bd0a0edcb27cf294a4541209b4ff67062bcee529cbbfe940d2c5e0d60b1a2bfef1fef04c629e68921f7b811072a2601c5739bb3f3033316f99718c0a1b7512971a4c9b4dcde25fcac05cd105e34a4a3b8f2ad5ec07f0c234d258f0b3bcee56a42cd241e615602cc25e222339a6251f5650c8af94f4486e9125c081b47b852aea0b8000747f54a3d45ab67d6f5e948def5c5619fd49d96af41bdbbd690aac39cc374b055e9da2fa967dee65b58bae16a94b10ac8c3f471f06a76e4160a9129af130e2669b3a999c018e513a748830252083f941a09662f7880d071b6586c6c0916601baa4379307b6c5e89664b9efb9fee4d0d21e6ea3c15248b7a2e704a690e595f607ed9da5f6138ee1acfa62c7e5b449a9debc13449a2be2d82b910bd1ec5718050b5fbb64003304a0a7d8562abb8751b167a2f503043826e46c216b8f0164af55a9ced57768dc2481817666b0ae04ef719e11fdb429463281ff71f20809bde9e1c70f5912d3c3a6f0e04b8d3f7b839b285347cf9869a8db0418412a9cbb829cfd34fe3bfc70b15f527f88ce53c175c649c5817aea0abc39fc9bb3afc81ccc789727994a845a8df18da3ff940823bc02247b7f0b267b150253d58437acf6208bbb4e8f0a63b0bc3f000cfe579c8ba2a401988bb062059462df7898252a4176e446ad146a00b1e65552dc21b68ee9792b50507c0b305550ba209cfaf67c61e629897a76ef1f76a99d2abc63fa27532034961d4b318ae41c4c40ef75016061c16124b319c5f615899066845892c7c68cd01b249c4c6206027c07c56633d2d520e8ba16618abdd72b7c4ac1cc8ce514886d302c402b373f8a05f1600b96dc60ea3d19f1977f83035a678b6ac15ddaae46bc2b4c3d7faee08f715b2dd786809e2977ef9ecedb2d8493247133b307fc8f0c31c407f46c1c3b9e721ccfd0a2589682eeab15427aa225079cb2c6f3be734d81d4c39de49b0c980ba1b082af738a3c0a229cfa82dfd077ce2e4eb3bf99dd61de6608d4c1006cdc23dec42c19bbbac29e527ad82031808ccc7519b1269c11b0d8ec6f345c6e0ebd83bee263ff7ce6f936e088cc491b7ee4a724f9843bc6b75bebf538146d60b526fb494af3eec597ada63cff41fdee79020580a90879e0acacfbb0519326df80cee87b665671b35390b859e9b9ef68f8a9d3e2d76d4c40ad8b33d7ca11fa41f646334948f60a006a6ad92d7092bcb00219f0fc165500328470c21ad2d7d9f5af8a2b974f73a29cb343e04c56fa06e17b5db2bc873346bcc55631104b791e47616dc7278d4d294de18f3618bee35519ae1007729b90696d42efe9369d0721e57be310c13b65edb120852def9c701bebfd640ee1b2740ff4514d73ad7096e325e582ab130447043d629b0a74c4d4ac673d0a69d632949b8ec0503cdb6c0bda1707ffc34b3cd58ea61de8f107f4eaa1eb8c8b8ec62bdbfcb8318f46533893194957846870c39c141f30b024f3ba2f960998497daf7848a5b0c46479bf0df128bfca28dd021510da61cc20e62ca20cd3e8484b70c8cc0860d16607f4929bc90b34375c146360c34d3474da1481a8ee89e894be05a21a6d6cf96d7dc4c0814b63e7053e7716f5b236e00bb7f1252ff39c4541416452bf3f348e97ca9acd7b23da81d2b6ab8208d83f7904d633eace74736e39b6b8fa11925a014bbad723f68be406e9219ee8c5549e49886ec97902125eb45d9ff8bb1858f1e32d591e06bb30e9be9d991bef84b5da7c2f0dda7c3638f0c06c058fa0f6aff629b14fa16ba5f43d448dd129acb73df9de9f4535eae6151492bd2ceb9541d61b38677b640801a5f35d01719fc1020b62be482ca1cc14f678bb1c306ab2225119484f70577068bf0540a24fc7d566dc2acc12c4d17e0865c32e9c5b2101417dd001142be9293849343271a0a935cfabc7e9a198760b244b1a5d22f62870ab55e1625c4d4f5d971b249c6636b540e61da5449d56f4a7aac4cd3f718463cd8e146368f4b0c610f9e7adadd50e037646915c092a49ed6e7e99d616239c7cbbefe9b0fd86a83285de6191f570dfaa28d1677035a0ab7ab06b8f1ced7e5e1eaa3bec85a6c90d5badce63cc376bf6adab2be6a90a15548b8339b4d0d4f55856002678c7e34ffb4d2fda5230ac29c4d0da5c2b9925f1434290b29b1166f1bdeac080cfda9a1d0cccacb72d28652de2b45aa2dad914af699e04f910c15c62afaa135ad7681dc32d9a5ed36e87f1f5248425103943a7fe0ecaaf0935c637470a3c83f19334346341519673f43917975cf4a8d280a210568875fc11d48445183ab854a9497a5fafb676c9c782d6044a0e8ae8590b405237a62d01a3f82c5d1c7120214370e1428e47c6c053107ba3e90c525b0186d7c0fcf300185e3f59bf52d1433bf68c0740c87430bee27741cc5230f20811407a0e5eb3fb51a7b686eddea7dac1f377015547ca32811b801448e7f5dda86687e3fbd4c7f5932fcb01fd504719eae4f1438bc26397fb00952818dc0cfd9042960f68acc373cf5d07698a41e8a11ddce41db22b3813429ac45666c3f14499084a3e74bf45224b1ae0d8b2a017932cf39ee0317ff565645bdbe1e15a0a5750971a0ce579b3d464caafbcf62160362ad11be0f6e2f53b9caedc553852e7b796097b62f6bebc04df18c3e861c2f58d833ee6b231447da75c1218ac6acc57e5315da05b409053b3f5c862370ad41b491180e80122fa95b53c17e7166386aae53cb47af84be1a66ccdb75ea8dbef2a9b1f7c21154d533f0395861cc4d70b9eba8a29401ab36a3e8d35dbc323535a3ba65e3ba261c41cb0005be51c38319eea81f9bcfd03a3809094faa83f7e63d1c41e35b07d61c96c1ded26cd2aef0460904e5dc1be9dae7e743d8f331d30af0dc2c29b33c459c44308ab9396432f95aa88dfda1f060a29ab9088467c137491bbd6939d8282aef0bf1196ab50bf1ba3365727679ab3695681005cff79a042ec307affb3ae8a080cb0f55c947b60a2f487508228502ae02137d7ba0cd95d59fee545baafab21e358472182fc910761a89766b1749ec8869a5c0a0f19769d7395341923cb5bc309c7c39a5e47a5b47c58e89dc6de0ad87164146960c67c02a595992b88527d58d4a20e543ba93c55c72f2afdbede53439038071dc2b0f51dd950a69384502f4bdff0fcf8f8565063947b0b5d25e7ed80a6ecea19c44070f9835b2638ec69070e71850031d1563946b05a3a7241560ad077c027ddb839defb8d4f1807a109af6644a08249c743c55c0fc3f5f8bc15f1e3d9652924c0f0c5a96282f7fd96e148628a464d96755252e4eb96d25722a3c96f0ef91df829acfd329894f03fa93a78aa6b98396278c224b7a00fdc9a2a6f8cbbb6fcc073bf2ef8bf8a92b92477ef7dfb41b363a01f974ac66b39f565f16747979c72047c92db19623465935508bb91644dab2600dda8f9f86a01d4c57aa1035e08c390315d3e4b25e6f1ec8e8fa3bbffdc3a29bbace2e76ddf1fe86931d7d84f0389079b2358dd339d39093194443ad68ff0a148e65385c1b3e8a66f4eadd674cd829858f844149a32ab34f0f804e9e532fdec5edf048914baf9cd5c601bc7555f9c9f08bcf75d5b2b0a85f768eccf5d814e62829bd0bc649e35e19d58068881c91903e9f6497d4f46870c0477ae41a7e41d4f89ab401be63f884e4bd40a6a827992697f4fb8d854da2c03b7a0d86860c3de281804af1aa754204f809709480a8810054006a457ac1b799d7e70576bbd266808b7e7721108b845ed76c3b66da363d74da554a837ac9147584760a92a64854ad8669254180bc8c787d06b17d8658fa98be0032f3e59eb62fa197701fa1285268151c6230a705478d3a6abf73fe2b57f69961a1682921f9894b43107e45b6f0081b45b2ec916719d16a39e5f7498596a99e70340571ce2595638c4b307c232902f8699b86bb7de14582a38e741e2afb1a4c48f40225a2465c76f2bdcb0792bc89d0b67f77e62c90009036ab76590abda21fc8a73b8883477bbb2624861c0ce0f0fcb803412e92af611154921e3b40f6f30e902173d3bf15bfde645fb57ead019d1c88f0c488412fc1e3067f134abbac241e98f08cb8f7f7e7a8db9d35ddbee3e8a00443656cf189c65946ff34ea5fedcac0e27e338382117cd3f84dac8ae35af735ea4a8749b9b92a6fd5d262fff7b13e2f4abef868e8267df182d3370824dbc088da43702eaf829a53f1439076a909b65974ebbeb19e6714ae166c43fa7152b41443065d1dfbc34fd18afa7d55080c389c61c055222dbc24b0677ad54869b5f1d16663864e3ef27a4d95e6ad81635090dc7bc1cc972fa3a898c1a626773636e3abe88cc627f000f6ed4949ae62a28f99739bd1db6f2adbe4eda373b46dab511ac061da807e968e6d24ed8927a17a3dbf1d8a3ec34be3dfd118809c2b8fa44e3ff0e3d24e6f6dd37fa59d8eb8e959ca77011e50a8cddf562dcfa7757346471d7a34c38722ac11f24999b6bc97c07cb5c6c27e715cf954464183fe7c65edb3e8e8f732c19c6a103c01c697f22bdd1ff2b3a379e9d8618dedcb776ecce09f079cc725466f1a76aa27a35239a60705264031073a97682ab96ab47bbbf3173c7f90e650b86e562fe22025af0ee1d5301bb591278dd83a22cb132b2163e71724a0d487af64fde73861fc0083d348538464b2b9861838f11d703c232d71a38020068e834f262f1097259aef798aff780a9dbd5891adccf0519bc64842f5ebe52884b73b48a24b82c1361834e758e5e8a9e6db4799c25de00cc081ddd0492c40e18eb2224607972db402453aac6d0634d68f400cb363633f6f96dbe60fb9855ce37432ebc0ba27228bdaf5af2a94198a5846c49cf1ca19282b50a34725233e882240cf468c74c894214f066c551a3b1c60e968d6a898d88adf33cd6e6af082e31e3a55af1cfbbb3ab55044e209d45c95781ae35e2b9017c9a1740b8eb8b76d84e308a2f8c5ebc4e11cc886280b64517bd59f8c23670c991a026388867ea434c24690c42dcc7d419a1b107b4fd2c9765822d23fcb73fd8ac9b7a0387e44129b1521330099300b4bcb8265e78f646e035ce9b6813d10d01a0dfb7e5ce600e2702b2f6fd1a58bb46bd763b3ed3abec1359e5d0c00d91689163c12782b116c5fbd480fc62b1f53092ea4b22611f891dd824a80413e233ff8d80e8af433b591cc91f62b087a30c3e65677fa267a6c05df7ffe0b154cc8572c04ce75eb238d7199c2b2cd622f0ea3483c9bd5af991c95722890d3ed3cbaa5a5f1034b084069f515f16cc15fcf28199751e6c90b506392c3006bad55afc992414089c4892d7b05290d0c3002fe818f9308041d8ac8adf2718a00a3ed09581b286aa0be1c3c62e6d621694c3768a6506e9b86ac4414a816f4e8f7c3e24f4bfbda4a41973a2a7627bdf83d29718d269fcbf6997c5fed9efbe41e8552dca19459f501461430b447c48f3958d7bcbd1a85141a95e43c9910daa6968c106c9c0f58cf5d8707bdcd27ac44268d8ee3492b6539312f8a6e9cdf09b078968181990402e8cc1b281ae9a05b4edd04806217c796115bbedac27b27dcdd267ac6b2f1207ff77bf3ec72792e1737e29dc7580fcd0a38e3623a8e899e00648168ed5ddf1f7a2289b823ae0c866cfa983d0f867a08a2716a31cd89fd79d90d59e49e194f31a38442299ed85084ca8575a66998a8b6dc7bccf08c83b74108407c16bcbc334450d173e8fa7f44bf20ea44b53521ba4bbeb3770e727c939f060e88175793bf39588397b371095fd7ea8c76ba3ebb7458b6d939f30a6f65340654748cb18873dfd93aedd29bfa8902399da6a397e1021852549d8813c68916d9556c72545dc7b9a202a24b3fae793f3b3ec5245a465ae1138cea558ef02ed1004f1b51894fa9e0c564bc1d1e475925256b5fa0df95438e3c4f426a47a929698b07aa45c232d987a3dd8a7623cabc0f244816ba699c0425f1b5d04de2f02b4661c243a5efcca84f74d7716a74bd0d42bdddac5d470fcaf10aa692cf581a021d105b786ddb5ee48c50ddd3d9ac839b1f14efefc4acdde1b1d4919ed7d072e9a73a1021740bb288954110bac940981eb8134e8f3ed24a9b719204282b951c12cdbf917c373edfb7379b2b7da724c140996290439452731aa751054be4398e544bceb71baff74327cf5cb8ec0ef5616c5d3e7df04d71169e3504e5b6f211123d304255ede09d58d3d6b602b828e7af6d95dc61286caa3d57278bf95f56f4bc532ebdabef4a05f345c73c65475d41638b90c3d12d87d0224e77b79a3806ad2110a3e346508be9837cd23f93a54a3a6e4037d69c032ac87168f1a1bc0c0a3b13725b5221f617b40dba0e1ac7b25f252de9318bbfd52276fe310f8ef115e31ce3f9195f0f19240998f7c53f51ce3136ba66657a6bfa603b47a091116e62384c3739941b61600d50d8947167fd7fe7db9586ef28546c29c7b63824beee8f3bb023ae3e2a510e05748b3eff52c0d713b7421f6761f297cb2190b0d9a90499b97b9cc9a9a05b71991a4af4d15c44e4d60ba44d5008d3641220676f2dead3a880dc7f276c761a7e9cb62b3ac793ae1829f90d5e478188cea38640d752b369d05fccb61b3b0b1b1da90dc396f75b0975e91780433999925ec0dfc6026453ad23f22a06ad0d1d25dc129bdb13532f45bd91297e16f1ad16a272b1d0f4dc4cb19fc6207ec5d6c3400be5b068911a361131dc7c3b0b5f696791cc9034fb33a9c55af07d4b0e93d85933896daf1636e07f38f78b125eb30fc2c6b439f82a2e06a3982205bb47eb8dbd3ca16f001d9309cec3daeb118b57085c312f3f98d2118ff4081b789cd3c93090c8cba71ebdbd5d6e577ae16e04290c7f10968515322a10d415362e50b1567cba937c266a3b59585a6b68c34ff2b66f0756cd151f6988c4c6e94a658a91c28d14ab32c17841614d4d740bcb82722ffc75e624fa85d0023b50d84d342700b0ded6ac1d3d0fba4328d9a95631b1bbfb25d4ec0722303470c9fe0649df43ee8aef2ed120bcbf7ba064c36c67e902988503db86b6a72edba92db4ab86d0b5ec5e319adac29691957142a61fd35edcdf4dc33947663bfcf9fcc21a1ec6b2725512aac1c36c619ee92d77056664b362b660ed8ca7cfadd14d5a668beab244199dc084c9534434492a63a7afc6fcd6c28e38b602a9df466f8bf4c11a28f24d9173af66b96753e4752720c34562ae6678e3f901c5ea68ecb1ca2b15faf00bc6283f69f7ff2f98e74020df7498e01fa095b7de72fd34922d44d44b34e7e834212ed0ace931f324b4f1afb3353061fcd14272a6b7ba55c7187d38cadc7902b1065c432be9d56066c1fa583b9c82340fc7934d919e2a84fe48c7a4c3f951762788984e046dbb7380054727b5a14595f588848e3dde60dfa60c38957dc3e47d4775c1f7d2bb40ccec2c7eeb4aef174742057a926d54cd618c52f4903f1963c85ef355f46e06547600580afd43312cd3bc6430bb3104165700ab1cbf6399d684c192a4828d167b29dfe8aa525bc58e066322dc63ab98bb634e32805a077753315e0471b89662351b01519b6d707e1deef645773488c61d090f2f2713b16976eb24ff8f3c5ade91167969b35f63c8cf33c591bf6493403b35c5aca341e1446eb2ab6ab69d0d5ac43457247b5673834a18fd2aaf5d54d596aa779b61d2ea3e389ca8b0c6a04ae09ed0a764ef6818dabec60002a5fd94c789d84f4e4a681313865a8a6e0804908ae9de575d5fff78cf73dc6a28ce9eb8b18efc3f50d3055f3f8a5b48bf36b8c8a380c664815070fda66ff6d763105403c2367c263917ac1794a88ff26082bf99a36a4cc93803514050b640a3d48df967872911110d5ac64fbcc4fe43e69d4c6bab60d244ae8b6f3d3b952f7b57c074cd8a4729ef94005a8202b1439754a7669ec369a30eedf223c30485925db4cea0e59c4bcc64baaad972d91c808b94e96444b7c004cf00cb3f2cbd3eb5ce0e60b569c070579e995249520fd08201ec8138a06ef6bae7212c1fc3b8a7ab99f943c0b71756487440f134873bb49d71efc9d6a845995c064ad7bc9ce1bc6337458fd27db33900c6d60cb21f30e215b7965b9fe0660ad4da63964cc35f8e3d855220a15b5d4a2bf7d1621569374c42fa1a3796bd4cbb5d18fa2a0dd6f3ec96c037d4d2175f47413339a321e7b7310a95d99e398409553d294cce0b0ddbd4cba6a85e07cc63afad1c2c6b7af8bd6f812dc3749ba3e2dc1182b88272214d0424819a454a13775cced23b23b1168f1be8b45a6004fdddb1a395daa12406ce417a01dd3c457b8edf2f56f28a025aa27b1e22e8178b73bde625e002df65641f02c48fb8000f4cf7c717abe19a4f6930bc09428c119e5c456aaf60d820eaa29b646cd9d5b3cd1d6e7670a78be24a837bb053eef4f4f495ab0cf3cddf5ecb921ea18438ba5376afb12f189daf346f0b4f48a039e4084b0f4c352596405d21558c37e155fff3fe3e230228282a80d00f4de61cecdd380fa50daf1c377838663d95b22ddb04d4e319207521903d18504b19f43e4dbcb786c8f745276457d62469214d08dadd32efe2313fa15640f8bc592525744673c091be161f79ab46510b91066c7bf0be84b6bff3bc6cc7bd8dac4453b5103b485fe7ccccf8fb979f402241a6503df5a5aa3ead1efdd6ca1e7d76cdfccd76e142c88ac06fe4968ca74eae1294615532f8f5736b576433a40bec83f6ed59bef275982e64e8e4d56b93e43f57038576d3e6800ad4d89d1b2da01e018a396da0277958777fae4f9574f6626f58046334fdf8be53363ab37ac213e424f2edc3d3b307c078c599b8f55ce97225fb1d5b4498edefbbb057b292720dbbfc81466ba0559288e81e080d05105a142cd75ae94cb09972938ca07343e97b7d440d8148816955b7aa8a12b81882497eb4ae2624338b1f15e6257f9d509743fa4ded47e1ca62890356667e55cc81d9a8477374672d21c2a48a37d2fe18a035dbddc1a7e7e80754cd8170170f9f6356a951f8cb18cf1b7e01209b3e0ca8df8e9e692a257a09a32242e6f481621cd7771de6c4541b84a189d8ffcc1cf70997b6c4c196345cf3bf00033ed8a608c4d0530e31a34770de42fa8b2d5a8d7315e9a18cc3b93a2fd03420dbf55e2d69c8844aad8bd3a39722371ecb659d0c78515f3ae25c0dd835b40fbc4464e76a383904206fa920197c7082a31c7f73ae4ea31824e19cabc01e6f748502c7b97add59c3668066ddcfa0c040cf97999c524aa472c44c6db1d5eda35120eaebfdcbb89e56247622d3e43a02665e7d25a97f329db2e3d3f7c1cc4f0c6989cde445c5d11b8dc4d9fa001935a968e6167e8929637d7994689ab582312f3259952a84e5745bd88b132ca054e29189284913d0958884819f66926428954ad085c1484831f9a8b08a23a362902ad6d43d628b8e40e78415474656e1e31b1cbeac0ae36ba2f8ccce5008e0444e18f51d8052ad7934e930f6a9064a231ff5fe31f2230447db7058cd38ca3f592181e2b4dc6f46f0c3077f484e1a3ec85418c9ba9b3958053c2f4b3966f926938091a17f52ff9786e92fd31fefc07388284756fba40defb58408220b8c8e03db079ddbdaf5ae34951fb54f3e36fd8c0480a19ae98276e4b1989d1b9897fe2cf2177a16df3d69585418fa76cb6e9afea5375af97bf58945375ae597809efce1eccb361bbeedde753211ebb4df04d7b518dff33845ef9d18c9e99158f1b5b8cac2c0aa145a21451ee1b684c4186c2b5208b8ac19842451701a305a0bc42e308e830d52c02c66b635e599a45885df73a94d3451140f7128f021d88290122474273110945dcb5142102375274134338d387abeaf1c4006401f910ac5d64fd49ce6efc876bac704bc3e142142d777833cbadd316accc45cb1d471da843594075cdd5d89b5b2383083d4003e9ee48bdf8bd35aed245f2c560ba0943ebc4e722a7a3c5202a4f76fa96253503e7fd53afa9425bd21b4ce9af3d4330ece2188c8652d528ed87637bf07c96ce3875df7070f40977868d940f786c853c8c0ac31f00534cfb443583edda10eb27eb5998652c454bd68e612748918d180549a49ece7562e120bb79699d69bd0c5c62abbb59be5543e1b2fa6711f5dc96d9885e2138965a811848a4524765b35726df8004d43c7c616cb86241b054494e236421efd9d73b96b617fef9435f15411e147dd0613dc924265c97833a7bed328705a80222c91bdb462de90f469e22713937e8076b4f03a7ce01911c3f89deda7de1f3048a98b94070ae3f58e9fe0d57eeae9785bfd24e1a9ab9163f7086af67de52d6f1673820e32e5e7d1c93dfd36f626e4d1855d7fc491687f629ebac012ccc14961022ffa5af5d8745ff4b6ce7093ab7241adba635fe9b2dae798a9d86c84dfa2f3a694783d12c72230d6b25e9cc25b6612470b01cce79badddffaaac21c37390d49bd0e2a24c15c97506edfffdcfe9ff54bfeff9ab3d3a86e47d5398779ce4ea2bed3375daba5b94bc57a8738f6ba3577b2b6270cc4a479270720d49e7469d3d99cde0487b730185ffd052c66631d76b69faa94ddb41c2f0cecd313dc068570417647e56d21f730f302508697e509b2b04270dfc570e86fa45da36451885736afbfe13baf133112453149ce8db7dfb26aff31aa73e1e72f0f1a34bbec4de065fa1bed2864424b3a68120824e84024e51f4c425bbd0c9a88b70366033d5594032e3538df4bcc21e9b651d7694c97cfe903cf50405220205f85f27fdc18f88375643958b4e44328503203690251b54ecaa6c34a22fcf620fd3428e2346e0ed9d07f33313ebec8d79aeb034e920ab88d4c0b89325b398b995f375007af918542b8606333b13079e639df3a2cf9caca203c8d9a1e6234e490d3b12ec0aa77561a07964e426dd5ae8928a7666d8209d1c6381a947c48209d7b511b40fb35c09945b38b4397c19b7cf10c8df02c906c25a17aabfb27e922a61a1b421819053cb2b3f8a4e5aeb77f8ca09c0f40be9812701fb0860521707bf4ea515a807e28248af3eb69c87d2aa6522fcb7f6a04db2f96e4cbfa2ed0069ff367cf00a5fce1e82d36e9ea11cf6c8f1a0f31ba4a4a0c1d93aef081bda718bdae658f760c6696e24c7b78bd04e40265100b4a624955b2c255e60c420ca2a0dbae2952b7ed43fca81667fc52ecb9a9a442bf0a170935855c80e13fab1c8d13538a98499f592522facc011fd96fb4435121f6103ef127828f18774c094588da9565dd54807febf4a7e947b672fe5cd48eb5f8b7cdfad09206228b155aa8378a1fed08e70b1db74109509b497e3382323525444e68b03716793290f26de20f2bf2732dfb4a82e64b5c8c63156c65e648a13cfc83625b4d7402f510e8a6e0dc27b06fc3835ba6639d861a0f5af20057ca19fc3eefb9cca7c27f1e4c35c1d050377e07a15d9440834065d5190bb856d5ad012723cfe970edb63f50d903df39b8879d7acc7e4260cd0e24b0b22f2b1690c68c784c31806da43c5712e8ddf195d452e8b23c034d38abadd3981bcb70704308662f94ad7fe5ea08a3c3a141c47e78289c34a9b45a100b0159791402526648fd4a7a725648ca34970e7a542e47cba45f4752c8a4b1ea84528db9c0873f6b19d1f3b802ce15ac4ca3a7e7e0324f38510c8a1e237f2689132ee2d73189b1b27c2c7ae7de8ae88564dfa0a4b7c907a2db0048ad5f73247c8d26d040803e0bbf503cd794574fff9520b2a7728767e651fa193dcc39ce11e6e7501e8f9731f82beb3920673e7a37adc00329ed80e5265270617a31600bc94082a9e3ca41130de73553250bd010c90accd046ab2b9cb3af66f51213c20295f7a846b2059f03748b074343cd6a62d085e012482d25b2a1e2121f8a6c95b43211447e98cf280bf90a22d014b71b724b17b0d1311dbe8f0cea943e6f7efd5582a6d174553772b6be7b3fec0a5932559662598549056d9b553c781adb435bb0f3775dcf55f624b800b8434583cdc4c8dca405786d244391eb45fcbe40297c0622029c70bcf61e9af8614402e2d8ac4035bf20fee9cf7e60943e8d8f1b104e55ab6189ebd92932b63905375bdb65c5a281eafd5625657ca537ef43db873bb832dc371249599f477b992007ef217a4b7be72e0bb312494c8800cdc69a6776303e2cf14e91e654599c4b024461c97a2b86e860bcafcaac54b02f479fdb7310e5b8dcae4700c9168a4abbd9d21b9d846022d7bc7520111ce002d5887084a6ea75d875d31d7753a3b9a8df7c569d6d696c069699bb1c919c6401a5e73539145437f4d7c9e6a5c179ceb6bf003b0fb2bf0b289fa891cfd56203f644bd6453e48a0e474dac3970f20aad8d0bf8a4cbdd17706da3be8370d7c6702196d81b9145e9bd29b59216b141371f17e67ff01d84f7b20542970bd7199954c8622857bc13f6d77b4b45fe3029ff7fe86cb94fe09919ecf45daf99e979ff642160f8a72a6eda0a40145472ae0d0a35c41cc80f1408a0a28ea644a1d95b37eb88d669f36f7bb3fe60cae80f8150c9c892cfdc9387e4cd8f76a5422ceab6749fcf806d661b920d94634938310c71a98d8c82859bd9156f93ed68c288f76d12b15682b05fe14ae4a5b2f8f0085504f5c98b8d225fa3eb3b26f418d983b62b82e1822f9ecbd42501fca38b0f0a269beb761178a2da9de5e5e1307628c4d159ba445e9f978bed1c039cd3566ef62c9496a6aa6a6e35f71ee99724c74ed5e6cb0811b0891ed9749c01f2ea9f2aaf2787ba8cfd95585ba99ccae6c4923b206c584c8c9e436b87187ee82cb2b4f02135b2426ae61de91dbc2e9096b16cb13ce092556e1e94a9ff16fd25cf40ebb6c03e754ef6c1d9a6738462b73e219235e1aa02636e8f2d4c89fa878801c6a479357ba44021db80ac242fbcdd505a42416aea8f9fbdedb991586bc0bc32057cd0733a27a9f3437d15df0448e20f7fbe039476bf6944610fffcc8cb492ad3eb84e947e5d8636b2b12d80eb2a1fc334f4967a659e0b10067d39d20cd0bcde229c19f8d57eb6de142c732112dd17fc2081ec7f698f4ec827b84fc2ebbc7269514f5c90c75a4afa4fabc499fd1f1e99caa19e721f5384b05f895a6f271113421a942950b6c102d2af060ca1f55ca1dd821c37735ad77934888152798cfaba1350f2b2a9c54b480b54fc4bdd638a12da2220997b277ced863d294a29084d77da3ae31479df3ce2c3af3ec9be9068c3eb5be25763f674c0a9eb5024b0dc6e4de53aa4418eb785e21f43202cf8f2a014d79ffb545f5c383f89c2ff50715ac19f62a61d2f7d1b8a69c4f616b3829bb1c7e9019f9acdf91766f5f94b7e5e1787205eccacf19ad5df8cecfb00d99c29fd7b5ed211506bebf0fe2f6ba266b81858f68152aaf529d628af89addcbb0ff7642577d1ed33523a72092c1300a993d3ad96ebb73b302690fb1e2bfe3ac0937392f3cc9c4b8cd35cd6c201c26ef6d7540a186969a33d8493714eeb19989023579a420d05a83eb8c197ae1fd1233fd09cdc67a011b736ee8601a631508c7148c2602db4cdc9ebd174137578b4c677f8b70f73eb45c73710cebb16a8debaf36c1bfbdcc727c25104ebb4de81f3a1ef35bb577bf4ac8838963b9f54367d850873f464df765dee75e0fca484f00425b3cb43adb24fb55712df5e2897bab9f6e8909dc5833d5b0e4667b976468c046d694cbbd68d1f7286599f7ce86073cded9901803a1c0bf99d052cbccb5adf10202785690fb4d30166add2373e67e2de16c6a4d77fb9504c0a1ce40240de141ba85c0677d02e2704c38dd3ded65382b8cdcd5bfccadc385e415d698d63cfdf21298a34d50f68f58ab5d51bc973ebe1a9a68bb02405a29d072df85addaa306cde0fd91d78974173ec2992417b808f6c22bb7028d95452fea6c21d9b42c8a3ae3aa32e05887e0137d678bbd5bd38f424930d1c190e11d603d30c5d0e83d17c2a5cff991a5b45f7c37843f1701c65c52edaacb1e0e0f9da55f406bfd17912684d6b6249731e66f307ca45991d4cc8a539c90b762fad0176e45273817413d931f0c701e3d72b600247e40a3d48271343f2065962a1791253960a6ef422b39d7e1347676e33ccc704d615696896e44b6579e2178f3d5f85a6146a9d6edc021a3819b4d7e94dfcb36c0f08d27ec0cf5490eb2c3f7d018aa3a902ecaf5cbf790f4fae7d1c0da09dbbd9c6df097640de794a4a4c9c944309103f63643e098ca4b8da67d0f53ea8a748dc068281898d1d40c7a00ef6df00913847b469a8175b147817803c43865b2cbda02f6f83fad76d83e134bd2571975a1e8da84f9188e98f70bddfa7f73530fb75cbf99e2c1431c43089d8418a09629e2913cef2327399cf768185f31281f80e61064698cb5521259bd6444865d816ea56c183c90f4b52303a8d3b14ec735961702614a395bd8749b152e9b9aa6c3dea7d583c107841a281d900c6fc5f7f40b8bf880365910460a3695d4eb4c50988447108e8fa17019802f1af8977d947440fad0bac10b4cd00dbb96ffc5e9b04bdca3c4f3951b7f46dc33ffcf60bc6a9b5237728ad6335cff3181cde25187d4a9e5d443067e2bf6fca07d0ccc5042cb7a833fd35ede3419b21b24eb0a613d67c14a636e855062d70660a5e2e11dd688868ae5035700af8d2788d2c83a6f6e486922c7d33c79960581606b3a360b56f5808d800dee8888aa5e120edd7ba1662bc0bee5774dfacbd5979ab5428b8b926c51eb1cd5bd19937dee664816911bbdd5c7f60ef74f983ae9bbd4911420b3471e57d8d93993087f1fd0461bb96635df72900c48f02581267c79624be85e23bc00c76ae852a40ec638d2d829fac268afc431c76ae841227da8648ecb35edce7bd6ae453d7883a01d6e7671b4071cfa81ee3dc2e492786ecc5d8fec4b6c88d55bd5956cd15501085da62c6b2473e88aaef8a0754b9b5f545a6a6991624da86098f794e1235f8bbe610f8193602da39d259b42b21f4168b9509f65ef86ef4f0f418c4432e32997c3dc7b848ae1921123ba01853b30f0487237e9e3635b10422c153d884e66ad2c934155041adc278c4effc1c4eaf998694a23c6151953eae867b774fbca331dac80989406699e2c68eab6a2b9ef7d4907606ee61ab8162be468d87961c9014f43ba514ef76fe92315903453ff6e28a7fdb1258860f668eb85b6c2f7dbc0756eedfa8e3ea322894754cb31c5efa8027d62048bac62260cd865c82638007a36e66c28ec48af785ac55f7c81c018178351f27b04867e87b79f16e9f3d5c8d66f183cbf08540216ce94ad8a655caffea55a93343ecba8e77bae695a014257ebd0e4451aeaf2e83b26d7db425c601fcbae187ad9512664f127620da0778b4c4bd96f7784116940052d8680649d10ceac181e1e76191b610ea2773eaf0f5da640f5d10b2c243653dbf1026cbde2be59654f46144ec1ae3057c904824ebbf838969d63e99db2984e917ee65c15615c610c5e7f912374bbf1b5186d36d7e920e44acdf99aef892f41f6cb12893717202ae9876e7b01dab636ad5e5ab13858bb0686f08873bbe958b702fffa66a239e5adb5be8ed254bd20de166d3368868215ce297310426ddef84a2875c8432d28b70e2be3608c7081e056bb0c657d7840196391e77e57bffd44991d22c03f6c8f54d4c3ff849f2ddaa16aa50de9417c7b51dccd6852cd5cc57be454540d853f60512555d7d8264490d80e11ae9da61826a1b3a05a0f9dc59ec76a4778dac5d924a00a062570964a6bae2d92301f46d460d970c85692593e59838d7b089860a8b1d2c6f0ef8ebe2ea0f74f4e34ef35fa32436878b6e5f0ad6939d90f3760e7e51a4abe50ddc086751fd2676fee3689b35e159f6d97f0e20b5ff1d90bf0bd580ee5087b187cd908e71f0481bc34de8923bf76fd0c7f4da1564b58ab3d0cb04421920acdcc45685ed2dc87fb54f57d2f9580842b47814c3b25189b52fd6875feafb8c96a0e205f57a8b87d138753b95d4484cfd1a1cb183346417e5e1344b767de53c39ab1d5980e3e36e4158e8239697b45c2264101c41fe9e003811bce93616c25c1935a850524115fc427681ad0dacabb068f6d33e1fb0b2fceffb6be41ce52cbb0462864e445213db38208352c88400738f433d2017e328ac5db968cf8dac4d5dd45967e9d150feaa53e9d077f81b7d3ca282460fcd5a205cca4eb7504a61bc2add85c491753fa412fb069ae7a5572c5d9b349b5a2301a27d3a27266ebcfdab661b252d7d331858a5098593c0c8ab84153da9e7cda227c1b1bc91f44a4e1307d985460944c1d83b00120d164f66063e57455206a04f345b79780e4fb7655ae098b2ab36d04e75aebf7ee808c163847e36f58c6df4b5cfc11f53ae881f2c3d7c0d2adfbe10439630c54cae7024b913e04702345779ca3104613165e8db555a7febbbcdd262cefd0bf1289e5f8d8f75706a87e65bb4594f1fd399a2f1f1d4333be92dad4c1af9cc56d3996be5f22b74779ebafe4617dfe9590173627ed6fa5bada40c14994f9f95c0796840af352c6dcb24abe0ce4d28ee7e9d28019fe1b4197981c41267a06f9a88bfd45f854792dd752921b5c5b071ddb36b644d5f14f0a359749a1d5e844da50f536361be05827898282ddb5916835faab3f286539cd2a8b93db4fd5253b1255d11543948093acceefddf6d68715892747a201a025ce8d444167379a8f449b53a76682ea4e121612ccdafb61c1ff186c24ba7f78cbfcbca5eeb09c4ecc128621155d40071139ec7912ca0fc912faa92387e4352ec75d2e6745f51017673c7a2d27db2b66736afd610fbbd723d9ae3f149e756b539075f665e396c92d0cdd821ad0e1aba4b8d2803295a9a550e3cd498c5ec1e5512286d1a329cbd1bca155964ee1471a05522a5d4b36d60dd218f70417d53774142efb435ecf0b422376ecec29dcd53dfa612b30ce45005a9f160847651a50e947a5476dbf0db5f25c6122fa3e07ffe25787abb11e8a0cf2d29ec6de3bd7e1a550db17723a5d5cc2cc4cb646c70d8c22a4f5804561f2237b23c263e7415194fcd846fad0242fc38a02bd5f8d3d43cc593076a01a4cf30d2cca5f94f74efdfafe87a4545409d23af5e6f07b82e001e6a26bc37756faf4771c1268f5e9f8f2bae476ed1a41fe82fa2d5268c72782457fad1d20e74c0357240792279c1d12f0c8287ee082caf82c549eb239c36b28b416dc51b55ab45991fbd9ec22b9e61954a7fb03043dbda0b43892bdf0d4411963e250db5076b7e91e11a865df60db2b578f1e713a6c2917a2d9655a33cc1b869541b679c8f992902be59393bc1a0e78256d8d5f229837e16f2a721d070c697dde72eb046401b20b9522a5869b3e1e1ad836d1a70bf99acbc65d60c8158af150400fba96bdb8a36280952168c2e0d9ebae53cd5fcaba57fa535296a26ec5472fb3b0e0de3e62b5e87e88367e36517e681282aab8f0c4fa8bcbecaf66809506109890f9140f88519b92391a1cb1db53496dcfa80a25b61bf332abfb1d5b3520db55f6c98071bd81887fd7823a4da86a0db1a553dc35a07ad768c188d83f36707bef251a0e0eaeb9826603db4ad33f162883928680ffbfc6412ce3d524876f943624fc8082dc4fa8bae080522b1175da096390fac48892f2a6bd0c312a15f398fbac54089e350dd32ed47f6681bf83f049b5f6c87b4dc20a0b46657235d286299c950a79661e3db17b27902ede56dc72df72c7fedf14dffd3e15052d36d1ef777abbc0269b75da5b804ec9fec78e79fc8faaffd50d59d6c7faff7aad66ea4cd6e2d2c4dc648222e84d885315749b6fd619485bc71895e2521aca305abae22e12c52239448f81702cf5d35fa8a219b9b992365f9cc935e0b35ea849864702ceefdc6c4729538576f25e60dda10a8314775aa79aebbbbd20833f374fa27d33049db2dfbcb5b414b999622c426961d75295be903391013b2c24235af40bbb235269ab311c0c97d7a1dde35191ad466dadf91e59e4945836780be4c58409657a22c0b6db8d69c0add15551b684f1f6c56720b9d8a97221316f1c9c014c05b8415694968128333bc044869047be44510ef4fd3dc62101ec2a47c5e889122b6147abac00b496da5b86b782ae5f8aef3fcd1b7e4c86baed98636498a1cf68aa3f8df0e548877e823858dc3ee2e5f341d175660cc62352e988493cc5bc37fc5148dbe694a1e3776a3fdfcc1e088949296a84374131c6291667b8fffea9b918b463947521fc300019002ac6ce9090e610fcbba2d2d9bb5541688327510a0ae2f5e35592d1191bdce10b5169ac77583eb45a8cc913725d3b0bb843954258196c6aa0ce9ec2f9daed106c2f99b2a8cc01617d3e2c3a42e9d422cc339907ca0b91241a5092e4a82a861428f6454fdc32548e4ea5aecea5fcecf50ade01ac514d38e4fcb770cf964c038c2a26060080f9f6ffdaedfefb5b08551d27e663aa13568c88ef51bb30ef1d1b5508551e1c21bd246f6b600a38d0b5067d89d9983f0cb66c6ce25436ba3b183a1962a5e26b3b17a3d758e67f87bcac0e815a22636db425a06df1b5049ed2a72623d32d779096b9f399d7d48235f50292df5abb15f00587b922d4b741788b55f6dc5fc6be1b2c56a90f649e5d701c7e2c8abad1fb2ab0c9666abbe6ee25917fd4bf7aac5db4385526ffb8c762535ffbadc124117e4cd88a3d19e26f328665a70b7b380e21ee9fd12b24c999b05faf85d26b36b6d567fd3f003d3a71cb5e651622fe27c2bc22d79d5059949740b19b8d5a27b40f9cedc498d31614b1209b7e4317d16b8d0d795afc606a9562c077f599e1fa9339365cc49ec83e0720dfbeaedcf85bfc39984da83c591a90e553526d22441f12c307db04348deec6f16ebbf190a9d0dc23a1841495976e4fc72363588802f783af8804330577d371a52bb68626df3582b3664c5e5dc307bcb3ce5ee0ae0a595eb79c7aa83a8ddd04946cdf5f8f979c4b959a75dcdcb759508706663428e277f2d4ff0ab54200c02d05a4123d17fcd1718164a955b8a726003999ea5bf5236fe3461b3a79c71aa38912c3a1313a66e5e8b3779a174967f09eb716fd34309c84255b0ecfec74f174c11ae3425f6056867745ea261dffcaee14b07112f336109f8dd62c922b85f269057d2b091723e97aa5d7790f3a04cba09eeae1b34ff4213d2081a4a1d2582986011f22e25f73a2dfcce0556c24444fc823d35ccc14f5d8002935a62197a4bee9d3dba1b8fdda67eaee94e5000cac094d6421987ce9e09959c9e3cd78069f146955587e4a2bdc3b5c02fde01a7047fab5d27e02b840150a9ce87a077871f7630329647f4195b28ea8b42f32e7425724313542997a0eaf0618849b76301b0546a75ac07d2c7898330f8509c5d44ff5d64228e436321c51239430e7156c18368a9c0edb0d463aaf73dfe066c51e0feec57e00dfe3aa58531bb12cadf5f9c1d7bf14ece88e8897da33b34ef36e569617e0297b7c7ea69556d997bab7c615564bd1f70bb4d91667d50236efc0975dd85f2f4065f2f4a28dd097dd6dd850a3f0f7806775b12173391a197dca4edde90e0a0cc6c6620e7f5a26b437fdcb4406ea348b1c17f8834c0e821e2aa6bea4552a5826b1bb862b6eecb54ce8404adbd497aa40006ec167db7166ee754b92ef3d38153eb1153d72d9f78553479545f8b692abb236c81f21812601c724046ede0459958674bc294c79b06223846a8791aeeac315a4c2fb6d503a7ff6f3831c601b386fdcceb723876213a399db3c5d5c4e5f344b75bc0abeea02bca274346b33387729718737e0c29b29ba3c8903a4dda3cb9cc94eaaf06f8d29e4a902d0f12a7a3c8fb7035c5f8cf788a339a7d03363c15569152a86a420c4333c9763911c68842d2ccfb6bb6ebf496b270afb0e391540e3b9467cd37152a88141f9b4434a2e5e437dbf300ccd049a9857b45c4056594d3a0d59d12972f032545d99975db90327b3e8acc12eba6e5ae583db029db255751c712c96724bd6e58918b906898cf98324d5d917a00f0004a4fc9fd210375ffdf4c7ca081adcc423123235a6d6d65a42d41a2184ec2de50e2c0be90a230b28282897a00467a0d80efc8adc9370dc887c6657235d2da85b4698af0fb6c47960f6d1fbd5396f83df13eed8b32fe4bba285db9bcf8c9941b27c36a2193343b2e407208b71c485d0fdec6cca8f5bd19497f718e4e1bb1ce27e979a46baa4eb12f66c4ed7dc69917b756be4663e20b284c9eda798cc9ca9d362d36fb68bc09c3a6e3e3e785ae45ea01175dc7c7cb62135d5b966e81f8ce0b10edba771dfd67ddce8eb48df0834c06c52a94773c780c8073ab7bb3dd30a2ca28eed6a9d7a0ace309d6edb9723826a7aed66c861d0ba5e336deb1011e9903a526c0f0c717c77736d5227c7054a9e5fcb69baa13ae625addee3f610b2fa1646e0bbd3fb4e02677cdc3fef729fe969717c37fc42d2815cb04b6244bdd78133bc9e293952c776b918874c7225e9348cc077398b4326b9a5b337c119f41c57ae63d80c06d2620e310180c9dbdc44ad44bb9aa7b989baa584484a29739036d0db0ca45b37d7d1dd19dab7d00f88dc3afa566127df752a17bb5cdc2e904807b567d6f4a9fa667a0db97ae7cac9166d5b2134bcbf2f0c614ccc5ab8cd332a3bd9329dffc9566d599eb208cff806e699f5dd54d5f4f1f00d5d847cd16f23a48b3e6801996e7ddbbf13c11c8695753bd9be9fc0cc50de97db8c82425f4cdf4d9f61cd77d37718270d7582e27047774ff7bc4fbba750925ea9abdcd3401d38e66161252b1b58f9146e0f43f036ac9f3a7405b71556c262c7b632f0caef31936e6df3dbc672ef0b9909cf58425e9253bf2a97b4d89da31386bd136ee1f7066bc8f095c56159f9ea4ce3720f46b7544d345b3ece3b89f08b7e0a159fff646b45eb9faaa3b8a70a61c07843a8aacfc9e0f719d2fb87e18a9f4215287fd82bc2dee91461e71049f9bc9b6d97d8a002e83dcb4531c47139cb8ae5a13e0701ee3c4e0f9ad579acec113f3604b8f54dc3343c5cce83a6695cdeb528c35dac9c2c9617758b6d0dcb01c0df8f67bc84ebcabd2dac2cdfbc1a8391515dac57b50ae5ca67c852995cf0ce956ff3822c3ae805bf02e4a1de061520c3e564adec582959a08e42dc6dc514d66c6f809c2c19ce2128aff7954bd367fa4c83377d66b24aa8f299a912a254f4a6b4cb35ea983444852b06541a3e3eecde7d0be757a10c445c366d9b69d64c6fbb679293e57de56ddf401eb7fb36bffa0c57a1f49ad41a0874ff953794d72b7d27d00004b873b55aad569f56c8103c6438113412a4b1d590af299477019286438f868673e8bda321e431c40c3f826966789f4af7501f299c25d29d3994e845813a902ec9ca4817e10e63a8f2a32cd2447c896612d79caf3054999174cf23b1d0585d86f7a0f13ec3b1de8963811e3414589dc710ab1fc1342b8bc3349e0d11b7ebba2bc1eef3ca3beace33fa719da7e08cd146ba9ced22a40b254dd438b36e8d2117b612be5d137da65761eb74776538e25c1da19ce9266a253d9b31ab732b171864e822a48b06439ddddd8d02e5bd938fc119f2da105eca8702d27b0cf230a7aa5b6c375b736ffb097880b959d5d5424a22813c70939f8007985647b79c807554a95ae6d6236c185d183931f4e291585554904c3a1816e665ecbad9f5651a52482524e442b2fa318e0ce085c90bd16d994b63c6489a23b24bf4e20310346cb834277823a11bcdea8f8410943312c2b65d6b41dd26f0baf2db8b5e861a0baa8d1b3ed06e76e76b0ac64c8b2da5f6999636871e5a0cc76e76f93256a8f7853a67511d65ac9bdd9919d3d2126be16e06cea02d2daea6bdd8628f86148d5f8da96688541f6eb4a8ada0ceb4c8397423a12350a818079152ca18eec2ebf6e0e37a91692924878ecc794a449350991684723da81bb2b339edd8157df44271e0d29ca0db1ff900d282da2de9169f64b28fa317db531221a8d7e8053dd029824e1331169a3abcc3af8e21633bcc18c9a51c80983129d4ebc975a36a4719d69927166549767cb5a3385927f59205ed5851dcb3316a493636b253a6ec6d7cb8d29321b552ba98816a0e0ab409d74f5f93f5633ab5054c1acd67b2249f9df084acbb54881aa141dcdc2521da35a0c9fa8aead8ddd9d7e65b23f7040f8870412db696a445cab24b6db7823a72429c50b7464d36a425e1a8ce48e564913e72a72d72bdd9adebd688924831a16f5ec79dbbfc2ac7913e6e67520bd7d1bb6d74fbd64912a96d27e5a5820f3678e0bafd1b49869c7ec469547c63d6e4eca422f4a163f4bf2ed4511ee9a60fa73efdd4e37aa3505206690a79442583c4ee2e83c0c2cd2ea5b5b0aca8a850a4a0a44e3a8dfb0e923c9b82c1e49118967fc6c84cf1a2547c7ebeaa5ab83055bd50b99bb422541b37ba757ad5b40ea5ebae9acd62ad8acaa2b0a34a06c59ec21521830ad06854d81d268bf4ee76a178477904873c72e749315c6f843efcd0e2d75d4d071b9a112a03b5b4c903b4880f14953b80ddfe97ba7d05517cd1c157854850a8a264d1984a66ca9632681442080a5e139794dbb66d456edfc810876494e14c8ba3cc650e086f773b4b9919ba91b44f2b6346e6c5d3c1749ad54f72fb3353a65b3cc3793dd996e3d964aeab45ca841669b2c9223da18e32d6322d52a2168b340d88b481f46fc698361d6d73d12d0448dcde8ed02fc81bb625fca289341faded2c09c36d9e6ef56deecc73e959789035305abc5e50b78c740c5522c3f1c848228e27045bd1b6846fe07c1cb93e96dc3ec7d3e77cd8d14b72fb1ee7a3869b109905d341f04c039ac0d23f13f8a6e906c0e80ccef0402b2500461fd91b65ae0e6e70bb37cb1cc878a3cef364646464bcee1e25c1dc3e0906496fd63b32c2dc6e1ab96d87d960607c8481f17df49a8c1ccf0522c3e4f665bc08f9ac0c19d1456a1413d4786294433664044996f32a96696f6ad06b5f80a4a916a7b372b27ad06c1f559bfd9997342c8a94ce15c8e4c0d535b4d3cc2e3285d4f1b5093fe1c56241de1393e50c006e2863244b5419dd59a965a1412f73704f77b28086f848177d4fc81b82e7c53a9a9713b303a2321fb4488b93c6a48ba9c9eee7f6790d68c66873da4aa4c9664c9d79b1cd8b6945d78b69332fa61179319dcd8b559d9a535d95887a4a9c7852624a9c96a048787286caf371e0b66c2206e4e3c0fc5e1abdb433f5caa8669a59c68ccc4c8b2d4a177d9f3acad479d234a6f44cbff1c890b4d847a48b3e3f888953d483663c17f6a021e2bebd06f7ed9dc5c1e1646e50d97eae22a40b1acd7a45f3a3cca5f1f8ebac57346df85cd285179b2c6fe644f566329acc0a1506c6ab7b14839780e240468386cf7fb27abeceb0fa0c1f997fb15b6c9bb4e2b17c2d608a920ad38a7a0de514a2ec890c5b4a6ac5fd745197cf2a673bd2505c7d8ada45d6697106dee98bd39ed41cea6acaaceaaf64b0e157a848d1c2b2a2a2429182d2e472e5a7426de34624ef034b236ecab2ebeaa85ab5a7038d524dc3c19029a4fad0b4efded44abcc1926fa497c23cd175df0d9660216cdf5e2a97479759dd643500ee0c0170b9100819aada44ca240c554a56d7095119a08eea62505f55b9633742e0d66ea9a85c29634e7e923128e798d487aad2b2cc8797ef4c0f5d59c3640d0bc2f244ba252d1b69b1e50dfff499eeeec4c20d746eff9b58e0da2dcf610ebef343bd735b3689c888748bf93acc56ca25a850366352564e5609f478b3a6efe66469a02e6d072bd9917dec67976897ac5f3cf30213c6769256505f56362872fb224ccf4ece4943afbdebd5c20a863ad68b0302c0c0202244002a457e478f20d3602628597d3ac3ed331120b75f19fc7efb4f8c357526806e7ff5b24a411d2bbdf6be46823afebfd05481e427ba1c6a30e32724fbe4fc6854c7bc73da2fd48e258f3ae61dd912b9fda955a0d668563fc8c8b0a0161bc81116621f0e997dfa5d57ab4a258b982f90b43aa66cd2a44913e669b1bb9e04d9c7877d6491107c6975e01d9e9685ad10eef20ad9de9f99319d0c52d5ab381b6325e418c420655e1114072e6602d4403da47d80264f202d616db1ce9666d58723f9a27e869d74516b7d8a7be0c7f507c119e16928a4869bbc4b907a356c2335cc8f033e415a84d5977e6911765069246fe025fca2dfa5788b4f1bbcd7b01c40de3b854c04a8037564201d6407cd2ea99c5a5ed243cdeaa7a0a0f7cae22c8bc332cf3ad3b4682123b215ef338b0acb7215db1df4125f75146f90286dd0e486fa0948476e204856d7e0f25457915ff427bf7cf4ececf8084b9721eaa790af4b0d6f20c8184642b28244be818788f7a5d7da7221357c1ca835843da4597de6993c3bf45e9c8bb8d58b732f1fbba2d3d0e2f267f88b702459fc62645dbe8b902f862fe1eca40bf6342d04ef691bb771db57dbb97bfcd2ad6dd3b44dc5b6d96ddbbe3addfbbe1ace1a52bedd9b38602e4e0bd679b04e9f6996c9c462b1582c1e2dce83a6695a5c012cdee241ba852a55922a76296f6024fca2afba297c697122e11b4c7cb273245fcc97502de6e457f03cf6a8a727d2ad9a7aca40f74e30d764c7d3cb1df9d564477efdccdc4ee36e765616f758d22e6d1180b929ee9d199ca1f208c04c0e2300a3b2425b54b1a2e22befae8a373843658419a53d7d33d1973b57777e6c71f131f57977ce7a17e19ce71b342be58bb63056384b7366ca14378523cc3d9da63871c24dd1a908bbafb638cf4f11d69c7eead5c8d7f7619c6066288e3860441836a68d169b454bcb391c69dc93ad513a0de1d83c638f40753951450a59560435ecbfd71f18a284217fbe939a9cd75ad8f0bc39e7ac524a298338852311235f29edd69f02589fb973db6c8d93b5c1b7fba81b7ddeeb4ee43b19bcaf6358ab3b7a1d75ddaa331c9d76eb6b71f4d159de30922f461f4917a3d14fc208acaeb438602e5b1a2df66804ced0e69ce00de9a2b2546b80be35882e6926412d6b255d54a5d8ad512281995d10e7bc216dd0b4dbb01ae6549d85e529e8b97bdec9aba1943f09120a3232142414646468fbe975a471e59453d63a254bfdc98e2c0d6071d6e96c47966a6bb0e0b368dcd3e5a571f9a6ab4cae0d6071d6ebe79c73ce39e79c2c9badc1c2ce8f4adf4a3fc979d526bf95ea375b32a256fbcdd69c5ce280a91607cc2dd9938fe409c859daa2672745795486b49e4ff58ca2d7e8653dd951a31d895ad2b59064c773d5ce2d9265cbe5b78169559c2d4b7753d4a4384bedce92e22c2ca157436661790a181a1de49556b0ce95ac09f4ecf88b5754f9a93b0b8b1d53348059d4609d451d27d7605998c9525193e2ddc71496a525ac2c2ae148e38e5456561c30ddd6dddbba161586c562b1582c162c16a3a3086ff8de903630ccedac0d07481985dbd20af75ce0c1e2acd110e259e1114c23de4ba5582c5abcac6eea287f69c182253f80182e667869c182c562d1e2e5a5050bd60c519eaa1fcae8fbe84bd1e896f713efa00ce595f2a808ac6e8d3cea1ed7198e30f4a35862d1e2657633e6c5b6b0412beed841575a71c68cbad35461f14a175c51a77a16eb3c8660b16afdccace00c4fb6f0a4f3c09f84dd1d71acaea78377fe875323c73a7eb7be24475edd79d659a16c96fc06de14e22869e7563cb42c9105285c8d5ed6928842414546866e933a4e9321196a51ecb63937ad85b828c8871f6e1851c5f79cb399867ec012e4eb11a7f93a06d32ba9bc2dcb6200d26ddbb7b2093a8f4b358972d4b3a9b62d04299ce001babb7df4cef2b78161a8dbe5e5386e3b07f2200f40af591eb8899d2f30494a69f8cdaff3ea16337a67e9a743a76a562a753504d08da373527a3f91e0b95caec6ce75fb2e2168813af64cda20cf738233dea2eae33965762e8a19daf0951309aa69535695cf469922323d53c94817b797748ccbfbcda4b9d24fb2e85d422a59f4bd056943bfb3206f60af41c933ee32e181caa89c0db54bd84b661a4b3b32f7923630c86f9964f086b58d08a08b4312f5384087df99884f8b414aff41b6e4190a9fa6695aa9675de492dd4c996c21bec7a9335db78b9004cd585ff4e1c6c94325eb9328cef19099a2e50cce48f12f14f2727eb937c379a58aa7dca321d434ad035d368ed1f08dcf4133c55d28a5e8f2350f372fc7b37924aea97bdec785288458e3586f162af1637521636a380b77eedcb9ff5d0d217717217731e4de22e4ce823b8b135d38ce00285a6eea2307e16831759730d5acd4c1b0b6987a177e2da6ce61275da446f2452af57bddc7456838ef20fc91acfea892ea8e7939531cb4c8771d9888e5227c43f3d010ceb042c6301064cfc2870f3f76f7976d3faa2e8bfd582f8bfdd85d96f0b767b9044b0d24886f68254a40037429ecdb4c3cd3c72008b23e1f44b7e867cf4c1489978a113fa72d5d7b774f0ba792292b859328c94e1da74c0b42c237d023fc020968c3e52ccb328fc33a8bb758f9a885cda45945bde4083d020e0dd5917b712f6903f81fe85c6f7e3384dc4e8b327c6c209b12cd026a718812be61cee48b46f94ac902dbb6954aa5cd93df09e5bbfc8e728fb9252b99f6bd6733e6c5c58f2a1767b99c31351c896ae8fbd87d3ff93eaaeee974294fdf4f7ff1bd86ef2e52f7bbd8f2795b735f69be849286411d50fcbb374105003159352c07e06fe74bd659589c078b338d046768f44d33431ee86dd41697a0025cce9adf7ca40d2520266b9e8641d8d2bb4fa2a9a45b5a09fc942599540a57ebbecfb39d74f1a50e6e3848200f5d911374e072d19da0025ceeb1d4bac4f2bb768f2db0e1e8bcaec5ee9e374739bbdaf8d9124b6174b5d408b452ba18bf97be0f4c00d7a449932c5cb635a5dae2f754d85d6ef1bb177e2d7e9fdf77ef0b6bbe6bd3bafc2b952c5fd3c29430e573a6842de742d4ebe673c3abd7ca2c75c7cd67ac370c47983b72d07cddfe49384ea0d908b3221c5b0cb7af226c415d820cc44ab4388bb064c9802a5ede25640de9969c0af8eca849226e0d27e0fbd8975dee126a967d98aff714ef44d7237d320292e8d6a47c9e6b0a954477a653be52b2c0e8a67ce49b92d2491729295ba93bca512e4d1c5f9e8b7a4933912596dc00d65d58d8d660cdb1c7abc7ebced3774f93e706b0ee7266d16c0d9675b1a5a7d06bf46cbf57eea43cdb1a7acdd694c2cf8e29287634a5521b0876e004c1ef5203cfb203bf81e74fb3e306da517338b2763cb3f064962f03555af02cef5dda91744b35a59fcc93939f9c8463e95fe90b4739fbc29211f5fbc0939faecd59fa6cc09c7664979075194eb086cb59f6ae7c9305dec5063159e067dad694eedde290b35bb2274f3909e56509eb5d094796dd949fc2b1c7eba6bc04ced8e48caff8998b8b8b8b8b0bcb85957215995146cad9074538440036f00d5ceaef6ee4036768ff400378ff501ed036641bc213764f4ec019da6564eed8331996d961426636cb794d20dc6b06994d9de963f24cd8f4a154d3eee68382dbdf86509974e1b3f9cc2ef48c7b6d73ce4965d286bebdf9cc56f725459d0bd4817b490bd4918352efb311a16ecd4f90678e4f16a40b2df08b7e2aec25d3654495342b7046ea33d48cb428c45db65a90970a1b88ac83c080509924ba543663e66cce3993cd399301e9169db367a4094bcd598b4def0c03759cb36e8d5ad0ac5bf39349b7461d93bb452d2e61401535d6ba24441465dd2a6932a433ee350be595020a77a903e712ba9cc7102e2e1d0dbbd1392c7d86294f85de51c2b1b7a06372e1884326b9de4ba7e08c94d1ec7a1f813c8c3c10c489ebdde32fc5f3fe711ed8e2e0515c84fc82cc829c820823e3f251e5c6b062588c7c678b9045e812ce107550ceb1c725bd673749ef48f48a96c7102e3f82695c5c0ed6f8613900e9d3e512b481d383c6e5dd642599b97ad645a5cbd2e535ae8949134a396847d68c7c1fb5a020666a3a87a4db200a984239f9a0481094200a8a76c103a133423d912cf033240bfcc9534094e3ea35c427080c088f8fd52cbdc43b3b3a3a3939ec62170e8e1042e8d011441038700001c40fddb2d16c345b9383efe8f2fad0a256a33d87f61d7ce9356a6d70b83af84ae962669e84f20e714f3aa89000170c52e5e5bd133bf23df928b4b9e136948b05c5bdab74f666f4efdf0defe8e4b00b47081d41e000a245f91f5a94dd7474eef2e30cb13bb94ef5fadafdbb2a9d6a0452d1d7ecd06e5b1bd477a47e73d27574292759161428ecd5b670a43be61d4fd78e12ee9836dc6d8b03e59a99615f5468baa7508ae1d615d09d378525509eee67474da3f432c7f6af6f879acd8aab7dd6d0e7d8c177e4bb83ae5e205d4c94eb7276e4d7e5767638e724870993254b942849723599ec6a073950f98e3040572b0276b58f28d7e76ae7ce8343563bdd1a572b9d6e913ebf02d2ad51084ecbca8aa7715859d1563e1a87150dd6423b6edbba6e8301e109e263ebba6edb564160407c7852a8f88a141dfd4f6fdbd6759436edf7e85bf84b0ac715ecceaf7c84e0a4b8cd2a48b7a815b2c2e2e89ca6e5383f365b50056edf08539326f32b58e3d062717e6cf8f6573ebf1ad2ad517baf80748c1496470b8f31d0b07ce52b58c7985f05219d87ce695a2c0e11a4278020a8089a95eb9c86c512b105558066c5fe68f62607df1b1c1424a6308326343ffd1ffa9fd1e5ed6cf8ee5071bf1c7c6f74f0fdec769b95f7b9f066075fee3a56e4f06ef3b13c876785b0d815cbe387fbcf0f3d25d995cfc8ae86fc72e1165481ab8514780208828ab0376fba7aada0410845a7c0816793836f8ecb950c6fe439ad6f47294b42a464b6a488892b4747dc98f200eca90c82a0ce9e2a9b76d53348df86932d7273c8101f9f20416030204078787cf878bd767674747266db9aae3b58c3e6a71d5b68dbbe49e96d3e5be35dde1cd4f2eb6588e8b30a72580b10154fca477d7d3b9dce9df439688b73e6dcf9e9a2b6865ede1c9f95d3e5fdabe12eaf778f5f3e7880c082f80c0152620922b122414684868e20912569719e4973f4d1683429fd51e7410d6cb6354a814c3470357758d34999d63cd3767472d8c5a468c94c0991ccb1dd86b335dc665ba8458dc2cc784667ddd722c298e118cf622eaf039ee7cd499b442915f29d3f8eff9dce6fc6b4f16e431a71f7c21c3d2ee9dd3d1e3c7ee84927f569b8dddbb1e27a34bc19596d527957385ba3d9156abba623f0e46a9c40976f43e264cdd7518f4e4da3a38fe8e557b772946eb3d91ad3e5cd215ba41c47bacdf61c67921db9d7902e2f67bac9f2cb070f1058109f21404a2c41245624c888d0d01124b224444a5aa4077b48deb56ba71e259d44ff791e89a33f2a3d6882fa5dd94418ae59f0479d4057cad0e3636f090f845579fb2fdd1a47fa978ba2b85aadfeb7b4b4a854aa542a556bfdbeafeb3a4a5b9cf2383f36f4b26368dbc6e347a367107872c5fdd7a5dc6dbae7902d8e94fbd84235dda910c7f5702d04f343ca7aa66c9ef6ccd7c8b3d1471dc775777777777753299b0735b07db3f31aa553d60979fc1b2dda9b9b1c5252da75df576b2aa552b5b4fcab558e1791358084ca4c78f3f37ef22d4a1bbe3bb44bbf83aff6f959a35d5e4fb3af694798570cbbe60e31414c56e368b1637e78e9981bcdaad1430e3260c01071250802a913fc5167777e821a78b921da58d5388d961e543ba472a8339f8cee26070c6db1c11fb50926af1b373a6c706ab833bcf1ddb05183460f3be43023430606cc8bb87a8b2a55a9943674c2f08dc677c78a3bf6b83604b854c62e9d61c3ae4b6dac73792009ea6816def470dd1b9b5f1df4823cb5c79d425c1bd5a536384577862f2e1802de619d163907a745215ad411448b385ae4df00d1e20fb12bbbaaa2913472cec93b33fae3e5e87b63c397dea66f0d8f978ec12b2a2a142928a913d48947fd0ff89fef3fde7f48ff19fda7fb0ff79fed3fda7fe67f4aff317dc78a6b92f66525143b06974c565409571d634ebb6a317cc7e0a3085b3a063f2554750c3e4a98ea181c837f127e1d838f0abb8ec13f8535941d833fe95152f75555b7b8948a5a1d7ca7bdad8129350d81a76d2cafa6317ff2ccdf47d664e3f0599cd171be13e17dbb7c2248f798495a37133c4f822fa84b71bb5c71976f51a5bccbfa5dda3078d9952e6df8d474696f6cd8e6e871b5530dbf6a763c39d158bba4974f5ec31d2bae76da2d53bd0ebea656c9741d7c4ba7a5ebe00b7e9ff791bcebe04b225dc7e83af8765c771d7cb953ee3af86ea7f666c78a7b6279fc9cac0ebef5d204865fe8b57ca5852f35305a09bc97175014bfd5cafb492d2d2395aa4ba5b833738e1e97b9a62fc404734b251e3fcd2fdd025f5e5a9f28ae562dd2df1ab5b4742a558b4ba56a1552b238dfd7751da51da38fa3739ad269c9e250ad025ebfb4c82db6c8bd6a91fb2d72b7b4c8ad6a91bb6b8bdc5f8bdc5d8bdc6d6b5ab6d836d5b27a9191b1438d16f9365ae4df68917b306b4af0e46ae4d7bd61a346b76ad0e8168d1ebad5438bbc430eddcaa1459e699165b4c8322d32c3b0d822b7562d32331fec40e5dfdcdcdcdcdcdcdcdcdc14f13c5048e5bf74eba55b52fd1bd367e9e0bfcef4b1c735d99b9b128c16fbb3322db66765b4d8a451c76d9aa5b3650f5cb0db4ca8df953dc880ebca26c23069e0f10b9260831dd430c2890fdc917564406210829b43010f2ce18815b81bd000a808dc47c9a4024eb88007571681e1044048b8a35ca2f52091440dee2867443c21e4cac0954a706040ae0a5cd9e267c3cfc1010571b9eee843b76ce4cde13511c36d5003f5bb399a88e1c278805f2a7dec714bf6e6e6c68716412b975cbe64b271ce652d039ebc944f792f2f2fa228ae56abff2d2d2d2a952a954ad55abfefebba8e9e9eb648df76ec71f936d3d6b4b5e9e7e03b7f234935b3c686af909716459215c5d5c8ae56efecdfc2d99616952af593aab57edfd7755dc7681c3ccb83760c3e0f239846e734dea9c7971d639eda1a1806395065136100ba39f8c2ec58716d72f4b87cd1939efc3c53b86d9b460af9a38ebea3b7a4f14c9ea9ebb66eab01391e3c7e400ee43a1ef5f2f4919de913cee9a68f38ed79216802ed7652f72dfcae49768cee4494ec0f0efaed3fb2c5d922ddb32327c4d499429dd3981a0793c5319d88d265c718b777da379a52283b0669a5bba197b33afa6eb66b8d049ed7d1d68d0de936da73f4b835a3771f85367c85e89c066c1eb263f479fc8c4efacce4427a5228af7128042469c7911d8374f01a184a1a5238ea681a6ef4242d1c43d938801667741cf0447c971d63d4ce7dd4be693aa7c1f9d14e84f7cffee098d7f85dc7a0b757365b6313c41d4d5747af6856ca3097e8cbf1257ce91610f2ad736319102f108257134d286ae289d81330d96dc413486a15a6c0e4ca2baf912bcf44aebcb673e5b921573b37410520579336ec60d166b0689607f1ca16e5431ef8b2e440043002341e344de373ebe0cec2837811c05ddee3f0a545792d9c3ae8ddecc867d94004f0b56b3d58b66bf665329f25d5be6956b628ff72470a863d36d634c06205491b4ede5f02e3498f68184c8b28ba6b513cf1b8a2a074900e026b514ac992b906e9d68d0d37a9a7a673b79e70976b05f92727287e727a833a9c886e4817fd36d22dd943dd3a7d769f619562f753f849b17bedde29c97242dec0f245f7967ac29df488b8f243476edcd3c662d1e285e75f8c144d933571ac83b6af50a9b8364cda7092e0f4562b46d5493876d7b3306a5ae28edd71ace819d481bbf534ba6e54c3468b3b524a972a69541b354c52a8b298f71eaf2e783b089ce02f28c3cae2f3556ab24a799272f075868d87f62df7c090be149e1c80ebe912bc99b1f99041e5b2f87c286f68986411b24217cd8492ef7cb4f892d2149eae85db51215fbe1c0a619d799000df1bf85328250f01413eeac47cbd11d77a8ff48161ca259800989be233bd71894f0c4e104c39e8025e82a110964d35abfe14b72f0f06d5d16bcab871e4a2e3c88572b5e0c003875047d2c5844951d192254a941011254972659122468c0c0db194debdd9d3a5526b6012b5f412486552c694b9c70da8477ed66352cf1cf57459d93cdd36196881d9b9ba777dc7e9ea91b2870fbebe7f63c37a4aa5faca3db567967aec8fafe760cfc831faf5789d4b13d2e8e6028ff0b68360106a833aa8120c47feee856013923bf76ee409a1f646ff857c2f94b2eddcb6da463c5be0c9d5d8ddc1262abdbcd4008d20549e232f21e9ba543221b2440925439204410264c8872c72e9c799c3dea5a541a8fc247872a5dd93014d57fd6802a1368346ea3ce79148efc29163b7060cae2288c0805c15a01939e889202ac000177a9048a20634237b410a20c0c00c2ae0840b784033f21124463441043078600947ac40831286101cc1c190114e7c806664a21917b9248fec424ecce57265a0891868a81d7134ec8ebebd23791f612ef5ee591cdcf66ec6d481c628ed3ada7537dd6577098794ddb9d91a1c0dbb935a2c783653ce1bbec00f79d9c3fd9872ca292791664d2526508b3d52d66d9e374e206f6465935c5603ea069ab28ec793ab71e4ba4d5f32a0e9da4195928e9ace6674c6bdba0d6803ea16a5dc8b722fcabd28f7a2dc8bf6bc46eef57af574decc55474dc8346a42253b4a1977d484461877d48434214da813f23aa1b60df668b3e9447595c4e0eaa8cb357d68719e775accf181b3a3a37370346b2ee160ec4f09fc3cdeb68d74d2e8a39ed86b04d3833adfef17891b692f297bb7de62b7a852dd4ad5fe5a6ca1d94c7a492be9248da4877ec06cb291dd7a306ae27527f87de4d8c8afd14e8b44b81c25980c591264ce24cd9a53f6a3ce9e91633d9d67477ef14ba6f58c014d700715c6bdb6224fd64b6b928dba1167e9690a8a539b72ce1a6991481125880c5122c8906669419aa5c150fca854757a3a8dcc9dfb517b4812c551a4b852501c058a833d2e144f515d654798de5a1b9216910c0d19d98a6c4436254e8e02f51494a73e6e4028a9a6a8a3eaebb801997ee218f3ac91ac865a523d3f2ac74ce02ce6bd851ac6f58c3ab0a73bd204ea16c75a54d222922443488c0c356b9471b948f7f4c84e178d6932149c029a3f64e08f1fcc28eeb4fda854caa44ccaa44cca7a349744d979ea643124498690181992458cc8981f61dc91633da5d71c75a394c5ba72c7044fae463abbcd9da3535e9e7ca4b11e9ef580df680fc7a6d7952752a264efa04e700715fcf1c37ba71d65471825766c204954766c1f4850d8b1778652ecd839469ac54c8a34ab97cc50a6b6a7992db51d27a999db98aa98ebf16646cc6e7fc0039908654bac88319102b604cba8925dc9440ab6048a09936c0930c684075b42f6a7946fd929314dd3344dd3344dd3344dd3344dd3344dd348f51c56d44f27a14e3f695a0a86ba072e5147542a05ab2854e9a5d34d37a1188542591b13ea5447292bd1d8261b852619074cb20e8c711e6c1bb934ca8449b6041863c2832d317231b144a54c5486a5c45233f0e46a14639702e1f1f1dae91c1793a2253325444964488e0c094d23336816b973356791202342434790c8921029992d296226ae1c9d9d970f9e0642036c893aae68807de06a550257ae4bffad1a36d21a1613631e7f49e0e0063720a269da378d038d848f213e4160407cbc1a08101e1e1f3e5eaf9d9dd6699dcee99c76b58b0993a2a2254b6633254a8888922491c99020397264684848c88891a0a02245621c6bb10486630f71514f31c104134c304157aebb1d0cc795ead540787cbc76743aa75d4c8a96cc94102591213932246424a8457929c11a5479477eb107844c37691654954aa9ef40f90d8a932c0b330ad4b5a7a0802bd73d49852beebca470e4d74bc63d8523bf80461a07aad6b0c9af10ac5c97e3acf0924a6433bcae4665fd512aa1aeab1dcc41d54eedb8e257acf2eb75e74eb7e4d5341fd368146408e97485be1a8715ca93828547e5363e585c2eda618e4ea551f90a13978be6884aa302be725c2e6d43618189cbd575ddb6511eaf1c970bb42a7858567c68b06e99ec48afbd34da6ddbd6751b0c084fc9078b8a169515950dbcbc5dd76d9bcaca8a4a171e8401e1694971152da4cbbba9acaca890f8e5d32d528b0a7e0551c1b2c22f58e3c0f21aa2bdf9d5c2b2b27295f38b5f2c2a2b2a2a2b2b2afce217bfd8c7ac8513f2b267fbc692caee89d118c7fd1082e9698ed38484b80b0117bb54d334adf69cfc04eca9df77b06793a1dea592a849546e34a2a7128d95b4d34f2492666f48eff97a4c6f58ea64e4571255cec99da3b15269a4b11e13a99a4c2530894a02bf7f9fa691a46c93bd5e3d4c352e76e253cc036b20576307bbf3cc1aacb256036a24ee5aa9eb4983d5931d37a0aac14cb09e98f6919bb9a4acbe823da394995e5da6d874d1988b74f047d54aa45183f1386553061e04a7ace723c73112a9bbbbbbbbbb7bd4dddddddddd49d4d8e462b3aea33d1fb918a769b481743093135e0591543ea884ba022e4109375e6c8835fa34fe1e5abaf77750e5907a7d5fa60fe339e84b396caaada937bd5f4d16c6c2909161676c0e3bf46069d4f8d1fd1510486d3a056f5edecd6e9b0595a8db0c2ae0fa51856e1275ebd96e7cd85e5c8db74ddb364a6409258086f8048101e1f1f1d26e364f090f94c18d4ddf1b9bbecdd8c386ef8d0dbdbccdea455cbd4595aa375d8b13c991212123373737f337f33794be4390a7f26908ea77fb3df0e6b41cab999fb19b296f6c3207893110a534bca1cf11bbe37c18647772076edc30d9106dd458d5a0711a3db4f4b0836a871c5239ccd419199f0c994e0606858103ca04d3679636158978643574a11623aaa054911afb6474386d6160b48fa68aaaa88a425514aaa2501585aa285445a12a0a5551a88a425514aad6d48f52066aa0bebc88e26af5b7b4a854a954addfd775944a79eaeeeeeeeeeeeeeeeeeeeeeebef61b37401b36be1a353c1a34483df430da61872e871cb89999eda66b972103878c0c10300ee307986eddd8540bd3a2761bd37d10725251285335dd744d30bcd32d10c9cb7744f4865624a18f8cb408d1ad2e48a5a35b5c915410325671c8f88090e97e681c50302ea3aedd87c6016571603a06a3d4c06bd8a554a35fa06012154ca22651733411c39d3dbd6d3ce38f1ce3d8e5abc55a2c12644468e8081259122225b32545ccc495a3b3f36a1fcda3c1c0e6e0cb97b21eccd793075350f9fd6eb6219b31347630d22d192dca1818312f4ac898969814908ef97cbcba2561eec82ff0a7c244e0f1e5590b5e9d5d69925d3996b48f604cf6470f463f925e23d79cf1379926d4e7587fca834854d9b2bb7b50e629787235a66097ce39e79c73ce3947ddb7b0237d434d6d6ef66674d249736a1eea04893aa228b77d24efa4b0efb643d3ac0d012e9f9902771b87b8db87725d7a6f7e6a73f29c7c7949fdb2e179b9439b73abe16b6c83d086d414cc069e0d5f1b21383ff3f53f7dd37fe84bffd10efe67fbf71feede7fba9f42494d615702c3fa85298f14b6d89b514ba7e2525bb552de502ba57833ad945224a2ebd175bf6097f28e4e0ebb98142d9929219d6d6e4eaf2791ec0de9f515478bf238ae1c9d9d162588441db9482fd3a9b4751c37da3acda31f9f26f81ae693b5315dde412fdb1a7e0eaed941efb4362b2e9f790836d911e77269e4baf460c3b87023853b565c0e54ed1a37eb3619a7096d34a64d20dab079479a363539f2ab66cebe236b63ba73db319f63da6ce7b4b077d87057fb8db663deb6c1d96c2618a46e1fb9d9261b35212da67db32012950619b5530f76da01a594524a690b4015541654d944d1ec521d7e37db85359c95c08a3b6e52da60c375ef8fdb7b682327411edab5a393c32e1c2174048103881f7cb861a3068d1e76c86146860c0c981771f51655aa7e1d952be0815fb0a2d4e5c9d5fc156a6b608fb8726f2466b09b8e98192475734d49dd74446ab047fdd512d7adf546bf2e8d6a3757475d69d43d4da4d1a829376acaa54d237957a86dc78699eca8c16e7f31efa01d99f4d284c6e9e23eb223c7e88cb33c81ae7c41b2ea2139c2d85c05f8812757230d4201add2a8946d568541ec14c940000002005314003040180e088562d1804c9624c9ed14800b94ac4a76569a684990a39043c600034640000000000040102600ebc80db656bdbb5b589471d712152188bde5cb01fe5499670da81490cc834c52aceea0611eed29c86d46dd22bf5645f053b1c79236cda767b05f68dfa77d0388447bc29d929bd2de8ca02465dabb39936c507b614c12ffd57e234682191a6c1f9c90d9630f08976540b85cc8aa9d4750057e569564d617513c96e45094f4945c35558fc745bc53f700af78b54e9ffca46b9f825b7bb70858fc67372498748c5889dc4884f1bdc49cbd0ca419cef002521c28d310e823d11fddfa5b342ea42dcc2af9dbc138a18d0757652e8ed2c9853398d09b9c373626a73641e862777b078f35c0063ee50904c70b87373d51fdecad54db622f5c7457325f110470fea97c517bb4530652e0dba5bbd0c7e62018609ba0587fe853a81e045d0ee5aa7081d56358db9ab9cf001c28f177a4502d0e09a781a907bfa5c34e55a34dde17a06c268e40181d3cc1b5291e8d6765571bb74b99b7e8844dbdc29ced5115042c63bd50bf63425e6c04952a7d41e8923831bac9593b20c3b01466f0d4516eed881f61ae9d606645704a720b34a47d66e8e6202c7f07732b82e15dff6676cb698f8dd67859f01d2cb319fb90fcdc1b54e5506f7901e7e31a2b68e2a083f60c21b5b08a1a5713b023c4210af9dda15bebd62dfa8075c4aef3a2a7971b50e7d1b10c11d2588639942c7b3a875c08e543ff4fbd9a3cdb6fe08c49e6de71c9ff33e58a9990cdf061ca3a10c2c4ac84a82389f40739858515c1ea6b162398e068b832050e1e25f448d55eaa787e0452725e43871899f18c8e05e306fc502da6b5f1062247ddd1773792e28e204a433b63ed1c867b0287175dd5c9a176f372e08205d6bb28b6358ea61225ea193a7d688145cfe95a17d4cfbd399c469df09d3448af58f11bb990e68fd7d217df84d40252558769b3c6d588b701fb08116a79861c1bbfe8df0ec99a5187f979a3af2635b0e552c9e926b1735ee7b2ba6d2c64f758a6466b11adb85a7b9936c636ed8ce6d9a2f4e82170404236e549bd65e627a2545d60d632e4570efbfeb757a57807683f5f10702763cbb4e6a26a7a39bac048da417d5ba9ec5de041d8d21dbac9db793bc5ed31e1030c655f27dc786227bf2bf19f4f53ea02dff02718274e6bbb78c4be0937bbacddf17730f6b621131930932095a8f67551e410597defd1c12bbae699cb333f3eb5dbcd65ab2e86068b615415d3389afa086e9ed1e8c8164a7f0b5d88c0a7312581058c6312439f9ce32962aeac52ace0362a58a73785fe62fb4b6c1f83049b394cf5df4e66baad099b0627e8f461a130788191e88b7d686f01cd76268402f2aadbd3955711ae91eb2f55d96e49ed42c705298cc36a820cfcdccb2e83525b1edd6a550784e31ac4d95c10f5d61c8e0437ed1b20edaa5a122e21062d482600bc6df1f19ee4701d890bbb44a979e824ed01c09041276dbd08b6726763c82dca0308bbb89cfbeae79c7d8cc8ac02bbaa6eebbc8b894f3de19d635f8c88218b290122b596bb18fe20c2c2a9d02b92ac227f83df75be029aaac50db7198b0f70da00aedfd0cb8fd35fec80e85ebbdb8a1ce1c4641ad3e581a1d235f5030fdb18ad7d900dbf97cdf82f8e7c05579272cfccc3090fa915cb2bc0f18626e88631b421ffe7b51752f428fcadace9e50f1edd5abd5e33434f8eb22c0f8594ba6fee37921084cc8549913373aebf84c8e39a45f6a158ca88dd6afbdc447a055653eb6212b2cfc07db08a2975f4ebfd3e33e8bd278de1482e6e128ee18aacb20aab455c4dc3926a933f0484f1267cfd21b172850760b725ea580920ec9a7cd7778f5145dbb43e5f4d6c282b22c24889d81ca57d37812aec43ec8cd843c4563c681c7442bf2da1127163b600e1124fcf7b778ec4cbc45f739cd3977419d3440231a33ea6ad46c64c0e7a07b79c0de7c90d5d3cec0abcd2d6bb0a01cc66e75dd7c9057854a18af84e1a7c49ade266846bdc35837867724afafc9d40908ebdbe70314a25d1669521d61f53763e07b87fbd2aeedd3b916ddb7b241e7a8813fd9b205141493ad9d27e1fb24b0bbefe5c4daa8cd5a64e84ced18ac75091d6d04a18a003e90560b06113117e1e9df02b74df12772ad8a1b6797e56a671a11cb45fd9e28229341899416cda692159d6b02954e670978752711ecc859917444552404d7a8af6169150870d2c748c1bf42669621d3370eb83e1e7a922de9fb084e747f06969addca7a4ad61d0ab3e277a85a3c1e8dd297bf7406d0a10cae511b16972457e524a4ea7d904e9f8ebf14a8a3486b3e84a51495055679a3b6c83d5724faa10a17b07ee1e34e7c0793adc5142d51d86da5f2672851bb2d3722c406a4951578f0489d2233231c253d1a20485de13256f0be7e103b0ca3dc0e195ea013f56917e9870af283873059e5d94a91be034ccf62e354eb300eff78f123f22aa4a7d46f64ce24a777fad95e1c6b1994c70c6f4a6466af2db6402887daf14a7bc5f2d3108692cae471fae681ce9b50de80bb5a8fb389b9496db3a292d89260f58d7e6f39357970a4186f62099a32a562ad56ecd882c1dbc477a54f3c9beea694ac39a16145f5a44d26c0082839bc7a9440296186c3ba4693d473ec79e1dc570cb5bf3d022cc04e20192ae31a2a60037c3bac6639a49c621f27ab129930baf32dbb9e1fad362315cd03ddc966fe42b5c0c164535ab1b09f097321b4636ebddd140ced27f60567e6e24fc11930252852f7bc0c97104e8799efccdf773d31a1f7d45ada17729429616fa83bf88849ebdb1c61c14db8b7951d02127066903dd757e0788d930806adae409cf862e5aa168a6a3a6f5f44c7a5a349b5d901c3329aa868d3100d9940eae83cbf4828404b8477091f7b656607502723fbae16efdd16717a0bc40943a76440e81405ebd9a0a6748095e20ec2c3d69cb3ba6295f82d7851b4f2134882f0e35e3b55a1fc7befa115b971e2916d99f4926fb922f8df38632459483d24cc9746dfdfbead6e61b38e5420fe077519e8954088f6fc1ac471fd9c8019063c8f49acbdb3fe3f0676b9979e1e7be456f755493376a0223ad86b811e39e49211fac5d222a280feed2ed93b8abce6f890f08798c6f81f201eea0220738476624484a1770fa4d6c7820003d26776380ed8006a0fc72340e86ad078360cce7b83bbf50e1ef6fda8fc9a520935d73d039615be9211098e2d56c333ac7b18b593910cdd636130bc4c95b55e731bf445c7247d2fe193b1b8f5678c9ced8cbe8ff8dd95ec0cc158172b3175b4b07cea65d2e1b37353c3cada11dfaa10cf987cf07097e00c39b29f6e130139f54556e94a9ffbade57da5839c93664b87ad68c487bb38161a08d003464716c5f3dc0e8653a85a24b2165f17fe46d5db9d01049ffe4194fd09edb33eecde0315679d102ac5665227569f58bdfa68dca2f123ff5b3b2a8f3b33250f412254e5472f55439abf7ed3402117217b0220a36f419945300c64a9d377b8a0ffa03103e86b6d753818dbb43450ecc824c4a64d050ef39cd73f2369c1d4c21d8ef4dc226aaa68bf58f1bd59429737f76fad3a188584dc90231f88e6ab4b9e8f34a45f47a46f33b2bb99065ed7a140635fe4e780617f1313828e59ebc6f8d68949692fbef6fecf3b894fdfec24dcb3830be1abeba70203596e4594549d24126a403bc14c97520c9faa318507e47264f4126ef05cad15ba719860c8056c1f4296dec93b156801b1c85dd9bd9739d441debcb3b24039ccd7a05e4257f7dc26bfa93c9f8361c69a20e765c88de048552d700ac0eda0ec534f64cabe89939183f5331c3f3166759578420f7f426d1b0121c04f90c720483d417b2297a8acd10da5ee925812be3bd1321255152befad173960255c4fd02f2da8e8d21f82078abc11c6fcb955fb082b94e2064b9f394fedd6264ca55043c0f8e46ccf23efb56d6490f36a3165df0ebc6e4ba89fc6c355c45fb05bc86318ca2ffa1398a12eade5979cfd9334887e7563d8225bb52cd471208101d940df935813e9da541fad70648505a1c0173c618591ac706393406e38cda551dcca95ba59dc56e4d932777bc5489f7549db3adff253ab06f9c04e3255d3ec29a8367cb717f13f8942bb1f0f2442b36a6ad0bcc83372fe524f18a0d75e6526f5e0ee88d805ece1913f442400b22be0c0991b4f0c317b1b9daa80193367b700bf337c4de21d78760c69a1fdd94a439d0dfdcd0217e46c42b1ee8c92ac655e0ed8054a6cf68d3e648ab60cebba13ba0f57adc8233d3a3f4b5a5fc20e5e0ce52871b432875c6ee065b3fb1a82d04e117964771a7ef3a93ba11f48521aec7b305c04824334559c1a62c76464818a931d9fefb29c5b0b946be87e7e22302a49e0cf2cadc66e0a95ea0639f4ae0cff55727d5ad3c85f0056f0b38efb50cd6310ebc81111b4c6dbd1bdbfd85687d6daf9952d26055c1b0c34a31292b45e0ca14c541d45593b8551018f10f7e167a8556c8871754a1cf1ed9f295560c2401fcdd529b66e771bd7991f87bfdb25c30f6e688a7e4fb45bbdf01c0b1c536870098d70aa897f1548e099c250adb922dc664b168cc20af84494398c7b41d2bdb1cc73825717ed3aecdb2d3d344c1a199285ef2020a44e8d81edf585f51927c0ecc7a72d7e4ac29cee0cbba844976171ad9fb5d0186c3a8fbfb75c9e2656fd2b93072cdb258fa6f6bc87e0aedacc58408a9dc1ab80c0342cd72e8f5b8bdbe2981f012c9c516eebc8a22f2ce662b80bce87cc4a13c5b42e064dd0b3a149c81f7969d9e01e90cac4154abd03d92cd2a4a92852053e3a3ca2d04859b49588a8d001b97435bb771a6fd985ff74274051b8039670adb098b77ad8b1bf27e9298b1a60f356ca1f4edde892de1a0edbfb8a2fd9a0f5745d834c1f531f79c64684b2fee128d50a0adf58834d4ea17d0906117d070ce40592c1b596794aa8a33afd10a37fbf227c7a9357a134fcf0806c8d0b31f656cf3f94057cedaf0b81f2f0e38f4e4dd07a5af96cb9542c2624695987542af84402414e4ec1227d65c973cf00756b61c3513da0a5e4049931906697e5748ca9cd727e73a937311cdd7cd9b40c3db78a916e4183b59ab610dd45ad1d96c3318a0511aa837f135aa1b82509c9866ee1baa446e0a7880a4e74a636dd83325e78aba98c9a4f68472817d82eb42e86f9daf8f683d0eb7e679bf494bb1028228942644580386293cb14f6aef179665569e25e092cf7803b6072a06a93a8342a13f03cee735d5f90cc9f8d483869a907c67714c9bd9108856de6efa6d51ada84a310288a132b1d410eedf6a12ceecdc56f2ae2bfe1441b2cdfa7339063d12c7515ea6569b5fdf5bbdac5d17959e00b132956aef2c24ddce432acbfb4433f186967a48c1d59c67186c6dad70aa237bac19a3c1c67a201539d9d1d6ed19369753d6289bfb9411188a2018671856a8e278df69de57c2b8f1211837ff88c3d147e238f0211e279f88e1d22fe1b849fec4f4487537970c3d95ea2e704fb2158fec7d957a69cf5d18f3510645e17925975db64603937ed651912a4a889ad67fcb8dface3f25475def5f25a36afb3f6551bbdae3bf4433e710b0680b03e59c887e36e7de5b62522b1179bfe61c2ea3d778446ac56dd67c5d154ea008803c551dcae61a7d2a469f0ae640b96673143eec1b99283e4f20b63d593c72ec89edc4bad8af58120b2b96c298847a231e2526631a122ee223e688f55d58e838e2079685b8b8b0a140672dd6e038539f98c3cbb6466e24193e2a0731578b21807d62c49c58883af6fe5838fa4a18e34fb5bd9f555b2edbfb13a8bf0471ec8708eebe11c359fb79daf1f1d2fe044b890ae1d27ee1908067817e484d032f49a6353e1023f545f887991f52d8acfaa15f970d816b25f161a56067e8a43402c709c2d8b13361fc2e76ecec3af486838ffb65810a028954981ba69f9f6724219d881437436e44e08bfeb4e6449b24c39424e29867860e30a688d11e2a7699bee56bb52e23a83f519c7678849e4ddbb3e8862e2355a7219328465ab30bdcd684a8c0f2c80246ef6d2eab60be6a3b98dc1ab4ee15d944b8280b5885d2da2ccd654c19ff4fe9d42e94ee6a50b1b04b87d97282fa7cbb61b53ef764d9f0243ffee313424ca485dc573ec59016dbd205a2d78113c3aebc290b0b10b116b35ee17ef2e865c355a0e9fc604738450816b7215d89579b1c89fbd7e57bf0bf00103c789de430336b2b9f68e62960064fe5f6d5b98363a037b0e73d24b13660f8a183c77c8a3b3ec51fa6bb3d7908f997c931517c1e2c3c6befb4ee2d63249dc3250ab2737b6748a7fbae9ee314f0ce7def6cdf4d96202280b67ba2319912edac76df0472dcb07c37c77ae78f92f2edcf4a222adffc9f065b409a7c93a7be818d5fb3a8b52d19f88eb443997b8ce41b77f22db15b7c536b0f4252f709abf17ba3609fa931261326706db49fd7cd9865cdb0477a970d615a7c725f800a4ae38c2ec8c3d3e5e88d56d17b83e8161479091066c4bd1b27d8f55d5d1daecff0d848783932fdfa06d0fa9e0cec39b5782c815dee799555ebdbd0420b778bdb5722eeb7bab8c56accc5d3ebf4c1259c0678eab7dc012958f26f58b98e9cdcfadc1ea52ae44c041b99296114f5102e001073aa08f15a63a9891889ba931b46f01981bf8e06328324d46e37b8c96a2f43bad9b754401167b139b98d9038b24b684e714e61d0213e856c19e598543c72c2b9f78eaa32f8470c46ba71506bc81652fbcc788c3d260fadeb14df925d3eb7e09877573267f28f4569638c451ed33a7e0f6f705653e1e3e8b5ed8bf9647b66914d4c1a8ced271ebce8eac4f807d06c2ec407b4cf46f7fcea6916d0460651f3a3f9fcf5608fc9a43f4859d6eb7e67c70843971a2dff0cdfa6dd9419105e76a4342c07ef82015f7506afaf2039b00fcfbc0675933bf6f1554c41f2b853e8915d46e8ae3cf26b5a6faa684b6f49e7a6de91f1d391ab243e4706bce0c8cb62c217297ff7762ac068c3d18ad3fa24fdae45e7c9a4639331c58b8e3a1d90740c858ba653271a0b96733dd5af364b5cc25debd5706bf16363c0d3ffd571d80222fdbd6d3a5feb01c517d31776c8fa4c8f900eab1ea1727b75f32413d1ed62dd5a030c0c137994829cf4d4395d697755820f8bf52d8b5d7ad3112f04fe229682b19516499c897ec7c0e2afc48631bc7468b4f716214e1d7e24e99d929b38095614d72e15de45cb8cadf31ebcab2a9a7259bdec00f0f3534fffecc6c6553c06e9f355e97be3503ed50aa1593c06e7012246c31258c046e929dafddb7b0afee9050364a71864d4061975b5048d0fe278970c5f48090902bb3e5f9af5a71ff3c010e841568d83bfb92e2016a4c586a621be9f91b2694029901dd4329ab509a2742f0f3f8c5dc2fd9a93a440a0683e03753624fc0469cdc8d5a6111877f977ccf25aeb4262d17a4b52502c0e04ce03d936e87a746f0344a69beef2e3cd62522a7cf8959a23c4ddb262f6cc6c0f5880a41002915ba63a0e68c98024ce14492f21a6a9f30db32cb80bae369b5cce0227719e762a1ab045c89f7b029007a9911a1d06224d8409581b0d4ebabfbdec05e2af408d81690ec770346e77ed62e29ad8f7f4e03a5908b05ad56cc724f08468226d73d9b8f95cf113ee660f3b697d2db92a22df85f3fcb805f87494baedba4a8c148253e6277369a38e21267e0fcfbf6d4f62f3de32a90e9a6f3b8e027aaa92b62edbfc454e09b511c5f7ff1f7849d214e280b6f43c69243f50bd75de04bd4f08860a2e86bb1acd995fe85d74b642933b4dbde5054eb3fc7c45929254c0715fa7db6a407a9789ddb01a2a3bd563c2e0155aa5785030e1646971ee5bf2df68784b5ed809f06cd7c32cbe86bbe9895a743f195e94bf033982cf33625f22a27215824851bc135f46cef90cd772c6077f6667a6b0a1d4e6bbcd8664fe9c7b4c8ff7a8098c0d7c7463fae0d4e588be2bdb86259d235cce5b2b367dd3ce735dddf4ea188c569f8ca3cf4b7c3fcc1f833c6d8cd746cbbe2249315b55aace8b0b4f33736b4f3fcfce71bc772c5363526ddac38e92a6ea7d78e6db0cfdc4283aac9ed36871b4766aa72698d228e6db41a0091e6362548a7a5739fa4af952a84bc602a065720c554840be2a34f8e5cbb82c6bbb50576bc033141186aeb5bd1a407d1f43a8aae1aaf0433f93a9424ae2c5f8d2c9d045f057f5d4c1d52d569b7cf7890a1398b062fe0f7d7f0668186613b38f16f6e5394cc97dde576ded92431f2e002da0ba34f7655af580917868f99c38c912ab70c1916b8428db36e6307346cf6a528dab55d1668ccedaf8fe87b7269c41aa792d6c3c470362edbba425d16fe6987a42303de06aa3b280ab31c0f1699a4e78bc3f862c364dc0af4d5062d1efea943315f3ce92bf663bb60fddfcf2d4e010ddd0ca9420062da5e3104768fb2903e8f745a71d69db5dc2daf17db58b2e2cb3d69d9d8dc8813bb83cc010b39dc0f7ba21c8279fbe2ec5727390dc07c4b212411a384f1447581f8181197e993412ebffdae4e2b6d01cc5ce39b00c6aec4f5b9d9d0699a423bb210e4fb62a743f686c3c6df3043160a1c180a8def8d7250df71702bc3e1d30786aded5652f7d7434afc85d958c0623ac40ec62cd6b24128845511be8325f86da9ecf642df1b01d97f8ee22cf47c5b8eb35a6aed4aabb485e3044f8381357fe54b95f7b1ecc23adc31301347f1ed290c90f7c1be5d76528d01a0ee3adff1af3eeff68ce9dbf93460445cfb5906002aef77aa96bdef9a03882fd0975c5d4f77de6e6b5933ce3efe2d3ea43eb01fa4893ee64cd1a9f08ed0e059216d7aaff9c35a931790f3913b7e0c32df97853d2d5575f63b91ef480cf0f4fa043345c496948442370555e8c93ae52b2559df666733f2c202c33e1ea80456032c964556c17293a658db6b9633f8e7b7fee7383d9b2f06f5df3f26ed9d6a3f6fe846bdd60b78f9bd6c7887da3671d62d51f5dd64d257da4637d7e9e6f675847ef608f816fa3239f0c6f57df361eba9b5b1d4f8dace9eacd0648efc6394b235490f9d4bfba664450139f9dfdd7662854d31f385db3e689089d76a6a3aab5b3ea8c0425c944ff0e6db1a8c6f880d9c7b0c9547f5286af49329cadbf9a47153235739b4f789ca161613c9a9dca09bbcef65a352f5303c23e0baef5ca115e95c4296919256351f68c09130d8683382ede0bb0d0aa8ad9e595328efa8afe94a93f00ae35ea9dd492b56fd690a35c7c0193fb38e706c57743b76b4a8089afefcac4c6762d8f9202d874c7f22ba4bcc16d46f5dbfae3c0061fab1b28db55f3f10cb2cf53a189df7d218618d63f6fa1d2e0df9e3324594b8df311e264550810dafbcbe057cc86cfb46192d6b10d548b753bc4fa55a6052c01eb46a3b47f3f61aa33774afbdad57f262b6d8f029f317048709b13997568c9f0cd1e90e60aefe7d8a10d6c872631b4af87a0733dc2ae3f0fa774bafa2077fae199bf527d0ce1bad9ac207967d35943f15ed3355b86b25e67be5e82ecc5e76a2143a1d69432a90530577b44ed99f7f0bd5abfd109626bba9de7b4d5f47b8fd0b91c1ebc3bf294534ab08f308aeb24d6c61a0c2b24cb838c859412ec070ce44a1275839b1f0ad34c736a2e65021764a3032f2afc6690aec017df8ffdfa3942508e9465e9152ad93a191e68c65277fca441141980317ec38551bf2c2405b2bd03d89853779781b9419965458f35e4b456692dd25a405aedb195c79622db0b6ceda8d214e45e51b502a9e74ae7a2e76e64875ec2ca8c0c8ea1a905116c970e41de2f8073f5541d84bd7cd8f263558eb169a80a7604bca3829cd0fbd4ddc04fe4b09182b579402fb1eb791c3aa1bf398014c896a17608b551a662d234da66fa96193379b6e03d4e52b9cad24a7572241ad9fb8b4b6d61d696a650e64a260f1a6beeea7b31fad699e383ae9e5b4b2a6e35fa03a7991b455882acd6e56a0c28ad0d7acb888120e1117422107e0d4b48cad7aa5e0272f972283ad5f256cb273550004133d48510888afcbdb054f2818f5392bb9db3db336efa9291d4f2904b6dd3d1e0e9eb108ff6b8473ac41f1a691ce6517c6117bec65650e3160efb19d0f816570a2ad58b47dd4a42464e328f3e8a672a02e434dd8da747669193fed0fd02a95d34b1b2379353a724f395ee8d061e3ff782ba268d1c00d6ce980038a8266a75b002b6080083f45d9e5281ef2fa46de2a6a57d604047b699ee3930dfbf2abc593cdc5c739efc5c2634ace7ab26663df3da6ae906c6d3a2279008968cbfb978b5887597588782b1a557f28a85053433fa47dea32c3ad68aa2bc174284d44de975a1ad572921bed6f2e1f0a29783cc3faef233465f3dadcde0d746f16c5ce5c57cfb7063456a6929a4ca5323df8695f5ec5a6555b3954a862e7cd8797e76c7dd98df189884433e9552640f80fc6e192f74cbf3e0ac040007e253b7a7e00ac07b5623681c741181f745106e3e12c4bd0f02bc7140dd63bd548a1113795730c185920088d4492ff71a40840493c2df85485ab044357df44ef02a9d0c759ce603cd4d998301c7e9a64734587c73cc4050767f1575b46b4fe68b861af8c899999e597a1b447c37dc56061fc98abc2471b0427cf577625cdeebbde771e7e8f6e7ce247186d8025e5fb4c63c81bc8da110ebc327e93f7590a9c5409945c2a5652a49417f267a1a7f20a5f5607cca6f89effe05c9d436180da0830cf38e8319a5f4ae2e44799c317dba0508a284e9965846734066e9992c2a1e1f28728594870b36b30fe231196933465411f49aec98013f0c1ec720278da66c7c086da9ef7ac7a3414ffbe2cb123668b5d34d276f8d9c34164f08c086b75f6415d73350ec00e79fc8ca7e20611cf80511eb4c8a635e2c5aa0d904195b0e67a8a9dbe03cab2aa23aa2206e9b4d4dc8bb7bd96085065a5f2777bee3f0257c6f36eee53d536121e8cbf8ec428d6ebe2536fb078927ace69efef17b9534637a96f27b3dc1ebfbc067ab9b9b605d5292d6231456176ffd343ff87bbee1aff9871fe7237e9e3fc6f784a2736923725b65690f6fad6b378e927074b2c5fdc09e1e2dac62700c4fc69813b789066c23e310df1a78359cd2dd9eb474ea81906f33f34631ef8926a31a2d35150cc7e26b572faf07b3d8eb4ce74f9a0f3315b98e2dd27e03c9d6f4cdb127f613eb62b3624bacaed88add196bb13a1c9b530204cdb12434fccafef59341eef18acbbe8463492fd5dd486913f036bbf6d26647311a79a4f734550ebae0c0ae48b61fa15b17038626455314bf4e8a8848a0e5ca4f0be9d09e073b2da659c60abcce6f07e04e779465d3405e284286d39c188c5f0909fc3db8f8b8817ec96c3030be211c39d2c57a0e28b4eb5f955318faaf28c65e2def610fc683f851a2e9c115454eeb0dededeb766c785461ad7c5857516765f01562e4079001a43519574157e3bc44c83ce0999c011e3392a9c9d3764aeeabba73ac032bf7d62e06fda0ed5316796b795d7cf3296910a1721f6aadcbb7d365b432512611b0ebe095a8591dcf56adccd275a764b5b73bcff9333f9868987f6f5ea1d02afaa44e6c4bdc85810ea2d5d17b571b54baef7f923a896f4e74927b710d490815de25aa70ba6d243ced88e6821628605f6d84fa9f7e81e89f8f25499210ef245a21bd7390263fcda5fe126d696f345709f01f43f4de3720fdd34650ffd3d3a0fe6715d077a192f26c23acfff644c87f0a5daeeee443b1438555f427da55707f439c16a8f681fd7b87f81f4484c14a3fcf13bf4454b90c8cb30420f631e38edf06f44088bf836888affa09259c7e686007142ab64bb828b6ffa647127f9ad6599532f1bedd607e53fd04d13b7390f6830612e2d5f81c2a3f4d54e174abb572653b0edbf76cf625da10fd73d04974d4feff4d46925f99d2a870ddbc67539a4fd9a1673ea0bf122c3770fff3ad6cff3ca0cc7fc57d263e079f442fecff2f8292f415c84dcadffbb72354019a64edfedd9bbd0d2ee88d5e4c5f56d2d9357265c3e074da86be60ecf95b7bbef1462d2c5bf1249c20819420a81532867ce3f1bd10c3486f942e20d47a4618fa2bc72242dda004ac82329915acf501387149bfcc27a76398e7867f37a3bce0a39ddda848ec62d9c5e8d05ae8e162a4cd11c21751ffb2410084a83864301340b95863e058accc75b693673a36054dc2b654fb8d89717e390f66bac590d73265667e3a6b0c408350a902c8d357dcb056d4038b2307550aa4ce02c1ef0860d77a9f559baf92d98b8f37ff176118c0c610999d3590e6895ca50a379cd929c69f9cc9a2e88dad88113b6b2cee38dfa9ee168626a40c0f0d9b37a15334ac11098bffc3fa40f061e521a647afdde6bf84e118069fbafbf726de9695cc332b4d8685e13ca20b762118f7026d168345958044b40a5eef0264b2a9ed1b6d4591c56559445bd03ac48feda243a446062a969f4992d4877ec5897c660287a38db655c239cda5c52eab94d8f602e4795b06445777c820da66eb141bf0a364d8805ce9b613d6e2bcb4969334cc601ac35ba8ec79a12bff673472b3130f4469b240d4c562c0d60b0359c45c37076bd7244cfd905829f127103408f152801ddfc2bcd5ac7414bd58b81314523fbf203ebe7422aca3da2d79690ec2f9d1f99ff71455a0f7283602f9efcd91a146471a2334d774e0f08da14cae7565165470cbc01854db997168c33287e446f34596f92200c8c6c4e89b228c1f385fb330e37b35b82ffa17b549efc6f0096aef5858e9944f695ef7fed1abd84d3efd28cd6c6f98487684a417aa1119839ba0e95af241c4f334d0b07bec375c72f7cfaaa7e4246072c8a15cb11e44b15efeebefa8efa518792c1ac92f4830d2092eb8f720a9b7a486d3eb955b2b6da6181e4d2be859bcad9ff47e6e4e944d4983a16c01f4608fc91bd0446eee1e732862542c25b6721c946269a745b04134078b68ad1200f98efd31ccf4ff3cea06a5f08c8ca582d8210b35adbbcbd91fcf8b2b50b25eb04bff026e65b5e7da6268b0c178d0ba6b5223ae06db601b38bf3af78f82b98a8bceb7ef37b3abf067d29ea1dbb459d64520e9f754a0e6a5edf412c366b04bfc4f2ad0acfb1747b2ecea437b57d85f3f2f66c1fefca05e3da45504c8b54623abe29b39b935f941192255ff87c896afb868fb8a7453e3f3704a93301c48692d2370f03cebff12425380e85fe30f1943fb6f608b9411d9c7e64a64c229ee35beddfd8ccb23d623a7cecad7c0d879151fa9f096b4a32e0e1a19b12a7e52dcd561aedfc2c6bbc2c630ad0790eb158a0ac370c0c44f620334d6f631a89085f1445643a7df33382a035a9dfbb7f2a0e6d5a1f6bcd7ec15c5b308d557041b56e6af207d52b9c0c21bb162068b609e8414169c2e28755834c724596201d5414d8b453acfcaeb99701bbccea20e5125718daec200e534e3a9d39d2f62e430874e1c6e591df1c5bf71178b7e460c9f6c2befb699a39dc60962369cc44f13dcbeab6858b82fec28392fa1b0b53710cf9d87fba934f3c92ac676cc6ebec623996598ba6e1d012ec7ad519a2f2a1c9db7433573243839d792c298335ca4f642ba942fec52d7327f640d4d61ae72cbd20067992073c83d5d2a8dd741ac996c0ba39973bf7fb0b98dfea1bca42e420f445f502bef67b443ab5902e282bb600bfd4fb38b0284ef035c43f3709724564676dbb6376f2a565f339a8f4a850c9e1cda5c90f910d91f9fb7c3623bec498634ea53709d5d20f882b9685f09c19e3224aa6584322324587f0060f0b263c890757f8bed177647c9c025ae2ba04a5c80dc7b34b26166a4be183b199647bd40a311f778517fa04c54fcd162c57481bc4c56e5a29dab21e162ea8fd8bb057d812076f007aba1d562daf4cc849c5ed1a224e9021327ad3597947489e57195c50bb4cd2fb2a179b3eb8da4780b22d6089821b7403aa6cbc76147221f420a71c3be2074aafcca8d27655803c7e35f0579166674bc2faab14d18f3a652b9043df18c36de8ea6cb0f5c42ef3f9b697a66c0722d70b0589349baeaf9335cbd9f30a941048756bce7bcefed243cd9b41c4dd0892d87d257f892c0fdf72717eae1fd9df01918b078a91f69e17135bf358952c5d74929267d20a1bc08ef21c30689e20fe87afcd10e0bdca790ab514e116d3cf16dd1059a19f0d210e7949d3a43fbf9a6db8cb58f42b6c290e54f493105f065874f7814a726058577b00dd6c5769db0d8d45fac6e84f13168e89c25685a9d1bb71a2f5458640fd25f96688abb07cc53a7c5daf5393f41b3b3a168504daf976d4d6ebd05daa8233dd3b0ca7db597f2c04433dabcd3fa3cb505122b10bf62c8087008ea90b53246fdd150e6928b06e42aad44a272969e00cc50fd40098d9286ff59b07131571c785c728bb17d49e0134c891a06caf1ce142743f9ca17be68730e80cfc88c6fbd33b99190e8731b74290cc28fbea3b806790acad6ec0d0d4c20909899b1e87383d4511f4cf2db2c498cb8fa17f545cbdbd335c9ef2a84f4aded89488c90d7a8a7fec04e9ee7f5dd249e4a51827d083ead2f414f50c030cbc46cd8b52bfc907e357c8ad93521367ad117054b725d28a61945d85581ce70cf4d0062eab2af924577d2c3e8f50ad06648c92888b43378f315c39502c41b16877867bd230cd922ab7db76670fca69d8e5e470cae062b1ec7812822076720c3ff8d73b4a693c4d087b1a2e503c71da60d0ada9a1d6b9693f4f8a33f0abce6804c00143594ce1f6731c9a39cfc6eb775ae81a92f2b510e18b24822943c1f6c8400e2e20d2cced2a385d63b67e2da62eff0057ffd58caa21b86f17387486d0fc73988afbaa29ebe3138ef05853d88e922ba12acb3afafaad5647d6072f878d4f3f9123dcaac3b3e5acb7cc8d2c087e7e9e79cfb43b32dbd08cbe820947ce68777c7eac2be6e5d66738c0f25af746cd5a65d305f979c8c72cdbed410c8046baed68b5c202fd489f3945e7aa214715e0700b8a2c442c607c7561c669ecd84d30d2bc5761e0f607b45fbb66775aad634f34db5165c4597277aa61b711b8ee85e7ca29630cfe00e783c8455dc1be563a21411af71b0bbf9422fa5fdc2538f46253c8568d4d23d6754f2f7f388a258e3d4bd2791c58415bcb44c41ba5327538f250c52481e9676ed68c6f8157e5712686f5107c4c713f9084f6b77ceeac1420985d170f847b9b92be082701aeee86de3a2e986f69f205af819cfec5bcb46ed7186fb9c8c852eb85c1dba597683ea430f145f5d4ba8a52f4cd5c857aaf8f22a4445b55fd4807e797cca2a31f5c4f5db41a4391c55ce9fe231c92b4390c9d4311113f5dfaff38b0bbda3465073e02b0589562952d0094122b62d4066ac73dca7249ee9073c9cb0d29b427353f725256225c09cf60a6210a831499dc62a5674ec8cc1fc538f1fc63a02a6e9f754146512699a3f164384829696c51fa0fc6ae43a4acecb9f831968c45f286c047b2cef38e52be44a89c219465336eb6549a25af95f284a2326b40928ca8baa4e4119f49819d157874d263e2088e049e86f9af85bce0adb7928b92b95e6b05f114b50ca67ba835d431252d51b4490208d2c0061823655cfda89fd1f6fa351c6c6d79086d04b65139e7756458aef0736e077437726bbe3817269d36a0d5bd03c8fb600ac347ec6058d3d10ac2deb96a2fd774ec72560eb0ad87386074c899cab5161815195756c5a33016249583d260c0fe4409495b02b6554d3168398bc263a74afde6585552169408a245dc89b5ae8ed207b759ad20ad517485f354bd5cd8fbf3410a2250afd86f504d2cbb22642abf5f68e0e1a927441c559b0f1cadeab22896abc4a35217aa73df9e4a688308d47a5d13b859a4bd58f9b793f1380937707e9c0b18d917259ca7154b9f757a8ea3141450ac1ef062def30215222caf11040b24c2a651d7f3c5f42ef73e91f041e2f42af85b79a271a41e0503c9161f1850176da726abeb5ebf9ce66e3a9f3a894ed8ff21066c5b20b723a985973f6cdbea4adae0e6e9a52c702151cbe644b47698ab3813e0d49037b3d80aac97f455debf71da84a3741f1c7eb41ad0af47a28fd6d8e2b06b9d990ca1b51adc37c968ff391b05659a548829b56abb2ec0b5be1e9c6ab70da387343cd106f84dbe76b744032e011cd9020f36f6628bb873bf52f2b058b89f504da0d49be02439ffed6fdb07256670551f8cb8a4e241f100b52a3644a540e30cb034646bf2a46ee036f21c4a05718f97733b51fac87870617b5bfaa35ab66af0a3a4bd32b5218e217994b9e2ebf29a81a294ea7290b17145985f0bb483fc5b944023ecd55322b2056b548912bf7968478a860750862e427e2421a9d066a7fb53277f2d413ce00e875c7745b5f5673b4ebb859f44106441a20d417dcb0ba239e2a4185c817f2f428449baeb4fd72088cfd10712405dfdc044183c173ac2e024c594659a3572c4277f1119c2bc00dde621a1d8878400e937d33dbc6d09057042e8737c8eb638600197f9c7a5a78c9c581e0ca850edd6c1d3e2cfd6d9f9d0e94c397aa8376ff085947ee941876af26bd3c4a44eb1bdf983d668a5a91d124653116ec8cb9ac789276dd550007f37c53c7094c3b9c3e247d1017709335b8abef4681f81d5fce07388537c915be2262c3084d195371e55c152bf3b7f6133a14d992682f68ab4bfd2740ba4fc4b0773739aa2313693b9f450733a043afd9df98dd3add02f36660f70b91e8ef0ae4a6343d03a4244db9c6ec59bb3e99620859be093506aefb848b39c8866852af70c87abae092e7c3069586e4b9f2e6ab40d9b44b33653345ae3fff66218d336172b60f4572f659ec2afc9b5628e91ee33a8c3926446339a8ddde3db8cd0e1f57c4ffc17c231b0c80c054dc6297a7af8004c4cb93862430f0abf35019d1f20ff6e68992600bbdb7c40e029565335a126d8a644dfa8a65e2f43230e713cac54b5784d2a78fc3e4fa2b2a6531920d6754211e0895d210c9825a24a7e564b30fda10d6b8270b9e046faaa46c07a0e93e832ebd4b0a23669421e00063c7b109780b96deac900b94c49f43f72913112e8100180cf87350639cafc0eef9f3cd985ec5da98ad6a8f86d403535fa8f061f795b61b002fdf210f630eab322b8bffa5f7a14447d0836ca46ce671763c6445d7ee0bf440f1eec2aca6ef1731a8be3fb9b4323df1f3a645e56b5fdf62e60749dab8ca50284e66692e4acdfe79624ce2ba056ca625eca4c4e1a2a7a5a09595bbc119b08c4fba69499e666a69d18263d20bf2c9310cc1b700d7e261f74b835876c7c61d67c39025e5b70bf3f97ab5996e9fb0f84c9ff8ca078dcea1207d27cee7d1c351056ef5b4ec376895487894e0692ee3982dd36c11600c987d256bd32dbe4d09e668b859880b06ba7945e133cc1ce2d624d5a6d4ea0126577e1f70e8d78067f0f319611adb2cfea4a4fc4e3c71eaa1495e0a58b11055980a45023ddac35c399cf77ae6d390d2a06d818e46e1f900e1a03202326c3e56643b8d6bb1d5a5b9b07a590ab5a92e2b402589573af6ac43cf71b505958036fc77595bf078a35902125fc6656f1f0859ce1c1b4836446419cbaf2909f35a70b86c8158ee17ebed8e57570d93784830e126fcb02901697a5b24a1a8d37b9f5ab8837d94180f3215906de5bc8371d8f00310288b4eacd0201211f8b01014c074d30d5dcd6569d58209a80c64a2202b9abe7609fa2419ea8119032fcd216789790562b6aadec0b14e4ab4b29aabe8d13aa1d12e4c8710be413e671a65a1bd66b4a9c0e34316f7bb2fca67d20d53b8fdd67f79de0998dec0cdc59654b4d44adf0441a21586166b83ca5d40e2bff1b9d13427f6273120029a5cc7837e0bb8b9a67980a8015899f6075329457e93a7d428303cad1b8ba9d111ba325f032803a807e576572ecd082d44568111279f653907b410f6fd9cf8c5e61a3fd4e07ffb33c89939150d4ec4938f88208d0466bc2ecfd7c212def7d580f8c6f83c7b4e561f6812cd375e2b301fee1e94aac7fa4be27f4580fd6e6fe9c9f664c1b3fd4dc00e1e80e5954ee192689f43f995ff97071b082687489d60dab046be8dcb8db582b4d388803ec478c3ae093771b4915e7d9ae74392387818324c2c99cd48e30a19aba9d86004e9f9c2f7efa8eb4cb291262994fb5ae2f3c0dd3fd7d78c98bee9739acc33f299abc440974c5a729aa157fd71187d53b9183c0bf934deee503d9442cf6c74ed6144438e39365c69bea56d705cabef86c91e8d8a88952443f86711b608741d0e9ddd2038cdd3a1febdd2f6d2745f79d1f30b552f7b10877e2de7055e55d7c019d9dc855cfe3a2532c3957ae0594b75bbf264da5053edb1917645b18953940b0c9b97a102973e8d61d8a24aca44b504c53183e3234ae7e1f740c43a82afaf7ecf0a9c34a02ae8e8312f9939a0c8e85e15f69b9fedf8324a755047bd85bb547fdc2aef8c75b315e484873633430c20d00e500bb9fc8caaf6f46415636b7345276b3967b1231a0ffe1a450e5cf8f127417c6b87fea6559eb98f4ca90c1183dd4668a749893c7849a44187cf75e313b2ea586e93799a534406ddbff3312908ef49019fa663a2985248a19517fe7f69e834d6b2f238a28290f1c02cb6d6050d65ce1fa76584892918834c4c26c77a7e67b42c02e6bb68f1f41ba80d771ed9f3b7317e36eb31547b3c0b30b90b5361d6b090b098d8f53ab06d6410544eeacca621605d3805bc5a98d825fcb7a9ec972790b774a5fd788fcaa8955fa135ca6a70e9e51081c72d977c8a94602648a2bbc76e36e49108389e44f321012b23b394b7911ab57c3b8d4a2efae82f22f6f0e813929810707bc399966ce12846445d6703d3cad2e2721d6b44913295bc9e78380e91f95f7345bb610850fb93e212bffbd48d153745d2e4e125e1b309fd0708972da17357837833430646cc224868f4623568c2029815867c1333c04a5c1258d6d1efe3f2cf441cc598ec9e9ee198ce4b89c6435cd4b1ad201f5c3492ce744746879456e6ffa35987545e57e7d02569da018f232d8ed42512bb0803e7b61175427ed9bef647b9bf9aea3f327129b38ab50af4e582a451cd583b9d091031cd6940bee5f2a74ae118472367254c9edfd528fc08236f30590144f0af195f343891a9ff9873ad434d8b0863375af133c9d6a9965edcc34573e1aa906f977c410e26a87678a6b4f12e429dd365cf14ec0bc332a1b8e00bbb6b9d8e82b3c60320ae1219bba0e80b229dd264699dc080ec90efc06525b67edb4869d470a0f659f14eb8608f5e278486c7b6f519b346d8b2295d4540aacabead26e996b48591767944e6164a6760b9ee37c81ead25505da9c417150cfd45efb415c2f7c9c8a41d2744549fde68da05d3f0d688e58d9bf851f54c6ce94eb2ef761b01fde3037f607621ae73ffee10eb00860da828b143b0593494aec5006d4d58ca34b835ddcde325c259dd8973a48171f3abef9024cfe27c317d4c48ced82c626e49e2d06e4ae21fc6c2cd58c2a7995613eabc2781c82a63972a220d9f026c0b9738eb3c3b4e2d6dc1e62edeabe7a9360ddf9cfca2e8867715f1a22befe2ed53cb484be93214f61aed00b04de3ee4431d7b2b91173ae373a5c1b18269872a48499fc931c24710fb25dbb584d3d610314ae108c248fafa1e2571a619d0892c2b6feea023f703f2a251d306774aea28034b817e3ab9b88b0f348b19b21423c89e6383999e90eb16aa59cd90e67292bacb1aa6f56c26f4fa1e39c76270a52b0c31321aa452f997a30d64a3086b1bc4bbf737ec4ba49c8ed5137d2b9a9e074b1d0304374013beb44343930a8b35cdd35c4be6c61cdd433cbdf5a2f49d6b96032e0e1a99ea56e9408183f41b1fffc069a114115a77d1680d9e9c29e4877c3e514956a9372ef5e9cbb68324bff5e5b47693a7fc0e44175376886253a2ed14d18d90a05adf5e051a619880a2904013f5d20321b76dc7e23a97b334552f1428b26892672457387e79c7140f8ac49589d5e7d61a683ffe46e94a0280acfe80289a717800524176cceeb34cd137bbe66a67feb34b4f86453e2dbc0cae1bebd7d304712668f0e36efa14f350e7a6315b8ef96d27d95e360ee1e8528983c28883a5ccff948e0a24e0ffde94e4e5b48c3f022a4e985d218337569b22c1760a34beffe5f3228143c64691c067bce7907f970360a08ffdbd2e1c56b3e329b7ecc05b345106125796a69d0d124be39ce4fd9e4c4215a9edbf3bfa6c1c0bd5d158de0d1725e150780f0544dac9a558bbac764a91c10aa3f915b6b68319f31c0dc8b17925f14a07dc7ca24873e381e51dcfae093d2e1e6946311b0ff0beeca0a9d7e171499336dd07be0a8f49359a4c0cf4bea30b26297af8d316262108766ccc6c8de40740b80f3b64d86080d1dd8c4f627eb16272e499557d0a582c234b54454077044b6e0d63a4c98ca353225fb519cc49c2908f9669464727baa2efc6cf0f7875afeb76194f4b6737d53dd2c1a7b6dc43c02dbc53d48a5b7c469584eccdbc1b25905e295fb0d1bf4d42ad651fc6ff9c47e73fa8883ae4d89718717af2fc1f6fb10f6dbc3c1da984968e143ed175398355989f1054fc182a5a3f4cab52217dbe62c8231960ec93412cb102f5e4532c80fcf2ea7ce5acb464bd308a0db5243d62015f889d380457ea7800352216461c6bcfa71cbbba1a980b4e09c9628f6f3119fbae0f764ae8e6132ef1e3c986cfa93837d01c19c639d504446180ecf8a1c6b234386a3e534d89e3f552c033146e2135bd10f4a5e15dab6311c2a2e5a578a26e873221c289f1588ec431876dbb35294c3bbce64a50943b3321996a8c29c9e90d36ce2e3f28b5e2d8b6a8ea27ba0cb1b257c168979a8965d1a5f9ce7c48a8ca6d8d570f00669c85db0885b11ad110d453921ef665fc8c460473ae4e10f396adf6ed9d9e8560a6de290dcfea8b00cef413b35dc4fd04ca187ac51a465dc9555c770d07cb4a338bbccaa6809c7acd4c8c87f9475c22e7b5708a92641e83be79cd16c642eeec525f87bf40bc9b0b3bedfc44f314615422755dc312ede1b9c5230366bb052285f4cb0a84a907606f26af8317c8fa40411182ac2726ad9735b277ef11574bc2c1caaef383a37da4f7085dfebc1dc47f88c70b50aae131f4261489f32bfe74261140e038fd6fa4b897306fa942d301a8ea83c8a83311d4dc75196c26255299408607c5d71532c9458e7ca978dd6425a3f15b8985ea2c723bfab660139877270efd98216bfac33334db367e6f7862860c32a651c94c041b2e69b64bd59f5422ec00cf5410da84f4bb93f57e5c5e7870e0e5589d3bd2488e3fbe5f3e4211cb273c794e339a19964a0a5bd76f8fddbb75eb40b809698be23dc77db70f6bcb1ee2550f24828d582773bbee7820ea136ec63734c6a3ee310c939f772adb4328347f60175a9211743f8e785186c0036a49f557f94ebe0e14d731942f164cc11faa285c3fe577775760b696daa7f61f56a650cbf730b00d0d2967bf9833700999ef616079ffd0084daf0928e19eba289cfefe2d8a2b6b2f067e1ab17f4122580055ad85134a5cd1956000cea4cc94db190414833b3c1b57529228c3a7e530cb9a966da02285624e454a8701f55721092afbca5fa13c9d3d8b259a4321e558de4afc0d42f197a63630453901d7f178405309cceffbb4abb76f041bb4d196bd75fd48eeeb9440085459eec86af1cb91afe2787d6656440adf252034011dea605927c2d5eb19941124c5fb6f07cee49f10bb1aea1b43a6c5f4ba26b52abb3be4656595c28010f9fe3c7b6ab69284d7266549b2e96d9f3f199892d89d1f7327910305d2d3d2015d2946b43cf18fe6e2352323dc78c61b5e919da9f6fcc493e0f83c75cc3ab4db5b843bc1439eec6344dfb37acc388ec6d80d45a3da78b6b65225e842c724143ae379cede1b07aa620cc5134ca9c600dc84154dd428d96973b436018d6f54e6c27042af0517f1397d222259cb75a544fe3721255fe9a7fd4b3a8ecb1c1a4532b22b18fb829a9efea59bdaa3320e8ee4b05ba97ff7766b215041bdeec86bb2519c7d8a5c525ad38a6e9b109e55b44d998f0f8637ea89c07e200144a105a5d90d112e0a256532835f1b81ed3a3ff022c308edb80776105055558ae3cd676d1f75469bd29243012a3116fa07f9e544a8150cebc5a9898b9dfc6b3914a7876545f25073660a0b8cbb108258bd98498fb4dc8638d6e3d9cb935c8290a37fcff23301dce931c40cf2abe7c0b174a36f5047fda530e6abe9a0bf90ef5eeccb37f68e415cc57536d87260bcea0ffbb6b1718999ea34845b0aa9072b8bdbdd981bfad04bbffc7adec7428e945f4076c8d8e87bb469b412aba4db9c737a1aa648e287ce416287a368104887540dec3d8d096059ec6f750623cc5fe45d56ec50b4297542a0ee229b1e3d44497584f7521c71c3be48370230bd57527a96a8d7f0997b7a7d470010554d812485e598316b5a0c776b46a617bc61be423ffc1a332ed855256a946d652f53005ab5a64a42d8aa521bce791a7ff45d5f5374885b069b04e9a15b997aaf4c3649a46f907c289738af5f21c151ce9606d8d450dd57438d571771a1007b1ac71187762e9b3bffb2809072f114169bb62326dd6caf59edd975ef7888d647c6c380436ff3f4eb2811fd3ad383fceea7038752c7efc6b0e12cd6c8809ff10bad7609f25ec28538709899d3411d253016d2fc14e65a55569e8ee3a2983ef5155ca2082184b8104d924871f1e15303c047a0c65ce0cbb5b347779afdde1c40805f0cee90468f1ae87984023c8254604b0d0f38e664fe264026ddaf29080fb0f117efe1a4fd63ee419182874cb557d26c4caa73915b1bdab78f62fb8491c7f3a33156deb112e8c50f0bbe224a43ddf4abc0314cc74cdd4d8142ce31ebe00168cc838d1a229a6fd0f8bdb4ff4413dcb54be8da4ab3a60986996f0a91b55da11c47139d216a8fd50afd8616c886c5ce3c097fec4210bb3424fac2bc1b839df814541cfdec7fc482c6cb9e38f14166dd5de53265197c2d3ce2de49f58bbe7ad596831b575a89d3bd67a5bed86b6c28fb224a3a2efce6dfb9bcd08d31a6aea9da14a6f73a666b9d3039f7b94d7170dd0cfbc1257c4499c696dd5bde6ad8af1dcbac5b0b3aedbf758faa492d264ac7a032eb3bc63cc5267c684dce9c77ffdabd3c703a84d0c09000905df73067229d5b815ce4dd3f665588145623065ccf151ee27b9b9660935a81338781d16524bda00df660ac55b2e3e05900645db29489b5fa41fa0662110c8bc2fe1ca838edfcb1c0c9aba6c02cc5e9743d84f09c6da428a160e9a81360449ffb6a6455256aa8c3f6a3726d1315e10bacb73ec174baab8a719b99f7634d0e879263740ead4c02c0f2766142398101b3048fd27803b6724dc482cab9d9fdcea6bacd5cb8c334a67f2a713497db93e79161f2e2410878f739c580458a5839733176c8a7e62026ecbefa69c1367ce8c394e1ed9a1f5683a64aca31379c97db991fd5b9c4e653aac08936e3cb46af6f262d4b3556343d202a3b998a74e2fa72e39c930bc6eb7d3c91c064238e371f2ec6cec5a30ff7db4c87fe381be2abebc3171003ef8132fce13b25066ad0c1bc305bb79dae0ac5f446be2338c248ac1569e446cc79e0f3e72c5cfc880215a8048473cb2d002d233c28f5b1658475e9b8548fc9ca197d24be1550659bf3dc36b65b095e28f2beb416578874019dd0f9b39f71da4b9695c3b846ed53e18820d0e56be8941353e8cb6119d50663f30a1f0842c96cc1e78666180637b3bf3c2530bd29f599c87a5ac292f8adadbee6c33e6d7cec28d9b4623368cfd87b39d3e1fe1146e9e51e7edeabf90b1cdfdecb7fbe23150543e04fd431368f0386639fcd2be8649c919279200f98ecd6e6b389037a2470b99918e871e0203592129092df9de3685ba3d99502264fe6f720fd424bb9a8c4c1b2701943f6aed546b2102262862260db90c8f950cc846358fcd61c0c274e0ddb1465e56f1acc69ee2094baadb32332c2d2dee2d780ad0434a9443e22657a81225b8ae58dbfe21ebaa370d77002a122fb6dd6910a725bc6978c21c27f19f643110595d5b633e9d523c0e7087c760922382ac3e29856ef7309881654d6b0e0ddb9c588594eef16200eaa9684e043eb1414994a76e8bb7d95af5c84f234b1b604a85876e4650bd539570ec30488bc9905366e1515e9844476fada904e857d007140e7abc8d3736357043b4ab47cf8c40104b8d4ce2688c3ea36aa6729d0a2535b99797017dbb7788a98e63ff34ba117098016aba21126830f516fcb1a9d687cb719cff7471da70471a0ef3be06b37ca93a4eb523ab438919951f5a9c66d4c332b7141b6d50dae4025371efc6eca808b143beb8046c182f96959ac66b8ebdfdb6af14ceeab9d7b0feab8329f9838b48fd14e2845856c8460fa2fbc513db1e2ba019f1f2ff6b2e109f0081854e20fb296dd5ec07c62bd05932f90171b72d73030c3de5c976d09c2a134a5594b1fdcf87cb9facca3d521478c39f56a2cc7c5c728a62b4cf7ee6a2e6a028d8b9eeb5c7a4c45d40bc86e72fc394096396283b565aeada401a40cfe831b4906d7f194b149601e14101a0b32749c3ca5bb2810e2a12f518ee22ae3a80a58195fe995239c4bfb2a0e54c9debfd6ff6db3461e76a0d13f8569c0a93c5c906b9fe067defb4b3a5a7f43db38f1da7e85fa3e744a9e77af634f877f9d8e92a0039a90e787b9961215758d7721ac78fa15512f1e0df8d82ea787bfedabf52a058de6ef8d8d9a43337e1438b6db06960ad26fbc3dd2167559d350b08c05431e693ff6e7c7a730ccea4778fa0b31d68c035733f5731dc8078571b4c140ab41271ce201b3dd69263f9c087beeb8a283b81e15a955090257286d6c7340feb825617c925d953b471103e0b9990bd255b84438f12e4ddafe4121b85f3dfab61f77bf4ce6c16cad408a366636017ca8335ef1c4e9b57abb384648dafeb4bb7c1d6f2052d98a28d47020ba35931e159e0843075a9f03f7d666a929d42ac3c50cf1ca827ef9ad486f7bd76f5c73c9ca9bfc73dcb4cd25e45a485a8a9a5753ea33d44fc9c67b301ba16b58a9c37c4309a335bf552bad3d01a08143df7a045960270432449d9f5b7761709cc9296463be02112ba2937ac154c514eafcf5cae397947954f918badb3a485e2c4012ea42b8c06555ebb841547ebf4efddda8eeaf84e5c5cbbd0bdb525a0d9d8805987aa7d2d5fbad68ef062840e0c87cb1d3cd51b8e9ba9aa7a3857f943e56e7be36077a46a11e0e87f286ac3ab7f32fe0f38959b9165fec5bd590e9c1fe0002b3e6a2dee8680d78bb3e6d17cd1b4e32cb4ee766b9e1671f9dc3708e6594ea1315761cf76d02ed35c42245df6f0c025ba72a87ad2183e9f9294390179a5b6e63e2156149cb00a1adf81c4164eade8f3e6941ab6e8a2c75c84a0ee764c92a8eadd804f0231758061ebe0bd434d7d6d30d7ba82cf5579145b6f1cd9ea4d488d1dbd64dd4adf5bfbd2a184466528fc7ea4a0c398c2892d8504189ff16ab8a4f9ac4759fe93ee5c194e473db99d53f1eab1a19c0729888547003aa3d1ba1d349615d78b6b85000f770a0d8325b064092f8f7e0f880b17dbb80b5e20cc33d11806cbddb10056bf14d16407667d6a68e0101c32eb057987bab31115ab44f36b9680504280da1cd944a06863f21dbd94e7c6c0a60923d48eaa96d1fa519dbe97f3f297e7169935bd5faf6ebd223e9097a207f7ec2dc91d3525080278ae5318c229970f70d53baccf4d5e895c779aca8b5d1ec95c03cf19145b65779ed8480eb31471905970c65adc5906ad66f8ddefddaa5528cea96099e9305d5763373436af52d5f5a449097c31adc7af7a935d03d48ea208b6812905416d8cf7f2876572f03ca8808fd7098a69f8cef4a40e46a7d6d77ab8992790c8d7162d55bef086605337371af31bbca9ebb8bbb0adebd24bdc96c0c3964c23d5d59d2a794a25420e1ed215882034ae540e91152972e4e9207d23853e5a509f33041cb0ed558f1ee8a9a6d0499438302a5331411848bfb45702300fb33acd393671c0ac5db48e2ca9ab122a47b5a005c4bcbaece29b56def0af90fca5da44cb51fd197de4d930a0ddca5d6782799c8deb3201582bcfc6caf3d13bf6a076f7b18755e0b0f6ef84845ced2886a2fec366d228a9b6c7a866bfcfc59f813e95b7886d515da33548f5af86da9a79dd56c3c6452f55958bd689f527f80d54bb145142a9148bd0db2d11a2e779d9b233a9ef84fd492afa868c38cffb640b900016b09d302d299ec03f2624a05af61f436292ee11536327558ee9520c4a84fffde45309e7913f5f27156dee8105e03f94ae721a333504e379d6ca75eed1f7f2778ddea67be9e44815e3894eaa4b2a2b059cc78a3f91ad7408ef8ac560506fa1ed1aa941ef97a7fa80907e61688f46fc36599875520957ec9e991ae379ad8f4f610fd3964df533b6296754191d0a9b5f30db3b1ecf4e2a20c0af12b9b4635a8fd059df2eba983d1adb2f9831d81a8c6382222c686551c56ca0374b519ca29a95abb793dca5ebb68d98fc9f69e42e82baa1852560d86449275c979b0a4c533d28d61b74b9ff2e4e886431203bec5775694cd7f6c77ff446d6ae2937285b55e028cbd27fd9543b5eb693b11b811c609c068c1321379a24f514f9a310070e560ca14a9eaa5036b7f2bf6186476d0096c32f280943a5813cf612596b1639357564d0a88c5150d321b85396cf39a93faa7713af2ad70b0a546bfb0759cf4b1550027b25ffabb8785e923503865b68150931cf14a014a061fa7b7414586f7141a53718239b899b6e64d0ba1e7209c272f6471b994facfded61c5c3be2d0c69c92ae3480d4c627804f0f7d439ead95500cfe0f5b7d2884b391b87507c19b7f775bc4bf7f97c4980ba0c0cc49ead70bb4e36972bcc215053d9748462c145de1eb3b544441e703a22a0d48a1ece58df6219112cfd35ce94d0c5f4f187c3efd5a5cc2e28d88984c5bab02138b1386b7c6545282f762641b6bba064624e419a197aece9935b7beafce4c9045042490412bebbb45408a6522edac5c0a2da0780f9a4aa0afb1b809ef8c048cc08c57140e3b78024680a7076f54b293249847501dc6bda770c096f179d9f8e303c7ecea9eee2117c6601095868c3a63de05eaa2f801b7037d197964f8cbe5010faeb8424d32eaa18405ff3e00ab40e6f77a329a5f13a1348774430bd300676c167b77d6865f25f63cb4a8b4ac74e303ab842ec5113f5db958f37b90e77c815d3bce64f6ff10ee5daf3fa029456601bc1f761d4258eee4765e0a81f4c0e40c5b29c675f482ea2d9830c4f1c46b55585f097e3e09978939f60f3340198b1960140292baa0052039cfb18c567687344a2234bdea074f75597b056a849606dfbe85d4cc83d93338a02375a8ade7d8a72c6de6810d88b4d80cb1f865d89efcc1961dc10b42ebd5c6634d40b3ab520d124938af5ef233a7e86059195681390368345b8171c8758cca25e42f1db6d257e2ffc78e18a31857308ba59df46bd3b13c0fd8f274fcc0db799d3118b0523285a97906b60e6f8593c6f0455868426112ec601d65c192d8e81f5dc6f0a58ae0e9fdde8c8c014ad4455bbb9b8936629aa6a56baf3f004930d8417acbe57da6c32bd6ddceeac968b7da4ec6503d693efa29f2acd537db23a1bd88a80cd849458e21aba65437bdbc465d173dc26c4d9eede572e0956a1c68204007e4d92c6803a53edb74b54e311ea6b65a898c7c839658e053a1ff65bb17161f948c246ff769334c84c409130ee93411ccf0fcee4ec9d88c8320744e6b7cf820caa55322076786acd7b8f8ba0a7dcb0b43f6dc5f70370358596a275c5c64cc8dd4190d0d19a9281ec256b18f41475d10500607b2c5f7f7d26236847259d2aa2b86e70919bd9906d0bfc55d20eee5a8f5299823aa4184a3a32b65e2aa0a39b2169a7a2bb0cb526813284451047dc9af690fbb66a1d9d74b7a54095dc8afff7d82d0afa1d7c1021f90f9c13b45b7eae1500bc3579b36d4253fad24cf09e9e25d528fca214136e4317a4c03f1be901cf0c28e1089b9bdf80a55adc8a293af0dbf79f23614a4060e016b77fa2c494d9d0c9ea7a1145caa81e89da5e8890d52bcb63f8b501f1627a15a69fb557a3a62be8f88513e5459632b01da5c02e85b10cb876a714369c9c23e562e1394032338d22e09a458839b37f15fa0d931ce7dec5d500e405f23a57a1f5e44ac4557b62c5ddb56f65b0b7cb78bd99f92eabf03b7e254a4271ef1c2e4f6711ebb0dc3f53295c64c405d1b387397da32c70d43e502861fe597df58187e360155720a3780f543041ffa475f7db2112668573474fae37fe1b96e638825e53087efb5041e8d72111eb4e6f8efe1480b1c5705c1d9fecf6fe9ad953d3937567563290e3b235be412b2d4ddda4ab9209560433dfa8bd1e008d13ad5904a88c619127e92b6541c8c292039c88e99c2477b707be2922f9287ba8c03acb5474d4ca065d21c721dd3c7e5bc31cb6829c5bb5964e7ce6975290f824f59464c30fbda9c6dd671b142acb1a32b1112adf4477b3f8403f94e421133b9c45704315dc048e5bfb0a746c38f7271cc20bb9a9dbc3c2c4199c4f9c6d1bfa185a24607df658f33117763165e4420cdeeb1f12b1838d5a3c726f8a60b27c6a4aeb19e0cb6c4f569a415cb1660f4f4318c628a0aebcca5c81e0eda9884aae30edd86a49d4201275082ae282b816fca18bfe9e41313d673a7613605f86a074e6216ca397d73fefb53f778751fb279b8e399e50d0504bee29d1f84eb07896e4eebe165076356be42a0460c1d4b885501e71e403a456d8a824b4f2e02c9c41767ae89980917d8cf46707b805cdd498233f90eff72995a90a72e61d05038820219d7130f3fdfa4885fd3f8805cbc6f8dc13229bb424b5c94a62127e5b00a6cef07a1d8422d9609aa1ef5c07723269fc05c1a8d16733240b3bfbed50cf421ca7ff09b95e7556f8b9d14d39140de700086d82e3c00bc771cca19de965a05646d665629daf864a964558fefc9e6b1332e5df2443c1a898e5d6e047446ee06773400df5aa619f8752fbb2061b4dcb73cea0b42921a9564e9c348deaaa87cec030f518f29d5cd722f97ad23b9308d100d2d62269397b562e7b19d8ba9d39b7e20f0618b6432f798a9fe1d0458964726bb4f6c3c41f9b8257bbedcf215490feec613df1fd35997b3be0107ab48b0b8cb4562c3c4ec35fcdd4cac562ff385a77be36fb9bd4a885ef9c9e83e3111c64360fc18e73be64d76481c93dffb6c37a5c1578b7d6b9c713b296b26d30d988efb20fe7a17a82399e14bd0890f4b3ebb6678fcd5389ac26d3c839bb3234d4abe931397b2e09e182060d9ebb01f9d02170642eeb3b321bda2d493178103e4911436030fdfaa2d1b0f1714bd5260ce90ad610166e73913c9196a10037733173e358eed16814b5cf42282e035b1bcb89932d160a281e7651906053aa912ac909515ed30a9eb79dc9b1312978060c3b2798153d9b9b7b4980463ac4a33dbedbc28acc9a594049057373f474745de2bdd4adb76b2e04a28b7829cf0d806e6696dfd9e1000572000777c061e16130567a8dd01c4fbf1bb4e3d07434290d47207201f91ed1493c95872341eadc0008040e8b1637ac205cff3f8c5610029bc1dee28e259f4b5b2373c8c6ae2a01a1a0d06a4b062f3648f0e858f69ee89a20a00b2b871430fe91c1477cf7f8fe47210e11e89fadde62acd1499b19b6ee93d8576728fb4adba92058310602d72931021a6820d303ad7ca836e326998e2ab4ad1b2e88ec82d409ebee5dda4e22b0cde3cb002b7c902cdc870129c49c133300fba3242198954177c0cf622510036be052931f41a496329bd2a818a51275174c53384b3b39021ff8301202764f4d21bb7e31de8b2e657065eb899edb9d408fe0847a7118847ab36397090341b06e764008483f73de89064f755ecb3b6bb65d04d134655b26b2b3e69f5b819485880250c1f392e5a39cc1fccf299365a17d00b196b126a946e0909e59a525ffdc84457ae1adfad81b3549bb6aa047f77fe062fab963d8d7791c6ce46a45f3996e06d6f64f1dd5afb0fb51d415982205a4c8d4f1fe6d612747fdd6fd9010eb9c9165708ab5217f0f65f43166960a54a588d19e12c507be7bffd16df7b5569c0b4f84671de3edd36e268f0d71c7af4c478f181ebf64bd7d6cb2a98d687995ace52ca07daad9d9b3914941dc83cd4d76f886e67154ed08345b347864341aba46356fb7acdee532e4742108c61540a82806516396a521b25501097c44becf4242efb0ac5f570b43cab8c5f4bad0de8eade26c8c78df0c8d4efe102084872e2aeb99c55546e19531b56519de234c5f47305bdf879dd287041f652fc77aa079dff12a0d73c15c0a40f9aab88da58a3d4d914427c5e2b763e5f41b8ab9875f5d0e9eec5ac652e0da89e3a96b765e1d1d752ac96f87351236b0a92a11528bb7b18bd9c5e1f1f3013c43011d188293fb9e8159b7e7edd47dc50df649d15c0c4ee538c4359e2d53de4f71e65d360f12139729da45bcc6c0a3d00494345625c33965bb01043221d2f0a7c74a42b19382236933bad71054966a7ea054ef4085b91fff395ea09b47ac9fd4f4f18a1836022b3439fcb8db1d7d1c643c270f574c6d40c7ee1f49b79e4f117df37123db09aa92d962e97876ed837bd4c9afebfe978698cf92bae41897266be8530389646b4ad9ea76d93445d0e9a854cd89ed5121b8959e0aaed3a38f33283644d14d35b8df4d621ae7d1508682ee5bdb1c4d2a7bf8c43db3646ab4182ce03f401889d2a04d1c87830fba6c371933d915139299086c6e14061b173d9e8b3eebaa6e64e893195a812df0c2f352aa0cea033b7d2bd6dca80261d4033404827d1e12b519665611924a5ced146d842f87abec2e2a5b10fc441465e7681852bb65f4a86ac03c6e09e96a415ebe881b337462a06aabd3d8364147b609b6e6650c6857b894c0550636ea6ee45cd90efa703ce9bdd194142711e932f239efdee822517a31d7943769b0bd358a5489e945b418ca87ba73485fbf6189300641f31962b6f20db2f0420a3a98603061d2f64c5145e827e69b1a619b78acf47e51cdfdcb7aebe6aec54fcfc09ac57fa392d650306ac9804a719da8bfb618a0683534c8e2b9787df55cdf39b2427f19ef275f9248eb25829a73842840d28a5bf0a81b2a6c0dc579d69f14fbe5283fc6046323e66946fe35c1b9e291eeeb12139613c035a2d24f9b0e947c4634e157f948fab05a1e426fbe700dbe40872a4501db7d5e641ff4098f019a43061fbf0ffc17b28ff99ba09b08580ba0e8de0898c6701fa9909d5159418ba48f2d859c207051f317578bf8c4e617cceed86988ae82b0dab673e0aaa898ebe9cecd07baa4b9d16e4b4ba1d9a2f6b7f1862a3bda2314dc9338b29bfd2030541402f372e7c46dbd89b56229bf32dd47b4eeb63d818c559b0c798c694791d1505ab678c4aeea82b941294f41d11c32e2d65d666b61218698588421cba2517c5e49cd7c4080103474845778d4e889db54261c66ccf7dd992129e9ffb07ff960f66899f2aa3972e6cfb41586f7218a125f6d00b9e8fecf8d82526f7e1f0ea9b08eebeb2fb1e47d601d732263ab96f85f241ffb0d7beb5b67d63012644a8c041c4dd6857e655d76e13ece8e2c414b187757d8431ed7302cac99c0fb4162c1e735716861266e5c9ebf7733ae50d8dc6716026c43b2eda95863a1519d425af4a630c97083584d50b004a57d34f8a11bd91e72d60bc96ff46ccb54f49fb1856a30f6bb902b667ed5129edba9c4d94421c1e159e52c1d2a20e9aad6a69a8f1b88c8313d72864bdf162be0f1467c1662cd393b23cfcc4e283810930a9c4b1f0eab958be49fac00357eeee0d701ca09087f6b9470c4ed8a643ce70f7d07b6e441ab52822ae6030f4a3f9a3a9d323af0f9f4146826681e668da870f99da60abba1f6a2b4cb94409108e25ba62678e6c792a5c566b0c542c327ee600467a23efced79882ecee4d0959cac6581219f1a8f6c2c2d5282e251cddcb77f5a28ebd5f504ac9b6937b9aef2ae08095a182fa489bb453fe9534128deb4876e95932b8e6fdfb45e11d9fc060c9af7a6d453a4217edc97bdd7b5f2455914331214f3e5b57f232f79bd830969b4e250e13d8cb19156548316488ce2daccaf511f0059c45417aa37365b91bb074013d3dcae66e6e6142fc608847e4e8cdec3f328154135a45f79009a9f953dff3cfd4a9e0163c2e56b3a406807cb5db8507d8c1e151003a75ac433067026f46a9b7219a36345ef9230c7c1d3c5930a96b5ea6d1b78e3de3d9a611ee151d88315f89cdd5b6cad11eb75282622e42ce4b7ca6f05b4c07b04294a624e896f2eebbe5107c41f51a1d1cb388e3db7ba5cc02cafddf5f1995394e5eeeecc621bb4cb8c7141171ca648e66c003217a514567107d7babd9fc2940c3f66c4101337e87873a54017277682f6e211fd962933900d92de5db3e2befa0c75ca9c3b614c1acd67e84784259b6bd91b724e77ea4b7b9f91ecf92ce884882f571abe4493ffdb8220741a0cdfb79d86152ae08d05785834955d69704002a52c0eda940eaf5e7679e20e01f409d2d2ddc9c0480e79ed3143ea4ab90a19d7ab928c6d84686a8b70e52ecc1c7904be7eb2a4d3db72de06d07179e070f03224a8f6ae0b223102323f2ee02d7f233bf33e4099b66ee999ab3c8c059405a082cbb08b8a9f32d8431dc404f4042192b272e0f3f059f49850571d32c438d2d1811822911c7ab5cbccdbdb695bc51ff2e446f0fd23a296f51c397b421077f8584643c34be2f89207bec48cbba7b071021b3449ffc17a3ee3ae6817dab28f745b377cb061555c09675be03d3ffa17bc21f09e03ae48b1f02ccfdf00cef752e0adfb11c665d6c10ecb0af169218b51545dc9fd1a54fb04fd049588b035b25ed44a20c59ca61eb5a95538e7bfc8e841206c74adfd89be51d2efb48415626f58b47b1452be8a1d2420b421b934531a6af14a430c31e8418822566656733000481f3db17bd2d9900910f2030d9e7041693398f850d4f8892bd291c022a6047a8d00b8606b2f1d61c5bc85b7642fdcefd0638a5357b9ac93931102224e97ef15c7165f5db366e101e71a3f86823dd59eea6534cc9aafcf183e89701e07a0be43a84d33e099a8acaa4b1dd2af989f2c6edffe60ef7ba5339edf958c3c3db5a43dd7bc370d89e2cb834e6ca6bd7bd9695df0cf45c64cb3e40308c49e1af32d195b364c2a0b52ac8e1edc483578276d6a8f7ed61dfd97de1535a7af101e559ecedd1ee617e0661990e12fba8e3de2ca1b71400ee3c3fc2dbc3723aedda0034027126545e7795aef9dc33ca1054eded34e38fdfe64ae413fc8164c0b92f4b9027eed8cff729259920afebe68fc9dd3c7de2c3f0ee14ae699ea6a179576e2834b6f382ce883a6931b5a076b5ccea9c7502ec3d0bedbcb873e81e002dbcba68e6623984691b15e0a995e386d6873e8a39af77c27459f79334e499b5494a5fcb251011ac0ca4d52aeb4827673d4bc7ed696a33a6e89ff448031a1d1effbb7ad933d69332a6401f2eca6b782df9996ecc85e05423b5ff3e78776fdf66757f7c3222dc893a459f7f2fab8475842569a8d4799abbbb7e2b1d062b9e5c2c924086f9fd6662cbf4a9ceb49ff38d28e9c311ca91adfee789e3bb1e8cbd37f1ff1a794e7631beb96a3246d0149701a28c6fcd8d80adeb68713bf5d2c96311df25b3de03b67330d4f41762fe00da86889989aa0670309e9e489fe0b15919573bcfe8cead2aba3fb7653689d461edd2636fbc37104cecc4a13685a19addd72b4a80e7e641445e5b7a89379e27505a26d015d2ffff9948e2aa2cb4c5abb3e2f85aedec77c504271064d649bf210723f5202b01c4ee5abd3744c4d04a81a0f1de41939317de273dcddc9daa0505e2210ba13ebafe681525a7cedfb509884903bb16ea304fb304d7e384e628b4f8b9eb4c211f804ae07e59720502d8274602b63a11e0e19097542a98a3daeaa70c02fef72eb787619df6de03b299648607caf2157c186345891c4fd9e10b055d10bab5a90d12f12fd8288143b5185cd8f09c44fe2d89baad02c38c4b2de30221a6e20daaec841c25d859a0dc9cf8f1fc7878ad1268f5e0206e413457dc261229e7beaaa103cf480e87b8ac68cd04a60bfa4e0139b12514db1d1b8332bebe689fe02323de56c003a6aad84d08c0858b460f036bd218c36b68408c7cfb2dcc158630f021354a9913813f54b994e1abbbdc1c9996edc0eed8b009f36271270b46ed19ab97bdcff08a415c5d218850ac6d73ac145643a5b178dbf116e9e993f570af040d1c8ea8c7ab1a13a6238abe853071e4c16069781ea983ebd01e68c2208951a11d6223e0cc8b86f44143aa6d448af06f09dae92ed06127a55e5719c47fbab96effe38b0613b9374c5055884ff48911ce34ef248325c70865202549611760fae59691712990e96c54ef176b8520da324b5fd752d61e2d84a3e1fcebfe90df37bd3578851e1d00559a7f481ff5affe8389bc8695c860cf59f9bb59982248bda3fdc17ffbd89bb062fffbb0bb3cbf54d7b78238b37e4952f10904c51992d3c4bb5e9f762ab0c070b6883b0c3c5810bcb5288a14f4fd9d828e17925b48d0cd8f4bd808771e46e1e72f9019d4e56bfe7de73221348e11c960a144157074995ed8f113d391ced49c886ad887a32671cf90cefcb7f805ec3ca1ff712e591b189c269e64e338d97377d243209682190fc9d34c4c464cce0c919e8c3d64834a860599b9a51b4db8a81597831b779adabe36044a91e271cd1a3d6e4cfbc9524a681036125aa414e50fde2a21f9b81b0cb01be8df53c24278868a75f11bc5d616ea9a53172c4fe697c5f03bfb015acb115c5af3bd0638d555c87cd51d1ef145f6325ed32ca0429d243a5ac16c0f52404fba1949dcda2a1e93736b0465653463a1104057fa3c5de250ce0d98e78b139c76e941b79007a83b1b5b93df57b802b5701e3be7e7c505c98c32cd74bbb4d2b80a4fd1ae2d2fa8835c21ecaac47016389b02ed1f39899ef84fee0eb036ec4dd2270ef7547a27f29e1c8b99ba276b1ad2adbfa3d4262c814651be019dca13b77505246760cb23a5107c368c7022c179355d31117b0e48086f6019aa177f250a82e4ed4241504b87b51f39ed131ee04dcf37e965176a80c7cb1ebf99d3b121b3b043f221b84ccebb58f88a52bcc8dad3a1a06dc8d29e3339fe7e60b4986c11ddc87dc8966651a017f66f560dd9fe27aae9cbb623a80ae65ddef851ef2b59b1d826d3e20e1163092936e5784bda74215ef4854cabb14d375415e6e579f71f411020cca7eb566f62bb8a0ea7af64b04b4df73780773ea47148459871b08379acd2d22fe2b4abf8f7142edb3b225480f284de7153cfa70cbc3b0bf02e942fa6c18d0c046b1b5149cb8473cc4962171ab3b8db35be7f6dc4472a4a59fc0ad22a0b5b55ee9a732bdd221539713c8041ec1c2cd3ac7c47003d44245dfd8f822a48aa9c84e03c5deb5565a015594a9e5d3ea14fda17612d0acac57a748d0511b567401aa6cf2595c3bf3d916916d03cf135ae5d0e811a50d3e49dbf7ef2bb286b70ef714c828ecf6f915e7c5a4d96545c54fade8b7af65bc3e9c39959213e1a542e7d49afd2ac26a9bc88b52bfaed0fe5e01e4c3cf2edccdeca0e635a3b8d2465fe9ed8ed55e471d59aa557ca7fedb335362ad0208fd75fb05c4b518d3bcee4ef272b31e839d542419c79134a6cfba1d9207946028cb720f7924d9686d319975edb43c25e2e2c2e8af4ea15ffdd7027bddd1aaabaf121c26ae05496f8ff3639a759a5969da51b11e10cd608e307dc0f72cda0e3f0239603bb8b4f0e074d8fb8ce824dfae11852f610216b9a7e077fa7808c19d752e82ef5a39fd7defab01ab604826e05c712b2ed2e7bafaa1b0682eca929ea690d159e6d288f4e998cccece737d2b0528011723f0eeececce5a5c4aa8f899833f86a10142b311b036ae9be7eed258d7784835ca53f91ae839090cc7f8ba0e91addb73ff114eb478d2655e3e25564867e1048214232a995c50319efaec6bcb459c61284f19ebb4475bd99aa516626c2b5ff952987de9c490b27afc9f47e1ca3cdf1fcc33244da70960844224ae2a374d35896e38f7d5a82855592a9bc4ce855a9535913dca44d5374e93847ea21fbfd8e541e71c0a62842d3fe620b4f33c3a1a95f48db71bc83edff733dc6da2f85bc9d0f6e535942f0e7370b00507eab95bfbd2e4a6b15e453243281ce6d1a93543387fded8e3189b6c979a6dddc3f8eb06b3900a465971bb9af2a549b92e837794676c9fae666c7da3a18df277b94ee223c56b1f0f9e295ad8e7ef08c152f5cddc0523d1fb3d75ed4de9b3c757d4dded2b866d9b6722a2207ddd2fb89bbb1b8e8736c3718b1f1be651f2b3dd3a5b77243c32e05261f3ff82a53490314f957c18a333a273ea406f75e6037ae54bfab68af278896836cbca06485949991f87d548acafccddfc546a80237883fb81f9293493d95f4371a2954e2d0d6129376f055fb444e96b984a5fde49491ff1b7dc21da008240b4642c67427cd396942dad0792978cd6a5831b33ad37f9b99793f6a81001cc96f7ae940f9ea75c9050d7751b81be2a83f53589837db854aff421378e5031b14f546da533ed8c70584a977e2c1677d2098e008dd418a17382c804c8bc403c19f7298f29336dba34408f3c6ce8878af9cf1cb0b1391285b4c171f7a81867e9d00f4294d02f71e2a33bcd319dbf887268ee24f486875b9c3153d5904159e59eaac571867a1553cdb96832ee92110c93c85e93c8f05108af8967a0c1e7a9d3912c44af88cc4f8f6218292fa7b2b02f109f15a319dcb268eb8d053989eefc476735616a7fbc9037529740c8a25dfae425200a2f4a89ccb4c05a41ca916a25695a607bb1b51776609e2719125dfa4551dea23e4ce497d2c203967c595eb9744a624b5c4a1d53b953c6d9afe92a9ac03af422d6a8668bf713efa1b7116642c455376bc397408678b33ef4d9a118444bc025367e04d01e84053db855f6a83ffff0767418ca19173281f56b2baacb2e753872af0c490e4ae9f16b7c9f5285083933c62f0fbbbf83abbcf845aef60363cdaa46f2eb813c9bf224291d15d3409ef0547c60e7ee854da203bac0599688d4d5aa4e29810e366f3d4c7f0515a415f73acdf9990734569a4c9df48409b7effb17ca20c5a64b1de22ea4734962e8716d844e7153b91861328198aa26f45a0642d23d092bdea6315358af40f3dba6290ef861eb883fadb8215656932c404653902b1b77a6248b7504481134e27a759bba842a74196c58452bd4f99fdb12d34c57fd520ffebfa6bb5161175de2daa0c8433c44c6e2af3025c8136c95996579e8860f49084c0ec7c814cdab1cbdf6a137f4fc03d6d34d6813624c348e56f08310223d2ae0c909663a892e4d0042f2960ee83b0d14ad412d0f1080178c58fe633f5550c068c5ab60efefeefd0bfd06d605f17b7775f1d8a14ad90a3420452e72a7c63ec345bdb4062ba6f64f2cb87cfeb76184120738c3ab835fcda47e15b8bfa31694f8bf160357057a59f86629d204907bfae4961a98d757908dde631070e3da32c0a800e1a17c0b06e0a7694d4e7f9536b473c04f62b17a5cf0a52ab5b93d8af2c5d3b92e12644a52e3a6d3bce008f445d5c8ad9c075fcce70a6fc0786d4fadecf7a9caea7944822a564215a62cd62e476b6fa006ca408f71c3bffb079ce3f3179e15558644c252b83d560c0e3298b300af51d787323c024284446c2c872049bbb3a53b92266778487dc7b9ee0d06780784a50d343710c0d52f248a75922357af6061cff05d3b38ab8e26278430ee3b806b861e68368919889a417289c5670011d1c1720ba05ad83221e3a92d63abc8c41d683d06af35af04194de59b4b20458ae15db4ceae9ce21b779cfc65bdc8a4ebf56d6c4dfd058de981bf18beb69b605af9164f4b91d73ea3c072a1bbef8eab130c5904af98c74a304e18475a98fe786ba1166c8773a8f8dd4916418c84d7d06e5ade1a6a69a04af7676c3b6ba3e640169bb5ee13faefa78c9fd2745f4dcd9249f36bb066e07ea45804ffee57c658eaf39fbf5c2dddec6b95db8a2dd1e65303f155156da7ce7ded6124b687e104b344b9e4884fe56f89c967e7bc41a02eaef5ed3415dbab350c8019ed322a9ad89c11263ba251d5f73217ace4cc8843513d86df28ece2f509a296700e23056ec43f6d549d29fba0913994c41ea8557560b9d70d0693bda6526d4513dae9b25792a38f6ea35271461377b79f8bee5f17f2c9828209665ba4bbfa0a864c94d17f9ebf73a462bc6eb7aadb87acb0783e378e8c3db6f3d9808ecddac698d24279e342ca94493a7a590accb0881bddbff8f073966cb451b14f5a7c6c454bf584007a83428f231ffd6707df8c450a5e31e20aabac3d44b929ae8b27fe4638649e2665bec2b9144d11e56db7ba5d89009d063d6575accb153c9e010f913d1ee6f402b948c91e4d41497556b88d6d642c5fa51d08a7445d04630f9a282e4f0b27a68fc0c8740a3a88687fd4f3535c01fee4f333abf75e4503ba6408620a4e887ec652ddde0cbeef92a2d5607dbb52d7b71433bfe5e1a98e0fb54b872fa8fc11dd3ad5a3d94152011c0c38297784e8a64ac858eb40edf5a77eb41615dc80078568f930a4a0513e846ba1e1b7fb8e1ec6e22abfed5244334c5fa64b9196ab32b27c7ce57603e75ae65a94a6c036c0a0398329da86f58ba1a56d5502994c874549215c8d90a91cf263cf899f0c2ccca3215a7cbe406ebcd55c19f66e5a3b98fde3a51c558c6ea83aed49b8dbbd193c975fb3030da490e99e99c534762eb47cde5779bc8fe0feab4c11a2892bb6262b5f073112fe82c56a546096a4aba86d5df73b7b24752cd08a1e2a4071b2485c9e61a9b93fb98c180e88e514b425ff506dae787a6d40eb36d92426074168db7d8fddbf87abdaf3038601146306be8587a01a4e10104b1d75f7c2953292467e7ae1a5dd565e287dfac1d2b172ed2c952fcbcf4ed059aa1f6b5b3bc86e1631434446b0a28784d45970d20fb50ce9871fa460c55a4aae8381098df2a11ad9dade52a62a1ad51cda1a334c33537033bce9483b913fd461e30cfe08e57c273695ccac73ec27462eeb8ee868e8c2702f8270cec7c49d3fa669665367ee4c5e4f8dd3d415d10d098df5f874391d367527d4b974e29d0c9386141e0e9c076f4164a4f872278d9dd694b38829bfe17b9e2d94f8010e0e6f6898418956d6c0962dac2040a65af609279678f484763a02948885e569b3430e38b43075e122040045f8e04606352780206609b84302e5ab65bb53406147081e7680a18428500a58a2048958d8102e1c3762c04883260a081f407932b451a36571041541c41af22dcf165550b1848018307c3ec810030b6a4e3021042d0c24302c20c911b1302f376d62b841852e5d4100e1460618d4acb041182c075081c28e0f3ca859218d0855de74eab5e503b293849c226880014d0a2470d0c0023a1d16b08480235e5b3f82483e20376d68a8808206aae8b40001bcb8b67e781272dcb4a921063429901002070e30508589005e407e04a7a09a90867ca7e749420e1135d010030c6852088103071a6060812a470c992c09b204c493c51711a1a0216a6cc98205c911a60c16c0b2742bc3cb636e91b5c06591b1d87970769039c862b0536e329930d047c9f4613e0c1cb906a6a19b61cac045670c0c83e76268c8ec9d423f413da0193f327c6af4f878ba5d4e9773391ccec49eabd2a3c386371d4fc73b8376523a9e69e3c74c4ad86f7794ebd9519d3f42f8fcc90dcf3613c8f49d70a800e02d179475bc3309c806d5076f3d467ed23329484a86a2812b72e29c550b6f40beb47c54f2d9737e2155f11680293dde48c1b8a00f871029f99c612a25b1d115ce070f6fb91c8eb12a2f84b00e30874841e04d06efc80fd10f5113ae17c9ddeea1e2cdeae50d213ad0d3f14c209cda99401629bb332867030b3d495122035e8f1eaaecace012947d70427cbaaa938826c0cc1417b8a31eae9e1db925670f5dd51414301832a5032d307a4c55808a5f0abcf0e6a334524005c849081ba961fed0c99092d2a3abcaf5ec82cc29af21a68d1e2e2ade7a745e4065bb2e1a5b5c3dbcae9fb2d40a85b7186792544f2ee80228d7e3b3f52b6083b79e5dd78d332c6f38b387c3b901723db81fb91e57583e4a1e8f5d57ae472703488b97e30ce3c520aab163068c1e3b1f44c87648e9d901754f404f535e63ba9f5337031734a5783f278f17a2e3e97ace251c91934a08c6d1308d70309878bba259b5f5a368d703833725252bcc076a7774e63873e43a78eb11746ae17ce06ef0729c35849a4c1b53de804bd8349a4aa78933e057c0032bb42c081fbc596306840ec22810e589db5633ea22b180254a9018295236f625405790eae968878e00fe8c01863c4fd45122c8958edf0c19ba2f37b011b3c1005b4182365efcf8e45e489342993162c280c1e04b05458e782c0129008059591e3c77ce943ce1849a61eb73408b6abcfad1a31bd3c09629de0f70381813ac928a41e4d3b3d3d5a07182094b742a16268017d75610aa0969c81704745ac04002080cc5895201840f3a8872c4c8945411d189c31b298c5c0191e2e97221584941840c2478008b011758608116b1b0ab1f3c7e70162616d98ad3ce3b91e79c4a642370713010d987dc038f879f1d320ed94d4e93433041c86a671ace8171ec6ce06a00c9c831f20b4ce473811bca3edc3b83b20fae27f376bbacd3e1f2894d8c73eedee32ee551bcf773c7b70bd4eb19fab2aa9b5cd2695b545965923be6fdaceeeebefbc76aab9ff3de0f50ef07e7ee3bbce75384bbfb78cf670727beb17da43ffad7a9ba59f5b7faaffa3f962eeaa2c7e2a3eabfcb339f117cc0f4b82670f720eff94440243e1aabea63db231d01b17a5645d3674c8040200147cfa1e1b8dc7de93db39e9f6676ecc37b3d367a76acfa6e9dfeb1f8a2c87f5bf6b76ed3473ad24557d96e1e9d1e6f074f59fda2bf7924a4aceef1a6f0927f7cd158bdbeb17d5d54d7fd6e6b74d177bf466351d7dd7fee3ca0f3a2705feeae95eeabf78a1adddddcb9671f7ea2aae9afde7595c51e5555545553555255515550554f554e554d554c555554545453545254515450544f544e544d544c545553545353535253515350534f534e534d534c535552545253525252515250524f524e524d524c525551545153515251515150514f514e514d514c515550545053505250515050504f504e504d504c50554f544f534f524f514f504f4f4f4e4f4d4f4c4f554e544e534e524e514e504e4f4e4e4e4d4e4c4e554d544d534d524d514d504d4f4d4e4d4d4d4c4d554c544c534c524c514c504c4f4c4e4c4d4c4c4c674caebabbd27b3a121ca9649918d093d47374f4e49ff424f518f09ff406fcffbf7bfeb96723f7fc3e24ba2eff604fa74317e4ee3defe5b670ff60cf075fa35eff7b88ef114d75ff5fa35e894080c0e9e5ceb8ff565fe5d9ff56f5f1fde04e59657bf6c6f65f65fbee19474ff05ff453ad565459349933d3ca15657ba266db30e2a3cfb64f443a4aa26e1bab0c06d9567d9362c44ff5baa2c5a0bbcff05e8ec9d733f455227bb917fec1549ffd3245b5bba2af12acad75dd16cba8d3e2195a4535251505f5e4d4c4e4eed97bb838ee40a0ce7b38167c1f20792bab6f3afaed02d316b9f4228dda6d8b3cf701bc772eb1f5bb7cddf60c75cf37dcb30df75cc3ddbddc4fdf69ba7b99f7b8cc641aee79867b96e19e8bdc730cf70cc33dbf70cf44eed94514e79c1334388534dccf19e79091bbf943ee19cf1438dc331ccf5e7ea08edc331918ee39adc73d43c170dc9dcc7b66ef4c5d998051c026a527ad86ae674bc62626a6a826f4ecccc9299d6a324a29b52a70eb17758bc0a5fb6e154dbb4b2d9a8b1687dcfdcc3ef7dc73772cb4c6dd8bffb25a2daa46a372b3aabb0b792f8b71ffa0dbbaeed6f2558b6812cd423a62f50a34ae7a3f10ab4f55e4075dbd37eaeed87bad0b778fe1bd2c241f71d329abfeabaec9fdc41725fe568f9ed5eb03b17a7df6e9aa6c8ffb91dcddc91db7eebeddf7c1eb9e83dcdf3da7eeee7a0f7b7991469f7b0672b7755dfd2cfaa9665de5abdd97d548bd2691eabf2aeabe8fc6aaef8b22ddd6f8a8e30cdcfdf59e7f717720ef6124777fe13d4ce49eea55458dbff5bb3cfb37b6cfb6ea8bfed26d911ab95da0e3dc73d0ddd9bce745eedb051635dbb00d2db6eb8a2e2d5dd43d53d7a5a2bb97ced4f5dd4a77e94c5d97942c9a929b92555725b6ad65d558a51294d4508aca4da9aa49a9894909ca89c94969b9be4734955ddaac8a1e8b6bdbbe4b49e5bb952e70e96d5b77c93dffb8671ff7dce3eea7bbffb8679e2e8b191f5ff3f626745397058f8f4f10026ab83fb7b010e37e405b447c3c1bad99f971ebaeca1429f9f3e925f8045589e2a37b6c0a79e7796ee5cfbd8e779e7e9abfdb3d36d3cc13e33f4dd3491afef371feddeffda53911eecc9d13dd4ef739a753cbf17e6ab9dfa54511a6e5c7b99f13e169e4a7515afecfaf86df71667c82a6bc8f0f4ecb9fb67b1ff7c93ff8fc1cdb69b45624c4bf35276b455d58b83385bc5fdaf978f75b7322d4fdd4dec7c46f1af9f95b73a1bfef706ea1a80794a767b533a780fee7d38a84ef583e3f46e60f369a9231563e7f7ef24ff6dc8f0697ee736aba9f9865fedc4fccd2fc20c2f3cdc74d3172ac9d5195f3dfccc79ff38f11ef33d018ef4fa32a4f7c1ef3a2bcf918590982657e8f51952b18cb7c2b41b0ce377f7ea6988f1fc8a80ad01b5579331fffaa4c31bfe7f7667ecfafca95c7c26f054889d19bd114a001cc1fcb2f24f7185dc1583dcf33ba82b178ef6354c54a10ac9ebf82b17cfefcf9f93df1a9b27bde3b509963fdfc9e9431f379fc4f7a3ef7f0728fb180f0f4d63c8f30f75313b3cc2f66797e6f2c3f06a231c0f9f9cdc6cc1792713fb537738e8acfce9c72e2044a7ef3a1e03fdf491933ddf7bc932a571e0b67967bdc43e1fdeee7c4ca63e17e4ea0f07e571eeb0725f7bbdf95c7325ff78392fb5111c2fdccf78792c36cbe72c5a8ca95f36765674ee5b782ad9c8f3f1b55b952662d8850cdb472fecaac05119a9f81d6a0607cc427c88acbb6864388fb770d8710e37e8a8c888c6a6429b58d85405b7a4442b5179affe633e413c3c727ffd2b037f9b8aee49f5dc9df7425ffd395fc71aee49f73257f9d2bf9ef5cc99fe74afe3daee4efe34afe3faee40fe44afe41aee42fe44afe3e57f21f72257f17aee44fe44afe2f5cc91f862bf9c77025ff2257f297e14afe335cc99f862bf9bb92ff0d57f2c7e14afed8c85f08cf453e55d4f3e7d2db09a370312afa39f3799ae763f3fc8c4388d1e005809a00aad3cbdff34913a3b686ffe7d57a3e0897cb0909098911324d53880d47999f5f1ad09acfebb2d0cf7b909118a13f8df6f93f3f3f35a0772190111b0ee1f93e3e0e9433c63d8c7b6c947b21361c6574bf34ddfffcd28cc4e42cf47352a6e7cb6cdee33eefbc8685bcdf8c5d0ec78643987f46ee670e71f28cc4f47e4ecaf092763bbef747390abfce484c918e22182f885c0cf984cedd4f8fa82847e11c8573141603a5f7f31c9526f447f873b9dcff48e5cf7dee6b7cee933ef713e39302fa89197aff8971e1f31343f4fe625ebc7f118cdd4f4c8cf7fff7cfa1c3fc89d9f12ef4fe49463b7e4ecaf074fc9c94d9fdcf49195d8c183060bc784144e4c2c5d0d0ff9c38b9f258423f2742efa4f7391e4aef037828bdff3d94de1b3d94deff43e93d8e87d2fb1b0fa5f7361e4aef6b3c94ded37828bd9ff1507ab897f13da7106794c32800a39fd12e47996f64f493a3cc7fa35e8e321f8711518e32ff8651518e32df86518d1c657e0da3cf51e6d330ca91a34cf3651825e52833294bf17e627a49450fe5484c518c8792e3f3550c180fe56be42b182f1e4a8da27cf5e2e7044ad115918b8742d4cb572e861e4aef6ae86797af7c3f2750765742be87d27ba1f7fda0f47eb99f9a90d199a302805214a527f31af0a9719a273e4f7c9ef83cf179e2f3c4e789b1910b6bd4a8515454444444d4ebf57e7e7e76bb5d8ec2673eff3c7f4ffca1606ca2e0831d3b76ecd8b163375f4d4c8d1a357ebe287785fb397172e5b17a3ee881ae72bf2744febd1eeffd7f7efc773bdd3bcec4e5de7126aee8c7a80651beeaf9392122e25df176573b9d2e97c3e1be270ace381f1fdeee7d80c2f476ba39bcc7bd5aaee797dcfdf9cefbb165e18bd70869ecd47268bb00f44e2112c2dce7de1c88489ef3265c81c6f4ce87a0f73aa3dc4f0d6fc165bc8b23cc6fbabbbbbbbbbbbbbbbbbbbbbbceb399dddc92c3f89726c418638c31c618638c31c618638c31fe3567ce39e79cdfaa5cc9b205822e5ebe841943267f7e23f4c6c773f8e0cecf31e56ed8a84163868ca218305e10b918f2f58482fce7dde7bde79df7becb5acecc94c3e1781c69ce906086cc98305fbc74c175e6c88923049c1ddeb09901c7efdc82df73972f6380b4e41c51c626ceb91bbf349cc6c62f0d9fc1246033337e69988c8c5f1a1e83c3c4f8a5e12fd88b30f7aee32ec2dc0fe57cb95e4e28179403cafde47c72395e2e97fbe177a0dc122466635f5d5a42aca8a0f2d11afe1a5888051e9e2c7770953a78e4dc1142c8db41c8fbfc261ff13e8dc9736239286bd29c21c10c993161be78e902c1962c57aae0373c56dcb153678e9c3842c0d9e10d9b195e1002adb1a282624a3acaf1358a887a3fbbb4f381e8f47840747a40cf0352331f8a10f7b93467483043664c982f5eba40b025cb952af8cd89db9b5c8f29710912b3b1af2e2d215654504c494739be461151ef6777f25cf8382020a0cffd8ad70875bf1d258a10f7404bf468e472347e5ef769278d1368895edacf2ee74b2bfa5cee9726239706e373f8d3627cd0e39f67a33428347c2fa3c8680d0b871e86d11a16f6d24ea1eeb7eed9b01068899ecfef5e2df73bf76c58887bddcf6fedc5eb7e48cdc5ffbc0bddcf4f4de8837e347c9f1643e7fbf5d4d8760fe3ed7936a2df9a4e1834f4be1fcabdfbf65ce47e6942be7f77bdf7f57e4aa120a1e7e0fdd4ccb7a0343eef1aa18f1bd1c08f85597843e8405e9fdf86d081bc7ccd9bd0b3111afeb161a17f948c89f8788eddcf705f19353ee869bcfbfa84fee5e110ea7e6ca690f75938c368f538429fd3c781805e18c9f81fa3fc4346e7bb30c29f81e2f47026cec885515ad1bbf821231a443ff469a7702880defb7ec55b7e5c7c6f0dc607f06c4669373ee86d04fdd2fe7d8f23c8f74babf141bfb4192ff4a341f469315ee8897e34e2f47a3ef78ffb19e1dec8e88dd6b01047d0df305ac3421b41416b584823e8e7753fe3c7660a75bfb42862a60ca31d45f846492bfaadf8878cf20fbdce87e58d50f741bd4fd3c530c27dafa7e6fb0f5a83913f8a70e8a716f43be87d1f64a4c696dff75b7bf1db51846f14e11bf46c6b3a61efddb748cdf743ef3385be77dfded04f6de85dfcd04f8943989685be9f8fe8df9d704dcdc513fdd27c4a1c42b5a11f9b294c037adefb7e6ca6b017a403fab428bf647edccb7b2cf4f11cb99fda8ab7087b7e34bc7a6f42f37b3d46bee64dc8334a8ba2fb7900516ce09f0e7c3c87cff38cf08f09f379f2c684bc1762eed2b01d9cbbbbbbbbbbbbbbbbbb0339d01b1362f38b3043c1636950700fe4402fbfe72fcaff39ff51fea5ad788bf0c5fdd2a260c7d1f1f1f171239c11db6966d0cb9f06c58ed08dd2f217a0303d5f42ccfe9e7d4e9adbc9a6bbbbbbbbbbbb4731b1390628899ffff99e91f9397e7e6a6fee572cc67bf3a7f6f3e69bfb9f074aa2f7f3f8855e28c8280de8833e1bd1f07dfe3439bd9e1f0d5fcffb7efe4142df33faf911da6dfdfcd8f0abed3ee81d082ce8a7b6fb17ffcfaf780b0d223f42fc6cf87bf020c4421fa337f726ef4783084f88ff55c358f8e67e575c2df7ebee753ebb9effd9e9de87c77322e431097938dd8f13213edf817abee7e739dd63231a3c1e6f6784859efbd1f0fa7913e6ff7913d2c03dfea47347cc48e794e71f0ddc7f181fcf91c6e4659f5d208060cb969ce5fce52cf9caf9cb577295f397abe4237cfef21b1e3c565871e787efec1377feb09d5c7ecfb8f34f77f38793c0c72713c121cc0f6444ef77784c781ad1d3fdee877f6950d638f992f6240e0f8a1de1f9400ef4a0ac119e38239f3f7db2172f5dba4000c1962d59b25cb952a54a7ecb6f78f05821b5a67b7c674df74bb373ee7ed9c5ae8b0f02a12d40597eae105519dafdf25b0f4fd0f93dbb1fbef3c4dd0fdb11e20a1c5c6507fcf6060f1bb76206bff3821d5f53c76a0e94f07c262253529aa4a333473948c8f166be06991a45638a88c210f5bef47ebcfcecbaec1d86e0dce12df9288a17220886fefc9ce54fcf184f3e1fdfe1fdb97b9c8628cd191767481822c18ccf0c991e99314263c20485f902f465fffcfcb0972e3f5d20f8fd62bf78f1c35b887eae8b5d3cc2f35d0ffab96ee77cd725e6a3f37cfc3c9d972e106cc972a50a1ef7dcfd2e025e9d3972e208016787376c6670f19a3467483043664c18e1f9ae7bbedb4578be7b3e5e82c46cecab4b4b8815151453d2518eaf5144d4fb61c3c2fc607af8dd81d6707e0712eb09f3bbc030a8002de032bcbd1166e9ed845186e8ed842e031633428fc10a3b1887e5fe772f061b392993bfccd6615c365ac342dd4fadc69f382357a73352c3bf3431ff35de85571eebdff3d5ff9c9459d3bd937f6cfe1b3916364a7bb3cea8c64fc6fb7cd1fff85954f43264cc28faeda21933bee869c8f86d1934683c16169d318cce7cb47b6c04c348adf7eb0da1cf277c21f439e8271fe5a3dc0ca0277a407fe6a3dcfb7ccf07bd4fce79e879efe2817ee89d4ff4bccffdee837233687c0e8bb911c3284dcc0138fe5f8c132a18ebff807f1846f8754662301eff6618bd583883c667a39d7fadc6efbc718ffb185f34e3b76714fd2efa192fc3486d4df7347e9bc6dbf82de36dfcd66afcc4fcefca63e1b8f17b52664df7f9cbe07f52664df7535bc3c22f13e3b78ca7f1424c1a2e9461e4c222232ccc7d36eae5a3dcc730aa51948f720fc3e84c0804a7d71316bd704f61ee5d0873ec0d61eff7e684e7fb64a91f9f9e9cb1d00bfd30de05fdd470af7b20a3170b73e87e3e3f355ccf4f0d677a0edd8ff753d3ed7e6aba9fe7f8a9bd0f1e1f37479537ee4fee73164460e7e77f4c0b765b062a5b84d927f77c4feef10c6fcec770cec771cec7734e7fbbb2c5b1cee7e57cfee4a3f389ceaf918fceff7c747e8e7c74fe513e3a99f2d1f954f9e87caba3f3b5f2d1f95df9e8fcaf7c74fe583e3adf2c1f9d8f241f9dbf241f9dbff33c7367eee12282cf91fbe2108af925e538fa1c35bea8065151cfdf7d71381b8e1dfeedd8b0d07108cddf695e792c1cce7c8c751aa9ade5363ee67bce9d97fb32dbfc352c34dfb7e92edb0d21ef4d9e51ce739493de9bbfb49c63ed7a4cd3ecd9fdd284fe079b26367d7afe2727c48643985b037a9f17d3fbb4370b71bd5eefe7a4f7507cb91def7b468ee5332ae3f34bfbf920a1dffdc4f47e4ecaecbecce605196da0f701faa9fdbc0b7fdef353db3defa7b67bc0670784452ff7534b63c3c28dc37dd0a7ad65612e6ded14027ddada4ef8f3696b3da1cf6f2cccfd0b837e6c190808e8c776e27eed07f73f3f3fb69d10f7db3fbfe6f3b867eb097fde85a7519a93cdfbb5cdeb31da3dbfb67b827e3e2d8af0e7e7ee7e7bf76bb8d7fd7e9bf7ba7f9f08cfe73def974b8b22ccfddcddcff3912ef74b7322c4fdde1ca5079b14f8788eb4dc16334e7eb3658d992f6bde4e3b42ec25070435b210e1aafce039ef74f149eb093d7fda901da13fc656b294bb2f84a1f703b2a1b713bef0dc09cf5f1a3ecff33ccff33ccff33ccff33ccf5fda909d332d6707af11e6d64e1c0e87c3f959c76797566447e89fbfc79b130e39997c8aec081de7e330f4f0bf9036f4e6070cfd90ef7df8f1d0efd8bcb04b836747c29d1d993abb3072765f627cef7575e48411c2cb0e59f742165d9517f0a4b943421d3939013bc2a00f42e08d10e881ece4c88491e32567c9780b8ecd0b69f09070874c0e9373ce393b0c433fd4fb9ed00bfdfc8fcffbf47c0fee717684bce7f19e877b9cf9e61be1b9469813d8c28b63278df796c67b7ba197ff5c0343efdc12e363fcd2cc38301ec62fcd34f3e25ffcd2cc37a227faa5e537e69b4039f4d2786f69bcb71c7a6940bc177aee7b1f7e2b5b842edec52f2d7f19fa21dffbf063df9225cb59e5ac8207cf9d3b75eac891e3fba599bd5f9a69860c993061bc788100822c6616b34a95b7fc264e96ca5fd8b079e18534694820814c2693c3e4303fffa3c0972bbf34dc17bca64e1d3972b0107807cc06bfe043cc920557c183e7ce9d3a75dc853df9ac23274fe510224fd5d8214f11b179010806de5b4e056bcc2eca70e02f00013461a89001661313e5222c50c57508822ad70881069c33dee0661b327cc4173367102dabec55829b4966d390854df2e498b0f1e6361c3b4e29844f59899b20baf5c88a0f63b8c151209adc081e7c30732042037ea3e6852c830c9baf4133cd14cc34c12204604e5ee189185c041267be5b5a3c869d901c64abe22a244d80d594d902d71181475e010c8a75182983a11831611f54cce01dbc2ec0640ad0c93b3005711ba419a7091b60f1226452308b68e0cabe2992e49d8be42918231307234637e352822b41430cce9a886cc0103687c205b1dc85b4c11fa785f9e44a0b8c254d1edc4649e44b2c40c17d28fbe21ca0319a6fba3cc12efc5c8c034a14cc24a3029c556400d75036439e02a384dbd8912167849b2d32940b2bce9f261638183638534c8ca16c05db0c33688417fca48bc065d0b1005e01841a8edb96780565c44ca539c50f1072347fc0808467d139c9412c517a151124e01f7678f914561598ae09604e8503337013029edc082f32b76000337e421d342f1e2590af98c8e0a6a850e5d788204e3321301e5200eb7cf3340216c241671107240cc31515642e0a741ec20852b0e9c4027e6484c554b891e071ae7cf9104b4af803324d5804391be09f054598458618c056c66c65202e2778521e05bc042f1fe00684d830917877780d43b71c01941d5883217ee0a312ef39c0b0206fa085121803a037e32c423347155beee8168069c8c0731295582013f1257082997201d7d0830426f2882a584607353c0773703629ca5cd306068fd20ac2332849f1276eba601c4524ac86063a780b1046c01948b19629c021cda3a862870905ac8ccf603221dbe08118d781a6e8371cd81984251d198f031d641b471fe0266470ca60526a326e8227a66e021fe68e314ff8182bd04c05091b6015949c31db4860c793d6e4986d824cf8300c114e4271c79d709565b51e321c831da1fb82b0711bbc4c61be40e48377b07405a6c14e031888840efe55830d0f1a819891188bc00f4801e1468650c14ee0b2e8c4e4bcc10450b0814940900b6c664887ab4186099309218ab91e3f585986294c39b000fcb0141e6861360e20c00d58f931f3110d939180029fe00410b08f1f52b89aae32dcc496c5894954c0769e3e30dfd41086d940a9c215a8e008bc868526f989bb83af42214c94c9941bd100d20c32a488994213457000704107cfc1cd93bc248b004c5c0e23e0941089611c6250c33f48edc83fd099e13764c92ee7891b66db0c35fcc90b233212314d780d612f601bd0a4c164d2244dde971330152b02c815c040c443c87df1244828c339260b30941cdc91c446c0779000c29fd8c1225fc931024f81023671a46359ff10c5498495b327010667e5410b66043f84f2116f56b7c254c589c2ae00f3032299dc2aa6047e606a039712b3e14bacc03c64001c9fe35506cfb9a280370143850b7920b98f2c1e38da99368c260b0f3300a019ae43ea050e7e20e66e2330e5272aa70fbd3d65a57783695c71c35e4f00fd0a2b596612cbfb7127c77c9d2893db34d0327108110013c064c0b926c21433c615c2b3082a1e703a53a8b8148e3838ad01040f6301eb585f441c04b6035cf62206a7c284018e4098151983243e30db96214b51000ab7c34200fcea15f297c916cc4382137cc79652365313825761a02527172020bfa95a7032166820b3397ef11dc7cc071c01e6147b82020783049999a440e86a656ee62454aec6e54526126cc345c84c3103804a73a3353e640f90b802c33902c7af5a17b88d06259832e024c053ac2f1ced19e12d9010cc374c08807d1420c1416005b11451d0c057849901fbbe8a70b30e2a70287820e0ec99a20973280a990e011f16380a0c1167d009a55730e4c81461ca0f76218220798b758dff929cf2933b4e18e906a1b944a48e7b7993c05e9478e3427382e610655b6021e8991f518418c7a28113dc6d61081fb2254b6e400c182c45aac4428078c01108c3811996b4c3b30240390044008069608162285058cb524db0e74f1636f86d081cd984dc16d8071d22e4a04813c42b142a705a94b182816088c0617870867b887100bb21818ef3f034007edbe0cbafba1071190b74e1565d622ab62858cb1a242ec241ea2d2c9082b92cea305b0248b888c507d807331e1e420519769bb03297230a32911a4de7702b801c24a285c9e3053099480a599851c8c044bea0c709b8364650e4320a1870fe708587050800482e92c40c96c27723e3709504cff015e540aa48800950c291adca860e411016986f7620022f60c20f598304c2700a0650f12432248077c8c28de903d10cac9b92c68cc20928c7427be11a3c910336d382c58ca24ac0b7ac1041dec241163f62d94347c21531d848cb045e934020071129f117132d9e5164961bf0e08a1fd00325178925fd06221f66152d2fbc7150c1ab2042877be8a8fcc4840c6e41909f79c3bb04f6c1e729f71073f8860578bcc70d121b31c100bf00d8c3e318615d0bc814de4a6ec0fd9c489a553088e26ce2831e1620490db9dd055c6e0783057035502dbc8507a913c1a6031fd9d1c042a26ec0ed509b5e6ea0e15cae2031930f7880ddf882dc021f0bd8cd091656338607ec4415715c98c2106720880b180f52145fc30be01474f082d54881e25a42987e5c2301aee0042cf0982358ba2561bc9c0a03b09c4b5420808b30b0e4e3115a6030483db90a1f05390b3c33603628b8808982e8c94e244770ae1a5d66931c142c2749923c01559a0ba14ec837b81862173b5490673005e04e1cb080bd3845399c0886398f0f9a0790c605f34ceb82ff188240c60105022b0096802fc370c057f0e09a5f9a82f257097470510e407c4b87e58a043042a6e217c34c235674073013b92e2b20e02dacde64b054034703b6fa95214a7cece1c694200513b01528c6724f863898830b86642556c09c8a1c45f3cc131f1e220bd57f4e33fc46c00978cc872dffa10223f093185c9f03070f5e3ab2418e9180139948971e5881065433cf126ab2084658b28b320760e3922cd98a047a70320b4e6e03282e6014c60df3a7440eae63020f57f202019e448a040ee5070370508d08d9cd156dd8e8c235ad9441e055cbcbdc0d21e24f35ac7106e214c1708c08c80dac79c238309082a96581a267b1015db5a0cb796873d29d6f04e45785d4acc2a9804c0010aa538d155bdee225490e8f0209e0252d2e4c386e361c082100bc0000e0c0358a3a30c6917306b0609103404708afb054e32b24c9f23646e438072fa6f02ac00d390a2c6bb0596a00562335c50f7861496ee3e3046bf93820e3d9828b37293e80138882c542a6e8726ad004831c8198164e2c408830a786b2c037088d720c6057983e1ca2e02d1c5839794a4a6ec0102870d0f8c35b9c38e071c438808df4a4de84a8e8a8156dcc3213b4705c1658f85138f3184c2820e7c0f6c06ab430909bd818e22518264c6788c5cf2c18e33f0356f01d1818ba5a0b2d66020bd2f925060e994b0b68cc2f66b6c03d6620331540c200ffd2c60926c104631e0088369c9c6182b30d4184372083087b798dc0592f6e60204f42ef4233851d78e08ea9c18c027094160eb34806299e058a34d902068cf0d80d70f0d0ce18279a5618891dd29cc8d5042612531881b5180202de2d8922571901ebacb100120c25849609e3832c5c83921270262840c7e1bc21c385b173cc40ceaece17ab05dea6831bd88b310a7bf94108b30314902e830f5af80c256c18b7f3c1cf704cc138e4b4e0676408b9540e46601a1198b8488b0ab804640e9749c6c9453b54601d6fdbdc6225f81495a23c450e2c642239ec6ce20cc641fcd03a3d206048a6b34302f8ce9b04ff80c49823e3038d69560308cec51814b0074ffce03d22a8c18bbfd6898890020e465122af043c80ad647c8091aea8e3486e50937b00801a7ca6081376dba28b33b1c4075633b6859bd031049e83a70b7ed3e2c62c21081cbeb30c316980d27a0651d09c558a885988093d9c17886132b58cb0c02160448b4f7803c5f4b1c009fc419d1f6e21c88cc77831cc3e123c80b9e89c990f5479e3c01f27b800bf223ce400298e15b0c2a5789490cd29e4b8561516de7ee5e06034c891b9e430829178b822ffc832044741a6e51f98acc06b58b4c92fa4803cc295139d930a13603746003127483304ebc003061c1807923e019315e798ab85b7b480e784012a0a67028f936963cb918bd9408a2b7151710563b2982e1a76aa2a2cf87c130266e00626b3890a763a231c71222d281e228228a61836c0b998d179843649180b136e96220b15dcb6a09567a0400ef6213402432036c3d4200029e08edebcc93e03d8135bb04476eb8103df905a203f75c16366e560056e3b18f35de78ca35120652e61fb71263f2b77c20129186a00ab6ca505edc40a70d63192388117d69ce805336ce6a3471693d2050395b1e241b03cf0333131980d1c81c411b8b0e6c82649f80c65354ede0e3a8371a23c85dce06207aeea9c3a2365d9ed88247272bc86fcccb202734b17067094171164a23048e0af2da2c058a09ab80850b06155833318890f47b811d90a4c4016277e8591021e3c607520f9087e8dc05803b12797924498acc01b1718032d08c045050c70222d6bccb4812c26ae8d04e6092e9a600364e8c2ed2490305f2b3aa710105a32569934b8ac37659c0a1f354e9c8d34f8851c2260364f58612617b81ccca9c54d37d89ca489119c0e9b3b19023126602c2bee980f1cc100ef40c50d26c107e832f4883013332c9f60ed065ef21e395392d4b403c21b0c2725ca31bc80c16eb936f94542223b718208b32988509ec08783f3c774e05b3188d19d997970972e2438105cb08247e06a4d2f21cc9c013c3be01d569270270468c2caf3096ec31a603c723870095a8020d751410a1e22834bfe59e0ccd548c0c62481c90e1673e2c2a7ac69d74ae303cf30c3097c81589129c416507012061c60960919f3055440c0f578e105ab552d9d4156f0720274a03a53507a651c5843603ccb261f52236326318101ee51ccc0a56098c0b118817032490880d9906c61f220c1191f1233650e7005133fe2081332025b48c05e80ecc02fa878805d60e1200fdd500566e04e9acb3cf0010e42060ca3304556fec0caed6cad9a30b31471c21a5cc9907fd0f0cb23441084914248c2dc4470c0768280c2fc71c2965361328079d6411d7782092ef93950e243205af9ed870e309620b89cc6470058861c9070b7270530ae22c04d0ab23817a9627e820d0098cc842e1ee74907ae228812fe9393e2b3ab860b2145116c070a07eca6cc15fc03089329860006f297999cb9830f3032961c132695a437b801621dfc361c825da0018c19e557bc8b4b6866a1c1982761c10ffb20547ad1bfc95084e5dc86273798670e50c348002008673187098602630a1fbbb2bd8e1207641d3f005d891cd0b896df13580d8a037208376ec853e4d9e02443f3e67d8312b906e1563e42b47332c186400e800926b297700aec444a0f363a60c465499031b3482a7d072309734e991e1ca8a388d3a039621b4c6c81a104808367f932275bd19bc21afcd084b77250fcece7934368e3042b01aa91d7d4a983a1149084c9e3ace1554367722e808877e8c1c644ed78907fb8a0c5bc418811b82d968075d01366db81d4e980931e6e0415bb5382bd814fc122895b10a27d8bd0e94e642179500e579e846703c7497c9c0521367f22c41a0fe6d081ff1ca9e5286070821798a000934b072630ee41710b6d1b6022e0044d0556393e424f9569660d0f397b60067715b503d6600b8a5ba001b53c24852e1349c82ccf5053cb4e32705307124d4e073e580123f98a612a00801c30910c51b813554638cfcc2f5b717d79d10e2fae817200acc50105388993340c048d1a32903686bbc1e200fbb8a900a349e08ce9002a0206130462666915c04505a4c8c02954c836c880767271f0031623e472d2a0268165381324fb5419e6261e5882235ba24d069a12762241c090635001167cc4b4e4589895e02284f0802f798983890063e43d6a8478140dd071345e4059053073bc478e104c7fdb7c290a038ec30a731c8332b87c84599607714833803c15b80e443e3071e810623a6861186a8b0c5e45912d4e1f963666990f4c398c0a4f60362914ddaf080f780b8a124724c685dbd1e0046c4506206020ad055cf756c7739c35cc83b9c5a390f281896502321f4206263ff224090f0b33c6345680f40360c4e021b4c9e1656719df28d300be110118534713d39570224e46220054a6a1c215b80366bcc14d0c1026470707217019241332124f01e01d4020025f8026b30c1a6e38dbae9cc06b9e07d3043c33e0371a2871196e077853cf2847a1660256b98c9089f00ac021f0cc64326365f8a948511e1e30c44bb260c28167c2e03cc19779054e04cc234d0a5f7360f21e2d64f0375dd6e0249e72e4361b6ee4375d9e0aa800031eea5d806f205296afbc10c26de0e58a4f00c3c6b99940044cc35a1ef3853245f097175b580b1c3a186b8a2db94bee06f7e04b0a78860731b0104338985f5060c34750c0c46c20ce10bb0591c15cf320e7523016305f0b173e840b0a602531788e6ae1e1428c399a64ca1c5d89a68b9903eb8599e688212c664706a7549306d7600099b38626378e4703216e884f879b35f1308948cb0147210090a96506c5675cf960baf061025f1a4dc1535c60e3337031b20b22543c877cc3515b6881af1cf0932d10427a0d0f9670392824bd8d11214c107c5882dd9a8c38d94e82874438023fc162452e202869e221d2e26b37deb49a72c43ea24892d1e426534b8115722f82a860d58021f8984789b770f484a9010c3758830876ce84aac46c92becc093696abf05ae05b378ac042b8edf003169083b1d8308209747b4e458121d989373d70902f21cc1886207df73290a570509a666dcef2001a672a8540749ea02607b341bf9c1423156c83a90c8ec08d8ac983849e134c1412f0fb849831ec7ede8652611db05c71a25f9b99a72d0d0b39b5907d40c9c0ad3611188a2034b7926401e71244010e441151e01b7e98ee8271c2777a40e373da0280793bb6e0014490e1af6f0876d5211809b125301573c864060cf8c10cc228c13480ce0cf88793b05c0b58b098083734700c00f0816dd0183275122770116012934c16216e5be0c7dddc1900bb89e20a2c04c980133f40c233cc608663b8e08abc458e2938eb82601e2e20c01028e9c8477b8d9740860b36414a76231cf0f913818049020d69060ba24a4ea32cc314384d612d435d3982a22999cd9d70261005125c019a247050052cd65256c9bd0fc0f04e883695ae68c03d60254d3247a8e06b286c610e61c3085e019600986f4a8081837c8872a30570d8072730f0a2d3c4220ce08019d6c36223b319f28c35525c0ab4819cc58d0f46e00a185c9421223c097d4226420b228e620737391901f0f2f18538e7026126c023f80ba61b3a5fb00e27283081f8c205ffbc4c4c0af0746131493cf99622008019c0c366067aac7ec4b5c4048271739e059f7160cb0e811419e024328a789924c78c460a10fc2b0834b8893420bc268c4d8ea2e6015f20c830d7816273570f16a7e33dc1ba1474798ba11b320f65026006d1d64466ba2226e751905e850cb3eca3ac088cb4b3e257d800816758f9f94f931c300f82180e010538b7a1290a2626b0849f95317aae60893f71e7f5600725f8024c44e05928b9011339a3e5c91d3e700f6b1cc056b2ba30af870e723ab8e0e0298ed8a1c3a2c282935039930b1a16d9cdf7867b21092acc3546bffcd68308ec0637831b99d961220f0598508868c03bb8816162d942086f51b5c95b717ac0c12539be05020dcc03ab1847191a700351fc809138372ec08c563e9b92c3277090fd090a125f19be9915bca53907254830a9caf88099a8e2012743ce11d9ca1425e409b096b8c90247389c11349ee0080ef298620d4c074a1d1cc3972b9c884e59fe2192bcad8c14990dd013a7429ac21f2880c983701d9f19210357a251e21c9268723c2e54c03f78d0e03292825884b7037c822170f0b70a306cc38e0eb2935108b8a8e5203b4065862cd6260a87247491cd805d381cd6ec8079f0d2c43903ec2c7381ca7186815183833ab8224b30021ad7c108153cc2010b6015c428b917aaf7ab039cc841b870712af010718f29077811a42bccab104af0159ca06537069678fa0501d3cccb5c81245558ea89289c6866091fd2430a5983184e3a2216471ec2800c70535849ca6aea68e528e12fdf085681bf986139083e7c6a80e6f1f10b0032143e28f02e4000ddcd20068f22882f7c369605f78cf8c0fcc28a008771e3027e032701ef408e11571651017f8dedf02b16e861223da8e04f8089e1278040a658076c7c0816488e27078de724a1c2288c09326f74f9e1c660318cd19a4e5e5a0f23a0e584d78ac8c16b8fa1d3092e4c38cd561339013b3178093e597885249cc05949b23805685ff00d6dc41fe061e95a5250b3490747ece2ce0a18498b14ffba73c65b9801e55a14e0997702e0c4810ae0cc1e76061e24549a421ab8ca38ae5e130c1022f82b4c1c5c98afa60c04ab05f3eacb843c250411bba0830a3307146970597eb83e449818cc28ce40e1175294c850d22e780a1cb4c82bb0513931881632171072c05a8c19c2060069609dc10d2608c616bc0b8982ac72e1c0290863c214607984f59b1df369471436d24103de04d87b8fb0868cc5c795cf90c2291771a2084f1621c745c855c131a4419131c023867352fb9005366c8408397c09167930045870309019f238862324bf6990780a39f8e4233a547990b42fce44081dffe0c7013ff1d8c0466835bf7d5980b3f0418cabf043f428358a6b29aa005ba121871cf4c50cee021a211f61421edc66ad8bf9c50a0d5ecee9e2780d92a7f504992f58155c07b78a99c40d8c6fa181866140e6c15e906832852cdb5c0a1c98dc7c23f31d886ce41e4334c11b24c1cb224091240fce93278f99274f1d17ca93270f0e2d340b63d98426e484976506ba4d1fd8154df4628889c1c5fd494fd207793d06b8e88a16cbdcce1bd175489d9f7e02c1aefb82539c0feb5c08e360e020bc733aa7dc84e0bca1cbbb1dee3431f61819e8d9f1006710ecba1f3817ca61c718e37050d9273bc6d8cc5d18eb70c6d8cc35c938635d864186710eeb3c6320a09973b9a39ec767cee7167c629c7bf01419f31c87cf6c6a8cd332c6795724d3c838e7ce8c99c818e7321e00c7c0d8cc3b1770a62e08c3c018e35c955fec4c5c01ce389731cee610e7b38707957ff0d50ee3729840b02ee7b3c9ecc9192309496103ce261f2e732cfbe959037c9a47272e63d37111e023b067eff57a8e1d9f386327f02ef7c038e37236317ec24b78877f72ce39978579e47c66cc64027d64ec7660a0a119990bc66519f8c426f63c96bf079f9ed59c3f112f60ba910bd885c4904d9cc3a70e0361b34bcebba089a94c9cf3f9f98777847118eb98ce261c4c38f7e47659877110e71c8499c3bc7c9a6cf89795189b4a98e793f14e87b3907c23dfc8364c371d0be15cce18e8ec9967969173c6397c1a312f07f6c1658cc3415334b297ce8797f1d9ee4797f1007887b199f189bbb08d5c956b649faccb386ce28c330e621bd927eb4e6ce24c8ca7b0898f300fff608c7fe01bb9c7d4e1dd8933c6418c733032113e33c69db82afb6033dfc0a699f3994f5c95339e917b300fefce8c310e621bb94767e27377628ca71e17f5d859993e70d8c43c7c16611e2fe843008d1b388013e79ccb3a8d7b2f987cba30ce38638c955ce749571205db49e2847f120ce6bc496224a7ce11f4880f8a1811c7cd8c80f0320c70d065a81b27c3204d056446add80018a4d91943a1847c6170438a2eb406531506454b55689007534600e59832eac15246602da488792c90fa2d1c48cce28612714c4e8ab3419bf44c3d7c7c497a0207f17f707c8c21ffe2828913710df89f54dc4d77f700dcdde882043740b964bb409d448b5bfb121f73f729de73d1435f341d02099934cc15dece05deceaf5c8fc7ba29a4f43678c3e17e743b80907262d074c6f809e3414e81b7f38b07a3a7461195375e92538979c3e7cdfdecb87654b91ef347510fce86b7dd9937a225527853660551fc14f186cbf386fb99d1c3dbcffb5be18d571494753f704b3808aebcf091c165ca99e54dc848c8c854f22ded8a7c79a6e07ceca87456a69069b50bf36682352de57a7264de4c9fdc8c33c9a7c9c4e7cf99d4c385f3a14b929b91ebc9a5fd10fd10f18a783074494c2da6e4024f060696f5c0e3468f4f0606f6efd62ffaf5c08dd4afdbfed66c287adc2ed045225d64ef00b603d403ccfc975aedffb8d1e3ff6e931f7cf5feb3f48dc6d64522b76643f58a4477514d59756844f5fa40637b3473c74cb8e71f506fdbbaeeb92a476b64d5e1eba65fb6cd2a63bdf6d67a862ed3168be57a77db856c5d2e3da435cb544bf765f530d5ee79cad80ed5e1d27dd92d6dc61649dbac579769cda5df25169bea6aadbd358b6c531625435f546b5dd12c571751d78c8b2b56d46e5b298a75dc689703f88a618a9eb9e32652d5c8b0cb704bf552fda248f5dddadd5de826ea76cf51eebecb50ee9e9ffc8c7b7672633bec1abe7a6f36576fedb2ca7545359bbaa2c3a4d66ac3e38beaf4550e95581555d2ab9aab912ed29fb8fb9af79e886d17b8d46a4b5b27974b4de4dbf7d15c2111e18abead991eb265143b6eb40b8996bded5a8662295080bb9f79af8d047707e23d27bd8dc6aacb956d3f45f5faedfbfb55cffe53fd1ad5e37ef576871a0d5da2ab7677bb1657cdea57d5ab326d91c1e08a74db360d06db54b9874a4df2a0a9c86fd93fc0cb119a6d972c3a5c9ebde870bbfa6dd9b6322d4587eb19caeaadddf6dd2d9baa5cd343cfd81dcd17c216277bb756ae69321e4740f0d5db829b3125d17723d577a88b6e6b7cb7ba0edbda7545873b6595c6a152aba1ef1eb6a55ad56c3b34b64ad435be2af24cb9f7926b8013249b406e72772ca480bbf3f01e9b0cee4aa93e435f34fd2f737735ef2997e829db28d36c1758dc2a72a9b855a4bbbb794f69b5b5726ff558d42fb22d02cf94c757455b5a0aeee4fb1eff459f4dfe8f54bb1a0d4d75df67b53ed3ae52b3a99bd5469d3eaae49144a2efd2eebd62da6d59342fb7350ef770a874b571c88654d1b588c6b6b422dd36d54d966b32892a87bac9d04d356a37b9aeaadaf055b6c7576d1beab42d0e5fbdb7464393c3a4de6a2e8ad4ee92ebc581faec91faf542b62f8b1ec786c30feab42d1e8ba87659e5b3fa832bca4a45391509069940fd0f2829250152514ecaa17e5136d54d4a4539157185b4ae6e32c2f0dde87adce871e8ea14d5c7219b7693c921fa6ef46b45d5d745c7d05a774cb3a9c7a22b34aebaaccb6c48d8d6d7b0ac6c2b0c4c4c2b4c480625a5c62a8f597b6bf6558f048359a9db1635d9d645ad26afd058359944c15ebd8dc6f6b8d12eacd6dda3dccd217a2d1977a7e1ed6bd42f8bbaa812cd4b17b53af6cbb3675b75ab6cae4ec9a0a494dfbeef468bae46d32fab2a69b72d2ab95c9b8b803837c8c041e5070f28c01db30c1044164503b1298256ac142e1ab40f0e48e30500cdd52cabea5775db5254bb675a4e6cc360b06d98dc2daec7de41faa06ea2ee61d20f8dda3d1a5229f58bbe456d64ab49e15693e89a44aa4894655b75bb9a6d98dc6dadd5abcbb4eabec3e4766c85bb6bef21d3b856dd77c8d1eabe293db02fcf867ba3c9226a545aae6f51bb6e5bfc54a76d91d59bc9dd83c1e08a6a8965856d0dc9c4c8c8b6865b5f45b4c4c086488460c120bad3e256d956997e513434d9bac92fb62b34d46c6cf9aa6eabbac915655dfdba6dad68b1fdf22a3352a40d73358ba696a52816dbaa4652142b6b6bb2bd757c5d152b45b1f48abe655c2fab914b746cf9aa43a1566bcdaed0da551fdd96558dfa455d55b9a6dd675b95553fa9546bdbf5df96cdda5bbb698a3e30d52ffa6e25f2f7ff501ff82cfaacfaa97691bf517d86aec8f6ddcae26f257a74d36d7f7c5df5ecd16751164ddd9fa2678ffe468fda55be4aa3baae6a1b52dbd93f100da88f7e6b6d7c8d6cf72fd1e4b7efb35e662baa5cd3ffb6ec927b06a2ae8e8a8a8a8a8a8a828282828282828282827a7a7a7a7a7a7a7a7a7a727272727272727272726a6a6a6a6a6a6a6a6a6a6272627262726272627262726272627262726272aaaaaaaaaaaaaaaaaaaaa2a2a2a2a2a2a2a2a2a29a9a9a9a9a9a9a9a9a9a929292929292929292928a8a8a8a8a8a8a8a8a8a828282828282828282827a7a7a7a7a7a7a7a7a7a727272727272727272726a6a6a6a6a6a6a6a626262626262626262626aaaaaaaaaaaaaaaaaaaaaa2a2a2a2a2a2a2a2a2a29a9a9a9a9a9a9a9a9a9a929292929292929292928a8a8a8a8a8a8a8a8a8a828282828282828282827a7a7a7a7a7a7a7a7a7a727272727272727272726a6a6a6a6a6a6a6a6a626aaaa29a928a827a726a025bd1d76d91482f774f4a7aaf0016dcd54b5e9a55d1d8adac54bf689a2cf2b21ac9b6aecac66eada8d6ee581a0c165557b31a0da95f2ff7ace49e93dcb38fb69625f26eeda6d354b916c78ca8fe5abe2ab2257bf590e3568e25c58aaaab91ca3023aabff47a86a66d91ddda5756456dc4ad3d7b95ed5e6ab5e1f1558f80a1edba44c752afad94d5c9edeebe1e780c92c83d23a57aed7fbc2ccaaa48d52d6e357da492d5fb911b6ddb6dd71eaee88b1a97a85afbaecaadc9b65a511fb3aeaea89456456de493b63a4cbeac76f591f5ba424aea49ba0a06db607078d46355d446b60ab65c9349e1d1bb359aaab5f5aa48f5aba87aad6d17926d2b184c26d1a2ba9e29c7ae3ec92a898269ed9a61bdab1235ea74c86a375dd56331d9bee88b6a2d35913257b30d53161dba3a55d95a37394ceed4cbb8ea3277c74d794f49702b25f7d2925ef5d0d54565dabac9a14663f5baa2c7e27045cfda150d7dd1147d3598d1650b06a5d22d255e6543ad2d255e5f422fb2adb2e11659113361d810af3274a745cd04ea7f50290948bd747269b6d444da37b9748bc1a0769d9eb8c88ca8259590ac92d165d36cad9b54db6e016840c88246974d2d1934ba6cc7a0d16533b6ad3b36c0d697d671a35d5c6446ae86af9b6635527db5515d876efb16f51eb22a12e9937413b5acebc8350e976efb6ef5b88bdad57adbb52c397cdb55990e51572fd155a743345675dbe3ab44876ac3e39bd4e910e9aa46b62dee9745dfcdb659af9b66b5d35391d6d54ad8366cbfedba93493418d44534b9cf947bb8959bd59b6d8bc3e4ce1a7bdb3177f7f1705f57f5ccd5631b8d558fefd0d5492aa726259553539154bba95cbb2f3d234edc83c161721b792255d9d4f4dbf7df2452bf2fba5de0cbaa6d72986a37d558545f8d3cbeaa8b2e6d3546643829e9f53d536eecee3f5e6501b8bea557c48ba3ee2a29727cd1e4d2f26d023a29b54656ddb15dad1ad597d5a9faef5692a1e9fdc7174dfeba0a83c1f38707b8137027b0ae7e5f34b9e4be1bab576666555fa53b5aa685d6448db8b77693c8b6c82abf7ddfdd99dc771976f71bdeeb9ac0ff6dd13ea96ddf775ba3faae4a3277d7e1ee4b7413757f5bebbe9beabe28f297afca2adbd6d567dfbebfd5d7ee479c00ef853d91b235af245bd4206562bc30033ce2a2043b49347e840232801495b0c12b9787862049c8b02d9f8672c345d598174060a9d2d244b008870723f408a16609a9d8d13084911f2a74dab4d4d0706281303f37a240b3d5a58a0e064c3923f22086215c635115306044836c08ae0296785846263882ad84b52d4a9e68244b2041051903843e9870854a8fd8271040559307dc8a2bb0d49943e727d694031314c47c38041f36383ae28d182b1798329ae8e969031342971f201f7a549345132cd8c833f8aa642b4f84289be1fb92830f034cc11704c0490b2704aa4e33216e08816200664d0a4368806cf0a5411ba727aa84f934b88154838a1eae04100004589f1b1a70828d0793eb26ed0de9041fd238e0068c893615dabc6c2399ac835c11110630022107a6841b563134e51101891237082330607812a78e051ff4ac90568092341d3845a183965e1667704013474b1d2756a8287022062536c8638681a7e290194a90922c02414c06a0dd6b46b511c635426f78068144eb86aae590d2d597a069040c446c802019a541135667431722045852e328ed2880f7c3166da0045525b00011b220244d5c01d422459c15f0f6a6cc135bca3000638e960c19c664846539ab33c20215283119d180692986f5d25a13235c2062060d17306a98da08d1a2c59af184012ade2c7e58674f4a0ad870674810f8445bd2530f3744f1d1c39b351a4f766a0e9c142708f58c8a4c553054f4d3c1152900e006c50725b8a16da03fc05183100df8e0d372c00d129c29e3d440149424909400d405851336f959a16a061ea6b03182143b26c8e2cd10238696685823675c502538064621ac98a9013424ca061f70fda8e0e0458e28136c298a1e4a7e30a28bc9003ca642000248d20d4464c005984013446a48d26479e5c8b443b81a19b2248066e4abc7f7a58af30e9e2b05dcc4b122c7b007072803a6b4a891e0881c103e0d7428e690260e1a4bbc6680e2415103dab383c25884ced1b78297332501a8606192e48665124e4c4a708108356d1868018b9324d49626059dac2812ecc0b32bc0eaa807a3062dc031e30d60242bb26303b3aa2deae4007a3b5ed00317180a0489bec596f04c1e609cac30310a847439620928806a52528cc8fcdc29d3b3d363269843441eaf281596a44451891cbbf8885c204100eb8418b080451982f8a6cb9b1ac82030c59ad5004c2db060c43a56d802a1b85507570018110647aca570b45041498228448eb86280225284bc71b2c38113656371b6045f2cafa440429a1d827e539875a961af64f145958502523fc409b65a44d887d0a601213b9a5c31448d1e2ba0dab8901463851186a2f069d9cae8a070dab0d2b4813a62a4c2c4c2a844969c8e1b923e383962042c462d20e0e204778fb478e2f20669b2c0006cdab099e79b3aa66736733721a60ca982275d4f5570763c0ce0e0ca540893f36c41c01679f2e4c9a3f78ed72272f7ad2b302743b4266a41723c25f19a7a5f6c7cbbc026b4e16b347a4661bfac462ad15c9455b64894883bd6026bf1c5810616c87205014c0573190ebbb2cc8458439410c922c34c864d468649b8bcc8b68c60897d619571e11cd807d01d4f1591c3dd9dc0bb1eee98287b0dee353cb97b0c69aef08ced32480baa912548194fb26600324890c6840c00c11049862e8ee874b4c9f22bce581669c1400a641ee0e14789dfda106e135ae09385b289362c1ba320ee08b1f341da0d52bc5162c80bb1086420fa81010b6e31f0a04dc096678a252320b0458bb21f182fa828c0052cdee43cb04437834b0646ea20dbda20294b921dd91a767539522603921498b8e33e2ffc7866e3b97bcea3858f8f1630281241230a256220190b635543134baf256134000113b452864cda0f394c7c29ea80478f0f225488326bf03850446a868953d18201286f4024a1d38103a59d27746480e68912966081bc864a04e080b5839ea292244eb0c051809417255fbbc70aa2d797003e077af036b109295a30a189a0285e1c3084c60c13d81c201c01ed4708508a8eb0e296ebe00b0c15a4b981e882061cac515a100015399c94061cc81a4be3438b7642b1a828a5d60582092a9861f5c112188c79a084ab1e49bc8d3045163b10204182195344a125830c414f0f8eb16ddde4cb6ae4ab22916d51bb2709ebb98b099df5b6abcb1dbff1df7ae0768150505450c3a4aaf77ab654f5347506f5545caaa2929aa242d1229336a2514e2994125a1335a5772bdd54bf459d74d36ddbab646c955cddd62685c73755dbde0d45be5ecfd05545d950163dbeef6a34b65db7ba7eaad535995496b9bb03feb6ad5b54baef66dba276bf7dfff8473465cbea7f5bb60628df3ab97c879a4d7d55a4ea268768612aeab4cd727724775cc6dd89de1b42b45d6015500af8a4a4a457b4b89596afeaa2c9ac63bbc01e979bbb3f10abff20118d555915456a97f8ef4693af8b2cca96b268910b893b30d51b6dfb75458b5adee3dab90ff1ded619f4f8e8b32a52bfeaeb158d55f70bdd5dc97b5b6fee0edc1b3dfeab3ceb6d69b56cba8543ab0677076ef4d755b76df493d058f5ddae6a7c63ebf5c0e5ba2a8d5ffcb7653f55d3dfe91bdbdfc25423f5eb85d4afd73ebeea11fd2695aeab5f144b7d572558aa0e512723acb0c9c8d61bd5ab264363d5b765d3a9eaba9a4dacecea6dd7328de6a2af56aea89165b2755f76eb6dc7d0e4dbae7bf8b2da7595c5a17e5b36b6555fe5da6ef445b554a3ea6a23fa6d8dbced5aa691aa9956aea149b1945589a4acaae6ee2ebc9745747730ef65b9707733ef61a9712093256fbbeea49455d5085802dcfab8d1757f9aea57dd6d52a72fabd9f46ff568f6c0b75df76ba4fa3e525135aa459ddc4a29abaa1da52cfac421dbaa7beb4dd4c9247a7c62caaa6ac467359b8a666c3fd5afdb26b5fbedb3e86ff5b5ab8f66bac86aa3510ceb8bbb7fd0d5af11c54ac03fa8ddd6a8cf865b0dd5c954ef76cd6275522cd5ef15121a6a06f6494756456d640783ae4663f5de1ab95794cdd52fab0edd5e8dc6a2646e666eebba5b6cabbeea6651d76ca36b59eaa26d9acc6df5b1d826f57007833b1dbe7a5dd1a4abb5de362c6d55578fa915db952da25fbd26916dd6db86ada87ed1a2ba26955a7ba989a0b12a8ba696e9b6765d856f1bc6b6aa1afa962d5914ac6dcd8ec536b9a5566cbf345b8bd464622fab82a5dad5646f1bf6b661455815d98615d16ae85bc6aa606da89b1e5ff548eb6a25fb587cd5b63234564d593d96eab7f5725ba412a9baa160baa8ba63da458f656046b6d236ab0d25d3695bd45aae3e432ac35665aa8fc5326151a79d89a1b1eade2a58eae58682b99a6d130b7bdb964cbfe85bb6d5ad593d44bfa8ab593da435e3d24db476b9d0d8f6ab6dcd34120d4b59259757ca2a5baeb70d5bbeeaaa9ea167ad3bf6b66b59eac5aae8310bccc8961b0a967ae9266a19aba2c856cb0d054bb52eba6da915db15cbd5635baf29abc44ad5156563bdd65558dc2a98d65c49bd95906d7a054802ee2ec37b4092feedfb3bd5682c7a2c26dbd74a567dd9b6f8edfba956ddb7812bef012972ff9707bb759b6ef5f8feb1a81edb3e090d5d8d6f96eaad7c659bc49df8715880bb17f19e55d29d804cc026b62d2c3132b33222763c066f17a8cf5af7dd4cc02725565d5d8df41f1dee39877b0ee06d87dfdea4bcf5bcb9bfbd797e73f3cd1378732c58dc7b9ce7eeee0abc39efed4dca1b9637f7b73705fc6d8abbfb91bb12effda8e1047c6a023229b16dad7b76dce8b186f78254b8b3b5ffc78d76a1b1aafb960583ee30b9df229a44b659c16051a76db135b25e3a455db464118d545f5649f66ef44b7d55d6ab89baa2acca75b537ba1687ae4ebaa148b562bb9eade8dbbe4337147965e58622377ae6eab1fd1ed1547de4cae94969b537ba661d8b2f9adcaa96abc7dc50e47e55a4ba068348fdeea5d62e5771abc86070b35aad7d83c1bd952ffa96e9228bae2896d6c6e15ea2c9a5dbbe68caa2602beaeaa4d88a22dd366c2fd1b1ed02979696f48bbaef3e53eea52a26a6a833a974a9290a2da6c5267da6998c534efa49492ddd4a6f9ba26a6b9b5cdaafb2552bea6371e955d15634a8d150b77d7730f8ba6d32a9dc438d445d638faa0b1008e4f1ea35e945b58bf66f1bf6c0fd2b8aaecae28a16fff8aa6d8fc6aa6ded6a7475ca2a5fbbe8eb23c155b3e935d8866d9dc467fbd8def80f77bfe2bd2938db05a6fadd9a1dbafa5587c8d6350e8b3ab9978a9acd67c6cc999c52af9755b6c5a2d07127f24611d88d1a4ec800e45c62c2890cd707294441a68ebc58200a901b443462f80c2b186a428dbb0fbd37f5be5d605b9bb26a5b13b00908a5a4a6573455aa6a8a8a72d26caeb2885920db815f2032f4251d22f2953a715c57830b8e717402179186b016094db003437658879406ec428522d307121ade44bf306bbcc580b9e46ce041babce126536df25ea10e1e1376e4500358e50fba00c979b10a22078d19839b008e177ec12c8ccea809043014103d730a0e1da6408b9c3300223cfc864a0426580d1ee01d057065322c10e1b0173eb75ac20d3e36d0e659c8d08105603b212770030bdcc09205af4249055e125b32b1c8020bfc640797732086c9794b9f59435710f80dba7476456332b9d282bbe2a4828cc4db0c399d854fbec00b99dc042390e0564fbc613625543161a8f1200766831ab07205315807983bbe43143d4ec0d40b0f234a661d53675c0b28e6602d1720e0076850e45a92c071ac2176e61266019b11a2853fa8c2095cc48827f88618260c023106de695edc0a16c09c00a5201c8d19c4a9868bc1d4e2539ac15d8f8c5681969cd1cec2dd80cd6022d18cb0963618e6065965f00b2094e01b0988f1175b6abe5644859350e580cc009b206fc187355907280ef898521eec039317b00b6d48e02e26046125e258c114bc90c312d039739d2329cc030d469fcab1f1aae5c82440a9c5476465938d2203674d71006751c406bf4203189c1321b89835a8bc77b16225bf593375be1170c1492c090143e1b183bda6d6701a0a945ea50d16aec40936fe04101c984a5a20ee430d1873c716057c07c3926f99bae146e4a0634630238c33b08603ef5064e6419408cb5932c0e1c408a64c264540e60b2cf2e472a4c1214b514101c3e0d3035b19236552808519ce2105644e47f1819d604460aa6c94f0113b28c1115860c3e93840c3350022044e208c95d369a2036721185612c1056c01961ebcc69336ce01134977012c05dc04962eaee3051bf8cc4ac871c071032731b9f25a1119db61a3815904c0089902a793f3810a3459801a6c74178049c92faea4c8c9f851260f318311f9001918e0b4a029e69b3336b0d10369b0942adb7b5ee4c91018e1814ba0eb993b8220e1c0254ae0210ce6e031025030dd297eb8ee831dcc2b31ccc1611570e116aa48e0396871ca320cb0e5be157cf09f41fa0e5cc18c93514026208612b82d4450780b632e307f0078c34969aaf2145168c95f4d1a985c4d6470974f3a55e0c18933d0020db763e4c18b51e698681a0a6ef6d5c624e000203f7b12201bef4871166a68c24cae6e70385d4dfc0b100d60254674cc280f540fe21202e31938c052c49082d90312196018d4dacc560733668c009c65197240c9453a2883910c1040a6c180d27c620c1b7369080b788b0c9898c2126a38650cc0c6a5406164070c48f22d3df870127cd21c8b532b1fb1448e6359e108cf01c096bbf049f08b09ace0108ee8cc1e220481db9ad4980038a9c06b2400e253a9109805067c4c074e68c323309531b30093643851b44c26a72cb948aa0a7e11028d2c15c352de52062d672dd9e0037211f9a7e36019e008e175b6d890d3583084bf608788ec55c3124e22008189000e523c061a5ee413ceb4e121271a173a358167ec58933d8851041e8206251cc60a641c79c68e6994850dbc0519206e459133cf82fbca549c4d064255c425a09483f9811335dc09473bf21010797a81a20e76010a14594a0c2d4b752df1015f58f858c10b7849912c700f5498c03e18e0868141227008b060391155794c2e226c81552262700dc90bbc48161698401c471e86698acc83b2c4473841b8ce1d26f8831c64bccb8e13fc84241bf0912bcc57e4091c08a5b19c40910f1c0d6ca44cefb2333d08800413cb1b030e883551b0d9150b39205deb4a39a6b80a52d0b8bb13e33a943100bf40268aa9464b09ac2400017c8935653c8e9617dfa17c212cea9a01f74eaa6b1289ea36223189549e3dfaaf466bcb1ef8b27a3f31a9be1b3dfe40f2f13fbec7fbf8a307f249f51dbe7afd819454dfa3e28a168740fe5fbd2e2da949ef56ba4422f181cbb34f424aaaefd12b2d57175d55a4ba1f7db6758dc41545ba2fbad95645d3eeb36c9b54df475dfda2eb7bd67efb3e516be3904824b6bfa4eaaa6c3f2251d5c65fd1bdd1356b6f74d5c6a15eb5366acde5a58dc3a4fa06839acbdd79b8e73cbd0b66a8da38d4da38bc005be03beca38b869e9d39eac93689bb7c3a80ed025d24320ac8a4a474a656748f880ddb86656aacf2582c6bc780c8367deda2c8e432897845a5545f1b5b1745f5d68baa6ac656f8c0bdaea8f2972e8a54dde459f2acebac08b5b393ea8bae71f7575944b7387a14a2635a1bd122adb9b0b6d65c3e620e6cabbe6fcba2b16ada165157ff3e4253cf528d96ea754c17d16419f058542eb3806cebaa45b77d8b2817dbaa2f59927653edaa5ba7dad8d614c07fcb6a9738744391c1e05653f6559fa84c2212dfd82ecf60f440c100ceb6c4675522f175d36c527df5ab4c22dba2e65293c277b7c9e1504d0ab56b75150c0e8d8c719f91a4112146d896dd43633b1c0e5fbd95d8966d8b9fee9455dbcdb6597bef15ddae4e75514b4d0a81c7576d1beee4f06d5b17986a17b89144373d744391cbb27fb78a74f4c4ac1f2675b1889ea1eafb5b7ddd56a551ec8148acab7c53173d0235503d32aa0f44036ae376d5dcb6edd5ec468b29daba2d7bf449f5b893eb8a16d10ddc3f7cdb6472ec8f1bedd248f5bdfa24abb71d1b1adbe1702751a4066aa556aeb9dae8ea572bb5728054a3a1a166c0e5de2a4a241659776ddba45adb1e5f8d34f26eef0f7d46354107de7446246e1758056c02322929f90490400017b8b5fb3ad916f7b3ea500dd56d6aa83e5256d46cc1e01ea6baa88da43a65952d56baf74ed7b60b7d51ad2cadb934975b7bb635aabb525625b2c4daafdb26dfad7e6db3ad14d55d67aafb6e55ebdde897d1d8eeb75d878ce0ba7a889bfb10245ea9d7909d6b23d71a60aa972b979bbb7309e1321d88b67995896d25b7ac7074a3472d335a47e46f55ebc88140cdb6ff3acb4eaa66a5515aeadfc377a7595a804c88c0ddd67e6dd046746fbf5c60fb6ab6b37f79b0664024529f99095320478448904821956b266a52e822c180c7576dd32feb3526fcbdf5aa814a4b26041089c4d7edd9b32a1b7a44f5aadcbb0dfbb3e5af7aaf5b0f24b2443230b02422127ba4916dd90321bed1eb815babaede8f9281810df7d04522c9c0c05c2412480606766555d4468ada48da86b948e430b95f371df6b66b19ea6e6dcd86ea2fa318abd9de762d6b8dacd71e4b55adb676d558c78d7619c5dedd66155524ca2eb5b4ba26359717ebe5f454e46dd78d1edd7498aa957ab9e930af76ec6dd7d74d87e935a9ba66ad99979b0edb6ecbe5bab5675adb6b89d58691b5b561acfe5a57616b64bdc8b212f79c04897b3ee29e8db8e7228e31f055016d17a88bc3d6c82a8daf26d127ba3a5d5525d60f816cc0e35659950bf8b6ecbbadba5fa5722dfecb6a640b160c9ab5b5ac141e2013e2abb74e8a04ccf34981b97a6505dcefaa44956dfaaaa8ab1426713ddbbe6edbf6cb75d5bb3d16df55b6491eb8b7f2455d349944bf470fa39afe565db40d7d8df5c08d75ee69ee7b72e2681b993e59f976813ea737664e679c8a9a65dba2cae564c4dd814e4cde6467378d7177a0575312d8a6595f1353d3cec7f4c681acfa3ea62b0e64d136cdfa98b08062efb6467455a64b1c2c11814b470e8c03d4f2fa23d08c7e55e4960f787477a00fc8b455253bee402daf2cd64caaa25bc9a744c5aae851b3bf93ac705627515f929ba437773fbe687245956f11dd3cd0d0f77920f7ab22b792869bb891a88b26af7ccce040265fdc814c7c24dde7a3cb1dc884e8f351c33f48450f21d41e5f5ce3bb59d5d7e3cdd76375b037a2afc7540f1cee1f6455f4836d9a65db3ff2c00d54d136f4916d915559142dd56b5bcbaa1551634b1c6a3749745b238fd76d7bb54d0237abb6bd68aa51b32c8ba66a1d548ec517057bdb302d259798abd79445bbdab0360c6379bbb8b3696de4a00c765fe2be00cc383501999494d0e152ab0d03180be085bb03f5db1ae14a7dbf38fb37e677c581fa17b55c5fe1d5957e5b23566e2d967e5bb6e1d5159494b21d0eafac8adac8d5558aea2e2b2bb7166be8ee3edc67e4fb386fcbf666dcf73fe6fba1abe5baa24a1605eb7abdb61b0a86e486228fbeaded7a20abbaad71ab6c5f65ac0a06447ed223118947cff564c05f51bbbf4fb5ab5375bb2812518df845ad946c7fa39ff4b2e8fbe8d17faa8944880f6c625291caa4522357d40d69af6b12fa6c7bf41adb6f6bbb50572f8f2fea6ea91555b77dd4d5eb99ba779bcc7a37ba6aa4fafed66ae8ab5644cfd4daf60bd9ba46b7357efbb67dd27e2f60d24e12bee8f1ddeaf1fd54a7a83ea2bf972ccaa6dda2fa165177ec81e98ab2a9aebbdf76dd9a6d97ecdeab56ee5797bded9a04be6debbaedfff28164ed98593bb655648b16ffdd7aa08b1ad990b6de474957bfad11a4a3746d8f5bbbc7073eb04d425f346533b66a6d7b7ce2906d59add3967df497674f2426895ae9bec46f5fa4a3bd53b72d1a5b57d5c777a9d57ebb1ae9a2c64ff5a3ae2efb475dfdadf15fab15f5765be303db75555f56f94c2fbad32db2d464c237c77d97f97c5e7cbef44460458bc273ebb735e2668c9e17b64dd1d82434e5d967991eac1acd45cd7cbd22f459f597c9d67dc7dc5cf3097d71d354d26e5248cb7d42395cbf2d1b1dbd8392ee0e5462d525f58b3a2d17456fa12f68e7f4a26f6b04088ebb2781c6f8809af88092eefe6fbb6e1f508e96053a8f68ea71f9aa2baa5cf3fdc4f1fdac717763ebfba9c07d887340ef25dab6a2bf5555b3b567429f0f1e9f373e643e45cfded688d65be9d3e541f7f920b5afaf670d10e9e87bbab8af872804d8f3c09767c781acfa481fef8bbb0391dc573dfa2dc47d3c24402477ab482ff7f1ce74eadbc1599ebd70e7c55dbb46dfaeccf7a245601c9d19079e0d719f8ee840a4adb5d1a713e25ee43edd03916d59ee095feecb6ed77f9549dfd6aefaec5fe5d96e8f6dbe1c1177609a6ab7f84944a2726f35d56de8d18c2bd53a65d5e2d664a9264b75caeae45696a59a755915cc7dd1a4262b926a3657bfbbfd7ab7522bd56d6dca6ef970491747f4e18abcad5db17ce71c57d26e72e9a26a51356a56639d6754b525dff9e60e24f270df39e640ad64f546538fdfb6afefdc6965dabeef33e1b803893eb3cb1616b59160d04c6bd7386cd3accf64f2993b5f8e036442f46533be7cc5814c88be8cc4977b78ed1555a62a9b9ab2aa1b0a06d448f57dd14fd7f6e88682b1adeab6c694d5bf5cdfe2db86b1ad9166db7f37aad77fd17f91aeb265438d8fbe71d5bbd5faa066d5f591edfbb6580fdceabbca5665438ffa4cf9af465ba2c8fd7a4d2adba5d703cb5aad77dbb4a4f2599d6c836a5b759f6d6bdf55b6cb7fd16ff7b7a9abd9745bdbf5c0540fb5ab2ceacdaac4d7c667d162923e53bfc7725d51edf67865bb7ca3d71b89916d29f9306197d9936d9909b7c886fc16d69b9515017b20ab932d6acee046efc4c9a7fa815cbd13278f74b455a0d6ae1189863d10d5ae118d5593cecadaf597acf0812a91b895c4f67dd9b6a86e34b65dd127127feb9db48dc656a7a8fb6aac2712956d92271289ffe41f7d51ad4f1afba42b2b2ba47a2c4ba26040feff0df8d7ab9a44b6c5962512895b1f40fbee241275d3cfa6be4554a7dfbeb105fec6c2cddd89780f0b2577200f1e1f4cd561d2366af7dda3f7aee0c091ffc207ee6551f8413456655df4c8562bb65fff3b5ddbae8d6a2d34564d599d74db5ad1adba6d6dd57db7265bbe6aaa2ad7d403dc3df59edb11faa25a64a9975ab1fd4ad5bdd58aedd74643572e140d5d8da96ed2ba46ad5d23d6cf8ad3ddd1675b7546156f8063f9822ab6b896982acc801a5441c4850a2f6c5410afb839a93205167b5dd1a2d9d50e06cdacdc5aace146a59a94eb3ac596e314427c8aa23b7768702013e2f155dbd0e1baa243cda6ea74b8d12170a7fa587cd1332fee5ef41e1417dc1d3d53ee65724d5ba41473dcdda538e3cabdbda47080a8dfd608d0d56fcbf6ff5748ac3abc42d2ca35ad55d446f68ab2eaf045af52afbd745124527975657575a5d9d4b7a88d46fdb2baf80ed9561d2e3591b1ace346ddd0375ddbab4fba32b372d3171d5e9959a55ea93a74428636e198992eba2d579ae5869a8ded945572b5e95467a56db2ce1aad3a5feab839569db13a47ee7578a97edb347b857675150c9a7d92955b8b150c9a6deda2c74dc70a3a33b8d3f9e24026443a49073221d2e9a253b4c49c25c62cf1e60e64b204122013e212ef4026c43973d6cc01009009f16dd7b2b2d44bfded8682b548b735ba3af92c5a049afdb75fc0adddd72eba64d1cdaa60405645b6457da681ef2574359bfeadaec017e8b649e5a75aadd8aeacd2f8c6561fcd34120d3b02d44dd40d4c02d3adf540221122122d7b24a83ef8b6eca31a696cf55afcad9aa9da45972cdabeef0b1fd8becbf675f5aba2cfa21ad9becba4add98a3c70138f6f526ba1b12aab74c788574a4f1c12dfd80adbe4deafeaa4a4dda48abeac56aee97da6dcbff5c0a60fae2b4a24363d4d15d9f6b7baaae8abd3d76e8b7c9a926a5ad27a7fd2d61b2d06c5b4c4cc1eb8d59755db24d916ba74f5bb51e36f3575fd9d74d36911454a3afa54279328327d577d3443ff8f45547f924e5b96b875da86119f651fed59b448b685444c3a4ad2da7d9f6d93ca67faf6d55bbb6e2818d1455ff593fed5ab4e9f5dbaca8d6af7656b8f3c50bfa85a6cf746df55a69fbabaed814bb6556fa43ebe5ff6409db669d62db2ea6f95487cb735bee852ab2551b030bdd5ad1ed9ad56445db307aee83e16db24abd7b64dbe2eaa6ef21fb8db349ba26eabea222bf62cfaedfba97a6c4bd7f6f84b1775db24529b3dd05537faf5c07f37aba268e87b21d974aa723d90557f3f79b34314f70f8e2d5d2e3bec7498e3eeafc30cae83181db2243db27575187b1dfecc88bb2f792f87393984f11c92bd1c985ccb2d0b0e4f72d86d1ce0b8e749bd5e7498b6a1ee4e2ecd92cb572351b688de1bd73fddaa2eb2eafe4de4c2f7e5a68228a6ac81630501258e847006001736aa705f709038e1042e4a604f0c938a9b19862c5a243eab6e55e96ab6ad7dd1616b64bd5a238bd62586ba3a394cbd5c6c24b2ea6f9598a2ba8bf8c616883b16e0060ab60bbc4abd5275a8b5fbeab40dd3da358ba0815417e9b1493a9b1d6c783658c1c37b36cce0c0ec366895bd6d4b26d68692ad680dc61ab86a906295c1a01b530d376ae82112ff45dbace0701826e65546b66564b8354448266656361c06dd4886bb07e07e4443eac3152db60c3830c31c77870236019b94565497b96732f73c807b1e73cf62ee39cc3d837db16d516f77dcc6dd774eeb9ec187fb0797db056a6d1c5ef57cd2d5275925af527d85d41a5964eb72ed54a75e579f947a5d21255d7d92d5d1da16dbb775c7569db6605a73ad3a6d9143ad8d1b8d555bb457d90edd506416939154b746d64b4d0ac1807b5dd1ac07d342f2edfb6a52386c8dacbad58d4cddd4a4d02503ae4aa3deca5793c2e170085ca26b8aa26de410f87ed6a36de4de2a1aea6a3675fd21f097e8fa4075886c5d63fbb2f0c03556f89a1c76aa912aba66a53a4d856bde7ccd98bb6ff5abbcb766e7ee6ae6f8567fbf5bb385a939e3ae566cd737b63d356cbf6451e4b7edaba688bb03ddd675dfadd3ab60f0aaa8bee85bf61bfd60d0cc6a851956f80264b282db0a59ae361a6155302091f8c82baba236f257403e4da2c80f3ef0dd50b0b6f64bb8d58aed576bd6ba5ac903aafb6f2d36ab874357278db8adeb6eb5aeab5b23ebd54363c572459316db348b668cbb3b2b76c59d48447374219aae24aadddf681b2b44f3f38db6b1c254a79a2cd5ebaa12095396a5f005d84b21ab97c2cedd816efb44b7cd72f5f155b7340a66d05ca5ab8ddafdd6d54d7a288ca1c0d486b97b10ef9d99e34025561f5f9daa455559d63b33c6596d7c564553ddde19377707a6ffb6ecfbaac8b3de19b3333d601b123d4109f7a52672b5975aed4c79b5d444965aed84b71390f44e28b263c20c6ec2180732219af06602120732219a7054829d5e0928b8bb8f514595950155f45f3557a76efbacda9ea1dfd6b26a1bd5640f2ceae47e742deaf497efffb8a8a2f6fe69f7a9a2caca3ed53a056e1eac8a1e815aad6563d567d1e2ef167dd1d4d8fe71a35d479fd45aed0bb8377af63bfe81e81bd5276a645b467c2051bbc717e9e8f55e51ae07129d9e94c4dfea1389ffa2a96e337be0bbd1551fdb34126589da6ddfb207bebb5d5f9f217f2b8fefbf2dfb2dbbdb22ab8fef13dfb6ad448bfaec8948495766566ecb75447c9d5c2ab776f5fb6aa3b1456e95458f458d7c3456552ba2eeabbaef6fd4d56c7a55d7a2d27b4453d7dfed17d577abac8a74f5abd375155a6d6d6c9fed5124fdb27a6b37a9dda37ff459addb5e7df60f7cb7ba3ef1cacc6a23d7557df76bb6d51b2d3eab1a5ba557d97e8bf66fcbbab5580fd44dd4adc4aaafd15c747df4351b7a448db463ab91555f6fb5cdd5c7b72dfeebf540f7f5d9bb9a4db3efeae3cb2a7fabc12d33b1b007ee6ff78a7ed203899af8cbb37f75d90353bdb72eb66e12e955bf7d378f248a3cda0f4ca26049ae3ebe1aad7dff5526571469bfed3f50cbcb455765517d5d34b9ae4a6312d5c720ca1649751bb6aa5ceb8a6621db2c2db60ddba8768bac576bb653adc334120d2beaa419400e8ae3468f5ba9fcadbe4edb30251e684d7910e5c1cf83171e047980ebc04e074e74d044b27d241d47bff4483a3e49c70793ed27e978f6e893f6332140a76d31d8410e1d9c413a7ad1a7f25e076e29aad3ef80caddadd3e3c0458f832394a9769f55bfa8a2b55fcb648bba2fab0683c1e346bb8241339db6c5b56dcf84699b7565565493edab377a1cdbfb65956d9651936d5723959b6d8ba8566b64f7b075759321dbb26e2fea6e21c7ec80698afeafab504c1c078a21c1dd81bac8a26d4ac7b727064a4fccebeeef8622b7fa2fa60077b7e13d314277ffabff6030689682bbb7796f832cac562ba26743adba2fab1e8b285249bfe8dbb21b087122b80acf02a0a1ef5017d9964dd5e1bbd3542dba7befd6cd72cf5e5d55dcf310770ce71dfb90b9f4468fc9e17eddb6ccd5c9d64d22bdf48bbe6a5278440ca826d177b59adbb60d81afb6d1d7686c5f1fdfb297c17db96e65abb2693799aeedeba3d99555bab660aab803915ebd35dbbe513d6ad3eceba3991918a13bd0d55bb99767af5314a98f66601c98fe727d59cda24857273380e30e4c33e88274c464a304bc3083ed405d44d7e4abb56d9a50b3add616b6a9b22c5d6a22e9521349d5545996810e777722f1f5d1ec6535db160656003178e3de1edbaeccac8c625f6d9abd5a5734eb2aeb37fa6656566e2dd6baa2c5239009b1c87b1874019910373ac4e0c8bf58f105077777201362304824e0b52e5b6ab5a1bb5f9d6a56d9a6caedee59defb52e60e7475f25f16555d94edd1ac7545b3804bad464c896daa2c236ba26ea412a91edf26ead6ee6ff57196015bee796b1bdb962c7916b140000b4a404a5a6ab5230bdcddff457fa9d5b4d27d875bd5c9e5bbb3561696bb9217123ea88f6ffbbe97972efe412f3c0a90a06007df2e70291864f5eba62938e31ffc54ef22c6b6751bd04625252534d5c8b6c52c1482edb8e720eef90a88bbefb21500d226986282241ca83e1aabeab3dfea2bb16dbb3f29d52dfbeaf4bf4d87bd065b2eb01354da43a09a44cb3e05eae4f2f5d186bac6560f87fa4581c9dffa1266957daadf22703f91caf82a89fa2cd59add5a7d559deadd26ddf46bb77d5f7d347b60aaf5deca5fae2bdaeea5567bbd1ffd57997c9562c1e0f1555d9db2baac75b51237335d64db30e1d6eb19ba552d23459d2ccb62e2f4c484c989c9c9e9a90d254b8341a19a14ee2152add8ae7b381ca2efb6c64fd7155593423529dcc0df4b17dd5b1735fb5e63c2d7da38d4eff26c38d4daf868edfba2c7f7b536feb04d957b2b5bb5a8ae28f259fdb2ea724d4ad536550e9767c3541d2eb5daf2ec53f5ffd5437ea9d5866e9a65d11fb22a7adc7ae8eae1906d59e02fdf24523fdbb2c927dbfa258bba5ae90e87c054bf5ba76bab8fc077ebb3e1d0a8fe7feaf56e66c0e38bfe1775f155f58144e2bbad11ac4c78846c3804fed6fb1ffdfdfb89c4dfea500337b2758dbfb72e16957ba3eeebb63504a22adbff2e7b242829e5274149298f82c13d66b585ef56bfdcd40b4a4af9b6abd1353234ba6c59c9a5d98ab2aaf1b8d1a354945357511bd145d47d87faeaeab8512fabad3597d6c6e346bbaeca52bda27a5f5915b591aba43f6eb4ab27e9caca6db93e29c98acce9497975dc6897d5157732c7dd7b78ef8a1c4fb5bbbb13e03e117e524fb5de4a68acba1a8dcae356da7a00cdd69ea19bc7abfe467fbf5b75d3bf5cf5abb2aa51a72fe6ee48debbe2e4db052695ad8bb695629a8bcc88eb6ea9896d39768d6ccb34db86192162e62e420f01a2a7abaa3cdbe8bfe818104b4b8c55ba49a494458f9236aba22fdb16d7b6a8c9c0c0b64e5bb6eb81484701a813a8a48f2df5b11ce59c4268066020000000149312003048301c0e87c311b1709e5c550014800477b06e905a1a8a6914c51432c810011000000000000000010d5ea8d16471f9b888e22087f5eef72c3067716f8584ac1359c239388cc42b60fbaab6e28963c63c3e08268c4ff1206cb8db053065f5277b36278f48d32dec217a5a6837faf91bdc19e934c907e2772618d4df7b4eb31dda81ba27c222c8ae6956dd93d8bccb2b0d3760edfe97e1078d8e03f1a38035ee676c3058ed0a3a06cae4a77cfc94e42846e445e39a90c8a30e4759a1a50e2ba515460c4ce8d1f83303a416ed1edd2619268bdcf266b127ab01e38f3e040dda63128767eca1154ba2edf734ba0994b882bdf523697a5b8f96634d4346f0c4db528b2e8d0e74661b465a99351ddd216efa62d3ac4201c302fee9a30998d02d6ac9d2f41cc8e86a9ed38ba470aadc5364aeb8e452e5aca4e6d90ea872958dfaf968b334fe2e351db594cb87403289e218c68ce691666004044a8bfea1d785fa90e5efe1d29f39a632907d6473f60a903d11f1205134eafca061eb8e704727e9d0b5c2bfa086e2eab81b9f69c484c717e8fc5890a227f64270b3b94bf1c94181e14307318ab933742caa8c1680738df30c66cee3f10e264624806f98361825492c611ed6f41680b8af31943447673a1af91afe556b64a6b4fd852444387146ea2a8f0640bb1e4067ca50c5fbeaf9ad13dbff0905962a8b64e372ee3d4a4c650888a45d130ec67e714b6e5f333d990003379f9ef37190d02516d25db161c1cd83972d0b68a64ab4816e872c2e588c320a80a8095a7413a455a7911248e38905d22562633e31bcf79fc6100118ac83a4057ee11389651d6c5ea3c3586bb09b75dcac9901ef5790edc1e307233a8da7e8ed7d7c97ed5956e06bce8b1d058b53b05356de83b4dd05cf66ff6d079a38450dcc70f98b8ed1a6212ec227120926ef05523017450ced0940d494e6342f9ede56126ceda963b192a7db05966d9e60e24cd9e917695f30b57ebc62d0996958e23b140414379d358e757936a03bfdb6ee22c45a28e224eaf7400a30b033e287ad20c5d68044724f1cf29e8258f55afeaadb9da5cf84120c8c2d6693703ac9ced80899d45aa614aa02a0a79bc614d359c9e00d005ffe2cd8b5e6f199b41aec8e78edbe65694e6f8ad5d804dce5181cb21e201119d1ddb31a0aa19efc45829070f6024ee6b0644d09cb63430fa462ce42a18bc38abc71b786b7b0fc153a2aa37e893dd5a0ece3e8c61b1b820815644caaef60133f09ffc12433453e51f26b64911d18b110818d2507906140f99c833c6e2d0a8500663a8345cc9324c5fed5bdeb6a7e9a82c97f6aa061aa560837428a5daf3fc657d44546498726085c55b9977a4418aefef36b427bdc11136b307fb2710a646c0513d7fa473446da9239627b78fb8db1261d234540a04638d89a57f5a037a2aa43e6aad1fdba10d87672bba200e7ac68948e40a506a9a2296c83361d81a2d5c397f0dbf178fce6cfe335b7c5c3d038568d34340e780607ce44f92cb8aafc64287b64b3e2c25fa4577d8b2106b714010327e13bbd7d6643cb7ab6446092e3728cca38195f01506761d2a8be42e4cbeb52a21734e7bfa495d3a2c893901da6de2b4711027301795419b70f26b3be1a44050b3375390370097b0c61ebb9a3ef01bf9237a1bc591a77f1b12b42c20d97aca2e951244c1a9de951dbf7e39961bd03ebdf1b33f8d1a265e134a2b9278bb3ae3fb7b07dac904dac615849308b57b6ca787f7cee64b1214c4a0908cbaf3da39301b9b79cd81401c30e691eee8aa3248d34d10ac922d758ca02afe75f95dd76aab0517df02b8be12cd41922c3a435a9a054fdea285f656e3a91f085bed2208ffdd06e989f40ba52d86e8f1b332fc01ba44cecd7c1458ebe80d5baf1b30a4a0204d005aff7cec017fb755dff347644e7e69307257418764f18ff9e36c10ac26340c32deb13efb77500fc977ff1268f6bd0bb72027fdf84153036443a72ef1c735fa313bdd9a0f68a5a645cf24f59458f3ee8fa762041b97b2904ed0a0c0f439ab92f1c72d41b70624f9a42af1ee1138c7641f609d86e81acbf6da6e150d15e82581f256c0cda2e1eadb4c18415c05c2ff10c29a0504d6fe2605f8931e2e97d1284aa9c0cf0db9a58513e2c57ad049185112aa4c737a650d8473c5f2231d90241c149a5fdc7a7c5a2f0c42aa98a78327d4adf8fbf7d93b423e9ef6468f7217b0cf69d8d297545831011f2e3544b8a90a96fcd16ad510019613f305717996d367da19f4e87cccc60c26bff245762385462678f8501374cf101155e81351d457661b280c849584e77a44df90001a0c38f7be0b5ee2d5ed206d4611b7e9c737baf60c5fe8b837efc0a15ed3da4e25853a5adc1b63c116bd4d3624f401426583ea5989368edbd8eaec7586c49f1090bace4487f62795a3f40e580c805f762341975c8c291139934e525b5287cf4c3ce48632a515b1aa703568308b86463508f1b713a0c0aad66e4c24b1fd2c59dc44eade270db55472c56b181ab1649b0ea02b4602e302f22a0f64970bc5070bbcc35aa1253a2f1c683b1cedd2613d263ec408d362c70773b011b253b8390ec44b293987dc417adc2ecb19e55cc0fb61d4417699a1a6c0a50a18b5cd35575445da4bbab399eaa67f9bac6bbc34cc91cd77640180b04e8297d8bf129a0c26b2e0b8ddad4473e4d0634311a23230a7471e21776b99108ef2dd848d5c8a6aa0b5748878308aca11986f86969cb295bf952292671315e58e19af55a1882a1df3c08dad9dfaee03719d2d330c29e48641e2402316b3d3270bc35bbdcf56a8318219c275bed548a7a1f03e2142b5dc66a33625f25b0df51492c1415746ae17fcf0565f373c62a0224e2bbb341ce41646bbb8b86753597fd58dfca690ae0815f4ad8af6b3b54d0ed1b1070e52008b008ea1732eee52d4940e7a544fb40ce7315c7d8afb2bf4958e278cc2b2aa46b8e979be28c9a83540d2117dbbb264ecb9351cb107e2d819f5c71d43449c3517eafc447d9e055fcbc8ef45ae829435c874e9c55e2afc79c701034a3d7491c91c3949a89bc0805e14bb0cfd0a34c5210ec578e1f387f51618c14c60cab19cb8de7e27e54f8a3fe91d8fa883cd8f0dfa38279d1a3451fd228a1d1df05e0dd38161ef8cb054c4d4251206570001b3b09e3c4ef53b6db035a9bef7256de27b8a13d8c66e7dc6cc55c31378d8aa032ca001e4a17f72a82a3b8d26032c782f377dda24217608afaf5dfe8cf2086364b67e8e24e86cda9232339d7e3c70600b22d240cfba095fdda2f231e6200ecc70f59e96705b8e0d9549413dc6d2ad1f8853ba29301a563b850599ee94fd30af5f6fe2085751c1cbe7a9ac082868a3c50a87261af29945eb3d26ef494b2e7bc60711c46d93e18dfc73dd82b8c720e3378926373979bd347538059665b28b7d37db85e07006ce7b35ab8e35e0bfcc0317957c64613b46e8c0ac4a595fff7c8fd95ba5540b368ad7fec312f9660a1c158528bf17572642d66d7b22722dfc80d545835463810cde56a30c34e2f8bb4da1e5a248df4be414eb91c49e5b667634d823e0516c196a4adf5ea3785b6cca90e37050557f8df204fb14c4e393e8b72d1b524eb79be8e3e9107949a9735166034b722ec4b8225015389d418df0dcc66c2a6e911baeea7a92e61dbdbe7dd593b28736e397e75a43f336041724b6c790fb53ccef10853bac5ea8df187e62f0737788f31cbaf9103c98e69d6c491c23ff71d8449345161c28c94b1db55ba24a1fd088e1a11a561db2f912f4cfb970033170aa3fd79c99e0f48a5ba3bbd465a709b7af7d935a1ef9508247d1aac4d935741fddd7e1954c47ed3bb7a8d411a4a170ede6fab28c9c300bca3a419444ea63be7dfcb83fdc628dd7a58ab98abb9325e88760f7cdd6a9b01d12e7c7f43522ebb7206917fd482d2f7dc8f147d665e7bf1d007208d2630541788e763d32687be553466a924bf96f9b2ba07ba4c2efdb2f46d1f277d79056e8981bc9ebebc7ad47cd342cd816ea28abccae3a770f27e5f52de420c3bd91a554cc9097ca5fab0e72a517aaa980ed2925525007aad113a7547b128431a756b0ca7a550fce6471023f88fc39080542df7c4ec4dd25adb126ba61757ec5830c0c332e0083498e396116bd9258b4731eb422fb80553b00b080a83cd22e8b42f055e38fa948851b4d5a4885655082794979bf37555708fec9185dc667727c0ae4332dc2b02bb0bd9aaa92c2038c94331c027a92ba6df13ed297a6d93ffad7e8353c7df64e3d19f3ba9589ea85785ccd4af03d1346e3005ca033193f7a6b1efd296805c619688adbac9927a3cda4d552bc272714e7fed04ad0005192e4175d6054fcb1fc6e71560feb3a67b208584389f25cf82781007047b90d30de202408854f08bd696dad60220e6d32971ddebb3fde35500a42496fc0a8e0c9c9f686d254e755f65ba004963ee331f9f55fcf16a0d0f01912144568ca9382f808ba6514434a4274a99ad65db0d5fb830eaefc29e5ef4df8599474ac29f304298ffa706a249691034a75110ccfa2bc90de5440dc80e8307ddafe7b5c122ac538d2da184fa19738b1d58f529a30cf1596fbb02efc5249f1a22e74f87b1d156df31ea09cdb6b1c130ee88abd2ced07235c006afe159491c1a2b35846440ae7fdbe1bbc259ad7c114fc077abe5e5bbd94fbe0767b95d0121d40cacf122c64ab063d603238b282a9d4b03ea340bf6aa88b18be27e93ff9e1fd05468d6e81586c879fb8aae36a1539ec1c142b9cb13f668d396f420c5dd6ed545176b4725af64b277f513e7fefc8f57db4f314f2504ea7d01450f705b5ae56a02e68bf41aae46589d75140f4e7867223718d5912972b6d4270302d5f07d580a38389d835e62d74237ee8fa171fb8021356678cede2a6023a5522a8b731e9cd80019581d633a1dadca205dae710094ec1991aad1cca1f935a34e6872bd171a66d840cc48c7bc60c9a4d25e19c45bf0f5b40fc1b514dac8e884949be51d6b0c03e00bee4e1157ec40f9817b47801cfd52ac190061897638132e0c08493f04406bf3a73acc8d02e5cfab8d35c6acbe29f20c2a3cf5296eb4de1ff85230e36ee4f0a6378a80392c0e811ce19a1e41f22e17e3896720280834b499e2c5f1279546174a2eec5783c9204efe80d464352675fa4d9c954523f1e443900d4553c12f82815368fc2c3ec890a64e44f6951d0a7cff4359f120d435edf4fecda660828faf80b966821739d7b87c1038f0b5190f04ef769f29d7b1ae4f2fe4b7ec8d5195624c90cdda7960f79c4353afed258cb249ead2e2d13b63915e135a401138d9f533cb5c7f6d984e181d178e79bf637c4403b223c30dfbca8176097e31ba4deaeb11d52067b5661a6857b11c738947eaa3c0923df701ec19a7ea70f06fded4bb0c47a5d4c5121b62eaa81b527efc9afb8f15bbd59e57881c7867ebbb40d462814a8fd2e2d30a4a06e840dfb9b4226417b00ac2b1e2df2a133dd481ff2ecb8c506c8362d7ee8157ff28e1ce4a82fb5c7bf28a665d35fc4ccd39039c3350cb20247781c80253d162aa5f489f8c3e6747dd818a3651e64c7a2ca2b2473a2cb3d17e6d5abe89777718f5df27d96562f0c165838393b41a79979ec1c9bda444cc7bff0ba9219d7ed16989b9e2b0c7328eba2d4fa41f3b38fbb534b85d1035d2278fe0eecabe7b472e0311c84cbbe542d3de32399d2f2c1a7edd5b206920f9a1319641b7e9d2a4e5015639253434a0ddf762a06e3b7028a5ed8bd4a76ddd07b1439752ec344d82f6d5c078d09698ef453264208003488c4348ffd56e18bbeef44f7ccec7407b720019dd9b0beda30cb3e076cb189f2bbe36bdf42378c7275936680181a724fae7ddb48e22793ca6cec63376dbe586d0c151dc080fccae74d1c7062e2660c28ae306430fee0a00618f5617bf71ed8a59ea51f8ad992ca8611aec8063305efd0129905ae05a3bb4ca5dfb46b63c08d7014ad2986604fddfb0dc3858d160fc1b4738337d215c704a462183a52a95677e1aefd3f33da01125105f9a70dc3823f4fccd7d05141a3fad744c7c507c87d76b4274fe98d8d6857ebd85b8bc8dcb96af90609fbe92c647140f0110a1771b32420acb946d1c92aa0e89261052281748fb8c68644bef51b92c12f58c11cfe5b9731f1eb2080ec697e38c8e0bd2285df807da8770ad13bd26169d1b138fd48baac8a016692139c4a2ea8f040b0806dd9668ea8c3063d5dc14fcee1a6c27ef63a6b50e08278f3bd5fb2b463d472812134ffc33832f5224b36d91dea27c47d2b45e2929ffa8f35e203c1534aeae2e83327ea74a1162fbea0f7336cf59e22bc4f82d7c0a5216c8a6326104baeb5f30cbe84c93df10d8a40e255adf43856734b151f280c63b97360f6a66f1532f24932ae223edfa902cd21b8486999b8282eb5a898ab155971ce503d397a91ae1129248f05b9ed3d338db6123f9f6bd6d2f1300d00a92cb9d68d8e1c27dd1a7a9474180a2dd082e5a91ad06d1e1aceb26ce194ab18a150f6a3e40b9979cfa5c2f73ec1323fd7d1b90e6d92744b8b9980003760713d0f5dbf97762a7677a19b7c54cad2154e04b311a41c9af9e3a4e18d5343a21182ece067a7c2e5474b0e46c62825448867e3fd83cc8d6c99be79ec0ace2acd22058f66331a0320afdb4e0886604165b6d509b2ce7622ced9e5b957d8e7d5fab5a00afab181be463d93894810bb4a955efb5f803a203197fd6e4989c296eea6531494feefe2864e22ef080c7955cabbd641358fce7855b95f94de8b0df8d692ac92eed83f7513c5d1b7073a5e2e96dc5e6503291b4bb2dbea8383c9fca680deb416b18fba27018909b1396fb80c9cd00c7a0346c9912a8e1a05e74c46c654c6e67b35ea0678ef7733a2a932ba38e5c779592e05061fd005e6ba9c323be2991bba07cc74b14de27e3dbe1db61d4536146f09dc388afe8fe178df92d0c772946eafc08038e55d86259ea803347927ac89a0db95b3448f2ccb953e46a3d9aeb900e60093b0c3f304684061ab0334dbec9ac817f9ea696f3d34ad28ffa86160a08bc14600829528a3324197f1abf76953256764c6d7e2da1d1992f574bc327512dd5000a92d06dd1bba0889467f571a96f4d09fde0c05c050c1850ac2997d61510d60167519478ec15bd28db8831c96e6c71bcf6cb84445f9325b6948fe010862b5ef917f4dfd0a956571f8f64806bd5951049b03a46f14765e383b4d93f41465a6faa0e75eadae09ba21758fb746197197cb913b975ff1199479626f7ec8baee170999ba6dada7947449e021d3d30166d8bc796fa3df55a06006b9c52100f8b0776b95609a1be0a9e333aaa24800ce05b6d88eb4ce91ae0ebce8e205b514d315d8c203481e5d7f49362355749de6beea7d3444a7034abca392f0b2cf335fe42ca99dcf84d5d64eb3162047d47ac7baa6443d28cead084a8a3812ceba821bd6662aedf64fa10ebfe0ef5f0f4a1ff3cc45a8148573ef523eb68ff097a0b74812d03e6803b0e7c3f6cd2ebfc73110b6edd7df8f5e3e5d16028e4ee4340a06b10cc8ef0e121272998de1860e18ceea50a01a1efebd80585e4c87d73fe851d2e7e805617b3eb4d26484add278dc10e09382e60307aab98e80de8531f8d1b9ad65e66d3822a425c43ae2def747f16af0df94aa0e0a3cef841abf4b1e59c3c2d0b565f7b5c2d02e3170bd9aa32da8d2adb6c2ed74818021926c8bfd15b5899a7341dc3210538200741226ac1926eee30772f9b0522f39cb91d8cc6235f2a90a4af4e26a2ffdd750e2545f3bed0e945746bf76a9436ce457592b828ef05fc2b45dbe80584579298fe03b4ab2ee7b3d72f32e0e279c07106c53a40a6e8b63a49b3dc6caee8b913fbf394f26afffd731ad353dad3c8958e74d9c1cde631bec4b3222814c1f2bafc184967594d50932a503818b7864e1e1c3bc646e5776742fd85451c3945bc07a3decacc754f47cf8a3a22dd28c7eee1a3dbe31e0931ecd3b5ebc9c6c2ef262dfbbabe2bb6f53a1d199f03ae3a37bac9546bbdd0d2cba031c4d82da7eb9bdc15d542530099132938367430b15d443a0f88b4704794d5ee47da3dd00706da63700248c06826813c55bc5a7cab84dd2aa0c7d7caf5a8513eac16b3c0c0a1dd23d9e0476e5fc22da7938a8cbf514e59e8e251065a167d7e2c49ee927b2be3aa0a5c33705499c8cb9733d6e8eb20f86e42d34ac270c1635e367152b9a990c84a81fe656f37a1f40a588dd6da72bce04f68961680109fa2c80a4857dca44cd37a856e6fa347ffde57a8f4b7dc89e5dfbd2ba5e5cbd45a29b428c4503ce85501f00f7b3e06cc0f6dc40fe39c26f8893006866033df70030a7579ddc7219d006d8d9a271eafa8ba055e43f6dae775f674fba527a06d7619d541aec67f563b1cc4938e7161cf541229bc4b5bbd2d407807a08f12fcbb6404492ae7ed7a94e5a9c2e5ad270c5641e367a7baa9220d5600f8d9fc6f907d0ab533d20c4ccd58a84f22a2f3a76287eb0e1505ae5884bee558a876f6c4afb6a514a383c56e2d085a3f518270476e50921cd9ca9b1847123e5025c56f1dd70839abb1c5a53fba1f045358ce75c5ab3a091223946feaadea794d7abaaf82921c293eba70eab2b3f798bc2e9a74a9fdb7ce3ea35e111467aa95d24d2e9c20b2980b574d28dae15c7d4d659ad4967707d38a7044621d68b1fc4c4863d9e7acf54bc47e0ba7293dcd53ca5ede780302827599e5735bf47536b84716aec5a3b43d82ab1ced996e9f0ae148f646ee7c1a516465aa6effc34de4f89f851ede1f28d00fe5cd19fede116bc76587a0d3a627497a96222f573bdaa41c706dacf99d64edd8548ed7e47b7e39b2d67fb9cca40536ea16292b189d2ee660d072096c0ef62cc3298bb24e17914f9aaf0f1f4613fb56e3c5d80b7c236029bfafaee9613490b834563738013644ce7b041fe1cd2104e67244d02f038c6692e03ee0fda91d9c7188cd38389702d55e8feab8542c2a071428f93a8f92b9ae78393fae0e9fefc0b6107ba7245ec9b83e2c349d16ddc5002295c56e8b8e9027960474ceb72002b04c1aabfd41f7e765fdea4a48c066af8756308bfcaf9c4d7c87a6abee78806395d6e9e9978250ff35f3f0f496a151ef1a07798d39ea78ca10520b4175a8e0c7b67e81384eafc0468731c127029276e6944fbaa42d9e1a01b75f35cc871baa71eac05854ce4cba1317b1e9fa21bb5a1b7f3deb474b62a06aff8fbc210ea12c76f1c8b95d6d8f43f2c86dd119426d11b5b54cf00727e338182517d870ce2fa151135b59f5726668786adf082b313227e45eda03698f60c57ba4cfb06c740644fa6f417b6e242e6ae255b3f5aaa74770efc004aca980fc0cf0ecd02bd45f7c1771f53845f19fea5d33e9e60238397fae1bed2d93351877bd085038e7104ed32a2c5936dbf6ee4e3ffe324697e336112c437743d454e2008def4c60d16da22ce3f552623c2bd762344c8e73853b114f0f6f8613fbbb255a693ec2e88b021155def7d699a3c333c338e7f3bb84f5144ec1ef3768fece7b45b33295bc3d508f0c1ebcb81084647b9f26689d808108472b7fedcac6d51d7faa72a25d6577226d1092b78865c308a273cdf4458817133ec50140f7126f3b036b04d66f3d1778ade5f09457c880d545402c9a760d47d1737d5ec87bcf9a93b50a37da8f7b204af0bf21ebf42b380264e70672d6280520a65fc4b300d65c817b324b99e345fd83172efa9b031702805d57c3b45f6b795167891325885e8cdc26870ae0ec30f3b7d01c8145eeccb36c1192d00f3e0d4c00c0f45fd485116954cbda530cbfff0d9a21fe38f4c7e9350f157535fd41f8a961e55ca0e3e3bd819c875523e1f317686ddda61f008c9026d8d5a244c5e1252175c274ee1b76131b2cb08aea55ffba9298341af34190abf360c50551c7955cc63e544deb842879dbaabd0e30e262fd71cb7cde9ac73923089cfdfe448dd8552bb7a7e2399d31cb248f09e3ce7c409328a7ea1356ee7e6ce013dc80231fb10d281709e42c8d2021fe78ff96dfdda59603c12305a1abe53733224c61789d3daa63e7079fd9b372a6b00998abc1f7ed5c8651177b19013f3ce7bce5a444d90449861bc89ed6a1784b804508f70744e01a3b5ecd100bee5248c9f9e2a05f70f827c686da77713a5122ec4f6253c06d0a1af9f151a7568944a94269d8caf154cb8e2628b4c122026955a0df296ef884f982f5d6633aff8421f9781c39a3038ca731d37b2f92866f3aa631f27a60b10844210d2c1f2dc51a0d492b582823856c448b30d519dd8834a0f2cc16bd43968e8e9f800edfff18be18774e7dbd786aeb152a78046a05ab3d098150db6c573528154467278e2b58681be600338c6a7ed6ec10480a0304fa83ac24f15b24eaefde3cdca0050e0427cbfbbb5001622476cfc4f12941a2002a095ce6cf5826de151cad604788564cf852cabae74dedbcc8b69f5e1e6cd37c644f9c02cc6b2fc34a5b08fd880377044d22152d939d71b83dc2a7c887b5024aeb1ef626a335270f8e1f425907ccb575e74c33fa1f1fc5909ffd6c34e6046eb1bf3d8e369dfd3d2eac097d76ceb20ed360bd91b2063ef3539a3c7e04c6fcf8da4880c1111aa2492568c081791f5c085b2c645b2ca8d71f008c00328eb054b42bc073d8d46f695ed590ec1e91d843c24c1898b1b61e909be877cfcabcca147ce6edb0918858b3bfec2318d4dc35db2aac94ba34f1709b8e48e1529a50d562410f775ec78b346002aa2d37ee6b976d94d4bccbe4b25e8bb000150cf8c4fd1d7ce8acbfb44123ba6111aa2446a98d81a9d58d3321b626352260b131a9981afaa02e97f5df8afa45e17df55c1403c03767dc7e4ae6d5bf17f52be937daa5c4e77ffb97c4f3b9d331d04726a2e85b7e19e1aec7e4e6f81f3f61ae506365c0d65f84f1ab80293276816c3284b36ecc80e5dd23e0dcb6f5995a3b921ef930a070f1fd807648521a694bd857b8ade7eb378287496bfcf84a0fd7716c535aff780c493b9d7da0418aeaa93ac071b3c54d1b82ce5b71011d83a7085ebae6dc337c1a7a5b2db56c08cf52cb1255c1ece00c1b38e258e6b68dace3dcfb9a0f29e962754bc270143d1ace83964d6bb195333a555a28653357fb365f73e4f0c5d32a8809c0b8bdb4217290ced7803e8500eeec7ff0cda71731412001a074363867c747192fa36bfb5794ed8a1c84ae131ff7d948d18dabacdbc89037d67e2ef1ee796d9cc8578df4d806caa2d801791ee0323a42944c691e5f6604052e2d1044982da7f12fe6fed6c3d0901428da90b32a99d756bfc9b436b7a583d86547daf9e7e6e0ecfa0d623943f40b3957a22c2a2ac6938a6566db9be22d55db38f5c8e9014d45031d62d59ddb28f9f988372ffddcd9f23aacb14018466c0119f5ae3d0faed6a04bcf65bd3a5f0db240f25c21e461b135f84449526d1ebf50550c8c2d0d2c885800360d83f68ce1cfd560fc906228c0c9de8a3f3c4495d0533816db4aacf8155e0262c471a58276a476489411d218ea515a1e732982ac20428bec54b65a5d97b8827f11ae41dcb0ef4dce7c4cb44fd81757bd9341078d7907952878080761674aeb0f5d8c0a0bbb83f3c9ee769e7e9265aed265f044752640fe2f5032c3e23c01e66670d3a18a3220a161db3e75e867108a4fac9c9fb16662e481871fb76c26183c53f1f6253303aa2961b4a0ad9c8d7f60893efddc7fa8387861f1abfeda49ed50b546cd3b3e2f1db45ef3612bc129d6795ae209c5994044655e27aed5ce795ab3bf8a3e70dc83eb29154ac5bdabb0ea7f91bdbd6bc75654e56bbdd33e632d48b9107ef9739b126b4a71028ad38c5f25e30f17d2e5bde0757522834c2774a7ec7a457628023770aa4c8cb2cf51be1031c88004295d34e411f3164d0e2cd4c04e325a3033e935d5301d3604869d496b256df78e075d2e3a0c60e379598fe041131824a0d14d897e10e1162e0a2ab34516a97da9e2719025083b1aa9f18604f0917c123288d8fbb630e844a8f7c8fd680bc581359cc219c956065222708c37fde2d2290079b0c47528851cef5b08c4ef055a3d01c4a74c11265460fcfa2846cbca200f54b56ff44ad385d59ea30af683095162e3a302c0c31f07032a67f07c2fb2486d3200459d6e4f1013a65daa1cbd8c627c9b4d3317a066f20599f8b645a856628e9c01c57a27df6f322c8b67faa5a88980e0c63b46efbea0be08d706e85b84bd21d39a634c540da541a1721022c1d5c4823247352caec4ab079652414a5836a810941fd2489afac667a4598683f5089d783e9c48dc30b52f31afd9e14daa7dbc2e36c018e8ce07e359899cd7f27172b28e4b0145c7e124324a5152731aa0faca428ce87861e3c24ef594dbd4af4e41e17cbe768fedee71c0e7c00a7447b90bff2c33dc42f0e03e4908f25329266ddd707a10648b349fb981676f1ed9230ac5df0cae414cd7306746cd02d50f2a2caf8d925c1c714437f218165566f85141859c0a3b0377d3fc359e9fd318ca7ec0c56bf46fe1f1e12d99a2138783de90e6f1f9fb688bc91cf16421ac4ab5adaffcafc468077ee2ffe70c7b718610ba3ce37c1f8397227ebdee2480cad10c9b3a8caa28df438d7c2ea3303f6b8e2295a20222319ec883cce5cf3aae41955a5495d53530075f73208b0c204f5c5092b96526c33ea4340d640a58af44e25b3d49977d834a34bf54a46307a451721858f55142f22b21dc8c228326702d9d68e72f906c4f3fd202e8518024c74bd4e5e39579257e98e669f7d513497e95822f622e8beeb3a82525c266a1533156827c2067299b7c6d10f96704edf107bf288b043a9ab618f880b9a782f29f702e51bcc23d03c5a58b9d232d1fe5c3259f29e3de4a0009613e0bcfe959b797992bfa543dd975947740a1efcc0b3fdbecfb88c12fbc65620f6c3bf8e785b5451740d42681d3053857f776290d60e10e38f003d5a6c2276123a76e19d585ae66f37b7e9c7bbae4a7fe5c7b76993f1a9340dbb0948a1d2cb609355e0cc54ddf70212273bed2f8909006035c918d29f2440c818d30a3e4f497381c5db07967e4aed48c8ec9dd7b58799130b2e007f63cec44b9509cfefccc9a935a28c4da6b403d6faad133abaf552df87975584152795f066150633230d1529e52051f0f22b70f33978607173b0dcf9f543a1af9029b5a6763a9f8444fa864e84e412a12db61facb0b15966412010c5590033a09b3a6c3b37ed979a9b3e75076dc8c62c7e8c52fc22abe7004242c3f54ebbe16365b2786517b0940118dd90405e9bca89374dade7af2e1810705998e16b3462433dfe76ab2b4563f64e1900656c1bee3a1def568662a003b295d9d2f0ac2eda865879d1b54435eb7647b61c76bfdc2ad41fd119ab2ae632876529eb86b492acc1a49290383262229c9cc5a0c422920c9a0431343200eb6a80385029d2eed72cd928f529f56d7e728dccfd803ddbcad6b3523286283854522a8f0c9909772c343687290a8398158c850476f6f9c204aec6098952a9d1154762dd0c4fd039bfd4fc5d9464ee4896a0f43f31c5522d4dc6f4c78b673ac48c0fb520b214e5836504a1eef7120c92e17061b8751d89b7a317702a0d8c071fc0197036e8791d92b4d4fba7402e7a1d684c2855f5876e4b372c24ba20e06ed001fa5f005764c1fdeef8f23b6821acef4c5a4814c51a0dc93192802b2d945cd4ac004a2eee403591c7ad542928e768666bcc3b64a387f3da592a95703749f64c38642bdb02fd0467b9b0d0f80ff0bfb5749335cf51205780016a7afe4f87c349a6a6b5c46171e95eaa3f7cfb167b00f7216408c1e8fbe53f526dae6c566d95e0abeb41febce5b8caff4f555c44e3c346de6bf6dcada6860ba83edbb4bbdf7dc066789b684512bf47cb06b40d45c55cd7b4f852f8463a82c96a58351444323593451fdd22392221d2980e11ceabfc074c3303903e2f35cc8360d13cba1d9d46fe69a6c77a021f5c08dd30462e6641ad5d1df24d469b3a9b845be6538f208879f11013287d4d347513f39a60942031ce0c4163d52ff09817db23076cdb14ca45cb183162126f4d1804c6fe3d8636531a5bc81252c561c5b1cac2c73fa762f0d71fa7c709dee6885f148b25e63d2aae109e94143815e06315f028b2b66ed2f897cef362fec76b346c91a73d117c77cdccd5734f6d4ff2786b5af22351f735bd10628e95d8d4d7772e72895160380d500d06558a4dab10221df4e4a1a0aa10280f463f93a039162aa87ad17601b6c2ebb8fb5f98388df95f728df829c21634cc1f2fc8bc85b4c55eeac2fb1cf9a1b61763c4fcb0a7ab187da526012ad4b54a61b3c05304008735e8fe023fcc2876960e1ce165e18b7b084c91c8cc1c17a644d9e4a9d69e27db904f383029459d97f392248617f21553d943bac17e38f17025c32721b68f26a532a723b886634ed05ce9aa79b39ea76461f87c11044ae9fa328578299ea1895ade3563f5d04b468f4144d6a2accde4cfb1de79d0799d5247dbcc64437c48912a4559bed12f696f3c1a245d9fc00ac313546f4c345db577aded1833078bb02b8b64556232d07ff30387c3004c9039db27b50e297dd4e053b029a7628ff79fadf9cba314faf2cbb03da5416603baf27fbfa047c4252bc91806bc08cd4fffaf78190d8b6e0be3dbb1fa733b4f762b09edb4d6823aa9053a62dcf7097f4cde812989f9af247c71c5c33538cbd0aa03f3b157a1473500659ba2cca0004cf9d7be8af1d4b4c3ca2ec054542d7a3e899f0dd9c9000f5b202c967ca62e48fdd701b7f951c53d9d9e17e528b55506ae544ad458e1ee3b364ab5570099fee275ce245917f0d8bcdc28b2c50a64e1d2ecbcd6a19c58d971bfd1cd0d81f84c208e36be44a2f9d3ffed4cad1b23b4fc961807d40e647a19336a1d23de95f31401ed1bfe3c57089b41bf1a241fc27860771cb2647dfd0a791c135e8e41818ad9a354b627afd7ea50e4e7f574f7eb3303d21b180af9f0956e23cfbac86821153550e3dbf258924f359d417ec118ed88214c952ea17f699162ac6bd217433f3a1b63da9ff35f95178baf9cde4839ae37e4fbbb9a9058495b34496361063c290b610d8b4f712d80ba673b7d1d825760e829259c48123c80224a7583117dc5ac3d1d423e715dba83798ad1b0e2a02ba55ff91051d2b5b54a81d2b2e008f46fc854a6f66f0e53b3f1bd23083fa1f6561263497246670c08913a2baabcda82bd96fc52d740c37fb4c53debf6434b636fe8c1f05fca52121a35f5c995671e4d317b9cec5f018e19f37b47341ac68fe279f0b6045a66aa4b83db7df624343fdcec4bc870ec1ef4702c0a7572f3e49473b208c1190b71b13992a64b6682f1998576f417471ce424313408958e1703f2c31cc776f6b78cac98c0bf1edefb4bfaa44ff01a9e8d8ea49aa8c7086cab4597ca2018c3b2dac92df43f9caee402ffa1cf3b02bc0d7e5381c353858efc017ef40170f7f6214f0c9f6250a2cec0211cd335d23e8c6853294cf5bff873b11cf5626dc9bb0cda3bc4c5f7030e6d99c2ebe86b569f711f20738c12afbce9b34a4dc53a610a8d951c244c99f8d7d4f45e03314de2950d2587d259216adbf134168e277b3e42426b5d3d8b599f4bfe0a8b843e996ace671f3fabeeafd7438b6e0889ef9a88864bedbfbc5e30891017cd716e1cff7b4361aa3dd79b9550a16217a3ccce4f64bbece75bf6afe865cc30c20a0c8a11f6242d9774fd9646594cb6c94307028d77bbb021eb2215a385f2beb802ce670413a2aef47ab91bf9b425b316a730ab1cf31095832a0fd318a8d3a4e6427e73a2590c2003dbb8818c4a90803b0238549b675aff7c56407db70fc640bc289b235480645c9b9f5c8938c20dfa3e887de89720b807eb64871219ae6d8e3ce47a918e1655ff1baa7d3d49512b8349d6785839d08c2d666594d7188437a73a97bb8fc475d2ad44562ef28ce8575a4a9ad7c9d85f2db447f68039364fc7b07d305656e1df4f50e68b827ed6f57ca0ef4b65a3b95583029bc277ac8a09d8a38abec59fc2b0e73e369dda16e81f5d9eab13e439a43c4d271d78be139a157bec77b1553483b9889b1413ba0f984ba1abee2406057424d0d4e3a9d9e0eefc9890fcfe53d79d314b32565303b5a027f158b1b32c7f7018214df4b24a89934226496834b6d693d83fa76a4dd232963e31c0757c673499a86019283d89e1f6de6c5a21c5e44c9447635ac3b5b191cabdd07a3b0285c00d463bb7b0863f688f3b10e4936d49e5fbffe92cf323a961051c66a6429d7d270df869e1dac7af145590cd05eb64c906285295fd8c412f87bcea362f0c5496b55a0a1749390f98b632ceeeffaad543884fed7ec3e42c2a7648c8209a1d3118a32041ebd7c8b194a5671bf6f7d117c80372b62af831b11e95a0dd465c8af1358307b0510dadef2adbfaf13bb0a498330f6840e0a67c3075736a6149836043d6b0e7cd8e729e8b506f7022f9410eb4115dc4c543970dd36b2b7f2e0c71c9714198e551a3ba637aa6a701d57882493f470d00b9abf04cdc38ae08e79bc44c95c928a1c967299234c9e4ec79918d78f45c516590a56f36823ecd68e93a381abb916121f5402f0750a08d0cce53b60591141065b6dbdca46ca7c631bd823e9d12958abc043f6ba80c1158d5947d971a18b920706922102d0c1173798c912475a4b20c28438609cccabdab3107c0df4e3b3595efd9ff2665a62ca7adcd2adb0a703ef06c1b9e3cd5babf3282a0b23b98c72ca1870c73790e26c11a85e25193e455e5b73c6755a105b5709f277c88a4025c285130c78fb9d2018ec73496869bf350ae17b2f3eab03cc4c3ff0c0f1458cdc50c17674ea97fa4f1c7182bf26eea5531038fd3407c47e8d77e2e6e139dc0bde4d22e15d324dfdd6e4260b59714f5a11e3f9a0b85df44accd770aba7605be6342fc8453831c0b361110be7a81fd4ac0eaea71b04f22d736e683e2e125347e2b1315170444231fd2e364c59d7b1b4258b758d6d1c9a82b0518427a47a4003c26f73fa6bad08d4fe65e21fa9f93a8873a7104bd7789c456802e42b47f128bd62925c6348139efaba9cb36a5807aa0a416282e0b04e744566cd163a9d3df88e2effd749eba07a0bc42a59362999928ae610ce71a5961d655c8a7a9591643a1a79616941d0b1ac1961963b5bbeb3a53245e678f71fdd84c42808b7e36a210bcffa8d9e36909229ffb07d5b108792ea08d459f5cde0b77e43929e352b3298a909534949eb12206e3bf7b72a34c98ab943b2b361f2cb0f7371348256cd1188c9680eca3e3f2cba8a0b3fe58869fab6700a7ba70a0306a4af25c26e4824bc68d64372360ed1f24c9454be2c9a2ab733ce91b9ce0bcac3c565ebb2c776d7c0ef1eb68e84af7526d3a9b5a113c2a3c8c5de460a61350430120199a783046f0f3500843305b32daf4d1e8ef6169f9c10e03385794c79c56bba4d571add31ce089cd992b5ed8ae7272e9d3dd57982e160e11009ad573576950083dbdf076eabc10ccf8c79c3d4d9cd7c6944631e0f1f641e69a77590191fd3c1497b3f68fa456881aa734a4c6f604fdcc49560aff32d3e0eb0903d7c7050d7ce351335ba9bb97803ab2663e1a4afaec80391cf9a98542d08a455ca5677d354c88706e49155f189df4357d7c9f9d44dbb8f57301ea2b09a86529537607b037dd18c983d4db5b5e94db1b7d476e2a22e33145d2f1f09324aa01b8810edf156a35e8b1fbe499041b71672d262ab6b9501a1b050a8b88fd61b308648f16dfdb90f4c8369705bfa5d71aeb73874c620606012fec6c3d2e9c33d5301f3356e26466d59deeb7cf28d9d902db6e4e5a843103c5b54e6ba41d39860100b29f411fad502b7d2da6389145d4326578b96b58d12c0eec08005c4265d882b43c80cb23e642dc6fc208966f70bd58bc8a47e06d314125e2fd3fc9d612718827a969fa963470c77f1d205ae7cae394427a673b2d392f0bc6b37abfedd5f703ef2a859b90e83dd62fed9b54b70988d2d5357a35e6f75e4e5c7d48ba7c8815e2f2656fc3b076799cb92678d32d4f51feec12dc1949d05dd56b1dd366785a4c4aeffb221ac1425d0c9feb9268bf4a79b6a806babe17680f1428461a5a9c6e7bb630ec6fd3573e6437d458eafc73a707e17e11e1f39dea9704a53729b94d655564ab7a28c4b65ad572be1cf6432f05fca1c02c8592e4ede872d4c22b9b9676e351eac177c99896e038e143414dd2cfb75e4aa3b791d87e91ad016b19ff50eec158bddc5e1af35be02f04b35a0ce8095f108074daa2bcc62dfa0bc0063e13e5b16e6ec400bb393f28ff19625011ba429cafe45d6a1775d72be7f886c87e8f19aceed6037b0ccd484caf8f4a554f1b8dc63f8e80f0afd5ac4b6d2d0631a2cd0486d55304f7d688a24e7a829981aab742eabb62c45fdcea829093412a26d4b9914626cc456bc0b5c130e8e508105ad0510a2ab2c347d1abc7da80d1e980d83e1260d29f51ed2e79b1bac250b12c63a94723cb1ed305a85a9bab171763f191b72f00cbd4148d57266feb6e0f74f907458e4185cc74a3de59b2bb850f7d2bc0b02b37a5876c826bc84993932b9d9c357ee44d8308f7208349f1add7405e4740161291228037b0095431c7ab5ec3af3928633fb3909cd85cf5b808163352b30342b4c6cd17da6b96630983f45f46fbc1287db93ad75f1c906cf0fc4dc1c56d32f399fd5b2f9357b42db32a44edeb8468f3d80be22b111e955094eb714adfc8279006499a3bfca6ab573026a2e3ede8bac6a97b39f8085b6e473edd9ad23d8e4c3b1b48f4aef7238c4c40a6ef6d589a87cb7a92338d2e28c63f3a41049329f726341a7c1996793ca182890f61e9d15277167d70d69402ca0daccf47ded23fcfe04d1d0dddf133a13e500aa67949994410a38926ce22857ec7b83b26be5c0f20fa56777d1722118c161b3cd99a96d21f06f10101ac41224064d4571e40fd79740052b2a0ed759fd6a72c0f11b765ad53949ee41378b6a32285d67b45f0144c55cb195c8902a873e70de76c1815fc6b7fe9f03b174bcaf0fa102b5f2a0b229146a4150660ff119176ced57047589454686dd37400b295e744c072285dc95a2a2abcd81191076bd4929495629a5c5b9758b5682545165e003f898e9a447816ff6e11abc70c22c5c7384c15e341f2607969accd66be23bc66f3eef36a8997815b86f9e1cd65f8fd779424160bf8869983358c2999a36827b6445274c408d00463dbb10764f3d53dac118a14f9a6a38cdb9e0f871a8faea92a06cf393d792103ea635b5876f5bf91e946a872dc62da925383a60991de10fd4a75a8c8253998931a229b823c447b735d33489a92695ad9f1dd6261a412e67e50edc88c05d314e44254c26f35a0aeab1bbc6158e9f962b76560ebfa53bc90a550e587398d0d88063d5b0a0d16a77d0610d2427c0ec4dcec968e803000f06a499ae659b5815118be4a9108c608c00da9d7299e8dfe0c633c7fd83d04751311dcf953b47e31531d8618102ea495c60e381175fc1e091f33598cff0ecee8779733ad24c359b701026922c382264a7eb5401026ee7954b49af3848c25d16cdb382c135322e7f0f361cfc3305cc77448e31c21616c7d04ca57b73daf8b897d467084d54cf64321049ca2217c6151dd98069b88b2015319df5ea764038b65853ec41e8fc943eeb0b0d4c7020698a28060a0a5722f9074dd462742388594898b5e2e6067d6af8bc4c2881a0d76559ba172a87f836698f45c3b6bee2963a5b25ce10587048909651bb78dc5babb20e8707bf038bd348c2232d45d1936188c64419892493f1dd9a04535502cf46aa48a6fab4404dae8790d0f6323fbbdc2305e68a0ec76e641a7e38773105908c4265694ff9d3e5be08539d5db3e8965d1f99a33b60910827fd23242fe00a89a65644ec7334e40e7e5080f305374f2f7d8029e2de263a941402bcae67a740f1a5261db58cb98e830a0e842c259f5c16d10fb01fc1340011ee2af16046ed391d35f5b5797aa984ad9ecfd0ecdc11ef2a3062b83bd990f3e8cf7e19fd97823c8c09838a3e6a164bf13785db906d541ce2938eac8038ea9fb896ad6a33181a1efc98a033c95de65a77579279da7630b70a304b849ef1c5b5ba291ee8e039918e8e4a17bdcf451cb95c7a49be1048425ba483202b05fdc4f1d0c91eb6c7f1bb4ef0e7a8952b87c48265765a0d114e96ad4ea8275a2df63afa8eb3493662c41e80b0dcb77e715118da192470a6fd0643eae705331b71fd03d798af5bc4df00ebd75a12be84dfad776186ff4bdf3f44df36bd3a1a924eefafcff85a7215d2ce080b56e54b8bbab393fcf58b9f0d31e651f4e3e7dc4c50cfe7e0c1083bf4f070d571224b5e4dd41b380087f17a09a7bfcf426faaf90e41f3e40457c1c76d3aa17a2d73983759491098d19c3299410497d97ce8d5027b4be0f97cb2a9ed8831fbdd3de172352caf8527d79aa2d88281fb7f04223900b6ecc857c58e264a7874233c7211a3f20083254519ac82fad51de7884050ec650c6ce0a518cdf587740594931c36828636a33db30906ec1fde628f1cfe7b577853912d440d9f32b2e94b810ac3dec1236309d8ac782591743dcea3a78778a017b6e9f89f98a1064db093eb8e41d84f83a25c2922f633f160744b91c2e9068ae3ab7dd3aa4b9d1d3facd8ba02b4f439689c54c4203bbfed5915426b5a9a60b08b5c54eb7320b5d513269b4491e447a6c26460487e8342101fb6b4e7582afa21a49b6a7a4197f46daae7af9055dc874e86cebc0cf9a43858423ffb9b785a7b0e54399cef7f2e5db09a9d2c64327f4deb1709a6af601b7f5c34c254982b6cbbfa37d03a196f8384f77314ff8b0216d492d2e32ebb7a13eaee90786afede5b661d2c9cb3ffa90a0919bd7a076081a46dfe366f05bb29cebbe34c0aca242d1ece2b0b2a8ed4e84f181c588b64fb8efb292a85961bb4e66aaa92bfb7d2b0823ecac28db7c0b4a70fc3d2befcb4a151586a2c27b02caeab88d4a290af9911707b9e0e8476061a354c78394e01ed0c7534b466702eada0dc17edc64cf6d929a06146ea7b1ea3ef8943a36a2cd59ca59a75c7dd38d3ad59fc7e79aabe638883694f7ca101761ade5d6ab408ed43762abd1e1bc19fa913885dcba8b1bded231e8692427ec4b89f31549ce301c17a5987991c2f906ff6b71d8898af97ba390aae7dbc4e41ec001bc30126a19f749d1d63713a5e34e46449d5d5819fa17d1e1c540d46dbaa045690f1ed4d076e60cb39ee9c08d2c1683c2eca670b22c2282c3d825a57c7ea798677c6a0270f2bd443e37193b784fc91274b91313d5dba85e33631f0e4f6c4bd7b2ddfae4b937efd8bae934dc638f6dec5a1d5264df32cc3c7fd5430d5ef0bebff52bf35596ee21baeb138d41bd8af009e35860a312b20fe722eb02f6bdeb032a3bed64c8a9ab3e0b728ad6d3e6d89c90523772648d51cdc92c9aa9947b2ebbf694b819b90b44f526201bc153991033f09f00955288017a37e14e7d31fc4285cfe7b061177864d02bdc9502c9582a7826acbc8e0dad83bedcb9c63f403e911f311a48bb7990b940165bd18c4e6b1d0061a04a849eaed61b3d6337a09a52c8a82c6d77c3781410792c11b118fe31c2df3c984ba0a7a41e07f0a16bc6f9df98b383aa126570867f7ac2278538a7841e2716724532378c8635bce3de34f7a541424188136cff66e3594e3b1f1a4fb95ba3c46bdaec657ec6205b2c578992cd564e0e811eb925bc95ede7e7c86b73bdda022b7fb3788779667eaa2070532063045fea0a3ae728c996fe65b0c4b158a2d67d2054e1ce2571aa86e55ae94a31d9c09c5e76c64717d0afb62b767554649cac17ac510b424641737587b84554fb5466cc87734ce99ae2624ddd2d8dc650e23e581638059743f6695ef3b951e75e5853b1824ba9ae2e665fbabec8f6823e4d196c7764903b679818517cf507eb8b48e7b968fff3a528ad7b5e20667c6376279657e9daa5532d0aff6ab67742a7999c74fd37468413bc539e8a4dd6a3428663e80d2ef7ad63cd9a5fb542c915371386ef25dbea05c007cb0d795d6c55c109c046371c6fc7c001c1b6fe117a1af27062d6a7c95e574c8b0b6056f0117597dd02723fb17de6894363d44940206f0df48a7e57db9330498f14c6e16675bd09f2146ece4c28e217b7482e0e2a50d80bb21ee2d61154e1f7faf797ea04ef7f5fca30ba0ef261011c74018cc3e542bd2ca0bd7362deafe267eea7e2e221c8b80121455d34c26a380ec74fce0bd6122def9de8b1bf271606c6dcadd4b12062d590b99516978a86319b4c01082fdf231d9c93429698d490a6851f304d1d5e3800bbb00581f604cf291054a1042f0756c4ad5675f544188a1f5001c9451a51bc6ce51639800329f8ab5b8e637371c176d80a693206ca69e2ab2f243cd97d64ed5a7c3d14fe4b2cbe0c02e14370e93aac8953efd895086790090e62229f91066c9f9dbba39201bf2cabdfd5b343f42e57cc509110db6c7924999a3682986fd089251b76b0d32374de86f1528a93fcf66f4b00588cc093039074b7831dfb7a5c2e895be4088e1500875e497b397173069271522a5cd41912103070f4dc98ff8b901991e754a21111ff77052c535816140075cc7950beb735d17484205a9f6416db216295400bec38f5377b35337a8cd56d10cb3ba26eac3ec14d8f2f4bdf2910ff12b65914763099209ecab79848408d26a285620814334941a1ec15c4bc51b46508aa490d58298b6c91b89a281f1a834330a5df194d154644500836628693e80ba948ab51ba09408618b4b119533c946a204e9896c951c846424a95a08232091331a9e128e62544de5094550c4d29155c18cad21a44970ca520a8b4e9032298c25924058cc241f49ee0a73e9a225496e616dbba4ad916c5ab07d71adae3589d5504acde2b642938fbfe9e9413705f7641e9d8804dece54548518369289bcfd439843b958362378e58430f5e5624b27d2ad8964e8cf4b5608c0539949a91787a4209767353a433e1da5622e9fa804825e6a5ca97c7627cc4a1da2b910389eee9d910d484c9b650a03f2c7e41f8b622dd34278d432c72786abe8529cf58106af43e62620c1dcf3f98c5867c0aeecc66b3a121c6c0939e538d19ce0ebb21a9f0a389906263e4f11ebd1ab5b3f397666fb3c4b7b03c5d4ed8b16b09cefec532460c7094f667bbf1c114d500d49b9102aa8f4a33da9a658924272b0a978b6a59bc4347257af5ea687c6dafd93cfb83da0fd587924f9bf279017702260100d33b81b848215e6a44eadfb9619d1c47f2a5e2967b9ac6145ecf754769910341890561ec5a0e7fad96836dec89dcfa51c71597905ba5b0bb8501bf5cb938d08e343dc22094c9c2ed8792b4dfb12c020b3b5d57f59d36bb3b6575d4637658b07802357388c29706ec817ac2d394eedfb48f06ae31201c65e3d3216ebfde56f7dbc5f0cd427ae86b4d074d6b0d3db3faa23821e46bcbdcc398620cea17b9f2165f91c4dfc540ae6770c4e4651aff055fe749125df6257801156712fded172040f33fd0869959b0565750fc7a6b3edf9bb2e233dee44522d30348076669608fd2a22aefce286f840ccd5d6b8004e419cdd0101d96795a61d4eff3e9587f26ca3d4f6a61fad06fe4b96bf1c34ebf12f86e1ff7db43f2615c66cf169dcff25e0c885a78ff7f7327f34f2ea86df58a35ebbea7de94f0f4de4c4ce768c291bd9bcb896db5afe8b0d7000e16d89ed33560386f568efcf933f78117d26deddcc3300bd11eb3b10fcb780c5451b04d38579301f172ae502df0bfcf8ca5869a97283e25f527bcada38d39d20a3a14d48a3ec57651f897ce80340be984381fb93eb63cb0131fa572a19563c9c1b25d92f7557064675b5f924ac7fe718e39eb5e732f0dcd89b2e07d6d100ee1b7de446909a95b3a6b9543cbfc66b9b7ef939bfbaf99f3c515b600fef4ce645c3a26975451e9b596257ee605f17210017d3569c76dc27bafa6c26ffb0be66865a8cfe802d0ca6fa81f922a6e35f5a035e28bbcd21120d85faf5d0842f489c73e9ebf23e10cd0dacadd1b8cb7f2c83bba76d725e5d995f343ce49dd501821e58cdb8fd0f833e18c3e6f37dc8caddf701d1f637c070f187181607400c93a3879f4378f8ea27019cdfc37dadfc77025996bf66f7f8cc59271cbc72f8067d21d97732ee77c181ce5103cbf33890ea2ec2cb710d78d53bca913559c576e2f7a4f25394cd84f8d3ff72f8f801cb5eb9071d3107e97fc35a6043fb2f235ee93878fd654f2de008f1506a801c6825b9e6ec8faf2f07dbff0878478a7260d0181d0c26599b778dbbee52c07953d3cb32426459da63eaca36a7ef49dc0c98aee407461a9c3604eff32ef44db90b481399fe65860db8eeae7ea8cd2d0f1dbea10edb66c9cd46cbefc482bfbb6f67cf5b4b2b8b4834c771ab6d33cd6a2356ac82f8502a5a43065273a8bf53d68ac9829963906da5aa7c82680b7b9a33b68650d2cbd8ff2d22eb5ddd802990efc713f02100fa121fbdf9b522ae3bf0335720c26f777981dc1fdcdd4a867b6771006dfd786e2fbac1ab398ac0d892813485e2986e7bbd17ddb30a6494e8337b490c314c6311e67ba1536164230b88e341f8c9fb7e0a4915245e80537d66ad1a48f6acec950d3555e161913117b2aa1e7ab99ddb456bcf3ed0cd5a74c73ab6a662fb8f6905a82229f39011f10879faa3559aaf8a978992e01b17f82ad7ae35fbc1dd09a047049ad405e7675a2fef1ddcf3d5d0422b1bfca98db0e357f489091fa84b83ca034d300f28910c47a310dced305de35de93794d1459c1e0b2886706388d00a48fc09b37ee0e4df678b6c40f771b7c0f2651ae56d89ccdd9c18b6c9ff68e95f0eec18ba2d927667df1d4ec4cc532cdc322693e8cc6edae2de73e3d450fcb60ff40efb47f67b333e64bb488e8586dc6eb70af30575dde58ee54d1fad6cb3dc8c2509bf073d130f96868585e781e787da2bf746f5b71f06dbc2c70e6f5dfc87b60afd763c84fb284e7ef815d38175d635b5c9039e4f7154e3362737b85c279b3ad2bd5fb63524fae7419300578c378da8af9a107ba83534cb3e933ff83a63e5f55ef35f03fe4a6687e5d800d09b7fee79a97ad9be5d909239f2b9eaed50e3254734ff54d25712e9088d6c22c8197142fd24e9adfb50f37264efc7cac5307e996cfe9f2320ffb81f3bbfe8dc661e49bc3fe1084ffc311e1394ed5e7e1bb9d47fbee7f2627d95953857d51f56a5fd5a4dfd04507feb86a83e0cd2fa1dd4fe319bb21f2755e99f4b29169d881d01f7434fba01f7b38d11dbfd106b5ce247a716a67f575e3c7f1edf09393c42e1b8afd585e4f05d472e4fa15d8427429f511878057961f40b0c015a37b8cf23ec67aeb067e9b1f0600b08d94fdf0d20403d14b873e5f5f9167c40a3603654e9e7c318ed467529fb37a37b3967ad9fdfcfaf139f338cf43b70e577308cc1bdf961086ac5d6d614720c92068b5b200c1ca33fcc4efd7dd2aac84a1a744cd9b4fa219e8313537f939497483abc0f5aa83c0be582ab7e7f5b29b3c39a9f758d7ff1b51cce6febf2f5c7ebf2d18f78e7c3bfa7e598dbff857f2c4285fa48f764330ff0b3956334560bb97a6409241c80d35bf601a467ed027a9bc5ae775ffb0752b62080b740b20a907f659201c4b27b790c89d9457ba2dc48dbf04154e1ae070a8ee0a6452a334436b38ba329c38e334755e980737221ade4624a32849b5ba4c83b9823cbc58a9871dfb6f157ab11a8044b46412a32cf092b6d66fe3b374b61e3ed89d2141f164d700ddc37a5188b61ee5f82fd605258f6b721075c12d3d18baba27f667a2fe30a6764d15a08ee57dffffd63293130650a4443fadd15d7e9fea945edf24ba4bd878a2d3acd15337debf7063835e0c2b7addc316ce9ae88cb8165f91bf939abcc3e4065de370e0e10628ccce1ebbc061c9711ecd83c9af15d7c55742f18aa81eb2f197b4467213c90803230399fc8207726299873a6eb360fddd03f3d9be3303b90d6549cf9889530fe077782602a3743bac607c9d2ad8a320a2e09dc23a0c9e7f919b005201d38f7c27c57e513dd1c0eef0ec9c666b1184e4d679e91c3ec2890d489118adee33ccfc6039dc8a617399569466025a32a815391cff91cbfceb487acbd54163cdd950c8cb2c1ce0eeab5f725ec6ba937bbb458bccb00efc3da3e3ae069b346f0827afd94af8d0c5b18c5a474b70fdf4dad4c07527f91c714a55f8f8a519fc4cf1fd8ab575911b19d4384c0a37924f0ab14faefe9801c2d46cb3b3114af4bac616f1d956a8df488453d6d06f14a625ffc78a10ac200c2c6e7a3a65699d60bf48b6badef63cc079affe7149f183ccf9ddd705c3d91d29d499cc9bbe0364a71d823537bb910952544929043de6d002bb8d2d17bc8b18e88e5ce3ddc7c31deded7efc5b2f22420ea7f37d59346343c730a65920e9def5bf8f991b911ede6b92cba05efc399893d385d24189947dcf684a78f8cc961579d976ea7e61faa2f781dc042fc3d3a4341b8351803ddc089d07322d4ef262896dbbbf80aea9231dbf00e47c3716f8d9dd29a4e188de01a43c5fe79707ba68b6c75493e9085961ca131d7dfda077d645398f2809674d7356269abb3b22ddd0bff3c4dc61c14be4d399f24b27835c490681fa65b1e2290a593aa0d8492cb147b13f61caeb07769dc99d7a8e9054399c579541e8bb7037d8a1bfaffa225ecef7e0bab7fe9cafcbfcdcc8dfabfa3b00cce12fb528300f4dc81adfed6853624814f867b0f41e5d604e19feaabe0a7ad7141eeb022fc5d4f3a3fd3eda8078ebeb396258673bef9b5220ca30bd21ea112bf427c406539b94d353dc0cc296adbc3fd6463acca1822e10af2630a16d8d9c8a50bd3e8987ef059e02a35559363d0adfc5af09d83cd28cab2ba5f6d5f0482e221b17fb875e9726f330c5e4a0ca3f1e614a66dc776fa174e7fba715a6c97b29e81de2c878bc064e0ce5e56e00470c5d41f076c46cf4dca06596028badc9968209d5c2951a5ce7a6d970c48b19b157bc67a636c30b3abcbee370473304ca2c7344ae86e7756853870fa6f00d4c5a5c4beefe7322236fa7a630e32a832452bd3a622c2b302f9e0740cda4e413af65029a076e0f7787ca21066725ec047863818ab3e10b640e793a3989893a1ba65afa0d1ae8877f96535c07f18310cfd8934a79e65ea5f20c408ee4e029744f2127622a1936011bb11c0fe923e22f8ef844dd2891e4749702b6096f25428fed7829bfa940ef2cf4ac7265ecb940124670300633863e0903238c959e5a856aae60feef8e9fdc0053d65d1fcfd3f9a6acba575fa8ece3dcbf6b6c3084802c69260bcb0230d55a4279e64c2ca8ecc130e3744aa3dd639bd6adbcbdc19e5a6eb9866a3d28fa53132a0968a488b87af5db95f70fbea95c897feaf03577c62eef449e568e419ec3242f638403be8d63b8fac01a13b0f59ecc6d2b9aa7fa9a873a9bd9be889307ee685d6e5dac64e0018ed9dddf54696395418f9e2ad30c1b8d343d203b583f29e61cc9dd9a774396a75226d04ceb093e6ddc89a240f1bee029cdb9cbf49320bdd0bc8213fef01d1a1dc3689fbc9201a20f011325be33e1f9af70cc974e95b420317ca7f85a4b7e152246cd75c00d7dee4b93e4cdde08820f2bc8556ea2369854bd154419ed69cff406495975701a0e86195754c5f20f4757b1f54e8b6975d7efe15efa22289b2ca3c5055110652d992c4947f1e69ab488cf42ea84c4d56019afaca4f2a96cfcc348699273e335f0c43f4ec1ba9b6c1ee5252f9022b2d404c7af7924e5cd51c2170bba9c62301649fd53b90602c521fee2cd0a06af26ce1727176838bcc66568ea5737286e2e997cabbeaa05894de30ce4631333a412a1d3b122c773e5ad7feef2269ba231ff3fd0fc18a82f148f5a6ab0a2555358cac41c42f368168e553e4061790c06ca807ab8522f897a44174e22b445da383e441dca8202470f9ddebbdfe0a8b4f40463ab4ed25548d09695f5ded5e1255b01502a386d4fc22f3f88817f313310845aa3c4da2b67b1b5ab8ee0701440bb94b07a5ea58c19f9ae53dfa0d48bc49405f8686c3918d3c99d7ff89cbd494e6e96aab5d91bcc6805fbce61297bc12365fc0359f1ce4a8e7b7914afa741b1fa5d245cdd6adc195c1fafb844b874941dca6a4111d5898ffc6aa30b2fa3e49c1a810353297e40bf101988b692c7a36a5f8bf5c293622233fc24bafc48a1587f6fb343073406fca1f106196b014b1ed1e4e924c1a921bca3047385250b873d78f3c8c9685ba5c487cd067382ca21c655e7a6b6d4d71e25610420e319b4b3a60e5cad1962f0562e55a187b2ec5b17155182b9742b17089e4b7c4286131ebab29c8f882c593111df375b20c2bb145a5b2f86cddacea771849c2548aa048536a373f198d7f799bb8dab33555343bbef41db92f1b1b7e277efe8eefe9eeab87f40651b9ae7cd1466454e357ef7bded43a16227ba8a8dce36d1ed228624e7bfdfb50aca94c2afb05200ced44bcf38705e5eea5a561cb4b691513080f203da4c3d0378686ef0b64701d6c13a5a19566a075815fb82dd2808eefc49f9df8265832f9a25c4b95e72513ea34b7318334ecf1abd6e01af9d19e4aeb04a068c612f512382242a9c1e80cd17b31d529b527379595b7ed7a7c0a1bb90afc908e619da607eca42b65a26cc6306512c8ead28df8844c3dfda300c155919869e366471b7f21c7d068c8334f5b043c0d26ebce29ed63d9b8a2ac346573582430d451e1807bd7ebc77091e56d226ad8d4b24b4a7a34acdefe05bb93ccc62eb7c7182a2a9c5f0d38dc8b6413eca0260d780df84f5253b309524502af2c46156bed95c771d3b01dd86138ec3d9f97a1e47b1e0e84c5998ae3876286f4db80fdce6c87dd05782452bc2ec58e377f29a51c3b82bb1097d875899951497b5673b70197baf086b335659d4d7977ef9808624a5851cfd5de56f21e84e6d6bed067d958b13463ec6ae36219e45508a56aef7fd609ba6eb3d0832906228cf7a4f6e1351d0ab709b970b51a27bebf128b2633b99fc2d1caa5e5ae1b03d9adc08712751b1a1f8369f371b484b9da232bab02f7a3570586f9ac0a185d37ab02d8fc015cff9b86bb66d59d26cc7504aa216ce76e011142be67e990522de75bc62501137bf77d1482f6a900319d94e69fd114ec4aaad0f49c31af98d9e2913ffd85e43200cd0e1847f19d2a6996f44b59c5ba693e6151ce80353b1c8de3d0712ad054698c5c3baf2648315d7904f0be63e1e1d185b1b238b31ae06dd2a95d100441228938a0f301f1e60aebfd9c996536e8b0278331712ffe2f1622f559aa31e85b5b70421038df54ffeeb6673109bd13b066596d808574451a0aa921abf9aca4e7453735877846453943914b8903858b99572b01ae2822c755dcba8af818a4d65fceeace798b9f049e800d6d73bcf59be258b91589857b712cb816c69440682aa885a54e356c2a5443524f352c5dd9581e3d87b469b4606ef2742220046f632e4ab1739779d369b799d40ebfcb36550a59b173ec51a066f4f97f5a0ae0519149d995f6867057edb4fc6bc7896a417c792a6d2649524fe4152228ca5c525d08a522c990c2a1c088f60146f48ab6ad115987ae1fcc558c2a5f49802794e5618a456da0088de2be02bd7ab9222e09da68179d628152130b3a9c0ad8ea19784e474e3fd7d3f0661c752911d2ca29d1e214fe38ab3a6d70fc3edbc666c68b408901bf7df15075481ec322d7f4ba3fd74c1765afabcd3eba650e4d04139dcfe0403ce979b456706c4503eb18023a2cf91caa418e9026d5e622e926d1eaa24bd0f02579e009044d9f7b1f9668d613f99ab524664baca29641a380e18ca100211288e42e21c92d70a86c50dd767fc9450960f5348f1dc318a3d9ab9cf220a1f4ab856020b46fba7573e69beedf4f59ae6da3e0e89c8b445fe711601b39e074e312aa706bda15664dd06823a006d61f11f1a2f35502bcb901df98a7383d90cb657805db0ab8c12e021fca352e3c99458b3f1a7371f3b2e8de232719ed4235bd62656acb76f7a415457b3eff4dfdf240bc5ceb65c49d3aa1ff0a26b014ba63cb6df445f3b2c019c39e6ab635e1534e27c6d0af9c5e38d0020a4b303a9b63b0ec70a1428c99cae69273896613028afbd0f3cfb88b15a081b14a68d2edf37d74dbee02d20f229cef7650d6c4cac50330810bfbc89ba47fb134956ad0e462acaf4d6b4bb5fc5b082730e826fb432900eff446bba5c4e8bd55b74f4cb3bba5c10d3730bffc0a1f6578ddc4bdc999e1585c384cfc611499383660ada5706b8837a4aa69c83c42273ae1e76cfa1d781e175df30dcf0a2641c11dd2f21611d19a88779b17193d2769ffe8e3373438de0738c1e7bebafa78aea9f932c9b2f35b05ccde24b006229b090a5aad21ced5f7d5ca9f7a95477442910a45b2d0d873176467a22424c2a17934e652ec9fc0bb1413636502490934256f78272dd023b70c2d1eaebe4b54471ee2e837a38f7dd4575663b7e792152506b3d984c54ac41188e15f290e71fd6375378e346e43e592afcd5957d8b3b3aef6b345c57ebf4946852026b7df6d656d51f3bce1ddf06a371c8affaf53c55476388e2b3ec0512a6807faaf714d0e2e9d16f357c948c7614cb1593a171317a6575b7c02a19dfcc611f91fd2d75114d994d3b1ab33b0e966397f81cec66f4a397f931af4efe2acc91d9274e39bc5bfa72947fe37dae6f3f42b312f43a7041aa5d4989d073bcc80fa13b39c279871a1d797b9f955e1d1a7ccbb03598a01baecebf40e104af65ad007a889a11adde35f0feecefef12c32b21eb4cd70a0fb4b4b1ab0c121f88b665a58d00a0e7c9a874b0f049ed13d93ef69c802e3b75cc170587fd8c22dafa9b071014e5375608a4c9ada85db3787b366e5f7b28454ae2c4d9b5de57892f03c9a824ad56eb2d62341e4281e12bbc2afba9e7e41a32c25ebf45ea3dba944f887e3d053aeb38c075f4e4924b65a332fbba85eed7fac4cf7a6f9bda8d1cb1558eed0516d948655af0aced119c4ed8aedb21fe66a4be110655b02eb56a0662187d5b98f4560af999e680c20a25f1ef1c0bc364632bbeb7c29190f9f52e8fab415e3589b329f0134061796743bca53bbfd8e2751b1e906e34aad92529a9900327a2dd246537d5babb9edefedc39e075a490edb55038ea829cd3ac9a0ec6317a8795d0f64c7133b807384b7a6abb35d0e2a64e51031bd0946fc98c62ba72ea5d4a4b4aa532253cbfa3d16163f06efe496445022263c49f0fc612263ef86d974582ba9909af3e34484ae8f8d04521c1f3f06a058e27c403c74611cd798d3a8831f23ae9558a12f9573620e898d3a2c89e790a4a267bca4e98837b2f4083679758a93e78eac6d51564bfb2b6d803bb3e58648749149b1a6fc07129262e96898617a958fa0b0ec27fcf6c4013cf1954e118a13dedb84a49a7873264e8f297660c262ce1c418317f81c0096c42bcbc6c1f333ed738f08a5471dc59a7d98aeb28350f4b48641a9d19adcaec242b46e73997a26796f746930598913545838727f5ba2c41eb3973957c7ee2e9a167072ea8fa0939d2afbb9ad1b757cd93e0db1dde96198c1aa1243570b4aac92432456c629e6409082b31b316bb192929e28382ed67935f6fb205540adc9b00cca9a626b82ec8aeb1ddd9aa6c4f00a71b806da7cec6966aed1b8800256ab6bda81e465a07f75e18a8fe9bc06230810b1e70a63a15dbdb518a4d90bdb22c2e0afcb4119db82462b0cd80dba3dc0b8f2d35056564d349578cc353d13a97625a73e56566dd4ed3dfa5a5fe1a3fea0c45cbdca6acf7348befee634f9869e7157b22b783deac4eda7c6de601b1970537a0d4e3520ae87cfa7900051b43452f028d98e5c42e259aa800094dc50a64e29dc78500e91be90be18c20d486c7830e6b5bbb7725e6bbd4be9c1d2254d3bac5d23ef5033c7403f440102a9a309821cf8cd91d1f0bd7fd6d20552451b6a638052a0512395e4d07fd37baa0825cc2d478422c1d25386d1f5966ac24473c31941a43351e1cd4146276af452a01c9ea41567bda39caba17160d0b618033e7500b98136d53d7165bfcff67db91e8cde39a55d90644613aa8294e6c2a8d0731e9695b91fd19feb954d9560afbeb11127a6ccc9403481552bc7fc44cf5d6d484b114d994787eaac9453eab03a18bbc271a13791a734b49273d0ddacf368ddbe379ee30afeda5950c6d80fba3af3425e83411984c37e375ccd7919d7a32220607a07f2846fe997426ce6a86a3d6256695616bfdf8b3d8978c4b09b4de1cdba840e17ba6ecef3da7091ac693415d8a7eadfb3e8dee9210cf0b7518442861b069162cb1e61b3e18b9c6cf2a605bc5c68ce81ff6caa01082f7521941836b4e69041e3cc154190b599a56c292dbce8588610ab581c62ddcae16e0cb901ebe69e08aeb3ece6d265d96fb9b065966949882173716e9b3df7c22890156b8cfc442b74c669a7534e42245e83f77dc79432df8b475056889234b50a0d2b0452197812f30bc958b44c67821c00c2e414e611a7c4cd15b4616036c87a23dfc772786cfe230b7e40964a5693f815c853b64bbdfe1ab37f1b6c883757126c9a834e862af2f090e286c7963837ccd95432a37a343de304186b726156e7c980b27bcd31149d5bb937ece2dc94fecf4600ff82466d6614304292555ce21f8ad511ccdc8e8561ce294adc025f3dd050d781f5f7b5626da5df81ddd1194d47d8364c73cc984886de1be4efff216d4ce56ad19890cd5f17a5eb9de8a430b0ab61f9ab6b14e95d6041977beeb34bee32a7ee6e3d5874fa87205d95570d7da7d4159894975b5e0ebc1e418afdc5034172e8ca28d7ec5c7ca6d87e21fb2a6cc534850bc6d9f6591ca9ecbd0cd0e3e4c8a4977ad6f8c97c5b22dc1dec29f2005790f42b48da77b787d750cf50230b7095a1faf976188aced0c99ea102d9835d285808ba65f45ea7a49a25b659ba76ce65b418e3b1f2c5289d456d21a4f4f586368664083eb680319d6754c9ff311e124d0ec4c92a379d80f7e01e4c5d26ac82b585232e9fb90857e734e4e864d666b18f32c895bc803a9c30dd57cc203ddb91b3523663c595929b1132a75801538d5a8564f50f50a7838b6e0fff492ef71f34f27fa0220062ea196a34d499fd96ec0d7a9b73fda950cc9a7c7325dd9d4ed02d6433fdfac6641751f78d87feed87a4f5372f128bfe291500b3632607209eb542a37b21a479c02ab8f79c5ef3ee0bbf900938e532ec15a41eeeff020d86fb7770f8bd20a10eaa55e0067125176417cec0baa309e81667b27f769c61bd77abb2456add3c6803e15f501603db047015906161e3e4bd3b16ccc4ec0d07ada1057586b8047dca9876cc9690a9771aa38efac267875d41ecdb88db3724256fd6d7b30a8a2cfbf8a48d002a4f2f607ca2046795dc90822faf2c2c68f2eb9a08dff5811866c0cb2d7988d085ef9c382ace25003f3397ab7845bfceb61e2ba64cf9e667207aeb1c967b6774a0fd29ceb707479aa047ad948fef36db92d6c4809f891bb36d89fe81a84705a8afb86a67c58d9cfbd39fac3a36bcc10be4f1b829dd322be69cf86f350fc8da4d862494404168bb6944ef36b62238ab92a36a2a46a336ca6ba9e1fb85712db08871a6efb4ae74ecc84592374627054d0a254575ab19f33300364fff4fa4c5502343fd2b32610e5ffa994a16e8637149b8e445705f6e0177e3a6e0662331ad348e8cde85f82574c7f7b0c809d89edc2e29c842c8e12d3aae3290d9bc80a8e338a951296e3b76a69c1b8a7daa0dcbbde6f5b2822c64c5b57a1025aed1483f2229b02ad92d94d4255c68b766b93c5de5e647868f6dca5a932c1a0de088da3f65a223f7c7a87f63f2215652ae49f77a4fa79a62ff73e153ffd3fff6cffcb9752dfd36449bfd3ffffbd635268eeff85321b1d73ff316924031524c4f6c5daec8b56e15f5082e3a32d56fa95069312b14dc2e5613a8313842b1b0efa18efdfab204a5c053f7b04781ae5841b2f5f474af484131f63d629a40f664a2b552a168aba9bb5f55f10b6cb807cb4737e7a728dd107cd36fe08d6be4dfa5d898aa92499686208cc8ff0f7fa4983ce95e36f9c99b8795a6238bf99cb3e7fdaa4125be4e2adfc9722e4afda20ddb28371599bb501ebac7f8c3c7f903d8d27a922c520de59c4207ffdb1917519e74953eee41dbe72031be29b65c86565d1e0ac6842e8a18f0ee551d02e43e56dd33c4707a0687120de18d4df69fb83ea0dd18ca6f645402a75f891ac29233b129f6e4a5ca1e30d259a641d5359901c238020b6e63fe48fbe3ca54694147362f0b97824c9961856829755606aab0646e41b37724b98cea68e828a470155cf88717dacddd1be4502e26317e50154df81f7a4aee32a683717702b4aa6067ef33a2d0aec28888dd6ef37a5b835a538c6a885ac97ee9761241764fdd7a8e632f22cad7029f9c8e1337e701198afcddade3ab91d9dcf68e0c201c5bc4d04aeff014e6ae91097a6ae3632266ef4151d4af8bce76056c453df514a0ab947088e334eee58029f7ff6912729316de8edc7bfb010c34f22f5efeae9a8b81a559b9588a5de79fb870f74118d1eb2748eec482685a2dbeae8cd0600528160fe52c968bfd63a0d8acb8f62e702d2894a07d1881c77b80d70e44eba57f3922b281069dc9e3fff16048bbdca61f2e63ac2bcb86896d6b00ac9175bb1fbd42a1f6b3865e3714e284e24a231a083d874633244b6c4282b28b86472091525c4ca108b82b6421ca34a9c81eb248bc46b513b3b154b8e8b1371ba3328786669a937307d50918123933f27624a900bd032d5ede6495f379e4482473ce5cd69c590d9ba9f0cfae292cea54d328d1250d9dd0a8d999f153aba019c81d5b5fa808cc47fd61fed6837c320b95aaf4c90d96608a32a4936c7b289824f9e158f20789cf12a55842a24379f2ee6a732e7d19a4f4c31f355e7094aecac0a3f028462e8efc8e542f19f8d234c9905212183129ef26cfd149d0c4cba28196e3ae3ac179f3a0e7a93aaa0bc065b0d6c4eb13239711bd5e0005c7301923cb9999bd510cad8bd15d793b76769835ed045252e5b281a551f76dd6ec2b0ee1061470053b1ba8142d79f0bd75245f2c1276f21a524a6084c8db2bce897d25d20d20265e4af2d42f5bbcca975b6857f6840ad1157ef4f227b56e8476e6d4b9cc30044e09c6ba11451090b7491b280808080801600a412081b4c8af90dd076cdad52e4270906db5b7dd26ce6e24b9726900c46187b71ed1313231027db9b9b277961916b340409afa99fdfff649911597104c104bb9ba21ff7880987c115fedf956fdf77ff441c69cc90c229d0f2593d5557bcf66edf46ef19f15face0cf957111a55b1fb09fd68e4341d1a894cbc88f0414abb4a0add4bf7cf3b265dc4da9036d66a3526e7ab4e0925e21253c4659aa6494403da8631c2a13288ecedfafaf6ec09f7d14eef28c4812d069179695b955bed0925a50d360ce293cef54bf868adafb76d68245a5c44d6d492157acf0727b3777a474a9ee342de615187bc3359152f881056778edf6e533e5b8e44d1057197fce91a64d4ed6bf86c49a4bee464db9a525f9761a797b3389c2335f2a963214aa2a4b376a550ad95dba0d1c7c361ae86f3a290d3b0655b4426d56bc9b6b5ffaede78676a3e8b9324d2afd5d79dd1471d57d9e96d2391a708ac895432c68d5276ce2d39dbcbd0d4c4a851ac1436b95c3b7d6a159c2c8a75a9ab5574fa72866ebe0d45f798ab8a59d245696d4b8b58d5d74adbf5d6c66db58726ae536ba7e4ba9483cceb47344e9ba03ec5343d076384730414a7339eec215dbcfbb43bbd54e63db555b12b0afd1bcd54117ca2d305ab4b56ebd5d5c59dde57473550f44223d15a33912ddfc72a7392f2db463bbd1cb59a9089903aa76ecd071b4ee6dce9e530cbc8fc6410496c8cfa52ced1c718a5cf978331c251410ba2e3e96b6773ca1665b2a74946e6a77230463828f044daa8935249569357abcf24e844a9665bd56a993576f5950a8e349e622fb5be513925c36ff4798d4bc2aa16acceb2b55bfe2ef088a609147a177c409f699aa9f97c64b65c6bbd286d4d3418231c2c685cb3c9f995dfc1b7aa6b3c64464565936fb95fb9ea830c370432badfd52d77ad743c19ebf4b2108f4f4248e96aadd5cf3559a757c64347a8d3f0be2ca2538cbbb1cfe6b5bbdee965ae86339aa9ad3871d1e93ceba4d2e7944f757aa987f3344b46ed1233c465c9a789695af271b7608c70220b382c2b885b21cb87eebb5bad747e401c19199ff0e7478a8f10f74434a0a582a87cf2732b57f7aaee521061a38fed6babbaad4e4d239197f262ea9b645451d69d5e11127f1acee88fc0202888ff15f65cef9636b854edf47e3c1c8e0844f336f43432df711c0e4722998d618c70a2c0222ef7be6add76cf299bbdea04913d5aeb4fa99aaf64b76bf98ab8184bb766bb5c3b177c22deb522ced7aaa52ff6cc95c1065f4c64f6a6a03ff5e0ae2a59a797825eaa88ac42d57cb282b4b29b4e41908af8efe8376687d0bd86bcca04f1a947bd2a578ac9d68ba788aee64ed59539c7b57779578af86a2daf8474a94a97fa4e2f0d2844158489f3355eebbc6973cfba3bbd3234331e0e7ddb51c46fe75e35c796365ae7038d98435024ee5bc61653d9aafff2777a2f0045947317bee63fb9d67fadd311f5ba1244e76da5dc295ffed8d54eef7f403293039a018568961b8c11ce0b91f820939032d5fe1b52f73abda29727e26b73253394ef52b9370d8914eee377e76e08654f21d167f50769ab5d5d3a8cf1d15dccdab7630fdde34e2f92e9231127c9e4fc91d0cfb075222ac568db5f865ce16c16724a0489b2cd26653b8674d295cf2566c83489a6697e92251e0a79378c114e0b8044b6b331f70e36d6d45a8bf37999de2534a0d95c68ab71897191adc605f237116943f7bc9ed95b5b0a3fcf809020aa5721fb65cae654ae71a757e66564440d8e202a86aeddce355752a8b8d3db946022d2c5146b8a2d266b9390757a9f7ab6e0d48896db1271e19cb41ffb946d2b9d9ddecfcb701cb7e68408e264cfad7caa5653297d757add8f7c1444ed862052e773b2f7288554b9e63abdd46956e847707a89adbd31b7bc989b6f418e711142850b63304638446064addddc3ae72ee614ca4e2fe7e3e1f48640346fbdbcd8a4bfc335db5f55fd3e040a12f22b24b375304638ddb1ae5b8f315bcab1e7566b6b0571a0dbf94956111765adb2f56335b919739f26e8608c70648beda9ab6cd2fde73b17b7d14c5d2c4ec8b52ac9207c0df7c14e6fc83b532d67c5399ffa6d6a31b90a4eeef47e92d02f370a387eadcaeb3e9ddfa037d6e90d8d441cf8234fe804d334bd066384b3828d8d2edadf5abd9faec276a446bec8578331c2a142c5a60e956a5e2f1f7cef757a396b1d8320ca5dd9b6b9f7aa8dd2eff4fec813daa265608abe5aa3dbee497f5694767a39bc6e345397fb4084b3d19dcb15630b61ab4eef16a0d0114e5d562232ef5b72b2a2af4aee886a68382150e5b8758919e2d2844b1097189798222ef3afd8c2a980453c10216d74ad5a27bba28f4afaf16cf1a9017d386f5f3a1097629055e5ae61ad13bee51233c485574d085497b80c8dc8e3c4348d66ea347d08345d14d7b8c8d0cc785c628ab870b8d1cc78d64ccd678d66ea921c880b9b63ef90a57cd5a5ebf48e662ae7c8c783047e0834198c118eda40a48c35b5ac6e7debddc24e2fa7b71b8c11ced3c00c08c491a1210e07001908714435210ee7011858ce775ceaa88623810b28f1190a58600315580e67f44798a0c05e6002fc9cd02701cd0f715c44e77316896b4c33bf251081e5709a8000732ef080093800c9742923030a75a0011b60800616c09c0414208a40025a1080c4e77c242d0760fa1d60718d39fc485c46b6fce08001fc430f28c0110710804660004740321c908c0304f047a208c09300001a48623922cfb4b253e499b180ca3e5e8e12d01623ce918fa723f2ce0452d80228cb7991034e464a1e029be57ca846c06439339c1068e49c91929f8054003204a0881a98fc8c7f5004a0082c1040001217ced8a3894d8cf443044f482c44c0c245001217ce3042137b78038c0faa7869441a5564841f0808628400fce0054fa4f4f1882640a28f3efa888424499b3224818609c0d0073b0316715802090f58418dc205a0a0020dc4b101371c0169e0c6ca12c438424b22387d24a20c3afa80041916d1471f7d40c20a2c500290840c30d1c746651009a8c104ea40841e1e4000e110fb0547c1052b7c782162471fe4f07013fa30442086f401892089e8a38f3e1e210422a440800778b840c0b370ae09350b9a087caed00210306204890d1c0b00c2175eb6a0802d16710827c4018f188cc1480754211c04969441f9f0a31060e421021c140cb140078654e1052a4049831544b085427c6148050aa0071a85b88007dc60032b487170821a3430a204201ce120b0a40650786129c020dc3006183228c2f41000863cd4210732ac008138a0400220f0a10c6478c28d3d30f0061adac002481d481e41840b402041112d1842913ca841481286b080018ce088fa8708dc810d3fac40086388e28e1410e10b488003070481033e88200c66608005d0d88287b3c61202f00502569270838a2438608f2f80076210882840428c337cc00e14d41b8c410a1230c3175ac470c3688f1f8020891ab001090c150a010706c8c10a1d5823065cbc800c3fb0c3c81d06708300d2b0c623603003167441024b60a4c8830b423c618d217400120ef8c14403de069ce88219b219481b1558820656f0e20b264080c50a7aa0021d982101799819810268182f09c00321a4b0c31bd2e8d84100089c1183317eb84c31461255c11103253a70080b54c161f4200d6410c00b78a0414dc4420308d1f231538c264ef880c1e78b324c71061b30a1005430810218e6c082064811d0100604dc58011e1610420131f4e00c6238f1021e68a00521b400801aa20996f8420e31b081174421a882123c40700434c4800a7a8082cb1a86a0d107172009401732a8220c123f82490110820624491a401f875879a20d6da003057db0a4a021013708c540343c2013083088b1860a2ee08537fa90c6210c11c70c4b0ed0c8c31a5fb8831074b084893096e000373e70e40f6304810d39bed0a30679182253c40d26a4210049f4e003009801a5108898030558041803843cc084c50f50067ad0011410f80113824091c71ae81650807188300e508523ea0c7528c2088a7099001e7d44e20855f4d1c7138480c786850b2b482c5cf040fae1052224162eda9058b89881c4c2054862e1c288c4c2051189850b28b170f10189858b1689850b1689e5058990585e000789e5055b90c00f960118c0015e5421b178310289c50b25b178d10089c50b1389a50b40482c5d844162e98208124b17369058ba18492c5d5021b1740125962e342049120524c9000c6869b1c001bc9881c4e20517128b172132e620b1908106e9871717c0c001d090580ed00289e50031922401600006d82389f4638f8ef4630f15483ff6b042fab18710e9c71e22902409020c58c014c0907e4ce105d28f2950e9c714a0907e4ca1493fa6e0c2828191c4828129b160c00a8905034024160c704062c1400224160c044062716984c4e2120889c5c50d128b4b182416173d24493240011c100002148005010ff891871bd28f3cc0907ee4a144fa918747fa91c715d28f3ca0f4230f0a483ff2f8a122851e655081790021561e61871f721800080ea8d1436ac010952a5c2085111f5849920ae0053c949060026c5c8104150072e40203f0c0136a5822033208218051e9408c142449924ecae8018d1e1af8214992013450011290402a409028b10461124b9009482c419290588034426201420889458b02482c5a98482c3485905868f420b1a88c4062a17183c44233068985e60a120b0d1324161a1f4892b4f24365004b562416257d482c4a1491c4098a7492c4466545002a2c52055692d604cb870ba41f7c20917ef09185f4830f22d20f3e4420fde0a303d20f3e1820fde06323198001075040004c2a6062a222499249132df0483f5ab001e987670f422890018901d05306e987a70ce987470ae98747493f3c2ad28f0e1da41f1d2b483f3a42907e74be907e744a20fde87440922493cdc98a13620c8981248331e8984392e210e389309e18853c403e04dc828196cfcb7c5ea625210e6909452062085211567a230d34ae90a618812834c948e9f924e144124e8c6a6604219904c2c40d2653904ca4805207132d343e395bfc270d2a8978020545008424ad9df603f393c8c8f88cc88d24366dc88442718264649a90a48dfc1cf1206054035ae245f25861412814b368f904000e1df82c1111018b196ae2039f231e118865085a9066a6129ff1ccfc8c7f3e30a94042f3f239e2111df1883ec0197d3ec9e8f3494057bcbc7038017879a11ed0154140b4a68a1625441002c9789097970070389fa7d4d3e178689c432312c9c8780f9c905a5e7af0830770e0018d24f160007794218d3b9e6879b9238996173bb2d0f262c718764440927600841d38b103943af490a49697315a5eea98a2e5a58e064852cb0b1d7c905a5ee8508224b5bcd0c145cb0b1d2490a496173a7e88406299230c2d2f2c736031878b1c4e90243994482d2f7290408e2424a9e585258e324852cb4b1c59b4bcc4b101a9e565e49981830e92d4f20207105a5ee0a0915a5ee01041cb8b0ed8a08338742023e980bda1c71b63bc11f34602a496971cb0416a79c9818c840344e0000c1cc4b4bce0a0012d2f37a083d4f2724462b9010d4762b941126e94c18d3624a9e5c58d2758da80431b3492c4c2062358d85042172d2f6c38c1c68f969735d8d0f2226259434692a4355ecb0b8b1a6150a38d961735541a8c9024a9e5258d2c4852cbcb0907d2984292a611e8536b640be8f3f201794435341f4f0b7520694440ca62544393c5b3a06105e93f2025d088011a5648121d7d94104921125931134568268a1810ada94292366ca8c186246dd690a48d1a6948d2060d1b6c844892a8062a894c175890e10c4668c01cd2a0861145682184a5200e9224995081c87bc41a8cc0610492249974c1812de810070ae0010c49925080604710a6404014bad09224998c608d144891061972484192241333fe40010e845244808724492600c8800a6680a4e10c0248926412051c9a21fa9078254932698104b65081940df4710749924ceeb085198871071d46a690246953248e200f6668c08c45489274a20034ca20081ce4400a6790244945076e30c2648f9748904092a40d1e12a106178fc0c11d5a92a41438b25879a3038616cc4112715e5e387e38230b3bd881ccc26449084c3860062476521f188140a1239f37230d4932430b339c902449891625363508fd2804ea54510622a420b1947147193950a2c5814c4092f89024090c89858c43f8cc53d02443099b333812450069904372019324490b388c11064992a6d9028231a30c49da9031c6460c1a8421495212606c3e2ea9a8c1022c549487a6664e504ba52faa51d9c074e4030a6dd13289648da845e507073899000a2238b0019167aac01792b49941122b532cf980442590a48d1792b4e9420692b489011d613ce2e391f978ae8042183c983e3e55d00419d220c5010f774082924d192449c282c4020616d2928f3b4846b6843e3ec17091a40d0c2469c34502968c467ec5cb0bfdcf16523c3d32372e10f24503c46031021f2469b34492364ab890a4cd1692b44922499b1a499250362349da8824691392a48d1692b4a191a40d6833338028241248d28cc412033d28e8c3047d1a1a4f68247a9911f9162290a48d4c161b249b16706648040a4205752020182ae2e8f33235550ad1e8e3f4f353f44e1cf97882003912fa2884fc10108c888260968c6866e2470a434887609101091e4fea03927ee03da19134fd432391c7a523499b2315c4f910cda886a68662d047425e04048af1549167e4a28f1531d481502292b479930f1149dad03fe22311e78847543333fabc483671c453454d14328f2414027d3ab30afa48429ed0143d952409023fe31fd18f960059f250bc13a38f0734458d16717a144fb324867a677e3c04648b8791f1d1141f22528c643c354044514c598c9cd3d232aa0181462d2bc8228b14b4bcc88a9689be270b222d331f020599aa1879278b0f81824ca1a7ee02cff4357445e8977811100cfdcef4a702147a234b803821491b93289cc02246c68fbc8c0c1125317fe4e35454294635522889a11f2b2469337de44e48d2462260040251f10179e8cbf8e7918062442098231f4f10ea4042df194921491bdf64216d382c40912449daacc0248a24d8989fc48e0d0336283079982dfe930287124b30b1440b079450cf0646f58bbc5011926254bf484b4b4b4b005ed0a2847a387f843e07c9f4900a04804a12520a1f5f588289fa32295e5842042d1e68f9bc0c87436540277180034a1c2b11188968cb124bb4cc9048aa1626521a208a9124e929e8f352471cdbf281255aa63f421f0d4992c29058423228882112a489299a08d222821625d4634223495219128b164600018dcf485c9024890c89450b058cfc8827897f40f01f1a4910c88060a80ce8898f15a317899a08b244e62305fd910b39f2f1880e20c5482c343fb478519bdea43e403f1e3289c346056b3469c3822b36ce009289014c5a4e587062448223031968512d4b54a045da03072429858914494af9400632d0b204132df4f3669050ae20a1284142b1014a095088a03c8112029699278c422011087e7a6440a1770148e449e2a12dce810d78689ae88c8e8038fff5f33223253592b4498187a6899f1f10ccf4355a7c2766caa282a43dc8b8c80c40ea886a900042a2228a28aae004498916246c201983058912a9e5e3b345891625f4455249925624162475e6651e099324e90a89a5057290a62c409d2db2701a25fe6bcba8333d4a64d104f5f814ff420270f9b7e5af6770024664ae3d997cee8f55595b06275fc4e7eeeacceb746c69dd1944fa6ec2d6d46350ad665673e245a4b0c2552943f818b6ab932ee2bb6cf4e17bcaa43b379d68d347a40cdb390a277d72b1b62211d994ce9f33a7d8dd3d374d343e33c7061251bd2999840d56b5b235fa88b8d4dac91af5e7d66a471d112bef2af7e9de9ceb3233368d886a41ff6d701b658d7a4f935ace364b61c347744a32b896675bae2de5181121e387733eb8e05be680e85bc1661151cee974fe5cf59849ba9d5eb775a388c8167b875de1d7af0cd2e750194f67721a833689884c51f59652d3fd52b5b58cff48c441225323dbbac40c81fc14f461bf4144ac92bdba2aff94cca92448d85e0145f52f12c4655413c534851e49c867ea53f11404334dd3c46e2386cd21a2a495b92763c5a43f53cee88fb8554b64638838dfa985fb9e535f4a5ba7d75db1294454f3a5dc4adf6b95ce063da02bdccc8610d141da5e5bd5297fcba06cce6eb119445c766d4926a93f5373ee34d550921a4ab20411e7acf3f557a71e53db35105176af62d52dc5a4fb599bb30d88d85cf2b3ff2e5ccaf3ff10df7ae6eb17a4ec1e57e7223abfc960e387f8e8ee94cce1db5d3bb90ff1c176ccad32f6f3c1a6da8b0d1fa2746bdf7394359eaf279c26b787082b94bdf3a9762625937a8870a9f7609bcc1484ef671ee25b52ed6cccd7767adbe22136e6dad7d1e758cf6586536cee105bc35e9351ba8b3a08ed101b85bf3cdbacec6db99a26c859d113c2a60ef1e7aace7fd73d4f7e704387b8f0bdf5cb6abef5eb3f87d8dcada66b726dac762b3944d5d3a9f6d525a392add6c6260e51b9fcb69cdbb64e2967c859384466eabccc9c9bcd9cdb7b435cb552b62a6157aeced12a9e1b222ba5dca2af96a553e6fe50b721b6e97e19ac5ea164d2ad69a2a1711a1a5fcb6c886aba776b3ed7b3c295dbe975ae8d60b386b7785243ac6aab74eb974a065fdd9786e8dcddaf545ba6fa99a7698f38fdb9ca52d2b59693aee67263838658d56b5e6f2af98cd9e9beb139437cbd649d6b3a399d736322b69f9157314dd3648608df5ae5644bb72a6b9c25bd4ec512199a6972ae0cb1f6fe7cfaad3156ac61a73789872e27e0e385238f7cbc1c51e86964bec316664386289bca0aab63d3e53e479b49b01943ec7652be7fddb7cba76ad3344d138c118ec9171b31c4f55e0be15b15baeed96188703665cbbe3a7ccdabdbce080464adc889d482213a5df96c1953bbb43af685a8faf17a6ce74bf86a2e0d365e8892bef99256d6d84bcadc2d924d17e284544a46956c864d51191048ca6cb810ab9ccb29adcdd94eeeee8c464ee39b2dc405e1aa055df5f5b83ea98508217dcd41c66ac3ff3741d31402c5147199443e4da11f795c16a2ab4a5dd6da169cef19db6021aa46e75aa7dc3b5f4ddf139b2bc4c71675134ed7956e3bb74274f79a79bed6b8a733d51b3da2e2f924946a7a9b4b57edf4766844b3b4d854213a351d53efa58a0a7156a5e6fc9f0bdb52ae7d403241a669c9686ea6109573cf1ffc269fdfff63632385f88ece95ed39f7d62d29a7293412bd28b06ca010f957550657ff6adcfc9f10799ff3da77f72ab73f274060d304056c98f063b384036c94b0804d12e2e466cbdecb4d2da50f095131f9ab5ff5f975b9e24eef48e495b3eb8e4053337a112734e25007c91c60638458db42f65abd524aba071a7114c74d1162e585b01f4bc75a49d89d5ef9d46d131b2280460bd80c213609d96c4b1d72b7a7aa04c9488e63283679c4c6afd6e95a6b6eaa06648347540cb6da167d6d4dfa7e3bbd493e1e4ea8f22eb11142acd331ab0f9753aae8e29910a8723e208f6706f4592203a2e1fcc86b643cc92fa6824d10e26bcc9c844e4ac7ab9c0442e4ca5af5592733a956b11fc4c7daab0767afd64bbee983d87829e6a66bd0972dea3abd9d3972c93d88f22973ca94773fa6473e9e90c769da06d9f02032a8dafdab25a9eae52c595e42367744379b634b3909d537b67387ec903d023776c465b2975a2c152f2a67409313f2ff7864387b64592d91cd0ea2f3ebaa54af6bed56fea68e38dbcbd76a63f235257743479ccb4eddabbbec974ac8341d710112212221d314aa23918ce41c710192cd1c71e5d3de95bd0df254fec4468ed89caef54bee7aed21557144d6feb9491b558abea9fe0938e2e39eee7529f67c327425ff44e8b70015691b1dc46df9fbead5765770df888bdb7b868b3275b0a19f609383a898f29bb2a157a55a7ea7f7775f3638883f9d556eaf98dbf540339c241edaaeb115ac6d6e1061a3727553f6abe564be7123ce077f55c626657793e587984bcc90510dcd8708b711a97ab439da9c5aed54359798212e70c346fc675ad592eb97be3665a3d9ac11fd61ab7331fd36d7b715a769a3466cdccfbcd6ca65d8ccd8199b34a26aa670b959154325979aa6e66ce8ed181b34a26414367ff65f57737dd3e4d806f1adb34f676e5156ab6ecfb1a941e406973afbe79829d8b8a6b5607346746fb2cf95efb562dc388c8d1971df5bedb1d7fceb9a6a9b834d19d15fd70759abbbf6d5faa9392b1a81641e181b3222f3876db2fceaefdd623e7227a6cd18b1d7b6f718a3aad77aaf3762c4d7921d5c26173709e96e6810df9984b05607ddaacc611d9b30a2cfe96dd7527259ad2d3760c4da15ca0769eb27958493059b2f623b9fdbb0c1a55e32ebe6ac82c16606f1f964fdace7934d6dab0f8d8d17b1fef3fbae067b3e539663d34564d8fee864c513c2e6edc630e923bac55c653557abb5e19b9c15b548c4d726f5aaa45beb1e73c56a4c2011bf2bf5c9d6a2bf9eb3b9907160f288b8fc21f7748b9bfff673445c75b5d55a653f216b0883b8047101e212c4a50997298ab8b846446fabddd7b56ac3b90af211e1ab6db2c93b99db9e6b9a9e5b46c457177b7ea5a67fcf4917119d577f63d714f66ba95c632ba689b122a29393295fe5a482fdb34e934b4494fcb2193b73b54de80b0e1344443557ad3e7bb187fbd45b7688c8cc694b7fc59e724c797356898921225d6e12f65247572faaba0d9342c4d6a87b3fe59ed77cafd3344d6a0911974b479b9a8c9942ca3b4d8fb3cd86c920624b496737c9bdab976b82888c29abf09fb5f78615aa25824920a2cfaad692eb1ebaeae0849c1d98002256c9dc4cd155b4b2575ba3c3e40f71caa958657feaf5a54f93f243f4eade56feb7ea399fece3d34161d287b8e63ffaf5cdc7beaec687b8f61b75ad9bab9097d1c0640f919faf878ddd49aecb4dd37cda3046381f133db8a75edfecf47a6ae5ac4bcc10199a19224b8088443ec5344d3b87491ee2a475b19abc6cce55af757adbba658b87c8a66b457bb145fbbd634dc6e40eb149e628758e27746cb26b6a98d8212eee7edcb032769256364dd3f438db5a1d623f6e6ef9932153c9960eb19753deb9bcf6bb6a1aa356ed8bc91c229def0dc2f9cb206572e510595dad426e870bba5d26718872b54a5975efc558bf7e8fb70ae81c8c11ce33814394bbdeac4e96ab9583aed31e1ae72c18239cc9e40d516d3f43ba94dce6d55ea6b61298b8212ed6dcfefc9e2bf98e8064561be2d3f6f3dfcdf598fbd7a0227fe408a8080d08669a8e8064d8109ba4ece08473be54ca7da7d7355ed7d83b22c7de1199ac2136b67c27b357ece77bca3bec1d710192a586f8d4dc4777d96af9afc14eaf526e6b733046382e266988dd589daa5f6f6556e7eaf4421198ec11e97cfaffde84d52d77547a64645cc8ee161e5a100d9136b9b376754bbeb7eb719f21aed6ccd8b7da1a36c6da413344b50a3ecad37de72fbf7e9ce5324cca102573f9caa9cbf66ab74d537376890919a2bffbec07d94fd6efcd3144baabe0fef6746ded7c0d0d1331c4d974757bd6a07bef4d852152e675aaf94dfe6b52ad4eafc8f3760913304405e99c9449765c99fd0bb1ba2bafef39636f0d132f4437df746df6db9fcb8db286c4a40b112ab58c41f8fe6b839072214a776ebc6ae5e95eb69ba669e298d8c0640bb11df76bdfa084ed6f573405152e2e5314612dc4d76ac1d56bba74c7441c6611afe32cc429b7d5ea16fd461d746a9aa6699a22cf0c73223704132cc485cc5fddbd7f14fedc699a26a8d60c932bc4e7fa3559653bf754adac10d59cd05135156d35e7a3cf0d133da23745ff7dadd2356ecd7538ef028f08bac40c517b874915e2d2ff479f7307195cb2c11b985021f2fc2a9d9aee2d5b2fa568894f314d8fb326353099426c589b39940cddc2e7932d13265288b4bd7eec2064d6cd29ef8b265188ecdc72fa1a36065d511a50c88969a20185e8348968c86b864cd3344d5088bfaa64dd8ead5aa5834f884c9d3d2a1dd7d776f93371c2b29d227df8d4836bdbda768a31e7984913227d8efa640acaa75fff8f2c908743236a3046381c3061427c54be7225e95bd912ae4eef9165195f2bea18932544b8754249ab94722e7c5009b14d5825acf07183dfb6767a211197202e312121f369aa98a617864912223bbf53f8b63d7c58bdd3bbfc90109f5c6a97d54a5d4fa6bad3cb71459a00224591218ee376ed11a274a6ead3ca8d5fabae8c105fc13a9bd5fa37eaf0cd8440426642a0ca6bc2039322c49690ab4fb67e2ef65d9d9e26d842239a4584f8b3d7619d74be061f7458b421c4fea72ae5f5e5ebbfc907638493c4248fb8be981743a6146d0ec608879ae011db3383bed8aaf54bbac689d3349fc61471a94f4590699a381c75868910e27214f6525efb31e653767a6740a1ca5c6286b8d09f62061412324dcb82601284b8ad2de55cfdf5bfefafd3cb19854022cec7d378140289980910e237d5e0a2ee9efb7bab4d7ef0b400263e888bed62f9e6c3b50e3ad5e93df2f12ca1ea0a97202e50b8c4147109fd880868f421d298c66756db4d81490fe263e6d54c77c2b7901787c667fa09131e446ff45f852b99830fd6eef43ecd921127f46bdf73c2e48ee86bbef7b64bc9a614e50e0734fa78d614a0d187c8344118231c13324cec888c2d067f42f558eda4dce99d26b649a6c925a688cb347d409e110d2844178646343030d941ec29a75a94a57aebbd55cda40b933aa25ad3a9a5e437ecb92de988f2abbbb5cedc18639f234256cbb55dea606df9168c5c2d92a199f1b41898c811a133f6e5135286bd744de28894676392ebd6372ba5fea12dfee3b633f2295867e4346cc988d5c218e100318123b24ae74eef2a57e3b7f5035d6286b84c13a87ea68903396b1287890ea2836d65b7d9f4b1faaf3abd2f72c991a999e170429ea4ad8ec91b51426f58abef6b86aeb969f282490e622b356143568e42f76b767a43a0242e5339473c3232ef98638283b8a683ec6aa39529255fa5822d6834fad048e409c122263788bbe6af6546b749496bebf472e65b9798215578e80714649af807266e44b75eb99b12b684af9f767a45ce2566884b8c8cf418c56d445fae6bf55997be459792790fcc34b98684091bd1ad09217da5b8ebf7929d5e4a9dd226e234d1f781c91a91d63997a583ce2b3b473bbd1e0e6714d242c4eb1233e499a461a24674b68c6d6dbdd6b1a7bcd3eb92804253b415f1b2c0248de8953abfe3c7cdbe292a5313051af1b9e75a94bd564cae761ff21a2d44bc3688b27fd75c5f0e36b948780b104d33625283b81a6bf49f64ed507d533143644d15d3344dd3c4ab669aa6697a0b638463a2069333226dee4af15cf95ccf85227f8d1d472af31e216e05266644aadc732ca1649eac2a37c4a48cf8fed473e8287df6bedb344d930919113a65f56eba6f8fae373bbd4a40928364ba8c840ec60867032663c4d71e6cb04d868afd2bd6e995f1e9515198881197b7fa9eb6a56a66384b423f033a32fa8066d8d220cef6abfc59630d15958a826638cd516112466cf0cd873f9b3bd576d24eafac112dc84fe478d52cd71cb730463853988011ddaa95c9dd861f949b4d86dd3d7d109bce75c88f35c98a9fec41848a7a7d4f3e399db5f57810a5a22e1b9dfe7f47fc9db2cae5e036f8dba81d715666bdd0dbb2770fd50e227cd5c9e9baf97285fdea880dd7db37585f7df99c0e57df94fe2973c486f231e5ba7aa772500671718929e282468a1c71b95dc85cd7d5be9fb24e6f531950879920258eb8dabac9d4aa6d735205e1887227dcb7b0aab9fd557966a00e22954eadf76aded815731f295c82b891f24674efac2da6e8b3d08f3cfb32d2433f22029990928308ab37b564f7934e3ae5293888b335b79694ce8a5fa5f006712dd82a7d0e956c3d9d399c51e8935067458a1b51baca2b9f6b0dee32af6d44af5b9bb2554f56a6aab1115d5debd574df8db2af35658d28156c6add539341eafa7b90a24664beddcf5187dfdcd69646948bebbb7d4ae954b27e0a1ab1d1d99436b66cda20fa93b032e71eae77cf540de22a2adf9370add6d8d6774664b3ceafdc2dd7e35632c58cc88d5583ac2928e15ccf3abd2965c4a773b5eaefcc3d3939349c1f813e6a9111abacb2f97a144ed8d45c63c497ef27cf55ce15fa768a18911f5dc78c2d2829f44783c8d45ab34197d42d6d0ebf480923ba539e4fb92ad9645867a7d723450a18b13a6ddfd6dfaeabee59ca1771d2c6d4ca7e725618c485b91a2d5266109fe9af279baeac0e6b4bf12242d778997a2b97a17009e2b2295d44456ba33d29644d9bdaeef476789740e92336a3adabd36e901dae8b44fcfa646de5643b24e283add8cfa6a6746f5f7d446453cab7d3b96e8a49768e88dfd6d5b7553a2ffba45b049446c40a9d1b64a91cedf48e40941716287c446eadfd5a3c9592cdd43bbd118511f12d6cf9bcb65bbdb26790b588b86bb9c9a47c6f92975bad0d501411153bb7fe5637a3ae288d29e2324d6b3962404944fce77e4af9b5277393121111bef6deb1b9bcdf6aaf1d2272754f679daf36a54f712f3f02c51091c167cab0ebca56b4b642c45759f6aa0edf82ed9c2244ac4ebee4f58d1bf6a48c3288b8cb9aae25e9744d42a9b2401144a44db52af7d17ded49059915a0d187088c11ce142881883cd97c50b955d24d26b9d33b22c26ea000222eca54bae5d331379757a7f745e1fa5981f287d8de7bcfe69a2c19b735fd102b534ff96aef1a6f1fa2ff4be6f6ffb93a5b653e44866b17abcd3155215cb587387f7555ffe0b2de66cb7a88b5317ebc78bdb2dd222e415ca8608b9287f8b34ea9a8fbba5d568e87c83ea1a31436afac20882abe43942d197c86cc8f596deef436bf00c50e112ae95dd5eb554b4dd83abd9c8f4f5e19943a4445d93157c54ebe2a9da34354b3ad5d73d5eb652c7d0e91e9abdd49e174ba4b4e109543dc7dbe10aaea1453e85a6b01250e113e35eb2a56fbcbf5361ca2730d156c77b9d87ebf97a9a1a099697a43acaaf5cfb7f43df896f3239efa014df6028a1b22ebb6ace73b6d6bddeb650594364456655777b5f932d64fdf1650d810d56cf46d63d2c176389d5d01650db152ba4e6d65cda42be71a1650d4105d7b6b12b62f95b52dd6e9fd2ca12e31455c9480804c1325f271b7360d713d4559bbf670b5760d658f589dd75a2743d9a8afbaaa80c28bfd2bd8946b8cc12e50ce10197b4d367dac3bbdfccc10614ba968ab2f6bddb766a73b34a241825286c8eb2bf3afb79eee6f10175e35ebb901850cf1695d0cd5f3bbfad6f512c961fe580107ca18e2fb5b4dee5aca696fc3161ad1c4a0882142b6aeaa9eb032938cbe5d3c50c210a9ab3965bf728d29e6df69d1c80386e8ff3de75a8a59f67a8bf285281b83add676727d9bee38a33fd23bfa21285e88f5b1836d4de5fca11a114866721ea37421ba724bbd76ef6d1236eff4bad0ae7199f17444531217d9352e8a1941e142dcdec753b25e8b276535331c19199f6f5413c547487b285b887342b8d83316e2f5508c18285a886b56b664b76fe9d4abd79840c9425c8cd753cecee1b76c4e0d142cc47ecbcbd6b186fcd3c169ba425c74a9c51a3edabbb39b8f806285c8fca184b2766dd87651ceb61ed1b96df8dabaf71e5dadaa109daf25a19b4dd27692522a44b674b2f6267dcd6e553785e81ca5eb7b36864f7b9714e2b35ceadced72f3f1ab8f693c0ab7343ec3513b4289426cad4d6fcf13365d6c79a7d72d1e50a010d977b1d913bea34fa1ab6a398bf284a8145cc85a2fc50f42d65e13509c10b93287ed64a395aebf6b97982155ec8231c2d9b801a50951b1764dc2e69e646daa8631c289010a13a29ab4b9c9ee5db655939710bf3195efc1a51eacceac8438eb3b638615aee9eedde93df271bb39032509d14d05e1cfc6553a54f4e3a9ad09faf10899a605030509911953e6ef34c499a14a381f50144e60f1916206284788dc2f5b63fedfdce85a23c4a6167d5a1f9cebdb3a5584c8df0e2ec9b655c7502e11a26b0c7bfa376692fd6a9ddeedd088c6833284f85ba7824a41e6606ba6f288b239ca282f5819dbe7dfe97d2e31435c6215d3b46ba0e0111f940fd6d9ea64b6da9910a24bf6c5aa92ad2ec9284a10227cf3d1e9989cccce4001429cb0fa74d7cfd537eb7c45854b1017650297298ab870dcce81f283482553ec54b6b7ea99c21aa0f820b6a28fb6eabcfaad82f007283d885be7bb9fecf6c9a9de42e141ec291fe455cfdff9a40ee50ed8da145dbb5ab5b506bbb23719c58e38d77a756175fe4f6b7b358b43239a0551761019dcd72063f8ea54efdfb50f81e60c4a1db1a97e702d3bae4b5b737444774fbd2555ebcdeeb773445fdeb8d793f5e588ceeb6f2db50b27337f71440a1dd7d58a1b1c7197faa792ce371b3a2975109d83b229e8ab39f7cb4e51de88ef3167ec5bb75f8f19646ea0e420524adb3ac96b3e1cc49fab517fedd8e43617df204ee81aae5caebe9edf1e8a1b11bae5ea5455ddda888bdd33cf3aa7cfb51a456123cae69e9baab9f9b54de912c4c525888b4b4c1117b69c3d03ca1a513e271b64c6e66acabead1ad15b63e85a956f6d37a5cb0c9434a2f73fc6bfaddb4ebafb2e415c5c82b0a5020a1a9151b794fb768b7bce36738062835859bef74c67f3cf672e415c5c628ab84c132f679f805283e878d5f26fedad543c958c8c07716744e8d8b7b95e5bfed4a133233ef336575df315536e94b34b3f564c53c8656af865a4e7c8a7a6ae8152468410f2ee6ad5609d90f51b010a19113e64757db9cbf99c550a50c688154ab995fd323b4695eaf4761d2862c427d99c5255c89c97dbd12036eddf39193f5bba20e42c098dd4be81124694ac3a7cee0dbfcdc5cd4735338ec667561b28604427dbf7f2d77815a48f8d966b50be8892fa5b15b29ecaa52bc74b40994164b29f9b2bd67a41d510c58bc8e8c3e9f5d77448193b8dcf2cd3b85a1a9f591c942ee27a4bbbb97b8d9b37583bbdb42db4e2a48fa81a76a3efdbff9aedbcd3fb5c6286b82c99d3b44ba60ccd8c67ede68b9348c4391bab252bfbca6c55dae955f21d86a2e90412f1eb53b3bdf71c3b379b0e6921d0c8e12322cfca922965c8cb94f3109c3822be9ff5fd5a0dce87d367a7d789feebe246c437bdad5e57beaa7bcd90b37cc4391d2a5eda14aa374e1811155db8ad2b7caeee6e65729c2c224ad72074b7cd5d9d4eee0e4e141179e73e5c4c7a85d05f4d44ac902ea4ff7a36d9db8e8808a94f56a73bd6d25bcdd6c6c92122ab6d4af9d54ae93bbb21a2cb7db22565af79ab6d16222e6b13aeb9eaa3aea692108f134244272b55ad76eb6bd057eb1f9c0c22c2497959a9b9146d370511e1d6c6e8a2adfa7b4cbe404486cd563e25a937b72820e2dbde0659f3d7b98ff9347156e47c70f287c86a7baa35c376bed6313fc4f7f5f713d2568f52c98c70d28758d7ab4dfaab75dda23ea5982611a88170c287f8fe54aed7166cecfd64a7f72dccc91e227ccaccadb77eb55967d3c7c4891ea2f259f7ab5a09774ab65ce31ade22277988ec665befe06bc518a40f4ff010a14f4895545d253b3f038dde1d22adebf0a926e9fbcff7304638a3133bc46f53aa576bf56cec98eaf4d2cccc1592629a6866268c114ee7a40ef1a9e2b51c74f8acb6f7920e71b53aabe3afd59dcc21367ccb98ad759f831339c4a69884fd0ffa9fc4214ae5ec49f6add247abab7088de96be491d3a5f5432f586b890ddabeadf57dace6d0b509069724374b53eb9b6bdd62b9dcb3644b5a0fbb6cfee90ed64a3af62f422b53a386103335b43a46ccab628af3b5fbbaad3bbe4917068140739514354fd4abe49d751d95c5b9dde2dfeb30baa1f2254c6d30902d310652ba6ded1e9967ab6dac91e11b2e9de567fabb1a9daa321b2375f31c73ee172cd292ce3e40c919d5bee73d2bdeee5d20c51f26ade6fad82fd2d6719227374f75937582b7455c9106183bfbedf72bbaa6b8e212a2a5dc2e64bb5b592ca1dc28918a2746f2ac63e7d7ac3da4c84933044c512b657a17c158221aed7dad6a5e6ab4fe17e2132aa2a9bf32d5f0edb9c935a4e114ebc10659bce25e46ea91e6dd3c459179c7421b273ec5c7bad493599925c884eb266ef6bc9954f2dd75b888aaa6d8dbdd5b6b1a54eb410dd59beec65bbcc3daf43c149162284afc9ffd78f69a52d8550e132f12a3ec14264c9e8c3578e526f2a2b129ff3a1e09c5c212ed3f7ea3dd99229e540a050afc89f6818231c25275688ff95e16ce5de182fcad32429a723f20e688b183fd12336a75229e73e1ff387afc12a44babe93adfae7275488f4bde25d6c5bbb7bc94ea610d99acc2b9ba28d729baad34b47a2b6e289142233ca6475469fabaf87518872b9f5dcf6df5bb23a4fa0107f39645c99f75d7e7b9923274f88edbec9b594355fb0fa86e23479e81bc608c773e284389df53a7672cda51642979821f5a9804d88cf675b7252e56fbe92749aa6697a98109729758bc1e6ea2463ee64099167afaeb2d2fd76fced608c708c9c2821cec790cafa6e56b77a59ab719284d8bb98647577d5b6a872a1110d0b4e90101fecda7a15eb5a7bdfa9cde3e408b1975fef2bf9f2bdda754c0b274688ae27755de5d3a7deaac9f60a2a88ac659b64853c1cb6849322443a999fecd6f86773121221aed9cbde2bc794646c97ef38194294bcecf1c2296193923d3b4ef2888af25cd84fbbb50727dfe0048f48d956a968738cddc15aa7699a1e1a27428854b67e3799a48a49f9f6bd9c0421d277c8fbe6ec7d48793b700204766d52599cfc207a2b770f3ae89438f1419c706bd36fccabcfb754a73770d283c8ada92ad7befd0a972b46e48407b1d7fb635e556db0adaf933b62736ee9fce6d5c1adce459c9108d4e1388e2776c01dc4aef399a3fb0f97826c45639cd411dda9a59caf66b5db2ba423ba5b3b5f7b95b24a19f31cb157a54d3964de9fdff8448ec86b2dc9daa967f399ef1c2771c47da9a6cfb6e86256a99a26862376bb9d4f490aff31b81618273a884ef9d737abe4c7549bebf3321cce683a3f71f24653e8cc5fd666dfe955907b8b931c44b69039ba8e31a674eec3417c95ad5a5d39c61ae37d37887227658ef254ae1ca4ed467caeae646bbd37259cb4116bab0e3af6e6a44d4df72a08149ae23da1d1da66e3848dd8deffa872b87ecaf9938f70b2467c0a42e57c31745a19bb134ed488ace83fafc7566bb6dc9aa669dae56cdde5279ca41117c2e6da6375d14979d64e83ea87c8091a71e5ab929df557c5d4ce131b44e5582de7966af4d5cae8490ddcae93332265feae72424a1bb26f33e25bae9299fdcdd6b6bd38292332568c7295d07d75ad9667c653a48b1332a2fbc7ea57a5e8aaccebc68853b96b0c9db373df6015232af853f55b8c25e537e13485714283b89e7bf6287cce68d3c92f3809233207ab62cd012b6088fdaadbba935fcbc5adad7c2132fa1a9b3fbbf67b4bc9152f444797e96aedd7548cae4bcc9019ffd0a88a2ec4ca0cc2f9ecffded9e220ac70214ad8741b759231ea545d21ac6c2172a38b19936fca660a569684152d44cadc29de6dccbff572af952cc4af8e2ae7fef0ad4f2885152cc4e537dded82f0e1f3c53821101756ae106965f567535ef7379583db85152bc45697563aa14faf923156abade811e563d5952aba6a9bb05de7edbeb15285e82ad3974fc25fef75874095439f869ad9b04285387be96c8eb15bb696ab91629a9e784f28c6ad4c212e575d63df0e1757b72e854825376bb3b97d75d5a75188b552ea7c49f596620d2e28449753ada5d4bff6d59b7b4284b52dc8d4b377f2ed7b4e880f4eb61aa3eebf5cb9d684e8da9374c2c65c6374ce6742aceb3d597d4f4ae85a5b4b88931b93dbd32d53b5262b21be43aad43257ebdddc2621cad5143264cfbf92e54342745e772aa6d8cf3a576547884b2a55175bfa95c156157b35418450e1b2675831427ca673c286b2df52d8581162ebd6dc57ea13f67af9568810e57ac7e47c66af1ef37e62650851c2a91a7cd5b6f642f52b7944b78d9b6adfbab1668baee0119764760bfdb5a5a4742b42880bdd59fb6b8f9bfd6b415682101f956faaf6eba1c3c5da0221f24e5fbaea9aceb3f283281fb3a4f0a9acb0d5d54dc9d30f91699a261168c50711be7b8f2e5654b97aaf7b10a7e3faedcde5afd5f50a2e47628507f1a97c96f0cda64ff99b799d58b923f6ee93ffdab13db26247f45a67ad8f492617ac6c763ac87b42311b325676101bb36f8cbac58abdd711d7fd830c992fd89eb1edf48ade0a56e8888abe6e92dd3f3657fd5f99232a56544efacf29f84ac22c599123ae37b5cb617f7ddfd8eaf432142b714429df29959459ad0d5229729916acc01197ebe6399fc2fe5561ddd541e4c7da574be5de4ae61c19e7d5c5ca1b5129772821cb2abfd69d1f8f742b3988acaa7a6bd1b74eeebbd5e95d020a8d444f1b0791cd6ec89836365fce572b3788acb2f68b573e74d5e5ecf4b2cf8a1b91cde5587bbbd673fdaab1d2466c921f54af597d95bd67acb3c24664cee77cfde82b06e5bb124f1db2b246a4dfbebe6257b7d59bf557d488aeaaba28c36fcc3dda4e859534226fdb5a25cbc773bbed135404692b6844e978eea3aec2269bf7873e34c577a607a1ffb1629ae27b4231cd4ef858b141744cc13a9f6b6795bd563bbd6e550f566a10a7372729f35ce6be504e1d1ad1c8ac9c111554bfdc848fc96d62c58cf80e5b75ff76078dd63e05c1b0b7524694d5157573bde1eaaa1ca7998c28dd6f95cac1f7fcacc231a2e3b9eed03563f81a52242b6244d8fcbd97925729e85c15fd68091018239c9a151a44c51a33fab5512abffe4a18b13a5867c3eec69adc295a01237285de98fbd92064b457be884b29cadbda820b25fd5f2e3143842c792868566610a1c3c56fab64922ab86bc58b28593953fa4ca97d569e64a58b48a57b2cd95bf9206c4ff5111b3f956afaf27c6eb29bf9de42251271f253b42ae8ef12b6e99088efb7e5b257f5295e0893a83c22eed69753ae7f8e884faef7ebb9cdc7d2d755e1a19ff90e4d9c541a11f9bb2ef8bcf5bab7931f8c118e48858f287756275736941256574c8511513ed720a5922edaabebebf44aca11b97aa223f227444d047101e204fde934552c792816115752b8b215845b97a3ae88e86653ab2bbf84504a7f8988edbfcde532c8dadb868888dd7395726adb0c47c9379543c4f950bd86cc1d5b2be71a22b2568bd2aad6d9d54bd5e90571d8132a8588ab6eb346275dd620758450ae4dd1594ec8a09393216fe320d33488d8a8844c4e87eabd3a593bbd9cff809605115bf5b372cd9435a7da5c121abdde178808e7d7c75495fd93dbfa10db2d9c8ae52d3c0488b814ecc75865fbcedd4f51c4c5b540e50f513eb74fe1b3da27df4e3fc4dacc6ab6337bd02dfad61054fa10a9a44ebb3e7f0f3e655306c4e9e54354734e7ff5dcecd8d4e2b588d34433334da39a99232a7b88bf3e1f85b3df593ba887f8dcea7d599be297bcb2d3cba10f1ab53c44e6b541d74d56b8fe9fc243ecc6765fd25dd77c49c94254ee10972f28578553ed7a73d921c27dc68b31c71675f85c854b908ec89f784ce3337588cbf8a77b83b3c9e9dccd7828d484102a5c9a9091f1992aa669d9a14287a8aa336e2cd72d73bfefe1ac142a7388cacdc7582ef36f5a95ecf4b6202a7288bb1e83ef61ad54d1e7efb305880a9538c4a9ea5bd8caadb353b391f89fa0a90a1ce237c6ba5fb2d9de52f61620f786a8fcd943c6a07cd2bf2d0e4d0d07090824f34ce01204ae1b22efbf456b3325df534fc627fb08e1556943545035eceaee3153cded039a9901cd15526143f4d5fc1794dcf8c15a2b1481ca1ae29b4e4ad7763138277cfef1e9573c5e121a7dbea921c2d558abb03ae40765736988524e47675deebfb1c7e41e5149ded66f596bbc166b6888d5b7e57cacd6a3ce1d9f21bad76c3674c6a4926cae19a2e4c9defc976a4e47dfc332c4975bd983ce2b53140403551a2a6488f3b1caaf7a1f4bd7b37e67fa543b86f88e99b7a69ea3bc98ec4e6f83511c55c4106bff3f4861d7e5e464ecb122a21286e8ddeb70f96a5fcaeb9c540143ecc6144f76ede4fba555ed2e48e50b71e53f63b45bbee595b90f748919f2040c54bc1029852fd79f5cb03e7795b708eb42fc77d9ec2b6fbfbbcae65ff1d3235305cc34edce4f029d0a17224fc9dacead90edface2d44874b95ec7f70e5d6a65a880aee42fa8ace45e972a79285d8aacdf75551d99c5c753a152cc4974eff49c9dcaaad6dbb42746f4ef7562d74cb16bf15a2a273a1bf867432848cea11fff55baed83ff96f510a127d407337888b10285c82b83ce118c218e19440a50ab1a953b57a9bcba9c9ca1515e293dbee2d7eb34d21fa7aedfe3d256b8ac92985b8ac42c5a874fcbedf727b055b3754a210e95c7277ddaacae7ff82426472bb155552a97dd99c03dfc27e42746ead64f0bbcdea10ee7b423145a200e2841322f7d2e55af56bf4ad099b109fa28bb674e818f5a9bad3fd5ee8471ec684d84ca57b133e4a152bf73c2a4b887059ee53b4ce39fa23cf2566c87b4231ef09c54cd324e98c8a1222ad4c7f3e74102e93d5131aa90fa824213ed89c6c4f2af7d6dc1612e242b9e8da39ab6a08215439426ceb2a3b56927d1bc22ac425880b1115234455db4ba6b07dbbe6bf8a1027bbc91c5490fe28041251194f8d6c96512142644f4a55596f537fbadee955bb548610e9fcf9b5bb32f88f1fe611ab5abf18a44ff236a64b0e153c224b6ef55cb5bbaad35d4508b13d47ab33dc85def035a836385009427c929d6b3fb7c2f6abead6a10284a8d6f9f405a733d76a4f2da8fc20aeefafb0316bfda2e283c824d3e7ae955a12c2de1ec4b9d8a9f5ce317d8afdb3e5afd1e229677e1238850a0f229b8ed1b6eaf4f7d9aba9dc1127af9c53adedadfff8a9d811f915abea3d2827541542ce5e416507b1b1f79a3ee8e862dd90b22554ea880daec5cb6c273f76fc32a250136ee767898831a14247e497d34d361584dbcb6647e44fb8fd82ca1c71596355faa4fbd6c2c94b1e8a20409c88620c2a7244f766830d5d31f61873afa9bd40fa67383f729538a262532a3adf6a6cad096583304638ac0247f4b9d6f652ce6473b95ea797d3d82566c852a2a283c8b43ae5ea2de720736e761a46e58df8a6e49f5329d8dc9a72951c4408577590d5f75a0e5470105d7b6fae07d7fd19a58c8258142a3788b32e772e7939dcb7aa53712336e59d9425ad4d76af5369233ab71a9dabbef9d4336d1536e2530ffaac6a42b764f55559233257e16cf9ad1e5c67d9e907c1505123aef54c2d55d0fddf622e8dd85c2bf7726c719ac941058de8dacbc598949499aad0d9203ea790ba6fabbde5faa91a44e7166bfe5a56b5f3173b23b2676aed7c6fc8206dcf8ce81475f6f627a792f379199132b6986373fd5bef549211e97cae2933e53b65af31e27b4c217c2b25f4d92a1423f67a83cec9369fe764a74283e89c63103e930ff2a23e55c28853ad5755e543d996fe0275381f10877147058ce8fb7eeb56baba366e4ce58bc8e02e5eaa2e64ed647fa7773561039519c47dfafe21a5dc187dce55bc884c39658c59abb432d95ca58bc88c4aea78bef7947ccd53fa88f2a9ad6eed9b9f1289b8da73afbe5ce95220119f5bac32dadcd56d94d64744f65635777770b2af2e531c11b7a93f6e6fcbb0bbb5944644f92053edbdfa28ffdcca47545ddfb7095bc331521811df4da666a5dfb02df80cc519298b88ff8ab543a6cb4c2ed71445c45e0caae5ad666dc59c25222ec77c3d47dbf2f7dea35b484144fcb56a5b6f63cb1fabab7921e51011c2b6e4d2d5dc415799afe5ac13520c11eba293172eea96ab557e2162bb35596bb2426e5d952344fc6dd59c526e21fba9e020226b6eeaedec6d93ae6441c4a614756ad2e95cddfcdae9fdbccc27e1402129818873d1b9b539b79cb9717861034484de7e29da265c4b9dc33f44e7ded58573b6e7e837da6924297e88dbf35f56d56037d8568b91d28758abab4c292f85ceb96f297c888cdfa95aa6bcd63bb7f6105d63b6a09befb0b97b63297a88ec9fba27a98214f6d2a9f210193f4a1d845fdf7ce83c050ff13565ce676b902573d752ee106bdd25dbac4c2785be2bc50e514a5fb6d43d834d35b97588d5cd061f43c95685ac2e1dd6edee3a55ac788a3b52e61097c2ba64c3af706dda489143943c65a5dc8bb935c7641ce277b375ec6d75c57e353844569bb97b39f7a65710ad112d886eca1be2a375fa5cf8fbe0aaef56ad1b22e3d6cdcd5ebbddf3d136c476099bcea6967d9dae86860d919b2e6fa964c3267f3b650d71d2a5d6aaac39e7bcca95a286b8e857e8b839e7e6dc7f69888bbdc95ecfe7a44f19dc23ba75bf6fd225d9fc5e8886c8debb3eb739aae4be3a43ac8bbad66bbeb954d736eb4831435c4d41dae8a2dd6c1bd6943244452793bfebdc9a4a3a4786a856b1e66857f795b4d71822534a3a65c52695b0b21643dcaad87f83cbdb9daaf3f334a03044f975b56355beaf952e9a841430446f723e35993afe42aced1c654f1775b5e0835e88ccb49f7cac49b59c2ad585f8fcb3b9fb5591c28548f9213b535e9d33c7d9e23f6f0b51ae27dd6bc7ac4aeeb99dde91a76da322450bf13129ebaae94c3d0adb767a3920fa8ea46421fe82d0fd9c94d27d381f16a2e3f6cafd83504df5d277df48b9429c6c4148dd5b53ae73e556886b1b2f7ff8aa2bc9f53bbd485ef432d2914c90cc34718a1e91bfca5de61676abac3d7d241324c33e295588f02bd7c758494a953373bc78a45021ca9eace46ccf29d95a552a650af17db77ab3d18790399c52888cc156ddc3b9e6bada380a71be77bf7e956a2feb5b2844d75bd9a3efbb65d36d4f88ddde5b8df14ed89a4be784e8aa2bac5052baabca09dba734212ac7985535bfb295b01713a274ee977c72723f3bde9425c467552956133eacb0adfa611a8f026697c6673e6ca62821ae854e2a57ab6943c83009f1799f7ad225ad4888dd0d7265efead2a9b940483942646caa57eabb4ab7bbca08714a59db7c4f3af94a322b4284ce4db7d6d325bbed54cc2944884ec13917cb9ecc9c31eff456507744fe04eb9421440ad79bc1aecf9735637944d9663ff6e472b367eb7d1b87143ce26a4f7963cc16ac6be114429c75fd624ec1b726c36641888d5b9d75cabafd9672eb1810e2d6c7b6b2abc928954ab691f283e85caf15972da814112725712c0e832006411000e018b1b30100a311002020202090082422b168b48f1f1480044d6a507048342297c6e2b178240ee3388a62208a611804c01804620c84985166061fa6c387a400918d3aa21ffb3a079b440c69b0ef071fcaeb1be4a3a211009a42987c9f2cd4cb02e6d2e86d9f4050756c28a458c4f016a474dae231c8ef96627c9ec2b6fe5823b1d407be6d10579c6b7bf4b83b49123ec967f1723537b73a67acf0692cbf9075b0de01e2e1ee09db96913b1968746d461b462995db56b3d75c3c7b13a93de73922ea91f6fa87448ba37d21f1a849c3682ca0d56c91ed53995a48e7b3edad02fb6ef0b2a2d6e3223ca5e4455caa66b93f3d27b1ebab8ccf50996ae00154b26e05c48f6d3fda5bcc49817f7818cfafa2516eee1001b281ffdc20e7f3ff52d83fb617ca7256b5e85223943444789874c78b20b160b81914c1559414b2815b692765a7387c7d4938ab36fceb84ff3a408162ca5d008e06b0aea8ff64c4ec8298d5f637ac2193750dda6c18e544ed52c73f0d7cb2f026e6c9ea6ced23bcf60f48f1a5ea23ae44b91037c412231b2d2a4d834031f164ffa9e864bf2aa2dc1153bd1f51806a0e9c8a11adce94e654b623e7209151ad7943ca20dcac45604b70d0b41c7c6f1b0e93b6795bea002840c10ecdfb62555c561046d1e277023fe8f5237e82d14575854db9fa9cca78eee6c87a684ecd504acc505db95b3bff8b08abad8cb07fdfa1fbed10e679f71648645c4530cb70d50498debd48de9e89e1306e9e5a2e4a2fa97107218927d62abe4c0ed3c5b5c9af168ee580ff45dd7f6c8076acb4eba18e08ac3766ececba495b93018f8e62f9ef214d70b5afa4869aebe5539d0e48880262a93c04b896e74a3c6790317a65a24bbb766ed0b5ad93df24e2baafbec8a7cdcd203c6a35191fc92d10375b6e00028b0584af2e3ab4f1ffd85cb4071ba0db1d1a4623f0620ca80f25b8011fac1aaad09ae6add30688db54b1a2b886355047ec6a3d56adb6bc93aa5f41cbd4fda27b909304097544db446e1e75451f603572731c89855880a873a87cdf06ec11dacfee716fad5b4776ae4e95c7006f98d1e752ffdf8ab6e4b4654e16e7ee752f346e97e902806f9740537ba5515e751ae87b06fac9efafc778cf64eede27af8a3952f599d3d5252c69cf4cb5966ac32edcfde398b89b9182c57e84404504bc83f5a9f7ab506eb4621e9d89765a16f407ac827a35368fb667908b0335c81b065275c6fdc17ca29d3ca8fa0fcedac104fbebef2af839ca0efd2ff685a947b63ba3580525147c4768b493e8419d99d28a79b2ed347a872ffd6e607542aa749a8dd485cfbc38464716cac18313ee14e6171878e99a9552a7a9b0fe52359da27ac31a64fd9dc981de5c4fda75f79d7e1775565b85f56bb86b8303df4da6d6e3bf0bfcd0d8d73eae32b8ca2008242006c3fbf4a01a4879a6bf8272aaf21688c2ef25aa03286998a7168451a15cf4f998fe9a92277888f0242b11d7d41d5e5630414b0050aa78991ec144b1d425818ebc6e3a34ebaf23e611413a9309663b93914e06208b00a31e7a03aa50bccc85f7110c09eda1d27476ae626ba532df89c4c9e5db03b419380ea2f9ed5bb10d02304f395cdcc131fc328632b39478f969841df811795b1d73f57513249ac425b92d898e2412beb1a3df61aff7f0b906fabbd0ec9905b96264c7789316d0c8cbcace2aeea35919651dbb216104ad59f45190b7537168559ca3211aab20022a614504eed025b67e4cd46a23dcdf47539a17198eeec56a0f867295931056b741d34f8ea675a8e7cae04eb5f37c26b5df8ceb654c14675cebe8ba6764e59b187981b5691ac28a65b13743463f85ed608ebb40d5a7a4a00f690c1f67c9780f87503993ec38c834788fcd335ba092b51aaba6123f71ed5b4225d3ef0e6c2e9f20e8ea6f191726b87250e0167c5ce2e7b78b8c8da4218dc66e8c4c76599ef772efc5491b020a2b004350b474544455c348e47f760cedd0f991fade6054a5908fd403eb9e471686011d1540dddbb84db04f44deb4e1d238283f1e38b831303ed0943f2002bee704aa923ca96bd2b5a4f5e8485ae2f99c86da93237a4819569cd61e9763d8a0dedc8ea91429bf94b05a3dcde5ad00fa041e3afe74d1655bc6f3c39caac14a4494e20b535029b8c15acc58adbe9a4cee3b8572882003bf98b893d3680419e4929878654bcd15bf53a69667769446a6edaef0f568ae2c2cc8b8b504e863c0118130cabedb5e3bfe9599104627e1ecb8602658077385dc5e4241aea024fe87dff963021d9766a0cb3f64ed7f6ac2eb4c54aa06752af8d44cf4c703db18794992e3773dca174c8dab2ec26ad3eacfd465e939e4b728f917c9a554de09fa6b92b0ae5bc150f24738843f0ed53619f71f297a866a447aa91707074b701090ab7ab32bea020f2b12189bfdd81b3505b446c17fef83c2c3709afe4b298f0c0f5e4c6d2b22e402a013c18ec835c8b61228eed033c567b40eab0590f4251cf033bde2a37c6d1457050c1e64b3a7eafdc854d607af14005bb8bc6a69f9723e82c92efd5aeca3ac67dfdd314deb3fe152bed90e58449926add3e3781c232908d2ca096489f1c88099850ae9971616bee58c2d184b204e0d34e69c1b8a5a30a9fd300c8e71a9a3b809cf116109e79c5546515a531e9ac8b1c052a256f9898a5d4bd0a5720e7def3fe624c04d05665805c728ae75481e7a0eeab4767ce58e09ec20490abb23d14309a5e2d69853cd7e86fc4132b5f7f04b99bb5699d396f28a412e5181e42b30fb00e2464bc7f3cd7b55164f42de052137d8b4c1d802e8fb0aef09f4be389d25d469e30030c4149da689a763d08bd8fa220723cec6a00781b918dd262591486384c4b6ab9b42e21ae670a3f9f2df7e00958e6da2f62fb3fd4b9c9dae293617f8eba61a1baad57931dbeb04735819d0c1387872a548156c6e80e86e59fbe6fad58a98881e9371a8083afa36e3462a7afdc2eb090ba9432a4417ec8819945e16852977c173423c5eac1914dd4ab5279cfaa7d2f9ff7156861c42a0a6adff150b1c8f8c8aab75219908d065067d732933c3d440da9ce15bbc74ac323c69a59d2fd1b21d2ad5d18f9273d2005eb414cf41b21fc7921fffe094b665e04f070c0cc80d4d02fa88ddb5408b64167fc03554e6cf4925dcf818caa5b99ab4e505408244c506f1e84f5d059373750c15a99ba5124f5a8295165626739ac20a86e2173d9e6020ef8f3914e1b2d1576325ae6b6d0eea8a1d0013086975eca5b7ceb755a0cf2d652e0cb683340ca17f637631a075bd7641c23443b7796be83dd5349907a3636c166afc1265e594a0c123c497ebc34d09f639866fbf3016d096b56741ada4ebad3a2a969288cc0ce170253b2425b6148913833039e37321a3558e612050b88da5094ed6579b463bfea50f4e908be36036401702ca54f8e3911089f65a8249a8d509c220c2e7747b09095f9abb6bb5056ec89c2d2a9080aa8e8a1e9660994d411bbb0eb70ecfd92bc620b6fa097c2fac6964ebd54911a5e72e2ce0ba7654354dea35d19a51d14663c8b5865c26b4296df3f265ee1d856bdda229760dff6c2115d54cd0184fa59e04be691300f23f37b3f46e647a8d70e2e2aac7a85de585a2a724e92190cfdd0a68995b61f09cb63815be152666bc1a0b5b6e8554568b2f1f7ea74a38ffcf1c72ad4a5bf80bf830b1ab57f43817c63cae90423f9cd5ccaf903d5538d151dd61b80fe0e181c079051fb955452f9566501dfc7af58e4d645f2451d7dfa91375b07498c5469e85dc5cca3e945bd06519ed49b74327785c17cf328486b631440e5fd6d14f47a70ffe25fca67dc65aa3eb8517a49e1f9cca41db9bbff58aaf11ba8908e9f2e5d1dff85ca8e6555271dc0b0c9ccffb4ff2fa70ea2ded38bcd1847ecea7ba378350551c6f59696abd837e01feac7f160383ccf8124d6748de8315282787003d33899d4b11403455531593b04ca0d33d0e16a551a72b4a89eb444adc49c2721ec672c87646c7cb619845afc047600541768ce05f1ad9d69d4bae04a064a5ac833ad1c35357c7a2f264e9c209c9510ddae8eff78af81ceaf64347693f6b09358c65bd3b6a151c83b121829b77f274ef7cdf380e990e2ae175702e2c21c1ed2f2c67d31bb3099714e3a0ecaaa104db0ede41bf329a12416bf1306ce1410a9f014d307d3e7e4c5c751bc3c2215aff09028f39ba9e8967e2c7e2229f09fed41729548d1095a93b47536f729b105059557d80f44d5b22c24c23bdc5247f32f068f38737272f8ce33e9d26426b38b14996f5c71a867b878d666a8c67327f31a37778e23459ac18d8c65e5fdc856eff09a5071ceb0bc01326c857dc5f16f56c491b8ffa669ea7369ba21ab53cab715a5d4653ba36fbb615e45b6a435d6a484f737a03831438563fede86c4c6fe1863c220f8106ea58d4a150a9b02c162b99ac6634157f19367eaa386d54db72ff18bc1500e564b1c0a10255bd75f6aacbcff477da02bb8c59ff0efc708c325ac97f571ac71ad220c257d3e00daa05db8a2e25fcd8fdba9769bbf650ad2efc70f301ad4b73f0e5acaded01615243f606a356b57b40c10764ab7517c71768a35edc93d0f3fdad3cb814eb590c46c056a0c73cf3d171bb06d687b5e5877530cc10992794168296361d4ac9f325753a457fd216fd8dca202f1431aa72724418c499fb8d092a14ad2c84d6894ee0211922782c8f543a58227bfe4277fadd251a0dc7b5adb0012c1c1cadc6c46534a2749ba415596eb2c14a188096de70f19d4de79752d283f60ec37fd8a50c9cb17825710bdf7ba9302a9225bd69ab9228943c761613b366147d68d8132f6418c7722323e1234b636b6a536f4821b51434f8f4098e160ef62e0849d5626ac25eaf6e4996454bd473a849b11c464a993edba4153ba88ce0004da39c848e415a430343a0c82b69633e8b5dd60477c462b711bb0ae02a9296738b7ed340735e614c7100691682352a897b752bd78471abadc069ccd47718e1fa39be7f00914a2799b954ef899fa9d40a35091e56b245814e5e252a9ee123980437f91e7a86b3b0aa92bfca81d97390a0a7bfa7909a5c1ae3452c1559060f18705156cae6361896cb8918b064bfa77a54b5caed031e5632f0930aa0f4ddf3e69ae1e0a72924ba4e5d6295ce939446c63b45a5166b866e6a683b0d168b30d86f694755a34f3a095f5a8a8e16fa0fe9362479ebe9e1aba1e32f27896c26232e02b23ed3d781376ba6477238423309ef10fadecb00982f0796a6b605c6e61894d3b787a08053da3377940618a6debd4680c877642069202d01f1c664af02b2d472a851cb6b8b8e0cc8427ba79912958ab10704839386c0d8ce62272b4aa114320aa14fb1b86f373d89689fbda34d56f6b0071e26d80181ae3ef846f3538b796ffac7c300c5464c142ac9fb460f9400a5be5664a792fa385bc314719a463bfe1cc7ceb49c30f65da22ade46e7f7ec750f0b88fd5d893d0f1973af10e30be5876657f56b92d8b585ef6430af308c7cdab9551ee752c06f20d255ea73e6c00dc423a15a2a6eccf4688f3af274626cf68e4e2168abcd0ab709347d5993d69b4492c64b5364b2704533203f140c28e74e38a5e6f36b45cf0728e57fb6e8aa581f340c97fe55cc25063ac577d4866f573aa82f5eaa25e54d896c7cfc1122c59ae44f3ef0d60ba63e0f3a4f40eb87f03eed120e48a9e7c29d3d20e7f75884dbf6f895d92eef6376f9a8f93da5572e0eff733c434e1bf7d9fd5a9f58ebfbf891479df6cc099a98279ee37555b38be8b817821ce92b64bf052d5f22dc30e7febff36cf6192072c9f699c480972770ba6a1f42363cd8b1ed0cfd349ed4d6509e4d03e905763667ed20a8e89d55d4b7d852a316e05669f51a00a2d0cab8142edbf109af6d29f3f57f7841859047f65ffde7398d37e0ce0b4220e99a325cd92e02c6d330dde5e7004d9ba8a6e739b220e0898f5350fe82093abd9fc218526bbfa6f0af7b4fbc0239c9b415fe71b436ef22873e3dea913b760eddcf33fc14a460211e90cbbe4f793942974f1bfc3d79f2f612124223f74d8c90827d000d33cb985d668013158b02172f2880a5ca3b09c591d773148a491001a99a4a31597d04f36566d897a42e3a959abd02111aa335d05e2baa52ad2962ab405955918d31c6ac8c3da444d25acdf09e5b26550fab0c2172808723664d7a351c5fda29ff6e6d17506231284939adc40c204aaf1220bf9e2ba00f239a8f36875b89ed203b5792350af584a768df08bf8f0f4ab8502609006196629ea6d208b2724053667125accee3f6c1bbe0be8654e9d6e946969ed9296a06608fbd8e7134aae26d080b5dc1f4126bccb6655a476074d2fd57d44013bded2449bd14f344cc326b6b3fef4e350d173d08f3f26540afde2296b4798f151ffc0ddaeec587c220a88a6e68e48fe199e2241b77708c391ad98c7fc26bf46e6f4685eef0e87c9875d29a8a9929635be7a04e28658cbc4bd0beb22f241ce4379fa21225c7148ed2ce170383626e97bcee7011f527914444df831468b717746dc0e2462d53e757a14455d07b3d2832be51789ef9eef0c7c61cb3062964d90a686551919e76d899e1eaf1709a0b052003438eedc5e25f0d0518f67e81a7cfe0f762db00846a4ec4729bb63fb111fb190ba558482939818c25ad73e7d5b9acbe3e0e997a0bf8caf5f7aa1b48c673b798d674ebef971498385579115a75ab81e9f89d12e65b02f46ec14c9eafa47024f8e363a068110467f24b881d639085c92d4e8d08b236138b180271e09816171ed4821db668dc451d7e6d60269ebc6313fba44a94a560b4b17fc0f30c35e41d52eb3e7fb7d8863595b700a09d8c5d758ccb30aa66660ff5b4e77708d988f217fa6d0ca284618ec8acc250c1bf959346c9e89ba7b82b7403c10d0c60c18a4afbb64ccadd9058693484f2c4234c3e24c8d6140a470b1d32ee0d6b8f4abb5484e4fcdcc67d2794736443ec29ee698a3c81c8a2e186cdb8668e62c3e49483f05753452c76bd445fb1cc614b44ff44746694404cb8854d5499fb9cd181cf6bed7b833905dd9f32268c97d70d58a415b83f41b8c5207ab0c74b56b80e8a7b303e437dcf10f983346b95bab0c8516798d7ef22ee2a3515964222d2b005975eac13bf2ce8086d317bec68f1f4cbd4ff1d2dce75b2414cc3736ee61e6e4af6ba1127565687400760b89fc8b16df2372409e9b7f504518b829f35022267d08b6c072489d6c9b57cc68bd31d4ec4ea06ff66ce680cc58a42b06fee9711566b5b1f02350b09f87b359dae1bd0fa785997f2660f9641d93bffcda9ce4e08ca6d0cc55ebcd5aebff45c6299eb8c6e4649d2b925bc1170bd31b01f7ed09bc98ce6bcdad43aa218dc69f680350eec7b186006656a56c3196ae766d5c1141bde00e52288c90e95fb6d5081b5077c047ee825dccaada7abc9ff5844c5a8a2593a08e86c667091cbcec7c55bac32510985a8b1d541d655a360010f67be75d0744959d3208d536722401b2950320bc4cb769637c86fe2b141002d7034496f5e5ae15439e2957a30c7b40ead2e6600081afc3935c3c3d86d97833523154b3b98f9956c14c526968a43740cb287f09e93c1d43bddcb027e9ce210558e69c35d2c2939a30d52ebe282e877a536660a82691d9dbf29ce1d8ee4470970e5712c9f080a30886ab354a7c7ef16844b901feeae2c78a448b3e5b303829db838d6276fb8a6b7e1c4839ffedaf4716e3c8d21cc9652ab12abf2c1d5c6166159924d2a78ad8b411ee56348a8781951ddf11c3ea1d690849851e8775eb21ea20367ec1f88e220986da5121c947fbda218e9ed0141b87f10100a6d6a0129460d97c6fde8372078862ee38180377fdcc7af94d77540bb1f4259898c0877ff59377931528dd8f23c20f755295518ce48ba324f516bb893f274411ea26090a6af3ef2c7cceda465c65a6c68dabf480edc3f19440b25364f3edc4f53e89739dce44164caa6b2afe56c25d7a5646007dc1bcbbd3c88712a69e5ccefcca2e18f1d031c3f1dd48c71374dbf3346e5774f3c676bc9b4ee6776337055e63e59c97fa16e8b035c445ff3201175ccd97ae7420df37446e7cc843300d6608c07e1af88e06747a7ad3f4d1ebd0c847b09488a321998800fc2d8096625c8d29c970a0dc6b16f773d55cacfdf137a266026364cc02777a1fc7095c0b4792713ccc9a588c07b29f5026ac24a9d423091b320942de07e3407b6b7dd8a74d46e20e91810dea8e8ec3f1ec4adf559345cc0c8f88c6f881c2f4632290cf36dab542b1840fca7f756831e82b4b2d85b6d882b46da9953775a699640cd56c3f7ad1bb7d411d2fcc673023ca7c8df2811e387cac6da64d806b46b633e5a3ef1cd3aa95070627f3f54ffa9105ce923ddb2fd8451420390b4c23613c69943673aa08e6b8a773c5007900a771007c15161c37210bf49a3ae7d8326321d90dd2851b36dd081441b8ec781d48ac4e15fc7b392cf4eb015356b48501ee1dc8b118be3dc4d9ebd49695a1b808c1df7d5fd647bbe87d4b6e83a5caedd1377591a61e24c0361b9d9d11bbd1cb2ad02199d9630545a50f562e49b42974b420989753a36ee2fd9c210d63362eafd18ad0953347d5009f7df165a82b973291c4df4b339bd8718d4d57d8079598bf5ca0f44bcf88c99847b21542ba273d8249afa1b51e8f4778e2ef20a42d75bee7cb82680d1e812e1a811fc0530a963c2f08154ef72e1c900b86c710f0341228cc7510b73f58c20366e9a1f7ce033fbe891965031ef13e2778fde26d25630b859748de71cc5e076e76641f42849474d7796ac442a5367fb89cf7cb932c89ef0c5f558b661bc7199d0c57deffddcabec6ce4e1ee0da922e1d3ff21a49989f28605f6621ac041d0b2ac710331c66950ca297a0f8a7234883343f44656be9dc594a8f0fe567300c2c7f08aa5799329d89f0856a53b4748fe59299754420d0bde950ac8215d31e08dcb020e4427e42dec05842c67845430c6c6a31c2830c30b0207f8a9120147164ae818312889249571e760ebb596824500db7919bc149534e28b7971f8952b382c661cd8b9bdecb6ea6d371904e0d8e70a9d06d04ea4c7be1c4074be677a21ca3ea11a483c3840cb308bd4962f0e4ff22ff574c4af4eaa848a9b23371cca3235214042c1bcb3b057535cf05ad08d62037cc70271c3c11561ad19925cf557d76483bb8669dd1aa6de1e18a463b142943d45733a5f6bd16365f4c0adcb10c6092664c65b90a656d2a58124118608a4626de6732802edeb98e130c382866617daf649ca6c4fc0e0402f114e30fb6ed12b118f4b2150dd1c159cd575ea2d21e83ad9ce927d9a5bdafd3c0b32cb85dfbb333540359d40df610c6b617a4e9fb327da6fccf3b6036f87ad07eadd8d2fe856d892103693860c74186cf48dc52c7382632581f66296fc4e2cc5fa90ded89cc49d2f0f7c59cd41965bd79023c29760089d1863eff4e7569e868bea0f14b5c68a266749f03e9de6423aa5054d2d35d67075e49ce2a3dd02b53b590f5f85d0d1865e2a6a873a70a74319cffd62879d01032de07b44f1408054c5e2302ca43904da7ec16b9049f9edef90df1522f3855efa6d4503286192b00d3163e5068a06a42a31a92c177887355f457c4377d5eca048d1575e3c985eb6088d1c1ccffb33a2d75a069882128ab1cbc5ded30f2d2bd8e702b46f582a78432ec83df862ac6ac71abadde6844879bd39751ea927b399bf0bcbdaefe385faa31ef17dad1dc6393865afb13fe086d2364e862ec412ad78c9d260e55168143e1ef74be200746d140f8993694293603183732c65489c3e289b259f38e58224e7c1a5b534dc42b14c3502706112b102ef2c0ae24a3c9d7673b34ba2616e8b6be67a0a77061809baf3b83b62971de07268b8ce279ec765020d1d18551eacd651712fc382b20255ca0595e200410a8a323d358dc931f87a561463b0f08534f873a5740465cbefb160b914c7d493a0997ec8784d02c960154aeeba0cc532fa0213a94e720a97a2013c43a83f06c3aa33259e06be835f620f6eb3d267f908c5ae902be1d2b5865e0eb59ce572dccc1e0fb45c0ffd972e591dc35198eb7d16252b8c4c86bff32421e7bbe4b82e0b40a34b1c1b77b0826909668d418cbbda4a312cd398b8f685bfe3bb39fe760668364b5014a614ce48f40bafdf2aae974cfa6a04ec76b901b32308413c741ae1b079d0726349e078550db6af1f2e484c024dc6ef6ba880aba770452836945b3c203e23331814507106cc5e8a713c429666caf52314b2e865be1f22de6343b52e47fed32aa3cced0c66099d3425a0527d15f58b84270595556a764e1079579f450d43a25c51c1690174556961037a4fa5691fa86109a974a7406448c1ca8c67003d110ed1e1fc76c899e2a75c6892715e40d79e01c663a75cacd4af62d744125ff65a344f49569e3ce87c3af1e5bfb58dfb394d938cf73621b6221951494cd734a183542eb0d98a651197cbb482bde6a967809d5fe0611360e6500509206a6485b1cd5593948acc5b3c399e913575692bbf3efbe18c5d8336894fd5fd8dded2ea577c00794d66c850692837645dc3bf31e892b17ed04438c1ba481a6a49f74938a93cd8a5149eb992634d5bfc86de13aa0cfea4cb4af4205abcd419cd9441b894e5d86337f4347c2da1bb3ae6233177902f8d1b6086fb3882c73f63b45ad528a9077e85c04bba617c8863b70751b595c8d12537bec952f4d568d15e24bec0cf91aea040259fe367c66e09609e7c11e2090382ceacc37023561d7ad8c360e5d2a0cebebc590645135fed0740b4894542dfa7985713f1b284472673f06d6a990c2679b8ac04fc1aafbbbab3ada1cc68275e72de5858fe2cea2a2456804d1090120f68078061a4e74dbd423bf8e83a9c18f1d029e467739348385be9d14478d5d22f7763f16ea53b98fb28579ba44277ad0e32ff35bb1b7b364ab7f88a273a3869aa55d8ce26ba662d16bde32ce8e7fad06a3f61c18458cb73c4b7167478546d64113adc4c05f5f50486e0171341847d122f54a86f45e27202536ebeb280be855167a96575301d9ad8d9c43ed642172346020ddfb2bc50ead7b149aa59cc0057164f4db0c93f9b61b1e9068060f9b12c0717013fa59d92b48ae291d89ead48a4795292591a7847c118a60ddba00cbc04ebc4458fad0914bfacb1b1b264820bc780080d02a9983cb1c1d7d09a92f309d608b33e08ead1af960da660be004852ac67dd6623b152bc92d3ab001b04fd454a1008a5c7ab2bc4e257e354f89dbafcb451df8b4c488a5e560f6f12eb9e717254f17687acf8b6fe5908694b09e48a78e3c46ecd739c3fb2b40635ca0ec11786d25dc129edb78a64cad248d8b87b9f8c1808e4f8be16491d504661312be864e74e07cdeae6007645130bce839dc5fac75b0bfa2bd995ba9e61eb1079802f422b3b104c3bea76ecba9664f9f058f6e55ef9e401259d273d59872324a420dd9f07a33cfa957310b84ea9bf438fd8f981a4b300e59c596758ddeade52a02bc8b34e1372be4a9e7e0d699d21c3e4cef1a448542880b19d01f0406e4a5f29ffa387586eefd97875eec6815dfa58c8a8a935177d3b5e2cdd91d0201af715d7685b0a930c3a984fb10c0ce72cd86f7e5510c9edba305379ecbee8ca3be0c49bb2a24781751e38f7a37977ea106619b8b70664df2af2a1bde1d0d1993972de467fcfc5f25ce5cdd3ee8e1bd9fcc0939b7a25f1329dee2ae13624410598dd80403b09c6a26d261a4873a49f1fdf2e5a54d2bbedbfbc82dba9b804f475902bd18c5b1e25d311eab403e761627b436cdc8a012b43e42c75dbe42aa3d13fbf8990b1e97e6f7f9074a6dbdfd96b086753e83c674fc22cdccf5b44557fcc20a2163821a70c722f6ce0171f01a9dbbe9a00805470e2c6f1e1ec420f4c30c27cbcb465ed06b3763bccdba1422edccd27f0fc7fe1d6dad8ec06e895b31b4bc268ee07fe07bef66802cb698c396ffe0056e3f8f3cd6caaa0a237dd5fff9b4614c646882139b8f6d67625fb37f474fd64bc2cea72b8c2e828eb8622855242da6d21ac6793394cddb72727a2463b1ffbd6a3622c8ec1a22c24069ca741363c3365bff7c301da94b86de57bcb4017a754c8be3600544d1d0e53baf7f90bee959e1cff6f8e9d51969b46547e361815c3b4d3e00e6ae838851d0701a37df05f1b828fb9769639cd9e778654e28946f7a0fd160deaab9de835c88c94ee5db58c2ad7ad895e9214b7511d8d3caf92a0c5e6002163e356d2dda18484c3c1048d01d4a7b063322aa4b9cdb880139e9011c8e80d05c0fb9d6cab25ad7332d3906164c76a4fb624a0d95c602b68a2330bf143de6e09e88f20b24a25c48156c133851a916410a5e2dee4205c2f16c19c2a7303fc6a54fdb537615e36471f37408575192161c5082e8b70cae78b0a99dd3be64a4b08b8f7b978d282ac5ee98a8186118022a248276fe78a7024630c255ea18139063c76691f5e26d8fe5d40580c67c5209e041da4103ed9a85c45711c001c63c4005511e3b24111bd789897a026b45a137b0084d6a48232f9353a35eefb4dfcaf81aadcd585e6451be97575e9b968b98a4bb7fefb2379aaecc2ec6ab4480f5b65929803dadf285422cb87c776c343806e2487a643d0a6ec758d27efc72fbfdfc409813a50a15a3dd81ecf716eee861f4b12017d9b237e9c5e452bf7125eb5a6ca62787dd511f301256e70e0767165607d68fa97644b33207fba19481d24889eb78583820301167ca2073088a55a01af3caa5a509dccee4043ce5b066f439c37a3456651e269c648a4a7fa475af4c0426bbbec5ba10cb65bf2ea62cfb430e3b3b14e3d6760f288df5b337294e6e162a53f9a93e9df3d3da6af7e5d448cd89e0a2718f6d76d038c886ac51fbd2f8ae12b0148592058631de6fc4c1a79ad3eb329df6918392471a638d35587075b4e54310662f4d8ddac81e309efc41fdfa37580848c4178c1041271f2b7e7a8dacb68b64a3f50e78fc121ac067a48fbaac7126abb12adc635e568a548acbeeca6b3454f67dce7323855d33de0a503c1b53f988e655ecdfe917b1286c479c046513d8b62efc13d1b17848807324a91a7dae44d6658eb518a0e001972338387eae6f2a50b035f3c4b3f2d6d2fd5e36c00cd77506542092fa5d264272c837b636a35e6d6a0792fb4817b37b217f5f28fac7da33efe746171709ce1743bca197f47d74023f10d4a64e5c812efa128069003d5767a5a1736a8dd33be92ee904f906ce08130e1b42aeb99841237877e425e6c95c8b307549646fb51b416bc7588a57a69da3f467aab39ad6f1663d559465f846a82ae1a3c0be5a876f67855a6d91660926ca7d01c3d8bc9069755999ba8de2d994edb68fc4ae4f1939c699b94ac000fe1e4fc2235b22e32481b738e2a39623b006c9fd015c163732612a27191878422934a57b6c48a8ce6110fef8dbf651abe981b83fcb38724b03f60328b620de4e8f0e62ca06c149e268057523b534991efe6e5b68ab639c340810c253c021c2e3f2a91585834ddcad8bf285079f545be802061ac64adcd13fa8208b31cb773ff7781ddc875104babb335fc6db0781604049b44b3600e6f28162549e38a6bbc485aa012275230b65c5ad09a0f1aa634fc7e108002862a9d381607e50e9b015fc0707f2225629eeaf838ff0ec431069faf1d20dbbb0a293eeb4c05b2fe2814f7083cf920574347dfcd0162375747c59bd1a796a6d8cfd0750ffc96bf7e729691f7d8a6f4222cafa55e29a24a6bf65f9b6a575ea30b5ac30ab620e8e6e6e3c667c6eb50fe4e91113851f8c517fab0dffc525e5b6b417c85078d9a6eef4534dfc9fb38a98a196d16189073a7ae62cf7bd2188da4d409c62071adf8b007eac047d62c6bf4e456910034c3e0c12fed4c5ee2ac9c2d481f6a724b52c827963412aa74a50e5c514008281956977ac71b59c113cfd8e1c5252cf5119256f661780536f6a7b3368c2284773d49b049411e83c971a09d4d72774b132baa225c0323cf289100fb08b253717855f1fe8bb2f0cd794c2d8c0a3ad199da9a20a418659e50102c9d83e569414f2b66340e1893a4dd5981d46bc0e2074bd6e4004ff35bbb3e5ef706376e5cbd6e1da1721c041f4d9e96939630a0dfd2e2a20fc762d2a83254bbefa73d36f5ea0bece7d9290a595684b5b5ab2850575c5f688c21f4583a7928842d891be1b6344721825d57a584443020e4bca92445ca452aa7979c7f5262aa2dfa2d29ba1caf7a66ddb3579483a734d703dce918443d064260ec940e6dc9ef6ae88f1294a02b607325551261d1362e35d423f049fa3f5e882704938951e4171be6e14974ed1be4180b39fbe192103f570a2601ac2d1bb4c24092a660146f34a94de894a3d86459191ff3d1e40492acad3c9d466b649ebf299e7bd2e6d389557c62f2510c4f8e8edd21e21e4798bc6785f5e2231c3e790f8698f5fa79762de360db5b77165becb81cc6ae33b8f4075e668c5ee0ce5e74d4ca89f1a1e258df6405e0128e9c39ac231e277828020d9b9e023e27a888722b9910a2b55e09793636db49cb95e274ec16448e40edced6dc97106dd2d391fe21986608ab3438efcb9a65896754dce211f2b265b11b3f00be0f3aefe2d828661021a8c4d20861e9195cfd55ca793911f3f202c6f97f6a8d7f8f58a280f94bedc0187fd570b0ccb6013fb7f5fb84443419f0c342ccac8880f9ba434cc752eb6e4b2ef1e03ae73d1710d825638001ce1c180fc52e92b045a96b9305ed4f5e843cca2c8a10856144c35b5fd19091853f1abab9165574b21b61c5a33ab57cf60a552a0915a902495b0a421f814e7df5e4db3b4ff41d08b4cd84bad7001f1d5804c63dd7ba0de7fb36bcd8ddafd1ba7aa8f37ff8c20c6b7f406a441430aea3648b41e7b0af4f57d9d665eb0ea7b5e7a011dec8e5cc2a8e6c36b1b7e9cb31f4076f211806b8baf96ac5d08d9d7c0c80eac2b727ebfc59f38a02b5e420b8efa46a33cc2fdebcb87aba3d543660a3f7b1d407ad0b34021aa8b087891c9c4ac345d754ba561270b87044841240ac67a0f2b9874ce488412c58ba41ebae6616f9b19892fc0fad4e9ab8d7d2b58b13082bce4d0a250f5109093f79260a6593a15e96a5bfde11b36511606bfa2581a6f2aa58f885094391f927587f897b9a7faaddf729d9adc5a28b9cfed4536b0632aa12021b8565f17aec6bc0640ed90715c08733760d1280b5c2f7d82cc3396a316890719f9f9f04ded6cc6addc81db7e2fedbb777b9fd5884cbd1c54fbff61a1cedc13b4b49457af702e975149ab2aeb6972db1d0c424e51823397b113b4004d3e717f6c9116770ba6956b091f787243fd73a8ea30767916e2328116588552bcf36fdae04b19b3a5d56c8243e299437b040febb87bccc32d1558f28e5315d1c9b1d1adf5e2d5f7ebce11b3ca5ee867905c32b9e62c105fc6aeadfff984d8300491d41ed3795d944f0f536502a9c598a565b5360161a13df87e6a31713f0a8510d427e65c91b83ce541e806ad780b1133e22c5a481b6ae559ba8023fae791718bccf7c89001ed396fa971ef5b0bafdefcf78a23f635e153534476079f2f1b7dbad859be70d7728f81bac8e2e99a8dce86cee287f4102899caae3b303736e49a40b7c1c33e778440a25f2188fcec0c8673adaf91f3bfc2c07243fd2df95fbfafe3691472b7159dbc030a9a52308e1385808dd3b14ae243ee52add591ad203b427ce90acdb643b79b357645f13acfbc77e640e51587fc4969021d5d8760c603fe523e0c63ed4066cead4554da24fb8b8751d6ee9d9bc003c6b69a12a4e9766513bc1515119e08ef25f2f0fa9fcfc92b9d78b979d69e718c7cc3577843e8dd7dbf7f088512bec4a40a5e71a79d7973030da4ca18f5c86aecca343658d77f9cb51d70c668063e20f00da21a323a1762b6e87c8237982e89b690d5393dabcffd9a10940230449e1b69ef3a58562479ca52f7fb306cbe14ed4f4c0c09c1a7a3562097e205ea00598edb03bb0b147a94774a918f08d9e10978e76652e495969c5762767fe53d2f9382b586b1f395802f89b26d359100f21c3f05d5da88fa3bc4761053d92ebed1606f14464c974db658ccc7d398875bb4d1124de67c5d2096b6efd319c283a9a38fc7724b03435b52944679f7d24475e4bbe118e187bf6aa6929e45e7527e6203ae0bde541aff45e2ecef1fffef51abb00b7288de5eec5e917753020493a34beb73bac72df75432ecf5925f8236fd85632869f65ef6870baa1a859b4fbeddf6693488749355e2037015f97617e082b4f87e319b2d7078f8e6717fad6b96875a6a98f56791417c653c60246d48ca0e33e743d5f03bc89101027ff5856dca108a1bca6251270fac29489feb1ebb92dadc51f3369904996c3e2c1e8cb8145112014dea3ca22551d1e803d168c5d95733e7ec9dc0e32af1efc15a0e926112f3e51304fdcbfc61019adf4a474652129d77c4ab8309e78dce57a209655a8eb82c362ac4805ff0ef2fce46ae7febbbbba805982612bb3727cc71f348df396e68b65db41ab8ff695b6bed616285c03da56930a900eb4b78d7fc63ad83fad8afb1c608fbdd2ca1727a5430a09cb56973b9c99119b4b582516cd1ae205e4aca0ff19d9cb46fb0f6d703959a98a6737a53257d5c5f9ec314625ae238e76fc7817f8cd1915cba0d7954f76a3227acb84fc6d52e42b6f60096d3f8a7146c8812a21d6f841f0748493f44a06a8f1cb53e67e6bf7b4c6f0ad49a6dd900e3ac9abb408acc4e7653b7404e88f2dfcad8f3cd80ce3463822202dc61b250f7d47a99c951d61eb139a9cd55bfb539b8c9c8e18fc0e7e41166b14a5b1afc27c157d0862ae2f8f1db5513178ef719e3b7cd7c8201018ba176f1cced84f96cc18c3c93d306b4b9caef5203ac24548edb42ce8b5ab1286c8cbb1e75304e3c1c8195ead7138c8943c97116289b4acfb3d0d7a91864997a9c438d308b344f9561a70d48204a1e00372186a0688682f85998a47f6a60f5394a282e277c0a5a2b5d2f3c31c665e1aef481581f764fc923a84d6311f9a0107bd09977e945e932a130bf0b52cbe37b5d621193a66a52cd4276570dacc2ac59d0f21a9a70e64c5637889cb142b16df8b0b5f86fb6ef98847300528a6d5e8c0b87970b7d4b0ad58c9090919d5d9dbeeec6d16a24e7e418fd48ed28dcbb7661f18cbc0c2a7e31a3b8ae107e2e5c1be77aba6a61213b7a0c1cd294549c14f056338273db6c6c54a606fd5ece59525447a24e0bd0f4e02a0d9482136f98a0dbc597edf2e8498341bfb51f4951fd47f0f1a70ebd3b74788ba717eb0e7941a7f4137e4884d2c85e62d7d618d9039fff7fe7884ca9b06e6141c24f774ccccd1ff741b96d636ca75cc11bf9aec6273e708b98dfe64d71b68c74cffe5a5e4bad200b7763bf123c88f87fdfabd0b51d8e7c3bbeebcaf24dc95cd09653edec091478ecbde37b8d8e1cb10fb1036fa0b113bf91b393081fd71a95b90947db8cd5ff798dbf584ed3c87d9697675fddd4d849cc1859b587c6ca40b9f3487aaf3be2fdc08c5c830d8bff6a80e5b30d1ab711fab4b9e0d6376405bc2eb1148f6aad8f4162c3c291b520bf56b424aa708e80e0eed5682e57e7e7de3f330e6ef84da6584af8288def17bc604ef4fc46cf2f61cc7ef9273e4d6492e12fec297ec3f70dfdff4aa3e092be3d1d7dbff1baf794fd6aaa329c6afe6e4e4cbfdb510de00e14ec450bd2ff7b17680baa0a0352e9c0e2c3e99bf0693cd962dabd8fdfae8bb7bb89b6648bb16e4afff3595bec1e398a15789e3089181da534956c6e910038cbe4efed933cd14ce0b8b4700b3b2118ed34ca36068bafa8e2fb97725d9893a00759a1f0ab46f4edb8379e5be6dca5a593a8e6faa079b1e53bc9e444fc7191e2094057306fa7a027495962a436911a1b3b89b62b7ee44aecfca0fbc7c23379bbfed897e18306b358d92c60bda5cacc9f803c7abf9346bf470b3d45b23936065358eeab5cbcd02e232c15f2721adb5335902ce8e837a9f3f5b7db75260b476622cfb83eb3779b035d69b4ff2e3f79d29d9f25dc5df5f265d33274710de6a445b9c37bc9bd466eda11d87d193f76235165977a2d863db6c06ccfbc1cc12537527a472accd697ce67c2b30032401e6c59776526755e7daec70e89fa67d7efcb0c0d7ac6d2f51e63586061e7e86745ebc0f34abf5487ed608fbdcfcbc951aea88bc5abd979034913f09d641cc47eb309b00cd81cb19f842eb8b2a9820d7b546b7c96aeeecb2a620152b29d6bbf8b208beeea1067d68c88e818e3fc0579d39b29ca79e28c7161eeeb85907155f3d3aac5d5d02b431bd195db9671d35b4c1031b19930758a17284748df11ad9d3949dffd1d64d325889673bfddad0964a5192678e16f9c8b4234edcda0600afdd42f21781e29ac49aeb8046c478c996eff490441e0d0913f594c9d2a7651b907a0e08f1a76477e72240c042992120bdc7122b91ddca5d8b63ee1e27bbef2d12bc5811c2ea674b8f5770a8a37cbc6eba907c1cf7cb96df9486205feb7cc93b842530318f0a589013b17944d541bc47299fde15367931d1d25b8d48944e5c10afd3529c5f105ba83c173047c28b90882f389cb8a18bb688ea0d358d9d96d797cb5d0da830763229b068a77ae00b9b28a85f35d5ad6939fd8dd967240d6ebbf86eff4e1a3364b858dcced97ff219f4c29502ba7d77696a4d2c43a0db5d69a6b97813dd655f8789ed44daf402cd87bc71731f7361a1d38ef3bea91c8e9382da506a07e2c99b848da55fe6fe7edf75fea62bcf4d0ddaec85f1956e786d0e6e0532ff86574ded846f9808c047e805cc3d10d794e3ed985dbfd9010b6372d3efb8cf3cded614e45276deecc55e02d52475baee5e3353054fd4cb619edefe15105d76c79c77ee3a537ef131efe80c468d5f83b78e818b2208b1e28f66b175e7e6dd118ec59b9a80b4b7e1c650666996485e18cb6fcd2e7cea2766ad335eda7686a83d757ad3f11537a1c1e08cdceb13b2b065b29f1b6054e5ee136c16d8ba09cfa835eb9e5d4219e664ae87c2d19f091f009b6714fc965523c89ddcf728988adbf56c292ef09d3c46d729ce5320a0b89b0e86f5ed3849a90d01ff85c982f67b0e54210528b2725bb10be557e6e8b5757723b7820af5634dd8a9bbfe00edd55693ec6bda534896a23a3ebedf85d0b66134c6291829aebaddedb6fd29f8bd99b59d0c8027d2410691bd530e5f25542428ceff254f3acfb5e06bf7e2613e7e7af262ec56174ae4c1fedbe05d2067c458528cbe304b0e618527902ceb198b5808ffd22e229f2d8268b03e1b634b60d0e988d61f573708300174790ee519b142e8f7626641bf40e400db84dc430408a3fccdc0d1311d0c81e201db022708be4f80379400a6ad50932f1700b32c2878073a70a35b815c8be9de2deabddde14ea75bf9036ea2ddf7eab4f8ce2c6b5fbc962784cc4f6c6f6f13e4f28797ccfa2909098c384c9d1bde460f5303501dfdfa108c7b16dc7bf299861705958c3143d3c899db463e62fb61dcefef69c39e5e1655ee336ccf6d94e35ae258fb699cc5ff4398c864f5d422583bc95cedd3b1b333ef988d7266b313b5fb1ecf6d356501c6617129cd2f79099f6f16c59cd467f0f84c18b21242dbbdc1515e6754f6fed8ca7f540b7e3ae43ba4c8473c7996b1a90c48e7856918a63e5eb6d99860ce477fc1dc301f7ddcde72f23eebe6bc7ff0e81a33f435819dc3a19f5168065ede16df404da0cf129a66f5f4bb62114ee0255b25c3876ee1252fd79a002040e508b519ae5d8a0e67f8d0364b1941d041e8d7071afc7452141b4e6a6f3bda5d89f83372fc4e29cc534052fcc987e2f0e5bcef394bf6e90db107da910036547896b140f40b172230df51d381d48f6d17bfb0f15969ecfb016b02fb35c71c385ebb9e0bef7a1ca59ec7890251d5553cb5afe7f471996b7180e0839b762627db460925f1c46ee64b0b81824fc99e85d94645475579fc1edd4cb1dd700f8e17cb496f065e0fe319727c3b34dea804cbb2601ea70efd8ba6af3fce1bf2d049964136bd42d1c0e515b067c7a23dbdb1826bbfd575f6fa77441d9d68e9f10ecab5fbee98a80fd31c4bf4adda0fdeeeea3e222d2880eefbb437fee06ea68185651b8e52954c6644c107675c1810c2f73205ee79c21514f8847ff75b4cbeed49b1f13e86fe2f241627b25936046140a88efc961c3c830560ece61b6dd48c72325aad6cd636ac8933ada3c953dd259b0c71156dbbf7fb0368422e0b05574cf3db3092ae91086de030b0525e8f6a7a37c44423089272d1e62c996074bacb57e8f366ea70b842b82cc93f21ad480c081daffc10fb1a033c26a3e281ed67fd1704b95254e6dfdff5665c2b731da9d43fc94afde1612e5942bd528af4b5b1e3ea03614e4fcff6d2190ecd49b607387b8ca35cbef613ceaddca7447f2e2c05d2701592e251c28cbaf1edca44ab7f77c57f4b11b8ccb7196d03fa589ee3e63c19492af5515823e9798448e4dafd091d4170784c88d98accb93f40b8fe3e690829c4647bcfbc81c3fa8aa130fb870c5783f31f0b3d9ee9c0e5bdbf43a0d881e130c0e39c63610e48709bdaf132278e1eb7ddb8a52781c7f4df672e52bca9d780f7a00a59853055a9164f45c291c706c894c98de8b0c30631ed35b5afb677b289fc1a23cf6a8cae4d997b2d2452d3905312cf98b0819e782176100a66447cf6a7afd844db837989760f7497409753caa0618379fed1b8c9981adb43b6dc8eff4a6adc61b0fcdf83c3da223716f0327abfddf617c64f71379ff6c3e5192319e452d7c999ea3c1e5d7081d125e5d48cbfee755d0b821a6b969beedba6e5d92e28b2fb1d1844a4d9ca0278f15281a13b5272c7e29cfaa1b76cc1a33cc9f1f6761e42bad801ddce9ee954eb4fd45ccca610f497b91a13d86134a223bb0950286cc69644643d3b6d5290eb4b170c6d6b2cec4a940830f0c4edf14fc280cc0c6a7b297975640051f4822197c776ff83dcacd5871f7e018ccd262c82c1240dbb013a19650072f17f115fc758d888764d989813617feb7a413179880e89f576aa3ebca6637c38d1a207eea80e21a59b2c29de45edd3c7f9ae65e8833b5707cf4144e0cdb688ef766de3367b26ff93d8f7348d5eeff5d05f7ff6db96c0ecb6ec3b398471cf82c8034aaea0b2d683c6ccc12ff313578545b6f3fa62c5f3ef40337e87b06e941b9e7fa6a42f1868c57a72fbf02dc179d464948ef5f5e75db50830207dba601a3dc773b2d6d765b7ce28cd747ed5767af5177bb595698cf6a3a914c6ebeb3858d814d037c9b4212c5f2d0fb9bd92ecd537185aa2489897bba44d217db95eed9e2d126129f90c093ea5c74be02214d8a939b1f9f021c50d6d27620bb0bbd6de49cb8808e3f9002bf864c1d294b78a22f288ec6a1ddfc9a62b04d626c09d1443827cd3fc7e32180c4d40a7976007394a39e3d070520d4210f6d38238ec1a9a40404d05f96cfbb22b7133216a2c0cd2051f80c32fed404d693f27eb353dc676006734c10cf22c7a657813223b1c384954eae0587c2b02722c322d1d9c2af68125109b8a08eadd800229312002ffdfe4747af44f36743abf936e7ef44e7e73a1771dc0a59647ecb9bf440233d73a96261760767e245add73688739bc7d196172defbbf0085d7615c3f02bc1ccebc3b9cee444f80b00563ca4e102b07e8fe84662cd2dee29ed129ca8f0298c48213c5dfbcc1323fafd7c6f5d2380dbc154b73ed359cce0c0a7d3b8234f8fea039bc4ea6084fe103a90eeb69745c9fd7b9eee4aa7edbf779237a7e799fa3f253098ef53ec7a217750610459632e5dee8dfb67d605cb9644f674c706a8553635f65c4e3fb0c6530508f0633ec49f5a8f1ab3ab94dd618cfc5c916d811efcf2bf4e6d2eea8aec35ac5896bafeccc085f963f953966715ff740f124b6681f40f4a60a73c01cd4b52247f3be887d8118e824b57a9f710067c369325eeec40716505243654d702fdbab96bd51643cd3bb59b899df03ef5f1fadf6dfbf5c1c0f5ec9e9857c02017915172c48c5be4d390d5875bdfc86b4991bbfd9c999aba8700a5fdefb0ef8f1459d0fc489c316e1bcdcf629de2eb633b0438727047cbbd0c5ed5fc7fe04d3dbddb2c900e820bb056e7bd40a2743144da2e30b1a8401e29487081d168cca5d95740db27c43c328dbe19c4ac4e4d40d3c3ff177ce42b245cfcc3d0d4a110a2029e84ede4c2f40e05e6435fcf71a3b4d35ba5028be1c559bcf1363c846b931db92cdf012d95d7e531955c031fed1a405bdcf0bed830d5338fb749e1f992bd8a47961c07c98f17525c6ff113c7e1fce87d5b249fc9306fce6fd0688da66e2e547810f18c966518f55fa97549b0203b5a7c1c9e1d4480cf3972919e7e419833737bc2df63a79477fcf871d6a6e8a1fe7ef7bf8b1936e9258333ccc046ee8904b1f4e547f61ff5940f188fcb3d6c60d4527275df44dd8e92b0d7b8e9fa4cc0359647937265183302c338ce83f6e8f1182c9f834c1e652cacc07233b899288cdb90483b91b77b4ac0b4c8a3379df2aa6378a35341a679cab165b00af8f4fcddd1ef8cd550c34994150b049bfdfd78af896298a9a7845cdfd808febf4d65770c1bdb5c4cb3cf598f1f2969487385630debd347339e8b7c88fb257ed826f71a5578361ef71b4c65f4918a3842c2e0e6617469fab6612ee6ab5ff3c5ad1a52c028a4d7b903220b034e9ffffffffbfbeaaaa7a5cc1f8c6ccdab8d9f6654a72221cba77b9e5a50307804c494a9952f64560514488baf55a0177089108a4080dcf6eb6c618eb73137d36465e65da8ab118a9d3746ac66d8a111163a5df4dd9aad13f9e9bc358cda55e4fcd674bd68ec2589d8cce7e63e3c158ccdddb3ce623aa9f038c75d4ae234dfd8bd59ab3abc265bd988a32e88b85546bd38dc2a6126bb0c1a1a3172b25d5b825c5d8ef1b6c5eac5e45dec9d2aa8e5d2c759dedd99a317588ec0e1dba58d778f7fb7432e5b7978b85ce3678b21b9fbda6b4416e80dc0041c30c1c848464fcd0818b95b96a0f6e62bc8fceb758e9ff4da7556a5f5da32d96ef51c7ed9475bbe63ea1928e5a2c5c67cfae416f4e95a51ba88316ab1f61e34fac5a6a7ab60f1db35879aa9a424875627d4a216630f1101db2587bcd0f5bc49ccfb01912a223164b7967223b9f3c0341a20316eb9566f36574fa8cf85aa08ae878c53a28596345871acff267702549a2c3150b3f3d6aaa17d36bd33023263a5ab1fea0ba4a9d8e356813b1627d52ce7be9f449887a434212339887a0e858c54afe7350f2c6db693d8bb2d0a18a755a5d21a2e54b7fc454ac849d5aeb26bd65b35644c5ca94bec174186e5b5ece33749c6279ca3edc8d989e562a4db15c952a36439c94ba6d5a8a75f7ed1aa54d9348b11ab23a7ddab236f8478d62f12fca3cc8fd39613a92a143148b57fd54f923ef76dc43b1eed1716ccbcd113b0b8ac5ce79e5dc3cdad3ccd2275632766e0f3a46996fe8f0c4dacd84b49d26f19cf5ebc46246a6d0f61f9668f338b1547dcfb2262e6a2c576513dc795e711529e72f7468623da6d62e77cfdb79be4cacc756a98829c6123bde79e8c0c45286e74fe376e54b2c56af0929529ba711632d438725d6e5a6c658cb47fc7bbc12ab254f6ddedb333dd94a89a50ab56e563951c724d639d524e26d6ccdb752925899ad15e251ef0ca1df48ac861933fb323a0d1d1f82c442db4dc3ee5a36a7498fc6d0f188858d9f55c9cdc1661765da42872396da748cce294ea776db8ac913a111cb5b53a8498c35e8ac3e72a183110b7d3b789b9d0e8ba163114b356db849dda9be86921a1d8a586acf1d7bab3b9a50a944ace6a79d1b420dfb765d44ac6c4e6bd2571fd7933334741c62b54f465d94e70cb1368f23747d902dd3a48558c91b8527a96f8f52b3116231e54d7e6b9d2799d52016a21f6b898e9ed4eb2988b5aab5d454d78f994a25b2886ad01188b509b1df6f36a51c3ad6588c354a731162af2d7187206610104bf52ebf3245b99afe87b5fbaafd7dd294473dfa61b162ad6ad9aa74ec79551012c24f04ece8c3e2d3a0e6f54485d4b3bb414848484806132a4674f061f136e8f6fc6d32c68b6de8d8c3d247567cee9962cd991d7a580df7716c9679d30d3f0f0ba93ceafa787310db291034cc0009090909c9ec1a1d7858cd35cd32a6a990f276cd1dd62155299de48efefd343b2cbd763adf993797ce08c3d05187c5aa78fade15e9b09a37897bf69c2e53cf8e392c76d534add5a3c256c81d725878be9e9af4e3acaf210b406e40a1230e0bf79b4eed644baa11351cd627eee6faecda02b901b282c4848e37ac6facbc55733a1d3b8dba617d4abcedb4a7a60a21b5868e36acd690afb2c4dc501b29183ad8b0b0692efdb6cf6ed8616a0d8ba9640ab7ddf5e329ea50c3723fa92a296ea3f6fb3bd2b054b9633aca0fa7d3a844c3422cb5d36fe676faa91d6758889a8e502e6a9712f70648333143871956e30d2ab7d436f1d4b30cab136b53ff9ad471226e071956bb6e1ad2c6da71a4fec7b0b25b6ffabee2459b4a0cec94fbd1a3e5cb74a1230ccb753d5d134accd8f701c34a7d101fc51a266b5a635f5849319fd4d81a25b2e8236a091d5e58fa7950bb753c9eedb7a30beb19f346291b3efea9cd85d5ba9b6779079935bfdbb185a52af9224dfa97497dead0c26aba081b767fb6b5df3e7443471656a2bea2334a768810ebc0c24abed4e377b8358684b8774888253aaeb052e25fc51ad4529b2befb0c26279f6f8693e97b16cadc242c73c356c1842eac7d90a1d54588d27367558d1378abdffb3a0630aab1d2264eba91fb14eee90c2e2269db7fef4b7ab8d667444619d6ad6cdb6b37642f8505889392a36baaafe51c3272c6d8d0d3f42cdaa675387135693ce639eeb6fa762d7d184755a6adeb0a65c5b375d0713d6e36992623ffc279d6e3a96b0b4e1793b9e3a52cf6b2319aba97a3b96aff4b1b1c6063216c3648d3a487b1922d263ac66ee978d42d6ab1a6f63ac55afae697a937653dd14632566bd9752d2a3182b25c6fa84dae53f63c84ff29e90dcc0c630d6498b279d57d5285ea70d612ce5eeea7c53e6366c366d276c0463257f36072543048cf5889b6a8cb1364dcad12fd6739fa452fee6e93ee48ba558e37c5cf68afed87ab15ed58f7285c7ea8f182f56a7e6106b1a42b8ddd9ec62b962abae490d6a4f6f5d2ce777bce6d834b18407828619203672b1f25af347df59e362256d58a16f375f1ffc5b2c4ead79bbc73cea9c52b658ccde4daa74af101d592d162b95fab935fe7d738e0d5a9c8442d6e1b1b67ce8dd59bbdb98c5e243bc7af78aa5d59364b1583a9bbac99b5ace3e6923166bff5d79f3e6a4526711e6196cc042130a597fb7acb57ab6d7be691baf58fb0c3562cd22f5748e4516336505c5862b964ad4b62fa14f6d5cd48ad558ea5bcc934e222b65c552acdaa3bbc6fa123656b110d2b6d7b4f375c6e6a862211ea5f7b929158bff52d7cf75d38e2a42c5f2a69eaffa12b2c4b69d6239a346de1c63dc2abd31c5629efe3159cf93354d966229f4e6340a3f13b3494b8a957fb639cacaaf1a6ada2856aae63ddf499d6777258ac5eef8b249ed1f256b89053600c9a3828d50ac740de2f766d406f91314abf14dd85cd3061b4fe517d8f8c4da6eecfa719db1e37a9e587a7c98f6eed137485dc64627963a851a6e5022c55c649c5897cbaece0f369b584815b7cc6d4a1d1b522b031e649a0d4d2ccf96104a79966993b6073632b1d02373df69effa9f670313abd33e43e7a8c47f3853166c5c62b1d243669487fffc69362cb15a6265a76997da9e7a6301aca1f644547658e9cf90fa26691e23c501c80d1d80dc00d901080dcc0059a4f25187759bbca8e9f47fe44c3aace6ec661fd4b61b4d8e2b1f7358cd99ba442c11bfbadf0f392c950e2bbd47945421c4228b8928e5230e0ba5c3bc69d45ec310a10487c54edac43ce78c9a5a14594c167cbc6131aae6aa945ee2f9c1871b162f3bb2b6d97cae39fdd186958daad4f4fdc6f11a3b75c1071bd633a632359a0895cff9840887e7630d4bd9aae3577f169d7328b278820f3534881aca64e6cf48fa55322a239a6958c891a1e6d812356d17d1071a566a7d9a26b141ea1822562365259382c2d8de067a867592b5ee9fa418ff54463663f061869579d21f4fcda2a35597eba30cabb126db4eaf5427731559cc68aaa4b102f0850f322c86ceb7b64c6f3ec6b098796b12d3e36a17291759be34c3871816e66908fb146b4a3ec2b0901f6cae2d5aa4d9d07d806121478a0f3184dd28f5910c7890c1c1c717d63537a7a146fb7c7861b5d5065dbb748719fa1759ec95f644137c7461b11ec687f7fba43c35e3830b0b9132b4adbf9bccc7169637ecb3919ec47bd0362dac5ce407355e328632a18f2c2ca4a95336b89c987b3659880f2c2c47fe8cb5ff86114bc63eaeb018b73ece36b163edeeadb05a4ba7aa71a7fba8c2badc6fd5cb144378d8ef143ea8b09a43f6a7943b21d4b299c26a6e72d99be65c73b6694242d4183ea4b04e3b86b8c966dca83feca0f0118595ad90fb7ed34dc3143b377c406131664825e6a6fea0e6a44a8e955eb9013e61f1bd237aa7cdd438212a7c3861a1fe5568b3593529b9493c7c34616d535577ef7c9ad4083161a5e6b043aae5c146c91ac88d847cf858c2624daa06f1b6ee74769f0668f048c6c286b1d14709b5177943c64285d4796c2d1b1eef3bc67a6c92f5798499b27d33c6bafb86b11f63d4ec1d2e42db2024848bb15c1d39253bcdaed24b62ac6d129b86989f6a180341c30c101cc66a1a3b8578906da75e61ac6c90d525158cc55a7e9e6f9efb98dae3018cc589f8119969da6de7170b355588f5494d35ab547b81fa62793357beddc594eaf4629d4e8dfdb3a6d133f687172b6f3bf7ff7017cb4fe3a695b38675b19ad32c7662f7a6c93f57058f5c2ca60eaa3da86950d254c5c53ab89be857a1276ade62a16ace3fa9be71b487d9629d6a84cdab4bd40cf1f1a8c53a978892b18669070f5a2ca6e996f33095b358ac1b45482986fee8e2ca62297bdeceeeed58ac4ce8b8a89babb4881d582c4dd5ecb537dc7b1a1fc484c72b56439a70f71a64af34b9884abbc0152ba9f7e3e3999a740e258584472b1662eca4d3341f7567daac580dcabbe3af9a1bd5a6e14a78ac627d4acc9b3f513f37ff42e1a18af50afda54beaa086af79a462a5e68f7f5fb39696f040c53ac775b52574777cd29d62edb6c61b76f3acabd79862b5773ae8f8ad316dba4bb15ae2336b0ee33994b621c5ba4ba73aa9f3dc6ccba358adf1cf4d9f4ee29ed344b1f8784a89252b636e43c50c9ed4844728d623961a293b3fc7ea1228d6a626a566d77e6dbdf513eb51c2cecfef668cfe153368080f4fac3c9d1a3dfdd94ebbe67462f549ae5051da7d563d1e9c5807e1416d89add0390deec163134b2deb76ed917a75e8ac2616ea2f1f6f320fab3d9a89a5dc7ccb06cf51cdd53334cc00399858e92046565ee46d504f173c2eb19229a6a39aef195da3a3203c2cb15083fbdb4d6a5e89e5ca7ac8ce51ec436e28b1982bbeffa3aeaab2e524d6374ad7981699ea432d8975fc32d36f3a3e98528ac472572c7deb439fe9d121b1ae35ddbe3dc24747088d47acee83c9a83a216cad72250577f070c4522779fa26537293bebd110b4fcb64cd55fb83ec92114ba1c6dacb3821a757bb88d54eb165a84df3cd571b45aca42e25c653b46799be1c3c12b1d2518ad81a75937bd4611a3c10b190ab2635aa58f346ff3ec46ae9fffc543544d4901a627de26fde0a9b661b4f8a0d1e85580a6d5fe7ab464d62cc87108bef9a7c6ced59f3cb1ec4ca6c961927ce84d9940b62bda2bdee6b8518a77e8f40ace574cd905aa5aa29dd5178acb1f8fbb46de97ca34c3d03c46274ec9e109b43885235131e7f589d2a79fe314c85ecb41f561fe4de6c236f1a56c67d58ac8e1a6686e95ca56d34cc00b93978f0616d377fd2933fb7f3637b58ae901f6e9c8961fb3565f0d0c3eaf6ad69d87abb9952ed918795e7c99ba3b6f99416b901c88d4378e06131c63b84d4398aa8f9fcc1e30e8b19db7d67d89b679f29c2c30e4b11ea73ad490dea61db0c9e4478d461ad223a5ac4965b67b37458872153eaca91ba26f1e7b00e5e935eefd8c96165d39c938e3635cc26357f83471c166f2b4bc9be5147a5070eab29bcfba38d799ecc0541c30c105cc3e30d2bfd7dafe1576ed03a72c362aa61d89a7dfdd3dd240476e2d186d5feb037eda92671de61c3faa3da2a3abedc6c938dc71a5622bafcc378389ba554c3d23f7edd34d564a6a27aa461314fa93d3668b74f53e88186d53a11d13b6aaf881d6e82c719565a65db3053fce8f7d40c6b99ea6f7ee576bef19c824719d6294c74d0393bd9207627789061e561ad49b749fd516f06831b2d00b901c202901b1e63589a8bd2ab62b293828718d67e333a55a74de2203cc2b05a35aca13cc54ddeae01c3d2e74eb49f1a2ee3d65f58af523e72844d5327d5bdb0bc37b1f1646f83df7ca8e0d185d56a9bd3e8f539944e83b4e0c185f52975974fb351c74fdbc2faa3aaa9739c315a6e5c0b8bffff9c639d182166ce4d7864615da3c4d2196b70db53616121c43c65327e4f4d1eea233caeb0d07afbb7740e37ffa65658a8774de3e14b17078f2aac843839a6b47eaf7707e4469a840715563fb776301735c6a71206c2630a6b514fc27654d8ad592685a5ac1fa5d45075637f4761f9360d3baf5d83ecd95058f9dbeb9d540ffb237fc26ac5646d95b165aaa972c262f9fb970c2936aae15f8247135672b48eb821955a6b987a3061314b557a8d536b438a1e4b58d970e3e13eaf8dd27f3296234bce9273bb74926a90b16e95cf7532e4d714f9188bb16a971a0f37404a9ec406679cc1995252a298a5130b71ef1b5dc58b10378c130bffd1b9dec667d9c4da3caa29c6902de7e9d7c4c2d466e999423f474d5a32b1bad5a66b73ce30b138fdd1be3daa41daaf2eb198a23bc4da69142d735b623155cc45d9bd9558de9c2dd9a6e6cd27b69458b7dac84fbba16d1a66162c9358cd337336086943fc579258887cd5324b8912bea7482cdfc410b76d52427ad7406235ffffa651a352dbbdf483e511ab617cc84951cab4098f3a9cb03862a966de9ad179d2a677c16069c44228ed699d9d279b5716462c45d5acea1e1e6eb4bb8895b04166db34ca9013d7a288a5f69bef96c7b8b8c89644ac76c8ceb6ec8477e934228bdfac6041c4628ab95ee3f49a8f121f62a9236e1ec5acc19324396231c46ab2d18fb2d6f46c1a14d959580ab150b3fb5afbd68dc79610aba5cddee628fe56992c8358ea1e35434aad427ebc216111c47274aa55c3d69e8a18898f644c4ed653063cc808e00f9640acd676111d666d1ea14b9635969f53b8db203aec8b1a402cd6fdc98d32af7967b5fc61a9b72fcbb3a839d5661c163f2c948db55f939cda7d631f164aa9daf362b2d7d41c3eac6ccdbbbd89e9d95559f6808a149f4c4d33eb61657376cfbee9a38d4e4e44487c24d30e963c2cc4b071fae146c9cdfeca89c9493caca6545f5ba5ec4f4da370988c08e1e4a4495a0bcb1d96ab6fbc69182b52643f3bacd648b93395cc8e4c95a50eab39ef36fd4dcbb6ae2ab2a888060b1d0eb73953747966a4aca0681a9639aca6c9de243b43c813bf651255dd2287c51aa40a31dd8492b2382cfc3c4d3f43ec2c7058c70f226b435cb4bc611d6b1a6cda41a9f954da441613ba619de32cd5f1b54b4d234b1bd6b7737ba8f4cf368a890dabf9be43a7b7d5172c6b58cce8a8e4d4f2139d9acc202444450827272209111151f1267434f106c83d094a8e0188c1a286f52cb55e83f61a47da5464f1826049c3daa66de24f0979081634ac73d614b7d7bf4f2633b821b232a2031512921480dc0049395969901b203740d6394470b09c6121a63ac51426668fd82d6658ec6873e9f2742b52cc32ac5ba6a851ec5151c8b054e3e745a7697eca55326ed2899a40b08c61a96cd4b036cb186b6717c3e2d6e778c326214c75d41286d54d3b458c95772395e3573a091630ac3f8fdad3e77589e50beb8e5aeecb83077d3aab088b17d67b267cd59c35f71eb47461dda23acbda99a9c699e2e8951b8c58b8b09635edd8695e9dda7694650b4b752a6d98b4d7a285958f0d1d468db1d6b259b2b094612baabea2050beb2cb3a69ad31062ccf1afc0bfeea75658871b22d428ba6bbe619903c55285959abd43770cbfe16cd24285b529f5ce9b63e2f4d6e00b526620c252fa55d2272c53588c0dd935b53527a1d4a4b09a3aac394a0ca572bf360319a83a58a2b09a6dfe1a6e5e794acf9d87b04061b16c6f9a5b5dfdde06599eb0ce694977d9b7a619a15a9c80cadbadb5e4b94d58dfd2b64aad259e433d0b1396277652b38f1aa9fc892b748165090b1d65de30c41a4cd4445646524e7090a420a16c32242424e42319ebfb30c54a3dc30621744416113f058d271142ca9fa1f03f652583a892a290b1122b75d745ade81b8f641e8fb1127d934e4aedecb3d235c6d2eb46cf11e665a3e88ab1be19aaab86fd5d19333116370df5ec61a4cd49d6e430d62d6b645657aac16d680d1fc258c9d5b2364cf1d5d14cb9c64730d6354ccd1a33447eb417184b594ac5945433934e69f2172b1dc4abb00fdbe1b487589283b11428b4c1872f96ab53c6bfd3606adcfad18b957c1a7477879bc3f43493915ef994b4830f5eacb409319175f35dace62c231e46c546a5e943172b5bf35b93cc19273d4d2ed661ec88b91521f5c41a2e1643c69ffcbbf1c30cb15b2ccf3eb7de94b3ef30f4618ba578acdd1237ae7c124a18898f5a2cc50a1bc6d3a841abdfb458ed1b9f528765a24f973e66b1b269e75277f675db46168be91f5c66f7e920fc2616ab316ead0e39ddba9f3bc2072c56a66ea9b65b426ecb88f0f18aa5bcc13d3d7436314b0d091fae589ca78e995ab58dff640f3e5ab1eed863cb56e9fd34094516554e3161e183158b91f3b84abb8d073fad626d2fb243afce3a635655ac6cff76aad9616c0c552a163aad941fc6d35273a8a8589be7bbcc5dcff161e914eb9a73ea3e4cb1bce1796d52d3bcc3a4da8fd53152ac865b639fd4e63c23d68c623dea614dff303bdba4238a85d0bdb54dbc7b1aa429140bf39bea6d4d3b5764078a759a286d6f3ba9fd28559f58989837d81a9f6f98ca130b35e81a74c6ce61073f3bb1b269dbd9cd7995ceb7c389c5fdd8d85156dbbab945168ffec72656b7d793ae7a9b313ef7a189758defd53ba3664a3d13592cf1341469f09189c5dbae9d2635c4effffec0c472e48d426c27a9c452e6c451fae0e3128bb5c6184a7f386d626d455631e1c3124b356bae8aa1660dfab5935889755ca1ec6c485dfa7dfda0c452da641f6e4d297ecc88a8e44039d4c1c7249632549d9f5e5b3d192fc41f92588d4ac54d44bb4d52f77e34124ba53f08f50ffae6cd4f6411a50a0c3e20b19aa62f7d72b67352f878c4e24664ecadd163f4e93e1cb1bc690e9d36df781a526fc44277ac9ade93da8bdc2ada1f8c58aaf31ccea4f85bea838b58aa617b52f2467c94228a2c1e217c286221fe257394899793536495f09188b5db2ab5355d5ad49a430333403e10b12e51257bc4ab1f8758ad1462caaeffbdffd90a1f8658def25c6b564cdb34d529dd64561ec74195271f85589a4d2a578d378f075b7d10621dd46fd837eadcb16c24b29892f20a130a3e06b194ad37ce18a26f9bb211593d19840f41ac6686fcf4ba316275697c0462354d7affa310512b6efa586375ee3efaeea66c7a5a6431a3c6c9333e00b19a2d6e7272a59ca5ccc1c71fd62a3cf76833fd517ef861fd359e79d2b2a6bd08f561e161ab099d9f6fac51890f4b5b6723efe64bbef81f7b58ab5463c4149e460f8bb9623acda2b3e34c780304840636b801923007c80d101a9801a2a7f8c8c3e2861b23c4a95dbdfb0d3ef0b01ae7e6ed5a368488fbefb0563d7a6f9863c5244793e390e0422ee4f000384c9a841500048c016f78ce0de50730a006c98a088e1113125cc86e087280ada8e448298000d468487009808a470f544650fa12804b00e00008002a2a4d080104d02bed21050840afb49fa484d800c0001ee091f22b262327281921b05e51c9640e00800028c0064ac91496f2d6f437e8126bac6992c242ad1a6df0bde9be86954a146c940185e5d89ac65afbec835ea5922fd954c6130c50861316e2c4ecf8a66fa769d44061255f924abe0495d1041d59f1931226e8c80a11463c4726e351c612d61fb26e741bf2add217594ecc9158f22919228c38492b5c31195115939195941a6092a123990e0c327464254544852493f1c01c4347564844543a93f1c01863e5554abec400986264078618c33869c5642487304c7ac44d208009063052da2f529a2f5286a0d20b921c25bc6872a8ecc2bd2d185d98a40d4c2e4c32fe2926272609c0e022a1bc4542698b07606a610423a89106d262e585c07234199cc5938cac4400230b11b6d2294c2583823282d2014c2c5456461a58bca208272916c0b8426565a4519900a6152ac80a92915e5945490ec63aa3a20a1296e333292d1529ed0018549864fca424b3c210803945a2b48c098e11922e03638a522000430a13930c498e12953230a3301949e3240505a5334d2b00238ae327259ac92c00130a9566000614bfd2383e05078ece14a1532480f9c4ca88c98827da492732a3469321c288678c903959c9bcca48a72c00c3090fcc2650d2f80c499b8c9481d1847b6782a4f1cc9b8c90746030617209930c49e3190bc6122619949313924cca93908c946030957893938cca482611a55122a1b4cc245e25e589603272c14822a1b4cca9914624ce08776aa4a1000c24123b308fc8b0919293951312a6065b00c61109a565487294d8c0342211a5651831a2823200cc2214711291885821c951720815121c9934441622099183484164072610b946024201983fa41fb20f691c560c860fb987d403e2c8988c6030793042462587c94849060fa8089f82720764878432e32725184c1d4e111280a1c30a498e92396456485a0230722002098ecc0a498e923890b40230704000e60dde008c1b188069838966d42803c306f7f632306b4839c9b87703306a6872a8583069706f0c060d28cd06e60c3cc8e0c0011833280053060460c860a2c60a4ae64c70a89481198305230692323061706f0b060c0bc07ce14d465aebccc94a02305e4069292823ec5330982e98f44873c21a06195c262768c8e00533a0c103305c5019b181d9c261cdf8494906c79bb00b460b38de84651025b3a242d25c305920c951f281c1824966c5e4a424c3fc532c982bac940e3b3d352c356b9e5658a755e32b1f96f0d519a60a9809438595ad1a84b8b9ba4c948f99c26a292937cb50761e745aa9a09c640e23850a60a2b0b4f96b9079f26bd2aac5406171d3ce612bd6b4c3432d03e6094bdd6ef361ad521f6f8671c202304d587bae957f4ad428b9fe16304cc02ca1019764949c71800b325434703906082ec6b814a303176284e0328c85fa59356c4fddc1e43649c9b1f2291993962951e922ac9caca80a43039760ace773f812afe935ae7c0146042ebfd8c0c5170bb8f48203175e84e0b20b5d80e0920b0f5c70b150ab6c90df75630dfbdf2283818b2d3215b8d4e202175a64e0320b0d5c64a152d2298d9219414981bac46203175888a8b4c8032eaf70452b58b10a0a5c54910a549c6204175394a202175248e0320a065c4471814b281a7001c5bb052e9f00b9786202974e44e0c289d5bee730eed4a8caebdb04072e9ac8c0251398f8c0e5129678c0a5122a1bb8508259e03289cc084a0a2e9280c0251214b84022039747dcc51113b8342233829202095c18b1888c072e8ac8c0251122b820e210eb935599263a8a67d51b623196ce19a255f48a525d0ab1bec9e784bcf9d825952a5c088181cb20267011c4d2b42799d9ba36dff618710904052e6b48e002080a5cfe90808b1f562b6cf23a69dabca449649184a437d3b8f4a101173eac75deb3a7ed8e7a55690f2b216af0f2b833c652f3173dacf3adcff921f58ae1e14b1e56a34fc73d29c427a1c6f1b0fe959f96ceb6e695ab74b9c362ad536a93c70ab5d5bed861b5d3489baa86a9de7fbad461a1832df1850eeb1a2dfb4177d8650e2bd9b1a3c7cda8141739ac7309216ceedac99ba62f71589bde5077763a4deb7617382c3db429296e9e9b1bd42e6f587707e1f9518cf9f8951bd6357b2cf9f9736ab3b56169d3b46ba851adb69b3a1736aca67a4f830931f57059c3e2b369d5f165738ab5a961f535ddb669eeb3392913172e695887cd255f52ce0da274295cd0b096dd6f4aa87c52f9f27286751effe87186da212e66584d33e24ee5ace8543a656897dc8c9b869aa37021c3caef54a48e9e1a848c2f6358aa690ed53993ebfdef450c0b9bb94227a96cfe9e780983022e60b85cbeb05af5ae726bc64a97210dcc0099c1c50bebb21dfbe4afedb043dd85d5f4510729a429b9b01a458d505ba2bf6c6135ad1553cd7ce3060dcc00b9686129f22f37df991af529b3b098b6aae26569135f832e5858dead59ebe69bd127b72bac6d3dacbc0935a769f82e5658de926eb2638e30e936972a2cc4579b8b92272a2cd51ea136c67d9a5cd1650a8bd32f7a4d7dda2b664f372e5258a99a478dd8e79e66fb4f0e97282ca40edb6efbd3a8e4531149c9e0e846f10c1b9c71c6654a4989f6e00285a5d87970d31e53c6ed2f4f588f582955c79aced49b2e4e589a289d1459cc3cc1a509ab7957d8d8fc27a6982fb2a89211427f4a73702f4c5848615fef37b6d3ce33947e11be2c61eda3a62576b451767f545272b04fd9125892b1109d2a369e1a99216d90b11a273dea4d1163ec78db63acd5ef7bc763995235e2301949b1c119678484bce0065ac3628cf5ac4fdb49ecdaee372dc6d24cd934763be849d54f56329a45b0106321fdd3a849a7f834b26419c6f296d7baf8adb9d33d1661ac4b9adf923176b6b50563b1766a7c55cd58538f05184b938fbb6adff839ff6af9c5627ceaf9d8e106b586d2e28bb59e9afa0d6b4ce5b1f66221f56cd4ef0d37091d79b1d4ff3162e9cff2e6ed2e5642e5972ead7a85f768d1c54274f0b425a6bc9ba3988bc514f263ac356a29753a2ed6b94c8d9ebeb7699ad25bacf36ddaa995315bac9329a9fac67dcd39df14c2528bd5f4b5cb73ae523bac5a5968b10e2a622913f7ce621d37d7d02aa59c15b6b6864516ebf1a06f07a53edb747c1435d0487914944ed1c1132cb1588d37d56c3e52db24d62085c56adc3bcda5a7d46c3337c2f28a959436c58c1b37ae604ab735eecea63934b1b4622da7e3bb2cb3359dd29e6161c5627fbe9336573d3eb0ac629d930d33f5cba48aa5dad9fda266568de10d901b9898b282a21eaeb0a462a1db4507f1f8b5557d50b17ad53325d668a6ba9f621da658b2f6e3fa3564a6588ec736b53ac9dbead952acc39a1532e4a4c7b74d4848080e9311ee8385140b39362cb55189502a6c46b112e3e14e99deffce9228965a4fcc6c9b5f28fed3fdb44d8ae50b7288dca0051650ac6bd8b239f6579f586ab99373b3538a091de1c01112925262f1c4fab4ea51d1fb7c3244228b254ff229272b3700098b92a824528562491c0c08a2200662008043c7511000e3110000281c160fc6a3e1804c26dde9071480043f342c524a3a222e1e1c1a104622c140200a0543c14020180aa3180883180c864a0a5d072d16a6e0da7b43abbdd06cfba469f2c56d5a0cff8d7eb2445eae511aee5242c8eb1780f7e316ddce892d204b1cfe24612babe8dd4021821fe0ea7415c12cbcbee28dfbcb1f5577c3b7f1a3dbaac2d21cf69cf826fd166b4faf56e58a7377372e8febcea16eef36ad5145a22bdfd440f552e89b085098e8cf0b1dfd111dea78715cbe5b961b77dc48a37efcb6739468588467c729251fac25e6354a4e2ac2471297e222287dd6ebd9526625a9c942488d47ab4251dbcd62c478410605e9ca602e69327c49ca93a5fa494e325c50afe7f8a83b2326435bdfcba56d23bae31656dd98e7f64bbe9ba7f42d7c4454f2ea4193326b514627ea3008c55e4c77c61f78527a3794306164ce5a963101296ad135407c731f2218a44aecfb8b96d23f70ce15ba7afdc77020eaf13d1234adfc386c3ebe6cf451bd86a16fbc132493ecc1beb96e1361f9860115d6699ceda6656632b9af5b126725087c25c5054b03c8fd5ad4f416542884fc12431951aa8312527e21947995427239a3d778271c34cf7eeb2ae2482d1b8ecfddff3f38d061d8f6004b253bf3c03165c491618f80ed1992e6790649267fef7f85ba0f7f4f6019c11f4ca493e9a1794f9440201bb3dd348736cffc810767968feaad1e8dfd95d1b532540340c7dd05e5964c9b9b23f819f0d00f00e77ea190773e1b9ceba855592f9cfbfbc8f58b83db9d0142f817ee666d563bf1f05ec4d3fcb0f17eaa90e1366dcc22752c6659331248de1a220d599b1d7ee323970a6d6cee4c57f7208197b5eea3a06cb5005c73ebe8633be4acd91ed654c71cc4a44a5843d3b44ddd17740722b4a822c8648ef7d125a0ff5c6010764fc1d5e2fcd0239ed23a3465ec34f0cbbf0fe70d4c73ebb81dfc60ef17b0bf4954969c35deeb7bf2cbfac3cd1a9a4603fc56a92d05b67423fe1848f1361ee7d26c4e2adb080fcb8ff992250c44bc7834ca026547d9775325932d416cb34a0d5160a00137db4768201d6709b75186285676304742c8058668d4c693d741543cdb6d2901514997107a350ac46f11e2a089a1f9677e3137991007efc9a1d15985588e8fe937ee82f60b7c197e2de89ceae7c967270c18caed78075dfab99ebffae67024229a05b498a475cfccdb1da08431a248acab8734a288f740180e73ea1b510932afd75e502984a1f67818cc588820512625f6fa90a8eccf1ab2afe9e9c7eb59d55012f59264ec3389929f0c197f12db23f0a8cd74d06da140bc066654f9d82fd11573372d7ee197bbcd7cf2b6b98eee11d878564b2ef44f237a4c79d89a9c28dbf87097910b936d61e0832fc8f1944e37e771b08986062587445cd0f67562ec4ac87930acfa4bb33989a2f03be0f545b131323d7ce08a6532d1800e4407a710aa7a0a513400f7cda6f8433757796e07f954b1e1a7a2243c5cbeaab87969ed045cc57639fc69bcd50b318e46008ca6068bbbd53c30365a160b0b2e23d8bef2c5a6be8191b4d94f50bc68315eabb7a2a55b405355f9597ef08047391d1bc2f57baa45aa8245b541c831b937f62fdc51316d8522c803775248df3a80f2209425c4e480ad10f9f0a44e78f9e11f5bbcd51bc309facfd00dedd16a188c25d66ed3c0b6054cf78391ef743c75991cd1eccf7ae6a4dc6dca7757312259a886ac28827877963baa8ae776501af90ebb815ac51951a93cb1b3ea2b8cc1326a9d689d2d5e4b0b10d34bc9d1300268374c3318d10bd786c066aa11ecccf0f5ba835984239ad624d5959498c9e0606b7968e8c93777b127ef96b2566f384e8b2abe7d53d3418c47cce8be241e9b58d25d59d0c09fcfd8ec46e10bbe6173051a57bfeab4dceb1298c3b2d8696dd264ebfbbd084169964f3ab786b7875bb7ba66b0066bf0568a533fdb991d9a0e3cf7e85468bff4c83f50ca8ac926b900ebd25777e6faa41db1ea9449ceb29f6ee66310e8981035c976ba5b81a625ed42ed3f11ef3393b1808e085857a639be2d7eacbc4536aab968e95a5bf4f0093de3c49800312a9928eaa055bbd2651f6cf85d6cc9f2f873534d54031ff8d3616e122a652234cc165f4111177015acd4185653683af7da9b785843c7085a9b10e2d9fb3a5016431d171ac287c9f175a8983354bcabab1a076aa5331a7f2d78a134fbe2a168bf035c8dfd8eda431ba5248e63932464f5924d46e45f047740a0a58f3d5e3d5d13a12be2a8ed1b54dca016f8e3514eeeb285d12d5e27b1963f8ea35bddbce24ad90976559e384c0d80feff614a268891e4327a04f45d0f848b84267465f1a051de1b799cac0e774e233d4e3002b69dc176dc871946fc78a71e67ce6b391346264b16532fcc0a0530e43298e76d435071dfb71ccfbf79186016c9851eb07e20bbf689bb06425c28b4b0d15e6d7d6ffd79961ced7c248974c2d44ad0bb4cc0785866ac61bc11b98f59e7850f8a09f9b35e6af9630de8f2872bd0d0bf807dd98cbbbc8c5b2d94017c04084de391da8fd34c177d8bc1053298f963815e2ce2c40e8622778b12ee7dfe7e7e54feb65bf496afc68922476fc723db768224edb99456e4b972bc8552849e4e1c6ed507351b336d68b5892b258286fd15b3a7a225e0e88a04a19c11ee98a560e4edd2acb10282ebc7b2e49efd96752b734386e27a2f4a1379fd2210b577064151ea213d1e7284976c074afa147623915227c824c3303bc1d0b0243fa483fa93cd2c5a45ae57899f30ce7793d78acd039f11f453a947d5398e5a058940b00b4fd0b33c0fa0a69f75d9d36699607ce8613eebaf540086950e16efe19ebdce3d97733de37036255ff66a786c919342393201242baf39b854ca334a14f9da15f2ba26db60a8f3ad8ee7a61e40049ee78992ea0cb8abf2bac32f49c824a8c3fe9dda4af2a8d1fd5235f9a583556e2034dff53c24935183ff1e2f4731cc818bb35b306a29465e2927b8a5917c1a6a36e048c22dc5e7ed4822a10a3936d15594cdbc8344db1379ef0556af82583e4c58915d2bfde76327bf43d54d12ebdc490510bc6802b3567a58ca803797c05e26debde190f49443929c25911ab0b4cb1c4fb0ffeed2fed89db84a2f81d04d8a5107c288be4d5dd2848758a14138c7e51d0d7db81ce6acd3f6c07a3cbff2507e13ec36411dd2db89c55506f614b16ecd7e9c0611d0e4bde3fb83eb928966f6d1b79dbcf96dc21ffc88174e53b9f2c4f7c7e8deec140b1db2eb3c20596d1c2328a80813ec41281879099c2e92fa6eda77ad84c08165f016b0b8180ef2d8736c0d1cbccd2f20356b0fcc633eb9f55ba8f6f7388b166a4d21c49514fcd80661e02e313300226a5171a53cbca4ac7f90ce0b369155310456efafd00dc375950ff315406b7773d32a94ae7d571a64c60030491fc04764999a5ccf8ab1626ec516d0769e12ee40cacaea6bde2ca1b7fee0da77aa06fcd248bf538dcc32f0994a7955b53c3c01531a520069b08017a6d4fa2abb00a8e1676f3f959e94dea84ec683a099b422f96c050ce2c83014d0c90f370eda2886d298acfca2fd36ddffc852d0fc5902f4ede0c8cf8430e5d0985e15885208395c952f8806676d7399ddd7d906879f04b569d41844d506e70036a08f1d4c1d1ba7dcd7238a22967b37943f70752e4d50f485864a703988a10969ddb5c699199c0054ce6934accce07f851c84e1d23eae9a9579b762a23a45ab853f09e3df3328394a71fd25ca1d99c0d724c764180e3305fef5e282489d5edb42e67d0cb667eb39a6be53bb090ca0c3a9801fd1ecd91e1b004ebcb7217d4c7c4701db6626fb4532a2de815a1a533c85a48e168f6b7a9345078235d15eb43d607a04eaa96ab457dc182562b769bab7e568bfac3a538f7de3cf1dce0ca4cad9a64fd3dd281010403e35ad5dd7ed171397b137b4471a50afcbdf9aa07a44c9a246384113eca0c04c33080a7f6d6dfa58e79ee0fc75b741325845408726c7c900f80c8be0aa0213bc4297a1b32d71cae0d097c288096bb908ee600dee72a3a3042f43eaecea258e05127830e2f77ea116bf9291973a296ab1ea484e9971a445502ea97ed8c392c444bf27513ef328984de28b8012ce7a8bd8e409f2e93ab6bb498f2730df0e988c6c4c854497c70164962025a2eafbf4037cd25c46a9180eccbe240b682308e347ed6c281e1bc1078a20f050840eb2ace12ae29800f0b7012a73e07d34648a03df269073b6583009787134fbf9c07f579b575ffb8186e9004230f3db62b8b207523f15e5844f0cd144df92d89332e0bae46e70406568ff4db3727aa78bb97dffdf64161a2392e34b38667dfa5bbd46111bd85ac1058825d1d99a6715c889f070607151039522542c9b7f9997534c93afc75172b252c5d39d39508a714ce319f3025659808b24d20262d7bf9f8c388f407a1ef78cf104830dc0d4c8bdd2d85e53b4c011093e49879db65cce8aea52763219a40f1ed91873bc3502293680e212f78d21239f358424e228662b1d05d1724389ae9acf5a0ff07538750ebeb7235da0ce32f460db9a5e05662808c336c355c1b9801ecb51c26719a0c37ca4ccca8a9f260f13cbce654db229a62dbf68a872e3e54e5a5e7f3f40fb1a02ad893c5651c1952992b1ede0fdb1e95521183943268362fbac5eaba3d280c2f0b7ef3ead1540dc350faa6c36b30e006af547628eb99046332b9c3a75f860022b9c00bf736a0e0fc4acc9a0b4775a7ef46be844254e51deae9faa4012b300647cc172a1deec6563ce7100b0932602824761831c1ca6eb82a5f40c0b36ba23098f92c9c812300000e048f66476a7c894a7ad283766b8c5f63a8508765402908b94b159b262e41b5d9bb1bd900921d617d3253b07b72efce43e702d669cf560e5acefca7ae4ebab080d168dbef48294e90365c3bbb2f8eafb433056b1e2cef79b13b27bb84588f7500b30283c222ed35c5ff20d9bbb86d1687160a6b240c930491a88538ead4454aea1addfed1ba089793cf73b2595b5a5385408516a38bec1491d9b72c0239af83551a49deb952480d3612960152a6b0b67ecf76aeb31651b867e942ff8c709fa97dfe190b59486a47f7c001a638af35eaccaa28ff82c42cb66e580a20332dac8c0812bf845a0e97ebaff145267243e2327e6203a103c5207339669c3ed097a895a6f92045d8c4cfafd4067704b0045033d57e0a8248db7826a7c53d6efe968fad07317a9c4f3c27734e2b7cd36f870879a844cbba1d6823303d30487b0b198126d94ab60a7a16f2a39c1979bc2d44e5bf69358fee1a76e83d5ea646b310da5e205ac902d1d5aeb84cb53539c9c43d55cfe6e17bdf8e2e7c6736ca6f2bd8e13a3d34129f1331b76dd74752020b9d66a3835d7de575b044defb385bbb2505e513784742a7398d46e48114c43d09b570faa0dc9a96c843b73111078fa90496c6ca893d1356e40bf6b91a828d0b0936a65046c3710b45bea74bddc9c26609d18528b3d263cdf3ee7a3f93f24fb05b09f735f1b27bbc2da867461698c98162489183cc991330d43a8a6ddea520d24f4b7c7bef8ab65208d4ea1c05f0407415b13a5d68bb6a0851acf0d8594d36fd05dc339a7a038e1c538629dd3a80ace1eee3ae0ea910d56104a51c3b04600e5fad5e73ac463dc09c547b70c13c8c29705ce39d117004f602ed879107be600cc782070e40b71b1eb90ae14727fcd7c2d7820b4f589d25f0456960937f94effeee3280236b041271e1672cd285f8742adb210ee396b81057667d10964bac85a932045b35e85789741c82c088df0ef74e253763c4ac48cc9cb95aeaba54f39e31d581b28c68239dc5f8e0422f39ce842c71019730ed48ac035584c12a61271b37fd551699a1d50d5f9271380fc25bcd41b6aa39707d9f28007038f6975bb3dfe2c9deec2fda7a8410018cd81e1ef21abdc3416c88c8f7050edf15f2a56d0f172226620c02e985c672923b8da80ef31625736e69bea18482dd1400428bb6f885eb40673514030d5a7ee7691b93ef315d1303691833eb10806fadf0d44bd283a38f4668f1245fff0a170e7da2c53ff6a3423322baeebe674f5ccb6333893e12ed72e2a6ff7e61e6751eaf557e3e63c0d05e4910f362b1facc1a398fdfa64162731e67cc120726226849c3e34982ccb827c84341a6c769e2a0511423c065f6cc360aab51d16c013fbca62b965c56310eaa57d30357e450859e26c61d60af0153b3ddb90335332e4d35835f5d086bad99f9fc4fe74a61b5bb5690f07b26ff4cb2a10de0853f1d3c7e907a4bb2d16dbc20b4000b0060b05c0dc3e087020b5a9263544f38e8d9c41e1332c1054a706f690275d54c0c9a1def2a9728286f5a478d292c0ff145a29854b7327166e49683675bc253f0d0ee24c4128a14c08577ff1e1e567b9dd467c71cae2fb4126b50b1fd4ac41e5c52130995327c6b412ea676094ef5fdb2aac1f2f9b99eafa865490fb8718a4f2d90c488e76cc34f1943f4187eb3882e16cb3b12cfdea45e963dcf406a40947cc084419d416185527ea547cadbc7e0afc48957067920db6a0dcadee8c4bc527f16bafd67489550ccba29c44c0a11308ba3be83c17bdbd99ab82d87db24e16acfadf4826764e0d83686362b46868e5d36776ba4d94de2d1dafa5718f4648859c70377950afe1e2f7123adc51fa9da85a61c9d473ab06bc7a2168b22e4de9dcd01484ef34320b9c0b27652346a8ebb91f58c64bd731d08dd72dd2e48d825fb3a266470c3e59d20a9a12e0a3790e4bdfa501790665bb71ca1e6559ce37901241bcabb09917d702ca57f79782ab55b3c16a59833ec7ab34f77c330fff8e6813bc0665c15cbe00b8b19f6af14d8c12a3008acf01362879803bcad3d8a40e113c518ae8a390a40fce4f8aef176f371c33f642c0958c2a36d97be5f7130ca088a2a8d8fd05bb72ee09f7d36f663463462edb80f323858e1d550a55317aa215a824f9dfb86434d5c98985a80383949f71ead60a11d279e44841f62ae3b1b2043d111f79d69f505cf6fabcb933dd2aefdc39f1148482fb939b470f1784978acc8bd45ef46bb139817079df54693c7babae56e5787954359582bd949cb6714b2aa9bfabc769d1f800ccf5bbcbf151099aa5913ed454ba757d7dba566851a108a277f13b0b374e05a2078c7cf21fdfbc090bd208d1094d9f28091b8774c6b215802a7ec2316fe596f8f9caabce357bba344dd00eb5e8b29349178c692075812e141846c4ae27a487648223ab54f5d36fff47570d9cf67c7c9e210b120a5182cebde62ef927aa3d5238033182965cf7c8821c216c9ecc04fd27dca4555efe7d050092e30e2575adba1c9e7106fb70f3fe5d3dd465c2f4841686169b4b4fd9018508e1b544f48c41b5f9703636ac8ea900a7cadaf856ab530ac28e0a724ed1c13c29f1d9ba6f4b5449bc1479636bf474f8198fc7396e968480238b7e853f1b03930541aff65d3ad77e5529762ce829835dd86e1285440e8474d18dd06d4034e50d76c4e4b7e9d405aa3b9805be3aa7e282a6f2110782f2b58da3aa2d7dad20c69f4f08892fe0afd6e93888b560398c9e627ab922471fa99dad66095629b5e5505b845d667a55a840d3d763b0f360ee920db361a94f8ae589bd698cc7fd6319deb8c85355a0748ad4f5136874fedeafcee815e9bf889c5b4c40fc562e152158bf606355177cc9a5a08633996dcf21b9ad32e3a28d93e4687e6df6062b48e3a926faa11ca4da7b7ff5b61b4ecd3e9248809f3a432c954d8aab67ec8161fc8bdd8f1ad868408999447c91efe9e6816836a42777ca286c8e5fde0e2e61297985e629b3b1e774a3e174da32fa56fd5ad2c8722a070729fd4653b671fc935fdb723f4f2b93bec5e8440e153a8b1e85d4544225d7c523237ab6c0c5d3214e8df8b66cc4b383e920035228c5dfaaa0a02c95864b42555b1b7d5ca5fd6f219fbea7070b5257580f78bbd0e33a7444248c4bf1b3a1de6a220585f42c62e197b123a37c97ba8f98c85d2217611505ce63f6731b3c2c6bb38e7d3fe5a9e2ac598b1d68a18c039d2bf55700ab508bbb8138f4563ce501e8ae2a5e185640ae99cde44f0487d700f9c5c79abc5e17f73d049e4a7221d3836e9b70b201ad74b1030d46e04aca2264e1338df2b2be8cdb0942e943904d73f30cf844c537303d27bcdf628033a56af93a398e70b36621de1d147790328e270dbb6b2aaa6b1902cc40499827ce71ced45ed119309f27bccf69900ee3c6ede4c27630cef56fbc810d67873f174b2a2f76a38a9bc4cf474ba5704f0d507123c2b9378bdd23a6deebbcbbfc681497eeda6a727e82a033c1106c824c7bfe3b3c74c718438b50397e1b31e9bf6bf86bd4f757ca1927bb370e3d2464b41fa1712d2365a46f05161b351a99e1bbc5c681ec63aa98322c4f86cb4b5618338a9b60e7ed981b1232c723218304ec41e411834b5a749fde350283e45bcd2909f42b335ab4f32497febde375319a9a0d2f6d71ccb8edcc68a2f142dfb035830844349e0e445e79423e907a282b0fa85ee032e1dddca9cd5042629bc95260507e1896fb16420f39c1e4454b428166ecad92bd0c56037c58c3bd7dc319f7d651c9bd20db67f28afca4b3a881b33603c7f2cf1c6bebd9c43a7971352284a747236de35ebb0d23257c03c7e2304421210f415081c50e23bbece32b8a620ba660cb62ef9ae71f0bdd56a247ef18ddce9446f63cc4e3361254886a2ca1ecbfac83287c2c1a94f976825f031af18b224177d0cfc7d71aec9564d96511a46f04d10e1719d2342a9559bc267061762108ffa65c6bdc40f3d477ee782ff8adf31ec1a3e4106e0ef4d2649fb9ce667869de039ab2914fc67157167676e02fd98027fc2dd8ec3004d079a722b44c260516a7e8ac0520407188cf1f44864287edc151de41b1791120fbac235c458fdf9711992fa2c40b26720a393be7bdf11a3461918856edecf634b8bf8bb8b0f1368672772c6a8e609a463556d497faf3eeb0d5cd45c1e8688f60d78fc5e724b5cc0adc585134fe180d5b44027e4cbdb498da6347cfbe371f41cd28dcda42f323acd42986cd194a6c67c107a65168d5bd164b44be5006614733b18daad10b48146227447e7b7f4f6a6fb1b60e7b9f7e9d4e00f52c390a3ff472d129c5b7ad2220c048658ae501788780e2b57e8cc8a51da26d42fd8e28e39598cb05287548d89d2f7e3b5bd4d1e85dbaa754fa9b23eeb410d83734e1f986e2407c96131af1d38f03feeae4ab6fa93fd45353df5481d629a9a0d235bb3025916680817140c79007bec96bcf9b6c69fb5a40089a5d169f1e2adc04b020945cac9841b09508495b8b006f4b08cd3bec18fbff398892f0eb86f1a79531f6a8c4f70c613b119b923ebc11f240f04fe1f9c28e3f5efe13983c0bef614dd8955891aacf4b2c47e534e29e93d95616a1eeb2eca04f9b560bef57e537b0edf65b469af5e7637a1bf214474ebc619edd03fe8640232e47574148519620368ac89d13231a08ba6227473297107c5a1efd1cdea7c39910d94da3d28c0c003d8a4772f9799675a3db259251ace7c229191187b3f88f8ac80001dae558cdadd451531fc36b96f460234c721ee54fa93284664a8f501de7a0d02849dc6bd04ce6a085aad21888c714e2aacfcf718e1e45578634309dff773c8b54f3c601cf47c329a3aa55621c260e0af131043b12c066f31be12b507aa7f865ff3d32d8727326430664153aa494c547b2f85a2304d382eb870033e076b13990d3e09008d74d9818946224b2a81d2823f2bbf5125f9acf6e27db116019eb6ba0ee1c849c7027d21a669e46ace739fe0bdcad535129d3846ce172ca91ac553755f234df8e4ae862a31f36a0867cae5f9bfc174dbd0c351fb0b8e947a22d4e81063d19934a03ac1b4acbf1d00e55f778cf5798efc2a2535b9b571d43b7d470e12cba6b671d818936175d456ab775e0f6df11dd13cb1893b0dad08dff097892b123af565b9e3d4330376ed117f2504ff10477cda6d76c7866fe88e19095065b77287ca406e5baf65ef5227868fe0f84f4cccdad95de9e70c9a137670a749f70caa2335bd8c9be0e24c0a8eea31a85a1182ff3b9972de4ae408a050d6f124c2b80cd4d5ce905d524172bc00f818657e4f68a3aafca75d1db43c8e9e4a20202c31ca61e208144a5ecefdb7287feb6d9cc13357139b6ac231d215c218bb473ab19d6b2193eda8ce5b6726e4b53bbcc33a9b6e45cbca9776ef48e9acee1b36540bb34730e79ac15636e988bda73179d495828f0fdf9e11778989fa9716f2116742f1eba15386ab04fdcc38299e72d4ae4bf9f93be2384653048b56c923bb23ba6cd6a03238750f8950861ca1449ec56c50513997cf4e6280203132173de173b1236d2c30e21e9d58dd8e190018a8bcb5cc56be8c09c01fa5d723e82e1663f3426129eb4aca0a60a993135dbba23259aa2f52c4ad9d107f84ddc1480b84e3638f3f2d33bfa5e9dfe36a5a638043712a17542f6800bbe03b21f80a25809d2f12df251e0b8786d4183674c48499cc174e4d91e8429f617699d4512eec73bd467b3bb70145053c1ff7a8d709317d4ac0c69561a81fe6eec6745ea81daebd4f1b1cb1d654297a2cedbca7b8f274d626c8a031c8e915635e51e1afa5bc2a93d87a3d6cf7c64136d843b4ae097036350dc8565cc29458fbe50ae5e4712b6b29a0bd97a0207e36444d4ae430d16b27c4d20543838b06098fbe86b1dc50bc10fb0c8e34759aca88b3aa07de7688572ee510b96265b7de334e8f94df6036e043afcf2cf07e09ced926e65f3faf7ac6582fd438c863acec8183bf84dd18066cba078c9951dca70839ceb9ca0140cd7f1be9e720b4d1b36dc723417a9d7295029dad9b586921df490d453cc4f2f511799627f81316031f0158a43eb3246c649ab8d3d16df8c88add23eee2c6afe8002509451fc0796f70e21ec740de4cb4822b5c2e885ada4d7a40afc189d98eb82b5692f65e883565b7787c18df5145556b9147c418dba66716cfe2976a2fda009f42a98323a813c56f493be7c449d1c1d9cd0019236315b7c5c5d733d01b2793f44530a6ef3678864e39b35971087ce9fd86fb9f07131ba7d14af1628f4383e37d44c8abd43d33a394c177a429b7650386d1082ec938209a9c059a0640af85544d9364b2d45c03aa43a50172671610ec7416c6b4e9e234993218220d53dcf249beec86e54780fa9018d1b2e1db9d581278d2fefefef1b9f9574c6d0cdcade738c7f6eeb1cab20e8bdbd9b495d26a403cf63cd6da4889a1cb32de286d8c2e8bfb95ce75e071816a464ff95ba46bd7468b76cd15027b5bb30d40b926ecb3793c5ad6f03ca7b0a90ac4190711da9e89e5bd2ac1d44465213e50054f9cc1630d7ba91ba209f66451b7fd19730a12e076432d83b7f0399e31f58f8ff8a0bb6828656722c4dc2272869ce5b89897316d8445d32e767ecd9cbbdc4fc19d06f94f69cd7d13e63805e86eb0ca26aeedf694caa746d1a9f86b077168012813cdee52a00a24a3b594ad1e1b06084fa6732069cebfe62ae23aca768cf75b4a92210cd853a3d8a30be116f3bac1bcaa2af97548f835b399debde9834c2bc80501d5505a75ef2b3690751c4086243bac512c1757d001acea9e4ab8952d1360c7708b99b6afc89f107fe885ec7da069b3f935ed69a9fa47829638ebb1f79aa91d301a1f067e52e1f6d3dff6cfbe5076fee5971dec59007625c775d69c8449a4a31c4edd67135f227f27cd6d429cab73fea243a0f2f6dbc328045dbdab42979028698f54725a1c02618d9525855cad42a9b0aaac24801a047421b22afda29065cf500a608050a7e25dd7227421595af526b2c0005be464e4fc0e309d41b9e0d2ea150a76c34efc0f4c3de914ef0383368b5719f2df35aa514bb697154c195b71ce6ef998da84ec06d2cb2a81e161602077476f65951b6f6344829a95a74dac910e404189fd177be6e7bc38eec521cff86ed94f643712c92ea2a9e5767", - "0x3a65787472696e7369635f696e646578": "0x00000000", - "0x3e1e8e35b440038ed6e6cf14c413a1020a1f5b09efdc16f97d72eab89c1acac1": "0x8aecbcf0b404590ddddc01ebacb205a562d12fdb5c2aa6a4035c1a20f23c9515", - "0x3e1e8e35b440038ed6e6cf14c413a1022829e1f7dd845076ef31888516ff15ee": "0x003fec0b", - "0x3e1e8e35b440038ed6e6cf14c413a1024e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x3e1e8e35b440038ed6e6cf14c413a102583c8e2a2d795fcdd0a88255e8bba7ff": "0x00", - "0x3f1467a096bcd71a5b6a0c8155e20810308ce9615de0775a82f8a94dc3d285a1": "0x01", - "0x3f1467a096bcd71a5b6a0c8155e208103f2edf3bdf381debe331ab7446addfdc": "0x000064a7b3b6e00d0000000000000000", - "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x46fefe2f3b132dd55efc5cdcada84f134e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x540a4f8754aa5298a3d6e9aa09e93f974e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x3a2441e795639e09a33bf51199132d7ee10b9b67ebdb1ca30b14544c90018f7e", - "0x5f27b51b5ec208ee9cb25b55d87282434e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe380faed4eaef575446e4331b0aedf3af1258a3d7cd0171466cdaa0e615533bf37891d51589802d279537ee0ca1dcd7500e": "0x0800e1f50500a81f0b010000001b0000ac4610981cf4870300891511004eed00240000001755558eb056b757544b", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe380ff8f7c8dbf8b1ab0da6bd1d0d1f2e79920e642365c10c6ec3ea0674bde84312fb8f26b9ee76fbcad37a892cccc04004": "0x0800e1f50500a81f0b010000001b000091af1e7d0f2d4b0f00891511004eed00240000001b55154c396d4ac1434601", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe381ef923637ea66cf01bee7ea6ea08e4e87a65d30c7b3606d16af154d852bc1b47152eab5b714ccc9e6d6af4e4a364b14e": "0x0800e1f50500a81f0b010000001b0000380e3e7a8570f80300891511004eed0024000000170000da2b851f0bb454", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe382171efc85ee96dd122f3b2765b2b5d724a6e9105bbcbbe1019cfa1626a13c118e6f77912fce939fe987cbe6fd5704453": "0x0800e1f50500a81f0b010000001b00007ca00ba07dd5f00c00891511004eed00240000001b55550af80078ca111401", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe382b52ea25f22ca37f15ba4b55494747fea44eff5faefb33ab41cb98d8b6003db5ed693d302430d285c9a8e0915df5fd39": "0x0800e1f50500a81f0b0100000017000053162e86cd5a5a00891511004eed002400000017559531d78320918707", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe3831cee65b35d0b6feea23d6d6a6b35f05e8819ef00c0eb981957634ce31f2beed46e6206057485cda652d8b5664e5ab0a": "0x0800e1f50500a81f0b0100000017000077c1c9926b3c7c00891511004eed002400000017aaeac97a3b4c5e5a0a", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38328619bcd15d3a65e5828c4143340fef5408160bdfd98e298253355d60d54240413557532d97e9f297d18849c2848812": "0x0800e1f50500a81f0b010000001b000040683bb3f386f03400891511004eed00240000001b5555059eef4e94606904", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe383cf7c292560b2853cd863055849dba959affdb642e45267fe134a281638b34973d04eabf4e2e419725ee4b9e8a425978": "0x0800e1f50500a81f0b010000001b0000d8645211a0c2780100891511004eed002400000017aaaabcddc6568d651f", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe383db2a7637882267dae62ddb2296d63f21c71e0c8615d19b0f973afc04ee767138e44b546d2294eccca2e4afceb31cb70": "0x0800e1f50500a81f0b010000001b000010daceecbc213c0d00891511004eed00240000001b555581e7bb1325581a01", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe383ed3bdf051aea0dd9d324e63d2d1fe9c3c13320415f16cc3713b95c4e94bf9e8ce08c765a970e1eb7f14f5c422819b46": "0x0800e1f50500a81f0b01000000170000a29f07f2d3eff000891511004eed00240000001700804d4d2b54fc1314", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38405d66e8362d05d2279a7f60ba93a27a867ae1095c920bb339b570004ac97121c989fdbdd3db3965908279b7c5724b49": "0x0800e1f50500a81f0b010000001700000e6644a594a3a500891511004eed0024000000170080d65d70b8a1cd0d", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe3844d05c4c59c44805473b81294dc5feee4c6358a29ce86cd404342787dd9e823e1da6a82cd0bcc74f286d44b7663f2e2e": "0x0800e1f50500a81f0b010000001b000080d07666e70de16900891511004eed00240000001baaaa0a3cdf9d28c1d208", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe384755a560a6e7b022fde2ce4ccef2243c18e828e85cebd4c7684e15d2e1e0d0699b243f76ed457d22895cc48f3e3b8c35": "0x0800e1f50500a81f0b010000001b0000ed9b8c4313bfc30100891511004eed00240000001700c05362f69a41a525", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe3847d1e019255f155b1661cbc344650b32549b096144124726bba7b5f3518ae1229740be100646ff0e4c28c340bcb80239": "0x0800e1f50500a81f0b010000001b0000b0ce36beebfa0e0a00891511004eed0024000000175555399184fae894d6", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe3847f82480a4b98fd0aeeccb69bab9cf45c450cc0c6b232c68082436ccb0643ba45b6de77b2e5abc4a416aa7ea282ec131": "0x0800e1f50500a81f0b010000001b0000bcc471b5f478470700891511004eed0024000000175555ba257464144a9b", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38575c2ebe0e2e82acfe7764d89a8b379c302267ef0b206915c96f39d81ae769ac11637665be9e014e4898fbbf5db92f31": "0x0800e1f50500a81f0b010000001b0000fc3f17a658fadd1100891511004eed00240000001b00005545d70d322a7d01", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe385e52e5fc69d19c5249999ceb9ff179aaccd886be975fbb469f788aceac28cd295b7fa0e5c691b8e3fd780fdae59aa144": "0x0800e1f50500a81f0b010000001b0000824fa169df67091e00891511004eed00240000001b0080f51b78f3a7c88002", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe3871e68bb6be54305b43fb93f16a9e922d8912d71a1cbb7efc012ca9c4cd6b7300cddb39d77f088d91924891531c5421ca": "0x0800e1f50500a81f0b010000001b000097774cdfa2d5830500891511004eed0024000000170040f709f1e722a775", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe387ca5649b924e4f7bc893244ea7d7289ddb5c859a44555a3852007f4778184309f12a02a22276c37decd753ed5f23e56e": "0x0800e1f50500a81f0b010000001700007ae81442547cbb00891511004eed00240000001755d5b4682cb0b19f0f", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe388267d571cd2043eb6efb3c65987bf59adea39270c911c627c2bd87dd8d7f9665a262535de29d894d9a8347137fb8f237": "0x0800e1f50500a81f0b01000000170000099717993a2d8d00891511004eed0024000000175515964c17e2c4c30b", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe3889730c255c6a693ed024ae6ca098b117a8be9e9b93257140edda73958d7cd2c49ef796845cc8be9f56ea0829f413ee1e": "0x0800e1f50500a81f0b0100000017000017c2c5cbb5df8100891511004eed00240000001755952cd0a57ba4d20a", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe388c55579a256cc8aa3de388477e3c2f10aeea4fcb658f17b2c6cd1fce911866307e614dd49c7324eb9ca193ae037d9c0a": "0x0800e1f50500a81f0b010000001b0000c2508360669c430900891511004eed00240000001755d5ba4660dd5da2c5", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe389263431d73699db702329a3fa227caec2e28436ce437f5f6705fade3f5986811bbe50fc6a78fc7cc3896d5a09a142941": "0x0800e1f50500a81f0b01000000170000d1adcd6d690aa900891511004eed002400000017aa6ad123d17333160e", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38b2611eca3c4d08d1f96a367f02e7ef421ab54e6f4b40816fe44de8fe8933fae4cbf7239428e080e6fbd92dd6c6bdcb2c": "0x0800e1f50500a81f0b010000001b0000d8645211a0c2780100891511004eed002400000017aaaabcddc6568d651f", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38b2790bdc65df4f43cd1fa30327e0e4616262eae57cdf41aec44acc93f416bfdbb6d8a1430ba19b779ae5c98d6b7df870": "0x0800e1f50500a81f0b010000001b00003b4dff244be9ac0300891511004eed00240000001755956f461543c6684e", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38b6ec98437c6aeb030233efded28ca4eeb621672f0d8be43b4dcd16aa2aa034db3fe3212b9f46fbfc26668426f9510a65": "0x0800e1f50500a81f0b010000001b0000bcca3b6902dee00800891511004eed002400000017aaaa8ffbc488d567bd", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38bca32e4c2881d806c76954996916e56540cb8e75a9a1e766c8a6b551b635e513a16cbb8f4d9aa13936254166e4de4018": "0x0800e1f50500a81f0b010000001b0000c0a805aba81c4b1700891511004eed00240000001baaaaba78400e0eedf001", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38bd8f48d51b9726ca4bc2073ac23559d59ac654f1421b1c97b2380e08e297bd16281bdc486be24d970b9a5804e37b606d": "0x0800e1f50500a81f0b010000001700009b9d3b827fdaf400891511004eed002400000017559577a22fa08a6714", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38c6468891467af33e5ed0b214c64a254514780e5747055d126e0d809b1f504def7e67f14c6256012ff2a4965f5b95661e": "0x0800e1f50500a81f0b010000001b0000a0bd52f8b1404b0500891511004eed0024000000175555cd8fb1d40ef070", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38d8e3f5f6e0e7467fb94c6f63e03209d588a7d9e994528a48574fef4fbb9b731976760ca7a97358a38734c2ef04475909": "0x0800e1f50500a81f0b010000001b0000ef462c64b8d5e10500891511004eed0024000000170040e90559087a7c7d", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38daf780801663f5988ea2f39ab617da297a8c2df3c7945888b20fcfc570c45c7db18e20c9fe57b66b0071bcbbfde10e60": "0x0800e1f50500a81f0b010000001700003d9640acaa2b2d00891511004eed00240000001700c02fb75a8ea3c303", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38ddde0c79d5570b8684a0379815fb60c6127661e3abe3f347aa88bf2cf09545f387f03438e8ef778fe0adf3bfc61c395c": "0x0800e1f50500a81f0b010000001b00009e12b3d70c2a2d0100891511004eed00240000001755d537ec4e67d61819", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38e10702f089fdce41f89785cdc64bde8dd46827949a45e460ad655510b58be8a03079eea740ab57f3cd8adade1de78935": "0x0800e1f50500a81f0b010000001b0000ed9b8c4313bfc30100891511004eed00240000001700c05362f69a41a525", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38ea7d4c5edeed232ba55a698373b8749c146459b6f23d9ffa4876ba11293be2dc849cef7d5aad3c583a5526764dd47a54": "0x0800e1f50500a81f0b010000001b0000903e44807e55781100891511004eed00240000001b00008c5ab08acab17401", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38ed8dc744f3fa96cc08a0e88c2ec81438a02fe19c7b04359086a7753e0ffb918f3b8bdbdba1ef0db8fdd50f42e14e202c": "0x0800e1f50500a81f0b010000001b0000a0bd52f8b1404b0500891511004eed0024000000175555cd8fb1d40ef070", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38efe1dce87a8138c87a9755a192d55aee4e448bf0f6c08e0443fd318476062713c3b84e1f0d3558206777991441ed0a1c": "0x0800e1f50500a81f0b010000001b0000407ba5f06381960a00891511004eed002400000017aaaa9a1f63a91de0e1", - "0x5f27b51b5ec208ee9cb25b55d87282439c806850c4ee3bc06ba62b096318fe38f2300b6e4e4a41213463d1870331bc97b089c0020178b1025ab79018dbf442db463aea6b55feaee7c8500e6373a40c3a": "0x0800e1f50500a81f0b010000001b0000a0863d1f35a8c30d00891511004eed00240000001baaaae2759ac259a32501", - "0x7396903df85f816e40b96a10626866ac01ac5250fa7bfe35783a9fe1889d6309": "0x00", - "0x7396903df85f816e40b96a10626866ac0eadc3147dc36f12179c6b3a86499a9f": "0x01", - "0x7396903df85f816e40b96a10626866ac29901cd0cadb6e01a632fba13103515f": "0x00", - "0x7396903df85f816e40b96a10626866ac4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x7396903df85f816e40b96a10626866ac94cd478e543402c40b2bae3ae4be4653": "0x00", - "0x7396903df85f816e40b96a10626866ace61eaec3ce42854f2a62e7b6487718e2": "0x64000000", - "0x86d14ebdcabe8f22d507b904cd78e9494e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xa8c65209d47ee80f56b0011e8fd91f504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xb1598ed2e9f28fa2e985f81fabce8e1b4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc60faed4eaef575446e4331b0aedf3af1258a3d7cd0171466cdaa0e615533bf37891d51589802d279537ee0ca1dcd7500e": "0x046f726d6c76657374f4ffaf1a416072d01f0e00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc60ff8f7c8dbf8b1ab0da6bd1d0d1f2e79920e642365c10c6ec3ea0674bde84312fb8f26b9ee76fbcad37a892cccc04004": "0x046f726d6c76657374f4ff43be7af43db42c3d00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc61ef923637ea66cf01bee7ea6ea08e4e87a65d30c7b3606d16af154d852bc1b47152eab5b714ccc9e6d6af4e4a364b14e": "0x046f726d6c766573740000e038f8e815c2e10f00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc62171efc85ee96dd122f3b2765b2b5d724a6e9105bbcbbe1019cfa1626a13c118e6f77912fce939fe987cbe6fd5704453": "0x046f726d6c76657374f4ffef812e80f655c33300000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc62b52ea25f22ca37f15ba4b55494747fea44eff5faefb33ab41cb98d8b6003db5ed693d302430d285c9a8e0915df5fd39": "0x046f726d6c76657374f4ff4b59b818366b690100000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc631cee65b35d0b6feea23d6d6a6b35f05e8819ef00c0eb981957634ce31f2beed46e6206057485cda652d8b5664e5ab0a": "0x046f726d6c76657374e8ffdb05274baef1f00100000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6328619bcd15d3a65e5828c4143340fef5408160bdfd98e298253355d60d54240413557532d97e9f297d18849c2848812": "0x046f726d6c76657374f4ffffa0edccce1bc2d300000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc63cf7c292560b2853cd863055849dba959affdb642e45267fe134a281638b34973d04eabf4e2e419725ee4b9e8a425978": "0x046f726d6c76657374e8ff5f934945800ae30500000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc63db2a7637882267dae62ddb2296d63f21c71e0c8615d19b0f973afc04ee767138e44b546d2294eccca2e4afceb31cb70": "0x046f726d6c76657374f4ff3f683bb3f386f03400000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc63ed3bdf051aea0dd9d324e63d2d1fe9c3c13320415f16cc3713b95c4e94bf9e8ce08c765a970e1eb7f14f5c422819b46": "0x046f726d6c766573740000887e1ec84fbfc30300000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6405d66e8362d05d2279a7f60ba93a27a867ae1095c920bb339b570004ac97121c989fdbdd3db3965908279b7c5724b49": "0x046f726d6c76657374000038981195528e960200000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc644d05c4c59c44805473b81294dc5feee4c6358a29ce86cd404342787dd9e823e1da6a82cd0bcc74f286d44b7663f2e2e": "0x046f726d6c76657374e8ffff41db999d3784a701000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc64755a560a6e7b022fde2ce4ccef2243c18e828e85cebd4c7684e15d2e1e0d0699b243f76ed457d22895cc48f3e3b8c35": "0x046f726d6c766573740000b46f320e4dfc0e0700000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc647d1e019255f155b1661cbc344650b32549b096144124726bba7b5f3518ae1229740be100646ff0e4c28c340bcb80239": "0x046f726d6c76657374f4ffbf3adbf8aeeb3b2800000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc647f82480a4b98fd0aeeccb69bab9cf45c450cc0c6b232c68082436ccb0643ba45b6de77b2e5abc4a416aa7ea282ec131": "0x046f726d6c76657374f4ffef12c7d5d2e31d1d00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6575c2ebe0e2e82acfe7764d89a8b379c302267ef0b206915c96f39d81ae769ac11637665be9e014e4898fbbf5db92f31": "0x046f726d6c766573740000f0ff5c9862e9774700000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc65e52e5fc69d19c5249999ceb9ff179aaccd886be975fbb469f788aceac28cd295b7fa0e5c691b8e3fd780fdae59aa144": "0x046f726d6c766573740000083e85a67d9f257800000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc671e68bb6be54305b43fb93f16a9e922d8912d71a1cbb7efc012ca9c4cd6b7300cddb39d77f088d91924891531c5421ca": "0x046f726d6c7665737400005cde317d8b560f1600000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc67ca5649b924e4f7bc893244ea7d7289ddb5c859a44555a3852007f4778184309f12a02a22276c37decd753ed5f23e56e": "0x046f726d6c76657374f4ffe7a1530851f1ed0200000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc68267d571cd2043eb6efb3c65987bf59adea39270c911c627c2bd87dd8d7f9665a262535de29d894d9a8347137fb8f237": "0x046f726d6c76657374f4ff235c5e64eab4340200000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc689730c255c6a693ed024ae6ca098b117a8be9e9b93257140edda73958d7cd2c49ef796845cc8be9f56ea0829f413ee1e": "0x046f726d6c76657374f4ff5b08172fd77e070200000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc68c55579a256cc8aa3de388477e3c2f10aeea4fcb658f17b2c6cd1fce911866307e614dd49c7324eb9ca193ae037d9c0a": "0x046f726d6c76657374f4ff07430d8299710e2500000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc69263431d73699db702329a3fa227caec2e28436ce437f5f6705fade3f5986811bbe50fc6a78fc7cc3896d5a09a142941": "0x046f726d6c76657374e8ff43b736b7a529a40200000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6b2611eca3c4d08d1f96a367f02e7ef421ab54e6f4b40816fe44de8fe8933fae4cbf7239428e080e6fbd92dd6c6bdcb2c": "0x046f726d6c76657374e8ff5f934945800ae30500000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6b2790bdc65df4f43cd1fa30327e0e4616262eae57cdf41aec44acc93f416bfdbb6d8a1430ba19b779ae5c98d6b7df870": "0x046f726d6c76657374f4ffeb34fd932ca5b30e00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6b6ec98437c6aeb030233efded28ca4eeb621672f0d8be43b4dcd16aa2aa034db3fe3212b9f46fbfc26668426f9510a65": "0x046f726d6c76657374e8ffef2aefa40978832300000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6bca32e4c2881d806c76954996916e56540cb8e75a9a1e766c8a6b551b635e513a16cbb8f4d9aa13936254166e4de4018": "0x046f726d6c76657374e8ffffa216aca2722c5d00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6bd8f48d51b9726ca4bc2073ac23559d59ac654f1421b1c97b2380e08e297bd16281bdc486be24d970b9a5804e37b606d": "0x046f726d6c76657374f4ff6b76ee08fe69d30300000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6c6468891467af33e5ed0b214c64a254514780e5747055d126e0d809b1f504def7e67f14c6256012ff2a4965f5b95661e": "0x046f726d6c76657374f4ff7ff64ae1c7022d1500000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6d8e3f5f6e0e7467fb94c6f63e03209d588a7d9e994528a48574fef4fbb9b731976760ca7a97358a38734c2ef04475909": "0x046f726d6c766573740000bc1bb190e156871700000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6daf780801663f5988ea2f39ab617da297a8c2df3c7945888b20fcfc570c45c7db18e20c9fe57b66b0071bcbbfde10e60": "0x046f726d6c766573740000f45802b1aaaeb40000000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6ddde0c79d5570b8684a0379815fb60c6127661e3abe3f347aa88bf2cf09545f387f03438e8ef778fe0adf3bfc61c395c": "0x046f726d6c76657374f4ff774acc5e33a8b40400000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6e10702f089fdce41f89785cdc64bde8dd46827949a45e460ad655510b58be8a03079eea740ab57f3cd8adade1de78935": "0x046f726d6c766573740000b46f320e4dfc0e0700000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6ea7d4c5edeed232ba55a698373b8749c146459b6f23d9ffa4876ba11293be2dc849cef7d5aad3c583a5526764dd47a54": "0x046f726d6c76657374000040fa1001fa55e14500000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6ed8dc744f3fa96cc08a0e88c2ec81438a02fe19c7b04359086a7753e0ffb918f3b8bdbdba1ef0db8fdd50f42e14e202c": "0x046f726d6c76657374f4ff7ff64ae1c7022d1500000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6efe1dce87a8138c87a9755a192d55aee4e448bf0f6c08e0443fd318476062713c3b84e1f0d3558206777991441ed0a1c": "0x046f726d6c76657374e8ffffec95c28f055a2a00000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f218f26c73add634897550b4003b26bc6f2300b6e4e4a41213463d1870331bc97b089c0020178b1025ab79018dbf442db463aea6b55feaee7c8500e6373a40c3a": "0x046f726d6c76657374e8ff7f1af67cd4a00e3700000000000002", - "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", - "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x00009ccb1bdfcb7da62e060000000000", - "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xebad2dde00469f10ee456ffd8609d2824e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000" - }, - "childrenDefault": {} - } - } -} diff --git a/crates/sc-subspace-chain-specs/src/lib.rs b/crates/sc-subspace-chain-specs/src/lib.rs index 6e67fd2bed..9be7466fcf 100644 --- a/crates/sc-subspace-chain-specs/src/lib.rs +++ b/crates/sc-subspace-chain-specs/src/lib.rs @@ -18,5 +18,3 @@ /// Devnet chain spec pub const DEVNET_CHAIN_SPEC: &str = include_str!("../res/chain-spec-raw-devnet.json"); -/// Gemini 3h chain spec -pub const GEMINI_3H_CHAIN_SPEC: &str = include_str!("../res/chain-spec-raw-gemini-3h.json"); diff --git a/crates/sp-consensus-subspace/Cargo.toml b/crates/sp-consensus-subspace/Cargo.toml index 767932f92c..4bc2ac90e4 100644 --- a/crates/sp-consensus-subspace/Cargo.toml +++ b/crates/sp-consensus-subspace/Cargo.toml @@ -13,26 +13,26 @@ readme = "README.md" targets = ["x86_64-unknown-linux-gnu"] [dependencies] -async-trait = { version = "0.1.81", optional = true } +async-trait = { version = "0.1.83", optional = true } codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false } log = { version = "0.4.22", default-features = false } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } schnorrkel = { version = "0.11.4", default-features = false } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-application-crypto = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-externalities = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-io = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime-interface = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-application-crypto = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-externalities = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-io = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime-interface = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives", default-features = false } subspace-proof-of-space = { version = "0.1.0", path = "../subspace-proof-of-space", default-features = false } subspace-verification = { version = "0.1.0", path = "../subspace-verification", default-features = false } -thiserror = { version = "1.0.63", optional = true } +thiserror = { version = "1.0.64", optional = true } [features] default = ["std"] diff --git a/crates/sp-consensus-subspace/src/digests.rs b/crates/sp-consensus-subspace/src/digests.rs index 28492965d2..d34cd0955b 100644 --- a/crates/sp-consensus-subspace/src/digests.rs +++ b/crates/sp-consensus-subspace/src/digests.rs @@ -16,39 +16,36 @@ //! Private implementation details of Subspace consensus digests. -use crate::{ - ConsensusLog, FarmerPublicKey, FarmerSignature, PotParametersChange, SUBSPACE_ENGINE_ID, -}; +use crate::{ConsensusLog, PotParametersChange, SUBSPACE_ENGINE_ID}; use codec::{Decode, Encode}; use log::trace; use sp_consensus_slots::Slot; -use sp_core::crypto::UncheckedFrom; use sp_runtime::traits::{Header as HeaderT, One, Zero}; use sp_runtime::DigestItem; use sp_std::collections::btree_map::{BTreeMap, Entry}; use sp_std::fmt; use sp_std::num::NonZeroU32; -use subspace_core_primitives::{ - PotOutput, SegmentCommitment, SegmentIndex, Solution, SolutionRange, -}; +use subspace_core_primitives::pot::PotOutput; +use subspace_core_primitives::segments::{SegmentCommitment, SegmentIndex}; +use subspace_core_primitives::{PublicKey, RewardSignature, Solution, SolutionRange}; /// A Subspace pre-runtime digest. This contains all data required to validate a block and for the /// Subspace runtime module. #[derive(Debug, Clone, Encode, Decode)] -pub enum PreDigest { +pub enum PreDigest { /// Initial version of the pre-digest #[codec(index = 0)] V0 { /// Slot slot: Slot, /// Solution (includes PoR) - solution: Solution, + solution: Solution, /// Proof of time information pot_info: PreDigestPotInfo, }, } -impl PreDigest { +impl PreDigest { /// Slot #[inline] pub fn slot(&self) -> Slot { @@ -58,7 +55,7 @@ impl PreDigest { /// Solution (includes PoR) #[inline] - pub fn solution(&self) -> &Solution { + pub fn solution(&self) -> &Solution { let Self::V0 { solution, .. } = self; solution } @@ -106,20 +103,16 @@ impl PreDigestPotInfo { /// A digest item which is usable with Subspace consensus. pub trait CompatibleDigestItem: Sized { /// Construct a digest item which contains a Subspace pre-digest. - fn subspace_pre_digest( - pre_digest: &PreDigest, - ) -> Self; + fn subspace_pre_digest(pre_digest: &PreDigest) -> Self; /// If this item is an Subspace pre-digest, return it. - fn as_subspace_pre_digest( - &self, - ) -> Option>; + fn as_subspace_pre_digest(&self) -> Option>; /// Construct a digest item which contains a Subspace seal. - fn subspace_seal(signature: FarmerSignature) -> Self; + fn subspace_seal(signature: RewardSignature) -> Self; /// If this item is a Subspace signature, return the signature. - fn as_subspace_seal(&self) -> Option; + fn as_subspace_seal(&self) -> Option; /// Number of iterations for proof of time per slot, corresponds to slot that directly follows /// parent block's slot and can change before slot for which block is produced @@ -166,30 +159,26 @@ pub trait CompatibleDigestItem: Sized { fn as_enable_solution_range_adjustment_and_override(&self) -> Option>; /// Construct digest item that indicates update of root plot public key. - fn root_plot_public_key_update(root_plot_public_key: Option) -> Self; + fn root_plot_public_key_update(root_plot_public_key: Option) -> Self; /// If this item is a Subspace update of root plot public key, return it. - fn as_root_plot_public_key_update(&self) -> Option>; + fn as_root_plot_public_key_update(&self) -> Option>; } impl CompatibleDigestItem for DigestItem { - fn subspace_pre_digest( - pre_digest: &PreDigest, - ) -> Self { + fn subspace_pre_digest(pre_digest: &PreDigest) -> Self { Self::PreRuntime(SUBSPACE_ENGINE_ID, pre_digest.encode()) } - fn as_subspace_pre_digest( - &self, - ) -> Option> { + fn as_subspace_pre_digest(&self) -> Option> { self.pre_runtime_try_to(&SUBSPACE_ENGINE_ID) } - fn subspace_seal(signature: FarmerSignature) -> Self { + fn subspace_seal(signature: RewardSignature) -> Self { Self::Seal(SUBSPACE_ENGINE_ID, signature.encode()) } - fn as_subspace_seal(&self) -> Option { + fn as_subspace_seal(&self) -> Option { self.seal_try_to(&SUBSPACE_ENGINE_ID) } @@ -304,14 +293,14 @@ impl CompatibleDigestItem for DigestItem { }) } - fn root_plot_public_key_update(root_plot_public_key: Option) -> Self { + fn root_plot_public_key_update(root_plot_public_key: Option) -> Self { Self::Consensus( SUBSPACE_ENGINE_ID, ConsensusLog::RootPlotPublicKeyUpdate(root_plot_public_key).encode(), ) } - fn as_root_plot_public_key_update(&self) -> Option> { + fn as_root_plot_public_key_update(&self) -> Option> { self.consensus_try_to(&SUBSPACE_ENGINE_ID).and_then(|c| { if let ConsensusLog::RootPlotPublicKeyUpdate(root_plot_public_key) = c { Some(root_plot_public_key) @@ -429,11 +418,11 @@ impl From for String { /// Digest items extracted from a header into convenient form #[derive(Debug)] -pub struct SubspaceDigestItems { +pub struct SubspaceDigestItems { /// Pre-runtime digest - pub pre_digest: PreDigest, + pub pre_digest: PreDigest, /// Signature (seal) if present - pub signature: Option, + pub signature: Option, /// Number of iterations for proof of time per slot, corresponds to slot that directly follows /// parent block's slot and can change before slot for which block is produced pub pot_slot_iterations: NonZeroU32, @@ -448,18 +437,16 @@ pub struct SubspaceDigestItems { /// Enable solution range adjustment and Override solution range pub enable_solution_range_adjustment_and_override: Option>, /// Root plot public key was updated - pub root_plot_public_key_update: Option>, + pub root_plot_public_key_update: Option>, } /// Extract the Subspace global randomness from the given header. -pub fn extract_subspace_digest_items( +pub fn extract_subspace_digest_items( header: &Header, -) -> Result, Error> +) -> Result, Error> where Header: HeaderT, - PublicKey: Decode, RewardAddress: Decode, - Signature: Decode, { let mut maybe_pre_digest = None; let mut maybe_seal = None; @@ -478,10 +465,8 @@ where continue; } - let pre_digest = PreDigest::::decode( - &mut data.as_slice(), - ) - .map_err(|error| Error::FailedToDecode(ErrorDigestType::PreDigest, error))?; + let pre_digest = PreDigest::::decode(&mut data.as_slice()) + .map_err(|error| Error::FailedToDecode(ErrorDigestType::PreDigest, error))?; match maybe_pre_digest { Some(_) => { @@ -579,7 +564,7 @@ where continue; } - let seal = Signature::decode(&mut data.as_slice()) + let seal = RewardSignature::decode(&mut data.as_slice()) .map_err(|error| Error::FailedToDecode(ErrorDigestType::Seal, error))?; match maybe_seal { @@ -617,9 +602,7 @@ where /// Extract the Subspace pre digest from the given header. Pre-runtime digests are mandatory, the /// function will return `Err` if none is found. -pub fn extract_pre_digest
( - header: &Header, -) -> Result, Error> +pub fn extract_pre_digest
(header: &Header) -> Result, Error> where Header: HeaderT, { @@ -629,8 +612,8 @@ where return Ok(PreDigest::V0 { slot: Slot::from(0), solution: Solution::genesis_solution( - FarmerPublicKey::unchecked_from([0u8; 32]), - FarmerPublicKey::unchecked_from([0u8; 32]), + PublicKey::from([0u8; 32]), + PublicKey::from([0u8; 32]), ), pot_info: PreDigestPotInfo::V0 { proof_of_time: Default::default(), @@ -718,7 +701,7 @@ pub struct NextDigestsVerificationParams<'a, Header: HeaderT> { /// Header number for which we are verifying the digests. pub number: NumberOf
, /// Digests present in the header that corresponds to number above. - pub header_digests: &'a SubspaceDigestItems, + pub header_digests: &'a SubspaceDigestItems, /// Era duration at which solution range is updated. pub era_duration: NumberOf
, /// Slot probability. @@ -733,7 +716,7 @@ pub struct NextDigestsVerificationParams<'a, Header: HeaderT> { pub maybe_next_solution_range_override: &'a mut Option, /// Root plot public key. /// Value is updated when digest items contain an update. - pub maybe_root_plot_public_key: &'a mut Option, + pub maybe_root_plot_public_key: &'a mut Option, } /// Derives and verifies next digest items based on their respective intervals. @@ -793,15 +776,15 @@ pub fn verify_next_digests( )); } - if let Some(updated_root_plot_public_key) = &header_digests.root_plot_public_key_update { + if let Some(updated_root_plot_public_key) = header_digests.root_plot_public_key_update { match updated_root_plot_public_key { Some(updated_root_plot_public_key) => { if number.is_one() && root_plot_public_key.is_none() - && &header_digests.pre_digest.solution().public_key + && header_digests.pre_digest.solution().public_key == updated_root_plot_public_key { - root_plot_public_key.replace(updated_root_plot_public_key.clone()); + root_plot_public_key.replace(updated_root_plot_public_key); } else { return Err(Error::NextDigestVerificationError( ErrorDigestType::RootPlotPublicKeyUpdate, diff --git a/crates/sp-consensus-subspace/src/inherents.rs b/crates/sp-consensus-subspace/src/inherents.rs index 6ebff30eb8..402f3b4550 100644 --- a/crates/sp-consensus-subspace/src/inherents.rs +++ b/crates/sp-consensus-subspace/src/inherents.rs @@ -22,9 +22,8 @@ extern crate alloc; #[cfg(not(feature = "std"))] use alloc::vec::Vec; use codec::{Decode, Encode}; -use sp_consensus_slots::Slot; use sp_inherents::{Error, InherentData, InherentIdentifier, IsFatalError}; -use subspace_core_primitives::SegmentHeader; +use subspace_core_primitives::segments::SegmentHeader; /// The Subspace inherent identifier. pub const INHERENT_IDENTIFIER: InherentIdentifier = *b"subspace"; @@ -53,9 +52,6 @@ impl IsFatalError for InherentError { /// The type of the Subspace inherent data. #[derive(Debug, Encode, Decode)] pub struct InherentType { - /// Slot at which block was created. - // TODO: Remove slot when breaking protocol and probably change the whole data structure to an enum - slot: Slot, /// Segment headers expected to be included in the block. pub segment_headers: Vec, } @@ -90,11 +86,7 @@ impl InherentDataProvider { /// Create new inherent data provider from the given `segment_headers`. pub fn new(segment_headers: Vec) -> Self { Self { - data: InherentType { - // TODO: Remove slot when breaking protocol - slot: Default::default(), - segment_headers, - }, + data: InherentType { segment_headers }, } } diff --git a/crates/sp-consensus-subspace/src/lib.rs b/crates/sp-consensus-subspace/src/lib.rs index fa1c79cd09..b831f402fa 100644 --- a/crates/sp-consensus-subspace/src/lib.rs +++ b/crates/sp-consensus-subspace/src/lib.rs @@ -24,11 +24,7 @@ extern crate alloc; pub mod digests; pub mod inherents; -pub mod offence; -#[cfg(test)] -mod tests; -use crate::digests::{CompatibleDigestItem, PreDigest}; use alloc::borrow::Cow; #[cfg(not(feature = "std"))] use alloc::string::String; @@ -37,7 +33,6 @@ use alloc::vec::Vec; use codec::{Decode, Encode, MaxEncodedLen}; use scale_info::TypeInfo; use sp_consensus_slots::{Slot, SlotDuration}; -use sp_core::crypto::KeyTypeId; use sp_core::H256; use sp_io::hashing; use sp_runtime::traits::{Block as BlockT, Header as HeaderT}; @@ -47,10 +42,13 @@ use sp_runtime_interface::{pass_by, runtime_interface}; use sp_std::num::NonZeroU32; #[cfg(feature = "std")] use subspace_core_primitives::crypto::kzg::Kzg; +use subspace_core_primitives::pot::{PotCheckpoints, PotOutput, PotSeed}; +use subspace_core_primitives::segments::{ + HistorySize, SegmentCommitment, SegmentHeader, SegmentIndex, +}; use subspace_core_primitives::{ - Blake3Hash, BlockHash, BlockNumber, HistorySize, PotCheckpoints, PotOutput, PotSeed, PublicKey, - RewardSignature, SegmentCommitment, SegmentHeader, SegmentIndex, SlotNumber, Solution, - SolutionRange, PUBLIC_KEY_LENGTH, REWARD_SIGNATURE_LENGTH, REWARD_SIGNING_CONTEXT, + Blake3Hash, BlockHash, BlockNumber, PublicKey, RewardSignature, SlotNumber, Solution, + SolutionRange, }; #[cfg(feature = "std")] use subspace_proof_of_space::chia::ChiaTable; @@ -60,45 +58,7 @@ use subspace_proof_of_space::shim::ShimTable; use subspace_proof_of_space::PosTableType; #[cfg(feature = "std")] use subspace_proof_of_space::Table; -use subspace_verification::{check_reward_signature, VerifySolutionParams}; - -/// Key type for Subspace pallet. -const KEY_TYPE: KeyTypeId = KeyTypeId(*b"sub_"); - -// TODO: Remove this and replace with simple encodable wrappers of Schnorrkel's types -mod app { - use super::KEY_TYPE; - use sp_application_crypto::{app_crypto, sr25519}; - - app_crypto!(sr25519, KEY_TYPE); -} - -/// A Subspace farmer signature. -pub type FarmerSignature = app::Signature; - -impl From<&FarmerSignature> for RewardSignature { - #[inline] - fn from(signature: &FarmerSignature) -> Self { - RewardSignature::from( - TryInto::<[u8; REWARD_SIGNATURE_LENGTH]>::try_into(AsRef::<[u8]>::as_ref(signature)) - .expect("Always correct length; qed"), - ) - } -} - -/// A Subspace farmer identifier. Necessarily equivalent to the schnorrkel public key used in -/// the main Subspace module. If that ever changes, then this must, too. -pub type FarmerPublicKey = app::Public; - -impl From<&FarmerPublicKey> for PublicKey { - #[inline] - fn from(pub_key: &FarmerPublicKey) -> Self { - PublicKey::from( - TryInto::<[u8; PUBLIC_KEY_LENGTH]>::try_into(AsRef::<[u8]>::as_ref(pub_key)) - .expect("Always correct length; qed"), - ) - } -} +use subspace_verification::VerifySolutionParams; /// The `ConsensusEngineId` of Subspace. const SUBSPACE_ENGINE_ID: ConsensusEngineId = *b"SUB_"; @@ -143,9 +103,6 @@ impl SubspaceJustification { } } -/// An equivocation proof for multiple block authorships on the same slot (i.e. double vote). -pub type EquivocationProof
= sp_consensus_slots::EquivocationProof; - /// Next slot input for proof of time evaluation #[derive(Debug, Copy, Clone, PartialEq, Eq, Decode, Encode, TypeInfo, MaxEncodedLen)] pub struct PotNextSlotInput { @@ -205,7 +162,6 @@ pub struct PotParametersChange { /// New number of slot iterations pub slot_iterations: NonZeroU32, /// Entropy that should be injected at this time - // TODO: Reconsider if the type is correct here pub entropy: Blake3Hash, } @@ -233,7 +189,7 @@ enum ConsensusLog { EnableSolutionRangeAdjustmentAndOverride(Option), /// Root plot public key was updated. #[codec(index = 6)] - RootPlotPublicKeyUpdate(Option), + RootPlotPublicKeyUpdate(Option), } /// Farmer vote. @@ -250,7 +206,7 @@ pub enum Vote { /// Slot at which vote was created. slot: Slot, /// Solution (includes PoR). - solution: Solution, + solution: Solution, /// Proof of time for this slot proof_of_time: PotOutput, /// Future proof of time @@ -265,7 +221,7 @@ where RewardAddress: Encode, { /// Solution contained within. - pub fn solution(&self) -> &Solution { + pub fn solution(&self) -> &Solution { let Self::V0 { solution, .. } = self; solution } @@ -288,96 +244,7 @@ pub struct SignedVote { /// Farmer vote. pub vote: Vote, /// Signature. - pub signature: FarmerSignature, -} - -fn find_pre_digest( - header: &Header, -) -> Option> -where - Header: HeaderT, - RewardAddress: Decode, -{ - header - .digest() - .logs() - .iter() - .find_map(|log| log.as_subspace_pre_digest()) -} - -fn is_seal_signature_valid
(mut header: Header, offender: &FarmerPublicKey) -> bool -where - Header: HeaderT, -{ - let seal = match header.digest_mut().pop() { - Some(seal) => seal, - None => { - return false; - } - }; - let seal = match seal.as_subspace_seal() { - Some(seal) => seal, - None => { - return false; - } - }; - let pre_hash = header.hash(); - - check_reward_signature( - pre_hash.as_ref(), - &RewardSignature::from(&seal), - &PublicKey::from(offender), - &schnorrkel::signing_context(REWARD_SIGNING_CONTEXT), - ) - .is_ok() -} - -/// Verifies the equivocation proof by making sure that: both headers have -/// different hashes, are targeting the same slot, and have valid signatures by -/// the same authority. -pub fn is_equivocation_proof_valid(proof: &EquivocationProof
) -> bool -where - Header: HeaderT, - RewardAddress: Decode, -{ - // we must have different headers for the equivocation to be valid - if proof.first_header.hash() == proof.second_header.hash() { - return false; - } - - let first_pre_digest = match find_pre_digest::<_, RewardAddress>(&proof.first_header) { - Some(pre_digest) => pre_digest, - None => { - return false; - } - }; - let second_pre_digest = match find_pre_digest::<_, RewardAddress>(&proof.second_header) { - Some(pre_digest) => pre_digest, - None => { - return false; - } - }; - - // both headers must be targeting the same slot and it must - // be the same as the one in the proof. - if !(proof.slot == first_pre_digest.slot() && proof.slot == second_pre_digest.slot()) { - return false; - } - - // both headers must have the same sector index - if first_pre_digest.solution().sector_index != second_pre_digest.solution().sector_index { - return false; - } - - // both headers must have been authored by the same farmer - if first_pre_digest.solution().public_key != second_pre_digest.solution().public_key { - return false; - } - - // we finally verify that the expected farmer has signed both headers and - // that the signature is valid. - is_seal_signature_valid(proof.first_header.clone(), &proof.offender) - && is_seal_signature_valid(proof.second_header.clone(), &proof.offender) + pub signature: RewardSignature, } /// Subspace solution ranges used for challenges. @@ -498,13 +365,13 @@ impl ChainConstants { /// Wrapped solution for the purposes of runtime interface. #[derive(Debug, Encode, Decode)] -pub struct WrappedSolution(Solution); +pub struct WrappedSolution(Solution<()>); -impl From<&Solution> for WrappedSolution { +impl From<&Solution> for WrappedSolution { #[inline] - fn from(solution: &Solution) -> Self { + fn from(solution: &Solution) -> Self { Self(Solution { - public_key: solution.public_key.clone(), + public_key: solution.public_key, reward_address: (), sector_index: solution.sector_index, history_size: solution.history_size, @@ -624,14 +491,14 @@ pub trait Consensus { .0; match pos_table_type { - PosTableType::Chia => subspace_verification::verify_solution::( + PosTableType::Chia => subspace_verification::verify_solution::( &solution.0, slot, ¶ms.0, kzg, ) .map_err(|error| error.to_string()), - PosTableType::Shim => subspace_verification::verify_solution::( + PosTableType::Shim => subspace_verification::verify_solution::( &solution.0, slot, ¶ms.0, @@ -702,16 +569,6 @@ sp_api::decl_runtime_apis! { /// Solution ranges. fn solution_ranges() -> SolutionRanges; - /// Submits an unsigned extrinsic to report an equivocation. The caller must provide the - /// equivocation proof. The extrinsic will be unsigned and should only be accepted for local - /// authorship (not to be broadcast to the network). This method returns `None` when - /// creation of the extrinsic fails, e.g. if equivocation reporting is disabled for the - /// given runtime (i.e. this method is hardcoded to return `None`). Only useful in an - /// offchain context. - fn submit_report_equivocation_extrinsic( - equivocation_proof: EquivocationProof, - ) -> Option<()>; - /// Submit farmer vote vote that is essentially a header with bigger solution range than /// acceptable for block authoring. Only useful in an offchain context. fn submit_vote_extrinsic( @@ -722,9 +579,6 @@ sp_api::decl_runtime_apis! { >, ); - /// Check if `farmer_public_key` is in block list (due to equivocation) - fn is_in_block_list(farmer_public_key: &FarmerPublicKey) -> bool; - /// Size of the blockchain history fn history_size() -> HistorySize; @@ -741,7 +595,7 @@ sp_api::decl_runtime_apis! { fn is_inherent(ext: &Block::Extrinsic) -> bool; /// Returns root plot public key in case block authoring is restricted. - fn root_plot_public_key() -> Option; + fn root_plot_public_key() -> Option; /// Whether solution range adjustment is enabled. fn should_adjust_solution_range() -> bool; diff --git a/crates/sp-consensus-subspace/src/offence.rs b/crates/sp-consensus-subspace/src/offence.rs deleted file mode 100644 index baa5bd3113..0000000000 --- a/crates/sp-consensus-subspace/src/offence.rs +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright (C) 2019-2021 Parity Technologies (UK) Ltd. -// Copyright (C) 2021 Subspace Labs, Inc. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! Common traits and types that are useful for describing offences for usage in environments -//! that use subspace consensus. -//! -//! ## Comparison with [sp_staking::offence] -//! -//! Unlike [sp_staking::offence] that handles both the offline and equivocation offences, there is -//! only equivocation attack in subspace as it's a permissionless consensus based on PoC holding to -//! Nakamoto's vision and does not have a known validator set for the block production. -//! -//! [sp_staking::offence]: https://docs.substrate.io/rustdocs/latest/sp_staking/offence/index.html - -#[cfg(not(feature = "std"))] -extern crate alloc; - -#[cfg(not(feature = "std"))] -use alloc::vec::Vec; -use codec::{Decode, Encode}; -use scale_info::TypeInfo; - -/// The kind of an offence, is a byte string representing some kind identifier -/// e.g. `b"sub:equivocation"` -pub type Kind = [u8; 16]; - -/// A trait implemented by an offence report. -/// -/// This trait assumes that the offence is legitimate and was validated already. -/// -/// Examples of offences include: a BABE equivocation or a GRANDPA unjustified vote. -pub trait Offence { - /// Identifier which is unique for this kind of an offence. - const ID: Kind; - - /// A type that represents a point in time on an abstract timescale. - /// - /// See `Offence::time_slot` for details. The only requirement is that such timescale could be - /// represented by a single `u128` value. - type TimeSlot: Clone + codec::Codec + Ord; - - /// The list of all offenders involved in this incident. - /// - /// The list has no duplicates, so it is rather a set. - fn offenders(&self) -> Vec; - - /// A point in time when this offence happened. - /// - /// This is used for looking up offences that happened at the "same time". - /// - /// The timescale is abstract and doesn't have to be the same across different implementations - /// of this trait. The value doesn't represent absolute timescale though since it is interpreted - /// along with the `session_index`. Two offences are considered to happen at the same time if - /// `time_slot` is the same. - fn time_slot(&self) -> Self::TimeSlot; -} - -/// Errors that may happen on offence reports. -#[derive(Debug, Eq, PartialEq)] -pub enum OffenceError { - /// The report has already been submitted. - DuplicateReport, - - /// Other error has happened. - Other(u8), -} - -/// A trait for decoupling offence reporters from the actual handling of offence reports. -pub trait ReportOffence> { - /// Report an `offence` and reward given `reporters`. - fn report_offence(offence: O) -> Result<(), OffenceError>; - - /// Returns true iff all of the given offenders have been previously reported - /// at the given time slot. This function is useful to prevent the sending of - /// duplicate offence reports. - fn is_known_offence(offenders: &[Offender], time_slot: &O::TimeSlot) -> bool; -} - -impl> ReportOffence for () { - fn report_offence(_offence: O) -> Result<(), OffenceError> { - Ok(()) - } - - fn is_known_offence(_offenders: &[Offender], _time_slot: &O::TimeSlot) -> bool { - true - } -} - -/// A trait to take action on an offence. -/// -/// Used to decouple the module that handles offences and -/// the one that should punish for those offences. -pub trait OnOffenceHandler { - /// A handler for an offence of a particular kind. - /// - /// Note that this contains a list of all previous offenders - /// as well. The implementer should cater for a case, where - /// the same farmers were reported for the same offence - /// in the past (see `OffenceCount`). - fn on_offence(offenders: &[OffenceDetails]); -} - -impl OnOffenceHandler for () { - fn on_offence(_offenders: &[OffenceDetails]) {} -} - -/// A details about an offending authority for a particular kind of offence. -#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode, TypeInfo)] -pub struct OffenceDetails { - /// The offending authority id - pub offender: Offender, -} diff --git a/crates/sp-consensus-subspace/src/tests.rs b/crates/sp-consensus-subspace/src/tests.rs deleted file mode 100644 index a73dabc448..0000000000 --- a/crates/sp-consensus-subspace/src/tests.rs +++ /dev/null @@ -1,99 +0,0 @@ -use crate::digests::PreDigestPotInfo; -use crate::{ - is_equivocation_proof_valid, CompatibleDigestItem, EquivocationProof, FarmerPublicKey, - FarmerSignature, -}; -use schnorrkel::Keypair; -use sp_consensus_slots::Slot; -use sp_core::crypto::UncheckedFrom; -use sp_runtime::traits::BlakeTwo256; -use sp_runtime::{Digest, DigestItem}; -use std::num::NonZeroU64; -use subspace_core_primitives::{HistorySize, PieceOffset, Solution, REWARD_SIGNING_CONTEXT}; - -type Header = sp_runtime::generic::Header; -type PreDigest = crate::PreDigest; - -#[test] -fn test_is_equivocation_proof_valid() { - let keypair = Keypair::generate(); - let offender = FarmerPublicKey::unchecked_from(keypair.public.to_bytes()); - let slot = Slot::from(1); - let solution = Solution { - public_key: offender.clone(), - reward_address: (), - sector_index: 0, - history_size: HistorySize::from(NonZeroU64::new(1).unwrap()), - piece_offset: PieceOffset::default(), - record_commitment: Default::default(), - record_witness: Default::default(), - chunk: Default::default(), - chunk_witness: Default::default(), - proof_of_space: Default::default(), - }; - - let mut first_header = Header { - parent_hash: [0u8; 32].into(), - number: 1, - state_root: Default::default(), - extrinsics_root: Default::default(), - digest: Digest { - logs: vec![DigestItem::subspace_pre_digest(&PreDigest::V0 { - slot, - solution: solution.clone(), - pot_info: PreDigestPotInfo::V0 { - proof_of_time: Default::default(), - future_proof_of_time: Default::default(), - }, - })], - }, - }; - first_header - .digest - .logs - .push(DigestItem::subspace_seal(FarmerSignature::unchecked_from( - keypair - .sign( - schnorrkel::context::signing_context(REWARD_SIGNING_CONTEXT) - .bytes(first_header.hash().as_bytes()), - ) - .to_bytes(), - ))); - - let mut second_header = Header { - parent_hash: [1u8; 32].into(), - number: 1, - state_root: Default::default(), - extrinsics_root: Default::default(), - digest: Digest { - logs: vec![DigestItem::subspace_pre_digest(&PreDigest::V0 { - slot, - solution, - pot_info: PreDigestPotInfo::V0 { - proof_of_time: Default::default(), - future_proof_of_time: Default::default(), - }, - })], - }, - }; - second_header - .digest - .logs - .push(DigestItem::subspace_seal(FarmerSignature::unchecked_from( - keypair - .sign( - schnorrkel::context::signing_context(REWARD_SIGNING_CONTEXT) - .bytes(second_header.hash().as_bytes()), - ) - .to_bytes(), - ))); - - let equivocation_proof = EquivocationProof { - offender, - slot, - first_header, - second_header, - }; - - assert!(is_equivocation_proof_valid::<_, ()>(&equivocation_proof)); -} diff --git a/crates/sp-domains-fraud-proof/Cargo.toml b/crates/sp-domains-fraud-proof/Cargo.toml index 97364e5961..f2c456e12f 100644 --- a/crates/sp-domains-fraud-proof/Cargo.toml +++ b/crates/sp-domains-fraud-proof/Cargo.toml @@ -14,57 +14,57 @@ include = [ codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } domain-block-preprocessor = { version = "0.1.0", default-features = false, path = "../../domains/client/block-preprocessor", optional = true } domain-runtime-primitives = { version = "0.1.0", default-features = false, path = "../../domains/primitives/runtime" } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } hash-db = { version = "0.16.0", default-features = false } log = { version = "0.4.22", default-features = false } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false, optional = true } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false, optional = true } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domain-digests = { version = "0.1.0", default-features = false, path = "../../domains/primitives/digests" } sp-domains = { version = "0.1.0", default-features = false, path = "../sp-domains" } -sp-externalities = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-externalities = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", default-features = false, path = "../../domains/primitives/messenger" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime-interface = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-state-machine = { optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime-interface = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-state-machine = { optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { version = "0.1.0", default-features = false, path = "../sp-subspace-mmr" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-trie = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-weights = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-trie = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-weights = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", default-features = false, path = "../subspace-core-primitives" } subspace-runtime-primitives = { version = "0.1.0", default-features = false, path = "../subspace-runtime-primitives" } trie-db = { version = "0.29.1", default-features = false } -thiserror = { version = "1.0.63", optional = true } +thiserror = { version = "1.0.64", optional = true } [dev-dependencies] domain-block-builder = { version = "0.1.0", path = "../../domains/client/block-builder" } domain-block-preprocessor = { version = "0.1.0", path = "../../domains/client/block-preprocessor" } domain-test-service = { version = "0.1.0", path = "../../domains/test/service" } ethereum = "0.15.0" -fp-rpc = { version = "3.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa", features = ['default'] } -fp-self-contained = { version = "1.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa", features = ['default'] } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -futures = "0.3.29" +fp-rpc = { version = "3.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968", features = ['default'] } +fp-self-contained = { version = "1.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968", features = ['default'] } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +futures = "0.3.30" libsecp256k1 = { version = "0.7.1", features = ["static-context", "hmac"] } -pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-ethereum = { git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa", features = ['default'] } -pallet-evm = { version = "6.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa", default-features = false } +pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-ethereum = { git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968", features = ['default'] } +pallet-evm = { version = "6.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968", default-features = false } parking_lot = "0.12.2" rand = { version = "0.8.5", features = ["min_const_gen"] } rlp = "0.5.2" -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-cli = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-cli = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } subspace-test-client = { version = "0.1.0", path = "../../test/subspace-test-client" } subspace-test-service = { version = "0.1.0", path = "../../test/subspace-test-service" } subspace-runtime-primitives = { version = "0.1.0", path = "../../crates/subspace-runtime-primitives" } -tempfile = "3.12.0" -tokio = "1.39.2" +tempfile = "3.13.0" +tokio = "1.40.0" [features] default = ["std"] diff --git a/crates/sp-domains-fraud-proof/src/execution_prover.rs b/crates/sp-domains-fraud-proof/src/execution_prover.rs index 57c6d1b8f4..3ca980f615 100644 --- a/crates/sp-domains-fraud-proof/src/execution_prover.rs +++ b/crates/sp-domains-fraud-proof/src/execution_prover.rs @@ -1,7 +1,8 @@ //! This module provides the feature of generating and verifying the execution proof used in -//! the Subspace fraud proof mechanism. The execution is more fine-grained than the entire -//! block execution, block execution hooks (`initialize_block` and `finalize_block`) and any -//! specific extrinsic execution are supported. +//! the Subspace fraud proof mechanism. +//! +//! The execution is more fine-grained than the entire block execution, block execution hooks +//! (`initialize_block` and `finalize_block`) and any specific extrinsic execution are supported. use crate::fraud_proof::ExecutionPhase; use codec::Codec; diff --git a/crates/sp-domains-fraud-proof/src/host_functions.rs b/crates/sp-domains-fraud-proof/src/host_functions.rs index f2c08fd263..eede593383 100644 --- a/crates/sp-domains-fraud-proof/src/host_functions.rs +++ b/crates/sp-domains-fraud-proof/src/host_functions.rs @@ -2,14 +2,12 @@ extern crate alloc; use crate::{ - DomainChainAllowlistUpdateExtrinsic, DomainInherentExtrinsic, DomainInherentExtrinsicData, - DomainStorageKeyRequest, FraudProofVerificationInfoRequest, FraudProofVerificationInfoResponse, - SetCodeExtrinsic, StatelessDomainRuntimeCall, StorageKeyRequest, + DomainInherentExtrinsic, DomainInherentExtrinsicData, DomainStorageKeyRequest, + StatelessDomainRuntimeCall, }; #[cfg(not(feature = "std"))] use alloc::vec::Vec; use codec::{Codec, Decode, Encode}; -use domain_block_preprocessor::inherents::extract_domain_runtime_upgrade_code; use domain_block_preprocessor::stateless_runtime::StatelessRuntime; use domain_runtime_primitives::{ BlockNumber, CheckExtrinsicsValidityError, CHECK_EXTRINSICS_AND_DO_PRE_DISPATCH_METHOD_NAME, @@ -22,8 +20,7 @@ use sp_api::ProvideRuntimeApi; use sp_blockchain::HeaderBackend; use sp_core::traits::{CallContext, CodeExecutor, FetchRuntimeCode, RuntimeCode}; use sp_core::H256; -use sp_domains::bundle_producer_election::BundleProducerElectionParams; -use sp_domains::{BundleProducerElectionApi, DomainId, DomainsApi, OperatorId}; +use sp_domains::{BundleProducerElectionApi, DomainsApi}; use sp_externalities::Extensions; use sp_messenger::MessengerApi; use sp_runtime::traits::{Block as BlockT, Hash as HashT, Header as HeaderT, NumberFor}; @@ -34,7 +31,6 @@ use sp_weights::Weight; use std::borrow::Cow; use std::marker::PhantomData; use std::sync::Arc; -use subspace_core_primitives::{Randomness, U256}; use subspace_runtime_primitives::Balance; struct DomainRuntimeCodeFetcher(Vec); @@ -47,24 +43,8 @@ impl FetchRuntimeCode for DomainRuntimeCodeFetcher { /// Trait to query and verify Domains Fraud proof. pub trait FraudProofHostFunctions: Send + Sync { - /// Returns the required verification info for the runtime to verify the Fraud proof. - fn get_fraud_proof_verification_info( - &self, - consensus_block_hash: H256, - fraud_proof_verification_req: FraudProofVerificationInfoRequest, - ) -> Option; - /// Derive the bundle digest for the given bundle body. - // TODO: remove before the new network fn derive_bundle_digest( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - bundle_body: Vec, - ) -> Option; - - /// Derive the bundle digest for the given bundle body. - fn derive_bundle_digest_v2( &self, domain_runtime_code: Vec, bundle_body: Vec, @@ -160,328 +140,6 @@ impl } } -// TODO: Revisit the host function implementation once we decide best strategy to structure them. -impl - FraudProofHostFunctionsImpl -where - Block: BlockT, - Block::Hash: From, - DomainBlock: BlockT, - DomainBlock::Hash: From + Into, - Client: BlockBackend + HeaderBackend + ProvideRuntimeApi, - Client::Api: DomainsApi - + BundleProducerElectionApi - + MessengerApi, Block::Hash>, - Executor: CodeExecutor + RuntimeVersionOf, - EFC: Fn(Arc, Arc) -> Box> + Send + Sync, -{ - fn get_block_randomness(&self, consensus_block_hash: H256) -> Option { - let runtime_api = self.consensus_client.runtime_api(); - let consensus_block_hash = consensus_block_hash.into(); - runtime_api - .extrinsics_shuffling_seed(consensus_block_hash) - .ok() - } - - fn derive_domain_timestamp_extrinsic( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - ) -> Option> { - let runtime_api = self.consensus_client.runtime_api(); - let runtime_code = self.get_domain_runtime_code(consensus_block_hash, domain_id)?; - let timestamp = runtime_api.timestamp(consensus_block_hash.into()).ok()?; - - let domain_stateless_runtime = StatelessRuntime::::new( - self.domain_executor.clone(), - runtime_code.into(), - ); - - domain_stateless_runtime - .construct_timestamp_extrinsic(timestamp) - .ok() - .map(|ext| ext.encode()) - } - - fn derive_domain_chain_allowlist_update_extrinsic( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - ) -> Option> { - let runtime_api = self.consensus_client.runtime_api(); - let runtime_code = self.get_domain_runtime_code(consensus_block_hash, domain_id)?; - let updates = runtime_api - .domain_chains_allowlist_update(consensus_block_hash.into(), domain_id) - .ok()??; - - let domain_stateless_runtime = StatelessRuntime::::new( - self.domain_executor.clone(), - runtime_code.into(), - ); - - domain_stateless_runtime - .construct_domain_update_chain_allowlist_extrinsic(updates) - .ok() - .map(|ext| ext.encode()) - } - - fn derive_consensus_chain_byte_fee_extrinsic( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - ) -> Option> { - let runtime_api = self.consensus_client.runtime_api(); - let consensus_chain_byte_fee = runtime_api - .consensus_chain_byte_fee(consensus_block_hash.into()) - .ok()?; - - let runtime_code = self.get_domain_runtime_code(consensus_block_hash, domain_id)?; - let domain_stateless_runtime = StatelessRuntime::::new( - self.domain_executor.clone(), - runtime_code.into(), - ); - - domain_stateless_runtime - .construct_consensus_chain_byte_fee_extrinsic(consensus_chain_byte_fee) - .ok() - .map(|ext| ext.encode()) - } - - fn get_domain_bundle_body( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - bundle_index: u32, - ) -> Option> { - let consensus_block_hash = consensus_block_hash.into(); - let consensus_extrinsics = self - .consensus_client - .block_body(consensus_block_hash) - .ok()??; - let mut bundles = self - .consensus_client - .runtime_api() - .extract_successful_bundles(consensus_block_hash, domain_id, consensus_extrinsics) - .ok()?; - - if bundle_index < bundles.len() as u32 { - Some(bundles.swap_remove(bundle_index as usize).extrinsics) - } else { - None - } - } - - fn derive_domain_set_code_extrinsic( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - ) -> Option { - let maybe_upgraded_runtime = extract_domain_runtime_upgrade_code::<_, _, DomainBlock>( - &self.consensus_client, - consensus_block_hash.into(), - domain_id, - ) - .ok() - .flatten(); - - if let Some(upgraded_runtime) = maybe_upgraded_runtime { - let runtime_code = self.get_domain_runtime_code(consensus_block_hash, domain_id)?; - let domain_stateless_runtime = StatelessRuntime::::new( - self.domain_executor.clone(), - runtime_code.into(), - ); - - domain_stateless_runtime - .construct_set_code_extrinsic(upgraded_runtime) - .ok() - .map(|ext| SetCodeExtrinsic::EncodedExtrinsic(ext.encode())) - } else { - Some(SetCodeExtrinsic::None) - } - } - - fn get_domain_runtime_code( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - ) -> Option> { - let runtime_api = self.consensus_client.runtime_api(); - // Use the parent hash to get the actual used domain runtime code - // TODO: update once we can get the actual used domain runtime code by `consensus_block_hash` - let consensus_block_header = self - .consensus_client - .header(consensus_block_hash.into()) - .ok() - .flatten()?; - runtime_api - .domain_runtime_code(*consensus_block_header.parent_hash(), domain_id) - .ok() - .flatten() - } - - fn is_tx_in_range( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - opaque_extrinsic: OpaqueExtrinsic, - bundle_index: u32, - ) -> Option { - let runtime_api = self.consensus_client.runtime_api(); - let runtime_code = self.get_domain_runtime_code(consensus_block_hash, domain_id)?; - let consensus_block_hash = consensus_block_hash.into(); - let domain_tx_range = runtime_api - .domain_tx_range(consensus_block_hash, domain_id) - .ok()?; - - let consensus_extrinsics = self - .consensus_client - .block_body(consensus_block_hash) - .ok()??; - let bundles = self - .consensus_client - .runtime_api() - .extract_successful_bundles(consensus_block_hash, domain_id, consensus_extrinsics) - .ok()?; - - let bundle = bundles.get(bundle_index as usize)?; - let bundle_vrf_hash = - U256::from_be_bytes(bundle.sealed_header.header.proof_of_election.vrf_hash()); - - self.domain_runtime_call( - runtime_code, - StatelessDomainRuntimeCall::IsTxInRange { - opaque_extrinsic, - bundle_vrf_hash, - domain_tx_range, - }, - ) - } - - fn is_inherent_extrinsic( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - opaque_extrinsic: OpaqueExtrinsic, - ) -> Option { - let runtime_code = self.get_domain_runtime_code(consensus_block_hash, domain_id)?; - self.domain_runtime_call( - runtime_code, - StatelessDomainRuntimeCall::IsInherentExtrinsic(opaque_extrinsic), - ) - } - - fn is_valid_xdm( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - opaque_extrinsic: OpaqueExtrinsic, - ) -> Option { - let runtime_code = self.get_domain_runtime_code(consensus_block_hash, domain_id)?; - let mut domain_stateless_runtime = StatelessRuntime::::new( - self.domain_executor.clone(), - runtime_code.into(), - ); - let extension_factory = (self.domain_extensions_factory_creator)( - self.consensus_client.clone(), - self.domain_executor.clone(), - ); - domain_stateless_runtime.set_extension_factory(extension_factory); - - let consensus_api = self.consensus_client.runtime_api(); - let domain_initial_state = consensus_api - .domain_instance_data(consensus_block_hash.into(), domain_id) - .expect("Runtime Api must not fail. This is unrecoverable error")? - .0 - .raw_genesis - .into_storage(); - domain_stateless_runtime.set_storage(domain_initial_state); - - let encoded_extrinsic = opaque_extrinsic.encode(); - let extrinsic = - ::Extrinsic::decode(&mut encoded_extrinsic.as_slice()).ok()?; - domain_stateless_runtime - .is_xdm_mmr_proof_valid(&extrinsic) - .expect("Runtime api must not fail. This is an unrecoverable error") - } - - fn is_decodable_extrinsic( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - opaque_extrinsic: OpaqueExtrinsic, - ) -> Option { - let runtime_code = self.get_domain_runtime_code(consensus_block_hash, domain_id)?; - self.domain_runtime_call( - runtime_code, - StatelessDomainRuntimeCall::IsDecodableExtrinsic(opaque_extrinsic), - ) - } - - fn storage_key( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - req: StorageKeyRequest, - ) -> Option> { - let runtime_code = self.get_domain_runtime_code(consensus_block_hash, domain_id)?; - let domain_stateless_runtime = StatelessRuntime::::new( - self.domain_executor.clone(), - runtime_code.into(), - ); - Some( - match req { - StorageKeyRequest::Transfers => domain_stateless_runtime.transfers_storage_key(), - } - .expect("Domain Runtime Api should not fail. There is no recovery from this; qed."), - ) - } - - fn get_domain_election_params( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - ) -> Option> { - let runtime_api = self.consensus_client.runtime_api(); - let consensus_block_hash = consensus_block_hash.into(); - let election_params = runtime_api - .bundle_producer_election_params(consensus_block_hash, domain_id) - .ok()??; - Some(election_params) - } - - fn get_operator_stake( - &self, - consensus_block_hash: H256, - operator_id: OperatorId, - ) -> Option { - let runtime_api = self.consensus_client.runtime_api(); - let consensus_block_hash = consensus_block_hash.into(); - let (_, operator_stake) = runtime_api - .operator(consensus_block_hash, operator_id) - .ok()??; - Some(operator_stake) - } - - fn check_extrinsics_in_single_context_v1( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - domain_block_id: (BlockNumber, H256), - domain_block_state_root: H256, - bundle_extrinsics: Vec, - storage_proof: StorageProof, - ) -> Option> { - let runtime_code = self.get_domain_runtime_code(consensus_block_hash, domain_id)?; - self.check_extrinsics_in_single_context( - runtime_code, - domain_block_id, - domain_block_state_root, - bundle_extrinsics, - storage_proof.encode(), - ) - } -} - impl FraudProofHostFunctions for FraudProofHostFunctionsImpl where @@ -497,158 +155,15 @@ where Executor: CodeExecutor + RuntimeVersionOf, EFC: Fn(Arc, Arc) -> Box> + Send + Sync, { - fn get_fraud_proof_verification_info( - &self, - consensus_block_hash: H256, - fraud_proof_verification_req: FraudProofVerificationInfoRequest, - ) -> Option { - match fraud_proof_verification_req { - FraudProofVerificationInfoRequest::BlockRandomness => self - .get_block_randomness(consensus_block_hash) - .map(|block_randomness| { - FraudProofVerificationInfoResponse::BlockRandomness(block_randomness) - }), - FraudProofVerificationInfoRequest::DomainTimestampExtrinsic(domain_id) => self - .derive_domain_timestamp_extrinsic(consensus_block_hash, domain_id) - .map(|domain_timestamp_extrinsic| { - FraudProofVerificationInfoResponse::DomainTimestampExtrinsic( - domain_timestamp_extrinsic, - ) - }), - FraudProofVerificationInfoRequest::ConsensusChainByteFeeExtrinsic(domain_id) => self - .derive_consensus_chain_byte_fee_extrinsic(consensus_block_hash, domain_id) - .map(|consensus_chain_byte_fee_extrinsic| { - FraudProofVerificationInfoResponse::ConsensusChainByteFeeExtrinsic( - consensus_chain_byte_fee_extrinsic, - ) - }), - FraudProofVerificationInfoRequest::DomainBundleBody { - domain_id, - bundle_index, - } => self - .get_domain_bundle_body(consensus_block_hash, domain_id, bundle_index) - .map(|domain_bundle_body| { - FraudProofVerificationInfoResponse::DomainBundleBody(domain_bundle_body) - }), - FraudProofVerificationInfoRequest::DomainRuntimeCode(domain_id) => self - .get_domain_runtime_code(consensus_block_hash, domain_id) - .map(|domain_runtime_code| { - FraudProofVerificationInfoResponse::DomainRuntimeCode(domain_runtime_code) - }), - FraudProofVerificationInfoRequest::DomainSetCodeExtrinsic(domain_id) => self - .derive_domain_set_code_extrinsic(consensus_block_hash, domain_id) - .map(|maybe_domain_set_code_extrinsic| { - FraudProofVerificationInfoResponse::DomainSetCodeExtrinsic( - maybe_domain_set_code_extrinsic, - ) - }), - FraudProofVerificationInfoRequest::TxRangeCheck { - domain_id, - opaque_extrinsic, - bundle_index, - } => self - .is_tx_in_range( - consensus_block_hash, - domain_id, - opaque_extrinsic, - bundle_index, - ) - .map(|is_tx_in_range| { - FraudProofVerificationInfoResponse::TxRangeCheck(is_tx_in_range) - }), - FraudProofVerificationInfoRequest::InherentExtrinsicCheck { - domain_id, - opaque_extrinsic, - } => self - .is_inherent_extrinsic(consensus_block_hash, domain_id, opaque_extrinsic) - .map(|is_inherent| { - FraudProofVerificationInfoResponse::InherentExtrinsicCheck(is_inherent) - }), - FraudProofVerificationInfoRequest::ExtrinsicDecodableCheck { - domain_id, - opaque_extrinsic, - } => self - .is_decodable_extrinsic(consensus_block_hash, domain_id, opaque_extrinsic) - .map(|is_decodable| { - FraudProofVerificationInfoResponse::ExtrinsicDecodableCheck(is_decodable) - }), - FraudProofVerificationInfoRequest::DomainElectionParams { domain_id } => self - .get_domain_election_params(consensus_block_hash, domain_id) - .map(|domain_election_params| { - FraudProofVerificationInfoResponse::DomainElectionParams { - domain_total_stake: domain_election_params.total_domain_stake, - bundle_slot_probability: domain_election_params.bundle_slot_probability, - } - }), - FraudProofVerificationInfoRequest::OperatorStake { operator_id } => self - .get_operator_stake(consensus_block_hash, operator_id) - .map(|operator_stake| { - FraudProofVerificationInfoResponse::OperatorStake(operator_stake) - }), - FraudProofVerificationInfoRequest::CheckExtrinsicsInSingleContext { - domain_id, - domain_block_number, - domain_block_hash, - domain_block_state_root, - extrinsics, - storage_proof, - } => self - .check_extrinsics_in_single_context_v1( - consensus_block_hash, - domain_id, - (domain_block_number, domain_block_hash), - domain_block_state_root, - extrinsics, - storage_proof, - ) - .map(FraudProofVerificationInfoResponse::CheckExtrinsicsInSingleContext), - FraudProofVerificationInfoRequest::StorageKey { domain_id, req } => { - Some(FraudProofVerificationInfoResponse::StorageKey( - self.storage_key(consensus_block_hash, domain_id, req), - )) - } - FraudProofVerificationInfoRequest::XDMValidationCheck { - domain_id, - opaque_extrinsic, - } => Some(FraudProofVerificationInfoResponse::XDMValidationCheck( - self.is_valid_xdm(consensus_block_hash, domain_id, opaque_extrinsic), - )), - FraudProofVerificationInfoRequest::DomainChainsAllowlistUpdateExtrinsic(domain_id) => { - Some( - FraudProofVerificationInfoResponse::DomainChainAllowlistUpdateExtrinsic( - self.derive_domain_chain_allowlist_update_extrinsic( - consensus_block_hash, - domain_id, - ) - .map(DomainChainAllowlistUpdateExtrinsic::EncodedExtrinsic) - .unwrap_or(DomainChainAllowlistUpdateExtrinsic::None), - ), - ) - } - } - } - fn derive_bundle_digest( - &self, - consensus_block_hash: H256, - domain_id: DomainId, - bundle_body: Vec, - ) -> Option { - let domain_runtime_code = self.get_domain_runtime_code(consensus_block_hash, domain_id)?; - self.derive_bundle_digest_v2(domain_runtime_code, bundle_body) - } - - fn derive_bundle_digest_v2( &self, domain_runtime_code: Vec, bundle_body: Vec, ) -> Option { let mut extrinsics = Vec::with_capacity(bundle_body.len()); for opaque_extrinsic in bundle_body { - let ext = <::Extrinsic>::decode( - &mut opaque_extrinsic.encode().as_slice(), - ) - .ok()?; + let ext = + DomainBlock::Extrinsic::decode(&mut opaque_extrinsic.encode().as_slice()).ok()?; extrinsics.push(ext); } @@ -844,8 +359,7 @@ where } => { let encoded_extrinsic = opaque_extrinsic.encode(); let extrinsic = - ::Extrinsic::decode(&mut encoded_extrinsic.as_slice()) - .ok()?; + DomainBlock::Extrinsic::decode(&mut encoded_extrinsic.as_slice()).ok()?; domain_stateless_runtime .is_within_tx_range(&extrinsic, &bundle_vrf_hash, &domain_tx_range) .ok() @@ -853,8 +367,7 @@ where StatelessDomainRuntimeCall::IsInherentExtrinsic(opaque_extrinsic) => { let encoded_extrinsic = opaque_extrinsic.encode(); let extrinsic = - ::Extrinsic::decode(&mut encoded_extrinsic.as_slice()) - .ok()?; + DomainBlock::Extrinsic::decode(&mut encoded_extrinsic.as_slice()).ok()?; domain_stateless_runtime .is_inherent_extrinsic(&extrinsic) .ok() @@ -884,8 +397,7 @@ where for opaque_extrinsic in bundle_body { let encoded_extrinsic = opaque_extrinsic.encode(); let extrinsic = - ::Extrinsic::decode(&mut encoded_extrinsic.as_slice()) - .ok()?; + DomainBlock::Extrinsic::decode(&mut encoded_extrinsic.as_slice()).ok()?; let tx_weight = domain_stateless_runtime.extrinsic_weight(&extrinsic).ok()?; estimated_bundle_weight = estimated_bundle_weight.saturating_add(tx_weight); } @@ -901,8 +413,7 @@ where self.domain_executor.clone(), domain_runtime_code.into(), ); - let extrinsic = - ::Extrinsic::decode(&mut opaque_extrinsic.as_slice()).ok()?; + let extrinsic = DomainBlock::Extrinsic::decode(&mut opaque_extrinsic.as_slice()).ok()?; domain_stateless_runtime .extract_xdm_mmr_proof(&extrinsic) .ok() diff --git a/crates/sp-domains-fraud-proof/src/lib.rs b/crates/sp-domains-fraud-proof/src/lib.rs index 665f59587a..f061c28796 100644 --- a/crates/sp-domains-fraud-proof/src/lib.rs +++ b/crates/sp-domains-fraud-proof/src/lib.rs @@ -48,14 +48,13 @@ pub use runtime_interface::fraud_proof_runtime_interface; pub use runtime_interface::fraud_proof_runtime_interface::HostFunctions; use scale_info::TypeInfo; use sp_core::H256; -use sp_domains::{DomainAllowlistUpdates, DomainId, OperatorId}; +use sp_domains::DomainAllowlistUpdates; use sp_runtime::traits::{Header as HeaderT, NumberFor}; use sp_runtime::transaction_validity::{InvalidTransaction, TransactionValidity}; use sp_runtime::OpaqueExtrinsic; use sp_runtime_interface::pass_by; use sp_runtime_interface::pass_by::PassBy; -use sp_trie::StorageProof; -use subspace_core_primitives::{Randomness, U256}; +use subspace_core_primitives::U256; use subspace_runtime_primitives::{Balance, Moment}; /// Custom invalid validity code for the extrinsics in pallet-domains. @@ -89,82 +88,6 @@ pub enum StorageKeyRequest { Transfers, } -/// Request type to fetch required verification information for fraud proof through Host function. -#[derive(Debug, Decode, Encode, TypeInfo, PartialEq, Eq, Clone)] -pub enum FraudProofVerificationInfoRequest { - /// Block randomness at a given consensus block hash. - BlockRandomness, - /// Domain timestamp extrinsic using the timestamp at a given consensus block hash. - DomainTimestampExtrinsic(DomainId), - /// Domain `set_consensus_chain_byte_fee` extrinsic using the `consensus_chain_byte_fee` at a given - /// consensus block hash. - ConsensusChainByteFeeExtrinsic(DomainId), - /// Domains `update_domain_chain_allowlist` extrinsic at a given consensus block hash. - DomainChainsAllowlistUpdateExtrinsic(DomainId), - /// The body of domain bundle included in a given consensus block at a given index - DomainBundleBody { - domain_id: DomainId, - bundle_index: u32, - }, - /// The domain runtime code - DomainRuntimeCode(DomainId), - /// Domain set_code extrinsic if there is a runtime upgrade at a given consensus block hash. - DomainSetCodeExtrinsic(DomainId), - /// Request to check if particular extrinsic is in range for (domain, bundle) pair at given domain block - TxRangeCheck { - domain_id: DomainId, - /// Index of the bundle in which the extrinsic exists - bundle_index: u32, - /// Extrinsic for which we need to check the range - opaque_extrinsic: OpaqueExtrinsic, - }, - /// Request to check if particular extrinsic is an inherent extrinsic - InherentExtrinsicCheck { - domain_id: DomainId, - /// Extrinsic for which we need to if it is inherent or not. - opaque_extrinsic: OpaqueExtrinsic, - }, - /// Request to check if the domain extrinsic is decodable or not. - ExtrinsicDecodableCheck { - domain_id: DomainId, - /// Extrinsic for which we need to if it is decodable or not. - opaque_extrinsic: OpaqueExtrinsic, - }, - /// Request to check if the XDM is valid - XDMValidationCheck { - domain_id: DomainId, - /// Encoded XDM extrinsic that needs to be validated. - opaque_extrinsic: OpaqueExtrinsic, - }, - /// Request to get Domain election params. - DomainElectionParams { domain_id: DomainId }, - /// Request to get Operator stake. - OperatorStake { operator_id: OperatorId }, - /// Request to check extrinsics in single context - CheckExtrinsicsInSingleContext { - domain_id: DomainId, - /// Domain block number from ER - domain_block_number: u32, - /// Domain block hash from ER - domain_block_hash: H256, - /// Domain block state root from ER - domain_block_state_root: H256, - /// Extrinsics which we want to check in single context - extrinsics: Vec, - /// Storage proof for the keys used in validating the extrinsic - storage_proof: StorageProof, - }, - /// Request to fetch a specific storage key - StorageKey { - domain_id: DomainId, - req: StorageKeyRequest, - }, -} - -impl PassBy for FraudProofVerificationInfoRequest { - type PassBy = pass_by::Codec; -} - /// Type that maybe holds an encoded set_code extrinsic with upgraded runtime #[derive(Debug, Decode, Encode, TypeInfo, PartialEq, Eq, Clone)] pub enum SetCodeExtrinsic { @@ -183,171 +106,6 @@ pub enum DomainChainAllowlistUpdateExtrinsic { EncodedExtrinsic(Vec), } -/// Response holds required verification information for fraud proof from Host function. -#[derive(Debug, Decode, Encode, TypeInfo, PartialEq, Eq, Clone)] -pub enum FraudProofVerificationInfoResponse { - /// Block randomness fetched from consensus state at a specific block hash. - BlockRandomness(Randomness), - /// Encoded domain timestamp extrinsic using the timestamp from consensus state at a specific block hash. - DomainTimestampExtrinsic(Vec), - /// Encoded domain `set_consensus_chain_byte_fee` extrinsic using the `consensus_chain_byte_fee` at a - /// given consensus block hash. - ConsensusChainByteFeeExtrinsic(Vec), - /// Domain block body fetch from a specific consensus block body - DomainBundleBody(Vec), - /// The domain runtime code - DomainRuntimeCode(Vec), - /// Encoded domain set_code extrinsic if there is a runtime upgrade at given consensus block hash. - DomainSetCodeExtrinsic(SetCodeExtrinsic), - /// Encoded domain update_chain_allowlist extrinsic if there are any updates on consensus chain - /// for this domain at a specific consensus hash. - DomainChainAllowlistUpdateExtrinsic(DomainChainAllowlistUpdateExtrinsic), - /// If particular extrinsic is in range for (domain, bundle) pair at given domain block - TxRangeCheck(bool), - /// If the particular extrinsic provided is either inherent or not. - InherentExtrinsicCheck(bool), - /// If the particular xdm extrinsic is valid or not. - /// Returns None if extrinsic is not an XDM - XDMValidationCheck(Option), - /// If the domain extrinsic is decodable or not. - ExtrinsicDecodableCheck(bool), - /// Domain's total stake at a given Consensus hash. - DomainElectionParams { - domain_total_stake: Balance, - bundle_slot_probability: (u64, u64), - }, - /// Operators Stake at a given Consensus hash. - OperatorStake(Balance), - /// Result of check extrinsics in single context - CheckExtrinsicsInSingleContext(Option), - /// Result of the storage key request - StorageKey(Option>), -} - -impl FraudProofVerificationInfoResponse { - pub fn into_block_randomness(self) -> Option { - match self { - Self::BlockRandomness(randomness) => Some(randomness), - _ => None, - } - } - - pub fn into_domain_timestamp_extrinsic(self) -> Option> { - match self { - Self::DomainTimestampExtrinsic(timestamp_extrinsic) => Some(timestamp_extrinsic), - _ => None, - } - } - - pub fn into_consensus_chain_byte_fee_extrinsic(self) -> Option> { - match self { - Self::ConsensusChainByteFeeExtrinsic(ext) => Some(ext), - _ => None, - } - } - - pub fn into_domain_runtime_code(self) -> Option> { - match self { - Self::DomainRuntimeCode(c) => Some(c), - _ => None, - } - } - - pub fn into_domain_set_code_extrinsic(self) -> SetCodeExtrinsic { - match self { - FraudProofVerificationInfoResponse::DomainSetCodeExtrinsic( - maybe_set_code_extrinsic, - ) => maybe_set_code_extrinsic, - _ => SetCodeExtrinsic::None, - } - } - - pub fn into_domain_chain_allowlist_update_extrinsic( - self, - ) -> DomainChainAllowlistUpdateExtrinsic { - match self { - FraudProofVerificationInfoResponse::DomainChainAllowlistUpdateExtrinsic( - allowlist_update_extrinsic, - ) => allowlist_update_extrinsic, - _ => DomainChainAllowlistUpdateExtrinsic::None, - } - } - - pub fn into_tx_range_check(self) -> Option { - match self { - FraudProofVerificationInfoResponse::TxRangeCheck(is_tx_in_range) => { - Some(is_tx_in_range) - } - _ => None, - } - } - - pub fn into_bundle_body(self) -> Option> { - match self { - Self::DomainBundleBody(bb) => Some(bb), - _ => None, - } - } - - pub fn into_inherent_extrinsic_check(self) -> Option { - match self { - FraudProofVerificationInfoResponse::InherentExtrinsicCheck(is_inherent) => { - Some(is_inherent) - } - _ => None, - } - } - - pub fn into_xdm_validation_check(self) -> Option { - match self { - FraudProofVerificationInfoResponse::XDMValidationCheck(maybe_valid) => maybe_valid, - _ => None, - } - } - - pub fn into_extrinsic_decodable_check(self) -> Option { - match self { - FraudProofVerificationInfoResponse::ExtrinsicDecodableCheck(is_decodable) => { - Some(is_decodable) - } - _ => None, - } - } - - pub fn into_domain_election_params(self) -> Option<(Balance, (u64, u64))> { - match self { - FraudProofVerificationInfoResponse::DomainElectionParams { - domain_total_stake, - bundle_slot_probability, - } => Some((domain_total_stake, bundle_slot_probability)), - _ => None, - } - } - - pub fn into_operator_stake(self) -> Option { - match self { - FraudProofVerificationInfoResponse::OperatorStake(stake) => Some(stake), - _ => None, - } - } - - pub fn into_single_context_extrinsic_check(self) -> Option> { - match self { - FraudProofVerificationInfoResponse::CheckExtrinsicsInSingleContext(result) => { - Some(result) - } - _ => None, - } - } - - pub fn into_storage_key(self) -> Option> { - match self { - FraudProofVerificationInfoResponse::StorageKey(result) => result, - _ => None, - } - } -} - #[derive(Debug, Decode, Encode, TypeInfo, PartialEq, Eq, Clone)] pub struct DomainInherentExtrinsicData { pub timestamp: Moment, @@ -398,7 +156,6 @@ impl PassBy for StatelessDomainRuntimeCall { sp_api::decl_runtime_apis! { /// API necessary for fraud proof. - #[api_version(2)] pub trait FraudProofApi { /// Submit the fraud proof via an unsigned extrinsic. fn submit_fraud_proof_unsigned(fraud_proof: FraudProof, Block::Hash, DomainHeader, H256>); diff --git a/crates/sp-domains-fraud-proof/src/runtime_interface.rs b/crates/sp-domains-fraud-proof/src/runtime_interface.rs index 1d97cc30ab..4a85e8970e 100644 --- a/crates/sp-domains-fraud-proof/src/runtime_interface.rs +++ b/crates/sp-domains-fraud-proof/src/runtime_interface.rs @@ -5,14 +5,12 @@ extern crate alloc; use crate::FraudProofExtension; use crate::{ DomainInherentExtrinsic, DomainInherentExtrinsicData, DomainStorageKeyRequest, - FraudProofVerificationInfoRequest, FraudProofVerificationInfoResponse, StatelessDomainRuntimeCall, }; #[cfg(not(feature = "std"))] use alloc::vec::Vec; use domain_runtime_primitives::BlockNumber; use sp_core::H256; -use sp_domains::DomainId; #[cfg(feature = "std")] use sp_externalities::ExternalitiesExt; use sp_runtime::OpaqueExtrinsic; @@ -22,32 +20,7 @@ use sp_weights::Weight; /// Domain fraud proof related runtime interface #[runtime_interface] pub trait FraudProofRuntimeInterface { - /// Returns required fraud proof verification information to the runtime through host function. - fn get_fraud_proof_verification_info( - &mut self, - consensus_block_hash: H256, - fraud_proof_verification_req: FraudProofVerificationInfoRequest, - ) -> Option { - self.extension::() - .expect("No `FraudProofExtension` associated for the current context!") - .get_fraud_proof_verification_info(consensus_block_hash, fraud_proof_verification_req) - } - /// Derive the bundle digest for the given bundle body. - #[version(1)] - fn derive_bundle_digest( - &mut self, - consensus_block_hash: H256, - domain_id: DomainId, - bundle_body: Vec, - ) -> Option { - self.extension::() - .expect("No `FraudProofExtension` associated for the current context!") - .derive_bundle_digest(consensus_block_hash, domain_id, bundle_body) - } - - /// Derive the bundle digest for the given bundle body. - #[version(2)] fn derive_bundle_digest( &mut self, domain_runtime_code: Vec, @@ -55,34 +28,10 @@ pub trait FraudProofRuntimeInterface { ) -> Option { self.extension::() .expect("No `FraudProofExtension` associated for the current context!") - .derive_bundle_digest_v2(domain_runtime_code, bundle_body) - } - - /// Check the execution proof - // TODO: remove before the new network - #[version(1)] - fn execution_proof_check( - &mut self, - pre_state_root: H256, - encoded_proof: Vec, - execution_method: &str, - call_data: &[u8], - domain_runtime_code: Vec, - ) -> Option> { - self.extension::() - .expect("No `FraudProofExtension` associated for the current context!") - .execution_proof_check( - (Default::default(), Default::default()), - pre_state_root, - encoded_proof, - execution_method, - call_data, - domain_runtime_code, - ) + .derive_bundle_digest(domain_runtime_code, bundle_body) } /// Check the execution proof with also included domain block id. - #[version(2)] fn execution_proof_check( &mut self, domain_block_id: (BlockNumber, H256), @@ -104,7 +53,6 @@ pub trait FraudProofRuntimeInterface { ) } - #[version(1)] fn check_extrinsics_in_single_context( &mut self, domain_runtime_code: Vec, @@ -124,7 +72,6 @@ pub trait FraudProofRuntimeInterface { ) } - #[version(1)] fn construct_domain_inherent_extrinsic( &mut self, domain_runtime_code: Vec, @@ -138,7 +85,6 @@ pub trait FraudProofRuntimeInterface { ) } - #[version(1)] fn domain_storage_key( &mut self, domain_runtime_code: Vec, @@ -149,7 +95,6 @@ pub trait FraudProofRuntimeInterface { .domain_storage_key(domain_runtime_code, req) } - #[version(1)] fn domain_runtime_call( &mut self, domain_runtime_code: Vec, @@ -160,7 +105,6 @@ pub trait FraudProofRuntimeInterface { .domain_runtime_call(domain_runtime_code, call) } - #[version(1)] fn bundle_weight( &mut self, domain_runtime_code: Vec, @@ -171,7 +115,6 @@ pub trait FraudProofRuntimeInterface { .bundle_weight(domain_runtime_code, bundle_body) } - #[version(1)] fn extract_xdm_mmr_proof( &mut self, domain_runtime_code: Vec, diff --git a/crates/sp-domains-fraud-proof/src/storage_proof.rs b/crates/sp-domains-fraud-proof/src/storage_proof.rs index 2ced96ff0b..cda26cfd54 100644 --- a/crates/sp-domains-fraud-proof/src/storage_proof.rs +++ b/crates/sp-domains-fraud-proof/src/storage_proof.rs @@ -420,7 +420,7 @@ pub struct DomainInherentExtrinsicDataProof { pub dynamic_cost_of_storage_proof: DynamicCostOfStorageProof, pub consensus_chain_byte_fee_proof: ConsensusTransactionByteFeeProof, pub domain_chain_allowlist_proof: DomainChainsAllowlistUpdateStorageProof, - pub maybe_domain_sudo_call_proof: Option, + pub domain_sudo_call_proof: DomainSudoCallStorageProof, } impl DomainInherentExtrinsicDataProof { @@ -436,7 +436,6 @@ impl DomainInherentExtrinsicDataProof { domain_id: DomainId, block_hash: Block::Hash, maybe_runtime_id: Option, - should_include_domain_sudo_call: bool, ) -> Result { let timestamp_proof = TimestampStorageProof::generate(proof_provider, block_hash, (), storage_key_provider)?; @@ -465,20 +464,12 @@ impl DomainInherentExtrinsicDataProof { storage_key_provider, )?; - // Domain sudo call is optional since both Consensus and domain runtimes needs to have the functionality. - // If only consensus runtime is upgraded but not Domain, the storage proof will never contain the data - // Since sudo call extrinsic on Consensus will never go through. - // but it can still generate empty storage proof in this case - let maybe_domain_sudo_call_proof = if should_include_domain_sudo_call { - Some(DomainSudoCallStorageProof::generate( - proof_provider, - block_hash, - domain_id, - storage_key_provider, - )?) - } else { - None - }; + let domain_sudo_call_proof = DomainSudoCallStorageProof::generate( + proof_provider, + block_hash, + domain_id, + storage_key_provider, + )?; Ok(Self { timestamp_proof, @@ -486,7 +477,7 @@ impl DomainInherentExtrinsicDataProof { dynamic_cost_of_storage_proof, consensus_chain_byte_fee_proof, domain_chain_allowlist_proof, - maybe_domain_sudo_call_proof, + domain_sudo_call_proof, }) } @@ -532,26 +523,18 @@ impl DomainInherentExtrinsicDataProof { state_root, )?; - let domain_sudo_call = - if let Some(domain_sudo_call_proof) = &self.maybe_domain_sudo_call_proof { - Some( - >::verify::( - domain_sudo_call_proof.clone(), - domain_id, - state_root, - )?, - ) - } else { - None - }; + let domain_sudo_call = >::verify::< + SKP, + >( + self.domain_sudo_call_proof.clone(), domain_id, state_root + )?; Ok(DomainInherentExtrinsicData { timestamp, maybe_domain_runtime_upgrade, consensus_transaction_byte_fee, domain_chain_allowlist, - maybe_sudo_runtime_call: domain_sudo_call - .and_then(|domain_sudo_call| domain_sudo_call.maybe_call), + maybe_sudo_runtime_call: domain_sudo_call.maybe_call, }) } } diff --git a/crates/sp-domains-fraud-proof/src/tests.rs b/crates/sp-domains-fraud-proof/src/tests.rs index a7b13067d1..9de3d2d39d 100644 --- a/crates/sp-domains-fraud-proof/src/tests.rs +++ b/crates/sp-domains-fraud-proof/src/tests.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + use crate::test_ethereum_tx::{ EIP1559UnsignedTransaction, EIP2930UnsignedTransaction, LegacyUnsignedTransaction, }; diff --git a/crates/sp-domains-fraud-proof/src/verification.rs b/crates/sp-domains-fraud-proof/src/verification.rs index 2cef0728f8..4baaffef68 100644 --- a/crates/sp-domains-fraud-proof/src/verification.rs +++ b/crates/sp-domains-fraud-proof/src/verification.rs @@ -233,14 +233,14 @@ where pub fn verify_invalid_state_transition_fraud_proof( bad_receipt: ExecutionReceipt< NumberFor, - ::Hash, + CBlock::Hash, DomainHeader::Number, DomainHeader::Hash, Balance, >, bad_receipt_parent: ExecutionReceipt< NumberFor, - ::Hash, + CBlock::Hash, DomainHeader::Number, DomainHeader::Hash, Balance, @@ -532,7 +532,7 @@ pub fn verify_invalid_bundles_fraud_proof, invalid_bundles_fraud_proof: &InvalidBundlesProof< NumberFor, - ::Hash, + CBlock::Hash, MmrHash, DomainHeader, >, @@ -608,7 +608,7 @@ where let domain_tx_range = U256::MAX / INITIAL_DOMAIN_TX_RANGE; let bundle_vrf_hash = - U256::from_be_bytes(bundle.sealed_header.header.proof_of_election.vrf_hash()); + U256::from_be_bytes(*bundle.sealed_header.header.proof_of_election.vrf_hash()); let is_tx_in_range = fraud_proof_runtime_interface::domain_runtime_call( domain_runtime_code, diff --git a/crates/sp-domains/Cargo.toml b/crates/sp-domains/Cargo.toml index 4046e769f4..f5bc289186 100644 --- a/crates/sp-domains/Cargo.toml +++ b/crates/sp-domains/Cargo.toml @@ -14,7 +14,7 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] blake2 = { version = "0.10.6", default-features = false } domain-runtime-primitives = { version = "0.1.0", default-features = false, path = "../../domains/primitives/runtime" } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } hash-db = { version = "0.16.0", default-features = false } memory-db = { version = "0.32.0", default-features = false } hexlit = "0.5.5" @@ -23,17 +23,17 @@ rand = { version = "0.8.5", default-features = false } rand_chacha = { version = "0.3.1", default-features = false } rs_merkle = { version = "1.4.2", default-features = false } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -serde = { version = "1.0.206", default-features = false, features = ["alloc", "derive"] } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-application-crypto = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime-interface = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-state-machine = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-trie = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-weights = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +serde = { version = "1.0.110", default-features = false, features = ["alloc", "derive"] } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-application-crypto = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime-interface = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-state-machine = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-trie = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-weights = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", default-features = false, path = "../subspace-core-primitives" } subspace-runtime-primitives = { version = "0.1.0", default-features = false, path = "../subspace-runtime-primitives" } trie-db = { version = "0.29.1", default-features = false } diff --git a/crates/sp-domains/src/bundle_producer_election.rs b/crates/sp-domains/src/bundle_producer_election.rs index 78fac33e0b..2a79af2c16 100644 --- a/crates/sp-domains/src/bundle_producer_election.rs +++ b/crates/sp-domains/src/bundle_producer_election.rs @@ -82,10 +82,10 @@ pub(crate) fn verify_vrf_signature( Ok(()) } -pub fn check_proof_of_election( +pub fn check_proof_of_election( operator_signing_key: &OperatorPublicKey, bundle_slot_probability: (u64, u64), - proof_of_election: &ProofOfElection, + proof_of_election: &ProofOfElection, operator_stake: StakeWeight, total_domain_stake: StakeWeight, ) -> Result<(), ProofOfElectionError> { diff --git a/crates/sp-domains/src/core_api.rs b/crates/sp-domains/src/core_api.rs index 639a9e6bd2..90a07c3a76 100644 --- a/crates/sp-domains/src/core_api.rs +++ b/crates/sp-domains/src/core_api.rs @@ -16,15 +16,14 @@ use subspace_runtime_primitives::Moment; sp_api::decl_runtime_apis! { /// Base API that every domain runtime must implement. - #[api_version(2)] pub trait DomainCoreApi { /// Extracts the optional signer per extrinsic. fn extract_signer( extrinsics: Vec<::Extrinsic>, - ) -> Vec<(Option, ::Extrinsic)>; + ) -> Vec<(Option, Block::Extrinsic)>; fn is_within_tx_range( - extrinsic: &::Extrinsic, + extrinsic: &Block::Extrinsic, bundle_vrf_hash: &U256, tx_range: &U256, ) -> bool; @@ -33,10 +32,10 @@ sp_api::decl_runtime_apis! { fn intermediate_roots() -> Vec<[u8; 32]>; /// Returns the storage root after initializing the block. - fn initialize_block_with_post_state_root(header: &::Header) -> Vec; + fn initialize_block_with_post_state_root(header: &Block::Header) -> Vec; /// Returns the storage root after applying the extrinsic. - fn apply_extrinsic_with_post_state_root(extrinsic: ::Extrinsic) -> Vec; + fn apply_extrinsic_with_post_state_root(extrinsic: Block::Extrinsic) -> Vec; /// Returns an encoded extrinsic aiming to upgrade the runtime using given code. fn construct_set_code_extrinsic(code: Vec) -> Vec; @@ -51,22 +50,22 @@ sp_api::decl_runtime_apis! { fn construct_domain_update_chain_allowlist_extrinsic(updates: DomainAllowlistUpdates) -> Block::Extrinsic; /// Returns true if the extrinsic is an inherent extrinsic. - fn is_inherent_extrinsic(extrinsic: &::Extrinsic) -> bool; + fn is_inherent_extrinsic(extrinsic: &Block::Extrinsic) -> bool; /// Checks the validity of array of extrinsics + pre_dispatch /// returning failure on first extrinsic that fails runtime call. /// IMPORTANT: Change `CHECK_EXTRINSICS_AND_DO_PRE_DISPATCH_METHOD_NAME` constant when this method name is changed - fn check_extrinsics_and_do_pre_dispatch(uxts: Vec<::Extrinsic>, block_number: NumberFor, - block_hash: ::Hash) -> Result<(), CheckExtrinsicsValidityError>; + fn check_extrinsics_and_do_pre_dispatch(uxts: Vec, block_number: NumberFor, + block_hash: Block::Hash) -> Result<(), CheckExtrinsicsValidityError>; /// Decodes the domain specific extrinsic from the opaque extrinsic. fn decode_extrinsic( opaque_extrinsic: sp_runtime::OpaqueExtrinsic, - ) -> Result<::Extrinsic, DecodeExtrinsicError>; + ) -> Result; /// Returns extrinsic Era if present. fn extrinsic_era( - extrinsic: &::Extrinsic + extrinsic: &Block::Extrinsic ) -> Option; /// Returns the extrinsic weight. diff --git a/crates/sp-domains/src/lib.rs b/crates/sp-domains/src/lib.rs index 3495acf64c..f4378d0fa8 100644 --- a/crates/sp-domains/src/lib.rs +++ b/crates/sp-domains/src/lib.rs @@ -68,7 +68,8 @@ use sp_weights::Weight; #[cfg(feature = "std")] use std::collections::BTreeSet; use subspace_core_primitives::crypto::blake3_hash; -use subspace_core_primitives::{bidirectional_distance, Blake3Hash, PotOutput, Randomness, U256}; +use subspace_core_primitives::pot::PotOutput; +use subspace_core_primitives::{bidirectional_distance, Blake3Hash, Randomness, U256}; use subspace_runtime_primitives::{Balance, Moment}; /// Key type for Operator. @@ -280,8 +281,6 @@ pub struct BlockFees { /// Burned balances on domain chain pub burned_balance: Balance, /// Rewards for the chain. - // TODO: remove this before mainnet. Skipping to maintain compatibility with Gemini - #[codec(skip)] pub chain_rewards: BTreeMap, } @@ -342,7 +341,7 @@ pub const INITIAL_DOMAIN_TX_RANGE: u64 = 3; #[derive(Debug, Decode, Encode, TypeInfo, PartialEq, Eq, Clone)] pub struct BundleHeader { /// Proof of bundle producer election. - pub proof_of_election: ProofOfElection, + pub proof_of_election: ProofOfElection, /// Execution receipt that should extend the receipt chain or add confirmations /// to the head receipt. pub receipt: ExecutionReceipt< @@ -712,7 +711,7 @@ impl< } #[derive(Debug, Decode, Encode, TypeInfo, PartialEq, Eq, Clone)] -pub struct ProofOfElection { +pub struct ProofOfElection { /// Domain id. pub domain_id: DomainId, /// The slot number. @@ -723,15 +722,9 @@ pub struct ProofOfElection { pub vrf_signature: VrfSignature, /// Operator index in the OperatorRegistry. pub operator_id: OperatorId, - /// TODO: this field is only used in the bundle equivocation FP which is removed, - /// also this field is problematic see - /// so remove this field before next network - /// - /// Consensus block hash at which proof of election was derived. - pub consensus_block_hash: CHash, } -impl ProofOfElection { +impl ProofOfElection { pub fn verify_vrf_signature( &self, operator_signing_key: &OperatorPublicKey, @@ -760,7 +753,7 @@ impl ProofOfElection { } } -impl ProofOfElection { +impl ProofOfElection { #[cfg(any(feature = "std", feature = "runtime-benchmarks"))] pub fn dummy(domain_id: DomainId, operator_id: OperatorId) -> Self { let output_bytes = sp_std::vec![0u8; VrfPreOutput::max_encoded_len()]; @@ -775,7 +768,6 @@ impl ProofOfElection { proof_of_time: PotOutput::default(), vrf_signature, operator_id, - consensus_block_hash: Default::default(), } } } @@ -785,7 +777,7 @@ impl ProofOfElection { #[derive(Debug, Decode, Encode, TypeInfo, PartialEq, Eq, Clone)] pub struct SingletonReceipt { /// Proof of receipt producer election. - pub proof_of_election: ProofOfElection, + pub proof_of_election: ProofOfElection, /// The receipt to submit pub receipt: ExecutionReceipt< Number, @@ -948,37 +940,9 @@ pub type EpochIndex = u32; /// Type representing operator ID pub type OperatorId = u64; -/// Staking specific hold identifier -#[derive( - PartialEq, Eq, Clone, Encode, Decode, TypeInfo, MaxEncodedLen, Ord, PartialOrd, Copy, Debug, -)] -pub enum StakingHoldIdentifier { - /// Holds all the currently staked funds to an Operator. - Staked(OperatorId), -} - /// Channel identity. pub type ChannelId = sp_core::U256; -/// Messenger specific hold identifier -#[derive( - PartialEq, Eq, Clone, Encode, Decode, TypeInfo, MaxEncodedLen, Ord, PartialOrd, Copy, Debug, -)] -pub enum MessengerHoldIdentifier { - /// Holds the current reserved balance for channel opening - Channel((ChainId, ChannelId)), -} - -/// Domains specific Identifier for Balances holds. -#[derive( - PartialEq, Eq, Clone, Encode, Decode, TypeInfo, MaxEncodedLen, Ord, PartialOrd, Copy, Debug, -)] -pub enum DomainsHoldIdentifier { - Staking(StakingHoldIdentifier), - DomainInstantiation(DomainId), - StorageFund(OperatorId), -} - /// Domains specific digest item. #[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] pub enum DomainDigestItem { @@ -1098,14 +1062,6 @@ pub struct DomainInstanceData { pub raw_genesis: RawGenesis, } -#[derive(Debug, Decode, Encode, TypeInfo, Clone)] -pub struct DomainBlockLimit { - /// The max block size for the domain. - pub max_block_size: u32, - /// The max block weight for the domain. - pub max_block_weight: Weight, -} - #[derive(Debug, Decode, Encode, TypeInfo, Clone)] pub struct DomainBundleLimit { /// The max bundle size for the domain. @@ -1444,6 +1400,7 @@ impl DomainAllowlistUpdates { } /// Domain Sudo runtime call. +/// /// This structure exists because we need to generate a storage proof for FP /// and Storage shouldn't be None. So each domain must always hold this value even if /// there is an empty runtime call inside @@ -1506,7 +1463,6 @@ impl OnChainRewards for () { sp_api::decl_runtime_apis! { /// API necessary for domains pallet. - #[api_version(6)] pub trait DomainsApi { /// Submits the transaction bundle via an unsigned extrinsic. fn submit_bundle_unsigned(opaque_bundle: OpaqueBundle, Block::Hash, DomainHeader, Balance>); @@ -1520,15 +1476,6 @@ sp_api::decl_runtime_apis! { extrinsics: Vec, ) -> OpaqueBundles; - /// Extract bundle from the extrinsic if the extrinsic is `submit_bundle`. - fn extract_bundle(extrinsic: Block::Extrinsic) -> Option, Block::Hash, DomainHeader, Balance>>; - - /// Extract the execution receipt stored successfully from the given extrinsics. - fn extract_receipts( - domain_id: DomainId, - extrinsics: Vec, - ) -> Vec>; - /// Generates a randomness seed for extrinsics shuffling. fn extrinsics_shuffling_seed() -> Randomness; @@ -1556,9 +1503,6 @@ sp_api::decl_runtime_apis! { /// Returns the block number of oldest unconfirmed execution receipt. fn oldest_unconfirmed_receipt_number(domain_id: DomainId) -> Option>; - /// Returns the domain block limit of the given domain. - fn domain_block_limit(domain_id: DomainId) -> Option; - /// Returns the domain bundle limit of the given domain. fn domain_bundle_limit(domain_id: DomainId) -> Option; @@ -1594,9 +1538,7 @@ sp_api::decl_runtime_apis! { fn storage_fund_account_balance(operator_id: OperatorId) -> Balance; /// Return if the domain runtime code is upgraded since `at` - // TODO: change from `is_domain_runtime_updraded_since` to `is_domain_runtime_upgraded_since` - // before next network - fn is_domain_runtime_updraded_since(domain_id: DomainId, at: NumberFor) -> Option; + fn is_domain_runtime_upgraded_since(domain_id: DomainId, at: NumberFor) -> Option; /// Return domain sudo call. fn domain_sudo_call(domain_id: DomainId) -> Option>; diff --git a/crates/sp-domains/src/merkle_tree.rs b/crates/sp-domains/src/merkle_tree.rs index 1fffc7eaeb..11053c9646 100644 --- a/crates/sp-domains/src/merkle_tree.rs +++ b/crates/sp-domains/src/merkle_tree.rs @@ -10,7 +10,6 @@ use parity_scale_codec::{Decode, Encode}; use rs_merkle::Hasher; use scale_info::TypeInfo; use sp_runtime::traits::{BlakeTwo256, Hash}; -use subspace_core_primitives::Blake3Hash; /// Merkle tree using [`Blake2b256Algorithm`]. pub type MerkleTree = rs_merkle::MerkleTree; @@ -40,9 +39,9 @@ impl Default for Blake2b256Algorithm { } impl Hasher for Blake2b256Algorithm { - type Hash = Blake3Hash; + type Hash = [u8; 32]; - fn hash(data: &[u8]) -> Blake3Hash { + fn hash(data: &[u8]) -> Self::Hash { let mut hasher = Blake2b::new(); hasher.update(data); hasher.finalize_fixed().into() diff --git a/crates/sp-domains/src/valued_trie.rs b/crates/sp-domains/src/valued_trie.rs index 5e46554452..7a607c1282 100644 --- a/crates/sp-domains/src/valued_trie.rs +++ b/crates/sp-domains/src/valued_trie.rs @@ -29,6 +29,7 @@ type ArrayNode = [CacheNode>; 16]; /// This is a modified version of trie root that takes trie node values instead of deriving from /// the actual data. Taken from `trie-db` as is. +/// /// Note: This is an opportunity to push this change upstream but I'm not sure how to present these /// changes yet. Need to be discussed further. pub fn valued_ordered_trie_root( diff --git a/crates/sp-lightclient/Cargo.toml b/crates/sp-lightclient/Cargo.toml deleted file mode 100644 index bdd6bd506f..0000000000 --- a/crates/sp-lightclient/Cargo.toml +++ /dev/null @@ -1,54 +0,0 @@ -[package] -name = "sp-lightclient" -version = "0.1.0" -authors = ["Vedhavyas Singareddi "] -edition = "2021" -license = "Apache-2.0" -homepage = "https://subspace.network" -repository = "https://github.com/autonomys/subspace" -description = "Light client substrate primitives for Subspace" -include = [ - "/src", - "/Cargo.toml", - "/README.md", -] - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -codec = { package = "parity-scale-codec", version = "3.1.2", default-features = false } -scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -schnorrkel = { version = "0.11.4", default-features = false } -sp-arithmetic = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus-subspace = { version = "0.1.0", path = "../sp-consensus-subspace", default-features = false } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives", default-features = false } -subspace-erasure-coding = { version = "0.1.0", path = "../subspace-erasure-coding", default-features = false } -subspace-verification = { version = "0.1.0", path = "../subspace-verification", default-features = false } - -[dev-dependencies] -frame-support = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -futures = "0.3.29" -rand = { version = "0.8.5", features = ["min_const_gen"] } -sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -subspace-archiving = { version = "0.1.0", path = "../subspace-archiving" } -subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives" } -subspace-farmer-components = { version = "0.1.0", path = "../subspace-farmer-components" } -subspace-proof-of-space = { version = "0.1.0", path = "../subspace-proof-of-space" } - -[features] -default = ["std"] -std = [ - "codec/std", - "scale-info/std", - "schnorrkel/std", - "sp-arithmetic/std", - "sp-consensus-slots/std", - "sp-consensus-subspace/std", - "sp-runtime/std", - "sp-std/std", - "subspace-core-primitives/std", - "subspace-verification/std" -] diff --git a/crates/sp-lightclient/README.md b/crates/sp-lightclient/README.md deleted file mode 100644 index 866ed17091..0000000000 --- a/crates/sp-lightclient/README.md +++ /dev/null @@ -1 +0,0 @@ -# Light client substrate primitives for Subspace diff --git a/crates/sp-lightclient/src/lib.rs b/crates/sp-lightclient/src/lib.rs deleted file mode 100644 index ad0d631a4c..0000000000 --- a/crates/sp-lightclient/src/lib.rs +++ /dev/null @@ -1,912 +0,0 @@ -// Copyright (C) 2021 Subspace Labs, Inc. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -//! Light client substrate primitives for Subspace. -#![forbid(unsafe_code)] -#![warn(rust_2018_idioms, missing_docs)] -#![cfg_attr(not(feature = "std"), no_std)] - -// TODO: Unlock tests for PoT as well once PoT implementation settled (there are multiple items with -// this conditional compilation in the file -#[cfg(all(test, not(feature = "pot")))] -mod mock; -#[cfg(all(test, not(feature = "pot")))] -mod tests; - -use codec::{Decode, Encode}; -use scale_info::TypeInfo; -use sp_arithmetic::traits::{CheckedAdd, CheckedSub, One, Zero}; -use sp_consensus_slots::Slot; -use sp_consensus_subspace::consensus::verify_solution; -use sp_consensus_subspace::digests::{ - extract_pre_digest, extract_subspace_digest_items, verify_next_digests, CompatibleDigestItem, - Error as DigestError, ErrorDigestType, NextDigestsVerificationParams, PreDigest, - SubspaceDigestItems, -}; -use sp_consensus_subspace::{FarmerPublicKey, FarmerSignature}; -use sp_runtime::traits::Header as HeaderT; -use sp_runtime::ArithmeticError; -use sp_std::cmp::Ordering; -use sp_std::collections::btree_map::BTreeMap; -use sp_std::marker::PhantomData; -use sp_std::num::NonZeroU64; -#[cfg(not(feature = "pot"))] -use subspace_core_primitives::Randomness; -use subspace_core_primitives::{ - ArchivedHistorySegment, BlockWeight, HistorySize, PublicKey, RewardSignature, SectorId, - SegmentCommitment, SegmentIndex, SolutionRange, REWARD_SIGNING_CONTEXT, -}; -use subspace_verification::{ - calculate_block_weight, check_reward_signature, PieceCheckParams, VerifySolutionParams, -}; - -/// Chain constants. -#[derive(Debug, Encode, Decode, Clone, TypeInfo)] -pub struct ChainConstants { - /// K Depth at which we finalize the heads. - pub k_depth: NumberOf
, - /// Genesis digest items at the start of the chain since the genesis block will not have any - /// digests to verify the Block #1 digests. - pub genesis_digest_items: NextDigestItems, - /// Genesis block segment commitments to verify the Block #1 and other block solutions until - /// Block #1 is finalized. - /// When Block #1 is finalized, these segment commitments are present in Block #1 are stored in - /// the storage. - pub genesis_segment_commitments: BTreeMap, - /// Defines interval at which randomness is updated. - #[cfg(not(feature = "pot"))] - pub global_randomness_interval: NumberOf
, - /// Era duration at which solution range is updated. - pub era_duration: NumberOf
, - /// Slot probability. - pub slot_probability: (u64, u64), - /// Storage bound for the light client store. - pub storage_bound: StorageBound>, - /// Number of latest archived segments that are considered "recent history". - pub recent_segments: HistorySize, - /// Fraction of pieces from the "recent history" (`recent_segments`) in each sector. - pub recent_history_fraction: (HistorySize, HistorySize), - /// Minimum lifetime of a plotted sector, measured in archived segment. - pub min_sector_lifetime: HistorySize, -} - -/// Defines the storage bound for the light client store. -#[derive(Default, Debug, Encode, Decode, TypeInfo, Clone)] -pub enum StorageBound { - /// Keeps all the headers in the storage. - #[default] - Unbounded, - /// Keeps only # number of headers beyond K depth. - NumberOfHeaderToKeepBeyondKDepth(Number), -} - -/// HeaderExt describes an extended block chain header at a specific height along with some computed -/// values. -#[derive(Default, Debug, Encode, Decode, Clone, Eq, PartialEq, TypeInfo)] -pub struct HeaderExt
{ - /// Actual header of the subspace block chain at a specific number. - pub header: Header, - /// Cumulative weight of chain until this header. - pub total_weight: BlockWeight, - /// Slot at which current era started. - pub era_start_slot: Slot, - /// Should adjust solution range on era change. - pub should_adjust_solution_range: bool, - /// Solution range override for the current era. - pub maybe_current_solution_range_override: Option, - /// Solution range override for the next era. - pub maybe_next_solution_range_override: Option, - /// Restrict block authoring to this public key. - pub maybe_root_plot_public_key: Option, - - #[cfg(all(test, not(feature = "pot")))] - test_overrides: mock::TestOverrides, -} - -/// Type to hold next digest items present in parent header that are used to verify the immediate -/// descendant. -#[derive(Default, Debug, Encode, Decode, Clone, TypeInfo)] -pub struct NextDigestItems { - #[cfg(not(feature = "pot"))] - next_global_randomness: Randomness, - next_solution_range: SolutionRange, -} - -impl NextDigestItems { - /// Constructs self with provided next digest items. - pub fn new( - #[cfg(not(feature = "pot"))] next_global_randomness: Randomness, - next_solution_range: SolutionRange, - ) -> Self { - Self { - #[cfg(not(feature = "pot"))] - next_global_randomness, - next_solution_range, - } - } -} - -impl HeaderExt
{ - /// Extracts the next digest items Randomness, Solution range, and Salt present in the Header. - /// If next digests are not present, then we fallback to the current ones. - fn extract_next_digest_items(&self) -> Result> { - let SubspaceDigestItems { - #[cfg(not(feature = "pot"))] - global_randomness, - solution_range, - #[cfg(not(feature = "pot"))] - next_global_randomness, - next_solution_range, - .. - } = extract_subspace_digest_items::<_, FarmerPublicKey, FarmerPublicKey, FarmerSignature>( - &self.header, - )?; - - // if there is override for solution range for current era, override it - let solution_range = self - .maybe_current_solution_range_override - .unwrap_or(solution_range); - - #[cfg(all(test, not(feature = "pot")))] - let solution_range = { - if self.test_overrides.solution_range.is_some() { - self.test_overrides.solution_range.unwrap() - } else { - solution_range - } - }; - - #[cfg(all(test, not(feature = "pot")))] - let next_solution_range = { - if self.test_overrides.next_solution_range.is_some() { - self.test_overrides.next_solution_range - } else { - next_solution_range - } - }; - - Ok(NextDigestItems { - #[cfg(not(feature = "pot"))] - next_global_randomness: next_global_randomness.unwrap_or(global_randomness), - next_solution_range: next_solution_range.unwrap_or(solution_range), - }) - } -} - -type HashOf = ::Hash; -type NumberOf = ::Number; - -/// Storage responsible for storing headers. -pub trait Storage { - /// Returns the chain constants. - fn chain_constants(&self) -> ChainConstants
; - - /// Queries a header at a specific block number or block hash. - fn header(&self, hash: HashOf
) -> Option>; - - /// Stores the extended header. - /// `as_best_header` signifies of the header we are importing is considered best. - fn store_header(&mut self, header_ext: HeaderExt
, as_best_header: bool); - - /// Returns the best known tip of the chain. - fn best_header(&self) -> HeaderExt
; - - /// Returns headers at a given number. - fn headers_at_number(&self, number: NumberOf
) -> Vec>; - - /// Prunes header with hash. - fn prune_header(&mut self, hash: HashOf
); - - /// Marks a given header with hash as finalized. - fn finalize_header(&mut self, hash: HashOf
); - - /// Returns the latest finalized header. - fn finalized_header(&self) -> HeaderExt
; - - /// Stores segment commitments for fast retrieval by segment index at or below finalized header. - fn store_segment_commitments( - &mut self, - segment_commitments: BTreeMap, - ); - - /// Returns a segment commitment for a given segment index. - fn segment_commitment(&self, segment_index: SegmentIndex) -> Option; - - /// Returns the stored segment count. - // TODO: Ideally should use `HistorySize` instead of `u64` - fn number_of_segments(&self) -> u64; - - /// How many pieces one sector is supposed to contain (max) - fn max_pieces_in_sector(&self) -> u16; -} - -/// Error type that holds the current finalized number and the header number we are trying to import. -#[derive(Debug, PartialEq, Eq)] -pub struct HeaderBelowArchivingDepthError { - current_finalized_number: NumberOf
, - header_number: NumberOf
, -} - -/// Error during the header import. -#[derive(Debug, PartialEq, Eq)] -pub enum ImportError { - /// Header already imported. - HeaderAlreadyImported, - /// Missing parent header. - MissingParent(HashOf
), - /// Missing header associated with hash. - MissingHeader(HashOf
), - /// Missing ancestor header at the number. - MissingAncestorHeader(HashOf
, NumberOf
), - /// Error while extracting digests from header. - DigestError(DigestError), - /// Invalid digest in the header. - InvalidDigest(ErrorDigestType), - /// Invalid slot when compared with parent header. - InvalidSlot, - /// Block signature is invalid. - InvalidBlockSignature, - /// Solution present in the header is invalid. - InvalidSolution(String), - /// Arithmetic error. - ArithmeticError(ArithmeticError), - /// Switched to different fork beyond archiving depth. - SwitchedToForkBelowArchivingDepth, - /// Header being imported is below the archiving depth. - HeaderIsBelowArchivingDepth(HeaderBelowArchivingDepthError
), - /// Missing segment commitment for a given segment index. - MissingSegmentCommitment(SegmentIndex), - /// Incorrect block author. - IncorrectBlockAuthor(FarmerPublicKey), - /// Segment commitment history is empty - EmptySegmentCommitmentHistory, - /// Invalid history size - InvalidHistorySize, -} - -impl From for ImportError
{ - #[inline] - fn from(error: DigestError) -> Self { - ImportError::DigestError(error) - } -} - -/// Verifies and import headers. -#[derive(Debug)] -pub struct HeaderImporter> { - store: Store, - _phantom: PhantomData
, -} - -impl> HeaderImporter { - /// Returns a new instance of HeaderImporter with provided Storage impls - pub fn new(store: Store) -> Self { - HeaderImporter { - store, - _phantom: Default::default(), - } - } - - /// Verifies header, computes consensus values for block progress and stores the HeaderExt. - pub fn import_header(&mut self, mut header: Header) -> Result<(), ImportError
> { - // check if the header is already imported - match self.store.header(header.hash()) { - Some(_) => Err(ImportError::HeaderAlreadyImported), - None => Ok(()), - }?; - - // only try and import headers above the finalized number - let current_finalized_number = *self.store.finalized_header().header.number(); - if *header.number() <= current_finalized_number { - return Err(ImportError::HeaderIsBelowArchivingDepth( - HeaderBelowArchivingDepthError { - current_finalized_number, - header_number: *header.number(), - }, - )); - } - - // fetch parent header - let parent_header = self - .store - .header(*header.parent_hash()) - .ok_or_else(|| ImportError::MissingParent(header.hash()))?; - - // verify global randomness and solution range from the parent header - let header_digests = self.verify_header_digest_with_parent(&parent_header, &header)?; - - // verify next digest items - let constants = self.store.chain_constants(); - let mut maybe_root_plot_public_key = parent_header.maybe_root_plot_public_key; - if let Some(root_plot_public_key) = &maybe_root_plot_public_key { - if root_plot_public_key != &header_digests.pre_digest.solution().public_key { - return Err(ImportError::IncorrectBlockAuthor( - header_digests.pre_digest.solution().public_key.clone(), - )); - } - } - - let mut should_adjust_solution_range = parent_header.should_adjust_solution_range; - let mut maybe_next_solution_range_override = - parent_header.maybe_next_solution_range_override; - verify_next_digests::
(NextDigestsVerificationParams { - number: *header.number(), - header_digests: &header_digests, - #[cfg(not(feature = "pot"))] - global_randomness_interval: constants.global_randomness_interval, - era_duration: constants.era_duration, - slot_probability: constants.slot_probability, - era_start_slot: parent_header.era_start_slot, - should_adjust_solution_range: &mut should_adjust_solution_range, - maybe_next_solution_range_override: &mut maybe_next_solution_range_override, - maybe_root_plot_public_key: &mut maybe_root_plot_public_key, - })?; - - // slot must be strictly increasing from the parent header - Self::verify_slot(&parent_header.header, &header_digests.pre_digest)?; - - // verify block signature - Self::verify_block_signature( - &mut header, - &header_digests.pre_digest.solution().public_key, - )?; - - // verify solution - let sector_id = SectorId::new( - PublicKey::from(&header_digests.pre_digest.solution().public_key).hash(), - header_digests.pre_digest.solution().sector_index, - ); - - let max_pieces_in_sector = self.store.max_pieces_in_sector(); - - let segment_index = sector_id - .derive_piece_index( - header_digests.pre_digest.solution().piece_offset, - header_digests.pre_digest.solution().history_size, - max_pieces_in_sector, - constants.recent_segments, - constants.recent_history_fraction, - ) - .segment_index(); - - let segment_commitment = self - .find_segment_commitment_for_segment_index(segment_index, parent_header.header.hash())? - .ok_or(ImportError::MissingSegmentCommitment(segment_index))?; - let current_history_size = HistorySize::new( - NonZeroU64::try_from(self.store.number_of_segments()) - .map_err(|_error| ImportError::EmptySegmentCommitmentHistory)?, - ); - let sector_expiration_check_segment_commitment = self - .find_segment_commitment_for_segment_index( - header_digests - .pre_digest - .solution() - .history_size - .sector_expiration_check(constants.min_sector_lifetime) - .ok_or(ImportError::InvalidHistorySize)? - .segment_index(), - parent_header.header.hash(), - )?; - - verify_solution( - header_digests.pre_digest.solution().into(), - header_digests.pre_digest.slot().into(), - (&VerifySolutionParams { - #[cfg(not(feature = "pot"))] - global_randomness: header_digests.global_randomness, - #[cfg(feature = "pot")] - proof_of_time: header_digests.pre_digest.pot_info().proof_of_time(), - solution_range: header_digests.solution_range, - piece_check_params: Some(PieceCheckParams { - max_pieces_in_sector, - segment_commitment, - recent_segments: constants.recent_segments, - recent_history_fraction: constants.recent_history_fraction, - min_sector_lifetime: constants.min_sector_lifetime, - current_history_size, - sector_expiration_check_segment_commitment, - }), - }) - .into(), - ) - .map_err(ImportError::InvalidSolution)?; - - let added_weight = calculate_block_weight(header_digests.solution_range); - let total_weight = parent_header.total_weight + added_weight; - - // last best header should ideally be parent header. if not check for forks and pick the best chain - let last_best_header = self.store.best_header(); - let last_best_weight = last_best_header.total_weight; - let is_best_header = total_weight > last_best_weight; - - // check if era has changed - let era_start_slot = if Self::has_era_changed(&header, constants.era_duration) { - header_digests.pre_digest.slot() - } else { - parent_header.era_start_slot - }; - - // check if we should update current solution range override - let mut maybe_current_solution_range_override = - parent_header.maybe_current_solution_range_override; - - // if there is override of solution range in this header, use it - if let Some(current_solution_range_override) = - header_digests.enable_solution_range_adjustment_and_override - { - maybe_current_solution_range_override = current_solution_range_override; - } - - // check if the era has changed and there is a current solution range override, reset it - if maybe_current_solution_range_override.is_some() - && Self::has_era_changed(&header, constants.era_duration) - { - maybe_current_solution_range_override = None - } - - // store header - let header_ext = HeaderExt { - header, - total_weight, - era_start_slot, - should_adjust_solution_range, - maybe_current_solution_range_override, - maybe_next_solution_range_override, - maybe_root_plot_public_key, - - #[cfg(all(test, not(feature = "pot")))] - test_overrides: Default::default(), - }; - - self.store.store_header(header_ext, is_best_header); - - // finalize, prune forks, and ensure storage is bounded if the chain has progressed - if is_best_header { - self.finalize_header_at_k_depth()?; - self.ensure_storage_bound(); - } - - Ok(()) - } - - fn has_era_changed(header: &Header, era_duration: NumberOf
) -> bool { - // special case when the current header is one, then first era begins - // or - // era duration interval has reached, so era has changed - header.number().is_one() || *header.number() % era_duration == Zero::zero() - } - - /// Verifies if the header digests matches with logs from the parent header. - fn verify_header_digest_with_parent( - &self, - parent_header: &HeaderExt
, - header: &Header, - ) -> Result< - SubspaceDigestItems, - ImportError
, - > { - // extract digest items from the header - let pre_digest_items = extract_subspace_digest_items(header)?; - // extract next digest items from the parent header - let next_digest_items = { - // if the header we are verifying is #1, then parent header, genesis, wont have the next digests - // instead fetch them from the constants provided by the store - if header.number() == &One::one() { - self.store.chain_constants().genesis_digest_items - } else { - parent_header.extract_next_digest_items()? - } - }; - - // check the digest items against the next digest items from parent header - #[cfg(not(feature = "pot"))] - if pre_digest_items.global_randomness != next_digest_items.next_global_randomness { - return Err(ImportError::InvalidDigest( - ErrorDigestType::GlobalRandomness, - )); - } - - if pre_digest_items.solution_range != next_digest_items.next_solution_range { - return Err(ImportError::InvalidDigest(ErrorDigestType::SolutionRange)); - } - - Ok(pre_digest_items) - } - - /// Verifies that slot present in the header is strictly increasing from the slot in the parent. - fn verify_slot( - parent_header: &Header, - pre_digest: &PreDigest, - ) -> Result<(), ImportError
> { - let parent_pre_digest = extract_pre_digest(parent_header)?; - - if pre_digest.slot() <= parent_pre_digest.slot() { - return Err(ImportError::InvalidSlot); - } - - Ok(()) - } - - /// Verifies the block signature present in the last digest log. - fn verify_block_signature( - header: &mut Header, - public_key: &FarmerPublicKey, - ) -> Result<(), ImportError
> { - let seal = - header - .digest_mut() - .pop() - .ok_or(ImportError::DigestError(DigestError::Missing( - ErrorDigestType::Seal, - )))?; - - let signature = seal - .as_subspace_seal() - .ok_or(ImportError::InvalidDigest(ErrorDigestType::Seal))?; - - // the pre-hash of the header doesn't include the seal and that's what we sign - let pre_hash = header.hash(); - - // verify that block is signed properly - check_reward_signature( - pre_hash.as_ref(), - &RewardSignature::from(&signature), - &PublicKey::from(public_key), - &schnorrkel::context::signing_context(REWARD_SIGNING_CONTEXT), - ) - .map_err(|_| ImportError::InvalidBlockSignature)?; - - // push the seal back into the header - header.digest_mut().push(seal); - Ok(()) - } - - /// Returns the ancestor of the header at number. - fn find_ancestor_of_header_at_number( - &self, - hash: HashOf
, - ancestor_number: NumberOf
, - ) -> Option> { - let header = self.store.header(hash)?; - - // header number must be greater than the ancestor number - if *header.header.number() < ancestor_number { - return None; - } - - let headers_at_ancestor_number = self.store.headers_at_number(ancestor_number); - - // short circuit if there are no fork headers at the ancestor number - if headers_at_ancestor_number.len() == 1 { - return headers_at_ancestor_number.into_iter().next(); - } - - // start tree route till the ancestor - let mut header = header; - while *header.header.number() > ancestor_number { - header = self.store.header(*header.header.parent_hash())?; - } - - Some(header) - } - - /// Prunes header and its descendant header chain(s). - fn prune_header_and_its_descendants( - &mut self, - header: HeaderExt
, - ) -> Result<(), ImportError
> { - // prune the header - self.store.prune_header(header.header.hash()); - - // start pruning all the descendant headers from the current header - // header(at number n) - // / \ - // descendant-1 descendant-2 - // / - // descendant-3 - let mut pruned_parent_hashes = vec![header.header.hash()]; - let mut current_number = *header.header.number(); - - while !pruned_parent_hashes.is_empty() { - current_number = current_number - .checked_add(&One::one()) - .ok_or(ImportError::ArithmeticError(ArithmeticError::Overflow))?; - - // get headers at the current number and filter the headers descended from the pruned parents - let descendant_header_hashes = self - .store - .headers_at_number(current_number) - .into_iter() - .filter(|descendant_header| { - pruned_parent_hashes.contains(descendant_header.header.parent_hash()) - }) - .map(|header| header.header.hash()) - .collect::>>(); - - // prune the descendant headers - descendant_header_hashes - .iter() - .for_each(|hash| self.store.prune_header(*hash)); - - pruned_parent_hashes = descendant_header_hashes; - } - - Ok(()) - } - - /// Returns the total pieces on chain where chain_tip is the hash of the tip of the chain. - /// We count the total segments to calculate total pieces as follows, - /// - Fetch the segment count from the store. - /// - Count the segments from each header that is not finalized. - // TODO: This function will become useful in the future for verifying sector expiration - #[allow(dead_code)] - fn total_pieces(&self, chain_tip: HashOf
) -> Result> { - // fetch the segment count from the store - let segment_commitments_count_till_finalized_header = self.store.number_of_segments(); - - let finalized_header = self.store.finalized_header(); - let mut segment_commitments_count = segment_commitments_count_till_finalized_header; - - // special case when Block #1 is not finalized yet, then include the genesis segment count - if finalized_header.header.number().is_zero() { - segment_commitments_count += self - .store - .chain_constants() - .genesis_segment_commitments - .len() as u64; - } - - // calculate segment count present in each header from header till finalized header - let mut header = self - .store - .header(chain_tip) - .ok_or(ImportError::MissingHeader(chain_tip))?; - - while header.header.hash() != finalized_header.header.hash() { - let digest_items = extract_subspace_digest_items::< - _, - FarmerPublicKey, - FarmerPublicKey, - FarmerSignature, - >(&header.header)?; - segment_commitments_count += digest_items.segment_commitments.len() as u64; - - header = self - .store - .header(*header.header.parent_hash()) - .ok_or_else(|| ImportError::MissingParent(header.header.hash()))?; - } - - Ok(segment_commitments_count * ArchivedHistorySegment::NUM_PIECES as u64) - } - - /// Finds a segment commitment mapped against a segment index in the chain with chain_tip as the - /// tip of the chain. - /// We try to find the segment commitment as follows: - /// - Find segment commitment from the store and return if found. - /// - Find segment commitment from the genesis segment commitment and return if found. - /// - Find the segment commitment present in the non finalized headers. - fn find_segment_commitment_for_segment_index( - &self, - segment_index: SegmentIndex, - chain_tip: HashOf
, - ) -> Result, ImportError
> { - // check if the segment commitment is already in the store - if let Some(segment_commitment) = self.store.segment_commitment(segment_index) { - return Ok(Some(segment_commitment)); - }; - - // special case: check the genesis segment commitments if the Block #1 is not finalized yet - if let Some(segment_commitment) = self - .store - .chain_constants() - .genesis_segment_commitments - .get(&segment_index) - { - return Ok(Some(*segment_commitment)); - } - - // find the segment commitment from the headers which are not finalized yet. - let finalized_header = self.store.finalized_header(); - let mut header = self - .store - .header(chain_tip) - .ok_or(ImportError::MissingHeader(chain_tip))?; - - while header.header.hash() != finalized_header.header.hash() { - let digest_items = extract_subspace_digest_items::< - _, - FarmerPublicKey, - FarmerPublicKey, - FarmerSignature, - >(&header.header)?; - - if let Some(segment_commitment) = digest_items.segment_commitments.get(&segment_index) { - return Ok(Some(*segment_commitment)); - } - - header = self - .store - .header(*header.header.parent_hash()) - .ok_or_else(|| ImportError::MissingParent(header.header.hash()))?; - } - - Ok(None) - } - - /// Stores finalized header and segment commitments present in the header. - fn store_finalized_header_and_segment_commitments( - &mut self, - header: &Header, - ) -> Result<(), ImportError
> { - let digests_items = - extract_subspace_digest_items::<_, FarmerPublicKey, FarmerPublicKey, FarmerSignature>( - header, - )?; - - // mark header as finalized - self.store.finalize_header(header.hash()); - - // store the segment commitments present in the header digests - self.store - .store_segment_commitments(digests_items.segment_commitments); - Ok(()) - } - - /// Finalize the header at K-depth from the best block and prune remaining forks at that number. - /// We want to finalize the header from the current finalized header until the K-depth number of the best. - /// 1. In an ideal scenario, the current finalized head is one number less than number to be finalized. - /// 2. If there was a re-org to longer chain when new header was imported, we do not want to miss - /// pruning fork headers between current and to be finalized number. So we go number by number and prune fork headers. - /// 3. If there was a re-org to a shorter chain and to be finalized header was below the current finalized head, - /// fail and let user know. - fn finalize_header_at_k_depth(&mut self) -> Result<(), ImportError
> { - let k_depth = self.store.chain_constants().k_depth; - let current_finalized_header = self.store.finalized_header(); - - // ensure we have imported at least K-depth number of headers - let number_to_finalize = match self - .store - .best_header() - .header - .number() - .checked_sub(&k_depth) - { - // we have not progressed that far to finalize yet - None => { - // if the chain re-org happened to smaller chain and if there was any finalized heads, - // fail and let the user decide what to do - if *current_finalized_header.header.number() > Zero::zero() { - return Err(ImportError::SwitchedToForkBelowArchivingDepth); - } - - return Ok(()); - } - - Some(number) => number, - }; - - match number_to_finalize.cmp(current_finalized_header.header.number()) { - Ordering::Less => Err(ImportError::SwitchedToForkBelowArchivingDepth), - // nothing to do as we finalized the header already - Ordering::Equal => Ok(()), - // finalize heads one after the other and prune any forks - Ordering::Greater => { - let mut current_finalized_number = *current_finalized_header.header.number(); - - while current_finalized_number < number_to_finalize { - current_finalized_number = current_finalized_number - .checked_add(&One::one()) - .ok_or(ImportError::ArithmeticError(ArithmeticError::Overflow))?; - - // find the headers at the number to be finalized - let headers_at_number_to_be_finalized = - self.store.headers_at_number(current_finalized_number); - // if there is just one header at that number, we mark that header as finalized and move one - if headers_at_number_to_be_finalized.len() == 1 { - let header_to_finalize = headers_at_number_to_be_finalized - .first() - .expect("First item must exist as the len is 1."); - - self.store_finalized_header_and_segment_commitments( - &header_to_finalize.header, - )? - } else { - // there are multiple headers at the number to be finalized. - // find the correct ancestor header of the current best header. - // finalize it and prune all the remaining fork headers. - let current_best_header = self.store.best_header(); - let (current_best_hash, current_best_number) = ( - current_best_header.header.hash(), - *current_best_header.header.number(), - ); - - let header_to_finalize = self - .find_ancestor_of_header_at_number( - current_best_hash, - current_finalized_number, - ) - .ok_or(ImportError::MissingAncestorHeader( - current_best_hash, - current_best_number, - ))?; - - // filter fork headers and prune them - let headers_to_prune = headers_at_number_to_be_finalized - .into_iter() - .filter(|header| { - header.header.hash() != header_to_finalize.header.hash() - }) - .collect::>>(); - - for header_to_prune in headers_to_prune { - self.prune_header_and_its_descendants(header_to_prune)?; - } - - // mark the header as finalized - self.store_finalized_header_and_segment_commitments( - &header_to_finalize.header, - )? - } - } - - Ok(()) - } - } - } - - /// Ensure light client storage is bounded by the defined storage bound constant. - /// If unbounded, we keep all the finalized headers in the store. - /// If bounded, we fetch the finalized head and then prune all the headers - /// beyond K depth as per bounded value. - /// If finalized head is at x and storage is bounded to keep y headers beyond, then - /// prune all headers at and below (x - y - 1) - fn ensure_storage_bound(&mut self) { - let storage_bound = self.store.chain_constants().storage_bound; - let number_of_headers_to_keep_beyond_k_depth = match storage_bound { - // unbounded storage, so return - StorageBound::Unbounded => return, - // bounded storage, keep only # number of headers beyond K depth - StorageBound::NumberOfHeaderToKeepBeyondKDepth(number_of_headers_to_keep) => { - number_of_headers_to_keep - } - }; - - let finalized_head_number = *self.store.finalized_header().header.number(); - // (finalized_number - bound_value - 1) - let mut maybe_prune_headers_from_number = finalized_head_number - .checked_sub(&number_of_headers_to_keep_beyond_k_depth) - .and_then(|number| number.checked_sub(&One::one())); - - let mut headers_to_prune = maybe_prune_headers_from_number - .map(|number| self.store.headers_at_number(number)) - .unwrap_or_default(); - - while !headers_to_prune.is_empty() { - // loop and prune even though there should be only 1 head beyond finalized head - for header in headers_to_prune { - self.store.prune_header(header.header.hash()) - } - - maybe_prune_headers_from_number = - maybe_prune_headers_from_number.and_then(|number| number.checked_sub(&One::one())); - - headers_to_prune = maybe_prune_headers_from_number - .map(|number| self.store.headers_at_number(number)) - .unwrap_or_default(); - } - } -} diff --git a/crates/sp-lightclient/src/mock.rs b/crates/sp-lightclient/src/mock.rs deleted file mode 100644 index 88b2ceef21..0000000000 --- a/crates/sp-lightclient/src/mock.rs +++ /dev/null @@ -1,221 +0,0 @@ -use crate::{ChainConstants, HashOf, HeaderExt, NumberOf, Storage}; -use codec::{Decode, Encode}; -use scale_info::TypeInfo; -use sp_arithmetic::traits::Zero; -#[cfg(feature = "pot")] -use sp_consensus_subspace::PotExtension; -use sp_consensus_subspace::{KzgExtension, PosExtension}; -use sp_io::TestExternalities; -use sp_runtime::traits::{BlakeTwo256, Header as HeaderT}; -use std::collections::{BTreeMap, HashMap}; -use std::sync::OnceLock; -use subspace_core_primitives::crypto::kzg::{embedded_kzg_settings, Kzg}; -use subspace_core_primitives::{BlockWeight, SegmentCommitment, SegmentIndex, SolutionRange}; -use subspace_proof_of_space::shim::ShimTable; - -pub(crate) type PosTable = ShimTable; - -pub(crate) type Header = sp_runtime::generic::Header; - -// Smaller value for testing purposes -const MAX_PIECES_IN_SECTOR: u16 = 32; - -pub(crate) fn kzg_instance() -> &'static Kzg { - static KZG: OnceLock = OnceLock::new(); - - KZG.get_or_init(|| Kzg::new(embedded_kzg_settings())) -} - -#[derive(Debug)] -struct StorageData { - constants: ChainConstants
, - headers: HashMap, HeaderExt
>, - number_to_hashes: HashMap, Vec>>, - best_header: (NumberOf
, HashOf
), - finalized_head: Option<(NumberOf
, HashOf
)>, - segment_commitments: BTreeMap, -} - -#[derive(Default, Debug, Encode, Decode, Clone, Eq, PartialEq, TypeInfo)] -pub(crate) struct TestOverrides { - pub(crate) solution_range: Option, - pub(crate) next_solution_range: Option, -} - -#[derive(Debug)] -pub(crate) struct MockStorage(StorageData); - -impl Storage
for MockStorage { - fn chain_constants(&self) -> ChainConstants
{ - self.0.constants.clone() - } - - fn header(&self, query: HashOf
) -> Option> { - self.0.headers.get(&query).cloned() - } - - fn store_header(&mut self, header_ext: HeaderExt
, as_best_header: bool) { - let (number, hash) = (*header_ext.header.number(), header_ext.header.hash()); - if self.0.headers.insert(hash, header_ext).is_none() { - let mut set = self - .0 - .number_to_hashes - .get(&number) - .cloned() - .unwrap_or_default(); - set.push(hash); - self.0.number_to_hashes.insert(number, set); - } - if as_best_header { - self.0.best_header = (number, hash) - } - } - - fn best_header(&self) -> HeaderExt
{ - let (_, hash) = self.0.best_header; - self.0.headers.get(&hash).cloned().unwrap() - } - - fn headers_at_number(&self, number: NumberOf
) -> Vec> { - self.0 - .number_to_hashes - .get(&number) - .unwrap_or(&vec![]) - .iter() - .map(|hash| self.0.headers.get(hash).cloned().unwrap()) - .collect() - } - - fn prune_header(&mut self, pruned_hash: HashOf
) { - if let Some(pruned_header) = self.0.headers.remove(&pruned_hash) { - let number_to_hashes = self - .0 - .number_to_hashes - .remove(pruned_header.header.number()) - .unwrap_or_default() - .into_iter() - .filter(|hash| *hash != pruned_hash) - .collect(); - - self.0 - .number_to_hashes - .insert(*pruned_header.header.number(), number_to_hashes); - } - } - - fn finalize_header(&mut self, hash: HashOf
) { - let header = self.0.headers.get(&hash).unwrap(); - self.0.finalized_head = Some((*header.header.number(), header.header.hash())) - } - - fn finalized_header(&self) -> HeaderExt
{ - self.0 - .finalized_head - .and_then(|(_, hash)| self.0.headers.get(&hash).cloned()) - .unwrap_or_else(|| { - self.0 - .headers - .get( - self.0 - .number_to_hashes - .get(&Zero::zero()) - .cloned() - .unwrap() - .get(0) - .unwrap(), - ) - .cloned() - .unwrap() - }) - } - - fn store_segment_commitments( - &mut self, - mut segment_commitments: BTreeMap, - ) { - self.0.segment_commitments.append(&mut segment_commitments) - } - - fn segment_commitment(&self, segment_index: SegmentIndex) -> Option { - self.0.segment_commitments.get(&segment_index).cloned() - } - - fn number_of_segments(&self) -> u64 { - self.0.segment_commitments.len() as u64 - } - - fn max_pieces_in_sector(&self) -> u16 { - MAX_PIECES_IN_SECTOR - } -} - -impl MockStorage { - pub(crate) fn new(constants: ChainConstants
) -> Self { - MockStorage(StorageData { - constants, - headers: Default::default(), - number_to_hashes: Default::default(), - best_header: (Default::default(), Default::default()), - finalized_head: None, - segment_commitments: Default::default(), - }) - } - - // hack to adjust the solution range - pub(crate) fn override_solution_range( - &mut self, - hash: HashOf
, - solution_range: SolutionRange, - ) { - let mut header = self.0.headers.remove(&hash).unwrap(); - header.test_overrides.solution_range = Some(solution_range); - self.0.headers.insert(hash, header); - } - - // hack to adjust the next solution range - pub(crate) fn override_next_solution_range( - &mut self, - hash: HashOf
, - next_solution_range: SolutionRange, - ) { - let mut header = self.0.headers.remove(&hash).unwrap(); - header.test_overrides.next_solution_range = Some(next_solution_range); - self.0.headers.insert(hash, header); - } - - // hack to adjust constants when importing Block #1 - pub(crate) fn override_constants(&mut self, constants: ChainConstants
) { - self.0.constants = constants; - } - - // hack to adjust the cumulative weight - pub(crate) fn override_cumulative_weight(&mut self, hash: HashOf
, weight: BlockWeight) { - let mut header = self.0.headers.remove(&hash).unwrap(); - header.total_weight = weight; - self.0.headers.insert(hash, header); - } - - // hack to store segment commitments - pub(crate) fn store_segment_commitment( - &mut self, - segment_index: SegmentIndex, - segment_commitment: SegmentCommitment, - ) { - self.0 - .segment_commitments - .insert(segment_index, segment_commitment); - } -} - -pub fn new_test_ext() -> TestExternalities { - let mut ext = TestExternalities::new_empty(); - - ext.register_extension(KzgExtension::new(kzg_instance().clone())); - ext.register_extension(PosExtension::new::()); - #[cfg(feature = "pot")] - ext.register_extension(PotExtension::new(Box::new( - |parent_hash, slot, proof_of_time| todo!(), - ))); - - ext -} diff --git a/crates/sp-lightclient/src/tests.rs b/crates/sp-lightclient/src/tests.rs deleted file mode 100644 index 96da40490d..0000000000 --- a/crates/sp-lightclient/src/tests.rs +++ /dev/null @@ -1,1497 +0,0 @@ -use crate::mock::{kzg_instance, new_test_ext, Header, MockStorage, PosTable}; -use crate::{ - ChainConstants, DigestError, HashOf, HeaderExt, HeaderImporter, ImportError, NextDigestItems, - NumberOf, Storage, StorageBound, -}; -use frame_support::{assert_err, assert_ok}; -use futures::executor::block_on; -use rand::rngs::StdRng; -use rand::{Rng, SeedableRng}; -use schnorrkel::Keypair; -use sp_consensus_slots::Slot; -#[cfg(not(feature = "pot"))] -use sp_consensus_subspace::digests::derive_next_global_randomness; -use sp_consensus_subspace::digests::{ - derive_next_solution_range, extract_pre_digest, extract_subspace_digest_items, - CompatibleDigestItem, DeriveNextSolutionRangeParams, ErrorDigestType, PreDigest, -}; -use sp_consensus_subspace::{FarmerPublicKey, FarmerSignature}; -use sp_runtime::app_crypto::UncheckedFrom; -use sp_runtime::testing::H256; -use sp_runtime::traits::Header as HeaderT; -use sp_runtime::{Digest, DigestItem}; -use std::iter; -use std::num::{NonZeroU64, NonZeroUsize}; -use std::sync::OnceLock; -use subspace_archiving::archiver::{Archiver, NewArchivedSegment}; -#[cfg(feature = "pot")] -use subspace_core_primitives::PotOutput; -use subspace_core_primitives::{ - BlockWeight, HistorySize, PublicKey, Randomness, Record, RecordedHistorySegment, - SegmentCommitment, SegmentIndex, SlotNumber, Solution, SolutionRange, REWARD_SIGNING_CONTEXT, -}; -use subspace_erasure_coding::ErasureCoding; -use subspace_farmer_components::auditing::audit_sector; -use subspace_farmer_components::plotting::plot_sector; -use subspace_farmer_components::sector::{sector_size, SectorMetadataChecksummed}; -use subspace_farmer_components::FarmerProtocolInfo; -use subspace_proof_of_space::Table; -#[cfg(not(feature = "pot"))] -use subspace_verification::derive_randomness; -use subspace_verification::{calculate_block_weight, verify_solution, VerifySolutionParams}; - -fn erasure_coding_instance() -> &'static ErasureCoding { - static ERASURE_CODING: OnceLock = OnceLock::new(); - - ERASURE_CODING.get_or_init(|| { - ErasureCoding::new( - NonZeroUsize::new(Record::NUM_S_BUCKETS.next_power_of_two().ilog2() as usize) - .expect("Not zero; qed"), - ) - .unwrap() - }) -} - -#[cfg(not(feature = "pot"))] -fn default_randomness() -> Randomness { - Randomness::from([1u8; 32]) -} - -fn default_test_constants() -> ChainConstants
{ - #[cfg(not(feature = "pot"))] - let global_randomness = default_randomness(); - ChainConstants { - k_depth: 7, - genesis_digest_items: NextDigestItems { - #[cfg(not(feature = "pot"))] - next_global_randomness: global_randomness, - next_solution_range: Default::default(), - }, - genesis_segment_commitments: Default::default(), - #[cfg(not(feature = "pot"))] - global_randomness_interval: 20, - era_duration: 20, - slot_probability: (1, 6), - storage_bound: Default::default(), - recent_segments: HistorySize::from(NonZeroU64::new(5).unwrap()), - recent_history_fraction: ( - HistorySize::from(NonZeroU64::new(1).unwrap()), - HistorySize::from(NonZeroU64::new(10).unwrap()), - ), - min_sector_lifetime: HistorySize::from(NonZeroU64::new(4).unwrap()), - } -} - -fn archived_segment() -> &'static NewArchivedSegment { - static ARCHIVED_SEGMENT: OnceLock = OnceLock::new(); - - ARCHIVED_SEGMENT.get_or_init(|| { - // we don't care about the block data - let mut rng = StdRng::seed_from_u64(0); - let mut block = vec![0u8; RecordedHistorySegment::SIZE]; - rng.fill(block.as_mut_slice()); - - let mut archiver = Archiver::new(kzg_instance().clone()).unwrap(); - - archiver - .add_block(block, Default::default(), true) - .into_iter() - .next() - .unwrap() - }) -} - -struct FarmerParameters { - farmer_protocol_info: FarmerProtocolInfo, -} - -impl FarmerParameters { - fn new() -> Self { - let farmer_protocol_info = FarmerProtocolInfo { - history_size: HistorySize::from(SegmentIndex::ZERO), - max_pieces_in_sector: 1, - recent_segments: HistorySize::from(NonZeroU64::new(5).unwrap()), - recent_history_fraction: ( - HistorySize::from(NonZeroU64::new(1).unwrap()), - HistorySize::from(NonZeroU64::new(10).unwrap()), - ), - min_sector_lifetime: HistorySize::from(NonZeroU64::new(4).unwrap()), - }; - - Self { - farmer_protocol_info, - } - } -} - -struct ValidHeaderParams<'a> { - parent_hash: HashOf
, - number: NumberOf
, - slot: u64, - keypair: &'a Keypair, - #[cfg(not(feature = "pot"))] - global_randomness: Randomness, - #[cfg(feature = "pot")] - proof_of_time: PotOutput, - #[cfg(feature = "pot")] - future_proof_of_time: PotOutput, - farmer_parameters: &'a FarmerParameters, -} - -fn valid_header( - params: ValidHeaderParams<'_>, -) -> ( - Header, - SolutionRange, - BlockWeight, - SegmentIndex, - SegmentCommitment, -) { - let ValidHeaderParams { - parent_hash, - number, - slot, - keypair, - #[cfg(not(feature = "pot"))] - global_randomness, - #[cfg(feature = "pot")] - proof_of_time, - #[cfg(feature = "pot")] - future_proof_of_time, - farmer_parameters, - } = params; - - let archived_segment = archived_segment(); - - let segment_index = archived_segment.segment_header.segment_index(); - let segment_commitment = archived_segment.segment_header.segment_commitment(); - let public_key = PublicKey::from(keypair.public.to_bytes()); - - let pieces_in_sector = farmer_parameters.farmer_protocol_info.max_pieces_in_sector; - let sector_size = sector_size(pieces_in_sector); - - let mut table_generator = PosTable::generator(); - - for sector_index in iter::from_fn(|| Some(rand::random())) { - let mut plotted_sector_bytes = Vec::new(); - let mut plotted_sector_metadata_bytes = Vec::new(); - - let plotted_sector = block_on(plot_sector( - &public_key, - sector_index, - &archived_segment.pieces, - &farmer_parameters.farmer_protocol_info, - kzg_instance(), - erasure_coding_instance(), - pieces_in_sector, - &mut plotted_sector_bytes, - &mut plotted_sector_metadata_bytes, - records_encoder: &mut CpuRecordsEncoder::::new( - slice::from_mut(&mut table_generator), - &erasure_coding, - &Default::default(), - ), - )) - .unwrap(); - - #[cfg(feature = "pot")] - let global_randomness = proof_of_time.derive_global_randomness(); - let global_challenge = global_randomness.derive_global_challenge(slot); - - let maybe_solution_candidates = audit_sector( - &public_key, - &global_challenge, - SolutionRange::MAX, - &plotted_sector_bytes, - &plotted_sector.sector_metadata, - ); - - let Some(solution_candidates) = maybe_solution_candidates else { - // Sector didn't have any solutions - continue; - }; - - let solution = solution_candidates - .into_iter::<_, PosTable>( - &public_key, - kzg_instance(), - erasure_coding_instance(), - &mut table_generator, - ) - .unwrap() - .next() - .unwrap() - .unwrap(); - - let solution = Solution { - public_key: FarmerPublicKey::unchecked_from(keypair.public.to_bytes()), - reward_address: solution.reward_address, - sector_index: solution.sector_index, - history_size: solution.history_size, - piece_offset: solution.piece_offset, - record_commitment: solution.record_commitment, - record_witness: solution.record_witness, - chunk: solution.chunk, - chunk_witness: solution.chunk_witness, - proof_of_space: solution.proof_of_space, - }; - - let solution_distance = verify_solution::( - &solution, - slot, - &VerifySolutionParams { - #[cfg(not(feature = "pot"))] - global_randomness, - #[cfg(feature = "pot")] - proof_of_time, - solution_range: SolutionRange::MAX, - piece_check_params: None, - }, - kzg_instance(), - ) - .unwrap(); - let solution_range = solution_distance * 2; - let block_weight = calculate_block_weight(solution_range); - - let pre_digest = PreDigest::V0 { - slot: slot.into(), - solution, - #[cfg(feature = "pot")] - proof_of_time, - #[cfg(feature = "pot")] - future_proof_of_time, - }; - let digests = vec![ - #[cfg(not(feature = "pot"))] - DigestItem::global_randomness(global_randomness), - DigestItem::solution_range(solution_range), - DigestItem::subspace_pre_digest(&pre_digest), - ]; - - let header = Header { - parent_hash, - number, - state_root: Default::default(), - extrinsics_root: Default::default(), - digest: Digest { logs: digests }, - }; - - return ( - header, - solution_range, - block_weight, - segment_index, - segment_commitment, - ); - } - - unreachable!("Will find solution before exhausting u64") -} - -fn seal_header(keypair: &Keypair, header: &mut Header) { - let ctx = schnorrkel::context::signing_context(REWARD_SIGNING_CONTEXT); - let pre_hash = header.hash(); - let signature = - FarmerSignature::unchecked_from(keypair.sign(ctx.bytes(pre_hash.as_bytes())).to_bytes()); - header - .digest - .logs - .push(DigestItem::subspace_seal(signature)); -} - -fn remove_seal(header: &mut Header) { - let digests = header.digest_mut(); - digests.pop(); -} - -fn next_slot(slot_probability: (u64, u64), current_slot: Slot) -> Slot { - let mut rng = StdRng::seed_from_u64(current_slot.into()); - current_slot + rng.gen_range(slot_probability.0..=slot_probability.1) -} - -fn initialize_store( - constants: ChainConstants
, - should_adjust_solution_range: bool, - maybe_root_plot_public_key: Option, -) -> (MockStorage, HashOf
) { - let mut store = MockStorage::new(constants); - let mut rng = StdRng::seed_from_u64(0); - let mut state_root = vec![0u8; 32]; - rng.fill(state_root.as_mut_slice()); - let genesis_header = Header { - parent_hash: Default::default(), - number: 0, - state_root: H256::from_slice(&state_root), - extrinsics_root: Default::default(), - digest: Default::default(), - }; - - let genesis_hash = genesis_header.hash(); - let header = HeaderExt { - header: genesis_header, - total_weight: 0, - era_start_slot: Default::default(), - should_adjust_solution_range, - maybe_current_solution_range_override: None, - maybe_next_solution_range_override: None, - maybe_root_plot_public_key, - test_overrides: Default::default(), - }; - - store.store_header(header, true); - (store, genesis_hash) -} - -fn add_next_digests(store: &MockStorage, number: NumberOf
, header: &mut Header) { - let constants = store.chain_constants(); - let parent_header = store.header(*header.parent_hash()).unwrap(); - let digests = - extract_subspace_digest_items::<_, FarmerPublicKey, FarmerPublicKey, FarmerSignature>( - header, - ) - .unwrap(); - - let digest_logs = header.digest_mut(); - #[cfg(not(feature = "pot"))] - if let Some(next_randomness) = derive_next_global_randomness::
( - number, - constants.global_randomness_interval, - &digests.pre_digest, - ) { - digest_logs.push(DigestItem::next_global_randomness(next_randomness)); - } - - if let Some(next_solution_range) = - derive_next_solution_range::
(DeriveNextSolutionRangeParams { - number, - era_duration: constants.era_duration, - slot_probability: constants.slot_probability, - current_slot: digests.pre_digest.slot(), - current_solution_range: digests.solution_range, - era_start_slot: parent_header.era_start_slot, - should_adjust_solution_range: true, - maybe_next_solution_range_override: None, - }) - .unwrap() - { - digest_logs.push(DigestItem::next_solution_range(next_solution_range)); - } -} - -struct ForkAt { - parent_hash: HashOf
, - // if None, fork chain cumulative weight is equal to canonical chain weight - is_best: Option, -} - -fn add_headers_to_chain( - importer: &mut HeaderImporter, - keypair: &Keypair, - headers_to_add: NumberOf
, - maybe_fork_chain: Option, - farmer_parameters: &FarmerParameters, -) -> HashOf
{ - let best_header_ext = importer.store.best_header(); - let constants = importer.store.chain_constants(); - let (parent_hash, number, slot) = if let Some(ForkAt { parent_hash, .. }) = maybe_fork_chain { - let header = importer.store.header(parent_hash).unwrap(); - let digests = extract_pre_digest(&header.header).unwrap(); - - (parent_hash, *header.header.number(), digests.slot()) - } else { - let digests = extract_pre_digest(&best_header_ext.header).unwrap(); - ( - best_header_ext.header.hash(), - *best_header_ext.header.number(), - digests.slot(), - ) - }; - - let until_number = number + headers_to_add; - let mut parent_hash = parent_hash; - let mut number = number + 1; - let mut slot = next_slot(constants.slot_probability, slot); - let mut best_header_hash = best_header_ext.header.hash(); - while number <= until_number { - let (global_randomness, override_next_solution) = if number == 1 { - let randomness = default_randomness(); - (randomness, false) - } else { - let header = importer.store.header(parent_hash).unwrap(); - let digests = extract_subspace_digest_items::< - _, - FarmerPublicKey, - FarmerPublicKey, - FarmerSignature, - >(&header.header) - .unwrap(); - - let randomness = digests - .next_global_randomness - .unwrap_or(digests.global_randomness); - (randomness, digests.next_global_randomness.is_some()) - }; - - let (mut header, solution_range, block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash, - number, - slot: slot.into(), - keypair, - global_randomness, - farmer_parameters, - }); - importer.store.override_cumulative_weight(parent_hash, 0); - if number == 1 { - // adjust Chain constants for Block #1 - let mut constants = importer.store.chain_constants(); - constants.genesis_digest_items.next_solution_range = solution_range; - importer.store.override_constants(constants) - } else if override_next_solution { - importer - .store - .override_next_solution_range(parent_hash, solution_range); - } else { - importer - .store - .override_solution_range(parent_hash, solution_range); - } - importer - .store - .store_segment_commitment(segment_index, segment_commitment); - if let Some(ForkAt { - is_best: maybe_best, - .. - }) = maybe_fork_chain - { - if let Some(is_best) = maybe_best { - if is_best { - importer - .store - .override_cumulative_weight(best_header_hash, block_weight - 1) - } else { - importer - .store - .override_cumulative_weight(best_header_hash, block_weight + 1) - } - } else { - importer - .store - .override_cumulative_weight(best_header_hash, block_weight) - } - } - - add_next_digests(&importer.store, number, &mut header); - seal_header(keypair, &mut header); - parent_hash = header.hash(); - slot = next_slot(constants.slot_probability, slot); - number += 1; - - assert_ok!(importer.import_header(header.clone())); - if let Some(ForkAt { - is_best: maybe_best, - .. - }) = maybe_fork_chain - { - if let Some(is_best) = maybe_best { - if is_best { - best_header_hash = header.hash() - } - } - } else { - best_header_hash = header.hash() - } - - assert_eq!(importer.store.best_header().header.hash(), best_header_hash); - } - - parent_hash -} - -fn ensure_finalized_heads_have_no_forks(store: &MockStorage, finalized_number: NumberOf
) { - let finalized_header = store.finalized_header(); - let (expected_finalized_number, hash) = ( - finalized_header.header.number, - finalized_header.header.hash(), - ); - assert_eq!(expected_finalized_number, finalized_number); - assert_eq!(store.headers_at_number(finalized_number).len(), 1); - if finalized_number < 1 { - return; - } - - let header = store.header(hash).unwrap(); - let mut parent_hash = header.header.parent_hash; - let mut finalized_number = finalized_number - 1; - while finalized_number > 0 { - assert_eq!(store.headers_at_number(finalized_number).len(), 1); - let hash = store.headers_at_number(finalized_number)[0].header.hash(); - assert_eq!(parent_hash, hash); - parent_hash = store.header(hash).unwrap().header.parent_hash; - finalized_number -= 1; - } -} - -#[test] -fn test_header_import_missing_parent() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer_parameters = FarmerParameters::new(); - - let constants = default_test_constants(); - let (mut store, _genesis_hash) = initialize_store(constants, true, None); - let global_randomness = default_randomness(); - let (header, _solution_range, _block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash: Default::default(), - number: 1, - slot: 1, - keypair: &keypair, - global_randomness, - farmer_parameters: &farmer_parameters, - }); - store.store_segment_commitment(segment_index, segment_commitment); - let mut importer = HeaderImporter::new(store); - assert_err!( - importer.import_header(header.clone()), - ImportError::MissingParent(header.hash()) - ); - }); -} - -#[test] -fn test_header_import_non_canonical() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer = FarmerParameters::new(); - - let constants = default_test_constants(); - let (store, _genesis_hash) = initialize_store(constants, true, None); - let mut importer = HeaderImporter::new(store); - let hash_of_2 = add_headers_to_chain(&mut importer, &keypair, 2, None, &farmer); - let best_header = importer.store.best_header(); - assert_eq!(best_header.header.hash(), hash_of_2); - - // import canonical block 3 - let hash_of_3 = add_headers_to_chain(&mut importer, &keypair, 1, None, &farmer); - let best_header = importer.store.best_header(); - assert_eq!(best_header.header.hash(), hash_of_3); - let best_header = importer.store.header(hash_of_3).unwrap(); - assert_eq!(importer.store.headers_at_number(3).len(), 1); - - // import non canonical block 3 - add_headers_to_chain( - &mut importer, - &keypair, - 1, - Some(ForkAt { - parent_hash: hash_of_2, - is_best: Some(false), - }), - &farmer, - ); - - let best_header_ext = importer.store.best_header(); - assert_eq!(best_header_ext.header, best_header.header); - // we still track the forks - assert_eq!(importer.store.headers_at_number(3).len(), 2); - }); -} - -#[test] -fn test_header_import_canonical() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer = FarmerParameters::new(); - - let constants = default_test_constants(); - let (store, _genesis_hash) = initialize_store(constants, true, None); - let mut importer = HeaderImporter::new(store); - let hash_of_5 = add_headers_to_chain(&mut importer, &keypair, 5, None, &farmer); - let best_header = importer.store.best_header(); - assert_eq!(best_header.header.hash(), hash_of_5); - - // import some more canonical blocks - let hash_of_25 = add_headers_to_chain(&mut importer, &keypair, 20, None, &farmer); - let best_header = importer.store.best_header(); - assert_eq!(best_header.header.hash(), hash_of_25); - assert_eq!(importer.store.headers_at_number(25).len(), 1); - }); -} - -#[test] -fn test_header_import_non_canonical_with_equal_block_weight() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer = FarmerParameters::new(); - - let constants = default_test_constants(); - let (store, _genesis_hash) = initialize_store(constants, true, None); - let mut importer = HeaderImporter::new(store); - let hash_of_2 = add_headers_to_chain(&mut importer, &keypair, 2, None, &farmer); - let best_header = importer.store.best_header(); - assert_eq!(best_header.header.hash(), hash_of_2); - - // import canonical block 3 - let hash_of_3 = add_headers_to_chain(&mut importer, &keypair, 1, None, &farmer); - let best_header = importer.store.best_header(); - assert_eq!(best_header.header.hash(), hash_of_3); - let best_header = importer.store.header(hash_of_3).unwrap(); - assert_eq!(importer.store.headers_at_number(3).len(), 1); - - // import non canonical block 3 - add_headers_to_chain( - &mut importer, - &keypair, - 1, - Some(ForkAt { - parent_hash: hash_of_2, - is_best: None, - }), - &farmer, - ); - - let best_header_ext = importer.store.best_header(); - assert_eq!(best_header_ext.header, best_header.header); - // we still track the forks - assert_eq!(importer.store.headers_at_number(3).len(), 2); - }); -} - -// TODO: This test doesn't actually reorg, but probably should -#[test] -fn test_chain_reorg_to_heavier_chain() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer = FarmerParameters::new(); - - let mut constants = default_test_constants(); - constants.k_depth = 4; - let (store, genesis_hash) = initialize_store(constants, true, None); - let mut importer = HeaderImporter::new(store); - assert_eq!( - importer.store.finalized_header().header.hash(), - genesis_hash - ); - - let hash_of_4 = add_headers_to_chain(&mut importer, &keypair, 4, None, &farmer); - let best_header = importer.store.best_header(); - assert_eq!(best_header.header.hash(), hash_of_4); - assert_eq!( - importer.store.finalized_header().header.hash(), - genesis_hash - ); - - // create a fork chain of 4 headers from number 1 - add_headers_to_chain( - &mut importer, - &keypair, - 4, - Some(ForkAt { - parent_hash: genesis_hash, - is_best: Some(false), - }), - &farmer, - ); - assert_eq!(best_header.header.hash(), hash_of_4); - // block 0 is still finalized - assert_eq!( - importer.store.finalized_header().header.hash(), - genesis_hash - ); - ensure_finalized_heads_have_no_forks(&importer.store, 0); - - // add new best header at 5 - let hash_of_5 = add_headers_to_chain(&mut importer, &keypair, 1, None, &farmer); - let best_header = importer.store.best_header(); - assert_eq!(best_header.header.hash(), hash_of_5); - - // block 1 should be finalized - assert_eq!(importer.store.finalized_header().header.number, 1); - ensure_finalized_heads_have_no_forks(&importer.store, 1); - - // create a fork chain from number 5 with block until 8 - let fork_hash_of_8 = add_headers_to_chain( - &mut importer, - &keypair, - 4, - Some(ForkAt { - parent_hash: hash_of_4, - is_best: Some(false), - }), - &farmer, - ); - - // best header should still be the same - assert_eq!(best_header.header, importer.store.best_header().header); - - // there must be 2 heads at 5 - assert_eq!(importer.store.headers_at_number(5).len(), 2); - - // block 1 should be finalized - assert_eq!(importer.store.finalized_header().header.number, 1); - ensure_finalized_heads_have_no_forks(&importer.store, 1); - - // import a new head to the fork chain and make it the best. - let hash_of_9 = add_headers_to_chain( - &mut importer, - &keypair, - 1, - Some(ForkAt { - parent_hash: fork_hash_of_8, - is_best: Some(true), - }), - &farmer, - ); - assert_eq!(importer.store.best_header().header.hash(), hash_of_9); - - // now the finalized header must be 5 - ensure_finalized_heads_have_no_forks(&importer.store, 5); - }); -} - -#[test] -fn test_reorg_to_heavier_smaller_chain() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer_parameters = FarmerParameters::new(); - - let mut constants = default_test_constants(); - constants.k_depth = 4; - let (store, genesis_hash) = initialize_store(constants, true, None); - let mut importer = HeaderImporter::new(store); - assert_eq!( - importer.store.finalized_header().header.hash(), - genesis_hash - ); - - let hash_of_5 = add_headers_to_chain(&mut importer, &keypair, 5, None, &farmer_parameters); - let best_header = importer.store.best_header(); - assert_eq!(best_header.header.hash(), hash_of_5); - assert_eq!(importer.store.finalized_header().header.number, 1); - - // header count at the finalized head must be 1 - ensure_finalized_heads_have_no_forks(&importer.store, 1); - - // now import a fork header 3 that becomes canonical - let constants = importer.store.chain_constants(); - let header_at_2 = importer - .store - .headers_at_number(2) - .first() - .cloned() - .unwrap(); - let digests_at_2 = - extract_subspace_digest_items::<_, FarmerPublicKey, FarmerPublicKey, FarmerSignature>( - &header_at_2.header, - ) - .unwrap(); - let (mut header, solution_range, block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash: header_at_2.header.hash(), - number: 3, - slot: next_slot(constants.slot_probability, digests_at_2.pre_digest.slot()).into(), - keypair: &keypair, - #[cfg(not(feature = "pot"))] - global_randomness: digests_at_2.global_randomness, - // TODO: Correct value - #[cfg(feature = "pot")] - proof_of_time: PotOutput::default(), - // TODO: Correct value - #[cfg(feature = "pot")] - future_proof_of_time: PotOutput::default(), - farmer_parameters: &farmer_parameters, - }); - seal_header(&keypair, &mut header); - importer - .store - .override_solution_range(header_at_2.header.hash(), solution_range); - importer - .store - .store_segment_commitment(segment_index, segment_commitment); - importer.store.override_cumulative_weight( - importer.store.best_header().header.hash(), - block_weight - 1, - ); - // override parent weight to 0 - importer - .store - .override_cumulative_weight(header_at_2.header.hash(), 0); - let res = importer.import_header(header); - assert_err!(res, ImportError::SwitchedToForkBelowArchivingDepth); - }); -} - -#[test] -fn test_next_global_randomness_digest() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer_parameters = FarmerParameters::new(); - - let mut constants = default_test_constants(); - constants.global_randomness_interval = 5; - let (store, genesis_hash) = initialize_store(constants, true, None); - let mut importer = HeaderImporter::new(store); - assert_eq!( - importer.store.finalized_header().header.hash(), - genesis_hash - ); - - let hash_of_4 = add_headers_to_chain(&mut importer, &keypair, 4, None, &farmer_parameters); - assert_eq!(importer.store.best_header().header.hash(), hash_of_4); - - // try to import header with out next global randomness - let constants = importer.store.chain_constants(); - let header_at_4 = importer.store.header(hash_of_4).unwrap(); - let digests_at_4 = - extract_subspace_digest_items::<_, FarmerPublicKey, FarmerPublicKey, FarmerSignature>( - &header_at_4.header, - ) - .unwrap(); - let (mut header, solution_range, _block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash: header_at_4.header.hash(), - number: 5, - slot: next_slot(constants.slot_probability, digests_at_4.pre_digest.slot()).into(), - keypair: &keypair, - global_randomness: digests_at_4.global_randomness, - farmer_parameters: &farmer_parameters, - }); - seal_header(&keypair, &mut header); - importer - .store - .override_solution_range(header_at_4.header.hash(), solution_range); - importer - .store - .store_segment_commitment(segment_index, segment_commitment); - importer - .store - .override_cumulative_weight(header_at_4.header.hash(), 0); - let res = importer.import_header(header.clone()); - assert_err!( - res, - ImportError::DigestError(DigestError::NextDigestVerificationError( - ErrorDigestType::NextGlobalRandomness - )) - ); - assert_eq!(importer.store.best_header().header.hash(), hash_of_4); - - // add next global randomness - remove_seal(&mut header); - let pre_digest = extract_pre_digest(&header).unwrap(); - let randomness = derive_randomness(pre_digest.solution(), pre_digest.slot().into()); - let digests = header.digest_mut(); - digests.push(DigestItem::next_global_randomness(randomness)); - seal_header(&keypair, &mut header); - let res = importer.import_header(header.clone()); - assert_ok!(res); - assert_eq!(importer.store.best_header().header.hash(), header.hash()); - }); -} - -#[test] -fn test_next_solution_range_digest_with_adjustment_enabled() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer_parameters = FarmerParameters::new(); - - let mut constants = default_test_constants(); - constants.era_duration = 5; - let (store, genesis_hash) = initialize_store(constants, true, None); - let mut importer = HeaderImporter::new(store); - assert_eq!( - importer.store.finalized_header().header.hash(), - genesis_hash - ); - - let hash_of_4 = add_headers_to_chain(&mut importer, &keypair, 4, None, &farmer_parameters); - assert_eq!(importer.store.best_header().header.hash(), hash_of_4); - - // try to import header with out next global randomness - let constants = importer.store.chain_constants(); - let header_at_4 = importer.store.header(hash_of_4).unwrap(); - let digests_at_4 = - extract_subspace_digest_items::<_, FarmerPublicKey, FarmerPublicKey, FarmerSignature>( - &header_at_4.header, - ) - .unwrap(); - let (mut header, solution_range, _block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash: header_at_4.header.hash(), - number: 5, - slot: next_slot(constants.slot_probability, digests_at_4.pre_digest.slot()).into(), - keypair: &keypair, - global_randomness: digests_at_4.global_randomness, - farmer_parameters: &farmer_parameters, - }); - seal_header(&keypair, &mut header); - importer - .store - .override_solution_range(header_at_4.header.hash(), solution_range); - importer - .store - .store_segment_commitment(segment_index, segment_commitment); - importer - .store - .override_cumulative_weight(header_at_4.header.hash(), 0); - let pre_digest = extract_pre_digest(&header).unwrap(); - let res = importer.import_header(header.clone()); - assert_err!( - res, - ImportError::DigestError(DigestError::NextDigestVerificationError( - ErrorDigestType::NextSolutionRange - )) - ); - assert_eq!(importer.store.best_header().header.hash(), hash_of_4); - - // add next solution range - remove_seal(&mut header); - let next_solution_range = subspace_verification::derive_next_solution_range( - SlotNumber::from(header_at_4.era_start_slot), - SlotNumber::from(pre_digest.slot()), - constants.slot_probability, - solution_range, - constants.era_duration, - ); - let digests = header.digest_mut(); - digests.push(DigestItem::next_solution_range(next_solution_range)); - seal_header(&keypair, &mut header); - let res = importer.import_header(header.clone()); - assert_ok!(res); - assert_eq!(importer.store.best_header().header.hash(), header.hash()); - }); -} - -#[test] -fn test_next_solution_range_digest_with_adjustment_disabled() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer_parameters = FarmerParameters::new(); - - let mut constants = default_test_constants(); - constants.era_duration = 5; - let (store, genesis_hash) = initialize_store(constants, false, None); - let mut importer = HeaderImporter::new(store); - assert_eq!( - importer.store.finalized_header().header.hash(), - genesis_hash - ); - - let hash_of_4 = add_headers_to_chain(&mut importer, &keypair, 4, None, &farmer_parameters); - assert_eq!(importer.store.best_header().header.hash(), hash_of_4); - - // try to import header with out next global randomness - let constants = importer.store.chain_constants(); - let header_at_4 = importer.store.header(hash_of_4).unwrap(); - let digests_at_4 = - extract_subspace_digest_items::<_, FarmerPublicKey, FarmerPublicKey, FarmerSignature>( - &header_at_4.header, - ) - .unwrap(); - let (mut header, solution_range, _block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash: header_at_4.header.hash(), - number: 5, - slot: next_slot(constants.slot_probability, digests_at_4.pre_digest.slot()).into(), - keypair: &keypair, - global_randomness: digests_at_4.global_randomness, - farmer_parameters: &farmer_parameters, - }); - importer - .store - .override_solution_range(header_at_4.header.hash(), solution_range); - importer - .store - .store_segment_commitment(segment_index, segment_commitment); - importer - .store - .override_cumulative_weight(header_at_4.header.hash(), 0); - - // since solution range adjustment is disabled - // current solution range is used as next - let next_solution_range = solution_range; - let digests = header.digest_mut(); - digests.push(DigestItem::next_solution_range(next_solution_range)); - seal_header(&keypair, &mut header); - let res = importer.import_header(header.clone()); - assert_ok!(res); - assert_eq!(importer.store.best_header().header.hash(), header.hash()); - assert!(!importer.store.best_header().should_adjust_solution_range); - }); -} - -#[test] -fn test_enable_solution_range_adjustment_without_override() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer_parameters = FarmerParameters::new(); - - let mut constants = default_test_constants(); - constants.era_duration = 5; - let (store, genesis_hash) = initialize_store(constants, false, None); - let mut importer = HeaderImporter::new(store); - assert_eq!( - importer.store.finalized_header().header.hash(), - genesis_hash - ); - - let hash_of_4 = add_headers_to_chain(&mut importer, &keypair, 4, None, &farmer_parameters); - assert_eq!(importer.store.best_header().header.hash(), hash_of_4); - // solution range adjustment is disabled - assert!(!importer.store.best_header().should_adjust_solution_range); - - // enable solution range adjustment in this header - let constants = importer.store.chain_constants(); - let header_at_4 = importer.store.header(hash_of_4).unwrap(); - let digests_at_4 = - extract_subspace_digest_items::<_, FarmerPublicKey, FarmerPublicKey, FarmerSignature>( - &header_at_4.header, - ) - .unwrap(); - let (mut header, solution_range, _block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash: header_at_4.header.hash(), - number: 5, - slot: next_slot(constants.slot_probability, digests_at_4.pre_digest.slot()).into(), - keypair: &keypair, - global_randomness: digests_at_4.global_randomness, - farmer_parameters: &farmer_parameters, - }); - importer - .store - .override_solution_range(header_at_4.header.hash(), solution_range); - importer - .store - .store_segment_commitment(segment_index, segment_commitment); - importer - .store - .override_cumulative_weight(header_at_4.header.hash(), 0); - let pre_digest = extract_pre_digest(&header).unwrap(); - let next_solution_range = subspace_verification::derive_next_solution_range( - SlotNumber::from(header_at_4.era_start_slot), - SlotNumber::from(pre_digest.slot()), - constants.slot_probability, - solution_range, - constants.era_duration, - ); - let digests = header.digest_mut(); - digests.push(DigestItem::next_solution_range(next_solution_range)); - digests.push(DigestItem::enable_solution_range_adjustment_and_override( - None, - )); - seal_header(&keypair, &mut header); - let res = importer.import_header(header.clone()); - assert_ok!(res); - assert_eq!(importer.store.best_header().header.hash(), header.hash()); - assert!(importer.store.best_header().should_adjust_solution_range); - assert_eq!(header_at_4.maybe_current_solution_range_override, None); - assert_eq!(header_at_4.maybe_next_solution_range_override, None); - }); -} - -#[test] -fn test_enable_solution_range_adjustment_with_override_between_update_intervals() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer_parameters = FarmerParameters::new(); - - let mut constants = default_test_constants(); - constants.era_duration = 5; - let (store, genesis_hash) = initialize_store(constants, false, None); - let mut importer = HeaderImporter::new(store); - assert_eq!( - importer.store.finalized_header().header.hash(), - genesis_hash - ); - - let hash_of_3 = add_headers_to_chain(&mut importer, &keypair, 3, None, &farmer_parameters); - assert_eq!(importer.store.best_header().header.hash(), hash_of_3); - // solution range adjustment is disabled - assert!(!importer.store.best_header().should_adjust_solution_range); - - // enable solution range adjustment with override in this header - let constants = importer.store.chain_constants(); - let header_at_3 = importer.store.header(hash_of_3).unwrap(); - let digests_at_3 = - extract_subspace_digest_items::<_, FarmerPublicKey, FarmerPublicKey, FarmerSignature>( - &header_at_3.header, - ) - .unwrap(); - let (mut header, solution_range, _block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash: header_at_3.header.hash(), - number: 4, - slot: next_slot(constants.slot_probability, digests_at_3.pre_digest.slot()).into(), - keypair: &keypair, - global_randomness: digests_at_3.global_randomness, - farmer_parameters: &farmer_parameters, - }); - importer - .store - .override_solution_range(header_at_3.header.hash(), solution_range); - importer - .store - .store_segment_commitment(segment_index, segment_commitment); - importer - .store - .override_cumulative_weight(header_at_3.header.hash(), 0); - let digests = header.digest_mut(); - let solution_range_override = 100; - digests.push(DigestItem::enable_solution_range_adjustment_and_override( - Some(solution_range_override), - )); - seal_header(&keypair, &mut header); - let res = importer.import_header(header.clone()); - assert_ok!(res); - let header_at_4 = importer.store.best_header(); - assert_eq!(header_at_4.header.hash(), header.hash()); - assert!(header_at_4.should_adjust_solution_range); - // current solution range override and next solution range overrides are updated - assert_eq!( - header_at_4.maybe_current_solution_range_override, - Some(solution_range_override) - ); - assert_eq!( - header_at_4.maybe_next_solution_range_override, - Some(solution_range_override) - ); - }); -} - -#[test] -fn test_enable_solution_range_adjustment_with_override_at_interval_change() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer_parameters = FarmerParameters::new(); - - let mut constants = default_test_constants(); - constants.era_duration = 5; - let (store, genesis_hash) = initialize_store(constants, false, None); - let mut importer = HeaderImporter::new(store); - assert_eq!( - importer.store.finalized_header().header.hash(), - genesis_hash - ); - - let hash_of_4 = add_headers_to_chain(&mut importer, &keypair, 4, None, &farmer_parameters); - assert_eq!(importer.store.best_header().header.hash(), hash_of_4); - // solution range adjustment is disabled - assert!(!importer.store.best_header().should_adjust_solution_range); - - // enable solution range adjustment in this header - let constants = importer.store.chain_constants(); - let header_at_4 = importer.store.header(hash_of_4).unwrap(); - let digests_at_4 = - extract_subspace_digest_items::<_, FarmerPublicKey, FarmerPublicKey, FarmerSignature>( - &header_at_4.header, - ) - .unwrap(); - let (mut header, solution_range, _block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash: header_at_4.header.hash(), - number: 5, - slot: next_slot(constants.slot_probability, digests_at_4.pre_digest.slot()).into(), - keypair: &keypair, - global_randomness: digests_at_4.global_randomness, - farmer_parameters: &farmer_parameters, - }); - importer - .store - .override_solution_range(header_at_4.header.hash(), solution_range); - importer - .store - .store_segment_commitment(segment_index, segment_commitment); - importer - .store - .override_cumulative_weight(header_at_4.header.hash(), 0); - let solution_range_override = 100; - let next_solution_range = solution_range_override; - let digests = header.digest_mut(); - digests.push(DigestItem::next_solution_range(next_solution_range)); - digests.push(DigestItem::enable_solution_range_adjustment_and_override( - Some(solution_range_override), - )); - seal_header(&keypair, &mut header); - let res = importer.import_header(header.clone()); - assert_ok!(res); - assert_eq!(importer.store.best_header().header.hash(), header.hash()); - assert!(importer.store.best_header().should_adjust_solution_range); - assert_eq!(header_at_4.maybe_current_solution_range_override, None); - assert_eq!(header_at_4.maybe_next_solution_range_override, None); - }); -} - -#[test] -fn test_disallow_enable_solution_range_digest_when_solution_range_adjustment_is_already_enabled() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer_parameters = FarmerParameters::new(); - - let mut constants = default_test_constants(); - constants.era_duration = 5; - let (store, genesis_hash) = initialize_store(constants, true, None); - let mut importer = HeaderImporter::new(store); - assert_eq!( - importer.store.finalized_header().header.hash(), - genesis_hash - ); - - let hash_of_4 = add_headers_to_chain(&mut importer, &keypair, 4, None, &farmer_parameters); - assert_eq!(importer.store.best_header().header.hash(), hash_of_4); - - // try to import header with enable solution range adjustment digest - let constants = importer.store.chain_constants(); - let header_at_4 = importer.store.header(hash_of_4).unwrap(); - let digests_at_4 = - extract_subspace_digest_items::<_, FarmerPublicKey, FarmerPublicKey, FarmerSignature>( - &header_at_4.header, - ) - .unwrap(); - let (mut header, solution_range, _block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash: header_at_4.header.hash(), - number: 5, - slot: next_slot(constants.slot_probability, digests_at_4.pre_digest.slot()).into(), - keypair: &keypair, - global_randomness: digests_at_4.global_randomness, - farmer_parameters: &farmer_parameters, - }); - importer - .store - .override_solution_range(header_at_4.header.hash(), solution_range); - importer - .store - .store_segment_commitment(segment_index, segment_commitment); - importer - .store - .override_cumulative_weight(header_at_4.header.hash(), 0); - let digests = header.digest_mut(); - digests.push(DigestItem::enable_solution_range_adjustment_and_override( - None, - )); - seal_header(&keypair, &mut header); - let res = importer.import_header(header.clone()); - assert_err!( - res, - ImportError::DigestError(DigestError::NextDigestVerificationError( - ErrorDigestType::EnableSolutionRangeAdjustmentAndOverride - )) - ); - }); -} - -fn ensure_store_is_storage_bounded(headers_to_keep_beyond_k_depth: NumberOf
) { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer = FarmerParameters::new(); - - let mut constants = default_test_constants(); - constants.k_depth = 7; - constants.storage_bound = - StorageBound::NumberOfHeaderToKeepBeyondKDepth(headers_to_keep_beyond_k_depth); - let (store, _genesis_hash) = initialize_store(constants, true, None); - let mut importer = HeaderImporter::new(store); - // import some more canonical blocks - let hash_of_50 = add_headers_to_chain(&mut importer, &keypair, 50, None, &farmer); - let best_header = importer.store.best_header(); - assert_eq!(best_header.header.hash(), hash_of_50); - - // check storage bound - let finalized_head = importer.store.finalized_header(); - assert_eq!(finalized_head.header.number, 43); - // there should be headers at and below (finalized_head - bound - 1) - let mut pruned_number = 43 - headers_to_keep_beyond_k_depth - 1; - while pruned_number != 0 { - assert!(importer.store.headers_at_number(pruned_number).is_empty()); - pruned_number -= 1; - } - - assert!(importer.store.headers_at_number(0).is_empty()); - }); -} - -#[test] -fn test_storage_bound_with_headers_beyond_k_depth_is_zero() { - ensure_store_is_storage_bounded(0) -} - -#[test] -fn test_storage_bound_with_headers_beyond_k_depth_is_one() { - ensure_store_is_storage_bounded(1) -} - -#[test] -fn test_storage_bound_with_headers_beyond_k_depth_is_more_than_one() { - ensure_store_is_storage_bounded(5) -} - -#[test] -fn test_block_author_different_farmer() { - new_test_ext().execute_with(|| { - let farmer_parameters = FarmerParameters::new(); - - let mut constants = default_test_constants(); - let keypair_allowed = Keypair::generate(); - let pub_key = FarmerPublicKey::unchecked_from(keypair_allowed.public.to_bytes()); - let (store, genesis_hash) = initialize_store(constants.clone(), true, Some(pub_key)); - let mut importer = HeaderImporter::new(store); - - // try to import header authored by different farmer - let keypair_disallowed = Keypair::generate(); - let global_randomness = default_randomness(); - let (mut header, solution_range, _block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash: genesis_hash, - number: 1, - slot: 1, - keypair: &keypair_disallowed, - global_randomness, - farmer_parameters: &farmer_parameters, - }); - seal_header(&keypair_disallowed, &mut header); - constants.genesis_digest_items.next_solution_range = solution_range; - importer.store.override_constants(constants); - importer - .store - .store_segment_commitment(segment_index, segment_commitment); - importer.store.override_cumulative_weight(genesis_hash, 0); - let res = importer.import_header(header); - assert_err!( - res, - ImportError::IncorrectBlockAuthor(FarmerPublicKey::unchecked_from( - keypair_disallowed.public.to_bytes() - )) - ); - }); -} - -#[test] -fn test_block_author_first_farmer() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer_parameters = FarmerParameters::new(); - - let mut constants = default_test_constants(); - let pub_key = FarmerPublicKey::unchecked_from(keypair.public.to_bytes()); - let (store, genesis_hash) = initialize_store(constants.clone(), true, None); - let mut importer = HeaderImporter::new(store); - - // try import header with first farmer - let global_randomness = default_randomness(); - let (mut header, solution_range, _block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash: genesis_hash, - number: 1, - slot: 1, - keypair: &keypair, - global_randomness, - farmer_parameters: &farmer_parameters, - }); - header - .digest - .logs - .push(DigestItem::root_plot_public_key_update(Some( - pub_key.clone(), - ))); - seal_header(&keypair, &mut header); - constants.genesis_digest_items.next_solution_range = solution_range; - importer.store.override_constants(constants); - importer - .store - .store_segment_commitment(segment_index, segment_commitment); - importer.store.override_cumulative_weight(genesis_hash, 0); - let res = importer.import_header(header.clone()); - assert_ok!(res); - let best_header = importer.store.best_header(); - assert_eq!(header.hash(), best_header.header.hash()); - assert_eq!(best_header.maybe_root_plot_public_key, Some(pub_key)); - }); -} - -#[test] -fn test_block_author_allow_any_farmer() { - new_test_ext().execute_with(|| { - let keypair = Keypair::generate(); - let farmer_parameters = FarmerParameters::new(); - - let mut constants = default_test_constants(); - let pub_key = FarmerPublicKey::unchecked_from(keypair.public.to_bytes()); - let (store, genesis_hash) = initialize_store(constants.clone(), true, Some(pub_key)); - let mut importer = HeaderImporter::new(store); - - // try to import header authored by different farmer - let global_randomness = default_randomness(); - let (mut header, solution_range, _block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash: genesis_hash, - number: 1, - slot: 1, - keypair: &keypair, - global_randomness, - farmer_parameters: &farmer_parameters, - }); - header - .digest - .logs - .push(DigestItem::root_plot_public_key_update(None)); - seal_header(&keypair, &mut header); - constants.genesis_digest_items.next_solution_range = solution_range; - importer.store.override_constants(constants); - importer - .store - .store_segment_commitment(segment_index, segment_commitment); - importer.store.override_cumulative_weight(genesis_hash, 0); - let res = importer.import_header(header.clone()); - assert_ok!(res); - let best_header = importer.store.best_header(); - assert_eq!(header.hash(), best_header.header.hash()); - assert_eq!(best_header.maybe_root_plot_public_key, None); - }); -} - -#[test] -fn test_disallow_root_plot_public_key_override() { - new_test_ext().execute_with(|| { - let farmer_parameters = FarmerParameters::new(); - - let mut constants = default_test_constants(); - let keypair_allowed = Keypair::generate(); - let pub_key = FarmerPublicKey::unchecked_from(keypair_allowed.public.to_bytes()); - let (store, genesis_hash) = initialize_store(constants.clone(), true, Some(pub_key)); - let mut importer = HeaderImporter::new(store); - - // try to import header that contains root plot public key override - let global_randomness = default_randomness(); - let (mut header, solution_range, _block_weight, segment_index, segment_commitment) = - valid_header(ValidHeaderParams { - parent_hash: genesis_hash, - number: 1, - slot: 1, - keypair: &keypair_allowed, - global_randomness, - farmer_parameters: &farmer_parameters, - }); - let keypair_disallowed = Keypair::generate(); - let pub_key = FarmerPublicKey::unchecked_from(keypair_disallowed.public.to_bytes()); - header - .digest - .logs - .push(DigestItem::root_plot_public_key_update(Some(pub_key))); - seal_header(&keypair_allowed, &mut header); - constants.genesis_digest_items.next_solution_range = solution_range; - importer.store.override_constants(constants); - importer - .store - .store_segment_commitment(segment_index, segment_commitment); - importer.store.override_cumulative_weight(genesis_hash, 0); - let res = importer.import_header(header); - assert_err!( - res, - ImportError::DigestError(DigestError::NextDigestVerificationError( - ErrorDigestType::RootPlotPublicKeyUpdate - )) - ); - }); -} - -// TODO: Test for expired sector diff --git a/crates/sp-objects/Cargo.toml b/crates/sp-objects/Cargo.toml index 042e7d8d85..03dfdb4ae1 100644 --- a/crates/sp-objects/Cargo.toml +++ b/crates/sp-objects/Cargo.toml @@ -13,7 +13,7 @@ readme = "README.md" targets = ["x86_64-unknown-linux-gnu"] [dependencies] -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", default-features = false, path = "../subspace-core-primitives" } subspace-runtime-primitives = { version = "0.1.0", default-features = false, path = "../subspace-runtime-primitives" } diff --git a/crates/sp-objects/src/lib.rs b/crates/sp-objects/src/lib.rs index aa91b50e66..e36dec23a9 100644 --- a/crates/sp-objects/src/lib.rs +++ b/crates/sp-objects/src/lib.rs @@ -19,20 +19,11 @@ // TODO: Suppression because of https://github.com/paritytech/polkadot-sdk/issues/3533 #![allow(clippy::multiple_bound_locations)] -#[cfg(not(feature = "std"))] -extern crate alloc; - -#[cfg(not(feature = "std"))] -use alloc::vec::Vec; use subspace_core_primitives::objects::BlockObjectMapping; -use subspace_runtime_primitives::Hash; sp_api::decl_runtime_apis! { pub trait ObjectsApi { - /// Returns all the validated object call hashes for a given block - fn validated_object_call_hashes() -> Vec; - /// Extract block object mapping for a given block - fn extract_block_object_mapping(block: Block, validated_object_calls: Vec) -> BlockObjectMapping; + fn extract_block_object_mapping(block: Block) -> BlockObjectMapping; } } diff --git a/crates/sp-subspace-mmr/Cargo.toml b/crates/sp-subspace-mmr/Cargo.toml index 63a345ae79..ba57134ca6 100644 --- a/crates/sp-subspace-mmr/Cargo.toml +++ b/crates/sp-subspace-mmr/Cargo.toml @@ -18,13 +18,13 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-externalities = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime-interface = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-externalities = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime-interface = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { default-features = false, path = "../subspace-core-primitives" } [features] diff --git a/crates/sp-subspace-mmr/src/lib.rs b/crates/sp-subspace-mmr/src/lib.rs index 2822cf1a0e..4d8e65f996 100644 --- a/crates/sp-subspace-mmr/src/lib.rs +++ b/crates/sp-subspace-mmr/src/lib.rs @@ -29,11 +29,9 @@ pub use runtime_interface::{domain_mmr_runtime_interface, subspace_mmr_runtime_i #[cfg(not(feature = "std"))] extern crate alloc; -use codec::{Codec, Decode, Encode}; +use codec::{Decode, Encode}; use scale_info::TypeInfo; use sp_mmr_primitives::{EncodableOpaqueLeaf, LeafProof as MmrProof}; -use sp_runtime::generic::OpaqueDigestItemId; -use sp_runtime::DigestItem; /// MMR leaf structure #[derive(Debug, Decode, Encode, TypeInfo, PartialEq, Eq, Clone)] @@ -67,31 +65,6 @@ pub struct LeafDataV0 { pub extrinsics_root: Hash, } -/// MMR specific digest item. -#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo)] -pub enum MmrDigestItem { - NewMmrRoot(MmrRootHash), -} - -/// MMR specific digest items interface. -pub trait MmrDigest { - fn new_mmr_root(root: MmrRootHash) -> Self; - fn as_new_mmr_root(&self) -> Option; -} - -impl MmrDigest for DigestItem { - fn new_mmr_root(root: MmrRootHash) -> Self { - DigestItem::Other(MmrDigestItem::NewMmrRoot(root).encode()) - } - - fn as_new_mmr_root(&self) -> Option { - match self.try_to::>(OpaqueDigestItemId::Other) { - Some(MmrDigestItem::NewMmrRoot(root)) => Some(root), - _ => None, - } - } -} - /// Consensus chain MMR leaf and its Proof at specific block. /// /// The verifier is not required to contains any the MMR offchain data but this proof diff --git a/crates/subspace-archiving/Cargo.toml b/crates/subspace-archiving/Cargo.toml index 1421b217be..d4513abe48 100644 --- a/crates/subspace-archiving/Cargo.toml +++ b/crates/subspace-archiving/Cargo.toml @@ -19,10 +19,10 @@ bench = false [dependencies] parity-scale-codec = { version = "3.6.12", default-features = false, features = ["derive"] } rayon = { version = "1.10.0", optional = true } -serde = { version = "1.0.206", optional = true, features = ["derive"] } +serde = { version = "1.0.110", optional = true, features = ["derive"] } subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives", default-features = false } subspace-erasure-coding = { version = "0.1.0", path = "../subspace-erasure-coding", default-features = false } -thiserror = { version = "1.0.63", optional = true } +thiserror = { version = "1.0.64", optional = true } [dev-dependencies] criterion = "0.5.1" diff --git a/crates/subspace-archiving/README.md b/crates/subspace-archiving/README.md index e69de29bb2..306113c3d2 100644 --- a/crates/subspace-archiving/README.md +++ b/crates/subspace-archiving/README.md @@ -0,0 +1 @@ +Collection of modules used for dealing with archived state of Subspace Network. diff --git a/crates/subspace-archiving/benches/archiving.rs b/crates/subspace-archiving/benches/archiving.rs index c6491d867d..7d53ffe382 100644 --- a/crates/subspace-archiving/benches/archiving.rs +++ b/crates/subspace-archiving/benches/archiving.rs @@ -4,7 +4,7 @@ use std::num::NonZeroUsize; use subspace_archiving::archiver::Archiver; use subspace_core_primitives::crypto::kzg; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::Record; +use subspace_core_primitives::pieces::Record; use subspace_erasure_coding::ErasureCoding; const AMOUNT_OF_DATA: usize = 5 * 1024 * 1024; diff --git a/crates/subspace-archiving/src/archiver.rs b/crates/subspace-archiving/src/archiver.rs index e66fc03fea..b6ecd5411b 100644 --- a/crates/subspace-archiving/src/archiver.rs +++ b/crates/subspace-archiving/src/archiver.rs @@ -34,11 +34,12 @@ use subspace_core_primitives::crypto::{blake3_254_hash_to_scalar, Scalar}; use subspace_core_primitives::objects::{ BlockObject, BlockObjectMapping, GlobalObject, PieceObject, PieceObjectMapping, }; -use subspace_core_primitives::{ - ArchivedBlockProgress, ArchivedHistorySegment, Blake3Hash, BlockNumber, LastArchivedBlock, - PieceArray, RawRecord, RecordWitness, RecordedHistorySegment, SegmentCommitment, SegmentHeader, - SegmentIndex, +use subspace_core_primitives::pieces::{PieceArray, RawRecord, RecordWitness}; +use subspace_core_primitives::segments::{ + ArchivedBlockProgress, ArchivedHistorySegment, LastArchivedBlock, RecordedHistorySegment, + SegmentCommitment, SegmentHeader, SegmentIndex, }; +use subspace_core_primitives::{Blake3Hash, BlockNumber}; use subspace_erasure_coding::ErasureCoding; const INITIAL_LAST_ARCHIVED_BLOCK: LastArchivedBlock = LastArchivedBlock { @@ -193,16 +194,16 @@ impl NewArchivedSegment { .segment_piece_indexes_source_first(); // Iterate through the object mapping vector for each piece - object_mapping - .into_iter() - .zip(piece_indexes) - .flat_map(|(piece_mappings, piece_index)| { + object_mapping.into_iter().zip(piece_indexes).flat_map( + move |(piece_mappings, piece_index)| { // And then through each individual object mapping in the piece + let piece_mappings = piece_mappings.objects().to_vec(); + piece_mappings - .objects .into_iter() .map(move |piece_object| GlobalObject::new(piece_index, &piece_object)) - }) + }, + ) } } @@ -316,11 +317,10 @@ impl Archiver { // Take part of the encoded block that wasn't archived yet and push to the // buffer and block continuation object_mapping - .objects + .objects_mut() .retain_mut(|block_object: &mut BlockObject| { - let current_offset = block_object.offset(); - if current_offset >= archived_block_bytes { - block_object.set_offset(current_offset - archived_block_bytes); + if block_object.offset >= archived_block_bytes { + block_object.offset -= archived_block_bytes; true } else { false @@ -509,13 +509,12 @@ impl Archiver { bytes.truncate(split_point); - let continuation_object_mapping = BlockObjectMapping { + let continuation_object_mapping = BlockObjectMapping::V0 { objects: object_mapping - .objects + .objects_mut() .extract_if(|block_object: &mut BlockObject| { - let current_offset = block_object.offset(); - if current_offset >= split_point as u32 { - block_object.set_offset(current_offset - split_point as u32); + if block_object.offset >= split_point as u32 { + block_object.offset -= split_point as u32; true } else { false @@ -553,13 +552,12 @@ impl Archiver { bytes.truncate(split_point); - let continuation_object_mapping = BlockObjectMapping { + let continuation_object_mapping = BlockObjectMapping::V0 { objects: object_mapping - .objects + .objects_mut() .extract_if(|block_object: &mut BlockObject| { - let current_offset = block_object.offset(); - if current_offset >= split_point as u32 { - block_object.set_offset(current_offset - split_point as u32); + if block_object.offset >= split_point as u32 { + block_object.offset -= split_point as u32; true } else { false @@ -640,12 +638,12 @@ impl Archiver { bytes, object_mapping, } => { - for block_object in &object_mapping.objects { + for block_object in object_mapping.objects() { // `+1` corresponds to `SegmentItem::X {}` enum variant encoding let offset_in_segment = base_offset_in_segment + 1 + Compact::compact_len(&(bytes.len() as u32)) - + block_object.offset() as usize; + + block_object.offset as usize; let raw_piece_offset = (offset_in_segment % RawRecord::SIZE).try_into().expect( "Offset within piece should always fit in 32-bit integer; qed", @@ -653,8 +651,8 @@ impl Archiver { if let Some(piece_object_mapping) = corrected_object_mapping .get_mut(offset_in_segment / RawRecord::SIZE) { - piece_object_mapping.objects.push(PieceObject::V0 { - hash: block_object.hash(), + piece_object_mapping.objects_mut().push(PieceObject { + hash: block_object.hash, offset: raw_piece_offset, }); } @@ -686,7 +684,7 @@ impl Archiver { let mut tmp_source_shards_scalars = Vec::::with_capacity(RecordedHistorySegment::NUM_RAW_RECORDS); // Iterate over the chunks of `Scalar::SAFE_BYTES` bytes of all records - for record_offset in 0..RawRecord::SIZE / Scalar::SAFE_BYTES { + for record_offset in 0..RawRecord::NUM_CHUNKS { // Collect chunks of each record at the same offset raw_record_shards .array_chunks::<{ RawRecord::SIZE }>() diff --git a/crates/subspace-archiving/src/archiver/incremental_record_commitments.rs b/crates/subspace-archiving/src/archiver/incremental_record_commitments.rs index 7fd263020a..6e1f7e4a6c 100644 --- a/crates/subspace-archiving/src/archiver/incremental_record_commitments.rs +++ b/crates/subspace-archiving/src/archiver/incremental_record_commitments.rs @@ -10,7 +10,7 @@ use parity_scale_codec::{Encode, Output}; use rayon::prelude::*; use subspace_core_primitives::crypto::kzg::{Commitment, Kzg}; use subspace_core_primitives::crypto::Scalar; -use subspace_core_primitives::RawRecord; +use subspace_core_primitives::pieces::RawRecord; /// State of incremental record commitments, encapsulated to hide implementation details and /// encapsulate tricky logic diff --git a/crates/subspace-archiving/src/piece_reconstructor.rs b/crates/subspace-archiving/src/piece_reconstructor.rs index 80853d4e4a..e88d65565f 100644 --- a/crates/subspace-archiving/src/piece_reconstructor.rs +++ b/crates/subspace-archiving/src/piece_reconstructor.rs @@ -9,7 +9,8 @@ use alloc::vec::Vec; use rayon::prelude::*; use subspace_core_primitives::crypto::kzg::{Commitment, Kzg, Polynomial}; use subspace_core_primitives::crypto::{blake3_254_hash_to_scalar, Scalar}; -use subspace_core_primitives::{ArchivedHistorySegment, Piece, RawRecord}; +use subspace_core_primitives::pieces::{Piece, RawRecord}; +use subspace_core_primitives::segments::ArchivedHistorySegment; use subspace_erasure_coding::ErasureCoding; /// Reconstructor-related instantiation error @@ -62,7 +63,7 @@ impl PiecesReconstructor { let mut tmp_shards_scalars = Vec::>::with_capacity(ArchivedHistorySegment::NUM_PIECES); // Iterate over the chunks of `Scalar::SAFE_BYTES` bytes of all records - for record_offset in 0..RawRecord::SIZE / Scalar::SAFE_BYTES { + for record_offset in 0..RawRecord::NUM_CHUNKS { // Collect chunks of each record at the same offset for maybe_piece in input_pieces.iter() { let maybe_scalar = maybe_piece diff --git a/crates/subspace-archiving/src/reconstructor.rs b/crates/subspace-archiving/src/reconstructor.rs index d07693b7ff..c20da90caf 100644 --- a/crates/subspace-archiving/src/reconstructor.rs +++ b/crates/subspace-archiving/src/reconstructor.rs @@ -9,10 +9,12 @@ use alloc::vec::Vec; use core::mem; use parity_scale_codec::Decode; use subspace_core_primitives::crypto::Scalar; -use subspace_core_primitives::{ - ArchivedBlockProgress, ArchivedHistorySegment, BlockNumber, LastArchivedBlock, Piece, - RawRecord, RecordedHistorySegment, SegmentHeader, SegmentIndex, +use subspace_core_primitives::pieces::{Piece, RawRecord}; +use subspace_core_primitives::segments::{ + ArchivedBlockProgress, ArchivedHistorySegment, LastArchivedBlock, RecordedHistorySegment, + SegmentHeader, SegmentIndex, }; +use subspace_core_primitives::BlockNumber; use subspace_erasure_coding::ErasureCoding; /// Reconstructor-related instantiation error @@ -72,15 +74,13 @@ impl Reconstructor { /// Given a set of pieces of a segment of the archived history (any half of all pieces are /// required to be present, the rest will be recovered automatically due to use of erasure - /// coding if needed), reconstructs and returns segment header and a list of encoded blocks with - /// corresponding block numbers. + /// coding if needed), reconstructs and returns the segment itself. /// - /// It is possible to start with any segment, but when next segment is pushed, it needs to - /// follow the previous one or else error will be returned. - pub fn add_segment( - &mut self, + /// Does not modify the internal state of the reconstructor. + pub fn reconstruct_segment( + &self, segment_pieces: &[Option], - ) -> Result { + ) -> Result { let mut segment_data = RecordedHistorySegment::new_boxed(); if !segment_pieces @@ -90,11 +90,13 @@ impl Reconstructor { .zip(segment_data.iter_mut()) .all(|(maybe_piece, raw_record)| { if let Some(piece) = maybe_piece { - piece.record().iter().zip(raw_record.iter_mut()).for_each( - |(source, target)| { - target.copy_from_slice(&source[..Scalar::SAFE_BYTES]); - }, - ); + piece + .record() + .to_raw_record_chunks() + .zip(raw_record.iter_mut()) + .for_each(|(source, target)| { + target.copy_from_slice(source); + }); true } else { false @@ -108,7 +110,7 @@ impl Reconstructor { let mut tmp_shards_scalars = Vec::>::with_capacity(ArchivedHistorySegment::NUM_PIECES); // Iterate over the chunks of `Scalar::SAFE_BYTES` bytes of all records - for record_offset in 0..RawRecord::SIZE / Scalar::SAFE_BYTES { + for record_offset in 0..RawRecord::NUM_CHUNKS { // Collect chunks of each record at the same offset for maybe_piece in segment_pieces.iter() { let maybe_scalar = maybe_piece @@ -138,19 +140,35 @@ impl Reconstructor { .expect("Statically guaranteed to exist in a piece; qed") })) .for_each(|(source_scalar, segment_data)| { - // Source scalar only contains payload data within first - // [`Scalar::SAFE_BYTES`] - segment_data - .copy_from_slice(&source_scalar.to_bytes()[..Scalar::SAFE_BYTES]); + segment_data.copy_from_slice( + &source_scalar + .try_to_safe_bytes() + .expect("Source scalar has only safe bytes; qed"), + ); }); tmp_shards_scalars.clear(); } } - let Segment::V0 { items } = - Segment::decode(&mut AsRef::<[u8]>::as_ref(segment_data.as_ref())) - .map_err(ReconstructorError::SegmentDecoding)?; + let segment = Segment::decode(&mut AsRef::<[u8]>::as_ref(segment_data.as_ref())) + .map_err(ReconstructorError::SegmentDecoding)?; + + Ok(segment) + } + + /// Given a set of pieces of a segment of the archived history (any half of all pieces are + /// required to be present, the rest will be recovered automatically due to use of erasure + /// coding if needed), reconstructs and returns segment header and a list of encoded blocks with + /// corresponding block numbers. + /// + /// It is possible to start with any segment, but when next segment is pushed, it needs to + /// follow the previous one or else error will be returned. + pub fn add_segment( + &mut self, + segment_pieces: &[Option], + ) -> Result { + let Segment::V0 { items } = self.reconstruct_segment(segment_pieces)?; let mut reconstructed_contents = ReconstructedContents::default(); let mut next_block_number = 0; diff --git a/crates/subspace-archiving/tests/integration/archiver.rs b/crates/subspace-archiving/tests/integration/archiver.rs index 92703f5cc1..5998da9104 100644 --- a/crates/subspace-archiving/tests/integration/archiver.rs +++ b/crates/subspace-archiving/tests/integration/archiver.rs @@ -10,10 +10,12 @@ use subspace_archiving::archiver; use subspace_archiving::archiver::{Archiver, ArchiverInstantiationError, SegmentItem}; use subspace_core_primitives::crypto::kzg::{embedded_kzg_settings, Kzg}; use subspace_core_primitives::objects::{BlockObject, BlockObjectMapping, PieceObject}; -use subspace_core_primitives::{ - ArchivedBlockProgress, ArchivedHistorySegment, Blake3Hash, LastArchivedBlock, Piece, Record, - RecordedHistorySegment, SegmentCommitment, SegmentHeader, SegmentIndex, +use subspace_core_primitives::pieces::{Piece, Record}; +use subspace_core_primitives::segments::{ + ArchivedBlockProgress, ArchivedHistorySegment, LastArchivedBlock, RecordedHistorySegment, + SegmentCommitment, SegmentHeader, SegmentIndex, }; +use subspace_core_primitives::Blake3Hash; use subspace_erasure_coding::ErasureCoding; fn extract_data>(data: &[u8], offset: O) -> &[u8] { @@ -26,7 +28,9 @@ fn extract_data_from_source_record>(record: &Record, offset: O) -> let offset: u64 = offset.into(); let Compact(size) = Compact::::decode( &mut record - .to_raw_record_bytes() + .to_raw_record_chunks() + .flatten() + .copied() .skip(offset as usize) .take(8) .collect::>() @@ -34,7 +38,9 @@ fn extract_data_from_source_record>(record: &Record, offset: O) -> ) .unwrap(); record - .to_raw_record_bytes() + .to_raw_record_chunks() + .flatten() + .copied() .skip(offset as usize + Compact::compact_len(&size)) .take(size as usize) .collect() @@ -48,8 +54,8 @@ fn compare_block_objects_to_piece_objects<'a>( block_objects.zip(piece_objects).for_each( |((block, block_object_mapping), (piece, piece_object_mapping))| { assert_eq!( - extract_data_from_source_record(piece.record(), piece_object_mapping.offset()), - extract_data(block, block_object_mapping.offset()) + extract_data_from_source_record(piece.record(), piece_object_mapping.offset), + extract_data(block, block_object_mapping.offset) ); }, ); @@ -77,13 +83,13 @@ fn archiver() { .as_mut() .write_all(&Compact(128_u64).encode()) .unwrap(); - let object_mapping = BlockObjectMapping { + let object_mapping = BlockObjectMapping::V0 { objects: vec![ - BlockObject::V0 { + BlockObject { hash: Blake3Hash::default(), offset: 0u32, }, - BlockObject::V0 { + BlockObject { hash: Blake3Hash::default(), offset: RecordedHistorySegment::SIZE as u32 / 3, }, @@ -113,17 +119,17 @@ fn archiver() { .as_mut() .write_all(&Compact(100_u64).encode()) .unwrap(); - let object_mapping = BlockObjectMapping { + let object_mapping = BlockObjectMapping::V0 { objects: vec![ - BlockObject::V0 { + BlockObject { hash: Blake3Hash::default(), offset: RecordedHistorySegment::SIZE as u32 / 6, }, - BlockObject::V0 { + BlockObject { hash: Blake3Hash::default(), offset: RecordedHistorySegment::SIZE as u32 / 5, }, - BlockObject::V0 { + BlockObject { hash: Blake3Hash::default(), offset: RecordedHistorySegment::SIZE as u32 / 3 * 2 - 200, }, @@ -166,19 +172,19 @@ fn archiver() { first_archived_segment .object_mapping .iter() - .filter(|object_mapping| !object_mapping.objects.is_empty()) + .filter(|object_mapping| !object_mapping.objects().is_empty()) .count(), 4 ); { let block_objects = iter::repeat(block_0.as_ref()) - .zip(&block_0_object_mapping.objects) - .chain(iter::repeat(block_1.as_ref()).zip(block_1_object_mapping.objects.iter())); + .zip(block_0_object_mapping.objects()) + .chain(iter::repeat(block_1.as_ref()).zip(block_1_object_mapping.objects())); let piece_objects = first_archived_segment .pieces .source_pieces() .zip(&first_archived_segment.object_mapping) - .flat_map(|(piece, object_mapping)| iter::repeat(piece).zip(&object_mapping.objects)); + .flat_map(|(piece, object_mapping)| iter::repeat(piece).zip(object_mapping.objects())); compare_block_objects_to_piece_objects(block_objects, piece_objects); } @@ -245,7 +251,7 @@ fn archiver() { archived_segments[0] .object_mapping .iter() - .filter(|object_mapping| !object_mapping.objects.is_empty()) + .filter(|object_mapping| !object_mapping.objects().is_empty()) .count(), 1 ); @@ -258,18 +264,18 @@ fn archiver() { archived_segments[1] .object_mapping .iter() - .filter(|object_mapping| !object_mapping.objects.is_empty()) + .filter(|object_mapping| !object_mapping.objects().is_empty()) .count(), 0 ); { let block_objects = - iter::repeat(block_1.as_ref()).zip(block_1_object_mapping.objects.iter().skip(2)); + iter::repeat(block_1.as_ref()).zip(block_1_object_mapping.objects().iter().skip(2)); let piece_objects = archived_segments[0] .pieces .source_pieces() .zip(&archived_segments[0].object_mapping) - .flat_map(|(piece, object_mapping)| iter::repeat(piece).zip(&object_mapping.objects)); + .flat_map(|(piece, object_mapping)| iter::repeat(piece).zip(object_mapping.objects())); compare_block_objects_to_piece_objects(block_objects, piece_objects); } @@ -534,8 +540,8 @@ fn spill_over_edge_case() { // subtracting with overflow when trying to slice internal bytes of the segment item let archived_segments = archiver.add_block( vec![0u8; RecordedHistorySegment::SIZE], - BlockObjectMapping { - objects: vec![BlockObject::V0 { + BlockObjectMapping::V0 { + objects: vec![BlockObject { hash: Blake3Hash::default(), offset: 0, }], @@ -548,7 +554,7 @@ fn spill_over_edge_case() { archived_segments[0] .object_mapping .iter() - .filter(|o| !o.objects.is_empty()) + .filter(|o| !o.objects().is_empty()) .count(), 0 ); @@ -556,7 +562,7 @@ fn spill_over_edge_case() { archived_segments[1] .object_mapping .iter() - .filter(|o| !o.objects.is_empty()) + .filter(|o| !o.objects().is_empty()) .count(), 1 ); @@ -585,7 +591,7 @@ fn object_on_the_edge_of_segment() { .unwrap(); let mut second_block = vec![0u8; RecordedHistorySegment::SIZE * 2]; - let object_mapping = BlockObject::V0 { + let object_mapping = BlockObject { hash: Blake3Hash::default(), // Offset is designed to fall exactly on the edge of the segment offset: RecordedHistorySegment::SIZE as u32 @@ -620,7 +626,7 @@ fn object_on_the_edge_of_segment() { }; let mapped_bytes = rand::random::<[u8; 32]>().to_vec().encode(); // Write mapped bytes at expected offset in source data - second_block[object_mapping.offset() as usize..][..mapped_bytes.len()] + second_block[object_mapping.offset as usize..][..mapped_bytes.len()] .copy_from_slice(&mapped_bytes); // First ensure that any smaller offset will get translated into the first archived segment, @@ -628,10 +634,10 @@ fn object_on_the_edge_of_segment() { { let archived_segments = archiver.clone().add_block( second_block.clone(), - BlockObjectMapping { - objects: vec![BlockObject::V0 { - hash: object_mapping.hash(), - offset: object_mapping.offset() - 1, + BlockObjectMapping::V0 { + objects: vec![BlockObject { + hash: object_mapping.hash, + offset: object_mapping.offset - 1, }], }, true, @@ -642,7 +648,7 @@ fn object_on_the_edge_of_segment() { archived_segments[0] .object_mapping .iter() - .filter(|o| !o.objects.is_empty()) + .filter(|o| !o.objects().is_empty()) .count(), 1 ); @@ -650,7 +656,7 @@ fn object_on_the_edge_of_segment() { let archived_segments = archiver.add_block( second_block, - BlockObjectMapping { + BlockObjectMapping::V0 { objects: vec![object_mapping], }, true, @@ -661,7 +667,7 @@ fn object_on_the_edge_of_segment() { archived_segments[0] .object_mapping .iter() - .filter(|o| !o.objects.is_empty()) + .filter(|o| !o.objects().is_empty()) .count(), 0 ); @@ -670,18 +676,20 @@ fn object_on_the_edge_of_segment() { archived_segments[1] .object_mapping .iter() - .filter(|o| !o.objects.is_empty()) + .filter(|o| !o.objects().is_empty()) .count(), 1 ); - assert_eq!(archived_segments[1].object_mapping[0].objects.len(), 1); + assert_eq!(archived_segments[1].object_mapping[0].objects().len(), 1); // Ensure bytes are mapped correctly assert_eq!( archived_segments[1].pieces[0] .record() - .to_raw_record_bytes() - .skip(archived_segments[1].object_mapping[0].objects[0].offset() as usize) + .to_raw_record_chunks() + .flatten() + .copied() + .skip(archived_segments[1].object_mapping[0].objects()[0].offset as usize) .take(mapped_bytes.len()) .collect::>(), mapped_bytes diff --git a/crates/subspace-archiving/tests/integration/piece_reconstruction.rs b/crates/subspace-archiving/tests/integration/piece_reconstruction.rs index 8a1abe8a63..1617fe9bd7 100644 --- a/crates/subspace-archiving/tests/integration/piece_reconstruction.rs +++ b/crates/subspace-archiving/tests/integration/piece_reconstruction.rs @@ -6,9 +6,8 @@ use subspace_archiving::archiver::Archiver; use subspace_archiving::piece_reconstructor::{PiecesReconstructor, ReconstructorError}; use subspace_core_primitives::crypto::kzg::{embedded_kzg_settings, Kzg}; use subspace_core_primitives::objects::BlockObjectMapping; -use subspace_core_primitives::{ - ArchivedHistorySegment, FlatPieces, Piece, Record, RecordedHistorySegment, -}; +use subspace_core_primitives::pieces::{FlatPieces, Piece, Record}; +use subspace_core_primitives::segments::{ArchivedHistorySegment, RecordedHistorySegment}; use subspace_erasure_coding::ErasureCoding; fn pieces_to_option_of_pieces(pieces: &FlatPieces) -> Vec> { diff --git a/crates/subspace-archiving/tests/integration/reconstructor.rs b/crates/subspace-archiving/tests/integration/reconstructor.rs index 701cba89d3..054d0770ca 100644 --- a/crates/subspace-archiving/tests/integration/reconstructor.rs +++ b/crates/subspace-archiving/tests/integration/reconstructor.rs @@ -6,9 +6,10 @@ use subspace_archiving::archiver::Archiver; use subspace_archiving::reconstructor::{Reconstructor, ReconstructorError}; use subspace_core_primitives::crypto::kzg::{embedded_kzg_settings, Kzg}; use subspace_core_primitives::objects::BlockObjectMapping; -use subspace_core_primitives::{ - ArchivedBlockProgress, ArchivedHistorySegment, FlatPieces, LastArchivedBlock, Piece, Record, - RecordedHistorySegment, SegmentIndex, +use subspace_core_primitives::pieces::{FlatPieces, Piece, Record}; +use subspace_core_primitives::segments::{ + ArchivedBlockProgress, ArchivedHistorySegment, LastArchivedBlock, RecordedHistorySegment, + SegmentIndex, }; use subspace_erasure_coding::ErasureCoding; diff --git a/crates/subspace-core-primitives/Cargo.toml b/crates/subspace-core-primitives/Cargo.toml index fd2d9fd033..1746a34445 100644 --- a/crates/subspace-core-primitives/Cargo.toml +++ b/crates/subspace-core-primitives/Cargo.toml @@ -16,9 +16,7 @@ include = [ bench = false [dependencies] -blake3 = { version = "1.5.3", default-features = false } -# TODO: Remove once we switch to big-endian -blst = "0.3.13" +blake3 = { version = "1.5.4", default-features = false } bytes = { version = "1.7.1", default-features = false } derive_more = { version = "1.0.0", default-features = false, features = ["full"] } hex = { version = "0.4.3", default-features = false, features = ["alloc"] } @@ -29,13 +27,12 @@ parking_lot = { version = "0.12.2", optional = true } rayon = { version = "1.10.0", optional = true } rust-kzg-blst = { git = "https://github.com/grandinetech/rust-kzg", rev = "6c8fcc623df3d7e8c0f30951a49bfea764f90bf4", default-features = false } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -serde = { version = "1.0.206", optional = true, features = ["alloc", "derive"] } -serde_arrays = { version = "0.1.0", optional = true } +serde = { version = "1.0.110", optional = true, default-features = false, features = ["alloc", "derive"] } # Replacement for `parking_lot` in `no_std` environment spin = "0.9.7" static_assertions = "1.1.0" tracing = { version = "0.1.40", default-features = false } -uint = { version = "0.9.5", default-features = false } +uint = { version = "0.10.0", default-features = false } [dev-dependencies] criterion = "0.5.1" @@ -58,8 +55,6 @@ parallel = [ ] serde = [ "dep:serde", - # TODO: `serde_arrays` doesn't support `no_std` right now: https://github.com/Kromey/serde_arrays/issues/8 - "dep:serde_arrays", "hex/serde", ] std = [ diff --git a/crates/subspace-core-primitives/benches/kzg.rs b/crates/subspace-core-primitives/benches/kzg.rs index 8e504a0bc9..5956de3dcc 100644 --- a/crates/subspace-core-primitives/benches/kzg.rs +++ b/crates/subspace-core-primitives/benches/kzg.rs @@ -1,10 +1,10 @@ use criterion::{black_box, criterion_group, criterion_main, Criterion}; use subspace_core_primitives::crypto::kzg::{embedded_kzg_settings, Kzg}; use subspace_core_primitives::crypto::Scalar; -use subspace_core_primitives::RawRecord; +use subspace_core_primitives::pieces::RawRecord; fn criterion_benchmark(c: &mut Criterion) { - let values = (0..RawRecord::SIZE / Scalar::SAFE_BYTES) + let values = (0..RawRecord::NUM_CHUNKS) .map(|_| Scalar::from(rand::random::<[u8; Scalar::SAFE_BYTES]>())) .collect::>(); diff --git a/crates/subspace-core-primitives/src/checksum.rs b/crates/subspace-core-primitives/src/checksum.rs index b8ba689463..c54bdf130b 100644 --- a/crates/subspace-core-primitives/src/checksum.rs +++ b/crates/subspace-core-primitives/src/checksum.rs @@ -4,7 +4,6 @@ mod tests; use crate::Blake3Hash; -use core::mem; use parity_scale_codec::{Decode, Encode, EncodeLike, Error, Input, Output}; /// Output wrapper for SCALE codec that will write Blake3 checksum at the end of the encoding @@ -91,7 +90,7 @@ where fn finish(self) -> (Blake3Hash, &'a mut I) { // Compute checksum at the very end of decoding let hash = *self.hasher.finalize().as_bytes(); - (hash, self.input) + (hash.into(), self.input) } } @@ -105,7 +104,7 @@ where { #[inline] fn size_hint(&self) -> usize { - self.0.size_hint() + mem::size_of::() + self.0.size_hint() + Blake3Hash::SIZE } #[inline] @@ -118,7 +117,7 @@ where #[inline] fn encoded_size(&self) -> usize { - self.0.encoded_size() + mem::size_of::() + self.0.encoded_size() + Blake3Hash::SIZE } } diff --git a/crates/subspace-core-primitives/src/checksum/tests.rs b/crates/subspace-core-primitives/src/checksum/tests.rs index 178da249ff..09bb29e90f 100644 --- a/crates/subspace-core-primitives/src/checksum/tests.rs +++ b/crates/subspace-core-primitives/src/checksum/tests.rs @@ -2,7 +2,6 @@ use super::Blake3Checksummed; use crate::Blake3Hash; use parity_scale_codec::{Decode, Encode}; use rand::prelude::*; -use std::mem; #[test] fn basic() { @@ -13,7 +12,7 @@ fn basic() { // Encoding is extended with checksum assert_eq!( - plain_encoding.len() + mem::size_of::(), + plain_encoding.len() + Blake3Hash::SIZE, checksummed_encoding.len() ); diff --git a/crates/subspace-core-primitives/src/crypto.rs b/crates/subspace-core-primitives/src/crypto.rs index dd7ab6a1b4..4433d0eba1 100644 --- a/crates/subspace-core-primitives/src/crypto.rs +++ b/crates/subspace-core-primitives/src/crypto.rs @@ -21,13 +21,12 @@ extern crate alloc; pub mod kzg; use crate::Blake3Hash; +use ::kzg::Fr; #[cfg(not(feature = "std"))] use alloc::format; #[cfg(not(feature = "std"))] use alloc::string::String; #[cfg(not(feature = "std"))] -use alloc::string::ToString; -#[cfg(not(feature = "std"))] use alloc::vec::Vec; use core::cmp::Ordering; use core::hash::{Hash, Hasher}; @@ -39,7 +38,7 @@ use scale_info::{Type, TypeInfo}; /// BLAKE3 hashing of a single value. pub fn blake3_hash(data: &[u8]) -> Blake3Hash { - *blake3::hash(data).as_bytes() + blake3::hash(data).as_bytes().into() } /// BLAKE3 hashing of a single value in parallel (only useful for large values well above 128kiB). @@ -47,12 +46,12 @@ pub fn blake3_hash(data: &[u8]) -> Blake3Hash { pub fn blake3_hash_parallel(data: &[u8]) -> Blake3Hash { let mut state = blake3::Hasher::new(); state.update_rayon(data); - *state.finalize().as_bytes() + state.finalize().as_bytes().into() } /// BLAKE3 keyed hashing of a single value. pub fn blake3_hash_with_key(key: &[u8; 32], data: &[u8]) -> Blake3Hash { - *blake3::keyed_hash(key, data).as_bytes() + blake3::keyed_hash(key, data).as_bytes().into() } /// BLAKE3 hashing of a list of values. @@ -61,15 +60,15 @@ pub fn blake3_hash_list(data: &[&[u8]]) -> Blake3Hash { for d in data { state.update(d); } - *state.finalize().as_bytes() + state.finalize().as_bytes().into() } /// BLAKE3 hashing of a single value truncated to 254 bits as Scalar for usage with KZG. pub fn blake3_254_hash_to_scalar(data: &[u8]) -> Scalar { let mut hash = blake3_hash(data); - // Erase last 2 bits to effectively truncate the hash (number is interpreted as little-endian) - hash[31] &= 0b00111111; - Scalar::try_from(hash) + // Erase first 2 bits to effectively truncate the hash (number is interpreted as big-endian) + hash[0] &= 0b00111111; + Scalar::try_from(*hash) .expect("Last bit erased, thus hash is guaranteed to fit into scalar; qed") } @@ -182,7 +181,7 @@ impl From<&[u8; Self::SAFE_BYTES]> for Scalar { #[inline] fn from(value: &[u8; Self::SAFE_BYTES]) -> Self { let mut bytes = [0u8; Self::FULL_BYTES]; - bytes[..Self::SAFE_BYTES].copy_from_slice(value); + bytes[1..].copy_from_slice(value); Self::try_from(bytes).expect("Safe bytes always fit into scalar and thus succeed; qed") } } @@ -208,36 +207,14 @@ impl TryFrom<[u8; Self::FULL_BYTES]> for Scalar { #[inline] fn try_from(value: [u8; Self::FULL_BYTES]) -> Result { - // TODO: The whole method should have been just the following line, but upstream `rust-kzg` - // switched to big-endian and we have to maintain little-endian version for now - // FsFr::from_bytes(&value).map(Scalar) - let mut bls_scalar = blst::blst_scalar::default(); - let mut fr = blst::blst_fr::default(); - unsafe { - blst::blst_scalar_from_lendian(&mut bls_scalar, value.as_ptr()); - if !blst::blst_scalar_fr_check(&bls_scalar) { - return Err("Invalid scalar".to_string()); - } - blst::blst_fr_from_scalar(&mut fr, &bls_scalar); - } - Ok(Self(FsFr(fr))) + FsFr::from_bytes(&value).map(Scalar) } } impl From<&Scalar> for [u8; Scalar::FULL_BYTES] { #[inline] fn from(value: &Scalar) -> Self { - // TODO: The whole method should have been just the following line, but upstream `rust-kzg` - // switched to big-endian and we have to maintain little-endian version for now - // value.0.to_bytes() - let mut scalar = blst::blst_scalar::default(); - let mut bytes = [0u8; 32]; - unsafe { - blst::blst_scalar_from_fr(&mut scalar, &value.0 .0); - blst::blst_lendian_from_scalar(bytes.as_mut_ptr(), &scalar); - } - - bytes + value.0.to_bytes() } } @@ -264,6 +241,17 @@ impl Scalar { self.into() } + /// Convert scalar into safe bytes, returns `None` if not possible to convert due to larger + /// internal value + pub fn try_to_safe_bytes(&self) -> Option<[u8; Scalar::SAFE_BYTES]> { + let bytes = self.to_bytes(); + if bytes[0] == 0 { + Some(bytes[1..].try_into().expect("Correct length; qed")) + } else { + None + } + } + /// Convenient conversion from slice of scalar to underlying representation for efficiency /// purposes. #[inline] diff --git a/crates/subspace-core-primitives/src/lib.rs b/crates/subspace-core-primitives/src/lib.rs index bf857647a1..779753c135 100644 --- a/crates/subspace-core-primitives/src/lib.rs +++ b/crates/subspace-core-primitives/src/lib.rs @@ -23,7 +23,7 @@ const_option, const_trait_impl, const_try, - new_uninit, + new_zeroed_alloc, portable_simd, step_trait )] @@ -31,41 +31,35 @@ pub mod checksum; pub mod crypto; pub mod objects; -mod pieces; -mod segments; -#[cfg(feature = "serde")] -mod serde; +pub mod pieces; +pub mod pos; +pub mod pot; +pub mod sectors; +pub mod segments; #[cfg(test)] mod tests; #[cfg(not(feature = "std"))] extern crate alloc; -use crate::crypto::{blake3_hash, blake3_hash_list, blake3_hash_with_key, Scalar}; +use crate::crypto::kzg::Witness; +use crate::crypto::{blake3_hash, blake3_hash_list, Scalar}; +use crate::pieces::{PieceOffset, Record, RecordCommitment, RecordWitness}; +use crate::pos::PosProof; +use crate::sectors::SectorIndex; +use crate::segments::{HistorySize, SegmentIndex}; #[cfg(feature = "serde")] use ::serde::{Deserialize, Serialize}; #[cfg(not(feature = "std"))] -use alloc::boxed::Box; -#[cfg(not(feature = "std"))] -use alloc::vec; -#[cfg(not(feature = "std"))] -use alloc::vec::Vec; +use alloc::string::String; +use core::array::TryFromSliceError; use core::fmt; -use core::num::{NonZeroU64, NonZeroU8}; -use core::simd::Simd; -use core::str::FromStr; use derive_more::{Add, AsMut, AsRef, Deref, DerefMut, Display, Div, From, Into, Mul, Rem, Sub}; +use hex::FromHex; use num_traits::{WrappingAdd, WrappingSub}; use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; -pub use pieces::{ - ChunkWitness, FlatPieces, Piece, PieceArray, PieceIndex, PieceOffset, RawRecord, Record, - RecordCommitment, RecordWitness, SBucket, -}; use scale_info::TypeInfo; -pub use segments::{ - ArchivedHistorySegment, HistorySize, RecordedHistorySegment, SegmentCommitment, SegmentIndex, -}; -use static_assertions::{const_assert, const_assert_eq}; +use static_assertions::const_assert; // Refuse to compile on lower than 32-bit platforms const_assert!(core::mem::size_of::() >= core::mem::size_of::()); @@ -76,16 +70,8 @@ pub const REWARD_SIGNING_CONTEXT: &[u8] = b"subspace_reward"; /// Byte length of a randomness type. pub const RANDOMNESS_LENGTH: usize = 32; -/// Size of BLAKE3 hash output (in bytes). -pub const BLAKE3_HASH_SIZE: usize = 32; - -/// BLAKE3 hash output -pub type Blake3Hash = [u8; BLAKE3_HASH_SIZE]; - -/// BLAKE3 hash output wrapper, which serializes it as a hex string -// TODO: rename this type to Blake3Hash into a newtype, after checking for any breaking changes +/// BLAKE3 hash output transparent wrapper #[derive( - Debug, Default, Copy, Clone, @@ -95,7 +81,8 @@ pub type Blake3Hash = [u8; BLAKE3_HASH_SIZE]; PartialOrd, Hash, From, - Into, + AsRef, + AsMut, Deref, DerefMut, Encode, @@ -105,7 +92,67 @@ pub type Blake3Hash = [u8; BLAKE3_HASH_SIZE]; )] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] #[cfg_attr(feature = "serde", serde(transparent))] -pub struct Blake3HashHex(#[cfg_attr(feature = "serde", serde(with = "hex"))] Blake3Hash); +pub struct Blake3Hash(#[cfg_attr(feature = "serde", serde(with = "hex"))] [u8; Self::SIZE]); + +impl fmt::Debug for Blake3Hash { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", hex::encode(self.0)) + } +} + +impl AsRef<[u8]> for Blake3Hash { + #[inline] + fn as_ref(&self) -> &[u8] { + &self.0 + } +} + +impl AsMut<[u8]> for Blake3Hash { + #[inline] + fn as_mut(&mut self) -> &mut [u8] { + &mut self.0 + } +} + +impl FromHex for Blake3Hash { + type Error = hex::FromHexError; + + fn from_hex>(hex: T) -> Result { + let data = hex::decode(hex)? + .try_into() + .map_err(|_| hex::FromHexError::InvalidStringLength)?; + + Ok(Self(data)) + } +} + +impl From<&[u8; Self::SIZE]> for Blake3Hash { + #[inline] + fn from(value: &[u8; Self::SIZE]) -> Self { + Self(*value) + } +} + +impl TryFrom<&[u8]> for Blake3Hash { + type Error = TryFromSliceError; + + #[inline] + fn try_from(value: &[u8]) -> Result { + Ok(Self(value.try_into()?)) + } +} + +impl From for [u8; Blake3Hash::SIZE] { + #[inline] + fn from(value: Blake3Hash) -> Self { + value.0 + } +} + +impl Blake3Hash { + /// Size of BLAKE3 hash output (in bytes). + pub const SIZE: usize = 32; +} /// Type of randomness. #[derive( @@ -163,278 +210,128 @@ pub type SolutionRange = u64; /// Computes the following: /// ```text -/// MAX * slot_probability / (pieces_in_sector * chunks / s_buckets) / sectors +/// MAX * slot_probability / chunks * s_buckets / sectors /// ``` -pub const fn sectors_to_solution_range( - sectors: u64, - slot_probability: (u64, u64), - pieces_in_sector: u16, -) -> SolutionRange { +pub const fn pieces_to_solution_range(pieces: u64, slot_probability: (u64, u64)) -> SolutionRange { let solution_range = SolutionRange::MAX // Account for slot probability / slot_probability.1 * slot_probability.0 - // Now take sector size and probability of hitting occupied s-bucket in sector into account - / (pieces_in_sector as u64 * Record::NUM_CHUNKS as u64 / Record::NUM_S_BUCKETS as u64); + // Now take probability of hitting occupied s-bucket in a piece into account + / Record::NUM_CHUNKS as u64 + * Record::NUM_S_BUCKETS as u64; - // Take number of sectors into account - solution_range / sectors + // Take number of pieces into account + solution_range / pieces } /// Computes the following: /// ```text -/// MAX * slot_probability / (pieces_in_sector * chunks / s_buckets) / solution_range +/// MAX * slot_probability / chunks * s_buckets / solution_range /// ``` -pub const fn solution_range_to_sectors( +pub const fn solution_range_to_pieces( solution_range: SolutionRange, slot_probability: (u64, u64), - pieces_in_sector: u16, ) -> u64 { - let sectors = SolutionRange::MAX + let pieces = SolutionRange::MAX // Account for slot probability / slot_probability.1 * slot_probability.0 - // Now take sector size and probability of hitting occupied s-bucket in sector into account - / (pieces_in_sector as u64 * Record::NUM_CHUNKS as u64 / Record::NUM_S_BUCKETS as u64); + // Now take probability of hitting occupied s-bucket in sector into account + / Record::NUM_CHUNKS as u64 + * Record::NUM_S_BUCKETS as u64; // Take solution range into account - sectors / solution_range + pieces / solution_range } // Quick test to ensure functions above are the inverse of each other -const_assert!( - solution_range_to_sectors(sectors_to_solution_range(1, (1, 6), 1000), (1, 6), 1000) == 1 -); -const_assert!( - solution_range_to_sectors(sectors_to_solution_range(3, (1, 6), 1000), (1, 6), 1000) == 3 -); -const_assert!( - solution_range_to_sectors(sectors_to_solution_range(5, (1, 6), 1000), (1, 6), 1000) == 5 -); +const_assert!(solution_range_to_pieces(pieces_to_solution_range(1, (1, 6)), (1, 6)) == 1); +const_assert!(solution_range_to_pieces(pieces_to_solution_range(3, (1, 6)), (1, 6)) == 3); +const_assert!(solution_range_to_pieces(pieces_to_solution_range(5, (1, 6)), (1, 6)) == 5); /// BlockWeight type for fork choice rules. /// /// The closer solution's tag is to the target, the heavier it is. pub type BlockWeight = u128; -/// Length of public key in bytes. -pub const PUBLIC_KEY_LENGTH: usize = 32; - -/// Length of signature in bytes -pub const REWARD_SIGNATURE_LENGTH: usize = 64; - -/// Proof of space seed. -#[derive(Debug, Copy, Clone, Eq, PartialEq, Deref)] -pub struct PosSeed([u8; Self::SIZE]); - -impl From<[u8; PosSeed::SIZE]> for PosSeed { - #[inline] - fn from(value: [u8; Self::SIZE]) -> Self { - Self(value) - } -} - -impl From for [u8; PosSeed::SIZE] { - #[inline] - fn from(value: PosSeed) -> Self { - value.0 - } -} - -impl PosSeed { - /// Size of proof of space seed in bytes. - pub const SIZE: usize = 32; -} - -/// Proof of space proof bytes. -#[derive( - Debug, Copy, Clone, Eq, PartialEq, Deref, DerefMut, Encode, Decode, TypeInfo, MaxEncodedLen, -)] -pub struct PosProof([u8; Self::SIZE]); - -impl From<[u8; PosProof::SIZE]> for PosProof { - #[inline] - fn from(value: [u8; Self::SIZE]) -> Self { - Self(value) - } -} - -impl From for [u8; PosProof::SIZE] { - #[inline] - fn from(value: PosProof) -> Self { - value.0 - } -} - -impl Default for PosProof { - #[inline] - fn default() -> Self { - Self([0; Self::SIZE]) - } -} - -impl PosProof { - /// Constant K used for proof of space - pub const K: u8 = 20; - /// Size of proof of space proof in bytes. - pub const SIZE: usize = Self::K as usize * 8; - - /// Proof hash. - pub fn hash(&self) -> Blake3Hash { - blake3_hash(&self.0) - } -} - -/// Proof of time key(input to the encryption). +/// A Ristretto Schnorr public key as bytes produced by `schnorrkel` crate. #[derive( Debug, Default, Copy, Clone, - Eq, PartialEq, - From, - AsRef, - AsMut, - Deref, - DerefMut, + Eq, + Ord, + PartialOrd, + Hash, Encode, Decode, TypeInfo, - MaxEncodedLen, + Deref, + From, )] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -pub struct PotKey(#[cfg_attr(feature = "serde", serde(with = "hex"))] [u8; Self::SIZE]); +pub struct PublicKey(#[cfg_attr(feature = "serde", serde(with = "hex"))] [u8; Self::SIZE]); -impl fmt::Display for PotKey { +impl fmt::Display for PublicKey { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "{}", hex::encode(self.0)) } } -impl FromStr for PotKey { - type Err = hex::FromHexError; - +impl From for [u8; PublicKey::SIZE] { #[inline] - fn from_str(s: &str) -> Result { - let mut key = Self::default(); - hex::decode_to_slice(s, key.as_mut())?; - - Ok(key) + fn from(value: PublicKey) -> Self { + value.0 } } -impl PotKey { - /// Size of proof of time key in bytes - pub const SIZE: usize = 16; -} - -/// Proof of time seed -#[derive( - Debug, - Default, - Copy, - Clone, - Eq, - PartialEq, - Hash, - From, - AsRef, - AsMut, - Deref, - DerefMut, - Encode, - Decode, - TypeInfo, - MaxEncodedLen, -)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -pub struct PotSeed(#[cfg_attr(feature = "serde", serde(with = "hex"))] [u8; Self::SIZE]); - -impl fmt::Display for PotSeed { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{}", hex::encode(self.0)) +impl AsRef<[u8]> for PublicKey { + #[inline] + fn as_ref(&self) -> &[u8] { + &self.0 } } -impl PotSeed { - /// Size of proof of time seed in bytes - pub const SIZE: usize = 16; - - /// Derive initial PoT seed from genesis block hash - #[inline] - pub fn from_genesis(genesis_block_hash: &[u8], external_entropy: &[u8]) -> Self { - let hash = blake3_hash_list(&[genesis_block_hash, external_entropy]); - let mut seed = Self::default(); - seed.copy_from_slice(&hash[..Self::SIZE]); - seed - } +impl PublicKey { + /// Public key size in bytes + pub const SIZE: usize = 32; - /// Derive key from proof of time seed - #[inline] - pub fn key(&self) -> PotKey { - let mut key = PotKey::default(); - key.copy_from_slice(&blake3_hash(&self.0)[..Self::SIZE]); - key + /// Public key hash. + pub fn hash(&self) -> Blake3Hash { + blake3_hash(&self.0) } } -/// Proof of time output, can be intermediate checkpoint or final slot output +/// A Ristretto Schnorr signature as bytes produced by `schnorrkel` crate. #[derive( - Debug, - Default, - Copy, - Clone, - Eq, - PartialEq, - Hash, - From, - AsRef, - AsMut, - Deref, - DerefMut, - Encode, - Decode, - TypeInfo, - MaxEncodedLen, + Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo, Deref, From, )] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -pub struct PotOutput(#[cfg_attr(feature = "serde", serde(with = "hex"))] [u8; Self::SIZE]); - -impl fmt::Display for PotOutput { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{}", hex::encode(self.0)) - } -} - -impl PotOutput { - /// Size of proof of time proof in bytes - pub const SIZE: usize = 16; +pub struct RewardSignature(#[cfg_attr(feature = "serde", serde(with = "hex"))] [u8; Self::SIZE]); - /// Derives the global randomness from the output +impl From for [u8; RewardSignature::SIZE] { #[inline] - pub fn derive_global_randomness(&self) -> Randomness { - Randomness::from(blake3_hash(&self.0)) + fn from(value: RewardSignature) -> Self { + value.0 } +} - /// Derive seed from proof of time in case entropy injection is not needed +impl AsRef<[u8]> for RewardSignature { #[inline] - pub fn seed(&self) -> PotSeed { - PotSeed(self.0) + fn as_ref(&self) -> &[u8] { + &self.0 } +} - /// Derive seed from proof of time with entropy injection - #[inline] - pub fn seed_with_entropy(&self, entropy: &Blake3Hash) -> PotSeed { - let hash = blake3_hash_list(&[entropy, &self.0]); - let mut seed = PotSeed::default(); - seed.copy_from_slice(&hash[..Self::SIZE]); - seed - } +impl RewardSignature { + /// Reward signature size in bytes + pub const SIZE: usize = 64; } -/// Proof of time checkpoints, result of proving +/// Witness for chunk contained within a record. #[derive( Debug, - Default, Copy, Clone, Eq, @@ -442,235 +339,84 @@ impl PotOutput { Hash, Deref, DerefMut, + From, + Into, Encode, Decode, TypeInfo, MaxEncodedLen, )] -pub struct PotCheckpoints([PotOutput; Self::NUM_CHECKPOINTS.get() as usize]); - -impl PotCheckpoints { - /// Number of PoT checkpoints produced (used to optimize verification) - pub const NUM_CHECKPOINTS: NonZeroU8 = NonZeroU8::new(8).expect("Not zero; qed"); +#[repr(transparent)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct ChunkWitness( + #[cfg_attr(feature = "serde", serde(with = "hex"))] [u8; ChunkWitness::SIZE], +); - /// Get proof of time output out of checkpoints (last checkpoint) +impl Default for ChunkWitness { #[inline] - pub fn output(&self) -> PotOutput { - self.0[Self::NUM_CHECKPOINTS.get() as usize - 1] + fn default() -> Self { + Self([0; Self::SIZE]) } } -/// A Ristretto Schnorr public key as bytes produced by `schnorrkel` crate. -#[derive( - Debug, - Default, - Copy, - Clone, - PartialEq, - Eq, - Ord, - PartialOrd, - Hash, - Encode, - Decode, - TypeInfo, - Deref, - From, - Into, -)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -pub struct PublicKey(#[cfg_attr(feature = "serde", serde(with = "hex"))] [u8; PUBLIC_KEY_LENGTH]); +impl TryFrom<&[u8]> for ChunkWitness { + type Error = TryFromSliceError; -impl fmt::Display for PublicKey { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{}", hex::encode(self.0)) + #[inline] + fn try_from(slice: &[u8]) -> Result { + <[u8; Self::SIZE]>::try_from(slice).map(Self) } } -impl AsRef<[u8]> for PublicKey { +impl AsRef<[u8]> for ChunkWitness { #[inline] fn as_ref(&self) -> &[u8] { &self.0 } } -impl PublicKey { - /// Public key hash. - pub fn hash(&self) -> Blake3Hash { - blake3_hash(&self.0) - } -} - -/// A Ristretto Schnorr signature as bytes produced by `schnorrkel` crate. -#[derive( - Debug, - Copy, - Clone, - PartialEq, - Eq, - Ord, - PartialOrd, - Hash, - Encode, - Decode, - TypeInfo, - Deref, - From, - Into, -)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -pub struct RewardSignature( - #[cfg_attr(feature = "serde", serde(with = "serde_arrays"))] [u8; REWARD_SIGNATURE_LENGTH], -); - -impl AsRef<[u8]> for RewardSignature { +impl AsMut<[u8]> for ChunkWitness { #[inline] - fn as_ref(&self) -> &[u8] { - &self.0 + fn as_mut(&mut self) -> &mut [u8] { + &mut self.0 } } -/// Progress of an archived block. -#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] -pub enum ArchivedBlockProgress { - /// The block has been fully archived. - Complete, - - /// Number of partially archived bytes of a block. - Partial(u32), +impl ChunkWitness { + /// Size of chunk witness in bytes. + pub const SIZE: usize = 48; } -impl Default for ArchivedBlockProgress { - /// We assume a block can always fit into the segment initially, but it can definitely possible - /// to be transitioned into the partial state after some overflow checkings. +impl From for ChunkWitness { #[inline] - fn default() -> Self { - Self::Complete - } -} - -impl ArchivedBlockProgress { - /// Return the number of partially archived bytes if the progress is not complete. - pub fn partial(&self) -> Option { - match self { - Self::Complete => None, - Self::Partial(number) => Some(*number), - } - } - - /// Sets new number of partially archived bytes. - pub fn set_partial(&mut self, new_partial: u32) { - *self = Self::Partial(new_partial); + fn from(witness: Witness) -> Self { + Self(witness.to_bytes()) } } -/// Last archived block -#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] -pub struct LastArchivedBlock { - /// Block number - pub number: BlockNumber, - /// Progress of an archived block. - pub archived_progress: ArchivedBlockProgress, -} +impl TryFrom<&ChunkWitness> for Witness { + type Error = String; -impl LastArchivedBlock { - /// Returns the number of partially archived bytes for a block. - pub fn partial_archived(&self) -> Option { - self.archived_progress.partial() - } - - /// Sets new number of partially archived bytes. - pub fn set_partial_archived(&mut self, new_partial: BlockNumber) { - self.archived_progress.set_partial(new_partial); - } - - /// Sets the archived state of this block to [`ArchivedBlockProgress::Complete`]. - pub fn set_complete(&mut self) { - self.archived_progress = ArchivedBlockProgress::Complete; + #[inline] + fn try_from(witness: &ChunkWitness) -> Result { + Witness::try_from(&witness.0) } } -/// Segment header for a specific segment. -/// -/// Each segment will have corresponding [`SegmentHeader`] included as the first item in the next -/// segment. Each `SegmentHeader` includes hash of the previous one and all together form a chain of -/// segment headers that is used for quick and efficient verification that some [`Piece`] -/// corresponds to the actual archival history of the blockchain. -#[derive(Debug, Copy, Clone, PartialEq, Eq, Encode, Decode, TypeInfo, Hash)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] -pub enum SegmentHeader { - /// V0 of the segment header data structure - #[codec(index = 0)] - #[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] - V0 { - /// Segment index - segment_index: SegmentIndex, - /// Root of commitments of all records in a segment. - segment_commitment: SegmentCommitment, - /// Hash of the segment header of the previous segment - prev_segment_header_hash: Blake3Hash, - /// Last archived block - last_archived_block: LastArchivedBlock, - }, -} - -impl SegmentHeader { - /// Hash of the whole segment header - pub fn hash(&self) -> Blake3Hash { - blake3_hash(&self.encode()) - } +impl TryFrom for Witness { + type Error = String; - /// Segment index - pub fn segment_index(&self) -> SegmentIndex { - match self { - Self::V0 { segment_index, .. } => *segment_index, - } - } - - /// Segment commitment of the records in a segment. - pub fn segment_commitment(&self) -> SegmentCommitment { - match self { - Self::V0 { - segment_commitment, .. - } => *segment_commitment, - } - } - - /// Hash of the segment header of the previous segment - pub fn prev_segment_header_hash(&self) -> Blake3Hash { - match self { - Self::V0 { - prev_segment_header_hash, - .. - } => *prev_segment_header_hash, - } - } - - /// Last archived block - pub fn last_archived_block(&self) -> LastArchivedBlock { - match self { - Self::V0 { - last_archived_block, - .. - } => *last_archived_block, - } + #[inline] + fn try_from(witness: ChunkWitness) -> Result { + Witness::try_from(witness.0) } } -/// Sector index in consensus -pub type SectorIndex = u16; - -// TODO: Versioned solution enum /// Farmer solution for slot challenge. #[derive(Clone, Debug, Eq, PartialEq, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] #[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] -pub struct Solution { +pub struct Solution { /// Public key of the farmer that created the solution pub public_key: PublicKey, /// Address for receiving block reward @@ -693,12 +439,10 @@ pub struct Solution { pub proof_of_space: PosProof, } -impl Solution { +impl Solution { /// Transform solution with one reward address type into solution with another compatible /// reward address type. - pub fn into_reward_address_format( - self, - ) -> Solution + pub fn into_reward_address_format(self) -> Solution where RewardAddressA: Into, T: Into, @@ -730,7 +474,7 @@ impl Solution { } } -impl Solution { +impl Solution { /// Dummy solution for the genesis block pub fn genesis_solution(public_key: PublicKey, reward_address: RewardAddress) -> Self { Self { @@ -811,9 +555,7 @@ impl U256 { /// Convert to big endian bytes pub fn to_be_bytes(self) -> [u8; 32] { - let mut arr = [0u8; 32]; - self.0.to_big_endian(&mut arr); - arr + self.0.to_big_endian() } /// Create from little endian bytes @@ -823,9 +565,7 @@ impl U256 { /// Convert to little endian bytes pub fn to_le_bytes(self) -> [u8; 32] { - let mut arr = [0u8; 32]; - self.0.to_little_endian(&mut arr); - arr + self.0.to_little_endian() } /// Adds two numbers, checking for overflow. If overflow happens, `None` is returned. @@ -983,218 +723,3 @@ impl Default for U256 { Self::zero() } } - -/// Challenge used for a particular sector for particular slot -#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Deref)] -pub struct SectorSlotChallenge(Blake3Hash); - -impl SectorSlotChallenge { - /// Index of s-bucket within sector to be audited - #[inline] - pub fn s_bucket_audit_index(&self) -> SBucket { - // As long as number of s-buckets is 2^16, we can pick first two bytes instead of actually - // calculating `U256::from_le_bytes(self.0) % Record::NUM_S_BUCKETS)` - const_assert_eq!(Record::NUM_S_BUCKETS, 1 << u16::BITS as usize); - SBucket::from(u16::from_le_bytes([self.0[0], self.0[1]])) - } -} - -/// Data structure representing sector ID in farmer's plot -#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -pub struct SectorId(#[cfg_attr(feature = "serde", serde(with = "hex"))] Blake3Hash); - -impl AsRef<[u8]> for SectorId { - #[inline] - fn as_ref(&self) -> &[u8] { - &self.0 - } -} - -impl SectorId { - /// Create new sector ID by deriving it from public key and sector index - pub fn new(public_key_hash: Blake3Hash, sector_index: SectorIndex) -> Self { - Self(blake3_hash_with_key( - &public_key_hash, - §or_index.to_le_bytes(), - )) - } - - /// Derive piece index that should be stored in sector at `piece_offset` for specified size of - /// blockchain history - pub fn derive_piece_index( - &self, - piece_offset: PieceOffset, - history_size: HistorySize, - max_pieces_in_sector: u16, - recent_segments: HistorySize, - recent_history_fraction: (HistorySize, HistorySize), - ) -> PieceIndex { - let recent_segments_in_pieces = recent_segments.in_pieces().get(); - // Recent history must be at most `recent_history_fraction` of all history to use separate - // policy for recent pieces - let min_history_size_in_pieces = recent_segments_in_pieces - * recent_history_fraction.1.in_pieces().get() - / recent_history_fraction.0.in_pieces().get(); - let input_hash = { - let piece_offset_bytes = piece_offset.to_bytes(); - let mut key = [0; 32]; - key[..piece_offset_bytes.len()].copy_from_slice(&piece_offset_bytes); - U256::from_le_bytes(blake3_hash_with_key(&key, &self.0)) - }; - let history_size_in_pieces = history_size.in_pieces().get(); - let num_interleaved_pieces = 1.max( - u64::from(max_pieces_in_sector) * recent_history_fraction.0.in_pieces().get() - / recent_history_fraction.1.in_pieces().get() - * 2, - ); - - let piece_index = if history_size_in_pieces > min_history_size_in_pieces - && u64::from(piece_offset) < num_interleaved_pieces - && u16::from(piece_offset) % 2 == 1 - { - // For odd piece offsets at the beginning of the sector pick pieces at random from - // recent history only - input_hash % U256::from(recent_segments_in_pieces) - + U256::from(history_size_in_pieces - recent_segments_in_pieces) - } else { - input_hash % U256::from(history_size_in_pieces) - }; - - PieceIndex::from(u64::try_from(piece_index).expect( - "Remainder of division by PieceIndex is guaranteed to fit into PieceIndex; qed", - )) - } - - /// Derive sector slot challenge for this sector from provided global challenge - pub fn derive_sector_slot_challenge( - &self, - global_challenge: &Blake3Hash, - ) -> SectorSlotChallenge { - let sector_slot_challenge = Simd::from(self.0) ^ Simd::from(*global_challenge); - SectorSlotChallenge(sector_slot_challenge.to_array()) - } - - /// Derive evaluation seed - pub fn derive_evaluation_seed( - &self, - piece_offset: PieceOffset, - history_size: HistorySize, - ) -> PosSeed { - let evaluation_seed = blake3_hash_list(&[ - &self.0, - &piece_offset.to_bytes(), - &history_size.get().to_le_bytes(), - ]); - - PosSeed::from(evaluation_seed) - } - - /// Derive history size when sector created at `history_size` expires. - /// - /// Returns `None` on overflow. - pub fn derive_expiration_history_size( - &self, - history_size: HistorySize, - sector_expiration_check_segment_commitment: &SegmentCommitment, - min_sector_lifetime: HistorySize, - ) -> Option { - let sector_expiration_check_history_size = - history_size.sector_expiration_check(min_sector_lifetime)?; - - let input_hash = U256::from_le_bytes(blake3_hash_list(&[ - &self.0, - sector_expiration_check_segment_commitment.as_ref(), - ])); - - let last_possible_expiration = - min_sector_lifetime.checked_add(history_size.get().checked_mul(4u64)?)?; - let expires_in = input_hash - % U256::from( - last_possible_expiration - .get() - .checked_sub(sector_expiration_check_history_size.get())?, - ); - let expires_in = u64::try_from(expires_in).expect("Number modulo u64 fits into u64; qed"); - - let expiration_history_size = sector_expiration_check_history_size.get() + expires_in; - let expiration_history_size = NonZeroU64::try_from(expiration_history_size).expect( - "History size is not zero, so result is not zero even if expires immediately; qed", - ); - Some(HistorySize::from(expiration_history_size)) - } -} - -/// A Vec<> that enforces the invariant that it cannot be empty. -#[derive(Debug, Clone, Encode, Decode, Eq, PartialEq)] -pub struct NonEmptyVec(Vec); - -/// Error codes for `NonEmptyVec`. -#[derive(Debug)] -pub enum NonEmptyVecErr { - /// Tried to create with an empty Vec - EmptyVec, -} - -#[allow(clippy::len_without_is_empty)] -impl NonEmptyVec { - /// Creates the Vec. - pub fn new(vec: Vec) -> Result { - if vec.is_empty() { - return Err(NonEmptyVecErr::EmptyVec); - } - - Ok(Self(vec)) - } - - /// Creates the Vec with the entry. - pub fn new_with_entry(entry: T) -> Self { - Self(vec![entry]) - } - - /// Returns the number of entries. - pub fn len(&self) -> usize { - self.0.len() - } - - /// Returns the slice of the entries. - pub fn as_slice(&self) -> &[T] { - self.0.as_slice() - } - - /// Returns an iterator for the entries. - pub fn iter(&self) -> Box + '_> { - Box::new(self.0.iter()) - } - - /// Returns a mutable iterator for the entries. - pub fn iter_mut(&mut self) -> Box + '_> { - Box::new(self.0.iter_mut()) - } - - /// Returns the first entry. - pub fn first(&self) -> T { - self.0 - .first() - .expect("NonEmptyVec::first(): collection cannot be empty") - .clone() - } - - /// Returns the last entry. - pub fn last(&self) -> T { - self.0 - .last() - .expect("NonEmptyVec::last(): collection cannot be empty") - .clone() - } - - /// Adds an entry to the end. - pub fn push(&mut self, entry: T) { - self.0.push(entry); - } - - /// Returns the entries in the collection. - pub fn to_vec(self) -> Vec { - self.0 - } -} diff --git a/crates/subspace-core-primitives/src/objects.rs b/crates/subspace-core-primitives/src/objects.rs index 39bd62caf4..df98fa6857 100644 --- a/crates/subspace-core-primitives/src/objects.rs +++ b/crates/subspace-core-primitives/src/objects.rs @@ -23,7 +23,8 @@ #[cfg(not(feature = "std"))] extern crate alloc; -use crate::{Blake3Hash, Blake3HashHex, PieceIndex}; +use crate::pieces::PieceIndex; +use crate::Blake3Hash; #[cfg(not(feature = "std"))] use alloc::vec::Vec; use core::default::Default; @@ -36,95 +37,116 @@ use serde::{Deserialize, Serialize}; #[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] #[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] -pub enum BlockObject { +pub struct BlockObject { + /// Object hash + #[cfg_attr(feature = "serde", serde(with = "hex"))] + pub hash: Blake3Hash, + /// Offset of object in the encoded block. + pub offset: u32, +} + +/// Mapping of objects stored inside of the block +#[derive(Debug, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] +#[cfg_attr(feature = "serde", serde(rename_all_fields = "camelCase"))] +pub enum BlockObjectMapping { /// V0 of object mapping data structure - // TODO: move the enum and accessor method to BlockObjectMapping #[codec(index = 0)] - #[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] V0 { - /// Object hash - #[cfg_attr(feature = "serde", serde(with = "hex"))] - hash: Blake3Hash, - /// Offset of object in the encoded block. - offset: u32, + /// Objects stored inside of the block + objects: Vec, }, } -impl BlockObject { - /// Object hash - pub fn hash(&self) -> Blake3Hash { - match self { - Self::V0 { hash, .. } => *hash, +impl Default for BlockObjectMapping { + fn default() -> Self { + Self::V0 { + objects: Vec::new(), } } +} - /// Offset of object in the encoded block. - pub fn offset(&self) -> u32 { +impl BlockObjectMapping { + /// Returns a newly created BlockObjectMapping from a list of object mappings + #[inline] + pub fn from_objects(objects: impl IntoIterator) -> Self { + Self::V0 { + objects: objects.into_iter().collect(), + } + } + + /// Returns the object mappings + pub fn objects(&self) -> &[BlockObject] { match self { - Self::V0 { offset, .. } => *offset, + Self::V0 { objects, .. } => objects, } } - /// Sets new offset. - pub fn set_offset(&mut self, new_offset: u32) { + /// Returns the object mappings as a mutable slice + pub fn objects_mut(&mut self) -> &mut Vec { match self { - Self::V0 { offset, .. } => { - *offset = new_offset; - } + Self::V0 { objects, .. } => objects, } } } -/// Mapping of objects stored inside of the block -#[derive(Debug, Default, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] +/// Object stored inside of the piece +#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] #[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] -pub struct BlockObjectMapping { - /// Objects stored inside of the block - pub objects: Vec, +pub struct PieceObject { + /// Object hash + #[cfg_attr(feature = "serde", serde(with = "hex"))] + pub hash: Blake3Hash, + /// Raw record offset of the object in that piece, for use with `Record::to_raw_record_bytes` + pub offset: u32, } -/// Object stored inside of the piece -#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] +/// Mapping of objects stored inside of the piece +#[derive(Debug, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] #[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] -pub enum PieceObject { +#[cfg_attr(feature = "serde", serde(rename_all_fields = "camelCase"))] +pub enum PieceObjectMapping { /// V0 of object mapping data structure - // TODO: move the enum and accessor method to PieceObjectMapping #[codec(index = 0)] - #[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] V0 { - /// Object hash - #[cfg_attr(feature = "serde", serde(with = "hex"))] - hash: Blake3Hash, - /// Raw record offset of the object in that piece, for use with `Record::to_raw_record_bytes` - offset: u32, + /// Objects stored inside of the piece + objects: Vec, }, } -impl PieceObject { - /// Object hash - pub fn hash(&self) -> Blake3Hash { - match self { - Self::V0 { hash, .. } => *hash, +impl Default for PieceObjectMapping { + fn default() -> Self { + Self::V0 { + objects: Vec::new(), } } +} - /// Raw record offset of the object in that piece, for use with `Record::to_raw_record_bytes` - pub fn offset(&self) -> u32 { +impl PieceObjectMapping { + /// Returns a newly created PieceObjectMapping from a list of object mappings + #[inline] + pub fn from_objects(objects: impl IntoIterator) -> Self { + Self::V0 { + objects: objects.into_iter().collect(), + } + } + + /// Returns the object mappings as a read-only slice + pub fn objects(&self) -> &[PieceObject] { match self { - Self::V0 { offset, .. } => *offset, + Self::V0 { objects, .. } => objects, } } -} -/// Mapping of objects stored inside of the piece -#[derive(Debug, Default, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] -pub struct PieceObjectMapping { - /// Objects stored inside of the piece - pub objects: Vec, + /// Returns the object mappings as a mutable slice + pub fn objects_mut(&mut self) -> &mut Vec { + match self { + Self::V0 { objects, .. } => objects, + } + } } /// Object stored in the history of the blockchain @@ -147,7 +169,7 @@ pub struct GlobalObject { impl From for GlobalObject { fn from(object: CompactGlobalObject) -> Self { Self { - hash: *object.0, + hash: object.0, piece_index: object.1, offset: object.2, } @@ -155,8 +177,8 @@ impl From for GlobalObject { } impl From for CompactGlobalObject { - fn from(object: GlobalObject) -> CompactGlobalObject { - Self(object.hash.into(), object.piece_index, object.offset) + fn from(object: GlobalObject) -> Self { + Self(object.hash, object.piece_index, object.offset) } } @@ -164,9 +186,9 @@ impl GlobalObject { /// Returns a newly created GlobalObject from a piece index and object. pub fn new(piece_index: PieceIndex, piece_object: &PieceObject) -> Self { Self { - hash: piece_object.hash(), + hash: piece_object.hash, piece_index, - offset: piece_object.offset(), + offset: piece_object.offset, } } } @@ -174,7 +196,7 @@ impl GlobalObject { /// Space-saving serialization of an object stored in the history of the blockchain #[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -pub struct CompactGlobalObject(Blake3HashHex, PieceIndex, u32); +pub struct CompactGlobalObject(Blake3Hash, PieceIndex, u32); /// Mapping of objects stored in the history of the blockchain #[derive(Debug, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] @@ -213,4 +235,11 @@ impl GlobalObjectMapping { Self::V0 { objects, .. } => objects, } } + + /// Returns the object mappings as a mutable slice + pub fn objects_mut(&mut self) -> &mut Vec { + match self { + Self::V0 { objects, .. } => objects, + } + } } diff --git a/crates/subspace-core-primitives/src/pieces.rs b/crates/subspace-core-primitives/src/pieces.rs index d6739c9ead..be84f10c3e 100644 --- a/crates/subspace-core-primitives/src/pieces.rs +++ b/crates/subspace-core-primitives/src/pieces.rs @@ -1,14 +1,13 @@ +//! Pieces-related data structures. + #[cfg(feature = "serde")] mod serde; -#[cfg(test)] -mod tests; extern crate alloc; use crate::crypto::kzg::{Commitment, Witness}; use crate::crypto::Scalar; -use crate::segments::{ArchivedHistorySegment, SegmentIndex}; -use crate::RecordedHistorySegment; +use crate::segments::{ArchivedHistorySegment, RecordedHistorySegment, SegmentIndex}; #[cfg(feature = "serde")] use ::serde::{Deserialize, Serialize}; #[cfg(not(feature = "std"))] @@ -24,7 +23,6 @@ use bytes::{Bytes, BytesMut}; use core::array::TryFromSliceError; use core::hash::{Hash, Hasher}; use core::iter::Step; -use core::num::TryFromIntError; use core::{mem, slice}; use derive_more::{ Add, AddAssign, AsMut, AsRef, Deref, DerefMut, Display, Div, DivAssign, From, Into, Mul, @@ -36,96 +34,6 @@ use rayon::prelude::*; use scale_info::build::Fields; use scale_info::{Path, Type, TypeInfo}; -/// S-bucket used in consensus -#[derive( - Debug, - Display, - Default, - Copy, - Clone, - Ord, - PartialOrd, - Eq, - PartialEq, - Hash, - Encode, - Decode, - Add, - AddAssign, - Sub, - SubAssign, - Mul, - MulAssign, - Div, - DivAssign, - TypeInfo, - MaxEncodedLen, -)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -#[repr(transparent)] -pub struct SBucket(u16); - -impl Step for SBucket { - #[inline] - fn steps_between(start: &Self, end: &Self) -> Option { - u16::steps_between(&start.0, &end.0) - } - - #[inline] - fn forward_checked(start: Self, count: usize) -> Option { - u16::forward_checked(start.0, count).map(Self) - } - - #[inline] - fn backward_checked(start: Self, count: usize) -> Option { - u16::backward_checked(start.0, count).map(Self) - } -} - -impl TryFrom for SBucket { - type Error = TryFromIntError; - - #[inline] - fn try_from(value: usize) -> Result { - Ok(Self(u16::try_from(value)?)) - } -} - -impl From for SBucket { - #[inline] - fn from(original: u16) -> Self { - Self(original) - } -} - -impl From for u16 { - #[inline] - fn from(original: SBucket) -> Self { - original.0 - } -} - -impl From for u32 { - #[inline] - fn from(original: SBucket) -> Self { - u32::from(original.0) - } -} - -impl From for usize { - #[inline] - fn from(original: SBucket) -> Self { - usize::from(original.0) - } -} - -impl SBucket { - /// S-bucket 0. - pub const ZERO: SBucket = SBucket(0); - /// Max s-bucket index - pub const MAX: SBucket = SBucket((Record::NUM_S_BUCKETS - 1) as u16); -} - /// Piece index in consensus #[derive( Debug, @@ -218,6 +126,27 @@ impl PieceIndex { // Position is statically guaranteed to fit into u32 (self.0 % ArchivedHistorySegment::NUM_PIECES as u64) as u32 } + + /// Is this piece index a source piece? + #[inline] + pub const fn is_source(&self) -> bool { + // Source pieces are interleaved with parity pieces, source first + self.0 % Self::source_ratio() == 0 + } + + /// Returns the next source piece index + #[inline] + pub const fn next_source_index(&self) -> PieceIndex { + PieceIndex(self.0.next_multiple_of(Self::source_ratio())) + } + + /// The ratio of source pieces to all pieces + #[inline] + const fn source_ratio() -> u64 { + // Assumes the result is an integer + (RecordedHistorySegment::ERASURE_CODING_RATE.1 + / RecordedHistorySegment::ERASURE_CODING_RATE.0) as u64 + } } /// Piece offset in sector @@ -651,13 +580,14 @@ impl Record { unsafe { mem::transmute(value) } } - /// Convert from a record to its raw bytes. Used for object reconstruction. - pub fn to_raw_record_bytes(&self) -> impl Iterator + '_ { + /// Convert from a record to its raw bytes, assumes dealing with source record that only stores + /// safe bytes in its chunks. + #[inline] + pub fn to_raw_record_chunks(&self) -> impl Iterator + '_ { // We have zero byte padding from [`Scalar::SAFE_BYTES`] to [`Scalar::FULL_BYTES`] that we need // to skip self.iter() - .flat_map(|bytes| &bytes[..Scalar::SAFE_BYTES]) - .copied() + .map(|bytes| bytes[1..].try_into().expect("Correct length; qed")) } } @@ -899,89 +829,6 @@ impl TryFrom for Witness { } } -/// Witness for chunk contained within a record. -#[derive( - Debug, - Copy, - Clone, - Eq, - PartialEq, - Hash, - Deref, - DerefMut, - From, - Into, - Encode, - Decode, - TypeInfo, - MaxEncodedLen, -)] -#[repr(transparent)] -#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] -pub struct ChunkWitness( - #[cfg_attr(feature = "serde", serde(with = "hex"))] [u8; ChunkWitness::SIZE], -); - -impl Default for ChunkWitness { - #[inline] - fn default() -> Self { - Self([0; Self::SIZE]) - } -} - -impl TryFrom<&[u8]> for ChunkWitness { - type Error = TryFromSliceError; - - #[inline] - fn try_from(slice: &[u8]) -> Result { - <[u8; Self::SIZE]>::try_from(slice).map(Self) - } -} - -impl AsRef<[u8]> for ChunkWitness { - #[inline] - fn as_ref(&self) -> &[u8] { - &self.0 - } -} - -impl AsMut<[u8]> for ChunkWitness { - #[inline] - fn as_mut(&mut self) -> &mut [u8] { - &mut self.0 - } -} - -impl ChunkWitness { - /// Size of chunk witness in bytes. - pub const SIZE: usize = 48; -} - -impl From for ChunkWitness { - #[inline] - fn from(witness: Witness) -> Self { - Self(witness.to_bytes()) - } -} - -impl TryFrom<&ChunkWitness> for Witness { - type Error = String; - - #[inline] - fn try_from(witness: &ChunkWitness) -> Result { - Witness::try_from(&witness.0) - } -} - -impl TryFrom for Witness { - type Error = String; - - #[inline] - fn try_from(witness: ChunkWitness) -> Result { - Witness::try_from(witness.0) - } -} - #[derive(Debug)] enum CowBytes { Shared(Bytes), @@ -1034,9 +881,7 @@ impl AsMut<[u8]> for CowBytes { bytes.as_mut() } - CowBytes::Owned(bytes) => { - return bytes.as_mut(); - } + CowBytes::Owned(bytes) => bytes.as_mut(), } } } diff --git a/crates/subspace-core-primitives/src/pos.rs b/crates/subspace-core-primitives/src/pos.rs new file mode 100644 index 0000000000..b07e1eddf1 --- /dev/null +++ b/crates/subspace-core-primitives/src/pos.rs @@ -0,0 +1,72 @@ +//! Proof of space-related data structures. + +#[cfg(feature = "serde")] +mod serde; + +use crate::crypto::blake3_hash; +use crate::Blake3Hash; +use derive_more::{Deref, DerefMut, From}; +use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; +use scale_info::TypeInfo; + +/// Proof of space seed. +#[derive(Debug, Copy, Clone, Eq, PartialEq, Deref)] +pub struct PosSeed([u8; Self::SIZE]); + +impl From<[u8; PosSeed::SIZE]> for PosSeed { + #[inline] + fn from(value: [u8; Self::SIZE]) -> Self { + Self(value) + } +} + +impl From for [u8; PosSeed::SIZE] { + #[inline] + fn from(value: PosSeed) -> Self { + value.0 + } +} + +impl PosSeed { + /// Size of proof of space seed in bytes. + pub const SIZE: usize = 32; +} + +/// Proof of space proof bytes. +#[derive( + Debug, Copy, Clone, Eq, PartialEq, Deref, DerefMut, Encode, Decode, TypeInfo, MaxEncodedLen, +)] +pub struct PosProof([u8; Self::SIZE]); + +impl From<[u8; PosProof::SIZE]> for PosProof { + #[inline] + fn from(value: [u8; Self::SIZE]) -> Self { + Self(value) + } +} + +impl From for [u8; PosProof::SIZE] { + #[inline] + fn from(value: PosProof) -> Self { + value.0 + } +} + +impl Default for PosProof { + #[inline] + fn default() -> Self { + Self([0; Self::SIZE]) + } +} + +impl PosProof { + /// Constant K used for proof of space + pub const K: u8 = 20; + /// Size of proof of space proof in bytes. + pub const SIZE: usize = Self::K as usize * 8; + + /// Proof hash. + pub fn hash(&self) -> Blake3Hash { + blake3_hash(&self.0) + } +} diff --git a/crates/subspace-core-primitives/src/serde.rs b/crates/subspace-core-primitives/src/pos/serde.rs similarity index 99% rename from crates/subspace-core-primitives/src/serde.rs rename to crates/subspace-core-primitives/src/pos/serde.rs index 78f1c59d88..01b7a8db61 100644 --- a/crates/subspace-core-primitives/src/serde.rs +++ b/crates/subspace-core-primitives/src/pos/serde.rs @@ -1,4 +1,4 @@ -use crate::PosProof; +use crate::pos::PosProof; use hex::{decode_to_slice, FromHex, FromHexError}; use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; diff --git a/crates/subspace-core-primitives/src/pot.rs b/crates/subspace-core-primitives/src/pot.rs new file mode 100644 index 0000000000..020789559b --- /dev/null +++ b/crates/subspace-core-primitives/src/pot.rs @@ -0,0 +1,189 @@ +//! Proof of time-related data structures. + +use crate::crypto::{blake3_hash, blake3_hash_list}; +use crate::{Blake3Hash, Randomness}; +#[cfg(feature = "serde")] +use ::serde::{Deserialize, Serialize}; +use core::fmt; +use core::num::NonZeroU8; +use core::str::FromStr; +use derive_more::{AsMut, AsRef, Deref, DerefMut, From}; +use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; +use scale_info::TypeInfo; + +/// Proof of time key(input to the encryption). +#[derive( + Debug, + Default, + Copy, + Clone, + Eq, + PartialEq, + From, + AsRef, + AsMut, + Deref, + DerefMut, + Encode, + Decode, + TypeInfo, + MaxEncodedLen, +)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct PotKey(#[cfg_attr(feature = "serde", serde(with = "hex"))] [u8; Self::SIZE]); + +impl fmt::Display for PotKey { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", hex::encode(self.0)) + } +} + +impl FromStr for PotKey { + type Err = hex::FromHexError; + + #[inline] + fn from_str(s: &str) -> Result { + let mut key = Self::default(); + hex::decode_to_slice(s, key.as_mut())?; + + Ok(key) + } +} + +impl PotKey { + /// Size of proof of time key in bytes + pub const SIZE: usize = 16; +} + +/// Proof of time seed +#[derive( + Debug, + Default, + Copy, + Clone, + Eq, + PartialEq, + Hash, + From, + AsRef, + AsMut, + Deref, + DerefMut, + Encode, + Decode, + TypeInfo, + MaxEncodedLen, +)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct PotSeed(#[cfg_attr(feature = "serde", serde(with = "hex"))] [u8; Self::SIZE]); + +impl fmt::Display for PotSeed { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", hex::encode(self.0)) + } +} + +impl PotSeed { + /// Size of proof of time seed in bytes + pub const SIZE: usize = 16; + + /// Derive initial PoT seed from genesis block hash + #[inline] + pub fn from_genesis(genesis_block_hash: &[u8], external_entropy: &[u8]) -> Self { + let hash = blake3_hash_list(&[genesis_block_hash, external_entropy]); + let mut seed = Self::default(); + seed.copy_from_slice(&hash[..Self::SIZE]); + seed + } + + /// Derive key from proof of time seed + #[inline] + pub fn key(&self) -> PotKey { + let mut key = PotKey::default(); + key.copy_from_slice(&blake3_hash(&self.0)[..Self::SIZE]); + key + } +} + +/// Proof of time output, can be intermediate checkpoint or final slot output +#[derive( + Debug, + Default, + Copy, + Clone, + Eq, + PartialEq, + Hash, + From, + AsRef, + AsMut, + Deref, + DerefMut, + Encode, + Decode, + TypeInfo, + MaxEncodedLen, +)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct PotOutput(#[cfg_attr(feature = "serde", serde(with = "hex"))] [u8; Self::SIZE]); + +impl fmt::Display for PotOutput { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", hex::encode(self.0)) + } +} + +impl PotOutput { + /// Size of proof of time proof in bytes + pub const SIZE: usize = 16; + + /// Derives the global randomness from the output + #[inline] + pub fn derive_global_randomness(&self) -> Randomness { + Randomness::from(*blake3_hash(&self.0)) + } + + /// Derive seed from proof of time in case entropy injection is not needed + #[inline] + pub fn seed(&self) -> PotSeed { + PotSeed(self.0) + } + + /// Derive seed from proof of time with entropy injection + #[inline] + pub fn seed_with_entropy(&self, entropy: &Blake3Hash) -> PotSeed { + let hash = blake3_hash_list(&[entropy.as_ref(), &self.0]); + let mut seed = PotSeed::default(); + seed.copy_from_slice(&hash[..Self::SIZE]); + seed + } +} + +/// Proof of time checkpoints, result of proving +#[derive( + Debug, + Default, + Copy, + Clone, + Eq, + PartialEq, + Hash, + Deref, + DerefMut, + Encode, + Decode, + TypeInfo, + MaxEncodedLen, +)] +pub struct PotCheckpoints([PotOutput; Self::NUM_CHECKPOINTS.get() as usize]); + +impl PotCheckpoints { + /// Number of PoT checkpoints produced (used to optimize verification) + pub const NUM_CHECKPOINTS: NonZeroU8 = NonZeroU8::new(8).expect("Not zero; qed"); + + /// Get proof of time output out of checkpoints (last checkpoint) + #[inline] + pub fn output(&self) -> PotOutput { + self.0[Self::NUM_CHECKPOINTS.get() as usize - 1] + } +} diff --git a/crates/subspace-core-primitives/src/sectors.rs b/crates/subspace-core-primitives/src/sectors.rs new file mode 100644 index 0000000000..4bc36ce371 --- /dev/null +++ b/crates/subspace-core-primitives/src/sectors.rs @@ -0,0 +1,257 @@ +//! Sectors-related data structures. + +#[cfg(test)] +mod tests; + +use crate::crypto::{blake3_hash_list, blake3_hash_with_key}; +use crate::pieces::{PieceIndex, PieceOffset, Record}; +use crate::pos::PosSeed; +use crate::segments::{HistorySize, SegmentCommitment}; +use crate::{Blake3Hash, U256}; +#[cfg(feature = "serde")] +use ::serde::{Deserialize, Serialize}; +use core::hash::Hash; +use core::iter::Step; +use core::num::{NonZeroU64, TryFromIntError}; +use core::simd::Simd; +use derive_more::{ + Add, AddAssign, AsRef, Deref, Display, Div, DivAssign, From, Into, Mul, MulAssign, Sub, + SubAssign, +}; +use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; +use scale_info::TypeInfo; +use static_assertions::const_assert_eq; + +/// Sector index in consensus +pub type SectorIndex = u16; + +/// Challenge used for a particular sector for particular slot +#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Deref)] +pub struct SectorSlotChallenge(Blake3Hash); + +impl SectorSlotChallenge { + /// Index of s-bucket within sector to be audited + #[inline] + pub fn s_bucket_audit_index(&self) -> SBucket { + // As long as number of s-buckets is 2^16, we can pick first two bytes instead of actually + // calculating `U256::from_le_bytes(self.0) % Record::NUM_S_BUCKETS)` + const_assert_eq!(Record::NUM_S_BUCKETS, 1 << u16::BITS as usize); + SBucket::from(u16::from_le_bytes([self.0[0], self.0[1]])) + } +} + +/// Data structure representing sector ID in farmer's plot +#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +pub struct SectorId(#[cfg_attr(feature = "serde", serde(with = "hex"))] Blake3Hash); + +impl AsRef<[u8]> for SectorId { + #[inline] + fn as_ref(&self) -> &[u8] { + self.0.as_ref() + } +} + +impl SectorId { + /// Create new sector ID by deriving it from public key and sector index + pub fn new(public_key_hash: Blake3Hash, sector_index: SectorIndex) -> Self { + Self(blake3_hash_with_key( + &public_key_hash, + §or_index.to_le_bytes(), + )) + } + + /// Derive piece index that should be stored in sector at `piece_offset` for specified size of + /// blockchain history + pub fn derive_piece_index( + &self, + piece_offset: PieceOffset, + history_size: HistorySize, + max_pieces_in_sector: u16, + recent_segments: HistorySize, + recent_history_fraction: (HistorySize, HistorySize), + ) -> PieceIndex { + let recent_segments_in_pieces = recent_segments.in_pieces().get(); + // Recent history must be at most `recent_history_fraction` of all history to use separate + // policy for recent pieces + let min_history_size_in_pieces = recent_segments_in_pieces + * recent_history_fraction.1.in_pieces().get() + / recent_history_fraction.0.in_pieces().get(); + let input_hash = { + let piece_offset_bytes = piece_offset.to_bytes(); + let mut key = [0; 32]; + key[..piece_offset_bytes.len()].copy_from_slice(&piece_offset_bytes); + U256::from_le_bytes(*blake3_hash_with_key(&key, self.as_ref())) + }; + let history_size_in_pieces = history_size.in_pieces().get(); + let num_interleaved_pieces = 1.max( + u64::from(max_pieces_in_sector) * recent_history_fraction.0.in_pieces().get() + / recent_history_fraction.1.in_pieces().get() + * 2, + ); + + let piece_index = if history_size_in_pieces > min_history_size_in_pieces + && u64::from(piece_offset) < num_interleaved_pieces + && u16::from(piece_offset) % 2 == 1 + { + // For odd piece offsets at the beginning of the sector pick pieces at random from + // recent history only + input_hash % U256::from(recent_segments_in_pieces) + + U256::from(history_size_in_pieces - recent_segments_in_pieces) + } else { + input_hash % U256::from(history_size_in_pieces) + }; + + PieceIndex::from(u64::try_from(piece_index).expect( + "Remainder of division by PieceIndex is guaranteed to fit into PieceIndex; qed", + )) + } + + /// Derive sector slot challenge for this sector from provided global challenge + pub fn derive_sector_slot_challenge( + &self, + global_challenge: &Blake3Hash, + ) -> SectorSlotChallenge { + let sector_slot_challenge = Simd::from(*self.0) ^ Simd::from(**global_challenge); + SectorSlotChallenge(sector_slot_challenge.to_array().into()) + } + + /// Derive evaluation seed + pub fn derive_evaluation_seed( + &self, + piece_offset: PieceOffset, + history_size: HistorySize, + ) -> PosSeed { + let evaluation_seed = blake3_hash_list(&[ + self.as_ref(), + &piece_offset.to_bytes(), + &history_size.get().to_le_bytes(), + ]); + + PosSeed::from(*evaluation_seed) + } + + /// Derive history size when sector created at `history_size` expires. + /// + /// Returns `None` on overflow. + pub fn derive_expiration_history_size( + &self, + history_size: HistorySize, + sector_expiration_check_segment_commitment: &SegmentCommitment, + min_sector_lifetime: HistorySize, + ) -> Option { + let sector_expiration_check_history_size = + history_size.sector_expiration_check(min_sector_lifetime)?; + + let input_hash = U256::from_le_bytes(*blake3_hash_list(&[ + self.as_ref(), + sector_expiration_check_segment_commitment.as_ref(), + ])); + + let last_possible_expiration = + min_sector_lifetime.checked_add(history_size.get().checked_mul(4u64)?)?; + let expires_in = input_hash + % U256::from( + last_possible_expiration + .get() + .checked_sub(sector_expiration_check_history_size.get())?, + ); + let expires_in = u64::try_from(expires_in).expect("Number modulo u64 fits into u64; qed"); + + let expiration_history_size = sector_expiration_check_history_size.get() + expires_in; + let expiration_history_size = NonZeroU64::try_from(expiration_history_size).expect( + "History size is not zero, so result is not zero even if expires immediately; qed", + ); + Some(HistorySize::from(expiration_history_size)) + } +} + +/// S-bucket used in consensus +#[derive( + Debug, + Display, + Default, + Copy, + Clone, + Ord, + PartialOrd, + Eq, + PartialEq, + Hash, + Encode, + Decode, + Add, + AddAssign, + Sub, + SubAssign, + Mul, + MulAssign, + Div, + DivAssign, + TypeInfo, + MaxEncodedLen, +)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[repr(transparent)] +pub struct SBucket(u16); + +impl Step for SBucket { + #[inline] + fn steps_between(start: &Self, end: &Self) -> Option { + u16::steps_between(&start.0, &end.0) + } + + #[inline] + fn forward_checked(start: Self, count: usize) -> Option { + u16::forward_checked(start.0, count).map(Self) + } + + #[inline] + fn backward_checked(start: Self, count: usize) -> Option { + u16::backward_checked(start.0, count).map(Self) + } +} + +impl TryFrom for SBucket { + type Error = TryFromIntError; + + #[inline] + fn try_from(value: usize) -> Result { + Ok(Self(u16::try_from(value)?)) + } +} + +impl From for SBucket { + #[inline] + fn from(original: u16) -> Self { + Self(original) + } +} + +impl From for u16 { + #[inline] + fn from(original: SBucket) -> Self { + original.0 + } +} + +impl From for u32 { + #[inline] + fn from(original: SBucket) -> Self { + u32::from(original.0) + } +} + +impl From for usize { + #[inline] + fn from(original: SBucket) -> Self { + usize::from(original.0) + } +} + +impl SBucket { + /// S-bucket 0. + pub const ZERO: SBucket = SBucket(0); + /// Max s-bucket index + pub const MAX: SBucket = SBucket((Record::NUM_S_BUCKETS - 1) as u16); +} diff --git a/crates/subspace-core-primitives/src/pieces/tests.rs b/crates/subspace-core-primitives/src/sectors/tests.rs similarity index 89% rename from crates/subspace-core-primitives/src/pieces/tests.rs rename to crates/subspace-core-primitives/src/sectors/tests.rs index cfd178be3e..7d82319a7c 100644 --- a/crates/subspace-core-primitives/src/pieces/tests.rs +++ b/crates/subspace-core-primitives/src/sectors/tests.rs @@ -1,4 +1,4 @@ -use crate::pieces::SBucket; +use crate::sectors::SBucket; use crate::Record; // Statically validate that we can store all possible s-buckets in SBucket data structure diff --git a/crates/subspace-core-primitives/src/segments.rs b/crates/subspace-core-primitives/src/segments.rs index b6668f70c3..406ed31bb3 100644 --- a/crates/subspace-core-primitives/src/segments.rs +++ b/crates/subspace-core-primitives/src/segments.rs @@ -1,5 +1,9 @@ +//! Segments-related data structures. + +use crate::crypto::blake3_hash; use crate::crypto::kzg::Commitment; use crate::pieces::{FlatPieces, Piece, PieceIndex, RawRecord}; +use crate::{Blake3Hash, BlockNumber}; #[cfg(not(feature = "std"))] use alloc::boxed::Box; #[cfg(not(feature = "std"))] @@ -267,6 +271,138 @@ impl HistorySize { } } +/// Progress of an archived block. +#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] +pub enum ArchivedBlockProgress { + /// The block has been fully archived. + Complete, + + /// Number of partially archived bytes of a block. + Partial(u32), +} + +impl Default for ArchivedBlockProgress { + /// We assume a block can always fit into the segment initially, but it is definitely possible + /// to be transitioned into the partial state after some overflow checking. + #[inline] + fn default() -> Self { + Self::Complete + } +} + +impl ArchivedBlockProgress { + /// Return the number of partially archived bytes if the progress is not complete. + pub fn partial(&self) -> Option { + match self { + Self::Complete => None, + Self::Partial(number) => Some(*number), + } + } + + /// Sets new number of partially archived bytes. + pub fn set_partial(&mut self, new_partial: u32) { + *self = Self::Partial(new_partial); + } +} + +/// Last archived block +#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, TypeInfo)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] +pub struct LastArchivedBlock { + /// Block number + pub number: BlockNumber, + /// Progress of an archived block. + pub archived_progress: ArchivedBlockProgress, +} + +impl LastArchivedBlock { + /// Returns the number of partially archived bytes for a block. + pub fn partial_archived(&self) -> Option { + self.archived_progress.partial() + } + + /// Sets new number of partially archived bytes. + pub fn set_partial_archived(&mut self, new_partial: BlockNumber) { + self.archived_progress.set_partial(new_partial); + } + + /// Sets the archived state of this block to [`ArchivedBlockProgress::Complete`]. + pub fn set_complete(&mut self) { + self.archived_progress = ArchivedBlockProgress::Complete; + } +} + +/// Segment header for a specific segment. +/// +/// Each segment will have corresponding [`SegmentHeader`] included as the first item in the next +/// segment. Each `SegmentHeader` includes hash of the previous one and all together form a chain of +/// segment headers that is used for quick and efficient verification that some [`Piece`] +/// corresponds to the actual archival history of the blockchain. +#[derive(Debug, Copy, Clone, PartialEq, Eq, Encode, Decode, TypeInfo, Hash)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] +pub enum SegmentHeader { + /// V0 of the segment header data structure + #[codec(index = 0)] + #[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))] + V0 { + /// Segment index + segment_index: SegmentIndex, + /// Root of commitments of all records in a segment. + segment_commitment: SegmentCommitment, + /// Hash of the segment header of the previous segment + prev_segment_header_hash: Blake3Hash, + /// Last archived block + last_archived_block: LastArchivedBlock, + }, +} + +impl SegmentHeader { + /// Hash of the whole segment header + pub fn hash(&self) -> Blake3Hash { + blake3_hash(&self.encode()) + } + + /// Segment index + pub fn segment_index(&self) -> SegmentIndex { + match self { + Self::V0 { segment_index, .. } => *segment_index, + } + } + + /// Segment commitment of the records in a segment. + pub fn segment_commitment(&self) -> SegmentCommitment { + match self { + Self::V0 { + segment_commitment, .. + } => *segment_commitment, + } + } + + /// Hash of the segment header of the previous segment + pub fn prev_segment_header_hash(&self) -> Blake3Hash { + match self { + Self::V0 { + prev_segment_header_hash, + .. + } => *prev_segment_header_hash, + } + } + + /// Last archived block + pub fn last_archived_block(&self) -> LastArchivedBlock { + match self { + Self::V0 { + last_archived_block, + .. + } => *last_archived_block, + } + } +} + /// Recorded history segment before archiving is applied. /// /// NOTE: This is a stack-allocated data structure and can cause stack overflow! diff --git a/crates/subspace-core-primitives/src/tests.rs b/crates/subspace-core-primitives/src/tests.rs index a5acd369d7..4f27b0c378 100644 --- a/crates/subspace-core-primitives/src/tests.rs +++ b/crates/subspace-core-primitives/src/tests.rs @@ -30,7 +30,7 @@ fn bytes_scalars_conversion() { .chunks_exact_mut(Scalar::SAFE_BYTES) .zip(scalars.iter()) .for_each(|(bytes, scalar)| { - bytes.copy_from_slice(&scalar.to_bytes()[..Scalar::SAFE_BYTES]); + bytes.copy_from_slice(&scalar.to_bytes()[1..]); }); assert_eq!(bytes, decoded_bytes); @@ -42,7 +42,7 @@ fn bytes_scalars_conversion() { .chunks_exact_mut(Scalar::SAFE_BYTES) .zip(scalars.iter()) .for_each(|(bytes, scalar)| { - bytes.copy_from_slice(&scalar.to_bytes()[..Scalar::SAFE_BYTES]); + bytes.copy_from_slice(&scalar.to_bytes()[1..]); }); assert_eq!(bytes, decoded_bytes); @@ -52,8 +52,7 @@ fn bytes_scalars_conversion() { { let bytes = { let mut bytes = [0u8; Scalar::FULL_BYTES]; - bytes[..Scalar::SAFE_BYTES] - .copy_from_slice(&rand::random::<[u8; Scalar::SAFE_BYTES]>()); + bytes[1..].copy_from_slice(&rand::random::<[u8; Scalar::SAFE_BYTES]>()); bytes }; diff --git a/crates/subspace-erasure-coding/benches/commitments.rs b/crates/subspace-erasure-coding/benches/commitments.rs index 438d2a38ee..6283bf0e64 100644 --- a/crates/subspace-erasure-coding/benches/commitments.rs +++ b/crates/subspace-erasure-coding/benches/commitments.rs @@ -3,7 +3,7 @@ use kzg::G1; use rust_kzg_blst::types::g1::FsG1; use std::num::NonZeroUsize; use subspace_core_primitives::crypto::kzg::Commitment; -use subspace_core_primitives::ArchivedHistorySegment; +use subspace_core_primitives::segments::ArchivedHistorySegment; use subspace_erasure_coding::ErasureCoding; fn criterion_benchmark(c: &mut Criterion) { diff --git a/crates/subspace-fake-runtime-api/Cargo.toml b/crates/subspace-fake-runtime-api/Cargo.toml index d094add613..cc64367a61 100644 --- a/crates/subspace-fake-runtime-api/Cargo.toml +++ b/crates/subspace-fake-runtime-api/Cargo.toml @@ -14,28 +14,28 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] domain-runtime-primitives = { version = "0.1.0", default-features = false, path = "../../domains/primitives/runtime" } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-mmr = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-mmr = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-consensus-subspace = { default-features = false, path = "../sp-consensus-subspace" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", default-features = false, path = "../sp-domains" } sp-domains-fraud-proof = { version = "0.1.0", default-features = false, path = "../sp-domains-fraud-proof" } -sp-genesis-builder = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-genesis-builder = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { default-features = false, version = "0.1.0", path = "../../domains/primitives/messenger" } sp-objects = { default-features = false, path = "../sp-objects" } -sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { default-features = false, path = "../sp-subspace-mmr" } -sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", default-features = false, path = "../subspace-core-primitives" } subspace-runtime-primitives = { version = "0.1.0", default-features = false, path = "../subspace-runtime-primitives" } diff --git a/crates/subspace-fake-runtime-api/src/lib.rs b/crates/subspace-fake-runtime-api/src/lib.rs index e8beb05e52..3cb36c652a 100644 --- a/crates/subspace-fake-runtime-api/src/lib.rs +++ b/crates/subspace-fake-runtime-api/src/lib.rs @@ -19,15 +19,13 @@ use domain_runtime_primitives::opaque::Header as DomainHeader; use domain_runtime_primitives::{BlockNumber as DomainNumber, Hash as DomainHash}; use frame_support::weights::Weight; -use sp_consensus_subspace::{ - ChainConstants, EquivocationProof, FarmerPublicKey, PotParameters, SignedVote, SolutionRanges, -}; +use sp_consensus_subspace::{ChainConstants, PotParameters, SignedVote, SolutionRanges}; use sp_core::crypto::KeyTypeId; use sp_core::{OpaqueMetadata, H256}; use sp_domains::bundle_producer_election::BundleProducerElectionParams; use sp_domains::{ - DomainAllowlistUpdates, DomainId, DomainInstanceData, ExecutionReceiptFor, OpaqueBundle, - OperatorId, OperatorPublicKey, + DomainAllowlistUpdates, DomainId, DomainInstanceData, ExecutionReceiptFor, OperatorId, + OperatorPublicKey, }; use sp_domains_fraud_proof::fraud_proof::FraudProof; use sp_domains_fraud_proof::storage_proof::FraudProofStorageKeyRequest; @@ -42,11 +40,12 @@ use sp_version::RuntimeVersion; use std::collections::btree_map::BTreeMap; use std::collections::btree_set::BTreeSet; use subspace_core_primitives::objects::BlockObjectMapping; -use subspace_core_primitives::{ - HistorySize, Randomness, SegmentCommitment, SegmentHeader, SegmentIndex, U256, +use subspace_core_primitives::segments::{ + HistorySize, SegmentCommitment, SegmentHeader, SegmentIndex, }; +use subspace_core_primitives::{PublicKey, Randomness, U256}; use subspace_runtime_primitives::opaque::Block; -use subspace_runtime_primitives::{AccountId, Balance, BlockNumber, Hash, Moment, Nonce}; +use subspace_runtime_primitives::{AccountId, Balance, BlockNumber, Moment, Nonce}; mod mmr { pub use pallet_mmr::primitives::*; @@ -125,16 +124,12 @@ sp_api::impl_runtime_apis! { } impl sp_objects::ObjectsApi for Runtime { - fn extract_block_object_mapping(_block: Block, _successful_calls: Vec) -> BlockObjectMapping { - unreachable!() - } - - fn validated_object_call_hashes() -> Vec { + fn extract_block_object_mapping(_block: Block) -> BlockObjectMapping { unreachable!() } } - impl sp_consensus_subspace::SubspaceApi for Runtime { + impl sp_consensus_subspace::SubspaceApi for Runtime { fn pot_parameters() -> PotParameters { unreachable!() } @@ -143,22 +138,12 @@ sp_api::impl_runtime_apis! { unreachable!() } - fn submit_report_equivocation_extrinsic( - _equivocation_proof: EquivocationProof<::Header>, - ) -> Option<()> { - unreachable!() - } - fn submit_vote_extrinsic( - _signed_vote: SignedVote, ::Hash, FarmerPublicKey>, + _signed_vote: SignedVote, ::Hash, PublicKey>, ) { unreachable!() } - fn is_in_block_list(_farmer_public_key: &FarmerPublicKey) -> bool { - unreachable!() - } - fn history_size() -> HistorySize { unreachable!() } @@ -179,7 +164,7 @@ sp_api::impl_runtime_apis! { unreachable!() } - fn root_plot_public_key() -> Option { + fn root_plot_public_key() -> Option { unreachable!() } @@ -212,19 +197,6 @@ sp_api::impl_runtime_apis! { unreachable!() } - fn extract_bundle( - _extrinsic: ::Extrinsic - ) -> Option, ::Hash, DomainHeader, Balance>> { - unreachable!() - } - - fn extract_receipts( - _domain_id: DomainId, - _extrinsics: Vec<::Extrinsic>, - ) -> Vec> { - unreachable!() - } - fn extrinsics_shuffling_seed() -> Randomness { unreachable!() } @@ -261,10 +233,6 @@ sp_api::impl_runtime_apis! { unreachable!() } - fn domain_block_limit(_domain_id: DomainId) -> Option { - unreachable!() - } - fn domain_bundle_limit(_domain_id: DomainId) -> Option { unreachable!() } @@ -309,7 +277,7 @@ sp_api::impl_runtime_apis! { unreachable!() } - fn is_domain_runtime_updraded_since(_domain_id: DomainId, _at: NumberFor) -> Option { + fn is_domain_runtime_upgraded_since(_domain_id: DomainId, _at: NumberFor) -> Option { unreachable!() } diff --git a/crates/subspace-farmer-components/Cargo.toml b/crates/subspace-farmer-components/Cargo.toml index 88aa5e4c69..0e4bd6ed65 100644 --- a/crates/subspace-farmer-components/Cargo.toml +++ b/crates/subspace-farmer-components/Cargo.toml @@ -16,29 +16,29 @@ include = [ bench = false [dependencies] -async-lock = "3.3.0" -async-trait = "0.1.81" +async-lock = "3.4.0" +async-trait = "0.1.83" backoff = { version = "0.4.0", features = ["futures", "tokio"] } bitvec = "1.0.1" # TODO: Switch to fs4 once https://github.com/al8n/fs4-rs/issues/15 is resolved fs2 = "0.4.3" -futures = "0.3.29" +futures = "0.3.30" hex = "0.4.3" -libc = "0.2.154" +libc = "0.2.159" parity-scale-codec = "3.6.12" parking_lot = "0.12.2" rand = "0.8.5" rayon = "1.10.0" schnorrkel = "0.11.4" -serde = { version = "1.0.206", features = ["derive"] } +serde = { version = "1.0.110", features = ["derive"] } static_assertions = "1.1.0" subspace-archiving = { version = "0.1.0", path = "../subspace-archiving" } subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives" } subspace-erasure-coding = { version = "0.1.0", path = "../subspace-erasure-coding" } subspace-proof-of-space = { version = "0.1.0", path = "../subspace-proof-of-space", features = ["parallel"] } subspace-verification = { version = "0.1.0", path = "../subspace-verification" } -thiserror = "1.0.63" -tokio = { version = "1.39.2", features = ["macros", "parking_lot", "rt-multi-thread", "signal", "sync"] } +thiserror = "1.0.64" +tokio = { version = "1.40.0", features = ["macros", "parking_lot", "rt-multi-thread", "signal", "sync"] } tracing = "0.1.40" [target.'cfg(windows)'.dependencies] @@ -46,7 +46,7 @@ winapi = "0.3.9" [dev-dependencies] criterion = "0.5.1" -futures = "0.3.29" +futures = "0.3.30" subspace-archiving = { version = "0.1.0", path = "../subspace-archiving" } subspace-proof-of-space = { version = "0.1.0", path = "../subspace-proof-of-space" } diff --git a/crates/subspace-farmer-components/benches/auditing.rs b/crates/subspace-farmer-components/benches/auditing.rs index 682e5cf1a9..5baee4ce55 100644 --- a/crates/subspace-farmer-components/benches/auditing.rs +++ b/crates/subspace-farmer-components/benches/auditing.rs @@ -9,9 +9,10 @@ use std::{env, fs, slice}; use subspace_archiving::archiver::Archiver; use subspace_core_primitives::crypto::kzg; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::{ - Blake3Hash, HistorySize, PublicKey, Record, RecordedHistorySegment, SectorId, SolutionRange, -}; +use subspace_core_primitives::pieces::Record; +use subspace_core_primitives::sectors::SectorId; +use subspace_core_primitives::segments::{HistorySize, RecordedHistorySegment}; +use subspace_core_primitives::{Blake3Hash, PublicKey, SolutionRange}; use subspace_erasure_coding::ErasureCoding; use subspace_farmer_components::auditing::audit_plot_sync; use subspace_farmer_components::file_ext::{FileExt, OpenOptionsExt}; diff --git a/crates/subspace-farmer-components/benches/plotting.rs b/crates/subspace-farmer-components/benches/plotting.rs index 8a6e55b235..14eff2d522 100644 --- a/crates/subspace-farmer-components/benches/plotting.rs +++ b/crates/subspace-farmer-components/benches/plotting.rs @@ -6,7 +6,9 @@ use std::num::{NonZeroU64, NonZeroUsize}; use subspace_archiving::archiver::Archiver; use subspace_core_primitives::crypto::kzg; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::{HistorySize, PublicKey, Record, RecordedHistorySegment}; +use subspace_core_primitives::pieces::Record; +use subspace_core_primitives::segments::{HistorySize, RecordedHistorySegment}; +use subspace_core_primitives::PublicKey; use subspace_erasure_coding::ErasureCoding; use subspace_farmer_components::plotting::{plot_sector, CpuRecordsEncoder, PlotSectorOptions}; use subspace_farmer_components::sector::sector_size; diff --git a/crates/subspace-farmer-components/benches/proving.rs b/crates/subspace-farmer-components/benches/proving.rs index f2a9517ac5..06fa60a96f 100644 --- a/crates/subspace-farmer-components/benches/proving.rs +++ b/crates/subspace-farmer-components/benches/proving.rs @@ -13,10 +13,11 @@ use std::{env, fs, slice}; use subspace_archiving::archiver::Archiver; use subspace_core_primitives::crypto::kzg; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::{ - Blake3Hash, HistorySize, PosSeed, PublicKey, Record, RecordedHistorySegment, SectorId, - SolutionRange, -}; +use subspace_core_primitives::pieces::Record; +use subspace_core_primitives::pos::PosSeed; +use subspace_core_primitives::sectors::SectorId; +use subspace_core_primitives::segments::{HistorySize, RecordedHistorySegment}; +use subspace_core_primitives::{Blake3Hash, PublicKey, SolutionRange}; use subspace_erasure_coding::ErasureCoding; use subspace_farmer_components::auditing::audit_plot_sync; use subspace_farmer_components::file_ext::{FileExt, OpenOptionsExt}; @@ -161,7 +162,7 @@ pub fn criterion_benchmark(c: &mut Criterion) { println!("Searching for solutions"); let (global_challenge, solution_candidates) = &loop { let mut global_challenge = Blake3Hash::default(); - rng.fill_bytes(&mut global_challenge); + rng.fill_bytes(global_challenge.as_mut()); let audit_results = audit_plot_sync( public_key, diff --git a/crates/subspace-farmer-components/benches/reading.rs b/crates/subspace-farmer-components/benches/reading.rs index 2f0d8c98fd..7908b94123 100644 --- a/crates/subspace-farmer-components/benches/reading.rs +++ b/crates/subspace-farmer-components/benches/reading.rs @@ -10,9 +10,10 @@ use std::{env, fs, slice}; use subspace_archiving::archiver::Archiver; use subspace_core_primitives::crypto::kzg; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::{ - HistorySize, PieceOffset, PublicKey, Record, RecordedHistorySegment, SectorId, -}; +use subspace_core_primitives::pieces::{PieceOffset, Record}; +use subspace_core_primitives::sectors::SectorId; +use subspace_core_primitives::segments::{HistorySize, RecordedHistorySegment}; +use subspace_core_primitives::PublicKey; use subspace_erasure_coding::ErasureCoding; use subspace_farmer_components::file_ext::{FileExt, OpenOptionsExt}; use subspace_farmer_components::plotting::{ diff --git a/crates/subspace-farmer-components/src/auditing.rs b/crates/subspace-farmer-components/src/auditing.rs index 5ad0c322cd..8b7de1c0be 100644 --- a/crates/subspace-farmer-components/src/auditing.rs +++ b/crates/subspace-farmer-components/src/auditing.rs @@ -11,9 +11,8 @@ use rayon::prelude::*; use std::collections::HashSet; use std::io; use subspace_core_primitives::crypto::Scalar; -use subspace_core_primitives::{ - Blake3Hash, PublicKey, SBucket, SectorId, SectorIndex, SectorSlotChallenge, SolutionRange, -}; +use subspace_core_primitives::sectors::{SBucket, SectorId, SectorIndex, SectorSlotChallenge}; +use subspace_core_primitives::{Blake3Hash, PublicKey, SolutionRange}; use subspace_verification::is_within_solution_range; use thiserror::Error; diff --git a/crates/subspace-farmer-components/src/file_ext.rs b/crates/subspace-farmer-components/src/file_ext.rs index 435e0c7ddb..9e546fd254 100644 --- a/crates/subspace-farmer-components/src/file_ext.rs +++ b/crates/subspace-farmer-components/src/file_ext.rs @@ -9,26 +9,20 @@ pub trait OpenOptionsExt { /// undesirable, only has impact on Windows, for other operating systems see [`FileExt`] fn advise_random_access(&mut self) -> &mut Self; - /// Advise Windows to not use buffering for this file and that file access will be random. - /// - /// NOTE: There are major alignment requirements described here: - /// https://learn.microsoft.com/en-us/windows/win32/fileio/file-buffering#alignment-and-file-access-requirements - #[cfg(windows)] - fn advise_unbuffered(&mut self) -> &mut Self; - /// Advise OS/file system that file will use sequential access and read-ahead behavior is /// desirable, only has impact on Windows, for other operating systems see [`FileExt`] fn advise_sequential_access(&mut self) -> &mut Self; + + /// Use Direct I/O on Linux and disable buffering on Windows. + /// + /// NOTE: There are major alignment requirements described here: + /// + /// + fn use_direct_io(&mut self) -> &mut Self; } impl OpenOptionsExt for OpenOptions { - #[cfg(target_os = "linux")] - fn advise_random_access(&mut self) -> &mut Self { - // Not supported - self - } - - #[cfg(target_os = "macos")] + #[cfg(not(windows))] fn advise_random_access(&mut self) -> &mut Self { // Not supported self @@ -47,8 +41,20 @@ impl OpenOptionsExt for OpenOptions { ) } + #[cfg(not(windows))] + fn advise_sequential_access(&mut self) -> &mut Self { + // Not supported + self + } + + #[cfg(windows)] + fn advise_sequential_access(&mut self) -> &mut Self { + use std::os::windows::fs::OpenOptionsExt; + self.custom_flags(winapi::um::winbase::FILE_FLAG_SEQUENTIAL_SCAN) + } + #[cfg(windows)] - fn advise_unbuffered(&mut self) -> &mut Self { + fn use_direct_io(&mut self) -> &mut Self { use std::os::windows::fs::OpenOptionsExt; self.custom_flags( winapi::um::winbase::FILE_FLAG_WRITE_THROUGH @@ -57,22 +63,16 @@ impl OpenOptionsExt for OpenOptions { } #[cfg(target_os = "linux")] - fn advise_sequential_access(&mut self) -> &mut Self { - // Not supported - self + fn use_direct_io(&mut self) -> &mut Self { + use std::os::unix::fs::OpenOptionsExt; + self.custom_flags(libc::O_DIRECT) } - #[cfg(target_os = "macos")] - fn advise_sequential_access(&mut self) -> &mut Self { + #[cfg(not(any(target_os = "linux", windows)))] + fn use_direct_io(&mut self) -> &mut Self { // Not supported self } - - #[cfg(windows)] - fn advise_sequential_access(&mut self) -> &mut Self { - use std::os::windows::fs::OpenOptionsExt; - self.custom_flags(winapi::um::winbase::FILE_FLAG_SEQUENTIAL_SCAN) - } } /// Extension convenience trait that allows pre-allocating files, suggesting random access pattern @@ -92,6 +92,9 @@ pub trait FileExt { /// desirable, on Windows this can only be set when file is opened, see [`OpenOptionsExt`] fn advise_sequential_access(&self) -> Result<()>; + /// Disable cache on macOS + fn disable_cache(&self) -> Result<()>; + /// Read exact number of bytes at a specific offset fn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<()>; @@ -163,6 +166,22 @@ impl FileExt for File { Ok(()) } + #[cfg(not(target_os = "macos"))] + fn disable_cache(&self) -> Result<()> { + // Not supported + Ok(()) + } + + #[cfg(target_os = "macos")] + fn disable_cache(&self) -> Result<()> { + use std::os::unix::io::AsRawFd; + if unsafe { libc::fcntl(self.as_raw_fd(), libc::F_NOCACHE, 1) } != 0 { + Err(std::io::Error::last_os_error()) + } else { + Ok(()) + } + } + #[cfg(unix)] fn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<()> { std::os::unix::fs::FileExt::read_exact_at(self, buf, offset) diff --git a/crates/subspace-farmer-components/src/lib.rs b/crates/subspace-farmer-components/src/lib.rs index 71fe389176..6fd0c97119 100644 --- a/crates/subspace-farmer-components/src/lib.rs +++ b/crates/subspace-farmer-components/src/lib.rs @@ -9,7 +9,7 @@ int_roundings, iter_collect_into, never_type, - new_uninit, + new_zeroed_alloc, portable_simd, try_blocks )] @@ -33,7 +33,8 @@ use std::fs::File; use std::future::Future; use std::io; use std::sync::Arc; -use subspace_core_primitives::{ArchivedHistorySegment, HistorySize, Piece, PieceIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use subspace_core_primitives::segments::{ArchivedHistorySegment, HistorySize}; /// Trait representing a way to get pieces #[async_trait] diff --git a/crates/subspace-farmer-components/src/plotting.rs b/crates/subspace-farmer-components/src/plotting.rs index 508ba3aa27..354399327c 100644 --- a/crates/subspace-farmer-components/src/plotting.rs +++ b/crates/subspace-farmer-components/src/plotting.rs @@ -20,17 +20,17 @@ use futures::StreamExt; use parity_scale_codec::{Decode, Encode}; use parking_lot::Mutex; use rayon::prelude::*; -use std::mem; use std::simd::Simd; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; use std::time::Duration; use subspace_core_primitives::crypto::kzg::Kzg; use subspace_core_primitives::crypto::{blake3_hash, blake3_hash_parallel, Scalar}; -use subspace_core_primitives::{ - Blake3Hash, HistorySize, PieceIndex, PieceOffset, PosSeed, PublicKey, Record, SBucket, - SectorId, SectorIndex, -}; +use subspace_core_primitives::pieces::{PieceIndex, PieceOffset, Record}; +use subspace_core_primitives::pos::PosSeed; +use subspace_core_primitives::sectors::{SBucket, SectorId, SectorIndex}; +use subspace_core_primitives::segments::HistorySize; +use subspace_core_primitives::{Blake3Hash, PublicKey}; use subspace_erasure_coding::ErasureCoding; use subspace_proof_of_space::{Table, TableGenerator}; use thiserror::Error; @@ -616,8 +616,8 @@ pub fn write_sector( // It would be more efficient to not re-read the whole sector again, but it makes above code // significantly more convoluted and most likely not worth it let (sector_contents, sector_checksum) = - sector_output.split_at_mut(sector_size - mem::size_of::()); - sector_checksum.copy_from_slice(&blake3_hash_parallel(sector_contents)); + sector_output.split_at_mut(sector_size - Blake3Hash::SIZE); + sector_checksum.copy_from_slice(blake3_hash_parallel(sector_contents).as_ref()); } Ok(()) @@ -668,7 +668,7 @@ fn record_encoding( ) .map(|(s_bucket, record_chunk)| { if let Some(proof) = pos_table.find_proof(s_bucket.into()) { - (Simd::from(*record_chunk) ^ Simd::from(proof.hash())).to_array() + (Simd::from(*record_chunk) ^ Simd::from(*proof.hash())).to_array() } else { // Dummy value indicating no proof [0; Scalar::FULL_BYTES] diff --git a/crates/subspace-farmer-components/src/proving.rs b/crates/subspace-farmer-components/src/proving.rs index c630719423..4530e58e6c 100644 --- a/crates/subspace-farmer-components/src/proving.rs +++ b/crates/subspace-farmer-components/src/proving.rs @@ -15,10 +15,10 @@ use futures::FutureExt; use std::collections::VecDeque; use std::io; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::{ - ChunkWitness, PieceOffset, PosSeed, PublicKey, Record, SBucket, SectorId, Solution, - SolutionRange, -}; +use subspace_core_primitives::pieces::{PieceOffset, Record}; +use subspace_core_primitives::pos::PosSeed; +use subspace_core_primitives::sectors::{SBucket, SectorId}; +use subspace_core_primitives::{ChunkWitness, PublicKey, Solution, SolutionRange}; use subspace_erasure_coding::ErasureCoding; use subspace_proof_of_space::Table; use thiserror::Error; @@ -188,7 +188,7 @@ where } } -type MaybeSolution = Result, ProvingError>; +type MaybeSolution = Result, ProvingError>; struct SolutionsIterator<'a, RewardAddress, PosTable, TableGenerator, Sector> where diff --git a/crates/subspace-farmer-components/src/reading.rs b/crates/subspace-farmer-components/src/reading.rs index aa22e784a2..efd5f85d73 100644 --- a/crates/subspace-farmer-components/src/reading.rs +++ b/crates/subspace-farmer-components/src/reading.rs @@ -18,7 +18,8 @@ use std::simd::Simd; use std::str::FromStr; use std::{fmt, io}; use subspace_core_primitives::crypto::{blake3_hash, Scalar}; -use subspace_core_primitives::{Piece, PieceOffset, Record, SBucket, SectorId}; +use subspace_core_primitives::pieces::{Piece, PieceOffset, Record}; +use subspace_core_primitives::sectors::{SBucket, SectorId}; use subspace_erasure_coding::ErasureCoding; use subspace_proof_of_space::{Table, TableGenerator}; use thiserror::Error; @@ -162,10 +163,10 @@ where S: ReadAtSync, A: ReadAtAsync, { - // TODO: Should have been just `::new()`, but https://github.com/rust-lang/rust/issues/53827 - // SAFETY: Data structure filled with zeroes is a valid invariant - let mut record_chunks = - unsafe { Box::<[Option; Record::NUM_S_BUCKETS]>::new_zeroed().assume_init() }; + let mut record_chunks = Box::<[Option; Record::NUM_S_BUCKETS]>::try_from( + vec![None::; Record::NUM_S_BUCKETS].into_boxed_slice(), + ) + .expect("Correct size; qed"); let read_chunks_inputs = record_chunks .par_iter_mut() @@ -238,7 +239,7 @@ where .ok_or(ReadingError::MissingPosProof { s_bucket })?; record_chunk = - Simd::to_array(Simd::from(record_chunk) ^ Simd::from(proof.hash())); + Simd::to_array(Simd::from(record_chunk) ^ Simd::from(*proof.hash())); } maybe_record_chunk.replace(Scalar::try_from(record_chunk).map_err( @@ -296,7 +297,7 @@ where .ok_or(ReadingError::MissingPosProof { s_bucket })?; record_chunk = Simd::to_array( - Simd::from(record_chunk) ^ Simd::from(proof.hash()), + Simd::from(record_chunk) ^ Simd::from(*proof.hash()), ); } diff --git a/crates/subspace-farmer-components/src/sector.rs b/crates/subspace-farmer-components/src/sector.rs index a218bf1401..a0e8d92c97 100644 --- a/crates/subspace-farmer-components/src/sector.rs +++ b/crates/subspace-farmer-components/src/sector.rs @@ -14,10 +14,10 @@ use std::ops::{Deref, DerefMut}; use std::{mem, slice}; use subspace_core_primitives::checksum::Blake3Checksummed; use subspace_core_primitives::crypto::blake3_hash; -use subspace_core_primitives::{ - Blake3Hash, HistorySize, PieceOffset, Record, RecordCommitment, RecordWitness, SBucket, - SectorIndex, SegmentIndex, -}; +use subspace_core_primitives::pieces::{PieceOffset, Record, RecordCommitment, RecordWitness}; +use subspace_core_primitives::sectors::{SBucket, SectorIndex}; +use subspace_core_primitives::segments::{HistorySize, SegmentIndex}; +use subspace_core_primitives::Blake3Hash; use thiserror::Error; use tracing::debug; @@ -49,7 +49,7 @@ pub const fn sector_size(pieces_in_sector: u16) -> usize { sector_record_chunks_size(pieces_in_sector) + sector_record_metadata_size(pieces_in_sector) + SectorContentsMap::encoded_size(pieces_in_sector) - + mem::size_of::() + + Blake3Hash::SIZE } /// Metadata of the plotted sector @@ -148,7 +148,7 @@ pub(crate) struct RecordMetadata { impl RecordMetadata { pub(crate) const fn encoded_size() -> usize { - RecordWitness::SIZE + RecordCommitment::SIZE + mem::size_of::() + RecordWitness::SIZE + RecordCommitment::SIZE + Blake3Hash::SIZE } } @@ -265,6 +265,8 @@ pub enum SectorContentsMapIterationError { }, } +/// Map of sector contents. +/// /// Abstraction on top of bitfields that allow making sense of sector contents that contains both /// encoded (meaning erasure coded and encoded with existing PoSpace quality) and unencoded chunks /// (just erasure coded) used at the same time both in records (before writing to plot) and @@ -310,10 +312,10 @@ impl SectorContentsMap { } let (single_records_bit_arrays, expected_checksum) = - bytes.split_at(bytes.len() - mem::size_of::()); + bytes.split_at(bytes.len() - Blake3Hash::SIZE); // Verify checksum let actual_checksum = blake3_hash(single_records_bit_arrays); - if actual_checksum != expected_checksum { + if *actual_checksum != *expected_checksum { debug!( actual_checksum = %hex::encode(actual_checksum), expected_checksum = %hex::encode(expected_checksum), @@ -355,7 +357,7 @@ impl SectorContentsMap { /// Size of sector contents map when encoded and stored in the plot for specified number of /// pieces in sector pub const fn encoded_size(pieces_in_sector: u16) -> usize { - SINGLE_RECORD_BIT_ARRAY_SIZE * pieces_in_sector as usize + mem::size_of::() + SINGLE_RECORD_BIT_ARRAY_SIZE * pieces_in_sector as usize + Blake3Hash::SIZE } /// Encode internal contents into `output` @@ -378,7 +380,7 @@ impl SectorContentsMap { // Write data and checksum output[..slice.len()].copy_from_slice(slice); - output[slice.len()..].copy_from_slice(&blake3_hash(slice)); + output[slice.len()..].copy_from_slice(blake3_hash(slice).as_ref()); Ok(()) } diff --git a/crates/subspace-farmer-components/src/segment_reconstruction.rs b/crates/subspace-farmer-components/src/segment_reconstruction.rs index 78db118d11..84439f542f 100644 --- a/crates/subspace-farmer-components/src/segment_reconstruction.rs +++ b/crates/subspace-farmer-components/src/segment_reconstruction.rs @@ -4,7 +4,8 @@ use futures::StreamExt; use std::sync::atomic::{AtomicUsize, Ordering}; use subspace_archiving::piece_reconstructor::{PiecesReconstructor, ReconstructorError}; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::{ArchivedHistorySegment, Piece, PieceIndex, RecordedHistorySegment}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use subspace_core_primitives::segments::{ArchivedHistorySegment, RecordedHistorySegment}; use subspace_erasure_coding::ErasureCoding; use thiserror::Error; use tokio::sync::Semaphore; diff --git a/crates/subspace-farmer/Cargo.toml b/crates/subspace-farmer/Cargo.toml index 98dc1198cf..46ecd975bd 100644 --- a/crates/subspace-farmer/Cargo.toml +++ b/crates/subspace-farmer/Cargo.toml @@ -16,27 +16,27 @@ name = "subspace-farmer" required-features = ["binary"] [dependencies] -anyhow = "1.0.86" -async-lock = "3.3.0" -async-nats = { version = "0.35.1", optional = true } -async-trait = "0.1.81" +anyhow = "1.0.89" +async-lock = "3.4.0" +async-nats = { version = "0.37.0", optional = true } +async-trait = "0.1.83" backoff = { version = "0.4.0", features = ["futures", "tokio"] } base58 = "0.2.0" blake2 = "0.10.6" -blake3 = { version = "1.5.3", default-features = false } -bytes = "1.7.1" +blake3 = { version = "1.5.4", default-features = false } +bytes = "1.7.2" bytesize = "1.3.0" -clap = { version = "4.5.15", features = ["derive"], optional = true } +clap = { version = "4.5.18", features = ["derive"], optional = true } criterion = { version = "0.5.1", default-features = false, features = ["rayon", "async"], optional = true } derive_more = { version = "1.0.0", features = ["full"] } event-listener = "5.3.1" event-listener-primitives = "2.0.1" fdlimit = { version = "0.3.0", optional = true } -fs4 = "0.8.4" -futures = "0.3.29" +fs4 = "0.9.1" +futures = "0.3.30" hex = { version = "0.4.3", features = ["serde"] } hwlocality = { version = "1.0.0-alpha.6", features = ["vendored"], optional = true } -jsonrpsee = { version = "0.24.2", features = ["ws-client"] } +jsonrpsee = { version = "0.24.5", features = ["ws-client"] } mimalloc = { version = "0.1.43", optional = true } num_cpus = "1.16.0" parity-scale-codec = "3.6.12" @@ -47,10 +47,10 @@ rand = "0.8.5" rayon = "1.10.0" schnellru = "0.2.3" schnorrkel = "0.11.4" -serde = { version = "1.0.206", features = ["derive"] } -serde_json = "1.0.124" +serde = { version = "1.0.110", features = ["derive"] } +serde_json = "1.0.128" static_assertions = "1.1.0" -ss58-registry = "1.47.0" +ss58-registry = "1.50.0" subspace-archiving = { version = "0.1.0", path = "../subspace-archiving" } subspace-erasure-coding = { version = "0.1.0", path = "../subspace-erasure-coding" } subspace-farmer-components = { version = "0.1.0", path = "../subspace-farmer-components" } @@ -61,12 +61,12 @@ subspace-proof-of-space = { version = "0.1.0", path = "../subspace-proof-of-spac subspace-proof-of-space-gpu = { version = "0.1.0", path = "../../shared/subspace-proof-of-space-gpu", optional = true } subspace-rpc-primitives = { version = "0.1.0", path = "../subspace-rpc-primitives" } substrate-bip39 = "0.6.0" -supports-color = { version = "3.0.0", optional = true } -tempfile = "3.12.0" -thiserror = "1.0.63" +supports-color = { version = "3.0.1", optional = true } +tempfile = "3.13.0" +thiserror = "1.0.64" thread-priority = "1.1.0" -tokio = { version = "1.39.2", features = ["macros", "parking_lot", "rt-multi-thread", "signal", "time"] } -tokio-stream = { version = "0.1.15", features = ["sync"] } +tokio = { version = "1.40.0", features = ["macros", "parking_lot", "rt-multi-thread", "signal", "time"] } +tokio-stream = { version = "0.1.16", features = ["sync"] } tracing = "0.1.40" tracing-subscriber = { version = "0.3.18", features = ["env-filter"], optional = true } ulid = { version = "1.1.3", features = ["serde"] } diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/commands/benchmark.rs b/crates/subspace-farmer/src/bin/subspace-farmer/commands/benchmark.rs index 1c594c0d05..81ef277678 100644 --- a/crates/subspace-farmer/src/bin/subspace-farmer/commands/benchmark.rs +++ b/crates/subspace-farmer/src/bin/subspace-farmer/commands/benchmark.rs @@ -1,4 +1,4 @@ -use crate::{PosTable, PosTableLegacy}; +use crate::PosTable; use anyhow::anyhow; use clap::{Parser, Subcommand}; use criterion::{black_box, BatchSize, Criterion, Throughput}; @@ -9,11 +9,12 @@ use std::fs::OpenOptions; use std::num::NonZeroUsize; use std::path::PathBuf; use subspace_core_primitives::crypto::kzg::{embedded_kzg_settings, Kzg}; -use subspace_core_primitives::{Record, SolutionRange}; +use subspace_core_primitives::pieces::Record; +use subspace_core_primitives::{Blake3Hash, SolutionRange}; use subspace_erasure_coding::ErasureCoding; +use subspace_farmer::single_disk_farm::direct_io_file::DirectIoFile; use subspace_farmer::single_disk_farm::farming::rayon_files::RayonFiles; use subspace_farmer::single_disk_farm::farming::{PlotAudit, PlotAuditOptions}; -use subspace_farmer::single_disk_farm::unbuffered_io_file_windows::UnbufferedIoFileWindows; use subspace_farmer::single_disk_farm::{ SingleDiskFarm, SingleDiskFarmInfo, SingleDiskFarmSummary, }; @@ -131,9 +132,6 @@ fn audit(audit_options: AuditOptions) -> anyhow::Result<()> { match single_disk_farm_info { SingleDiskFarmInfo::V0 { .. } => { - audit_inner::(audit_options, single_disk_farm_info) - } - SingleDiskFarmInfo::V1 { .. } => { audit_inner::(audit_options, single_disk_farm_info) } } @@ -184,14 +182,14 @@ where group.bench_function("plot/single", |b| { b.iter_batched( - rand::random, + rand::random::<[u8; 32]>, |global_challenge| { let options = PlotAuditOptions:: { public_key: single_disk_farm_info.public_key(), reward_address: single_disk_farm_info.public_key(), slot_info: SlotInfo { slot_number: 0, - global_challenge, + global_challenge: Blake3Hash::from(global_challenge), // No solution will be found, pure audit solution_range: SolutionRange::MIN, // No solution will be found, pure audit @@ -212,24 +210,24 @@ where ) }); } - if cfg!(windows) { + { let plot = RayonFiles::open_with( &disk_farm.join(SingleDiskFarm::PLOT_FILE), - UnbufferedIoFileWindows::open, + DirectIoFile::open, ) .map_err(|error| anyhow::anyhow!("Failed to open plot: {error}"))?; let plot_audit = PlotAudit::new(&plot); group.bench_function("plot/rayon/unbuffered", |b| { b.iter_batched( - rand::random, + rand::random::<[u8; 32]>, |global_challenge| { let options = PlotAuditOptions:: { public_key: single_disk_farm_info.public_key(), reward_address: single_disk_farm_info.public_key(), slot_info: SlotInfo { slot_number: 0, - global_challenge, + global_challenge: Blake3Hash::from(global_challenge), // No solution will be found, pure audit solution_range: SolutionRange::MIN, // No solution will be found, pure audit @@ -257,14 +255,14 @@ where group.bench_function("plot/rayon/regular", |b| { b.iter_batched( - rand::random, + rand::random::<[u8; 32]>, |global_challenge| { let options = PlotAuditOptions:: { public_key: single_disk_farm_info.public_key(), reward_address: single_disk_farm_info.public_key(), slot_info: SlotInfo { slot_number: 0, - global_challenge, + global_challenge: Blake3Hash::from(global_challenge), // No solution will be found, pure audit solution_range: SolutionRange::MIN, // No solution will be found, pure audit @@ -314,9 +312,6 @@ fn prove(prove_options: ProveOptions) -> anyhow::Result<()> { match single_disk_farm_info { SingleDiskFarmInfo::V0 { .. } => { - prove_inner::(prove_options, single_disk_farm_info) - } - SingleDiskFarmInfo::V1 { .. } => { prove_inner::(prove_options, single_disk_farm_info) } } @@ -369,7 +364,7 @@ where reward_address: single_disk_farm_info.public_key(), slot_info: SlotInfo { slot_number: 0, - global_challenge: rand::random(), + global_challenge: Blake3Hash::from(rand::random::<[u8; 32]>()), // Solution is guaranteed to be found solution_range: SolutionRange::MAX, // Solution is guaranteed to be found @@ -392,7 +387,8 @@ where return result; } - options.slot_info.global_challenge = rand::random(); + options.slot_info.global_challenge = + Blake3Hash::from(rand::random::<[u8; 32]>()); audit_results = plot_audit.audit(options).unwrap(); audit_results.pop().unwrap() @@ -416,7 +412,8 @@ where return result; } - options.slot_info.global_challenge = rand::random(); + options.slot_info.global_challenge = + Blake3Hash::from(rand::random::<[u8; 32]>()); audit_results = plot_audit.audit(options).unwrap(); audit_results.pop().unwrap() @@ -430,10 +427,10 @@ where ) }); } - if cfg!(windows) { + { let plot = RayonFiles::open_with( &disk_farm.join(SingleDiskFarm::PLOT_FILE), - UnbufferedIoFileWindows::open, + DirectIoFile::open, ) .map_err(|error| anyhow::anyhow!("Failed to open plot: {error}"))?; let plot_audit = PlotAudit::new(&plot); @@ -442,7 +439,7 @@ where reward_address: single_disk_farm_info.public_key(), slot_info: SlotInfo { slot_number: 0, - global_challenge: rand::random(), + global_challenge: Blake3Hash::from(rand::random::<[u8; 32]>()), // Solution is guaranteed to be found solution_range: SolutionRange::MAX, // Solution is guaranteed to be found @@ -465,7 +462,8 @@ where return result; } - options.slot_info.global_challenge = rand::random(); + options.slot_info.global_challenge = + Blake3Hash::from(rand::random::<[u8; 32]>()); audit_results = plot_audit.audit(options).unwrap(); audit_results.pop().unwrap() @@ -489,7 +487,8 @@ where return result; } - options.slot_info.global_challenge = rand::random(); + options.slot_info.global_challenge = + Blake3Hash::from(rand::random::<[u8; 32]>()); audit_results = plot_audit.audit(options).unwrap(); audit_results.pop().unwrap() @@ -512,7 +511,7 @@ where reward_address: single_disk_farm_info.public_key(), slot_info: SlotInfo { slot_number: 0, - global_challenge: rand::random(), + global_challenge: Blake3Hash::from(rand::random::<[u8; 32]>()), // Solution is guaranteed to be found solution_range: SolutionRange::MAX, // Solution is guaranteed to be found @@ -535,7 +534,8 @@ where return result; } - options.slot_info.global_challenge = rand::random(); + options.slot_info.global_challenge = + Blake3Hash::from(rand::random::<[u8; 32]>()); audit_results = plot_audit.audit(options).unwrap(); audit_results.pop().unwrap() @@ -559,7 +559,8 @@ where return result; } - options.slot_info.global_challenge = rand::random(); + options.slot_info.global_challenge = + Blake3Hash::from(rand::random::<[u8; 32]>()); audit_results = plot_audit.audit(options).unwrap(); audit_results.pop().unwrap() diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster.rs b/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster.rs index a776df6cc7..a713149993 100644 --- a/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster.rs +++ b/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster.rs @@ -50,7 +50,7 @@ struct SharedArgs { /// /// NOTE: NATS must be configured for message sizes of 2MiB or larger (1MiB is the default), /// which can be done by starting NATS server with config file containing `max_payload = 2MB`. - #[arg(long, alias = "nats-server", required = true)] + #[arg(long = "nats-server", required = true)] nats_servers: Vec, /// Defines endpoints for the prometheus metrics server. It doesn't start without at least /// one specified endpoint. Format: 127.0.0.1:8080 @@ -82,11 +82,8 @@ impl ClusterSubcommand { } } -pub(crate) async fn cluster( - cluster_args: ClusterArgs, -) -> anyhow::Result<()> +pub(crate) async fn cluster(cluster_args: ClusterArgs) -> anyhow::Result<()> where - PosTableLegacy: Table, PosTable: Table, { let signal = shutdown_signal(); @@ -123,11 +120,10 @@ where controller(nats_client, &mut registry, controller_args).await? } ClusterSubcommand::Farmer(farmer_args) => { - farmer::(nats_client, &mut registry, farmer_args).await? + farmer::(nats_client, &mut registry, farmer_args).await? } ClusterSubcommand::Plotter(plotter_args) => { - plotter::(nats_client, &mut registry, plotter_args) - .await? + plotter::(nats_client, &mut registry, plotter_args).await? } ClusterSubcommand::Cache(cache_args) => { cache(nats_client, &mut registry, cache_args).await? diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster/controller/farms.rs b/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster/controller/farms.rs index e8efec6895..a11663d41c 100644 --- a/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster/controller/farms.rs +++ b/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster/controller/farms.rs @@ -19,7 +19,8 @@ use std::mem; use std::pin::{pin, Pin}; use std::sync::Arc; use std::time::Instant; -use subspace_core_primitives::{Blake3Hash, SectorIndex}; +use subspace_core_primitives::sectors::SectorIndex; +use subspace_core_primitives::Blake3Hash; use subspace_farmer::cluster::controller::ClusterControllerFarmerIdentifyBroadcast; use subspace_farmer::cluster::farmer::{ClusterFarm, ClusterFarmerIdentifyFarmBroadcast}; use subspace_farmer::cluster::nats_client::NatsClient; diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster/farmer.rs b/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster/farmer.rs index 16ff9de26d..b72322f920 100644 --- a/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster/farmer.rs +++ b/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster/farmer.rs @@ -17,7 +17,8 @@ use std::pin::{pin, Pin}; use std::sync::Arc; use std::time::Duration; use subspace_core_primitives::crypto::kzg::{embedded_kzg_settings, Kzg}; -use subspace_core_primitives::{PublicKey, Record}; +use subspace_core_primitives::pieces::Record; +use subspace_core_primitives::PublicKey; use subspace_erasure_coding::ErasureCoding; use subspace_farmer::cluster::controller::ClusterNodeClient; use subspace_farmer::cluster::farmer::farmer_service; @@ -117,13 +118,12 @@ pub(super) struct FarmerArgs { pub(super) additional_components: Vec, } -pub(super) async fn farmer( +pub(super) async fn farmer( nats_client: NatsClient, registry: &mut Registry, farmer_args: FarmerArgs, ) -> anyhow::Result>>>> where - PosTableLegacy: Table, PosTable: Table, { let FarmerArgs { @@ -212,15 +212,6 @@ where .unwrap_or_else(recommended_number_of_farming_threads); let global_mutex = Arc::default(); - let plotter_legacy = Arc::new(ClusterPlotter::new( - nats_client.clone(), - sector_encoding_concurrency, - ExponentialBackoff { - max_elapsed_time: None, - ..ExponentialBackoff::default() - }, - false, - )); let plotter = Arc::new(ClusterPlotter::new( nats_client.clone(), sector_encoding_concurrency, @@ -228,7 +219,6 @@ where max_elapsed_time: None, ..ExponentialBackoff::default() }, - true, )); let farms = { @@ -248,7 +238,6 @@ where let node_client = node_client.clone(); let kzg = kzg.clone(); let erasure_coding = erasure_coding.clone(); - let plotter_legacy = Arc::clone(&plotter_legacy); let plotter = Arc::clone(&plotter); let global_mutex = Arc::clone(&global_mutex); let faster_read_sector_record_chunks_mode_barrier = @@ -257,7 +246,7 @@ where Arc::clone(&faster_read_sector_record_chunks_mode_concurrency); async move { - let farm_fut = SingleDiskFarm::new::<_, PosTableLegacy, PosTable>( + let farm_fut = SingleDiskFarm::new::<_, PosTable>( SingleDiskFarmOptions { directory: disk_farm.directory.clone(), farmer_app_info, @@ -265,7 +254,6 @@ where max_pieces_in_sector, node_client, reward_address, - plotter_legacy, plotter, kzg, erasure_coding, diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster/plotter.rs b/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster/plotter.rs index 1bd82a9d16..e59a2d5792 100644 --- a/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster/plotter.rs +++ b/crates/subspace-farmer/src/bin/subspace-farmer/commands/cluster/plotter.rs @@ -2,7 +2,6 @@ use crate::commands::shared::PlottingThreadPriority; use anyhow::anyhow; use async_lock::Mutex as AsyncMutex; use clap::Parser; -use futures::{select, FutureExt}; use prometheus_client::registry::Registry; use std::future::Future; use std::num::NonZeroUsize; @@ -10,7 +9,7 @@ use std::pin::Pin; use std::sync::Arc; use std::time::Duration; use subspace_core_primitives::crypto::kzg::{embedded_kzg_settings, Kzg}; -use subspace_core_primitives::Record; +use subspace_core_primitives::pieces::Record; use subspace_erasure_coding::ErasureCoding; use subspace_farmer::cluster::controller::ClusterPieceGetter; use subspace_farmer::cluster::nats_client::NatsClient; @@ -107,8 +106,7 @@ pub(super) struct PlotterArgs { /// Piece getter concurrency. /// /// Increase can result in NATS communication issues if too many messages arrive via NATS, but - /// are not processed quickly enough for some reason and might require increasing cluster-level - /// `--nats-pool-size` parameter. + /// are not processed quickly enough for some reason. #[arg(long, default_value = "32")] piece_getter_concurrency: NonZeroUsize, /// Plotting options only used by CPU plotter @@ -123,13 +121,12 @@ pub(super) struct PlotterArgs { pub(super) additional_components: Vec, } -pub(super) async fn plotter( +pub(super) async fn plotter( nats_client: NatsClient, registry: &mut Registry, plotter_args: PlotterArgs, ) -> anyhow::Result>>>> where - PosTableLegacy: Table, PosTable: Table, { let PlotterArgs { @@ -150,8 +147,7 @@ where let global_mutex = Arc::default(); - let mut legacy_plotters = Vec::>::new(); - let mut modern_plotters = Vec::>::new(); + let mut plotters = Vec::>::new(); #[cfg(feature = "cuda")] { @@ -165,12 +161,12 @@ where )?; if let Some(cuda_plotter) = maybe_cuda_plotter { - modern_plotters.push(Box::new(cuda_plotter)); + plotters.push(Box::new(cuda_plotter)); } } { let cpu_sector_encoding_concurrency = cpu_plotting_options.cpu_sector_encoding_concurrency; - let maybe_cpu_plotters = init_cpu_plotters::<_, PosTableLegacy, PosTable>( + let maybe_cpu_plotter = init_cpu_plotter::<_, PosTable>( cpu_plotting_options, piece_getter, global_mutex, @@ -179,45 +175,34 @@ where registry, )?; - if let Some((legacy_cpu_plotter, modern_cpu_plotter)) = maybe_cpu_plotters { - legacy_plotters.push(Box::new(legacy_cpu_plotter)); - if !modern_plotters.is_empty() && cpu_sector_encoding_concurrency.is_none() { - info!( - "CPU plotting for v1 farms was disabled due to detected faster plotting with \ - GPU" - ); + if let Some(cpu_plotter) = maybe_cpu_plotter { + if !plotters.is_empty() && cpu_sector_encoding_concurrency.is_none() { + info!("CPU plotting was disabled due to detected faster plotting with GPU"); } else { - modern_plotters.push(Box::new(modern_cpu_plotter)); + plotters.push(Box::new(cpu_plotter)); } } } - let legacy_plotter = Arc::new(PoolPlotter::new(legacy_plotters, PLOTTING_RETRY_INTERVAL)); - let modern_plotter = Arc::new(PoolPlotter::new(modern_plotters, PLOTTING_RETRY_INTERVAL)); + let plotter = Arc::new(PoolPlotter::new(plotters, PLOTTING_RETRY_INTERVAL)); Ok(Box::pin(async move { - select! { - result = plotter_service(&nats_client, &legacy_plotter, false).fuse() => { - result.map_err(|error| anyhow!("Plotter service failed: {error}")) - } - result = plotter_service(&nats_client, &modern_plotter, true).fuse() => { - result.map_err(|error| anyhow!("Plotter service failed: {error}")) - } - } + plotter_service(&nats_client, &plotter) + .await + .map_err(|error| anyhow!("Plotter service failed: {error}")) })) } #[allow(clippy::type_complexity)] -fn init_cpu_plotters( +fn init_cpu_plotter( cpu_plotting_options: CpuPlottingOptions, piece_getter: PG, global_mutex: Arc>, kzg: Kzg, erasure_coding: ErasureCoding, registry: &mut Registry, -) -> anyhow::Result, CpuPlotter)>> +) -> anyhow::Result>> where PG: PieceGetter + Clone + Send + Sync + 'static, - PosTableLegacy: Table, PosTable: Table, { let CpuPlottingOptions { @@ -296,17 +281,7 @@ where ) .map_err(|error| anyhow!("Failed to create thread pool manager: {error}"))?; - let legacy_cpu_plotter = CpuPlotter::<_, PosTableLegacy>::new( - piece_getter.clone(), - Arc::clone(&downloading_semaphore), - plotting_thread_pool_manager.clone(), - cpu_record_encoding_concurrency, - Arc::clone(&global_mutex), - kzg.clone(), - erasure_coding.clone(), - Some(registry), - ); - let modern_cpu_plotter = CpuPlotter::<_, PosTable>::new( + let cpu_plotter = CpuPlotter::<_, PosTable>::new( piece_getter, downloading_semaphore, plotting_thread_pool_manager, @@ -317,7 +292,7 @@ where Some(registry), ); - Ok(Some((legacy_cpu_plotter, modern_cpu_plotter))) + Ok(Some(cpu_plotter)) } #[cfg(feature = "cuda")] diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs b/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs index 71dabf914b..dbb85e93b6 100644 --- a/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs +++ b/crates/subspace-farmer/src/bin/subspace-farmer/commands/farm.rs @@ -19,7 +19,8 @@ use std::str::FromStr; use std::sync::Arc; use std::time::Duration; use subspace_core_primitives::crypto::kzg::{embedded_kzg_settings, Kzg}; -use subspace_core_primitives::{PublicKey, Record}; +use subspace_core_primitives::pieces::Record; +use subspace_core_primitives::PublicKey; use subspace_erasure_coding::ErasureCoding; use subspace_farmer::farm::plotted_pieces::PlottedPieces; use subspace_farmer::farm::{PlottedSectors, SectorPlottingDetails, SectorUpdate}; @@ -268,9 +269,8 @@ fn cache_percentage_parser(s: &str) -> anyhow::Result { /// Start farming by using multiple replica plot in specified path and connecting to WebSocket /// server at specified address. -pub(crate) async fn farm(farming_args: FarmingArgs) -> anyhow::Result<()> +pub(crate) async fn farm(farming_args: FarmingArgs) -> anyhow::Result<()> where - PosTableLegacy: Table, PosTable: Table, { let signal = shutdown_signal(); @@ -468,8 +468,7 @@ where .unwrap_or_else(recommended_number_of_farming_threads); let global_mutex = Arc::default(); - let mut legacy_plotters = Vec::>::new(); - let mut modern_plotters = Vec::>::new(); + let mut plotters = Vec::>::new(); #[cfg(feature = "cuda")] { @@ -483,12 +482,12 @@ where )?; if let Some(cuda_plotter) = maybe_cuda_plotter { - modern_plotters.push(Box::new(cuda_plotter)); + plotters.push(Box::new(cuda_plotter)); } } { let cpu_sector_encoding_concurrency = cpu_plotting_options.cpu_sector_encoding_concurrency; - let maybe_cpu_plotters = init_cpu_plotters::<_, PosTableLegacy, PosTable>( + let maybe_cpu_plotter = init_cpu_plotter::<_, PosTable>( cpu_plotting_options, piece_getter.clone(), Arc::clone(&global_mutex), @@ -497,20 +496,15 @@ where &mut registry, )?; - if let Some((legacy_cpu_plotter, modern_cpu_plotter)) = maybe_cpu_plotters { - legacy_plotters.push(Box::new(legacy_cpu_plotter)); - if !modern_plotters.is_empty() && cpu_sector_encoding_concurrency.is_none() { - info!( - "CPU plotting for v1 farms was disabled due to detected faster plotting with \ - GPU" - ); + if let Some(cpu_plotter) = maybe_cpu_plotter { + if !plotters.is_empty() && cpu_sector_encoding_concurrency.is_none() { + info!("CPU plotting was disabled due to detected faster plotting with GPU"); } else { - modern_plotters.push(Box::new(modern_cpu_plotter)); + plotters.push(Box::new(cpu_plotter)); } } } - let legacy_plotter = Arc::new(PoolPlotter::new(legacy_plotters, PLOTTING_RETRY_INTERVAL)); - let modern_plotter = Arc::new(PoolPlotter::new(modern_plotters, PLOTTING_RETRY_INTERVAL)); + let plotter = Arc::new(PoolPlotter::new(plotters, PLOTTING_RETRY_INTERVAL)); let (farms, plotting_delay_senders) = { let info_mutex = &AsyncMutex::new(()); @@ -532,8 +526,7 @@ where let farmer_app_info = farmer_app_info.clone(); let kzg = kzg.clone(); let erasure_coding = erasure_coding.clone(); - let plotter_legacy = Arc::clone(&legacy_plotter); - let plotter = Arc::clone(&modern_plotter); + let plotter = Arc::clone(&plotter); let global_mutex = Arc::clone(&global_mutex); let faster_read_sector_record_chunks_mode_barrier = Arc::clone(&faster_read_sector_record_chunks_mode_barrier); @@ -541,7 +534,7 @@ where Arc::clone(&faster_read_sector_record_chunks_mode_concurrency); async move { - let farm_fut = SingleDiskFarm::new::<_, PosTableLegacy, PosTable>( + let farm_fut = SingleDiskFarm::new::<_, PosTable>( SingleDiskFarmOptions { directory: disk_farm.directory.clone(), farmer_app_info, @@ -549,7 +542,6 @@ where max_pieces_in_sector, node_client, reward_address, - plotter_legacy, plotter, kzg, erasure_coding, @@ -829,17 +821,16 @@ where } #[allow(clippy::type_complexity)] -fn init_cpu_plotters( +fn init_cpu_plotter( cpu_plotting_options: CpuPlottingOptions, piece_getter: PG, global_mutex: Arc>, kzg: Kzg, erasure_coding: ErasureCoding, registry: &mut Registry, -) -> anyhow::Result, CpuPlotter)>> +) -> anyhow::Result>> where PG: PieceGetter + Clone + Send + Sync + 'static, - PosTableLegacy: Table, PosTable: Table, { let CpuPlottingOptions { @@ -938,17 +929,7 @@ where ) .map_err(|error| anyhow!("Failed to create thread pool manager: {error}"))?; - let legacy_cpu_plotter = CpuPlotter::<_, PosTableLegacy>::new( - piece_getter.clone(), - Arc::clone(&cpu_downloading_semaphore), - plotting_thread_pool_manager.clone(), - cpu_record_encoding_concurrency, - Arc::clone(&global_mutex), - kzg.clone(), - erasure_coding.clone(), - Some(registry), - ); - let modern_cpu_plotter = CpuPlotter::<_, PosTable>::new( + let cpu_plotter = CpuPlotter::<_, PosTable>::new( piece_getter, cpu_downloading_semaphore, plotting_thread_pool_manager, @@ -959,7 +940,7 @@ where Some(registry), ); - Ok(Some((legacy_cpu_plotter, modern_cpu_plotter))) + Ok(Some(cpu_plotter)) } #[cfg(feature = "cuda")] diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/commands/shared/network.rs b/crates/subspace-farmer/src/bin/subspace-farmer/commands/shared/network.rs index 8f1ed29ee0..aaf1ca2beb 100644 --- a/crates/subspace-farmer/src/bin/subspace-farmer/commands/shared/network.rs +++ b/crates/subspace-farmer/src/bin/subspace-farmer/commands/shared/network.rs @@ -27,7 +27,7 @@ use tracing::{debug, error, info, Instrument}; /// How many segment headers can be requested at a time. /// /// Must be the same as RPC limit since all requests go to the node anyway. -const SEGMENT_HEADER_NUMBER_LIMIT: u64 = MAX_SEGMENT_HEADERS_PER_REQUEST as u64; +const SEGMENT_HEADERS_LIMIT: u32 = MAX_SEGMENT_HEADERS_PER_REQUEST as u32; /// Configuration for network stack #[derive(Debug, Parser)] @@ -64,7 +64,7 @@ pub(in super::super) struct NetworkArgs { #[arg(long, default_value_t = 100)] pub(in super::super) pending_out_connections: u32, /// Known external addresses - #[arg(long, alias = "external-address")] + #[arg(long = "external-address")] pub(in super::super) external_addresses: Vec, } @@ -164,7 +164,7 @@ where async move { let internal_result = match req { SegmentHeaderRequest::SegmentIndexes { segment_indexes } => { - if segment_indexes.len() as u64 > SEGMENT_HEADER_NUMBER_LIMIT { + if segment_indexes.len() > SEGMENT_HEADERS_LIMIT as usize { debug!( "segment_indexes length exceed the limit: {} ", segment_indexes.len() @@ -180,20 +180,16 @@ where node_client.segment_headers(segment_indexes).await } - SegmentHeaderRequest::LastSegmentHeaders { - mut segment_header_number, - } => { - if segment_header_number > SEGMENT_HEADER_NUMBER_LIMIT { + SegmentHeaderRequest::LastSegmentHeaders { mut limit } => { + if limit > SEGMENT_HEADERS_LIMIT { debug!( - %segment_header_number, + %limit, "Segment header number exceeded the limit." ); - segment_header_number = SEGMENT_HEADER_NUMBER_LIMIT; + limit = SEGMENT_HEADERS_LIMIT; } - node_client - .last_segment_headers(segment_header_number) - .await + node_client.last_segment_headers(limit).await } }; diff --git a/crates/subspace-farmer/src/bin/subspace-farmer/main.rs b/crates/subspace-farmer/src/bin/subspace-farmer/main.rs index 7e5e4f0658..0762220d2d 100644 --- a/crates/subspace-farmer/src/bin/subspace-farmer/main.rs +++ b/crates/subspace-farmer/src/bin/subspace-farmer/main.rs @@ -1,3 +1,8 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] #![feature( const_option, duration_constructors, @@ -15,7 +20,6 @@ use std::fs; use std::path::PathBuf; use subspace_farmer::single_disk_farm::{ScrubTarget, SingleDiskFarm}; use subspace_proof_of_space::chia::ChiaTable; -use subspace_proof_of_space::chia_legacy::ChiaTableLegacy; use tracing::info; use tracing_subscriber::filter::LevelFilter; use tracing_subscriber::prelude::*; @@ -24,7 +28,6 @@ use tracing_subscriber::{fmt, EnvFilter}; #[global_allocator] static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc; -type PosTableLegacy = ChiaTableLegacy; type PosTable = ChiaTable; #[allow(clippy::large_enum_variant)] @@ -100,10 +103,10 @@ async fn main() -> anyhow::Result<()> { match command { Command::Farm(farming_args) => { - commands::farm::farm::(farming_args).await?; + commands::farm::farm::(farming_args).await?; } Command::Cluster(cluster_args) => { - commands::cluster::cluster::(cluster_args).await?; + commands::cluster::cluster::(cluster_args).await?; } Command::Benchmark(benchmark_args) => { commands::benchmark::benchmark(benchmark_args)?; diff --git a/crates/subspace-farmer/src/cluster/cache.rs b/crates/subspace-farmer/src/cluster/cache.rs index edd624de5a..a5bb7574e6 100644 --- a/crates/subspace-farmer/src/cluster/cache.rs +++ b/crates/subspace-farmer/src/cluster/cache.rs @@ -20,9 +20,9 @@ use parity_scale_codec::{Decode, Encode}; use std::future::{pending, Future}; use std::pin::{pin, Pin}; use std::time::{Duration, Instant}; -use subspace_core_primitives::{Piece, PieceIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; use tokio::time::MissedTickBehavior; -use tracing::{debug, error, info, trace, warn}; +use tracing::{debug, error, info, info_span, trace, warn, Instrument}; const MIN_CACHE_IDENTIFICATION_INTERVAL: Duration = Duration::from_secs(1); @@ -458,7 +458,8 @@ where { caches_details .iter() - .map(|cache_details| async move { + .enumerate() + .map(|(cache_index, cache_details)| async move { // Initialize with pending future so it never ends let mut processing = FuturesUnordered::from_iter([ Box::pin(pending()) as Pin + Send>> @@ -486,11 +487,14 @@ where }; // Create background task for concurrent processing - processing.push(Box::pin(process_contents_request( - nats_client, - cache_details, - message, - ))); + processing.push(Box::pin( + process_contents_request( + nats_client, + cache_details, + message, + ) + .instrument(info_span!("", %cache_index)) + )); } _ = processing.next() => { // Nothing to do here diff --git a/crates/subspace-farmer/src/cluster/controller.rs b/crates/subspace-farmer/src/cluster/controller.rs index ddc4730917..4bfd786657 100644 --- a/crates/subspace-farmer/src/cluster/controller.rs +++ b/crates/subspace-farmer/src/cluster/controller.rs @@ -24,7 +24,8 @@ use std::error::Error; use std::num::NonZeroUsize; use std::pin::Pin; use std::sync::Arc; -use subspace_core_primitives::{Piece, PieceIndex, SegmentHeader, SegmentIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use subspace_core_primitives::segments::{SegmentHeader, SegmentIndex}; use subspace_farmer_components::PieceGetter; use subspace_rpc_primitives::{ FarmerAppInfo, RewardSignatureResponse, RewardSigningInfo, SlotInfo, SolutionResponse, diff --git a/crates/subspace-farmer/src/cluster/farmer.rs b/crates/subspace-farmer/src/cluster/farmer.rs index 483f12413e..02892780b6 100644 --- a/crates/subspace-farmer/src/cluster/farmer.rs +++ b/crates/subspace-farmer/src/cluster/farmer.rs @@ -28,7 +28,9 @@ use std::pin::{pin, Pin}; use std::sync::Arc; use std::time::{Duration, Instant}; use subspace_core_primitives::crypto::blake3_hash_list; -use subspace_core_primitives::{Blake3Hash, Piece, PieceOffset, SectorIndex}; +use subspace_core_primitives::pieces::{Piece, PieceOffset}; +use subspace_core_primitives::sectors::SectorIndex; +use subspace_core_primitives::Blake3Hash; use subspace_farmer_components::plotting::PlottedSector; use subspace_rpc_primitives::SolutionResponse; use tokio::time::MissedTickBehavior; diff --git a/crates/subspace-farmer/src/cluster/plotter.rs b/crates/subspace-farmer/src/cluster/plotter.rs index 49bc2473bf..32bda46ce1 100644 --- a/crates/subspace-farmer/src/cluster/plotter.rs +++ b/crates/subspace-farmer/src/cluster/plotter.rs @@ -27,7 +27,8 @@ use std::num::NonZeroUsize; use std::pin::{pin, Pin}; use std::sync::Arc; use std::time::{Duration, Instant}; -use subspace_core_primitives::{PublicKey, SectorIndex}; +use subspace_core_primitives::sectors::SectorIndex; +use subspace_core_primitives::PublicKey; use subspace_farmer_components::plotting::PlottedSector; use subspace_farmer_components::FarmerProtocolInfo; use tokio::sync::{OwnedSemaphorePermit, Semaphore}; @@ -65,7 +66,7 @@ impl ClusterPlotterId { struct ClusterPlotterFreeInstanceRequest; impl GenericRequest for ClusterPlotterFreeInstanceRequest { - const SUBJECT: &'static str = "subspace.plotter.*.free-instance"; + const SUBJECT: &'static str = "subspace.plotter.free-instance"; /// Might be `None` if instance had to respond, but turned out it was fully occupied already type Response = Option; } @@ -127,7 +128,6 @@ pub struct ClusterPlotter { nats_client: NatsClient, handlers: Arc, tasks_sender: mpsc::Sender>, - modern: bool, _background_tasks: AsyncJoinOnDrop<()>, } @@ -240,7 +240,6 @@ impl ClusterPlotter { nats_client: NatsClient, sector_encoding_concurrency: NonZeroUsize, retry_backoff_policy: ExponentialBackoff, - modern: bool, ) -> Self { let sector_encoding_semaphore = Arc::new(Semaphore::new(sector_encoding_concurrency.get())); @@ -278,7 +277,6 @@ impl ClusterPlotter { nats_client, handlers: Arc::default(), tasks_sender, - modern, _background_tasks: background_tasks, } } @@ -317,13 +315,11 @@ impl ClusterPlotter { retry_backoff_policy.reset(); // Try to get plotter instance here first as a backpressure measure - let modern = self.modern; let free_plotter_instance_fut = get_free_plotter_instance( &self.nats_client, &progress_updater, &mut progress_sender, &mut retry_backoff_policy, - modern, ); let mut maybe_free_instance = free_plotter_instance_fut.await; if maybe_free_instance.is_none() { @@ -345,7 +341,6 @@ impl ClusterPlotter { &progress_updater, &mut progress_sender, &mut retry_backoff_policy, - modern, ); let Some(free_instance) = free_plotter_instance_fut.await else { break; @@ -461,7 +456,6 @@ async fn get_free_plotter_instance( progress_updater: &ProgressUpdater, progress_sender: &mut PS, retry_backoff_policy: &mut ExponentialBackoff, - modern: bool, ) -> Option where PS: Sink + Unpin + Send + 'static, @@ -469,10 +463,7 @@ where { loop { match nats_client - .request( - &ClusterPlotterFreeInstanceRequest, - Some(if modern { "modern" } else { "legacy" }), - ) + .request(&ClusterPlotterFreeInstanceRequest, None) .await { Ok(Some(free_instance)) => { @@ -687,18 +678,14 @@ impl ProgressUpdater { /// /// Implementation is using concurrency with multiple tokio tasks, but can be started multiple times /// per controller instance in order to parallelize more work across threads if needed. -pub async fn plotter_service

( - nats_client: &NatsClient, - plotter: &P, - modern: bool, -) -> anyhow::Result<()> +pub async fn plotter_service

(nats_client: &NatsClient, plotter: &P) -> anyhow::Result<()> where P: Plotter + Sync, { let plotter_id = ClusterPlotterId::new(); select! { - result = free_instance_responder(&plotter_id, nats_client, plotter, modern).fuse() => { + result = free_instance_responder(&plotter_id, nats_client, plotter).fuse() => { result } result = plot_sector_responder(&plotter_id, nats_client, plotter).fuse() => { @@ -711,7 +698,6 @@ async fn free_instance_responder

( plotter_id: &ClusterPlotterId, nats_client: &NatsClient, plotter: &P, - modern: bool, ) -> anyhow::Result<()> where P: Plotter + Sync, @@ -723,8 +709,7 @@ where let mut subscription = nats_client .queue_subscribe( - ClusterPlotterFreeInstanceRequest::SUBJECT - .replace('*', if modern { "modern" } else { "legacy" }), + ClusterPlotterFreeInstanceRequest::SUBJECT, "subspace.plotter".to_string(), ) .await diff --git a/crates/subspace-farmer/src/disk_piece_cache.rs b/crates/subspace-farmer/src/disk_piece_cache.rs index 1e9b4a8210..927a56bd0f 100644 --- a/crates/subspace-farmer/src/disk_piece_cache.rs +++ b/crates/subspace-farmer/src/disk_piece_cache.rs @@ -7,9 +7,7 @@ mod tests; use crate::disk_piece_cache::metrics::DiskPieceCacheMetrics; use crate::farm; use crate::farm::{FarmError, PieceCacheId, PieceCacheOffset}; -#[cfg(windows)] -use crate::single_disk_farm::unbuffered_io_file_windows::UnbufferedIoFileWindows; -use crate::single_disk_farm::unbuffered_io_file_windows::DISK_SECTOR_SIZE; +use crate::single_disk_farm::direct_io_file::{DirectIoFile, DISK_SECTOR_SIZE}; use crate::utils::AsyncJoinOnDrop; use async_trait::async_trait; use bytes::BytesMut; @@ -17,17 +15,14 @@ use futures::channel::mpsc; use futures::{stream, SinkExt, Stream, StreamExt}; use parking_lot::Mutex; use prometheus_client::registry::Registry; -#[cfg(not(windows))] -use std::fs::{File, OpenOptions}; use std::path::Path; use std::sync::Arc; use std::task::Poll; -use std::{fs, io, mem}; +use std::{fs, io}; use subspace_core_primitives::crypto::blake3_hash_list; -use subspace_core_primitives::{Blake3Hash, Piece, PieceIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use subspace_core_primitives::Blake3Hash; use subspace_farmer_components::file_ext::FileExt; -#[cfg(not(windows))] -use subspace_farmer_components::file_ext::OpenOptionsExt; use thiserror::Error; use tokio::runtime::Handle; use tokio::task; @@ -65,10 +60,7 @@ pub enum DiskPieceCacheError { #[derive(Debug)] struct Inner { id: PieceCacheId, - #[cfg(not(windows))] - file: File, - #[cfg(windows)] - file: UnbufferedIoFileWindows, + file: DirectIoFile, max_num_elements: u32, metrics: Option, } @@ -196,19 +188,7 @@ impl DiskPieceCache { return Err(DiskPieceCacheError::ZeroCapacity); } - #[cfg(not(windows))] - let file = OpenOptions::new() - .read(true) - .write(true) - .create(true) - .advise_random_access() - .open(directory.join(Self::FILE_NAME))?; - - #[cfg(not(windows))] - file.advise_random_access()?; - - #[cfg(windows)] - let file = UnbufferedIoFileWindows::open(&directory.join(Self::FILE_NAME))?; + let file = DirectIoFile::open(&directory.join(Self::FILE_NAME))?; let expected_size = u64::from(Self::element_size()) * u64::from(capacity); // Align plot file size for disk sector size @@ -239,7 +219,7 @@ impl DiskPieceCache { /// Size of a single piece cache element pub const fn element_size() -> u32 { - (PieceIndex::SIZE + Piece::SIZE + mem::size_of::()) as u32 + (PieceIndex::SIZE + Piece::SIZE + Blake3Hash::SIZE) as u32 } /// Contents of this piece cache @@ -326,7 +306,7 @@ impl DiskPieceCache { .file .write_all_at(piece.as_ref(), element_offset + PieceIndex::SIZE as u64)?; self.inner.file.write_all_at( - &blake3_hash_list(&[&piece_index_bytes, piece.as_ref()]), + blake3_hash_list(&[&piece_index_bytes, piece.as_ref()]).as_ref(), element_offset + PieceIndex::SIZE as u64 + Piece::SIZE as u64, )?; @@ -406,7 +386,7 @@ impl DiskPieceCache { // Verify checksum let actual_checksum = blake3_hash_list(&[piece_index_bytes, piece_bytes]); - if actual_checksum != expected_checksum { + if *actual_checksum != *expected_checksum { if element.iter().all(|&byte| byte == 0) { return Ok(None); } diff --git a/crates/subspace-farmer/src/disk_piece_cache/tests.rs b/crates/subspace-farmer/src/disk_piece_cache/tests.rs index 4db64b695c..4f89861876 100644 --- a/crates/subspace-farmer/src/disk_piece_cache/tests.rs +++ b/crates/subspace-farmer/src/disk_piece_cache/tests.rs @@ -1,7 +1,7 @@ use crate::disk_piece_cache::{DiskPieceCache, DiskPieceCacheError, PieceCacheOffset}; use rand::prelude::*; use std::assert_matches::assert_matches; -use subspace_core_primitives::{Piece, PieceIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; use tempfile::tempdir; #[test] diff --git a/crates/subspace-farmer/src/farm.rs b/crates/subspace-farmer/src/farm.rs index c755c2d343..f80f51bf07 100644 --- a/crates/subspace-farmer/src/farm.rs +++ b/crates/subspace-farmer/src/farm.rs @@ -18,7 +18,9 @@ use std::pin::Pin; use std::sync::Arc; use std::time::Duration; use std::{fmt, io}; -use subspace_core_primitives::{Piece, PieceIndex, PieceOffset, SectorIndex, SegmentIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex, PieceOffset}; +use subspace_core_primitives::sectors::SectorIndex; +use subspace_core_primitives::segments::SegmentIndex; use subspace_farmer_components::auditing::AuditingError; use subspace_farmer_components::plotting::PlottedSector; use subspace_farmer_components::proving::ProvingError; diff --git a/crates/subspace-farmer/src/farm/plotted_pieces.rs b/crates/subspace-farmer/src/farm/plotted_pieces.rs index 084200f465..a16a8e6527 100644 --- a/crates/subspace-farmer/src/farm/plotted_pieces.rs +++ b/crates/subspace-farmer/src/farm/plotted_pieces.rs @@ -10,7 +10,8 @@ use std::fmt; use std::future::Future; use std::hash::Hash; use std::sync::Arc; -use subspace_core_primitives::{Piece, PieceIndex, PieceOffset, SectorIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex, PieceOffset}; +use subspace_core_primitives::sectors::SectorIndex; use subspace_farmer_components::plotting::PlottedSector; use tracing::{trace, warn}; diff --git a/crates/subspace-farmer/src/farmer_cache.rs b/crates/subspace-farmer/src/farmer_cache.rs index 1d4a8e81d6..8d56ceee0f 100644 --- a/crates/subspace-farmer/src/farmer_cache.rs +++ b/crates/subspace-farmer/src/farmer_cache.rs @@ -25,7 +25,8 @@ use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::Arc; use std::time::Duration; use std::{fmt, mem}; -use subspace_core_primitives::{Piece, PieceIndex, SegmentHeader, SegmentIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use subspace_core_primitives::segments::{SegmentHeader, SegmentIndex}; use subspace_farmer_components::PieceGetter; use subspace_networking::libp2p::kad::{ProviderRecord, RecordKey}; use subspace_networking::libp2p::PeerId; @@ -34,7 +35,7 @@ use subspace_networking::{KeyWithDistance, LocalRecordProvider}; use tokio::runtime::Handle; use tokio::sync::mpsc; use tokio::task::{block_in_place, yield_now}; -use tracing::{debug, error, info, trace, warn}; +use tracing::{debug, error, info, info_span, trace, warn, Instrument}; const WORKER_CHANNEL_CAPACITY: usize = 100; const CONCURRENT_PIECES_TO_DOWNLOAD: usize = 1_000; @@ -330,7 +331,7 @@ where let mut maybe_contents = match backend.backend.contents().await { Ok(contents) => Some(contents), Err(error) => { - warn!(%cache_index, %error, "Failed to get cache contents"); + warn!(%error, "Failed to get cache contents"); None } @@ -354,11 +355,7 @@ where let (piece_offset, maybe_piece_index) = match maybe_element_details { Ok(element_details) => element_details, Err(error) => { - warn!( - %cache_index, - %error, - "Failed to get cache contents element details" - ); + warn!(%error, "Failed to get cache contents element details"); break; } }; @@ -392,7 +389,7 @@ where }; Some(run_future_in_dedicated_thread( - move || init_fut, + move || init_fut.instrument(info_span!("", %cache_index)), format!("piece-cache.{cache_index}"), )) }) diff --git a/crates/subspace-farmer/src/farmer_cache/piece_cache_state.rs b/crates/subspace-farmer/src/farmer_cache/piece_cache_state.rs index 1e2824c472..978d92d6cb 100644 --- a/crates/subspace-farmer/src/farmer_cache/piece_cache_state.rs +++ b/crates/subspace-farmer/src/farmer_cache/piece_cache_state.rs @@ -3,7 +3,7 @@ use std::collections::btree_map::Values; use std::collections::{BTreeMap, HashMap, VecDeque}; use std::fmt; use std::hash::Hash; -use subspace_core_primitives::PieceIndex; +use subspace_core_primitives::pieces::PieceIndex; use subspace_networking::libp2p::PeerId; use subspace_networking::utils::multihash::ToMultihash; use subspace_networking::KeyWithDistance; diff --git a/crates/subspace-farmer/src/farmer_cache/tests.rs b/crates/subspace-farmer/src/farmer_cache/tests.rs index 536328998b..9b964efd96 100644 --- a/crates/subspace-farmer/src/farmer_cache/tests.rs +++ b/crates/subspace-farmer/src/farmer_cache/tests.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + use crate::disk_piece_cache::DiskPieceCache; use crate::farmer_cache::{decode_piece_index_from_record_key, FarmerCache}; use crate::node_client::{Error, NodeClient}; @@ -12,8 +18,9 @@ use std::pin::Pin; use std::sync::atomic::{AtomicU64, Ordering}; use std::sync::Arc; use std::time::Duration; -use subspace_core_primitives::{ - HistorySize, LastArchivedBlock, Piece, PieceIndex, SegmentHeader, SegmentIndex, +use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use subspace_core_primitives::segments::{ + HistorySize, LastArchivedBlock, SegmentHeader, SegmentIndex, }; use subspace_farmer_components::{FarmerProtocolInfo, PieceGetter}; use subspace_networking::libp2p::identity; @@ -259,7 +266,7 @@ async fn basic() { let segment_header = SegmentHeader::V0 { segment_index: SegmentIndex::ONE, segment_commitment: Default::default(), - prev_segment_header_hash: [0; 32], + prev_segment_header_hash: [0; 32].into(), last_archived_block: LastArchivedBlock { number: 0, archived_progress: Default::default(), @@ -317,7 +324,7 @@ async fn basic() { let segment_header = SegmentHeader::V0 { segment_index: SegmentIndex::from(segment_index), segment_commitment: Default::default(), - prev_segment_header_hash: [0; 32], + prev_segment_header_hash: [0; 32].into(), last_archived_block: LastArchivedBlock { number: 0, archived_progress: Default::default(), diff --git a/crates/subspace-farmer/src/farmer_piece_getter.rs b/crates/subspace-farmer/src/farmer_piece_getter.rs index 5ced33ac58..24306f07fa 100644 --- a/crates/subspace-farmer/src/farmer_piece_getter.rs +++ b/crates/subspace-farmer/src/farmer_piece_getter.rs @@ -18,7 +18,7 @@ use std::hash::Hash; use std::num::NonZeroUsize; use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::{Arc, Weak}; -use subspace_core_primitives::{Piece, PieceIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; use subspace_farmer_components::PieceGetter; use subspace_networking::utils::multihash::ToMultihash; use subspace_networking::utils::piece_provider::{PieceProvider, PieceValidator}; diff --git a/crates/subspace-farmer/src/farmer_piece_getter/piece_validator.rs b/crates/subspace-farmer/src/farmer_piece_getter/piece_validator.rs index 8ddd42cf41..b99bbc3ff7 100644 --- a/crates/subspace-farmer/src/farmer_piece_getter/piece_validator.rs +++ b/crates/subspace-farmer/src/farmer_piece_getter/piece_validator.rs @@ -4,7 +4,7 @@ use crate::node_client::NodeClient; use async_trait::async_trait; use subspace_archiving::archiver::is_piece_valid; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::{Piece, PieceIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; use subspace_networking::libp2p::PeerId; use subspace_networking::utils::piece_provider::PieceValidator; use subspace_networking::Node; diff --git a/crates/subspace-farmer/src/node_client.rs b/crates/subspace-farmer/src/node_client.rs index 6142ae52bf..a68bd52f1f 100644 --- a/crates/subspace-farmer/src/node_client.rs +++ b/crates/subspace-farmer/src/node_client.rs @@ -15,7 +15,8 @@ use async_trait::async_trait; use futures::Stream; use std::fmt; use std::pin::Pin; -use subspace_core_primitives::{Piece, PieceIndex, SegmentHeader, SegmentIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use subspace_core_primitives::segments::{SegmentHeader, SegmentIndex}; use subspace_rpc_primitives::{ FarmerAppInfo, RewardSignatureResponse, RewardSigningInfo, SlotInfo, SolutionResponse, }; @@ -76,5 +77,5 @@ pub trait NodeClient: fmt::Debug + Send + Sync + 'static { #[async_trait] pub trait NodeClientExt: NodeClient { /// Get the last segment headers. - async fn last_segment_headers(&self, limit: u64) -> Result>, Error>; + async fn last_segment_headers(&self, limit: u32) -> Result>, Error>; } diff --git a/crates/subspace-farmer/src/node_client/caching_proxy_node_client.rs b/crates/subspace-farmer/src/node_client/caching_proxy_node_client.rs index 33bf6856fb..b9f4ab40a8 100644 --- a/crates/subspace-farmer/src/node_client/caching_proxy_node_client.rs +++ b/crates/subspace-farmer/src/node_client/caching_proxy_node_client.rs @@ -9,7 +9,8 @@ use futures::{select, FutureExt, Stream, StreamExt}; use std::pin::Pin; use std::sync::Arc; use std::time::{Duration, Instant}; -use subspace_core_primitives::{Piece, PieceIndex, SegmentHeader, SegmentIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use subspace_core_primitives::segments::{SegmentHeader, SegmentIndex}; use subspace_rpc_primitives::{ FarmerAppInfo, RewardSignatureResponse, RewardSigningInfo, SlotInfo, SolutionResponse, MAX_SEGMENT_HEADERS_PER_REQUEST, @@ -46,12 +47,13 @@ impl SegmentHeaders { .collect::>() } - fn last_segment_headers(&self, limit: u64) -> Vec> { + fn last_segment_headers(&self, limit: u32) -> Vec> { self.segment_headers .iter() - .copied() .rev() .take(limit as usize) + .rev() + .copied() .map(Some) .collect() } @@ -342,7 +344,7 @@ impl NodeClientExt for CachingProxyNodeClient where NC: NodeClientExt, { - async fn last_segment_headers(&self, limit: u64) -> Result>, Error> { + async fn last_segment_headers(&self, limit: u32) -> Result>, Error> { Ok(self .segment_headers .read() diff --git a/crates/subspace-farmer/src/node_client/rpc_node_client.rs b/crates/subspace-farmer/src/node_client/rpc_node_client.rs index 7f3946fa71..b4eb430ee6 100644 --- a/crates/subspace-farmer/src/node_client/rpc_node_client.rs +++ b/crates/subspace-farmer/src/node_client/rpc_node_client.rs @@ -9,7 +9,8 @@ use jsonrpsee::rpc_params; use jsonrpsee::ws_client::{WsClient, WsClientBuilder}; use std::pin::Pin; use std::sync::Arc; -use subspace_core_primitives::{Piece, PieceIndex, SegmentHeader, SegmentIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use subspace_core_primitives::segments::{SegmentHeader, SegmentIndex}; use subspace_rpc_primitives::{ FarmerAppInfo, RewardSignatureResponse, RewardSigningInfo, SlotInfo, SolutionResponse, }; @@ -176,7 +177,7 @@ impl NodeClient for RpcNodeClient { impl NodeClientExt for RpcNodeClient { async fn last_segment_headers( &self, - limit: u64, + limit: u32, ) -> Result>, RpcError> { Ok(self .client diff --git a/crates/subspace-farmer/src/plotter.rs b/crates/subspace-farmer/src/plotter.rs index a7d87b400b..e1c6f5e1f0 100644 --- a/crates/subspace-farmer/src/plotter.rs +++ b/crates/subspace-farmer/src/plotter.rs @@ -17,7 +17,8 @@ use std::fmt; use std::pin::Pin; use std::sync::Arc; use std::time::Duration; -use subspace_core_primitives::{PublicKey, SectorIndex}; +use subspace_core_primitives::sectors::SectorIndex; +use subspace_core_primitives::PublicKey; use subspace_farmer_components::plotting::PlottedSector; use subspace_farmer_components::FarmerProtocolInfo; diff --git a/crates/subspace-farmer/src/plotter/cpu.rs b/crates/subspace-farmer/src/plotter/cpu.rs index 0d77736cc4..5929c0b951 100644 --- a/crates/subspace-farmer/src/plotter/cpu.rs +++ b/crates/subspace-farmer/src/plotter/cpu.rs @@ -24,7 +24,8 @@ use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; use std::time::Instant; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::{PublicKey, SectorIndex}; +use subspace_core_primitives::sectors::SectorIndex; +use subspace_core_primitives::PublicKey; use subspace_erasure_coding::ErasureCoding; use subspace_farmer_components::plotting::{ download_sector, encode_sector, write_sector, CpuRecordsEncoder, DownloadSectorOptions, diff --git a/crates/subspace-farmer/src/plotter/gpu.rs b/crates/subspace-farmer/src/plotter/gpu.rs index b090f15e90..d7a48f778a 100644 --- a/crates/subspace-farmer/src/plotter/gpu.rs +++ b/crates/subspace-farmer/src/plotter/gpu.rs @@ -25,7 +25,8 @@ use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; use std::time::Instant; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::{PublicKey, SectorIndex}; +use subspace_core_primitives::sectors::SectorIndex; +use subspace_core_primitives::PublicKey; use subspace_erasure_coding::ErasureCoding; use subspace_farmer_components::plotting::{ download_sector, encode_sector, write_sector, DownloadSectorOptions, EncodeSectorOptions, diff --git a/crates/subspace-farmer/src/plotter/gpu/cuda.rs b/crates/subspace-farmer/src/plotter/gpu/cuda.rs index ffdc9aab7d..c120aa2235 100644 --- a/crates/subspace-farmer/src/plotter/gpu/cuda.rs +++ b/crates/subspace-farmer/src/plotter/gpu/cuda.rs @@ -6,7 +6,9 @@ use parking_lot::Mutex; use rayon::{ThreadPool, ThreadPoolBuildError, ThreadPoolBuilder}; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; -use subspace_core_primitives::{HistorySize, PieceOffset, Record, SectorId}; +use subspace_core_primitives::pieces::{PieceOffset, Record}; +use subspace_core_primitives::sectors::SectorId; +use subspace_core_primitives::segments::HistorySize; use subspace_farmer_components::plotting::RecordsEncoder; use subspace_farmer_components::sector::SectorContentsMap; use subspace_proof_of_space_gpu::cuda::CudaDevice; diff --git a/crates/subspace-farmer/src/plotter/pool.rs b/crates/subspace-farmer/src/plotter/pool.rs index 0d9a5e25a6..b3ad2fdd7c 100644 --- a/crates/subspace-farmer/src/plotter/pool.rs +++ b/crates/subspace-farmer/src/plotter/pool.rs @@ -5,7 +5,8 @@ use async_trait::async_trait; use futures::channel::mpsc; use std::any::type_name_of_val; use std::time::Duration; -use subspace_core_primitives::{PublicKey, SectorIndex}; +use subspace_core_primitives::sectors::SectorIndex; +use subspace_core_primitives::PublicKey; use subspace_farmer_components::FarmerProtocolInfo; use tracing::{error, trace}; diff --git a/crates/subspace-farmer/src/single_disk_farm.rs b/crates/subspace-farmer/src/single_disk_farm.rs index 9d491e6518..77400b485a 100644 --- a/crates/subspace-farmer/src/single_disk_farm.rs +++ b/crates/subspace-farmer/src/single_disk_farm.rs @@ -4,6 +4,7 @@ //! a small piece cache. It fully manages farming and plotting process, including listening to node //! notifications, producing solutions and singing rewards. +pub mod direct_io_file; pub mod farming; pub mod identity; mod metrics; @@ -13,7 +14,6 @@ pub mod plot_cache; mod plotted_sectors; mod plotting; mod reward_signing; -pub mod unbuffered_io_file_windows; use crate::disk_piece_cache::{DiskPieceCache, DiskPieceCacheError}; use crate::farm::{ @@ -22,6 +22,7 @@ use crate::farm::{ }; use crate::node_client::NodeClient; use crate::plotter::Plotter; +use crate::single_disk_farm::direct_io_file::{DirectIoFile, DISK_SECTOR_SIZE}; use crate::single_disk_farm::farming::rayon_files::RayonFiles; use crate::single_disk_farm::farming::{ farming, slot_notification_forwarder, FarmingOptions, PlotAudit, @@ -37,9 +38,6 @@ use crate::single_disk_farm::plotting::{ plotting, plotting_scheduler, PlottingOptions, PlottingSchedulerOptions, SectorPlottingOptions, }; use crate::single_disk_farm::reward_signing::reward_signing; -#[cfg(windows)] -use crate::single_disk_farm::unbuffered_io_file_windows::UnbufferedIoFileWindows; -use crate::single_disk_farm::unbuffered_io_file_windows::DISK_SECTOR_SIZE; use crate::utils::{tokio_rayon_spawn_handler, AsyncJoinOnDrop}; use crate::{farm, KNOWN_PEERS_CACHE_SIZE}; use async_lock::{Mutex as AsyncMutex, RwLock as AsyncRwLock}; @@ -70,13 +68,12 @@ use std::time::{Duration, Instant}; use std::{fmt, fs, io, mem}; use subspace_core_primitives::crypto::kzg::Kzg; use subspace_core_primitives::crypto::{blake3_hash, Scalar}; -use subspace_core_primitives::{ - Blake3Hash, HistorySize, PublicKey, Record, SectorIndex, SegmentIndex, -}; +use subspace_core_primitives::pieces::Record; +use subspace_core_primitives::sectors::SectorIndex; +use subspace_core_primitives::segments::{HistorySize, SegmentIndex}; +use subspace_core_primitives::{Blake3Hash, PublicKey}; use subspace_erasure_coding::ErasureCoding; use subspace_farmer_components::file_ext::FileExt; -#[cfg(not(windows))] -use subspace_farmer_components::file_ext::OpenOptionsExt; use subspace_farmer_components::reading::ReadSectorRecordChunksMode; use subspace_farmer_components::sector::{sector_size, SectorMetadata, SectorMetadataChecksummed}; use subspace_farmer_components::{FarmerProtocolInfo, ReadAtSync}; @@ -114,7 +111,7 @@ pub struct SingleDiskFarmInfoLock { #[derive(Debug, Copy, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub enum SingleDiskFarmInfo { - /// Legacy V0 of the info + /// V0 of the info #[serde(rename_all = "camelCase")] V0 { /// ID of the farm @@ -129,21 +126,6 @@ pub enum SingleDiskFarmInfo { /// How much space in bytes is allocated for this farm allocated_space: u64, }, - /// V1 of the info - #[serde(rename_all = "camelCase")] - V1 { - /// ID of the farm - id: FarmId, - /// Genesis hash of the chain used for farm creation - #[serde(with = "hex")] - genesis_hash: [u8; 32], - /// Public key of identity used for farm creation - public_key: PublicKey, - /// How many pieces does one sector contain. - pieces_in_sector: u16, - /// How much space in bytes is allocated for this farm - allocated_space: u64, - }, } impl SingleDiskFarmInfo { @@ -157,7 +139,7 @@ impl SingleDiskFarmInfo { pieces_in_sector: u16, allocated_space: u64, ) -> Self { - Self::V1 { + Self::V0 { id, genesis_hash, public_key, @@ -192,7 +174,7 @@ impl SingleDiskFarmInfo { .create(true) .truncate(true) .open(directory.join(Self::FILE_NAME))?; - fs4::FileExt::try_lock_exclusive(&file)?; + fs4::fs_std::FileExt::try_lock_exclusive(&file)?; file.write_all(&serde_json::to_vec(self).expect("Info serialization never fails; qed")) } @@ -200,26 +182,26 @@ impl SingleDiskFarmInfo { /// processes is done pub fn try_lock(directory: &Path) -> io::Result { let file = File::open(directory.join(Self::FILE_NAME))?; - fs4::FileExt::try_lock_exclusive(&file)?; + fs4::fs_std::FileExt::try_lock_exclusive(&file)?; Ok(SingleDiskFarmInfoLock { _file: file }) } /// ID of the farm pub fn id(&self) -> &FarmId { - let (Self::V0 { id, .. } | Self::V1 { id, .. }) = self; + let Self::V0 { id, .. } = self; id } /// Genesis hash of the chain used for farm creation pub fn genesis_hash(&self) -> &[u8; 32] { - let (Self::V0 { genesis_hash, .. } | Self::V1 { genesis_hash, .. }) = self; + let Self::V0 { genesis_hash, .. } = self; genesis_hash } /// Public key of identity used for farm creation pub fn public_key(&self) -> &PublicKey { - let (Self::V0 { public_key, .. } | Self::V1 { public_key, .. }) = self; + let Self::V0 { public_key, .. } = self; public_key } @@ -229,9 +211,6 @@ impl SingleDiskFarmInfo { SingleDiskFarmInfo::V0 { pieces_in_sector, .. } => *pieces_in_sector, - SingleDiskFarmInfo::V1 { - pieces_in_sector, .. - } => *pieces_in_sector, } } @@ -241,9 +220,6 @@ impl SingleDiskFarmInfo { SingleDiskFarmInfo::V0 { allocated_space, .. } => *allocated_space, - SingleDiskFarmInfo::V1 { - allocated_space, .. - } => *allocated_space, } } } @@ -309,8 +285,6 @@ where /// Address where farming rewards should go pub reward_address: PublicKey, /// Plotter - pub plotter_legacy: Arc, - /// Plotter pub plotter: Arc, /// Kzg instance to use. pub kzg: Kzg, @@ -753,14 +727,8 @@ struct SingleDiskFarmInit { identity: Identity, single_disk_farm_info: SingleDiskFarmInfo, single_disk_farm_info_lock: Option, - #[cfg(not(windows))] - plot_file: Arc, - #[cfg(windows)] - plot_file: Arc, - #[cfg(not(windows))] - metadata_file: File, - #[cfg(windows)] - metadata_file: UnbufferedIoFileWindows, + plot_file: Arc, + metadata_file: DirectIoFile, metadata_header: PlotMetadataHeader, target_sector_count: u16, sectors_metadata: Arc>>, @@ -854,13 +822,12 @@ impl SingleDiskFarm { const SUPPORTED_PLOT_VERSION: u8 = 0; /// Create new single disk farm instance - pub async fn new( + pub async fn new( options: SingleDiskFarmOptions<'_, NC>, farm_index: usize, ) -> Result where NC: NodeClient + Clone, - PosTableLegacy: Table, PosTable: Table, { let span = Span::current(); @@ -872,7 +839,6 @@ impl SingleDiskFarm { max_pieces_in_sector, node_client, reward_address, - plotter_legacy, plotter, kzg, erasure_coding, @@ -993,17 +959,7 @@ impl SingleDiskFarm { let farming_plot_fut = task::spawn_blocking(|| { farming_thread_pool .install(move || { - #[cfg(windows)] - { - RayonFiles::open_with( - &directory.join(Self::PLOT_FILE), - UnbufferedIoFileWindows::open, - ) - } - #[cfg(not(windows))] - { - RayonFiles::open(&directory.join(Self::PLOT_FILE)) - } + RayonFiles::open_with(&directory.join(Self::PLOT_FILE), DirectIoFile::open) }) .map(|farming_plot| (farming_plot, farming_thread_pool)) }); @@ -1059,11 +1015,6 @@ impl SingleDiskFarm { move || { let _span_guard = span.enter(); - let plotter = match single_disk_farm_info { - SingleDiskFarmInfo::V0 { .. } => plotter_legacy, - SingleDiskFarmInfo::V1 { .. } => plotter, - }; - let plotting_options = PlottingOptions { metadata_header, sectors_metadata: §ors_metadata, @@ -1196,14 +1147,7 @@ impl SingleDiskFarm { global_mutex, metrics, }; - match single_disk_farm_info { - SingleDiskFarmInfo::V0 { .. } => { - farming::(farming_options).await - } - SingleDiskFarmInfo::V1 { .. } => { - farming::(farming_options).await - } - } + farming::(farming_options).await }; Handle::current().block_on(async { @@ -1237,72 +1181,34 @@ impl SingleDiskFarm { }) })); - let (piece_reader, reading_join_handle) = match single_disk_farm_info { - SingleDiskFarmInfo::V0 { .. } => { - let (piece_reader, reading_fut) = DiskPieceReader::new::( - public_key, - pieces_in_sector, - plot_file, - Arc::clone(§ors_metadata), - erasure_coding, - sectors_being_modified, - read_sector_record_chunks_mode, - global_mutex, - ); - - let reading_join_handle = task::spawn_blocking({ - let mut stop_receiver = stop_sender.subscribe(); - let reading_fut = reading_fut.instrument(span.clone()); - - move || { - Handle::current().block_on(async { - select! { - _ = reading_fut.fuse() => { - // Nothing, just exit - } - _ = stop_receiver.recv().fuse() => { - // Nothing, just exit - } - } - }); - } - }); - - (piece_reader, reading_join_handle) - } - SingleDiskFarmInfo::V1 { .. } => { - let (piece_reader, reading_fut) = DiskPieceReader::new::( - public_key, - pieces_in_sector, - plot_file, - Arc::clone(§ors_metadata), - erasure_coding, - sectors_being_modified, - read_sector_record_chunks_mode, - global_mutex, - ); + let (piece_reader, reading_fut) = DiskPieceReader::new::( + public_key, + pieces_in_sector, + plot_file, + Arc::clone(§ors_metadata), + erasure_coding, + sectors_being_modified, + read_sector_record_chunks_mode, + global_mutex, + ); - let reading_join_handle = task::spawn_blocking({ - let mut stop_receiver = stop_sender.subscribe(); - let reading_fut = reading_fut.instrument(span.clone()); + let reading_join_handle = task::spawn_blocking({ + let mut stop_receiver = stop_sender.subscribe(); + let reading_fut = reading_fut.instrument(span.clone()); - move || { - Handle::current().block_on(async { - select! { - _ = reading_fut.fuse() => { - // Nothing, just exit - } - _ = stop_receiver.recv().fuse() => { - // Nothing, just exit - } - } - }); + move || { + Handle::current().block_on(async { + select! { + _ = reading_fut.fuse() => { + // Nothing, just exit + } + _ = stop_receiver.recv().fuse() => { + // Nothing, just exit + } } }); - - (piece_reader, reading_join_handle) } - }; + }); let reading_join_handle = AsyncJoinOnDrop::new(reading_join_handle, false); @@ -1417,19 +1323,12 @@ impl SingleDiskFarm { "Farm size has changed" ); - { - let new_allocated_space = allocated_space; - match &mut single_disk_farm_info { - SingleDiskFarmInfo::V0 { - allocated_space, .. - } => { - *allocated_space = new_allocated_space; - } - SingleDiskFarmInfo::V1 { - allocated_space, .. - } => { - *allocated_space = new_allocated_space; - } + let new_allocated_space = allocated_space; + match &mut single_disk_farm_info { + SingleDiskFarmInfo::V0 { + allocated_space, .. + } => { + *allocated_space = new_allocated_space; } } @@ -1474,19 +1373,7 @@ impl SingleDiskFarm { let target_sector_count = allocated_space_distribution.target_sector_count; let metadata_file_path = directory.join(Self::METADATA_FILE); - #[cfg(not(windows))] - let metadata_file = OpenOptions::new() - .read(true) - .write(true) - .create(true) - .advise_random_access() - .open(&metadata_file_path)?; - - #[cfg(not(windows))] - metadata_file.advise_random_access()?; - - #[cfg(windows)] - let metadata_file = UnbufferedIoFileWindows::open(&metadata_file_path)?; + let metadata_file = DirectIoFile::open(&metadata_file_path)?; let metadata_size = metadata_file.size()?; let expected_metadata_size = allocated_space_distribution.metadata_file_size; @@ -1576,19 +1463,7 @@ impl SingleDiskFarm { Arc::new(AsyncRwLock::new(sectors_metadata)) }; - #[cfg(not(windows))] - let plot_file = OpenOptions::new() - .read(true) - .write(true) - .create(true) - .advise_random_access() - .open(directory.join(Self::PLOT_FILE))?; - - #[cfg(not(windows))] - plot_file.advise_random_access()?; - - #[cfg(windows)] - let plot_file = UnbufferedIoFileWindows::open(&directory.join(Self::PLOT_FILE))?; + let plot_file = DirectIoFile::open(&directory.join(Self::PLOT_FILE))?; if plot_file.size()? != allocated_space_distribution.plot_file_size { // Allocating the whole file (`set_len` below can create a sparse file, which will cause @@ -1731,13 +1606,7 @@ impl SingleDiskFarm { pub fn read_all_sectors_metadata( directory: &Path, ) -> io::Result> { - #[cfg(not(windows))] - let metadata_file = OpenOptions::new() - .read(true) - .open(directory.join(Self::METADATA_FILE))?; - - #[cfg(windows)] - let metadata_file = UnbufferedIoFileWindows::open(&directory.join(Self::METADATA_FILE))?; + let metadata_file = DirectIoFile::open(&directory.join(Self::METADATA_FILE))?; let metadata_size = metadata_file.size()?; let sector_metadata_size = SectorMetadataChecksummed::encoded_size(); @@ -2140,7 +2009,7 @@ impl SingleDiskFarm { plot_file }; - let sector_bytes_range = 0..(sector_size as usize - mem::size_of::()); + let sector_bytes_range = 0..(sector_size as usize - Blake3Hash::SIZE); info!("Checking sectors and corresponding metadata"); (0..metadata_header.plotted_sector_count) @@ -2273,7 +2142,7 @@ impl SingleDiskFarm { } let actual_checksum = *hasher.finalize().as_bytes(); - let mut expected_checksum = [0; mem::size_of::()]; + let mut expected_checksum = [0; Blake3Hash::SIZE]; { let offset = u64::from(sector_index) * sector_size + sector_bytes_range.end as u64; @@ -2464,9 +2333,9 @@ impl SingleDiskFarm { } let (index_and_piece_bytes, expected_checksum) = - element.split_at(element_size as usize - mem::size_of::()); + element.split_at(element_size as usize - Blake3Hash::SIZE); let actual_checksum = blake3_hash(index_and_piece_bytes); - if actual_checksum != expected_checksum && element != &dummy_element { + if *actual_checksum != *expected_checksum && element != &dummy_element { warn!( %cache_offset, actual_checksum = %hex::encode(actual_checksum), diff --git a/crates/subspace-farmer/src/single_disk_farm/unbuffered_io_file_windows.rs b/crates/subspace-farmer/src/single_disk_farm/direct_io_file.rs similarity index 80% rename from crates/subspace-farmer/src/single_disk_farm/unbuffered_io_file_windows.rs rename to crates/subspace-farmer/src/single_disk_farm/direct_io_file.rs index d92dc6bf43..1694bcc11a 100644 --- a/crates/subspace-farmer/src/single_disk_farm/unbuffered_io_file_windows.rs +++ b/crates/subspace-farmer/src/single_disk_farm/direct_io_file.rs @@ -1,13 +1,11 @@ -//! Wrapper data structure for unbuffered I/O on Windows +//! Wrapper data structure for direct/unbuffered I/O use parking_lot::Mutex; use static_assertions::const_assert_eq; use std::fs::{File, OpenOptions}; -use std::io; use std::path::Path; -use subspace_farmer_components::file_ext::FileExt; -#[cfg(windows)] -use subspace_farmer_components::file_ext::OpenOptionsExt; +use std::{io, mem}; +use subspace_farmer_components::file_ext::{FileExt, OpenOptionsExt}; use subspace_farmer_components::ReadAtSync; /// 4096 is as a relatively safe size due to sector size on SSDs commonly being 512 or 4096 bytes @@ -17,30 +15,49 @@ const MAX_READ_SIZE: usize = 1024 * 1024; const_assert_eq!(MAX_READ_SIZE % DISK_SECTOR_SIZE, 0); -/// Wrapper data structure for unbuffered I/O on Windows +#[derive(Debug, Copy, Clone)] +#[repr(C, align(4096))] +struct AlignedSectorSize([u8; DISK_SECTOR_SIZE]); + +const_assert_eq!(align_of::(), DISK_SECTOR_SIZE); + +impl Default for AlignedSectorSize { + fn default() -> Self { + Self([0; DISK_SECTOR_SIZE]) + } +} + +impl AlignedSectorSize { + fn slice_mut_to_repr(slice: &mut [Self]) -> &mut [[u8; DISK_SECTOR_SIZE]] { + // SAFETY: `AlignedSectorSize` is `#[repr(C)]` and its alignment is larger than inner value + unsafe { mem::transmute(slice) } + } +} + +/// Wrapper data structure for direct/unbuffered I/O #[derive(Debug)] -pub struct UnbufferedIoFileWindows { +pub struct DirectIoFile { file: File, physical_sector_size: usize, /// Scratch buffer of aligned memory for reads and writes - scratch_buffer: Mutex>, + scratch_buffer: Mutex>, } -impl ReadAtSync for UnbufferedIoFileWindows { +impl ReadAtSync for DirectIoFile { #[inline] fn read_at(&self, buf: &mut [u8], offset: u64) -> io::Result<()> { self.read_exact_at(buf, offset) } } -impl ReadAtSync for &UnbufferedIoFileWindows { +impl ReadAtSync for &DirectIoFile { #[inline] fn read_at(&self, buf: &mut [u8], offset: u64) -> io::Result<()> { (*self).read_at(buf, offset) } } -impl FileExt for UnbufferedIoFileWindows { +impl FileExt for DirectIoFile { fn size(&self) -> io::Result { Ok(self.file.metadata()?.len()) } @@ -59,6 +76,11 @@ impl FileExt for UnbufferedIoFileWindows { Ok(()) } + fn disable_cache(&self) -> io::Result<()> { + // Ignore, not supported + Ok(()) + } + fn read_exact_at(&self, buf: &mut [u8], mut offset: u64) -> io::Result<()> { if buf.is_empty() { return Ok(()); @@ -128,15 +150,14 @@ impl FileExt for UnbufferedIoFileWindows { } } -impl UnbufferedIoFileWindows { - /// Open file at specified path for random unbuffered access on Windows for reads to prevent - /// huge memory usage (if file doesn't exist, it will be created). +impl DirectIoFile { + /// Open file at specified path for direct/unbuffered I/O for reads (if file doesn't exist, it + /// will be created). /// - /// This abstraction is useless on other platforms and will just result in extra memory copies + /// This is especially important on Windows to prevent huge memory usage. pub fn open(path: &Path) -> io::Result { let mut open_options = OpenOptions::new(); - #[cfg(windows)] - open_options.advise_unbuffered(); + open_options.use_direct_io(); let file = open_options .read(true) .write(true) @@ -144,6 +165,8 @@ impl UnbufferedIoFileWindows { .truncate(false) .open(path)?; + file.disable_cache()?; + // Physical sector size on many SSDs is smaller than 4096 and should improve performance let physical_sector_size = if file.read_at(&mut [0; 512], 512).is_ok() { 512 @@ -156,7 +179,7 @@ impl UnbufferedIoFileWindows { physical_sector_size, // In many cases we'll want to read this much at once, so pre-allocate it right away scratch_buffer: Mutex::new(vec![ - [0; DISK_SECTOR_SIZE]; + AlignedSectorSize::default(); MAX_READ_SIZE / DISK_SECTOR_SIZE ]), }) @@ -169,7 +192,7 @@ impl UnbufferedIoFileWindows { fn read_exact_at_internal<'a>( &self, - scratch_buffer: &'a mut Vec<[u8; DISK_SECTOR_SIZE]>, + scratch_buffer: &'a mut Vec, bytes_to_read: usize, offset: u64, ) -> io::Result<&'a [u8]> { @@ -178,31 +201,39 @@ impl UnbufferedIoFileWindows { let offset_in_buffer = (offset % DISK_SECTOR_SIZE as u64) as usize; let desired_buffer_size = (bytes_to_read + offset_in_buffer).div_ceil(DISK_SECTOR_SIZE); if scratch_buffer.len() < desired_buffer_size { - scratch_buffer.resize(desired_buffer_size, [0; DISK_SECTOR_SIZE]); + scratch_buffer.resize_with(desired_buffer_size, AlignedSectorSize::default); } + let scratch_buffer = + AlignedSectorSize::slice_mut_to_repr(scratch_buffer).as_flattened_mut(); + // While buffer above is allocated with granularity of `MAX_DISK_SECTOR_SIZE`, reads are // done with granularity of physical sector size let offset_in_buffer = (offset % self.physical_sector_size as u64) as usize; self.file.read_exact_at( - &mut scratch_buffer.as_flattened_mut()[..(bytes_to_read + offset_in_buffer) + &mut scratch_buffer[..(bytes_to_read + offset_in_buffer) .div_ceil(self.physical_sector_size) * self.physical_sector_size], offset / self.physical_sector_size as u64 * self.physical_sector_size as u64, )?; - Ok(&scratch_buffer.as_flattened()[offset_in_buffer..][..bytes_to_read]) + Ok(&scratch_buffer[offset_in_buffer..][..bytes_to_read]) } /// Panics on writes over `MAX_READ_SIZE` (including padding on both ends) fn write_all_at_internal( &self, - scratch_buffer: &mut Vec<[u8; DISK_SECTOR_SIZE]>, + scratch_buffer: &mut Vec, bytes_to_write: &[u8], offset: u64, ) -> io::Result<()> { - // This is guaranteed by `UnbufferedIoFileWindows::open()` - assert!(scratch_buffer.as_flattened().len() >= MAX_READ_SIZE); + // This is guaranteed by constructor + assert!( + AlignedSectorSize::slice_mut_to_repr(scratch_buffer) + .as_flattened_mut() + .len() + >= MAX_READ_SIZE + ); let aligned_offset = offset / self.physical_sector_size as u64 * self.physical_sector_size as u64; @@ -212,13 +243,17 @@ impl UnbufferedIoFileWindows { * self.physical_sector_size; if padding == 0 && bytes_to_read == bytes_to_write.len() { - let scratch_buffer = &mut scratch_buffer.as_flattened_mut()[..bytes_to_read]; + let scratch_buffer = + AlignedSectorSize::slice_mut_to_repr(scratch_buffer).as_flattened_mut(); + let scratch_buffer = &mut scratch_buffer[..bytes_to_read]; scratch_buffer.copy_from_slice(bytes_to_write); self.file.write_all_at(scratch_buffer, offset)?; } else { // Read whole pages where `bytes_to_write` will be written self.read_exact_at_internal(scratch_buffer, bytes_to_read, aligned_offset)?; - let scratch_buffer = &mut scratch_buffer.as_flattened_mut()[..bytes_to_read]; + let scratch_buffer = + AlignedSectorSize::slice_mut_to_repr(scratch_buffer).as_flattened_mut(); + let scratch_buffer = &mut scratch_buffer[..bytes_to_read]; // Update contents of existing pages and write into the file scratch_buffer[padding..][..bytes_to_write.len()].copy_from_slice(bytes_to_write); self.file.write_all_at(scratch_buffer, aligned_offset)?; @@ -230,9 +265,7 @@ impl UnbufferedIoFileWindows { #[cfg(test)] mod tests { - use crate::single_disk_farm::unbuffered_io_file_windows::{ - UnbufferedIoFileWindows, MAX_READ_SIZE, - }; + use crate::single_disk_farm::direct_io_file::{DirectIoFile, MAX_READ_SIZE}; use rand::prelude::*; use std::fs; use subspace_farmer_components::file_ext::FileExt; @@ -246,7 +279,7 @@ mod tests { thread_rng().fill(data.as_mut_slice()); fs::write(&file_path, &data).unwrap(); - let mut file = UnbufferedIoFileWindows::open(&file_path).unwrap(); + let mut file = DirectIoFile::open(&file_path).unwrap(); for override_physical_sector_size in [None, Some(4096)] { if let Some(physical_sector_size) = override_physical_sector_size { diff --git a/crates/subspace-farmer/src/single_disk_farm/farming.rs b/crates/subspace-farmer/src/single_disk_farm/farming.rs index 1da957fe45..728c969288 100644 --- a/crates/subspace-farmer/src/single_disk_farm/farming.rs +++ b/crates/subspace-farmer/src/single_disk_farm/farming.rs @@ -20,9 +20,11 @@ use std::collections::HashSet; use std::sync::Arc; use std::time::Instant; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::{ - HistorySize, PosSeed, PublicKey, Record, SectorIndex, SegmentIndex, Solution, SolutionRange, -}; +use subspace_core_primitives::pieces::Record; +use subspace_core_primitives::pos::PosSeed; +use subspace_core_primitives::sectors::SectorIndex; +use subspace_core_primitives::segments::{HistorySize, SegmentIndex}; +use subspace_core_primitives::{PublicKey, Solution, SolutionRange}; use subspace_erasure_coding::ErasureCoding; use subspace_farmer_components::auditing::{audit_plot_sync, AuditingError}; use subspace_farmer_components::proving::{ProvableSolutions, ProvingError}; @@ -130,7 +132,7 @@ where ) -> Result< Vec<( SectorIndex, - impl ProvableSolutions, ProvingError>> + 'a, + impl ProvableSolutions, ProvingError>> + 'a, )>, AuditingError, > diff --git a/crates/subspace-farmer/src/single_disk_farm/metrics.rs b/crates/subspace-farmer/src/single_disk_farm/metrics.rs index 9bc2807673..f6123308c6 100644 --- a/crates/subspace-farmer/src/single_disk_farm/metrics.rs +++ b/crates/subspace-farmer/src/single_disk_farm/metrics.rs @@ -9,7 +9,7 @@ use prometheus_client::registry::{Registry, Unit}; use std::fmt; use std::sync::atomic::{AtomicI64, AtomicU64}; use std::time::Duration; -use subspace_core_primitives::SectorIndex; +use subspace_core_primitives::sectors::SectorIndex; #[derive(Debug, Copy, Clone)] pub(super) enum SectorState { diff --git a/crates/subspace-farmer/src/single_disk_farm/piece_cache.rs b/crates/subspace-farmer/src/single_disk_farm/piece_cache.rs index fb1d82434f..9a3d243b1b 100644 --- a/crates/subspace-farmer/src/single_disk_farm/piece_cache.rs +++ b/crates/subspace-farmer/src/single_disk_farm/piece_cache.rs @@ -5,7 +5,7 @@ use crate::farm; use crate::farm::{FarmError, PieceCacheId, PieceCacheOffset}; use async_trait::async_trait; use futures::{stream, Stream}; -use subspace_core_primitives::{Piece, PieceIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; /// Dedicated piece cache stored on one disk, is used both to accelerate DSN queries and to plot /// faster diff --git a/crates/subspace-farmer/src/single_disk_farm/piece_reader.rs b/crates/subspace-farmer/src/single_disk_farm/piece_reader.rs index 33bd304e77..e6a8be734b 100644 --- a/crates/subspace-farmer/src/single_disk_farm/piece_reader.rs +++ b/crates/subspace-farmer/src/single_disk_farm/piece_reader.rs @@ -1,18 +1,17 @@ //! Piece reader for single disk farm use crate::farm::{FarmError, PieceReader}; -#[cfg(windows)] -use crate::single_disk_farm::unbuffered_io_file_windows::UnbufferedIoFileWindows; +use crate::single_disk_farm::direct_io_file::DirectIoFile; use async_lock::{Mutex as AsyncMutex, RwLock as AsyncRwLock}; use async_trait::async_trait; use futures::channel::{mpsc, oneshot}; use futures::{SinkExt, StreamExt}; use std::collections::HashSet; -#[cfg(not(windows))] -use std::fs::File; use std::future::Future; use std::sync::Arc; -use subspace_core_primitives::{Piece, PieceOffset, PublicKey, SectorId, SectorIndex}; +use subspace_core_primitives::pieces::{Piece, PieceOffset}; +use subspace_core_primitives::sectors::{SectorId, SectorIndex}; +use subspace_core_primitives::PublicKey; use subspace_erasure_coding::ErasureCoding; use subspace_farmer_components::reading::ReadSectorRecordChunksMode; use subspace_farmer_components::sector::{sector_size, SectorMetadataChecksummed}; @@ -54,8 +53,7 @@ impl DiskPieceReader { pub(super) fn new( public_key: PublicKey, pieces_in_sector: u16, - #[cfg(not(windows))] plot_file: Arc, - #[cfg(windows)] plot_file: Arc, + plot_file: Arc, sectors_metadata: Arc>>, erasure_coding: ErasureCoding, sectors_being_modified: Arc>>, diff --git a/crates/subspace-farmer/src/single_disk_farm/plot_cache.rs b/crates/subspace-farmer/src/single_disk_farm/plot_cache.rs index 5d3d9e33c6..4f552dfd7f 100644 --- a/crates/subspace-farmer/src/single_disk_farm/plot_cache.rs +++ b/crates/subspace-farmer/src/single_disk_farm/plot_cache.rs @@ -4,20 +4,19 @@ mod tests; use crate::farm::{FarmError, MaybePieceStoredResult, PlotCache}; -#[cfg(windows)] -use crate::single_disk_farm::unbuffered_io_file_windows::UnbufferedIoFileWindows; +use crate::single_disk_farm::direct_io_file::DirectIoFile; use crate::utils::AsyncJoinOnDrop; use async_lock::RwLock as AsyncRwLock; use async_trait::async_trait; use bytes::BytesMut; use parking_lot::RwLock; use std::collections::HashMap; -#[cfg(not(windows))] -use std::fs::File; use std::sync::{Arc, Weak}; use std::{io, mem}; use subspace_core_primitives::crypto::blake3_hash_list; -use subspace_core_primitives::{Blake3Hash, Piece, PieceIndex, SectorIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use subspace_core_primitives::sectors::SectorIndex; +use subspace_core_primitives::Blake3Hash; use subspace_farmer_components::file_ext::FileExt; use subspace_farmer_components::sector::SectorMetadataChecksummed; use subspace_networking::libp2p::kad::RecordKey; @@ -50,10 +49,7 @@ struct CachedPieces { /// Additional piece cache that exploit part of the plot that does not contain sectors yet #[derive(Debug, Clone)] pub struct DiskPlotCache { - #[cfg(not(windows))] - file: Weak, - #[cfg(windows)] - file: Weak, + file: Weak, sectors_metadata: Weak>>, cached_pieces: Arc>, target_sector_count: SectorIndex, @@ -84,8 +80,7 @@ impl PlotCache for DiskPlotCache { impl DiskPlotCache { pub(crate) fn new( - #[cfg(not(windows))] file: &Arc, - #[cfg(windows)] file: &Arc, + file: &Arc, sectors_metadata: &Arc>>, target_sector_count: SectorIndex, sector_size: u64, @@ -144,7 +139,7 @@ impl DiskPlotCache { /// Size of a single plot cache element pub(crate) const fn element_size() -> u32 { - (PieceIndex::SIZE + Piece::SIZE + mem::size_of::()) as u32 + (PieceIndex::SIZE + Piece::SIZE + Blake3Hash::SIZE) as u32 } /// Check if piece is potentially stored in this cache (not guaranteed to be because it might be @@ -234,7 +229,7 @@ impl DiskPlotCache { file.write_all_at(&piece_index_bytes, element_offset)?; file.write_all_at(piece.as_ref(), element_offset + PieceIndex::SIZE as u64)?; file.write_all_at( - &blake3_hash_list(&[&piece_index_bytes, piece.as_ref()]), + blake3_hash_list(&[&piece_index_bytes, piece.as_ref()]).as_ref(), element_offset + PieceIndex::SIZE as u64 + Piece::SIZE as u64, ) } @@ -308,8 +303,7 @@ impl DiskPlotCache { } fn read_piece_internal( - #[cfg(not(windows))] file: &File, - #[cfg(windows)] file: &UnbufferedIoFileWindows, + file: &DirectIoFile, offset: u32, element: &mut [u8], ) -> Result, DiskPlotCacheError> { @@ -320,7 +314,7 @@ impl DiskPlotCache { // Verify checksum let actual_checksum = blake3_hash_list(&[piece_index_bytes, piece_bytes]); - if actual_checksum != expected_checksum { + if *actual_checksum != *expected_checksum { if element.iter().all(|&byte| byte == 0) { return Ok(None); } diff --git a/crates/subspace-farmer/src/single_disk_farm/plot_cache/tests.rs b/crates/subspace-farmer/src/single_disk_farm/plot_cache/tests.rs index 00b81c7868..cc877bab58 100644 --- a/crates/subspace-farmer/src/single_disk_farm/plot_cache/tests.rs +++ b/crates/subspace-farmer/src/single_disk_farm/plot_cache/tests.rs @@ -1,18 +1,20 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + use crate::farm::MaybePieceStoredResult; +use crate::single_disk_farm::direct_io_file::{DirectIoFile, DISK_SECTOR_SIZE}; use crate::single_disk_farm::plot_cache::DiskPlotCache; -#[cfg(windows)] -use crate::single_disk_farm::unbuffered_io_file_windows::UnbufferedIoFileWindows; -use crate::single_disk_farm::unbuffered_io_file_windows::DISK_SECTOR_SIZE; use rand::prelude::*; use std::assert_matches::assert_matches; -#[cfg(not(windows))] -use std::fs::OpenOptions; use std::num::NonZeroU64; use std::sync::Arc; -use subspace_core_primitives::{HistorySize, Piece, PieceIndex, Record, SectorIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex, Record}; +use subspace_core_primitives::sectors::SectorIndex; +use subspace_core_primitives::segments::HistorySize; use subspace_farmer_components::file_ext::FileExt; -#[cfg(not(windows))] -use subspace_farmer_components::file_ext::OpenOptionsExt; use subspace_farmer_components::sector::{SectorMetadata, SectorMetadataChecksummed}; use subspace_networking::libp2p::kad::RecordKey; use subspace_networking::utils::multihash::ToMultihash; @@ -31,17 +33,7 @@ async fn basic() { }); let tempdir = tempdir().unwrap(); - #[cfg(not(windows))] - let file = OpenOptions::new() - .read(true) - .write(true) - .create(true) - .advise_random_access() - .open(tempdir.path().join("plot.bin")) - .unwrap(); - - #[cfg(windows)] - let file = UnbufferedIoFileWindows::open(&tempdir.path().join("plot.bin")).unwrap(); + let file = DirectIoFile::open(&tempdir.path().join("plot.bin")).unwrap(); // Align plot file size for disk sector size file.preallocate( diff --git a/crates/subspace-farmer/src/single_disk_farm/plotted_sectors.rs b/crates/subspace-farmer/src/single_disk_farm/plotted_sectors.rs index 618fb7f89c..573a26fd14 100644 --- a/crates/subspace-farmer/src/single_disk_farm/plotted_sectors.rs +++ b/crates/subspace-farmer/src/single_disk_farm/plotted_sectors.rs @@ -3,7 +3,9 @@ use async_lock::RwLock as AsyncRwLock; use async_trait::async_trait; use futures::{stream, Stream}; use std::sync::Arc; -use subspace_core_primitives::{PieceOffset, PublicKey, SectorId}; +use subspace_core_primitives::pieces::PieceOffset; +use subspace_core_primitives::sectors::SectorId; +use subspace_core_primitives::PublicKey; use subspace_farmer_components::plotting::PlottedSector; use subspace_farmer_components::sector::SectorMetadataChecksummed; use subspace_farmer_components::FarmerProtocolInfo; diff --git a/crates/subspace-farmer/src/single_disk_farm/plotting.rs b/crates/subspace-farmer/src/single_disk_farm/plotting.rs index 1e0f7d4615..9e654b281e 100644 --- a/crates/subspace-farmer/src/single_disk_farm/plotting.rs +++ b/crates/subspace-farmer/src/single_disk_farm/plotting.rs @@ -1,9 +1,8 @@ use crate::farm::{SectorExpirationDetails, SectorPlottingDetails, SectorUpdate}; use crate::node_client::{Error as NodeClientError, NodeClient}; use crate::plotter::{Plotter, SectorPlottingProgress}; +use crate::single_disk_farm::direct_io_file::DirectIoFile; use crate::single_disk_farm::metrics::{SectorState, SingleDiskFarmMetrics}; -#[cfg(windows)] -use crate::single_disk_farm::unbuffered_io_file_windows::UnbufferedIoFileWindows; use crate::single_disk_farm::{ BackgroundTaskError, Handlers, PlotMetadataHeader, RESERVED_PLOT_METADATA, }; @@ -13,18 +12,16 @@ use futures::stream::FuturesOrdered; use futures::{select, FutureExt, SinkExt, StreamExt}; use parity_scale_codec::Encode; use std::collections::HashSet; -#[cfg(not(windows))] -use std::fs::File; use std::future::{pending, Future}; use std::io; use std::ops::Range; use std::pin::pin; use std::sync::Arc; use std::time::{Duration, Instant}; -use subspace_core_primitives::{ - Blake3Hash, HistorySize, PieceOffset, PublicKey, SectorId, SectorIndex, SegmentHeader, - SegmentIndex, -}; +use subspace_core_primitives::pieces::PieceOffset; +use subspace_core_primitives::sectors::{SectorId, SectorIndex}; +use subspace_core_primitives::segments::{HistorySize, SegmentHeader, SegmentIndex}; +use subspace_core_primitives::{Blake3Hash, PublicKey}; use subspace_farmer_components::file_ext::FileExt; use subspace_farmer_components::plotting::PlottedSector; use subspace_farmer_components::sector::SectorMetadataChecksummed; @@ -34,8 +31,6 @@ use tokio::task; use tracing::{debug, info, info_span, trace, warn, Instrument}; const FARMER_APP_INFO_RETRY_INTERVAL: Duration = Duration::from_millis(500); -/// Size of the cache of archived segments for the purposes of faster sector expiration checks. - const PLOTTING_RETRY_DELAY: Duration = Duration::from_secs(1); pub(super) struct SectorToPlot { @@ -90,14 +85,8 @@ pub(super) struct SectorPlottingOptions<'a, NC> { pub(super) node_client: &'a NC, pub(super) pieces_in_sector: u16, pub(super) sector_size: usize, - #[cfg(not(windows))] - pub(super) plot_file: Arc, - #[cfg(windows)] - pub(super) plot_file: Arc, - #[cfg(not(windows))] - pub(super) metadata_file: Arc, - #[cfg(windows)] - pub(super) metadata_file: Arc, + pub(super) plot_file: Arc, + pub(super) metadata_file: Arc, pub(super) handlers: &'a Handlers, pub(super) global_mutex: &'a AsyncMutex<()>, pub(super) plotter: Arc, @@ -176,8 +165,6 @@ where process_plotting_result( maybe_sector_plotting_result?, &mut metadata_header, - sectors_metadata, - sectors_being_modified, Arc::clone(§or_plotting_options.metadata_file) ).await?; } @@ -188,8 +175,6 @@ where process_plotting_result( maybe_sector_plotting_result?, &mut metadata_header, - sectors_metadata, - sectors_being_modified, Arc::clone(§or_plotting_options.metadata_file) ).await?; } @@ -202,31 +187,14 @@ where async fn process_plotting_result( sector_plotting_result: SectorPlottingResult, metadata_header: &mut PlotMetadataHeader, - sectors_metadata: &AsyncRwLock>, - sectors_being_modified: &AsyncRwLock>, - #[cfg(not(windows))] metadata_file: Arc, - #[cfg(windows)] metadata_file: Arc, + metadata_file: Arc, ) -> Result<(), PlottingError> { let SectorPlottingResult { sector_index, - sector_metadata, replotting, last_queued, } = sector_plotting_result; - { - let mut sectors_metadata = sectors_metadata.write().await; - // If exists then we're replotting, otherwise we create sector for the first time - if let Some(existing_sector_metadata) = sectors_metadata.get_mut(sector_index as usize) { - *existing_sector_metadata = sector_metadata; - } else { - sectors_metadata.push(sector_metadata); - } - } - - // Inform others that this sector is no longer being modified - sectors_being_modified.write().await.remove(§or_index); - if sector_index + 1 > metadata_header.plotted_sector_count { metadata_header.plotted_sector_count = sector_index + 1; @@ -270,7 +238,6 @@ enum PlotSingleSectorResult { struct SectorPlottingResult { sector_index: SectorIndex, - sector_metadata: SectorMetadataChecksummed, replotting: bool, last_queued: bool, } @@ -486,9 +453,22 @@ where .sector_update .call_simple(&(sector_index, sector_state)); + { + let mut sectors_metadata = sectors_metadata.write().await; + // If exists then we're replotting, otherwise we create sector for the first time + if let Some(existing_sector_metadata) = sectors_metadata.get_mut(sector_index as usize) + { + *existing_sector_metadata = sector_metadata; + } else { + sectors_metadata.push(sector_metadata); + } + } + + // Inform others that this sector is no longer being modified + sectors_being_modified.write().await.remove(§or_index); + Ok(SectorPlottingResult { sector_index, - sector_metadata, replotting, last_queued, }) @@ -501,10 +481,8 @@ where async fn plot_single_sector_internal( sector_index: SectorIndex, sector_size: usize, - #[cfg(not(windows))] plot_file: &Arc, - #[cfg(windows)] plot_file: &Arc, - #[cfg(not(windows))] metadata_file: &Arc, - #[cfg(windows)] metadata_file: &Arc, + plot_file: &Arc, + metadata_file: &Arc, handlers: &Handlers, sectors_being_modified: &AsyncRwLock>, global_mutex: &AsyncMutex<()>, diff --git a/crates/subspace-farmer/src/single_disk_farm/reward_signing.rs b/crates/subspace-farmer/src/single_disk_farm/reward_signing.rs index c05a155157..d9352770c2 100644 --- a/crates/subspace-farmer/src/single_disk_farm/reward_signing.rs +++ b/crates/subspace-farmer/src/single_disk_farm/reward_signing.rs @@ -21,7 +21,7 @@ where reward_signing_info_notifications.next().await { // Multiple plots might have solved, only sign with correct one - if identity.public_key().to_bytes() != public_key { + if identity.public_key().to_bytes() != *public_key { continue; } diff --git a/crates/subspace-farmer/src/utils.rs b/crates/subspace-farmer/src/utils.rs index 63c6d92610..6824504102 100644 --- a/crates/subspace-farmer/src/utils.rs +++ b/crates/subspace-farmer/src/utils.rs @@ -518,9 +518,12 @@ fn create_plotting_thread_pool_manager_thread_pool_pair( .build() } -/// Creates thread pool pairs for each of CPU core set pair with number of plotting and replotting threads corresponding -/// to number of cores in each set and pins threads to all of those CPU cores (each thread to all cors in a set, not -/// thread per core). Each thread will also have Tokio context available. +/// Create thread pools manager. +/// +/// Creates thread pool pairs for each of CPU core set pair with number of plotting and replotting +/// threads corresponding to number of cores in each set and pins threads to all of those CPU cores +/// (each thread to all cors in a set, not thread per core). Each thread will also have Tokio +/// context available. /// /// The easiest way to obtain CPUs is using [`all_cpu_cores`], but [`thread_pool_core_indices`] in case /// support for user customizations is desired. They will then have to be composed into pairs for this function. diff --git a/crates/subspace-farmer/src/utils/ss58.rs b/crates/subspace-farmer/src/utils/ss58.rs index 0d9b8a15b1..6d532ad988 100644 --- a/crates/subspace-farmer/src/utils/ss58.rs +++ b/crates/subspace-farmer/src/utils/ss58.rs @@ -22,7 +22,7 @@ use blake2::digest::typenum::U64; use blake2::digest::FixedOutput; use blake2::{Blake2b, Digest}; use ss58_registry::Ss58AddressFormat; -use subspace_core_primitives::{PublicKey, PUBLIC_KEY_LENGTH}; +use subspace_core_primitives::PublicKey; use thiserror::Error; const PREFIX: &[u8] = b"SS58PRE"; @@ -68,7 +68,7 @@ pub fn parse_ss58_reward_address(s: &str) -> Result } _ => return Err(Ss58ParsingError::InvalidPrefix), }; - if data.len() != prefix_len + PUBLIC_KEY_LENGTH + CHECKSUM_LEN { + if data.len() != prefix_len + PublicKey::SIZE + CHECKSUM_LEN { return Err(Ss58ParsingError::BadLength); } let format: Ss58AddressFormat = ident.into(); @@ -76,16 +76,15 @@ pub fn parse_ss58_reward_address(s: &str) -> Result return Err(Ss58ParsingError::FormatNotAllowed); } - let hash = ss58hash(&data[0..PUBLIC_KEY_LENGTH + prefix_len]); + let hash = ss58hash(&data[0..PublicKey::SIZE + prefix_len]); let checksum = &hash[0..CHECKSUM_LEN]; - if data[PUBLIC_KEY_LENGTH + prefix_len..PUBLIC_KEY_LENGTH + prefix_len + CHECKSUM_LEN] - != *checksum + if data[PublicKey::SIZE + prefix_len..PublicKey::SIZE + prefix_len + CHECKSUM_LEN] != *checksum { // Invalid checksum. return Err(Ss58ParsingError::InvalidChecksum); } - let bytes: [u8; PUBLIC_KEY_LENGTH] = data[prefix_len..][..PUBLIC_KEY_LENGTH] + let bytes: [u8; PublicKey::SIZE] = data[prefix_len..][..PublicKey::SIZE] .try_into() .map_err(|_| Ss58ParsingError::BadLength)?; diff --git a/crates/subspace-farmer/src/utils/tests.rs b/crates/subspace-farmer/src/utils/tests.rs index 80a9db5ea8..8feb7e6146 100644 --- a/crates/subspace-farmer/src/utils/tests.rs +++ b/crates/subspace-farmer/src/utils/tests.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + use crate::utils::{ parse_cpu_cores_sets, run_future_in_dedicated_thread, thread_pool_core_indices_internal, CpuCoreSet, diff --git a/crates/subspace-malicious-operator/Cargo.toml b/crates/subspace-malicious-operator/Cargo.toml index 9787e5e1a8..98c2f479fc 100644 --- a/crates/subspace-malicious-operator/Cargo.toml +++ b/crates/subspace-malicious-operator/Cargo.toml @@ -20,7 +20,7 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] auto-id-domain-runtime = { version = "0.1.0", path = "../../domains/runtime/auto-id" } -clap = { version = "4.5.15", features = ["derive"] } +clap = { version = "4.5.18", features = ["derive"] } cross-domain-message-gossip = { version = "0.1.0", path = "../../domains/client/cross-domain-message-gossip" } domain-client-message-relayer = { version = "0.1.0", path = "../../domains/client/relayer" } domain-client-operator = { version = "0.1.0", path = "../../domains/client/domain-operator" } @@ -28,59 +28,59 @@ domain-eth-service = { version = "0.1.0", path = "../../domains/client/eth-servi domain-service = { version = "0.1.0", path = "../../domains/service" } domain-runtime-primitives = { version = "0.1.0", path = "../../domains/primitives/runtime" } evm-domain-runtime = { version = "0.1.0", path = "../../domains/runtime/evm" } -fp-evm = { version = "3.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -futures = "0.3.29" +fp-evm = { version = "3.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +futures = "0.3.30" hex-literal = "0.4.1" log = "0.4.22" mimalloc = "0.1.43" pallet-domains = { version = "0.1.0", default-features = false, path = "../pallet-domains" } -pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } parity-scale-codec = "3.6.12" -pallet-sudo = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-chain-spec = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-cli = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-sudo = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-chain-spec = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-cli = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sc-consensus-subspace = { version = "0.1.0", path = "../sc-consensus-subspace" } sc-domains = { version = "0.1.0", path = "../sc-domains" } -sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-storage-monitor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } +sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-storage-monitor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } sc-subspace-chain-specs = { version = "0.1.0", path = "../sc-subspace-chain-specs" } -sc-tracing = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -serde_json = "1.0.124" -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } +sc-tracing = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +serde_json = "1.0.128" +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } sp-consensus-subspace = { version = "0.1.0", path = "../sp-consensus-subspace" } -sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../sp-domains" } sp-domain-digests = { version = "0.1.0", path = "../../domains/primitives/digests" } -sp-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", path = "../../domains/primitives/messenger" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-keystore = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-keyring = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-weights = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-keystore = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-keyring = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-weights = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives" } subspace-networking = { version = "0.1.0", path = "../subspace-networking" } subspace-proof-of-space = { version = "0.1.0", path = "../subspace-proof-of-space" } subspace-runtime = { version = "0.1.0", path = "../subspace-runtime" } subspace-runtime-primitives = { version = "0.1.0", path = "../subspace-runtime-primitives" } subspace-service = { version = "0.1.0", path = "../subspace-service" } -thiserror = "1.0.63" -tokio = "1.39.2" +thiserror = "1.0.64" +tokio = "1.40.0" rand = "0.8.5" tracing = "0.1.40" [build-dependencies] -substrate-build-script-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +substrate-build-script-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = [] diff --git a/crates/subspace-malicious-operator/src/chain_spec.rs b/crates/subspace-malicious-operator/src/chain_spec.rs index b90bc008d0..1cf568ba34 100644 --- a/crates/subspace-malicious-operator/src/chain_spec.rs +++ b/crates/subspace-malicious-operator/src/chain_spec.rs @@ -15,7 +15,7 @@ use std::num::NonZeroU32; use subspace_runtime::{ AllowAuthoringBy, CouncilConfig, DemocracyConfig, DomainsConfig, EnableRewardsAt, HistorySeedingConfig, MaxDomainBlockSize, MaxDomainBlockWeight, RewardsConfig, - RuntimeConfigsConfig, SubspaceConfig, VestingConfig, + RuntimeConfigsConfig, SubspaceConfig, }; use subspace_runtime_primitives::{ AccountId, Balance, BlockNumber, CouncilDemocracyConfigParams, SSC, @@ -130,7 +130,6 @@ struct GenesisParams { enable_domains: bool, enable_dynamic_cost_of_storage: bool, enable_balance_transfers: bool, - enable_non_root_calls: bool, confirmation_depth_k: u32, rewards_config: RewardsConfig, } @@ -161,7 +160,7 @@ pub fn dev_config() -> Result { .with_name("Subspace development") .with_id("subspace_dev") .with_chain_type(ChainType::Development) - .with_genesis_config(patch_domain_runtime_version( + .with_genesis_config( serde_json::to_value(subspace_genesis_config( // Sudo account get_account_id_from_seed("Alice"), @@ -172,7 +171,6 @@ pub fn dev_config() -> Result { (get_account_id_from_seed("Alice//stash"), 1_000 * SSC), (get_account_id_from_seed("Bob//stash"), 1_000 * SSC), ], - vec![], GenesisParams { enable_rewards_at: EnableRewardsAt::Manually, allow_authoring_by: AllowAuthoringBy::Anyone, @@ -180,7 +178,6 @@ pub fn dev_config() -> Result { enable_domains: true, enable_dynamic_cost_of_storage: false, enable_balance_transfers: true, - enable_non_root_calls: true, confirmation_depth_k: 5, rewards_config: RewardsConfig { remaining_issuance: 1_000_000 * SSC, @@ -198,7 +195,7 @@ pub fn dev_config() -> Result { }, )) .map_err(|error| format!("Failed to serialize genesis config: {error}"))?, - )) + ) .build()) } @@ -206,8 +203,6 @@ pub fn dev_config() -> Result { fn subspace_genesis_config( sudo_account: AccountId, balances: Vec<(AccountId, Balance)>, - // who, start, period, period_count, per_period - vesting: Vec<(AccountId, BlockNumber, BlockNumber, u32, Balance)>, genesis_params: GenesisParams, genesis_domain_params: GenesisDomainParams, ) -> subspace_runtime::RuntimeGenesisConfig { @@ -218,7 +213,6 @@ fn subspace_genesis_config( enable_domains, enable_dynamic_cost_of_storage, enable_balance_transfers, - enable_non_root_calls, confirmation_depth_k, rewards_config, } = genesis_params; @@ -238,14 +232,12 @@ fn subspace_genesis_config( phantom: PhantomData, }, rewards: rewards_config, - vesting: VestingConfig { vesting }, council: CouncilConfig::default(), democracy: DemocracyConfig::default(), runtime_configs: RuntimeConfigsConfig { enable_domains, enable_dynamic_cost_of_storage, enable_balance_transfers, - enable_non_root_calls, confirmation_depth_k, council_democracy_config_params: CouncilDemocracyConfigParams::::fast_params(), @@ -279,42 +271,3 @@ fn subspace_genesis_config( }, } } - -// TODO: Workaround for https://github.com/paritytech/polkadot-sdk/issues/4001 -fn patch_domain_runtime_version(mut genesis_config: serde_json::Value) -> serde_json::Value { - let Some(genesis_domains) = genesis_config - .get_mut("domains") - .and_then(|domains| domains.get_mut("genesisDomains")) - .and_then(|genesis_domains| genesis_domains.as_array_mut()) - else { - return genesis_config; - }; - - for genesis_domain in genesis_domains { - let Some(runtime_version) = genesis_domain.get_mut("runtime_version") else { - continue; - }; - - if let Some(spec_name) = runtime_version.get_mut("specName") { - if let Some(spec_name_bytes) = spec_name - .as_str() - .map(|spec_name| spec_name.as_bytes().to_vec()) - { - *spec_name = serde_json::to_value(spec_name_bytes) - .expect("Bytes serialization doesn't fail; qed"); - } - } - - if let Some(impl_name) = runtime_version.get_mut("implName") { - if let Some(impl_name_bytes) = impl_name - .as_str() - .map(|impl_name| impl_name.as_bytes().to_vec()) - { - *impl_name = serde_json::to_value(impl_name_bytes) - .expect("Bytes serialization doesn't fail; qed"); - } - } - } - - genesis_config -} diff --git a/crates/subspace-malicious-operator/src/lib.rs b/crates/subspace-malicious-operator/src/lib.rs index 99dd2fad54..bd860bd3f4 100644 --- a/crates/subspace-malicious-operator/src/lib.rs +++ b/crates/subspace-malicious-operator/src/lib.rs @@ -27,7 +27,9 @@ use sc_cli::{ generate_node_name, ChainSpec, CliConfiguration, Role, RunCmd as SubstrateRunCmd, RunCmd, SubstrateCli, }; -use sc_service::config::{KeystoreConfig, NetworkConfiguration}; +use sc_service::config::{ + ExecutorConfiguration, KeystoreConfig, NetworkConfiguration, RpcConfiguration, +}; use sc_service::{BasePath, BlocksPruning, Configuration, DatabaseSource}; use sp_core::crypto::{AccountId32, Ss58Codec}; use sp_domains::DomainId; @@ -199,7 +201,7 @@ pub fn create_malicious_operator_configuration( let client_id = Cli::client_id(); let node_key = domain_cli_args .node_key_params() - .map(|x| x.node_key(&net_config_dir, role.clone(), is_dev)) + .map(|x| x.node_key(&net_config_dir, role, is_dev)) .unwrap_or_else(|| Ok(Default::default()))?; let max_runtime_instances = 8; let is_validator = role.is_authority(); @@ -229,6 +231,11 @@ pub fn create_malicious_operator_configuration( *net_config_path = base_path.path().join("network"); } + let rpc_addrs: Option> = domain_cli + .run + .rpc_addr(9945)? + .map(|addrs| addrs.into_iter().map(Into::into).collect()); + Ok(Configuration { impl_name: Cli::impl_name(), impl_version: Cli::impl_version(), @@ -253,31 +260,37 @@ pub fn create_malicious_operator_configuration( .pruning_params() .map(|x| x.blocks_pruning()) .unwrap_or_else(|| Ok(BlocksPruning::KeepFinalized))?, - wasm_method: domain_cli_args - .import_params() - .map(|x| x.wasm_method()) - .unwrap_or_default(), + executor: ExecutorConfiguration { + wasm_method: domain_cli_args + .import_params() + .map(|x| x.wasm_method()) + .unwrap_or_default(), + max_runtime_instances, + default_heap_pages: domain_cli_args.default_heap_pages()?, + runtime_cache_size, + }, wasm_runtime_overrides: domain_cli_args .import_params() .map(|x| x.wasm_runtime_overrides()) .unwrap_or_default(), - rpc_addr: domain_cli_args.rpc_addr(9945)?, - rpc_methods: domain_cli_args.rpc_methods()?, - rpc_max_connections: domain_cli_args.rpc_max_connections()?, - rpc_cors: domain_cli_args.rpc_cors(is_dev)?, - rpc_max_request_size: 15, - rpc_max_response_size: 15, - rpc_id_provider: None, - rpc_max_subs_per_conn: 1024, - rpc_port: 9945, - rpc_message_buffer_capacity: domain_cli_args.rpc_buffer_capacity_per_connection()?, - rpc_batch_config: domain_cli_args.rpc_batch_config()?, - rpc_rate_limit: domain_cli_args.rpc_rate_limit()?, - rpc_rate_limit_whitelisted_ips: vec![], - rpc_rate_limit_trust_proxy_headers: false, + rpc: RpcConfiguration { + addr: rpc_addrs, + methods: domain_cli_args.rpc_methods()?, + max_connections: domain_cli_args.rpc_max_connections()?, + cors: domain_cli_args.rpc_cors(is_dev)?, + max_request_size: 15, + max_response_size: 15, + id_provider: None, + max_subs_per_conn: 1024, + port: 9945, + message_buffer_capacity: domain_cli_args.rpc_buffer_capacity_per_connection()?, + batch_config: domain_cli_args.rpc_batch_config()?, + rate_limit: domain_cli_args.rpc_rate_limit()?, + rate_limit_whitelisted_ips: vec![], + rate_limit_trust_proxy_headers: false, + }, prometheus_config: domain_cli_args.prometheus_config(9616, &chain_spec)?, telemetry_endpoints, - default_heap_pages: domain_cli_args.default_heap_pages()?, offchain_worker: domain_cli_args .offchain_worker_params() .map(|x| x.offchain_worker(&role)) @@ -288,11 +301,8 @@ pub fn create_malicious_operator_configuration( tracing_targets: domain_cli_args.shared_params().tracing_targets(), tracing_receiver: domain_cli_args.shared_params().tracing_receiver(), chain_spec, - max_runtime_instances, announce_block: domain_cli_args.announce_block()?, role, base_path, - informant_output_format: Default::default(), - runtime_cache_size, }) } diff --git a/crates/subspace-malicious-operator/src/malicious_bundle_producer.rs b/crates/subspace-malicious-operator/src/malicious_bundle_producer.rs index 95fc13df52..9a66c0a694 100644 --- a/crates/subspace-malicious-operator/src/malicious_bundle_producer.rs +++ b/crates/subspace-malicious-operator/src/malicious_bundle_producer.rs @@ -16,9 +16,7 @@ use sp_api::ProvideRuntimeApi; use sp_block_builder::BlockBuilder; use sp_blockchain::Info; use sp_consensus_slots::Slot; -use sp_consensus_subspace::FarmerPublicKey; use sp_core::crypto::UncheckedFrom; -use sp_core::Get; use sp_domains::core_api::DomainCoreApi; use sp_domains::{ BundleProducerElectionApi, DomainId, DomainsApi, OperatorId, OperatorPublicKey, @@ -32,9 +30,9 @@ use sp_runtime::{generic, RuntimeAppPublic}; use sp_transaction_pool::runtime_api::TaggedTransactionQueue; use std::error::Error; use std::sync::Arc; -use subspace_core_primitives::PotOutput; +use subspace_core_primitives::pot::PotOutput; use subspace_runtime::{ - CheckStorageAccess, DisablePallets, Runtime, RuntimeCall, SignedExtra, UncheckedExtrinsic, + CheckHistorySeeder, DisablePallets, Runtime, RuntimeCall, SignedExtra, UncheckedExtrinsic, }; use subspace_runtime_primitives::opaque::Block as CBlock; use subspace_runtime_primitives::{AccountId, Balance, Nonce}; @@ -413,12 +411,10 @@ pub fn construct_signed_extrinsic( caller: AccountId, nonce: Nonce, ) -> Result> { - let period = u64::from(<::BlockHashCount as Get< - u32, - >>::get()) - .checked_next_power_of_two() - .map(|c| c / 2) - .unwrap_or(2); + let period = u64::from(<::BlockHashCount>::get()) + .checked_next_power_of_two() + .map(|c| c / 2) + .unwrap_or(2); let extra: SignedExtra = ( frame_system::CheckNonZeroSender::::new(), frame_system::CheckSpecVersion::::new(), @@ -431,8 +427,8 @@ pub fn construct_signed_extrinsic( frame_system::CheckNonce::::from(nonce), frame_system::CheckWeight::::new(), pallet_transaction_payment::ChargeTransactionPayment::::from(0u128), - CheckStorageAccess, DisablePallets, + CheckHistorySeeder::::new(), ); let raw_payload = generic::SignedPayload::::from_raw( call.clone(), @@ -461,7 +457,7 @@ pub fn construct_signed_extrinsic( raw_payload .using_encoded(|e| { consensus_keystore - .sr25519_sign(FarmerPublicKey::ID, &public_key, e) + .sr25519_sign(OperatorPublicKey::ID, &public_key, e) })? .ok_or(format!( "Failed to sign extrinsic, sudo key pair missing from keystore?, public_key {:?}", diff --git a/crates/subspace-networking/Cargo.toml b/crates/subspace-networking/Cargo.toml index 1aef93391f..4e92c6f9d3 100644 --- a/crates/subspace-networking/Cargo.toml +++ b/crates/subspace-networking/Cargo.toml @@ -17,19 +17,19 @@ include = [ [dependencies] async-mutex = "1.4.0" -async-trait = "0.1.81" +async-trait = "0.1.83" backoff = { version = "0.4.0", features = ["futures", "tokio"] } -bytes = "1.7.1" -clap = { version = "4.5.15", features = ["color", "derive"] } +bytes = "1.7.2" +clap = { version = "4.5.18", features = ["color", "derive"] } derive_more = { version = "1.0.0", features = ["full"] } either = "1.13.0" event-listener-primitives = "2.0.1" # TODO: Switch to fs4 once https://github.com/al8n/fs4-rs/issues/15 is resolved fs2 = "0.4.3" -futures = "0.3.29" +futures = "0.3.30" futures-timer = "3.0.3" hex = "0.4.3" -memmap2 = "0.9.4" +memmap2 = "0.9.5" nohash-hasher = "0.2.0" parity-scale-codec = "3.6.12" parking_lot = "0.12.2" @@ -37,19 +37,19 @@ pin-project = "1.1.5" prometheus-client = "0.22.3" rand = "0.8.5" schnellru = "0.2.3" -serde = { version = "1.0.206", features = ["derive"] } -serde_json = "1.0.124" +serde = { version = "1.0.110", features = ["derive"] } +serde_json = "1.0.128" subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives" } subspace-metrics = { version = "0.1.0", path = "../../shared/subspace-metrics" } -thiserror = "1.0.63" -tokio = { version = "1.39.2", features = ["macros", "parking_lot", "rt-multi-thread", "signal", "sync", "time"] } +thiserror = "1.0.64" +tokio = { version = "1.40.0", features = ["macros", "parking_lot", "rt-multi-thread", "signal", "sync", "time"] } tracing = "0.1.40" tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } unsigned-varint = { version = "0.8.0", features = ["futures", "asynchronous_codec"] } void = "1.0.2" [dependencies.libp2p] -version = "0.54.0" +version = "0.54.1" default-features = false features = [ "autonat", diff --git a/crates/subspace-networking/examples/benchmark.rs b/crates/subspace-networking/examples/benchmark.rs index 68c4f36bec..4b28620176 100644 --- a/crates/subspace-networking/examples/benchmark.rs +++ b/crates/subspace-networking/examples/benchmark.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + use backoff::future::retry; use backoff::ExponentialBackoff; use clap::Parser; @@ -13,7 +19,7 @@ use std::error::Error; use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::Arc; use std::time::{Duration, Instant}; -use subspace_core_primitives::{Piece, PieceIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; use subspace_networking::utils::piece_provider::{NoPieceValidator, PieceProvider, PieceValidator}; use subspace_networking::{Config, Node, PieceByIndexRequestHandler}; use tokio::sync::Semaphore; @@ -82,7 +88,7 @@ where #[derive(Debug, Parser)] struct Args { /// Multiaddresses of bootstrap nodes to connect to on startup, multiple are supported - #[arg(long, alias = "bootstrap-node", required = true)] + #[arg(long = "bootstrap-node", required = true)] bootstrap_nodes: Vec, /// Determines whether we allow keeping non-global (private, shared, loopback..) addresses in Kademlia DHT. #[arg(long, default_value_t = false)] diff --git a/crates/subspace-networking/examples/get-peers.rs b/crates/subspace-networking/examples/get-peers.rs index acf345bfe1..94bf3304f4 100644 --- a/crates/subspace-networking/examples/get-peers.rs +++ b/crates/subspace-networking/examples/get-peers.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + use futures::channel::oneshot; use futures::StreamExt; use libp2p::multiaddr::Protocol; diff --git a/crates/subspace-networking/examples/metrics.rs b/crates/subspace-networking/examples/metrics.rs index 51abd409bb..12c09999f6 100644 --- a/crates/subspace-networking/examples/metrics.rs +++ b/crates/subspace-networking/examples/metrics.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + use futures::channel::oneshot; use futures::{select, FutureExt, StreamExt}; use libp2p::metrics::Metrics; diff --git a/crates/subspace-networking/examples/networking.rs b/crates/subspace-networking/examples/networking.rs index 08fc896b41..75ea739212 100644 --- a/crates/subspace-networking/examples/networking.rs +++ b/crates/subspace-networking/examples/networking.rs @@ -1,3 +1,8 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] #![feature(type_changing_struct_update)] use futures::channel::oneshot; diff --git a/crates/subspace-networking/examples/random-walker.rs b/crates/subspace-networking/examples/random-walker.rs index 7a5a51259c..ff829853ff 100644 --- a/crates/subspace-networking/examples/random-walker.rs +++ b/crates/subspace-networking/examples/random-walker.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + use clap::Parser; use futures::channel::oneshot; use futures::future::pending; @@ -9,7 +15,7 @@ use parking_lot::Mutex; use std::collections::HashMap; use std::sync::Arc; use std::time::{Duration, Instant}; -use subspace_core_primitives::PieceIndex; +use subspace_core_primitives::pieces::PieceIndex; use subspace_networking::{ Config, Multihash, Node, PeerDiscovered, PieceByIndexRequest, PieceByIndexRequestHandler, PieceByIndexResponse, SendRequestError, @@ -22,7 +28,7 @@ use tracing_subscriber::EnvFilter; #[derive(Debug, Parser)] struct Args { /// Multiaddresses of bootstrap nodes to connect to on startup, multiple are supported - #[arg(long, alias = "bootstrap-node", required = true)] + #[arg(long = "bootstrap-node", required = true)] bootstrap_nodes: Vec, /// Determines whether we allow keeping non-global (private, shared, loopback..) addresses in Kademlia DHT. #[arg(long, default_value_t = false)] diff --git a/crates/subspace-networking/examples/requests.rs b/crates/subspace-networking/examples/requests.rs index 75efd4b328..5f40a9d32c 100644 --- a/crates/subspace-networking/examples/requests.rs +++ b/crates/subspace-networking/examples/requests.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + use futures::channel::oneshot; use libp2p::multiaddr::Protocol; use parity_scale_codec::{Decode, Encode}; diff --git a/crates/subspace-networking/src/behavior/persistent_parameters.rs b/crates/subspace-networking/src/behavior/persistent_parameters.rs index 5be1f9c7c3..19b49a8479 100644 --- a/crates/subspace-networking/src/behavior/persistent_parameters.rs +++ b/crates/subspace-networking/src/behavior/persistent_parameters.rs @@ -176,8 +176,8 @@ impl KnownPeersSlots { let (encoded_bytes, remaining_bytes) = self.a.split_at_mut(known_peers_bytes.len()); encoded_bytes.copy_from_slice(&known_peers_bytes); // Write checksum - remaining_bytes[..mem::size_of::()] - .copy_from_slice(&blake3_hash(&known_peers_bytes)); + remaining_bytes[..Blake3Hash::SIZE] + .copy_from_slice(blake3_hash(&known_peers_bytes).as_ref()); if let Err(error) = self.a.flush() { warn!(%error, "Failed to flush known peers to disk"); } @@ -362,7 +362,7 @@ impl KnownPeersManager { let (encoded_bytes, remaining_bytes) = known_addresses_bytes.split_at(known_addresses.encoded_size()); - if remaining_bytes.len() < mem::size_of::() { + if remaining_bytes.len() < Blake3Hash::SIZE { debug!( remaining_bytes = %remaining_bytes.len(), "Not enough bytes to decode checksum, file was likely corrupted" @@ -372,8 +372,8 @@ impl KnownPeersManager { // Verify checksum let actual_checksum = blake3_hash(encoded_bytes); - let expected_checksum = &remaining_bytes[..mem::size_of::()]; - if actual_checksum != expected_checksum { + let expected_checksum = &remaining_bytes[..Blake3Hash::SIZE]; + if *actual_checksum != *expected_checksum { debug!( encoded_bytes_len = %encoded_bytes.len(), actual_checksum = %hex::encode(actual_checksum), @@ -521,7 +521,7 @@ impl KnownPeersManager { mem::size_of::() + Compact::compact_len(&(cache_size)) + Self::single_peer_encoded_size() * cache_size as usize - + mem::size_of::() + + Blake3Hash::SIZE } fn persistent_enabled(&self) -> bool { diff --git a/crates/subspace-networking/src/behavior/tests.rs b/crates/subspace-networking/src/behavior/tests.rs index 827ab67b6e..294b0d7b30 100644 --- a/crates/subspace-networking/src/behavior/tests.rs +++ b/crates/subspace-networking/src/behavior/tests.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + use super::persistent_parameters::remove_known_peer_addresses_internal; use crate::behavior::persistent_parameters::{append_p2p_suffix, remove_p2p_suffix}; use crate::{ diff --git a/crates/subspace-networking/src/bin/subspace-bootstrap-node/main.rs b/crates/subspace-networking/src/bin/subspace-bootstrap-node/main.rs index cc3ae8d964..997e144e95 100644 --- a/crates/subspace-networking/src/bin/subspace-bootstrap-node/main.rs +++ b/crates/subspace-networking/src/bin/subspace-bootstrap-node/main.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + //! Simple bootstrap node implementation #![feature(const_option, type_changing_struct_update)] @@ -30,7 +36,7 @@ enum Command { /// Start bootstrap node Start { /// Multiaddresses of bootstrap nodes to connect to on startup, multiple are supported - #[arg(long, alias = "bootstrap-node")] + #[arg(long = "bootstrap-node")] bootstrap_nodes: Vec, /// Keypair for node identity, can be obtained with `generate-keypair` command #[clap(long)] @@ -44,7 +50,7 @@ enum Command { ])] listen_on: Vec, /// Multiaddresses of reserved peers to maintain connections to, multiple are supported - #[arg(long, alias = "reserved-peer")] + #[arg(long = "reserved-peer")] reserved_peers: Vec, /// Defines max established incoming connections limit for the peer. #[arg(long, default_value_t = 300)] @@ -66,7 +72,7 @@ enum Command { #[arg(long)] protocol_version: String, /// Known external addresses - #[arg(long, alias = "external-address")] + #[arg(long = "external-address")] external_addresses: Vec, /// Defines endpoints for the prometheus metrics server. It doesn't start without at least /// one specified endpoint. Format: 127.0.0.1:8080 diff --git a/crates/subspace-networking/src/constructor.rs b/crates/subspace-networking/src/constructor.rs index 3e9df612fc..66b91b052f 100644 --- a/crates/subspace-networking/src/constructor.rs +++ b/crates/subspace-networking/src/constructor.rs @@ -38,7 +38,8 @@ use std::iter::Empty; use std::sync::Arc; use std::time::{Duration, Instant}; use std::{fmt, io, iter}; -use subspace_core_primitives::{crypto, Piece}; +use subspace_core_primitives::crypto; +use subspace_core_primitives::pieces::Piece; use thiserror::Error; use tracing::{debug, error, info}; @@ -137,8 +138,14 @@ impl RecordStore for LocalOnlyRecordStore = Empty> where Self: 'a; - type ProvidedIter<'a> = Empty> where Self: 'a; + type RecordsIter<'a> + = Empty> + where + Self: 'a; + type ProvidedIter<'a> + = Empty> + where + Self: 'a; fn get(&self, _key: &RecordKey) -> Option> { // Not supported @@ -309,7 +316,7 @@ where .validation_mode(ValidationMode::None) // To content-address message, we can take the hash of message and use it as an ID. .message_id_fn(|message: &GossipsubMessage| { - MessageId::from(crypto::blake3_hash(&message.data)) + MessageId::from(*crypto::blake3_hash(&message.data)) }) .max_transmit_size(2 * 1024 * 1024) // 2MB .build() diff --git a/crates/subspace-networking/src/constructor/transport.rs b/crates/subspace-networking/src/constructor/transport.rs index 4c847c4c78..a5ffa4d109 100644 --- a/crates/subspace-networking/src/constructor/transport.rs +++ b/crates/subspace-networking/src/constructor/transport.rs @@ -28,9 +28,9 @@ pub(super) fn build_transport( let tcp_config = GenTcpConfig::default().nodelay(true); CustomTransportWrapper::new( - TokioTcpTransport::new(tcp_config.clone()), + TokioTcpTransport::new(tcp_config), allow_non_global_addresses_in_dht, - temporary_bans.clone(), + temporary_bans, ) }; diff --git a/crates/subspace-networking/src/protocols/request_response/handlers/piece_by_index.rs b/crates/subspace-networking/src/protocols/request_response/handlers/piece_by_index.rs index 38f330b92f..6580574daa 100644 --- a/crates/subspace-networking/src/protocols/request_response/handlers/piece_by_index.rs +++ b/crates/subspace-networking/src/protocols/request_response/handlers/piece_by_index.rs @@ -5,7 +5,7 @@ use super::generic_request_handler::{GenericRequest, GenericRequestHandler}; use parity_scale_codec::{Decode, Encode}; -use subspace_core_primitives::{Piece, PieceIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; /// Piece-by-hash protocol request. #[derive(Debug, Clone, Copy, Eq, PartialEq, Encode, Decode)] diff --git a/crates/subspace-networking/src/protocols/request_response/handlers/segment_header.rs b/crates/subspace-networking/src/protocols/request_response/handlers/segment_header.rs index 7bb2c603d2..717ba5333b 100644 --- a/crates/subspace-networking/src/protocols/request_response/handlers/segment_header.rs +++ b/crates/subspace-networking/src/protocols/request_response/handlers/segment_header.rs @@ -5,7 +5,7 @@ use super::generic_request_handler::{GenericRequest, GenericRequestHandler}; use parity_scale_codec::{Decode, Encode}; -use subspace_core_primitives::{SegmentHeader, SegmentIndex}; +use subspace_core_primitives::segments::{SegmentHeader, SegmentIndex}; /// Segment header by segment indexes protocol request. #[derive(Debug, Clone, Eq, PartialEq, Encode, Decode)] @@ -15,13 +15,10 @@ pub enum SegmentHeaderRequest { /// Segment indexes to get. segment_indexes: Vec, }, - // TODO: Should this be changed to return segments in normal order once we can introduce - // breaking changes? - /// Defines how many segment headers to return, segments will be in reverse order. + /// Defines how many segment headers to return, segments will be in ascending order. LastSegmentHeaders { /// Number of segment headers to return. - // TODO: Replace u64 with a smaller type when able to make breaking changes - segment_header_number: u64, + limit: u32, }, } diff --git a/crates/subspace-networking/src/protocols/request_response/request_response_factory/tests.rs b/crates/subspace-networking/src/protocols/request_response/request_response_factory/tests.rs index 05395cd666..bce255b744 100644 --- a/crates/subspace-networking/src/protocols/request_response/request_response_factory/tests.rs +++ b/crates/subspace-networking/src/protocols/request_response/request_response_factory/tests.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + use crate::protocols::request_response::request_response_factory::{ Event, IfDisconnected, IncomingRequest, OutboundFailure, OutgoingResponse, ProtocolConfig, RequestFailure, RequestHandler, RequestResponseFactoryBehaviour, diff --git a/crates/subspace-networking/src/protocols/reserved_peers/tests.rs b/crates/subspace-networking/src/protocols/reserved_peers/tests.rs index f4cb698859..20ac649f1e 100644 --- a/crates/subspace-networking/src/protocols/reserved_peers/tests.rs +++ b/crates/subspace-networking/src/protocols/reserved_peers/tests.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + use crate::protocols::reserved_peers::{Behaviour, Config}; use futures::{select, FutureExt}; use libp2p::core::transport::MemoryTransport; diff --git a/crates/subspace-networking/src/utils/multihash.rs b/crates/subspace-networking/src/utils/multihash.rs index f342444c3d..7315b53478 100644 --- a/crates/subspace-networking/src/utils/multihash.rs +++ b/crates/subspace-networking/src/utils/multihash.rs @@ -1,7 +1,7 @@ //! Defines multihash codes for Subspace DSN. use std::error::Error; -use subspace_core_primitives::PieceIndex; +use subspace_core_primitives::pieces::PieceIndex; /// Type alias for libp2p Multihash. Constant 64 was copied from libp2p protocols. pub type Multihash = libp2p::multihash::Multihash<64>; diff --git a/crates/subspace-networking/src/utils/piece_provider.rs b/crates/subspace-networking/src/utils/piece_provider.rs index 849b58b451..06679a51d6 100644 --- a/crates/subspace-networking/src/utils/piece_provider.rs +++ b/crates/subspace-networking/src/utils/piece_provider.rs @@ -8,7 +8,7 @@ use libp2p::kad::RecordKey; use libp2p::PeerId; use std::collections::HashSet; use std::fmt; -use subspace_core_primitives::{Piece, PieceIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; use tracing::{debug, trace, warn}; /// Validates piece against using its commitment. diff --git a/crates/subspace-node/Cargo.toml b/crates/subspace-node/Cargo.toml index 7de4242b41..0248521aaf 100644 --- a/crates/subspace-node/Cargo.toml +++ b/crates/subspace-node/Cargo.toml @@ -22,7 +22,7 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] auto-id-domain-runtime = { version = "0.1.0", path = "../../domains/runtime/auto-id" } bip39 = { version = "2.0.0", features = ["rand"] } -clap = { version = "4.5.15", features = ["derive"] } +clap = { version = "4.5.18", features = ["derive"] } cross-domain-message-gossip = { version = "0.1.0", path = "../../domains/client/cross-domain-message-gossip" } dirs = "5.0.1" domain-client-message-relayer = { version = "0.1.0", path = "../../domains/client/relayer" } @@ -32,44 +32,43 @@ domain-service = { version = "0.1.0", path = "../../domains/service" } domain-runtime-primitives = { version = "0.1.0", path = "../../domains/primitives/runtime" } evm-domain-runtime = { version = "0.1.0", path = "../../domains/runtime/evm" } fdlimit = "0.3.0" -fp-evm = { version = "3.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -frame-benchmarking = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -frame-benchmarking-cli = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -frame-support = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -futures = "0.3.29" +fp-evm = { version = "3.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +frame-benchmarking = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +frame-benchmarking-cli = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +frame-support = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +futures = "0.3.30" hex = "0.4.3" hex-literal = "0.4.1" mimalloc = "0.1.43" parity-scale-codec = "3.6.12" prometheus-client = "0.22.3" -sc-chain-spec = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-cli = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-chain-spec = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-cli = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sc-consensus-subspace = { version = "0.1.0", path = "../sc-consensus-subspace" } sc-domains = { version = "0.1.0", path = "../sc-domains" } -sc-informant = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-keystore = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-keystore = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sc-proof-of-time = { version = "0.1.0", path = "../sc-proof-of-time" } sc-subspace-chain-specs = { version = "0.1.0", path = "../sc-subspace-chain-specs" } -sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-storage-monitor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-telemetry = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -serde_json = "1.0.124" -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-storage-monitor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-telemetry = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +serde_json = "1.0.128" +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-consensus-subspace = { version = "0.1.0", path = "../sp-consensus-subspace" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../sp-domains" } sp-domain-digests = { version = "0.1.0", path = "../../domains/primitives/digests" } sp-domains-fraud-proof = { version = "0.1.0", path = "../sp-domains-fraud-proof" } -sp-keystore = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-keystore = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", path = "../../domains/primitives/messenger" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives" } subspace-metrics = { version = "0.1.0", path = "../../shared/subspace-metrics" } subspace-networking = { version = "0.1.0", path = "../subspace-networking" } @@ -77,17 +76,17 @@ subspace-proof-of-space = { version = "0.1.0", path = "../subspace-proof-of-spac subspace-runtime = { version = "0.1.0", path = "../subspace-runtime" } subspace-runtime-primitives = { version = "0.1.0", path = "../subspace-runtime-primitives" } subspace-service = { version = "0.1.0", path = "../subspace-service" } -substrate-prometheus-endpoint = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -supports-color = "3.0.0" -tempfile = "3.12.0" -thiserror = "1.0.63" -tokio = { version = "1.39.2", features = ["macros"] } -tokio-stream = { version = "0.1.15" } +substrate-prometheus-endpoint = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +supports-color = "3.0.1" +tempfile = "3.13.0" +thiserror = "1.0.64" +tokio = { version = "1.40.0", features = ["macros"] } +tokio-stream = { version = "0.1.16" } tracing = "0.1.40" tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } [build-dependencies] -substrate-build-script-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +substrate-build-script-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = [] diff --git a/crates/subspace-node/src/chain_spec.rs b/crates/subspace-node/src/chain_spec.rs index 58f0ba4767..5a334d9738 100644 --- a/crates/subspace-node/src/chain_spec.rs +++ b/crates/subspace-node/src/chain_spec.rs @@ -22,75 +22,27 @@ use crate::domain::cli::{GenesisDomain, SpecId}; use crate::domain::evm_chain_spec::{self}; use sc_chain_spec::GenericChainSpec; use sc_service::ChainType; -use sc_subspace_chain_specs::{DEVNET_CHAIN_SPEC, GEMINI_3H_CHAIN_SPEC}; +use sc_subspace_chain_specs::DEVNET_CHAIN_SPEC; use sc_telemetry::TelemetryEndpoints; -use sp_consensus_subspace::FarmerPublicKey; -use sp_core::crypto::{Ss58Codec, UncheckedFrom}; +use sp_core::crypto::Ss58Codec; use sp_domains::PermissionedActionAllowedBy; -use sp_runtime::Percent; +use sp_runtime::{BoundedVec, Percent}; use std::marker::PhantomData; use std::num::NonZeroU32; -use subspace_core_primitives::PotKey; +use subspace_core_primitives::pot::PotKey; +use subspace_core_primitives::PublicKey; use subspace_runtime::{ AllowAuthoringBy, BalancesConfig, CouncilConfig, DemocracyConfig, DomainsConfig, - EnableRewardsAt, HistorySeedingConfig, MaxDomainBlockSize, MaxDomainBlockWeight, RewardsConfig, - RuntimeConfigsConfig, RuntimeGenesisConfig, SubspaceConfig, SudoConfig, SystemConfig, - VestingConfig, WASM_BINARY, + EnableRewardsAt, HistorySeedingConfig, MaxDomainBlockSize, MaxDomainBlockWeight, RewardPoint, + RewardsConfig, RuntimeConfigsConfig, RuntimeGenesisConfig, SubspaceConfig, SudoConfig, + SystemConfig, WASM_BINARY, }; -use subspace_runtime_primitives::time::MILLISECS_PER_BLOCK; use subspace_runtime_primitives::{ AccountId, Balance, BlockNumber, CouncilDemocracyConfigParams, SSC, }; const SUBSPACE_TELEMETRY_URL: &str = "wss://telemetry.subspace.network/submit/"; -/// List of accounts which should receive token grants, amounts are specified in SSC. -const TOKEN_GRANTS: &[(&str, u128)] = &[ - ( - "5Dns1SVEeDqnbSm2fVUqHJPCvQFXHVsgiw28uMBwmuaoKFYi", - 2_000_000, - ), - ( - "5DxtHHQL9JGapWCQARYUAWj4yDcwuhg9Hsk5AjhEzuzonVyE", - 1_000_000, - ), - ("5EHhw9xuQNdwieUkNoucq2YcateoMVJQdN8EZtmRy3roQkVK", 69_427), - ("5GBWVfJ253YWVPHzWDTos1nzYZpa9TemP7FpQT9RnxaFN6Sz", 167_708), - ("5F9tEPid88uAuGbjpyegwkrGdkXXtaQ9sGSWEnYrfVCUCsen", 111_111), - ("5DkJFCv3cTBsH5y1eFT94DXMxQ3EmVzYojEA88o56mmTKnMp", 244_444), - ("5G23o1yxWgVNQJuL4Y9UaCftAFvLuMPCRe7BCARxCohjoHc9", 174_994), - ("5D9pNnGCiZ9UqhBQn5n71WFVaRLvZ7znsMvcZ7PHno4zsiYa", 337_500), - ("5H2Kq1qWrisf7aXUvdGrQB9j9zhiGt6MdaGSSBpFCwynBT9p", 13_834), - ("5Ci12WM1YqPjSAMNubucNejuSqwChfRSKDpFfFhtshomNSG1", 250_000), - ("5FAS1mdyp1yomAzJaJ74ZgJbzicQmZ8ajRyxPZ2x4wseGkY2", 104_175), - ("5E4vk2Ant4y6KiKoGMezrhhFwSanspjh8Fxa9HmWmjWrFyry", 66_700), - ("5GsCx12U1zMu7bMZHXjb1rhMFR8YK9VUj6hQHWyaw1ReYt8D", 33_333), - ("5F72mz79TjkWQEjuefPCMabFarGVLvW4haPTYsrzewxrbuD7", 12_222), - ("5Fn9BF7pyiefhAwanXFyW4T5sXNQGJ9kzLAR1DpF8iYmc7aw", 6_667), - ("5CdMyLvrxdTNTVZYAgN9NCQbNmwYW32vojsBZZfkEcxYbjUR", 33_333), - ("5Fgjk1nMYCEcoP9QvjMDVzDjBzJfo5X2ZssSbWn5PesfyPJh", 100_000), - ("5CUutLkRAMr14dsqFzRFgByD6gv9U8iqL67CZ7huxXtoXKdB", 22_222), - ("5EqPLjjBob7Y6FCUMKMPfgQyb2BZ8y2CcNVQrZ5wSF3aDpTX", 3_333), - ("5HKZUKYjQQ8H47z1HchLgLWZ8EfguFDDqh2KJqxBLoUggtCp", 9_167), - ("5D7E29Ut5P5RDczpakVSVvTV3vEh6v5B3oofEzcJ2xKUks78", 12_473), - ("5DRUS33oYrkPjM8SpLDKPiNG8R4sHvvZ8R2QZTcSgSCByjyR", 17_778), - ("5H6d5Wh5tmbrksPbHyoaonYCF7u71YuBRL7e8a8mHsphxxbT", 10_417), - ("5CXYUjQv42aYhbdCL98QgKP82RyxPGEvHJZw9yBEJ5CE53um", 100_000), - ("5FsxXZCHHcRUhek6whnEMkgXuumeWVVn8SFeUVhGNGdKzq6e", 9_583), - ("5GhHwuJoK1b7uUg5oi8qUXxWHdfgzv6P5CQSdJ3ffrnPRgKM", 567_378), - ("5DydwBX2uLjnVKjg1zAWS3z27ukbr99PiXteQSg96bb1k6p7", 190_000), - ("5FND87MkPEVvwMP3sq88n1MFxHuLDrHkBdCNeuc23ibjHME4", 288_889), - ("5G4BCrTj6xZHkTwFtPmK4sjNEXc8w12ZjLLU8awsb5CDBz4d", 260_000), - ("5GW7F86K47JArVGB5eSoUHoA9WADAxwts7P9yicAmQnf6cmK", 137_500), - ("5DXfPcXUcP4BG8LBSkJDrfFNApxjWySR6ARfgh3v27hdYr5S", 440_000), - ("5CXSdDJgzRTj54f9raHN2Z5BNPSMa2ETjqCTUmpaw3ECmwm4", 330_000), - ("5DqKxL7bQregQmUfFgzTMfRKY4DSvA1KgHuurZWYmxYSCmjY", 200_000), - ("5CfixiS93yTwHQbzzfn8P2tMxhKXdTx7Jam9htsD7XtiMFtn", 27_800), - ("5FZe9YzXeEXe7sK5xLR8yCmbU8bPJDTZpNpNbToKvSJBUiEo", 18_067), - ("5FZwEgsvZz1vpeH7UsskmNmTpbfXvAcojjgVfShgbRqgC1nx", 27_800), - ("5EqBwtqrCV427xCtTsxnb9X2Qay39pYmKNk9wD9Kd62jLS97", 75_000), -]; - /// Additional subspace specific genesis parameters. struct GenesisParams { enable_rewards_at: EnableRewardsAt, @@ -99,7 +51,6 @@ struct GenesisParams { enable_domains: bool, enable_dynamic_cost_of_storage: bool, enable_balance_transfers: bool, - enable_non_root_calls: bool, confirmation_depth_k: u32, rewards_config: RewardsConfig, } @@ -136,95 +87,144 @@ pub fn gemini_3h_compiled() -> Result { AccountId::from_ss58check("5DNwQTHfARgKoa2NdiUM51ZUow7ve5xG9S2yYdSbVQcnYxBA") .expect("Wrong root account address"); - let mut balances = vec![(sudo_account.clone(), 1_000 * SSC)]; - let vesting_schedules = TOKEN_GRANTS - .iter() - .flat_map(|&(account_address, amount)| { - let account_id = AccountId::from_ss58check(account_address) - .expect("Wrong vesting account address"); - let amount: Balance = amount * SSC; - - // TODO: Adjust start block to real value before mainnet launch - let start_block = 100_000_000; - let one_month_in_blocks = - u32::try_from(3600 * 24 * 30 * MILLISECS_PER_BLOCK / 1000) - .expect("One month of blocks always fits in u32; qed"); - - // Add balance so it can be locked - balances.push((account_id.clone(), amount)); - - [ - // 1/4 of tokens are released after 1 year. - ( - account_id.clone(), - start_block, - one_month_in_blocks * 12, - 1, - amount / 4, - ), - // 1/48 of tokens are released every month after that for 3 more years. - ( - account_id, - start_block + one_month_in_blocks * 12, - one_month_in_blocks, - 36, - amount / 48, - ), - ] - }) - .collect::>(); - patch_domain_runtime_version( - serde_json::to_value(subspace_genesis_config( - sudo_account.clone(), - balances, - vesting_schedules, - GenesisParams { - enable_rewards_at: EnableRewardsAt::Manually, - allow_authoring_by: AllowAuthoringBy::RootFarmer( - FarmerPublicKey::unchecked_from(hex_literal::hex!( - "8aecbcf0b404590ddddc01ebacb205a562d12fdb5c2aa6a4035c1a20f23c9515" - )), + let balances = vec![(sudo_account.clone(), 1_000 * SSC)]; + serde_json::to_value(subspace_genesis_config( + sudo_account.clone(), + balances, + GenesisParams { + enable_rewards_at: EnableRewardsAt::Manually, + allow_authoring_by: AllowAuthoringBy::RootFarmer(PublicKey::from( + hex_literal::hex!( + "8aecbcf0b404590ddddc01ebacb205a562d12fdb5c2aa6a4035c1a20f23c9515" ), - // TODO: Adjust once we bench PoT on faster hardware - // About 1s on 6.0 GHz Raptor Lake CPU (14900K) - pot_slot_iterations: NonZeroU32::new(200_032_000).expect("Not zero; qed"), - enable_domains: false, - enable_dynamic_cost_of_storage: false, - enable_balance_transfers: true, - enable_non_root_calls: false, - // TODO: Proper value here - confirmation_depth_k: 100, - // TODO: Proper value here - rewards_config: RewardsConfig { - remaining_issuance: 1_000_000_000 * SSC, - proposer_subsidy_points: Default::default(), - voter_subsidy_points: Default::default(), - }, - }, - GenesisDomainParams { - permissioned_action_allowed_by: PermissionedActionAllowedBy::Accounts(vec![ - sudo_account.clone(), - ]), - genesis_domains: vec![ - evm_chain_spec::get_genesis_domain(SpecId::Gemini, sudo_account.clone())?, - auto_id_chain_spec::get_genesis_domain( - SpecId::Gemini, - sudo_account.clone(), - )?, - ], - }, - CouncilDemocracyConfigParams::::production_params(), + )), + // TODO: Adjust once we bench PoT on faster hardware + // About 1s on 6.0 GHz Raptor Lake CPU (14900K) + pot_slot_iterations: NonZeroU32::new(200_032_000).expect("Not zero; qed"), + enable_domains: false, + enable_dynamic_cost_of_storage: false, + enable_balance_transfers: true, // TODO: Proper value here - sudo_account.clone(), - )?) - .map_err(|error| format!("Failed to serialize genesis config: {error}"))?, - ) + confirmation_depth_k: 100, + // TODO: Proper value here + rewards_config: RewardsConfig { + remaining_issuance: 360_000_000 * SSC, + proposer_subsidy_points: BoundedVec::try_from(vec![ + RewardPoint { + block: 0, + subsidy: 454545454545455000, + }, + RewardPoint { + block: 10512000, + subsidy: 423672207997007000, + }, + RewardPoint { + block: 26280000, + subsidy: 333635878252228000, + }, + RewardPoint { + block: 42048000, + subsidy: 262825353875519000, + }, + RewardPoint { + block: 57816000, + subsidy: 207116053874914000, + }, + RewardPoint { + block: 73584000, + subsidy: 163272262877830000, + }, + RewardPoint { + block: 94608000, + subsidy: 118963574070561000, + }, + RewardPoint { + block: 120888000, + subsidy: 80153245846642200, + }, + RewardPoint { + block: 149796000, + subsidy: 51971522998131200, + }, + RewardPoint { + block: 183960000, + subsidy: 31192714495359900, + }, + RewardPoint { + block: 220752000, + subsidy: 18033114698427300, + }, + ]) + .expect("Number of elements is below configured MaxRewardPoints; qed"), + voter_subsidy_points: BoundedVec::try_from(vec![ + RewardPoint { + block: 0, + subsidy: 454545454545455000, + }, + RewardPoint { + block: 10512000, + subsidy: 423672207997007000, + }, + RewardPoint { + block: 26280000, + subsidy: 333635878252228000, + }, + RewardPoint { + block: 42048000, + subsidy: 262825353875519000, + }, + RewardPoint { + block: 57816000, + subsidy: 207116053874914000, + }, + RewardPoint { + block: 73584000, + subsidy: 163272262877830000, + }, + RewardPoint { + block: 94608000, + subsidy: 118963574070561000, + }, + RewardPoint { + block: 120888000, + subsidy: 80153245846642200, + }, + RewardPoint { + block: 149796000, + subsidy: 51971522998131200, + }, + RewardPoint { + block: 183960000, + subsidy: 31192714495359900, + }, + RewardPoint { + block: 220752000, + subsidy: 18033114698427300, + }, + ]) + .expect("Number of elements is below configured MaxRewardPoints; qed"), + }, + }, + GenesisDomainParams { + permissioned_action_allowed_by: PermissionedActionAllowedBy::Accounts(vec![ + sudo_account.clone(), + ]), + genesis_domains: vec![ + evm_chain_spec::get_genesis_domain(SpecId::Gemini, sudo_account.clone())?, + auto_id_chain_spec::get_genesis_domain(SpecId::Gemini, sudo_account.clone())?, + ], + }, + CouncilDemocracyConfigParams::::production_params(), + // TODO: Proper value here + sudo_account.clone(), + )?) + .map_err(|error| format!("Failed to serialize genesis config: {error}"))? }) .build()) } pub fn gemini_3h_config() -> Result { - GenericChainSpec::from_json_bytes(GEMINI_3H_CHAIN_SPEC.as_bytes()) + Err("Gemini 3h is not supported".to_string()) } pub fn devnet_config() -> Result { @@ -254,82 +254,42 @@ pub fn devnet_config_compiled() -> Result { }) .with_genesis_config({ let sudo_account = - AccountId::from_ss58check("5CXTmJEusve5ixyJufqHThmy4qUrrm6FyLCR7QfE4bbyMTNC") + AccountId::from_ss58check("5H6ai5VAt6Sw2qZGkEVGvLvNqTCPv6fZRN2KN2kp5qMQKBUD") .expect("Wrong root account address"); - let mut balances = vec![(sudo_account.clone(), Balance::MAX / 2)]; - let vesting_schedules = TOKEN_GRANTS - .iter() - .flat_map(|&(account_address, amount)| { - let account_id = AccountId::from_ss58check(account_address) - .expect("Wrong vesting account address"); - let amount: Balance = amount * SSC; - - // TODO: Adjust start block to real value before mainnet launch - let start_block = 100_000_000; - let one_month_in_blocks = - u32::try_from(3600 * 24 * 30 * MILLISECS_PER_BLOCK / 1000) - .expect("One month of blocks always fits in u32; qed"); - - // Add balance so it can be locked - balances.push((account_id.clone(), amount)); - - [ - // 1/4 of tokens are released after 1 year. - ( - account_id.clone(), - start_block, - one_month_in_blocks * 12, - 1, - amount / 4, - ), - // 1/48 of tokens are released every month after that for 3 more years. - ( - account_id, - start_block + one_month_in_blocks * 12, - one_month_in_blocks, - 36, - amount / 48, - ), - ] - }) - .collect::>(); - patch_domain_runtime_version( - serde_json::to_value(subspace_genesis_config( - sudo_account.clone(), - balances, - vesting_schedules, - GenesisParams { - enable_rewards_at: EnableRewardsAt::Manually, - allow_authoring_by: AllowAuthoringBy::FirstFarmer, - pot_slot_iterations: NonZeroU32::new(150_000_000).expect("Not zero; qed"), - enable_domains: true, - enable_dynamic_cost_of_storage: false, - enable_balance_transfers: true, - enable_non_root_calls: false, - // TODO: Proper value here - confirmation_depth_k: 100, - // TODO: Proper value here - rewards_config: RewardsConfig { - remaining_issuance: 1_000_000_000 * SSC, - proposer_subsidy_points: Default::default(), - voter_subsidy_points: Default::default(), - }, - }, - GenesisDomainParams { - permissioned_action_allowed_by: PermissionedActionAllowedBy::Accounts(vec![ - sudo_account.clone(), - ]), - genesis_domains: vec![auto_id_chain_spec::get_genesis_domain( - SpecId::DevNet, - sudo_account.clone(), - )?], + let balances = vec![(sudo_account.clone(), Balance::MAX / 2)]; + serde_json::to_value(subspace_genesis_config( + sudo_account.clone(), + balances, + GenesisParams { + enable_rewards_at: EnableRewardsAt::Manually, + allow_authoring_by: AllowAuthoringBy::FirstFarmer, + pot_slot_iterations: NonZeroU32::new(150_000_000).expect("Not zero; qed"), + enable_domains: true, + enable_dynamic_cost_of_storage: false, + enable_balance_transfers: true, + // TODO: Proper value here + confirmation_depth_k: 100, + // TODO: Proper value here + rewards_config: RewardsConfig { + remaining_issuance: 1_000_000_000 * SSC, + proposer_subsidy_points: Default::default(), + voter_subsidy_points: Default::default(), }, - CouncilDemocracyConfigParams::::fast_params(), - sudo_account.clone(), - )?) - .map_err(|error| format!("Failed to serialize genesis config: {error}"))?, - ) + }, + GenesisDomainParams { + permissioned_action_allowed_by: PermissionedActionAllowedBy::Accounts(vec![ + sudo_account.clone(), + ]), + genesis_domains: vec![auto_id_chain_spec::get_genesis_domain( + SpecId::DevNet, + sudo_account.clone(), + )?], + }, + CouncilDemocracyConfigParams::::fast_params(), + sudo_account.clone(), + )?) + .map_err(|error| format!("Failed to serialize genesis config: {error}"))? }) .build()) } @@ -351,7 +311,7 @@ pub fn dev_config() -> Result { ); properties }) - .with_genesis_config(patch_domain_runtime_version( + .with_genesis_config( serde_json::to_value(subspace_genesis_config( // Sudo account sudo_account.clone(), @@ -362,7 +322,6 @@ pub fn dev_config() -> Result { (get_account_id_from_seed("Alice//stash"), 1_000 * SSC), (get_account_id_from_seed("Bob//stash"), 1_000 * SSC), ], - vec![], GenesisParams { enable_rewards_at: EnableRewardsAt::Manually, allow_authoring_by: AllowAuthoringBy::Anyone, @@ -370,7 +329,6 @@ pub fn dev_config() -> Result { enable_domains: true, enable_dynamic_cost_of_storage: false, enable_balance_transfers: true, - enable_non_root_calls: true, confirmation_depth_k: 5, rewards_config: RewardsConfig { remaining_issuance: 1_000_000 * SSC, @@ -391,7 +349,7 @@ pub fn dev_config() -> Result { history_seeder, )?) .map_err(|error| format!("Failed to serialize genesis config: {error}"))?, - )) + ) .build()) } @@ -399,8 +357,6 @@ pub fn dev_config() -> Result { fn subspace_genesis_config( sudo_account: AccountId, balances: Vec<(AccountId, Balance)>, - // who, start, period, period_count, per_period - vesting: Vec<(AccountId, BlockNumber, BlockNumber, u32, Balance)>, genesis_params: GenesisParams, genesis_domain_params: GenesisDomainParams, council_democracy_config_params: CouncilDemocracyConfigParams, @@ -413,7 +369,6 @@ fn subspace_genesis_config( enable_domains, enable_dynamic_cost_of_storage, enable_balance_transfers, - enable_non_root_calls, confirmation_depth_k, rewards_config, } = genesis_params; @@ -463,14 +418,12 @@ fn subspace_genesis_config( phantom: PhantomData, }, rewards: rewards_config, - vesting: VestingConfig { vesting }, council: CouncilConfig::default(), democracy: DemocracyConfig::default(), runtime_configs: RuntimeConfigsConfig { enable_domains, enable_dynamic_cost_of_storage, enable_balance_transfers, - enable_non_root_calls, confirmation_depth_k, council_democracy_config_params, }, @@ -484,42 +437,3 @@ fn subspace_genesis_config( }, }) } - -// TODO: Workaround for https://github.com/paritytech/polkadot-sdk/issues/4001 -fn patch_domain_runtime_version(mut genesis_config: serde_json::Value) -> serde_json::Value { - let Some(genesis_domains) = genesis_config - .get_mut("domains") - .and_then(|domains| domains.get_mut("genesisDomains")) - .and_then(|genesis_domains| genesis_domains.as_array_mut()) - else { - return genesis_config; - }; - - for genesis_domain in genesis_domains { - let Some(runtime_version) = genesis_domain.get_mut("runtime_version") else { - continue; - }; - - if let Some(spec_name) = runtime_version.get_mut("specName") { - if let Some(spec_name_bytes) = spec_name - .as_str() - .map(|spec_name| spec_name.as_bytes().to_vec()) - { - *spec_name = serde_json::to_value(spec_name_bytes) - .expect("Bytes serialization doesn't fail; qed"); - } - } - - if let Some(impl_name) = runtime_version.get_mut("implName") { - if let Some(impl_name_bytes) = impl_name - .as_str() - .map(|impl_name| impl_name.as_bytes().to_vec()) - { - *impl_name = serde_json::to_value(impl_name_bytes) - .expect("Bytes serialization doesn't fail; qed"); - } - } - } - - genesis_config -} diff --git a/crates/subspace-node/src/commands/run.rs b/crates/subspace-node/src/commands/run.rs index c04a5cfbd4..1b665fd796 100644 --- a/crates/subspace-node/src/commands/run.rs +++ b/crates/subspace-node/src/commands/run.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + mod consensus; mod domain; mod shared; @@ -16,7 +22,6 @@ use domain_client_operator::fetch_domain_bootstrap_info; use domain_runtime_primitives::opaque::Block as DomainBlock; use futures::FutureExt; use sc_cli::Signals; -use sc_client_api::HeaderBackend; use sc_consensus_slots::SlotProportion; use sc_service::{BlocksPruning, PruningMode}; use sc_storage_monitor::StorageMonitorService; @@ -71,7 +76,7 @@ fn raise_fd_limit() { /// Default run command for node #[tokio::main] pub async fn run(run_options: RunOptions) -> Result<(), Error> { - let enable_color = init_logger().enable_color; + init_logger(); raise_fd_limit(); let signals = Signals::capture()?; @@ -86,16 +91,16 @@ pub async fn run(run_options: RunOptions) -> Result<(), Error> { let ConsensusChainConfiguration { maybe_tmp_dir: _maybe_tmp_dir, - mut subspace_configuration, + subspace_configuration, dev, pot_external_entropy, storage_monitor, mut prometheus_configuration, - } = create_consensus_chain_configuration(consensus, enable_color, domain_options.is_some())?; + } = create_consensus_chain_configuration(consensus, domain_options.is_some())?; let maybe_domain_configuration = domain_options .map(|domain_options| { - create_domain_configuration(&subspace_configuration, dev, domain_options, enable_color) + create_domain_configuration(&subspace_configuration, dev, domain_options) }) .transpose()?; @@ -139,56 +144,20 @@ pub async fn run(run_options: RunOptions) -> Result<(), Error> { let consensus_chain_node = { let span = info_span!("Consensus"); let _enter = span.enter(); - let mut snap_sync_success = true; - let partial_components = match subspace_service::new_partial::( + let partial_components = subspace_service::new_partial::( &subspace_configuration, match subspace_configuration.sync { ChainSyncMode::Full => false, ChainSyncMode::Snap => true, }, &pot_external_entropy, - ) { - Ok(partial_components) => partial_components, - Err(sc_service::Error::Client(sp_blockchain::Error::StateDatabase(error))) - if error.to_string().contains( - "Incompatible pruning modes [stored: ArchiveCanonical; requested: \ - Constrained", - ) => - { - subspace_configuration.base.state_pruning = Some(PruningMode::ArchiveCanonical); - snap_sync_success = false; - - subspace_service::new_partial::( - &subspace_configuration, - false, - &pot_external_entropy, - ) - .map_err(|error| { - sc_service::Error::Other(format!( - "Failed to build a full subspace node 1: {error:?}" - )) - })? - } - Err(error) => { - return Err(Error::Other(format!( - "Failed to build a full subspace node 2: {error:?}" - ))); - } - }; - - let info = partial_components.client.info(); - // TODO: This is a temporary upgrade note that should be removed after Gemini 3h - if matches!(subspace_configuration.sync, ChainSyncMode::Snap) - && (!snap_sync_success - || (info.best_number >= 1_000_000 && info.finalized_number == 0)) - { - warn!( - "Blockchain database is not working optimally, it is recommended to delete \ - `db` and re-sync node for lower disk usage and optimal performance after \ - segment archiving" - ); - } + ) + .map_err(|error| { + sc_service::Error::Other(format!( + "Failed to build a full subspace node 1: {error:?}" + )) + })?; let full_node_fut = subspace_service::new_full::( subspace_configuration, @@ -234,7 +203,7 @@ pub async fn run(run_options: RunOptions) -> Result<(), Error> { // Start cross domain message listener for Consensus chain to receive messages from domains in the network let domain_code_executor: sc_domains::RuntimeExecutor = - sc_service::new_wasm_executor(&domain_configuration.domain_config); + sc_service::new_wasm_executor(&domain_configuration.domain_config.executor); consensus_chain_node .task_manager .spawn_essential_handle() diff --git a/crates/subspace-node/src/commands/run/consensus.rs b/crates/subspace-node/src/commands/run/consensus.rs index 4ff91824c6..32e7144fd4 100644 --- a/crates/subspace-node/src/commands/run/consensus.rs +++ b/crates/subspace-node/src/commands/run/consensus.rs @@ -7,7 +7,6 @@ use sc_cli::{ generate_node_name, Cors, NodeKeyParams, NodeKeyType, RpcMethods, TelemetryParams, TransactionPoolParams, RPC_DEFAULT_PORT, }; -use sc_informant::OutputFormat; use sc_network::config::{MultiaddrWithPeerId, NonReservedPeerMode, Role, SetConfig}; use sc_service::{BlocksPruning, Configuration, PruningMode}; use sc_storage_monitor::StorageMonitorParams; @@ -154,7 +153,7 @@ struct DsnOptions { dsn_pending_out_connections: u32, /// Known external addresses - #[arg(long, alias = "dsn-external-address")] + #[arg(long = "dsn-external-address")] dsn_external_addresses: Vec, } @@ -430,7 +429,6 @@ pub(super) struct ConsensusChainConfiguration { pub(super) fn create_consensus_chain_configuration( consensus_node_options: ConsensusChainOptions, - enable_color: bool, domains_enabled: bool, ) -> Result { let ConsensusChainOptions { @@ -618,7 +616,6 @@ pub(super) fn create_consensus_chain_configuration( }, force_authoring, chain_spec: Box::new(chain_spec), - informant_output_format: OutputFormat { enable_color }, }; let consensus_chain_config = Configuration::from(consensus_chain_config); diff --git a/crates/subspace-node/src/commands/run/domain.rs b/crates/subspace-node/src/commands/run/domain.rs index 4890b93f42..bbf875d5ab 100644 --- a/crates/subspace-node/src/commands/run/domain.rs +++ b/crates/subspace-node/src/commands/run/domain.rs @@ -19,7 +19,6 @@ use sc_cli::{ }; use sc_consensus_subspace::block_import::BlockImportingNotification; use sc_consensus_subspace::notification::SubspaceNotificationStream; -use sc_informant::OutputFormat; use sc_network::config::{MultiaddrWithPeerId, NonReservedPeerMode, SetConfig, TransportConfig}; use sc_network::NetworkPeers; use sc_proof_of_time::source::PotSlotInfo; @@ -142,7 +141,6 @@ pub(super) fn create_domain_configuration( consensus_chain_configuration: &Configuration, dev: bool, domain_options: DomainOptions, - enable_color: bool, ) -> Result { let DomainOptions { domain_id: maybe_domain_id, @@ -326,7 +324,13 @@ pub(super) fn create_domain_configuration( unreachable!("Memory transport not used in CLI; qed") } }, - force_synced: false, + // set to be force_synced always for domains since they relay on Consensus chain to derive and import domain blocks. + // If not set, each domain node will wait to be fully synced and as a result will not propagate the transactions over network. + // It would have been ideal to use `Consensus` chain sync service to respond to `is_major_sync` requests but this + // would require upstream changes and with some refactoring. This is not worth the effort at the moment since + // we are planning to enable domain's block request and state sync mechanism in the near future. + // Until such change has been made, domain's sync service needs to be in force_synced state. + force_synced: true, }, keystore, state_pruning: pruning_params.state_pruning()?, @@ -359,7 +363,6 @@ pub(super) fn create_domain_configuration( telemetry_endpoints: consensus_chain_configuration.telemetry_endpoints.clone(), force_authoring: false, chain_spec: Box::new(chain_spec), - informant_output_format: OutputFormat { enable_color }, }; Ok(DomainConfiguration { diff --git a/crates/subspace-node/src/commands/shared.rs b/crates/subspace-node/src/commands/shared.rs index 10b88c24b1..1ea4b51967 100644 --- a/crates/subspace-node/src/commands/shared.rs +++ b/crates/subspace-node/src/commands/shared.rs @@ -52,12 +52,7 @@ pub(super) fn store_key_in_keystore( .map_err(|()| Error::Application("Failed to insert key into keystore".to_string().into())) } -#[derive(Debug, Copy, Clone)] -pub(super) struct InitLoggerResult { - pub(super) enable_color: bool, -} - -pub(super) fn init_logger() -> InitLoggerResult { +pub(super) fn init_logger() { // TODO: Workaround for https://github.com/tokio-rs/tracing/issues/2214, also on // Windows terminal doesn't support the same colors as bash does let enable_color = if cfg!(windows) { @@ -74,6 +69,4 @@ pub(super) fn init_logger() -> InitLoggerResult { ), ) .init(); - - InitLoggerResult { enable_color } } diff --git a/crates/subspace-node/src/domain/cli.rs b/crates/subspace-node/src/domain/cli.rs index 767348d81c..e8990586b9 100644 --- a/crates/subspace-node/src/domain/cli.rs +++ b/crates/subspace-node/src/domain/cli.rs @@ -37,7 +37,6 @@ use sp_runtime::generic::BlockId; use sp_runtime::traits::Header; use sp_runtime::DigestItem; use std::io::Write; -use std::net::SocketAddr; use std::path::Path; use subspace_runtime::Block; use subspace_runtime_primitives::{AccountId, Balance}; @@ -224,7 +223,10 @@ impl CliConfiguration for DomainCli { self.shared_params().base_path() } - fn rpc_addr(&self, default_listen_port: u16) -> sc_cli::Result> { + fn rpc_addr( + &self, + default_listen_port: u16, + ) -> sc_cli::Result>> { self.run.rpc_addr(default_listen_port) } diff --git a/crates/subspace-node/src/main.rs b/crates/subspace-node/src/main.rs index 8f6d72cd12..527938b4bd 100644 --- a/crates/subspace-node/src/main.rs +++ b/crates/subspace-node/src/main.rs @@ -106,13 +106,14 @@ fn derive_pot_external_entropy( .properties() .get("potExternalEntropy") .map(|d| match d.clone() { - Value::String(s) => Ok(s), - Value::Null => Ok(String::new()), + Value::String(s) => Ok(Some(s)), + Value::Null => Ok(None), _ => Err(sc_service::Error::Other( "Failed to decode PoT initial key".to_string(), )), }) - .transpose()?; + .transpose()? + .flatten(); if maybe_chain_spec_pot_external_entropy.is_some() && maybe_pot_external_entropy.is_some() && maybe_chain_spec_pot_external_entropy != maybe_pot_external_entropy @@ -387,8 +388,9 @@ fn main() -> Result<(), Error> { )) })?; - let executor = - sc_service::new_wasm_executor::(&domain_config); + let executor = sc_service::new_wasm_executor::( + &domain_config.executor, + ); let (client, _, _, _) = sc_service::new_full_parts::< DomainBlock, diff --git a/crates/subspace-proof-of-space/Cargo.toml b/crates/subspace-proof-of-space/Cargo.toml index 211f06f767..bf70fad3e0 100644 --- a/crates/subspace-proof-of-space/Cargo.toml +++ b/crates/subspace-proof-of-space/Cargo.toml @@ -32,7 +32,6 @@ bitvec = "1.0.1" criterion = "0.5.1" rand = "0.8.5" rayon = "1.10.0" -subspace-chiapos = { git = "https://github.com/subspace/chiapos", rev = "3b1ab3ca24764d25da30e0c8243e0bf304b776a5" } [[bench]] name = "pos" diff --git a/crates/subspace-proof-of-space/benches/pos.rs b/crates/subspace-proof-of-space/benches/pos.rs index e18f4872cc..95166d09cb 100644 --- a/crates/subspace-proof-of-space/benches/pos.rs +++ b/crates/subspace-proof-of-space/benches/pos.rs @@ -3,7 +3,7 @@ use criterion::{black_box, criterion_group, criterion_main, Criterion}; #[cfg(feature = "parallel")] use rayon::ThreadPoolBuilder; -use subspace_core_primitives::PosSeed; +use subspace_core_primitives::pos::PosSeed; use subspace_proof_of_space::{Table, TableGenerator}; fn pos_bench( @@ -102,19 +102,6 @@ fn pos_bench( } pub fn criterion_benchmark(c: &mut Criterion) { - { - // This challenge index with above seed is known to not have a solution - let challenge_index_without_solution = 1232460437; - // This challenge index with above seed is known to have a solution - let challenge_index_with_solution = 600426542; - - pos_bench::( - c, - "chia-legacy", - challenge_index_without_solution, - challenge_index_with_solution, - ) - } { // This challenge index with above seed is known to not have a solution let challenge_index_without_solution = 1232460437; diff --git a/crates/subspace-proof-of-space/src/chia.rs b/crates/subspace-proof-of-space/src/chia.rs index 0fb0418a4c..daee0ad525 100644 --- a/crates/subspace-proof-of-space/src/chia.rs +++ b/crates/subspace-proof-of-space/src/chia.rs @@ -2,7 +2,7 @@ use crate::chiapos::{Tables, TablesCache}; use crate::{PosTableType, Table, TableGenerator}; use core::mem; -use subspace_core_primitives::{PosProof, PosSeed}; +use subspace_core_primitives::pos::{PosProof, PosSeed}; const K: u8 = PosProof::K; diff --git a/crates/subspace-proof-of-space/src/chia_legacy.rs b/crates/subspace-proof-of-space/src/chia_legacy.rs deleted file mode 100644 index c81609a3b9..0000000000 --- a/crates/subspace-proof-of-space/src/chia_legacy.rs +++ /dev/null @@ -1,104 +0,0 @@ -//! Chia proof of space implementation -use crate::chiapos::{Tables, TablesCache}; -use crate::{PosTableType, Table, TableGenerator}; -use core::mem; -use subspace_core_primitives::{PosProof, PosSeed}; - -const K: u8 = PosProof::K; - -/// Subspace proof of space table generator. -/// -/// Chia implementation. -#[derive(Debug, Default, Clone)] -pub struct ChiaTableLegacyGenerator { - tables_cache: TablesCache, -} - -impl TableGenerator for ChiaTableLegacyGenerator { - fn generate(&mut self, seed: &PosSeed) -> ChiaTableLegacy { - ChiaTableLegacy { - tables: Tables::::create((*seed).into(), &mut self.tables_cache), - } - } - - #[cfg(any(feature = "parallel", test))] - fn generate_parallel(&mut self, seed: &PosSeed) -> ChiaTableLegacy { - ChiaTableLegacy { - tables: Tables::::create_parallel((*seed).into(), &mut self.tables_cache), - } - } -} - -/// Subspace proof of space table. -/// -/// Chia implementation. -#[derive(Debug)] -pub struct ChiaTableLegacy { - tables: Tables, -} - -impl Table for ChiaTableLegacy { - const TABLE_TYPE: PosTableType = PosTableType::Chia; - type Generator = ChiaTableLegacyGenerator; - - fn generate(seed: &PosSeed) -> ChiaTableLegacy { - Self { - tables: Tables::::create_simple((*seed).into()), - } - } - - #[cfg(any(feature = "parallel", test))] - fn generate_parallel(seed: &PosSeed) -> ChiaTableLegacy { - Self { - tables: Tables::::create_parallel((*seed).into(), &mut TablesCache::default()), - } - } - - fn find_proof(&self, challenge_index: u32) -> Option { - let mut challenge = [0; 32]; - challenge[..mem::size_of::()].copy_from_slice(&challenge_index.to_le_bytes()); - - let proof = self - .tables - .find_proof_legacy(&challenge) - .next() - .map(PosProof::from); - proof - } - - fn is_proof_valid(seed: &PosSeed, challenge_index: u32, proof: &PosProof) -> bool { - let mut challenge = [0; 32]; - challenge[..mem::size_of::()].copy_from_slice(&challenge_index.to_le_bytes()); - Tables::::verify(**seed, &challenge, proof).is_some() - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn basic() { - let seed = PosSeed::from([ - 35, 2, 52, 4, 51, 55, 23, 84, 91, 10, 111, 12, 13, 222, 151, 16, 228, 211, 254, 45, 92, - 198, 204, 10, 9, 10, 11, 129, 139, 171, 15, 23, - ]); - - let table = ChiaTableLegacy::generate(&seed); - let table_parallel = ChiaTableLegacy::generate_parallel(&seed); - - assert!(table.find_proof(1232460437).is_none()); - assert!(table_parallel.find_proof(1232460437).is_none()); - - { - let challenge_index = 600426542; - let proof = table.find_proof(challenge_index).unwrap(); - assert_eq!(proof, table_parallel.find_proof(challenge_index).unwrap()); - assert!(ChiaTableLegacy::is_proof_valid( - &seed, - challenge_index, - &proof - )); - } - } -} diff --git a/crates/subspace-proof-of-space/src/chiapos.rs b/crates/subspace-proof-of-space/src/chiapos.rs index c52f315d49..c364163868 100644 --- a/crates/subspace-proof-of-space/src/chiapos.rs +++ b/crates/subspace-proof-of-space/src/chiapos.rs @@ -3,8 +3,6 @@ mod constants; mod table; mod tables; -#[cfg(test)] -mod tests; mod utils; use crate::chiapos::table::metadata_size_bytes; @@ -59,14 +57,6 @@ impl Tables<$k> { Self::create(seed, &mut TablesCache::default()) } - /// Find proof of space quality for given challenge. - pub fn find_quality_legacy<'a>( - &'a self, - challenge: &'a Challenge, - ) -> impl Iterator + 'a { - self.0.find_quality_legacy(challenge) - } - /// Find proof of space quality for given challenge. pub fn find_quality<'a>( &'a self, @@ -75,14 +65,6 @@ impl Tables<$k> { self.0.find_quality(challenge) } - /// Find proof of space for given challenge. - pub fn find_proof_legacy<'a>( - &'a self, - challenge: &'a Challenge, - ) -> impl Iterator + 'a { - self.0.find_proof_legacy(challenge) - } - /// Find proof of space for given challenge. pub fn find_proof<'a>( &'a self, diff --git a/crates/subspace-proof-of-space/src/chiapos/tables.rs b/crates/subspace-proof-of-space/src/chiapos/tables.rs index 846c340515..e8109373f6 100644 --- a/crates/subspace-proof-of-space/src/chiapos/tables.rs +++ b/crates/subspace-proof-of-space/src/chiapos/tables.rs @@ -109,82 +109,6 @@ where } } - /// Find proof of space quality for given challenge. - // TODO: Remove once breaking network - pub(super) fn find_quality_legacy<'a>( - &'a self, - challenge: &'a Challenge, - ) -> impl Iterator + 'a { - let last_5_challenge_bits = challenge[challenge.len() - 1] & 0b00011111; - - let ys = self.table_7.ys(); - // We take advantage of the fact that entries are sorted by `y` (as big-endian numbers) to - // quickly seek to desired offset - let first_k_challenge_bits = u32::from_be_bytes( - challenge[..mem::size_of::()] - .try_into() - .expect("Challenge is known to statically have enough bytes; qed"), - ) >> (u32::BITS as usize - usize::from(K)); - let first_matching_element = ys - .binary_search_by(|&y| y.first_k_bits::().cmp(&first_k_challenge_bits)) - .unwrap_or_else(|insert| insert); - - // Iterate just over elements that are matching `first_k_challenge_bits` prefix - ys[first_matching_element..] - .iter() - .take_while(move |&&y| { - // Check if first K bits of `y` match - y.first_k_bits::() == first_k_challenge_bits - }) - .zip(Position::from(first_matching_element as u32)..) - .map(move |(_y, position)| { - let positions = self - .table_7 - .position(position) - .expect("Internally generated pointers must be correct; qed"); - let positions = self - .table_6 - .position(pick_position(positions, last_5_challenge_bits, 6)) - .expect("Internally generated pointers must be correct; qed"); - let positions = self - .table_5 - .position(pick_position(positions, last_5_challenge_bits, 5)) - .expect("Internally generated pointers must be correct; qed"); - let positions = self - .table_4 - .position(pick_position(positions, last_5_challenge_bits, 4)) - .expect("Internally generated pointers must be correct; qed"); - let positions = self - .table_3 - .position(pick_position(positions, last_5_challenge_bits, 3)) - .expect("Internally generated pointers must be correct; qed"); - let [left_position, right_position] = self - .table_2 - .position(pick_position(positions, last_5_challenge_bits, 2)) - .expect("Internally generated pointers must be correct; qed"); - - let left_x = *self - .table_1 - .xs() - .get(usize::from(left_position)) - .expect("Internally generated pointers must be correct; qed"); - let right_x = *self - .table_1 - .xs() - .get(usize::from(right_position)) - .expect("Internally generated pointers must be correct; qed"); - - let mut hasher = Sha256::new(); - hasher.update(challenge); - let left_right_xs = (u64::from(left_x) << (u64::BITS as usize - usize::from(K))) - | (u64::from(right_x) << (u64::BITS as usize - usize::from(K * 2))); - hasher.update( - &left_right_xs.to_be_bytes()[..(K as usize * 2).div_ceil(u8::BITS as usize)], - ); - hasher.finalize().into() - }) - } - /// Find proof of space quality for given challenge. pub(super) fn find_quality<'a>( &'a self, @@ -270,98 +194,6 @@ where }) } - /// Find proof of space for given challenge. - // TODO: Remove once breaking network - pub(super) fn find_proof_legacy<'a>( - &'a self, - challenge: &'a Challenge, - ) -> impl Iterator + 'a { - let ys = self.table_7.ys(); - // We take advantage of the fact that entries are sorted by `y` (as big-endian numbers) to - // quickly seek to desired offset - let first_k_challenge_bits = u32::from_be_bytes( - challenge[..mem::size_of::()] - .try_into() - .expect("Challenge is known to statically have enough bytes; qed"), - ) >> (u32::BITS as usize - usize::from(K)); - let first_matching_element = ys - .binary_search_by(|&y| y.first_k_bits::().cmp(&first_k_challenge_bits)) - .unwrap_or_else(|insert| insert); - - // Iterate just over elements that are matching `first_k_challenge_bits` prefix - ys[first_matching_element..] - .iter() - .take_while(move |&&y| { - // Check if first K bits of `y` match - y.first_k_bits::() == first_k_challenge_bits - }) - .zip(Position::from(first_matching_element as u32)..) - .map(move |(_y, position)| { - let mut proof = [0u8; 64 * K as usize / 8]; - - self.table_7 - .position(position) - .expect("Internally generated pointers must be correct; qed") - .into_iter() - .flat_map(|position| { - self.table_6 - .position(position) - .expect("Internally generated pointers must be correct; qed") - }) - .flat_map(|position| { - self.table_5 - .position(position) - .expect("Internally generated pointers must be correct; qed") - }) - .flat_map(|position| { - self.table_4 - .position(position) - .expect("Internally generated pointers must be correct; qed") - }) - .flat_map(|position| { - self.table_3 - .position(position) - .expect("Internally generated pointers must be correct; qed") - }) - .flat_map(|position| { - self.table_2 - .position(position) - .expect("Internally generated pointers must be correct; qed") - }) - .map(|position| { - self.table_1 - .xs() - .get(usize::from(position)) - .expect("Internally generated pointers must be correct; qed") - }) - .enumerate() - .for_each(|(offset, &x)| { - let x_offset_in_bits = usize::from(K) * offset; - // Collect bytes where bits of `x` will be written - let proof_bytes = &mut proof[x_offset_in_bits / u8::BITS as usize..] - [..(x_offset_in_bits % u8::BITS as usize + usize::from(K)) - .div_ceil(u8::BITS as usize)]; - - // Bits of `x` already shifted to correct location as they will appear in - // `proof` - let x_shifted = u32::from(x) - << (u32::BITS as usize - - (usize::from(K) + x_offset_in_bits % u8::BITS as usize)); - - // Copy `x` bits into proof - x_shifted - .to_be_bytes() - .iter() - .zip(proof_bytes) - .for_each(|(from, to)| { - *to |= from; - }); - }); - - proof - }) - } - /// Find proof of space for given challenge. pub(super) fn find_proof<'a>( &'a self, diff --git a/crates/subspace-proof-of-space/src/chiapos/tables/tests.rs b/crates/subspace-proof-of-space/src/chiapos/tables/tests.rs index 4afef7529f..0a3034ba01 100644 --- a/crates/subspace-proof-of-space/src/chiapos/tables/tests.rs +++ b/crates/subspace-proof-of-space/src/chiapos/tables/tests.rs @@ -3,49 +3,6 @@ use std::mem; const K: u8 = 17; -#[test] -fn self_verification_legacy() { - let seed = [1; 32]; - let tables = Tables::::create_simple(seed); - let tables_parallel = Tables::::create_parallel(seed, &mut TablesCache::default()); - - for challenge_index in 0..1000_u32 { - let mut challenge = [0; 32]; - challenge[..mem::size_of::()].copy_from_slice(&challenge_index.to_le_bytes()); - let qualities = tables.find_quality_legacy(&challenge).collect::>(); - assert_eq!( - qualities, - tables_parallel - .find_quality_legacy(&challenge) - .collect::>() - ); - let proofs = tables.find_proof_legacy(&challenge).collect::>(); - assert_eq!( - proofs, - tables_parallel - .find_proof_legacy(&challenge) - .collect::>() - ); - - assert_eq!(qualities.len(), proofs.len()); - - for (quality, proof) in qualities.into_iter().zip(&proofs) { - assert_eq!( - Some(quality), - Tables::::verify(seed, &challenge, proof), - "challenge index {challenge_index}" - ); - let mut bad_challenge = [0; 32]; - bad_challenge[..mem::size_of::()] - .copy_from_slice(&(challenge_index + 1).to_le_bytes()); - assert!( - Tables::::verify(seed, &bad_challenge, proof).is_none(), - "challenge index {challenge_index}" - ); - } - } -} - #[test] fn self_verification() { let seed = [1; 32]; diff --git a/crates/subspace-proof-of-space/src/chiapos/tests.rs b/crates/subspace-proof-of-space/src/chiapos/tests.rs deleted file mode 100644 index 070b882f42..0000000000 --- a/crates/subspace-proof-of-space/src/chiapos/tests.rs +++ /dev/null @@ -1,66 +0,0 @@ -use crate::chiapos::{Seed, Tables}; -use std::mem; - -const K: u8 = 17; - -/// Chia does this for some reason 🤷‍ -fn to_chia_seed(seed: &Seed) -> Seed { - let mut chia_seed = [1u8; 32]; - chia_seed[1..].copy_from_slice(&seed[..31]); - chia_seed -} - -#[test] -fn test_against_chiapos() { - let seed = [1; 32]; - let original_table = subspace_chiapos::Table::generate(&seed); - let chia_seed = to_chia_seed(&seed); - let tables = Tables::::create_simple(chia_seed); - - for challenge_index in (0..1u32 << 16).map(|_| rand::random::()) { - let mut challenge = [0; 32]; - challenge[..mem::size_of::()].copy_from_slice(&challenge_index.to_le_bytes()); - - let maybe_original_proof = original_table - .find_quality(challenge_index) - .map(|quality| quality.create_proof()); - - { - let found_proofs = tables.find_proof_legacy(&challenge).collect::>(); - - // Due to bugs (https://github.com/Chia-Network/chiapos/issues/352) in C++ chiapos doesn't - // find as many proofs, and they are in different order due to compression, so we just - // verify reference proofs with our verification function - if let Some(original_proof) = maybe_original_proof { - assert!(Tables::::verify(chia_seed, &challenge, &original_proof).is_some()); - - assert!(!found_proofs.is_empty()); - } - - // All the proofs we produce must be valid according to C++ chiapos as well, even those that - // C++ chiapos can't find after compression - for proof in &found_proofs { - assert!(subspace_chiapos::is_proof_valid(&seed, challenge_index, proof).is_some()); - } - } - - { - let found_proofs = tables.find_proof(&challenge).collect::>(); - - // Due to bugs (https://github.com/Chia-Network/chiapos/issues/352) in C++ chiapos doesn't - // find as many proofs, and they are in different order due to compression, so we just - // verify reference proofs with our verification function - if let Some(original_proof) = maybe_original_proof { - assert!(Tables::::verify(chia_seed, &challenge, &original_proof).is_some()); - - assert!(!found_proofs.is_empty()); - } - - // All the proofs we produce must be valid according to C++ chiapos as well, even those that - // C++ chiapos can't find after compression - for proof in &found_proofs { - assert!(subspace_chiapos::is_proof_valid(&seed, challenge_index, proof).is_some()); - } - } - } -} diff --git a/crates/subspace-proof-of-space/src/lib.rs b/crates/subspace-proof-of-space/src/lib.rs index 66ec56cf27..d4db08849a 100644 --- a/crates/subspace-proof-of-space/src/lib.rs +++ b/crates/subspace-proof-of-space/src/lib.rs @@ -14,12 +14,11 @@ )] pub mod chia; -pub mod chia_legacy; pub mod chiapos; pub mod shim; use core::fmt; -use subspace_core_primitives::{PosProof, PosSeed}; +use subspace_core_primitives::pos::{PosProof, PosSeed}; /// Proof of space table type #[derive(Debug, Clone, Copy)] diff --git a/crates/subspace-proof-of-space/src/shim.rs b/crates/subspace-proof-of-space/src/shim.rs index 778c0b0524..ff8287c7a3 100644 --- a/crates/subspace-proof-of-space/src/shim.rs +++ b/crates/subspace-proof-of-space/src/shim.rs @@ -4,7 +4,8 @@ use crate::{PosTableType, Table, TableGenerator}; use core::iter; use subspace_core_primitives::crypto::blake3_hash; -use subspace_core_primitives::{PosProof, PosSeed, U256}; +use subspace_core_primitives::pos::{PosProof, PosSeed}; +use subspace_core_primitives::U256; /// Subspace proof of space table generator. /// @@ -48,7 +49,7 @@ impl Table for ShimTable { fn find_proof(seed: &PosSeed, challenge_index: u32) -> Option { let quality = blake3_hash(&challenge_index.to_le_bytes()); - if U256::from_le_bytes(quality) % U256::from(3u32) > U256::zero() { + if U256::from_le_bytes(*quality) % U256::from(3u32) > U256::zero() { let mut proof = PosProof::default(); proof .iter_mut() diff --git a/crates/subspace-proof-of-time/Cargo.toml b/crates/subspace-proof-of-time/Cargo.toml index 58c1855b6d..9d863ab35c 100644 --- a/crates/subspace-proof-of-time/Cargo.toml +++ b/crates/subspace-proof-of-time/Cargo.toml @@ -15,9 +15,9 @@ include = [ bench = false [dependencies] -aes = "0.9.0-pre.1" +aes = "0.9.0-pre.2" subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives", default-features = false } -thiserror = { version = "1.0.63", optional = true } +thiserror = { version = "1.0.64", optional = true } [dev-dependencies] core_affinity = "0.8.1" diff --git a/crates/subspace-proof-of-time/benches/pot-compare-cpu-cores.rs b/crates/subspace-proof-of-time/benches/pot-compare-cpu-cores.rs index e9ed5859c5..c2c0ecc3e8 100644 --- a/crates/subspace-proof-of-time/benches/pot-compare-cpu-cores.rs +++ b/crates/subspace-proof-of-time/benches/pot-compare-cpu-cores.rs @@ -1,7 +1,7 @@ use core::num::NonZeroU32; use criterion::{black_box, criterion_group, criterion_main, Criterion}; use rand::{thread_rng, Rng}; -use subspace_core_primitives::PotSeed; +use subspace_core_primitives::pot::PotSeed; use subspace_proof_of_time::prove; fn criterion_benchmark(c: &mut Criterion) { diff --git a/crates/subspace-proof-of-time/benches/pot.rs b/crates/subspace-proof-of-time/benches/pot.rs index b2f0a82dc7..5e4dfa5f26 100644 --- a/crates/subspace-proof-of-time/benches/pot.rs +++ b/crates/subspace-proof-of-time/benches/pot.rs @@ -1,7 +1,7 @@ use core::num::NonZeroU32; use criterion::{black_box, criterion_group, criterion_main, Criterion}; use rand::{thread_rng, Rng}; -use subspace_core_primitives::PotSeed; +use subspace_core_primitives::pot::PotSeed; use subspace_proof_of_time::{prove, verify}; fn criterion_benchmark(c: &mut Criterion) { diff --git a/crates/subspace-proof-of-time/src/aes.rs b/crates/subspace-proof-of-time/src/aes.rs index f8804e2d98..e4669dee49 100644 --- a/crates/subspace-proof-of-time/src/aes.rs +++ b/crates/subspace-proof-of-time/src/aes.rs @@ -1,7 +1,6 @@ //! AES related functionality. -// TODO: Similarly optimized version for aarch64 -#[cfg(target_arch = "x86_64")] +#[cfg(all(feature = "std", target_arch = "x86_64"))] mod x86_64; #[cfg(not(feature = "std"))] @@ -10,12 +9,14 @@ extern crate alloc; use aes::cipher::array::Array; use aes::cipher::{BlockCipherDecrypt, BlockCipherEncrypt, KeyInit}; use aes::Aes128; -use subspace_core_primitives::{PotCheckpoints, PotKey, PotOutput, PotSeed}; +#[cfg(not(feature = "std"))] +use alloc::vec::Vec; +use subspace_core_primitives::pot::{PotCheckpoints, PotKey, PotOutput, PotSeed}; /// Creates the AES based proof. #[inline(always)] pub(crate) fn create(seed: PotSeed, key: PotKey, checkpoint_iterations: u32) -> PotCheckpoints { - #[cfg(target_arch = "x86_64")] + #[cfg(all(feature = "std", target_arch = "x86_64"))] if std::is_x86_feature_detected!("aes") { return unsafe { x86_64::create(seed.as_ref(), key.as_ref(), checkpoint_iterations) }; } diff --git a/crates/subspace-proof-of-time/src/aes/x86_64.rs b/crates/subspace-proof-of-time/src/aes/x86_64.rs index c3deefe6b5..f1873ee899 100644 --- a/crates/subspace-proof-of-time/src/aes/x86_64.rs +++ b/crates/subspace-proof-of-time/src/aes/x86_64.rs @@ -1,6 +1,6 @@ use core::arch::x86_64::*; use core::mem; -use subspace_core_primitives::PotCheckpoints; +use subspace_core_primitives::pot::PotCheckpoints; /// Create PoT proof with checkpoints #[target_feature(enable = "aes")] diff --git a/crates/subspace-proof-of-time/src/lib.rs b/crates/subspace-proof-of-time/src/lib.rs index af9a0704e1..66b237ddb4 100644 --- a/crates/subspace-proof-of-time/src/lib.rs +++ b/crates/subspace-proof-of-time/src/lib.rs @@ -4,7 +4,7 @@ mod aes; use core::num::NonZeroU32; -use subspace_core_primitives::{PotCheckpoints, PotOutput, PotSeed}; +use subspace_core_primitives::pot::{PotCheckpoints, PotOutput, PotSeed}; /// Proof of time error #[derive(Debug)] diff --git a/crates/subspace-rpc-primitives/Cargo.toml b/crates/subspace-rpc-primitives/Cargo.toml index d200defbf8..0647b0d4ca 100644 --- a/crates/subspace-rpc-primitives/Cargo.toml +++ b/crates/subspace-rpc-primitives/Cargo.toml @@ -15,7 +15,7 @@ include = [ [dependencies] hex = { version = "0.4.3", features = ["serde"] } parity-scale-codec = { version = "3.6.12", features = ["derive"] } -serde = { version = "1.0.206", features = ["derive"] } +serde = { version = "1.0.110", features = ["derive"] } subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives" } subspace-farmer-components = { version = "0.1.0", path = "../subspace-farmer-components" } subspace-networking = { version = "0.1.0", path = "../subspace-networking" } diff --git a/crates/subspace-rpc-primitives/src/lib.rs b/crates/subspace-rpc-primitives/src/lib.rs index 96c648fe33..fa7d9cec4d 100644 --- a/crates/subspace-rpc-primitives/src/lib.rs +++ b/crates/subspace-rpc-primitives/src/lib.rs @@ -130,7 +130,7 @@ pub struct SolutionResponse { /// Solution farmer has for the challenge. /// /// Corresponds to `slot_number` above. - pub solution: Solution, + pub solution: Solution, } /// Reward info that needs to be signed. @@ -141,8 +141,7 @@ pub struct RewardSigningInfo { #[serde(with = "hex")] pub hash: [u8; 32], /// Public key of the plot identity that should create signature. - #[serde(with = "hex")] - pub public_key: [u8; 32], + pub public_key: PublicKey, } /// Signature in response to reward hash signing request. diff --git a/crates/subspace-runtime-primitives/Cargo.toml b/crates/subspace-runtime-primitives/Cargo.toml index 64c6efe9df..fd372ff166 100644 --- a/crates/subspace-runtime-primitives/Cargo.toml +++ b/crates/subspace-runtime-primitives/Cargo.toml @@ -17,14 +17,14 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.1", default-features = false, features = ["derive"] } serde = { version = "1.0.203", default-features = false, features = ["alloc", "derive"] } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-io = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-io = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", default-features = false, path = "../subspace-core-primitives" } [features] diff --git a/crates/subspace-runtime-primitives/src/lib.rs b/crates/subspace-runtime-primitives/src/lib.rs index 984d79a83b..f29e9e28e6 100644 --- a/crates/subspace-runtime-primitives/src/lib.rs +++ b/crates/subspace-runtime-primitives/src/lib.rs @@ -39,7 +39,7 @@ pub use subspace_core_primitives::BlockNumber; /// Minimum desired number of replicas of the blockchain to be stored by the network, /// impacts storage fees. -pub const MIN_REPLICATION_FACTOR: u16 = 50; +pub const MIN_REPLICATION_FACTOR: u16 = 25; /// The smallest unit of the token is called Shannon. pub const SHANNON: Balance = 1; @@ -83,10 +83,12 @@ pub type Hash = sp_core::H256; /// Type used for expressing timestamp. pub type Moment = u64; -/// Opaque types. These are used by the CLI to instantiate machinery that don't need to know -/// the specifics of the runtime. They can then be made to be agnostic over specific formats -/// of data like extrinsics, allowing for them to continue syncing the network through upgrades -/// to even the core data structures. +/// Opaque types. +/// +/// These are used by the CLI to instantiate machinery that don't need to know the specifics of the +/// runtime. They can then be made to be agnostic over specific formats of data like extrinsics, +/// allowing for them to continue syncing the network through upgrades to even the core data +/// structures. pub mod opaque { use super::BlockNumber; use sp_runtime::generic; @@ -100,6 +102,8 @@ pub mod opaque { } pub mod time { + /// Expected block time in milliseconds. + /// /// Since Subspace is probabilistic this is the average expected block time that /// we are targeting. Blocks will be produced at a minimum duration defined /// by `SLOT_DURATION`, but some slots will not be allocated to any @@ -243,6 +247,17 @@ impl Default for BlockTransactionByteFee Multiplier { - <::FeeMultiplierUpdate as MultiplierUpdate>::min() + ::FeeMultiplierUpdate::min() } fn target() -> Weight { - <::FeeMultiplierUpdate as MultiplierUpdate>::target() * Self::max_normal() + ::FeeMultiplierUpdate::target() + * Self::max_normal() } // update based on runtime impl. fn runtime_multiplier_update(fm: Multiplier) -> Multiplier { - <::FeeMultiplierUpdate as Convert< - Multiplier, - Multiplier, - >>::convert(fm) + ::FeeMultiplierUpdate::convert(fm) } fn run_with_system_weight(w: Weight, assertions: F) diff --git a/crates/subspace-runtime/Cargo.toml b/crates/subspace-runtime/Cargo.toml index e38f128da6..576a5ca974 100644 --- a/crates/subspace-runtime/Cargo.toml +++ b/crates/subspace-runtime/Cargo.toml @@ -18,65 +18,63 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } domain-runtime-primitives = { version = "0.1.0", default-features = false, path = "../../domains/primitives/runtime" } -frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -frame-executive = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -orml-vesting = { version = "0.9.1", default-features = false, path = "../../orml/vesting" } -pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-collective = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-democracy = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +frame-executive = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-collective = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-democracy = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-domains = { version = "0.1.0", default-features = false, path = "../pallet-domains" } -pallet-history-seeding = { version = "0.1.0", default-features = false,path = "../pallet-history-seeding" } +pallet-history-seeding = { version = "0.1.0", default-features = false, path = "../pallet-history-seeding" } pallet-messenger = { version = "0.1.0", path = "../../domains/pallets/messenger", default-features = false } -pallet-mmr = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-offences-subspace = { version = "0.1.0", default-features = false, path = "../pallet-offences-subspace" } -pallet-preimage = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-mmr = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-preimage = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-rewards = { version = "0.1.0", default-features = false, path = "../pallet-rewards" } pallet-runtime-configs = { version = "0.1.0", default-features = false, path = "../pallet-runtime-configs" } -pallet-scheduler = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-scheduler = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-subspace = { version = "0.1.0", default-features = false, features = ["serde"], path = "../pallet-subspace" } pallet-subspace-mmr = { version = "0.1.0", default-features = false, path = "../pallet-subspace-mmr" } -pallet-sudo = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-sudo = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-transaction-fees = { version = "0.1.0", default-features = false, path = "../pallet-transaction-fees" } -pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-transporter = { version = "0.1.0", path = "../../domains/pallets/transporter", default-features = false } -pallet-utility = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-utility = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } sp-consensus-subspace = { version = "0.1.0", default-features = false, path = "../sp-consensus-subspace" } -sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", default-features = false, path = "../sp-domains" } sp-domains-fraud-proof = { version = "0.1.0", default-features = false, path = "../sp-domains-fraud-proof" } -sp-genesis-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } +sp-genesis-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } sp-messenger = { version = "0.1.0", default-features = false, path = "../../domains/primitives/messenger" } sp-messenger-host-functions = { version = "0.1.0", default-features = false, path = "../../domains/primitives/messenger-host-functions" } -sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-objects = { version = "0.1.0", default-features = false, path = "../sp-objects" } -sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { default-features = false, path = "../sp-subspace-mmr" } -sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } static_assertions = "1.1.0" subspace-core-primitives = { version = "0.1.0", default-features = false, path = "../subspace-core-primitives" } subspace-runtime-primitives = { version = "0.1.0", default-features = false, path = "../subspace-runtime-primitives" } [build-dependencies] -substrate-wasm-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } +substrate-wasm-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } [dev-dependencies] hex-literal = "0.4.1" -sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-runtime-primitives = { version = "0.1.0", features = ["testing"], path = "../subspace-runtime-primitives" } [features] @@ -90,7 +88,6 @@ std = [ "frame-system/std", "frame-system-benchmarking?/std", "frame-system-rpc-runtime-api/std", - "orml-vesting/std", "pallet-balances/std", "pallet-collective/std", "pallet-democracy/std", @@ -98,7 +95,6 @@ std = [ "pallet-history-seeding/std", "pallet-messenger/std", "pallet-mmr/std", - "pallet-offences-subspace/std", "pallet-preimage/std", "pallet-rewards/std", "pallet-runtime-configs/std", @@ -146,7 +142,6 @@ runtime-benchmarks = [ "frame-system/runtime-benchmarks", "frame-system-benchmarking", "frame-system-benchmarking/runtime-benchmarks", - "orml-vesting/runtime-benchmarks", "pallet-balances/runtime-benchmarks", "pallet-collective/runtime-benchmarks", "pallet-domains/runtime-benchmarks", diff --git a/crates/subspace-runtime/src/domains.rs b/crates/subspace-runtime/src/domains.rs index 6dbbb0dc43..3eccaf54aa 100644 --- a/crates/subspace-runtime/src/domains.rs +++ b/crates/subspace-runtime/src/domains.rs @@ -6,7 +6,6 @@ use crate::{Balance, Block, Domains, RuntimeCall, UncheckedExtrinsic}; use alloc::vec::Vec; use domain_runtime_primitives::opaque::Header as DomainHeader; use sp_domains::DomainId; -use sp_runtime::traits::{Block as BlockT, NumberFor}; pub(crate) fn extract_successful_bundles( domain_id: DomainId, @@ -26,16 +25,3 @@ pub(crate) fn extract_successful_bundles( }) .collect() } - -pub(crate) fn extract_bundle( - extrinsic: UncheckedExtrinsic, -) -> Option< - sp_domains::OpaqueBundle, ::Hash, DomainHeader, Balance>, -> { - match extrinsic.function { - RuntimeCall::Domains(pallet_domains::Call::submit_bundle { opaque_bundle }) => { - Some(opaque_bundle) - } - _ => None, - } -} diff --git a/crates/subspace-runtime/src/lib.rs b/crates/subspace-runtime/src/lib.rs index afac99018c..b3d1f5b987 100644 --- a/crates/subspace-runtime/src/lib.rs +++ b/crates/subspace-runtime/src/lib.rs @@ -18,23 +18,29 @@ #![feature(const_option, const_trait_impl, variant_count)] // `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. #![recursion_limit = "256"] -// Silence a rust-analyzer warning in `construct_runtime!`. This warning isn't present in rustc output. -// TODO: remove when upstream issue is fixed: -#![allow(non_camel_case_types)] +// TODO: remove when upstream issue is fixed +#![allow( + non_camel_case_types, + reason = "https://github.com/rust-lang/rust-analyzer/issues/16514" +)] mod domains; mod fees; mod object_mapping; mod signed_extensions; +extern crate alloc; + // Make the WASM binary available. #[cfg(feature = "std")] include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); use crate::fees::{OnChargeTransaction, TransactionByteFee}; use crate::object_mapping::extract_block_object_mapping; -pub use crate::signed_extensions::{CheckStorageAccess, DisablePallets}; +pub use crate::signed_extensions::{CheckHistorySeeder, DisablePallets}; +use alloc::borrow::Cow; use codec::{Decode, Encode, MaxEncodedLen}; +use core::mem; use core::num::NonZeroU64; use domain_runtime_primitives::opaque::Header as DomainHeader; use domain_runtime_primitives::{ @@ -52,7 +58,7 @@ use frame_support::weights::constants::ParityDbWeight; use frame_support::weights::{ConstantMultiplier, Weight}; use frame_support::{construct_runtime, parameter_types, PalletId}; use frame_system::limits::{BlockLength, BlockWeights}; -use frame_system::{EnsureNever, EnsureRoot}; +use frame_system::EnsureRoot; use pallet_collective::{EnsureMember, EnsureProportionAtLeast}; pub use pallet_rewards::RewardPoint; pub use pallet_subspace::{AllowAuthoringBy, EnableRewardsAt}; @@ -60,17 +66,13 @@ use pallet_transporter::EndpointHandler; use scale_info::TypeInfo; use sp_api::impl_runtime_apis; use sp_consensus_slots::{Slot, SlotDuration}; -use sp_consensus_subspace::{ - ChainConstants, EquivocationProof, FarmerPublicKey, PotParameters, SignedVote, SolutionRanges, - Vote, -}; -use sp_core::crypto::{ByteArray, KeyTypeId}; +use sp_consensus_subspace::{ChainConstants, PotParameters, SignedVote, SolutionRanges, Vote}; +use sp_core::crypto::KeyTypeId; use sp_core::{ConstBool, OpaqueMetadata, H256}; use sp_domains::bundle_producer_election::BundleProducerElectionParams; use sp_domains::{ - ChannelId, DomainAllowlistUpdates, DomainId, DomainInstanceData, DomainsHoldIdentifier, - ExecutionReceiptFor, MessengerHoldIdentifier, OpaqueBundle, OperatorId, OperatorPublicKey, - StakingHoldIdentifier, DOMAIN_STORAGE_FEE_MULTIPLIER, INITIAL_DOMAIN_TX_RANGE, + ChannelId, DomainAllowlistUpdates, DomainId, DomainInstanceData, ExecutionReceiptFor, + OperatorId, OperatorPublicKey, DOMAIN_STORAGE_FEE_MULTIPLIER, INITIAL_DOMAIN_TX_RANGE, }; use sp_domains_fraud_proof::fraud_proof::FraudProof; use sp_domains_fraud_proof::storage_proof::{ @@ -87,9 +89,7 @@ use sp_runtime::traits::{ NumberFor, }; use sp_runtime::transaction_validity::{TransactionSource, TransactionValidity}; -use sp_runtime::{ - create_runtime_str, generic, AccountId32, ApplyExtrinsicResult, ExtrinsicInclusionMode, Perbill, -}; +use sp_runtime::{generic, AccountId32, ApplyExtrinsicResult, ExtrinsicInclusionMode, Perbill}; use sp_std::collections::btree_map::BTreeMap; use sp_std::collections::btree_set::BTreeSet; use sp_std::marker::PhantomData; @@ -99,14 +99,19 @@ use sp_subspace_mmr::ConsensusChainMmrLeafProof; use sp_version::RuntimeVersion; use static_assertions::const_assert; use subspace_core_primitives::objects::BlockObjectMapping; +use subspace_core_primitives::pieces::Piece; +use subspace_core_primitives::segments::{ + HistorySize, SegmentCommitment, SegmentHeader, SegmentIndex, +}; use subspace_core_primitives::{ - sectors_to_solution_range, solution_range_to_sectors, HistorySize, Piece, Randomness, - SegmentCommitment, SegmentHeader, SegmentIndex, SlotNumber, SolutionRange, U256, + pieces_to_solution_range, solution_range_to_pieces, PublicKey, Randomness, SlotNumber, + SolutionRange, U256, }; use subspace_runtime_primitives::{ maximum_normal_block_length, AccountId, Balance, BlockNumber, FindBlockRewardAddress, Hash, - Moment, Nonce, Signature, SlowAdjustingFeeUpdate, BLOCK_WEIGHT_FOR_2_SEC, MAX_BLOCK_LENGTH, - MIN_REPLICATION_FACTOR, NORMAL_DISPATCH_RATIO, SHANNON, SLOT_PROBABILITY, SSC, + HoldIdentifier, Moment, Nonce, Signature, SlowAdjustingFeeUpdate, BLOCK_WEIGHT_FOR_2_SEC, + MAX_BLOCK_LENGTH, MIN_REPLICATION_FACTOR, NORMAL_DISPATCH_RATIO, SHANNON, SLOT_PROBABILITY, + SSC, }; sp_runtime::impl_opaque_keys! { @@ -121,15 +126,14 @@ const MAX_PIECES_IN_SECTOR: u16 = 1000; // https://substrate.dev/docs/en/knowledgebase/runtime/upgrades#runtime-versioning #[sp_version::runtime_version] pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("subspace"), - impl_name: create_runtime_str!("subspace"), + spec_name: Cow::Borrowed("subspace"), + impl_name: Cow::Borrowed("subspace"), authoring_version: 0, spec_version: 7, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 0, - state_version: 0, - extrinsic_state_version: 0, + system_version: 2, }; // TODO: Many of below constants should probably be updatable but currently they are not @@ -161,14 +165,12 @@ const_assert!(POT_ENTROPY_INJECTION_DELAY > BLOCK_AUTHORING_DELAY + 1); /// Era duration in blocks. const ERA_DURATION_IN_BLOCKS: BlockNumber = 2016; -const EQUIVOCATION_REPORT_LONGEVITY: BlockNumber = 256; - /// Tx range is adjusted every DOMAIN_TX_RANGE_ADJUSTMENT_INTERVAL blocks. const TX_RANGE_ADJUSTMENT_INTERVAL_BLOCKS: u64 = 100; -// We assume initial plot size starts with the a single sector. +// We assume initial plot size starts with a single sector. const INITIAL_SOLUTION_RANGE: SolutionRange = - sectors_to_solution_range(1, SLOT_PROBABILITY, MAX_PIECES_IN_SECTOR); + pieces_to_solution_range(MAX_PIECES_IN_SECTOR as u64, SLOT_PROBABILITY); /// Number of votes expected per block. /// @@ -302,12 +304,6 @@ impl pallet_subspace::Config for Runtime { type ShouldAdjustSolutionRange = ShouldAdjustSolutionRange; type EraChangeTrigger = pallet_subspace::NormalEraChange; type BlockSlotCount = BlockSlotCount; - - type HandleEquivocation = pallet_subspace::equivocation::EquivocationHandler< - OffencesSubspace, - ConstU64<{ EQUIVOCATION_REPORT_LONGEVITY as u64 }>, - >; - type WeightInfo = pallet_subspace::weights::SubstrateWeight; } @@ -327,44 +323,30 @@ parameter_types! { #[derive( PartialEq, Eq, Clone, Encode, Decode, TypeInfo, MaxEncodedLen, Ord, PartialOrd, Copy, Debug, )] -pub enum HoldIdentifier { - Domains(DomainsHoldIdentifier), - Messenger(MessengerHoldIdentifier), - Preimage, -} +pub struct HoldIdentifierWrapper(HoldIdentifier); -impl pallet_domains::HoldIdentifier for HoldIdentifier { - fn staking_staked(operator_id: OperatorId) -> Self { - Self::Domains(DomainsHoldIdentifier::Staking( - StakingHoldIdentifier::Staked(operator_id), - )) +impl pallet_domains::HoldIdentifier for HoldIdentifierWrapper { + fn staking_staked() -> Self { + Self(HoldIdentifier::DomainStaking) } - fn domain_instantiation_id(domain_id: DomainId) -> Self { - Self::Domains(DomainsHoldIdentifier::DomainInstantiation(domain_id)) + fn domain_instantiation_id() -> Self { + Self(HoldIdentifier::DomainInstantiation) } - fn storage_fund_withdrawal(operator_id: OperatorId) -> Self { - Self::Domains(DomainsHoldIdentifier::StorageFund(operator_id)) + fn storage_fund_withdrawal() -> Self { + Self(HoldIdentifier::DomainStorageFund) } } -impl pallet_messenger::HoldIdentifier for HoldIdentifier { - fn messenger_channel(dst_chain_id: ChainId, channel_id: ChannelId) -> Self { - Self::Messenger(MessengerHoldIdentifier::Channel((dst_chain_id, channel_id))) +impl pallet_messenger::HoldIdentifier for HoldIdentifierWrapper { + fn messenger_channel() -> Self { + Self(HoldIdentifier::MessengerChannel) } } -impl VariantCount for HoldIdentifier { - // TODO: revist this value, it is used as the max number of hold an account can - // create. Currently, nomination an operator will create 2 holds and opening an - // XDM channel will create 1 hold, so this value also used as the limit of how - // many operator/channel an account can nominate/open. - // - // TODO: HACK this is not the actual variant count but it is required see - // https://github.com/autonomys/subspace/issues/2674 for more details. It - // will be resolved as https://github.com/paritytech/polkadot-sdk/issues/4033. - const VARIANT_COUNT: u32 = 100; +impl VariantCount for HoldIdentifierWrapper { + const VARIANT_COUNT: u32 = mem::variant_count::() as u32; } impl pallet_balances::Config for Runtime { @@ -382,14 +364,14 @@ impl pallet_balances::Config for Runtime { type WeightInfo = pallet_balances::weights::SubstrateWeight; type FreezeIdentifier = (); type MaxFreezes = (); - type RuntimeHoldReason = HoldIdentifier; + type RuntimeHoldReason = HoldIdentifierWrapper; } parameter_types! { pub CreditSupply: Balance = Balances::total_issuance(); pub TotalSpacePledged: u128 = { - let sectors = solution_range_to_sectors(Subspace::solution_ranges().current, SLOT_PROBABILITY, MAX_PIECES_IN_SECTOR); - sectors as u128 * MAX_PIECES_IN_SECTOR as u128 * Piece::SIZE as u128 + let pieces = solution_range_to_pieces(Subspace::solution_ranges().current, SLOT_PROBABILITY); + pieces as u128 * Piece::SIZE as u128 }; pub BlockchainHistorySize: u128 = u128::from(Subspace::archived_history_size()); pub DynamicCostOfStorage: bool = RuntimeConfigs::enable_dynamic_cost_of_storage(); @@ -405,7 +387,7 @@ impl pallet_transaction_fees::Config for Runtime { type Currency = Balances; type FindBlockRewardAddress = Subspace; type DynamicCostOfStorage = DynamicCostOfStorage; - type WeightInfo = (); + type WeightInfo = pallet_transaction_fees::weights::SubstrateWeight; } impl pallet_transaction_payment::Config for Runtime { @@ -453,6 +435,11 @@ parameter_types! { pub MaxProposalWeight: Weight = Perbill::from_percent(50) * SubspaceBlockWeights::get().max_block; } +pub type EnsureRootOr = EitherOfDiverse, O>; +pub type AllCouncil = EnsureProportionAtLeast; +pub type TwoThirdsCouncil = EnsureProportionAtLeast; +pub type HalfCouncil = EnsureProportionAtLeast; + // TODO: update params for mainnnet impl pallet_collective::Config for Runtime { type DefaultVote = pallet_collective::PrimeDefaultVote; @@ -464,7 +451,7 @@ impl pallet_collective::Config for Runtime { type Proposal = RuntimeCall; type RuntimeEvent = RuntimeEvent; type RuntimeOrigin = RuntimeOrigin; - type SetMembersOrigin = EnsureRoot; + type SetMembersOrigin = EnsureRootOr; type WeightInfo = pallet_collective::weights::SubstrateWeight; } @@ -472,7 +459,7 @@ impl pallet_collective::Config for Runtime { parameter_types! { pub PreimageBaseDeposit: Balance = 100 * SSC; pub PreimageByteDeposit: Balance = SSC; - pub const PreImageHoldReason: HoldIdentifier = HoldIdentifier::Preimage; + pub const PreImageHoldReason: HoldIdentifierWrapper = HoldIdentifierWrapper(HoldIdentifier::Preimage); } impl pallet_preimage::Config for Runtime { @@ -507,12 +494,6 @@ impl pallet_scheduler::Config for Runtime { type WeightInfo = pallet_scheduler::weights::SubstrateWeight; } -// TODO: update params for mainnnet -pub type EnsureRootOr = EitherOfDiverse, O>; -pub type AllCouncil = EnsureProportionAtLeast; -pub type TwoThirdsCouncil = EnsureProportionAtLeast; -pub type HalfCouncil = EnsureProportionAtLeast; - type NegativeImbalance = >::NegativeImbalance; pub struct DemocracySlash; @@ -706,7 +687,7 @@ impl pallet_messenger::Config for Runtime { type MmrProofVerifier = MmrProofVerifier; type StorageKeys = StorageKeys; type DomainOwner = Domains; - type HoldIdentifier = HoldIdentifier; + type HoldIdentifier = HoldIdentifierWrapper; type ChannelReserveFee = ChannelReserveFee; type ChannelInitReservePortion = ChannelInitReservePortion; type DomainRegistration = DomainRegistration; @@ -735,11 +716,6 @@ impl pallet_transporter::Config for Runtime { type WeightInfo = pallet_transporter::weights::SubstrateWeight; } -impl pallet_offences_subspace::Config for Runtime { - type RuntimeEvent = RuntimeEvent; - type OnOffenceHandler = Subspace; -} - parameter_types! { pub const MaximumReceiptDrift: BlockNumber = 128; pub const InitialDomainTxRange: u64 = INITIAL_DOMAIN_TX_RANGE; @@ -770,6 +746,7 @@ parameter_types! { pub const MaxInitialDomainAccounts: u32 = 10; pub const MinInitialDomainAccountBalance: Balance = SSC; pub const BundleLongevity: u32 = 5; + pub const WithdrawalLimit: u32 = 32; } // `BlockSlotCount` must at least keep the slot for the current and the parent block, it also need to @@ -829,7 +806,7 @@ impl pallet_domains::Config for Runtime { type ConfirmationDepthK = ConfirmationDepthK; type DomainRuntimeUpgradeDelay = DomainRuntimeUpgradeDelay; type Currency = Balances; - type HoldIdentifier = HoldIdentifier; + type HoldIdentifier = HoldIdentifierWrapper; type WeightInfo = pallet_domains::weights::SubstrateWeight; type InitialDomainTxRange = InitialDomainTxRange; type DomainTxRangeAdjustmentInterval = DomainTxRangeAdjustmentInterval; @@ -862,6 +839,7 @@ impl pallet_domains::Config for Runtime { type MmrProofVerifier = MmrProofVerifier; type FraudProofStorageKeyProvider = StorageKeyProvider; type OnChainRewards = OnChainRewards; + type WithdrawalLimit = WithdrawalLimit; } parameter_types! { @@ -887,21 +865,6 @@ impl pallet_runtime_configs::Config for Runtime { type WeightInfo = pallet_runtime_configs::weights::SubstrateWeight; } -parameter_types! { - // This value doesn't matter, we don't use it (`VestedTransferOrigin = EnsureNever` below). - pub const MinVestedTransfer: Balance = 0; -} - -impl orml_vesting::Config for Runtime { - type RuntimeEvent = RuntimeEvent; - type Currency = Balances; - type MinVestedTransfer = MinVestedTransfer; - type VestedTransferOrigin = EnsureNever; - type WeightInfo = (); - type MaxVestingSchedules = ConstU32<2>; - type BlockNumberProvider = System; -} - mod mmr { use super::Runtime; pub use pallet_mmr::primitives::*; @@ -926,6 +889,8 @@ impl pallet_mmr::Config for Runtime { type OnNewRoot = SubspaceMmr; type BlockHashProvider = BlockHashProvider; type WeightInfo = (); + #[cfg(feature = "runtime-benchmarks")] + type BenchmarkHelper = (); } parameter_types! { @@ -943,7 +908,6 @@ construct_runtime!( Timestamp: pallet_timestamp = 1, Subspace: pallet_subspace = 2, - OffencesSubspace: pallet_offences_subspace = 3, Rewards: pallet_rewards = 4, Balances: pallet_balances = 5, @@ -954,8 +918,6 @@ construct_runtime!( Domains: pallet_domains = 12, RuntimeConfigs: pallet_runtime_configs = 14, - Vesting: orml_vesting = 13, - Mmr: pallet_mmr = 30, SubspaceMmr: pallet_subspace_mmr = 31, @@ -994,8 +956,8 @@ pub type SignedExtra = ( frame_system::CheckNonce, frame_system::CheckWeight, pallet_transaction_payment::ChargeTransactionPayment, - CheckStorageAccess, DisablePallets, + CheckHistorySeeder, ); /// Unchecked extrinsic type as expected by this runtime. pub type UncheckedExtrinsic = @@ -1049,15 +1011,10 @@ fn is_xdm_mmr_proof_valid(ext: &::Extrinsic) -> Option { struct RewardAddress([u8; 32]); -impl From for RewardAddress { +impl From for RewardAddress { #[inline] - fn from(farmer_public_key: FarmerPublicKey) -> Self { - Self( - farmer_public_key - .as_slice() - .try_into() - .expect("Public key is always of correct size; qed"), - ) + fn from(public_key: PublicKey) -> Self { + Self(*public_key) } } @@ -1195,17 +1152,12 @@ impl_runtime_apis! { } impl sp_objects::ObjectsApi for Runtime { - fn extract_block_object_mapping(block: Block, successful_calls: Vec) -> BlockObjectMapping { - extract_block_object_mapping(block, successful_calls) - } - - fn validated_object_call_hashes() -> Vec { - // No pallets produce objects right now - Vec::new() + fn extract_block_object_mapping(block: Block) -> BlockObjectMapping { + extract_block_object_mapping(block) } } - impl sp_consensus_subspace::SubspaceApi for Runtime { + impl sp_consensus_subspace::SubspaceApi for Runtime { fn pot_parameters() -> PotParameters { Subspace::pot_parameters() } @@ -1214,14 +1166,8 @@ impl_runtime_apis! { Subspace::solution_ranges() } - fn submit_report_equivocation_extrinsic( - equivocation_proof: EquivocationProof<::Header>, - ) -> Option<()> { - Subspace::submit_equivocation_report(equivocation_proof) - } - fn submit_vote_extrinsic( - signed_vote: SignedVote, ::Hash, FarmerPublicKey>, + signed_vote: SignedVote, ::Hash, PublicKey>, ) { let SignedVote { vote, signature } = signed_vote; let Vote::V0 { @@ -1246,12 +1192,6 @@ impl_runtime_apis! { }) } - fn is_in_block_list(farmer_public_key: &FarmerPublicKey) -> bool { - // TODO: Either check tx pool too for pending equivocations or replace equivocation - // mechanism with an alternative one, so that blocking happens faster - Subspace::is_in_block_list(farmer_public_key) - } - fn history_size() -> HistorySize { >::history_size() } @@ -1276,7 +1216,7 @@ impl_runtime_apis! { } } - fn root_plot_public_key() -> Option { + fn root_plot_public_key() -> Option { Subspace::root_plot_public_key() } @@ -1318,22 +1258,6 @@ impl_runtime_apis! { crate::domains::extract_successful_bundles(domain_id, extrinsics) } - fn extract_bundle( - extrinsic: ::Extrinsic - ) -> Option, ::Hash, DomainHeader, Balance>> { - crate::domains::extract_bundle(extrinsic) - } - - fn extract_receipts( - domain_id: DomainId, - extrinsics: Vec<::Extrinsic>, - ) -> Vec> { - crate::domains::extract_successful_bundles(domain_id, extrinsics) - .into_iter() - .map(|bundle| bundle.into_receipt()) - .collect() - } - fn extrinsics_shuffling_seed() -> Randomness { Randomness::from(Domains::extrinsics_shuffling_seed().to_fixed_bytes()) } @@ -1370,10 +1294,6 @@ impl_runtime_apis! { Domains::oldest_unconfirmed_receipt_number(domain_id) } - fn domain_block_limit(domain_id: DomainId) -> Option { - Domains::domain_block_limit(domain_id) - } - fn domain_bundle_limit(domain_id: DomainId) -> Option { Domains::domain_bundle_limit(domain_id).ok().flatten() } @@ -1424,7 +1344,7 @@ impl_runtime_apis! { Domains::storage_fund_account_balance(operator_id) } - fn is_domain_runtime_updraded_since(domain_id: DomainId, at: NumberFor) -> Option { + fn is_domain_runtime_upgraded_since(domain_id: DomainId, at: NumberFor) -> Option { Domains::is_domain_runtime_upgraded_since(domain_id, at) } @@ -1641,7 +1561,7 @@ impl_runtime_apis! { fn dispatch_benchmark( config: frame_benchmarking::BenchmarkConfig - ) -> Result, sp_runtime::RuntimeString> { + ) -> Result, alloc::string::String> { use frame_benchmarking::{baseline, Benchmarking, BenchmarkBatch}; use sp_core::storage::TrackedStorageKey; diff --git a/crates/subspace-runtime/src/object_mapping.rs b/crates/subspace-runtime/src/object_mapping.rs index 4dbbcb91a0..c41fd028a0 100644 --- a/crates/subspace-runtime/src/object_mapping.rs +++ b/crates/subspace-runtime/src/object_mapping.rs @@ -1,19 +1,16 @@ use crate::{Block, Runtime, RuntimeCall}; use codec::{Compact, CompactLen, Encode}; -use sp_std::iter::Peekable; use sp_std::prelude::*; use subspace_core_primitives::crypto; use subspace_core_primitives::objects::{BlockObject, BlockObjectMapping}; -use subspace_runtime_primitives::Hash; const MAX_OBJECT_MAPPING_RECURSION_DEPTH: u16 = 5; -pub(crate) fn extract_utility_block_object_mapping>( +pub(crate) fn extract_utility_block_object_mapping( mut base_offset: u32, objects: &mut Vec, call: &pallet_utility::Call, mut recursion_depth_left: u16, - successful_calls: &mut Peekable, ) { if recursion_depth_left == 0 { return; @@ -31,13 +28,7 @@ pub(crate) fn extract_utility_block_object_mapping>( base_offset += Compact::compact_len(&(calls.len() as u32)) as u32; for call in calls { - extract_call_block_object_mapping( - base_offset, - objects, - call, - recursion_depth_left, - successful_calls, - ); + extract_call_block_object_mapping(base_offset, objects, call, recursion_depth_left); base_offset += call.encoded_size() as u32; } @@ -50,7 +41,6 @@ pub(crate) fn extract_utility_block_object_mapping>( objects, call.as_ref(), recursion_depth_left, - successful_calls, ); } pallet_utility::Call::dispatch_as { as_origin, call } => { @@ -61,7 +51,6 @@ pub(crate) fn extract_utility_block_object_mapping>( objects, call.as_ref(), recursion_depth_left, - successful_calls, ); } pallet_utility::Call::with_weight { call, .. } => { @@ -70,7 +59,6 @@ pub(crate) fn extract_utility_block_object_mapping>( objects, call.as_ref(), recursion_depth_left, - successful_calls, ); } pallet_utility::Call::__Ignore(_, _) => { @@ -79,43 +67,50 @@ pub(crate) fn extract_utility_block_object_mapping>( } } -pub(crate) fn extract_call_block_object_mapping>( +pub(crate) fn extract_call_block_object_mapping( mut base_offset: u32, objects: &mut Vec, call: &RuntimeCall, recursion_depth_left: u16, - successful_calls: &mut Peekable, ) { - // Add enum variant to the base offset. + // Add RuntimeCall enum variant to the base offset. base_offset += 1; match call { // Extract the actual object mappings. RuntimeCall::System(frame_system::Call::remark { remark }) => { - objects.push(BlockObject::V0 { + objects.push(BlockObject { hash: crypto::blake3_hash(remark), - offset: base_offset, + // Add frame_system::Call enum variant to the base offset. + offset: base_offset + 1, }); } + RuntimeCall::System(frame_system::Call::remark_with_event { remark }) => { + objects.push(BlockObject { + hash: crypto::blake3_hash(remark), + // Add frame_system::Call enum variant to the base offset. + offset: base_offset + 1, + }); + } + RuntimeCall::HistorySeeding(pallet_history_seeding::Call::seed_history { remark }) => { + objects.push(BlockObject { + hash: crypto::blake3_hash(remark), + // Add pallet_history_seeding::Call enum variant to the base offset. + offset: base_offset + 1, + }); + } + // Recursively extract object mappings for the call. - RuntimeCall::Utility(call) => extract_utility_block_object_mapping( - base_offset, - objects, - call, - recursion_depth_left, - successful_calls, - ), + RuntimeCall::Utility(call) => { + extract_utility_block_object_mapping(base_offset, objects, call, recursion_depth_left) + } // Other calls don't contain object mappings. _ => {} } } -pub(crate) fn extract_block_object_mapping( - block: Block, - successful_calls: Vec, -) -> BlockObjectMapping { +pub(crate) fn extract_block_object_mapping(block: Block) -> BlockObjectMapping { let mut block_object_mapping = BlockObjectMapping::default(); - let mut successful_calls = successful_calls.into_iter().peekable(); let mut base_offset = block.header.encoded_size() + Compact::compact_len(&(block.extrinsics.len() as u32)); for extrinsic in block.extrinsics { @@ -135,10 +130,9 @@ pub(crate) fn extract_block_object_mapping( extract_call_block_object_mapping( base_extrinsic_offset as u32, - &mut block_object_mapping.objects, + block_object_mapping.objects_mut(), &extrinsic.function, MAX_OBJECT_MAPPING_RECURSION_DEPTH, - &mut successful_calls, ); base_offset += extrinsic.encoded_size(); diff --git a/crates/subspace-runtime/src/signed_extensions.rs b/crates/subspace-runtime/src/signed_extensions.rs index bd9e338ff4..782b54e609 100644 --- a/crates/subspace-runtime/src/signed_extensions.rs +++ b/crates/subspace-runtime/src/signed_extensions.rs @@ -1,52 +1,12 @@ use crate::{Runtime, RuntimeCall, RuntimeConfigs}; use codec::{Decode, Encode}; +use core::marker::PhantomData; use scale_info::TypeInfo; use sp_runtime::traits::{DispatchInfoOf, SignedExtension}; use sp_runtime::transaction_validity::{ InvalidTransaction, TransactionValidity, TransactionValidityError, ValidTransaction, }; use sp_std::prelude::*; -/// Controls non-root access to feeds and object store -#[derive(Debug, Encode, Decode, Clone, Eq, PartialEq, Default, TypeInfo)] -pub struct CheckStorageAccess; - -impl SignedExtension for CheckStorageAccess { - const IDENTIFIER: &'static str = "CheckStorageAccess"; - type AccountId = ::AccountId; - type Call = ::RuntimeCall; - type AdditionalSigned = (); - type Pre = (); - - fn additional_signed(&self) -> Result { - Ok(()) - } - - fn validate( - &self, - _who: &Self::AccountId, - _call: &Self::Call, - _info: &DispatchInfoOf, - _len: usize, - ) -> TransactionValidity { - // TODO: Find a way to work around `Sudo::key()` - // (https://github.com/paritytech/polkadot-sdk/pull/3370) or remove this feature - // if RuntimeConfigs::enable_non_root_calls() || Some(who) == Sudo::key().as_ref() { - Ok(ValidTransaction::default()) - // } else { - // InvalidTransaction::BadSigner.into() - // } - } - - fn pre_dispatch( - self, - _who: &Self::AccountId, - _call: &Self::Call, - _info: &DispatchInfoOf, - _len: usize, - ) -> Result { - Ok(()) - } -} /// Disable specific pallets. #[derive(Debug, Encode, Decode, Clone, Eq, PartialEq, Default, TypeInfo)] @@ -109,3 +69,127 @@ impl SignedExtension for DisablePallets { } } } + +/// A custom signed extension to check if the caller is an authorized history seeder for +/// the `history_seeding` pallet. +#[derive(Encode, Decode, Clone, Eq, PartialEq, TypeInfo)] +#[scale_info(skip_type_params(T))] +pub struct CheckHistorySeeder(PhantomData); + +impl core::fmt::Debug for CheckHistorySeeder { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + f.debug_struct("CheckHistorySeeder").finish() + } +} + +impl CheckHistorySeeder { + pub fn new() -> Self { + Self(core::marker::PhantomData) + } +} + +impl Default for CheckHistorySeeder { + fn default() -> Self { + Self::new() + } +} + +impl SignedExtension for CheckHistorySeeder { + const IDENTIFIER: &'static str = "CheckHistorySeeder"; + + type AccountId = T::AccountId; + type Call = ::RuntimeCall; + type AdditionalSigned = (); + type Pre = (); + + fn additional_signed(&self) -> Result { + Ok(()) + } + + fn validate( + &self, + who: &Self::AccountId, + call: &Self::Call, + _info: &DispatchInfoOf, + _len: usize, + ) -> TransactionValidity { + match call { + crate::RuntimeCall::HistorySeeding(pallet_history_seeding::Call::seed_history { + .. + }) => { + if Some(who.clone()) != pallet_history_seeding::Pallet::::history_seeder() { + return Err(TransactionValidityError::Invalid( + InvalidTransaction::BadSigner, + )); + } + + Ok(ValidTransaction::default()) + } + _ => Ok(ValidTransaction::default()), + } + } + + fn pre_dispatch( + self, + who: &Self::AccountId, + _call: &Self::Call, + _info: &DispatchInfoOf, + _len: usize, + ) -> Result { + self.validate(who, _call, _info, _len)?; + Ok(()) + } +} + +#[cfg(test)] +mod tests { + use crate::{CheckHistorySeeder, Runtime, RuntimeCall, RuntimeOrigin}; + use codec::Encode; + use frame_support::dispatch::DispatchInfo; + use frame_support::pallet_prelude::{InvalidTransaction, TransactionValidityError}; + use frame_support::{assert_err, assert_ok}; + use sp_runtime::traits::SignedExtension; + use sp_runtime::{AccountId32, BuildStorage}; + + pub fn new_test_ext() -> sp_io::TestExternalities { + let t = frame_system::GenesisConfig::::default() + .build_storage() + .unwrap(); + t.into() + } + + #[test] + fn test_check_history_seeder_works() { + new_test_ext().execute_with(|| { + let call = RuntimeCall::HistorySeeding(pallet_history_seeding::Call::seed_history { + remark: vec![0u8; 256], + }); + + let who = AccountId32::new([0u8; 32]); + + assert_err!( + CheckHistorySeeder::::new().pre_dispatch( + &who, + &call, + &DispatchInfo::default(), + call.encoded_size() + ), + TransactionValidityError::Invalid(InvalidTransaction::BadSigner), + ); + + // set seeder + pallet_history_seeding::Pallet::::set_history_seeder( + RuntimeOrigin::root(), + who.clone(), + ) + .unwrap(); + + assert_ok!(CheckHistorySeeder::::new().pre_dispatch( + &who, + &call, + &DispatchInfo::default(), + call.encoded_size() + )); + }); + } +} diff --git a/crates/subspace-service/Cargo.toml b/crates/subspace-service/Cargo.toml index d5cd71e0d8..911a4e1521 100644 --- a/crates/subspace-service/Cargo.toml +++ b/crates/subspace-service/Cargo.toml @@ -16,72 +16,70 @@ include = [ targets = ["x86_64-unknown-linux-gnu"] [dependencies] -array-bytes = "6.2.2" +array-bytes = "6.2.3" async-channel = "1.8.0" -async-trait = "0.1.81" +async-trait = "0.1.83" cross-domain-message-gossip = { version = "0.1.0", path = "../../domains/client/cross-domain-message-gossip" } domain-runtime-primitives = { version = "0.1.0", path = "../../domains/primitives/runtime" } -frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -futures = "0.3.29" +frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +futures = "0.3.30" hex = "0.4.3" -jsonrpsee = { version = "0.23.2", features = ["server"] } -mmr-gadget = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -mmr-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +jsonrpsee = { version = "0.24.5", features = ["server"] } +mmr-gadget = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +mmr-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } parity-scale-codec = "3.6.12" parking_lot = "0.12.2" prometheus-client = "0.22.3" -prost = "0.12" rayon = "1.10.0" -sc-basic-authorship = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-chain-spec = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-basic-authorship = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-chain-spec = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sc-consensus-subspace = { version = "0.1.0", path = "../sc-consensus-subspace" } sc-consensus-subspace-rpc = { version = "0.1.0", path = "../sc-consensus-subspace-rpc" } -sc-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sc-domains = { version = "0.1.0", path = "../sc-domains" } -sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-informant = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-light = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-transactions = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-offchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-informant = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-light = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-transactions = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-offchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sc-proof-of-time = { version = "0.1.0", path = "../sc-proof-of-time" } -sc-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-rpc-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-rpc-spec-v2 = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-sysinfo = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } +sc-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-rpc-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-sysinfo = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } sc-subspace-block-relay = { version = "0.1.0", path = "../sc-subspace-block-relay" } -sc-telemetry = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-tracing = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-telemetry = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-tracing = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } schnellru = "0.2.1" schnorrkel = "0.11.4" -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-consensus-subspace = { version = "0.1.0", path = "../sp-consensus-subspace" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../sp-domains" } sp-domains-fraud-proof = { version = "0.1.0", path = "../sp-domains-fraud-proof" } -sp-externalities = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-externalities = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", path = "../../domains/primitives/messenger" } sp-messenger-host-functions = { version = "0.1.0", path = "../../domains/primitives/messenger-host-functions" } -sp-mmr-primitives = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-mmr-primitives = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-objects = { version = "0.1.0", path = "../sp-objects" } -sp-offchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-offchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { version = "0.1.0", path = "../sp-subspace-mmr" } -sp-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } static_assertions = "1.1.0" subspace-archiving = { version = "0.1.0", path = "../subspace-archiving" } subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives" } @@ -89,15 +87,15 @@ subspace-erasure-coding = { version = "0.1.0", path = "../subspace-erasure-codin subspace-networking = { version = "0.1.0", path = "../subspace-networking" } subspace-proof-of-space = { version = "0.1.0", path = "../subspace-proof-of-space" } subspace-runtime-primitives = { version = "0.1.0", path = "../subspace-runtime-primitives" } -substrate-frame-rpc-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -substrate-prometheus-endpoint = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -thiserror = "1.0.63" -tokio = { version = "1.39.2", features = ["sync"] } +substrate-frame-rpc-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +substrate-prometheus-endpoint = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +thiserror = "1.0.64" +tokio = { version = "1.40.0", features = ["sync"] } tracing = "0.1.40" -sp-session = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system-rpc-runtime-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-session = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system-rpc-runtime-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] runtime-benchmarks = [ diff --git a/crates/subspace-service/src/config.rs b/crates/subspace-service/src/config.rs index 8c62f6cd8c..60b606ee5c 100644 --- a/crates/subspace-service/src/config.rs +++ b/crates/subspace-service/src/config.rs @@ -6,7 +6,8 @@ use sc_network::config::{ SyncMode, TransportConfig, DEFAULT_KADEMLIA_REPLICATION_FACTOR, }; use sc_service::config::{ - IpNetwork, KeystoreConfig, OffchainWorkerConfig, PrometheusConfig, RpcBatchRequestConfig, + ExecutorConfiguration, IpNetwork, KeystoreConfig, OffchainWorkerConfig, PrometheusConfig, + RpcBatchRequestConfig, RpcConfiguration, RpcEndpoint, }; use sc_service::{ BasePath, BlocksPruning, Configuration, DatabaseSource, PruningMode, RpcMethods, @@ -116,8 +117,6 @@ pub struct SubstrateConfiguration { pub force_authoring: bool, /// Chain specification pub chain_spec: Box, - /// Configuration of the output format that the informant uses. - pub informant_output_format: sc_informant::OutputFormat, } impl From for Configuration { @@ -127,6 +126,41 @@ impl From for Configuration { + configuration.network.default_peers_set.out_peers; let client_version = format!("{}/{}", configuration.impl_name, configuration.impl_version); + let rpc_batch_config = if configuration.rpc_options.disable_batch_requests { + RpcBatchRequestConfig::Disabled + } else if let Some(l) = configuration.rpc_options.max_batch_request_len { + RpcBatchRequestConfig::Limit(l) + } else { + RpcBatchRequestConfig::Unlimited + }; + let rpc_addr = configuration.rpc_options.listen_on.map(|listen_addr| { + vec![RpcEndpoint { + batch_config: rpc_batch_config, + max_connections: configuration.rpc_options.max_connections, + listen_addr, + rpc_methods: configuration.rpc_options.methods, + rate_limit: configuration.rpc_options.rate_limit, + rate_limit_trust_proxy_headers: configuration + .rpc_options + .rate_limit_trust_proxy_headers, + rate_limit_whitelisted_ips: configuration + .rpc_options + .rate_limit_whitelisted_ips + .clone(), + max_payload_in_mb: RPC_DEFAULT_MAX_REQUEST_SIZE_MB, + max_payload_out_mb: RPC_DEFAULT_MAX_RESPONSE_SIZE_MB, + max_subscriptions_per_connection: configuration + .rpc_options + .max_subscriptions_per_connection, + max_buffer_capacity_per_connection: configuration + .rpc_options + .message_buffer_capacity_per_connection, + cors: configuration.rpc_options.cors.clone(), + retry_random_port: true, + is_optional: false, + }] + }); + Self { impl_name: configuration.impl_name, impl_version: configuration.impl_version, @@ -179,33 +213,36 @@ impl From for Configuration { trie_cache_maximum_size: Some(64 * 1024 * 1024), state_pruning: Some(configuration.state_pruning), blocks_pruning: configuration.blocks_pruning, - wasm_method: Default::default(), + executor: ExecutorConfiguration { + wasm_method: Default::default(), + // Substrate's default + max_runtime_instances: 8, + default_heap_pages: None, + // Substrate's default + runtime_cache_size: 2, + }, wasm_runtime_overrides: None, - rpc_addr: configuration.rpc_options.listen_on, - rpc_methods: configuration.rpc_options.methods, - rpc_max_connections: configuration.rpc_options.max_connections, - rpc_cors: configuration.rpc_options.cors, - rpc_max_request_size: RPC_DEFAULT_MAX_REQUEST_SIZE_MB, - rpc_max_response_size: RPC_DEFAULT_MAX_RESPONSE_SIZE_MB, - rpc_id_provider: None, - rpc_max_subs_per_conn: configuration.rpc_options.max_subscriptions_per_connection, - // Doesn't matter since we have specified address above - rpc_port: 0, - rpc_message_buffer_capacity: configuration - .rpc_options - .message_buffer_capacity_per_connection, - rpc_batch_config: if configuration.rpc_options.disable_batch_requests { - RpcBatchRequestConfig::Disabled - } else if let Some(l) = configuration.rpc_options.max_batch_request_len { - RpcBatchRequestConfig::Limit(l) - } else { - RpcBatchRequestConfig::Unlimited + rpc: RpcConfiguration { + addr: rpc_addr, + methods: configuration.rpc_options.methods, + max_connections: configuration.rpc_options.max_connections, + cors: configuration.rpc_options.cors, + max_request_size: RPC_DEFAULT_MAX_REQUEST_SIZE_MB, + max_response_size: RPC_DEFAULT_MAX_RESPONSE_SIZE_MB, + id_provider: None, + max_subs_per_conn: configuration.rpc_options.max_subscriptions_per_connection, + // Doesn't matter since we have specified address above + port: 0, + message_buffer_capacity: configuration + .rpc_options + .message_buffer_capacity_per_connection, + batch_config: rpc_batch_config, + rate_limit: configuration.rpc_options.rate_limit, + rate_limit_whitelisted_ips: configuration.rpc_options.rate_limit_whitelisted_ips, + rate_limit_trust_proxy_headers: configuration + .rpc_options + .rate_limit_trust_proxy_headers, }, - rpc_rate_limit: configuration.rpc_options.rate_limit, - rpc_rate_limit_whitelisted_ips: configuration.rpc_options.rate_limit_whitelisted_ips, - rpc_rate_limit_trust_proxy_headers: configuration - .rpc_options - .rate_limit_trust_proxy_headers, prometheus_config: configuration .prometheus_listen_on .map(|prometheus_listen_on| { @@ -215,7 +252,6 @@ impl From for Configuration { ) }), telemetry_endpoints: configuration.telemetry_endpoints, - default_heap_pages: None, // Offchain worker is not used // indexing is used to store the mmr leaves from Runtime offchain_worker: OffchainWorkerConfig { @@ -229,8 +265,6 @@ impl From for Configuration { tracing_receiver: Default::default(), chain_spec: configuration.chain_spec, // Substrate's default - max_runtime_instances: 8, - // Substrate's default announce_block: true, role: if configuration.farmer { sc_service::Role::Authority @@ -238,9 +272,6 @@ impl From for Configuration { sc_service::Role::Full }, base_path: BasePath::new(configuration.base_path), - informant_output_format: configuration.informant_output_format, - // Substrate's default - runtime_cache_size: 2, } } } diff --git a/crates/subspace-service/src/domains/request_handler.rs b/crates/subspace-service/src/domains/request_handler.rs index 59252b357d..070d492f7a 100644 --- a/crates/subspace-service/src/domains/request_handler.rs +++ b/crates/subspace-service/src/domains/request_handler.rs @@ -21,7 +21,7 @@ use parity_scale_codec::{Decode, Encode}; use sc_client_api::{BlockBackend, ProofProvider}; use sc_network::request_responses::{IncomingRequest, OutgoingResponse}; use sc_network::{NetworkBackend, PeerId}; -use sp_api::{ApiExt, ProvideRuntimeApi}; +use sp_api::ProvideRuntimeApi; use sp_blockchain::HeaderBackend; use sp_domains::{DomainId, DomainsApi, ExecutionReceiptFor}; use sp_domains_fraud_proof::FraudProofApi; @@ -34,11 +34,7 @@ use tracing::{debug, error, trace}; /// Generates a `RequestResponseProtocolConfig` for the state request protocol, refusing incoming /// requests. -pub fn generate_protocol_config< - Hash: AsRef<[u8]>, - B: BlockT, - N: NetworkBackend::Hash>, ->( +pub fn generate_protocol_config, B: BlockT, N: NetworkBackend>( genesis_hash: Hash, fork_id: Option<&str>, inbound_queue: async_channel::Sender, @@ -114,7 +110,7 @@ where num_peer_hint: usize, ) -> (Self, NB::RequestResponseProtocolConfig) where - NB: NetworkBackend::Hash>, + NB: NetworkBackend, { // Reserve enough request slots for one request per peer when we are at the maximum // number of peers. @@ -178,19 +174,6 @@ where info.best_hash }; - let consensus_api_version = self - .client - .runtime_api() - .api_version::>(target_block_hash) - .map_err(sp_blockchain::Error::RuntimeApiError)? - .ok_or_else(|| HandleRequestError::ApiVersionNotSupported)?; - - if consensus_api_version < 6 { - debug!("Incorrect API version to support the last confirmed block request: {consensus_api_version}"); - - return Err(HandleRequestError::ApiVersionNotSupported); - } - let last_confirmed_block_receipt = self .client .runtime_api() @@ -249,9 +232,6 @@ enum HandleRequestError { #[error("Failed to send response.")] SendResponse, - #[error("Api version is not supported.")] - ApiVersionNotSupported, - #[error("Failed to decode request: {0}.")] Decode(#[from] codec::Error), diff --git a/crates/subspace-service/src/lib.rs b/crates/subspace-service/src/lib.rs index 24e320da17..2fc44665f5 100644 --- a/crates/subspace-service/src/lib.rs +++ b/crates/subspace-service/src/lib.rs @@ -62,8 +62,8 @@ use sc_client_api::{ AuxStore, Backend, BlockBackend, BlockchainEvents, ExecutorProvider, HeaderBackend, }; use sc_consensus::{ - BasicQueue, BlockCheckParams, BlockImport, BlockImportParams, DefaultImportQueue, ImportQueue, - ImportResult, SharedBlockImport, + BasicQueue, BlockCheckParams, BlockImport, BlockImportParams, BoxBlockImport, + DefaultImportQueue, ImportQueue, ImportResult, }; use sc_consensus_slots::SlotProportion; use sc_consensus_subspace::archiver::{ @@ -79,12 +79,18 @@ use sc_consensus_subspace::verifier::{SubspaceVerifier, SubspaceVerifierOptions} use sc_consensus_subspace::SubspaceLink; use sc_domains::ExtensionsFactory as DomainsExtensionFactory; use sc_network::service::traits::NetworkService; -use sc_network::{NetworkWorker, NotificationMetrics, NotificationService}; +use sc_network::{NetworkWorker, NotificationMetrics, NotificationService, Roles}; +use sc_network_sync::block_relay_protocol::BlockRelayParams; +use sc_network_sync::engine::SyncingEngine; +use sc_network_sync::service::network::NetworkServiceProvider; use sc_proof_of_time::source::gossip::pot_gossip_peers_set_config; use sc_proof_of_time::source::{PotSlotInfo, PotSourceWorker}; use sc_proof_of_time::verifier::PotVerifier; use sc_service::error::Error as ServiceError; -use sc_service::{Configuration, NetworkStarter, SpawnTasksParams, TaskManager}; +use sc_service::{ + build_network_advanced, build_polkadot_syncing_strategy, BuildNetworkAdvancedParams, + Configuration, NetworkStarter, SpawnTasksParams, TaskManager, +}; use sc_subspace_block_relay::{ build_consensus_relay, BlockRelayConfigurationError, NetworkWrapper, }; @@ -93,10 +99,11 @@ use sc_transaction_pool_api::OffchainTransactionPoolFactory; use sp_api::{ApiExt, ConstructRuntimeApi, Metadata, ProvideRuntimeApi}; use sp_block_builder::BlockBuilder; use sp_blockchain::HeaderMetadata; +use sp_consensus::block_validation::DefaultBlockAnnounceValidator; use sp_consensus_slots::Slot; use sp_consensus_subspace::digests::extract_pre_digest; use sp_consensus_subspace::{ - FarmerPublicKey, KzgExtension, PosExtension, PotExtension, PotNextSlotInput, SubspaceApi, + KzgExtension, PosExtension, PotExtension, PotNextSlotInput, SubspaceApi, }; use sp_core::offchain::storage::OffchainDb; use sp_core::offchain::OffchainDbExt; @@ -120,7 +127,9 @@ use std::num::NonZeroUsize; use std::sync::Arc; use std::time::Duration; use subspace_core_primitives::crypto::kzg::{embedded_kzg_settings, Kzg}; -use subspace_core_primitives::{BlockNumber, PotSeed, Record, REWARD_SIGNING_CONTEXT}; +use subspace_core_primitives::pieces::Record; +use subspace_core_primitives::pot::PotSeed; +use subspace_core_primitives::{BlockNumber, PublicKey, REWARD_SIGNING_CONTEXT}; use subspace_erasure_coding::ErasureCoding; use subspace_networking::libp2p::multiaddr::Protocol; use subspace_networking::utils::piece_provider::PieceProvider; @@ -176,6 +185,7 @@ pub enum Error { } // Simple wrapper whose ony purpose is to convert error type +#[derive(Clone)] struct BlockImportWrapper(BI); #[async_trait::async_trait] @@ -199,7 +209,7 @@ where } async fn import_block( - &mut self, + &self, block: BlockImportParams, ) -> Result { self.0 @@ -263,7 +273,7 @@ where + Send + Sync + 'static, - Client::Api: SubspaceApi + Client::Api: SubspaceApi + DomainsApi + BundleProducerElectionApi + MmrApi> @@ -443,7 +453,7 @@ where RuntimeApi: ConstructRuntimeApi> + Send + Sync + 'static, { /// Subspace block import - pub block_import: SharedBlockImport, + pub block_import: BoxBlockImport, /// Subspace link pub subspace_link: SubspaceLink, /// Segment headers store @@ -483,7 +493,7 @@ where + OffchainWorkerApi + SessionKeys + TaggedTransactionQueue - + SubspaceApi + + SubspaceApi + DomainsApi + FraudProofApi + BundleProducerElectionApi @@ -502,8 +512,8 @@ where }) .transpose()?; - let executor = sc_service::new_wasm_executor(config); - let domains_executor = sc_service::new_wasm_executor(config); + let executor = sc_service::new_wasm_executor(&config.executor); + let domains_executor = sc_service::new_wasm_executor(&config.executor); let backend = sc_service::new_db_backend(config.db_config())?; @@ -624,30 +634,27 @@ where client.clone(), )?; - let verifier = SubspaceVerifier::::new(SubspaceVerifierOptions { + let verifier = SubspaceVerifier::::new(SubspaceVerifierOptions { client: client.clone(), chain_constants, kzg, - select_chain: select_chain.clone(), telemetry: telemetry.as_ref().map(|x| x.handle()), - offchain_tx_pool_factory: OffchainTransactionPoolFactory::new(transaction_pool.clone()), reward_signing_context: schnorrkel::context::signing_context(REWARD_SIGNING_CONTEXT), sync_target_block_number: Arc::clone(&sync_target_block_number), is_authoring_blocks: config.role.is_authority(), pot_verifier: pot_verifier.clone(), }); - let block_import = SharedBlockImport::new(BlockImportWrapper(block_import)); let import_queue = BasicQueue::new( verifier, - block_import.clone(), + Box::new(BlockImportWrapper(block_import.clone())), None, &task_manager.spawn_essential_handle(), config.prometheus_registry(), ); let other = OtherPartialComponents { - block_import, + block_import: Box::new(BlockImportWrapper(block_import.clone())), subspace_link, segment_headers_store, pot_verifier, @@ -680,7 +687,7 @@ where Client::Api: TaggedTransactionQueue + DomainsApi + FraudProofApi - + SubspaceApi + + SubspaceApi + MmrApi> + MessengerApi, ::Hash>, { @@ -740,7 +747,7 @@ where + SessionKeys + TaggedTransactionQueue + TransactionPaymentApi - + SubspaceApi + + SubspaceApi + DomainsApi + FraudProofApi + ObjectsApi @@ -766,8 +773,7 @@ where mut telemetry, } = other; - let offchain_indexing_enabled = config.offchain_worker.indexing_enabled; - let fork_id = config.base.chain_spec.fork_id().map(String::from); + let offchain_indexing_enabled = config.base.offchain_worker.indexing_enabled; let (node, bootstrap_nodes) = match config.subspace_networking { SubspaceNetworking::Reuse { node, @@ -862,19 +868,25 @@ where } }; + let substrate_prometheus_registry = config + .base + .prometheus_config + .as_ref() + .map(|prometheus_config| prometheus_config.registry.clone()); let import_queue_service1 = import_queue.service(); let import_queue_service2 = import_queue.service(); let network_wrapper = Arc::new(NetworkWrapper::default()); - let block_relay = Some( - build_consensus_relay( - network_wrapper.clone(), - client.clone(), - transaction_pool.clone(), - config.base.prometheus_registry(), - ) - .map_err(Error::BlockRelay)?, + let block_relay = build_consensus_relay( + network_wrapper.clone(), + client.clone(), + transaction_pool.clone(), + substrate_prometheus_registry.as_ref(), + ) + .map_err(Error::BlockRelay)?; + let mut net_config = sc_network::config::FullNetworkConfiguration::new( + &config.base.network, + substrate_prometheus_registry.clone(), ); - let mut net_config = sc_network::config::FullNetworkConfiguration::new(&config.base.network); let (xdm_gossip_notification_config, xdm_gossip_notification_service) = xdm_gossip_peers_set_config(); net_config.add_notification_protocol(xdm_gossip_notification_config); @@ -890,16 +902,18 @@ where .reserved_nodes .len(); + let protocol_id = config.base.protocol_id(); + let fork_id = config.base.chain_spec.fork_id(); + if let Some(offchain_storage) = backend.offchain_storage() { // Allow both outgoing and incoming requests. - let (handler, protocol_config) = - MmrRequestHandler::new::::Hash>, _>( - &config.base.protocol_id(), - fork_id.as_deref(), - client.clone(), - num_peer_hint, - offchain_storage, - ); + let (handler, protocol_config) = MmrRequestHandler::new::, _>( + &protocol_id, + fork_id, + client.clone(), + num_peer_hint, + offchain_storage, + ); task_manager .spawn_handle() .spawn("mmr-request-handler", Some("networking"), handler.run()); @@ -909,10 +923,10 @@ where // "Last confirmed domain block execution receipt" request handler { - let (handler, protocol_config) = LastDomainBlockERRequestHandler::new::< - NetworkWorker::Hash>, - >( - fork_id.as_deref(), client.clone(), num_peer_hint + let (handler, protocol_config) = LastDomainBlockERRequestHandler::new::>( + fork_id, + client.clone(), + num_peer_hint, ); task_manager.spawn_handle().spawn( "last-domain-execution-receipt-request-handler", @@ -923,25 +937,77 @@ where net_config.add_request_response_protocol(protocol_config); } - let (network_service, system_rpc_tx, tx_handler_controller, network_starter, sync_service) = - sc_service::build_network(sc_service::BuildNetworkParams { - config: &config.base, + let network_service_provider = NetworkServiceProvider::new(); + let network_service_handle = network_service_provider.handle(); + let (network_service, system_rpc_tx, tx_handler_controller, network_starter, sync_service) = { + let spawn_handle = task_manager.spawn_handle(); + let metrics = NotificationMetrics::new(substrate_prometheus_registry.as_ref()); + + // TODO: Remove BlockRelayParams here and simplify relay initialization + let block_downloader = { + let BlockRelayParams { + mut server, + downloader, + request_response_config, + } = block_relay; + net_config.add_request_response_protocol(request_response_config); + + spawn_handle.spawn("block-request-handler", Some("networking"), async move { + server.run().await; + }); + + downloader + }; + + let syncing_strategy = build_polkadot_syncing_strategy( + protocol_id.clone(), + fork_id, + &mut net_config, + None, + block_downloader, + client.clone(), + &spawn_handle, + substrate_prometheus_registry.as_ref(), + )?; + + let (syncing_engine, sync_service, block_announce_config) = + SyncingEngine::new::>( + Roles::from(&config.base.role), + Arc::clone(&client), + substrate_prometheus_registry.as_ref(), + metrics.clone(), + &net_config, + protocol_id.clone(), + fork_id, + Box::new(DefaultBlockAnnounceValidator), + syncing_strategy, + network_service_provider.handle(), + import_queue.service(), + net_config.peer_store_handle(), + config.base.network.force_synced, + ) + .map_err(sc_service::Error::from)?; + + spawn_handle.spawn_blocking("syncing", None, syncing_engine.run()); + + build_network_advanced(BuildNetworkAdvancedParams { + role: config.base.role, + protocol_id, + fork_id, + ipfs_server: config.base.network.ipfs_server, + announce_block: config.base.announce_block, net_config, - client: client.clone(), - transaction_pool: transaction_pool.clone(), - spawn_handle: task_manager.spawn_handle(), + client: Arc::clone(&client), + transaction_pool: Arc::clone(&transaction_pool), + spawn_handle, import_queue, - block_announce_validator_builder: None, - warp_sync_params: None, - block_relay, - metrics: NotificationMetrics::new( - config - .base - .prometheus_config - .as_ref() - .map(|cfg| &cfg.registry), - ), - })?; + sync_service, + block_announce_config, + network_service_provider, + metrics_registry: substrate_prometheus_registry.as_ref(), + metrics, + })? + }; task_manager.spawn_handle().spawn( "sync-target-follower", @@ -1015,13 +1081,13 @@ where let snap_sync_task = snap_sync( segment_headers_store.clone(), node.clone(), - fork_id.clone(), + fork_id.map(|fork_id| fork_id.to_string()), Arc::clone(&client), import_queue_service1, pause_sync.clone(), dsn_sync_piece_getter.clone(), - Arc::clone(&network_service), sync_service.clone(), + network_service_handle, subspace_link.erasure_coding().clone(), ); @@ -1057,7 +1123,7 @@ where }), ); - if let Some(registry) = config.base.prometheus_registry() { + if let Some(registry) = substrate_prometheus_registry.as_ref() { match NodeMetrics::new( client.clone(), client.every_import_notification_stream(), @@ -1145,7 +1211,7 @@ where task_manager.spawn_handle(), client.clone(), transaction_pool.clone(), - config.base.prometheus_registry(), + substrate_prometheus_registry.as_ref(), telemetry.as_ref().map(|x| x.handle()), ); @@ -1230,15 +1296,12 @@ where let reward_signing_notification_stream = reward_signing_notification_stream.clone(); let archived_segment_notification_stream = archived_segment_notification_stream.clone(); let transaction_pool = transaction_pool.clone(); - let chain_spec = config.base.chain_spec.cloned_box(); let backend = backend.clone(); - Box::new(move |deny_unsafe, subscription_executor| { + Box::new(move |subscription_executor| { let deps = rpc::FullDeps { client: client.clone(), pool: transaction_pool.clone(), - chain_spec: chain_spec.cloned_box(), - deny_unsafe, subscription_executor, new_slot_notification_stream: new_slot_notification_stream.clone(), reward_signing_notification_stream: reward_signing_notification_stream.clone(), @@ -1255,7 +1318,7 @@ where rpc::create_full(deps).map_err(Into::into) }) } else { - Box::new(|_, _| Ok(RpcModule::new(()))) + Box::new(|_| Ok(RpcModule::new(()))) }, backend: backend.clone(), system_rpc_tx, diff --git a/crates/subspace-service/src/mmr/request_handler.rs b/crates/subspace-service/src/mmr/request_handler.rs index 0d774eac73..dcb5c76e5b 100644 --- a/crates/subspace-service/src/mmr/request_handler.rs +++ b/crates/subspace-service/src/mmr/request_handler.rs @@ -47,11 +47,7 @@ mod rep { /// Generates a `RequestResponseProtocolConfig` for the state request protocol, refusing incoming /// requests. -pub fn generate_protocol_config< - Hash: AsRef<[u8]>, - B: BlockT, - N: NetworkBackend::Hash>, ->( +pub fn generate_protocol_config, B: BlockT, N: NetworkBackend>( _: &ProtocolId, genesis_hash: Hash, fork_id: Option<&str>, @@ -142,7 +138,7 @@ where offchain_storage: OS, ) -> (Self, NB::RequestResponseProtocolConfig) where - NB: NetworkBackend::Hash>, + NB: NetworkBackend, Client: BlockBackend + ProofProvider + Send + Sync + 'static, { // Reserve enough request slots for one request per peer when we are at the maximum diff --git a/crates/subspace-service/src/rpc.rs b/crates/subspace-service/src/rpc.rs index 6393182266..8f85891010 100644 --- a/crates/subspace-service/src/rpc.rs +++ b/crates/subspace-service/src/rpc.rs @@ -15,6 +15,7 @@ // along with this program. If not, see . //! A collection of node-specific RPC methods. +//! //! Substrate provides the `sc-rpc` crate, which defines the core RPC layer //! used by Substrate nodes. This file extends those RPC definitions with //! capabilities that are specific to this project's runtime configuration. @@ -32,18 +33,16 @@ use sc_consensus_subspace::slot_worker::{ }; use sc_consensus_subspace_rpc::{SubspaceRpc, SubspaceRpcApiServer, SubspaceRpcConfig}; use sc_rpc::SubscriptionTaskExecutor; -use sc_rpc_api::DenyUnsafe; -use sc_rpc_spec_v2::chain_spec::{ChainSpec, ChainSpecApiServer}; use sc_transaction_pool_api::TransactionPool; use sp_api::ProvideRuntimeApi; use sp_block_builder::BlockBuilder; use sp_blockchain::{Error as BlockChainError, HeaderBackend, HeaderMetadata}; use sp_consensus::SyncOracle; -use sp_consensus_subspace::{FarmerPublicKey, SubspaceApi}; +use sp_consensus_subspace::SubspaceApi; use sp_objects::ObjectsApi; use std::sync::Arc; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::BlockNumber; +use subspace_core_primitives::{BlockNumber, PublicKey}; use subspace_erasure_coding::ErasureCoding; use subspace_networking::libp2p::Multiaddr; use subspace_runtime_primitives::opaque::Block; @@ -59,10 +58,6 @@ where pub client: Arc, /// Transaction pool instance. pub pool: Arc

, - /// A copy of the chain spec. - pub chain_spec: Box, - /// Whether to deny unsafe calls. - pub deny_unsafe: DenyUnsafe, /// Executor to drive the subscription manager in the Grandpa RPC handler. pub subscription_executor: SubscriptionTaskExecutor, /// A stream with notifications about new slot arrival with ability to send solution back. @@ -102,7 +97,7 @@ where C::Api: substrate_frame_rpc_system::AccountNonceApi + pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi + BlockBuilder - + SubspaceApi + + SubspaceApi + mmr_rpc::MmrRuntimeApi::Hash, BlockNumber> + ObjectsApi, P: TransactionPool + 'static, @@ -115,8 +110,6 @@ where let FullDeps { client, pool, - chain_spec, - deny_unsafe, subscription_executor, new_slot_notification_stream, reward_signing_notification_stream, @@ -129,12 +122,7 @@ where backend, } = deps; - let chain_name = chain_spec.name().to_string(); - let genesis_hash = client.info().genesis_hash; - let properties = chain_spec.properties(); - module.merge(ChainSpec::new(chain_name, genesis_hash, properties).into_rpc())?; - - module.merge(System::new(client.clone(), pool, deny_unsafe).into_rpc())?; + module.merge(System::new(client.clone(), pool).into_rpc())?; module.merge(TransactionPayment::new(client.clone()).into_rpc())?; module.merge( @@ -149,7 +137,6 @@ where sync_oracle, kzg, erasure_coding, - deny_unsafe, })? .into_rpc(), )?; diff --git a/crates/subspace-service/src/sync_from_dsn.rs b/crates/subspace-service/src/sync_from_dsn.rs index 6e630f39ca..70c4ad4015 100644 --- a/crates/subspace-service/src/sync_from_dsn.rs +++ b/crates/subspace-service/src/sync_from_dsn.rs @@ -14,11 +14,10 @@ use sc_consensus::import_queue::ImportQueueService; use sc_consensus_subspace::archiver::SegmentHeadersStore; use sc_network::service::traits::NetworkService; use sc_network::NetworkBlock; -use sc_service::ClientExt; pub use snap_sync::wait_for_block_import; use sp_api::ProvideRuntimeApi; use sp_blockchain::HeaderBackend; -use sp_consensus_subspace::{FarmerPublicKey, SubspaceApi}; +use sp_consensus_subspace::SubspaceApi; use sp_runtime::traits::{Block as BlockT, CheckedSub, NumberFor}; use std::error::Error; use std::fmt; @@ -26,7 +25,9 @@ use std::future::Future; use std::sync::atomic::{AtomicBool, AtomicU32, Ordering}; use std::sync::Arc; use std::time::{Duration, Instant}; -use subspace_core_primitives::{Piece, PieceIndex, SegmentIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use subspace_core_primitives::segments::SegmentIndex; +use subspace_core_primitives::PublicKey; use subspace_erasure_coding::ErasureCoding; use subspace_networking::utils::piece_provider::{PieceProvider, PieceValidator}; use subspace_networking::Node; @@ -88,7 +89,7 @@ enum NotificationReason { /// Create node observer that will track node state and send notifications to worker to start sync /// from DSN. #[allow(clippy::too_many_arguments)] -pub(super) fn create_observer_and_worker( +pub(super) fn create_observer_and_worker( segment_headers_store: SegmentHeadersStore, network_service: Arc, node: Node, @@ -105,18 +106,16 @@ pub(super) fn create_observer_and_worker( ) where Block: BlockT, - Backend: sc_client_api::Backend, AS: AuxStore + Send + Sync + 'static, NB: NetworkBlock> + Send + 'static, Client: HeaderBackend + BlockBackend + BlockchainEvents + ProvideRuntimeApi - + ClientExt + Send + Sync + 'static, - Client::Api: SubspaceApi, + Client::Api: SubspaceApi, PG: DsnSyncPieceGetter + Send + Sync + 'static, { let (tx, rx) = mpsc::channel(0); @@ -257,7 +256,7 @@ async fn create_substrate_network_observer( } #[allow(clippy::too_many_arguments)] -async fn create_worker( +async fn create_worker( segment_headers_store: SegmentHeadersStore, node: &Node, client: &Client, @@ -271,18 +270,16 @@ async fn create_worker( ) -> Result<(), sc_service::Error> where Block: BlockT, - Backend: sc_client_api::Backend, AS: AuxStore + Send + Sync + 'static, IQS: ImportQueueService + ?Sized, NB: NetworkBlock>, Client: HeaderBackend + BlockBackend + ProvideRuntimeApi - + ClientExt + Send + Sync + 'static, - Client::Api: SubspaceApi, + Client::Api: SubspaceApi, PG: DsnSyncPieceGetter, { let info = client.info(); @@ -345,11 +342,6 @@ where } } - // Clear the block gap that arises from first block import with a much higher number than - // previously (resulting in a gap) - // TODO: This is a hack and better solution is needed: https://github.com/paritytech/polkadot-sdk/issues/4407 - client.clear_block_gap()?; - debug!("Finished DSN sync"); // This will notify Substrate's sync mechanism and allow regular Substrate sync to continue diff --git a/crates/subspace-service/src/sync_from_dsn/import_blocks.rs b/crates/subspace-service/src/sync_from_dsn/import_blocks.rs index 6970285b07..fea5dfc551 100644 --- a/crates/subspace-service/src/sync_from_dsn/import_blocks.rs +++ b/crates/subspace-service/src/sync_from_dsn/import_blocks.rs @@ -28,14 +28,18 @@ use sp_consensus::BlockOrigin; use sp_runtime::generic::SignedBlock; use sp_runtime::traits::{Block as BlockT, Header, NumberFor, One}; use sp_runtime::Saturating; +use std::sync::{Arc, Mutex}; use std::time::Duration; use subspace_archiving::reconstructor::Reconstructor; -use subspace_core_primitives::{ - ArchivedHistorySegment, BlockNumber, Piece, RecordedHistorySegment, SegmentIndex, +use subspace_core_primitives::pieces::Piece; +use subspace_core_primitives::segments::{ + ArchivedHistorySegment, RecordedHistorySegment, SegmentIndex, }; +use subspace_core_primitives::BlockNumber; use subspace_erasure_coding::ErasureCoding; use subspace_networking::utils::multihash::ToMultihash; use tokio::sync::Semaphore; +use tokio::task::spawn_blocking; use tracing::warn; /// How many blocks to queue before pausing and waiting for blocks to be imported, this is @@ -87,7 +91,7 @@ where } let mut imported_blocks = 0; - let mut reconstructor = Reconstructor::new(erasure_coding.clone()); + let mut reconstructor = Arc::new(Mutex::new(Reconstructor::new(erasure_coding.clone()))); // Start from the first unprocessed segment and process all segments known so far let segment_indices_iter = (*last_processed_segment_index + SegmentIndex::ONE) ..=segment_headers_store @@ -123,7 +127,7 @@ where if last_archived_block_number <= *last_processed_block_number { *last_processed_segment_index = segment_index; // Reset reconstructor instance - reconstructor = Reconstructor::new(erasure_coding.clone()); + reconstructor = Arc::new(Mutex::new(Reconstructor::new(erasure_coding.clone()))); continue; } // Just one partial unprocessed block and this was the last segment available, so nothing to @@ -133,13 +137,12 @@ where && segment_indices_iter.peek().is_none() { // Reset reconstructor instance - reconstructor = Reconstructor::new(erasure_coding.clone()); + reconstructor = Arc::new(Mutex::new(Reconstructor::new(erasure_coding.clone()))); continue; } let blocks = - download_and_reconstruct_blocks(segment_index, piece_getter, &mut reconstructor) - .await?; + download_and_reconstruct_blocks(segment_index, piece_getter, &reconstructor).await?; let mut blocks_to_import = Vec::with_capacity(QUEUED_BLOCKS_LIMIT as usize); @@ -233,10 +236,11 @@ where Ok(imported_blocks) } +/// Downloads and reconstructs blocks from a DSN segment, by concurrently downloading its pieces. pub(super) async fn download_and_reconstruct_blocks( segment_index: SegmentIndex, piece_getter: &PG, - reconstructor: &mut Reconstructor, + reconstructor: &Arc>, ) -> Result)>, Error> where PG: DsnSyncPieceGetter, @@ -321,10 +325,17 @@ where } } - let reconstructed_contents = reconstructor - .add_segment(segment_pieces.as_ref()) - .map_err(|error| error.to_string())?; - drop(segment_pieces); + // CPU-intensive piece and segment reconstruction code can block the async executor. + let reconstructor = reconstructor.clone(); + let reconstructed_contents = spawn_blocking(move || { + reconstructor + .lock() + .expect("Panic if previous thread panicked when holding the mutex") + .add_segment(segment_pieces.as_ref()) + }) + .await + .expect("Panic if blocking task panicked") + .map_err(|error| error.to_string())?; trace!(%segment_index, "Segment reconstructed successfully"); diff --git a/crates/subspace-service/src/sync_from_dsn/piece_validator.rs b/crates/subspace-service/src/sync_from_dsn/piece_validator.rs index 35ca09da2a..d19b7d61a0 100644 --- a/crates/subspace-service/src/sync_from_dsn/piece_validator.rs +++ b/crates/subspace-service/src/sync_from_dsn/piece_validator.rs @@ -3,7 +3,7 @@ use sc_client_api::AuxStore; use sc_consensus_subspace::archiver::SegmentHeadersStore; use subspace_archiving::archiver::is_piece_valid; use subspace_core_primitives::crypto::kzg::Kzg; -use subspace_core_primitives::{Piece, PieceIndex}; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; use subspace_networking::libp2p::PeerId; use subspace_networking::utils::piece_provider::PieceValidator; use subspace_networking::Node; diff --git a/crates/subspace-service/src/sync_from_dsn/segment_header_downloader.rs b/crates/subspace-service/src/sync_from_dsn/segment_header_downloader.rs index 96efe97b79..bc7043d891 100644 --- a/crates/subspace-service/src/sync_from_dsn/segment_header_downloader.rs +++ b/crates/subspace-service/src/sync_from_dsn/segment_header_downloader.rs @@ -3,7 +3,7 @@ use futures::StreamExt; use std::collections::{BTreeSet, HashMap}; use std::error::Error; use std::pin::pin; -use subspace_core_primitives::{SegmentHeader, SegmentIndex}; +use subspace_core_primitives::segments::{SegmentHeader, SegmentIndex}; use subspace_networking::libp2p::PeerId; use subspace_networking::{Node, SegmentHeaderRequest, SegmentHeaderResponse}; use tracing::{debug, error, trace, warn}; @@ -159,7 +159,7 @@ impl<'a> SegmentHeaderDownloader<'a> { SegmentHeaderRequest::LastSegmentHeaders { // Request 2 top segment headers, accounting for situations when new // segment header was just produced and not all nodes have it - segment_header_number: 2, + limit: 2, }, ) .await; @@ -314,19 +314,20 @@ impl<'a> SegmentHeaderDownloader<'a> { peer_id: PeerId, segment_headers: &[SegmentHeader], ) -> bool { - let segment_indexes = match segment_headers.first() { + let segment_indexes = match segment_headers.last() { None => { // Empty collection is invalid, everyone has at least one segment header return false; } - Some(first_segment_header) => { - // We expect the reverse order - let last_segment_index = first_segment_header.segment_index(); + Some(last_segment_header) => { + let last_segment_index = last_segment_header.segment_index(); - (SegmentIndex::ZERO..=last_segment_index) + let mut segment_indices = (SegmentIndex::ZERO..=last_segment_index) .rev() .take(segment_headers.len()) - .collect::>() + .collect::>(); + segment_indices.reverse(); + segment_indices } }; diff --git a/crates/subspace-service/src/sync_from_dsn/snap_sync.rs b/crates/subspace-service/src/sync_from_dsn/snap_sync.rs index 27cefdc856..b31958a0e6 100644 --- a/crates/subspace-service/src/sync_from_dsn/snap_sync.rs +++ b/crates/subspace-service/src/sync_from_dsn/snap_sync.rs @@ -10,28 +10,30 @@ use sc_consensus::{ StorageChanges, }; use sc_consensus_subspace::archiver::{decode_block, SegmentHeadersStore}; -use sc_network::{NetworkBlock, NetworkRequest, PeerId}; +use sc_network::{NetworkBlock, PeerId}; +use sc_network_sync::service::network::NetworkServiceHandle; use sc_network_sync::SyncingService; -use sc_service::{ClientExt, Error}; +use sc_service::Error; use sp_api::ProvideRuntimeApi; use sp_blockchain::HeaderBackend; use sp_consensus::BlockOrigin; -use sp_consensus_subspace::{FarmerPublicKey, SubspaceApi}; +use sp_consensus_subspace::SubspaceApi; use sp_objects::ObjectsApi; use sp_runtime::traits::{Block as BlockT, Header, NumberFor}; use std::collections::{HashSet, VecDeque}; use std::sync::atomic::{AtomicBool, Ordering}; -use std::sync::Arc; +use std::sync::{Arc, Mutex}; use std::time::Duration; use subspace_archiving::reconstructor::Reconstructor; -use subspace_core_primitives::{BlockNumber, SegmentIndex}; +use subspace_core_primitives::segments::SegmentIndex; +use subspace_core_primitives::{BlockNumber, PublicKey}; use subspace_erasure_coding::ErasureCoding; use subspace_networking::Node; use tokio::time::sleep; use tracing::{debug, error, info_span, trace, Instrument}; #[allow(clippy::too_many_arguments)] -pub(crate) async fn snap_sync( +pub(crate) async fn snap_sync( segment_headers_store: SegmentHeadersStore, node: Node, fork_id: Option, @@ -39,15 +41,13 @@ pub(crate) async fn snap_sync( mut import_queue_service: Box>, pause_sync: Arc, piece_getter: PG, - network_request: NR, sync_service: Arc>, + network_service_handle: NetworkServiceHandle, erasure_coding: ErasureCoding, ) where - Backend: sc_client_api::Backend, Block: BlockT, AS: AuxStore, Client: HeaderBackend - + ClientExt + ProvideRuntimeApi + ProofProvider + BlockImport @@ -55,11 +55,8 @@ pub(crate) async fn snap_sync( + Send + Sync + 'static, - // TODO: Remove when https://github.com/paritytech/polkadot-sdk/pull/5339 is in our fork - for<'a> &'a Client: BlockImport, - Client::Api: SubspaceApi + ObjectsApi, + Client::Api: SubspaceApi + ObjectsApi, PG: DsnSyncPieceGetter, - NR: NetworkRequest, { let info = client.info(); // Only attempt snap sync with genesis state @@ -75,8 +72,8 @@ pub(crate) async fn snap_sync( fork_id.as_deref(), &client, import_queue_service.as_mut(), - &network_request, &sync_service, + &network_service_handle, None, &erasure_coding, ); @@ -169,12 +166,12 @@ where } }; - // Skip the snap sync if there is just one segment header built on top of genesis, it is - // more efficient to sync it regularly + // We don't have the genesis state when we choose to snap sync. if target_segment_index <= SegmentIndex::ONE { - debug!("Snap sync was skipped due to too early chain history"); - - return Ok(None); + panic!( + "Snap sync is impossible - not enough archived history: \ + wipe the DB folder and rerun with --sync=full" + ); } // Identify all segment headers that would need to be reconstructed in order to get first @@ -231,11 +228,11 @@ where // Reconstruct blocks of the last segment let mut blocks = VecDeque::new(); { - let mut reconstructor = Reconstructor::new(erasure_coding.clone()); + let reconstructor = Arc::new(Mutex::new(Reconstructor::new(erasure_coding.clone()))); for segment_index in segments_to_reconstruct { let blocks_fut = - download_and_reconstruct_blocks(segment_index, piece_getter, &mut reconstructor); + download_and_reconstruct_blocks(segment_index, piece_getter, &reconstructor); blocks = VecDeque::from(blocks_fut.await?); } @@ -247,25 +244,23 @@ where #[allow(clippy::too_many_arguments)] /// Synchronize the blockchain to the target_block (approximate value based on the containing /// segment) or to the last archived block. -async fn sync( +async fn sync( segment_headers_store: &SegmentHeadersStore, node: &Node, piece_getter: &PG, fork_id: Option<&str>, client: &Arc, import_queue_service: &mut IQS, - network_request: &NR, sync_service: &SyncingService, + network_service_handle: &NetworkServiceHandle, target_block: Option, erasure_coding: &ErasureCoding, ) -> Result<(), Error> where - B: sc_client_api::Backend, PG: DsnSyncPieceGetter, AS: AuxStore, Block: BlockT, Client: HeaderBackend - + ClientExt + ProvideRuntimeApi + ProofProvider + BlockImport @@ -273,11 +268,8 @@ where + Send + Sync + 'static, - // TODO: Remove when https://github.com/paritytech/polkadot-sdk/pull/5339 is in our fork - for<'a> &'a Client: BlockImport, - Client::Api: SubspaceApi + ObjectsApi, + Client::Api: SubspaceApi + ObjectsApi, IQS: ImportQueueService + ?Sized, - NR: NetworkRequest, { debug!("Starting snap sync..."); @@ -328,11 +320,17 @@ where let (header, extrinsics) = signed_block.block.deconstruct(); // Download state for the first block, so it can be imported even without doing execution - let state = download_state(&header, client, fork_id, network_request, sync_service) - .await - .map_err(|error| { - format!("Failed to download state for the first block of target segment: {error}") - })?; + let state = download_state( + &header, + client, + fork_id, + sync_service, + network_service_handle, + ) + .await + .map_err(|error| { + format!("Failed to download state for the first block of target segment: {error}") + })?; debug!("Downloaded state of the first block of the target segment"); @@ -342,9 +340,9 @@ where block.justifications = signed_block.justifications; block.state_action = StateAction::ApplyChanges(StorageChanges::Import(state)); block.finalized = true; + block.create_gap = false; block.fork_choice = Some(ForkChoiceStrategy::Custom(true)); - // TODO: Simplify when https://github.com/paritytech/polkadot-sdk/pull/5339 is in our fork - (&mut client.as_ref()) + client .import_block(block) .await .map_err(|error| format!("Failed to import first block of target segment: {error}"))?; @@ -384,11 +382,6 @@ where .instrument(info_span!("consensus chain snap sync")) .await; - // Clear the block gap that arises from first block import with a much higher number than - // previously (resulting in a gap) - // TODO: This is a hack and better solution is needed: https://github.com/paritytech/polkadot-sdk/issues/4407 - client.clear_block_gap()?; - debug!(info = ?client.info(), "Snap sync finished successfully"); Ok(()) @@ -452,17 +445,16 @@ where } /// Download and return state for specified block -async fn download_state( +async fn download_state( header: &Block::Header, client: &Arc, fork_id: Option<&str>, - network_request: &NR, sync_service: &SyncingService, + network_service_handle: &NetworkServiceHandle, ) -> Result, Error> where Block: BlockT, Client: HeaderBackend + ProofProvider + Send + Sync + 'static, - NR: NetworkRequest, { let block_number = *header.number(); @@ -500,13 +492,13 @@ where tried_peers.insert(current_peer_id); - let sync_engine = SnapSyncingEngine::::new( + let sync_engine = SnapSyncingEngine::::new( client.clone(), fork_id, header.clone(), false, (current_peer_id, block_number), - network_request, + network_service_handle, ) .map_err(Error::Client)?; diff --git a/crates/subspace-service/src/sync_from_dsn/snap_sync_engine.rs b/crates/subspace-service/src/sync_from_dsn/snap_sync_engine.rs index 13fb7f81aa..aac11eeda7 100644 --- a/crates/subspace-service/src/sync_from_dsn/snap_sync_engine.rs +++ b/crates/subspace-service/src/sync_from_dsn/snap_sync_engine.rs @@ -20,42 +20,48 @@ //! to tip and keep the blockchain up to date with network updates. use futures::channel::oneshot; -use futures::{FutureExt, StreamExt}; -use prost::Message; +use futures::StreamExt; use sc_client_api::ProofProvider; use sc_consensus::IncomingBlock; -use sc_network::request_responses::IfDisconnected; use sc_network::types::ProtocolName; -use sc_network::{NetworkRequest, PeerId}; +use sc_network::{OutboundFailure, PeerId, RequestFailure}; use sc_network_sync::pending_responses::{PendingResponses, ResponseEvent}; -use sc_network_sync::schema::v1::{StateRequest, StateResponse}; +use sc_network_sync::service::network::NetworkServiceHandle; use sc_network_sync::state_request_handler::generate_protocol_name; -use sc_network_sync::strategy::state::{StateStrategy, StateStrategyAction}; -use sc_network_sync::strategy::StrategyKey; -use sc_network_sync::types::{BadPeer, OpaqueStateRequest, OpaqueStateResponse, PeerRequest}; +use sc_network_sync::strategy::state::StateStrategy; +use sc_network_sync::strategy::SyncingAction; +use sc_network_sync::types::BadPeer; use sp_blockchain::{Error as ClientError, HeaderBackend}; use sp_runtime::traits::{Block as BlockT, NumberFor}; use std::sync::Arc; -use tracing::{debug, error, trace, warn}; +use tracing::{debug, trace, warn}; + +mod rep { + use sc_network::ReputationChange as Rep; + /// Peer is on unsupported protocol version. + pub(super) const BAD_PROTOCOL: Rep = Rep::new_fatal("Unsupported protocol"); + /// Reputation change when a peer refuses a request. + pub(super) const REFUSED: Rep = Rep::new(-(1 << 10), "Request refused"); + /// Reputation change when a peer doesn't respond in time to our messages. + pub(super) const TIMEOUT: Rep = Rep::new(-(1 << 10), "Request timeout"); +} -pub struct SnapSyncingEngine<'a, Block, NR> +pub struct SnapSyncingEngine<'a, Block> where Block: BlockT, { /// Syncing strategy strategy: StateStrategy, - /// Network request handle - network_request: &'a NR, /// Pending responses - pending_responses: PendingResponses, + pending_responses: PendingResponses, /// Protocol name used to send out state requests state_request_protocol_name: ProtocolName, + network_service_handle: &'a NetworkServiceHandle, } -impl<'a, Block, NR> SnapSyncingEngine<'a, Block, NR> +impl<'a, Block> SnapSyncingEngine<'a, Block> where Block: BlockT, - NR: NetworkRequest, { pub fn new( client: Arc, @@ -63,13 +69,13 @@ where target_header: Block::Header, skip_proof: bool, current_sync_peer: (PeerId, NumberFor), - network_request: &'a NR, + network_service_handle: &'a NetworkServiceHandle, ) -> Result where Client: HeaderBackend + ProofProvider + Send + Sync + 'static, { let state_request_protocol_name = - generate_protocol_name(client.info().genesis_hash, fork_id).into(); + ProtocolName::from(generate_protocol_name(client.info().genesis_hash, fork_id)); // Initialize syncing strategy. let strategy = StateStrategy::new( @@ -83,13 +89,14 @@ where None, skip_proof, vec![current_sync_peer].into_iter(), + state_request_protocol_name.clone(), ); Ok(Self { strategy, - network_request, pending_responses: PendingResponses::new(), state_request_protocol_name, + network_service_handle, }) } @@ -99,7 +106,10 @@ where loop { // Process actions requested by a syncing strategy. - let mut actions = self.strategy.actions().peekable(); + let mut actions = self + .strategy + .actions(self.network_service_handle) + .peekable(); if actions.peek().is_none() { return Err(ClientError::Backend( "Sync state download failed: no further actions".into(), @@ -108,23 +118,40 @@ where for action in actions { match action { - StateStrategyAction::SendStateRequest { peer_id, request } => { - self.send_state_request(peer_id, StrategyKey::State, request); + SyncingAction::StartRequest { + peer_id, + key, + request, + // State sync doesn't use this + remove_obsolete: _, + } => { + self.pending_responses.insert(peer_id, key, request); + } + SyncingAction::CancelRequest { .. } => { + return Err(ClientError::Application( + "Unexpected SyncingAction::CancelRequest".into(), + )); } - StateStrategyAction::DropPeer(BadPeer(peer_id, rep)) => { - self.pending_responses.remove(peer_id, StrategyKey::State); + SyncingAction::DropPeer(BadPeer(peer_id, rep)) => { + self.pending_responses + .remove(peer_id, StateStrategy::::STRATEGY_KEY); trace!(%peer_id, "Peer dropped: {rep:?}"); } - StateStrategyAction::ImportBlocks { blocks, .. } => { + SyncingAction::ImportBlocks { blocks, .. } => { return blocks.into_iter().next().ok_or_else(|| { ClientError::Application( - "StateStrategyAction::ImportBlocks didn't contain any blocks to import" + "SyncingAction::ImportBlocks didn't contain any blocks to import" .into(), ) }); } - StateStrategyAction::Finished => { + SyncingAction::ImportJustifications { .. } => { + return Err(ClientError::Application( + "Unexpected SyncingAction::ImportJustifications".into(), + )); + } + SyncingAction::Finished => { return Err(ClientError::Backend( "Sync state finished without blocks to import".into(), )); @@ -137,84 +164,70 @@ where } } - fn send_state_request( - &mut self, - peer_id: PeerId, - key: StrategyKey, - request: OpaqueStateRequest, - ) { - let (tx, rx) = oneshot::channel(); - - self.pending_responses - .insert(peer_id, key, PeerRequest::State, rx.boxed()); - - match Self::encode_state_request(&request) { - Ok(data) => { - self.network_request.start_request( - peer_id, - self.state_request_protocol_name.clone(), - data, - None, - tx, - IfDisconnected::ImmediateError, - ); - } - Err(err) => { - warn!("Failed to encode state request {request:?}: {err:?}",); - } - } - } - - fn encode_state_request(request: &OpaqueStateRequest) -> Result, String> { - let request: &StateRequest = request.0.downcast_ref().ok_or_else(|| { - "Failed to downcast opaque state response during encoding, this is an implementation \ - bug" - .to_string() - })?; - - Ok(request.encode_to_vec()) - } - - fn decode_state_response(response: &[u8]) -> Result { - let response = StateResponse::decode(response) - .map_err(|error| format!("Failed to decode state response: {error}"))?; - - Ok(OpaqueStateResponse(Box::new(response))) - } - - fn process_response_event(&mut self, response_event: ResponseEvent) { + fn process_response_event(&mut self, response_event: ResponseEvent) { let ResponseEvent { peer_id, - request, - response, - .. + key: _, + response: response_result, } = response_event; - match response { - Ok(Ok((resp, _))) => match request { - PeerRequest::Block(req) => { - error!("Unexpected PeerRequest::Block - {:?}", req); - } - PeerRequest::State => { - let response = match Self::decode_state_response(&resp[..]) { - Ok(proto) => proto, - Err(e) => { - debug!("Failed to decode state response from peer {peer_id:?}: {e:?}.",); - return; - } - }; - - self.strategy.on_state_response(peer_id, response); - } - PeerRequest::WarpProof => { - error!("Unexpected PeerRequest::WarpProof",); - } - }, + match response_result { + Ok(Ok((response, _protocol_name))) => { + let Ok(response) = response.downcast::>() else { + warn!("Failed to downcast state response"); + debug_assert!(false); + return; + }; + + self.strategy.on_state_response(&peer_id, *response); + } Ok(Err(e)) => { debug!("Request to peer {peer_id:?} failed: {e:?}."); + + match e { + RequestFailure::Network(OutboundFailure::Timeout) => { + self.network_service_handle + .report_peer(peer_id, rep::TIMEOUT); + self.network_service_handle + .disconnect_peer(peer_id, self.state_request_protocol_name.clone()); + } + RequestFailure::Network(OutboundFailure::UnsupportedProtocols) => { + self.network_service_handle + .report_peer(peer_id, rep::BAD_PROTOCOL); + self.network_service_handle + .disconnect_peer(peer_id, self.state_request_protocol_name.clone()); + } + RequestFailure::Network(OutboundFailure::DialFailure) => { + self.network_service_handle + .disconnect_peer(peer_id, self.state_request_protocol_name.clone()); + } + RequestFailure::Refused => { + self.network_service_handle + .report_peer(peer_id, rep::REFUSED); + self.network_service_handle + .disconnect_peer(peer_id, self.state_request_protocol_name.clone()); + } + RequestFailure::Network(OutboundFailure::ConnectionClosed) + | RequestFailure::NotConnected => { + self.network_service_handle + .disconnect_peer(peer_id, self.state_request_protocol_name.clone()); + } + RequestFailure::UnknownProtocol => { + debug_assert!(false, "Block request protocol should always be known."); + } + RequestFailure::Obsolete => { + debug_assert!( + false, + "Can not receive `RequestFailure::Obsolete` after dropping the \ + response receiver.", + ); + } + } } Err(oneshot::Canceled) => { - trace!("Request to peer {peer_id:?} failed due to oneshot being canceled.",); + trace!("Request to peer {peer_id:?} failed due to oneshot being canceled."); + self.network_service_handle + .disconnect_peer(peer_id, self.state_request_protocol_name.clone()); } } } diff --git a/crates/subspace-service/src/task_spawner.rs b/crates/subspace-service/src/task_spawner.rs index 4ac8feb2ca..06cd37869b 100644 --- a/crates/subspace-service/src/task_spawner.rs +++ b/crates/subspace-service/src/task_spawner.rs @@ -49,7 +49,7 @@ where + CallApiAt + Send + 'static, - >::Api: sp_api::Metadata + TCl::Api: sp_api::Metadata + sp_transaction_pool::runtime_api::TaggedTransactionQueue + sp_session::SessionKeys + sp_api::ApiExt, @@ -57,7 +57,7 @@ where TBl::Hash: Unpin, TBl::Header: Unpin, TBackend: 'static + sc_client_api::backend::Backend + Send, - TExPool: MaintainedTransactionPool::Hash> + 'static, + TExPool: MaintainedTransactionPool + 'static, { let SpawnTasksParams { // TODO: Stop using `Configuration` once @@ -84,7 +84,11 @@ where let telemetry = telemetry .map(|telemetry| { init_telemetry( - &mut config, + config.network.node_name.clone(), + config.impl_name.clone(), + config.impl_version.clone(), + config.chain_spec.name().to_string(), + config.role.is_authority(), network.clone(), client.clone(), telemetry, @@ -126,39 +130,52 @@ where ), ); - let rpc_id_provider = config.rpc_id_provider.take(); + let rpc_id_provider = config.rpc.id_provider.take(); // jsonrpsee RPC - let gen_rpc_module = |deny_unsafe: DenyUnsafe| { + let gen_rpc_module = || { gen_rpc_module( - deny_unsafe, task_manager.spawn_handle(), client.clone(), transaction_pool.clone(), keystore.clone(), system_rpc_tx.clone(), - &config, + config.impl_name.clone(), + config.impl_version.clone(), + config.chain_spec.as_ref(), + &config.state_pruning, + config.blocks_pruning, backend.clone(), &*rpc_builder, ) }; + let in_memory_rpc = { + let mut module = gen_rpc_module()?; + module.extensions_mut().insert(DenyUnsafe::No); + module + }; let rpc = config - .rpc_addr - .map(|_| start_rpc_servers(&config, gen_rpc_module, rpc_id_provider)) + .rpc + .addr + .is_some() + .then(|| { + start_rpc_servers( + &config.rpc, + config.prometheus_registry(), + &config.tokio_handle, + gen_rpc_module, + rpc_id_provider, + ) + }) .transpose()?; - let rpc_handlers = RpcHandlers::new(Arc::new(gen_rpc_module(DenyUnsafe::No)?)); + let rpc_handlers = RpcHandlers::new(Arc::new(in_memory_rpc)); // Spawn informant task spawn_handle.spawn( "informant", None, - sc_informant::build( - client.clone(), - network, - sync_service.clone(), - config.informant_output_format, - ), + sc_informant::build(client.clone(), network, sync_service.clone()), ); task_manager.keep_alive((config.base_path, rpc)); diff --git a/crates/subspace-service/src/transaction_pool.rs b/crates/subspace-service/src/transaction_pool.rs index a8e5b175b9..c014a4f3bf 100644 --- a/crates/subspace-service/src/transaction_pool.rs +++ b/crates/subspace-service/src/transaction_pool.rs @@ -14,7 +14,7 @@ use sc_transaction_pool_api::{ }; use sp_api::ProvideRuntimeApi; use sp_blockchain::{HeaderMetadata, TreeRoute}; -use sp_consensus_subspace::{FarmerPublicKey, SubspaceApi}; +use sp_consensus_subspace::SubspaceApi; use sp_core::traits::SpawnEssentialNamed; use sp_domains::DomainsApi; use sp_runtime::generic::BlockId; @@ -26,6 +26,7 @@ use std::collections::HashMap; use std::marker::PhantomData; use std::pin::Pin; use std::sync::Arc; +use subspace_core_primitives::PublicKey; use substrate_prometheus_endpoint::Registry as PrometheusRegistry; /// Block hash type for a pool. @@ -68,7 +69,7 @@ where + Send + Sync + 'static, - Client::Api: TaggedTransactionQueue + SubspaceApi, + Client::Api: TaggedTransactionQueue + SubspaceApi, DomainHeader: HeaderT, { fn new( @@ -102,7 +103,7 @@ pub type ValidationFuture = Pin ChainApi for FullChainApiWrapper where Block: BlockT, - <<::Header as HeaderT>::Number as TryInto>::Error: std::fmt::Debug, + <::Number as TryInto>::Error: std::fmt::Debug, Client: ProvideRuntimeApi + AuxStore + BlockBackend @@ -114,13 +115,13 @@ where + 'static, DomainHeader: HeaderT, Client::Api: TaggedTransactionQueue - + SubspaceApi + + SubspaceApi + DomainsApi, { type Block = Block; type Error = sc_transaction_pool::error::Error; type ValidationFuture = ValidationFuture; - type BodyFuture = Ready::Extrinsic>>>>; + type BodyFuture = Ready>>>; fn validate_transaction( &self, @@ -149,21 +150,18 @@ where self.inner.hash_and_length(ex) } - fn block_body(&self, id: ::Hash) -> Self::BodyFuture { + fn block_body(&self, id: Block::Hash) -> Self::BodyFuture { self.inner.block_body(id) } - fn block_header( - &self, - hash: ::Hash, - ) -> Result::Header>, Self::Error> { + fn block_header(&self, hash: Block::Hash) -> Result, Self::Error> { self.inner.block_header(hash) } fn tree_route( &self, - from: ::Hash, - to: ::Hash, + from: Block::Hash, + to: Block::Hash, ) -> Result, Self::Error> { sp_blockchain::tree_route::(&*self.client, from, to).map_err(Into::into) } @@ -223,7 +221,7 @@ impl LocalTransactionPool for BasicPoolWrapper> where Block: BlockT, - <<::Header as HeaderT>::Number as TryInto>::Error: std::fmt::Debug, + <::Number as TryInto>::Error: std::fmt::Debug, DomainHeader: HeaderT, Client: ProvideRuntimeApi + AuxStore @@ -235,7 +233,7 @@ where + Sync + 'static, Client::Api: TaggedTransactionQueue - + SubspaceApi + + SubspaceApi + DomainsApi, { type Block = Block; @@ -374,7 +372,7 @@ pub fn new_full( ) -> sp_blockchain::Result>> where Block: BlockT, - <<::Header as HeaderT>::Number as TryInto>::Error: std::fmt::Debug, + <::Number as TryInto>::Error: std::fmt::Debug, Client: ProvideRuntimeApi + AuxStore + BlockBackend @@ -388,7 +386,7 @@ where + 'static, DomainHeader: HeaderT, Client::Api: TaggedTransactionQueue - + SubspaceApi + + SubspaceApi + DomainsApi, { let pool_api = Arc::new(FullChainApiWrapper::new( diff --git a/crates/subspace-verification/Cargo.toml b/crates/subspace-verification/Cargo.toml index 67877e2a05..d5f3bed5f8 100644 --- a/crates/subspace-verification/Cargo.toml +++ b/crates/subspace-verification/Cargo.toml @@ -21,7 +21,7 @@ schnorrkel = { version = "0.11.4", default-features = false } subspace-archiving = { version = "0.1.0", path = "../subspace-archiving", default-features = false } subspace-core-primitives = { version = "0.1.0", path = "../subspace-core-primitives", default-features = false } subspace-proof-of-space = { version = "0.1.0", path = "../subspace-proof-of-space", default-features = false } -thiserror = { version = "1.0.63", optional = true } +thiserror = { version = "1.0.64", optional = true } [features] default = ["std"] diff --git a/crates/subspace-verification/src/lib.rs b/crates/subspace-verification/src/lib.rs index bbca5a5b69..b1457753b6 100644 --- a/crates/subspace-verification/src/lib.rs +++ b/crates/subspace-verification/src/lib.rs @@ -30,9 +30,12 @@ use subspace_core_primitives::crypto::kzg::{Commitment, Kzg, Witness}; use subspace_core_primitives::crypto::{ blake3_254_hash_to_scalar, blake3_hash_list, blake3_hash_with_key, Scalar, }; +use subspace_core_primitives::pieces::Record; +use subspace_core_primitives::pot::PotOutput; +use subspace_core_primitives::sectors::{SectorId, SectorSlotChallenge}; +use subspace_core_primitives::segments::{HistorySize, SegmentCommitment}; use subspace_core_primitives::{ - Blake3Hash, BlockNumber, BlockWeight, HistorySize, PotOutput, PublicKey, Record, - RewardSignature, SectorId, SectorSlotChallenge, SegmentCommitment, SlotNumber, Solution, + Blake3Hash, BlockNumber, BlockWeight, PublicKey, RewardSignature, SlotNumber, Solution, SolutionRange, }; use subspace_proof_of_space::Table; @@ -178,15 +181,14 @@ pub fn calculate_block_weight(solution_range: SolutionRange) -> BlockWeight { /// Verify whether solution is valid, returns solution distance that is `<= solution_range/2` on /// success. -pub fn verify_solution<'a, PosTable, FarmerPublicKey, RewardAddress>( - solution: &'a Solution, +pub fn verify_solution<'a, PosTable, RewardAddress>( + solution: &'a Solution, slot: SlotNumber, params: &'a VerifySolutionParams, kzg: &'a Kzg, ) -> Result where PosTable: Table, - PublicKey: From<&'a FarmerPublicKey>, { let VerifySolutionParams { proof_of_time, @@ -194,10 +196,7 @@ where piece_check_params, } = params; - let sector_id = SectorId::new( - PublicKey::from(&solution.public_key).hash(), - solution.sector_index, - ); + let sector_id = SectorId::new(solution.public_key.hash(), solution.sector_index); let global_randomness = proof_of_time.derive_global_randomness(); let global_challenge = global_randomness.derive_global_challenge(slot); @@ -214,7 +213,7 @@ where }; let masked_chunk = (Simd::from(solution.chunk.to_bytes()) - ^ Simd::from(solution.proof_of_space.hash())) + ^ Simd::from(*solution.proof_of_space.hash())) .to_array(); let solution_distance = diff --git a/domains/client/block-builder/Cargo.toml b/domains/client/block-builder/Cargo.toml index e603022aaf..4ecf44cd3e 100644 --- a/domains/client/block-builder/Cargo.toml +++ b/domains/client/block-builder/Cargo.toml @@ -14,12 +14,12 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", features = ["derive"] } -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } tracing = "0.1.40" diff --git a/domains/client/block-builder/src/lib.rs b/domains/client/block-builder/src/lib.rs index 27c5bb9196..a3d7fb8c84 100644 --- a/domains/client/block-builder/src/lib.rs +++ b/domains/client/block-builder/src/lib.rs @@ -158,9 +158,8 @@ where backend: &'a B, mut extrinsics: VecDeque, maybe_inherent_data: Option, - is_gemini_3h: bool, ) -> Result { - let header = <::Header as HeaderT>::new( + let header = ::new( parent_number + One::one(), Default::default(), Default::default(), @@ -176,43 +175,14 @@ where api.record_proof(); } - let core_version = api - .api_version::>(parent_hash)? - .ok_or_else(|| Error::VersionInvalid("Core".to_string()))?; - - if core_version >= 5 { - if api.initialize_block(parent_hash, &header).is_err() { - // TODO: Hack for Subspace fork caused by - // https://github.com/subspace/polkadot-sdk/commit/447bbc765020674614e9ac982163f7e11e5b03ea - // Replace with error propagation before next network - } - } else { - #[allow(deprecated)] - api.initialize_block_before_version_5(parent_hash, &header)?; - } + api.initialize_block(parent_hash, &header)?; if let Some(inherent_data) = maybe_inherent_data { let inherent_extrinsics = Self::create_inherents(parent_hash, &api, inherent_data)?; - // TODO: This is used to keep compatible with gemini-3h, remove before next network - // - // HACK: ideally, any network should maintain the inherent extrinsic order to keep consistency - // with the order in the fraud proof verification side, but in gemini-3h, the domain inherent - // extrinsic order is changed in the ER that derived from the consensus block #168431, we have - // to follow this change in the client side to ensure every domain node that sync from genesis - // will produce the same ER and hence can successfully submit ER to exend the previous ER. - let maintain_runtime_inherent_extrinsic_order = - !is_gemini_3h || parent_number >= 168430u32.into(); - - if maintain_runtime_inherent_extrinsic_order { - // reverse and push the inherents so that order is maintained - for inherent_extrinsic in inherent_extrinsics.into_iter().rev() { - extrinsics.push_front(inherent_extrinsic) - } - } else { - for inherent_extrinsic in inherent_extrinsics { - extrinsics.push_front(inherent_extrinsic) - } + // reverse and push the inherents so that order is maintained + for inherent_extrinsic in inherent_extrinsics.into_iter().rev() { + extrinsics.push_front(inherent_extrinsic) } } @@ -317,7 +287,7 @@ where let storage_changes = self.collect_storage_changes()?; Ok(BuiltBlock { - block: ::new(header, self.extrinsics.into()), + block: Block::new(header, self.extrinsics.into()), storage_changes, proof, }) diff --git a/domains/client/block-preprocessor/Cargo.toml b/domains/client/block-preprocessor/Cargo.toml index 0e5d7582d4..37c5870d9c 100644 --- a/domains/client/block-preprocessor/Cargo.toml +++ b/domains/client/block-preprocessor/Cargo.toml @@ -15,30 +15,30 @@ include = [ async-trait = { version = "0.1.57" } codec = { package = "parity-scale-codec", version = "3.6.12", features = ["derive"] } domain-runtime-primitives = { version = "0.1.0", path = "../../primitives/runtime" } -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-executor-common = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-executor-common = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-block-fees = { version = "0.1.0", path = "../../primitives/block-fees" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../../../crates/sp-domains" } sp-domain-sudo = { version = "0.1.0", path = "../../primitives/domain-sudo" } sp-executive = { version = "0.1.0", path = "../../primitives/executive" } -sp-externalities = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-externalities = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", path = "../../primitives/messenger" } -sp-mmr-primitives = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-mmr-primitives = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { default-features = false, path = "../../../crates/sp-subspace-mmr" } -sp-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-weights = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-version = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-weights = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-version = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", path = "../../../crates/subspace-core-primitives" } subspace-runtime-primitives = { version = "0.1.0", path = "../../../crates/subspace-runtime-primitives" } tracing = "0.1.40" [dev-dependencies] -sp-keyring = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-keyring = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } diff --git a/domains/client/block-preprocessor/src/inherents.rs b/domains/client/block-preprocessor/src/inherents.rs index 95ab56561a..fdf0c88543 100644 --- a/domains/client/block-preprocessor/src/inherents.rs +++ b/domains/client/block-preprocessor/src/inherents.rs @@ -1,4 +1,5 @@ //! Provides functionality of adding inherent extrinsics to the Domain. +//! //! Unlike Primary chain where inherent data is first derived the block author //! and the data is verified by the on primary runtime, domains inherents //! short circuit the derivation and verification of inherent data @@ -12,7 +13,7 @@ //! Deriving these extrinsics during fraud proof verification should be possible since //! verification environment will have access to consensus chain. -use sp_api::{ApiExt, ProvideRuntimeApi}; +use sp_api::ProvideRuntimeApi; use sp_blockchain::HeaderBackend; use sp_domains::{DomainId, DomainsApi, DomainsDigestItem}; use sp_inherents::{CreateInherentDataProviders, InherentData, InherentDataProvider}; @@ -215,36 +216,15 @@ where let storage_price_provider = sp_block_fees::InherentDataProvider::new(consensus_chain_byte_fee); - // TODO: remove version check before next network - let messenger_api_version = runtime_api - .api_version::, CBlock::Hash>>( - consensus_block_hash, - )? - // safe to return default version as 1 since there will always be version 1. - .unwrap_or(1); - - let domain_chains_allowlist_update = if messenger_api_version >= 3 { - runtime_api.domain_chains_allowlist_update(consensus_block_hash, self.domain_id)? - } else { - None - }; - + let domain_chains_allowlist_update = + runtime_api.domain_chains_allowlist_update(consensus_block_hash, self.domain_id)?; let messenger_inherent_provider = sp_messenger::InherentDataProvider::new(sp_messenger::InherentType { maybe_updates: domain_chains_allowlist_update, }); - // TODO: remove version check before next network - let domain_api_version = runtime_api - .api_version::>(consensus_block_hash)? - // safe to return default version as 1 since there will always be version 1. - .unwrap_or(1); - - let maybe_domain_sudo_call = if domain_api_version >= 5 { - runtime_api.domain_sudo_call(consensus_block_hash, self.domain_id)? - } else { - None - }; + let maybe_domain_sudo_call = + runtime_api.domain_sudo_call(consensus_block_hash, self.domain_id)?; let domain_sudo_call_inherent_provider = sp_domain_sudo::InherentDataProvider::new(maybe_domain_sudo_call); diff --git a/domains/client/block-preprocessor/src/lib.rs b/domains/client/block-preprocessor/src/lib.rs index 70bb95f6e0..de37e7fec5 100644 --- a/domains/client/block-preprocessor/src/lib.rs +++ b/domains/client/block-preprocessor/src/lib.rs @@ -18,7 +18,7 @@ use crate::inherents::is_runtime_upgraded; use codec::Encode; use domain_runtime_primitives::opaque::AccountId; use sc_client_api::BlockBackend; -use sp_api::{ApiError, ApiExt, Core, ProvideRuntimeApi}; +use sp_api::{ApiError, Core, ProvideRuntimeApi}; use sp_blockchain::HeaderBackend; use sp_core::H256; use sp_domains::core_api::DomainCoreApi; @@ -186,10 +186,8 @@ where consensus_block_hash, )?; - let extrinsics = deduplicate_and_shuffle_extrinsics::<::Extrinsic>( - extrinsics, - shuffling_seed, - ); + let extrinsics = + deduplicate_and_shuffle_extrinsics::(extrinsics, shuffling_seed); Ok(Some(PreprocessResult { extrinsics, @@ -322,23 +320,13 @@ where at_consensus_hash: CBlock::Hash, ) -> sp_blockchain::Result> { let bundle_vrf_hash = - U256::from_be_bytes(bundle.sealed_header.header.proof_of_election.vrf_hash()); + U256::from_be_bytes(*bundle.sealed_header.header.proof_of_election.vrf_hash()); let mut extrinsics = Vec::with_capacity(bundle.extrinsics.len()); let mut estimated_bundle_weight = Weight::default(); let runtime_api = self.client.runtime_api(); let consensus_runtime_api = self.consensus_client.runtime_api(); - let api_version = runtime_api - .api_version::, CBlock::Hash>>( - parent_domain_hash, - ) - .map_err(sp_blockchain::Error::RuntimeApiError)? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!("MessengerApi not found at: {:?}", parent_domain_hash).into(), - )) - })?; // Check the validity of each extrinsic // @@ -383,24 +371,22 @@ where )); } - if api_version >= 4 { - if let Some(xdm_mmr_proof) = - runtime_api.extract_xdm_mmr_proof(parent_domain_hash, &extrinsic)? + if let Some(xdm_mmr_proof) = + runtime_api.extract_xdm_mmr_proof(parent_domain_hash, &extrinsic)? + { + let ConsensusChainMmrLeafProof { + opaque_mmr_leaf, + proof, + .. + } = xdm_mmr_proof; + + if consensus_runtime_api + .verify_proof(at_consensus_hash, vec![opaque_mmr_leaf], proof)? + .is_err() { - let ConsensusChainMmrLeafProof { - opaque_mmr_leaf, - proof, - .. - } = xdm_mmr_proof; - - if consensus_runtime_api - .verify_proof(at_consensus_hash, vec![opaque_mmr_leaf], proof)? - .is_err() - { - return Ok(BundleValidity::Invalid(InvalidBundleType::InvalidXDM( - index as u32, - ))); - } + return Ok(BundleValidity::Invalid(InvalidBundleType::InvalidXDM( + index as u32, + ))); } } diff --git a/domains/client/block-preprocessor/src/stateless_runtime.rs b/domains/client/block-preprocessor/src/stateless_runtime.rs index 6a61d91ea4..297e5d3887 100644 --- a/domains/client/block-preprocessor/src/stateless_runtime.rs +++ b/domains/client/block-preprocessor/src/stateless_runtime.rs @@ -3,7 +3,7 @@ use domain_runtime_primitives::opaque::AccountId; use domain_runtime_primitives::{Balance, CheckExtrinsicsValidityError, DecodeExtrinsicError}; use sc_client_api::execution_extensions::ExtensionsFactory; use sc_executor::RuntimeVersionOf; -use sp_api::{ApiError, Core, RuntimeApiInfo}; +use sp_api::{ApiError, Core}; use sp_core::traits::{CallContext, CodeExecutor, FetchRuntimeCode, RuntimeCode}; use sp_core::Hasher; use sp_domain_sudo::DomainSudoApi; @@ -46,7 +46,7 @@ where { fn __runtime_api_internal_call_api_at( &self, - _at: ::Hash, + _at: Block::Hash, params: Vec, fn_name: &dyn Fn(RuntimeVersion) -> &'static str, ) -> Result, ApiError> { @@ -62,7 +62,7 @@ where { fn __runtime_api_internal_call_api_at( &self, - _at: ::Hash, + _at: Block::Hash, params: Vec, fn_name: &dyn Fn(RuntimeVersion) -> &'static str, ) -> Result, ApiError> { @@ -80,7 +80,7 @@ where { fn __runtime_api_internal_call_api_at( &self, - _at: ::Hash, + _at: Block::Hash, params: Vec, fn_name: &dyn Fn(RuntimeVersion) -> &'static str, ) -> Result, ApiError> { @@ -98,7 +98,7 @@ where { fn __runtime_api_internal_call_api_at( &self, - _at: ::Hash, + _at: Block::Hash, params: Vec, fn_name: &dyn Fn(RuntimeVersion) -> &'static str, ) -> Result, ApiError> { @@ -115,7 +115,7 @@ where { fn __runtime_api_internal_call_api_at( &self, - _at: ::Hash, + _at: Block::Hash, params: Vec, fn_name: &dyn Fn(RuntimeVersion) -> &'static str, ) -> Result, ApiError> { @@ -241,7 +241,7 @@ where pub fn extract_signer( &self, - extrinsics: Vec<::Extrinsic>, + extrinsics: Vec, ) -> Result, ApiError> { >::extract_signer(self, Default::default(), extrinsics) } @@ -287,16 +287,13 @@ where ) } - pub fn is_inherent_extrinsic( - &self, - extrinsic: &::Extrinsic, - ) -> Result { + pub fn is_inherent_extrinsic(&self, extrinsic: &Block::Extrinsic) -> Result { >::is_inherent_extrinsic(self, Default::default(), extrinsic) } pub fn is_xdm_mmr_proof_valid( &self, - extrinsic: &::Extrinsic, + extrinsic: &Block::Extrinsic, ) -> Result, ApiError> { , CBlock::Hash>>::is_xdm_mmr_proof_valid( self, @@ -307,7 +304,7 @@ where pub fn extract_xdm_mmr_proof( &self, - extrinsic: &::Extrinsic, + extrinsic: &Block::Extrinsic, ) -> Result>, ApiError> { , CBlock::Hash>>::extract_xdm_mmr_proof( self, @@ -320,13 +317,13 @@ where pub fn decode_extrinsic( &self, opaque_extrinsic: sp_runtime::OpaqueExtrinsic, - ) -> Result::Extrinsic, DecodeExtrinsicError>, ApiError> { + ) -> Result, ApiError> { >::decode_extrinsic(self, Default::default(), opaque_extrinsic) } pub fn is_within_tx_range( &self, - extrinsic: &::Extrinsic, + extrinsic: &Block::Extrinsic, bundle_vrf_hash: &U256, tx_range: &U256, ) -> Result { @@ -342,9 +339,9 @@ where /// This is stateful runtime api call and require setting of storage keys. pub fn check_extrinsics_and_do_pre_dispatch( &self, - uxts: Vec<::Extrinsic>, + uxts: Vec, block_number: NumberFor, - block_hash: ::Hash, + block_hash: Block::Hash, ) -> Result, ApiError> { >::check_extrinsics_and_do_pre_dispatch( self, @@ -360,37 +357,10 @@ where } pub fn block_fees_storage_key(&self) -> Result, ApiError> { - let runtime_version = { - let mut ext = BasicExternalities::new(self.storage.clone()); - let ext_extensions = ext.extensions(); - ext_extensions.merge( - self.extension_factory - .extensions_for(Default::default(), Default::default()), - ); - let runtime_code = self.runtime_code(); - self.executor - .runtime_version(&mut ext, &runtime_code) - .map_err(|err| { - ApiError::Application(Box::from(format!( - "failed to read domain runtime version: {err}" - ))) - })? - }; - let has_runtime_api = runtime_version - .api_version(&>::ID) - .map_or(false, |runtime_api_version| runtime_api_version >= 2); - - if has_runtime_api { - >::block_fees_storage_key(self, Default::default()) - } else { - Ok(sp_domains::operator_block_fees_final_key()) - } + >::block_fees_storage_key(self, Default::default()) } - pub fn extrinsic_weight( - &self, - extrinsic: &::Extrinsic, - ) -> Result { + pub fn extrinsic_weight(&self, extrinsic: &Block::Extrinsic) -> Result { >::extrinsic_weight(self, Default::default(), extrinsic) } diff --git a/domains/client/consensus-relay-chain/Cargo.toml b/domains/client/consensus-relay-chain/Cargo.toml index a2654d4634..9b2bed6d4c 100644 --- a/domains/client/consensus-relay-chain/Cargo.toml +++ b/domains/client/consensus-relay-chain/Cargo.toml @@ -6,10 +6,6 @@ authors = ["Parity Technologies "] edition = "2021" [dependencies] -async-trait = "0.1.81" -sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -substrate-prometheus-endpoint = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +async-trait = "0.1.83" +sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } diff --git a/domains/client/consensus-relay-chain/src/import_queue.rs b/domains/client/consensus-relay-chain/src/import_queue.rs index 0b648dd5e8..e75b9ceec9 100644 --- a/domains/client/consensus-relay-chain/src/import_queue.rs +++ b/domains/client/consensus-relay-chain/src/import_queue.rs @@ -14,14 +14,10 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . -use sc_consensus::import_queue::{BasicQueue, Verifier as VerifierT}; -use sc_consensus::{BlockImport, BlockImportParams, SharedBlockImport}; -use sp_blockchain::Result as ClientResult; -use sp_consensus::error::Error as ConsensusError; -use sp_core::traits::SpawnEssentialNamed; +use sc_consensus::import_queue::Verifier as VerifierT; +use sc_consensus::BlockImportParams; use sp_runtime::traits::{Block as BlockT, Header as HeaderT}; use std::marker::PhantomData; -use substrate_prometheus_endpoint::Registry; /// A verifier that just checks the inherents. pub struct Verifier { @@ -52,22 +48,3 @@ where Ok(block_params) } } - -/// Start an import queue for a Cumulus collator that does not uses any special authoring logic. -#[allow(clippy::type_complexity)] -pub fn import_queue( - block_import: I, - spawner: &impl SpawnEssentialNamed, - registry: Option<&Registry>, -) -> ClientResult> -where - I: BlockImport + Send + Sync + 'static, -{ - Ok(BasicQueue::new( - Verifier::default(), - SharedBlockImport::new(block_import), - None, - spawner, - registry, - )) -} diff --git a/domains/client/consensus-relay-chain/src/lib.rs b/domains/client/consensus-relay-chain/src/lib.rs index ab6a8f10dc..fe28f65a49 100644 --- a/domains/client/consensus-relay-chain/src/lib.rs +++ b/domains/client/consensus-relay-chain/src/lib.rs @@ -35,4 +35,4 @@ mod import_queue; -pub use import_queue::{import_queue, Verifier}; +pub use import_queue::Verifier; diff --git a/domains/client/cross-domain-message-gossip/Cargo.toml b/domains/client/cross-domain-message-gossip/Cargo.toml index ab63d5c538..59a73f8148 100644 --- a/domains/client/cross-domain-message-gossip/Cargo.toml +++ b/domains/client/cross-domain-message-gossip/Cargo.toml @@ -13,23 +13,23 @@ include = [ [dependencies] domain-block-preprocessor = { version = "0.1.0", path = "../../client/block-preprocessor" } -fp-account = { version = "1.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -futures = "0.3.29" +fp-account = { version = "1.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +futures = "0.3.30" parity-scale-codec = { version = "3.6.12", features = ["derive"] } parking_lot = "0.12.2" -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-gossip = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-gossip = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../../../crates/sp-domains" } sp-messenger = { version = "0.1.0", default-features = false, path = "../../primitives/messenger" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-runtime-primitives = { version = "0.1.0", path = "../../../crates/subspace-runtime-primitives" } -thiserror = "1.0.63" +thiserror = "1.0.64" tracing = "0.1.40" diff --git a/domains/client/cross-domain-message-gossip/src/gossip_worker.rs b/domains/client/cross-domain-message-gossip/src/gossip_worker.rs index 98247ffba9..cc9d957ab7 100644 --- a/domains/client/cross-domain-message-gossip/src/gossip_worker.rs +++ b/domains/client/cross-domain-message-gossip/src/gossip_worker.rs @@ -159,7 +159,7 @@ pub fn xdm_gossip_peers_set_config() -> (NonDefaultSetConfig, Box() -> Block::Hash { - <::Hashing as HashT>::hash(b"cross-chain-messages") + ::Hashing::hash(b"cross-chain-messages") } impl GossipWorker { diff --git a/domains/client/cross-domain-message-gossip/src/message_listener.rs b/domains/client/cross-domain-message-gossip/src/message_listener.rs index db5047366f..e0648fc65f 100644 --- a/domains/client/cross-domain-message-gossip/src/message_listener.rs +++ b/domains/client/cross-domain-message-gossip/src/message_listener.rs @@ -8,7 +8,7 @@ use sc_client_api::AuxStore; use sc_executor::RuntimeVersionOf; use sc_network::NetworkPeers; use sc_transaction_pool_api::{TransactionPool, TransactionSource}; -use sp_api::{ApiError, ApiExt, ProvideRuntimeApi, StorageProof}; +use sp_api::{ApiError, ProvideRuntimeApi, StorageProof}; use sp_blockchain::HeaderBackend; use sp_consensus::SyncOracle; use sp_core::crypto::AccountId32; @@ -155,26 +155,13 @@ pub async fn start_cross_chain_message_listener< handle_xdm_message(&client, &tx_pool, chain_id, ext).await; } - MessageData::ChannelUpdate(channel_update) => { - // TODO: remove api version check before next network. - let is_runtime_apis_available = - is_runtime_apis_available(&consensus_client, &client).unwrap_or(false); - - if !is_runtime_apis_available { - tracing::debug!( - target: LOG_TARGET, - "Runtime apis not available. Skipping channel update..." - ); - continue; - } - handle_channel_update::<_, _, _, Block>( - chain_id, - channel_update, - &consensus_client, - domain_executor.clone(), - &mut domain_storage_key_cache, - ) - } + MessageData::ChannelUpdate(channel_update) => handle_channel_update::<_, _, _, Block>( + chain_id, + channel_update, + &consensus_client, + domain_executor.clone(), + &mut domain_storage_key_cache, + ), } } } @@ -473,70 +460,6 @@ where Ok(()) } -fn is_runtime_apis_available( - consensus_client: &Arc, - domain_client: &Arc, -) -> Result -where - CBlock: BlockT, - Block: BlockT, - CClient: HeaderBackend + ProvideRuntimeApi, - Client: HeaderBackend + ProvideRuntimeApi, -{ - let best_hash = consensus_client.info().best_hash; - let consensus_runtime_api = consensus_client.runtime_api(); - let api_version = consensus_runtime_api - .api_version::>(best_hash) - .map_err(sp_blockchain::Error::RuntimeApiError)? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!("DomainsApi not found at: {:?}", best_hash).into(), - )) - })?; - - // Domains api must be atleast version 4 - if api_version < 4 { - return Ok(false); - } - - let api_version = consensus_runtime_api - .api_version::, NumberFor, CBlock::Hash>>( - best_hash, - ) - .map_err(sp_blockchain::Error::RuntimeApiError)? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!("RelayerApi not found at: {:?}", best_hash).into(), - )) - })?; - - // consensus relayer api must be atleast version 2 - if api_version < 2 { - return Ok(false); - } - - let domain_best_hash = domain_client.info().best_hash; - let domain_runtime_api = domain_client.runtime_api(); - - let api_version = domain_runtime_api - .api_version::, NumberFor, CBlock::Hash>>( - domain_best_hash, - ) - .map_err(sp_blockchain::Error::RuntimeApiError)? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!("RelayerApi not found at: {:?}", domain_best_hash).into(), - )) - })?; - - // domain relayer api must be atleast version 2 - if api_version < 2 { - return Ok(false); - } - - Ok(true) -} - async fn handle_xdm_message( client: &Arc, tx_pool: &Arc, diff --git a/domains/client/domain-operator/Cargo.toml b/domains/client/domain-operator/Cargo.toml index 3709221109..fa518b29a6 100644 --- a/domains/client/domain-operator/Cargo.toml +++ b/domains/client/domain-operator/Cargo.toml @@ -9,45 +9,44 @@ codec = { package = "parity-scale-codec", version = "3.6.12", features = ["deriv domain-block-builder = { version = "0.1.0", path = "../block-builder" } domain-block-preprocessor = { version = "0.1.0", path = "../block-preprocessor" } domain-runtime-primitives = { version = "0.1.0", path = "../../primitives/runtime" } -futures = "0.3.29" +futures = "0.3.30" futures-timer = "3.0.3" parking_lot = "0.12.2" -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-consensus-subspace = { version = "0.1.0", default-features = false, path = "../../../crates/sc-consensus-subspace" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-consensus-subspace = { version = "0.1.0", path = "../../../crates/sc-consensus-subspace" } sc-domains = { version = "0.1.0", path = "../../../crates/sc-domains" } -sc-network = { git = "https://github.com/subspace/polkadot-sdk", default-features = false, rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-common = { git = "https://github.com/subspace/polkadot-sdk", default-features = false, rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", default-features = false, rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-service = { git = "https://github.com/subspace/polkadot-sdk", default-features = false, rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-common = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../../../crates/sp-domains" } sp-domains-fraud-proof = { version = "0.1.0", path = "../../../crates/sp-domains-fraud-proof" } sp-domain-digests = { version = "0.1.0", path = "../../primitives/digests" } -sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-keystore = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-keystore = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", path = "../../primitives/messenger" } -sp-mmr-primitives = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-mmr-primitives = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { version = "0.1.0", default-features = false, path = "../../../crates/sp-subspace-mmr" } -sp-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-trie = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-weights = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-trie = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-weights = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", path = "../../../crates/subspace-core-primitives" } subspace-runtime-primitives = { version = "0.1.0", path = "../../../crates/subspace-runtime-primitives" } -subspace-service = { version = "0.1.0", default-features = false, path = "../../../crates/subspace-service" } +subspace-service = { version = "0.1.0", path = "../../../crates/subspace-service" } tracing = "0.1.40" -thiserror = "1.0.63" -tokio = { version = "1.39.2", features = ["macros"] } +thiserror = "1.0.64" +tokio = { version = "1.40.0", features = ["macros"] } [dev-dependencies] auto-id-domain-test-runtime = { version = "0.1.0", path = "../../test/runtime/auto-id" } @@ -55,20 +54,20 @@ cross-domain-message-gossip = { path = "../../client/cross-domain-message-gossip domain-test-service = { version = "0.1.0", path = "../../test/service" } domain-test-primitives = { version = "0.1.0", path = "../../test/primitives" } evm-domain-test-runtime = { version = "0.1.0", path = "../../test/runtime/evm" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-domains = { version = "0.1.0", path = "../../../crates/pallet-domains" } pallet-domain-sudo = { version = "0.1.0", path = "../../pallets/domain-sudo" } pallet-messenger = { version = "0.1.0", path = "../../../domains/pallets/messenger" } -pallet-sudo = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-sudo = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-transporter = { version = "0.1.0", path = "../../../domains/pallets/transporter" } -sc-cli = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-cli = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", default-features = false, path = "../../../crates/subspace-core-primitives" } subspace-test-runtime = { version = "0.1.0", path = "../../../test/subspace-test-runtime" } subspace-test-service = { version = "0.1.0", path = "../../../test/subspace-test-service" } subspace-test-primitives = { version = "0.1.0", path = "../../../test/subspace-test-primitives" } -tempfile = "3.12.0" +tempfile = "3.13.0" diff --git a/domains/client/domain-operator/src/bundle_producer_election_solver.rs b/domains/client/domain-operator/src/bundle_producer_election_solver.rs index 5a5338014c..fdc99277ac 100644 --- a/domains/client/domain-operator/src/bundle_producer_election_solver.rs +++ b/domains/client/domain-operator/src/bundle_producer_election_solver.rs @@ -13,7 +13,7 @@ use sp_runtime::traits::Block as BlockT; use sp_runtime::RuntimeAppPublic; use std::marker::PhantomData; use std::sync::Arc; -use subspace_core_primitives::PotOutput; +use subspace_core_primitives::pot::PotOutput; use subspace_runtime_primitives::Balance; use tracing::log; @@ -55,7 +55,7 @@ where domain_id: DomainId, operator_id: OperatorId, proof_of_time: PotOutput, - ) -> sp_blockchain::Result, OperatorPublicKey)>> { + ) -> sp_blockchain::Result> { let BundleProducerElectionParams { total_domain_stake, bundle_slot_probability, @@ -102,7 +102,6 @@ where proof_of_time, vrf_signature, operator_id, - consensus_block_hash, }; return Ok(Some((proof_of_election, operator_signing_key))); } diff --git a/domains/client/domain-operator/src/domain_block_processor.rs b/domains/client/domain-operator/src/domain_block_processor.rs index d42a29be2c..994d35bc66 100644 --- a/domains/client/domain-operator/src/domain_block_processor.rs +++ b/domains/client/domain-operator/src/domain_block_processor.rs @@ -8,11 +8,11 @@ use domain_block_preprocessor::inherents::get_inherent_data; use domain_block_preprocessor::PreprocessResult; use sc_client_api::{AuxStore, BlockBackend, Finalizer, ProofProvider}; use sc_consensus::{ - BlockImportParams, ForkChoiceStrategy, ImportResult, SharedBlockImport, StateAction, + BlockImportParams, BoxBlockImport, ForkChoiceStrategy, ImportResult, StateAction, StorageChanges, }; use sc_transaction_pool_api::OffchainTransactionPoolFactory; -use sp_api::{ApiError, ApiExt, ProvideRuntimeApi}; +use sp_api::{ApiExt, ProvideRuntimeApi}; use sp_blockchain::{HashAndNumber, HeaderBackend, HeaderMetadata}; use sp_consensus::{BlockOrigin, SyncOracle}; use sp_core::traits::CodeExecutor; @@ -28,7 +28,6 @@ use sp_runtime::traits::{Block as BlockT, Header as HeaderT, NumberFor, One, Zer use sp_runtime::{Digest, Saturating}; use std::cmp::Ordering; use std::collections::VecDeque; -use std::str::FromStr; use std::sync::Arc; struct DomainBlockBuildResult @@ -63,7 +62,7 @@ where pub(crate) consensus_client: Arc, pub(crate) backend: Arc, pub(crate) domain_confirmation_depth: NumberFor, - pub(crate) block_import: SharedBlockImport, + pub(crate) block_import: Arc>, pub(crate) import_notification_sinks: DomainImportNotificationSinks, pub(crate) consensus_network_sync_oracle: Arc, } @@ -423,15 +422,6 @@ where inherent_digests: Digest, inherent_data: sp_inherents::InherentData, ) -> Result, sp_blockchain::Error> { - // TODO: This is used to keep compatible with gemini-3h, remove before next network - let is_gemini_3h = self.consensus_client.info().genesis_hash - == FromStr::from_str( - // The genesis hash of gemini-3h - "0c121c75f4ef450f40619e1fca9d1e8e7fbabc42c895bc4790801e85d5a91c34", - ) - .map_err(|_| ()) - .expect("parsing consensus block hash should success"); - let block_builder = BlockBuilder::new( &*self.client, parent_hash, @@ -441,7 +431,6 @@ where &*self.backend, extrinsics, Some(inherent_data), - is_gemini_3h, )?; let BuiltBlock { @@ -491,11 +480,7 @@ where *block_import_params.header.parent_hash(), ); - let import_result = (*self.block_import) - .write() - .await - .import_block(block_import_params) - .await?; + let import_result = self.block_import.import_block(block_import_params).await?; match import_result { ImportResult::Imported(..) => {} @@ -757,39 +742,16 @@ where } if let Some(mismatched_receipts) = self.find_mismatch_receipt(consensus_block_hash)? { + let fraud_proof = self.generate_fraud_proof(mismatched_receipts)?; + tracing::info!("Submit fraud proof: {fraud_proof:?}"); + let consensus_best_hash = self.consensus_client.info().best_hash; let mut consensus_runtime_api = self.consensus_client.runtime_api(); - let fraud_proof_api_version = consensus_runtime_api - .api_version::>(consensus_best_hash) - .map_err(sp_blockchain::Error::RuntimeApiError)? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!("FraudProofApi not found at: {:?}", consensus_best_hash).into(), - )) - })?; - let domains_api_version = consensus_runtime_api - .api_version::>(consensus_best_hash) - .map_err(sp_blockchain::Error::RuntimeApiError)? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!("DomainsApi not found at: {:?}", consensus_best_hash).into(), - )) - })?; - - // New `DomainsApi` introduced in version 4 is required for generating fraud proof and - // new `FraudProofApi` in version 2 is required for submitting fraud proof - // TODO: remove before next network - if domains_api_version >= 4 && fraud_proof_api_version >= 2 { - let fraud_proof_v2 = self.generate_fraud_proof(mismatched_receipts)?; - - tracing::info!("Submit fraud proof: {fraud_proof_v2:?}"); - consensus_runtime_api.register_extension( - self.consensus_offchain_tx_pool_factory - .offchain_transaction_pool(consensus_best_hash), - ); - consensus_runtime_api - .submit_fraud_proof_unsigned(consensus_best_hash, fraud_proof_v2)?; - } + consensus_runtime_api.register_extension( + self.consensus_offchain_tx_pool_factory + .offchain_transaction_pool(consensus_best_hash), + ); + consensus_runtime_api.submit_fraud_proof_unsigned(consensus_best_hash, fraud_proof)?; } Ok(()) diff --git a/domains/client/domain-operator/src/domain_bundle_producer.rs b/domains/client/domain-operator/src/domain_bundle_producer.rs index 774f55ee55..f610b26e48 100644 --- a/domains/client/domain-operator/src/domain_bundle_producer.rs +++ b/domains/client/domain-operator/src/domain_bundle_producer.rs @@ -4,7 +4,7 @@ use crate::utils::OperatorSlotInfo; use crate::BundleSender; use codec::Decode; use sc_client_api::{AuxStore, BlockBackend}; -use sp_api::{ApiError, ApiExt, ProvideRuntimeApi}; +use sp_api::ProvideRuntimeApi; use sp_block_builder::BlockBuilder; use sp_blockchain::HeaderBackend; use sp_consensus_slots::Slot; @@ -107,8 +107,7 @@ where + MessengerApi, CBlock::Hash>, CClient: HeaderBackend + ProvideRuntimeApi, CClient::Api: DomainsApi + BundleProducerElectionApi, - TransactionPool: - sc_transaction_pool_api::TransactionPool::Hash>, + TransactionPool: sc_transaction_pool_api::TransactionPool, { #[allow(clippy::too_many_arguments)] pub fn new( @@ -241,23 +240,9 @@ where .domain_bundle_proposer .load_next_receipt(domain_best_number_onchain, head_receipt_number)?; - let api_version = self - .consensus_client - .runtime_api() - .api_version::>(consensus_chain_best_hash) - .map_err(sp_blockchain::Error::RuntimeApiError)? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!("DomainsApi not found at: {:?}", consensus_chain_best_hash).into(), - )) - })?; - // When the receipt gap is greater than one the operator need to produce receipt // instead of bundle - // TODO: remove api runtime version check before next network - if api_version >= 5 - && domain_best_number_onchain.saturating_sub(head_receipt_number) > 1u32.into() - { + if domain_best_number_onchain.saturating_sub(head_receipt_number) > 1u32.into() { info!( ?domain_best_number_onchain, ?head_receipt_number, diff --git a/domains/client/domain-operator/src/domain_bundle_proposer.rs b/domains/client/domain-operator/src/domain_bundle_proposer.rs index e6c05e7d09..28964f2dd0 100644 --- a/domains/client/domain-operator/src/domain_bundle_proposer.rs +++ b/domains/client/domain-operator/src/domain_bundle_proposer.rs @@ -3,13 +3,13 @@ use codec::Encode; use futures::{select, FutureExt}; use sc_client_api::{AuxStore, BlockBackend}; use sc_transaction_pool_api::InPoolTransaction; -use sp_api::{ApiError, ApiExt, ProvideRuntimeApi}; +use sp_api::{ApiExt, ProvideRuntimeApi}; use sp_block_builder::BlockBuilder; use sp_blockchain::HeaderBackend; use sp_domains::core_api::DomainCoreApi; use sp_domains::{ - BundleHeader, DomainBundleLimit, DomainId, DomainsApi, ExecutionReceipt, HeaderHashingFor, - OperatorId, ProofOfElection, + BundleHeader, DomainId, DomainsApi, ExecutionReceipt, HeaderHashingFor, OperatorId, + ProofOfElection, }; use sp_messenger::MessengerApi; use sp_runtime::traits::{Block as BlockT, Hash as HashT, Header as HeaderT, NumberFor, One, Zero}; @@ -32,8 +32,8 @@ const BUNDLE_UTILIZATION_THRESHOLD: Percent = Percent::from_percent(95); // `PreviousBundledTx` used to keep track of tx that have included in previous bundle and avoid // to re-including these transactions in the next bundle if the consensus hash did not change. struct PreviousBundledTx { - bundled_at: ::Hash, - tx_hashes: HashSet<::Hash>, + bundled_at: CBlock::Hash, + tx_hashes: HashSet, } impl PreviousBundledTx { @@ -44,18 +44,18 @@ impl PreviousBundledTx { } } - fn already_bundled(&self, tx_hash: &::Hash) -> bool { + fn already_bundled(&self, tx_hash: &Block::Hash) -> bool { self.tx_hashes.contains(tx_hash) } - fn maybe_clear(&mut self, consensus_hash: ::Hash) { + fn maybe_clear(&mut self, consensus_hash: CBlock::Hash) { if self.bundled_at != consensus_hash { self.bundled_at = consensus_hash; self.tx_hashes.clear(); } } - fn add_bundled(&mut self, tx_hash: ::Hash) { + fn add_bundled(&mut self, tx_hash: Block::Hash) { self.tx_hashes.insert(tx_hash); } } @@ -102,8 +102,7 @@ where + MessengerApi, CBlock::Hash>, CClient: HeaderBackend + ProvideRuntimeApi, CClient::Api: DomainsApi, - TransactionPool: - sc_transaction_pool_api::TransactionPool::Hash>, + TransactionPool: sc_transaction_pool_api::TransactionPool, { pub fn new( domain_id: DomainId, @@ -121,90 +120,9 @@ where } } - pub(crate) fn fetch_storage_fund_balance_and_fee( - &self, - operator_id: OperatorId, - ) -> sp_blockchain::Result<(Balance, Balance)> { - let best_hash = self.consensus_client.info().best_hash; - let consensus_runtime_api = self.consensus_client.runtime_api(); - let api_version = consensus_runtime_api - .api_version::>(best_hash) - .map_err(sp_blockchain::Error::RuntimeApiError)? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!("DomainsApi not found at: {:?}", best_hash).into(), - )) - })?; - - let transaction_byte_fee = consensus_runtime_api.consensus_chain_byte_fee(best_hash)?; - - // TODO: This is used to keep compatible with gemini-3h, remove before next network - if api_version >= 3 { - let storage_fund_balance = - consensus_runtime_api.storage_fund_account_balance(best_hash, operator_id)?; - - Ok((storage_fund_balance, transaction_byte_fee)) - } else { - Ok((Balance::MAX, transaction_byte_fee)) - } - } - - pub(crate) fn fetch_domain_bundle_limit(&self) -> sp_blockchain::Result { - let best_hash = self.consensus_client.info().best_hash; - let consensus_runtime_api = self.consensus_client.runtime_api(); - let api_version = consensus_runtime_api - .api_version::>(best_hash) - .map_err(sp_blockchain::Error::RuntimeApiError)? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!("DomainsApi not found at: {:?}", best_hash).into(), - )) - })?; - - // TODO: This is used to keep compatible with gemini-3h, remove before next network - if api_version >= 2 { - self.consensus_client - .runtime_api() - .domain_bundle_limit(best_hash, self.domain_id)? - .ok_or_else(|| { - sp_blockchain::Error::Application( - format!("Domain bundle limit for {:?} not found", self.domain_id).into(), - ) - }) - } else { - // If bundle limit runtime api is not available, we need to revert to old behaviour and - // fetch domain block limit. - let domain_block_limit = self - .consensus_client - .runtime_api() - .domain_block_limit(best_hash, self.domain_id)? - .ok_or_else(|| { - sp_blockchain::Error::Application( - format!("Domain block limit for {:?} not found", self.domain_id).into(), - ) - })?; - - Ok(DomainBundleLimit { - max_bundle_weight: domain_block_limit.max_block_weight, - max_bundle_size: domain_block_limit.max_block_size, - }) - } - } - - pub(crate) fn messenger_api_version(&self, at: Block::Hash) -> sp_blockchain::Result { - self.client - .runtime_api() - .api_version::, CBlock::Hash>>(at)? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!("MessengerApi not found at: {at:?}").into(), - )) - }) - } - pub(crate) async fn propose_bundle_at( &mut self, - proof_of_election: ProofOfElection, + proof_of_election: ProofOfElection, tx_range: U256, operator_id: OperatorId, receipt: ExecutionReceiptFor, @@ -212,6 +130,7 @@ where // NOTE: use the domain block that derive the ER to validate the extrinsic to be included // in the bundle, so the validity of the extrinsic is committed to the ER that submited together. let (parent_number, parent_hash) = (receipt.domain_block_number, receipt.domain_block_hash); + let consensus_best_hash = self.consensus_client.info().best_hash; let mut t1 = self.transaction_pool.ready_at(parent_number).fuse(); // TODO: proper timeout @@ -231,15 +150,33 @@ where // Clear the previous bundled tx info whenever the consensus chain tip is changed, // this allow the operator to retry for the previous bundled tx in case the previous // bundle fail to submit to the consensus chain due to any reason. - self.previous_bundled_tx - .maybe_clear(self.consensus_client.info().best_hash); + self.previous_bundled_tx.maybe_clear(consensus_best_hash); - let bundle_vrf_hash = U256::from_be_bytes(proof_of_election.vrf_hash()); + let (domain_bundle_limit, storage_fund_balance, transaction_byte_fee) = { + let consensus_runtime_api = self.consensus_client.runtime_api(); - let domain_bundle_limit = self.fetch_domain_bundle_limit()?; + let domain_bundle_limit = consensus_runtime_api + .domain_bundle_limit(consensus_best_hash, self.domain_id)? + .ok_or_else(|| { + sp_blockchain::Error::Application( + format!("Domain bundle limit for {:?} not found", self.domain_id).into(), + ) + })?; - let (storage_fund_balance, transaction_byte_fee) = - self.fetch_storage_fund_balance_and_fee(operator_id)?; + let storage_fund_balance = consensus_runtime_api + .storage_fund_account_balance(consensus_best_hash, operator_id)?; + + let transaction_byte_fee = + consensus_runtime_api.consensus_chain_byte_fee(consensus_best_hash)?; + + ( + domain_bundle_limit, + storage_fund_balance, + transaction_byte_fee, + ) + }; + + let bundle_vrf_hash = U256::from_be_bytes(*proof_of_election.vrf_hash()); let header_size = receipt.encoded_size() + proof_of_election.encoded_size() @@ -249,8 +186,6 @@ where // Header signature size + 64; - let messenger_api_version = self.messenger_api_version(parent_hash)?; - let mut extrinsics = Vec::new(); let mut estimated_bundle_weight = Weight::default(); let mut bundle_size = 0u32; @@ -334,12 +269,10 @@ where } // Double check XDM before adding it to the bundle - if messenger_api_version >= 4 { - if let Some(false) = - runtime_api_instance.is_xdm_mmr_proof_valid(parent_hash, pending_tx_data)? - { - continue; - } + if let Some(false) = + runtime_api_instance.is_xdm_mmr_proof_valid(parent_hash, pending_tx_data)? + { + continue; } // Double check the transaction validity, because the tx pool are re-validate the transaction diff --git a/domains/client/domain-operator/src/domain_worker.rs b/domains/client/domain-operator/src/domain_worker.rs index ce9454d7ce..caa37f2e13 100644 --- a/domains/client/domain-operator/src/domain_worker.rs +++ b/domains/client/domain-operator/src/domain_worker.rs @@ -96,8 +96,8 @@ pub(super) async fn start_worker< + BundleProducerElectionApi + FraudProofApi + MmrApi>, - TransactionPool: sc_transaction_pool_api::TransactionPool::Hash> - + 'static, + TransactionPool: + sc_transaction_pool_api::TransactionPool + 'static, Backend: sc_client_api::Backend + 'static, IBNS: Stream, mpsc::Sender<()>)> + Send + 'static, CIBNS: Stream> + Send + 'static, diff --git a/domains/client/domain-operator/src/fraud_proof.rs b/domains/client/domain-operator/src/fraud_proof.rs index 6b4cd40341..3402e69735 100644 --- a/domains/client/domain-operator/src/fraud_proof.rs +++ b/domains/client/domain-operator/src/fraud_proof.rs @@ -6,7 +6,7 @@ use domain_runtime_primitives::opaque::AccountId; use domain_runtime_primitives::CheckExtrinsicsValidityError; use sc_client_api::{AuxStore, BlockBackend, ProofProvider}; use sc_domains::FPStorageKeyProvider; -use sp_api::{ApiError, ApiExt, ProvideRuntimeApi}; +use sp_api::{ApiExt, ProvideRuntimeApi}; use sp_blockchain::HeaderBackend; use sp_core::traits::CodeExecutor; use sp_core::H256; @@ -155,10 +155,8 @@ where &self, domain_id: DomainId, local_receipt: &ExecutionReceiptFor, - ) -> Result< - Option, ::Hash, H256>>, - FraudProofError, - > { + ) -> Result, CBlock::Hash, H256>>, FraudProofError> + { // NOTE: domain runtime code is take affect in the next block, so we need to get // the doamin runtime code of the parent block, which is what used to derived the // ER. @@ -180,7 +178,7 @@ where ) })?; let is_domain_runtime_upgraded_since = runtime_api - .is_domain_runtime_updraded_since(best_hash, domain_id, parent_consensus_number)? + .is_domain_runtime_upgraded_since(best_hash, domain_id, parent_consensus_number)? .ok_or_else(|| { sp_blockchain::Error::Application( "Failed to get domain runtime object".to_string().into(), @@ -240,10 +238,8 @@ where extrinsics.into(), // NOTE: the inherent extrinsic is already contained in the above `extrinsics`, which // is getting from the block body, thus it is okay to pass `maybe_inherent_data` as - // `None` and `is_gemini_3h` as `false`, the latter is only used when `maybe_inherent_data` - // is `Some`. + // `None`. None, - false, )?; let (storage_changes, call_data) = match &execution_phase { @@ -393,25 +389,12 @@ where let maybe_runtime_id = self.is_domain_runtime_updraded_at(domain_id, consensus_block_hash)?; - let consensus_runtime_api = self.consensus_client.runtime_api(); - let api_version = consensus_runtime_api - .api_version::>(consensus_block_hash) - .map_err(sp_blockchain::Error::RuntimeApiError)? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!("DomainsApi not found at: {:?}", consensus_block_hash).into(), - )) - })?; - - // Domains api must be atleast version 4 - let should_include_domain_sudo_call = api_version >= 5; let domain_inherent_extrinsic_data_proof = DomainInherentExtrinsicDataProof::generate( &self.storage_key_provider, self.consensus_client.as_ref(), domain_id, consensus_block_hash, maybe_runtime_id, - should_include_domain_sudo_call, )?; let invalid_domain_extrinsics_root_proof = FraudProof { @@ -491,12 +474,10 @@ where let mut exts = Vec::with_capacity(bundle.extrinsics.len()); for opaque_extrinsic in &bundle.extrinsics { - let extrinsic = <::Extrinsic>::decode( - &mut opaque_extrinsic.encode().as_slice(), - ) - .map_err(|_| FraudProofError::InvalidBundleExtrinsic { - bundle_index: bundle_index as usize, - })?; + let extrinsic = Block::Extrinsic::decode(&mut opaque_extrinsic.encode().as_slice()) + .map_err(|_| FraudProofError::InvalidBundleExtrinsic { + bundle_index: bundle_index as usize, + })?; exts.push(extrinsic) } @@ -629,13 +610,14 @@ where { let encoded_extrinsic = extrinsic.encode(); block_extrinsics.push( - ::Extrinsic::decode(&mut encoded_extrinsic.as_slice()) - .map_err(|decoding_error| { + Block::Extrinsic::decode(&mut encoded_extrinsic.as_slice()).map_err( + |decoding_error| { FraudProofError::UnableToDecodeOpaqueBundleExtrinsic { extrinsic_index, decoding_error, } - })?, + }, + )?, ); } @@ -708,39 +690,19 @@ where InvalidBundlesProofData::Extrinsic(extrinsic_proof) } InvalidBundleType::InvalidXDM(extrinsic_index) => { - let messenger_api_version = self - .client - .runtime_api() - .api_version::, CBlock::Hash>>( - local_receipt.domain_block_hash, - )? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!( - "MessengerApi not found at: {:?}", - local_receipt.domain_block_hash - ) - .into(), - )) - })?; - let encoded_extrinsic = bundle.extrinsics[extrinsic_index as usize].encode(); - let extrinsic = - ::Extrinsic::decode(&mut encoded_extrinsic.as_slice()) - .map_err(|decoding_error| { - FraudProofError::UnableToDecodeOpaqueBundleExtrinsic { - extrinsic_index: extrinsic_index as usize, - decoding_error, - } - })?; + let extrinsic = Block::Extrinsic::decode(&mut encoded_extrinsic.as_slice()) + .map_err(|decoding_error| { + FraudProofError::UnableToDecodeOpaqueBundleExtrinsic { + extrinsic_index: extrinsic_index as usize, + decoding_error, + } + })?; - let maybe_xdm_mmr_proof = if messenger_api_version >= 4 { - self.client - .runtime_api() - .extract_xdm_mmr_proof(local_receipt.domain_block_hash, &extrinsic)? - } else { - None - }; + let maybe_xdm_mmr_proof = self + .client + .runtime_api() + .extract_xdm_mmr_proof(local_receipt.domain_block_hash, &extrinsic)?; let mmr_root_proof = match maybe_xdm_mmr_proof { // `None` this is not an XDM so not need to generate mmr root proof @@ -824,21 +786,9 @@ where bad_receipt_hash: Block::Hash, ) -> Result, FraudProofError> { let block_hash = local_receipt.domain_block_hash; - let runtime_api = self.client.runtime_api(); - let api_version = runtime_api - .api_version::>(block_hash) - .map_err(sp_blockchain::Error::RuntimeApiError)? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!("DomainCoreApi not found at: {:?}", block_hash).into(), - )) - })?; - let key = if api_version >= 2 { - runtime_api.block_fees_storage_key(block_hash)? - } else { - sp_domains::operator_block_fees_final_key() - }; + + let key = runtime_api.block_fees_storage_key(block_hash)?; let storage_proof = self .client .read_proof(block_hash, &mut [key.as_slice()].into_iter())?; @@ -926,7 +876,7 @@ where fn generate_execution_phase( &self, - local_receipt_domain_block_hash: ::Hash, + local_receipt_domain_block_hash: Block::Hash, local_trace_length: usize, mismatch: (TraceDiffType, u32), ) -> Result { @@ -987,9 +937,9 @@ where /// to prove that it is valid, so that means execution should stop here. pub(crate) fn find_mismatched_execution_phase( &self, - local_receipt_domain_block_hash: ::Hash, - local_trace: &[::Hash], - other_trace: &[::Hash], + local_receipt_domain_block_hash: Block::Hash, + local_trace: &[Block::Hash], + other_trace: &[Block::Hash], ) -> Result, FraudProofError> { let state_root_mismatch = local_trace .iter() diff --git a/domains/client/domain-operator/src/lib.rs b/domains/client/domain-operator/src/lib.rs index 46b0b88c86..802dbd21f9 100644 --- a/domains/client/domain-operator/src/lib.rs +++ b/domains/client/domain-operator/src/lib.rs @@ -86,7 +86,7 @@ pub use domain_worker::OpaqueBundleFor; use futures::channel::mpsc; use futures::Stream; use sc_client_api::{AuxStore, BlockImportNotification}; -use sc_consensus::SharedBlockImport; +use sc_consensus::BoxBlockImport; use sc_transaction_pool_api::OffchainTransactionPoolFactory; use sc_utils::mpsc::TracingUnboundedSender; use sp_blockchain::HeaderBackend; @@ -99,7 +99,7 @@ use sp_runtime::traits::{Block as BlockT, Header as HeaderT, NumberFor}; use sp_runtime::DigestItem; use std::marker::PhantomData; use std::sync::Arc; -use subspace_core_primitives::PotOutput; +use subspace_core_primitives::pot::PotOutput; use subspace_runtime_primitives::Balance; pub type ExecutionReceiptFor = ExecutionReceipt< @@ -177,7 +177,7 @@ pub struct OperatorParams< pub bundle_sender: Arc>, pub operator_streams: OperatorStreams, pub domain_confirmation_depth: NumberFor, - pub block_import: SharedBlockImport, + pub block_import: Arc>, pub skip_empty_bundle_production: bool, pub skip_out_of_order_slot: bool, } diff --git a/domains/client/domain-operator/src/operator.rs b/domains/client/domain-operator/src/operator.rs index 4f76e78932..db27af734d 100644 --- a/domains/client/domain-operator/src/operator.rs +++ b/domains/client/domain-operator/src/operator.rs @@ -97,8 +97,8 @@ where + FraudProofApi + MmrApi>, Backend: sc_client_api::Backend + Send + Sync + 'static, - TransactionPool: sc_transaction_pool_api::TransactionPool::Hash> - + 'static, + TransactionPool: + sc_transaction_pool_api::TransactionPool + 'static, E: CodeExecutor, { /// Create a new instance. diff --git a/domains/client/domain-operator/src/tests.rs b/domains/client/domain-operator/src/tests.rs index b9fcb3d33c..f4c0eacff3 100644 --- a/domains/client/domain-operator/src/tests.rs +++ b/domains/client/domain-operator/src/tests.rs @@ -1,3 +1,9 @@ +// TODO: Remove +#![allow( + clippy::needless_return, + reason = "https://github.com/rust-lang/rust-clippy/issues/13458" +)] + use crate::domain_block_processor::{DomainBlockProcessor, PendingConsensusBlocks}; use crate::domain_bundle_producer::DomainBundleProducer; use crate::domain_bundle_proposer::DomainBundleProposer; @@ -16,7 +22,6 @@ use futures::StreamExt; use pallet_domains::OperatorConfig; use pallet_messenger::ChainAllowlistUpdate; use sc_client_api::{Backend, BlockBackend, BlockchainEvents, HeaderBackend}; -use sc_consensus::SharedBlockImport; use sc_domains::generate_mmr_proof; use sc_service::{BasePath, Role}; use sc_transaction_pool::error::Error as PoolError; @@ -58,7 +63,7 @@ use sp_transaction_pool::runtime_api::TaggedTransactionQueue; use sp_weights::Weight; use std::collections::{BTreeMap, VecDeque}; use std::sync::Arc; -use subspace_core_primitives::PotOutput; +use subspace_core_primitives::pot::PotOutput; use subspace_runtime_primitives::opaque::Block as CBlock; use subspace_runtime_primitives::{Balance, SSC}; use subspace_test_service::{ @@ -331,7 +336,7 @@ async fn test_processing_empty_consensus_block() { consensus_client: ferdie.client.clone(), backend: alice.backend.clone(), domain_confirmation_depth: 256u32, - block_import: SharedBlockImport::new(alice.client.clone()), + block_import: Arc::new(Box::new(alice.client.clone())), import_notification_sinks: Default::default(), consensus_network_sync_oracle: ferdie.sync_service.clone(), }; diff --git a/domains/client/domain-operator/src/utils.rs b/domains/client/domain-operator/src/utils.rs index 5293b79d4a..cb1c410154 100644 --- a/domains/client/domain-operator/src/utils.rs +++ b/domains/client/domain-operator/src/utils.rs @@ -3,7 +3,7 @@ use sc_utils::mpsc::{TracingUnboundedReceiver, TracingUnboundedSender}; use sp_consensus_slots::Slot; use sp_runtime::traits::{Block as BlockT, NumberFor}; use std::sync::Arc; -use subspace_core_primitives::PotOutput; +use subspace_core_primitives::pot::PotOutput; /// Data required to produce bundles on executor node. #[derive(PartialEq, Clone, Debug)] diff --git a/domains/client/eth-service/Cargo.toml b/domains/client/eth-service/Cargo.toml index cee7b1f2d9..046fae7ac3 100644 --- a/domains/client/eth-service/Cargo.toml +++ b/domains/client/eth-service/Cargo.toml @@ -12,31 +12,32 @@ include = [ ] [dependencies] -clap = { version = "4.5.15", features = ["derive"] } +clap = { version = "4.5.18", features = ["derive"] } domain-runtime-primitives = { version = "0.1.0", path = "../../primitives/runtime" } domain-service = { version = "0.1.0", path = "../../service" } -fc-consensus = { version = "2.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -fc-db = { version = "2.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa", default-features = false } -fc-mapping-sync = { version = "2.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa", default-features = false } -fc-rpc = { version = "2.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa", default-features = false, features = ['rpc-binary-search-estimate'] } -fc-rpc-core = { version = "1.1.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -fc-storage = { version = "1.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -fp-rpc = { version = "3.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa", features = ['default'] } -futures = "0.3.29" -jsonrpsee = { version = "0.23.2", features = ["server"] } -pallet-transaction-payment-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +fc-consensus = { version = "2.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +fc-db = { version = "2.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968", default-features = false } +fc-mapping-sync = { version = "2.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968", default-features = false } +fc-rpc = { version = "2.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968", default-features = false, features = ['rpc-binary-search-estimate'] } +fc-rpc-core = { version = "1.1.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +fc-storage = { version = "1.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +fp-rpc = { version = "3.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968", features = ['default'] } +futures = "0.3.30" +jsonrpsee = { version = "0.24.5", features = ["server"] } +pallet-transaction-payment-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } parity-scale-codec = "3.6.12" -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -serde = { version = "1.0.206", features = ["derive"] } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -substrate-frame-rpc-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-rpc-server = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +serde = { version = "1.0.110", features = ["derive"] } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +substrate-frame-rpc-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } diff --git a/domains/client/eth-service/src/provider.rs b/domains/client/eth-service/src/provider.rs index f5f32908de..f689d495bf 100644 --- a/domains/client/eth-service/src/provider.rs +++ b/domains/client/eth-service/src/provider.rs @@ -14,7 +14,8 @@ use fp_rpc::{ConvertTransaction, ConvertTransactionRuntimeApi, EthereumRuntimeRP use jsonrpsee::RpcModule; use parity_scale_codec::{Decode, Encode}; use sc_client_api::{AuxStore, Backend, BlockBackend, BlockchainEvents, StorageProvider}; -use sc_rpc::{RpcSubscriptionIdProvider, SubscriptionTaskExecutor}; +use sc_rpc::SubscriptionTaskExecutor; +use sc_rpc_server::SubscriptionIdProvider; use sc_service::BasePath; use sc_transaction_pool::ChainApi; use sc_transaction_pool_api::TransactionPool; @@ -96,7 +97,7 @@ where + ConvertTransactionRuntimeApi, Client::Api: BlockBuilder, Client::Api: EthereumRuntimeRPCApi, - CT: ConvertTransaction<::Extrinsic> + Clone + Default + Send + Sync + 'static, + CT: ConvertTransaction + Clone + Default + Send + Sync + 'static, EC: EthConfig, TxPool: TransactionPool + Sync + Send + 'static, CA: ChainApi + 'static, @@ -152,7 +153,7 @@ where }) } - fn rpc_id(&self) -> Option> { + fn rpc_id(&self) -> Option> { Some(Box::new(fc_rpc::EthereumSubIdProvider)) } diff --git a/domains/client/eth-service/src/rpc.rs b/domains/client/eth-service/src/rpc.rs index d6f820c8f4..25cd28ab27 100644 --- a/domains/client/eth-service/src/rpc.rs +++ b/domains/client/eth-service/src/rpc.rs @@ -114,7 +114,7 @@ where BE: Backend + 'static, TxPool: TransactionPool + 'static, CA: ChainApi + 'static, - CT: ConvertTransaction<::Extrinsic> + Send + Sync + 'static, + CT: ConvertTransaction + Send + Sync + 'static, EC: EthConfig, CIDP: CreateInherentDataProviders + Send + 'static, { diff --git a/domains/client/relayer/Cargo.toml b/domains/client/relayer/Cargo.toml index 21693a221e..4214a845fc 100644 --- a/domains/client/relayer/Cargo.toml +++ b/domains/client/relayer/Cargo.toml @@ -14,18 +14,18 @@ include = [ [dependencies] async-channel = "1.9.0" cross-domain-message-gossip = { path = "../../client/cross-domain-message-gossip" } -futures = "0.3.29" +futures = "0.3.30" parity-scale-codec = { version = "3.6.12", features = ["derive"] } -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-state-db = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-state-db = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../../../crates/sp-domains" } sp-messenger = { version = "0.1.0", path = "../../primitives/messenger" } -sp-mmr-primitives = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-mmr-primitives = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { version = "0.1.0", default-features = false, path = "../../../crates/sp-subspace-mmr" } tracing = "0.1.40" diff --git a/domains/client/relayer/src/lib.rs b/domains/client/relayer/src/lib.rs index 93e8888646..59682c3d52 100644 --- a/domains/client/relayer/src/lib.rs +++ b/domains/client/relayer/src/lib.rs @@ -12,7 +12,7 @@ use cross_domain_message_gossip::{ use parity_scale_codec::{Codec, Encode}; use sc_client_api::{AuxStore, HeaderBackend, ProofProvider, StorageProof}; use sc_utils::mpsc::TracingUnboundedSender; -use sp_api::{ApiError, ApiExt, ProvideRuntimeApi}; +use sp_api::ProvideRuntimeApi; use sp_core::H256; use sp_domains::DomainsApi; use sp_messenger::messages::{ @@ -403,21 +403,6 @@ where let consensus_chain_api = consensus_chain_client.runtime_api(); let confirmed_domain_block_hash = { - // TODO: This is used to keep compatible with gemini-3h, remove before next network - let api_version = consensus_chain_api - .api_version::>( - to_process_consensus_hash, - ) - .map_err(sp_blockchain::Error::RuntimeApiError)? - .ok_or_else(|| { - sp_blockchain::Error::RuntimeApiError(ApiError::Application( - format!("DomainsApi not found at: {:?}", to_process_consensus_hash) - .into(), - )) - })?; - if api_version < 2 { - return Ok(()); - } match consensus_chain_api .latest_confirmed_domain_block(to_process_consensus_hash, domain_id)? { diff --git a/domains/client/relayer/src/worker.rs b/domains/client/relayer/src/worker.rs index 0e7c1ee5e7..630256ced5 100644 --- a/domains/client/relayer/src/worker.rs +++ b/domains/client/relayer/src/worker.rs @@ -2,7 +2,7 @@ use crate::{BlockT, Error, GossipMessageSink, HeaderBackend, HeaderT, Relayer, L use cross_domain_message_gossip::{ChannelUpdate, Message as GossipMessage, MessageData}; use futures::StreamExt; use sc_client_api::{AuxStore, BlockchainEvents, ProofProvider}; -use sp_api::{ApiExt, ProvideRuntimeApi}; +use sp_api::ProvideRuntimeApi; use sp_consensus::SyncOracle; use sp_domains::{DomainId, DomainsApi}; use sp_messenger::messages::ChainId; @@ -102,17 +102,6 @@ where Client::Api: RelayerApi, NumberFor, CBlock::Hash>, { let api = client.runtime_api(); - let api_version = api - .api_version::, NumberFor, CBlock::Hash>>( - block_hash, - )? - .ok_or(sp_api::ApiError::Application( - "Failed to get relayer api version".into(), - ))?; - - if api_version < 2 { - return Ok(()); - } let updated_channels = api.updated_channels(block_hash)?; diff --git a/domains/pallets/auto-id/Cargo.toml b/domains/pallets/auto-id/Cargo.toml index 928d75a744..ecc76c7abe 100644 --- a/domains/pallets/auto-id/Cargo.toml +++ b/domains/pallets/auto-id/Cargo.toml @@ -14,20 +14,20 @@ include = [ [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } +frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } sp-auto-id = { version = "0.1.0", default-features = false, path = "../../primitives/auto-id" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-runtime-primitives = { version = "0.1.0", default-features = false, path = "../../../crates/subspace-runtime-primitives" } [dev-dependencies] pem = "3.0.4" ring = "0.17.8" -sp-io = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-io = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } x509-parser = { version = "0.16.0" } [features] diff --git a/domains/pallets/block-fees/Cargo.toml b/domains/pallets/block-fees/Cargo.toml index c03dbfdce1..558293b4f1 100644 --- a/domains/pallets/block-fees/Cargo.toml +++ b/domains/pallets/block-fees/Cargo.toml @@ -15,14 +15,14 @@ include = [ [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } domain-runtime-primitives = { version = "0.1.0", path = "../../primitives/runtime", default-features = false } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } sp-block-fees = { version = "0.1.0", path = "../../primitives/block-fees", default-features = false } sp-domains = { version = "0.1.0", path = "../../../crates/sp-domains", default-features = false } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/domains/pallets/domain-id/Cargo.toml b/domains/pallets/domain-id/Cargo.toml index 4f06938ace..dc31110ccc 100644 --- a/domains/pallets/domain-id/Cargo.toml +++ b/domains/pallets/domain-id/Cargo.toml @@ -14,15 +14,15 @@ include = [ [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } sp-domains = { version = "0.1.0", default-features = false, path = "../../../crates/sp-domains" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [dev-dependencies] -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-io = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-io = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/domains/pallets/domain-sudo/Cargo.toml b/domains/pallets/domain-sudo/Cargo.toml index 1b19fbe7a0..3f54399915 100644 --- a/domains/pallets/domain-sudo/Cargo.toml +++ b/domains/pallets/domain-sudo/Cargo.toml @@ -14,11 +14,11 @@ include = [ [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domain-sudo = { version = "0.1.0", path = "../../primitives/domain-sudo", default-features = false } [features] diff --git a/domains/pallets/evm_nonce_tracker/Cargo.toml b/domains/pallets/evm_nonce_tracker/Cargo.toml index 1e3dec96f8..9299b6a461 100644 --- a/domains/pallets/evm_nonce_tracker/Cargo.toml +++ b/domains/pallets/evm_nonce_tracker/Cargo.toml @@ -14,11 +14,11 @@ include = [ [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/domains/pallets/executive/Cargo.toml b/domains/pallets/executive/Cargo.toml index b07cf1a4f1..0eb028e311 100644 --- a/domains/pallets/executive/Cargo.toml +++ b/domains/pallets/executive/Cargo.toml @@ -13,23 +13,23 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -frame-executive = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -frame-support = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -frame-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } +frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +frame-executive = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +frame-support = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +frame-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } log = { version = "0.4.22", default-features = false } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } sp-executive = { version = "0.1.0", path = "../../primitives/executive", default-features = false } -sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-std = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-tracing = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } +sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sp-std = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sp-tracing = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } [dev-dependencies] -pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-externalities = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-version = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-externalities = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-version = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/domains/pallets/executive/src/lib.rs b/domains/pallets/executive/src/lib.rs index b7b6adc5c6..47c68c8abe 100644 --- a/domains/pallets/executive/src/lib.rs +++ b/domains/pallets/executive/src/lib.rs @@ -425,20 +425,14 @@ where let remaining_weight = max_weight.saturating_sub(weight.total()); if remaining_weight.all_gt(Weight::zero()) { - let used_weight = - >>::on_idle( - block_number, - remaining_weight, - ); + let used_weight = AllPalletsWithSystem::on_idle(block_number, remaining_weight); >::register_extra_weight_unchecked( used_weight, DispatchClass::Mandatory, ); } - >>::on_finalize( - block_number, - ); + AllPalletsWithSystem::on_finalize(block_number); } /// Wrapped `frame_executive::Executive::apply_extrinsic`. diff --git a/domains/pallets/executive/src/mock.rs b/domains/pallets/executive/src/mock.rs index 3c6fbc5108..b819b50c5d 100644 --- a/domains/pallets/executive/src/mock.rs +++ b/domains/pallets/executive/src/mock.rs @@ -1,6 +1,8 @@ -// Silence a rust-analyzer warning in `construct_runtime!`. This warning isn't present in rustc output. -// TODO: remove when upstream issue is fixed: -#![allow(non_camel_case_types)] +// TODO: remove when upstream issue is fixed +#![allow( + non_camel_case_types, + reason = "https://github.com/rust-lang/rust-analyzer/issues/16514" +)] use crate as pallet_executive; use crate::Config; diff --git a/domains/pallets/executive/src/tests.rs b/domains/pallets/executive/src/tests.rs index 6f91b8d05c..41889f267a 100644 --- a/domains/pallets/executive/src/tests.rs +++ b/domains/pallets/executive/src/tests.rs @@ -25,8 +25,7 @@ fn test_set_code() { impl_version: 1, apis: Default::default(), transaction_version: 1, - state_version: 0, - extrinsic_state_version: 0, + system_version: 2, }; let read_runtime_version = ReadRuntimeVersion(version.encode()); diff --git a/domains/pallets/messenger/Cargo.toml b/domains/pallets/messenger/Cargo.toml index 51fa7b03a4..0ede1913c0 100644 --- a/domains/pallets/messenger/Cargo.toml +++ b/domains/pallets/messenger/Cargo.toml @@ -15,24 +15,24 @@ include = [ [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } log = { version = "0.4.22", default-features = false } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", default-features = false, path = "../../../crates/sp-domains" } sp-messenger = { version = "0.1.0", default-features = false, path = "../../primitives/messenger" } -sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-trie = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-trie = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { version = "0.1.0", default-features = false, path = "../../../crates/sp-subspace-mmr" } [dev-dependencies] domain-runtime-primitives = { path = "../../primitives/runtime" } -pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-transporter = { version = "0.1.0", path = "../transporter" } -sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-state-machine = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/domains/pallets/messenger/src/benchmarking.rs b/domains/pallets/messenger/src/benchmarking.rs index 2a933f2f80..8616d2b3c4 100644 --- a/domains/pallets/messenger/src/benchmarking.rs +++ b/domains/pallets/messenger/src/benchmarking.rs @@ -19,6 +19,7 @@ use sp_messenger::messages::{ RequestResponse, VersionedPayload, }; use sp_mmr_primitives::{EncodableOpaqueLeaf, LeafProof as MmrProof}; +use sp_runtime::traits::Zero; use sp_subspace_mmr::ConsensusChainMmrLeafProof; use sp_trie::StorageProof; #[cfg(feature = "std")] @@ -87,6 +88,7 @@ mod benchmarks { dummy_channel_params::(), None, true, + Zero::zero(), )); let channel = Channels::::get(dst_chain_id, channel_id).expect("channel should exist"); assert_eq!(channel.state, ChannelState::Initiated); @@ -255,7 +257,8 @@ mod benchmarks { dst_chain_id, params, None, - true + true, + Zero::zero(), )); let channel = Channels::::get(dst_chain_id, channel_id).expect("channel should exist"); assert_eq!(channel.state, ChannelState::Initiated); diff --git a/domains/pallets/messenger/src/lib.rs b/domains/pallets/messenger/src/lib.rs index cf94d7b84c..4c01990382 100644 --- a/domains/pallets/messenger/src/lib.rs +++ b/domains/pallets/messenger/src/lib.rs @@ -106,7 +106,7 @@ pub struct InitiateChannelParams { /// Hold identifier trait for messenger specific balance holds pub trait HoldIdentifier { - fn messenger_channel(dst_chain_id: ChainId, channel_id: ChannelId) -> FungibleHoldId; + fn messenger_channel() -> FungibleHoldId; } #[frame_support::pallet] @@ -142,6 +142,7 @@ mod pallet { DomainRegistration, InherentError, InherentType, OnXDMRewards, StorageKeys, INHERENT_IDENTIFIER, }; + use sp_runtime::traits::Zero; use sp_runtime::{ArithmeticError, Perbill, Saturating}; use sp_subspace_mmr::MmrProofVerifier; #[cfg(feature = "std")] @@ -541,6 +542,9 @@ mod pallet { /// Failed to unlock the balance BalanceUnlock, + + /// Invalid channel reserve fee + InvalidChannelReserveFee, } #[pallet::call] @@ -556,21 +560,9 @@ mod pallet { params: InitiateChannelParams, ) -> DispatchResult { let owner = ensure_signed(origin)?; - let channel_open_params = ChannelOpenParams { - max_outgoing_messages: params.max_outgoing_messages, - fee_model: T::ChannelFeeModel::get(), - }; - - // initiate the channel config - let channel_id = Self::do_init_channel( - dst_chain_id, - channel_open_params, - Some(owner.clone()), - true, - )?; // reserve channel open fees - let hold_id = T::HoldIdentifier::messenger_channel(dst_chain_id, channel_id); + let hold_id = T::HoldIdentifier::messenger_channel(); let amount = T::ChannelReserveFee::get(); // ensure there is enough free balance to lock @@ -581,6 +573,19 @@ mod pallet { ); T::Currency::hold(&hold_id, &owner, amount).map_err(|_| Error::::BalanceHold)?; + // initiate the channel config + let channel_open_params = ChannelOpenParams { + max_outgoing_messages: params.max_outgoing_messages, + fee_model: T::ChannelFeeModel::get(), + }; + let channel_id = Self::do_init_channel( + dst_chain_id, + channel_open_params, + Some(owner.clone()), + true, + amount, + )?; + // send message to dst_chain Self::new_outbox_message( T::SelfChainId::get(), @@ -864,7 +869,8 @@ mod pallet { fee_model, }; ChainAllowlist::::mutate(|list| list.insert(dst_chain_id)); - let channel_id = Self::do_init_channel(dst_chain_id, init_params, None, true)?; + let channel_id = + Self::do_init_channel(dst_chain_id, init_params, None, true, Zero::zero())?; Self::do_open_channel(dst_chain_id, channel_id)?; Ok(()) } @@ -953,8 +959,8 @@ mod pallet { } if let Some(owner) = &channel.maybe_owner { - let hold_id = T::HoldIdentifier::messenger_channel(chain_id, channel_id); - let locked_amount = T::Currency::balance_on_hold(&hold_id, owner); + let hold_id = T::HoldIdentifier::messenger_channel(); + let locked_amount = channel.channel_reserve_fee; let amount_to_release = { if channel.state == ChannelState::Open { locked_amount @@ -993,12 +999,20 @@ mod pallet { init_params: ChannelOpenParams>, maybe_owner: Option, check_allowlist: bool, + channel_reserve_fee: BalanceOf, ) -> Result { ensure!( T::SelfChainId::get() != dst_chain_id, Error::::InvalidChain, ); + // If the channel owner is in this chain then the channel reserve fee + // must not be empty + ensure!( + maybe_owner.is_none() || !channel_reserve_fee.is_zero(), + Error::::InvalidChannelReserveFee, + ); + if check_allowlist { let chain_allowlist = ChainAllowlist::::get(); ensure!( @@ -1024,6 +1038,7 @@ mod pallet { max_outgoing_messages: init_params.max_outgoing_messages, fee: init_params.fee_model, maybe_owner, + channel_reserve_fee, }, ); @@ -1144,8 +1159,8 @@ mod pallet { // channel is being opened without an owner since this is a relay message // from other chain // we do not check the allowlist to finish the end to end flow - Self::do_init_channel(msg.src_chain_id, params, None, false).map_err( - |err| { + Self::do_init_channel(msg.src_chain_id, params, None, false, Zero::zero()) + .map_err(|err| { log::error!( "Error initiating channel: {:?} with chain: {:?}: {:?}", msg.channel_id, @@ -1153,8 +1168,7 @@ mod pallet { err ); InvalidTransaction::Call - }, - )?; + })?; } else { log::error!("Unexpected call instead of channel open request: {:?}", msg,); return Err(InvalidTransaction::Call.into()); @@ -1362,7 +1376,7 @@ mod pallet { Ok(()) } - call => ::pre_dispatch(call), + call => Self::pre_dispatch(call), } } } diff --git a/domains/pallets/messenger/src/mock.rs b/domains/pallets/messenger/src/mock.rs index 73f458c3b4..d6cd143682 100644 --- a/domains/pallets/messenger/src/mock.rs +++ b/domains/pallets/messenger/src/mock.rs @@ -21,7 +21,7 @@ macro_rules! impl_runtime { use crate::mock::MockEndpoint; use crate::mock::{AccountId, Balance, MessageId, TestExternalities}; use codec::{Decode, Encode}; - use domain_runtime_primitives::{MultiAccountId, TryConvertBack}; + use domain_runtime_primitives::{MultiAccountId, TryConvertBack, HoldIdentifier}; #[cfg(not(feature = "runtime-benchmarks"))] use frame_support::pallet_prelude::*; use frame_support::{derive_impl, parameter_types}; @@ -31,11 +31,8 @@ macro_rules! impl_runtime { use sp_messenger::messages::{ChainId, FeeModel}; use sp_runtime::traits::Convert; use sp_runtime::BuildStorage; - use crate::HoldIdentifier; - use sp_domains::ChannelId; use scale_info::TypeInfo; use codec::MaxEncodedLen; - use sp_domains::MessengerHoldIdentifier; use frame_support::traits::VariantCount; use core::mem; use sp_runtime::Perbill; @@ -69,16 +66,16 @@ macro_rules! impl_runtime { PartialEq, Eq, Clone, Encode, Decode, TypeInfo, MaxEncodedLen, Ord, PartialOrd, Copy, Debug, )] pub enum MockHoldIdentifer { - Messenger(MessengerHoldIdentifier) + Messenger(HoldIdentifier) } impl VariantCount for MockHoldIdentifer { - const VARIANT_COUNT: u32 = mem::variant_count::() as u32; + const VARIANT_COUNT: u32 = mem::variant_count::() as u32; } - impl HoldIdentifier<$runtime> for MockHoldIdentifer { - fn messenger_channel(dst_chain_id: ChainId, channel_id: ChannelId) -> Self { - MockHoldIdentifer::Messenger(MessengerHoldIdentifier::Channel((dst_chain_id, channel_id))) + impl crate::HoldIdentifier<$runtime> for MockHoldIdentifer { + fn messenger_channel() -> Self { + MockHoldIdentifer::Messenger(HoldIdentifier::MessengerChannel) } } diff --git a/domains/pallets/messenger/src/tests.rs b/domains/pallets/messenger/src/tests.rs index 67bc5a34ff..8559c4db3a 100644 --- a/domains/pallets/messenger/src/tests.rs +++ b/domains/pallets/messenger/src/tests.rs @@ -7,7 +7,7 @@ use crate::mock::{ storage_proof_of_outbox_messages, AccountId, Balance, TestExternalities, }; use crate::{ - BalanceOf, ChainAllowlist, ChainAllowlistUpdate, Channel, ChannelId, ChannelState, Channels, + ChainAllowlist, ChainAllowlistUpdate, Channel, ChannelId, ChannelState, Channels, CloseChannelBy, Error, FeeModel, Inbox, InboxResponses, InitiateChannelParams, Nonce, Outbox, OutboxMessageResult, OutboxResponses, Pallet, U256, }; @@ -25,7 +25,7 @@ use sp_messenger::messages::{ ProtocolMessageRequest, RequestResponse, VersionedPayload, }; use sp_mmr_primitives::{EncodableOpaqueLeaf, LeafProof as MmrProof}; -use sp_runtime::traits::Convert; +use sp_runtime::traits::{Convert, Zero}; use sp_subspace_mmr::ConsensusChainMmrLeafProof; use sp_trie::StorageProof; use std::collections::BTreeSet; @@ -490,8 +490,14 @@ fn force_toggle_channel_state( if add_to_allow_list { ChainAllowlist::::put(list); } - Pallet::::do_init_channel(dst_chain_id, init_params, None, add_to_allow_list) - .unwrap(); + Pallet::::do_init_channel( + dst_chain_id, + init_params, + None, + add_to_allow_list, + Zero::zero(), + ) + .unwrap(); Pallet::::channels(dst_chain_id, channel_id).unwrap() }); @@ -667,7 +673,7 @@ fn close_init_channels_between_chains() { let chain_b_id = chain_b::SelfChainId::get(); let pre_user_account_balance = chain_a_test_ext.execute_with(|| { - >>::reducible_balance( + chain_a::Balances::reducible_balance( &USER_ACCOUNT, Preservation::Protect, Fortitude::Polite, @@ -687,7 +693,7 @@ fn close_init_channels_between_chains() { }); let post_channel_init_balance = chain_a_test_ext.execute_with(|| { - >>::reducible_balance( + chain_a::Balances::reducible_balance( &USER_ACCOUNT, Preservation::Protect, Fortitude::Polite, @@ -729,7 +735,7 @@ fn close_init_channels_between_chains() { }); let post_channel_close_balance = chain_a_test_ext.execute_with(|| { - >>::reducible_balance( + chain_a::Balances::reducible_balance( &USER_ACCOUNT, Preservation::Protect, Fortitude::Polite, @@ -765,6 +771,7 @@ fn test_update_consensus_channel_allowlist() { relay_fee: Default::default(), }, maybe_owner: None, + channel_reserve_fee: Default::default(), }), ); }); @@ -977,15 +984,13 @@ fn test_transport_funds_between_chains_if_dst_chain_disallows_after_message_is_s // initiate transfer let account_id = 1; - let pre_transfer_balance = chain_a_test_ext.execute_with(|| { - >>::total_balance(&account_id) - }); + let pre_transfer_balance = + chain_a_test_ext.execute_with(|| chain_a::Balances::total_balance(&account_id)); initiate_transfer_on_chain(&mut chain_a_test_ext); - let post_transfer_balance = chain_a_test_ext.execute_with(|| { - >>::total_balance(&account_id) - }); + let post_transfer_balance = + chain_a_test_ext.execute_with(|| chain_a::Balances::total_balance(&account_id)); // The transferred fund + relay fee should be deducted assert!(post_transfer_balance < pre_transfer_balance - 500); @@ -1032,9 +1037,8 @@ fn test_transport_funds_between_chains_if_dst_chain_disallows_after_message_is_s })); }); - let post_response_balance = chain_a_test_ext.execute_with(|| { - >>::total_balance(&account_id) - }); + let post_response_balance = + chain_a_test_ext.execute_with(|| chain_a::Balances::total_balance(&account_id)); // The transferred fund should be refunded assert_eq!(post_response_balance, post_transfer_balance + 500) } diff --git a/domains/pallets/transporter/Cargo.toml b/domains/pallets/transporter/Cargo.toml index 88e9e88945..09c16d5c8c 100644 --- a/domains/pallets/transporter/Cargo.toml +++ b/domains/pallets/transporter/Cargo.toml @@ -16,20 +16,20 @@ include = [ [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } domain-runtime-primitives = { path = "../../primitives/runtime", default-features = false } -frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", default-features = false, path = "../../../crates/sp-domains" } sp-messenger = { version = "0.1.0", default-features = false, path = "../../primitives/messenger" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [dev-dependencies] -pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-messenger = { version = "0.1.0", path = "../messenger" } -sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/domains/pallets/transporter/src/mock.rs b/domains/pallets/transporter/src/mock.rs index 35278ad4b9..cf99ce9426 100644 --- a/domains/pallets/transporter/src/mock.rs +++ b/domains/pallets/transporter/src/mock.rs @@ -1,16 +1,15 @@ use crate as pallet_transporter; use crate::{Config, TryConvertBack}; use codec::{Decode, Encode}; -use domain_runtime_primitives::MultiAccountId; +use domain_runtime_primitives::{HoldIdentifier, MultiAccountId}; use frame_support::pallet_prelude::{MaxEncodedLen, TypeInfo}; use frame_support::traits::VariantCount; use frame_support::{derive_impl, parameter_types}; use pallet_balances::AccountData; -use pallet_messenger::HoldIdentifier; use sp_core::U256; -use sp_domains::{DomainId, MessengerHoldIdentifier}; +use sp_domains::DomainId; use sp_messenger::endpoint::{Endpoint, EndpointHandler, EndpointId, EndpointRequest, Sender}; -use sp_messenger::messages::{ChainId, ChannelId, FeeModel, MessageId}; +use sp_messenger::messages::{ChainId, FeeModel, MessageId}; use sp_runtime::traits::{Convert, IdentityLookup}; use sp_runtime::{BuildStorage, DispatchError, Perbill}; @@ -61,7 +60,7 @@ parameter_types! { PartialEq, Eq, Clone, Encode, Decode, TypeInfo, MaxEncodedLen, Ord, PartialOrd, Copy, Debug, )] pub enum MockHoldIdentifer { - Messenger(MessengerHoldIdentifier), + Messenger(HoldIdentifier), } impl VariantCount for MockHoldIdentifer { @@ -76,9 +75,9 @@ impl sp_messenger::DomainRegistration for DomainRegistration { } } -impl HoldIdentifier for MockHoldIdentifer { - fn messenger_channel(dst_chain_id: ChainId, channel_id: ChannelId) -> Self { - MockHoldIdentifer::Messenger(MessengerHoldIdentifier::Channel((dst_chain_id, channel_id))) +impl pallet_messenger::HoldIdentifier for MockHoldIdentifer { + fn messenger_channel() -> Self { + MockHoldIdentifer::Messenger(HoldIdentifier::MessengerChannel) } } diff --git a/domains/primitives/auto-id/Cargo.toml b/domains/primitives/auto-id/Cargo.toml index 37de1c1f50..3d82507f60 100644 --- a/domains/primitives/auto-id/Cargo.toml +++ b/domains/primitives/auto-id/Cargo.toml @@ -16,9 +16,9 @@ include = [ [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-externalities = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime-interface = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-externalities = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime-interface = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-runtime-primitives = { version = "0.1.0", path = "../../../crates/subspace-runtime-primitives", default-features = false } x509-parser = { version = "0.16.0", features = ["verify"], optional = true } diff --git a/domains/primitives/block-fees/Cargo.toml b/domains/primitives/block-fees/Cargo.toml index ae551645fc..d800d5bfb8 100644 --- a/domains/primitives/block-fees/Cargo.toml +++ b/domains/primitives/block-fees/Cargo.toml @@ -13,11 +13,11 @@ include = [ ] [dependencies] -async-trait = { version = "0.1.81", optional = true } +async-trait = { version = "0.1.83", optional = true } codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } domain-runtime-primitives = { version = "0.1.0", default-features = false, path = "../runtime" } -sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/domains/primitives/digests/Cargo.toml b/domains/primitives/digests/Cargo.toml index 3d3b8ebe56..587e8cc2ba 100644 --- a/domains/primitives/digests/Cargo.toml +++ b/domains/primitives/digests/Cargo.toml @@ -15,7 +15,7 @@ include = [ [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/domains/primitives/domain-sudo/Cargo.toml b/domains/primitives/domain-sudo/Cargo.toml index 4d9b7f1c89..c584746fac 100644 --- a/domains/primitives/domain-sudo/Cargo.toml +++ b/domains/primitives/domain-sudo/Cargo.toml @@ -14,10 +14,10 @@ include = [ ] [dependencies] -async-trait = { version = "0.1.81", optional = true } +async-trait = { version = "0.1.83", optional = true } codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/domains/primitives/executive/Cargo.toml b/domains/primitives/executive/Cargo.toml index 91582373e5..7b3c1f2538 100644 --- a/domains/primitives/executive/Cargo.toml +++ b/domains/primitives/executive/Cargo.toml @@ -14,9 +14,9 @@ include = [ ] [dependencies] -async-trait = { version = "0.1.81", optional = true } +async-trait = { version = "0.1.83", optional = true } codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/domains/primitives/messenger-host-functions/Cargo.toml b/domains/primitives/messenger-host-functions/Cargo.toml index 4cdf1556a1..1e2322a621 100644 --- a/domains/primitives/messenger-host-functions/Cargo.toml +++ b/domains/primitives/messenger-host-functions/Cargo.toml @@ -17,15 +17,15 @@ include = [ codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } domain-block-preprocessor = { version = "0.1.0", default-features = false, path = "../../../domains/client/block-preprocessor", optional = true } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false, optional = true } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false, optional = true } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", default-features = false, path = "../../../crates/sp-domains" } -sp-externalities = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-externalities = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", default-features = false, path = "../../primitives/messenger" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime-interface = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime-interface = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/domains/primitives/messenger/Cargo.toml b/domains/primitives/messenger/Cargo.toml index 841e6d0911..d154fe8cf2 100644 --- a/domains/primitives/messenger/Cargo.toml +++ b/domains/primitives/messenger/Cargo.toml @@ -14,20 +14,20 @@ include = [ ] [dependencies] -async-trait = { version = "0.1.81", optional = true } +async-trait = { version = "0.1.83", optional = true } codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } hash-db = { version = "0.16.0", default-features = false } log = { version = "0.4.22", default-features = false } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -serde = { version = "1.0.206", default-features = false, features = ["alloc", "derive"] } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +serde = { version = "1.0.110", default-features = false, features = ["alloc", "derive"] } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", default-features = false, path = "../../../crates/sp-domains" } -sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-trie = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-trie = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { version = "0.1.0", default-features = false, path = "../../../crates/sp-subspace-mmr" } [features] diff --git a/domains/primitives/messenger/src/lib.rs b/domains/primitives/messenger/src/lib.rs index e37fd9af15..8f26eab00b 100644 --- a/domains/primitives/messenger/src/lib.rs +++ b/domains/primitives/messenger/src/lib.rs @@ -161,7 +161,6 @@ impl sp_inherents::InherentDataProvider for InherentDataProvider { sp_api::decl_runtime_apis! { /// Api useful for relayers to fetch messages and submit transactions. - #[api_version(2)] pub trait RelayerApi where BlockNumber: Encode + Decode, @@ -196,7 +195,6 @@ sp_api::decl_runtime_apis! { } /// Api to provide XDM extraction from Runtime Calls. - #[api_version(4)] pub trait MessengerApi where CNumber: Encode + Decode, diff --git a/domains/primitives/messenger/src/messages.rs b/domains/primitives/messenger/src/messages.rs index 84f00b475c..e353399ab8 100644 --- a/domains/primitives/messenger/src/messages.rs +++ b/domains/primitives/messenger/src/messages.rs @@ -61,6 +61,8 @@ pub struct Channel { /// Owner of the channel /// Owner maybe None if the channel was initiated on the other chain. pub maybe_owner: Option, + /// The amount of funds put on hold by the owner account for this channel + pub channel_reserve_fee: Balance, } /// Channel open parameters diff --git a/domains/primitives/runtime/Cargo.toml b/domains/primitives/runtime/Cargo.toml index 2f715ae15f..f13523b654 100644 --- a/domains/primitives/runtime/Cargo.toml +++ b/domains/primitives/runtime/Cargo.toml @@ -12,20 +12,18 @@ description = "Common primitives of subspace domain runtime" targets = ["x86_64-unknown-linux-gnu"] [dependencies] -# TODO: This dependency is only included because of https://github.com/polkadot-evm/frontier/pull/1426/files#r1648652020 -fixed-hash = { version = "0.8.0", default-features = false, features = ["rustc-hex"] } -fp-account = { version = "1.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +fp-account = { version = "1.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } parity-scale-codec = { version = "3.6.12", default-features = false, features = ["derive"] } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -serde = { version = "1.0.206", default-features = false, features = ["alloc", "derive"] } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +serde = { version = "1.0.110", default-features = false, features = ["alloc", "derive"] } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", path = "../../../crates/subspace-core-primitives", default-features = false } subspace-runtime-primitives = { version = "0.1.0", path = "../../../crates/subspace-runtime-primitives", default-features = false } -sp-weights = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-weights = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] default = ["std"] diff --git a/domains/primitives/runtime/src/lib.rs b/domains/primitives/runtime/src/lib.rs index 02cb53e935..213e8defd5 100644 --- a/domains/primitives/runtime/src/lib.rs +++ b/domains/primitives/runtime/src/lib.rs @@ -37,6 +37,7 @@ use sp_runtime::transaction_validity::TransactionValidityError; use sp_runtime::{MultiAddress, MultiSignature, Perbill}; use sp_weights::constants::WEIGHT_REF_TIME_PER_SECOND; use sp_weights::Weight; +pub use subspace_runtime_primitives::HoldIdentifier; use subspace_runtime_primitives::{MAX_BLOCK_LENGTH, SHANNON, SLOT_PROBABILITY}; /// Alias to 512-bit hash when used in the context of a transaction signature on the chain. @@ -249,10 +250,12 @@ pub struct DecodeExtrinsicError(pub String); pub const CHECK_EXTRINSICS_AND_DO_PRE_DISPATCH_METHOD_NAME: &str = "DomainCoreApi_check_extrinsics_and_do_pre_dispatch"; -/// Opaque types. These are used by the CLI to instantiate machinery that don't need to know -/// the specifics of the runtime. They can then be made to be agnostic over specific formats -/// of data like extrinsics, allowing for them to continue syncing the network through upgrades -/// to even the core data structures. +/// Opaque types. +/// +/// These are used by the CLI to instantiate machinery that don't need to know the specifics of the +/// runtime. They can then be made to be agnostic over specific formats of data like extrinsics, +/// allowing for them to continue syncing the network through upgrades to even the core data +/// structures. pub mod opaque { use crate::BlockNumber; #[cfg(not(feature = "std"))] diff --git a/domains/runtime/auto-id/Cargo.toml b/domains/runtime/auto-id/Cargo.toml index 6ef1a2a396..110eb76d58 100644 --- a/domains/runtime/auto-id/Cargo.toml +++ b/domains/runtime/auto-id/Cargo.toml @@ -20,41 +20,41 @@ targets = ["x86_64-unknown-linux-gnu"] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } domain-pallet-executive = { version = "0.1.0", path = "../../pallets/executive", default-features = false } domain-runtime-primitives = { version = "0.1.0", path = "../../primitives/runtime", default-features = false } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system-benchmarking = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system-benchmarking = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-auto-id = { version = "0.1.0", path = "../../pallets/auto-id", default-features = false } -pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-block-fees = { version = "0.1.0", path = "../../pallets/block-fees", default-features = false } pallet-domain-id = { version = "0.1.0", path = "../../pallets/domain-id", default-features = false } pallet-domain-sudo = { version = "0.1.0", path = "../../pallets/domain-sudo", default-features = false } pallet-messenger = { version = "0.1.0", path = "../../pallets/messenger", default-features = false } -pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-transporter = { version = "0.1.0", path = "../../pallets/transporter", default-features = false } -pallet-utility = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-utility = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../../../crates/sp-domains", default-features = false } sp-domain-sudo = { version = "0.1.0", path = "../../primitives/domain-sudo", default-features = false } -sp-genesis-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-genesis-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", default-features = false, path = "../../primitives/messenger" } sp-messenger-host-functions = { version = "0.1.0", default-features = false, path = "../../primitives/messenger-host-functions" } -sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-storage = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } +sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-storage = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } sp-subspace-mmr = { version = "0.1.0", default-features = false, path = "../../../crates/sp-subspace-mmr" } -sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", path = "../../../crates/subspace-core-primitives", default-features = false } subspace-runtime-primitives = { version = "0.1.0", path = "../../../crates/subspace-runtime-primitives", default-features = false } @@ -62,7 +62,7 @@ subspace-runtime-primitives = { version = "0.1.0", path = "../../../crates/subsp subspace-runtime-primitives = { version = "0.1.0", features = ["testing"], path = "../../../crates/subspace-runtime-primitives" } [build-dependencies] -substrate-wasm-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } +substrate-wasm-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } [features] default = [ diff --git a/domains/runtime/auto-id/src/lib.rs b/domains/runtime/auto-id/src/lib.rs index 8e2d4ed0ff..6286db4122 100644 --- a/domains/runtime/auto-id/src/lib.rs +++ b/domains/runtime/auto-id/src/lib.rs @@ -7,20 +7,21 @@ #[cfg(feature = "std")] include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); -#[cfg(not(feature = "std"))] extern crate alloc; +use alloc::borrow::Cow; #[cfg(not(feature = "std"))] use alloc::format; use codec::{Decode, Encode, MaxEncodedLen}; +use core::mem; use domain_runtime_primitives::opaque::Header; pub use domain_runtime_primitives::{ block_weights, maximum_block_length, opaque, Balance, BlockNumber, Hash, Nonce, EXISTENTIAL_DEPOSIT, }; use domain_runtime_primitives::{ - AccountId, Address, CheckExtrinsicsValidityError, DecodeExtrinsicError, Signature, - ERR_BALANCE_OVERFLOW, SLOT_DURATION, + AccountId, Address, CheckExtrinsicsValidityError, DecodeExtrinsicError, HoldIdentifier, + Signature, ERR_BALANCE_OVERFLOW, SLOT_DURATION, }; use frame_support::dispatch::{DispatchClass, DispatchInfo, GetDispatchInfo}; use frame_support::genesis_builder_helper::{build_state, get_preset}; @@ -39,7 +40,7 @@ use pallet_transporter::EndpointHandler; use sp_api::impl_runtime_apis; use sp_core::crypto::KeyTypeId; use sp_core::{Get, OpaqueMetadata}; -use sp_domains::{ChannelId, DomainAllowlistUpdates, DomainId, MessengerHoldIdentifier, Transfers}; +use sp_domains::{ChannelId, DomainAllowlistUpdates, DomainId, Transfers}; use sp_messenger::endpoint::{Endpoint, EndpointHandler as EndpointHandlerT, EndpointId}; use sp_messenger::messages::{ BlockMessagesWithStorageKey, ChainId, CrossDomainMessage, FeeModel, MessageId, MessageKey, @@ -54,10 +55,7 @@ use sp_runtime::traits::{ use sp_runtime::transaction_validity::{ InvalidTransaction, TransactionSource, TransactionValidity, TransactionValidityError, }; -use sp_runtime::{ - create_runtime_str, generic, impl_opaque_keys, ApplyExtrinsicResult, Digest, - ExtrinsicInclusionMode, -}; +use sp_runtime::{generic, impl_opaque_keys, ApplyExtrinsicResult, Digest, ExtrinsicInclusionMode}; pub use sp_runtime::{MultiAddress, Perbill, Permill}; use sp_std::collections::btree_set::BTreeSet; use sp_std::marker::PhantomData; @@ -117,15 +115,14 @@ impl_opaque_keys! { #[sp_version::runtime_version] pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("subspace-auto-id-domain"), - impl_name: create_runtime_str!("subspace-auto-id-domain"), + spec_name: Cow::Borrowed("subspace-auto-id-domain"), + impl_name: Cow::Borrowed("subspace-auto-id-domain"), authoring_version: 0, spec_version: 1, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 0, - state_version: 0, - extrinsic_state_version: 1, + system_version: 2, }; parameter_types! { @@ -227,7 +224,7 @@ impl pallet_balances::Config for Runtime { type ReserveIdentifier = [u8; 8]; type FreezeIdentifier = (); type MaxFreezes = (); - type RuntimeHoldReason = HoldIdentifier; + type RuntimeHoldReason = HoldIdentifierWrapper; } parameter_types! { @@ -374,24 +371,15 @@ impl sp_messenger::StorageKeys for StorageKeys { #[derive( PartialEq, Eq, Clone, Encode, Decode, TypeInfo, MaxEncodedLen, Ord, PartialOrd, Copy, Debug, )] -pub enum HoldIdentifier { - Messenger(MessengerHoldIdentifier), -} +pub struct HoldIdentifierWrapper(HoldIdentifier); -impl VariantCount for HoldIdentifier { - // TODO: revist this value, it is used as the max number of hold an account can - // create. Currently, opening an XDM channel will create 1 hold, so this value - // also used as the limit of how many channel an account can open. - // - // TODO: HACK this is not the actual variant count but it is required see - // https://github.com/autonomys/subspace/issues/2674 for more details. It - // will be resolved as https://github.com/paritytech/polkadot-sdk/issues/4033. - const VARIANT_COUNT: u32 = 100; +impl VariantCount for HoldIdentifierWrapper { + const VARIANT_COUNT: u32 = mem::variant_count::() as u32; } -impl pallet_messenger::HoldIdentifier for HoldIdentifier { - fn messenger_channel(dst_chain_id: ChainId, channel_id: ChannelId) -> Self { - Self::Messenger(MessengerHoldIdentifier::Channel((dst_chain_id, channel_id))) +impl pallet_messenger::HoldIdentifier for HoldIdentifierWrapper { + fn messenger_channel() -> Self { + Self(HoldIdentifier::MessengerChannel) } } @@ -422,7 +410,7 @@ impl pallet_messenger::Config for Runtime { type MmrProofVerifier = MmrProofVerifier; type StorageKeys = StorageKeys; type DomainOwner = (); - type HoldIdentifier = HoldIdentifier; + type HoldIdentifier = HoldIdentifierWrapper; type ChannelReserveFee = ChannelReserveFee; type ChannelInitReservePortion = ChannelInitReservePortion; type DomainRegistration = (); @@ -761,7 +749,7 @@ impl_runtime_apis! { account_result.ok().map(|account_id| account_id.encode()) }) { // Check if the signer Id hash is within the tx range - let signer_id_hash = U256::from_be_bytes(blake3_hash(&signer.encode())); + let signer_id_hash = U256::from_be_bytes(*blake3_hash(&signer.encode())); sp_domains::signer_in_tx_range(bundle_vrf_hash, &signer_id_hash, tx_range) } else { // Unsigned transactions are always in the range. @@ -995,7 +983,7 @@ impl_runtime_apis! { fn dispatch_benchmark( config: frame_benchmarking::BenchmarkConfig - ) -> Result, sp_runtime::RuntimeString> { + ) -> Result, alloc::string::String> { use frame_benchmarking::{baseline, Benchmarking, BenchmarkBatch}; use sp_storage::TrackedStorageKey; use frame_system_benchmarking::Pallet as SystemBench; diff --git a/domains/runtime/evm/Cargo.toml b/domains/runtime/evm/Cargo.toml index 3b6f38d832..50f5ad7eb0 100644 --- a/domains/runtime/evm/Cargo.toml +++ b/domains/runtime/evm/Cargo.toml @@ -20,51 +20,51 @@ targets = ["x86_64-unknown-linux-gnu"] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } domain-pallet-executive = { version = "0.1.0", path = "../../pallets/executive", default-features = false } domain-runtime-primitives = { version = "0.1.0", path = "../../primitives/runtime", default-features = false } -fp-account = { version = "1.0.0-dev", default-features = false, features = ["serde"], git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -fp-rpc = { version = "3.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -fp-self-contained = { version = "1.0.0-dev", default-features = false, features = ["serde"], git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system-benchmarking = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-base-fee = { version = "1.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } +fp-account = { version = "1.0.0-dev", default-features = false, features = ["serde"], git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +fp-rpc = { version = "3.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +fp-self-contained = { version = "1.0.0-dev", default-features = false, features = ["serde"], git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system-benchmarking = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-base-fee = { version = "1.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } pallet-block-fees = { version = "0.1.0", path = "../../pallets/block-fees", default-features = false } pallet-domain-id = { version = "0.1.0", path = "../../pallets/domain-id", default-features = false } pallet-domain-sudo = { version = "0.1.0", path = "../../pallets/domain-sudo", default-features = false } -pallet-ethereum = { default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -pallet-evm = { version = "6.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -pallet-evm-chain-id = { version = "1.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } +pallet-ethereum = { default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +pallet-evm = { version = "6.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +pallet-evm-chain-id = { version = "1.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } pallet-evm-nonce-tracker = { version = "0.1.0", path = "../../pallets/evm_nonce_tracker", default-features = false } -pallet-evm-precompile-modexp = { version = "2.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -pallet-evm-precompile-sha3fips = { version = "2.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -pallet-evm-precompile-simple = { version = "2.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } +pallet-evm-precompile-modexp = { version = "2.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +pallet-evm-precompile-sha3fips = { version = "2.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +pallet-evm-precompile-simple = { version = "2.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } pallet-messenger = { version = "0.1.0", path = "../../pallets/messenger", default-features = false } -pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-transporter = { version = "0.1.0", path = "../../pallets/transporter", default-features = false } -pallet-utility = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-utility = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../../../crates/sp-domains", default-features = false } sp-domain-sudo = { version = "0.1.0", path = "../../primitives/domain-sudo", default-features = false } -sp-genesis-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-genesis-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", default-features = false, path = "../../primitives/messenger" } sp-messenger-host-functions = { version = "0.1.0", default-features = false, path = "../../primitives/messenger-host-functions" } -sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-storage = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } +sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-storage = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } sp-subspace-mmr = { version = "0.1.0", default-features = false, path = "../../../crates/sp-subspace-mmr" } -sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", path = "../../../crates/subspace-core-primitives", default-features = false } subspace-runtime-primitives = { version = "0.1.0", path = "../../../crates/subspace-runtime-primitives", default-features = false } @@ -72,7 +72,7 @@ subspace-runtime-primitives = { version = "0.1.0", path = "../../../crates/subsp subspace-runtime-primitives = { version = "0.1.0", features = ["testing"], path = "../../../crates/subspace-runtime-primitives" } [build-dependencies] -substrate-wasm-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } +substrate-wasm-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } [features] default = [ diff --git a/domains/runtime/evm/src/lib.rs b/domains/runtime/evm/src/lib.rs index ea709c4b96..46ac13d259 100644 --- a/domains/runtime/evm/src/lib.rs +++ b/domains/runtime/evm/src/lib.rs @@ -9,20 +9,21 @@ mod precompiles; #[cfg(feature = "std")] include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); -#[cfg(not(feature = "std"))] extern crate alloc; +use alloc::borrow::Cow; #[cfg(not(feature = "std"))] use alloc::format; use codec::{Decode, Encode, MaxEncodedLen}; +use core::mem; use domain_runtime_primitives::opaque::Header; pub use domain_runtime_primitives::{ block_weights, maximum_block_length, maximum_domain_block_weight, opaque, Balance, BlockNumber, Hash, Nonce, EXISTENTIAL_DEPOSIT, }; use domain_runtime_primitives::{ - CheckExtrinsicsValidityError, DecodeExtrinsicError, ERR_BALANCE_OVERFLOW, ERR_NONCE_OVERFLOW, - SLOT_DURATION, + CheckExtrinsicsValidityError, DecodeExtrinsicError, HoldIdentifier, ERR_BALANCE_OVERFLOW, + ERR_NONCE_OVERFLOW, SLOT_DURATION, }; use fp_account::EthereumSignature; use fp_self_contained::{CheckedSignature, SelfContainedCall}; @@ -52,7 +53,7 @@ use pallet_transporter::EndpointHandler; use sp_api::impl_runtime_apis; use sp_core::crypto::KeyTypeId; use sp_core::{Get, OpaqueMetadata, H160, H256, U256}; -use sp_domains::{ChannelId, DomainAllowlistUpdates, DomainId, MessengerHoldIdentifier, Transfers}; +use sp_domains::{ChannelId, DomainAllowlistUpdates, DomainId, Transfers}; use sp_messenger::endpoint::{Endpoint, EndpointHandler as EndpointHandlerT, EndpointId}; use sp_messenger::messages::{ BlockMessagesWithStorageKey, ChainId, CrossDomainMessage, FeeModel, MessageId, MessageKey, @@ -69,7 +70,7 @@ use sp_runtime::transaction_validity::{ InvalidTransaction, TransactionSource, TransactionValidity, TransactionValidityError, }; use sp_runtime::{ - create_runtime_str, generic, impl_opaque_keys, ApplyExtrinsicResult, ConsensusEngineId, Digest, + generic, impl_opaque_keys, ApplyExtrinsicResult, ConsensusEngineId, Digest, ExtrinsicInclusionMode, }; pub use sp_runtime::{MultiAddress, Perbill, Permill}; @@ -244,15 +245,14 @@ impl_opaque_keys! { #[sp_version::runtime_version] pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("subspace-evm-domain"), - impl_name: create_runtime_str!("subspace-evm-domain"), + spec_name: Cow::Borrowed("subspace-evm-domain"), + impl_name: Cow::Borrowed("subspace-evm-domain"), authoring_version: 0, spec_version: 2, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 0, - state_version: 0, - extrinsic_state_version: 1, + system_version: 2, }; parameter_types! { @@ -359,7 +359,7 @@ impl pallet_balances::Config for Runtime { type ReserveIdentifier = [u8; 8]; type FreezeIdentifier = (); type MaxFreezes = (); - type RuntimeHoldReason = HoldIdentifier; + type RuntimeHoldReason = HoldIdentifierWrapper; } parameter_types! { @@ -503,24 +503,15 @@ impl sp_messenger::StorageKeys for StorageKeys { #[derive( PartialEq, Eq, Clone, Encode, Decode, TypeInfo, MaxEncodedLen, Ord, PartialOrd, Copy, Debug, )] -pub enum HoldIdentifier { - Messenger(MessengerHoldIdentifier), -} +pub struct HoldIdentifierWrapper(HoldIdentifier); -impl VariantCount for HoldIdentifier { - // TODO: revist this value, it is used as the max number of hold an account can - // create. Currently, opening an XDM channel will create 1 hold, so this value - // also used as the limit of how many channel an account can open. - // - // TODO: HACK this is not the actual variant count but it is required see - // https://github.com/autonomys/subspace/issues/2674 for more details. It - // will be resolved as https://github.com/paritytech/polkadot-sdk/issues/4033. - const VARIANT_COUNT: u32 = 100; +impl VariantCount for HoldIdentifierWrapper { + const VARIANT_COUNT: u32 = mem::variant_count::() as u32; } -impl pallet_messenger::HoldIdentifier for HoldIdentifier { - fn messenger_channel(dst_chain_id: ChainId, channel_id: ChannelId) -> Self { - Self::Messenger(MessengerHoldIdentifier::Channel((dst_chain_id, channel_id))) +impl pallet_messenger::HoldIdentifier for HoldIdentifierWrapper { + fn messenger_channel() -> Self { + Self(HoldIdentifier::MessengerChannel) } } @@ -551,7 +542,7 @@ impl pallet_messenger::Config for Runtime { type MmrProofVerifier = MmrProofVerifier; type StorageKeys = StorageKeys; type DomainOwner = (); - type HoldIdentifier = HoldIdentifier; + type HoldIdentifier = HoldIdentifierWrapper; type ChannelReserveFee = ChannelReserveFee; type ChannelInitReservePortion = ChannelInitReservePortion; type DomainRegistration = (); @@ -941,33 +932,31 @@ fn pre_dispatch_evm_transaction( { let _ = transaction_validity?; - if let Call::transact { transaction } = call { - frame_system::CheckWeight::::do_pre_dispatch(dispatch_info, len)?; - - let transaction_data: TransactionData = (&transaction).into(); - let transaction_nonce = transaction_data.nonce; - // If the current account nonce is greater than the tracked nonce, then - // pick the highest nonce - let account_nonce = { - let tracked_nonce = - EVMNoncetracker::account_nonce(AccountId::from(account_id)) - .unwrap_or(U256::zero()); - let account_nonce = EVM::account_basic(&account_id).0.nonce; - max(tracked_nonce, account_nonce) - }; - - match transaction_nonce.cmp(&account_nonce) { - Ordering::Less => return Err(InvalidTransaction::Stale.into()), - Ordering::Greater => return Err(InvalidTransaction::Future.into()), - Ordering::Equal => {} - } + let Call::transact { transaction } = call; + frame_system::CheckWeight::::do_pre_dispatch(dispatch_info, len)?; + + let transaction_data: TransactionData = (&transaction).into(); + let transaction_nonce = transaction_data.nonce; + // If the current account nonce is greater than the tracked nonce, then + // pick the highest nonce + let account_nonce = { + let tracked_nonce = EVMNoncetracker::account_nonce(AccountId::from(account_id)) + .unwrap_or(U256::zero()); + let account_nonce = EVM::account_basic(&account_id).0.nonce; + max(tracked_nonce, account_nonce) + }; + + match transaction_nonce.cmp(&account_nonce) { + Ordering::Less => return Err(InvalidTransaction::Stale.into()), + Ordering::Greater => return Err(InvalidTransaction::Future.into()), + Ordering::Equal => {} + } - let next_nonce = account_nonce - .checked_add(U256::one()) - .ok_or(InvalidTransaction::Custom(ERR_NONCE_OVERFLOW))?; + let next_nonce = account_nonce + .checked_add(U256::one()) + .ok_or(InvalidTransaction::Custom(ERR_NONCE_OVERFLOW))?; - EVMNoncetracker::set_account_nonce(AccountId::from(account_id), next_nonce); - } + EVMNoncetracker::set_account_nonce(AccountId::from(account_id), next_nonce); } Ok(()) @@ -1158,7 +1147,7 @@ impl_runtime_apis! { account_result.ok().map(|account_id| account_id.encode()) }) { // Check if the signer Id hash is within the tx range - let signer_id_hash = U256::from_be_bytes(blake3_hash(&signer.encode())); + let signer_id_hash = U256::from_be_bytes(*blake3_hash(&signer.encode())); sp_domains::signer_in_tx_range(bundle_vrf_hash, &signer_id_hash, tx_range) } else { // Unsigned transactions are always in the range. @@ -1588,7 +1577,7 @@ impl_runtime_apis! { fn dispatch_benchmark( config: frame_benchmarking::BenchmarkConfig - ) -> Result, sp_runtime::RuntimeString> { + ) -> Result, alloc::string::String> { use frame_benchmarking::{baseline, Benchmarking, BenchmarkBatch}; use sp_storage::TrackedStorageKey; use frame_system_benchmarking::Pallet as SystemBench; diff --git a/domains/service/Cargo.toml b/domains/service/Cargo.toml index 1d11655110..536a1e6e9f 100644 --- a/domains/service/Cargo.toml +++ b/domains/service/Cargo.toml @@ -13,64 +13,63 @@ build = "build.rs" targets = ["x86_64-unknown-linux-gnu"] [dependencies] -async-trait = "0.1.81" +async-trait = "0.1.83" cross-domain-message-gossip = { version = "0.1.0", path = "../client/cross-domain-message-gossip" } domain-client-block-preprocessor = { package = "domain-block-preprocessor", version = "0.1.0", path = "../client/block-preprocessor" } domain-client-consensus-relay-chain = { version = "0.1.0", path = "../client/consensus-relay-chain" } domain-client-message-relayer = { version = "0.1.0", path = "../client/relayer" } domain-client-operator = { version = "0.1.0", path = "../client/domain-operator" } domain-runtime-primitives = { version = "0.1.0", path = "../primitives/runtime" } -frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } -futures = "0.3.29" -jsonrpsee = { version = "0.23.2", features = ["server"] } +frame-benchmarking = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } +futures = "0.3.30" +jsonrpsee = { version = "0.24.5", features = ["server"] } log = "0.4.22" -pallet-transaction-payment-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-transaction-payment-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } parity-scale-codec = "3.6.12" -sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-chain-spec = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-io = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-chain-spec = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sc-domains = { version = "0.1.0", path = "../../crates/sc-domains" } -sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-informant = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-common = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-transactions = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-rpc-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-rpc-spec-v2 = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-telemetry = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -serde = { version = "1.0.206", features = ["derive"] } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-informant = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-common = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-transactions = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-rpc-server = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-telemetry = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +serde = { version = "1.0.110", features = ["derive"] } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus-slots = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../../crates/sp-domains" } sp-domains-fraud-proof = { version = "0.1.0", path = "../../crates/sp-domains-fraud-proof" } sp-messenger = { version = "0.1.0", path = "../../domains/primitives/messenger" } sp-messenger-host-functions = { version = "0.1.0", path = "../../domains/primitives/messenger-host-functions" } -sp-mmr-primitives = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-offchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-session = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-mmr-primitives = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-offchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-session = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { version = "0.1.0", path = "../../crates/sp-subspace-mmr" } -sp-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", path = "../../crates/subspace-core-primitives" } subspace-runtime-primitives = { version = "0.1.0", path = "../../crates/subspace-runtime-primitives" } -substrate-frame-rpc-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -substrate-prometheus-endpoint = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -tokio = "1.39.2" +substrate-frame-rpc-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +substrate-prometheus-endpoint = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +tokio = "1.40.0" tracing = "0.1.40" [build-dependencies] -substrate-build-script-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +substrate-build-script-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [features] runtime-benchmarks = [ diff --git a/domains/service/src/config.rs b/domains/service/src/config.rs index 6f250d4443..81b088c83d 100644 --- a/domains/service/src/config.rs +++ b/domains/service/src/config.rs @@ -3,8 +3,10 @@ use sc_network::config::{ MultiaddrWithPeerId, NetworkBackendType, NetworkConfiguration, NodeKeyConfig, SetConfig, SyncMode, TransportConfig, DEFAULT_KADEMLIA_REPLICATION_FACTOR, }; +use sc_rpc_server::RpcEndpoint; use sc_service::config::{ - IpNetwork, KeystoreConfig, OffchainWorkerConfig, PrometheusConfig, RpcBatchRequestConfig, + ExecutorConfiguration, IpNetwork, KeystoreConfig, OffchainWorkerConfig, PrometheusConfig, + RpcBatchRequestConfig, RpcConfiguration, }; use sc_service::{ BasePath, BlocksPruning, Configuration, DatabaseSource, PruningMode, RpcMethods, @@ -108,8 +110,6 @@ pub struct SubstrateConfiguration { pub force_authoring: bool, /// Chain specification pub chain_spec: Box, - /// Configuration of the output format that the informant uses. - pub informant_output_format: sc_informant::OutputFormat, } impl From for Configuration { @@ -118,6 +118,41 @@ impl From for Configuration { + configuration.network.default_peers_set.out_peers; let client_version = format!("{}/{}", configuration.impl_name, configuration.impl_version); + let rpc_batch_config = if configuration.rpc_options.disable_batch_requests { + RpcBatchRequestConfig::Disabled + } else if let Some(l) = configuration.rpc_options.max_batch_request_len { + RpcBatchRequestConfig::Limit(l) + } else { + RpcBatchRequestConfig::Unlimited + }; + let rpc_addr = configuration.rpc_options.listen_on.map(|listen_addr| { + vec![RpcEndpoint { + batch_config: rpc_batch_config, + max_connections: configuration.rpc_options.max_connections, + listen_addr, + rpc_methods: configuration.rpc_options.methods, + rate_limit: configuration.rpc_options.rate_limit, + rate_limit_trust_proxy_headers: configuration + .rpc_options + .rate_limit_trust_proxy_headers, + rate_limit_whitelisted_ips: configuration + .rpc_options + .rate_limit_whitelisted_ips + .clone(), + max_payload_in_mb: RPC_DEFAULT_MAX_REQUEST_SIZE_MB, + max_payload_out_mb: RPC_DEFAULT_MAX_RESPONSE_SIZE_MB, + max_subscriptions_per_connection: configuration + .rpc_options + .max_subscriptions_per_connection, + max_buffer_capacity_per_connection: configuration + .rpc_options + .message_buffer_capacity_per_connection, + cors: configuration.rpc_options.cors.clone(), + retry_random_port: true, + is_optional: false, + }] + }); + Self { impl_name: configuration.impl_name, impl_version: configuration.impl_version, @@ -173,33 +208,36 @@ impl From for Configuration { trie_cache_maximum_size: Some(64 * 1024 * 1024), state_pruning: configuration.state_pruning, blocks_pruning: configuration.blocks_pruning, - wasm_method: Default::default(), + executor: ExecutorConfiguration { + wasm_method: Default::default(), + // Substrate's default + max_runtime_instances: 8, + default_heap_pages: None, + // Substrate's default + runtime_cache_size: 2, + }, wasm_runtime_overrides: None, - rpc_addr: configuration.rpc_options.listen_on, - rpc_methods: configuration.rpc_options.methods, - rpc_max_connections: configuration.rpc_options.max_connections, - rpc_cors: configuration.rpc_options.cors, - rpc_max_request_size: RPC_DEFAULT_MAX_REQUEST_SIZE_MB, - rpc_max_response_size: RPC_DEFAULT_MAX_RESPONSE_SIZE_MB, - rpc_id_provider: None, - rpc_max_subs_per_conn: configuration.rpc_options.max_subscriptions_per_connection, - // Doesn't matter since we have specified address above - rpc_port: 0, - rpc_message_buffer_capacity: configuration - .rpc_options - .message_buffer_capacity_per_connection, - rpc_batch_config: if configuration.rpc_options.disable_batch_requests { - RpcBatchRequestConfig::Disabled - } else if let Some(l) = configuration.rpc_options.max_batch_request_len { - RpcBatchRequestConfig::Limit(l) - } else { - RpcBatchRequestConfig::Unlimited + rpc: RpcConfiguration { + addr: rpc_addr, + methods: configuration.rpc_options.methods, + max_connections: configuration.rpc_options.max_connections, + cors: configuration.rpc_options.cors, + max_request_size: RPC_DEFAULT_MAX_REQUEST_SIZE_MB, + max_response_size: RPC_DEFAULT_MAX_RESPONSE_SIZE_MB, + id_provider: None, + max_subs_per_conn: configuration.rpc_options.max_subscriptions_per_connection, + // Doesn't matter since we have specified address above + port: 0, + message_buffer_capacity: configuration + .rpc_options + .message_buffer_capacity_per_connection, + batch_config: rpc_batch_config, + rate_limit: configuration.rpc_options.rate_limit, + rate_limit_whitelisted_ips: configuration.rpc_options.rate_limit_whitelisted_ips, + rate_limit_trust_proxy_headers: configuration + .rpc_options + .rate_limit_trust_proxy_headers, }, - rpc_rate_limit: configuration.rpc_options.rate_limit, - rpc_rate_limit_whitelisted_ips: configuration.rpc_options.rate_limit_whitelisted_ips, - rpc_rate_limit_trust_proxy_headers: configuration - .rpc_options - .rate_limit_trust_proxy_headers, prometheus_config: configuration .prometheus_listen_on .map(|prometheus_listen_on| { @@ -209,7 +247,6 @@ impl From for Configuration { ) }), telemetry_endpoints: configuration.telemetry_endpoints, - default_heap_pages: None, // Offchain worker is not used in Subspace offchain_worker: OffchainWorkerConfig { enabled: false, @@ -222,8 +259,6 @@ impl From for Configuration { tracing_receiver: Default::default(), chain_spec: configuration.chain_spec, // Substrate's default - max_runtime_instances: 8, - // Substrate's default announce_block: true, role: if configuration.operator { sc_service::Role::Authority @@ -231,9 +266,6 @@ impl From for Configuration { sc_service::Role::Full }, base_path: BasePath::new(configuration.base_path), - informant_output_format: configuration.informant_output_format, - // Substrate's default - runtime_cache_size: 2, } } } diff --git a/domains/service/src/domain.rs b/domains/service/src/domain.rs index 55c521dc66..b9420fd59b 100644 --- a/domains/service/src/domain.rs +++ b/domains/service/src/domain.rs @@ -13,10 +13,10 @@ use sc_client_api::{ AuxStore, BlockBackend, BlockImportNotification, BlockchainEvents, ExecutorProvider, ProofProvider, UsageProvider, }; -use sc_consensus::SharedBlockImport; +use sc_consensus::{BasicQueue, BoxBlockImport}; use sc_domains::{ExtensionsFactory, RuntimeExecutor}; -use sc_network::{NetworkPeers, NotificationMetrics}; -use sc_rpc_api::DenyUnsafe; +use sc_network::service::traits::NetworkService; +use sc_network::{NetworkPeers, NetworkWorker, NotificationMetrics}; use sc_service::{ BuildNetworkParams, Configuration as ServiceConfiguration, NetworkStarter, PartialComponents, SpawnTasksParams, TFullBackend, TaskManager, @@ -47,7 +47,7 @@ use std::fmt::{Debug, Display}; use std::marker::PhantomData; use std::str::FromStr; use std::sync::Arc; -use subspace_core_primitives::PotOutput; +use subspace_core_primitives::pot::PotOutput; use subspace_runtime_primitives::Nonce; use substrate_frame_rpc_system::AccountNonceApi; @@ -99,7 +99,7 @@ where /// Code executor. pub code_executor: Arc, /// Network service. - pub network_service: Arc::Hash>>, + pub network_service: Arc, /// Sync service. pub sync_service: Arc>, /// RPCHandlers to make RPC queries. @@ -135,7 +135,7 @@ fn new_partial( Option, Option, Arc, - SharedBlockImport, + BoxBlockImport, ), >, sc_service::Error, @@ -170,7 +170,7 @@ where }) .transpose()?; - let executor = sc_service::new_wasm_executor(config); + let executor = sc_service::new_wasm_executor(&config.executor); let (client, backend, keystore_container, task_manager) = sc_service::new_full_parts( config, @@ -216,25 +216,28 @@ where client.usage_info().chain.finalized_hash, )); - let block_import = SharedBlockImport::new(BlockImportProvider::block_import( - block_import_provider, - client.clone(), - )); - let import_queue = domain_client_consensus_relay_chain::import_queue( - block_import.clone(), + let import_queue = BasicQueue::new( + domain_client_consensus_relay_chain::Verifier::default(), + Box::new(block_import_provider.block_import(client.clone())), + None, &task_manager.spawn_essential_handle(), config.prometheus_registry(), - )?; + ); let params = PartialComponents { backend, - client, + client: client.clone(), import_queue, keystore_container, task_manager, transaction_pool, select_chain: (), - other: (telemetry, telemetry_worker_handle, executor, block_import), + other: ( + telemetry, + telemetry_worker_handle, + executor, + Box::new(block_import_provider.block_import(client)) as Box<_>, + ), }; Ok(params) @@ -366,43 +369,41 @@ where let transaction_pool = params.transaction_pool.clone(); let mut task_manager = params.task_manager; - let net_config = sc_network::config::FullNetworkConfiguration::new(&domain_config.network); + let net_config = sc_network::config::FullNetworkConfiguration::<_, _, NetworkWorker<_, _>>::new( + &domain_config.network, + domain_config + .prometheus_config + .as_ref() + .map(|cfg| cfg.registry.clone()), + ); - let ( - network_service, - system_rpc_tx, - tx_handler_controller, - network_starter, - sync_service, - _block_downloader, - ) = crate::build_network(BuildNetworkParams { - config: &domain_config, - net_config, - client: client.clone(), - transaction_pool: transaction_pool.clone(), - spawn_handle: task_manager.spawn_handle(), - import_queue: params.import_queue, - // TODO: we might want to re-enable this some day. - block_announce_validator_builder: None, - warp_sync_params: None, - block_relay: None, - metrics: NotificationMetrics::new( - domain_config - .prometheus_config - .as_ref() - .map(|cfg| &cfg.registry), - ), - })?; + let (network_service, system_rpc_tx, tx_handler_controller, network_starter, sync_service) = + sc_service::build_network(BuildNetworkParams { + config: &domain_config, + net_config, + client: client.clone(), + transaction_pool: transaction_pool.clone(), + spawn_handle: task_manager.spawn_handle(), + import_queue: params.import_queue, + // TODO: we might want to re-enable this some day. + block_announce_validator_builder: None, + warp_sync_config: None, + block_relay: None, + metrics: NotificationMetrics::new( + domain_config + .prometheus_config + .as_ref() + .map(|cfg| &cfg.registry), + ), + })?; let is_authority = domain_config.role.is_authority(); - domain_config.rpc_id_provider = provider.rpc_id(); + domain_config.rpc.id_provider = provider.rpc_id(); let rpc_builder = { let deps = crate::rpc::FullDeps { client: client.clone(), pool: transaction_pool.clone(), graph: transaction_pool.pool().clone(), - chain_spec: domain_config.chain_spec.cloned_box(), - deny_unsafe: DenyUnsafe::Yes, network: network_service.clone(), sync: sync_service.clone(), is_authority, @@ -424,7 +425,7 @@ where let spawn_essential = task_manager.spawn_essential_handle(); let rpc_deps = provider.deps(deps)?; - Box::new(move |_, subscription_task_executor| { + Box::new(move |subscription_task_executor| { let spawn_essential = spawn_essential.clone(); provider .rpc_builder( @@ -479,7 +480,7 @@ where bundle_sender: Arc::new(bundle_sender), operator_streams, domain_confirmation_depth, - block_import, + block_import: Arc::new(block_import), skip_empty_bundle_production, skip_out_of_order_slot, }, diff --git a/domains/service/src/lib.rs b/domains/service/src/lib.rs index 752f17d8de..4b90ff7324 100644 --- a/domains/service/src/lib.rs +++ b/domains/service/src/lib.rs @@ -6,356 +6,10 @@ pub mod providers; pub mod rpc; pub use self::domain::{new_full, DomainOperator, DomainParams, FullPool, NewFull}; -use futures::channel::oneshot; -use futures::{FutureExt, StreamExt}; -use sc_client_api::{BlockBackend, BlockchainEvents, HeaderBackend, ProofProvider}; -use sc_consensus::ImportQueue; use sc_domains::RuntimeExecutor; -use sc_network::config::Roles; -use sc_network::{NetworkService, NetworkWorker}; -use sc_network_sync::block_relay_protocol::BlockDownloader; -use sc_network_sync::block_request_handler::BlockRequestHandler; -use sc_network_sync::engine::SyncingEngine; -use sc_network_sync::service::network::NetworkServiceProvider; -use sc_network_sync::state_request_handler::StateRequestHandler; -use sc_network_sync::SyncingService; -use sc_service::config::SyncMode; -use sc_service::{ - build_system_rpc_future, BuildNetworkParams, NetworkStarter, TFullClient, - TransactionPoolAdapter, -}; -use sc_transaction_pool_api::MaintainedTransactionPool; -use sc_utils::mpsc::{tracing_unbounded, TracingUnboundedSender}; -use sp_api::ProvideRuntimeApi; -use sp_blockchain::HeaderMetadata; -use sp_consensus::block_validation::{Chain, DefaultBlockAnnounceValidator}; -use sp_runtime::traits::{Block as BlockT, BlockIdTo, Zero}; -use std::sync::Arc; +use sc_service::TFullClient; /// Domain full client. pub type FullClient = TFullClient; pub type FullBackend = sc_service::TFullBackend; - -/// Build the network service, the network status sinks and an RPC sender. -/// -/// Port from `sc_service::build_network` mostly the same with block sync disabled. -// TODO: Struct for returned value -#[allow(clippy::type_complexity)] -pub fn build_network( - params: BuildNetworkParams< - TBl, - NetworkWorker::Hash>, - TExPool, - TImpQu, - TCl, - >, -) -> Result< - ( - Arc::Hash>>, - TracingUnboundedSender>, - sc_network_transactions::TransactionsHandlerController<::Hash>, - NetworkStarter, - Arc>, - Arc>, - ), - sc_service::Error, -> -where - TBl: BlockT, - TCl: ProvideRuntimeApi - + HeaderMetadata - + Chain - + BlockBackend - + BlockIdTo - + ProofProvider - + HeaderBackend - + BlockchainEvents - + 'static, - TExPool: MaintainedTransactionPool::Hash> + 'static, - TImpQu: ImportQueue + 'static, -{ - let BuildNetworkParams { - config, - mut net_config, - client, - transaction_pool, - spawn_handle, - import_queue, - block_announce_validator_builder: _, - warp_sync_params: _, - block_relay, - metrics, - } = params; - - if client.requires_full_sync() { - match config.network.sync_mode { - SyncMode::LightState { .. } => { - return Err("Fast sync doesn't work for archive nodes".into()); - } - SyncMode::Warp => return Err("Warp sync doesn't work for archive nodes".into()), - SyncMode::Full => {} - } - } - - let protocol_id = config.protocol_id(); - let genesis_hash = client - .hash(Zero::zero()) - .ok() - .flatten() - .expect("Genesis block exists; qed"); - - let (chain_sync_network_provider, chain_sync_network_handle) = NetworkServiceProvider::new(); - let (mut block_server, block_downloader, block_request_protocol_config) = match block_relay { - Some(params) => ( - params.server, - params.downloader, - params.request_response_config, - ), - None => { - // Custom protocol was not specified, use the default block handler. - let params = BlockRequestHandler::new::::Hash>>( - chain_sync_network_handle.clone(), - &protocol_id, - config.chain_spec.fork_id(), - client.clone(), - config.network.default_peers_set.in_peers as usize - + config.network.default_peers_set.out_peers as usize, - ); - ( - params.server, - params.downloader, - params.request_response_config, - ) - } - }; - spawn_handle.spawn("block-request-handler", Some("networking"), async move { - block_server.run().await; - }); - - // crate transactions protocol and add it to the list of supported protocols of `network_params` - let peer_store_handle = net_config.peer_store_handle(); - let (transactions_handler_proto, transactions_config) = - sc_network_transactions::TransactionsHandlerPrototype::new::< - _, - _, - NetworkWorker::Hash>, - >( - protocol_id.clone(), - genesis_hash, - config.chain_spec.fork_id(), - metrics.clone(), - Arc::clone(&peer_store_handle), - ); - net_config.add_notification_protocol(transactions_config); - - // Start task for `PeerStore` - let peer_store = net_config.take_peer_store(); - spawn_handle.spawn("peer-store", Some("networking"), peer_store.run()); - - let state_request_protocol_config = { - // Allow both outgoing and incoming requests. - let (handler, protocol_config) = - StateRequestHandler::new::::Hash>>( - &protocol_id, - config.chain_spec.fork_id(), - client.clone(), - config.network.default_peers_set_num_full as usize, - ); - spawn_handle.spawn("state-request-handler", Some("networking"), handler.run()); - protocol_config - }; - - net_config.add_request_response_protocol(block_request_protocol_config); - net_config.add_request_response_protocol(state_request_protocol_config.clone()); - - let (engine, sync_service, block_announce_config) = SyncingEngine::new( - Roles::from(&config.role), - client.clone(), - config - .prometheus_config - .as_ref() - .map(|config| config.registry.clone()) - .as_ref(), - metrics.clone(), - &net_config, - protocol_id.clone(), - &config.chain_spec.fork_id().map(ToOwned::to_owned), - Box::new(DefaultBlockAnnounceValidator), - None, - chain_sync_network_handle, - import_queue.service(), - block_downloader.clone(), - state_request_protocol_config.name.clone(), - None, - peer_store_handle, - // set to be force_synced always for domains since they relay on Consensus chain to derive and import domain blocks. - // If not set, each domain node will wait to be fully synced and as a result will not propagate the transactions over network. - // It would have been ideal to use `Consensus` chain sync service to respond to `is_major_sync` requests but this - // would require upstream changes and with some refactoring. This is not worth the effort at the moment since - // we are planning to enable domain's block request and state sync mechanism in the near future. - // Until such change has been made, domain's sync service needs to be in force_synced state. - true, - )?; - let sync_service_import_queue = sync_service.clone(); - let sync_service = Arc::new(sync_service); - - let network_params = sc_network::config::Params:: { - role: config.role.clone(), - executor: { - let spawn_handle = Clone::clone(&spawn_handle); - Box::new(move |fut| { - spawn_handle.spawn("libp2p-node", Some("networking"), fut); - }) - }, - network_config: net_config, - genesis_hash, - protocol_id, - fork_id: config.chain_spec.fork_id().map(ToOwned::to_owned), - metrics_registry: config - .prometheus_config - .as_ref() - .map(|config| config.registry.clone()), - block_announce_config, - bitswap_config: None, - notification_metrics: metrics, - }; - - let has_bootnodes = !network_params - .network_config - .network_config - .boot_nodes - .is_empty(); - let network_mut = sc_network::NetworkWorker::new(network_params)?; - let network = network_mut.service().clone(); - - let (tx_handler, tx_handler_controller) = transactions_handler_proto.build( - network.clone(), - sync_service.clone(), - Arc::new(TransactionPoolAdapter::new( - transaction_pool, - client.clone(), - )), - config - .prometheus_config - .as_ref() - .map(|config| &config.registry), - )?; - - spawn_handle.spawn( - "network-transactions-handler", - Some("networking"), - tx_handler.run(), - ); - spawn_handle.spawn_blocking( - "chain-sync-network-service-provider", - Some("networking"), - chain_sync_network_provider.run(network.clone()), - ); - spawn_handle.spawn( - "import-queue", - None, - import_queue.run(Box::new(sync_service_import_queue)), - ); - spawn_handle.spawn_blocking("syncing", None, engine.run()); - - let (system_rpc_tx, system_rpc_rx) = tracing_unbounded("mpsc_system_rpc", 10_000); - spawn_handle.spawn( - "system-rpc-handler", - Some("networking"), - build_system_rpc_future::<_, _, ::Hash>( - config.role.clone(), - network_mut.service().clone(), - sync_service.clone(), - client.clone(), - system_rpc_rx, - has_bootnodes, - ), - ); - - let future = build_network_future(network_mut, client, sync_service.clone()); - - // TODO: Normally, one is supposed to pass a list of notifications protocols supported by the - // node through the `NetworkConfiguration` struct. But because this function doesn't know in - // advance which components, such as GrandPa or Polkadot, will be plugged on top of the - // service, it is unfortunately not possible to do so without some deep refactoring. To bypass - // this problem, the `NetworkService` provides a `register_notifications_protocol` method that - // can be called even after the network has been initialized. However, we want to avoid the - // situation where `register_notifications_protocol` is called *after* the network actually - // connects to other peers. For this reason, we delay the process of the network future until - // the user calls `NetworkStarter::start_network`. - // - // This entire hack should eventually be removed in favour of passing the list of protocols - // through the configuration. - // - // See also https://github.com/paritytech/substrate/issues/6827 - let (network_start_tx, network_start_rx) = oneshot::channel(); - - // The network worker is responsible for gathering all network messages and processing - // them. This is quite a heavy task, and at the time of the writing of this comment it - // frequently happens that this future takes several seconds or in some situations - // even more than a minute until it has processed its entire queue. This is clearly an - // issue, and ideally we would like to fix the network future to take as little time as - // possible, but we also take the extra harm-prevention measure to execute the networking - // future using `spawn_blocking`. - spawn_handle.spawn_blocking("network-worker", Some("networking"), async move { - if network_start_rx.await.is_err() { - log::warn!( - "The NetworkStart returned as part of `build_network` has been silently dropped" - ); - // This `return` might seem unnecessary, but we don't want to make it look like - // everything is working as normal even though the user is clearly misusing the API. - return; - } - - future.await - }); - - Ok(( - network, - system_rpc_tx, - tx_handler_controller, - NetworkStarter::new(network_start_tx), - sync_service, - block_downloader, - )) -} - -/// Builds a future that continuously polls the network. -async fn build_network_future< - B: BlockT, - C: BlockchainEvents - + HeaderBackend - + BlockBackend - + HeaderMetadata - + ProofProvider - + Send - + Sync - + 'static, - H: sc_network_common::ExHashT, ->( - network: NetworkWorker, - client: Arc, - sync_service: Arc>, -) { - // Stream of finalized blocks reported by the client. - let mut finality_notification_stream = client.finality_notification_stream().fuse(); - - let network_run = network.run().fuse(); - futures::pin_mut!(network_run); - - loop { - futures::select! { - // List of blocks that the client has finalized. - notification = finality_notification_stream.select_next_some() => { - sync_service.on_block_finalized(notification.hash, notification.header); - } - - // Drive the network. Shut down the network future if `NetworkWorker` has terminated. - _ = network_run => { - tracing::debug!("`NetworkWorker` has terminated, shutting down the network future."); - return - } - } - } -} diff --git a/domains/service/src/providers.rs b/domains/service/src/providers.rs index 0e21928f54..7333460c8c 100644 --- a/domains/service/src/providers.rs +++ b/domains/service/src/providers.rs @@ -5,7 +5,8 @@ use jsonrpsee::RpcModule; use parity_scale_codec::{Decode, Encode}; use sc_client_api::{AuxStore, Backend, BlockBackend, StorageProvider}; use sc_consensus::BlockImport; -use sc_rpc::{RpcSubscriptionIdProvider, SubscriptionTaskExecutor}; +use sc_rpc::SubscriptionTaskExecutor; +use sc_rpc_server::SubscriptionIdProvider; use sc_transaction_pool::ChainApi; use sc_transaction_pool_api::TransactionPool; use serde::de::DeserializeOwned; @@ -62,7 +63,7 @@ where full_deps: FullDeps, ) -> Result; - fn rpc_id(&self) -> Option>; + fn rpc_id(&self) -> Option>; fn rpc_builder( &self, @@ -105,7 +106,7 @@ where Ok(full_deps) } - fn rpc_id(&self) -> Option> { + fn rpc_id(&self) -> Option> { None } diff --git a/domains/service/src/rpc.rs b/domains/service/src/rpc.rs index 9ff6927893..55fd340578 100644 --- a/domains/service/src/rpc.rs +++ b/domains/service/src/rpc.rs @@ -1,4 +1,5 @@ //! A collection of node-specific RPC methods. +//! //! Substrate provides the `sc-rpc` crate, which defines the core RPC layer //! used by Substrate nodes. This file extends those RPC definitions with //! capabilities that are specific to this project's runtime configuration. @@ -9,10 +10,8 @@ use domain_runtime_primitives::{Balance, Nonce}; use jsonrpsee::RpcModule; use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer}; use sc_client_api::{AuxStore, BlockBackend}; -use sc_network::NetworkService; +use sc_network::service::traits::NetworkService; use sc_network_sync::SyncingService; -use sc_rpc::DenyUnsafe; -use sc_rpc_spec_v2::chain_spec::{ChainSpec, ChainSpecApiServer}; use sc_service::{DatabaseSource, SpawnTaskHandle}; use sc_transaction_pool::{ChainApi, Pool}; use sc_transaction_pool_api::TransactionPool; @@ -37,12 +36,8 @@ pub struct FullDeps { pub pool: Arc, /// Graph pool instance. pub graph: Arc>, - /// A copy of the chain spec. - pub chain_spec: Box, - /// Whether to deny unsafe calls - pub deny_unsafe: DenyUnsafe, /// Network service - pub network: Arc>, + pub network: Arc, /// Chain syncing service pub sync: Arc>, /// Is node running as authority. @@ -66,8 +61,6 @@ impl Clone backend: self.backend.clone(), pool: self.pool.clone(), graph: self.graph.clone(), - chain_spec: self.chain_spec.cloned_box(), - deny_unsafe: self.deny_unsafe, network: self.network.clone(), sync: self.sync.clone(), is_authority: self.is_authority, @@ -101,20 +94,9 @@ where AccountId: DeserializeOwned + Encode + Debug + Decode + Display + Clone + Sync + Send + 'static, { let mut module = RpcModule::new(()); - let FullDeps { - client, - pool, - chain_spec, - deny_unsafe, - .. - } = deps; + let FullDeps { client, pool, .. } = deps; - let chain_name = chain_spec.name().to_string(); - let genesis_hash = client.info().genesis_hash; - let properties = chain_spec.properties(); - module.merge(ChainSpec::new(chain_name, genesis_hash, properties).into_rpc())?; - - module.merge(System::new(client.clone(), pool, deny_unsafe).into_rpc())?; + module.merge(System::new(client.clone(), pool).into_rpc())?; module.merge(TransactionPayment::new(client).into_rpc())?; Ok(module) diff --git a/domains/test/primitives/Cargo.toml b/domains/test/primitives/Cargo.toml index d272c1c45f..56923d4674 100644 --- a/domains/test/primitives/Cargo.toml +++ b/domains/test/primitives/Cargo.toml @@ -13,7 +13,7 @@ include = [ [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } sp-messenger = { version = "0.1.0", default-features = false, path = "../../primitives/messenger" } subspace-runtime-primitives = { version = "0.1.0", path = "../../../crates/subspace-runtime-primitives", default-features = false } diff --git a/domains/test/runtime/auto-id/Cargo.toml b/domains/test/runtime/auto-id/Cargo.toml index e897004794..30f7721119 100644 --- a/domains/test/runtime/auto-id/Cargo.toml +++ b/domains/test/runtime/auto-id/Cargo.toml @@ -21,40 +21,40 @@ codec = { package = "parity-scale-codec", version = "3.6.12", default-features = domain-pallet-executive = { version = "0.1.0", path = "../../../pallets/executive", default-features = false } domain-runtime-primitives = { version = "0.1.0", path = "../../../primitives/runtime", default-features = false } domain-test-primitives = { version = "0.1.0", path = "../../primitives", default-features = false } -frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system-benchmarking = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system-benchmarking = { default-features = false, optional = true, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-auto-id = { version = "0.1.0", path = "../../../pallets/auto-id", default-features = false } -pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-block-fees = { version = "0.1.0", path = "../../../pallets/block-fees", default-features = false } pallet-domain-id = { version = "0.1.0", path = "../../../pallets/domain-id", default-features = false } pallet-domain-sudo = { version = "0.1.0", path = "../../../pallets/domain-sudo", default-features = false } pallet-messenger = { version = "0.1.0", path = "../../../pallets/messenger", default-features = false } -pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-transporter = { version = "0.1.0", path = "../../../pallets/transporter", default-features = false } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../../../../crates/sp-domains", default-features = false } sp-domain-sudo = { version = "0.1.0", path = "../../../primitives/domain-sudo", default-features = false } -sp-genesis-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-genesis-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", default-features = false, path = "../../../primitives/messenger" } sp-messenger-host-functions = { version = "0.1.0", default-features = false, path = "../../../primitives/messenger-host-functions" } -sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-storage = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } +sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-storage = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } sp-subspace-mmr = { version = "0.1.0", default-features = false, path = "../../../../crates/sp-subspace-mmr" } -sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", path = "../../../../crates/subspace-core-primitives", default-features = false } subspace-runtime-primitives = { version = "0.1.0", path = "../../../../crates/subspace-runtime-primitives", default-features = false } @@ -62,7 +62,7 @@ subspace-runtime-primitives = { version = "0.1.0", path = "../../../../crates/su subspace-runtime-primitives = { version = "0.1.0", features = ["testing"], path = "../../../../crates/subspace-runtime-primitives" } [build-dependencies] -substrate-wasm-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } +substrate-wasm-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } [features] default = [ diff --git a/domains/test/runtime/auto-id/src/lib.rs b/domains/test/runtime/auto-id/src/lib.rs index 09a8b226bd..e05100947b 100644 --- a/domains/test/runtime/auto-id/src/lib.rs +++ b/domains/test/runtime/auto-id/src/lib.rs @@ -7,19 +7,21 @@ #[cfg(feature = "std")] include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); -#[cfg(not(feature = "std"))] extern crate alloc; +use alloc::borrow::Cow; #[cfg(not(feature = "std"))] use alloc::format; use codec::{Decode, Encode, MaxEncodedLen}; +use core::mem; use domain_runtime_primitives::opaque::Header; pub use domain_runtime_primitives::{ block_weights, maximum_block_length, opaque, AccountId, Address, Balance, BlockNumber, Hash, Nonce, Signature, EXISTENTIAL_DEPOSIT, }; use domain_runtime_primitives::{ - CheckExtrinsicsValidityError, DecodeExtrinsicError, ERR_BALANCE_OVERFLOW, SLOT_DURATION, + CheckExtrinsicsValidityError, DecodeExtrinsicError, HoldIdentifier, ERR_BALANCE_OVERFLOW, + SLOT_DURATION, }; use frame_support::dispatch::{DispatchClass, DispatchInfo, GetDispatchInfo}; use frame_support::genesis_builder_helper::{build_state, get_preset}; @@ -38,7 +40,7 @@ use pallet_transporter::EndpointHandler; use sp_api::impl_runtime_apis; use sp_core::crypto::KeyTypeId; use sp_core::{Get, OpaqueMetadata}; -use sp_domains::{ChannelId, DomainAllowlistUpdates, DomainId, MessengerHoldIdentifier, Transfers}; +use sp_domains::{ChannelId, DomainAllowlistUpdates, DomainId, Transfers}; use sp_messenger::endpoint::{Endpoint, EndpointHandler as EndpointHandlerT, EndpointId}; use sp_messenger::messages::{ BlockMessagesWithStorageKey, ChainId, CrossDomainMessage, FeeModel, MessageId, MessageKey, @@ -53,10 +55,7 @@ use sp_runtime::traits::{ use sp_runtime::transaction_validity::{ InvalidTransaction, TransactionSource, TransactionValidity, TransactionValidityError, }; -use sp_runtime::{ - create_runtime_str, generic, impl_opaque_keys, ApplyExtrinsicResult, Digest, - ExtrinsicInclusionMode, -}; +use sp_runtime::{generic, impl_opaque_keys, ApplyExtrinsicResult, Digest, ExtrinsicInclusionMode}; pub use sp_runtime::{MultiAddress, Perbill, Permill}; use sp_std::collections::btree_set::BTreeSet; use sp_std::marker::PhantomData; @@ -116,15 +115,14 @@ impl_opaque_keys! { #[sp_version::runtime_version] pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("subspace-auto-id-domain"), - impl_name: create_runtime_str!("subspace-auto-id-domain"), + spec_name: Cow::Borrowed("subspace-auto-id-domain"), + impl_name: Cow::Borrowed("subspace-auto-id-domain"), authoring_version: 0, spec_version: 1, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 0, - state_version: 0, - extrinsic_state_version: 1, + system_version: 2, }; parameter_types! { @@ -226,7 +224,7 @@ impl pallet_balances::Config for Runtime { type ReserveIdentifier = [u8; 8]; type FreezeIdentifier = (); type MaxFreezes = (); - type RuntimeHoldReason = HoldIdentifier; + type RuntimeHoldReason = HoldIdentifierWrapper; } parameter_types! { @@ -372,24 +370,15 @@ impl sp_messenger::StorageKeys for StorageKeys { #[derive( PartialEq, Eq, Clone, Encode, Decode, TypeInfo, MaxEncodedLen, Ord, PartialOrd, Copy, Debug, )] -pub enum HoldIdentifier { - Messenger(MessengerHoldIdentifier), -} +pub struct HoldIdentifierWrapper(HoldIdentifier); -impl VariantCount for HoldIdentifier { - // TODO: revist this value, it is used as the max number of hold an account can - // create. Currently, opening an XDM channel will create 1 hold, so this value - // also used as the limit of how many channel an account can open. - // - // TODO: HACK this is not the actual variant count but it is required see - // https://github.com/autonomys/subspace/issues/2674 for more details. It - // will be resolved as https://github.com/paritytech/polkadot-sdk/issues/4033. - const VARIANT_COUNT: u32 = 100; +impl VariantCount for HoldIdentifierWrapper { + const VARIANT_COUNT: u32 = mem::variant_count::() as u32; } -impl pallet_messenger::HoldIdentifier for HoldIdentifier { - fn messenger_channel(dst_chain_id: ChainId, channel_id: ChannelId) -> Self { - Self::Messenger(MessengerHoldIdentifier::Channel((dst_chain_id, channel_id))) +impl pallet_messenger::HoldIdentifier for HoldIdentifierWrapper { + fn messenger_channel() -> Self { + Self(HoldIdentifier::MessengerChannel) } } @@ -420,7 +409,7 @@ impl pallet_messenger::Config for Runtime { type MmrProofVerifier = MmrProofVerifier; type StorageKeys = StorageKeys; type DomainOwner = (); - type HoldIdentifier = HoldIdentifier; + type HoldIdentifier = HoldIdentifierWrapper; type ChannelReserveFee = ChannelReserveFee; type ChannelInitReservePortion = ChannelInitReservePortion; type DomainRegistration = (); @@ -751,7 +740,7 @@ impl_runtime_apis! { account_result.ok().map(|account_id| account_id.encode()) }) { // Check if the signer Id hash is within the tx range - let signer_id_hash = U256::from_be_bytes(blake3_hash(&signer.encode())); + let signer_id_hash = U256::from_be_bytes(*blake3_hash(&signer.encode())); sp_domains::signer_in_tx_range(bundle_vrf_hash, &signer_id_hash, tx_range) } else { // Unsigned transactions are always in the range. @@ -999,7 +988,7 @@ impl_runtime_apis! { fn dispatch_benchmark( config: frame_benchmarking::BenchmarkConfig - ) -> Result, sp_runtime::RuntimeString> { + ) -> Result, alloc::string::String> { use frame_benchmarking::{baseline, Benchmarking, BenchmarkBatch}; use sp_storage::TrackedStorageKey; use frame_system_benchmarking::Pallet as SystemBench; diff --git a/domains/test/runtime/evm/Cargo.toml b/domains/test/runtime/evm/Cargo.toml index 52bd81c3a3..73ef7f91e8 100644 --- a/domains/test/runtime/evm/Cargo.toml +++ b/domains/test/runtime/evm/Cargo.toml @@ -21,52 +21,52 @@ codec = { package = "parity-scale-codec", version = "3.6.12", default-features = domain-pallet-executive = { version = "0.1.0", path = "../../../pallets/executive", default-features = false } domain-test-primitives = { version = "0.1.0", path = "../../primitives", default-features = false } domain-runtime-primitives = { version = "0.1.0", path = "../../../primitives/runtime", default-features = false } -fp-account = { version = "1.0.0-dev", default-features = false, features = ["serde"], git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -fp-rpc = { version = "3.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -fp-self-contained = { version = "1.0.0-dev", default-features = false, features = ["serde"], git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-base-fee = { version = "1.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } +fp-account = { version = "1.0.0-dev", default-features = false, features = ["serde"], git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +fp-rpc = { version = "3.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +fp-self-contained = { version = "1.0.0-dev", default-features = false, features = ["serde"], git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-base-fee = { version = "1.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } pallet-block-fees = { version = "0.1.0", path = "../../../pallets/block-fees", default-features = false } pallet-domain-id = { version = "0.1.0", path = "../../../pallets/domain-id", default-features = false } pallet-domain-sudo = { version = "0.1.0", path = "../../../pallets/domain-sudo", default-features = false } -pallet-ethereum = { default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -pallet-evm = { version = "6.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -pallet-evm-chain-id = { version = "1.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } +pallet-ethereum = { default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +pallet-evm = { version = "6.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +pallet-evm-chain-id = { version = "1.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } pallet-evm-nonce-tracker = { version = "0.1.0", path = "../../../pallets/evm_nonce_tracker", default-features = false } -pallet-evm-precompile-modexp = { version = "2.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -pallet-evm-precompile-sha3fips = { version = "2.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -pallet-evm-precompile-simple = { version = "2.0.0-dev", default-features = false, git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } +pallet-evm-precompile-modexp = { version = "2.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +pallet-evm-precompile-sha3fips = { version = "2.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +pallet-evm-precompile-simple = { version = "2.0.0-dev", default-features = false, git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } pallet-messenger = { version = "0.1.0", path = "../../../pallets/messenger", default-features = false } -pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-transporter = { version = "0.1.0", path = "../../../pallets/transporter", default-features = false } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../../../../crates/sp-domains", default-features = false } sp-domain-sudo = { version = "0.1.0", path = "../../../primitives/domain-sudo", default-features = false } -sp-genesis-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-genesis-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sp-inherents = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", default-features = false, path = "../../../primitives/messenger" } sp-messenger-host-functions = { version = "0.1.0", default-features = false, path = "../../../primitives/messenger-host-functions" } -sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { version = "0.1.0", default-features = false, path = "../../../../crates/sp-subspace-mmr" } -sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", path = "../../../../crates/subspace-core-primitives", default-features = false } subspace-runtime-primitives = { version = "0.1.0", path = "../../../../crates/subspace-runtime-primitives", default-features = false } [build-dependencies] -substrate-wasm-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } +substrate-wasm-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } [features] default = [ diff --git a/domains/test/runtime/evm/src/lib.rs b/domains/test/runtime/evm/src/lib.rs index 907ce2ceaf..6ed15bb6d9 100644 --- a/domains/test/runtime/evm/src/lib.rs +++ b/domains/test/runtime/evm/src/lib.rs @@ -9,19 +9,21 @@ mod precompiles; #[cfg(feature = "std")] include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); -#[cfg(not(feature = "std"))] extern crate alloc; +use alloc::borrow::Cow; #[cfg(not(feature = "std"))] use alloc::format; use codec::{Decode, Encode, MaxEncodedLen}; +use core::mem; pub use domain_runtime_primitives::opaque::Header; use domain_runtime_primitives::{ block_weights, maximum_block_length, maximum_domain_block_weight, ERR_BALANCE_OVERFLOW, ERR_NONCE_OVERFLOW, EXISTENTIAL_DEPOSIT, SLOT_DURATION, }; pub use domain_runtime_primitives::{ - opaque, Balance, BlockNumber, CheckExtrinsicsValidityError, DecodeExtrinsicError, Hash, Nonce, + opaque, Balance, BlockNumber, CheckExtrinsicsValidityError, DecodeExtrinsicError, Hash, + HoldIdentifier, Nonce, }; use fp_account::EthereumSignature; use fp_self_contained::{CheckedSignature, SelfContainedCall}; @@ -50,7 +52,7 @@ use pallet_transporter::EndpointHandler; use sp_api::impl_runtime_apis; use sp_core::crypto::KeyTypeId; use sp_core::{Get, OpaqueMetadata, H160, H256, U256}; -use sp_domains::{DomainAllowlistUpdates, DomainId, MessengerHoldIdentifier, Transfers}; +use sp_domains::{DomainAllowlistUpdates, DomainId, Transfers}; use sp_messenger::endpoint::{Endpoint, EndpointHandler as EndpointHandlerT, EndpointId}; use sp_messenger::messages::{ BlockMessagesWithStorageKey, ChainId, ChannelId, CrossDomainMessage, FeeModel, MessageId, @@ -68,7 +70,7 @@ use sp_runtime::transaction_validity::{ InvalidTransaction, TransactionSource, TransactionValidity, TransactionValidityError, }; use sp_runtime::{ - create_runtime_str, generic, impl_opaque_keys, ApplyExtrinsicResult, ConsensusEngineId, Digest, + generic, impl_opaque_keys, ApplyExtrinsicResult, ConsensusEngineId, Digest, ExtrinsicInclusionMode, }; pub use sp_runtime::{MultiAddress, Perbill, Permill}; @@ -242,15 +244,14 @@ impl_opaque_keys! { #[sp_version::runtime_version] pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("subspace-evm-domain"), - impl_name: create_runtime_str!("subspace-evm-domain"), + spec_name: Cow::Borrowed("subspace-evm-domain"), + impl_name: Cow::Borrowed("subspace-evm-domain"), authoring_version: 0, spec_version: 1, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 0, - state_version: 0, - extrinsic_state_version: 1, + system_version: 2, }; parameter_types! { @@ -348,7 +349,7 @@ impl pallet_balances::Config for Runtime { type ReserveIdentifier = [u8; 8]; type FreezeIdentifier = (); type MaxFreezes = (); - type RuntimeHoldReason = HoldIdentifier; + type RuntimeHoldReason = HoldIdentifierWrapper; } parameter_types! { @@ -467,20 +468,15 @@ impl sp_subspace_mmr::MmrProofVerifier, Hash> for MmrP #[derive( PartialEq, Eq, Clone, Encode, Decode, TypeInfo, MaxEncodedLen, Ord, PartialOrd, Copy, Debug, )] -pub enum HoldIdentifier { - Messenger(MessengerHoldIdentifier), -} +pub struct HoldIdentifierWrapper(HoldIdentifier); -impl VariantCount for HoldIdentifier { - // TODO: HACK this is not the actual variant count but it is required see - // https://github.com/autonomys/subspace/issues/2674 for more details. It - // will be resolved as https://github.com/paritytech/polkadot-sdk/issues/4033. - const VARIANT_COUNT: u32 = 10; +impl VariantCount for HoldIdentifierWrapper { + const VARIANT_COUNT: u32 = mem::variant_count::() as u32; } -impl pallet_messenger::HoldIdentifier for HoldIdentifier { - fn messenger_channel(dst_chain_id: ChainId, channel_id: ChannelId) -> Self { - Self::Messenger(MessengerHoldIdentifier::Channel((dst_chain_id, channel_id))) +impl pallet_messenger::HoldIdentifier for HoldIdentifierWrapper { + fn messenger_channel() -> Self { + Self(HoldIdentifier::MessengerChannel) } } @@ -532,7 +528,7 @@ impl pallet_messenger::Config for Runtime { type MmrProofVerifier = MmrProofVerifier; type StorageKeys = StorageKeys; type DomainOwner = (); - type HoldIdentifier = HoldIdentifier; + type HoldIdentifier = HoldIdentifierWrapper; type ChannelReserveFee = ChannelReserveFee; type ChannelInitReservePortion = ChannelInitReservePortion; type DomainRegistration = (); @@ -899,33 +895,31 @@ fn pre_dispatch_evm_transaction( { transaction_validity.map(|_| ())?; - if let Call::transact { transaction } = call { - frame_system::CheckWeight::::do_pre_dispatch(dispatch_info, len)?; - - let transaction_data: TransactionData = (&transaction).into(); - let transaction_nonce = transaction_data.nonce; - // if the current account nonce is more the tracked nonce, then - // pick the highest nonce - let account_nonce = { - let tracked_nonce = - EVMNoncetracker::account_nonce(AccountId::from(account_id)) - .unwrap_or(U256::zero()); - let account_nonce = EVM::account_basic(&account_id).0.nonce; - max(tracked_nonce, account_nonce) - }; - - match transaction_nonce.cmp(&account_nonce) { - Ordering::Less => return Err(InvalidTransaction::Stale.into()), - Ordering::Greater => return Err(InvalidTransaction::Future.into()), - Ordering::Equal => {} - } + let Call::transact { transaction } = call; + frame_system::CheckWeight::::do_pre_dispatch(dispatch_info, len)?; + + let transaction_data: TransactionData = (&transaction).into(); + let transaction_nonce = transaction_data.nonce; + // if the current account nonce is more the tracked nonce, then + // pick the highest nonce + let account_nonce = { + let tracked_nonce = EVMNoncetracker::account_nonce(AccountId::from(account_id)) + .unwrap_or(U256::zero()); + let account_nonce = EVM::account_basic(&account_id).0.nonce; + max(tracked_nonce, account_nonce) + }; + + match transaction_nonce.cmp(&account_nonce) { + Ordering::Less => return Err(InvalidTransaction::Stale.into()), + Ordering::Greater => return Err(InvalidTransaction::Future.into()), + Ordering::Equal => {} + } - let next_nonce = account_nonce - .checked_add(U256::one()) - .ok_or(InvalidTransaction::Custom(ERR_NONCE_OVERFLOW))?; + let next_nonce = account_nonce + .checked_add(U256::one()) + .ok_or(InvalidTransaction::Custom(ERR_NONCE_OVERFLOW))?; - EVMNoncetracker::set_account_nonce(AccountId::from(account_id), next_nonce); - } + EVMNoncetracker::set_account_nonce(AccountId::from(account_id), next_nonce); } Ok(()) @@ -1109,7 +1103,7 @@ impl_runtime_apis! { if let Some(signer) = extract_signer_inner(extrinsic, &lookup).and_then(|account_result| { account_result.ok().map(|account_id| account_id.encode()) }) { - let signer_id_hash = U256::from_be_bytes(blake3_hash(&signer.encode())); + let signer_id_hash = U256::from_be_bytes(*blake3_hash(&signer.encode())); sp_domains::signer_in_tx_range(bundle_vrf_hash, &signer_id_hash, tx_range) } else { true diff --git a/domains/test/service/Cargo.toml b/domains/test/service/Cargo.toml index a303359500..9493b2ffb3 100644 --- a/domains/test/service/Cargo.toml +++ b/domains/test/service/Cargo.toml @@ -19,39 +19,39 @@ domain-service = { version = "0.1.0", path = "../../service" } domain-test-primitives = { version = "0.1.0", path = "../primitives" } domain-runtime-primitives = { version = "0.1.0", path = "../../primitives/runtime", default-features = false } evm-domain-test-runtime = { version = "0.1.0", path = "../runtime/evm" } -fp-account = { version = "1.0.0-dev", default-features = false, features = ["serde"], git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -fp-rpc = { version = "3.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa", features = ['default'] } -frame-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-support = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +fp-account = { version = "1.0.0-dev", default-features = false, features = ["serde"], git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +fp-rpc = { version = "3.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968", features = ['default'] } +frame-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-support = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } rand = "0.8.5" -pallet-transaction-payment = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-transaction-payment = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment-rpc = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sc-domains = { version = "0.1.0", path = "../../../crates/sc-domains" } -sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-tracing = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -serde = { version = "1.0.206", features = ["derive"] } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-arithmetic = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-tracing = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +serde = { version = "1.0.110", features = ["derive"] } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-arithmetic = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-consensus-subspace = { version = "0.1.0", path = "../../../crates/sp-consensus-subspace" } sp-domains = { version = "0.1.0", path = "../../../crates/sp-domains" } -sp-keyring = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-keyring = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", path = "../../../domains/primitives/messenger" } -sp-offchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-session = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-offchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sp-session = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-runtime-primitives = { version = "0.1.0", path = "../../../crates/subspace-runtime-primitives" } subspace-test-client = { version = "0.1.0", path = "../../../test/subspace-test-client" } subspace-test-service = { version = "0.1.0", path = "../../../test/subspace-test-service" } -substrate-frame-rpc-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -substrate-test-client = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -tokio = { version = "1.39.2", features = ["macros"] } +substrate-frame-rpc-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +substrate-test-client = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +tokio = { version = "1.40.0", features = ["macros"] } tracing = "0.1.40" diff --git a/domains/test/service/src/domain.rs b/domains/test/service/src/domain.rs index 2ba22f6b50..3b27a55ac3 100644 --- a/domains/test/service/src/domain.rs +++ b/domains/test/service/src/domain.rs @@ -18,7 +18,8 @@ use frame_system::pallet_prelude::BlockNumberFor; use pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi; use sc_client_api::HeaderBackend; use sc_domains::RuntimeExecutor; -use sc_network::{NetworkService, NetworkStateInfo}; +use sc_network::service::traits::NetworkService; +use sc_network::NetworkStateInfo; use sc_network_sync::SyncingService; use sc_service::config::MultiaddrWithPeerId; use sc_service::{BasePath, Role, RpcHandlers, TFullBackend, TaskManager}; @@ -69,14 +70,14 @@ where + DomainCoreApi + MessengerApi, ::Hash> + TaggedTransactionQueue - + AccountNonceApi::AccountId, Nonce> + + AccountNonceApi + TransactionPaymentRuntimeApi + RelayerApi, NumberFor, ::Hash>, { /// The domain id pub domain_id: DomainId, /// The node's account key - pub key: ::Keyring, + pub key: Runtime::Keyring, /// TaskManager's instance. pub task_manager: TaskManager, /// Client's instance. @@ -86,7 +87,7 @@ where /// Code executor. pub code_executor: Arc, /// Network service. - pub network_service: Arc>, + pub network_service: Arc, /// Sync service. pub sync_service: Arc>, /// The `MultiaddrWithPeerId` to this node. This is useful if you want to pass it as "boot node" @@ -129,7 +130,7 @@ where async fn build( domain_id: DomainId, tokio_handle: tokio::runtime::Handle, - key: ::Keyring, + key: Runtime::Keyring, base_path: BasePath, domain_nodes: Vec, domain_nodes_exclusive: bool, @@ -146,14 +147,14 @@ where .await .expect("Failed to get domain instance data"); let chain_spec = create_domain_spec(domain_instance_data.raw_genesis); - let key_seed = ::to_seed(key); + let key_seed = Runtime::to_seed(key); let domain_config = node_config( domain_id, tokio_handle.clone(), key_seed, domain_nodes, domain_nodes_exclusive, - role.clone(), + role, BasePath::new(base_path.path().join(format!("domain-{domain_id:?}"))), Box::new(chain_spec) as Box<_>, ) diff --git a/domains/test/service/src/lib.rs b/domains/test/service/src/lib.rs index 98e6f5b73c..749f45e826 100644 --- a/domains/test/service/src/lib.rs +++ b/domains/test/service/src/lib.rs @@ -29,9 +29,9 @@ pub use keyring::Keyring as EcdsaKeyring; use sc_network::config::{NonReservedPeerMode, TransportConfig}; use sc_network::multiaddr; use sc_service::config::{ - DatabaseSource, KeystoreConfig, MultiaddrWithPeerId, NetworkConfiguration, - OffchainWorkerConfig, PruningMode, RpcBatchRequestConfig, WasmExecutionMethod, - WasmtimeInstantiationStrategy, + DatabaseSource, ExecutorConfiguration, KeystoreConfig, MultiaddrWithPeerId, + NetworkConfiguration, OffchainWorkerConfig, PruningMode, RpcBatchRequestConfig, + RpcConfiguration, WasmExecutionMethod, WasmtimeInstantiationStrategy, }; use sc_service::{ BasePath, BlocksPruning, ChainSpec, Configuration as ServiceConfiguration, @@ -121,26 +121,32 @@ pub fn node_config( state_pruning: Some(PruningMode::ArchiveAll), blocks_pruning: BlocksPruning::KeepAll, chain_spec, - wasm_method: WasmExecutionMethod::Compiled { - instantiation_strategy: WasmtimeInstantiationStrategy::PoolingCopyOnWrite, + executor: ExecutorConfiguration { + wasm_method: WasmExecutionMethod::Compiled { + instantiation_strategy: WasmtimeInstantiationStrategy::PoolingCopyOnWrite, + }, + max_runtime_instances: 8, + default_heap_pages: None, + runtime_cache_size: 2, + }, + rpc: RpcConfiguration { + addr: None, + max_request_size: 0, + max_response_size: 0, + id_provider: None, + max_subs_per_conn: 0, + port: 0, + message_buffer_capacity: 0, + batch_config: RpcBatchRequestConfig::Disabled, + max_connections: 0, + cors: None, + methods: Default::default(), + rate_limit: None, + rate_limit_whitelisted_ips: vec![], + rate_limit_trust_proxy_headers: false, }, - rpc_addr: None, - rpc_max_request_size: 0, - rpc_max_response_size: 0, - rpc_id_provider: None, - rpc_max_subs_per_conn: 0, - rpc_port: 0, - rpc_message_buffer_capacity: 0, - rpc_batch_config: RpcBatchRequestConfig::Disabled, - rpc_max_connections: 0, - rpc_cors: None, - rpc_methods: Default::default(), - rpc_rate_limit: None, - rpc_rate_limit_whitelisted_ips: vec![], - rpc_rate_limit_trust_proxy_headers: false, prometheus_config: None, telemetry_endpoints: None, - default_heap_pages: None, offchain_worker: OffchainWorkerConfig { enabled: true, indexing_enabled: false, @@ -150,13 +156,10 @@ pub fn node_config( dev_key_seed: Some(key_seed), tracing_targets: None, tracing_receiver: Default::default(), - max_runtime_instances: 8, announce_block: true, data_path: base_path.path().into(), base_path, - informant_output_format: Default::default(), wasm_runtime_overrides: None, - runtime_cache_size: 2, }) } @@ -302,7 +305,7 @@ impl DomainRuntime for auto_id_domain_test_runtime::Runtime { pub fn construct_extrinsic_generic( client: impl AsRef, function: impl Into<::RuntimeCall>, - caller: ::Keyring, + caller: Runtime::Keyring, immortal: bool, nonce: u32, tip: BalanceOf, @@ -322,8 +325,8 @@ where let function = function.into(); let (raw_payload, extra) = construct_extrinsic_raw_payload(client, function.clone(), immortal, nonce, tip); - let signature = raw_payload.using_encoded(|e| ::sign(caller, e)); - let address = ::address(caller); + let signature = raw_payload.using_encoded(|e| Runtime::sign(caller, e)); + let address = Runtime::address(caller); UncheckedExtrinsicFor::::new_signed(function, address, signature, extra) } diff --git a/orml/README.md b/orml/README.md deleted file mode 100644 index 0dea4e4091..0000000000 --- a/orml/README.md +++ /dev/null @@ -1,3 +0,0 @@ -This directory contains forks of crates from [orml](https://github.com/subspace/open-runtime-module-library) to simplify Substrate upgrades for Subspace. - -The only changes are paths to dependencies. diff --git a/orml/vesting/Cargo.toml b/orml/vesting/Cargo.toml deleted file mode 100644 index 387e7a4419..0000000000 --- a/orml/vesting/Cargo.toml +++ /dev/null @@ -1,46 +0,0 @@ -[package] -name = "orml-vesting" -description = "Provides scheduled balance locking mechanism, in a *graded vesting* way." -repository = "https://github.com/open-web3-stack/open-runtime-module-library/tree/master/vesting" -license = "Apache-2.0" -version = "0.9.1" -authors = ["Laminar Developers "] -edition = "2021" - -[dependencies] -parity-scale-codec = { version = "3.6.12", default-features = false, features = ["max-encoded-len"] } -scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -serde = { version = "1.0.206", optional = true } - -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-io = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } - -[dev-dependencies] -pallet-balances = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } - -[features] -default = ["std"] -std = [ - "frame-support/std", - "frame-system/std", - "parity-scale-codec/std", - "scale-info/std", - "serde", - "sp-io/std", - "sp-runtime/std", - "sp-std/std", -] -runtime-benchmarks = [ - "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", - "sp-runtime/runtime-benchmarks", -] -try-runtime = [ - "frame-support/try-runtime", - "frame-system/try-runtime", - "sp-runtime/try-runtime", -] diff --git a/orml/vesting/README.md b/orml/vesting/README.md deleted file mode 100644 index 1ec1fcc8d1..0000000000 --- a/orml/vesting/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Vesting Module - -## Overview - -Vesting module provides a means of scheduled balance lock on an account. It uses the *graded vesting* way, which unlocks a specific amount of balance every period of time, until all balance unlocked. - -### Vesting Schedule - -The schedule of a vesting is described by data structure `VestingSchedule`: from the block number of `start`, for every `period` amount of blocks, `per_period` amount of balance would unlocked, until number of periods `period_count` reached. Note in vesting schedules, *time* is measured by block number. All `VestingSchedule`s under an account could be queried in chain state. - -### Locks - -The implementation uses locks which allow tokens to be locked by other pallets that's also using locks, for example, the conviction-voting pallet. diff --git a/orml/vesting/src/default_weight.rs b/orml/vesting/src/default_weight.rs deleted file mode 100644 index d5cffd1aec..0000000000 --- a/orml/vesting/src/default_weight.rs +++ /dev/null @@ -1,27 +0,0 @@ -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 2.0.0 - -#![allow(unused_parens)] -#![allow(unused_imports)] -#![allow(clippy::unnecessary_cast)] - -use frame_support::weights::{constants::ParityDbWeight as DbWeight, Weight}; - -impl crate::WeightInfo for () { - fn vested_transfer() -> Weight { - Weight::from_parts(310_862_000, 0) - .saturating_add(DbWeight::get().reads(4 as u64)) - .saturating_add(DbWeight::get().writes(4 as u64)) - } - fn claim(i: u32) -> Weight { - Weight::from_parts(158_614_000, 0) - .saturating_add(Weight::from_parts(958_000, 0).saturating_mul(i as u64)) - .saturating_add(DbWeight::get().reads(3 as u64)) - .saturating_add(DbWeight::get().writes(3 as u64)) - } - fn update_vesting_schedules(i: u32) -> Weight { - Weight::from_parts(119_811_000, 0) - .saturating_add(Weight::from_parts(2_320_000, 0).saturating_mul(i as u64)) - .saturating_add(DbWeight::get().reads(2 as u64)) - .saturating_add(DbWeight::get().writes(3 as u64)) - } -} diff --git a/orml/vesting/src/lib.rs b/orml/vesting/src/lib.rs deleted file mode 100644 index 0490be5edf..0000000000 --- a/orml/vesting/src/lib.rs +++ /dev/null @@ -1,411 +0,0 @@ -//! # Vesting Module -//! -//! ## Overview -//! -//! Vesting module provides a means of scheduled balance lock on an account. It -//! uses the *graded vesting* way, which unlocks a specific amount of balance -//! every period of time, until all balance unlocked. -//! -//! ### Vesting Schedule -//! -//! The schedule of a vesting is described by data structure `VestingSchedule`: -//! from the block number of `start`, for every `period` amount of blocks, -//! `per_period` amount of balance would unlocked, until number of periods -//! `period_count` reached. Note in vesting schedules, *time* is measured by -//! block number. All `VestingSchedule`s under an account could be queried in -//! chain state. -//! -//! ## Interface -//! -//! ### Dispatchable Functions -//! -//! - `vested_transfer` - Add a new vesting schedule for an account. -//! - `claim` - Claim unlocked balances. -//! - `update_vesting_schedules` - Update all vesting schedules under an -//! account, `root` origin required. - -#![cfg_attr(not(feature = "std"), no_std)] -#![allow(clippy::unused_unit)] - -use frame_support::{ - ensure, - pallet_prelude::*, - traits::{Currency, EnsureOrigin, ExistenceRequirement, Get, LockIdentifier, LockableCurrency, WithdrawReasons}, - BoundedVec, -}; -use frame_system::{ensure_root, ensure_signed, pallet_prelude::*}; -use parity_scale_codec::{HasCompact, MaxEncodedLen}; -use scale_info::TypeInfo; -use sp_runtime::{ - traits::{AtLeast32Bit, BlockNumberProvider, CheckedAdd, Saturating, StaticLookup, Zero}, - ArithmeticError, DispatchResult, RuntimeDebug, -}; -use sp_std::{ - cmp::{Eq, PartialEq}, - vec::Vec, -}; - -mod mock; -mod tests; -mod weights; - -pub use module::*; -pub use weights::WeightInfo; - -pub const VESTING_LOCK_ID: LockIdentifier = *b"ormlvest"; - -/// The vesting schedule. -/// -/// Benefits would be granted gradually, `per_period` amount every `period` -/// of blocks after `start`. -#[derive(Clone, Encode, Decode, PartialEq, Eq, RuntimeDebug, MaxEncodedLen, TypeInfo)] -pub struct VestingSchedule { - /// Vesting starting block - pub start: BlockNumber, - /// Number of blocks between vest - pub period: BlockNumber, - /// Number of vest - pub period_count: u32, - /// Amount of tokens to release per vest - #[codec(compact)] - pub per_period: Balance, -} - -impl - VestingSchedule -{ - /// Returns the end of all periods, `None` if calculation overflows. - pub fn end(&self) -> Option { - // period * period_count + start - self.period - .checked_mul(&self.period_count.into())? - .checked_add(&self.start) - } - - /// Returns all locked amount, `None` if calculation overflows. - pub fn total_amount(&self) -> Option { - self.per_period.checked_mul(&self.period_count.into()) - } - - /// Returns locked amount for a given `time`. - /// - /// Note this func assumes schedule is a valid one(non-zero period and - /// non-overflow total amount), and it should be guaranteed by callers. - pub fn locked_amount(&self, time: BlockNumber) -> Balance { - // full = (time - start) / period - // unrealized = period_count - full - // per_period * unrealized - let full = time - .saturating_sub(self.start) - .checked_div(&self.period) - .expect("ensured non-zero period; qed"); - let unrealized = self.period_count.saturating_sub(full.unique_saturated_into()); - self.per_period - .checked_mul(&unrealized.into()) - .expect("ensured non-overflow total amount; qed") - } -} - -#[frame_support::pallet] -pub mod module { - use super::*; - - pub(crate) type BalanceOf = - <::Currency as Currency<::AccountId>>::Balance; - pub(crate) type VestingScheduleOf = VestingSchedule, BalanceOf>; - pub type ScheduledItem = ( - ::AccountId, - BlockNumberFor, - BlockNumberFor, - u32, - BalanceOf, - ); - - #[pallet::config] - pub trait Config: frame_system::Config { - type RuntimeEvent: From> + IsType<::RuntimeEvent>; - - type Currency: LockableCurrency>; - - #[pallet::constant] - /// The minimum amount transferred to call `vested_transfer`. - type MinVestedTransfer: Get>; - - /// Required origin for vested transfer. - type VestedTransferOrigin: EnsureOrigin; - - /// Weight information for extrinsics in this module. - type WeightInfo: WeightInfo; - - /// The maximum vesting schedules - type MaxVestingSchedules: Get; - - // The block number provider - type BlockNumberProvider: BlockNumberProvider>; - } - - #[pallet::error] - pub enum Error { - /// Vesting period is zero - ZeroVestingPeriod, - /// Number of vests is zero - ZeroVestingPeriodCount, - /// Insufficient amount of balance to lock - InsufficientBalanceToLock, - /// This account have too many vesting schedules - TooManyVestingSchedules, - /// The vested transfer amount is too low - AmountLow, - /// Failed because the maximum vesting schedules was exceeded - MaxVestingSchedulesExceeded, - } - - #[pallet::event] - #[pallet::generate_deposit(fn deposit_event)] - pub enum Event { - /// Added new vesting schedule. - VestingScheduleAdded { - from: T::AccountId, - to: T::AccountId, - vesting_schedule: VestingScheduleOf, - }, - /// Claimed vesting. - Claimed { who: T::AccountId, amount: BalanceOf }, - /// Updated vesting schedules. - VestingSchedulesUpdated { who: T::AccountId }, - } - - /// Vesting schedules of an account. - /// - /// VestingSchedules: map AccountId => Vec - #[pallet::storage] - #[pallet::getter(fn vesting_schedules)] - pub type VestingSchedules = StorageMap< - _, - Blake2_128Concat, - T::AccountId, - BoundedVec, T::MaxVestingSchedules>, - ValueQuery, - >; - - #[pallet::genesis_config] - pub struct GenesisConfig { - pub vesting: Vec>, - } - - impl Default for GenesisConfig { - fn default() -> Self { - GenesisConfig { - vesting: Default::default(), - } - } - } - - #[pallet::genesis_build] - impl BuildGenesisConfig for GenesisConfig { - fn build(&self) { - self.vesting - .iter() - .for_each(|(who, start, period, period_count, per_period)| { - let mut bounded_schedules = VestingSchedules::::get(who); - bounded_schedules - .try_push(VestingSchedule { - start: *start, - period: *period, - period_count: *period_count, - per_period: *per_period, - }) - .expect("Max vesting schedules exceeded"); - let total_amount = bounded_schedules - .iter() - .try_fold::<_, _, Result, DispatchError>>(Zero::zero(), |acc_amount, schedule| { - let amount = ensure_valid_vesting_schedule::(schedule)?; - acc_amount - .checked_add(&amount) - .ok_or_else(|| ArithmeticError::Overflow.into()) - }) - .expect("Invalid vesting schedule"); - - assert!( - T::Currency::free_balance(who) >= total_amount, - "Account do not have enough balance" - ); - - T::Currency::set_lock(VESTING_LOCK_ID, who, total_amount, WithdrawReasons::all()); - VestingSchedules::::insert(who, bounded_schedules); - }); - } - } - - #[pallet::pallet] - pub struct Pallet(_); - - #[pallet::hooks] - impl Hooks> for Pallet {} - - #[pallet::call] - impl Pallet { - #[pallet::call_index(0)] - #[pallet::weight(T::WeightInfo::claim(::MaxVestingSchedules::get() / 2))] - pub fn claim(origin: OriginFor) -> DispatchResult { - let who = ensure_signed(origin)?; - let locked_amount = Self::do_claim(&who); - - Self::deposit_event(Event::Claimed { - who, - amount: locked_amount, - }); - Ok(()) - } - - #[pallet::call_index(1)] - #[pallet::weight(T::WeightInfo::vested_transfer())] - pub fn vested_transfer( - origin: OriginFor, - dest: ::Source, - schedule: VestingScheduleOf, - ) -> DispatchResult { - let from = T::VestedTransferOrigin::ensure_origin(origin)?; - let to = T::Lookup::lookup(dest)?; - - if to == from { - ensure!( - T::Currency::free_balance(&from) >= schedule.total_amount().ok_or(ArithmeticError::Overflow)?, - Error::::InsufficientBalanceToLock, - ); - } - - Self::do_vested_transfer(&from, &to, schedule.clone())?; - - Self::deposit_event(Event::VestingScheduleAdded { - from, - to, - vesting_schedule: schedule, - }); - Ok(()) - } - - #[pallet::call_index(2)] - #[pallet::weight(T::WeightInfo::update_vesting_schedules(vesting_schedules.len() as u32))] - pub fn update_vesting_schedules( - origin: OriginFor, - who: ::Source, - vesting_schedules: Vec>, - ) -> DispatchResult { - ensure_root(origin)?; - - let account = T::Lookup::lookup(who)?; - Self::do_update_vesting_schedules(&account, vesting_schedules)?; - - Self::deposit_event(Event::VestingSchedulesUpdated { who: account }); - Ok(()) - } - - #[pallet::call_index(3)] - #[pallet::weight(T::WeightInfo::claim(::MaxVestingSchedules::get() / 2))] - pub fn claim_for(origin: OriginFor, dest: ::Source) -> DispatchResult { - let _ = ensure_signed(origin)?; - let who = T::Lookup::lookup(dest)?; - let locked_amount = Self::do_claim(&who); - - Self::deposit_event(Event::Claimed { - who, - amount: locked_amount, - }); - Ok(()) - } - } -} - -impl Pallet { - fn do_claim(who: &T::AccountId) -> BalanceOf { - let locked = Self::locked_balance(who); - if locked.is_zero() { - // cleanup the storage and unlock the fund - >::remove(who); - T::Currency::remove_lock(VESTING_LOCK_ID, who); - } else { - T::Currency::set_lock(VESTING_LOCK_ID, who, locked, WithdrawReasons::all()); - } - locked - } - - /// Returns locked balance based on current block number. - fn locked_balance(who: &T::AccountId) -> BalanceOf { - let now = T::BlockNumberProvider::current_block_number(); - >::mutate_exists(who, |maybe_schedules| { - let total = if let Some(schedules) = maybe_schedules.as_mut() { - let mut total: BalanceOf = Zero::zero(); - schedules.retain(|s| { - let amount = s.locked_amount(now); - total = total.saturating_add(amount); - !amount.is_zero() - }); - total - } else { - Zero::zero() - }; - if total.is_zero() { - *maybe_schedules = None; - } - total - }) - } - - fn do_vested_transfer(from: &T::AccountId, to: &T::AccountId, schedule: VestingScheduleOf) -> DispatchResult { - let schedule_amount = ensure_valid_vesting_schedule::(&schedule)?; - - let total_amount = Self::locked_balance(to) - .checked_add(&schedule_amount) - .ok_or(ArithmeticError::Overflow)?; - - T::Currency::transfer(from, to, schedule_amount, ExistenceRequirement::AllowDeath)?; - T::Currency::set_lock(VESTING_LOCK_ID, to, total_amount, WithdrawReasons::all()); - >::try_append(to, schedule).map_err(|_| Error::::MaxVestingSchedulesExceeded)?; - Ok(()) - } - - fn do_update_vesting_schedules(who: &T::AccountId, schedules: Vec>) -> DispatchResult { - let bounded_schedules: BoundedVec, T::MaxVestingSchedules> = schedules - .try_into() - .map_err(|_| Error::::MaxVestingSchedulesExceeded)?; - - // empty vesting schedules cleanup the storage and unlock the fund - if bounded_schedules.len().is_zero() { - >::remove(who); - T::Currency::remove_lock(VESTING_LOCK_ID, who); - return Ok(()); - } - - let total_amount = bounded_schedules - .iter() - .try_fold::<_, _, Result, DispatchError>>(Zero::zero(), |acc_amount, schedule| { - let amount = ensure_valid_vesting_schedule::(schedule)?; - acc_amount - .checked_add(&amount) - .ok_or_else(|| ArithmeticError::Overflow.into()) - })?; - ensure!( - T::Currency::free_balance(who) >= total_amount, - Error::::InsufficientBalanceToLock, - ); - - T::Currency::set_lock(VESTING_LOCK_ID, who, total_amount, WithdrawReasons::all()); - >::insert(who, bounded_schedules); - - Ok(()) - } -} - -/// Returns `Ok(total_total)` if valid schedule, or error. -fn ensure_valid_vesting_schedule(schedule: &VestingScheduleOf) -> Result, DispatchError> { - ensure!(!schedule.period.is_zero(), Error::::ZeroVestingPeriod); - ensure!(!schedule.period_count.is_zero(), Error::::ZeroVestingPeriodCount); - ensure!(schedule.end().is_some(), ArithmeticError::Overflow); - - let total_total = schedule.total_amount().ok_or(ArithmeticError::Overflow)?; - - ensure!(total_total >= T::MinVestedTransfer::get(), Error::::AmountLow); - - Ok(total_total) -} diff --git a/orml/vesting/src/mock.rs b/orml/vesting/src/mock.rs deleted file mode 100644 index 8bd5be12ee..0000000000 --- a/orml/vesting/src/mock.rs +++ /dev/null @@ -1,129 +0,0 @@ -//! Mocks for the vesting module. - -#![cfg(test)] - -use super::*; -use frame_support::{ - construct_runtime, derive_impl, parameter_types, - traits::{ConstU64}, -}; -use frame_system::RawOrigin; -use sp_runtime::{traits::IdentityLookup, BuildStorage}; - -use crate as vesting; - -pub type AccountId = u128; - -#[derive_impl(frame_system::config_preludes::TestDefaultConfig)] -impl frame_system::Config for Runtime { - type AccountId = AccountId; - type Lookup = IdentityLookup; - type Block = Block; - type AccountData = pallet_balances::AccountData; -} - -type Balance = u64; - -impl pallet_balances::Config for Runtime { - type Balance = Balance; - type DustRemoval = (); - type RuntimeEvent = RuntimeEvent; - type ExistentialDeposit = ConstU64<1>; - type AccountStore = frame_system::Pallet; - type MaxLocks = (); - type MaxReserves = (); - type ReserveIdentifier = [u8; 8]; - type WeightInfo = (); - type RuntimeHoldReason = RuntimeHoldReason; - type RuntimeFreezeReason = RuntimeFreezeReason; - type FreezeIdentifier = [u8; 8]; - type MaxFreezes = (); -} - -pub struct EnsureAliceOrBob; -impl EnsureOrigin for EnsureAliceOrBob { - type Success = AccountId; - - fn try_origin(o: RuntimeOrigin) -> Result { - Into::, RuntimeOrigin>>::into(o).and_then(|o| match o { - RawOrigin::Signed(ALICE) => Ok(ALICE), - RawOrigin::Signed(BOB) => Ok(BOB), - r => Err(RuntimeOrigin::from(r)), - }) - } - - #[cfg(feature = "runtime-benchmarks")] - fn try_successful_origin() -> Result { - let zero_account_id = AccountId::decode(&mut sp_runtime::traits::TrailingZeroInput::zeroes()) - .expect("infinite length input; no invalid inputs for type; qed"); - Ok(RuntimeOrigin::from(RawOrigin::Signed(zero_account_id))) - } -} - -parameter_types! { - pub static MockBlockNumberProvider: u64 = 0; -} - -impl BlockNumberProvider for MockBlockNumberProvider { - type BlockNumber = u64; - - fn current_block_number() -> BlockNumberFor { - Self::get() - } -} - -impl Config for Runtime { - type RuntimeEvent = RuntimeEvent; - type Currency = PalletBalances; - type MinVestedTransfer = ConstU64<5>; - type VestedTransferOrigin = EnsureAliceOrBob; - type WeightInfo = (); - type MaxVestingSchedules = ConstU32<2>; - type BlockNumberProvider = MockBlockNumberProvider; -} - -type Block = frame_system::mocking::MockBlock; - -construct_runtime!( - pub enum Runtime { - System: frame_system, - Vesting: vesting, - PalletBalances: pallet_balances, - } -); - -pub const ALICE: AccountId = 1; -pub const BOB: AccountId = 2; -pub const CHARLIE: AccountId = 3; - -pub const ALICE_BALANCE: u64 = 100; -pub const CHARLIE_BALANCE: u64 = 50; - -#[derive(Default)] -pub struct ExtBuilder; - -impl ExtBuilder { - pub fn build() -> sp_io::TestExternalities { - let mut t = frame_system::GenesisConfig::::default() - .build_storage() - .unwrap(); - - pallet_balances::GenesisConfig:: { - balances: vec![(ALICE, ALICE_BALANCE), (CHARLIE, CHARLIE_BALANCE)], - } - .assimilate_storage(&mut t) - .unwrap(); - - vesting::GenesisConfig:: { - vesting: vec![ - // who, start, period, period_count, per_period - (CHARLIE, 2, 3, 1, 5), - (CHARLIE, 2 + 3, 3, 3, 5), - ], - } - .assimilate_storage(&mut t) - .unwrap(); - - t.into() - } -} diff --git a/orml/vesting/src/tests.rs b/orml/vesting/src/tests.rs deleted file mode 100644 index 4d1af5fc2c..0000000000 --- a/orml/vesting/src/tests.rs +++ /dev/null @@ -1,603 +0,0 @@ -//! Unit tests for the vesting module. - -#![cfg(test)] - -use super::*; -use frame_support::error::BadOrigin; -use frame_support::{assert_noop, assert_ok}; -use mock::*; -use pallet_balances::{BalanceLock, Reasons}; -use sp_runtime::traits::Dispatchable; -use sp_runtime::TokenError; - -#[test] -fn vesting_from_chain_spec_works() { - ExtBuilder::build().execute_with(|| { - assert_ok!(PalletBalances::ensure_can_withdraw( - &CHARLIE, - 10, - WithdrawReasons::TRANSFER, - 20 - )); - assert!( - PalletBalances::ensure_can_withdraw(&CHARLIE, 11, WithdrawReasons::TRANSFER, 19) - .is_err() - ); - - assert_eq!( - Vesting::vesting_schedules(CHARLIE), - vec![ - VestingSchedule { - start: 2u64, - period: 3u64, - period_count: 1u32, - per_period: 5u64, - }, - VestingSchedule { - start: 2u64 + 3u64, - period: 3u64, - period_count: 3u32, - per_period: 5u64, - } - ] - ); - - MockBlockNumberProvider::set(13); - - assert_ok!(Vesting::claim(RuntimeOrigin::signed(CHARLIE))); - - assert_ok!(PalletBalances::ensure_can_withdraw( - &CHARLIE, - 25, - WithdrawReasons::TRANSFER, - 5 - )); - assert!( - PalletBalances::ensure_can_withdraw(&CHARLIE, 26, WithdrawReasons::TRANSFER, 4) - .is_err() - ); - - MockBlockNumberProvider::set(14); - - assert_ok!(Vesting::claim(RuntimeOrigin::signed(CHARLIE))); - - assert_ok!(PalletBalances::ensure_can_withdraw( - &CHARLIE, - 30, - WithdrawReasons::TRANSFER, - 0 - )); - }); -} - -#[test] -fn vested_transfer_works() { - ExtBuilder::build().execute_with(|| { - System::set_block_number(1); - - let schedule = VestingSchedule { - start: 0u64, - period: 10u64, - period_count: 1u32, - per_period: 100u64, - }; - assert_ok!(Vesting::vested_transfer( - RuntimeOrigin::signed(ALICE), - BOB, - schedule.clone() - )); - assert_eq!(Vesting::vesting_schedules(BOB), vec![schedule.clone()]); - System::assert_last_event(RuntimeEvent::Vesting(crate::Event::VestingScheduleAdded { - from: ALICE, - to: BOB, - vesting_schedule: schedule, - })); - }); -} - -#[test] -fn self_vesting() { - ExtBuilder::build().execute_with(|| { - System::set_block_number(1); - - let schedule = VestingSchedule { - start: 0u64, - period: 10u64, - period_count: 1u32, - per_period: ALICE_BALANCE, - }; - - let bad_schedule = VestingSchedule { - start: 0u64, - period: 10u64, - period_count: 1u32, - per_period: 10 * ALICE_BALANCE, - }; - - assert_noop!( - Vesting::vested_transfer(RuntimeOrigin::signed(ALICE), ALICE, bad_schedule), - crate::Error::::InsufficientBalanceToLock - ); - - assert_ok!(Vesting::vested_transfer( - RuntimeOrigin::signed(ALICE), - ALICE, - schedule.clone() - )); - - assert_eq!(Vesting::vesting_schedules(ALICE), vec![schedule.clone()]); - System::assert_last_event(RuntimeEvent::Vesting(crate::Event::VestingScheduleAdded { - from: ALICE, - to: ALICE, - vesting_schedule: schedule, - })); - }); -} - -#[test] -fn add_new_vesting_schedule_merges_with_current_locked_balance_and_until() { - ExtBuilder::build().execute_with(|| { - let schedule = VestingSchedule { - start: 0u64, - period: 10u64, - period_count: 2u32, - per_period: 10u64, - }; - assert_ok!(Vesting::vested_transfer( - RuntimeOrigin::signed(ALICE), - BOB, - schedule - )); - - MockBlockNumberProvider::set(12); - - let another_schedule = VestingSchedule { - start: 10u64, - period: 13u64, - period_count: 1u32, - per_period: 7u64, - }; - assert_ok!(Vesting::vested_transfer( - RuntimeOrigin::signed(ALICE), - BOB, - another_schedule - )); - - assert_eq!( - PalletBalances::locks(BOB).first(), - Some(&BalanceLock { - id: VESTING_LOCK_ID, - amount: 17u64, - reasons: Reasons::All, - }) - ); - }); -} - -#[test] -fn cannot_use_fund_if_not_claimed() { - ExtBuilder::build().execute_with(|| { - let schedule = VestingSchedule { - start: 10u64, - period: 10u64, - period_count: 1u32, - per_period: 50u64, - }; - assert_ok!(Vesting::vested_transfer( - RuntimeOrigin::signed(ALICE), - BOB, - schedule - )); - assert!( - PalletBalances::ensure_can_withdraw(&BOB, 1, WithdrawReasons::TRANSFER, 49).is_err() - ); - }); -} - -#[test] -fn vested_transfer_fails_if_zero_period_or_count() { - ExtBuilder::build().execute_with(|| { - let schedule = VestingSchedule { - start: 1u64, - period: 0u64, - period_count: 1u32, - per_period: 100u64, - }; - assert_noop!( - Vesting::vested_transfer(RuntimeOrigin::signed(ALICE), BOB, schedule), - Error::::ZeroVestingPeriod - ); - - let schedule = VestingSchedule { - start: 1u64, - period: 1u64, - period_count: 0u32, - per_period: 100u64, - }; - assert_noop!( - Vesting::vested_transfer(RuntimeOrigin::signed(ALICE), BOB, schedule), - Error::::ZeroVestingPeriodCount - ); - }); -} - -#[test] -fn vested_transfer_fails_if_transfer_err() { - ExtBuilder::build().execute_with(|| { - let schedule = VestingSchedule { - start: 1u64, - period: 1u64, - period_count: 1u32, - per_period: 100u64, - }; - assert_noop!( - Vesting::vested_transfer(RuntimeOrigin::signed(BOB), ALICE, schedule), - TokenError::FundsUnavailable, - ); - }); -} - -#[test] -fn vested_transfer_fails_if_overflow() { - ExtBuilder::build().execute_with(|| { - let schedule = VestingSchedule { - start: 1u64, - period: 1u64, - period_count: 2u32, - per_period: u64::MAX, - }; - assert_noop!( - Vesting::vested_transfer(RuntimeOrigin::signed(ALICE), BOB, schedule), - ArithmeticError::Overflow, - ); - - let another_schedule = VestingSchedule { - start: u64::MAX, - period: 1u64, - period_count: 2u32, - per_period: 1u64, - }; - assert_noop!( - Vesting::vested_transfer(RuntimeOrigin::signed(ALICE), BOB, another_schedule), - ArithmeticError::Overflow, - ); - }); -} - -#[test] -fn vested_transfer_fails_if_bad_origin() { - ExtBuilder::build().execute_with(|| { - let schedule = VestingSchedule { - start: 0u64, - period: 10u64, - period_count: 1u32, - per_period: 100u64, - }; - assert_noop!( - Vesting::vested_transfer(RuntimeOrigin::signed(CHARLIE), BOB, schedule), - BadOrigin - ); - }); -} - -#[test] -fn claim_works() { - ExtBuilder::build().execute_with(|| { - let schedule = VestingSchedule { - start: 0u64, - period: 10u64, - period_count: 2u32, - per_period: 10u64, - }; - assert_ok!(Vesting::vested_transfer( - RuntimeOrigin::signed(ALICE), - BOB, - schedule - )); - - MockBlockNumberProvider::set(11); - // remain locked if not claimed - assert!( - PalletBalances::transfer(&BOB, &ALICE, 10, ExistenceRequirement::AllowDeath).is_err() - ); - // unlocked after claiming - assert_ok!(Vesting::claim(RuntimeOrigin::signed(BOB))); - assert!(VestingSchedules::::contains_key(BOB)); - assert_ok!(PalletBalances::transfer( - &BOB, - &ALICE, - 10, - ExistenceRequirement::AllowDeath - )); - // more are still locked - assert!( - PalletBalances::transfer(&BOB, &ALICE, 1, ExistenceRequirement::AllowDeath).is_err() - ); - - MockBlockNumberProvider::set(21); - // claim more - assert_ok!(Vesting::claim(RuntimeOrigin::signed(BOB))); - assert!(!VestingSchedules::::contains_key(BOB)); - assert_ok!(PalletBalances::transfer( - &BOB, - &ALICE, - 10, - ExistenceRequirement::AllowDeath - )); - // all used up - assert_eq!(PalletBalances::free_balance(BOB), 0); - - // no locks anymore - assert_eq!(PalletBalances::locks(BOB), vec![]); - }); -} - -#[test] -fn claim_for_works() { - ExtBuilder::build().execute_with(|| { - let schedule = VestingSchedule { - start: 0u64, - period: 10u64, - period_count: 2u32, - per_period: 10u64, - }; - assert_ok!(Vesting::vested_transfer( - RuntimeOrigin::signed(ALICE), - BOB, - schedule - )); - - assert_ok!(Vesting::claim_for(RuntimeOrigin::signed(ALICE), BOB)); - - assert_eq!( - PalletBalances::locks(BOB).first(), - Some(&BalanceLock { - id: VESTING_LOCK_ID, - amount: 20u64, - reasons: Reasons::All, - }) - ); - assert!(VestingSchedules::::contains_key(BOB)); - - MockBlockNumberProvider::set(21); - - assert_ok!(Vesting::claim_for(RuntimeOrigin::signed(ALICE), BOB)); - - // no locks anymore - assert_eq!(PalletBalances::locks(BOB), vec![]); - assert!(!VestingSchedules::::contains_key(BOB)); - }); -} - -#[test] -fn update_vesting_schedules_works() { - ExtBuilder::build().execute_with(|| { - let schedule = VestingSchedule { - start: 0u64, - period: 10u64, - period_count: 2u32, - per_period: 10u64, - }; - assert_ok!(Vesting::vested_transfer( - RuntimeOrigin::signed(ALICE), - BOB, - schedule - )); - - let updated_schedule = VestingSchedule { - start: 0u64, - period: 20u64, - period_count: 2u32, - per_period: 10u64, - }; - assert_ok!(Vesting::update_vesting_schedules( - RuntimeOrigin::root(), - BOB, - vec![updated_schedule] - )); - - MockBlockNumberProvider::set(11); - assert_ok!(Vesting::claim(RuntimeOrigin::signed(BOB))); - assert!( - PalletBalances::transfer(&BOB, &ALICE, 1, ExistenceRequirement::AllowDeath).is_err() - ); - - MockBlockNumberProvider::set(21); - assert_ok!(Vesting::claim(RuntimeOrigin::signed(BOB))); - assert_ok!(PalletBalances::transfer( - &BOB, - &ALICE, - 10, - ExistenceRequirement::AllowDeath - )); - - // empty vesting schedules cleanup the storage and unlock the fund - assert!(VestingSchedules::::contains_key(BOB)); - assert_eq!( - PalletBalances::locks(BOB).first(), - Some(&BalanceLock { - id: VESTING_LOCK_ID, - amount: 10u64, - reasons: Reasons::All, - }) - ); - assert_ok!(Vesting::update_vesting_schedules( - RuntimeOrigin::root(), - BOB, - vec![] - )); - assert!(!VestingSchedules::::contains_key(BOB)); - assert_eq!(PalletBalances::locks(BOB), vec![]); - }); -} - -#[test] -fn update_vesting_schedules_fails_if_unexpected_existing_locks() { - ExtBuilder::build().execute_with(|| { - assert_ok!(PalletBalances::transfer( - &ALICE, - &BOB, - 1, - ExistenceRequirement::AllowDeath - )); - PalletBalances::set_lock(*b"prelocks", &BOB, 0u64, WithdrawReasons::all()); - }); -} - -#[test] -fn vested_transfer_check_for_min() { - ExtBuilder::build().execute_with(|| { - let schedule = VestingSchedule { - start: 1u64, - period: 1u64, - period_count: 1u32, - per_period: 3u64, - }; - assert_noop!( - Vesting::vested_transfer(RuntimeOrigin::signed(BOB), ALICE, schedule), - Error::::AmountLow - ); - }); -} - -#[test] -fn multiple_vesting_schedule_claim_works() { - ExtBuilder::build().execute_with(|| { - let schedule = VestingSchedule { - start: 0u64, - period: 10u64, - period_count: 2u32, - per_period: 10u64, - }; - assert_ok!(Vesting::vested_transfer( - RuntimeOrigin::signed(ALICE), - BOB, - schedule.clone() - )); - - let schedule2 = VestingSchedule { - start: 0u64, - period: 10u64, - period_count: 3u32, - per_period: 10u64, - }; - assert_ok!(Vesting::vested_transfer( - RuntimeOrigin::signed(ALICE), - BOB, - schedule2.clone() - )); - - assert_eq!( - Vesting::vesting_schedules(BOB), - vec![schedule, schedule2.clone()] - ); - - MockBlockNumberProvider::set(21); - - assert_ok!(Vesting::claim(RuntimeOrigin::signed(BOB))); - - assert_eq!(Vesting::vesting_schedules(BOB), vec![schedule2]); - - MockBlockNumberProvider::set(31); - - assert_ok!(Vesting::claim(RuntimeOrigin::signed(BOB))); - - assert!(!VestingSchedules::::contains_key(BOB)); - - assert_eq!(PalletBalances::locks(BOB), vec![]); - }); -} - -#[test] -fn exceeding_maximum_schedules_should_fail() { - ExtBuilder::build().execute_with(|| { - let schedule = VestingSchedule { - start: 0u64, - period: 10u64, - period_count: 2u32, - per_period: 10u64, - }; - assert_ok!(Vesting::vested_transfer( - RuntimeOrigin::signed(ALICE), - BOB, - schedule.clone() - )); - assert_ok!(Vesting::vested_transfer( - RuntimeOrigin::signed(ALICE), - BOB, - schedule.clone() - )); - - let create = RuntimeCall::Vesting(crate::Call::::vested_transfer { - dest: BOB, - schedule: schedule.clone(), - }); - assert_noop!( - create.dispatch(RuntimeOrigin::signed(ALICE)), - Error::::MaxVestingSchedulesExceeded - ); - - let schedules = vec![schedule.clone(), schedule.clone(), schedule]; - - assert_noop!( - Vesting::update_vesting_schedules(RuntimeOrigin::root(), BOB, schedules), - Error::::MaxVestingSchedulesExceeded - ); - }); -} - -#[test] -fn cliff_vesting_works() { - const VESTING_AMOUNT: u64 = 12; - const VESTING_PERIOD: u64 = 20; - - ExtBuilder::build().execute_with(|| { - let cliff_schedule = VestingSchedule { - start: VESTING_PERIOD - 1, - period: 1, - period_count: 1, - per_period: VESTING_AMOUNT, - }; - - let balance_lock = BalanceLock { - id: VESTING_LOCK_ID, - amount: VESTING_AMOUNT, - reasons: Reasons::All, - }; - - assert_eq!(PalletBalances::free_balance(BOB), 0); - assert_ok!(Vesting::vested_transfer( - RuntimeOrigin::signed(ALICE), - BOB, - cliff_schedule - )); - assert_eq!(PalletBalances::free_balance(BOB), VESTING_AMOUNT); - assert_eq!(PalletBalances::locks(BOB), vec![balance_lock.clone()]); - - for i in 1..VESTING_PERIOD { - MockBlockNumberProvider::set(i); - assert_ok!(Vesting::claim(RuntimeOrigin::signed(BOB))); - assert_eq!(PalletBalances::free_balance(BOB), VESTING_AMOUNT); - assert_eq!(PalletBalances::locks(BOB), vec![balance_lock.clone()]); - assert_noop!( - PalletBalances::transfer( - &BOB, - &CHARLIE, - VESTING_AMOUNT, - ExistenceRequirement::AllowDeath - ), - TokenError::Frozen, - ); - } - - MockBlockNumberProvider::set(VESTING_PERIOD); - assert_ok!(Vesting::claim(RuntimeOrigin::signed(BOB))); - assert!(PalletBalances::locks(BOB).is_empty()); - assert_ok!(PalletBalances::transfer( - &BOB, - &CHARLIE, - VESTING_AMOUNT, - ExistenceRequirement::AllowDeath, - )); - }); -} diff --git a/orml/vesting/src/weights.rs b/orml/vesting/src/weights.rs deleted file mode 100644 index 543cad9f58..0000000000 --- a/orml/vesting/src/weights.rs +++ /dev/null @@ -1,58 +0,0 @@ -//! Autogenerated weights for orml_vesting -//! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-05-04, STEPS: [50, ], REPEAT: 20, LOW RANGE: [], HIGH RANGE: [] -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 128 - -// Executed Command: -// /Users/xiliangchen/projects/acala/target/release/acala -// benchmark -// --chain=dev -// --steps=50 -// --repeat=20 -// --pallet=orml_vesting -// --extrinsic=* -// --wasm-execution=compiled -// --heap-pages=4096 -// --output=./vesting/src/weights.rs -// --template -// ../templates/orml-weight-template.hbs - - -#![cfg_attr(rustfmt, rustfmt_skip)] -#![allow(unused_parens)] -#![allow(unused_imports)] -#![allow(clippy::unnecessary_cast)] - -use frame_support::{traits::Get, weights::{Weight, constants::ParityDbWeight}}; -use sp_std::marker::PhantomData; - -/// Weight functions needed for orml_vesting. -pub trait WeightInfo { - fn vested_transfer() -> Weight; - fn claim(i: u32, ) -> Weight; - fn update_vesting_schedules(i: u32, ) -> Weight; -} - -/// Default weights. -impl WeightInfo for () { - fn vested_transfer() -> Weight { - Weight::from_parts(69_000_000, 0) - .saturating_add(ParityDbWeight::get().reads(4 as u64)) - .saturating_add(ParityDbWeight::get().writes(4 as u64)) - } - fn claim(i: u32, ) -> Weight { - Weight::from_parts(31_747_000, 0) - // Standard Error: 4_000 - .saturating_add(Weight::from_parts(63_000, 0).saturating_mul(i as u64)) - .saturating_add(ParityDbWeight::get().reads(2 as u64)) - .saturating_add(ParityDbWeight::get().writes(2 as u64)) - } - fn update_vesting_schedules(i: u32, ) -> Weight { - Weight::from_parts(29_457_000, 0) - // Standard Error: 4_000 - .saturating_add(Weight::from_parts(117_000, 0).saturating_mul(i as u64)) - .saturating_add(ParityDbWeight::get().reads(2 as u64)) - .saturating_add(ParityDbWeight::get().writes(3 as u64)) - } -} diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 602a7c8df5..08025239d3 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "nightly-2024-08-01" +channel = "nightly-2024-09-26" components = ["rust-src"] targets = ["wasm32-unknown-unknown"] profile = "default" diff --git a/rustfmt.toml b/rustfmt.toml index c03016f32e..c7e69dea01 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -1,6 +1,2 @@ edition = "2021" -ignore = [ - # This is where Substrate sources with custom formatting are, don't touch them - "/orml", -] imports_granularity = "Module" diff --git a/shared/subspace-data-retrieval/Cargo.toml b/shared/subspace-data-retrieval/Cargo.toml new file mode 100644 index 0000000000..6fa44cb679 --- /dev/null +++ b/shared/subspace-data-retrieval/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "subspace-data-retrieval" +description = "Fetching data from the archived history of the Subspace Distributed Storage Network." +license = "Apache-2.0" +version = "0.1.0" +authors = ["Teor "] +edition = "2021" +include = [ + "/src", + "/Cargo.toml", + "/README.md", +] + +[dependencies] +async-lock = "3.4.0" +async-trait = "0.1.83" +futures = "0.3.30" +parity-scale-codec = { version = "3.6.12", features = ["derive"] } +subspace-archiving = { version = "0.1.0", path = "../../crates/subspace-archiving" } +subspace-core-primitives = { version = "0.1.0", path = "../../crates/subspace-core-primitives" } +subspace-erasure-coding = { version = "0.1.0", path = "../../crates/subspace-erasure-coding" } +thiserror = "1.0.64" +tokio = { version = "1.40.0", features = ["sync"] } +tracing = "0.1.40" + +[dev-dependencies] + +[features] +parallel = [ + "subspace-archiving/parallel", + "subspace-core-primitives/parallel", +] diff --git a/shared/subspace-data-retrieval/README.md b/shared/subspace-data-retrieval/README.md new file mode 100644 index 0000000000..0193d48aaa --- /dev/null +++ b/shared/subspace-data-retrieval/README.md @@ -0,0 +1,6 @@ +Fetching data from the archived history of the Subspace Distributed Storage Network. + +This crate currently fetches 3 kinds of archived data: +* pieces, which are the smallest completed data archiving unit, +* sectors, which are a collection of pieces, and +* objects, which are contained in one or more pieces or sectors. diff --git a/shared/subspace-data-retrieval/src/lib.rs b/shared/subspace-data-retrieval/src/lib.rs new file mode 100644 index 0000000000..534f2d2adf --- /dev/null +++ b/shared/subspace-data-retrieval/src/lib.rs @@ -0,0 +1,21 @@ +// Copyright (C) 2024 Subspace Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Fetching data from the archived history of the Subspace Distributed Storage Network. + +pub mod object_fetcher; +pub mod piece_fetcher; +pub mod piece_getter; +pub mod segment_fetcher; diff --git a/shared/subspace-data-retrieval/src/object_fetcher.rs b/shared/subspace-data-retrieval/src/object_fetcher.rs new file mode 100644 index 0000000000..9a1feed12a --- /dev/null +++ b/shared/subspace-data-retrieval/src/object_fetcher.rs @@ -0,0 +1,684 @@ +// Copyright (C) 2024 Subspace Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Fetching objects stored in the archived history of Subspace Network. + +use crate::piece_fetcher::download_pieces; +use crate::piece_getter::{BoxError, ObjectPieceGetter}; +use crate::segment_fetcher::{download_segment, SegmentGetterError}; +use parity_scale_codec::{Compact, CompactLen, Decode, Encode}; +use std::sync::Arc; +use subspace_archiving::archiver::{Segment, SegmentItem}; +use subspace_core_primitives::pieces::{Piece, PieceIndex, RawRecord}; +use subspace_core_primitives::segments::{RecordedHistorySegment, SegmentIndex}; +use subspace_erasure_coding::ErasureCoding; +use tracing::{debug, trace}; + +/// Object fetching errors. +#[derive(Debug, thiserror::Error)] +pub enum Error { + /// Supplied piece index is not a source piece + #[error("Piece index {piece_index} is not a source piece, offset: {piece_offset}")] + NotSourcePiece { + piece_index: PieceIndex, + piece_offset: u32, + }, + + /// Supplied piece offset is too large + #[error("Piece offset {piece_offset} is too large, must be less than {}, piece index: {piece_index}", RawRecord::SIZE)] + PieceOffsetTooLarge { + piece_index: PieceIndex, + piece_offset: u32, + }, + + /// No item in segment at offset + #[error("Offset {offset_in_segment} in segment {segment_index} is not an item, current progress: {progress}, object: {piece_index:?}, {piece_offset}")] + NoSegmentItem { + progress: usize, + offset_in_segment: usize, + segment_index: SegmentIndex, + piece_index: PieceIndex, + piece_offset: u32, + }, + + /// Unexpected item in first segment at offset + #[error("Offset {offset_in_segment} in first segment {segment_index} has unexpected item, current progress: {segment_progress}, object: {piece_index:?}, {piece_offset}, item: {segment_item:?}")] + UnexpectedFirstSegmentItem { + segment_progress: usize, + offset_in_segment: usize, + segment_index: SegmentIndex, + segment_item: Box, + piece_index: PieceIndex, + piece_offset: u32, + }, + + /// Unexpected item in continuing segment at offset + #[error("Continuing segment {segment_index} has unexpected item, collected data: {collected_data}, object: {piece_index:?}, {piece_offset}, item: {segment_item:?}")] + UnexpectedContinuingSegmentItem { + collected_data: usize, + segment_index: SegmentIndex, + segment_item: Box, + piece_index: PieceIndex, + piece_offset: u32, + }, + + /// Object not found after downloading expected number of segments + #[error("Object segment range {first_segment_index}..={last_segment_index} did not contain full object, object: {piece_index:?}, {piece_offset}")] + TooManySegments { + first_segment_index: SegmentIndex, + last_segment_index: SegmentIndex, + piece_index: PieceIndex, + piece_offset: u32, + }, + + /// Object is too large error + #[error( + "Data length {data_length} exceeds maximum object size {max_object_len} for object: {piece_index:?}, {piece_offset}" + )] + ObjectTooLarge { + data_length: usize, + max_object_len: usize, + piece_index: PieceIndex, + piece_offset: u32, + }, + + /// Length prefix is too large error + #[error( + "Length prefix length {length_prefix_len} exceeds maximum object size {max_object_len} for object: {piece_index:?}, {piece_offset}" + )] + LengthPrefixTooLarge { + length_prefix_len: usize, + max_object_len: usize, + piece_index: PieceIndex, + piece_offset: u32, + }, + + /// Object decoding error + #[error("Object data decoding error: {source:?}")] + ObjectDecoding { + #[from] + source: parity_scale_codec::Error, + }, + + /// Segment getter error + #[error("Getting segment failed: {source:?}")] + SegmentGetter { + #[from] + source: SegmentGetterError, + }, + + /// Piece getter error + #[error("Getting piece caused an error: {source:?}")] + PieceGetterError { + #[from] + source: BoxError, + }, + + /// Piece getter couldn't find the piece + #[error("Piece {piece_index:?} was not found by piece getter")] + PieceGetterNotFound { piece_index: PieceIndex }, +} + +/// Object fetcher for the Subspace DSN. +pub struct ObjectFetcher { + /// The piece getter used to fetch pieces. + piece_getter: Arc, + + /// The erasure coding configuration of those pieces. + erasure_coding: ErasureCoding, + + /// The maximum number of data bytes we'll read for a single object. + max_object_len: usize, +} + +impl ObjectFetcher { + /// Create a new object fetcher with the given configuration. + /// + /// `max_object_len` is the amount of data bytes we'll read for a single object before giving + /// up and returning an error, or `None` for no limit (`usize::MAX`). + pub fn new( + piece_getter: PG, + erasure_coding: ErasureCoding, + max_object_len: Option, + ) -> Self + where + PG: ObjectPieceGetter + Send + Sync + 'static, + { + Self { + piece_getter: Arc::new(piece_getter), + erasure_coding, + max_object_len: max_object_len.unwrap_or(usize::MAX), + } + } + + /// Assemble the object in `piece_index` at `piece_offset` by fetching necessary pieces using + /// the piece getter and putting the object's bytes together. + /// + /// The caller should check the object's hash to make sure the correct bytes are returned. + pub async fn fetch_object( + &self, + piece_index: PieceIndex, + piece_offset: u32, + ) -> Result, Error> { + // Validate parameters + if !piece_index.is_source() { + tracing::debug!( + %piece_index, + piece_offset, + "Invalid piece index for object: must be a source piece", + ); + + // Parity pieces contain effectively random data, and can't be used to fetch objects + return Err(Error::NotSourcePiece { + piece_index, + piece_offset, + }); + } + + if piece_offset >= RawRecord::SIZE as u32 { + tracing::debug!( + %piece_index, + piece_offset, + RawRecord_SIZE = RawRecord::SIZE, + "Invalid piece offset for object: must be less than the size of a raw record", + ); + + return Err(Error::PieceOffsetTooLarge { + piece_index, + piece_offset, + }); + } + + // Try fast object assembling from individual pieces + if let Some(data) = self.fetch_object_fast(piece_index, piece_offset).await? { + tracing::debug!( + %piece_index, + piece_offset, + len = %data.len(), + "Fetched object using fast object assembling", + ); + + return Ok(data); + } + + // Regular object assembling from segments + let data = self.fetch_object_regular(piece_index, piece_offset).await?; + + tracing::debug!( + %piece_index, + piece_offset, + len = %data.len(), + "Fetched object using regular object assembling", + ); + + Ok(data) + } + + /// Fast object fetching and assembling where the object doesn't cross piece (super fast) or + /// segment (just fast) boundaries, returns `Ok(None)` if fast retrieval is not guaranteed. + // TODO: return already downloaded pieces from fetch_object_fast() and pass them to fetch_object_regular() + async fn fetch_object_fast( + &self, + piece_index: PieceIndex, + piece_offset: u32, + ) -> Result>, Error> { + // If the offset is before the last 2 bytes of a segment, we might be able to do very fast + // object retrieval without assembling and processing the whole segment. + // + // The last 2 bytes might contain padding if a piece is the last piece in the segment. + let before_last_two_bytes = piece_offset as usize <= RawRecord::SIZE - 1 - 2; + let piece_position_in_segment = piece_index.position(); + let data_shards = RecordedHistorySegment::NUM_RAW_RECORDS as u32; + let last_data_piece_in_segment = piece_position_in_segment >= data_shards - 1; + + if last_data_piece_in_segment && !before_last_two_bytes { + trace!( + piece_position_in_segment, + %piece_index, + piece_offset, + "Fast object retrieval not possible: last source piece in segment, \ + and start of object length bytes is in potential segment padding", + ); + + // Fast retrieval possibility is not guaranteed + return Ok(None); + } + + // How much bytes are definitely available starting at `piece_index` and `offset` without + // crossing a segment boundary. + // + // The last 2 bytes might contain padding if a piece is the last piece in the segment. + let bytes_available_in_segment = + (data_shards - piece_position_in_segment) * RawRecord::SIZE as u32 - piece_offset - 2; + + // Data from pieces that were already read, starting with piece at index `piece_index` + let mut read_records_data = Vec::::with_capacity(RawRecord::SIZE * 2); + let mut next_source_piece_index = piece_index; + + let piece = self + .read_piece(next_source_piece_index, piece_index, piece_offset) + .await?; + next_source_piece_index = next_source_piece_index.next_source_index(); + read_records_data.extend(piece.record().to_raw_record_chunks().flatten().copied()); + + if last_data_piece_in_segment { + // The last 2 bytes might contain segment padding, so we can't use them for object length or object data. + read_records_data.truncate(RawRecord::SIZE - 2); + } + + let data_length = self.decode_data_length( + &read_records_data[piece_offset as usize..], + piece_index, + piece_offset, + )?; + + let data_length = if let Some(data_length) = data_length { + data_length + } else if !last_data_piece_in_segment { + // Need the next piece to read the length of data, but we can only use it if there was + // no segment padding + trace!( + %next_source_piece_index, + piece_position_in_segment, + bytes_available_in_segment, + %piece_index, + piece_offset, + "Part of object length bytes is in next piece, fetching", + ); + + let piece = self + .read_piece(next_source_piece_index, piece_index, piece_offset) + .await?; + next_source_piece_index = next_source_piece_index.next_source_index(); + read_records_data.extend(piece.record().to_raw_record_chunks().flatten().copied()); + + self.decode_data_length( + &read_records_data[piece_offset as usize..], + piece_index, + piece_offset, + )? + .expect("Extra RawRecord is larger than the length encoding; qed") + } else { + trace!( + piece_position_in_segment, + bytes_available_in_segment, + %piece_index, + piece_offset, + "Fast object retrieval not possible: last source piece in segment, \ + and part of object length bytes is in potential segment padding", + ); + + // Super fast read is not possible, because we removed potential segment padding, so + // the piece bytes are not guaranteed to be continuous + return Ok(None); + }; + + if data_length > bytes_available_in_segment as usize { + trace!( + data_length, + bytes_available_in_segment, + piece_position_in_segment, + %piece_index, + piece_offset, + "Fast object retrieval not possible: part of object data bytes is in \ + potential segment padding", + ); + + // Not enough data without crossing segment boundary + return Ok(None); + } + + // Discard piece data before the offset + let mut data = read_records_data[piece_offset as usize..].to_vec(); + drop(read_records_data); + + // Read more pieces until we have enough data + if data_length as usize > data.len() { + let remaining_piece_count = + (data_length as usize - data.len()).div_ceil(RawRecord::SIZE); + let remaining_piece_indexes = (next_source_piece_index..) + .filter(|i| i.is_source()) + .take(remaining_piece_count) + .collect::>(); + self.read_pieces(&remaining_piece_indexes) + .await? + .into_iter() + .for_each(|piece| { + data.extend(piece.record().to_raw_record_chunks().flatten().copied()) + }); + } + + // Decode the data, and return it if it's valid + let data = Vec::::decode(&mut data.as_slice())?; + + Ok(Some(data)) + } + + /// Fetch and assemble an object that can cross segment boundaries, which requires assembling + /// and iterating over full segments. + async fn fetch_object_regular( + &self, + piece_index: PieceIndex, + piece_offset: u32, + ) -> Result, Error> { + let mut segment_index = piece_index.segment_index(); + let piece_position_in_segment = piece_index.position(); + // Used to access the data after it is converted to raw bytes + let offset_in_segment = + piece_position_in_segment as usize * RawRecord::SIZE + piece_offset as usize; + + tracing::trace!( + %segment_index, + offset_in_segment, + piece_position_in_segment, + %piece_index, + piece_offset, + "Fetching object from segment(s)", + ); + + let mut data = { + let Segment::V0 { items } = self.read_segment(segment_index).await?; + // Go through the segment until we reach the offset. + // Unconditional progress is enum variant + compact encoding of number of elements + let mut progress = 1 + Compact::compact_len(&(items.len() as u64)); + let segment_item = items + .into_iter() + .find(|item| { + // Add number of bytes in encoded version of segment item + progress += item.encoded_size(); + + // Our data is within another segment item, which will have wrapping data + // structure, hence strictly `>` here + progress > offset_in_segment + }) + .ok_or_else(|| { + debug!( + progress, + offset_in_segment, + ?segment_index, + %piece_index, + piece_offset, + "Failed to find item at offset in segment" + ); + + Error::NoSegmentItem { + progress, + offset_in_segment, + segment_index, + piece_index, + piece_offset, + } + })?; + + tracing::trace!( + progress, + %segment_index, + offset_in_segment, + piece_position_in_segment, + %piece_index, + piece_offset, + segment_item = format!("{segment_item:?}").chars().take(50).collect::(), + "Found item at offset in first segment", + ); + + // Look at the item after the offset, collecting block bytes + match segment_item { + SegmentItem::Block { bytes, .. } + | SegmentItem::BlockStart { bytes, .. } + | SegmentItem::BlockContinuation { bytes, .. } => { + // Rewind back progress to the beginning of this item + progress -= bytes.len(); + // Get a chunk of the bytes starting at the offset in this item + Vec::from(&bytes[offset_in_segment - progress..]) + } + segment_item @ SegmentItem::Padding + | segment_item @ SegmentItem::ParentSegmentHeader(_) => { + // TODO: create a Display impl for SegmentItem that is shorter than the entire + // data contained in it + debug!( + segment_progress = progress, + offset_in_segment, + %segment_index, + %piece_index, + piece_offset, + segment_item = format!("{segment_item:?}").chars().take(50).collect::(), + "Unexpected segment item in first segment", + ); + + return Err(Error::UnexpectedFirstSegmentItem { + segment_progress: progress, + offset_in_segment, + segment_index, + piece_index, + piece_offset, + segment_item: Box::new(segment_item), + }); + } + } + }; + + tracing::trace!( + %segment_index, + offset_in_segment, + piece_position_in_segment, + %piece_index, + piece_offset, + data_len = data.len(), + "Got data at offset in first segment", + ); + + // Return an error if the length is unreasonably large, before we get the next segment + if let Some(data_length) = + self.decode_data_length(data.as_slice(), piece_index, piece_offset)? + { + // If we have the whole object, decode and return it. + // TODO: use tokio Bytes type to re-use the same allocation by stripping the length at the start + if data.len() >= data_length { + return Ok(Vec::::decode(&mut data.as_slice())?); + } + } + + // We need to read extra segments to get the object length, or the full object. + // We don't attempt to calculate the number of segments needed, because it involves + // headers and optional padding. + loop { + segment_index += SegmentIndex::ONE; + let Segment::V0 { items } = self.read_segment(segment_index).await?; + for segment_item in items { + match segment_item { + SegmentItem::BlockContinuation { bytes, .. } => { + data.extend_from_slice(&bytes); + + if let Some(data_length) = + self.decode_data_length(data.as_slice(), piece_index, piece_offset)? + { + if data.len() >= data_length { + return Ok(Vec::::decode(&mut data.as_slice())?); + } + } + } + + // Padding at the end of segments can be skipped, it's not part of the object data + SegmentItem::Padding => {} + + // We should not see these items while collecting data for a single object + SegmentItem::Block { .. } + | SegmentItem::BlockStart { .. } + | SegmentItem::ParentSegmentHeader(_) => { + debug!( + collected_data = ?data.len(), + %segment_index, + %piece_index, + piece_offset, + segment_item = format!("{segment_item:?}").chars().take(50).collect::(), + "Unexpected segment item in continuing segment", + ); + + return Err(Error::UnexpectedContinuingSegmentItem { + collected_data: data.len(), + segment_index, + piece_index, + piece_offset, + segment_item: Box::new(segment_item), + }); + } + } + } + } + } + + /// Read the whole segment by its index (just records, skipping witnesses). + async fn read_segment(&self, segment_index: SegmentIndex) -> Result { + Ok(download_segment( + segment_index, + &self.piece_getter, + self.erasure_coding.clone(), + ) + .await?) + } + + /// Concurrently read multiple pieces, and return them in the supplied order. + async fn read_pieces(&self, piece_indexes: &[PieceIndex]) -> Result, Error> { + download_pieces(piece_indexes, &self.piece_getter) + .await + .map_err(|source| Error::PieceGetterError { source }) + } + + /// Read and return a single piece. + /// + /// The mapping piece index and offset are only used for error reporting. + async fn read_piece( + &self, + piece_index: PieceIndex, + mapping_piece_index: PieceIndex, + mapping_piece_offset: u32, + ) -> Result { + let piece = self + .piece_getter + .get_piece(piece_index) + .await + .inspect_err(|source| { + debug!( + %piece_index, + error = ?source, + %mapping_piece_index, + mapping_piece_offset, + "Error fetching piece during object assembling" + ); + })?; + + if let Some(piece) = piece { + trace!( + %piece_index, + %mapping_piece_index, + mapping_piece_offset, + "Fetched piece during object assembling" + ); + + Ok(piece) + } else { + debug!( + %piece_index, + %mapping_piece_index, + mapping_piece_offset, + "Piece not found during object assembling" + ); + + Err(Error::PieceGetterNotFound { + piece_index: mapping_piece_index, + })? + } + } + + /// Validate and decode the encoded length of `data`, including the encoded length bytes. + /// `data` may be incomplete. + /// + /// Returns `Ok(Some(data_length_encoded_length + data_length))` if the length is valid, + /// `Ok(None)` if there aren't enough bytes to decode the length, otherwise an error. + /// + /// The mapping piece index and offset are only used for error reporting. + fn decode_data_length( + &self, + mut data: &[u8], + mapping_piece_index: PieceIndex, + mapping_piece_offset: u32, + ) -> Result, Error> { + let data_length = match Compact::::decode(&mut data) { + Ok(Compact(data_length)) => { + let data_length = data_length as usize; + if data_length > self.max_object_len { + debug!( + data_length, + max_object_len = self.max_object_len, + %mapping_piece_index, + mapping_piece_offset, + "Data length exceeds object size limit for object fetcher" + ); + + return Err(Error::ObjectTooLarge { + data_length, + max_object_len: self.max_object_len, + piece_index: mapping_piece_index, + piece_offset: mapping_piece_offset, + }); + } + + data_length + } + Err(err) => { + // Parity doesn't have an easily matched error enum, and all bit sequences are + // valid compact encodings. So we assume we don't have enough bytes to decode the + // length, unless we already have enough bytes to decode the maximum length. + if data.len() >= Compact::::compact_len(&(self.max_object_len as u64)) { + debug!( + length_prefix_len = data.len(), + max_object_len = self.max_object_len, + %mapping_piece_index, + mapping_piece_offset, + "Length prefix exceeds object size limit for object fetcher" + ); + + return Err(Error::LengthPrefixTooLarge { + length_prefix_len: data.len(), + max_object_len: self.max_object_len, + piece_index: mapping_piece_index, + piece_offset: mapping_piece_offset, + }); + } + + debug!( + ?err, + %mapping_piece_index, + mapping_piece_offset, + "Not enough bytes to decode data length for object" + ); + + return Ok(None); + } + }; + + let data_length_encoded_length = Compact::::compact_len(&(data_length as u64)); + + trace!( + data_length, + data_length_encoded_length, + %mapping_piece_index, + mapping_piece_offset, + "Decoded data length for object" + ); + + Ok(Some(data_length_encoded_length + data_length)) + } +} diff --git a/shared/subspace-data-retrieval/src/piece_fetcher.rs b/shared/subspace-data-retrieval/src/piece_fetcher.rs new file mode 100644 index 0000000000..1984af93e0 --- /dev/null +++ b/shared/subspace-data-retrieval/src/piece_fetcher.rs @@ -0,0 +1,87 @@ +// Copyright (C) 2024 Subspace Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Fetching pieces of the archived history of Subspace Network. + +use crate::object_fetcher::Error; +use crate::piece_getter::{BoxError, ObjectPieceGetter}; +use futures::stream::FuturesOrdered; +use futures::TryStreamExt; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; +use tracing::{debug, trace}; + +/// Concurrently downloads the exact pieces in `piece_indexes`, returning them in that order. +/// Each piece index must be unique. +/// +/// If any piece can't be downloaded, returns an error. +// This code was copied and modified from subspace_service::sync_from_dsn::download_and_reconstruct_blocks(): +// +pub async fn download_pieces( + piece_indexes: &[PieceIndex], + piece_getter: &PG, +) -> Result, BoxError> +where + PG: ObjectPieceGetter, +{ + debug!( + count = piece_indexes.len(), + ?piece_indexes, + "Retrieving exact pieces" + ); + + // TODO: + // - consider using a semaphore to limit the number of concurrent requests, like + // download_segment_pieces() + // - if we're close to the number of pieces in a segment, use segment downloading and piece + // reconstruction instead + // Currently most objects are limited to 4 pieces, so this isn't needed yet. + let received_pieces = piece_indexes + .iter() + .map(|piece_index| async move { + match piece_getter.get_piece(*piece_index).await { + Ok(Some(piece)) => { + trace!(?piece_index, "Piece request succeeded",); + Ok(piece) + } + Ok(None) => { + trace!(?piece_index, "Piece not found"); + Err(Error::PieceGetterNotFound { + piece_index: *piece_index, + } + .into()) + } + Err(error) => { + trace!( + %error, + ?piece_index, + "Piece request caused an error", + ); + Err(error) + } + } + }) + .collect::>(); + + // We want exact pieces, so any errors are fatal. + let received_pieces: Vec = received_pieces.try_collect().await?; + + trace!( + count = piece_indexes.len(), + ?piece_indexes, + "Successfully retrieved exact pieces" + ); + + Ok(received_pieces) +} diff --git a/shared/subspace-data-retrieval/src/piece_getter.rs b/shared/subspace-data-retrieval/src/piece_getter.rs new file mode 100644 index 0000000000..70f470de70 --- /dev/null +++ b/shared/subspace-data-retrieval/src/piece_getter.rs @@ -0,0 +1,74 @@ +// Copyright (C) 2024 Subspace Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Getting object pieces from the Subspace Distributed Storage Network, or various caches. + +use async_trait::async_trait; +use std::fmt; +use std::sync::Arc; +use subspace_archiving::archiver::NewArchivedSegment; +use subspace_core_primitives::pieces::{Piece, PieceIndex}; + +/// A type-erased error +pub type BoxError = Box; + +/// Trait representing a way to get pieces from the DSN for object reconstruction +// TODO: make ObjectPieceGetter impls retry before failing, if that is useful +#[async_trait] +pub trait ObjectPieceGetter: fmt::Debug { + /// Get piece by index. + /// + /// Returns `Ok(None)` if the piece is not found. + /// Returns `Err(_)` if trying to get the piece caused an error. + async fn get_piece(&self, piece_index: PieceIndex) -> Result, BoxError>; +} + +#[async_trait] +impl ObjectPieceGetter for Arc +where + T: ObjectPieceGetter + Send + Sync + ?Sized, +{ + async fn get_piece(&self, piece_index: PieceIndex) -> Result, BoxError> { + self.as_ref().get_piece(piece_index).await + } +} + +// Convenience methods, mainly used in testing +#[async_trait] +impl ObjectPieceGetter for NewArchivedSegment { + async fn get_piece(&self, piece_index: PieceIndex) -> Result, BoxError> { + if piece_index.segment_index() == self.segment_header.segment_index() { + return Ok(Some( + self.pieces + .pieces() + .nth(piece_index.position() as usize) + .expect("Piece position always exists in a segment; qed"), + )); + } + + Ok(None) + } +} + +#[async_trait] +impl ObjectPieceGetter for (PieceIndex, Piece) { + async fn get_piece(&self, piece_index: PieceIndex) -> Result, BoxError> { + if self.0 == piece_index { + return Ok(Some(self.1.clone())); + } + + Ok(None) + } +} diff --git a/shared/subspace-data-retrieval/src/segment_fetcher.rs b/shared/subspace-data-retrieval/src/segment_fetcher.rs new file mode 100644 index 0000000000..686f5e7290 --- /dev/null +++ b/shared/subspace-data-retrieval/src/segment_fetcher.rs @@ -0,0 +1,170 @@ +// Copyright (C) 2024 Subspace Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Fetching segments of the archived history of Subspace Network. + +use crate::piece_getter::ObjectPieceGetter; +use async_lock::Semaphore; +use futures::stream::FuturesUnordered; +use futures::StreamExt; +use subspace_archiving::archiver::Segment; +use subspace_archiving::reconstructor::{Reconstructor, ReconstructorError}; +use subspace_core_primitives::pieces::Piece; +use subspace_core_primitives::segments::{ + ArchivedHistorySegment, RecordedHistorySegment, SegmentIndex, +}; +use subspace_erasure_coding::ErasureCoding; +use tokio::task::spawn_blocking; +use tracing::{debug, trace}; + +/// Segment getter errors. +#[derive(Debug, thiserror::Error)] +pub enum SegmentGetterError { + /// Piece getter error + #[error("Failed to get enough segment pieces")] + PieceGetter { segment_index: SegmentIndex }, + + /// Segment reconstruction error + #[error("Segment reconstruction error: {source:?}")] + SegmentReconstruction { + #[from] + source: ReconstructorError, + }, + + /// Segment decoding error + #[error("Segment data decoding error: {source:?}")] + SegmentDecoding { + #[from] + source: parity_scale_codec::Error, + }, +} + +/// Concurrently downloads the pieces for `segment_index`, and reconstructs the segment. +pub async fn download_segment( + segment_index: SegmentIndex, + piece_getter: &PG, + erasure_coding: ErasureCoding, +) -> Result +where + PG: ObjectPieceGetter, +{ + let reconstructor = Reconstructor::new(erasure_coding); + + let segment_pieces = download_segment_pieces(segment_index, piece_getter).await?; + + let segment = spawn_blocking(move || reconstructor.reconstruct_segment(&segment_pieces)) + .await + .expect("Panic if blocking task panicked")?; + + Ok(segment) +} + +/// Concurrently downloads the pieces for `segment_index`. +// This code was copied and modified from subspace_service::sync_from_dsn::download_and_reconstruct_blocks(): +// +// +// TODO: pass a lower concurrency limit into this function, to avoid overwhelming residential routers or slow connections +pub async fn download_segment_pieces( + segment_index: SegmentIndex, + piece_getter: &PG, +) -> Result>, SegmentGetterError> +where + PG: ObjectPieceGetter, +{ + debug!(%segment_index, "Retrieving pieces of the segment"); + + let semaphore = &Semaphore::new(RecordedHistorySegment::NUM_RAW_RECORDS); + + let mut received_segment_pieces = segment_index + .segment_piece_indexes_source_first() + .into_iter() + .map(|piece_index| { + // Source pieces will acquire permit here right away + let maybe_permit = semaphore.try_acquire(); + + async move { + let permit = match maybe_permit { + Some(permit) => permit, + None => { + // Other pieces will acquire permit here instead + semaphore.acquire().await + } + }; + let piece = match piece_getter.get_piece(piece_index).await { + Ok(Some(piece)) => piece, + Ok(None) => { + trace!(?piece_index, "Piece not found"); + return None; + } + Err(error) => { + trace!( + %error, + ?piece_index, + "Piece request failed", + ); + return None; + } + }; + + trace!(?piece_index, "Piece request succeeded"); + + // Piece was received successfully, "remove" this slot from semaphore + permit.forget(); + Some((piece_index, piece)) + } + }) + .collect::>(); + + let mut segment_pieces = vec![None::; ArchivedHistorySegment::NUM_PIECES]; + let mut pieces_received = 0; + + while let Some(maybe_piece) = received_segment_pieces.next().await { + let Some((piece_index, piece)) = maybe_piece else { + continue; + }; + + segment_pieces + .get_mut(piece_index.position() as usize) + .expect("Piece position is by definition within segment; qed") + .replace(piece); + + pieces_received += 1; + + if pieces_received >= RecordedHistorySegment::NUM_RAW_RECORDS { + trace!(%segment_index, "Received half of the segment."); + break; + } + } + + if pieces_received < RecordedHistorySegment::NUM_RAW_RECORDS { + debug!( + %segment_index, + pieces_received, + pieces_needed = RecordedHistorySegment::NUM_RAW_RECORDS, + "Failed to get half of the pieces in the segment" + ); + + Err(SegmentGetterError::PieceGetter { segment_index }) + } else { + trace!( + %segment_index, + pieces_received, + pieces_needed = RecordedHistorySegment::NUM_RAW_RECORDS, + "Successfully retrieved enough pieces of the segment" + ); + + Ok(segment_pieces) + } +} diff --git a/shared/subspace-proof-of-space-gpu/Cargo.toml b/shared/subspace-proof-of-space-gpu/Cargo.toml index 7456c2a1cb..852ae6246d 100644 --- a/shared/subspace-proof-of-space-gpu/Cargo.toml +++ b/shared/subspace-proof-of-space-gpu/Cargo.toml @@ -26,7 +26,7 @@ subspace-farmer-components = { version = "0.1.0", path = "../../crates/subspace- subspace-proof-of-space = { version = "0.1.0", path = "../../crates/subspace-proof-of-space" } [build-dependencies] -cc = "1.1.15" +cc = "1.1.23" [features] # Only Volta+ architectures are supported (GeForce RTX 20xx consumer GPUs and newer) diff --git a/shared/subspace-proof-of-space-gpu/src/cuda.rs b/shared/subspace-proof-of-space-gpu/src/cuda.rs index b61aa4014f..43c599d9d0 100644 --- a/shared/subspace-proof-of-space-gpu/src/cuda.rs +++ b/shared/subspace-proof-of-space-gpu/src/cuda.rs @@ -8,7 +8,8 @@ mod tests; use rust_kzg_blst::types::fr::FsFr; use std::ops::DerefMut; use subspace_core_primitives::crypto::Scalar; -use subspace_core_primitives::{PosProof, PosSeed, Record}; +use subspace_core_primitives::pieces::Record; +use subspace_core_primitives::pos::{PosProof, PosSeed}; extern "C" { /// # Returns diff --git a/shared/subspace-proof-of-space-gpu/src/cuda/tests.rs b/shared/subspace-proof-of-space-gpu/src/cuda/tests.rs index e2aca30de0..1633764345 100644 --- a/shared/subspace-proof-of-space-gpu/src/cuda/tests.rs +++ b/shared/subspace-proof-of-space-gpu/src/cuda/tests.rs @@ -2,7 +2,9 @@ use crate::cuda::cuda_devices; use std::num::NonZeroUsize; use std::slice; use subspace_core_primitives::crypto::{blake3_254_hash_to_scalar, blake3_hash}; -use subspace_core_primitives::{HistorySize, PieceOffset, Record, SectorId}; +use subspace_core_primitives::pieces::{PieceOffset, Record}; +use subspace_core_primitives::sectors::SectorId; +use subspace_core_primitives::segments::HistorySize; use subspace_erasure_coding::ErasureCoding; use subspace_farmer_components::plotting::{CpuRecordsEncoder, RecordsEncoder}; use subspace_farmer_components::sector::SectorContentsMap; diff --git a/test/subspace-test-client/Cargo.toml b/test/subspace-test-client/Cargo.toml index 91ffcdd574..369422e369 100644 --- a/test/subspace-test-client/Cargo.toml +++ b/test/subspace-test-client/Cargo.toml @@ -19,19 +19,19 @@ auto-id-domain-test-runtime = { version = "0.1.0", path = "../../domains/test/ru codec = { package = "parity-scale-codec", version = "3.6.12", features = ["derive"] } domain-runtime-primitives = { version = "0.1.0", path = "../../domains/primitives/runtime" } evm-domain-test-runtime = { version = "0.1.0", path = "../../domains/test/runtime/evm" } -fp-evm = { version = "3.0.0-dev", git = "https://github.com/polkadot-evm/frontier", rev = "2e219e17a526125da003e64ef22ec037917083fa" } -futures = "0.3.29" +fp-evm = { version = "3.0.0-dev", git = "https://github.com/autonomys/frontier", rev = "f80f9e2bad338f3bf3854b256b3c4edea23e5968" } +futures = "0.3.30" schnorrkel = "0.11.4" -sc-chain-spec = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-chain-spec = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sc-consensus-subspace = { version = "0.1.0", path = "../../crates/sc-consensus-subspace" } -sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -serde_json = "1.0.124" -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +serde_json = "1.0.128" +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-consensus-subspace = { version = "0.1.0", path = "../../crates/sp-consensus-subspace" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../../crates/sp-domains" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-archiving = { path = "../../crates/subspace-archiving" } subspace-core-primitives = { path = "../../crates/subspace-core-primitives" } subspace-erasure-coding = { path = "../../crates/subspace-erasure-coding" } @@ -41,8 +41,3 @@ subspace-runtime-primitives = { path = "../../crates/subspace-runtime-primitives subspace-service = { path = "../../crates/subspace-service" } subspace-test-runtime = { version = "0.1.0", path = "../subspace-test-runtime" } zeroize = "1.8.1" - -[features] -do-not-enforce-cost-of-storage = [ - "subspace-test-runtime/do-not-enforce-cost-of-storage", -] diff --git a/test/subspace-test-client/src/chain_spec.rs b/test/subspace-test-client/src/chain_spec.rs index 3320cfe154..8694e1a984 100644 --- a/test/subspace-test-client/src/chain_spec.rs +++ b/test/subspace-test-client/src/chain_spec.rs @@ -5,10 +5,10 @@ use sp_core::{sr25519, Pair, Public}; use sp_runtime::traits::{IdentifyAccount, Verify}; use std::marker::PhantomData; use std::num::NonZeroU32; -use subspace_runtime_primitives::{AccountId, Balance, BlockNumber, Signature}; +use subspace_runtime_primitives::{AccountId, Balance, Signature}; use subspace_test_runtime::{ - AllowAuthoringBy, BalancesConfig, DomainsConfig, EnableRewardsAt, RewardsConfig, - RuntimeGenesisConfig, SubspaceConfig, SudoConfig, SystemConfig, VestingConfig, SSC, + AllowAuthoringBy, BalancesConfig, DomainsConfig, EnableRewardsAt, HistorySeedingConfig, + RewardsConfig, RuntimeGenesisConfig, SubspaceConfig, SudoConfig, SystemConfig, SSC, WASM_BINARY, }; @@ -35,7 +35,7 @@ pub fn subspace_local_testnet_config() -> Result { .with_name("Local Testnet") .with_id("local_testnet") .with_chain_type(ChainType::Local) - .with_genesis_config(patch_domain_runtime_version( + .with_genesis_config( serde_json::to_value(create_genesis_config( // Sudo account get_account_id_from_seed("Alice"), @@ -55,10 +55,9 @@ pub fn subspace_local_testnet_config() -> Result { (get_account_id_from_seed("Eve//stash"), 1_000 * SSC), (get_account_id_from_seed("Ferdie//stash"), 1_000 * SSC), ], - vec![], )?) .map_err(|error| format!("Failed to serialize genesis config: {error}"))?, - )) + ) .with_protocol_id("subspace-test") .build()) } @@ -67,8 +66,6 @@ pub fn subspace_local_testnet_config() -> Result { fn create_genesis_config( sudo_account: AccountId, balances: Vec<(AccountId, Balance)>, - // who, start, period, period_count, per_period - vesting: Vec<(AccountId, BlockNumber, BlockNumber, u32, Balance)>, ) -> Result { Ok(RuntimeGenesisConfig { system: SystemConfig::default(), @@ -89,55 +86,18 @@ fn create_genesis_config( proposer_subsidy_points: Default::default(), voter_subsidy_points: Default::default(), }, - vesting: VestingConfig { vesting }, domains: DomainsConfig { permissioned_action_allowed_by: Some(sp_domains::PermissionedActionAllowedBy::Anyone), genesis_domains: vec![ crate::evm_domain_chain_spec::get_genesis_domain(sudo_account.clone()) .expect("Must success"), - crate::auto_id_domain_chain_spec::get_genesis_domain(sudo_account) + crate::auto_id_domain_chain_spec::get_genesis_domain(sudo_account.clone()) .expect("Must success"), ], }, + history_seeding: HistorySeedingConfig { + history_seeder: Some(sudo_account), + }, runtime_configs: Default::default(), }) } - -// TODO: Workaround for https://github.com/paritytech/polkadot-sdk/issues/4001 -fn patch_domain_runtime_version(mut genesis_config: serde_json::Value) -> serde_json::Value { - let Some(genesis_domains) = genesis_config - .get_mut("domains") - .and_then(|domains| domains.get_mut("genesisDomains")) - .and_then(|genesis_domains| genesis_domains.as_array_mut()) - else { - return genesis_config; - }; - - for genesis_domain in genesis_domains { - let Some(runtime_version) = genesis_domain.get_mut("runtime_version") else { - continue; - }; - - if let Some(spec_name) = runtime_version.get_mut("specName") { - if let Some(spec_name_bytes) = spec_name - .as_str() - .map(|spec_name| spec_name.as_bytes().to_vec()) - { - *spec_name = serde_json::to_value(spec_name_bytes) - .expect("Bytes serialization doesn't fail; qed"); - } - } - - if let Some(impl_name) = runtime_version.get_mut("implName") { - if let Some(impl_name_bytes) = impl_name - .as_str() - .map(|impl_name| impl_name.as_bytes().to_vec()) - { - *impl_name = serde_json::to_value(impl_name_bytes) - .expect("Bytes serialization doesn't fail; qed"); - } - } - } - - genesis_config -} diff --git a/test/subspace-test-client/src/lib.rs b/test/subspace-test-client/src/lib.rs index 6cbd629603..916b9c8ccc 100644 --- a/test/subspace-test-client/src/lib.rs +++ b/test/subspace-test-client/src/lib.rs @@ -29,16 +29,17 @@ use sc_consensus_subspace::archiver::encode_block; use sc_consensus_subspace::notification::SubspaceNotificationStream; use sc_consensus_subspace::slot_worker::{NewSlotNotification, RewardSigningNotification}; use sp_api::ProvideRuntimeApi; -use sp_consensus_subspace::{FarmerPublicKey, FarmerSignature, SubspaceApi}; +use sp_consensus_subspace::SubspaceApi; use sp_core::{Decode, Encode}; use std::num::{NonZeroU64, NonZeroUsize}; use std::slice; use std::sync::Arc; use subspace_core_primitives::crypto::kzg::{embedded_kzg_settings, Kzg}; use subspace_core_primitives::objects::BlockObjectMapping; -use subspace_core_primitives::{ - HistorySize, PosSeed, PublicKey, Record, SegmentIndex, Solution, REWARD_SIGNING_CONTEXT, -}; +use subspace_core_primitives::pieces::Record; +use subspace_core_primitives::pos::PosSeed; +use subspace_core_primitives::segments::{HistorySize, SegmentIndex}; +use subspace_core_primitives::{PublicKey, RewardSignature, Solution, REWARD_SIGNING_CONTEXT}; use subspace_erasure_coding::ErasureCoding; use subspace_farmer_components::auditing::audit_sector_sync; use subspace_farmer_components::plotting::{ @@ -94,16 +95,12 @@ where }) = reward_signing_notification_stream.next().await { let header_hash: [u8; 32] = header_hash.into(); - let signature: subspace_core_primitives::RewardSignature = signing_pair - .sign(substrate_ctx.bytes(&header_hash)) - .to_bytes() - .into(); - signature_sender - .unbounded_send( - FarmerSignature::decode(&mut signature.encode().as_ref()) - .expect("Failed to decode schnorrkel block signature"), - ) - .unwrap(); + let signature = RewardSignature::from( + signing_pair + .sign(substrate_ctx.bytes(&header_hash)) + .to_bytes(), + ); + signature_sender.unbounded_send(signature).unwrap(); } }); } @@ -120,7 +117,7 @@ async fn start_farming( + Send + Sync + 'static, - Client::Api: SubspaceApi, + Client::Api: SubspaceApi, { let (plotting_result_sender, plotting_result_receiver) = futures::channel::oneshot::channel(); @@ -191,10 +188,7 @@ async fn start_farming( .expect("With max solution range there must be a solution; qed") .unwrap(); // Lazy conversion to a different type of public key and reward address - let solution = Solution::::decode( - &mut solution.encode().as_slice(), - ) - .unwrap(); + let solution = Solution::decode(&mut solution.encode().as_slice()).unwrap(); let _ = solution_sender.try_send(solution); } } diff --git a/test/subspace-test-primitives/Cargo.toml b/test/subspace-test-primitives/Cargo.toml index 99432e0225..9520d5beeb 100644 --- a/test/subspace-test-primitives/Cargo.toml +++ b/test/subspace-test-primitives/Cargo.toml @@ -13,11 +13,11 @@ include = [ [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } sp-domains = { version = "0.1.0", path = "../../crates/sp-domains", default-features = false } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", default-features = false, path = "../../domains/primitives/messenger" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { version = "0.1.0", default-features = false, path = "../../crates/sp-subspace-mmr" } subspace-runtime-primitives = { version = "0.1.0", path = "../../crates/subspace-runtime-primitives", default-features = false } diff --git a/test/subspace-test-runtime/Cargo.toml b/test/subspace-test-runtime/Cargo.toml index f7bf1946be..31c40e52eb 100644 --- a/test/subspace-test-runtime/Cargo.toml +++ b/test/subspace-test-runtime/Cargo.toml @@ -18,57 +18,56 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.12", default-features = false, features = ["derive"] } domain-runtime-primitives = { version = "0.1.0", default-features = false, path = "../../domains/primitives/runtime" } -frame-executive = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -orml-vesting = { version = "0.9.1", default-features = false, path = "../../orml/vesting" } -pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-executive = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-support = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +frame-system = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-balances = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-domains = { version = "0.1.0", default-features = false, path = "../../crates/pallet-domains" } +pallet-history-seeding = { version = "0.1.0", default-features = false, path = "../../crates/pallet-history-seeding" } pallet-messenger = { version = "0.1.0", path = "../../domains/pallets/messenger", default-features = false } -pallet-mmr = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-offences-subspace = { version = "0.1.0", default-features = false, path = "../../crates/pallet-offences-subspace" } +pallet-mmr = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-rewards = { version = "0.1.0", default-features = false, path = "../../crates/pallet-rewards" } pallet-runtime-configs = { version = "0.1.0", default-features = false, path = "../../crates/pallet-runtime-configs" } pallet-subspace = { version = "0.1.0", default-features = false, features = ["serde"], path = "../../crates/pallet-subspace" } pallet-subspace-mmr = { version = "0.1.0", default-features = false, path = "../../crates/pallet-subspace-mmr" } -pallet-sudo = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-sudo = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-timestamp = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-transaction-fees = { version = "0.1.0", default-features = false, path = "../../crates/pallet-transaction-fees" } -pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-transaction-payment = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } pallet-transporter = { version = "0.1.0", path = "../../domains/pallets/transporter", default-features = false } -pallet-utility = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +pallet-utility = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } scale-info = { version = "2.11.2", default-features = false, features = ["derive"] } -sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-consensus-subspace = { version = "0.1.0", default-features = false, path = "../../crates/sp-consensus-subspace" } -sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-core = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", default-features = false, path = "../../crates/sp-domains" } sp-domains-fraud-proof = { version = "0.1.0", default-features = false, path = "../../crates/sp-domains-fraud-proof" } -sp-genesis-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } +sp-genesis-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } sp-messenger = { version = "0.1.0", default-features = false, path = "../../domains/primitives/messenger" } sp-messenger-host-functions = { version = "0.1.0", default-features = false, path = "../../domains/primitives/messenger-host-functions" } -sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-mmr-primitives = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-objects = { version = "0.1.0", default-features = false, path = "../../crates/sp-objects" } -sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-offchain = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-session = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-std = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { default-features = false, path = "../../crates/sp-subspace-mmr" } -sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-transaction-pool = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-version = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } static_assertions = "1.1.0" subspace-core-primitives = { version = "0.1.0", default-features = false, path = "../../crates/subspace-core-primitives" } subspace-runtime-primitives = { version = "0.1.0", default-features = false, path = "../../crates/subspace-runtime-primitives" } subspace-test-primitives = { version = "0.1.0", default-features = false, path = "../subspace-test-primitives" } # Used for the node template's RPCs -frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-system-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +pallet-transaction-payment-rpc-runtime-api = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } [build-dependencies] -substrate-wasm-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", optional = true } +substrate-wasm-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", optional = true } [features] default = ["std"] @@ -79,12 +78,11 @@ std = [ "frame-support/std", "frame-system/std", "frame-system-rpc-runtime-api/std", - "orml-vesting/std", "pallet-balances/std", "pallet-domains/std", + "pallet-history-seeding/std", "pallet-messenger/std", "pallet-mmr/std", - "pallet-offences-subspace/std", "pallet-rewards/std", "pallet-runtime-configs/std", "pallet-subspace/std", @@ -122,4 +120,18 @@ std = [ "subspace-runtime-primitives/std", "substrate-wasm-builder", ] -do-not-enforce-cost-of-storage = [] +runtime-benchmarks = [ + "frame-support/runtime-benchmarks", + "frame-system/runtime-benchmarks", + "pallet-balances/runtime-benchmarks", + "pallet-domains/runtime-benchmarks", + "pallet-mmr/runtime-benchmarks", + "pallet-messenger/runtime-benchmarks", + "pallet-rewards/runtime-benchmarks", + "pallet-runtime-configs/runtime-benchmarks", + "pallet-subspace/runtime-benchmarks", + "pallet-timestamp/runtime-benchmarks", + "pallet-transporter/runtime-benchmarks", + "pallet-utility/runtime-benchmarks", + "sp-runtime/runtime-benchmarks", +] diff --git a/test/subspace-test-runtime/src/lib.rs b/test/subspace-test-runtime/src/lib.rs index 67899a3aef..3dfd13bd9c 100644 --- a/test/subspace-test-runtime/src/lib.rs +++ b/test/subspace-test-runtime/src/lib.rs @@ -18,15 +18,21 @@ #![feature(const_option, variant_count)] // `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. #![recursion_limit = "256"] -// Silence a rust-analyzer warning in `construct_runtime!`. This warning isn't present in rustc output. -// TODO: remove when upstream issue is fixed: -#![allow(non_camel_case_types)] +// TODO: remove when upstream issue is fixed +#![allow( + non_camel_case_types, + reason = "https://github.com/rust-lang/rust-analyzer/issues/16514" +)] + +extern crate alloc; // Make the WASM binary available. #[cfg(feature = "std")] include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); +use alloc::borrow::Cow; use codec::{Compact, CompactLen, Decode, Encode, MaxEncodedLen}; +use core::mem; use core::num::NonZeroU64; use domain_runtime_primitives::opaque::Header as DomainHeader; use domain_runtime_primitives::{ @@ -42,7 +48,6 @@ use frame_support::weights::constants::{ParityDbWeight, WEIGHT_REF_TIME_PER_SECO use frame_support::weights::{ConstantMultiplier, Weight}; use frame_support::{construct_runtime, parameter_types, PalletId}; use frame_system::limits::{BlockLength, BlockWeights}; -use frame_system::EnsureNever; use pallet_balances::NegativeImbalance; pub use pallet_rewards::RewardPoint; pub use pallet_subspace::{AllowAuthoringBy, EnableRewardsAt}; @@ -50,17 +55,13 @@ use pallet_transporter::EndpointHandler; use scale_info::TypeInfo; use sp_api::impl_runtime_apis; use sp_consensus_slots::{Slot, SlotDuration}; -use sp_consensus_subspace::{ - ChainConstants, EquivocationProof, FarmerPublicKey, PotParameters, SignedVote, SolutionRanges, - Vote, -}; -use sp_core::crypto::{ByteArray, KeyTypeId}; +use sp_consensus_subspace::{ChainConstants, PotParameters, SignedVote, SolutionRanges, Vote}; +use sp_core::crypto::KeyTypeId; use sp_core::{OpaqueMetadata, H256}; use sp_domains::bundle_producer_election::BundleProducerElectionParams; use sp_domains::{ - DomainAllowlistUpdates, DomainId, DomainInstanceData, DomainsHoldIdentifier, - ExecutionReceiptFor, MessengerHoldIdentifier, OpaqueBundle, OpaqueBundles, OperatorId, - OperatorPublicKey, StakingHoldIdentifier, DOMAIN_STORAGE_FEE_MULTIPLIER, + DomainAllowlistUpdates, DomainId, DomainInstanceData, ExecutionReceiptFor, OpaqueBundle, + OpaqueBundles, OperatorId, OperatorPublicKey, DOMAIN_STORAGE_FEE_MULTIPLIER, INITIAL_DOMAIN_TX_RANGE, }; use sp_domains_fraud_proof::fraud_proof::FraudProof; @@ -81,25 +82,23 @@ use sp_runtime::traits::{ use sp_runtime::transaction_validity::{ InvalidTransaction, TransactionSource, TransactionValidity, TransactionValidityError, }; -use sp_runtime::{ - create_runtime_str, generic, AccountId32, ApplyExtrinsicResult, ExtrinsicInclusionMode, Perbill, -}; +use sp_runtime::{generic, AccountId32, ApplyExtrinsicResult, ExtrinsicInclusionMode, Perbill}; use sp_std::collections::btree_map::BTreeMap; use sp_std::collections::btree_set::BTreeSet; -use sp_std::iter::Peekable; use sp_std::marker::PhantomData; use sp_std::prelude::*; use sp_subspace_mmr::ConsensusChainMmrLeafProof; use sp_version::RuntimeVersion; use static_assertions::const_assert; use subspace_core_primitives::objects::{BlockObject, BlockObjectMapping}; -use subspace_core_primitives::{ - HistorySize, Piece, Randomness, SegmentCommitment, SegmentHeader, SegmentIndex, SlotNumber, - SolutionRange, U256, +use subspace_core_primitives::pieces::Piece; +use subspace_core_primitives::segments::{ + HistorySize, SegmentCommitment, SegmentHeader, SegmentIndex, }; +use subspace_core_primitives::{crypto, PublicKey, Randomness, SlotNumber, SolutionRange, U256}; use subspace_runtime_primitives::{ - AccountId, Balance, BlockNumber, FindBlockRewardAddress, Hash, Moment, Nonce, Signature, - MIN_REPLICATION_FACTOR, + AccountId, Balance, BlockNumber, FindBlockRewardAddress, Hash, HoldIdentifier, Moment, Nonce, + Signature, MIN_REPLICATION_FACTOR, }; sp_runtime::impl_opaque_keys! { @@ -114,8 +113,8 @@ const MAX_PIECES_IN_SECTOR: u16 = 32; // https://substrate.dev/docs/en/knowledgebase/runtime/upgrades#runtime-versioning #[sp_version::runtime_version] pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: create_runtime_str!("subspace"), - impl_name: create_runtime_str!("subspace"), + spec_name: Cow::Borrowed("subspace"), + impl_name: Cow::Borrowed("subspace"), authoring_version: 1, // The version of the runtime specification. A full node will not attempt to use its native // runtime in substitute for the on-chain Wasm runtime unless all of `spec_name`, @@ -126,8 +125,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1, - state_version: 1, - extrinsic_state_version: 0, + system_version: 2, }; /// The smallest unit of the token is called Shannon. @@ -139,6 +137,8 @@ pub const SSC: Balance = (10 * SHANNON).pow(DECIMAL_PLACES as u32); // TODO: Many of below constants should probably be updatable but currently they are not +/// Expected block time in milliseconds. +/// /// Since Subspace is probabilistic this is the average expected block time that /// we are targeting. Blocks will be produced at a minimum duration defined /// by `SLOT_DURATION`, but some slots will not be allocated to any @@ -185,8 +185,6 @@ const_assert!(POT_ENTROPY_INJECTION_DELAY > BLOCK_AUTHORING_DELAY + 1); /// Era duration in blocks. const ERA_DURATION_IN_BLOCKS: BlockNumber = 2016; -const EQUIVOCATION_REPORT_LONGEVITY: BlockNumber = 256; - /// Any solution range is valid in the test environment. const INITIAL_SOLUTION_RANGE: SolutionRange = SolutionRange::MAX; @@ -292,6 +290,10 @@ parameter_types! { pub TransactionWeightFee: Balance = 100_000 * SHANNON; } +impl pallet_history_seeding::Config for Runtime { + type WeightInfo = pallet_history_seeding::weights::SubstrateWeight; +} + impl pallet_subspace::Config for Runtime { type RuntimeEvent = RuntimeEvent; type BlockAuthoringDelay = BlockAuthoringDelay; @@ -310,12 +312,6 @@ impl pallet_subspace::Config for Runtime { type ShouldAdjustSolutionRange = ShouldAdjustSolutionRange; type EraChangeTrigger = pallet_subspace::NormalEraChange; type BlockSlotCount = BlockSlotCount; - - type HandleEquivocation = pallet_subspace::equivocation::EquivocationHandler< - OffencesSubspace, - ConstU64<{ EQUIVOCATION_REPORT_LONGEVITY as u64 }>, - >; - type WeightInfo = (); } @@ -330,38 +326,30 @@ impl pallet_timestamp::Config for Runtime { #[derive( PartialEq, Eq, Clone, Encode, Decode, TypeInfo, MaxEncodedLen, Ord, PartialOrd, Copy, Debug, )] -pub enum HoldIdentifier { - Domains(DomainsHoldIdentifier), - Messenger(MessengerHoldIdentifier), -} +pub struct HoldIdentifierWrapper(HoldIdentifier); -impl pallet_domains::HoldIdentifier for HoldIdentifier { - fn staking_staked(operator_id: OperatorId) -> Self { - Self::Domains(DomainsHoldIdentifier::Staking( - StakingHoldIdentifier::Staked(operator_id), - )) +impl pallet_domains::HoldIdentifier for HoldIdentifierWrapper { + fn staking_staked() -> Self { + Self(HoldIdentifier::DomainStaking) } - fn domain_instantiation_id(domain_id: DomainId) -> Self { - Self::Domains(DomainsHoldIdentifier::DomainInstantiation(domain_id)) + fn domain_instantiation_id() -> Self { + Self(HoldIdentifier::DomainInstantiation) } - fn storage_fund_withdrawal(operator_id: OperatorId) -> Self { - Self::Domains(DomainsHoldIdentifier::StorageFund(operator_id)) + fn storage_fund_withdrawal() -> Self { + Self(HoldIdentifier::DomainStorageFund) } } -impl pallet_messenger::HoldIdentifier for HoldIdentifier { - fn messenger_channel(dst_chain_id: ChainId, channel_id: ChannelId) -> Self { - Self::Messenger(MessengerHoldIdentifier::Channel((dst_chain_id, channel_id))) +impl pallet_messenger::HoldIdentifier for HoldIdentifierWrapper { + fn messenger_channel() -> Self { + Self(HoldIdentifier::MessengerChannel) } } -impl VariantCount for HoldIdentifier { - // TODO: HACK this is not the actual variant count but it is required see - // https://github.com/autonomys/subspace/issues/2674 for more details. It - // will be resolved as https://github.com/paritytech/polkadot-sdk/issues/4033. - const VARIANT_COUNT: u32 = 10; +impl VariantCount for HoldIdentifierWrapper { + const VARIANT_COUNT: u32 = mem::variant_count::() as u32; } impl pallet_balances::Config for Runtime { @@ -380,7 +368,7 @@ impl pallet_balances::Config for Runtime { type WeightInfo = pallet_balances::weights::SubstrateWeight; type FreezeIdentifier = (); type MaxFreezes = (); - type RuntimeHoldReason = HoldIdentifier; + type RuntimeHoldReason = HoldIdentifierWrapper; } pub struct CreditSupply; @@ -422,7 +410,7 @@ impl pallet_transaction_fees::Config for Runtime { type Currency = Balances; type FindBlockRewardAddress = Subspace; type DynamicCostOfStorage = ConstBool; - type WeightInfo = (); + type WeightInfo = pallet_transaction_fees::weights::SubstrateWeight; } pub struct TransactionByteFee; @@ -463,12 +451,8 @@ impl pallet_transaction_payment::OnChargeTransaction for OnChargeTransa WithdrawReasons::TRANSACTION_PAYMENT | WithdrawReasons::TIP }; - let withdraw_result = >::withdraw( - who, - fee, - withdraw_reason, - ExistenceRequirement::KeepAlive, - ); + let withdraw_result = + Balances::withdraw(who, fee, withdraw_reason, ExistenceRequirement::KeepAlive); let imbalance = withdraw_result.map_err(|_error| InvalidTransaction::Payment)?; // Separate storage fee while we have access to the call data structure to calculate it. @@ -638,7 +622,7 @@ impl pallet_messenger::Config for Runtime { type MmrProofVerifier = MmrProofVerifier; type StorageKeys = StorageKeys; type DomainOwner = Domains; - type HoldIdentifier = HoldIdentifier; + type HoldIdentifier = HoldIdentifierWrapper; type ChannelReserveFee = ChannelReserveFee; type ChannelInitReservePortion = ChannelInitReservePortion; type DomainRegistration = DomainRegistration; @@ -667,11 +651,6 @@ impl pallet_transporter::Config for Runtime { type WeightInfo = pallet_transporter::weights::SubstrateWeight; } -impl pallet_offences_subspace::Config for Runtime { - type RuntimeEvent = RuntimeEvent; - type OnOffenceHandler = Subspace; -} - parameter_types! { pub const MaximumReceiptDrift: BlockNumber = 2; pub const InitialDomainTxRange: u64 = INITIAL_DOMAIN_TX_RANGE; @@ -695,6 +674,7 @@ parameter_types! { pub const MaxInitialDomainAccounts: u32 = 20; pub const MinInitialDomainAccountBalance: Balance = SSC; pub const BundleLongevity: u32 = 5; + pub const WithdrawalLimit: u32 = 32; } // `BlockSlotCount` must at least keep the slot for the current and the parent block, it also need to @@ -751,7 +731,7 @@ impl pallet_domains::Config for Runtime { type ConfirmationDepthK = ConfirmationDepthK; type DomainRuntimeUpgradeDelay = DomainRuntimeUpgradeDelay; type Currency = Balances; - type HoldIdentifier = HoldIdentifier; + type HoldIdentifier = HoldIdentifierWrapper; type WeightInfo = pallet_domains::weights::SubstrateWeight; type InitialDomainTxRange = InitialDomainTxRange; type DomainTxRangeAdjustmentInterval = DomainTxRangeAdjustmentInterval; @@ -784,6 +764,7 @@ impl pallet_domains::Config for Runtime { type MmrProofVerifier = MmrProofVerifier; type FraudProofStorageKeyProvider = StorageKeyProvider; type OnChainRewards = OnChainRewards; + type WithdrawalLimit = WithdrawalLimit; } parameter_types! { @@ -805,21 +786,6 @@ impl pallet_rewards::Config for Runtime { type OnReward = (); } -parameter_types! { - // This value doesn't matter, we don't use it (`VestedTransferOrigin = EnsureNever` below). - pub const MinVestedTransfer: Balance = 0; -} - -impl orml_vesting::Config for Runtime { - type RuntimeEvent = RuntimeEvent; - type Currency = Balances; - type MinVestedTransfer = MinVestedTransfer; - type VestedTransferOrigin = EnsureNever; - type WeightInfo = (); - type MaxVestingSchedules = ConstU32<2>; - type BlockNumberProvider = System; -} - mod mmr { use super::Runtime; pub use pallet_mmr::primitives::*; @@ -845,6 +811,8 @@ impl pallet_mmr::Config for Runtime { type OnNewRoot = SubspaceMmr; type BlockHashProvider = BlockHashProvider; type WeightInfo = (); + #[cfg(feature = "runtime-benchmarks")] + type BenchmarkHelper = (); } parameter_types! { @@ -866,7 +834,6 @@ construct_runtime!( Timestamp: pallet_timestamp = 1, Subspace: pallet_subspace = 2, - OffencesSubspace: pallet_offences_subspace = 3, Rewards: pallet_rewards = 9, Balances: pallet_balances = 4, @@ -877,8 +844,6 @@ construct_runtime!( Domains: pallet_domains = 11, RuntimeConfigs: pallet_runtime_configs = 14, - Vesting: orml_vesting = 7, - Mmr: pallet_mmr = 30, SubspaceMmr: pallet_subspace_mmr = 31, @@ -887,6 +852,8 @@ construct_runtime!( Messenger: pallet_messenger exclude_parts { Inherent } = 60, Transporter: pallet_transporter = 61, + HistorySeeding: pallet_history_seeding = 91, + // Reserve some room for other pallets as we'll remove sudo pallet eventually. Sudo: pallet_sudo = 100, } @@ -960,12 +927,11 @@ fn is_xdm_mmr_proof_valid(ext: &::Extrinsic) -> Option { } } -fn extract_utility_block_object_mapping>( +fn extract_utility_block_object_mapping( mut base_offset: u32, objects: &mut Vec, call: &pallet_utility::Call, mut recursion_depth_left: u16, - successful_calls: &mut Peekable, ) { if recursion_depth_left == 0 { return; @@ -983,13 +949,7 @@ fn extract_utility_block_object_mapping>( base_offset += Compact::compact_len(&(calls.len() as u32)) as u32; for call in calls { - extract_call_block_object_mapping( - base_offset, - objects, - call, - recursion_depth_left, - successful_calls, - ); + extract_call_block_object_mapping(base_offset, objects, call, recursion_depth_left); base_offset += call.encoded_size() as u32; } @@ -1002,7 +962,6 @@ fn extract_utility_block_object_mapping>( objects, call.as_ref(), recursion_depth_left, - successful_calls, ); } pallet_utility::Call::dispatch_as { as_origin, call } => { @@ -1013,7 +972,6 @@ fn extract_utility_block_object_mapping>( objects, call.as_ref(), recursion_depth_left, - successful_calls, ); } pallet_utility::Call::with_weight { call, .. } => { @@ -1022,7 +980,6 @@ fn extract_utility_block_object_mapping>( objects, call.as_ref(), recursion_depth_left, - successful_calls, ); } pallet_utility::Call::__Ignore(_, _) => { @@ -1031,30 +988,50 @@ fn extract_utility_block_object_mapping>( } } -fn extract_call_block_object_mapping>( +fn extract_call_block_object_mapping( mut base_offset: u32, objects: &mut Vec, call: &RuntimeCall, recursion_depth_left: u16, - successful_calls: &mut Peekable, ) { - // Add enum variant to the base offset. + // Add RuntimeCall enum variant to the base offset. base_offset += 1; - if let RuntimeCall::Utility(call) = call { - extract_utility_block_object_mapping( - base_offset, - objects, - call, - recursion_depth_left, - successful_calls, - ); + match call { + // Extract the actual object mappings. + RuntimeCall::System(frame_system::Call::remark { remark }) => { + objects.push(BlockObject { + hash: crypto::blake3_hash(remark), + // Add frame_system::Call enum variant to the base offset. + offset: base_offset + 1, + }); + } + RuntimeCall::System(frame_system::Call::remark_with_event { remark }) => { + objects.push(BlockObject { + hash: crypto::blake3_hash(remark), + // Add frame_system::Call enum variant to the base offset. + offset: base_offset + 1, + }); + } + RuntimeCall::HistorySeeding(pallet_history_seeding::Call::seed_history { remark }) => { + objects.push(BlockObject { + hash: crypto::blake3_hash(remark), + // Add pallet_history_seeding::Call enum variant to the base offset. + offset: base_offset + 1, + }); + } + + // Recursively extract object mappings for the call. + RuntimeCall::Utility(call) => { + extract_utility_block_object_mapping(base_offset, objects, call, recursion_depth_left) + } + // Other calls don't contain object mappings. + _ => {} } } -fn extract_block_object_mapping(block: Block, successful_calls: Vec) -> BlockObjectMapping { +fn extract_block_object_mapping(block: Block) -> BlockObjectMapping { let mut block_object_mapping = BlockObjectMapping::default(); - let mut successful_calls = successful_calls.into_iter().peekable(); let mut base_offset = block.header.encoded_size() + Compact::compact_len(&(block.extrinsics.len() as u32)); for extrinsic in block.extrinsics { @@ -1074,10 +1051,9 @@ fn extract_block_object_mapping(block: Block, successful_calls: Vec) -> Bl extract_call_block_object_mapping( base_extrinsic_offset as u32, - &mut block_object_mapping.objects, + block_object_mapping.objects_mut(), &extrinsic.function, MAX_OBJECT_MAPPING_RECURSION_DEPTH, - &mut successful_calls, ); base_offset += extrinsic.encoded_size(); @@ -1105,30 +1081,12 @@ fn extract_successful_bundles( .collect() } -fn extract_bundle( - extrinsic: UncheckedExtrinsic, -) -> Option< - sp_domains::OpaqueBundle, ::Hash, DomainHeader, Balance>, -> { - match extrinsic.function { - RuntimeCall::Domains(pallet_domains::Call::submit_bundle { opaque_bundle }) => { - Some(opaque_bundle) - } - _ => None, - } -} - struct RewardAddress([u8; 32]); -impl From for RewardAddress { +impl From for RewardAddress { #[inline] - fn from(farmer_public_key: FarmerPublicKey) -> Self { - Self( - farmer_public_key - .as_slice() - .try_into() - .expect("Public key is always of correct size; qed"), - ) + fn from(public_key: PublicKey) -> Self { + Self(*public_key) } } @@ -1242,17 +1200,12 @@ impl_runtime_apis! { } impl sp_objects::ObjectsApi for Runtime { - fn extract_block_object_mapping(block: Block, successful_calls: Vec) -> BlockObjectMapping { - extract_block_object_mapping(block, successful_calls) - } - - fn validated_object_call_hashes() -> Vec { - // No pallets produce objects right now - Vec::new() + fn extract_block_object_mapping(block: Block) -> BlockObjectMapping { + extract_block_object_mapping(block) } } - impl sp_consensus_subspace::SubspaceApi for Runtime { + impl sp_consensus_subspace::SubspaceApi for Runtime { fn pot_parameters() -> PotParameters { Subspace::pot_parameters() } @@ -1261,14 +1214,8 @@ impl_runtime_apis! { Subspace::solution_ranges() } - fn submit_report_equivocation_extrinsic( - equivocation_proof: EquivocationProof<::Header>, - ) -> Option<()> { - Subspace::submit_equivocation_report(equivocation_proof) - } - fn submit_vote_extrinsic( - signed_vote: SignedVote, ::Hash, FarmerPublicKey>, + signed_vote: SignedVote, ::Hash, PublicKey>, ) { let SignedVote { vote, signature } = signed_vote; let Vote::V0 { @@ -1293,12 +1240,6 @@ impl_runtime_apis! { }) } - fn is_in_block_list(farmer_public_key: &FarmerPublicKey) -> bool { - // TODO: Either check tx pool too for pending equivocations or replace equivocation - // mechanism with an alternative one, so that blocking happens faster - Subspace::is_in_block_list(farmer_public_key) - } - fn history_size() -> HistorySize { >::history_size() } @@ -1323,7 +1264,7 @@ impl_runtime_apis! { } } - fn root_plot_public_key() -> Option { + fn root_plot_public_key() -> Option { Subspace::root_plot_public_key() } @@ -1365,23 +1306,6 @@ impl_runtime_apis! { extract_successful_bundles(domain_id, extrinsics) } - fn extract_bundle( - extrinsic: ::Extrinsic - ) -> Option, ::Hash, DomainHeader, Balance>> { - extract_bundle(extrinsic) - } - - - fn extract_receipts( - domain_id: DomainId, - extrinsics: Vec<::Extrinsic>, - ) -> Vec> { - extract_successful_bundles(domain_id, extrinsics) - .into_iter() - .map(|bundle| bundle.into_receipt()) - .collect() - } - fn extrinsics_shuffling_seed() -> Randomness { Randomness::from(Domains::extrinsics_shuffling_seed().to_fixed_bytes()) } @@ -1418,10 +1342,6 @@ impl_runtime_apis! { Domains::oldest_unconfirmed_receipt_number(domain_id) } - fn domain_block_limit(domain_id: DomainId) -> Option { - Domains::domain_block_limit(domain_id) - } - fn domain_bundle_limit(domain_id: DomainId) -> Option { Domains::domain_bundle_limit(domain_id).ok().flatten() } @@ -1472,7 +1392,7 @@ impl_runtime_apis! { Domains::storage_fund_account_balance(operator_id) } - fn is_domain_runtime_updraded_since(domain_id: DomainId, at: NumberFor) -> Option { + fn is_domain_runtime_upgraded_since(domain_id: DomainId, at: NumberFor) -> Option { Domains::is_domain_runtime_upgraded_since(domain_id, at) } diff --git a/test/subspace-test-service/Cargo.toml b/test/subspace-test-service/Cargo.toml index 0207a937bc..2fffe71ca5 100644 --- a/test/subspace-test-service/Cargo.toml +++ b/test/subspace-test-service/Cargo.toml @@ -15,64 +15,58 @@ include = [ targets = ["x86_64-unknown-linux-gnu"] [dependencies] -async-trait = "0.1.81" +async-trait = "0.1.83" cross-domain-message-gossip = { version = "0.1.0", path = "../../domains/client/cross-domain-message-gossip" } codec = { package = "parity-scale-codec", version = "3.6.12", features = ["derive"] } domain-client-message-relayer = { version = "0.1.0", path = "../../domains/client/relayer" } domain-runtime-primitives = { version = "0.1.0", path = "../../domains/primitives/runtime" } -frame-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -futures = "0.3.29" -jsonrpsee = { version = "0.23.2", features = ["server"] } -pallet-transaction-payment = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -mmr-gadget = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +frame-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +futures = "0.3.30" +jsonrpsee = { version = "0.24.5", features = ["server"] } +pallet-transaction-payment = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +mmr-gadget = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } rand = "0.8.5" pallet-domains = { version = "0.1.0", path = "../../crates/pallet-domains" } parking_lot = "0.12.2" -sc-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-block-builder = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-client-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sc-domains = { version = "0.1.0", path = "../../crates/sc-domains" } -sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631", default-features = false } -sc-tracing = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-application-crypto = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sc-executor = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-network-sync = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-service = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42", default-features = false } +sc-tracing = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-transaction-pool-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sc-utils = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-api = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-blockchain = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-core = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-consensus = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-consensus-subspace = { version = "0.1.0", path = "../../crates/sp-consensus-subspace" } -sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-consensus-slots = { default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-domains = { version = "0.1.0", path = "../../crates/sp-domains" } sp-domains-fraud-proof = { version = "0.1.0", path = "../../crates/sp-domains-fraud-proof" } -sp-externalities = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-keyring = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-externalities = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-keyring = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-messenger = { version = "0.1.0", path = "../../domains/primitives/messenger" } sp-messenger-host-functions = { version = "0.1.0", path = "../../domains/primitives/messenger-host-functions" } -sp-mmr-primitives = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-mmr-primitives = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } sp-subspace-mmr = { version = "0.1.0", path = "../../crates/sp-subspace-mmr" } -sp-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } +sp-timestamp = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-inherents = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +sp-runtime = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } subspace-core-primitives = { version = "0.1.0", default-features = false, path = "../../crates/subspace-core-primitives" } subspace-runtime-primitives = { path = "../../crates/subspace-runtime-primitives" } subspace-service = { path = "../../crates/subspace-service" } subspace-test-client = { path = "../subspace-test-client" } subspace-test-primitives = { version = "0.1.0", path = "../subspace-test-primitives" } subspace-test-runtime = { version = "0.1.0", path = "../subspace-test-runtime" } -substrate-frame-rpc-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -substrate-test-client = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } -tokio = "1.39.2" +substrate-frame-rpc-system = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +substrate-test-client = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } +tokio = "1.40.0" tracing = "0.1.40" [dev-dependencies] -sp-keyring = { git = "https://github.com/subspace/polkadot-sdk", rev = "5626154d0781ac9a6ffd5a6207ed237f425ae631" } - -[features] -do-not-enforce-cost-of-storage = [ - "subspace-test-runtime/do-not-enforce-cost-of-storage", -] +sp-keyring = { git = "https://github.com/subspace/polkadot-sdk", rev = "5871818e1d736f1843eb9078f886290695165c42" } diff --git a/test/subspace-test-service/src/lib.rs b/test/subspace-test-service/src/lib.rs index ff6396a48e..2304a7d116 100644 --- a/test/subspace-test-service/src/lib.rs +++ b/test/subspace-test-service/src/lib.rs @@ -33,16 +33,15 @@ use sc_client_api::{Backend as BackendT, BlockBackend, ExecutorProvider, Finaliz use sc_consensus::block_import::{ BlockCheckParams, BlockImportParams, ForkChoiceStrategy, ImportResult, }; -use sc_consensus::{ - BasicQueue, BlockImport, SharedBlockImport, StateAction, Verifier as VerifierT, -}; +use sc_consensus::{BasicQueue, BlockImport, StateAction, Verifier as VerifierT}; use sc_domains::ExtensionsFactory as DomainsExtensionFactory; use sc_network::config::{NetworkConfiguration, TransportConfig}; use sc_network::service::traits::NetworkService; use sc_network::{multiaddr, NetworkWorker, NotificationMetrics, NotificationService}; use sc_service::config::{ - DatabaseSource, KeystoreConfig, MultiaddrWithPeerId, OffchainWorkerConfig, - RpcBatchRequestConfig, WasmExecutionMethod, WasmtimeInstantiationStrategy, + DatabaseSource, ExecutorConfiguration, KeystoreConfig, MultiaddrWithPeerId, + OffchainWorkerConfig, RpcBatchRequestConfig, RpcConfiguration, WasmExecutionMethod, + WasmtimeInstantiationStrategy, }; use sc_service::{ BasePath, BlocksPruning, Configuration, NetworkStarter, Role, SpawnTasksParams, TaskManager, @@ -51,18 +50,17 @@ use sc_transaction_pool::error::Error as PoolError; use sc_transaction_pool_api::{InPoolTransaction, TransactionPool, TransactionSource}; use sc_utils::mpsc::{tracing_unbounded, TracingUnboundedReceiver, TracingUnboundedSender}; use sp_api::{ApiExt, ProvideRuntimeApi}; -use sp_application_crypto::UncheckedFrom; use sp_blockchain::HeaderBackend; use sp_consensus::{BlockOrigin, Error as ConsensusError}; use sp_consensus_slots::Slot; use sp_consensus_subspace::digests::{ extract_pre_digest, CompatibleDigestItem, PreDigest, PreDigestPotInfo, }; -use sp_consensus_subspace::{FarmerPublicKey, PotExtension, SubspaceApi}; +use sp_consensus_subspace::{PotExtension, SubspaceApi}; use sp_core::offchain::storage::OffchainDb; use sp_core::offchain::OffchainDbExt; use sp_core::traits::{CodeExecutor, SpawnEssentialNamed}; -use sp_core::{Get, H256}; +use sp_core::H256; use sp_domains::{BundleProducerElectionApi, ChainId, DomainsApi, OpaqueBundle}; use sp_domains_fraud_proof::fraud_proof::FraudProof; use sp_domains_fraud_proof::{FraudProofExtension, FraudProofHostFunctionsImpl}; @@ -85,7 +83,8 @@ use std::marker::PhantomData; use std::pin::Pin; use std::sync::Arc; use std::time; -use subspace_core_primitives::{BlockNumber, PotOutput, Solution}; +use subspace_core_primitives::pot::PotOutput; +use subspace_core_primitives::{BlockNumber, PublicKey, Solution}; use subspace_runtime_primitives::opaque::Block; use subspace_runtime_primitives::{AccountId, Balance, Hash, Signature}; use subspace_service::transaction_pool::FullPool; @@ -160,27 +159,33 @@ pub fn node_config( state_pruning: Default::default(), blocks_pruning: BlocksPruning::KeepAll, chain_spec: Box::new(spec), - wasm_method: WasmExecutionMethod::Compiled { - instantiation_strategy: WasmtimeInstantiationStrategy::PoolingCopyOnWrite, + executor: ExecutorConfiguration { + wasm_method: WasmExecutionMethod::Compiled { + instantiation_strategy: WasmtimeInstantiationStrategy::PoolingCopyOnWrite, + }, + max_runtime_instances: 8, + default_heap_pages: None, + runtime_cache_size: 2, }, wasm_runtime_overrides: Default::default(), - rpc_addr: None, - rpc_max_request_size: 0, - rpc_max_response_size: 0, - rpc_id_provider: None, - rpc_max_subs_per_conn: 0, - rpc_port: 0, - rpc_message_buffer_capacity: 0, - rpc_batch_config: RpcBatchRequestConfig::Disabled, - rpc_max_connections: 0, - rpc_cors: None, - rpc_methods: Default::default(), - rpc_rate_limit: None, - rpc_rate_limit_whitelisted_ips: vec![], - rpc_rate_limit_trust_proxy_headers: false, + rpc: RpcConfiguration { + addr: None, + max_request_size: 0, + max_response_size: 0, + id_provider: None, + max_subs_per_conn: 0, + port: 0, + message_buffer_capacity: 0, + batch_config: RpcBatchRequestConfig::Disabled, + max_connections: 0, + cors: None, + methods: Default::default(), + rate_limit: None, + rate_limit_whitelisted_ips: vec![], + rate_limit_trust_proxy_headers: false, + }, prometheus_config: None, telemetry_endpoints: None, - default_heap_pages: None, offchain_worker: OffchainWorkerConfig { enabled: false, indexing_enabled: true, @@ -190,12 +195,9 @@ pub fn node_config( dev_key_seed: Some(key_seed), tracing_targets: None, tracing_receiver: Default::default(), - max_runtime_instances: 8, announce_block: true, data_path: base_path.path().into(), base_path, - informant_output_format: Default::default(), - runtime_cache_size: 2, } } @@ -369,7 +371,7 @@ pub struct MockConsensusNode { block_import: MockBlockImport, xdm_gossip_worker_builder: Option, /// Mock subspace solution used to mock the subspace `PreDigest` - mock_solution: Solution, + mock_solution: Solution, log_prefix: &'static str, /// Ferdie key pub key: Sr25519Keyring, @@ -408,13 +410,13 @@ impl MockConsensusNode { ); let _enter = span.enter(); - let executor = sc_service::new_wasm_executor(&config); + let executor = sc_service::new_wasm_executor(&config.executor); let (client, backend, keystore_container, mut task_manager) = sc_service::new_full_parts::(&config, None, executor.clone()) .expect("Fail to new full parts"); - let domain_executor = Arc::new(sc_service::new_wasm_executor(&config)); + let domain_executor = Arc::new(sc_service::new_wasm_executor(&config.executor)); let client = Arc::new(client); let mock_pot_verifier = Arc::new(MockPotVerfier::default()); let chain_constants = client @@ -448,10 +450,11 @@ impl MockConsensusNode { let block_import = MockBlockImport::<_, _>::new(client.clone()); - let mut net_config = - sc_network::config::FullNetworkConfiguration::<_, _, NetworkWorker<_, _>>::new( - &config.network, - ); + let mut net_config = sc_network::config::FullNetworkConfiguration::< + _, + _, + NetworkWorker<_, _>, + >::new(&config.network, None); let (xdm_gossip_notification_config, xdm_gossip_notification_service) = xdm_gossip_peers_set_config(); net_config.add_notification_protocol(xdm_gossip_notification_config); @@ -468,7 +471,7 @@ impl MockConsensusNode { &task_manager.spawn_essential_handle(), ), block_announce_validator_builder: None, - warp_sync_params: None, + warp_sync_config: None, block_relay: None, metrics: NotificationMetrics::new(None), }) @@ -480,7 +483,7 @@ impl MockConsensusNode { keystore: keystore_container.keystore(), task_manager: &mut task_manager, transaction_pool: transaction_pool.clone(), - rpc_builder: Box::new(|_, _| Ok(RpcModule::new(()))), + rpc_builder: Box::new(|_| Ok(RpcModule::new(()))), backend: backend.clone(), system_rpc_tx, config, @@ -490,10 +493,8 @@ impl MockConsensusNode { }) .expect("Should be able to spawn tasks"); - let mock_solution = Solution::genesis_solution( - FarmerPublicKey::unchecked_from(key.public().0), - key.to_account_id(), - ); + let mock_solution = + Solution::genesis_solution(PublicKey::from(key.public().0), key.to_account_id()); let mut gossip_builder = GossipWorkerBuilder::new(); @@ -883,7 +884,7 @@ impl MockConsensusNode { } fn mock_subspace_digest(&self, slot: Slot) -> Digest { - let pre_digest: PreDigest = PreDigest::V0 { + let pre_digest: PreDigest = PreDigest::V0 { slot, solution: self.mock_solution.clone(), pot_info: PreDigestPotInfo::V0 { @@ -1111,7 +1112,7 @@ where { BasicQueue::new( MockVerifier::default(), - SharedBlockImport::new(block_import), + Box::new(block_import), None, spawner, None, @@ -1194,7 +1195,7 @@ where type Error = ConsensusError; async fn import_block( - &mut self, + &self, mut block: BlockImportParams, ) -> Result { let block_number = *block.header.number(); @@ -1301,12 +1302,10 @@ where let current_block_hash = client.as_ref().info().best_hash; let current_block = client.as_ref().info().best_number.saturated_into(); let genesis_block = client.as_ref().hash(0).unwrap().unwrap(); - let period = u64::from(<::BlockHashCount as Get< - u32, - >>::get()) - .checked_next_power_of_two() - .map(|c| c / 2) - .unwrap_or(2); + let period = u64::from(<::BlockHashCount>::get()) + .checked_next_power_of_two() + .map(|c| c / 2) + .unwrap_or(2); let extra: SignedExtra = ( frame_system::CheckNonZeroSender::::new(), frame_system::CheckSpecVersion::::new(),